如何禁止潜在的黑客 IP 地址访问端口 80?

如何禁止潜在的黑客 IP 地址访问端口 80?

我在 Web 服务器上托管了一堆 PHP 网站。虽然我已采取所有预防措施来保护所有端口,但针对端口 80 的特定攻击仍在继续。我想禁止任何在一小时内对任何网页感兴趣超过 200 个或一分钟超过 15 个的 IP 地址。我假设人类用户不可能在一分钟内浏览 15 个网页,除非他有确实值得怀疑的原因。

理想情况下,我希望将 IP 地址登录到被禁止的数据库中,并且为属于我的客户的 IP 地址列出白名单 IP 地址。

有没有现成的工具可以完成所有这些工作。我看到了 fail2ban,但它没有达到目的...

答案1

您需要做的是:1)查看 apache 日志的访问情况 2)阻止防火墙上符合条件的 IP 地址(通过脚本)。

失败2ban将要做你想做的事,只需比阅读 Google 搜索标语稍微多一点的工作即可。

答案2

如何使用现有的服务,例如蜜罐计划

答案3

这在运行 Linux 和 PHP 版本的 Raspberry Pi 上有效:

要从 php 运行 iptables,请将以下内容添加到 /etc/sudoers www-data ALL=(ALL) NOPASSWD: /sbin/iptables

有些人不喜欢将 www-data 访问权限授予 iptables。他们说这会带来安全风险。但我认为这没问题,因为他们刚刚被禁止了。

<?php
// Get the ip address of the client.
$remote_addr = $_SERVER['REMOTE_ADDR'];
// Ban them.
if (is_ip($remote_addr)) {
    ban_ip($remote_addr);
    // Save the banned IP address.
    $logfile = '/run/shm/banned.txt';
    file_put_contents($logfile,$remote_addr."\n",FILE_APPEND);
}
// Returns true if $ip is a valid ip address.
function is_ip($ip)
{
    $count = strlen($ip);
    $valid = '0123456789.:';
    for($loop=0;$loop<$count;$loop++) {
        if (strpos($valid,substr($ip,$loop,1))===false) {
            return false;
        }
    }
    return true;
}
// Bans an ip address.
function ban_ip($ip)
{
    $cmd = 'sudo /sbin/iptables -A INPUT -s ' . $ip . ' -j DROP';
    exec($cmd);
    return;
}
?>

相关内容