[FUGSPBR] DE novo a minha bridge

Capriotti capriotti em cee.com
Ter Abr 9 09:04:34 BRT 2002


Cristian:

Está faltando informação aqui: Como o processo de "via-e-vem"pode acabar 
sendo lento, vou tentar preencher o que eu acho que está faltando, ok ?



At 04:16 PM 4/8/2002 -0300, you wrote:

>       [Free BSD1 - email e DNS]
>                                /\
>                                ||
>                                \/
>  [roteador] <==> [HUB] <==> [FreeBSD2 - Bridge]
>                                /\                       /\
>                                ||                        ||
>                                \/                       \/
>                           [redeNT1]         [HUB] <==> [redeNT2]
>
>O que eu quero é o seguinte:
>A rede 2 deve conseguir usar o servidor DNS do FreeBSD1.
>A rede 2 deve ter acesso a internet com limitaco de banda de 64Kbit/s
>A rede 2 não deve enchergar os pcs da redeNT1

Estou assumindo que redeNT1 e redeNT2 estão em HUBs/Switches diferentes, e 
a máquina FreeBSD2 tenha 3 placas de rede.

Claro que todo esse controle tem que ser feito na máquina FreeBSD2.

redeNT1 - 140.0.0.x (exemplo)
redeNT2 - 150.0.0.x (fornecido)

Interface de rede do FreeBSD2 para redeNT1 - rl0 (exemplo)
interface de rede do FreeBSD2 para redeNT2 - fxp1 (fornecido)

O que nós vamos discutir agora só é válido se seus usuários não puderem 
alterar o IP das máquinas ! Caso eles tenham essa liberdade, o único jeito 
seria um switch/roteador programável, onde VC limita o acesso de 
determinado "ponto" (porrta de entrada do cabo); Mas isso foge do escopo e 
não vou discutir.

Bloquear acesso da nedeNT1 para redeNT2 e vice-versa (estou assumindo o 
vice-versa).

ipfw add 300 deny ip from 140.0.0.0/24 to 150.0.0.0/24 via rl0
ipfw add 400 deny ip from 150.0.0.0/24 to 140.0.0.0/24 via fxp1

Limitação de banda: do jeito que VC fez vai funcionar perfeitamente.

então, na ordem ficaria

ipfw pipe...
ipfw pipe...

ipfw add 500 [limitação 1]
ipfw add 600 [limitação 2]


Agora, com relação à navegação, VC especificou apenas usar o DNS do 
FreeBSD1, mas as linhas que VC definiu são para outros serviços também... 
Além disso, você não especificou se você que que seja usado apenas, única e 
exclusivamente o DNS do FreeBSD1 e mais nenhum outro no mundo (o que seria 
extremamente nazinsta, mas administrativamente poderia ter sua validade).

Então, para o caso do DNS exclusivo, existe uma solução extremamante 
elegante que seria assim:

ipfw add 700 fwd [ip.do.FreeBSD1] udp from 150.0.0.0/24 to any 53 via fxp1

Essa linha, na prática, está dizendo que qualquer solicitação de DNS feita 
na redeNT2, com qualquer endereço, vai ser direcionada para o FreeBSD1; Se 
esse serviço estiver disponível naquela máquina (como está, segundo seu 
esquema) vai ser aquela máquina que vai responder.

Mas pode ser que não seja essa a sua idéia, baseado nas regras que VC 
colocou no seu exemplo. Então, se for esse o caso, vamos estudar:

ipfw add 800 allow udp from any to [ip.do.FreeBSD1] 53 via fxp1

esta linha está ok, liberando o tráfego, e todas as outras linhas que forem 
baseadas nela vão estar ok, mas, para seu firewall ficar 100%, você tem que 
bloquear o resto dos pacotes indesejados. E para fazer isso coloque a 
seguinte linha:

ipfw add 65500 deny log ip from any to any

Note a opção LOG na linha ! Vou discuti-la depois.

Só que as linhas baseadas na linha 800 acima apenas liberam o tráfego de 
saída, mas não o de entrada ! Isso significa que os computadores fazem a 
pergunta mas a resposta é bloqueada na linha 65500 !

Nesse caso temos que adicionar uma linha que permita a entrada das respostas:

ipfw add 5000 allow tcp from any to any established

Na grande maioria dos casos isto funciona, mas no seu caso pode ser que 
você precise de

ipfw add 5100 allow udp from any to any established

e

ipfw add 5200 allow icmp from any to any

para manter sua rede rodando redondinha.

Nota: é importante que você observe a ordem das linhas. Eu colocaria nesta 
ordem NUMÉRICA (e não na ordem que eu escreve) que eu estou discutindo 
aqui; É o mais lógico NA MINHA OPINIÃO.


Por último, gostaria de sugerir aqui uma estrutura geral de firewall, bem 
genérica:

# Nat, se houver

#primeiro bloco de filtros:
#
# Filtros de segurança, contra spoofing, endereços de classes reservadas 
(192.168, 172, 10) que não podem estar presentes em redes abertas, etc...

#segundo bloco
#
# Redirecionamentos

#Terceiro bloco
#
# O que é proibido na siua rede

#Quarto bloco
#
# O que é permitido em sua rede

# Quinto bloco - cláusula única:
#
# Proibir o resto que não foi previsto anteriormenmte


Agora, sobre a opção "LOG": Ela vai manter um registro de todo o tráfego 
daquela linha no arquivo /var/log/security

Pode ser muito bom verificar esse arquivo para ver tentativas de invasão, e 
também para estudar o porque seu firewall não está deixando passar 
determinado tipo de acesso ou serviço.

Eu acho que fomos a fundo o suficiente neste caso. Caso ainda tenha alguma 
dúvida escreva :)

[]s

Capriotti

>Arquivo /usr/local/etc/rc.d/firewall.sh : (o q eu acho q deveria ser
>feito)
>
>#INICIO
>#LIMITACAO DE BANDA
>ipfw pipe 10 config bw 64Kbit/s
>ipfw pipe 20 config bw 64kbit/s
>ipfw 1000 add pipe 10 all from any to any out via fxp1
>ipfw 1001 add pipe 20 all from any to any in via fxp1
>
>#Libera servicos da internet
>ipfw 750 add allow udp from any to any 53 via fxp1 #DNS
>ipfw 700 add allow tcp from any to any 80 via fxp1   #HTTP
>ipfw 650 add allow tcp from any to any 21 via fxp1 #FTP
>ipfw 640 add allow tcp from any to any 22 via fxp1 #SSH
>
>#ISOLA Acessos fxp1 -> rede1
>ipfw 800 add deny all from any to 150.xxx.xxx.1/24 via fxp1
>#FIM
>
>Alguma recomendacao extra, alguma correção???
>
>[]'s
>Cristian
>--
>---------------------------------------
>  Cristian Thiago Moecke
>  CPD - LMP - UFSC
>  moecke em lmp.ufsc.br
>---------------------------------------
>
>
>----
>Para sair da lista envie um e-mail para majordomo em fugspbr.org
>com as palavras "unsubscribe fugspbr" no corpo da mensagem.


----
Para sair da lista envie um e-mail para majordomo em fugspbr.org
com as palavras "unsubscribe fugspbr" no corpo da mensagem.



Mais detalhes sobre a lista de discussão freebsd