Suricata安装配置文档
- 一、环境准备
- 1. 基础环境安装
- 2. 安装基础组件
- 二、Luajit部署
- 1. LuaJIT的安装
- 2. 需要更新动态库
- 三、suricata部署
- 1. 安装相关依赖
- 2. 下载、编译并安装suricata
- 3. 执行
- 4. 安装其他组件
- 5. 修改配置文件
- 6. 启动测试
- 7. 安装suricata-update
- 8. 更新规则集
- 9. 启动
- 四、参考资料
Suricata是一款基于TCP/IP协议栈解析与安全数据分析引擎:
- 能够进行实时入侵检测(IDS)、内联入侵预防(IPS)、网络安全监控(NSM)和离线PCAP处理,全面支持Snort规则;
- Suricata使用强大而广泛的规则和签名语言检查网络流量,并具有强大的Lua脚本支持来检测复杂的威胁;
- 使用标准的输入和输出格式(如yaml和json),与现有的siem、splunk、logstash/elasticsearch、kibana和其他数据库等工具的集成变得很容易;
- 入侵检测规则更新活跃,具有较强的社区支持;
一、环境准备
1. 基础环境安装
yum update
yum upgrade
2. 安装基础组件
yum -y install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel wget vim
二、Luajit部署
LuaJIT是采用C语言写的Lua代码的解释器,LuaJIT试图保留Lua的精髓–轻量级,高效和可扩展
1. LuaJIT的安装
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar -zxf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5/
sudo make && make install
2. 需要更新动态库
对文件 /etc/ld.so.conf 进行修改,添加相应的路径 /usr/local/lib
vim /etc/ld.so.conf
# 在该conf文件下,添加如下路径,保存退出
/usr/local/lib
# 运行如下命令加载
sudo ldconfig
三、suricata部署
1. 安装相关依赖
yum -y install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel epel-release lz4-devel rustc cargo libmaxminddb-devel
2. 下载、编译并安装suricata
wget https://www.openinfosecfoundation.org/download/suricata-6.0.2.tar.gz
tar -zxf suricata-6.0.2.tar.gz
cd suricata-6.0.2
编译命令, 注意,这里的默认参数尽量不要改,否则后面各种问题排查起来也是要命的
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-geoip --enable-luajit --with-libluajit-includes=/usr/local/include/luajit-2.0/ --with-libluajit-libraries=/usr/local/lib/ --with-libhs-includes=/usr/local/include/hs/ --with-libhs-libraries=/usr/local/lib/ --enable-profiling
可能会提示某些依赖包有需要重新安装,安装完再重新 ./configure上面内容进行编译
yum install -y libmaxminddb-devel
yum install -y epel-release
yum install -y rustc cargo
3. 执行
make && make install
执行中可能会出现如下报错:
原因是安装的suricata-6.0.2版本,rustc版本不能太高,所以把rustc降级到1.50.0版本使用,解决方法:
参考自:https://blog.csdn.net/isxiaole/article/details/123282267
yum -y remove cargo.x86_64
curl https://sh.rustup.rs -sSf | sh # 等待加载,选 yes,选1(输入默认项1,完成余下的安装)
source $HOME/.cargo/env
rustup install 1.52.0
export RUSTUP_TOOLCHAIN=1.52.0
完成上述版本降级后,再重新
./configure
编译第二步的命令,成功后接着执行make && make install
4. 安装其他组件
# 这里执行这一个就够了,它相当于安装:configuration、rules、provide等
make install-full # 取代了make install-conf、make install-rules
如果出现如下规则报错,表示你的规则还没有下来,编译时会找不到规则,所以报错 暂时跳过,后面会去更新规则的,继续下一步即可
5. 修改配置文件
cd /etc/suricata/
cp suricata.yaml suricata.yaml.bak
vim suricata.yaml
》启用网段、服务、端口:
- HOME_NET选项,需要自行确定哪些网段或特定网址可用来监控
》配置日志输出器(default-log-dir: /var/log/suricata/,也可以修改为其他地方)
- 建议修改到/var/data/suricata/ (需要创建该目录:mkdir -p /var/data/suricata)
- suricata日志记录哪些信息,可参考:https://zhuanlan.zhihu.com/p/344571466
stats.log文件统计所有的数据来源,占用存储,可关掉》设置规则目录
- var/lib/suricata/rules 是放置定期更改的规则位置,可以每天下载/更新规则集
- rule-files # 用来选择启用哪些规则(默认只有suricata.rules文件)
6. 启动测试
suricata -T
如果启动测试,出现如下报错:
报错一:
则定位到前面的配置文件suricata.yaml中对应某行出现空格或者其他格式出错,因此需要回到对应的行中进行修改!报错二:
suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory
那么重新执行 sudo ldconfig 命令(第二步已经安装好的Luajit)报错三:
如果出现一大串错,比如:
那就要先安装suricata-update 并 更新规则集(见下一步)
7. 安装suricata-update
pip install --upgrade suricata-update
若没有安装pip,先要安装pip才行
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
# 核验是否成功
which pip # 查看安装路径
pip -V # 查看版本号
若执行pip install --upgrade suricata-update,出现如下报错:
证明在安装pip的时候,pip包里已经包含suricata-update,也可以pip list看下是否真的包含,如果存在,可以直接执行下面第8步骤
也可参考:https://blog.csdn.net/u010469993/article/details/102623270 ,删除再重装suricata-update
cd到pip库目录,删除底层工具distutils安装自带的suricata_update包 rm -rf suricata_update-1.2.1-py2.7.egg-info
8. 更新规则集
suricata-update是官方更新的rule规则命令,更新的配置文件存放在 /var/lib/suricata/rules 中,文件为:classification.config和suricata.rules
- suricata-update的一些使用简单介绍如下:
suricata-update update-sources # 更新规则源
suricata-update list-sources # 列出suricata-update支持的所有的规则源
suricata-update enable-source et/open # 启用某个规则集(我这边启用的是ET的规则集)
suricata-update enable-source oisf/trafficid
suricata-update list-enabled-sources # 把suricata-update这边能用的规则全部开启
suricata-update disable-source et/pro # 关闭某个规则源
suricata-update remove-source et/pro # 删除某个规则源
安装完suricata-update后,根据需要开启 特定/全部 规则(开启规则命令如上中间三条
),规则开启完成后才能执行下面的更新规则集
-
更新规则集
suricata-update
-
测试
suricata -T
如果返回如下,则表示测试成功:
9. 启动
suricata -c suricata.yaml -i eth0 # eth0为网卡的名称 该命令需要在suricata文件夹下允许才行
/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0
如果返回如下,则表示启动成功:
- 若需要停止suricata,运行如下命令即可:
ps -ef | grep suricata|grep -v grep # 查看suricata的执行进程
kill -9 id # 杀死suricata的进程id
rm -f /var/run/suricata.pid # 文件锁,防止重复启动
四、参考资料
- 官方文档:Suricata User Guide — Suricata 6.0.0 documentation
- 官方中文文档:7.1. 使用Suricata更新进行规则管理 — Suricata 7.0.0-dev 文档 (osgeo.cn)
- 官方中文文档:10.1. Suricata.yaml — Suricata 7.0.0-dev 文档 (osgeo.cn)
- Suricata+ELK集群监控办公网流量CSDN博客
- 使用Suricata和ELK进行流量检测 - 知乎 (zhihu.com)
- Suricata规则介绍、以及使用suricata-update做规则管理 - 知乎 (zhihu.com)
- Suricata配置文件suricata.yaml说明 - 简书 (jianshu.com)