温馨提示×

centos iptables如何设置规则

小樊
33
2026-08-18 05:40:39
栏目: 智能运维

CentOS(6/7/8) 中,iptables 是常用的防火墙工具。下面按常见场景 + 命令示例给你一个实用指南。


一、确认系统是否使用 iptables

CentOS 6

默认使用 iptables

service iptables status

CentOS 7/8

默认使用 firewalld,但可切换回 iptables

systemctl status firewalld

如果 firewalld 在运行,可先关闭:

systemctl stop firewalld
systemctl disable firewalld

安装 iptables 服务(CentOS 7/8):

yum install -y iptables-services
systemctl enable iptables
systemctl start iptables

二、iptables 基本结构

iptables 规则由 表(table)+ 链(chain)+ 规则 组成。

常用表:

  • filter(默认,负责过滤)
  • nat(地址转换)

常用链:

  • INPUT:进入本机的数据包
  • OUTPUT:本机发出的数据包
  • FORWARD:转发的数据包

三、常用规则设置示例

1️⃣ 查看当前规则

iptables -L -n -v

2️⃣ 允许已建立连接的数据包(非常重要)

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

3️⃣ 允许本地回环(lo)

iptables -A INPUT -i lo -j ACCEPT

4️⃣ 开放 SSH(22端口)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

⚠️ 建议限制来源 IP(生产环境)

iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT

5️⃣ 开放 HTTP / HTTPS

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

6️⃣ 允许 ping(ICMP)

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

7️⃣ 设置默认策略(建议最后设置)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

⚠️ 先确认 SSH 已放行,否则会断连


四、删除 / 插入规则

删除某条规则(按编号)

iptables -L INPUT --line-numbers
iptables -D INPUT 3

插入规则(放到最前面)

iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

五、保存规则(非常重要)

CentOS 7/8:

service iptables save
# 或
/usr/sbin/iptables-save > /etc/sysconfig/iptables

重启后自动生效:

systemctl restart iptables

六、NAT 转发示例(可选)

开启 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

SNAT(内网上网)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

七、常见安全建议 ✅

  • ✅ 先放行 SSH
  • ✅ 默认策略设为 DROP
  • ✅ 限制管理端口来源 IP
  • ✅ 定期备份规则

八、示例:最小安全规则模板

iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
service iptables save

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 是服务器还是桌面
  • ✅ 是否需要 NAT / 转发 / Docker

我可以帮你生成完全适合你环境的 iptables 规则

0