Intro
In oudere versies van Linux is lastiger om users te authenticeren met behulp van de Active Directory van Windows. Echter uit bijvoorbeeld beheersoogpunt is het soms wel gewenst dat dit gebeurd. Users hebben dan 1 inlog voor Windows en Linux. Deze uitleg is bruikbaar voor Redhat/CentOS 6.x servers en soortgelijken.
Software
Om middels sssd te kunnen authenticeren zijn een aantal packages nodig die als volgt geinstalleerd kunnen worden:
yum -y install authconfig pam_krb5 samba-common oddjob-mkhomedir sssd
De Kerberos configuratiefile moet er zo uit zien in /etc/krb5.conf:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = example.ORG dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] example.ORG = { kdc = dc-01-p.example.org:88 } [domain_realm] example.org = example.ORG .example.org = example.ORG
Het [global] gedeelte van /etc/samba/smb.conf dient er zo uit te zien:
[global] workgroup = EXAMPLE-DOMAIN realm = example.ORG security = ads idmap config * : range = 16777216-33554431 template homedir = /home/%U template shell = /bin/bash winbind use default domain = true winbind offline logon = false
Let op dat onder Standalone Server de volgende parametes zijn uitgecommentarieerd:
;security = user ;passdb backend = tdbsam
De configuratiefile van sssd moet er zo uitzien in /etc/sssd/sssd.conf (deze configuratiefile bestaat meestal nog niet)
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = EXAMPLE.ORG
filter_groups = root
filter_users = root
reconnection_retries = 3
reconnection_retries = 3
debug_level = 0
cache_credentials = False
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap
ldap_schema = rfc2307bis
ldap_referrals = False
ldap_search_base = dc=example,dc=org
ldap_user_search_base = cn=users,dc=example,dc=org
ldap_user_object_class = user
ldap_group_search_base = ou=Groups,dc=example,dc=org
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
ldap_user_member_of = memberOf
ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = True
ldap_id_use_start_tls = False
ldap_default_bind_dn = cn=sssd,ou=Service Accounts,ou=Groups,dc=example,dc=org
ldap_default_authtok_type = password
ldap_default_authtok = $PASSWORD
ldap_tls_cacertdir = /etc/openldap/cacerts
krb5_realm = ExAMPLE.ORG
krb5_canonicalize = False
LET OP: Zet de rechten van de sssd.conf file goed anders start sssd niet op. Dit doe je met:
chmod 600 /etc/sssd/sssd.conf
Joinen van het example.org domein
Restart het e.e.a. om alle wijzigingen actief te maken:
service sssd restart service winbind restart
Om het example.org domein te joinen geef je:
net ads join example.org -U <admin user>
Om te controleren of het joinen geslaagd is geef je: (foutmeldingen over dns ed kunnen genegeerd worden)
net ads testjoin
Als het joinen daadwerkelijk geslaagd is kan de authenticatie worden aangepast met:
authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Opmerking: Het kan zijn dat het restarten voor het stop gedeelte een foutmelding geeft, zolang de tweede stap, het starten maar een Ok geeft.
Om ervoor te zorgen dat na een reboot het authenticeren tegen de AD blijft werken:
chkconfig winbind on
chkconfig messagebus on
Toegang beperken tot groepen
Dit gaat anders dan onder CentOS 7 / Redhat 7. We beperken de toegang tot groepen door de ssh daemon configuratie aan te passen en de volgende regel toe te passen:
AllowGroups developers administrators root
In dit voorbeeld kan root inloggen, administrators en de developers via hun AD account. Laat bijv. developers weg als deze op de betreffende server niets te zoeken hebben
Problemen oplossen
Een enkele keer wordt /etc/nsswitch.conf niet geupdate, deze dient er als volgt uit te zien (voor CentOS/Redhat 6):
# # /etc/nsswitch.conf # passwd: files sss winbind shadow: files sss winbind group: files sss winbind hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files sss netgroup: files sss publickey: nisplus automount: files sss aliases: files nisplus
Controleer of een AD user herkend wordt op een linux server:
id <ad-account>
Je krijgt dan iets terug als (de Windows AD groepen waartoe iemand lid van is):