Tempo de carregamento: 0,322 segundos.

Artigos > Bloqueio de portas para tráfego externo

1537 Views
Tempo de leitura: 2 Minutos 
Conteúdo atualizado em

Porque bloquear?

Manter serviços no ar respondendo em portas default e sem nenhum tipo de bloqueio ou restrição é, no mínimo, dar sopa para o azar.

É necessário restringir e ter sob controle todo acesso aos serviços de um servidor. A maior parte dos serviços já contam com algum tipo de recurso que nos permite restringir o acesso. O ideal, porém, é que os acessos indesejados nem mesmo cheguem no servidor. E como fazer isso? Via firewall, claro. E nesse caso estou falando de Iptables.

Vou mostrar como bloquear portas para o tráfego externo mantendo liberado apenas o tráfego local ou de origens pré-definidas.

Aqui, como exemplo, vou mostrar como bloquear o tráfego na porta 80. Muito simples.

Liberando o tráfego local:

Antes de bloquearmos algo, precisamos especificar os hosts que poderão acessar o serviço. Por isso, antes de mais nada, vamos liberar o tráfego local. E para isso, vamos liberar todo tráfego do loopback:

iptables -A INPUT -i lo -p tcp --dport 80 -j ACCEPT

Lembrando que o tráfego local “entra” via loopback, por isso liberamos a interface e nada mais.

Liberando o tráfego de origens específicas:

Caso queira liberar endereços IP específicos, acrescente uma regra como no exemplo abaixo:

iptables -A INPUT -i eth0 -p tcp -s 123.123.123.123 --dport 80 -j ACCEPT

Lembre de substituir eth0 pelo nome da sua interface e 123.123.123.123 pelo IP desejado.

Bloqueando a porta 80:

Observação importante: cuitado ao bloquear portas como a 22 (SSH). Antes de fazer esse tipo de bloqueio, lembre-se de liberar seu próprio endereço IP ou será bloqueado e perderá acesso ao servidor.

Por fim, vamos bloquear o tráfego na porta 80 com:

iptables -A INPUT -p tcp --dport 80 -j DROP

Desta forma, o acesso à porta 80 estará bloqueado, exceto para o tráfego via localhost e para origens específicas, caso tenha alguma.

Removendo as regras criadas

Para remover as regras que mencionei, basta trocar o iptables -A por iptables -D. Exemplo:

iptables -D INPUT -i eth0 -p tcp -s 123.123.123.123 --dport 80 -j ACCEPT

Observações:

O Firewall em sí é se chama Netfilter. O Iptables é uma ferramenta de linha de comando que nos permite realizar bloqueios no Netfilter.

Vale lembrar também que os bloqueios via linha de comando são temporários, não são definitivos, pois são carregados apenas na memória. Caso reinicie o Iptables, perderá essas regras.

Para que isso não ocorra, insira as regras no arquivo que armazena regras do Iptables. Os arquivos são:

  • Debian: &#47etc&#47iptables&#47rules
  • Centos: &#47etc&#47sysconfig&#47iptables

O conteúdo para ambas distribuições é o mesmo:

-A INPUT -i lo -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -s 123.123.123.123 --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 80 -j DROP

Ou seja, os mesmos comandos, só que sem o ‘iptables’ à frente.

Eh isso. Até a próxima.

0 - 0

Thank You For Your Vote!

Sorry You have Already Voted!