snort3安装

原文来自:以下是同一个大佬两个链接,刚好都找到了,原文包含snort2和snort3的安装,转载只包含snort3。

原本用kali系统碰到安装问题太多本来打算当日志记录的,不过换了个ubuntu系统跟着大佬一步一步下来没碰到什么问题。

除了偶尔遇到问题放在引用区的内容和个别图片,其余都是原文内容。

建议虚拟机内存大一点,我前面20G不够用。
https://zhuanlan.zhihu.com/p/487334783#SnippetTabicon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/487334783#SnippetTab

最新Snort3和Snort2安装详细教程-CSDN博客

ps:注意里面关于设备名称eth0或者ens3的,记得改成自己的设备名称

ifconfig -a

此外,以下复制的原文内容基本都实现过,没什么问题,用的是ubuntu22.04系统,如果有哪感觉内容漏了可以看原文(一路实验跟着记录的,没有一项一项检查,不确定有没有遗漏),看原文有些地方模糊没思绪也可以看看本文日志记录是否有解释。有的地方碰到问题直接记录下来了。

1、安装依赖以及必备组件

sudo apt-get update && sudo apt-get dist-upgrade -y
sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev zlib1g-dev
sudo apt-get install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool

2、调整时间

sudo dpkg-reconfigure tzdata

3、下载一些源tarball和其他文件,将它们存储在一个文件夹中,方便管理

mkdir ~/snort_src
cd ~/snort_src

4、下载并安装safec,以便对某些旧式C库调用进行运行时边界检查

cd ~/snort_src
wget https://github.com/rurban/safeclib/releases/download/v02092020/libsafec-02092020.tar.gz
tar -xzvf libsafec-02092020.tar.gz
cd libsafec-02092020.0-g6d921f
./configure
make
sudo make install

 5、安装Hyperscan

Snort 3使用Hyperscan进行快速模式匹配。可以从Ubuntu存储库安装一个旧版本的Hyperscan,但是Hyperscan对Snort的操作和性能至关重要,最好编译Hyperscan的最新稳定版本。Hyperscan有一个需求数量,包括PCRE、gper工具、ragel和Boost库。

首先安装PCRE:Perl兼容的正则表达式。不使用Ubuntu存储库,因为它有一个旧版本:

cd ~/snort_src/
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
tar -xzvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
make
sudo make install

安装 gpertools

cd ~/snort_src
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz
tar -xzvf gperftools-2.9.1.tar.gz
cd gperftools-2.9.1
./configure
make
sudo make install

安装 Ragel

cd ~/snort_src
wget http://www.colm.net/files/ragel/ragel-6.10.tar.gz
tar -xzvf ragel-6.10.tar.gz
cd ragel-6.10
./configure
make
sudo make install

下载(但不要安装)Boost C++库

cd ~/snort_src
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz
tar -xvzf boost_1_78_0.tar.gz

从源代码处安装Hyperscan 5.3,参考Boost源目录的位置

cd ~/snort_src
wget https://github.com/intel/hyperscan/archive/refs/tags/v5.4.0.tar.gz
tar -xvzf v5.4.0.tar.gz
mkdir ~/snort_src/hyperscan-5.4.0-build
cd hyperscan-5.4.0-build/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOST_ROOT=~/snort_src/boost_1_78_0/ ../hyperscan-5.4.0
make
sudo make install

6、 安装flatbuffers

cd ~/snort_src
wget https://github.com/google/flatbuffers/archive/refs/tags/v2.0.0.tar.gz -O flatbuffers-v2.0.0.tar.gz
tar -xzvf flatbuffers-v2.0.0.tar.gz
mkdir flatbuffers-build
cd flatbuffers-build
cmake ../flatbuffers-2.0.0
make
sudo make install

7、安装DAQ

安装数据采集库(DAQ),Snort3使用的数据采集卡与Snort 2.9.0系列不同

cd ~/snort_src
# 可以根据自身下载最新的库
wget https://github.com/snort3/libdaq/archive/refs/tags/v3.0.5.tar.gz
tar -xzvf libdaq-3.0.5.tar.gz
cd libdaq-3.0.5
./bootstrap
./configure
make
sudo make install

更新共享库

sudo ldconfig

8、最后源码安装Snort 3

如果对启用其他编译时功能感兴趣,例如处理大型(超过2GB)PCAP文件的能力,或者新的命令行shell:运行./configure cmake.sh--帮助列出所有可选功能,并将它们附加到下面的./configure\u cmake.sh命令中。在Snort网站上查看Snort3的更新版本

cd ~/snort_src
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.20.0.tar.gz
cd snort3-3.1.20.0
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build
make
sudo make install
  • Snort现安装在/usr/local/下,最后,验证Snort是否正确运行(版本为大写V)
/usr/local/bin/snort -V

如果输出与上图一样,Snort已安装并工作

9、测试Snort规则

  • 现在让我们用默认配置文件测试Snort
  • snort -c /usr/local/etc/snort/snort.lua

  • 为了减少IDS上截断的数据包,配置如下
# 检查这些接口的large-receive-o load(LRO)和generic-receive-offload(GRO)的状态,使用ethtool检查状态
sudo ethtool -k eth0 | grep receive-offload

这里出问题了,记录一下

解决:设备名ens33,改了之后显示正常

##内容,输入以下信息,用接口名称替换ens3:
[Unit]
Description=Ethtool Configration for Network Interface
[Service]
Requires=network.target
Type=oneshot
ExecStart=/sbin/ethtool -K ens3 gro off
ExecStart=/sbin/ethtool -K ens3 lro off
[Install]
WantedBy=multi-user.target

这里没搞懂创建什么文件,创建在哪里

解决:

创建于/etc/systemd/system,文件名 ethtool.service,记得把ens3改成自己设备名称(如:eth0或者ens33)

操作步骤:

cd /etc/systemd/system

vim ethtool.service

复制上面原文内容

执行代码 systemctl enable ethtool

  • 创建文件后,运行如下命令启动服务
  • sudo systemctl enable ethtool
    sudo service ethtool start
    
  • 再次查看两者是否设置为“off”
sudo ethtool -k eth0 | grep receive-offload

10、配置规则集

  • 创建一些必要的文件
sudo mkdir /usr/local/etc/rules
sudo mkdir /usr/local/etc/so_rules/
sudo mkdir /usr/local/etc/lists/
sudo touch /usr/local/etc/rules/snort.rules
sudo touch /usr/local/etc/rules/local.rules
sudo touch /usr/local/etc/lists/default.blocklist
sudo mkdir /var/log/snort
  • 在上面创建的local.rules文件中创建一个规则
sudo vi /usr/local/etc/rules/local.rules
  • local.rules文件内容
alert icmp any any -> any any ( msg:"ICMP Traffic Detected"; sid:10000001; metadata:policy security-ips alert; )

PS:此规则将检测ICMP事务,对于测试Snort是否正常工作和生成警报非常有用。将以下行粘贴到local.rules文件中(确保准确复制这行,必须在该文件中的每个分号中有一个空格才能正确解析警报)

  • 现在运行Snort并让它加载local.rules文件(带有-R标志),以确保正确加载这些规则(验证规则的格式是否正确)
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules
  • 现在,在接口上以检测模式运行Snort(将下面的eth0更改为与的接口名称匹配),并将所有警报打印到控制台
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \
-i eth0 -A alert_fast -s 65535 -k none

标志含义

这意味着snort当前正在侦听该接口上的所有流量,并将其与加载的规则进行比较。当流量与规则匹配时,Snort将向控制台写入警报。现在,从该计算机上的另一个窗口(打开一个新的终端窗口或第二个ssh会话),使用ping命令生成穿过正在侦听的接口的数据包(如果从另一台计算机连接,则ping到该接口的IP地址;如果在同一台计算机上,则只ping外部IP地址)。看到屏幕上打印的警报:

使用ctrl-c停止Snort,这是测试Snort的一个很好的规则,但是在实际的生产使用过程中可能会有点嘈杂,所以如果愿意的话,可以用hash(#)符号来注释它。

  • 接下来,编辑snort.lua文件,此文件是我们在启动时传递给Snort的配置文件
sudo vi /usr/local/etc/snort/snort.lua

接下来,我们要启用解码器和检查器警报(Snort检测到的恶意流量,而不是规则,因为格式更复杂),并且我们要告诉ips模块规则文件的位置(PulledPork稍后将为我们创建此文件)

向下滚动到第169行,并查找标题为ips的部分。在这里,我们从enable_builtin_rules=true中取消注释(删除前面的两个破折号),并启用pulledpork规则。请注意,lua使用四个空格,而不是制表符来缩进这些行(这是必需的)。此部分应如下所示(删除注释,166行左右):

ips =
{
    enable_builtin_rules = true,
    include = RULE_PATH .. "/local.rules",
    variables = default_variables
 }

原:

改了之后:

  • 测试配置文件
snort -c /usr/local/etc/snort/snort.lua

现在可以如上所述运行snort,但是不会在命令行上明确地传递local.rules文件,因为已经将它包含在snort.lua文件的ips部分中:

sudo snort -c /usr/local/etc/snort/snort.lua -i eth0 -A alert_fast -s 65535 -k none

11、安装PulledWork

PulledWork是我们用来下载和合并Snort规则集的脚本。要从Snort下载主要的免费规则集,需要一个oinkcode。在Snort网站上注册并在继续之前保存的oinkcode,因为最流行的免费规则集需要oinkcode

  • 依赖安装
sudo apt-get install -y libcrypt-ssleay-perl liblwp-useragent-determined-perl
  • 下载PulledPork的最新版本,并通过将perl文件复制到/usr/local/bin和所需的配置文件复制到/usr/local/etc/PulledPork来安装它
cd ~/snort_src
wget https://github.com/shirkdog/pulledpork/archive/refs/tags/v0.7.4.tar.gz -O pulledpork-v0.7.4.tar.gz
tar -xzvf pulledpork-v0.7.4.tar.gz
cd pulledpork-0.7.4
sudo cp pulledpork.pl /usr/local/bin
sudo chmod +x /usr/local/bin/pulledpork.pl
sudo mkdir /usr/local/etc/pulledpork
sudo cp etc/*.conf /usr/local/etc/pulledpork
  • 测试是否安装成功
/usr/local/bin/pulledpork.pl -V
  • 确定PulledWork已运行,对其进行配置:
sudo vi /usr/local/etc/pulledpork/pulledpork.conf

第19行,需要更改URL,然后用在snort.com网站注册时获得的oinkcode替换。这将告诉PulledPork从何处下载规则

rule_url=https://www.snort.org/rules/|snortrules-snapshot.tar.gz|<oinkcode>

划重点:要在snort网站注册Snort - Network Intrusion Detection & Prevention System

注册成功后登录进去就能看到olinkcode

假设olinkcode为123456

则改为rule_url=https://www.snort.org/rules/|snortrules-snapshot.tar.gz|123456

(前面的https根据原来的即可,不用全部复制,只需要改olinkcode)

第21行:评出社区规则。这些不需要,因为它们包含在我们上面包含的注册规则集中:

#rule_url=https://snort.org/downloads/community/|community-rules.tar.gz|Community

第72行:指向正确的snort.rules文件,PulledWork将保存从local.rules文件下载并包含的所有规则:

rule_path=/usr/local/etc/rules/snort.rules

第87行:告诉PulledPork local.rules文件从何处复制规则(并复制到snort.rules中):

local_rules=/usr/local/etc/rules/local.rules

第94行:告诉PulledPork以较新的sid_msg格式输出有关规则的元数据:

sid_msg_version=2

第110行:告诉PulledPork在哪里保存已编译的规则:

sorule_path=/usr/local/etc/so_rules/

第134行,将发行版改为Ubuntu-18-4(即使你运行的是ubuntu20)。这将告诉PulledWork哪个版本的编译规则与我们的系统兼容:

distro=Ubuntu-18-4

第142行:这告诉PulledPork在何处保存阻止列表(已知的恶意IP地址,应该被阻止):

block_list=/usr/local/etc/lists/default.blocklist

第151行:告诉PulledPork块和允许列表的默认位置

IPRVersion=/usr/local/etc/lists

第186行:告诉PulledPork Snort守护进程将当前运行的PID保存在何处,以便PulledPork在安装新规则后可以向Snort发送消息,以便Snort加载新规则:

pid_path=/var/log/snort/snort.pid

第209行:取消对此行的注释以启用下载的规则文件中的所有规则。这些规则被分为不同的规则集,这取决于想要检测trafic的攻击性。如果在IPS模式下运行(阻止而不是检测传输),可能会考虑使用“ballanted”规则集而不是“security”,因为“security”规则集在检测可能是恶意的或可能是正常的流量方面更具攻击性:

ips_policy=security
  • 运行PulledPork,将配置文件传递给它并执行额外的日志记录。这将下载最新的规则集,将它们与local.rules文件中的任何规则合并,并将所有规则保存到snort.rules中,同时将黑名单条目保存在defautl.blocklist文件中:
sudo /usr/local/bin/pulledpork.pl -c /usr/local/etc/pulledpork/pulledpork.conf -l -P -E -H SIGHUP

使用以下标志:

  • 下一步是将此命令转换为计划任务,以便可以每天更新规则集
sudo crontab -e
  • 检查snort.rules文件,应该会看到一些新的规则

修改snort.lua以加载snort.rules而不是local.rules文件(local.rules中的规则通过PulledPork自动添加到snort.rules文件中,并与所有下载的规则一起使用,可以在snort.rules文件的末尾看到local.rules中的任何规则)

sudo vi /usr/local/etc/snort/snort.lua
#167行
ips =
{
    enable_builtin_rules = true,
    include = RULE_PATH .. "/snort.rules",
    variables = default_variables
}
  • 测试Snort以查看这些规则是否正确加载:
snort -c /usr/local/etc/snort/snort.lua

12、配置Snort 插件

  • 在snort.lua文件中启用一些功能:
sudo vi /usr/local/etc/snort/snort.lua
  • 首先,配置HOME\u NET变量。这是指我们正在防御的本地子网(规则使用此信息来确定警报是否匹配)。在此处设置本地子网信息以匹配子网。我下面的子网是带有24位子网掩码的10.0.0.0网络
HOME_NET = '10.0.0.0/24'

没改之前:

  • 启用hyperscan(更快的模式匹配):更多信息,请将其放在重新命名检查器之后(配置绑定之前(此处我配置后会有警告提示,我就没有配置了,其它人有需要的话可以配置一下))

可以不改,直接跳过,后面报错了

reputation=
{
  blacklist = BLACK_LIST_PATH .. "/default.blocklist"
  --whitelist = 'whitelist file name with ip lists'
}

search_engine = { search_method = "hyperscan" }

detection = {
  hyperscan_literals = true,
  pcre_to_regex = true
}

备份没改之前:

2.13 配置输出警告插件
为了方便地将Snort 3警报日志文件导入到选择的SIEM中(如Splunk),需要使用alert\u json输出插件将所有警报写入json格式的文本文件。启用json输出插件很简单,只需修改snort.lua文件(在第7节:配置输出中,大约230行):

sudo vi /usr/local/etc/snort/snort.lua
alert_json =
{
    file = true,
    limit = 100,
    fields = 'seconds action class b64_data dir dst_addr dst_ap dst_port eth_dst eth_len \
    eth_src eth_type gid icmp_code icmp_id icmp_seq icmp_type iface ip_id ip_len msg mpls \
    pkt_gen pkt_len pkt_num priority proto rev rule service sid src_addr src_ap src_port \
    target tcp_ack tcp_flags tcp_len tcp_seq tcp_win tos ttl udp_len vlan timestamp',

}

备份改之前:

在alert_json插件中,我们指定了三个选项:
首先,我们使用file选项将警报输出到json格式的文件(而不是控制台)
接下来,我们指定limit选项来告诉Snort何时滚动到新文件。当输出文件达到10 MB时,将使用文件名中的当前unixtime创建一个新文件。对于测试,我们将其设置为100MB,但是在生产系统上,可能希望增加这个数字,这取决于如何进行日志管理/轮换
最后,我们指定fields选项,该选项标识json输出中应该包含警报中的哪些特定字段。在这个例子中,我们选择了所有可能的字段作为输出

PS:在测试之后,可以选择删除其中的一些字段(vlan和mpls字段是不必要的,b64_data包含整个数据包负载,可以删除这些数据包负载以节省空间,尽管此字段中有很多好的信息)。不要删除“秒”字段,并确保它始终是列出的第一个字段。这将允许Splunk正确处理事件

现在运行Snort,并生成一些警报。这些警报将写入/var/log/snort。运行下面的命令,然后再次ping接口(就像我们以前所做的那样,生成与local.rules文件中的规则匹配的流量)

sudo /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \
-k none -l /var/log/snort -i eth0 -m 0x1b

报错了:

根据前文印象,删掉了这一段,改回初始样子

为此命令添加了几个新标志:

  • 在snort启动后,将不会看到任何输出到屏幕上,因为我们已经启用了alert_json输出模块(该模块按照上面命令中的指定写入/var/log/snort)。停止snort(ctrl-c),然后检查/var/log/snort

13、Snort 脚本

创建一个systemD脚本,以便在启动时自动运行snort,出于安全原因,让snort作为常规(非root)用户在启动时运行

  • 创建snort用户和组
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
  • 删除旧日志文件(如果要保留,请移动它们):
sudo rm /var/log/snort/*
  • 需要授予“snort”用户对日志目录的权限
sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort
  • 创建systemD服务文件
sudo vi /lib/systemd/system/snort3.service
  • 具有以下内容(更改以太网适配器eth0以匹配适配器)
[Unit]
Description=Snort3 NIDS Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \
-k none -l /var/log/snort -D -u snort -g snort -i eth0 -m 0x1b --create-pidfile
[Install]
WantedBy=multi-user.target

Snort中使用的所有标志的分类

  • 启用Snort systemD服务并启动它
sudo systemctl enable snort3
sudo service snort3 start
  • 检查服务的状态:
service snort3 status
  • 输出应类似于以下内容,显示“active(running)”:

  • 如果有任何问题,可以使用以下命令检查服务的完整输出:
sudo journalctl -u snort3.service

14、安装Splunk

下载:https://www.splunk.com/en_us/download/splunk-enterprise.html

需要注册账户才能下载,登录后点击Linux选项卡,然后单击.deb旁边的download Now按钮(基于Debian的Ubuntu系统),如果使用wget下载安装程序,然后单击“通过命令行下载”(wget)复制wget字符串以供下载。

wget  htps://xxxxx
  • 一旦系统上安装了Splunk安装程序,就需要安装它。从保存安装程序的目录:

splunk需要翻墙注册,最好用英文邮箱,qq邮箱首页右侧有英文邮箱账号,可以使用foxmail邮箱,选美国地址。

然后直接在邮箱认证就跳进splunk页面了,不建议另外用浏览器登录,我的就一直加载不出来,然后想到认证跳转又赶紧回历史记录找了跳转页面,直接显示登录进去的了。

  • 一旦系统上安装了Splunk安装程序,就需要安装它。从保存安装程序的目录:
sudo dpkg -i splunk-8.*.deb
sudo chown -R splunk:splunk /opt/splunk

有个没装curl的报错

apt-get update -y && apt-get install curl -y

后续还没实现,因为内存扩容问题一下给我整无了,实在不会整,干脆整了个内存高的,不知道对分区会不会扩容,不然真的装不下了

好好好,安好了。

  • Splunk被安装到/opt/Splunk。请注意,安装的卷Splunk必须有5GB的可用空间,否则Splunk将无法启动。Splunk存储所有收集到的日志数据的索引位于安装位置的子文件夹中,因此请确保此卷上有足够的空间来存储希望收集的所有数据。

第一次启动Splunk(接受许可证并使用所有默认选项),系统将提示为Splunk创建一个新的管理用户和密码。保存这些凭据,因为稍后将使用它们登录到web界面:

sudo /opt/splunk/bin/splunk start --answer-yes --accept-license
  • 然后配置Splunk在引导时自动启动。还将为Splunk启用systemD并启动服务(而不是Splunk systemD服务名称中的大写“S”)。
sudo /opt/splunk/bin/splunk stop
sudo /opt/splunk/bin/splunk enable boot-start -systemd-managed 1
sudo chown -R splunk:splunk /opt/splunk
sudo service Splunkd start

Splunk服务器现在正在侦听此服务器的端口8000(http://localhost:8000(如果是从本地计算机连接,或从另一台计算机通过此系统的IP地址连接),用户名和密码是安装Splunk时设置的

Splunk目前使用免费的企业试用许可证运行,提供60天的所有企业功能,并允许每天索引5GB的日志数据。唯一的功能,我们将失去一旦试用许可证到期,将影响这个安装是删除已验证的登录。转换为免费许可证后,将不会提示登录到Splunk web界面

Splunk Enterprise提供了许多功能,包括自动更新Splunk实例及其自动运行的Splunk应用程序的部署服务器、具有可配置权限的多个用户帐户、负载平衡和其他功能

15、配置Splunk

现在,使用在Splunk安装期间创建的用户名和密码登录到Splunk实例。Splunk服务器正在监听端口8000(http://localhost:8000)

需要安装一个Splunk插件(称为Add-on),它允许我们轻松地接收(收集)Snort 3创建的日志并对其进行规范化(确保字段命名与NIDS数据一致,这样Splunk应用程序就可以轻松地显示我们的数据)

要安装此应用程序,请在Splunk实例的主页上,单击Splunk web界面左侧标题为+查找更多应用程序的链接,这将进入Splunkbase,这是一个Splunk插件的在线存储库,它扩展并增强了Splunk安装的功能。在Splunkbase中搜索Snort3,看到一个结果:snort3json警报。单击此加载项旁边的绿色安装按钮

输入注册下载Splunk时使用Splunk创建的用户名和密码(不是为本地Splunk服务器实例创建的用户名和密码)。接受条款和条件,然后单击“登录并安装”。安装完成后,单击“完成”。

接下来,要安装CyberChef for Splunk插件,它允许将b64_data字段转换为可读文本。如上所述,在Splunkbase中搜索“cyberchef”,单击cyberchef旁边的green install按钮以获取Splunk,登录,然后安装

接下来,需要配置Snort 3 JSON Alerts插件,告诉Splunk Snort 3生成的日志文件存储在哪里,以便Splunk能够接收它们,使用配置文件从命令行执行此操作

sudo mkdir /opt/splunk/etc/apps/TA_Snort3_json/local
sudo touch /opt/splunk/etc/apps/TA_Snort3_json/local/inputs.conf
sudo vi /opt/splunk/etc/apps/TA_Snort3_json/local/inputs.conf
  • 在此inputs.conf文件中输入以下文本
[monitor:///var/log/snort/*alert_json.txt*]
sourcetype = snort3:alert:json
  • 重启Splunk
sudo service Splunkd restart

现在,当Splunk启动时,它将扫描/var/log/snort目录中的json文件,将它们分配给sourcetype of snort3:alert:json把它们记录下去

从Splunk实例中登录(http://localhost:8000)(因为重新启动了服务器),单击左上角的Splunk>Enterprise链接,然后单击左侧的Search and Reporting app链接。在“搜索”字段中,输入以下文本:

sourcetype="snort3:alert:json"

然后单击绿色放大镜图标开始搜索,这将显示服务器正在收集的所有事件。可能看不到很多事件,特别是如果删除了从pcap文件创建的旧json文件。如果没有看到任何警报,可以使用ping创建一些新警报(请记住,之前创建了该规则)。在生成的事件和Splunk中显示的事件之间有一点延迟。如果仍然看不到任何警报,请将“时间范围”(搜索图标旁边的下拉列表设置为“过去24小时”)更改为“所有时间”,然后重新运行搜索。如果仍然没有看到任何事件,请检查/var/log/snort文件夹中是否有json文件

16、使用Splunk

下面是一些简单的搜索,要在包含时间、源、目标和消息的表中显示所有事件,请运行以下搜索:

sourcetype="snort3:alert:json"
| table _time src_ap dst_ap msg
  • 按目的地显示所有事件的计数
sourcetype="snort3:alert:json"
| stats count by dest
  • 要在地图上显示所有事件源
sourcetype="snort3:alert:json"
| iplocation src_addr
| stats count by Country
| geom geo_countries featureIdField="Country"

(可能需要单击“可视化”选项卡,然后单击“折线图”并将其更改为Choropleth地图)

对于许多事件,都会有base64编码的有效负载数据(b64_data)字段(http和SMTP就是一个很好的例子)。为了转换这些数据以便我们可以读取,我们使用“cyberchef”函数为每个事件转换数据(动态),并为每个事件添加一个名为“decrypted”的新字段

 sourcetype="snort3:alert:json" dest_port=80
| cyberchef infield='b64_data' outfield=decrypted operation="FromBase64"
| table src_addr, dst_addr, rule, msg, decrypted

使用Splunk的一些优秀免费资源包括

EBook

https://www.splunk.com/en_us/form/exploring-splunk-search-processing-language-spl-primer-and-cookbook.html

Free Online Training
https://www.splunk.com/en_us/training/free-courses/splunk-fundamentals-1.html

17、Splunk试用版到期换成免费版

Splunk目前运行的是免费企业试用模式只有60天,此时将许可证转换为免费模式,这与企业模式类似,只是删除了一些功能,发现会缺少的功能是使用用户名和密码登录服务器(允许任何人登录),以及失去了一些与集群相关的功能和将Splunk应用程序部署到其他服务器的能力

要更改许可证,请单击右上栏的“设置”,然后单击“许可证”

单击更改许可证组。选择“免费许可证”,然后单击“保存”,单击“立即重新启动”,然后单击“确定”

PS:此时,无法从远程计算机访问spunkweb界面,我们将通过Splunk Web反向代理解决

18、反向代理Splunk Web

使用免费许可证的Splunk不会阻止使用用户名和密码进行访问,并且只允许从本地计算机进行访问(取决于切换许可证时是否在本地连接),通过设置一个反向代理,Apache监听该服务器的端口80,需要一个密码,并将重定向到Splunk接口

  • 安装Apache和代理模块
sudo apt-get install -y apache2 apache2-utils
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
  • 创建新用户
sudo touch /etc/apache2/.htpasswd
sudo htpasswd /etc/apache2/.htpasswd <username>
  • 编辑apache配置文件,以在端口80上设置代理侦听
sudo vi /etc/apache2/sites-available/000-default.conf

在此文件中输入以下信息。如果已经有一个<VirtualHost*:80>部分,请将下面的设置添加到该部分中。告诉apache在端口80上侦听,需要身份验证(htaccess文件中的用户/密码),然后将所有授权的连接转发到端口8000(Splunk正在侦听

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
<Proxy *>
Order deny,allow
Allow from all
Authtype Basic
Authname "Password Required"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>
</VirtualHost>
  • 验证apache配置
sudo apachectl -t

PS:可能会得到一个关于服务器FQDN的错误,请忽略

  • 重新启动apache以加载更改
sudo systemctl restart apache2
  • 将Splunk配置为仅接受来自本地计算机的连接(通过代理重定向)
sudo vi /opt/splunk/etc/system/local/web.conf
  • 在“设置”部分下,添加一行:server.socket_host=localhost(如果文件为空,只需添加以下两行,否则将server.socket添加到“设置”部分)
[settings]
server.socket_host = localhost
  • 重新启动splunk以注册更改
sudo service Splunkd restart

现在尝试连接到端口80上的splunk服务器,系统会提示输入用户名和密码。如果尝试连接到端口8000,无法连接(除非是从同一台计算机连接)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装和部署Snort 2.9可以参考以下步骤: 1. 首先,你需要安装一些依赖文件。可以使用以下命令安装所需的依赖文件: - 在CentOS上执行:`yum install wget libdnet-devel pcapy pcre-devel pcre libpcap-devel gcc cc flex flex-devel bison zlib-devel zlib luajit luajit-devel openssl-devel -y` - 在Debian上执行:`apt-get install wget libdnet-devel pcapy pcre-devel pcre libpcap-devel gcc cc flex flex-devel bison zlib-devel zlib luajit luajit-devel openssl-devel -y` 2. 下载并安装DAQ(Data Acquisition Library)。可以使用以下命令下载和安装DAQ: ```shell wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz tar zxvf daq-2.0.7.tar.gz cd daq-2.0.7 ./configure make make install ``` 3. 下载并安装Snort 2.9。可以使用以下命令下载和安装Snort 2.9: ```shell wget https://www.snort.org/downloads/snort/snort-2.9.20.tar.gz tar zxvf snort-2.9.20.tar.gz cd snort-2.9.20 ./configure make make install ``` 4. 安装完成后,你可以使用以下命令检查Snort的版本: ```shell snort -V ``` 这些是在CentOS和Debian上安装和部署Snort 2.9的基本步骤。如果你遇到了任何错误或问题,可以参考安装过程中的错误信息来解决。例如,如果你在安装过程中遇到了"dnet header not found"错误,可以使用以下命令解决该问题: - 在CentOS上执行:`yum -y install libdnet-devel` - 在Debian上执行:`apt-get -y install libdumbnet-dev` 希望这些步骤能帮助你成功安装和部署Snort 2.9。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值