Cara menggunakan Active Directory untuk mengautentikasi pengguna linux

10

Apa praktik terbaik untuk menggunakan Active Directory untuk mengotentikasi pengguna di kotak linux (Debian)?

Cara saya ingin berfungsi adalah menambahkan pengguna AD ke grup - katakanlah administrator linux atau server web linux , dan berdasarkan keanggotaan grup mereka, mereka tidak akan / akan diberikan akses ke server tertentu. Idealnya akun root akan menjadi satu-satunya yang dikelola dengan cara standar.

Tujuan saya dalam melakukan ini adalah sebagai berikut:

  • Untuk mengizinkan perubahan kata sandi di satu tempat
  • Untuk secara otomatis memberikan orang-orang tertentu akses ke server linux menggunakan kredensial AD mereka
  • Untuk menggabungkan semua informasi pengguna kami menjadi satu basis data

Hal yang ingin saya hindari adalah:

  • sesuatu yang sulit / kontra-intuitif untuk dikelola oleh administrator Direktori Aktif kami
  • mengunci pengguna jika server AD tidak dapat dijangkau karena beberapa alasan (mis. - entah bagaimana harus men-cache kredensial)
  • sesuatu yang terlalu rumit atau non-standar yang akan merusak waktu berikutnya saya memutakhirkan server.
Brent
sumber

Jawaban:

4

Perangkat lunak yang Anda cari disebut Open-like.

Dari halaman mereka:

  • Bergabung dengan sistem non-Windows ke domain Direktori Aktif dalam satu langkah dari baris perintah atau dari GUI
  • Otentikasi pengguna dengan satu nama pengguna dan kata sandi pada Windows dan non-Windows
  • Menegakkan kebijakan kata sandi yang sama untuk pengguna non-Windows dan pengguna Windows
  • Mendukung banyak hutan dengan kepercayaan lintas hutan satu arah dan dua arah
  • Tembolok kredensial jika pengontrol domain Anda turun
  • Menyediakan sistem masuk tunggal untuk SSH dan Putty
  • Mesin otentikasi generasi berikutnya yang mendukung Kerberos, NTLM, dan SPNEGO
  • Tidak diperlukan perubahan skema ke Direktori Aktif

Kami telah menggunakannya pada beberapa mesin di sini dan tampaknya berfungsi dengan baik.

http://www.likewise.com/products/likewise_open/

Dave Drager
sumber
Apakah Likewise Open memiliki repositori debian? Ini penting bagi kami untuk mengelola patch keamanan.
Brent
1
Ini memiliki paket Ubuntu: Paket: juga-buka Negara: tidak diinstal Versi: 4.1.2982-0ubuntu1 Prioritas: opsional Bagian: net Pemelihara: Pengembang Inti Ubuntu <[email protected]>
jay_dubya
Dari apa yang saya tahu ini adalah solusi berpemilik dan Anda dapat melakukan semua hal yang tercantum di atas (sans gui) dengan LDAP + Kerberos, yang sebagian besar harus autoconfig jika Anda berada di domain Windows.
TheFiddlerWins
4

Tidak ada alasan bagi Anda untuk menggunakan perangkat lunak eksternal apa pun pada sebagian besar distribusi.

Untuk Debian / Ubuntu Anda dapat melakukannya dengan libnss-ldap dan libpam-krb5. Ada beberapa trik untuk mendapatkannya 100%. Ini mengasumsikan Anda memiliki "unixHomeDirectory" yang diisi untuk pengguna Linux, kotak Linux Anda menggunakan NTP yang umum dengan sistem Windows Anda (diperlukan oleh Kerberos) dan bahwa Anda OK dengan pencarian NSS teks biasa (bukan kata sandi tetapi info keanggotaan grup dll - Anda juga dapat gunakan TLS tapi itu lebih rumit untuk diatur). Anda TIDAK boleh memiliki pam_ldap sebagai kata sandi atau sumber auth dalam PAM kecuali Anda sudah diatur untuk menggunakan TLS.

/etc/ldap.conf

# LDAP Configuration for libnss-ldap and libpam-ldap.
# Permit host to continue boot process with out contacting LDAP server
bind_policy soft
# Define LDAP servers to use for queries, these must be Global Catalog servers
uri ldap://ldap.site.company.local
# Define root search location for queries
base dc=company,dc=local
#debug 1
# LDAP version, almost always going to be v3, it is quite mature
ldap_version 3
# Username used to proxy authentication. You can have this in a separate file owned by root for security OR use TLS/SSL (see man page)
# Do NOT use LDAP for authentication if you are using plain text binds, use Kerberos instead (and LDAP for authorization only). See libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Password for proxy acct
bindpw SooperSekeretPazzwerd
#  TCP port to perform queries on, 3268 is a Global Catalog port which will reply for all users in *.company.local
port 3268
# Search range scope (sub = all)
scope sub
# Tell the client to close TCP connctions after 30 seconds, Windows will do this on the server side anyways, this will prevent errors from showing up in the logs.
 idle_timelimit 30
# Expect queries for group membership to return DN for group members instead of usernames (lets you use MSAD group membership seamlessly)
nss_schema rfc2307bis
# Filters - User accounts must have a UID >= 2000 to be recognized in this configuration and must have a unixHomeDirectory defined.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Object Class mappings.  You may want to have the posixAccount to map to "mail" and have users login with their email addresses, i.e.  "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Attribute mappings.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Attribute in LDAP to query to match the username used by PAM for authentication
pam_login_attribute sAMAccountName
# Filter for objects which are allowed to login via PAM
pam_filter objectclass=User

Anda tidak perlu mengedit /etc/krb5.conf dengan asumsi kotak Linux Anda menggunakan server DNS yang mengetahui tentang AD (zona _msdcs dengan catatan SRV yang sesuai dapat diatasi)

/etc/nsswitch.conf harus memiliki "files ldap" untuk pengguna, grup, shadow.

Untuk Red Hat menggunakan SSSD:

/etc/sssd/sssd.conf

[domain/AD]
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldap://ldap.company.local:3268/
ldap_search_base = dc=company,dc=com
ldap_default_bind_dn = cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
ldap_default_authtok = SooperSekeretPazzwerd
ldap_schema = rfc2307bis
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts

ldap_id_use_start_tls = False
cache_credentials = True
krb5_realm = SITE.COMPANY.COM
case_sensitive = false
[sssd]
services = nss, pam
config_file_version = 2

domains = AD
[nss]
filter_users = root,named,avahi,nscd
TheFiddlerWins
sumber
3

Saya telah menggunakan Likewise-Open, dan ternyata buggy dan tidak terlalu bisa diandalkan. Tahun lalu saya beralih ke Centrify, baik untuk Linux dan untuk Mac, dan tidak perlu banyak mengacaukannya sama sekali. Saya jauh lebih suka konfigurasi file conf Centrify daripada konfigurasi file registry Kemungkinan-Open yang memerlukan manipulasi dengan alat eksternal.

http://www.centrify.com/express/free-active-directory-tools-for-linux-mac.asp

Jeremy Nelson
sumber