Minha tentativa:
awk '{sub("IP:", "", $2); print $2}' /tmp/test | xargs -n1 -I{} iptables -A INPUT -s {} -j DROP
Eu tenho um arquivo de log assim:
Frq:15 IP:0.0.0.0 Date: 2014-03-21 12:19:31 AM
Frq:9 IP:198.252.206.25 Date: 2014-03-21 12:19:31 AM
Agora eu recebo a coluna de endereços IP com o awk:
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}'
E o resultado é:
0.0.0.0
198.252.206.25
Eu quero adicionar este endereço IP no iptables para ser DROP de INPUT, mas eu não sei como
Obrigado amigos.
Você estará mais à frente ao estender fail2ban ao inserir um arquivo de configuração personalizado em sua .d
config directory.
Faça o mínimo de trabalho possível!
Você pode escrever um script que faça um loop sobre o resultado awk
e crie as regras iptables
adequadas:
#!/bin/sh
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP
do
iptables -A INPUT -s $IP -j DROP
done
No entanto, eu não sei o seu contexto e como seu arquivo de log pode ser confiável, mas é perigoso e você deve pesquisar quais IPs você está soltando.
Para um exemplo, o seguinte faz uma exceção para 127.0.0.1
:
#!/bin/sh
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP
do
if [ "$IP" != "127.0.0.1" ]; then
iptables -A INPUT -s $IP -j DROP
fi
done