Nonaktifkan modul PAM untuk grup

10

Saya baru-baru ini mengaktifkan otentikasi dua faktor menggunakan google-authenticator di server SSH saya. Namun sekarang saya menghadapi masalah:

Saya memiliki grup pengguna yang berbeda di server saya yang saya gunakan untuk SFTP, tetapi grup itu tidak lagi bisa masuk karena 2FA tidak diatur untuk pengguna di grup. Apakah mungkin untuk menonaktifkan modul google-authenticator untuk grup itu? Mengaktifkannya untuk pengguna dalam grup bukanlah suatu pilihan karena banyak pengguna akan menggunakan akun ini.

PS: Saya pakai openssh-server

Z3r0byte
sumber
Dijawab dalam komentar ini-
Abhimanyu Garg

Jawaban:

13

Anda dapat menggunakan pam_succeed_ifmodul (lihat halaman manual) sebelum pam_google_authenticatoruntuk melewati bagian ini untuk grup Anda:

# 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 ...
Jakuje
sumber
2
Mungkin seharusnya [success=1 default=ignore]bukan required. Saat ini, pengguna yang tidak dalam grup akan menyebabkan otentikasi gagal, saya kira. success=1akan membuatnya melewati metode berikutnya, default=ignoreberarti pengguna yang tidak dalam grup hanya akan pindah ke metode berikutnya.
muru
@uru ya, Anda jelas benar. Masih mempelajari detail dan semua keajaiban tumpukan PAM :)
Jakuje
Apakah ini tergantung pada apakah Anda memiliki beberapa "AuthenticationMethods" di / etc / ssh / sshd_config? Dengan baris di atas ditambahkan, saya masih mendapatkan 'Izin ditolak (keyboard-interaktif)'
Arj
@Arj ini berarti Anda memiliki konfigurasi berbeda sehingga jawaban spesifik ini tidak berlaku untuk Anda.
Jakuje
1

Beberapa klien SFTP dapat menangani 2FA. Sebagai contoh, saya menggunakan 2FA dengan FileZilla dan WinSCP dan mereka berfungsi. Saya juga telah mengatur otentikasi ssh-key dan bekerja bersama 2FA.

Namun pertanyaan Anda menarik dan saya membuat survei singkat. Saya menemukan jawaban ini .

Jadi, adalah mungkin (dan mudah) untuk menjalankan instance ssh terpisah. Saya sudah mengujinya.

  1. Buat salinan sshd_configfile terpisah .

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Edit configfile baru ini . Salah satu hal yang harus Anda ubah adalah port shh. Menurut contoh:

    2.a) sshd_config_pwdjalur khusus adalah:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2fajalur khusus adalah:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Buka port yang diperlukan ke firewall. Menurut contoh:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Jalankan instance ssh baru:

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

Itu dia.

pa4080
sumber
Bagaimana ini menjawab pertanyaan? Apa yang Anda modifikasi sshd_configuntuk menggunakan tumpukan PAM yang berbeda dan tidak menggunakan 2FA?
Jakuje
@ Jakuje Saya sudah memperbarui jawaban saya.
pa4080
Ok, jadi intinya adalah "tidak menggunakan PAM". Mungkin bekerja dalam beberapa kasus, tetapi PAM tidak hanya tentang otentikasi, tetapi juga mengatur sesi dan banyak lagi, karena itu mungkin berhenti bekerja dari hari ke hari. Mengubah port juga sangat membingungkan, terutama jika Anda ingin pihak ketiga terhubung ke server Anda. Meskipun ya, solusi yang mungkin.
Jakuje
Ya, itu hanya solusi yang mungkin, yang masih belum lengkap, karena saya tidak tahu cara elegan untuk memulai contoh ssh terpisah ini saat startup sistem.
pa4080
0

Berikut ini akan membuat Google 2FA wajib untuk semua pengguna
kecuali pengguna yang termasuk dalam grup sudo dan admin
(artinya jika pengguna dari grup sudo atau admin tidak memiliki 2FA yang dikonfigurasikan, itu akan mengautentikasi dirinya berdasarkan kunci publik mereka):

Mengajukan: /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

Mengajukan: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

Hasil:

          |  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)

Menurut Dokumentasi README.md Google Authenticator :

nullok

PAM membutuhkan setidaknya satu jawaban SUKSES dari sebuah modul, dan nullok menyebabkan modul ini mengatakan IGNORE. Ini berarti bahwa jika opsi ini digunakan setidaknya satu modul lain harus mengatakan SUKSES. Salah satu cara untuk melakukan ini adalah menambahkan auth diperlukan pam_permit.so ke akhir konfigurasi PAM.

Ini membuat penggunaan di nulloksini aman.

Basil A
sumber