El archivo de configuración SSH en Unix controla cómo funciona el shell seguro. Se puede usar para hacer que el comando ssh sea más fácil de usar, configurar ciertas funciones requeridas por el usuario o reforzar la seguridad contra posibles ataques. Si bien las acciones relativamente simples, como cambiar el puerto ssh en sus dispositivos, a menudo pueden eliminar una gran cantidad de "llamadas en frío" en su dispositivo, el archivo de configuración ssh puede hacer mucho más que eso.
¿Dónde está el archivo SSH?
En los sistemas Linux, puede encontrar el archivo de configuración ssh de todo el sistema en "/etc/ssh/ssh_config".
في sistemas macOS , el archivo en sí se encuentra en "/private/etc/ssh/ssh_config", que enlaza con "/etc/ssh/ssh_config" para compatibilidad.
Se puede especificar un segundo archivo ssh_config de usuario en “~/.ssh/ssh_config” (el “~” es el directorio de inicio). Este archivo reemplaza el archivo de configuración de todo el sistema, lo que le permite establecer opciones específicas del usuario sin cambiar la configuración del sistema. Los sistemas no siempre se envían con un archivo “~/.ssh/ssh_config”, pero se pueden crear fácilmente.
De ahora en adelante, nos referiremos a este archivo de configuración como “ssh_configPor claridad y sencillez.
Edite el archivo ssh_config
Para editar el archivo ssh_config, abra una ventana de Terminal y edite el archivo con su editor de texto favorito. Usaremos nano en esta demostración, pero en su lugar se puede usar vi o emacs.
sudo nano / etc / ssh / ssh_config
Esto abrirá un archivo con docenas de líneas colgantes que explican lo que hace el archivo, pero no es una explicación completa.
¿Qué es el archivo ssh_config y qué hace ssh_config?
El archivo ssh_config se utiliza para controlar cómo funciona en su sistema el shell seguro, conocido como el comando de terminal ssh. El archivo ssh_config está organizado por hosts. Cada host tiene una configuración específica para ese host. Los comodines se pueden utilizar como * Para hacer coincidir múltiples nombres de host con una sola declaración.
Las opciones se definen mediante el par clave/definición. Hay muchos interruptores disponibles. Puede encontrar una explicación detallada de las funciones de cada tecla en la página hombre ssh_config.
Configura tu SSH
Bloquear archivos: antes de editar el archivo, asegúrese de que los archivos ssh_config y sshd_config tengan privilegios de administrador y usuario raíz. En la mayoría de los casos, también deberá denegar los permisos a cualquier persona, excepto al enrutamiento.
sudo chown root:root /etc/ssh/sshd_config sudo chmod og-rwx /etc/ssh/sshd_config
Confirmar protocolo SSH 2
Asegúrese de estar utilizando el protocolo 2 más nuevo y moderno en lugar del protocolo 1. El protocolo anterior funciona con una verificación de integridad más débil y, en general, es menos seguro.
Para configurar explícitamente el protocolo, use lo siguiente en ssh_config:
Protocol 2
También puede configurar implícitamente su propio protocolo usando Ciphers, que configurará automáticamente el protocolo en 2 para el uso de Ciphers modernos.
Ciphers aes128-ctr، aes192-ctr، aes256-ctr
No permitir una contraseña en blanco
Asegúrese de que cada cuenta SSH use una contraseña al iniciar sesión bloqueando las contraseñas vacías.
PermitEmptyPasswords no
No permitir que root inicie sesión
El enraizamiento rara vez es obligatorio para la mayoría de los usuarios de Linux. La prevención de los inicios de sesión raíz le permitirá bloquear cuentas específicamente para lo que se necesita y no otorgar el uso de todo el sistema. Esta también es una cuenta objeto de ataques. Las opciones de PermitRootLogin incluyen Sí, Sin contraseña, Solo comandos forzados o No. El valor predeterminado es "sí". Para dejar de rootear por completo, tenemos que escribir la línea de abajo.
PermitRootLogin no
Cambiar el número de puerto
Puede cambiar el número de puerto de 22 (el predeterminado) como una forma de limitar el acceso directo a su servidor en ese puerto. Esto restringirá a la mayoría de las personas que usan un script que va a ese puerto o que atacan ese puerto manualmente. Sin embargo, esto no limitará a aquellos que buscan puertos abiertos y atacan lo que esté abierto. Además, deberá asegurarse de que cualquier persona que ingrese a través de ese puerto conozca el nuevo número y que este nuevo número de puerto esté siendo utilizado por cualquier cliente o programa.
Para configurar el puerto, edite el servidor ssh principal en "/etc/ssh/sshd_config". Deberá agregar una nueva línea especificando el puerto siguiendo la sintaxis Puerto XXXXX.
Acceso limitado
Si tiene varias personas accediendo a su servidor, es posible que desee restringir el uso de ssh por completo. Para estos casos, puede permitir y bloquear usuarios y grupos. Para ello, deberá utilizar una de las siguientes claves, seguida de los valores que desea permitir o denegar: DenyUsers, AllowUsers, DenyGroups y AllowGroups. Esto se completó en este orden, por lo que incluso si permite que un usuario esté en la sección Aprobado, será rechazado.
AllowUsers ramesh john jason AllowGroups sysadmin dba DenyUsers cvs apache jane DenyGroups developers qa
Actualización de LoginGraceTime
De forma predeterminada, la cantidad de tiempo que una persona debe permanecer inactiva sin iniciar sesión es de XNUMX minutos. Reducir esto ayudará a prevenir comunicaciones no autorizadas. Una sugerencia típica es un minuto o menos. Configure la hora usando LoginGraceTime.
LoginGraceTime 1m
Personalización de configuraciones de SSH
Crear alias
Las opciones de la línea de comandos de Ssh se pueden especificar a través de los alias en ssh_config. Los siguientes alias permiten al usuario conectarse a un servidor dev Seleccione opciones simplemente escribiendo desarrollador ssh en la línea de comando.
Host dev HostName dev.example.com Port 22222 User foobar
El siguiente comando funciona cuando se ejecuta:
ssh foobar@dev.example.com -p 22222
Tenga en cuenta que el puerto ssh se ha cambiado a 22222 para impedir las llamadas en frío. De lo contrario, es una conexión ssh muy simple, acortada por muchos caracteres para mayor comodidad.
Autenticación con claves seguras
ssh es más seguro y conveniente cuando se usa con claves públicas/privadas para la autenticación, en lugar de contraseñas. El archivo ssh_config puede declarar una clave específica para un host específico utilizando la clave IdentityFile.
Host dev HostName dev.example.com Port 22222 User foobar IdentityFile ~/.ssh/dev.example.key
Como en los ejemplos anteriores, este comando ssh se ejecuta usando ssh dev, ejecutando el siguiente equivalente de línea de comandos:
ssh -i ~ / .ssh / dev.example.key foobar@dev.example.com -p 22222
Poner otras opciones de ssh
Las siguientes opciones de ssh son algunas de las claves más comunes que se encuentran en los archivos ssh_config.
Compresión: esta clave acepta "sí" o "no" como argumento y se utiliza para habilitar y deshabilitar la compresión para el host. Por lo general, esto no es necesario a menos que la conexión sea increíblemente lenta.
Nivel de registro: establezca el nivel de detalle en los registros ssh del lado del cliente. De menos detallado a más detallado, las opciones son SILENCIOSO, FATAL, ERROR, INFORMACIÓN, VERBOSO, DEPURACIÓN1, DEPURACIÓN2 y DEPURACIÓN3.
Comprobación estricta de claves de host: Establezca una preferencia para agregar otro host a unknown_hosts. Nunca agregará "sí" a hosts_conocidos. Siempre agregará "no" a hosts_conocidos. Preguntar, que es el predeterminado, preguntará al usuario antes de agregarlo al archivoknown_hosts. Sí proporciona la máxima seguridad contra los ataques de troyanos, pero puede ser tedioso con un archivoknown_hosts mal administrado. No es el menos seguro, pero puede hacer que la conexión a una gran cantidad de hosts temporales sea menos dolorosa.
UsuarioConocidoHostsArchivo: especifique la ruta del archivo de hosts_conocidos del usuario.
Reenvío de llamadas
ssh se usa a menudo para redirigir las conexiones, lo que permite la conexión local al túnel a través de una conexión remota. Las siguientes opciones se pueden utilizar para configurar el desvío de llamadas.
Reenvío local: especifica una conexión para reenviar el tráfico del puerto local a una máquina remota. Esto tuneliza la conexión a través de la red remota.
Remoto Adelante: defina un puerto remoto para enrutar fuera de un puerto local. Esta es la opción opuesta a la anterior.
Avance Dinámico: configure un puerto local para usarlo con un protocolo de reenvío dinámico.
Conclusión
La mayoría de las opciones de ssh_config existen para proporcionar formas más convenientes de realizar tareas específicas mediante el comando ssh. Es una forma de crear alias y accesos directos complejos que ayuda a aumentar la seguridad al hacer que las partes más seguras de ssh sean más fáciles de usar.