这是我以前的文章的重写,因为它不完全清楚我想达到什么。 希望这会更有意义:)
简而言之,我正在寻找的是替代方法来检测我的系统是否被超越使用诸如tripwire / OSSEC / samhain / rkhunter之类的工具而受到损害,并且只是一般的文件完整性检查和日志监视。 我故意试图不要对我的问题过于具体,因为我总是在想法之后,所以我可以在自己的机器上实现它们。 这可能是但不限于以设定的时间间隔(cronjob)运行的脚本,并且在某些事情发生变化时通知pipe理员并提示pipe理员通过(syslog / email?)进一步调查。 注意,我不一定是在代码本身之后,只是对它所做的高级概述。 随意如你所愿,尽可能详细。
如果我列出一些我目前所做的事情,可以帮助您了解我的想法。
1)生成我运行的iptables输出的md5sum,并将其与已知的好散列进行比较。 如果更改,则可以安全地假设有人添加/删除了iptables条目。
2)我有某些只读(/ usr,/ boot等)的挂载点,因为它们不应该经常改变。 如果一个分区从只读变为可写,我希望得到通知。
3)只监听netstat的输出。 对包含已知良好值的文件执行文件比较(diff)。 如果添加了某些东西,可能有人已经为系统添加了新的服务。 可能的后门?
请注意,如果我正在进行系统维护,上述操作将产生误报。 但是,如果这些变化,当我不是我会考虑他们的怀疑和进一步调查。 请注意,这些仅仅是一些例子,并且确实存在一些缺陷,但是更多的障碍可能会导致有人绊倒。
提前致谢。
我build议查看内存取证工具,例如ForensicsWiki中列出的工具。 例如,您可以使用Second Look Linux内存取证产品执行内核和进程完整性validation。 文件完整性检查器非常适合validation系统的非易失性状态; 内存取证可让您validation易失性状态,以确保在给定时间点在系统上运行的所有代码都是合法的且未经修改。
也许我误解了你的问题。 这听起来像你只需要unix主机IDS / IPS,如samhain , snort或OSSEC的信息 。 也有wiki 。 还是你在找别的东西?
我运行了integrit(二进制完整性检查),Tiger(系统IDS /审计),logcheck和严格苛刻的IPtables规则(包括OUTPUT在内的所有的默认设置)。Debian中的所有默认设置都工作得很好,间隔和电子邮件输出到根。
我也推荐“ Debian安全手册 ”,对您可以做什么和应该做什么做一个很好的概述。
我每天运行nmap并以xml格式保存输出。
例如:nmap 192.168.0.0/24 -oX /tmp/nmap.output
通过nmap的所有选项是为了在这里,
但http://www.nmap.org有大量的信息。
然后可以使用nmap包中的ndiff来区分输出
从另一天,并得到一个已经被closures的电脑列表
添加,删除或打开新的端口。
在cron中设置所有这些,并在运行后邮寄一个列表。
OSSEC可以为您提供系统审计function。 你试过了吗? 看看输出命令的无代理监视…
rootkit使用rkhunter或chkrootkit进行检查
你可以尝试Zabbix的服务,日志监控,文件校验和完整性等等。 这是很容易安装和configuration。 您可能需要根据您的需要定制它,添加第三方软件。
我在OSSEC项目工作很多,我知道它可以解决您的问题。 不是开箱即用,但有一点调整会起作用。
关于OSSEC的新function是报告命令输出的差异,只需将以下内容添加到您的etc / ossec.conf
<ossec_config> <localfile> <log_format>command</log_format> <command>iptables -L -n</command> </localfile> </ossec_config>
然后创build一个如下所示的本地规则
<rule id="98989" level="10"> <if_sid>530</if_sid> <match>ossec: output: iptables -L -n</match> <check_diff /> <description>Change made to iptables</description> </rule>
更多细节可以在http://www.ossec.net/doc/manual/monitoring/process-monitoring.htmlfind
目前rootcheck为此做了一些简单的检查,但是添加你自己的是一个很好的select。
首先在etc/shared/创build一个rootcheck策略文件,对于这个例子,我将把它命名为unix_mount_policy.txt ,内容如下。
# This will make sure that the OS this file is used for pilicy is running redhat # and it should be changed for your environment [Policy - Check OS] [any required] [http://intranet.example.com/location/of/policy] f:/etc/redhat-release -> r:^Red Hat Enterprise Linux \S+ release 5; f:/etc/redhat-release -> r:^CentOS && r:release 5.2; # First real rule # This will alert if /usr does not have ro on the same line [Policy - Mounts read only] [any] [http://intranet.example.com/location/of/policy/readonly] f:/etc/fstab -> !r:^# && r:/usr && !r:ro
rootcheck已经完成了这个function,但是如果你想看看使用第一部分的答案中的公共输出login是否有什么变化,那么设置应该很简单。