OpenSSH sin duda es el software por excelencia para acceder remotamente y de forma totalmente segura a nuestros servidores, Unix y GNU/Linux. El servicio de SSH es fundamental cuando necesitamos administrar servidores.

Para acceder por ssh a un sistema Linux, solo hace falta un usuario y contraseña, sin embargo tenemos otros métodos que hacen que la conexión ssh sea más segura, una de ellas es la utilización de llave privada y llave pública.

Sin embargo con el tiempo han aparecido nuevas herramientas que trabajan con SSH sin problema y permiten fortalecer la seguridad del mismo.

Uno de estos métodos el desarrollado por Google llamando Google Authenticator, este software utiliza el método de autenticación en dos pasos, es muy conocido en accesos a Gmail o cualquier otro software, sin embargo podemos usarlo también en autenticación a servidores Linux a través de SSH.

Instalando Google Authenticator

Para instalar Google Authenticator necesitamos instalar en nuestro sistemas las siguientes dependencias.

yum install git pam-devel make gcc-c++

A continuación descargamos el código

# git clone https://code.google.com/p/google-authenticator/
# cd google-authenticator/libpam

Ahora procedemos a compilarlo e instalarlo.

# make
# make install

Ahora vamos a modificar la configuración pam del servicio SSH:

# vi /etc/pam.d/sshd

Agregamos la siguiente línea al final del archivo:

auth required pam_google_authenticator.so

Configuración del servicio SSH

# vi /etc/ssh/sshd_config

Cambiamos:

ChallengeResponseAuthentication no

Por:

ChallengeResponseAuthentication yes

Reiniciamos el servicio SSH

#systemctl restart sshd

Configurar Google Authenticator

Para comenzar con la configuración de Google Authenticator ejecutamos el siguiente comando.

google-authenticator

Lo primero que nos preguntará es si queremos que nuestros tokens de acceso estén basados en el tiempo. Seleccionamos que sí y continuamos.

Do you want authentication tokens to be time-based (y/n) y

Veremos a continuación nuestra clave privada, la clave de verificación y los códigos de recuperación. Debemos guardar todos estos datos de forma segura de manera que podamos recuperar el acceso en caso de pérdida de la clave de autenticación.

Seguimos con el asistente, le indicamos que no guarde los cambios en el archivo de nuestra carpeta /home y nos preguntará si queremos que cada token sea utilizado una única vez, aunque eso limite a un inicio de sesión cada 30 segundos. Para protegernos frente a posibles ataques MITM seleccionamos que sí y continuamos.

Igualmente nos preguntará si queremos ampliar el periodo de validez de cada código. Esto nos evitará problemas de sincronización entre nuestro servidor y nuestro smartphone a la hora de calcular los códigos, por lo que es recomendable habilitarla. Para evitar ataques de fuerza bruta también podemos limitar las conexiones a 3 por cada 30 segundos.

https://www.google.com/chart?chs=200×200&chld=M|0&cht=qr&chl=otpauth://totp/root@centos%3Fsecret%5LJDRDFGT43GHK98Q
Your new secret key is: LJDRDFGT43GHK98Q
Your verification code is 567183
Your emergency scratch codes are:
19834341
88856497
27368287
41744325
61547205

Do you want me to update your “/root/.google_authenticator” file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y

If the computer that you are logging into isn’t hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

Listo ahora solo nos queda instalar en nuestro móvil Android o iOS las aplicaciones Google Autenticator y Barcode Scanner.

unnamed

Ahora conectate a tu servidor por ssh y a su vez debes lanzar la app Google Autenticator en tu celular, esa te mostrará los códigos que debes colocar en tu ssh antes de el pass de root y ahi podrás loguearte.

Screenshot_2015-05-29-17-07-32

MFCP!!!