在Ubuntu 上安装和配置Snort 3 NIDS
在Ubuntu 上安装和配置Snort 3 NIDS
概述
在本教程中,你将学习如何在Ubuntu21.04
上安装和配置Snort3NIDS
。Snort
是一个轻量级的网络入侵检测系统。它具有基于规则的日志记录功能,除了检测各种攻击和扫描(如缓冲区溢出、端口扫描、CGI攻击、SMB探测等)之外,还可以执行内容搜索/匹配。Snort
具有实时警报功能,可以将警报发送到 syslog
或者记录为一个单独的“警报”文件,甚至通过Samba
发送到Windows
计算机。
Snort 3
一些功能特性:
- 支持多线程
- 共享配置和属性表
- 使用简单的、脚本化配置
- 关键组件可热插拔
- 无端口配置的自动检测服务
- 在规则中支持粘性缓冲区
- 自动生成参考文档
- 更好的跨平台支持
安装Snort 3
Ubuntu 21.04
系统软件源目前提供的是 snort 2.9
版本
所以我们需要从源码编译安装Snort 3
1、更新系统软件源
osboxes@osboxes:~$ sudo apt update
2、安装依赖软件包和编译所需的一些工具
sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev
3、安装Snort DAQ
下载并安装最新版本的 Snort DAQ
(数据采集库)。 默认的 Ubuntu
软件库中不是最新版的,所以需要从源代码编译安装
osboxes@osboxes:~$ mkdir snortSourceFiles //建一个存放源码的目录
osboxes@osboxes:~$ cd snortSourceFiles
osboxes@osboxes:~/snortSourceFiles$ git clone https://github.com/snort3/libdaq.git //从github上下载daq源码
osboxes@osboxes:~/snortSourceFiles$ cd libdaq/
osboxes@osboxes:~/snortSourceFiles/libdaq$ ./bootstrap //编译安装
osboxes@osboxes:~/snortSourceFiles/libdaq$ ./configure
osboxes@osboxes:~/snortSourceFiles/libdaq$ sudo make
osboxes@osboxes:~/snortSourceFiles/libdaq$ sudo make install
4、安装Google
开发的线程缓存的malloc
:TCMalloc
(可选)
TCMalloc
提供高效的多线程内存管理实现,用于替代操作系统的内存分配相关的函数(malloc
、free
,new
,new[]
等),具有减少内存碎片、适用于多核、更好的并行性支持等特性。
osboxes@osboxes:~/snortSourceFiles/libdaq$ cd ..
osboxes@osboxes:~/snortSourceFiles$ wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.8/gperftools-2.8.tar.gz
osboxes@osboxes:~/snortSourceFiles$ tar xzf gperftools-2.8.tar.gz
osboxes@osboxes:~/snortSourceFiles$ cd gperftools-2.8/
osboxes@osboxes:~/snortSourceFiles/gperftools-2.8$ ./configure
osboxes@osboxes:~/snortSourceFiles/gperftools-2.8$ sudo make && sudo make install
5、从源代码安装 Snort 3
从Snort 3
的GitHub
库中获取源码
osboxes@osboxes:~/snortSourceFiles/gperftools-2.8$ cd ../
osboxes@osboxes:~/snortSourceFiles$ git clone https://github.com/snort3/snort3.git
编译安装
osboxes@osboxes:~/snortSourceFiles$ cd snort3/
osboxes@osboxes:~/snortSourceFiles/snort3$ sudo ./configure_cmake.sh --prefix=/usr/local --enable-tcmallocBuild Directory : build
Source Directory: /home/osboxes/snortSourceFiles/snort3
-- The CXX compiler identification is GNU 10.3.0
-- The C compiler identification is GNU 10.3.0
...........
-- Configuring done
-- Generating done
-- Build files have been written to: /home/osboxes/snortSourceFiles/snort3/build
osboxes@osboxes:~/snortSourceFiles/snort3$ cd build/
osboxes@osboxes:~/snortSourceFiles/snort3/build$ sudo make
osboxes@osboxes:~/snortSourceFiles/snort3/build$ sudo make install
更新共享库
osboxes@osboxes:~/snortSourceFiles/snort3/build$ sudo ldconfig
安装完成,查看snort
版本信息
osboxes@osboxes:~/snortSourceFiles/snort3/build$ snort -V ,,_ -*> Snort++ <*-o")~ Version 3.1.16.0 ''''By Martin Roesch & The Snort Team http://snort.org/contact#team Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using DAQ version 3.0.5 Using LuaJIT version 2.1.0-beta3 Using OpenSSL 1.1.1j16 Feb 2021 Using libpcap version 1.10.0 (with TPACKET_V3) Using PCRE version 8.39 2016-06-14 Using ZLIB version 1.2.11 Using LZMA version 5.2.5
以上信息说明Snort3
安装成功并且可以工作正常了。
配置Snort 3
网卡配置
首先,需要把 Snort
监听网络流量的网卡设置为混杂模式
osboxes@osboxes:~$ ip a show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:cb:31:9d brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.81.115/24 brd 192.168.81.255 scope global dynamic ens33 valid_lft 85892sec preferred_lft 85892secinet6 fe80::20c:29ff:fecb:319d/64 scope link valid_lft forever preferred_lft forever
osboxes@osboxes:~$ sudo ip link set dev ens33 promisc on //设置网卡为混杂模式
禁用网卡 Offload
功能,以防止 Snort
截断大于 1518
字节的大数据包。可以用以下命令检查是否启用了此功能:
osboxes@osboxes:~$ ethtool -k ens33 | grep receive-off
generic-receive-offload: on
large-receive-offload: off [fixed]
osboxes@osboxes:~$
可以看到 GRO
是启用状态,使用下列命令进行禁用:
osboxes@osboxes:~$ sudo ethtool -K ens33 gro off lro off
不过这个禁用和开启网卡混杂模式都是临时的,你可以把命令写入开机启动项中,让它重启后依然生效。
配置 Snort 3 规则集
规则集是Snort
的核心组成部分,主要有三种类型的规则集:
- Community Rules (社区规则集)* Registered Rules (注册规则集)* Subscriber Rules (订阅规则集)* 社区规则: Snort 免费规则集。* 注册规则:它们也是免费提供的,但必须注册才能获得它们。* 订阅规则: 商业付费规则集本教程以配置社区规则集为例。
创建Snort
规则存放目录。在/usr/local/etc/snort/snort_defaults.lua
配置文件中,默认的规则集存放路径(RULE_PATH)为/usr/local/etc/rules
。
osboxes@osboxes:~$ sudo mkdir /usr/local/etc/rules
从Snort
官网3`社区规则集
osboxes@osboxes:~$ wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
解压到规则集目录
osboxes@osboxes:~$ sudo tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/
osboxes@osboxes:~$ ls /usr/local/etc/rules/snort3-community-rules/
AUTHORSLICENSEsid-msg.mapsnort3-community.rulesVRT-License.txt
接下来,我们需要配置Snort 3
,Snort
的主配置文件为:/usr/local/etc/snort/snort.lua
。
修改其中的HOME_NET
变量和EXTERNAL_NET
变量,将HOME_NET
修改为需要进行网络攻击防范检测的网络范围。将EXTERNAL_NET
设置为除HOME_NET
以外的所有网络范围。
osboxes@osboxes:~$ sudo vim /usr/local/etc/snort/snort.lua
在ips
部分,定义规则集的路径:
你也可以修改/usr/local/etc/snort/snort_defaults.lua
配置文件,修改和定义Snort
的一些默认配置
安装 Snort OpenAppID
OpenAppID
是一个应用程序层插件,它使 Snort
能够检测网络中使用的各种应用程序,如 Facebook
、Netflix
、Twitter
等。
从 Snort
官网Snort OpenAppID
osboxes@osboxes:~$ wget https://www.snort.org/downloads/openappid/19913 -O OpenAppId-19913.tgz
Tips:请注意,这里的openappid
下载地址会因为更新而变化。
解压并复制到相应的目录:
osboxes@osboxes:~$ tar -xzf OpenAppId-19913.tgz
osboxes@osboxes:~$ sudo cp -R odp /usr/local/lib/
编辑 Snort 3
配置文件并指定 OpenAppID
库的位置
osboxes@osboxes:~$ sudo vim /usr/local/etc/snort/snort.lua
创建Snort
日志存放目录
osboxes@osboxes:~$ sudo mkdir /var/log/snort
检查snort
配置是否正确:
osboxes@osboxes:~$ snort -c /usr/local/etc/snort/snort.lua
--------------------------------------------------
o")~ Snort++ 3.1.16.0
--------------------------------------------------
Loading /usr/local/etc/snort/snort.lua:
Loading snort_defaults.lua:
Finished snort_defaults.lua:
......
Finished /usr/local/etc/snort/snort.lua:
--------------------------------------------------
pcap DAQ configured to passive.Snort successfully validated the configuration (with 0 warnings).
o")~ Snort exiting
提示Snort successfully validated the configuration (with 0 warnings).
表示配置文件正确。
创建自定义本地规则集,用来测试Snort
。
osboxes@osboxes:~$ sudo vim /usr/local/etc/rules/local.rules
创建一个用于检测ping
的规则,内容如下:
alert icmp any any -> $HOME_NET any (msg:"ICMP connection test"; sid:1000001; rev:1;)
测试规则是否编写正确:
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules
然后执行测试:
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i ens33 -A alert_fast -s 65535 -k none
然后在别的机器上执行ping
命令,ping snort主机,就可以看到输出的警告信息
配置Snort 3
的日志输出
修改snort
配置文件,在configure outputs
部分配置是否输出为文件
这样修改后,snort
将写入日志到文件alert_fast.txt
检查配置:
osboxes@osboxes:~$ snort -c /usr/local/etc/snort/snort.lua
执行测试,用-l
指定日志目录
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i ens33 -s 65535 -k none -l /var/log/snort/
警告会被写入到日志文件:
你可以把自定义规则路径写进snort.lua
配置文件中
设置Snort 为服务模式运行
虽然可以使用-D
参数将snort
设置为后台运行,但为了更加方便,我们可以为Snort
创建一个systemd
服务单元,让Snort
以服务模式运行。
为了安全起见,单独为snort
创建一个用户,并设置用户shell
为nologin
osboxes@osboxes:~$ sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort
创建snort3
服务:
osboxes@osboxes:~$ sudo vim /etc/systemd/system/snort3.service
内容如下:
[Unit]
Description=Snort 3 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 -i ens33 -m 0x1b -u snort -g snort[Install]
WantedBy=multi-user.target
重新加载systemd
配置,并修改/var/log/snort
目录权限。
osboxes@osboxes:~$ sudo systemctl daemon-reload
osboxes@osboxes:~$ sudo chmod -R 5775 /var/log/snort
osboxes@osboxes:~$ sudo chown -R snort:snort /var/log/snort
启动snort
服务并配置开机启动
osboxes@osboxes:~$ sudo systemctl enable --now snort3.service
Created symlink /etc/systemd/system/multi-user.target.wants/snort3.service → /etc/systemd/system/snort3.service.
osboxes@osboxes:~$
检查运行状态:
osboxes@osboxes:~$ sudo systemctl status snort3.service
● snort3.service - Snort 3 NIDS Daemon Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-11-18 03:02:05 UTC; 30s ago Main PID: 29398 (snort)Tasks: 2 (limit: 4544) Memory: 197.4M CGroup: /system.slice/snort3.service └─29398 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens33 -m 0x1b -u snort >Nov 18 03:02:05 osboxes systemd[1]: Started Snort 3 NIDS Daemon.
状态显示Active: active (running)
,说明服务运行正常。
至此,Snort 3
的安装和基本配置就完成了。其他更多配置和用法,可以参考Snort
官网的文档。
网络安全成长路线图
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:
# 网络安全学习方法
上面介绍了技术分类和学习路线,这里来谈一下学习方法:
## 视频学习
无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
在Ubuntu 上安装和配置Snort 3 NIDS相关推荐
- [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...
- 在Ubuntu 上安装和配置postfix邮箱服务器
Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件. 据估计,互联网上大约25%的公共邮件服务器运行Postfix. 本文介绍 如何在Ubuntu 20. ...
- 在Ubuntu上安装和配置OpenStack Nova
OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as ...
- 如何在 Ubuntu 上安装和配置 Redis
目录 Redis 简介 第 1 步 - 安装和配置 Redis 第 2 步 - 测试 Redis
- optimus切换 linux,在Ubuntu上安装和配置Nvidia Optimus驱动
在Nvidia和非Nvidia显卡之间切换 你可以通过按下Alt+F2或者从命令行键入下列命令实现Nvidia和非Nvidia(如Intel)显卡之间的切换: ~$ nvidia-settings 注 ...
- 在CentOS上安装和配置OpenNebula入门实例
导读 我们提到的云计算一般有三种类型:软件即服务(Software as a service, SaaS),平台即服务(Platform as a Service, PaaS)和基础架构即服务(Inf ...
- linux串口驱动安装 RPM,Devart数据库工具【教程】:在Linux(DEB / RPM)上安装和配置ODBC驱动程序...
ODBCDriver/驱动程序为基于ODBC的应用程序提供高性能和功能丰富的连接解决方案,可以直接从Windows,macOS,Linux(32位和64位)访问最流行的数据库.驱动程序完全支持标准OD ...
- 在Ubuntu上安装使用PostgreSQL数据库
1. 安装 apt update apt upgrade apt show postgresql sudo apt install postgresql postgresql-contrib serv ...
- ubuntu snort-mysql_安装和配置入侵检测与Snort,ACIDBASE,MySQL和Apache2在Ubuntu 9.04使用SPM...
使用Snort,ACIDBASE,MySQL和Apache2在Ubuntu 9.04上安装和配置入侵检测 本教程介绍如何在Ubuntu 9.04上使用Ubuntu的Synaptic Package M ...
最新文章
- Tensorflow 全网最全学习资料汇总之框架平台的综合对比【3】
- 23-hadoop-hive的DDL和DML操作
- Rstudio查看关联的R
- 将 VMware 最小化到系统托盘
- 通过crontab调度java -jar任务提示nohup: failed to run command `java': No such file or directory...
- c++ 用指针将函数作为参数传参
- 成功解决RuntimeError: Java is not installed, or the Java executable is not on system path
- metabase 以链接或图片查看_Python下载微信公众号文章内的图片
- 快排算法的Java实现
- Oracle 创建主键自增表
- CLR线程概览(一)
- oracle数据库主键消失,oracle数据库提示找不到主键
- matlab程序 surf算法,【求大神帮忙,surf算法源代码解析】
- 设计灵感|色彩叠加!这样的海报层次感更强
- linux修改jdk版本无效,关于windows和linux系统更换JDK版本后,修改环境变量也无法生效的原因和解决办法...
- jquery easyui里datagrid用法记录
- Cisco Packet Tracer思科模拟器单臂路由的配置
- JAVA 使用 itextpdf 构建 PDF
- copy的过去式_copy什么意思_copy是什么意思中文翻译
- python调用pyd失效