防火墙高级配置完整教程:端口映射+访问控制策略+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(否则默认允许所有流量)

相关推荐
神奇的程序员5 小时前
从已损坏的备份中拯救数据
运维·后端·前端工程化
虾..6 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙7 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
玄斎7 小时前
MySQL 单表操作通关指南:建库 / 建表 / 插入 / 增删改查
运维·服务器·数据库·学习·程序人生·mysql·oracle
trayvontang8 小时前
Nginx之location配置
运维·nginx
十六年开源服务商8 小时前
WordPress定制开发最佳公司的用户画像
运维
世岩清上9 小时前
AI驱动的智能运维:从自动化到自主化的技术演进与架构革新
运维·人工智能·自动化
张童瑶10 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
石小千10 小时前
Linux安装OpenProject
linux·运维
Lime-309010 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu