介绍
防火墙规则只有在保留所需服务的同时建立预期访问边界,才有意义。仅在默认 ACCEPT 策略下添加允许规则,无法证明任何用户已受到限制。
本实验提供专用 Kali 服务和两个练习客户端。你将查看初始访问,在 Kali 中应用有序的基于来源的规则,保存并恢复练习策略,然后测试两条客户端路径。
限制访问前观察训练网络
本步骤中,你将测试两个预置客户端视角,并查看保护训练服务的防火墙。
本实验在虚拟机内提供小型专用网络。Kali 训练服务位于 172.30.77.10:8080;允许的客户端使用 172.30.77.20,要阻止的客户端使用 172.30.77.30。两者最初都能访问。这些是练习网络地址,不是公共目标。
从初始 Ubuntu 宿主机 Terminal 开始。预置 training-client 命令从指定名称的练习客户端发起请求。它运行在宿主机上,而防火墙管理在 Kali 内进行。选择共享工作区:
cd /home/labex/project
保存允许客户端的初始 HTTP 状态:
training-client allowed > allowed-before.txt
cat allowed-before.txt
状态行应包含 200 OK。记录另一个客户端的初始访问:
training-client blocked > blocked-before.txt
cat blocked-before.txt
它也应报告 200 OK;标签表示你之后要阻止的客户端,不是其初始状态。
现在进入 Kali 查看防火墙:
kali
Iptables 在链中评估数据包过滤规则。INPUT 处理发往当前环境的数据包,OUTPUT 处理本地产生的数据包,FORWARD 处理被路由转发的数据包。-L INPUT 列出输入链;-n 保留数字地址和端口,-v 包含计数器:
sudo iptables -L INPUT -n -v
练习链的初始策略为 ACCEPT。当没有规则已经决定数据包去向时,就会应用链策略。本实验将为专用服务添加精确规则,保持默认策略与宿主机防火墙不变。
应用并保存有序服务策略
本步骤中,你将先允许指定客户端,再拒绝来自练习网络其他来源、发往同一服务的流量。
留在 Kali 内。-A INPUT 向输入链末尾追加规则,-p tcp 匹配 TCP,-s 匹配源地址,--dport 选择目标端口,-j 选择动作。先添加精确允许规则:
sudo iptables -A INPUT -p tcp -s 172.30.77.20 --dport 8080 -j ACCEPT
接着,拒绝专用练习子网其他来源对同一端口的访问。/24 前缀标识 172.30.77.0 网络范围:
sudo iptables -A INPUT -p tcp -s 172.30.77.0/24 --dport 8080 -j REJECT
规则按顺序评估。允许的来源匹配第一条终止处理的 ACCEPT 规则;另一个练习客户端到达后面的 REJECT 规则。颠倒顺序会使允许客户端也被拒绝。其他端口和来源仍遵循未改变的默认策略。
显示规则顺序与计数器。--line-numbers 包含每条规则的位置:
sudo iptables -L INPUT -n -v --line-numbers
第一条规则应允许指定客户端访问 TCP 8080,后面的规则应拒绝该服务来自练习子网的其余流量。
iptables-save 以可恢复格式打印活动规则。将本练习配置保存到共享工作区:
sudo iptables-save > /home/labex/project/training.rules
shell 的 < 运算符将文件作为命令的标准输入。iptables-restore 读取保存的配置;这里恢复的正是刚保存的练习规则:
sudo iptables-restore < /home/labex/project/training.rules
该操作仅作用于专用 Kali 网络环境。不要为了精确的服务限制而清空宿主机防火墙或替换默认策略。
验证允许与拒绝客户端访问
本步骤中,你将从两个客户端来源测试策略,并确认训练服务仍可用。
从 Kali 返回 Ubuntu 宿主机 Terminal,以使用预置客户端视角:
exit
宿主机提示符中的用户名为 labex。记录允许客户端的新结果:
training-client allowed > /home/labex/project/allowed-after.txt
cat /home/labex/project/allowed-after.txt
它仍应报告 200 OK。
下一条命令预期会失败,显示连接被拒绝或其他连接错误:这是你有意阻止的客户端。完成预期失败后继续:
training-client blocked
只有允许路径仍正常工作时,被阻止客户端请求失败才有意义。停止 Web 服务会破坏两条路径,不能证明所需策略生效。
返回 Kali,测试后查看计数器:
kali
sudo iptables -L INPUT -n -v --line-numbers
相关规则计数器应已增加。你既检查了规则文本,也检查了实际流量行为,整个练习期间 LabEx 宿主机 Terminal 始终保持可用。
总结
你查看了链策略,为单个服务添加有序的基于来源的规则,保存并恢复练习配置,并测试两个客户端的实际访问。允许来源与服务保持可用,指定来源则被拒绝。



