[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