Às vezes, é necessário configurar o iptables no host remoto. Freqüentemente, as regras corretas do iptables podem ser obtidas com algum uso do método de bomba e, nesses casos, é preciso estar seguro. Aqui vou descrever como configurar o iptables de forma tão simples que, no caso de bloquear o acesso a si mesmo, esse acesso poderia ser obtido novamente.
A idéia é a seguinte: no cron, escrevemos uma regra que, em um determinado momento, redefinirá as regras do iptables. Isto é, suponha que eu criei uma cadeia de regras e a apliquei, e de repente a conexão com o host remoto parou de repente. No entanto, antes disso, adicionamos um script ao cron que limpará todas as regras e o acesso ao servidor remoto poderá ser obtido novamente.
Importante! As regras do Iptables são aplicadas imediatamente após a execução. Por exemplo, se você digitar:
$ iptables -A INPUT -p TCP --dport 22 -j DROP
Em seguida, a conexão no ssh será perdida imediatamente.
Crie um script que limpe todas as regras do iptables:
# vim /etc/restore_iptables.conf
#!/bin/sh
IPT="/sbin/iptables"
# remove all rules
$IPT -F
$IPT -X
# allow all connections
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
Você também precisa tornar o script executável:
# chmod +x /etc/restore_iptables.conf
O script deve ser executado imediatamente após as interfaces de rede estarem no Debian, basta adicionar a linha assim:
# vim /etc/network/interfaces
auto lo
iface lo inet loopback
pre-up /etc/iptables.conf
Agora adicione a regra ao cron para executar nosso script de recuperação de backup a cada cinco minutos, por exemplo:
# crontab -e
*/5 * * * * /etc/restore_iptables.conf
Agora podemos testar as novas regras. Para fazer isso, crie um arquivo com regras de teste, por exemplo:
# vim /etc/test_iptables.conf
IPT="/sbin/iptables"
$IPT -F
$IPT -X
# we get a mistake and drop ssh connection
$IPT -A INPUT -p TCP --dport 22 -j DROP
$IPT -A OUTPUT -p TCP --sport 22 -j DROP
Execute:
# chmod +x /etc/test_iptables.conf
# /etc/test_iptables.conf
Com essas regras, imediatamente descartaremos a conexão no ssh. No entanto, levamos tudo em consideração, basta esperar 5 minutos e você pode se reconectar.
Depois de ter certeza de que todas as regras funcionam conforme necessário, você precisa remover ou comentar a regra no cron:
# crontab -e
#*/5 * * * * /etc/restore_iptables.conf
Copie o novo arquivo de regras em vez do nosso backup:
# cat /etc/test_iptables.conf > /etc/restore_iptables.conf
Esteja atento!