重要的是不要忘记在系统上任何地方查找不寻常或隐藏的文件 - 以句点开头的文件,通常不被 ls 命令显示,因为这些文件可以用来隐藏工具和信息,例如密码破解程序、来自其他系统的密码文件等等。在 UNIX 系统上,一种常见的技术是在用户的帐户中放置一个具有不寻常名称的隐藏目录或文件,例如 '...' 或 '.. ' - 点点空格,或者 ..-^G - 点点 Ctrl-G。可以使用 find 程序来查找隐藏文件。
示例 5-5. 使用 find 命令查找
[root@deep] /# find / -name ".. " -print -xdev [root@deep] /# find / -name ".*" -print -xdev | cat -v |
: 诸如以下名称的文件.xx和.mail已被使用,也就是说,这些文件可能看起来很正常。
在我们移除那些并非绝对需要特权的文件之后,系统上仍然存在的所有 SUID 和 SGID 文件都是潜在的安全风险,应该密切监控。因为这些程序授予执行它们的用户特殊权限,所以必须确保没有安装不安全的程序。
攻击者最喜欢的伎俩是利用 SUID root 程序,并留下一个 SUID 程序作为后门,以便下次进入。查找系统上所有 SUID 和 SGID 程序,并跟踪它们是什么,以便您了解任何可能表明潜在入侵者的更改。使用以下命令查找系统上所有 SUID/SGID 程序
[root@deep] /# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \; |
组和全局可写的文件和目录,特别是系统文件分区,如果攻击者获得对系统的访问权限并修改它们,则可能成为安全漏洞。此外,全局可写目录是危险的,因为它们允许攻击者在这些目录中随意添加或删除文件。在正常操作过程中,一些文件将是可写的,包括来自/dev, /var/catman目录,以及系统上的所有符号链接。要查找系统上所有组和全局可写的文件,请使用以下命令
[root@deep] /# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; |
[root@deep] /# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; |
: 可以定期使用像 Tripwire 软件这样的文件和目录完整性检查器来扫描、管理和轻松查找修改过的组或全局可写的文件和目录。请参阅本书中 安全软件/监控工具 部分,了解关于 Tripwire 的更多信息。
不要允许任何未拥有的文件。未拥有的文件也可能表明入侵者已访问您的系统。如果在系统上找到未拥有的文件或目录,请验证其完整性,如果一切看起来正常,请为其指定所有者名称。有时您可能会卸载一个程序,并获得与该软件相关的未拥有的文件或目录;在这种情况下,您可以安全地删除该文件或目录。要查找系统上没有所有者的文件,请使用以下命令
[root@deep] /#find / -nouser -o -nogroup |
查找所有.rhosts可能存在于您服务器上的文件应该是您日常系统管理职责的一部分,因为这些文件不应在您的系统上被允许。请记住,攻击者只需要一个不安全的帐户就可能获得对您整个网络的访问权限。您可以找到所有.rhosts系统上的文件,使用以下命令
[root@deep] /#find /home -name .rhosts |
要使用 cron 作业定期检查并通过邮件报告所有.rhosts文件,请执行以下操作:以 root 用户身份创建find_rhosts_files脚本文件,位于/etc/cron.daily目录下touch /etc/cron.daily/find_rhosts_files并将以下行添加到此脚本文件中
#!/bin/sh /usr/bin/find /home -name .rhosts | (cat <<EOF This is an automated report of possible existent .rhosts files on the server deep.openna.com, generated by the find utility command. New detected .rhosts files under the /home directory include: EOF cat ) | /bin/mail -s "Content of .rhosts file audit report" root |
[root@deep] /#chmod 755 /etc/cron.daily/find_rhosts_files [root@deep] /#chown 0.0 /etc/cron.daily/find_rhosts_files |