Debian11下的nftables仅允许Cloudflare访问端口
本文的以下的内容仅适用于使用了CloudFlare的CDN,可能存在一些问题,就暂时写自己看看了。
简述
通过shell脚本来对Cloudflare提供的链接:https://www.cloudflare.com/ips-v4 以及 https://www.cloudflare.com/ips-v6 进行处理,以能够定时的同步到所需要的机器里——nftables防火墙上,效果就是限制端口仅允许CF的ip通过。
上一篇文章:Debian 11 上的 nftables防火墙 简单配置(配置文件)
nftables规则模板
set cfip4 {
type ipv4_addr
flags interval
elements = { } #cf_ipv4
}
set cfip6 {
type ipv6_addr
flags interval
elements = { } #cf_ipv6
}
对于需要使用的地方,可以简单的引用命名集,如:对80、433等端口进行限定,仅允许cloudflare的ip进行访问。
chain input {
type filter hook input priority 0;
ip saddr @cfip4 tcp dport { 80,443 } accept
ip6 saddr @cfip6 tcp dport { 80,443 } accept
}
相比起iptables,那可太方便了。
完整的参考如下
table inet filter {
set cfip4 {
type ipv4_addr
flags interval
elements = { } #cf_ipv4
}
set cfip6 {
type ipv6_addr
flags interval
elements = { } #cf_ipv6
}
chain input {
type filter hook input priority 0;
ip saddr @cfip4 tcp dport { 80,443 } accept
ip6 saddr @cfip6 tcp dport { 80,443 } accept
tcp dport 22 accept
ct state related,established accept
counter reject
}
}
自动更新脚本
因为不熟悉shell,只能随便写写,相信问题应该挺多的,有需要的话简单看看就好。
创建相关文件
mkdir -p /opt/auto_cf_ips && touch /opt/auto_cf_ips/auto_cf_ips_error.log && cp /etc/nftables.conf /etc/nftables.conf.bak
创建脚本
设置定时任务
定期获取cf的ipv4、ipv6网关,并更新到nftables防火墙中。Debian11使用命令 crontab -e
来设置定时任务。
#每天凌晨3点20分执行
20 3 1 * * /opt/auto_cf_ips/auto_set_cf_ip.sh
碎碎念
通过curl来定时更新nftables防火墙规则,对于使用了Cloudflare CDN的站点来说很大程度上能满足需求。
阅读剩余
版权声明:
作者:觉
链接:https://cimen.club/645.html
文章版权归作者所有,未经允许请勿转载。
THE END