Linux'ta SSH için İki Faktörlü Kimlik Doğrulamayı (2FA) Nasıl Etkinleştirirsiniz?


Bu makalede, Google PAM (Pluggable Authentication Module) ve Microsoft Authenticator mobil uygulamasını kullanarak Linux'ta SSH oturumu açmak için iki faktörlü kimlik doğrulamayı (2FA) nasıl etkinleştireceğinizi göstereceğiz. . 2FA, SSH üzerinden bir Linux ana bilgisayarında kimlik doğrulaması yaptığınızda ekstra bir güvenlik katmanı eklemenizi sağlar. 2FA'yı etkinleştirdikten sonra, SSH'yi Linux'a yüklemek için kullanıcı adınız ve parolanıza (veya RSA anahtarınıza) ek olarak akıllı telefonunuzdan tek seferlik bir dijital parola (TOTP) girmeniz gerekecektir.

Microsoft Authenticator mobil uygulamasını akıllı telefonunuza yükleyin (hem Google Store'da hem de App Store'da mevcuttur).

Bu kılavuzda, zaten Azure'da MFA kimlik doğrulaması için kullandığım için Microsoft Authenticator'ı seçtim. İsterseniz bunun yerine Google Authenticator'ı kullanabilirsiniz.

Şimdi Google PAM'i Linux sunucunuza kurmanız ve yapılandırmanız gerekiyor:

  1. SSH üzerinden Linux sunucunuza bağlanın;

  2. Paket yöneticinizi kullanarak Google PAM Authenticator'ı kurun:
    Debian/Ubuntu:

    sudo apt-get install libpam-google-authenticator 

    RHEL/CentOS/Fedora:

    yum install google-authenticator

  3. Komutu çalıştırın:

    google-authenticator
  4. Araç, konsolda bir QR kodu oluşturacak ve görüntüleyecektir:

  5. Akıllı telefonunuzda Microsoft Authenticator uygulamasını çalıştırın. Hesap ekle -> Kişisel hesap -> QR Kodu Tara'yı seçin;

  6. Uygulama ile QR kodunu tarayın. Authenticator uygulamasında kullanıcı adınız ve sunucunuz için yeni bir giriş görünecektir. Ana makinenize bağlanmak için tek seferlik şifreyi almak için bu öğeyi kullanacaksınız;

  7. Linux konsolunuzda bir gizli anahtar ve acil durum kodlarının gösterildiğini unutmayın;

    Akıllı telefonunuzu kaybederseniz/kırarsanız sunucunuza bağlanmak için bu kodlara ihtiyacınız olacak. Onları güvenli bir yerde saklayın!

  8. Ardından google-authenticator başka sorular da gösterir:

  9. Kimlik doğrulama belirteçlerinin zamana dayalı olmasını istiyor musunuz?

    Y -> Enter
  10. "/home/sysops/.google_authenticator " dosyanızı güncellememi ister misiniz?

    Y -> Enter
  11. Aynı kimlik doğrulama belirtecinin birden fazla kullanımına izin vermemek istiyor musunuz?

    Y -> Enter
  12. Varsayılan olarak, belirteçler 30 saniye için iyidir…

    Y -> Enter

    Varsayılan olarak, tek seferlik belirteç her 30 saniyede bir değişir. Çoğu durumda bu en iyi seçenektir. Ancak, Linux sunucunuzun ve akıllı telefonunuzun zamanla senkronize olması önemlidir.

  13. Hız sınırlamayı etkinleştirmek istiyor musunuz?

    Y -> Enter

    Tüm ayarları bir kerede yapılandırabilirsiniz:

    $ google-authenticator -t -f -d -w 3 -e 5 -r 3 -R 30

    -t - tek seferlik kod kullanarak oturum açmayı etkinleştirir
    -f - yapılandırmayı ~/.google_authenticator
    -d - önceki kodların kullanılmasını reddeder
    -w 3 - bir önceki ve bir sonraki jetonun kullanılmasına izin verir (eğer zaman senkronize değilse)
    -e 5 - 5 acil durum kodu oluşturur
    -r 3 -R 30
    - her 30 saniyede en fazla 3 oturum açmaya izin verir

  • Ardından /etc/pam.d/sshd dosyasına şu yönergeyi ekleyin:

    auth required pam_google_authenticator.so nullok

    nullok seçeneği, iki faktörlü kimlik doğrulamayı ayarlamamış bir kullanıcının bir kullanıcı adı ve şifre kullanarak oturum açmasına izin verir. 2FA yapılandırması ve testinden sonra, iki faktörlü kimlik doğrulamanın kullanılmasını gerektirme seçeneğinin devre dışı bırakılması önerilir.

  • Ardından /etc/ssh/sshd_config dosyasını düzenleyin:

    sudo mcedit /etc/ssh/sshd_config
  • Değiştir

    ChallengeResponseAuthentication

    değer

    Yes
    ChallengeResponseAuthentication yes
  • Değişiklikleri sshd_config'e kaydedin ve sshd'yi yeniden başlatın:

    service ssh restart

  • Ardından, Linux sunucunuza SSH üzerinden bağlanmayı deneyin. Bir şifre girmeden önce bir doğrulama kodu girmeniz istenecektir.

    Akıllı telefonunuzda Authenticator uygulamasını açın ve Linux sunucunuzun kullanıcısını bulun. Authenticator'ın sizin için oluşturduğu 6 karakterlik tek seferlik şifre kodunu konsola girin.

    Tek seferlik parola kodunun sınırlı bir süre (varsayılan olarak 30 saniye) için geçerli olduğunu unutmayın. Doğru kodu girdiyseniz, Linux kullanıcı parolanızı girmeniz istenecektir.

    Oturum açma başarılı olursa, kimlik doğrulama günlüğünde aşağıdaki satır görünür:

    cat /var/log/auth.log
    Jul 20 11:12:22 srvubun01 sshd(pam_google_authenticator)[6242]: Accepted google_authenticator for sysops

    Yanlış kod girilirse, günlük hataları gösterir:

    Jul 20 11:14:20 srvubun01 sshd(pam_google_authenticator)[6436]: Invalid verification code for sysops
    Jul 20 11:14:22 srvubun01 sshd[6436]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.15 user=sysops

    2FA'yı SSH anahtar kimlik doğrulaması ile birlikte kullanmak istiyorsanız, aşağıdaki yönergeleri /etc/ssh/sshd_config dosyasına ekleyin:

    PasswordAuthentication no
    PubkeyAuthentication yes
    AuthenticationMethods publickey,keyboard-interactive

    İlgili makaleler