1. 介绍
IDS(Intrusion Detection Systems):入侵检测系统,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,并发出安全警报。
IPS(Intrusion Prevention System):入侵防御系统,除了具有IDS的监控检测功能之外,可以深度感知检测数据流量,对恶意报文进行丢弃,以阻止这些异常的或是具有伤害性的网络行为。
NSM:网络安全监控系统,用于收集、检测和分析网络安全数据,通常IDS是其组成部分之一。
IPS入侵防御系统,是在IDS入侵检测系统的基础上,增加了事件处理以及安全防护功能,能够主动对安全事件进行响应。
2. 分类
2.1. IDS分类
IDS根据两种方法进行分类:按照数据来源、按照入侵检测策略。
2.1.1. 按照数据来源分类
- 基于主机的入侵监测系统(HIDS)
- 基于网络的入侵检测系统(NIDS)
- 分布式入侵检测系统(DIDS)
2.1.2. 按照入侵检测策略分类
- 滥用检测
- 异常检测
- 完整性分析
2.2. IPS功能组成
- 数据采集:采集和捕获流量数据
- 入侵检测:分析流量和日志数据,发现安全异常行为并发出警报,常见的有Snort、Suricata、Bro
- 结果展示:用于分析IDS警报并进行友好展示,常见的IDS警报分析工具有Snorby、Sguil、Base等
- 安全防御:主动响应安全事件,采取丢弃数据包等等措施来阻止异常网络行为,比如与iptables联用
3. Suricata NIDS介绍
Suricata是一款支持IDS和IPS的多线程入侵检测系统,与传统Snort相比,Suricata的多线程和模块化设计上使其在效率和性能上超过了原有Snort,它将CPU密集型的深度包检测工作并行地分配给多个并发任务来完成。这样的并行检测可以充分利用多核硬件的优势来提升入侵检测系统的吞吐量,在数据包的深度检测上效果优越。并且Suricata可以兼容现有的Snort规则签名,还增加了对IPv6的支持,已经逐渐成为传统Snort入侵检测系统的代替方案。(开源)
4. 安装Suricata
4.1. Yum安装Suricata
对于RedHat Enterprise Linux 7和CentOS 7,可以使用EPEL存储库。
4.2. 源码安装Suricata
4.2.1. 预安装要求
仅限CentOS 6:CentOS 6需要EPEL包存储库:
在构建Suricata之前,请运行以下命令以确保已安装所有依赖项:
4.2.2. 下载和构建Suricata
不带有IPS功能的编译(默认IDS)
带有IPS功能的编译
常用配置选项
不要为其构建的硬件优化二进制文件。如果二进制文件是可移植的,或者如果要在VM中使用Suricata,则添加此标志。
将Suricata二进制文件安装到/usr/bin/
中。默认/usr/local/
将Suricata配置文件安装到/etc/suricata/
中。默认/usr/local/etc/
设置Suricata用于登录/var/log/suricata/
。默认/usr/local/var/log/suricata
使Lua支持检测和输出。
启用GeoIP支持进行检测。
禁用Rust支持。如果rustc/cargo
可用,则默认启用Rust支持。
将执行常规"make install"
,然后它会自动为您创建/设置所有必需的目录和suricata.yaml
。
将执行常规"make install"
,然后它将自动下载并设置Suricata可用的Emerging Threats的最新规则集。
将结合上面提到的所有内容(install-conf
和install-rules
) - 并为您提供准备运行(配置和设置)Suricata。
到这里默认安装已完成,可以直接启动。
5. 优化配置
Suricata的配置文件路径是:/etc/suricata/suricata.yaml
我们需要注意以下几个关键参数:
HOME_NET
:它指定了Suricata监控的本地网络,根据自己的网络情况进行修改。
EXTERNAL_NET
变量的!$HOME_NET
代表除本地网络之外的其他网络。
default-log-dir
:日志文件存储路径,默认是/var/log/suricata
。
outputs
:outputs选项下有很多可以输出的配置选项,包括警告、检测的数据包、产生的结果等,可以根据自己的需求进行配置。
fast.log
:默认的警告输出文件。eve.json
:JSON格式文件输出。unified2.alert
:数据包输出文件,将整个数据包以二进制的方式存储到文件中。http.log
:HTTP日志,包含了HTTP请求、HOST字段、URI字段和User-Agent字段。syslog
:这个选项决定了是否将Suricata的警告输出到syslog文件中。drop.log
:当Suricata工作在IPS模式下的时候,可以使用drop操作规则,这些drop掉的数据包信息就会存储在drop.log
文件中。
max-pending-packets
:设置Suricata能同时处理的数据包数量,最少为1,最大值取决于内存的大小,更大的内存可以设置更大的值并拥有更好的性能,默认值是1024。
default-packet-size
:对处理的每个数据包的大小进行限制。默认值是1514,也是TCP数据包的最大长度(当数据超过这个长度便会使用TCP报文重组技术)。
6. 启动Suricata
启动
参数:
测试错误规则非常推荐
添加开机自启动
7. 安装更新规则工具
注意:suricata-update
与Suricata 4.1及更高版本捆绑在一起。它也可以与旧版本一起使用。在这种情况下,必须单独安装。使用yum安装suricata,已包含suricata-update工具,需要安装pyyaml,执行命令pip install pyyaml
。
手动安装
目录和权限
为了suricata-update
正常工作,需要以下权限:
- 目录
/etc/suricata
:读访问权限 - 目录
/var/lib/suricata/rules
:读/写访问 - 目录
/var/lib/suricata/update
:读/写访问
一种选择是简单地以root身份运行suricata-update
或以root身份运行sudo
。
8. 更新规则
在不进行任何配置的情况下,默认操作suricata-update
是使用Emerging Threats Open规则集。
例:
该命令将:
- 查找suricata路径上的程序以确定其版本。
- 查找
/etc/suricata/enable.conf
、/etc/suricata/disable.conf
、/etc/suricata/drop.conf
和/etc/suricata/modify.conf
以查找要应用于下载规则的过滤器。这些文件是可选的,不需要存在。 - 下载适用于您的Suricata版本的Emerging Threats Open规则集,如果找不到则默认为4.0.0。
- 应用上面加载的启用、禁用、删除和修改过滤器。
- 写出规则
/var/lib/suricata/rules/suricata.rules
。 - 在测试模式下运行Suricata
/var/lib/suricata/rules/suricata.rules
。
9. 规则集管理
使用Oinkmaster进行规则管理
或者从这里下载并解压缩您选择的目录(或yaml配置设置)中的规则集:
或者如果您愿意,可以下载并使用VRT规则集。
每周1晚上半夜12点更新规则
建议经常更新您的规则。新兴威胁每天都会被修改,VRT每周更新一次。
10. 网络边缘部署情况
10.1. 设备接入部署
- 111.230.173.69
- 111.230.194.241
- 193.112.121.73
- 203.195.139.126
- 203.195.139.139
- 111.230.169.164
- 111.230.170.136
10.2. Nginx部署
- 119.29.9.233
- 119.29.9.168
- 119.29.116.47
11. 事件可视化
11.1. 数据采集
11.1.1. 配置Redis
11.1.2. 启动Redis
启动
添加开机自启动
11.1.3. 配置Elasticsearch
集群其中一台配置,如下所示。
11.1.4. 启动Elasticsearch
11.1.5. 检查Elasticsearch运行状态
每5分钟检查一次Elasticsearch集群状态
11.1.6. 配置Logstash
11.1.7. 启动Logstash
添加开机自启动
11.2. Kibana可视化
11.2.1. 配置Kibana
11.2.2. 启动Kibana
添加开机自启动
至此,Suricata的部署、规则更新、事件可视化环境就已经全部准备就绪了。接下来就可以访问Kibana的Web界面( http://10.104.154.91:5601)进行数据可视化分析了。