Community Edition 83 - Linux Magazine Online

linuxmagazine.com.br

Community Edition 83 - Linux Magazine Online

Expediente editorialDiretor GeralRafael Peregrino da Silvarperegrino@linuxmagazine.com.brEditoresFlávia Jobstraibizerfjobs@linuxmagazine.com.brKemel Zaidankzaidan@linuxmagazine.com.brEditora de ArteLarissa Lima Zaninillima@linuxmagazine.com.brEstagiárioFelipe Brumatti Sentelhasfsentelhas@linuxmagazine.com.brColaboradoresAlexandre Borges, Alexandre Santos, Augusto Campos,Charly Kühnast, Eva-Katharina Kunst, Greg Kroah-Hartman, Jon ‘maddog’ Hall, Jürgen Quade, KlausKnopper, Kurt Seifried, Ralf Spenneberg, Stefan Schwarz,Thorsten Scherf, Tim Schürmann, Udo Seidel, Zack Brown.TraduçãoEmerson Satomi, Joice Käfer.RevisãoAna HungerEditores internacionaisUli Bantle, Andreas Bohle, Jens-Christoph Brendel,Hans-Georg Eßer, Markus Feilner, Oliver Frommel,Marcel Hilzinger, Mathias Huber, Anika Kehrer,Kristian Kißling, Jan Kleinert, Daniel Kottmair,Thomas Leichtenstern, Jörg Luther, Nils Magnus.Anúncios:Rafael Peregrino da Silva (Brasil)anuncios@linuxmagazine.com.brTel.: +55 (0)11 3675-2600Penny Wilby (Reino Unido e Irlanda)pwilby@linux-magazine.comAmy Phalen (América do Norte)aphalen@linuxpromagazine.comHubert Wiest (Outros países)hwiest@linuxnewmedia.deDiretor de operaçõesClaudio Bazzolicbazzoli@linuxmagazine.com.brNa Internet:www.linuxmagazine.com.br – Brasilwww.linux-magazin.de – Alemanhawww.linux-magazine.com – Portal Mundialwww.linuxmagazine.com.au – Austráliawww.linux-magazine.es – Espanhawww.linux-magazine.pl – Polôniawww.linux-magazine.co.uk – Reino Unidowww.linuxpromagazine.com – América do NorteApesar de todos os cuidados possíveis terem sido tomadosdurante a produção desta revista, a editora não é responsávelpor eventuais imprecisões nela contidas ou por consequênciasque advenham de seu uso. A utilização de qualquer material darevista ocorre por conta e risco do leitor.Nenhum material pode ser reproduzido em qualquer meio, emparte ou no todo, sem permissão expressa da editora. Assume-seque qualquer correspondência recebida, tal como cartas,emails, faxes, fotografi as, artigos e desenhos, sejam fornecidospara publicação ou licenciamento a terceiros de formamundial não-exclusiva pela Linux New Media do Brasil, a menosque explicitamente indicado.Linux é uma marca registrada de Linus Torvalds.Linux Magazine é publicada mensalmente por:Linux New Media do Brasil Editora Ltda.Rua São Bento, 500Conj. 802 – Sé01010-001 – São Paulo – SP – BrasilTel.: +55 (0)11 3675-2600Direitos Autorais e Marcas Registradas © 2004 - 2011–:Linux New Media do Brasil Editora Ltda.Impressão e Acabamento: RR DonnelleyDistribuída em todo o país pela Dinap S.A.,Distribuidora Nacional de Publicações, São Paulo.Atendimento Assinantewww.linuxnewmedia.com.br/atendimentoSão Paulo: +55 (0)11 3675-2600Rio de Janeiro: +55 (0)21 3512 0888Belo Horizonte: +55 (0)31 3516 1280ISSN 1806-9428Impresso no BrasilEstatística e experiênciaTodo mundo se escandalizou recentemente com a invasão dosservidores que hospedam o ambiente de desenvolvimento do Linux.A invasão ocorreu e passou desapercebida por 17 dias, tempo duranteo qual as senhas dos desenvolvedores foram registradas – atravésdo uso de um cliente SSH modificado pelos invasores, instalado nasmáquinas comprometidas. O código do Linux propriamente dito teriapermanecido intacto, uma vez que há um sistema que verifica aintegridade de cada um dos cerca de 40.000 arquivos do código-fontearmazenados nos servidores, e seria impossível realizar qualquer alteraçãoem qualquer um desses arquivos sem que um “alarme” tivessedisparado. Esse sistema verifica a integridade dos arquivos e estádistribuído nas máquinas dos mais de mil desenvolvedores ativos naprogramação do kernel.Ironia do destino, tudo isso ocorreu praticamente à época do lançamentoda versão 3.0 do Linux e da comemoração dos 20 anos doseu desenvolvimento. Como se não bastasse, cerca de uma semanaapós a intrusão nos servidores do kernel, os servidores que hospedama presença na Internet da Linux Foundation, casa-máter do projeto,também foram invadidos. Em ambos os casos, os ataques ocorreramusando uma alteração de um rootkit conhecido pelo codinome Phalanx. Um rootkit é um programa com código mal intencionado queexplora falhas de segurança para obter privilégios administrativos emum sistema operacional e que busca se esconder de softwares de segurançautilizando técnicas avançadas de programação.Apesar de imaginar que os servidores comprometidos fossem umalvo de ataques “apetitoso”, ninguém esperava realmente que issoocorresse. Aliás, normalmente ninguém realmente espera que issoaconteça, até que acontece pela primeira vez. Ficamos todos olhando“com cara de paisagem” e perguntando por que essa ou aquelaprovidência extra, que anteriormente soava altamente complexa edesconfortável – os países de língua inglesa usam um termo interessantepara isso: cumbersome (basta olhar para a origem da palavrapara desconfiar do que se trata) – não foi tomada. Afinal, há váriossistemas de prevenção de ataques e de monitoramento disponíveis.Esse momento de conscientização do problema é crucial. É quandodeixamos de verificar estatísticas – frias e distantes – e passamos a viveruma experiência. Quando ocorre conosco, deixa de ser estatística epassa a ser experiência . É um momento que deve ser aceito com humildade,o máximo de transparência e cabeça fria. Como não ocorreunada de mais grave por conta do ataque, é também um momento derescaldo e de melhoria da infraestrutura de segurança dos servidoresque hospedam o sistema do pinguim, que já se tornou efetivamente abase tecnológica da computação em nuvem e da computação móvel.Demos sorte desta vez! Não poderá haver uma segunda. Espero quetodas as medidas estejam sendo tomadas pela equipe de segurança daLinux Foundation nesse sentido. Caso contrário, não teremos aprendidonada a partir da experiência. E continuaremos a ser estatística... ■EDITORIALRafael Peregrino da SilvaDiretor de RedaçãoLinux Magazine #83 | Outubro de 20113


ÍNDICECAPAif $versão == 3.0 or $tempo >= 20... 31O tempo é implacável e passa igual para todos. Nesses 20 anos, muitosprogramas surgiram e muitos outros desapareceram. Comemoremos,pois o nosso kernel favorito está mais jovem do que nunca!Por dentro do kernel 32Como são as entranhas do kernel Linux 3.0? Analisamosalgumas das melhorias desde a versão 2.6.0 para que vocêaproveite os principais recursos e entenda porque a arquiteturado Linux torna um sistema operacional o estado da arte.Linus Torvalds e o Linux 3.0 38Em junho deste ano, o desenvolvedor do kernel Greg Kroah-Hartman sentou com Linus Torvalds para uma conversaaberta ao público na LinuxCon Japão sobre os 20 anosdo Linux, a condição atual do kernel e seu futuro.4 www.linuxmagazine.com.br


Linux Magazine 83 | ÍNDICECOLUNASKlaus Knopper 08Charly Kühnast 10SEGURANÇAMistura de códigos 72Zack Brown 12Augusto Campos 14Kurt Seifried 16Alexandre Borges 18NOTÍCIASGeral 20➧ Abertas as incrições para a LinuxCon 2011➧ Bada poderá ter seu código abertoCORPORATENotícias 22➧ Novos membros ingressam na Aliança para Virtualização Aberta➧ Ameaças sobre dúbias patentesA mistura de linguagens de programação não deverestringir seu projeto de software. Aprenda a exporobjetos e templates C++ ao código PHP e como registrarchamadas PHP que o código C++ possa utilizar.ANÁLISEMotorola Xoom 42➧ Google compra mais patentes da IBMEntrevista: Christian Cussen 26A onda das redes sociais parece não ter volta. Marketeirosde todo o mundo quebram a cabeça diariamentetentando imaginar como tirar proveito das redes sociaisao tornar suas marcas mais próximas dos clientes. ONing é a ferramenta web que pode ajudá-los nisso.Coluna: Jon “maddog” Hall 28Coluna: Alexandre Santos 30TUTORIALEconomia de energia 68Conheça as chances de o popular tablet Xoom, daMotorola, tornar-se um “matador de iPads”.Troque a rota 48A virtualização com VMware, KVM e Xen chegou parafi car, mas até agora nenhum switch virtual dava suporteà cenários complexos. O Open vSwitch suporta fl uxos dedados, VLA Ns, entroncamento e a agregação de portasexatamente como os principais switches do mercado.Análise detalhada 52O projeto OpenVAS acaba de lançar a versão 4 de seu sistemade avaliação de vulnerabilidades — razão sufi ciente paraverifi car os novos recursos e aprender, na prática, como criarsua própria solução de checagem para seus sistemas.Muitos aplicativos interrompem o processador quando ele tentadormir. O PowerTOP não só identifi ca estes maus elementoscomo também fornece dicas para você se livrar deles.Ganhe agilidade! 72Executar um conjunto de comandos em um grande número desistemas é um problema clássico de administração. O Func dá aosadministradores uma alternativa útil para loops e conexões SSH .O fim está próximo 75No dia a dia, podemos ver o espaço livre disponível emdisco encolhendo cada vez mais. A ferramenta JDiskReportrapidamente identifi ca quem está consumindo mais espaço.REDESAtualização disfuncional 65Atualizações de rotina em uma distribuição Linuxpodem causar alguma dor de cabeça; temos algumasdicas práticas para ajudar na restauração.SERVIÇOSEditorial 03Emails 06Linux.local 78Preview 82Linux Magazine #83 | Outubro de 20115


COLUNAColuna do AugustoObrigado,Michael S. HartO mês de setembro marcou o abrupto fi m da frutíferavida de Michael S. Hart. Conheça quem foi e o quefez este ícone da tecnologia dos anos 70.Omês de setembro marcou o abrupto fim da frutíferavida de Michael S. Hart, que ainda noinício da década de 1970 introduziu o conceitode ebook, mas cujo legado para a liberdade do conhecimentopode ser melhor observado por meio de seuProjeto Gutenberg.Iniciado em 1971, o projeto Gutenberg [1] é um esforçocoletivo de voluntários para oferecer para downloado texto integral de livros para download na Internet,sem custo e na maioria dos casos também oferecendoaos leitores plena liberdade de copiar, redistribuir oumesmo modificar (por exemplo, em traduções, ou adaptaçõespara o teatro) as obras – e isso desde bem antesde começarmos a falar em software livre.Hoje o acervo do projeto Gutenberg é de dezenasde milhares de obras, todas elas disponíveis em umavariedade de formatos: do básico TXT a formatos ricoscomo HTML, PDF e ePub, além de arquivos prontospara a inclusão em boa parte dos leitores de ebooks etablets do mercado.O projeto começou com a publicação de clássicoscomo os de Homero e Shakespeare, mas hoje esteslivros estão organizados em temas variados: agricultura,educação, saúde, história, infantil, romance etc.Entre os mais populares no início de setembro estão oO projeto Gutenberg éum esforço coletivo devoluntários para oferecerpara download o textointegral de livros naInternet, sem custo.indiano Kama Sutra, um dos livros da saga original deSherlock Holmes, “A Arte da Guerra”, “O Príncipe”(de Maquiavel) e vários outros.A disponibilização destes textos é resultado do esforçode voluntários e nasceu do exemplo do próprio MichaelS. Hart, que entre 1971 e 1987 digitou pessoalmente otexto de 313 livros. Até 1989 todos os textos eram resultadode digitação, mas a partir daí os scanners e a tecnologiade reconhecimento ótico de caracteres passoua ter um papel mais relevante no projeto.A sua meta inicial era oferecer gratuitamente ou acusto baixo, até o fim do século XX, o texto dos 10.000livros mais consultados – e se baseava, no que era umaexpectativa na época, de que um dia os computadoresseriam acessíveis ao público em geral. Hoje a meta émais ampla: encorajar a criação e distribuição de ebooks.Hoje o acervo do projeto Gutenberg cresce a umavelocidade de cerca de 50 obras por semana, principalmentecom títulos da literatura ocidental, mas comvariações que incluem até mesmo livros de receitas eobras de referência.Há pelo menos 20 anos sou leitor frequente dos livrosdo projeto Gutenberg e seus afiliados. Recomendoque você faça o mesmo, e também que contribuase puder. Obrigado, Michael S. Hart, por ter semeadoo compartilhamento de tanto conhecimento. Sua partidafoi prematura, mas sua presença continuará pelofruto do seu trabalho e pela lembrança do seu ideal.Descanse em paz. ■Mais informações[1] Projeto Gutenberg: http://www.gutenberg.org/Augusto César Campos é administrador de TI e, desde 1996, mantém osite BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.14www.linuxmagazine.com.br


Matéria | SEÇÃO20 anos de Linuxif $versão == 3.0or $tempo >= 20...O tempo é implacável e passa igual para todos. Nesses 20 anos, muitos programas surgiram e muitosoutros desapareceram. Comemoremos, pois o nosso kernel favorito está mais jovem do que nunca!por Kemel ZaidanSEÇÃOÉtempo de comemorar! Afinal, não é todo dia queo kernel Linux faz 20 anos. Juntamente com seuaniversário, uma nova versão do programa entrouem cena, a versão 3.0; “sem nenhuma novidade especial”,disse Linus, durante o anúncio de lançamento. Mas nãose engane, 20 anos de Linux é uma conquista e tanto.Muitos acharam que não veriam esse dia chegar. Algunsdeles por pensar que a versão 2.6 fosse tender ao infinito euns poucos (privilegiados) por conhecerem o programa atanto tempo, que um dia como esse não passava de umapossibilidade longínqua demais para ser levada em conta.Em 1994, na ocasião do lançamento do Linux 1.0,Torvalds disse que o próximo passo seria “a dominaçãoglobal completa”. Na época, a frase não passava de umapiada, uma vez que o lançamento marcou o suporte arede de dados por parte do kernel (apenas três anos apóso surgimento de sua versão inicial, diga-se de passagem).Dezessete anos depois, a afirmação não parece assim tãoabsurda, afinal o Linux está em praticamente toda parte:nos celulares, nos roteadores, nas TVs de nova geração,nos video games, nos semáforos inteligentes, nas câmerasde segurança e até mesmo em geladeiras [1].Nesse ponto é que o leitor terá prazer de ler o artigo“Por dentro do kernel”, de Eva-Katharina Kunst e JürgenQuade, que relatam os principais avanços da versão2.6.0 até a atual 3.0, em uma verdadeira aula de sistemasoperacionais. Após sua leitura, é possível ter uma boacompreenção do funcionamento básico de um kernelLinux e as razões que fazem dele um dos sistemas maisavançados do mundo, superando outros concorrente.Como relata Linus durante a entrevista que concedeua Greg Kroah-Hartman (outro desenvolvedor do kernel)durante a LinuxCon Japão – e que você poderá conferir naspáginas da Linux Magazine deste mês – o sucesso do Linuxse dá por conta da “persistência e trabalho duro de pessoasque ficam firmes em um projeto e fazem isso todo dia”.O surgimento do Linux tornou o sonho de um sistemaoperacional 100% livre mais próximo da realidadee representou um largo passo nesse sentido. Duranteos 20 anos que se passaram ele foi amadurecendo eganhando adeptos à medida que ia evoluindo. Hoje,podemos usufruir de um kernel que não deve nada anenhum outro sistema operacional proprietário. Podeser que tudo isso seja alcançado através de trabalhoduro e suor, mas não deixa de ser excitante. Portanto,vista o chapeuzinho de cone, pegue a língua de sogra edivirta-se com as próximas páginas da Linux Magazine .É pique! É pique! É pique, é pique, é pique... ■Mais informações[1] Eletrolux i-Kitchen: http://www2.electrolux.com.br/ikitchen_ra/index.htmlMatérias de capaPor dentro do kernel 32Entrevista com Linus Torvalds 38Linux Magazine #XX | Mês de 200X31


ANÁLISE | Chaveamento virtual com Open vSwitchANÁLISEChaveamento virtual com Open vSwitchTroque a rotaA virtualização com VMware, KVM e Xen chegou para fi car, mas atéagora nenhum switch virtual dava suporte à cenários complexos. O OpenvSwitch suporta fl uxos de dados, VLA Ns, entroncamento e a agregaçãode portas exatamente como os principais switches do mercado.por Ralf SpennebergMuitas empresas estão movendosua infraestruturapara sistemas virtuais.Este processo envolve a virtualizaçãode componentes centralizados:sistemas SAP, servidores de basesde dados Oracle e servidores dearquivos, facilitando assim, a suaadministração. Além disso, os administradoresnão precisam maisdesligar sistemas para a manutenção,já que as cargas de trabalho podemser migradas, em execução, paraoutras máquinas virtuais.Uma grande desvantagem de umambiente virtual sempre tem sido aestrutura simplística de rede. Mesmoque os switches físicos de redesuportem VLANs, entroncamentos( trunking ), QoS ( Quality of Service– Qualidade de Serviço), agregaçãode portas, recursos de firewall dentreoutras, os switches virtuais sãobastante primários. A VMware ea Cisco, entretanto, criaram umasolução no switch virtual CiscoNexus 1000V. Este switch integra--se ao ambiente VMware e oferecerecursos avançados.Uma opção de código aberto destecalibre não estava previamente disponível,mas o Open vSwitch acaboucom este problema. O Open vSwitchsuporta Xen, KVM e VirtualBox,assim como o XenServer. A próximageração do Citrix também migrarápara o Open vSwitch.O Open vSwitch [1] está baseadono projeto OpenFlow da Universidadede Stanford [2] e é um novopadrão aberto concebido para suportara gestão de switches e roteadorescom software arbitrário ( quadro 1 ).O Open vSwitch dá ao administradoros seguintes recursos em umsistema Linux:➧ Chaveamento completamentefuncional em Camada 2;➧ Suporte a NetFlow, sFlow, SPANe RSPAN;➧ VLANs 802.1Q sem trunking;➧ QoS;➧ Agregação de portas;➧ Tunelamento GRE;➧ Compatibilidade com o Linuxbridge code (brctl);➧ Implementação do switch emespaço de usuário e de kernel .Mas antes que você possa beneficiar-sedestes recursos, é necessárioque você instale o OpenvSwitch. Pacotes prontos existempara o Debian Sid ( unstable ).Você pode baixar os pacotes parao Fedora/RedHat a partir de meupróprio website [3] . Também podeinstalar o pacote a partir do códigofonte ( quadro 2 ).Ainda que os pacotes forneçamscripts de inicialização para um usosimplificado, você precisará executarmanualmente, ou criar seu próprioscript de inicialização, no caso deuma instalação manual. A base dedados de configuração lida com a48 www.linuxmagazine.com.br


Chaveamento virtual com Open vSwitch | ANÁLISEgestão do switch ( listagem 1 ). Opróximo passo é executar o serviçoOpen vSwitch:ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sockVocê pode, agora, executar o comandoovs-vsctl para criar novosswitches ou adicionar e configurarportas. Uma vez que muitos scriptspara o Xen e o KVM valem-se dosutilitários de bridge (ponte entredois segmentos de rede), você precisaráiniciar o serviço de compatibilidadede bridge (com o comandobrctl ). Para fazer isto, carregue omódulo do kernel e então, inicieo serviço:modprobe datapath/linux-2.6/brcompat_mod.koovs-brcompatd --pidfile --detach-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sockAgora você pode usar os utilitários debridge para gerenciar seu Open vSwitch:brctl addbr extern0brctl addif extern0 eth0A distribuição de scripts para acriação de bridges funcionará normalmente.Você pode também usaro comando ovs-vsctl para gerenciaro bridge. De fato, você pode usar osdois comandos ao mesmo tempo ( listagem2 ). Se o comando brctl shownão pode encontrar alguns arquivosno diretório /sys/ , os utilitários debridge podem ser novos demais (porexemplo, no RHEL 6) e você talveztenha que voltar à versão anterior,o RHEL 5.Até o momento, o Open vSwitchfuncionou exatamente como em umcenário de bridge com o uso de utilitáriospara este fim. Outras etapasde configuração são necessárias parao uso de funções avançadas. Todosos parâmetros da base de dados deconfiguração do Open vSwitch podemser manipulados com o uso docomando ovs-vsctl .Figura 1 Ntop mostrando os fl uxos para a bridge.NetFlowO Open vSwitch pode exportar osfluxos de rede (NetFlows) dentro doswitch. Para permitir isso, crie umanova probe ( sonda) NetFlow.# ovs-vsctl create netflowtarget= "192.168.0.5\:5000"75545802-675f-45b2-814e-0875921e7edeQuadro 1: OpenFlowAgora, conecte a probe com obridge extern0 :# ovs-vsctl add bridge extern0netflow 75545802-675f-45b2-814e-0875921e7edeCaso você já tenha, previamente,executado um coletor de fluxos derede (Ntop por exemplo) na portaO objetivo do projeto OpenFlow é revolucionar o mundo dos roteadores eswitches. Um roteador ou switch clássico combina duas funções em um únicodispositivo➧ Encaminhamento rápido de pacotes (rota de dados)➧ Tomada de decisão sobre a forma e o local para onde encaminhar os pacotes(controle de rota)Estes dois sistemas, tipicamente, trabalham de maneira independente dentrodo mesmo dispositivo. O componente de rota de dados apenas perguntaalgo ao componente do controle de rota caso ele não saiba como e paraonde deve encaminhar um pacote. O componente do controle de rota determina,então, a rota e a armazena em uma tabela de fl uxos. Todos os outrospacotes do mesmo fl uxo podem, então, ser rapidamente encaminhados pelomecanismo de rota de dados.O OpenFlow alivia a carga do controle de rota para um controlador à parte,que pode ser um simples servidor. O switch OpenFlow (rota de dados) e ocontrolador comunicam-se através de um canal seguro. O switch OpenFlowarmazena a tabela de fl uxo onde o controlador salva os fl uxos individuais.Cada fl uxo descreve as propriedades dos pacotes que compõem o fl uxo ecomo o switch deve tratar estes pacotes (descartar, porta de envio etc.).Uma vez que o switch recebe um pacote para o qual ele não tem uma entradacorrespondente na tabela, envia o pacote ao controlador, que analisa opacote, toma uma decisão e armazena esta decisão na tabela de fl uxo.Graças à cooperação de muitos fabricantes, os desenvolvedores conseguiramque o OpenFlow seja suportado em muitos dispositivos comerciais derede. Há um fi rmware customizado para muitos switches da HP, NEC, Torokie Pronto [4]. O Open vSwitch é uma implementação de software que forneceambos recursos (rota de dados e controlador).Linux Magazine #83 | Outubro de 201149


ANÁLISE | Chaveamento virtual com Open vSwitchListagem 1: Confi guração01 ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db \02 --remote=punix:/usr/local/var/run/openvswitch/db.sock \03 --remote=db:Open_vSwitch,managers \04 --private-key=db:SSL,private_key \05 --certificate=db:SSL,certificate \06 --bootstrap-ca-cert=db:SSL,ca_certListagem 2: Gestão da bridge01 [root@kvm1~]# brctl show02 bridge name bridge id STP enabled interfaces03 extern0 0000.00304879668c no eth004 vnet005 [root@kvm1~]# ovs-vsctl list-ports extern006 eth007 vnet0Listagem 3: Medidas de desempenho01 ## Server:02 ## iperf -s03 ## Client:04 # iperf -c 192.168.0.5 -t 6005 --------------------------------------------------------06 Client connecting to 192.168.0.5, TCP port 500107 TCP window size: 16.0 KByte (default)08 --------------------------------------------------------09 [ 3] local 192.168.0.210 port 60654 connected with192.168.0.5 port 500110 [ID] Interval Transfer Bandwidth11 [ 3] 0.0-60.0 sec 5.80 GBytes 830 Mbits/secQuadro 2: InstalaçãoDepois de descompactar o código fonte, você precisará compilar e instalar oOpen vSwitch usando os comandos usuais:./configure --with-l26=/lib/modules/$(uname -r)/buildmakesudo make installVocê precisará dos kernel headers (cabeçalhos de kernel) para compilar omódulo do kernel. Em distribuições recentes você encontrará, tipicamente,os cabeçalhos de kernel em um pacote chamado kernel-devel ou algosimilar. Depois de compilar, você deve verifi car a instalação e executar oprograma pela primeira vez. Para fazer isso carregue manualmente o módulodo kernel.modprobe datapath/linux-2.6/ openvswitch_mod.koCaso este comando falhe, você provavelmente precisará descarregar o módulobridge: rmmod bridge .A versão do módulo para o kernel pode não corresponder a seu kernel atual,o que pode ser um problema caso você use pacotes prontos. Neste caso,será necessário recompilar o módulo. Após fazer isto você pode inicializar abase de dados de confi guração do Open vSwitch:ovsdb-tool create /usr/local/etc/ovs-vswitchd.conf.dbvswitchd/vswitch.ovsschemaEm caso de problemas, o arquivo INSTALL.Linux fornece dicas para asua solução.5000 da máquina com o endereço192.168.0.5, agora poderá visualizaro arquivo ( figura 1 ). Os parâmetrosde configuração podem ser gerenciadoscom o uso dos comandosovs-vsctl list bridge e ovs-vsctllist netflow e removidos com ovs--vsctl destroy .QoSEm muitos casos os administradoresprecisam restringir a largura debanda para usuários virtuais individuais,particularmente quandoclientes diversos usam o mesmoambiente virtual. Usuários diferentesrecebem o desempenho pelo qualpagam com base em Contratos deNível de Serviço (SLA).O Open vSwitch dá aos administradoresuma opção bastante simplespara restringir o desempenhomáximo de transmissão de dadospara usuários individuais. Para testaristo, você deve primeiro mediro tráfego normal. A ferramentaiperf é útil para este fim. Você podeexecutar o iperf como servidor emum sistema e como cliente em umusuário virtual ( listagem 3 ).Você pode, agora, restringir o desempenhodo envio. Observe que ocomando espera que você digite odesempenho do envio em kilobitspor segundo (kbps). Além do desempenhode envio, você precisaespecificar a velocidade de rajada( burst speed ), que deve ser cerca deum décimo do desempenho de envio.A interface vnet0 , neste caso, é aporta do switch na qual o convidadovirtual está conectado.# ovs-vsctl set Interface vnet0ingress_policing_rate=1000# ovs-vsctl set Interface vnet0ingress_policing_burst=100Você pode testar os resultadoscom iperf ( figura 2 ).Caso você tenha familiaridadecom o comando tc e o QoS baseadoem classes no Linux, com váriasdisciplinas de enfileiramento50 www.linuxmagazine.com.br


Chaveamento virtual com Open vSwitch | ANÁLISE( queuing ), você pode usar esta ferramentaem conjunto com o OpenvSwitch. A página de man fornecevários exemplos.EspelhamentoPara executar um sistema de detecçãode intrusão você precisa de umaporta espelhada no switch. Mais umavez, o Open vSwitch oferece estaopção. Para usá-la você necessita,inicialmente, criar a porta espelhadae então adicioná-la ao switch correto.Para criar uma porta espelhada querecebe o tráfego de todas as outrasportas e as espelhe na vnet0 , use oseguinte comando:ovs-vsctl create mirrorname=mirror select_all=1output_port= e46e7d4a-2316-407f- ab11-4d248cd8fa94O comando :ovs-vsctl list port vnet0revela o ID da porta de saída quevocê precisa. O comando :# ovs-vsctl add bridge extern0mirrors 716462a4-8aac-4b9caa20-a0844d86f9efadiciona a porta espelhada ao bridge.VLANsVocê também pode implementarVLANs com o Open vSwitch e temduas opções para fazê-lo. Cada OpenvSwitch tem a capacidade de implementarVLAN: se você adicionaruma porta ao switch virtual, ela já éuma porta de entroncamento VLANque fornece o transporte identificado(tagged) para todas as VLANs.Para criar uma porta de acesso quetenha suporte nativo a VLAN, semidentificação, digite:ovs-vsctl add-port extern0vnet1 tag=1Figura 2 Uso do iperf para verificar as restrições de desempenhode transmissão.O comando brctl não permite quevocê crie, diretamente, este tipo deporta. Você precisará de uma bridgefalsa como solução alternativa.O Open vSwitch suporta bridgesfalsas com as quais você pode, designarVLANs. Cada porta em umabridge falsa passa a ser uma porta deacesso na VLAN. Para implementaristo você deve, primeiramente,criar uma bridge falsa como filhade uma bridge mãe:# ovs-vsctl add-br VLAN1 extern0 1A nova bridge falsa responde,agora, pelo nome de VLAN1 e transportaa VLAN com a identificação1 . Você precisa habilitá-la e dar-lheum endereço IP:# ifconfig VLAN1 192.168.1.1 upCada porta que você criar nestabridge é uma porta de acesso para aVLAN 1, o que significa que você pode,novamente usar o comando brctl .O Open vSwitch pode tambémcriar um túnel GRE entre múltiplossistemas e executar um entroncamentoVLAN entre eles. Destaforma você pode mover máquinasvirtuais para outros hosts fora daLAN. A comunicação se dá atravésdo túnel GRE.O Open vSwitch também agregaportas. Os desenvolvedoresdo kernel Linux chamam isto debundling ; já a Cisco chama istode EtherChannel. Esta agregaçãopermite que o administrador combinemúltiplas portas físicas emuma única porta lógica que podeentão ser usada para balanceamentode carga e alta disponibilidade.O Open vSwitch é um projetointeressante que está, atualmente,prejudicado pela falta de popularidadee documentação. Espero queas grandes distribuições decidam incorporaro projeto e integrá-lo nativamenteem suas próprias ferramentas,como a Libvirt. Este recurso removeriaa necessidade de usar o serviço decompatibilidade de bridge. ■Mais informações[1] Open vSwitch: http://www.openvswitch.org/[2] OpenFlow: http://www.openflow.org/[3] Open vSwitch RPM:http://www.spenneberg.org/Openvswitch/[4] OpenFlow switches: http://openflow.foswiki/bin/view/org/bin/OpenFlow/Deployment/ComponentsGostou do artigo?Queremos ouvir sua opinião.Fale conosco emcartas@linuxmagazine.com.brrEste artigo no nosso site:http://lnm.com.br/article/5875Linux Magazine #83 | Outubro de 201151


ANÁLISE | Análise de vulnerabilidades com OpenVASANÁLISEOpenVAS 4AnálisedetalhadaO projeto OpenVAS acaba de lançar a versão 4 de seu sistema de avaliação devulnerabilidades — razão sufi ciente para verifi car os novos recursos e aprender, naprática, como criar sua própria solução de checagem para seus sistemas.por Stefan SchwarzerOOpenVAS é um sistema decódigo aberto para a avaliaçãode vulnerabilidades,distribuído sob a licença GPL. Eleé um ambiente completo de avaliaçãode segurança, com uma série deserviços e componentes que podemser organizados em diversas formaspara construir um ambiente de avaliaçãoadequado à sua rede. O Open-VAS Manager age como um serviçoFigura 1 O Desktop Greenbone Security é baseado no Qt.central para o controle do ambienteOpenVAS, comunicando-se com oscomponentes responsáveis pela varreduraatravés do protocolo OMP(OpenVAS Management Protocol –Protocolo de Gestão do OpenVAS)baseado em XML e armazenandoos resultados em uma convenientebase de dados do tipo SQLite.O OpenVAS [1] está passando,atualmente, por rápidas mudanças eacaba de atingir a versão 4. Neste artigoapresentarei o sistema de varredurae uma visão do sistema de clientes esuas vulnerabilidades. Você tambémreceberá algumas dicas para a implementaçãodo OpenVAS e sobre comoescrever seus próprios plugins.Novos recursosO ambiente OpenVAS mudou consideravelmentedesde a sua versão3, mas continua compatível com asferramentas e protocolos conhecidosda versão 2. Além do novo OMP, queauxilia na gestão dos processos de varredura,o OpenVAS AdministrationProtocol (OAP, Protocolo de Administraçãodo OpenVAS) foi adicionadopara administrar clientes e novosserviços. O OpenVAS Manager cuidada comunicação dentro do ambientee armazena todos os dados de varreduraem sua base de dados internaSQLite, aliviando parte da carga dosnovos clientes baseados em OMP eauxiliando na organização de acessos52 www.linuxmagazine.com.br


Análise de vulnerabilidades com OpenVAS | ANÁLISEsimultâneos aos dados de varreduraarmazenados. A comunicação com oserviço responsável pela varredura (oscanner openvassd ) ainda usa o Open-VAS Transfer Protocol (OTP, Protocolode Transferência OpenVAS).O serviço OpenVAS Administratorfornece aos administradores umaabordagem conveniente à gestão deusuários e certificados.Novos clientes de varredura estãoagora disponíveis, em adição ao anteriormenteusado OpenVAS Client, baseadoem Gtk. Um servidor, chamadoGreenbone Security Assistant (GSA)[2] é executado em um navegador.O aplicativo desktop, Greenbone SecurityDesktop (GSD, figura 1 ) [3] ,que é executado em Windows (graçasao Qt), ou a ferramenta simples paralinha de comando omp completam aseleção de ofertas livres.Os clientes desktop, que eram incompletosna versão 3, hoje cobrem oescopo completo de funções do Open-VAS. Em um ambiente de produção,o cliente clássico OpenVAS ainda éo mais fácil e rápido. Os pontos fortessão a organização hierárquica dosclientes e sua habilidade de organizaralvos de varredura em Alvos ( Targets )e Escopos ( Scopes ). Após definir aspropriedades padrão para a varredura,você pode atribuir as propriedades deum alvo para um escopo e, a partir daí,modificá-las conforme o necessário.Este recurso facilita a modelageme a realização rápida de novasvarreduras e ajuda muito na seleçãoentre alvos de varredura e seusresultados. A definição de uma varreduraem clientes web ou desktopé, comparativamente, confusa. Oprocesso começa com as definiçõesindividualizadas de configuraçõesde varredura, credenciais, alvos devarredura e tarefas.A promessa de permitir módulosreutilizáveis acaba tornando-se umaarmadilha quando há a necessidadeposterior de modificar a configuração.Por exemplo, você não pode,Figura 2 Confi gurações globais importantes no cliente OpenVAS.retrospectivamente, modificar ousubstituir os alvos em suas tarefas devarredura – isto significa que vocêdeve criar novas entradas em suaconfiguração, o que pode ser bastantedesagradável ao longo do tempo.Novos clientes não suportam, atualmente,o uso de listas baseadas emarquivos para a definição de alvos devarredura. Em outras palavras, casovocê necessite analisar centenas demáquinas virtuais para descobriras vulnerabilidades de um servidorweb, irá apreciar o cliente clássicoque apenas precisa de uma lista dehosts em um arquivo texto.Figura 3 Preferências para os plugins individuais.O começoAntes de você começar a usar o sistemade avaliação de vulnerabilidades,dedique um tempo para conhecer osformatos de dados do OpenVAS elimpar os espaços de memória paragarantir que você possui a configuraçãocorreta para as suas preferênciasmais importantes. Isto também ajudaa evitar erros durante o armazenamentode informações confidenciais.Caso esteja trabalhando como cliente clássico OpenVAS – e euassumo que você está – a estruturahierárquica dos alvos de varreduraserá de grande ajuda, já que vocêLinux Magazine #83 | Outubro de 201153


ANÁLISE | Análise de vulnerabilidades com OpenVASFigura 4 Relatórios de varredura.Arquivo~/.openvasSignificadopode aplicar algumas de suas preferênciaspara outros alvos.É possível tomar vantagem de seuconhecimento para modificar a hierarquiade alvos de varredura de formaretrospectiva – para fazer isto, simplesmentemova os arquivos no sistema dearquivos. O arquivo .openvasrc é particularmenteinteressante para cadaalvo, já que todas as configuraçõesda varredura estão nele, incluindoas opções que não podem ser configuradasnos clientes. Por exemplo,log_whole_attack = no desabilita totalmenteo registro de varreduras noservidor central de varredura.As figuras 2 e 3 mostram as preferênciasglobais que você deve verificarantes da varredura. Por exemplo, sevocê está testando servidores web virtuais,você deve habilitar a resoluçãoreversa de endereço ( reverse lookup )para evitar receber todos os resultadosagrupados sob um único endereçoIP compartilhado. Inicialmente, aopção Safe checks é bastante desejável,já que as varreduras de DoDnão podem estar entre os primeirosListagem 1: Compilando e Executando o OpenVAS01 make depend # instala os pacotes exigidos02 make # compila e instala o OpenVAS03 make initial # cria certificados, base de dados, etc.04 make start # inicia os processos necessários em backgroundListagem 2: Uma modifi cação (override) severa01 08 09 Backport10 11 ~/.openvasrc~/.openvas/Scope/Target~/.openvas/severity_overrides.xmlDiretório para os arquivos deconfi guração dos alvos de varredura.Parâmetros globais de confi guração.Todas as confi gurações (.openvasrc ) paraeste alvo de varredura e os resultados damesma (Report_date). Na primeira vez emque você cria um novo alvo de varredura,o OpenVAS copia a confi guração doescopo (Scope) para o alvo (Target).O arquivo XML com as modifi cações queinfl uenciam os resultados da varreduraquando avaliando seu efeito.Tabela 1 Localização dos arquivos de confi guração .testes realizados. Infelizmente, estaopção está desabilitada como padrão.Você também pode desejar reduziro número de máquinas analisadasem paralelo e o número de testesa serem completados para evitarcargas desnecessárias na rede e nasmáquinas alvo.Ao coordenar suas atividades comas do administrador de rede você devecertificar-se de que nenhum firewallou sistema de detecção de invasãobloqueie suas varreduras e produzaresultados inúteis. Inicialmente, aomenos a varredura OpenVAS TCP éuma boa escolha. Quando utilizar oNmap para varrer as portas você deveverificar as configurações necessáriaslogo de início, usando o Nmap emum processo à parte e então aplicandoos resultados.Os plugins definem a interfacecliente OpenVAS e são configuradosem Prefs na aba Options . É uma boaideia verificá-los depois de carregarou atualizar os plugins. Por exemplo,você pode habilitar checagensbastante informativas em sincroniao Departamento Federal Alemãopara Segurança da Informação ( BSIIT-Grundschutz , o escritório de segurançaonline da Alemanha) [4] comotestes de conformidade ( ComplianceTests – figura 3 ). Este convenienterecurso de configuração de pluginpode ser aproveitada em seu própriodesenvolvimento de plugins.Acerte o AlvoA escolha óbvia de um alvo inicial( Target selection ), logo após a instalaçãodo cliente ou servidor é o própriolocalhost , o mesmo servidor onde oOpenVAS foi instalado. A configuraçãoda máquina é conhecida e vocêpode facilmente verificar suas vulnerabilidadese repetir os testes. Casoo cliente e o servidor sejam executadosem máquinas diferentes, vocêsempre poderá escolher seu própriosistema cliente como o alvo inicial.Você deve levar em consideração a54 www.linuxmagazine.com.br


Análise de vulnerabilidades com OpenVAS | ANÁLISErede que conecta as duas máquinas.Também faz sentido configurar suaprópria máquina virtual para testesuma vez que pode ter controle totalsobre essa máquina (por exemplo,com o VirtualBox [5] ), podendofacilmente modificá-la e mantendovários estados como snapshots.Após a seleção dos plugins – existemmais de 21.000 atualmente – vocêpode executar a primeira varredura.Comece pela seleção de uma visãoexterior completa do alvo da varredura;ou seja, não forneça nenhumacredencial de login para o sistemaalvo já que esta seria a situação inicialao confrontar um invasor. Dependendodas portas abertas e serviçosativos, a varredura pode levar desdealguns minutos até várias horas, masvocê pode interromper o processo aqualquer momento. Após completarou interromper a varredura você teráum relatório listando os detalhes combase nas portas – ou serviços – parao seu alvo.Três tipos de informações sãoexibidas na aba Report do clienteOpenVAS ( figura 4 ): Security Holeaponta as potenciais vulnerabilidadesdescobertas pela varredura; SecurityNote exibe informações sobrea porta para a avaliação do sistema;Log Message contém a informaçãoque é retornada pelo plugin, o quepode ser, de fato, muito útil. Comeceverificando a informação geral emgeneral/tcp , especialmente os parâmetrosagregados para a varredura,tais como configuração, duração eassim por diante.VulnerabilidadesMesmo que você tenha aplicado asúltimas atualizações, a primeira varreduratipicamente revela dezenas devulnerabilidades críticas, principalmentecausadas pelo uso incorretode plugins de varredura que não sãomuito tolerantes a erros. Por exemplo,as varreduras IT-Grundschutz[4] apenas irão retornar resultadosFigura 5 Modifi cação de severidade para um falso positivo.significativos se puderem ter acessointerno ao sistema alvo, o que requerum login. Sem isto os testes falhamListagem 3: Fragmento do unibwm1.nasle, infelizmente, retornam um estadoque incrementa o contador de vulnerabilidadescríticas de segurança.01 if(description)02 {03 script_id(9999001);04 script_version("$Revision: 7732 $")05 script_tag(name:"risk_factor", value:"None");06 script_name("UniBwM 1: Plaintext passwords");07 desc ="08 Panorama : Esse script testa a existência de senhasem texto puro para o subversion09 Fator de risco : Nenhum";1011 script_description(desc);12 script_summary("Plaintext passwords");13 script_category(ACT_GATHER_INFO);14 script_copyright("Copyright (C) 2010 Stefan Schwarz");15 script_family("General");16 script_dependencies("ssh_authorization.nasl");17 if(description)18 {19 script_id(9999001);20 script_version("$Revision: 289 $");21 script_tag(name:"risk_factor", value:"None");22 script_name("UniBwM 1: Plaintext passwords");23 desc ="24 Panorama : Esse script testa a existência de senhasem texto puro para o subversion25 Fator de risco : Nenhum";2627 script_description(desc);28 script_summary("Plaintext passwords");29 script_category(ACT_GATHER_INFO);30 script_copyright("Copyright (C) 2010 Stefan Schwarz");31 script_family("General");32 script_dependencies("ssh_authorization.nasl","gather-package-list.nasl");33 script_add_preference(name:"Launch this script",type:"checkbox", value:"yes");34 exit(0);35 }Linux Magazine #83 | Outubro de 201155


ANÁLISE | Análise de vulnerabilidades com OpenVASFigura 6 Propriedades do plugincliente OpenVAS.Em outras palavras, você precisarádesabilitar estes plugins oufornecer as credenciais necessáriasantes de executar o próximoteste. Uma rápida olhada nas estatísticaspode, tipicamente, levara falsas interpretações, tal como amensagem OpenVAS isn’t (yet) setup for fully automated testing andevaluation (O OpenVas não estáainda configurado para testes eavaliações automáticas).Falsos positivosOutro problema frequente é queos plugins tenderão a identificar oque eles pensam que são númerosobsoletos de versões, tipicamenteem sistemas com backports [6] .Consertos para vulnerabilidadesdescobertas em versões mais novassão, frequentemente, fornecidostambém para sistemas antigos, masainda oficialmente suportados. Masisto não quer dizer que um backportcuja vulnerabilidade foi resolvidaganhe um novo número de versão,o que confunde o OpenVAS. Umavarredura de segurança não verificaas vulnerabilidades, ela apenasbusca por versões com vulnerabilidadesconhecidas.O servidor Ubuntu 8.04 é umexemplo disto: o OpenVAS classificaa versão do OpenSSH utilizadapor ele como crítica, mas sevocê pesquisar por esta versão e ascorreções aplicadas a ela você descobriráque ssh-2.0-openssh_4.7p1debian-8ubuntu1.2 está atualizada eque todas as correções de segurançaforam aplicadas [7] . Os plugins sãofacilmente enganados por pequenasdiferenças como esta, tornandonecessária a limpeza manualdas mensagens.Para reduzir totalmente os falsospositivos você pode mudar a opçãoReport paranoia dentro de Globalvariable settings de Normal paraAvoid false alarms . Claro que istoapenas funciona para os plugins queaceitam esta opção e apenas 130 dentreos mais de 21.000 plugins estãoentre os que fazem hoje. Dito isto,você pode preferir evitar o granderisco de deixar passar uma vulnerabilidadereal.Você pode utilizar o mecanismode modificação ( override ) de severidadepara alterar a criticidade deuma vulnerabilidade identificadapelo OpenVAS, reclassificando amensagem gerada pela varredurade Security Hole para False Positive. Estas modificações ficam armazenadasglobalmente no arquivoseverity_overrides.xml ( tabela 1 ),onde você pode, então, editá-las retrospectivamente( listagem 2 e figura5 ) e aplicá-las apropriadamente aosresultados de um relatório.Estas modificações ( overrides )são, inicialmente, relativas à máquinacoberta pelo relatório –192.168.178.46 neste exemplo. Casovocê deseje estendê-las a um grupode máquinas, ou todas as máquinas,basta apenas substituir a entradahost= para 192.168.178.* . Mastenha cuidado: esta mudança iráinfluenciar toda a regra e irá fazercom que o OpenVAS assuma umfalso positivo mesmo que uma vulnerabilidadegenuína exista. Emoutras palavras, você precisa verificaras regras que você modificouem intervalos regulares.VisualizaçõesO OpenVAS distingue as várias visualizaçõesde um objeto alvo paravarredura:1. Visualização a partir da Internetpública;2. Visualização a partir da redeinterna de uma empresa, possível apartir de várias zonas de segurança;3. Visualização a partir de dentrodo próprio objeto alvo, após o login.As visualizações 1 e 2 diferem apenasem relação à posição ocupadapelo scanner do OpenVAS; não hádiferenças sob o ponto de vista docliente. O cliente OpenVAS podeabrir uma conexão para qualquernúmero de scanners e utilizá-losde forma paralela. Você deve estarciente das políticas de segurança nainfraestrutura da rede em questão.Mesmo a varredura de seu próprioservidor na zona pública de sua redecorporativa pode tornar-se um desafio.Dentro do alvoVarreduras do OpenVAS que têm ahabilidade de efetuar um login namáquina alvo e analisá-la a partir deseu interior produzem resultadosmuito melhores. O login não deveser o de uma conta administrativa( root ); uma conta não privilegiadairá, tipicamente, revelar informaçõessuficientes sobre o sistema esuas vulnerabilidades.Os pares usuário-senha nos sistemasalvos são algo que você desejaráproteger; infelizmente o OpenVASnão faz um bom trabalho neste caso.Ao invés disto, ele armazena as senhassem criptografia, em modotexto, na sua base de dados SQLite,tornando-as acessíveis ao menos aoadministrador do servidor de varreduras,que pode não ser necessariamenteo administrador de todos ossistemas alvo. Um simples comandoSQL comosqlite3 tasks.db 'select * fromlsc_credentials;'56 www.linuxmagazine.com.br


Análise de vulnerabilidades com OpenVAS | ANÁLISEFigura 7 O cliente OpenVAS exibindo os resultados de varredura coletados pelo plugin exemplo.revela toda esta informação confidenciala qualquer um com acessoà base de dados. A criptografia dascredenciais antes de seu armazenamentonão é uma solução, uma vezque estes dados seriam decriptadosdurante a varredura e, para fazeristo, você precisaria armazenar umachave de criptografia em algum lugarno apliativoO cliente clássico OpenVAS revelaalguma fraqueza aqui; ele armazenaas credenciais de acesso em seu arquivode configuração local, .openvasrc( tabela 1 ). Mesmo que você tenhasido avisado sobre isto, a alternativade armazenar a palavra-chave parasua chave privada é igualmente assustadora.Uma solução funcionalseria armazenar os dados criptografadoscombinados a uma senhaque você não precise armazenar naaplicação, ou possivelmente usar osuporte a smartcard. Esta fraquezafornece um amplo escopo de desenvolvimentopara as versões posterioresdo OpenVAS.Segurança de chavesChaves assimétricas fornecem umasolução para a distribuição das credenciaisde segurança por múltiplossistemas mitigando, assim, o problemacom um repositório centralizado.A chave pública deve residir nosistema alvo. A conta deve ter suasenha desabilitada, de forma quea chave privada no cliente seja aúnica forma de acessá-lo. Comovocê pode apenas armazenar apalavra-chave às claras, novamente,muitos administradores desejarãoevitar esta abordagem. A únicaforma de proteger a chave privadaé mantê-la em uma memóriasegura (por exemplo, um pendriveUSB) ou criptografar a própriachave utilizando TrueCrypt, PGPou Encrypt-FS.O importante é que o clienteOpenVAS apenas atualiza a credencialde acesso modificada quandoele varre o objeto alvo. Mesmo queo cliente apague as credenciais deacesso antes de encerrar o programa,elas ainda estarão disponíveisno arquivo de configuração. Assim,os administradores dos sistemas aserem sondados podem ter acessoàs credenciais, mesmo que a chaveprivada esteja armazenada deforma central.Uma vez que a chave pública correspondenteestá localizada no sistemaalvo (em ~./ssh/authorized_keys2no Linux), os administradores podem,eles mesmos, controlar este processo.Apesar de ter a chave pública e privada,o acesso ao sistema alvo aindaé negado. Um plugin especial parao OpenVAS pode restringir o acessoa uma única varredura através damudança da localização do arquivocom as chaves após a varredura como seguinte comando,pread(cmd: "/bin/mv", argv:make_list ("mv","~/.ssh/authorized_keys2", "~/.ssh/authorized_keys2.bak"));que é equivalente a permitir o acessoà varredura apenas uma vez.O processo para a criação dos paresde chaves é similar ao processo usadono OpenSSH [8] . Entretanto, ao contráriodo que diz a documentação doOpenVAS, apenas chaves do tipo DSAfuncionam hoje, não RSA [9] . Em outraspalavras, não é uma boa ideia usaras ferramentas de criação de credenciaisexistentes no pacote interno (em Extras/LSC Credentials Manager ).O método requer apenas a chavepública para a conta desejada (porexemplo sshovas em ~/.ssh/authorized_keys2). Depois disto, todosos sistemas nos quais você precisaefetuar a varredura interna devemestar acessíveis através do comandossh -i key-directory/sshovas_dsa.p8 sshovas@targetPara testar, habilite o plugin SSHAuthorization. Após a varredura vocêdeve observar a confirmação de queas verificações de segurança estãohabilitadas em SSH/Security Node .Como alguns plugins são escritosde forma dependente da linguagemde programação usada – o pluginpara a varredura do VMWare reconheceapenas a cadeia de caracteresde retorno command not found – fazsentido usar o ambiente na línguainglesa, por exemplo configurandoLANG=us em ~/.profile .plugin apara v arredurasde segurançaAinda que o OpenVAS tenha, atualmente,cerca de 21.000 plugins,pode ser que você precise desen-Linux Magazine #83 | Outubro de 201157


ANÁLISE | Análise de vulnerabilidades com OpenVASQuadro 1: Versões, pacotes e componentesvolver o seu para que ele esteja emconformidade com a política desegurança de sua empresa. Vocêprecisará usar a linguagem NASL(a linguagem de script do Nessus,Nessus Attack Scripting Language)para isso. Vários manuais estão disponíveispara ajudá-lo a aprenderesta linguagem [10] [11] e vocêpode usar os plugins existentescomo modelo. Um artigo em umadas edições prévias da Linux Magazine[12] descreve a estruturados plugins NASL. O código fontepara o exemplo discutido aquiestá disponível para download [13]também com uma tradução parao inglês [14] .O exemplo implementa um requisitode segurança que previneo armazenamento aberto em textode senhas em servidores Subversion[15] . O script deve procurarpor configurações clientes que nãoprevinam, explicitamente, o armazenamentonão criptografado desenhas. Para permitir que isto aconteça,o script verifica os arquivos deOs nomes dos componentes do OpenVAS 4 são um tanto confusos. Porexemplo, o número de versão está apenas relacionado com as bibliotecas(atualmente 4.0.5); os componentes scanner (3.2.4) e manager (2.0.4) usamoutros números [16] . Os repositórios disponibilizados pela maioria das distribuiçõesLinux atuais ainda parecem manter os binários antigos; o Ubuntu11.04 ainda oferece o OpenVAS2. A comunidade, entretanto, oferece pacotesmais recentes; por exemplo, o openSUSE Build Service [17] mantém pacotespara Debian e Ubuntu.Os pacotes do OpenVAS 4 não mais mantêm o cliente OpenVAS nativo apreciadopor muitos usuários por ser mais fácil de usar e manter dados locaisde confi guração. Caso você use seu gerenciador de pacotes para instalar ocliente, você terá como resultado uma versão obsoleta. Ao invés de comprarda Greenbone um aplicativo de varredura completamente suportado [18]em sua versão atualizada, os usuários interessados podem baixar os códigosfonte mais recentes a partir do repositório [19] e compilar as ferramentasque necessitam.Se você gosta de trabalhar com a versão em seu estado da arte, você deveconsiderar obter o código através do Subversion. É relativamente fácil compilaro pacote inteiro. Eu escrevi um Makefi le para isto e o testei no Ubuntu[13] . O arquivo cuida do download e atualização do código, instala os pacotesnecessários e cria e instala a versão atual e suas atualizações ( listagem1 ). Após completar estes passos, o comando make up atualiza o softwaresempre que você desejar.Quadro 2: Varreduras de provedoresProvedores de serviços de hospedagem estabelecidos estão plenamentecientes do problema de varreduras de rede e desenvolveram (em algunscasos, muito variadas) estratégias de prevenção. Grandes provedores identificaram os padrões típicos de varredura com bastante confi abilidade notráfego de rede e automaticamente desconectam, momentaneamente, oalvo de varredura.A experiência mostra que ferramentas populares ainda retornam bons resultadosquando usadas na Internet [20]. O OpenVAS oferece escolhasde varredura de portas que você pode confi gurar sufi cientemente bem naopção Prefs . Caso isto não funcione, você pode usar um sistema externode varredura de portas e passar seus resultados ao OpenVAS. Isto tornasupérfl ua a varredura de portas conhecidas nos servidores web de sua empresae você pode desabilitá-la defi nindo padrões de varredura estática deportas no OpenVAS.configuração global do Subversionem /etc/subversion para conferirse as diretivas store-passwords = noou store-plain-text-passwords = noexistem. Esta diretiva não pode estardesabilitada, o que, infelizmente, éo caso na instalação padrão.Os detalhes do cabeçalho obrigatóriodo plugin (descrição), quesão consultados pelos clientes( listagem 3 ), permitem a você selecionaros plugins relevantes paraa sua varredura e configurar suaspreferências. As instruções emscript_dependencies garantem que oOpenVAS irá executar os pluguinsrequeridos e acessar os resultadose tarefas preliminares (neste caso,um login via SSH e a lista de pacotesinstalados).A especificação de um ID único( script_id ) irá causar, inicialmente,um problema já que o OpenVAS nãopossui, atualmente, um esquema unificadode numeração. Hoje nenhumplugin utiliza o novo ID OpenVAS,script_oid , introduzido na versão1.0.3; ao invés disto eles ainda usama numeração simples com script_id .Dito isto, o OpenVAS converte, internamente,o antigo esquema parao novo ( figura 6 ).Para encontrar um intervalo numéricoque sirva para seus plugins,você pode usar o Awk para descobriros números já utilizados no diretóriode plugins:find . -type f -print | xargsfgrep script_id | awk -F '[()]''{print $2}' | sort -n[...]2000201900000199999919999992Depois de fazer isto, eu decidiusar o número 9999001 para oexemplo. O uso de script_add_preferencecria uma caixa de checagemabaixo das opções Prefs do clienteOpenVAS para que o novo pluginseja habilitado.58 www.linuxmagazine.com.br


Análise de vulnerabilidades com OpenVAS | ANÁLISEO sistema alvoA próxima parte do plugin abre umaconexão protegida por SSH ao sistemaalvo. Infelizmente, a troca deinformação genérica não funcionaem um teste local já que os pluginsfalham em comunicar-se atravésda base de conhecimento interna.Em outras palavras, você precisaráconfigurar a conexão SSH explicitamentepara os testes locais.Você não pode usar a conexãoexistente através de sshauthorization.naslporque ssh_login_or_reuse_connection não iráretornar um socket válido. Infelizmente,você precisa armazernaros dados de conexão às claras – eremovê-los novamente depois decompletar o plugin. Novamente,você pode avaliar a opção Launchthis script do plugin.Para investigar o sistema alvo,o plugin pode enviar comandosShell arbitrários através de ssh_cmde investigar a sua saída. Funçõesinternas como egrep também estãodisponíveis [16] . A saída doplugin – ou seja, a classificaçãoda vulnerabilidade – é tratada porsecurity_note , security_warning , ousecurity_hole .Os plugins NASL são armazenadosem Install-Directory/lib/openvas/plugins ou em seus subdiretórios. Oteste da sintaxe e lógica do seu plugindeve ser feito, primeiramente, forado ambiente OpenVAS. O comandoopenvas-nasl -X -i .. unibwm1.nasltrata disto. Você precisa da opção-X aqui porque o plugin não estáassinado. A opção -i aponta o arquivospara os scripts dependentesno diretório mencionado.Após completar o teste com sucesso,você pode oferecer o pluginpara seus clientes. Para isto, vocêprecisa atualizar o serviço de varreduraopenvassd enviando a ele osinal kill -HUP . De agora em diante,qualquer cliente que abra umanova conexão para o scanner iráreceber a atualização do plugin.Depois de selecionar o plugin eMais informações[1] OpenVAS software - Clientes, serviços e protocolos:http://www.openvas.org/about -software.htmlGostou do artigo?Queremos ouvir sua opinião. Fale conosco emcartas@linuxmagazine.com.brEste artigo no nosso site:http://lnm.com.br/article/5885executar a varredura no sistemaalvo, os resultados aparecerão norelatório ( figura 7 ). ■[2] Greenbone: Gestão de Vulnerabilidade com o GSM: http://greenbone.net/learningcenter/vm_with_gsm.html[3] Greenbone Desktop Suite para Windows: http://www.greenbone.net/technology/gds.html[4] IT-Grundschutz: https://www.bsi.bund.de/EN/Topics/ITGrundschutz/itgrundschutz_node.html[5] VirtualBox: http://www.virtualbox.org/[6] Backports no desenvolvimento de software: http://en.wikipedia.org/wiki/Backport[7] Gestão de patches no Ubuntu usando o OpenSSH comoexemplo: http://packages.ubuntu.com/hardy/openssh -server[8] Executando testes locais de segurança: http://www.openvas.org/performing_lsc.html[9] Erros SSH durante a varredura quando da utilização de “pares dechaves público-privada” por JohnBradley: http://wald.intevation.org/tracker/index.php?func=detail&aid=1502&group_id=29&atid=220[10] "The NASL2 reference manual” por Michel Arboi: http://michel.arboi.free.nasl2ref/fr/nasl2_reference.pdf[11] "Writing Nasl Scripts” (sumário) por Hemil Shah: http://www.infosecwriters.com/text_resources/NASL_HShah.pdf[12] "O farejador de vulnerabilidades OpenVAS” por Geoff Gallitze Tim Brown, Linux Magazine, Junho de 2010, pp. 34-39[13] Makefi le e código fonte: https://subversion.unibw.de/public/openvas[14] unibwm1.nasl com tradução para o inglês: http://www.linux-magazine.com/Resources/Article-Code[15] Subversion: http://subversion.apache.org/[16] Pacotes OpenVAS: http://www.openvas.org/install -packages.html[17] openSUSE Build Service: http://en.opensuse.org/Build_Service[18] Greenbone Networks: http://greenbone.net/[19] Repositório OpenVAS: https://svn.wald.intevation.org/svn/openvas/trunk/[20] Nmap: "Scanning the Internet" por Gordon Lyon(Fyodor), apresentação feita na Black Hat e Defcon 2008:http://insecure.org/presentations/BHDC08/Linux Magazine #83 | Outubro de 201159


SEGURANÇA | Segurança com IPv6O que você precisa saber sobre segurança com IPv6SEGURANÇAModo de segurançaO protocolo IPv6 surgiu nos primeiros dias da web e contémalguns recursos que eram realmente importantes nos anos90. Mas pelos padrões de hoje, alguns deles podem nãoser vistos como melhorias em relação ao IPv4, exigindode administradores atenção extra com a segurança.por Ralf SpennebergOIPv6 traz diversas mudançasao protocolo de Internet(IP). As mais conhecidassão o aumento do espaço de endereçode 32 para 128 bits e máscaras derede mais fáceis. Em vez de máscarasde rede de comprimento variável(VLSM), o IPv6 é compatível apenascom máscaras de 64 bits (/64);e os endereços de broadcasts foramabandonados dando lugar a endereçosunicast, multicast e anycast.Além do escopo global que garantea acessibilidade na InternetIPv6, o protocolo IPv6 usa escoposlocais diferentes para restringir aacessibilidade de uma área menor.O escopo link-local restringeo intervalo de endereços IP à redelocal; os escopos site-local e organization-localcombinam múltiplasredes através de roteadores. NoIPv6, os sistemas ainda precisam doendereço MAC das placas de redepara se comunicarem. O protocoloICMPv6 encontra esse dado na camada3 (do modelo OSI), enquantoo IPv4 ainda usa o Address ResolutionProtocol (ARP) na camada 2.Os desenvolvedores renomearamesse processo para Neighbor DiscoveryProtocol (NDP) [1] .A técnica de Path MTU Discoveryagora é obrigatória no IPv6; então, oICMPv6 tem um papel muito maisimportante do que em redes IPv4.Também há compatibilidade com afamília de protocolos IPsec – antigacompanheira da área de segurançae que administradores usam regularmentepara configurar redes virtuaisprivadas.Fãs do Network Address Translation(NAT) inicialmente ficarãodesapontados. Apesar dos desenvolvedorescontinuarem tentando [2] ,ainda não há NAT para endereçosIPv6 (NAT66). Em outras palavras,cada sistema que precisa se comunicarcom outros na Internet IPv6necessita de um endereço global.Isso significa que os sistemas – sejameles impressoras de rede ancestrais,clientes Windows sem atualizaçõesou dispositivos esquecidos – estãosempre acessíveis, a menos que umfirewall os bloqueie.Nada de novo?Muitos recursos de segurança nãomudaram em relação ao IPv4. Osprotocolos de transporte na Camada4 (TCP, UDP) ainda funcionam domesmo modo; e não há necessidadede configurar os protocolos de aplicativoscomo HTTP, SMTP e FTP denenhuma outra maneira, além dosnovos endereços. O IPv6 tambémnão aumenta a segurança dos protocolos:um agressor ainda poderiarealizar um ataque SYN flood (umavariação do DoS) no IPv6 do mesmomodo que no IPv4.Além disso, há pouquíssimas mudançasna camada 2 do modelo OSI.60 www.linuxmagazine.com.br


Segurança com IPv6 | SEGURANÇAO protocolo ARP foi abandonado, oque vai ajudar a evitar alguns tiposde ataques de falsificação, mas nãotodos ( quadro 1 ). Um agressor poderiaobter os mesmos resultados comfalsificação NDP. Desenvolvedoresdo IPv6 reconheceram essa formade ataque e especificaram modificaçõesno protocolo com o RFC3791 ( Secure Neighbor DiscoveryProtocol , SEND) [3] . O SEND usaendereços gerados com criptografiade chaves públicas para autenticarmensagens NDP. Infelizmente,poucos sistemas operacionais sãocompatíveis com essa extensão,incluindo o Windows 7.Um administrador só pode combatera falsificação NDP com switchesmultilayer inteligentes que mantêmuma tabela interna com todos osendereços IPv6 e endereços MAC,para poder identificar e descartarmensagens falsificadas. Fornecedoreschamam essa abordagem no IPv4 deDynamic ARP Inspection (DAI) [4].O NAT não existe mais – semnenhum substituto à vista – o quenão é uma notícia totalmente boa.Inicialmente, administradores queprecisam gerenciar FTP, Oracle SQLNet ou H.323 ficarão felizes com aconveniência que essa mudança traz.Esses protocolos negociam novasportas dinamicamente durante asoperações. Mapear isso corretamentecom tradução de endereços se tornavamuitas vezes um grande desafio:o algoritmo NAT precisa entender erastrear o protocolo para identificara nova porta negociada.Outros protocolos que não usamportas, como o ESP do IPsec, podemfinalmente ser implementados semsoluções provisórias (como NAT Traversal)através de encapsulamentoUDP, do modo que seus desenvolvedoresoriginalmente projetaram.Privacidade ameaçadaA falta de proteção para os dados éoutro aspecto negativo:➧ Administradores precisam de umfirewall confiável para proteger suaestrutura interna de rede e esconderos IPs utilizados.➧ Provedores de Internet podemrelacionar conexões individuais acomputadores específicos da redecliente sem a necessidade de cookies➧ Computadores são acessíveisde fora da rede local através de seusendereços IPv6.Usuários domésticos não precisammais configurar o encaminhamentode portas em roteadores DSL parapoderem acessar seus computadoresa partir de outros endereços. Noentanto, essa nova rota direta paradentro da rede também está abertapara agressores: políticas de firewallrobustas são vitais para proteger sistemasglobalmente acessíveis.O IPv6 gera um endereço baseadono endereço MAC (leia a seçãosobre configuração automática,mais adiante neste artigo). Comoo computador sempre cria a partehost de seu endereço IP (o identificadorEUI) do mesmo jeito – baseadono endereço MAC – ele temum identificador único por váriosdias ( figura 1 ). Se a máquina é umlaptop que se conecta a várias redes,apenas o endereço de rede muda.Se o usuário acessar um servidorna Internet, o dono do servidorpode saber que se trata da mesmamáquina devido ao identificadoridêntico no endereço IPv6.Um operador de website tambémpode ver a partir de qualrede o usuário do laptop visitou osite. Tudo o que ele precisa fazeré consultar o endereço de redeusando whois ( listagem 1 ). Os endereçosIPv6 são registrados peloprovedor como os anteriores; ocomando whois pode identificara empresa para quem o endereçoestá designado. No pior cenário,seria possível, por exemplo, criarum perfil de movimentação paraum vendedor que está viajando.Figura 1 O ID de um endereço IPv6 éconstruído com o endereçoMAC: acrescenta-se FFFE eo segundo bit do primeirobyte é invertido.IdentificadorEUI aleatórioPara evitar o rastreamento, o RFC4941 introduziu as extensões de privacidadedo IPv6 [5] , que faz o sistemaoperacional criar o identificador EUIde modo aleatório (em vez de usar oendereço MAC). Todos os sistemasoperacionais modernos são compatíveiscom essa função, e o WindowsVista e Windows 7 habilitam isso porpadrão. No Linux, o administradorpode habilitar a função temporariamentecom o comando:sysctl -w net.ipv6.conf.all.use_tempaddr=2Para tornar essa mudança permanente,é preciso modificar as definiçõesdo arquivo /etc/sysctl.conf ,conforme a distribuição ou sistemaoperacional [6] .Mas esse tipo de designação temum lado ruim: sempre que um sis-Figura 2 O computador pode gerarum endereço link-local semajuda externa.Linux Magazine #83 | Outubro de 201161


SEGURANÇA | Segurança com IPv6tema operacional habilitar a placade rede (ou pelo menos uma vezpor dia), ele cria um novo identificador.Se um vírus ou worm atingira rede e não for descoberto peloadministrador até o dia seguinte,será impossível relacionar os endereçosIP logados pelo firewallaos sistemas individuais, porqueninguém tem registro dos endereçosIPv6 aleatórios.Firewall emvez de NATCom o IPv6, administradores nãotêm opção a não ser introduzir regrasrobustas no firewall. Felizmente,com regras orientadas a estados vocêalcança o mesmo nível de segurançade um cenário NAT. Clientes sópodem estabelecer conexões de redeem uma única direção.Na verdade, o uso puro de NAT émenos seguro, pois apenas obscureceListagem 1: whois 2001:67c:24::/48os endereços IPs, em vez de evitaro acesso. Com roteamento de fontee conhecimento dos endereços IP,um agressor poderia até abrir conexõesem sistemas NAT, se o firewallassim permitisse. Dito isso, o kernelLinux não introduziu filtros statefulpara IPv6 até a versão 2.6.20. Assim,distribuições antigas (por exemplo,RHEL 5 e CentOS 5) são inúteiscomo firewalls IPv6.Para garantir que apenas clientesinternos possam se conectar a sistemasna Internet e, ao mesmo tempo,bloquear conexões até as máquinaslocais, você pode usar regras de firewallcomo os do script simples dalistagem 2 .As quatro regras dão permissãopara todos os pacotes que pertençamàs conexões ESTABLISHED ou quecontenham mensagens de erro paraelas ( RELATED ). Conexões NEW só sãopermitidas se vierem da rede interna.Se quiser usar protocolos como FTP,01 Querying whois.ripe.net02 [whois.ripe.net]03 inet6num: 2001:67c:24::/4804 netname: SPE6-NET05 descr: OpenSource Training Ralf Spenneberg06 country: DE07 org: ORG-OTRS1-RIPE08 admin-c: RS9110-RIPE09 tech-c: RS9110-RIPE10 status: ASSIGNED PI11 mnt-by: RIPE-NCC-END-MNT12 mnt-by: MNT-Jansen13 mnt-lower: RIPE-NCC-END-MNT14 mnt-router: MNT-Jansen15 mnt-domains: MNT-JANSEN16 source: RIPE # FilteredListagem 2: ip6tables01 LAN=eth002 INTERNET=ppp003 IPT=/sbin/ip6tables0405 $IPT -P FORWARD DROP06 $IPT -F FORWARD07 $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT08 $IPT -A FORWARD -i $LAN -o $INTERNET -m state --state NEW -j ACCEPTque negociam dinamicamente novasportas, é preciso carregar os móduloscorrespondentes (por exemplo, commodprobe nf_conntrack_ftp ).Uma tarefa muito mais difícil éproteger o próprio firewall. Em umcenário somente IPv4, você podesimplesmente dispensar todos ospacotes endereçados a ele nas cadeiasINPUT e OUTPUT , a menos queprecise acessá-lo através da rede. Sevocê fizer isso com o IPv6, não serápossível nenhuma comunicaçãoatravés do firewall, já que o IPv6 usaNDP em vez de ARP. Todo sistemaque quiser usá-lo para se comunicarcom endereços além do setorlocal precisa descobrir o endereçoMAC do firewall; o que não é umproblema no IPv4, já que o iptablesignora os pacotes ARP na Camada2 (a resolução de endereços MACfunciona independentemente dasregras de iptables).Com o IPv6, a resolução de endereçosMAC depende do ICMPv6na camada 3. Se as regras do ip6tablesdispensarem todos os pacotes,isso inclui as mensagens ICMPv6,e a resolução de endereços MACnão funcionará. Em outras palavras,você precisa permitir pelo menosas mensagens ICMPv6. Como oIPv6 usa o protocolo ICMPv6 paradiversas funções, o RFC 4890 [7]fornece instruções detalhadas paraajudar administradores de firewall adefinir as regras certas.AutoconfiguraçãoUm dos melhores recursos do protocoloIPv6 é a Stateless AutomaticAutoconfiguration (SLAAC) [8] paraos endereços IPv6 de sistemas individuais.Como você não precisaconfigurar um servidor DHCP, issoefetivamente acaba com um pontode falhas.Como já mencionei, os sistemasgeram um identificador baseadoem seus endereços MAC. Primeiro,eles usam o identificador para gerar62 www.linuxmagazine.com.br


Segurança com IPv6 | SEGURANÇAum endereço link-local ao anexar oidentificador à rede fe80/64 (figura 2 ).Hosts podem usar esse endereçopara se comunicarem na rede local,como era possível no IPv4 comAPIPA (Windows [9] ) ou no Avahi(Linux [10] ) como “endereço deIP de conexão local” em uma redeZeroconf [11] .Os hosts, então, usam mensagensde solicitação de roteamento ICMPv6[1] , as quais os roteadores respondemcom anúncios de roteamentoICMPv6 contendo um prefixo global.Os sistemas criam um endereçoIP global com esse dado, anexandoseu identificador ao prefixo global( figura 3 ). Se diversos roteadores responderem,ou se o anúncio contermúltiplos prefixos, o sistema criarámúltiplos endereços IPv6.Para a autoconfiguração funcionar,as regras de firewall obviamenteprecisam permitir essas mensagensde solicitação ICMPv6; contudo,você não pode filtrá-las de modostateful porque o servidor de configuraçãoas anunciam em multicasts.Infelizmente, solicitaçõesde roteamento e mensagens deanúncio também não podem serautenticadas. Em outras palavras,seria possível um agressor enviarQuadro 1: Falsifi cação ARPmensagens de anúncio de roteamentoe efetivamente falsificarum roteador. As ferramentas paraesse tipo de ataque já existem [12] .Em condições de produção, a autoconfiguraçãostateless na verdadenão é adequada para redes modernas.Os desenvolvedores não levaramem consideração a distribuiçãode servidores DNS e outros dadosquando criaram as especificações há15 anos. O RFC 5006 [13] adicionasuporte a servidor de DNS mas nãoé compatível com todos os sistemasoperacionais. De qualquer modo,administradores estão acostumadosa usar DHCP para distribuir dadosdo tipo domínio DNS, servidor NTPou servidor de boot PXE.Redes com switches tornam o sniffi ng bem difícil. Um switch detecta qual sistemaestá em cada porta e encaminha pacotes Ethernet somente para essaporta. Para isso, ele usa uma tabela de endereços MAC identifi cados e as portascorrespondentes. Apesar disso, agressores ainda podem fazer um sniff emtodo o tráfego com um ataque do tipo interceptador ( man in the middle ).Antes de um cliente com IPv4 poder se comunicar com um servidor, ele precisadescobrir o endereço MAC do parceiro de comunicação. Para tanto,ele usa o protocolo ARP, enviando uma requisição ARP ao endereço ethernetde broadcast, perguntando por exemplo “Qual é o endereço MAC doIP 192.168.0.5?”. Um agressor pode interferir aqui, respondendo ao clientecom uma resposta ARP falsifi cada que contém seu próprio endereço MAC.O cliente então envia o pacote não para o alvo IPv4 desejado, mas para oendereço MAC falsifi cado. Um switch Camada 2 apenas usa esse endereçoMAC e, assim, encaminha o pacote ao agressor.O invasor pode ler o pacote e então só precisa substituir o MAC de destinocom o endereço correto e enviar de volta ao switch. O pacote então é enviadoao destinatário correto e a conexão está pronta.Figura 3 O cliente usa o endereço link-local para se comunicar com todos osroteadores da rede através do endereço multicast ff02::2 .Com o IPv6, administradoresnão podem simplesmente evitar oDHCP, ou pelo menos sua versãostateless. O sistema operacionalusa a autoconfiguração para descobrirseu próprio endereço IPv6e, então, o DHCP para pegar maisdados, como os do servidor DNS edomínio DNS. O Windows Vista eo 7 fazem isso automaticamente, sea flag OtherConfig estiver definida noanúncio de roteamento.Entradas DNSe DHCPFinalmente, em algumas configuraçõesvocê quer o que servidorDNS acrescente automaticamenteos hostnames de todos os sistemasque inicializem em seu diretório;isso é típico em um cenário ActiveDirectory, por exemplo.Em sistemas Linux isso dá um bomtrabalho, o que tem levado muitosadministradores a usar uma soluçãoprovisória no IPv4 e a autorizar o servidorDHCP a modificar os dados nazona DNS dinamicamente.Com o IPv6, você não pode usara autoconfiguração e o DHCP statelessporque o servidor DHCPprecisa saber o endereço IPv6 docliente para adicionar um registro.Em outras palavras, você precisa deum servidor DHCP stateful paradesignar endereços IPv6 a partirde uma fila.Linux Magazine #83 | Outubro de 201163


SEGURANÇA | Segurança com IPv6Clientes Windows aceitam issoautomaticamente se o anúncio doroteador tiver a definição ManagedFlag .Em sistemas Linux, você precisainstalar e configurar de antemãoum cliente DHCP adequado. A redundânciaé importante aqui; se oservidor DHCP falhar, haverá problemasna rede local.A morte do SmurfO IPv6 acaba com os broadcasts, oque é uma coisa boa. Simples ataquesde amplificação, como a técnicaSmurf [14] , são assim impossíveis etempestades de broadcasts são coisasdo passado também. Embora oNDP use endereços multicast paradescobrir o endereço MAC de seusparceiros de comunicação, os gruposmulticast são escolhidos de modointeligente para que a comunicaçãoseja restrita ao único computadorque o host precisa encontrar, namaioria dos casos.Outros serviços que dependiamda comunicação broadcast agorausam multicast; por exemplo, oDHCPv6 usa os dois endereços bemconhecidos ff02::1:2 e ff05::1:3 . Oprimeiro é um endereço link-localmulticast ( ff02 ) reservado para todosos agentes DHCP (servidores erelays). O segundo é um endereçoO autorRalf Spenneberg é instrutor freelancerde Unix/Linux, consultor, autore CEO de sua própria empresa detreinamento. Ralf publicou diversoslivros sobre detecção de invasão,SELinux, fi rewall e VPNs. A segundaedição de seu último livro, VPN on Linux, foi publicada recentemente.Gostou do artigo?Queremos ouvir sua opinião.Fale conosco emcartas@linuxmagazine.com.brrEste artigo no nosso site:http://lnm.com.br/article/5871site-local multicast ( ff05 ) reservadopara servidores DHCP.Graças a essas designações, o IPv6tipicamente consegue restringir amanipulação de pacotes na pilha IPdos sistemas envolvidos na troca. Issoreduz dramaticamente o tráfego derede, comparado com comunicaçõesbroadcast IPv4.O IPv6 também tem compatibilidadeobrigatória com a família doprotocolo IPsec. Mas isso não melhoraautomaticamente a segurança: seo administrador não configurar esserecurso, o tráfego não será criptografado.A presença do IPsec não necessariamentesignifica mais segurança;apenas economiza o trabalho de terque instalar programas. Questões deinteroperabilidade e erros de configuraçãoainda existem.Mais informaçõesDia da caçaConsiderando o estado da arte e redestípicas de 15 anos atrás, os inventoresdo IPv6 acertaram em muitas coisas.Desde então, os sistemas operacionaise o gerenciamento de rede com o IPv4se desenvolveram substancialmente;enquanto com o IPv6, isso não aconteceu.A autoconfiguração só configurao endereço IP e, se os clientes foremmodernos, designa o servidor DNS.Para todos os outros dados, você aindaprecisa de um servidor DHCP.DNS e firewalls estão se tornandomais importantes e, sem o IPsec, oIPv6 não irá melhorar a segurançade uma rede corporativa. Pelo contrário,significa que administradoresterão que prestar ainda mais atençãose os clientes estão protegidos ouacessíveis globalmente. ■[1] NDP: http://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol[2] Rascunho NAT66: http://www.ietf.org/proceedings/08nov/slides/behave-14.pdf[3] Protocolo Secure Neighbor Discovery (SEND):http://www.faqs.org/rfcs/rfc3971.html[4] Dynamic ARP Inspection (DAI): http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SXF/native/configuration/guide/dynarp.html[5] Extensões de privacidade IPv6: http://www.faqs.org/rfcs/rfc4941.html[6] Habilitando extensões IPrivacy: http://blog.philippklaus.de/2011/05/ipv6-privacy-extensions/[7] Filtrando mensagens ICMPv6 em fi rewalls: http://www.faqs.org/rfcs/rfc4890.html[8] Stateless Automatic Autoconfi guration (SLAAC):http://www.faqs.org/rfcs/rfc4862.html[9] APIPA: http://msdn.microsoft.com/en-us/library/aa505918.aspx[10] Avahi: http://avahi.org/[11] Zeroconf: http://en.wikipedia.org/wiki/Zero_configuration_networking[12] Suíte de ataque THC IPv6: http://www.thc.org/thc-ipv6/[13] Opção IPv6 para confi guração DNS: http://www.faqs.org/rfcs/rfc5006.html[14] Técnica de ataque Smurf: http://en.wikipedia.org/wiki/Smurf_attack64 www.linuxmagazine.com.br


VMware Server 2.0 | REDESVMware Server 2.0 em distribuições Linux recentesAtualizaçãodisfuncionalREDESAtualizações de rotina em uma distribuição Linux podem causar algumador de cabeça; temos algumas dicas práticas para ajudar na restauração.por Udo SeidelDistribuições Linux que tenhamas últimas atualizações instaladassão comuns, principalmenteem ambiente doméstico. Emmuitos casos, as atualizações automáticasestão habilitadas e as mudançasnem são percebidas, a menos que umaplicativo dê problemas. Neste artigo,examinaremos um exemplo prático emque o VMware Server 2.0 se recusou acooperar depois que o administradoratualizou o sistema operacional subjacente,do Fedora 13 para o 14.HistóricoO ponto de partida desta história é umservidor funcional VMware [1] com oFedora 13 64-bits (incluindo um conjuntocompleto de atualizações) [2] .Além de vários usuários para testes, duasmáquinas virtuais são executadas nessehardware e não posso ficar sem elaspor muito tempo. O Fedora 14 haviaacabado de sair, e minhas experiênciasiniciais com outras máquinas me deixaramotimista sobre a possibilidade dearriscar uma atualização completa demeu ambiente Linux em casa. Tudo oque precisei fazer foi habilitar os novosrepositórios de pacotes e iniciar o gerenciadorde pacotes Yum [3] .Graças a uma imagem de disco dosistema operacional não muito grandee acesso rápido a Internet, meu servidortinha um Fedora 14 recém-instaladoem apenas alguns minutos (logo apósa reinicialização). No entanto, dealgum modo, perdi minha conexãocom meu aplicativo VMware. Umainspeção rápida no arquivo /var/log/messages revelou o problema: o processovmware-hostd quebrou com um errode segmentação ( listagem 1 ).Plano AUma análise inicial mostrou que oVMware não se dá bem com a novaversão da glibc do Fedora 14. Há algumaversão mais recente do VMware Server?Não, porque a VMware descontinuouo desenvolvimento desse produto [4] .A alternativa seria o ESXi [5] . Infelizmente,o hardware que tenho é incompatívele essa não era uma opção parauma solução provisória rápida. Umaconferida no servidor de atualizaçõesdo Fedora mostrou que não há umanova versão do pacote glibc. Em outraspalavras, atualizar o sistema operacionalestá fora de cogitação.Então, eu tinha duas possibilidadespara resolver o problema: reverteras mudanças ou descobrir um ajusteprovisório. Voltar para a versão anteriorFigura 1 O Yum facilita o retrocesso do Fedora 14 para 13, mas isso aindaenvolve algumas etapas manuais.Linux Magazine #83 | Outubro de 201165


REDES | VMware Server 2.0Listagem 1: Erro de segmentação no vmware-hostd01 Dec 6 13:30:08 virtual kernel: [175.894212] vmware-hostd[3870]:segfault at 2100001c4f ip 0000003c0cb32ad0 sp 00007f3889e9cb88error 4 in libc-2.12.90.so[3c0ca00000+19a000]Listagem 2: Etapas manuais antes do downgrade01 rpm -e libmount --nodeps02 yum downgrade util-linux-ng libblkid libuuid03 rpm -e upstart-sysvinit --nodeps04 yum downgrade upstart05 rpm -Uvh gdbm-1.8.0-33.fc12.i686.rpm --nodeps --force06 yum downgrade perl\*07 rpm -e man-db08 rpm -e pam_ldap --nodeps09 yum downgrade nss_ldap10 ...significaria retroceder do Fedora 14 parao 13. E, a menos que você tenha se preparadopara isso criando snapshots dosistema de arquivos, esse é um processodefinitivamente não trivial. Além disso,a questão da incompatibilidade entreaplicativos e a nova glibc é conhecidae fácil de ajustar em alguns programas.A solução provisória que encontreifoi instalar uma versão antiga da biblioteca,em paralelo com a nova, e alteraro ambiente do aplicativo para que eleencontrasse a versão “certa” da biblioteca.Soa simples, mas pode ser muitocomplexo; minha primeira tentativafalhou. Nesse ponto, já tinha perdidoum dia e isso estava começando a meprejudicar. Precisava de uma solução:deveria tentar o downgrade, afinal?Prós e contrasUma abordagem é tentar substituir ospacotes individuais com versões antigas,começando com a glibc, mas isso envolveriasaber exatamente quais pacotessubstituir (Listagem 2). Além disso, executarum sistema híbrido com pacotesde duas versões da distribuição não émuito recomendável. Pode haver efeitoscolaterais, incluindo instabilidade, aindamais se você estiver testando isso comum componente central como a glibc.Felizmente, o Yum introduziuuma opção de downgrade na versão3.2.27, que torna fácil retroceder doFedora 14 para o 13. Contudo, só épossível aplicar a função em pacotesindividuais. Você deve começargerando uma lista de pacotes. Semusar a opção de histórico do Yum,o método mais fácil é o comando:rpm -qa --queryformat'%{NAME}\n' | xargsyum downgradeInfelizmente, essa elegante estratégiafalhou de novo no mundoreal ( figura 1 ).O problema básico é que o Fedora14 distribui os pacotes individuais emRPMs diferentes do que no Fedora13. Na maioria dos casos, você poderemover o pacote conflitante com:rpm -e pacote1 --nodepse então fazer o downgrade do outropacote com :yum downgrade //pacote2//Após algumas repetições desseprocesso, o conflito deve ser resolvidoe você pode retroceder todo osistema para a versão anterior. A reinicializaçãofinal habilita o kernelanterior, as bibliotecas do sistema eo VMware Server aceita o ambientee decide voltar a trabalhar.Próxima tentativaNo entanto, esse recuo é apenas umajuste de curto prazo. Mais cedo oumais tarde, você terá que atualizar osistema operacional ou tentar umasolução diferente de virtualização.Mas, uma vez que tenha essa soluçãoprovisória implementada, podegastar tempo considerando os próximospassos.No meu caso, a incompatibilidadeentre a glibc e o VMware Serverestava bem documentada; todas assoluções na web usavam a abordagemque tentei antes: a instalação paralelade uma versão antiga da glibc.Mas isso realmente poderia seruma solução?Talvez houvessem dependênciasocultas, digamos, em relação a maisbibliotecas que teriam que ser instaladasparalelamente. Uma verificação do executável/usr/sbin/vmware-hostd mostrouque isso é apenas um script Shell. Oarquivo binário em si está no diretório/usr/lib/vmware/bin . O comandoldd /usr/lib/vmware/bin/vmware-hostdmostra quais outros objetos tambémsão relevantes: seis pacotes no total( listagem 3 ).Finalmente, o pacote zlib medeu a solução para o problema. Paraimplementá-la, você pode começarcriando um diretório para a instalaçãoparalela:mkdir -p/usr/lib/vmware/lib/fc13lib64O próximo passo é pegar os RPMsglibc e zlib do Fedora 13 e descompactá-los.Você pode usar o comandorpm com um diretório root alternativopara a instalação paralela [6] [7] ;no entanto, converter os RPMs emarquivos CPIO e, então, descompactá-los[7] [8] faz mais sentido( figura 2 ). Essa abordagem evita anecessidade de executar scripts antese depois da instalação e mantém obanco de dados RPM limpo.Depois que tiver as bibliotecasno devido lugar, é preciso ensinarao binário vm-ware-hostd a usar osobjetos instalados em paralelo. Parafazer isso, defina a variável de Shell66 www.linuxmagazine.com.br


VMware Server 2.0 | REDESFigura 2 Pacotes RPM podem ser extraídos facilmente com os comandosrpm2cpio e cpio .LD_LIBRARY_PATH e, depois, inicie obinário. Após fazer isso, você podetestar o ambiente ( listagem 4 ). Naverdade, você pode fazer isso no Fedora13, mas, obviamente precisaráListagem 4: LD_LIBRARY_PATHdo novo sistema operacional para oteste final. Antes da atualização, vocêprovavelmente vai querer realizaros procedimentos para tornar umpossível retrocesso completo maisListagem 3: Bibliotecas necessárias para o vmware-hostd01 $ ldd /usr/lib/vmware/bin/vmware-hostd02 linux-vdso.so.1 => (0x00007fff75fff000)03 libz.so.1 => /lib64/libz.so.1 (0x0000003c0e600000)04 libvmomi.so.1.0 => not found05 libvmacore.so.1.0 => not found06 libexpat.so.0 => not found07 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003c0da00000)08 libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x0000003c14200000)09 libstdc++.so.6 => /usr/lib64/libstdc++.so.6(0x0000003c0e200000)10 libpthread.so.0 => /lib64/libpthread.so.0(0x0000003c0d200000)11 libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f086f4d5000)12 libc.so.6 => /lib64/libc.so.6 (0x0000003c0ca00000)13 /lib64/ld-linux-x86-64.so.2 (0x0000003c0c600000)14 libdl.so.2 => /lib64/libdl.so.2 (0x0000003c0ce00000)15 libm.so.6 => /lib64/libm.so.6 (0x0000003c0de00000)16 libfreebl3.so => /lib64/libfreebl3.so (0x0000003c0ee00000)17 $18 $ ldd /usr/lib/vmware/bin/vmware-hostd | awk '{print $3}'| grep lib | xargs rpm --queryformat '%{NAME}\n' -qf | sort -u19 glibc20 libgcc21 libstdc++22 libxml223 nss-softokn-freebl24 zlib25 $01 $ tail /usr/sbin/vmware-hostd02 if [ ! “ VMWARE_NO_MALLOC_CHECK “ = 1 ]; then03 export MALLOC_CHECK_=204 fi0506 #####07 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/vmware/lib/fc13lib6408 export LD_LIBRARY_PATH09 #####1011 eval exec "$DEBUG_CMD" "$binary" "$@"12 $fácil. Felizmente, fui poupado desurpresas desagradáveis aqui e oVMware Server agora está sendoexecutado feliz no Fedora 14.ConclusãoA solução que descrevi deve funcionarem qualquer distribuiçãoLinux. Dependendo do gerenciadorde pacotes de sua distribuição, serãonecessários processos diferentespara obter as bibliotecas antigas. Amoral dessa história é que vale apena ter um plano de contingênciase estiver considerando mudançasde baixo nível em um sistema. Assim,você poderá implementá-larapidamente caso as coisas saiamdrasticamente erradas. ■Mais informações[1] VMware Server: http://www.vmware.com/products/server/[2] Fedora: http://fedoraproject.org/[3] Yum: http://yum.baseurl.org/[4] Política de versões VMware:http://www.vmware.com/support/policies/lifecycle/general/[5] VMware vSphereHypervisor: http://www.vmware.com/products/vsphere -hypervisor/[6] Comunidade VMware, errode segmentação no Fedora14: http://communities.vmware.com/message/1641223[7] RPM: http://www.rpm.org/[8] GNU cpio: http://www.gnu.org/software/cpio/Gostou do artigo?Queremos ouvir sua opinião.Fale conosco emcartas@linuxmagazine.com.brrEste artigo no nosso site:http://lnm.com.br/article/5875Linux Magazine #83 | Outubro de 201167


PREVIEWLinux Magazine #84Computação dealto desempenhoA Linux Magazine de Novembro irátrazer como tema de capa “Computaçãode alto desempenho no mundoreal”. Você irá ver como montarfacilmente um cluster com softwarelivre e utilizar todo o poder de seuparque de máquinas para realizar tarefascomo processamento de grandesvolumes de informação, renderizaçãode multimídia e muito mais. ■Admin Magazine #4Otimização develocidadeNa próxima edição da Admin Magazine,você ira conhecer as melhores dicas etutoriais para tirar maior proveito doscomputadores existentes em seu parquede TI, diminuindo assim a obsolescênciado hardware e as mais diversasformas para aumentar o desempenhodos serviços que são executados na rede.Não perca a edição #4 da melhor revistapara administrador de redes.82 www.linuxmagazine.com.br

More magazines by this user
Similar magazines