转载

开源HIDS-OSSEC使用实例:监测CC攻击

OSSEC作为一款流行的开源HIDS在FreeBuf上已经有不少文章了,虽然ossec已经内置了一些规则,但要真正满足实际的需求还是远远不够的。这里以一个实例,具体讲解一下如何自己制定一条规则,来加深对ossec的理解。

思路

假设我们有这样一个需求,要对指定的某个动态页面进行监测(本文例子为/phpinfo.php),通过一段时间内的单个ip访问频率判断是否存在cc行为。

通过ossec处理该需求的思路:

1.监控web服务器web日志文件读取日志。 2.针对/phpinfo.php该页面建立一条rule,规则为每当检测到/phpinfo.php被访问到一次,则触发一次。 3.再新建一条rule,规则为一定时间内同一个ip触发我们刚才建立的rule达到一定次数,则触发本条规则(本文为方便验证,暂设为每分钟10次)。

思路已经有了,我们再看看怎么实现。我使用的环境为一台ossec server+webui(centos),一台装了ossec agent(centos)的Apache server,具体部署方法可以百度或者站内搜索,这方面的资料很多就不赘述了。

如何配置

首先我们要将Apache server的access访问日志添加到ossec日志源中。修改ossec agent端的配置文件ossec.conf,加入如下配置:

<localfile>   <location>/var/log/httpd/access_log</location>   <log_format>apache</log_format> </localfile>

<location>标签中的内容为需要监控的日志文件路径,这里填access日志的实际路径,<log_format>标签则是日志的类型格式,这里用到的是Apache。其它支持的格式可以参考官方文档 http://ossec-docs.readthedocs.org/en/latest/syntax/head_ossec_config.localfile.html

完成之后,我们先不着急建立新的规则,而是先看一下Apache日志在ossec中是怎么解析的。首先访问一下/phpinfo.php,从accesslog中找到这条访问日志。然后我们要用到{ossec路径}/bin/ossec-logtest这个工具来测试一下,结果如下图:

开源HIDS-OSSEC使用实例:监测CC攻击

日志包含的字段已经解析了出来,并且匹配中了id为31108的rule。我们看看31108是个什么样的规则(在规则文件rules/web_rules.xml中):

  <rule id="31108" level="0">     <if_sid>31100</if_sid>     <id>^2|^3</id>     <compiled_rule>is_simple_http_request</compiled_rule>     <description>Ignored URLs (simple queries).</description>    </rule>

这条规则意思为,若日志的响应代码为2xx或者3xx,则匹配该规则。我们可以在新建的规则中用到这条rule,帮我们过滤掉403、404页面。

在web_rules.xml规则文件中添加如下rule:

  <rule id="31170" level="3">     <if_sid>31108</if_sid>     <url>^/phpinfo.php</url>     <description>target url </description>   </rule>

这条rule意思是匹配了31108rule的日志中url包含/phpinfo.php的话,则匹配该rule,<url>标签中可用"|"分隔添加多个路径。

进行测试

我们再用ossec-logtest工具测试一下:

开源HIDS-OSSEC使用实例:监测CC攻击

我们新添加的规则已经匹配成功。不过这里level值实际用的时候要改成0,不然一直报警会很烦的(ossec默认不会对level 3以下的rule报警)。

继续添加下一条规则,也是判断cc攻击的规则:

  <rule id="31171" level="10" frequency="10" timeframe="60">     <if_matched_sid>31170</if_matched_sid>     <same_source_ip />     <description>cc attacks </description>     <group>DDOS</group>   </rule>

当同一ip在60秒内触发id为31170的rule 10次的时候,触发本规则(标签的具体描述请参考: http://ossec-docs.readthedocs.org/en/latest/syntax/head_rules.html)。

最后,依次重启ossec server端和agent端的服务,使规则生效。反复刷新/phpinfo.php页面,可看到实际的报警效果:

开源HIDS-OSSEC使用实例:监测CC攻击

至此新建规则的工作已完成,只需按照自己的需要略微修改即可。今后的文章中我会进一步讲到利用ossec的active-response功能对cc攻击进行阻断。

* 作者:plane636,文章属FreeBuf黑客与极客(Freebuf.COM)原创奖励计划,未经许可禁止转载

正文到此结束
Loading...