最近分析后台日志,发现有两条记录没有经过CDN转发,直接将请求发到了源站:
在百度搜了一下对应的IP,发现该IP被标记为异常风控IP:
说明源站IP可能已经泄露了,对方已经绕过了CDN的白名单防护,所以我们需要加固一下源站的安全防护。加固方法为限制源站服务器仅允许CDN的回源IP段访问。
1.获取CDN回源IP列表
我们使用的CDN是阿里云的边缘安全加速ESA,开启ESA提供的源站防护功能就可以获取到回源IP列表,其他CDN可以根据官方提示获取回源IP:
开启后会在回源列表中看到所有的回源IP,点击复制按钮将回源IP列表复制下来备用:
注意:回源IP列表会定时更新,列表更新后需要手动确认后才会启用新的回源IP。
如果列表更新后未手动确认,阿里云ESA不会启用新的回源IP列表。
2.通过iptables配置源站防火墙
iptables是Linux上常用的防火墙软件,可以配置Linux内核中netfilter框架的包过滤规则。我们这次使用iptables为源站配置防火墙规则。
防火墙配置规则如下:
具体配置命令如下:
#允许本地回环地址访问iptables -A INPUT -i lo -j ACCEPT#允许已建联的相关IP访问iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#允许白名单IP访问iptables -A INPUT -s 10.0.8.5 -j ACCEPT#允许CDN网段访问iptables -A INPUT -s 117.49.26.96/27 -j ACCEPTiptables -A INPUT -s 221.215.47.0/26 -j ACCEPT#拒绝其他所有IP访问iptables -A INPUT -j DROP
注1:必须要配置允许本地访问和已建联的IP访问,不然可能会导致本地127.0.0.1/8网络不通,同时服务器将不能访问外部网络,包括ping、wget、curl等命令返回的数据包将无法进入服务器。
注2:iptables是按照规则链内从上到下的顺序匹配执行,所以需要将拒绝的规则放在整条链的最下方。
3.设置iptables防火墙规则开机自动加载
因为iptables设置的规则默认是临时生效,一旦重启系统所有规则都会清空,所以我们需要保存防火墙规则让其开机自动加载。我们使用的Linux版本为Rocky Linux,可以安装iptables-services工具实现:
dnf install iptables-services
安装完成后通过下面命令保存已配置好的防火墙规则:
保存成功后规则文件默认保存在/etc/sysconfig/iptables中:
可以观察文件中规则和iptables -vnL查询的规则是否一致:
设置服务开机自动启用:
systemctl enable iptables
这样就可以让防火墙开机自动加载防火墙规则了。
扩展说明:
1.其他iptables命令
查看规则:iptables -vnL增加规则到链顶部:iptables -I INPUT -s x.x.x.0/24 -j DROP增加规则到链底部:iptables -A INPUT -s x.x.x.0/24 -j DROP删除规则:iptables -D INPUT -s ***.***.***.*** -j DROP保存规则到文件:iptables-save > /etc/iptables加载文件规则:iptables-restore < /etc/iptables