La seguridad de un sistema depende en gran parte de sus usuarios. Si éstos no conocen con profundidad sus aspectos más vulnerables, no importa si usan Windows, Linux, Mac u otro sistema. Estarán expuestos a varios riesgos. A continuación, protegemos los logueos remotos mediante SSH a cuentas potencialmente inseguras.

 

 

 

 

 

 

 

 


 Sigamos este razonamiento: Si más de un usuario utiliza una PC, las probabilidades de que uno de ellos tenga una contraseña insegura aumenta proporcionalmente al número total de usuarios.

 

Si una PC posee más de una cuenta (por ejemplo una para acceder mediante la red LAN para compartir una impresora de forma segura, y otra que utiliza un usuario para trabajar diariamente), no es necesario que el password para la red LAN sea tan seguro como la de acceso remoto. Pero hay algo que se debe tener en cuenta: Un servidor SSH instalado y corriendo sin configuraciones previas no diferencia usuarios, ni cuentas. Está disponible para todos ellos indistintamente.

En la siguiente imagen vemos una ilustración de lo mencionado:

Vemos que un atacante puede penetrar en el sistema mediante la cuenta insegura, puede acceder facilmente a toda la información contenida en esa PC, o por qué no, a toda la red LAN subyacente.

Para ello es necesario restringir el servidor SSH a ciertos usuarios (los estrictamente necesarios), y en lo posible deshabilitar al usuario root (administrador) de las cuentas logueables remotamente.


Manos a la obra!

Simplemente desde la consola accedemos al archivo de configuración de SSH, ubicado generalmente en

/etc/ssh/sshd_config

ingresando:

sudo gedit /etc/ssh/sshd_config

A continuación buscamos la línea y reemplazamos a:

PermitRootLogin yes

por no


Ahora lo más importante:

Es conveniente generar un nuevo grupo de usuarios que tengan el privilegio de poder loguearse por SSH. El resto será excluido de este privilegio, con lo cual aumenta la seguridad e integridad del sistema.

¿Cómo hacerlo? Por ejemplo, llamamos a un grupo ssh y sólo se lo asignamos al administrador de la cuenta. De esta forma solo hay un usuario (o reducido grupo de usuarios) accesibles desde el exterior, el cual se supone que posee una contraseña segura.

Finalmente, agregamos una línea al archivo sshd_config con la variable AllowGroups y el nombre del grupo que creamos. Por ejemplo:

AllowGroups ssh 

Como último paso queda reiniciar el servidor SSH, utilizando los siguientes comandos:

sudo /etc/init.d/ssh restart

En las siguientes capturas ilustramos el paso a paso de lo que se explicó recién:

En " Sistema -> Administración -> Usuario y Grupos " gestionamos el usuario que tendrá el privilegio SSH (****)


Simplemente nos dirigimos a "Añadir"

Proporcinamos un nombre al grupo y seleccionamos quiénes formarán parte

Escribir  en el archivo ssd_config el nombre del grupo (o los grupos) que pueden hacer uso de este servicio.

Reiniciamos el servidor SSH


Y listo!

**** Noten como el usuario Cristian (yo, en este ejemplo), no es administrador. Simplemente es un grupo personalizado. Esto es extremadamente importante desde el punto de vista de la seguridad. Además, si fuese del grupo root, no me permitiría loguearme, ya que he restringido el acceso por SSH para el grupo root.

Configuraciones de seguridad adicionales

Ahora vamos a ver algunas configuraciones que hacen a la seguridad integral del sistema. Esto proporcionará unas barreras extra en caso de que la red esté queriendo ser vulnerada por un intruso.

Todas estas configuraciones se harán a través del archivo de configuración de SSH. Para editarlo, ingresa en el terminal:

sudo gedit /etc/ssh/sshd_config

Desde quí podremos modificar o agregar los siguientes parámetros:

Cambiar el puerto por el cual SSH acepta las conexiones entrantes.

Por defecto el protocolo SSH trabaja sobre el puerto 22. Esto puede dejarse tal como está, pero si existen bloqueos desde el proveedor ISP, o la red empresarial de la cual se forma parte, este puerto puede ser cambiado facilmente desde el archivo buscar y cambiar la siguiente línea por el puerto deseado:

port 22


Protocolo SSH

Antiguamente se utilizaba Telnet para realizar estas conexiones. El problema era que los paquetes no vijaban encriptados, por lo que suponía una gran falla de seguridad. Posteriormente se utilizó la primer versión de SSH, la cual en la actualidad es desaconsejable utilizara. Por ello descartaremos la posibilidad de recibir conexiones utilizando SSHv1. Para ello modificar la línea que contiene el protocolo por

Protocol 2


Tiempo que el cliente tiene para loguearse

Si el usuario cliente conoce bien su usuario y contraseña, no hay muchas explicaciones que justifiquen el hecho de proporcionarle un tiempo largo para que se loguee. El valor por defecto suele ser de 120 segundos (2 minutos). Este tiempo puede ser aprovechado por scripts para probar gran cantidad de contraseñas en ese intervalo. Por ello puede ser reducido a unos 30 segudnos (siempre que el tipeo de la contraseña no supere este tiempo). Buscar y reemplazar la línea que contiene:

LoginGraceTime 120


Limitar los intentos de logueo

Nuevamente, si el usuario cliente conoce la contraseña y ésta no es lo suficientemente compleja de tipear, puede ser accedido en no más de dos intentos (en el peor de los casos). Entonces podemos agregar una barrera extra al limitar la cantidad de intentos al loguearse.

Será una pesadilla para los scripts basados en ensayo de prueba y error, ya que tendrá que establecer la conexión nuevamente cada dos intentos fallidos. Para ello buscar y reemplazar (o agregar si no existe):

MaxAuthTries 2


Limitar la cantidad de conexiones simultáneas

Si estamos seguros de que el servidor SSH nunca aceptará más de X clientes simultáneamente, entonces podemos hacer uso de esa ventaja. Buscar y reemplazar la línea:

MaxStartups X


Una vez finalizado

Una vez finalizada la tarea de editar el archivo de configuración, procedemos a reiniciar el servidor SSH con el siguiente comando en el Terminal:

sudo /etc/init.d/ssh restart

Una vez seguido este procedimiento, podremos estar tranquilos de que a ya temos un servidor considerablemente más seguro.

Desarrollado por Cristian1604 - (cc) Creative Commons