suricata ips模式 编译安装运行方法+一些错误定位或注意事项
一、 suricata ips模式的编译安装运行方法
1>安装依赖
sudo apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev
build-essential autoconf automake libtool libpcap-dev libnet1-dev
libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0
make libmagic-dev libjansson-dev libjansson4 pkg-config
sudo apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0 libnetfilter-log-dev
2>编译suricata
-规则文件和配置文件
创建/var/configuration/suricata 和 /var/log/suricata 还有suricata.yaml配置的rules规则文件目录这几个目录。suricata.yaml配置文件放在/var/configuration/suricata目录下。
对应suricata.yaml配置文件里的设置:
default-log-dir: /var/log/suricata/
default-rule-path: /var/rules/
rule-files:
#rules文件地址
- /var/rules/signature-dpi/signature.rules
- /var/rules/signature-dpi/signature1.rules
IPS模式需要配置suricata.yaml的nfq选项:
nfq:
mode: accept
# repeat-mark: 1
# repeat-mask: 1
# bypass-mark: 1
# bypass-mask: 1
# route-queue: 2
batchcount: 20
fail-open: yes *#打开该选项,代表当suricata读取的nfqueue队列已满时,无法入队的包允许通过而非丢弃。*
IPS模式配置workers运行模式性能最佳:
runmode: workers
开始编译suricata:
进入suricata源码目录
chmod -R 777 *
sudo ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/var/configuration --localstatedir=/data --disable-gccmarch-native
sudo make
sudo make install
-运行测试:
执行命令:suricata -c /var/configuration/suricata/suricata.yaml -q 0 程序保持运行没有退出则运行基本正确。如果运行后程序直接结束了,则检查上面的目录是不是都正确创建了,比如default-log-dir: /var/log/suricata/。
suricata nfq模式下实际监听的数据来源来自iptables,它是通过iptables的nfqueue规则将数据包的判定权拿到,从根据规则过滤数据包给出数据包行为判定(丢弃或允许之类的),从而达到入侵防御的作用:
比如用于防火墙转发数据监控时,在iptables的FORWARD链上插入一条规则nfqueue规则:
iptables -I FORWARD -j NFQUEUE --queue-bypass
上面这条规则没有显示的指定–queue-num x,默认queue-num是0。而–queue-bypass选项作用是如果没有任何程序在监听queue 0接收数据时,则默认通过该数据包,而非丢弃。
如果nfqueue多队列的话,对应的iptables规则和suricata运行命令如下:
iptables -I FORWARD -j NFQUEUE --queue-balance 0:3 --queue-bypass
suricata -c /var/configuration/suricata/suricata.yaml -q 0 -q 1 -q 2 -q 3
二、suricata的一些常见运行命令和注意事项
1.使用suricata进行pcap包读取时的运行命令如下:
suricata -c /xx/xx/suricata.yaml -r xxxx.pcap
注:suricata读pcap包时,配置文件的运行模式不可以是workers模式。
2.使用suricata进行网卡抓包的运行命令如下:
suricata -c /xx/xx/suricata.yaml -i eth0
3.suricata的运行错误,如果没有任何错误报错输出就直接结束,可以检查下配置文件的日志是否没打开,default-log-level字段设置成none,将不输出任何日志提示:
# Logging configuration. This is not about logging IDS alerts/events, but
# output about what Suricata is doing, like startup messages, errors, etc.
logging:
# The default log level, can be overridden in an output section.
# Note that debug level logging will only be emitted if Suricata was
# compiled with the --enable-debug configure option.
#
# This value is overridden by the SC_LOG_LEVEL env var.
#default-log-level: notice
default-log-level: debug #如果设置成none是没有任何日志输出