原文源自:https://www.jianshu.com/p/113345bbf2f7

前言

防火墙可以比喻为办公室门口的警卫,用来检查进出者的身份。而入侵检测系统就像是网上的警报器,当发现入侵者时,指出入侵者的来历、他们正在做什么。入侵检测系统被视为防火墙之后的第二道安全闸门。

Snort IDS概述

Snort IDS(入侵检测系统)是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,Snort是开源的入侵检测系统,并具有很好的扩展性和可移植性。

Snort IDS体系结构

Snort的结构由4大软件模块组成,它们分别是:
   (1)数据包嗅探模块——负责监听网络数据包,对网络进行分;
   (2)预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎;
   (3)检测模块——该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;
   (4)报警/日志模块——经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库。

Snort的3中工作模式

Snort拥有三大基本功能:嗅探器、数据包记录器和入侵检测。嗅探器模式仅从网络上读取数据包并作为连续不断的流显示在终端上,常用命令snort -dev。数据包记录器模式是把数据包记录到硬盘上,常用命令snort -b。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。

从本质上说,Snort与tcpdump和snoop一样,都是网络数据包嗅探器。因此,嗅探器模式是Snort工作的基本模式。只要运行Snort时不加载规则,它就可以从网络上读取数据包并连续不断地显示在屏幕上,直到用户按下Ctrl+C键终止。这时,Snort将显示统计信息。Snort使用Libpcap网络驱动库。在这种模式下,Snort将网卡设置为混在模式,读取并解析共享信道中的网络数据包。

在嗅探模式下,Snort也可以将这些信息记录到日志文件中。这些文件随后可以用Snort或者tcpdump查看。这种模式的用户并非很大,因为现在很多可以记录包的工具了。在这种模式下并不需要snort.conf配置文件。

入侵模式需要载入规则库才能工作。在入侵模式下,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警。如果包并不与任何一个规则匹配,那么它将会被悄悄丢弃,并不做任何记录。运行Snort的入侵检测模式的时候,通常会在命令行指定一个配置文件。

Snort规则

Snort规则定义

Snort使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。Snort规则是基于文本的,规则文件按照不同的组进行分类,比如,文件ftp.rules包含了FTP攻击内容。「注」Snort的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。Snort的每条规则都可以分成逻辑上的两个部分:规则头和规则体。

规则头

规则头包括4个部分:规则行为;协议;源信息;目的信息。下图是对于规则头的描述。

snort规则头Snort预置的规则动作有5种:
   (1)pass—动作选项pass将忽略当前的包,后继捕获的包将被继续分析。
   (2)log—动作选项log将按照自己配置的格式记录包。
   (3)alert—动作选项alert将按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全防护工作变得低效。 
   (4)dynamic—动作选项dynamic是比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包。
   (5)activate—动作选项activate功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则。在检测复杂的攻击,或对数据进行归类时,该动作选项相当有用。
  除了以上5种预置的规则动作类型,用户还可以定制自己的类型。

规则体

规则体的作用是在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击(Snort的规则定义中可以没有规则体)。规则体由若干个被分别隔开的片断组成,每个片断定义了一个选项和相应的选项值。一部分选项是对各种协议的详细说明,包括IP、ICMP和TCP协议,其余的选项是:规则触发时提供给管理员的参考信息,被搜索的关键字,Snort规则的标识和大小写不敏感选项。
下面是一个规则实例。
  alert tcp !192.168.0.1/24 any ->any 21 (content:"USER";msg: "FTP Login";)

  • alert表示规则动作为报警。
  • tcp表示协议类型为TCP协议。
  • !192.168.0.1/24表示源IP地址不是192.168.0.1/24。
  • 第一个any表示源端口为任意端口。
  • ->表示发送方向操作符。
  • 第二个any表示目的IP地址为任意IP地址。
  • 21表示目的端口为21。
  • content:"USER"表示匹配的字符串为“USER”。
  • msg:"FTPLogin"表示报警信息为“FTPLogin”。

此外,还有一个双向操作符<>,它使Snort对这条规则中,两个IP地址/端口之间的数据传输进行记录/分析,例如telnet或者POP3对话。下面的规则表示对一个telnet对话的双向数据传输进行记录:

      log 192.168.0.1/24 any <> 192.168.0.1/24 23
  activate/dynamic规则对扩展了snort功能。使用activate/dynamic规则对,你能够使用一条规则激活另一条规则,当一条特定的规则启动,如果你想要snort接着对符合条件的数据包进行记录时,使用activate/dynamic规则对非常方便。除了一个必需的选项activates外,激活规则非常类似于报警规则(alert)。动态规则(dynamic)和日志规则(log)也很相似,不过它需要一个选项:activated_by。动态规则还需要另一个选项:count。当一个激活规则启动,它就打开由activate/activated_by选项之后的数字指示的动态规则,记录count个数据包。
下面是一条activate/dynamic规则对的规则:
             activate tcp any any -> any 23(activates:111;msg:"Telnet Login";)    

       dynamic tcp any any -> any 23 (activated_by:111;count:20;)
  当发现Telnet默认使用的23端口有通信,activate规则会被触发并启动dynamic规则,然后dynamic规则将遵循配置,记录后面的20个数据包。在上面的例子里activate规则的“activates”值为111,dynamic规则的“activated_by”值为111,这样就把两个规则关联起来,而不是因为这两个规则有相同的规则头。

预处理

预处理器在调用检测引擎之前,在数据包被解码之后运行。通过这种机制,Snort可以以一种out of band的方式对数据包进行修改或者分析。
  预处理器可以使用preprocessor关键词来加载和配置,常用到的预处理器如下:
  (1)HTTPdecode预处器HTTP解码预处理模块用来处理HTTPURL字符串,把它们转换为清晰的ASCII字符串。
  (2)端口扫描器portscan端口扫描器会把由单个源IP地址发起的端口扫描从开始到结束的全过程记录到标准日志。
  (3)stream处理器stream处理器为snort提供了TCP数据包重组的功能。在配置的端口上,stream处理器能够对TCP数据包的细小片段进行重组,使之成为完整的TCP数据包,然后snort可以对其可疑行为进行检查。
  (4)frag2处理器frag2预处理器为snort提供了IP分片重组的功能。frag2预处理器能够对分片包进行重组来定位分片攻击,它的工作原理是将所有的分片重组构造成一个包含完整信息的数据包,再将这个包传给检测引擎。

Snort入侵检测系统简介相关推荐

  1. Snort 入侵检测系统简介

    0x00 snort 简介 Snort (开源) 基于 libpcap,它是一种基于特征检测的入侵检测系统. 一.体系结构   Snort 由四大模块组成:数据包嗅探模块.预处理模块.检测模块.报警/ ...

  2. Snort入侵检测系统使用示例

    1998年,Martin Roesch用C语言开发了开源的入侵检测系统Snort.现如今Snort已发展成为一个具有多平台.实时流量分析.网络IP数据包记录等特性的强大的网络入侵检测/防御系统,是世界 ...

  3. 开源的 Snort 入侵检测系统中存在高危漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 开源的思科 Snort 检测和预防系统中存在一个漏洞 (CVE-2022-20685),可触发拒绝服务条件并使其无法抵御恶意流量. 该漏洞的CV ...

  4. snort入侵检测系统下载Linux,入侵检测系统Snort 2.9.0.2 发布

    Snort 是一个免费的.跨平台的软件包,用作监视小型 TCP/IP 网的嗅探器.日志记录.侵入探测器.Snort 是全世界上使用最广泛的入侵预防与侦测软件. Snort 有三种工作模式:嗅探器.数据 ...

  5. Snort入侵检测系统实验

    实验内容 搭建网络防御环境 学习使用检测工具Snort 对网络进行攻击,查看和分析网络防御工具报告 对实验结果进行分析整理,形成结论 三.实验步骤 安装入侵检测系统Snort 安装daq依赖程序,输入 ...

  6. 基于Snort的入侵检测系统_相关论文

    摘 要 随着网络技术的发展,中小型企业已建设了属于自己的信息化业务平台与系统.中小型企业只有实现信息互通,资源共享,才能够在当今的竞争中生存下去,但信息的互通会面临一些安全问题,对此需要对其采取一些措 ...

  7. snort create mysql_Snort入侵检测系统构建

    Snort入侵检测系统构建 难度等级:中等 实验时长:200min [实验目的] 通过本实验掌握snort入侵检测系统的搭建以及相关配置. [实验环境] Snort服务器登录信息: 用户名: coll ...

  8. 网络入侵检测系统(IDS)的安装部署

    1:实验简介 实验所属系列:入侵检测与入侵防御/防火墙技术 实验对象:本科/专科信息安全专业 相关课程及专业:信息网络安全概论.计算机网络技术 实验时数(学分):4学时 实验类别:实践实验类 2:实验 ...

  9. 实验十六:网络入侵检测系统(IDS)的安装部署

    实验十六:网络入侵检测系统(IDS)的安装部署 一.实验目的及要求 1)了解入侵检测系统的基本概念和工作原理. 2)掌握snort入侵检测系统的安装和使用方法. 二.实验原理 1)入侵检测系统 入侵检 ...

最新文章

  1. 值得深思的问题——分库分表就能无限扩容吗?
  2. python structure_GitHub - CYZYZG/Data_Structure_with_Python: 这是我在学习《基于Python的数据结构》的时候的笔记与代码...
  3. linux SIGHUP
  4. 信贷全流程监控报表有哪些?
  5. linux下sort详解(sort对科学记数法的排序)
  6. rails3高端observer模式
  7. PHP 运行 php-fpm 报错
  8. Abseil之Return Policy
  9. android卡片式通知,原子通知+超级卡包,OriginOS比传统安卓更懂用户的需求
  10. Atitit.软件开发的几大规则,法则,与原则Principle v3
  11. ASP.net开发实践系列视频教程(总共53课) 天轰穿新的视频
  12. Swift之属性的使用和实例展示
  13. 互联网下半场的基本玩法
  14. 新浪邮箱开通imap服务器,新浪帮助-常见问题
  15. 打印机生产食物?3D打印技术推出人造肉口感佳
  16. 高校企业双向赋能,首届飞桨启航菁英计划圆满结束
  17. 计算机识别不了佳能打印机,佳能IP4200打印机“无法识别墨水盒”解决办法
  18. Getfasta--根据Acession Number(Ac号)批量下载GenBank分子序列数据的自动化程序
  19. 国内下载vscode速度慢问题解决
  20. Verilog语言快速入门

热门文章

  1. 小白虚拟机Centos8部署zabbix6.0教程
  2. 电子电气架构——车载诊断通信参数
  3. Lily HBase Indexer使用整理
  4. python box2d例子_box2dpython教程
  5. 超标量、超级流水线、超长指令字、向量机
  6. vim技巧:实现鼠标可以控制光标快速定位
  7. cognos安装启动遇到的问题详解二
  8. 洛谷[P2921]在农场万圣节
  9. neo4j构建农业知识图谱
  10. 超链接的目标属性值意义_超链接属性里面目标下拉各选项的意义是什么