在 CentOS 上设置防火墙“白名单”(即默认拒绝,只允许指定 IP/端口),通常使用的是 firewalld(CentOS 7/8/Stream 默认)。下面按常见场景说明。
systemctl status firewalld
若未启动:
systemctl start firewalld
systemctl enable firewalld
原则:
drop 或 blockfirewall-cmd --set-default-zone=drop
drop:直接丢弃,不响应
block:拒绝并通知(ICMP)
firewall-cmd --permanent --add-source=192.168.1.100
firewall-cmd --permanent --add-source=10.0.0.0/24
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'
firewall-cmd --reload
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="203.0.113.10"
port protocol="tcp" port="3306"
accept'
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
port protocol="tcp" port="3306"
reject'
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
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
如果你能说明:
我可以给你一套直接可执行的命令。