Las mejores formas de proteger su servidor SSH

Oct 15, 2025
Privacidad y seguridad
Eny Setiyowati / Shutterstock.com

Asegure la conexión SSH de su sistema Linux para proteger su sistema y sus datos. Tanto los administradores de sistemas como los usuarios domésticos necesitan reforzar y proteger las computadoras con acceso a Internet, pero SSH puede ser complicado. Aquí hay diez sencillos beneficios rápidos para ayudar a proteger su servidor SSH.

Conceptos básicos de seguridad SSH

SSH significa Cubierta segura . El nombre "SSH" se usa indistintamente para significar el protocolo SSH en sí o las herramientas de software que permiten a los administradores y usuarios del sistema realizar conexiones seguras a computadoras remotas usando ese protocolo.

El protocolo SSH es un protocolo encriptado diseñado para brindar una conexión segura a través de una red insegura, como Internet. SSH en Linux se basa en una versión portátil del OpenSSH proyecto. Se implementa en un modelo clásico cliente-servidor , con un servidor SSH que acepta conexiones de clientes SSH. El cliente se utiliza para conectarse al servidor y para monitor la sesión al usuario remoto. El servidor acepta la conexión y ejecuta La sesión.

En su configuración predeterminada, un servidor SSH escuchará las conexiones entrantes en el Protocolo de control de transmisión ( TCP ) puerto 22. Como se trata de un puerto conocido , es un objetivo para actores de amenazas y bots maliciosos .

Los actores de amenazas lanzan bots que escanean una variedad de direcciones IP en busca de puertos abiertos. A continuación, se examinan los puertos para ver si existen vulnerabilidades que puedan explotarse. Pensar: "Estoy a salvo, hay objetivos más grandes y mejores que yo para que los malos apunten", es un razonamiento falso. Los bots no seleccionan objetivos basándose en ningún mérito; están buscando metódicamente sistemas que puedan violar.

Te nominas a ti mismo como víctima si no has asegurado tu sistema.

Fricción de seguridad

La fricción de seguridad es la irritación, en cualquier grado, que los usuarios y otras personas experimentarán cuando implemente medidas de seguridad. Tenemos una gran memoria y podemos recordar haber presentado un sistema informático a nuevos usuarios y escucharlos preguntar con voz horrorizada si De Verdad Tuve que ingresar una contraseña cada vez iniciaron sesión en el mainframe. Eso, para ellos, era una fricción de seguridad.

(Por cierto, la invención de la contraseña se atribuye a Fernando J. Corbató , otra figura en el panteón de los informáticos cuyo trabajo combinado contribuyó a las circunstancias que llevaron al nacimiento de Unix .)

La introducción de medidas de seguridad suele implicar algún tipo de fricción para alguien. Los dueños de negocios tienen que pagar por ello. Es posible que los usuarios de la computadora tengan que cambiar sus prácticas familiares, recordar otro conjunto de detalles de autenticación o agregar pasos adicionales para conectarse correctamente. Los administradores del sistema tendrán trabajo adicional que hacer para implementar y mantener las nuevas medidas de seguridad.

Endurecer y bloquear un sistema operativo Linux o similar a Unix puede resultar muy complicado, muy rápidamente. Lo que presentamos aquí es un conjunto de pasos fáciles de implementar que mejorarán la seguridad de su computadora sin la necesidad de aplicaciones de terceros y sin tener que buscar en su firewall.

Estos pasos no son la última palabra en seguridad SSH, pero te ayudarán a avanzar mucho desde la configuración predeterminada y sin demasiada fricción.

Utilice el protocolo SSH versión 2

En 2006, el protocolo SSH se actualizó de la versión 1 a versión 2 . Fue una mejora significativa. Hubo tantos cambios y mejoras, especialmente en lo que respecta al cifrado y la seguridad, que la versión 2 no es compatible con la versión 1. Para evitar conexiones de clientes de la versión 1, puede estipular que su computadora solo aceptará conexiones de clientes de la versión 2.

Para hacerlo, edite el / etc / ssh / sshd_config expediente. Haremos esto mucho a lo largo de este artículo. Siempre que necesite editar este archivo, este es el comando que debe usar:

sudo gedit / etc / ssh / sshd_config

Agrega la línea:

Protocolo 2

Y guarde el archivo. Vamos a reiniciar el proceso del demonio SSH. Nuevamente, haremos mucho esto a lo largo de este artículo. Este es el comando a utilizar en cada caso:

sudo systemctl reiniciar sshd

Verifiquemos que nuestra nueva configuración esté vigente. Saltaremos a una máquina diferente e intentaremos SSH en nuestra máquina de prueba. Y usaremos el -1 (protocolo 1) opción para forzar la ssh comando para utilizar la versión 1 del protocolo.

ssh -1 [email protected]

Genial, nuestra solicitud de conexión fue rechazada. Asegurémonos de que todavía podemos conectarnos con el protocolo 2. Usaremos el -2 (protocolo 2) opción para probar el hecho.

ssh -2 [email protected]

El hecho de que el servidor SSH solicite nuestra contraseña es una indicación positiva de que se ha establecido la conexión y de que está interactuando con el servidor. En realidad, debido a que los clientes SSH modernos utilizarán de forma predeterminada el protocolo 2, no es necesario que especifiquemos el protocolo 2 siempre que nuestro cliente esté actualizado.

ssh [email protected]

Y nuestra conexión es aceptada. Por tanto, sólo se rechazan las conexiones de protocolo 1 más débiles y menos seguras.

Evite el puerto 22

El puerto 22 es el puerto estándar para conexiones SSH. Si usa un puerto diferente, agrega un poco de seguridad a través de la oscuridad a su sistema. La seguridad a través de la oscuridad nunca se considera una verdadera medida de seguridad, y la he criticado en otros artículos. De hecho, algunos de los robots de ataque más inteligentes sondean todos los puertos abiertos y determinan qué servicio llevan, en lugar de depender de una simple lista de búsqueda de puertos y asumir que brindan los servicios habituales. Pero usar un puerto no estándar puede ayudar a reducir el ruido y el tráfico en el puerto 22.

Para configurar un puerto no estándar, edite su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Elimine el hash # del inicio de la línea "Port" y reemplace el "22" con el número de puerto de su elección. Guarde su archivo de configuración y reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Veamos qué efecto ha tenido. En nuestra otra computadora, usaremos el ssh comando para conectarse a nuestro servidor. los ssh comando predeterminado para usar el puerto 22:

ssh [email protected]

Nuestra conexión es rechazada. Intentemos de nuevo y especifiquemos el puerto 470, usando la opción -p (puerto):

ssh -p 479 [email protected]

Se acepta nuestra conexión.

Filtrar conexiones mediante envoltorios TCP

TCP Wrappers es fácil de entender lista de control de acceso . Le permite excluir y permitir conexiones según las características de la solicitud de conexión, como la dirección IP o el nombre de host. Los envoltorios TCP deben usarse junto con, y no en lugar de, un firewall configurado correctamente. En nuestro escenario específico, podemos ajustar las cosas considerablemente mediante el uso de envoltorios TCP.

Los contenedores TCP ya estaban instalados en la máquina Ubuntu 18.04 LTS utilizada para investigar este artículo. Tenía que instalarse en Manjaro 18.10 y Fedora 30.

Para instalar en Fedora, use este comando:

sudo yum install tcp_wrappers

Para instalar en Manjaro, use este comando:

sudo pacman -Syu tcp-wrappers

Hay dos archivos involucrados. Uno tiene la lista de permitidos y el otro tiene la lista de denegados. Edite la lista de denegaciones usando:

sudo gedit /etc/hosts.deny

Esto abrirá el gedit editor con el archivo de denegación cargado en él.

Necesitas agregar la línea:

TODO TODO

Y guarde el archivo. Eso bloquea todo acceso que no ha sido autorizado. Ahora necesitamos autorizar las conexiones que desea aceptar. Para hacer eso, necesita editar el archivo de permiso:

sudo gedit /etc/hosts.allow

Esto abrirá el gedit editor con el archivo de permiso cargado en él.

Agregamos el nombre del demonio SSH, SSHD Y la dirección IP de la computadora que vamos a permitir para hacer una conexión. Guarde el archivo y veamos si las restricciones y los permisos están vigentes.

Primero, intentaremos conectarnos desde una computadora que no esté en el hosts.allow expediente:

La conexión se rechaza. Ahora intentaremos conectarnos desde la máquina en la dirección IP 192.168.4.23:

Se acepta nuestra conexión.

Nuestro ejemplo aquí es un poco brutal: solo se puede conectar una computadora. Los envoltorios TCP son bastante versátiles y más flexibles que esto. Apoya nombres de host, comodines y máscaras de subred para aceptar conexiones de rangos de direcciones IP. Se le anima a echa un vistazo a la página del manual .

Rechazar solicitudes de conexión sin contraseñas

Aunque es una mala práctica, un administrador del sistema Linux puede crear una cuenta de usuario sin contraseña. Eso significa que las solicitudes de conexión remota de esa cuenta no tendrán contraseña para verificar. Se aceptarán esas conexiones pero no se autenticarán.

La configuración predeterminada de SSH acepta solicitudes de conexión sin contraseñas. Podemos cambiar eso muy fácilmente y asegurarnos de que todas las conexiones estén autenticadas.

Necesitamos editar su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que dice "#PermitEmptyPasswords no". Quitar el hash # desde el principio de la línea y guarde el archivo. Reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Utilice claves SSH en lugar de contraseñas

Las claves SSH proporcionan un medio seguro para iniciar sesión en un servidor SSH. Las contraseñas se pueden adivinar, descifrar o fuerza bruta . Las claves SSH no están abiertas a este tipo de ataques.

Cuando genera claves SSH, crea un par de claves. Una es la clave pública y la otra es la clave privada. La clave pública se instala en los servidores a los que desea conectarse. La clave privada, como sugiere el nombre, se mantiene segura en su propia computadora.

Las claves SSH le permiten realizar conexiones sin una contraseña que son, en contra de la intuición, más seguras que las conexiones que utilizan autenticación de contraseña.

Cuando realiza una solicitud de conexión, la computadora remota usa su copia de su clave pública para crear un mensaje encriptado que se envía de vuelta a su computadora. Debido a que fue encriptado con su clave pública, su computadora puede desencriptarlo con su clave privada.

Luego, su computadora extrae cierta información del mensaje, en particular la identificación de la sesión, la cifra y la envía de vuelta al servidor. Si el servidor puede descifrarlo con su copia de su clave pública, y si la información dentro del mensaje coincide con lo que el servidor le envió, se confirma que su conexión proviene de usted.

Aquí, un usuario con claves SSH establece una conexión con el servidor en 192.168.4.11. Tenga en cuenta que no se les solicita una contraseña.

ssh [email protected]

Las claves SSH merecen un artículo para sí mismas. Prácticamente, tenemos uno para ti. Aquí está cómo crear e instalar claves SSH .

RELACIONADO: Cómo crear e instalar claves SSH desde el Shell de Linux

Deshabilitar la autenticación de contraseña por completo

Por supuesto, la extensión lógica del uso de claves SSH es que si todos los usuarios remotos se ven obligados a adoptarlas, puede desactivar la autenticación de contraseña por completo.

Necesitamos editar su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que comienza con "#PasswordAuthentication yes". Quitar el hash # desde el principio de la línea, cambie el "sí" a "no" y guarde el archivo. Reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Deshabilitar el reenvío X11

El reenvío X11 permite a los usuarios remotos ejecutar aplicaciones gráficas desde su servidor a través de una sesión SSH. En manos de un actor de amenazas o un usuario malintencionado, una interfaz gráfica de usuario puede facilitar sus propósitos malignos.

Un mantra estándar en ciberseguridad es que si no tiene una buena razón para tenerlo encendido, apáguelo. Lo haremos editando su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que comienza con "# X11 No de reenvío". Quitar el hash # desde el principio de la línea y guarde el archivo. Reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Establecer un valor de tiempo de espera inactivo

Si hay una conexión SSH establecida a su computadora, y no ha habido actividad en ella durante un período de tiempo, podría suponer un riesgo de seguridad. Existe la posibilidad de que el usuario haya abandonado su escritorio y esté ocupado en otro lugar. Cualquier otra persona que pase por su escritorio puede sentarse y comenzar a usar su computadora y, a través de SSH, su computadora.

Es mucho más seguro establecer un límite de tiempo de espera. La conexión SSH se interrumpirá si el período inactivo coincide con el límite de tiempo. Una vez más, editaremos su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que comienza con "#ClientAliveInterval 0" Elimine el hash # desde el principio de la línea, cambie el dígito 0 al valor deseado. Usamos 300 segundos, que son 5 minutos. Guarde el archivo y reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Establecer un límite para los intentos de contraseña

Definir un límite en el número de intentos de autenticación puede ayudar a frustrar la adivinación de contraseñas y los ataques de fuerza bruta. Después del número designado de solicitudes de autenticación, el usuario será desconectado del servidor SSH. Por defecto, no hay límite. Pero eso se remedia rápidamente.

Nuevamente, necesitamos editar su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que comienza con "#MaxAuthTries 0". Quitar el hash # desde el principio de la línea, cambie el dígito 0 al valor deseado. Hemos utilizado 3 aquí. Guarde el archivo cuando realizó los cambios y reinicie el demonio SSH:

sudo systemctl reiniciar sshd

Podemos probar esto intentando conectarnos e ingresando deliberadamente una contraseña incorrecta.

Tenga en cuenta que el número de MaxAuthTries parecía ser uno más que el número de intentos que se le permitió al usuario. Después de dos malos intentos, nuestro usuario de prueba se desconecta. Esto fue con MaxAuthTries establecido en tres.

Deshabilitar inicios de sesión de root

Es una mala práctica iniciar sesión como root en su computadora Linux. Debe iniciar sesión como usuario normal y utilizar sudo para realizar acciones que requieran privilegios de root. Aún más, no debe permitir que root inicie sesión en su servidor SSH. Solo los usuarios habituales deben poder conectarse. Si necesitan realizar una tarea administrativa, deben usar sudo también. Si se ve obligado a permitir que un usuario root inicie sesión, al menos puede obligarlo a usar claves SSH.

Por última vez, tendremos que editar su archivo de configuración SSH:

sudo gedit / etc / ssh / sshd_config

Desplácese por el archivo hasta que vea la línea que comienza con "#PermitRootLogin prohibit-password" Elimine el hash # desde el inicio de la línea.

  • Si desea evitar que root inicie sesión, reemplace "prohibit-password" por "no".
  • Si va a permitir que root inicie sesión pero los obliga a usar claves SSH, deje “prohibit-password” en su lugar.

Guarde sus cambios y reinicie el demonio SSH:

sudo systemctl reiniciar sshd

El último paso

Por supuesto, si no necesita SSH ejecutándose en su computadora, asegúrese de que esté deshabilitado.

sudo systemctl detener sshd
sudo systemctl deshabilitar sshd

Si no abre la ventana, nadie puede entrar.

.entrada-contenido .entry-footer

The Best Ways To Secure Your SSH Server

How To Secure Linux SSH Server

How To Secure And Protect SSH Server

How To Secure A Server

Fail2ban Tutorial | How To Secure Your Server

How To Secure A Linux Server With UFW, SSH Keygen, Fail2ban & Two Factor Authentication

🔒 Securing SSH Server: Configuration

Beginners Guide To SSH


Privacidad y seguridad - Artículos más populares

Cómo ocultar el juego que estás jugando en Discord

Privacidad y seguridad Apr 3, 2025

Discord muestra automáticamente a tus amigos los juegos que estás jugando. Si un juego usa Discord Presencia rica función, tus amigos pueden incluso ver dónde est..


¿Qué es el "contenido mixto" y por qué Chrome lo bloquea?

Privacidad y seguridad Dec 9, 2024

Google Chrome ya bloquea algunos tipos de "contenido mixto" en la web. Ahora, Google Anunciado Se está volviendo aún más serio: a principios de 2020, Chrome bloque..


Cómo permitir que un contacto omita el modo No molestar de iOS

Privacidad y seguridad Aug 27, 2025

CONTENIDO NO CUBIERTO Lector silencioso La función No molestar del iPhone es una excelente manera de asegurarse de que su teléfono no lo moleste cuando es..


Cómo crear y administrar códigos de usuario para Schlage Connect Smart Lock

Privacidad y seguridad Nov 15, 2024

Lo mejor de tener un bloqueo de teclado como el Schlage Connect es que no necesita llaves físicas en absoluto. En su lugar, simplemente ingrese un código clave (también conocido ..


Cómo reparar su propia computadora: 7 cosas fáciles que hacen los lugares de reparación de computadoras

Privacidad y seguridad Nov 12, 2024

CONTENIDO NO CUBIERTO Los lugares de reparación de computadoras como Geek Squad de Best Buy hacen muchas cosas que usted mismo puede hacer fácilmente. En lugar de pagar una cost..


Cómo desactivar y eliminar su historial de "Ok Google"

Privacidad y seguridad Jul 13, 2025

CONTENIDO NO CUBIERTO "Ok Google" es una gran herramienta que muchos de nosotros ya damos por sentado, pero ¿sabías que Google está almacenando todas tus búsquedas? ¿O que pu..


Cómo evitar que Windows 10 le pida comentarios

Privacidad y seguridad Dec 11, 2024

CONTENIDO NO CUBIERTO Windows 10 no solo recopilar automáticamente información sobre el uso de su computadora . Lo hace, pero también puede aparecer de vez en cu..


JavaScript no es Java: es mucho más seguro y útil

Privacidad y seguridad Oct 21, 2025

CONTENIDO NO CUBIERTO Probablemente haya escuchado todo acerca de cómo el complemento del navegador Java es inseguro. 91% de los compromisos del sistema en 2013 fueron co..


Categorías