====== 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