网络安全讲座之九:审计结果(5)
对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:
编辑/etc/security/limits.con加入:
* hard core 0
* hard rss 5000
* hard nproc 20
你也必须编辑/etc/pam.d/login文件加/检查这一行的存在。
session required /lib/security/pam_limits.so
上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。
Samba 远程创建文件漏洞
Samba是一个Unix/Linux下的免费的文件和打印共享服务程序。允许在Unix和Microsoft平台之间使用文件和打印共享。由于smb守护进程没有正确检查NetBIOS名字,一个本地用户可以从远程在Samba服务器上往任意文件中写入数据。如果用户可以在本地建立符号链接,用户可以提升自己的权限。
远程用户也可能发动拒绝服务攻击。
问题发生在smbd在创建SMB会话的日志文件(*.log)时。在受影响的平台上,缺省情况下,每个SMB会话被记录到/var/log/samba/.log文件中。如果攻击者的NetBIOS名字是'FOOBAR',日志文件将会是/var/log/samba/fooboar.log.然而,smbd没有检查NetBIOS名字是否包含"../",因此,如果攻击者将NetBIOS名字设置为"../../../nsfocus",那么将会创建/nsfocus.log文件。
如果smb.conf文件中存在下列设置:
log file = /var/log/samba/%m.log
那么,这个系统就是受影响的。
在某些平台下(例如FreeBSD)下,配置如下:
log file = /usr/local/samba/var/log.%m
这种配置将不受此问题影响。
smbd在创建log文件时也忘记检查该文件是不是链接文件,因此攻击者可以利用符号链接将任意数据添加到任意文件中。如果将某些数据写到某些敏感文件中(例如/etc/passwd,rc启动脚本等等),本地用户就可能获取root权限。
测试程序:
--------------------------------------------------------------------------------
$ ln -s /etc/passwd /tmp/x.log
$ smbclient //NIMUE/"`perl -e '{print "\ntoor::0:0::/:/bin/sh\n"}'`" \
-n ../../../tmp/x -N
$ su toor
#
--------------------------------------------------------------------------------
建议:
临时解决方法:
修改smb.conf,将log file行改变成如下配置:
log file = /usr/local/samba/var/log.%m
或者将%m删除。
主机审计解决方案
在审计主机时,你会发现由于每台主机都是针对不同的商业目的,所以你也需要提供不同的解决方案。你可以建议下列的审计方案。
·实施本机审计:虽然你希望能补充象last和时间查看器这样的本机审计工具,但本机审计程序通常是审计过程好的出发点。
·安装监视软件,例如Axent’s Enterprise Security Manager(ESM):这种软件通报中央控制系统那些系统低于规定策略的限度之下。例如,这种监视程序可以设置成提醒你哪些系统的密码有效期设置得过低。
·清除安装工作中的临时文件:自动安装程序通常在临时文件中留下重要的数据包括密码
·修复和清理被损坏的系统:你可以清除非法的服务像NetBus,Tribal Flood和BackOrifice。
·替代服务:例如,你可以用SSH服务来替代Telnet,SSH使用公钥加密来保证登录会话的安全。
·安装操作系统附件,例如个人防火墙和加密服务。
清除“感染”
反病毒软件可以扫描出众所周知的非法服务,木马,病毒和蠕虫。然而,你应当能够排除至今还未检测到的问题。为了检测和清除感染,你可以:
·使用TCP/IP排错的工具,例如netstat
·使用Telnet连接怀疑的端口
·升级和运行反病毒程序