SSH es un protocolo ampliamente utilizado para acceder a servidores Linux de forma segura. La mayoría de los usuarios utilizan conexiones SSH con la configuración predeterminada para conectarse a un servidor remoto. Sin embargo, las configuraciones predeterminadas no seguras también presentan varios riesgos de seguridad.

La cuenta raíz de un servidor con acceso SSH abierto puede estar en riesgo. Y especialmente si está utilizando una dirección IP pública, es mucho más fácil piratear la contraseña de root. Por lo tanto, es necesario tener conocimientos sobre seguridad SSH.

Así es como puede proteger las conexiones de su servidor SSH en Linux.

1. Deshabilitar inicios de sesión de usuario raíz

Para esto, primero, deshabilite el acceso SSH del usuario root y crear un nuevo usuario con privilegios de root. Desactivar el acceso al servidor para el usuario raíz es una estrategia de defensa que evita que los atacantes logren su objetivo de inmiscuirse en el sistema. Por ejemplo, puede crear un usuario llamado raíz de ejemplo como sigue:

instagram viewer
useradd -m ejemploraíz
passwd ejemplo raíz
usermod -aG sudo raíz de ejemplo

Aquí hay una breve explicación de los comandos antes mencionados:

  • agregar usuario crea un nuevo usuario y el -metro El parámetro crea una carpeta debajo del hogar directorio para el usuario que ha creado.
  • los Contraseña El comando es para asignar una contraseña al nuevo usuario. Recuerde que las contraseñas que asigne a los usuarios deben ser complejas y difíciles de adivinar.
  • modusuario -aG sudo agrega el usuario recién creado al grupo de administración.

Después del proceso de creación del usuario, es necesario realizar algunos cambios en el sshd_config expediente. Puede encontrar este archivo en /etc/ssh/sshd_config. Abra el archivo con cualquier editor de texto y realice los siguientes cambios:

# Autenticación: 
#LoginGraceTime 2m
PermitRootLogin no
AllowUsers ejemplo de raíz

PermitRootLogin line evitará que el usuario raíz obtenga acceso remoto mediante SSH. Incluido raíz de ejemplo en el Permitir usuarios list otorga los permisos necesarios al usuario.

Finalmente, reinicie el servicio SSH usando el siguiente comando:

sudo systemctl reiniciar ssh

Si eso falla y recibe un mensaje de error, pruebe el siguiente comando. Esto puede diferir según la distribución de Linux que utilice.

sudo systemctl reiniciar sshd

2. Cambio del puerto predeterminado

El puerto de conexión SSH predeterminado es 22. Por supuesto, todos los atacantes lo saben y, por lo tanto, es necesario cambiar el número de puerto predeterminado para garantizar la seguridad SSH. Aunque un atacante puede encontrar fácilmente el nuevo número de puerto con un escaneo Nmap, el objetivo aquí es dificultar el trabajo del atacante.

Para cambiar el número de puerto, abra /etc/ssh/sshd_config y realice los siguientes cambios en el archivo:

Incluir /etc/ssh/sshd_config.d/*.conf
Puerto 5922

Después de este paso, reinicie el servicio SSH nuevamente con sudo systemctl reiniciar ssh. Ahora puede acceder a su servidor utilizando el puerto que acaba de definir. Si utiliza un cortafuegos, también debe realizar allí los cambios necesarios en las reglas. Al ejecutar el netstat-tlpn comando, puede ver que su número de puerto para SSH ha cambiado.

3. Bloquear acceso para usuarios con contraseñas en blanco

Puede haber usuarios sin contraseñas en su sistema que podría haber creado accidentalmente. Para evitar que dichos usuarios accedan a los servidores, puede configurar el PermitEmptyContraseñas valor de línea en el sshd_config archivo a no.

PermitEmptyPasswords no

4. Limite los intentos de inicio de sesión/acceso

De forma predeterminada, puede acceder al servidor realizando tantos intentos de contraseña como desee. Sin embargo, los atacantes pueden usar esta vulnerabilidad para aplicar fuerza bruta al servidor. Puede cancelar automáticamente la conexión SSH después de un cierto número de intentos especificando el número de intentos de contraseña permitidos.

Para ello, cambia el MaxAuthTries valor en el sshd_config expediente.

MaxAuthTries 3

5. Uso de la versión 2 de SSH

La segunda versión de SSH se lanzó debido a las numerosas vulnerabilidades de la primera versión. De forma predeterminada, puede permitir que el servidor use la segunda versión agregando el Protocolo parámetro a su sshd_config expediente. De esta forma, todas tus futuras conexiones utilizarán la segunda versión de SSH.

Incluir /etc/ssh/sshd_config.d/*.conf 
Protocolo 2

6. Desactivar el reenvío de puertos TCP y el reenvío X11

Los atacantes pueden intentar obtener acceso a sus otros sistemas mediante el reenvío de puertos a través de conexiones SSH. Para evitar esto, puede apagar el PermitirTcpReenvío y X11Reenvío caracteristicas en el sshd_config expediente.

X11Reenvío no 
AllowTcpReenvío no

7. Conexión con una clave SSH

Una de las formas más seguras de conectarse a su servidor es usar una clave SSH. Cuando usa una clave SSH, puede acceder al servidor sin una contraseña. Además, puede desactivar por completo el acceso con contraseña al servidor cambiando los parámetros relacionados con la contraseña en el sshd_config expediente.

Cuando crea una clave SSH, hay dos claves: Público y Privado. La clave pública se carga en el servidor al que desea conectarse y la clave privada se almacena en la computadora con la que establecerá la conexión.

Cree una clave SSH con el ssh-keygen comando en su computadora. no dejes el Frase de contraseña campo en blanco y recuerde la contraseña que ingresó aquí. Si lo deja en blanco, solo podrá acceder a él con el archivo de clave SSH. Sin embargo, si establece una contraseña, puede evitar que un atacante con el archivo clave acceda a él. Como ejemplo, puede crear una clave SSH con el siguiente comando:

ssh-keygen

8. Restricciones de IP para conexiones SSH

La mayoría de las veces, el firewall bloquea el acceso utilizando marcos de sus propios estándares y tiene como objetivo proteger el servidor. Sin embargo, esto no siempre es suficiente y es necesario aumentar este potencial de seguridad.

Para ello, abra el /etc/hosts.allow expediente. Con las adiciones que realice a este archivo, puede restringir el permiso SSH, permitir un bloqueo de IP específico o ingresar una sola IP y bloquear todas las direcciones IP restantes con el comando denegar.

A continuación verá algunos ajustes de muestra. Después de hacer esto, reinicie el servicio SSH como de costumbre para guardar los cambios.

La importancia de la seguridad del servidor Linux

Los datos y los problemas de seguridad de los datos son bastante detallados y deben ser considerados por todos los administradores del servidor. La seguridad del servidor es un tema muy delicado ya que el foco principal de los ataques son los servidores web y contienen casi toda la información sobre un sistema. Dado que la mayoría de los servidores se ejecutan en la infraestructura de Linux, es muy importante estar familiarizado con el sistema Linux y la administración del servidor.

La seguridad SSH es solo una de las formas de proteger los servidores. Es posible minimizar el daño que recibes deteniendo, bloqueando o ralentizando un ataque. Además de proporcionar seguridad SSH, existen muchos métodos diferentes que puede implementar para proteger sus servidores Linux.