我经营一个仅与特定地区的客户打交道的网站。
最近我的负载均衡器受到来自菲律宾/俄罗斯/中国的请求的严重影响。邮件机器人、暴力攻击等。
有没有一种简单的方法可以阻止这三个国家访问我的网站?(国家代码阻止?)我看到很多关于使用 IP 表的信息,但是我在 CentOS7 负载均衡器上使用 Firewalld。
有什么建议吗?
谢谢,克里斯
答案1
我不会太担心是哪些国家,而是关注引起令人反感的行为的实际 IP 地址和 IP 块。
尝试封锁国家/地区会造成问题,而且容易出错。您需要尝试追踪每个国家/地区的具体 ISP 及其 IP 地址封锁。
我会使用日志和其他来源列出行为不当的 IP 地址,将它们归入子网,然后阻止这些子网。定期重新检查。
这项工作绝对更适合防火墙和负载均衡器,但 iptables 或firewalld 也可以做到这一点,但您的主机必须查看和处理流量,而不是将其阻止在更上游。
更多地像 fail2ban 那样思考 (http://www.fail2ban.org/wiki/index.php/Main_Page)而不是“封锁中国”
答案2
我以前曾为此使用过防火墙。在 CentOS 或专用 Web 服务器上尝试执行此操作很困难,因为这往往是网络问题。
我会研究防火墙解决方案并以此方式阻止 IP 范围。我知道这并不能直接回答您的问题,只是转述我过去所做的事情。
答案3
你会因为一小撮坏人而惩罚整个国家。更糟糕的是,你甚至会忽略其他国家的坏人。
正如 tep 所说,Fail2Ban 是理想的选择。另外,请确保您已安装 WAF,如 mod_security 或 naxsi。然后添加 repsheet 以获得更好的效果,这样您不仅拥有基于攻击签名的保护,还拥有基于行为/声誉的监控。
如果您确实想阻止国家/地区但在防火墙路由方面遇到困难,请查看您的网络服务器是否可以做到这一点,例如 Nginx 可以做到。
将不需要的国家/地区路由到较便宜的应用程序: https://www.digitalocean.com/community/tutorials/how-to-use-nginx-as-a-global-traffic-director-on-debian-or-ubuntu
封锁不受欢迎的国家: http://nginxlibrary.com/ip-based-country-blocking/
最好不要屏蔽来自这些国家的合法用户!您的目标市场可能是美国/欧洲/无论你是在商务还是度假。
答案4
我遇到了这个问题,正如 tep 所说,管理 IP 块可能很棘手。不过,我找到了一个使用 BGP(主要互联网路由协议)汇总和管理每个国家/地区 IP 块列表的地方,我发现它们非常准确。
然后,为了让我的生活更轻松,我编写了一个脚本,从上述网站提取用户定义的国家/地区列表,汇总和格式化 IP,然后将它们注入您最喜欢的防火墙包中。目前它支持 pf、ipfw、iptables、ipset 以及现在的 iptables 替代品 nftables。您可以从这里的 github 上获取它:
https://github.com/KaiLoi/update-fw-BC
我刚刚在 cron 中运行它,在为我的列表选择了十大黑客国家之后,针对我的服务器的黑客攻击几乎消失了。我服务器上的 fail2ban 已经厌倦了它的树。;)