Como você bloqueia uma porta no seu loopback?

3

Estou fazendo alguns testes e quero testar situações em que meu banco de dados fique inativo. É executado na mesma caixa que os meus testes, e parece que coisas como as seguintes não estão fazendo o truque

iptables -A INPUT -p tcp --dport 25262 -j DROP
iptables -A INPUT -p tcp --sport 25262 -j DROP
iptables -A INPUT -p tcp --dport 25262 -i lo -j DROP
iptables -A INPUT -p tcp --dport 25262 -s 127.0.0.1 -j DROP

Estou prestes a recorrer ao processo de matar meu banco de dados, mover o arquivo (porque meu banco de dados volta a funcionar automaticamente) e deixar o teste continuar assim, mas isso parece ser uma maneira terrível de fazer isso.

Qual é o caminho certo para bloquear uma porta no loopback?

    
por cylus 11.03.2016 / 01:03

1 resposta

4

Comando de linha de comando para DROP todo o tráfego de loopback (lo0)

$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP

Explicação

Como o iptables avalia as regras de cima para baixo e trabalha em uma base de "primeira partida ganha", você precisa garantir que a regra -i lo DROP seja -I inserida na parte superior, em vez de -A acrescentado à parte inferior das regras, para que ele corresponda antes que outra regra aceite o tráfego de loopback, por exemplo se o seu banco de dados era o MySQL, essa regra também poderia corresponder

INPUT -p tcp --dport 3306 ACCEPT

então se você fez o comando:

$ [sudo] iptables -A INPUT --dport 25262 -i lo -j DROP
                  ^^^ Notice the difference

suas regras ficariam assim:

INPUT -p tcp --dport 3306 ACCEPT   ---> this "wins" and request is accepted
INPUT --dport 25262 -i lo -j DROP

executando:

$ [sudo] iptables -I INPUT --dport 25262 -i lo -j DROP

suas regras finais seriam:

INPUT --dport 25262 -i lo -j DROP  ---> this "wins" and request is DROP'ed
INPUT -p tcp --dport 3306 ACCEPT 
... all your other rules
    
por 11.03.2016 / 03:19