蓝队知识浅谈(下)

声明:学习视频来自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),以确保在检测到威胁时能够快速、有效地采取行动,保护网络不受影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915935.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用CNN进行验证码识别:深度学习与图像预处理教程

验证码&#xff08;CAPTCHA&#xff09;广泛用于区分人类和自动化程序&#xff08;如机器人&#xff09;&#xff0c;通常由扭曲的字母、数字或符号组成。为了实现验证码的自动识别&#xff0c;深度学习尤其是卷积神经网络&#xff08;CNN&#xff09;非常有效。本文将带你一起…

基于 Python Django 的二手房间可视化系统分析

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

探索 Sentinel 服务容错

Sentinel 是阿里巴巴开源的一款高可用防护组件,主要用于分布式系统中的流量控制、熔断降级和系统负载保护。它在 Java 微服务架构中扮演着重要的角色,帮助开发者确保系统的稳定性和可靠性。 以下是 Sentinel 的一些关键特性: 流量控制(Flow Control):通过对请求进行限流…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件&#xff0c;支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的&#xff0c;想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

Dubbo 3.x源码(24)—Dubbo服务引用源码(7)接口级服务发现订阅refreshInterfaceInvoker

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo3.1版本的MigrationRuleHandler这个处理器&#xff0c;它用于通过动态更改规则来控制迁移行为。MigrationRuleListener的onrefer方法是Dubbo2.x 接口级服务发现与Dubbo3.x应用级服务发现…

企业如何提高招聘能力?

企业如何提高招聘能力&#xff1f; 许多企业在进行招聘工作时&#xff0c;常常会遇到各种问题和挑战。尽管付出了大量的时间和精力&#xff0c;但结果却并不总是如人意。例如&#xff0c;企业可能会经历一次又一次的面试&#xff0c;却仍然找不到一个能够适应岗位要求的合适人…

JAVA:探索 EasyExcel 的技术指南

1、简述 在 Java 开发中&#xff0c;Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案&#xff0c;特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景&#xff0c;并通过实例展示其基本用法…

AI制作ppt

1&#xff0c;kimi&#xff1a; 实际上也是AiPPT.cn这个网站&#xff08;但是有实际次数限制&#xff09; 2&#xff0c;其余专业AI ppt生成网站&#xff1a; &#xff08;1&#xff09;gamma&#xff1a;https://gamma.app/ 大概能制作7~10页左右 free的ppt&#xff0c;其余要…

穿越数据迷宫:C++哈希表的奇幻旅程

文章目录 前言&#x1f4d4;一、unordered系列关联式容器&#x1f4d5;1.1 unordered 容器概述&#x1f4d5;1.2 哈希表在 unordered 容器中的实现原理&#x1f4d5;1.3 unordered 容器的特点 &#x1f4d4;二、unordered_set 和 unordered_map 的基本操作&#x1f4d5;2.1 un…

数据结构 -二叉搜索树

一.什么是二叉搜索树 树插入删除方便比线性数组 二.二叉搜索树的查找操作 尾递归可以用循环递归 三.二叉树的插入操作 35要挂在33上面必须记住33的位置 解决方法&#xff0c;要求递归函数返回一个 结点插到33的右子树 四.二叉搜索树的删除 要是删除的是叶子节点之间删除 只有一…

计算机三级 数据库技术

第一章 数据库应用系统开发方法 1.1 数据库应用系统生命周期 软件工程:软件工程的思想&#xff0c;即用工程的概念、原理、技术和方法对软件生产、开发的全过程进行跟踪和管理 软件开发方法:瀑布模型、快速原型模型、螺旋模型 DBAS生命周期模型 1.2 规划与分析 系统规划与定…

使用 AMD GPU 推理 Mixtral 8x22B

Inferencing with Mixtral 8x22B on AMD GPUs — ROCm Blogs 2024年5月1日&#xff0c;由 Clint Greene撰写。 简介 自从Mistral AI’s AI发布了Mixtral 8x7B以来&#xff0c;专家混合&#xff08;MoE&#xff09;在AI社区重新获得了关注。受此发展启发&#xff0c;多个AI公…

前后端、网关、协议方面补充

这里写目录标题 前后端接口文档简介前后端视角对于前端对于后端代码注册路由路由处理函数 关于httpGET/POST底层网络关于前端的获取 路由器网关路由器的IP简介公网IP(WAN IP)私网IP(LAN IP)无线网络IP(WIFI IP)查询路由器私网IP路由器公网IP LAN口与WIFI简介基本原理 手动配置电…

leetcode104:二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…

大语言模型理论基础

文章目录 前言大语言模型必需知识概述大语言模型目标模型上下文神经网络的神经元常见激活函数SigmoidTanhRelusoftmax 通用近似定理多层感知机&#xff08;MLP&#xff09;拟合最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;我们接下来对大语言模型一探究竟&#xff0c;…

关于VUE NPM安装失败的问题

最近使用 npm install --registryhttps://registry.npmmirror.com 安装一个新项目的依赖&#xff0c;各种失败。 最后发现是package-lock里面有老的淘宝的域名&#xff0c;整体替换掉就行了

【数据结构】宜宾大学-计院-实验七

实验七 二叉树 一、实验目的&#xff1a;二、实验内容&#xff1a;三、实验结果&#xff1a;1,2&#xff1b;3,4,5;6.数组顺序存储的优缺点二叉链表存储的优缺点 一、实验目的&#xff1a; 掌握二叉树的顺序存储结构 掌握二叉树的链式存储结构 二、实验内容&#xff1a; 1&am…

游戏如何应对内存修改

据观察&#xff0c;近年来游戏黑灰产攻击角度多样化趋势显著&#xff0c;主要面临工作室、定制注入挂、模拟点击挂、内存修改挂、破解版等多方面安全问题。 据FairGuard数据统计&#xff0c;在游戏面临的众多安全风险中&#xff0c;「内存修改」攻击占比约为13%&#xff0c;主…

git重置的四种类型(Git Reset)

git区域概念 1.工作区:IDEA中红色显示文件为工作区中的文件 (还未使用git add命令加入暂存区) 2.暂存区:IDEA中绿色(本次还未提交的新增的文件显示为绿色)或者蓝色(本次修改的之前版本提交的文件但本次还未提交的文件显示为蓝色)显示的文件为暂存区中的文件&#xff08;使用了…

Clickhouse集群新建用户、授权以及remote权限问题

新建用户 create user if not exists user on cluster 集群名称 IDENTIFIED WITH plaintext_password BY 密码;给用户授查询、建表、删表的权限 GRANT create table,select,drop table ON 数据库实例.* TO user on cluster 集群名称 ;再其他节点下用户建本地表成功&#…