Linux 防火墙 iptables 配置指南
适用系统:Debian/Ubuntu 及其他 Linux 发行版
目标:配置 iptables 防火墙规则,保护服务器安全
📋 目录
查看当前配置
查看当前 INPUT 链的规则及行号:
iptables -L INPUT -n --line-numbers参数说明:
-L INPUT:列出 INPUT 链的规则-n:以数字形式显示地址和端口--line-numbers:显示行号,方便后续删除或插入规则
基础规则配置
1. 允许本地回环
允许本地回环接口(lo)的所有流量,这是系统正常运行所必需的:
sudo iptables -A INPUT -i lo -j ACCEPT2. 允许已建立的连接
允许已建立的连接和相关连接通过,保持现有 SSH 连接不断开:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT⚠️ 重要提示:这条规则非常重要!如果不添加,配置防火墙后可能会导致 SSH 连接断开,无法继续操作服务器。
端口放行
放行 SSH (端口 22)
允许 SSH 连接(端口 22):
# 放行 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):
# 放行 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):
# 放行 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(拒绝所有未明确允许的流量):
sudo iptables -P INPUT DROP⚠️ 警告:执行此命令前,请确保已经添加了必要的放行规则(特别是 SSH),否则可能会被防火墙锁定!
持久化保存
安装持久化工具
sudo apt install iptables-persistent -y保存规则
将当前规则保存到文件,重启后自动加载:
# 保存 IPv4 规则sudo iptables-save > /etc/iptables/rules.v4
# 保存 IPv6 规则(如果需要)sudo ip6tables-save > /etc/iptables/rules.v6📝 常用命令
查看所有规则
sudo iptables -L -n -v删除规则
# 按行号删除sudo iptables -D INPUT 1
# 清空所有规则sudo iptables -F查看规则编号
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 -ysudo iptables-save > /etc/iptables/rules.v4
echo "✅ iptables 配置完成!"💡 最佳实践
- 先添加放行规则,再设置默认策略:避免被防火墙锁定
- 定期备份规则文件:
/etc/iptables/rules.v4 - 测试规则后再持久化:确保规则正确无误
- 使用非标准 SSH 端口:提高安全性
- 限制特定 IP 访问:对于管理端口,可以限制来源 IP