【 原文由 chzhuang 所发表 】
一. LIDS的一些基本概念
1.当前Linux系统的缺陷
文件系统没有保护机制
进程没有保护机制
系统管理没有保护机制
root会滥用职权
系统认证是不可信的
存取控制模型(DAC)是不足的
2.什么是LIDS
一个内核的补丁和管理工具,用于加强linux的内核安全性
一个内核中参考监视器的执行
内核中的强制存取控制(MAC)模型的实现
一些正派黑客的现行项目
3.LIDS的特性
文件保护。任何人,包括root,不能修改LIDS保护的文件。文件可以是隐藏的。
进程保护。任何人,包括root,不能修改LIDS保护的进程。进程可以是隐藏的。
细粒度的存取控制。
用来使用的扩充对整个系统的控制能力来自内核的安全警告内核实现的端口扫描探测器
4.为什么使用LIDS
使系统更安全
保证系统的完整性
为系统安全策略提供一个易用,全面的配置方法
二. LIDS的配置
在这一节里,我们介绍一下如何配置LIDS。
2.1LIDS的配置目录--“/etc/lids/”
安装完lidsadm以后,你会发现会出现一个/etc/lids/目录。当内核启动后,lids的配种信息会被读入内核来初始化LIDS系统。
lids.conf:这个文件存有LIDS的ACLs的信息,用于定义各对象的存取类型。可以使用哪俊?
lids.cap:包含系统的所有功能描述,你可以修改这个文件来配置系统功能。在文件中中的功能名前面加上“+”就可以允许这项功能,加上“- ”就会禁止这项功能?
lids.net:该文件用于配置网络传输警告信息。你可以定义SMTP服务器,端口,信息标标题等等。当你配置内核时,选择了Send security alerts through network (NEW)就需要配置该文件?
lids.pw:该文件用于保存使用命令“lidsadm-P”生成的密码。当你配置内核时,选选择了Allow switching LIDS protections (NEW)就需要配置该文件?
注意:你如果想要切换LIDS的保护层次,必须在重启之前运行“lidsadm -P”。
2.2保护文件和目录
首先,你要确定系统中哪些文件需要保护。一般是系统的一些重要的二进制文件和系统统配置文件,例如/usr/,/sbin/,/etc/,/v ar/log/?
其次,你要定义文件保护级别。LIDS提供了4级保护类型:
1.DENY access to any body:任何人(包括root)不能查看或者修改该文件。这种级别用于于比较重要的文件,比如/etc/shado
用法:lidsadm -A -o file_to_protected -j DENY
例子:# lidsadm -A -o /etc/shadow -j DENY
重启并重载启动文件以后,你会看到
# ls /etc/shadow
ls: /etc/shadow: No such file or directory
我们还可以让某些程序可以访问这个文件,比如/bin/login程序需要访问/etc/shadow照个文件,我们可?使用如下方法。
用法:lidsadm -A -s SUBJECT_PROGRAM -o OBJECT_PROGRAM-j READ/WRITEE/APPEND
# lidsadm -A -s /bin/login -o /etc/shadow -j READ
2.Read Only Files:该类型文件意味着没有人可以改变这个文件。比如下列文件:/etc/paasswd,/bin/passwd等等。
用法:lidsadm -A -o file_to_protect -j READ
例子:a.只读保护/sbin/目录
# /sbin/lidsadm -A -o /sbin/ -j READ
b. 只读保护/etc/passwd
# /sbin/lidsadm -A -o /etc/passwd -j READ
3.Append Only Files:这种保护类型一般用于一些系统日志文件,比如:/var/log/messagge,/var/log/secure。这种文件只能使用添加方式打开,不可以修改和减少文件内容。
用法:lidsadm -A -o filename_to_protect -j APPEND
例子:
a. 保护系统日志文件
# /sbin/lidsadm -A -o /var/log/message -j APPEND
# /sbin/lidsadm -A -o /var/log/secure -j APPEND
b.保护apache httpd日志文件
# /sbin/lidsadm -A -o /etc/httpd/logs/ -j APPEND
4.Write:该类型用于定义可以被写的文件。
5.文件保护中的强制存取控制
你可以定义主体(程序)以什么存取方式(READ,APPEND,WRITE)来访问客体(文件)。
比如,你可以定义/home/httpd/不让任何人访问,使/usr/sbin/httpd可以被该目录下档文件读。
# lidsadm -A -o /home/httpd -j DENY
# lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ
这样,Web服务器能照常提供服务,但是/home/httpd/下的程序就不会被查看或修改。即使浇攻者通过httpd的安全漏洞取得root权限,他也不能查看该目录下的文件。甚至虽然他可以用改写栈的方法在h ttpd服务器里写入恶意代码,他也只能读/home/httpd下的文件,而不能修改。
一些示例:
lidsadm -Z
lidsadm -A -o /boot -j READ
lidsadm -A -o /vmlinuz -j READ
lidsadm -A -o /lib -j READ
lidsadm -A -o /root -j READ
lidsadm -A -o /etc -j READ
lidsadm -A -o /sbin -j READ
lidsadm -A -o /usr/sbin -j READ
lidsadm -A -o /bin -j READ
lidsadm -A -o /usr/bin -j READ
lidsadm -A -o /usr/lib -j READ
lidsadm -A -o /var/log -j APPEND
你安装完/etc/lids/以后,在/etc/lids/目录下会有一个示例lids.conf文件。你必须运行发idsadm -U”来更新节点/设备值,再按你的要求来重新配置它。
2.3保护进程
LIDS可以保护1号进程的子进程,你必须在/etc/lids/lids.cap中配置如下性能:-29:CCAP_INIT_KILL
隐藏进程
可以给进程加上隐藏属性,当进程执行时,其他人用“ps”或在/proc下查看都不能看档礁进程。例如:
lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT
2.4用性能来保护
性能就像我们赋给进程的某些特权。一个根进程拥有所有性能。但是这时存在一个性能能限定集。在普通的内核里,当你从性能限定集里删掉一个性能的话,在重启之前没人能再拥有这项性能了?
LIDS修改了这项功能使你能够自由地更换这些性能。例如可以指定对/proc/sys/kernell/cap_bset的访问引起陷入并产生一个安全警告。
你可以运行lidsadm来列出LIDS中所有的性能来详细看它们的确切意思。
系统性能配置
系统性能值被存在文件/etc/lids/lids.cap中,你可以修改它。我们讨论两个性能。
CAP_SYS_RAWIO:拥有这项性能,我们能够访问ioperm/iopl,/dev/port,/dev/mem,//dev/kmem,并允许原始块设备访问。
当我们禁止这项性能,系统上的进程就不能访问原始设备,例如lilo。但某些程序可能能需要这项性能,如XF86_SVGA,我们可以在编译内核时,把它列入例外集?
CAP_NET_ADMIN:该性能包含以下能力:
界面配置
IP防火墙,伪装,审计管理
设置sockets的调试信息
路由表的修改
设置sockets上的任意进程(进程组)的属主
为透明代理绑定地址
设置TOS
设置混杂模式
清除驱动程序统计
多点传送
设备寄存器的读写
考虑安全原因,我们应该禁止这项性能,使得不能修改网络配置。比如防火墙的配置规则就就不会被修改?
配置lids.cap
简单的在性能前加个“+”表示启用该性能,加个“-”表示禁止该性能。
例如:
-0:CAP_CHOWN
+1:CAP_DAC_OVERRIDE
为个别进程设置性能
当某项系统性能已经被禁止时,我们还可以为个别进程设置允许。例如,我们可以在/eetc/lids/lids.cap中禁止CAP_SYS_RAWIO。但是X 服务器仍然需要这项性能,我们可以使用命令:
# lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT
这使得XF86_SVGA单独拥有CAP_SYS_RAWIO这项性能。
有内核加封
重启内核后,要使系统性能产生作用,就要给内核加封。必须在启动文件里(若在RedHHat系统就是/etc/rc.d/rc.local)加入以下内容:
#/sbin/lidsadm -I
2.5网络安全
LIDS提供了一些网络安全增强工具。
使用性能加强网络安全
使用性能,我们可以加强网络安全。例如反嗅探,禁止绑定到1024以下的端口上,禁止止修改防火墙或者路由器的规则?
基于内核的扫描探测器
LIDS提供了一个基于内核的扫描探测器,可以探测出谁在扫描你的系统。这个探测器可可以探测出各种扫描方式,如半连接扫描,FI N扫描,Xmax扫描等等,也可以探测出nmap,satan等扫描工具?
当原始socket被禁止以后,这时用户进程的探测器就不能工作。而基于内核的探测器并并没使用socket,它会比用户进程的探测器更安全。如果要包含这项功能,必须在编译内核时选择这个选项?
LIDS提供了一个基于内核的扫描探测器,可以探测出谁在扫描你的系统。这个探测器可
当原始socket被禁止以后,这时用户进程的探测器就不能工作。而基于内核的探测器并
2.6侵入响应系统
当LIDS检测到定义的规则被侵犯,它可以使用如下方式进行响应。
记录信息:它有人侵犯规则,lids_security_log会记录下该信息,并且系统具有anti_loggging_flood功能。在编译内核时选择。
通过邮件服务器记录信息:现在,LIDS可以把信息寄给你的邮箱的能力。你可以在/etc/lidds/lids.net中定义邮件服务器的IP,邮件源等等。如下例:
MAIL_SWITCH=1
# MAIL_RELAY=hex IP ort
# IP11.1 of the machine that will be directly connected by LIDS
# for relaying its mails. Port is usually 25, but who knows...
MAIL_RELAY=210.73.88.149:25
# MAIL_SOURCE=source machine :
# Name of the source machine, used for the ehlo identification.
# Note that a bad name here could make the mail relay refuse your
# mails.
MAIL_SOURCE=lids.chinacluster.com
这里的SMTP服务器是210.73.88.149,端口是25。邮件源被用于EHLO认证。
挂起控制台
当用户侵犯了规则,控制台会关闭该用户的控制台。