网络安全实验5:入侵检测
入侵检测课堂实验
实验目的
1.在linux平台建立基于Snort的IDS。
2.在部署snort的本机建立规则,实现对dos攻击、nmap扫描和ssh连接的检测。
实验环境
1.虚拟机:ubuntu、kali
2.工具:nmap、snort、hping3
实验过程与结果
步骤一:课前准备
1.安装snort
1 | sudo apt install -y snort |
下载完成后,会提示进行相应配置,按要求配置即可
首先是输入CIDR格式的本地网段(例如我的主机ip是192.168.204.136,所以配置为192.168.0.0/16)。其次是填写网卡位置,网卡位置可通过ifconfig指令查看,此图中即为ens33
2.配置一些必要文件夹
(1)Snort的安装目录
1 | sudo mkdir -p /etc/snort/rules/iplists |
(2)存储过滤规则和服务器黑白名单
1 | sudo touch /etc/snort/rules/iplists/default.blacklist |
(3)创建日志目录
1 | sudo mkdir /var/log/snort |
(4)调整权限
1 | sudo chmod -R 5775 /etc/snort |
3.修改默认配置
1 | sudo nano /etc/snort/snort.conf |
(1)首先根据自己的ip配置网络信息(45行左右),我的主机ip是192.168.204.136,所以配置为192.168.0.0/16
然后修改默认文件路径(111行左右)
(2)在配置完成后,可以通过sudo snort -c /etc/snort/snort.conf -A fast -l /var/log/snort -i ens33命令,简单测试配置是否正确。若正确,则将启动snort
1 | sudo snort -c /etc/snort/snort.conf -A fast -l /var/log/snort -i ens33 |
步骤二:Snort检测DoS(syn flood)攻击
1.Snort/rules目录下的local.rules文件中,设置如下规则
1 | sudo nano /etc/snort/rules/local.rules |
2.打开snort.conf,注释掉include $RULE_PATH/icmp-info.rules(608行)
1 | sudo nano /etc/snort/snort.conf |
3.启动snort
1 | sudo snort -c /etc/snort/snort.conf -A fast -l /var/log/snort -i ens33 |
4.使用另一台kali使用hping3攻击(在dos实验中使用过的)。在日志中查看检测报告(cat /var/log/snort/alert)
1 | sudo hping3 |
5.可以看到检测报告。
1 | sudo cat /var/log/snort/alert |
步骤三:Snort检测nmap扫描
1.以nmap NULL扫描为例:同理在local.rules中写下如下规则:
1 | sudo nano /etc/snort/rules/local.rules |
2.nmap NULL扫描是nmap秘密扫描的一种,相对比较隐蔽,通过向目标主机端口发送标志位flags为0的包进行扫描。使用kali中的nmap对主机进行NULL扫描。
1 | nmap -sN 192.168.204.136 |
3.查看snort报警信息。
1 | sudo cat /var/log/snort/alert |
步骤四:Snort检测ssh连接
1.首先将两台机器(可以是主机和虚拟机)的ssh服务开启。
(1)kali开启ssh服务命令
1 | sudo /etc/init.d/ssh start |
(2)先安装ssh服务,后启动
1 | sudo apt install openssh-server -y |
(3)启动服务,查看服务状态
1 | sudo systemctl enable --now ssh |
2.自主编写规则local.rules,检测ssh连接行为,从使用到的端口角度,并添加到rules中。
1 | sudo nano /etc/snort/rules/local.rules |
3.连接ssh
1 | ssh ubuntu@192.168.204.136 |
4.查看snort信息,可以看到成功检测到了ssh连接!
1 | sudo cat /var/log/snort/alert |
实验总结
在本实验中,我成功在Linux平台上建立了一套基于Snort的入侵检测系统(IDS)。整个实验的核心在于部署Snort引擎后,通过自主编写和配置检测规则,赋予其识别特定网络威胁的能力。我们针对三种典型的恶意或可疑行为——具有洪水特征的DoS攻击、用于信息搜集的nmap扫描以及潜在的未经授权SSH连接——精心设计了相应的检测规则。这些规则能够实时分析流经本机的网络流量,一旦匹配到预设的攻击模式,系统便会立即生成详细的警报日志,从而实现对目标威胁的有效监控与发现。
通过亲手完成从环境搭建、规则编写到功能测试的全过程,我们不仅掌握了Snort这一经典IDS工具的基本配置方法,更深入理解了如何根据具体攻击的特征(如异常流量、特殊标志位、特定端口与载荷)来构建检测逻辑。这次实践将理论知识与应用技能紧密结合,显著提升了对网络安全主动防御机制的认知水平和实操能力,为后续应对更复杂的安全挑战奠定了坚实的基础。
入侵检测课后实验
实验目的
漏洞攻击检测实验:构造具有漏洞的目标环境(系统漏洞、软件漏洞、数据库漏洞、服务漏洞等),根据目标环境漏洞设计针对性攻击,达到攻击效果,并配置snort实现对漏洞攻击的检测。(heartbleed漏洞攻击)
实验环境
1.虚拟机:ubuntu、kali
2.工具:nmap、snort
实验过程与结果
1.设置规则
(1)进入Snort/rules目录下的local.rules文件中
1 | sudo nano /etc/snort/rules/local.rules |
设置以下规则
1 | alert tcp any any -> $HOME_NET 8443 (msg:"HEARTBLEED ATTACK!";content:"|1803|";depth:2;content:"|01|";sid:1000001;rev:1;) |
规则解释:心脏出血漏洞主要通过攻击者模拟向服务器端发送自己编写的Heartbeat心跳数据包,主要是HeartbeatMessage的长度与payload的length进行匹配,若payload_lenght长度大于HeartbeatMessage的length,则会在服务器返回的response响应包中产生数据溢出,造成有用数据泄露。
HeartbeatMes sage的length为2^14字节即16384字节,协议是TCP,面向的端口是 443 即HTTP/HTTPS服务,本实验采用docker环境复现,因此端口使用8443。
(2)注意要注释掉自带对应规则库。
打开snort.conf,注释掉include $RULE_PATH/icmp-info.rules(608 行)
1 | sudo nano /etc/snort/snort.conf |
2.启动snort
1 | sudo snort -c /etc/snort/snort.conf -A fast -l /var/log/snort -i ens33 |
3.启动docker。
1 | sudo systemctl start docker |
4.进入环境所在目录启动环境。
1 | cd /home/ubuntu/Desktop/vulhub-master/openssl/CVE-2014-0160 |
1 | sudo docker ps |
5.打开浏览器输入https://192.168.204.136:8443,出现Heartbleed Test说明环境启动成功。
6.使用msf利用漏洞。
1 | msfconsole |
7.打开msf后,查找heartbleed模块,查看需要设置哪些选项。
1 | search heartbleed |
8.设置靶机地址RHOSTS和靶机端口号RPORT,同时设置verbose以看到泄露的信息。
1 | set RHOSTS 192.168.204.136 |
9.exploit,可以看到泄露的数据,漏洞利用成功。
1 | exploit |
10.在日志中查看检测报告
1 | sudo cat /var/log/snort/alert |
实验总结
在本实验中,我围绕备受关注的OpenSSL心脏出血漏洞展开了一次完整的漏洞攻击检测实践。我们首先利用Vulhub漏洞环境快速搭建了存在Heartbleed漏洞的OpenSSL 1.0.1c服务环境,通过Docker容器技术构建了包含Nginx和脆弱OpenSSL版本的目标系统,为后续攻击检测提供了真实的实验平台。这一环境的成功部署不仅还原了2014年该漏洞影响下的真实场景,也为我们理解漏洞原理和攻击特征奠定了坚实基础。
在攻击阶段,我使用了多种技术手段验证漏洞的存在性和可利用性。通过专门的心跳请求数据包构造,我们成功触发了OpenSSL的内存信息泄露机制,能够从目标服务器内存中提取出敏感信息片段,直观地演示了该漏洞对数据传输保密性的严重威胁。这一过程让我们深刻体会到,即使没有传统意义上的缓冲区溢出或代码执行,信息泄露类漏洞同样可能带来灾难性后果,特别是当内存中残留着会话令牌、用户凭证等关键数据时。
这次实验让我们从防御者视角深入理解了现代入侵检测系统的运作机制和规则设计哲学。面对不断演进的网络威胁,仅依靠传统的特征匹配已不足以应对高级攻击,需要结合协议分析、行为检测等多种技术手段。通过亲手实践从环境搭建、攻击模拟到检测防御的全流程,我们不仅掌握了具体工具的使用方法,更重要的是建立了主动安全防御的思维模式,为今后从事网络安全相关工作积累了宝贵的实战经验。













































