Membatasi login akun menggunakan LDAP dan PAM


14

Saya berharap beberapa guru PAM / LDAP mungkin dapat membantu saya di sini. Saya baru-baru ini membuat direktori LDAP di Ubuntu Server untuk menampung akun untuk kedua klien saya (untuk digunakan dengan sistem berbasis web) dan staf (yang perlu masuk melalui SSH.)

Otentikasi LDAP berfungsi dengan baik. Namun saya tidak dapat membuat batasan akun berfungsi: akun staf akan memiliki ID antara 2001dan 2999dan akan menjadi anggota ssh-usersgrup untuk memungkinkan mereka masuk ke server.

Pembatasan yang dimaksud ada di /etc/ldap.conf, dan pam_min_uid, pam_max_uiddan pam_groupdn.

pam_groupdnberisi DN lengkap ke ssh-usersgrup saya . pam_min_uid= 2000dan pam_max_uid= 2999.

Sekarang, saya berhasil membuatnya bekerja dengan menambahkan:

account [success=1 default=ignore] pam_ldap.so

di atas pam_unix.sogaris dalam /etc/pam.d/common-account. Namun, akun Unix lokal TIDAK dapat masuk: server SSH membunuh koneksi begitu mereka mencoba.

Saya telah mengatur pam_ldap.somodul ke sufficientdalam file di atas, tetapi kemudian pengguna yang tidak valid mendapatkan pesan yang mengatakan mereka tidak bisa login, tetapi tetap saja mereka login.

Jadi, bagaimana saya bisa menetapkan batasan akun ini untuk pengguna LDAP, sementara masih mengizinkan pengguna UNIX untuk masuk?

Karena Anda mungkin dapat menebak bahwa saya adalah pemula untuk PAM, meskipun saya telah berhasil mendapatkan modul "otomatis membuat direktori rumah" bekerja :-)

Terima kasih banyak, Andy

Jawaban:


11

PAM memiliki kemampuan untuk membatasi akses berdasarkan daftar kontrol akses (setidaknya di Ubuntu) yang, seperti jawaban kubanskamac (+1) menganggap grup sebagai grup posix, apakah mereka disimpan dalam LDAP, /etc/groupatau NIS.

/etc/security/access.confadalah file daftar akses. Dalam file saya, saya letakkan di bagian akhir:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

Ini menyangkal semua orang kecuali root, sysadmin dan di grup ssh-pengguna (yang ada di LDAP) di mana pun mereka masuk (yang kedua ALL).

Kemudian dalam file akun PAM saya (ini adalah modul akun), saya tambahkan di bagian paling akhir:

account required pam_access.so

yang memberitahu PAM untuk menggunakan file ini. Berhasil :-)


Perlu dicatat bahwa Anda mungkin harus meletakkan pam_access.so di awal file akun PAM Anda agar diberlakukan.
crb

5

Saya hanya akan menggunakan

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

hanya mengizinkan grup tertentu (baik untuk grup lokal dan LDAP). Dengan cara ini Anda tidak perlu menentukan apa pun di ldap.conf.

Jika Anda ingin tetap memberi otorisasi, Anda tidak boleh menyaring pengguna dengan izin "akun". Saya percaya Anda sebaiknya melakukannya dengan izin "auth". Kedua, seperti yang Anda lihat sendiri, pam_unix memproses akun lokal dan LDAP (setidaknya pada pass "akun"), jadi sepertinya tidak perlu sama sekali pam_ldap.

EDIT: Ketiga, jika Anda bersikeras memiliki barang-barang di pass "akun" (yang saya yakini dapat memiliki efek samping yang aneh), urutan Anda harus diakhiri dengan: ..., "pam_ldap yang cukup", "pam_localuser yang diperlukan", "wajib pam_unix" . Maksud saya, jika Anda memiliki modul lain, pindahkan sebelum pam_ldap - jika tidak mereka akan diabaikan untuk akun LDAP karena klausul "cukup".


Saya pikir pam_unix menggunakan panggilan getent untuk mengambil informasi akun - yang menggunakan LDAP seperti di /etc/nsswitch.conf. Baris-baris itu ditambahkan ke file konfigurasi PAM oleh penginstal paket libpam-ldap. Tindakan default pam_groupdn tidak melakukan apa-apa, dan saat mencari jawaban, seseorang mengatakan bahwa itu tidak akan berpengaruh kecuali modul pam_ldap.so digunakan selama pass "akun". Jika memungkinkan saya lebih suka menyimpan pengaturan di ldap.conf karena ini terkait secara khusus dengan LDAP.
Andy Shellam

(1) Anda benar tentang pam_unix. (2) Saya memperbarui jawaban saya dengan saran pam_localuser.
kubanczyk

Semua yang saya baca tentang PAM menunjukkan bahwa akun adalah bagian yang tepat untuk ini. auth - Mengidentifikasi pengguna dan mengautentikasi akun akun - Memeriksa karakteristik akun pengguna, seperti penuaan kata sandi, pembatasan waktu masuk, dan pembatasan masuk jarak jauh Ini bukan masalah otentikasi - karena nama pengguna / kata sandi sudah benar, dan pengguna dapat diidentifikasi. Ini adalah batasan akun karena saya tidak ingin beberapa akun dapat masuk.
Andy Shellam

0

Hanya untuk menambahkan ke @ andy-shellam, ini common-accountfile saya :

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.