前言

在centos-stream-9上安装snort2.9,跳转Blog:

centos-stream-9下安装snort2-9【arm虚拟机版】

环境配置

CentOS: CentOS-Stream-9, ARM, Parallels虚拟机

CentOS操作用户:在root用户下进行snort部署

snort版本:snort-2.9.20

daq版本: daq-2.0.7

CentOS源:阿里源

规则集版本: 29200

Tips: 注意!规则集和snort版本要对应上,因为不同版本的可能会有一些新规则不能匹配上,就不能顺利运行。参考官网,每个新版本的说明,包括规则集的说明:

规则集

版本说明

snort工作模式、配置文件介绍

snort工作模式、配置文件 Blog跳转链接:

snort的工作模式

snort配置文件(定义、使用变量)

配置snort

更新共享库

sudo ldconfig

创建符号连接

snort被安装到 /usr/local/bin/snort 创建符号链接到 /usr/sbin/snort

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

创建snort用户

groupadd snort
useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

参数说明:

-r:创建一个系统账户

-s:用户登录后使用的shell名称(默认值不填写,这样系统会指定预设的登入shell,根据/etc/default/useradd预设值)【sbin/nologin 代表这个用户无法使用bash或其他shell来登陆系统,即使给了密码也不行,但是可以使用系统资源。只是不能登陆主机而已。】

-g:group名称【添加到snort组下】

-c:comment,注释说明栏

创建snort文件夹

创建snort文件夹用以存放snort配置文件

mkdir -p /etc/snort/rules
mkdir /var/log/snort
mkdir /usr/local/lib/snort_dynamicrules

给文件夹赋予权限

chmod -R 5775 /etc/snort
chmod -R 5775 /var/log/snort
chmod -R 5775 /usr/local/lib/snort_dynamicrules
chown -R snort:snort /etc/snort
chown -R snort:snort /var/log/snort
chown -R snort:snort /usr/local/lib/snort_dynamicrules

775权限:

root有读、写、执行权限

组用户有读、写、执行权限

其他用户有读、执行权限

读取权限 r=4。写入权限 w=2。执行权限 x=1

第一个数字 :拥有者权限(root,文件所有者)

第二个数字 :组用户权限(与文件所有者属于同一个用户组)

第三个数字 :其他用户权限


将这些文件的所属修改为之前创建的snort组里面的snort用户

查看文件所属 ls -l <file>

第一列含义:

第一个字母含义:

​ 第一个字母d:意味着内容是目录或文件

​ 如果第一个是-:意味着它的内容是文件

​ 第一个是l:意味着内容是链接文件

后面的内容是文件所属

​ (对应着三个数字权限775)

​ 前三个字母是文件拥有者权限

​ 中间三个是文件所有组权限

​ 后三个是其他人访问文件的权限


第二列含义:多少链接指向这个文件

第三列含义:谁是这个文件/文件夹的所有者

第四列含义:谁是这个文件/文件夹所有组

第五列含义:这个文件/文件夹的以字节为单位的大小。目录的大小总是4096字节

第六列含义:文件最后修改时间

第七列含义:文件名或目录名

创建黑白名单和规则

touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/black_list.rules
touch /etc/snort/rules/local.rules

创建告警文件夹

touch /var/log/snort/alert
cd /var/log/snort
chown snort.snort alert
chmod 700 alert

复制配置文件

从下载的snort-2.9.20文件夹里复制配置文件

cp ~/snortFile/snort-2.9.20/etc/*.conf* /etc/snort
cp ~/snortFile/snort-2.9.20/etc/*.map /etc/snort

下载snort规则集

snort官网提供了三种规则集:

  • 社区版:免费的,但是只是很简单的规则限制
  • 注册版:免费注册后可以获得code,用code可以下载注册版规则
  • 订阅版:需要订阅,才可以下载规则

我选择了注册版,以下都以注册版进行演示。

注册链接

oinkcode

注册成功后,会给一个oinkcode,在个人信息中可以找到

然后就可以下载规则了,将oinkcode=xxx,xxx换成自己的

wget https://snort.org/downloads/registered/snortrules-snapshot-29200.tar.gz?oinkcode=xxx -O ~/registered.tar.gz

Tips: 如果下载完成后解压失败的话,可以在物理机下载好,然后scp上传

scp /Users/gryffinbit/Downloads/snortrules-snapshot-29200.tar.gz root@10.211.55.12:/root/

复制规则

下载完成后,将规则解压到snort配置文件夹 /etc/snort

tar xvf snortrules-snapshot-29200.tar.gz -C /etc/snort

配置网络和规则

已经有了配置以及规则文件,需要修改snort.conf的变量。

vim /etc/snort/snort.conf

修改snort.conf的内容

设置需要保护的ip地址,先用这台centos的ip,作为测试时的ip

# Setup the network addresses you are protecting
ipvar HOME_NET server_public_ip/24
# Set up the external network addresses. Leave as "any" in most situations
ipvar EXTERNAL_NET !$HOME_NET

# Path to your rules files (this can be a relative path)
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
# Set the absolute path appropriately
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

在setp6里,设置输出

# unified2
# Recommended for most installs
output unified2: filename snort.log, limit 128

注释掉Step #7里面没有的规则

sudo sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf

翻到最下面,找到规则集列表。打开local.rules的注释,以允许snort装载个性化规则集。

include $RULE_PATH/local.rules

保存编辑:wq

测试是否能正常工作

snort -T -c /etc/snort/snort.conf

运行成功

添加基础规则进行测试

vim /etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)

开启snort

snort -A console -i enp0s6 -u snort -g snort -c /etc/snort/snort.conf

采用-A console 来打印出告警信息。需要选择正确的网络接口,比如eth0

见Blog:SNAT网络环境配置。接口选用了enp0s6(连接内网的接口)

发起攻击

关于网口的选择。nat server是做一个地址转换的,使得内网机器可以访外网。所以在做这个规则的时候,snort.conf HOME_NET里,如果是想对外部访问内部的流量进行监控,就将这个IP,写成nat server外网网卡的IP。因为外网实际不能直接访问到内网的机器的,都是只能访问到那个网关的公网IP。所以在SNAT这个网络环境里,想限制物理机(web server)访问内部机器的话,就要snort监听enp0s5这个外网网卡,snort.conf的IP写外网网关IP。如果是想让内部的网络之间有限制,就写内网的网段,监听enp0s6

查看日志

snort会将检测结果记录在日志

snort -r /var/log/snort/snort.log.timestamp

timestamp是时间戳,每个日志会有时间戳的记录

* 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

开启服务

sudo systemctl start snortd

也可以查看状态、停止服务、开启服务等

 stop, restart, status
sudo systemctl status snortd

附录:snort 文件部署路径

snort安装包所在路径、相关文档

/home/parallels/snortFile
  • doc:snort的一些说明文档所在文件夹

snort规则文件、配置文件

cd /etc/snort

snort日志文件

cd /var/log/snort

snort运行

/usr/local/bin/snort

参考文章

snort官方配置

评论