Auth Read
Auth Read
Authentifizierung
[Link]
/etc/passwd, /etc/shadow
Die Datei /etc/[Link] wird bei vielen UNIX-Systemen für die Auswahl der
benutzten Informationssysteme für die einzelnen Systemfiles (Datenbasen)
benutzt.
Folgende Informationssysteme (Quellen) werden unterstützt:
Files, NIS, NIS+, LDAP, DNS
Der Zugriff zu folgenden Datenbasen wird durch /etc/[Link] gesteuert:
passwd, group, hosts, ipnodes, networks, protocols
rpc, ethers, netmasks, bootparams, publickey, netgroup
automount, aliases, services, sendmailvars, printers
auth_attr, prof_attr, project
Realisierung durch dynamische Libraries für die jeweilige Datenbasis:
(lib)nss_files.so, (lib)nss_nis.so, (lib)nss_nisplus.so,
(lib)nss_dns.so, (lib)nss_ldap.so, (lib)nss_compat.so,
Die Defaultwerte für die Bedingungen cond sind wie folgt gesetzt:
DNS und NIS als Quelle:
[SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=3 ]
Alle anderen Quellen:
[SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=forever ]
Für die Datenbasen passwd, group und hosts gibt es noch die Quelle compat
(Kompatibilitätsmodus). Diese beinhaltet als erstes das Durchsuchen der
entsprechenden Quelle file mit Auswertung von „+wert“, „-wert“, „+@wert“, „
-@wert“ für die anschließende Durchsuchung der zweiten Quelle. @wert greift
dabei auf die Datenbasis netgroup zurück.
Die Datenbasen passwd_compat und group_compat, bestimmen die zweite
Datenquelle für den Kompatibilitätsmodus.
Beispiele:
passwd: compat
passwd_compat: nis
group: files nis
hosts: files dns
hosts: nis [NOTFOUND=return] files !!!! sollte man nicht benutzen
netgroup: nis
protocols: files nis
Konfigurationsdateien
Ein Eintrag in dem Konfigurationsfile /etc/pam.d/service hat folgenden Aufbau:
service ist dabei der Name des Programms, das PAM benutzen will (su, login,
passwd, sshd, telnetd, rlogind) Mehrere Eintragungen für einen Service sind
möglich.
Das control-Feld enthält Informationen über die Wirkung des Resultats eines Moduls
und über die weitere Abarbeitung der Module innerhalb des Modulfolge. Alle
Module des gleichen Typs gehören zu einer Folge und werden in Abhängigkeit
des control-Feldes abgearbeitet.
binding - required Modul. Wenn der Modul success meldet und alle vorangegangen
required Module ebenfalls, wird die PAM-Authentifizierung mit success beendet.
Andernfalls wird die Modulfolge fortgesetzt und bei einem Fehler dies als
required-Fehler vermerkt.
optional - optional Modul. Der PAM-Authentifizierung wird fortgesetzt. Ein Fehler
wird als optional Fehler vermerkt.
control-Feld
required - required Modul. PAM-Authentifizierung wird fortgesetzt. Bei success wird
dies für required Module vermerkt. Bei nosuccess wird der Fehler gemerkt, wenn
dies der erste required-Fehler war.
requisite - required Modul. Bei success wird der PAM-Authentifizierung fortgesetzt.
Bei Fehler wird die Modul-Folge sofort beendet und der [Link]-Fehler
gemeldet (notwendig).
sufficient - optional Modul. Bei success wird die Modul-Folge sofort mit success
beendet unabhängig von vorangegangen Ergebnissen. Bei nosuccess wird ein
optinaler Fehler gemeldet und die Modul-Folge fortgesetzt.
include - einfügen des angegeben Files in das Konfigurationsfile modul-name
module-name ist der Name des entsprechenden Moduls, der die Überprüfung
vornehmen soll. Der Name kann absolute oder relativ zu /lib/security bzw.
/usr/lib/security angegeben werden.
modul-arguments sind verschieden Optionen, die je nach Modul angegeben werden
können und zusätzliche Eigenschaften aktivieren, z.B.:
pam_unix2: debug, nullok, not_set_pass, use_first_pass, use_authok
pam_pwcheck: blowfish, debug, not_set_pass, nullok, md5, bigcrypt
pam_unix_auth: nowarn, server_policy, nolock
Beispiel: login
auth requisite pam_nologin.so # kein login wenn /etc/nologin existiert
auth [user_unknown=ignore success=ok ignore=ignore auth_err=die
default=bad] pam_securetty.so # root-login-tty in /etc/securetty
auth include common-auth
account include common-account
session required pam_loginuid.so # setzen von uid
session include common-session
session required pam_lastlog.so nowtmp # /var/log/lastlogin füllen
session required pam_resmgr.so
session optional pam_mail.so standard # you have new mail
Beispiel: common-auth
auth required pam_env.so
auth sufficient pam_unix2.so # in /etc/passwd, ok
auth required pam_ldap.so use_first_pass # ldap
Beispiel: common-account
account requisite pam_unix2.so
account sufficient pam_localuser.so # in /etc/passwd, ok
account required pam_ldap.so use_first_pass # ldap
Da das Lesen von Informationen aus einer Datenbasis für die verschiedenen
Informationssysteme relativ lange dauert, wurde in den Zugriffsmechanismus für
die Datenbasis bei neueren Systemen der NSCD eingeschoben. Der NSCD
speichert alle Anfragen und Antworten an die Datenbasen für passwd, group,
hosts und ipnodes und gibt selbstständig Antworten auf Anfragen, wenn diese
bereits im Speicher sind, ohne das Informationssystem erneut abzufragen!!!
Folgende Bibliotheksrufe benutzen einen vorhandenen NSCD:
gethostbyname, getipnodebyname, gethostbyaddr, getspnam, getpwuid,
getgrid, getgrgid
Wird der NSCD nicht gestartet, führt jeder Zugriff auf die Datenbasis zu einer Abfrage
der entsprechenden Informationssysteme.
Achtung: Das NSCD benutzt eigene Timeouts, so dass eine Änderung an der
Datenbasis sich nicht unmittelbar auswirkt!!!!
Konfigurationsfile /etc/[Link]
# logfile /var/log/[Link]
debug-level 0
# parameter cache value
# enable-cache hosts no
poitive-time-to-live hosts 3600 # Gültigkeit bei gefundenem Wert
negative-time-to-live hosts 5 # Gültigkeit bei nicht gefunden
suggested-size hosts 211 # erwartete Größe des Caches
# Primzahl
keep-hot-count hosts 200 # Anzahl der Werte im Cache
check-files hosts yes # Prüft Änderungen von /etc/hosts
# cachenames: passwd, group, ipnodes, exec_attr, user_attr, prof_attr
Achtung:
Zugriff erfolgt über die üblichen Zugriffsroutinen. Zusätzlich können sich Nutzer und
Administratoren mittels niscat und nismatch die für sie zugelassenen
Eintragungen und Tabellen anschauen.
Beispiele:
niscat -h hosts.org_dir
niscat passwd.org_dir
niscat -A hosts.org_dir
niscat -M hosts.org_dir
niscat -L hosts.org_dir
niscat -o hosts.org_dir
Beispiele:
nismatch bellus hosts.org_dir
nisgrep bellus hosts.org_dir
nismatch -h bellus hosts.org_dir
nisgrep -h bellus hosts.org_dir
nismatch -c bellus hosts.org_dir
nismatch -o bellus hosts.org_dir
/etc/openldap/[Link]
/etc/ldaprc (sollten beide existieren - link ok, ldapsearch)
BASE dc=informatik,dc=hu-berlin,dc=de
URI ldaps://[Link]:636
TLS_CACERTDIR /etc/openldap/CACerts
TLS_CACERT /etc/openldap/CACerts/[Link]
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv2:+SSLv3
TLS_REQCERT demand
URI ldaps://[Link]:636
base ou=all,dc=informatik,dc=hu-berlin,dc=de
ldap_version 3
pam_password crypt
nss_base_passwd ou=People,ou=all,dc=informatik,dc=hu-berlin,dc=de
nss_base_shadow ou=People,ou=all,dc=informatik,dc=hu-berlin,dc=de
nss_base_group ou=Group,ou=all,dc=informatik,dc=hu-berlin,dc=de
nss_base_netgroup ou=Netgroup,ou=all,dc=informatik,dc=hu-berlin,dc=de
Das allgemeine Suchprogramm für den Nutzer und den Administratoren in der LDAP-
Datenbasis ist ldapsearch. Für den Administrator steht außerdem noch das nur
offline zu nutzende Programm slapcat zur Verfügung.
ldapsearch [-n] [-u] [-v] [-k] [-K] [-t] [-A] [-L[L[L]]] [-M[M]] [-d debuglevel] [-f file]
[-D binddn] [-W] [-w passwd] [-y passwdfile] [-H ldapuri] [-h ldaphost]
[-p ldapport] [-P 2|3] [-b searchbase] [-l timelimit] [-z sizelimit]
[-s base|one|sub] [-a never|always|search|find] [-I] [-Q] [-U authcid]
[-O scurity-properies] [-R realm] [-x] [-X authzid] [ -Y mech] [-Z[Z]]
filter [attribute]
Beispiele:
ldapsearch -x -D cn=Manager,dc=informatik,dc=hu-berlin,dc=de -W uid=tbell
ldapsearch -x -D cn=Manager,dc=informatik,dc=hu-berlin,dc=de -w geheim \
uid=tbell
ldapsearch -x uid=tbell
ldapsearch -x -b ou=People,ou=all,dc=informatik,dc=hu-berlin,dc=de uid=tbell
ldapsearch -x ipHostNumber=[Link]
ldapsearch -x iphostnumber=[Link]
ldapsearch -x cn=fipo
slapcat
Radius ist ein Protokoll, das den AAA Prozess unterstützt. AAA steht für
Authentication - verifizieren eines Nutzers oder Rechners mittels eines Accounts
und eines Passwortes oder eines Zertifikates.
Authorization - Zuordnung einer Rolle oder von Zugriffsrechten für einen Nutzer,
der authentifiziert wurde.
Accounting - Erfassung von Abrechnungsdaten (login, logout)
Radius ist ein Client-Server-Protokoll, bei dem der Client :
1. einen Nutzer verifizieren will
2. Informationen über den Nutzer erhalten will
3. Abrechnungs-Informationen speichern will.
Der Client erhält dabei keinen Zugriff auf die eigentlichen Nutzerdaten. Er kennt
lediglich einen vertrauenswürdigen Server. Dieser Server kann weitere Server
befragen. Der Client bekommt nur ja oder nein als Antwort und eine Rolle.
Grundlegende Merkmale:
• Radius basiert auf dem UDP-Protokoll
• Radius-Pakete werden jeweils zwischen zwei Partnern verschlüsselt
• Radius ist zustandslos
• Radius unterstützt PAP und CHAP
• Radius benutzt MD5 für die Verschlüsselung
• Radius ist gedacht für Netzwerktechnik
• Radius unterstützt herstellerspezifische Attribute
• Radius erlaubt den Anschluss an verschiedenste Informationsspeicher
mail:/opt/csw/etc/raddb
Protokollfiles:
mail:/opt/csw/var/log/radius
[Link] - allgemeines Protokollfile
radacct/[Link]/detail-20070125
- detailliertes Accountingfile
Komplexes System zum Ersetzen von Active Directory von Windows unter Unix-
Umgebungen. Aktuelle Produktionsversion ist Samba 4.1.3. Seit 2006 wird an
Samba 4 gearbeitet.
Leistungen:
Installation
Notwendige Pakete
• openssl
• openldap
• (kerberos)
• sasl2
• zlib
• ncurses
• samba
Konfigurationsfiles
[Link] - Konfigurationsfile
[Link] - Samba eigene Passwörter
smbpasswd - lokale Samba-Passwortdatei
smbusers - mapping Unix-Nutzer ↔ Windows-Nutzer
Beispiel(1):
/opt/csw/etc/samba/[Link]
/opt/csw/samba/lib/[Link]
[global]
workgroup = HOME
netbios = HOME
dns proxy = YES
os level = 65
passdb backend = ldapsam:ldap://[Link]
ldap ssl = start_tls
ldap admin dn = smbadmin,ou=People,dc=...
encrypt passwords = YES
....
Beispiel(2):
/opt/csw/etc/samba/[Link]
/opt/csw/samba/lib/[Link]
[global]
....
ldap machine suffix = ou=Hosts
ldap user suffix = ou=People
ldap group suffix = ou=Groups
winbind nested groups = no
security = user
hosts allow = 127. [Link]/24
log file = /var/log/samba/log.%m
log level = 1
Beispiel(3):
/opt/csw/etc/samba/[Link]
/opt/csw/samba/lib/[Link]
[global]
....
max log size = 50
domain master = NO
printcap = /etc/[Link]
follow symlinks = no
locking = no
smb ports = 445
Beispiel(4):
/opt/csw/etc/samba/[Link]
/opt/csw/samba/lib/[Link]
[homes]
comment = Home Directories
browseable = NO
writable = YES
invalid users = adm root bin
path = %H
[…]