Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux



» Screenshot
Linux: Como veio ao Mundo
Por v90
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper
Linux: Linuxpool
Por Melo


Artigo

Script de firewall completíssimo
Linux user
marceloespindola
18/11/2007
Este script possui diversas características como: mascaramento da rede interna e a rede externa, bloquear acesso de sites, rádio UOL mesmo com proxy transparente, liberar as portas principais, bloqueio de ataques como ping da morte, SYN-FLOOD, ssh de força bruta, anti-spoofings e entre outros. Faltou dizer a importante amarração do ip ao mac.
Por: marcelo espindola de melo
[ Hits: 48583 ]
Conceito: 10.0   Linux conceitoLinux conceitoLinux conceitoLinux conceitoLinux conceito + quero dar nota ao artigo

Introdução

Através da implantação, adaptação e melhorias de diversos scripts encontrados na internet, em livros e outros que formulei, crie este script com o mesmo propósito da comunidade do Linux em que cada um oferece sua parte para um grande sistema, onde a união de suas partes é maior do que a soma deles. "Este é um principio da administração".

Bom, o script oferece diversas vantagens além das que já foram ditas na descrição, mas uma grande diferencial que ofereço é o tamanho das possibilidades de gerenciar este script e a flexibilidade dele, pois contém diversas variáveis que facilitam a reconfiguração, pois basta alterar uma linha do script e todo o restante será afetado.

Este script foi testado durante muito tempo e pode ter certeza que contém a união de diversos scripts encontrados na internet e em livros. Outro item importante que falta dizer é que com os testes foi possível identificar e excluir regras que bloqueavam coisas indesejadas e que são regras testadas na prática.

A minha intenção não era construir um artigo que apenas possuísse um monte de regras com as quais ninguém entende o por quê da existência delas, mas um artigo que mostrasse diversas formas de configurar um Firewall, justamente para atender as diversas necessidades dos administradores de TI, tanto uma empresa rígida como outra mais leve.

Assim tentei construir um artigo sobre script de firewall que atendesse essas necessidades com exemplos claros e explicação detalhada de cada item e também que possuísse a flexibilidade da reconfiguração.

Pré-requisitos básicos, se você está pensando que para o hardware? Enganou-se, já que eu faço meus testes em um Pentium I mmx 200 Mhz, a placa mãe tem a data de 1997. O Linux possui uma grande versatilidade e funciona praticamente em qualquer hardware, mas os requisitos são para as pessoas mesmo e não para as máquinas, seguem então os requisitos:
  • Conhecimento prévio do Iptables;
  • Conhecimento de Shell-script;
  • Conhecimento básico de Linux;
  • Conhecimento sobre comandos em internos do sistema.

Para aqueles que sabem a nível médio ou iniciante em Linux que ainda não compreende o Iptables, sugiro a Leitura de um artigo no seguinte endereço:
De forma prática e bem concisa o autor ensina a estrutura de funcionamento do Iptables, porém não ensina a sua sintaxe e nem configurar o mesmo. Este artigo se limita a ensinar como construir o script que inicializa as configurações do iptables para manipular as tabelas do netfilter, em breve estarei lançado meu próprio artigo que ensinará o funcionamento do firewall em questão e sua sintaxe de forma bem didática.

A implementação deste script foi feita em computador com o Debian-Etch, mas segue um exemplo de implementação no Slackware. Das Características completas do que ele implementa:
  • Tráfego de prioridade de saída e entrada pela tabela mangle;
  • Ativa o redirecionamento no arquivo ip_forward;
  • Habilita o fluxo interno entre os processos;
  • Libera as portas principais do servidor;
  • Bloqueia acesso de sites negados a rede interna;
  • Bloqueio de ataques conhecidos como: ping da morte, SYN-FLOOD, ssh de força bruta, Back Orifice, TRIN00, bloqueio para o servidor X, Anti-Spoofings;
  • Bloqueio de scanners ocultos (Shealt Scan);
  • AMARRA IP AO MAC;
  • Libera Radio UOL mesmo com o proxy transparente;
  • Direciona as requisições da porta 80 para a 3128 (proxy transparente);
  • Ativa o mascaramento da rede interna para a externa;
  • Exemplos de regras que fazem diversos arranjos como: Redirecionar conexões do VNC, bloqueio do emule, bloqueio Kazaa, Morpheus e AudioGalaxy.

Navegação

Outros artigos deste autor

Leitura recomendada

Comentários
Comentário enviado por elgio em 18/11/2007 - 11:08h:

Oi.

Só uma contribuição:

"
#bloquear ataque do tipo SYN-FLOOD
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
$IPTABLES -A INPUT -i $WAN -p tcp --syn -j syn-flood
(...)
$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
"

Como descrevi em meu outro artigo "Iptables Protege contra Syn-Food?" esta técnica baseada em limit é FURADA (veja o artigo e meus argumentos em http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7070).

Mas porque o "0" no tcp_syncookies??

Colocar "1" nele (LIGAR) por si só já é técnica suficiente para bloquear o Syn food. Claro que isto deve ser feito em TODOS os servidores. Tentar evitar a negação de serviço no firewall usando limit é FURADA!

[]'s

Comentário enviado por elgio em 18/11/2007 - 11:30h:

Outra coisa é sobre, também, a proteção contra SSH brute force.

Eu usava esta de por um limit (tu colocaste 1s), mas tive que ABANDONAR pelos mesmos motivos do Syn food. Acontece que o mundo tentava tanto entrar no meu SSH que meus usuários legítimos acabavam sendo o +1 no mesmo segundo e não conseguiam. Furada denovo! Resolvi isto com o uso do RECENT do iptables (onde me lembro do IP que fez SSH e o nego se ele fizer muitos em pouco tempo. DIFERENTE do limit que apenas conta quantos sem diferenciar quem, qual IP de origem).

Ah, em tempo, como eu resolvi o problema de brute force SSH eu respondi como COMENTARIO neste artigo (o cara descreveu muito bem o modulo Recent e foi lá que eu soube da existência deste ótimo módulo do iptables):
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5551

Comentário enviado por suportemega em 19/11/2007 - 17:01h:

Marcelo;

Neste artigo como você trata as coneccoes na porta 3389 (terminal service)?
tenho um servidor Linux (proxy e firewall) tenho um TS interno que já acesso de uma rede externa. Mas não consigo fazer com que minha rede interna casse um Terminal Service Externo!

Comentário enviado por thaleseduardo em 19/11/2007 - 19:09h:

Parabens, um excelente artigo e será de muita valia. Mas gostaria de tirar uma duvida, sobre servidor wireless. Qual regra de iptables serveria para bloquear o acesso entre os computadores, fazendo com que eles não se enxergue.

Comentário enviado por Gabrihell em 20/11/2007 - 23:59h:

Ótimo artigo amigo, parabéns! :-)

Comentário enviado por luiscarlos em 22/11/2007 - 01:43h:

$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport $i -j ACCEPT
$IPTABLES -I OUTPUT -p icmp -o $WAN -j ACCEPT

isso não é redundante?

uma vez que a politica de saida é SEMPRE permitir, por que criar um regra de saida?
ótimo artigo e excelente firewall, muito bem planejado na minha opinião, parabéns.

Comentário enviado por agk em 24/11/2007 - 13:24h:

Gostei da organização do script em arquivos menores e também do uso do Shell para organizar melhor as coisas sem precisar ficar mudando o script de configuração principal.
Não entendi porque foi carregado o modulo ipt_log, pois não é usando em nenhum lugar, recomendo logar os serviços básicos, com a idéia do webmin acho que ficaria bem legal fazer um script Shell para tratar os logs e fazer com que apareçam em html (sei que já tem programa que faz isso, não recordo o nome).
A tabela mangle é muito útil quando se faz controle de banda com HTB, daí é possível tratar os pacotes com o classify, mas isso talvez já esteja um pouco fora do escopo do artigo.

No mais, parabéns pelo artigo, continue assim.

Comentário enviado por maickelpc em 26/11/2007 - 17:41h:

mto bom

Comentário enviado por tiagonetwork em 29/11/2007 - 13:24h:

bom mesmoooo...

Comentário enviado por alaorjunior em 21/05/2008 - 00:40h:

Como fazer para que as estacoes sejam obrigadas a passar pelo squid, ou melhor, seja obrigado a configuracao do proxy

Comentário enviado por k4mus em 06/10/2008 - 23:25h:

Amigo, uma duvida. Eh obrigatorio a chamad dos modulos no inicio .modproble .. etc. Estes modulos ja nao sao levantados automaticos na hora do comando nao?


Grato


Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Contribuir com: [ Artigo | Conf | Dica | Pergunta | Script | Screenshot | Simulado | Wallpaper ]
Responsável pelo site: Fábio Berbert de Paula - Copyleft© 2002-2008 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux do Brasil! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.