Installazione Interfaccia Web

L’installazione del pacchetto isi-web provvede all’installazione di quanto necessario. Occorre però essere consci di alcune cose per accedere all’ interfaccia e per configurazioni avanzate. L’uso dell’ interfaccia è spiegato nella sezione gestione

L’interfaccia web viene lanciata da uno script di init /etc/init.d/isiweb che legge un file in /etc/defaults/isiweb dove è possibile inibire l’avviamento dell’interfaccia valorizzando a ‘0’ la variabile START_FSCGI:

START_FSCI=1

Le funzionalità disponibili dipendono dall’utente (i docenti avranno accesso solo alle operazioni di cambio password e cancellazione profilo degli studenti) e dalla presenza dei servizi sottostanti sulla macchina su cui installiamo isiweb. Ad esempio la gestione della Navigazione risulterà indisponibile se Squid gira su altro server. In questo caso occorrerà ricorrere alla configurazione avanzata descritta più avanti.

l’installazione del pacchetto isi-web viene fatta nel solito modo:

apt-get install isi-web

e mette la configurazione di apache in /etc/apache2/site-available/isiweb.conf in come VirtualHost con nome web.isi.lan: questo significa che per potere raggiungere questa interfaccia occorre avere una risoluzione corretta nel server, che risolva l’ip del server. Questa risoluzione può essere messa in /etc/hosts del server se usate il server come dns ed usate dnsmasq, ad esempio se avete il server all’indirizzo 192.168.10.1:

192.168.10.1  web.isi.lan srv
/etc/init.d/dnsmasq restart

se non avete altre interfacce web sul server e quindi non vi serve avere i VirtualHosts potete semplicemente abilitare isiweb-all che è la configurazione che risponde su ogni nome:

a2dissite isiweb.conf
a2ensite isiweb-all.conf
/etc/init.d/apache2 reload

Nella sezione “Navigazione” si accede anche ai link ai report di squid, dansguardian e mrtg. E` cura del sistemista fare in modo che puntino alle cartelle dove effettivamente risiedono i log.

In /etc/isi/web/apache-report-auth.conf viene messa la modalità di autenticazione. Quella suggerita è di creare un utente ldap report utilizzato solo per questo. La password può quindi essere impostata da root con i normali strumenti (isi-passwd). Alternativamente nel file di configurazione è già messa (commentata) l’alternativa basata su file htaccess.

Configurazione avanzata

Quanto segue si rende necessario nel caso in cui Squid giri su una macchina diversa (FW) da quella su cui è stata installata l’interfaccia web (tipicamente il server samba/ldap, nel seguito SRV). La funzionalità che ci interessa rendere attiva anche se Squid gira su FW anziché su SRV, è il controllo della navigazione degli alunni di una classe. Un alunno naviga solo se non è membro del gruppo nowww , in caso contrario un acl di Squid impedisce l’accesso internet. Il problema nasce dal fatto che non basta aggiungere l’utente al gruppo nowww per bloccarlo! Sono necessari anche questi due comandi:

/usr/sbin/nscd -i group (per invalidare la cache di nscd)
/etc/init.d/squid force-reload

se isiweb e squid non sono installati sulla stessa macchina allora i due comandi precedenti devono essere dati via ssh da SRV a nscd e squid su FW. Via console i comandi sarebbero i seguenti:

ssh root@FW /usr/sbin/nscd -i group
ssh root@FW /etc/init.d/squid force-reload

il che pone ad isiweb due problemi * deve agire come utente root senza esserlo * deve autenticarsi su FW senza fornire password (autenticazione via chiavi rsa/dsa)

Fortunatamente squid NON gira su FW come root ma impersonando un utente che si chiama proxy il che permette, configurando opportunamente su FW questo utente e il file /etc/sudoers di controllare nscd e squid con i comandi seguenti:

ssh proxy@FW sudo /usr/sbin/nscd -i group
ssh proxy@FW sudo /etc/init.d/squid force-reload

Naturalmente, perché il tutto funzioni occorre anche informare isiweb che dovrà operare in tale scenario utilizzando comandi come quelli qui sopra, debitamente personalizzati con la sostituzione a FW del nome host vero della macchina che ospita squid. Questo viene fatto inserendo le informazioni necessarie nel file /etc/isi/default.py che si trova su SRV. Di seguito i dettagli

Configurazione su FW dell’utente proxy sotto cui gira Squid

L’utente proxy è un utente di sistema privo di una /home normale. Occorre fornigliene una modificando il file /etc/passwd. Editare quindi /etc/passwd modificando la riga:

proxy:x:13:13:proxy:/bin:/bin/sh
               in
proxy:x:13:13:proxy:/home/proxy:/bin/sh

creare la home e cambiare poi la proprietà di /home/proxy:

mkdir -p /home/proxy/.ssh   (in cui si crea anche la cartella .ssh)
chown -R proxy.proxy /home/proxy

Configurazione su FW del file /etc/sudoers

Per editare /etc/sudoers occorre usare il comando visudo (che sui sistemi isi si appoggia a jmacs). Digitare quindi visudo e modificare quanto visualizzato inserendo le righe:

# User alias specification
User_Alias      SQUID_USER = proxy
# Cmnd alias specification
Cmnd_Alias      ISI_SQUID = /etc/init.d/squid force-reload
Cmnd_Alias      ISI_NSCD = /usr/sbin/nscd -i group
# User privilege specification
root            ALL=(ALL) ALL
SQUID_USER      ALL=(ALL) NOPASSWD: ISI_SQUID, ISI_NSCD

salvare con Control X C

Configurazione chiavi ssh

Affinchè isiweb possa eseguire comandi sulla macchina FW occorre che questi vengano inviati a FW via ssh senza che ciò comporti la richiesta di una password. L’autenticazione di SRV su FW avverrà quindi tramite uno scambio di chiavi crittografiche. Procedere in questo modo:

  • agendo su SRV come root digitare ssh-genkey -t dsa

  • premere invio ad ogni richiesta password

  • trasferire la chiave PUBBLICA generata /root/.ssh/id_dsa.pub sul FW in /tmp:

    scp /root/.ssh/id_dsa.pub root@FW:/tmp
  • passare su FW e aggiungere la chiave pubblica al file delle chiavi autorizzate dell’utente proxy:

    cat /tmp/id_dsa.pub >> /home/proxy/.ssh/authorized_keys

Configurazione su SRV dei comandi per la gestione remota di Squid

Modificare il file /etc/default.py aggiungendo le righe:

SQUID_FORCE_RELOAD = 'ssh proxy@FW sudo /etc/init.d/squid force-reload'
NSCD_GROUP_INVALIDATE = 'ssh proxy@FW sudo /usr/sbin/nscd -i group'

naturalmente al posto di FW metterete il nome host della vostra macchina FW.