那里有少数特别有毒的主机。我们没有理由允许他们的任何 IP 访问我们的服务器。我们有没有办法使用他们的 ASN 或其他全局标识符来阻止他们?我更愿意在 HTACCESS 中执行此操作以实现应用程序/服务器的可移植性,但 APF 也可以。
例如,阻止以下主机。超过 50% 的 IP 已被列入黑名单,或者他们为 PacketFlip 等公司运营代理出口点:
- AS4134 - 中国网络
- AS9808 - 广东移动
- AS16276 - OVH SAS
- AS15003 - 诺比斯科技集团
- AS36352 - ColoCrossing
- AS29761 - QuadraNet
- AS15895 - Kyivstar PJSC
- AS50915 - SC Everhost SRL
- AS53889 - 麦克福
- AS57858 - 光纤网格 OU
答案1
您可以使用https://www.enjen.net/asn-blocklist/
举个例子,即 colocrossing: https://www.enjen.net/asn-blocklist/index.php?asn=AS36352&type=htaccess
如果您需要将其下载到服务器并且不想要 html,那么请将 &api=1 添加到链接末尾。
答案2
查看mod_asn:
mod_asn 是一个 Apache 模块,它使用 BGP 路由数据来查找包含给定(客户端)IP 地址的自治系统 (AS) 和网络前缀(子网)。
mod_asn 可用作独立模块,其查找结果可供脚本或其他 Apache 模块使用。例如,下载重定向器可以根据 mod_asn 提供的查找结果做出决定。
我对此没有任何直接经验,但这听起来很有希望。
有此模块直接经验的人应该可以随意编辑此答案以添加相关的具体细节。
此外,您可以与网络管理员沟通,让这些 ASN 在路由器上被阻止或忽略,这样您就不必将其作为应用程序配置问题。mod_asn 方法的一个(主要?)缺点是它不会阻止恶意 IP 地址试图攻击主机或网络上的其他服务,它只会丢弃对已配置的 apache 服务器的 HTTP/HTTPS 请求。
答案3
好吧,尽管Mun 的回答是查找 ASN 的正确方法,它依赖于静态检查/更新,然后粘贴到拒绝列表/防火墙中。我使用 APF 已经太久了。查看配置后,我意识到 CSF 防火墙有一个通过 ASN 和/或国家代码 (ISO) 进行阻止的选项。它查询 Maxmind GEOIP 数据库。以下是来自/etc/csf/csf.conf
部分:国家代码列表和设置
国家代码到 CIDR 允许/拒绝。在以下两个选项中,您可以允许或拒绝整个国家 CIDR 范围。CIDR 块由 Maxmind GeoLite 国家数据库生成http://www.maxmind.com/app/geolitecountry 并且完全依赖于该服务的可用性
指定两个字母的 ISO 国家代码。iptables 规则仅适用于传入连接
此外,还可以将 ASN 编号添加到下面以逗号分隔的列表中,该列表还列出了国家/地区代码。国家/地区代码的相同警告也适用于 ASN 的使用。有关自治系统编号 (ASN) 的更多信息: http://www.iana.org/assignments/as-numbers/as-numbers.xhtml
使用以下任何选项时,都应考虑使用 LF_IPSET
警告:这些列表并非 100% 准确,并且某些 ISP(例如 AOL)为其客户使用非地理 IP 地址指定
警告:某些 CIDR 列表非常庞大,每个列表都需要传入 iptables 链中的规则。这可能会导致显著的性能开销,并可能导致服务器在某些情况下无法访问。出于这个原因(以及其他原因),我们不建议使用这些选项
警告:由于 VPS 服务器上的资源限制,除非您选择非常小的 CC 区域,否则不应在此类系统上使用此功能
警告:CC_ALLOW 允许通过防火墙中的所有端口进行访问。因此,CC_ALLOW 的使用可能非常有限,而 CC_ALLOW_FILTER 是首选
每个选项都是以逗号分隔的 CC 列表,例如“US,GB,DE”
有问题的 conf 选项如下:
CC_DENY=""
CC_ALLOW=""
并且在 conf 文件中它下面还有更多具体的过滤器,以进一步整理阻塞。
答案4
因此,关于此声明:脑脊液我想澄清一些事情。您可以使用 asn-blocklist 实现自动化。您需要做的就是在 URL 末尾添加“&api=1”。例如:https://www.enjen.net/asn-blocklist/index.php?asn=AS36352&type=nginx&api=1
这将下载文件的原始版本,不包含任何 html。之后您需要做的就是使用 wget 上的简单 bash 脚本自动执行此操作,复制旧文件,然后重新加载程序(nginx)。
#!/bin/bash
mkdir /tmp/asn
cd /tmp/asn
wget --content-disposition "https://www.enjen.net/asn-blocklist/index.php?asn=AS36352&type=nginx&api=1"
wget --content-disposition "https://www.enjen.net/asn-blocklist/index.php?asn=AS133165&type=nginx&api=1"
## Repeat wget here for all the asns you want.
cp /tmp/asn/* /etc/nginx/conf.d/
service nginx reload
rm -rf /tmp/asn
echo done...
实际上,您可以快速使您的黑名单保持最新,而无需手动导入黑名单。
这只是了解您的使用情况/平台,以便根据您的个人需求自动执行脚本。