当前位置:首页>Linux>Linux 部署 Snort和基础命令

Linux 部署 Snort和基础命令

  • 2026-10-21 13:29:55
Linux 部署 Snort和基础命令

一、安装部署

1. Ubuntu/Debian 系统

# 安装 Snort
sudo apt update
sudo apt install snort -y

# 安装开发工具和依赖
sudo apt install build-essential libpcap-dev libpcre3-dev libdumbnet-dev zlib1g-dev liblzma-dev openssl libssl-dev -y

2. CentOS/RHEL 系统

# 启用 EPEL 仓库
sudo yum install epel-release -y

# 安装 Snort
sudo yum install snort -y

# 或从源码编译
sudo yum install gcc flex bison zlib zlib-devel libpcap libpcap-devel pcre pcre-devel libdnet libdnet-devel openssl openssl-devel -y

3. 源码编译安装

# 下载源码
wget https://www.snort.org/downloads/snort/snort-2.9.20.tar.gz
tar -xvzf snort-2.9.20.tar.gz
cd snort-2.9.20

# 配置和编译
./configure --enable-sourcefire
make
sudomake install

二、基础配置

1. 网络接口配置

# 查看网络接口
ip addr show

# 设置网卡为混杂模式(可选)
sudo ip link set eth0 promisc on

2. 配置文件

# 主配置文件位置
/etc/snort/snort.conf

# 规则文件位置
/etc/snort/rules/
/usr/local/etc/rules/  # 源码安装默认位置

3. 修改配置文件

编辑 /etc/snort/snort.conf:

sudovim /etc/snort/snort.conf

修改以下关键配置:
# 设置网络变量
ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET any

# 设置规则路径
var RULE_PATH /etc/snort/rules

三、基础命令

1. 测试配置文件

# 测试配置文件语法
sudo snort -T-c /etc/snort/snort.conf

# 指定接口测试
sudo snort -T-c /etc/snort/snort.conf -i eth0

2. 运行模式

嗅探模式(数据包查看)
# 基本嗅探
sudo snort -v-i eth0

# 显示数据链路层头部
sudo snort -v-e-i eth0

# 显示应用层数据(ASCII)
sudo snort -v-e-X-i eth0
数据包记录模式
# 记录到日志目录
sudo snort -dev-l /var/log/snort -i eth0

# 二进制模式记录(pcap格式)
sudo snort -i eth0 -l /var/log/snort -b
NIDS模式(入侵检测)
# 使用默认配置
sudo snort -c /etc/snort/snort.conf -i eth0

# 在后台运行
sudo snort -c /etc/snort/snort.conf -i eth0 -D

# 指定告警输出方式
sudo snort -c /etc/snort/snort.conf -i eth0 -A console      # 控制台输出
sudo snort -c /etc/snort/snort.conf -i eth0 -A fast         # fast模式日志
sudo snort -c /etc/snort/snort.conf -i eth0 -A full         # 完整模式日志

3. 规则管理

# 启用/禁用规则文件
# 在 snort.conf 中修改:
# include $RULE_PATH/local.rules
# 注释掉不需要的规则: # include $RULE_PATH/exploit.rules

# 自定义规则
sudovim /etc/snort/rules/local.rules
# 示例规则:alert icmp any any -> $HOME_NET any (msg:"ICMP Packet detected"; sid:1000001; rev:1;)

4. 日志分析

# 查看告警日志
tail -f /var/log/snort/alert

# 使用 Snort 读取二进制日志
sudo snort -r /var/log/snort/snort.log.1234567890

# 转换为 ASCII 格式
sudo snort -r /var/log/snort/snort.log.1234567890 -v

5. 进程管理

# 查看 Snort 进程
ps aux | grep snort

# 停止 Snort
sudo pkill snort

# 查看 Snort 监听的端口
sudo netstat -tulpn | grep snort

四、实用命令示例

1. 完整NIDS部署命令

sudo snort -c /etc/snort/snort.conf \
-i eth0 \
-A fast \
-l /var/log/snort \
--daq afpacket \
--daq-mode passive

2. 性能测试

# 测试丢包率
sudo snort -c /etc/snort/snort.conf -i eth0 -T--perfmon-file snort_perf.log

# 查看性能统计
sudo snort -c /etc/snort/snort.conf -i eth0 --perfmon

3. 规则测试

# 测试单个规则
sudo snort -c /etc/snort/snort.conf -i eth0 -k none --alert-with-interface-name

五、故障排除

# 查看 Snort 版本
snort -V

# 查看帮助
snort -h
snort --help

# 检查依赖库
ldd /usr/sbin/snort

# 查看日志
sudo tail -f /var/log/snort/snort.log
sudo less /var/log/syslog | grep snort

六、常用选项说明


选项说明
-c <config>指定配置文件
-i <interface>指定网络接口
-l <logdir>指定日志目录
-A <alert_mode>告警模式:fast/full/console/none
-b二进制模式记录
-d显示应用层数据
-e显示数据链路层头部
-v详细模式
-X十六进制和ASCII输出
-D守护进程模式
-T测试模式
-r <pcap>读取pcap文件
-k none忽略校验和错误

七、快速启动脚本示例

创建 /etc/systemd/system/snort.service:

[Unit]
Description=Snort NIDS Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/snort -c /etc/snort/snort.conf -i eth0 -A fast -l /var/log/snort
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable snort
sudo systemctl start snort

最新文章

随机文章