Artigos

O comando History

Para quem não conhece, o comando “history” é um verdadeiro salva-vidas na administração de sistemas linux. Permite saber os comandos inseridos por ordem de execução, repetir comandos ou aproveitar parte deles.
Para testarem basta escrever na consola
history
history

Há várias opções mas destaco três:
1- history | grep “xpto”
Este comando é bastante útil quando queremos procurar um comando que contenha uma determinada palavra ou expressão
2- history 10
Para ver os últimos 10 comandos (podem usar o número que quiserem)
3- export HISTTIMEFORMAT=”%F %T”
Por predefinição o comando history não vem com a data e hora de execução. Mas é possível activar isso com este comando.

Como em qualquer comando, podem sempre ver as opções disponíveis acrescentando a flag –help ou ver o manual com man history.

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.