Per lo svolgimento degli esercizi e' disponibile un pool di virtual machine, dislocate fisicamente nel Dipartimento di Fisica. L'accesso è consentito tramite SSH:
ssh nome.cognome@lpr-bastion.fis.unipr.it #stessa password della posta
Da lpr-bastion si accede alle macchine interne
ssh lpr-serv #stessa password della posta
e' il bastion host , ovvero una macchina con 2 interfacce ethernet: una verso la rete di Ateneo e una verso la rete privata LPR. Svolge funzione di IPforwarding, NAT e FileServer della HOME via NFS. Svolge la funzione di gestore dei nodi della rete lpr.
Sono i nodi interni alla rete.
I nodi sono in area nascosta. Per accedere ai repository Web esterni e' necessario impostare l'HTTP-proxy:
echo "proxy=http://proxy.fis.unipr.it:8080/" >> /etc/yum.conf #needed by yum echo "export http_proxy=http://proxy.fis.unipr.it:8080" >> /etc/profile.d/local.sh #needed by wget and rpm
yum install tftp #client
mkdir /home/
/etc/exports:
/home 192.168.0.0/24(rw,sync)
mkdir /home/studenti /home/docenti
Sui client:
echo "192.168.0.254:/home /home nfs defaults,soft,rsize=8192,wsize=8192,timeo=60 0 0" >> /etc/fstab
yum install java-1.6.0-openjdk.x86_64 echo "export JAVA_HOME=/usr" >> /etc/profile.d/java.sh
export http_proxy=http://proxy.fis.unipr.it:8080 wget http://pkgs.repoforge.org/lbe/lbe-2.8.1-2.2.el6.rf.noarch.rpm rpm -ivh lbe-2.8.1-2.2.el6.rf.noarch.rpm lbe
Host: lpr-bastion.fis.unipr.it Base DN: dc=fis,dc=unipr,dc=it User DN: cn=Manager,dc=fis,dc=unipr,dc=it Password: secret
/usr/local/sbin/ig-bootselect Script per gestire i filedi configurazione PXE
/var/www/cgi-bin/install_ack.cgi Script GCI per ripristinare il boot da disco al termine dell'installazione
La directory che contiene i file di configurazione deve essere modificabile da httpd:
chown apache.apache /tftpboot/linux-install/pxelinux.cfg
C3 (Cluster Command & Control) è un tool sviluppato da Oak Ridge National Lab per la gestione centralizzata di una Farm di nodi Linux. Il tool consente di replicare un comandi su tutti i nodi (cexec) via ssh o distribuire un file (cpush) via scp.
Installiamo il su lpr-serv che sara' la macchina centrale per le operazioni di Cluster:
rpm -ivh http://www.csm.ornl.gov/torc/C3/Software/5.1.2/rpm/c3-5.1.2-1.noarch.rpm
/etc/c3.conf
cluster local { lpr-serv #head node lpr-wn0[1-5] #compute nodes }
Comandi principali:
cexec <nome comando> cpush <file locale> <file remoto> cexec service sshd restart
http://172.28.34.100/ks/sl6x-proxy.ks
http://www.centos.org/docs/5/html/yum/
yum update
groupadd -g 1000 lpr useradd -D -b /home/lpr #Default home dir useradd alfieri -u 1001 -g 1000 passwd alfieri useradd grossi -u 1002 -g 1000 passwd grossi useradd newuser -u <UID> -g 1000
UID del Gruppo lpr-wn01 1011 1012 1013 .. UID del Gruppo lpr-wn02 1021 1022 1023 .. UID del Gruppo lpr-wn03 1031 1032 1033 .. UID del Gruppo lpr-wn04 1041 1042 1043 ..
Configurazione in /etc/openldap/ldap.conf:
TLS_CACERTDIR /etc/openldap/cacerts URI ldap://didattica.fis.unipr.it/ BASE ou=didattica,dc=fis,dc=unipr,dc=it
Configurazione dei servizi di autenticazione:
authconfig --enablesssd --enablesssdauth --disablenis --disablekrb5 --enableshadow --enablemkhomedir --enablelocauthorize --updateall
Editare il file /etc/sssd/sssd.conf come segue:
[sssd] config_file_version = 2 services = nss, pam domains = default [nss] [pam] [domain/default] auth_provider = ldap ldap_id_use_start_tls = False ldap_pwd_policy = none chpass_provider = ldap #enumerate=False cache_credentials = False debug_level = 6 id_provider = ldap ldap_tls_cacertdir = /etc/openldap/cacerts ldap_auth_disable_tls_never_use_in_production = true # Enumeration means that the entire set of available users and groups on the remote source is cached on the local machine. # When enumeration is disabled, users and groups are only cached as they are requested. # For performance reasons, it is recommended that you disable enumeration for domains with many users and groups. # The default value for this parameter is FALSE. Set this value to TRUE to enable enumeration of users and groups of a domain. enumerate = True ldap_user_search_base = ou=didattica,dc=fis,dc=unipr,dc=it ldap_search_base = ou=didattica,dc=fis,dc=unipr,dc=it ldap_uri = ldap://didattica.fis.unipr.it/ # Login to ldap with a specified user. ldap_default_bind_dn = cn=browser,dc=fis,dc=unipr,dc=it ldap_default_authtok_type = password ldap_default_authtok = myldappass
service sssd restart
Abilitare UsePam in /etc/ssh/sshd_config:
UsePAM yes
Fare il reload della configurazione del demone ssh:
service sshd reload
Editing di /etc/openldap/slapd.conf:
suffix "dc=lpr,dc=fis,dc=unipr,dc=it" rootdn "cn=Manager,dc=lpr,dc=fis,dc=unipr,dc=it" rootpw secret # Policy per l'accesso ai dati: # tutti possono leggere tutti i dati e modificare i propri (passwd) access to * by * read by self write by anonymous auth
Installazione del BaseDN:
service ldap stop rm -rf /var/lib/ldap/* service ldap start
ldapadd -x -h 127.0.0.1 -p 389 -D "cn=Manager,dc=lpr,dc=fis,dc=unipr,dc=it" -w secret << EOF dn: dc=lpr,dc=fis,dc=unipr,dc=it dc: lpr ou: lpr description: Corso LPR 2011-2012 objectClass: top objectClass: dcObject objectClass: organizationalUnit dn: ou=Users,dc=lpr,dc=fis,dc=unipr,dc=it ou: Users description: utenti del Corso LPR 2011-2012 objectClass: organizationalUnit EOF
Per verificare l'installazione:
ldapsearch -x -b 'dc=lpr,dc=fis,dc=unipr,dc=it' -s sub '(objectclass=*)'
Da eseguire su un host linux (lpr-bastion o lpr-serv).
Per ogni utente che deve utilizzare il sistema occorre aggiungere un oggetto nel database LDAP, sotto "ou=Users". Ecco un esempio, file "person.ldif":
dn: cn=Roberto Alfieri,ou=Users,dc=lpr,dc=fis,dc=unipr,dc=it cn: Roberto Alfieri objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount sn: Alfieri #MAY givenName: Roberto mail: roberto.alfieri@fis.unipr.it telephoneNumber: 0521906214 uid: alfieri loginShell: /bin/bash uidNumber: 1001 gidNumber: 1000 homeDirectory: /home/lpr/alfieri #userPassword: miapass userPassword: {MD5}dMKAZxGa6QWidEtbZdkzaw==
Per calcolare la codifica base64 dell'hash md5 della userPassword:
echo -n miapass | python -c "import base64,hashlib,sys; print base64.b64encode(hashlib.md5(sys.stdin.read()).digest())"
Per aggiungere l'oggetto utente dal file "person.ldif":
ldapadd -x -D "cn=Manager,dc=lpr,dc=fis,dc=unipr,dc=it" -w secret -h lpr-bastion -f person.ldif
Configurazione in /etc/openldap/ldap.conf:
TLS_CACERTDIR /etc/openldap/cacerts URI ldap://lpr-bastion/ BASE dc=lpr,dc=fis,dc=unipr,dc=it
Configurazione dei servizi di autenticazione:
authconfig --enablesssd --enablesssdauth --disablenis --disablekrb5 --enableshadow --enablemkhomedir --enablelocauthorize --updateall
Editare il file /etc/sssd/sssd.conf come segue:
[sssd] config_file_version = 2 services = nss, pam domains = default [nss] [pam] [domain/default] auth_provider = ldap ldap_id_use_start_tls = False ldap_pwd_policy = none chpass_provider = ldap enumerate = False cache_credentials = False ldap_user_search_base = dc=lpr,dc=fis,dc=unipr,dc=it ldap_search_base = dc=lpr,dc=fis,dc=unipr,dc=it debug_level = 6 id_provider = ldap ldap_uri = ldap://lpr-bastion/ ldap_tls_cacertdir = /etc/openldap/cacerts ldap_auth_disable_tls_never_use_in_production = true
service sssd restart
Abilitare UsePam in /etc/ssh/sshd_config:
UsePAM yes
Fare il reload della configurazione del demone ssh:
service sshd reload
Consente agli utenti (non root) di accedere agli altri nodi utizzando lo stesso username, senza password. L'autunticazione e' abilitata a livello di Host, le cui coordinate vengono inserite nei file /etc/ssh/shosts.equiv e ssh_known_hosts
shosts.equiv
lpr-serv.fis.unipr.it lpr-wn01.fis.unipr.it lpr-wn02.fis.unipr.it lpr-wn03.fis.unipr.it lpr-wn04.fis.unipr.it lpr-wn05.fis.unipr.it lpr-bastion.fis.unipr.it lpr-bastion lpr-serv lpr-wn01 lpr-wn02 lpr-wn03 lpr-wn04 lpr-wn05 192.168.0.2 192.168.0.101 192.168.0.102 192.168.0.103 192.168.0.104 192.168.0.105 192.168.0.254
ssh_known_hosts
lpr-bastion,lpr-bastion.fis.unipr.it,192.168.0.254 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZka$ lpr-serv,lpr-serv.fis.unipr.it,192.168.0.2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$ lpr-wn01,lpr-wn01.fis.unipr.it,192.168.0.101 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$ lpr-wn02,lpr-wn02.fis.unipr.it,192.168.0.102 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$ lpr-wn03,lpr-wn03.fis.unipr.it,192.168.0.103 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$ lpr-wn04,lpr-wn04.fis.unipr.it,192.168.0.104 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$ lpr-wn05,lpr-wn05.fis.unipr.it,192.168.0.105 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtyYE3qC6EyC3o+WuOigd9XmUEc0QSWhZkawoPhcbTP$
/etc/sudoers.d/lpr
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, \ /usr/bin/net, /sbin/iptables, /usr/sbin/lsof, /usr/sbin/tcpdump, /sbin/ip User_Alias LPR = roberto.alfieri, marco.grossi, roberto.covati User_Alias ADMINS = roberto.alfieri ADMINS ALL= NOPASSWD: ALL ALL ALL= NOPASSWD: NETWORKING #LPR ALL= NOPASSWD: NETWORKING