27 abril, 2024

IsProto

Soluciones para Redes e Internet

SSH: Guía de Uso para tu Acceso Remoto

ssh

¿Qué es SSH? SSH significa Security Shell, es decir consola segura. Todo acceso remoto a un servidor requiere de un grado alto de seguridad para evitar accesos no autorizados a la red.

En éste artículo te mostraremos el uso se Security Shell para acceso remoto en tu servidor o equipo, así como otras medidas de seguridad para proteger el acceso a tu red.

¿Porqué acceder a tu servidor vía SSH?

Tal vez ya conozcas algunas formas de acceder a tu servidor, entre las más populares solían ser telnet (puerto 21) y ftp (puerto 23). Sin embargo el riesgo de seguridad es muy alto al utilizar éste tipo de servicios, debido a la ausencia de cifrado en su uso.

SSH es un servicio cuyo objetivo es proporcionar un acceso remoto y subsanar las deficiencias de telnet y ftp. Su protocolo funciona a través del puerto 22 en forma original, cifrando la comunicación para permitirte un acceso seguro y evitar que tus datos viajen en claro a través de internet.

¿Cómo acceder a tu servidor vía SSH?

ssh

Para acceder al servidor vía SSH puedes hacerlo en forma muy simple a través de la línea de comandos de cualquier consola tipo Unix, Linux e incluso alternativas como PuTTy.

El comando estándar utilizado para acceder al servidor a través del servicio ssh es el siguiente:

ssh usuario@host

E introducir la contraseña del usuario por el cual vas a acceder al servidor. Por ejemplo, si tu usuario es “admin” y el host es “example.com”, el comando para acceder al servidor a través del siguiente comando:

ssh [email protected]

Con éste comando puedes acceder a tu servidor de forma segura a través del puerto 22.

Documentación básica de SSH

Aún cuando el servicio de SSH te proporciona un acceso seguro, aún así puedes incrementar el nivel de seguridad en tu acceso remoto.

El propósito de ésta sección es mostrarte algunas opciones para mejorar el nivel de seguridad de tu acceso, así como la personalización del servicio a través de las diferentes opciones que te proporciona éste comando.

Cambio de puerto

Es muy habitual que los usuarios tengan cientos o miles de intentos fallidos de ingresar a su servidor todos los días vía sshd, esto se debe a que hay muchas botnets que explotan todo el tiempo las vulnerabilidades de los servidores remotos débiles.

Una forma de ofuscar el problema es cambiando el puerto. Ofuscar es la acción de ocultar el problema, y al cambiar el puerto se detiene hasta un 99% de éste tipo de ataques, debido a que las botnet tienen localizado perfectamente el puerto 22 como flanco de ataque de fuerza bruta a los servidores.

Para cambiar el puerto de acceso de acceso al servidor remoto, puedes modificar el puerto de acceso directamente en el archivo de configuración ubicado en /etc/ssh/sshd_config, que contiene las opciones que el servicio ssh debe ejecutar para el acceso de los usuarios.

La opción a modificar es Port, por ejemplo si queremos acceder a través del puerto 28 en lugar del puerto por default 22, debemos incluir la siguiente opción en /etc/ssh/sshd_config:

Port 28

Finalmente guardamos y reiniciamos el servicio

systemctl restart sshd

Una vez reiniciado el servicio, el nuevo acceso debe incluir la opción -p, por lo tanto, tomando como ejemplo el acceso del usuario “admin” en el host “example.com”, el acceso con el puerto modificado ahora será:

ssh [email protected] -p 28

Restringir el acceso de root

El acceso root tiene todos los privilegios de superadmin para realizar cualquier cambio en la configuración de tu computadora o servidor. Por ejemplo instalar o modificar módulos, cambiar la configuración del sistema, del servidor web, entre otras modificaciones sensibles.

Para ello, con el objetivo de reducir el riesgo de una destrucción total en caso de hackeo, es altamente recomendable no permitir el acceso de root en la configuración de /etc/ssh/sshd_config. Para ello te mostramos las opciones que tienes que agregar para eliminar el acceso directo de root de tu equipo:

UseDNS no
GSSAPIAuthentication no
PermitRootLogin no
AllowUsers admin

Al modificar éstas opciones en el archivo /etc/ssh/sshd_config, no solo estamos impidiendo el acceso directo de root, sino también estamos configurando al menos un usuario, con el cual podemos acceder al servidor en forma remota.

Advertencias de configuración

Es obligatorio agregar al menos un usuario con el cuál tendremos acceso a nuestro servidor antes de reiniciar el servicio, o de lo contrario se bloqueará el acceso a tu servidor remoto de forma definitiva.

Para ello te recomendamos probar el acceso remoto de éste usuario antes de reiniciar la configuración. Si aún no has creado el usuario, puedes crearlo utilizando el comando:

useradd [nombre_usuario]

El cual nombre_usuario debe coincidir con el AllowUsers de tu configuración de /etc/ssh/sshd_config. También debes agregar una contraseña segura al usuario (diferente a la de root) por medio del comando:

passwd [nombre_usuario]

Una vez creado tu usuario y que puedes tener acceso al sistema a través de él, podrás reiniciar tu servicio con systemctl restart sshd.

El acceso a root podrá hacerse a través del comando su una vez que ingresas al sistema con el usuario creado, utilizando tu contraseña de root.

Autenticación con Criptografía de Clave Pública

ssh

Aunque la protección de ofuscación de puerto y evitar el acceso de root son efectivas, podrías mejorar el nivel de seguridad utilizando una clave privada, que puede establecerse a través de una autenticación vía RSA o DSA.

Para utilizar la criptografía de clave pública en tu autenticación, deberás generar un par de llaves utilizando la biblioteca openssh. Este proceso lo debes hacer en tu computadora local.

La generación de claves es muy simple utilizando el comando:

ssh-keygen -t rsa -b 2048

Y escribimos la contraseña (passphrase) que deseemos para nuestro par de claves. Se generan dos archivos de claves:

~/.ssh/id_rsa: Es la clave privada.

~/.ssh/id_rsa.pub: Es la clave pública.

Así se creó un directorio que tenga acceso a las clave privada ~/.ssh, con permiso de root exclusivamente. Ahora deberás copiarlo a tu equipo remoto utilizando el comando:

ssh-copy-id ~/.ssh/id_rsa.pub [email protected]

Haz la prueba de tu acceso utilizando el comando:

ssh -i ~/.ssh/id_rsa.pub [email protected]

Ahora es necesario copiar la clave pública al listado de authorized_keys, en el servidor puedes hacerlo siguiendo los pasos siguientes:

mkdir -p ~/.ssh

chmod 0700 ~/.ssh

cp ~/id_rsa.pub ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

Y finalmente deshabilitar el acceso por contraseña agregando la opción en /etc/ssh/sshd_config:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no

Y cambiar los permisos para permitir el acceso al usuario:

chown -R ~ admin

chgrp -R ~/.ssh/ admin

Advertencia: No deshabilites el PasswordAuthentication sin verificar tu acceso exitoso utilizando tus claves, o de lo contrario podrías bloquear tu acceso en forma definitiva, para ello haz la prueba antes.

Conclusiones

Las opciones mostradas en forma anterior te permiten tener un acceso completo y seguro a tu servidor remoto, tanto las medidas de ofuscación de puerto, restricción de acceso root y acceso por medio de claves te proporcionan medidas de seguridad contra accesos no autorizados.

No obstante, la seguridad también radica en la contraseña, trata que tu contraseña no contenga palabras de diccionario, que tenga al menos 10 caracteres, combinados con números y símbolos especiales.

Toda medida de seguridad adicional te proporciona una mejora en tu acceso, también protege tus otros servicios que tienen acceso a tu servidor a través de puertos, ya que la seguridad de acceso remoto sshd es solamente uno de los muchos factores que debes considerar para proteger tu servidor de ataques.