使用 Iptables/Firewalld 禁止 IP

使用 Iptables/Firewalld 禁止 IP

今年我曾两次遭受中国防火墙的 DDos 攻击。

现在我从下载区域文件http://www.ipdeny.com/ipblocks/.我想做这些事情:

  1. 如果任何地方的人想要连接到我服务器的特定端口,都可以进来。
  2. 如果来自中国的人想要连接到我的服务器的任何其他端口,则所有数据包都应该被丢弃。来自其他国家的任何其他人都可以正确连接到我的服务器。

我能怎么做?

我使用 Cloudflare CDN 免费计划,但我只想在我的服务器上执行上述操作。

答案1

如果您正在使用iptables它将返回第一个匹配规则。例如,如果您想允许 http 并拒绝中国的其他端口,请确保 http 允许规则排在第一位:

iptables -A INPUT -d myhost --dport 80 -j ACCEPT
iptables -A INPUT -m set --match-set china src -j DROP

使用上述语句,您将需要ipset使用以下命令创建一个 for china :

ipset create china hash:net
while read line; do ipset add china $line; done < china.ipblock-file

答案2

如果您想阻止使用 Apache 模块,那么您也可以尝试以下操作:

MaxMindDBEnable On
MaxMindDBFile DB /path/to/GeoIP/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(CN|RU|DE|FR) BlockCountry
Deny from env=BlockCountry

相关内容