Autenticación de dous factores para SSH

"Secure Shell" SSH é un protocolo de rede para establecer unha conexión segura entre hosts, normalmente a través do porto 22 (que é mellor cambiar). Os clientes SSH e os servidores SSH están dispoñibles para a maioría dos sistemas operativos. Case calquera outro protocolo de rede funciona dentro de SSH, é dicir, pode traballar de forma remota noutro ordenador, transmitir un fluxo de audio ou vídeo a través dunha canle cifrada, etc. Ademais, a través do proxy SOCKS nun host remoto pode conectarse a outros hosts en nome deste host remoto.

A autenticación prodúcese mediante un contrasinal, pero os desenvolvedores e os administradores do sistema usan tradicionalmente claves SSH. O problema é que a chave privada pode ser roubada. Engadir unha frase de paso protexe teoricamente contra o roubo da clave privada, pero na práctica, ao reenviar e almacenar as claves en caché, estas aínda se pode usar sen confirmación. A autenticación de dous factores resolve este problema.

Como implementar a autenticación de dous factores

Os desenvolvedores de Honeycomb publicaron recentemente instrucións detalladas, como implementar a infraestrutura adecuada no cliente e servidor.

As instrucións supoñen que tes un determinado servidor básico aberto a Internet (bastión). Quere conectarse a este host desde ordenadores portátiles ou ordenadores a través de Internet e acceder a todos os demais dispositivos que se atopan detrás del. 2FA garante que un atacante non pode facer o mesmo aínda que teña acceso ao teu portátil, por exemplo instalando malware.

A primeira opción é OTP

OTP: contrasinais dixitais únicos, que neste caso se usarán para a autenticación SSH xunto coa chave. Os desenvolvedores escriben que esta non é unha opción ideal, porque un atacante podería levantar un bastión falso, interceptar o seu OTP e usalo. Pero é mellor que nada.

Neste caso, no lado do servidor, escríbense as seguintes liñas na configuración de Chef:

  • metadata.rb
  • attributes/default.rb (desde attributes.rb)
  • files/sshd
  • recipes/default.rb (copia de recipe.rb)
  • templates/default/users.oath.erb

Calquera aplicación OTP está instalada no lado do cliente: Google Authenticator, Authy, Duo, Lastpass, instalado brew install oath-toolkit ou apt install oathtool openssl, entón xérase unha cadea aleatoria base16 (chave). Convértese ao formato Base32 que usan os autenticadores móbiles e impórtanse directamente na aplicación.

Como resultado, pode conectarse a Bastion e ver que agora require non só unha frase de acceso, senón tamén un código OTP para a autenticación:

➜ ssh -A bastion
Enter passphrase for key '[snip]': 
One-time password (OATH) for '[user]': 
Welcome to Ubuntu 18.04.1 LTS...

A segunda opción é a autenticación de hardware

Neste caso, o usuario non está obrigado a introducir o código OTP cada vez, xa que o segundo factor pasa a ser o dispositivo de hardware ou a biometría.

Aquí a configuración de Chef é un pouco máis complicada e a configuración do cliente depende do SO. Pero despois de completar todos os pasos, os clientes en MacOS poden confirmar a autenticación en SSH usando unha frase de paso e colocando un dedo no sensor (segundo factor).

Os propietarios de iOS e Android confirman o inicio de sesión premendo un botón do seu teléfono intelixente. Esta é unha tecnoloxía especial de Krypt.co, que é aínda máis segura que OTP.

En Linux/ChromeOS hai unha opción para traballar con tokens USB YubiKey. Por suposto, un atacante pode roubar a túa ficha, pero aínda non coñece a frase de paso.

Fonte: www.habr.com

Engadir un comentario