由于安全威胁持续不断,配备入侵检测系统(IDS)已成为如今数据中心环境下最重要的要求之一。然而,随着越来越多的服务器将网卡升级到10GB/40GB以太网技术,我们越来越难在大众化硬件上以线速实施计算密集型入侵检测。 本篇文章将演示如何在linux服务器上安装和配置Suricata IDS。 在linux上安装Suricata IDS 不妨用源代码构建Suricata。你先要安装几个所需的依赖项,如下所示。 在Debian、Ubuntu或linux Mint上安装依赖项 $ 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在CentOS、Fedora或RHEL上安装依赖项 $ 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一旦你安装了所有必需的程序包,现在可以安装Suricata了,如下所示。 首先,从suricata-ids(https://)安装可用的社区规则集的最新快照,并将它们存储在/etc/suricata/rules下。 首次配置Suricata IDS 现在就可以配置Suricata了。配置文件位于/etc/suricata/suricata.yaml。使用文本编辑工具打开文件,以便编辑。 $ sudo vi /etc/suricata/suricata.yaml 下面是一些基本的设置,供你开始入门。 “default-log-dir”关键字应该指向Suricata日志文件的位置。 default-log-dir: /var/log/suricata/在“vars”这部分下面,你会找到Suricata使用的几个重要变量。“HOME_NET”应该指向由Suricata检查的本地网络。“!$HOME_NET”(被分配给EXTERNAL_NET)指本地网络以外的任何网络。“XXX_PORTS”表明不同服务所使用的一个或多个端口号。请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。 vars:HOME_NET: [192.168.122.0/24]EXTERNAL_NET: !$HOME_NETHTTP_PORTS: 80SHELLCODE_PORTS: !80SSH_PORTS: 22“host-os-policy”这部分用来防范一些利用操作系统的网络堆栈的行为(比如TCP重组)来规避检测的常见攻击。作为一项应对措施,现代IDS想出了所谓的“基于目标的”检测,检查引擎根据流量的目标操作系统,对检测算法进行微调。因而,如果你知道每个本地主机运行什么操作系统,就可以将该信息提供给Suricata,从而有望提高其检测速度。这时候用到了“host-os-policy“部分。在该例子中,默认的IDS策略是linux;如果不知道某个IP地址的操作系统信息,Suricata就会运用基于linux的检查策略。如果捕获到192.168.122.0/28和192.168.122.155的流量,Suricata就会运用基于Windows的检查策略。 host-os-policy:# 这些是Windows机器。windows: [192.168.122.0/28, 192.168.122.155]bsd: []bsd-right: []old-linux: []# 将linux作为默认策略。linux: [0.0.0.0/0]old-solaris: []solaris: [::1]hpux10: []hpux11: []irix: []macos: []vista: []windows2k3: []在“threading”这部分下面,你可以为不同的Suricata线程指定CPU亲和性(CPU affinity)。默认情况下,CPU亲和性被禁用(“set-cpu-affinity: no”),这意味着Suricata线程将被安排在任何可用的CPU核心上。默认情况下,Suricata会为每个CPU核心创建一个“检测”线程。你可以调整这个行为,只要指定“detect-thread-ratio: N”。这会创建N x M个检测 线程,其中M是指主机上CPU核心的总数。