修改swatch配置以监测针对Apache的攻击

下面这个例子里的攻击手段是一种真实存在的攻击手段,我们来看看它会在日志文件里留下怎样的踪迹以及在发现这些踪迹后如何修改系统配置加以防御。在过去,因为mod_userdir模块一个默认的Apache模块)的缺陷和它的默认配置,Apache的HTTP服务器经常受到攻击,攻击者可以用一种能扫描远程主机的程序获得远程主机上的某些用户账户信息。

该工具先检查是不是Apache,再检查它是不是有安防漏洞的那个版本,如果是,它将自动地使用很多常见的用户账户去试探目标系统。这种扫描非常快,根据网络连接和服务器的速度,扫描一个账户有时候不用一秒钟。扫描出来的用户信息将被黑客用来攻击FTP等其他系统服务,因为黑客已经确切地知道那些用户账户是存在的。这种攻击将在Apache的access_log日志里留下大量的事件记录。如果黑客试测的用户账户不存在,会在日志里留下404出错信息。

如果黑客试测的用户账户存在但不允许访问,会在日志里留下403出错信息。除了进入日志文件,这些出错信息还将返回到攻击者那里,这正是攻击者希望的。攻击者只对403出错信息感兴趣——导致403出错信息的账户在目标系统上是存在的,黑客可以针对这些账户发动下一步攻击。把下面几行代码添加到用swatch工具检查Apache日志文件时使用的.swatchrc文件里,就可以通过电子邮件知道哪些账户最有可能成为上述攻击手段的受害者:

#Apache403errors
watchfor/403/
echo
bell
mail

偶尔出现一条403出错信息没有关系,但如果在几秒之内连续出现许多403出错信息,就应该知道必须采取行动了。因为403出错不是一种经常发生的事情,定期进行搜索就可以。比如,如果打算安排swatch工具在每晚0点5分对Apache日志文件进行一次检查,可以在根用户的crontab文件里增加一项如下所示的计划任务:

5 0 * * *  --config-file=swatchrc.apache swatch --examine-file=/var/log/httpd/access_log

最保险的做法是把swatch运行为一个守护进程或让它运行在“tail”模式下,这可以让你在事情发生的时候立刻收到swatch发来的警报。可以用下面这条命令达到这个目的:

swatch --config-file=swatchrc.apache --tail-file=/var/log/httpd/access_log

一旦确认攻击正在发生,应该立刻采取补救措施:在Apache的配置文件/etc/httpd/httpd.conf文件里增加和修改几条配置指令,然后用命令重新启动Apache守护进程。修改Apache配置文件的具体办法有两种。第一种办法是先全局禁用UserDir指令,再把需要激活的用户账户激活,如下所示:

UserDir disabled
UserDirenabled user1 user2 user3

第二种是先全局激活UserDir指令,再把不想让外界知道的用户账户禁用掉,如下所示:

UserDir enabled
UserDir disabled user4 user5 user6


相关内容