不多说,直接上干货!

为什么,要写这篇论文?

  是因为,目前科研的我,正值研三,致力于网络安全、大数据、机器学习研究领域!

  论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境、也不局限于真实物理机器环境实验室的大数据集群平台。在此,为了需要的博友们,能在自己虚拟机里(我这里是CentOS6.5)来搭建部署snort+barnyard2+base的入侵检测系统。分享与交流是进步的阶梯!

  同时,本人还尝试过在Ubuntu14.04里搭建这入侵检测系统的环境。同时,还尝试过在win7\win10里搭建这入侵检测系统的环境。

  同时,也欢迎做报警数据方向的烟酒僧留言评论加好友交流。欢迎指正!谢谢。

  见Suricata的官网

https://suricata.readthedocs.io/en/latest/install.html

一、准备工作

  安装CentOS-6.5-x86_64-bin-DVD1.iso

DEVICE=eth0
HWADDR=:0C::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介绍

  Suricata是一款高性能的网络IDS、IPS和网络安全监控引擎。它是由the Open Information Security Foundation开发,是一款开源的系统。软件的源代码可以通过http://suricata-ids.org/获得。

  

  随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要。然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越困难。其中一种提升入侵检测系统性能的途径是多线程入侵检测系统,它将 CPU 密集型的深度包检测工作并行的分配给多个并发任务来完成。这样的并行检测可以充分利用多核硬件的优势来轻松提升入侵检测系统的吞吐量。在这方面有两个知名的开源项目,分别是 Suricata 和 Bro

  为此,我本篇博客呢,给大家分享的是,Suricata。

  

suricata的官网
https://suricata-ids.org/

  Suricata的安装官网(基于CentOS)

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/CentOS_Installation

  注意,以下操作,都是在root用户下进行。

1.    安装wget

[root@suricata~]# yum install wget -y

2.    更换源

  更换成阿里云源,更新系统、下载软件速度快

[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

3.更新系统

[root@suricata~]# yum -y update

4.安装epel源

[root@suricata~]# yum install -y epel-release

5、在 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 IDS

  现在到了配置 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的默认配置文件。

suricata.yaml (一款高性能的网络IDS、IPS和网络安全监控引擎)默认配置文件(图文详解)

  可以看看这篇博客:

Suricata配置文件说明

  

  文件中有一些运行所需的基本配置。

  为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: ""
SHELLCODE_PORTS: "!80"
SSH_PORTS:

  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/, 192.168.122.155]
bsd: []
bsd-right: []
old-linux: []
# Make the default policy Linux.
linux: [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 配置有更多的了解,可以去翻阅默认配置文件。里边配有有大量的注释以供你清晰理解。

suricata.yaml (一款高性能的网络IDS、IPS和网络安全监控引擎)默认配置文件(图文详解)

  可以看看这篇博客:

Suricata配置文件说明

  以上是编译安装的整个过程。

  注意,对于这个/etc/suricata/suricata.yaml ,我这篇博客下来,并不是默认的配置文件哈。大家可以以后自己学会了,强大了来做修改。

  

  在本博文中,我为大家演示了如何在一台多核 Linux 服务器(基于CentOS6.5)上安装 Suricata 入侵检测系统

  不同于单线程的 Snort IDS ,Suricata 可以很容易的从多核硬件的多进程特性所带来的好处中获益。定制 Suricata 来最大化其效能和检测范围是一个很好的主意。Suricata 的粉丝们维护着一个 在线 Wiki,如果你打算将 Suricata 部署到你的环境中,我强烈建议你去那儿取取经。

  如果你现在已经开始使用 Suricata 了的话,把你的经验也分享出来吧。

  至此结束!欢迎交流!

参考

如何在 Linux 系统上安装 Suricata 入侵检测系统(https://linux.cn/article-6985-1.html#4_1498)

基于CentOS6.5下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)的更多相关文章

  1. 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详细步骤(图文)(博主推荐)

    不多说,直接上干货! 前言 建议参照最新的tensorflow安装步骤(Linux,官方网站经常访问不是很稳定,所以给了一个github的地址):         https://github.com ...

  2. 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...

  3. suricata.yaml (一款高性能的网络IDS、IPS和网络安全监控引擎)默认配置文件(图文详解)

    不多说,直接上干货! 前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 或者 基于Ubuntu14.04下Suric ...

  4. Ubuntu16.04下安装Tensorflow GPU版本(图文详解)

    不多说,直接上干货! 推荐 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详 ...

  5. Ubuntu16.04下安装Tensorflow CPU版本(图文详解)

    不多说,直接上干货! 推荐 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详 ...

  6. 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐)

    为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机器环境实验室的大数 ...

  7. 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)

    前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐) tcpreplay是什么? 简单的说, tcpreplay是一种pcap包的重放 ...

  8. 基于Windows7下snort+apache+php 7 + acid(或者base) + adodb + jpgraph的入侵检测系统的搭建(图文详解)(博主推荐)

    为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习.人工智能.区域链研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机 ...

  9. VMware下OSSIM 5.2.0的下载、安装和初步使用(图文详解)

    不多说,直接上干货! 入门阶段不建议选用最新的版本. 采用OSSIM 4.11 到 OSSIM5.0.3 之间任何版本做实验,sensor的状态都会是“V”.   建议,入门,采用OSSIM5.0.0 ...

随机推荐

  1. LoadRunner关联需要转义的常见字符

    转义字符总结 在做手动关联时,取边界值的时候,会经常用到转义字符,现将转义字符整理如下: \b 退格             \f 换页             \n 换行             \ ...

  2. JNI返回复杂对象之中的一个

    需求: 首先说需求.近期接手一个项目.要在底层解析二进制数据,数据结构比較负责,因为server是c++server,加之開始没有考虑到移动端开发,所以协议有点扯蛋.大体是这种,一个数据包里面是map ...

  3. canvas鼠标点击划线

    今天学习了canvas,打算写一个鼠标划线的效果. <!DOCTYPE html> <html lang="en"> <head> <me ...

  4. 【PLSQL Developer】PLSQL Developer SQL Editor 乱码问题

    [问题]我们常常在PLSQL Developer的SQL窗体编写各种语句.当须要保存这些语句时,能够另存为文本文件,也能够复制后粘贴到Word文件里.放在Word文件里的优点是语句保留原来的格式,能够 ...

  5. 导入项目 R.java没有

    网上一搜,各种 Android tools-fix your porject或者Clean ...不好使 其实可能是由于XML布局文件有错误导致,修改掉这些错误就可以了..

  6. lucene DocValues——本质是为通过docID查找某field的值 看图

    Why DocValues? The standard way that Solr builds the index is with an inverted index. This style bui ...

  7. NABCD项目需求报告

    项目:记账小账本 N:need 需求 根据我们的调查,很多人虽然知道记账有很多的好处,但是因为种种的原因,我们都没能养成记账的好习惯,所以我们所做的记账小软件,说到底是一个行为养成类的软件,而这类软件 ...

  8. BZOJ_2819_Nim_树状数组维护出栈入栈序

    BZOJ_2819_Nim_树状数组维护出栈入栈序 Description 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任 ...

  9. 2015年沈阳网赛 Jesus Is Here(DP中的计数问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5459 题目描述:给定一个递推得来的字符串,问字符串中不同cff之间的距离之和, 递推规则: s1=c; ...

  10. 腾讯API

    相关文档: API列表  腾讯开放平台联调工具集  公共返回码说明 SDK下载