Ver destacados

Cómo configurar seguridad SSH Linux

Tutorial oara saber cómo configurar seguridad SSH Linux y configurar la seguridad SSH Linux
Escrito por
9.8K Visitas  |  Publicado oct 09 2018 16:49
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


Uno de los protocolos más usados a nivel de seguridad para establecer conexiones en ambientes UNIX es el protocolo SSH (Secure Shell) el cual nos ofrece una serie de funcionalidades y características especiales para proteger los datos y las conexiones realizadas.

 

SSH es un protocolo que ha sido desarrollado enfocándose en la seguridad de las comunicaciones entre dos sistemas a través del modelo de cliente/servidor y gracias al cual se permite a los usuarios conectarse a un host de forma remota.
Una de las principales características de SSH es que este encripta la sesión de conexión, lo cual impide que algún usuario pueda obtener contraseñas no encriptadas.

 

Tipos de protección
Al usar el protocolo SSH contaremos con los siguientes tipos de protección:
  • Una vez se establezca la conexión inicial, el cliente puede verificar que está conectando al mismo servidor al cual se conectó anteriormente
  • El cliente envía la información de autenticación al servidor a través de una encriptación de 128 bits
  • Todos los datos enviados y recibidos durante la sesión son transferidos por medio de encriptación de 128 bits, lo cual hace difícil que se puedan descifrar y leer
  • El cliente tiene la oportunidad de reenviar aplicaciones X11 desde el servidor., esta es una técnica llamada reenvío por X11 la cual proporciona un medio seguro para usar aplicaciones gráficas sobre una red local o externa

 

Ahora, en los sistemas operativos Linux encontramos el archivo de configuración de SSH en la ruta /etc/ssh/ssh_config y gracias a este archivo será posible efectuar todas las medidas de seguridad para las conexiones SSH.

 

 

En el caso de los sistemas macOS, este archivo se encuentra en la ruta /private/etc/ssh/ssh_config y esta tiene un enlace simbólico a /etc/ssh/ssh_config para fines de compatibilidad.

 

Al editar este archivo debemos tener presente lo siguiente.

  • Las líneas vacías y las líneas que comienzan con '#' son comentarios
  • Cada línea comienza con una palabra clave, seguida de argumento (s)
  • Las opciones de configuración pueden estar separadas por espacios en blanco o espacios en blanco opcionales y un signo =
  • Los argumentos se pueden incluir entre comillas dobles (") para especificar argumentos que contengan espacios

 

Cómo crear y configurar un túnel SSH en Ubuntu 17.04 de Linux para navegar con altos niveles de seguridad evitando ataques.

 


1. Cómo editar el archivo ssh_config Linux


Para editar este archivo con el fin de establecer valores propios, debemos ejecutar lo siguiente con algún editor:
sudo nano /etc/ssh/ssh_config
Veremos lo siguiente:

 

 

 

 

El archivo ssh_config está organizado por hosts y allí cada host contiene configuraciones específicas para ese host en particular, allí podemos usar comodines como * para hacer coincidir varios nombres de host con una sola declaración.
Algunos de los parámetros que podemos usar en este archivo son:

 

Host
Restringe las declaraciones que son solo para los hosts que coinciden con uno de los patrones dados después de la palabra clave.

Match
Restringe las declaraciones para que solo se apliquen a los hosts que coincidan con los criterios especificados

AddressFamily
Especifica qué familia de direcciones se han de usar cuando se conecta, los argumentos válidos son: any, inet, inet6.

BatchMode
Con este valor la consulta de contraseña se deshabilitará, así se evita el bloqueo accidental en una solicitud de contraseña

BindAddress
Especifica el uso de la dirección especificada en la máquina local como la dirección de origen de la conexión.

ChallengeResponseAuthentication
Permite indicar si se ha de usar la autenticación de desafío-respuesta. Este es principalmente un método heredado y ha sido reemplazado por KbdInteractiveAuthentication

CheckHostIP
Indica a ssh que compruebe adicionalmente la dirección IP del host en el archivo known_hosts.

Cipher
Hace referencia al cifrado que se utilizará para cifrar la sesión en la versión de protocolo 1.

Ciphers
Especifica los cifrados permitidos para la versión 2 del protocolo en orden de preferencia.

 

A continuación, veremos algunos consejos prácticos para mejorar la seguridad de las conexiones SSH a Linux y así obtener las mejores prestaciones de acceso.

 


2. Cómo bloquear archivos SSH Linux


El primer paso antes de editar el archivo, es asegurarnos de que tanto el archivo ssh_config como el archivo sshd_config tienen el propietario y el usuario configurados como root, esto debido a que es el super usuario de Linux y nadie mejor que este sea el dueño.

 

Para ello ejecutamos lo siguiente:

sudo chown root:root /etc/ssh/sshd_config
sudo chmod og-rwx /etc/ssh/sshd_config

3. Cómo confirmar el protocolo SSH versión 2 Linux


La versión 2 de SSH posee un algoritmo de intercambio de claves mejorado el cual no es vulnerable al agujero de seguridad en la versión 1 mejorando así la seguridad general de las conexiones, de manera que es ideal confirmar que se está usando el nuevo Protocolo 2 en lugar del Protocolo 1 y para ello debemos confirmar la siguiente línea en el archivo ssh_config:
Protocol 2

 

Allí también podemos configurar el protocolo de forma implícita a través de Ciphers, el cual automáticamente establecerá Protocol en 2 para usar Ciphers modernos, para esto validamos la siguiente línea justo bajo la línea Protocol:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

4. Cómo deshabilitar contraseñas vacías SSH Linux


Es importante validar que cada cuenta SSH debe usar una contraseña al iniciar sesión bloqueando las contraseñas vacías las cuales permitirían el acceso simple ocasionando riesgos de seguridad en el sistema, para validar esto usaremos la siguiente línea o, si no existe, la añadimos anteponiendo el símbolo #:
PermitEmptyPasswords no

 


5. Cómo deshabilitar el inicio de sesión de root SSH Linux


Al evitar del inicio de sesión del usuario root será posible bloquear cuentas específicas y no permitir el uso de estas en todo el sistema, las opciones para PermitRootLogin incluyen "yes", "without-password", "forced-commands-only" o "no". El valor predeterminado es "sí". Para detener completamente el inicio de sesión de root usaremos la siguiente línea:
PermitRootLogin no

 


6. Cómo establecer un nuevo puerto SSH Linux


Por defecto el puerto asignado para SSH es el 22, de modo que los atacantes saben con certeza a través de cual puerto accederán para realizar sus ataques de modo que un buen método de seguridad es cambiar este puerto por defecto e indicarles solo a los usuarios autorizados el nuevo puerto.

 

Para esto, debemos ubicar la línea Port y añadir la siguiente sintaxis:

Port XXXXX

 


7. Cómo restringir acceso SSH Linux


En caso de que el acceso al servidor SSH este compuesto por varios usuarios, es posible aplicar determinadas restricciones creando grupos donde estén incluidos estos usuarios, esto es posible añadiendo palabras clave como:
AllowUsers (Permite el acceso de los usuarios)
AllowGroups (Permite el acceso de grupos)
DenyUsers (Restringe el acceso de usuarios)
DenyGroups (Restringe el acceso de grupos)
Por ejemplo, podemos ejecutar lo siguiente en el archivo de configuración:
AllowUsers Solvetic pruebas
DenyGroups test

8. Cómo actualizar el tiempo de gracia de SSH Linux


Por defecto, la cantidad de tiempo en que un usuario puede permanecer inactiva sin iniciar sesión es de dos minutos, esto con el fin de esto ayudará a prevenir conexiones no autorizadas al sistema, este tiempo lo podemos editar en la línea LoginGraceTime aumentando o disminuyendo este tiempo:
LoginGraceTime 1m

 


9. Cómo crear un alias SSH Linux


Dentro de las configuraciones SSH es posible especificar un alias, estos permiten conectarse a un servidor especifico a través de un puerto y usuarios definidos, por ejemplo, podemos añadir lo siguiente:
Host dev
	HostName dev.solvetic.com
	Port 3333
	User Solvetic
En este caso puntual debemos acceder del siguiente modo:
ssh Solvetic@dev.solvetic.com -p 3333

10. Autenticación con llaves seguras SSH Linux


ssh será mucho más seguro y útil cuando se usa con pares de llaves públicas / privadas para los temas de la autenticación, en lugar de usar contraseñas. El archivo ssh_config puede declarar una clave específica para un host específico usando la clave IdentityFile, en este caso ingresaríamos lo siguiente:
Host dev
	HostName dev.solvetic.com
	Port 3333
	User Solvetic
	IdentityFile ~/.ssh/dev.solvetic.key
Para este caso la conexión seria de la siguiente forma:
ssh -i ~/.ssh/dev.solvetic.key Solvetic@dev.solvetic.com -p 3333
Algunos parámetros adicionales son:

 

Compression (Compresión)
Allí podemos usar valores como yes o no para habilitar la desactivación de la compresión para un host.

LogLevel (Nivel de registro)
Permite definir el nivel de detalle en los registros para el cliente ssh, las opciones son QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 y DEBUG3.

StrictHostKeyChecking
Establece una preferencia para agregar hosts al archivo known_hosts.

 

Así, contamos con diferentes opciones para mejorar la seguridad y conectividad SSH en Linux.

 

Te enseñamos paso a paso cómo instalar Denyhost para prevenir ataques SSH en sistemas UBuntu de Linux.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!