Artigos

iRedMail alias

iredmail

iRedMail é uma excelente alternativa open-source para quem quer um servidor de email. Robusto e potente, é uma boa solução para quem precisa de um servidor de email.

Como de costume há uma solução “livre” de custos e uma versão paga, com suporte e uns extras.

Na versão livre não há nenhuma opção gráfica para se criar “alias” aos emails existentes. Mas é possível fazer por sql, na consola. De acordo com a página da iRedMail isto é explicado mas… o comando não funcionou da maneira como eles explicam.

Na consola, entramos na CLI MySQL:
mysql -u root -p
Inserimos a password de root mysql e os seguintes comandos:
USE vmail;
INSERT INTO alias (address, goto, domain, is_alias, active)
VALUES (‘novoalias@dominio.pt’, ‘emailoriginal@dominio.pt’, ‘dominio.pt’, ‘1’, ‘1’);

E pronto, podem testar o vosso novo alias.

Raspberry chat encrypted


Todos precisamos de vez em quando de uma ferramenta para uma conversa rápida, anónima e sem grandes configurações. Ao navegar pela Internet encontrei vários serviços de chat que me ofereciam tudo isso mas houve um que me agradou mais.
O ChatCrypt é um serviço de chat simples e directo.

Escolhemos um nome para a sala, um utilizador e uma palavra-chave. É aberta uma nova janela de chat.
Cada pessoa que quiser entrar só tem de colocar o nome da sala e palavra-passe correctas. Quem tentar entrar na sala sem ter a password correcta, não vai conseguir ler o que os restantes membros escrevem.

Isto porque, de acordo com os autores do chat a encriptação ocorre antes da nossa mensagem sair do navegador que estamos a usar, utilizando para isso o algoritmo AES-256 no modo CTR com uma palavra-passe especificada pelo utilizador.
Os criadores foram ainda mais longe e permitem que possamos usar este serviço numa pagina externa à do serviço, como por exemplo numa página gerida por nós.
Lembrei-me logo do Raspberry 🙂

Num Raspbian criado de fresco apenas tive que instalar o Apache:
sudo apt-get install apache2

Depois Criei um ficheiro dentro da pasta /var/www/html/
nano /var/www/html/chat.html

Inseri o seguinte conteúdo:

https://www.chatcrypt.com/iframe.php

Salvei o ficheiro e acedi ao raspberry:
http://ip_do_raspberry/chat.html

Experimentem!

 

Problemas de som com Realtek HDA

realtek-high-definition-audio-drivers
Para quem usa Ubuntu e tem o “azar” de ser contemplado com uma placa de som Realtek High Definition Audio, vai ouvir alguns ruídos e falhas de som, com os Kernels mais recentes 4.x.

Uma alternativa que podem tentar via consola para resolver este problema (não é 100% garantido) é a seguinte:

Editar o ficheiro /etc/pulse/default.pa:
sudo nano /etc/pulse/default.pa

Procurar a linha (com o atalho Ctrl+W) que tem a seguinte informação:
load-module module-udev-detect

Adicionar “tsched=0” no fim da linha. Deverá ficar:
load-module module-udev-detect tsched=0
Salvar e terminar sessão, ou reiniciar.

A cor do Ubuntu

RgbColorCubeDetail

Toda a gente conhece a cor purpura do Ubuntu. Gostos  à parte é possível e muito fácil (como é hábito) alterar a cor do arranque do nosso Ubuntu.

Vou fazer a alteração para a cor preta mas podem usar os valores que estão na tabela RGB, na primeira figura deste artigo. De acordo com a tabela, a cor preta tem o código “0,0,0”.

  1. Editar o grub:
    sudo nano /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.grub
    Alterem a linha seguinte para o código da cor que pretendem:
    if background_color 0,0,0; then
    Depois de guardarem as alterações tem de actualizar o sistema:
    sudo update-grub
  2. Editar o plymouth
    sudo nano /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.script
    Alterem as linhas seguintes para o código da cor que pretendem (usem o Ctrl+W para procurar):
    Window.SetBackgroundTopColor (0,0,0); # Nice colour on top of the screen fading to
    Window.SetBackgroundBottomColor (0,0,0); # an equally nice colour on the bottom
    Aqui podem até misturar duas cores para criar um efeito gradiente.
    Depois de guardarem as alterações tem de actualizar o sistema:
    sudo update-initramfs -u

E pronto, reiniciem o sistema e verifiquem os resultados!

Acesso seguro

wolf

Quando temos um servidor público, seja o sistema operativo que for, temos de tomar precauções para acessos indevidos e temos de estar sempre atentos a tentativas de intrusão. Podem dizer que ninguém tem interesse no vosso servidor particular mas não se esqueçam que há máquinas que varrem os IP de todo o mundo na procura de potenciais vitimas. O objectivo pode não ser roubar dados mas tornar a máquina “zombie” para ataques a terceiros.

No caso de Linux em geral e Ubuntu em particular, por norma acedemos à nossa máquina por SSH. Este protocolo é bastante seguro na sua essência, no entanto há algumas precauções a tomar.

  1. Password – É a chave  da vossa casa. Uma password forte, com 12 ou mais caracteres, letras e números. Há programas que geram palavras especiais mas podem sempre escolher uma frase vossa e acrescentar uns números.
  2. Autenticação com chave encriptada. Um método muitas vezes ignorado mas bastante seguro. Na prática geramos um par de chaves (pública e privada) e guardamos a pública no servidor. e a privada no nosso PC. Já perceberam que só entra quem tiver a chave privada do respectivo par. Este método é teoricamente imune aos ataques de brute-force. Tem a desvantagem de que se perdermos a chave privada…
  3. Usar o failt2ban. Podem ver um artigo aqui.
  4. Alterar a porta de acesso SSH. By default, a porta de acesso SSH é a 22. É onde os scanners de IP públicos costumam “bater á porta”. O objectivo não é entrar logo mas sim saber se o servidor X tem a porta 22 à escuta.
    É possível e devemos alterar a porta de acesso. Na consola editamos o seguinte ficheiro:
    nano /etc/ssh/sshd_config
    Vão encontrar o seguinte logo no início:
    # What ports, IPs and protocols we listen for
    Port 22
    Agora é só alterar o 22 para outro número, de preferência acima de 1024 e no máximo 65535. Garantam que o numero da porta em causa não coincida com outra já em uso no vosso servidor.
    No fim é só salvar e reiniciar o serviço ssh:
    sudo service ssh restart
  5. Verificar se alguém anda a tentar entrar ou se já entrou.
    Para ver quem está ligado ao nosso servidor basta fazer o comando:
    who
    Para  ver as tentativas falhadas:
    grep sshd.*Failed /var/log/auth.log | less  ( para sair carregar na tecla Q )
    Para ver as tentativas sem autenticação  (comum nos scanners de IP ):
    grep sshd.*Did /var/log/auth.log | less  ( para sair carregar na tecla Q )

Há outros métodos de protecção mais complexos mas na minha opinião estes são essenciais para dormir mais descansado.

Rocket Chat

raspberry-logo

Rocket Chat é um serviço de conversação online, mais uma fantástica pérola do mundo open-source.

Destaco (entre muitos) os seguintes serviços:

  • Conversação online
  • Video-chamada
  • Envio de ficheiros
  • Mensagens de voz

Ao nível de cliente é suportado pelos principais sistemas operativos Linux, Windows e OSX. Também tem cliente nativo para Android e IOS. Podem ver uma demonstração aqui.

Ao nível de servidor, obviamente pode ser instalado num Linux. Vamos usar o nosso Raspberry? 🙂

Para o efeito vou usar um Raspberry Pi 2, com um cartão SD 8GB classe 10.
O sistema operativo é o Ubuntu server, instalado de fresco e actualizado.

Primeiro actualizamos e instalamos algum software adicional:
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install git curl graphicsmagick python build-essential

Vamos agora instalar e configurar a nossa base de dados, usando para o efeito o Mongo:
sudo apt-get install mongodb

Iniciamos a configuração do nosso Mongo:
mongo admin

Configuramos o administrador (alterem o “admin” e “1234“) :
db.createUser({ user: “admin”, pwd: “1234”, roles: [“userAdminAnyDatabase”] })
auth = true
setParameter = enableLocalhostAuthBypass=0

Configuramos a base de dados e o seu administrador para o nosso chat:
use chat_db
db.createUser({ user: “user”, pwd: “1234”, roles: [“readWrite”] })
exit

Em seguida obtemos o METEOR para o ARM:
cd /tmp
git clone –depth 1 https://github.com/4commerce-technologies-AG/meteor.git
meteor/meteor -v

Hora para tomar um café 🙂

No fim do processo vamos então criar uma pasta onde o nosso Rocket chat vai ser instalado:
sudo mkdir /opt/chat
cd /opt/chat
sudo curl https://cdn-download.rocket.chat/build/rocket.chat-pi-develop.tgz -o rocket.chat.tgz
sudo tar zxvf rocket.chat.tgz

Movemos para a nossa nova pasta o Meteor:
sudo mv /tmp/meteor /opt/chat/

E agora instalamos as dependências e finalmente o nosso chat:
cd bundle/programs/server
/opt/chat/meteor/dev_bundle/bin/npm install
cd /opt/chat/bundle

Agora, numa só linha:
PORT=3000 ROOT_URL=http://raspberry_IP:3000 MONGO_URL=mongodb://user:1234@localhost:27017/chat_db /opt/chat/meteor/dev_bundle/bin/node main.js

Após o processo entramos na página do nosso chat:
http://ip_do_raspberry:3000 (Podem alterar o numero da porta caso desejem)

Registem um utilizador que será automaticamente Admin do sistema.
Vão a Administration -> Email -> SMTP e configurem uma conta para envio de email.

E pronto! Temos o nosso Rochet.Chat a postos para a conversa. Podem instalar o cliente da Rocket.Chat ou usar a plataforma WEB.

Vamos agora arranjar um scrit para arrancar com o nosso chat server de uma forma mais fácil. Há várias maneiras de fazer isto pelo que fica aqui uma bastante fácil.  Vamos criar um ficheiro com o nome server.conf
cd /opt/chat/bundle
nano server.conf

Vamos inserir a seguinte informação:
 #!/bin/bash
export PORT=3000
export ROOT_URL=http://raspberry_IP
export MONGO_URL=mongodb://user:1234@localhost:27017/chat_db
/opt/chat/meteor/dev_bundle/bin/node main.js

Guardamos e damos permissões de executável:
chmod +x server.conf

Agora arrancamos com o nosso script com a ajuda do screen:
screen
cd /opt/chat/bundle
./server.conf

Após uns minutos temos o nosso servidor novamente no ar.
Para sair da sessão do screen carreguem as teclas Ctrl+a+d
Para voltar à sessão escrevam na consola:
screen -r
Mais informações do screen podem ver aqui.

Não esqueçam que esta instalação é básica e há questões relacionadas com segurança que deverão ser levadas em conta. Passwords fortes e uma firewall é o primeiro caminho a percorrer antes de abrir o nosso chat ao mundo. Outras opções serão apresentadas em futuros artigos.

Cumprimentos!

Ubuntu 16.04 no Raspberry

A Canonical suporta oficialmente o Ubuntu no Raspberry Pi 2 (também disponibilizam uma imagem para o Raspberry 3)!

Podem fazer download da imagem aqui para o vosso Pi 🙂

Como instalar? Na consola do nosso Ubuntu e já com o cartão SDCard do Raspberry inserido verificamos o path para o cartão (que deverá ser /dev/mmcblk0) com o seguinte comando:
lsblk

Em seguida fazemos download da imagem:
cd /tmp
wget http://cdimage.ubuntu.com/ubuntu/releases/16.04/release/ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz

E instalamos no cartão:
xzcat ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz | sudo dd of=/dev/mmcblk0

Esta imagem é para um cartão de 4Gb. Podem preencher o resto do cartão com recurso ao GPARTED. Se não o tiverem basta instalar com sudo apt-get install gparted.

No primeiro arranque autentiquem-se com username ubuntu e password ubuntu. Vai ser solicitada a alteração para uma nova password.

A instalação do Ubuntu no Raspberry traz algumas vantagens relativamente ao Debian das quais destaco o Kernel mais recente e pacotes de instalação mais actuais. Isto pode ser útil em algumas situações. Experimentem!

Wifi na linha de comandos

wireless-wlan0

É muito fácil obter informações da rede wifi a que estamos ligados, na linha de comandos.

Começamos por usar o comando ifconfig para saber o IP e nome da interface. No exemplo temos a interface wlan0.

Em seguida usamos o comando iwconfig para obter informação sobre a ligação actual, como o nome da rede, sinal, frequência, entre outros.

Podemos também usar o comando iwlist wlan0 freq para saber mais informação detalhada sobre a frequência que estamos a usar.

NTP Server no Raspberry

ntp-server

Uma boa função para  o nosso Raspberry é ser um servidor NTP na nossa rede local.
A sua configuração é bastante simples

Começamos por actualizar o sistema:
sudo apt-get update 
sudo apt-get dist-upgrade

Garantimos que o nosso Raspberry está na zona correcta:
sudo dpkg-reconfigure tzdata
(Escolher Europa e depois Lisboa)

Instalamos o NTP:
sudo apt-get install ntp

Editamos o ficheiro de configuração:
sudo nano /etc/ntp.conf

Primeiro comentamos os servidores existentes:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu’s ntp server as a fallback.
# pool ntp.ubuntu.com

Em seguida acrescentamos os portugueses:
# Servidores portugueses
server 2.pt.pool.ntp.org
server 1.europe.pool.ntp.org
server 0.europe.pool.ntp.org

Logo a seguir permitimos pedidos NTP apenas na nossa rede local:
# Permitir apenas a rede local
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
(Ajustar a rede para a vossa rede local)

Salvamos o ficheiro e reiniciamos o serviço NTP:
sudo service ntp restart

Verificamos o estado:
ntpq -p

Deveremos obter uma mensagem assim:
==============================================================================
+2.pt.pool.ntp.o 194.117.9.136 3 u 37 64 1 26.271 0.666 0.001
*1.europe.pool.n 81.2.117.235 2 u 36 64 1 55.100 1.474 0.001
+0.europe.pool.n 192.33.96.102 2 u 40 64 1 74.266 2.486 0.001

E pronto! Não esquecer de abrir a porta 123 UDP caso usemos uma firewall.