文章目录Windows防火墙基础防火墙工作原理防火墙配置文件入站规则 vs 出站规则防火墙规则组成要素防火墙配置实战场景 1允许特定端口场景 2限制来源 IP场景 3阻止特定端口场景 4临时启用规则场景 5按程序放行查看和管理规则NAT与端口转发什么是 NATNAT 工作原理为什么外网扫描不到内网端口配置端口转发DMZ 主机不推荐Web 反向代理与端口隐藏反向代理的工作原理隐藏了真实的后端端口端口隔离后端服务绑定本地回环地址127.0.0.1CDN 的层层掩护反向代理 vs 普通端口转发总结外网访问排查三层关卡模型第一关NAT路由器拦截第二关Windows防火墙第三关运营商级NAT完整排查流程Windows防火墙基础防火墙工作原理**防火墙Firewall**是计算机网络安全的第一道防线用于监控和控制网络流量。工作流程网络流量 ↓ 防火墙规则检查 ↓ ┌─────────────┬─────────────┬─────────────┐ │ 允许 │ 阻止 │ 静默丢弃 │ │ (Allow) │ (Block) │ (Drop) │ └─────────────┴─────────────┴─────────────┘三种动作允许Allow放行流量阻止Block拒绝并返回 RST静默丢弃Drop不响应扫描器显示 Filtered防火墙配置文件Windows 防火墙有三种配置文件配置文件适用场景安全级别域Domain连接到公司域网络中等专用Private家庭或可信网络中等公用Public咖啡厅、机场等最高查看当前配置文件Get-NetFirewallProfile|Format-TableName,Enabled入站规则 vs 出站规则规则类型作用默认策略入站规则控制进入电脑的流量默认阻止出站规则控制离开电脑的流量默认允许为什么默认阻止入站防止外部攻击者访问内部服务防止恶意软件开放后门最小权限原则防火墙规则组成要素New-NetFirewallRule-DisplayName规则名称-Direction Inbound -Action Allow -Protocol TCP -LocalPort 80 -RemoteAddress 192.168.0.0/24 -Profile Private -Enabled True关键参数DisplayName规则显示名称DirectionInbound入站/ Outbound出站ActionAllow允许/ Block阻止ProtocolTCP / UDP / ICMPLocalPort本地端口RemoteAddress远程 IP可选Profile应用的网络配置文件Enabled是否启用防火墙配置实战场景 1允许特定端口需求允许 Web 服务器端口 80# 允许 80 端口入站New-NetFirewallRule-DisplayNameWeb Server-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80# 同时允许 HTTP 和 HTTPSNew-NetFirewallRule-DisplayNameWeb Services-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80,443场景 2限制来源 IP需求只允许特定 IP 访问 RDP# 仅允许 192.168.0.101 访问 3389New-NetFirewallRule-DisplayNameRDP Limited-Direction Inbound-Action Allow-Protocol TCP-LocalPort 3389-RemoteAddress 192.168.0.101# 允许整个子网New-NetFirewallRule-DisplayNameRDP Subnet-Direction Inbound-Action Allow-Protocol TCP-LocalPort 3389-RemoteAddress 192.168.0.0/24场景 3阻止特定端口需求阻止 SMB 端口防止勒索病毒# 阻止 445 端口New-NetFirewallRule-DisplayNameBlock SMB-Direction Inbound-Action Block-Protocol TCP-LocalPort 445# 阻止多个端口New-NetFirewallRule-DisplayNameBlock Dangerous-Direction Inbound-Action Block-Protocol TCP-LocalPort 135,139,445场景 4临时启用规则需求临时允许文件共享用完即禁用# 启用规则Enable-NetFirewallRule-DisplayName文件和打印机共享 (SMB-In)# 使用完成后立即禁用Disable-NetFirewallRule-DisplayName文件和打印机共享 (SMB-In)场景 5按程序放行需求只允许特定程序访问网络# 允许 Chrome 浏览器New-NetFirewallRule-DisplayNameChrome-Direction Outbound-Action Allow-ProgramC:\Program Files\Google\Chrome\Application\chrome.exe# 阻止可疑程序New-NetFirewallRule-DisplayNameBlock Malware-Direction Outbound-Action Block-ProgramC:\Users\Public\malware.exe查看和管理规则# 查看所有规则Get-NetFirewallRule|Format-TableDisplayName,Enabled,Action,Direction# 查看特定端口规则Get-NetFirewallRule|Where-Object{$_.LocalPort-eq3389}|Format-TableDisplayName,Enabled,Action# 查看特定程序规则Get-NetFirewallRule-ProgramC:\path\to\program.exe|Format-TableDisplayName,Enabled# 删除规则Remove-NetFirewallRule-DisplayName规则名称# 导出规则Export-NetFirewallRule-PathC:\backup\firewall.xml# 导入规则Import-NetFirewallRule-PathC:\backup\firewall.xmlNAT与端口转发什么是 NATNATNetwork Address Translation网络地址转换是将内网 IP 转换为公网 IP 的技术。为什么需要 NATIPv4 地址耗尽保护内网设备多个设备共享一个公网 IPNAT 工作原理内网设备 (192.168.0.114:80) ↓ 路由器 NAT 转换 ↓ 公网 IP (123.45.67.89:54321) ↓ 互联网NAT 转换表内网地址公网地址说明192.168.0.114:80123.45.67.89:54321Web 服务192.168.0.101:443123.45.67.89:54322HTTPS 服务为什么外网扫描不到内网端口问题描述电脑开放了 80 端口路由器公网 IP 是 123.45.67.89外网扫描123.45.67.89:80→Filtered原因互联网扫描器 → 路由器公网 IP:80 ↓ NAT转换表 ↓ 没有80端口的转发规则 ↓ 丢弃数据包 ↓ 扫描器显示Filtered配置端口转发需求让外网可以访问内网 Web 服务器步骤 1登录路由器管理界面浏览器访问http://192.168.0.1或http://192.168.1.1输入管理员账号密码步骤 2找到端口转发设置常见名称端口转发Port Forwarding虚拟服务器Virtual ServerNAT 设置高级路由步骤 3添加转发规则字段值说明服务名称Web Server自定义名称外部端口80公网访问的端口内部 IP192.168.0.114内网服务器 IP内部端口80内网服务端口协议TCP或 TCP/UDP状态启用启用规则步骤 4配置 Windows 防火墙# 允许 80 端口入站New-NetFirewallRule-DisplayNameWeb Server-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80步骤 5验证配置# 从外网扫描使用手机 4G 网络nmap-p80123.45.67.89# 应该显示 OpenDMZ 主机不推荐**DMZDemilitarized Zone**是将一台内网设备完全暴露到公网。配置方法路由器设置 → DMZ 主机输入内网 IP192.168.0.114启用 DMZ警告所有端口都暴露没有任何保护极易被攻击仅用于测试环境Web 反向代理与端口隐藏反向代理的工作原理Web 反向代理如 Nginx、CDN 等同样会导致你无法通过外网扫描直接探测到内网真实的后端端口。反向代理不仅会扫不到而且它本身就是为了解决如何安全地让外网访问内网服务而设计的。它的存在相当于在你的内网服务器前加了一个极其智能的前台接待员。外网请求 ↓ 反向代理服务器前台 ↓ 内部转发 ↓ 内网真实服务后台隐藏了真实的后端端口端口隔离反向代理的核心工作机制是代劳。对外表现反向代理服务器前台通常只对外开放最标准的 Web 端口即80 (HTTP)和443 (HTTPS)外网扫描器扫描你的域名或公网 IP 时只能看到这两个端口是开放的对内转发当反向代理收到外部的请求后它会在内部服务器本机或内网环境将请求转发给真正的后端服务你的后端服务可能运行在8080、3000、9001等任意非标准端口上结果外网扫描器根本接触不到你内网的 8080 或 3000 端口因为这些端口从未直接暴露给公网扫描结果会显示除 80/443 外的其他端口全部为filtered被过滤或closed关闭后端服务绑定本地回环地址127.0.0.1为了达到极致的安全使用反向代理时运维人员通常会配合一个关键操作将后端应用程序只绑定在 127.0.0.1本地回环地址上。这意味着你的 Web 服务比如一个 Python Flask 或 Node.js 应用只监听来自服务器内部的请求即使有人奇迹般地绕过了防火墙试图从外部直接攻击你的真实后端端口操作系统也会直接拒绝因为该端口压根就没有绑定在对外网卡上CDN 的层层掩护如果你的反向代理前端还套了一层CDN内容分发网络如 Cloudflare、阿里云 CDN 等情况会更加彻底IP 隐藏外网扫描器扫描到的 IP 地址实际上是 CDN 在全球各地的边缘节点 IP根本不是你的源站服务器 IP流量清洗CDN 节点会拦截所有非标准的 HTTP/HTTPS 请求如果你试图用 Nmap 去扫描 CDN IP 的其他端口比如 SSH 的 22 端口或数据库的 3306 端口CDN 的防御机制会直接丢弃这些探测包导致扫描结果全是filtered反向代理 vs 普通端口转发特性普通端口转发Web 反向代理端口暴露外网能看到转发的端口只暴露 80/443后端可见性外网可探测到内网端口后端端口完全隐藏安全性中等高灵活性一对一映射可基于域名、路径转发额外功能无SSL 终止、负载均衡、缓存普通端口转发只是把外网的 80 端口映射到内网的 8080外网依然能探测到 80 端口有东西反向代理外网只能看到反向代理前台开放的 80/443 端口至于内网真实的后端到底开了什么端口、跑在哪个 IP 上对外界来说是完全黑盒的总结Web 反向代理 高级版的端口转发 端口隐藏如果你配置了 Web 反向代理外网扫描不到你的内网真实业务端口这不仅是正常现象更是反向代理发挥作用、保护你源站安全的最佳证明。外网访问排查三层关卡模型外网访问内网 ↓ ┌─────────────────────┐ │ 第一关NAT │ ← 路由器拦截 └─────────────────────┘ ↓ ┌─────────────────────┐ │ 第二关防火墙 │ ← 电脑拦截 └─────────────────────┘ ↓ ┌─────────────────────┐ │ 第三关运营商 NA │ ← 无公网 IP └─────────────────────┘第一关NAT路由器拦截现象电脑 IP192.168.0.114路由器公网 IP123.45.67.89外网扫描123.45.67.89:80→Filtered检查方法登录路由器管理界面查看端口转发规则确认规则已启用解决方法添加端口转发规则见上文确保规则指向正确的内网 IP检查路由器防火墙设置第二关Windows防火墙现象路由器已配置端口转发外网扫描仍然Filtered检查方法# 查看防火墙规则Get-NetFirewallRule|Where-Object{$_.LocalPort-eq80}|Format-TableDisplayName,Enabled,Action# 检查端口监听netstat-ano|findstr :80# 测试本地连接Test-NetConnection-ComputerName localhost-Port 80解决方法添加入站规则允许端口确保规则应用于正确的配置文件公用/专用检查是否有阻止规则优先级更高第三关运营商级NAT现象端口转发已配置Windows 防火墙已放行外网扫描仍然Filtered或Closed原因你没有真正的公网 IP检查方法# 1. 查看路由器 WAN 口 IP# 登录路由器管理界面 → 查看 WAN 口状态# 假设看到100.64.1.234# 2. 查询实际公网 IPcurlifconfig.me# 假设看到123.45.67.89# 3. 对比两个 IP# 100.64.1.234 ≠ 123.45.67.89# 说明你在运营商大内网中常见内网 IP 段IP 段说明100.64.0.0/10运营商 NAT 专用10.0.0.0/8A 类私有地址172.16.0.0/12B 类私有地址192.168.0.0/16C 类私有地址完整排查流程外网扫描不到端口 ↓ 1. 检查是否有公网 IP ├─ 路由器 WAN 口 IP 公网 IP→ 继续 └─ 不一致 → 申请公网 IP或使用内网穿透 ↓ 2. 检查端口转发配置 ├─ 路由器已配置转发 → 继续 └─ 未配置 → 添加端口转发规则 ↓ 3. 检查 Windows 防火墙 ├─ 已添加入站规则 → 继续 └─ 未添加 → 创建允许规则 ↓ 4. 检查服务是否运行 ├─ 端口有程序监听 → 成功 └─ 无程序 → 启动服务免责声明本文档仅供学习和合法网络配置使用。未经授权访问他人网络可能违反法律法规。
防火墙配置与外网访问
文章目录Windows防火墙基础防火墙工作原理防火墙配置文件入站规则 vs 出站规则防火墙规则组成要素防火墙配置实战场景 1允许特定端口场景 2限制来源 IP场景 3阻止特定端口场景 4临时启用规则场景 5按程序放行查看和管理规则NAT与端口转发什么是 NATNAT 工作原理为什么外网扫描不到内网端口配置端口转发DMZ 主机不推荐Web 反向代理与端口隐藏反向代理的工作原理隐藏了真实的后端端口端口隔离后端服务绑定本地回环地址127.0.0.1CDN 的层层掩护反向代理 vs 普通端口转发总结外网访问排查三层关卡模型第一关NAT路由器拦截第二关Windows防火墙第三关运营商级NAT完整排查流程Windows防火墙基础防火墙工作原理**防火墙Firewall**是计算机网络安全的第一道防线用于监控和控制网络流量。工作流程网络流量 ↓ 防火墙规则检查 ↓ ┌─────────────┬─────────────┬─────────────┐ │ 允许 │ 阻止 │ 静默丢弃 │ │ (Allow) │ (Block) │ (Drop) │ └─────────────┴─────────────┴─────────────┘三种动作允许Allow放行流量阻止Block拒绝并返回 RST静默丢弃Drop不响应扫描器显示 Filtered防火墙配置文件Windows 防火墙有三种配置文件配置文件适用场景安全级别域Domain连接到公司域网络中等专用Private家庭或可信网络中等公用Public咖啡厅、机场等最高查看当前配置文件Get-NetFirewallProfile|Format-TableName,Enabled入站规则 vs 出站规则规则类型作用默认策略入站规则控制进入电脑的流量默认阻止出站规则控制离开电脑的流量默认允许为什么默认阻止入站防止外部攻击者访问内部服务防止恶意软件开放后门最小权限原则防火墙规则组成要素New-NetFirewallRule-DisplayName规则名称-Direction Inbound -Action Allow -Protocol TCP -LocalPort 80 -RemoteAddress 192.168.0.0/24 -Profile Private -Enabled True关键参数DisplayName规则显示名称DirectionInbound入站/ Outbound出站ActionAllow允许/ Block阻止ProtocolTCP / UDP / ICMPLocalPort本地端口RemoteAddress远程 IP可选Profile应用的网络配置文件Enabled是否启用防火墙配置实战场景 1允许特定端口需求允许 Web 服务器端口 80# 允许 80 端口入站New-NetFirewallRule-DisplayNameWeb Server-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80# 同时允许 HTTP 和 HTTPSNew-NetFirewallRule-DisplayNameWeb Services-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80,443场景 2限制来源 IP需求只允许特定 IP 访问 RDP# 仅允许 192.168.0.101 访问 3389New-NetFirewallRule-DisplayNameRDP Limited-Direction Inbound-Action Allow-Protocol TCP-LocalPort 3389-RemoteAddress 192.168.0.101# 允许整个子网New-NetFirewallRule-DisplayNameRDP Subnet-Direction Inbound-Action Allow-Protocol TCP-LocalPort 3389-RemoteAddress 192.168.0.0/24场景 3阻止特定端口需求阻止 SMB 端口防止勒索病毒# 阻止 445 端口New-NetFirewallRule-DisplayNameBlock SMB-Direction Inbound-Action Block-Protocol TCP-LocalPort 445# 阻止多个端口New-NetFirewallRule-DisplayNameBlock Dangerous-Direction Inbound-Action Block-Protocol TCP-LocalPort 135,139,445场景 4临时启用规则需求临时允许文件共享用完即禁用# 启用规则Enable-NetFirewallRule-DisplayName文件和打印机共享 (SMB-In)# 使用完成后立即禁用Disable-NetFirewallRule-DisplayName文件和打印机共享 (SMB-In)场景 5按程序放行需求只允许特定程序访问网络# 允许 Chrome 浏览器New-NetFirewallRule-DisplayNameChrome-Direction Outbound-Action Allow-ProgramC:\Program Files\Google\Chrome\Application\chrome.exe# 阻止可疑程序New-NetFirewallRule-DisplayNameBlock Malware-Direction Outbound-Action Block-ProgramC:\Users\Public\malware.exe查看和管理规则# 查看所有规则Get-NetFirewallRule|Format-TableDisplayName,Enabled,Action,Direction# 查看特定端口规则Get-NetFirewallRule|Where-Object{$_.LocalPort-eq3389}|Format-TableDisplayName,Enabled,Action# 查看特定程序规则Get-NetFirewallRule-ProgramC:\path\to\program.exe|Format-TableDisplayName,Enabled# 删除规则Remove-NetFirewallRule-DisplayName规则名称# 导出规则Export-NetFirewallRule-PathC:\backup\firewall.xml# 导入规则Import-NetFirewallRule-PathC:\backup\firewall.xmlNAT与端口转发什么是 NATNATNetwork Address Translation网络地址转换是将内网 IP 转换为公网 IP 的技术。为什么需要 NATIPv4 地址耗尽保护内网设备多个设备共享一个公网 IPNAT 工作原理内网设备 (192.168.0.114:80) ↓ 路由器 NAT 转换 ↓ 公网 IP (123.45.67.89:54321) ↓ 互联网NAT 转换表内网地址公网地址说明192.168.0.114:80123.45.67.89:54321Web 服务192.168.0.101:443123.45.67.89:54322HTTPS 服务为什么外网扫描不到内网端口问题描述电脑开放了 80 端口路由器公网 IP 是 123.45.67.89外网扫描123.45.67.89:80→Filtered原因互联网扫描器 → 路由器公网 IP:80 ↓ NAT转换表 ↓ 没有80端口的转发规则 ↓ 丢弃数据包 ↓ 扫描器显示Filtered配置端口转发需求让外网可以访问内网 Web 服务器步骤 1登录路由器管理界面浏览器访问http://192.168.0.1或http://192.168.1.1输入管理员账号密码步骤 2找到端口转发设置常见名称端口转发Port Forwarding虚拟服务器Virtual ServerNAT 设置高级路由步骤 3添加转发规则字段值说明服务名称Web Server自定义名称外部端口80公网访问的端口内部 IP192.168.0.114内网服务器 IP内部端口80内网服务端口协议TCP或 TCP/UDP状态启用启用规则步骤 4配置 Windows 防火墙# 允许 80 端口入站New-NetFirewallRule-DisplayNameWeb Server-Direction Inbound-Action Allow-Protocol TCP-LocalPort 80步骤 5验证配置# 从外网扫描使用手机 4G 网络nmap-p80123.45.67.89# 应该显示 OpenDMZ 主机不推荐**DMZDemilitarized Zone**是将一台内网设备完全暴露到公网。配置方法路由器设置 → DMZ 主机输入内网 IP192.168.0.114启用 DMZ警告所有端口都暴露没有任何保护极易被攻击仅用于测试环境Web 反向代理与端口隐藏反向代理的工作原理Web 反向代理如 Nginx、CDN 等同样会导致你无法通过外网扫描直接探测到内网真实的后端端口。反向代理不仅会扫不到而且它本身就是为了解决如何安全地让外网访问内网服务而设计的。它的存在相当于在你的内网服务器前加了一个极其智能的前台接待员。外网请求 ↓ 反向代理服务器前台 ↓ 内部转发 ↓ 内网真实服务后台隐藏了真实的后端端口端口隔离反向代理的核心工作机制是代劳。对外表现反向代理服务器前台通常只对外开放最标准的 Web 端口即80 (HTTP)和443 (HTTPS)外网扫描器扫描你的域名或公网 IP 时只能看到这两个端口是开放的对内转发当反向代理收到外部的请求后它会在内部服务器本机或内网环境将请求转发给真正的后端服务你的后端服务可能运行在8080、3000、9001等任意非标准端口上结果外网扫描器根本接触不到你内网的 8080 或 3000 端口因为这些端口从未直接暴露给公网扫描结果会显示除 80/443 外的其他端口全部为filtered被过滤或closed关闭后端服务绑定本地回环地址127.0.0.1为了达到极致的安全使用反向代理时运维人员通常会配合一个关键操作将后端应用程序只绑定在 127.0.0.1本地回环地址上。这意味着你的 Web 服务比如一个 Python Flask 或 Node.js 应用只监听来自服务器内部的请求即使有人奇迹般地绕过了防火墙试图从外部直接攻击你的真实后端端口操作系统也会直接拒绝因为该端口压根就没有绑定在对外网卡上CDN 的层层掩护如果你的反向代理前端还套了一层CDN内容分发网络如 Cloudflare、阿里云 CDN 等情况会更加彻底IP 隐藏外网扫描器扫描到的 IP 地址实际上是 CDN 在全球各地的边缘节点 IP根本不是你的源站服务器 IP流量清洗CDN 节点会拦截所有非标准的 HTTP/HTTPS 请求如果你试图用 Nmap 去扫描 CDN IP 的其他端口比如 SSH 的 22 端口或数据库的 3306 端口CDN 的防御机制会直接丢弃这些探测包导致扫描结果全是filtered反向代理 vs 普通端口转发特性普通端口转发Web 反向代理端口暴露外网能看到转发的端口只暴露 80/443后端可见性外网可探测到内网端口后端端口完全隐藏安全性中等高灵活性一对一映射可基于域名、路径转发额外功能无SSL 终止、负载均衡、缓存普通端口转发只是把外网的 80 端口映射到内网的 8080外网依然能探测到 80 端口有东西反向代理外网只能看到反向代理前台开放的 80/443 端口至于内网真实的后端到底开了什么端口、跑在哪个 IP 上对外界来说是完全黑盒的总结Web 反向代理 高级版的端口转发 端口隐藏如果你配置了 Web 反向代理外网扫描不到你的内网真实业务端口这不仅是正常现象更是反向代理发挥作用、保护你源站安全的最佳证明。外网访问排查三层关卡模型外网访问内网 ↓ ┌─────────────────────┐ │ 第一关NAT │ ← 路由器拦截 └─────────────────────┘ ↓ ┌─────────────────────┐ │ 第二关防火墙 │ ← 电脑拦截 └─────────────────────┘ ↓ ┌─────────────────────┐ │ 第三关运营商 NA │ ← 无公网 IP └─────────────────────┘第一关NAT路由器拦截现象电脑 IP192.168.0.114路由器公网 IP123.45.67.89外网扫描123.45.67.89:80→Filtered检查方法登录路由器管理界面查看端口转发规则确认规则已启用解决方法添加端口转发规则见上文确保规则指向正确的内网 IP检查路由器防火墙设置第二关Windows防火墙现象路由器已配置端口转发外网扫描仍然Filtered检查方法# 查看防火墙规则Get-NetFirewallRule|Where-Object{$_.LocalPort-eq80}|Format-TableDisplayName,Enabled,Action# 检查端口监听netstat-ano|findstr :80# 测试本地连接Test-NetConnection-ComputerName localhost-Port 80解决方法添加入站规则允许端口确保规则应用于正确的配置文件公用/专用检查是否有阻止规则优先级更高第三关运营商级NAT现象端口转发已配置Windows 防火墙已放行外网扫描仍然Filtered或Closed原因你没有真正的公网 IP检查方法# 1. 查看路由器 WAN 口 IP# 登录路由器管理界面 → 查看 WAN 口状态# 假设看到100.64.1.234# 2. 查询实际公网 IPcurlifconfig.me# 假设看到123.45.67.89# 3. 对比两个 IP# 100.64.1.234 ≠ 123.45.67.89# 说明你在运营商大内网中常见内网 IP 段IP 段说明100.64.0.0/10运营商 NAT 专用10.0.0.0/8A 类私有地址172.16.0.0/12B 类私有地址192.168.0.0/16C 类私有地址完整排查流程外网扫描不到端口 ↓ 1. 检查是否有公网 IP ├─ 路由器 WAN 口 IP 公网 IP→ 继续 └─ 不一致 → 申请公网 IP或使用内网穿透 ↓ 2. 检查端口转发配置 ├─ 路由器已配置转发 → 继续 └─ 未配置 → 添加端口转发规则 ↓ 3. 检查 Windows 防火墙 ├─ 已添加入站规则 → 继续 └─ 未添加 → 创建允许规则 ↓ 4. 检查服务是否运行 ├─ 端口有程序监听 → 成功 └─ 无程序 → 启动服务免责声明本文档仅供学习和合法网络配置使用。未经授权访问他人网络可能违反法律法规。