服务器防火墙白名单配置核心是只放行可信来源、其余一律拒绝,须按IP+端口+协议三要素精准授权,并确保规则顺序正确、持久化生效且可验证;Windows Server推荐PowerShell命令(如New-NetFirewallRule)配置IP白名单,Linux firewalld必须使用rich-rule而非裸service开放,且需显式放行回环地址、设置明确reject规则并reload前验证顺序。
服务器防火墙白名单配置,核心是**只放行可信来源,其余一律拒绝**。不能简单“开个端口”,而要按 IP + 端口 + 协议三要素精准授权,且规则顺序、持久化和验证缺一不可。推荐使用命令行方式,便于审计与复用:
PowerShell(管理员运行):
New-NetFirewallRule -DisplayName "Allow-RDP-from-Admin-IP" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.45 -Action Allow -Profile Domain
-RemoteAddress 203.0.113.45,203.0.113.46
-RemoteAddress 10.5.20.0/24
Set-NetFirewallSetting -LogAllowed True
直接 --add-service=ssh 是全局开放,等于没设白名单。正确做法是:
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="127.0.0.1" service name="ssh" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port port="22" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" reject'
sudo firewall-cmd --permanent --list-all | grep -A 10 "rich rules",确保 accept 在 reject 之前
sudo firewall-cmd --reload
无论哪种系统,以下三点必须落实:
0.0.0.0/0 或宽泛网段--permanent,iptables 要保存(iptables-save > /etc/sysconfig/iptables)telnet server_ip 22 或 nc -zv server_ip 80;再从非白名单 IP 尝试,应明确返回 Connection refused(不是超时)