计网实验六
实验六:网络安全相关实验
任务1 IPTABLES
数据包通过防火墙的流程总结为下图:

iptables为我们定义了4张”表”,当他们处于同一条”链”时,执行的优先级如下。
优先级次序(由高而低):
raw –> mangle –> nat –> filter
我们将经常用到的对应关系重新写在此处,方便对应图例查看。
- 链的规则存放于哪些表中(从链到表的对应关系):
PREROUTING 的规则可以存在于:raw表,mangle表,nat表。
INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD 的规则可以存在于:mangle表,filter表。
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。
POSTROUTING 的规则可以存在于:mangle表,nat表。
- 表中的规则可以被哪些链使用(从表到链的对应关系):
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT

-
表、链和规则的关系(以prerouting链为例)

任务1.1

步骤:
-
打开vmware和wsl,用ifconfig查看两者的ip地址
-
先试试看能不能互相ping
-
在wsl中添加规则
查看filter中INPUT的规则
sudo iptables -t filter -nvL INPUT --line-numbers添加拒绝接受ICMP回应请求报文的规则
sudo iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-request -j REJECT -
现在wsl可以ping虚拟机,但虚拟机不能ping wsl了
-
使用date命令打印当前时间,然后截图,并
echo "22920212204317 郑子睿" -
删除规则
这里的规则序号是1
iptables -t filter -D INPUT 1 -
检查虚拟机是否可以ping wsl,验证规则删除成功与否
任务1.2
-
在虚拟机中启动http服务
python3 -m http.server -
虚拟机的ip地址是192.168.174.130,在wsl中用nc命令检查端口
# 这个命令是用于网络诊断的。它的作用是使用nc(netcat)工具来尝试连接到指定的IP地址(172.23.201.100)上的端口范围(50到100之间的端口)。参数解释如下: # -v: 启用详细模式,显示更多信息。 # -w 10: 设置超时时间为10秒,如果在10秒内无法建立连接,则超时。 # -z: 表示的是“零I/O模式”,只进行端口扫描,不发送任何数据。 # 因此,这个命令的作用是在10秒内尝试连接到172.23.201.100上的端口50到100之间,但不发送任何数据,仅检查端口是否处于打开状态。 nc -v -w 10 -z 172.23.201.100 50-100
-
在虚拟机中配置规则
-
先把现有规则保存在文件中
sudo iptables-save > iptables_rules -
服务器关闭所有端口之后 仅开启 80 端口访问
### 写在ban80.sh ## 关闭所有端口 sudo iptables -P INPUT DROP # 默认拒绝所有输入流量 sudo iptables -P FORWARD DROP # 默认拒绝所有转发流量 sudo iptables -P OUTPUT ACCEPT # 允许所有输出流量 sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许已建立的、相关的连接 ## 开放 80 端口 sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许来自 TCP 协议的 80 端口流量这些命令的含义是:
-P: 设置默认策略,INPUT设置为拒绝所有输入流量,FORWARD设置为拒绝所有转发流量,OUTPUT设置为允许所有输出流量。-A: 添加规则到iptables规则链中。-m conntrack --ctstate ESTABLISHED,RELATED: 允许已经建立的连接和相关的流量通过。-p tcp --dport 80 -j ACCEPT: 允许来自TCP协议的80端口流量通过。
-
-
在wsl再次测试
端口从connection refused变成time out

-
这些命令将默认策略设置为允许所有流量,然后清除所有的规则和用户自定义链。这会导致iptables恢复到初始状态,允许所有流量通过。
# 写在open80.sh sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -F sudo iptables -X
任务2 namp 扫描工具
任务2.1 主机发现
扫描虚拟机所在的子网
nmap -sn 192.168.174.130/24

解释:根据官方文档以及查到的vmware的nat模式的解释,有三个设备连接在子网VMnet8上,如下图:

在本实验中,192.168.174.130为ubuntu虚拟机的ip,192.168.174.1为宿主机在VMnet8中的ip,最后的192.168.174.254应该是nat路由器的ip。
也可以了解一下VMWare的桥接模式
任务2:端口扫描
直接扫描
nmap scanme.nmap.org
- 增加参数指定使用 google(8.8.8.8 / 8.8.4.4)或其他的 DNS 服务器进行扫描。
nmap --dns-servers 8.8.8.8 scanme.nmap.org
- 忽略主机的存活状态,禁止 ICMP ping 后重新扫描。
nmap -Pn scanme.nmap.org
-
在虚拟机中开启http服务
python3 -m http.server-
直接
nmap 192.168.174.130/24观察
-
source ban80.sh后观察
-
source open80.sh恢复
-
任务3:HTTPs协议分析(TLS)
任务4:ARP spoofing与中间人攻击
-
在ubuntu中打开wireshark,选择ens33
-
在ubuntu中用arp -a查看默认网关的ip和mac
-
在kali中打开Ettercap,先ping一下ubuntu,直到在host_list出现ubuntu和它的默认网关
-
重置wireshark
-
在kali中发起攻击
-
在ubuntu中用arp -a查看默认网关的mac是否变化
-
wireshark停止嗅探,观察

发现kali通过不断告诉ubuntu,默认网关的ip对应的mac是它;也不断告诉默认网关,ubuntu的ip对应的mac是它(使用arp回复报文)
-
关闭kali的Ettercap,一段时间后,ubuntu的默认网关地址恢复正常

浙公网安备 33010602011771号