Linux下IDS入侵检测与审计工具
2010-03-06 16:36:33 阿炯

如果只有一台电脑,那么相对而言花费大量的工夫仔细审查系统的弱点和问题是完全可能的。可能并不真得希望这样,但却有此可能。不过在现实世界中,需要一些好的工具来帮助我们监视系统,并向我们发出警告,告诉哪里可能出现问题,因此可以经常地轻松一下。入侵检测可能是一种令我们操心的问题之一。不过,事情总有两方面,幸好Linux的管理员们拥有可供选择的强大工具。最佳的策略是采用分层的方法,即将“老当益壮”的程序,如Snort、iptables等老前辈与psad、AppArmor、SELinux等一些新生力量结合起来,借助强大的分析工具,我们就可以始终站在技术的前沿。

在现代,机器上的任何用户账户都有可能被用来作恶。笔者认为,将全部的重点都放在保护root上,就好像其它用户账户不重要一样,这是Linux和 Unix安全中一个长期存在的、慢性的弱点问题。一次简单的重装可以替换受损的系统文件,不过数据文件怎么办?任何入侵都拥有造成大量破坏的潜力。事实上,要散布垃圾邮件、复制敏感文件、提供虚假的音乐或电影文件、对其它系统发动攻击,根本就不需要获得对root的访问。

IDS新宠:PSAD
Psad是端口扫描攻击检测程序的简称,它作为一个新工具,可以与iptables和Snort等紧密合作,向我们展示所有试图进入网络的恶意企图。这是笔者首选的Linux入侵检测系统。它使用了许多snort工具,它可以与fwsnort和iptables的日志结合使用,意味着你甚至可以深入到应用层并执行一些内容分析。它可以像Nmap一样执行数据包头部的分析,向用户发出警告,甚至可以对其进行配置以便于自动阻止可疑的IP地址。

事实上,任何入侵检测系统的一个关键方面是捕获并分析大量的数据。如果不这样做,那只能是盲目乱来,并不能真正有效地调整IDS。我们可以将PSAD 的数据导出到AfterGlow 和 Gnuplot中,从而可以知道到底是谁正在攻击防火墙,而且是以一种很友好的界面展示。

老当益壮:Snort
正如一位可信任的老人,随着年龄的增长,Snort也愈发成熟。它是一款轻量级且易于使用的工具,可以独立运行,也可以与psad和iptables 一起使用。我们可以从Linux的发行版本的程序库中找到并安装它,比起过去的源代码安装这应该是一个很大的进步。至于保持其规则的更新问题,也是同样的简单,因为作为Snort的规则更新程序和管理程序,oinkmaster也在Linux发行版本的程序库中。

Snort易于管理,虽然它有一些配置上的要求。要开始使用它,默认的配置对大多数网络系统并不适用,因为它将所有不需要的规则也包括在其中。所以我们要做的第一件事情是清除所有不需要的规则,否则就会损害性能,并会生成一些虚假的警告。

另外一个重要的策略是要以秘密模式运行Snort,也就是说要监听一个没有IP地址的网络接口。在没有为它分配IP地址的接口上,如ifconfig eth0 up,以-i选项来运行Snort,如snort –i eth0。还有可能发生这样的事情:如果你的网络管理程序正运行在系统中,那它就会“有助于”展现出还没有配置的端口,因此建议还是清除网络管理程序。
Snort可以收集大量的数据,因此需要添加BASE(基本分析和安全引擎),以便于获得一个友好的可视化的分析工具,它以较老的ACID(入侵数据库分析控制台)为基础。

简洁方便:chkrootkit和rootkit
Rootkit检测程序chkrootkit和rootkit Hunter也算是老牌的rootkit检测程序了。很明显,在从一个不可写的外部设备运行时,它们是更可信任的工具,如从一个CD或写保护的USB驱动器上运行时就是这样。笔者喜欢SD卡,就是因为那个写保护的的开关。这两个程序可以搜索已知的rooktkit、后门和本地的漏洞利用程序,并且可以发现有限的一些可疑活动。我们需要运行这些工具的理由在于,它们可以查看文件系统上的/proc、ps和其它的一些重要的活动。虽然它们不是用于网络的,但却可以快速扫描个人计算机。

多面手:Aide
Aide是一款入侵检测和数据完整性产品,它允许用户构建一个表现最优设置的基本服务器状态。它并不能阻止损害事件的发生,但它能够将目前的状态与理想的状态相比较,以决定是否发生了任何意外的或故意的改变。如果检测到了任何变化,就会被降到运行障碍最少的状态。

如果你需要控制对Linux或UNIX服务器的改变,可以有三个选择:开源的Aide、服务器版Aide、企业版Aide。虽然这三个产品有一些共同点,但却拥有大量的不同方面,使得这款产品可以满足不同IT环境的要求。

如开源的Aide对于监视少量的服务器是合适的,因为这种情形并不需要集中化的控制和报告;服务器版Aide对于那些仅在Linux/UNIX/Windows平台上要求服务器监视并提供详细报告和最优化集中服务器管理的IT组织是一个理想的方案;而企业版Aide对于需要在Linux/UNIX/Windows服务器、数据库、网络设备、桌面和目录服务器之间安全地审核配置的IT组织而言是最佳选择。

使用audit为Linux提供安全审计

1、简介
在Linux系统中有大量的日志文件可以用于查看应用程序的各种信息,但是对于用户的操作行为(如某用户修改删除了某文件)却无法通过这些日志文件来查看,如果我们想实现监管企业员工的操作行为就需要开启审计功能,也就是audit。

2、安装及查看运行状态
yum install audit
使用service或systemctl查看状态,或其自带的指令:auditctl -s

enabled为1开示开启,0表示关闭

3、auditd的相关的工具
auditctl:即时控制审计守护进程的行为的工具,比如如添加规则等等。
/etc/audit/audit.rules:记录审计规则的文件。
aureport:查看和生成审计报告的工具。
ausearch:查找审计事件的工具
auditspd:转发事件通知给其他应用程序,而不是写入到审计日志文件中。
autrace:一个用于跟踪进程的命令。
/etc/audit/auditd.conf:auditd工具的配置文件。

4、首次安装 auditd 后, 审计规则是空的
auditctl -l
No rules

5、Auditd监控文件和目录的更改
auditctl -w /etc/passwd -p rwxa
-wpath:指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd
-p: 指定触发审计的文件/目录的访问权限
rwxa:指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)

6、Auditctl对目录进行审计
auditctl -w /freeoa

7、查看已配置的规则
auditctl -l
-w/etc/passwd -prwxa
-w/freeoa -prwxa

8、使用 ausearch 工具查看审计日志
1.用-f 设定ausearch调出/etc/passwd文件的审计内容
ausearch -f /etc/passwd

time:审计时间。
name:审计对象
cwd:当前路径
syscall:相关的系统调用
auid:审计用户ID
uid 和 gid:访问文件的用户ID和用户组ID
comm:用户访问文件的命令
exe:上面命令的可执行文件路径

2.修改监控文件添加一个用户,看看auditd如何记录文件/etc/passwd的改动的
在指定的时间,/etc/passwd 被root用户(uid=0, gid=0)在/root目录下修改。/etc/passwd 文件是使用/usr/sbin/useradd 访问的

9、监控目录是否有变动
1.ausearch去查看日志的时候会发现什么都没有
mkdir test
auditctl -w /test/
ausearch -f /test/

2.使用root账户修改目录权限
chmod -R 777 /test/
ausearch -f /test/

10、查看审计报告
aureport是使用系统审计日志生成简要报告的工具。我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后,audit.log 文件就创建出来了。生成审计报告,我们可以使用aureport工具。不带参数运行的话,可以生成审计活动的概述。
aureport
Summary Report
Range of time inlogs: 1970年01月01日 08:00:00.000 -2020年02月10日 16:40:10.014
Selected time forreport: 1970年01月01日 08:00:00 -2020年02月10日 16:40:10.014
Number of changes inconfiguration: 10
Number of changes to accounts, groups, or roles: 6
Number of logins: 3779
Number of failed logins: 0
Number of authentications: 978
Number of failed authentications: 486
Number of users: 2
Number of terminals: 12
Number of host names: 6
Number of executables: 18
Number of commands: 18
Number of files: 5
Number of AVC's: 0
Number of MAC events: 490
Number of failed syscalls: 0
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 16226
Number of integrity events: 0
Number of virt events: 0
Number of keys: 0
Number of process IDs: 16294
Number of events: 134330
----------------------------------------------------------------------------------------
看出有 486次授权失败。使用aureport,我们可以深入查看这些信息

11、查看授权失败的详细信息
aureport -au

Authentication Report

# date time acct host term exe success event
1. 2020年01月09日 19:04:38 root 10.101.0.194 ssh/usr/sbin/sshd no 550
2. 2020年01月09日 19:04:38 root 10.101.0.194 ssh/usr/sbin/sshd yes551
3. 2020年01月09日 19:04:38 root 10.101.0.194 ssh/usr/sbin/sshd yes554
4. 2020年01月09日 21:05:17 root 10.101.0.194 ssh/usr/sbin/sshd no 816
5. 2020年01月09日 21:05:17 root 10.101.0.194 ssh/usr/sbin/sshd yes817
6. 2020年01月09日 21:05:17 root 10.101.0.194 ssh/usr/sbin/sshd yes820
7. 2020年01月09日 22:04:57 root 10.101.0.194 ssh/usr/sbin/sshd no 991

12、查看所有账户与修改相关的事件
aureport -m

Account Modifications Report

# date time auid addr term exe acct success event

1. 2020年02月10日 11:47:18 0? ? /usr/sbin/groupadd ? yes110357
2. 2020年02月10日 11:47:18 0? ? /usr/sbin/groupadd ? yes110358
3. 2020年02月10日 11:47:18 0? ? /usr/sbin/useradd ? yes110359
4. 2020年02月10日 12:38:43 0RedHat_test pts/0 /usr/sbin/useradd ywm yes111051
5. 2020年02月10日 12:38:43 0RedHat_test pts/0 /usr/sbin/useradd ? yes111053
6. 2020年02月10日 12:38:43 0RedHat_test pts/0 /usr/sbin/useradd ? yes111056

13、清空定义的规则
auditctl -D
auditctl -l