当前位置: 首页 > news >正文

自学渗透测试第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的使用,以及各种过滤绕过技术。

http://www.jsqmd.com/news/674921/

相关文章:

  • 别再只用远程桌面了!用frp给家里电脑开个‘后门’,映射硬盘、Web服务甚至游戏服务器
  • CSS如何高效命名样式类_掌握BEM规范提升语义化程度
  • 像素剧本圣殿实战教程:Qwen2.5-14B-Instruct生成适配TikTok/YouTube Shorts的竖屏剧本
  • 2026年口碑好的厂区专用消防车/山东消防车/消防车/四轮消防车长期合作厂家推荐 - 行业平台推荐
  • xattr实战:从POSIX API到内核实现的深度解析
  • 【Java Loom安全转型权威指南】:20年架构师亲授响应式迁移中97%团队忽略的3大线程安全陷阱
  • 华硕枪神8/8Plus 超竞版 G634J G614J G814J G814J 原厂Win11 22H2系统分享下载-宇程系统站
  • 幻境·流金多场景落地:支持教育课件配图、科研论文插图、展览海报
  • 蓝桥杯:大学生技术成长的“试金石”与“加速器”
  • [GXYCTF2019]禁止套娃
  • PyTorch实战解析:nn.SmoothL1Loss在目标检测中的鲁棒回归应用
  • EXP-00106: 数据库链接口令无效
  • 告别卡顿!优化Windows 11 Miracast投屏体验,让小米手机投屏更流畅
  • Real-Anime-Z开源实践:基于Z-Image Turbo的LoRA训练数据集分析
  • 每日热门skill:OpenClaw 268k下载量的“记忆外挂“:self-improving-agent深度解析
  • 如何优雅地使用c语言编写爬虫
  • 51单片机型号数字暗藏玄机?STC89C51、C52、C54命名规则与存储空间全解析
  • nli-MiniLM2-L6-H768生产环境:与Elasticsearch结合实现语义检索重排序
  • egergergeeert惊艳效果:11张高细节服装纹理+发丝表现的插画作品
  • 拯救者工具箱:让你的联想笔记本性能翻倍的开源神器
  • 2026年靠谱的本溪旅游徒步游/本溪旅游亲子游亲子游排行榜 - 品牌宣传支持者
  • Phi-3.5-mini-instruct架构对比:与Llama3-8B在注意力机制与长文本处理差异
  • 在Replit上构建你的首个全栈应用:从零到部署的免费实践
  • 【二层和三层的区别】dis ospf peer和dis lldp nei int g x/x/x命令的区别?
  • 框架原理解析
  • 程序员鱼皮AI智能体项目学习体验分享|给Java学习者的真实参考
  • GraalVM Native Image内存优化实战手册(金融级低延迟场景验证版)
  • 手把手教你改造RuoYi-Vue,让它同时连接MySQL和TDengine 3.0
  • 从PS插件源码入手:手把手教你读懂并修改那个‘秋色效果’的JSX脚本
  • RMBG-2.0效果对比:与传统工具PK,毛发玻璃杯处理更精准