Debian 8 iptables bloqueou todas as conexões

0

Eu tenho um problema muito grande com o meu servidor raiz que executa o Debian 8 (64-Bit). Eu instalei algumas regras iptables para bloquear intervalos IP específicos pertencentes à China e alguns intervalos na lista negra. Parece que algo deu errado e o servidor não está acessível por SSH, HTTP e assim por diante.

Eu posso obter acesso ao shell root ao servidor através do console KVM fornecido pelo meu hoster. Mas eu não entendo como permitir as conexões agora. Eu segui alguns tutoriais na internet para liberar o iptables, mas não funcionou, então acabei desinstalando o iptables.

Mas ainda não funciona. Eu nem consigo instalar nenhum pacote através de apt-get porque ele gera um erro de busca.

    
por J. Doe 20.08.2017 / 16:35

1 resposta

0

À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!

    
por 24.08.2017 / 13:06