自学渗透测试第20天(防火墙基础与规则配置)

7.3 防火墙基础与规则配置(第20天)

核心目标
  1. 理解防火墙原理:掌握包过滤、状态检测、应用层代理等防火墙工作原理,理解iptables/netfilter架构。

  2. 掌握iptables配置:熟练使用iptables命令配置防火墙规则,实现访问控制、端口转发、网络地址转换。

  3. 掌握防火墙绕过技术:了解常见的防火墙绕过方法,如端口复用、隧道技术、协议混淆等。

模块一:防火墙基础概念
1.1 防火墙类型
  • 包过滤防火墙:工作在网络层和传输层,检查IP、端口、协议。速度快,但无法理解应用层内容。

  • 状态检测防火墙:在包过滤基础上,跟踪连接状态(如TCP三次握手)。更安全。

  • 应用层代理防火墙:工作在应用层,理解协议内容。安全性高,但速度慢。

  • 下一代防火墙:集成入侵防御、应用识别、用户身份管理等。

1.2 iptables/netfilter架构
  • netfilter:Linux内核中的框架,提供数据包处理钩子。

  • iptables:用户空间工具,用于配置netfilter规则。

  • 四表五链

  • filter(过滤)、nat(地址转换)、mangle(修改数据包)、raw(连接跟踪)。

  • INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTINGPOSTROUTING

模块二:iptables配置与管理
2.1 基本语法
复制代码
iptables [-t 表名] 命令 链名 [规则号] 匹配条件 -j 动作
  • 常用命令

  • -A:追加规则

  • -I:插入规则

  • -D:删除规则

  • -L:列出规则

  • -F:清空规则

  • -P:设置默认策略

  • 常见动作

    • ACCEPT:接受

    • DROP:丢弃(无响应)

    • REJECT:拒绝(返回拒绝包)reject

    • LOG:记录日志

    • 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 访问控制规则
  • 允许特定端口

    复制代码
    # 允许SSH(22端口)
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptalbes -A input -p tcp --dport 22 -j accept
    # 允许Web(80,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:22

  • sslh:在同一个端口上处理HTTPS和SSH。

3.2 隧道技术
  • SSH隧道

    复制代码
    # 本地端口转发(访问本地端口即访问远程服务)
    ssh -L 8080:远程主机:80 用户@跳板机
    ​
    # 动态端口转发(创建SOCKS代理)
    ssh -D 1080 用户@服务器
  • HTTP/HTTPS隧道

    • reGeorgTunnareDuh:将流量封装在HTTP请求中。
  • DNS隧道

    • dnscat2iodine:通过DNS查询和响应传输数据,可绕过出站限制。
3.3 协议混淆
  • 将流量伪装成常见协议:如HTTP、HTTPS、DNS、ICMP。

  • 工具

  • Ptunnel:ICMP隧道。

  • 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 name="Open Port 80" dir=in action=allow protocol=TCP localport=80
    #注:打开windows防火墙的80端口,让外部电脑通过tcp协议访问本机的80端口。
    # 允许程序
    netsh advfirewall firewall add rule name="Allow MyApp" dir=in action=allow program="C:\MyApp.exe"
    ​
    # 删除规则
    netsh advfirewall firewall delete rule name="Open Port 80"
模块五:当日达标实战任务
5.1 iptables基础配置
  1. 配置安全防火墙:在Kali或Ubuntu虚拟机上,配置iptables实现以下策略:

    • 默认策略:INPUT链DROP,OUTPUT链ACCEPT,FORWARD链DROP。

    • 允许本地回环通信。

    • 允许已建立的连接和相关的连接。

    • 允许SSH(22)、HTTP(80)、HTTPS(443)入站连接。

    • 允许ICMP(ping)。

    • 保存规则并确保重启后生效。

  2. 测试规则:从另一台主机测试端口连通性,确认规则生效。

5.2 端口转发实践
  1. 本地端口转发 :在Kali上,将访问8080端口的流量重定向到本机的80端口。配置iptables规则,并验证访问http://localhost:8080能打开本机80端口的服务。

  2. 远程端口转发:如果有两台虚拟机,尝试配置DNAT规则,将访问防火墙主机(A)的2222端口的流量转发到另一台主机(B)的22端口,实现通过A的2222端口SSH连接到B。

5.3 防火墙绕过模拟
  1. SSH隧道实践 :如果有两台Linux主机(A和B),且A能SSH到B。在A上建立本地端口转发,将A的8888端口转发到B的80端口。然后在A上访问http://localhost:8888,应看到B的Web页面。

  2. HTTP隧道工具体验 :下载reGeorg,将其上传到一台有Web服务的服务器。在本地使用reGeorgSocksProxy.py连接,建立SOCKS代理,尝试通过代理进行网络访问。

模块六:常见问题与解决方案
6.1 iptables配置问题
  • 规则不生效 :检查规则顺序(iptables规则从上到下匹配),确认默认策略。使用iptables -L -n -v --line-numbers查看规则和匹配计数。

  • 配置后无法远程连接:在配置INPUT默认DROP前,确保已添加允许SSH的规则。或通过物理控制台登录修改。

  • NAT不生效 :确保已开启IP转发(net.ipv4.ip_forward=1),且数据包流经正确的链(PREROUTING, POSTROUTING)。

6.2 防火墙绕过问题
  • 隧道连接不稳定:可能是防火墙有超时断开机制,或IDS干扰。尝试保持连接活性,或更换端口、协议。

  • HTTP隧道被识别:修改隧道工具的请求特征,或使用更隐蔽的工具。

6.3 安全建议
  • 最小化开放端口:只开放必要的服务端口。

  • 使用白名单:基于IP或用户的白名单比黑名单更安全。

  • 日志监控:记录被拒绝的连接,定期分析。

  • 多层防御:结合网络防火墙、主机防火墙、IDS/IPS、WAF等。


明日预告 :第21天将开始Web漏洞挖掘实战 ,首先从SQL注入的深入利用开始,学习手工注入技巧、自动化工具sqlmap的使用,以及各种过滤绕过技术。

相关推荐
亚空间仓鼠2 小时前
Docker 容器技术入门与实践 (二):Dockerfile文件
运维·docker·容器
沉默中爆发的IT男2 小时前
BGP基础配置实验总结
linux·服务器·前端
遇见火星2 小时前
linux设置开启启动服务
linux·运维·服务器·nginx
CHENKONG_CK2 小时前
智流链驱动 RFID 混流装配,赋能汽车精益生产
网络·人工智能·tcp/ip·自动化·射频工程·rfid
亚空间仓鼠2 小时前
Docker 容器技术入门与实践 (一):命令与镜像、容器管理
运维·docker·容器
.柒宇.2 小时前
Python 运维实战:psutil 监控系统资源 + paramiko 远程管理服务器
运维·服务器·python
翼龙云_cloud3 小时前
腾讯云代理商:云上 OpenClaw5 分钟接入 Slack 指南 AI 助手一键部署实战
服务器·人工智能·云计算·腾讯云·openclaw
渴了喝洗衣液3 小时前
作业44444444
网络·智能路由器
IPDEEP全球代理3 小时前
美国纽约IP和普通美国IP有什么区别?
网络·网络协议·tcp/ip