Firewall iptables no Linux – Parte 03: Exemplos de regras

Firewall iptables no Linux

Vejamos alguns exemplos de regras do iptables.

1. Vamos começar configurando as regras-padrão da tabela FILTER. Vamos descartar todos os pacotes que chegam ao servidor por meio da cadeia INPUT e liberar todos os pacotes originados no servidor por meio da cadeia OUTPUT:

# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT

2. Vamos testar o acesso ao servidor via SSH usando o PuTTY. A conexão será negada, pois todas as conexões entrantes estão bloqueadas no momento:

Firewall iptables - acesso por PuTTY

Devemos, então, liberar o acesso SSH por meio da porta 22 com a regra a seguir:

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Testamos agora a conexão via PuTTY:

Testando firewall iptables com PuTTY

Conexão efetuada com sucesso, pois a porta 22 está agora liberada. Vejamos a regra criada no firewall:

# iptables -L --line-numbers

Ver a regra criada no iptables

Usando a opção –line-numbers podemos visualizar o número da regra, na coluna num. Isso é muito importante caso desejemos inserir uma regra nova em uma posição específica, ou excluir uma regra sem afetar as demais.

Podemos também ver una versão resumida das regras atuais do firewall com a opção -S:

# iptables -S

Ver regras resumidas no firewall iptables do Linux

3. Muitos servidores Linux permitem acesso via interface Web a seus serviços administrativos. Para que isso funcione, é necessário liberar a porta usada pelo servidor web, que normalmente é a porta 80. Liberaremos também o protocolo HTTPS, que usa a porta 443. Vamos liberá-las:

# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

4. Geralmente os serviços em um computador se comunicam entre si enviando pacotes de rede de um para outro. Para isso, é usada normalmente a interface de rede de loopback, a qual direciona o tráfego de rede de volta para o próprio servidor, em vez de enviá-lo para a rede local.

Vamos então liberar o tráfego na interface de loopback:

# iptables -I INPUT 1 -i lo -j ACCEPT

Neste caso, a opção -I nos permite inserir a regra em uma posição específica na cadeia INPUT – no caso, na posição número 1. E com a opção -i podemos selecionar a interface a ser afetada, lo, que é a interface de loobback.

5. Agora vamos bloquear todo o tráfego proveniente de um IP específico na rede. Bloquearemos o tráfego do IP 192.168.1.20 para o nosso servidor:

# iptables -A INPUT -s 192.168.1.20 -j DROP

6. Podemos aceitar todo o tráfego na cadeia INPUT proveniente de um computador em particular na rede, por meio de seu MAC Address:

# iptables -A INPUT -m mac --mac-source 00:12:A1:24:BB:0C -j ACCEPT

7. Bloqueando o ping. Vamos bloquear as mensagens de requisição de eco do icmp, de modo que nosso servidor não responderá a requisições de ping:

# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

8. Porém o servidor ainda pode enviar requisições de ping para outras máquinas. Se quisermos bloquear as requisições de saída devemos criar a regra a seguir:

# iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP

Se quisermos bloquear as mensagens de resposta do ping, devemos usar o tipo de icmp echo-reply.

9. Suponhamos que seja necessário abrir uma faixa de portas no servidor, como por exemplo, as portas de 5100 a 5150. Não precisamos criar uma regra para cada porta. Em vez disso, indicamos na regra que queremos usar uma faixa de portas em vez de uma única:

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5100:5150 -j ACCEPT

10. Liberando o servidor de impressão na rede local 192.168.0.0/24: para isso temos de liberar as portas do CUPS, que são as portas 631 TCP e UDP:

# iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

11. Caso seu servidor Linux também seja o servidor DNS da rede, será necessário liberar as portas adequadas para os clientes da rede:

# iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT

12. É muito comum termos um servidor de arquivos em Linux na rede, servindo a clientes Windows via SAMBA. Vamos então liberar acesso ao servidor de arquivos para os clientes de nossa rede interna (192.168.1.0/24):

# iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT

Na próxima página aprenderemos a tornar as regras do firewall permanentes.

 

Sobre Fábio dos Reis (1212 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

5 Comentários em Firewall iptables no Linux – Parte 03: Exemplos de regras

  1. Muito bom! Parabéns.

  2. Marcos G Ferreira // 18/03/2019 em 14:11 // Responder

    Show de bolo Fábio! Você é muito motivador.

  3. Olá grande Fábio! Me ajuda com esta regra. Estou começando agora e estou com dificuldade em fazer funcionar.

    Como faço para usar essa regra com macaddress + port
    iptables -A INPUT -m mac –mac-source 00:12:A1:24:BB:0C -j ACCEPT

    só que no firewalld do CentOS?

    Eu tentei assim e não funciona:
    firewall-cmd –permanent –zone=public –add-rich-rule ‘rule family=”ipv4″ source address=”xxx.xxx.xxx.xxx” mac=”xx:xx:xx:xx:xx:xx” port port=xxxx protocol=tcp accept’

Escreva um comentário

Seu e-mail não será divulgado


*