Pages

Ads 468x60px

martes, 23 de diciembre de 2014

Hardening SSH



El protocolo SSH (Secure Shell) sirve para poder acceder a maquinas de manera remota tanto en la red local, como hacia el exterior, permitiendo así manejar todos tus equipos.

Bien, hecha esta pequeña introducción, vamos a ver como podemos hacer más seguro nuestro acceso. En el ejemplo uso Debian 7.

SSH por defecto utiliza el puerto 22, pero este ya es conocido por todos, y además utilizados en numerosos ataques. 
Entonces, lo primero que debemos hacer es solucionar eso.


Nos conectamos a nuestro servidor y editamos el archivo 

    vi /etc/ssh/sshd_config

Si nos fijamos, en las primeras lineas aparece "Port 22", vamos a cambiar ese valor por otro número de puerto que no tenga nada que ver, por ejemplo el 61256. (Recordad que ahora para acceder hay que indicar el puerto: ssh -p 61256 root@ip_servidor).




Una vez que lo hemos modificado, reiniciamos SSH para que coja la nueva configuración.

     /etc/init.d/ssh restart




Bueno, ya tenemos una pequeña parte hecha, vamos a continuar securizando SSH.

El protocolo SSH tiene dos versiones, la uno ya está en desuso, pero por compatibilidad se mantiene, e incluso en algunas maquinas, está presente. Vamos a verificar que esto no sea así y que solo se puede usar la versión 2.

Volvemos a editar el archivo de configuración.

     vi /etc/ssh/sshd_config




En este caso, como podemos observar, solo está activa la versión 2, así que no debemos modificar nada.

Lo siguiente que revisamos es el tiempo que tendremos en la pantalla de login para poner nuestras credenciales. En la siguiente imagen vemos que está a 120 segundos, es decir, dos minutos. ¿En serio alguien tarda dos minutos para introducir su usuario y contraseña? No verdad, pues vamos a cambiar el tiempo (recordad que es en segundos) con el parámetro LoginGraceTime.




Dejamos 18 segundos que yo creo que es más que suficiente.
En la misma imagen, podemos ver que también está permitido el acceso al usuario Root, que como ya deberíais saber, no debe usarse. De momento lo dejaremos así, pero luego volveremos para cortarle el acceso.

Vamos a restringir el acceso a un maximo de dos conexiones simultaneas por IP, es decir, que alguien que se conecte desde una IP solo pueda abrir dos sesiones de SSH y eso lo hacemos modificando el valor MaxStartups.

A la vez, también vamos a cambiar el valor de MaxAuthTries a 2 que es lo que le indica las veces que podemos equivocarnos al poner el usuario y contraseña (el login).




Una vez hecho esto, volvemos a guardar el fichero y reiniciamos SSH igual que antes.

     /etc/init.d/ssh restart

Bueno, volviendo al tema del Root y de que no tenemos que permitir su uso, vamos a crear otro usuario y a darle privilegios para que con éste (el nuevo usuario) podamos realizar diversas tareas de administración.

Creamos el usuario rober:

     adduser rober

Establecemos una contraseña fuerte y nos pide que rellenemos los datos (cuantos menos mejor, por si los ataques xD).




Una vez que tenemos el usuario, vamos a editar el archivo sudoers para darle permisos.

     visudo

** Nota: en mi caso, primero tuve que instalar sudo porque no me dejaba editar el fichero (mas bien no existía). Para ello, aptitude install sudo (obviamente en Debian).




Como ya tenemos un usuario y éste tiene privilegios, podemos quitar al usuario Root del archivo /etc/ssh/sshd_config
Lo editamos:

    vi /etc/ssh/sshd_config





En algunos servidores por motivos de administración, quizá sea necesario que algún otro usuario pueda acceder, para ello, usaremos AllowUsers.

     AllowUsers rober      -> Esto permitirá el acceso a ese usuario.
   AllowUsers rober@10.1.1.100    -> Permite el acceso al usuario solo desde la IP indicada.
     AllowUsers rober@10.1.1.*        -> Permite el acceso al usuario desde toda la red.
     
Por ultimo, vamos a configurar el logout para que pasados X segundos de inactividad eche al usuario.

     ClientAliveInterval 180

De ésta manera, al pasar los 180 segundos (3 minutos) se desconectará de forma automática.




Y por hoy es todo, en otra entrada seguiremos viendo que mas podemos añadir a SSH para hacerlo más seguro.



Roberto García (@1GbDeInfo)

Creative Commons Licence
1Gb De informacion by Roberto García Amoriz is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Based on a work at http://www.1gbdeinformacion.com/.
Permissions beyond the scope of this license may be available at http://www.1gbdeinformacion.com/.

Perfil profesional en Linkedin

 
Blogger Templates