SSH es el principal protocolo utilizado para conectar y administrar servidores Linux. Debido a esto, es uno de los puertos más frecuentemente atacados cuando los actores nefastos intentan acceder a su servidor. En este artículo, discutiremos algunos métodos que puede utilizar para hacer que su conexión SSH sea más segura.
Nota: Dependiendo del producto que tenga con OVHcloud, algunos de estos pasos pueden haber sido ya realizados. Si este es el caso, simplemente proceda al siguiente paso. Además, los pasos de este artículo suponen que te autentificas en tu servidor usando claves SSH. Si utiliza una contraseña en su lugar, algunos pasos de este artículo no funcionarán.
Requisitos previos
- Cómo usar claves SSH
- Servidor que ejecuta CentOS 7
Temas
- Creación de un nuevo usuario Sudo
- Cambio del demonio SSH Configuración
Crear un nuevo usuario Sudo
Siempre es una buena práctica no permitir la autenticación de root a través de SSH ya que este es el nombre de usuario que la gente tratará de hackear más. Por lo tanto, lo primero que queremos hacer para asegurar nuestro servidor es crear un nuevo usuario sudo para SSH. Para ello, introduzca el siguiente comando, sustituyendo el nombre de usuario rojo por el nombre de usuario de su elección:
# adduser username
A continuación, vamos a establecer una contraseña para el usuario:
# passwd username
Sigue el aviso para crear y confirmar la contraseña. Ahora, queremos dar a nuestro nuevo usuario privilegios sudo para que podamos convertirnos en root y ejecutar comandos que necesitan privilegios administrativos. Podemos hacerlo introduciendo el siguiente comando.
# usermod -aG wheel username
Por último, queremos habilitar a nuestro nuevo usuario para que se autentique utilizando la clave pública SSH que ya hemos proporcionado al usuario root. Podemos utilizar un simple comando rsync para copiar la clave pública sobre el archivo authorized_keys de nuestro nuevo usuario.
# rsync --archive --chown=username:username ~/.ssh /home/username
Antes de proceder al siguiente paso, cierre la sesión y asegúrese de que puede autenticarse en el servidor como el nuevo usuario usando SSH. Si no puede iniciar la sesión como su nuevo usuario, todavía podrá iniciar la sesión como root; confirme que todos los comandos se han introducido correctamente e intente iniciar la sesión como su nuevo usuario de nuevo.
Cambiando la configuración del demonio SSH
Dado que estamos utilizando claves SSH y un nuevo usuario para autenticar a nuestro servidor, nunca queremos que nadie se autentique utilizando una contraseña o el nombre de usuario root. Para lograr esto, primero queremos navegar al archivo de configuración para el demonio OpenSSH. Para ello, abra el archivo en un editor de texto de su elección utilizando el siguiente comando:
$ sudo vi /etc/ssh/sshd_config
Hay tres cambios que queremos hacer en este archivo. En primer lugar, queremos cambiar el puerto en el que OpenSSH escucha las peticiones.
Atención: Si tienes algún firewall activo, tendrás que permitir el tráfico a través del puerto que elijas o te bloquearás en tu servidor. Si usted se bloquea de su servidor, puede recuperar el acceso a través de IPMI o KVM. Para obtener más información, por favor, consulte nuestro artículo de Introducción a IPMI.
En la parte superior del archivo, verá una sección que se parece a esto por defecto:
#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::
Descomente la sección «Puerto» y elija cualquier número de puerto válido como en el siguiente ejemplo. En nuestro ejemplo, estamos utilizando el puerto 12345.
Port 12345#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::
A continuación, desplácese hacia abajo a la parte # Authentication:
del archivo. Verá cinco opciones que aparecerán de la siguiente manera por defecto:
#LoginGraceTime 2m#PermitRootLogin yes
PermitRootLogin yes#StrictModes#MaxAuthTries 6#MaxSessions 10
Aquí queremos cambiar el «sí» junto a «PermitRootLogin» a «no». Aparecerá de la siguiente manera:
#LoginGraceTime 2m
#PermitRootLogin yesPermitRootLogin no#StrictModes#MaxAuthTries 6#MaxSessions 10
Ahora queremos desplazarnos hacia abajo en el archivo sshd_config un poco más para hacer nuestro cambio final – deshabilitar la autenticación por contraseña. Usted verá una sección que se parece a esto por defecto:
# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication yes
Queremos cambiar el «sí» al lado de «PasswordAuthentication» a un «no». Aparecerá así:
# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication no
Guardar y salir del archivo. Por último, debemos reiniciar OpenSSH para que los cambios surtan efecto. Hazlo introduciendo el siguiente comando:
$ sudo systemctl restart sshd.service
Tomemos un segundo para revisar lo que hicimos aquí. Cambiamos el número de puerto que usamos para escuchar las peticiones SSH. Luego, deshabilitamos el acceso SSH para el usuario root o cualquier usuario que intente autenticarse con una contraseña. Si hemos hecho esto correctamente, el siguiente comando ya no funcionará para iniciar sesión en el servidor.
$ ssh [email protected]
Para iniciar sesión ahora, vamos a tener que especificar el número de puerto que estamos utilizando para escuchar las peticiones SSH. Eso significa que a partir de ahora tendremos que usar el siguiente comando, sustituyendo el número que aparece junto a «-p» por el número de puerto que elegimos antes:
$ ssh -p 12345 [email protected]
Asegúrate de que este comando funciona y que el anterior no. Si lo hace, ya está todo listo para acceder a su servidor de forma segura a través de SSH.
Conclusión
Con tantos malos actores que utilizan Internet, nunca ha sido más importante asegurar cualquier punto de entrada potencial a su servidor. Siguiendo esta guía, usted ha ayudado a la seguridad del punto de entrada más común en los servidores Linux.