|
|
| Fóruns | Wiki | Videos | Grupos Sociais | RSS Feeds | FAQ | Termos de Uso | Contato | Sobre |
| Registrar | Blogs | Calendário | Marcar Fóruns Como Lidos |
FerramentasPublicidade |
From UnderLinux WikiFirewall Transparente ou Uma Bridge Filtrada
[editar] IntroduçãoNos *BSD’s a maioria dos quesitos de segurança e serviços auxiliares são NATIVOS, o que torna muito fácil sua utilização. Em nosso caso, estamos usando o FreeBSD 4.7, em máquina Pentium 166 com 48 mB de RAM (Itautec Infoway), e o IPFW :-) Em primeiro lugar: pra que haveríamos de querer um treco dêsses aí? Será que um firewall convencional não atende nossas necessidades? Bem, de fato a Bridge filtrada é medida adicional de segurança, algo que não vai pesar no orçamento (excessivamente, pelo menos) :-) e oferece um grau adicional de dificuldades ao eventual script-kid ou hacker, êsses monstros sempre dispostos a tirar nosso sono e (se acessarem nossos servidores), colocar em risco nosso caviar, festas anuais em Paris e viagens mensais ao Epicot Center, coisinhas que todos nós, Administradores de Rede, esforçamo-nos por oferecer às nossas familias. Lógico, não estou nêsse nível, mas vocês aí fora, seguramente, estão :-). Não se preocupem, não contarei ao Imposto de Renda, êsse esganado. Embora a maioria dos colegas já saibam, de cor e salteado o que é uma bridge filtrada, permito-me repetir os conceitos: Suponha que temos de um lado, um link que nos liga (via roteador/modem adsl/ cable modem) à internet, e de outro lado temos OU nossa máquina (o mais simples) OU um firewall fazendo NAT para um número qualquer de máquinas de nossa rede interna. Para efeitos de exposição, vou me limitar ao caso mais simples (minha casa), que dispunha de uma conexão ADSL (Speedy) de um lado e minha própria máquina de outro, ficando a bridge entre elas :-). Arte em ASCII:
|------> rl2 (192.168.10.10)
É usada para contrôle, a partir de um notebook (por exemplo) ou outra máquina; O enderêço dessa placa deve ser DIFERENTE de qualquer outro eventualmente existente em nossa rede, ou seja, se estamos com uma rede em 192.168.1.0, podemos estabelecer essa placa como estando em rede 192.168.10.0 (ou 172.30.0.0, ou 10.0.0.0). Importa é que não seja acessível normalmente a partir de nossa própria rede, mesmo que no mesmo switch. Não representado na ASCII-art, há um modem ADSL entre a internet e a bridge. Aqui é que vão começar as diferenças entre um firewall convencional e a bridge filtrada:
roteador: 200.204.151.65/26 --> é o modem ADSL
Tivéssemos um firewall convencional no lugar da bridge, e rl0 deveria ter um ip fixo, válido, enquanto em rl1 teríamos outro ip fixo, possívelmente um dos relacionados na RFC-1918, não roteável. A máquina cliente teria um ip dessa mesma classe/rede, ou seja (mais ASCII-art):
/internet/--- oteador-----[firewall]----/cliente/
Fazendo-se abstração completa do funcionamento disso, vamos ao que interessa: A bridge não tem enderêço em qualquer das placas. O conceito é de que tudo o que aparecer em uma delas é copiado para a outra. Contudo, antes de chegar à outra placa, vindo da Internet, o pacote de dados é analisado para saber se pode ou não atingir a máquina cliente. O pacote da máquina cliente poderá (ou não) sair para a Internet, sendo que, se houver expectativa de respostas, isso será inserido em uma tabela. Lógico, o processo é bem mais complexo, mas todos conhecem isso bem, não é mesmo? ;-) Isso nos permite montar um sistema de defesa mais sofisticado, por exemplo: (e tome ASCII-art):
/internet/--- oteador--{bridge}---[firewall]----/cliente(ou LAN)/
Nesse caso, o firewall está fazendo também NAT para a(s) máquina(s) cliente(s). Resumo: alguém (na internet) já disse que a bridge filtrada é um fio inteligente. E é isso mesmo. Um fio, sem enderêços IP, que analisa os pacotes que por ela passam, bloqueando-os ou deixando-os passar, conforme as regras vigentes. Optamos por um firewall do modêlo FECHADO, ou seja, tudo é bloqueado, salvo aquilo que é expressamente autorizado a trafegar. Pode ser que existam defensores do outro método (’tudo aberto, fecho o que não quero’), mas prefiro o conceito de ’tudo fechado, autorizo o que quero’. :-). Assim, com certeza, não deixo aberto algum furo que eu não queria, mas não lembrei de fechar :-) [editar] Configurando o kernelSerá necessária a reconfiguração do kernel, habilitando a bridge, e os itens relativos ao firewall:
options IPFIREWALL #firewall
[editar] ConfiguraçãoO arquivo rc.conf também deve ter algumas opções acrescidas ou modificadas:
### Basic network and firewall/security options: ###
O script de firewall (/etc/rc.firewall.bridge), que não é o padrão da instalação mas sim um script nosso (seguindo muitas sugestões de outros colegas); Note-se o fato de que as placas de rede rl0 e rl1 são ativadas, mas não recebem qualquer número ip, ao contrário de rl2, que recebe um ip-addr convencional, dos relationados na RFC-1918. Ufa, estamos quase lá :-)) Crie um arquivo chamado "sysctl.conf" em "/etc". Ou, caso o mesmo já exista, acrescente o seguinte conteúdo:
#enablesbridge
Agora, vamos às nossas regras para o IPFW :−)
#
Os colegas podem notar que algumas dessas regras foram tomadas ’emprestadas’ do rc.firewall original, existente em /etc :-). A idéia é KISS :-), sempre que for possível. As demais regras são bem simples, uma vez que o propósito desta bridge é ser uma plataforma de testes, para ampliarmos nosso conhecimento em filtragem de pacotes aplicadas à bridges. Lógico, essas regras devem ser revisadas e estabelecidas de acôrdo com o melhor conhecimento de cada um dos colegas quanto às suas próprias necessidades, caso venha a ser colocada em produção. Uso: entre um roteador qualquer e um cliente qualquer. Em topologia mais sofisticada, ficaria entre o roteador e um firewall qualquer, ou ainda entre um firewall qualquer e uma rede qualquer :-). Bem, sugiro experimentarem :-), à vontade. log /var/log/security
Dec 21 21:07:17 infoway /kernel: ipfw: 2300 Deny TCP
Ah sim, para acessar a máquina, basta estabelecer um ’alias’ para sua placa convencional de rede, para a mesma rede 192.168.10.0 de rl2. Exemplo: ifconfig eth0:0 192.168.10.1 up (sintaxe Linux) Depois de terminado quaisquer trabalhos que tenha tornado isso necessário, basta remover o aliases e.. pronto, novamente invisível :-) Lógico, todos já puderam perceber que a bridge é completamente inacessível (ou não?) a partir das rl0 e rl1, uma vez que não há um ip agregado às mesmas. Isso torna bastante difícil que haja uma ’invasão’ da mesma :-). Contudo, o impossível é apenas algo que ainda não descobrimos como fazer, portanto.. Não existe nada seguro sob o sol, exceto a Morte :-) [editar] AutorAutoria de Irado Furioso com Tudo. Consultor autônomo para a segurança de redes, projeto e implementação de redes corportativas, servidores FreeBSD e Linux para alta demanda (web/mail), provedores Internet, intranet e extranet, Samba (substituição de Servidores PDC Windows), firewalls e proxies. Pode ser contatado pelo e-mail irado [NOSPAM] safe-mail.net
[editar] Notas (quase) importantesSupôe-se que o leitor já tem instalado o FreeBSD em condições funcionais, ou que saiba fazê-lo sem problemas, ou seja, não se imagina que o usuário seja um completo leigo em FreeBSD. Não sou responsável por quaisquer danos ou perda de dados decorrentes das instruções contidas nêste artigo. O usuário deve usar estas instruções por sua conta e risco. Funciona aqui. Deverá funcionar aí. Se não funcionar aí, o problema é local, portanto NÃO OFEREÇO SUPORTE a qualquer instalação que tenha estas instruções como base. Divirtam-se :-) |