在CentOS 7.6生产环境上部署Suricata IDS模式经验分享(实操干货)
以下是在CentOS 7.6生产环境上部署Suricata IDS的详细步骤:
1. 系统准备
# 更新系统(生产环境需谨慎评估是否执行)
sudo yum update -y
# 安装EPEL仓库(若已安装可跳过)
sudo yum install epel-release -y
# 安装必要依赖
sudo yum install gcc libpcap-devel pcre-devel libyaml-devel libcap-ng-devel \
libnet-devel libnetfilter_queue-devel lua-devel jansson-devel nss-devel \
rustc cargo openssl-devel python3 python3-devel wget git -y
2. 安装Suricata
方法一:通过EPEL仓库安装(推荐稳定版本)
sudo yum install suricata -y
方法二:手动编译安装(获取最新版本)
# 下载最新版源码(替换为实际版本号)
wget https://www.openinfosecfoundation.org/download/suricata-7.0.0.tar.gz
tar xzvf suricata-7.0.0.tar.gz
cd suricata-7.0.0
# 编译安装
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--enable-nfqueue --enable-lua --enable-geoip --enable-rust
make
sudo make install-full
# 创建服务文件(若通过源码安装)
sudo cp contrib/suricata.service /etc/systemd/system/
sudo systemctl daemon-reload
3. 配置Suricata
# 备份默认配置
sudo cp /etc/suricata/suricata.yaml /etc/suricata/suricata.yaml.bak
# 编辑主配置文件
sudo vi /etc/suricata/suricata.yaml
关键配置项修改:
# 设置网络接口(如ens33)
vars:
interface: ens33
# 定义HOME_NET(根据实际内网IP调整,多个IP用逗号隔开)
HOME_NET: "[x.x.x.x/24,x.x.x.x/8]"
# 规则文件路径(默认已配置,如有多个规则文件,可以下述方式添加)
rule-files:
- suricata.rules
- suricata1.rules
- suricata2.rules2
4. 配置规则集
# 下载ET Open规则集(最好定期下载最新ET规则集)
sudo suricata-update
# 或手动下载规则(可选)
# sudo wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
# sudo tar -xzvf emerging.rules.tar.gz -C /etc/suricata/rules/
5. 启动服务
# 测试配置文件语法
sudo suricata -T -c /etc/suricata/suricata.yaml -v
# 启动服务并设置开机自启
sudo systemctl enable suricata
sudo systemctl start suricata
# 检查服务状态
sudo systemctl status suricata
6. 配置日志轮转
# 编辑Logrotate配置
sudo vi /etc/logrotate.d/suricata
# 添加以下内容
/var/log/suricata/*.log {
daily
rotate 7
missingok
compress
delaycompress
sharedscripts
postrotate
/bin/kill -HUP $(cat /var/run/suricata.pid 2>/dev/null) 2>/dev/null || true
endscript
}
7. 验证运行状态
# 查看实时日志
tail -f /var/log/suricata/fast.log
# 生成测试流量触发告警(可选)
curl http://testmynids.org/uid/index.html
8. 高级优化(可选)
调整线程数
# 编辑
/etc/suricata/suricata.yaml
detect-engine:
- threaded: auto
detect-thread-ratio: 1.0
启用硬件加速(需网卡支持)
sudo ethtool -K ens33 rx-gro off tx off sg off
配置IPS模式(需nfqueue或af-packet,下次出专门针对IPS模式的教程)
af-packet:
- interface: ens33
threads: auto
cluster-id: 99
cluster-type: cluster_flow
9. 防火墙配置
# 允许Suricata监听流量(如镜像端口)
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
**注意事项**
1. **生产环境测试**:建议先在非业务高峰期部署,观察CPU/内存使用率。
2. **规则更新**:配置定时任务更新规则:
sudo crontab -e
# 每天凌晨更新规则
0 0 * * * /usr/bin/suricata-update
3. SELinux调整:若启用SELinux,需适当调整策略:
sudo setsebool -P suricata_can_network_raw 1
完成以上步骤后,Suricata将作为IDS运行。建议通过日志分析工具(如ELK)进一步处理告警数据。
附上常用操作命令:
#开启服务
sudo systemctl start suricata
# 检查服务状态
sudo systemctl status suricata
#关闭服务
sudo systemctl stop suricata
#更新规则集
sudo suricata-update
# 启动服务并设置开机自启
sudo systemctl enable suricata
sudo systemctl start suricata
# 禁用Suricata开机自启
sudo systemctl disable suricata
#重启服务
sudo systemctl restart suricata
#只更新配置文件
sudo suricata -c /etc/suricata/suricata.yaml -T