当前位置: 首页 > news >正文

蓝队知识浅谈(下)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

感谢泷羽sec 团队的教学
视频地址:蓝队基础之网络七层杀伤链_哔哩哔哩_bilibili

本文主要分享入侵检测与防御系统(IDS/IPS)中Snort的工作原理、配置方法以及一些常见的规则和操作方式。

一、入侵检测与防御概述

Snort是一个广泛应用的网络入侵检测和防御系统(IDS/IPS),它能够实时检测并响应网络中的各种威胁。网络安全专业人员需要理解并能根据具体需求修改Snort的规则。Snort支持配置为IDS模式(入侵检测系统)或IPS模式(入侵防御系统),根据规则检测和响应网络流量。

  • IDS模式:用于监控网络流量并发出告警,不干预流量本身。
  • IPS模式:通过阻断恶意流量,实现实时防御。

此外,像Fortinet等防火墙设备支持导入Snort规则,实现入侵检测和防御。

入侵检测系统(IDS)与入侵防御系统(IPS)
  • IDS:通常采用带外监视的方式部署,主要用于检测攻击并发出警报。
  • IPS:可以串联部署到网络流量路径中,能够主动阻止威胁,适用于需要快速响应的场景。

二、安装 Snort 和相关依赖涉

1. 安装 DAQ(数据采集库)

Snort 使用 DAQ(Data Acquisition)库来捕获和处理网络流量。不同平台可能有不同的安装方法,以下是通用的步骤:

安装 DAQ:
  1. 下载 DAQ 源代码

    wget https://github.com/snort3/snort3/releases/download/daq-3.0.0/daq-3.0.0.tar.gz
  2. 解压文件

    tar -xzvf daq-3.0.0.tar.gz cd daq-3.0.0
  3. 编译并安装 DAQ

    ./configure make sudo make install
  4. 验证 DAQ 安装: 确认 DAQ 是否正确安装,可以运行:

    daq --version这会显示 DAQ 的版本信息,确保安装成功。
2. 安装内存分配器(如 libpcap)

内存分配器在网络流量处理过程中起着重要作用,常用的内存分配器是 libpcap。Snort 会使用它来捕获和处理数据包。

安装 libpcap:
  1. 安装 libpcap(Debian/Ubuntu 系统)

    sudo apt update sudo apt install libpcap-dev
  2. 安装 libpcap(Red Hat/CentOS 系统)

    sudo yum install libpcap-devel
  3. 验证 libpcap 安装: 确认安装:

    pkg-config --cflags --libs libpcap
3. 安装Snort 3

Snort 3 是 Snort 的新版本,具有更多的特性和改进。安装 Snort 3 前,确保您的系统已经安装了 DAQ 和 libpcap。

  1. 下载 Snort 3 源代码: 访问 Snort 官方 GitHub 页面,下载 Snort 3 的最新版本:

    wget https://github.com/snort3/snort3/releases/download/3.1.0/snort3-3.1.0.tar.gz
  2. 解压 Snort 3 文件

    tar -xzvf snort3-3.1.0.tar.gz cd snort3-3.1.0
  3. 编译与安装 Snort 3

    ./configure --enable-sourcefire make sudo make install
  4. 配置环境变量: 添加 Snort 到环境变量中,编辑 ~/.bashrc 文件:

    export PATH=$PATH:/usr/local/snort3/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/snort3/lib

    然后运行:

    source ~/.bashrc
  5. 验证 Snort 安装: 运行以下命令检查 Snort 是否安装成功:

    snort -V
4.配置Snort 3

Snort 3 配置需要编辑相关的配置文件,定义网络接口、规则路径等。

  1. 创建配置文件: Snort 的配置文件通常位于 /usr/local/snort3/etc/snort/ 目录下,可以参考示例配置文件进行修改。常见的配置文件包括:

    • snort.lua:主配置文件,用于配置 Snort 的网络接口、规则路径等。
  2. 配置规则集: Snort 3 使用规则集来定义检测的网络活动。可以从 Snort 官方、Emerging Threats 等资源下载最新的规则集。

  3. 启动 Snort: 配置完成后,启动 Snort 进行流量分析:

    snort -c /usr/local/snort3/etc/snort/snort.lua
  4. 验证配置: 使用以下命令检查 Snort 是否能够正确加载规则并分析流量:

    snort -T
5. 自定义 Snort 规则

Snort 3 提供了强大的规则引擎,可以根据需要自定义规则,以检测特定的网络威胁。

编辑 Snort 规则:
  1. 规则文件路径: Snort 3 的规则文件通常存储在 /usr/local/snort3/etc/snort/rules/ 目录下。您可以在此目录下添加、修改规则文件。

  2. 自定义规则示例: 以下是一个简单的规则示例,它检测来自特定 IP 的 HTTP 请求:

    alert tcp 192.168.1.100 any -> $HOME_NET 80 (msg:"HTTP Request from 192.168.1.100"; sid:1000001;)
  3. 更新规则集: 在 Snort 配置文件中指定规则集的路径,Snort 会定期自动更新规则集,以应对新的威胁。

6. 配置和管理日志

Snort 可以生成日志以记录检测到的事件。在 snort.lua 配置文件中,可以设置日志格式、日志存储路径等。

配置日志:

snort.lua 中,您可以配置日志类型(如统一日志格式、标准日志等)并指定输出路径。例如:

output unified2: filename snort.u2, limit 128

三、Snort规则解析

Snort的规则由多个字段组成,每个字段的功能明确,有助于精确控制检测行为。以下是一些常见字段的解释和示例:

1. alert(告警规则)
  • 含义:指定规则是一个告警规则,当网络流量符合条件时,Snort会发出告警。
  • 示例:alert icmp any any -> $HOME_NET any (msg:"Test Ping Event"; sid:1000001; rev:1; classtype:icmp-event;)
    该规则监控ICMP协议(Ping)流量,并在符合条件时发出告警。
2. icmp(协议类型)
  • 含义:指定监控的协议类型,常见的有ICMP、TCP、UDP等。
  • 示例:alert icmp any any -> $HOME_NET any
    该规则监控所有ICMP流量。
3. any(通配符)
  •  含义any表示匹配任意IP地址或端口,通常用于较为宽泛的流量监控。
  • 示例:alert icmp any any -> $HOME_NET any
  • any表示源IP、源端口、目标IP和目标端口都可以是任意值。 
4. 方向运算符(->)
  • 含义:指定流量的方向。->表示从源到目标,<->表示双向流量。
  • 示例alert icmp any any -> $HOME_NET any
    表明流量是从任意源流向本地网络($HOME_NET)。
5. $HOME_NET(本地网络)
  • 含义:表示本地网络的IP范围,通常在配置文件中定义。
  • 示例alert icmp any any -> $HOME_NET any
    $HOME_NET是配置文件中定义的本地网络IP范围。
6. msg(告警信息)
  • 含义:设置告警的名称,便于管理员识别。
  • 示例msg:"Test Ping Event"
    当该规则被触发时,告警信息为“Test Ping Event”。
7. sid(签名ID)
  • 含义:为每条规则分配一个唯一的ID,以便标识和管理规则。
  • 示例sid:1000001
    规则的唯一签名ID。
8. rev(版本号)
  • 含义:用于标识规则的版本,以便追踪和管理规则的更新。
  • 示例rev:1
    表示该规则的版本为1。
9. classtype(告警分类)
  • 含义:对告警进行分类,帮助管理员更高效地处理告警。
  • 示例classtype:icmp-event
    将告警归类为ICMP事件。
示例规则解析

规则1:Telnet登录失败检测

alert tcp $HOME_NET 23 -> any any (msg:"Failed login attempt"; content:"Login incorrect"; sid:1000002; rev:1; classtype:attempted-user;)
  • 协议:tcp,协议为TCP。
  • 源和目标:$HOME_NET 23 -> any any,监控源自本地网络23端口(Telnet)的流量。
  • 告警信息:msg:"Failed login attempt",告警名称为“Failed login attempt”。
  • 检测内容:content:"Login incorrect",检测流量中是否包含“Login incorrect”字符串,表示Telnet登录失败。
  • 签名ID:sid:1000002,该规则的唯一标识。
  • 分类:classtype:attempted-user,分类为“用户登录尝试”。 

四、外部规则集资源

外部规则集为网络安全专家提供了更多的规则和更新,以帮助应对不断变化的安全威胁。以下是两个有用的外部规则集资源:

 1.Proofpoint 
  • 网址:Enterprise Cybersecurity Solutions, Services & Training | Proofpoint US
  • 内容:Proofpoint 提供了与网络安全相关的规则和其他资源,尤其专注于电子邮件安全、网络钓鱼检测、恶意软件防护等方面。通过该资源,用户可以获取关于如何防范网络攻击、提高监控效果的建议。这个资源可以帮助补充 Snort 的规则集,增强其对复杂威胁的检测能力。
 2.Emerging Threats 
  • 网址:https://rules.emergingthreats.netopen/
  • 内容:Emerging Threats 提供了大量针对新兴安全威胁的规则集。该资源包含了各种与最新攻击手段和漏洞相关的规则,能有效拓宽 Snort 的检测范围,使其能及时应对日益复杂的安全挑战。这些规则通常基于社区的贡献,具有高时效性和广泛的适用性。

五、Snort In Line部署与流量阻断

1. In Line 部署

In Line 部署是一种使 Snort 直接介入网络流量传输路径的部署方式,意味着 Snort 不再仅仅作为一个被动的监测系统,而是能够主动处理流量。通过将 Snort 部署在网络的流量路径上,当其检测到可疑流量时,可以立即采取响应措施,而不只是发出告警。这种方式适用于需要快速响应、实时阻断攻击的网络环境,能够有效防止恶意流量对网络造成影响。

优势

  • 实时干预:Snort 在流量经过时即可实时检测和处置恶意流量。
  • 提高响应速度:与传统的被动检测不同,In Line 部署可在攻击发生时迅速做出反应,及时阻断威胁。
  • 避免传播:直接拦截攻击流量,避免恶意流量传播到网络其他部分。
2. 阻断操作相关

Snort 提供了几种阻断流量的方式,确保在检测到恶意活动时可以采取合适的应对措施:

  • D drop

    • 定义:D drop 是 Snort 中的一种阻断操作,当规则触发时,Snort 会直接丢弃符合条件的流量,防止其继续在网络上传播。
    • 应用场景:适用于已明确为恶意的流量,如 DoS 攻击、网络扫描等,直接丢弃恶意流量,避免对网络造成进一步的威胁。
    • 优点:高效直接地拦截威胁,避免恶意流量的扩散。
  • sdrop

    • 定义:sdrop 是另一种丢弃流量的方式,其功能与 D drop 类似,但通常会与一些细节设置有所不同,可能与规则的优先级或特定配置相关。
    • 应用场景:sdrop 更适用于在某些情境下进行流量丢弃,但具体实现可能根据不同部署方式和需求有所变化。
    • 优点:提供了灵活性,可以根据网络环境或特定需求做出调整。
  • reject

    • 定义:reject 操作不仅会阻断流量,还会向源主机发送一个拒绝响应(如 ICMP 的 "destination unreachable" 消息),通知源端流量被拒绝。
    • 应用场景:这种方法适用于攻击源是可识别的并且希望与其进行交互的情况。通过返回拒绝响应,源端会知道其流量被阻断,可以增加透明度和反馈,有时有助于防止进一步的攻击。
    • 优点:不仅阻止了恶意流量,还可以为源端提供有意义的反馈,有助于维护网络秩序。
3. 结合条件子句、外部规则集与阻断操作

通过综合利用 Snort 的条件子句设置、外部规则集以及上述的 In Line 部署和阻断操作,您可以更全面地监控和防御网络中的恶意活动。例如:

  • 规则定制:根据网络环境和实际需求定制 Snort 规则,设置适当的条件子句来触发不同的响应。
  • 外部规则集:结合外部规则集,如 Proofpoint 和 Emerging Threats,增强 Snort 的检测能力,使其能够应对更复杂的攻击和威胁。
  • 部署和响应:选择合适的部署方式(如 In Line 部署)和阻断策略(如 D drop、sdrop、reject),以确保在检测到威胁时能够快速、有效地采取行动,保护网络不受影响。

http://www.mrgr.cn/news/75300.html

相关文章:

  • gitlab与jenkins
  • 大数据新视界 -- 大数据大厂之 Impala 性能飞跃:动态分区调整的策略与方法(上)(21 / 30)
  • Qt_day10_程序打包(完结)
  • Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III
  • Ruby编程语言全景解析:从基础到进阶
  • R语言机器学习与临床预测模型77--机器学习预测常用R语言包
  • 算法学习blog:day2 继续记日记
  • 内网穿透任意TCP端口,高并发多线程,让家庭电脑秒变服务器
  • 不安全 Rust
  • PostgreSQL物化视图详解
  • 陆军应恢复连排班建制
  • IPv6基础知识
  • 【数据分享】空间天气公报(2004-2021)(又名太阳数据活动公报) PDF
  • 跨域请求解决的核心
  • Rust 布尔类型
  • Kubernetes 中的存储探讨:PV、PVC 体系与本地持久化卷
  • PGMP练-DAY24
  • 力扣经典面试题
  • 【Hutool系列】反射工具-ReflectUtil
  • 嵌入式面试八股文(七)·#ifndef#define#endif的作用、以及内存分区(全局区、堆区、栈区、代码区)
  • Pwn VM writeup
  • from sklearn.feature_selection import VarianceThreshold.移除低方差的特征来减少数据集中的特征数量
  • .NET 9 - BinaryFormatter移除
  • 【AI日记】24.11.14 复习和准备 RAG 项目 | JavaScript RAG Web Apps with LlamaIndex
  • from sklearn.preprocessing import Imputer.处理缺失数据的工具
  • vue渲染模板遇到多层属性访问