SSH үшін екі факторлы аутентификация

«Қауіпсіз қабық» 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

пікір қалдыру