Como proibir possíveis endereços IP de hackers da porta 80?

1

Estou hospedando um monte de sites PHP em um servidor web. Embora tenha tomado todas as precauções para proteger todas as portas, os ataques específicos da Porta 80 continuam. Eu quero banir qualquer endereço IP que tenha interesse ativo em qualquer página (s) da web, mais do que 200 em uma hora, ou 15 em um minuto. Estou assumindo que um usuário humano não pode surfar 15 páginas em um minuto a menos que tenha razões que realmente valham a pena suspeitar.

Idealmente, gostaria que os endereços IP fossem registrados em bancos de dados proibidos e também tivessem endereços IP listados para esses endereços IP pertencentes ao meu cliente.

Existe alguma ferramenta pronta que faz tudo isso. Eu vi o fail2ban e ele não serve ao propósito ...

    
por ramdaz 21.07.2011 / 16:06

3 respostas

7

O que você precisa fazer é isto: 1) Assista os logs do apache para acesso 2) bloqueie os endereços IP que você qualifica no firewall (via script).

fail2ban irá fazer o que quiser, com um pouco mais de trabalho do que ler o slogan de pesquisa do Google.

    
por 21.07.2011 / 16:19
1

Que tal usar serviços existentes, como o Honeypot do projeto ?

    
por 21.07.2011 / 17:40
0

Isso funciona no meu Raspberry Pi executando uma versão do linux e php:

Para executar o iptables do php, adicione o seguinte ao / etc / sudoers www-data ALL = (TODOS) NOPASSWD: / sbin / iptables

Algumas pessoas não gostam de dar acesso a www-data para o iptables. Eles dizem que é um risco de segurança. Mas eu acho que está tudo bem porque eles foram banidos.

<?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;
}
?>
    
por 19.08.2016 / 05:03