freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

开源HIDS-OSSEC使用实例:监测CC攻击
2015-06-02 15:00:29

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这个工具来测试一下,结果如下图:

日志包含的字段已经解析了出来,并且匹配中了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工具测试一下:

我们新添加的规则已经匹配成功。不过这里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页面,可看到实际的报警效果:

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

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

本文作者:, 转载请注明来自FreeBuf.COM

# OSSEC # cc攻击
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦
收入专辑