GNU/Linux >> Tutoriales Linux >  >> Linux

7 opciones de seguridad predeterminadas de OpenSSH que debe cambiar en /etc/ssh/sshd_config

Las opciones de OpenSSH se controlan a través del archivo /etc/ssh/sshd_config. Este artículo explica las 7 opciones predeterminadas en el archivo sshd_config que debe cambiar.

En sshd_config, las líneas que comienzan con # son comentarios. Para aquellas opciones que usan los valores predeterminados, el archivo sshd_config contiene una línea comentada con la opción y su valor predeterminado.

Esto nos facilita las cosas, ya que podemos ver el nombre de la opción OpenSSH y el valor predeterminado sin tener que buscar en otro lugar.

Por ejemplo, el archivo sshd_config contiene la siguiente línea comentada. Esto indica que la opción PubkeyAuthentication contiene "sí" como valor predeterminado.

$ grep -i pubkey /etc/ssh/sshd_config
#PubkeyAuthentication yes

Si desea cambiar esto, debe eliminar el comentario y cambiar el valor (de sí a no) como se muestra a continuación.

$ vi /etc/ssh/sshd_config
PubkeyAuthentication no

Mostré lo anterior solo como un ejemplo. No necesita cambiar el valor predeterminado de la opción PubkeyAuthentication, ya que permitir la autenticación de clave pública es bueno.

No necesita modificar ninguno de los valores predeterminados en el archivo sshd_config, excepto las 7 opciones mencionadas en este artículo.

1. Deshabilitar inicio de sesión raíz (PermitRootLogin)

De forma predeterminada, puede acceder al servidor mediante ssh como root. Es mejor no permitir que root inicie sesión directamente en el servidor. En su lugar, debe iniciar sesión en el sistema como su cuenta y luego hacer 'su -' para iniciar sesión como root.

Si tiene varios administradores de sistemas en su organización y si todos inician sesión en el servidor directamente como root, es posible que no sepa qué administrador de sistemas inició sesión como root. En cambio, si deshabilita el inicio de sesión como root, los administradores de sistemas se ven obligados a iniciar sesión primero con su cuenta, antes de que puedan hacer 'su -', esto facilita la auditoría.

Agregue la siguiente entrada a sshd_config para deshabilitar la raíz para iniciar sesión en el servidor directamente.

$ vi /etc/ssh/sshd_config
PermitRootLogin no

2. Permitir solo usuarios o grupos específicos (AllowUsers AllowGroups)

De forma predeterminada, cualquiera que se haya autenticado con éxito puede iniciar sesión. En su lugar, puede restringir a qué usuarios (o grupos) permite iniciar sesión en el sistema.

Esto es útil cuando ha creado varias cuentas de usuario en el sistema, pero desea que solo algunas de ellas inicien sesión.

Esto también es útil cuando utiliza NIS, openLDAP (o algún otro sistema externo) para la autenticación. Todos los usuarios de su empresa pueden tener una cuenta en NIS, OpenLDAP, etc. Pero, en un servidor específico, desea que solo algunos de ellos inicien sesión. Por ejemplo, en el sistema de producción desea que solo los administradores de sistemas inicien sesión.

Agregue la siguiente entrada al archivo sshd_config para permitir que solo usuarios específicos inicien sesión en el sistema. En el siguiente ejemplo, solo ramesh, john y jason pueden iniciar sesión en este sistema. Los nombres de usuario deben estar separados por espacios.

$ vi /etc/ssh/sshd_config
AllowUsers ramesh john jason

Agregue la siguiente entrada al archivo sshd_config para permitir que solo los usuarios que pertenecen a un grupo específico inicien sesión. En el ejemplo a continuación, solo los usuarios que pertenecen al grupo sysadmin y dba pueden iniciar sesión en el sistema.

$ vi /etc/ssh/sshd_config
AllowGroups sysadmin dba

3. Denegar usuarios o grupos específicos (DenyUsers DenyGroups)

En lugar de permitir usuarios (o grupos) específicos, también puede denegar usuarios o grupos específicos.

Agregue la siguiente entrada al archivo sshd_config para impedir que usuarios específicos inicien sesión en el sistema. En el siguiente ejemplo, cvs, apache, jane no puede iniciar sesión en este sistema. Los nombres de usuario deben estar separados por espacios.

$ vi /etc/ssh/sshd_config
DenyUsers cvs apache jane

Agregue la siguiente entrada al archivo sshd_config para denegar el inicio de sesión a los usuarios que pertenecen a un grupo específico. En el ejemplo a continuación, los usuarios que pertenecen a desarrolladores y un grupo de control de calidad no pueden iniciar sesión en el sistema.

$ vi /etc/ssh/sshd_config
DenyGroups developers qa

Nota:Puede usar una combinación de todas las directivas Permitir y Denegar. Se procesa en este orden:DenyUsers, AllowUsers, DenyGroups y finalmente AllowGroups

4. Cambiar número de puerto SSHD (Puerto)

Por defecto, ssh se ejecuta en el puerto 22. La mayoría de los atacantes verificarán si un servidor está abierto en el puerto 22 y usarán aleatoriamente la fuerza bruta para iniciar sesión en el servidor usando varias combinaciones de nombre de usuario y contraseña.

Si cambia el número de puerto a algo diferente, otros necesitan saber exactamente qué puerto usar para iniciar sesión en el servidor usando ssh. El ejemplo a continuación usa el puerto 222 para ssh.

$ vi /etc/ssh/sshd_config
Port 222

Desde sus registros (/var/log/secure), si ve muchos inicios de sesión no válidos usando ssh para cuentas que no existen en su sistema, desde la
dirección IP que no reconoce, es posible que ser un ataque de fuerza bruta. Ese tipo de inicio de sesión no válido de ssh se detendrá si cambia el número de puerto.

Tenga en cuenta que esto causa pocos inconvenientes para su equipo que inicia sesión en el sistema, ya que necesitan saber tanto la dirección IP como el número de puerto.

5. Cambiar el tiempo de gracia de inicio de sesión (LoginGraceTime)

Cuando accede a un servidor, tiene 2 minutos para iniciar sesión. Si no inicia sesión correctamente en 2 minutos, ssh se desconectará.
2 minutos para iniciar sesión correctamente es demasiado. Debería considerar cambiarlo a 30 segundos, o puede ser 1 minuto.

Agregue la siguiente entrada al archivo sshd_config para cambiar el tiempo de gracia de inicio de sesión de 2 minutos a 1 minuto.

$ vi /etc/ssh/sshd_config
LoginGraceTime 1m

6. Restrinja la interfaz (dirección IP) para iniciar sesión (dirección de escucha)

Si tiene varias interfaces en el servidor que están configuradas con diferentes direcciones IP, es posible que no desee que todos inicien sesión en el servidor utilizando todas esas direcciones IP.

Supongamos que tiene las siguientes 4 interfaces en el servidor:

  • eth0 – 192.168.10.200
  • eth1 – 192.168.10.201
  • eth2 – 192.168.10.202
  • eth3 – 192.168.10.203

Por defecto, ssh escuchará en todas las direcciones IP anteriores. Si desea que los usuarios inicien sesión solo con las direcciones IP 200 y 202, haga lo siguiente en su sshd_config

$ vi /etc/ssh/sshd_config
ListenAddress 192.168.10.200
ListenAddress 192.168.10.202

7. Desconecta SSH cuando no hay actividad (ClientAliveInterval)

Una vez que haya iniciado sesión correctamente en el sistema, es posible que desee desconectarse cuando no haya actividades después de x cantidad de minutos. Esto es básicamente tiempo de inactividad.

En Bash, puede lograr esto usando la variable TMOUT.

En OpenSSH, esto se puede lograr combinando las opciones ClientAliveCountMax y ClientAliveInterval en el archivo sshd_config.

  • ClientAliveCountMax:indica el número total de mensajes de verificación enviados por el servidor ssh sin obtener ninguna respuesta del cliente ssh. El valor predeterminado es 3.
  • ClientAliveInterval:indica el tiempo de espera en segundos. Después de una cantidad x de segundos, el servidor ssh enviará un mensaje al cliente solicitando una respuesta. El valor predeterminado es 0 (el servidor no enviará un mensaje al cliente para verificar).

Si desea que el cliente ssh salga (tiempo de espera) automáticamente después de 10 minutos (600 segundos), modifique el archivo sshd_config y configure los siguientes dos parámetros como se muestra a continuación.

$ vi /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0

Linux
  1. Comandos de Linux:du y las opciones que deberías usar

  2. ¿Cómo se actualiza /etc/motd?

  3. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  4. Cómo verificar la sintaxis del archivo /etc/ssh/sshd_config

  5. ¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

No se pueden ejecutar aplicaciones X a través de SSH en Linux

PuTTY:cambiar el directorio de inicio de sesión SSH predeterminado

/etc/passwd muestra al usuario en un grupo, pero /etc/group no

/dev/sdb:No existe tal archivo o directorio (pero /dev/sdb1, etc. existe)

Cómo cambiar el valor predeterminado /tmp a /home/user/tmp

Diferencia entre /etc/hosts y /etc/resolv.conf