====== Login interattivo su Scientific Linux 7 ====== Partendo da [[strutture:lnf:dr:calcolo:sistemi:scientific_linux_7_template|Scientific Linux 7 Template]], installiamo i seguenti pacchetti: # yum install pam-krb5 pam-afs-session Modifichiamo in ''/etc/pam.d/'' il file ''sshd'': # vi /etc/pam.d/sshd #%PAM-1.0 auth include system-auth account required pam_nologin.so account include system-auth password include system-auth session optional pam_keyinit.so force revoke session include system-auth session required pam_loginuid.so e sempre in ''/etc/pam.d/'' il file ''system-auth'': # vi /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth sufficient pam_krb5.so try_first_pass auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet_success auth required pam_deny.so account sufficient pam_krb5.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so account required pam_unix.so account sufficient pam_localuser.so password sufficient pam_krb5.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so session optional pam_krb5.so session optional pam_afs_session.so session optional pam_keyinit.so revoke session required pam_limits.so session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so Verifichiamo che siano impostate le seguenti direttive in ''/etc/ssh/ssh_config'': GSSAPIAuthentication yes GSSAPIDelegateCredentials yes e le seguenti le direttive in ''/etc/ssh/sshd_config'': GSSAPIAuthentication yes GSSAPICleanupCredentials yes Riavviamo il servizio ''sshd'' # systemctl restart sshd.service # systemctl status sshd.service Verifichiamo che il file ''/etc/krb5.conf'' sia configurato nel seguente modo: [libdefaults] default_realm = LNF.INFN.IT [domain_realm] .lnf.infn.it = LNF.INFN.IT lnf.infn.it = LNF.INFN.IT [realms] LNF.INFN.IT = { kdc = kdc5s3.lnf.infn.it:88 kdc = kdc5s2.lnf.infn.it:88 kdc = kdc5s1.lnf.infn.it:88 kdc = kdc5s0.lnf.infn.it:88 kdc = kdc5p.lnf.infn.it:88 admin_server = kdc5p.lnf.infn.it:749 default_domain = lnf.infn.it } INFN.IT = { kdc = k5.infn.it:88 kdc = afscnaf.infn.it:88 kdc = afsrm1.roma1.infn.it:88 kdc = afsna.na.infn.it:88 admin_server = k5.infn.it:749 default_domain = infn.it } [appdefaults] aklog_homedir = true pam-afs-session = { minimum_uid = 1000 ignore_root = true debug = true } pam = { minimum_uid = 1000 ticket_lifetime = 259200 renew_lifetime = 604800 forwardable = true krb4_convert = false ccache_dir = /tmp tokens = true krb4_convert_524 = false krb4_use_as_req = false #afs_cells = lnf.infn.it=afs@LNF.INFN.IT afs_cells = lnf.infn.it=afs/lnf.infn.it@LNF.INFN.IT #existing_ticket = true #validate = true validate = false #keytab = FILE:/etc/krb5.keytab #debug = false debug = true } Per utilizzare l'autenticazione con ticket bisogna creare in ''/etc/'' il file ''krb5.keytab'' e decommentare in ''/etc/krb5.conf'' nella sezione ''[appdefaults] pam'' le direttive: validate = true keytab = FILE:/etc/krb5.keytab Configuriamo il client LDAP per recuperare le informazioni sugli utenti che possono effettuare l'accesso. # yum install openldap openldap-clients nss-pam-ldapd Configuriamo i servizi con: authconfig-tui Impostiamo i valori come indicato nelle seguenti schermate: ┌────────────────┤ Authentication Configuration ├─────────────────┐ │ │ │ User Information Authentication │ │ [*] Cache Information [ ] Use MD5 Passwords │ │ [*] Use LDAP [*] Use Shadow Passwords │ │ [ ] Use NIS [ ] Use LDAP Authentication │ │ [ ] Use IPAv2 [*] Use Kerberos │ │ [ ] Use Winbind [ ] Use Fingerprint reader │ │ [ ] Use Winbind Authentication │ │ [*] Local authorization is sufficient │ │ │ │ ┌────────┐ ┌──────┐ │ │ │ Cancel │ │ Next │ │ │ └────────┘ └──────┘ │ │ │ │ │ └─────────────────────────────────────────────────────────────────┘ ┌─────────────────┤ LDAP Settings ├─────────────────┐ │ │ │ [ ] Use TLS │ │ Server: ldaps://dsa.lnf.infn.it/________________ │ │ Base DN: dc=lnf,dc=infn,dc=it___________________ │ │ │ │ ┌──────┐ ┌──────┐ │ │ │ Back │ │ Next │ │ │ └──────┘ └──────┘ │ │ │ │ │ └───────────────────────────────────────────────────┘ ┌─────────────────┤ Kerberos Settings ├──────────────────┐ │ │ │ Realm: LNF.INFN.IT_____________________________ │ │ KDC: ________________________________________ │ │ Admin Server: ________________________________________ │ │ [*] Use DNS to resolve hosts to realms │ │ [*] Use DNS to locate KDCs for realms │ │ │ │ ┌──────┐ ┌────┐ │ │ │ Back │ │ Ok │ │ │ └──────┘ └────┘ │ │ │ │ │ └────────────────────────────────────────────────────────┘ ┌────────────────┤ Warning ├─────────────────┐ │ │ │ To connect to a LDAP server with TLS │ │ protocol enabled you need a CA certificate │ │ which signed your server's certificate. │ │ Copy the certificate in the PEM format to │ │ the '/etc/openldap/cacerts' directory. │ │ Then press OK. │ │ │ │ ┌────┐ │ │ │ Ok │ │ │ └────┘ │ │ │ │ │ └────────────────────────────────────────────┘ Importiamo in ‘’/etc/openldap/cacerts/’’ i certificati delle CA # curl http://www.lnf.infn.it/~dmaselli/cacerts.tgz | tar -C /etc/openldap/cacerts/ -xzvf - # cacertdir_rehash /etc/openldap/cacerts/ Configuriamo ''nslcd'' (''vi /etc/nslcd.conf'') in modo che ci siano le seguenti direttive: uri ldaps://dsa.lnf.infn.it base dc=lnf,dc=infn,dc=it binddn cn=daemon,dc=lnf,dc=infn,dc=it bindpw butD9PeHtozZjM2Dl8SXF4FBNcTzjydhvJNBPN4qXZoxXwSTQ5uCR9YwYFYJTQAk ssl no tls_cacertdir /etc/openldap/cacert Riavviamo il servizio ''nslcd'' # systemctl restart nslcd.service # systemctl status nslcd.service Configuriamo ''/etc/nsswitch.conf'' per consentire la ricerca degli utenti su LDAP oltre che in locale: passwd: files ldap shadow: files ldap group: files ldap hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: files ldap publickey: nisplus automount: files ldap aliases: files nisplus sudoers: file ldap Recuperiamo informazioni su un utente con il comando ''id'' per verificare che tutto sia stato configurato in modo corretto: id Verifichiamo che il servizio afs sia attivo, nel caso contrario provvediamo ad avviarlo e abilitarlo al boot: # systemctl status afs.service # systemctl start afs.service # systemctl enable afs.service Installiamo la TENEX C Shell: # yum install tcsh Modifichiamo il file ''/etc/lnf.login'' aggiungendo il seguente contenuto: setenv ORIPATH $PATH ######################################################################### # # Generic lnf system login. # if ( -x /afs/lnf.infn.it/system/userenv/common/lnf.csh.login ) then source /afs/lnf.infn.it/system/userenv/common/lnf.csh.login endif # ######################################################################### setenv PATH "${ORIPATH}:${PATH}" e creiamo il file ''/etc/csh.logout'' inserendo: # /etc/csh.logout: system-wide .logout file for csh(1) and tcsh(1) ######################################################################### # # Log logout # if ( -x /afs/lnf.infn.it/system/userenv/common/lnf.csh.logout ) then source /afs/lnf.infn.it/system/userenv/common/lnf.csh.logout endif kdestroy # # eof # Infine creiamo i seguenti link simbolici: ln -s /afs/lnf.infn.it/system/lnflocal/@sys /usr/lnf ln -s /usr /usr/afsws