7.3 防火墙基础与规则配置第20天核心目标理解防火墙原理掌握包过滤、状态检测、应用层代理等防火墙工作原理理解iptables/netfilter架构。掌握iptables配置熟练使用iptables命令配置防火墙规则实现访问控制、端口转发、网络地址转换。掌握防火墙绕过技术了解常见的防火墙绕过方法如端口复用、隧道技术、协议混淆等。模块一防火墙基础概念1.1 防火墙类型包过滤防火墙工作在网络层和传输层检查IP、端口、协议。速度快但无法理解应用层内容。状态检测防火墙在包过滤基础上跟踪连接状态如TCP三次握手。更安全。应用层代理防火墙工作在应用层理解协议内容。安全性高但速度慢。下一代防火墙集成入侵防御、应用识别、用户身份管理等。1.2 iptables/netfilter架构netfilterLinux内核中的框架提供数据包处理钩子。iptables用户空间工具用于配置netfilter规则。四表五链表filter过滤、nat地址转换、mangle修改数据包、raw连接跟踪。链INPUT入站、OUTPUT出站、FORWARD转发、PREROUTING、POSTROUTING。模块二iptables配置与管理2.1 基本语法iptables [-t 表名] 命令 链名 [规则号] 匹配条件 -j 动作常用命令-A追加规则-I插入规则-D删除规则-L列出规则-F清空规则-P设置默认策略常见动作ACCEPT接受DROP丢弃无响应REJECT拒绝返回拒绝包rejectLOG记录日志SNAT源地址转换DNAT目标地址转换2.2 常用规则配置查看规则iptables -L -n -v # 查看filter表规则 iptables -t nat -L -n -v # 查看nat表规则 #-t :指定对应的表格nat地址转换修改地址。清空所有规则iptables -F iptables -t nat -F iptables -t mangle -F设置默认策略iptables -P INPUT DROP # 默认丢弃所有入站 iptables -P OUTPUT ACCEPT # 默认允许所有出站 iptables -P FORWARD DROP # 默认丢弃所有转发2.3 访问控制规则允许特定端口# 允许SSH22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptalbes -A input -p tcp --dport 22 -j accept # 允许Web80,443端口 iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT 注#-m匹配模块 multiport 允许一次匹配多个端口 # 允许Ping iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A input -p icmp --icmp-type echo-request -j accept #注icmp:是网络中的控制协议。 #注--icmp-type echo-request :只匹配icmp类型为“请求回显”类型的数据基于IP的访问控制# 允许特定IP访问SSH iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT iptables -A input -s 192.168.190.145 -p tcp --dport 22 -j accept # 拒绝特定IP的所有访问 iptables -A INPUT -s 10.0.0.0/8 -j DROP/ iptables -A input -s 192.168.190.145 -j drop/状态检测# 允许已建立的连接和相关的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #注 -m state :加载连接状态匹配的模块--state:查找模块的类型established:表示已经建立好的连接related与已有连接“相关”的连接。2.4 NAT与端口转发源地址转换内网访问外网。iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE #注-t nat:指定表格-A postrouting将规则增加到postrouting链中postrouting:数据包“即将离开主机”的时候执行。 -o eth0:只匹配从“eth0接口出去的数据-j masquerade:执行“地址伪装” masquerade:自动把源IP改为当前接口eth0的ip。目标地址转换端口转发、负载均衡。# 将外部访问本机80端口的流量转发到192.168.1.100:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 #注--to-destination指定“数据流量改为要发向哪里”(指定流量转发的目的网址和对应的进入端口) #注DNAT:修改目的网址PREROUTING在数据进入主机还没有进行路由决策之前执行 # 本地端口转发 iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 #注-j redirect:指定端口转发模块 --to-port:指定转发的端口。2.5 规则持久化保存规则iptables-save /etc/iptables/rules.v4 #iptables-save:保存防火墙策略 /etc/iptables/rules.v4:指定的保存路径恢复规则iptables-restore /etc/iptables/rules.v4开机自动加载# Debian/Ubuntu apt install iptables-persistent # 保存后自动加载 netfilter-persistent save netfilter-persistent reload模块三防火墙绕过技术3.1 端口复用原理利用已开放的端口如80、443建立隐蔽通道。工具iptables端口重定向socatsocat TCP-LISTEN:443,fork TCP:localhost:22sslh在同一个端口上处理HTTPS和SSH。3.2 隧道技术SSH隧道# 本地端口转发访问本地端口即访问远程服务 ssh -L 8080:远程主机:80 用户跳板机 ​ # 动态端口转发创建SOCKS代理 ssh -D 1080 用户服务器HTTP/HTTPS隧道reGeorg、Tunna、reDuh将流量封装在HTTP请求中。DNS隧道dnscat2、iodine通过DNS查询和响应传输数据可绕过出站限制。3.3 协议混淆将流量伪装成常见协议如HTTP、HTTPS、DNS、ICMP。工具PtunnelICMP隧道。Stunnel将任意协议封装在SSL/TLS中。3.4 其他绕过技术分段传输将数据包分片绕过内容检查。编码/加密对Payload进行编码或加密绕过IDS/IPS特征检测。低频慢速降低请求频率绕过基于阈值的检测。模块四Windows防火墙基础4.1 Windows防火墙管理命令行netsh advfirewall show allprofiles # 查看防火墙状态 netsh advfirewall set allprofiles state off # 关闭防火墙 netsh advfirewall set allprofiles state on # 开启防火墙添加规则# 允许端口 netsh advfirewall firewall add rule nameOpen Port 80 dirin actionallow protocolTCP localport80 #注打开windows防火墙的80端口让外部电脑通过tcp协议访问本机的80端口。 # 允许程序 netsh advfirewall firewall add rule nameAllow MyApp dirin actionallow programC:\MyApp.exe ​ # 删除规则 netsh advfirewall firewall delete rule nameOpen Port 80模块五当日达标实战任务5.1 iptables基础配置配置安全防火墙在Kali或Ubuntu虚拟机上配置iptables实现以下策略默认策略INPUT链DROPOUTPUT链ACCEPTFORWARD链DROP。允许本地回环通信。允许已建立的连接和相关的连接。允许SSH22、HTTP80、HTTPS443入站连接。允许ICMPping。保存规则并确保重启后生效。测试规则从另一台主机测试端口连通性确认规则生效。5.2 端口转发实践本地端口转发在Kali上将访问8080端口的流量重定向到本机的80端口。配置iptables规则并验证访问http://localhost:8080能打开本机80端口的服务。远程端口转发如果有两台虚拟机尝试配置DNAT规则将访问防火墙主机A的2222端口的流量转发到另一台主机B的22端口实现通过A的2222端口SSH连接到B。5.3 防火墙绕过模拟SSH隧道实践如果有两台Linux主机A和B且A能SSH到B。在A上建立本地端口转发将A的8888端口转发到B的80端口。然后在A上访问http://localhost:8888应看到B的Web页面。HTTP隧道工具体验下载reGeorg将其上传到一台有Web服务的服务器。在本地使用reGeorgSocksProxy.py连接建立SOCKS代理尝试通过代理进行网络访问。模块六常见问题与解决方案6.1 iptables配置问题规则不生效检查规则顺序iptables规则从上到下匹配确认默认策略。使用iptables -L -n -v --line-numbers查看规则和匹配计数。配置后无法远程连接在配置INPUT默认DROP前确保已添加允许SSH的规则。或通过物理控制台登录修改。NAT不生效确保已开启IP转发net.ipv4.ip_forward1且数据包流经正确的链PREROUTING, POSTROUTING。6.2 防火墙绕过问题隧道连接不稳定可能是防火墙有超时断开机制或IDS干扰。尝试保持连接活性或更换端口、协议。HTTP隧道被识别修改隧道工具的请求特征或使用更隐蔽的工具。6.3 安全建议最小化开放端口只开放必要的服务端口。使用白名单基于IP或用户的白名单比黑名单更安全。日志监控记录被拒绝的连接定期分析。多层防御结合网络防火墙、主机防火墙、IDS/IPS、WAF等。明日预告第21天将开始Web漏洞挖掘实战首先从SQL注入的深入利用开始学习手工注入技巧、自动化工具sqlmap的使用以及各种过滤绕过技术。