• Snort的安装——Fedora


    Snort Fedora Install

    简介

    Snort 是世界上知名的开源入侵防御系统 (IPS)。Snort IPS 使用一系列规则来帮助定义恶意网络活动,并使用这些规则来查找与其匹配的数据包并为用户生成警报。

    Snort 也可以内联部署以阻止这些数据包。Snort 具有三个主要用途:作为数据包嗅探器(如 tcpdump),作为数据包记录器——这对网络流量调试很有用,或者它可以用作成熟的网络入侵防御系统。

    Snort的安装我认为还是比较麻烦的,大部分都是要用到编译安装,Snort的前置库也非常的多,因此我打算系统整理一下Snort的安装方法。

    安装过程

    Dnf源配置

    bash
    [root@localhost ~]# wget -O /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo
    
    [root@localhost ~]# wget -O /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repo
    
    # 下载阿里源
    
    [root@localhost ~]# dnf makecache && dnf update && reboot
    # 生成缓存并更新软件包并重启设备

    这里使用的系统版本为是Fedora 37,DNF源为阿里源。

    前期准备

    基于 Red Hat 的操作系统在链接器缓存路径中不包含 /usr/local/lib/usr/local/lib64,这将导致构建错误,这是因为链接器无法找到引用的库。

    那么我们通过在 /etc/ld.so.conf.d 下创建包含所需路径的配置文件并更新缓存来纠正此问题。

    bash
    [root@localhost ~]# vi /etc/ld.so.conf.d/local.conf
    # 修改文件添加如下内容
    
    [root@localhost ~]# cat /etc/ld.so.conf.d/local.conf
    /usr/local/lib
    /usr/local/lib64

    填写完配置文件后,我们执行ldconfig来刷新缓存。

    接下来我们安装LibDAQ所需的软件来为构建LibDAQ做准备。

    bash
    [root@localhost ~]# dnf install git vim flex bison gcc gcc-c++ make cmake automake autoconf libtool 

    安装Snort依赖软件

    下表总结了构建 Snort 和 LibDAQ 所需的和可选的包。

    安装必需的依赖项

    bash
    [root@localhost ~]# dnf install libpcap-devel pcre-devel libdnet-devel hwloc-devel openssl-devel zlib-devel luajit-devel pkgconf libmnl-devel libunwind-devel 

    如果需要构建支持NAQ的LibDAQ则需要安装额外的包。

    bash
    [root@localhost ~]# dnf install libnfnetlink-devel libnetfilter_queue-devel
    安装LibDAQ

    Snort3需要的LibDAQ(>=3.0.0),通过Git进行Clone并使用其中脚本进行安装。

    bash
     [root@localhost ~]# git clone https://github.com/snort3/libdaq.git
     [root@localhost ~]# cd libdaq/
     [root@localhost libdaq]# ./bootstrap 

    如果需要通过选项自定义LibDAQ的构建模块,我们可以通过 --disable--module 进行设置。

    例如 ./configure --disable-netmap-module --disable-divert-module

    bash
     [root@localhost libdaq]# ./configure

    它会输出如下的内容

    highlighter- code-theme-dark
    ...
    Build AFPacket DAQ module.. : yes
    Build BPF DAQ module....... : yes 
    Build Divert DAQ module.... : no 
    Build Dump DAQ module...... : yes 
    Build FST DAQ module....... : yes 
    Build NFQ DAQ module....... : yes 
    Build PCAP DAQ module...... : yes 
    Build netmap DAQ module.... : no 
    Build Trace DAQ module..... : yes 

    然后安装LibDAQ。

    bash
    [root@localhost libdaq]# make
    [root@localhost libdaq]# make install
    [root@localhost libdaq]# ldconfig
    [root@localhost libdaq]# cd ../ 

    可选的依赖项

    LZMA and UUID

    lzma 用于解压缩SWF和PDF文件,而 uuid 是一个用于生成/解析通用唯一ID的库,用于标记/识别网络中的对象。

    bash
    [root@localhost ~]# dnf install xz-devel libuuid-devel 
    Hyperscan

    尽管 Hyperscan 是可选项,但还是非常建议安装它的。

    bash
    [root@localhost ~]# dnf install hyperscan hyperscan-devel 
    Flatbuffers

    Flatbuffers 是一个用于内存受限应用程序的跨平台序列化库。它允许直接访问序列化数据而无需先解包/解析它。

    bash
    [root@localhost ~]# curl -Lo flatbuffers-v23.3.3.tar.gz https://github.com/google/flatbuffers/archive/refs/tags/v23.3.3.tar.gz
    [root@localhost ~]# tar xf flatbuffers-v23.3.3.tar.gz
    [root@localhost ~]# mkdir fb-build && cd fb-build 
    [root@localhost fb-build]# cmake ../flatbuffers-23.3.3
    [root@localhost fb-build]# make -j$(nproc)
    [root@localhost fb-build]# make -j$(nproc) install
    [root@localhost fb-build]# ldconfig
    [root@localhost fb-build]# cd ../ 
    Safec

    Safec用于对某些遗留C库调用进行运行时边界检查。 Safec包在EPEL存储库中可用。

    bash
    [root@localhost ~]# dnf install libsafec libsafec-devel
    [root@localhost ~]# ln -s /usr/lib64/pkgconfig/safec-3.3.pc /usr/lib64/pkgconfig/libsafec.pc
    Tcmallo

    tcmalloc 是 Google (PerfTools) 创建的一个库,用于改进线程程序中的内存处理。使用该库可能会提高性能并减少内存使用量。

    bash
    [root@localhost ~]# dnf install gperftools-devel

    Snort3安装

    现在所有依赖项都已安装,从GitHub克隆Snort3存储库。

    bash
    [root@localhost ~]# git clone https://github.com/snort3/snort3.git
    [root@localhost ~]# cd snort3

    在配置Snort之前,声明 PKG_CONFIG_PATH 变量来包含 LibDAQ pkgconfig 路径,以及其他包的 pkgconfig 路径,否则构建过程可能会失败。

    bash
    [root@localhost snort3]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    [root@localhost snort3]# export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH 

    如果 LibDAQ 或其他包安装到自定义的非系统路径,则需要将该路径导出到 PKG_CONFIG_PATH,例如:

    export PKG_CONFIG_PATH=/opt/libdaq/lib/pkgconfig:$PKG_CONFIG_PATH

    在启用Tcmalloc支持的同时继续构建Snort3。在构建Snort之前导出的编译器标志用于帮助改进编译时间、生成代码的性能和最终Snort的二进制图像大小。

    bash
    [root@localhost snort3]# export CFLAGS="-O3"
    [root@localhost snort3]# export CXXFLAGS="-O3 -fno-rtti"
    [root@localhost snort3]# ./configure_cmake.sh --prefix=/usr/local/snort --enable-tcmalloc 

    上面的命令应该产生类似于下面的输出(部分省略)。

    highlighter- code-theme-dark CSS
    -------------------------------------------------------
    snort version 3.1.0.0
    ...
    Feature options:
    	DAQ Modules:    Static (afpacket;bpf;dump;fst;nfq;pcap;trace)
    	Flatbuffers:    ON
    	Hyperscan:      ON
    	ICONV:          ON
    	Libunwind:      ON
    	LZMA:           ON
    	RPC DB:         Built-in
    	SafeC:          ON
    	TCMalloc:       ON
    	UUID:           ON 

    接下来安装Snort。

    bash
    [root@localhost snort3]# cd build/
    [root@localhost build]# make -j$(nproc)
    [root@localhost build]# make -j$(nproc) install 
    [root@localhost build]# cd ../../

    安装完成后,验证Snort 3是否报告了预期的版本和库名称

    bash
    [root@localhost ~]# /usr/local/snort/bin/snort –V
       ,,_     -*> Snort++ <*-
      o"  )~   Version 3.1.60.0
       ''''    By Martin Roesch & The Snort Team
               http://snort.org/contact#team
               Copyright (C) 2014-2023 Cisco and/or its affiliates. All rights reserved.
               Copyright (C) 1998-2013 Sourcefire, Inc., et al.
               Using DAQ version 3.0.11
               Using LuaJIT version 2.1.0-beta3
               Using OpenSSL 3.0.8 7 Feb 2023
               Using libpcap version 1.10.4 (with TPACKET_V3)
               Using PCRE version 8.45 2021-06-15
               Using ZLIB version 1.2.12
               Using Hyperscan version 5.4.1 2023-04-14
               Using LZMA version 5.4.1
    

    在最后

    那么Snort的安装过程就到此为止了,后续Snort的使用与配置,会在后续的文章中提到。

    如果想要交流网安知识可以发送邮件到Richardminrui@gmail.com。

    或者加入我的Discord频道https://discord.gg/v2Q9WKKQ。


    __EOF__

  • 本文作者: RichardLuo
  • 本文链接: https://www.cnblogs.com/RichardLuo/p/Snort_Install.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    跨域的解决方法
    This download does NOT match an earlier download recorded in go.sum.
    Day6、7 计算机网络——物理层
    替换Nginx并且自动申请免费的HTTPS证书?
    每日汇评:黄金的回调可能会在周五上涨3%之后延续
    Springboot+vue的人事管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
    【力扣周赛】第 360 场周赛(贪心 & ⭐树上倍增)
    Cloudflare实现反代的两种方式,其中一种支持CNAME域名接入
    用于强化学习的置换不变神经网络
    IEEE Standard for SystemVerilog Chapter 22. Compiler directives
  • 原文地址:https://www.cnblogs.com/RichardLuo/p/Snort_Install.html