Artigos

Raspberry & Cloud

Recebi há dias a mais recente versão do Raspberry Pi! Mais potente e melhor equipado, o novo Raspberry 2 Modelo B destaca-se da anterior versão por ter um ARMv7 Quad core @ 900MHz, 1GB RAM, entre outras caracteristicas. O fabricante garante 6x mais performance relativamente à versão anterior.

Com a minha habitual euforia de brinquedo novo na bancada, tive que decidir qual o primeiro projeto para testar o bicho…
Dispensa apresentações. É das melhores senão a melhor solução open-source para a nossa “nuvem” privada. Já vai na versão 8.

Vamos então para o nosso plano de trabalho:
HARDWARE
1 Raspberry com cartão microSD de 8GB Classe 10
1 Pen ou Disco externo USB para armazenamento de dados
SOFTWARE
Sistema operativo Raspbian
Instalação de LAMP (Apache + MySQL + PHP)
Instalação e configuração inicial do ownCloud

Vou partir do princípio que o raspberry está com a versão Raspbian instalada, configurada e atualizada. O site do Raspberry tem bons tutoriais para esse efeito.

1- Preparação da PEN/HDD USB com o seguinte comando:
sudo fdisk -l
Na resposta deverá aparecer alguma coisa tipo:
Device Boot           Start         End           Blocks      Id  System
/dev/sda1   *        2048    30297215    15147584    c  W95 FAT32 (LBA)
Poderá aparecer sdb, sdc, etc. No meu caso é uma PEN USB de 16GB.
Vamos formatar  o nosso /dev/sda1 com EXT4, um formato nativo de Linux:
sudo mkfs.ext4 /dev/sda1
Em seguida criamos a pasta onde a informação da nossa nuvem vai ficar guardada e montamos a nossa PEN/HDD USB:
sudo mkdir /cloud
sudo mount /dev/sda1 /cloud
Podem alterar o nome da pasta /cloud para o que quiserem.
Damos as permissões corretas à pasta criada (para depois o ownCloud funcionar bem):
sudo chown www-data:www-data /cloud
Para tornar este mount permanente fazemos o seguinte:
sudo nano /etc/fstab
Deverá aparecer a seguinte informação:
proc                       /proc           proc    defaults                 0       0
/dev/mmcblk0p1  /boot            vfat    defaults                 0       2
/dev/mmcblk0p2  /                   ext4    defaults,noatime  0       1
É só acrescentar:
/dev/sda1              /cloud       ext4    defaults               0       2

Pronto, o nosso raspberry já pode reiniciar.

2- Vamos configurar agora o nosso raspberry como um servidor LAMP (Apache + MySQL + PHP) e instalar o necessário para a nossa “nuvem” pessoal:
sudo apt-get install apache2 mysql-server php5 php-pear php5-mysql php5-gd php5-curl
Na instalação do MySQL o sistema vai pedir-nos para definirmos uma password de root (não tem nada a haver com o root de sistema).

3- Vamos tornar o nosso MySQL mais seguro:
sudo mysql_secure_installation
Caso tenham dúvidas vejam um bom exemplo aqui.
Vamos aproveitar para criar um utilizador MySQL e a base de dados para o ownCloud:
mysql -uroot -p
Insiram a password definida na instalação do MySQL. Criamos primeiro o utilizador:
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’;
Alterem o username e a password para o que quiserem. Não esqueçam os ‘ e o ; no fim! Agora vamos criar a base de dados e dar permissões ao user criado:
CREATE DATABASE cloud_db;
GRANT ALL PRIVILEGES on cloud_db.* to username@localhost;
FLUSH PRIVILEGES;
exit
Podem (e devem) alterar o nome da cloud_db para o que quiserem.
E pronto. Vamos para a etapa seguinte!

4- Vamos agora ativar o SSL. Começamos por gerar uma chave:
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1001 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Podem alterar os dias para o numero que quiserem. Respondam às perguntas seguintes. Por fim, vamos editar o ficheiro seguinte:
sudo nano /etc/apache2/sites-available/default-ssl
Logo por baixo de ServerAdmin coloquem
ServerName nome_da_maquina.com:443
O nome nome_da_maquina.com é o FQDN. Em caso de dúvida coloquem server.lan.
Mais abaixo, alterem o caminho dos certificados:
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Salvamos o ficheiro e finalizamos com os seguintes comandos:
sudo a2ensite default-ssl
sudo a2enmod ssl

sudo service apache2 reload
Podem testar abrindo o browser no https://ip_do_raspberry

5- Descarregamos a versão mais recente do ownCloud (à data deste post), descompactamos o ficheiro e copiamos para a pasta www:
wget https://download.owncloud.org/community/owncloud-8.0.0.tar.bz2
tar -xvf owncloud-8.0.0.tar.bz2
sudo rm  /var/www/*
sudo cp owncloud/* /var/www/ -r

Corrigimos as permissões:
sudo chown -hR www-data:www-data /var/www/
(este comando permite ao apache ter controlo total da pasta do ownCloud)

Vamos então configurar o ownCloud:
https://ip_do_raspberry
Se tudo correu bem vão encontrar o seguinte ecrã, onde poderão criar um utilizador de administração e inserir a informação previamente criada:
E pronto, já podem começar a configurar a vossa nuvem pessoal!Podem começar por configurar as opções gerais, no menu de administração:
Boa nuvem! 🙂

Screen

Há uns tempos falei do putty para aceder por cabo série aos nossos equipamentos. No entanto podemos usar o terminal do nosso Ubuntu e variantes com um programa de seu nome Screen.
Screen é um gestor de sessões virtuais e que permite (entre outras coisas) aceder a um equipamento (routers, switchs, etc) por ligação série.

Começamos por instalar:
$ sudo apt-get update && apt-get install screen

Se o nosso utilizador ainda não pertence ao grupo dialout adicionamos:
$ sudo adduser
utilizador dialout
Assim podemos aceder à ligação série como utilizador sem privilégios (sem o sudu).

Por fim, ligamos ao equipamento que pretendemos:
$ screen /dev/ttyUSB0 9600

onde:
ttyUSB0 é o adaptador USB/RS232 (caso usem uma porta série usem ttyS0)
9600 é o baudrate (pode variar, depende das especificações do equipamento)

Para sair da sessão usamos a sequência de teclas:
Ctrl + A + D

Para voltar à sessão escrevemos:
$ screen -r

Para encerrar a sessão fazemos:
$ screen -X -S [ID da sessão] quit

onde [ID da sessão] pode ser obtida com o comando
$ screen -ls

Screen tem mais vantagens já que permite manter um processo em execução, mesmo que fechemos a consola. Podemos ter várias sessões em simultâneo. Isto pode ser útil em situações em que queremos executar um processo e desligar a sessão sem que esse processo termine. Leiam o manual e bons comandos! 🙂

 

 

It’s PopCorn Time :)

 

logo-valentines

Conhecem? 🙂

Esta ferramenta fantástica permite ver filmes e séries usando a tecnologia P2P, mais conhecida por torrents. Tem boa qualidade e inclui legendas em PT. Apesar de em alguns países isto ser considerado ilegal, na realidade a aplicação em si não tem nada de ilegal…
Bom, legalidades à parte, a aplicação está disponível para Android, OSX, Linux e Windows. Podem ver a página aqui.
Como instalar em Ubuntu e derivados? Muito fácil:

Instalar por PPA – Executar na consola:

sudo add-apt-repository ppa:webupd8team/popcorntime
sudo apt-get update
sudo apt-get install popcorn-time

O programa vai aparecer no menu 🙂 It’s popcorn-time 🙂
Na primeira vez que o programa abre podemos definir a linguagem preferida das legendas. Para isso cliquem na roda dentada no canto superior direito. No campo das legendas (ou subtitles caso a interface esteja em inglês) podem escolher a nossa língua.
E pronto, bons filmes 🙂
Popcorn-time

Ubuntu em domínio .local

dns

Para quem usa Ubuntu numa rede empresarial frequentemente encontra desafios para realizar tarefas que estão “feitas” para ambiente Microsoft. Isto não é uma crítica, é a realidade.
Se tentarem procurar computadores ou servidores num domínio .local (empresa.local), o vosso Ubuntu vai dar erro de DNS. Isto porque nativamente o Ubuntu usa o Avahi para fornecer resolução de nomes via Multicast DNS (às vezes também conhecido como Zeroconf ou Apple Bonjour), o que permite a resolução de nomes usando o domínio mDNS .local ad-hoc.
Mas há uma solução para ultrapassar isto! Na consola vamos editar uma linha num ficheiro chamado nsswitch.conf:

sudo nano /etc/nsswitch.conf

Vão encontrar a seguinte linha:
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Alterem para:
hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4

E pronto, problema resolvido 🙂

LibreOffice no Ubuntu

libre

Saiu recentemente do forno da The Document Foundation uma nova versão do LibreOffice, a versão 4.3.4.
Para quem pretende atualizar facilmente o LibreOffice por repositório para a versão mais recente basta executar os seguintes comandos:

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get dist-upgrade

Caso o programa não apareça em português, basta  instalar o pacote pt:

sudo apt-get install libreoffice-l10n-pt

E já está! 🙂

Putty no Ubuntu

putty

Quem administra routers e outros equipamentos cujo meio de acesso à configuração é através de uma consola, em Windows usa o fantástico Putty.
No entanto esta ferramenta também existe para Linux e funciona muito bem em Ubuntu!

Para instalar basta o seguinte comando:
sudo apt-get install putty

E pronto, está instalado.

Há dois pormenores a partilhar:

1 – Para se usar o putty como utilizador regular (sem direitos administrativos) numa porta local (COM ou USB) é necessário que o utilizador pertença ao grupo dialout. Para tal basta executar o seguinte comando:
sudo adduser utilizador dialout
Teremos que terminar sessão para tornar esta alteração efectiva.

2 – Em Windows,  quando queremos executar um “copiar-colar” a informação que queremos copiar é selecionada com o botão esquerdo do rato. Para efetuar o “colar” clicamos com o botão direito. Em Linux, a ação de “colar” é feita com o botão do meio ou a “roda” do nosso rato.

Boas ligações! 🙂

Poodle fix

Pois é… Há uma nova ameaça para as comunicações seguras na Internet, de seu nome Poodle:
PoodleA Google trouxe a público neste documento a descoberta, como o ataque é feito e quais as consequências.  Nos próximos tempos irá aparecer um fix para este problema mas entretanto podemos proteger os nossos servidores caseiros (e não só) desativando pura e simplesmente o protocolo SSL v2 e v3. Esta situação só se aplica caso usem páginas HTTPS nos vossos servidores. Com este fix “obrigam” o vosso servidor a usar encriptação TLS.

Acedam ao servidor e abram o ficheiro de configuração do Apache. A localização pode variar mas no Ubuntu, por defeito está em /etc/apache2/apache2.conf:
nano /etc/apache2/apache2.conf

Adicionem a seguinte linha:
SSLProtocol All -SSLv2 -SSLv3

Salvem o ficheiro e no fim é só reiniciar o serviço Apache:
service apache2 restart

E pronto, podem testar neste site se já tem o SSLv3 desativado.

Backup do Raspberry

Para mim, o único defeito do fantástico Raspberry é o sistema de armazenamento de dados assentar num cartão SD. Bem que podia ter uma interface SATA mas… o seu preço não seria o que é! Resta aceitar e tomar as devidas precauções para não apanharmos sustos de cada vez que reiniciamos o sistema ou quando inadvertidamente retiramos a energia eléctrica.

Podemos sempre fazer backup dos dados para uma pen USB ou para um servidor remoto via FTP mas muitas vezes fazemos alterações e personalizamos o sistema operativo, o que após uns meses se torna difícil reconstruir do zero e pôr o nosso Raspberry tal e qual estava antes da “desgraça”. Por outro lado, os cartões SD mais usados são por norma de 4 a 32GB. Então, porque não criar uma imagem total do cartão SD?

Começamos então por desligar o nosso Raspi:
sudo poweroff

Esperamos que as luzes se apaguem excepto a vermelha. Podemos então desligar da corrente e retirar o nosso cartão. Inserimos o cartão no nosso computador.  A única preocupação ver é se tem o espaço livre suficiente para albergar o tamanho máximo do cartão no disco do computador.

Em Windows podem usar a ferramenta Win32DiskImager.

Em Linux vamos usar a poderosa ferramenta dd.
Na consola, verificamos primeiro onde está o nosso cartão:
sudo fdisk -l
No meu caso é /dev/sdb
Executamos então o seguinte comando:
sudo dd bs=4M if=/dev/sdb | gzip > /home/utilizador/raspberry.gz
Não vai haver barra de progresso e só resta aguardar que termine. Com este comando o ficheiro criado é automaticamente comprimido.

E pronto, temos o nosso backup realizado! 🙂

Caso pretendam repor a cópia ou trocar de cartão SD basta inverter o processo:
sudo gzip -dc /home/utilizador/raspberry.gz | dd bs=4M off=/dev/sdb

Limpinho, limpinho 🙂

Fail2ban

fail2ban-logo

Quem tem um (ou mais) servidor on-line e precisa de o administrar via SSH sem recurso a VPN nunca pode ficar muito descansado pois há sempre quem ande a rastrear IP em busca de servidores que aceitem SSH. E mais cedo ou mais tarde vão tentar entrar no seu… Bom,  há sempre maneira de minimizar um ataque BruteForce, de uma maneira fácil e rápida.

Fail2ban é um programa que funciona da seguinte maneira: filtra os logs do servidor em busca de logins falhados. De acordo com a configuração, ao fim de X tentativas falhadas o IP de origem fica bloqueado durante o tempo que quisermos. Parece fácil não é? Instalar e configurar ainda é mais fácil!

Esta aplicação pode ser instalada em quase todas as Distros e o método de configuração é semelhante, mas vou focar a instalação e configuração em Debian/Ubuntu.

Para instalar fazemos:
sudo apt-get install fail2ban

Para configurar fazemos:
sudo cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
Aqui temos o ficheiro de configuração. Há vários campos que podem ser personalizados. Os principais são:
bantime – como o nome indica, é o tempo de bloqueio (em segundos) do IP que tentou entrar. Por defeito 600 (10 minutos)
maxretry – é o número de tentativas standard ao fim das quais o IP que tentou entrar é bloqueado. Aconselho 3

Bom, a partir deste momento, o Fail2ban está pronto a trabalhar. Mas uma coisa fantástica que este programa tem é que pode avisar-nos por email das tentativas  de BruteForce que o nosso servidor irá sofrer. Inclusive pode enviar dados pormenorizados. Como? O nosso servidor terá que de alguma maneira poder enviar email para fora. Um bom exemplo está aqui.
No ficheiro de configuração (jail.local) alteramos o campo destemail para o email de destino que pretendemos para receber os avisos.
Para recebermos os emails temos que ativar a opção, alterando o campo action = $(action_)s para action = $(action_mw)s. Para recebermos informação mais detalhada do ataque alteramos o campo action = $(action_mw)s para action = $(action_mwl)s.
Mais em baixo vamos encontrar os vários serviços pré-configurados, sendo o primeiro (e único ativo) o SSH. Podem ativar os outros mas só se tiverem a certeza do que estão a fazer!

E pronto! No fim, basta ativar o serviço:
sudo service fail2ban start (ou restart, caso já esteja ativo)

Há mais serviços que o nosso corajoso Fail2ban pode proteger,  sendo o limite a nossa imaginação. Há muita ajuda na Internet e no portal da comunidade.

Podem testar fazendo um “ataque” a partir de um ip externo à máquina. Não esqueçam que vão ficar bloqueados durante 10 minutos 😀
Boa sorte!

Clear OS

Imagem

ClearOS é o que eu chamo um “canivete suiço” do mundo open-source. Não sendo especializado, cumpre o que se propõe a fazer e cumpre bem. Seja como firewall, proxy, NAS, router, mail-server ou entre muitas outras funções, temos aqui um fiel servidor assente no robusto CentOS.

De fácil instalação e configuração, em poucos minutos temos o nosso servidor a trabalhar. Tem uma versão paga e uma versão community. Podem ver as diferenças aqui. O que nos interessa é obviamente a versão gratuita.

Vamos então para a página de downloads para descarregar a nossa ISO.  Gravamos num CD e estamos prontos para criar o nosso servidor. Também temos à disposição imagens virtuais, prontas a serem testadas. No entanto, o processo de instalação é extremamente simples como podem verificar na página da ClearFoundation.

Quando a instalação estiver concluída, o computador pode ficar colocado num canto, sem monitor ou teclado. Apenas um cabo de rede. Só precisamos de saber o IP e aceder ao nosso novo servidor pelo browser em https://IP_DO_SERVIDOR:81

Entramos com a senha de ROOT que definimos na instalação (no caso das VM, a senha de ROOT é clearos ) e podemos configurar os parametros iniciais.

As opções são muitas mas todo o processo de configuração está muito intuitivo e acima de tudo… fiável! Podemos começar por criar um servidor que vai ficar apenas na nossa rede privada (sem firewall). Configuramos o acesso à Internet e aceitamos as condições (blá blá…). Temos o nosso servidor pronto a ser usado.

Há muitos HowTos na Internet para funções que podemos delegar no nosso servidor mas penso logo num NAS, num VPN Server ou num TorrentDownloader. Plex também é uma boa opção. Para quem quiser gerir e controlar totalmente a sua rede local também podemos configurar uma Firewall. Enfim, as opções são imensas e de certeza que todos vão encontrar uma solução para o que procuram.

Durante os próximos artigos darei exemplos destes e vão ver como é fácil e rápido configurar o nosso servidor ClearOS.