Autorizace uživatelů v linuxu

From DCEwiki
Jump to: navigation, search

K ověření uživatele se u linuxu používají tzv. PAM moduly (Pluggable Authentication Modules). Konfigurace těchto PAM modulů určuje které a v jakém pořadí se mají vyzkoušet, a jak má eventuálně systém reagovat v případě že ověření selže.

Celá konfigurace může být v jednom konfiguračním souboru /etc/pam.conf, ale u Debianu je ve výchozím stavu konfigurace PAM modulů rozdělena do několika samostatných konfiguračních souborů s příponou .conf v adresáři /etc/pam.d.

Poznámka Debian použije soubor /etc/pam.conf pouze v případě že adresář /etc/pam.d neexistuje.

Jak probíhá přihlašovací proces lze kontrolovat na průběžném výpise logovacího souboru /var/log/auth.log. To je důležité vědět, pokud potřebujeme zjistit v jakém pořadí a které PAM moduly se volají.

Poznámka
Aug 15 11:31:27 stroj login[2924]: pam_krb5(login:auth): user usenameX authenticated as usernameX@CVUT.CZ
Aug 15 11:31:27 stroj login[2924]: pam_unix(login:account): could not identify user (from getpwnam(usernameX))
Aug 15 11:31:27 stroj login[2924]: Authentication failure

Z ukázkového výpisu lze kupř. vyčíst, že ověření uživatele usernameX oproti kerberos serveru proběhlo v pořádku, ale přihlašovací proces selhal u PAM modulu pam_unix, kterému se nepodařilo zjistit jeho UID - pro uživatele usernameX neexistuje lokální účet.

Autentizace přes Kerberos[edit]

Autorizace přes Kerberos

krb5 -> Novellovská nds -> lokální přihlášení

  1. ntp - konfigurace časové zóny
  2. libnss-ldap - konfigurace Novellovského ldapu

Autorizace přes NDS a LDAP Novellu[edit]

Poznámka Aby se uživatel z naší katedry mohl přihlásit na strojích, které používají Novellovský LDAP a NDS, musí mít zaveden platný účet v Novellu.

Při použití účtů z Novellu na linuxových strojích zjišťuje PAM z jeho LDAPu jaké má mít ověřený uživatel UID a GID. K tomu je ovšem třeba do systému doinstalovat balík libnss-ldap, který si sebou přitáhne také balík s démonem nscd a balíček libpam-ldap, který nám - pokud to vyžadujeme - provádět vůči Novellovské NDS také autorizaci uživatele.

root@stroj~: apt-get install libnss-ldap

Nastavení LDAPu[edit]

Pokud nás z LDAPu zajímá pouze UID a GID příslušného uživatele, není vůbec třeba zasahovat do souboru /etc/pam_ldap.conf. Pro nastavení přístupu k LDAPu totiž stačí upravit nastavení v souborech /etc/libnss-ldap.conf a /etc/nssswitch.conf

Při počáteční konfiguraci přes postinstalační dialog balíčku libnss-ldap jsme postupně dotazováni: URI LDAP serveru. Sem je třeba v případě katedry DCE uvést...

  1. LDAP server URI: --> ldaps://novell.felk.cvut.cz:636/
  2. LDAP server search base: --> ou=felk,o=cvut,c=cz
  3. LDAP version: --> 3
  4. LDAP database require login?: --> no
  5. LDAP special privileges root --> yes
  6. Make config readable/writable by owner only? --> yes
  7. LDAP account for root: --> cn=ldapuser,ou=felk,o=cvut,c=cz
  8. LDAP root password : --> heslo...
Poznámka Rekonfiguraci a zopakování celého postupu postinstalačního skriptu lze kdykoliv spustit příkazem
root@stroj~: dpkg-reconfigure libnss-ldap

I když se postinstalační skript zeptá na základní nastavení, nebude to pro funkční komunikaci s Novellem na katedře DCE stačit! Ta je totiž šifrovaná přes SSL, tudíž se stejně nevyhneme manuálnímu zásahu do konfigurace. Je třeba nastavit dva atributy:

ssl 
na hodnotu on - aby komunikace probíhala přes SSL
tls_checkpeer 
na nodnotu no, aby si klient certifikát stáhnul z novellovského serveru nevyžadoval certifikát lokální
root@stroj~: grep -v ^# /etc/libnss-ldap.conf | grep -v ^$
base ou=felk,o=cvut,c=cz
uri ldaps://novell.felk.cvut.cz:636/
ldap_version 3
rootbinddn cn=ldapuser,ou=felk,o=cvut,c=cz
ssl on
tls_checkpeer no

Heslo je uloženo v souboru /etc/libnss-ldap.secret

root@stroj~: cat /etc/libnss-ldap.secret
 ...

Aby systém LDAP používal, musí být (manuálně) upraven soubor /etc/nsswitch.conf

 passwd:      compat ldap
 group:       compat
 shadow:      compat
 ...

Po jeho doplnění (a každé změně v konfiguraci) je třeba provést restart nscd démona

Ověření LDAPu[edit]

Ověření, zda-li LDAP funguje lze provést příkazem id

root@stroj~: id usernameX
uid=45457(usenameX) gid=100(users) groups=100(users)

Čeká-li příkaz id delší dobu na odezvu a pak skončí oznámením, že uživatel neexistuje, přesto že si jsme jisti tím že existuje, pak může být příčinou problému chybně nastavené heslo do NDS v souboru /etc/libnss-ldap.secret

Pokud se takové oznámení objeví ihned, pak může být příčina v chybně nastaveném parametru tls_checkpeer v souboru /etc/libnss-ldap.secret. Ten totiž, pokud není nastaven vůbec, má výchozí hodnotu yes. A tudíž musí být přenastaven na hodnotu no, tak aby server nevyžadoval lokální certifikát.

Autorizace přes NDS[edit]

Pokud chceme kromě LDAPu využívat také autorizaci přes novellovskou NDS, pak je třeba nakonfigurovat i soubor /etc/pam-ldap.conf. V tomto případě je zbytečné se zdržovat výchozí rekonfigurací, protože je rychlejší rovnou zkontrolovat, jestli tento soubor obsahuje následující nezakomentovaní řádky..

root@stroj~: grep -v ^# /etc/pam_ldap.conf | grep -v ^$
base ou=felk,o=cvut,c=cz
uri ldaps://novell.felk.cvut.cz:636/
ldap_version 3
pam_password nds
ssl on
tls_checkpeer no


Lokální autorizace[edit]