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.
4. 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
5. 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
6. 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
7. 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.
8. 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
9. 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
# iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
10. 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
# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
11. É 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
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.
Fonte:
http://www.planetaunix.com.br/2014/12/firewall-iptables-parte-03.html