Vraag Hoe praktisch is het om een ​​Linux-server te authenticeren tegen AD?


We maken gebruik van zowel Windows- als Linux-servers in ons softwareontwikkelingsbedrijf.

Een van de frictiepunten met deze opstelling is dat we geen oplossing voor eenmalige aanmelding hebben. Omdat we meer een Microsoft-winkel zijn dan een Linux-winkel, willen we authenticeren tegen AD.

Ik lees een aantal artikelen online en ik begrijp dat dit mogelijk is.

We gebruiken momenteel de volgende services op Linux waarvoor verificatie vereist is:
- git-server (via SSH)
- Verzend mail
- Apache-webserver die momenteel .htaccess-bestanden gebruikt.
- SAMBA-bestanden delen

Wat ik wil weten, is hoe praktisch dit soort setup is? Werkt het echt of is het foutgevoelig?


15
2018-05-30 15:28


oorsprong


Bedankt voor de geweldige antwoorden iedereen, dit geeft me een beter gevoel van wat de ervaring is van deze opstelling in de echte wereld. Dit helpt echt. Het selecteren van het juiste antwoord is moeilijk, omdat ze allemaal de vraag beantwoorden. - Philip Fourie
Controleer FreeIPA :) freeipa.org - GioMac


antwoorden:


Het is niet moeilijk en het is perfect praktisch.

We hebben een paar honderd dual-boot desktopcomputers die AD Auth gebruiken, evenals een aantal servers die AD Auth gebruiken om Windows-clients in staat te stellen hun samba-shares te gebruiken zonder expliciete toestemming van de gebruikers.

Er was nog een ander artikel over SF over wat je moet doen.

In principe moet je kerberos, winbind, nss en pam configureren.

Dan doe je a kinit en een net ads join en je op.

Je kunt pam configureren om meerdere methoden te gebruiken voor auth als je dat wilt, dus als het niet werkt, valt het terug naar het volgende.

We gebruiken meestal bestanden, winbindd en ldap voor servers die bestandsshares aan Windows-servers aanbieden.

Indien mogelijk zou ik LDAP gebruiken voor accountinformatie en windbinden strikt voor auth, maar ik geloof dat je attributen in I think /etc/ldap.conf kunt toewijzen als dat nodig is. Als je uiteindelijk winbindd gebruikt voor accountinfo is het mogelijk om de RID (hashing-methode) te gebruiken om uids / gids te genereren, maar het is ook mogelijk om andere methoden te gebruiken. We gebruikten RID's op één grote fileserver en het was een echte pijn, dus ik zou proberen een van de andere opties te verkennen, indien mogelijk. In ons geval worden alle AD-gebruikers en groepen weerspiegeld in LDAP door een upstream IDM-systeem, dus gebruiken we LDAP voor accountinformatie op nieuwere servers en gebruiken we winbind louter voor auth.


9
2018-05-30 15:39





Authenticatie is absoluut eenvoudig met behulp van Likewise Open. http://www.likewise.com/products/likewise_open/index.php

Bijna mijn volledige Linux-infrastructuur heeft gecentraliseerde authenticatie en gebruikersbeheer dankzij Likewise Open. Het is verbluffend eenvoudig te installeren en te implementeren. Ik kan onmogelijk genoeg goede dingen zeggen.

Als een opmerking, UID's en GID's worden toegewezen volgens een hash-functie, dus ze zijn identiek over de gehele infrastructuur, dus NFS mounts werken perfect.


6
2018-05-30 15:39



Ik gebruik eveneens open op verscheidene servers en vond het goed werkt. Als de Apache / Sendmail een externe machine is, wilt u misschien controleren op toegevoegde latentie / laden. - Kyle Brandt♦
De link is nu verbroken - gogaz


Ik heb Windows Services voor Unix geïnstalleerd en een gebruiker in AD toegevoegd genaamd "Unix Authenticator" en vervolgens de volgende configuratiebestandwijzigingen aangebracht op de linuxmachines:

/etc/ldap.conf:
host ldap.<foo>.com
base cn=Users,dc=<foo>,dc=com
binddn cn=Unix Authenticator,cn=Users,dc=<foo>,dc=com
bindpw <password>
nss_base_passwd cn=Users,dc=<foo>,dc=com?sub
nss_base_shadow cn=Users,dc=<foo>,dc=com?sub
nss_base_group cn=Users,dc=<foo>,dc=com?sub
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute cn msSFUName
nss_map_attribute uid msSFUName
nss_map_attribute gid gidNumber
nss_map_attribute gecos sAMAccountName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_attribute uniqueMember Member
pam_login_attribute msSFUName
pam_filter objectclass=user
pam_password ad
/etc/ldap.secret:
<password>
/etc/nsswitch.conf:
passwd: compat ldap
shadow: compat ldap
group: compat ldap
/etc/nsswitch.ldap:
host files dns
/etc/pam.d/system-auth:
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_first_pass use_authtok
password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

Ik hoop dat dit helpt.


4
2018-05-30 23:20



Dit is een interessante benadering, bedankt dat ik deze weg ook ga verkennen. - Philip Fourie
Gebruik asjeblieft geen pam_ldap voor auth (in /etc/pam.d/system-auth). Het zal uw wachtwoord in cleartext verzenden. U moet LDAPS of GSSAPI gebruiken als u via LDAP wilt verifiëren. U kunt LDAP voor NSS en Kerberos gebruiken voor authenticatie als u het veilig wilt doen (zie hieronder) - TheFiddlerWins


Windows-gebruikers hebben auth'ing tegen AD, maar de meeste van onze servers (openbare schijf, enz.) Zijn linux en maken deel uit van het domein. Vanuit een raam merkt POV niemand op. Van mijn kant voelt het een beetje fruitig aan met mijn Windows-gebruikersnaam, maar dat is ongeveer zo groot.

Gebruik gewoon een gewone oude samba.


2
2018-05-30 23:26





U hoeft Samba niet te gebruiken, AD ondersteunt Kerberos en LDAP rechtstreeks. Er is geen reden voor u om externe software te gebruiken op de meeste distributies.

Voor Debian / Ubuntu kunt u het doen met libnss-ldap en libpam-krb5. Er zijn een paar trucs om het voor 100% te krijgen. Dit veronderstelt dat je "unixHomeDirectory" hebt ingevuld voor Linux-gebruikers, dat je Linux-boxen NTP gemeenschappelijk gebruiken met je Windows-systemen (vereist door Kerberos) en dat je OK bent met NSS lookups (geen wachtwoord maar groepslidmaatschap info enz. - je kunt ook gebruik TLS maar dat is ingewikkelder om in te stellen). U zou PAM_ldap GEEN wachtwoord of authenticatiebron in PAM moeten hebben tenzij u bent ingesteld om TLS te gebruiken.

/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

Je hoeft niet /etc/krb5.conf aan te passen, ervan uitgaande dat je Linux-boxen DNS-servers gebruiken die over AD weten (_msdcs-zones met de juiste SRV-records kunnen worden herleid)

/etc/nsswitch.conf moet "bestanden ldap" hebben voor gebruikers, groepen, schaduw.

Voor Red Hat met 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

2
2017-08-15 14:03



Moet u iets aan de AD-kant veranderen in dit scenario? Ik herinner me dat ik zag dat sommige "Unix-hulpmiddelen voor vensters" moesten worden geïnstalleerd bij het gebruik van SAMBA? - Martin Nielsen
Deze oplossing is niet afhankelijk van SAMBA, het gebruikt native LDAP / Kerberos. De enige reden om de Unix-tools te gebruiken, is om een ​​GUI te krijgen om de kenmerken van de POSIX-gebruiker / -groep te bewerken. Zelfs dat is niet vereist als u SSSD gebruikt. SAMBA (in Winbind) laat je software installeren die ervoor zorgt dat het systeem een ​​Windows-client emuleert. De bovenstaande instellingen gebruiken alleen standaard LDAP / Kerberos. - TheFiddlerWins
Argh verdorie, ik wilde "ldap / kerberos" schrijven. Ik weet niet wat er is gebeurd. Mijn fout. Maar de Unix-tools voor AD zijn eigenlijk niet vereist voor LDAP / Kerberos? - Martin Nielsen