Como instalar um servidor OpenSSH seguro no Ubuntu?

Como instalar um servidor OpenSSH seguro no Ubuntu?

Quero instalar o servidor OpenSSH no Ubuntu. Como fazer isso?

Eu preciso fazer o seguinte:

  1. Configurar servidor OpenSSH

  2. Configure o par de chaves pública-privada ssh para o usuário

  3. Desabilitar login com senha

  4. Habilitar usuário root

  5. Configure o par de chaves pública-privada ssh para o usuário root

  6. Configurar senha

Responder1

Vá ao terminal e digite:

sudo su
aptitude install openssh-server openssh-client

Teste a instalação

ps -A | grep sshd

Se a saída for algo assim:

<some number> ?        00:00:00 sshd

Então o daemon ssh está em execução.

Digite novamente terminal;

ss -lnp | grep sshd

Se a saída for algo assim:

0  128  :::22  :::*  users:(("sshd",16893,4))
0  128   *:22   *:*  users:(("sshd",16893,3))

Então isso significa que o daemon ssh está escutando conexões de entrada

Agora editamos o arquivo de configuração. Primeiro fazemos um backup do arquivo original.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Agora abrimos o arquivo de configuração para editá-lo

sudo gedit /etc/ssh/sshd_config

Senhas fracas são fáceis de adivinhar. A prática recomendada é usar chaves SSH em vez de senha.

Portanto, desabilitamos totalmente a autenticação por senha.

Vá para a linha

#PasswordAuthentication yes

e substitua-o por

PasswordAuthentication no

A ativação do encaminhamento oferece mais opções aos invasores que já adivinharam as senhas.

Então, nós o desabilitamos. Isso nos dá um pouco de segurança

Vá para as linhas

AllowTcpForwarding yes
X11Forwarding yes

e substitua-os por

AllowTcpForwarding no
X11Forwarding no

Podemos permitir explicitamente determinados usuários e negar o login de determinados usuários.

Para isso temos que colocar as seguintes linhas na parte inferior do arquivo de configuração.

AllowUsers Fred Wilma
DenyUsers Dino Pebbles

Para um desempenho ideal do laptop, permitimos duas conexões pendentes. Entre a terceira e a décima conexão o sistema começará a descartar conexões aleatoriamente de 30% até 100% na décima conexão simultânea. Isso pode ser feito pela seguinte linha

MaxStartups 2:30:10

Para registrar mais erros e outras informações úteis, alteramos a linha

LogLevel INFO

em LogLevel VERBOSE

Para assustar invasores novatos, podemos exibir um banner. Removemos a hash tag do início da linha

#Banner /etc/issue.net

para fazer isso

Banner /etc/issue.net

Então vamos ao terminal e digitamos:

sudo gedit /etc/issue.net

***************************************************************************
                        NOTICE TO USERS
This computer system is the private property of its owner, whether
individual, corporate or government.  It is for authorized use only.
Users (authorized or unauthorized) have no explicit or implicit
expectation of privacy.
Any or all uses of this system and all files on this system may be
intercepted, monitored, recorded, copied, audited, inspected, and
disclosed to your employer, to authorized site, government, and law
enforcement personnel, as well as authorized officials of government
agencies, both domestic and foreign.
By using this system, the user consents to such interception, monitoring,
recording, copying, auditing, inspection, and disclosure at the
discretion of such personnel or officials.  Unauthorized or improper use
of this system may result in civil and criminal penalties and
administrative or disciplinary action, as appropriate. By continuing to
use this system you indicate your awareness of and consent to these terms
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the
conditions stated in this warning.
****************************************************************************

Agora salvamos e fechamos o arquivo de configuração e reiniciamos o ssh digitando no terminal:

systemctl restart ssh

Em seguida, configuramos as chaves SSH. Existem dois pares de chaves SSH públicas e privadas. As chaves públicas estão presentes nos servidores e as chaves privadas estão presentes nos indivíduos. Se alguém puder combinar sua chave privada com a chave pública, somente ele poderá fazer o login. Além disso opcionalmente as chaves privadas podem ser protegidas por uma frase secreta Além disso quando as chaves são geradas usando uma encriptação de 4096 bitséquase impossível quebrá-las pela força bruta

Etapa um – Crie o par de chaves RSA:

Digite no terminal

ssh-keygen -t rsa -b 4096

Aqui usamos criptografia de 64 bits para mais segurança

Passo dois - Armazene as chaves e a senha:

Siga as instruções na tela, indique o local desejado para armazenamento das chaves, recomendado aceitar o padrão, opte pela senha, forneça uma senha forte, lembre-se dela.

A tela é mais ou menos assim:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

Passo três – Copie a chave pública:

Digite no terminal

ssh-copy-id [email protected]

Aqui 123.45.56.78 é o endereço IP do servidor

No caso de localhost é

ssh-copy-id user@localmachinename

A tela é algo assim

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

~/.ssh/authorized_keys

para ter certeza de que não adicionamos chaves extras que você não esperava.

Agora nossa instalação está concluída. Para fazer login precisamos digitar no terminal:

ssh username@servername

Então, quando for solicitada a senha, precisamos fornecê-la.

Agora vamos habilitar o login root do servidor opessh. Primeiro temos que habilitar a senha do sudo, pois ela está desabilitada no Ubuntu por padrão.

Para isso, digitamos no terminal o seguinte, a tela ficará mais ou menos assim:

sudo passwd
[sudo] password for [username]: [Type your user password and press return]
Type new UNIX password: [Type the root password you want]
Retype new UNIX password: [Retype the root password you chosen before]
passwd: password updated successfully

Agora temos que editar o arquivo /etc/sudoers.

Aqui usamos o editor chamado visudo

É porque o visudo tem como único propósito editar o arquivo sudoes

No Ubuntu, por padrão, os arquivos de configuração são abertos pelo editor nano

Para alterá-lo digite no terminal:

sudo update-alternatives --config editor

A seguinte tela aparecerá:

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Digite 3 e pressione enter

Então digite:

sudo visudo

Vá para a linha que diz

Defaults    env_reset

Pressione Enter

Acima, uma nova linha é criada

Tipo:

Padrão rootpw

use barra de espaço, não TAB

Pressione Esc --> :x --> Enter

No tipo de terminal:

gedit /etc/ssh/sshd_config

Vá para a linha:

PermitRootLogin password-prohibited

e mude para

PermitRootLogin yes

Próximo passo para a linha:

PasswordAuthentication no

e mude para

PasswordAuthentication yes

Salvar e fechar

Então reinicie o SSH

service ssh restart

Agora é hora de gerar novamente o par de chaves pública-privada ssh para o usuário root.

Digite no terminal

ssh-keygen -t rsa -b 4096

Passo dois - Armazene as chaves e a senha:

Siga as instruções na tela, forneça o local desejado para armazenamento das chaves, NÃO aceite o padrão, pois desta vez você terá que criar um novo par, o padrão já foi criado, opte pela senha, forneça uma senha forte, lembre-se dela.

A tela é mais ou menos assim:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): u-root-id_rsa 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/u-root-id_rsa.
Your public key has been saved in /home/demo/.ssh/u-root-id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:

+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

Então digite no terminal:

ssh-copy-id -i u-root-id_rsa.pub root@localmachinename

A tela de saída pode mostrar:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password: 

Agora tente fazer login na máquina, com "ssh '[e-mail protegido]'", e faça check-in:

~/.ssh/authorized_keys

para ter certeza de que não adicionamos chaves extras que você não esperava.

Agora concedemos acesso de chave privada ao root para fazer login

Para testar digite:

ssh root@localmachine

Novamente no tipo de terminal:

gedit /etc/ssh/sshd_config

vá para a linha:

PasswordAuthentication yes

e mude para

PasswordAuthentication no

Salvar e fechar

Então reinicie o SSH

service ssh restart

Ele solicitará a senha. A senha permanece a mesma. Dê.

Agora o root poderá fazer login com sucesso

Agora, para mais segurança, temos que adicionar firewall

Tipo:

apt install ufw

Agora comece

enable ufw

Obtenha uma lista dos processos atualmente em execução

ufw app list

OpenSSH será listado lá.

ALow it through firewall
ufw allow OpenSSH

Reinicie o firewall

systemctl restart ufw

Nossa instalação está concluída

informação relacionada