1、安装依赖项:

centos/redhat:

sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

debian:

sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev


2、下载 Suricata 源代码,然后构建它,

$ wget http://www.openinfosecfoundation.org/download/suricata-2.0.8.tar.gz

$ tar -xvf suricata-2.0.8.tar.gz

$ cd suricata-2.0.8

$ ./configure --sysconfdir=/etc --localstatedir=/var、


3、执行编译和安装:

$ make

$ sudo make install


或者直接安装full    make install-full(如果执行此命令,以下两个命令可忽略执行)


4、安装默认配置文件:

$ sudo make install-conf


5、安装规则库 ----------规则会存储在/etc/suricata/rules中:

$ sudo make install-rules


6、配置suricata:

配置文件的位置是:/etc/suricata/suricara.yaml,default-log-dir是suricata的log所在。

default-log-dir: /var/log/suricata/

在vars部分下方,你会发现几项对 Suricata 来说很重要变量。HOME_NET变量需要指定 Suricata 检查的网络。被分配给 EXTERNAL_NET 变量的 !$HOME_NET 代表除本地网络之外的其他网络。XXX_PORTS变量用来辨别不同服务所用到的端口号。需要注意的是无论使用什么端口,Suricata 都可以自动检测 HTTP 流量。所以是不是正确指定端口就显得没那么重要了。

vars:

HOME_NET: "[192.168.122.0/24]"

EXTERNAL_NET: "!$HOME_NET"

HTTP_PORTS: "80"

SHELLCODE_PORTS: "!80"

SSH_PORTS: 22

      3.host-os-policy 部分用于防御利用操作系统网络栈的自身行为来逃避检测的一些知名***手段(例如:TCP reassembly)。作为对策,通过针对目标操作系统而对检测引擎算法进行微调,现代 IDC 提供了“基于目标”的检测手段。因此,如果你知道某台主机运行了什么操作系统的话,将这个信息提供给 Suricata 就可以大幅提高检测的成功率。这就是 host-os-policy 存在的意义。本例中,默认的 IDC 策略是 Linux 系统。如果针对某个 IP 地址没有指定操作系统信息,Suricata 会默认应用基于 Linux 系统的检测策略。如下,当捕获到对 192.168.122.0/28 和 192.168.122.155通讯时,Suricata 就会应用基于 Windows 系统的检测策略。

host-os-policy:

 # These are Windows machines.

 windows: [192.168.122.0/28, 192.168.122.155]

 bsd: []

 bsd-right: []

 old-linux: []

 # Make the default policy Linux.

 linux: [0.0.0.0/0]

 old-solaris: []

 solaris: ["::1"]

 hpux10: []

 hpux11: []

 irix: []

 macos: []

 vista: []

 windows2k3: []


4.在 threading 部分下,你可以为不同的 Suricata 线程指定 CPU 关联。默认状态下,CPU 关联 是被禁止使用的 (set-cpu-affinity: no),这意味着 Suricata 会分配其线程到所有可用的 CPU 核心上。Suricata 会默认为每一个 CPU 核心创建一个检测线程。你可以通过指定 detect-thread-ratio: N 来调整此行为。此处会创建 N*M 个检测线程,M 代表 CPU 核心总数。

threading:

 set-cpu-affinity: no

 detect-thread-ratio: 1.5

通过以上对线程的设置,Suricata 会创建 1.5*M 个检测线程,M 是系统的 CPU 核心总数。


5、当你使用 pcap 捕获模式的时候,强烈建议关闭 Suricata 监听网卡上的任何的包卸载(例如 LRO/GRO)功能。这些功能会干扰包的实时捕获行为。

按照以下方法关闭 eth0 接口的 LRO/GRO 功能。

$ sudo ethtool -K eth0 gro off lro off


6、Suricata 支持许多运行模式。运行模式决定着 IDC 会使用何种线程$ sudo /usr/local/bin/suricata --list-runmodes

Suricata 使用的默认运行模式是 autofp(auto flow pinned load balancing自动流绑定负载均衡 的缩写)。这个模式下,来自某一个流的包会被分配到一个单独的检测线程中。这些流会根据未被处理的包的最低数量来分配相应的线程。


7、运行suricata:sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal


为了易于导入,还有JSON的格式的日志。tail -f /var/log/suricata/eve.json