Назад | Перейти на главную страницу

Как заблокировать IP-адреса потенциальных хакеров с порта 80?

Я размещаю кучу веб-сайтов PHP на веб-сервере. Я принял все меры предосторожности для защиты всех портов, но атаки на порт 80 продолжаются. Я хочу заблокировать любой IP-адрес, который проявлял активный интерес к любой веб-странице (ам) более чем, скажем, 200 за час или 15 за минуту. Я предполагаю, что пользователь-человек не может просматривать 15 страниц за минуту, если у него нет причин, о которых действительно стоит подозревать.

В идеале я хотел бы, чтобы IP-адреса регистрировались в запрещенных базах данных, а также имели IP-адреса из белого списка для тех IP-адресов, принадлежащих моему клиенту.

Есть ли готовый инструмент, который все это делает. Я видел fail2ban, и он не служит цели ...

Что вам нужно сделать, это следующее: 1) смотреть журналы apache для доступа 2) блокировать IP-адреса, которые вы квалифицируете на брандмауэре (через скрипт).

fail2ban воля делайте то, что хотите, приложив немного больше усилий, чем чтение лозунга поиска Google.

Как насчет использования существующих сервисов, таких как Проектная приманка?

Это работает на моем Raspberry Pi с версией linux и php:

Чтобы запустить iptables с php, добавьте в / etc / sudoers www-data ALL = (ALL) NOPASSWD следующее: / sbin / iptables

Некоторым людям не нравится предоставлять iptables доступ к www-данным. Говорят, это угроза безопасности. Но я думаю, это нормально, потому что их только что забанили.

<?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;
}
?>