> 文章列表 > Su+ELK实现网络监测(1)——Suricata安装与配置

Su+ELK实现网络监测(1)——Suricata安装与配置

Su+ELK实现网络监测(1)——Suricata安装与配置

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 updateyum 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 -xvf 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

执行中可能会出现如下报错

Su+ELK实现网络监测(1)——Suricata安装与配置

原因是安装的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

如果出现如下规则报错,表示你的规则还没有下来,编译时会找不到规则,所以报错 暂时跳过,后面会去更新规则的,继续下一步即可
Su+ELK实现网络监测(1)——Suricata安装与配置

5. 修改配置文件

cd /etc/suricata/
cp suricata.yaml suricata.yaml.bak
vim suricata.yaml

》启用网段、服务、端口:

  • HOME_NET选项,需要自行确定哪些网段或特定网址可用来监控
    Su+ELK实现网络监测(1)——Suricata安装与配置

》配置日志输出器(default-log-dir: /var/log/suricata/,也可以修改为其他地方)

  • 建议修改到/var/data/suricata/ (需要创建该目录:mkdir -p /var/data/suricata)
  • suricata日志记录哪些信息,可参考:https://zhuanlan.zhihu.com/p/344571466
    Su+ELK实现网络监测(1)——Suricata安装与配置Su+ELK实现网络监测(1)——Suricata安装与配置
    Su+ELK实现网络监测(1)——Suricata安装与配置Su+ELK实现网络监测(1)——Suricata安装与配置
    stats.log文件统计所有的数据来源,占用存储,可关掉

》设置规则目录

  • var/lib/suricata/rules 是放置定期更改的规则位置,可以每天下载/更新规则集
  • rule-files # 用来选择启用哪些规则(默认只有suricata.rules文件)
    Su+ELK实现网络监测(1)——Suricata安装与配置

6. 启动测试

suricata -T

如果启动测试,出现如下报错:

  • 报错一:
    Su+ELK实现网络监测(1)——Suricata安装与配置
    则定位到前面的配置文件suricata.yaml中对应某行出现空格或者其他格式出错,因此需要回到对应的行中进行修改!

  • 报错二:
    suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory
    那么重新执行 sudo ldconfig 命令(第二步已经安装好的Luajit)

  • 报错三:
    如果出现一大串错,比如:
    Su+ELK实现网络监测(1)——Suricata安装与配置 那就要先安装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,出现如下报错:

Su+ELK实现网络监测(1)——Suricata安装与配置

证明在安装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

    如果返回如下,则表示测试成功:
    Su+ELK实现网络监测(1)——Suricata安装与配置

9. 启动

suricata -c suricata.yaml -i eth0			# eth0为网卡的名称  该命令需要在suricata文件夹下允许才行
/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0

如果返回如下,则表示启动成功:
Su+ELK实现网络监测(1)——Suricata安装与配置

  • 若需要停止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)