A teoria por trás do firewall
Neste artigo procuro mostrar a estrutura - tabelas, cadeias e regras - a configuração, a criação de regras do firewall Netfilter/Iptables - nativo do Linux desde a versão 2.4.0 do kernel - bem como suas principais opções para criação de regras de firewall.
Parte 7: Utilização
Para criar as regras do firewall com iptables pode ser utilizado o terminal de comandos para digitar regra por regra. Este caso é útil somente para testar a funcionalidade das regras, pois seria inviável digitar no terminal todas as regras do firewall de um grande servidor ou ate mesmo de um computador doméstico toda vez que este for reiniciado.
Uma maneira mais inteligente e bem mais prática é a criação de um script feito em Shell para que seja chamado na inicialização do sistema.
A estrutura do comando para criar regras do iptables é:
/sbin/iptables <COMANDO> <CADEIA> <parâmetros e/ou extensão> <POLÍTICA>
Onde:
# /sbin/iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Esta regra protege um host contra o "ping da morte", dando um limite de 1 ping por segundo para requisições de ping.
# /sbin/iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
Esta regra protege um host contra ataques do tipo "Syn-flood, DoS".
# /sbin/iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
Esta regra libera o acesso a interface de loopback.
# /sbin/iptables -A INPUT -i eth0 -s 10.0.0.0 -p tcp --dport 22 -j ACCEPT
Esta regra libera o acesso a máquina através de SSH por maquinas de uma rede interna.
# /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128
# /sbin/iptables -t nat -A PREROUTING -p udp -i eth0 --dport 80 -j REDIRECT --to-port 3128
Estas duas regras redirecionam a porta 80 para a porta 3128, utilizado em servidores proxy.
Como padrão o kernel vem com as partes referentes a segurança por firewall carregadas como módulos. Desta forma estes módulos deverão ser chamados por comando ou por script. Alguns módulos básicos para o funcionamento do firewall são: ip_tables, módulo básico do iptables, iptable_nat.
Uma maneira mais inteligente e bem mais prática é a criação de um script feito em Shell para que seja chamado na inicialização do sistema.
7.1. Comandos
A estrutura do comando para criar regras do iptables é:
/sbin/iptables <COMANDO> <CADEIA> <parâmetros e/ou extensão> <POLÍTICA>
Onde:
- /sbin/iptables é arquivo binário referente ao iptables;
- <COMANDO> é um dos comandos (seção 6.1.) que especificam o que fazer com a regra;
- <CADEIA> é a cadeia (seção 4.2.) onde a regra vai ser estabelecida;
- <parâmetros e/ou extensão> são as informações que definem a regra;
- <POLÍTICA> é a ação que o Netfilter vai fazer com pacotes que sejam tratados pela regra;
7.2. Exemplos de regras
# /sbin/iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Esta regra protege um host contra o "ping da morte", dando um limite de 1 ping por segundo para requisições de ping.
# /sbin/iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
Esta regra protege um host contra ataques do tipo "Syn-flood, DoS".
# /sbin/iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
Esta regra libera o acesso a interface de loopback.
# /sbin/iptables -A INPUT -i eth0 -s 10.0.0.0 -p tcp --dport 22 -j ACCEPT
Esta regra libera o acesso a máquina através de SSH por maquinas de uma rede interna.
# /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128
# /sbin/iptables -t nat -A PREROUTING -p udp -i eth0 --dport 80 -j REDIRECT --to-port 3128
Estas duas regras redirecionam a porta 80 para a porta 3128, utilizado em servidores proxy.
7.3. Módulos do kernel
Como padrão o kernel vem com as partes referentes a segurança por firewall carregadas como módulos. Desta forma estes módulos deverão ser chamados por comando ou por script. Alguns módulos básicos para o funcionamento do firewall são: ip_tables, módulo básico do iptables, iptable_nat.