domingo, 22 de abril de 2018

Instando o servidor e/ou cliente SSH no Ubuntu

O OpenSSH implementa o protocolo Secure Shell (SSH) para controlar remotamente ou transferir arquivos entre computadores. O OpenSSH fornece um daemon de servidor e ferramentas de cliente para facilitar o controle remoto seguro e criptografado e as operações de transferência de arquivos, substituindo efetivamente as ferramentas legadas, como FTP e Telnet. Estas ferramentas legadas são inseguras e transmitem a senha do usuário em texto não criptografado quando usadas.

O sshd observa as ferramentas de clientes para qualquer das ferramentas do cliente. Quando uma requisição de conexão ocorre, sshd inicia uma conexão correta dependendo do tipo de ferramenta de conexão do cliente. Por exemplo, se um computador remoto conecta-se a um cliente ssh, o servidor OpenSSH inicia o controle remoto da sala após autenticar. OpenSSH serve vários métodos de autenticação, incluindo a simples, chave pública e tiquetes Kerberos.

A instalação do servidor e cliente OpenSSH é simples. Para instalá-los no seu computador, use os seguintes comandos no terminal. O primeiro instala o cliente e o segundo instala o servidor. Note que você pode instalar um sem o outro.

$ sudo apt install -y openssh-client
$ sudo apt install -y openssh-server
Pronto, é só isto!
O servidor fica ativo automaticamente, aceitando conexões na porta 22.

O arquivo /etc/ssh/sshd_config contém as configurações do servidor SSH.

Parâmetros

Alguns parâmetros que você pode querer modificar:
Port 22
Altere o valor (default é 22) para definir a porta que seu computador aceitará a conexão. Se você trocou isto (por exemplo para 2222) vai ter que fazer a chamada do cliente usando
ssh -p 2222 <usuário>@<servidor>
O ssh server normalmente só permite conexões do usuário root se estiver utilizando um certificado. O parâmetro que controla isto é mostrado abaixo. O valor default é só permitir login do root usando certificado como mostrado:
PermitRootLogin prohibit-password
Você pode trocar o valor deste parâmetro para no e assim impedir qualquer conexão remota via SSH do usuário root, ou trocar para yes e aceitar conexão do root solicitando somente a senha digitada pelo teclado.

Imagine por exemplo que você tem um servidor que está conectado na rede interna (dentro da empresa) e na rede externa (Internet). Você quer impedir que o SSH aceite conexões da Internet, reduzindo assim a possibilidade de ataques. 
Ao instalar o OpenSSH, o servidor ssh se conectará a todos os endereços de rede disponíveis.
Para configurar o OpenSSH para escutar em uma interface específica, você precisará alterar o parâmetro:
#ListenAddress ::
#ListenAddress 0.0.0.0
Note que as duas entradas default, mostradas acima, estão comentadas.
Para trocar para um endereço, por exemplo, 192.168.0.1, colocamos este parâmetro como:
ListenAddress 192.168.0.1
Para as alterações passarem a valer, você precisa reiniciar o serviço do SSH server usando o comando:
$ sudo service ssh restart

Usando cliente SSH com chave DSA no Ubuntu 16+

Quando migrei meu computador do Ubuntu 14.04 LTS para o 16.04LTS, tive uma surpresa: não conseguia acessar os computadores remotos que eu administrava via SSH. O que aconteceu?

Com o Ubuntu 16, vem também uma nova versão do OpenSSH que é atualizado para o OpenSSH 7.0. Nas notas da versão do OpenSSH 7.0 podemos ver que "O suporte para as chaves de host e de usuário do ssh-dss está desativado por padrão em tempo de execução". Isto quer dizer que apesar de você ter as chaves no diretório .ssh, o cliente ssh do seu computador não vai nem ligar para elas.

A solução é bastante simples. Basta adicionar a seguinte linha ao arquivo ~/.ssh/config em cada máquina cliente, isto é, em cada computador onde você executa o cliente SSH. No meu caso, era somente na máquina recém atualizada.

PubkeyAcceptedKeyTypes=+ssh-dss

OBS:

Se você atualizou algum servidor e ele esteja utilizando o OpenSSH 7.0 ou mais recente, você também precisará incluir a linha mostrada acima autorizando o uso do DSA no arquivo de configuração do openssh-server. Este arquivo é /etc/ssh/sshd_config. Como no meu caso, minha estação também tem o servidor SSH habilitado (para eu poder mexer nela remotamente), eu tive que acrescentar a linha também neste arquivo. Você precisa reiniciar o serviço para que a alteração funcione:

service ssh restart



Desabilitar ModemManager no Ubuntu

 ModemManager provides a unified, high-level interface to control all kinds of modems: 4G/5G modems (LTE/NR) 3G modems NB-IoT / Cat-M1 modul...