Esperienze di AAI nella sezione di Bari Domenico
Esperienze di AAI nella sezione di Bari Domenico Diacono Workshop CCR 2007 - Rimini 1
Servizi K 5 e LDAP = VMWare = Cluster Linux-HA Kerberos Master open. AFS open. LDAP Master ssh = Cluster HPC (Oscar + GPFS) Kerberos Slave pine (GSSAPI) Gate Poffice (IMAPS) ssh (GSSAPI) Netclus consegna mail Billie (MX, LDAP slave) Radius posta WWW Workshop CCR 2007 - Rimini 2
LDAP e Kerberos Autenticazione GSSAPI. Viene anche usata dal master propagare le modifiche agli slave gate ~ # ldapsearch -LLL uid. Number=2002 dn SASL/GSSAPI authentication started ldap_sasl_interactive_bind_s: Local error (-2) additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No credentials cache found) gate ~ # kinit domenico gate ~ # ldapsearch -LLL uid. Number=2002 dn SASL/GSSAPI authentication started SASL username: domenico@BA. INFN. IT SASL SSF: 56 SASL installing layers dn: cn=domenico, ou=Users, dc=ba, dc=infn, dc=it Simple bind su TLS (configurazione in /etc/openldap/ldap. conf): gate ~ # ldapsearch -LLL -x -D "cn=domenico, ou=Users, dc=ba, dc=infn, dc=it" -W uid. Number=2002 dn Enter LDAP Password: xxxxxx dn: cn=domenico, ou=Users, dc=ba, dc=infn, dc=it Workshop CCR 2007 - Rimini 3
LDAP e Kerberos /etc/openldap/slapd. conf sasl-host sasl-realm sasl-secprops ldap. ba. infn. it BA. INFN. IT noplain, noactive, noanonymous authz-regexp uid=([^, ]*), cn=ba. infn. it, cn=gssapi, cn=auth ldap: ///ou=users, dc=ba, dc=infn, dc=it? ? sub? (uid=$1) La direttiva authz-regexp trasforma i principals in dn: gate ~ # kinit domenico gate ~ # ldapwhoami SASL username: domenico@BA. INFN. IT dn: cn=domenico, ou=users, dc=ba, dc=infn, dc=it /etc/conf. d/saslauthd. conf (In ascolto su /var/lib/sasl 2/mux) SASLAUTHD_OPTS="${SASLAUTH_MECH} -a kerberos 5” /etc/sasl 2/slapd. conf pwcheck_method: saslauthd Workshop CCR 2007 - Rimini 4
Utenti-LDAP dn: cn=domenico, ou=Users, dc=ba, dc=infn, dc=it (cn = principal kerberos) object. Class: inet. Org. Person object. Class: posix. Account object. Class: top object. Class: qmail. User object. Class: krb 5 Principal cn: domenico krb 5 Principal. Name: domenico sn: domenico user. Password: {SASL}domenico@BA. INFN. IT ( Importante per il bind) gecos: Domenico Diacono home. Directory: /afs/ba. infn. it/user/domenico login. Shell: /bin/bash mail. Forwarding. Address: domenico@postoff. ba. infn. it uid. Number: 2002 (corrisponde all'Id AFS) mail: Domenico. Diacono gid. Number: 8007 mail. Alternate. Address: diacono account. Status: A uid: domenico given. Name: domenico@ba. infn. it Workshop CCR 2007 - Rimini 5
Login Gli utenti possono collegarsi alle macchine “gate” usando come username il loro Common Name (cn) LDAP, e la password registrata in kerberos. La home directory di destinazione risiede su open. AFS. Gate non viene usato per il calcolo, ma solo per le operazioni semplici sulla home dir e la lettura della posta. Si tratta di due macchine virtuali in round-robin sul DNS. Workshop CCR 2007 - Rimini 6
Login-Autenticazione Per il controllo della password: http: //www. eyrie. org/~eagle/software/pam-krb 5 Per ottenere il token AFS: http: //packages. debian. org/stable/net/libpam-openafs-session /etc/pam. d/system-auth: auth sufficient pam_krb 5. so forwardable minimum_uid=2000 account required pam_krb 5. so minimum_uid=2000 password sufficient pam_krb 5. so minimum_uid=2000 session optional pam_openafs-krb 5. so Workshop CCR 2007 - Rimini 7
Login-Autorizzazione Gli utenti autorizzati sono quelli definiti su ldap. Si usa nss_ldap: http: //www. padl. com/OSS/nss_ldap. html /etc/nsswitch. conf passwd: shadow: group: compat ldap /etc/ldap. conf host 192. 135. 10. 55 base ou=Users, dc=ba, dc=infn, dc=it bind_policy soft nss_connect_policy oneshot pam_lookup_policy no ssl start_tls Workshop CCR 2007 - Rimini 8
Cyrus e Pine Cyrus IMAP autentica i suoi utenti usando GSSAPI, ha bisogno di imapd/hostname@REALM. Per usare LOGIN su IMAPS usa saslauthd. Pine, installato sulle macchine “gate”, supporta nativamente GSSAPI. /etc/imapd. conf sasl_pwcheck_method: sasl_mech_list: (server IMAP) saslauthd GSSAPI LOGIN /etc/conf. d/saslauthd. conf (server IMAP) SASLAUTHD_OPTS="${SASLAUTH_MECH} -a kerberos 5 /etc/pine. conf. fixed user-domain=ba. infn. it smtp-server=mbox. ba. infn. it default-fcc={poffice. ba. infn. it/ssl}INBOX. Sent default-saved-msg-folder={poffice. ba. infn. it/ssl}INBOX. saved postponed-folder={poffice. ba. infn. it/ssl}INBOX. postponed inbox-path={poffice. ba. infn. it/ssl}INBOX folder-collections="Mail on poffice. ba. infn. it/ssl" {poffice. ba. infn. it/ssl}INBOX. [] Workshop CCR 2007 - Rimini 9
Limitare il login Definizione di un gruppo posix LDAP /etc/sshd_config (Netclus) GSSAPIAuthentication yes Allow. Groups Gruppo. Cluster root /etc/ssh_config (Gate) GSSAPIAuthentication yes GSSAPIDelegate. Credentials yes Non si passa per pam: if [[ $KRB 5 CCNAME != "" ]]; then aklog; fi E' necessario usare per il bind di nss_ldap un utente che veda i gruppi LDAP. Lo svantaggio è che tutti gli utenti di Netclus condividono un gruppo posix secondario. A Ferrara con pam_ldap riescono ad usare un gruppo non posix (Gianoli) Workshop CCR 2007 - Rimini 10
MX Postfix - Headers LDAP viene usato per la riscrittura degli header della posta in uscita e per trovare l'indirizzo di forward della posta in entrata. Sul server MX risiede uno slave LDAP dedicato allo scopo /etc/postfix/main. cf alias_maps = ldap: /etc/postfix/users_ldap. cf, hash: /etc/aliases sender_canonical_maps = ldap: /etc/postfix/canonical_ldap. cf masquerade_domains=ba. infn. it local_header_rewrite_clients = permit_mynetworks remote_header_rewrite_domain = invalid. domain Workshop CCR 2007 - Rimini 11
Sender Canonical Map canonical_ldap. cf server_host = ldapi: //%2 fvar%2 frun%2 fopenldap%2 fslapd. sock search_base = dc=ba, dc=infn, dc=it query_filter = (&(account. Status=A)(given. Name=%s)) result_attribute = mail version = 3 bind = yes timeout = 60 expansion_limit = 1 bind_dn = cn=postfix, ou=Users, dc=ba, dc=infn, dc=it bind_pw = password Nella interrogazione si usano: dn: cn=domenico, ou=Users, dc=ba, dc=infn, dc=it mail: Domenico. Diacono account. Status: A given. Name: domenico@ba. infn. it Workshop CCR 2007 - Rimini 12
Alias map users_ldap. cf server_host = ldapi: //%2 fvar%2 frun%2 fopenldap%2 fslapd. sock search_base = dc=ba, dc=infn, dc=it query_filter = (&(account. Status=A)(|(mail=%u)(mail. Alternate. Address=%u))) result_attribute = mail. Forwarding. Address version = 3 bind = yes expansion_limit = 1 timeout = 60 bind_dn = cn=postfix, ou=Users, dc=ba, dc=infn, dc=it bind_pw = password Nella interrogazione si usano: dn: cn=domenico, ou=Users, dc=ba, dc=infn, dc=it mail: Domenico. Diacono mail. Alternate. Address: diacono account. Status: A given. Name: domenico@ba. infn. it mail. Forwarding. Address: domenico@postoff. ba. infn. it Workshop CCR 2007 - Rimini 13
MX Postfix - Relay Gli utenti kerberos possono autenticarsi con username e password o kerberos dall'esterno delle reti locali ed usare l'MX. Per GSSAPI serve smtp/hostname@REALM /etc/conf. d/saslauthd. conf SASLAUTHD_OPTS="${SASLAUTH_MECH} -a kerberos 5 /etc/postfix/main. cf smptd_sasl_security_options = noanonymous, noplaintext smptd_sasl_tls_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions =. . . permit_sasl_authenticated, . . . /etc/sasl 2/smtpd. conf pwcheck_method: mech_list: saslauthd GSSAPI LOGIN Workshop CCR 2007 - Rimini 14
MX Postfix - Relay Per evitare che username e password viaggino in chiaro verso l'MX si usa TLS. /etc/postfix/main. cf smtpd_use_tls = yes smtpd_tls_received_header = yes smtpd_tls_session_cache_database = dtree: /etc/postfix/smtpd_scache smtpd_tls_session_cache_timeout = 3600 s smtpd_tls_ask_ccert = yes (relay con certificato) smtpd_recipient_restrictions =. . . permit_tls_all_clientcerts, . . . /etc/postfix/master. cf tlsmgr unix n 1000? 1 tlsmgr smtps inet n n smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o content_filter= submission inet n n smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o tlsmgr = manager cache tls; smtps = SSL non standard 465; submission = STARTTLS 587 Workshop CCR 2007 - Rimini 15
RADIUS Ogni utente kerberos può autenticarsi. Si usa il modulo GSSAPI, l'host deve avere un suo principal registrato. /etc/raddb/radiusd. conf In “authenticate”: Auth-Type Kerberos { krb 5 } In “modules”: krb 5 { keytab = /etc/krb 5. keytab } Workshop CCR 2007 - Rimini 16
WEB auth Ad alcune pagine private si accede con username e password kerberos (HTTP/hostname@REALM). Si usa il modulo: http: //modauthkerb. sourceforge. net/. Esiste anche il modulo mod_auth_ldap. /etc/apache 2/modules. d/11_mod_auth_kerb. conf <If. Define AUTH_KERB> Load. Module auth_kerb_module </If. Define> modules/mod_auth_kerb. so <If. Module mod_auth_kerb. c> <Directory /var/www. ba. infn. it/Da. Bi. K> Auth. Type Kerberos Auth. Name "Kerberos Login" Krb 5 Keytab /etc/apache 2/ssl/krb 5. keytab Krb. Method. Negotiate off Krb. Verify. KDC on Krb. Save. Credentials off Krb. Auth. Realms BA. INFN. IT Require valid-user </Directory> </If. Module> Workshop CCR 2007 - Rimini 17
php. LDAPadmin Workshop CCR 2007 - Rimini 18
Python scripts import ldap, ldap. sasl. . . conn = ldapobject. Smart. LDAPObject('ldaps: //ldap. ba. infn. it') conn. protocol_version = 3 try: sasl_auth = ldap. sasl({}, 'GSSAPI') conn. sasl_interactive_bind_s("", sasl_auth) except ldap. LDAPError, e: logger. debug("Error connecting to LDAP: %s" % str(e)). . . try: dn = "cn=%s, ou=Users, dc=ba, dc=infn, dc=it" % username conn. modify_s(dn, [ (ldap. MOD_REPLACE, "gecos", ["%s" % gecos]), (ldap. MOD_REPLACE, "gid. Number", ["%s" % gid]), (ldap. MOD_REPLACE, "uid. Number", ["%s" % uid. Number]), (ldap. MOD_REPLACE, "home. Directory", ["/afs/ba. infn. it/user/%s" % username]), (ldap. MOD_REPLACE, "login. Shell", ["/bin/bash"]), (ldap. MOD_REPLACE, "mail. Forwardingaddress", ["%s@postoff. ba. infn. it" % username])]) Workshop CCR 2007 - Rimini 19
Links and credits Trovate tutto su: http: //www. ba. infn. it/calcolo/documenti/autaut. html http: //www. ba. infn. it/calcolo/documenti/Cluster. html http: //www. ba. infn. it/~domenico/docs/GPFSon. OSCAR. html Non sarebbe nato il real BA. INFN. IT senza: http: //www. ts. infn. it/events/ccr 2002/talks/ricciardi 1. ppt E. Fasanelli - Note sull'installazione di una cella AFS con autenticazione Kerberos V 5 A. Maslennikov - AFS, fileystem distribuito e multipiattaforma Linux&C 37 -41 Workshop CCR 2007 - Rimini 20
- Slides: 20