如何在服务器上配置IPTables防火墙?
美国、香港服务器
如何在服务器上配置IPTables防火墙?
06-27 来源:
一、前置说明
CentOS Stream 9、Ubuntu 24 默认不直接用原生 iptables:
CentOS9 默认 firewalld,底层封装 iptables/nftables;想用纯 iptables 需要先关闭 firewalld
Ubuntu24 默认 ufw,同样封装 iptables
1、CentOS Stream 9 切换到 iptables(关闭 firewalld)
bash
运行
# 停止并禁用 firewalld
systemctl stop firewalld
systemctl disable firewalld
# 安装 iptables 服务
dnf install iptables-services -y
systemctl enable --now iptables
2、Ubuntu 24.04 切换 iptables
bash
运行
sudo ufw disable
sudo apt install iptables -y
二、iptables 基础四表五链(常用 filter 表)
默认操作 filter 表,三张内置链:
INPUT:入站流量(别人访问本机)
OUTPUT:本机向外访问
FORWARD:本机转发流量(网关 / 代理用)
默认策略建议:INPUT 默认拒绝,OUTPUT 默认允许
三、初始化安全规则(必执行,防止远程被锁)
1. 清空旧规则
bash
运行
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
2. 设置默认策略
bash
运行
# 所有入站默认拒绝
iptables -P INPUT DROP
# 本机出站全部允许
iptables -P OUTPUT ACCEPT
# 转发默认拒绝
iptables -P FORWARD DROP
3. 放行本地回环 lo(必须)
bash
运行
iptables -A INPUT -i lo -j ACCEPT
4. 放行已建立、相关连接(保证正常上网、响应请求)
bash
运行
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
四、常用放行规则示例
1. 放行单个 TCP 端口(SSH 2222)
bash
运行
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
2. 放行 80、443 网站端口
bash
运行
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
3. 放行 UDP 端口
bash
运行
iptables -A INPUT -p udp --dport 3390 -j ACCEPT
4. IP 白名单:仅指定 IP 访问 SSH
bash
运行
iptables -A INPUT -s 112.123.45.67/32 -p tcp --dport 2222 -j ACCEPT
5. 放行内网网段
bash
运行
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
五、查看、删除规则
bash
运行
# 查看规则带行号
iptables -nL --line-numbers
# 根据行号删除规则
iptables -D INPUT 3
六、保存 iptables 规则(开机不丢失)
CentOS Stream 9
bash
运行
service iptables save
# 规则保存路径:/etc/sysconfig/iptables
Ubuntu
bash
运行
apt install iptables-persistent netfilter-persistent -y
netfilter-persistent save
netfilter-persistent reload
# 保存路径:/etc/iptables/rules.v4
手动保存 / 加载:
bash
运行
# 导出规则
iptables-save > /etc/iptables.rules
# 导入恢复
iptables-restore < /etc/iptables.rules
七、简单防护规则(防扫描、防 SYN 洪水)
bash
运行
# 防止单个IP频繁新建连接
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
# 丢弃无效数据包
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
八、NAT 端口转发示例(需要开启内核转发)
bash
运行
# 临时开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 本机8080转发到内网192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
iptables -t nat -A POSTROUTING -d 192.168.1.100 -j MASQUERADE
九、安全最佳实践总结
先放行 SSH、再设置默认 DROP,否则远程直接失联;
SSH、数据库、面板尽量使用 IP 白名单,不要全网放行;
规则配置完必须保存,否则重启失效;
云服务器需要同步配置云安全组放行对应端口。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快