Snort 入侵检测系统

一、实验目的

1.掌握snort IDS工作原理

2.应用snort 三种方式工作

二、实验环境

系统环境:Windows环境, kali环境

三、实验原理

1.snort IDS概述

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

2.snort IDS体系结构

Snort IDS体系结构图,如下图所示:

如上图所示,snort的结构由4大软件模块组成,它们分别是:

(1) 数据包嗅探模块——负责监听网络数据包,对网络进行分析;

(2) 预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎;

(3) 检测模块——该模块是snort的核心模块,当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;

(4) 报警/日志模块——经检测引擎检查后的snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket 、Windowspopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如snortSam),另外报警信息也可以记入SQL数据库。

3.snort应用

Snort采用命令方式运行。格式为:snort-[options]。Options为选项参数:filters为过滤器。

Snort命令 选项参数
-A <A=alert>报警方式:full(报警内容比较详细),fast(只记录报警时间),none(关闭报警功能)
-a 显示ARP包
-b 以tcpdump的格式将数据包记入日志
-c 使用配置文件文件内容主要控制系统哪些包需要记入日志,哪些包需要报警,哪些包可以忽略等。
-C 仅抓取包中的ASCLL字符
-d 抓取应用层的数据包
-D 在守护模式下运行snort
-e 显示和记录数据链路层信息
-F 从文件中读取BPF过滤信息
-i 使用网络接口文件
-N 关闭日志功能,报警功能仍然工作
-p 关闭混杂模式的嗅探
-s 将报警信息记录到系统日志,日志文件可以出现在/var/log/messages目录里
-V 显示版本号

四、实验步骤

1.启动kali虚拟机,在终端中输入命令:apt-get install snort 进行安装。(此处kali已安装snort)

Snort安装完成后,输入命令:snort -v,查看snort的版本信息,如下图所示:

2.自定义规则

使用自定义规则需要对snort配置文件进行配置工作,输入命令:leafpad/erc/snort/snort.conf,打开snort配置文件snort.conf,如下图所示:

在打开文件51行做如下修改,将IP变量HOME_NET的值改为本机kali主机的IP地址,如下图所示:

观察snort.conf配置文件可以发现规则文件都在路径RULE_PATH中,文件113行可以看到,RULE_ PATH 的值为/etc/snort/rules,所以规则文件都在/etc/snort/rules目录下,如下图所示:

在终端中输入命令进入目录:cd /etc/snort/rules,如下图所示:

在/etc/snort/rules 中开始自定义自己的规则文件,在/etc/snort/rules中打开终端,输入命令touch 70.rules创建新的规则文件,如下图所示:

返回snort.conf文件中,将578行至696行全部添加#号注释,在697行处添加如下内容用于在配置文件中包含自定义规则文件70.rules,此配置的目的是入侵检测模式使用snort的时候,snort仅以规则文件70.rules中自定义的规则来进行工作。如下图所示:(在配置文件snort.conf中包含自定义规则文件70.rules完成配置文件snort.conf修改后,保存文件)

接下来打开70.rules文件,添加一条简单的规则,如下图所示:

内容如下:alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"Web Access";sid:1)

[注释]:此条规则的含义为任何源地址不为kali本机地址,目标地址为kali本地地址,目标端口为80的TCP数据包都将触发报警

  1. alert:生成一个告警,然后记录这个包
  2. tcp:规则匹配数据包协议的类型为tcp
  3. $EXTERNAL_NET:IP地址,在snort.conf文件中定义
  4. any:跟随在IP地址之后的any表示任意端口号
  5. $HOME_NET:IP地址,在snort.conf文件中定义
  6. 80:表示80端口
  7. msg:在报警和包日志中打印的消息
  8. sid:规则的id号

报警输出文件为/var/log/snort目录下alert文件,打开一个新的终端,cd到报警文件所在目录/var/log/snort,使用tail -f命令动态的查看alert文件,即有新的报警信息存入alert文件时,新添加的报警信息将输出至终端显示,如下图所示:

在另一个终端中,启动apache2命令为:/etc/init.d/apache2 start,使得其它主机可以访问kali主机Web主页,如下图所示:

以入侵检测方式启动snort并添加-c命令使用配置文件snort.conf,命令为:snort -A full -c /etc/snort/snort.conf(配置文件中包含了自定义规则文件70.rules),如下图所示:

打开本地主机,使用浏览器访问kali主机Web主页(http://192.168.70.137/),如下图所示:

返回kali主机,可以得知alert文件中新添加了报警信息,从报警信息可知,IP为192.168.70.1的主机访问了kali本机的Web页面,如下图所示:

3.在70.rules文件中继续添加FTP规则,如下图所示:

FTP规则命令如下:

alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"USER LOGIN";content:"USER";sid:10000002;tag:host,10,packets,src;rev:1;)

snort.conf保存后,输入命令:snort -d -A full -c /etc/snort/snort.conf 启动snort服务,这里使用-d 参数是为了抓取应用层的数据包,如下图所示:

Kali 主机中使用命令/etc/init.d/vsftpd start 开启ftp服务,如下图所示:

在本机中,使用用户名:uftp,密码:123456对kali主机FTP服务器进行登录,登录成功后输入命令quit退出登录,如下图所示:

返回kali主机,可以看到alert新添加FTP报警信息如下图所示:

在/var/log/snort目录下可以看到新增日志文件snort.log.163929377,输入命令snort -dr snort.log.163929377,在终端打开新增加的日志文件,日志文件中已捕获用户登录的用户名及密码,且日志中保存的数据包个数刚好为11(触发规则的数据包和随后包触发规则源地址的数据包)。如下图所示:



4.在70.rules文件中继续添加新的规则,如下图所示:

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"We are being pinged!";icode:0;itype:8;sid:10000003;rev:1;)

在kali终端输入命令:snort -e -A full -c /etc/snort/snort.conf启动snort, -e 命令用于抓取链路层数据包,如下图所示:

在本地主机对kali 主机进行ping操作,如下图所示:

返回kali主机,可以看到新添加的报警信息,报警信息中还包含了ping操作的主机MAC地址,如下图所示:

[验证]:打开本地cmd输入命令ipconfig /all 查看是否一致,结果一致,如下图所示:

Snort 入侵检测系统的更多相关文章

  1. SNORT入侵检测系统

    SNORT入侵检测系统 YxWa · 2015/10/09 10:38 0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (ms ...

  2. 搭建开源入侵检测系统Snort并实现与防火墙联动

    Snort作为一款优秀的开源主机入侵检测系统,在windows和Linux平台上均可安装运行.BT5作为曾经的一款经典的渗透神器,基于 Ubuntu,里面已经预装很多的应用,比如Mysql.Apach ...

  3. 构建基于Suricata+Splunk的IDS入侵检测系统

    一.什么是IDS和IPS? IDS(Intrusion Detection Systems):入侵检测系统,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络.系统的运行状况进行监视,尽可能 ...

  4. 开源入侵检测系统OSSEC搭建之二:客户端安装

    上一篇文章中已经将OSSEC服务端的安装以及客户端的Key导出操作做了解说,接下来在另一台虚拟机中安装客户端,与安装服务端类似同样需要安装ossec,步骤如下. 一.下载ossec-hids-2.8. ...

  5. 开源入侵检测系统OSSEC搭建之一:服务端安装

    OSSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系统中.主要功能有日志分析.完整性检查.rootkit检测 ...

  6. Linux 上搭建 Snort+BASE 入侵检测系统

    配置实验环境 由于本人电脑的存储空间不足,无法再承担安装一个虚拟机的开销,因此在阿里云上申请了一个云服务器进行本次实验.服务器配置如下: 1 核 - 2GB 内存 - 40GB 系统盘 操作系统:Ub ...

  7. AIDE入侵检测系统

    一.AIDE简介 • AIDE(Advanced Intrusion Detection Environment)• 高级入侵检测环境)是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那 ...

  8. IDS入侵检测系统

    目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...

  9. linux入侵检测系统snort安装配置

    队长让俺瞅瞅snort,没想到安装配置都遇到问题...整理下过程,给跟我一样的家伙看看.. 由于本人机器是ubuntu,apt-get 几下就可以了,其实网上有不少这样的文章...之所以还要写就是.. ...

随机推荐

  1. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

    前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...

  2. 使用Typora+PicGo配置Gitee图床

    1.图床痛点 通常我们用 Typora 写 Markdown 文档,对于文档里面的图片,如果不使用图床,图片都是存放在本地,如果把文档复制到别的地方,还得额外复制图片,特别麻烦. 为了解决这种问题,一 ...

  3. 一个开源的C#和cefsharp项目:逐浪字体大师pc版上线(附源码开源)

    z01逐浪字体大师,是一款基于C#和web引擎开发的字体设计软件,可以打开直接写字,也可以链接官方资源 ,附Github开源库,欢迎大家下载.客户端技术是基于wpf设计的,整个界面精美,与逐浪CMS技 ...

  4. APM监控--(三)zipkin部署手册

    一,基础知识储备分布式跟踪的目标一个分布式系统由若干分布式服务构成,每一个请求会经过多个业务系统并留下足迹,但是这些分散的数据对于问题排查,或是流程优化都很有限,要能做到追踪每个请求的完整链路调用,收 ...

  5. 关于【【故障公告】数据库服务器 CPU 近 100% 引发的故障(源于 .NET Core 3.0 的一个 bug)】IS NOT NULL测试

    测试如图,Core_Users的PhoneNumber可为空,存在索引,记录数1500000+ 增加is not null,查询计划消耗增加了一个0%的筛选器消耗,IO消耗如下一模一样 如果是IS N ...

  6. [cf1219G]Harvester

    分类讨论(以下仅考虑行,列的情况):1.4行的,求出每一行的和后找到4个最大值即可:2.3行1列,枚举列,再将每一行最大值减去那一列的值后取3个最大值得和即可:3.2行2列,发现行和列是等价的,因此可 ...

  7. Kafka从入门到放弃(一) —— 初识Kafka

    消息中间件的使用已经越来越广泛,基本上具有一定规模的系统都会用到它,在大数据领域也是个必需品,但为什么使用它呢?一个技术的广泛使用必然有它的道理. 背景与问题 以前一些传统的系统,基本上都是" ...

  8. CF1477A Nezzar and Board

    考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...

  9. Atcoder Grand Contest 005 E - Sugigma: The Showdown(思维题)

    洛谷题面传送门 & Atcoder 题面传送门 记先手移动棋子的树为红树,后手移动棋子的树为蓝树. 首先考虑一个性质,就是如果与当前红色棋子所在的点相连的边中存在一条边,满足这条边的两个端点在 ...

  10. MariaDB—备份数据库

    1> 备份单个数据库 mysqldump -uroot -plichao123 --database students1 > stundents.sql; 2>查看备份文件 3> ...