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

网络安全——基于Snort的入侵检测实验

一、实验目的要求:

二、实验设备与环境:

三、实验原理:

四、实验步骤:

五、实验现象、结果记录及整理:

六、分析讨论与思考题解答:

七、实验截图


一、实验目的要求:

1、掌握Snort的安装配置方法。

2、掌握Snort规则定义方法。

3、掌握使用Snort分析网络状态的方法。

4、具体内容:

1)学习Snort工作原理。

2)配置Snort规则文件。

3)使用Snort检测网络入侵事件。


二、实验设备与环境:


三、实验原理:

1、入侵检测系统的概述、作用、原理

针对计算机和网络资源的恶意使用行为进行分析、处理,是一种基于检测计算机中违反安全策略行为的技术,主要是保障计算机系统的安全,检测未授权、异常行为。

根据入侵的分类,可分为外部入侵和内部入侵;依据入侵的方向,进行入侵检测,即分为基于网络和基于文件系统变化。

其中基于网络的入侵检测系统的组件有:数据捕获器、数据处理器、响应器、数据库。

流程如图1所示:

本次实验是基于网络的入侵检测系统。

2Snort工具的作用

     是一款开源的、基于本地检测规则的网络入侵检测软件。主要功能如下,包嗅探(检测)、包记录(存储)、入侵检测;

     工作过程:1)先从网卡捕获网络上的数据包;2)将数据包进行解码并填入链路层协议的包结构体;3)预处理器对数据包进行检查4)通过检测引擎对数据包进行处理。如图2所示。

     Snort命令格式:Snort [-a|-e|s|e|t] [options];

3Snort规则

       从逻辑角度来划分,Snort规则=规则头+规则选项;

       规则头:规则动作、协议类型、地址、端口号、方向操作符;

       规则选项:例如,msg、flags、sid、rev、classtype等。


四、实验步骤:

(一)环境配置

1、检测环境:登录主机1,执行命令"sudo snort -V"查看是否安装成功;

2、配置修改:

①执行命令"sudo vi /etc/snort/snort.conf",snort.conf文件包含一个snort配置样例,分为五个步骤。设置网络变量、配置动态加载库、配置预处理器、配置输出插件、增加任意的运行时配置向导、自定义规则集修改属性值。

var RULE_PATH /etc/snort/rules(配置rules文件路径)

var SO_RULE_PATH /etc/snort/so_rules(配置so_rules路径)

var PREPROC_RULE_PATH /etc/snort/preproc rules(实验性规则)

②修改ipvar HOME_NET值,即本机所在的网段:

ipvar HOME_NET 30.0.1.0/24

③修改output unified2的值,设置snort.unified2格式的数据集。统一输出文件,文件名为snort.log,限制128,mpls事件类型,vlan事件类型:

"output unified2: filename snort.log, limit 128, mpls_event_types, vlan_event_types"

④重启Snort:执行"sudo service snort restart"命令;

3、配置Snort的检测规则:

① 删除之前的日志文件:执行命令" sudo rm /var/log/snort/snort.log"。为新规则做好环境准备。

② 本地规则文件添加内容:任何发往本机的ICMP和HTTP数据包都会触发Snort告警;其中,"/etc/snort/rules"是用于存放规则文件的路径,Snort就是根据诸多的规则文件给用户提供预警和提示的。执行"sudo vi /etc/snort/rules/local.rules"命令:

"alert icmp any any -> $HOME_NET any (msg:“ICMP Test NOW!!!”; classtype:not-suspicious; sid:1000001;rev:1;)

alert tcp any any -> $HOME_NET 80 (msg:“HTTP Test NOW!!!”; classtype:not-suspicious; sid:1000002;rev:1;)"

③ 清除规则:执行"sudo vi /etc/snort/snort.conf"命令,把除了local.rules之外的规则全部注释掉(把local.rules之后的include语句注释掉;

④ 检测是否配置成功:执行"sudo snort -T -c /etc/snort/snort.conf"命令;如图2所示;

(二)使用Snort进行入侵分析

1、信息查看:执行"ifconfig"命令,查看主机网卡信息:

eth0即为本机的网卡,如果有多个网卡,便会显示eth1、eth2…等网卡信息。

2、监控入侵:执行"sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0"命令

3、开始执行:登录主机2,Ping主机1,"ping 30.0.1.4 "

4、查看数据包信息:进入终端查看;

5、浏览器交互:用主机2通过浏览器的方式,访问主机1。在浏览器中输入http://30.0.1.4

6、返回终端窗口对检测的数据进行查看


五、实验现象、结果记录及整理:

1、在环境检测中,已经成功安装snort工具;

2、在环境配置修改中,有很多配置文件可修改,可根据用户所需,进行修改;如常规的路径设置、网络变量、加载库等;

3、在配置检测规则中,可根据用户所需,根据实际的情况进行规则的设置,本实验设置的是ICMP、HTTP数据包;

4、在实验实际运行时,发现通过snort工具,成功检测到了数据包的信息。


六、分析讨论与思考题解答:

1、入侵检测的检测引擎就是通过对规则选项的分析构成了Snort 检测引擎的核心。选项主要可以分为哪些?

①第一类是数据包相关各种特征的描述选项,比如:content、flags、dsize、ttl等;

②第二类是规则本身相关一些说明选项,比如:reference、sid、classtype、priority等;

③第三类是规则匹配后的动作选项,比如:msg、resp、react、session、logto、tag等;

④第四类是选项是对某些选项的修饰,比如从属于content的nocase、offset、depth、regex等

2、配置snort.conf中,可通过哪些方式设置本地网络?

①清晰指定你的本地网络

var HOME_NET 192.168.1.0/24;如果希望构建的Snort支持IPV6支持,则这里定义网段的类型修改为pvar;

②使用全局变量:var HOME_NET $eth0_ADDRESS

③定义一个地址列表,中间用逗号隔开:var HOME_NET [10.1.1.0/24,192.168.1.0/24] ,列表中不能有空格;

④定义任意的IP地址:var HOME_NET any;

3、免费企业网络入侵检测工具还有哪些?

①OSSEC HIDS:基于主机的开源入侵检测系统;

②Fragroute/Fragrouter:能够逃避网络入侵检测的工具箱;

③BASE:基本的分析和安全引擎,是基于PHP的分析引擎;

④Sguil:网络安全专家监视网络活动的控制台工具。


七、实验截图

 

 

 

 

 

相关文章:

  • Spring boot注解
  • YOLOv8改进 | 2023主干篇 | 利用RT-DETR特征提取网络PPHGNetV2改进YOLOv8(超级轻量化精度更高)
  • SpringBoot系列之基于Jedis实现分布式锁
  • 基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(二)
  • class类实现operator==重载
  • 【LeetCode】28. 找出字符串中第一个匹配项的下标 【字符串单模匹配:KMP算法】
  • 【Hadoop_04】HDFS的API操作与读写流程
  • 《地理信息系统原理》笔记/期末复习资料(10. 空间数据挖掘与空间决策支持系统)
  • AI全栈大模型工程师(二十三)用 PyTorch 训练一个最简单的神经网络
  • 微信小程序:上传图片到别的域名文件下
  • element日历组件只显示月和日,把年份隐藏掉
  • 电脑入门基础知识
  • “百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!
  • ​configparser --- 配置文件解析器​
  • 高通平台开发系列讲解(USB篇)MBIM协议详解
  • Angular Elements 及其运作原理
  • avalon2.2的VM生成过程
  • chrome扩展demo1-小时钟
  •  D - 粉碎叛乱F - 其他起义
  • docker-consul
  • httpie使用详解
  • IP路由与转发
  • laravel5.5 视图共享数据
  • Redux 中间件分析
  • Travix是如何部署应用程序到Kubernetes上的
  • uni-app项目数字滚动
  • windows下使用nginx调试简介
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 深度学习入门:10门免费线上课程推荐
  • 一些关于Rust在2019年的思考
  • ${ }的特别功能
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (js)循环条件满足时终止循环
  • (TOJ2804)Even? Odd?
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)hibernate配置管理
  • (四)JPA - JQPL 实现增删改查
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)大型网站的系统架构
  • .axf 转化 .bin文件 的方法
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET : 在VS2008中计算代码度量值
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 使用反射注册事件
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET命名规范和开发约定
  • .NET正则基础之——正则委托
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BJDCTF 2020]easy_md5
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [BZOJ] 3262: 陌上花开
  • [C#]获取指定文件夹下的所有文件名(递归)