温馨提示×

centos防火墙如何设白名单

小樊
42
2026-10-02 21:59:13
栏目: 智能运维

在 CentOS 上设置防火墙“白名单”(即默认拒绝,只允许指定 IP/端口),通常使用的是 firewalld(CentOS 7/8/Stream 默认)。下面按常见场景说明。


一、确认防火墙状态

systemctl status firewalld

若未启动:

systemctl start firewalld
systemctl enable firewalld

二、基础白名单思路(推荐)

原则:

  • 默认 zone 设为 drop 或 block
  • 再单独允许可信 IP

1️⃣ 设置默认拒绝(白名单模式)

firewall-cmd --set-default-zone=drop

drop:直接丢弃,不响应
block:拒绝并通知(ICMP)

2️⃣ 允许指定 IP 白名单

firewall-cmd --permanent --add-source=192.168.1.100
firewall-cmd --permanent --add-source=10.0.0.0/24

3️⃣ 允许白名单 IP 的端口(如 SSH)

firewall-cmd --permanent --zone=drop --add-port=22/tcp

或只允许某 IP 访问 SSH:

firewall-cmd --permanent --zone=drop --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'

4️⃣ 重载防火墙

firewall-cmd --reload

三、使用 rich-rule 精确控制(更推荐)

只允许某 IP 访问某端口

firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="203.0.113.10"
port protocol="tcp" port="3306"
accept'

拒绝其他所有 IP

firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
port protocol="tcp" port="3306"
reject'

四、白名单示例(SSH 安全)

firewall-cmd --permanent --set-default-zone=drop
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
firewall-cmd --reload

五、CentOS 6(iptables,老系统)

iptables -P INPUT DROP
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
service iptables save

六、查看当前规则

firewall-cmd --list-all
firewall-cmd --list-rich-rules

如果你能说明:

  • CentOS 版本
  • 要白名单的是 IP / 端口 / 服务
  • 是 服务器对外 还是 内网访问

我可以给你一套直接可执行的命令。

0 踩