¿Cómo instalar un servidor OpenSSH seguro en Ubuntu?

¿Cómo instalar un servidor OpenSSH seguro en Ubuntu?

Quiero instalar el servidor OpenSSH en Ubuntu. ¿Cómo hacerlo?

Necesito hacer lo siguiente:

  1. Configurar el servidor OpenSSH

  2. Configurar el par de claves pública-privada ssh para el usuario

  3. Deshabilitar el inicio de sesión con contraseña

  4. Habilitar usuario root

  5. Configurar el par de claves pública-privada ssh para el usuario root

  6. Configurar contraseña

Respuesta1

Vaya a la terminal y escriba:

sudo su
aptitude install openssh-server openssh-client

Pruebe la instalación

ps -A | grep sshd

Si el resultado es algo como esto:

<some number> ?        00:00:00 sshd

Entonces el demonio ssh se está ejecutando.

Nuevamente escriba terminal;

ss -lnp | grep sshd

Si el resultado es algo como esto:

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

Entonces significa que el demonio ssh está escuchando conexiones entrantes.

Ahora editamos el archivo de configuración. Primero hacemos una copia de seguridad del archivo original.

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

Ahora abrimos el archivo de configuración para editarlo.

sudo gedit /etc/ssh/sshd_config

Las contraseñas débiles son fáciles de adivinar. La mejor práctica es utilizar claves SSH en lugar de contraseña.

Entonces deshabilitamos la autenticación de contraseña por completo.

ir a la linea

#PasswordAuthentication yes

y reemplazarlo con

PasswordAuthentication no

Habilitar el reenvío brinda más opciones a los atacantes que ya han adivinado las contraseñas.

Entonces lo desactivamos. Nos da un poco de seguridad

ir a las lineas

AllowTcpForwarding yes
X11Forwarding yes

y reemplazarlos con

AllowTcpForwarding no
X11Forwarding no

Podemos permitir explícitamente a ciertos usuarios y negarles el inicio de sesión a ciertos usuarios.

Para eso tenemos que poner las siguientes líneas al final del archivo de configuración.

AllowUsers Fred Wilma
DenyUsers Dino Pebbles

Para un rendimiento óptimo de la computadora portátil, permitimos dos conexiones pendientes. Entre la tercera y la décima conexión, el sistema comenzará a eliminar conexiones aleatoriamente desde el 30% hasta el 100% en la décima conexión simultánea. Esto se puede hacer mediante la siguiente línea.

MaxStartups 2:30:10

Para registrar más errores y otra información útil modificamos la línea

LogLevel INFO

en LogLevel DETALLE

Para ahuyentar a los atacantes novatos podemos mostrar un banner. Eliminamos la etiqueta hash del principio de la línea.

#Banner /etc/issue.net

para hacerlo

Banner /etc/issue.net

Luego vamos a la terminal y escribimos:

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.
****************************************************************************

Ahora guardamos y cerramos el archivo de configuración y reiniciamos ssh escribiendo en la terminal:

systemctl restart ssh

A continuación configuramos las claves SSH. Hay dos pares de claves SSH públicas y privadas. Las claves públicas están presentes en los servidores y las claves privadas están presentes en los individuos. Si alguien puede hacer coincidir su clave privada con la pública, solo él/ella puede iniciar sesión. Además, opcionalmente, las claves privadas se pueden proteger mediante una frase de contraseña. Además, cuando las claves se generan mediante cifrado de 4096 bits, es casi imposible romperlas por fuerza bruta.

Paso uno: cree el par de claves RSA:

Escriba la terminal

ssh-keygen -t rsa -b 4096

Aquí utilizamos cifrado de 64 bits para mayor seguridad.

Paso dos: guarde las claves y la frase de contraseña:

Siga las instrucciones en pantalla, proporcione la ubicación deseada para almacenar las claves, se recomienda aceptar la predeterminada, opte por una frase de contraseña, proporcione una frase de contraseña segura y recuérdela.

La pantalla es algo como esto:

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   |
|                 |
+-----------------+

Paso tres: copie la clave pública:

Escriba la terminal

ssh-copy-id [email protected]

Aquí 123.45.56.78 es la dirección IP del servidor

En el caso de localhost es

ssh-copy-id user@localmachinename

La pantalla es algo como esto.

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 asegurarnos de que no hayamos agregado claves adicionales que no esperaba.

Ahora nuestra instalación está completa. Para iniciar sesión debemos escribir en la terminal:

ssh username@servername

Luego, cuando se nos solicite una frase de contraseña, debemos proporcionarla.

Ahora debemos habilitar el inicio de sesión raíz del servidor opessh. Primero tenemos que habilitar la contraseña sudo, ya que está deshabilitada en Ubuntu de forma predeterminada.

Para eso escribimos en la terminal lo siguiente, la pantalla será algo como esta:

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

Ahora tenemos que editar el archivo /etc/sudoers.

Aquí usamos el editor llamado visudo.

Es porque visudo tiene el único propósito de editar el archivo sudoes.

En Ubuntu, de forma predeterminada, los archivos de configuración se abren con el nano editor.

Para cambiarlo escriba en la terminal:

sudo update-alternatives --config editor

La siguiente pantalla 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:

Escribe 3 y presiona enter

Luego escribe:

sudo visudo

Vaya a la línea que dice

Defaults    env_reset

Presione enter

Arriba se crea una nueva línea

Tipo:

rootpw predeterminado

use la barra espaciadora, no TAB

Presione Esc --> :x --> Entrar

En tipo de terminal:

gedit /etc/ssh/sshd_config

Pasar a la línea:

PermitRootLogin password-prohibited

y cambiarlo a

PermitRootLogin yes

Siguiente paso a la línea:

PasswordAuthentication no

y cambiarlo a

PasswordAuthentication yes

Guardar y cerrar

Luego reinicie SSH

service ssh restart

Ahora es el momento de generar nuevamente el par de claves pública-privada ssh para el usuario raíz.

Escriba la terminal

ssh-keygen -t rsa -b 4096

Paso dos: guarde las claves y la frase de contraseña:

Siga las instrucciones en pantalla, proporcione la ubicación deseada para el almacenamiento de claves, NO acepte la contraseña predeterminada ya que esta vez debe crear un nuevo par, la predeterminada ya se ha creado, opte por una frase de contraseña, proporcione una frase de contraseña segura, recuérdela.

La pantalla es algo como esto:

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   |
|                 |
+-----------------+

Luego escribe en la terminal:

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

La pantalla de salida puede 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: 

Ahora intenta iniciar sesión en la máquina, con "ssh '[correo electrónico protegido]'", y regístrese:

~/.ssh/authorized_keys

para asegurarnos de que no hayamos agregado claves adicionales que no esperaba.

Ahora hemos otorgado acceso de clave privada a root para iniciar sesión

Para probar escriba:

ssh root@localmachine

De nuevo en tipo de terminal:

gedit /etc/ssh/sshd_config

pasar a la línea:

PasswordAuthentication yes

y cambiarlo a

PasswordAuthentication no

Guardar y cerrar

Luego reinicie SSH

service ssh restart

Le pedirá una frase de contraseña. La frase de contraseña sigue siendo la misma. Darle.

Ahora el root podrá iniciar sesión correctamente.

Ahora para mayor seguridad tenemos que agregar firewall.

Tipo:

apt install ufw

ahora empiezalo

enable ufw

Obtenga una lista de los procesos actualmente en ejecución

ufw app list

OpenSSH aparecerá allí.

ALow it through firewall
ufw allow OpenSSH

Reiniciar el cortafuegos

systemctl restart ufw

Nuestra instalación está completa.

información relacionada