我如何阻止所有来自未解析 IP 地址的传入流量?我使用的是安装了 WHM/cPanel 的 CentOS。我收到大量垃圾流量,其中 95% 来自未解析 IP 地址,只有 5% 来自已解析 IP 地址。有没有简单的方法可以阻止所有未解析 IP 地址的入站流量?
我很害怕,我甚至遇到了 DDOS 攻击,AWStats 显示我每分钟受到数千次点击,但这些攻击都没有用。
非常感谢您的帮助。
谢谢
答案1
如果您说的是 AwStats 中显示的“未解析 IP”,则不是。防火墙无法做到这一点。
“未解析”是指 IP 地址未设置反向 DNS。这正在成为“非服务器”的常态!这意味着如果您可以基于此进行阻止,您将阻止大量 DSL 线路和其他家庭用户连接。
从技术上讲,根据 IP 是否具有反向 DNS 来阻止 IP,需要对每个新 IP 进行 DNS 查找。DNS 查找可能很慢,比如慢几秒钟,这只会让一切速度变得非常慢,必须在防火墙内联执行此操作。
对不起。
答案2
我同意@thelogix的观点,这可能是一个非常糟糕的想法,因为它会阻止合法用户,并且 - 根据其实施方式 - 可能会降低您的服务速度。
但如果您仍想这样做,这里有两种方法可以做到。
首先,你要设置本地 DNS 缓存以加快速度。为负缓存设置较高的 TTL(如果是 Bind,请查找“max-ncache-ttl”)。并确保您的系统确实在使用它。
现在你有两个可能的策略:当有新的客户请求时,你想
首先进行反向 DNS 查找并等待其结果,然后再决定是否接受连接?非常慢
允许 TCP 握手继续,并且仅在事后了解到没有有效的 PTR 记录时才阻止该 IP 地址?
对于策略 1(允许前检查):许多 Web 服务器可以基于反向 DNS 进行客户端身份验证。您可能需要稍微使用一下正则表达式或编译所有 TLD 的列表,以便设置匹配任何域名但不匹配 IP 地址的规则。
- 对于 Apache,请查找需要主机来自“mod_authz_host”模块,例如
要求主机 .com .net .org .edu .us .uk .jp #... 所有 TLD
- 对于 nginx,请查找rdns_allow来自第三方模块“HttpRdnsModule”。我自己没有用过,但类似这样的方法应该可以工作:
rdns_allow。*[a-zA-Z]; 全部否认;
如果您的Web服务不支持此功能,您可以将nginx或apache作为反向http代理放在前面。
对于策略 2(惰性阻止):让 web 服务记录客户端的反向 DNS 名称(Apache:主机名查找; nginx: 不确定,可能在上面rDNS模块然后安装 失败2ban。大多数 Linux 发行版都附带了合理预配置的 fail2ban 包。配置它来监视网络日志、匹配(未解析的)IP 地址并阻止该 IP 地址。
请注意,fail2ban 默认在 iptables 的“filter”表中进行阻止。在大多数情况下,这不会阻止已建立的 TCP 连接。如果您希望 fail2ban 切断已建立的连接,请在“mangle”表中将其配置为“DROP”(例如,mangle 链“PREROUTING”或“INPUT”)