Snort 安装与配置(CentOS 7)
Snort 是免费 NIPS 以及 NIDS 软件,具有对数据流量分析和对网络数据包进行分析处理的能力,通过灵活可定制的规则库(Rules),可对处理的报文内容进行搜索和匹配,能够检测出各种攻击,并进行实时预警。
Snort 支持三种工作模式:嗅探器、数据包记录器、网络入侵检测系统,支持多种操作系统,如 Fedora、CentOS、FreeBSD、Windows 等,本次实验使用 CentOS 7 系统安装 Snort 3。
前置工作
-
根据实际网络连接情况配置网卡信息,使能够连通互联网。
-
更新 Yum 源和软件包:
# sudo yum clean all # sudo yum makecache # sudo yum -y update
-
安装Wget,准备使用网络下载所需资源:
# sudo yum install -y wget
-
安装 EPEL 源:
# sudo yum install -y epel-release
-
安装所需组件:
# sudo yum install -y gcc flex bison zlib zlib-devel libpacp libpacp-devel pcre pcre-devel libdnet libdnet-devel tcpdump
安装 Snort&daq
-
使用官网预编译的 rpm 安装包安装 Snort&daq:
# cd ~ # wget https://snort.org/downloads/archive/snort/daq-2.0.6-1.centos7.x86_64.rpm # wget https://snort.org/downloads/archive/snort/snort-2.9.9.0-1.centos7.x86_64.rpm # sudo yum install ./daq-2.0.6-1.centos7.x86_64.rpm -y # sudo yum install ./snort-2.9.9.0-1.centos7.x86_64.rpm -y
配置 Snort
Snort官方提供三种下载规则:Community rules、Registered rules、Subscriber rules,第一种是社区规则,无需注册购买即可下载使用,第二种是注册规则,需要在官方注册账户后可下载使用,第三种必须要付费订阅才可使用。这里使用第一种 Community rules。
-
下载解压 Community rules 规则:
# cd ~ # wget https://www.snort.org/rules/community -O ~/community.tar.gz # sudo tar -xvf ~/community.tar.gz -C ~/ # sudo sudo cp ~/community-rules/* /etc/snort/rules
-
创建所需要的文件和目录,在前面的操作中,有些目录已经自动创建好了,所以创建目录时看到”目录已存在“的提示无须担心:
# sudo mkdir /var/log/snort # sudo mkdir /usr/local/lib/snort_dynamicrules # sudo mkdir /etc/snort/rules # sudo touch /etc/snort/rules/white_list.rules # sudo touch /etc/snort/rules/black_list.rules
-
编辑 Snort 配置文件
# sudo vi /etc/snort/snort.conf
找到
var RULE_PATH ../rules
及相邻的四条配置信息,修改路径变量为:var RULE_PATH /etc/snort/rules var SO_RULE_PATH /etc/snort/so_rules var PREPROC_RULE_PATH /etc/snort/preproc_rules var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules
设置日志目录:找到关键词
# config logdir:
,取消注释后将该行修改为config logdir: /var/log/snort
配置输出插件,找到关键词
# output unified2:
,取消注释后将该行 修改为output unified2: filename snort.log, limit 128
配置 Snort 启动时需要加载的自定义规则项:找到关键词
# include local.rules
,取消注释 local.rules文件,添加Community rules规则,后面的 include 均注释掉,如图:一直注释到 Step 8 附近!
编辑完成后保存退出。
测试 Snort
编写测试用 local.rules ,因为在 snort.conf 配置文件中读取了该规则文件,这个Snort规则(alert)是用来在检测传入本地网络($HOME_NET)的 ICMP 数据包的,输出一个名为"ICMP test"的警报消息,生成事件ID(sid)为10000001,当触发这个规则时,它将记录与之关联的警报或日志信息。
更多Snort规则编写方法详见官方文档。
# cd /etc/snort/rules
# echo 'alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001;)' > local.rules
使用以下命令测试 Snort 是否配置正确
# snort -T -i ens32 -c /etc/snort/snort.conf
出现 "Snort successfully validated configuration!"即为配置成功!
测试规则
# sudo snort -A console -i ens32 -u snort -g snort -c /etc/snort/snort.conf
如果您不确定要使用哪个接口,您还可以在服务器上使用以下命令:
# ip addr
输出将列出当前配置的所有网络接口。查找具有预期 IP 地址的那个,通常是 eth0
或 ens32
(虚拟机)。
在 Snort 启动并运行之后,其他设备对该 CentOS 发送ICMP请求时(通常是 ping )。您应该在运行Snort的终端中看到每个ICMP请求的告警。
04/21-11:11:37.078880 [**] [1:10000001:0] ICMP test [**] [Priority: 0] {ICMP} 192.168.31.21 -> 192.168.31.141
告警显示后,您可以使用 ctrl + C
停止Snort。
Snort 将警报记录到 /var/log/snort/snort.log.时间戳
,其中时间戳
是以 Unix 时间标记的 Snort 启动的时间点。可以使用下面的命令读取日志。由于只运行过一次 Snort,因此只有一个日志,可使用 Tab 自动补全文件名。
# snort -r /var/log/snort/snort.log.
日志显示每个 ICMP 请求的告警,其中包含源和目标 IP、时间和日期,以及以下示例中显示的一些其他信息。
在后台运行 Snort
最后,如果你想在后台运行Snort作为服务,你应该从Snort文档下载启动脚本。
如果您使用 yum 安装了 Snort,您应该已经配置了启动脚本。按如下所述启动服务。
使用以下命令获取并安装系统的启动脚本。
# wget https://www.snort.org/documents/snort-startup-script-for-centos -O ~/snortd
# sudo chmod 755 ~/snortd && sudo mv ~/snortd /etc/init.d/
重新加载系统守护程序:
# sudo systemctl daemon-reload
启动 Snort 服务
# sudo systemctl start snortd
启动脚本还包括其他常用的 systemctl
命令:stop
、restart
和status
。例如,可以使用以下命令检查服务的状态:
# sudo systemctl status snortd
恭喜,您现在应该已经成功地配置并测试了一个基于网络的入侵检测系统。然而,这篇指南仅涵盖了关于Snort和NIDS的基础知识介绍。如果想了解更多使用方法,请查看Snort文档页面上的部署指南,或者直接使用官方的Snort规则编写文档编写自己的检测规则。
版权属于:DeepFal
本文链接:https://blog.deepfal.cn/index.php/archives/939/
转载时须注明出处及本声明
2 条评论
真好呢
博主真是太厉害了!!!