在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]在Ubuntu 上安装和配置Snort 3 NIDS#概述在本教程中,你将学习如何在Ubuntu21.04上安装和配置Snort3NIDS。Sn

在Ubuntu 上安装和配置Snort 3 NIDS

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

#概述

在本教程中,你将学习如何在Ubuntu21.04上安装和配置Snort3NIDS。Snort是一个轻量级的网络入侵检测系统。它具有基于规则的日志记录功能,除了检测各种攻击和扫描(如缓冲区溢出、端口扫描、CGI攻击、SMB探测等)之外,还可以执行内容搜索/匹配。Snort具有实时警报功能,可以将警报发送到 syslog或者记录为一个单独的“警报”文件,甚至通过Samba发送到Windows计算机。

Snort 3一些功能特性:

  • 支持多线程
  • 共享配置和属性表
  • 使用简单的、脚本化配置
  • 关键组件可热插拔
  • 无端口配置的自动检测服务
  • 在规则中支持粘性缓冲区
  • 自动生成参考文档
  • 更好的跨平台支持

【——全网最全的网络安全学习资料包分享给爱学习的你,关注我,私信回复“领取”获取——】

1.网络安全多个方向学习路线

2.全网最全的CTF入门学习资料

3.一线大佬实战经验分享笔记

4.网安大厂面试题合集

5.红蓝对抗实战技术秘籍

6.网络安全基础入门、Linux、web安全、渗透测试方面视频

#安装Snort 3

Ubuntu 21.04系统软件源目前提供的是 snort 2.9版本

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

所以我们需要从源码编译安装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-tcmalloc

Build 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.1j  16 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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::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 1000
    link/ether 00:0c:29:cb:31:9d brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.81.115/24 brd 192.168.81.255 scope global dynamic ens33
       valid_lft 85892sec preferred_lft 85892sec
    inet6 fe80::20c:29ff:fecb:319d/64 scope link 
       valid_lft forever preferred_lft forever
osboxes@osboxes:~$ sudo ip link set dev ens33 promisc on //设置网卡为混杂模式

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

禁用网卡 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官网https://www.snort.org/downloads/#snort-3.0下载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/
AUTHORS  LICENSE  sid-msg.map  snort3-community.rules  VRT-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
在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

在ips部分,定义规则集的路径:

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

你也可以修改/usr/local/etc/snort/snort_defaults.lua配置文件,修改和定义Snort的一些默认配置

#安装 Snort OpenAppID

OpenAppID 是一个应用程序层插件,它使 Snort 能够检测网络中使用的各种应用程序,如 Facebook、Netflix、Twitter等。

从 Snort 官网(https://www.snort.org/downloads/#snort-3.0)下载并安装 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
在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

创建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主机,就可以看到输出的警告信息

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

配置Snort 3的日志输出

修改snort配置文件,在configure outputs部分配置是否输出为文件

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

这样修改后,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/

警告会被写入到日志文件:

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

你可以把自定义规则路径写进snort.lua配置文件中

在Ubuntu 上安装和配置Snort 3 NIDS[亲测有效]

#设置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官网的文档。

#参考资料

https://www.scribd.com/document/478120742/Snort-3-on-Ubuntu-pdf

https://www.snort.org/documents

#说明

关于合天网安实验室

合天网安实验室(www.hetianlab.com)-国内领先的实操型网络安全在线教育平台 真实环境,在线实操学网络安全 ; 实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12044.html

(0)

相关推荐

  • Python模块 – 数据分析与可视化

    Python模块 – 数据分析与可视化数据分析是指通过对数据进行收集、清洗、分析、可视化,以及提取有价值的信息和知识,以支撑决策或者展示数据本身的过程。Python是一种强大的工具,能够轻松地完成数据分析工作。

    2024-03-13
    31
  • 达梦数据库sql语法_数据库基本语法

    达梦数据库sql语法_数据库基本语法数据库-SQL 语法 二十余年如一梦,此身虽在堪惊。 简介:数据库-SQL 语法 一、基础 模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 主键的值不允许修改,也

    2023-04-19
    123
  • 实战笔记丨JDBC问题定位指南「建议收藏」

    实战笔记丨JDBC问题定位指南「建议收藏」JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集。JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首…

    2023-03-16
    102
  • 使用Python的gmtime函数

    使用Python的gmtime函数Python是一种高级编程语言,多用于解决科学计算、数据分析、Web开发等领域的问题。在Python的标准库中,提供了许多常用的函数和模块,其中gmtime()函数就是其中之一。gmtime()函数可以将时间戳转换为具有UTC时间的时间元组,提供了很多便利,下面我们来了解一下。

    2024-04-18
    24
  • Neo4j安装过程详解[通俗易懂]

    Neo4j安装过程详解[通俗易懂]在安装neo4j之前,需要安装Java JRE,并配置Java开发环境,然后安装neo4j服务。 一、CentOS下安装 1.下载Neo4j 去官网下载最新的neo4j,选择社区版。地址:https:

    2022-12-26
    107
  • php操作mysql数据库(增删改查)_docker搭建php开发环境

    php操作mysql数据库(增删改查)_docker搭建php开发环境【Mysqli面向对象方式操作数据库】 添加、修改、删除数据 $mysqli = new mysqli('localhost','root','123456&#

    2023-01-23
    103
  • SQL 谓词简介_sql 谓词

    SQL 谓词简介_sql 谓词学习重点 谓词就是返回值为真值的函数。 掌握 LIKE 的三种使用方法(前方一致、中间一致、后方一致)。 需要注意 BETWEEN 包含三个参数。 想要取得 NULL 数据时必须使用 IS NULL。

    2023-04-29
    96
  • 多线程之线程池「建议收藏」

    多线程之线程池「建议收藏」小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 创建线程会产生系统开销,并且每个线程会占用一定的内存等资源,同时线程的销毁也需要带来一定的压力。过多的线程还会带来由于上下文切换等等的性能损

    2023-07-27
    86

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注