Bup bip bop… iniciando secuencia 42…
¡Llegaron los robots! Han tomado el control y tradujeron esta página a tu idioma local. Sus corazoncitos de metal solo tienen las mejores intenciones. ¡Quieren ayudar! Dinos si están haciendo un buen trabajo con los botones al final de la página. Ve a la versión en inglés

Cómo establecer un tiempo de espera SSH

Establecer un tiempo de espera distinto para las conexiones de SSH en el servidor es un paso importante y simple para mantener la seguridad y estabilidad del servidor. La herramienta de daemon SSH común que se encuentra en la mayoría de las distribuciones de Linux facilita este proceso de fácil manejo y configuración de shell adicionales incluso ofrece la posibilidad de desconectar los usuarios inactivos, si es necesario.

DIFICULTAD Básico - 1 | Medio - 2 | Avanzado - 3
TIEMPO NECESARIO 10 min.
PRODUCTOS RELACIONADOS Servidores dedicados o VPS basados en Linux
Basados en Linux de hospedaje compartido

Administrar los tiempos de espera del servidor SSH

Para controlar fácilmente los clientes desconectados o incluso inactivos conectados a través de SSH a su servidor, desea estudiar el problema desde dos ángulos: ClientAlive y TMOUT de shell.

Configuración de ClientAlive configuración de SSH

Cuando un cliente se conecta remotamente a través de SSH a su servidor basado en Linux (configurado correctamente), el servidor ejecutará una serie de solicitudes de KeepAlive a clientes conectados a intervalos designados. En cada ejecución, el servidor envía un paquete al cliente para comprobar que la conexión del cliente sigue siendo válido y funcional. Este paquete KeepAlive intercambien nunca por error el servidor puede sever automáticamente esa conexión. Para asegurarse de que el servidor finaliza cualquier cliente SSH que no responde correctamente debe modificar su sshd_config archivo. Para la mayoría de las distribuciones del sshd_config se encuentra en la /etc/ssh directorio, pero si es necesario que siempre se puede buscar con una rápida búsqueda:

find / -name sshd_config
/etc/ssh/sshd_config
/usr/share/doc/openssh-client/examples/sshd_config

Para comenzar, abra el sshd_config archivo en el editor de texto (como vim o nano estamos utilizando nano aquí):

nano /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
...

Hay tres opciones que debe buscar: o agregar si es necesario, en el sshd_config archivo:

  • ClientAliveCountMax
  • ClientAliveInterval
  • TCPKeepAlive

A continuación se muestran los valores predeterminados de la mayoría de las instalaciones de demonio SSH:

ClientAliveCountMax 3
ClientAliveInterval 0
TCPKeepAlive yes

ClientAliveIntervaldetermina con frecuencia un cifrado (y por tanto difícil a spoof). TCPKeepAlivepaquete se transmite al cliente (en segundos). Esta configuración funciona junto con ClientAliveCountMax , que determina cuántos KeepAlive paquetes se van a transmitir al cliente sin respuesta antes de que finalice la conexión.

Con un valor predeterminado de cero segundos para el ClientAliveInterval , la mayoría de las instalaciones de demonio SSH no transmite estos TCPKeepAlive paquetes.

Se puede habilitar fácilmente ClientAlive la transmisión de paquetes por modificar o cambiar esta configuración en el sshd_config archivo. Por ejemplo, para enviar un máximo de 4 paquetes con un intervalo de 15 segundos aparte, agregue estas líneas en el sshd_config archivo:

ClientAliveCountMax 4
ClientAliveInterval 15

La tercera opción de TCPKeepAlive se comporta del mismo modo que la ClientAliveCountMax y ClientAliveInterval duo, excepto TCPKeepAlive paquetes sin cifrar (enviados a través del protocolo TCP) se utiliza para comprobar que los clientes conectados.

Habilitar TCPKeepAlive garantiza que no habrá ningún "fantasma" conexiones de cliente con el servidor que puede consumir recursos. Por otra parte, si hay cualquier interrupciones temporales de internet que pueden cortará la conexión entre un cliente SSH conectado y el servidor, el TCPKeepAlive protocolo puede desconectar a ese usuario.

Para habilitar (o deshabilitar) TCPKeepAlive , establezca el valor el sshd_config archivo en o no:

# Enables TCPKeepAlive
TCPKeepAlive yes

Como de costumbre después de realizar cambios a la sshd_config de archivos, asegúrese de guardar el archivo, a continuación, reinicie el daemon SSH:

service ssh restart

Desconexión de clientes inactivos SSH

Aunque el uso de la ClientAlive y TCPKeepAlive configuración de su sshd_config controlará las conexiones que se han roto incorrectamente, que no tiene impacto en las conexiones de cliente SSH que simplemente inactivas durante un período largo de tiempo. Si la seguridad es primordial, desea sever las conexiones inactivas de SSH a su servidor.

Para la mayoría de las distribuciones de Linux, desconectar a un cliente inactivo puede controlarse fácilmente utilizando el bash TMOUT configuración en el archivo bashrc. Puesto que probablemente deseará especificar la configuración que se aplican a todos los usuarios, debe modificar el /etc/bash.bashrc archivo (abierto de configuración específica del usuario ~/.bashrc en su lugar):

nano /etc/bash.bashrc
# System-wide .bashrc file for interactive bash(1) shells.
# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
...

Para agregar una desconexión de clientes inactivos, simplemente agregue lo siguiente al final de la bash.bashrc archivo:

TMOUT=300
readonly TMOUT
export TMOUT

El valor de TMOUT es el número de segundos que un cliente puede estar conectado e inactivas antes de que se detecta un tiempo de espera y la conexión se interrumpe por el servidor. Puede utilizar un valor relativamente pequeño al principio para probar la configuración, pero debe utilizarse un valor razonable en la producción.

Una vez que se cambia la configuración y bash.bashrc ha sido guardado, puede abrir ahora una nueva conexión SSH con el servidor y espera. Una vez transcurrido el período TMOUT se interrumpirá la conexión:

account@ubuntu:~# date
Wed Oct 15 03:09:41 EDT 2014
account@ubuntu:~# ssh root@123.123.456.78
root@Main:~# date
Wed Oct 15 03:09:47 EDT 2014
root@Main:~# timed out waiting for input: auto-logout
Connection to 123.123.456.78 closed
account@ubuntu:~# date
Wed Oct 15 03:14:53 EDT 2014

Estas prácticas básicas garantiza una mayor seguridad y estabilidad para todas las conexiones de SSH a su servidor.


¿Este artículo fue útil?
Gracias por tus comentarios
¡Nos complace haber ayudado! ¿Hay algo más que podamos hacer por ti?
Lo sentimos. ¿Cómo podríamos ser de más utilidad?