Linux 防火墙 iptables 配置指南

适用系统:Debian/Ubuntu 及其他 Linux 发行版
目标:配置 iptables 防火墙规则,保护服务器安全


📋 目录


查看当前配置

查看当前 INPUT 链的规则及行号:

Terminal window
iptables -L INPUT -n --line-numbers

参数说明


基础规则配置

1. 允许本地回环

允许本地回环接口(lo)的所有流量,这是系统正常运行所必需的:

Terminal window
sudo iptables -A INPUT -i lo -j ACCEPT

2. 允许已建立的连接

允许已建立的连接和相关连接通过,保持现有 SSH 连接不断开:

Terminal window
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

⚠️ 重要提示:这条规则非常重要!如果不添加,配置防火墙后可能会导致 SSH 连接断开,无法继续操作服务器。


端口放行

放行 SSH (端口 22)

允许 SSH 连接(端口 22):

Terminal window
# 放行 TCP 22 端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 放行 UDP 22 端口(可选)
sudo iptables -A INPUT -p udp --dport 22 -j ACCEPT

放行 HTTPS (端口 443)

允许 HTTPS 连接(端口 443):

Terminal window
# 放行 TCP 443 端口
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 放行 UDP 443 端口(HTTP/3 需要)
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT

放行 HTTP (端口 80)

允许 HTTP 连接(端口 80):

Terminal window
# 放行 TCP 80 端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 放行 UDP 80 端口(可选)
sudo iptables -A INPUT -p udp --dport 80 -j ACCEPT

默认策略

设置默认策略为 DROP(拒绝所有未明确允许的流量):

Terminal window
sudo iptables -P INPUT DROP

⚠️ 警告:执行此命令前,请确保已经添加了必要的放行规则(特别是 SSH),否则可能会被防火墙锁定!


持久化保存

安装持久化工具

Terminal window
sudo apt install iptables-persistent -y

保存规则

将当前规则保存到文件,重启后自动加载:

Terminal window
# 保存 IPv4 规则
sudo iptables-save > /etc/iptables/rules.v4
# 保存 IPv6 规则(如果需要)
sudo ip6tables-save > /etc/iptables/rules.v6

📝 常用命令

查看所有规则

Terminal window
sudo iptables -L -n -v

删除规则

Terminal window
# 按行号删除
sudo iptables -D INPUT 1
# 清空所有规则
sudo iptables -F

查看规则编号

Terminal window
sudo iptables -L INPUT --line-numbers

🔧 完整配置脚本

以下是一个完整的配置脚本,可以直接使用:

#!/bin/bash
# 清空现有规则
sudo iptables -F
# 允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 放行 SSH (22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 放行 HTTP (80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 放行 HTTPS (443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 设置默认策略
sudo iptables -P INPUT DROP
# 保存规则
sudo apt install iptables-persistent -y
sudo iptables-save > /etc/iptables/rules.v4
echo "✅ iptables 配置完成!"

💡 最佳实践

  1. 先添加放行规则,再设置默认策略:避免被防火墙锁定
  2. 定期备份规则文件/etc/iptables/rules.v4
  3. 测试规则后再持久化:确保规则正确无误
  4. 使用非标准 SSH 端口:提高安全性
  5. 限制特定 IP 访问:对于管理端口,可以限制来源 IP

📚 参考资料