GNU/Linux >> Tutoriales Linux >  >> Linux

Todo lo que necesita saber sobre el servidor Linux OpenSSH

La suite OpenSSH es una colección de herramientas robustas destinadas a facilitar el control remoto y la transferencia de datos entre sistemas en red. Consta de una serie de herramientas, incluidas SSH, SCP, SFTP, SSHD y muchas más. Cada vez que usa ssh para iniciar sesión en una máquina remota, es muy probable que aproveche el servidor OpenSSH. En esta guía, proporcionaremos una discusión detallada sobre cómo funciona OpenSSH y cómo utilizarlo correctamente para satisfacer las crecientes demandas de seguridad. Entonces, si desea obtener más información sobre las complejidades de OpenSSH, quédese con nosotros a lo largo de esta guía.

Inmersión profunda en el servidor y los servicios de OpenSSH

El servidor OpenSSH se encuentra en el corazón de la comunicación remota entre máquinas Linux y/o BSD. Algunas de sus características notables incluyen el cifrado de tráfico, varios métodos de autenticación potentes, tunelización segura y capacidades de configuración sofisticadas. Las siguientes secciones brindan una comprensión significativa de los servicios fundamentales y consejos de seguridad.

Los fundamentos de un servidor OpenSSH

Como sugiere su nombre, OpenSSH utiliza el protocolo SSH (Secure Shell) para proporcionar servicios de transferencia de datos y conexión remota. Elimina las vulnerabilidades de seguridad asociadas con los métodos heredados, como el comando FTP de Linux y telnet. OpenSSH facilita la autenticación de usuarios legítimos y el cifrado de conexiones remotas.

La utilidad central de la suite OpenSSH responsable de administrar las conexiones remotas es OpenSSH Server o sshd. Escucha constantemente las solicitudes entrantes y configura el tipo de conexión adecuado cuando llega una nueva solicitud.

Por ejemplo, si un usuario usa el programa de cliente ssh para comunicarse con el servidor, sshd configurará una sesión de control remoto tan pronto como la autenticación sea exitosa. Si el usuario usa SCP en su lugar, sshd iniciará una sesión de copia segura.

El usuario final debe elegir el mecanismo de comunicación apropiado para su conexión. Esto se ve facilitado por herramientas como ssh-add y ssh-keygen. Cuando un usuario se conecta con éxito a la máquina remota usando el comando ssh, es recibido por una consola basada en texto. Cualquier comando ingresado en esta consola se envía a través de un túnel SSH encriptado para ejecutarse en la máquina remota.

Instalación y configuración del servidor OpenSSH

La siguiente sección discutirá cómo instalar el demonio del servidor OpenSSH y configurarlo. Mostraremos las mejores opciones de configuración tanto para uso personal como para fines empresariales. También describiremos las mejores prácticas para configurar y fortalecer OpenSSH al final de esta sección.

Cómo instalar el servidor OpenSSH

- -

La mayoría de las distribuciones modernas de Linux vienen con OpenSSH ya instalado. Sin embargo, si necesita instalarlo manualmente, puede hacerlo usando el siguiente comando simple.

$ sudo apt install openssh-server

Este comando instalará el demonio del servidor. Use el siguiente comando para instalar el cliente OpenSSH en su sistema.

$ sudo apt install openssh-client

Cómo configurar el servidor OpenSSH

OpenSSH admite una gran cantidad de opciones de configuración para controlar cosas como la configuración de comunicación y los modos de autenticación. El archivo sshd_config especifica los parámetros de configuración y contiene la dirección de otros archivos de configuración, incluida una o más claves de host. archivos y claves_autorizadas archivos Se encuentra en el /etc/ssh/ directorio de su sistema de archivos.

Antes de pasar a modificar algunos de sus parámetros, le sugerimos que haga una copia de seguridad de la copia actual de sshd_config expediente. Puede hacerlo abriendo su emulador de terminal de Linux favorito y emitiendo el siguiente comando.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

De esta manera, si estropeas tu sshd_config archivo, siempre puede volver a la configuración original. Ahora, puede proceder a configurar su servidor ssh. Antes de eso, sugerimos a los lectores que prueben su configuración sshd efectiva usando el siguiente comando simple.

$ sudo sshd -T

Ahora que ha realizado una copia de seguridad de su sshd_confi g y vio la configuración predeterminada, es hora de editar el archivo de configuración. Usaremos el editor de texto vim para abrir y editar nuestro archivo de configuración. Pero puede usar cualquier editor de texto de Linux que desee.

$ sudo vim /etc/ssh/sshd_config

Como debe notar, ya hay una serie de opciones preconfiguradas. Sin embargo, la mayoría de ellos están comentados. Puede activarlos descomentando la línea particular que especifica el parámetro de opciones. Retire la libra “#” símbolo desde el principio de una línea para descomentarla. Discutimos algunas de las opciones importantes a continuación.

  • AceptarEnv

Esta opción especifica qué variables de entorno enviadas por el cliente se pueden copiar al entorno remoto.

  • DirecciónFamilia

Define la familia de direcciones IP para el uso de sshd. Las tres opciones disponibles son:any, inet e inet6.

  • Permitir reenvío de agentes

Esta opción define si se permite o no el reenvío de ssh-agent.

  • Permitir reenvío local de transmisión

Define si se permite o no el reenvío de sockets de dominio Unix.

  • Permitir reenvío de Tcp

Define si el reenvío TCP está permitido o no.

  • Permitir usuarios

Esta opción puede definir una lista de nombres de usuario a los que se permite el acceso según un patrón. Todos los nombres de usuario están permitidos de forma predeterminada.

  • Métodos de autenticación

Esta opción establece los métodos de autenticación que un usuario debe completar antes de recibir acceso.

  • Archivo de claves autorizadas

Esta opción especifica el archivo que contiene las claves públicas para la autenticación de usuarios.

  • Autenticación de respuesta de desafío

Cuando está habilitada, esta opción permite la autenticación de desafío-respuesta.

  • Directorio Chroot

Especifica el directorio raíz, que se presentará a los usuarios que se hayan autenticado correctamente.

  • Cifrados

Esta opción define los cifrados criptográficos permitidos por el servidor OpenSSH. Hay una amplia gama de opciones disponibles.

  • Compresión

Especifica si se permite la compresión y, en caso afirmativo, en qué etapa.

  • Denegar usuarios

Esta opción se puede utilizar para definir una lista de nombres de usuario a los que se les ha denegado el acceso según un patrón.

  • Comando de fuerza

Se puede utilizar para forzar la ejecución de un determinado comando. Hace que el servidor ignore cualquier comando proporcionado por el cliente ssh y cualquier cosa presente en ~/.ssh/rc .

  • Puertos de puerta de enlace

Esta opción define si los hosts remotos pueden conectarse a puertos que se han reenviado para el lado del cliente.

  • Autenticación GSSAPI

Se utiliza para indicar si la autenticación de usuario basada en GSSAPI está permitida o no.

  • Autenticación basada en host

Esta opción especifica si una clave pública presente en la máquina cliente puede autenticar un host en el servidor remoto.

  • Solo nombre de uso basado en host de paquete

Esta opción especifica si el servidor necesita realizar una búsqueda inversa de nombres presentes en /.shosts , ~/.rhosts y /etc/hosts.equiv archivos.

  • HostKey

Se puede utilizar para definir un archivo que contiene una clave de host privada. Los administradores pueden especificar varios archivos clave. los predeterminados son /etc/ssh/ssh_host_dsa_key , /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key y /etc/ssh/ssh_host_rsa_key .

  • Algoritmos de clave de host

Esta opción define los algoritmos de clave de host que el servidor ssh pone a disposición. OpenSSH admite una gran cantidad de algoritmos para este propósito.

  • Ignorar los fantasmas

Le dice al servidor que ignore los .rhosts y .shosts archivos para RhostsRSAAuthentication y Autenticación basada en host .

  • Autenticación interactiva Kbd

Esta opción define si el servidor permite o no la autenticación interactiva con teclado.

  • Algoritmos Kex

Se utiliza para indicar los algoritmos disponibles para el intercambio de claves ssh. OpenSSH admite todos los principales algoritmos de intercambio de claves, incluidos Diffie Hellman y Elliptic Curves.

  • Dirección de escucha

Define qué direcciones locales debe escuchar el demonio sshd.

  • Iniciar sesión en GraceTime

Esta opción define el tiempo después del cual sshd desconecta al usuario si no puede iniciar sesión correctamente.

  • Nivel de registro

Define el nivel de verbosidad de los mensajes de registro para sshd.

  • MAC

Esta opción se utiliza para definir los algoritmos de código de autenticación de mensajes (MAC) disponibles. Estos se utilizan para proteger la integridad de los datos.

  • Máx. de intentos de autenticación

Esta opción define el número máximo de veces que un usuario puede intentar autenticarse en el servidor.

  • Autenticación de contraseña

Define si un usuario remoto puede iniciar sesión mediante autenticación basada en contraseña.

  • Permitir contraseñas vacías

Esta opción especifica si los usuarios pueden usar una contraseña vacía para inicios de sesión remotos.

  • Permitir inicio de sesión raíz

Esta opción define si se permite o no el inicio de sesión raíz.

  • PermisoTTY

Esta opción define si se permite o no pseudo TTY.

Quite el comentario de la línea que contiene una de las opciones anteriores y establezca el valor de la opción deseada. La siguiente sección ilustra algunas prácticas comunes de fortalecimiento de la seguridad para OpenSSH.

Cómo fortalecer la seguridad del servidor OpenSSH

Dado que OpenSSH actúa como la puerta de entrada a su servidor, es extremadamente importante fortalecer su seguridad. Intente mantener las siguientes sugerencias para que el inicio de sesión remoto sea más seguro.

1. Deshabilitar inicio de sesión raíz

Nunca debe permitir el inicio de sesión raíz en su servidor ssh ya que una escalada de la cuenta raíz puede comprometer todo el servidor. Además, la cuenta de usuario raíz es atacada constantemente por usuarios malintencionados. Por lo tanto, es mejor crear un usuario regular y permitirle permisos sudo. Puede deshabilitar el inicio de sesión raíz configurando el valor de PermitRootLogin al no.

PermitRootLogin no

2. Limite los intentos de autenticación

Los administradores deben limitar la cantidad de intentos de inicio de sesión desde hosts remotos para evitar intentos de inicio de sesión de fuerza bruta. El surgimiento de vastos ejércitos de bots ha hecho que esto sea más importante que nunca. Utilice la opción MaxAuthTries para establecer el número de intentos de autenticación permitidos en su servidor. Muchos administradores consideran que tres es un valor aceptable para esta opción. Sin embargo, puede configurarlo según sus estándares de seguridad.

MaxAuthTries 3

3. Reducir el tiempo de gracia de inicio de sesión

Otra forma de evitar los bots automatizados es reducir el tiempo de gracia de inicio de sesión. Esta es la cantidad de tiempo dentro del cual un usuario debe autenticarse con éxito después de conectarse al servidor. El sshd_config archivo define este valor en segundos.

LoginGraceTime 20

4. Deshabilitar autenticación de contraseña

Solo debe permitir que los usuarios inicien sesión en el servidor mediante la autenticación basada en claves. Por lo tanto, asegúrese de desactivar el esquema de autenticación basado en contraseña. Puede hacerlo configurando el valor de PasswordAuthentication al no.

PasswordAuthentication no

También es una buena idea deshabilitar las contraseñas vacías. Establezca el valor del campo PermitEmptyPasswords en no.

PermitEmptyPasswords no

5. Deshabilitar otros métodos de autenticación

OpenSSH admite algunos métodos de autenticación adicionales además de la autenticación basada en clave y contraseña. Debe deshabilitarlos por completo después de configurar la autenticación basada en claves y deshabilitar la autenticación con contraseña.

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

6. Deshabilitar el reenvío X11

El reenvío X11 se utiliza para mostrar aplicaciones gráficas en el servidor a la máquina host remota. Sin embargo, no es necesario para la mayoría de los servidores empresariales. Por lo tanto, deshabilítelo si no necesita esta función.

X11Forwarding no

Después de deshabilitar el reenvío X11, debe comentar todas las referencias a AcceptEnv . Simplemente agregue un hash (#) antes de las líneas para comentarlas.

7. Deshabilitar opciones misceláneas

Deshabilite las siguientes opciones utilizadas para la tunelización y el reenvío si no las necesita para su servidor.

AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

8. Desactivar banner SSH

El banner ssh detallado está habilitado de forma predeterminada y muestra información esencial sobre el servidor. Los piratas informáticos pueden aprovechar esta información para planificar un ataque a su servidor. Por lo tanto, es una buena idea deshabilitar el banner ssh detallado.

DebianBanner no

Si esta opción no está presente en su sshd_config archivo, agréguelo para deshabilitar el banner.

9. Implementar la lista de direcciones IP permitidas

En la mayoría de los casos, accederá al servidor remoto desde un puñado de direcciones IP conocidas. Puede crear una dirección IP que permita la lista para evitar que otras personas accedan a su servidor. Esto reduce el riesgo de una violación del servidor, incluso si sus claves privadas se han visto comprometidas.

Sin embargo, debe tener cuidado al implementar la lista de direcciones IP permitidas y abstenerse de usar direcciones dinámicas, ya que cambian con mucha frecuencia.

Para definir la lista de permitidos, primero averigüe la dirección IP que está utilizando actualmente para conectarse al servidor OpenSSH. Puede hacerlo ejecutando el siguiente comando en su terminal.

$ w

Anote la dirección IP debajo de la etiqueta 'DE '. Supondremos una dirección IP de ejemplo de 203.0.113.1 para el resto de esta guía. Ahora, abra su archivo de configuración ssh y use AllowUsers directiva de configuración, como se muestra a continuación.

AllowUsers *@203.0.113.1

La línea anterior restringirá a todos los usuarios remotos a una dirección IP seleccionada. Puede cambiar esto a un rango de direcciones IP utilizando la notación de enrutamiento entre dominios sin clase (CIDR), como se ilustra a continuación.

AllowUsers *@203.0.113.0/24

10. Restringir el Shell de Usuarios Remotos

Siempre es una buena práctica restringir las operaciones realizadas por el usuario remoto. Puede hacerlo restringiendo el shell del usuario remoto. OpenSSH permite múltiples opciones de configuración para ayudar en esta tarea. Le mostraremos cómo restringir el acceso de shell de un usuario solo a SFTP usando estas opciones.

Primero, crearemos un nuevo usuario llamado mary usando /usr/sbin/nologin cáscara. Esto deshabilitará los inicios de sesión interactivos para ese usuario pero aún proporcionará sesiones no interactivas para realizar operaciones como transferencias de archivos.

$ sudo adduser --shell /usr/sbin/nologin mary

Este comando crea el usuario mary con el shell nologin. También puede deshabilitar el shell interactivo para un usuario existente usando el siguiente comando.

$ sudo usermod --shell /usr/sbin/nologin alex

Si intenta iniciar sesión como uno de los usuarios anteriores, su solicitud será rechazada.

$ sudo su alex
This account is currently not available.

Sin embargo, aún puede realizar acciones que no requieren un shell interactivo usando estas cuentas.

Luego, abra su configuración sshd una vez más y use el ForceCommand internal-sftp y ChrootDirectory directiva para crear un usuario exclusivo de SFTP altamente restrictivo. Vamos a restringir el usuario alex para este ejemplo. Además, se recomienda encarecidamente agregar cualquier bloque Match en la parte inferior de su sshd_config .

Match User alex
ForceCommand internal-sftp
ChrootDirectory /home/alex/

Salga del archivo de configuración y pruebe si el archivo de configuración causa algún error o no. Puede hacerlo ejecutando el siguiente comando en su emulador de terminal de Linux.

$ sudo sshd -t

Si todo va bien, debería haber creado una configuración robusta para el usuario alex. La sesión de inicio de sesión interactiva está deshabilitada para este usuario y solo tiene acceso al directorio de inicio de su cuenta.

Pensamientos finales

Dado que OpenSSH es parte integral de la seguridad de su servidor remoto, es esencial aprender cómo funciona. Es por eso que nuestros editores han presentado información útil sobre el servidor OpenSSH en esta guía. Los temas incluyen cómo funciona OpenSSH, cómo leer y editar el archivo de configuración y cómo implementar las mejores prácticas de seguridad.

Con suerte, pudimos brindarle la información que estaba buscando. Marque esta guía para futuras referencias. Y no olvide dejar un comentario si tiene más consultas o sugerencias sobre cómo hacer que esta guía sea más útil.


Linux
  1. Todo lo que necesita saber sobre Ubuntu 13.04

  2. Directorio tmp de Linux:todo lo que necesita saber

  3. Compresión de archivos de Linux:todo lo que necesita saber

  4. Permisos de archivos de Linux:todo lo que necesita saber

  5. Swappiness en Linux:Todo lo que necesitas saber

Todo lo que necesita saber sobre Black Lab Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo que necesita saber sobre los inodos en Linux

Todo lo importante que necesita saber sobre Hard Link en Linux

Todo lo importante que necesita saber sobre UID en Linux

Todo lo que necesita saber sobre el directorio /tmp de Linux