Snort的安装——Fedora
<h1 id="snort-fedora-install">Snort Fedora Install</h1><h2 id="简介">简介</h2>
<p>Snort 是世界上知名的开源入侵防御系统 (IPS)。Snort IPS 使用一系列规则来帮助定义恶意网络活动,并使用这些规则来查找与其匹配的数据包并为用户生成警报。</p>
<p>Snort 也可以内联部署以阻止这些数据包。Snort 具有三个主要用途:作为数据包嗅探器(如 tcpdump),作为数据包记录器——这对网络流量调试很有用,或者它可以用作成熟的网络入侵防御系统。</p>
<blockquote>
<p>Snort的安装我认为还是比较麻烦的,大部分都是要用到编译安装,Snort的前置库也非常的多,因此我打算系统整理一下Snort的安装方法。</p>
</blockquote>
<h2 id="安装过程">安装过程</h2>
<h3 id="dnf源配置">Dnf源配置</h3>
<pre><code class="language-bash"># wget -O /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo
# wget -O /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repo
# 下载阿里源
# dnf makecache && dnf update && reboot
# 生成缓存并更新软件包并重启设备
</code></pre>
<blockquote>
<p>这里使用的系统版本为是Fedora 37,DNF源为阿里源。</p>
</blockquote>
<h3 id="前期准备">前期准备</h3>
<p>基于 Red Hat 的操作系统在链接器缓存路径中不包含 <code>/usr/local/lib</code> 和 <code>/usr/local/lib64</code>,这将导致构建错误,这是因为链接器无法找到引用的库。</p>
<p>那么我们通过在 /etc/ld.so.conf.d 下创建包含所需路径的配置文件并更新缓存来纠正此问题。</p>
<pre><code class="language-bash"># vi /etc/ld.so.conf.d/local.conf
# 修改文件添加如下内容
# cat /etc/ld.so.conf.d/local.conf
/usr/local/lib
/usr/local/lib64
</code></pre>
<p>填写完配置文件后,我们执行<code>ldconfig</code>来刷新缓存。</p>
<p>接下来我们安装LibDAQ所需的软件来为构建LibDAQ做准备。</p>
<pre><code class="language-bash"># dnf install git vim flex bison gcc gcc-c++ make cmake automake autoconf libtool
</code></pre>
<h3 id="安装snort依赖软件">安装Snort依赖软件</h3>
<p>下表总结了构建 Snort 和 LibDAQ 所需的和可选的包。</p>
<p><img src="https://img2023.cnblogs.com/blog/2120377/202305/2120377-20230505202824266-1254694945.png" alt="" loading="lazy"></p>
<h4 id="安装必需的依赖项">安装必需的依赖项</h4>
<pre><code class="language-bash"># dnf install libpcap-devel pcre-devel libdnet-devel hwloc-devel openssl-devel zlib-devel luajit-devel pkgconf libmnl-devel libunwind-devel
</code></pre>
<p>如果需要构建支持NAQ的LibDAQ则需要安装额外的包。</p>
<pre><code class="language-bash"># dnf install libnfnetlink-devel libnetfilter_queue-devel
</code></pre>
<h5 id="安装libdaq">安装LibDAQ</h5>
<p>Snort3需要的LibDAQ(>=3.0.0),通过Git进行Clone并使用其中脚本进行安装。</p>
<pre><code class="language-bash"> # git clone https://github.com/snort3/libdaq.git
# cd libdaq/
# ./bootstrap
</code></pre>
<blockquote>
<p>如果需要通过选项自定义LibDAQ的构建模块,我们可以通过 --disable-<name>-module 进行设置。</name></p>
<p>例如 ./configure --disable-netmap-module --disable-divert-module</p>
</blockquote>
<pre><code class="language-bash"> # ./configure
</code></pre>
<p>它会输出如下的内容</p>
<pre><code>...
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
</code></pre>
<p>然后安装LibDAQ。</p>
<pre><code class="language-bash"># make
# make install
# ldconfig
# cd ../
</code></pre>
<h4 id="可选的依赖项">可选的依赖项</h4>
<h5 id="lzma-and-uuid">LZMA and UUID</h5>
<p>lzma 用于解压缩SWF和PDF文件,而 uuid 是一个用于生成/解析通用唯一ID的库,用于标记/识别网络中的对象。</p>
<pre><code class="language-bash"># dnf install xz-devel libuuid-devel
</code></pre>
<h5 id="hyperscan">Hyperscan</h5>
<p>尽管 Hyperscan 是可选项,但还是非常建议安装它的。</p>
<pre><code class="language-bash"># dnf install hyperscan hyperscan-devel
</code></pre>
<h5 id="flatbuffers">Flatbuffers</h5>
<p>Flatbuffers 是一个用于内存受限应用程序的跨平台序列化库。它允许直接访问序列化数据而无需先解包/解析它。</p>
<pre><code class="language-bash"># curl -Lo flatbuffers-v23.3.3.tar.gz https://github.com/google/flatbuffers/archive/refs/tags/v23.3.3.tar.gz
# tar xf flatbuffers-v23.3.3.tar.gz
# mkdir fb-build && cd fb-build
# cmake ../flatbuffers-23.3.3
# make -j$(nproc)
# make -j$(nproc) install
# ldconfig
# cd ../
</code></pre>
<h5 id="safec">Safec</h5>
<p>Safec用于对某些遗留C库调用进行运行时边界检查。 Safec包在EPEL存储库中可用。</p>
<pre><code class="language-bash"># dnf install libsafec libsafec-devel
# ln -s /usr/lib64/pkgconfig/safec-3.3.pc /usr/lib64/pkgconfig/libsafec.pc
</code></pre>
<h5 id="tcmallo">Tcmallo</h5>
<p>tcmalloc 是 Google (PerfTools) 创建的一个库,用于改进线程程序中的内存处理。使用该库可能会提高性能并减少内存使用量。</p>
<pre><code class="language-bash"># dnf install gperftools-devel
</code></pre>
<h3 id="snort3安装">Snort3安装</h3>
<p>现在所有依赖项都已安装,从GitHub克隆Snort3存储库。</p>
<pre><code class="language-bash"># git clone https://github.com/snort3/snort3.git
# cd snort3
</code></pre>
<p>在配置Snort之前,声明 PKG_CONFIG_PATH 变量来包含 LibDAQ pkgconfig 路径,以及其他包的 pkgconfig 路径,否则构建过程可能会失败。</p>
<pre><code class="language-bash"># export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
# export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
</code></pre>
<blockquote>
<p>如果 LibDAQ 或其他包安装到自定义的非系统路径,则需要将该路径导出到 PKG_CONFIG_PATH,例如:</p>
<p>export PKG_CONFIG_PATH=/opt/libdaq/lib/pkgconfig:$PKG_CONFIG_PATH</p>
</blockquote>
<p>在启用Tcmalloc支持的同时继续构建Snort3。在构建Snort之前导出的编译器标志用于帮助改进编译时间、生成代码的性能和最终Snort的二进制图像大小。</p>
<pre><code class="language-bash"># export CFLAGS="-O3"
# export CXXFLAGS="-O3 -fno-rtti"
# ./configure_cmake.sh --prefix=/usr/local/snort --enable-tcmalloc
</code></pre>
<p>上面的命令应该产生类似于下面的输出(部分省略)。</p>
<pre><code>-------------------------------------------------------
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
</code></pre>
<p>接下来安装Snort。</p>
<pre><code class="language-bash"># cd build/
# make -j$(nproc)
# make -j$(nproc) install
# cd ../../
</code></pre>
<p>安装完成后,验证Snort 3是否报告了预期的版本和库名称</p>
<pre><code class="language-bash"># /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
</code></pre>
<h2 id="在最后">在最后</h2>
<p>那么Snort的安装过程就到此为止了,后续Snort的使用与配置,会在后续的文章中提到。</p>
<p>如果想要交流网安知识可以发送邮件到Richardminrui@gmail.com。</p>
<p>或者加入我的Discord频道https://discord.gg/v2Q9WKKQ。</p><br><br>
来源:https://www.cnblogs.com/RichardLuo/p/Snort_Install.html
頁:
[1]