Páginas

segunda-feira, 14 de fevereiro de 2011

FreeBSD: Firewall Bridge

Modelo:

Internet
|
roteador (ip: 200.0.0.1/24)
|
|
(ip: 10.7.7.1) bridge (ip: 200.0.0.2/24)
| (gw: 200.0.0.1)
|
------+------
| |
Rede Interna DMZ
| +---> WWW (ip: 200.0.0.5/24)
(ip: 10.7.7.50/24) | (gw: 200.0.0.1)
|
+---> FTP (ip: 200.0.0.6/24)
(gw: 200.0.0.1)

Neste artigo será apresentado uma forma simples de criar uma interface bridge. Com uma bridge (Ponte), é possível ligar redes de segmentos ou protocolos distintos e até mesmo criar um sistema de Firewall transparente (sem endereço IP) o que torna o acesso ao mesmo, se não tiver IP impossível remotamente.

Até então utilizávamos a opção “OPTIONS BRIDGE” em nosso Kernel FreeBSD, lendo o NOTES (arquivo com as opções disponíveis para o Kernel com seus devidos comentários), ela hoje já é considerada obsoleta e em seu lugar usa a opção if_bridge(4).
Bom, colocando a mão na massa, vamos personalizar nosso Kernel com a seguinte opção:

device if_bridge

Ou então levantamos o módulo dinamicamente usando o kldload:

(matheus@internet1)~# kldload if_bridge

Após compilar o Kernel e reiniciar a maquina ou então carregado o modulo dinamicamente criaremos a interface Bridge.

(matheus@internet1)~# ifconfig bridge0 create

Criada a interface, vamos informar quais interfaces serão membros desta bridge, neste caso a placa fxp0 e fxp1.

(matheus@internet1)~# ifconfig bridge0 addm fxp0 addm fxp1 up
Por fim é necessário levantar as interfaces para que a bridge funcione:

(matheus@internet1)~# ifconfig fxp0 up
(matheus@internet1)~# ifconfig fxp1 up

Neste momento a bridge esta em ação, com um simples tcpdump podemos ver o trafego passando.

# tcpdump -npi bridge0
Vamos verificar agora opções de filtros, vejamos as opções em nossa sysctl.
(matheus@internet1)~# sysctl net.link.bridge
net.link.bridge.pfil_onlyip: 1
net.link.bridge.pfil_bridge: 1
net.link.bridge.pfil_member: 1
net.link.bridge.ipfw: 0
net.link.bridge.pfil_onlyip: Com valor 1 habilita a passagem nesta bridge de apenas pacotes IP's.
net.link.bridge.pfil_bridge: Com valor 1 habilita o filtro de pacotes na interface bridge.
net.link.bridge.pfil_member: Com valor 1 habilita o filtro de in e out das interfaces membras da bridge.
net.link.bridge.ipfw: Com valor 1 habilita o filtros de pacotes na camada 2 (Layer 2) com o ipfw.

Vale lembrar que o valor de MTU da interface bridge dependerá do MTU do primeira interface membro.

Para que a bridge levante após um reboot adicione o seguinte no seu rc.conf (configure conforme suas interfaces).

#REDE BRIDGE 1
ifconfig_fxp0="up"
#REDE BRIDGE 2
ifconfig_fxp1="up"
#INTERFACE BRIDGE
cloned_interfaces="bridge0"
#MEMBROS DA BRIDGE0
ifconfig_bridge0="addm fxp0 addm fxp1 up"
Esta nova opção de bridge tornou a criação e administração de uma bridge facil, simples e muito flexivel, maiores informações leia o man if_bridge.

Fonte: http://www.fug.com.br/content/view/160/60/

Nenhum comentário:

Postar um comentário