LinuxSecurityMagazine-Outubro02

103
www.linuxsecurity.com.br 1

description

Revista sobre seguraça linux

Transcript of LinuxSecurityMagazine-Outubro02

  • www.linuxsecurity.com.br

    1

  • www.linuxsecurity.com.br

    2

    Cartas dos leitores:

    E mais uma vez a comunidade agradeceJos Carlos Cirqueira Jnior ( OmegaB1te )Analista de [email protected]

    Sr. Renato,Sem dvidas a comunidade de administradores de redes,analistas de segurana e fuadores de planto estomuito gratos mais uma vez, agora pela criao desseexcelente veculo de informao. Seria excelente queesse material fosse mensal e impresso. Sou cadastradono site, e apesar de nunca ter contribuido com nada,sou muito grato por toda a informao disponibilizada.

    Resposta: Muito obrigado Jos, faremos o possvelpara torn-la mensal assim que os esforos foremsuficientes. Muito obrigado por suas palavras deincentivo e espero que goste dessa nova edio! Nose esquea tambm que essa revista no minha,mas de toda a comunidade! Os agradecimentos sotodos direcionados a esses excelentes profissionais quenos ajudaram.

    Revista para vendaRodrigo TrevisanAnalista de Sistemas Jr (Letti Tecnologia S/C Ltda.)[email protected]

    Gostaria de saber se existe essa revista para venda(pois pra mim e complicado imprimir aqui na empresa).Gostei muito do conteudo, Voces estao de parabenspela revista!!!

    Resposta: Obrigado por suas palavras Rodrigo. Porenquanto a revista est disponvel apenas online, paraque no haja custos ao usurio final, j que o objetivoaqui apenas disseminar conhecimento ok?

    Parabns pela Revista eletrnicaAndrey R. FreitasProfissional de Anlise/desenvolvimento em [email protected]

    Parabns pela iniciativa de criar uma revistaespecialmente dedicada a segurana. Gostaria de sa-ber como posso participar da elaborao da RevistaLinuxSecurity Magazine atravs de artigos ? De quantoem quanto tempo ser lanado um novo nmero equantos artigos devero serem enviados ?

    Resposta: Obrigado Andrey, espero que tenha

    gostado! Para participar da LinuxSecurity Magazine,basta querer dividir seu conhecimento com acomunidade enviando seu trabalho ou artigo que tenharelao com segurana ou administrao em geral parao email [email protected] . A respeito daperiodicidade da revista, ela ser sempre lanadaconforme o nmero de contribuies e o tempo livredos colaboradores.

    Feliz NotciaErnesto Paulo dos [email protected]

    Este email no pra mandar um artigo, mas sim praagradecer e muito mesmo pelo lanamento da revistaonline. um projeto simplesmente muito bom, corajosoe abnegado, de um pessoal de alta credibilidade comovocs. Acredito estar agradecendo por mim e portodos os entusiastas deste sistema maravilhoso.

    Resposta: Ernesto, no tenho palavras para agradecerseu email de incentivo e acredito que so justamentepalavras como as suas que nos incentivam a continuarcom esse projeto. Falo em meu nome, em nome darevista e, com certeza, em nome de todos essesprofissionais que contribuiram com artigos excelentes.

    Parabns e oferecimento de colaboraoClaudio [email protected]

    J h algum tempo acompanho seu trabalho e achofantstico. A base de conhecimento gerada por vocatravs do www.linuxsecurity.com.br fantstica,tanto j tendo me tirado de muitas enrascadas quantoserviu de inspirao para novos aprendizados. Recebicom festa o primeiro exemplar da Revista. Mais umavez, parabns. Por outro lado, gostaria de,humildemente, oferecer a voc ajuda na revisoortogrfica e gramatical dos textos. Tenho certaexperincia com redao e o fato de parte de meusclientes ser constituda de editoras e pessoal ligado educao me fora a uma atualizao constante nestesentido.

    Resposta: Claudio, fico contente em saber que oprojeto LinuxSecurity Brasil e seus sub projetos sejamteis ao amigo. Fico mais contente ainda em ler ooferecimento de ajuda para a reviso dos textos, elaser muito bem vinda!

  • www.linuxsecurity.com.br

    3

    Linux Security MagazineArthur Csar [email protected]

    Te escrevo este e-mail para parabenizar pela ediode Julho da LinuxSecurity Magazine, em formato PDF.timos artigos, com pessoas competentes falando sobreferramentas e segurana. Agora, s falta fazer apublicao impressa ! Estou aguardando as prximasedies e espero que a qualidade seja a mesmaapresentada nesta edio.Parabns e muito sucesso !

    Resposta: Muito obrigado Arthur, espero que gostedas prximas edies tanto quanto gostou da primeira!

    MagazineWagner Stabolito - [email protected]

    Existe a inteno de publicar a revista pelos meiostradicionais ? Se j publicada, como fao para adiquiri-la?

    Resposta: Wagner, como a revista no tem finslucrativos, nosso objetivo distribu-la da forma maisrpida e ampla possvel. H sim o desejo de public-laimpressa, mas ainda no algo imediato ok? Esperoque goste das prximas edies!

    FelicitacionesMaurcio [email protected]

    Gostaria de parabeliz-los pelo importante trabalho epela iniciativa de conduzir a informao gerada a todacomunidade da informtica. AOS CRIADORES, OS MEUSPARABNS PELA REVISTA.

    Resposta: Obrigado Maurcio! Os criadores da revista(toda a comunidade de profissionais que participou etornou a mesma possvel) agradecem!

    Revista LinuxSecurityAdriano Filippin - SDCNet [email protected]

    Gostaria de parabenizar todos os responsveis pelacriao da LinuxSecurity Magazine, achei as materiasbem interessantes, estvamos mesmo precisando deuma publicao desse tipo, principalmente para nsque adotamos o ambiente Linux como nosso principalsistema operacional, e pode ter certeza que vou serleitor assduo dessa revista. Parabns a todos.

    Resposta: Obrigado Adriano, contamos com o amigono apenas como leitor mas como crtico nos enviandosempre sugestes ok? Obrigado mais uma vez por suaspalavras de incentivo.

    RevistaJoo Alexandre Voss de [email protected]

    Parabns pela revista linuxsecurity. Acabo de baix-la, uma excelente iniciativaa de vcs. Ainda no li toda,mas at onde eu vi, est uma beleza. Continuem assim!

    Resposta: Esperamos poder continuar mantendo aqualidade da revista da melhor forma que pudermos.Muito obrigado!

    Agradecimento

    Gostaria de agradecer a todos pelos maisde 450 emails recebidos comparabenizaes pela revista, sugestes,dicas, e me desculpar pela relativa demorapara responder cada um deles. Como jdisse anteriormente, essa revista pertencea todos vocs, ento retribuo a todos comum grande e sincero MUITO OBRIGADO!

    Elogie, critique e d sugestes. Esteespao seu, leitor. Envie sua cartaatravs do email abaixo.

    [email protected]

  • www.linuxsecurity.com.br

    4

    ndice

    07 - Como obter melhor performance do Apache no UnixFabio Wakim Trentini

    14 - As 1001 utilidades do FreeBSD LiveCDEdson Brandi

    23 - slocate (Secure Locate)Rubens Queiroz de Almeida

    26 - Monitorando trfego de rede interna utilizando SASacct/RRDtoolDiogo Florenzano Avelinocolabarao de Marcus Maciel

    30 - Monitorao com RRDToolRodrigo P. Telles

    35 - Construindo filtros para o qmailDiego Linke - Gamk

    39 - Enriquecendo os Logs do seu sistema Unix e Facilitando a Auditoria Parte 2Renato Murilo Langona

    46 - RAID via Software em GNU/Linux - Recursos, Possibilidades e ApliaesJos Roberto Kerne

    58 - Guia rpido para a configurao do Amavis com Postfix no Conectiva Linux 8.0Emerson Reis

    63 - Criptografia de discoJair Valmor Basso Jnior

    68 - (In)Segurana Bsica no MySQLGlaudson Ocampos

    76 - Introduo Anlise Forense - Parte IILeonardo Alcntara Moreira

    79 - Sniffers - Bsico e DetecoSumit Dhar

    87 - Corridas e chegadasIzar Tarandach

    91 - Vitaminando o velho SyslogdSandro Melo

    101 - Usando o jail no FreeBSDJean Milanez Melo

  • www.linuxsecurity.com.br

    5

    Editorial com grande honra que o projeto LinuxSecurity Brasilapresenta comunidade nacional mais uma edio denossa revista eletrnica. Tivemos alguns contratempose um grande atraso para o lanamento da mesma,porm acredito que toda a espera ser recompensadapelas mais de 100 pginasde informaes dessaedio.

    Infelizmente no pudemos incluir muitos trabalhosenviados devido falta de espao e tambm ao curtotempo disponvel para a reviso e diagramao detodos os textos. Esses trabalhos que no foramincludos na segunda edio j tem lugar garantido noterceiro nmero de nossa revista.

    Gostaria mais uma vez de agradecer a comunidadepor todo o apoio, todos os emails com sugestes,parabenizaes, alm de todos os excelentesprofissionais que colaboraram e continuamcolaborando conosco para que esse projeto possacontinuar em pleno desenvolvimento.

    Como disse no primeiro nmero, a LinuxSecurity Maga-zine resultado do esforo conjunto da comunidade ea LinuxSecurity Brasil apenas responsvel por uniresses esforos e apresentar a revista, portanto elapertence um pouco a cada um de vocs.

    Espero sinceramente que essa seja a segunda dediversas prximas edies e que possamos entregarao pblico Brasileiro cada vez mais qualidade emcontedo livre e que esse contedo seja disseminadoentre profissionais da comunidade da melhor formapossvel.

    Mais uma vez deixo a todos os membros e leitores oconvite para participarem desse trabalho conjuntoenviando seus artigos para prximas edies darevista.

    Diretor Executivo: Renato M. Langona

    Diretor de Operaes: Renato M. Langona

    Diretor de Marketing: Renato M. Langona

    Colaboradores especiais: Luiz Gustavo M. Nozella

    Webmaster: Renato M. Langona

    Assessoria Grfica e Design: Luiz Gustavo M. Nozella

    Diagramao: Luiz Gustavo M. Nozella

    Capa: Luiz Gustavo M. Nozella

    Reviso: Renato M. Langona

    Gerente Administrativo: Renato M. Langona

    LinuxSecurity Magazine uma publica daLinuxSecurity Brasil Solutions S/C Ltda.

    Distribuio Exclusiva: On-line

    Fax para contato: + 55 14 462.1030

    SAC (Servio de Atendimento ao Cliente)

    Problemas de qualidade na entrega e/ou exemplares.O SAC presta atendimento aos leitores por email:[email protected]

    A LinuxSecurity Magazine no se responsabiliza porconceitos emitidos nos artigos assinados decolaboradores. A LinuxSecurity Magazine no seresponsabiliza por eventual quebra de links fornecidospor colaboradores, nem pelo material exposto neste(s)link(s). Problemas com quebra de links devem serreportados para [email protected]. Utilizeo subject: "Link Quebrado", indicando a edio e oartigo.

    A fim de proteger todos os interessados e aindaestipular a divulgao de material referente ao Linux ea LinuxSecurity Magazine, convencionou-se quereprodues de texto da LinuxSecurity Magazine sopermitidos, desde que se inclua a frase "Reproduzidocom a permisso da LinuxSecurity Magazine(www.linuxsecurity.com.br)".

    Colaboradores

  • www.linuxsecurity.com.br

    6

  • www.linuxsecurity.com.br

    7

    Como obter melhor performance do Apache no Unixpor Fabio Wakim Trentini

    Nome: Fabio Wakim TrentiniIdade:Profisso: Consultor deSistemas

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.apachebrasil.com.br

    Qual administrador de sistemas nodeseja obter mais performance dos seusservidores web? No que existam problemasde performance na configurao padro doApache, mas vrias otimizaes podem serfeitas no intuito de melhorar seudesempenho. Este texto mostra algumasdicas de como melhorar sua configurao paraobter o mximo de performance.

    O comeo de tudo

    Ao rever o processo de compilao doApache podemos deix-lo menor e maiseficiente. Nesta fase, existem basicamentetrs itens com os quais necessriopreocupar-se: de usar ou no suporte a DSO(Mdulos dinmicos), quais regras sorealmente necessrias e o limite hardcodedde 256 clientes simultneos.

    Se pesquisarmos pela rede, existemvrios textos contraditrios a respeito deutilizar ou no suporte a mdulos dinmicosno Apache, mas o que realmente faz adiferena saber exatamente quais mdulosso necessrios carregar na memria pararodar seu servidor web. Basicamente, sealgum mdulo no estritamente necessrioem sua configurao, no o carregue. Issovale para as regras do Apache tambm.

    O problema de compilar o Apacheesttico, sem suporte aos mdulosdinmicos, que ele funciona para aqueleexato tipo de aplicao, ou seja, se voctem centenas de servidores web, que rodamconfiguraes distintas, provavelmente vocvai preferir compil-lo com suporte a mdulose vai carreg-los conforme a necessidade decada servidor web.

    As sensveis diferenas de utilizar ou

    no o suporte a mdulos dinmicos nostartup do webserver, que demoraaproximadamente 20% a mais de tempo doque o Apache compilado esttico. Dizemtambm que em algumas plataformas averso compilada com suporte a DSO ficaat 5% mais lento, mas realizando testesem servidores Unix no foi notada estadiferena.

    O Apache vem com algumas regrasespeciais que podemos habilitar oudesabilitar, dependendo das necessidadesde cada servidor web. Aqui esto as maisrelevantes:

    DEV_RANDOM: Habilita suporte parao device /dev/random nas famlias de Unixque suportam tal dispositivo. A regra servepara mdulos que necessitam de nmerosaleatrios, mas o nico mdulo que vemjunto com o Apache e utiliza desse recurso

    consultor de sistemas doUOLInc e mantm o site ApacheBrasil.

    email: [email protected]

  • www.linuxsecurity.com.br

    8

    o mod_auth_digest.

    EXPAT: Incorpora da biblioteca deparsing de XML Expat, para mdulos doApache que processam XML. Na distribuiodo Apache no existe nenhum mdulo quenecessite dessa regra, mas se, por exemplo,existir a necessidade de utilizar o mod_dav(que um mdulo de terceiros), a Expat serrequerida.

    IRIXN32 e IRIXNIS: Regras especficaspara compilar o Apache na plataforma Irix(SGI).

    SHARED_CHAIN: Algumas plataformastm problemas em carregar bibliotecasnecessrias para certos mdulos, como porexemplo, que o mod_ssl precisa carregar alib do openssl para subir. Essa regra corrigeo problema, por isso ela apenas deve serhabilitada caso necessrio.

    WANTHSREGEX: Esta regra habilita umengine interno de processar regularexpressions, em vez de utilizar o prprioengine do sistema operacional, quenormalmente suficiente.

    Quando voc compila o Apache ele vemcom um limite hardcoded de 256 clientessimultneos, que obviamente podemosaumentar setando uma simples varivel deambiente, a CFLAGS.

    Ao juntar todas as otimizaes, segueabaixo um exemplo de como compilar oApache com limite de 2048 clientessimultneos, todas as regras desabilitadas,suporte a DSO e compilando todos os mdulos(inclusive o experimental mod_mmap_static,que ser falado adiante):

    # export CFLAGS=-DHARD_SERVER_LIMIT=2048'; \./configure \disable-rule=DEV_RANDOM \disable-rule=EXPAT \disable-rule=IRIXN32 \disable-rule=IRIXNIS \disable-rule=SHARED_CHAIN \disable-rule=WANTHSREGEX \enable-module=most \enable-module=mmap_static \enable-shared=max \prefix=/usr/local/apache \&& make && make install

    Depois de instalar, podemos rodar stripno executvel principal e em seus mdulos,no intuito de remover as tabelas de smbolos,assim:

    # cd /usr/local/apache/ ; stripbin/* libexec/*

    Controle de processos do Apache

    O Apache roda no Unix com um sistemade pre-forking, ou seja, quando o processoprincipal sobe, ele cria vrios processos filhospara atender as requisies, e mantm umafaixa de processos filho reserva para algumeventual crescimento de carga. Existemcinco diretrizes que controlam isso:

    StartServers

    Determina quantos processos filhossero gerados quando o servidor web sobe.Quanto maior o nmero aqui, mais rpido oApache atender a demanda de todos osrequests por segundo, mas por outro ladoele vai gerar uma carga muito maior noservidor quando subir o webserver. O default 5, mas em servidores com muito trfegoeste nmero pode crescer bastante.

  • www.linuxsecurity.com.br

    9

    MinSpareServers

    o nmero mnimo de processos queficam abertos sem atender a nenhumarequisio, e se o Apache precisar criar maisprocessos filhos ele vai aumentando oMinSpareServers num algoritmo deprogresso geomtrica at atender a novademanda. O default 5, e deve seraumentado em sites de muito trfego. Notaque se o MinSpareServers for maior que oStartServers, o nmero de processos filhoscriados na inicializao ser o nmero setadono MinSpareServers.

    MaxSpareServers

    o nmero mximo de processosque ficam abertos sem atender a nenhumarequisio, para garantir que no caso deum crescimento de demanda, j existamprocessos prontos para atender asrequisies. O default 10, e novamenteem servidores com muito trfego epossveis picos de audincia, recomendado aumentar este nmero.

    MaxClients

    No importa quantas requisiessimultneas o Apache pode atender, elerespeitar o numero mximo de clientessimultneos fixado nessa diretriz. Estadiretriz importante para colocar um limitefsico de at quanto o processo pai podegerar filhos, pois a cada filho criado umpedao da memria RAM que se vai damquina em questo. O default 256, epara aumentar este valor necessrio alterarna hora da compilao, conforme descritono incio do artigo.

    MaxRequestsPerChild

    Esta diretriz serve para dizer aowebserver quantas requisies cadaprocesso filho ir atender antes de morrer.Isto bom para prevenir memory leaks, masdependendo de sua plataforma e dosmdulos que esto carregados no webserver,no h necessidade de terminar osprocessos, salvando recursos do sistema.

    A melhor forma de ver se seu servidorweb sofre de algum memory leak deixareste valor ilimitado (setando com valor zero),e anlise no incio do dia o tamanho dosprocessos filhos, com top, ps, ou algo dotipo, e a no final do dia faa o mesmo teste.Se os processos aumentam de tamanho como passar do tempo interessante colocaralgum nmero entre 10.000 e 100.000,dependendo da gravidade do leak.

    Normalmente memory leaks acontecemcom mdulos externos, como mod_php emod_perl, que armazenam variveis,estruturas de dados, etc.

    Keepalives e Timeouts

    Quatro diretrizes mais importantes arespeito de timeouts do HTTP, a seguir:

    TimeOut

    Este timeout o tempo corrido desdea conexo estabelecida ate o primeiro GETdo cliente, ou desde o ltimo ACK recebidose ainda existem mais dados para vir. Odefault 300 segundos, e pode ser reduzidoa at 60 segundos. Um tempo menor queesse podem ocorrer alguns problemasservindo arquivos com muitos bytes.

    KeepAlive

  • www.linuxsecurity.com.br

    10

    O protocolo HTTP/1.1 possui o suportede trafegar vrios objetos do mesmowebserver para um cliente utilizando apenasuma conexo TCP, reduzindo o overhead domesmo cliente abrir vrias conexes com oservidor web.

    Dependendo das caractersticas do seuservidor web, interessante ou no deixar okeepalive habilitado. Por exemplo, se seuservidor web serve apenas uma pgina HTML,feita por alguma aplicao Perl, PHP ou Java,e as imagens e outros objetos esto emoutros servidores, no h a menornecessidade de habilitar esta diretriz. Comesta diretriz habilitada, mais processos filhosdo Apache voc ter em seu servidor. E seesta diretriz de habilitar conexespersistentes for habilitada, existem maisduas diretrizes para configur-la, a seguir.

    MaxKeepAliveRequests

    Esta diretriz impe o limite de objetosservidos pelo servidor web numa mesmaconexo TCP. O default 100 e normalmenteno h necessidade de alterar este valor.

    KeepAliveTimeout

    o tempo mximo de silncio que oservidor mantm a conexo TCP aberta como cliente. O default 15 segundos, mas nocaso do servidor ter muito trfego isso podeser reduzido em at 5 segundos, ou se otrfego for baixo existe a possibilidade deaumentar este timeout.

    Caching Quanto mais, melhor.

    Imagine um site de notcias, que atualizado uma vez por hora. Um diaacontece uma queda na bolsa e o dlar sobe

    assustadoramente. Seus clientes voacessar sem parar seu site procura denovas notcias no decorrer do dia. Voc acabaservindo, para um nico cliente, dezenas edezenas de cpias da mesma pgina HTML,devido ao seu tempo de atualizao. Porqueento no avisar para todos os seus clientesque sua pgina expira uma vez por hora,para que seu servidor sirva menos pginaspor segundo? Existe um mdulo no Apachechamado mod_expires, que faz este tipo denegociao de objetos servido com osbrowsers e proxies afora, quando falamosde HTTP/1.1. Segue como us-lo:

    ExpiresActive

    Esta diretriz habilita ou desabilita oheader de caching dos documentos servidosem HTTP/1.1. Pode ser colocada dentro deum , ,, etc...

    ExpiresDefault

    O cdigo citado serve se voc quercachear por data de modificao (mtime)ou de acesso (atime), mais o nmero desegundos de expirao. Codificando oexemplo do site de notcias acima,chegamos ao seguinte trecho:

    ExpiresActive onExpiresDefault M3600

    ExpiresByType

  • www.linuxsecurity.com.br

    11

    Esta diretriz serve para habilitar cachingapenas de determinados mime types, comopor exemplo, para cachear por um ms apenasas imagens jpeg do servidor em questo:

    ExpiresByType image/jpeg A2592000

    CacheNegotiatedDocs

    Em vez do mod_expires, esta diretriznecessita do mod_negotiation, e servepara habilitar caching em browsers eproxies que falam somente o protocoloHTTP/1.0.

    Carregando objetos estticos emRAM

    Existe um mdulo experimental no cdigodo Apache que chama mod_mmap_static, eserve para colocar um ou mais objetos emRAM no servidor no intuito de diminuir o acessoao disco ou a um servidor NFS ondesupostamente ficaria o DocumentRoot. Estemdulo bom quando voc serve algum objetoesttico que no tem constantes alteraes e amplamente utilizado, como por exemplo aimagem do logotipo de sua empresa, que estem todas as suas pginas. A desvantagem deutilizar este mdulo que se voc carrega umobjeto em RAM e depois altera o contedo doobjeto no disco, apenas no prximo restart dowebserver ser possvel ver a alterao docontedo. Outro problema tambm que sepor acaso este objeto que foi cacheado com omod_mmap_static sumir no disco,normalmente o Apache gera um core e morrepor Segmentation Fault. A sintaxe a seguinte:

    MMapFile

    Nota que aceito apenas um arquivo porvez. Se voc quer carregar dez arquivos em

    RAM, sero dez linhas de MMapFile no seuhttpd.conf.

    Evitar ao mximo as gorduras

    mod_rewrite

    O mod_rewrite sem dvida o mdulomais poderoso j criado para o Apache.Utilizando regras com regular expressionsvoc pode reconstruir qualquer URL ouobjeto a ser servido, entre outras coisas.Mas no quesito performance, ele acabasendo um grande gargalo para a CPU devidoao processamento on-line de todas asrequisies que chegam. Se for inevitvelutiliz-lo, prefira regras que fazem stat()no disco em vez de regular expressionscomplicadas, para reduzir o consumo deCPU.

    mod_status

    Este mdulo mostra o famoso server-status do servidor, com vrias informaesa respeito dos processos filhos e utilizaodo Apache, mas como qualquer sistema deanlise on-line, este mdulo faz o webserverconsumir mais recursos da mquina,principalmente se a opo ExtendedStatusestiver habilitada.

    DirectoryIndex

    Esta diretriz do mod_dir fala quaisarquivos e em que ordem o Apache deveprocurar para carregar como pgina de ndice.Normalmente ele vem configurado para abrira pgina index.html, mas permitido colocarvrios tipos de pginas, podendo inclusivecolocar apenas trechos de arquivos. E aque podemos ter problemas de performance.Se voc pede pra ele procurar por qualquer

  • www.linuxsecurity.com.br

    12

    arquivo que comea por index, por exemplo,ele ter que procurar todos os arquivos comeste nome no disco, para cada requisioque for pedida. O ideal mesmo colocar omnimo possvel de arquivos nesta diretriz,e nunca utilizar os recursos de trechos denomes de arquivos para ele escolher.

    Options

    O segredo desta diretriz sempremanter o FollowSymLinks e nunca, nuncautilizar SymLinksIfOwnerMatch. Deixando oFollowSymLinks, algum usurio indevidopode criar um link simblico para a raiz doservidor, criando um furo enorme desegurana, mas se impossvel um clientecriar um link simblico em seu filesystem a opo mais performtica que se pode ter.

    HostNameLookups

    Esta opo serve para o Apache resolvero DNS reverso de qualquer IP que pede algumobjeto, para gravar o hostname (se o DNSconseguir resolver) no log. Isto acaba com aperformance do Webserver e no recomendado.

    Com essas dicas j possvel melhorarconsideravelmente a performance de umservidor Apache, mas o ideal sempreanalisar caso a caso, o tipo de aplicao, operfil de clientes que acessa, enfim, existemvrios conceitos de como otimizar seusservidores. Keep tuning!

  • www.linuxsecurity.com.br

    13

  • www.linuxsecurity.com.br

    14

    Nome: Edson BrandiIdade: 25 anosProfisso: Gerente de Tecnologia

    Ficha do Autor

    Informaes Adicionais

    Site:

    email: [email protected]

    Um pouco de Histria

    No prximo dia 18 de setembro oProjeto FreeBSD LiveCD estar completando1 ano de existncia, o projeto nasceu emsetembro de 2001 de uma necessidadeinterna do FUG-BR (Grupo Brasileiro deUsurios FreeBSD) em possuir um repairdisk que fosse verdadeiramente til.

    Naquela poca a comunidade FreeBSDno dispunha de ferramentas adequadas paraserem utilizadas em situaes de emergncia,o repair disk oferecido no set de CDs dadistribuio oficial no era 100% funcional eo uso do mesmo para uma operao dedisaster recovery deixava muito a desejar.

    Visando suprir essa necessidade o FUG-BR iniciou uma srie de testes com o sistema,com o objetivo de gerar uma verso dosarquivos de inicializao que permitissem aexecuo a partir de um cd-rom de umaverso 100% funcional do sistema FreeBSD.

    Os primeiros resultados foramdivulgados no incio do ms de outubroquando o FUG-BR disponibilizou oficialmenteo primeiro ISO do projeto FreeBSD LiveCD.Desde o lanamento a aceitao do projetopor parte da comunidade nacional einternacional foi muito boa e, como esperado,comearam a chegar uma srie de pedidosde customizao.

    Diante do enorme nmero de pedidospara a gerao de verses customizadas doLiveCD, o FUG-BR decidiu disponibilizar emjaneiro/2002 o conjunto de scripts que foramutilizados para a gerao do ISO, de formaque qualquer usurio do sistema poderia criar

    de maneira extremamente simples a suaprpria verso do LiveCD.

    Liberada a verso 1.0 do FreeBSDLiveCD Toolset, o objetivo do projeto passoua ser a integrao do mesmo rvore doports do FreeBSD, maximizando desta formaa exposio do projeto perante a comunidadeFreeBSD.

    Este objetivo foi alcanado em junho/2002, quando aps alguns meses de intensodesenvolvimento, o grupo responsvel peloprojeto disponibilizou uma verso totalmentenova dos scripts, contando inclusive comsuporte a vrios idiomas. Atualmente osscripts do FreeBSD LiveCD ToolSet estodisponveis a todos os usurios do sistemaque utilizam o ports para a instalao dosseus aplicativos (/usr/ports/sysutils/livecd/).

    As 1001 utilidades do FreeBSD LiveCDpor Edson Brandi

    Trabalha profissionalmente com FreeBSD desde 1995tendo atuado como consultor junto a vrias empresasnos ltimos anos. um membro ativo da comunidadeFreeBSD, sendo o responsvel pelo site FreeBSDPrimeiros Passos (www.primeirospassos.org),fundador do Grupo Brasileiro de Usurios FreeBSD(www.fugspbr.org), responsvel pelo projeto FreeBSDLiveCD(livecd.sourceforge.net). Atualmente trabalhacomo Gerente de Tecnologia no iBest(www.ibest.com.br).

  • www.linuxsecurity.com.br

    15

    O prximo passo do projeto aperfeioar os scripts e expandir as funcionalidades/usos do FreeBSD LiveCD.

    Etapas do processo (resumido) de gerao do LiveCD

    Ao dar boot em um computador com o FreeBSD LiveCD, voc ter disponvel empoucos segundos, um sistema Unix 100% funcional. Para que isso fosse possvel foinecessria uma srie de ajustes nos arquivos de inicializao do sistema e uma pequenacustomizao do kernel.

    No nvel dos arquivos de inicializao a maior alterao (se no a mais importante)foi realizada no arquivo /etc/rc . Este arquivo foi alterado de forma a no montar ossistemas de arquivos (necessrios ao funcionamento do sistema) a partir do /etc/fstab,mas sim executar algumas operaes alternativas.

    Dentre as possibilidades previstas, estava a criao dinmica dos FS em memriaRAM (MFS), auto deteco das parties existentes no HD do usurio associada apossibilidade de se utilizar arquivos imagem (vnodes) nestas parties para possibilitarsalvar de forma permanente as configuraes efetuadas ou ainda para instalar novosaplicativos no LiveCD.

    O fragmento de Shell Script que implementou essas alteraes no /etc/rc pode servisto abaixo, o mesmo est devidamente comentado de forma que voc no terodificuldades para entender seu funcionamento. (qualquer sugesto de melhora nessescript so bem vindas)

    ############################################

    echo Gerando o /dev em MFS...mount_mfs -s 24000 -c 20 -o noatime swap /dev 2>&1tar -xzpf /mfs/dev.tgz -C / >/dev/null 2>&1cd /dev./MAKEDEV all >/dev/null 2>&1#

    # Detecta os discos IDE e os slices existentes e monta todos osslices que forem# do tipo FAT, NTFS, UFS, EXT2FS##echo Detectando slices disponiveis...#for i in dmesg | egrep ad0:|ad1:|ad2:|ad3: | awk -F: {print

  • www.linuxsecurity.com.br

    16

    $1} | sort | uniqdo a=1 for x in fdisk /dev/$i | grep sysid | awk -F, {print $1} | awk{print $2} do case ${x} in 5) echo Particao FAT16/32 encontrada em /dev/${i}s${a},montando em /mnt/dos.${a} ... mount -t msdos /dev/${i}s${a} /mnt/dos.${a} ;; 6) echo Particao FAT16/32 encontrada em /dev/${i}s${a},montando em /mnt/dos.${a} ... mount -t msdos /dev/${i}s${a} /mnt/dos.${a} ;; 12) echo Particao FAT16/32 encontrada em /dev/${i}s${a},montando em /mnt/dos.${a} ... mount -t msdos /dev/${i}s${a} /mnt/dos.${a} ;; 7) echo Particao NTFS encontrada em /dev/${i}s${a}, montando em/mnt/ntfs.${a} ... mount -t ntfs /dev/${i}s${a} /mnt/ntfs.${a} ;; 131) echo Particao EXT2FS encontrada em /dev/${i}s${a}, montandoem /mnt/ext2fs.${a} ... mount -t ext2fs /dev/${i}s${a} /mnt/ext2fs.${a} ;; 165) echo Particao UFS encontrada em /dev/${i}s${a}, montando em/mnt/ufs.${a} ... mount /dev/${i}s${a} /mnt/ufs.${a} ;; esac

    a=expr $a + 1 donedone########## Verifica se existe o diretorio FreeBSD em cada slice montado,existindo ele

  • www.linuxsecurity.com.br

    17

    # busca os arquivos .flp para atachar como um virtual node#

    echo Verificando disponibilidade de Virtual Nodes...#

    for i in df -k | egrep ufs|dos|ntfs|ext2fs | awk {print $6}doif [ -r ${i}/freebsd ]; then

    if [ -r ${i}/freebsd/tmp.flp ]; then vnconfig -c /dev/vn1c ${i}/freebsd/tmp.flp sleep 2 mount /tmpfi

    if [ -r ${i}/freebsd/var.flp ]; then vnconfig -c /dev/vn3c ${i}/freebsd/var.flp sleep 2 mount /varfi

    if [ -r ${i}/freebsd/etc.flp ]; then vnconfig -c /dev/vn4c ${i}/freebsd/etc.flp sleep 2 mount /etc . /etc/rc.conffi

    if [ -r ${i}/freebsd/home.flp ]; then vnconfig -c /dev/vn5c ${i}/freebsd/home.flp sleep 2 mount /homefi

    if [ -r ${i}/freebsd/root.flp ]; then vnconfig -c /dev/vn6c ${i}/freebsd/root.flp sleep 2 mount /rootfi

    if [ -r ${i}/freebsd/local.flp ]; then vnconfig -c /dev/vn7c ${i}/freebsd/local.flp sleep 2 mount /usr/local

  • www.linuxsecurity.com.br

    18

    fi

    if [ -r ${i}/freebsd/X11R6.flp ]; then vnconfig -c /dev/vn8c ${i}/freebsd/X11R6.flp sleep 2 mount /usr/X11R6fifidone

    # Verifica se os virtual nodes foram montados (atraves de um arquivo decontrole)# se encontrar o arquivo da a particao como montada, se nao encontrargera a particao# em MFS e descompacta os arquivos necessarios.#

    if [ -r /tmp/XYZ123_ ]; then echo O /tmp foi montado via virtual node else mount_mfs -s 32768 -c 20 -o nodev,noexec,nosuid,noatime swap /tmp 2>&1 echo Gerando /tmp em MFSfi

    if [ -r /var/XYZ123_ ]; then echo O /var foi montado via virtual node else mount_mfs -s 32768 -c 20 -o noatime swap /var 2>&1 /usr/sbin/mtree -deU -f /etc/mtree/BSD.var.dist -p /var >/dev/null 2>&1 logs=/usr/bin/awk $1 != # { printf %s , $1 } /etc/newsyslog.conf if [ -n $logs ]; then /usr/bin/touch $logs fi /usr/bin/touch /var/log/lastlog echo Gerando /var em MFSfi

    if [ -r /etc/XYZ123_ ]; then echo O /etc foi montado via virtual node else mount_mfs -s 32768 -c 20 -o noatime swap /etc 2>&1 tar -xzpf /mfs/etc.tgz -C / >/dev/null 2>&1

  • www.linuxsecurity.com.br

    19

    Sem o fragmento acima, uma sriefuncionalidades do sistema seriamprejudicadas uma vez que 100% dossistemas de arquivos seriam do tipo readonly. O que o script faz basicamentemontar todos os diretrios que precisamser read write em MFS ou VNODES.

    Uma vez alterado o arquivo de bootdo sistema, era necessrio efetuar algunsajustes no kernel para que o / pudesse sermontado a partir do drive de CD, alm deadicionar o suporte aos Vnodes. Desta formaforam adicionadas ao arquivo de configuraodo kernel as seguintes linhas:

    optionsROOTDEVNAME=\cd9660:acd0\options UNIONpseudo-device vn 15

    Uma vez feitos esses ajustes bastougerar um CD bootavel, o que foi feito com ocomando mkisofs (as opes exatas podemser vistas nos scripts do toolset). A maioriadas pessoas se surpreende ao saber que foito simples resolver um problema queincomodava a comunidade h tanto tempo,mas a pura verdade. Usamos um pouco de

    echo Gerando /etc em MFSfi

    if [ -r /home/XYZ123_ ]; then echo O /home foi montado via virtual node else mount_mfs -s 32768 -c 20 -o noatime swap /home 2>&1 echo Gerando /home em MFSfi

    if [ -r /root/XYZ123_ ]; then echo O /root foi montado via virtual node else mount_mfs -s 32768 -c 20 -o noatime swap /root 2>&1 tar -xzpf /mfs/root.tgz -C / >/dev/null 2>&1 echo Gerando /root em MFSfi

    if [ -r /usr/local/XYZ123_ ]; then echo O /usr/local foi montado via virtual node else mount_mfs -s 32768 -c 20 -o noatime swap /usr/local/etc 2>&1 tar -xzpf /mfs/local_etc.tgz -C / >/dev/null 2>&1 echo Gerando /usr/local/etc em MFSfi

    mount proc

    ############################################

  • www.linuxsecurity.com.br

    20

    Shell script e um pouco de imaginao :-)

    Atualmente o Toolset composto porvrios scripts shell (Bourne Shell) e casoalgum tenha interesse em conhecer todasas etapas do processo de gerao eu sugiroque leiam os scripts que compem o FreeBSDLiveCD ToolSet. Na medida do possvel estotodos muito bem comentados.

    Possibilidades de uso

    Essa , sem duvida, a melhor coisa doFreeBSD LiveCD. As possibilidades de usoso inmeras, ficando restritas na maiorparte das vezes sua necessidade/criatividade.

    A partir do Toolset voc pode criar discoscustomizados paras as mais diversas funestais como:

    oRepair Disk

    oInstall Disk

    oJump Start Install

    oDisaster Recovery

    oX terminal

    oRoteador

    oBridge

    oFirewall

    oEtc

    A maioria dos administradores desistemas podem se beneficiar de variasdessas funes sendo considerado comosendo as mais interessantes Jump StartInstall e Disaster Recovery.

    Para exemplificar melhor uma daspossibilidades de uso do FreeBSD LiveCD,

    vamos fazer um estudo de caso (verdico)

    Uma empresa especializada nacomercializao de servidores FreeBSDpr configurados precisa fornecer aosseus clientes uma maneira simples erpida de recuperar o seu servidor aoseu estado inicial, ou seja, deixar oservidor no estado que estava quandosaiu da caixa, algo semelhante aos discosde recuperao enviados junto com osequipamentos compaq.

    A demanda acima um caso tpico deaplicao do LiveCD, pois ele pode serpreparado de forma a espelhar um servidorrecm instalado, contendo todas asaplicaes e customizaes necessrias, eser utilizado como mdia de instalao emoperaes de disaster recovery no futuro.

    Caso o servidor passe por algumproblema de hardware que acarrete a perdado sistema, tal como a queima de um HD, ocliente pode simplesmente substituir o HDdefeituoso por um novo, dar um boot com oCD criado com o espelho do sistema e emmenos de 5 minutos ter recuperado oservidor, de forma que o servidor recminstalado seja idntico ao que existia antesdo problema. Instalado o sistema, bastarecuperar o backup dos dados (no existiamno momento da gerao do LiveCD), e seusistema estar de volta produo empoucos minutos sem a necessidade de umlongo downtime e sem a necessidade deque um tcnico se desloque at o local paraefetuar a recuperao do sistema.

    Existem outras possibilidades de usode um disco preparado para essa finalidade,alm da situao de emergncia descritaacima, imagine que essa mesma empresavenda servidores em escala industrial e todasas mquinas saem pr-instaladas e pr-

  • www.linuxsecurity.com.br

    21

    configuradas. Esta empresa poderia geraruma matriz com a configurao de cada tipode servidor e poderia instalar as mquinascom um simples boot, aumentando em muitoa eficincia do processo de instalao.Atravs deste mtodo, possvel instalarum servidor web (por exemplo), por maioresque sejam as customizaes que voc tenhano sistema e na aplicao, em menos de 5minutos.

    Como disse anteriormente, o FreeBSDLiveCD, nasceu para ser um ponto de apoiopara todo e qualquer administrador FreeBSD.No saia de casa sem o seu ;-)

    Caso voc tenha sugestes/criticas/dvidas sobre a utilizao do FreeBSDLiveCD Toolset visite o site http://livecd.sourceforge.net e inscreva-se nanossa lista de discusses.

  • www.linuxsecurity.com.br

    22

  • www.linuxsecurity.com.br

    23

    slocate (Secure Locate)por Rubens Queiroz de Almeida

    Nome: Rubens Queiroz de AlmeidaIdade: 42 anosProfisso: Diretor deInformtica, Unicamp.

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.dicas-l.unicamp.br

    Mentor de diversos projetos ligados ao soft-ware livre incluindo a lista Dicas-L

    email: [email protected]

    Abstract: Descrio e recomendaes deuso para o comando slocate, utilizado paragerar um banco de dados com a localizaodos arquivos e diretrios no sistema,facilitando desta forma a recuperao deforma rpida e eficiente de qualquercomponente do sistema de arquivos.

    Sistemas Linux possui uma excelenteferramenta para nos ajudar na localizaode arquivos na estrutura de diretrios, ocomando slocate.

    O comando slocate cria um banco dedados contendo a listagem dos arquivos dosistema e sua localizao na estrutura dediretrios. O banco de dados criado pelocomando slocate fica localizado no diretrio/var/lib/slocate/ e chama-se slocate.db.

    O programa slocate armazena tambm,alm do nome, as permisses de leitura epropriedade dos arquivos de maneira agarantir que ningum obtenha informaessobre arquivos aos quais no tenha acesso.Da o seu nome, Secure Locate.

    O banco de dados criado emitindo-seo comando:

    # slocate -u

    Este comando ir gravar no arquivo /var/lib/slocate/slocate.db a localizao e onome de todos os arquivos e diretrios apartir do diretrio raiz.

    Usurios comuns podem tambm criarseu ndice personalizado. A restrio que obanco de dados (slocate.db) deve ser gravadoem um local ao qual o usurio tenha acesso,

    como por exemplo seu diretrio detrabalho pessoal.

    $ slocate -U /home/usuario -d.slocate.db

    O banco de dados pessoal foichamado de .slocate.db. O nome inicia-se em . para que no conste naslistagens normais do diretriodetrabalho.

    Ao invocar o comando slocate semargumentos, o banco de dadospesquisado ser o do sistema (/var/lib/slocate/slocate.db). Para consultar obanco de dados pessoal, utilizar a opo

  • www.linuxsecurity.com.br

    24

    --database:

    $ slocate database=.slocate.dbtex

    Forneceu-se no exemplo a instruo dese buscar por arquivos que contenham oscaracteres tex em seu nome.

    O tempo de resposta do comandoslocate excelente. Rarissimas vezes sernecessria a criao de um banco de dadospessoal, a no ser que o sistema seja muitogrande e contenha centenas de milhares dearquivos. Mesmo nestas condies a busca bastante eficiente.

    Caso realmente se opte por um bancode dados individual, uma boa alternativa criar um alias que especifique as diretivasapropriadas:

    alias Slocate=slocate database=$HOME/.slocate.db

    Desta forma, se especificarmos Slocateestaremos consultando o banco de dadospessoal. O comando slocate continuarfazendo uma busca na listagem completa.

    O acesso a este banco de dados feitoatravs do comando locate.

    Us-lo extremamente simples, bastafornecer como argumento a cadeia decaracteres que se deseja localizar nosistema.

    Finalmente, principalmente emsistemas bastante ativos, com uma grandetaxa de modif icao do sistema dearquivos, o mais indicado automatizar aatualizao do banco de dados slocate.db.As seguintes entradas na crontab realizamesta atualizao uma vez a cada hora:

    0 * * * * slocate -u

    Para usurios normais

    0 * * * * slocate -U /home/usuario-d .slocate.db

  • www.linuxsecurity.com.br

    25

  • www.linuxsecurity.com.br

    26

    Monitorando trfego de rede interna utilizando SASacct/RRDtoolpor Diogo Florenzano Avelinocolabarao de Marcus Maciel

    Nome: Diogo Florenzano AvelinoIdade: 20 anosProfisso: Consultor emRedes/ Segurana.

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.diogo.underlinux.com.br

    email:[email protected]

    Atua como Consultor em Redes/Segurana,Solues sob GNU/Linux e Web e tambm comomantenedor/desenvolvedor de contudo do siteUnderlinux.

    1. Introduo

    O que fazer quando o seu link Internetno suficiente para a utilizao de seususurios/servidores? Inicialmente, comenta-se muito em QoS/CBQ (Quality of Service),em que a grande jogada estar utilizandolimitao de banda, pretendendo com issogarantir aos seus servios que um usuriono v abusar do consumo do link. Emconjunto limitao de banda idealtambm utilizar um software capaz demonitorar esses usurios e poder analisarabusos na rede e horrios de pico, exibindogrficos e quantidade de transferncia diriaou de determinados perodos. E isso abrangetodos os servios, no s navegao web,como tambm transferncias FTP, utilizaode softwares peer2peer (Napster, KaZaA,AudioGalaxy e similares), envio/recepo dee-mails e etc.

    2. SASacct

    O SASacct um pacote paraaccounting utilizado para monitorao dotrfego numa rede TCP/IP atravs defunes presentes no Kernel dos sistemasoperacionais. O SASacct invoca um filtro depacotes externo (ipfstat, ipchains, iptables,pfctl), coletando os dados e registrando numarquivo de log informaes para cada IPsendo monitorado. Sua portabilidade paradiversos sistemas operacionais e diversasverses de filtros de pacotes suportados uma das suas caractersticas. Atualmente,suporta: Linux 2.2.x com ipchains, Linux2.4.x com iptables, *BSD utilizando ipf/pf.

    Ele gera grficos como os do MRTG,

    utilizando a biblioteca RRDTool (do mesmoautor). Possui a capacidade de gerar grficosde tempos em tempos e tambm on-the-fly em um perodo determinado. Ele aindapode ser utilizado como server modesendo rodado via inetd, situao na qual osclientes sasacct iro se encarregar decapturar os dados e exib-los, no sendonecessrio com isso rodar um Servidor Webem cada mquina que far a monitorao.

    Neste artigo, preocupei-me emapresentar o SASacct funcionandocompletamente. O leitor que desejar fazera configurao em diversas mquinas equiser utilizar o recurso de remote server(via inetd) disponvel no SASacct, eurecomendo ler os arquivos de documentaoque acompanham o pacote, mas j adiantoque uma configurao bem simples, apesarde funcionar um pouco diferente do que serapresentado neste artigo.

  • www.linuxsecurity.com.br

    27

    3. Requisitos para nossa soluo

    Servidor Linux 2.4 com filtro de pacotesIPTABLES

    Web com mod_perl para executarscripts CGI Perl, e para exibir pginas HTML.Recomendo utilizar o Apache. (http://httpd.apache.org). O mod_perl pode serobtido atravs do endereo http:Erro! Areferncia de hyperlink no vlida. Paramaires informaes sobre a instalao econfigurao do seu servidor Web, leia oApache-Compile HOWTO (http://w w w . l i n u x s e c u r i t y . c o m . b r /article.php?sid=5984).

    libpng (http:Erro! Areferncia de hyperlink no vlida.)

    Utilizada pelo RRDtool para gerar asimagens dos grficos.

    RRDtool (http://ee-staff.ethz.ch/~oetiker/)

    Biblioteca para gerao de grficos

    Perl 5.x (http://www.perl.org)

    4. Instalando o RRDtool

    Munido do pacote do RRDtool(rrdtool.tar.gz), descompacte o mesmo:

    # tar -xvzf rrdtool.tar.gz

    Agora vamos etapa de compilao einstalao simples:

    # cd rrdtool-1.0.39/# ./configure# make# make install# make site-perl-install

    5. Configurando o filtro de pacotes(iptables)

    O SASacct, se utiliza de regras pre-estabelecidas no filtro de pacotes, para geraros grficos e apresentar a quantidade deMB transferidos.

    Ele pode trabalhar com iptables,ipchains, ipf, pfctl, tornando-se assim,bastante portvel para diversos sistemasoperacionais (Linux, *BSD), e permitindo queas regras sejam ajustadas conforme apoltica de segurana de cada ambiente.

    Estou apresentando aqui as regrasbsicas a serem inseridas no iptables paraque ele faa a monitorao dos IPsdestinados. Munido dos IPs a seremmonitorados, faa:

    # Criar a chain SASACCT

    iptables -N SASACCT

    # Colocar o JUMP para a SASACCT,onde estaro as regras para trataros IPs.

    iptables -I INPUT -j SASACCTiptables -I OUTPUT -j SASACCTiptables -I FORWARD -j SASACCT

    # Repita as regras abaixo paracada IP, substituindo o200.200.200.200 pelo# IP destinado.

  • www.linuxsecurity.com.br

    28

    iptables -I SASACCT -s200.200.200.200 -d 0/0 -j ACCEPTiptables -I SASACCT -s 0/0 -d200.200.200.200 -j ACCEPT

    Sugiro no caso de outro filtro de pacotes,que o leitor leia o arquivo README doSASacct, onde ele apresenta as regrasbsicas para outros filtros.

    6. Instalando/Configurando oSASacct

    Inicialmente acesse o site do projeto(http://rousse.pm.org/sasacct) e faadownload do mesmo.

    Download: http://rousse.pm.org/sasacct/sasacct-1.0.tar.gz

    O SASacct se resume a poucos arquivosPerl (.plx e .cgi) e um de configurao, almde suas documentaes e exemplos.

    Descompacte-o:

    # tar -xvzf http://rousse.pm.org/sasacct/sasacct-1.0.tar.gz

    Acesse seu diretrio:

    # cd sasacct-1.0

    No necessrio compilar o SASacct.Ento iniciaremos a cpia dos arquivos paraos diretrios recomendados.

    # cp *.plx /usr/local/bin/# cp *.conf /etc/# cp *.cgi /apache/cgi-bin/

    Adotei utilizar o diretrio /usr/local/bin,onde ficaro os arquivos executveis Perl(ftpget.plx, htmlmaker.plx, sasacct.plx).

    O arquivo sasacct.conf ficar em /etc eos scripts cgi (showgraph.cgi, showtraf.cgi)ficaro no meu diretrio cgi-bin, onde oApache foi instalado. Geralmente estediretrio tambm pode ser o /home/httpd/cgi-bin, encontrado em muitas instalaespadro do Apache de algumas distribuiesmais comuns.

    Agora vamos partir para o arquivo deconfiguraes.

    6.1. Editando sasacct.conf

    Abaixo apresento um arquivo exemplode configurao do SASacct.

    ##### /etc/sasacct.conf ####### FiltroF:/sbin/iptables # comum oiptables estar tambm em /usr/sbin/iptables# Diretorio de Logs e rrd filesD:/var/log/sasacct# Diretorio dos htmls e graficosG:/apache/htdocs/monitoracao/# L:IP:DescricaoL:10.0.0.2:Marcus (10.0.0.2)L:10.0.0.3:Diogo (10.0.0.3)##############################

    Agora vamos criar o diretrio de logs earquivos rrd (grficos).

    # mkdir /var/log/sasacct

    Criar Repositrio de HTMLs e Imagens

    # mkdir /apache/htdocs/monitoracao/

  • www.linuxsecurity.com.br

    29

    6.2. Editando sasacct.plx

    O SASacct traz como padro amonitorao (grficos) em Bytes porSegundo. Se voc desejar alterar para Bitspor Segundo, edite o /usr/local/bin/sasacct.plx e altere a linha abaixo:

    my $bits = 0;pormy $bits = 1;

    Outra idia interessante colocar ascores que sero exibidas nos grficos (trfegode entrada/sada), em verde e azul, assimcomo so utilizadas no MRTG. Para isto,altere as linhas:

    @data_str =(AREA:indata#C0C0C0:In,LINE1:outdata#333333:Out,

    para

    @data_str =(AREA:indata#00cc00:In,LINE1:outdata#0000FF:Sa.da,

    7. Executando SASacct

    Para finalizar o nosso processo eexecutar o scripts que sero responsveispela gerao dos grficos, basta digitarmos:

    # /usr/local/bin/sasacct.plx

    Com isso, ele ir gerar dentro doRepositrio de HTMLs alguns arquivos .html

    e .png. Para que os mesmos fiquemorganizados, e um resumo seja feito com ogrfico dirio de cada IP, execute o scripthtmlmaker.plx

    # /usr/local/bin/htmlmaker.plx

    Posteriormente, s acessar atravsdo seu browser o diretrio em que foradestinado o repositrio HTML/png.

    7.1. Crontab

    Para automatizar a gerao dos grficose a captao dos dados, sugiro colocar aseguinte linha no crontab do usurio querodar os grficos.

    # crontab -e

    Adicione a linha abaixo:

    */5 * * * * /usr/local/bin/sasacct.plx

    Assim, ele ir gerar de 5 em 5 minutoso grfico, fazendo tambm a captao doslogs no iptables e realizando indexao dosarquivos rrd. Caso o trfego de sua redeseja muito grande, sugiro, colocar para rodaro sasacct -r de 5 em 5 minutos. Colocar nocrontab sasacct -g de hora em hora. Efinalmente sasacct -s semanalmente. Aopo -r faz a captao dos logs, a -ggera os grficos, e a -s realiza areindexao dos arquivos rrd.

  • www.linuxsecurity.com.br

    30

    Muitas pessoas devem ter lido estettulo e disseram: Xiii, mas um artigo sobremonitorao de rede.

    Na realidade este artigo no exatamente sobre monitorao de rede, esim, uma breve idia de como montargrficos baseados em qualquer tipo deinformao, seja ela relativa a CPU ou atmesmo a temperatura da sala ou do micro.

    Falaremos um pouco da ferramentaRRDTool (Round Robin Database Tool), queao contrrio do que muitas pessoas pensam,somente gera grficos, no sendoresponsvel pela coleta das informaes dedispositivos, como o seu irmo mais velho,o MRTG (Multi Router Traffic Graph).

    O RRDTool uma ferramenta GPL escritapor Tobias Oetiker, o mesmo desenvolvedordo famoso MRTG e entra em cena pararesolver uma srie de limitaes que o MRTGpossui.

    O desenvolvedor diz que o RRDTool no um substituto ao MRTG e j adianta que,na verso 2.0, as 2 ferramentas serofundidas formando uma ferramenta muitopoderosa.

    As principais vantagens do RRDToolem relao ao MRTG so:

    * Pode trabalhar com mais fontes dedados* Mais rpido e gera menor consumo deCPU* Possibilidade de gerao de grficos porrange de data

    * Banco de dados imutvel (tamanho)* Possui mdulo Perl para integrao cominterfaces WEB* Grficos totalmente personalizveis* Legendas so geradas no grfico* Pode-se trabalhar com condicionais (IF,ELSE, LT, GT, EQ, etc)* Permite utilizao de operadoresmatemticos (+, -, *, /, %)* Pode-se utilizar funes matemticas(COS, EXP, LOG, etc)* Manipulao do tipo de impresso dedados (PRINT e GPRINT)

    Principais Desvantagens

    * No coleta dados* No gera pginas HTML* No gera indexadores HTML

    Como voc pode perceber, o RRDToolpossui muitas vantagens em relao aoMRTG, mas tambm possui desvantagensque podem ser o fator de escolha de muitosadministradores que desejam plotar grficosde equipamentos de rede, ou seja, para acoleta de dados faz-se necessrio autilizao de ferramentas externas etambm para a gerao das pginas HTMLpara os grficos.

    Devo revelar que, algumas pessoas nocontinuaro a ler esse artigo aps saberemque o RRDTool no coleta dados, por outrolado, outras pessoas (espero que seja umagrande maioria) vo literalmente viajar namaionese com o leque de possibilidadesque esta opo pode gerar. O que eu querodizer que sabendo disso voc pode gerargrficos de qualquer coisa que desejar.

    Para exemplificar, vou mostrar 2 casosinteressantes:

    * Gerar um grfico de estatsticas de ping

    Monitorao com RRDToolpor Rodrigo P. Telles

  • www.linuxsecurity.com.br

    31

    * Gerar um grfico de estatsticas porportas TCP/UDP

    Criao do banco de dadosping.rrd que armazenar dados acada 5 segundos

    $ rrdtool create ping.rrd step 5\DS:trip:GAUGE:10:U:U \DS:lost:GAUGE:10:U:U \RRA:AVERAGE:0.5:1:100 \

    Script para atualizar o banco dedados (RRD)

    #!/bin/bashping -c 10 $1 > /tmp/pingtrip=tail -1 /tmp/ping|awk -F= {split($2,trip,/);print trip[2]}lost=grep transmitted /tmp/ping | awk -F, {split($3,lost,%);print lost[1]}rrdtool update ping.rrd N:${trip}:${lost}

    rm -f /tmp/ping

    Gerao do grfico depois de algumtempo de coleta de dados

    $ rrdtool graph ping.png -a PNG -t Estatsticas de ping \ DEF:time=ping.rrd:trip:AVERAGE DEF:perda=ping.rrd:lost:AVERAGE \ AREA:time\#ff8e05 AREA:perda\#ffff05:Perda mdia: \ -s 1031018645 -e 1031018825 -v Nmero de Pacotes \

    GPRINT:perda:AVERAGE:%2.2lf %% -w 400 -h 100

    Veja o grfico na pgina 32/Fig.01

    Criao do banco de dadosportas.rrd que armazenar dadosa cada 10 segundos

    $ rrdtool create portas.rrd step 10 \DS:www:GAUGE:20:U:U DS:ftp:GAUGE:20:U:U \DS:pop3:GAUGE:20:U:U DS:smtp:GAUGE:20:U:U \DS:dns:GAUGE:20:U:U DS:ssh:GAUGE:20:U:U \RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:1:100 \RRA:MAX:0.5:1:100 RRA:MAX:0.5:1:100

    A coleta de dados vai depender muitodo tipo de ferramenta que voc vai utilizarpara accounting, em nosso caso, vamosutilizar o iptables.

    Regras para accounting

    # iptables -N portas# iptables -A INPUT -j portas# iptables -A portas -p tcp dport 80 -j ACCEPT# iptables -A portas -p tcp dport 21 -j ACCEPT# iptables -A portas -p tcp dport 110 -j ACCEPT# iptables -A portas -p tcp dport 25 -j ACCEPT# iptables -A portas -p udp dport 53 -j ACCEPT# iptables -A portas -p tcp dport 22 -j ACCEPT

    Script para atualizar o banco dedados portas.rrd

    #!/bin/bashwww=iptables list portas -nv|awk /dpt:80/{print $2}ftp=iptables list portas -nv|awk /dpt:21/{print $2}pop3=iptables list portas -nv|awk /dpt:110/{print $2}smtp=iptables list portas -nv|awk /dpt:25/{print $2}dns=iptables list portas -nv|awk /dpt:53/{print $2}ssh=iptables list portas -nv|awk /dpt:22/{print $2}rrdtool update portas.rrd

    N:${www}:${ftp}:${pop3}:${smtp}:${dns}:${ssh}

    Gerao do grfico depois de algumtempo de coleta de dados

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

    Obs: Se estiver lendo a revista direto de umvisualizador PDF, utilize a ferramenta Zoom para vero cdigo abaixo.

  • www.linuxsecurity.com.br

    32

    $ rrdtool graph portas.png -a PNG -t Estatsticas de portas \DEF:www=portas.rrd:www:AVERAGE DEF:ftp=portas.rrd:ftp:AVERAGE \DEF:pop3=portas.rrd:pop3:AVERAGE DEF:smtp=portas.rrd:smtp:AVERAGE \DEF:dns=portas.rrd:dns:AVERAGE DEF:ssh=portas.rrd:ssh:AVERAGE \AREA:www\#0b07ff:WWW: LINE1:ftp\#ff0707:FTP/TCP: \LINE1:pop3\#35890d:POP3: LINE1:smtp\#ffff00:SMTP: \LINE1:dns\#896c0d:DNS/UDP: LINE1:ssh\#00ff15:SSH: \

    -s 1031100560 -e 1031101550 -v Conexes TCP/UDP -w 400 -h 100

    Que tal os mesmos dados em um grficocom 2 partes:

    Veja o grfico na pgina 32/Fig.03

    OBS: Os scripts demonstrados nesteartigo devem estar agendados para rodar nocron no tempo determinado pela criao doRRD, neste caso, a cada 5 segundos e acada 10 segundos.

    Este artigo est muito longe de ser umtutorial sobre RRDTool, mas eu espero queestes 2 exemplos tenham servido de pontap inicial para os seus futuros grficos.

    Agora voc j tem o conhecimento bsicopara poder montar aquele grfico tosonhado de estatsticas do seu IDS.

    Referncias:

    http://people.ee.ethz.ch/~oetiker/webtools/rrdtool

    http://people.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg-rrd.html

    http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/mailinglists.html

    http://www.quiknet.com/~twitham/wx200/Temp.html#Temp_Month

    http://www.orcaware.com/orca/orca-example/

    Veja o grfico na pgina 32/Fig.02

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

  • www.linuxsecurity.com.br

    33

    Figura 01

    Figura 02

    Figura 03

  • www.linuxsecurity.com.br

    34

    Nome: Rodrigo Pereira TellesIdade: 23 anosProfisso: Administrador deSistemas Unix, Consultor deSegurana e Desenvolvedor deFerramentas GPL

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.dicaslinux.com.br

    email: [email protected]

    Ferramentas GPL Desenvolvidas:.: Webtools:http://www.webtools.linuxsecurity.com.br

    .: SecurityLog2html/netfilter2html:http://webtools.linuxsecurity.com.br

    .: qmail-filter/queue-admin:http://qmail.linuxsecurity.com.br

    Mantenedor/Desenvolvedor do contedo do site:http://www.dicaslinux.com.br

    Colunista, desenvolvedor, e representanteda LinuxSecurity Brasil Solutions:http://www.linuxsecurity.com.br

    Palestrante da III ExpoSALT (Exposio deSistemas Alternativos) no Rio de Janeiro,sobre Webtools e incentivo aodesenvolvimento de sistemas alternativos

    Palestrante do III Forum Internacional de Soft-ware Livre, em Porto Alegre, sobre LIDS

  • www.linuxsecurity.com.br

    35

    Construindo filtros para o qmailpor Diego Linke - Gamk

    Nome: Diego Linke - GamkIdade: 20 anosProfisso: System/NetworkAdministrator

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.gamk.com.br

    email: [email protected]

    Neste artigo irei abordar como vocmesmo pode criar os seus softwares de filtrosde e-mails para o qmail. No abordareisoftwares prontos e sim exemplos para quevoc possa fazer o seu, do jeito que bementender.

    Para que possa entender bem esteartigo, fortemente recomendado quedomine a estrutura do qmail, para obtermelhores detalhes visite:

    http://www.nrg4u.com/qmail/the-big-qmail-picture-103-p1.gif

    Ns iremos trabalhar basicamente comdois tipos de filtro. O primeiro (quechamaremos no artigo de tipo 1) ser o quefuncionar antes do qmail-queue, sendoassim ele ser vlido para todas asmensagems que passarem por este servidor.J o segundo (que chamaremos no artigo detipo 2), funcionar com o qmail-local, sendoassim para um usurio especfico.

    Tipo 1

    Basicamente quando chega um e-mailatravs do SMTP o qmail trabalha:

    qmail-smtpd -> qmail-queue -> qmail-send ...

    Quando um e-mail est saindo doservidor (enviado por um usurio local) oqmail trabalha:

    qmail-inject -> qmail-queue -> qmail-send ...

    Ns iremos fazer um software que

    trabalhe antes do qmail-queue e que, seestiver tudo OK, passe por STDIN (Entradapadro) para o processo do qmail-queueoriginal.

    Vejamos este exemplo, escrito em AWK(este exemplo foi baseado em pedaos docdigo do qmail-filter):

    #!/usr/bin/awk -f

    BEGIN { IGNORECASE=1 QMAILQUEUE=/var/qmail/bin/qmail-queue-old getline pid < /dev/pid file_tmp=(/tmp/email. pid) r=(getline < file_tmp) if (r == -1) { t=system(/usr/bin/touch file_tmp)

    Atualmente Consultor de Segurana e Diretor deTecnologia da Web4ever Solutions.

  • www.linuxsecurity.com.br

    36

    } if (t != 0) { exit 81 } header = 1 achei = 0}

    { if ($0 ~ /^$/) { header = 0 } if (header) { if ($0 ~ /^Subject: Branca deneve\ *$/) { achei = 1 exit 31 } if ($0 ~ /^Subject: I Loveyou\ *$/) { achei = 1 exit 31 } } print >> file_tmp}

    END { if (achei == 0) { system(/bin/cat file_tmp| QMAILQUEUE) } system(rm -f file_tmp)}

    Para instalarmos deveramos realizar asaes (levando em considerao que ele sechama teste.awk) :

    cd /var/qmail/binmv qmail-queue qmail-queue-oldcp PATH_DO_ARQUIVO/teste.awk .chown qmailq:qmail teste.awkchmod 6755 teste.awkln -s /var/qmail/bin/teste.awkqmail-queue

    Este exemplo muito simples, ele est

    comparando apenas no cabealho damensagem as expresses regulares acima(para sabermos quando acabou o cabelhoda mensagem, procuramos pela primeiralinha em branco da mensagem).

    Perceba tambm que a varivelIGNORECASE setada no inicio do cdigopara 1, ou seja, todas as expressesregulares usadas no cdigos so case-insensitive.

    Sobre os exit codes usados noprograma:

    81 = Internal bug31 = Mail server permanently re-jected message

    Caso queira alterar estas mensagems,edite o arquivo qmail.c do source do qmail erecompile o qmail. Existe a possibilidadeainda de se personalisar alguns exit codes(63,64,65... entre outros) para mensagemspersonalizadas quando o e-mail for barradopor ter um subject invlido ou um arquivoinvlido.

    Veja um exemplo de um e-mail sendobarrado:

    (casa/ttyv2:~)> telnet 192.168.1.225Trying 192.168.1.2...Connected to diego.Escape character is ^].220 GAMK House Machine - MailServer ESMTPmail from: [email protected] okrcpt to:[email protected] ok

  • www.linuxsecurity.com.br

    37

    data354 go aheadFrom: Diego Linke

    To: Renato Langona

    Subject: BRANCA de NeVe

    Teste do filtro de e-mail

    testando

    .

    554 mail server permanently re-jected message (#5.3.0)

    Como vocs puderam observar, a grandevantagem da filtragem entre o qmail-smtpde o qmail-queue que o e-mail filtrado naporta. Assim sendo caso o e-mail sejarejeitado, nem chegar a entrar na fila(queue) para o processo de entrega.

    Tipo 2

    Neste segundo tipo, os filtros seroaplicados junto ao qmail-local, portanto elesserviro apenas para um usurio.

    Ns iremos colocar dentro do HOME dousurio um arquivo chamado .qmail. Atravsdele iremos chamar programas externos.

    Veja um exemplo de .qmail do usuriogamk:

    |/var/qmail/bin/no_html./Maildir/

    No arquivo no_html temos um pequeno

    Shell Script para avisar (e no barrar) aspessoas que enviam e-mail em HTML paravoc:

    #!/bin/sh

    DOMINIO=gamk.com.brUSUARIO=gamk

    msg_ok () {echo From: Diego Linke - GAMK

    echo To: $SENDERecho Subject: E-mail em HTMLecho echo Oie $SENDER,echo echo Esta mensagem e

    automatica!echo echo Estou enviando esta

    mensagem pois voce me enviou um e-mail com formato HTML e isso naome agrada muito! Por favor retireesta opcao do seu cliente de e-mail.

    echo Obrigado,echo echo Diego Linke -

    [email protected]}

    html_ok () {msg_ok | /var/qmail/bin/qmail-

    inject -f$USUARIO@$DOMINIO$SENDER}

    tmpfile=/tmp/mail_html_tmp$$cat - > $tmpfile

    HTML=0

  • www.linuxsecurity.com.br

    38

    HTML=egrep -i ^Content-Type:Text/Html $tmpfile | wc -lif [ $HTML -ne 0 ]; then

    html_okfi

    rm -f $tmpfile

    exit 0

    Este exemplo muito simples. Quandoum e-mail que contem HTML chegar noservidor e o qmail-local for entregar amensagem, o servidor enviar umamensagem para o remetente avisando queno agradvel receber este tipo de e-mail.

    A varivel SENDER setada pelo qmailcom o e-mail do remetente.

    Agora veremos um outro exemplo emShell Script, porm para bloquear extenesde arquivos usando o mesmo .qmail:

    #!/bin/sh

    msg_ok () { echo Arquivo Proibido!}

    ext_ok () { case $ATTYPE in VBS | BAT | COM| EXE) msg_ok exit 100;; *) ;; esac

    }

    ATTACHTYPE=grep name= - | awkBEGIN {FS=.}; {printtoupper($NF)} | cut -c -3for ATTYPE in $ATTACHTYPE; do

    ext_ok $ATTYPEdone

    exit 0

    Perceba que existe um exit code 100que indica para o qmail parar a entrega!

    Agora vejamos como fica o arquivo.qmail usando o aviso para e-mails em HTMLe o bloqueio de extenes:

    |/var/qmail/bin/no_html|/var/qmail/bin/no_att./Maildir/

    Concluso

    Conclui-se que o qmail alm de ser umtimo MTA, tem um timo sistema modular,permitindo criarmos ferramentas com vriosfins (filtros, monitoramento...) de maneirafcil e rpida e principalmente eficaz.

    Espero que tenham gostado, e quepassem, com base neste artigo, adesenvolver novas ferramentas para estepoderoso MTA.

  • www.linuxsecurity.com.br

    39

    Enriquecendo os Logs do seu sistema Unix e Facilitando a Auditoria Parte 2por Renato Murilo Langona

    Em meu artigo para a primeira edioda LinuxSecurity Magazine, repasseiinformaes a respeito de um enriquecedorde logs conhecido (o IPPL) e de umanalisador de logs em tempo real (oLogSurfer).

    Nesse segundo artigo da srie, pretendorepassar aos estimados leitores, informaespertinentes a respeito de outra ferramentaque pode ser de grande auxlio na auditoriade seus servidores, o Syslog-NG.

    Como sempre, esse artigo est bemlonge de ser suficiente como nica fonte deinformaes a respeito do syslog-ng. O queproponho nesse pequeno e simples artigo demonstrar o funcionamento bsico domesmo para estimular o estimado leitor abuscar maiores informaes, seja no prpriosite do desenvolvedor, atravs da troca deinformaes com outros profissionais ou novasto mar de conhecimento que pode sernavegado atravs da Web.

    Syslog-ng (Syslog New Generation)

    O syslog-ng um excelente programadesenvolvido por Balzs Scheidler ecolaboradores da comunidade, mantido pelaempresa Balabit, sendo uma alternativa aosyslog comum encontrado como padro namaioria dos sistemas unix conhecidos hoje.

    Mas em que aspectos exatamente osyslog-ng inovador ou melhor?

    Como principais funcionalidades equalidades o syslog-ng possui fcil e flexvelconfigurao, possibilidade de filtragem decontedo atravs da utilizao de expressesregulares (alm da possibilidade de utilizao

    das conhecidas prioridades e facilities dosyslog), portabilidade, melhor performancepara logging remoto e, em desenvolvimento,criptografia j integrada e checagem deintegridade de dados. Por isso o syslog-ngvem suprir algumas necessidades de nossobom e velho syslog.

    Instalao

    Para esse modesto artigo, utilizarei a ltimaverso estvel do syslog-ng disponvel nomomento em que escrevo o mesmo.

    Trata-se da verso 1.4.16. Precisaremostambm da libol 0.2.23, uma biblioteca escritapelo prprio autor do syslog-ng e necessria aele. Ambos os pacotes podem ser obtidosatravs dos endereos:

    http://www.balabit.hu/downloads/syslog-ng/stable/syslog-ng-1.4.16.tar.gz

    http://www.balabit.hu/downloads/libol/0.2/libol-0.2.23.tar.gz

    A compilao e a instalao do syslog-ng so extremamente simples (como amaioria das ferramentas *nix disponveishoje). Para tal, primeiramentedescompactamos a libol-0.2.23.tar.gz emum diretrio temporrio e utilizamos a trade(./configure && make && make install)para a compilao e instalao.

    Se nenhum erro ocorreu, passamosagora para a compilao e instalao doprprio syslog-ng. Descompactamos a fontesyslog-ng-1.4.16.tar.gz em um diretriotemporrio e novamente:

    # ./configure && make && make install

    Vale lembrar que a instalao da libol

  • www.linuxsecurity.com.br

    40

    no obrigatria, bastando que vocdescompacte a mesma em um diretriotemporrio e utilize o script configure dosyslog-ng com a opo:

    --with-libol=/diretrio/temporrio/libol-0.2.3

    Se tudo ocorreu bem, deveremos teragora uma instalao padro do syslog-ngem nosso sistema.

    Configurao

    Aps uma instalao padro do syslog-ng, deveremos ter como binrio de nossoservio de logs o /usr/local/sbin/syslog-ng.

    O diretrio padro do arquivo deconfigurao do syslog-ng (o syslog-ng.conf)ser o /etc/syslog-ng. A documentao dosyslog-ng indica que o diretrio deconfigurao padro (sem a alterao denenhuma de suas opes) $PREFIXO/etc,porm em todas as minhas instalaes odiretrio de configuraes do syslolg-ng foiindicado como o /etc/syslog-ng.

    Caso o estimado leitor deseje alteraresse diretrio, utilize a opo --sysconfdirdo script configure. De qualquer forma, odiretrio de configuraes tambm no criado automaticamente aps a instalao.Aps criarmos, ento, o diretrio para oarquivo de configuraes (mkdir /etc/syslog-ng) podemos iniciar a configuraode nosso recm instalado syslog-ng.

    Se o estimado leitor tiver uma certapressa para observar o funcionamento deseu syslog-ng e no quiser logo de inciocustomiz-lo, poder encontrar no diretriocontrib do cdigo fonte do mesmo uma sriede arquivos de configuraes prontos parautilizao em sistemas Linux, SunOS e HP-UX e que devero servir para um syslog-ng

    totalmente funcional. Nesse mesmodiretrio tambm podero ser encontradosos scripts para inicializao do servio delogs caso seja necessrio.

    Para a criao de um novo syslog-ng.conf devemos entender como asmensagens so tratadas pelo syslog-ng,qual o caminho que elas seguem at seremregistradas.

    Primeiramente deveremos ter umafonte de registro (chamada source), de ondeo syslog-ng ir obter as mensagens, entoteremos os filtros que sero aplicados smensagens obtidas dessa fonte (lembre-seque essa uma das qualidades maisimportantes do syslog-ng) e, finalmente,um destino para o registro das mensagens,mais comumente representado por umarquivo:

    FONTE (/dev/log)

    FONTE (/xxx/log)

    FILTROS DESTINO (/var/log/messages)

    DESTINO (/VAR/LOG/CRONTAB)

    DESTINO (/var/log/maillog)

    Pelo simples diagrama acima podemosperceber que, a partir de uma ou mais fontesdo sistema, as mensagens chegaro aosyslog-ng e, dependendo dos filtros eregras configuradas no mesmo, essasmensagens sero direcionadas aos seusrespectivos destinos. Devo acrescentar queo responsvel por organizar e conectar fonte(source), filtros (filter) e destino(destination) a diretiva log.

    Temos ento:

    Source: indica a fonte ou as fontes deonde o syslog-ng poder obter asmensagens do sistema paraprocessamento e registro. Uma coleo

    DIRETIVA LOG

  • www.linuxsecurity.com.br

    41

    de drivers garante que diferentessistemas (linux, bsd, bsdi, solaris, hp-ux,etc) possam utilizar o syslog-ng de acordocom o seu prprio funcionamento. nocaso do linux (nosso exemplo),utilizaremos o driver para socketsAF_UNIX, SOCK_STREAM (unix-stream).

    Sintaxe:

    source { driver(parmetros); driver(parmetros);...};

    Filters: Responsveis por rotear asmensagens dentro do syslog-ng deacordo expresses e funes (host(),match(), level(), program(), facility()).

    Sintaxe:

    filter {expresso; };

    Destination: Aps passar pela fase defiltragem e, de acordo com a regracorrespondente a uma dada mensagem,o destination ser pura e simplesmente oindicador do destino de registro dessamensagem, podendo ser no apenas umarquivo como tambm um banco de dadosou um host remoto.

    Sintaxe:

    destination {driver-destino(parmetros); driver-destino(parmetros); ...};

    Log: Responsvel por organizar e unirsource, filter e destination.

    Sintaxe:

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

    log { source(f1); source(s2); ... filter(f1); filter(f2); ...destination(d1); destination(d2); ... flags(flag1[, flag2...]); };

    Irei dar um exemplo prtico de arquivosyslog-ng.conf genrico para Linuxexplicativo para entendermos da melhorforma possvel como criar nosso prprioarquivo de configuraes:

    Veja na prxima pgina

    Nome: Renato Murilo LangonaIdade: 23 anosProfisso: Analista/Consultor deSegurana da Informao.

    Ficha do Autor

    Informaes Adicionais

    Site: http://www.linuxsecurity.com.br

    email: [email protected]

    Empresa:LinuxSecurity BrasilSolutions S/C Ltda

    Fundador e mantenedor do projeto nacionalLinuxSecurity Brasil e da revista LinuxSecurityMagazine.

  • www.linuxsecurity.com.br

    42

    # Arquivo exemplo de syslog-ng.conf# LinuxSecurity Magazine# 03/08/2002

    # Opes para o funcionamento do syslog-ng

    options { sync (0); time_reopen (10); use_dns (no); use_fqdn (no); create_dirs (yes); };

    # Fonte de obteno das mensagens

    source src { unix-stream(/dev/log); unix-stream(/chroot/named/dev/log maxconnections(10)); internal(); };

    # Configurao de destinos

    destination authlog { file(/var/log/messages.auth); };destination syslog { file(/var/log/messages.syslog); };destination cron { file(/var/log/crontab); };destination daemon { file(/var/log/messages.daemon); };destination kern { file(/var/log/messages.kern); };destination lpr { file(/var/log/messages.lpr); };destination maillog { file(/var/log/maillog); };destination mail { file(/var/log/maillog); };destination user { file(/var/log/maillog); };destination uucp { file(/var/log/messages.uucp); };destination messages { file(/var/log/messages); };destination console { usertty(root); };destination console_all { file(/dev/tty8); };destination debug { file(/var/log/debug); };destination hostremoto {tcp(127.0.0.1 port(6666));};

    # Configurao de filtros

    filter f_authpriv { facility(auth, authpriv); };filter f_syslog { not facility(auth, authpriv) and not facility(mail); };filter f_cron { facility(cron); };filter f_daemon { facility(daemon); };filter f_kern { facility(kern); };filter f_lpr { facility(lpr); };filter f_mail { facility(mail); };

  • www.linuxsecurity.com.br

    43

    filter f_user { facility(user); };filter f_uucp { facility(cron); };filter f_news { facility(news); };filter f_debug { not facility(auth, authpriv, news, mail); };fillter f_emergency { level(emerg); };filter f_info { level(info); };filter f_notice { level(notice); };filter f_warn { level(warn); };filter f_crit { level(crit); };filter f_err { level(err); };filter f_cother { level(debug, info, notice, warn) or facility(daemon, mail); };

    # Diretivas Log

    log { source(src); filter(f_authpriv); destination(authlog); };log { source(src); filter(f_syslog); destination(syslog); };log { source(src); filter(f_cron); destination(cron); };log { source(src); filter(f_daemon); destination(daemon); };log { source(src); filter(f_kern); destination(kern); };log { source(src); filter(f_lpr); destination(lpr); };log { source(src); filter(f_mail); destination(mail); };log { source(src); filter(f_user); destination(user); };log { source(src); filter(f_uucp); destination(uucp); };log { source(src); filter(f_mail); destination(maillog); };log { source(src); filter(f_debug); destination(debug); };log { source(src); filter(f_messages); destination(messages); };log { source(src); filter(f_emergency); destination(console); };log { source(src); destination(hostremoto); };

    Comeamos nosso arquivo configurandoas opes de funcionamento do syslog-ng.A lista de opes possveis bem mais vastado que as que utilizamos, incluindopossibilidades de controle de permisses(perm) e ownership (owner, group) dearquivos, porm utilizei apenas algumas quejulgo mais usuais nesse artigo:

    sync : Indica o nmero de linhas a sereminseridas no buffer antes de seremregistradas. No nosso caso nenhuma.

    time_reopen: tempo em segundos quenosso daemon deve aguardar antes queuma conexo perdida sejareestabelecida.

    use_dns: Permite a utilizao ou no doresolvedor de nomes locais para oregistro em logs. Nesse caso selecionei'no' para evitar possveis ataques Denialof Service (DoS) gerados pelo altotrfego do servidor.

    use_fqdn: Possibilita adicionar o nomecompleto de uma mquina ao invs deapenas seu hostname. Essa opo podeser til no caso de registro remoto dediversos servidores de redes diferentes.

    create_dirs: Permite que diretrios dosarquivos de destino dos registros possamser criados caso nao existam.

  • www.linuxsecurity.com.br

    44

    Logo aps configurarmos as opes defuncionamento de nosso syslog-ng, partimospara a indicao da fonte (source) de ondeele ir obter as mensagens a seremregistradas.

    No caso de nosso exemplo para Linux,indicamos ao syslog-ng que obtenha asmensagens do sistema atravs do dispositivo/dev/log e /chroot/named/dev/log. Oprimeiro para mensagens de servios denossa mquina e o segundo especfico paramensagens de um servidor DNS chrooted,sendo que nesse segundo caso tambmutilizei a opo maxconnections(), que spode ser utilizado com unix-stream e limitao nmero de conexes simultneas abertasafim de evitarmos DoS.

    Voc poderia tambm utilizar um outroidentificador para a fonte chrooted casoqueira aplicar outras opes, por exemplo:

    source chrooted_jail { unix-stream ("/chroot/named/dev/log"maxconnections(10));

    Obs: Se estiver lendo a revista direto de um visualizadorPDF, utilize a ferramenta Zoom para ver o cdigoabaixo.

    Nossa configurao de fonte tambminclui o internal(), de onde provm todasas mensagens internamente geradas pelosyslog-ng, importantes para avaliao deerros e funcionamento de nosso servio delogs.

    Aps escolhermos as fontes de onde osyslog-ng obter as mensagens a seremregistradas, partimos para a configuraodos destinos e filtros.

    Primeiramente identificamos cada umdos destinos (a identificao ser importanteposteriormente na utilizao da diretiva log)e, nesse exemplo, utilizamos o driver file,um dos mais importantes do syslog-ng (e

    mais utilizados), que nos permite registraras mensagens em um arquivo do sistema etambm o usertty, que permite que asmensagens sejam enviadas ao terminal emque determinado usurio esteja logado (nonosso caso o root). claro que no serotodas as mensagens enviadas ao consoledo usurio root, iremos utilizar asfuncionalidades de filtragem do syslog-ngpara que apenas as crticas sejam.

    Utilizamos nesse arquivo tambm odestination com a opo para enviarmoslogs para um ou mais servidores remotos:

    destination hostremoto {tcp("127.0.0.1" port(6666));};

    Indicamos o protocolo, o host e a porta.O syslog-ng possibilita a utilizao de tcpou udp, por isso devo lembrar que o leitordeve verificar se a porta utilizada para escutaj no est sendo utilizada (nesse nossocaso, 6666 corresponde porta reservadapara servios IRC, desabilitados nesseservidor). Em nosso exemplo e atravsdessa opo, podemos fazer com que onosso syslog-ng envie mensagens a umhost remoto de forma criptografada atravsde um forwarding ssh ou stunnel porexemplo, por isso da utilizao de 127.0.0.1como host destino. Por isso a verificaolocal da porta em uso ou no

    Lembro que o leitor ter outras opespara o destination, utilizo em nossoexemplo as mais usuais.

    Partimos agora para a configurao dosfiltros a serem aplicados, que iro decidirque mensagens iro para quais destinos.As funes disponveis que utilizamos parafiltragem em nosso exemplo de configuraodo syslog-ng so:

  • www.linuxsecurity.com.br

    45

    facility: filtra mensagens de acordo comas facilidades listadas.

    Level ou priority: filtra baseado naprioridade ou no nvel indicado.

    Lembrando que podemos usar tambmos booleanos NOT (NO), AND (E) e OR(OU), de acordo com nossas necessidadesna construo dos filtros.

    Para finalizar iremos organizar tudoutilizando a diretiva log. As diretivas logso lidas na ordem em que aparecem emnosso arquivo de configuraes e iroconectar nossos componentes source, filtere destination para que as mensagens obtidassejam registradas da forma como desejamos.Temos por exemplo:

    log { source(src); destination(hostremoto); };

    Que ser o responsvel por enviar asmensagens obtidas atravs da fonte src eaps serem devidamente filtradas pornossos filters ao destination hostremoto(explicado acima). Tendo nosso tnel criadoentre o host local e um host remoto, nossasmensagens sero enviadas de formacriptografada e mais segura do que se fossemenviadas diretamente a esse host remoto.

    Outro exemplo log de nossaconfigurao :

    log { source(src); filter(f_emergency); destination(console); };

    Essa diretiva far com que todas asmensagens obtidas atravs da fonte src efiltradas pelo filter indicado comof_emergency (fillter f_emergency {level(emerg); };) sejam enviados aodestino indicado como console. O filter nessecaso realiza filtragem baseado no nvel ouprioridade da mensagem obtida e odestination encaminha a mensagem para o

    terminal onde o usurio root est logado(isso de acordo com nossas configuraes).

    As configuraes que fizemos sosimples e meramente ilustrativas apenaspara demonstrar o poder de gerenciamentode logs que o syslog-ng oferece. Diversosarquivos exemplos de configuraes podemser encontrados tambm no diretrio docsdas fontes do syslog-ng para uma anlisemais aprofundada.

    Utilizao

    Antes de iniciarmos a utilizao dosyslog-ng aps sua configurao, devemosdesabilitar em nosso sistema os serviossyslogd e klogd para evitarmos quaisquerconflitos. Logo aps, basta executarmos obinrio do syslolg-ng:

    # /usr/local/sbin/syslog-ng

    Teremos, ento, o incio do registro delogs em nosso servidor de acordo com nossasnecessidades e configuraes.

    Repito que o que foi demonstrado aquirepresenta uma mnima poro das opes,utilizaes e configuraes possibilitadaspor essa excelente ferramenta Open Source.Convido novamente o estimado leitor aaprofundar seus conhecimentos atravs depesquisas e estudos, dividindo sempre quepossvel suas experincias com acomunidade.

    Espero que tenham gostado do artigoe que o mesmo tenha sido til. Sintam-semeus convidados para entrarem em contatoatravs de meu email. At a prxima edioda LinuxSecurity Brasil! :-)

    Forte abrao a todos...

  • www.linuxsecurity.com.br

    46

    RAID via Software em GNU/Linux - Recursos, Possibilidades e Apliaes

    Introduo

    Antes de entrar em detalhes sobre aimplantao do recurso de RAID via software,presente no Kernel Linux, sero mostradosalguns conceitos bsicos sobrefuncionamento, aplicao, preparao doambiente e migrao.

    Algumas opes sobre termos usadosneste artigo:

    disco => partio ou disco fsicoarray => conjunto de discos queformam um dispositivo RAID

    RAID (Redundant Array of IndependentDisks) um recurso que possibilita AltaDisponibilidade (que daqui em diante sertratado como HA - High Availability), somade dispositivos lgicos em um nicodispositivo fsico alm de suporte atolerncia a falhas (presente em alguns nveissomente), recursos estes implementados noKernel Linux.

    Os nveis RAID presentes no KernelLinux so:

    * Linear mode* Raid-0* Raid-1* Raid-4* Raid-5

    Nestes nveis apresetandos, pode-seainda lanar mo de recursos e configuraesadicionais, relacionadas a otimizao,incremento da HA e at mesmo forar umafalha de disco. As opes utilizadas nosnveis RAID so:

    * Persistent Superblock

    Sintaxe: persistent-superblock N

    Onde: N = Nmero de Super-blocos

    A opo persistent-superblock utilizada para resolver um problemaexistente no boot do sistema a partir dedispositivos RAID.

    Isto ocorre devido a umaparticularidade presente no initscript, querequer o arquivo de tabelas RAID (/etc/raidtab) para montagem dos dispositivos,sendo assim, quando um dispositivo RAID inicializado com a opo persistent-superblock, um superbloco especial gravado no incio de cada um dos discosparticipantes do array, possibilitando assimo boot.

    * Chunk Size

    Sintaxe: chuck-size N

    Onde: N = Tamanho em Kilobytes

    A opo chunk-size utilizada paraoptimizao e est presente em todos osnveis, apesar de no ser necessria nemutilizada nos nveis Linear e RAID-1 (Kernel2.4).

    Com valor em Kilobytes, o Chunk Sizeoferece a possibilidade do incrementosignificativo da performance em dispositivosRAID, j que no possvel gravar ao mesmotempo em mais de um dispositivo de formacontnua, ou seja, no possvel gravar deforma totalmente paralela em todos osdiscos. Como exemplo, 1 byte (8 bits), nopode ser gravado fazendo-se com que 4 bits

    por Jos Roberto Kerne

  • www.linuxsecurity.com.br

    47

    sejam gravados no primeiro disco, 1 bit sejagravado no segundo e os demais 3 bits noterceiro disco. Esta uma limitao dehardware (salvo interfaces controladorasRAID onde a gravao feita via hardwarede forma independente).

    Assim, o chunk-size define o menor tamanhode dados que pode ser gravado por vez. Emsistemas onde o tamanho mdio de arquivos pequeno, pode-se usufruir da vantagemde utilizao de chunk size menor, o queincrementar a performance de gravao. Emsistemas onde o tamanho mdio de arquivos maior, pode-se usufruir da vantagem deutilizao de chunk-size maior, o que podetambm incrementar a performance.

    Exemplificando: para chunk-size 4, tem-seos 4 primeiros kylobytes gravados no primeirodisco e os prximos 4 kilobytes gravados nosegundo, e assim sucessivamente.

    Uma observao importante que cadasistema (conjunto de Hardware + SistemaOperacional + Particionamento) tem suasparticularidas, e alguns testes deperformance com chunk-sizes diferentespodem e devem ser realizados.

    * Space Disk / NR Spare Disks

    Sintaxe: spare-disk N

    Onde: N = Nmero do disco reserva no array

    Sintaxe: nr-spare-disks N

    Onde: N = Nmero de discos reserva

    Estas opes so utilizadas em conjunto eesto relacionadas a discos reserva, um

    recurso possvel para aplicao emdispositivos RAID. Discos reserva soutilizados em caso de falhas em um (oumais) discos do array, possibilitando amigrao de forma automtica dos dadospara o disco de espera.

    Exemplo de utilizao:

    Arquivo: /etc/raidtab

    raiddev /dev/md1raid-level 5nr-raid-disks 3nr-spare-disks 1persistent-superblock 1chunk-size 32device /dev/sda1raid-disk 0device /dev/sdc1raid-disk 1device /dev/sdd1raid-disk 2device /dev/sdb1spare-disk 0

    Nota-se no exemplo acima que a sequnciade discos de espera comea a contar de 0(zero), da mesma forma com um disco normaldo array. Um detalhe importante a se notartambm que o disco de espera no deveser contado como disco pertencente aoarray na opo nr-raid-disks.

    * Failed Disk

    Sintaxe: failed-disk N

    Onde: N = Nmero do disco do array

    A opo failed-disk utilizada paraforar a falha de um ou mais discosparticipantes do array. Geralmente utilizado

  • www.linuxsecurity.com.br

    48

    para testes de falha no sistema, ourecuperao em caso de falhas em algumdispositivo fsico. A opo failed-disk foraa eliminao do disco especificado,carregando a dispositivo RAID normalmente.

    Exemplo de utilizao:

    Arquivo: /etc/raidtab

    raiddev /dev/md0raid-level 1nr-raid-disks 2persistent-superblock 1chunk-size 16device /dev/sda1raid-disk 0device /dev/sdc1raid-disk 1failed-disk 1

    Note que no exemplo acima foramempregados 2 (dois) discos no array, sendodisco 0=/dev/sda1 e disco 1=/dev/sdc1.Eliminou-se do array o disco 1 (sdc1),forando a falha via configurao.

    Outra funo extremamente til daopo failed-disk a possibilidade derecuperao posterior em caso de testesfeitos em um dos discos de forma separada.

    Sero de extrema importncia paratestes os comandos raidhotadd eraidhotremove, que sero mostrados emtpico especfico neste artigo.

    Consideraes importantes

    Quando se fala em dispositivo RAID,deve-se atentar que o discos participantesno mais sero acessados de formaindependente. Por padro, dispositivos RAIDso acessados atravs de /dev/mdN.

    Onde: N = nmero sequencial do dispositivoRAID.

    Ainda no exemplo acima, no maissero utilizados (leia-se montados) de formaindependente os discos (sda1) ou (sdc1),passando a utilizar-se o array atravs dodispositivo (/dev/md0).

    Os nveis RAID

    Sero tratados a seguir, cada um dosnveis RAID de forma independente, citandoexemplos de utilizao.

    Linear mode - Introduo

    O nvel RAID Linear comporta o recursode combinao de dois ou mais discos emum nico dispositivo fsico. Uma observaoimportante aqui, que a forma de utilizao(Gravao/Leitura), baseia-se no modosequencial, ou seja, o segundo discosomente ser utilizando quando primeiroestiver totalmente em cheio, e assimsucessivamente.

    O nvel RAID Linear no provredundncia ou tolerncia a falhas, sendoassim um nvel de RAID pouco usado e muitoespecfico.

    Linear mode - Configurao

    Um exemplo de configurao de umdispositivo RAID em modo linear pode serobservado a seguir:

  • www.linuxsecurity.com.br

    49

    Arquivo: /etc/raidtab

    raiddev /dev/md0raid-level linearnr-raid-disks 2chunk-size 32persistent-superblock 1device /dev/sda1raid-disk 0d