LIDS全称为Linux Intrusion Detection System,是一种基于Linux内核补丁模式的检测系统,它也是一种基于主机的检测系统。它集成在Linux内核中,来进一步增强Linux内核的安全性,为Linux内核提供实现一种安全模式、参考模式和强制存取控制模式。
虽然,网络防火墙可以阻止大部份的网络,但这种穿透了防火墙,系统上的重要数据就会有彻底控制的危险。所以,在Linux系统上布置LIDS是颇有必要的。它可以保证Linux系统上的重要目录及文件不被复制、删除,重要的服务不被删除或中止,不能修改系统登陆方式等等,为Linux系统数据安全提供一种全方位的保护。php
1. LIDS的主要功能html
1).保护硬盘上任何类型的重要文件和目录node
如/bin、/sbin、/usr/bin、/usr/sbin、/etc/rc.d等目录和其下的文件,以及系统中的敏感文件,如passwd和shadow文件,防止未被受权者(包括ROOT)和未被受权的程序进入,任何人包括ROOT都没法改变,文件能够隐藏。保护重要进程不被终止,任何人包括root也不能杀死进程,并且能够隐藏特定的进程。linux
2).检测内核中的端口扫描器,LIDS能检测到扫描并报告系统管理员。apache
3).当有人违反规则时, LIDS会在控制台显示警告信息,将非法的活动细节记录到受LIDS保护的系统log文件中。安全
2 配置LIDS网络
本节涉及到内核编译的知识,请初学者参考:
http://linux.chinaunix.net/techdoc/desktop/2006/05/11/932179.shtmlssh
本次试验以Fedora 14为平台:
①.首先准备内核:
http://www.kernel.org/ 在这里下载kernel 2.6.34.14 源码,将源码包释放到/usr/src
②.下载patch
http://www.lids.jp/develop/lids-2.2.3rc11-2.6.34.patch
管理工具
http://www.lids.jp/wiki/index.php?Development
③.下载lidstools-2.2.7.10
④.Linux内核打LIDS补丁
#patch -p1 ./lids-2.2.3rc11-2.6.34.patch
⑤.编译linux内核
#make menuconfig socket
执行完上面的命令会打开如图1所示界面,启用LIDS在在内核Security Options选项中,其界面如图2所示。ide
图 1 在Linux内核中选中Security options选项
图 2 在内核中启用LIDS
设置完毕保存退出
#make ;make install
这样就会将Lidsadm和Lidsconf这两个工具安装到/sbin/目录中,同时会建立一个/etc/lids的目录,并会在此目录下生成一个默认的配置文件.
3.使用Lidsadm工具
Lidsadm是LIDS的管理工具单元,能够用它来管理系统中的LIDS。Lidsadm的做用主要就是启用或停用LIDS,以及封存LIDS到内核中和查看LIDS状态。 使用下列命令能够列出Lidsadm的全部可用选项: # lidsadm -h 此命令会返回下列信息: ...... lidsadm -[s/I] -- [+/-] [LIDS_FLAG] [...] lidsadm -v lidsadm -h 命令参数解释: -s:开关某些保护选项时指示应提交密码 -I:开关某些保护选项时不提交密码 LIDS_FLAG:为Lidsadm的标志值 -v:显示版本 -V:查看如今LIDS状态 -h:列出全部选项 Lidsadm经常使用的部分主要功能模块: CAP_CHOWN: 修改目录或文件的属主和组 CAP_NET_BROADCAST: 监听广播 CAP_NET_ADMIN: 接口、防火墙、路由器改变 CAP_IPC_LOCK: 锁定共享内存 CAP_SYS_MODULE: 插入和移除内核模块 CAP_HIDDEN: 隐藏进程 CAP_SYS_RESOURCE: 设置资源限制 CAP_KILL_PROTECTED: 杀死保护进程 CAP_PROTECTED: 保护进程为单用户方式 Lidsadm可用的标志值(Available flags): LIDS: 禁止或激活本地LIDS; LIDS_CLOBAL: 彻底禁止或激活LIDS RELOAD_CONF: 从新加载配置文件 (2)、Lidsconf工具及其选项: Lidsconf主要用来为LIDS配置访问控制列表(ACLS)和设置密码。 输入如下命令能显示Lidsconf全部的可用选项: # lidsconf -h 此命令执行返回命令参数解释以下: -A:增长一条指定的选项到已有的ACL中 -D:删除一条指定的选项 -E:删除全部选项 -U:更新dev/inode序号 -L:列出全部选项 -P:产生用Ripemd-160加密的密码 -V:显示版本 -h:显示帮助 -H:显示更多的帮助 子对像(subject): -s [--subject]:指定一个子对像,能够为任何程序,但必须是文件。 目标(object): -o[object]:能够是文件、目录或功能(capabilities)和socket名称。 动做: -j:它有如下几个参数: DENY: 禁止访问 READONLY: 只读 APPEND: 增长 WRITE: 可写 GRANT: 对子对像授与能力 Ignore: 对设置的对像忽略全部权限 Disable: 禁止一些扩展特性
4.使用LIDS来保护系统
在使用LIDS保护的Linux的系统中,能够经过一个LIDS的自由会话终端模式来修改那些已经加入到保护中的数据,全部的LIDS设置工做也可在这个自由会话终端中进行。 使用以下命令打开一个LIDS终端会话:
#lidsadm -S -- -LIDS
在按提示输入密码后,就创建了一个LIDS自由会话终端,在此终端咱们就能够启用、停用LIDS和退出此终端。此时,Linux系统中的任何数据都是不受LIDS保护的。在完成对文件或数据的修改后,咱们应当经过以下命令从新启用LIDS:
#lidsadm -S -- +LIDS
另外要清楚的是,在一个增长了LIDS功能的Linux系统中,一个名为/etc/lids/lids.cap的文件中包括了全部的功能描述列表。每个功能项前经过使用“+”号来启用此功能,使用“-”号来禁用此功能,完成设置后咱们必须从新加载它的配置文件才能使修改生效。 下面咱们就经过运用这些功能项,来对系统中要保护的重要数据进行安全设置:
(1)保护某个文件为只读
#lidsconf -A -o /sbin/ps -j READONLY
此命令保证一旦LIDS被启用,任何人都不能修改或删除此文件。
(2)保护一个目录为只读
#lidsconf -A -o /usr/bin -j READONLY
此命令用来保证一旦LIDS被启用,任何人都不能列出或删除此目录及其中的内容。
# lidsconf -A -o /etc -j READONLY
(3)隐藏任何用户都看不到的目录或文件
#lidsconf -A -o /home/userdir -j DENY
此设置将使任何系统用户甚至root用户都不能访问它。若是设置的是一个目录,那么此目录下的文件、目录都将被隐藏。
(4)指定某些特定的程序以只读方式访问一些很是敏感的文件
好比在系统登陆时要访问/etc/shadow文件,咱们能够指定某些程序能在系统认证时使用它,这些程序包括login、ssh、su等。例如,咱们能够只容许login以只读方式访问/etc/shadow文件:
#lidsconf -A -s /bin/login -o /etc/shadow -j READONLY
(5)以根用户身份指定一个服务在指定的端口上运行
要想指定服务在1024及如下端口上运行须要LIDS的CAP_NET_BIND_SERVICE功能。若是咱们在/etc/lids/lids.cap文件中没有启用此功能,那么就不能以根用户身份启动任何一个服务运行在指定的端口上。咱们能够经过下列命令来受权某个程序有此功能:
#lidsconf -A -s /usr/local/bin/apache -o CAP_NET_BIND_SERVICE 80 -J GRANT
(6)为ssh和scp的远程链接指定端口
要为ssh和scp的远程链接指定端口,就须要LIDS的CAP_NET_BIND_SERVICE功能。咱们能够经过下列命令将CAP_NET_BIN_SERVICE功能指定的端口受权给ssh:
#lidsconf -A -s /usr/bin/ssh -o CAP_NET_BIN_SERVICE 22 -J GRANT
最后,对LIDS技术感兴趣的读者能够参考《LIDS精通与进阶》的文档,文中写的很是详细。
参考文献: