很少说,直接上干货!html
为何,要写这篇论文?linux
是由于,目前科研的我,正值研三,致力于网络安全、大数据、机器学习研究领域!ios
论文方向的须要,同时不局限于真实物理环境机器实验室的攻防环境、也不局限于真实物理机器环境实验室的大数据集群平台。在此,为了须要的博友们,能在本身虚拟机里(我这里是CentOS6.5)来搭建部署snort+barnyard2+base的入侵检测系统。分享与交流是进步的阶梯!c++
同时,本人还尝试过在Ubuntu14.04里搭建这入侵检测系统的环境。同时,还尝试过在win7\win10里搭建这入侵检测系统的环境。web
同时,也欢迎作报警数据方向的烟酒僧留言评论加好友交流。欢迎指正!谢谢。算法
见Suricata的官网sql
https://suricata.readthedocs.io/en/latest/install.html
安装CentOS-6.5-x86_64-bin-DVD1.isoshell
DEVICE=eth0 HWADDR=00:0C:29:7F:EF:EC TYPE=Ethernet UUID=26d0171e-d510-4f6f-b098-1ee55e36313a ONBOOT=static NM_CONTROLLED=yes BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" IPADDR=192.168.80.86 BCAST=192.168.80.2 GATEWAY=192.168.80.2 NETMASK=255.255.255.0 DNS1=192.168.80.2 DNS2=119.29.29.29
Suricata是一款高性能的网络IDS、IPS和网络安全监控引擎。它是由the Open Information Security Foundation开发,是一款开源的系统。软件的源代码能够经过http://suricata-ids.org/得到。macos
随着安全威胁的不断发生,入侵检测系统(IDS)在现在的数据中心环境中显得尤其必要。然而,随着愈来愈多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测愈来愈困难。其中一种提高入侵检测系统性能的途径是多线程入侵检测系统,它将 CPU 密集型的深度包检测工做并行的分配给多个并发任务来完成。这样的并行检测能够充分利用多核硬件的优点来轻松提高入侵检测系统的吞吐量。在这方面有两个知名的开源项目,分别是 Suricata 和 Bro。ubuntu
为此,我本篇博客呢,给你们分享的是,Suricata。
suricata的官网
https://suricata-ids.org/
Suricata的安装官网(基于CentOS)
https://redmine.openinfosecfoundation.org/projects/suricata/wiki/CentOS_Installation
注意,如下操做,都是在root用户下进行。
[root@suricata~]# yum install wget -y
更换成阿里云源,更新系统、下载软件速度快
[root@suricata~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@suricata~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
[root@suricata~]# yum clean all
[root@suricata~]# yum makecache
[root@suricata~]# yum -y update
[root@suricata~]# yum install -y epel-release
五、在 CentOS, Fedora 或者 RHEL 操做系统上安装依赖包
[root@suricata ~]# 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
或者
sudo 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
一旦将全部依赖包安装完毕,咱们就能够继续安装 Suricata 了。
Suricata 源代码的下载和编译安装
首先从 http://suricata-ids.org/download/ 下载 Suricata 源代码,而后构建它。撰写这篇文章的时候,其最新版本号为suricata-4.0.0.tar.gz 。
可是,官方文档里,这个suricata-3.1.tar.gz版本是测试过的,因此,我这里也是安装这个版本;
我这里是
[root@suricata ~]# wget http://www.openinfosecfoundation.org/download/suricata-3.1.tar.gz
而后,再
[root@suricata ~]# tar -xvzf suricata-3.1.tar.gz
再
cd suricata-3.1
而后,再
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua
而后,再
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# make
而后,再
而后,再
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# sudo ldconfig
如下是配置信息的样例。
Suricata Configuration: AF_PACKET support: yes PF_RING support: no NFQueue support: no NFLOG support: no IPFW support: no DAG enabled: no Napatech enabled: no Unix socket enabled: yes Detection enabled: yes libnss support: yes libnspr support: yes libjansson support: yes Prelude support: no PCRE jit: yes LUA support: no libluajit: no libgeoip: no Non-bundled htp: no Old barnyard2 support: no CUDA enabled: no
Suricata 源代码带有默认的配置文件。按照以下方法安装这些默认配置文件便可。
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# make install-conf
正如你所料,若是没有IDS规则集的话,Suricata 什么用也没有。幸亏 Makefile 为咱们提供了 IDS 规则集的安装选项。
安装方法以下
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# make install-rules
以上的规则安装命令会从 EmergingThreats.net 上下载可用的社区规则集快照,而且将其存储在 /etc/suricata/rules 目录下。
[root@suricata rules]# pwd /etc/suricata/rules [root@suricata rules]# ls app-layer-events.rules emerging-activex.rules emerging-icmp.rules emerging-scada.rules emerging-web_server.rules smtp-events.rules botcc.portgrouped.rules emerging-attack_response.rules emerging-imap.rules emerging-scan.rules emerging-web_specific_apps.rules stream-events.rules botcc.rules emerging-chat.rules emerging-inappropriate.rules emerging-shellcode.rules emerging-worm.rules suricata-1.2-prior-open.yaml BSD-License.txt emerging.conf emerging-info.rules emerging-smtp.rules gen-msg.map suricata-1.3-enhanced-open.txt ciarmy.rules emerging-current_events.rules emerging-malware.rules emerging-snmp.rules gpl-2.0.txt suricata-1.3-etpro-etnamed.yaml classification.config emerging-deleted.rules emerging-misc.rules emerging-sql.rules http-events.rules suricata-1.3-open.yaml compromised-ips.txt emerging-dns.rules emerging-mobile_malware.rules emerging-telnet.rules LICENSE tor.rules compromised.rules emerging-dos.rules emerging-netbios.rules emerging-tftp.rules modbus-events.rules unicode.map decoder-events.rules emerging-exploit.rules emerging-p2p.rules emerging-trojan.rules rbn-malvertisers.rules dns-events.rules emerging-ftp.rules emerging-policy.rules emerging-user_agents.rules rbn.rules drop.rules emerging-games.rules emerging-pop3.rules emerging-voip.rules reference.config dshield.rules emerging-icmp_info.rules emerging-rpc.rules emerging-web_client.rules sid-msg.map [root@suricata rules]#
而后,再
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# make install-full
接着,继续
官网
https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Basic_Setup
按照这官网一步一步,来
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# mkdir /var/log/suricata mkdir: cannot create directory `/var/log/suricata': File exists [root@suricata suricata-3.1]# mkdir /etc/suricata mkdir: cannot create directory `/etc/suricata': File exists [root@suricata suricata-3.1]# cp classification.config /etc/suricata cp: overwrite `/etc/suricata/classification.config'? y [root@suricata suricata-3.1]# cp reference.config /etc/suricata cp: overwrite `/etc/suricata/reference.config'? y [root@suricata suricata-3.1]# cp suricata.yaml /etc/suricata cp: overwrite `/etc/suricata/suricata.yaml'? y [root@suricata suricata-3.1]#
接下来,是
[root@suricata suricata-3.1]# ./configure && make && make install-conf
接下来,是
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# ./configure && make && make install-rules
接下来,是
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# ./configure && make && make install-full
即,进入
如今到了配置 Suricata 的时候了。配置文件的位置是 /etc/suricata/suricata.yaml。参照如下命令,用文本编辑器打开这个文件。
[root@suricata suricata-3.1]# pwd /root/suricata-3.1 [root@suricata suricata-3.1]# vim /etc/suricata/suricata.yaml
下面是一些基本的设置,供你开始入门。
如下是/etc/suricata/suricata.yaml的默认配置文件。
能够看看这篇博客:
文件中有一些运行所需的基本配置。
为default-log-dir
关键字指定 Suricata 日志文件所在的位置。
default-log-dir: /var/log/suricata/
在vars
部分下方,你会发现几项对 Suricata 来讲很重要变量。
HOME_NET
变量须要指定 Suricata 检查的网络。被分配给 EXTERNAL_NET
变量。
变量 !$HOME_NET
表明除本地网络以外的其余网络。
XXX_PORTS
变量用来辨别不一样服务所用到的端口号。
须要注意的是不管使用什么端口,Suricata 均可以自动检测 HTTP 流量。
因此是否是正确指定端口就显得没那么重要了。
如我这里改成
vars: HOME_NET: "[192.168.80.0/24]" EXTERNAL_NET: "!$HOME_NET" HTTP_PORTS: "80" SHELLCODE_PORTS: "!80" SSH_PORTS: 22
host-os-policy
部分用于防护利用操做系统网络栈的自身行为来逃避检测的一些知名攻击手段(例如:TCP reassembly)。
做为对策,经过针对目标操做系统而对检测引擎算法进行微调,现代 IDC 提供了“基于目标”的检测手段。
所以,若是你知道某台主机运行了什么操做系统的话,将这个信息提供给 Suricata 就能够大幅提升检测的成功率。这就是 host-os-policy
存在的意义。本例中,默认的 IDC 策略是 Linux 系统。
若是针对某个 IP 地址没有指定操做系统信息,Suricata 会默认应用基于 Linux 系统的检测策略。
以下,当捕获到对 192.168.80.0/28 和 192.168.80.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: []
在 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 核心总数。
注意:若是你想对 Suricata 配置有更多的了解,能够去翻阅默认配置文件。里边配有有大量的注释以供你清晰理解。
能够看看这篇博客:
以上是编译安装的整个过程。
注意,对于这个/etc/suricata/suricata.yaml ,我这篇博客下来,并非默认的配置文件哈。你们能够之后本身学会了,强大了来作修改。
在本博文中,我为你们演示了如何在一台多核 Linux 服务器(基于CentOS6.5)上安装 Suricata 入侵检测系统。
不一样于单线程的 Snort IDS ,Suricata 能够很容易的从多核硬件的多进程特性所带来的好处中获益。定制 Suricata 来最大化其效能和检测范围是一个很好的主意。Suricata 的粉丝们维护着一个 在线 Wiki,若是你打算将 Suricata 部署到你的环境中,我强烈建议你去那儿取取经。
若是你如今已经开始使用 Suricata 了的话,把你的经验也分享出来吧。
至此结束!欢迎交流!
参考