centos服务器只允许固定公网IP访问
去年冬天,服务访问我负责的允许一台CentOS 7服务器被扫了。日志里全是固定公网SSH爆破记录,每分钟上百次尝试,服务访问来自巴西、允许俄罗斯、固定公网越南。服务访问那台机器只跑一个内部API,允许本不该暴露在公网。固定公网运维同事图省事,服务访问安全组开了0.0.0.0/0。允许当天下午我就把防火墙规则改了——只留公司出口IP和一个备用跳板机地址。固定公网世界瞬间安静。服务访问
这件事让我重新审视一个老问题:服务器到底该不该对全网开放?允许答案很明确,不该。固定公网尤其是CentOS这种默认配置偏宽松的系统,firewalld和iptables如果不管,等于把门敞开。下面直接说怎么只允许固定公网IP访问,以CentOS 7/8为例,操作路径不复杂,但细节容易踩坑。
先确认你的公网IP。别用百度搜“我的IP”那种,那个可能是运营商NAT后的地址。在服务器上执行 curl ifconfig.me,或者从你本地网络访问 ip.sb,拿到的是出口IP。假设公司固定IP是 203.0.113.45,家里备用是 198.51.100.22。这两个地址要写进规则。
CentOS 7之后默认用firewalld。很多人一上来就 systemctl stop firewalld 然后装iptables-services,没必要。firewalld的rich rule足够灵活。直接操作:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.45" accept' firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.22" accept' firewall-cmd --permanent --zone=public --remove-service=ssh firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client firewall-cmd --reload 注意顺序。先加允许规则,再删默认服务。如果先删ssh再reload,而你的当前连接不在允许列表里,直接断线。我吃过这个亏,当时在机房远程操作,手一抖顺序反了,只能打电话让现场同事重启网络。所以务必先加白名单,再移除通用规则。
有人问,那web服务呢?如果只允许固定IP访问80/443,同样用rich rule加端口。比如只让 203.0.113.45 访问443:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port port="443" protocol="tcp" accept' 别用 --add-source 把IP加到zone里,那样会连带放行该zone所有服务。rich rule更精确。另外,firewalld的runtime和permanent要分清,改完必须 --reload 才生效。临时测试可以不加 --permanent,但重启后丢失。
如果服务器还在用iptables,规则更直白。先清空默认链,再按顺序插入:
iptables -F iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 203.0.113.45 -j ACCEPT iptables -A INPUT -s 198.51.100.22 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -j DROP service iptables save 最后一条DROP很关键。没有它,前面的ACCEPT只是允许,其他流量仍然按默认策略走。默认策略如果是ACCEPT,等于白干。检查 iptables -L -n 确认顺序,DROP必须在最后。
还有个坑:云服务器。阿里云、腾讯云的安全组是独立于系统防火墙的。你在CentOS里配了firewalld,安全组没改,照样被扫。两边都要限制。我习惯先在安全组里把源IP改成固定地址,再进系统配firewalld。双保险。
最后提醒一句,固定IP访问不是万能的。如果那个IP被入侵或者内鬼泄露,照样完蛋。所以SSH密钥登录、fail2ban、日志监控该上还得上。但至少,你的服务器不会每分钟被爆破几百次了。那种日志干净的感觉,比什么安全评分都实在。
(责任编辑:时尚)
