Authenticatie voor Centos 6 middels de AD

By | 9 maart 2016

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)

[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = EXAMPLE.ORG
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
[pam]
reconnection_retries = 3
[domain/example.ORG]
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 oddjobd on
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):