Kéttényezős hitelesítés SSH-hoz

A „Secure shell” SSH egy hálózati protokoll a gazdagépek közötti biztonságos kapcsolat létrehozására, alapesetben a 22-es porton keresztül (ezt jobb megváltoztatni). SSH-kliensek és SSH-kiszolgálók állnak rendelkezésre a legtöbb operációs rendszerhez. Szinte minden más hálózati protokoll működik az SSH-n belül, vagyis távolról dolgozhat egy másik számítógépen, hang- vagy videofolyamot továbbíthat titkosított csatornán stb. Kívül, SOCKS proxy segítségével egy távoli gazdagépen csatlakozhat más gazdagépekhez ennek a távoli gazdagépnek a nevében.

A hitelesítés jelszó használatával történik, de a fejlesztők és a rendszergazdák hagyományosan SSH-kulcsokat használnak. A probléma az, hogy a privát kulcsot el lehet lopni. A jelszó hozzáadása elméletileg véd a privát kulcs ellopása ellen, de a gyakorlatban a kulcsok továbbításakor és gyorsítótárazásakor megerősítés nélkül továbbra is használható. A kéttényezős hitelesítés megoldja ezt a problémát.

A kéttényezős hitelesítés megvalósítása

A Honeycomb fejlesztői nemrég publikáltak részletes utasításokat, hogyan lehet megvalósítani a megfelelő infrastruktúrát a kliensen és a szerveren.

Az utasítások feltételezik, hogy van egy bizonyos alapszintű gazdagép, amely nyitott az internetre (bástya). Ehhez a gazdagéphez szeretne csatlakozni laptopokról vagy számítógépekről az interneten keresztül, és hozzá szeretne férni a mögötte található összes többi eszközhöz. A 2FA biztosítja, hogy a támadó ne tegye ugyanezt még akkor sem, ha hozzáfér a laptopjához, például rosszindulatú program telepítésével.

Az első lehetőség az OTP

OTP - egyszeri digitális jelszavak, amelyeket ebben az esetben a kulccsal együtt SSH-hitelesítéshez használnak. A fejlesztők azt írják, hogy ez nem ideális megoldás, mert a támadó felemelhet egy hamis bástyát, elkaphatja az OTP-t és felhasználhatja. De jobb a semminél.

Ebben az esetben a szerver oldalon a következő sorok vannak beírva a Chef konfigurációba:

  • metadata.rb
  • attributes/default.rb (tól től attributes.rb)
  • files/sshd
  • recipes/default.rb (másolat innen recipe.rb)
  • templates/default/users.oath.erb

Bármely OTP alkalmazás telepítve van az ügyféloldalon: Google Authenticator, Authy, Duo, Lastpass, telepítve brew install oath-toolkit vagy apt install oathtool openssl, akkor egy véletlenszerű base16 karakterlánc (kulcs) jön létre. A mobil hitelesítők által használt Base32 formátumba konvertálják, és közvetlenül az alkalmazásba importálják.

Ennek eredményeként csatlakozhat a Bastionhoz, és láthatja, hogy immár nem csak jelszóra, hanem OTP-kódra is szüksége van a hitelesítéshez:

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

A második lehetőség a hardveres hitelesítés

Ebben az esetben a felhasználónak nem kell minden alkalommal megadnia az OTP kódot, mivel a második tényező a hardvereszköz vagy a biometrikus adatok.

Itt a Chef konfiguráció egy kicsit bonyolultabb, és a kliens konfigurációja az operációs rendszertől függ. De az összes lépés végrehajtása után a MacOS kliensek megerősíthetik a hitelesítést SSH-ban egy jelszó használatával, és ujjukat az érzékelőre helyezik (második tényező).

Az iOS és Android tulajdonosok megerősítik a bejelentkezést az okostelefon egy gombjának megnyomásával. Ez a Krypt.co speciális technológiája, amely még az OTP-nél is biztonságosabb.

Linux/ChromeOS rendszeren lehetőség van YubiKey USB tokenekkel való együttműködésre. Természetesen a támadó ellophatja a tokenedet, de még mindig nem ismeri a jelszót.

Forrás: will.com

Hozzászólás