欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

企业级入侵检测系统及实时告警的开源实现

来源:本站整理 作者:佚名 时间:2016-11-15 TAG: 我要投稿

前言
本文以构建一套完整的入侵检测系统为目的,配合使用多款开源软件快速搭建起包含流量监控、攻击溯源、实时告警等功能的框架。其中告警能高度自由定制,不再局限于传统的Web页面告警,邮件告警。文中,会提供两个例子来帮助大家理解如何去配置告警任务。
1. 入侵行为识别
入侵检测有着使用许多开源的IDS,这里我们以Suricata为例。Suricata是一个高性能的网络IDS,IPS和网络安全监控引擎,它可以兼容snort规则同时是多线程的IDS,我们通过官方提供的文档快速安装上。
https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Quick_Start_Guide
安装完成后,在/etc/suricata/suricata.yaml 配置下:
在15行设置 HOME_NET为本机ip或所在段,是监控的目标网域
在217行把“- flow”注释掉 ,以免数据过多

sudo suricata -c /etc/suricata/suricata.yaml -i eth0
运行后我们将会在 /var/log/suricata/eve.json 文件中得到JSON格式的IDS日志。
2. 日志平台
为了便于后续的攻击日志分析,自然需要对数据进行入库方便我们查询。IDS大都部署在网关上,数据量非常客观,对于日志信息的大数据处理,目前最流行的便是ELK Stack。

Logstash:负责日志的收集,处理和储存
Elasticsearch:负责日志检索和分析
Kibana:负责日志的可视化

写本文时,ELK Stack已经更新了5.0正式版,统一了elasticsearch,logstash,kibana间版本命名问题,同时对Shield, Watcher, Marvel,Graph几个扩展插件经行了封装打包,形成了X-PACK。
安装过程同样略过,在完成ELK及X-PACK的安装后,启动服务:
systemctl start elasticsearch.service
systemctl start kibana.service
注意:安装X-PACK后,elasticsearch和kibana将会开启用户验证,默认用户elastic密码changeme
在/etc/kibana/kibana.yml中需要配置账号并重启kibana服务:
elasticsearch.username: “elastic”
elasticsearch.password: “changeme”
在服务启动后,通过Logstash对IDS的日志文件进行分析处理,并将数据打入es存储。
新建配置文件/etc/logstash/conf.d/test.conf,键入以下内容:
input {
  file {
    path => "/var/log/suricata/eve.json"
    type => "attack"
  }
}
filter {
  if [type] == "attack" {
    json{
      source => "message"
    }
  }
}
output {
  if [type] == "attack"{
    elasticsearch {
      hosts => ["localhost:9200"]
      user => elastic
      password => changeme
    }
  }
}
随后启动Logstash服务:

systemctl start logstash.service
Kibana便是我们的攻击溯源平台,打开Kibana的Web页面 http://localhost:5601

可以看到我们的IDS日志已经被结构化的存储在其中,利用检索功能可以快捷且准确的定位到相关日志内容。
比如,可以直接输入“nmap”进行模糊搜索,也可以通过字段匹配语法进行精确匹配“dest_port:80 AND event_type:alert”
以上通过 Suricata 和 ELK Stack 便快速搭建了一套简易但高效的入侵检测溯源系统,使用ELK的优势在于几乎不需要设置便能保证在非常大数据量下的查询速率。而日志的完整性取决于 Suricata 中 攻击识别规则的丰富性,通过官方提供的 snort 规则目前是可以识别常见的流量信息及攻击流量。
3. 高定制化的实时告警
包括很多商业IDS在内做的不好的便是实时告警这一块,有的通过Web页面提供告警,做得好一点则能配置邮件告警。但在我实际的使用中发现,告警策略其实更与系统使用者密切联系,而开发厂商很难能提供周密完善的配置选项,所以一个能高度定制化的告警系统是我们想要的。
ElasticSearch 的 API 接口为我们提供了这种可能,其查询返回的 JSON 格式也非常便于我们进行查询数据的处理。官方提供的 X-PACK 扩展包中便包含了可以提供告警功能的 Watcher 扩展插件。
这里简单介绍下Watcher的配置方法:
PUT _xpack/watcher/watch/xxxx_name
{
  "trigger" : { "schedule" : { "interval" : "10s" }},
  "input" : {},
  "condition" : {"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}},
  "actions" : {}
}
指定一个告警任务,需要配置4个模块:Trigger、Input、Condition、ACTIONS

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载