Ověření uživatele u linuxu

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Bezprostředně po instalaci přes deboostrap má linuxový systém pouze jednoho superuživatele root, s id 0 a bez hesla.

Ověření uživatele, je operace, při níž se operační systém nejprve zeptá, prostřednictvím přihlašovacího dialogu na uživatelské jméno a heslo.

Nejprve ověří zda-li pro uvedené uživatelské jméno existuje ID.

Pokud ano, zkontroluje přes zvolený ověřovací mechanismus heslo, nebo předaný klíč (SSH). Pak už záleží na výsledku ověření.

Domovský adresář, sdílený přes NFS se bez ověření nezaloží, protože vyžaduje číselné ID. Ale může nastat situace, že je uživatel úspěšně ověřen, má vytvořen domovský adresář sdílený přes NFS a dokonce i připojený - přesto se do něj nedostane. A to pokud mount nedostane option=sys

PAM

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

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

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

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

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

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