Snort浅析

Snort简介

Snort是免费开源的IDS/IPS(入侵检测/防御系统)系统,于1998年开发,旨在检测和响应网络中的可疑活动。包含流量/协议分析、内容匹配等功能,并可用预定义规则检测和防止各种攻击。官方网站:https://docs.snort.org/rules/

Snort有两个主要的版本,Snort2.X和Snort 3.0。前者使用范围较广,后者则是最新版本,在效率、性能等方面有了一些改进。

部署方式如下,IPS位于防火墙后,交换机前,因为要对恶意包进行拦截。如果是IDS则可以和交换机平行部署。Snort规则与典型的防火墙规则也非常相似。

工作机制

通过上面网络基础设施,到达IDS/IPS后,Snort插件进行抓包、解码、预处理、规则检测引擎。

数据包捕获与预处理

  • 数据包捕获(Packet Capture): Snort 使用 libpcap 库从网络接口捕获流量数据,将所有通过网卡的流量复制到Snort内部进行分析。Snort 在这一阶段获取所有网络数据包,不论其协议类型或端口号

  • 预处理(Preprocessor): 捕获的数据包进入 Snort 之前,会经过一系列预处理插件进行数据标准化、解码或初步检测。预处理器有助于将数据标准化,以确保 Snort 后续检测和匹配的准确性,并识别一些特定类型的攻击,如分片攻击或协议模糊攻击。

    常见的预处理器功能包括:

    • 数据包重组:对于被分片的 IP 包,Snort 会将其重新组装成完整的包。
    • 解码器:解码某些特定协议如 HTTP、DNS 等,以便进一步检测。
    • TCP 流重组:跟踪 TCP 连接的状态,确保可以识别基于会话的攻击。

预处理是以插件形式进行的,一是方便了开发者制定适合自己的预处理系统,另一方面可以提供多种不同的预处理插件供用户选择。

检测引擎

检测引擎是 Snort 的核心组件,负责根据定义的规则来分析数据包,检测是否存在恶意行为。如果规则与数据包匹配成功就会产生相应的告警并记录日志。

  • 规则集(Rule-Based System): Snort 的检测引擎基于一组灵活的规则。这些规则可以描述多种协议(如 TCP、UDP、ICMP 等)的攻击模式。每条规则由一个动作(如警告、记录等)、协议类型、源/目的地址、端口号,以及一系列可选的检测条件组成。

  • Snort 的检测依赖于规则库。规则库存储了大量的已知威胁模式,除了可以自定义规则,还可以采用Snort 社区和 Cisco Talos 定期更新并发布规则集。

  • 规则一般定义在rules文件夹下。在Snort进行初始化配置时,会将这些规则读入内存。

Snort规则

所有的规则都可以分成两部分:规则头部和规则选项。

规则头部

Action指定了Snort检测到匹配流量时进行的操作,包含alert、log、pass、drop等。常用的是alert生成告警并记录日志。log则是只记录不生成告警。

Protocol制定了要检测的网络协议,包含:tcp、udp、icmp、ip。

IP 地址与端口:源地址和目标地址可以使用具体 IP 地址、网段或 any 来表示任意地址。端口可以指定单一端口号,或使用范围(如 1000:2000),也可以使用 any 来匹配任意端口。Direction表示流量方向符号,->表示从源到目标的流量。

规则选项

规则选项用于进一步定义流量检测的具体条件以及触发警报时的动作。它们位于规则的圆括号内,每个选项由关键字和参数组成。常用关键字包含msg(规则匹配时生成的报警信息)、sid(唯一的规则标识符)、rev(规则版本)、content(检测数据包中的特定内容)、nocase(忽略大小写)、offset(开始搜索内容的起始位置)、depth(从起始位置起的搜索深度)、flags(tcp规则中用来匹配tcp报文的标志位SYN、ACK)、flow(指定数据包的方向和状态)、pcre(正则匹配)等。

规则库一般包含许多.rules文件。例如application.rules(应用程序检测规则)、database.rules(数据库检测规则)等。而每个rules文件则是诸多规则的合集,示例如下。

alert tcp any any -> any 80 (msg:"SQL Injection attempt detected"; content:"UNION SELECT"; nocase; http_uri; sid:1000001;)
alert tcp any any -> any 80 (msg:"Directory Traversal attempt"; content:"../"; http_uri; sid:1000002;)
alert tcp any any -> any 80 (msg:"Attempt to access /etc/passwd"; content:"/etc/passwd"; http_uri; sid:1000003;)

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

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

相关文章

出口摩洛哥提示 | 燃气器具和设备,2024年12月20日起需要标识Cmim Mark

Cmim Mark 为了证明产品符合摩洛哥的技术法规及标准,指导消费者正确选购,并协助政府有效管理市场,所有依据第24-09号法律规定的产品,必须加贴清晰的Cmim Mark,方可顺利进入摩洛哥市场。 根据摩洛哥官方公报发布的关于…

K歌与露营最搭配,AISON爱畅K歌音箱让露营更有趣

据市场调研数据显示,中国露营经济核心市场规模和带动市场规模均呈现逐年上升趋势,预计到2025年,中国露营经济核心市场规模将达到2483.2亿元。同时,《2024小红书搜索推广白皮书》显示,城市出行、音乐、旅游和户外等娱乐…

redis的配置文件redis.conf解析

我的后端学习大纲 我的Redis学习大纲 1.1.Redis的配置文件: 1.Redis的配置文件名称是:redis.conf 2.在vim这个配置文件的时候,默认是不显示行号的,可以编辑下面这个文件,末尾加上set nu,就会显示行号: 1.…

STM32应用详解(5)USART串口初始化

文章目录 一、USART初始化二、代码说明1.原理图2.main函数3.USART串口初始化函数4.代码整体结构 三、USART串口初始化总结 一、USART初始化 所谓的对USART进行初始化,就是对USART固件库函数的调用,来完成串口(USART)的设置,比如设置波特率、…

Docker 搭建mysql

拉取mysql镜像 docker pull mysql # 拉取镜像 [rooteason ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d…

开放式耳机什么品牌最好?热门开放式蓝牙耳机推荐!

如今,开放式耳机如雨后春笋般涌现,丰富的产品类型确实让不少消费者陷入了选择的困境。很多人不知道哪个牌子的耳机好用,不过别担心,我精心搜罗了一批兼具时尚外观与卓越性能的开放式耳机。作为有着多年音频设备研究经验的专业人士…

sql server 行转列及列转行

图1 图2 1.行转列 (图1->图2) 1.方法一 (数据库通用),使用max 加case when 函数 -- 行转列 图1->图2 SELECT name,MAX(CASE WHEN subject语文 THEN score ELSE 0 END) AS "语文",MAX(CASE WHEN subject数学 …

OpenAI GPT-o1实现方案记录与梳理

本篇文章用于记录从各处收集到的o1复现方案的推测以及介绍 目录 Journey Learning - 上海交通大学NYUMBZUAIGAIRCore IdeaKey QuestionsKey TechnologiesTrainingInference A Tutorial on LLM Reasoning: Relevant methods behind ChatGPT o1 - UCL汪军教授Core Idea先导自回归…

64页精品PPT | 汽车经销商数据应用解决方案

汽车经销商正面临前所未有的盈利能力挑战。从18年起 ,传统燃油车汽车行业开始步入低速增长阶段 ,卖车已经挣不到钱 ,利润往往来自任务完成的厂家返利;新兴的直营模式的出现 ,冲击了传统授权经销的方式 ,疫情…

【JS】双指针法获得满足四数之和且不重复的四元组

思路 本题做法与上一篇三数相加的做法相似,同样是使用双指针法,区别是这里多嵌一层循坏,遍历 i 和 j 的值( j i 1),思路可参考笔记: 【JS】双指针法获得满足三数之和且不重复的三元组https://…

Git合并多个分支中的提交内容

IDEA中使用 IEAD编辑器中使用Git IEAD编辑器中使用Git 案例一: 把test分支的其中提交的内容合并到main分支上。 你现在通过IDEA开发的分支是test分支,当你在test分支把内容都写完了并且提交内容保存到了本地的git暂存区中的时候,如果此时你的…

【JAVA毕业设计】基于Vue和SpringBoot的员工绩效考核系统

本文项目编号 T 021 ,文末自助获取源码 \color{red}{T021,文末自助获取源码} T021,文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例分析 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行…

【C语言刷力扣】367.有效的完全平方数

题目&#xff1a; 解题思路&#xff1a; 二分查找 时间复杂度&#xff1a; 空间复杂度&#xff1a; bool isPerfectSquare(int num) {int l 0, r 50000;while (l < r) {long long mid (l r) / 2;if (num < mid * mid) {r mid - 1;}else if (num > mid*mid) …

【番外】软件设计师中级笔记关于数据库技术更新笔记问题

提问 由于软件设计师中级笔记中第九章数据库技术基础的笔记内容太多&#xff0c;我应该分几期发布呢&#xff1f;还是一期一次性发布完成。 如果分为一期发布&#xff0c;可能需要给我多一些时间&#xff0c;由于markdown格式有所差异&#xff0c;所以我需要部分进行修改与调…

单链表的经典算法OJ

目录 1.反转链表 2.链表的中间节点 3.移除链表元素 ——————————————————————————————————————————— 正文开始 1.反转链表 typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {//判空if(…

企业级 RAG 全链路优化关键技术

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 邢少敏 | 阿里云智能集团高级技术专家 活动&#xff1a; 2024 云栖大会 - AI 搜索企业级 RAG 全链路优化关键技术 在2024云栖大会上&#xff0c;阿里云 AI 搜索研发负责人之一的…

基于微博评论的自然语言处理情感分析

目录 一、项目概述 二、需要解决的问题 三、数据预处理 1、词汇表构建&#xff08;vocab_creat.py&#xff09; 2、数据集加载&#xff08;load_dataset.py&#xff09; 四、模型构建&#xff08;TextRNN.py&#xff09; 1、嵌入层&#xff08;Embedding Layer&#xff…

【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)

目录 零.前置篇章 一.Cmake的由来 二.安装 三.创建并编写CMakeLists.txt 四.编译 五.优化CMakeLists.txt文件 零.前置篇章 【Linux快速入门(一)】Linux与ROS学习之编译基础&#xff08;gcc编译&#xff09;_ros linux-CSDN博客【Linux快速入门(二)】Linux与ROS学习之编译…

hadoop_hdfs详解

HDFS秒懂 HDFS定义HDFS优缺点优点缺点 HDFS组成架构NameNodeDataNodeSecondary NameNodeClient NameNode工作机制元数据的存储启动流程工作流程 Secondary NameNode工作机制checkpoint工作流程 DataNode工作机制工作流程数据完整性 文件块大小块太小的缺点块太大的缺点 文件写入…

高中数学网盘资料(每题有解析和知识点)

一、究极超能学习资源高中版 一数作为播放量过亿的哔站up实力非同一般 链接&#xff1a;https://pan.baidu.com/s/1xrcAlq6wj_LMYHcbxAKAWg 提取码&#xff1a;7MBW 复制这段内容打开「百度网盘APP 即可获取」 二、必刷题高考合订本&#xff08;刷题必备&#xff09; 链接&am…