基于CentOS6.5下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)
不多说,直接上干货!
为什么,要写这篇论文?
是因为,目前科研的我,正值研三,致力于网络安全、大数据、机器学习研究领域!
论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境、也不局限于真实物理机器环境实验室的大数据集群平台。在此,为了需要的博友们,能在自己虚拟机里(我这里是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和网络安全监控引擎)的搭建(图文详解)(博主推荐)的更多相关文章
- 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详细步骤(图文)(博主推荐)
不多说,直接上干货! 前言 建议参照最新的tensorflow安装步骤(Linux,官方网站经常访问不是很稳定,所以给了一个github的地址): https://github.com ...
- 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)
前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...
- suricata.yaml (一款高性能的网络IDS、IPS和网络安全监控引擎)默认配置文件(图文详解)
不多说,直接上干货! 前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 或者 基于Ubuntu14.04下Suric ...
- Ubuntu16.04下安装Tensorflow GPU版本(图文详解)
不多说,直接上干货! 推荐 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详 ...
- Ubuntu16.04下安装Tensorflow CPU版本(图文详解)
不多说,直接上干货! 推荐 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详 ...
- 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机器环境实验室的大数 ...
- 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)
前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐) tcpreplay是什么? 简单的说, tcpreplay是一种pcap包的重放 ...
- 基于Windows7下snort+apache+php 7 + acid(或者base) + adodb + jpgraph的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习.人工智能.区域链研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机 ...
- VMware下OSSIM 5.2.0的下载、安装和初步使用(图文详解)
不多说,直接上干货! 入门阶段不建议选用最新的版本. 采用OSSIM 4.11 到 OSSIM5.0.3 之间任何版本做实验,sensor的状态都会是“V”. 建议,入门,采用OSSIM5.0.0 ...
随机推荐
- 适合初学C语言是练习的代码
作为一个小白,自己学C的时候就想找些代码练练手,就整理了一些. 1.最大公约数和最小公倍数 # include <stdio.h> int main(void) { int i, ...
- 02-Swift学习笔记-元组类型
02-Swift学习笔记-元组类型 元组类型由N个任意类型的数据组成(N>=0) 元组类型的数据称为"元素" eg var size = (x:100 , y:100) si ...
- Oracle imp exp命令具体解释
怎样在oracle中导入dmp数据库文件? oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令能够把数据从远程数据库server导出到本地的dmp文件,imp命令能够 ...
- 百度AI的语音合成,语音识别
1,语音的合成,识别 后端代码: from aip import AipSpeech, AipNlp import os # 语音合成 """ 你的 APPID AK S ...
- iOS开发——高级篇——多线程GCD死锁
面试题 请问以下代码打印结果: - (void)interview01 { // 以下代码是在主线程执行的 NSLog(@"执行任务1"); dispatch_queue_t qu ...
- Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
Linux Find Out Last System Reboot Time and Date Command - nixCraft https://www.cyberciti.biz/tips/li ...
- java语法基础(一)
这个是自己前两年做java视频教程时候的课件.感兴趣的同学可以参考下. 这里是纯粹的语法行总结. editplus的使用 选择项目目录 打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以 ...
- sqlyog快捷键
Ctrl+M 创建一个新的连接Ctrl+N 使用当前设置新建连接Ctrl+F4 断开当前连接 对象浏览器F5 刷新对象浏览器(默认)Ctrl+B 设置焦点于对象浏览器 SQL 窗口 ...
- POJ1661 Help Jimmy —— DP
题目链接:http://poj.org/problem?id=1661 Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- 单纯形 BZOJ3112: [Zjoi2013]防守战线
题面自己上网查. 学了一下单纯形.当然 证明什么的 显然是没去学.不然估计就要残废了 上学期已经了解了 什么叫标准型. 听起来高大上 其实没什么 就是加入好多松弛变量+各种*(-1),使得最后成为一般 ...