![在 Apache 2.4 上限制和阻止国家/地区的最佳方法(通过 IP 地址或 Maxmind GeoLite2-Country.mmdb)](https://linux22.com/image/790030/%E5%9C%A8%20Apache%202.4%20%E4%B8%8A%E9%99%90%E5%88%B6%E5%92%8C%E9%98%BB%E6%AD%A2%E5%9B%BD%E5%AE%B6%2F%E5%9C%B0%E5%8C%BA%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%EF%BC%88%E9%80%9A%E8%BF%87%20IP%20%E5%9C%B0%E5%9D%80%E6%88%96%20Maxmind%20GeoLite2-Country.mmdb%EF%BC%89.png)
我正在寻找一种方法来阻止某些国家访问我们的Apache 2.4在 FreeBSD 上运行的 Web 服务器。
我们时常会遭遇暴力攻击,而且这些攻击通常来自少数几个国家。
选择以下方式进行限制有什么好处和坏处吗?知识产权或使用 Apache 模块mod_maxminddb? 有经验的人是否应该选择其中一个?
谢谢你,
答案1
正如链接的问答中提到的,地理封锁大致有三种方法
类似于 mod_maxminddb Apache 模块的东西,可以在 Apache httpd 中本机授予/拒绝访问:https://github.com/maxmind/mod_maxminddb
在基于主机的防火墙中阻止访问。在 FreeBSD 上,这需要类似https://github.com/cyclaero/ipdb
禁止直接访问您的 Web 服务器,利用众多 CDN 解决方案之一,并使用该 CDN 阻止/允许来自某些地理区域的访问
当然,所有这三种解决方案都存在同样的问题:IP 地址不是与物理位置绑定的街道地址,并且作为访问控制,您无法获得 100% 的可靠性。
解决方案#1并且可能#3的优势在于您可以轻松地将访问控制应用于您网站上的特定资源,即允许整个世界访问托管在您服务器上的特定网站(部分),同时将地理封锁应用于同一服务器上的其他部分/网站。
例如:您可以允许全世界访问有关您公司的一般信息,但限制访问您的在线订购单。例如,巴黎的一家餐馆可以决定不允许来自世界各地的外卖送货订单,但可能仍希望允许旅行者在开始巴黎之旅之前查看他们的就餐菜单并可能在家中进行预订。
解决方案#2以及特别是#3可能会减少网络服务器上的负载,因为您会在流量到达您的网站之前阻止它。
防火墙解决方案完全阻止,甚至不允许您向网站访问者显示警告消息/横幅。
少用铁锤,多用手术刀:不要封锁国家,而是只封锁实际行为不当的 IP 地址失败2ban也适用于 FreeBSD