AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 15931
In Process
Kornel
Kornel
Asked: 2009-05-31 15:36:52 +0800 CST2009-05-31 15:36:52 +0800 CST 2009-05-31 15:36:52 +0800 CST

使用大型 IP 黑名单拒绝访问 Web 服务器的最佳方法是什么?

  • 772

是否有有效且简单的方法来使用IP 黑名单(例如这个,但可能大 2-3 倍,不能简化为 CIDR)来拒绝使用标准/用户空间访问Web 服务器(lighttpd 或 Apache)Linux上的软件(无内核重新编译)?

DenyApache 配置中的AFAIK规则并iptables具有线性查找时间。有一些内核模块可以有效地处理大量 IP 列表,但安装这些模块需要修补内核。

linux ip web-server blacklist
  • 5 5 个回答
  • 4784 Views

5 个回答

  • Voted
  1. David Anderson
    2009-05-31T15:59:34+08:002009-05-31T15:59:34+08:00

    您可以尝试使用moblock(谷歌它 - 还不能添加链接,新用户)。禁用所有下载的阻止列表,并仅使用您生成的本地阻止列表。您可能需要在内核中添加 NFQUEUE(netlink 队列)支持,但默认情况下它可能已经存在。

    一般设置是:对于要过滤的端口上的所有 SYN 数据包,使用 netfilter 的 NFQUEUE 操作将它们推送到位于用户空间的 moblock。Moblock 进行高效匹配并将 ACCEPT 或 DROP 响应发送回 netlink。

    moblock 配置文件的格式非常简单:在每一行中,给出名称和 IP 范围,格式为 123.123.123.42-123.123.124.56。当 moblock 加载范围时,它会构建一个有效的数据结构来匹配这些范围。当由于匹配而丢弃数据包时,将记录范围名称和实际源 IP(如果禁用匹配记录,则不记录)。

    我在其默认配置(下载的阻止列表)中使用了 moblock,大约有 230000 个 IP范围,并且没有观察到明显的性能损失(尽管仅过滤 SYN 数据包对于保持内核/用户空间流量很重要)。

    一个警告:如果 moblock 没有运行,我相信 NFQUEUE 的默认操作是 DROP,导致您的应用程序拒绝服务。也就是说,我已经让 moblock 连续运行超过 6 个月没有任何问题。不过,您可能希望设置一个监控探针,如果已知良好的 IP 无法再连接到您服务器上的 :80,则会向您发出警报。您绝对不想使用 moblock 过滤 ssh,除非您已明确将 netfilter 中的某些受信任 IP 列入白名单以进行恢复。

    • 9
  2. Kurt
    2009-05-31T20:44:23+08:002009-05-31T20:44:23+08:00

    Apache config 和 iptables 中的 AFAIK Deny 规则具有线性查找时间。

    有点。您可以使用 IPTables 中的链将其分解,即一种简单的方法是为每个 A 类地址块(例如 1.0.0.0/8、2.0.0.0/8 等)和规则建立一个链链中的块,显着减少查找时间(即最坏的情况〜200规则评估得到A类规则,然后在该块中的许多规则。你也可以使用“iptables -L -v -n”来查看哪些规则集被评估得最重并将它们移到顶部。还有其他更好的方法可以做到这一点,iptables 文档对此进行了介绍。

    • 4
  3. Till
    2009-05-31T16:02:12+08:002009-05-31T16:02:12+08:00

    是的,在您的系统上,应该有一个/etc/hosts.allow. 看一下,它有一些非常简单的示例,即使在每个服务的基础上也可以锁定 IP。

    简而言之,在/etc/hosts.allow:

    ALL : ALL : allow
    
    httpd : /etc/hosts.httpd.deny : deny
    
    sshd : /etc/hosts.sshd.deny : deny
    
    • 2
  4. cstamas
    2009-06-01T07:10:56+08:002009-06-01T07:10:56+08:00

    我认为如果不修补内核就无法做到这一点。

    ipset似乎是一个很好的解决方案。

    引用其网页:

    如果你想

    • 存储多个 IP 地址或端口号,并一举与 iptables 的集合匹配;
    • 针对 IP 地址或端口动态更新 iptables 规则而不会降低性能;
    • 使用单个 iptables 规则表达复杂的基于 IP 地址和端口的规则集,并受益于 IP 集的速度

    那么 ipset 可能是适合您的工具。

    • 1
  5. Rich
    2009-06-01T17:35:20+08:002009-06-01T17:35:20+08:00

    您也可以在 .htaccess 中执行此操作

    这是一个由用户代理阻止的示例,但想法是相同的:http: //jetfar.com/trap-content-scraper-spam-harvester-bots-using-honeypot-wordpress-htaccess/

    Apache config 和 iptables 中的 AFAIK Deny 规则具有线性查找时间。

    我会尝试它,然后在您排除它之前进行一些测试 - 影响可能不明显,并且很容易维护。

    同样,您可以尝试将列表添加到 /etc/hosts.deny

    如果不先测试两者,我不会假设哪个更快。

    干杯/里奇

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve