Linux服务器配白名单核心是默认全拒再精准放行指定IP和端口,必须兼顾规则顺序、连接状态保留及持久化保存,且需根据系统选择firewalld(CentOS7+/RHEL7+)、iptables(旧系统)或ufw(Ubuntu/Debian),配置后须验证连通性并检查云安全组。
Linux 服务器配白名单,核心就一条:默认全拒,再精准放行指定 IP 和端口。不能只加一条允许规则就完事,顺序、状态、持久化缺一不可。
不同系统默认工具不同,必须先搞清:
查当前状态:systemctl status firewalld 或 ufw status 或 iptables -L -n。没运行的得先启动。
适合需要精确控制「某个 IP + 某个端口」的生产环境,不建议直接把 IP 加进 trusted zone(那会放开所有服务)。
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="22" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="80" protocol="tcp" accept'
firewall-cmd --reload
firewall-cmd --list-rich-rules(看输出里有没有你刚加的 accept 规则)
关键在顺序:ACCEPT 规则必须在 DROP 之前,且要保留已有连接(否则 SSH 会断)。
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 203.0.113.5 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 203.0.113.5 -p tcp --dport 80 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
(CentOS 6):
service iptables save
语法简洁,自带默认策略管理。
ufw default deny incoming
ufw default allow outgoing
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw enable
ufw status verbose
配完不是结束,三件事马上做: