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:
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:
Conexão efetuada com sucesso, pois a porta 22 está agora liberada. Vejamos a regra criada no firewall:
# iptables -L --line-numbers
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
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.
Muito bom! Parabéns.
Obrigado Muller!
Show de bolo Fábio! Você é muito motivador.
Obrigado Marcos!!!
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’