# 20212924 2021-2022-2 《网络攻防实践》实践第七周(5次)报告
1.实践内容
- 网络安全防范技术包括安全模型、网络安全防范技术与系统、网络检测技术与系统、网络安全事件响应技术四方面的内容。
iptables简介
-
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
-
iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。 -
iptables命令的管理控制选项
命令 | 作用 |
---|---|
-A | 在指定链的末尾添加(append)一条新的规则 |
-D | 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除 |
-I | 在指定链中插入(insert)一条新的规则,默认在第一行添加 |
-R | 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换 |
-L | 列出(list)指定链中所有的规则进行查看 |
-E | 重命名用户定义的链,不改变链本身 |
-F | 清空(flush) |
-N | 新建(new-chain)一条用户自己定义的规则链 |
-X | 删除指定表中用户自定义的规则链(delete-chain) |
-P | 设置指定链的默认策略(policy) |
-Z | 将所有表的所有链的字节和数据包计数器清零 |
-n | 使用数字形式(numeric)显示输出结果 |
-v | 查看规则表详细信息(verbose)的信息 |
-V | 查看版本(version) |
-h | 获取帮助(help) |
- 防火墙处理数据包的四种方式
方式 | 作用 |
---|---|
ACCEPT | 允许数据包通过 |
DROP | 直接丢弃数据包,不给任何回应信息 |
REJECT | 拒绝数据包通过,必要时会给数据发送端一个响应的信息 |
LOG在/var/log/messages | 文件中记录日志信息,然后将数据包传递给下一条规则 |
2.实践过程
任务一
-
一.任务要求:配置Linux操作系统平台上的iptables和Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问。 -
实验准备:准备三台实验用虚拟机,分别是A:kali,B:SEEDUbuntu,C:Metasploitable—ubuntu。
虚拟机 IP A:kali 192.168.200.6 B:SEEDUbuntu 192.168.200.5 C:Meta-ubuntu 192.168.200.123 -
过滤ICMP数据包操作过程:
-
- 在A上pingB,此时是可以ping通的。使用
iptables -L
查看所有规则时,显示需要root 权限,使用sudo su
获取管理员权限,输入密码获得root权限后,再次输入iptables -L
(有条icmp针对任何位置不允许访问的规则,是因为前面用过一次iptables -L
后,没有采用iptables -F
删除自定义规则。),然后使用iptables -A INPUT -p icmp -j DROP
(-A为追加一条规则,INPUT为数据包入口规则,-p为匹配协议,-j为指定处理)使得主机不接收icmp数据包。
- 在A上pingB,此时是可以ping通的。使用
-
- 此时在A上pingB,此时是ping不通的。
-
- B中使用iptables -L查看规则,可以发现多了一条icmp针对任何位置不允许访问的规则。
-
- 在B中使用
iptables -F
删除自定义规则后,用A去pingB是可以ping通的。
- 在B中使用
-
- 允许特定IP地址访问主机的操作过程:
-
- 分别在A和C上使用
telnet 192.168.200.5
进行虚拟机B的账号密码登录。
- 分别在A和C上使用
-
- 在B上使用
iptables -P INPUT DROP
拒绝一切数据包流入,这时A和C上均无法键入指令。
- 在B上使用
-
- 使用指令
iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT
开启A:192.168.200.6对本机TCP服务,并用iptables -L
查看规则。这时我们发现A应该是可以正常访问telnet服务的,但是C仍无法访问。
- 使用指令
-
- 在B中使用
iptables -F
和iptables -P INPUT ACCEPT
进行状态恢复。
- 在B中使用
-
-
二.任务要求:配置Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问。 -
实验准备:准备三台实验用虚拟机,分别是A:kali,B:WinxP
虚拟机 IP A:kali 192.168.200.6 B:Winxp 192.168.200.4 -
过滤ICMP数据包操作过程:
- 1.打开防火墙,设置ICMP:打开操作面板→windows防火墙→高级→ICMP的设置,把
允许传入回显请求
对号去掉,kali就ping不通了。 - 注意:直接勾选时无法显示时,选择还原为默认值后,就可以进行勾选了。
- 1.打开防火墙,设置ICMP:打开操作面板→windows防火墙→高级→ICMP的设置,把
- 允许特定IP地址访问主机的操作过程:
-
- 在A上使用
telnet 192.168.200.2
进行虚拟机B的账号密码登录。
- 在A上使用
-
- 打开控制面板→管理工具→本地安全策略,右键IP安全策略选择创建IP安全策略,设置IP安全策略名称为限制固定IP远程访问,在警告提示框选择“是”,其它均保持默认。
-
- 为新添加IP安全规则添加安全规则属性(和第一个添加规则步骤是相同的),警告选“是”。
-
- ip筛选列表选择添加,输入筛选名称阻止所有IP远程访问,再点击添加。
-
- 先设置禁止所有IP访问——源地址:任何IP地址——目标地址:我的IP地址——协议:TCP——到此端口输入:23(23为telnet端口),其它均可保持默认。
-
- 在点确定后——选择配置的“阻止所有IP远程访问”,下一步——添加——选择“阻止”——最后确定。
-
- 回到限制固定IP远程访问页面,右键,选择指派,之后telent就不通了。
-
- 同样的操作,在阻止所有IP远程访问的安全策略中,新添一个IP筛选器列表,把源地址改为一个特定的IP地址,然后输入kali的IP地址192.168.200.6,重新指派一下,kali就能ping通了。
-
任务二
- 任务要求:动手实践:Snort
- 使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
- Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
- 操作过程:
-
- 在A上使用
snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
对listen.pacp进行入侵检测。其中,指令中-K ascii
主要是为了指定输出log文件的编码为ASCII(默认为binary)。查看输出,我们可以看到检测出的数据包大部分为TCP数据包。
- 在A上使用
-
- 通过
vim /var/log/snort/alert
打开输出的日志文件,但此时显示不存在这个文件,通过显示所有的文件,采用cat /log/snort/alert.fast
,发现该文件就是报警日志文件,下次可以直接采用vim /var/log/snort/alert.fast
打开输出的日志文件,可以发现这个攻击是nmap发起的,当然还有很多其他的信息:源地址、目的地址等。Snort的日志一般位于:/var/log/snort/目录下,可以通过修改配置文件来设置Snort的报警形式。
- 通过
-
任务三
- 任务要求:分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
- 实验准备:虚拟机密网
- 操作过程
- 1.数据控制一般包括防火墙对数据的控制和IPS对异常数据的限制(
snort_inline
),首先使用su -
进行提权,然后使用vim /etc/init.d/rc.firewall
查看三链:黑名单、白名单和防护名单(FenceList)。 - 2.IPTables的实际规则列表:数据捕获主要包括防火墙日志记录和snort网络流记录。通过
iptables -t filter -L
来查看规则列表。不难发现,默认的规则OUTPUT、INPUT、FORWARD都已经被关闭了,取而代之的是一些自定义的规则。
- 1.数据控制一般包括防火墙对数据的控制和IPS对异常数据的限制(
- 3.Snort实际执行参数:通过
vim /etc/init.d/snort
打开Snort脚本文件。在指定网卡接口后,如果没有其他参数,将按照默认参数运行。比如默认不开启-A
模式,默认使用/etc/snort/snort.conf
(默认目录config文件)、eth0、二进制模式保存log文件等。
-
- Snort_inline实际执行参数:通过
vim /etc/init.d/hw-snort_inline
打开Snort_inline脚本文件,可以观察到实际运行的参数,以及在最前面定义的参数。
- Snort_inline实际执行参数:通过
- 5.通过指令
chkconfig --list | grep[服务]
来查询当前服务是不是开启的。chkconfig
命令主要用于检查设置系统的各种服务。我们发现防火墙和NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS是需要手动启动的。
- 6.使用
vim /etc/honeywall.conf
打开honeywall配置文件,这个里面可以看到很多东西:之前安装roo时配置的IP地址、白名单黑名单的位置、snort规则更新的地方等。我们可以看到Oinkmaster字样,通过查询,这个果然是个自动更新的软件。通过观察,我们发现自动更新是默认关闭的。
3.学习中遇到的问题及解决
- 问题1:通过
vim /var/log/snort/alert
打开输出的日志文件时,显示不存在该文件。 - 问题1解决方案: 通过
ls -R
列出文件名,用cat /log/snort/alert.fast
打开日志文件。 - 问题2:kali无法通过telnet IP(WinXp)进行登陆。
-
问题2解决方案:
- 开始--运行--输入services.msc,进入服务管理器界面。
- 在“服务管理器”界面中找到Telnet 项,双击进入telenet属性界面,在常规选项卡中将启动类型改为自动或手动,再确定。
- 再次进入telenet属性界面,将服务状态启用,应用退出 。
- 然后开始--运行--输入cmd,进入dos界面,在弹出界面中输入"net start telnet"回车,当屏幕显示"Telnet服务正在启动...Telnet 服务已经启动成功。"后,说明Telnet服务已经在你本机启动了。
4.实践总结
- 通过对防火墙的配置,了解了iptables的操作命令,学会了给window电脑配置防火墙,增强了安全保护意识;
- 通过对snort的使用,学会了对文件的入侵检测,在snort.conf中配置明文输出报警日志文件。
- 通过观察配置文件,了解到虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则。