Двофакторна автентикација за SSH

„Secure shell“ SSH е мрежен протокол за воспоставување безбедна врска помеѓу домаќините, стандардно преку портата 22 (што е подобро да се смени). SSH клиентите и SSH серверите се достапни за повеќето оперативни системи. Речиси секој друг мрежен протокол работи во SSH, односно можете да работите од далечина на друг компјутер, да пренесувате аудио или видео поток преку шифриран канал итн. Освен тоа, преку SOCKS прокси на оддалечен домаќин може да се поврзете со други домаќини во име на овој оддалечен домаќин.

Автентикацијата се јавува со помош на лозинка, но програмерите и системските администратори традиционално користат SSH клучеви. Проблемот е што приватниот клуч може да биде украден. Додавањето лозинка теоретски штити од кражба на приватниот клуч, но во пракса, при препраќање и кеширање клучеви, тие сè уште може да се користи без потврда. Двофакторната автентикација го решава овој проблем.

Како да се имплементира двофакторна автентикација

Неодамна објавија програмерите од Honeycomb детални инструкции, како да се имплементира соодветната инфраструктура на клиентот и серверот.

Инструкциите претпоставуваат дека имате одреден основен домаќин отворен за Интернет (бастион). Сакате да се поврзете со овој домаќин од лаптопи или компјутери преку Интернет и да пристапите до сите други уреди што се наоѓаат зад него. 2FA гарантира дека напаѓачот не може да го стори истото дури и ако добие пристап до вашиот лаптоп, на пример со инсталирање малициозен софтвер.

Првата опција е OTP

OTP - еднократни дигитални лозинки, кои во овој случај ќе се користат за SSH автентикација заедно со клучот. Програмерите пишуваат дека ова не е идеална опција, бидејќи напаѓачот може да подигне лажен бастион, да го пресретне вашиот OTP и да го искористи. Но, подобро е од ништо.

Во овој случај, на страната на серверот, следните линии се запишани во конфигурацијата на готвач:

  • 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, потоа се генерира случаен стринг на база16 (клуч). Тој е претворен во формат 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

Додадете коментар