Grup için PAM modülünü devre dışı bırak


10

Son zamanlarda SSH sunucumda google-authenticator kullanarak iki faktörlü kimlik doğrulamayı etkinleştirdim. Ancak şimdi bir sorunla karşı karşıyayım:

Sunucumda SFTP için kullandığım farklı bir kullanıcı grubum var, ancak 2FA gruptaki kullanıcılar için ayarlanmadığından bu grup artık giriş yapamıyor. Bu grup için google kimlik doğrulayıcı modülünü devre dışı bırakmak mümkün müdür? Gruptaki kullanıcılar için etkinleştirmek bir seçenek değildir, çünkü birden fazla kullanıcı bu hesabı kullanacaktır.

PS: kullanıyorum openssh-server


Yanıtlar:


13

Grubunuz için bu bölümü atlamak için pam_succeed_ifönce modülü (kılavuz sayfasına bakınız) kullanabilirsiniz pam_google_authenticator:

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...

2
Muhtemelen bunun [success=1 default=ignore]yerine olmalı required. Şu anda, grupta olmayan bir kullanıcı kimlik doğrulamasının başarısız olmasına yol açacaktır. success=1bir sonraki yöntemi atlayacak, default=ignoregrupta olmayan kullanıcıların bir sonraki yönteme geçecekleri anlamına gelecektir.
muru

@muru evet, haklısın. Hala PAM yığınının detaylarını ve büyüsünü öğreniyor :)
Jakuje

Bu, / etc / ssh / sshd_config içinde birden fazla "AuthenticationMethods" olup olmamasına bağlı mıdır? Yukarıdaki satır eklendiğinde hala 'İzin reddedildi (klavye etkileşimli)'
mesajı

@Arj, farklı yapılandırmanız olduğu anlamına gelir, bu nedenle bu yanıt sizin için geçerli değildir.
Jakuje

1

Bazı SFTP istemcileri 2FA'yı işleyebilir. Örneğin, FileZilla ve WinSCP ile 2FA kullanıyorum ve çalışıyorlar. Ayrıca kurulum ssh-key kimlik doğrulaması var ve 2FA yanında çalışır.

Ancak sorunuz ilginç ve kısa bir anket yaptım. Bu cevabı buldum .

Bu nedenle, ayrı ssh örnekleri çalıştırmak mümkündür (ve kolaydır). Zaten test ettim.

  1. sshd_configDosyanın ayrı kopyalarını oluşturun .

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Bu yeni configdosyaları düzenleyin. Değiştirmeniz gereken şeylerden biri şşş portudur. Örneğe göre:

    2.a) sshd_config_pwdbelirli çizgiler:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2fabelirli çizgiler:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Güvenlik duvarına gerekli bağlantı noktalarını açın. Örneğe göre:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Yeni ssh örneklerini çalıştırın:

    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

Bu kadar.


Bu soruya nasıl cevap veriyor? sshd_configFarklı PAM yığını kullanmak ve 2FA kullanmak için neyi değiştirdiniz ?
Jakuje

@ Jakuje Cevabımı güncelledim.
pa4080

Tamam, bu yüzden nokta "PAM kullanmamak". Bazı durumlarda işe yarayabilir, ancak PAM sadece kimlik doğrulama ile ilgili değildir, aynı zamanda oturum ve daha birçok şey ayarlamaktır, bu nedenle günden güne çalışmayı durdurabilir. Ayrıca, özellikle üçüncü tarafların sunucunuza bağlanmasını istiyorsanız, bağlantı noktasını değiştirmek çok kafa karıştırıcıdır. Evet olsa da, olası çözüm.
Jakuje

Evet, sadece eksik olan olası bir çözüm, çünkü bu ayrı ssh örneklerini sistem başlangıcında başlatmanın zarif bir yolunu bilmiyorum.
pa4080

0

Aşağıdakiler, Google 2FA'yı sudo ve admin grubuna ait kullanıcılar
dışındaki tüm kullanıcılar için zorunlu hale getirecektir (yani, sudo veya admin grubundan bir kullanıcının 2FA yapılandırması yoksa, genel anahtarına göre kimlik doğrulaması yapacak):

Dosya: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

Dosya: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

Sonuçlar:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

Göre Google Authenticator'ın README.md Dokümantasyon :

nullok

PAM bir modülden en az bir BAŞARI yanıtı gerektirir ve nullok bu modülün IGNORE demesine neden olur. Bu, eğer bu seçenek kullanılırsa, en az bir başka modülün SUCCESS'e sahip olması gerektiği anlamına gelir. Bunu yapmanın bir yolu, PAM yapılandırmasının sonuna kimlik doğrulaması gereken pam_permit.so eklemektir.

Bu, nullokburada kullanımı güvenli hale getirir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.