网安实验4:防火墙
课堂部分
实验环境
Firewall-VM:Kali Linux(192.168.232.129)
Client-VM1:winxp(192.168.232.130,00-0C-29-69-14-0D)
Client-VM2:ubuntu(192.168.232.128)
将两台虚拟机的网络连接均设置为“仅主机模式”



winxp ping通kali

ubuntu ping通kali

清空所有链的防火墙规则
1 | iptables -F |

设置iptables实现特定功能
禁止所有主机 ping 本地主机
设置规则
1 | iptables -A INPUT -p icmp --icmp-type echo-request -j DROP |


仅允许某特定 IP 主机 ping 本地主机
清空规则:iptables -F
设置规则
1 | iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.232.130 -j ACCEPT |

winxp ping成功

ubuntu ping失败

为了验证来自 Ubuntu (192.168.232.128) 的 ping 被防火墙 DROP 规则成功阻断,在防火墙主机 (Kali) 上进行了抓包。
过滤器icmp.type == 8,抓取Echo (ping) request的数据包

过滤器icmp.type == 0,抓取ICMP Echo Reply的数据包

防火墙清楚地接收到了来自 192.168.232.128 的 ICMP echo request 包(证明网络是通的),但防火墙没有发送任何 ICMP echo reply 包作为回应。这有力地证明了 iptables INPUT 链中的 DROP 规则成功生效,在网络层丢弃了该请求。
允许每 10 秒钟通过 1 个 ping 包
清空规则:iptables -F
设置规则
每10秒1个包就是每1分钟6个包
1 | iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 6/minute --limit-burst 1 -j ACCEPT |

winxp进行验证
1 | ping 192.168.232.129 -t |

Windows 的 ping -t 输出时间和 Linux 内核令牌刷新时间并不是完全同步,因此这里的结果并不是严格的“每10个ping有1个成功”。
使用ubuntu进行验证。由于都是linux系统,完全同步,这里看icmp_seq可以发现是严格的“每10秒钟通过1个ping包”

阻断来自某个 MAC 地址的数据包
获取 MAC:在 Client-VM 上获取其 MAC 地址(Windows: ipconfig /all | Linux: ifconfig)。
清空规则:iptables -F
设置规则
1 | iptables -A INPUT -m mac --mac-source 00:0C:29:69:14:0D -j DROP |
阻断winxp的mac地址

winxp ping失败

ubuntu ping成功

配置iptables允许远端客户机SSH连接
打开SSH服务
清空规则:iptables -F
开启 SSH 服务:在 Firewall-VM 上,确保 SSH 服务已启动 。
systemctl start ssh(或/etc/init.d/ssh start)systemctl status ssh(或/etc/init.d/ssh status)
关闭:
/etc/init.d/ssh stop

先尝试用ubuntu连接kali
1 | ssh kali@192.168.232.129 |
输入kali的密码后连接成功

尝试winxp连接kali

连接成功

再用kali查看status,看到两台client都成功连接kali

配置并验证 SSH 访问控制规则
先关闭服务/etc/init.d/ssh stop
配置iptables,只允许特定ubuntu SSH连接本地主机
1 | iptables -I INPUT -p tcp --dport 22 -s 192.168.232.128 -j ACCEPT |
设置完后再次打开服务
/etc/init.d/ssh start

使用windows xp进行ssh连接,连接失败

使用ubuntu进行ssh连接,连接成功

kali也显示只有一台机连接成功了

课后部分
公网用仅主机,内网用桥接
配置网络环境
防火墙kali

公网客户端ubuntu

内网服务器winxp

手动配置 IP
打开“控制面板”→“网络和Internet连接”→“网络连接”,右键点击“本地连接”,选择“属性”,双击“Internet协议(TCP/IP)”




内网 (VMnet0)
- Kali (防火墙)
eth0: IP为10.122.214.40,子网掩码为255.255.192.0 - WinXP (内网服务器): IP为
10.122.214.100,子网掩码为255.255.192.0,默认网关为10.122.214.40。
公网 (VMnet1)
- Kali (防火墙)
eth1: IP为192.168.232.131。 - Ubuntu (公网客户端): IP为
192.168.232.128。
连通性测试
内网测试(成功): 从 WinXP ping Kali 内网 IP 成功

从Kali ping WinXP成功

公网测试(成功): 从 Ubuntu ping Kali 公网 IP 成功

从 Kali ping Ubuntu 成功

隔离测试(失败): 从 Ubuntu ping WinXP失败

从WinXP ping Ubuntu失败

打开Winxp的nginx服务


在kali上配置NAT规则
1 | # 1. 清空所有旧规则 |




在ubuntu上打开kali的公网ip,显示出nginx


