DPDK-Suricata应用部署
DPDK安装部署
1、 DPDK下载
下载dpdk-stable-18.02.2.tar.gz并解压,进入解压后dpdk目录下。
https://fast.dpdk.org/rel/dpdk-18.02.2.tar.xz
2、 设置环境变量
export RTE_SDK=$PWD,export RTE_TARGET=x86_64-native-linuxapp-gcc。
建议在/etc/profile中设置,设置完后执行source /etc/profile永久生效。
可执行echo $RTE_SDK进行验证。
3、 设置大叶内存:
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 1024 >
/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
4、 编译DPDK:
make config T=x86_64-native-linuxapp-gcc
make
make install T=x86_64-native-linuxapp-gcc
5、 安装kernel module:
modprobe uio
insmod build/kmod/igb_uio.ko
6、 绑定网卡:
系统建议设置三块网卡,两个给DPDK使用。
ifconfig ens33 down
ifconfig ens36 down
./usertools/dpdk-devbind.py --bind=igb_uio ens33(或者0000:02:01.0)
./usertools/dpdk-devbind.py --bind=igb_uio ens36(或者0000:02:04.0)
执行./usertools/dpdk-devbind.py –s进行验证查看:
7、 测试验证
cd examples/helloword
rm –rf build/ (如果build文件夹存在)
make
./build/helloworld
出现以下内容则安装成功:
DPDK-Suricata3.0安装部署
1、 下载DPDK-Suricata_3.0并解压,解压后进入DPDK-Suricata_3.0-master/suricata-3.0/
2、 编译DPDK-Suricata_3.0:
autoconf
./configure –enable-dpdkintel
make –j 10
3、 配置设置:
配置文件suricata.yaml为DPDK-Suricata-3.0整体配置文件。
配置默认日志路径:default-log-dir: /usr/local/var/log/suricata/ (该设置在suricata.yaml中)
mkdir /usr/local/etc/suricata/
cp ./classification.config /usr/local/etc/suricata/
cp ./reference.config /usr/local/etc/suricata/
cp ./suricata.yaml /usr/local/etc/suricata/
cp ./threshold.config /usr/local/etc/suricata/
mkdir /usr/local/var/log/suricata/
在suricata.yaml中配置dpdkintel,内容如下图:
4、 测试DPDK-Suricata-3.0是否安装成功:
执行命令./src/suricata –list-runmodes出现如下效果:
执行命令./src/suricata –list-dpdkintel-ports出现如下效果:
5、 自定义规则测试DPDK-Suricata-3.0检测引擎效果:
在/usr/local/etc/suricata/rules下创建test-baidu.rules文件,内容为:
alert http any any -> any any (msg:"hit baidu.com..."; content:"baidu"; reference:url, www.baidu.com;)
安装流量发包工具(科来提供),抓取访问百度网站的pcap包文件,然后执行发包命
令:tcpreplay -i ens32 -l 0 -M 10 baidu.pcap
ens32为正常网口,区分ens33、ens36,baidu.pcap为抓取的百度流量包。
然后执行命令:./src/suricata -c suricata.yaml -s /usr/local/etc/suricata/rules/test-baidu.rules –dpdkintel
在/usr/local/var/log/suricata目录下生成以下内容则检测引擎运行成功:
其中fast.log内容为生成的告警信息:
Scirius安装部署
Scirius用户指南:https://scirius.readthedocs.io/en/latest/
1、 安装相关依赖:
安装python-pip,pypi.org上下载pip19.2.1.tar.gz解压安装。
下载scirius http://www.github.com/StamusNetworks/scirius,解压。
切换到scirius目录:cd scirius,安装django和依赖项,执行:pip install –r requirements.txt
如果出现:ERROR: requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25.1 which is incompatible
建议升级pip install --upgrade urllib3
要使用处理suricata restart的suri _reloader脚本,还需要安装pyinotify, 执行:pip install pyinotify
安装gitdb模块、GitPython模块 :pip install gitdb、pip install gitpython==0.3.1-beta2
对于npm 和 webpack,需要安装稳定版本的npm和webpack 版:
yum install npm
全局安装webpack 和webpack-cli:
npm install webpack@3.11 -g
npm install webpack-cli -g
建议也局部安装一次:
npm install webpack@3.11 --save-dev
npm install webpack-cli --save-dev
更新依赖: npm install
2、 安装scirius
切换到scirius/hunt 下执行:cd scirius/hunt 、 npm install 、npm run build
如果此时失败,提示为: "file": "node_modules/patternfly/dist/sass/_patternfly.scss", 是出于路径问题,需要增加对应路径.在 hunt/package.json文件中,在字段"scripts"增加路径:
--include-path=node_modules/bootstrap-sass/assets/stylesheets/
--include-path=node_modules/font-awesome-sass/assets/stylesheets/
重新执行npm run build
3、运行scirius
Scirius根目录下,启动Django数据库:python manage.py migrate
创建超级用户:python manage.py createsuperuser
启动应用之前,运行webpack构建bundle: webpack、python manage.py collecstatic
启动Scirius CE: python manage.py runserver
程序侦听可访问地址:python manage.py runserver 192.168.88.131:8000
关闭防火墙,在浏览器中访问:192.168.88.131:8000出现Scirius界面:
Sources: 规则源模块,用于管理规则源的启动停用。
Rulesets:规则集模块,用于规则集及规则的各项管理。
Suricata:suricata模块,用与管理suricata与scirius联动。
4、suricata设置:
在suricata.yaml文件中配置:
所有的规则都合并在scirius.rules文件中。
5、后续应用安装:
后续要安装部署ElasticSearch、Kibana、Evebox用于告警信息的呈现管理。
相关配置:
scirius-master/scirius/settings.py文件
原文地址:https://www.cnblogs.com/tolun/p/11418267.html
- 洛谷P2818 天使的起誓
- 连续子数组的最大和
- 10.25解题报告
- React第三方组件5(状态管理之Redux的使用①简单使用)
- JavaScript设计模式与开发实践 - 观察者模式
- React第三方组件4(状态管理之Reflux的使用⑤异步操作)
- Leetcode-Easy 804. Unique Morse Code Words
- JavaScript设计模式与开发实践 - 策略模式
- 二叉树的深度
- [html5] (Notification) 桌面通知
- React第三方组件4(状态管理之Reflux的使用④TodoList下)
- Leetcode-Easy 155. Min Stack
- Leetcode-Easy 72. Edit Distance
- React第三方组件4(状态管理之Reflux的使用③TodoList中)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 8.1下搭建LEMP(Linux+Nginx+MySQL+PHP)环境(教程详解)
- Linux echo文本处理命令的使用及示例
- redis妙用-string类型
- redis妙用-hash类型
- redis妙用-list类型
- redis妙用-set类型
- JVM调优实战:解决CMS concurrent-abortable-preclean LongGC的问题
- redis妙用-zset类型
- 【线上排查实战】AOP切面执行顺序你真的了解吗
- 使用markdown,knitr和pandoc在R语言中编写可重现的报告
- R语言广义线性模型(GLMs)算法和零膨胀模型分析
- R语言中广义线性模型(GLM)中的分布和连接函数分析
- R语言自适应平滑样条回归分析
- R语言区间数据回归分析
- R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable