SSH için iki faktörlü kimlik doğrulama

“Güvenli kabuk” SSH, ana bilgisayarlar arasında standart olarak 22 numaralı bağlantı noktası (bunun değiştirilmesi daha iyi) üzerinden güvenli bir bağlantı kurmaya yönelik bir ağ protokolüdür. SSH istemcileri ve SSH sunucuları çoğu işletim sistemi için mevcuttur. Hemen hemen tüm diğer ağ protokolleri SSH'nin içinde çalışır, yani başka bir bilgisayarda uzaktan çalışabilir, şifreli bir kanal üzerinden ses veya video akışı iletebilirsiniz vb. Ayrıca, Uzak bir ana bilgisayardaki SOCKS proxy'si aracılığıyla bu uzak ana bilgisayar adına diğer ana bilgisayarlara bağlanabilirsiniz.

Kimlik doğrulama bir parola kullanılarak gerçekleşir, ancak geliştiriciler ve sistem yöneticileri geleneksel olarak SSH anahtarlarını kullanır. Sorun, özel anahtarın çalınabilmesidir. Parola eklemek teorik olarak özel anahtarın çalınmasına karşı koruma sağlar, ancak pratikte anahtarları iletirken ve önbelleğe alırken, onay alınmadan hala kullanılabilir. İki faktörlü kimlik doğrulama bu sorunu çözer.

İki faktörlü kimlik doğrulama nasıl uygulanır

Honeycomb'dan geliştiriciler yakın zamanda yayınlandı detaylı talimatlar, istemci ve sunucu üzerinde uygun altyapının nasıl uygulanacağı.

Talimatlar, internete açık belirli bir temel ana makinenizin (bastion) bulunduğunu varsaymaktadır. Bu ana bilgisayara internet üzerinden dizüstü bilgisayarlardan veya bilgisayarlardan bağlanmak ve arkasında bulunan diğer tüm cihazlara erişmek istiyorsunuz. 2FA, bir saldırganın örneğin kötü amaçlı yazılım yükleyerek dizüstü bilgisayarınıza erişse bile aynı şeyi yapmamasını sağlar.

İlk seçenek OTP'dir

OTP - bu durumda anahtarla birlikte SSH kimlik doğrulaması için kullanılacak olan tek kullanımlık dijital şifreler. Geliştiriciler bunun ideal bir seçenek olmadığını yazıyor çünkü bir saldırgan sahte bir kale kurabilir, OTP'nizi ele geçirebilir ve kullanabilir. Ama hiç yoktan iyidir.

Bu durumda sunucu tarafında Chef config içerisine aşağıdaki satırlar yazılır:

  • metadata.rb
  • attributes/default.rb (dan attributes.rb)
  • files/sshd
  • recipes/default.rb (kopyalama recipe.rb)
  • templates/default/users.oath.erb

İstemci tarafında herhangi bir OTP uygulaması yüklü: Google Authenticator, Authy, Duo, Lastpass, yüklü brew install oath-toolkit veya apt install oathtool opensslardından rastgele bir base16 dizesi (anahtar) oluşturulur. Mobil kimlik doğrulayıcıların kullandığı Base32 formatına dönüştürülür ve doğrudan uygulamaya aktarılır.

Sonuç olarak, Bastion'a bağlanıp kimlik doğrulama için artık yalnızca bir parolaya değil, aynı zamanda bir OTP koduna da ihtiyaç duyduğunu görebilirsiniz:

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

İkinci seçenek donanım kimlik doğrulamasıdır

Bu durumda ikinci faktör donanım cihazı veya biyometri olacağından kullanıcının her seferinde OTP kodunu girmesine gerek yoktur.

Burada Chef yapılandırması biraz daha karmaşıktır ve istemci yapılandırması işletim sistemine bağlıdır. Ancak tüm adımları tamamladıktan sonra MacOS'taki istemciler, bir parola kullanarak ve sensöre parmak yerleştirerek (ikinci faktör) SSH'deki kimlik doğrulamasını onaylayabilir.

iOS ve Android sahipleri giriş yapmayı onaylıyor akıllı telefonunuzdaki bir düğmeye basarak. Bu, Krypt.co'nun OTP'den bile daha güvenli olan özel bir teknolojisidir.

Linux/ChromeOS'ta YubiKey USB belirteçleriyle çalışma seçeneği vardır. Elbette bir saldırgan jetonunuzu çalabilir ancak yine de parolayı bilmiyor.

Kaynak: habr.com

Yorum ekle