"Secure Shell" SSH es un protocolo de red para establecer una conexión segura entre hosts, estándar en el puerto 22 (que es mejor cambiar). Los clientes SSH y los servidores SSH están disponibles para la mayoría de los sistemas operativos. Casi cualquier otro protocolo de red funciona dentro de SSH, es decir, puede trabajar de forma remota en otra computadora, transmitir una transmisión de audio o video a través de un canal encriptado, etc. Además, a
través de servidores proxy SOCKS en un host remoto, puede conectarse a otros hosts en nombre de este host remoto.
La autenticación se lleva a cabo con una contraseña, pero los desarrolladores y administradores de sistemas usan tradicionalmente claves SSH. El problema es que la clave secreta puede ser robada. Agregar una frase de contraseña teóricamente protege contra el robo de la clave secreta, pero en la práctica, al reenviar y almacenar en caché las claves,
aún se pueden usar sin confirmación . La autenticación de dos factores resuelve este problema.
Cómo implementar la autenticación de dos factores
Los desarrolladores de Honeycomb publicaron recientemente
instrucciones detalladas sobre cómo implementar la infraestructura adecuada en el cliente y el servidor.
La instrucción asume que tiene un cierto host base que está abierto en Internet (bastión). Desea conectarse a este host desde computadoras portátiles o computadoras a través de Internet y obtener acceso a todos los demás dispositivos que están detrás de él. 2FA garantiza que un atacante no pueda hacer lo mismo incluso si obtiene acceso a su computadora portátil, por ejemplo, mediante la instalación de malware.
La primera opción es OTP
OTP: contraseñas digitales de un solo uso, que en este caso se utilizarán para la autenticación SSH junto con la clave. Los desarrolladores escriben que esta no es una opción ideal, porque un atacante puede recoger un bastión falso, interceptar su OTP y usarlo. Pero esto es mejor que nada.
En este caso, las siguientes líneas se escriben en la configuración de Chef en el lado del servidor:
metadata.rb
attributes/default.rb
(de los attributes.rb
)files/sshd
recipes/default.rb
(copia de la recipe.rb
)templates/default/users.oath.erb
Cualquier aplicación OTP se instala en el lado del cliente: Google Authenticator, Authy, Duo, Lastpass,
brew install oath-toolkit
o
apt install oathtool openssl
, luego se genera una cadena base16 aleatoria (clave). Se convierte al formato Base32, que utilizan los autenticadores móviles, y se importa directamente a la aplicación.
Como resultado, puede conectarse al bastión y asegurarse de que ahora requiere no solo una frase de contraseña, sino también un código OTP para la autenticación:
➜ ssh -A bastion Enter passphrase for key '[snip]': One-time password (OATH) for '[user]': Welcome to Ubuntu 18.04.1 LTS...
Opción dos: autenticación de hardware
En este caso, no se requiere que el usuario ingrese un código OTP cada vez, ya que el segundo factor es el dispositivo de hardware o la biometría.
Aquí, la configuración de Chef es un poco más complicada, y la configuración de los clientes depende del sistema operativo. Pero después de completar todos los pasos, los clientes en MacOS pueden confirmar la autenticación en SSH usando una frase de contraseña y aplicando un dedo al sensor (segundo factor).
Los propietarios de iOS y Android confirman la entrada
presionando un solo botón en el teléfono inteligente . Esta es una tecnología especial de Krypt.co, que es incluso más segura que OTP.
En Linux / ChromeOS, hay una opción para trabajar con tokens USB YubiKey. Por supuesto, un atacante puede robar tu ficha, pero aún no conoce la frase de contraseña.

