IPtables - Trabalhando com Módulos
O objetivo do artigo, é mostrar como expandir o uso do IPtables usando módulos, para construir um Firewall bem elaborado e que
atenda às suas necessidades.
atenda às suas necessidades.
Parte 4: Trabalhando com os Módulos Quota e Multiport
Módulo Quota
Quota é um módulo bem interessante que pode ser usado para limitar uma conexão a um específico endereço, com base em quotas em Bytes.- Seu funcionamento se dá da seguinte forma:
Estabelece-se um valor específico para cota e depois de atingido este valor, os pacotes da conexão cuja regra está executando, executa a próxima regra, que pode ser com o alvo DROP ou REJECT.
Por exemplo, às vezes, não podemos bloquear o uso de um determinado serviço, por ser essencial no dia dia, porém, alguns usuários abusam do uso do mesmo. Assim podemos barrar o trafego em um servidor FTP, ou para um site que é visitado constantemente para fazer downloads e fazer um limite, conforme o administrador achar melhor.
A observação que devo fazer é que, se ao atingir o valor da cota, o próximo pacote a ser tratado pela próxima regra, caso seja bloqueado o tráfego, só será permitido novamente se "resetar" as regras.
Opções:
- quota : O nome do módulo que será usado.
- --quota : Opção usada para indicar o valor da quota.
- Colocando em Prática
Na primeira regra usada para se trabalhar com este módulo, a regra será aplicada a uma máquina rodando o servidor FTP. O servidor permitirá o download até atingir o tamanho de 20 MB, após atingir o valor da quota, a próxima regra será executada "dropando" todos os pacotes para a origem 192.168.20.53, que requisitou o download.
# iptables -A OUTPUT -p tcp -d 192.168.20.53 --sport 21 -m quota --quota 20971520 -j ACCEPT
# iptables -A OUTPUT -p tcp -d 192.168.20.53 --sport 21 -j DROP
Na segunda regra, será aplicada uma cota de 10 MB em uma máquina que compartilha a Net, após atingir esta cota, todo tráfego da origem www.kernel.org, será "dropado" pela regra seguinte para a rede interna, impedindo que qualquer download desse site seja feito após o bloqueio.
# iptables -A FORWARD -p tcp -s www.kernel.org -m quota --quota 10485760 -j ACCEPT
# iptables -A FORWARD -p tcp -s www.kernel.org -j DROP
Módulo Multiport
Multiport é um módulo usado para especificar várias portas de comunicação em uma regra, este módulo é de grande ajuda, principalmente quando queremos aplicar uma regra para várias portas simultaneamente, sem necessidade de aplicar uma regra por porta. Pode se aplicar para portas de origem e destino.- Opções de uso:
- --dports : Opção usada para especificar porta de destino ou portas de destino.
- --sports : Opção usada para especificar porta de origem ou portas de origem.
- --ports : Opção usada para especificar porta de origem e destino juntas.
- Colocando em Prática
Na regra a abaixo, coloco uma exceção '!', indicando que toda conexão que tiver como origem qualquer endereço de rede, com exceção do 192.168.20.0/24, com destino à porta 80 e 601, serão bloqueados.
# iptables -A INPUT -p tcp ! -s 192.168.20.0/24 -m multiport --dports 80,601 -j DROP
Na regra abaixo, vou liberar várias portas, inclusive a usada pelo Webmin para todas origens.
# iptables -A INPUT -p tcp -m multiport --dports 22,25,110,80,10000 -j ACCEPT
Na próxima regra, usarei o módulo Quota em conjunto com Multiport, fazendo com que todo tráfego das portas de origem 80 e 21, com destino ao Host 192.168.20.5, seja dropado após ultrapassar o limite de 10 MB.
# iptables -A FORWARD -p tcp -d 192.168.20.5 -m quota --quota 10485760 -m multiport --sports 80,21 -j ACCEPT
# iptables -A FORWARD -p tcp -d 192.168.20.5 -m multiport --sports 80,21 -j DROP
Podemos ainda, bloquear o tráfego externo para determinados serviços da rede, no exemplo abaixo, estou incluindo uma regra que usa a interface PPP0 de uma conexão DSL, bloqueando as portas 80, 22 do SSH e 23 Telnet.
# iptables -A INPUT -p tcp -i ppp0 -m multiport --dports 21,23,22,80 -j DROP
ele ficou meio lento
depois usei um emulador do windows para camuflar a rede do sistema!!!