Sei sulla pagina 1di 92

Configurare un Server con Ubuntu 1

Indice generale
MySql...............................................................................................................................................................................................................................................6
Introduzione.....................................................................................................................................................................................................................................6
Installazione.....................................................................................................................................................................................................................................6
Configurazione.................................................................................................................................................................................................................................6
Gestione degli utenti........................................................................................................................................................................................................................6
Impostare una password di amministrazione..............................................................................................................................................................................6
Connessione al database..............................................................................................................................................................................................................6
Creare un nuovo utente................................................................................................................................................................................................................6
Operazioni di backup.......................................................................................................................................................................................................................7
Ulteriori risorse................................................................................................................................................................................................................................7
BackupDatabase...............................................................................................................................................................................................................................8
Introduzione.....................................................................................................................................................................................................................................8
Descrizione.......................................................................................................................................................................................................................................8
Installazione.....................................................................................................................................................................................................................................8
Script................................................................................................................................................................................................................................................8
Configurazione.................................................................................................................................................................................................................................9
DbDesigner....................................................................................................................................................................................................................................10
Introduzione...................................................................................................................................................................................................................................10
Installazione...................................................................................................................................................................................................................................10
DBDesigner nativo per Linux...................................................................................................................................................................................................10
DBDesigner emulato con Wine.................................................................................................................................................................................................10
Ulteriori risorse..............................................................................................................................................................................................................................10
Oracle.............................................................................................................................................................................................................................................11
Introduzione....................................................................................................................................................................................................................................11
Preparativi......................................................................................................................................................................................................................................11
Installazione del pacchetto.............................................................................................................................................................................................................11
Configurazione...............................................................................................................................................................................................................................11
Amministrazione............................................................................................................................................................................................................................11
Ulteriori risorse...............................................................................................................................................................................................................................11
DNS................................................................................................................................................................................................................................................12
Introduzione...................................................................................................................................................................................................................................12
Risoluzione locale su UNIX...........................................................................................................................................................................................................12
Che cos'è e a che cosa serve il DNS...............................................................................................................................................................................................12
Installazione...................................................................................................................................................................................................................................12
Directory di configurazione...........................................................................................................................................................................................................12
Caching Nameserver e DNS autoritario.........................................................................................................................................................................................13
Configurazione di un caching....................................................................................................................................................................................................13
Configurazione di un DNS autoritario......................................................................................................................................................................................13
Architettura di esempio..................................................................................................................................................................................................................14
Configurazione del DNS master e dei suoi file di zona............................................................................................................................................................14
Configurazione del DNS slave..................................................................................................................................................................................................15
Direttive di configurazione avanzate - ACL..............................................................................................................................................................................15
Trasferimenti di zona, aggiornamenti di record e sicurezza..........................................................................................................................................................16
DNS e crittografia a chiave pubblica.............................................................................................................................................................................................16
Architettura dell'esempio...............................................................................................................................................................................................................17
La propagazione delle informazioni..........................................................................................................................................................................................18
DHCP.............................................................................................................................................................................................................................................19
Introduzione...................................................................................................................................................................................................................................19
Che cos'è DHCP e come funziona..................................................................................................................................................................................................19
Installazione...................................................................................................................................................................................................................................19
Un'occhiata ai file e alle directory di configurazione................................................................................................................................................................19
Architettura proposta......................................................................................................................................................................................................................19
Configurazione del DHCP primario...............................................................................................................................................................................................19
Configurazione del DHCP secondario...........................................................................................................................................................................................21
ConfigurazioneNFS........................................................................................................................................................................................................................23
Introduzione...................................................................................................................................................................................................................................23
Preparativi......................................................................................................................................................................................................................................23
Configurazione della rete...............................................................................................................................................................................................................23
Configurazione del server..............................................................................................................................................................................................................23
Configurazione del client...............................................................................................................................................................................................................23
Provare la configurazione..............................................................................................................................................................................................................23
Ulteriori risorse..............................................................................................................................................................................................................................24
FTP.................................................................................................................................................................................................................................................25
Introduzione...................................................................................................................................................................................................................................25
Installazione...................................................................................................................................................................................................................................25
Avvio e arresto del servizio............................................................................................................................................................................................................25
Prova del servizio...........................................................................................................................................................................................................................25
Configurazione...............................................................................................................................................................................................................................25
Limitare l'accesso...........................................................................................................................................................................................................................26
Elenco dei parametri di vsftpd.conf...............................................................................................................................................................................................26
Gestione di un server FTP..............................................................................................................................................................................................................26
FTP anonimo.............................................................................................................................................................................................................................26
FTP anonimo e controllato da password...................................................................................................................................................................................27
FTP con utenti virtuali e il supporto di un database MySQL....................................................................................................................................................27
Configurare un Server con Ubuntu 2

Opzioni varie........................................................................................................................................................................................................................27
Ulteriori risorse..............................................................................................................................................................................................................................27
DirectoryServer..............................................................................................................................................................................................................................28
Introduzione...................................................................................................................................................................................................................................28
Installazione...................................................................................................................................................................................................................................28
Descrizione dell'architettura...........................................................................................................................................................................................................28
Configurare il master LDAP..........................................................................................................................................................................................................28
Configurare la replica LDAP.........................................................................................................................................................................................................29
Configurare il PDC SAMBA.........................................................................................................................................................................................................30
Altre utilità LDAP..........................................................................................................................................................................................................................31
Configurare BDC SAMBA............................................................................................................................................................................................................31
Configurare i client........................................................................................................................................................................................................................33
Ulteriori risorse..............................................................................................................................................................................................................................34
AutenticazioneActiveDirectory......................................................................................................................................................................................................35
Introduzione...................................................................................................................................................................................................................................35
Account..........................................................................................................................................................................................................................................35
Testing............................................................................................................................................................................................................................................36
Autenticazione................................................................................................................................................................................................................................36
Attenzione......................................................................................................................................................................................................................................37
Testing............................................................................................................................................................................................................................................37
Orologio.........................................................................................................................................................................................................................................37
Key Table non valida......................................................................................................................................................................................................................38
Shadow password...........................................................................................................................................................................................................................38
Scambio di dominio.......................................................................................................................................................................................................................38
Ulteriori risorse..............................................................................................................................................................................................................................39
Monit..............................................................................................................................................................................................................................................40
Introduzione...................................................................................................................................................................................................................................40
Installazione...................................................................................................................................................................................................................................40
Configurazione...............................................................................................................................................................................................................................40
Avvio del servizio...........................................................................................................................................................................................................................41
Ulteriori risorse..............................................................................................................................................................................................................................41
Munin.............................................................................................................................................................................................................................................42
Introduzione...................................................................................................................................................................................................................................42
Preparativi......................................................................................................................................................................................................................................42
Installazione...................................................................................................................................................................................................................................42
Installazione sul master.............................................................................................................................................................................................................42
Installazione sugli altri host.......................................................................................................................................................................................................42
Configurazione...............................................................................................................................................................................................................................42
Configurare il master.................................................................................................................................................................................................................42
Configurare gli host...................................................................................................................................................................................................................42
Visualizzare le statische.................................................................................................................................................................................................................43
Ulteriori risorse..............................................................................................................................................................................................................................43
Nagios............................................................................................................................................................................................................................................44
Introduzione...................................................................................................................................................................................................................................44
Installazione...................................................................................................................................................................................................................................44
Configurazione...............................................................................................................................................................................................................................44
Nessus............................................................................................................................................................................................................................................46
Introduzione...................................................................................................................................................................................................................................46
Installazione...................................................................................................................................................................................................................................46
Configurazione...............................................................................................................................................................................................................................46
Ntop................................................................................................................................................................................................................................................47
Introduzione...................................................................................................................................................................................................................................47
Installazione...................................................................................................................................................................................................................................47
Configurazione...............................................................................................................................................................................................................................47
Avvio..............................................................................................................................................................................................................................................47
Ulteriori risorse..............................................................................................................................................................................................................................47
SmokePing.....................................................................................................................................................................................................................................48
Introduzione...................................................................................................................................................................................................................................48
Preparazione...................................................................................................................................................................................................................................48
Installazione...................................................................................................................................................................................................................................48
Configurazione...............................................................................................................................................................................................................................48
Messaggio di benvenuto............................................................................................................................................................................................................48
Suddivisione dei menu..............................................................................................................................................................................................................48
Monitoraggio dei servizi................................................................................................................................................................................................................49
Visualizzare il traffico di rete.........................................................................................................................................................................................................49
Ulteriori risorse..............................................................................................................................................................................................................................49
Wireshark.......................................................................................................................................................................................................................................50
Introduzione...................................................................................................................................................................................................................................50
Installazione...................................................................................................................................................................................................................................50
Configurazione...............................................................................................................................................................................................................................50
Cattura............................................................................................................................................................................................................................................50
Filtri................................................................................................................................................................................................................................................51
Creare un filtro..........................................................................................................................................................................................................................51
Protocolli supportati.......................................................................................................................................................................................................................52
Ulteriori risorse..............................................................................................................................................................................................................................52
Proxy..............................................................................................................................................................................................................................................53
Configurare un Server con Ubuntu 3

Introduzione...................................................................................................................................................................................................................................53
Prima di installare..........................................................................................................................................................................................................................53
Installazione...................................................................................................................................................................................................................................53
Configurazione...............................................................................................................................................................................................................................53
Definizione delle ACL su backend LDAP.....................................................................................................................................................................................54
Altri tipi di autorizzazione.............................................................................................................................................................................................................55
SquidGuard....................................................................................................................................................................................................................................56
Introduzione...................................................................................................................................................................................................................................56
Preparativi......................................................................................................................................................................................................................................56
Installazione...................................................................................................................................................................................................................................56
Configurazione...............................................................................................................................................................................................................................56
Configurazione di squid............................................................................................................................................................................................................56
Configurazione di squidGuard..................................................................................................................................................................................................56
Risoluzione dei problemi...............................................................................................................................................................................................................57
Problemi con squid....................................................................................................................................................................................................................57
Problemi con squidGuard..........................................................................................................................................................................................................57
Il file di configurazione non è posizionato nel giusto percorso............................................................................................................................................57
I file dei database non sono posizionati nella directory specificata......................................................................................................................................57
Il proprietario dei file di log, dei file di configurazione o dei database non è corretto........................................................................................................57
Permessi dei file sbagliati.....................................................................................................................................................................................................57
Errore di sintassi nel file di configurazione..........................................................................................................................................................................58
Ulteriori risorse..............................................................................................................................................................................................................................58
QuotaFilesystem.............................................................................................................................................................................................................................59
Introduzione...................................................................................................................................................................................................................................59
Architettura dell'esempio...............................................................................................................................................................................................................59
Implementazione del servizio di Quota..........................................................................................................................................................................................59
RadiusLDAP..................................................................................................................................................................................................................................60
Introduzione...................................................................................................................................................................................................................................60
NAS...........................................................................................................................................................................................................................................60
Autenticazione...........................................................................................................................................................................................................................60
Installazione...................................................................................................................................................................................................................................60
File e cartelle di configurazione.....................................................................................................................................................................................................60
Configurazione di un server RADIUS con backend LDAP...........................................................................................................................................................60
RadiusSQL.....................................................................................................................................................................................................................................62
Introduzione...................................................................................................................................................................................................................................62
Installazione...................................................................................................................................................................................................................................62
Configurazione...............................................................................................................................................................................................................................62
Verifica...........................................................................................................................................................................................................................................62
SAMBA..........................................................................................................................................................................................................................................63
Introduzione...................................................................................................................................................................................................................................63
Installazione...................................................................................................................................................................................................................................63
Configurazione...............................................................................................................................................................................................................................63
Sezione global...........................................................................................................................................................................................................................63
Montare condivisione.....................................................................................................................................................................................................................63
Condivisioni dei dispositivi............................................................................................................................................................................................................63
Condividere cartella...................................................................................................................................................................................................................63
Condivisione Home...................................................................................................................................................................................................................63
Condivisione stampante tramite samba.....................................................................................................................................................................................64
Condividere Dispositivi di lettura.............................................................................................................................................................................................64
Autenticazione................................................................................................................................................................................................................................64
Gestione utenti samba................................................................................................................................................................................................................64
Gestione client................................................................................................................................................................................................................................64
Connessione al server................................................................................................................................................................................................................64
Log di samba..................................................................................................................................................................................................................................64
Interfaccia web...............................................................................................................................................................................................................................64
Ulteriori risorse..............................................................................................................................................................................................................................65
WEB...............................................................................................................................................................................................................................................66
Introduzione...................................................................................................................................................................................................................................66
Installazione...................................................................................................................................................................................................................................66
Configurazione e opzioni globali...................................................................................................................................................................................................66
Personalizzare il proprio sito..........................................................................................................................................................................................................67
Autorizzazione basata sull'Host.................................................................................................................................................................................................68
Autorizzazione basata sull'Utente.............................................................................................................................................................................................68
Hosting virtuale.........................................................................................................................................................................................................................69
Host based VH......................................................................................................................................................................................................................69
Name based VH....................................................................................................................................................................................................................69
Esecuzione di N istanze su singolo host...............................................................................................................................................................................69
Configurazione di un server Web protetto con OpenSSL..............................................................................................................................................................70
Supporto PHP.................................................................................................................................................................................................................................70
Controllo dei file di log..................................................................................................................................................................................................................70
ApacheTomcat................................................................................................................................................................................................................................71
Introduzione...................................................................................................................................................................................................................................71
Tomcat 6.........................................................................................................................................................................................................................................71
Installazione...............................................................................................................................................................................................................................71
Apache e Tomcat............................................................................................................................................................................................................................72
Installazione del jk connector....................................................................................................................................................................................................72
Configurare un Server con Ubuntu 4

Osservazioni e approfondimenti....................................................................................................................................................................................................72
Connector: aggiungere altre directory web...............................................................................................................................................................................72
Amministrare Tomcat................................................................................................................................................................................................................73
Tomcat 5.x.................................................................................................................................................................................................................................73
Java JRE e JDK 1.6...................................................................................................................................................................................................................73
Installazione del pacchetto Ubuntu................................................................................................................................................................................................73
Ulteriori risorse..............................................................................................................................................................................................................................74
Xampp............................................................................................................................................................................................................................................75
Introduzione...................................................................................................................................................................................................................................75
Installazione...................................................................................................................................................................................................................................75
Avvio del programma.....................................................................................................................................................................................................................75
Verificare il funzionamento............................................................................................................................................................................................................75
Sicurezza........................................................................................................................................................................................................................................75
Supporto per PHP...........................................................................................................................................................................................................................75
Riepilogo comandi ed altre utilità..................................................................................................................................................................................................76
Cartelle da ricordare.......................................................................................................................................................................................................................76
Arrestare il servizio........................................................................................................................................................................................................................76
Disinstallazione..............................................................................................................................................................................................................................76
Risoluzione dei problemi...............................................................................................................................................................................................................76
Problemi all'avvio......................................................................................................................................................................................................................76
Ulteriori risorse..............................................................................................................................................................................................................................77
Mail................................................................................................................................................................................................................................................78
Introduzione...................................................................................................................................................................................................................................78
Installazione...................................................................................................................................................................................................................................78
Configurazione...............................................................................................................................................................................................................................78
Mail transfer agent.....................................................................................................................................................................................................................78
DA.............................................................................................................................................................................................................................................79
Web mail....................................................................................................................................................................................................................................79
MailScanner...............................................................................................................................................................................................................................80
Migliorare le prestazioni................................................................................................................................................................................................................80
Sicurezza dei protocolli di posta....................................................................................................................................................................................................81
Protezione di messaggi con GPG...................................................................................................................................................................................................81
Ulteriori risorse..............................................................................................................................................................................................................................82
MailSqlServer................................................................................................................................................................................................................................83
Introduzione...................................................................................................................................................................................................................................83
Installazione...................................................................................................................................................................................................................................83
Configurazione SMTP...................................................................................................................................................................................................................83
Configurazione di POP3 e IMAP...................................................................................................................................................................................................83
Webmail protetta con SSL..............................................................................................................................................................................................................84
Qmail..............................................................................................................................................................................................................................................85
Introduzione...................................................................................................................................................................................................................................85
Installazione...................................................................................................................................................................................................................................85
Configurazione...............................................................................................................................................................................................................................85
Migrazione da un MTA esistente...................................................................................................................................................................................................86
Stampa............................................................................................................................................................................................................................................87
Introduzione...................................................................................................................................................................................................................................87
Accedere all'interfaccia web..........................................................................................................................................................................................................87
Configurazione...............................................................................................................................................................................................................................87
Accedere alla configurazione....................................................................................................................................................................................................87
Abilitare la gestione da remoto..................................................................................................................................................................................................87
Connessioni sicure.....................................................................................................................................................................................................................87
Aggiungere una stampante.............................................................................................................................................................................................................87
Ricerca dei driver......................................................................................................................................................................................................................87
PDF Virtuale..............................................................................................................................................................................................................................88
Gestione della stampante................................................................................................................................................................................................................88
Condividere una stampante............................................................................................................................................................................................................88
Utilizzo stampante condivisa dal server tramite client Windows 2000/XP..............................................................................................................................88
Classi..............................................................................................................................................................................................................................................88
Log di CUPS..................................................................................................................................................................................................................................88
Ulteriori risorse..............................................................................................................................................................................................................................88
Irc...................................................................................................................................................................................................................................................89
Introduzione...................................................................................................................................................................................................................................89
Software per creare un server Irc...................................................................................................................................................................................................89
Installazione (ircd-hybrid)..............................................................................................................................................................................................................89
Come installare un pacchetto "Services"? (Utilizzerò come esempio i services epona)...............................................................................................................90
Ulteriori risorse..............................................................................................................................................................................................................................90
ServerPeerToPeer...........................................................................................................................................................................................................................91
Introduzione...................................................................................................................................................................................................................................91
Preparativi......................................................................................................................................................................................................................................91
Preparare la macchina................................................................................................................................................................................................................91
Installazione del sistema operativo............................................................................................................................................................................................91
Installazione...................................................................................................................................................................................................................................91
Installazione di Wine, Samba e OpenSSH................................................................................................................................................................................91
Installazione di eMule...............................................................................................................................................................................................................91
Configurazione...............................................................................................................................................................................................................................91
Configurazione di firewall e router...........................................................................................................................................................................................91
Configurare un Server con Ubuntu 5

Configurazione di Samba..........................................................................................................................................................................................................91
Configurazione di eMule...........................................................................................................................................................................................................92
Accedere al server..........................................................................................................................................................................................................................92
Risoluzione dei problemi...............................................................................................................................................................................................................92
Blocco prima della schermata di avvio.....................................................................................................................................................................................92
Il webadmin di eMule non funziona..........................................................................................................................................................................................92
Impossibile accedere ad eMule tramite ssh...............................................................................................................................................................................92
Ulteriori risorse..............................................................................................................................................................................................................................92
Configurare un Server con Ubuntu 6

MySql
Introduzione
MySql è il più diffuso database Open Source basato sul linguaggio SQL. Questo prodotto viene fornito dall'azienda MySQL AB che eroga servizi basati
sullo stesso MySql.
Un database è un insieme strutturato di dati, dalla lista della spesa, all'elenco dei titoli presenti in una grossa libreria. MySql si occupa della strutturazione e
della gestione a basso livello dei dati stessi, in modo da velocizzarne l'accesso, la modifica e l'inserimento di nuovi elementi. L'acronimo RDBMS significa
"Relational Data-Base Management System" e sta ad indicare che MySql offre la possibilità di conservare i dati non in un enorme store-room ma in diverse
tabelle, in modo di velocizzarne l'accesso. L'acronimo SQL significa Structured Query Language ed indica il linguaggio standard per le interrogazione delle
basi di dati.
La presente guida spiega l'uso delle funzioni principali di MySql. Alla fine di questo documento è possibile trovare i riferimenti alla documentazione
ufficiale e ad alcune delle guide presenti in rete.

Installazione
Per installare MySql è necessario installare i pacchetti mysql-server e mysql-admin, reperibili dai repository ufficiali.
Una volta installati i sopra citati pacchetti è probabile che, al primo avvio, si presentino dei problemi durante l'autenticazione da amministratore. Consultare
questa guida per avere maggiori informazioni su come impostare una password di amministrazione.

Configurazione
Aprire il file /etc/mysql/my.cnf con un editor di testo, dunque cercare al suo interno una riga simile alla seguente:
bind_address = 192.168.1.1

All'indirizzo 192.168.1.1 va sostituito l'indirizzo del computer dove risiede il server.

Gestione degli utenti


Impostare una password di amministrazione
Ad installazione ultimata, l'utente root potrà accedere senza password: sarà dunque necessario assegnargliene una quanto prima.
Per impostare la password di amministrazione è sufficiente lanciare il seguente comando:
mysqladmin -u root password pwd

La dicitura «pwd» va sostituita con la password desiderata.

Connessione al database
Digitare il seguente comando in una finestra di terminale:
mysql -h indirizzo_host -u nome_utente -p

Le diciture «indirizzo_host» e «nome_utente» vanno sostituite, rispettivamente, con l'IP del computer sul quale risiede il server MySql e con il proprio nome
utente per l'accesso.
Verrà chiesta la password relativa all'utente inserito, dovrebbe apparire un messaggio simile al seguente:
Enter password:

Una volta inserita correttamente la password, il client restituirà un output simile al seguente:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 5.0.22-Debian_0ubuntu6.06-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Da questo momento la connessione è stabilita e sarà dunque possibile digitare comandi da inviare al server.

Creare un nuovo utente


Il comando GRANT permette allo stesso tempo di creare un utente e di assegnargli dei permessi specifici:
GRANT <istruzioni_consentite>
ON <database>.<tabella>
TO <utente>
IDENTIFIED BY <password>;

La sintassi proposta di seguito è molto semplice:


Configurare un Server con Ubuntu 7

• istruzioni_consentite Contiene una lista di istruzioni di SQL che si vogliono permettere all'utente (CREATE, SELECT, UPDATE, DELETE,
ALTER, EXECUTE, ecc..). Se si desidera dare all'utente permessi completi si può utilizzare la parola chiave ALL.
• database Il database al quale applicare le modifiche.
• tabella Il nome della tabella alla quale applicare le modifiche. Se si desidera applicare le modifiche a tutte le tabelle del database in questione è utile
usare il carattere asterisco *.
• utente L'utente da creare.
• password Assegna una password al nuovo utente.
Ad esempio, è possibile consentire all'utente «tizio» di eseguire interrogazioni SELECT, aggiornamenti UPDATE, eliminazioni DELETE sul database
«miodatabase», digitando il seguente comando:
GRANT SELECT,UPDATE,DELETE ON miodatabase.* TO tizio@localhost IDENTIFIED BY 'miapasswd';

È stato concessa all'utente «tizio» la possibilità di agire sul database collegandosi dalla macchina locale dove risiede il server.
L'istruzione REVOKE svolge la funzione opposta a GRANT, serve, cioè, a revocare i permessi. La sintassi è molto simile a quella dell'istruzione GRANT:
REVOKE <istruzioni_revocate> ON <database>.<tabella> FROM <utente>;

Operazioni di backup
Per effettuare dei backup dei database gestiti da MySql consultare questa guida.

Ulteriori risorse
• Sito ufficiale del progetto
• Piccola guida a MySql
• Tutorial per MySql
• Piccola guida al linguaggio SQL
Configurare un Server con Ubuntu 8

BackupDatabase
Introduzione
Questa guida spiega come automatizzare il backup dei database MySql attraverso un apposito script che crea ed archivia i backup.

Descrizione
Lo script effettua giornalmente tramite cron il backup di tutti i databases recuperando automaticamente l'elenco.
Inizialmente viene costruito il nome del set di backup da creare utilizzando l'output del comando date.
Dopo l'eventuale rimozione di un backup temporaneo precedente ottengo l'elenco dei databases tramite mysqlshow redirezionando l'output sul file EL_DBS
dopo l'applicazione di una serie di filtri: head, tail e tr.
Effettuo il conteggio del numero di database e con un ciclo faccio il dump tramite mysqldump.
Al termine i backup sono raggruppati (tar) e compressi (gzip).

Installazione
Per il funzionamento è necessario creare la struttura delle directory di backup.
Si può, ad esempio, utilizzare la directory /var/backup che contiene due sottodirectory /var/backup/stored e /var/backup/temp, ma il tutto
è configurabile nello script.
Creare le directory per archiviare i backup. A titolo di esempio:
sudo mkdir /var/backup
sudo mkdir /var/backup/temp
sudo mkdir /var/backup/stored

Creare lo script myback ed inserirlo nella directory /etc/cron.daily.


Ricordarsi di modificare MY_USR e MY_PWD.
Impostare i permessi dello script:
sudo chmod 755 myback

Script
Lo script è il seguente:
#!/bin/bash
# Created by Beniamino Caputo
#
# Definizione Variabili
#
MY_DIR= # Directory Binari MySQL se non sono in PATH

MY_HST=localhost # Host del MySql server

MY_USR=root_mysql # User di MySql

MY_PWD=password_root_mysql # Password di accesso

EL_DBS=/var/backup/temp/elencodb # File Elenco Databases nel Backup

BK_DIR=/var/backup/temp # Directory Backup

BK_NAM=/var/backup/stored/backup-$(date +%d-%m-%Y) # Nome del Backup (costruita automaticamente con la data)

#
# Elimino Eventuali Backup Temporanei Presenti
#

rm -f ${BK_DIR}/*

#
# Creazione Elenco Databases
#

${MY_DIR}mysqlshow --host=$MY_HST --user=$MY_USR --password=$MY_PWD | head -n -1 | tail -n +4 | tr -d " |" > $EL_DBS

#
# Conteggio Numero di Databases
#

ndb=$(wc -l < "$EL_DBS")

#
# Ciclo Dump dei Databases
#
Configurare un Server con Ubuntu 9

for db in `seq $ndb`

do

read db

${MY_DIR}mysqldump --host=$MY_HST --user=$MY_USR --password=$MY_PWD --databases $db > $BK_DIR/$db

done <"$EL_DBS"

#
# Creazione File TAR
#

tar -cf $BK_NAM.tar $BK_DIR

#
# Compressione File Tar
#

gzip -f $BK_NAM.tar

#
# Elimino Eventuali Backup Temporanei Presenti
#

rm -f ${BK_DIR}/*

exit 0

Configurazione
In testa ci sono alcune variabili per eventuale configurazione:
• MY_DIR: directory contenente i binari di MySql. In Ubuntu non è necessaria in quanto presente in PATH}. Nel caso di installazione manuale si può
inserirla, avendo l'accortezza di terminarla con /. Esempio: MY_DIR=/path/binari/mysql/.
• MY_HST: l'hostname della macchina, potrebbe essere sufficiente localhost.
• MY_USR: l'utente del server MySql.
• MY_PWD: la password dell'utente MySql.
• EL_DBS: nome del file che conterrà l'elenco dei database.
• BK_DIR: la directory temporanea per il dump dei database.
• BK_NAM: nome del file di backup.
Configurare un Server con Ubuntu 10

DbDesigner
Introduzione
DBDesigner è uno strumento per la progettazione di database. Questa guida spiega come installarlo su Ubuntu 6.10 «Edgy Eft».

Installazione
DBDesigner nativo per Linux
1. Scaricare da questa pagina il pacchetto in formato .rpm e le relative librerie.
2. Convertire i pacchetti .rpm in formato .deb con il programma alien, digitando in un terminale:
sudo alien DBDesigner4-0.5.4-0.i586.rpm
sudo alien libborqt-6.9.0-2.i386.rpm

3. Installare i pacchetti .deb digitando in una finestra di terminale i seguenti comandi:


sudo dpkg -i dbdesigner4_0.5.4-1_i386.deb
sudo dpkg -i libborqt_6.9.0-3_i386.deb

DBDesigner emulato con Wine


Per procedere con la seguente guida è necessario avere installato correttamente Wine, l'emulatore di ambiente Windows. Per maggiori
informazioni consultare la relativa guida.
1. Scaricare l'eseguibile presente in questo indirizzo e salvarlo nella propria directory Home.
2. Per avviare il programma di installazione è sufficiente digitare in un terminale il seguente comando:
wine ~/DBDesigner4.0.5.6_Setup.exe

3. Avviare l'applicazione appena installata, spostarsi nella cartella ~/.wine/drive_c/Programmi/fabFORCE, digitando in un terminale:
cd ~/.wine/drive_c/Programmi/fabFORCE

4. Lanciare il programma con il comando:


wine DBDesigner4.exe

Ulteriori risorse
• Forum di Ubuntu-it Topic di riferimento sul forum di Ubuntu-it.
• DBDesigner on Ubuntu Guida all'installazione di DBDesigner su Ubuntu (en).
• Installer DBDesigner4 sur Ubuntu Edgy Guida a DBDesigner su Ubuntu (fr).
• DBDesigner on Debian Guida all'installazione di DBDesigner su Debian (en).
• Guida a DBDesigner su Debian Sarge Guida all'installazione di DBDesigner su Sarge (es).
Configurare un Server con Ubuntu 11

Oracle
Introduzione
In questa guida viene illustrata l'installazione del database relazionale Oracle 10g.

Preparativi
Una volta abilitati i componenti universe e multiverse dei repositoy ufficiali, aprire il file /etc/apt/sources.list con un editor di testo con i
privilegi di amministrazione e aggiungere in fondo al file la seguente riga:
deb http://oss.oracle.com/debian unstable main non-free

Per scaricare la chiave gpg, necessaria all'utentcazione dei pacchetti, è sufficiente digitare il seguente comando in una finestra di terminale:
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -

Salvare il file, aprire una finestra di terminale e digitare il seguente comando:


sudo apt-get update

Installazione del pacchetto


Installare il pacchetto oracle-xe.

Configurazione
Per configurare il DBMS è sufficiente digitare il seguente comando in una finestra di terminale:
sudo etc/init.d/oracle-xe configure

Nella configurazione saranno richieste le porte di ascolto del server (quelle predefinite sono 8080 e 1521) e la password per l'utente system.
Inoltre verrà chiesto se si desidera avviare il server automaticamente all'avvio del sistema. Infine verrà creato l'utente oracle appartenente al gruppo dba, al
quale verranno dati i privilegi di gestione del DBMS.
Per verificare lo stato del DBMS è sufficiente digitare il seguente comando in una finestra di terminale:
sudo /etc/init.d/oracle-xe status

Amministrazione
Aprire il browser web e digitare il seguente indirizzo nella relativa barra:
http://127.0.0.1:8080/apex

Ulteriori risorse
• Sito ufficiale del progetto
• Driver JDBC per Java
Configurare un Server con Ubuntu 12

DNS
Introduzione
Questa guida spiega come configurare un server DNS.
Prima di cominciare vale la pena di spendere due parole sui requisiti di un server Web.
Tenete conto che probabilmente vi servirà hardware dedicato, se possibile scegliete una soluzione appositamente progettata per il servizio che dovrete
ospitare.
Prendetevi il tempo necessario per pianificare un corretto partizionamento del disco.
Possibilmente dedicate una partizione apposita per /var/log ed una specifica per /var/cache/bind.

Risoluzione locale su UNIX


La Risoluzione dei nomi hosts viene generalmente affidata al file locale presente su ciascuna macchina, il file /etc/hosts. Questo file contiene il
puntamento diretto delle macchine della rete.
• Vantaggi: risoluzione immediata perché tutti gli hosts di una rete devono possedere lo stesso file /etc/hosts per comunicare.
• Svantaggi: vulnerabilità perché se un host viene attaccato e viene violato il file /etc/hosts l'aggressore conoscerà tutte le macchine della rete.

Che cos'è e a che cosa serve il DNS


In una rete di computer ciascun nodo viene localizzato utilizzando il suo indirizzo IP, che è un numero formato da quattro ottetti separati da punti (ad
esempio, 192.168.20.1).
Tale sistema di localizzazione non è conveniente per le persone, in quanto è molto più facile ricordare un nome piuttosto che un complicato numero formato
dai quattro ottetti come indicato sopra.
A tal proposito è stato introdotto un servizio di nominazione dei nodi di una rete, servizio che consente di raggiungere un nodo conoscendone il nome.
Tale servizio tuttavia comporta la necessità di centralizzare il controllo dei nomi dei nodi di un sottoalbero di una rete su un singolo host (il nodo radice di
quel sottoalbero).
Questo nodo radice contiene i nomi e gli indirizzi IP di tutti i nodi presenti nel sottoalbero e viene chiamato server dei nomi o DNS.
Naturalmente ogni nodo radice di un dato sottoalbero deve contenere un riferimento al nodo radice dell'intero albero della rete (il sevrer dei nomi globale), e
questi conterrà gli indirizzi ed i nomi di tutti questi sottonodi radice dei vari sottoalberi.
Tutti i client (nodi di un sottoalbero) conterranno a loro volta l'indirizzo della radice (server DNS) del proprio sottoalbero di appartenenza.
In questo schema c'è anche posto per una configurazione ridondante, ovvero accanto al server DNS padre di un dato sottoalbero possono essere affiancati
altri servers DNS in grado di supportare le richieste di risoluzione dei nomi provenienti dai clients nel caso in cui il DNS master (cioè il primario) non possa
rispondere.
Tale configurazione prende il nome di fault tolerance, poichè l'intero servizio di risoluzione dei nomi non viene inficiato in caso di guasto di una delle
macchine.

Installazione
Installare il software necessario per configurare i servizi DNS:
apt-get -y install bind9

Directory di configurazione
Come visto per il server Web la directory che contiene i file di configurazione del DNS è sotto la directory /etc e precisamente /etc/bind.
Sempre sotto /etc/bind si trovano tutti i file contenenti sia le zone di ricerca dirette ed inverse (ossia quelle che includono le corrispondenze fra indirizzi
IP e nomi e fra nomi ed indirizzi IP) sia quelli relativi alle opzioni di configurazione del servizio stesso.
Tali opzioni sono specificate:
• nel file /etc/bind/named.conf che contiene le direttive di configurazione generali del servizio:
• nel file /etc/bind/named.conf.options che contiene le opzioni e le liste di controllo degli accessi per la configurazione generali del
servizio;
• nel file /etc/bind/named.conf.local che contiene le direttive di configurazione locali del servizio,ovvero la dichiarazione delle vostre zone
locali (quelle servite dal vostro DNS).
Notare che su Ubuntu i file di zona hanno le forme seguenti:
/etc/bind/db.<dir_zone>
/etc/bind/db.<rev_zone>

I file binari relativi al servizio DNS si trovano sotto la directory /usr/sbin ed è precisamente /usr/sbin/named.
La directory che contiene i log files relativi al servizio è /var/log. In particolare, qualsiasi problema durante l'avvio viene notificato nel file /var/log/
syslog.
Configurare un Server con Ubuntu 13

Caching Nameserver e DNS autoritario


Prima di configurare il nostro DNS occorre precisare che vi sono 2 tipi di DNS :
• caching
• autoritario
Un nameserver caching non contiene file di zona (corrispondenze fra indirizzi IP e nomi hosts) , ma contiene soltanto i riferimenti ai DNS padre dell'albero e
pertanto delega ad essi qualsiasi risoluzione dei nomi , memorizzando nella propria memoria cache i risultati di tali ricerche in modo da velocizzare tutti gli
accessi susseguenti al primo (che avvengono interrogando la memoria cache del server locale e non interrogando i root nameservers).
Un nameserver autoritario contiene le corrispondenze fra indirizzi IP e nomi hosts di tutti i clients della rete che serve , pertanto ha autorità di risoluzione
diretta (non deve chiedere ad altri DNS quali sono i nomi o gli indirizzi dei computers).

Configurazione di un caching
Se volete soltanto snellire e velocizzare gli accessi ad Internet degli utenti della vostra LAN quello che vi occorre è un semplice caching nameserver.
• Dopo aver installato il pacchetto bind9 basta semplicemente avviare il servizio immettendo al prompt dei comandi:
/etc/init.d/bind9 start

• Se volete farlo partire in avvio create un link in /etc/rc2.d che punta alla directory /etc/init.d/bind9 eseguendo il comando:
ln -s /etc/init.d/bind9 /etc/rc2.d/bind9

(questo se il vostro runlevel di default è il 2).

Configurazione di un DNS autoritario


Se invece volete configurare un server DNS che possa supportare la risoluzione dei nomi dei clients della vostra LAN dovete innanzitutto pianificare
l'intervento nel modo seguente:
• localizzare tutti i clients
• ottenere network e netmask
Dopo l'installazione di bind9 occorre modificare il file /etc/bind/named.conf.local aggiungendo le direttive di configiurazione delle vostre zone
di ricerca diretta ed inversa come segue:
Zone "<nomezona>" {

type [hint | master | slave];

file "<path_to_zone_file>";

forwarders { };

masters { };

allow-update {key <keyname>;};

};

La configurazione della zona di ricerca inversa di esempio è la seguente:


Zone "<nomezona>.in-addr.arpa" {

type [hint | master | slave];

file "<path_to_zone_file>";

forwarders { };

masters { };

allow-update {key <keyname>;};

};

La direttiva type indica il tipo di DNS server che si sta configurando (master , slave o root NS).
La direttiva file indica in quale file è memorizzato il DB delle corrispondenze nome-indirzzo degli hosts della rete.
La direttiva forwarders indica se il vostro server DNS deve utilizzare un sevrer esterno per risolvere ricorsivamente le richieste di risoluzione DNS. Un
forwarder altro non è che un grande caching namserver che si fa interamente carico della risoluzione di tutte le queries DNS dirette verso l'esterno. In
un'azienda il forwarder generalmente viene usato per velocizzare le risoluzioni DNS di siti Internet.
La configurazione di un server slave (fault tolerance) prevede sempre la creazione delle direttive di zona nel file /etc/bind/named.conf.local
come nell'esempio seguente:
zone "linux.bogus" {

type slave;

file "sz/linux.bogus";

masters { 192.168.196.2; };
Configurare un Server con Ubuntu 14

};

Come vedete la direttiva masters contiene l'indirizzo IP del DNS master che possiede il DB con le corrispondenze fra IP e nomi hosts.
E' importante notare che mentre sul master tale database deve essere creato,ciò non deve essere fatto sullo slave, i cui file vengono automaticamente creati
durante la sincronizzazione con il DNS master.

Architettura di esempio
Il sistema descritto è costituito da:
DNS master
DNS slave

questo permette una configurazione di fault tolerance (il servizio è erogato anche quando uno dei 2 servers ha problemi).
Inoltre il trasferimento da zona master a slave avviene con il metodo della firma TSIG.

Configurazione del DNS master e dei suoi file di zona


Il file /etc/bind/named.conf.local:
include "/etc/bind/secret.key"
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer {key mykey;};
allow-update {key mykey;};
};
zone "77.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.77.168.192";
allow-transfer {key mykey;};
allow-update {key mykey;};
};

Il file /etc/bind/secret.key:
key chiave {
secret "Np6emc4SFPeI5UXSetOEIA==";
algorithm "hmac-md5";
};
server 192.168.77.2 {
keys {chiave;};
};

Il file secret.key non dovrebbe essere leggibile da tutti, pertanto assivuratevi che i suoi permessi siano -rw-r----- eseguendo il comando
chmod 640 /etc/bind/secret.key.
Veniamo ora alla configurazione dei singoli file di zona di ricerca diretta ed inversa :
@ IN SOA wilcoyote.example.com. root.localhost. (

2005112001

86400

207800

809650

86400

);

@ IN NS nome.dominio.com.

@ IN MX 50 nome.dominio.com.

nome.dominio.com. IN A 192.168.0.1

web IN CNAME nome.dominio.com

mail IN CNAME nome.dominio.com

proxy IN CNAME nome.dominio.com

Commentiamo le righe precedenti :


• il simbolo @ è un alias per il nome del dominio DNS di questa zona di ricerca
• la direttiva IN sta per Internet , e potrebbe essere omessa per una LAN (ma non nel caso di un server pubblico)
• la prima riga dice che tutte le richieste di risoluzione dei nomi che riguardano la zona indicata da questo file (ed il cui nome è scritto nel file
/etc/bind/named.conf.local) devono essere risolte dal server nome.dominio.com. Il . alla fine del nome completo è fondamentale, quindi
non lo dimenticate!! L'indirizzo email dell'amministratore di tale zona è root@localhost (in questo caso il . finale viene autmaticamente tradotto nel
simbolo @)-
• I parametri specificati dopo la parentesi tonda sono nell'ordine :
Configurare un Server con Ubuntu 15

• Serial: ID della zona (gli aggiornamenti di refresh tra DNS slave e DNS master avvengono soltanto se il seriale della zona sullo slave e
diverso dal precedente valore con cui lo slave si era aggiornato!!)
• Refresh Time: Tempo trascorso il quale un DNS slave aggiorna i record di una data zona con DNS master
• Retry: Indica il tempo dopo il quale viene ritentato il trasferimento di zona se il DNS master non è al momento disponibile
• Expire: Se il DNS slave non riesce a mettersi in contatto con il master per il tempo indicato dal valore Expire, la zona scade e deve essere
rinnovata
• TTL: Tempo per il quale i dati restano nella cache di un DNS (/var/cache/bind) prima che avvenga un nuovo aggiornamento. Il TTL indica il
tempo di propagazione minimo dell'informazione fra record di zona (intervallo fra trasferimenti di zona e reloading)
• la seconda riga dice che il server dei nomi autoritario per questa zona è nome.dominio.com (il tipo di record è NS)
• @ IN MX 50 nome.dominio.com.: per questo dominio il server di posta con priorità 50 è wilcoyote.example.com. La priorità è
inversamente proporzionale al numero indicato (i valori possibili sono da 1 a 100, 1 massima 100 minima)
• nome.dominio.com. IN A 192.168.0.1: dice che nome.dominio.com ha l'indirizzo 192.168.0.1 (A sta per address)
• web IN CNAME nome.dominio.com: questa riga dice che il nome web è un alias per nome.dominio.com, ovvero che
nome.dominio.com può anche essere raggiunto richiedendo il nome web
Veniamo alla zona di ricerca inversa /etc/bind/db.0.168.192:
@ IN SOA nome.dominio.com. root.localhost. (

2005112001

86400

207800

809650

86400

);

@ IN NS nome.dominio.com.

1 IN PTR nome.dominio.com.

Il significato delle righe elencate è analogo al precedente caso della zona di ricerca diretta, tranne che per la seguente riga :
• 1 IN PTR nome.dominio.com.: dice che l'host nome.dominio.com ha l'indirizzo 192.168.0.1 (come si osserva i primi 3 ottetti sono omessi e
viene specificato soltanto l'ultimo ottetto , quello che differenzia fra loro tutti gli hosts della subnet 192.168.0.0/24)
Prima di proseguire nella sezione configurazioni avanzate occorre ricordare che quando si modifica un file di zona sul master bisogna sempre
incrementare il numero seriale (SERIAL) affinchè nella successiva sincronizzazione lo slave possa rilevare la variazione del DB e le
informazioni possano essere aggiornate. Ricordatelo bene, altrimenti vi potreste trovare con dei record aggiornati su un server e non su altri, con
risultati totalmente imprevedibili...

Configurazione del DNS slave


Il file /etc/bind/named.conf.local:
include "/etc/bind/secret.key"
zone "example.com" {
type slave;
file "/etc/bind/db.example.com";
masters {192.168.77.1;};
};
zone "77.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/db.77.168.192";
masters {192.168.77.1;};
};

Il file /etc/bind/secret.key:
key chiave {
secret "Np6emc4SFPeI5UXSetOEIA==";
algorithm "hmac-md5";
};
server 192.168.77.1 {
keys {chiave;};
};

Come vedete qui non dobbiamo creare i database delle zone di ricerca, in quanto verranno automaticamente create al momento della sincronizzazione fra
master e slave.
Il file secret.key non dovrebbe essere leggibile da tutti, pertanto assivuratevi che i suoi permessi siano -rw-r----- eseguendo il comando
chmod 640 /etc/bind/secret.key.

Direttive di configurazione avanzate - ACL


Oltre alla firma TSIG , BIND possiede altre speciali direttive che permettono di controllare chi può effettuare richieste di risoluzione di nomi o indirizzi
(queries) verso il nostro DNS e chi può effettuare trasferimenti di intere zone.
Configurare un Server con Ubuntu 16

Le direttive sono le seguenti:


• acl miarete {192.168.20.0/24;};

• acl slave_miarete {192.168.20.102};

Come vedete queste due direttive specificano due liste di controllo degli accessi in base alla subnet di appartenenza di un host. Pertanto il controllo accessi
supportato nativamente da BIND è host-based.
A questo punto occorre specificare il tipo di azione che il vostro DNS può fare in relazione alle ACL così definite.
In genere l'azione è sempre positiva , nel senso che si specifica sempre a quale ACL definita è permesso compiere determinate operazioni sul DNS (direttiva
allow).
Questo viene fatto attraverso le direttive specificate nel file /etc/bind/named.conf.local nel modo seguente:
• allow-query {miarete;};

questa dice al DNS di accettare le richieste di risoluzione dei nomi provenienti dai clients della rete 192.168.20.0/24
• allow-transfer {slave_miarete;};

questa dice al DNS master di permettere il trasferimento di un file di zona soltanto all'host con indirizzo IP 192.168.20.102
Come avrete già notato il file di configurazione standard del DNS /etc/bind/named.conf supporta le direttive di inclusione dei file, pertanto potrete
anche creare le vostre personalizzate ACL ed includerle poi successivamente in questo file, oppure crearle direttamente in
/etc/bind/named.conf.local per renderle relative soltanto alle zone da voi create.

Trasferimenti di zona, aggiornamenti di record e sicurezza


Come avrete notato il protocollo DNS non è intrinsecamente sicuro nè progettato per la sicurezza.
Un client malintenzionato può facilmente ottenere le informazioni riguardo all'architettura della vostra rete ed alle macchine che ne fanno parte.
Per ovviare a questo particolare è stato introdotto il supporto per gli aggiornamenti di record ed i trasferimenti di zone utilizzando sia la firma digitale TSIG
che la crittografia a chiave pubblica.
Il supporto per la firma digitale TSIG è possibile usando il comando:
dnssec-keygen -a <algoritmo> -b <numero di bits delle chiavi> -n HOST <nome della zona>

questo comando genera una coppia di chiavi privata/publica che voi dovrete associare alla vostra zona per garantire una comunicazione protetta con i clients
e con lo(gli) slave server. In particolare per garantire un aggiornamento sicuro usando il meccanismo a chiave privata il contenuto del file con estensione
.private dovrebbe essere condiviso sia dal msater che dagli slave servers , in modo che il riconoscimento sia univoco ed esente da errori.
Spostatevi sul DNS master ed eseguite il comando:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST example.com

ora digitate il comando :


echo secret `grep Key *.private | awk {'print $2'}`; >> /etc/bind/named.conf.local

questo comando copierà il valore della chiave privata in coda al file /etc/bind/named.conf.local.
A questo punto editate il file /etc/bind/named.conf.local aggiungendo all'interno delle vostre zone le righe seguenti:
key mykey {

secret "valore della chiave appena copiato";

algorithm hmac-md5;

};

zone "vostrazona" {

type master | slave;

file "path_to_file";

allow-update {key mykey};

};

e questo va fatto per entrambe le zone di ricerca , sia diretta che inversa e sia sul master che sullo slave.
A questo punto basta riavviare e forzare una sincronizzaizone del DB per vedere se tutto va bene.
Questo è il metodo che usa una chiave privata.

DNS e crittografia a chiave pubblica


In questo paragrafo introduciamo l'uso della crittografia a chiave pubblica nella struttura ad albero del DNS allo scopo di garantire integrità e autenticità
delle risposte alle queries e nei trasferimenti di zona.
Come noto la crittografia a chiave pubblica è il metodo più sicuro per la convalida di dati sensibili.
Per ciò che riguarda il DNS tali dati sono tutti quelli contenuti nei file delle zone di ricerca.
Configurare un Server con Ubuntu 17

Questi dati possono essere protetti associando ad ogni dominio diretto ed inverso una coppia di chiavi privata/pubblica che li identifica univocamente.
Il server DNS deve prima generare la coppia di chiavi privata/pubblica. Poi deve generare una richiesta di firma della propria chiave pubblica da inviare al
DNS del dominio padre (per esempio se il dominio è italia.com il DNS deve inviare una richiesta di firma della chiave pubblica da lui generata al DNS
del dominio padre com). In questo modo il DNS padre può autenticare la chiave pubblica del DNS figlio con la sua firma.
Infine ricevuta la sua chiave pubblica controfirmata dal padre il DNS figlio può firmare finalmente i propri file di zona con la sua chiave privata.
Come osserviamo la crittografia a chiave pubblica garantisce pertanto che le risposte del DNS siano autenticate (appunto attraverso l'utilizzo delle chiavi),
ovvero che i record provengano effettivamente da DNS di identità comprovata.
L'implementazione di questo metodo di protezione delle zone in UNIX è realizzata da DNSSEC.
Ovviamente tutto il sistema si fonda su una trusted-chain (ovvero catena di validazioni), per cui quando il client DNS del dominio italia.edu effettua una
query per l'individuazione del record A dell' host pippo esso riceve la risposta dal server DNS del dominio italia.edu e può essere confidente che tale
risposta sia quella corretta (la zona è firmata dal server DNS del dominio italia.edu e la chiave usata per la firma è autenticata dal DNS del dominio padre
edu).
L'implementazione di DNSSEC su UNIX possiede anche alcune features che vanno al di là dello standard DNSSSEC.
Vediamo ora attraverso un esempio qual è il procedimento da seguire per realizzare DNSSEC su un server DNS Ubuntu.

Architettura dell'esempio
Il nostro sistema è configurato come segue:
DNS master (hostname '''eolo''') che gestisce il dominio '''roma.com'''

Per generare la coppia di chiavi usiamo il comando


dnssec-keygen -a DSA -b 768 -n ZONE roma.com

dove le opzioni hanno i seguenti significati :


• -a DSA specifica il tipo di algoritmo utilizzato (RSA,DSA)
• -b 768 indica il numero di bits della chiave
• -n ZONE indica che le chiavi generate saranno utilizzate per firmare file di zona
• roma.com è il nome del dominio
Ora per creare la richiesta di firma da inviare al dominio padre com usiamo il comando
#dnssec-makekeyset -t 86400 Kroma.com.+003+14481

Questo comando produce il file di output keyset-roma.com..


Ora inviamo il nostro file keyset-roma.com. al server DNS del dominio padre che lo firmerà utilizzando il comando
dnssec-signkey keyset-roma.com. Kcom.+003+56789

come vediamo ha usato la sua chiave pubblica...


Questo produce il file signedkey-roma.com. che dovremo farci spedire per poi poter firmare con esso le nostre zone.
Se non abbiamo dominio padre o non vogliamo inviare la nostra richiesta possiamo firmare noi stessi la richiesta utilizzando la nostra chiave con il comando
dnssec-signkey keyset-roma.com. Kroma.com.+003+14481

in questo modo è il DNS stesso del dominio roma.com ad autenticare con la propria chiave la richiesta (questo meccanismo è analogo al self-signing
certificate che si usa con apache2-ssl-certificate).
Facciamoci dare dal server padre (o se abbiamo autenticato noi stessi la nostra richiesta l'avremo già nel nostro filesystem) il file signedkey-
roma.com. ed inseriamolo con la direttiva $INCLUDE nei file delle zone di ricerca diretta ed inversa come segue
#/etc/bind/db.roma.com
$TTL 864000
@ IN SOA ns.roma.com. root.localhost. (2005102501 86400 3600 212900 864000)
$INCLUDE "/etc/bind/signedkey-roma.com."
...

#/etc/bind/db.77.168.192
$TTL 864000
@ IN SOA ns.roma.com. root.localhost. (2005102501 86400 3600 212900 864000)
$INCLUDE "/etc/bind/signedkey-roma.com."
...

Prima di procedere alla firma delle nostre zone ricordiamoci di modificare i permessi del file signedkey-roma.com. come segue
chmod 644 /etc/bind/signedkey-roma.com.

Ora siamo pronti per firmare le nostre zone con il comando


dnssec-signzone -o roma.com /etc/bind/db.roma.com
dnssec-signzone -o roma.com /etc/bind/db.77.168.192

Questo produrrà come output i 2 file /etc/bind/db.roma.com.signed e /etc/bind/db.77.168.192.signed che dovranno essere inclusi
nel file /etc/bind/named.conf.local per usare DNSSEC.
Pertanto ora il nostro file /etc/bind/named.conf.local sarà fatto nel modo seguente
Configurare un Server con Ubuntu 18

zone "roma.com" {
type master;
file "/etc/bind/db.roma.com.signed
}
zone "77.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.77.168.192.signed"
}

Ora riavviamo e testiamo il tutto.

La propagazione delle informazioni


A tal proposito si riporta il seguente esempio:
• Scenario:
• DNS1 master
• DNS2 slave
• DNS3 caching
DNS3 (caching NS) aggiorna la sua cache alle 16:30:05 da DNS2 (slave) e rileva un TTL di 24 ore nel file di zona.
In base al tempo di refresh DNS2 aggiorna la sua zona alle 16:31:03 da DNS1.
Se il refresh time di DNS2 è 3 ore, il tempo dopo il quale una modifica ad un record di zona di DNS1 si propaga fino a DNS3 è: TTL(DNS2) +
TRefresh(DNS2).
Come si vede il tempo di propagazione di una modifica dipende dall'architettura della rete oltre che dalle condizioni inziali del problema.
Configurare un Server con Ubuntu 19

DHCP
Introduzione
Questa guida spiega come configurare un server DHCP.

Che cos'è DHCP e come funziona


La comunicazione tra nodi di una rete di computer avviene attraverso un meccanismo di localizzazione in cui l'identificazione di ciascun nodo avviene
attraverso un numero (indirzzo IP) formato di 4 ottetti separati da punti.
Affinchè la comunicazione possa avvenire attraverso il meccanismo di nominazione diretta ogni nodo deve conoscere il numero che identifica l'endpoint con
cui deve comunicare, e questo può avvenire in 2 modi:
• ogni nodo possiede una lista di tutti gli altri nodi della rete (il file locale /etc/hosts)
• ogni nodo fa riferimento ad un nodo server che detiene la lista degli indirizzi di tutti gli altri nodi della rete (il server DHCP)
Ovviamente il primo modo consente una risoluzione locale dell'informazione necesssaria per la comunicazione , mentre il secondo riduce il carico di lavoro
che deve essere fatto per propagare la lista degli hosts della rete a tutti i nodi e riduce l'overhead in caso di cambiamenti alla topologia della rete stessa
(dismissioni o inserimenti di nuovi nodi), ma comporta un lavoro di manutenzione ed amministrazione di un server che gestisce la lista degli indirizzi dei
nodi della rete.
Il server DHCP gestisce l'assegnazione degli indirizzi IP in modo dinamico , ovvero quando un client richiede un IP questo non gli viene assegnato in modo
permanente ma soltanto per un certo periodo di tempo , al termine del quale tale lease (che tradotto vuol dire affitto) deve essere rinnovato.
Quindi alla scadenza del lease il client può vedersi riassegnare lo stesso IP oppure (nel caso in cui questo non sia più disponibile) il server DHCP gliene
assegnerà un altro.
Le porte di servizio sono la 67 e la 68 TCP.
Come funziona il protocollo:
• il client invia una richiesta di assegnazione dell'IP in broadcast: DHCP DISCOVER 255.255.255.255
• il server DHCP risponde che può assegnargli un indirizzo dal suo range: DHCP OFFER 192.168.1.253 from 192.168.1.1
• il client conferma la richiesta di quell'indirizzo IP: DHCP REQUEST for 192.168.1.253 (192.168.1.1)
• il server glielo assegna: DHCP ACK from 192.168.1.1

Installazione
Aprire una shell e al prompt dei comandi digitate come root
sudo apt-get install dhcp3-server

Un'occhiata ai file e alle directory di configurazione


I file di configurazione sono sotto la directory /etc/dhcp3 ed il file fondamentale è dhcpd.conf.
Tutti i log files inerenti lo stratup dei servizi DHCP sono contenuti nel file /var/log/syslog.

Architettura proposta
• un server DHCP primary
• un server DHCP di backup
Questa configurazione prende il nome di failover e permette di mantenere il servizio in piedi anche se uno dei 2 server ha dei problemi.
Inoltre i 2 server DHCP dovranno aggiornare il server DNS con il metodo della firma TSIG.

Configurazione del DHCP primario


• Apriamo dunque il file di configurazione /etc/dhcp3/dhcpd.conf.
failover peer "ubuntu" {

primary;
address 192.168.20.101;
port 519;
peer address 192.168.20.102;
peer port 520;
max-response-delay 60;
max-unacked-updates 10;
mclt 3600;
split 128;
load balance max seconds 3;

authoritative;
Configurare un Server con Ubuntu 20

ddns-update-style interim;
ddns-updates on;
ddns-domainname "example.com";
ddns-rev-domainname "20.168.192.in-addr.arpa";

subnet 192.168.20.0 netmask 255.255.255.0 {

pool {

range 192.168.20.2 192.168.20.254;

failover peer "ubuntu";

deny dynamic bootp clients;

server-name "ubuntu.example.com";

option domain-name "example.com";

option domain-name-servers 192.168.20.101;

default-lease-time 86400;
max-lease-time 31536000;

key "mykey" {

algorithm hmac-md5;
secret "KCoWhagI3Sl8XBQDa+QI8w==";

zone example.com {

primary 192.168.20.101;
key mykey;

zone 20.168.192.in-addr.arpa {
primary 192.168.20.101;
key mykey;

host ubuntu.example.com {
hardware ethernet 00:48:54:6B:B3:D7;
fixed-address 192.168.20.101;
}

• la direttiva failover peer specifica che questo server è il primary DHCP server per l'assegnazione degli IP. Quasi tutte le direttive sono auto
esplicative, ricordate solo che le direttive port e peer port dicono quali sono le porte su cui comunicheranno i 2 server per verificare il loro stato.
• subnet: questa riga dice al server DHCP che dovrà assegnare indirizzi IP sulla sottorete192.168.20.0
• la direttiva pool identifica un sottogruppo di hosts appartenenti alla sottorete 192.168.20.0 gestita da questo server DHCP.
• la direttiva server-name dice che il nome di questo server DHCP è ubuntu.example.com.
• la direttiva deny dynamic bootp clients istruisce il server DHCP a non assegnare IP dinamici ai clients che fanno il boot dalla rete (che generalmente
sono quelli che non hanno un disco rigido ma devono caricare il loro OS da un host remoto)
• le 2 direttive option domain-name e option domain-name-servers forniscono informazioni su qual è il dominio DNS associato ai clients della sottorete
192.168.20.0 e qual è l'IP del server DNS (192.168.20.101).
• le opzioni di configurazione default-lease-time e 'max-lease-time sonp quelle più importanti per un server DHCP , in quanto definiscono
rispettivamente l'intervallo di affitto di default di un indirizzo IP (ovvero per quanto tempo un indirizzo IP viene assegnato ad un dato client) ed il
massimo intervallo di affitto di un indirizzo IP (cioè la massima durata di affitto di un indirizzo IP ad un client è pari al valore di max-lease-time).
Entrambi i valori sono espressi in secondi.
• range 192.168.20.2 192.168.20.254: l'opzione range permette di configurare l'intervallo di indirizzi IP che possono essere assegnati ai
clients della sottorete data dal vostro server DHCP (nel nostro esempio dal 2 al 254, ovvero il nostro server DHCP è in grado di gestire al massimo
252 hosts).
• le sezioni zone servono nel caso in cui dobbiate configurare un server DHCP in grado di aggiornare dinamicamente le informazioni di una zona
DNS.
• Questo schema di aggiornamento utilizza la firma TSIG, il cui valore è stabilito con la direttiva secret.

Il nome del secret (nel nostro esempio mykey) deve essere identico a quello dichiarato nel file di configurazione del DNS
/etc/bind/named.conf.local.
• Le direttive nelle sezioni precedenti indicano i nomi delle zone che il nostro server DHCP dovrà aggiornare usando la firma TSIG creata e condivisa
con il server DNS.
• La sezione host permette di specificare un host che pur appartenendo al range di IP gestito dal server DHCP deve mantenere comunque un indirizzo
IP fisso.
• Notate come per assegnare un indirizzo IP fisso sia necessario conoscere il MAC address dell'host (ovvero l'indirizzo della scheda di rete) ed
Configurare un Server con Ubuntu 21

assegnare all'host medesimo un indirizzo IP statico.


• Le parentesi chiudono la dichiarazione del file /etc/dhcp3/dhcpd.conf.
• Ora potete riavviare il servizio con
/etc/init.d/dhcp3-server restart

e controllare la presenza del processo dhcpd3 tra i processi di sistema.

In caso di errore non dimenticarsi di controllare il file di log /var/log/syslog che quasi sempre contiene informazioni più che sufficienti per
risolvere i problemi che si possono presentare.

Configurazione del DHCP secondario


• Apriamo il file di configurazione /etc/dhcp3/dhcpd.conf.
failover peer "ubuntu2" {

secondary;
address 192.168.20.102;
port 520;
peer address 192.168.20.101;
peer port 519;
max-response-delay 60;
max-unacked-updates 10;
mclt 3600;
split 128;
load balance max seconds 3;

authoritative;
ddns-update-style interim;
ddns-updates on;
ddns-domainname "example.com";
ddns-rev-domainname "20.168.192.in-addr.arpa";

subnet 192.168.20.0 netmask 255.255.255.0 {

pool {
range 192.168.20.2 192.168.20.254;

failover peer "ubuntu2";


deny dynamic bootp clients;

server-name "ubuntu.example.com";
option domain-name "example.com";
option domain-name-servers 192.168.20.101;

default-lease-time 86400;
max-lease-time 31536000;

key "mykey" {
algorithm hmac-md5;
secret "KCoWhagI3Sl8XBQDa+QI8w==";
}

zone example.com {
primary 192.168.20.101;
key mykey;

zone 20.168.192.in-addr.arpa {
primary 192.168.20.101;
key mykey;

host ubuntu.example.com {
hardware ethernet 00:48:54:6B:B3:D7;
fixed-address 192.168.20.101;

• vale quanto detto sopra.


• Ora potete riavviare il servizio con
/etc/init.d/dhcp3-server restart

e controllare la presenza del processo dhcpd3 tra i processi di sistema.


Configurare un Server con Ubuntu 22

In caso di errore non dimenticarsi di controllare il file di log /var/log/syslog che quasi sempre contiene informazioni più che sufficienti per
risolvere i problemi che si possono presentare.
Configurare un Server con Ubuntu 23

ConfigurazioneNFS
Introduzione
Qui vengono elencati i passagi base per la creazione di una cartella condivisa mediante il servizio NFS, che risulta molto comodo per una gestione grafica
dei file condivisi.

Preparativi
Prima di cominciare è necessario preparare il computer server installando i seguenti pacchetti e creando la directory da condividere. A tale scopo è necessario
installare il pacchetto nfs-kernel-server.
Per creare la cartella da condividere è sufficiente aprire una finestra di terminale e digitare il seguente comando:
mkdir /home/nomeutente/condivisione

Nei computer client è necessario installare il pacchetto nfs-common ed è inoltre consigliato installare il demone portmap, utile ad accelerare l'operazione di
montaggio delle condivisioni NFS. A tale scopo è sufficiente installare il pacchetto portmap.

Configurazione della rete


Supponiamo che la nostra rete sia composta dal server DNS con indirizzo 192.168.1.1 e da un client con indirizzo 192.168.1.2 come risultato della
procedura per la creazione di una rete domestica descritta nella relativa guida.
È sempre consigliabile effettuare un backup dei file più importanti modificati dalla seguente procedura. Quello che segue è l'elenco di tali file:
/etc/exports
/etc/hosts
/etc/hosts.deny
/etc/hosts.allow
/etc/fstab

Configurazione del server


Aprire il file /etc/exports con un editor di testo con i privilegi di amministrazione e inserire in fondo le seguenti righe:
/media/ 192.168.1.2/255.255.255.0(rw) # sostituite (rw) con (ro) per permessi di solo lettura
/home 192.168.1.2/255.255.255.0(rw)

Dunque modificare il file /etc/hosts.deny sostituendo il suo contenuto con quanto segue:
# File di configurazione per escludere tutti i client non inseriti in hosts.allow
#ALL: PARANOID
#Scritto da piccinini luca 16/01/06
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Modificare il file /etc/hosts.allow sostituendo il suo contenuto con quanto segue:


# leggete /usr/share/doc/portmap/portmapper.txt.gz per info riguardo al portmapper
service: 192.168.1.2/255.255.255.0
portmap: 192.168.1.2
lockd: 192.168.1.2
rquotad: 192.168.1.2
mountd: 192.168.1.2
statd: 192.168.1.2

Configurazione del client


Digitare il seguente comando in una finestra di terminale per creare le cartelle necessarie:
sudo mkdir /home/utenteclient/condivisione
ln -s /home/utenteclient/condivisione /home/utenteclient/condivisi

Infine aprire il file con un editor di testo con i privilegi di amministrazione /etc/fstab e apportare le seguenti modifiche per montare le partizioni:
192.168.1.1:/home/utenteserver/condivisione /home/utenteclient/condivisione nfs rw,user,auto 0 0

Provare la configurazione
Una volta terminate le procedure di configurazione, riavviare sia il server che il client e verificare che lo scambio di file funzioni correttamente.
Configurare un Server con Ubuntu 24

Ulteriori risorse
• Guida all'installazione del servizio NFS
• Guida all'automounter
Configurare un Server con Ubuntu 25

FTP
Introduzione
FTP (File Transfer Protocol) è uno dei protocolli maggiormente usati per il trasferimento dei file. Solitamente prevede l'autenticazione degli utenti e una
serie di comandi semplici per scaricare e caricare file.
Questa guida si occupa della configurazione del servizio FTP utilizzando il programma vsftpd (acronimo di Very Secure FTP Daemon), uno dei programmi
più usati e sicuri per l'implementazione di questo servizio.

Installazione
È necessario installare il pacchetto vsftpd, reperibile dal componente universe.

Avvio e arresto del servizio


Una volta installato il pacchetto vsftpd, il servizio FTP viene avviato automaticamente.
Per fermare il servizio digitare il seguente comando:
sudo /etc/init.d/vsftpd stop

Per avviare il servizio, una volta arrestato, digitare il seguente comando:


sudo /etc/init.d/vsftpd start

Per riavviare il servizio è utile digitare il seguente comando:


sudo /etc/init.d/vsftpd restart

Prova del servizio


Ora, consideriamo di doverci collegare al computer, con indirizzo IP 192.168.1.2, su cui è stato installato il servizio FTP. Per fare ciò, da un terminale,
digitare:
ftp 192.168.1.2

Viene visualizzato un messaggio di richiesta di immissione delle credenziali di accesso simile al seguente:
Connected to 192.168.1.2
Name (192.168.1.2):

Inserire come nome utente:


anonymous

e premere «Invio».
Viene dunque richiesta la password. In questo caso è sufficiente premere «Invio». Generalmente, per l'utente anonymous non viene impostata alcuna
password.
Una volta effettuato l'accesso sarà possibile esplorare le cartelle disponibili sul server, dunque caricare e scaricare i file, limitatamente ai permessi impostati
per il proprio utente. Gli utenti anonimi possono avere accesso soltanto alla cartella /home/ftp del server, nella quale, a seconda dei parametri di
configurazione impostati, potranno soltanto leggere/scaricare, oppure anche scrivere/caricare.

Configurazione
Per configurare un server FTP in cui gli utenti abilitati ad accedere siano gli stessi del sistema, è necessario modificare il file di configurazione del servizio /
etc/vsftpd.conf con uno degli editor di testo messi a disposizione da Ubuntu.
Aprire una finestra di terminale e digitare il seguente comando:
sudo gedit /etc/vsftpd.conf

Cercare la seguente riga e cancellare il carattere di cancelletto «#» presente all'inizio della stessa:
#local_enable=YES

Ora è possibile tentare di collegarsi al server con il comando descritto in precedenza ed effettuare l'accesso utilizzando uno degli account utente presenti sul
sistema locale. Gli utenti del sistema avranno accesso al servizio FTP potendo esplorare tutte le cartelle del sistema.
Applicando le impostazioni sopra discusse, gli utenti del sistema avranno accesso, tramite il servizio FTP, a tutte le cartelle del filesystem locale. Per evitare
ciò è opportuno limitare l'accesso degli utenti solamente alla propria cartella Home.
A tale scopo è utile decommentare la seguente riga:
#chroot_local_user=YES
Configurare un Server con Ubuntu 26

Limitare l'accesso
Per rafforzare la sicurezza, è possibile scegliere gli utenti ai quali vietare l'accesso al servizio FTP.
Per far ciò è utile modificare il file /etc/ftpusers, il quale contiene la lista degli utenti ai quali non è consentito accedere al servizio. Il seguente è del
contenuto di default del file /etc/ftpusers:
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

È consigliato aggiungere gli utenti all'elenco senza cancellare quelli pre-esistenti.

Per non consentire l'utilizzo del servizio all'utente mario, è sufficiente aggiungere il nome dell'utente in coda all'elenco, in questo caso mario. Effettuate le
modifiche, è necessario riavviare il servizio.

Elenco dei parametri di vsftpd.conf


Di seguito vengono presentati alcuni dei parametri che è possibile configurare per vsftpd:
• anonymous_enable=YES

Abilita/disabilita l'accesso anonimo.


• local_enable=YES

Abilita/disabilita l'accesso agli utenti locali.


• write_enable=YES

Abilita/disabilita agli utenti l'accesso in scrittura.


• anon_upload_enable=YES

Abilita/disabilita la possibilità degli utenti anonimi di caricare file. Valido solo se l'opzione precedente è impostata a vero.
• anon_mkdir_write_enable=YES

Abilita/disabilita la possibilità degli utenti anonimi di creare nuove directory.


• xferlog_enable=YES

Attiva i log su tutte le operazioni di scaricamento e caricamento file.


• xferlog_file=/var/log/vsftpd.log

Specifica il percorso per i file di log.


• ftpd_banner=

Imposta un messaggio di benvenuto visualizzato all'accesso al server FTP.

Gestione di un server FTP


Ci sono principalmente tre modi per configurare un server ftp:
1. FTP anonimo
Sarà possibile accedere al server senza aver bisogno di un account registrato; tutti gli utenti saranno liberi di eseguire upload, che verranno
ovviamente controllati da alcune regole impostate dall'amministratore di sistema (limite di dimensione, controllo anti-pirateria, etc).
2. FTP anonimo e controllato da password
Questo metodo darà la possibilità di accedere al server sia ad utenti anonimi che a quelli con un regolare account a cui sarà dato accesso ad alcune
cartelle predefinite dall'amministratore, eccetto che per l'utente root che potrà vedere/modificare/cancellare tutte i file e/o le cartelle.
3. FTP con utenti virtuali e il supporto di un database MySQL
Questo metodo abilita l'accesso al server solo per il gruppo di utenti che non ha un'autenticazione virtuale via shell nel sistema. Sarà richiesto l'uso di
un database MySql che conterrà tutte le informazioni riguardanti gli utenti.

FTP anonimo
Prima di creare un server con accesso anonimo, si dovrà aggiungere al sistema l'utente ftp, con una sua directory home. Per farlo seguite questi comandi:
Configurare un Server con Ubuntu 27

useradd -d /home/ftp/ftp -s /bin/false ftp


mkdir -p /home/ftp/upload

Ci sono inoltre numerose opzioni con le quali avviare il server, in modo da configurarne ogni singolo aspetto. Alcune di queste opzioni sono le seguenti:
• -e Accesso solo per gli utenti anonimi.
• -B Avvia il server in modalità background.
• -i Gli utenti anonimi non potranno caricare file.
• -M Permette agli utenti anonimi di creare cartelle.
• -s I file degli utenti ftp non possono essere scaricati.

FTP anonimo e controllato da password


Per consentire l'accesso al server a tutti gli utenti (registrati e anonimi), è possibile seguire questi semplici comandi:
• -B ,-i ,M, -r, -s Stesse variabili descritte in precedenza.
• -u <uid> Autorizza utenti con uno specifico ID(uid) ad accedere al server.
• -V <Ip address> Solo specifici IP potranno accedere al server in modalità non-anonima.

FTP con utenti virtuali e il supporto di un database MySQL


Per creare un server che affidi a MySQL la gestione degli utenti, è possibile utilizzare procedere come segue:
• Aprire una finestra di terminale e digitare il seguente comando:
sudo apt-get install pure-ftpd

• Scaricare User Manager for PureFTPd da questo indirizzo.


• Decomprimere il pacchetto e caricare il contenuto nella directory principale del server web, dunque aprire, con il proprio browser, questo indirizzo.
• Seguire le indicazioni a schermo.
• Copiare pureftpd-mysql.conf nella cartella di User Manager for PureFTPd.
• Salvare la configurazione e chiudere. Per effettuare l'accesso tramite l'interfaccia web è sufficiente aprire questo indirizzo con il proprio browser.

Opzioni varie
• -c <num> Numero di client massimo abilitato ad effettuare l'accesso al server. Esempio:
pure-ftpd -c 3

• -C <num> Numero massimo di connessioni per IP. Esempio:


pure-ftpd -C 3

• -T <bandwitdh> Massima banda disponibile per ogni connessione (in kb/s). Esempio:
pure-ftpd -T 150

• -n <MBytes> Numero massimo di Mb disponibili per ogni utente. Esempio:


pure-ftpd -n 200

• -m <Cpu Loading> Blocca gli upload da parte di utenti anonimi nel caso che il caricamento della CPU superi il livello definito in termini di
percentuale. Esempio:
pure-ftpd -m 50

Ulteriori risorse
• Sito ufficiale di vsftpd
• Guida alla configurazione di vsftpd
Configurare un Server con Ubuntu 28

DirectoryServer
Introduzione
Un servizio di directory ha bisogno innanzitutto di una struttura ad albero dei nomi (server DNS) e di una analoga struttura associata basata sul protocollo
LDAP (slapd).
Inoltre, per fornire anche il servizio di file server a macchine Windows, è necessario il server SAMBA e, per utilizzare la crittografia basata sul protocollo
Kerberos, il server Kerberos.
Questo consente di avere un servizio di directory scalabile da utilizzare come backend per tutti i servizi aziendali, dai servizi di posta agli utenti remoti che si
collegano via RADIUS al server FTP.

Installazione
Per installare i pacchetti necessari, in un terminale, copiare quanto segue:
apt-get -y install samba smbldap-tools krb5-ftpd krb5-telnetd

Descrizione dell'architettura
Si consideri una configurazione d'esempio di questo tipo:
• LDAP master con DNS master on-board
• LDAP replica con DNS slave per fault tolerance
• un file server SAMBA come PDC
• un altro file server SAMBA come BDC
• un KDC
• i server protetti da Kerberos (tutti i client, le macchine SAMBA e la replica LDAP)
Ogni entry citata è su una macchina separata.

Configurare il master LDAP


Innanzitutto procedere alla configurazione del DNS master creando la zona diretta e inversa per il proprio dominio.
Installare il pacchetto bind9, da terminale, digitando:
apt-get -y install bind9

ed effettuare le configurazioni indicate nella guida alla configurazione di un server DNS.


Fatto ciò, installare i pacchetti necessari per il server LDAP. Da terminale, digitare:
apt-get -y install slapd migrationtools ldap-utils

Qualora vogliamo amministrare il server LDAP direttamente dal terminale e non da una workstation remota installiamo anche il pacchetto per la gestione
grafica del server LDAP:
apt-get -y install gq

Poi procedere come segue :


• Nel file /usr/share/migrationtools/migrate_common.ph sostituire:
$DEFAULT_MAIL_DOMAIN = vostrodominio
$DEFAULT_BASE = "dc=miodominio,dc=com"
$EXTENDED_SCHEMA = 1

• Poi eseguire come root i comandi :


cd /usr/share/migrationtools

./migrate_base.pl > /etc/ldap/base.ldif


./migrate_hosts.pl /etc/hosts > /etc/ldap/hosts.ldif
./migrate_group.pl /etc/group > /etc/ldap/group.ldif
./migrate_passwd.pl /etc/passwd > /etc/ldap/passwd.ldif
slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/base.ldif
slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/hosts.ldif
slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/group.ldif
slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/passwd.ldif

• Generiamo poi le password dell'utente admin :


slappasswd -h {crypt} -s adminpassword

• A questo punto testiamo la configurazione con il comando :


ldapsearch -x -H ldap://IP master LDAP -b "dc=miodominio,dc=com" "(cn=nomeutente)"
Configurare un Server con Ubuntu 29

• Modificare il file /etc/ldap/slapd.conf come segue :


replica host = replicaFQDN bindmethod=simple \
binddn="cn=replicator,ou=miaOU,dc=miodominio,dc=com" \
credentials=replicatorpassword

• Installare l'utilità smbldap-tools come:


sudo apt-get -y install smbldap-tools

• Eseguire il comando :
sudo cp /usr/share/doc/smbldap-tools/samba.schema /etc/ldap/schema/samba.schema

• Ed inserire nel file /etc/ldap/slapd.conf dopo l'ultima direttiva include.... quella che segue:
include /etc/ldap/schema/samba.schema

• Ora procediamo alla configurazione del servizio di autenticazione crittografata installando il pacchetto Kerberos come segue :
apt-get -y install krb5-kdc
apt-get -y install krb5-admin-server

• Eseguire come root i seguenti comandi :


kdb5_util create -s
kadmin.local
kadmin: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin
kadmin: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/changepw
kadmin: addprinc -pw secret krbadm@MIODOMINIO.COM
kadmin: q
/etc/init.d/krb5-kdc start
/etc/init.d/krb5-admin-server start

Configurare la replica LDAP


Innanzitutto procedere alla configurazione del DNS slave (ricordiamo che bisogna soltanto modificare il file /etc/bind9/named.conf.local
aggiungendovi la zona diretta e l'inversa del vostro dominio e specificando l'IP del DNS master per la sincronizzazione delle zone).
Pertanto installate il pacchetto bind9 con il comando :
sudo apt-get -y install bind9

ed effettuate le configurazioni come indicato nel wiki Configurare un server DNS.


Procedere come segue :
• In /etc/ldap/slapd.conf inserire direttive :
referral ldap://<FQDN o IP LDAP master>
updatedn "cn=replicator,ou=miaOU,dc=miodominio,dc=com"
updateref ldap://<FQDN o IP LDAP master>
access to attrs = userPassword,sambaLMPassword,sambaNTPassword
by dn = "cn=admin,ou=miaOU,dc=miodominio,dc=com" write
by dn = "cn=samba,ou=miaOU,dc=miodominio,dc=com" write
by dn = "cn=nssuser,ou=miaOU,dc=miodominio,dc=com" read
by anonymous auth
by self write
by * none
access to *
by dn = "cn=admin,ou=miaOU,dc=miodominio,dc=com" write
by anonymous auth
by * none

Ricordarsi di creare nel database LDAP sia l'utente samba che l'utente nssuser.
Se volete usate l'utility gq da installare o sul server LDAP o su una workstation remota da cui amministrare master e replica LDAP.
• Installare i pacchetti per il supporto all'autenticazione Kerberos lato client
apt-get -y install libpam-krb5
apt-get -y install krb5-user

• Monfigurare i pacchetti per il supporto all'autenticazione Kerberos lato client


• Modificare il file /etc/pam.d/common-account come segue :
account sufficient pam_krb5.so
account required pam_unix.so

• Modificare il file /etc/pam.d/common-auth come segue :


auth sufficient pam_krb5.so nullok_secure
auth required pam_unix.so nullok_secure

• Modificare il file /etc/pam.d/common-session come segue :


session sufficient pam_krb5.so
session required pam_unix.so
Configurare un Server con Ubuntu 30

Configurare il PDC SAMBA


• Installate il pacchetto samba nel modo seguente :
apt-get -y install samba

• Modificate il file /etc/samba/smb.conf come segue :


workgroup = MIODOMINIO.COM

domain master = yes


domain logons = yes
encrypt passwords = yes
security = user
os level = 65
wins support = yes
name resolver order = wins lmhosts hosts bcast
logon path = \\%N\profiles\%U
logon drive = H:
logon home = \\%N\%U\winprofile
logon script = logon.bat
log level = 1
printcap name = CUPS
show add printer wizard = No
shutdown script = /var/lib/samba/scripts/shutdown.sh
abort shutdown script = /sbin/shutdown -c
utmp = Yes
map acl inherit = Yes
printing = cups

passdb backend = ldapsam:ldap://<IP LDAP master>/ ldap://<IP LDAP replica>/


ldap admin dn = cn=admin,dc=miodominio,dc=com
ldap suffix = dc=miodominio,dc=com
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=People
add user script = /usr/sbin/smbldap_useradd -m '%u'
delete user script = /usr/sbin/smbldap-userdel -r "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap_groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
add machine script = /usr/sbin/smbldap_useradd -w '%u'
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
ldap delete dn = Yes

[homes]
comment = Home Directories
path = /home/%U
browseable = yes
writable = yes
create mask = 0775
directory mask = 0775
valid users = %S

[netlogon]
comment = Network Logon Service
path = /usr/local/netlogon
guest ok = yes
writable = yes
share modes = no
browseable = yes

[profiles]
path = /var/lib/samba/profiles
read only = no
create mask = 0600
directory mask = 0700
browseable = yes
writable = yes
directory mode = 0755

[printers]
comment = All Printers
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[whole_linux_server]
comment = whole_linux_box
path = /
Configurare un Server con Ubuntu 31

valid users = admin root dtrask


admin users = admin root dtrask
write list = admin root dtrask
public = no
writable = yes

• Create la share var/lib/samba/profiles e rendetela leggibile e scrivibile da tutti gli utenti del sistema:
mkdir /var/lib/samba/profiles && chmod -R 777 /var/lib/samba/profiles

questo è necessario poichè i client Microsoft accedono in scrittura a tale directory per creare il profilo degli utenti di rete.
• Creare l'utente samba e memorizzarne la password nel file /var/lib/samba/secrets.tdb come segue :
#read -s -p "Digita la password dell'utente samba : " LDAP_BINDPW
#smbpasswd -w $LDAP_BINDPW

• Memorizzare il SID del server nel file /var/lib/samba/secrets.tdb come segue :


#/etc/init.d/samba start
#net getlocalsid
#net rpc getsid miodominio.com

• Installare e configurare il pacchetto smbldap-tools come segue :


apt-get -y install smbldap-tools

• Controllare la configurazione dei files :


smbldap.conf
smbldap-bind.conf

• Lanciare i comandi :
smbldap-populate
smbldap-passwd Administrator
net rpc join miodominio.com -UAdministrator%password

• Creare i nuovi utenti utilizzando le utilities smbldap-tools come negli esempi :


smbldap-useradd -a -g 512 -m -s /bin/sh -d /home/user_admin -F "" -P user-admin

consultate le man pages per tutte le opzioni (il valore di -F è il roaming profile dell'utente).
• Testare la vostra configurazione tramite i comandi :
smbclient //SRV/public -Uuser_admin%password
pdbedit -Lv user_admin

• Aggiornate le policies SAMBA con i comandi :


pdbedit -P "password_history" -C 5
pdbedit -P "maximum_password_age" -C 180
pdbedit -P "min_password_length" -C 6

• Installare i pacchetti per il supporto all'autenticazione Kerberos lato client


apt-get -y install libpam-krb5
apt-get -y install krb5-user

• Configurare i pacchetti per il supporto all'autenticazione Kerberos lato client


• Modificare il file /etc/pam.d/common-account come segue :
account sufficient pam_krb5.so
account required pam_unix.so

• Modificare il file /etc/pam.d/common-auth come segue :


auth sufficient pam_krb5.so nullok_secure
auth required pam_unix.so nullok_secure

• Modificare il file /etc/pam.d/common-session come segue :


session sufficient pam_krb5.so
session required pam_unix.so

Altre utilità LDAP


Se dovete modificare le passwords agli utenti del DB LDAP creato potete usare il comando:
ldappasswd -x -D "cn=admin,dc=miodominio,dc=com" -W -s nuovapasswordutente
"cn=utente,ou=miaOU,dc=miodominio,dc=com"

Configurare BDC SAMBA


• Installate il pacchetto samba nel modo seguente :
Configurare un Server con Ubuntu 32

apt-get -y install samba

• Modificate il file /etc/samba/smb.conf come segue :


workgroup = MIODOMINIO.COM

domain master = no
domain logons = yes
encrypt passwords = yes
security = user
os level = 65
wins support = yes
name resolver order = wins lmhosts hosts bcast
logon path = \\%N\profiles\%U
logon drive = H:
logon home = \\%N\%U\winprofile
logon script = logon.bat
log level = 1
printcap name = CUPS
show add printer wizard = No
shutdown script = /var/lib/samba/scripts/shutdown.sh
abort shutdown script = /sbin/shutdown -c
utmp = Yes
map acl inherit = Yes
printing = cups

passdb backend = ldapsam:ldap://<IP LDAP master>/ ldap://<IP LDAP replica>/


ldap admin dn = cn=admin,dc=miodominio,dc=com
ldap suffix = dc=miodominio,dc=com
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=People
add user script = /usr/sbin/smbldap_useradd -m '%u'
delete user script = /usr/sbin/smbldap-userdel -r "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap_groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
add machine script = /usr/sbin/smbldap_useradd -w '%u'
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
ldap delete dn = Yes

[homes]
comment = Home Directories
path = /home/%U
browseable = yes
writable = yes
create mask = 0775
directory mask = 0775
valid users = %S

[netlogon]
comment = Network Logon Service
path = /usr/local/netlogon
guest ok = yes
writable = yes
share modes = no
browseable = yes

[profiles]
path = /var/lib/samba/profiles
read only = no
create mask = 0600
directory mask = 0700
browseable = yes
writable = yes
directory mode = 0755

[printers]
comment = All Printers
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[whole_linux_server]
comment = whole_linux_box
path = /
valid users = admin root dtrask
admin users = admin root dtrask
write list = admin root dtrask
public = no
writable = yes
Configurare un Server con Ubuntu 33

• Create la share var/lib/samba/profiles e rendetela leggibile e scrivibile da tutti gli utenti del sistema:
mkdir /var/lib/samba/profiles && chmod -R 777 /var/lib/samba/profiles

questo è necessario poichè i clients Microsoft accedono in scrittura a tale directory per creare il profilo degli utenti di rete.
• Il comando wins_server = yes unito ad una opportuna (vedi sezione dedicata alla configurazione dei clients) qualifica il server SAMBA come
WINS server e permette pertanto di impedire di inutili broadcasts dei clients per localizzare il loro NETBIOS server.
• Acquisire il SID del PDC con il comando:
net rpc getsid

• Installare i pacchetti per il supporto all'autenticazione Kerberos lato client


apt-get -y install libpam-krb5
apt-get -y install krb5-user

• Configurare i pacchetti per il supporto all'autenticazione Kerberos lato client


• Modificare il file /etc/pam.d/common-account come segue:
account sufficient pam_krb5.so
account required pam_unix.so

• Modificare il file /etc/pam.d/common-auth come segue:


auth sufficient pam_krb5.so nullok_secure
auth required pam_unix.so nullok_secure

• Modificare il file /etc/pam.d/common-session come segue:


session sufficient pam_krb5.so
session required pam_unix.so

Configurare i client
• Installare come root la libreria per il supporto LDAP con il comando:
apt-get -y install libnss-ldap

• Modificare il file /etc/ldap/ldap.conf come segue:


BASE dc=miodominio,dc=com
URI ldap://<FQDN o IP LDAP master> ldap://<FQDN o IP LDAP replica>

• Modificare il file /etc/pam.d/common-account come segue:


account sufficient pam_ldap.so
account required pam_unix.so

• Modificare il file /etc/pam.d/common-auth come segue:


auth sufficient pam_ldap.so nullok_secure
auth required pam_unix.so nullok_secure

• Modificare il file /etc/pam.d/common-session come segue:


session sufficient pam_ldap.so
session required pam_unix.so

• Se volete usare soltanto LDAP e non permettere l'accesso ai client agli utenti locali dovete usare nei tre files visti le direttive:
account required pam_ldap.so
account required pam_ldap.so nullok_secure
account required pam_ldap.so

• Eseguire il join al dominio SAMBA con il comando:


net rpc join miodominio.com -UAdministrator%password

• Per poter accedere al filesystem SAMBA installare l'utility smbfs:


apt-get -y install smbfs

• Per montare un filesystem remoto SAMBA utilizzare il comando:


smbmount //SRV/public /mnt/smb -o username=user_admin

• Se volete abilitare l'automount del filesystem SAMBA utilizzate il programma autofs installandolo come segue:
apt-get -y install autofs

• Ora modificate il file /etc/auto.master come segue:


/auto /etc/auto.smb

• Ed il file /etc/auto.smb come segue:


smb -fstype=smbfs,rw,guest ://SRV/public
Configurare un Server con Ubuntu 34

• E riavviate il servizio autofs con il comando :


/etc/init.d/autofs restart

• Ora per impedire il broadcast sulla rete per l'individuazione del server WINS modificare il file /etc/samba/smb.conf come segue :
wins server = <IP o FQDN SAMBA PDC>

• installare i pacchetti per il supporto all'autenticazione Kerberos lato client


apt-get -y install libpam-krb5
apt-get -y install krb5-user

• Configurare i pacchetti per il supporto all'autenticazione Kerberos lato client


• Modificare il file /etc/pam.d/common-account come segue :
account sufficient pam_krb5.so
account required pam_unix.so

• Modificare il file /etc/pam.d/common-auth come segue :


auth sufficient pam_krb5.so nullok_secure
auth required pam_unix.so nullok_secure

• Modificare il file /etc/pam.d/common-session come segue :


session sufficient pam_krb5.so
session required pam_unix.so

Ulteriori risorse
• Guida a autofs
Configurare un Server con Ubuntu 35

AutenticazioneActiveDirectory
Introduzione
Ci sono due principarli concetti per gli utenti: l'autenticazione e gli account.Con l'autenticazione di Active Directory (d'ora in poi AD) si usa il protocollo
Kerberos 5 mentre per gli account si usa LDAP. Prima di tutto è necessario configurare Kerneros 5 e LDAP in modo da gestire gli utenti un una AD.In questo
articolo verranno usati i seguenti indirizzi IP , di conseguenza adattateli alle vostre esigenze.
10.30.2.1 Router and DNS server or proxy
10.30.2.2 DHCP and TFTP server
10.30.2.10 NFS server
10.30.2.20 LTSP server
10.30.2.100-200 LTSP clients

Si da per sconattaio che AD sia confugurato con un dominio AD del tipo EXAMPLE.COM e ccon un utente creato del tipo:
account name: wendy
UID: 1002
GID: 1002
home directory: /home/wendy
shell: /bin/bash

Account
Per gli account LDAP è necessario il pacchetto libnss-ldap che non è presente sul CD di Dapper ma è disponibile nei repository Universe.Una volta
aggiunti tali repository è sufficiente dare :
$ sudo apt-get update
$ sudo apt-get install libnss-ldap

Inseriamo l'indirizzo del server Active Direcory.


Specifichiamo il search basedm
Selezionare LDAP versione 3
Carica nuovo allegato "Screenshot-ocean-nss-ldap-version.png"
Sono necessari alcuni aggiustamenti ulteriori , per questo andiamo a modificare /etc/libnss-ldap.conf
# libnss-ldap.conf

# Your LDAP server. Must be resolvable without using LDAP.


# Multiple hosts may be specified, each separated by a
# space. How long nss_ldap takes to failover depends on
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
host 10.30.2.2

# The distinguished name of the search base.


base example,dc=com

# The LDAP version to use (defaults to 3


# if supported by client library)
ldap_version 3

# (AD) mappings
# <to> <from>
nss_map_attribute userPassword sambaPassword
nss_map_attribute gecos name
nss_map_attribute uid unixName
nss_map_attribute shadowLastChange pwdLastSet
nss_map_objectclass posixGroup group
pam_filter objectclass=User
pam_password crypt

# Disable SASL security layers. This is needed for AD.


sasl_secprops maxssf=0

Configuriamo il nome del servisio per usare LDAP modificando/etc/nsswitch.conf


# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: files ldap


group: files ldap
shadow: files ldap

hosts: files dns mdns


networks: files

protocols: db files
services: db files
ethers: db files
Configurare un Server con Ubuntu 36

rpc: db files

netgroup: nis

Testing
Il comando getent mostrerà il contenuto del servizio, così una volta configurato Active Directory con un utente e con libnss-ldap configurato,
dovremmo essere in grado di vedere gli utenti extra e i gruppi.
$ getent passwd

gdm:x:106:111:Gnome Display Manager:/var/lib/gdm:/bin/false


test:x:1000:1000:Test,,,:/home/test:/bin/bash
wendy:x:1002:1002:wendy:/home/wendy:/bin/bash
$ getent group

gdm:x:111:
test:x:1000:
wendy:x:1002:

Un semplice file di prova ci mostrerà se Ubuntu comprende gli username di AD.


$ cd /tmp
$ touch moo
$ ls -l moo
-rw-rw-r-- 1 root root 0 2006-07-20 14:27 moo
$ sudo chown wendy moo
$ ls -l moo
-rw-rw-r-- 1 wendy root 0 2006-07-20 14:27 moo

Per visualizzare gli utenti tramite LDAP è necessario installare il pacchetto ldap-utils
$ sudo apt-get install ldap-utils
$ ldapsearch -x -H ldap://10.30.2.2 "(objectClass=posixAccount)" sAMAccountName
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectClass=posixAccount)
# requesting: sAMAccountName
#

# wendy, Users, EXAMPLE.COM


dn: cn=wendy,cn=Users,dc=EXAMPLE,dc=COM
sAMAccountName: wendy

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Autenticazione
Ora che le informazioni relative agli utenti sono presenti, è necessario configurare Linux affinché gli utenti possano effettuare il login.Il protocollo di login di
AD è Kerberos 5, quindi è necessario installare il modulo PAM Kerberos 5 e il pacchetto client per procedere al test.
$ sudo apt-get-install heimdal-clients libpam-heimdal

Configuriamo Kerberos con i parametri del dominio AD e dell' indirizo IP editando/etc/krb5.conf


[libdefaults]
default_realm = EXAMPLE.COM

[realms]
EXAMPLE.COM = {
kdc = 10.30.2.2:88
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

Aggiorniamo la configurazione di PAM in modo da verificare gli account Kerberos /etc/pam.d/common-auth scegliamo se vogliamo un prompt di
login di Kerberos oppure un prompt classico.
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
Configurare un Server con Ubuntu 37

# prompt user "Password for : " (warning: no l18n)


auth sufficient pam_krb5.so minimum_uid=1000 ➊
auth required pam_unix.so nullok_secure

# use password from pam_unix prompt


#auth sufficient pam_unix.so nullok_secure
#auth sufficient pam_krb5.so minimum_uid=1000 use_first_pass

Sono possibili molte opzioni, una modifica classica di "minimum_uid" è "ignore_root".


#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive). The default is pam_unix.
#

session required pam_unix.so


session optional pam_foreground.so
session optional pam_krb5.so

Aggiunlgiamo la seguente linea se vogliamo creare automaticamente le home per i nuovi utenti.
session required pam_mkhomedir.so umask=0022 skel=/etc/skel

Le password Samba 4 non possono essere modificate tramitekpasswde quindi le configurazioni di common-password sono irrilevanti.Le informazioni
degli account sono gestite già tramite pam_unix con NSS e libnss-ldap quindi non sono necessarie modifiche per common-account comunque
ulteriori informazioni sono disponibili nelle seguenti linee di codice.
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
account required pam_unix.so
account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] pam_krb5.so

Attenzione
Se AD gira su in PC con ... non c'è un orologio con batteria di backup.Questo significa che quando la macchina vien spenta per un certo periodo di tempo ,
l'orologio verrà resettato.quando la macchina verrà riaccesa sarà necessaria una connessione internet per risincronizzare l'ora.senza una risincronizzazione
dell'orologiao , Kerberos non permettrò il login ai clients.

Testing
Con l'AD in esecuzione e un account impostato , cerchiamio di acquisire alcuni dettagli con il comando kinit.
$ kinit wendy
wendy@EXAMPLE.COM's Password:

Orologio
Per sicurezza e efficacia dell'orologio, Kerberos necessita che tutti gli orologi siano sincronizzati.Altrimenti il comando kinit fallirà.
kinit: krb5_get_init_creds: Too large time skew

Il setup della sincronizzazione dell' orologio con il programma ntpudate; la sincoronia si mantiene tramite un server ntpd.
$ sudo apt-get install ntpdate
$ sudo ntpdate ntp.ubuntu.com
25 Jul 16:22:06 ntpdate[8158]: step time server 82.211.81.145 offset 402569.951826 sec
$ sudo apt-get install ntp-simple

Confermiamo l'ottenimento di due tagliandi con il comando klist.


$ klist
Credentials cache: FILE:/tmp/krb5cc_1000
Principal: wendy@EXAMPLE.COM

Issued Expires Principal


Jul 25 16:23:06 Jul 26 02:23:58 krbtgt/EXAMPLE.COM@EXAMPLE.COM

Per testare gli account è necessario un sistema di login, poichè è necessario per LTSP allora procediamo all' installazione del server OpenSSH e del client.
$ sudo apt-get install openssh-server openssh-client

Proviamo il login tramite l'utente AD.


$ ssh wendy@localhost
The authenticty of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is
Configurare un Server con Ubuntu 38

Are you sure you want to continue connecting (yes/no)?


Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
wendy@localhosts password:
Linux ubuntu 2.6.15-23-386 #1 PREEMPT Tue May 23 13:49:40 UTC 2006 i686 GNU/Linux

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by


applicable law.
Last login: Wed Jul 26 10:32:24 2006 from localhost
wendy@ubuntu:~$

Se ricevete un' errore di password , confermate il funzionamento corretto della password tramite il comando kinit, se tutto funziona potrebbe esserci un
problema di sincronizzazione dell' orologio tra il server AD e il vostro server.Prima di tutto dobbiamo abilitare il debug del login tramite il
modulo pam_krb5 ,modifichiamo il file common-auth e aggiungiamo la parola chiave "debug" alla fine della riga di Kerberos.
auth sufficient pam_krb5.so minimum_uid=1000 use_first_pass debug

Provate ad eseguire nuovamente il login e controllate /var/log/auth.log che dovrebbe spiegarvi la il motivo del mancato login.

Key Table non valida


Il seguinte errore può comparire se è presente un /etc/krb5.keytab non valido.
Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: pam_sm_authenticate(ssh wendy): entry:
Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: verify_krb_v5_tgt(): krb5_mk_req(): KDC has no support for encryption type
Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: pam_sm_authenticate(ssh wendy): exit: failure
Aug 7 19:31:30 ubuntu sshd[4444]: Failed password for wendy from 127.0.0.1 port 50054 ssh2

Il seguente errore indica una /etc/krb5.keytab non valida , di solito non è un problema.
Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: pam_sm_authenticate(ssh wendy): entry:
Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: verify_krb_v5_tgt(): krb5_kt_read_service_key(): Key table entry not found
Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: pam_sm_authenticate(ssh wendy): exit: success
Aug 7 20:00:05 ubuntu sshd[4764]: Failed password for wendy from 10.0.0.69 port 39428 ssh2

Shadow password
Una delle cause di fallimento consite nel fatto che i dettagli degli account nascosti non possono essere trovati, controllate di avere
/etc/nsswitch.conf:
shadow: files ldap

Specificando uno dei seguenti casi provoca il fallimento del login:


shadow: files
shadow: compat

Scambio di dominio
I seguenti errori indicano un host name non corretto, nome di domio o dominio AD.
Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: pam_sm_authenticate(ssh steve-o): entry:
Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: verify_v5_tgt(): krb5_sname_to_principal(): Cannot determine realm for host
Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: pam_sm_authenticate(ssh steve-o): exit: failure
Sep 9 17:35:00 ubuntu sshd[8088]: Failed password for steve-o from 127.0.0.1 port 52992 ssh2

Verificate che /etc/hostname coincida con /etc/hosts e che coincida con l'intera voce dominio in /etc/krb5.conf .Gli esempi che seguino
evidenziano dove il nome del dominio deve apparire.
• /etc/hostname:
ubuntu.

• /etc/hosts:
127.0.0.1 localhost
10.82.6.10 ubuntu. ubuntu

• /etc/krb.conf:
[libdefaults]
default_realm = EXAMPLE.COM

[realms]
EXAMPLE.COM = {
kdc = 10.30.2.2:88
}

[domain_realm]

example.com = EXAMPLE.COM
Configurare un Server con Ubuntu 39

Ulteriori risorse
• Documento originale
Configurare un Server con Ubuntu 40

Monit
Introduzione
Monit è una applicazione utile a monitorare lo stato di file, directory, processi e periferiche. È in grado di intraprendere particolari misure di manutenzione
nel caso in cui riscontri particolari anomalie.

Installazione
Il programma è presente nel componente universe dei repository ufficiali. Una volta abilitato tale componente è sufficiente installare il pacchetto monit.

Configurazione
Per configurare l'applicazione è sufficiente modificare con un editor di testo con i privilegi di amministrazione il file di configurazione
/etc/monit/monitrc.
Prima di tutto è necessario specificare quali server di posta verranno utilizzati per l'invio dei messaggi di notifica. È possibile aggiungere diversi server di
posta con le relative porte. Supponendo di voler utilizzare per l'invio della posta i server mx1.example.com con porta standard 25 e
mx2.example.com, con porta 10025, occorre aggiungere al file di configurazione la seguente direttiva:
set mailserver mx1.example.com,
mx2.example.com port 10025

Specificare poi l'indirizzo mittente da cui l'applicazione invierà la posta, ad esempio monit@example.com:
set mail-format { from: monit@example.com }

Specificare l'indirizzo a cui le mail di notifica dovranno essere consegnate (es. sysadmin@example.com)
set alert sysadmin@example.com

Abilitare il server web interno per accedere all'interfaccia di amministrazione. È possibile specificare a quali indirizzi consentire l'accesso (es. localhost)
e quali utenti, con le relative password. Nell'esempio che segue verrà configurato un singolo accesso di amministrazione per l'utente «admin» con password
«monit»:
set httpd port 2812 and
use address localhost # accetta connessioni solo da localhost
allow localhost # permette la visualizzazione solo se la richiesta proviene da localhost
allow admin:monit # utente admin con password monit

Una configurazione più sicura prevede l'utilizzo di SSL. Per far ciò è necessario generare un certificato x509 valido. Supponendo che questo sia contenuto,
insieme alla relativa chiave privata, nel file /var/certs/monit.pem occorre aggiungere una direttiva del seguente tipo:
set httpd port 2812 and
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:monit

Qualora si vogliano monitorare le risorse utilizzate dal sistema, è possibile aggiungere una regola che avvisi l'amministratore nel caso in cui alcune soglie
vengano superate. Quello che segue è un esempio generico:
check system server.example.com
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert

Se si desidera invece monitare i permessi e il proprietario di una particolare cartella di sistema è utile aggiungere una regola simile alla seguente:
check directory bin with path /bin
if failed permission 755 then unmonitor
if failed uid 0 then unmonitor
if failed gid 0 then unmonitor

Per monitare un servizio di sismtema è utile aggiungere una direttiva simile alla seguente:
check process slapd with pidfile /var/run/slapd/slapd.pid
start program = "/etc/init.d/slapd start"
stop program = "/etc/init.d/slapd stop"
if failed host 192.168.1.1 port 389 protocol ldap3 then restart
if 5 restarts within 5 cycles then timeout

Nella configurazione dell'esempio sopra citato, qualora il server ldap risultasse non disponibile, monit provvederà a riavviarlo.
Per monitare un PC remoto su cui gira una istanza di MySql, è utile aggiungere una direttiva simile alla seguente:
check host myserver with address 192.168.1.1
if failed icmp type echo count 3 with timeout 3 seconds then alert
if failed port 3306 protocol mysql with timeout 15 seconds then alert

Le diciture «myserver» e «192.168.1.1» vanno sostituite con gli indirizzi adatti ai propri scopi.
Configurare un Server con Ubuntu 41

Avvio del servizio


Aprire il file /etc/defautl/monit con un editor di testo con i privilegi di amministrazione, dunque modificare la variabile «startup» come nell'esempio
seguente:
startup=1

Infine avviare il servizio con il seguente comando in una finestra di terminale:


sudo /etc/init.d/monit start

L'interfaccia amministrativa di monit sarà raggiungibile all'indirizzo http://localhost:2812.

Ulteriori risorse
• Sito ufficiale del progetto
• Esempi di configurazione
• Server Monitoring With munin And monit On Debian Etch
Configurare un Server con Ubuntu 42

Munin
Introduzione
Munin è un'applicazione che produce e stampa grafici che rivelano l'attività di numerosi aspetti del sistema.

All'interno della guida si utilizzerà come esempio un setup composto da due host, uno avente come indirizzo IP 192.168.0.100 e come nome
host1.example.com, l'altro con indirizzo 192.168.0.101 e con nome host2.example.com.

Preparativi
Il programma è presente nel componente universe dei repository ufficiali.

Installazione
Un'unica istanza di munin, denominata master, può mostrare i grafici di più host, su ognuno dei quali deve essere installato il pacchetto munin-node.
L'applicazione raccoglie periodicamente le informazioni di monitoraggio dai vari host inserendole nella cartella /var/www/munin.

Installazione sul master


Per installare il programma sull'host master è necessario installare entrambi i pacchetti munin e munin-node.

Installazione sugli altri host


Sugli altri host è necessario installare solo il pacchetto munin-mode.

Configurazione
Configurare il master
Per configurare munin è sufficiente modificare con un editor di testo con i privilegi di amministrazione il file di configurazione
/etc/munin/munin.conf.
Una volta aperto il file, modificare la sezione relativa a «localhost.localdomain» presente all'interno del file /etc/munin/munin.conf, specificando
l'indirizzo e il nome del master come nel seguente esempio:
dbdir /var/lib/munin
htmldir /var/www/munin
logdir /var/log/munin
rundir /var/run/munin

tmpldir /etc/munin/templates

[host1.example.com]
address 127.0.0.1
use_node_name yes

Per applicare le modifiche sarà necessario riavviare il servizio con il seguente comando:
sudo /etc/init.d/munin-node force-reload

Configurare gli host


Ogni istanza di munin-node, in maniera predefinita, consente l'accesso alle statistiche solo dall'indirizzo localhost.
È necessario modificare il file /etc/munin/munin-node.conf in modo da consentire al master host1.example.com di leggere le statistiche.
Aprire il file sopra citato con un editor di testo con i privilegi di amministrazione e inserire la seguente riga, in accordo all'indirizzo di rete del master:
allow ^192\.168\.0\.100$

Dunque digitare il seguente comando per riavviare il demone:


sudo /etc/init.d/munin-node force-reload

Alla configurazione del master va aggiunta la seguente sezione all'interno del file /etc/munin/munin.conf:
[host2.example.com]
address 192.168.0.101
use_node_name yes

Infine riavviare nuovamente il servizio con il seguente comando:


sudo /etc/init.d/munin-node force-reload

Dopo qualche minuto, all'indirizzo http://host1.example.com/munin, saranno presenti le statistiche di tutti gli host configurati come descritto in precedenza.
Configurare un Server con Ubuntu 43

Visualizzare le statische
Per poter visualizzare le statistiche è necessario disporre di un server web. Per installare apache consultare la relativa guida.

Una volta installato apache, all'indirizzo http://host1.example.com/munin saranno già


presenti le statistiche di sistema.

Per ragioni di sicurezza la cartella /var/www/munin dovrebbe essere protetta mediante autenticazione.

Ulteriori risorse
• Sito ufficiale del progetto
• Server Monitoring With munin And monit On Debian Etch
Configurare un Server con Ubuntu 44

Nagios
Introduzione
NAGIOS è un sistema di monitoraggio dei servizi e delle risorse di una rete.
Tutti gli amministratori di sistemi potranno giovarne, perché tutti sanno quanto sia difficile tenere sotto controllo le risorse ed il corretto funzionamento di
una rete con una cospicuo parco macchine.

Installazione
Il pacchetto necessario è nagios-mysql installabile con il comando:
sudo apt-get -y install nagios-mysql

A questo punto è possibile passare al processo di configurazione.

Configurazione
Le modifiche seguenti devono essere eseguite con i privilegi di amministrazione.
• Modificare il file /etc/apache2/sites-enabled/000-default nel seguente modo:
• Aggiungere in coda la direttiva <VirtualHost vostroIP>
• Nella shell eseguire il comando
cat /etc/nagios/apache.conf >> /etc/apache2/sites-enabled/000-default

• Modificare il file in modo che il VirtualHost di NAGIOS sia come questo:


<VirtualHost 192.168.77.1>
DocumentRoot /usr/share/nagios/htdocs
<DirectoryMatch /usr/share/nagios/htdocs/cgi-bin>
Options ExecCGI

AllowOverride AuthConfig
Order Allow,Deny
Allow From All

AuthName "Nagios Access"


AuthType Basic
AuthUserFile /etc/nagios/htpasswd.users
require valid-user
</DirectoryMatch>

Alias /nagios/stylesheets /etc/nagios/stylesheets

Alias /nagios /usr/share/nagios/htdocs


<DirectoryMatch /usr/share/nagios/htdocs>
Options FollowSymLinks

AllowOverride AuthConfig
Order Allow,Deny
Allow From All

AuthName "Nagios Access"


AuthType Basic
AuthUserFile /etc/nagios/htpasswd.users
require valid-user
</Directory``Match>
</VirtualHost>

• Riaccedere a /etc/apache2/sites-enabled/000-default e aggiungere la direttiva </VirtualHost>


• Riavviate apache2 con con il comando
/etc/init.d/apache2 restart

• Creare il database MYSQL di appoggio per il server NAGIOS con il comando:


cp /usr/share/doc/nagios-common/create_mysql.gz . && gunzip create_mysql.gz && mysqladmin create nagios && mysql nagios
< create_mysql

• Fornire i permessi di accesso all'utente nagios sulle tabelle del database SQL nagios appena creato:
mysql nagios
mysql>GRANT SELECT, INSERT, UPDATE, DELETE ON nagios.* TO nagios@localhost IDENTIFIED BY 'password';
mysql>GRANT LOCK TABLES ON nagios.* TO nagios@localhost IDENTIFIED BY 'password';

• Modificare i file /etc/nagios/resource.cfg e /etc/nagios/cgi.cfg togliendo i commenti e sostituendo i valori dei parametri con
quelli della vostra configurazione del database mysql:
xsddb_database=nagios
xsddb_username=nagios
xsddb_password=password
Configurare un Server con Ubuntu 45

xcddb_database=nagios
xcddb_username=nagios
xcddb_password=password
xdddb_database=nagios
xdddb_username=nagios
xdddb_password=password
xrddb_database=nagios
xrddb_username=nagios
xrddb_password=password

• Eseguire il comando:
cp /usr/share/doc/nagios-common/check_nagios_db /etc/nagios/ && chmod 744 /etc/nagios/check_nagios_db

• Commentare nel file /etc/nagios/cgi.cfg la riga


#nagios_check_command=/usr/lib/nagios/plugins/check_nagios /var/log/nagios/status.log 5 'nagios'

e togliere il commento alla riga:


nagios_check_command=/etc/nagios/check_nagios_db

• Editate il file /etc/nagios/hosts.cfg aggiungendo alla riga 40 l'indirizzo IP del server NAGIOS come nell'esempio:
address 192.168.77.1

• Resettare la password dell'utente nagiosadmin con il comando:


htpasswd /etc/nagios/htpasswd.users nagiosadmin

• Eseguire il comando:
cp /usr/lib/cgi-bin/nagios/* /usr/share/nagios/htdocs/

• Ccontrollare che l'utente nagios@dbipaddress abbia accesso al database nagios definito, ovvero che la sua password sia corretta.
• In caso contrario si usi l'utility mysql-navigator da installare con
apt-get -y install mysql-navigator

per resettarla.
• Per riavviare è sufficiente il comando:
/etc/init.d/nagios restart
Configurare un Server con Ubuntu 46

Nessus
Introduzione
Nessus è un programma che tramite lo scan e l'abilitazione di plugins appositamente configurabili a seconda della tipologia di host e vulnerabilità che si
andrà ad analizzare, rileva le vulnerabilità presenti suggerendo le possibili soluzioni creando report.

Installazione
I pacchetti necessari sono nessusd e nessus installabili da terminale con:
sudo apt-get -y install nessusd
sudo apt-get -y install nessus

A questo punto è possibile procedere alla configurazione.

Configurazione
Nessus consiste di una parte server che va installata sul server da indagare e di una parte client che si installa sulla workstation dalla quale si vuole lanciare il
Vulnerability Assessment.
• L'unica cosa da fare prima di lanciare il client nessus è eseguire il comando sul server da indagare:
nessus-adduser

questo presenterà la richiesta di login e password dell'utente che si collegherà al servizio nessusd.
• Una volta fatto ciò lanciare il comando :
/etc/init.d/nessusd

sul server sul quale si vuole fare il vulnerability assessment.


• A questo punto lanciare il comando:
nessus

ed immettere come credenziali di accesso quelle create sul server nessus centrale.
• Nella finestra target immettere l'IP o il FQDN del server su cui effettuare il vulnerability assessment e lanciare l'esecuzione.
• Il report può essere salvato facilmente in formato testo e riesaminato per verificare le vulnerabilità del vostro server.
Configurare un Server con Ubuntu 47

Ntop
Introduzione
Ntop è un programma che effettua monitoraggi di rete, è in grado di mostrate i computer attivi all'interno della rete e fornire informazioni riguardo l'indirizzo
IP e il traffico generato da ogni computer. Il traffico viene ordinato in base al computer e al tipo di protocollo. I protocolli supportati e configurabili sono:
• TCP/UDP/ICMP
• (R)ARP
• IPX
• DLC
• Decnet
• AppleTalk
• Netbios
• TCP/UDP
• FTP, HTTP, DNS, Telnet, SMTP/POP/IMAP, SNMP, NFS, X11
• Fibre Channel
• Control Traffic (SW2, GS3, ELS)
• SCSI

Installazione
Per ottenere Ntop è sufficiente installare il pacchetto ntop reperibile dai repository ufficiali.

Configurazione
Prima d'avviare l'applicazione è necessario impostare una password di amministrazione:
sudo ntop --set-admin-password

Riavviare il servizio per apportare le modifiche:


sudo ntop -u ntop -d

Avvio
Avviare il browser predefinito e andare all'indirizzo: http://localhost:3000

Ulteriori risorse
• Documento originale
• Sito ufficiale
Configurare un Server con Ubuntu 48

SmokePing
Versioni supportate:
Ubuntu 8.04 Hardy Heron
Ubuntu 7.10 Gutsy Gibbon

Introduzione
SmokePing è un analizzatore di rete che permette il monitoraggio di domini e sotto-domini. È possibile inoltre monitorare servizi come Server DNS, FTP e
altri ancora.

Preparazione
Per accedere all'interfaccia web dell'applicazione è necessario installare il server web apache. Per informazioni sull'installazione e la configurazione,
consultare la relativa guida.

Installazione
Per installare SmokePing è necessario installare i seguenti pacchetti, reperibili dal componente universe dei repository ufficiali:
• smokeping
• curl
• libauthen-radius-perl
• libnet-ldap-perl
• libnet-dns-perl
• libio-socket-ssl-perl
• libnet-telnet-perl
• libsocket6-perl
• libio-socket-inet6-perl

Configurazione
Creare con un editor di testo e con i privilegi di amministrazione il file /etc/smokeping/config e inserire un testo simile al seguente:
# Please edit this to suit your installation
owner = Nome Cognome
contact = indirizzo@email
cgiurl = http://localhost/cgi-bin/smokeping.cgi
mailhost = Server SMTP
# specify this to get syslog logging
syslogfacility = local0
# each probe is now run in its own process
# disable this to revert to the old behaviour
# concurrentprobes = no

Modificare i parametri «Nome Cognome», «indirizzo@email» e «Server SMTP» adattandoli alle proprie esigenze.
Ogni modifica al file di configurazione per essere applicata necessita il riavvio del servizio. A tale scopo è sufficiente digitare il seguente comando:
sudo /etc/init.d/smokeping restart

Messaggio di benvenuto
Nelle impostazione è possibile modificare il messaggio di benvenuto. Sempre nel file /etc/smokeping/config inserire il proprio messaggio nel
parametro «remark».

Suddivisione dei menu


SmokePing da anche la possibilità di suddividere il menù a proprio piacimento. Per esempio un'azienda internazionale può aggiungere sotto-domini di altre
nazioni, modificando il file come segue:
+ Mondo

menu = Mondo
title = Connettività mondiale

++ Europa

menu = Europa
title = Connettività europea

+++ Svizzera

menu = Svizzera
Configurare un Server con Ubuntu 49

title = Connettività svizzera


alerts = bigloss,someloss,startloss
host = www.ch.ti.abc

I caratteri «+» stanno ad indicare i vari sottolivelli che compongono i menù, mentre i parametri come «host», «menu» e «title» indicano la configurazione da
applicare.

Monitoraggio dei servizi


Per monitorare servizi FTP o DNS è necessario modificare il file /etc/smokeping/config e modifica come nel seguente esempio:
[...]
*** Probes ***

+ DNS
binary = /usr/bin/dig
lookup = dominio.abc
pings = 10
step = 200

[...]
+ Servizi
menu = Latenza Server
title = Monitoraggio latenza (DNS, HTTP)

++ DNS
probe = DNS
menu = Latenza DNS
title = Latenza DNS

+++ Nome DNS


host = ns1.example.abc

In questo esempio viene monitorata la latenza di un server DNS. Nella sezione «Probes» viene dichiarato un comando che verrà poi richiamato nella sezione
«Targets» per la creazione del grafico.

Visualizzare il traffico di rete


Per visualizzare il traffico di rete è sufficiente aprire il browser web e digitare nella barra degli indirizzi il seguente indirizzo:
http://localhost/cgi-bin/smokeping.cgi

Ulteriori risorse
• Sito ufficiale del progetto
• Articolo su HowToForge
Configurare un Server con Ubuntu 50

Wireshark
Introduzione
Wireshark è un analizzatore di protocolli (packet sniffer), che permette di monitorare e filtrare tutti i pacchetti che passano attraverso una o più interfacce di
rete.

In questa guida non viene indicato come interpretare i dati monitorati, in quanto è necessaria un'approfondita conoscenza dei protocolli di rete e
dei modelli ISO/OSI, nonchè del protocollo TCP/IP.

Installazione
Wireshark è disponibile nel componente universe dei repository ufficiali. Dopo aver abilitato tale componente è sufficiente installare il pacchetto wireshark.

Configurazione

Per configurare il monitoraggio della scheda di rete è utile cliccare su Capture -> Options.... Per esempio, nel menù a tendina è possibile scegliere
l'interfaccia di rete che si desidera monitorare. A seconda della propria scheda di rete scelta, è inoltre possibile vedere il relativo indirizzi IP.
All'interno della sezione «Capture file(s)» è possibile salvare in un file di testo tutto ciò che verrà loggato dall'applicazione. In «Stop capture» è invece
possibile impostare delle condizioni che, quando verificate, comporteranno l'immediato arresto delle operazioni di cattura. In «Name Rosolution» è
possibile attivare la risoluzione dei nomi della rete.

Cattura
Una volta configurato il programma, per avviare il monitoraggio dei pacchetti, è sufficiente cliccare su Capture -> Start. In alternativa, è possibile
selezionare le interfacce desiderate dalla voce Capture -> Interfaces.... Apparità la seguente finestra, dalla quale sarà possibile scegliere le singole interfacce
per le quali avviare il monitoraggio:

Una volta cliccato su «Start», wireshark inizierà a sniffare i pacchetti.


Configurare un Server con Ubuntu 51

Per terminare le operazioni è sufficiente cliccare su «Stop». Terminata la cattura, verrà mostrato il log contenente tutti i pacchetti inviati e ricevuti attraverso
la propria rete.

Filtri
Wireshark consente di impostare dei filtri: con il programma ve vengono offerti alcuni già preimpostati, è inoltre possibile crearne altri personalizzati.
Di seguito vengono elencati i filtri più comuni:
Nome Filtro Descrizione

IP address 192.168.0.1 ip.addr == 192.168.0.1 Filtrare tutte le righe che hanno a che fare con l'IP 192.168.0.1

No ARP not arp Visualizzare tutti i protocolli tranne ARP

TCP only tcp Visualizzare solo il protocollo TCP

No ARP and no DNS not arp and !(udp.port == 53) Non visualizza le informazioni riguardanti il protocollo ARP e tutte le porte UDP 53

Creare un filtro
È possibile creare dei filtri personalizzati: wireshark visualizzerà solo i dati rientreranno nelle condizioni del filtro.
A tale scopo si può procedere cliccando su Analyze -> Display Filters.... Verrà visualizzata una finestra, all'interno della quale si trovano tutti i filtri già
configurati. Per creare un nuovo filtro è sufficiente assegnargli un nome e cliccare su «Nuovo». Per configurare i parametri relativi ai pacchetti e agli
indirizzi da filtrare, cliccare su «Expression...»: si aprirà una finestra dalla quale sarà possibile scegliere il tipo di pacchetto e i relativi parametri.
Per esempio, si potrebbe decidere di creare un filtro che mostri il traffico dei pacchetti solo esclusivamente per la porta TCP 60754. All'interno di Wireshark
Dsplay Filter, digitare il seguente testo all'interno della casella «Filter name»:
TCP porta 60754

Infine cliccare su «Nuovo», dunque su «Expression...». All'interno della finestra Wireshark Filter Expression scegliere la voce TCP -> tcpsrcport -
Source Port, dunque selezionare «==» all'interno di «Relation», infine, in «Value», impostare 60754 come numero della porta.
Una volta applicato il filtro ecco il risultato:
Configurare un Server con Ubuntu 52

Protocolli supportati
Wireshark è in grado di leggere un grosso numero di protocolli, i principali sono:
• TCP: (Transmission Control Protocol) è un protocollo corrispondente al livello 4 (trasporto) del modello di riferimento OSI.
• UDP: (User Datagram Protocol) è un protocollo di trasporto a pacchetto. È usato di solito in combinazione con il protocollo IP.
• ICMP: (Internet Control Message Protocol) è un protocollo di servizio che si preoccupa di trasmettere informazioni riguardanti malfunzionamenti.
• ARP: (Address Resolution Protocol) è un protocollo che fornisce la "mappatura" tra l'indirizzo IP di un calcolatore e il suo MAC address.
La lista completa dei protocolli supportati dall'applicazione si può visualizzare da Analyze -> enabled protocols...; dallo stesso menu è possibile anche
scegliere quali protocolli abilitare e quali disabilitare.

Ulteriori risorse
• Sito ufficiale Wireshark
• Guida ufficiale Wireshark
• Informazioni sui protocolli Internet
• Modello ISO/OSI
• Modello TCP/IP
Configurare un Server con Ubuntu 53

Proxy
Introduzione
Un server proxy all'interno di una rete ha la fondamentale funzione di controllare i processi di autenticazione degli utenti durante i loro accessi ad Internet.
Per poter fare ciò è necessario configurare ogni client in modo che nel momento in cui tenta di connettersi ad internet passi per il nodo che funge da server
proxy, il quale dovrà a sua volta richiedere l'autenticazione dell'utente e del client e controllare le credenziali di accesso fornite e la loro rispondenza ai criteri
stabiliti dal server proxy.
Il proxy server è pertanto un controllore centrale delle credenziali di accesso ad un sistema che opera con ACL sia a livello utente che a livello host , nonché
selezionando siti e percorsi di ricerca da accettare o scartare.
Ovviamente una volta ottenuta la convalida dell'autenticazione ciascun client ha accesso al servizio fornito dal proxy server, in questo caso l'accesso alle
pagine internet.
Tali pagine richieste dai client vengono risolte nel primo accesso direttamente dal server proxy e poi ogni successiva richiesta della stessa pagina da parte di
un client verrà evasa usando l'informazione che il proxy ha nella sua memoria cache.
Ritorna il principio di località dell'informazione in base al quale la minimizzazione dei temnpi di accesso ad una determinata informazione è garantito
dall'uso di una memoria locale e volatile ad accesso molto rapido.

Prima di installare
Prima di cominciare, come prerequisito, è necessario:
• Pianificare un corretto partizionamento del disco
• Dedicare, se possibile, una partizione apposita per /var/log ed una specifica per /var/cache/squid

Installazione
Per installare il server proxy aprire una shell e digitare
sudo apt-get -y install squid

Questo installerà i pacchetti necessari per il servizio proxy.

Configurazione
La directory di configurazione del server proxy è /etc/squid ed il file è squid.conf.
I file di log sono contenuti all'interno della directory /var/log/squid e contengono informazioni sugli accessi e sugli hit o miss di ogni pagina (ovvero
sull'efficienza del proprio server proxy).
A tal proposito occorre precisare che il tasso di hit riflette l'efficienza del server proxy poiché tanto più alto è il numero di pagine richieste dai client e trovate
nella memoria cache del sevrer proxy tanto minore sarà il numero di richieste che il server proxy stesso dovrà fare per ottenere tali pagine.
Ovviamente tale fattore di efficienza dipende sia dalle dimensioni della cache che dal tipo di richieste dei client e solitamente anche dal tempo trascorso dalla
fine del setup del proxy server.
Come detto il file per la configurazione del servizio proxy è /etc/squid/squid.conf. Adesso si vedrà nel dettaglio cosa bisogna modificare per
ottenere un proxy perfettamente funzionante.
Innanzitutto, è necessario specificare l'indirizzo IP e la porta su cui il sevrer proxy sarà in ascolto attraverso la direttiva :
http_port 192.168.20.101:3128

In questo esempio è in ascolto sull'IP 192.168.20.101 e sulla porta 3128. Bisogna configurare l'IP e la porta su tutti i client che dovranno usufruire del
servizio proxy.
A questo punto occorre specificare le dimensioni della memoria cache da usare per il servizio proxy come segue :
cache_mem 8MB

Nell'esempio, il valore predefinito è 8MB. È possibile modificarlo in base alle dimensioni della propria RAM.

Un server dedicato può arrivare tranquillamente a 256 o 512 MiB.

Il valore di questo parametro dipende dalle dimensioni degli oggetti che il proxy deve memorizzare e dal numero di questi ultimi. Ad esempio, se si hanno
1000 client che richiedono ciascuno una pagina diversa delle dimensioni medie di 500KB servono 500*1000=500MB di cache!! Ovviamente questo è un
caso limite ma aiuta a capire come determinare con semplici conti la quantità di cache necessaria.
Altri parametri importanti sono:
• maximum_object_size: gli oggetti con dimensioni maggiori di quelle riportate non vengono scritti su disco (ovvero non sono sottoposti a
swapping)
• minimum_object_size: gli oggetti con dimensioni minori di quelle riportate non vengono scritti su disco (ovvero non sono sottoposti a
swapping)
• maximum_object_size_in_memory: gli oggetti con dimensioni maggiori di quelle riportate non vengono mantenuti nella memoria cache (cioè
Configurare un Server con Ubuntu 54

vengono scartati)
E' evidente che l'ultimo parametro deve essere abbastanza alto da permettere che il più grande oggetto richiesto dai client serviti sia mantenuto nella cache, e
pertanto tale valore dipende dalla "qualità" delle richieste dei client (ovvero dal tipo di pagine ed oggetti richiesti).
I parametri che seguono riguardano il tipo di algoritmi usati per la gestione della memoria cache e della RAM da parte del proxy :
• cache_replacement_policy lru: significa che il proxy rimpiazzerà gli oggetti nella cache usati meno di recente (least recently used
algorithm)
• memory_replacement_policy lru: significa che il proxy rimpiazzerà gli oggetti nella memoria usati meno di recente (least recently used
algorithm)
Generalmente questi parametri sono impostati in modo predefinito.
La direttiva successiva riguarda la directory su disco da usare come area di caching delle richieste degli oggetti pervenute al proxy dai client:
cache_dir ufs /var/spool/squid 80000 16 256

La directory è di tipo ufs (il tipo di filesystem usato per il caching dei documenti richiesti) e /var/spool/squid ed i parametri specificati di seguito
sono:
• 80000: è la dimensione massima che questa directory può raggiungere prima che venga applicato l'algoritmo lru per lo svuotamento della cache
stessa;
• 16: è il numero di sotto cartelle di primo livello create di default dal server proxy in /var/spool/squid;
• 256: è il numero di sotto cartelle di secondo livello create di default dal server proxy in /var/spool/squid
In generale, si potrebbe voler specificare una diversa cartella per il caching delle pagine squid (soprattutto se avete predisposto una partizione dedicata a ciò
in fase di preparazione del sistema) ed un diverso valore della massima dimensione della memoria cache.
I parametri successivi riguardano i file di log e sono :
• cache_access_log in /var/log/squid/access.log: specifica il file contenente i log degli accessi (le richieste di oggetti pervenute al
proxy)
• cache_log in /var/log/squid/cache.log: specifica il file di log che vi dice come si sta comportando il vostro server proxy (tasso di hit e
miss delle pagine richieste)
• cache_store_log in /var/log/squid/store.log: specifica il log file che mostra dove e come sono gestiti gli oggetti nella cache
Il parametro successivo è:
• dns_nameservers 192.168.20.101: questo specifica l'IP del DNS cui devono essere girate le query DNS per la localizzazione degli host
che posseggono le pagine richieste.
È evidente che il server proxy lavorerà a stretto contatto con un DNS, pertanto non sarebbe una cattiva idea implementare un caching DNS interno per
velocizzare la risoluzione DNS.

Definizione delle ACL su backend LDAP


A questo punto viene la parte fondamentale ovvero quella in cui vengono definite le liste di controllo degli accessi in base alle quali il proxy selezionerà gli
utenti ed i client che possono accedere ai servizi offerti dal proxy stesso.
La sezione fondamentale al riguardo è auth_param.
Poiché il nostro proposito è quello di configurare un proxy server le cui ACL siano definite in rapporto ad un backend LDAP , è necessario specificare il
gruppo di utenti che saranno assoggettati ad autenticazione e l'eseguibile che dovrà interrogare il DB LDAP per convalidare le credenziali di accesso fornite.
I parametri da specificare sono:
• auth_param basic program /usr/lib/squid/squid_ldap_group -b dc=example,dc=com -f uid=%v

questo dice al server proxy di usare il programma squid_ldap_group per autenticare tutti gli utenti LDAP del dominio base
dc=example,dc=com (cambiatelo con il vostro)
• auth_param basic children 5

questo dice che il numero di sottoprocessi di autenticazione allo startup del server proxy deve essere 5
• auth_param basic credentialsttl 2 hours

questo vi dice che dopo 2 ore le credenziali di accesso dovranno essere reinserite perchè il vostro proxy le richiederà
• auth_param basic casesensitive on

questo dice che il vostro proxy è case-sensitive ovvero che distingue fra maiuscole e minuscole sia per username che per password immesse dagli
utenti.
• Dopo aver detto al proxy che dovrà usare il modulo LDAP per l'autenticazione degli utenti che gli si presenteranno si passa alla definizione delle liste
di controllo di accesso al servizio come segue:
acl example proxy_auth REQUIRED

questo dice che il gruppo di utenti example può accedere al servizio solo se autorizzato (richiesta di credenziali di accesso username e password da
confrontare con quelle dei corrispondenti utenti LDAP). Questo parametro identifica un meccanismo di sicurezza basato sul controllo utenti.
• acl example.com src 192.168.20.0/24

questo dice che soltanto i clients della sottorete 192.168.20.0/24 possono usufruire del servizio proxy (cioè una macchina con IP 10.0.0.1 non potrà
Configurare un Server con Ubuntu 55

usare il servizio proxy neanche in caso di utente autorizzato). Questo parametro identifica un meccanismo di sicurezza basato sul controllo dei clients.
• acl hotmail dstdomain .hotmail.com

questo parametro configura una lista dei controllo accessi per tutti gli oggetti appartenenti al dominio .hotmail.com (cioè tutti gli oggetti in esso
inclusi). Come si vede le ACL possono essere definite a livello di utenti, di computer o di oggetti gestiti dal proxy.
Dopo aver definito il metodo di autorizzazione usato dal server proxy e le ACL definiamo le azioni del server proxy sulle ACL così definite (ovvero permetti
o blocca).
I parametri a ciò deputati sono:
• http_access allow example

questo dice al server proxy di accettare le richieste provenienti dagli utenti del gruppo example (che sono tutti quelli definiti nel gruppo LDAP
dc=example,dc=com) soltanto se sono autorizzati (vedi la definizione di ACL proxy_auth REQUIRED)
• http_access allow example.com

questo dice al server proxy di accettare le richieste provenienti dai client che appartengono alla subnet 192.168.20.0/24
• http_access allow hotmail

questo dice al server proxy di accettare le richieste di tutti gli oggetti che appartegono al dominio hotmail.com
• http_access deny all

questo dice al server proxy di respingere ogni altra richiesta


E' fondamentale per il proxy l'ordine con cui vengono dichiarate nel file /etc/squid/squid.conf le azioni da compiere corrispondenti a
ciascuna ACL. pertanto state attenti e perchè mettere http_deny all in cima alla lista di azioni farebbe respingere in ogni caso qualsiasi
richiesta inficiando così tutto il vostro lavoro di configurazione!!
Infine potremmo voler indicare il nome con cui raggiungere il vostro proxy con la direttiva seguente :
visible_hostname proxy.example.com

questo vuol dire che ai vostri clients potrete passare il nome del server proxy.example.com che gli servirà per configurare l'uso del servizio proxy
Dando un'occhiata al file squid.conf vi renderete conto che esistono moltissime altre direttive di configurazione che potrete usare per ottimizzare il
vostro servizio , ma quelle esposte corrispondono a quelle strettamente necessarie per un coretto funzionamento dello stesso.

Altri tipi di autorizzazione


In generale squid è molto flessibile e supporta 4 metodi di autorizzazione per le ACL :
• PAM attraverso il modulo
/usr/lib/squid/pam_auth

• NCSA : è il tradizionale metodo di autenticazione del server Web Apache che sfrutta il modulo
/usr/lib/squid/ncsa_auth

• Gli utenti devono essere creati in un file con il comando htpasswd, esempio:
htpasswd /etc/squid/proxyusers utente

la direttiva da specificare in squid.conf è /usr/lib/squid/ncsa_auth /etc/squid/proxyusers


• SMB è l'autenticazione samba tramite il modulo
/usr/lib/squid/smb_auth

la direttiva da specificare ha la seguente forma :


/usr/lib/squid/smb_auth -W example.com

• LDAP che sfrutta un database LDAP e utilizza per il controllo accessi i moduli
/usr/lib/squid/ldap_auth
/usr/lib/squid/squid_ldap_group

la direttiva da specificare ha la seguente forma :


/usr/lib/squid/squid_ldap_group -b dc=example,dc=com -f uid=%v
Configurare un Server con Ubuntu 56

SquidGuard
Introduzione
squidGuard è un plug-in che permette di controllare i siti che vengono visitati dagli utenti di squid. squidGuard permette di reindirizzare l'utente ad una
pagina specifica ogni volta che prova ad accedere ad alcuni domini che sono presente all'interno di una blacklist, una lista contenente i domini da bloccare.
Questo plug-in serve, quindi, per filtrare i contenuti che attraversano il server proxy.

Preparativi
È necessario aver abilitato il componente universe dei repository ufficiali. Inoltre, assicurarsi di aver installato il server proxy.

Installazione
Per installare il programma è sufficiente installare il pacchetto squidguard presente nel componente universe dei repository ufficiali.

Configurazione
Configurazione di squid
Per poter utilizzare squidGuard bisogna modificare il file di configurazione di squid in modo da indicare al programma dove risiede squidGuard. Per
aprire il file di configurazione è sufficiente digitare il seguente comando:
sudo nano /etc/squid/squid.conf

Aggiungere la seguente riga per poter iniziare ad utilizzare squidGuard:


redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Per impostare i permessi per l'accesso al server è necessario decommentare le seguenti righe presenti nella sezione «http_access» del file di configurazione
(circa alla riga 1860):
acl our_networks src 192.168.1.0/24 192.168.2.0/24
http_access allow our_networks

Una volta modificate tali righe, sono stati abilitati tutti gli utenti della rete LAN, o meglio quelli che hanno un indirizzo IP compreso tra 192.168.1.1 e
192.168.1.255 e tra 192.168.2.1 e 192.168.2.255.

Configurazione di squidGuard
Per creare i database contenenti i siti che verranno bloccati è sufficiente digitare i seguenti comandi:
sudo mkdir /var/lib/squidguard/db/weapons/
sudo nano /var/lib/squidguard/db/weapons/domains

Aggiungere alla lista i seguenti domini:


israeli-weapons.com
uws.com
glock.com

Salvare il file e chiudere l'editor, dunque impostare i giusti permessi con il seguente comando:
sudo chown proxy:proxy -R /var/lib/squidguard/db

Aprire il file di configurazione di squidGuard con il seguente comando:


sudo nano /etc/squid/squidGuard.conf

Cercare la seguente riga all'interno del file:


logdir /var/log/squid

Una volta trovata, cancellarla insieme a tutto il resto che segue tale riga e inserire il seguente testo:
dest weapons {
domainlist weapons/domains
}

acl {
default {
pass !weapons
redirect http://yourip/block.html
}
}

Per rendere i file del database leggibili da squidGuard è sufficiente digitare il seguente comando:
sudo squidGuard -C all
Configurare un Server con Ubuntu 57

Assicurarsi che l'utente proxy sia il possessore dei file. A tale scopo è sufficiente digitare il seguente comando:
sudo chown proxy:proxy -R /var/lib/squidguard/db

Ora non resta che creare la pagina .html alla quale verranno reindirizzati gli utenti che avranno tentato di connettersi ad alcuni dei domini che sono stati
elencati nel file /var/lib/squidguard/db/weapons/domains. Digitare il seguente comando
sudo nano /var/www/block.html

Il percorso /var/www è la directory principale predefinita del server web apache. Adattare il precedente comando alla propria configurazione.

Infine attivare di squid e squidGuard con il seguente comando:


squid -k reconfigure

Risoluzione dei problemi


Per avviare squid in modalità verbosa è sufficiente digitare il seguente comando:
squid -NCd1

Nel caso di modifiche alla configurazione, per riavviare squid e squidGuard con le nuove impostazioni è sufficiente digitare il seguente comando:
squid -k reconfigure

Problemi con squid


All'avvio del server squid può capitare di ottenere il seguente errore:
FATAL: Could not determine fully qualified hostname

Per risolvere tale problema è sufficiente impostare il valore del tag «visible_hostname» all'interno del file di configurazione come da esempio:
visible_hostname localhost

È frequente che avvengano degli errori durante queste fasi. Di seguito sono riportate alcuni consigli per poterli risolvere. Prima di tutto cercare quali e quanti
processi sono attivi con il seguente comando:
ps -e | grep squid

Il risultato di questo comando dovrebbe mostrare 2 processi di squid e 5 di squidGuard. Se cosi non fosse è necessario riavviare Squid con il seguente
comando:
squid -k reconfigure

Se ancora non venissero visualizzati i 7 processi di cui sopra è utile controllare il file di log /var/log/squid/squidGuard.log.
All'interno del file in questione sarà possibile vedere quali problemi si sono verificati durante l'avvio del servizio.

Problemi con squidGuard


Il file di configurazione non è posizionato nel giusto percorso
Assicurarsi che squidGuard sia avviato con questa riga nel file di configuazione di squid:
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

I file dei database non sono posizionati nella directory specificata


Controllare che la seguente riga sia fra le prime del file di configurazione di squidGuard:
/var/lib/squidguard/db

Il proprietario dei file di log, dei file di configurazione o dei database non è corretto
Tali file dovrebbero appartenere all'utente e al gruppo proxy, che è definito di default per squid. Per verificare tali permessi è sufficiente digitare i seguenti
comandi:
sudo chown proxy:proxy /etc/squid/squidGuard.conf
sudo chown -R proxy:proxy /var/lib/squidguard/db
sudo chown -R proxy:proxy /var/log/squid/

Permessi dei file sbagliati


Per correggere i permessi è sufficiente digitare i seguenti comandi:
sudo chmod 644 /etc/squid/squidGuard.conf
sudo chmod -R 640 /var/lib/squidguard/db
sudo chmod -R 644 /var/log/squid/
sudo find /var/lib/squidguard/db -type d -exec chmod 755 \{\} \; -print
sudo chmod 755 /var/log/squid
Configurare un Server con Ubuntu 58

Errore di sintassi nel file di configurazione


È probabile che sia presente una parentesi graffa mal posizionata nel file /etc/squid/squidGuard.conf. L'errore dovrebbe essere qualcosa di simile
al seguente esempio:
dest weapons
{

Correggere il testo come segue:


dest weapons {

Ulteriori risorse
• Documento originale
• Sito ufficiale del progetto
• Elenco di blacklist scaricabili
Configurare un Server con Ubuntu 59

QuotaFilesystem
Introduzione
In questa guida si parlerà di come stabilire le quote per ciascun utente su un filesystem di un server comune.
Ciò sarà utile se si usa un server dedicato per l'accesso dei propri utenti o se si esegue nella propria LAN un Terminal Server per l'esecuzione di applicazioni
(ad esempio se i client non sono PC ma thin client).
Il servizio di quota permette di definire i limiti di spazio disco massimo utilizzabile da ogni utente del sistema.
Per beneficiare di tale servizio bisogna scegliere dell'hardware dedicato e formattare il proprio hard disk (o la propria batteria di hard disk se si utilizza un
sistema SAN) con un filesystem di tipo XFS.

Architettura dell'esempio
Il sistema rappresentato risponde ai seguenti requisiti:
• 1 server dotato di una sola unità disco /dev/hda1
• ogni utente del sistema ha a disposizione uno spazio disco massimo di 2 GB
• l'utente riceverà una email (che gli notifica che lo spazio disco a sua disposizione sta per esaurirsi) quando occuperà più del 80% della sua quota
massima;

Implementazione del servizio di Quota


• Innanzitutto è necessario installare il servizio di quota con i privilegi di amministrazione, con il seguente comando:
sudo apt-get install quota

• Procedere poi alla formattazione delle unità disco /dev/hda1 con il filesystem xfs con il comando
mkxfs.xfs /dev/hda1

• Montare il dispositivo /dev/hda1 nella directory /mnt/xfs come segue


mkdir /mnt/xfs && mount /dev/hda1 /mnt/xfs

• Aggiungere le utenze del sistema avendo cura di assegnare loro la home directory sul filesystem /mnt/xfs come nell'esempio che segue
useradd -m -d /mnt/xfs/marco marco

• Stabilire lo spazio su disco massimo per l'utente e la quota oltre la quale l'utente verrà avvisato che il suo spazio disco sta per terminare
setquota -u utente 1600000 2000000 10 11 /dev/hda1

• I parametri importanti sono :


• 16000000: è la quota oltre la quale l'utente verrà avvisato che il suo spazio disco è quasi terminato;
• 20000000: è la quota massima a disposizione per l'utente;
• Per eseguire automaticamente il mount del dispositivo /dev/hda1 controllare che in /etc/fstab vi sia la riga seguente
/dev/hda1 /mnt/xfs xfs rw,usrquota,grpquota 01

• Per controllare in qualsiasi momento lo spazio sul disco eseguire il comando


repquota /dev/hda1

• Per avvisare l'utente via email che il suo spazio disco sta per esaurirsi usare il comando
warnquota -u utente

Il sistema adesso è pronto. Ora è necessario creare tutte le utenze.


Configurare un Server con Ubuntu 60

RadiusLDAP
Introduzione
Questa guida spiega come configurare un server RADIUS con database LDAP.
RADIUS è un protocollo che regola i meccanismi di autenticazione di un utente che accede ad una LAN da un computer remoto.
Le parti che costituiscono l'architettura RADIUS sono un server di accesso alla rete, comunemente indicato con la sigla NAS (Network Access Server) e un
server che si occupa di effettuare l'autenticazione dell'utente sulla rete, il server RADIUS appunto.

NAS
Solitamente il NAS è un router dedicato in grado di commutare vari ingressi, ed è collegato direttamente al server RADIUS che si occupa di controllare il
pacchetto contentente le credenziali di accesso dell'utente (username e password).
Tali credenziali vengono confrontate con quelle esistenti in un database relativamente all'utente: in caso di matching l'utente autenticato può accedere ai
servizi della rete, in caso contrario il protocollo prevede la notifica di un messaggio di errore.
La comunicazione fra il NAS ed il server RADIUS è crittografata usando una chiave segreta condivisa da entrambi (secert key) che deve essere
opportunamente creata sia sul NAS che sul server RADIUS e mantenuta riservata.
Uno dei compiti del NAS può essere quello di assegnare al client remoto, dopo l'avvenuta convalida delle credenziali di accsso alla rete dell'utente, un
indirizzo IP compatibile con il range di IP disponibili (il NAS spesso funge da server DHCP , funzionalità questa integrata in molti routers presenti sul
mercato).

Autenticazione
I protocolli di autenticazione dell'utente remoto sul server RADIUS sono PAP (password authentication protocol) e CHAP (challenge handshake
authentication protocol).
Il database delle utenze che fornisce il servizio di backend come supporto al server RADIUS può essere sia un semplice file di testo (ad es il file
/etc/passwd di UNIX) sia un DB dedicato come LDAP o un altro database (PostgreSQL, MySQL).

Installazione
Aprite una shell ed al prompt dei comandi digitate
sudo apt-get -y install freeradius
sudo apt-get -y install freeradius-ldap

Questo installerà i pacchetti necessari per il servizio RADIUS con supporto ad un backend che utilizza un database LDAP.
L'opzione -y di apt-get non chiede la conferma per le azioni legate al processo di instalalzione del software.
Apt installerà pertanto freeradius risolvendo automaticamente le dipendenze necessarie ed avviando il server RADIUS nella configurazione di default.
Se non avete bisogno del DB LDAP potete anche fermarvi qui , in quanto il sistema è già predisposto per supportare l'autenticazione UNIX classica (quella
degli utenti definiti nel file /etc/passwd per intenderci).
Se invece volete utilizzare come DB delle utenze RADIUS un DB LDAP , dovete passare al paragrafo seguente.

File e cartelle di configurazione


I file di configurazione sono sotto la directory /etc/freeradius ed il file fondamentali sono 2:
• radiusd.conf: contiene le direttive relative al tipo di autenticazione ed autorizzazione utilizzati dal vostro server RADIUS
• clients.conf: contiene i dati del server NAS (compreso il secret key che serve per la comunicazione crittografata con il server RADIUS)
Nello specifico il file clients.conf deve avere un'entry come quella che segue:
client 192.168.200.1 {

secret testing123
shortname routercisco
nastype cisco

dove sostituirete 192.168.200.1 con l'IP del vostro NAS , testing123 con il secret key per la comunicazione fra il vostro NAS ed il server RADIUS,
routercisco con il nome con cui volete chiamare il vostro NAS e cisco con il tipo di NAS utilizzato (i valori possibili dipendono dal modello di NAS
usato, ma in generale i più comuni sono cisco, livingston, e other per indicare un tipo di NAS che non rientra nelle categorie elencate).
Tutti i log files inerenti lo stratup dei servizi dhcp sono contenuti nel file /var/log/syslog e nei file all'interno della directory
/var/log/freeradius/.

Configurazione di un server RADIUS con backend LDAP


Chi legge questa sezione si prepara a configurare un server RADIUS con freeradius usando come DB degli utenti un database LDAP. Il file fondamentale da
modificare è /etc/freeradius/radiusd.conf e precisamente devono essere modificati i seguenti parametri:
Configurare un Server con Ubuntu 61

• nella sezione modules individuare la sottosezione ldap e modificare i seguenti parametri:


server = "wilcoyote.example.com"
basedn = "dc=example,dc=com"
filter = "(cn=%{Stripped-User-Name:-%{User-Name}})"

e commentare la stringa
accessattr = "dialupAccess"

togliere inoltre il commento al parametro


password_attribute = userPassword

• nella sezione authorize commentare la riga files e togliere il commento a ldap. Questo dice al vostro server RADIUS che deve usare come
metodo di autorizzazione il DB LDAP e non quello tradizionale UNIX basato sul file /etc/passwd.
• nella sezione authenticate commentare la riga unix e togliere il commento alla sottosezione Auth-Type LDAP. Questo dice al vostro server
RADIUS che deve usare come metodo di autenticazione
il DB LDAP e non quello tradizionale UNIX basato sul file /etc/passwd.
A questo punto potete riavvaire il server RADIUS con il comando:
freeradius -X

che lo avvia in modalità di debug così che possiate controllare che i tentativi di autenticazione avvengono correttamente.
Prima di testare il tutto occorre che creiate nel vostro DB LDAP una ou = users e che vi inseriate almeno un utente di prova.
A questo punto potete procedere ad un test di verifica dell'autenticazione dell'utente RADIUS LDAP così creato usando il comando di test nativo fornito con
freeradius , come segue:
radtest username password 192.168.200.1 123 testing123

ovviamente sostituirete username e password con il nome utente e la password dell'utente LDAP appena creato, 192.168.200.1 con l'IP del vostro
NAS , 123 con la porta usata per la comunicazione fra il server NAS ed il server RADIUS , testing123 con il secret key per la comunicazione protetta
fra NAS e RADIUS.
Configurare un Server con Ubuntu 62

RadiusSQL
Introduzione
In questa guida sono contenute istruzioni utili all'installazione di Radius, un protocollo che regola i meccanismi di autenticazione di un utente che accede ad
una LAN da un computer remoto.
I componenti che costituiscono l'architettura Radius sono:
• un server di accesso alla rete chiamato NAS (Network Access Server);
• un server che si occupa di autenticare l'utente sulla rete.

Installazione
Installare i pacchetti freeradius-mysql e mysql-server, reperibili dai repository ufficiali.

Configurazione
1. Con un editor di testo e privilegi di amministratore modificare il file /etc/freeradius/radiusd.conf commentando nella sezione
authorize tutti i tipi di autorizzazione al di fuori di quelli sql, assicurandosi inoltre che sia presente la direttiva:
$confdir/sql.conf

2. Modificare anche il file /etc/freeradius/sql.conf sostituendo i valori dei parametri database, server, login e password con i
propri dati.
3. Per creare il database MySql Radius ed il file db_mysql.sql contiene le direttive SQL per la creazione delle tabelle, digitare in una finestra di
terminale il seguente comando:
sudo mysqladmin create radius&&cp /usr/share/doc/freeradius/examples/db_mysql.sql.gz .&&gunzip db_mysql.sql.gz&&mysql -u
root -p rootpass radius < db_mysql.sql

4. Inserire nelle tabelle del database gli utenti che si vogliono abilitare per l'autenticazione nelle rete, digitando in una finestra di terminale i seguenti
comandi:
mysql -u root -p -D radius
mysql>insert ... into

5. Riavviare freeradius digitando in una finestra di terminale il seguente comando:


sudo /etc/init.d/freeradius restart

Verifica
Digitare in una finestra di terminale il seguente comando:
radtest utente password IPRADIUS portaNAS secret

In caso di errori, digitare in una finestra di terminale il seguente comando:


freeradius -X

per riavviare Freeradius in modalità di debug a schermo su una finestra di terminale diversa.
Configurare un Server con Ubuntu 63

SAMBA
Introduzione
Samba è una suite di strumenti utilizzati per la condivisione tra reti miste windows linux, implementando il protocollo di rete SMB, il quale è il cuore del
networking Windows.
Solitamente si avrà bisogno di samba per:
• agire come un client con server Windows: accesso a file e stampanti remote condivisi,
• agire da server per client Windows: condividere cartelle e stampanti, incluse pseudo-stampanti PDF,
• agire da controllore di domini in una rete Windows (autenticazione degli utenti, etc.),
• fare qualcosa di più complesso, come per esempio usare un controller Windows di domini per autenticare gli utenti di una macchina Linux.

Installazione
Per installare samba è sufficiente installare i pacchetti samba e smbfs presenti nei repository ufficiali.

Configurazione
Tutti i parametri di configurazione di samba sono presenti nel file /etc/samba/smb.conf, modificabile con editor di testo con i privilegi di
amministrazione. Ogni volta che si apportano delle modifiche al file sopra citato è necessario riavviare il servizio di samba, digitando il seguente comando
in una finestra di terminale:
sudo /etc/init.d/samba restart

Sezione global
La sezione global si trova sempre all'inizio della configurazione del file /etc/samba/smb.conf e racchiude i principali parametri del server.
[global]
allow hosts = 192.168.1.0/24 # Range di IP che possono accedere al server
workgroup = ubuntu-it # Nome del dominio
server string = server@debianizzati.org # Identificativo del server
create mask = 0755 # Permessi sulle cartelle

Montare condivisione
Per montare una condivisone samba presente su un altro file server, si utilizza il smbmount presente nel pacchetto:
smbmount //SERVER/condivisione /punto/di/mount

Dove /punto/di/mount/ è una directory creata con privilegi di amministrazione solitamente in /media

Condivisioni dei dispositivi


Condividere cartella
Esistono sostanzialmente due metodi per condividere una cartella, il primo più rapido e veloce, mentre il secondo modificando il file di configurazione di
samba
1. Quello più rapido è tasto destro -> condividi cartella ed in seguito impostare i permessi su di essa.
2. Mentre il secondo metodo è quello di aggiungere la cartella nel file di configurazione di samba
[shared]
comment = Cartella condivisa # Commento sulla condivisione
path = /cartella/da/condividere # Percorso della condivisione
browsable = yes # Rende visibile la condivisione
public = yes # Rende la cartella accessibile
create mask = 0755 # Permessi dei file

Condivisione Home
Anche se sconsigliato è possibile anche condividere per interno la home di un utente.
[homes]
comment = Home condivisa # Commento sulla condivisione
browsable = no # Rende visibile la condivisione
valid users = %S # Utente che ci possono accedere
create mask = 0700 # Permessi dei file
direcotory mask = 0700 # Permessi della home
Configurare un Server con Ubuntu 64

Condivisione stampante tramite samba


Il sistema migliore per condividere una stampante è tramite IPP quello che è stato spiegato prima, però c'è anche la possibilità di condivisione tramite samba,
con un editor di testo modificare il file /etc/samba/smb.conf ed aggiungere i seguenti parametri nella sezione [Global]
printing = cups # Server di sampa utilizzato
load printers = yes # Caricare le stampanti

Inoltre bisogna creare la sezione [Printers]


[printers]
path = /var/spool/samba # Percorso dello spool di stampa
printable = yes # Stampante disponibile

Poi creare la sezione per la specifica stampante


[HP]
comment = HP Printer # Commento sulla condivisione
path = /var/spool/samba # Percorso dello spool di stampa
browsable = yes # Permette la visualizzazione della lista delle risorse condivise

Di default ubuntu non crea la cartella /var/spool/samba quindi la si deve creare a mano, ed impostando i permessi di accesso.
sudo mkdir /var/spool/samba
sudo chmod -R 755 /var/spool/samba

Condividere Dispositivi di lettura


È anche possibile condividere un supporto di lettura come il dvd oppure il cd:
[dvd]
comment = Lettore DVD+R # Commento sulla condivisione
preexec = mount /media/cdrom # Azione compiuta dopo la connessione alla condivisione
postexec = umount /media/cdrom # Azione compiuta dopo la disconnessione alla condivisione
path = /media/cdrom # Percorso della condivisione
writable = no # Se la condivisione è modificabile

Autenticazione
Esistono due possibilità per accedere ad una condivisione samba, la prima è quella di creare un utente samba virtuale tramite il comando:
sudo smbpasswd -a utente

mentre il secondo è quello di accedere alle condivisioni tramite utente guest, aggiungendo alla sezione nel file smb.conf il parametro guest ok = yes

Gestione utenti samba


Tutta la gestione degli utenti samba viene fatta tramite il comando smbpasswd, da dove è possibile creare oppure eliminare utenti, per maggiori
informazioni riguardo al comando
man smbpasswd

Gestione client
smbclient è un programma molto simile a client ftp da terminale, serve per visualizzare o connettersi a condivisioni samba presenti su server.
uno dei comandi più utilizzati è:
sudo smbclient -L IPServer

che permette di vedere tutte le cartelle condivise su un dato server.

Connessione al server
per connettersi ad un server samba si usa:
smbclient //SERVER/condivisione

Come detto prima i comandi del prompt sono uguali a quelli utilizzatati dal ftp in più mette a disposizione utilissimi tool per la gestione dei file, tramite il
comando help è possibile avere maggiori informazioni riguardo hai comandi.

Log di samba
Tutti i log di samba sono presenti nella cartella /var/log/samba, suddivisi in tre categorie, la prima è log.nmbd dove vengono annotate tutte le
operazioni NETBIOS, il secondo è log.smbd dove vengono registrate tutte le operazioni sui protocolli SMB/CIFS e per finire per ogni connessione
instaurata con client o server samba crea un file di log chiamati log.[IP_ADDRESS]

Interfaccia web
Samba dispone di anche un interfaccia web chiamata swat (Samba Web Administation Tool), il pacchetto è installabile dai repository ufficiali. Per accedere
Configurare un Server con Ubuntu 65

all'interfaccia web di samba inserire nella barra di navigazione di un Browser Web l'indirizzo:
localhost:901

Ulteriori risorse
• Sito web di Samba
• Samba su Openskills
• Samba su Debianizzati
Configurare un Server con Ubuntu 66

WEB
Introduzione
Prima di cominciare vale la pena di spendere due parole sui requisiti di un server Web.
Tenete conto che probabilmente vi servirà hardware dedicato, se possibile scegliete una soluzione appositamente progettata per il servizio che dovrete
ospitare.
Prendetevi il tempo necessario per pianificare un corretto partizionamento del disco.
Possibilmente dedicate una partizione apposita per /var/log ed una specifica per /var/www dove ospiterete i vostri siti: ciò dovrebbe minimizzare i
tempi di I/O sia per la scrittura dei log files che per le operazioni di GET per la lettura dei files legata alle richieste dei client.

Installazione
Aprite una shell ed al prompt dei comandi digitate:
sudo apt-get install apache2

Apt installerà apache2 risolvendo automaticamente le dipendenze necessarie ed avviando il server web nella configurazione di default.

Configurazione e opzioni globali


In apache2 le principali opzioni di configurazione sono racchiuse nel file apache2.conf, mentre il file httpd.conf è vuoto (riservato alla
personalizzazione della configurazione di apache2) e le porte su cui il server Web sarà in ascolto all'avvio del servizio sono elencate nel file ports.conf;
questi file si trovano in /etc/apache2. La directory mods-available contiene tutti i moduli disponibili con apache2 (quelli installati di default)
mentre la directory sites-available contiene le direttive di configurazione relative a tutti i siti che questo server Web ospita. I moduli effettivamente
caricati all'avvio del servizio apache2 sono elencati nella directory mods-enabled, così come i siti effettivamente pubblicati e visibili agli utenti sono
elencati nella directory sites-enabled. I files contenuti in queste due directory sono dei link a quelli contenuti nelle due directory mods-available
e sites-available. Questo vuol dire che se dovete supportare l'accesso in modo protetto al vostro sito (usando ssl) dovete creare dei link ai file
corrispondenti in mods-available.
Per esempio per supportare ssl occorre immettere comandi:
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

La directory che contiene i file di log su tutti gli accessi è /var/log/apache2. La directory che contiene il sito predefinito e che dovrebbe contenere i
vostri siti è /var/www.
Per modificare l'installazione di default occorre dare un'occhiata alla directory di configurazione di apache2, /etc/apache2.
Eseguire al prompt dei comandi:
cd /etc/apache2

Osserverete come output :


README envvars mods-available sites-available
apache2.conf httpd.conf mods-enabled sites-enabled
conf.d magic ports.conf ssl

Il file /etc/apache2/apache2.conf contiene le principali opzioni di configurazione di apache2:


ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
TimeOut 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 20
MaxRequestsPerChild 0
ErrorLog /var/log/apache2/error.log
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf

• ServerRoot: directory base per configurazione, logs ed errori


• LockFile: il lock file sul file di log (da modificare solo se il log file di apache2 è montato via NFS)
• PidFile: il file che contiene il PID del processo padre apache2
• TimeOut: il tempo dopo il quale apache2 chiude una connessione client in stato idle
• KeepAlive On: sono permesse connessioni persistenti (ovvero in grado di servire più di una richiesta di uno stesso client)
• MaxKeepAliveRequests: il massimo numero di richieste che in una singola connessione un client può fare al server (dopo tale numero le
Configurare un Server con Ubuntu 67

richieste verranno scartate)


• KeepAliveTimeout: numero di secondi da attendere per effettuare un'altra richiesta da parte di uno stesso client su una stessa connessione
persistente
• StartServers: numero di processi server avviati
• MinSpareServers: numero minimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)
• MaxSpareServers: numero massimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)
• MaxClients: massimo numero di processi apache2 che possono essere avviati
• MaxRequestsPerChild: numero massimo di richieste che il server è in grado di processare per ciascun thread
• Include: sono le direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri
specifici della vostra configurazione in file distinti.
Come vedete la direttiva ErrorLog /var/log/apache2/error.log è relativa al path del log file, mentre la Include /etc/apache2/mods-
enabled/*.load e quella successiva dicono di includere tutti i moduli elencati in mods-enabled. Le configurazioni particolari sono in
/etc/apache2/httpd.conf e la porta di ascolto in ports.conf.
Per modificare l'utente e il gruppo con cui apache2 è avviato dovete editare i parametri nel file /etc/apache2/apache2.conf-
User www-data

Group www-data

Apache non dovrebbe essere eseguito come root in quanto questo apre numerose falle di sicurezza...
I parametri per la gestione dei carichi di lavoro sono:
StartServers <n° processi figli Web Server all'avvio>

MinSpareServers <n° minimo processi figli liberi avviati per supplire picchi di carico>
MaxSpareServers <n° max processi figli liberi avviati per supplire picchi di carico>

Gli spare servers consentono al Web Server di rispondere più velocemente in caso di improvvisi picchi di richieste , ma occupano anche preziosa memoria
dato che in casi di traffico normale non fanno nulla!
MaxClients <max n° client Web server è in grado di supportare simultaneamente>

I parametri per il nome del server sono :


ServerName <hostname (deve essere raggiungibile da URL>
ServerAdmin <mail_web_administrator>

Personalizzare il proprio sito


I parametri da specificare nel file /etc/apache2/sites-enabled/000-default sono:
DocumentRoot /usr/local/apache/htdocs
UserDir <public_html>
Alias /icons/ /usr/local/apache/icons/
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/

• DocumentRoot: è la radice dell'albero dei documenti per questo sito


• Alias e ScriptAlias: sono degli alias names per le directory locali nelle quali si trovano icone e scripts
Esempio:
http://example.com/man.html viene tradotto in /usr/local/apache/htdocs/man.html
http://example.com/cgi-bin/rpm-query viene tradotto in /usr/local/apache/cgi-bin/rpm-query

Alcune direttive di tipizzazione dei file:


Type/sub-type extension1 [extension2...]

Esempio :
Video/mpeg mpeg mpg mpe
Video/quicktime qt mov
Video/x-msvideo avi
'''AddType''' newtype/newsub-type extension1..

Esempio:
AddType text/doc doc

Alcune direttive per la specifica del linguaggio:


AddEncoding x-gzip gz tgz
AddFileType text/html html
AddLanguage en .en

Le direttive per la gestione dinamica dell'albero dei documenti e la redirezione dei documenti
Redirect [temporary | permanent] /images http://example.com/icons
RedirectMatch (.*)\.gif$ http://example.com$1.jpg
Configurare un Server con Ubuntu 68

Il client che richiede file .gif file viene reindirizzato verso file .jpeg.
Le direttive per l'indicizzazione delle cartelle:
DirectoryIndex <index dir predefinito>

Esempio:
DirectoryIndex index.html

Se un client richiede http://www.example.com/dir1 ottiene come pagina web index.html.


Le direttive per la generazione di indici dinamici di directory:
Option + Indexes

Le direttive per la gestione dell'elenco dei files contenuti in una directory:


IndexIgnore README* *.txt

Nasconde al client i files README* e tutti i file con estensione .txt.


Altre direttive:
IndexOptions , HeaderName

Scelta icone per rappresentazione file:


AddIcon <icon> <match1> [<match2>
.]

AddIconByType ..
AddIconByEncoding ..
DefaultIcon ..

Esempio scelta di icone:


AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/text.gif .txt
AddIconByType /icons.apache/text.gif text/*
AddAltByType TXT text/*
DefaultIcon /icons/unknown.gif

Configurazione delle opzioni a livello di directory:


Options
All (tutte le opzioni)
ExecCGI
FollowSymLinks
MultiViews
SymLinksIfOwnerMatch

• ExecCGI:esecuzione script CGI


• FollowSymLinks: segue link simbolici
• MultiViews: seleziona documento che si avvicina di + alla richiesta del client quando il documento richiesto non esiste
• SymLinksIfOwnerMatch: Segue link se owner di src e dst coincidono

Autorizzazione basata sull'Host


Le direttive da usare sono le seguenti:
Deny <hostname> | a.b.c.d/mask
Allow <hostname> | a.b.c.d/mask
Order allow,deny : Processa le regole nell'ordine indicato

Autorizzazione basata sull'Utente


Per configurare l'autenticazione a livello utente procedere come segue:
• Creare file per utenti: /usr/local/apache/conf/htuser
• Creare utenti in /usr/local/apache/conf/htuser con comando:
htpasswd -c htuser <nomeutente>

• Creare gruppo htusers nel file /usr/local/apache/conf/htgroup. Il formato del file è il seguente:
Groupname: user1 user2 user3 ..

• Direttive per autorizzazione basata sull'utente da inserire nel file /etc/apache2/sites-enabled/000-default:


AuthUserFile conf/htuser
AuthGroupFile conf/htgroup

• Impostazioni controllo accesso:


Require user username1 username2
Require group groupname1 groupname2
Require valid-user
Configurare un Server con Ubuntu 69

• la prima direttiva consente l'accesso a username1 username2..


• la seconda direttiva consente l'accesso a groupname1 groupname2..
• la terza direttiva consente l'accesso solo agli utenti definiti in htuser

Hosting virtuale
In generale una singola macchina ospita più di un sito web.
La gestione dei siti allora può essere fatti nei seguenti modi:
• N siti = N * M processi web server (se M è n° processi per singola istanza sito web,vuol dire che M processi gestiscono ciascun sito)
• Virtual host = N siti = M processi web server (sempre 1 singola istanza web,ovvero gli M processi gestiscono tutti gli N siti web)
È possibile identificare tre tipi di hosting virtuale :
• basato sull'IP (VH host based) : da eseguire quando avete più di indirizzo IP
• basato sul nome (VH name based) : da eseguire quando avete più nomi DNS (alias etc...)
• basato sulla porta (VH port based)
I metodi per la scelta delle tipologie di hosting sono :
• N interfacce di rete : VH host based
• Singola interfaccia di rete : name based VH
• N nomi per host : VH name based
• Necessità di separazione web servers per differenti policies protezione : Non scegliete il VH poichè dovete effettuare una separazione delle istanze del
vostro web server

Host based VH
Utilizzare la direttiva <VirtualHost> da specificare all'interno di /etc/apache2/sites-enabled/000-default e all'interno delle opzioni di
directory come nell'esempio riportato:
BindAddress 0.0.0.0
Port 80
DocumentRoot /usr/local/apache/htdocs
ServerName site1.example.com
<VirtualHost 192.168.1.2>
DocumentRoot /usr/local/apache/htdocs2
ServerName site2.example.com
...
</VirtualHost>

Qui il sito web di default serve site1.example.com, mentre l'IP 192.168.1.2 serve il sito site2.example.com.

Name based VH
Esempio:
Listen 192.168.1.232
NameVirtualHost 192.168.1.232
<VirtualHost 192.168.1.232>
DocumentRoot /home/httpd/ex1
ServerName www1.example.com
..
</VirtualHost>
..
<VirtualHost 192.168.1.232>
DocumentRoot /var/apache/htdocs2
ServerName www2.example.com
..
</VirtualHost>

Qui come vedete si ha un unico IP ma due nomi server distinti (due nomi nel DNS,di cui uno sarà un alias name) che servono due siti distinti.

Esecuzione di N istanze su singolo host


Creare N files di configurazione per N istanze :
• Aggiungere righe per start e stop httpd al file /etc/init.d/apache2
• In /etc/init.d/apache2 definire gli N diversi files di configurazione apache2[i].conf usati dalle N istanze dei web server
• Usare nei apache2[i].conf le diverse direttive specifiche come mostrato in precedenza
• Specificare:
BindAddress
Port
Listen
ErrorLog
Configurare un Server con Ubuntu 70

Configurazione di un server Web protetto con OpenSSL


I comandi da specificare sono :
• Comando da shell:
apache2-ssl-certificate -days 3650

sostituite 3650 con la durata del certificato in giorni.


• Caricare modulo ssl in /etc/apache2/mods-enabled con comando:
ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

• Specificare la direttiva Listen 443 nel file /etcapache2/ports.conf


• Modificare /etc/apache2/sites-available/default aggiungendo le righe:
NameVirtualHost *:443
<VirtualHost *:443>
#Inserire qui l'indirizzo email dell'amministratore del server
ServerAdmin webmaster@localhost
#Inserire qui la DocumentRoot del server virtuale
#In questa cartella ci sono le pagine che viaggeranno sul canale criptato
DocumentRoot /var/www
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>

Riavviare apache2 eseguendo da shell il comando


/etc/init.d/apache2 restart

Supporto PHP
Prima di procedere è necessario abilitare il componente main dei repository ufficiali.
Installare i seguenti pacchetti:
• libapache2-mod-php5
• php5-cli
• php5-common
• php5-cgi
Caricare i moduli con i comandi da shell:
sudo ln -s /etc/apache2/mods-available/php.conf /etc/apache2/mods-enabled/php.conf
sudo ln -s /etc/apache2/mods-available/php.load /etc/apache2/mods-enabled/php.load

Riavviare apache digitando in una finestra di terminale:


sudo /etc/init.d/apache2 restart

Controllo dei file di log


Tutti i file di log si trovano nella directory /var/log/apache2 e sono:
• access.log
• error.log
Forniscono utili informazioni per il debugging dei problemi che si possono presentare.
Configurare un Server con Ubuntu 71

ApacheTomcat
Introduzione
Apache Tomcat è un Servlet/JSP engine che non fa altro che contenere ed eseguire le applicazioni Java Servlet e Java Server Page (JSP).
Non è l'unico Application Server per Servlet/JSP in circolazione, ma di sicuro è libero ed è il contenitore di servlet utilizzato nell'implementazione ufficiale
di riferimento per il Java Servlet e le tecnologie Java Server Page sviluppate dalla Sun Microsystems.
Questa guida servirà ad installare Apache Tomcat utilizzando i binari ufficiali prelevabili dal sito di Tomcat e non utilizzando i pacchetti precompilati di
Ubuntu prelevabili dal repository Universe.
Il tutto per un duplice motivo:
a. i pacchetti di Ubuntu non sono sincronizzati con l'ultima release disponibile;
b. richiedono dipendenze, spesso eccessive e non necessariamente utili, come ad esempio l'installazione delle librerie ligcj e sue dipendenze, che
risulterebbero ridondanti visto già la presenza, o che comunque andremo ad installare, di Java JRE e JDK della Sun.

Tomcat 6
Installazione di Tomcat.

Installazione
Attivare i repository Universe e Multiverse di Ubuntu. Per maggiori informazioni si consulti la pagina Repository.
1. Installare per prima cosa, se già non lo si è fatto, i pacchetti Java jre e jdk:
sudo apt-get install sun-java5-jre sun-java5-jdk

se invece si vuole installare l'ultimissima versione di Java, la 1.6:


sudo apt-get install sun-java6-jre sun-java6-jdk

2. Scaricare dal sito http://tomcat.apache.org/ l'ultima versione di Tomcat, la 6 al momento in cui sta scrivendo:
wget http://mirrors.publicshout.org/apache/tomcat/tomcat-6/v6.0.7/bin/apache-tomcat-6.0.7.tar.gz

3. Estrarre l'archivio:
tar xzfv apache-tomcat-6.0.7.tar.gz

4. Copiare in /usr/local la directory estratta e poi creare un link simbolico /usr/local/tomcat. Questo per un triplice motivo: praticità,
manutenibilità e comodità. Se si desidera installare più versioni basterà cambiare il riferimento al link simbolico.
sudo cp -r apache-tomcat-6.0.7 /usr/local/
sudo ln -s /usr/local/apache-tomcat-6.0.7/ /usr/local/tomcat

5. Creare uno script per init.d per far si che il demone di Tomcat venga attivato all'avvio o comunque dia la possibilità di avviarlo, arrestarlo,
riavviarlo:
1. crare il file /etc/init.d/tomcat con l'editor di testo preferito e copiare quanto segue:
#!/bin/bash
#
# Startup script for the Tomcat server
#
# chkconfig: - 83 53
# description: Starts and stops the Tomcat daemon.
# processname: tomcat
# pidfile: /var/run/tomcat.pid
# See how we were called.
case $1 in
start)
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun/
export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar
export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
echo "Tomcat is started"
sh /usr/local/tomcat/bin/startup.sh
;;
stop)
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
sh /usr/local/tomcat/bin/shutdown.sh
echo "Tomcat is stopped"
;;
restart)
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
sh /usr/local/tomcat/bin/shutdown.sh
echo "Tomcat is stopped"
sh /usr/local/tomcat/bin/startup.sh
echo "Tomcat is started"
;;
*)
echo "Usage: /etc/init.d/tomcat start|stop|restart"
;;
Configurare un Server con Ubuntu 72

esac
exit 0

2. Diamogli i giusti permessi, rendiamolo eseguibile e registriamolo:


sudo chmod 755 /etc/init.d/tomcat
sudo update-rc.d tomcat defaults

6. Avviamo Tomcat:
sudo /etc/init.d/tomcat start

7. A questo punto, se tutto è andato per il verso giusto, puntando all'indirizzo http://localhost:8080 si dovrebbe avere la pagina di benvenuto di Tomcat.

Apache e Tomcat
Tomcat è abbastanza performante per essere eseguito come Web Server di pagine statiche o dinamiche, o come Web Application Server. Tuttavia se si
vogliono sfruttare anche le innumerevoli potenzialità di un vero e proprio Web Server come Apache, soprattutto se lo si usa in macchine in produzione,
esiste un connector che permette di mettere in comunicazione Apache con Tomcat facendolo richiamare da Apache solo quando serve.

Installazione del jk connector


Si presume che abbia Apache2 già installato.
1. Installare il connector:
sudo apt-get install libapache2-mod-jk

2. Creare il file /etc/apache2/workers.properties con l'editor di testo preferito e copiare quanto segue:
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-1.5.0-sun
ps=/
worker.list=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.type=ajp13

Con port=8009 si intende la porta con la quale Tomcat ascolta il connector, non http che è 8080.
3. Modificare il file /etc/apache2/mods-available/jk.load e inserire, dopo la riga !
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so, quanto segue:
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /etc/apache2/mod_jk.log
JkLogLevel debug
#JkMount /servlets-examples/* ajp13 #da decommentare se si usa tomcat 5.x;
JkMount /examples/* ajp13

4. Riavviare Apache:
sudo /etc/init.d/apache2 restart

Se tutto è andato per il verso giusto, puntando all'indirizzo http://localhost/examples, si dovrebbe vedere la pagina con i JSP e i Java Servlet d'esempio.

Osservazioni e approfondimenti
Connector: aggiungere altre directory web
In /etc/apache2/workers.properties la direttiva !JkMount non fa altro che redirigere a Tomcat tutte le richieste http precedute da /examples/
(per esempio http:/localhost/exampler/unesempio.jsb), in questo caso unesempio.jsp verrà processato da Tomcat invece che da Apache.
Dunque, se si vogliono aggiungere altre direcotory per richiamare le nostre applicazioni basta inserire altri !JkMount in /etc/apache2/mods-
available/jk.load:
.....
JkMount /examples/* ajp13
JkMount /<nomedirectory>/* ajp13

È importante osservare che <nomedirectory> deve essere contenuta all'interno della directory /usr/local/tomcat/webapps, questo perchè
come avete potuto notare in /etc/apache2/workers.properties abbiamo settato il path della home di Tomcat in /usr/local/tomcat,
dunque la direttiva !JkMount effettuerà la sua ricerca a partire da li.
Se invece vogliamo che le nostre applicazioni siano salvate e sviluppate in una directory nella nostra home, oppure nella root del nostro Web Server, basta
creare un collegamento simbolico che dalla directory dichiarata in !JkMount punti a una directory o nella nostra home o nella root del Web Server o in
qualsiasi posto noi volessimo salvare i nostri progetti Servlet/JSP.
Per esempio, se vogliamo che !JkMount /<nomedirectory>/ punti a /home/nomeutente/nostreapplicazioni/<nomedirectory>,
procederemo come segue:
mkdir /home/nomeutente/nostreapplicazioni/<nomedirectory>
sudo ln -s /home/nomeutente/nostreapplicazioni/<nomedirectory>/ /usr/local/tomcat/webapps/<nomedirectorydichiaratainJkMount>
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/tomcat restart
Configurare un Server con Ubuntu 73

Ora basterà inserire o creare le nostre applicazioni in /home/nomeutente/nostreapplicazioni/<nomedirectory> e puntando col nostro
browser a http://localhost/<nomedirectorydichiaratainJkMount>/applicazione.jsp i nostri lavori verranno processati da Tomcat.

Amministrare Tomcat
Per amministrare Tomcat è necessario attivare Tomcat Manager. Per farlo basta seguire questi semplici passi:
1. Aprire il file /usr/share/tomcat/conf/tomcat-users.xml con l'edito di testo che preferiamo e aggiungiamo l'utente (o gli utenti) con i
ruoli di admin e manager. Per creare i ruoli inseriamo tra i tag «<tomcat-users> ... </tomcat-users>»:
<role rolename="manager"/>
<role rolename="admin"/>

mentre per creare l'utente con i ruoli di admin e manager, inseriamo:


<user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin,manager"/>

Se volessimo dare all'utente un unico ruolo, come admin, basta inserirne solo uno:
<user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin"/>

2. Connettiamoci all'indirizzo http://localhost:8080/manager/html e accediamo al pannello di controllo di Tomcat Manager con le credenziali appena
create.
Per approfondimenti sulla creazioni di altri ruoli si rimanda alla documentazione ufficiale.

Tomcat 5.x
La procedura di installazione di Tomcat appena descritta vale per la versione 6, ma, per le versioni precendenti, il metodo e l'approccio non cambiano, basta
avere l'accortezza di adeguare alcuni path nei file di configurazione, visto che le direcotory delle versioni precedenti sono organizzate e nominate
diversamente dalla versione 6.
Ecco nel dettaglio come procedere:
1. Ridefinire il collegamento simbolico /usr/local/tomcat facendolo puntare a /usr/local/apache-tomcat-5.5.20 (o comunque alla
versione scelta):
sudo ln -s /usr/local/apache-tomcat-5.5.20 /usr/local/tomcat

se non è una nuova installazione e avevate già definito il collegamento simbolico, prima di crearlo è necessario rimuoverlo:
sudo rm /usr/local/tomcat

2. Nel file /etc/init.d/tomcat modificare i CLASSPATH da:


export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar
export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar

in:
export CLASSPATH=/usr/local/tomcat/conf/lib/servlet-api.jar
export CLASSPATH=/usr/local/tomcat/conf/lib/jsp-api.jar

La differenza sta che lib/ nelle versioni precedenti è una sotto directory di conf/.
3. Nel file /etc/apache2/mods-available/jk.load sostituiamo:
JkMount /examples/* ajp13

con:
JkMount /servlets-examples/* ajp13

Questo perchè gli esempi non si trovano in examples/ come nella versione 6, ma in servlets-examples/.

Java JRE e JDK 1.6


Nel caso in cui avvessimo scelto di installare l'ultima versione della Java Virtual Machine e relativo JDK, basta sostiture in tutti i file di configurazione
ogni occorrenza di:
/usr/lib/jvm/java-1.5.0-sun

con:
/usr/lib/jvm/java-6-sun

Installazione del pacchetto Ubuntu


Ad ogni modo se vogliamo installare le versioni precompilate per Ubuntu presenti nei repository Universe, indipendentemente dalle dipendenze che si tirerà
dietro, basta semplicemente fare come segue:
1. Installiamo:
sudo apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

2. Avviamo Tomcat:
Configurare un Server con Ubuntu 74

sudo /etc/init.d/tomcat5 start

3. Connettiamoci al server usando la porta 8180 e non 8080 :


http://localhost:8180

Per configurare connector e Apache basta seguire quanto descritto in precedenza.

Ulteriori risorse
• Sito ufficiale
• Documentazione ufficiale Tomcat 5.5
• Documentazione ufficiale Tomcat 6.0
Configurare un Server con Ubuntu 75

Xampp
Versioni supportate:
Ubuntu 8.04 Hardy Heron
Ubuntu 7.10 Gutsy Gibbon

Introduzione
XAMPP è un sistema molto semplice per avere MySQL, PHP, Perl e molto altro sulla propria macchina.

Installazione
Scaricare l'archivio compresso presente sul sito del progetto. È possibile avere la lista completa delle versioni a questo indirizzo.
Dopo aver scaricato il file, scompattare l'archivio nella cartella /opt con i privilegi di amministrazione, digitando il seguente comando in una finestra di
terminale:
sudo tar xvfz xampp-linux-1.6.7.tar.gz -C /opt

Le versioni installate in precenza verranno sovrascritte.

Il programma è stato installato in /opt/lampp.

Avvio del programma


Per avviare il programma è sufficiente digitare il seguente comando in una finestra di terminale:
sudo /opt/lampp/lampp start

Nel terminale comparirà un messaggio simile al seguente:


Starting XAMPP for Linux 1.6.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.

Apache e MySql sono in esecuzione. Se si dovesse presentare degli errori consultare la relativa sezione nella guida presente sul sito ufficiale.

Verificare il funzionamento
Aprire un browser web e digitare ciò che segue nella barra degli indirizzi:
http://localhost

Apparirà la pagina iniziale di XAMPP, contenente alcuni link utili a testare le singole componenti installate e alcuni file di esempio.

Sicurezza
Non usare XAMPP in ambienti di produzione.

Non essendo concepito per usi professionali, il sistema mette a disposizione dei metodi di accesso semplicissimi ma poco sicuri.
Quello che segue è un elenco delle vulnerabilità del sistema:
1. l'amministratore del database MySQL non ha una password;
2. il servizio del database è accessibile da remoto con ProFtp, utilizzare la password «lampp» per l'utente «nobody»;
3. PhpMyAdmin è accessibile da remoto;
4. tutti gli esempi sono accessibili da remoto;
5. MySQL e Apache sono avviati con gli stessi permessi utente «nobody».
Per risolvere la maggior parte di queste vulnerabilità è sufficiente digitare il seguente comando in una finestra di terminale:
sudo /opt/lampp/lampp security

Verrà avviato un semplice strumento di configurazione che consentirà di impostare delle password per i vari servizi.

Supporto per PHP


La versione predefinita è la 5, è comunque possibile usare la versione precedente. Digitare in una finestra di terminale il comando adatto alle proprie
esigenze:
Configurare un Server con Ubuntu 76

• per passare a PHP 4:


sudo /opt/lampp/lampp php4

• per attivare PHP 5:


sudo /opt/lampp/lampp php5

• per conoscere la versione PHP usata:


sudo /opt/lampp/lampp phpstatus

Riepilogo comandi ed altre utilità


Quello che segue è un breve riepilogo dei comandi principali utili alla gestione del server XAMPP:
• start: avvia il servizio;
• stop : arresta il servizio;
• restart: arresta e riavvia il servizio;
• startapache: avvia solo apache;
• tartssl: avvia apache con il supporto SSL. Questo comando attiva il supporto SSL permanentemente, quindi al prossimo avvio di XAMPP, sarà
attivo;
• startmysql: avvia solo il database;
• startftp: avvia il server ProFTP. Attraverso tale servizio sarà possibile caricare file nel server web (nome utente «nobody», password «lampp»). Tale
comando attiva il supporto FTP in modo permanente, quindi al prossimo avvio di XAMPP, sarà attivo;
• stopftp: arresta il server ProFTP. Questo comando disattiva il supporto FTP permanentemente, quindi al prossimo avvio di XAMPP, tale servizio
non sarà attivo;
• stopapache: arresta Apache;
• stopssl: disattiva il supporto SSL per Apache. Al prossimo avvio, il supporto per SSL non sarà attivo;
• stopmysql: arresta il servizio MySQL;
• security: avvia un semplice programma per il controllo e la configurazione dei parametri di sicurezza.

Cartelle da ricordare
Quello che segue è un elenco delle cartelle fondamentale per il corretto funzionamento del sistema:
• /opt/lampp/bin/: cartella di installazione di XAMPP;
• /opt/lampp/bin/mysql: cartella per il monitoraggio MySQL;
• /opt/lampp/htdocs/:Apache: cartella radice del server web;
• /opt/lampp/etc/httpd.conf: file di configurazione di apache;
• /opt/lampp/etc/my.cnf : file di configurazione di MySQL.
• /opt/lampp/etc/php.ini : file di configurazione di PHP.
• /opt/lampp/etc/proftpd.conf : file di configurazione ProFTP.
• opt/lampp/phpmyadmin/config.inc.php : file di configurazione di phpMyAdmin.

Arrestare il servizio
Per arrestare il servizio è sufficiente digitare il seguente comando in una finestra di terminale:
sudo /opt/lampp/lampp stop

Il risultato dovrebbe essere simile al seguente:


Stopping LAMPP 1.6.7... LAMPP: Stopping Apache… LAMPP: Stopping MySQL… LAMPP stopped.

Disinstallazione
Per disintallare XAMPP è sufficiente digitare il seguente comando all'interno di una finestra di terminale:
sudo rm -rf /opt/lampp

Risoluzione dei problemi


Problemi all'avvio
Se si utilizza XAMPP su Ubuntu 7.10 «Gutsy Gibbon», all'avvio potrebbe presentarsi il seguente messaggio:
/opt/lampp/lampp: line 74: arch: command not found
Configurare un Server con Ubuntu 77

Starting XAMPP for Linux 1.6.3…


/opt/lampp/lampp: line 74: arch: command not found
/opt/lampp/lampp: line 74: arch: command not found
XAMPP: Starting Apache with SSL (and PHP5)…
/opt/lampp/lampp: line 74: arch: command not found
XAMPP: Starting MySQL…
/opt/lampp/lampp: line 74: arch: command not found
XAMPP: Starting ProFTPD…
XAMPP for Linux started.

Per risolvere il problema è sufficiente creare il file /bin/arch con un editor di testo con i privilegi di amministrazione e inserire al suo interno il seguente
contenuto:
uname -r

Salvare il file, chiudere l'editor e digitare il seguente comando in una finestra di terminale, allo scopo di impostare i permessi di esecuzione al file appena
creato:
sudo chmod +x /bin/arch

Infine non resta che riavviare il servizio, digitando il seguente comando in una finestra di terminale:
sudo /opt/lampp/lampp restart

Ulteriori risorse
• Documento originale
• Sito ufficiale del progetto
• Guida sul forum internazionale
Configurare un Server con Ubuntu 78

Mail
Introduzione
Questa guida illustra come installare e configurare un server mail.
È utile prendersi il tempo necessario per pianificare un corretto partizionamento del disco, possibilmente dedicando una partizione per /var/log e una per
/var/spool/mail.
La gestione della posta elettronica in rete coinvolge tre attori :
• un client di posta, che è il programma deputato alla formattazione dei messaggi di posta;
• un Mail Transport Agent, MTA, che è un server che si occupa di instradare la posta al destinatario;
• un delivery agent, DA, che è il server che si occupa di consegnare la posta al destinatario.
Il meccanismo di instradamento è basato sull'associazione fra dominio di posta elettronica e dominio DNS. Pertanto, il MTA per consegnare la posta verso il
destinatario utilizzerà interrogazioni DNS per effettuare la localizzazione del DA del destinatario.
Nei sistemi UNIX, il MTA usa il protocollo SMTP mentre i DA usano i protocolli POP3 o IMAP.
La fondamentale differenza fra i protocolli per il DA è che POP3 è progettato per il download dei messaggi sulla postazione client del destinatario, mentre
IMAP consente di mantenerli sul server. Entrambi tali protocolli presentano vantaggi e svantaggi.
Inoltre, la configurazione qui presentata è arricchita con filtri anti-spam non nativi di postfix (si usa il prodotto spamassassin) e con un software in grado di
coordinare la scansione asincrona dei messaggi di posta attraverso l'uso dei filtri anti-spam e antivirus (questo prodotto è mailscanner).
Verrà esaminata sia la configurazione del MTA per lo smistamento dei messaggi di utenti locali UNIX (ovvero gli utenti di sistema definiti con il comando
adduser), che quella che utilizza come backend un DB LDAP (ovvero un servizio di directory standardizzato con gestione degli account di utenti di rete).

Installazione
Da un terminale digitare:
sudo apt-get -y install postfix postfix-ldap spamassassin dovecot-pop3d dovecot-imapd mailscanner

Configurazione
Mail transfer agent
I file di configurazione si trovano nella directory /etc/postfix e il file fondamentale è main.cf. Un altro file importante nella configurazione di
postfix è /etc/aliases, che contiene tutti gli alias degli utenti di posta elettronica.
Per esempio, supponendo di avere un utente di sistema prova, è possibile definire nel file /etc/aliases un alias come segue:
p.miodominio.com: prova

che indica semplicemente che l'utente di sistema prova è identificato dal sistema MTA come p.miodominio.com.
Il corrispondente file di configurazione per i servizi LDAP è /etc/postfix/ldap-aliases.cf e contiene le seguenti direttive:
server_host = nome completo del server LDAP

search_base = dc=miodominio,dc=com

dove ovviamente è necessario sostituire miodominio e com con il proprio basedn del dominio di ricerca LDAP.
Per configurare postfix, aprire il file /etc/postfix/main.cf e modificare il messaggio di benvenuto:
smtpd_banner = nostro messaggio di benvenuto

Quindi modificare le righe seguenti di conseguenza:


myhostname = FQDN di questo server (es : wilcoyote.example.com)

mydomain = dominio di posta (=dominio DNS nel caso di LAN)

alias_maps = hash:/etc/aliases,ldap:/etc/postfix/ldap-aliases.cf

Questo dice al MTA che deve controllare, per la risoluzione dei nomi utente, prima il file /etc/aliases e poi il database LDAP referenziato dalle
direttive nel file /etc/aliases.
La direttiva:
myorigin = $mydomain

dice che si invia posta soltanto per il proprio dominio, mentre:


mydestination = dominio di posta (=dominio DNS nel caso di LAN) , localhost.localdomain,localhost

indica che si accetta posta indirizzata soltanto al proprio dominio o a localhost (127.0.0.1).
inet_interfaces = all
Configurare un Server con Ubuntu 79

questo dice che il MTA all'avvio sta in ascolto su tutte le interfacce di rete (potreste voler cambiare questo comportamento!!)
smtpd_client_restrictions = reject_maps_rbl , reject_unknown_client , permit

qui cominciano le restrizioni d'accesso native di postfix: questa dice di non accettare posta indirizzata o provenienete da siti di possibili spammers (indicati
nella direttiva maps_rbl_domains) e di non accettare connessioni da clients che non hanno record A in DNS
smtpd_sender_restrictions = reject_unknown_sender_domain , reject_non_fqdn_sender , permit

questa restrizione dice di non smistare posta proveniente da un mittente ignoto


smtpd_recipient_restrictions = reject_unauth_destination , reject_non_fqdn_recipient , reject_unknown_recipient_domain ,
permit

questa restrizione dice di non effettuare il relay (ovvero di non permettere di inviare posta elettronica da mittenti che non siano di questo sito) e di non
smistare posta proveniente da un mittente ignoto
N.B. : la restrizione reject_unauth_destination dice al server di posta di impedire l'open relay e sostituisce la direttiva check_relay_domains
smtpd_helo_restrictions = reject_invalid_hostname , reject_non_fqdn_hostname , reject_unknown_hostname , permit

queste restrizioni dicono di non accettare il saluto dal client che non risponda con un hostname esistente nel DNS (respingere se l'hostname presentato è
invalido , non è nel formato FQDN o non ha record A o PTR nè MX nel DNS).Queste restrizioni sono molto importanti , poichè ad oggi molti spammers
fanno uso di comandi helo-faked per velocizzare la spedizione di spam.
maps_rbl_domains = rbl.maps.vix.com,dul.maps.vix.com,relays.mail-abuse.org

questa restrizione dice di non smistare posta proveniente da o indirizzata verso i domini elencati
Ora potete avviare il servizio postfix del MTA con il comando:
/etc/init.d/postfix start

Tutti i log files inerenti lo startup dei servizi postfix ed i relativi accessi sono contenuti nei files /var/log/mail.warn, /var/log/mail.err,
/var/log/mail.info.
Qualora si voglia aggiungere un po' di sicurezza in più, c'è un'ulteriore direttiva da usare nel file main.cf per limitare lo spam. La direttiva è:
smtp_helo_restrictions = reject_invalid_hostname , reject_non_fqdn_hostname , reject_unknown_hostname ,
permit_nak*ed_ip_address , permit

Questa restrizione opera nel modo seguente :


• rifiuta l'accesso al servizio per client che non rispondono al messaggio di benvenuto del server Postfix con un nome host valido (gli spammers lo
fanno spesso per risparmiare tempo)
• rifiuta l'accesso al servizio MTA se il nome host passato di seguito al comando helo non è un fqdn hostname (cioè della forma mail.example.com)
• rifiuta l'accesso al servizio MTA se l'hostname che segue il comando helo non può essere risolto (questo capita quando lo spammer mette di seguito al
comando helo una stringa casuale , allora l'MTA interroga un DNS per risolvere il nome host immesso , se non lo trova rifiuta l'accesso)
• consente l'accesso se di seguito al comando helo viene concatenato un IP
Come vedete in coda viene messa la direttiva permit che dice che al di fuori delle restrizioni applicate tutto il resto viene accettato.
Applicate queste restrizioni con moderazioni perchè potrebbero impedire al servizio di funzionare correttamente.

DA
Per la configurazione del DA si proceda come segue : Eseguite il comando:
#vi /etc/dovecot/dovecot.conf

e modificate la riga protocols come segue :


protocols = pop3 pop3s imap imaps

questo abiliterà i servizi pop3(s) e imap(s) alla'avvio di dovecot.


A questo punto per avviare il vostro DA basta eseguire il comando :
#/etc/init.d/dovecot start

ed esaminando l'output del comando ps -A|grep dovecot noterete che il servizio si è avviato con successo.

Web mail
Il servizio di posta elettronica fruibile dal browser Web, webmail, richiede che siano installati il web server e il programma squirrelmail per l'accesso alle
mailboxes attraverso il browser web.
Ora si procede all'installazione di apache2 e di squirrelmail con i comandi :
#sudo apt-get -y install apache2

#sudo apt-get -y install squirrelmail

Per predisporre squirrelmail alla gestione della posta elettronica in modalità protetta (attraverso l'uso di certificati con SSL server-side) si userà il comando
per generare un certificato per il server web :
#apache2-ssl-certificate -days 3650
Configurare un Server con Ubuntu 80

dove 3650 è la durata di validità del certificato (10 anni, cambiarlo a proprio piacimento se si vuole).
A questo punto procedere all'aggiunta di un nuovo Virtual Host nel file /etc/apache2/sites-enabled/000-default come segue :
<VirtualHost 192.168.0.1>

SSLCertificateFile /etc/apache2/ssl/apache.pem

DocumentRoot /usr/share/squirrelmail

ServerName webmail.example.com

</VirtualHost>

dove ovviamente si sosituiranno 192.168.0.1 e webmail.example.com con l'IP e l'alias name del server di posta web.
Per sperimentare l'accesso attraverso imap da browser web non resta che eseguire i comandi :
#/etc/init.d/dovecot start

#/etc/init.d/apache2 start

ed immettere il comando da shell :


#firefox https://webmail.example.com:80 ed il gioco è fatto!

MailScanner
Per ottenere un ulteriore livello di protezione sul vostro MTA e DA potete associare una scansione antivirus ed un filtro anti-spam che effettuino il controllo
di ogni messaggio di posta smistato dal vostro sistema.
Come detto vi occorre il software MailScanner e un AntiVirus (nell'esempio riportiamo Clamav) che si installano nel modo seguente :
#sudo apt-get -y install mailscanner

#sudo apt-get -y install clamav-daemon

#sudo apt-get -y install clamav-freshclam

Effettuata l'installazione si proceda con il comando :


#vi /etc/MailScanner/MailScanner.conf

e si modifichino le righe seguenti :


VirusScanner''' = clamav

%org-name%''' = Nome della vostra Azienda

%report-dir%''' = /etc/MailScanner/reports/it

QuarantineInfections''' = no

Information Header Value''' = Informazioni personali dell'azienda

Warning Is Attachment''' = no

Notices Include Full Headers''' = yes

Spam List''' = ORDB-RBL SBL+XBL EasyNet-DNSBL BLITZEDALL SORBS-DNSBL spamcop.net

a questo punto salvate e riavviate mailscanner con il comando :


#/etc/init.d/mailscanner restart

Controllate il corretto avvio in /var/log/syslog e con il comando


ps -A|grep mailscanner

Migliorare le prestazioni
Il performance tuning dipende da alcuni parametri del vostro mail server :
• process availability
• CPU speed
• DNS lookup time
• disk I/O speed
• network throughput
Come effettuare il tuning del process availability :
• modificate il max numero di processi di postfix per rispondere ai picchi di carico
in main.cf :
default_process_limit = 100

L'ottimizzazione procede attraverso l'analisi dei fattori che condizionano le prestazioni di un Mail Server , ovvero :
Configurare un Server con Ubuntu 81

• CPU limitation :
se il carico sul vostro processore supera il 50% (esaminatelo con top ed individuate se la causa è imputabile ai processi di postfix) allora cambiate
processore!
• DNS lookup :
poichè il primo passo per inoltrare emails sono queries DNS , se il tempo di risposta per una query DNS è alto pensate a ottimizzare il vostro DNS o meglio
ancora implementate un caching NS al vostro interno per velocizzare le risoluzioni
• Disk I/O limitation :
usate dischi SCSI (postfix usa code di mail in /var/spool/mail e sposta i dati da una coda all'altra) e montate le partizioni con l'opzione noatime (postfix non
usa i timestamps)

Sicurezza dei protocolli di posta


Il protocollo SMTP non è stato progettato per essere sicuro.
Come vedete per spedire un messaggio di posta elettronica non è necessaria alcuna autenticazione da parte dell'utente , pertanto chiunque può tentare di
sfruttare problemi di sicurezza di un server SMTP.
Vi chiederete allora se è possibile utilizzare meccanismi di protezione per aumentare la sicurezza dei vostri servers SMTP,in particolare per crittografare
un'intera sessione (ovvero dal primo all'ultimo bit).
L'uso dei certificati digitali così come quello della Strong Authentication con SASL è possibile attraverso opportuni moduli messi a disposizione dai
programmi di posta stessi , il problema è (per fare l'esempio della protezione tramite certificati) che ciò che verrà crittografato è il traffico fra il client ed il
vostro server di posta , ma al di fuori del vostro server (ovvero fino al server SMTP che smista la posta per il dominio del destinatario) le comunicazioni
avverranno in chiaro...questo a meno che anche il dominio remoto non utilizzi un sistema di certificati come il vostro.
Questo perchè la protezione di una sessione SMTP con certificati richiede che tutte le entità che comunicano abbiano un certificato verificabile da una Root
CA...pertanto se anche uno solo dei vostri destinatari non avrà un certificato , allora la comunicazione fra il vostro server di posta ed il server di posta di quel
dominio avverrà in modo non protetto.
E considerazioni analoghe possono essere fatte per i metodi di autenticazione forte che utilizzano la libreria SASL.
Pertanto l'implementazione di meccanismi di protezione delle intere sessioni di posta è subordinata all'implementazione di una PKI globale (cioè estesa a
tutti i domini di posta da voi raggiungibili) nel caso dei certificati digitali e di un protocollo SMTP che richieda l'autenticazione di default nel caso di SASL.
Questo richiederà probabilmente un nuovo standard per le comunicazioni di posta.
Pertanto dovete valutare se vale la pena implementare all'interno della vostra azienda la protezione delle sessioni SMTP con questi metodi. Questo potrebbe
fare al caso vostro se volete proteggere le comunicazioni interne , ma quelle con l'esterno resteranno sempre esposte al rischio di attacchi e violazioni.
Per fare un esempio concreto se state gestendo un sistema di posta fra N aziende consociate che si scambiano dati sensibili , allora potreste voler creare una
PKI ed utilizzare i certificati emessi per garantire l'integrità e la confidenzialità delle informazioni scambiate durante le sessioni. Tuttavia deve esservi chiaro
che tutte le sessioni di posta con domini esterni a tali consociate non saranno prote*tte.
E per quanto riguarda i protocolli POP3 e IMAP , la cosa è anche peggiore.
I clients POP3 e IMAP nella loro configurazione standard inviano le credenziali di autenticazione dell'utente di posta in chiaro sulla rete... Pertanto chiunque
sarà in grado di catturarle avrà una facile base di accesso al vostro sistema.
La protezione tramite SASL o certificati digitali è sempre possibile , ma come spiegato per essere realmente utile dovrebbe riguardare tutti i domini da cui
ricevete la posta , non soltanto il vostro.
Tuttavia se non è possibile assicurare una protezione globale di un'intera sessione di posta, la crittografia a chiave pubblica rende comunque possibile
proteggere almeno i dati da voi scambiati in un messaggio...cioè il contenuto di tale messaggio oltre che file allegati.
Questo è la'rgomento del paragrafo seguente.

Protezione di messaggi con GPG


GPG (Gnu Privacy Guard) è un programma che utilizza la crittografia a chiave asimmetrica per garantire la confidenzialità e l'integrità delle informazioni
scambiate in un messaggio di posta.
Per utilizzarlo dovete installare su tutte le postazioni client il pacchetto gpg con il comando :
sudo apt-get -y install gpg

Pertanto voi potete crittografare il contenuto di un messaggio di posta utilizzando la chiave pubblica dell'utente al quale volete spedirlo e firmare il file
crittografato con la vostra chiave privata in modo da assicurarne l'autenticità.
Descriviamo con un esempio pratico il flusso delle azioni che l'utente pippo@example.com deve fare per spedire un messaggio protetto all'utente
pluto@prova.edu.
• L'utente pippo crea la sua coppia di chiavi privata/pubblica con il comando
gpg --gen-key

Selezionare 1 come algoritmo (ElGamal) per poter utilizzare le chiavi per la cifratura e la firma.
• pippo visualizza le chiavi create con il comando
gpg --list-keys

• pippo esporta la sua chiave pubblica nel repository comune utilizzando il comando
gpg --export -o pippo
sftp pippo@publickeys:/keys/pippo
Configurare un Server con Ubuntu 82

• pippo preleva la chiave pubblica di pluto@prova.edu dalla directory /keys sul server publickeys (che funge da repository comune di tutte le chiavi
pubbliche degli utenti del sistema di posta comune) e la importa nel suo DB delle chiavi (generato con gpg --gen-key)
sftp pippo@publickeys:/keys/pluto
gpg --import pluto

questo metterà la chiave di pluto nella directory corrente di pippo.


• pippo ora crittografa il messaggio di posta contenuto nel file README.txt con la chiave pubblica di pluto e lo firma con la sua chiave privata
gpg -se -r pluto README.txt

• pippo spedisce il messaggio README.txt.gpg a pluto@prova.edu usando il suo mail server


• pluto importa la chiave pubblica di pippo con il comando
sftp pluto@publickeys:/keys/pippo
gpg --import pippo

• l'utente pluto va a decifrare il messaggio con il comando


gpg -o README.txt -d README.txt.gpg

• se pippo visualizza un messaggio del tipo


Good signature...
allora vuol dire che il messaggio non è stato alterato durante la consegna , altrimenti in caso di compromissione visualizzerà un messaggio del tipo
Bad Signature...
Autore : Cristiano Valli

Ulteriori risorse
• Sito ufficiale del progetto Postfix
• Sito ufficiale del progetto Dovecot
• Sito ufficiale del progetto SquirrelMail
Configurare un Server con Ubuntu 83

MailSqlServer
Introduzione
Questa guida spiega come configurare un server di posta con supporto SQL.

Installazione
Installare i seguneti pacchetti con i privilegi di amministrazione:
apt-get install postfix-mysql
apt-get install mysql-server
apt-get install dovecot-pop3d
apt-get install dovecot-imapd
apt-get install apache2
apt-get install libapache2-mod-php4

Configurazione SMTP
Modificare con permessi di amministratore il file /etc/postfix/main.cf aggiungendo la direttiva:
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
alias_database = mysql:/etc/postfix/mysql-aliases.cf

Si eliminino le direttive hash:/etc/aliases se si vuole configurare un sistema che accetti posta soltanto per utenti definiti nel vostro
database SQL!
Il file /etc/postfix/mysql-aliases.cf è fatto nel modo seguente:
user = someone
password = some_password
dbname = customer_database
table = mxaliases
select_field = forw_addr
where_field = alias

Come si vede, bisogna specificare utente, password, database, tabella del database Sql che contiene le corrispondenze fra utenti di posta e alias names ed è
necessario definire anche i campi da selezionare per ottenere l'alias dell'utente di posta definito.
Si crei il database e le tabelle come nell'esempio che segue :
mysql -u root -p -D postaliases

mysql> create table mxaliases (forw_addr varchar(64),alias varchar(64),password varchar(64),home varchar(64),uid integer not
null,gid integer not null );

mysql>insert into mxaliases values ('giulio','g.bianchi','njZCfywEU/olE,'/home/postaliases','0','0');

Generare le password in hashing CRYPT con l'utility di apache2 htpasswd2 nel modo seguente :
htpasswd2 -c postaliases_passwords m.rossi

Per aggiungere le password degli utenti usare il comando :


htpasswd2 postaliases_passwords g.bianchi

oppure per aggiornare o eliminare righe dalla vostra tabella usare i comandi SQL :
mysql>update mxaliases set alias='g.bianchi' where forw_addr='giulio';
mysql> delete from mxaliases where forw_addr='marco';

Si controlli il file /etc/mysql/my.cnf e si verifichi che l'indirizzo di binding del database mysql (dovrebbe essere l'IP di rete del server MYSQL e non
127.0.0.1). Nel nostro esempio è:
bind_address = 192.168.77.1

e verificate che tutto vada bene con il comando:


#mysql -u root -p -h DNSdbmysql -D postaliases

sostituire a DNSdbmysql l'IP o il nome dell'host che opsita il database.


Riavviate mysql e postfix :
/etc/init.d/mysql restart
/etc/init.d/postfix restart

la configurazione del MTA è finita , ora passiamo alla configurazione del server POP3 e IMAP.

Configurazione di POP3 e IMAP


• Generare la home directory degli utenti e renderla scrivibile per tutti con il comando:
Configurare un Server con Ubuntu 84

mkdir /home/postaliases;chmod -R 777 /home/postaliases

• Modificare il file /etc/dovecot/dovecot-mysql.conf come segue:


db_host = wilcoyote.example.com
db_port = 3306

#db_unix_socket = /var/tmp/mysql.sock

db = postaliases
db_user = root
db_passwd = azsxdcfv
db_client_flags = 0

default_pass_scheme = CRYPT
password_query = SELECT password FROM mxaliases WHERE alias = '%n'
user_query = SELECT home, uid, gid FROM mxaliases WHERE alias = '%n'

• Controllare sempre che nel file /etc/dovecot/dovecot.conf vi sia la riga seguente:


protocols = pop3 pop3s imap imaps

assicurarsi che vi siano le direttive


auth_userdb = mysql /etc/dovecot/dovecot-mysql.conf
auth_passdb = mysql /etc/dovecot/dovecot-mysql.conf

e modificare le righe:
first_valid_uid = 0
last_valid_uid = 10000
first_valid_gid = 0
last_valid_gid = 10000

I valori di last dipendono da quanti utenti avrà il sistema di posta.


• Ora riavviare dovecot con
sudo /etc/init.d/dovecot restart

e testare la configurazione.

Webmail protetta con SSL


Procedere come segue:
• Creare il certificato per la protezione di apache2 con il comando:
#apache2-ssl-certificate -days 3650

Cambiare 3650 con la durata in giorni del certificato


• Aggiungere un VirtualHost a /etc/apache2/sites-enabled/000-default come da esempio:
<VirtualHost 127.0.0.1>

ServerName webmail.example.com
DocumentRoot /usr/share/squirrelmail
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>

• Controllare che in /etc/apache2/mods-enabled/ siano presenti i moduli:


ssl.conf
ssl.load
php4.conf
php4.load

• Riavviare apache2
sudo /etc/init.d/apache2 restart

• Assicurarsi che siano avviati sia dovecot che postfix


sudo /etc/init.d/postfix restart
sudo /etc/init.d/dovecot restart
Configurare un Server con Ubuntu 85

Qmail
Introduzione
QMAIL è un Mail Transfer Agent. I binari di QMAIL sono liberamente distribuibili ma i sorgenti non possono essere modificati.

Installazione
Prima di tutto occorre procurarsi i sorgenti disponibili sui mirror di QMAIL in formato tar. Il nome del pacchetto è netqmail-1.05.tar.tar (l'attuale
versione).

Tutti i comandi che seguono andrebbero eseguiti come root.

Scompattare l'archivio:
tar xzvf netqmail-1.05.tar.tar

e posizionarsi nella directory del pacchetto


cd netqmail-1.05

in cui lanciare i seguente comando:


./collate.sh

Entrare nella directory netqmail-1.05 con il comando:


cd netqmail-1.05

Creare i gruppi e le utenze che QMAIL userà per andare in esecuzione:


groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails

e infine creare la cartella che conterrà QMAIL con il comando:


mkdir /var/qmail

Compilare
make setup check

avviare il DNS (se disponibile) e immettere il comando:


./config-fast your.full.host.name

Configurazione
Lo script config-fast si occupa di configurare your.full.host.name nel file /var/qmail/control/me. Lo inserisce anche in
control/locals e control/rcpthosts. In questo modo qmail è predisposto per accettare e mandare mail per l'host your.full.host.name.
Se tutto va bene si riceveranno dei messaggi simili a questi:
Putting wilcoyote.example.com into control/me...
Putting example.com into control/defaultdomain...
Putting example.com into control/plusdomain...
Putting wilcoyote.example.com into control/locals...
Putting wilcoyote.example.com into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to wilcoyote.example.com.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

QMAIL non supporta nativamente /etc/aliases per il quale si avrà bisogno del pacchetto aggiuntivo fastforward. Lo si installi se si sta migrando a
QMAIL da un altro Mail Transfer Agent, altrimenti, si può usare il meccanismo nativo di QMAIL per la gestione degli aliases.
Creare degli aliases nella directory ~alias/ come segue:
• touch ~alias/.qmail-postmaster;chmod 644 ~alias/.qmail-postmaster

tutte le email dirette a Postmaster saranno inoltrate a ~alias/Mailbox


• touch ~alias/.qmail-qmailer-daemon;chmod 644 ~alias/.qmail-qmailer-daemon
touch ~alias/.qmail-root;chmod 644 ~alias/.qmail-root

questo è l'alias per l'utente root (in QMAIL non dovrebbe mai ricevere posta)
• touch ~alias/.qmail-default;chmod 644 ~alias/.qmail-default
Configurare un Server con Ubuntu 86

a questo alias vengono indirizzate tutte le email con destinatario non raggiungibile (anche se dopo 2 volte un messaggio con destinazione
irraggiungibile va a Postmaster)
QMAIL contiene un DA proprio (qmail-local).
qmail-local consegna le email nella directory ~user/Mailbox, piuttosto che in /var/spool/mail/user. Usa il formato mbox, con lockf o flock
come meccanismo di lock dei file di posta.

Migrazione da un MTA esistente


Spostare tutte le caselle di posta presenti nella cartella /var/spool/mail/user in ~user/Mailbox. Per sicurezza farlo in single-user mode, ovvero
con il comando:
init 1
mv /var/spool/mail/user ~user/Mailbox

Se si vuol mantenere ancora il vostro vecchio MTA procedere come segue.


Come root eseguire, per ogni utete, il comando:
ln -s /var/spool/mail/user ~user/Mailbox

Assicurarsi che i permessi di /var/spool/mail siano impostati in 1777, per impedire che gli utenti possano rimuovere i link accidentalmente.

Se come DA si usa procmail assicurarsi di modifcare la variabile SYSTEM_MBOX in config.h e ricompilate.

Se /var/spool/mail è estesa, si può configurare il proprio software per guardare direttamente in ~user/Mailbox aggiungendo:
• setenv MAIL $HOME/Mailbox

nel file .cshrc;


• MAIL=$HOME/Mailbox; export MAIL

nel file .profile


Adesso il passo finale:
cp -R /var/qmail/boot/home /var/qmail/rc

Ricordarsi di aggiungere la & nel file /var/qmail/rc altrimenti il vostro sistema si bloccherà al riavvio!!

Ora creare i links per l'avvio al boot di qmail come segue:


ln -s /var/qmail/rc /etc/rc2.d/S20qmail

mentre per arrestare qmail basta il comando:


kill -KILL `pidof qmail-send`

Riavviare e provare se tutto va bene.


Configurare un Server con Ubuntu 87

Stampa
Versioni supportate:
Ubuntu 8.04 Hardy Heron
Ubuntu 7.10 Gutsy Gibbon
Ubuntu 6.06 Dapper Drake

Introduzione
CUPS (Common Unix Printing System) è un spooler di stampa per sistemi operativi UNIX ed è in grado di trasformare un computer in un server di stampa.
Per la gestione di CUPS si può utilizzare l'interfaccia web presente nel pacchetto.
Non è necessario installa alcun pacchetto, CUPS viene installato in maniera predefinita su Ubuntu.

Accedere all'interfaccia web


Per accedere all'interfaccia web di CUPS è sufficinete inserire nella barra di navigazione del browser web il seguente indirizzo:
http://localhost:631

Nella prima schermata è possibile fare tutte le operazione principali di gestione del server, incluse l'installazione delle stampanti e delle classi.

Configurazione
Accedere alla configurazione
La configurazione del server di stampa risiede nel file /etc/cups/cups.conf ed è possibile modificarla con un editor di testo con i privilegi di
amministrazione; in alternativa, una volta effettuato l'accesso tramite interfaccia web, per accedere alla configurazione è sufficiente fare clic su «Gestione
Server», dunque su «Modifica file di configurazione».
Terminata la configurazione, per applicare le modifiche effettuate è necessario riavviare il servizio digitando il seguente comando in una finestra di
terminale:
sudo /etc/init.d/cupsys restart

Abilitare la gestione da remoto


Per abilitare la gestione da remoto del server di stampa è necessario aprire il file /etc/cups/cups.conf con un editor di testo con i privilegi di
amministrazione e cercare la seguente riga:
Listen localhost:631

Modificarla come segue:


Listen 631

Salvare il file e chiudere l'editor. Una volta riavviato il servizio sarà possibile accedere alla gestione di CUPS da remoto, digitando nella barra degli indirizzi
del proprio browser l'indirizzo IP del server di stampa seguito dalla porta 631, come nel seguente esempio:
http://192.168.1.4:631

Connessioni sicure
Per aumentare la sicurezza del server di stampa, è consigliato abilitare il supporto SSL. Aprire il file /etc/cups/cups.conf con un editor di testo con i
privilegi di amministrazione e aggiungere in fondo la seguente riga:
SSLListen 443

Aggiungere una stampante


Per aggiungere una stampante basta selezionare il bottone «Aggiungi Stampante» e compilare i campi:
• Name: Nome della stampante.
• Location: Posto dove si trova la stampante
• Description: Descrizione della stampante
Una volta completati tutti i campi continuare la procedura cliccando «Continua», nel prossimo passo si deve scegliere la stampante dal menu a tendina, se il
dispositivo non è rilevato automaticamente si può scegliere il metodo di connessione ed aggiungerla manualmente impostando il socket oppure l'IP della
stampante e fare ancora click su «Continua». Nel prossimo passo bisogna selezionare il modello della stampante nell'elenco proposto, mentre se la
stampante non è disponibile bisogna aggiungerlo tramite il file PPD, per finire «Aggiungi stampante» cosi verrà creato il nuovo dispositivo.

Ricerca dei driver


Purtroppo non tutti i modelli delle stampanti sono presenti in CUPS quindi bisogna ricercare i driver sul sito del fornitore oppure utilizzare banche dati
Configurare un Server con Ubuntu 88

opensouce come LinuxPrinting.

PDF Virtuale
Per creare una stampante PDF virtuale con CUPS è necessario installare il pacchetto cups-pdf, dopo di che aggiungere la stampante nello stesso metodo
indicato sopra, come driver si deve selezionare Printing into PDF file (Generic PDF file Generator) e fare «Continua» come modello selezionare Generic
PDF file generatored aggiungere la stampante.

Gestione della stampante


Sempre dalla Home di CUPS' cliccando sul bottone «Gestione Stampanti» è possibile accedere alla lista delle stampanti configurate sul print server, da
dove è possibile gestire ed eliminare le code di stampa oppure eliminare definitivamente la stampante.

Condividere una stampante


Entrando nella gestione del server è possibile abilitare l'opzione Condividi le stampanti pubblicate connesse a questo sistema in modo da condividere tutte
le stampanti sul print server, se per qualche motivo non si vuole un determinata stampante condivisa si deve entrare nelle impostazioni e abilitare non
pubblicare stampante in questo modo la stampante non sarà più disponibile.

Utilizzo stampante condivisa dal server tramite client Windows 2000/XP


Seguiti i paragrafi Gestione remota e Condividere stampante. In Windows andare in Pannello di controllo -> Stampanti e fax Cliccare Aggiungi stampante.
Selezionare Stampante di rete o Stampante collegata ad un altro computer Scegliamo la voce Connetti ad una stampante in Internet o della rete
domestica o aziendale: e inserire nel campo Url http://ip_del_server_di_stampa:631/printers/nome_della_stampante dove:
• nome_della stampante lo si può leggere accedendo alla pagina http://ip_del_server_di_stampa:631/printers
Nell'inserire il nome, rispettare maiuscole e minuscole. per esempio un Url potrebbe essere:
http://192.168.1.10:631/printers/HPPSC2355

Non ci resta che assegnare in Windows il driver postscript alla stampante. Scegliere il driver Apple LaserWriter 16/600 PS se la nostra stampante è
monocromatica oppure si vuole stampare in monocromia oppure quello Apple Color LW 12/660 se si desidera stampare a colori.
Ultimo passo :assegnare il nome alla stampante .Di default il nome della stampante sarà LaserWriter 16/600 PS o Apple Color LW 12/660 a seconda della
scelta precedente.;sostituirlo con quello della stampante.

Classi
La classe è un gruppo di stampanti collegate ad un server di stampa. Per creare una classe accedere all'interfaccia web e fare clic su «Aggiungi classe», verrà
chiesto il nome della classe e tutte le stampanti che ne fanno parte. Quando si invierà una stampa ad una classe,il lavoro di stampa verrà inviato alla prima
stampante disponibile della classe.

Log di CUPS
CUPS dispone di due tipi di log il primo chiamato access_log mentre l'altro error_log entrambi si trovano nella cartella /var/log/cups. Nel primo log
vengono registrati tutti li accessi effettuati al print server se sono avvenuto con successo oppure ci sono stati degli errori nella conessione. Mentre error_log
vengono registrati gli errori nella configurazione del server. CUPS permette di impostare diversi livelli di verbosità del registro impostando nel file di
configurazione il parametro LogLevel da info a debug o debug2 per avere maggiori informazioni nei log, però questo comporta un maggior peso dei file
visto che deve registrare molte più informazioni.

Ulteriori risorse
• Sito ufficiale del progetto
• Voce enciclopedica
• Configurazione di CUPS
Configurare un Server con Ubuntu 89

Irc
Introduzione
Ho creato questa pagina per cercare di aiutare ,fornendo una dettagliata guida, le persone interessate a installare sul proprio Pc un server Irc con annessi i
relativi Services (NickServ, ChanServ, MemoServ). Ci saranno inoltre alcune tabelle che presenteranno i nomi di alcuni dei migliori server esistenti al
momento con un relativo HOWTO per l'installazione del server stesso.Prenderò come esempio per la guida, l'applicativo ircd-hybrid.

Software per creare un server Irc


austhex7.5.p11 http://bahamut.dal.net/

Bahamut 1.8.3 http://bahamut.dal.net/

dancer-ircd 1.0 http://www.doc.ic.ac.uk/~aps100/dancer/

DreamForge 4.6.7 http://www.dal.net

IRCd 2.10.3p3 http://www.irc.org/

IRCd 2.10.10 http://ircu.sourceforge.net/

TR-IRCD 5.7.3 http://tr-ircd.sourceforge.net/

UltimateIRCd 3.0.0 http://www.shadow-realm.org/

Unreal 3.2.4 http://www.unrealircd.com/

Ircd-Hybrid http://ircd-hybrid.com/

Installazione (ircd-hybrid)
E' possibile installare Ircd-hybrid in due modi:
• Ircd-hybrid è disponibile nel componente universe dei repository ufficiali. Dopo aver abilitato tale componente è sufficiente installare il pacchetto
ircd-hybrid.
• Tramite compilazione del codice sorgente(Installare programmi da sorgenti).
Nota: È importante ricordarsi di cambiare la configurazione nel file ircd.conf a seconda delle proprie esigenze.
Dopo aver installato il server, basterà far partire il demone (spesso è inizializzato automaticamente dopo la prima installazione), e tramite il proprio client Irc
collegarsi ad esso digitando:
/server 127.0.0.1

Passiamo ora ad analizzare i software disponibili per poter includere nel proprio server anche i Services, utilissimi applicativi che hanno numerose funzioni,
come quella relativa al salvataggio degli utenti, dei loro poteri e delle loro relative password. Alcuni pacchetti services esistenti:
Anope 1.7.14 http://www.anope.org/

Anope 1.7.14 MySQL http://www.anope.org/

Auspice 2.8 Beta http://www.inmean.com/default.asp

Epona 1.4.14 http://www.epona.org/

Epona 1.4.14 diff http://www.epona.org/

Hybserv2 1.9.2 http://www.hybserv.net/

IRC Defender 1.3.6 http://ircdefender.sourceforge.net

IRC Services 4.5.40 http://www.ircservices.esper.net/

NeoStats 2.5.3 http://www.neostats.net/

srvx 1.1.2 http://srvx.sourceforge.net/


Configurare un Server con Ubuntu 90

Come installare un pacchetto "Services"? (Utilizzerò come esempio i


services epona)
Prima di tutto, bisogna scaricare i file sorgente direttamente dal sito del produttore compilandoli come abbiamo fatto nel passaggio precedente (./configure -
make && make install). Dopo aver completato questa parte, possiamo passare invece alla configurazione del file services.conf, centro di comando per tutti i
dettagli riguardanti i services che risiederanno nel nostro server. All'interno troverete numerose parti vuote, che richiedono l'inserimento di alcuni dettagli
come il nome del vostro server, l'eventuale password per i server privati, gli username e le password degli operatori e degli amministratori. Il metodo più
veloce per poter far funzionare epona con ircd-hybrid è quello di aggiungere nel file ircd.conf del demone IRC, queste linee: ( facendole coincidere con
quelle identiche presenti nel file di configurazione di Epona)
Y:27:180:0:0:4000000
C:127.0.0.1:YourPwd:Services.LocalHost.Net::30
N:127.0.0.1:Yourpwd:Services.LocalHost.Net::30

U:Services.LocalHost.Net:*:*

H:*::Services.LocalHost.Net

Nota: Services.LocalHost.Net è il nome usato anche nelle configurazioni del file services.conf.
È fondamentale inoltre che la password "Yourpwd" dovrà essere la stessa presente nel file services.conf.
Dopo di che per verificare che tutto abbia funzionato, avviate i services, entrando nella cartella di "Epona" e digitando:
./services

Se tutto ha funzionato, dopo aver preso possesso dei poteri di aministratore, riceverete un messaggio che vi confirmerà che i servizi sono stati connessi al
server in uso con successo. Se questo non dovesse funzionare, vi inviterei a visualizzare i file di log, che tracciano ciò che ha causato l'errore nella
connessione.

Ulteriori risorse
• Documento originale
• Sito ufficiale del progetto
Configurare un Server con Ubuntu 91

ServerPeerToPeer
Versioni supportate:
Ubuntu 7.04 deprecated

Introduzione
In questa pagina sono presenti delle istruzioni utili alla configurazione di un server peer-to-peer per usi domestici.

Preparativi
Preparare la macchina
Allo scopo di ridurre il consumo di corrente al minimo indispensabile, è consigliato utilizzare una macchina con una ridotta dotazione di hardware. La
istruzioni contenute nella presente guida sono state verificate e testate sulla seguente macchina:
Macchina utilizzata

Processore Pentium III 500Mhz E socket pga370

MiB di RAM 256

Scheda video Generica PCI

Disco fisso Hard disk Maxtor 80 GiB

Scheda di rete Ethernet Lan 3COM 10/100 PCI

È consigliato disabilitare e scollegare dalla scheda madre tutto l'hardware inutilizzato, come le periferiche multimediali e i vari lettori di floppy
disk e CD-Rom.

Installazione del sistema operativo


È consigliato installare la versione server di Ubuntu 7.04 «Feisty Fawn». In alternativa è possibile procedere anche con la versione desktop.

Installazione
Una volta terminata l'installazione di Ubuntu è necessario procedere all'installazione di Wine, eMule e i servizi samba e ssh.

Installazione di Wine, Samba e OpenSSH


Consultare le guide Wine, Samba e OpenSSH.

Installazione di eMule
Scaricare e salvare sul proprio Desktop questo file. Infine, aprire una finestra di terminale e digitare il seguente comando:
wine ~/Desktop/eMule0.48a-Installer.exe

Configurazione
Configurazione di firewall e router
È sufficiente configurare e abilitare le porte TCP/UDP per eMule, compresa la «8000» per il webadmin, e la porta per l'accesso via ssh.

Configurazione di Samba
Per configurare il servizio samba è sufficiente inserire la password per il proprio utente (necessario per l'accesso da sistemi Windows) con il seguente
comando:
sudo smbpasswd

È necessario indicare a samba il percorso della cartella dei file condivisi di eMule. A tale scopo è sufficiente aprire il file /etc/samba/smb.conf con il
seguente comando:
sudo nano /etc/samba/smb.conf

Dunque aggiungere in fondo al file le seguenti righe, sostituendo la dicitura «$NOMEUTENTE» con il proprio nome utente:
Configurare un Server con Ubuntu 92

[Emule]
path = /home/$NOMEUTENTE/.wine/drive_c/Programmi/eMule/Incoming
available = yes
browseable = yes
public = yes
writable = yes

Infine è possibile configurare VNC in modo da accedere al proprio server da remoto. A tale scopo è utile fare clic su Sistema -> Preferenze -> Desktop
remoto.

È inoltre possibile attivare il servizio con protezione della password.

Configurazione di eMule
In modo da poter accedere via web al programma è necessario andare su Opzioni -> WebServer dunque spuntare la casella «Attivo».

Accedere al server
È possibile accedere al server appena installato da un altro computer tramite il ssh. Aprire una finestra di terminale e digitare il seguente comando:
ssh user@ip-server

In alternativa è possibile accedere tramite vncviewer con il seguente comando:


vncviewer ip-server

Mentre la dicitura «user» va sostituita con un nome utente accreditato per l'accesso al server, «ip-server» va sostituita con l'indirizzo IP del server,
es. 192.168.100.1.

Risoluzione dei problemi


Blocco prima della schermata di avvio
È possibile che il sistema, se avviato senza tastiera, si blocchi prima della comparsa della schermata di boot. Una buona soluzione è cercare all'interno del
BIOS della scheda madre il parametro «halt on» e impostarlo su «no errors».

Il webadmin di eMule non funziona


Digitare il seguente comando:
nmap

Nel caso in cui la porta «8000» non risulti aperta provare a lanciare eMule con il seguente comando:
sudo wine eMule.exe

Impossibile accedere ad eMule tramite ssh


Per ovviare al problema è sufficiente digitare il seguente comando:
export DISPLAY=:0.0

Ulteriori risorse
• Topic originale sul forum di Ubuntu-it
• Guida al port forwarding

Potrebbero piacerti anche