Argumento inválido 'LOG' ao configurar iptables

1

Eu estou tentando escrever um script sh do iptables que depois eu possa ter atualizado de um ponto para todos os meus servidores. Até agora eu tenho isso que funciona.

eu recebo este erro

Bad argument 'LOG'
Try 'iptables -h' or 'iptables --help' for more information.

primeiro eu limpei para alguns padrões iptables-restore /etc/iptables.conf

carregue um arquivo de intervalos de ip ou apenas ips individuais

_input=/root/firewall/badips.db
_pub_if="eth0"
IPT=/sbin/iptables

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

egrep -v "^#|^$" x | while IFS= read -r ip
do
        $IPT -A INPUT -i ${_pub_if} -s $ip -j LOG --log-prefix " Drop BadIP "
done <"${_input}"

$IPT -I INPUTlist
$IPT -I OUTPUTlist
$IPT -I FORWARDlist

$IPT -A INPUT -i ${_pub_if} -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -m limit --limit 30/sec  -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 3 -m limit --limit 30/sec -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 5 -m limit --limit 30/sec -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 11 -m limit --limit 30/sec -j ACCEPT
    
por user2630659 11.04.2018 / 21:27

1 resposta

2

Em caso de dúvida sobre o comportamento do bash: cite suas entradas não confiáveis.

Se você tiver uma linha com apenas um espaço no arquivo badips.db , essa linha será igual a:

/sbin/iptables -A INPUT -i eth0 -s -j LOG --log-prefix " Drop BadIP "

A mensagem de erro não aponta o problema por causa da maneira como o iptables analisa os argumentos ignorando inicialmente o fato de que -j não é um argumento válido para -s e fica preso no próximo argumento.

O impacto atual de entradas maliciosas no seu badips.db é "execução de código com privilégios de root", portanto, certifique-se de que seu script está lidando com ips / nets de origem inválida corretamente.

    
por 12.04.2018 / 00:07