Guía elemental de seguridad en SSH

Qué pasa calabaza, hoy voy a enseñarte a cómo puedes mejorar mucho más la seguridad de tu servicio SSH pero vayamos del inicio, ¿Qué es SSH? ese servicio que tanto nos menciona nuestro amigo el administrador de sistemas que se la pasa en aquel computador y solo vemos esa pantalla negra con letras (también puede que esté viendo Matrix, no lo sabemos, no tenemos ese dato).

Según nuestro compa Wikipedia

SSH es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.

Sin embargo ¿qué tan seguro es realmente? si bien como es mencionado anteriormente, nos permite el acceso remoto a nuestro servidor por un canal seguro pero también este podría permitirle a ciberdelincuentes acceder a nuestro servidor de manera no autorizada, y comprometer nuestros servicios.

Entonces, ¿Cómo lo hacemos más seguro? aquí entra tu compa RaiN (o sea yo) al rescate.

Cómo mejorar la seguridad en SSH

Configuraciones básicas

Primero, lo más elemental, no uses contraseñas clásicas, el poder de una simple contraseña puede marcar la diferencia entre la protección de tu servidor y un acceso rápido y no autorizado por parte de un ciberdelincuente a tu servidor, así que contraseñas fuertes siempre.

Seguidamente, es muy recomendable utilizar pares de claves pública y privada (por supuesto, el servidor debe conocer las claves públicas de los usuarios que tienen acceso).

Como usuarios, en la computadora cliente podemos ejecutar el comando

ssh-keygen -b 4096

to básicamente creará dos ficheros, /home/(usuario)/.ssh/id_rsa y /home/(usuario)/.ssh/id_rsa.pub (aunque podemos cambiarles el nombre si así lo deseamos), el primer fichero será la clave privada y el segundo la clave pública. Podemos abrir los archivos con cualquier editor de texto sin problema para verificar su contenido, pero no modificarlos ya que esto afectaría a su correcto funcionamiento.

Ahora debemos añadir a nuestro servidor id_rsa.pub al final de todo el archivo /home/(usuario_en_el_servidor)/.ssh/authorized_keys

Con esto, de ahora en adelante, necesitarás guardar el archivo id_rsa en tu ordenador siempre que quieras acceder a dicho servidor, pues este será tu llave de acceso para acceder de una forma más personalizada y segura que con una simple contraseña.

Configuraciones en el fichero sshd_config

Ahora, vamos a configurar mejor el archivo /etc/ssh/sshd_config y así añadimos algunas capas de seguridad extra, te recomendamos abrir tu fichero sshd_config e ir haciendo las modificaciones pertinentes

Lo primero, es no permitir contraseñas vacías

PermitEmptyPasswords no

También, es importante limitar el tiempo que le damos al usuario para enviarnos la contraseña (con un par de minutos sobra, aunque podemos limitarlo más) por defecto ese tiempo es en segundos, para modificarlo emplearemos la siguiente línea de instrucciones, donde especificaré 2 minutos (120 segundos)

LoginGraceTime 120

También, vamos a limitar el número de intentos para inciar sesión con una contraseña, el número de contraseñas fallidas (en mi caso lo coloco a 2, pues supondremos que los clientes que usarán el servidor, saben a la perfección su contraseña, pero tú puedes poner la cantidad deseada)

MaxAuthTries 2

¿Hasta aquí vas bien? estupendo, porque al principio mencionamos el uso de claves públicas y privadas como método de autenticación, y a pesar de que las usemos, podemos aún ser vulnerables de que nuestro servidor acepte autenticación mediante contraseñas sin más, entonces, si hiciste lo anterior comentado sobre la creación de un par de clave y su adición a los hosts autorizados a acceder al servidor, entonces puedes seguir este paso ya que, con esta instrucción forzamos a no usar contraseñas sin más (es opcional)

PasswordAuthentication no

Por otro lado, denegaremos el acceso al usuario root y de esta forma nos aseguramos que nadie puede acceder como este usuario por medio de SSH

PermitRootLogin no

Ahora, si un ciberdelincuente se hace el listo e intenta establecer varias conexiones para probar autenticaciones diferentes, parémoslo (con esto estaremos diciendo que máximo 2 conexiones simultaneas estén en el SSH, tu puedes adaptarlo a tus requerimientos o los de tu empresa)

MaxStartups 2

Seguidamente, cambiaremos el puerto por defecto del SSH, y tu dirás, ¿en serio, eso aumentará la seguridad? pues sí, aunque no lo parezca, existen muchísimos ataques automatizados a los puertos por defecto de los servicios, en este caso al 22 que es el puerto de común uso del protocolo SSH, así que colóquemoslo en otro puerto, por ejemplo el 65534

Port 65534

Otra cosa, pero más que para seguridad es para evitar gastos de recursos innecesarios, es echar a los usuarios cuando llevan cierto tiempo inactivos y lo hacemos con esta instrucción, en este caso lo coloco a 10 minutos, nunca sabemos si nuestro administrador de sistema solo fue por agua, no seamos exagerados, pero si ya se está echando unas partidas del LoL en lugar de trabajar, entonces si hay que velar por los recursos del servidor

ClientAliveInterval 600
ClientAliveCountMax 0

Por otro lado y aunque no lo creas, advertir a quienes se conectan también puede ser un método de seguridad efectivo, pues puedes colocar mensajes para avisar a los empleados que, por ejemplo, se están monitoreando todas las direcciones IP que acceden o cualquier mensaje personalizado que quieras mostrar, este mensaje lo puedes escribir en un fichero de texto para que en el fichero /etc/ssh/sshd_config solo indiques la ruta de este

Banner (ruta)

Seguidamente, podemos establecer que solo ciertos usuarios puedan acceder, a modo de lista blanca

AllowUsers (usuarios)

# Ejemplo
# AllowUsers elbichosiu messirve elpanaeduardo

Ya para finalizar, comentarte que puedes hacer que solo se permita acceder desde la red local o que sean grupos creados para los respectivos accesos a los que los usuarios deberían pertenecer si quieren acceder

AllowUsers (usuario)@(ip)
AllowGroups (grupos)

# Ejemplo
# AllowGroups grupodelbicho grupodelpanarabbit

Y estas fueron algunas de las tantas maneras que podemos emplear para mantener seguro nuestro servicio SSH, recuerda mantener actualizado tu sistema operativo y todo el software en él, con esto también estás mejorando la seguridad de los mismos y también toma agua, el agua es vida.

Empieza en ciberseguridad con la mejor calidad existente y GRATIS

Proteger Red Wi-Fi

Consejos para proteger tu red Wi-Fi

Las redes Wi-Fi son esenciales para la vida cotidiana hoy en día,...
Redes

Terminología esencial en redes

Las redes son un elemento completamente necesario para la vida...

Qué es el protocolo DNS y sus características

Al hablar de protocolos que usamos a diario y que, pasar...
Candado verde

El candadito verde NO tiene por qué ser seguro

El candadito verde es uno de los elementos en los que los usuarios...
Instalar Packet Tracer

Instalación de Packet Tracer – Introducción a Redes

Hoy en día conocer sobre redes es lo más fundamental en...