[FUGSPBR] FreeBSD vs OpenBSD

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Qui Ago 1 16:21:22 BRT 2002


Paulo, bom dia...

Vamos por partes ;-)

FreeBSD vs OpenBSD nao e' a expressao correta, FreeBSD <=> OpenBSD <=> 
NetBSD e' melhor, visto que voce pode ir em qualquer uma das 3 direcoes; 
as implementacoes nos sistemas sao multuamente cooperativas em diversos 
pontos, o que os difere sao os objetivos particulares de cada um deles; 
o FreeBSD e' fundamentalmente voltado para estacoes PC98 e i386 
compativeis Intel, apesar de ter codigo "puro" de 64bits para 
arquitetura Alpha e outras arquiteturas em desenvolvimento. O FreeBSD e' 
o sistema que serve pra tudo, tudo inclui seguranca, bridging, 
firewalling, Multiprocessamento Simetrico, e' absolutamente flexivel e 
e' um dos sistemas (entre todos outros e nao apenas os BSD) com maiores 
possibilidades de tuning, o que faz dele, apesar de conhecidamente 
conservador em sua instalacao default, passivel de ser configurado para 
atingir performances historicamente nao encontradas em outros sistemas; 
dai vem a fama do freebsd de robusto, estavel, flexivel etc; e por isso 
os sites de maiores trafegos da rede tendem a adota-lo;

Mas nao sao apenas vantagens, por exemplo, em termos de portabilidade de 
arquitetura ambos, free e open fica anos luz a quem do que o NetBSD 
conseguiu, o netbsd por sua vez que fica aquem dos dois sistemas em 
varias questoes de funcionalidade, como bridging, bridging firewalling, 
SMP entre (varios) outros pontos. O Open tem suporte a mais arquiteturas 
que o Free, por sua vez; mas como eu imagino que sua opcao seja mesmo 
x86, e' onde o FreeBSD se destaca no que tem de melhor.

Depois, outras funcionalidades que ambos apresentam tem diferencas de 
performance; eu particularmente acho o suporte a bridge do FreeBSD o 
melhor que tem; acho tambem o stack TCP/IP do mesmo o mais fantastico e 
mais customizavel (tuning) proporcionando possibilidades de performance 
em rede (objetivo de servidores, hehe) apropriada o melhor possivel pra 
qualquer ambiente de qualquer porte, e esse e' um ponto que te 
interessa, visto seu objetivo: firewalling

O OpenBSD por sua vez tem o objetivo de ser extremamente seguro, desde 
sua instalacao padrao. Se consegue ser ou nao, e' assunto pra 
securityfocus e nao pra mim, ao menos; mas esse objetivo obriga o 
sistema a abrir mao de varias caracteristicas e a tomar decisoes 
(leia-se, theo de raadt tomar decisoes) que nem todos concordam, como a 
ultima de chrootar o apache por padrao, acao que faz o servidor web 
perder muitas de suas caracteristicas; mas enfim, os pros e contras 
apenas quem usa os 3 pode pesar, portanto, se voce tiver a chance e 
tempo, use os 3 e os compare pras suas diversas necessidades; Voce vai 
notar que, no que eles tem de melhor sao beem melhores do que o que voce 
esta acostumado (linux) hehehe.

Agora sobre firewalling, Opiniao pessoal: IPTables fede. Tanto em 
relacao a performance (quando comparado as ferramentas que eu vou citar 
a seguir) quanto em termos de analogia de como as coisas sao feitas, e 
depois, pela crise linuxista de mudar de ferramenta de firewall a cada N 
meses e consequentemente quebrar toda compatibilidade de backwards; mal 
pros usuarios do sistema. E depois, sao muitas falhas pra uma ferramenta 
de firewall. Mas como eu disse e' opiniao pessoal, de quem usa IPTables 
quando "nao tem outro jeito" (ou seja, quando o cliente ja tem uma 
solucao linux pronta) e voce pode concordar ou descordar, mas apenas 
depois de conhecer as solucoes BSD pra coisa ;-)

Vamos la, o IPFilter e' um controlador de pacotes que tem milhoes de 
seguidores; a maioria deles sao fans adoradores da ferramenta; Sua 
performance e' extremamente boa e suas features tambem; usa o ipnat pra 
fazer nat mas nao reescreve pacotes por source e destino, mao sei dizer 
quanto ao limite de pacotes por regras que voce quer saber, mas parece 
que ele nao o implementa; em contrapartida alem da performance e' 
perfeito pra controlar tcpflags e ipoptions, sendo o mais flexivel pra 
esse proposito; Quanto a caracteristica de validar a regra por horario, 
eu penso ate' onde isso seria vantagem, visto que as regras estariam 
sempre carregadas em memoria e sempre sendo processadas, afinal o S.O. 
tem que saber se "ta na hora" da regra funcionar ou nao. Nesse caso eu 
defendo, por economia de recursos, que isso seja feito com o cron e com 
scripts shell ;-) O IPF 'e multi arquitetura, nao esta disponivel apenas 
pros BSD.

O Packet Filter foi desenvolvido inspirado no IPF e contem a maioria das 
boas caracteristicas do mesmo, e implementa varias outras novas, como 
iproute-to etc etc. O PF foi criado pq o Theo de Raadt resolveu que a 
licensa do IPF nao era mais satisfatoria pro OpenBSD, que pra nao ficar 
sem firewall, surgiu o PF. A relacao entre os dois sao as mais diversas 
possiveis, por parte dos grandes fans de OpenBSD que eu conheco, alguns 
acham o PF excelete, outros acham ele aquem do IPF. Opiniao pessoal: 
prefiro o IPF ainda (entre os dois).

Agora, como bom fan do IPFW, vamos la. Todas as caracteristicas que voce 
procura (menos a limitacao por data) estao disponiveis no IPFW. Ele 
limita numero de pacotes, limita quantidade de regras stateful e de 
regras dinamicas criadas a partir de regras estaticas (regras dinamicas: 
caracterisca do IPFW que vao alem de firewall stateful e stateless, de 
uma lida quando puder), faz FWD de pacotes "sem reescreve-los" podendo 
manter integridade dos cabecalhos TCP/IP pra uma posterior analise, e 
tambem, e' o mais flexivel em termos do que voce chama de source nat e 
destination nat, podendo ser criadas regras de DIVERT no sentido que 
voce quizer, com qualquer source/destino necessarios.

Depois, o IPFW e' totalmente integrado com o FreeBSD, interagindo com o 
NATD, com Bridge e com o dummynet (caso voce queira controlar banda a um 
nivel nao exagerado, solucao mais simples e pratica do que o ALTQ, 
quando o ALTQ nao chega a ser necessario) e com IPSec etc etc;

Antes de ficar na duvida entre IPF e PF de uma olhada no IPFW ;-) Nao 
vai se arrepender (http://free.bsd.com.br/~eksffa/freebsd/ipfw.php pode 
ser um bom comeco) depois, se voce gostar do que ver, sorria e faca um 
buildworld no seu freebsd -STABLE com suporte ao IPFW2 (MFC recente do 
freebsd 5.0), cuja nova implementacao permite total flexibilidade na 
criacao de regras, usando "or" e "and" como chaves de alternancia de 
acao em uma mesma regra, e permitindo sintaxes bem locas com bit de 
portas e net/bitmask de redes/estacoes servindo como intervalos de 
acoes, inclusive, tais bits. E depois 
{portas,portas,portas-portas/bits,portas-portas,portas) a la vonte' em 
cada regra hehehe enfim ta uma loucura, e segundo dizem: o dobro de 
performance (ai eu nao posso confirmar visto que minhas politicas de 
firewall sao fechadas e portanto utilizo poucas regras pra liberar o que 
eh publico), mas o autor afirma essa melhora de performance 
comprovando-a na explicacao do novo algoritimo do IPFW2, procure por 
IPFW2 no historico da 
freebsd-stable/freebsd-current/freebsd-questions em freebsd.org ou em 
daily.daemonnews.org para maiores informacoes. Infelizmente ainda e' 
pouco documentado (alem das man pages que se deus kizer vao melhorar e 
das explicacoes junto do source dessa nova implementacao)

Pra ilustrar e ajudar em suas tomadas de decisoes:
O PF e' para OpenBSD, o IPFW e' para FreeBSD, o IPFIlter foi banido do 
OpenBSD mas continua 100% suportado no FreeBSD (yeap, suporta ambos, 
IPFW e IPF) e tambem e' a ferramenta de firewall do NetBSD. Bridging no 
FreeBSD suporta Filtering Bridge com IPFW (obvio, ja q eh a ferramenta 
de escolha) e tambem com IPF. Apesar das duvidas que certamente 
atormentam qualquer um que tente fazer testes com as duas ferramentas ao 
mesmo tempo, o IPFW e o IPF podem ser usados em conjunto no FreeBSD 
tanto em firewall tradicional quanto em Filtering Bridges;

O Licensiamento do IPFilter 'e distinto ao das outras ferramentas; A 
licensa dos sistemas operacionais em questao e' a mesma.

O mais importante, apesar de uma visao simplista dos Firewall e dos 
sistemas operacionais, eu nao quero te aconselhar a usar nem um nem o 
outro, o importante e' voce fazer como todos bons usuarios que queira 
inveredar-se pela forma BSD de fazer as coisas, teste tudo e tire suas 
proprias conclusoes. Se Alguem disser X ou Y sao melhores, desconfie. 
Tire a limpo ;-)

As opinioes que eu dei que nao foram argumentadas ou referenciadas sao 
de carater pessoal ;-) Depois que voce testar as solucoes em questao 
voce provavelmente vai ver que eu tinha razao em alguns pontos, e tambem 
vai descordar de outros, mas como voce vem do Linux pro mundo BSD, tenho 
certeza que a maioria das surpresas vao ser agradaveis :-)

Espere ter ajudado a clarear algumas coisas.

Paz Profunda,
Patrick Tracanelli
eksffa em freebsdbrasil.com.br

________________________________________________
Para sair da lista visite o URL abaixo:
http://www2.fugspbr.org/mailman/listinfo/fugspbr



Mais detalhes sobre a lista de discussão freebsd