5 consejos para proteger SSH en servidores Linux
SSH es la herramienta que uso todos los días para iniciar sesión en servidores Linux remotos y manejar mis tareas administrativas. Mi vida sería más complicada y menos segura sin SSH. Sin embargo, esto no significa que SSH esté configurado de fábrica a su gusto. Hay algunas debilidades en la configuración predeterminada y en la forma en que puede usar la herramienta.
Vamos a sacar esto del camino.
VER: 30 cumpleaños de Linux: Celebrando el sistema operativo de código abierto (PDF gratuito) (Tecnopedia)
Estos son mis cinco consejos más sencillos para asegurar SSH en máquinas Linux. Procesar estos consejos no debería llevarte más de cinco minutos y, al final, te alegrarás de haberte tomado el tiempo para hacerlo.
que necesitas
Para hacer esto, todo lo que necesita es una instancia de Linux en ejecución y un usuario con privilegios de sudo.
Consejo 1: cambie el puerto predeterminado
Lo primero que haremos será cambiar el puerto predeterminado de 22 a uno muy usado para ataques de fuerza bruta y otros. Para hacer esto, abra el archivo de configuración del demonio SSH con el siguiente comando:
sudo nano /etc/ssh/sshd_config
En ese archivo, busque:
#Port 22
cambiarlo a:
Port 2124
Guarde y cierre el archivo. Reinicie el demonio con el comando:
sudo systemctl restart sshd
Antes de salir de esta terminal, asegúrese de que puede volver a conectarse al servidor usando otra instancia de SSH y agregue la opción -p 2124 (o el puerto que decida) al final, así:
ssh 192.168.1.63 -p 2124
Consejo 2: deshabilite el reenvío de puertos X11/TCP
A continuación, deshabilitaremos el reenvío de puertos TCP y X11, ya que un atacante puede explotar esta debilidad para obtener acceso a otros sistemas en su red. Para hacer esto, vuelva a abrir el archivo de configuración del daemon y busque las siguientes dos líneas:
#AllowTcpForwarding yes
X11Forwarding yes
Cambie estas líneas a:
AllowTcpForwarding no
X11Forwarding no
Guarde y cierre el archivo.
Aplazaremos el reinicio del demonio SSH hasta que hayamos terminado con el resto de la configuración.
Consejo 3: deshabilite el uso de contraseñas en blanco
En el archivo del demonio SSH, queremos evitar que los usuarios con contraseñas en blanco obtengan acceso. Si tiene una política que no permite contraseñas vacías, no tiene que preocuparse por eso, pero es mejor prevenir que lamentar.
En el archivo de configuración del daemon, busque la siguiente línea:
#PermitEmptyPasswords no
Cambia esa línea a:
PermitEmptyPasswords no
Guarde y cierre el archivo.
Como hemos terminado de configurar el demonio, reinicie el demonio SSH con el siguiente comando:
sudo systemctl restart sshd
Consejo 4: restrinja los inicios de sesión SSH a direcciones IP específicas
Ahora vamos a restringir todos los inicios de sesión SSH a direcciones IP específicas. Para hacer esto, abra el archivo hosts.deny con el siguiente comando:
sudo nano /etc/hosts.deny
En la parte inferior del archivo, agregue lo siguiente:
sshd: ALL
Guarde y cierre el archivo.
A continuación, abra el archivo hosts.allow con el siguiente comando:
sudo nano /etc/hosts.allow
En la parte inferior del archivo, agregue una línea separada por comas con todas las direcciones IP que desea permitir, así:
sshd: 192.168.1.62, 192.168.1.11, 192.168.1.100
Si desea permitir todas las máquinas en la LAN, puede usar algo como:
sshd: 192.168.1.0/24
Guarde y cierre el archivo.
Consejo 5: use la autenticación de clave SSH
Este es uno de los consejos más importantes. El uso de la autenticación con clave SSH es mucho más seguro que el uso de contraseñas estándar. Entonces, ¿cómo lo configuramos?
simple. Use el siguiente comando para generar una clave SSH en el cliente que desea usar para conectarse al servidor:
ssh-keygen -t rsa
A continuación, copiamos la clave al servidor:
ssh-copy-id SERVER
donde SERVIDOR es la dirección IP de su servidor.
Hay una advertencia a esto. Si ha cambiado el puerto SSH predeterminado, no puede usar el comando ssh-copy-id porque no acepta argumentos. En su lugar, debe configurar una entrada de host en ~/.ssh/config como esta:
Host NAME
HostName SERVER
Port PORT
Dónde:
- NOMBRE es el nombre legible por humanos del servidor.
- SERVIDOR es la dirección IP del servidor.
- PORT es el puerto no predeterminado que configuró
Guarde y cierre el archivo. Ahora puede copiar esa clave (a un servidor SSH configurado con un puerto no estándar) con lo siguiente:
ssh-copy-id NAME
donde NOMBRE es el nombre legible por humanos dado al servidor en el archivo de configuración.
Después de copiar la clave de autenticación SSH en el servidor, abra una nueva terminal y asegúrese de que todavía puede conectarse al servidor a través de SSH. Si puede, asegúrese de copiar la clave SSH de cada cliente que necesite acceder al servidor, luego deshabilite la autenticación de contraseña abriendo nuevamente el archivo de configuración del daemon:
sudo nano /etc/ssh/sshd_config
Busque líneas:
#PasswordAuthentication yes
Cambia esa línea a:
PasswordAuthentication no
Guarde y cierre el archivo y reinicie el demonio SSH con los siguientes comandos:
sudo systemctl restart sshd
Ahora, solo aquellos que tienen una clave SSH en el servidor pueden iniciar sesión.
Avanzar. Después de unos 5 minutos, ha bloqueado SSH en el servidor. También debe instalar y configurar fail2ban, pero esto le llevará más de 5 minutos. Disfrute de una capa extra de seguridad.
Suscríbete a Tecnopedia Cómo hacer que la tecnología funcione en YouTube Obtenga los últimos consejos técnicos para profesionales de negocios de Jack Wallen.