Script de shell para bloquear tentativa de proftp failled

2

Eu quero filtrar e bloquear tentativas malsucedidas de acessar meu servidor de proftp. Aqui está uma linha de exemplo do arquivo / var / log / secure:

Jan  2 18:38:25 server1 proftpd[17847]: spy1.XYZ.com (93.218.93.95[93.218.93.95]) - Maximum login attempts (3) exceeded  

Existem várias linhas como esta. Eu gostaria de bloquear qualquer tentativa como esta de qualquer IP duas vezes. Aqui está um script que estou tentando executar para bloquear esses IPs.

tail -1000 /var/log/secure | awk '/proftpd/ && /Maximum login/ { if (/attempts/) try[$7]++; else try[$11]++; }
END { for (h in try) if (try[h] > 4) print h; }' |
while read ip
do

    /sbin/iptables -L -n | grep $ip > /dev/null
    if [ $? -eq 0 ] ; then
        # echo "already denied ip: [$ip]" ;
        true
    else
        logger -p authpriv.notice "*** Blocking ProFTPD attempt from: $ip"
        /sbin/iptables -I INPUT -s $ip -j DROP
    fi
done

como posso selecionar o IP com "awk". com o script atual está selecionando "(93.218.93.95 [93.218.93.95])" esta linha completamente. Mas eu só quero selecionar o IP.

    
por Saif 07.01.2011 / 20:09

3 respostas

0

Se você estiver usando o GNU awk ( gawk ), você pode usar um regex para o separador de campos.

$ echo 'Jan  2 18:38:25 server1 proftpd[17847]: spy1.XYZ.com (93.218.93.95[93.218.93.95]) - Maximum login attempts (3) exceeded' \
  | awk -F'\[|]' '{print $4}'
93.218.93.95
    
por 07.01.2011 / 20:35
3

Você também pode procurar algo como o Fail2Ban, que possui configurações de exemplo para ProFTPd .

    
por 08.01.2011 / 13:58
0
tail -1000 /var/log/secure | awk '/proftpd/ && /Maximum login attempts/' | awk -F "[][]" '{print $(NF-1)}' |
while read ip
do
    # note: check if IP is already blocked...
    /sbin/iptables -L -n | grep $ip > /dev/null
    if [ $? -eq 0 ] ; then
        # echo "already denied ip: [$ip]" ;
        true
    else
        # echo "Subject: denying ip: $ip" | /usr/sbin/sendmail [email protected]
        logger -p authpriv.notice "*** Blocking ProFTPD attempt from: $ip"
        /sbin/iptables -I INPUT -s $ip -j DROP
    fi
done
    
por 08.01.2011 / 19:45