Двуфакторно удостоверяване за SSH

“Secure shell” SSH е мрежов протокол за установяване на защитена връзка между хостове, стандартно през порт 22 (който е по-добре да промените). SSH клиенти и SSH сървъри са налични за повечето операционни системи. Почти всеки друг мрежов протокол работи в SSH, тоест можете да работите отдалечено на друг компютър, да предавате аудио или видео поток през криптиран канал и т.н. Освен това, чрез SOCKS прокси на отдалечен хост можете да се свържете с други хостове от името на този отдалечен хост.

Удостоверяването става с помощта на парола, но разработчиците и системните администратори традиционно използват SSH ключове. Проблемът е, че личният ключ може да бъде откраднат. Добавянето на парола теоретично предпазва от кражба на частния ключ, но на практика при препращане и кеширане на ключове те все още може да се използва без потвърждение. Двуфакторното удостоверяване решава този проблем.

Как да приложим двуфакторно удостоверяване

Разработчиците от Honeycomb наскоро публикуваха подробни инструкции, как да внедрите подходящата инфраструктура на клиента и сървъра.

Инструкциите предполагат, че имате определен основен хост, отворен към Интернет (бастион). Искате да се свържете с този хост от лаптопи или компютри през интернет и да получите достъп до всички други устройства, които се намират зад него. 2FA гарантира, че нападателят не може да направи същото, дори ако получи достъп до вашия лаптоп, например чрез инсталиране на зловреден софтуер.

Първата опция е OTP

OTP - еднократни цифрови пароли, които в този случай ще се използват за SSH удостоверяване заедно с ключа. Разработчиците пишат, че това не е идеалният вариант, защото нападателят може да издигне фалшив бастион, да прихване вашия OTP и да го използва. Но е по-добре от нищо.

В този случай, от страната на сървъра, следните редове се записват в конфигурацията на Chef:

  • metadata.rb
  • attributes/default.rb (от attributes.rb)
  • files/sshd
  • recipes/default.rb (копие от recipe.rb)
  • templates/default/users.oath.erb

Всяко OTP приложение е инсталирано от страна на клиента: Google Authenticator, Authy, Duo, Lastpass, инсталиран brew install oath-toolkit или apt install oathtool openssl, тогава се генерира произволен низ base16 (ключ). Той се преобразува във формат Base32, който използват мобилните удостоверители, и се импортира директно в приложението.

В резултат на това можете да се свържете с Bastion и да видите, че вече изисква не само парола, но и OTP код за удостоверяване:

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

Втората опция е хардуерно удостоверяване

В този случай от потребителя не се изисква да въвежда OTP кода всеки път, тъй като вторият фактор става хардуерното устройство или биометричните данни.

Тук конфигурацията на Chef е малко по-сложна, а конфигурацията на клиента зависи от операционната система. Но след като изпълнят всички стъпки, клиентите на MacOS могат да потвърдят удостоверяване в SSH с помощта на парола и поставяне на пръст върху сензора (втори фактор).

Собствениците на iOS и Android потвърждават влизането чрез натискане на един бутон на вашия смартфон. Това е специална технология от Krypt.co, която е дори по-сигурна от OTP.

В Linux/ChromeOS има опция за работа с YubiKey USB токени. Разбира се, нападател може да открадне вашия токен, но той все още не знае паролата.

Източник: www.habr.com

Добавяне на нов коментар