防火墙高级配置完整教程:端口映射+访问控制策略+iptables规则编写

一、防火墙高级配置核心概念(新手必看)

防火墙高级配置是通过精细化规则实现网络流量的精准管控,核心覆盖三大场景:端口映射 (公网访问内网服务)、访问控制策略 (IP / 端口 / 协议级权限管控)、iptables 规则编写(Linux 系统底层流量过滤)。适用于服务器运维、企业内网安全加固、云服务器端口管理等场景,配置遵循 "最小权限原则",即仅开放必要服务,拒绝所有默认流量。

二、端口映射配置(公网访问内网服务实操)

端口映射本质是将公网 IP 的指定端口流量,转发到内网服务器的私有 IP + 端口,常见于 Web 服务、游戏服务器、远程桌面等场景。

1. Linux 系统(iptables 实现)

前提条件
  • 已安装 iptables(Debian/Ubuntu:sudo apt install iptables;CentOS:sudo dnf install iptables

  • 拥有公网 IP(服务器网卡绑定公网地址)

  • 内网服务器可正常访问

配置步骤
  1. 启用 IP 转发(内核级转发开关)
bash 复制代码
sudo nano /etc/sysctl.conf

取消注释或添加:net.ipv4.ip_forward=1,执行生效:

css 复制代码
sudo sysctl -p
  1. 配置端口转发规则(示例:公网 8080 端口→内网 192.168.1.100:80)
css 复制代码
\# DNAT:目标地址转换(公网→内网)

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

\# SNAT:源地址转换(内网→公网,确保返回流量正常)

sudo iptables -t nat -A POSTROUTING -j MASQUERADE
  1. 验证与保存
  • 查看规则:sudo iptables -t nat -L -n

  • 永久保存(Ubuntu/Debian):

bash 复制代码
sudo apt install iptables-persistent  # 安装持久化工具

sudo netfilter-persistent save        # 保存规则到/etc/iptables/rules.v4
  • 永久保存(CentOS/RHEL):
bash 复制代码
sudo service iptables save  # 规则保存到/etc/sysconfig/iptables

2. Windows 系统(Windows Defender 防火墙高级配置)

适用于 Windows Server 或个人电脑,通过图形化界面配置端口映射:

  1. 打开「控制面板→系统和安全→Windows Defender 防火墙→高级设置」

  2. 右键「入站规则→新建规则」,选择「端口」类型,点击下一步

  3. 选择 TCP/UDP 协议,输入需映射的本地端口(如 8080),点击下一步

  4. 选择「允许连接」,配置适用场景(域 / 专用 / 公共网络)

  5. 命名规则(如 "Web 服务 8080 端口映射"),完成创建

  6. 补充配置:右键规则→属性→高级,勾选 "在公共网络上启用"(公网访问需开启)

三、访问控制策略设计与实现

访问控制策略是防火墙的核心安全机制,通过 "允许 / 拒绝" 规则组合,限制特定 IP、端口或协议的流量,分为入站规则(外部→本地)和出站规则(本地→外部)。

1. 策略设计三原则

  • 优先级规则:越具体的规则优先级越高(如 "允许 192.168.1.0/24 访问 80 端口" 优先于 "允许所有 IP 访问 80 端口")

  • 方向区分:入站规则重点防外部攻击,出站规则限制内部违规访问(如禁止访问恶意 IP)

  • 日志审计:开启日志记录,便于排查异常流量(记录丢弃包和成功连接)

2. 实操案例(Linux+Windows)

案例 1:Linux iptables 访问控制(最常用)
css 复制代码
\# 1. 设置默认策略(拒绝所有入站/转发,允许出站)

sudo iptables -P INPUT DROP

sudo iptables -P FORWARD DROP

sudo iptables -P OUTPUT ACCEPT

\# 2. 允许信任IP访问SSH(22端口)

sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

sudo iptables -A INPUT -s 123.45.67.89 -p tcp --dport 22 -j ACCEPT

\# 3. 禁止特定IP段访问(如恶意IP段10.0.0.0/8)

sudo iptables -A INPUT -s 10.0.0.0/8 -j DROP

\# 4. 允许HTTP(80)和HTTPS(443)端口公共访问

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

\# 5. 启用日志记录(记录被拒绝的连接)

sudo iptables -A INPUT -j LOG --log-prefix "FIREWALL-DENY: "
案例 2:Windows Defender 访问控制策略
  1. 打开高级防火墙→「出站规则→新建规则」,选择「自定义」类型

  2. 匹配条件设置:

  • 协议:TCP/UDP(可指定具体协议号)

  • 远程 IP 地址:添加需禁止的 IP 段(如 192.168.2.0/24)

  • 本地端口:限制特定端口(如禁止访问 3389 远程桌面端口)

  1. 操作选择「阻止连接」,适用网络场景选择「所有网络」

  2. 命名规则(如 "禁止访问违规 IP 段"),完成配置

四、iptables 规则编写进阶(Linux 系统)

iptables 是 Linux 内核自带的防火墙工具,通过 "链 + 规则" 机制过滤流量,核心链包括 INPUT(入站)、OUTPUT(出站)、FORWARD(转发),支持 IP、端口、协议、连接状态等多维度匹配。

1. 基础语法格式

css 复制代码
iptables \[-t 表名] 动作 链名 匹配条件 -j 目标动作
  • 表名:默认 filter 表(过滤),nat 表(地址转换),mangle 表(流量修改)

  • 动作:-A(追加规则)、-I(插入规则)、-D(删除规则)、-F(清空规则)

  • 匹配条件:-s(源 IP)、-d(目标 IP)、-p(协议)、--dport(目标端口)、--sport(源端口)

  • 目标动作:ACCEPT(允许)、DROP(丢弃)、REJECT(拒绝并返回信息)、LOG(日志)

2. 高频规则实例(直接复制可用)

(1)连接状态匹配(仅允许已建立的连接)
css 复制代码
\# 允许ESTABLISHED(已建立)和RELATED(关联连接)流量

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
(2)端口范围限制(允许 1000-2000 端口访问)
css 复制代码
sudo iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT
(3)SYN Flood 攻击防护(限制每秒新建连接数)
css 复制代码
sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
(4)删除指定规则(删除 INPUT 链中允许 80 端口的规则)
arduino 复制代码
\# 先查看规则编号:sudo iptables -L INPUT --line-numbers

sudo iptables -D INPUT 3  # 3为规则编号

3. 规则管理核心技巧

  • 备份规则:sudo iptables-save > /root/iptables_backup.rules

  • 恢复规则:sudo iptables-restore < /root/iptables_backup.rules

  • 开机自启(Systemd 系统):

bash 复制代码
\# 创建服务文件

sudo nano /etc/systemd/system/iptables-restore.service

写入以下内容:

ini 复制代码
\[Unit]

Description=Restore iptables rules

After=network.target

\[Service]

Type=oneshot

ExecStart=/sbin/iptables-restore /etc/iptables/rules.v4

\[Install]

WantedBy=multi-user.target

启用服务:

bash 复制代码
sudo systemctl daemon-reload

sudo systemctl enable iptables-restore

五、避坑指南与常见问题排查

  1. 端口映射配置后无法访问?
  • 检查内核 IP 转发是否启用:sysctl net.ipv4.ip_forward(返回 1 为正常)

  • 云服务器需开放安全组(如阿里云 ECS、腾讯云需在控制台放行对应端口)

  • 本地防火墙是否拦截:sudo iptables -L INPUT -n | grep 8080(查看规则是否存在)

  1. iptables 规则重启后失效?
  • 未执行永久保存命令(需按 Linux 发行版选择对应方法)

  • CentOS 7 + 默认使用 firewalld,需先关闭:sudo systemctl stop firewalld && sudo systemctl disable firewalld

  1. 访问控制策略不生效?
  • 规则优先级顺序错误:先添加具体规则,再添加通用规则

  • 未设置默认拒绝策略:iptables -P INPUT DROP(否则默认允许所有流量)

相关推荐
翼龙云_cloud1 小时前
亚马逊云渠道商:AWS Shield和传统防火墙怎么选?
运维·服务器·云计算·aws
zzzsde2 小时前
【Linux】基础开发工具(2):vim补充说明&&gcc/g++编译器
linux·运维·服务器
河南博为智能科技有限公司2 小时前
动环监控终端-守护变电站安全运行的智能核心
运维·服务器·网络·物联网
tzhou644522 小时前
Nginx 性能优化与防盗链配置
运维·nginx·性能优化
热爱学习的小怪兽2 小时前
Docker容器的一些总结
运维·docker·容器
要站在顶端2 小时前
基于 curl 实现 Jenkins 上传制品到 JFrog Artifactory
运维·ci/cd·jenkins
杨德杰3 小时前
Ubuntu设置VNC远程桌面
linux·运维·ubuntu
写代码的学渣3 小时前
Ubuntu/麒麟默认锁定root账户
linux·运维·ubuntu
刚哥的进化路5 小时前
Linux系统日志管理完全教程:从基础查看 to 集中分析(附实战命令)
运维·自动化运维