在 CentOS(6/7/8) 中,iptables 是常用的防火墙工具。下面按常见场景 + 命令示例给你一个实用指南。
默认使用 iptables
service iptables status
默认使用 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 规则由 表(table)+ 链(chain)+ 规则 组成。
常用表:
filter(默认,负责过滤)nat(地址转换)常用链:
INPUT:进入本机的数据包OUTPUT:本机发出的数据包FORWARD:转发的数据包iptables -L -n -v
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
⚠️ 建议限制来源 IP(生产环境)
iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
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
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
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
如果你愿意,可以告诉我:
我可以帮你生成完全适合你环境的 iptables 规则。