Laboratorio di Amministrazione di Sistemi L­A

Prova pratica del 16 febbraio 2009

           Descrizione generale del problema

Un internet cafè consente alle workstation collocate sulla rete privata 10.1.1.0/24 di accedere ad Internet tramite un router/firewall Linux (10.1.1.254). Gli utenti sono registrati in una directory LDAP ospitata dallo stesso router, in entry che tengono traccia del tempo e della banda consumate da ciascuno. Sulle workstation vengono eseguiti script che, segnalando su LDAP l'accesso e la disconnessione degli utenti, permettono ad un processo di monitoraggio in esecuzione sul router di configurare dinamicamente le regole di transito del traffico e di aggiornare il conteggio delle risorse utilizzate dagli utenti. Nel caso un utente esaurisca le risorse a sua disposizione, il router provvede a disconnetterlo.
Inoltre, anzichè usare un filesystem condiviso, i dati posti da un utente sulla propria home nella workstation vengono salvati sul server al termine della sessione di lavoro, e quando lo stesso utente ritorna ed apre una nuova sessione, vengono riportati sulla workstation (eventualmente diversa) su cui si logga.

           Componenti da progettare

File da consegnare: utenti.schema ­  - Schema da inserire nella configurazione della directory LDAP, che definendo gli opportuni attributi e classi permetta l'inserimento di entry strutturate come nell'esempio seguente:

dn: user=marco,dc=lab4,dc=ingbo
objectClass: utenti
user: marco
Stato: connesso
IP: 10.1.1.45
TempoResiduoMinuti: 10
TrafficoResiduoKB: 100


File da consegnare: login.sh ­ - Si suppone che questo script venga automaticamente eseguito sulla workstation quando un utente esegue il login, a suo nome.


File da consegnare: logout.sh ­-  Può essere invocato da login.sh o automaticamente al logout di un utente, ed è comunque eseguito a suo nome.


File da consegnare: fw.sh ­ - Viene invocato sul router con due parametri, il primo deve essere un IP address, il secondo una stringa che può assumere i valori "open" o "close". Si ipotizzi che le policy del firewall siano settate tutte a DROP con l'eccezione delle regole necessarie al traffico di loopback locale ed al traffico LDAP e SSH con le workstation. Nel caso sia invocato con "open", lo script configura il firewall per consentire l'accesso ad Internet da parte dell'indirizzo (privato) specificato come primo parametro, mentre nel caso sia invocato con "close" rimuove le regole inserite in precedenza per tale IP.
L'accesso ad internet deve essere limitato alle porte e protocolli specificati nel file /etc/allowed_ports, il cui contenuto ha una struttura come nell'esempio seguente:

tcp 80
udp 53
tcp 443

Suggerimento utile anche ai fini del punto successivo: si faccia un uso opportuno delle catene custom di iptables.


File da consegnare: decrementa.sh ­ - Viene invocato sul router ogni minuto (indicare nei commenti quali operazioni di configurazione del sistema sono necessarie per ottenere tale esecuzione periodica automatica).
Trova tutte le entry LDAP di classe "utenti" che hanno Stato=connesso, e per ciascuna


File da consegnare: openclose.sh ­ - Trova tutte le entry che dall'ultima invocazione del medesimo script hanno cambiato stato ed invoca fw.sh nel modo opportuno per abilitare/disabilitare l'accesso ad internet della corrispondente workstation.