Login interattivo su Scientific Linux 7
Partendo da 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 <username>
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