学号20212903 2021-2022-2 《网络攻防实践》实践五 报告
学号20212903 2021-2022-2 《网络攻防实践》实践五 报告
1.实践内容
防火墙技术及产品
- 定义:防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。
- 功能:
- 检查控制进出网络的流量。
- 防止脆弱或不安全的协议和服务。
- 防止内部网络信息的外泄。
- 对网络存取和访问进行监控审计。
- 强化网络安全策略并集成其他安全防御机制。
- 不足:
- 先天:无法防范包括来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播的传播。
- 技术瓶颈:无法防范包括针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和隐蔽通道进行通信的特洛伊木马或僵尸网络。
- 技术:
- 包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包(简单、安全功能有限)。
- 基于状态检测的包过滤技术:也称动态包过滤。除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络连接的上下文关系探测,来确定是否允许通信。这种技术相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障(对网络性能有一定的影响)。
- 代理技术:允许客户端通过代理与网络服务进行非直接的连接,也称“网络代理”。主要是客户端与代理服务器连接,代理服务器再与目标服务器连接。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
- 部署方法:
- 包过滤路由器:带有包过滤防火墙功能的路由器。
- 双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
- 屏蔽主机:堡垒主机和包过滤的结合。
- 屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
Linux开源防火墙netfilter/iptables介绍
- 简介:iptables是运行在用户空间的防火墙配置工具,通过控制运行在Linux内核空间的netfilter模块,来管理网络数据包的处理和转发(最新已经有ip6tables用于ipv6)。
- 规则:规则是用户预定义的,也是我们常说的防火墙规则,配置防火墙的主要工作就是添加、修改和删除这些规则。由一个目标和很多匹配组成。匹配如interface(e.g. eth0)、协议类型、源IP/端口、目的IP/端口等。目标是用户自定义的链、一个内置的特定目标或者是一个目标扩展,如ACCEPT、DROP、REJECT、SNAT、DNAT等。
- 链:链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。iptables 提供了5条链:INPUT链、OUTPUT链、FORWARD链、路由前链(Pre-Routing)、路由后链(Post-Routing)。
- 表:表的本质就是规则集的组织形式。iptables提供了以下5种表:filter表(过滤)、nat表(地址转换)、mangle表(包修改)、raw表、security表(强制访问)。
snort基本介绍
- 简介:Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。
- 四大模块:数据包嗅探模块、预处理模块(用相应的插件来检查原始数据包)、检测模块(检测引擎依据预先设置的规则检查数据包)、报警/日志模块(经检测引擎检查后的Snort数据输出)。
- 三种工作模式:嗅探模式(从网络上读取数据包,常用命令
snort -dev
)、数据包记录模式(把数据包记录到硬盘上,常用命令snort -b
)、网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)。
2.实践过程
一、防火墙配置
配置Linux操作系统平台上的iptables,Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问
为方便后面实验,三台虚拟机的IP地址如下:
虚拟机名称 | IP地址 |
---|---|
Kali虚拟机 | 192.168.11.36 |
SEED Ubuntu虚拟机 | 192.168.11.18 |
MetaSploitable_ubuntu虚拟机 | 192.168.11.191 |
首先确定Kali可以访问SEED Ubuntu虚拟机,而MetaSploitable_ubuntu虚拟机无法访问SEED Ubuntu虚拟机
过滤ICMP数据包,使得主机不接收Ping包;
1、利用命令iptables -L
查看SEED Ubuntu虚拟机的规则
通过下图可以看到,SEED Ubuntu虚拟机中均为默认规则
2、利用指令iptables -A INPUT -p icmp -j DROP
向SEED Ubuntu虚拟机中添加规则,使SEED Ubuntu虚拟机不接受icmp数据包。
(指令中-A
是追加一条规则,INPUT
表示数据包入口(规则),-p
用于匹配协议,-j
用于指定如何处理)
3、再利用命令iptables -L
查看SEED Ubuntu虚拟机的规则
通过下图可以看到已经多了拒绝ICMP数据包的一条规则
4、这时用Kaliping
SEED Ubuntu虚拟机,发现无法ping通,成功实现过滤ICMP数据包,使得主机不接收Ping包
只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问
1、在未操作前,Kali虚拟机和MetaSploitable_ubuntu虚拟机都可以telnet
连接SEED Ubuntu虚拟机
2、首先利用指令iptables -P INPUT DROP
指令拒绝一切的数据包流入,再利用指令iptables -A INPUT -p tcp -s 192.168.11.36 -j ACCEPT
开启192.168.11.36
对本机的tcp服务,再用iptables -L
查看规则。
3、再次用Kali虚拟机telnet
连接SEED Ubuntu虚拟机,依旧可以成功连接
再次用MetaSploitable_ubuntu虚拟机telnet
连接SEED Ubuntu虚拟机,发现连接失败了,规则起了作用
Windows版本
首先查看Winxp的IP地址为192.1.104
过滤ICMP数据包,使得主机不接收Ping包;
一开始Kali攻击机可以ping
通WinXp虚拟机
1、首先将防火墙打开
2、点开防火墙-->ICMP中的设置
将回显请求关闭即可
3、这时Kali已经ping
不通WinXP虚拟机了
只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问
1、首先打开控制面板->管理工具->本地安全策略
2、右键选择“IP安全策略”,创建IP安全策略
3、这里选择名称为WJ_Kali(什么名字都可以的)
4、到这步之前都直接选择默认选择
5、选择添加
6、到这步之前都选择默认选项,这里选择添加
7、输入名称后然后单击添加
8、这里选择TCP
9、这里端口写3389
10、选择刚刚创建的IP筛选器,然后再点击下一步
11、点击添加阻止筛选器
选择筛选器操作“阻止”,下一步——完成,至此即配置好了“阻止所有IP远程访问”的全部设置。
12、像上面创建阻止所有IP访问一样,下面创建允许Kali访问的IP筛选器
13、选择特定的IP地址,并将Kali的IP地址写上去
这里选择我的IP地址
14、后面的步骤和之前一样
15、主义在筛选器操作点击许可
16、点击指派即可
17、这是kali依旧可以telnet连接WinXP
这时ubuntu已无法telnet连接WinXP虚拟机
二、动手实践:Snort
使用Snort对给定pcap文件进行入侵检测,并对检测出的攻击进行说明。
1、利用指令# snort -r /home/user/listen.pcap -c /etc/snort/snort.conf -K ascii
对listen.pacp
进行入侵检测
2、从分析结果中可以看到数据包中绝大多数为TCP数据包
3、进入/var/log/snort/
目录下,查找到并打开snort.alert.fast
文件,这个文件即输出的日志文件,可以发现这是nmap类型的攻击,同时文件中还包含了其他的信息,比如源地址、目的地址等等。
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
1、打开蜜罐网关后,输入vim /etc/init.d/rc.firewall
进行查看iptables的配置文件
通过下图可以看到创建的黑名单(BlackList)、白名单(WhiteList)和保护名单(FenceList)的条件
- 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
- 对于属于白名单的主机,接受且不记录。
- 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
2、利用iptables -t filter -L
可以查看实际规则列表,
从下两图可以看出默认规则已经被关闭,同时添加了大量的自定义规则
3、利用命令vim /etc/init.d/snortd
查看snort的脚本文件,下图为实际运行时的参数
4、利用命令vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件
可以观察到实际运行的参数,以及在最前面定义的参数
5、利用指令chkconfig --list
查看哪些是自动启动的
通过下图可以看出NIDS为不自动启动,防火墙和NIPS为跟随系统自动启动
6、利用命令vim /etc/honeywall.conf
查看honeywall配置文件
通过下图可以看到snort规则默认不自动更新
3.学习中遇到的问题及解决
- 问题1:在Windows设置ICMP时,发现回显请求呈灰色状态
- 问题1解决方案:点击下面的还原默认值即可
4.实践总结
通过这次实验了解了防火墙的知识,知道了如何创建并利用防火墙中的安全规则,之前仅仅是知道防火墙的存在,但是并不了解他,更不用说怎么利用防火墙创建安全规则了。同时,我还学会了Linux中iptables的一些使用方法,以及进一步学会如何使用snort工具命令
这次实验让我知道我所知道知识仍旧太少,并且是离散的,并不连贯,在做实验的时候有的时候并不理解某一个步骤的作用,只有等到整个做完,回头看的时候,才能够理解其意义。需要进一步的了解相关知识