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


      不多说,直接上干货!

    为什么,要写这篇论文?

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

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

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

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

       见Suricata的官网

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

    一、准备工作

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

     

     

     

    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介绍

      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: "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 配置有更多的了解,可以去翻阅默认配置文件。里边配有有大量的注释以供你清晰理解。

    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)

     

  • 相关阅读:
    nodejs REPL清屏
    flask 的relationship使用
    flask 数据库多对多(文章和标签)
    设置管理员的 蘑菇丁日报 周报、月报
    访问个人主页、蘑菇丁、使用:import urllib.request
    使用requests访问、登录蘑菇丁
    UUID
    爬虫经典案例
    selenium 获取 cookies, 然后登录
    用chrome浏览器登录以后 手动找到cookie、加到自己的python代码中
  • 原文地址:https://www.cnblogs.com/zlslch/p/7326291.html
Copyright © 2020-2023  润新知