quarta-feira, 27 de janeiro de 2010

Limpando Virus de Partições Windows com ClamAV

Imagine os seguintes cenários:

1- Você tem uma máquina com 2 partições, uma Windows e outra Linux. Forçado a usar o horripilante Windows, você pega um virus... e agora, o que fazer??
2- Seu amigo te liga desesperado: a máquina Windows dele pegou um virus e agora está funcionando muito mal... e agora, o que fazer??

Não se desespere!! O linux tem uma solução para isso: um anti-virus eficiente, fácil de usar, gratuito e leve chamado ClamAV. O ClamAV foi desenvolvido para servidores e é capaz de verificar partições inteiras, arquivos de rede, arquivos anexados em e-mail antes de serem entregues, dentre outras funcionalidades. Claro que o Linux não pega virus, mas o Windows pega, e, muitas vezes, o ClamAV pode salvar a sua pátria!! Mas minha máquina não é um servidor!! Calma... o ClamAV é flexível o suficiente para funcionar bem em máquinas simples e até laptops!!

  • Solução do Problema
Para o cenário 1, você tem que entrar na partição Linux, que vai estar intacta, e instalar o ClamAV. Para o cenário 2, você pode dar um boot com o DVD do Ubuntu (ou qualquer outra distro que inicie pelo CD, DVD ou pendrive), que vai carregar o Linux na memória sem alterar o HD (todo tomado de Windows e viri), e instalar o ClamAV. Note que, mesmo se a máquina não possui Linux, é possível dar um jeito!!

  • Instalando o ClamAV

É simples e depende de sua distribuição. Na maioria das vezes, ele existe no repositório e pode ser instalado com seu programa de instalação normal ou um gerenciador de pacotes, como o Synaptic. Em distribuições baseadas em Debian, como o Ubuntu, basta digitar, como root:

apt-get update
apt-get install clamav

Pronto!! Tudo instalado!!

  • Atualizando o Banco de Dados

Pode não ser necessário, mas geralmente você tem que buscar os dados mais brilhantemente novos de viri que o pessoal do ClamAV conseguiu identificar e disponibilizar. Quem atualiza estes dados é uma ferramenta chamada freshclam. Para atualizar, basta simplesmente digitar o nome da ferramenta, como root:

freshclam
ClamAV update process started at Wed Jan 27 09:45:08 2010
main.cld is up to date (version: 51, sigs: 545035, f-level: 42, builder: sven)
daily.cld is up to date (version: 10335, sigs: 158617, f-level: 44, builder: guitar)

Note que, como o ClamAV é feito para servidor, provavelmente, ao instalar, ele colocou o freshclam como um serviço. Se isso aconteceu, a atualização será feita automaticamente, sem você sequer perceber. Para verificar se ele entrou como serviço, basta digitar:

ps -e | grep fresh
2573 ? 00:00:00 freshclam

Viu?? Tá ele lá, no PID 2573, rodando!! Mas, como eu sei que ele está mesmo baixando atualizações?? Bom, você não precisa ser chato a este ponto, mas tem como descobrir, lendo o arquivo de configuração do freshclam e procurando a linha que informa quantas verificações ele deve fazer por dia (que deve ser limitada a um número de 1 a 50)... O arquivo pode estar no /etc/freshclam.conf ou no /etc/clamav/freshclam.conf, dependendo de sua distribuição. Vamos fazer isso??

cat /etc/clamav/freshclam.conf | grep Checks
Checks 24

Beleza!! O camarada verifica 24 vezes por dia se há atualizações!! É exatamente uma verificação a cada hora. Para minha máquina, isto está muito bom, mas você pode colocar o valor que quiser. Lembre-se de que, mudando o arquivo de configuração, é preciso reiniciar o serviço (como root!!), para que ele leia a nova configuração:

/etc/init.d/clamav-freshclam restart
Stopping ClamAV virus database updater: freshclam.
Starting ClamAV virus database updater: freshclam.

Claro que tudo isso pode ser feito também com as opções de linha de comando do freshclam... sinta-se à vontade!!

  • Finalmente, Limpando o virus!!

É preciso que seu sistema Linux tenha acesso à partição Windows... então, você pode montá-la manualmente, com o comando "mount", ou deixar que o sistema a monte sozinho. Dependendo do seu Kernel e da sua distro, a montagem automática pode acontecer ou não. Suponhamos que sua partição infectada esteja em /mnt/hda1. Para limpar a famigerada, basta digitar, como root:

clamscan -r --remove=yes /mnt/hda1

Bom, o que isso faz??
1- clamscan é o comando do clamav que verifica um arquivo ou diretório contra viri conhecidos.
2- a opção "-r" significa que a verificação deve ser executada recursivamente, ou seja, em todos os diretórios, arquivos, e em cada subdiretório e seus arquivos, até o último nível. Ideal para verificar realmente TUDO da partição!! Vai demorar bastante, mas vale a pena!!
3- --remove=yes instrui que, achando um arquivo infectado, ele deve ser apagado. É preciso digitar isto porque, por padrão, o clamscan gera apenas um relatório mas não mexe em nada. Como a gente quer expurgar mesmo o virus, então vamos mandar apagar logo tudo que está infectado.

Enquanto ele verifica, você pode continuar usando o sistema normalmente. No terminal, o clamscan vai imprimir um por um os arquivos verificados e, ao final, vai gerar um relatório completo sobre o que foi feito.
Bom, espero ter ajudado!! Boa sorte e, claro, use Linux!! Não terá mais problemas com virus novamente!! Ah, e o mais importante de tudo: COMENTE!!! :-)

terça-feira, 26 de janeiro de 2010

Os Modos de Configuração do SVN (Server Configuration)

O SVN (ou Subversion) é um controlador de versões dentre os mais populares, que pode ser usado não só por desenvolvedores, mas por qualquer um que queira fazer cópias de segurança versionadas de seus arquivos de trabalho, quaisquer que sejam estes.
Este artigo explana sobre os 3 modos de configuração do servidor. Note que nossa intenção não é ensinar como se configura cada modo detalhadamente, mas apenas descrever e caracterizar o seu uso, para contribuir na escolher mais apropriada. Há um outro artigo contendo um tutorial de configuração mais avançado, que pode ser acessado aqui.

  • Modo Serviço
Este é o modo mais simples e fácil de configurar. Muito possivelmente deve ser o primeiro a ser testado, para quem está configurando o subversion pela primeira vez. Neste modo, o SVN entra em cena como um serviço (deamon) e fica rodando ininterruptamente, esperando por requisições.

Suas principais características: fácil e rápido de configurar, funciona mais rápido, não usa senhas nem configuração de contas no SVN.

Como funciona?
O administrador inicia o SVN no boot do linux, como um serviço, ou digitando o comando:

svnserve -d

(-d de deamon, para iniciar o serviço). Lembre-se de liberar no firewall a porta padrão: 3690, ou especifique outra porta, com as opções --listen-port= e --listen-host= no servidor e no cliente svn.
O usuário deve ter uma conta no sistema linux e vai usar a sua conta para acessar o serviço. O acesso deve usar o protocolo svn://, como no exemplo:

svn checkout svn://maquina/opt/svn/projeto

Desvantagens: todo mundo que vai usar precisa ter uma conta no sistema!! Além disso, este modo expõe o caminho do repositório, não tem encriptação ou qualquer forma de segurança, não exige senhas e está sujeito a problemas de permissão de arquivos e diretórios (que vira rapidamente um verdadeiro inferno, mesmo para poucos usuários!!).

Recomendamos para situações muito simples, como:
- Um usuário que quer manter um backup mais ou menos constante de algumas pastas de seu diretório de trabalho (em outra partição do HD ou outro local externo qualquer, como um HD externo ou um super pendrive) .
- Pode ser usado por grupos muito pequenos de desenvolvedores, como um grupo da faculdade, um grupo de colegas, etc., que resolveram montar um servidor a partir de uma máquina antiga para desenvolver um projeto único e específico, num prazo pequeno e temporário.

Nestes casos, não se perde tempo com configurações sofisticadas e não se deixa de aproveitar as incríveis vantagens de se ter o trabalho todo versionado. Não esqueça de fazer backups constantes e de procurar manter o repositório em um local diferente, como outra partição ou outro HD.


  • SVN sobre SSH

Esta é uma opção semelhante à anterior, porém com a segurança dos dados transmitidos e recebidos sempre sobre um túnel de SSH. Ela é possível porque o SSH permite que seja passado, via linha de comando, um argumento contendo o comando a ser chamado após aberta a conexão. Isto provoca um tunelamento: o SSH abre a conexão, roda imediatamente o comando (o svnserve -t) e fecha automaticamente a conexão, depois que o comando terminou de executar.
Nesta opção, o SVN não precisa ser carregado na memória como serviço. Na verdade, ele é carregado com a opção "-t" (de tunnel) e encerrado a cada requisição. Todo o tráfego de dados ocorre pela entrada e saída padrão, via SSH.
O servidor pode ser acessado pelo protocolo svn+ssh://, como no exemplo:

svn checkout svn+ssh://usuario@maquina/opt/svn/projeto
usuario@maquina's password: ******

Importante:
- É preciso liberar a porta do firewall para o SSH tornar-se acessível.
- O segredo deste modo está na configuração correta do SSH, que não poderá enviar mensagens de boas-vindas, pois, como o tráfego é via entrada e saída padrão, estas mensagens vão gerar erros de interpretação no SVN. Um artigo que escrevi ensinando a configurar o SSH para o SVN funcionar corretamente pode ser encontrado aqui.
- Todos os usuários precisam ter contas no sistema linux do servidor e, portanto, é preciso que se tome muito cuidado com as permissões do usuário para acessar o repositório.

Recomendamos para:
- Grupos de desenvolvedores, em locais diferentes, que acessam o servidor pela internet ou intranet.


  • Modo WebDAV: Usando o Serviço HTTP ou HTTPS do Apache
Este é o modo mais sofisticado, mais flexível e seguro, sendo largamente utilizado, especialmente para grandes projetos com inúmeros desenvolvedores.
Funciona da seguinte maneira: apenas um usuário vai realmente acessar o subversion. Este usuário será utilizado pelo servidor HTTP Apache, pois este servidor pode incluir um módulo que suporta o protocolo WebDAV/DeltaV, uma extensão do HTTP que permite a usuários autenticar-se e autorizar-se para manipular arquivos remotamente, de forma colaborativa. O usuário remoto apenas faz as chamadas HTTP para o Apache, que as traduz para o SVN. Este protocolo pode, obviamente, ser encriptado via SSL, tornando o tráfego mais seguro.

Vantagens:
- Não é preciso criar contas locais para os desenvolvedores;
- É possível se obter todas as vantagens do servidor HTTP Apache, como a encriptação via SSL, uso do Apache Logging e uma navegação gráfica pelo repositório na tela do navegador;
- O repositório pode ser montado como um dispositivo (drive) de rede;
- Pode ser integrado com LDAP, Active Directory, NTLM e congêneros.

Desvantagens:
- Certamente, é muito mais lento, devido à complexidade e à multiplicidade de camadas;
- É muito mais complexo de se configurar;
- Necessita de um servidor mais poderoso, para rodar o SVN e o Apache com todos os requisitos do WebDAV e suportando múltiplas Threads sem perda de desempenho (o módulo mod_dav_svn do Apache necessita do Apache 2).


  • Finalizando...

Uma excelente tabela comparativa entre os 3 modos pode ser encontrada aqui.

- Os seus dados estão sempre no repositório, e não no SVN. O repositório pode sofrer Dumps e backups, podendo ser acessado de diferentes formas e modos. Seus dados podem ser exportados e importados para outros repositórios. Portanto, começar usando um modo mais simples não o impede de, mais tarde, reconfigurar o SVN e migrar para o Apache com WebDAV.

- Preocupe-se em escolher o modo que mais se encaixa no seu contexto de trabalho: não vale a pena perder horas instalando e configurando corretamente o Apache 2, o módulo DAV e o SVN para um projeto muito pequeno e de poucos desenvolvedores. Por outro lado, um projeto grande e importante não pode ficar sujeito a criação de muitas contas no servidor, problemas de permissão e acessos sem segurança...

- O que quer que você faça: sempre mantenha rotina de backup e, se possível, use o repositório em outro local diferente da partição ou disco onde está instalado seu sistema. Se algo der errado e seu sistema de arquivos se corromper, os dados estarão sempre seguros...

Configurando o SVN com Tunelamento por SSH

O SVN, ou subversion, é um dos mais utilizados controladores de versão da atualidade. Muito estável, leve e seguro, (além de gratuito!) está presente nas redes de inúmeras importantes empresas e máquinas pessoais. É também um sistema flexível que permite diversos modos de operação; a saber: diretamente, via conta linux; acesso via túnel de SSH; acesso via HTTP e porta 80. Este artigo trata de todos os passos necessários para configurar seu SVN para ser acessado via tunelamente por SSH. Uma análise detalhada sobre as características, vantagens e desvantagens de cada um dos três modo pode ser encontrada no artigo anterior desta série, clicando-se aqui. Importa que leia um artigo nosso que trata da configuração do SSH para usar o SVN: Alterando ou Desabilitando as Mensagens do SSH.

  • Criando um Repositório do SVN

Os dados versionados, no SVN, ficam em repositórios. Você pode ter quantos repositórios quiser, e cada repositório pode ter vários diretórios (projetos) com arquivos e subdiretórios dentro. Cada repositório tem uma variável chamada revision, que é um inteiro, iniciado em 0 (zero) com a criação do repositório, e que sofre incremento a cada vez que uma nova revisão de um ou mais arquivos é adicionada ao repositório.
Para criar o repositório, basta digitar:

svnadmin create --fs-type bdb [nome_do_repositorio]

o argumento --fs-type indica qual tipo de sistema de arquivos vai ser utilizado. Existem dois tipos: o bdb e o fsfs. Os dois funcionam muito bem, mas têm pequenas diferenças. Sugiro o bdb (Berkeley DB). Você pode achar mais informações sobre este detalhe aqui.

Note que o seu repositório é um diretório com uma determinada estrutura:

$ ls
conf db format hooks locks README.txt

Não precisamos mudar quase nada aqui, apenas um diretório: o diretório "db".

  • Tornando o Repositório SVN Acessível

Agora que já temos o repositório, vamos seguir os seguintes passos para terminar a configuração:

1- É preciso que todos os usuários que vão usar o SVN estejam no mesmo grupo do sistema (UNIX Group). Vamos supor que nós criamos uma conta de usuário para cada usuário e um grupo chamado "svnusers", e adicionamos todos os usuários a este grupo. Foge ao escopo deste artigo ensinar como manipular contas no Linux, mas você pode achar (de forma bem detalhada!) tudo o que precisa bem aqui.

2- Agora vamos dizer para o sistema que o diretório "db" do nosso repositório e todos os seus arquivos devem estar liberados para leitura e escrita por todos os usuário do grupo "svnusers". Este passo é importantíssimo, pois evitará os famosos problemas de permissão de leitura e escrita... note que é importante fazer o procedimento não só para o conteúdo do diretório "db", mas também para o próprio diretório, pois, durante o uso, o svn tenta criar alguns arquivos novos no diretório "db".

Mudando o grupo dono do diretório "db" e seus arquivos:

cd [diretório_do_repositório]
chgrp svnusers db
cd db/
chgrp svnusers *

Adicionando-lhes permissão de leitura e escrita para o grupo "svnusers":

cd [diretório_do_repositório]
chmod g+rw db
cd db/
chmod g+rw *

Beleza, você venceu os passos principais!!!

  • Testando o Acesso ao Repositório SVN

1- Se você vai acessar o SVN pelo SSH, então é preciso que o SSH esteja instalado, rodando e configurado para receber conexões. É preciso também que ele não emita mensagens de boas-vindas, pois isto irá confundir o cliente do SVN, que vai interpretar o texto como erro de leitura de dados e vai interromper a conexão. Sobre como fazer isto tudo, já deixei um artigo prontinho e bem detalhado aqui.
2- Verifique o firewall de sua máquina para não bloquear nem a porta do SVN (a porta padrão é 3690, mas pode estar configurada qualquer outra porta) nem a porta do SSH (a padrão é a 22, mas igualmente pode estar configurada para qualquer outra).
3- Configure seu cliente SVN para acessar o repositório pelo seguinte endereço:

svn+ssh://[nome_ou_ip_da_máquina]/[caminho_completo_do_repositório]

Exemplos:

svn+ssh://192.168.0.1/opt/repositorio
svn+ssh://server01/var/bin/svnrepos/repositorio32
svn+ssh://maquina.dominio/opt/repositorionovo


Bom, encontrei muitos tutoriais incompletos sobre o assunto, e alguns que, embora completos, não detalhavam o porquê das coisas, dificultando a vida do administrador... assim, espero ter ajudado com este humilde tutorial!! Por isso... COMENTEM!!!!

domingo, 24 de janeiro de 2010

Instalando Fontes True Type da Microsoft no Ubuntu

Quem usa ou já usou o tenebroso Windows durante algum tempo deve ter se acostumado com algumas fontes de caracteres true type que vêm por padrão neste sistema, como a Arial e a Times New Roman. Algumas vezes, mesmo não tendo usado o Windows, o usuário precisa destas fontes para abrir corretamente alguns documentos gerados naquele sistema operacional. Bom... a notícia boa é que é possível instalar estas fontes no seu Ubuntu ou Kubuntu, de maneira rápida e fácil!! Basta seguir este procedimento:

Abra o terminal e, como administrador (root), digite:
apt-get install ttf-mscorefonts-installer

Este comando instala as seguints fontes true type:

  • Andale Mono
  • Arial Black
  • Arial
  • Comic Sans MS
  • Courier New
  • Georgia
  • Impact
  • Times New Roman
  • Trebuchet
  • Verdana
  • Webdings

Simples, fácil e rápido!! Agora seu Ubuntu pode abrir documentos que usam estas fontes, ou gerar novos com as mesmas. Elas funcionam em qualquer editor com suporte a fontes true type, como o Open Office ou o KOffice.
Ajudou?? Atrapalhou?? Confundiu?? COMENTE!! O Pajézinho agradece!!