25 - Criptografia_nov_2006

Page 1

11/2006

www.samsung.com.br

LINUX NA GLOBO p.21 Sergio Amadeu e Julio Neves entrevistados no Programa do Jô

DIRECIONANDO INVESTIMENTOS p.26 Linux em agência de fomento a pequenas empresas

CEZAR TAURION p.28 Código Aberto impacta indústria do software

9 771806 942009

# 25

A REVISTA DO PROFISSIONAL DE TI

CRIPTOGRAFIA SISTEMAS CRIPTOGRÁFICOS SEGURANÇA DE HDS, CDS E DVDS UDEV SQUID

SISTEMAS DE

CRIPTOGRAFIA

p.29

SISTEMAS DE ARQUIVOS CRIPTOGRAFADOS OFERECEM UMA PODEROSA PROTEÇÃO PARA A ATUAL CULTURA DA COMPUTAÇÃO CASUAL. MANTENHA SEUS DADOS A SALVO DE OLHOS CURIOSOS E CRIMINOSOS VIRTUAIS. » Sistemas de arquivos criptográficos: qual o melhor? p.30 » Cifragem de discos rígidos: proteja todo o sistema p.38 » Criptografia avançada de CDs e DVDs p.44

UDEV p.56 O fantástico sistema de administração de hardware do Linux

BRIDGE COM SQUID p.68 Use um proxy e filtre conteúdo ao mesmo tempo – sem reconfigurar nada!

BASH

Os discos rígidos SATA Samsung têm a melhor performance e a maior confiabilidade do mercado. Além disso, gerenciam melhor a temperatura e são mais resistentes e silenciosos. Afinal, a Samsung busca velocidade em tudo, até na inovação tecnológica.

R$ 13,90 € 7,50

00025

Linux Magazine

Você entra com os dados, a gente com a velocidade. HDDs SATA Samsung.

# 25 Novembro 2006

#25 11/06

XARA LX

VEJA TAMBÉM NESTA EDIÇÃO:

BOINC

» SLED 10: todas as novidades p.52 » Temas para o terminal com Bashish p.66 » Monte um grid com o BOINC p.61 » Xara LX: desenhos vetoriais 3D p.49 » Programação: Meta-python p.73

http://supertuxbr.blogspot.com

WWW.LINUXMAGAZINE.COM.BR

COM DVD SLACKWARE 11 PARA ASSINANTES


http://supertuxbr.blogspot.com


Expediente editorial

Direitos Autorais e Marcas Registradas © 2004 - 2006: Linux New Media do Brasil Editora Ltda. Distribuição: Distmag Impressão e Acabamento: Parma ISSN 1806-9428 Impresso no Brasil

INSTITUTO VERIFICADOR DE CIRCULAÇÃO

em processo de filiação

Idéias derrubam impérios

EDITORIAL

Diretor Editorial Rafael Peregrino da Silva peregrino@linuxmagazine.com.br Coordenador Editorial e Diretor de Arte Luciano Hagge Dias lhagge@linuxmagazine.com.br Editores Tadeu Carmona tcarmona@linuxmagazine.com.br Pablo Hess phess@linuxmagazine.com.br Tradução e Revisão Livea Marchiori lmarchiori@linuxnewmedia.com.br Design da Capa Luciano Hagge Dias lhagge@linuxmagazine.com.br Centros de Competência Centro de Competência em Software: Oliver Frommel ofrommel@linux-magazine.com Centro de Competência em Hardware: Mirko Dölle mdoelle@linux-magazine.com Centro de Competência em Redes e Segurança: Achim Leitner aleitner@linux-magazine.com Correspondentes & Colaboradores Augusto Campos, Cezar Taurion, Charly Kühnast, Christian Ney, Frank Wieduwilt, Jens Christoph Brendel, Joe Casad, Jose Maria Ruiz, Klaus Knopper, Marc Seil, Mathias Jansen, Michael Nerb, Peter Gutmann, Peter Kreussel, Oliver Frommel e Rene Rebe. Diretor Comercial Claudio Bazzoli cbazzoli@linuxmagazine.com.br Anúncios: Claudio Bazzoli (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. Rua Arizona, 1349 Conj. 5B – Cidade Monções 04567-003 – São Paulo – SP – Brasil Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410

Prezado leitor, prezada leitora da Linux Magazine, no dia 5 de outubro de 2006 o Brasil pôde finalmente assistir, em TV aberta, um programa de massa e relevância nacional abordando o tema Linux e Software Livre: Júlio Cezar Neves e Sérgio Amadeu da Silveira foram os entrevistados do programa de Jô Soares, na Rede Globo. Sem entrar no mérito do desempenho dos entrevistados durante o programa, algo que muitos leitores questionaram enviando emails para a Redação, a entrevista é um episódio importante no cenário nacional no que tange à notoriedade do Software Livre. É parte do movimento de tornar conhecida uma tecnologia que, mais cedo ou mais tarde, inevitavelmente, vai fazer parte da vida de todos. A entrevista abordou, logo de início, o uso do Software Livre pelo “fenômeno” Google. Não vamos nos ocupar de descrever aqui o seu conteúdo – quem quiser pode assisti-la diretamente na página do Programa do Jô –, mas do novo modelo de negócios criado pelo Google, que usa a Internet e uma combinação de sistemas de código aberto como infra-estrutura – e é, por isso mesmo, independente de plataforma. O modelo de negócios da Microsoft, por outro lado, foi criado em torno da plataforma PC. Einstein postulou que não é possível resolver problemas através do mesmo tipo de raciocínio usado para criá-los. Esta é a razão pela qual a Microsoft se encontra em meio a uma crise sem precedentes: toda a sua estratégia de negócios é baseada no controle de uma plataforma de escalabilidade questionável. Se Redmond quisesse realmente manter a sua hegemonia, eles deveriam jogar fora os 5 bilhões de dólares investidos no desenvolvimento do Windows® Vista e criar um novo sistema operacional mais simples, leve e seguro, que pudesse funcionar em qualquer máquina hoje rodando Windows 2000 ou XP, a um preço muito inferior ao praticado atualmente (em torno de 50 dólares, que é mais do que a empresa recebe hoje por uma versão OEM do Windows, que já vem instalada “de fábrica”). O Microsoft Office® deveria custar, no máximo, a mesma coisa. Por quê? Porque o mercado para atualizações de sistema é, hoje, no mínimo, cinco vezes maior do que o dos chamados PCs OEM . A Microsoft precisaria (mas, provavelmente, não percebe), finalmente, se concentrar mais em atender a sua base instalada. Tais máquinas seriam mais do que suficientes para usuários de sistemas cada vez mais voltados ao uso da Internet como ferramenta de trabalho. Felizmente, graças ao Linux, empresas como Canonical, Mandriva e Novell estão mais bem posicionadas para atender a essa demanda. De outro lado, os clientes atuais do Google, uma massa gigantesca formada principalmente por pequenas e médias empresas, não fazem, de modo geral, anúncios em nenhuma outra mídia. E a empresa veicula esses anúncios usando algoritmos proprietários sobre os dados coletados pelos seus robôs de indexação (usados pela máquina de busca), bem como sobre os dados dos usuários de seus serviços de email, grupos, chat etc. É todo um novo jeito de fazer negócios. E a empresa está ainda posicionada como referência para o que se convencionou chamar de Web 2.0, tendo como base de desenvolvimento sistemas e padrões abertos. Os primeiros eles podem adaptar rapidamente de acordo com as suas necessidades, o que lhes permite concentrarem-se em seu segmento de negócios. Isso lhes confere a escalabilidade que falta hoje à Microsoft, e, a nosso ver, se as coisas não mudarem rápido em Redmond, o império do Windows estará finalmente com os dias contados. Isso não é apenas por causa da tecnologia, mas especialmente por causa do modo como a tecnologia está sendo utilizada em cada um dos modelos de negócios.

Rafael Peregrino da Silva Diretor Editorial

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

3


ÍNDICE

CAPA Segredos e discos

29

Os computadores atuais são suficientemente rápidos para algumas técnicas criptográficas bastante sofisticadas. Veja como manter seus dados a salvo de olhos curiosos e espiões. Candidatos secretos

30

Se você não for um especialista em segurança, mas estiver em busca de um sistema de arquivos criptografado, talvez esteja se perguntando quais são as alternativas. Conheça algumas das opções mais populares de criptografia para Linux. O disco todo

38

Criptografar um diretório home é fácil. Criptografar seu disco rígido inteiro, incluindo a partição raiz, dá um pouco mais de trabalho. Escondendo o jogo

44

Um disco rígido criptografado no seu servidor não serve de nada se os dados confidenciais de CDs ou DVDs caírem nas mãos erradas. Mostraremos algumas soluções convenientes para criptografar seus dados em mídias removíveis.

http://supertuxbr.blogspot.com 4

http://www.linuxmagazine.com.br


Linux Magazine 25 | ÍNDICE

TUTORIAL

COLUNAS Augusto Campos Charly Kühnast Klaus Knopper Pablo Hess

10 12 14 16

Quem Udev não teme Depois de três anos em segundo plano, o Udev finalmente superou o sistema legado Dev-FS. Vamos ver o que há debaixo do capô do sistema de gerenciamento de dispositivos Udev da sua máquina Linux.

56

NOTÍCIAS Segurança ➧ Kernel Linux

18

➧ X.org ➧ OpenSSL ➧ OpenSSH ➧ Firefox, Thunderbird e SeaMonkey Geral ➧ Busca em código-fonte com o Google

20

SYSADMIN

➧ Yahoo vai liberar códigos

Ciclos ociosos 61 A computação em grid permite que pequenos PCs resolvam grandes problemas. Você pode usar o sistema de grid do famoso projeto SETI@home para criar suas próprias soluções de grid computacional.

➧ Lançado Mandriva 2007 ➧ Urnas proprietárias são seguras? ➧ Interatividade realista em ambiente Linux ➧ Software Livre em cadeia nacional

CORPORATE Notícias ➧ Programas educacionais da Intel fazem 5 anos

22

➧ Eudora abre seu código ➧ Microsoft se livra de processo por monopólio ➧ Google compra YouTube ➧ Novell oferece suporte a Red Hat virtualizado ➧ VoIP: Linux melhor que Cisco ➧ Novell lança Suse Linux Enterprise 10 no Brasil

Shell ilustrado O Bashish dá um toque de estilo à linha de comando.

66

Filtro na ponte Proxies com cache lembram-se de páginas e as servem localmente, economizando tempo e dinheiro. Os membros mais inteligentes dessa família também apagam conteúdo perigoso e oferecem bridging transparente.

68

➧ GFS2 no kernel oficial ➧ Mandriva compra Linbox ➧ Fonality adquire Trixbox ➧ SL no Poder Judiciário Entrevista: InvesteRio Coluna: Cezar Taurion

26 28

ANÁLISE Quase real Gráficos vetoriais são parecidos com revistas em quadrinhos: apesar de você conseguir usar sombras e luzes, é mais ou menos impossível atingir um realismo fotográfico. Mas tudo isso pode mudar, agora que o Xara LX foi liberado como um produto de código aberto.

49

PROGRAMAÇÃO Metalinguagem Com a chegada do Ruby On Rails, os programadores estão redescobrindo um conceito não muito moderno, mas surpreendente...Programas que modificam programas?

73

SERVIÇOS Camaleão de gravata O Suse Linux Enterprise Desktop é a versão corporativa da Novell baseada no Open Suse. Integra recursos de segurança avançada (AppArmor) e grandes inovações em usabilidade. Confira se essa é a distribuição certa para sua empresa.

52

Editorial Emails Linux.local Eventos Índice de anunciantes Preview

03 06 78 80 80 82

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

5


Emails para o editor

u c.h ww . sx

EMAILS

Permissão de Escrita

✎ Leitores autores

Venho por meio deste dar uma sugestão à revista: já que na edição de setembro estava-se falando sobre os leitores publicarem artigos ou enviarem dicas sobre os assuntos que lhes interessem, gostaria de propror à revista que lançasse uma campanha para estimular os leitores (principalmente os que já tenham bastante experiência no assunto) a publicarem artigos e até cases reais sobre os mais variados assuntos envolvendo Linux. Claro que, para que os artigos tenham qualidade, a revista poderia escolher um ou dois artigos de leitores por mês, e para encorajar (estimular) os leitores a mandarem artigos de qualidade, podia-se criar uma premiação para esses colaboradores, algo como a cada seis meses escolher o melhor artigo de um leitor e premiá-lo com uma assinatura da revista, ou alguma outra premiação. Enfim, estou enviando esta sugestão apenas para ver mais artigos bons; também para que as pessoas que tenham um bom conhecimento para colaborar com a comunidade Open Source e a revista Linux Magazine sejam estimuladas a enviar um artigo que será útil e tenha um certo padrão de qualidade. Espero estar colaborando para que a revista continue sendo o sucesso que é e também para que ela melhore para mim e os demais leitores. Grato, Fernando Zank Correa Evangelista Caro Fernando, a Linux Magazine está e sempre esteve aberta à participação dos leitores. Nós sempre tentamos publicar artigos, relatos de eventos e casos de sucesso do Linux de autores brasileiros. O único pré-requisito para isso é que tenham o alto nível de informação que caracteriza a revista. O endereço para envio desse tipo de material é material@linuxmagazine.com.br, e reiteramos o convite a todos que estiverem dispostos a contribuir com material para a Linux Magazine. Vamos considerar a idéia da premiação. Muito obrigado pela sugestão. ■

sa

nja

g je

ne

ro

–w

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.

✎ Aumento de preço

Prezado Editor, me tornei leitor assíduo da revista Linux Magazine, mas neste mês eu levei um tremendo susto quando fui à banca de jornais retirar o meu exemplar: o preço está muito alto!!! A revista deveria ser um meio para divulgar o Software Livre em geral, mas, pra que isso ocorra, é necessário que o preço dela em banca seja mais “popular”, pois assim atrairá mais leitores e conseqüentemente mais usuários de Software Livre. André Ricardo – Garça, SP Sou comprador da revista e gostaria de saber qual o motivo do aumento de preço para a edição de nº 23 – Setembro de 2006. O valor de R$ 10,90 era um preço justo a se pagar por uma revista com a alta qualidade técnica e gráfica como a de vocês, mas os atuais R$ 13,90 estão acima da realidade e das vantagens de se pagar por uma revista. Azevêdo Neto Caros André, Azevêdo e demais leitores da Linux Magazine, primeiramente obrigado por manifestarem sua opinião. Recentemente reformulamos a distribuição da revista. Adotamos outra política de inclusão do CD na revista e mudamos de empresa de distribuição para solucionarmos problemas operacionais que nos impediam de chegar a todos os nossos leitores. A mudança também reduziu nossos custos de produção, o que permitiu que o aumento de preço repassado aos leitores fosse menos significativo. Portanto, esse pequeno aumento do preço de capa da Linux Magazine foi a única solução para compensarmos nossos custos que já vinham aumentando há diversos meses, sem que houvéssemos repassado qualquer aumento para o leitor. Agradecemos a compreensão de todos e esperamos que continuem apreciando o conteúdo da Linux Magazine. ■

http://supertuxbr.blogspot.com 6

http://www.linuxmagazine.com.br


SEJA LIBRIX NA RUA, SEJA LIBRIX EM CASA, SEJA LIBRIX NO TRABALHO.

A solução completa.

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.

É 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.

Toda a liberdade que você precisa para trabalhar com mais mobilidade, usando a internet sem fio, e ainda operar com software livre.

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.

DPZ

Foto ilustrativa.

• Monitor LCD de 15” incluso • 512 MB de memória • Combo (DVD + gravador de CD)

Itautec Minitorre Código da oferta: IN527LX

IDEAL PARA ACESSO À INTERNET.

• Processador Intel® Celeron® D 315 (256 KB L2 cache, 2.26 GHz, 533 MHz) • LIBRIX - Distribuição Linux Itautec • Monitor LCD de 15”• 512 MB de memória • HD 40 GB • Floppy • Combo (DVD + CD-RW) • Placa de vídeo integrada • Placa de rede integrada • Fax/Modem 56 Kbps • Teclado • Mouse • 1 ano de garantia balcão*

10x R$

149,90

sem juros

ou R$ 1.499,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.

0800 121 444

De 2ª a 6ª, das 8h às 20h. Sábado, das 9h às 18h. Domingo, das 9h às 15h.

http://supertuxbr.blogspot.com Oferta válida até 5/11/2006 ou enquanto durar o estoque.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 e em outros países.Microsoft e Windows são marcas registradas da Microsoft Corporation.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. 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. *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.Preço 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 da oferta aqui veiculada.Quantidade:10 unidades.Empresa/produto beneficiado pela Lei de Informática.Foto meramente ilustrativa.


EMAILS | cartas@linuxmagazine.com.br

✎ Bom trabalho

Boa tarde, pessoal. Estou enviando este email para elogiá-los pelo excelente trabalho (...). Aqui no Brasil, somos carentes de boas publicações como Easylinux e Linux Magazine, que fornecem informação com competência e muita qualidade. Leandro Bueno dos Santos Caro Leandro, muito obrigado pelos elogios. Eles são nossa maior recompensa. Esperamos poder sempre satisfazer assim aos nossos leitores. ■

✎ Xen

Vocês já publicaram em uma edição como instalar o Xen. No entanto, eu tentei instalar no Debian 3.1 e muitos módulos deixam de funcionar, até mesmo o sistema de arquivos XFS. Mesmo em pacotes compilados há esse problema. Deve ser uma dúvida de muitos usuários. Obrigado desde já. Maurício Coutinho Caro Maurício, nossa matéria sobre instalação e uso do Xen, publicada na edição 9, de junho de 2005, aborda uma versão um pouco mais antiga desse sistema de virtualização. Recomendamos que você use sempre a versão mais nova disponível, contanto que seja estável, pois a sua distribuição deve conter os patches necessários a ela. A matéria sobre o Xen publicada na Linux Magazine número 24, de setembro de 2006, examina a última versão (3.0) do sistema de virtualização, e portanto deve ser preferida à da edição 9. ■

✎ Distribuição para servidores

Olá, amigos. Tenho uma dúvida: o Fedora 5 é uma distribuição de Linux que incorpora as versões mais atualizadas dos programas, mas ele tem estabilidade para trabalhar como

servidor (Samba, NFS, web, mail, banco de dados etc...)? O Debian e o Slackware são mais rápidos que ele? Willian Ricardo Firmino – Ribeirão Preto, SP Willian, essa pergunta realmente é muito comum, e não tem uma resposta tão fácil e direta. O Fedora de fato é uma distribuição bastante atualizada. Seu ciclo de desenvolvimento e lançamento é fixo, e portanto previsível, o que ajuda a planejar antecipadamente as atualizações dos servidores. Porém, uma vez instalado o servidor, isso pode incomodar o administrador, pois há sempre uma versão mais nova que aquela instalada na máquina. Uma das maiores vantagens de se usar o Fedora em servidores é o uso que ele faz, “de fábrica”, do Security Enhanced Linux, ou SELinux. Recentemente publicamos uma matéria sobre o SELinux, inclusive comparando-o à solução de segurança desenvolvida pela Novell, o AppArmor. O SELinux consiste de um conjunto de políticas para impedir que programas façam uso indevido do hardware, dos recursos do sistema, e até mesmo proíbe o acesso a determinados arquivos importantes. Com isso, mesmo que um programa contenha falhas de segurança, um agressor permanecerá incapaz de explorar esses defeitos, uma vez que o programa fica constantemente trancado em relação aos recursos que pode acessar. É um sistema bastante complexo, mas seu resultado é um aumento significativo da segurança do servidor. A primeira resposta, então, é que o Fedora é adequado para trabalhar como servidor. O Debian, como muitos sabem, prima pela estabilidade do sistema. O ciclo de desenvolvimento da distribuição é mais lento, o que irrita muitos administradores, e ao mesmo tempo tranqüiliza diversos outros. Comparando sua segurança à do Fedora Core, o Debian baseia-se mais fortemente na confiança nos programas que compõem a distribuição, enquanto o Fedora se utiliza do SELinux para impedir que as eventuais falhas nos programas venham a comprometer o sistema. O Slackware é uma distribuição que deixa o poder (e o trabalho) todo na mão do administrador. Políticas de segurança e atualização de pacotes ficam a critério do administrador, e então é mais difícil caracterizar esses aspectos de uma forma generalizada para toda a distribuição. Em relação à velocidade, é difícil estabelecer alguma regra geral. Pode-se dizer que essas três distribuições são igualmente rápidas. Porém, enquanto o Fedora pode sofrer de uma pequena lentidão devido ao uso do SELinux, ele possui um sistema de gerenciamento de pacotes mais sofisticado, assim como o Debian. Entretanto, o gerenciamento de pacotes RPM pelo yum ou pelo apt-rpm, no Fedora, é bastante criticado, enquanto o apt no Debian costuma ser bastante elogiado. O Slackware, por sua vez, opta por não possuir um sistema sofisticado de gerenciamento de pacotes. Ele não oferece a resolução de dependências entre os pacotes por padrão. Por isso, o administrador pode (e deve) instalar somente aqueles pacotes que sabe que são necessários, o que pode ser difícil em sistemas com gerenciadores de pacotes. Enquanto a distribuição tende a ficar mais rápida com menos programas desnecessários instalados, a tarefa de gerenciamento de pacotes pode tornar-se mais trabalhosa e demorada no Slackware. Concluindo, as três distribuições são altamente adequadas ao uso em servidores. Cabe ao administrador escolher a que se encaixa melhor às suas necessidades e expectativas. Segurança, velocidade e facilidade de administração devem ser sempre levadas em conta. ■

http://supertuxbr.blogspot.com 8

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Você consegue se lembrar de todos os seus afazeres?

COLUNA

Augusto Campos Controlar as tarefas do sistema operacional em geral é mais simples do que gerenciar as do administrador de sistemas.

U

ma de minhas obsessões pessoais é o controle de tarefas. Não, não estou falando do scheduling dos processos do sistema operacional nos servidores de rede, mas sim daquela atividade básica, essencial e tantas vezes negligenciada: a manutenção da lista de pendências e compromissos, tanto profissionais quanto pessoais. Embora alguns se saiam melhor do que outros nessa tarefa, sempre me pareceu que o controle de pendências é uma atividade que ocupa e interessa a maior parte dos administradores de sistemas, e tenho certeza de que não é por acaso que as duas colunas que geraram maior número de respostas para mim desde que comecei a escrever mensalmente na Linux Magazine tratavam exatamente sobre esse tema – e em uma delas, recebi contatos posteriores até mesmo enviados pela Redação da revista, agradecendo a dica do prático e econômico Hipster PDA.

Sempre me pareceu que o controle de pendências é uma atividade que ocupa e interessa a maior parte dos administradores de sistemas. Mas hoje tenho que iniciar a coluna fazendo uma confissão: a data limite para a entrega deste texto venceu ontem, e eu a esqueci. Sabem por quê? Porque estava investigando minha mais recente descoberta nessa área, e passei as horas que devia ter dedicado a escrever este artigo transpondo minha lista de pendências para uma nova ferramenta. Quando cheguei a perceber que a coluna estava pendente, já era tarde demais. Nossa sorte é que o editor é camarada, e me concedeu um dia adicional. ;-) Eu sou adepto de fazer limonadas com os limões que a vida me oferece, e esta acabou sendo justamente a oportunidade perfeita para falar de uma ferramenta que se aproxima da perfeição em sua simplicidade: um script shell chamado todo.sh [1] (do inglês “to do”, que significa “a fazer”, ou pendente), que tem todos os recursos necessários para gerenciar a sua lista de tarefas (inclusive a hierarquização delas em projetos) e é completamente gerenciável a partir da linha de comando, por intermédio de uma sintaxe simples e fácil de memorizar.

O todo.sh foi desenvolvido por Gina Trapani, editora do prestigiado site Lifehacker.com, dedicado justamente a esse tipo de ferramenta de organização pessoal. O script é feito em Bash, o que garante que funciona bem nos Macs (ambiente preferido dela) e no Linux – portanto atende bem a todos nós. Usuários de Windows® também podem usá-lo se instalarem o Cygwin [2]. Mas a Gina não carrega o piano sozinha: toda uma comunidade de usuários constantemente acrescenta funcionalidades e novos recursos ao sistema – sem prejudicar a sua marca registrada, que é a simplicidade. Usuários avançados, o que inclui a maior parte dos administradores de sistemas e de redes, vão gostar de saber que o todo.sh armazena todos os seus dados em um simples arquivo de texto estruturado, fácil de ser pesquisado (basta um grep) e processado pelos mais diversos scripts que você conseguir imaginar. A sintaxe é simples a ponto de poder ser integralmente explicada em um vídeo de 60 segundos [3], e inclui a possibilidade de aninhar as tarefas em projetos, associá-las a contextos (por exemplo, “coisas para fazer em casa”, “tarefas para o final de semana” ou “no computador”), editar tarefas diretamente, listá-las de forma condicional, atribuir prioridades a cada tarefa, e muito mais. E como se trata de texto estruturado, já consigo imaginar muitos de vocês pensando em como acrescentar recursos a esse sistema usando scripts adicionais, inclusão na crontab ou disponibilização em um repositório remotamente acessível. E nunca mais esqueçam aquela reunião com o fornecedor de servidores nem aquele arquivo de registro que você precisa checar no final do mês que vem! Mas lembrem-se: antes de experimentar o novo sistema, verifiquem se vocês não têm uma coluna pendente para entregar no mesmo dia. ;-) ■

Mais Informações [1] Todo.sh: http://todotxt.com/ [2] Cygwin: http://www.cygwin.com/ [3] http://www.youtube.com/watch?v=LhizDEyncZU

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.

http://supertuxbr.blogspot.com 10

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Nmap 4

COLUNA

Charly Kühnast Várias ferramentas continuam crescendo a cada nova versão, mas o Nmap 4.00 perdeu peso graças ao projeto Diet-Nmap. A última encarnação do Nmap não somente é mais rápida, como também mais econômica em relação à memória.

A

ferramenta Network Mapper, ou Nmap [1], é minha companheira permanente. O criador do Nmap lançou a versão 4.00 do software pouco depois de comemorar o oitavo aniversário do produto, cujo presente foi uma nova dieta de códigos com várias funções novas. Uma das introduções mais interessantes foi a adição da varredura ARP. O sistema operacional usa requisições ARP para identificar endereços MAC na rede. O Nmap simplesmente se apodera dessa característica do sistema operacional, usando-a em proveito próprio. O resultado é a geração de uma boa coleção de dados confiáveis sobre o número e os tipos de máquinas ativas na rede. Esse recurso elimina totalmente a necessidade de usar o ping ou outros truques parecidos. (O ping já é impreciso de qualquer forma, pois a máquina remota não é obrigada a responder). Nem é necessário familiarizar-se com a nova sintaxe. Ao varrer a rede local, o Nmap automaticamente escolhe a

O Nmap sempre foi um modo fantástico de incomodar as pessoas na sua rede e desperdiçar toneladas de papel ao varrer impressoras de rede. varredura ARP mais eficiente, mesmo que você especifique na linha de comando. De acordo com a página de manual, isso só acontece se você usar o Nmap com privilégios de root. Para mandá-lo manter seu antigo comportamento, é necessário especificar o parâmetro --send-ip.

-sP

Delírio do spoofer

O parâmetro --badsum também é novo na versão 4.00. Ele manda o Nmap enviar pacotes TCP ou UDP com somas incorretas para a máquina alvo. Quase todos os computadores, ao receberem um pacote assim, largam-no imediatamente, mas, se o Nmap receber uma resposta, pode-se presumir que o alvo seja um firewall ou um IDS que não se dá ao trabalho de inspecionar as somas. A ferramenta agora pode forjar facilmente seu próprio endereço MAC usando a opção de linha de comando --spoof-mac endereço_MAC. O Nmap tem suporte à identificação da versão de sistemas operacionais através do parâmetro -O, como de costume, mas agora esse recurso é mais eficiente. Por

exemplo, eu varri meu roteador na minha própria rede do laboratório com o comando nmap -O 10.0.0.50, usando a antiga versão do Nmap 2.70, e obtive a seguinte saída (reduzida ao essencial): MAC Address: 00:05:5E:96:3D:00 (Cisco Systems) No exact OS matches for host

O Nmap 4.00 oferece uma mensagem bem mais precisa: Device type: router Running: Cisco IOS 12.X OS details: Cisco 2600 router running IOS 12.2(3), ➥ Cisco router running IOS 12.1

O mesmo se aplica à identificação de versões. Se eu quiser descobrir qual versão do daemon IMAP está rodando num servidor, posso digitar nmap -sV 10.0.0.88 -p 143 para obter os resultados: 143/tcp open

imap UW imapd 2004.352

O Nmap sempre foi um modo fantástico de incomodar as pessoas na sua rede e desperdiçar toneladas de papel ao varrer impressoras de rede. Essas impressoras costumam escutar na porta 9100, e várias delas imediatamente convertem qualquer dado recebido para dados para impressão. Os desenvolvedores da última versão estável do Nmap introduziram um recurso inteligente de economia de papel. Quando eu entrei nmap -sV printer -p 9100, primeiro fui consultado: 9100/tcp open jetdirect? Excluded from version scan

o que evitou a avalanche de papel. Mas essa técnica para economizar papel não significa que Fyodor seja um estraga-prazeres. Se você realmente quiser desperdiçar papel, pode usar a opção --allports, estendendo a avalanche de papel de sete anos de idade à próxima geração. ■

Mais Informações [1] Nmap: http://www.insecure.org/nmap/

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

http://supertuxbr.blogspot.com 12

http://www.linuxmagazine.com.br


Transforme o poder do MultiCore em aplicativos de alto-desempenho. Tenha seus aplicativos preparados para o processamento paralelo e escalável. Faça certo na primeira vez: Intel® Threading Analysis Tools Localiza os problemas de threadings latentes com visualização em tempo real. 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 Intel Math Kernel Library Aumenta o desempenho de aplicativos através do uso de rotinas otimizadas como BLAS, FFT, LAPACK, incluindo suporte a MPI

“As ferramentas de threading da Intel tem acelerado nosso ciclo de desenvolvimento imensamente”. Dana Batalli Diretora de Desenvolvimento do RenderMan Pixar

Itautec 0800 121444 www.itautec.com.br/intel Katalogo 0800 7729897 www.katalogo.com.br/intel MStech (11) 5080-3838 www.mstech.com.br/intel Strattus (11) 3531-6550 www.strattus.com.br/intel Tech Digital (11) 5181-1852 www.techdigital.com.br/intel

http://supertuxbr.blogspot.com © 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.


Pergunte ao Klaus!

COLUNA

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

Sem conexão

Seria possível usar o kwifimanager e uns poucos cliques, Adquiri recentemente um laptop IBM R50e sem sistema ou simplesmente digitar: operacional para aprender a instalar e usar o Linux. Instalei o Ubuntu 5.10, e quase tudo funciona perfeitamente, iwconfig wlan0 essid sua_essid sua_chave_wep_em_hexadecimal exceto pelo fato de eu não conseguir me conectar à Internet ➥ pump -i wlan0 nem enviar ou receber emails. Tenho um Live DVD do Knoppix 4.0 que funciona bem para tudo, menos para Internet e Se você não usa criptografia na WLAN, pule a opção email. Eu inicio o sistema com vga=792 lang=us toram. Já testei da chave e use somente a ESSID. também no meu desktop, e tive o mesmo problema. Se o iwconfig sem parâmetros não mostrar nenhuma Possuo um modem banda larga e roteador sem fio; consi- placa de rede sem fio, então sua placa ainda não é suporgo pingar meus outros computadores, e também pingo www. tada no Linux, ou não está instalado o driver para ela. knopper.net, além do meu provedor, www.tiscali.co.uk. Possuo uma configuração de dual boot em meu desktop, com o Suse 10.0, pois essa é a única distribuição que eu já testei que Vou comprar um laptop em breve, e pretendo usar Linux funciona com meus dois monitores ao mesmo tempo. Já gastei várias semanas tentando compilar um programa nele. Porém, tenho medo de alguns (ou vários) recursos em C++, porque pensei (depois de ler a documentação não funcionarem, como o gerenciamento de energia, a do GCC) que a extensão .cpp fizesse o GCC pensar que rede sem fio, ou até outras coisas mais incômodas. Você estava lidando com código em C++; acabei descobrindo saberia me indicar como escolher um computador portátil que o comando é g++. Eu entendo que há um monte de compatível ao máximo com o Linux? informações irrelevantes aqui, mas espero que você conResposta Bem, laptops são, e sempre foram, diferentes... Devido a siga me mostrar a direção certa a seguir. limitações de espaço e questões de gerenciamento de energia, Resposta Boa sorte com seu novo laptop. Sua carta na verdade laptops usam chipsets que, na melhor das hipóteses, são estracontém muitas perguntas diferentes. As páginas de manu- nhos mas compatíveis com chipsets de desktops. Alguns itens al dos comandos do Linux não são 100% precisas, princi- de hardware em laptops são tão exóticos que só vêm com drivers palmente em relação a novas opções ou diferenças entre binários, que por sua vez somente funcionam com uma única distribuições. Às vezes, compilar um programa em C++ versão do kernel de uma distribuição específica. Nesses casos, com o GCC funciona direito; às vezes não, principalmente qualquer atualização do sistema (ou instalação de service pack, se for necessário um certo grau de compatibilidade nos no caso do Windows®) leva o hardware a parar de funcionar. Dessa forma, a única regra geral acaba sendo: Não arquivos de cabeçalho e bibliotecas. Eu escolheria o g++ para programas em C++, mas o GCC também deveria compre nada recém-lançado; espere saírem testes e relatóreconhecer as extensões .cpp e .c, a menos que a versão rios de compatibilidade. da interface GCC não corresponda à do g++. Dois ótimos lugares onde se pode procurar esse tipo Para a sua configuração com dois monitores, se o Suse de informação são http://www.linux-laptop.net e http://www. funciona, você provavelmente poderia adaptar algumas tuxmobil.org, onde milhares de usuários relatam probleopções do /etc/X11/xorg.conf ou /etc/X11/XF86Config.conf mas e soluções ocorridos em suas instalações de Linux para a sua outra instalação. em seus laptops. Agora, quanto à sua conexão de Internet, se você conO melhor conselho, no entanto, é testar um Live CD segue pingar outros computadores, até mesmo pelo nome, de Linux, como o próprio Knoppix, no computador antudo deve estar funcionando. Mas talvez você quisesse di- tes de comprá-lo. Esse é o teste definitivo, e nem requer zer que estava tentando isso a partir do seu outro sistema tanto trabalho. ■ operacional, e não funcionou no Suse nem no Knoppix. Nesse caso, por favor anote todas as configurações que O autor funcionaram e transfira-as para sua instalação do GNU/ Linux, por exemplo: Klaus Knopper é o criador do Knop➧ sua ESSID; pix e co-fundador do evento Linux➧ se estiver presente, a chave de criptografia WEP (use o Tag. Atualmente ele trabalha como professor, programador e consultor. formato hexadecimal, pois é mais fácil de transferir); ➧ DHCP ou IP estático, dependendo de qual você use.

Qual laptop?

http://supertuxbr.blogspot.com 14

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


As novidades do Kernel 2.6.18

COLUNA

Pablo Hess A

última versão principal do kernel Linux traz importantes mudanças e novidades. A versão 2.6.18 foi liberada três meses após a anterior, com as principais mudanças não sendo diretamente perceptíveis pela maioria dos usuários, pois referem-se a aspectos internos do kernel. O acréscimo de novos drivers de dispositivos ocorreu como de costume, porém em número significativamente maior. Vários subsistemas também foram estendidos e aperfeiçoados em grande profundidade.

que devem servir como aviso para os desenvolvedores de drivers, dando-lhes tempo suficiente para pedir a manutenção das interfaces ou, preferivelmente, portar seus drivers para as interfaces mais ativas. Um atributo do sysfs para dispositivos PCI possibilita a ativação e desativação desses dispositivos, assim como a consulta a seu estado de ativação; isso pode beneficiar imensamente o servidor X, capacitando-o a ativar um dispositivo de saída adicional quando este for conectado. Uma onda de unificações de subsistemas através de várias plataformas foi iniciada. O tratamento de IRQs passa a ser realizado em todas as plataformas pelo novo subsistema Os cabeçalhos do kernel, que residem em /usr/inclu- genérico de IRQs; a Clocksource Infrastructure finalmente de/linux/ e são utilizados pelas bibliotecas de sistema e foi incluída, implementando uma interface genérica para a alguns programas do espaço do usuário, também foram consulta à hora atual no kernel; foi acrescentado ainda um aperfeiçoados. Como conseqüência, seções desnecessárias subsistema genérico para geradores de números aleatórios puderam ser inteiramente eliminadas, e agora a instalação implementados em hardware, englobando os drivers antes com um make headers_install apaga as seções que sejam separados para diversos chips de placas-mãe e placas de rede relevantes somente para o kernel. de fabricantes como AMD, Broadcom, Intel e Via.

Subsistemas

Drivers Na próxima versão do O kernel passa agora a suportar placas de som Sound Blaster kernel, os desenvolvedores Audigy 4, além dos chips de áudio da Apple e o ATI RS600. Os drivers de controladores SATA agora controlam hotplug, melhopretendem eliminar raram a correção de erros e já possibilitam o uso de NCQ em vários discos rígidos modernos. O driver genérico AHCI agodiversas interfaces que ra suporta o chipset VT8251, da Via, e os da Jmicron e Nvidia. são exportadas, porém jamais usadas. Futuro

Para a próxima versão do kernel, já há uma longa fila de patches, muitos em teste na árvore experimental -mm, de A documentação agora também descreve o status de Andrew Morton, entre os quais a integração dos drivers confiança que pode ser depositado nas ABIs (Application para ATA paralelo, gerenciados por Alan Cox no framework Binary Interfaces), listando as que podem ser usadas pelos libata. Os novos drivers libata possuirão um melhor geprogramas de forma confiável, quais estão em fase de testes renciamento de energia e maior suporte à multiplicação ou de desenvolvimento, e quais foram aposentadas ou estão de portas, implementados por Tejun Heo. em vias de tornar-se obsoletas. O sistema de arquivos CIFS O sistema de arquivos para clusters GFS2 também podeu mais um passo rumo à substituição completa do SM- derá ser incluído em breve no kernel. Ao mesmo tempo, BFS ao aceitar o envio de senhas sem criptografia, como é os desenvolvedores dos drivers WLAN estão trabalhando duro na integração da pilha WLAN Devicescape, porém necessário na interação com Windows® 95 ou OS/2. Uma mudança interessante no escalonador de processos isso ainda deve ficar de fora da versão 2.6.19. A integração foi a inclusão do SMPnice, que possibilita a especificação do sistema de arquivos Reiser4 também pode sofrer uma de prioridades distintas para um mesmo processo em dife- aceleração, agora que Andrew Morton se encarregou de rentes processadores, em sistemas multiprocessados. Outra parte das revisões do código. ■ novidade permite que o escalonador distribua os processos para um processador específico em sistemas de núcleo duO autor plo (ou maiores) de forma a manter o outro processador Pablo Hess tem mestrado em Genética e ou núcleo em estado de economia de energia. conheceu o Linux através da computação cienNa próxima versão do kernel, os desenvolvedores pretífica. Encantado pelas semelhanças entre o tendem eliminar diversas interfaces que são exportadas, avanço científico e o desenvolvimento do Softporém jamais usadas. Para isso, essas APIs receberam etiware Livre, é agora editor da Linux Magazine. quetas EXPORT_UNUSED_SYMBOL ou EXPORT_UNUSED_SYMBOL_GPL,

http://supertuxbr.blogspot.com 16

http://www.linuxmagazine.com.br


Gabarito

Hospedagem de Sites e Servidores

INTERNET PARA PROFISSIONAIS DE INTERNET

Monitoramento de Rede

Internet Data Center

Servidores de Alta Disponibilidade

4003-1001 www.plugin.com.br http://supertuxbr.blogspot.com


SEGURANÇA

➧ Kernel Linux O kernel Linux lida com as funções básicas do sistema operacional. Os seguintes problemas foram relatados recentemente: ➧ Uma falha no suporte a SCTP permitia que um usuário local causasse uma negação de serviço (travamento) com um valor específico de SO_LINGER. (CVE-2006-4535, Importante) ➧ Uma falha no suporte a tabelas hugepage permite a um usuário local causar uma negação de serviço (travamento). (CVE-2005-4811, Importante) ➧ Uma falha na chamada de sistema mprotect permitia que se conferisse permissão de leitura a um anexo somente-leitura pertencente à memória compartilhada. (CVE-2006-2071, Moderado) ➧ Uma falha no processamento de registros HID0[31] (en_attn) em sistemas PowerPC 970 permite que um usuário local cause uma negação de serviço (travamento). (CVE-20064093, Moderado) ➧ Uma falha no suporte a perform em sistemas Itanium permitia que um usuário local desencadeasse uma negação de serviço ao consumir todos os descritores de arquivos. (CVE-2006-3741, Moderado)

➧ X.org

O X.org é uma implementação do X Window System com código aberto. Ele oferece as funcionalidades básicas de baixo nível sobre as quais as sofisticadas interfaces gráficas de usuário são projetadas. O iDefense relatou duas falhas de estouro de inteiros na forma como o X.org processa arquivos de fontes CID. Um cliente malicioso autorizado poderia explorar essa característica e causar uma negação de serviço (travamento), ou potencialmente executar código arbitrário com privilégios de root no servidor X.org. (CVE-2006-3739, CVE-2006-3740). ■ Referência no Gentoo: GLSA 200609-07, Referência no Mandriva: MDKSA-2006:164 Referência no Red Hat: RHSA-2006:0665-3 Referência no Slackware: SSA:2006-259-01 Referência no Suse: SUSE-SR:2006:023 Referência no Ubuntu: USN-344-1

➧ OpenSSL

O conjunto de ferramentas do OpenSSL oferece suporte à comunicação segura entre computadores. O OpenSSL inclui uma ferramenta de gerenciamento de certificados, além de bibliotecas compartilhadas que fornecem diversos algoritmos e protocolos criptográficos. Tavis Ormandy e Will Drewry, da equipe de segurança do Google, descobriram um estouro de buffer na função utilitária SSL_get_shared_ciphers(). Um

➧ Uma falha no sistema ATM. Em sistemas com hardware ATM instalado e configurado, um usuário remoto poderia causar negação de serviço (panic) ao acessar buffers de soquete após liberá-los. (CVE-2006-4997, Moderado) ➧ Uma falha no sistema DVB. Em sistemas com hardware DVB instalado e configurado, um usuário remoto poderia ocasionar uma negação de serviço (panic) enviando um pacote ULE SNDU de comprimento zero. (CVE-2006-4623, Baixo) ➧ Um vazamento de informação no subsistema de rede possivelmente permitiria a um usuário local ler dados importantes da memória do kernel. (CVE-2006-0039, Baixo) Este resumo lista os problemas conforme relatados pela Red Hat. Outras distribuições mostraram mais problemas. Veja a página de segurança de sua distribuição. ■ Referência no Debian: DSA-1184-2, DSA-1183-1 Referência no Mandriva: MDKSA-2006:182 Referência no Red Hat: RHSA-2006:0689-15 Referência no Suse: SUSE-SA:2006:057

agressor seria capaz de enviar uma lista de algoritmos a uma aplicação que usasse essa função e sobrescrever um buffer (CVE-2006-3738). Poucas aplicações, no entanto, fazem uso dessa função vulnerável, e ela geralmente só é usada quando as aplicações são compiladas para depuração. Os dois programadores descobriram ainda uma falha no código do cliente SSLv2. Quando uma aplicação cliente usava o OpenSSL para criar uma conexão SSLv2 com um servidor mal intencionado, o servidor poderia levar o cliente a travar. (CVE-2006-4343) O Dr. S. N. Henson, da equipe central do OpenSSL e do Open Network Security, recentemente desenvolveu um conjunto de ferramentas de teste ASN.1 para o NISCC (www.niscc.gov.uk), que trouxeram à luz algumas vulnerabilidades de negação de serviço: ➧ Certos tipos de chaves públicas podem levar intervalos de tempo desproporcionais para serem processadas, levando a uma negação de serviço. (CVE-2006-2940) ➧ Durante o processamento de certas estruturas ASN.1 inválidas, uma condição de erro era mal interpretada, o que podia resultar em um laço infinito, que consumia memória do sistema (CVE-2006-2937). Esse problema não afeta a versão do OpenSSL distribuída no Red Hat Enterprise Linux 2.1.

Essas vulnerabilidades podem afetar aplicações que usem o OpenSSL para processar dados ASN.1 provenientes de fontes não confiáveis, incluindo servidores SSL que ativem a autenticação de clientes e aplicações S/MIME. ■ Referência no Debian: DSA-1185-1 Referência no Gentoo: GLSA 200609-05 Referência no Mandriva: MDKSA-2006:172-1 Referência no Red Hat: RHSA-2006:0695-12 Referência no Slackware: SSA:2006-272-01 Referência no Suse: SUSE-SA:2006:058 Referência no Ubuntu: USN-353-1

➧ OpenSSH

O OpenSSH é a implementação do protocolo SSH (Secure Shell) feita pelo OpenBSD. Esse pacote inclui os arquivos centrais necessários tanto para o cliente quanto para o servidor OpenSSH. Mark Down descobriu uma condição de corrida no processador de sinais do servidor sshd do OpenSSH. Um agressor remoto poderia se utilizar dessa falha para causar uma negação de serviço (travamento). (CVE-2006-5051) O projeto OpenSSH acredita que a possibilidade de uma exploração efetiva levar à execução de código arbitrário é remota. Tavis Ormandy, da equipe de segurança do Google, descobriu uma falha de negação de serviço no servidor sshd do OpenSSH. Um agressor remoto poderia enviar ao servidor uma requisição SSH-1

http://supertuxbr.blogspot.com 18

http://www.linuxmagazine.com.br


Segurança | NOTÍCIAS

especialmente construída, fazendo o sshd consumir grande quantidade de recursos da CPU. (CVE-2006-4924). ■ Referência no Debian: DSA-1189-1 Referência no Gentoo: GLSA 200609-17 Referência no Mandriva: MDKSA-2006:179 Referência no Red Hat: RHSA-2006:0697-9 Referência no Slackware: SSA:2006-272-02 Referência no Ubuntu: USN-355-1

➧ Firefox, Thunderbird e SeaMonkey O Mozilla Firefox é um navegador de código aberto. O Mozilla Thunderbird é um cliente de email e newsgroup. Mozilla SeaMonkey é um conjunto de aplicativos web que inclui um navegador web, cliente de email, cliente de notícias e um editor HTML. Duas falhas foram encontradas na forma como o Firefox processa certas expressões regulares. Uma página web maliciosa seria capaz de travar o navegador ou possivelmente executar código arbitrário como se fosse o usuário rodando o Firefox. (CVE-2006-4565, CVE-2006-4566)

Uma falha no processamento de eventos agendados de Javascript faz com que uma página web maliciosa consiga travar o navegador ou possivelmente executar código arbitrário como se fosse o usuário rodando o Firefox. (CVE-2006-4253) Daniel Bleichenbacher recentemente descreveu um erro de implementação na verificação de assinaturas RSA. Em chaves RSA com expoente 3, um agressor consegue forjar uma assinatura que seria incorretamente verificada pela biblioteca NSS. A versão não modificada do Firefox confia em diversas Autoridades Certificadoras que usam expoente 3. Um agressor poderia criar um certificado SSL adulterado, no qual o Firefox confiaria incorretamente ao visitar uma página. (CVE-2006-4340) Uma falha foi encontrada no sistema de verificação de auto-atualizações do Firefox. Um agressor com a capacidade de forjar o DNS de uma vítima conseguiria fazer o Firefox baixar e instalar código malicioso. Para explorar essa falha, o agressor ainda precisaria fazer a vítima aceitar anteriormente um certificado inverificável. (CVE-2006-4567) O Firefox não impede de forma correta que uma frame em um domínio injete conteúdo em uma sub-frame que

pertença a outro domínio, o que facilita a adulteração do website e outros ataques. (CVE-2006-4568) O Firefox não carrega janelas pop-up bloqueadas e abertas intencionalmente no contexto de domínio correto, o que poderia levar a ataques cruzados (cross-site scripting). Para explorar essa falha, um agressor precisaria encontrar um site que pudesse colocar seu código malicioso em uma frame e convencer o usuário a abrir intencionalmente um pop-up bloqueado. (CVE-2006-4569) Uma falha no Seamonkey e no Thunderbird é acionada quando uma mensagem HTML contém uma imagem remota que aponte para um script XBL. Um agressor poderia criar uma mensagem especial que executasse Javascript caso certas ações fossem realizadas pelo destinatário sobre o email, mesmo que o Javascript estivesse desativado. (CVE2006-4570) ■ Ref. no Debian: DSA-1192-1, DSA-1191-1 Ref. no Gentoo: GLSA 200609-19, GLSA 200610-01 Ref. no Mandriva: MDKSA-2006:168, MDKSA-2006:169 Referência no Red Hat: RHSA-2006:0675-5, RHSA-2006:0677-5, RHSA-2006:0676-10 Referência no Slackware: SSA:2006-257-03 Referência no Suse: SUSE-SA:2006:054

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, que contém 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.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

19


NOTÍCIAS

➧Busca em código-fonte com o Google O Google Labs lançou o Google Code Search, uma ferramenta de busca de textos em códigos-fonte de programas abertos. Através dessa ferramenta, pode-se buscar, por exemplo, uma função específica em todos os softwares de código aberto indexados pelo mecanismo de busca. A ferramenta de busca indexa códigos-fonte disponíveis em sites e também em arquivos compactados, e seus criadores esperam que ela não seja usada somente para copiar o código-fonte de programas (embora isso seja permitido por todos os programas de código aberto indexados pela ferramenta), mas também para análise de problemas e exemplificação de soluções. Nos resultados, são mostrados um trecho do código, o nome do arquivo que o contém, sua licença e a linguagem utilizada. O Google informou não ter expectativa de retorno financeiro por esse projeto. ■

➧ Yahoo vai liberar códigos

A Yahoo anunciou que liberará, até o final de 2006, o código do processo de autenticação de seu serviço de email gratuito. Segundo a empresa, mais de 250 milhões de usuários acessam diariamente o serviço, e a abertura do código visa permitir a construção de uma quantidade maior de serviços apoiados na já madura infra-estrutura do site. O principal motivo para a liberação do código, de acordo com o Yahoo, é o fato de que seus desenvolvedores não conseguiriam criar

todos os aplicativos que os usuários gostariam, e o códigofonte do esquema de autenticação permitiria que fossem criadas novas formas de usar e exibir as informações sobre novos emails nas contas dos usuários. Embora o códigofonte ainda não tenha sido disponibilizado, os executivos afirmam que a abertura será completada até o final do ano. O anúncio foi feito ao final do Yahoo Hack Day, um evento de escrita massiva de código por mais de quinhentos programadores convidados pela empresa. ■

Análise – Programação Shell Linux: Trabalho bem feito É muito raro encontrar, no Brasil, livros que cheguem a várias edições: as mazelas do mercado nacional, mormente no campo dos livros de informática, fazem com que isso seja uma proeza digna de ser escrita com letras de ouro. Mais raro ainda é encontrar livros que são atualizados – sobretudo com novos capítulos – a cada edição. Por conta do descompasso dos calendários editoriais, com relação à evolução do mundo tecnológico, é muito fácil ter nas mãos uma obra defasada apenas um ano após o seu lançamento – e nem sempre há disposição do autor, ou mesmo da editora, para uma revisão ou revitalização da obra. O título Programação Shell Linux, da autoria de Julio Neves, é uma honrosa exceção à regra: com a 6ª edição lançada há alguns meses, o livro traz um novo capítulo, dedicado à execução de tarefas agendadas. As tarefas agendadas podem não ser um recurso novo, mas é fácil descobrir, lendo o capítulo, quão úteis elas podem ser para a automatização de tarefas: com menos de cinco minutos diante de um terminal de linha de comando, podemos criar uma rotina completa de agendamentos para scripts em shell. Julio Neves tem uma preocupação didática que só é presente em quem, além de dominar uma determinada tecnologia, também é professor. O primeiro capítulo do livro é uma espécie de porta de entrada, apresentando ao leitor todas as ferramentas necessárias para a utilização de sistemas Linux a partir do terminal. Essa apresentação, que ocupa menos de um quinto do livro, satisfaz a necessidade de alguns pré-requisitos para leitores pouco familiarizados com a manipulação de comandos via terminal, além de tornar mais clara a utilidade de ferramentas que costumam passar despercebidas, mesmo no dia-a-dia de programadores e administradores de sistemas mais experientes. A segunda parte do livro trata da programação em shell propriamente dita, utilizando os comandos vistos anteriormente para a construção de exemplos avançados. Várias opções de construção são dadas em cada exemplo, o que obriga o leitor-aluno a prestar atenção ao desenvolvimento lógico do exercício, em vez de simplesmente copiar trechos na shell. Dentre os apêndices do livro, o de número 4 fecha a obra com chave de ouro. Ele mostra, com detalhes, como é possível desenhar menus com itens dinâmicos e caixas de texto encadeadas utilizando a linguagem Dialog. Se você não achava que podia fazer muita coisa com o shell do Linux, é hora de revisar seus conceitos.

➧ Lançado Mandriva 2007 A empresa franco-brasileira Mandriva lançou a versão 2007 de seu sistema operacional, o Mandriva Linux. Com as já familiares três versões diferentes à venda no mercado brasileiro (Discovery, Powerpack e Powerpack+), a distribuição ainda não oferecia uma versão gratuita para download no fechamento desta edição. As principais novidades para o usuário doméstico são a inclusão dos dois servidores X com recursos 3D, AIGLX e Xgl, responsáveis pelo embelezamento do ambiente desktop e, conseqüentemente, pela melhoria da experiência do usuário, além de o sistema já vir com o Cedega, da Transgaming, que permite que o usuário rode jogos feitos para a plataforma Windows® no Linux. Outros softwares incluídos são o antivírus Kaspersky e o LinDVD, da Intervideo. ■

http://supertuxbr.blogspot.com 20

http://www.linuxmagazine.com.br


Gerais | NOTÍCIAS

➧ Urnas proprietárias são seguras?

Em um artigo no jornal norte-americano Washington Post, o jornalista Stan Lehman descreveu a imensa e árdua tarefa de levar as 430 mil urnas eletrônicas a todos os eleitores do Brasil, na maior votação eletrônica do planeta. Porém, o jornalista levantou um questionamento acerca da importância da programação dos dispositivos. Ele recordou a importância da auditabilidade do código-fonte, lembrando que o atual sistema que equipa as urnas eletrônicas é composto pelo Windows® CE. O código-fonte desse sistema operacional, assim como do programa que cuida da contagem de votos e transmissão dos resultados, é fechado. Auditores específicos têm até três meses antes da data das eleições para auditar o programa de votação, fornecido pela empresa norte-americana Diebold, responsável também pelas urnas eletrônicas usadas em eleições de seu país. Embora essa empresa afirme que seu software é mais seguro que qualquer votação baseada em cédulas de papel, o jornalista argumenta que, sem a possibilidade de se auditar o código do sistema de votação, é impossível garantir que a máquina não adultere os resultados, voluntariamente ou não. Segundo o artigo, Athayde Fontoura, diretor geral do Superior Tribunal Eleitoral, já está estudando a implantação de um sistema de código aberto, rodando sobre Linux, para equipar as urnas. O objetivo seria justamente tornar o processo o mais transparente possível, pois os programas de código aberto são mais facilmente auditáveis. ■

➧ Interatividade realista em ambiente Linux

A AGEIA Technologies anunciou a a disponibilidade para Linux da versão 2.6 do PhysX SDK, uma aclamadíssima API física. Essa API acelera brutalmente o desenvolvimento de jogos complexos e modernos, que invariavelmente necessitam de movimentos em tempo real e interatividade em grande escala. A nova versão 2.6 traz novos recursos de Deformable Objects (objetos deformáveis) e prevenção de auto-colisão, e favorece o desenvolvimento de jogos em ambientes Windows®, Vista e Linux. Os novos recursos promovem melhorias significativas na representação gráfica de tecidos e de objetos dinamicamente deformáveis, tanto pela aceleração em software quanto em hardware. Com isso, os objetos nos jogos podem agir e reagir a deformações em tempo real. Um carro deformado num jogo pode ter sua dinâmica afetada conforme a deformação sofrida. Em outro jogo, o carro pode bater novamente, e um dano diferente pode ser causado, com conseqüências também distintas à dinâmica do veículo, o que melhora a experiência do usuário com jogos repetidos. A nova API ainda não estreou o suporte a aceleração 3D por hardware em sistemas operacionais Linux, mas a aceleração por software já é significativa. ■

➧ Software Livre em cadeia nacional Sérgio Amadeu da Silveira, ex-presidente do ITI, juntamente com Júlio Cezar Neves, professor da UniRio, importantes proponentes do Software Livre no cenário federal, foram entrevistados no Programa do Jô, veiculado pela Rede Globo, no dia 5 de outubro. Os entrevistados falaram sobre o conceito de Software Livre e ten-

Curtas Qt 4.2 liberada Foi lançada a versão 4.2 da biblioteca gráfica Qt, da Trolltech, que traz melhorias gráficas, como o recurso de uso da OpenGL para acelerar e melhorar a renderização de fontes com antialiasing, além da capacidade de utilizar o D-Bus para comunicação entre processos. Uma listagem das novidades está disponível em http://doc.

trolltech.com/4.2/qt4-2-intro.html Mais um governo adota ODF O governo francês passou a exigir a publicação de todos os documentos públicos no formato aberto ODF. Ao mesmo tempo, sugeriu que os parceiros da França também adotem a iniciativa. Foi proposta ainda a criação de um centro de análises de segurança de programas de código aberto. SL e saúde pública A empresa gaúcha APOENA Software Livre apresentou à Presidência da República seu sistema de marcação de consultas médicas on-line, o SOL (Saúde On-Line), desenvolvido pela empresa e utilizado pela Prefeitura Municipal de Campinas, em SP. O sistema já despertou o interesse de outros municípios, Estados e países, e já foi apresentado na Venezuela e em Cuba. Nova versão do Skype Foi lançada uma nova versão do Skype, de número 1.3.0.53, sem o termo “beta” no nome. Essa versão contém somente correções de falhas da versão beta anterior. O recurso de videoconferência ainda não está disponível, e provavelmente só virá na versão 1.4 do software, apesar de já estar disponível há tempos na versão para sistemas Windows®. Suse sem ReiserFS A versão 10.2 do Open Suse não oferecerá mais o ReiserFS como sistema de arquivos padrão durante a instalação, embora ele ainda permaneça como uma opção. O responsável por sistemas de arquivos na distribuição, Jeff Mahoney, alegou que os principais culpados pela decisão são os problemas de desempenho e escalabilidade em sistemas multiprocessados, especialmente devido ao uso intensivo de travas do kernel (kernel locks).

taram explicar a importância das quatro liberdades do software, citando diversos exemplos de importantes usuários de sistemas abertos. A atenção dada ao SL por uma emissora de grande abrangência no país demonstra a o reconhecimento da crescente importância desempenhada pelo Linux e outros softwares abertos. A repercussão da entrevista pode ser conferida em http://br-linux.org. ■

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

21


CORPORATE

➧Programas educacionais da Intel fazem 5 anos No dia 21 de setembro, Craig Barrett, chairman da Intel, abriu o evento de comemoração do quinto aniversário dos programas educacionais da Intel no Brasil, declarando que “a educação é a base de uma economia voltada ao conhecimento”. Segundo Barrett, “o programa de educação da Intel está baseado na filosofia de que os computadores não são mágicos, mas que os professores são. Com professores treinados, conteúdo educativo para a região, conectividade com os recursos do mundo e PCs, a juventude brasileira terá a oportunidade de perceber o potencial de suas idéias”. Para marcar o quinto aniversário dos seus programas de educação no país, a companhia anunciou a doação de 9 mil PCs para o Ministério da Educação (MEC), que serão usados em escolas públicas em todo o Brasil. Os PCs contarão com conexão à Internet e conteúdo educativo fornecido pelo MEC, em colaboração com o qual a Intel informou ter treinado 90 mil professores, nos 27 Estados da Federação, no uso e aplicação de tecnologia para melhorar o aprendizado em salas de aulas. Até 2011, a empresa planeja treinar outros 500 mil professores na integração de tecnologia nos currículos escolares, por meio do Programa Intel Educação para o Futuro. Como parte da cerimônia de abertura, o chairman da Intel apresentou o Classmate PC, um laptop ao mesmo tempo robusto e de baixo custo, para ser utilizado pelo estudante em sala de aula. Foi realizada uma aula demonstrativa, de forma a ilustrar o que a empresa espera atingir com o uso de tecnologia na escola: melhor integração entre professor e aluno, mais atenção do aluno durante a aula, por conta do uso lúdico de tecnologia de ponta e de recursos multimídia. Segundo a empresa, tanto o Linux quanto o Windows® deverão gozar de suporte total da empresa como plataformas operacionais para os aplicativos que deverão funcionar no Classmate PC. Entre outras personalidades, o evento contou com a presença do Secretário da Educação, Cultura e Esportes de Per-

Curtas Preso o desenvolvedor principal do ReiserFS Hans Reiser, presidente da Namesys e principal desenvolvedor dos sistemas de arquivos ReiserFS e Reiser4, foi preso sob acusação de assassinato de sua esposa Nina, desaparecida desde o dia 3 de setembro, em Oakland, EUA. Embora não haja provas de que Hans tenha sido de fato o autor do crime, o desenvolvedor recusa-se a cooperar com as autoridades responsáveis pela investigação, o que o classifica como principal suspeito. PC-BSD agora tem dono O sistema operacional PC-BSD, derivado da versão 6 do FreeBSD, foi comprado pela fornecedora de hardware corporativo iXsystems. Ela pretende usá-lo em seus servidores, apesar de o sistema operacional favorecer a instalação em desktops. De acordo com a empresa, a versão 1.3 do PC-BSD deve sair em breve.

nambuco, Mozart Neves Ramos, e do Ministro da Educação, Fernando Haddad, que participou também de coletiva de imprensa após a cerimônia de abertura da comemoração. Também tomaram parte da coletiva Oscar Clarke, presidente da Intel do Brasil, Brenda Musili, Diretora Mundial dos Programas de Educação da Intel e o próprio Craig Barrett. Questionados sobre o uso do Software Livre no Classmate PC, os executivos da Intel, reafirmaram seu compromisso de fornecer uma plataforma operacional baseada em Linux para o laptop, que deverá andar “pari passu” com a implementação para a plataforma operacional da Microsoft. Segundo Oscar Clarke, a escolha de qual sistema operacional deverá ser utilizado ficará a critério “do freguês” – a aula demonstrativa foi realizada com Classmate PCs rodando Windows, mas após a coletiva de imprensa, a Linux Magazine teve acesso a máquinas pré-instaladas com Linux, mais especificamente, com uma versão do sistema integrado pela MetaSys, baseado em KDE e totalmente funcional (Wi-Fi, multimídia, programas para escritório etc.). ■

➧ Eudora abre seu código

O Eudora, um dos mais tradicionais clientes de emails para a plataforma Windows®, terá seu código aberto. A Qualcomm, fabricante do programa, anunciou, em conjunto com a Fundação Mozilla, que as próximas versões do produto serão baseadas na mesma plataforma tecnológica que o Thunderbird. Além disso, a versão comercial do Eudora será descontinuada. Mas a fabricante afirma que o cliente de emails “manterá seu conjunto ímpar de recursos”. A primeira versão de código aberto do programa deve ser lançada no primeiro semestre de 2007. Até lá, a Qualcomm continuará a vender licenças da versão proprietária, porém a uma taxa reduzida de 20 dólares. Segundo o vice-presidente de tecnologia da empresa, Steve Dorner, “abrir o código [do Eudora] trará mais desenvolvedores do que o programa jamais teve”. ■

http://supertuxbr.blogspot.com 22

http://www.linuxmagazine.com.br


Notícias | CORPORATE

➧ Microsoft se livra de processo por monopólio A Microsoft e sua distribuidora no Brasil, a TBA, obtiveram do Cade (Conselho Administrativo de Defesa Econômica) a autorização para, com uma multa de R$ 5 milhões, fazerem um acordo relativo à prática de monopólio pela gigante do software. No processo, iniciado em 1998, a empresa IOS levantava a questão de a fabricante do Windows® dar exclusividade à TBA no fornecimento de seus softwares à esfera pública federal. Condenada em 2004 a pagar uma multa de R$ 6,4 milhões, a Microsoft ganhou todos os recursos que tentou após a condenação, obtendo assim uma redução no valor final da multa, o que causou reclamações por parte da IOS contra o Cade. ■

➧ Google compra YouTube

A Google Inc. adquiriu o YouTube, serviço gratuito de armazenamento e exibição de vídeos, por US$ 1,65 bilhões. Essa foi a maior aquisição da gigante da Internet em seus oito anos de existência, e veio logo após a Google assinar um contrato para a Sony e Warner Music disponibilizarem vídeos gratuitamente na Internet. O YouTube exibe mais de 100 milhões de vídeos diariamente a seus visitantes, e o custo de sua conexão supera 1 milhão de dólares. As preocupações com potenciais infrações de direitos autorais contidas nos vídeos do YouTube somam-se às reclamações sobre a disponibilização de conteúdo literário de forma inapropriada em outro serviço do Google, o Google Books. ■

Curtas CRM Siebel 8 agora também para Linux A Siebel, que foi adquirida pela Oracle, lançou seu software CRM Siebel 8 com uma versão também para Linux. Como a Oracle utiliza Linux internamente em suas estações, e está gradativamente adotando o Siebel 8, essa novidade não representa uma grande surpresa, embora seja bastante interessante a disponibilização de mais um sistema CRM para a plataforma Linux. Morre o pai das redes de computadores Ray Noorda, ex-CEO e presidente da Novell, e considerado o pai da computação em rede, morreu no último dia 9 de outubro. Ele foi um dos responsáveis pelo desenvolvimento do Netware, e um dos primeiros críticos à hegemonia da Microsoft no mundo da computação. Calendário no estilo Mozilla A Fundação Mozilla lançou recentemente a versão 0.3 de seu programa de calendário, o Sunbird. Apesar de ainda estar em fase de forte desenvolvimento, o programa tem boa usabilidade. Na mesma data, foi lançada também a última versão da extensão que integra o Sunbird ao Thunderbird, chamada Lightning. Com essa extensão, tem-se uma solução mais completa da Fundação Mozilla, possivelmente capaz de competir com o Evolution, da Novell.

➧ VoIP: Linux melhor que Cisco A Sam Houston State University, no Texas, EUA, prefere o Linux com Asterisk para seu serviço de VoIP. Os PBXs da Cisco já começaram a ser substituídos pela solução de código aberto. Ao final, todos os seis mil estudantes, professores e funcionários passarão a usar os servidores Linux para o processamento de chamadas, voice mail e também para acessar o serviço fixo comutado, PSTN. ■

➧ Novell oferece suporte a Red Hat virtualizado A Novell, em um movimento ousado, anunciou o suporte oficial a instâncias virtualizadas de um de seus principais concorrentes na arena de sistemas operacionais, o Red Hat Enterprise Linux 4. O suporte é completo (o chamado nível 3, que inclui até questões da engenharia do núcleo do sistema, ou core engineering) para sistemas Suse Linux Enterprise Server 9 e RHEL 4, mas tem como requisito que a base seja composta pelo SLES 10 e que se use o Xen. A máquina deve possuir um processador Intel Xeon de núcleo duplo. O CTO da Novell, Jeff Jaffe, informou ainda que os desenvolvedores já estão trabalhando no suporte também a versões virtualizadas do sistema operacional Netware. Teoricamente, com as novas tecnologias de virtualização (Vanderpool, da Intel, e Pacifica, da AMD), é possível suportar até mesmo sistemas Windows®, pois elas permitem uma drástica redução da quantidade de código adicional no sistema operacional hóspede, um resultado da para-virtualização. ■

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

23


CORPORATE | Notícias

➧ Novell lança Suse Linux Enterprise 10 no Brasil Em evento realizado no dia 04 de outubro, cerca de um mês após o lançamento nos Estados Unidos, a Novell apresentou no Brasil a nova versão do sistema operacional da empresa, o Suse Linux Enterprise 10. Em uma versão para servidores, o Suse Linux Enterprise Server (SLES), e outra para estações de trabalho, o Suse Linux Enterprise Desktop (SLED), ambos os sistemas desfrutam da mesma origem tecnológica: o projeto openSUSE, do qual participam desenvolvedores da comunidade do Código Aberto. Segundo a empresa, o Suse Linux Enterprise 10 é o primeiro sistema Linux a dispor de suporte completo a recursos como virtualização e segurança em nível de aplicação, bem como desktop de usabilidade avançada – esse último, fruto dos resultados do projeto Better Desktop. O Suse Linux Enterprise 10 traz a versão 3.0.2 da ferramenta de virtualização Xen totalmente integrada ao sistema, com a qual é possível consolidar múltiplos servidores em um único hardware e, dessa forma, melhorar a utilização do poder de processamento da máquina. De acordo com Ricardo Fernandes, presidente da Novell do Brasil, “praticamente 100% dos novos clientes que nos procuram para implementar Linux nos servidores buscam a virtualização”. Demonstrações foram realizadas no intuito de ilustrar a facilidade de criar máquinas virtuais com o novo sistema, que também integra os recursos de segurança em nível de aplicação oriundos do projeto AppArmor, tecnologia da Immunix, empresa adquirida pela Novell no ano passado – que abriu seu código no início deste ano. O AppArmor oferece suporte para padrões abertos aplicados à criptografia de sistemas de arquivos, gerenciamento de firewalls, de PKIs (Public Key Infraestructures) para gestão de certificados digitais, combinados a sistemas de detecção e prevenção de ataques. A configuração dessa ferramenta tam-

bém se encontra totalmente integrada ao restante do sistema através da ferramenta YaST. Adicionalmente, a empresa também apresentou o Novell® Customer Center, uma interface web desenvolvida para facilitar as interações com a empresa, sejam elas técnicas ou comerciais. Com esse sistema, pode-se verificar o status de produtos, serviços e assinaturas adquiridas junto à companhia, bem como obter atualizações críticas e informações de suporte. Com o Novell® Customer Center, pode-se também controlar os níveis de acesso a informações privilegiadas arquivadas no sistema, bem como a recursos técnicos que ele disponibiliza. ■

Curtas Computador de R$ 700 com Linux A Via Technologies anunciou um acordo para a produção de PCs de sua plataforma PC-1 no Brasil. O computador será fabricado pela Amazon PC e vendido a R$ 699,00 a unidade, equipado com Linux. Seu processador é um Via C3 de 1 GHz, e a empresa pretende atingir um mercado que atualmente não é atendido nem pelo programa federal Computador Para Todos. Mozilla colabora com Microsoft A Microsoft anunciou um convite à Fundação Mozilla, responsável pelo navegador web Firefox, para visitar seu laboratório de Código Aberto. A Fundação Mozilla aceitou o convite e vem interagindo com o fabricante do Windows® para melhorar o suporte mútuo entre o sistema operacional e o navegador de código aberto. Evento Red Hat e IBM no Sul A Red Hat e a IBM realizam nos dias 16 e 20 de outubro, em Florianópolis e Curitiba, o evento IBM Technical Briefing, que abordará tecnologias emergentes, como a virtualização, por exemplo. A Red Hat ministrará duas palestras nos dois eventos, intituladas “Virtualização em Linux com Xen” e “Alta Disponibilidade com Linux”.

➧ GFS2 no kernel oficial

Linus Torvalds anunciou sua concordância com a entrada do suporte ao GFS2 na versão 2.6.19 do kernel. O GFS2 é um sistema de arquivos distribuído para uso em clusters computacionais, assim como o GFS, do qual ele é um derivado. O GFS teve seu código aberto pela Red Hat em 2004 e, desde então, o GFS2 vem sendo desenvolvido, com seus responsáveis já almejando a inclusão no kernel. O principal concorrente do GFS2, o OCFS2 (Oracle Cluster File System 2), da Oracle, obteve a inclusão no kernel há poucos meses. Pouco depois da inclusão, Linus Torvalds anunciou a primeira versão de testes do kernel 2.6.19, que provavelmente levará cerca de seis semanas até atingir a estabilidade e ser oficialmente lançado. ■

http://supertuxbr.blogspot.com 24

http://www.linuxmagazine.com.br


Notícias | CORPORATE

➧ Mandriva compra Linbox

A franco-brasileira Mandriva, fabricante da distribuição de mesmo nome, adquiriu a francesa Linbox, que tem como principais clientes Renault, EADS, Arcelor e vários ministérios franceses. Os produtos da Linbox, liderados pelo Linbox Directory Server (LDS) e pelo Linbox Rescue Server (LRS), consistem de aplicações de administração de infra-estrutura de software para empresas médias e grandes. Realizam tarefas como autenticação, gerenciamento do parque de máquinas e realização de becapes, e são liberados sob a licença GNU GPL. A transação foi efetuada por uma quantia em torno de US$ 1,74 milhões. ■

➧ Fonality adquire Trixbox

A distribuição Trixbox, originalmente chamada de Asterisk@Home, foi comprada pela empresa norte-americana Fonality. O Trixbox é uma distribuição em Live-CD (também instalável no disco rígido) que facilita enormemente o uso de ferramentas e programas para VoIP, como o Asterisk, Apache, MySQL e outros. Com isso, é uma distribuição altamente indicada para funcionar como o PABX de uma empresa, sem a necessidade de se comprar um hardware especializado para esse fim. A Fonality é a desenvolvedora do Hudlite, plataforma comercial de controle de ligações e gerenciamento de presença em tempo real que funciona em conjunto com o PBXtra, da própria Hudlite. Com a aquisição, o fundador e desenvolvedor do Trixbox, Andrew Gillis, passa a trabalhar para a Fonality, porém ainda se mantém líder da comunidade Trixbox. A distribuição continuará totalmente livre, liberada sob a licença GNU GPL, mas agora contará com o apoio financeiro e técnico da Fonality para seu desenvolvimento. ■

➧ SL no Poder Judiciário

O Congresso Nacional aprovou uma lei que institui a preferência por Softwares Livres na aquisição de novos softwares. Atualmente, o Código de Processo Civil ainda depende dos autos em papel, porém a nova lei pretende realizar a migração para autos virtuais e processos eletrônicos. A lei que instituiu a possibilidade de informatização da maioria das ações, intimações, certificações etc. trouxe consigo a necessidade de se estudar o melhor modelo de software a ser adotado pelos órgãos do Judiciário. Reconhecendo que essa questão envolve a eficiência dos tribunais, assim como sua segurança, seus custos operacionais e a qualidade dos serviços por eles prestados, a Ministra Ellen Gracie e o Conselho Nacional de Justiça estimulam fortemente a adoção de Software Livre no Poder Judiciário. Atualmente, os softwares criados para algum tribunal não podem ser cedidos a outro senão mediante o pagamento de mais licenças ao fabricante dos programas. O conselheiro Douglas Rodrigues, do Conse-

Curtas Ideologia x empreendedorismo Durante o Encontro Mineiro de Software Livre, que acontecerá na cidade de Ouro Preto de 10 a 12 de outubro, o presidente da Insigne Free Software do Brasil, João Pereira da Silva Jr., apresentará um seminário em que trata do embate político entre o modelo proprietário de desenvolvimento de software e o Software Livre, assim como seus reflexos para o usuário final e a inclusão digital. Thin client brasileiro com Linux A Tecnoworld, fabricante brasileira de thin clients, notebooks e placas, apresentou o WinBox, um thin client com versões Linux e Windows® CE. O modelo com Linux, chamado WinBox LNX, vem equipado com processador SIS550 de 200 MHz, 128 MB de memória, ethernet 10/100 Mbps, seis portas USB e saídas PS/2 para teclado e mouse, e traz os principais clientes para desktops remotos, como rdesktop, XDMCP, VNC viewer e outros. Binários universais da REALbasic A REAL Software lançou a versão 2006 R4 de seu ambiente de desenvolvimento REALbasic. A nova versão oferece suporte a binários universais, capazes de rodar em Linux (GTK+), Windows® e Mac OS X (PowerPC e Intel, sem emulação). Com binários universais, um programa somente precisa ser desenvolvido uma única vez. Existe uma versão gratuita de demonstração para download em www.realsoftware.com/download, e a licença custa US$ 90,00 para o programa capaz de compilar softwares para a plataforma sobre a qual ele próprio roda. A versão profissional, a única com a funcionalidade de compilação multiplataforma, custa US$ 500,00.

lho Nacional de Justiça, afirmou que o órgão “repudia a idéia de que os tribunais se tornem reféns de empresas de tecnologia”, acrescentando que é preciso “alcançar a independência completa dos tribunais nessa área”. Embora as empresas fabricantes de softwares insistam em desmerecer o Software Livre, os representantes do Judiciário afirmam que essa decisão nada tem de ideológica, mas vem da experiência positiva de diversos tribunais, como o TRF da 4ª região, por exemplo, que vêm utilizando com enorme sucesso Software Livre nos juizados, com grande redução de custos e aumento de eficiência, já que quatro funcionários conseguem lidar com os 20 mil usuários e três milhões de documentos. ■

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

25


Laudelino Lima, Gerente de TI do InvesteRio

CORPORATE

Direcionando investimentos com Linux

O InvesteRio usa Software Livre e de Código Aberto desde o início de suas operações. Com a economia gerada em máquinas e licenças, foi possível investir em mobiliário ergonômico e no pessoal de TI, o que se refletiu em melhora da eficiência dos funcionários e da estrutura de TI. por Pablo Hess

A Agência de Fomento do Estado do Rio de Janeiro S.A. (Investerio) é uma sociedade anônima de economia mista, com personalidade jurídica de direito privado, criada em 12 de dezembro de 2002 e autorizada a operar pelo Banco Central do Brasil com as mesmas obrigações de todas as empresas que compõem o Sistema Financeiro Nacional. Sua missão principal é atuar no financiamento a projetos de investimentos das micro e pequenas empresas localizadas no Estado do Rio de Janeiro, seja como Agente Financeiro do BNDES, seja com recursos próprios. Tem também como atribuições a Administração de Contratos de Financiamentos, além da Administração de Fundos Estaduais ou Fundos Privados de Investimentos.

a todos, principalmente nosso gerente de suporte e nossa superintendente. Por esse motivo estávamos constantemente em busca de uma solução. Assistimos então a uma palestra da Conectiva (agora Mandriva) em nossa empresa. Eu não conhecia profundamente o Linux, pois só havia tido uma primeira experiência decepcionante em 1995. Mesmo assim, o Linux e o Software Livre me pareciam ter um futuro promissor, com uma idéia muito atraente. A eliminação da dependência do fornecedor me pa-

maior quantidade possível de Software Livre. Para isso, primeiro era necessário ter conhecimento sobre as necessidades da empresa, levando-se em conta seu tamanho e sua área de atuação. Para isso, visitei as Agências de Fomento de Natal e do Rio Grande do Sul, onde pude avaliar qual seria o porte necessário para o atendimento das demandas. O cenário apresentado em relação à aplicação bancária era de que realmente só existiam opções proprietárias, o que era normal diante da especificidade do produto. Entretanto, essa mesma aplicação poderia ser acessada por meio de navegadores e executadas sobre bancos de dados livres PostgreSQL. Ficamos surpresos ao receber respostas de três fabricantes, aceitando a proposta de fazer funcionar suas aplicações bancárias sobre bancos de dados livres e navegadores, o que já foi um avanço.

O que limita a área de TI agora é o seu elemento humano, o que é um incentivo para que direcionemos investimento a nosso pessoal.

Linux Magazine» Por que vocês escolheram o Linux? Laudelino Lima» Em agosto de 2000, saindo do mercado privado, fui contratado pela CODIN (Companhia de Desenvolvimento Industrial do Estado do Rio de Janeiro) para assumir a Gerência de Sistemas da empresa e, logo ao chegar, tive a percepção de que a estrutura de TI encontrava-se praticamente engessada em relação à inovação. O custo das licenças era exorbitante, e a dependência de sistemas operacionais proprietários não nos mostrava qualquer perspectiva de melhora no quadro. Isso incomodava

receu um fator importantíssimo para o uso na empresa, ao menos nos servidores. Recebemos então um curso gratuito na sede da Conectiva no Centro do Rio de Janeiro, o qual nos mostrou na prática que o sistema Linux é poderoso, veloz e estável, mesmo sendo gratuito. Nessa mesma época foi criada a InvesteRio, e fui contratado como Chefe do Departamento de TI. O desafio era montar a infra-estrutura tecnológica e de sistemas para uma empresa ligada ao Sistema Financeiro Nacional, com todas as suas obrigações legais e com a

LM» Como foi o processo de instalação?

LL» Como os gastos com softwares foram

seriamente reduzidos, conseguimos investir primeiramente em infra-estrutura elétrica, de dados e de voz, o que nos diferenciou da maioria dos órgãos públicos, freqüentemente carentes de recursos. A experiência em Linux, oriunda do case da CODIN, nos permitiu começar pelo mais difícil, o firewall, que exigia DMZs e IDSs, e logo a seguir DHCP, DNS, LAMP (para a intranet e nosso website),

http://supertuxbr.blogspot.com 26

http://www.linuxmagazine.com.br


Entrevista | CORPORATE

correio (incluindo webmail, antivírus e antispam), LDAP, mirror interno, becape externo, VPNs e desktops. LM» E as estações? Também rodam Linux?

No caso das estações, concluí que o componente mais importante para o usuário era que seu conforto fosse o maior possível, pois o setor de TI deve ser usado para oferecer serviços aos usuários, sem que estes precisem de grandes esforços de aprendizado. Como conseqüência, um usuário confortável em seu ambiente de TI gera menos chamados de suporte, o que reduz a demanda sobre o responsável pelo suporte. Como eu era o único funcionário de TI da empresa, esse fator foi imprescindível para que eu me concentrasse melhor na administração dos servidores. Para a escolha da distribuição por parte dos usuários, foi montado um laboratório com diversas máquinas e distribuições. Após testarem cada uma das alternativas, os usuários escolheram o Mandrake Linux, que então foi adotado em todas as estações em 2004. LL»

LM» Quais foram os benefícios técnicos?

Nossos servidores rodam com uma carga bem menor, e portanto nunca ficam sobrecarregados. Além disso, nunca tivemos problemas com vírus, cavalos-detróia ou outras pragas virtuais. Obtivemos LL»

Basta notar que nosso parque, com 50 máquinas, dispõe de uma equipe de apenas dois funcionários (sendo que o segundo é recém-contratado). Esses recursos foram aplicados na compra de novos equipamentos. Uma das aplicações mais proveitosas, no entanto, foi o mobiliário ergonômico. Com ele, nossos funcionários trabalham de forma mais confortável, e portanto eficiente, o que é um ganho indireto, perceptível e altamente positivo. Por não termos mais restrições relativas a software, o fator limitador de desenvolvimento e evolução de sistemas na empresa passou a ser o pessoal de TI. O que limita a área de TI agora é o seu elemento humano, o que é um incentivo para que direcionemos investimentos ao nosso pessoal. LM» Na sua opinião, o que falta para o Li-

nux ser mais utilizado nas empresas?

LL» Em primeiro lugar, falta apoio sério

do poder público, pois programas obrigatórios a qualquer empresa não podem ser restritos a uma única plataforma. Em segundo lugar, falta o combate à pirataria. Na atual conjectura, o custo de um sistema operacional proprietário não é diferente daquele composto somente por Software Livre, pois ambos acabam sendo efetivamente gratuitos. Com um combate eficiente à pirataria, mais empresas perceberiam os benefícios incomparáveis do Software Livre. É fácil recusar-se a conhecer o Software Livre quando se tem todo um parque de softwares piratas.

Ficamos surpresos ao receber respostas de três fabricantes, aceitando a proposta de fazer funcionar suas aplicações bancárias sobre bancos de dados livres e navegadores, o que já foi um avanço.

Como é a solução atual? LL» Possuímos sete servidores Intel rodando a distribuição Mandriva. Eles são responsáveis pela segurança de nossa rede, rodando firewall e proxy (iptables, Squid, Snort, Nagios, ACID, MRTG, TuxFrw e outros), e também oferecem os serviços de que necessitamos, como DNS (Bind), email (Postfix, webmail, Spamassassin e ClamAV) e becape interno com sincronia externa. A distribuição das estações, que originalmente era Mandrake, foi atualizada para Mandriva. LM»

após diversas reuniões, discussões, laboratórios e simulações consegui mostrar a todos que a solução livre era de fato a melhor para nós. Além disso, o funcionamento dos softwares governamentais obrigatórios também foi problemático. Imaginamos que conseguiríamos executar algumas aplicações federais e proprietárias sobre o Wine, mas isso não foi possível. Assim, configuramos uma máquina com sistema operacional Windows® para executar os doze aplicativos necessários. As estações acessam a área de trabalho nesse servidor através do rdesktop. Com isso, fomos capazes de economizar mais recursos em licenças de software.

assim uma maior confiabilidade, disponibilidade e desempenho. Nosso sistema é tão confiável que algumas instituições públicas, quando enfrentam problemas de conexão à Internet, nos telefonam para conferir se o problema é de seu próprio sistema ou do acesso institucional à rede. Isso mostra que temos uma solução tecnicamente superior. Outro dia LM» Quais foram as dificuldades enfren- viemos a saber que boa parte dos órgãos tadas ao longo da instalação? aos quais somos ligados haviam passado LL» Alguns fornecedores de softwares pro- horas fora do ar devido a uma infecção prietários, os quais dependiam somente por vírus em seus sistemas proprietários. de plataformas proprietárias, fizeram (e A InvesteRio sequer tomou conhecimenainda fazem) uma fortíssima campanha to da ameaça. contra as soluções livres, inclusive com bastante FUD. Isso, aliado ao já espera- LM» E os outros benefícios? do conservadorismo de alguns usuários, LL» Estimamos ter economizado R$ 600 dificultou minha tarefa de convencê-los mil somente na aquisição de licenças de que aquela solução que todos eles já e contratação de pessoal no período de conheciam não era mais a melhor, e 2004 a 2006, pois o Linux gera menos nem mesmo a indicada quando se alia chamados técnicos e menores esforcusto com segurança bancária. Somente ços de gerenciamento e manutenção.

LM» Alguma palavra aos nossos leitores?

Quem estuda Linux hoje, assim como quem folheia a Linux Magazine, está no caminho certo. Utilizar o Linux não significa esquecer as plataformas proprietárias. Capacitando-se em Software Livre, o trabalhador de TI duplica suas possibilidades, pois ainda existem bons empregos que favorecem o modelo proprietário de software. Porém, têm surgido cada vez mais vagas para trabalhar com Software Livre em sintonia com softwares proprietários, geralmente com melhores salários. Afinal, médicos costumam ser melhor remunerados que curandeiros. ■ LL»

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

27


O impacto do Open Source na indústria de software

CORPORATE

Cezar Taurion O

movimento do Código Aberto já é uma realidade. O Linux é um sistema cuja base instalada cresce a cada dia. O Apache é líder inconteste na categoria de servidores web. O PHP, Sendmail e dezenas de outros softwares já fazem parte do portfólio da maioria das empresas do mundo. Alguns diretórios de projetos de Código Aberto, como o Sourceforge, já armazenam mais de 130 mil projetos com mais de 1,4 milhões de usuários registrados.

Com o modelo de desenvolvimento colaborativo, tanto o esforço quanto o custo de desenvolver o software são compartilhados. Mas o que é realmente este movimento, e por que ele tem impactado tanto a indústria de software? A essência do Código Aberto não é o software em si, mas o seu processo de desenvolvimento. É um processo de desenvolvimento colaborativo, em que usuários colaboram para criar um software. Nesse processo não existe a necessidade de pesados investimentos prévios e, portanto, temos o poder de mudar os tradicionais modelos de negócio baseados em venda de licenças. No modelo tradicional, o desenvolvedor, na maioria das vezes, precisa vender licenças do seu software para recuperar o investimento efetuado, obter lucros e manter seus acionistas satisfeitos. Com o modelo de desenvolvimento colaborativo, tanto o esforço quanto o custo de desenvolver o software são compartilhados. Desta forma, não existem maiores investimentos anteriores, e conseqüentemente não se demanda a venda de licenças. Podem-se criar outros modelos de negócios, como os que obtêm receita a partir da venda de serviços. Um exemplo é o próprio Linux. O kernel 2.6 tem mais de 3,2 milhões de linhas de código C e quase 180.000 linhas em assembly. Se fosse desenvolvido por uma única empresa (e existiria empresa capaz de tamanha façanha?), tal volume de trabalho custaria centenas de milhões de

dólares. Essa empresa teria que conseguir escala de mercado de forma ampla e veloz o suficiente para se manter viva. O modelo de Código Aberto dilui os custos por meio do trabalho colaborativo de dezenas de milhares de colaboradores, já que seu custo foi distribuído. Os custos fixos de pesquisa e desenvolvimento não são alocados a nenhum centro de custo ou a uma empresa. O modelo permite sobrevivência do produto mesmo quando a escala de mercado não é suficiente para sustentação de um produto comercial. Sua sobrevivência, sob essa ótica, é mais garantida que a de um software comercial. Existem diferenças significativas entre modelos de negócio baseados na venda de licenças e na venda de serviços. O baseado em licenças consegue obter lucros bem mais elevados, principalmente quando falamos em software de massa. Estes softwares são escritos uma vez e podem ser vendidos dezenas de milhões de vezes a custos marginais (preço de um CD) ou quase zero (downloads), com pequenos investimentos adicionais em suporte e consultoria. Por sua vez, modelos baseados em serviços demandam mais recursos humanos e as lucratividades são menores e obtidas a mais longo prazo. O número de consultores e técnicos cresce à medida que aumenta a base instalada. Os impactos causados pelo modelo de Código Aberto começam a causar sérios transtornos nas empresas extremamente dependentes de licenciamentos de softwares em seus modelos de negócio. A razão é simples. As empresas de software com ações nas bolsas são continuamente monitoradas pelos investidores. As empresas são forçadas a crescer mais rápido que as expectativas dos seus acionistas. Crescer no mesmo ritmo do mercado apenas evita a queda no preço das ações, mas não gera ganhos. Um novo cenário torna o seu crescimento mais árduo, gerando reações bastante agressivas para evitar uma eventual percepção negativa por parte dos investidores. Em resumo, Código Aberto ainda não é um fenômeno totalmente conhecido em suas nuances. O que acontecerá nos próximos anos? Teremos que aguardar os próximos capítulos... ■

O autor Cezar Taurion é Gerente de Novas Tecnologias Aplicadas da IBM.

http://supertuxbr.blogspot.com 28

http://www.linuxmagazine.com.br


Criptografia de discos no Linux

Segredos e discos CAPA

Os computadores atuais são suficientemente rápidos para algumas técnicas criptográficas bastante sofisticadas. Veja como manter seus dados a salvo de olhos curiosos e espiões. por Joe Casad

E

spiões, soldados e matemáticos já brincam com criptografia há séculos. Há cada ano, os usuários de computador ganham mais possibilidades de esconder seus documentos e mensagens. Obviamente, os usuários precisam dessas técnicas novas e melhores para ocultarem seus dados, justamente porque os computadores estão ficando tão acessíveis e portáteis. E se você esquecer seu laptop no cibercafé? Ou se um intruso conseguir entrar em um dos 100 desktops da rede do seu trabalho? Sistemas de arquivos criptografados oferecem uma poderosa proteção para a atual cultura da computação casual. Com um sistema de arquivos criptografado, seus dados permanecem seguros mesmo quando o computador é desligado e o disco retirado. Se você algum dia já se preocupou com espiões, soldados, matemáticos, ou curiosos do dia-a-dia tendo acesso às suas informações valiosas, vai adorar nosso tema de capa do mês. O primeiro artigo desse mês aborda a criptografia de CDs, DVDs e outras mídias removíveis, uma medida fundamental para quem carrega dados confidenciais com alguma freqüência. Em seguida, “O disco todo: Criptografia de discos rígidos com DM-Crypt e LUKS” é um tutorial que descreve como configurar a criptografia de discos rígidos no seu próprio sistema Linux. Finalizamos com um panorama das opções mais populares de sistemas de arquivos criptografados para Linux, incluindo o Loop-AES, DM-Crypt, Truescript, Crypto-FS e Enc-FS. Os especialistas em criptografia Peter Gutmann e Christian Ney vão além dos passos de instalação e avaliam as opções baseados em fatores que talvez não estejam à vista da maioria dos usuários, como a qualidade do código e as técnicas criptográficas. Os artigos deste mês oferecem uma boa idéia de como dar os próximos passos para implementar a criptografia de discos nos seus sistemas Linux. Esperamos que você goste do tema de capa deste mês. ■

Sistemas de arquivos O disco todo CDs e DVDs

30 38 44

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

29


Escolhendo um sistema de arquivos criptográfico

Candidatos secretos CAPA

Se você não for um especialista em segurança, mas estiver em busca de um sistema de arquivos criptografado, talvez esteja se perguntando quais são as alternativas. Conheça algumas das opções mais populares de criptografia para Linux. por Peter Gutmann e Christian Ney

hannah jackson – www.sxc.hu

O

Loop-AES

s sistemas de arquivos criptograAlém de atentarmos às tecnologias e fados mantêm seus dados seguros, técnicas, também examinamos alguns O Loop-AES [1] é o mais antigo dos mesmo que alguém roube seu parâmetros de desempenho dessas op- sistemas de arquivos criptográficos aqui computador. A recente popularidade dos ções de criptografia. investigados. Ele utiliza o venerável computadores portáteis trouxe à tona a Como poucos desses sistemas docu- módulo de kernel loop, e roda até com necessidade de proteção, mas até mesmo mentam detalhes técnicos – à exceção o kernel 2.0. A função do Loop-AES é os usuários de desktops têm motivos para (honrosa) do Truecrypt e do Enc-FS semelhante à do Cryptoloop, que já se assegurar sua privacidade. – uma auditoria significaria passear por mostrou insegura. O Loop-AES funciona O Linux oferece diversas opções de toneladas de código-fonte (gerado por no nível do dispositivo de blocos, e grasistemas de arquivos criptografados – cada engenharia reversa). Enquanto pesqui- va arquivos criptografados num arquivo um com uma solução diferente para o sávamos este artigo, não conseguimos contêiner ou numa partição feita espeproblema da cifragem. Examinamos evitar o sentimento de que a análise cificamente para esse propósito. algumas dessas alternativas, com o ob- do código-fonte parecia mais uma esApesar de o Loop-AES utilizar alguns jetivo de oferecer alguma informação cavação arqueológica do que uma au- truques de sistema de nível bem baixo, e sobre técnicas de criptografia, qualidade ditoria de código. Funções relevantes de sua tecnologia ser no mínimo venede código e os méritos relativos de cada estavam escondidas sob muitas camadas rável, ele é fácil de usar em aplicações opção. Analisamos os seguintes sistemas de depósito de código, software des- práticas. O Crosscrypt [2] acrescenta o de arquivos: cartado e experimentos criptográficos. recurso de ler contêineres Loop-AES no Entretanto, pelo menos esclareceram a Windows®. ➧ Loop-AES forma como os desenvolvedores tentaO número de opções para criar e usar ➧ DM-Crypt ram várias abordagens para solucionar o sistema de arquivos Loop-AES impede ➧ Truecrypt os problemas da cifragem do sistema uma análise efetiva de segurança. O de➧ Crypt-FS de arquivos. sempenho na gravação é radicalmente ➧ Enc-FS

http://supertuxbr.blogspot.com 30

http://www.linuxmagazine.com.br


Sistemas de arquivos | CAPA

diferente, dependendo da sua seleção. O código-fonte bagunçado também impede uma auditoria, dificultando uma análise do que está acontecendo no núcleo do Loop-AES, e se o código realmente cumpre o que promete. O Loop-AES não utiliza o salt (um conjunto de bits aleatórios) para fazer um hash da senha, o que impediria que uma mesma senha gerasse chaves idênticas. Além disso, o algoritmo empregado pelo Loop-AES utiliza só uma iteração de hash (como SHA256 ou SHA512) para gerar a chave de criptografia. Essa abordagem deixa o Loop-AES aberto a ataques de dicionário – quando um invasor utiliza dicionários e conjuntos de regras para gerar uma lista de possíveis senhas e calcular o hash a priori. O resultado é uma coleção de hashes que podem ser tentados, eliminando a necessidade de testar todas as combinações possíveis de números (que configurariam um ataque de força bruta). O readme do Loop-AES [3] afirma que esse sistema de arquivos é capaz de usar tanto o salt quanto iterações múltiplas. Os arquivos de configuração de exemplo desse sistema que o Google retornou, no entanto, não mostram qualquer sinal de salt e fixam em 100 o valor de iteração (o que corresponde a 100.000 iterações). Por padrão, o Loop-AES não usa nenhum dos dois recursos. Se um usuário selecionar iterações explicitamente (o que só parece ser possível com AES256), o software criptografa dois blocos de 128 bits com a chave inicial, e troca os 64 bits de maior valor do primeiro bloco de 128 bits pelos 64 bits de menor valor do segundo bloco de 128 bits. Esse algoritmo se repete quantas vezes você quiser, para retornar o valor final de 256 bits. Como o nome sugere, o Loop-AES utiliza o algoritmo AES em modo CBC para a cifragem. A coleção de opções para lidar com o Vetor de Inicialização (IV, na sigla em inglês) é grande demais, e inclui opções para especificar o número

Conhecendo o Loop-AES Instalar o Loop-AES a partir do código-fonte é o primeiro obstáculo. O pacote requer fontes do kernel específicos, incluindo os componentes gerados pela compilação – os administradores podem preferir compilar o kernel dos fontes, na maioria dos casos. Também será necessário aplicar patches e recompilar o pacote fundamental util-linux [4], que contém importantes comandos do sistema, como mount. Pelo menos o arquivo readme [3] explica o processo com relativa precisão, ao mesmo tempo fornecendo dicas úteis sobre como usar o Loop-AES junto com o recurso software suspend. Como isso é de nível muito baixo, recomendamos que os leitores atenham-se aos pacotes padrão de sua distribuição. Os usuários do Ubuntu desfrutam de um processo bem fácil, como mostra o exemplo 1. O comando aptitude, na linha 1, instala os pacotes necessários. O module-assistant, nas linhas 2 a 4, então gera um pacote do Loop-AES apropriado, a partir do código-fonte. Uma pequena falha acontece nesse ponto, mas com uma solução bastante fácil: durante a compilação, o sistema reclama que o debian/rules não possui os direitos necessários. A solução para esse problema é abrir uma janela de terminal, mudar as permissões manualmente com o comando chmod +x /usr/src/modules/loop-aes/debian/rules, e depois repetir a compilação. A boa integração com o sistema e uma coleção de ferramentas customizadas tornam o Loop-AES fácil de usar. A linha 7 do exemplo 1 mostra uma chamada ao Losetup , que estabelece uma conexão lógica entre o dispositivo de loop loop0 e a partição /dev/hda6. Você também poderia facilmente especificar um arquivo normal como dispositivo de blocos aqui; o arquivo agiria como um contêiner para o dispositivo de blocos criptografado. Quando for pedido, entre uma senha com no mínimo 20 caracteres; o Losetup então gravará na partição os cabeçalhos requeridos pelo Loop-AES. Um sistema de arquivos XFS é criado na linha 8 para completar o dispositivo de loop, que depois pode ser montado. Depois de desmontar, um losetup -d /dev/loop0 desfaz o mapeamento da conexão lógica com o dispositivo físico. Para automatizar a montagem, pode-se adicionar o seguinte ao /etc/fstab: /dev/hda6 /home/chris/loopaes xfs defaults,loop=/dev/loop0,encryption=AES256 0 0

de setores ou um hash MD5 desse número como o IV. O Loop-AES possui um importante erro de programação comum a vários programas de criptografia: o código falha ao verificar os valores de retorno das chamadas de função. Se um erro ocorrer no cálculo da chave, o software simplesmente continua sua operação, sem perceber que a chave é formada por um amontoado de zeros. Isso deixa os dados praticamente sem criptografia. O código é tão ruim em algumas partes que o programa tem mais probabilidade de travar com um de-referenciamento a um ponteiro nulo do que realmente com o uso de uma chave vazia. Mas confiar numa programação desleixada para se proteger de erros mais sérios parece uma atitude fortemente negligente.

Exemplo 1: Loop-AES no Ubuntu 01 02 03 04 05 06 07 08 09

sudo sudo sudo sudo sudo

aptitude install loop-aes-utils loop-aes-source module-assistant update module-assistant prepare module-assistant build loop-aes dpkg -i loop-aes-2.6.15-26-686_3.1b-8+2.6.15-26.45_i386.deb

losetup -e AES256 /dev/loop0 /dev/hda6 mkfs.xfs /dev/loop0 mount /dev/loop0 /home/chris/loopaes

DM-Crypt

O DM-Crypt [5] se tornou parte oficial do mapeador de dispositivos (device mapper) na versão 2.6.4 do kernel, oferecendo um serviço de cifragem transparente de dados. O sistema pode usar uma partição separada ou um contêiner (através do Losetup) para armazenamento. Diferentemente do Loop-AES, o DM-Crypt não se restringe a um único algoritmo: os usuários podem selecionar qualquer algoritmo que o kernel conheça. Ao contrário de seu antecessor inseguro (o Cryptoloop), a solução usada pelo DM-Crypt é útil para sistemas de arquivos com journal, como o Ext3 ou o XFS. O DM-Crypt até monta contêineres do Cryptoloop, o que torna essa transição da solução antiga para a nova bem menos dolorosa. Além do módulo do kernel, o sistema DM-Crypt necessita de várias ferramentas de espaço de usuário. O programa cryptsetup já deve ter sido incluído em todas as distribuições. Infelizmente, o Ubuntu, extremamente amigável fora isso, mostra sua diferença e esconde esse pacote crítico no repositório Universe. Hoje em dia, o cryptsetup normalmente é visto em combinação com o LUKS (Linux Unified Key Setup, [6], [7]), de

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

31


CAPA | Sistemas de arquivos

Clemens Fruhwirth. Nossos testes do DM-Crypt incluíram o LUKS. O LUKS armazena seus metadados no cabeçalho do contêiner, gerenciando múltiplas senhas, que o administrador pode revogar individualmente sem precisar cifrar novamente os dados. Isso garante o acesso seguro por múltiplos usuários. O Windows consegue ler formatos DM-Crypt em conexão com o Free OTFE [8]. A maior vantagem do DM-Crypt é sua integração transparente ao sistema como um todo. O Debian e o Ubuntu mostram como isso pode ser fácil para o administrador, usando um arquivo de configuração para automatizar todo o processo no momento da inicialização. Despercebido pelo usuário, ele configura uma swap criptografada de forma muito elegante: swap /dev/hda2 /dev/random swap

Essa entrada no /etc/crypttab se aplica ao espaço de swap em /dev/hda2. Na inicialização do sistema, o DM-Crypt providencia uma chave aleatória a partir do /dev/random e usa a chave para criptografar o dispositivo de swap. Mas a maior segurança tem um preço: a suspensão para o disco passa a não funcionar mais. O DM-Crypt possui muitas características em comum com o Loop-AES: ambos são módulos do kernel, e ambos confundem o usuário com opções demais para a compilação e a execução. A configuração padrão é restrita a uma única iteração de hash do tipo RIPEMD-160, e faz isso sem salt. O modo IV padrão é plain, que usa o número de 32 bits do setor como o IV.

Figura 1

Entendendo o LUKS com DM-Crypt É necessário um pacote Cryptsetup modificado para o LUKS – a maioria das distribuições modernas deve oferecer isso por padrão. Se a sua distribuição for diferente, procure um pacote na coleção de [9]. É fácil preparar um contêiner: cryptsetup luksFormat -y -c aes-cbc-essiv:sha256 /dev/hda6 cryptsetup luksOpen /dev/hda6 crypto mkfs.ext3 /dev/mapper/crypto O primeiro comando prepara o /dev/hda6 como dispositivo a ser criptografado. Ele escreve o cabeçalho do contêiner, que depois guardará as chaves, entre outras coisas. A opção -y pede a senha duas vezes. Como alternativa, o Cryptsetup também pode usar um arquivo de senhas. O parâmetro -c aes-cbc-essiv:sha256 faz o DM-Crypt gravar os dados em modo CBC (Cipher Block Chaining) e fornecer um vetor de inicialização com hash por SHA256. Sem esses parâmetros, os dados ficariam suscetíveis ao watermarking, uma técnica que envolve o preparo de arquivos pelo atacante e a inserção desses arquivos no contêiner de forma não criptografada. Se você não confiar no comprimento de chave de 128 bits, pode dobrar esse valor especificando -s 256. A opção luksOpen no segundo comando põe o dispositivo físico nas mãos do mapeador de dispositivos, e depois já pode ser acessado como crypto. Assim como em dispositivos RAID e LVM (Logical Volume Manager), a última linha cria um sistema de arquivos (Ext3, no nosso caso). O comando cryptsetup luskRemove crypto depois apaga o dispositivo do sistema.

Exemplo 2: Truecrypt no Ubuntu 01 02 03 04 05 06 07 08 09 10 11

sudo aptitude install build-essential linux-source gawk cd /usr/src sudo tar xvjf linux-source-2.6.15.tar.bz2 cd linux-source-2.6.15 sudo cp /boot/config-2.6.15-26-686 .config sudo make prepare cd /usr/src tar xvzf truecrypt-4.2a-source-code.tar.gz cd truecrypt-4.2a/Linux sudo ./build.sh sudo ./install.sh

Felizmente, há um modo mais seguro conhecido como ESSIV, que criptografa o número do setor (para impedir que um atacante o adivinhe). Todavia, nossa busca na Web por exemplos de configuração, assim como os exemplos da página do projeto, nos levou a suspeitar que poucos usuários optem pelo ESSIV. Os ganhos de segurança com o modo ESSIV também são mínimos, pois o ESSIV é mantido para todos os dados desse setor. Do ponto de vista da criptografia, todo setor deveria ter um novo IV para cada alteração. A variante LUKS do sistema DM-Crypt tem desempenho muito melhor, embora, por algum motivo, a configuração do DM-CryptO TrueCrypt oferece uma interface gráfica para LUKS mantenha o pagerenciar os recursos de arquivos. râmetro inseguro do

DM-Crypt por padrão. Dito isso, o Cryptsetup-LUKS utiliza o número criptografado do setor como IV padrão quando cria um dispositivo no formato do LUKS. A principal tarefa da extensão LUKS é o gerenciamento de chaves, entretanto, e há algumas melhorias perceptíveis nessa área. O LUKS utiliza o método já estabelecido como padrão de geração de chaves PBKDF2 para criar uma chave a partir de uma senha.

Truecrypt

O Truecrypt [10] alega ser seguro e portátil. O aplicativo Truecrypt utiliza contêineres cifrados tanto em sistemas Linux quanto Windows. Os algoritmos de criptografia incluem AES, Blowfish, Cast 5, Serpent, Triple-DES e Twofish, e também permite combinações de múltiplas variantes. Três algoritmos de hash (RIPEMD160, SHA-1 e Whirlpool) garantem a integridade. O Truecrypt (figura 1) consegue usar tanto arquivos quanto

http://supertuxbr.blogspot.com 32

http://www.linuxmagazine.com.br


Sistemas de arquivos | CAPA

Usando o Truecrypt Dependendo do desempenho do seu sistema, o procedimento de instalação pode levar desde poucos minutos até várias horas. O processo de compilação iniciado na linha 10 do exemplo 2 compila o kernel inteiro, sem necessidade disso, antes de continuar com a compilação do módulo truecrypt e suas ferramentas acessórias. Se você não tiver o pacote gawk (como é o caso no Ubuntu, por exemplo), todo o processo termina com uma mensagem de erro. Os administradores podem simplesmente responder sim às três primeiras perguntas do script de instalação (iniciado na linha 11 do exemplo 2). Se você permitir que usuários não administradores executem o Truecrypt, respondendo sim também à próxima pergunta, o instalador especificará o bit UID no binário, abrindo um vetor de ataque potencial. Dito isso, a programação é bastante limpa, e portanto o risco é calculável. Você pode executar truecrypt --create para criar um novo sistema de arquivos criptografado por essa ferramenta. Se você não fornecer todas as opções necessárias na linha de comando, a ferramenta perguntará por eles interativamente. O exemplo 3 cria um arquivo contêiner em /home/chris/truecrypt/test (linhas 1 e 2) e formata o contêiner com um sistema de arquivos FAT (linha 3). O Truecrypt usa esse menor denominador comum para o intercâmbio de dados entre sistemas Windows® e Linux por padrão. Se você preferir não usar FAT, pode especificar o sistema de arquivos do contêiner em um passo mais adiante. Se você optar pela criptografia baseada em arquivos, a ferramenta ainda pedirá que você especifique o tamanho do contêiner (100 MB, linha 4), antes de seguir oferecendo uma seleção de algoritmos de hash e criptografia. O RIPEMD160 e AES com comprimento de chave de 256 bits são os padrões. Diferentemente dos outros dois sistemas de criptografia mostrados até agora, o Truecrypt usa a cifragem LRW manipulável de blocos estreitos (LRW tweakable narrow-block encryption) (quadro LRW). Apesar de o Truecrypt suportar o tradicional, porém inseguro, modo CBC, seus desenvolvedores recomendam veementemente que ele não seja usado. A ferramenta depois pede uma senha; além disso, o Truecrypt pode opcionalmente usar chaves de arquivos. Para usar só um arquivo, deixe a senha em branco. O Truecrypt coleta movimentos do mouse e entradas do teclado para gerar entropia, em vez de depender do /dev/random. Baseado no valor aleatório, o Truecrypt sobrescreve todo o contêiner com uma seqüência pseudo-aleatória de números para evitar tentativas de adivinhar os arquivos guardados no contêiner. O comando truecrypt --dismount /mnt desmonta o sistema de arquivos. É bem mais difícil montar automaticamente os contêineres do Truecrypt durante a inicialização do que os do DM-Crypt, por exemplo. Seria necessário gravar seus próprios scripts para criptografar o diretório /home. O Pamscript [11] poderia ser útil nisso, para rodar scripts durante a autenticação pelo PAM (Pluggable Authentication Modules). O Truecrypt sofre de um problema fundamental, comum a módulos externos do kernel: se o módulo externo não funcionar logo após uma atualização de kernel, os usuários ficam incapazes de acessar seus dados.

partições como contêineres. O primeiro método é mais popular entre os usuários. Os desenvolvedores dão ênfase à possibilidade de o usuário negar plausivelmente a existência de arquivos criptografados. O Truecrypt tenta fazer isso usando um contêiner preparado que não dá margem a especulações sobre criptografia. O software preenche o contêiner com lixo aleatório, e insere no final da shell um contêiner interno – como bonecas russas (figura 2). Com o lançamento da versão 4.2 do Truecrypt, esse programa de código aberto, desenvolvido originalmente para o Windows, introduziu o suporte à criação de arquivos criptografados no Linux. O passo inicial, antes disso, só era possível no Windows. O programa não nega suas origens, e o porte para Linux ainda está incompleto. Por

exemplo, ele não possui a interface a que os usuários de Windows estão acostumados. A documentação para esse sistema é muito boa e abrangente, mas os usuários de Linux têm que se contentar com uma sucinta página de manual.

Os usuários têm maior probabilidade de serem desestimulados pelo uso complicado, começando pela instalação. A página do projeto mostra vários pacotes pré-compilados para distribuições de Linux comuns, mas a maioria deles falhará se você atualizar seu kernel. Embora o changelog alegue não haver necessidade de recompilar o pacote dentro de uma mesma versão do kernel, alguns passos manuais são necessários no Ubuntu 6.06, por exemplo. De um ponto de vista criptográfico, o Truecrypt é o programa mais sofisticado e profissional de todos os candidatos testados. Ele vem com uma útil documentação, e é baseado em padrões como a função de geração de chaves PBKDF2, assim como o modo LRW (veja o quadro LRW) para a cifragem baseada no setor. O Truecrypt é o único programa com padrões seguros, e o software verifica valores de retorno de funções, alertando o usuário em caso de erros. A única desvantagem do Truecrypt foi o fato de os desenvolvedores manterem o modelo de segurança Rumpelstiltskin e disfarçarem o contêiner como uma coleção de lixo digital. Eles levam essa abordagem tão a fundo que fazem o Truecrypt iniciar um ataque de força bruta contra o cabeçalho do volume, ao tentar acessar os dados no contêiner. Apesar de a senha ser conhecida, o Truecrypt precisa tentar todos os algoritmos de hash e cifragem até encontrar dados úteis. Isso nos deixou com uma impressão desnecessariamente ambígua: o programa é convincente, e os programadores realmente sabem o que estão fazendo. Por outro lado, os desenvolvedores são teimosos em relação a propriedades de segurança controversas. ➧

Volume padrão

Cabeçalho

Espaço ocupado Dados ocultos

Volume oculto Figura 2

Cabeçalho do volume oculto

Um contêiner Truecrypt sem (acima) e com (abaixo) um volume oculto.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

33


CAPA | Sistemas de arquivos

Crypto-FS

O Crypto-FS [16] é o sistema de arquivos mais simples que investigamos. Ele é um sistema de arquivos baseado no LUGS, mas agora também roda sobre o FUSE (veja o quadro Sistemas de arquivos no espaço do usuário). Como nenhuma das grandes distribuições disponibilizava um pacote para o Crypto-FS no momento da confecção deste artigo, alguns passos manuais são necessários. Diversas dependências devem ser satisfeitas: devem ser instalados os pacotes de desenvolvimento do FUSE ou LUFS, a Libgcrypt [17] versão 1.1.44 ou mais recente, e a Glib [18] versão 2.6 ou mais nova. Seguindo o padrão ./configure && make && make install, talvez você queira adaptar a configuração de exemplo fornecida ( cryptofs.conf) às suas necessidades, armazenando-a no arquivo .cryptofs no diretório onde serão guardados os arquivos criptografados. Na primeira vez que você fizer isso, o Crypto-FS pedirá uma senha. Há duas formas de iniciar a ferramenta: a típica do FUSE, usando um binário separado chamado cryptofs, ou usando o módulo do LUFS com lufsmount:

Sistemas de arquivo no espaço do usuário A introdução dos sistemas de arquivo baseados no espaço de usuário, LUFS (Linux Userland Filesystem [12]) e o recente FUSE (Filesystem in Userspace [13]), levou a vários projetos derivados interessantes, que nunca teriam conseguido chegar ao kernel por mérito próprio. Por exemplo, o GmailFS [14] e o FTPFS [15] oferecem aos usuários a possibilidade de utilizar o serviço de email do Google ou um servidor FTP como se fossem diretórios locais. Parece lógico integrar a funcionalidade da criptografia de forma semelhante (figura 3). Isso oferece vantagens em comparação com soluções baseadas no kernel: ➧ Sistemas de arquivos que residem no espaço do usuário atuam como filtros e facilitam o armazenamento seguro dos dados em locais fora do controle do usuário. Por exemplo, o usuário de um servidor poderia guardar dados criptografados em um servidor FTP do provedor dedicado a processos de becape. ➧ Sistemas de arquivos do espaço do usuário funcionam no nível do arquivo. Diferentemente de seus equivalentes menos flexíveis baseados em contêineres, eles usam o sistema de arquivos existente e adaptam-se a seu tamanho. ➧ Como arquivos criptografados e seus respectivos metadados ficam guardados diretamente no sistema de arquivos, as ferramentas de becape detectam com facilidade os arquivos modificados, e só processam estes. Por outro lado, a visibilidade dos metadados é a maior desvantagem dessa solução. Um usuário com acesso ao sistema de arquivos automaticamente sabe o número de arquivos criptografados, suas permissões e seu tamanho aproximado (a 8 ou 16 bytes). Dependendo do sistema e da configuração, até os nomes de arquivos poderiam ficar visíveis como texto limpo.

cryptofs -r /home/chris/.cryptofs ➥ /home/chris/cryptofs lufsmount cryptofs://home/chris/.cryptofs ➥ /home/chris/cryptofs

EncFS / CryptoFS

Operação de leitura e escrita

libfuse

glibc

glibc

VFS (Sistema de arquivos Virtual)

FUSE

Figura 3

XFS

Criptografia com um sistema de arquivos do espaço do usuário: a Glibc passa as operações de leitura e escrita através do kernel, ou a seu VFS (sistema de arquivos virtual), para ser mais preciso. O módulo do FUSE se comunica com sua contraparte do espaço do usuário.

O caminho absoluto é vital, pois, caso não seja especificado, o mount apontará para um buraco negro. Para dar aos atacantes o mínimo possível de informação sobre os arquivos criptografados, o Crypto-FS passa uma cifragem Base-64 sobre os nomes de arquivos antes de guardálos. Porém o tamanho do arquivo ainda fica visível. O Crypto-FS criptografa arquivos individuais com um algoritmo escolhido pelo usuário, normalmente AES em modo CBC. O programa tem sua própria abordagem para gerar o IV. Após converter a senha do usuário para uma chave de criptografia, ele criptografa um buffer com bytes nulos para tirar n valores para o IV. Para cada enésimo bloco de arquivos, o Crypto-FS utiliza o vetor de inicialização com o número n. Como o número de blocos de arquivos facilmente excederá n em aplicações práticas, os sistemas de arquivos usam cada IV várias vezes – um erro fatal em criptografia. Os desenvolvedores estão satisfeitos com o uso de uma única chamada a uma função hash, normalmente SHA1, para transformar a senha em uma chave, e até fazer isso sem um salt. Isso torna o programa suscetível a ataques de dicionário. Para combater isso, o programa não verifica valores de retorno de funções. Se uma função que processa chaves ou criptografa dados por acaso falhar, o Crypto-FS simplesmente continua funcionando com uma chave em branco, ou simplesmente passa a ela os dados de texto limpos.

http://supertuxbr.blogspot.com 34

http://www.linuxmagazine.com.br


Sistemas de arquivos | CAPA

Exemplo 3: Criação de um sistema de arquivos Truecrypt 01 02 03 04 05 06 07 08 09 10 11

Volume type: 1 Enter file or device name for new volume: /home/chris/truecrypt/teste Filesystem: FAT Enter volume size (bytes - size/sizeK/sizeM/sizeG): 100M Hash algorithm: 1 Encryption algorithm: 1 Enter password for new volume ‘/home/chris/truecrypt/teste’: Re-enter password: Enter keyfile path [none]: truecrypt /home/chris/truecrypt/teste /mnt

Exemplo 4: Enc-FS 01 02 03 04 05 06 07

Directory “/home/chris/.encfs” does not exist, create (y,n)? Directory “/home/chris/encfs” does not exist, create (y,n)? Creating new encrypted volume. Please choose from one of the following options: enter “x” for expert configuration mode, enter “p” for pre-configured paranoia mode, anything else, or an empty line will select standard mode.

Enc-FS

O Enc-FS [22] é outro sistema de espaço do usuário baseado no moderno FUSE (Filesystem in Userspace, [13]), que se tornou parte do kernel na versão 2.6.14. As versões atuais do Enc-FS precisam pelo menos do FUSE 2.5 e do Rlog [23]. O Enc-FS depende do OpenSSL para fins de criptografia. O uso básico é realmente simples. Quando você digita o comando encfs ~/.encfs ~/encfs, o programa pede para você fornecer as opções mostradas no exemplo 4. Se um dos diretórios, ou ambos, estiverem faltando, o Enc-FS os criará para você (linhas 1 e 2). Na primeira execução, o sistema cria um arquivo .encfs5 no diretório de origem com a informação necessária para cifrar os arquivos armazenados nesse diretório. Quando você fizer becape de seus dados, não se esqueça de incluir esse arquivo. O Enc-FS oferece as opções de operar em modo padrão ou em modo paranóico. O primeiro utiliza o algoritmo Blowfish

com um comprimento de chave de 160 OpenSSL. Se você preferir deixar os nomes bits, e criptografa os nomes dos arquivos. de arquivos sem criptografia, o programa O software processa blocos de 512 bytes oferece as opções para isso. durante o procedimento de criptograDiferentemente do Crypto-FS, o fia, associa os vetores de inicialização, Enc-FS possui várias funções úteis que e inicializa os cabeçalhos dos arquivos tornam o sistema mais fácil e seguro de usar. Uma montagem Enc-FS pode separadamente. O modo paranóico promete mais se- ser desmontada automaticamente após gurança através do uso de AES com um um período de tempo pré-definido. Essa tamanho de bloco de 512 bits. Além dos opção é muito útil em combinação com passos executados pelo modo padrão, o a integração ao PAM [24]. E o Enc-FS Enc-FS paranóico armazena todos os consegue ficar em pé de igualdade com blocos com um checksum para detectar seus concorrentes em relação à escolha modificações nos dados. Além desse re- da plataforma: a versão 1.3 ou mais nova curso do checksum, o nome do arquivo do software está disponível para o Freeé incluído no vetor de inicialização para BSD, e também existe um porte para o conteúdo. Renomear um arquivo, en- Windows em [25]. O Enc-FS cifra cada arquivo com um tão, leva à re-cifragem completa. Esse processo quebra hardlinks, causando algoritmo de bloco, como AES em modo problemas para programas como o Mutt CBC, por exemplo. Entretanto, devido a ou o Procmail. um erro de programação, o software usa Além disso, o Enc-FS possui um modo CFB (Cipher Feedback) em vez de CBC. expert que permite que os usuários sele- Cada setor de 512 bytes contém 504 bytes cionem suas próprias configurações a de dados e um HMAC (hashed MAC) partir de uma lista de todos os algoritmos de 8 bytes do texto limpo. ➧

Exemplo 5: Código do Enc-FS 01 void CipherV3::randomize( unsigned char *buf, int len ) const 02 { 03 memset( buf, 0, len ); 04 if(RAND_bytes( buf, len ) == 0) 05 { 06 char errStr[120]; 07 unsigned long errVal = 0; 08 if((errVal = ERR_get_error()) != 0) 09 { 10 rWarning(“openssl error: %s”, ERR_error_string( errVal, errStr )); 11 } 12 } 13 }

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

35


CAPA | Sistemas de arquivos

Em vez de apagar o HMAC, o Enc-FS realiza uma operação booleana do tipo XOR (“ou” exclusivo) sobre os dados. O valor resultante dessa operação também é usado como vetor de inicialização. Se um único bit do texto limpo daquele setor mudar, o IV e conseqüentemente todo o setor cifrado também têm que mudar. O Enc-FS protege os nomes dos arquivos primeiro criptografando-os e depois armazenando uma versão codificada por Base-64. Mais uma vez, o programa usa como IV um HMAC derivado do nome do arquivo. Para impedir que arquivos com nomes iguais retornem textos cifrados idênticos, o Enc-FS usa o caminho absoluto para calcular o MAC. O modo de criptografia é um complexo de faça-você-mesmo. O programa inicia realizando XOR em todos os bytes com o byte seguinte. Se o tamanho do setor for igual ao do bloco do algoritmo, o Enc-FS então criptografa o setor inteiro em modo CBC. Se não, ele usa CFB. Isso parece um erro de programação, pois o CBC, que é mais seguro, seria preferível quando o volume de dados fosse um inteiro múltiplo do tamanho do bloco. O setor sempre será maior que um bloco de criptografia, e portanto o CBC nunca é usado. O Enc-FS então inverte a ordem dos bytes em cada seção de 64 bytes. Finalmente, ele efetua mais uma rodada de XOR e operações de cifragem. Essa rodada obviamente é feita

Figura 4

LRW O modo de criptografia LRW [19], batizado em homenagem a seus criadores Liskov, Rivest e Wagner, é um algoritmo manipulável de cifragem de blocos estreitos. Ele resolve alguns dos problemas do modo CBC, sem o trabalho excedente proveniente de algoritmos manipuláveis de blocos largos, e também não sofre com questões de patentes. O LRW não produz muito mais trabalho excedente que o CBC, e o algoritmo é adequado para processamento paralelo no hardware. Além de uma chave de criptografia, o LRW precisa de um valor de manipulação (outras operações de criptografia referem-se a valores comparáveis como “salts”). Assim como um salt, a manipulação não precisa ser secreta. Ela simplesmente garante que o texto cifrado é diferente para cada valor de manipulação, mesmo que o texto limpo seja idêntico. Portanto, ele converte um único algoritmo de cifragem de blocos em uma família completa de algoritmos independentes. Para criptografar discos rígidos, é bom usar o número do setor e a posição do bloco AES dentro do setor como o valor de manipulação. Isso o torna único para cada bloco AES. Enquanto o CBC permite que blocos criptografados sejam movidos para uma posição diferente sem comprometer a capacidade de decifragem, ataques do tipo copiar-e-colar sobre LRW estão fadados a fracassar. Criptografar com uma manipulação e decriptografar com outra retorna somente lixo. A manipulação normalmente é calculada como o número do setor vezes 32, mais o índice dentro do setor. O fator 32 surge ao dividirmos 512 (o número de bytes por setor) por 16 (bytes por bloco AES). Simplificando, a manipulação é o número do bloco AES, contando a partir do início do dispositivo criptografado [20]. Quem já conhece o AES de outros contextos sabe de um problema prático com o rascunho do modo LRW padrão: há alguns anos, os 16 candidatos a AES tinham seis variações de ordem para os 128 bits de entrada e saída. O LRW une o caos. O modo de criptografia AES-GCM (Galois/Counter Mode [21], usado no padrão de WLAN 802.11) e o LRW interpretam as ordens de bits e bytes no bloco de formas diferentes (Big-Endian e Little-Endian). O resultado computacionalmente caro desse engano organizacional: o GCM interpreta os dados como Little-Endian, e então tem que inverter a ordem dos 128 bits no bloco. Como o GCM é bastante difundido, por exemplo em hardware para WLAN, esses dois modos são mutuamente exclusivos, de forma geral. Ainda não se descobriu qual modo vencerá no fim do dia. Dos candidatos testados neste artigo, somente o Truecrypt usa o modo LRW. Enquanto trabalhava com o Cryptsetup-LUKS para o DM-Crypt, Clemens Fruhwirth escreveu um patch [7] para o LRW, e tentou fazer com que fosse aceito no kernel no início de 2005. Infelizmente, isso não funcionou, devido a conflitos técnicos com o gerenciamento de memória.

O benchmark Bonnie++ mostra que a criptografia afeta o desempenho de leitura e escrita. O Loop-AES mostra o melhor desempenho de gravação de caracteres, mas o DM-Crypt lê os blocos mais rápido. O Truecrypt quase vence na leitura de blocos. O Enc-FS é incrivelmente rápido para um sistema de arquivos no espaço do usuário.

para atingir o mesmo efeito de mascaramento de dados que um algoritmo de blocos largos, mas não oferece a mesma segurança criptográfica, embora as operações sejam igualmente caras em termos de CPU. A transformação de senhas ocorre sem um salt no Enc-FS, e é limitada a 16 operações de hashing. Mil ou duas mil operações são consideradas o mínimo para evitar ataques de dicionário. Assim como muitos competidores, o Enc-FS nem se preocupa em verificar valores de retorno das funções. Se algo der errado, os dados permanecerão sem criptografia. Mesmo as partes do código que conferem o valor de retorno cometem erros sérios. Em vez de se assegurar de que a operação tenha sido executada corretamente, o programa por padrão supõe que tudo tenha saído certo, e só verifica algumas das possíveis condições de erro. Se a função falhar com um valor de retorno inesperado, o Enc-FS ignora o erro e continua despreocupadamente.

http://supertuxbr.blogspot.com 36

http://www.linuxmagazine.com.br


Sistemas de arquivos | CAPA

Velocidade

Pedimos que todos os sistemas de arquivos testados mostrassem seu desempenho em um benchmark. Nossa máquina de testes era um IBM Thinkpad T40p com 1,5 GB de RAM e um disco rígido Hitachi de 7200 RPM. Os valores foram medidos no Ubuntu 6.06 LTS com o Bonie++ [26], com conjuntos de dados de 3 GB. O XFS foi o sistema de arquivos no contêiner criptográfico em todos os casos. Os resultados, mostrados na figura 4, demonstram claramente a queda de desempenho causada pela criptografia. Apesar de só atingir a metade da velocidade normal, o sistema de arquivos DM-Crypt mostra velocidades de gravação e leitura razoavelmente constantes, com seu ponto forte sendo as operações sobre blocos. O desempenho de escrita do Truecrypt é ruim; ele não alcança nem o desempenho da ferramenta de espaço de usuário do EncFS. Mas é rápido em operações de leitura, quase alcançando o DM-Crypt. O Loop-AES é o candidato mais rápido para operações de leitura e escrita em caracteres, apesar de perder para o DM-Crypt em operações sobre blocos. Para um sistema no espaço do usuário, o Enc-FS se sai razoavelmente bem, sendo seus pontos fortes a leitura e a escrita de blocos. Entretanto, arquivos pequenos o fazem cair para o nível do Truecrypt, com desempenho de leitura especialmente baixo. O sistema de arquivos Crypto-FS fica em último no grupo, alcançando só um terço do desempenho de um sistema de arquivos não criptografado.

Mais Informações [1] Loop-AES: http://loop-aes.sourceforge.net [2] Crosscrypt: http://www.scherrer.cc/crypt/ [3] Readme do Loop-AES: http://loop-aes.sourceforge.net/loop-AES.README [4] Util-linux: ftp://ftp.kernel.org/pub/linux/utils/util-linux/ [5] DM-Crypt: http://www.saout.de/misc/dm-crypt/ [6] Cryptsetup-LUKS: http://luks.endorphin.org/dm-crypt [7] Clemens Fruhwirth e Markus Schuster, “Mensagem secreta – DMCrypt, LUKS e Cryptsetup”, Linux Magazine 12/05, pg. 64

[8] Free OTFE: http://www.freeotfe.org [9] LUKS para as massas: http://luks.endorphin.org/masses [10] Truecrypt: http://www.truecrypt.org [11] Pamscript: http://linux.bononline.nl/linux/pamscript/01/build.html [12] LUFS: http://lufs.sourceforge.net/lufs/ [13] FUSE: http://fuse.sourceforge.net [14] Gmail-FS: http://richard.jones.name/google-hacks/ gmail-filesystem/gmail-filesystem.html [15] FTPFS: http://ftpfs.sourceforge.net [16] Crypto-FS: http://www.reboot.animerc.de/cryptofs/ [17] Libgcrypt: ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt [18] Glib: http//www.gtk.org [19] Moses Liskov, Ron Rivest e David Wagner, “Tweakable Block Ciphers”: Proceedings of Crypto 2002, Spinger-Verlag, Lecture Notes in Computer Science N. 2442

[20] Clement Kent (Editor), “Draft Proposal for Tweakable Narrow-block Encryption”: IEEE P1619 Working Group, 6 de Agosto de 2004

[21] Morris Dworkin, “Recommendation for Block Cipher Modes of Operation – Galois/Counter Mode (GCM) for Confidentiality and Authentication”, NIST

Cadê a carne?

A maioria dos sistemas de arquivos criptografados no Linux deixa um gosto amargo na boca do usuário. Eles tropeçam em armadilhas criptográficas, e suas implementações geralmente contêm diversos erros (erros típicos: falha ao verificar valores de retorno de funções). A exceção positiva do grupo foi o Truecrypt – um programa originalmente desenvolvido para o Windows e que não se integra bem ao Linux, pelo menos por enquanto. O DM-Crypt na variante LUKS do Cryptsetup fica em segundo lugar. Seu desempenho é bom, e demonstra menos erros criptográficos que os outros concorrentes, pressupondo que o usuário opte por uma configuração segura. As configurações padrão são desnecessariamente inseguras. E é decepcionante que o patch do LRW não tenha chegado ao kernel. ■

Special Publication 800-38D: http://csrc.nist.gov/publications/ drafts/Draft-NIST_SP800-38D_Public_Comment.pdf

[22] Enc-FS: http://arg0.net/wiki/encfs [23] Rlog: http://arg0.net/wiki/rlog [24] Pam_encfs: http://hollowtube.mine.nu;wiki/index.php?n=Projects.PamEncfs [25] Enc-FS para Windows: http://www.crc32.net/encfs [26] Bonnie++: http://www.coker.com.au/bonnie++/ [27] RFC 2898, “PKCS #5 – Password-Based Cryptography Specification Version 2.0”: http://tools.ietf.org/html/rfc2898

Os autores Christian Ney é administrador de firewalls e sistemas Unix de uma empresa aérea regional, e também oferece consultoria sobre segurança e alta disponibilidade para médias empresas. Peter Gutmann trabalha para o Departamento de Ciência da Computação da Universidade de Auckland, Nova Zelândia. Ele está envolvido no projeto e análise de arquiteturas criptográficas de segurança, é co-autor do PGP e já publicou diversos artigos e RFCs sobre segurança e criptografia. Peter Gutmann também é autor do conjunto de ferramentas de código aberto Cryptlib, e de “Cryptographic Security Design and Verification” (Springer, 2003).

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

37


Tutorial: Criptografia de discos rígidos com DM-Crypt e LUKS

CAPA

O disco todo Criptografar um diretório home é fácil. Criptografar seu disco rígido inteiro, incluindo a partição raiz, dá um pouco mais de trabalho. por Michael Nerb

B ra

ndo

lin nB

b ken

er g

w -w

x w.s

c.h

u

C

riptografar sistemas de arquivos vamos mover o /boot para uma mídia /boot precisa estar em uma partição não individuais não é difícil; na ver- externa – um pendrive, no caso. Para ini- criptografada só dele. dade, algumas distribuições até cializar a partir do pendrive, precisaremos Neste artigo, usamos DM-Crypt [1] permitem que você criptografe diretórios modificar as configurações da BIOS e do para nossa criptografia de sistema de ardurante a própria instalação. Mas crip- gerenciador de inicialização GRUB. O quivos. O DM-Crypt costuma ser a opção tografar o diretório home de seu laptop pendrive depois cria uma outra camada preferida para criptografar sistemas de é um trabalho incompleto. Invasores de segurança, pois funciona como uma arquivos desde o kernel 2.6.4. Ele usa a e bisbilhoteiros ainda conseguem tirar “chave” que o ladrão precisará obter para infra-estrutura do mapeador de disposimuitas conclusões a partir dos arquivos conseguir acessar os dados do laptop. Se tivos (Device mapper) [2], e criptografa de registro e de configuração. Se você qui- essa solução lhe parecer pouco prática, dispositivos de blocos transparentemente, ser segurança real através da criptografia, você pode manter a partição de inicia- baseando-se na Crypto API do kernel para precisa proteger todo o disco rígido contra lização em seu disco rígido. Porém, o isso. O Linux Unified Key Setup (LUKS) a espionagem – uma coisa que nenhuma distribuição faz por padrão. As coisas começam a ficar mais complexas se você precisar proteger o sistema de arquivos raiz. Nem o Suse nem o Debian oferecem ferramentas para ajudar o usuário a criptografar o sistema raiz durante a instalação (ou depois). Isso significa que é necessário arregaçar as mangas e fazer algumas configurações “na unha”. Neste tutorial, começaremos instalando um sistema Linux padrão, e então prosseguiremos com a criptografia dos sistemas de arquivos existentes, um de cada vez. Terminaremos apagando a partição desprotegida e usando o espaço para outras tarefas, como, por exemplo, mudar o diretório /home para uma partição criptografada só dele. Nosso objetivo é criptografar o disco rígido inteiro (com exceção da tabela de partições no Registro Mestre de InicialiFigura 1 Inicialização por um pendrive – cada BIOS faz da sua forma. Nossa BIOS de exemplo zação, ou MBR). Como não é possível encontra os dispositivos removíveis e um dispositivo genérico de armazenamento. criptografar a partição de inicialização,

http://supertuxbr.blogspot.com 38

http://www.linuxmagazine.com.br


Discos rígidos | CAPA

Quadro 1: Apagando dados com segurança Sempre que arquivos são apagados pelo rm, o Linux simplesmente apaga seus respectivos inodes no diretório. Os dados permanecem no disco e podem ser restaurados com pouco esforço. Reformatar com um mkfs não sobrescreve a partição. Para deletar os dados permanentemente, é necessário modificar ativamente a magnetização dos setores de forma adequada. O modo mais fácil de fazer isso é com um comando como dd if=/dev/zero of=/dev/hda. Mas assim como uma chuvinha normal não encobre todos os buracos no chão, alguns resíduos de magnetização ainda permanecem depois de sobrescrever o espaço com zeros. Um agressor com o equipamento certo conseguiria reconstituir os dados originais. Uma solução que demanda mais tempo, porém bem mais segura, é usar o /dev/urandom em vez do /dev/zero. Dependendo do seu nível de paranóia, você pode fazer isso entre três e 35 vezes [5] para ter “alguma certeza” de que apagou os dados para sempre. As ferramentas shred e wipe [7] ajudam nisso. Entretanto, tenha em mente que elas pressupõem algumas condições básicas que podem não se aplicar em sistemas RAID, sistemas de arquivos com journal (como ReiserFS, Ext3 e XFS), ou alguns drivers de discos rígidos e componentes de firmware que fazem um buffer dos dados e realizam múltiplas operações de escrita de uma vez só. Para ter certeza absoluta, seria necessário destruir o disco rígido e jogá-lo em algum lugar onde ele nunca seria encontrado. Mas você pode economizar esse trabalho todo implementando os mecanismos descritos neste artigo, e depois simplesmente esquecendo as senhas.

acrescenta algumas melhorias, discutidas na Linux Magazine 15, de dezembro de 2005 [3]. O projeto do LUKS é implementado sob a forma da ferramenta de configuração cryptsetup-luks [4]. Uma alternativa à instalação do zero é a modificação de um sistema existente, presumindo que você tenha suficiente espaço livre no disco para criar uma nova partição para os dados que está criptografando. Não se preocupe! Depois que você terminar de criptografar, os patches de disco e atualizações de kernel não devem causar qualquer problema, e as suas ferramentas de backup e recuperação devem funcionar como sempre.

O Linux normalmente detecta pendrives como dispositivos SCSI conferindo-lhes endereços da mesma forma (/dev/sda, por exemplo). Use o fdisk para criar uma tabela de partições com no mínimo uma partição, e formate a partição (mkfs.ext2 /dev/sda1). Depois faça: mount /dev/sda1 /mnt cp -ax /boot/* /mnt

Isso copia o diretório /boot para o pendrive. Se ele ainda não existir, use o comando ln -s . boot para criar um link simbólico no diretório /mnt, para evitar algum problema com o grub-install mais tarde. Agora modifique a configuração do carregador de inicialização GRUB no pendrive: o arquivo /mnt/grub/device.map informa como o GRUB mapeia os nomes de dispositivos da BIOS e do Linux; é necessária uma entrada (hd0) /dev/sda. Mude as entradas dos nomes de dispositivos de (hd0,3) para (hd0,0) (isso corresponde a /dev/sda1) no arquivo de configuração /mnt/grub/menu.lst:

(Se você preferir não inicializar a partir de um pendrive, utilize a sugestão alternativa de particionamento mostrada na coluna 2 da tabela). Especifique o tamanho e o número de partições de acordo com o disco do seu laptop e seu uso – configurações de dual boot são possíveis. Não crie um usuário title Suse Linux 9.3 (USB-Boot) kernel (hd0,0)/vmlinuz root=/dev/hda4 nessa fase da instalação; você poderá fazer initrd (hd0,0)/initrd isso depois, no sistema criptografado. Depois de completar a instalação, você já deve ter um sistema Linux funPor último, execute grub-install -cional em /dev/hda4. Se você tiver um root-directory=/mnt /dev/sda para instalar kernel de versão mais antiga que 2.6.11 o GRUB na MBR de seu pendrive. Se (com o Debian Sarge, por exemplo), tudo funcionar, você pode inicializar o será necessário atualizar o kernel agora. laptop através do pendrive – para isso, Para os próximos passos, também será configure a ordem de inicialização da necessária a ferramenta de configuração BIOS para inicializar o computador a cryptsetup-luks. partir de mídias externas primeiro. O quadro 2: Atualizações para o Debian O equipamento necessário para esse la- Sarge descreve como atualizar um sisteboratório é um laptop apropriado, um ma Sarge; no Suse Linux, você só precisa pendrive de mais ou menos 64 MB e a instalar o cryptsetup-luks. A página do sua distribuição de Linux preferida (com LUKS [4] oferece uma versão estática kernel 2.6.11 ou mais recente) – nós testa- pré-compilada que pode ser copiada para Por motivos de segurança, alterne para o mos as versões do Suse Linux 9.3 e 10.0, /sbin/cryptsetup-luks. modo single user ou então feche todos os além do Debian Sarge. Verifique na BIOS programas desnecessários, pare todos os do laptop se ele suporta a inicialização por USB (figura 1). Use um Live CD Tabela 1: Particionamento para garantir que o Linux suporta seu laptop; talvez você queira aproveitar essa Inicialização pelo pendrive Alternativa: pelo HD Conteúdo oportunidade para apagar todo o conte- – /dev/hda1 Partição de inicialização /boot údo do disco do laptop (veja o quadro 1: – Partição Estendida /dev/hda2 Apagando dados com segurança). Partição swap criptografada /dev/hda1 /dev/hda5 Para a instalação inicial, divida o /dev/hda2 /dev/hda6 Sistema de arquivos /tmp criptografado disco rígido em quatro partições, con- /dev/hda3 Sistema de arquivos raiz criptografado /dev/hda7 forme mostrado na coluna 1 da tabela 1. /dev/hda4 Sistema de arquivos raiz não cripto/dev/hda8 Essa configuração aloja uma versão não grafado (a ser apagado depois) criptografada do sistema Linux em /dev/

Preparação

hda4.

Iniciando por um pendrive

Criptografando partições

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

39


CAPA | Discos rígidos

Quadro 2: Atualizações para o Debian Sarge Para preparar o Debian Sarge para criptografar a partição raiz, termine a instalação e depois adicione o seguinte aos fontes do Apt (lembrando de comentar todas as outras fontes no /etc/apt/sources.list): deb http://http.us.debian.org/debian unstable contrib main Em seguida, rode apt-get update e apt-get install -f para atualizar a base de dados de pacotes, e então faça assim: apt-get install yaird linux-image-2.6.17-2-686 apt-get install cryptsetup Isso instala uma versão atual do kernel, do cryptsetup e do yaird, uma ferramenta para criar discos RAM de inicialização (como o mkinitrd). (Note que o número da versão da imagem do kernel pode ter mudado desde a publicação deste artigo – a versão 2.6.17-1 estava disponível nos servidores quando esses testes começaram). Agora inicialize o computador com o novo kernel.

serviços que não sejam essenciais e feche Em ambos os casos, o cryptsetup-luks todas as sessões de usuários. utiliza senhas aleatórias do /dev/urandom; as Utilizaremos o sistema Linux recém- senhas residem na memória principal do instalado para criptografar as partições laptop e desaparecem quando você o desliga. do laptop passo a passo; as partições Como ninguém sabe as senhas, os dados em questão são /dev/hda1 a /dev/hda3. A guardados na swap e no /tmp são irrecupepartição /dev/hda4, que está abrigando o ráveis, mas é justamente essa a intenção. A sistema de arquivos raiz agora, não será swap contém despejos (dumps) de memómais necessária depois. Pode-se reciclá- ria e é reiniciada sempre que você liga seu la e criar uma partição para o diretório computador. Não há qualquer benefício /home se você quiser. em manter a swap legível; pior ainda, exisOs passos básicos (veja o quadro 3: tem vários riscos de segurança nisso. Cada Device mapper, DM-Crypt e Cryptsetup) distribuição tem sua própria solução para são sempre os mesmos: use o cryptsetup- lidar com arquivos temporários. Como reluks para criar um dispositivo de blocos gra, os programas não devem contar com a virtual com criptografia AES integrada, sobrevivência dos dados armazenados no e mapeá-lo em um dispositivo de blocos /tmp a uma reinicialização. adequado (no disco rígido do laptop). Enquanto isso, você precisará entrar uma senha que o programa usará para criar a chave simétrica. A chave então é usada para a criptografia dos dados. Finalmente, formate o dispositivo de Recomenda-se recriar esses sistemas de blocos virtual com um sistema de ar- arquivos toda vez que você ligar a máquina. O Debian torna isso bem fácil: quivos, e depois monte-o. simplesmente especifique o parâmetro CRYPTDISKS_ENABLE=Yes em /etc/defaults/cryptdisks (caso ainda não esteja A partição swap e o diretório /tmp são especificado), e adicione o seguinte a candidatos úteis para nossos primeiros /etc/crypttab: experimentos com o cryptsetup-luks: eles contêm dados temporários e não causa- #<dispositivo alvo> <dispositivo fonte> ➥ <chave> <opções> riam grandes perdas em caso de erros. swap /dev/hda1 /dev/urandom swap O exemplo 1 mostra a seqüência de tmp /dev/hda2 /dev/urandom tmp comandos para ativar e desativar manualmente a criptografia da swap e do /tmp. Para a swap, deve-se configurar um Também é necessário modificar o dispositivo de blocos virtual /dev/mapper/ arquivo /etc/fstab; apague a entrada já swap usando o cryptsetup-luks, e depois existente da swap ou altere-a: inicializar o dispositivo com um mkswap e ativá-lo com o swapon. Da mesma forma, /dev/mapper/swap none swap sw,pri=1 crie outro dispositivo de blocos virtual, / ➥ 0 0 /dev/mapper/tmp /tmp ext2 defaults dev/mapper/tmp, formate-o com Ext2 com o ➥ 0 0 comando mkfs.ext2, e depois monte o dispositivo como /tmp. No Debian, substitua os comandos cryptsetup-luks por cryptseO Suse Linux também possui um tup ou crie um link apropriado. arquivo /etc/cryptotab, porém usa dispo-

Realmente temporário

Aquecimento

sitivos de loop. No Suse, recomenda-se utilizar um script do init.d para ativar o /tmp e a swap. Um script de shell que faz isso sozinho (cryptfs), e baseado em [8], está disponível no site da Linux Magazine [9]. Depois de baixá-lo (em /etc/init. d/), crie links simbólicos em /etc/rcX.d para chamar o script nos runlevels apropriados. Por último, apague a linha da partição swap anterior, não criptografada, do arquivo /etc/fstab.

Gerenciamento da raiz Vamos reiniciar o computador, só para assegurarmos que o Linux crie e ative os sistemas de arquivos. Se tudo funcionar, podemos passar para a tarefa principal: criptografar o sistema de arquivos raiz. Ao contrário do /tmp e da swap, o sistema de arquivos raiz é permanente: isto é, ele não é recriado a cada reinicialização. A raiz é criada uma vez e montada na inicialização. Precisamos de alguma funcionalidade estendida do LUKS (do cryptsetup-luks) nesse momento, e o procedimento é um pouco diferente. Os parâmetros a seguir criam um cabeçalho LUKS em /dev/hda3; o LUKS usa o algoritmo de criptografia AES, com um comprimento de chave de 256 bits, e especifica uma senha: cryptsetup-luks -c aes-cbc-essiv:sha256 ➥ -y -s 256 luksFormat /dev/hda3

Agora crie um dispositivo de blocos virtual, /dev/mapper/dm-root, que será mapeado na partição /dev/hda3. O cryptsetup pedirá a senha recém-configurada. Depois, prossiga formatando o dispositivo de blocos virtual (com Ext3 em nosso exemplo) e monte o dispositivo: cryptsetup-luks luksOpen /dev/hda3 dm-root mkfs.ext3 /dev/mapper/dm-root mount /dev/mapper/dm-root /mnt

O sistema de arquivos recém-criptografado agora está montado em /mnt, e ainda está vazio. Será necessário inserir seu pendrive inicializável nos próximos passos. Copie a instalação completa da partição /dev/hda4 para /mnt – esse processo criptografa e guarda os dados em /dev/hda3. Não copie os diretórios /boot, /lost+found, /proc, /sys, /tmp e /mnt. Os comandos para copiar são mais ou menos assim:

http://supertuxbr.blogspot.com 40

http://www.linuxmagazine.com.br


Discos rígidos | CAPA

cd /; cp -ax bin dev etc home lib media ➥ opt root sbin usr var /mnt/

A cópia talvez demore um pouco, pois dois a três GB precisam passar pela camada de criptografia. Ao final, você fica com uma imagem do sistema de arquivos raiz de /dev/hda4 em /dev/hda3. Você pode desmontar manualmente (umount /mnt; cryptsetup-luks luksClose dm-root), e remontar (crypt-setup-luks luksOpen /dev/hda3 dm-root; mount /dev/mapper/dmroot /mnt) agora. Agora use o chroot para trabalhar

com o sistema criptografado. Comece configurando os pontos de montagem faltantes, e depois monte o pendrive como /boot.

chroot /mnt mkdir -p /boot /proc /sys /tmp /mnt mount -t proc proc /proc mount -t sysfs sysfs /sys mount /dev/sda1 /boot

Quadro 3: Device mapper, DM-Crypt e Cryptsetup Assim como dispositivos de loop, a infraestrutura do device mapper [2] destaca dispositivos de blocos físicos de dispositivos de blocos virtuais (figura 2). Essa virtualização cria uma camada de abstração que é fortalecida por várias aplicações, sendo o DM-Crypt [1] só uma delas. O DM-Crypt criptografa transparentemente os dados passados pelo dispositivo de blocos virtual e armazena os dados no dispositivo de blocos físico – e vice-versa. O dispositivo de blocos físico parece conter lixo – é necessário fornecer a senha correta para montar um sistema de arquivos pelo dispositivo de blocos virtual, para então conseguir utilizar os dados de alguma forma. A ferramenta de espaço de usuário cryptsetup é necessária para configurar o DM-Crypt; os dispositivos de blocos virtuais são configurados no diretório /dev/mapper/. O cryptsetup-luks é uma extensão do cryptsetup, e oferece melhorias, que discutimos em maiores detalhes em [3] – mas, para resumir: P Uma chave aleatória é usada para criptografar os dados; a chave é armazenada no cabeçalho LUKS da partição – criptografada com a chave gerada a partir da senha. Isso dá ao administrador a possibilidade de mudar a senha sem precisar recriptografar toda a partição. P O uso de salting e stretching dificulta os ataques de dicionário sobre as senhas dos usuários. P O ESSIV (Encrypted Salt Sector IV) dificulta ataques de marca d’água em modo de encadeamento de chaves em blocos (Cipher Block Chaining); esse recurso foi introduzido com o kernel 2.6.11.

O embrulho todo

Para permitir que o Linux inicie a partir do sistema de arquivos raiz criptografado, precisamos modificar o initrd conforme descrito a seguir. Se você agora tentasse iniciar a O programa cryptsetup-luks e os mópartir do pendrive, com o sistema de dulos de kernel necessários precisam ser arquivos raiz ainda em /dev/hda3, ou / de-referenciados no initrd. dev/mapper/dm-root, não daria certo, pois O init deve carregar os módulos do o programa init (que é parte do initrd) kernel e montar o dispositivo de blocos não conseguiria lidar com o sistema virtual /dev/mapper/dm-root como sistema de arquivos raiz de forma alguma: a de arquivos raiz. Dependendo do estado da integração partição /dev/hda3 pareceria conter só lixo, e o dispositivo virtual /dev/mapper/ do cryptsetup na sua distribuição, há didm-root ainda não existe. ferentes soluções para isso.

Camada do Kernel

Camada da aplicação

dm-root /dev/hda3 none ➥ luks,cipher-aes-cbc-essiv:sha256

De forma parecida, mude o sistema de arquivos raiz em /etc/fstab para apontar para /dev/mapper/dm-root: /dev/mapper/dm-root / ext3 defaults 0 1

Ext 2

descriptografado

Dispositivo de blocos lógico: /dev/mapper/tmp

DM-Crypt

criptografado Camada do hardware

O Debian Sarge oferece um suporte bastante útil. Adicione os módulos aes-i586 e sha256 ao /etc/mkinitd/modules (cada um em uma linha diferente); acrescente a seguinte linha ao arquivo /etc/crypttab já existente:

Ponto de montagem: /tmp

Camada do sistema de arquivos

Camada de criptografia

Ramdisk no Debian

Dispositivo de blocos físico: /dev/hda2

Disco Rígido

Figura 2 Acesso aos arquivos em várias camadas – a criptografia pelo LUKS acrescenta uma nova camada, que se localiza entre o sistema de arquivos lógico e o hardware (acesso ao disco rígido).

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

41


CAPA | Discos rígidos

Depois execute yaird -o /boot/initrd para criar um initrd funcional no pendrive. O yaird (yet another initrd) substitui a ferramenta mkinitrd padrão, que não consegue lidar com sistemas de arquivos raiz criptografados no Debian.

Ramdisk no Suse

No Suse Linux é preciso acrescentar os módulos de kernel necessários dm-mod, dmcrypt, aes-i586, sha256 e ext3, usando o parâmetro INITRD_MODULES do arquivo /etc/ sysconfig/kernel. (Os nomes dos módulos devem estar separados por espaços). Mais alterações são necessárias ao programa /sbin/mkinitrd: talvez você queira criar uma cópia de segurança antes de continuar. Na função mkinitrd_kernel, procure as linhas que copiam /sbin/ insmod para o ramdisk; dependendo da sua versão do Suse, eles podem ser um pouco diferentes. No Suse Linux 10.1, as linhas são assim:

Quadro 4: Segurança básica Criptografar o disco rígido do seu laptop é só uma camada de uma política de segurança muito mais abrangente – e não substitui uma política de segurança, pois só protege os dados enquanto o computador estiver desligado. Se você perder seu laptop após digitar as senhas corretas e com uma sessão de usuário rodando Linux no sistema, um atacante conseguirá obter o mesmo nível de acesso que teria a uma máquina desprotegida. Esse alerta também se aplica a ameaças vindas da Internet, pressupondo que o laptop a acesse. Programas maliciosos obtêm acesso irrestrito a seus dados assim que conseguem acessar o sistema. Em outras palavras, este tutorial não pode oferecer segurança absoluta; mas seguir essas regras pode mantê-lo o mais seguro possível: ➧ Guarde o laptop e o pendrive separadamente. ➧ Configure uma senha de inicialização e uma de supervisor na BIOS do laptop; só permita que o boot seja feito por um pendrive específico. ➧ Use senhas robustas, e mude-as em intervalos regulares. ➧ Não trabalhe com privilégios de root se puder evitar. ➧ Use uma configuração pessoal restritiva de firewall. ➧ Use pelo menos um antivírus com assinaturas de vírus atualizadas. ➧ Configure um protetor de tela protegido por senha, e deixe-o entrar em ação automaticamente. ➧ Busque entradas suspeitas em seus arquivos de log regularmente. ➧ Busque e instale patches e atualizações de segurança para todos os softwares que você usa. ➧ Faça cópias de segurança de seus dados em intervalos regulares; mantenha os backups em um lugar seguro.

Figura 3

Depois de completar as operações, você deve ver três sistemas de arquivos criptografados em /dev/maper e na tabela de montagens. Para apagar a informação em texto puro remanescente, crie uma partição /home criptografada no hda4.

if ! cp_bin $initrd_insmod ➥ $tmp_mnt/sbin/insmod 2>/dev/null ; then error 5 “no static insmod” fi

Acrescente a seguinte linha imediatamente abaixo disso: cp_bin /sbin/cryptsetup-luks ➥ $tmp_mnt/sbin/ 2>/dev/null || ➥ error 5 “no static cryptsetup-luks”

Na função udev_discover_root, acrescente o seguinte como primeiro comando: | echo “Usando o dispositivo LUKS ➥ $rootdev. Digite a senha agora.” | /sbin/cryptsetup-luks luksOpen /dev/hda3 ➥ dm-root

Depois, você só precisa mudar a entrada para o sistema de arquivos raiz para /dev/mapper/dm-root (para o sistema de arquivos Ext3) em /etc/fstab. Finalmente, execute o comando /sbin/mkinitrd -o / boot/initrd para criar um novo ramdisk inicial no pendrive.

Montagens

Antes de reiniciar, modifique o arquivo /boot/grub/menu.lst em seu pendrive. Mude o parâmetro root do kernel na entrada do menu que inicia o sistema Linux, fazendo-o apontar para o dispositivo de blocos virtual /dev/mapper/dm-root. Também será necessário modificar a entrada do initrd para /boot/initrd. Uma entrada típica seria assim: title Suse Linux 10.0 (USB-Boot, ➥ Raiz criptografada) kernel (hd0,0)/vmlinuz ➥ root=/dev/mapper/dm-root

initrd (hd0,0)/initrd

Reinicie o laptop. Assegure-se de que você configurou o dispositivo USB como dispositivo de inicialização padrão na ordem de inicialização da BIOS. O cryptsetup-luks agora pedirá a senha para o sistema de arquivos raiz e, assim que você responder com a senha certa, entrará na tela de login. Executar mount apaga qualquer resquício de dúvida (figura 3). Se isso não funcionar, tente iniciar sem o pendrive: você ainda deve ter o sistema Linux não criptografado no disco rígido, e pode começar a resolver os problemas a partir daqui.

Ajuste fino

Se tudo isso funcionar, você não precisará mais do sistema de arquivos raiz não criptografado do /dev/hda4. Apague os dados dessa partição e use o cryptsetup-luks para especificar outro sistema de arquivos criptografado chamado / dev/mapper/dm-home. Formate a partição e monte-a em /home. Depois, crie todos os usuários que precisar; seus diretórios home serão automaticamente criptografados em /dev/hda4. Uma desvantagem disso é que swap criptografada e a suspensão para o disco são mutamente exclusivas – portanto, certifique-se de desativar o segundo (se existir, apague o parâmetro do kernel resume=/dev/hda1 do /boot/grub/menu.lst.) O Suspend2 [6] é uma alternativa que suporta a suspensão para o disco com uma partição swap criptografada; entretanto, isso significa aplicar patches e compilar o kernel “oficial”. Você não precisará do pendrive enquanto o laptop estiver rodando,

http://supertuxbr.blogspot.com 42

http://www.linuxmagazine.com.br


Discos rígidos | CAPA

contudo, é essencial plugá-lo para as atualizações do kernel, pois o mkinitrd ou o yaird tentará instalar o novo initrd no pendrive. Para se manter seguro, faça uma cópia do pendrive antes de atualizar seu kernel, ou adicione uma entrada ao sistema funcional anterior na sua configuração do GRUB. O Kernel 2.6.13 sofreu algumas modificações do Udev que podem impedir o initrd de funcionar como pretendido. O yaird não tem esse problema. Para ficar realmente seguro, crie um Live CD com suporte ao LUKS. Você poderá usar o CD para montar manualmente e fazer cópias de segurança das partições criptografadas. Os usuários do Suse devem tomar cuidado com as atualizações que o YaST faz do mkinitrd. Faça backups das alterações do LUKS ao script /sbin/mkinitrd e compare-as com a nova versão após atualizar o mkinitrd.

Conclusões

Ao longo deste tutorial, criptografamos todo o disco rígido, exceto a MBR. O pendrive é necessário para inicializar. Isso oferece aos viajantes uma boa dose de segurança passiva. Mas ainda é importante utilizarmos medidas comuns de segurança e proteção (veja o quadro 4: Segurança básica). ■

Mais Informações [1] DM-Crypt:http://www.saout.de/ misc/dm-crypt [2] Página de recursos do Device mapper: http://sources.redhat.com/dm [3] “Mensagem secreta”, por Clemens Fruhwirth e Markus Schuster, Linux Magazine 15, dezembro/2005, pág. 64.

[4] Linux Unified Key Setup (LUKS): http://luks.endorphin.org/ dm-crypt [5] Peter Gutmann, “Secure Deletion of Data from Magnetic and Solid-State Memory” (em inglês):

http://www.cs.auckland.ac.nz/ ~pgut001/pubs/secure_del.html [6] Suspend 2: http://www.suspend2.net [7] Wipe – Apagamento seguro de arquivos:

http://wipe.sourceforge.net [8] Script Luksopen no wiki do DM-Crypt: http://www.saout.de/tikiwiki/ tiki-index.php?page=luksopen [9] Script de shell cryptfs: http://www.linux-magazine.com/ Magazine/Downloads/72/DM-Crypt [10] Clemens Fruhwirth: “New Methods in Hard Disk Encryption” (em inglês):

http://clemens.endorphin.org/ nmihde/nmihde-A4-ds.pdf

Exemplo 1: Criando a Swap e o /tmp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

# swapoff -a # cryptsetup-luks -s 256 /dev/urandom create swap /dev/hda1 # ls -l /dev/mapper/ total 124 crw------- 1 root root 10,63 Apr 3 2006 control brw-r----- 1 root root 253,0 Apr 2 23:53 swap # mkswap /dev/mapper/swap Setting up swapspace version 1, size = 1019895 kB # swaoib /dev/mapper/swap # cat /proc/swaps Filename Type Size Used Priority /dev/mapper/swap partition 995988 0 -3 # swapoff /dev/mapper/swap # cryptsetup-luks remove swap # cat /proc/swaps # # cryptsetup-luks -s 256 -d /dev/urandom create tmp /dev/hda2 # mkfs.ext2 /dev/mapper/tmp mke2fs 1.36 (05-Feb-2005) [...] # mount /dev/mapper/tmp /tmp # ls -l /tmp/ total 17 drwx------ 2 root root 12288 Apr 2 23:55 lost+found # umount /tmp cryptsetup-luks remove tmp ls -l /dev/mapper total 124 crw------- 1 root root 10,63 Apr 3 2006 control

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

43


Queimando discos com um sistema de arquivos criptográfico

Escondendo o jogo CAPA

Um disco rígido criptografado no seu servidor não serve de nada se os dados confidenciais de CDs ou DVDs caírem nas mãos erradas. Mostraremos algumas soluções convenientes para criptografar seus dados em mídias removíveis. por Matthias Jansen

D av

T

alvez você já armazene seus dados importantes em uma área criptografada do disco rígido. Se você ainda não faz isso, é bom começar logo após terminar de ler esta revista. Se você usa seus dados também fora do trabalho e de casa, pode ser bom guardar uma “foto” deles num CD ou copiar seus arquivos para um pendrive. Mas é importante preocupar-se com o risco de carregar seus dados com você por aí. Pendrives são usados exatamente como discos rígidos externos, então proteger um pendrive com criptografia é bastante fácil. Criptografar CDs e DVDs é mais difícil, mas ainda há algumas opções. Este artigo explora duas úteis técnicas para armazenar dados criptografados num CD ou DVD. O jeito mais fácil de guardar dados criptografados num CD é usar o GPG ou outra ferramenta semelhante para criptografar os arquivos individualmente

e guardá-los normalmente na mídia. Essa solução funciona com vários aplicativos, e oferece um nível adequado de segurança, mas os riscos aparecem quando se olha de perto. Um usuário conseguiria descriptografar manualmente o arquivo e guardar temporariamente o texto em um local gravável. Como ambos os atos de cifrar e decifrar o arquivo por criptografia são feitos de forma casual, sem os benefícios de um sistema de arquivos criptografado para garantir a segurança, essa opção poderia resultar em várias versões do arquivo separadas – alguns criptografados e outros descriptografados. Além da desvantagem das múltiplas rodadas de cifragem e decifragem, essa solução também desperdiça espaço em disco. Uma solução mais simples – a de despejar o conteúdo do dispositivo de blocos criptografado em um disco – também parece ser utilizável. Infelizmente, par-

G ide

u gl

ielm

o

w –w

x w.s

c.h

u

tições de menos de 8 GB (ou seja, que caberiam em um DVD de dupla camada) são raras hoje em dia. Portanto, é necessário distribuir a partição ao longo de diversos discos. Para ler a imagem, o usuário tem que juntar novamente os pedaços. Mais uma vez, essa solução desperdiça espaço em disco, embora ao menos evite o problema de múltiplos ciclos de cifragem e decifragem. Este artigo examina outras duas soluções para o problema da criptografia de CDs e DVDs. A primeira técnica utiliza uma extensão criptográfica da ferramenta cdrecord. O outro método usa o AES Pipe, uma ferramenta que oferece criptografia AES a uma corrente de dados arbitrários. Essas técnicas oferecem criptografia transparente para o acesso de leitura, e são quase tão rápidas quanto um sistema de arquivos criptografado, embora não seja possível modificar o CD depois.

Exemplo 1: Patch de criptografia 01 02 03 04 05

wget ‘ftp://ftp.berlios.de/pub/cdrecord/cdrtools-2.01.tar.bz2’ wget ‘http://burbon04.gmxhome.de/linux/files/cdrtools-2.01-encrypt-1.0rc2.diff.gz’ tar xjvf cdrtools-2.01.tar.bz2 cd cdrtools-2.01 zcat ../cdrtools-2.01-encrypt-1.0rc2.diff.gz | patch -p1

http://supertuxbr.blogspot.com 44

http://www.linuxmagazine.com.br


CDs e DVDs | CAPA

Exemplo 2: OSS DVD e criptografia 01 02 03 04 05 06 07

wget ‘ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-2.01.01a05.tar.bz2’ wget ‘http://www.crashrecovery.org/oss-dvd/cdrtools-2.01.01a05-ossdvd.patch.bz2’ wget ‘http://crashrecovery.org/oss-dvd/cdrtools-2.01.01a01-encrypt-1.0rc1.diff.gz’ tar xjvf cdrtools-2.01.01a05.tar.bz2 cd cdrtools-2.01.01 bzcat ../cdrtools-2.01.01a05-ossdvd.patch.bz2 | patch -p1 zcat ../cdrtools-2.01.01a01-encrypt-1.0rc1.diff.gz | patch -p1

Rápido como um raio

Exemplo 3: Variante antiga

A primeira solução criptografa os dados 01 # mkisofs -J -R ~/dados/ | cdrecord dev=/dev/hda -encrypt -encstyle=old -encpass=<SENHA> diretamente enquanto grava a mídia 02 [...] com a ferramenta cdrecord. Maximi03 NOTE: this version of cdrecord is an inofficial (modified) release of lian Decker escreveu um patch [1] 04 cdrecord and thus may have bugs that are not present in the 05 original version. Please send bug reports and support requests to para o programa de gravação de CDs 06 <burbon04 at gmx.de>. For more information please see de Jörg Schilling para que ele supor07 http://burbon04.gmxhome.de/linux/CDREncryption.html. The original tasse essa forma de criptografia. O 08 author should not be bothered with problems of this version. trecho contido no exemplo 1 mostra 09 [...] como aplicar o patch. O executável 10 Starting to write CD/DVD at speed 48 in real TAO mode for single 11 session. Last chance to quit; resultante permite que os usuários 12 starting real write 0 seconds. Operation starts. forneçam uma chave para a sessão de 13 Turning BURN-Free off gravação atual. A ferramenta utiliza 14 Using aes-256-cbc encryption with plain password, plain IV. (e.g. criptografia AES de 256 bits em modo 15 cryptoloop >2.4.22, 2.6). CBC (veja o Glossário). 16 [...] 17 Track 01: Total bytes read/written: 42958848/42958848 (20976 A versão GPL do cdrecord queima 18 sectors). CDs, mas não DVDs. São necessários 19 # mount -t iso9660 /dev/cdrom /media/crypt -o encryption=aes256 dois patches para lidar com DVDs, e 20 # ls /media/crypt ambos devem ser modificados para a 21 cat.mpeg funny_cats.wmv versão 2.01.01a05 do cdrecord (do ramo 22 newsreportfromIraq.wmv 23 Karate_Beetle.avi German_Engineering_Arab_Technology.wmv alpha da ferramenta). 24 sexy_nutcracker.mpg O suporte a OSS DVD [2] acres25 felina_in_the_snow.mpg noteastgermany.mpg centa um recurso para gravar DVDs, 26 Languageproblems.mpg e um outro patch de criptografia, disponível no mesmo servidor, oferece a ele a capacidade de criptografia Ela usa o CBC para combinar 16 desses (exemplo 2). Nos dois casos, o patch criptográfico es- pacotes e criar um bloco de 512 bytes, e A necessidade de aplicar patches tende a função write_track_data() (figura depois para combinar quatro desses bloao cdrecord é a única desvantagem 1). Essa função grava o buffer interno num cos para criar um de 2048 bytes, que o dessa solução. A boa notícia para os CD ou DVD. O patch usa a implemen- cdrecord finalmente grava no CD. A restrição a unidades de 512 bytes usuários do Gentoo Linux é que eles tação GPL de AES feita pelo Dr. B. R. só precisam ativar o termo USE on- Gladman [3] para cifrar dados, dividin- restringe a solução ao modo 1 do CD, the-fly-crypt ao fazer o emerge de app- do-os em pacotes de 256 bits (32 bytes) que armazena blocos de exatamente 2048 cdr/cdrtools. cada, e aplicando uma chave de 256 bits. bytes. O modo 2 utiliza blocos de 2352

-

Gravação críptica

mkisofs

cdrecord

write_track_data()

-encrypt?

não

write_buf()

CD/DVD

sim enc_buf() Figura 1 Dependendo do parâmetro -encrypt, a versão com patches do cdrecord passará os dados através de uma etapa de criptografia antes de gravá-los no CD.

Pacotes necessários Forma de criptografia

Debian

Ubuntu

Gentoo (USE-flag)

CD-Record -encstyle=old CD-Record -encstyle=new

old-crypt: util-linux, sys-fs/loop-aes

cryptsetup

cryptsetup

sys-fs/cryptsetup

AES-Pipe

loop-aes-utils, loop-aes-source

loop-aes-utils, loop-aes-source

crypt: utils-linux, sys-fs/loop-aes

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

45


CAPA | CDs e DVDs

Imagem mkisofs aespipe

cdrecord

CD/DVD

dd

Fita

aes_encrypt()

tar, cpio

Figura 2 O AES Pipe criptografa uma corrente de dados da entrada padrão e a envia à saída padrão, independentemente de qual programa a tenha criado. Dessa forma, é possível usar o AES Pipe para criar scripts que usem outros comandos de gravação de CD.

bytes, que não são divisíveis por 512. Para ativar a criptografia, simplesmente use a opção -encrypt. Existem três métodos para fornecer a senha necessária: ➧ Texto limpo (não criptografado):

Questão de chave

Escolha o novo

A solução distingue entre dois estilos de Se o seu kernel for compatível com DMchaves. A variante antiga utiliza a chave Crypt, prefira a variante nova. O exemplo (e quaisquer complementos) diretamente, 3 oferece todo o procedimento, desde a enquanto o novo estilo primeiro aplica um gravação até a montagem com a solução encpass=<SENHA> algoritmo SHA 256 (hash seguro). A dife- antiga, e o procedimento para a solução ➧ Valor hex: -encpasshex=70617373776F72 rença fica aparente na criptografia. nova é mostrado no exemplo 4. As primei64 Dados gravados no CD com uso da ras linhas de ambos os exemplos criam ➧ Arquivo: encpassfile=/home/Nome/chave. variante antiga podem ser montados usan- um sistema de arquivos ISO e o passam secreta (só os primeiros 32 bytes têm do-se o dispositivo crypto-loop. A variante ao cdrecord. O parâmetro para a variannova cria um CD para o DM-Crypt, o alvo te antiga é encstyle=old (exemplo 3); na uso) variante nova, é -encstyle=new. Nos dois O terceiro método é o preferível. Os criptografado do device mapper. O estilo antigo só é recomendado se o casos, -encrypt ativa a criptografia. dois primeiros exigem que se guarde a As diferenças ficam aparentes ao monchave no histórico da sua shell e numa sistema alvo estiver rodando um kernel mais lista de processos, onde terceiros pode- antigo. A nova variante DM-Crypt necessita tar um CD criptografado. O exemplo 3 do kernel 2.5.6 ou mais recente, apesar de não usa um comando mount estendido (linha riam descobri-la. Se a chave de entrada for curta de- exigir patches. Para o estilo antigo de montagem 15), enquanto a variante do exemplo 4 mais, o patch a completará para atingir segura com o dispositivo crypto-loop, criado chama o Cryptsetup (linha 15) para se 32 bytes. O código interpretará todas as por um AES de 256 bits, são necessários alguns preparar para montar através do device quebras de linha antes do limite dos 32 patches Losetup. Nem todas as distribuições mapper (linha 16). Note que o parâmetro bytes como se fossem parte da chave. oferecem os patches por padrão (veja a tabela -r (somente leitura) não está disponível Isso pode ser problemático se o usuário Pacotes necessários). Versões mais novas dos na versão atual (0.1) do Cryptsetup. Sem tentar entrar a chave manualmente du- pacotes incluem aqueles que talvez sejam essa opção, o Cryptsetup se recusará a incompatíveis com a variante antiga. criar o mapeador para mídias protegidas rante a cifragem. contra gravação. Para evitar o uso da versão do CVS, pode-se mapear o CD em um dispositivo Exemplo 4: Variante nova de loop, usando-se o comando losetup para 01 # mkisofs -J -R /dados/pequeno/Witzig/Videos/ | cdrecord dev=/dev/hda -encrypt contornar o problema, e usar o Cryptseencstyle=new -encpass=<SENHA> tup. (Veja o exemplo 5, linha 9). 02 [...] 03 NOTE: this version is an inofficial (modified) release of 04 cdrecord and thus may have bugs that are not present in the 05 original version. Please send bug reports and support requests to 06 <burbon04 at gmx.de>. For more information please see 07 http://burbon04.gmxhome.de/linux/CDREncryption.html. The 08 author should not be bothered with problems of this version. 09 [...] 10 Starting to write CD/DVD at speed 48 in real TAO mode for single session. Last chance to quit; starting real write 0 seconds. Operation starts. 11 Turning BURN-Free off 12 Using aes-256-cbc encryption with sha-256 hashed key, plain IV. (e.g. dm-crypt) 13 [...] 14 Track 01: Total bytes read/written: 42958848/42958848 (20976 sectors). 15 # cryptsetup -r -c aes -s 256 -h sha256 create ecdrom /dev/cdrom 16 # mount -t iso9660 /dev/mapper/ecdrom /media/crypt 17 # ls /media/crypt 18 cat.mpeg funny_cats.wmv 19 newsreportfromIraq.wmv 20 Karate_Beetle.avi German_Engineering_Arab_Technology.wmv 21 sexy_nutcracker.mpg 22 felina_in_the_snow.mpg noteastgermany.mpg 23 Languageproblems.mpg 24 #

Entraves

Um possível entrave do método do DMCrypt aparece se um arquivo for usado para passar a chave ao Cryptsetup. O Cryptsetup ignorará a opção -h (algoritmo de hash) e aplicará a chave como uma chave de texto limpo sem usar qualquer hash. Diferentemente, o cdrecord intepreta o valor como uma chave, que ele passa através de uma função hash. Para evitar esse problema, talvez você prefira guardar o valor de hash no arquivo em ambos os casos, e usar -encstyle=old ou -encstyle=aes256-cbc-plain no cdrecord. O Cryptsetup então usará a chave do arquivo como desejado. Como esse método criptografa dinamicamente durante o processo de gravação,

http://supertuxbr.blogspot.com 46

http://www.linuxmagazine.com.br


CDs e DVDs | CAPA

Exemplo 5: Novo com losetup 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

# mkisofs -J -R /dados/pequeno/Witzig/Videos/ | cdrecord dev=/dev/hda -encrypt -encstyle=new -encpass=<SENHA> [...] Starting to write CD/DVD at speed 48 in real TAO mode for single session. Last chance to quit, starting real write 0 seconds. Operation starts. Turning BURN-Free off Using aes-256-cbc encryption with sha-256 hashed key, plain IV. (e.g. dm-crypt) [...] Track 01: Total bytes read/written: 42958848/42958848 (20976 sectors). # losetup /dev/loop0 /dev/cdrom # cryptsetup -c aes -s 256 -h sha256 create ecdrom /dev/loop0 # mount -t iso9660 /dev/mapper/ecdrom /media/crypt # ls /media/crypt cat.mpeg funny_cats.wmv newsreportfromIraq.wmv Karate_Beetle.avi German_Engineering_Arab_Technology.wmv sexy_nutcracker.mpg felina_in_the_snow.mpg noteastgermany.mpg Languageproblems.mpg

é facilmente integrado a programas que usam o cdrecord para esse fim. A única coisa necessária é adicionar os argumentos à linha de comando do cdrecord como parâmetros definíveis pelo usuário. Se você não puder modificar o cdrecord, provavelmente vai preferir o segundo método, que usa o programa AES Pipe [4]. Utilize qualquer software de gravação para jogar a imagem criptografada pelo AES Pipe em um CD ou DVD.

Pipes cifrados

O AES Pipe criptografa uma corrente arbitrária de dados da entrada padrão e envia os resultados para a saída padrão (figura 2). A saída do mkisofs é adequada para isso. O programa usa o modo CBC e junta 16 pacotes de 32 bits para formar blocos de 512 bytes. Exatamente como a versão com patches do cdrecord, esse método só é útil para CD modo 1. Chaves de comprimento 128, 192 e 256 bits são suportadas, assim como várias funções de hash. Se você não der outra ordem, o AES Pipe usa como padrão o algoritmo AES com uma chave de 128 bits e SHA256 como algoritmo de hash da chave. A linha 1 do exemplo 6 mostra a versão mais simples com entrada de senha simples (linha 2). A senha deve conter pelo menos 20 caracteres. A linha 8 mostra que os resultados podem ser montados. O AES Pipe tem ainda uma opção -K para passar um arquivo cifrado por GPG como chave (exemplo 7). Esse método oferece aos usuários a oportunidade de transportar chaves de forma segura – em pendrives, por exemplo. Um ladrão precisaria do CD criptografado, da senha, do pendrive e da outra senha (mantra) da chave.

A variante GPG adiciona a possibilidade de especificar múltiplas senhas para um CD. Para isso, você precisaria guardar a chave principal em múltiplos arquivos GPG e protegê-los com diferentes senhas. Você poderia até publicar uma nova senha sem a necessidade de queimar um novo CD, caso um usuário esquecesse sua senha. Esse método também suporta o envio seguro de mídias de armazenamento por email, caso você use criptografia por Chave Pública para proteger o arquivo GPG. Melhorando essa idéia, os administradores conseguiriam gravar o arquivo GPG no início do CD (exemplo 8). Isso significaria colocar a chave de criptografia no CD a ser criptografado, mas proteger a chave com uma senha robusta. Para isso, os administradores precisariam criar uma senha de comprimento fixo (linha 1) com o arquivo GPG no início (linha 2), e então colocar no final a imagem cifrada (linha 3), antes de gravar os resultados em um CD ou DVD (linha 4). Ao montar o CD, o usuário especifica a unidade de CD tanto como

fonte quanto como dispositivo (linha 8). Um “pulo” de 8192 bytes (16 vezes 512) permite que o mount encontre o início dos dados criptografados. Veja em [5] um script de bash que combina os principais passos. Essa solução acrescenta mais uma dependência além daquelas da tabela Pacotes necessários (GPG), e será necessário aplicar patches ao losetup e às ferramentas mount. A maioria das distribuições já possui o suporte necessário embutido. ➧

Glossário AES: O Advanced Encryption Standard (ou algoritmo de Rijndael) é uma cifra de bloco simétrica que suporta tamanhos de blocos e chaves de 128, 192 e 256 bits. CBC: O Cipher Block Chaining associa cada bloco criptografado com o bloco criptografado logo antes. Isso torna impossível decifrar um bloco sem conhecer o bloco anterior. A vantagem disso é que dois blocos de texto limpo com o mesmo conteúdo produzirão diferentes textos cifrados. Isso ajuda a esconder padrões recorrentes do texto original. IV: O vetor de inicialização oferece um valor de salt ao CBC. A primeira rodada não possui um valor anterior com o qual trabalhar, e portanto usa o IV no lugar.

Exemplo 6: AES Pipe com senha 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

# mkisofs -J -R . | aespipe | cdrecord dev=/dev/hdd Password: cdrecord: Asuming -tao mode. cdrecord: Future versions of cdrecord may have different drive dependent defaults. Cdrecord-Clone 2.01.01a06 (x86_64-unknown-linux-gnu) Copyright (C) 1995-2006 Jörg Schilling [...] Track 01: Total bytes read/written: 475136/614400 (300 sectors). # mount -t iso9660 /dev/hdd /mnt/crypted -o loop,encryption=AES128 Password: # ll /mnt/criptografado/ total 22 drwxr-xr-- 2 maz network 2048 1. Apr 20:21 Imagens -rw-r--r-- 1 maz network 18064 25. Jul 12:35 Cripto-CD.txt -rw-r--r-- 1 maz network 349 8. Jan 2006 distris.txt -rw-r--r-- 1 maz network 649 30. Mar 20:23 patch.txt

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

47


CAPA | CDs e DVDs

Exemplo 7: AES Pipe, GPG e gravação 01 02 03 04 05 06 07 08 09 10 11 12 13

# yes “” | dd of=image.iso bs=512 count=16 # head -c 2925 /dev/urandom |uuencode -m - |head -n 66 |tail -n 1 |gpg --symmetric -a |dd of=image.iso conv=notrunc # mkisofs -iso-level 3 -l -r /daten/ | aespipe -e aes256 -w 5 -K image.iso -O 16 >> image.iso # growisofs -dvd-compat -Z /dev/dvdrw=image.iso [...] # mount -t iso9660 /dev/hdd /mnt/crypted -o loop,gpgkey=/dev/hdd,enc ryption=AES256,offset=8192 Password: # ll /mnt/crypted/ total 22 drwxr-xr-- 2 maz network 2048 1. Apr 20:21 Imagens -rw-r--r-- 1 maz network 18064 25. Jul 12:35 Crypto-CD.txt -rw-r--r-- 1 maz network 349 8. Jan 2006 distris.txt -rw-r--r-- 1 maz network 649 30. Mar 20:23 patch.txt

Não só discos

O AES Pipe criptografa qualquer corrente de dados, então é possível criar arquivos tar cifrados: tar cj /data | aespipe > data.tar.bz2.enc aespipe -d < data.tar.bz2.enc | tar xj

Becapes em tar criptografados são outra boa idéia: tar cj /data |aespipe |dd of=/dev/st0 ➥ bs=56 dd if=/dev/st0 bs=56 |aespipe -d |tar tj

O AES Pipe ainda suporta compressão por Bzip2. A compressão só faz sentido se ocorrer antes da cifragem, já que não existe uma forma de compactar dados criptografados. Além disso, essa variante evita avisos do tar a respeito de dados de lixo. Mensagens como bzip2: (stdin): trailing garbage after EOF ignored aparecem porque o AES Pipe usa um tamanho de bloco fixo de 16 bytes e preenche os bytes faltantes com valores nulos. Isso confunde o tar e a função Bzip2. A compressão não funciona com imagens ISO, pois CDs e DVDs per-

dem a capacidade de ser montados por losetup. Se você precisar comprimir dados, faça-o na camada do sistema de arquivos.

Paranóia

O AES Pipe possui várias configurações para dificultar a vida de atacantes potenciais. Por exemplo, pode-se usar 64 chaves de criptografia. No modo Multi-Key Tanto a versão modificada do cdrecord (multi-chave), o programa cifra o primeiro quanto a combinação da versão não setor com a primeira chave, o segundo modificada com o AES Pipe são úteis setor com a segunda chave e assim por para criar discos criptografados e mondiante. Em vez do vetor de inicialização tá-los transparentemente no sistema de (IV, Initialization Vector, veja o Glossário), arquivos. Graças a sua natureza genéele usa um IV com Hash MD5. tica, o AES Pipe oferece mais opções. Entretanto, esse modo só funciona Por outro lado, o patch do cdrecord é em combinação com um arquivo cripto- difícil de superar quanto à amistosidade grafado por GPG. O modo multi-chave com o usuário, principalmente se coné usado automaticamente se o arquivo siderarmos a facilidade com que ele se GPG contiver pelo menos 64 chaves, com integra a interfaces gráficas de gravano mínimo 20 caracteres cada, separadas ção como o K3B. Mas certifique-se de por linhas novas. usar a variante -encstyle=new para evitar Outra forma de dificultar ataques de incompatibilidades. ■ força bruta é passar chaves através de vários milhares de rodadas de AES, nas quais o parâmetro -C fator especifica o Mais informações número de milhares. Essa solução au[1] Maximilian Decker, “On-the-fly menta a carga sobre a CPU antes da crip-

Exemplo 8: AES Pipe com uma chave GPG 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

tografia, mas também dificulta bastante a tentativa de diferentes chaves por um eventual atacante. O programa também usará uma semente, especificada pelo parâmetro -S, se necessário. No entanto, nenhum desses dois modos funcionará no modo multichave.

# mkisofs -J -R . | aespipe -K ~/teste.gpg | cdrecord dev=/dev/hdd Password: cdrecord: Asuming -tao mode. cdrecord: Future versions of cdrecord may have different drive dependent defaults. Cdrecord-Clone 2.01.01a06 (x86_64-unknown-linux-gnu) Copyright (C) 1995-2006 Jörg Schilling [...] Track 01: Total bytes read/written: 475136/614400 (300 sectors). # mount -t iso9660 /dev/hdd /mnt/crypted -o loop,encryption=AES128 Password: # ll /mnt/crypted/ total 22 drwxr-xr-- 2 maz network 2048 1. Apr 20:21 Imagens -rw-r--r-- 1 maz network 18064 25. Jul 12:35 Crypto-CD.txt -rw-r--r-- 1 maz network 349 8. Jan 2006 distris.txt -rw-r--r-- 1 maz network 649 30. Mar 20:23 patch.txt

Conclusões

encryption for cdrecord/cdrtools”:

http://burbon04.gmxhome.de/ linux/CDREncryption.html [2] Patch de DVD para a versão OSS do cdrecord/cdrtools:

http://www.crashrecovery.org/ oss-dvd.html [3] Implementação de AES, do Dr. Gladman:

http://fp.gladman.plus.com/AES/ [4] AES Pipe pelo projeto Loop AES: http://loop-aes.sourceforge.net [5] Script de bash para criar uma imagem criptografada: http:// matthiasjansen.de/ ~maz/create_enc_image

http://supertuxbr.blogspot.com 48

http://www.linuxmagazine.com.br


Gráficos vetoriais em pseudo-3D

ANÁLISE

Quase real Gráficos vetoriais são parecidos com revistas em quadrinhos: apesar de você conseguir usar sombras e luzes, é mais ou menos impossível atingir um realismo fotográfico. Mas tudo isso pode mudar, agora que o Xara LX foi liberado como um produto de código aberto. por Peter Kreussel

S

e você comparar o esforço envolO Xara, que tem uma bagagem de dez vido em desenhar uma cena 3D anos como programa comercial para a usando um papel com a aborda- plataforma Windows®, tem grande pogem da modelagem 3D, rapidamente tencial. Se você não acredita em mim, descobrirá que é mais rápido fazer as veja a galeria de imagens na página do coisas do jeito antigo. O mais perto que se programa [1]. consegue chegar da sensação do papel-elápis num computador é usar uma mesa de desenho com um editor de bitmaps como o GIMP. Mas com gráficos veto- No final de 2005, os desenvolvedores deriais, que são livremente escaláveis sem cidiram liberar uma versão gratuita e de afetar a qualidade, os artistas geralmente código aberto do programa comercial do acham difícil implementar gradientes de Windows, Xara Xtreme, para Linux e Mac luz ou sombras. OS. O Xara LX possui todos os princia r do t wprograma o r k cpara r e Windows, a t e d w Os aplicativos gráficos vetoriais como pais recursos o Inkscape só oferecem gradientes li- com exceção de tecnologias licenciadas, neares, radiais e cônicos, que não são como paletas Pantone. De acordo com adequados para a tarefa de retratar uma os desenvolvedores do Xara, a versão 0.7 visão realista de objetos de formas mais atual está “quase completa”. Isso significa que quase todas as ferramentas de desecomplexas. O programa profissional Adobe Illus- nho incluídas com o Linux funcionam trator inclui uma ferramenta Gradient como nas versões para Windows. mesh, que possibilita a composição de Os esforços de desenvolvimento do gradientes complexos. Ele divide os ob- Xara LX estão avançando rapidamente. jetos em uma grade com campos que Há dois meses, nem havia uma função permitem ao artista conferir diferentes de impressora no Xara LX. Mas agora, o valores de cores – o Illustrator, depois, website dos desenvolvedores afirma que o calcula as transições suaves. Porém, in- Xara está quase completo. Já está estável dependente do poder dessa ferramenta, como se esperaria de um aplicativo em ela não é especialmente adequada para fase beta e, se o porte continuar no mesmo ritmo de desenvolvimento, poderemos alcançar efeitos de luz realistas.

Apresentando o Xara

esperar uma ferramenta confiável que supra uma demanda profissional para daqui a aproximadamente um ano. A página possui um arquivo binário e um autopackage do Xara LX [2]. O código-fonte e as instruções para acessar o repositório Subversion estão disponíveis em [3]. O Xara depende dos wxWidgets para ser compilado, que você deve compilar antes de instalar o Xara, caso ainda não esteja instalado em seu sistema.

Simples, mas bom

Ao iniciar o Xara LX pela primeira vez, italvez t h você pergunte como um programa Adobe, and Illustrator are either registered trademarks or trademarks of Adobe Systems In Unitedinterface States and/or other © 2003 Adobe Systems Incorporated. All rights reserv com uma tão countries. simples poderia pensar em criar os desenhos realistas da pasta Examples. A maioria das ferramentas do Xara estão disponíveis também no Inkscape. Em relação ao desenho, não há muitas diferenças entre o Inkscape e o Xara, apesar de o Xara ter a grande vantagem da função Snap to Object. As outras diferenças são mais difíceis de encontrar; é necessário olhar no Xara as ferramentas Shadow Tool, Transparency Tool e Bevel Tool. A Shadow Tool cria uma sombra realista, exatamente como o Adobe Illustrator. Se você arrastar um objeto com a ferramenta, o Xara cria uma sombra que

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

49


ANÁLISE | Xara LX

superfície do modelo, exatamente como o tiling. O problema que surge dessa abordagem é que as imperfeições baseadas em fotos não podem ser perfeitamente justapostas. (figura 2, à direita). O Xara resolve esse problema de justaposição aplicando um algoritmo que suaviza os cantos. A opção Repeat inverted remove os cantos em junções (figura 2, à esquerda). Essa solução também está disponível para unidades de bitmap usadas como base para efeitos de transparência (figura 2, linha inferior, extrema direita). Figura 1

O segredo dos desenhos vetoriais 3D realísticos: diferentes tipos de gradientes transparentes conferem uma aparência natural ao sombreamento.

reflete a distância a que você arrastou o objeto, usando superfícies curvas suaves para refletir o tipo de sombras que os objetos geram na atmosfera. A sombra contribui enormemente para conferir uma aparência natural aos desenhos. Onde há sombra, obviamente há luz: e a luz incidida sobre os objetos causa seu clareamento. Os lados voltados para a fonte de luz aparecem mais claros, enquanto aqueles virados para o outro lado ficam escurecidos. Gradientes de cor, geralmente com formas complexas, existem em todo lugar além das extremidades. Naturalmente, os gradientes de cor são extremamente difíceis de representar como vetores. Uma opção para implementar gradientes complexos de cor em gráficos vetoriais utiliza a solução do Adobe Illustrator gradient mesh. Os gradientes são implementados como pequenos objetos semitransparentes que se sobrepõem à forma básica.

Em princípio, não há nada para impedir o usuário de usar essa solução com o Inkscape. A grande vantagem oferecida pelo Xara é uma maior escolha de tipos de gradientes. Além da transparência plana, o programa suporta gradientes com formatos lineares, esféricos, elípticos, cônicos e losangulares (figura 1). Além de gradientes multidimensionais definidos por dois ou mais pontos de referência (linha do meio, direita e extrema direita), o Xara também suporta dois padrões fractais (linha inferior e extrema esquerda). Todos os gradientes de transparência podem ser iterados (linha inferior, esquerda). E o Xara pode converter valores de brilho de bitmaps para transparências de objetos (linha inferior, direita). As superfícies de modelos 3D realistas geralmente baseiam-se em fotografias: o renderizador aplica um detalhe de tela quadrado que retrata uma imperfeição na

Aplicações práticas

A figura 3 mostra um exemplo simples de desenho com efeito espacial: uma maçã com iluminações e sombreamentos que refletem a fonte de luz. As áreas mais claras e escuras são fáceis de desenhar com a ferramenta Mão livre (à direita na figura), e é possível colori-las para refletir a iluminação do ambiente. A função de pena (que suaviza os cantos), em combinação com um gradiente elíptico, cujo formato pode ser controlado interativamente pelo centro e os dois raios, oferece transições suaves. É assim que se alcança o visual realista da iluminação, e o leve sombreamento da superfície inferior da maçã. A ferramenta de sombras permite que se adicione a sombra que uma maçã de verdade criaria na superfície sob ela. Para atingir o efeito de texturização, usei uma foto de um pedaço de madeira. O Repeat inverted suavizou as transições onde as unidades de textura se encontram no efeito de madeira repetido. Todos os desenhos da galeria de imagens do Xara seguem o mesmo princípio

Figura 2 Objetos com um preenchimento baseado em unidades com detalhes de fotos dão ao desenho uma aparência realística depois que o Xara suaviza os cantos.

http://supertuxbr.blogspot.com 50

http://www.linuxmagazine.com.br


Xara LX | ANÁLISE

Figura 3 O Xara aplica objetos semitransparentes sobre uma forma básica para fazer a iluminação e o sombreamento. Um gradiente de cor correspondente dá ao desenho um toque de realismo fotográfico.

descomplicado de sobrepor uma forma simples com múltiplos objetos, muitos dos quais transparentes, para refletir o efeito da luz e da sombra no mundo real. A figura 4 mostra um pequeno trecho de um dos gráficos de exemplo que acompanham a distribuição do Xara. A camada inferior do capô do Mini azul é um simples gradiente linear. Um pouco de sombreamento e espelhamento habilidosamente criados dão à imagem um acabamento quase perfeitamente realístico. Apesar de ser necessária muita prática e habilidade para criar desenhos realistas como a imagem da figura 4, um fator separa o Xara das ferramentas de modelagem 3D. Enquanto uma ferramenta dessas usa o traçado de raios (raytracing) para calcular sombreamentos e ilumina-

ções perfeitas, o Xara dá ao artista total controle sobre os efeitos. E as poderosas ferramentas de transparência e preenchimento do Xara são o melhor suporte que um artista pode pedir.

Conclusões

O Xara traz diversas funções interessantes para o mundo do Linux. O programa não deve ser visto como um concorrente do Inkscape. O Inkscape cria gráficos em formato SVG, um padrão da Internet, e seu pacote agora inclui um editor de XML que suporta manipulações em baixo nível dos arquivos, e portanto tem seu próprio público-alvo. Diferentemente de uma ferramenta como o Inkscape, o Xara visa aos artistas gráficos que apreciarão

os efeitos e gradientes fotograficamente realistas que o programa oferece. A seção da galeria chamada Business Designs em [1] prova que a versão comercial do Xara é capaz de desenhar produtos absolutamente profissionais, como embalagens e caixas. E o processo de desenvolvimento até agora deixa poucas dúvidas de que a versão livre do Xara para Linux em breve também chegará lá. Aqueles que não necessitam desses recursos tão sofisticados podem experimentar o Xara LX agora mesmo; afinal, a instalação com arquivos binários e pacotes autopackage é brincadeira de criança. ■

Mais Informações [1] Galeria de imagens da versão comercial do Xara (Xara Xtreme):

http://www.xara.com/gallery [2] Download dos binários: http://www.xaraxtreme.org/ download/ [3] Código-fonte e acesso SVN: http://www.xaraxtreme.org/ developers/general/ source_code__building.html

O autor

Figura 4

Efeitos de espelhamento no capô de um carro são facilmente emulados com gradientes simples e um pouco de sombreamento manual, supondo que você possua o talento artístico necessário.

O Corel Draw foi o programa que capturou o interesse de Peter Kreussel em computadores. Peter fala com felicidade que o Inkscape e o Xara há muito tempo já ultrapassaram o Windows® e os caros programas da Adobe em sua máquina.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

51


ANÁLISE | DVD Semestral do Assinante

As qualidades do desktop corporativo da Novell

ANÁLISE

Camaleão de gravata O Suse Linux Enterprise Desktop é a versão corporativa da Novell baseada no Open Suse. Integra recursosos de segurança avançada (AppArmor) e grandes inovações em usabilidade. Confira se essa é a distribuição certa para sua empresa. por Pablo Hess

E

scolher uma distribuição para o desktop corporativo é uma tarefa simples, porém não exatamente fácil. Levando em consideração que o usuário corporativo geralmente está profundamente habituado a sistemas Windows®, é importante garantir que ele obtenha a maior funcionalidade possível com uma curva de aprendizado mínima. Entretanto, engana-se quem considera esse um ato de altruísmo. Usuários familiarizados com seu sistema operacional, ou, mais precisamente, com seu ambiente desktop, geram menos chamados de suporte, por exemplo, além de terem sua produtividade aumentada. O Suse Linux Enterprise Desktop 10 (SLED 10), da Novell, visa a facilitar essa

Figura 1

O novo menu do Suse Linux Enterprise Desktop traz importantes melhorias em usabilidade.

escolha. A extensa análise de usabilidade realizada pela empresa com o projeto Better Desktop [1] refletiu-se em mudanças na organização do ambiente de trabalho. O novo menu (figura 1) representa uma boa amostra da profundidade dessas alterações.

Instalação

A instalação do SLED não apresentou qualquer dificuldade. O instalador é o mesmo usado no OpenSuse, sistema comunitário no qual se baseia o SLED. O mesmo DVD de instalação (encartado na edição deste mês da Linux Magazine) permite a instalação por diversos meios, incluindo a instalação pela rede ou através de arquivos gravados no disco rígido. Um fato interessante é a escolha do ReiserFS como sistema de arquivos padrão para a instalação do SLED 10. Após particionar o disco rígido e aceitar as licenças de uso de software da Novell e da Macromedia, o usuário é levado à seleção dos pacotes a serem instalados. A seleção padrão ocupa 2,5 GB. Instalados os pacotes, o programa de instalação possibilita o download e a aplicação automática das atualizações dos pacotes. Para isso, o programa precisa abrir um navegador web, o Firefox. Os drivers proprietários para as placas de vídeo da Nvidia e ATI podem ser baixados logo em seguida. É altamente recomendável realizar esse procedimento durante a instalação do sistema, pois só com esses drivers é possível aproveitar os recursos do Xgl, o servidor X 3D da Novell.

Se o usuário assim desejar, o navegador web, ainda aberto, o leva à página de registro no Novell Customer Center. O registro é simples e gratuito, e dá direito também a atualizar todos os pacotes da distribuição. Infelizmente, o registro gratuito tem validade de apenas 60 dias. Se, ao final do período de avaliação, o usuário julgar interessante adquirir um registro mais duradouro, deve efetuar seu registro no serviço mediante o pagamento de uma taxa. Após uma reinicialização, o programa pede que se crie um usuário e que se definam as senhas de usuários e de root. É possível também criar um perfil de instalação, o que permite a instalação não assistida em outras máquinas na mesma rede, por exemplo. Esse recurso já existia há algum tempo no Suse, e tem funcionalidade semelhante à do tradicional kickstart, da Red Hat.

Utilização

Assim como no OpenSuse, o ambiente padrão do SLED 10 agora é o Gnome. Para tirar proveito dos recursos 3D, no entanto, o gerenciador de janelas Metacity foi substituído pelo Compiz, que também se integra com facilidade ao ambiente Gnome. Os efeitos tridimensionais oferecidos pelo Xgl e usados pelo Compiz tornam a experiência do usuário mais interessante. É possível, no entanto, desativar os recursos 3D do Xgl através de janelas, botões e cliques do mouse. Mesmo sem eles, ainda se tem uma boa experiência visual, pois

http://supertuxbr.blogspot.com 52

http://www.linuxmagazine.com.br


DVD Semestral do Assinante | ANÁLISE

figura 1),

Figura 2

O Beagle mostra os resultados de sua busca no desktop de forma absolutamente veloz.

e será exibido o programa responsável por essa tarefa. Dessa forma, esse recurso facilita imensamente a vida de todos os usuários, tanto iniciantes quanto experientes. A área de trabalho do Gnome apresenta por padrão apenas os ícones do diretório pessoal, unidade de disquete e lixeira, além de qualquer unidade de armazenamento (incluindo CDs e DVDs, graváveis ou não) que esteja conectada à máquina.

Adicionais

o tema padrão, Gilouche, é simples, mas Uma das barreiras para a adoção corporativa de desktops Linux costuma ser o suporte (ou mesmo assim atraente e funcional. O novo menu idealizado pela Novell a falta dele) a macros VB no OpenOffice.org, é a parte do desktop que reserva mais mu- que o torna um substituto considerado infedanças, depois dos efeitos 3D. Contudo, rior ao pacote Office da Microsoft. A Novell diferentemente deste, o novo menu (fi- também trabalhou com afinco nesse ponto, gura 1) está disponível para todos, e não incluindo em sua versão do conjunto de somente para os proprietários de placas de aplicativos para escritório o suporte a VBA vídeo mais sofisticadas. O menu guarda (Visual Basic para Aplicações). algumas semelhanças com o dos desktops Como se espera de uma distribuição Windows, como a substituição dos três me- com nível profissional, o SLED já traz nus (Aplicações, Locais e Desktop) por um instalados plugins para reprodução de único (Computador), além da eliminação conteúdo em Flash, além de muitos outros do painel superior. Todavia, esse conjunto formatos de áudio e vídeo, incluindo MP3, demonstra grande funcionalidade. MPEG4, Ogg (Vorbis e Theora) etc. Outro recurso altamente desejado por usuários iniciantes é a integração do Beagle ao desktop, tanto no menu principal (figura Considerando a realidade da maioria das 1) quanto de forma independente (figura redes corporativas, é incrível a facilidade 2). Segundo a Novell, os menus atuais, em com que o SLED se embrenha nesse tergeral, consistem de uma lista de aplicativos, reno muitas vezes pedregoso. A integração através dos quais o usuário navega em busca ao Active Directory já funciona logo após a daquele programa que realiza a tarefa dese- instalação. Na verdade, durante a própria jada. A total integração do Beagle ao desktop instalação há opções para selecionar domípermite uma abordagem mais prática. Assim nios Windows ou Active Directory aos quais que o usuário realiza o login, o mecanismo o SLED deve se integrar. Porém, o usuário de indexação de dados do Beagle já entra tem a liberdade de não selecionar domínios em ação. Páginas web, emails, documentos, na instalação, caso prefira realizar esse propastas, enfim, tudo é indexado e mostrado cedimento depois com o auxílio do YaST. de forma milagrosamente rápida após o pres- Com os domínios selecionados, até mesmo sionamento do botão Buscar. É interessante o gerenciador de login, o GDM, apresenta notar também que, assim uma lista de domínios para que se clica em qualquer o usuário fazer login. ícone resultante da busca, Após o login, já é posé mostrada uma previsão sível navegar por toda a do arquivo, seja ele um rede, seja ela composta documento de texto, uma por máquinas Windows ou arquivo HTML ou uma Linux, montando qualquer compartilhamento remoto imagem. Quando o usuário que se queira. Aderir a uma desejar procurar um VPN também é incrivelprograma que edite armente simples, com um quivos de áudio, poderá assistente bastante comsimplesmente digitar petente. edit audio na caixa de O editor de perfis de Figura 3 O ZENworks é responsável pela atualização, entrada do Beagle (já usuários Sabayon, avaliainstalação e remoção disponível no menu do do na edição 23 da Linux de pacotes. Gnome, como mostra a Magazine ([2]), também

Na rede

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

53


ANÁLISE | DVD Semestral do Assinante

YaST

Figura 4

O YaST presente no SLED 10 possui organização diferente da anterior. Agora, os ícones são organizados por tarefa de gerenciamento.

foi incluído no SLED 10. Ele torna prática a tarefa de definir grupos tais como Comercial, Executivo, RH, e assim por diante, estabelecendo as mesmas permissões para todos os usuários de cada grupo, de uma só vez. De forma semelhante, pode-se restringir fortemente as permissões dadas a um usuário, o que é muito útil para a criação de quiosques de informação, por exemplo, nos quais o usuário só deve ter acesso ao mouse e a um navegador.

Pacotes e hardware

A administração dos pacotes é realizada com auxílio do ZENworks (figura 3), da Novell. Embora o aplicativo tenha evoluído significativamente desde a avaliação publicada na edição 22 da Linux Magazine ([3]), algumas falhas persistem, e surgiram ainda algumas novas. Uma das falhas diz respeito ao exagero nas dependências para determinados pacotes – o aplicativo exige uma longa lista de pacotes para se instalar determinado aplicativo, quando na verdade somente uma parte deles seria necessária. O gerenciador de pacotes da Novell parece ser o componente mais fraco do poderoso conjunto apresentado pela empresa.

Figura 5

O SaX gerencia configurações de vídeo, incluindo monitor e placa de vídeo, associado ao YaST.

O YaST (Yet another Software Tool, mais uma ferramenta de software) era uma ferramenta de importância central nas versões passadas do Suse. O programa era encarregado de gerenciar tanto o software quanto o hardware da máquina, e fazia isso com rara maestria, merecendo assim o papel de estrela maior da distribuição. Não à toa, diversas outras distribuições demonstravam variados graus de inveja em relação a esse item de software tão eficiente. Em 2004, a Novell, pouco depois de adquirir a SuSE GmbH, anunciou a abertura do código do YaST. Com isso, o desenvolvimento do software manteve seu ritmo acelerado, e hoje o YaST é, possivelmente, a ferramenta de gerenciamento de hardware e software mais competente no mundo do Software Livre. No SLED 10, ele assume uma nova organização (figura 4), separada pelas tarefas de gerenciamento. A nova vida do YaST, no entanto, não significa mais destaque para ele na distribuição. Muito pelo contrário; a Novell optou por esconder o YaST do usuário, colocando em seu lugar o Centro de Controle, disponível a partir do menu principal (figura 1). O motivo alegado, bastante razoável, é o fato de a palavra “YaST” não ter qualquer significado para quem não tem familiaridade com o Suse. Além disso, o programa é considerado poderoso demais para usuários inexperientes. Assim, o Centro de Controle, com um nome absolutamente intuitivo, possui somente um subconjunto das funcionalidades do YaST, e essas são organizadas de forma a facilitar a vida dessa categoria de usuários. O YaST, no entanto, continua presente como uma opção do Centro de Controle.

SaX

Parte do sucesso do YaST deve-se ao SaX (figura 5), sua ferramenta de gerenciamento de hardware de entrada e saída, como teclado, mouse, placa gráfica e monitor. O SaX permanece como uma importante força impulsionando o SLED. Essa ferramenta selecionou automaticamente a freqüência do monitor e ofereceu apenas as resoluções corretas, diferentemente de alguns outros aplicativos que apresentam todas as resoluções possíveis e conferem ao usuário a tarefa de saber quais delas são de fato suportadas pela sua placa de vídeo e monitor. A maior mudança do SaX reside em seu funcionamento interno. Ele agora interage propriamente com o Udev e o HAL, que compõem o novo subsistema de gerenciamento e administração de hardware do Linux.

Segurança

O AppArmor, recurso de segurança avaliado em profundidade na edição 22 da Linux Magazine ([4]), foi finalmente incluído no SLED 10. Entretanto, há uma certa controvérsia acerca disso. Alega-se que esse recurso não é adequado a uma distribuição voltada a desktops, ainda que corporativos. Por outro lado, há quem defenda a idéia de que os documentos pessoais contidos nessas máquinas devem ser mantidos sob a maior privacidade (leia-se, segurança) possível. No caso de servidores, com o SLES (Suse Linux Enterprise Server), não há qualquer questionamento sobre a utilidade do AppArmor, que protege o sistema até mesmo de falhas de segurança desconhecidas pelos desenvolvedores.

Conclusão

O Suse Linux Enterprise Desktop 10 é um forte candidato à melhor distribuição para desktops corporativos já lançada. Unindo os resultados dos estudos de usabilidade do projeto Better Desktop [1] aos avançados recursos 3D do Xgl, à integração da máquina de buscas Beagle, e ainda ao competentíssimo gerenciamento de hardware e software, há poucos locais não explorados (e melhorados) por essa distribuição. ■

DVD do assinante Prezado leitor da Linux Magazine, Conforme anunciamos em edições anteriores, realizamos a substituição de nossos CDs mensais por DVDs de periodicidade semestral. O primeiro DVD encartado na Linux Magazine, que circula junto com esta edição somente para os assinantes que optaram pela assinatura com DVDs, contém o Suse Linux Enterprise Desktop, da Novell. Os leitores que desejarem assinar a Linux Magazine com o objetivo de receber os DVDs semestrais podem fazê-lo através do site http://www.linuxmagazine.com. br, ou por nosso telefone (11) 2161-5419.

Mais Informações [1] Projeto Better Desktop: http://www.betterdesktop.org [2] Área de trabalho dedicada com Pessulus e Sabayon: Linux Magazine 23, pg. 54, Setembro de 2006

[3] Vai um upgrade?: Linux Magazine 22, pg. 50, Agosto de 2006

[4] Armadura segura: Linux Magazine 22, pg. 34, Agosto de 2006

http://supertuxbr.blogspot.com 54

http://www.linuxmagazine.com.br


JORGE MADE LINUX FASTER

WE MADE IT ENTERPRISE-WIDER

Your Linux is ready.™ Introducing SUSE Linux Enterprise 10 from Novell . Built by a global community and secured, ®

®

supported, tested and proven by Novell. From the desktop to the data center, SUSE Linux Enterprise 10 is the Linux platform that brings discipline to open and innovation to the enterprise. So it’s more than cool and secure. It’s the Linux you’ve been waiting for.

Get it at www.novell.com/linux

http://supertuxbr.blogspot.com Copyright ©2006 Novell, Inc. All rights reserved. Novell, the Novell logo, and SUSE are registered trademarks and This Is Your Open Enterprise, Your Linux is ready, and the gecko logo are trademarks of Novell, Inc. in the United States and other countries. *Linux is a registered trademark of Linus Torvalds. All third-party trademarks are the property of their respective owners. Novell wishes to thank the thousands of developers who contribute to Linux every day.


Gerenciamento dinâmico de dispositivos com o Udev

TUTORIAL

Quem Udev não teme Depois de três anos em segundo plano, o Udev finalmente superou o sistema legado Dev-FS. Vamos ver o que há debaixo do capô do sistema de gerenciamento de dispositivos Udev da sua máquina Linux. por Rene Rebe, Oliver Frommel e Jens-Christoph Brendel

O

Linux herdou o clássico adágio do Unix, “tudo é um arquivo”. Essa abstração permite que os programas usem os nós de dispositivos (arquivos de dispositivos) para acessar o hardware do computador como se estivessem acessando um arquivo comum. Esses arquivos especiais de dispositivos, que são abertos, lidos, gravados e fechados usando-se as mesmas chamadas de sistema que arquivos texto, são diferenciados por seus nomes, tipos (dispositivos de blocos ou de caracteres), números principais (major numbers) e números secundários (minor numbers).

Estático demais

Arquivos de dispositivos são criados pelo comando mknod durante a fase de instalação, supondo um gerenciamento como se fazia antigamente. Essa abordagem cria uma entrada permanente no /dev/ para cada dispositivo a que o administrador possa querer se conectar no futuro, o que significa entradas na casa dos milhares. Essa enorme massa de entradas, a maioria inútil para o sistema atual por se referirem a dispositivos que não existem, dificultam muito o acompanhamento da configuração. Por exemplo, a estrutura

de diretórios e arquivos não diz quais dispositivos existem ou quais foram corretamente identificados pelos drivers. Além disso, nessa abordagem tradicional, a ordem usada pelo usuário para conectar os dispositivos determina qual arquivo de dispositivo o kernel associa a qual dispositivo. O primeiro disco SCSI detectado sempre é mapeado no arquivo de dispositivo /dev/sda, por exemplo; o próximo disco é mapeado em /dev/sdb, e assim por diante. Essa abordagem pode significar que o mesmo dispositivo é acessível através de diferentes arquivos de dispositivo em momentos diferentes,

http://supertuxbr.blogspot.com 56

http://www.linuxmagazine.com.br


Udev | TUTORIAL

Detalhes do hotplug

/sbin/hotplug.

Para fazer com que o gerenciamento dinâmico de dispositivos funcione, o kernel Linux precisa ter a opção CONFIG_HOTPLUG ativada; as principais distribuições utilizam essa opção por padrão. Quando um driver de dispositivo adiciona ou remove o que chamamos de Kobject, o kernel envia mensagens com esse aviso para o daemon do Udev, ou executa o programa residente em /proc/sys/kernel/hotplug chamando a função kset_hotplug (o código-fonte está em lib/kobject.c). Esse programa costumava ficar em /sbin/hotplug, e depois mudou-se para /sbin/udevsend, antes de ser excluído das versões mais recentes. A classe do subsistema é passada como um argumento. As variáveis de ambiente oferecem mais detalhes. Por exemplo, ACTION suporta os valores add e remove. A variável SEQNUM é incrementada a cada chamada. DEVPATH especifica onde no SysFS se encontram as informações do dispositivo, como em /devices/pci0001:01/0001:01:19.0/usb2/2-1/2-1:1.0. E existem outros parâmetros, como MAJOR, MINOR e UDEV_EVENT. Dependendo do tipo do objeto, outras variáveis podem ser exportadas: as IDs de vendedor (vendor) e produto (product) do hardware físico, por exemplo, ou a entrada correspondente no USBFS, no caso de dispositivos USB; essa seria /proc/bus/usb/002/010, no nosso caso. O Udev propriamente dito (antes eram os scripts do hotplug) associam e carregam os módulos apropriados do kernel, baseados nas IDs do hardware em /lib/modules/$ver.

e conseqüentemente o computador o monta em diferentes diretórios. Uma solução que cria e apaga arquivos de dispositivos dinamicamente quando um usuário conecta ou desconecta um hardware já se mostrou mais útil. Nesse caso, os mapeamentos de nome para dispositivo não são baseados na ordem em que os dispositivos são detectados, e sim num sistema de regras pré-definidas. Isso significa que podemos garantir que um disco rígido específico sempre estará disponível no mesmo arquivo, e portanto sempre será montado na mesma posição no sistema de arquivos, independentemente de quais outros dispositivos compartilhem o barramento. Durante um certo tempo, os sistemas DevFS e Udev foram concorrentes no papel de gerenciadores inteligentes de dispositivos, mas agora o Udev é claramente o vencedor. O DevFS recentemente foi removido do kernel, deixando o Udev como rei do pedaço [1]. O Udev depende do mecanismo de hotplug do kernel (veja o quadro Detalhes do hotplug) para criar arquivos de dispositivos no espaço do usuário. Quando um dispositivo é conectado ou desconectado, o controlador do barramento (ISA, USB ou PCI) sinaliza o evento com uma interrupção. Em resposta a isso, o kernel se certifica dos detalhes do dispositivo recém-adicionado, seja por um protocolo específico para se comunicar com o controlador do hardware, ou buscando nos endereços embutidos no código – como a área de configuração de

placas PCI – informações guardadas lá, mais especificamente, as IDs de vendedor e produto. O kernel então continua, criando um Kobject para cada dispositivo novo; os dados sobre o tipo de dispositivo (de blocos ou de caracteres) e os números principal e secundário são passados para o Kobject e armazenados por ele, através do namespace global de componentes do kernel introduzido no kernel 2.6. Depois, o kernel torna essa informação disponível via SysFS, que substitui o sistema de arquivos legado ProcFS. Normalmente, o SysFS é montado em /sys. Nas versões mais antigas do Udev, o kernel informava os programas do espaço do usuário a respeito do novo estado dos dispositivos, chamando o programa em /proc/sys/kernel/hotplug, geralmente

Figura 1

Esse programa carregava e configurava todos os drivers necessários; as IDs que já citamos informavam ao programa quais drivers carregar. As versões modernas do Udev conversam diretamente com o kernel e chamam programas externos para realizar as mesmas ações diretamente. O Udev usa essa abordagem tanto ao plugarmos um novo dispositivo a um sistema em funcionamento (hot plugging, ou conexão “a quente”), quanto durante a inicialização (cold plugging, conexão “a frio”). O kernel procura o barramento adequado para os dispositivos e cria arquivos de uevent baseados nos resultados. Esses resultados ficam guardados no SysFS, pois nessa etapa o sistema ainda não possui um sistema de arquivos raiz gravável. A seguir, o Udev gera eventos para os dispositivos encontrados durante a inicialização, baseado nos resultados, como se eles tivessem sido ligados a quente. A figura 1 mostra o procedimento para conectar um receptor DVB USB, gravado com o uso da ferramenta de diagnóstico udevmonitor. Até a versão 0.58 do Udev, o pacote hotplug carregava os drivers e o firmware. Essa abordagem, que foi aplicada em distribuições como Suse 9.x, Fedora Core 4, Ubuntu Breezy Badger e Debian Sarge, mantém o gerenciador de hotplug /sbin/hotplug, que atua como um multiplexador, chamando todos os programas registrados em /etc/hotplug.d. Isso deve funcionar bem, supondo uma instalação padrão dos pacotes do hotplug e do Udev. A partir da versão 0.59, o Udev passou a executar as duas tarefas. Essa abordagem é usada no Fedora Core 5, Suse 10 e Ubuntu Dapper Drake (veja também a tabela Variantes do Udev). ➧

Ações do Udev durante a ligação “a quente”, gravada usando-se o udevmonitor.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

57


TUTRIAL | Udev

Questão de preferência Os arquivos de configuração do Udev ficam em /etc/udev, ou em /lib/udev, em algumas distribuições. As variáveis mais importantes estão em /etc/udev. conf, por exemplo, o diretório raiz dos arquivos de dispositivos, o caminho do banco de dados interno do Udev e o diretório com as regras para criar e nomear os arquivos de dispositivos: udev_root=”/dev/” udev_db=”/dev/.udevdb” udev_rules=”/etc/udev/rules.d” udev_log=”err”

O Udev oferece dois pontos de configuração: /etc/udev/rules.d/ contém os arquivos que governam a nomeação dos nós de dispositivos, e /etc/udev/makedev.d contém scripts com os nomes dos arquivos estáticos de dispositivos, que são necessários para dispositivos como a porta paralela. As permissões não residem mais em /etc/udev/permissions.d nas versões atuais do Udev, mas fazem parte da configuração normal do Udev.

Hardware abstrato O gerenciamento de dispositivos também é o domínio de outro componente, o Hardware Abstraction Layer (camada de abstração de hardware), ou HAL. Além de informações do kernel e Udev, o HAL gerencia detalhes de dispositivos em arquivos FDI com formato XML. O exemplo 1 mostra um trecho do arquivo FDI de uma câmera digital. No Fedora, eventos de hotplug são passados para o daemon do HAL pelo subsistema Udev usando-se uma regra localizada em /etc/udev/rules.d/90-hal.rules: RUN+=”socket:/org/freedesktop/hal/udev_event” O elemento RUN+ nessa regra estipula que ela deve ser executada para todas as outras regras. A comunicação passa por um socket, como descrito antes. O Gerenciador de Redes do Gnome [3] é um bom exemplo da forma como esses componentes interagem. Ele usa o daemon HAL para monitorar o subsistema de rede; o HAL notifica o Gerenciador de Rede através do D-Bus (veja o quadro D-Bus) quando mudanças ocorrem, por exemplo, quando chaveiros USB de rede sem fio são plugados ou desplugados. Além dos dispositivos físicos, o HAL também pode lidar com sistemas de arquivos e descobrir seu tipo, até mesmo em partições LUKS criptografadas [4]. O HAL lida atualmente com a parte dura do gerenciamento de hardware do Gnome, principalmente em relação aos dispositivos plugáveis a quente. Para permitir que isso aconteça, o processo gnome-volume-manager roda em segundo plano (usuários do Gnome podem executar a interface para o processo gnome-volume-manager para configurar o gerenciador). Há até uma interface gráfica para o próprio HAL; ela gera uma saída em forma de árvore de todos os dispositivos conectados (figura 2). O hal-device-manager do Fedora localiza-se no pacote hal-gnome.

Scripts de teste

numa lista separada por espaços. As ações são introduzidas por um sinal As regras do Udev podem chamar programas de igual. Por exemplo, MODE=”0660” externos, que também são avaliados como especifica as permissões. Da mesma condições. O Udev não executa a ação a forma, OWNER informa o dono, enquan- menos que a chamada leve ao resultado to GROUP estabelece o grupo. A palavra exigido. A página de manual possui um NAME especifica o nome do dispositivo, exemplo para CD-ROMs IDE que verifica se A primeira parte de todas as regras do e curingas são suportados. Por exem- existe um diretório no /proc para identificar Udev especifica a condição que deve plo, %k representa o nome usado pelo o dispositivo como um CD-ROM: ser satisfeita para o Udev executar ou kernel, como descrito anteriormente. aplicar a segunda parte. Em um caso Uma regra que siga esse padrão deve KERNEL==”hd[a-z]” simples, essa condição pode se referir ser assim: KERNEL==”isdn*”, NAME=”%k”, PROGRAM=”/bin/cat /proc/ide/%k/media”, RESULT=”cdrom”, NAME=”%k”, ao nome interno que o kernel dá a um MODE=”0660”. SYMLINK=”cdrom%e” dispositivo. Por exemplo, a condição O Udev normalmente processa todas as regras que coincidam com o para um teclado é KERNEL==”kbd”. O Udev chama /bin/cat para mostrar As condições são indicadas por si- padrão, até acabarem as regras. Para nais de igual duplos, exatamente como cancelar o processamento de regras a saída do conteúdo do arquivo media em linguagens de programação. Mais quando uma coincidência aparecer, para todos os dispositivos cujos nomes condições podem ser listadas depois, especifique last_rule em OPTIONS. comecem com hd. Se o nome contiver cdrom (RESULT), o Udev manterá o arquivo do dispositivo (NAME=”%k”), mas também usará o SYMLINK para criar um link simbóExemplo 1: Arquivo FDI de uma câmera digital lico para cdrom. O %e especifica o próximo 01 <deviceinfo version=”0.2”> decimal livre, se um arquivo de mesmo 02 <device> nome já existir. Isso leva à geração de 03 <match key=”info.bus” string=”usb”> links simbólicos como: 04 <match key=”usb.interface.class” int=”0x06”>

Sintaxe das regras

05 <match key=”usb.interface.subclass” int=”0x01”> 06 <match key=”usb.interface.protocol” int=”0x01”> 07 <merge key=”info.category” type=”string”>camera</merge> 08 <append key=”info.capabilities” type=”strlist”>camera</append> 09 <merge key=”camera.access_method” type=”string”>ptp</merge> 10 </match> 11 </match> 12 </match> 13 </match> 14 </device> 15 </deviceinfo>

/dev/cdrom -> hdc /dev/cdrom1 -> sr0

Números seriais únicos de dispositivos permitem que o sistema gere nomes estáveis para dispositivos plugáveis a quente, independente da porta a que tenham sido conectados ou em que ordem tenham sido ligados.

http://supertuxbr.blogspot.com 58

http://www.linuxmagazine.com.br


Udev | TUTORIAL

Tabela 1: Variantes do Udev Versão/Distribuição

Fedora Core 5

SLES 9

SLES 10

Suse 10.0

Versão do Udev

udev-084-15

udev-021-36.49

udev-085-30.5

udev-068git20050831-9

Versão do HAL

hal-0.5.7-3

hal-0.5.6-33

hal-0.5.4-6

Script do Hotplug

/sbin/hotplug

Gerenciador de Volumes do Gnome 1.5.15-1

1.5.15-26.1

Mídia Kioslave do KDE

sim

sim

sim

Ivman

ivman-0.6.9-16.3

Propriedade do dono

As aplicações mais comuns para regras personalizadas do Udev são mudanças de nome de dispositivos individuais ou permissões especiais de arquivo. Vamos imaginar que queiramos dar ao usuário conectado ao desktop o acesso de gravação aos discos rígidos USB. O Fedora resolve isso deixando o Udev conferir a posse dos arquivos ao usuário conectado ao desktop. O daemon do Udev pode facilitar a solução de problemas graças a seu nível de log configurável; o padrão err só gera como saída os erros, info torna o Udev mais falante, e debug o torna realmente verboso. Podemos entrar esses valores no arquivo de configuração ou usar um

Figura 2

O HAL Device Manager mostra uma visão em árvore do hardware. A informação adicional sobre cada dispositivo é altamente detalhada.

Transforme um PC antigo em um Thin Client Com o TC-FLASH você transforma um PC antigo em um thin client e isso custa menos do que você imagina.

-

O TC-FLASH é um módulo de memória Flash que contém o software dos thin clients TC-NET da ThinNetworks, que, quando substitui o HD, é capaz de reconhecer todos os dispositivos de um PC comum e transformá-lo em um verdadeiro thin client. O TCFLASH é compatível com serviço de terminal baseado emWindows e Linux. Aproveitando estes equipamentos já disponíveis, pode-se reduzir os custos a pelo menos 1/3 do valor de um thin client completo. A solução mais econômica para aqueles que cogitam a instalação de thin clients e dispõem de equipamentos fora de sua vida útil.

Fone: (61) 3366-1333 Skype: thinnetworks vendas@thinnet.com.br www.thinnetworks.com.br

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

59


TUTRIAL | Udev

D-Bus O D-Bus é um sistema de comunicação que permite que os aplicativos do desktop interajam entre si e com as camadas subjacentes, até as camadas do kernel e do hardware. O sistema D-Bus, portanto, é um serviço de comunicação entre processos (IPC, ou Interprocess Communication), e oferece a infra-estrutura que ajuda os aplicativos a conversarem tanto uns com os outros quanto com partes do sistema operacional. Embora haja mecanismos de IPC no Unix, eles são restritos a sinais, pipes e afins. O modelo do D-Bus talvez soe familiar, já que abordagens competitivas já existem há algum tempo: Corba, a da Microsoft, DCOM, e outras dezenas de projetos, por exemplo. Tanto o KDE quanto o Gnome originalmente experimentaram suas próprias implementações de Corba. O KDE introduziu seu sistema DCOP próprio há algum tempo, enquanto o Gnome ainda possui algum Corba legado em seu sistema de componentes Bonobo. Independente da sua opinião sobre o Corba, a maioria dos desenvolvedores que simplesmente querem programar um aplicativo para desktop acaba ficando confusa com ele. Até mesmo o mais simples applet do Gnome requer conhecimento avançado da complexa arquitetura de componentes. E é por isso que o Bonobo está à margem do Gnome há tanto tempo. A idéia era tornar o D-Bus mais simples, e ao mesmo tempo fazê-lo consumir menos recursos. A biblioteca Libdbus subjacente somente oferece as funções que suportam a comunicação entre duas aplicações. Os desenvolvedores das aplicações normalmente não se detêm à biblioteca, preferindo então a Libdbus-Glib, baseada na API da Glib, e que oferece uma API em C orientada a objetos. Nesse nível, as capacidades do D-Bus chegam perto das de um sistema de barramento, como o nome sugere. O processo servidor, dbus-daemon, roda em segundo plano e escuta pedidos de conexão de aplicativos que se registrem para tipos específicos de eventos – conexão e desconexão de hardware, por exemplo. Quando um evento acontece, o daemon do D-Bus envia uma mensagem através do barramento, e a aplicação em questão responde de acordo. Global para o sistema ou por sessão Basicamente, os sistemas que usam o D-Bus possuem dois barramentos implementados por um único processo servidor: o barramento do sistema e o da sessão. O barramento do sistema é iniciado junto com o sistema, e fica ativo mesmo que nenhum usuário esteja registrado no sistema. Um processo servidor para o barramento da sessão é ativado após completar o login pela interface gráfica para uma sessão do desktop. O binário dbus-daemon oferece as opções de linha de comando --system e --session para esses dois modos. Para iniciar o daemon, o pacote do D-Bus inclui a ferramenta dbus-launch, que configura as variáveis de ambiente necessárias, entre outras coisas. A maioria das distribuições inicia o daemon do D-Bus em modo de sessão ao iniciar uma sessão do X. A figura 3 mostra o papel representado por esses dois barramentos nas comunicações entre os componentes do sistema operacional. Os barramentos de sessão oferecem às aplicações de uma sessão de desktop a possibilidade de conversarem entre si. Essas aplicações podem ser serviços oferecidos pelo ambiente desktop. O barramento do sistema é projetado principalmente para auxiliar programas do desktop a conversarem com as camadas subjacentes. Por exemplo, uma aplicação pode usar o barramento do sistema para se registrar com uma classe de hardware como câmeras digitais, por exemplo.

Aplicação

Conclusões

O Udev é um sistema complexo que compreende múltiplas camadas que se comunicam e colaboram: um daemon, scripts de hotplug e ferramentas para lidar com os eventos. O sistema Udev suporta o gerenciamento dinâmico de dispositivos em sistemas Linux modernos para refletir as exigências do hardware atual. O Udev leva a sério as dependências mútuas, assim como as dependências entre partições e discos rígidos, e gerencia os dispositivos plugáveis a quente tão difundidos hoje em dia. Apesar de a maioria das distribuições já usarem o Udev, o pacote ainda está em desenvolvimento. Isso significa que alguns programas podem ser adicionados e outros descartados (incluindo o próprio antigo binário udev ). As diferenças entre as distribuições e entre diferentes versões da mesma distribuição são grandes em alguns casos. Isso significa que a maior parte da documentação disponível na Internet é obsoleta. Se você usar a versão do Udev fornecida pela sua distribuição, não deve haver dificuldade. Mas se você quiser modificar a configuração, não terá alternativa além de ler os scripts fornecidos com o pacote. Você encontrará algumas notas sobre como programar suas próprias regras de Udev em [2], mas essas páginas não são precisas em todos os aspectos. ■

Aplicação

Mais Informações

Barramento do sistema

D-Bus HAL

Barramento da Sessão Udev

Kernel

Hardware Figura 3

utilitário para especificar os valores em tempo de execução: udevcontrol log_proprity=debug . O controle de comando do Udev reload_rules manda o daemon do Udev processar novamente as regras modificadas.

As interações entre os componentes seguem esse esquema.

[1] Página do Udev: http://www.kernel.org/pub/linux/ utils/kernel/hotplug/udev.html [2] Como escrever regras do Udev: http://reactivated.net/ writing_udev_rules.html [3] Gerenciador de Rede do Gnome: http://www.gnome.org/ projects/NetworkManager [4] LUKS: http://www.redhat.com/ magazine/012oct05/features/hal

http://supertuxbr.blogspot.com 60

http://www.linuxmagazine.com.br


BOINC | SYSADMIN

Construa seu próprio grid computacional com o BOINC

SYSADMIN

Ciclos ociosos

A computação em grid permite que pequenos PCs resolvam grandes problemas. Você pode usar o sistema de grid do famoso projeto SETI@home para criar suas próprias soluções de grid computacional. por Marc Seil

Magnus Skarstedt – www.sxc.hu

C

om o advento da sociedade da pode-se usar um desktop ocioso para informação, os PCs de escritó- processar sinais biomédicos ou simular rio multiplicaram-se a um ritmo um modelo ambiental. estonteante na maioria das empresas. O projeto de computação distribuída Esses computadores compartilham a em grid mais famoso é o SETI@home. maioria de seu tempo com uma tarefa O SETI (que significa Search for Extramuito comum: o ócio. Atividades como Terrestrial Intelligence [1], ou Busca por navegar na Internet ou trabalhar em um Inteligência Extraterrestre) utiliza PCs documento do escritório não são desa- ligados à Internet ao redor do mundo para fios para os processadores atuais. Se você buscar comunicações inteligentes vindas estiver de frente para o PC e não estiver do espaço. As tarefas de gerenciamento do codificando áudio ou vídeos, execute o grid do SETI@home são organizadas através comando uptime. A ocupação média cer- de um sistema conhecido como Berkeley tamente estará abaixo de 1.0. Esse nível Open Infrastructure for Network Compubaixo de uso indica uma carga de trabalho ting (BOINC) [2]. O BOINC também é o pequena em seu PC, o que significa que mecanismo por trás de outros esforços de computação em grid, como o BBC Climate seu chefe pagou demais por ele. Uma idéia básica por trás da compu- Change Project, que permite que usuários tação em grid é usar esses ciclos ociosos domésticos ajudem a desenvolver modeda CPU para algo útil. Por exemplo, los climáticos, e o projeto Einstein@home,

que põe PCs domésticos para processar a tarefa de análise de dados de detectores de ondas gravitacionais. O sistema livre BOINC está disponível para qualquer um que deseje baixálo, o que significa que você pode usar o BOINC para criar e usar suas próprias aplicações de computação em grid. Caso você tenha um problema grande, e queira que o mundo inteiro trabalhe nele, ou até mesmo se você só quiser dar aos PCs da sua empresa algo para fazerem no tempo ocioso, o BOINC fornece a infra-estrutura necessária. Este artigo descreve como configurar uma infra-estrutura de grid computacional com o BOINC em sistemas Gentoo Linux, e como implementar e rodar uma aplicação de demonstração para clientes BOINC dedicados.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

61


SYSADMIN | BOINC

Servindo o grid

Começando

A idéia por trás de um sistema de grid Note que este artigo não cobre os ascomo o BOINC é deixar que os compu- pectos de segurança dessa configuração, tadores clientes emprestem seus ciclos que pode variar de acordo com a sua de CPU para resolver pequenas partes de rede e as políticas da sua empresa. Além um grande cálculo. Para que o sistema disso, os próximos passos baseiam-se funcione, o grid precisa de um sistema num sistema Gentoo Linux. Contudo, servidor que cumpra várias importantes os procedimentos devem ser semelhantarefas de gerenciamento. As tarefas cor- tes para outras distribuições. O servidor BOINC exige alguns parespondem às seguintes categorias: ➧ Descoberta e monitoramento de recur- cotes que fazem parte da maioria das sos – quais nós estão ficando ociosos, distribuições de Linux. O Apache, PHP e Python oferecem a interface para o e qual seu status? ➧ Alocação de recursos – enviar trabalho usuário e o sistema de passagem de menaos nós ociosos; sagens. Um banco de dados MySQL é ➧ Mensagens – permitir comunicação o esqueleto das tarefas de gerenciamento do grid. Durante a instalação dessas entre os nós; ➧ Segurança – se recursos públicos (como ferramentas obrigatórias, é importante a Internet) fazem parte do grid, e pro- que as interações entre pacotes sejam teger as tarefas, dados, nós e o próprio respeitadas (por exemplo, os módulos grid contra possíveis invasões. de MySQL do Python). A eficiência do sistema de grid depende diretamente da eficiência dessas [root] $ USE=”mysql php xml” emerge ➥ -avt python apache mysql php tarefas de gerenciamento. ➥ mysql-python pecl-pdo-mysql Numa visão simplificada (figura 1), um grid BOINC consiste de um servidor e vários computadores clientes Para ativar o módulo do PHP, a opção (nós). O servidor BOINC, que pode -D PHP5 deve estar presente no arquivo rodar em várias máquinas, gerencia as de configuração /etc/conf.d/apache2. tarefas relativas ao grid e envia as tarefas O PHP4 também funciona bem. Para computacionais (unidades de trabalho) verificar se o módulo do Apache para aos nós. Estes ligam-se a um projeto PHP está ativo, um pequeno script BOINC através de um aplicativo cliente PHP (exemplo 1) relatará qual versão BOINC. A Internet pode proporcionar o do PHP está disponível. caminho de comunicação entre os nós e A seguir, o usuário boincadm deve o servidor BOINC. ser criado no servidor. Esse usuário é

Exemplo 1: ola.php 01 <?php 02 echo ‘Ola Mundo!’; 03 phpinfo(); 04 ?>

responsável por executar as tarefas de gerenciamento do grid. O usuário deve estar no mesmo grupo que o do servidor web Apache (chamado apache), para simplificar a configuração. Se o banco de dados MySQL ainda não estiver rodando, pode-se inicializá-lo com os seguintes comandos como root: $ mysql_install_db $ /etc/init.d/mysql start $ /usr/bin/mysqladmin -u root password ➥ ‘SENHA_DO_MYSQL’

O usuário boincadm precisa ter direitos suficientes de acesso para acessar o banco de dados e criar um novo banco de dados. Há diferentes possibilidades para permitir a administração do banco de dados, mas alguns comandos SQL também conseguem cumprir a tarefa. $ mysql -u root -p mysql> GRANT ALL ON *.* TO ➥ ‘boincadm’@’localhost’; mysql> SELECT * FROM mysql.user WHERE ➥ user=’boincadm’;

Os pacotes do software de backend agora já estão disponíveis para o BOINC.

Compilação do BOINC Para obter os fontes, pode-se fazer um checkout do CVS com o usuário boincadm. O checkout vai baixar o software cliente BOINC, os aplicativos servidores, e algumas ferramentas que simplificam a criação e administração de projetos do BOINC. $ cvs -d :pserver:anonymous: ➥@alien.ssl.berkeley.edu:/home/cvs/ ➥cvsroot checkout -r ➥ boinc_core_release_5_3_31 boinc

Figura 1

A infra-estrutura do BOINC com um servidor centralizado gerenciando o grid.

Os scripts de configuração que vêm no pacote, _autosetup e configure, configuram o código-fonte para a compilação. Um simples make fará o resto. Em alguns casos, pode ser ne-

http://supertuxbr.blogspot.com 62

http://www.linuxmagazine.com.br


BOINC | SYSADMIN

cessário instalar algumas bibliotecas para resolver todas as dependências e compilar os fontes. Se dependências não satisfeitas forem encontradas durante a compilação, confira a lista de dependências disponível no site oficial do BOINC [3]. $ cd boinc $ ./_autosetup $ ./configure --enable-server ➥ --disable-client --without-x $ make

Rode o script de sanidade para verificar se as partes cruciais do BOINC estão configuradas corretamente: $ ./test/test_sanity.py

Estrutura de um projeto Antes de você enviar tarefas aos nós, é necessário criar um projeto. $ ./tools/make_project --delete_prev_inst ➥ --user_name boincadm --drop_db_first ➥ --project_root $HOME/projects/test_setup ➥ --key_dir $HOME/projects/test_setup_keys ➥ --url_base http://boinc.tuxindustry.lu/ ➥ --db_user boincadm test_setup

Exemplo 2: html/project/project.inc 01 02 03 04 05 06

... define(“EMAIL_FROM”, “boincmaster@tuxindustry.net”); $USE_PHPMAILER=true; $PHPMAILER_HOST=”smtp.tuxindustry.net”; $PHPMAILER_MAILER=”smtp”; ...

Exemplo 3: ./project.xml 01 <boinc> 02 <platform> 03 <name>i686-pc-linux-gnu</name> 04 <user_friendly_name>Linux/x86</user_friendly_name> 05 </platform> 06 <app> 07 <name>uppercase</name> 08 <user_friendly_name>Aplicacao de exemplo da Linux Magazine</user_friendly_name> 09 </app> 10 </boinc>

Exemplo 4: ./templates/wu_uppercase 01 02 03 04 05 06 07 08 09 10 11 12

<file_info> <number>0</number> </file_info> <workunit> <file_ref> <file_number>0</file_number> <open_name>in</open_name> <!-- open_name é o nome do arquivo de entrada usado pela aplicação --> </file_ref> <delay_bound>600</delay_bound> <!-- Um limite máximo de tempo (em segundos) entre enviar uma WU a um cliente e receber uma resposta --> </workunit>

Depois de criar o projeto test_seo console pedirá com algumas mensagens para que se atualize a configuração do Apache. Essa informação é usada para acessar o projeto através de um navegador web e os Uma vantagem do grid BOINC é sua clientes BOINC. Pode-se ajustar os escalabilidade dinâmica. Isso inclui o direitos dos usuários para o projeto gerenciamento autônomo de usuários (nós), o que reduz as tarefas administracom o chmod . tivas. As configurações padrão de projeto $ cd $HOME/projects/test_setup/ desativam a criação de usuários através $ cat test_setup.httpd.conf >> da interface web do projeto. Para ativar ➥ /etc/apache2/httpd.conf # como root esse recurso, deve-se ajustar o arquivo $ /etc/init.d/apache restart # como root config.xml, localizado no diretório raiz $ chmod -R a+r ~/projects/ do projeto. Mude a entrada <disable_account_creation> de 1 para 0. Agora o projeto já está disponível O pacote phpmailer ajuda a garantir e pode ser acessado através de um a criação fácil e transparente de usuários. navegador web. A URL de destino Baixe o phpmailer em http://phpmailer. é definida pelas configurações de sourceforge.net e instale-o no local das alias do Apache (por exemplo, http:// extensões php.inc. Essa pequena extenboinc.tuxindustry.net/test_setup ). Se são permite que o servidor do projeto o servidor precisar ser fortalecido, envie informações aos usuários que se pode-se revisar o chmod , caminhos registrarem no BOINC. Pode-se conimportantes e também a configura- figurar esse recurso de envio de emails ção do Apache; caso contrário, os acrescentando algumas linhas ao arquivo padrões funcionam bem. Pode-se PHP do projeto, project.inc. Esse arquivo omitir nessa etapa as entradas do cron se encontra no diretório html/project do para simplificar a depuração. projeto BOINC (exemplo 2).

tup ,

Criar usuários

Criando uma aplicação Depois de criar uma conta pela interface web, é hora de adicionar uma aplicação a ser executada pelos nós. Os fontes do BOINC incluem um diretório app, que abriga algumas aplicações de exemplo. A aplicação uppercase, que servirá de exemplo neste artigo, transforma todos os caracteres de um arquivo ASCII normal em maiúsculos. Os dados de entrada devem conter o nome de arquivo in, e o arquivo de saída correspondente deve se chamar out. Essa aplicação também pode ser iniciada sem um cliente BOINC, o que pode ajudar na depuração. Copie a aplicação para o diretório do projeto, app/uppercase. APPNAME_VERSMAJOR.VERSMINOR_PLATFORM define a convenção para o nome. A versão indica quais clientes BOINC podem executar a aplicação. Somente a versão principal (VERSMAJOR) é responsável pela identificação do cliente. No exemplo a seguir,

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

63


SYSADMIN | BOINC

Exemplo 5: ./templates/re_uppercase 01 02 03 04 05 06 07 08 09 10 11 12 13 14

<file_info> <name><OUTFILE_0/></name> <generated_locally/> <upload_when_present/> <max_nbytes>10000000</max_nbytes> <url><UPLOAD_URL/></url> </file_info> <result> <file_ref> <file_name><OUTFILE_0/></file_name> <open_name>out</open_name> <!-- open_name identifica o nome do arquivo de resultado da aplicação --> </file_ref> </result>

um cliente com a versão 5.4.9 conseguiria executar a aplicação. Devido ao fato de os clientes BOINC poderem rodar em máquinas Windows®, Mac OS X e Linux, também é necessário indicar a plataforma de destino (as convenções para nomes de plataformas estão em http://boinc.berkeley. edu/platform.php). $ cd apps && mkdir uppercase $ mv ~/boinc/apps/upper_case ➥ uppercase_5.0_i686-pc-linux-gnu

Agora crie o arquivo project.xml (exemno diretório raiz do projeto, e termine o fluxo de trabalho “application add” executando os comandos de projeto ./bin/xadd e ./bin/update_versions. plo 3)

Unidade de trabalho

Antes de os nós começarem a executar a aplicação e processar algum dado, é necessário criar uma unidade de trabalho (WU, ou work unit). Uma WU define a aplicação e os dados a serem executados e processados pelo cliente. As unidades de trabalho são descritas por um modelo de unidade de trabalho e outro de resultado. O modelo de unidade de trabalho (exemplo 4) descreve a referência dos dados de entrada (nesse caso, o arquivo in) no nó de destino.

O modelo de resultado (exemplo 5), get_nresults tem que ser maior ou igual por outro lado, descreve a referência a min_quorum. O último argumento test. dos dados de resultado (o arquivo de txt especifica os dados sobre os quais a resultados out). Pode-se criar ambos os WU deve ser aplicada. O arquivo com os modelos no diretório templates/. dados precisa estar presente no diretório Após criar os arquivos de modelo, co- de download. Depois de criar a WU, um pie o arquivo que contém o texto a ser novo subdiretório é criado em download/ alterado para o diretório de download. Já contendo os dados, que serão passados está tudo preparado para a chegada de para um nó ocioso que pode ser alocado uma unidade de trabalho. pelo servidor BOINC. Tenha em mente o fato de que os fontes do BOINC também fornecem uma API para criar unidades de trabalho e Cada unidade de trabalho é identificada inseri-las no grid. por um ID único, que é gerenciado pelo servidor BOINC e o banco de dados. A ferramenta create_work é usada para passar trabalhos para o grid. As tarefas de gerenciamento do servidor BOINC são realizadas pelos chamados ./bin/create_work \ daemons e filas do servidor BOINC. Os -appname uppercase \ daemons geralmente enchem as filas e as -wu_name wu_uppercase_01 \ usam para acionar tarefas de gerenciamen-wu_template templates/wu_uppercase.xml \ to. Exemplos de daemons incluem: -result_template ➧ feeder – assegura que os nós tenham ➥ templates/re_uppercase.xml \ -min_quorum 1 \ trabalho; -target_nresults 1 \ ➧ transitioner – lida com o estado da text.txt transição das unidades de trabalho enviadas e dos resultados recebidos; A WU se chama wu_uppercase_01, que é ➧ file_deleter – apaga os arquivos de armazenada como todas as outras opções entrada e resultados de acordo com do banco de dados test_setup. O argupolíticas definidas; mento min_quorum define quantos resulta- ➧ sample_dummy_validator – verifica dos retornados precisam ser equivalentes se os resultados enviados pelos nós para validar uma WU. O valor de tarsão válidos;

Inserindo uma WU

Iniciando os daemons

Exemplo 6: ./config.xml 01 02 03 04 05 06 07 08 09 10 11

<boinc> .... <daemons> <daemon><cmd>feeder -d 3</cmd></daemon> <daemon><cmd>transitioner -d 3</cmd></daemon> <daemon><cmd>file_deleter -d 3</cmd></daemon> <daemon><cmd>sample_trivial_validator -d 3 app uppercase</cmd></daemon> <daemon><cmd>sample_dummy_assimilator -d 3 app uppercase</cmd></daemon> </daemons> ... </boinc>

http://supertuxbr.blogspot.com 64

http://www.linuxmagazine.com.br


BOINC | SYSADMIN

➧ sample_dummy_assimilator – verifica ao qual se ligar, que, nesse caso, está se foi gerado um resultado válido pe- em http://boinc.tuxindustry.lu/test_selas unidades de trabalho ou se houve tup, e um par válido de email e senha para autenticar. algum erro. As descrições simplificadas dos daemons devem ser suficientes para $ sh boinc_5.*.*_i686pclinuxgnu.sh se visualizar o fluxo de unidades de $ cd BOINC $ ./run_manager #inicia o cliente trabalho (veja o wiki do BOINC [4] para uma descrição detalhada). Os daemons encontram-se no diretório bin/ Depois de algum tempo ocioso no do projeto e precisam ser adicionados nó do grid, o cliente começará a baixar ao arquivo de configuração do projeto, a WU e subir o resultado para o serviconfig.xml (exemplo 6). dor. Veja as mensagens do cliente para Após atualizar a configuração do proje- vê-lo baixando a aplicação uppercase e to, já é possível iniciar o servidor BOINC enviando os resultados. com ./bin/start. O estado do servidor Se a WU for processada corretamenpode ser consultado em http://boinc.tu- te, o crédito do respectivo nó aumentará. xindustry.lu/test_setup/server_status.php, Pode-se verificar seu crédito na seção Your e é atualizado a cada dez minutos. account da página do projeto. Para receber algum retorno durante a delegação e o processamento de trabalhos, pode ser interessante verificar O servidor já está pronto e esperando os os registros do servidor, que ficam no clientes conectarem. Baixe um cliente diretório log_boinc do diretório home do BOINC com um número que reflita projeto test_setup. No lado do cliente, a a convenção de nome da aplicação aplicação BOINC cria diretórios dedicauppercase. dos aos projetos aos quais o nó está ligado. O cliente está disponível na seção Esses diretórios contêm as unidades de Download da página do projeto test_setup. trabalho (aplicação, descrição e dados) A aplicação cliente pedirá um projeto que serão processados pelo nó.

Ligando os nós

Conclusão

No final, você terá um grid BOINC básico rodando. Agora você já pode começar a implementar suas próprias aplicações e aumentar o grid com mais nós. Este artigo foi somente uma breve introdução, mas deve simplificar os passos para se colocar em funcionamento um primeiro servidor de testes. Espero que tenham gostado desta curta viagem ao mundo futurista da computação distribuída. ■

Mais Informações [1] Search for ExtraTerrestrial Intelligence (SETI@home):

http://setiathome.berkeley.edu [2] Berkeley Open Infrastructure for Network Computing:

http://boinc.berkeley.edu [3] Dependências para a compilação: http://boinc.berkeley.edu/ build.php [4] Wiki não oficial do BOINC: http://boinc-wiki.ath.cx/

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

65


SYSADMIN Embelezando a janela do terminal

Shell ilustrado O Bashish dá um toque de estilo à linha de comando. por Frank Wieduwilt

S

e você é usuário freqüente da linha de comando, deve gostar da aparência espartana da janela de terminal. Mas para usuários eventuais da shell, ou para leitores que prefeririam um visual mais divertido, o Bashish [1] abre uma arca do tesouro de opções. O Bashish dá um fundo gráfico em ASCII à sua janela de terminal. O programa permite que você melhore a aparência dos programas de terminal, como Gnome Terminal, Xterm, Rxvt, Rxvt Unicode, Aterm, Mlterm e o console do Linux, e você também pode modificar um conjunto limitado de configurações, tais como a barra de título da janela do emulador de terminal do KDE. O desenvolvedor do Bashish, Thomas Eriksson, planeja estender o suporte ao Konsole também. Ele recomenda usar a shell Bash, mas o programa também suporta outras shells como o Zsh e o Tcsh. Se possível, é bom que o terminal suporte o conjunto de caracteres Uni-

code. Vários dos temas que vêm com o pacote do Bashish incluem caracteres como linhas e símbolos de baralho que não são suportados por conjuntos de caracteres mais antigos, como ISO-8859-1 e ISO-8859-15. Para instalar uma versão funcional do Bashish, será necessária uma versão recente do Bash (versão 2.04 ou mais nova). Também será preciso uma versão recente de seu programa de terminal. Não conseguimos usar o Bashish com a versão do Rxvt incluída no Mandriva 2006. O programa de terminal travou com a maioria dos temas que experimentamos. Já a versão fornecida com o Ubuntu 6.06 funcionou sem qualquer problema, assim como o Rxvt que vem no Suse 10.1. Após mudarmos para a versão Unicode do Rxvt, disponível na Web [2], o Bashish finalmente funcionou Figura 1 no Mandriva.

Instalação

Para instalar o Bashish, primeiro descompacte o arquivo com o código-fonte, bashish-2.0.5.1.tar.gz, e depois prossiga com os familiares ./configure && make && make install para compilar e instalar. Depois de terminar a instalação básica, digite o comando bashish em um programa de terminal. A ferramenta agora perguntará qual shell você prefere, e

A janela do emulador de terminal Rxvt Unicode com o tema Urbandawn.

http://supertuxbr.blogspot.com 66

http://www.linuxmagazine.com.br


Bashish | SYSADMIN

então vai configurá-la para carregar o a seu status anterior. O script Bashish automaticamente quando você que chama o programa não impede que o usuário passe iniciar essa shell. Você já pode iniciar uma nova shell parâmetros para o programa com o comando exec bash. A nova shell re- de interesse. fletirá as configurações padrão do Bashish, O Bashish armazena que pedem uma fonte azul-clara sobre scripts de chamada de proum fundo preto. Para apagar o Bashish, gramas no diretório bashish/ simplesmente inicie o programa com a launcher dentro do diretório home do usuário. Temas para opção --uninstall. Figura 2 aplicativos específicos localizam-se em bashish/bt/app. O Bashish possui um diretório com o O Bashish agrupa as melhorias da shell nome do programa. em chamados “temas”. Um tema inclui Infelizmente, nem os temas, nem os dados do gráfico de fundo e o prompt. os prompts se mostraram muito estáPara iniciar a shell sem um tema, pri- veis. Alguns prompts impediram que meiro rode a ferramenta Bashishthe- a saída de comandos simples como me. O diálogo inicial pede que você less e ps fosse mostrada na tela. O especifique se quer usar o prompt para tema Urbandawn, mostrado na figua shell em geral, ou se simplesmente ra 1, impediu algumas vezes que os gostaria de aplicar as mudanças a um dados fossem mostrados no terminal. O Bashish também calcula errado o programa específico. Se você estiver simplesmente em- tamanho da janela de terminal com belezando a shell, selecione a entrada certa freqüência, deixando o usuário prompt theme at the command prompt com somente uma parte da saída do no menu. Uma lista aparecerá, dei- programa. xando você especificar os detalhes do Alguns programas como o Playmp3list, tema. Depois de escolher o aspecto por exemplo, não iniciarão em qualquer e possivelmente modificar a cor do tema do Bashish diferente do padrão. fundo, você pode sair do programa de O Playmp3list trava com uma falha de configuração. Depois disso, a janela segmentação, independente dos outros de terminal deve ficar completamente temas tentados. E o navegador em modo diferente (figura 1). texto Elinks fechou em nossos testes, É bom você experimentar com os recusando-se a iniciar com qualquer papéis de parede que vêm com a dis- tema do Bashish carregado. tribuição. Os nostálgicos talvez queiram experimentar os prompts com o prefixo computer/. Por exemplo, você pode mudar o prompt para se parecer Em uma instalação padrão a partir do com o DOS; o Bashish até converte as código-fonte, os arquivos de temas localibarras dos caminhos de diretório para zam-se em /usr/local/share/bashish/themes. Os elementos binários ficam guardados contra-barras (figura 2). Nos rios de cores que o Bashish dis- em arquivos TGZ separados, com a extribui entre o prompt e a saída normal tensão bt; obviamente, não é possível do programa, pode-se ser mais seleti- editar arquivos desse formato. Se você vo, associando temas a aplicativos es- quiser modificar um tema, comece atipecíficos. Para isso, selecione o item vando o tema no Bashishtheme. Depois, application theme selected applica- os componentes do tema ficarão no diretion no menu principal de temas do tório ~/.bashish/bt/cache/. Agora copie Bashish. Essa opção leva o usuário a os arquivos texto para um novo diretório um diálogo onde este pode digitar o e carregue-os para edição com um editor nome do programa requerido e depois que suporte Unicode. selecionar um dos temas. O Bashish O arquivo Theme contém detalhes então salvará um script de início que sobre o autor e as cores usadas pelo usa o nome do programa no caminho tema; o Prompt.bash fornece a definição do prompt, incluindo os gráficos que o desse programa. Quando o programa for iniciado, o Bashish mostrará na tela. Os comandos script que o chama primeiro adiciona o do Bashish estão documentados em [3]. tema selecionado à shell, antes de seguir A documentação não é muito estrutuchamando o software de interesse. Ao rada e possui algumas omissões, que às sair do programa, o script volta a shell vezes nos deixam somente a abordagem

Cores na shell

Faça seu tema

Um terminal Rxvt mascarado como o antigo sistema operacional DOS.

da tentativa e erro. A solução mais fácil é usar um tema já existente como ponto de partida para seus experimentos. Depois de terminar suas modificações, entre no diretório que contém os arquivos do tema e digite bashishtheme save. Se você criou um tema novo, o Bashish perguntará onde você deseja salvá-lo.

Conclusões

O Bashish acrescenta cor e variedade ao cinza normal do dia-a-dia. O programa ainda está longe de se livrar de todos os bugs; alguns temas impedem que os dados sejam mostrados no terminal, e há programas que simplesmente travam ao ver o Bashish. Outro problema é a desorganizada documentação do Bashish, o que dificulta a criação de seus próprios temas, a menos que se esteja querendo experimentar. ■

Mais Informações [1] Bashish: http://bashish.sourceforge.net [2] Rxvt Unicode: http://software.schmorp.de/ pkg/rxvt-unicode [3] Documentação do Bashish: http://bashish.sourcefoge.net/ doc.html

O autor Frank Wieduwilt estudou originalmente História, mas já trabalha há vários anos como autor técnico freelancer para várias empresas de publicação em Berlim, Alemanha, onde escreve manuais para soluções de softwares de bancos de dados. Frank é colaborador freqüente da Linux Magazine, especializado em tópicos SOHO, como escritório e programas gráficos.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

67


SYSADMIN Proxy HTTP com cache e filtragem de conteúdo em bridge

Filtro na ponte Proxies com cache lembram-se de páginas e as servem localmente, economizando tempo e dinheiro. Os membros mais inteligentes dessa família também apagam conteúdo perigoso e oferecem bridging transparente. por Tobias Eggendorfer

Q

uando vários usuários na mesma rede acessam a mesma página da Internet diversas vezes, pagase um preço de tempo e banda. Um proxy com cache reduz o tráfego, guardando páginas web pedidas pelos usuários e servindo-as quando requisitado. Um proxy HTTP com cache como o Squid [1] roda na camada 7 do modelo OSI (Open Systems Interconnection); em outras palavras, o servidor proxy Squid “fala” o protocolo da aplicação e consegue reconhecer os dados trafegados. Com isso, o proxy é capaz de verificar o conteúdo da página e oferecer a filtragem do conteúdo. Dependendo da direção do destino, um pro-

xy pode tanto bloquear o acesso a páginas indesejadas, como as de conteúdo adulto em escolas, por exemplo, quanto manter softwares mal intencionados fora de uma rede corporativa.

Mudanças chatas

Se você instalar um proxy legado em sua rede, pode esperar uma pilha de tarefas de configuração. É necessário informar os detalhes do proxy em cada navegador, ou mandá-los utilizar a auto-configuração, e modificar o firewall para negar tentativas de rotear HTTP. Como alternativa,

http://supertuxbr.blogspot.com 68

http://www.linuxmagazine.com.br


Squidbridge SYSADMIN

Servidor web Roteador/ Firewall

Bridge com filtro de conteúdo

Internet

Figura 1 O filtro de conteúdo está instalado em uma bridge, neste cenário. Essa configuração cabe facilmente numa rede pré-existente sem a necessidade de reconfigurar o roteador ou os clientes.

pode-se instalar um proxy transparente usando uma regra de firewall para redirecionar para o proxy todo o tráfego HTTP que sai. Entretanto, mais uma vez é necessário modificar o firewall. Seria muito mais elegante simplesmente conectar o proxy à rede – atrás do último switch e à frente do roteador. Essa solução, que elimina a necessidade de se modificar os navegadores dos clientes ou o roteador, é um resquício do papel de uma bridge ou switch. O objetivo original de uma bridge era organizar o tráfego da rede baseado em endereços MAC, conseqüentemente segmentando a rede. Porém, o kernel Linux atual permite que os administradores sofistiquem o funcionamento da bridge incluindo o papel de firewall invisível baseado na filtragem na camada TCP.

Conveniente e prático Uma abordagem prática é rodar um filtro na camada da aplicação em uma bridge (figura 1). Esse casal bizarro pode ser facilmente integrado a uma rede pré-existente sem obrigar o administrador ou os usuários a modificar a configuração dos roteadores, clientes ou aplicativos. A única forma de atravessar o proxy é usando um túnel, como SSH ou OpenVPN. Entretanto, a opção do tunelamento está sempre aberta, independente da solução que se use, e pressupõe que se tenha um maior conhecimento e se dedique mais trabalho. Quem quer que crie um túnel para evitar o proxy necessita de um servidor baseado na Internet para servir como ponto de destino do túnel, e deve ter a possibilidade de instalar softwares na outra ponta do túnel.

Configuração básica

Para instalar o proxy, provavelmente o melhor é começar instalando um sistema Linux mínimo. A máquina precisa de duas placas de rede, que não receberão endereços IP por enquanto. Como geralmente será necessário recompilar o kernel (para ativar o bridging), e aproveitando que é recomendável compilar e instalar o Squid e o DansGuardian a partir do código-fonte (veja abaixo), serão necessários os respectivos pacotes de desenvolvimento no sistema. Antes de se colocar a bridge para funcionar, deve-se limpar a máquina e remover quaisquer pacotes que não sejam mais necessários.

Questões do kernel

Para tornar o sistema mais seguro, o melhor é compilarmos um kernel estático sem suporte a módulos. Essa configuração desabilita a interface de módulos explorada por diversos rootkits de kernel (veja mais sobre rootkits em

Figura 2

[2]).

Ao compilarmos o kernel, é importante termos certeza de selecionar os drivers apropriados às controladoras de rede e de disco rígido. Além disso, o kernel deve obrigatoriamente suportar o bridging (figura 2). Administradores cuidadosos com a segurança certamente instalarão patches como o GR Security [3]. Depois de iniciar o sistema com o novo kernel, precisaremos configurar uma bridge: o comando brctrl addbr br0 adiciona um novo dispositivo de rede chamado br0. Como uma bridge exige duas placas de rede, é necessário associar duas placas a ela, com os seguintes comandos: brctrl addif br0 eth0 brctrl addif br0 eth1

Em seguida, usamos o comando ip para iniciar as placas de rede e a bridge: ip link up eth0 ip link up eth1 ip link up br0

A opção BRIDGE em Networking | Networking support | Networking options | 802.1d Ethernet Bridging especifica se o kernel (2.6.17.7, nesse caso) suportará o modo bridge.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

69


SEÇÃO | Assunto

Servidor web

� Para o servidor

� Requisição

� Resposta ao servidor

Internet

� OK � Para o servidor � Resposta do servidor

Figura 3

Squid

� Website

� Para o redirecionador

Redirecionador do Clam AV

Buscando vírus com o redirecionador do ClamAV.

Já podemos testar a bridge agora. Depois, prosseguimos descompacVamos simplesmente ligá-la à rede. tando e configurando o Squid: ./conEla deve passar pacotes entre os dois figure --enable-linux-netfilter segmentos da rede, mas podemos usar --disable-ident-lookups . O priuma ferramenta de análise de rede meiro parâmetro desabilita o suporte como o tcpdump [4] para verificar ao Netfilter do Linux no Squid. Esse se isso está funcionando. Se preferir- passo é necessário se quisermos usar mos, podemos configurar agora um o Squid como um proxy transparente. firewall com iptables, e Physdev-Ma- O segundo parâmetro desativa requisições de Ident feitas pelos clientes, tch ou ebptables. apesar de normalmente o Ident nem estar instalado, ou ser bloqueado pela maioria dos firewalls. Dependendo É necessário instalarmos o Squid pri- da nossa preferência, podemos usar meiro, para o proxy. Para baixar o có- o parâmetro --prefix=/usr/local/ digo-fonte de [1], o sistema de bridge squid para colocar tudo isso em um precisa de um endereço IP e uma diretório. Depois, completamos com entrada de gateway padrão na tabela os comandos para compilar e instalar de roteamento. Os comandos a seguir o Squid: make && make install. O próximo passo é modificar os cuidam disso: arquivos de configuração do Squid ifconfig br0 192.0.2.8 de acordo com nossas necessidades. ➥ netmask 255.255.255.0 O prefixo mencionado acima instala route add default o arquivo squid.conf no diretório /usr/ ➥ gw 192.0.2.1 local/squid/etc . Os administradores

Instalação do Squid

não terão muito o que fazer nesse arquivo – a porta onde o Squid ouvirá é só uma questão de gosto; o padrão é a 3128. Se preferirmos mudar a porta, é só acrescentarmos a seguinte linha à configuração do Squid: http_port 127.0.0.1:65080

Isso faz o proxy escutar na porta 65080. O comando também configura o Squid para garantir que somente o proxy na máquina local vai reagir a conexões. Isso é necessário para a filtragem posterior de conteúdo. O Squid suporta o protocolo ICP (Inter Cache Protocol), que permite que proxies troquem conteúdo do cache entre si. Esse suporte é irrelevante em nosso caso, e podemos desativá-lo facilmente: icp_port 0. Além disso, uma entrada de ACL (Lista de Controle de Acessos, na sigla em inglês) garante que só a máquina local possa acessar o Squid: http_access allow localhost.

Servidor web Requisição Internet

Squid

Dansguardian

Website

Cache Figura 4

Colocar o filtro de conteúdo DansGuardian entre os usuários e o proxy de cache Squid garante que o DansGuardian aplicará as regras de filtragem a todas as requisições.

http://supertuxbr.blogspot.com 70

http://www.linuxmagazine.com.br


Squidbridge SYSADMIN

Filtragem de conteúdo

download gera o dobro do tráfego – que é exatamente o que queríamos evitar com o uso de um proxy com cache. Usando alguns macetes, podemos convencer o redirecionador a deixar o Squid cuidar do download. Esse passo envolve configurar o Squid para evitar passar pedidos da máquina local para o SquidClamAVRedirector, e portanto o travamento num laço infinito. Mas essa abordagem é problemática quando em conjunto com um proxy transparente, pois, na visão do Squid, todos os pedidos parecem vir da máquina local. Adicione a isso uma configuração desleixada e provavelmente você concordará que essa não é a melhor abordagem.

O proxy ainda está rodando sem um filtro de conteúdo. Temos diversas opções aqui, mas elas se tornam fáceis quando decidimos o que queremos que o filtro faça. O mais comum costuma ser “proteger máquinas Windows® inseguras contra programas mal-intencionados que tentem chegar a elas através de respostas HTTP.” Em outros ambientes, talvez precisemos de um filtro para bloquear o acesso a certos tipos de conteúdo e websites indesejáveis. Por exemplo, escolas costumam estipular que sites com conteúdo adulto ou ilegal devem ser bloqueados. Vamos tentar nos manter fora da discussão sobre a utilidade e a efetividade desse tipo de ação, pelo menos por enquanto – o exemplo a seguir não leva nada A alternativa é adicionar um proxy de disso em conta, concentrando-se na filtragem de conteúdo na frente ou luta contra vírus malévolos. atrás do Squid. O DansGuardian [6] Novamente, nossa escolha de é um candidato possível. O melhor antivírus é uma questão de gosto. local para colocar o DansGuardian é Em um ambiente todo de Código entre o proxy e a rede interna (figura Aberto, um antivírus igualmente 4, apesar de ambas as tarefas podeaberto como o ClamAV [5] costu- rem ser executadas em uma única ma ser o preferido. As etapas para máquina). Isso significa que pedidos configurar outros antivírus são se- vindos da rede interna primeiro serão melhantes; escolher um deles ou enviados ao DansGuardian, que os até mais de um deve ser uma tarefa repassa para o Squid e recebe uma suficientemente simples. resposta do mesmo Squid – possiHá várias soluções para integrar velmente do cache, se o Squid já o filtro de conteúdo com o Squid: viu esse pedido antes – e verifica a a interface do redirecionador é resposta em busca de vírus, worms uma opção bastante popular. O e outras pragas. Squid passa a URL baixada e todos Em teoria, seria possível inverter os parâmetros para esse script. De- a ordem, colocando o proxy de filpendendo do valor retornado pelo tragem de programas maliciosos do script, o Squid busca o documento lado de fora e o proxy de cache do apontado pela URL. Isso faz sentido lado de dentro (figura 5). A vantagem se o filtro simplesmente inspecionar dessa abordagem é que o antivírus só a URL, e não o documento para o precisa verificar uma vez cada arquivo baixado. Essa configuração minimiqual ela aponta. za a busca de programas maliciosos, mas também impõe um problema de segurança. Se o antivírus deixar um vírus passar, essa praga se estabelece no cache do proxy, a salvo de No caso de antivírus, cuja interface detecções futuras, mesmo que uma pode ser fornecida pelo SquidCla- atualização das assinaturas de vírus mAVRedirector, o redirecionador possa revelar a ameaça. Se o proxy não é uma boa solução. Primeira- de filtragem estiver entre o usuário e mente, ele baixa a URL, evitando o proxy de cache, conseguirá varrer o Squid nesse processo; depois, ele vírus em todas as páginas pedidas, analisa o conteúdo e dá ao Squid sem importar se a página está sendo o aval para que ele peça a página servida diretamente pelo cache ou ( figura 3 ). Em outras palavras, cada por um servidor externo.

Corrente de proxies

Obstáculos ao redirecionador

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

71


SEÇÃO | Assunto

Servidor web Requisição Internet

Antivírus

Squid

Website

Cache Figura 5

Colocar o filtro de conteúdo no lado da Internet é menos seguro. Cada arquivo só é verificado uma vez. Se um vírus conseguir chegar ao cache, nunca será descoberto, mesmo após a atualização das assinaturas de vírus.

Instalação do DansGuardian Precisamos nos certificar de que instalamos o ClamAV antes de começarmos a instalar o DansGuardian. O ClamAV é bastante fácil de instalar. O website do ClamAV possui binários para a maioria das principais distribuições de Linux. Se você preferir compilar a partir dos fontes, os passos normais serão suficientes: ./configure && make && make install . Quando instalamos o DansGuardian, precisamos especificar uma opção para o script configure incluir o suporte ao ClamAV. Se preferirmos, podemos mover o pacote compilado para um diretório próprio. Isso nos deixa com o seguintes três comandos para instalar: ./configure ➥ --enable-clamav ➥ --prefix=/usr/local/dansguardian make make install

servidor web da intranet e redirecionar o navegador para essa página. Como alternativa, poderíamos usar um servidor externo para servir uma página com a mensagem. O DansGuardian oferece uma página de exemplo em share/dansguardian.pl . A diretiva accessdeniedaddress no arquivo de configuração do DansGuardian informa qual mensagem mostrar.

Ativação do filtro

Atualmente, o DansGuardian não consegue ver realmente pedidos de clientes – as requisições saem direto da bridge para os servidores de destino. Uma regra do Netfilter redireciona o tráfego para o filtro: iptables -t nat ➥ -A PREROUTING ➥ -m physdev ➥ --physdev-in eth0 -p tcp ➥ --dport 80 -j REDIRECT ➥ --to-port 8080

O alvo physdev restringe o uso do proxy aos clientes de dentro da bridge. A configuração proxyport = 8080 Se não tivéssemos um firewall para no dansguardian.conf informa que o proteger a bridge, seria bem fácil filtro escutará na porta 8080. Além um agressor externo explorar o proxy disso, o filtro precisa saber em qual como um proxy aberto. porta o Squid está escutando: filSe tudo isso funcionar, todas as terport = 65080 . Por último, talvez requisições web para redes externas tenhamos que descomentar a linha devem ser gravadas nos registros do contentscanner que aponta para o Cla- proxy. O sistema é completamente mAV e modificar a configuração, se transparente, quando visto de dentro. O proxy estabelece uma nova conexão necessário. O próximo passo é definir a men- para pedir uma página, fornecendo sagem de erro que os usuários vêem seu próprio endereço IP como fonte. ao pedir conteúdo bloqueado. A for- Os desenvolvedores estão trabalhando ma mais fácil de produzir a mensa- para eliminar esse antigo resquício gem é colocar uma página em nosso de proxy não transparente.

Máquina limpa

Com a filtragem de programas maliciosos e um cache na bridge, a rede interna fica bem protegida contra vírus e worms que tentem explorar o HTTP. A instalação simples torna a bridge fácil de usar. Depois de configurar a máquina, simplesmente conecte-a a qualquer rede sem modificar a configuração dos clientes. ■

Mais Informações [1] Proxy web Squid: http://www.squid-cache.org [2] Amir Alsbih, “Arma secreta: Rootkits para o kernel Linux 2.6”, Linux Magazine 22, Agosto/2006, pg. 28

[3] GR-Security: http://www.grsecurity.org [4] Tcpdump: http://www.tcpdump.org [5] ClamAV: http://www.clamav.net [6] DansGuardian: http://dansguardian.org

O autor Tobias Eggendorfer é consultor e professor freelancer de TI, baseado em Munique. Ele não aprecia reconfigurar seu próprio hardware, e espera que novos recursos de segurança suportem a integração fácil e transparente. Apesar de a bridge com Squid ter como objetivo proteger sistemas Windows®, que Tobias normalmente não usa, ele não pretende baixar e testar programas malévolos para ver se rodam no Qemu.

http://supertuxbr.blogspot.com 72

http://www.linuxmagazine.com.br


Python | PROGRAMAÇÃO

A serpente que morde a própria cauda

PROGRAMAÇÃO

Metalinguagem Com a chegada do Ruby On Rails, os programadores estão redescobrindo um conceito não muito moderno, mas surpreendente...Programas que modificam programas? por Jose Maria Ruiz

A

s linguagens dinâmicas (nas quais isso é melhor explicarmos um pouco o tipo de variável é definido no sobre seu significado. Podemos traduzir tempo da execução) sempre fo- “meta” como “a nível superior”. Metaram relegadas a linguagens de segun- linguagem é a linguagem usada para da classe. Isso se deve ao costume de falar da linguagem. A metalinguagem serem empregadas para fazer o traba- está um nível acima da linguagem que lho sujo e resolver algum problema descreve. Se digo “a palavra carro é um rapidamente, já que para programar substantivo”, então estou empregando algo mais sério sempre se utiliza C, o português para falar do português, C++ ou Java. e em “a palavra car é um substantivo” Mas isso não é bem verdade. As estou empregando o português para linguagens dinâmicas possuem certas falar do inglês. Portanto, o português vantagens sobre as estáticas, vantagens é metalinguagem em ambos os casos. essas que as estáticas estão constanteA metaprogramação consiste de programas que podem modificar a si mesmente tentando imitar. Uma dessas vantagens é a metapro- mos ou outros programas. Dito assim, gramação. É uma palavra estranha, por pode parecer um pouco complicado.

Mas imaginemos por um momento que fosse possível trocar elementos do programa em tempo real, não dados, mas o programa em si. Podemos imaginar um objeto que “fale” certo protocolo (por protocolo entendemos um conjunto de métodos que permitem interagir com o objeto, por exemplo, para guardá-lo em disco rígido). A certo momento, surge a necessidade de que esse objeto “fale” esse protocolo, mas o projetista do programa não levou essa possibilidade em conta, de modo que isso pode ser resolvido envolvendo-se o objeto em outro objeto, ou herdando-o de uma superclasse que responda a esse

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

73


PROGRAMAÇÃO | Python

File “<stdin>”, line 1, in ? AttributeError: Classe1 instance has no ➥ attribute ‘imprime’ >>>

instância antes da modificação e adicionarmos uma função à classe depois? Veja o exemplo 2. A modificação da classe afeta todas as O objeto2 não tem imprime! Logo, suas instâncias, passadas ou futuras. percebemos que a modificação do Todas essas características nos abrem objeto só afetava ele mesmo, e não o um amplo leque de possibilidades. restante das instâncias da Classe1. E Podemos modificar hierarquias de como é possível conferir coisas a uma objetos na hora da execução para que instância? Como o Python representa as possam se adaptar a novos protocolos. instâncias como dicionários, as seguin- Não vamos prestar muita atenção às tes assinaturas são equivalentes: metaclasses em si – vamos vê-las em um próximo artigo –, mas sim em um objeto.imprime = imprime padrão de desenho que nos permitirá objeto[‘imprime’] = imprime adicionar funcionalidade de maneira controlada – estamos falando do paAlém disso, as funções se compor- drão Decorator. tam no Python da mesma forma que os dados; podem ser associadas a variáveis e passadas como parâmetros. Podemos modificar o comportamento das instâncias, mas o que acontece Para prosseguirmos, é importante com as classes? entendermos como funciona a pas>>> Classe1.imprime = imprime sagem de parâmetros no Python. No >>> objeto3 = Classe1(“Ola”) Python, os parâmetros de uma função >>> objeto3.imprime() são na verdade uma lista. O interOla pretador recolhe automaticamente >>> os parâmetros e gera uma lista com eles. Isso é indicado no cabeçalho E também podem ser modificadas da função mediante um * diante do automaticamente. Não só isso, mas, a nome da lista que guarda os parâmepartir desse momento, qualquer instân- tros. As funções aceitam ainda um Nos míticos laboratórios da Xerox em Palo cia terá acesso a essas modificações. O dicionário como segundo parâmetro, Alto, Gregor Kiczales e outros desenvolve- que acontece se tivermos declarado a indicado mediante a aparição de ** ram, em meados dos anos 90, o conceito MOP (Meta Object Protocol). Exemplo 1: Começando A idéia é definir todo o mecanismo necessário para se trabalhar em objetos 01 >>> class Classe1: 02 ... def __init__(self,valor): em dois níveis. No primeiro, o meta03 ... self.valor = valor nível, são usadas as formas primitivas 04 ... def imprime(self): da linguagem para se criar objetos. No 05 ... print self.valor segundo, usa-se esse mecanismo (criar 06 ... classes, instâncias, métodos...) para 07 >>> objeto = Classe1(“1”) 08 >>> objeto.imprime = imprime voltar a defini-lo novamente. 09 >>> objeto.imprime(objeto) Qual é o objetivo? Se uma classe 10 1 estiver definida com o uso de classes, 11 >>> então você poderia modificá-la, visto que ela não passa de uma estrutura de dados que está “viva” durante a Exemplo 2: Declaração antes da modificação execução do programa. Isso possibilita coisas muito interessantes. Veja 01 >>> class Classe2: o exemplo 1. 02 ... def __init__(self,valor): 03 ... self.valor = valor O que aconteceu aqui? Definimos 04 ... uma classe e uma função, criamos uma 05 >>> objeto4 = Classe2(“Ola”) instância da classe e adicionamos a função 06 >>> def imprime(self): à instância da classe. O que acontecerá 07 ... print self.valor se criarmos um segundo objeto? 08 ... protocolo. Agora, se essa ocorrência se repete com muitos protocolos, então a hierarquia de herança das classes começa a se complicar desnecessariamente, com código repetido em muitas ramificações. O C++ tenta chegar a uma solução através do uso de templates (modelos). O Java, por sua vez, fornece ao programador a reflexão (os objetos podem fazer perguntas a outros objetos) e, desde o Java 1.5, as classes genéricas, algo parecido com os templates do C++. Na chamada hierarquia ou extensão horizontal, não herdamos a não ser que façamos uso das ferramentas que estão ao lado, e não “acima” como as superclasses. Portanto, esse tipo de extensão não requer que a hierarquia dos objetos seja aumentada com novas classes. Mesmo assim existe outra possibilidade. E se pudéssemos adicionar métodos imediatamente a nossos objetos? Dessa maneira, quando um objeto precisar falar certo protocolo, simplesmente adiciona a si mesmo os métodos necessários, digamos, assim como decoramos as árvores de Natal, colocando bolas e enfeites conforme desejamos.

Características de uma função

Conceitos básicos

>>> objeto2 = Classe1(“2”) >>> objeto2.imprime(objeto2) Traceback (most recent call last):

09 10 11 12

>>> Classe2.imprime = imprime >>> objeto4.imprime() Ola >>>

http://supertuxbr.blogspot.com 74

http://www.linuxmagazine.com.br


Python | PROGRAMAÇÃO

Exemplo 3: Decorator escreveNome 01 02 03 04 05 06 07 08 09 10 11 12 13 14

def escreveNome (f): def decorator (*args, **kwds): print “==> Executando”, f.func_name f(*args, **kwds) return decorator @escreveNome def funcao(): print “Oi, eu sou a funcao” @escreveNome def soma(a,b): print “Resultado:”, a+b

para os argumentos com nome. Dessa maneira, qualquer função aceita na verdade os parâmetros: function(*args. **kwdargs)

Costuma-se usar os nomes args e para nomeá-los. É importante saber disso para podermos criar funções sem termos idéia sobre quais parâmetros elas aceitarão, visto que no final todas as funções aceitam esses dois parâmetros na verdade.

kwdargs

Decorator

O que é um Decorator? É um padrão de desenho do famoso livro “Design Patterns”. Adquiriu sua fama por ter dado nome a várias técnicas já estabelecidas. Ele as reuniu e criou o conceito de padrão de desenho: um conjunto de objetos e comportamentos definidos que surgem com certa facilidade no desenvolvimento de qualquer sistema de complexidade mediana. No mundo da programação orientada a objetos, são famosos muitos desses padrões de desenho – o Observer e o Proxy são alguns exemplos. O padrão Decorator é menos conhecido porque realiza uma tarefa um pouco complicada de se entender, e portanto nem todo mundo se atreve a trabalhar com ele. O Decorator modifica funções. Pode-se dizer que ele recolhe nosso código e insere comportamentos adicionais. Seu nome vem do fato de podermos vê-lo como um algoritmo que, na árvore de código, vai acrescentando novo código de forma automática. É semelhante ao que ocorre quando vemos em uma página web sempre o mesmo menu, na mesma posição, apesar de mudarmos de uma seção

para outra. A “decoração” envolve o conteúdo da página. O mundo do Python viveu uma espécie de guerra entre grupos diferentes de desenvolvedores, por tentarem encontrar a melhor sintaxe para esse padrão. A comunidade Python é quase obsessiva a respeito de sua sintaxe, querendo que ela seja clara e concisa. Por fim, impôs-se a seguinte sintaxe: @decorator def função(): o_que_for

@decorator é o nome do Decorator que iremos empregar. O Decorator sempre deve ter à frente uma arroba, e deve ser seguido pela ação a ser decorada. Visto assim, não parece muito útil, mas imaginemos uma função, por exemplo VisitaWeb, à qual adicionamos o seguinte Decorator: @gravar_log def VisitaWeb(): ...

Ela guardaria em um log a informação de cada visita, com cada execução de VisitaWeb(), e isso sem ter que acrescentar novas funcionalidades a VisitaWeb(), e ainda por cima podendo usar @gravar_log em outros lugares, como por exemplo em Compra/Efetuada() ou VisitaPerigosa. Podemos adicionar funcionalidades a códigos já existentes sem modificar nada, simplesmente acompanhando o código de uma linha que indica qual Decorator aplicar. Mas a coisa não acaba aí. Podemos adicionar Decorators: @verificar_acesso @gravar_log def VisitaWeb(): ...

Será que existe alguma mágica ou vodu por trás de algo tão útil? Por que isso não é ensinado em qualquer segundo parágrafo de tutorial de Python? É porque, até há pouco tempo, era extremamente complexo adicionar Decorators no Python, e mesmo com as últimas melhorias ainda continua sendo um processo complexo.

Criar um Decorator

Um Decorator é uma função que aceita uma função como parâmetro e devolve como resultado uma função. Um pouco difícil, não? É claro que sim, por isso começamos com um exemplo mais simples. Queremos um Decorator que escreva na tela o nome da função sobre a qual ele pode ser aplicado, a cada vez que ela for executada. Um Decorator não deixa de ser uma função Python como qualquer outra. Vejamos sua definição e seu resultado no exemplo 3. escreveNome aceita uma função e cria outra que fornecemos ao chamar decorator. O nome dessa última função não importa, já que ele será descartado, de modo que podemos usar sempre o mesmo nome para distingui-la. O objetivo dessa função é ser devolvida e entrar no lugar da função original. A função interna decorator adiciona o código ou as operações que sejam necessárias e executa em algum momento (ou não, dependendo do que queiramos) a função original. Como podemos observar na execução do exemplo 4 , agora, cada vez que for executado função ou soma, é impressa uma mensagem na tela. Se quisermos eliminar esse comportamento, temos apenas que tirar @escreveNome da definição da função em questão. ➧

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

75


PROGRAMAÇÃO | Python

Exemplo 4: Uma amostra de Decorator 01 02 03 04 05 06 07

>>> soma(1,2) ==> Executando soma Resultado: 3 >>> funcao() ==> Executando funcao Oi, eu sou a funcao >>>

Exemplo 5: Função fechar 01 def fechar(valor): 02 def incrementa(quantidade): 03 return quantidade + valor 04 return incrementa

Programação avançada Agora vamos ver uma das construções mais poderosas que uma linguagem de programação pode ter. É anterior aos objetos e, mesmo assim, às vezes muito mais simples e poderosa. Já fizemos uso dela sem perceber. Mas onde? Quando? Por quê? Quem? Vamos nos fixar novamente no exemplo 3. Há algo estranho aí. E não é fácil de identificar – isso porque são apenas cinco linhas de código! A grande pergunta é “o que acontece com o f em decorator? Nada?” Vamos repassar o que sabemos das variáveis. Apesar do fato de que uma função possa parecer uma variável estranha a algum leitor, isso é algo que os programadores de C e C++ costumavam fazer através do uso de ponteiros para funções. f é uma variável que faz referência a uma função. Visto assim, não há nada de especial; o estranho é que f é o parâmetro recebido por escreveNome, e depois criamos a função decorator e saímos. Mas existem vários Decorators anônimos, pelo menos um para soma e outro para funcao. Nesse momento, f em outras linguagens de programação não apontaria para nada, e estaria no limbo das variáveis. Vejamos um exemplo para entender isso. No exemplo 5, definimos um Decorator que nomeamos de maneira extremamente original: fechar. Esse Decorator gera uma função que faz uso do parâmetro que lhe passamos, o parâmetro valor. Quando a função faz uso de valor, captura o seu conteúdo! A partir desse momento, essa função fará uso do conteúdo que valor possui durante a sua definição. É estranho? Na verdade, em um primeiro momento sim, a não ser que o leitor tenha conhecimentos de Lisp ou Scheme.

Não em vão, Peter Norvig (ver [1]) diz que Python é Lisp com outra sintaxe. Mas cuidado, não acredite que valor seja convertida em uma constante. Senão, a função fechar ficaria trancada num círculo. É como se junto a fechar houvesse uma variável chamada valor, à qual fechar possa fazer referência como se fosse global, mas “só para ela mesma”! No exemplo 6 podemos ver uma demonstração de interação com fechar. É importante perceber os fechamentos, visto que nos permitem gerar funções que guardam valores. E isso é vital para os Decorators.

Dois Decorators são melhores que um Para terminar, vamos fazer algo de útil com essa técnica. Geralmente se fala dos Decorators em termos de serviços que gostaríamos de acrescentar ao código. Os mais típicos são criar registros de uso, de segurança, sistemas de verificação ou persistência. Também se fala muito em multimétodos. Esses últimos consistem de algo parecido à sobrecarga de C++ ou Java, isto é, poder definir muitas funções que possam ser executadas com base nos tipos ou quantidade de parâmetros, mas que todas tenham o mesmo nome. Um exemplo poderia ser a função soma(a,b). Não é a mesma coisa somar inteiros ou

pontos flutuantes, fracionários ou números complexos. Na verdade, cada tipo de número requer sua própria soma. Nós vamos criar dois serviços de exemplo. Um será para facilitar a depuração de um programa, o outro será um verificador de valores. É preciso explicar um pouco sobre o verificador. Vamos imaginar uma situação na qual precisamos calcular um valor muito complexo duas vezes, mas o cálculo é sempre o mesmo, e sempre devolve o mesmo valor para os parâmetros dados. Ou, olhando para a Web, imaginemos que geraremos a mesma página e que somente a atualizaremos a cada intervalo de tempo determinado. Fazer algo assim requer muito trabalho: temos que capturar a requisição, determinar se os parâmetros para o cálculo ou página web form modificados, ou se ocorre algum evento (já se passaram 5 minutos desde que a função foi invocada?), e então devolver o valor ou calculá-lo novamente. Necessitamos ao menos de um objeto, e o que é pior: cada função que requeira essa propriedade deverá implementá-la de novo ou herdar de um objeto que a implemente. Mas em Python não temos herança múltipla, de modo que acabaremos com duas versões de cada objeto: Pagina e ChecaPagina, Cálculo e ChecaCálculo. Os Decorators solucionam esse problema de uma forma genérica e muito elegante. Vamos nos fixar no exemplo 7. São definidos dois Decorators: verifica e debug; o segundo é simples e se assemelha muito ao exemplo 6, simplesmente imprimindo informações sobre a função (seu nome, parâmetros e resultado) com cada execução da mesma. Já verifica realiza mais trabalho. A chave é a variável verificacao, que é um dicionário onde armazenamos os parâmetros que são passados para a função em questão. verifica está dentro do envelope que criamos com o Decorator. Quando recebemos os parâmetros, tentamos encontrar o valor da função no dicionário verificacao. Se não aparecerem, então temos que calculá-los e armazená-los usando os parâmetros como chave. Mas

Exemplo 6: Prova de fechar 01 02 03 04 05 06 07

>>> >>> >>> 4 >>> 9 >>>

a = fechar(3) b = fechar(8) a(1) b(1)

http://supertuxbr.blogspot.com 76

http://www.linuxmagazine.com.br


Python | PROGRAMAÇÃO

Exemplo 7: Decorators debug e verifica

se eles aparecerem, simplesmente devolvemos o valor associado. Dessa maneira, podemos verificar resultados. A maior complicação, fora tudo o que falamos neste capítulo, se deve ao fato de que os dicionários não podem ser usados para gerar um hash, e kwargs é um dicionário. Se um objeto não puder ser reduzido a um hash, então não pode ser usado como chave em um dicionário. Por isso temos que gerar uma tupla a partir de kwargs e, a partir dela, gerar um hash. Seguindo essa dinâmica, faríamos o mesmo com args, mas isso não é necessário. Quando se tenta acessar um valor em um dicionário e esse valor não existe, o dicionário lança uma exceção KeyError (erro na chave passada). Dessa forma, tentamos o acesso dentro de uma estrutura try e capturamos essa exceção, que nos indicará quando temos que calcular o valor. Como exemplo, na classe Calculadora, fazemos uso dos Decorators de maneira que não somente verificamos, mas ainda mostramos informação de depuração para a função sobre a qual os aplicaremos.

NOME DA SEÇÃO

01 def debug(f): 02 nome = f.func_name 03 def envelope(*args,**kwargs): 04 resultado = f(*args,**kwargs) 05 print “Chamando”,nome,”com”,args,kwargs,”e devolvendo”,repr(resultado) 06 return resultado 07 08 return envelope 09 10 def verifica(f): 11 # Fecha 12 verificacao = {} 13 def envelope(*args,**kwargs): 14 chave_1 = hash(args) 15 chave_2 = hash(tuple(kwargs.iteritems())) 16 try: 17 resultado = verificacao[chave_1,chave_2] 18 print ‘****VERIFICACAO****’ 19 except KeyError: 20 verificacao[chave_1,chave_2] = f(*args,**kwargs) 21 resultado = verificacao[chave_1,chave_2] 22 return resultado 23 return envelope 24 22 class Calculadora: 26 def __init__(self.valor): 27 self.valor = valor 28 29 def getValor(self): 30 return self.valor 31 32 @debug 33 @verifica 34 def soma(self.valor): 35 resultado = self.valor + valor 36 return resultado

Decorando projetos

O conceito de Decorators é semelhante ao da agora famosa Aspect Oriented Programming (AOP). Com o passar dos anos, os estudiosos vão se dando conta de que a Programação Orientada a Objetos não é a melhor solução para todos os problemas, e pode chegar a ser desvantajosa. Os Decorators não são nada mais que outro dos mecanismos de extensão horizontal que estão começando a fazer eco na caixa de ferramentas dos melhores programadores. E é por isso que o Python os incorporou. ■

Mais Informações [1] http://www.norvig.com

O autor José Maria Ruiz está finalizando seu projeto de conclusão de curso de Engenharia Técnica em Informática de Sistemas e está há mais de sete anos usando e desenvolvendo Software Livre, há dois anos no FreeBSD.

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

77


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

www.microhard.com.br

✔ ✔ ✔

✔ ✔

TurboSite

Belo Horizonte

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

0800 702-9004

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

✔ ✔ ✔ ✔ ✔

✔ ✔

✔ ✔ ✔ ✔

Rio de Janeiro

Rio Grande do Sul

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

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

51 3331-1446

Lnx-IT Informação e Tecnologia Porto Alegre

✔ ✔

✔ ✔

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

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

✔ ✔ ✔ ✔

✔ ✔ ✔ ✔ ✔ ✔

http://supertuxbr.blogspot.com 78

http://www.linuxmagazine.com.br


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

Oracle do Brasil Sistemas Ltda. São Paulo

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

11 5189-3000

www.oracle.com.br

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

www.e-provider.com.br

Red Hat Brasil

São Paulo

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

11 3124-6000

www.latinsourcetech.com.br

Samurai Projetos Especiais

São Paulo

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

11 5097-3014

www.samurai.com.br

✔ ✔

SAP Brasil

São Paulo

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

11 5503-2400

www.sap.com.br

✔ ✔

Simples Consultoria

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

Rua Alexandre Dumas, 1711, 10º andar, Ed. Birmann 11 – 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

✔ ✔

http://supertuxbr.blogspot.com Linux Magazine #25 | Novembro de 2006

79


SERVIÇOS

Calendário de eventos Evento

Data

Local

Website

Conisli 2006

3 a 5 de Novembro

São Paulo, SP

www.conisli.org

YAPC::SA::2006

3 a 5 de Novembro

São Paulo, SP

perl.org.br/bin/view/YAPC/SA2006

International PHP Conference 2006

5 a 8 de Novembro

Frankfurt, Alemanha

www.phpconference.com

Web 2.0 Conference

7 a 9 de Novembro

Califórnia, EUA

www.web2con.com

Linux Day Limeira

9 de Novembro

Limeira, SP

www.linuxday.com.br

Linux New Media Awards

11 de Novembro

Colônia, Alemanha

www.linuxnewmedia.com

2º Encontro On-line de Educação e Software Livre

13 a 24 de Novembro

on-line

bine.org.mx/edusol/e2006/ convocatoria.php

Linux Day Mogi Mirim

16 de Novembro

Mogi Mirim, SP

www.linuxday.com.br

Latinoware

16 e 17 de Novembro

Foz do Iguaçu, PR

www.latinoware.org/2006

Linux Day Jaguariúna

18 de Novembro

Jaguariúna

www.linuxday.com.br

3º Encontro Nacional de Usuários de Slackware

18 de Novembro

São Paulo, SP

piterpunk.info02.com.br/evento

1 Fórum de Software Livre do Tocantins

18 a 20 de Novembro

Palmas, TO

www.sol-to.org

Seminário Temático sobre Cultura Digital

21 a 23 de Novembro

Araraquara, SP

fcbs.web@gmail.com

Hackers to Hackers Conference

24 a 26 de Novembro

São Paulo, SP

www.h2hc.org.br

PHP Conference Brasil

1 e 2 de Dezembro

São Paulo, SP

www.temporealeventos.com. br/?area=13&tipo=1&id=1334

Reunião ICANN

2 a 8 de Dezembro

São Paulo, SP

www.icann.org/minutes

Estação VoIP 2006

5 e 6 de Dezembro

Curitiba, PR

www.estacaovoip.com.br

Índice de anunciantes Empresa

Pág.

4Linux

15

BRConnection

71

Estação VOIP

77

Green

65

IBM

09

Intel

13

Intel IDF

02

Itautec

07

Linux World

81

Novel

55

Plugin

17

Red Hat

11

Samsung

84

Siweb

53

SnapIT

43

Thin Networks

59

http://supertuxbr.blogspot.com 80

http://www.linuxmagazine.com.br


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

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

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

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

����������

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

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

���������

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

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

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

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

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

���������

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

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

��������

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

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

�������

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

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

������

�����������

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

����������

�����������

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

������

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

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

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

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

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

������

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

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

����������

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

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

��������

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

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

��������

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

http://supertuxbr.blogspot.com �����������������������������������������������������������������

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


Dezembro de 2006

PREVIEW

Na Linux Magazine #26… DESTAQUE

Web 2.0

A Web está passando por uma transformação, e toda uma nova geração de serviços e tecnologias está interagindo para oferecer um ambiente melhor e mais versátil. Na próxima edição, mostraremos as recentes inovações da Web.

SYSADMIN

Descreveremos como criar páginas web interativas com AJAX e o Google web toolkit. Vamos também examinar alguns aplicativos populares para criar wikis, e mostraremos como construir um website com o ambiente de programação Aptana. ■

Samba antivírus Servidores Samba ao redor do planeta servem arquivos em redes mistas com clientes Windows®, Linux, Unix e Mac. É possível proteger tanto seus clientes quanto servidores através da integração do Samba a softwares antivírus? Vamos mostrar como fazer isso. ■ TUTORIAL

Port knocking

Portas abertas não oferecem segurança alguma. Um porteiro (ou firewall, no caso das redes de computadores) bem treinado pode identificar todos que tentam entrar, e é uma boa medida de segurança. Porém, mais seguro ainda é usar uma “batida” secreta para que a porta se abra só para você, e logo em seguida se feche novamente. É isso que o Port Knocking nos permite fazer. Mostraremos como aplicar esse conceito a firewalls baseados no Iptables, de forma bastante prática. ■

Dezembro de 2006

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! !

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://supertuxbr.blogspot.com 82

http://www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


11/2006

www.samsung.com.br

LINUX NA GLOBO p.21 Sergio Amadeu e Julio Neves entrevistados no Programa do Jô

DIRECIONANDO INVESTIMENTOS p.26 Linux em agência de fomento a pequenas empresas

CEZAR TAURION p.28 Código Aberto impacta indústria do software

A REVISTA DO PROFISSIONAL DE TI

CRIPTOGRAFIA SISTEMAS CRIPTOGRÁFICOS SEGURANÇA DE HDS, CDS E DVDS UDEV SQUID

SISTEMAS DE

CRIPTOGRAFIA

p.29

SISTEMAS DE ARQUIVOS CRIPTOGRAFADOS OFERECEM UMA PODEROSA PROTEÇÃO PARA A ATUAL CULTURA DA COMPUTAÇÃO CASUAL. MANTENHA SEUS DADOS A SALVO DE OLHOS CURIOSOS E CRIMINOSOS VIRTUAIS. » Sistemas de arquivos criptográficos: qual o melhor? p.30 » Cifragem de discos rígidos: proteja todo o sistema p.38 » Criptografia avançada de CDs e DVDs p.44

UDEV p.56 O fantástico sistema de administração de hardware do Linux

BRIDGE COM SQUID p.68 Use um proxy e filtre conteúdo ao mesmo tempo – sem reconfigurar nada!

BASH XARA LX BOINC

http://supertuxbr.blogspot.com

9 771806 942009

# 25

Os discos rígidos SATA Samsung têm a melhor performance e a maior confiabilidade do mercado. Além disso, gerenciam melhor a temperatura e são mais resistentes e silenciosos. Afinal, a Samsung busca velocidade em tudo, até na inovação tecnológica.

R$ 13,90 € 7,50

00025

Linux Magazine

Você entra com os dados, a gente com a velocidade. HDDs SATA Samsung.

# 25 Novembro 2006

#25 11/06

VEJA TAMBÉM NESTA EDIÇÃO: » SLED 10: todas as novidades p.52 » Temas para o terminal com Bashish p.66 » Monte um grid com o BOINC p.61 » Xara LX: desenhos vetoriais 3D p.49 » Programação: Meta-python p.73 WWW.LINUXMAGAZINE.COM.BR

COM DVD SLACKWARE 11 PARA ASSINANTES


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.