«Безопасна обвивка» SSH — мрежов протокол за установяване на защитена връзка между хостове, стандартно на порт 22 (който е по-добре да смените). SSH-клиентите и SSH-сървърите са налични за повечето операционни системи. Вътре в SSH работи практически всеки друг мрежов протокол, тоест можете да работите отдалечено на друг компютър, да предавате звукови потоци или видео по криптирания канал и т.н. Освен това, можете да се свързвате с други хостове от името на този отдалечен хост.
Аутентификацията се извършва по парола, но разработчиците и системните администратори традиционно използват SSH-ключове. Проблемът е, че секретният ключ може да бъде откраднат. Добавянето на парола теоретично защитава от кражба на секретния ключ, но на практика при пренасочване и кеширане на ключовете те . Двуфакторната аутентификация решава този проблем.
Как да реализираме двуфакторна аутентификация
Разработчиците от компанията Honeycomb наскоро публикуваха , как да реализирате съответната инфраструктура на клиента и сървъра.
Ръководството предполага, че имате основен хост, отворен в интернет (бастион). Искате да се свържете с този хост от лаптопи или компютри през интернет и да получите достъп до всички останали устройства, които се намират зад него. 2FA гарантира, че злоумышленикът не може да направи същото, дори ако получи достъп до вашия лаптоп, например, инсталирайки зловреден софтуер.
Първият вариант — OTP
OTP — еднократни цифрови пароли, които в този случай ще се използват за SSH-аутентификация заедно с ключа. Разработчиците пишат, че това не е идеалният вариант, защото атакуващият може да създаде фалшив бастион, да прихване вашия OTP и да го използва. Но това е по-добре от нищо.
В този случай на сървърната страна в конфигурацията на Chef се записват следните редове:
metadata.rbattributes/default.rb(отattributes.rb)files/sshdrecipes/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, който се използва от мобилните автентификатори, и се внася директно в приложението.
В края на краищата можете да се свържете с бастион и да се уверите, че сега той изисква не само паролна фраза, но и OTP код за автентификация:
➜ ssh -A bastion
Въведете паролата за ключа '[snip]':
Паролата за еднократна употреба (OATH) за '[user]':
Добре дошли в Ubuntu 18.04.1 LTS...Вторият вариант — хардуерна автентификация
В този случай от потребителя не се изисква всеки път да въвежда OTP кода, тъй като вторият фактор става хардуерно устройство или биометрични данни.
Тук конфигурацията на Chef е малко по-сложна, а конфигурацията на клиентите зависи от ОС. Но след изпълнението на всички действия клиентите на MacOS могат да потвърдят автентификацията в SSH чрез паролна фраза и докосване на пръста до сензора (втори фактор).
Собствениците на iOS и Android потвърдиха входа . Това е специална технология от Krypt.co, която е дори по-безопасна от OTP.
На Linux/ChromeOS има вариант за работа с USB токени YubiKey. Разбира се, нападателят може да открадне вашия токен, но той пак не знае паролата.
Източник: habr.com
