Ontem tive um freela no qual a missão era instalar 10 servidores LAMP (Linux, Apache, MySQL, PHP) com o Ubuntu Server, PHPMyAdmin, OpenSSH-server e ProFTPd. Os 10 servidores deveriam ter IPs fixos diferentes.

A instalação do primeiro servidor foi tranquila, pois o Ubuntu Server já instala o LAMP e o SSH para você automaticamente. Após a instalação terminar, é bom deixar tudo atualizado:

sudo apt-get update && sudo apt-get dist-upgrade

Restando apenas instalar o PHPMyAdmin e o ProFTPd, o que foi trivial:

sudo apt-get install phpmyadmin proftpd

A dica aqui é criar no servidor uma partição pequena, como 5 Gibibytes, para que não seja necessário copiar 250GiB de zeros (ou qualquer que seja o tamanho do HD) à toa. É uma boa também criar partições pequenas para que você possa usar HDs de tamanhos diferentes. Depois, se necessário, você poderá redimensionar a partição com o cfdisk ou com o gparted.

Mas vamos ao que interessa. Para clonar as máquinas (que não precisam necessariamente ser idênticas, embora seja uma boa que sejam para evitar dores de cabeça) eu usei o ddrescue. Para tal, retiramos o HD da primeira máquina, plugamos na segunda (onde, como as máquinas tem só um HD, reconhecido como /dev/sda, o HD extra com o servidor a ser clonado será reconhecido como /dev/sdb. Se esse não for o caso, verificar com sudo fdisk -l) e bootamos com um LiveCD do Ubuntu (ou “LivePendrive”, usei o Ubuntu Netbook Remix que instalei no meu Acer Aspire One :) ). Nele, vamos usar o modo texto, então aperte Ctrl+Alt+F1 – ou abra um terminal gráfico em Aplicativos > Acessórios > Terminal, se preferir. Vamos começar criando uma tabela de alocações vazia no HD zerado (ou com qualquer outra coisa instalada) para que possamos fazer a cópia:

sudo cfdisk -z /dev/sda

No cfdisk, pressione W (Shift+w) e entre com yes para gravar uma tabela de alocação vazia. Note que isto apaga os dados do disco, então tenha certeza de que está usando o dispositivo certo. Agora instalaremos o ddrescue, que fará o trabalho da clonagem:

sudo apt-get install gddrescue

E vamos botar a cópia para rolar.

sudo ddrescue -v --max-size=5Gi /dev/sdb /dev/sda

Os parâmetros são: -v para um modo verbose (indicar a posição da cópia), --max-size=nXX para indicar o quanto copiar, (é opcional, mas se você tem HDs de um 1TB, você não irá querer que ele fique horas copiando um monte de zeros, não é mesmo?) e finalmente /dev/sdx e /dev/sdy são os dispositivos de origem e destino da cópia. Note que a ordem é importante, cuidado pois você pode acabar apagando o servidor original se for descuidado nessa parte. Agora podemos desligar a máquina, tirar o HD de origem da cópia e reiniciá-la.

Um problema que notei foi que mesmo usando máquinas com estritamente o mesmo hardware, a placa de rede é detectada de forma diferente (por exemplo, se na primeira máquina era eth0, na segunda será eth1). Isto é um problema para servidores, pois o script que carrega a configuração de IP fixo está amarrado numa determinada placa. Assim, vamos editar esse arquivo:

sudo nano /etc/network/interfaces

e corrigir as referências de eth0 para eth1. Eu não sei exatamente porque isto acontece, acredito que haja um bind do MAC Address da placa com o endereço da placa no Linux, mas não sei onde essa relação se encontra, e tive que fazer a mudança manualmente. Aproveite para trocar o endereço de IP fixo, se necessário.

Além disso, como a placa de rede não sobe, não há um IP válido, então se você colocou um bind-address diferente de localhost na configuração do MySQL, ele também não irá carregar. Assim, caso você tenha trocado o IP no passo anterior, edite o arquivo de configuração do trocando o bind-address:

sudo nano /etc/mysql/my.cfg

No mais, é isso. Demorei um bocado para configurar a primeira máquina, tava batendo cabeça com as permissões do FTP, umask etc., me enrolei um pouco com o mod rewrite e o htaccess do Apache, e também na clonagem da primeira máquina eu não conseguia entender porque a placa de rede não estava subindo, mas depois que notei o problema e estabeleci estes passos, a clonagem das máquinas e sua posterior configuração ocorreu de maneira muito rápida, gastando menos de 10 minutos por servidor.

Antes de terminar, agradeço ao Pedro Marins que me indicou o freela e a possibilidade de aprender sobre este assunto. Valeu PNC!

Tags:, , , , , , , , , , ,

Comments Nenhum comentário »

No dia 19 de junho de 2009 foi lançada a versão do portal de mapas livres OpenStreetMap.org em português. Para conferir, basta acesar o site http://osm.org. Caso o navegador esteja em inglês, pode ser necessário alterar as preferências de idiomas.

O esforço de tradução foi desenvolvido pela comunidade brasileira de mapas livres, que está trabalhando para aumentar o número de colaboradores no país, com o objetivo final de produzir mapas de alta qualidade e de uso livre para os cerca de 5564 municípios do Território Nacional.

É possível conhecer mais sobre o projeto no endereço abaixo:

http://tinyurl.com/osmbrasil

Tags:,

Comments Nenhum comentário »

Olá, este é um teste de postagem com o Maemo WordPy e logo será apagado.

Comments Nenhum comentário »

Hoje dei uma palestra na UNIRIO, na aula de Interação Humano-Computador, “Apresentando o GNOME”, apresentando a visão de usabilidade e os conceitos básicos de um ambiente desktop GNOME.

Seguem os slides: apresentando-o-gnome.odp (pdf)

Tags:, , ,

Comments Nenhum comentário »

O GNU Privacy Guard é uma implementação de código aberto do OpenPGP, um protocolo de criptografia. Ele serve para, dentre outras coisas, assinar ou encriptar um documento, como um texto ou um email. Ao assinar, você envia a mensagem intacta (sem criptografia), mas com uma assinatura que permite ao destinatário verificar que foi realmente você quem a enviou; já a mensagem encriptada é completamente ilegível a um ser humano (e requer muito poder computacional – anos de processamento – para ser lida por um computador que não tenha a chave correspondente).

O processo de criptografia com o GPG funciona com um par de chaves, chamados de chave pública e chave privada. Existem basicamente duas possibilidades: você pode assinar uma mensagem, o que permite que qualquer pessoa que tenha a sua chave pública possa verificar que foi realmente você quem enviou, ou você pode cifrar a mensagem utilizando a chave pública de alguém, o que permite que somente o destinatário, que possua a chave privada que combina com a chave pública que você utilizou para criar a mensagem consiga lê-la. Em outras palavras, não é possível enviar uma mesma mensagem cifrada para mais de um destinatário, pois as chaves são pessoais, cada pessoa terá uma chave diferente.

As chaves públicas podem ser disponibilizadas em servidores públicos de chaves – numa lista de email, se todos os participantes usarem assinaturas GPG, é possível verificar a autenticidade da origem das mensagens, por exemplo – ou, para uma segurança absoluta, ser entregue de mão em mão fisicamente – por exemplo, duas pessoas que queiram trocar mensagens secretas na internet, podem marcar de trocarem suas chaves públicas entre si e mandarem mensagens criptografadas, dessa forma ninguém conseguirá descobrir o conteúdo dos emails ainda que as mensagens sejam interceptadas. Geralmente o que costuma acontecer é uma mistura das duas técnicas – você baixa a chave pública da pessoa de um servidor público e caso encontre com ela pessoalmente, pode marcar a chave dela como razoavelmente confiável (você confirmou os dados por telefone, por exemplo) ou plenamente confiável (você a conhece pessoalmente ou confirmou os dados com um documento de identificação da pessoa, por exemplo). Desta forma, se você confia plenamente na chave de José, ele confia na de Maria e ela na de Joaquim, por conseguinte as chaves de José, Maria e Joaquim são confiáveis.

Apenas como um exemplo, vejamos como ficam os seguintes exemplos assinados com a minha chave:

Mensagem original:

Olá! Este é um teste do GnuPG e o FireGPG no meu GMail.

A mensagem assinada fica assim:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Olá! Este é um teste do GnuPG e o FireGPG no meu GMail.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Use GnuPG with Firefox : http://getfiregpg.org (Version: 0.7.5)

iEYEARECAAYFAkn+aa0ACgkQN8/PzL0GXew+6wCeJNBdTSAcXc3DnEmnnns1kREt
r1oAn0Ba2HVRe/sCM6qO1l9Sq7PWv+tu
=/pXZ
-----END PGP SIGNATURE-----

Note que há um bloco de assinatura, mas a mensagem ainda é legível. Agora vamos comparar com a mesma mensagem cifrada para a minha chave pública:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Use GnuPG with Firefox : http://getfiregpg.org (Version: 0.7.5)

hQIOAz2cbYt84VD6EAgAuSORNt9tgYWco0np2U4xzjwjf6bjBhiwi1K6Kvzzg9JE
J2KB8TJYda/svW9PgB2EUeR91NW0r45V6oUTbTtiftCqSzAZLBvNzEpBW9aWxZkH
qmcMFVqUSWqbYuF+W4rLQEft79X0pckrbjTFRjzpdKSoVfUybkkjtqOwMntlFeSY
XPVZT0DY6QZfLh8VAlr4jyjCnqKCImhUGEhSzpGzrc5S9XKMrv7fR0gzqb1WJ/GH
rnluPA9OUwOfasjLV4Yfli9rvnPhIkgrRwL7gTWrXYHPnP3+LIXAJyd5ZD9wi9ll
HI8+xBuvYaMt1aucJwuRA7AHvMM/+AIjArAFBgJdIAgAuOE5oSexamX0bXvrQInc
4WuV/ug+PCUDaILKV3+Vx7Wbz6byh8XAsFjaLifEpihNWSYLI3G8l2E9/lY3+OPs
IUVkNwU7T3cn4VSmrtxfH2vOJuwvJSlM8oM/TMZ7jlmihO82esV6FJveix2yTe5c
J9uaBvnM66WrAqkprN8XXvNIlSuUKqAYhOcahd9vWA9xB7NZi7HMrot8tbbegJDP
1bY8sSEx7TDyLTF+oZGgwwMeJzX1LVImP9H63SuF91+KC+I7JPUwC/BjW5x4dcbL
qbcpl8+oelF3wA/d1HfTtlPsazP3QZKMFQYT+i5s07bobcZtIbxKiYL5agg+A79f
9tJxAfPoCvq/xEckbPQDRa3AXMLbVIxxfZ+3YIZSyisA3uMjcWK27thM9K59jFW1
2hesy+sXoV/nQYAQtOUNWs6mJ5KyAnCqwp8jnKz5dIDWvV3anmryYPHvUbY7xJnE
YsG71uZBBvCMNd8y9RnvqdD5bIA=
=+b47
-----END PGP MESSAGE-----

Criando a chave

No Ubuntu, abra o Seahorse, o gerenciador de senhas em Aplicativos > Acessórios > Senhas e chaves de criptografia, vá no menu Arquivo > Novo…, escolha Chave PGP e clique em Continuar.

Entre com seu nome completo e endereço de email. Em Opções avançadas de chave, é possível escolher outras configurações como a data de expiração da chave, caso você queira criar uma chave provisória. Após clicar em Criar, você deverá inserir uma frase secreta, se possível com uma combinação aleatória de caracteres maiúsculos e minúsculos, acentos, números, símbolos etc. Após algum tempo (pode demorar caso o seu computador seja lento), a chave será criada.

Você pode exportar a chave pública clicando com o botão direito no seu nome e em Exportar. Essa chave poderá ser enviada para alguém manualmente, ou ser enviada para um servidor público de chaves através da opção Remoto > Sincronizar e publicar chaves… do menu. Para exportar a chave privada (a qual você não deve passar para ninguém, lembre-se!) clique com o botão direito no seu nome e em Propriedades, aba Detalhes, botão Exportar. Recomenda-se guardar a chave privada num dispositivo de backup, como um HD externo, um pendrive ou um CD, preferencialmente um que você deixe em casa, não ande com ele todo dia. Para importar a chave privada, em outro computador seu, utilize a opção Arquivo > Importar. É possível adicionar outros emails (pessoal, acadêmico…) à sua assinatura, na aba Nomes e assinaturas da janela de propriedades da assinatura.

Utilizando a chave para mandar emails

Apesar de ser possível encriptar ou assinar textos manualmente na linha de comando, é muito mais prático usar uma extensão de Firefox se você usa emails online. Para isso, instale o FireGPG. Ele automaticamente detecta a sua chave GPG instalada, e permite assinar e criptografar mensagens (e anexos) de forma direta (por exemplo, se for uma assinatura, com os caracteres criptografados diretamente no email) ou através de uma assinatura em anexo (arquivo com extensão asc). Ele também decodifica mensagens que você receba de outras pessoas, bem como permite buscar automaticamente por chaves que você por ventura ainda não tenha. Para assinar uma mensagem, digite a mensagem normalmente no seu webmail, e então selecione o texto desejado e vá na opção Ferramentas > FireGPG > Assinar. Analogamente, há a opção de Cifrar. Em Ferramentas > FireGPG > Opções é possível ativar opções para sempre cifrar e/ou assinar as mensagens no GMail por exemplo. A utilização da criptografia com dessa forma é bastante facilitada e conveniente.

Tags:, , , ,

Comments Nenhum comentário »