Guida Linux Server

Transcript

Guida Linux Server
Guida Linux Server
Introduzione e installazione
1. 1. Panoramica generale
Cos'è un server, i vantaggi di Linux in ambienti server, le principali distribuzioni
2. 2. Installazione Ubuntu Server
Come installare la versione server di Ubuntu 9.10
3. 3. Configurazione della rete ed installazione software di base
Impariamo a configurare la connessione alla rete del proprio server ed installiamo gli
strumenti indispensabili
I servizi Web
1. 4. Installare un web server: Apache
Installiamo il web server più comunemente utilizzato: Apache in versione 2
2. 5. Configurare il web server Apache
Le operazioni necessarie per la messa a punto del web server Apache
3. 6. Installare PHP e MySQL
Vediamo come installare il motore PHP ed integrarlo con MySQL per la gestione dei
database
4. 7. Configurare PHP e MySQL
Come impostare e configurare al meglio i server PHP e MySQL
I servizi per posta elettronica e file
1. 8. Installare un server mail: Postfix
Come installare il server di posta elettronica Postfix
2. 9. Configurare Postfix
Uno sguardo alla configurazione di Postfix e al suo utilizzo
3. 10. Installare Samba per la condivisione dei file
Installiamo il servizio per condividere file in una rete Linux o in una rete mista
Windows/Linux
4. 11. Configurare Samba
Come configurare Samba per tutte le operazioni che può eseguire
I servizi per DNS e accesso remoto
1. 12. Installare un DNS Server: BIND9
Vediamo come installare il server per la risoluzione degli indirizzi (DNS) BIND9
2. 13. Configurare Bind
Configurazione e messa a punto del server DNS BIND9
3. 14. Installare SSH e FTP
Come installare due tra i più diffusi sistemi di accesso da remoto: via protocollo SSH o
protocollo FTP
4. 15. Configurare SSH e FTP per accedere da remoto
Vediamo come impostare e configurare con sicurezza queste due vie di accesso al proprio
server
5. 16. Installare e configurare Crontab e Anacron
Installiamo e configuriamo gli strumenti necessari all'esecuzione di comandi in maniera
automatica
La sicurezza
1. 17. Iptables: configurare il firewall
Impostiamo le regole del firewall Iptables per consentire ai processi di utilizzare la rete in
maniera sicura
2. 18. mod_security e mod_ssl
Moduli di protezione aggiuntiva per Apache: maggiore sicurezza e crittografia delle
connessioni
3. 19. Backup
Come avere sempre copie di backup dei file presenti sul proprio server: tar e rsync
4. 20. SpamAssassin
Combattiamo lo spam con SpamAssassin, applicazione indispensabile per un server mail
Strumenti di amministrazione
1. 21. EHCP (Easy Hosting Control Panel)
Semplice e comodo pannello per la gestione di diverse impostazioni
2. 22. Webmin
Installiamo e configuriamo al meglio Webmin
Servizi utili
1. 23. Gestione dei servizi
Vediamo come avviare, stoppare e gestire i principali servizi
2. 24. Monitoraggio dell'hardware - I
Hdparm e smartctl. Come tenere sempre sotto controllo lo stato della macchina: il disco
rigido.
3. 25. Monitoraggio dell'hardware - II
Memtest86+ e lm_sensors. Come tenere sempre sotto controllo lo stato della macchina: la
memoria Ram e le temperature
Panoramica generale
Vi siete mai chiesti come fanno i siti web che visitate a essere sempre disponibili e ad offrire i
servizi che mettono a disposizione in ogni momento della giornata? La risposta è molto semplice, e
nota ai più: ogni sito web, infatti, è ospitato su un server, una macchina costantemente collegata alla
rete e sul quale vengono installati un sistema operativo ed una serie di applicazioni e strumenti tali
da poter fornire agli utenti che si collegano da tutto il mondo servizi ed informazioni. Un server
non è altro che un normale computer, a volte dotato di configurazioni hardware appositamente
studiate per tale obiettivo, collegato ad internet: per tale motivo, è possibile creare in maniera non
particolarmente complessa un proprio server casalingo, oppure acquistarne uno presso una farm,
aziende che ospitano fisicamente i server, ed installare quanto necessario al suo funzionamento.
Obiettivo di questa guida è, appunto, quello di fornire tutte le informazioni necessarie alla messa a
punto di un proprio server, partendo dall'installazione del sistema operativo ed arrivando
all'installazione e alla configurazione dei principali strumenti necessari.
La base sulla quale costruiremo il nostro server sarà una distribuzione Linux: è noto, infatti, come
Linux offra ottime prestazioni in ambienti server, grazie alla sua affidabilità, a prezzi notevolmente
contenuti o in alcuni casi totalmente assenti. Sono tante, infatti, le distribuzioni Linux che vengono
utilizzate da aziende di grosso calibro per la realizzazione dei propri server: Debian, ad esempio,
grazie all'accurato lavoro di selezione e test dei pacchetti ufficiali svolto dal team di sviluppo, è una
base solida e affidabile per un server; numerose sono poi le distribuzioni nate appositamente con lo
scopo di girare in ambienti server: un esempio su tutti è CentOS, basata sulla distribuzione
commerciale Red Hat Enterprise Linux, ed attualmente una delle principali soluzioni gratuite
disponibili.
Lo stesso HTML.it, per la maggioranza dei propri server, utilizza Linux come sistema operativo sul
quale far girare i propri siti e i propri servizi.
Questa guida, però, sarà basata su un'altra distribuzione, maggiormente diffusa tra gli utenti
desktop, ma che presenta anche una versione per server: si tratta di Ubuntu, ed in particolare di
Ubuntu Server, da qualche tempo giunta alla versione 9.10 con notevoli miglioramenti nelle
prestazioni e nella sua funzionalità. L'installazione dei pacchetti necessari avverrà tramite apt-get, il
sistema per la gestione dei software tipico di Debian e derivate, ma verrà affiancata dalla classica
installazione tramite compilazione del codice sorgente del software, così da estendere la validità
della guida a qualsiasi distribuzione Linux.
Ma chiudiamo questa breve introduzione ed entriamo subito nel vivo della guida: nel prossimo
capitolo vedremo come scaricare ed installare Ubuntu Server 9.10, scegliendo la versione più adatta
alla propria configurazione hardware e alle proprie esigenze.
Installazione Ubuntu Server
Entriamo subito nel vivo della guida, vedendo come installare scaricare l'immagine ISO ufficiale di
Ubuntu Server e come installarla per avere a disposizione una delle migliori soluzioni in ambienti
server attualmente disponibile.
Dalla pagina dedicata del sito Ubuntu è possibile scegliere quale versione scaricare: nel nostro caso
utilizzeremo Ubuntu Server 9.10, l'ultima versione disponibile al momento della stesura della guida.
Selezioniamo dal menu un mirror dal quale scaricare l'immagine ISO (sceglietene uno italiano) e,
con un clic su Alternative download options, scegliete se scaricare una versione di Ubuntu Server
ottimizzata per l'architettura del proprio server: a 32 o a 64 bit. Una volta effettuata questa scelta,
siamo pronti per dare il via al download attraverso l'apposito pulsante.
Per chi volesse scaricare Ubuntu Server dal velocissimo server Garr può usare i seguenti link diretti:
Ubuntu Server 9.10 64 bit - Ubuntu Server 9.10 32 bit.
Terminato il download, è possibile verificare che quanto scaricato non possegga difetti tramite un
controllo con MD5SUM, di cui è disponibile una guida dettagliata sul Wiki ufficiale di Ubuntu.
Passiamo dunque alla masterizzazione dell'immagine ISO su un supporto CD o DVD, ed avviamo
la macchina scegliendolo come dispositivo di avvio.
La prima schermata che avremo davanti sarà molto familiare a chiunque abbia già installato almeno
una volta una qualunque versione di Ubuntu. Dopo aver selezionato la lingua, è possibile scegliere
tra diverse opzioni: per procedere con l'installazione, selezioniamo Installa Ubuntu Server, e
attendiamo il caricamento della schermata successiva.
Figura 1: La schermata iniziale di installazione di Ubuntu Server
Inizierà adesso una serie di finestre di dialogo che permetteranno di configurare molti dettagli del
sistema operativo che andremo ad installare: si partirà dalla selezione della lingua del sistema e del
layout della tastiera, dopo di che verrà rilevata la configurazione hardware della macchina, verranno
selezionati alcuni pacchetti dal CD di installazione, sarà avviata la configurazione automatica della
rete, e si riprenderà ad impostare il sistema operativo scegliendone il Nome host, ossia il nome che
avrà la macchina all'interno della rete.
Successivamente sarà avviato lo strumento per la gestione delle partizioni: è possibile scegliere
di usare il partizionamento automatico, che provvederà ad utilizzare tutto il disco per l'installazione,
oppure di gestire manualmente il disco e scegliere la dimensione da dedicare ad ogni partizioni. Se
sulla macchina dovrà essere installato solo Ubuntu Server, consigliamo di scegliere l'opzione
Guidato - usa l'intero disco senza impostare il LVM (gestore logico dei volumi), che richiederà solo
di scegliere il disco da utilizzare. In ogni caso, al termine dell'operazione di partizionamento, verrà
mostrata una finestra riepilogativa, che permetterà di verificare tutte le impostazioni relative al
disco: se tutto è configurato al meglio, scegliamo di scrivere le modifiche sul disco spostandoci con
le frecce della tastiera su Sì e premendo Invio.
Figura 2: La conferma del partizionamento del disco
L'operazione di scrittura sul disco fisso impiegherà alcuni minuti, ed una volta ultimata partirà
l'installazione del sistema di base. Quando saranno stati installati tutti i componenti principali, verrà
chiesto di scegliere il nome da assegnare al proprio utente e la relativa password, con la possibilità
di cifrare la propria directory home. Si passerà dunque alla configurazione di apt-get e degli
aggiornamenti automatici.
In seguito verrà proposta una serie di applicazioni da installare, tipiche degli ambienti server:
quelle selezionate verranno installate in maniera automatica, anche se nel seguito della guida
vedremo come installare manualmente molti degli strumenti proposti, per cui è possibile lasciare
tutti i campi vuoti. Gli unici aspetti di tale elenco che non verranno trattati sono Samba, Tomcat e
Virtual Machine, per cui se si necessita di tali componenti può tornare utile selezionarne
l'installazione automatica.
Dopo aver selezionato quali componenti installare verrà avviata l'installazione di altri software
necessari al funzionamento del sistema operativo, inclusi quelli da noi selezionati poco prima. Al
termine di questa operazione verrà effettuata una pulizia dei pacchetti utilizzati per l'installazione,
verranno configurati automaticamente alcuni parametri di sistema, e verrà mostrata una nuova
finestra che ci confermerà il termine dell'installazione di Ubuntu Server. Scegliamo di continuare, e
attendiamo il riavvio della macchina. Una volta avviato il sistema operativo, siamo pronti ad
utilizzare Ubuntu Server per creare il nostro server personale.
Configurazione della rete ed installazione software di base
Dopo aver portato a termine l'installazione di Ubuntu Server ed aver avviato il sistema operativo,
siamo pronti per metter mano subito alla configurazione dell'ambiente server. Le prime operazioni
necessarie sono l'impostazione dei parametri di rete e l'installazione di un browser testuale, per
poter navigare tra le pagine web e scaricare i sorgenti delle applicazioni che installeremo.
Va ricordato che, per impostazione predefinita, Ubuntu Server non installa l'interfaccia grafica e
tutte le operazioni sono da eseguirsi attraverso il terminale o console. Due comandi che potrebbero
risultare utili in questa modalità sono halt che serve per spegnere la macchina e reboot che serve
per riavviarla. Entrambi vanno utilizzati facendoli precedere dal comando sudo che permette di
eseguire comandi che hanno bisogno dell'autorizzazione dell'amministratore (root) e della sua
password: per spegnere, ad esempio, il server andrà eseguito il comando sudo halt e inserire la
password dell'account di root (di solito quella che si usa per eseguire il login). Per poter lavorare
con questo tipo di comandi senza dover ogni volta farli precedere da sudo si può eseguire il
comando sudo su.
Figura 3: Il terminale di Ubuntu Server 9.10
Se la macchina è stata collegata alla rete prima dell'installazione del sistema operativo, il
programma di installazione avrà configurato i parametri di rete in modo tale che l'indirizzo IP del
computer venga assegnato tramite DHCP. Tale configurazione, però, non si presta ad un ambiente
server, in quanto una macchina che lavora come server ha bisogno di avere un indirizzo IP statico.
Per tale motivo modifichiamo il file /etc/network/interfaces tramite il comando
$ sudo nano /etc/network/interfaces
e, posto che la nostra rete sia collegata ad un router con IP 192.168.0.1, rendiamolo simile al
seguente:
1 # This file describes the network interfaces available on your system
2 # and how to activate them. For more information, see interfaces(5).
3 # The loopback network interface
auto lo
4 iface lo inet loopback
5 # The primary network interface
6 auto eth0
7 iface eth0 inet static
address 192.168.0.100
8
netmask 255.255.255.0
9
network 192.168.0.0
10
broadcast 192.168.0.255
gateway 192.168.0.1
11
12
13
In questo caso, l'interfaccia di rete utilizzata è eth0 e l'IP assegnato è 192.168.0.100. Per conoscere
le interfacce di rete presenti sulla propria macchina è possibile utilizzare il comando ifconfig, che
fornirà un elenco di tutte quelle collegate ed attive. L'IP può essere scelto a piacere, purché sia del
tipo 192.168.0.X, dove X è un numero compreso tra 2 e 254.
Andiamo adesso a modificare il file /etc/hosts per far sì che la macchina riconosca l'indirizzo IP
scelto:
$ sudo nano /etc/hosts
e aggiungiamo la riga
1192.168.0.100
ubuntu
utilizzando lo stesso IP scelto prima, e dove ubuntu è il nome di host che abbiamo assegnato alla
macchina durante la fase di installazione, reperibile anche tramite il comando
$ cat /etc/hostname
Passiamo alla configurazione dei server DNS, tramite la modifica del file /etc/resolv.conf:
$ sudo nano /etc/resolv.conf
Una scelta universale è quella di utilizzare il servizio gratuito offerto da OpenDNS, aggiungendo a
tale file le seguenti righe:
1# OpenDNS
2nameserver 208.67.220.220
3nameserver 208.67.222.222
Riavviamo i servizi di rete tramite il comando
$ sudo /etc/init.d/networking restart
e testiamo la connessione "pingando" un sito web a piacere, ad esempio
$ ping www.google.it
Nel caso in cui tutto sia stato configurato in maniera corretta, si riceverà una risposta ai pacchetti
inviati tramite ping, segno che la connessione funziona, altrimenti è necessario riconfigurare i
parametri di rete e correggere eventuali errori commessi.
Una volta stabilita la connessione alla rete, procediamo con l'installazione del browser web links2,
tramite il comando
$ sudo apt-get install links2
Ultimo passaggio preliminare necessario è l'installazione di alcuni pacchetti di base che serviranno
per la compilazione dei sorgenti di alcuni software. Per fare ciò, lanciamo il comando:
$ sudo apt-get install binutils cpp gcc make automake autoconf debhelper g++
Installare un web server: Apache
Iniziamo, dunque, ad installare tutte le applicazioni che collaboreranno alla messa a punto del
nostro server. Il primo strumento da cui partiremo è Apache, la base di tutta l'architettura che
andremo a realizzare: si tratta di una delle piattaforme server più diffuse ed apprezzate attualmente
in circolazione, non presenta troppi ostacoli per una configurazione sufficiente a far girare nel
migliore dei modi il proprio server, ed è dotata di una documentazione piuttosto vasta che potrà
essere utile nella risoluzione dei problemi riscontrati. Ad ogni richiesta fatta al nostro server, sarà
proprio Apache ad occuparsi di rispondere, fornendo le informazioni richieste, come ad esempio
una pagina web.
I pacchetti di Apache sono presenti nei repository di Ubuntu, così come tutti gli altri software che
installeremo nel seguito della guida, ma può essere utile compilare ed installare manualmente tali
strumenti per ottenere un maggiore livello di personalizzazione.
Installazione da repository
L'installazione tramite repository è molto semplice. Come prima operazione, aggiorniamo il
database dei pacchetti tramite il comando:
$ sudo apt-get update
Quindi procediamo con l'installazione con:
$ sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils
libexpat1 ssl-cert
Verranno così prelevati dai repository i pacchetti precompilati in formato Deb e saranno installati in
maniera del tutto automatica. Dopo pochi minuti, Apache sarà subito pronto per essere avviato ed
utilizzato in tutte le sue funzionalità.
Installazione da codice sorgente
Vediamo invece adesso come installare il web server Apache tramite la compilazione del codice
sorgente. Tramite il browser links2 che abbiamo precedentemente installato al momento della
configurazione della rete, colleghiamoci alla pagina di download di Apache tramite:
$ links2 http://httpd.apache.org/download.cgi
Tramite la tastiera scorriamo la pagina fino ad arrivare alla sezione che permette di scaricare il
pacchetto compresso: sempre tramite i tasti direzionali della tastiera selezioniamo il file in formato
.tar.gz presente vicino alla voce "Unix Source" e premiamo Invio.
Figura 4: Il download di Apache 2
Scegliamo di salvare il file e attendiamo il termine dell'operazione di download. Premiamo
contemporaneamente i tasti CTRL e C per chiudere il browser e scompattiamo l'archivio con il
seguente comando:
$ tar xzvf httpd-2.2.XX.tar.gz
dove ad XX va sostituito il numero della versione di Apache che abbiamo scaricato; per
semplificare l'operazione, dopo aver digitato httpd premiamo il tasto TAB sulla tastiera per
utilizzare il completamento automatico che fornirà il nome esatto dell'archivio scaricato.
Entriamo dunque nella directory contenente i sorgenti con
$ cd httpd-2.2.xx
per poter procedere con la compilazione dei sorgenti. La prima operazione da fare è la preparazione
dell'ambiente di compilazione tramite lo strumento configure. Tramite tale strumento è possibile
abilitare e disabilitare funzionalità di cui abbiamo bisogno o, viceversa, non sono utili ai nostri
scopi, suggerire percorsi alternativi per l'installazione, introdurre nuovi moduli e così via. Sul sito di
Apache è disponibile un elenco dei moduli attivi e di quelli non attivi di default: tra questi ultimi
figurano due moduli piuttosto importanti, mod_rewrite, utile per la trasformazione e la riscrittura
degli URL, e mod_ssl, che vedremo nel dettaglio nei capitoli successivi.
Prima di compilare Apache con tali moduli dobbiamo però installare le librerie necessarie al
modulo ssl:
$ sudo apt-get install libssl-dev
Passiamo poi alla configurazione del web server:
$ ./configure --enable-so --enable-rewrite --enable-ssl
aggiungendo, se vogliamo, altri moduli da abilitare o disabilitare utilizzando lo stesso schema visto
per mod_rewrite e mod_ssl. Passiamo ora alla compilazione del web server, tramite il comando
$ make
e, al termine del processo che potrebbe durare anche diversi minuti, a seconda delle capacità della
propria macchina, passiamo all'installazione digitando
$ sudo make install
Una volta ultimata l'installazione, per testare subito se Apache è stato installato correttamente
digitiamo
$ sudo /etc/init.d/apache2 start
Configurare il web server Apache
Una volta installato Apache e controllato che tutto sia andato per il verso giusto, passiamo alla
configurazione del web server in modo tale da avere tutte le funzionalità e tutte le caratteristiche di
cui abbiamo bisogno.
I file di configurazione di Apache sono diversi, ognuno mirato ad uno scopo, e situati tutti nella
directory /etc/apache2, a meno di eventuali modifiche apportate durante la fase di compilazione:
apache2.conf include le principali opzioni e permette di avere una configurazione di base già
piuttosto buona, httpd.conf contiene i parametri configurati dall'utente, in ports.conf risiede l'elenco
delle porte sulle quali Apache deve stare in ascolto per eventuali connessioni. Dopo l'installazione,
il file httpd.conf sarà vuoto, ports.conf avrà solo poche righe, mentre apache2.conf sarà più corposo
degli altri due file.
Tutte le modifiche apportate a httpd.conf e ports.conf saranno riflesse anche al file apache2.conf, il
quale ingloba i parametri di configurazione descritti nei primi due file grazie alle righe
1include /etc/apache2/httpd.conf
2include /etc/apache2/ports.conf
La sintassi da utilizzare nei file di configurazione di Apache2 è abbastanza semplice: ogni riga
contiene una direttiva, e alcune direttive possono definire un container, ovvero permettono di
impostare alcune opzioni su file, directory o entrambi. Possono essere inclusi commenti, preceduti
dal simbolo cancelletto #, e nel caso si necessiti di utilizzare più di una riga per una direttiva è
possibile utilizzare il backslash \ per indicare ad Apache che la direttiva continua sulla riga
successiva. Tale backslash non deve però essere seguito da alcun carattere o spazio.
Esiste inoltre un comando per effettuare un test della configurazione, per evidenziare eventuali
errori di sintassi, ed è il seguente:
$ apache2ctl configtest
Accediamo dunque al file /etc/apache2/httpd.conf con un editor di testo e vediamo come
individuare una configurazione ottimale
$ sudo nano /etc/apache2/httpd.conf
In primo luogo, definiamo le informazioni più importanti da fornire ad Apache. Nulla può essere
più chiaro di un esempio pratico:
1ServerName webserver
2DocumentRoot /var/www
3ServerRoot /etc/apache2
Listen 80
4User apache
5Group apache
6
La prima riga, ServerName, definisce il nome da associare al server che andremo a creare;
DocumentRoot indica la directory all'interno della quale andranno inseriti i file da rendere pubblici,
ovvero le pagine HTML dei siti web che andremo ad ospitare e così via, mentre ServerRoot sta a
segnalare ad Apache qual è la directory di base del web server; la direttiva Listen indica le porte
su cui Apache è in ascolto, e permette di essere ripetuta più volte per indicare porte diverse; User e
Group, infine, indicano gli utenti ed il relativo gruppo che hanno accesso ad Apache. I parametri
inseriti in questo esempio sono puramente indicativi, e possono essere personalizzati come più si
preferisce.
Apache è un web server modulare, ovvero permette di attivare o disattivare funzionalità
semplicemente includendo o escludendo gli appositi moduli. Per attivare un modulo è possibile
utilizzare la direttiva LoadModule, seguita dal nome del modulo da includere. Un elenco dei moduli
disponibili è presente presso la documentazione ufficiale di Apache.
Per applicare filtri e opzioni a determinate cartelle o file è possibile utilizzare le direttive
<Directory> e <File>. La loro sintassi si avvicina molto alla sintassi utilizzata per i file XML: si
tratta infatti di container, che necessitano di apertura con specificazione dell'oggetto su cui
andranno applicate le opzioni, le varie configurazioni da applicare e di chiusura. Ad esempio, per
permettere l'accesso alla directory /var/www/sitoweb ai soli IP relativi alla rete 192.168.1.X,
scriveremo
1<Directory /var/www/sitoweb>
2
order deny,allow
deny from all
3
allow from 192.168.1
4
</Directory>
5
Per maggiori informazioni sulle altre possibili opzioni, la documentazione relativa ad entrambe le
direttive fornisce una delle migliori risorse. Una volta configurate tutte le impostazioni necessarie al
proprio server, siamo pronti a chiudere l'editor nano tramite la combinazione di tasti CTRL + X,
salviamo con lo stesso nome e riavviamo Apache con il comando
$ sudo /etc/init.d/apache2 restart
Installare PHP e MySQL
Le potenzialità di Apache possono essere estese grazie all'installazione di due degli strumenti più
diffusi nel settore dei server: PHP e MySQL. Il PHP Hypertext Preprocessor, infatti, permette di
realizzare pagine dinamiche e di realizzare vere e proprie applicazioni web, grazie alla sua
semplicità di scrittura e alla sua leggerezza; MySQL, invece, è un cosiddetto DataBase
Management System, ovvero permette di immagazzinare informazioni all'interno delle tabelle di un
database e di poterli gestire come meglio si ritiene opportuno.
Il binomio PHP-MySQL rappresenta una delle soluzioni migliori attualmente disponibili, ed hanno
il vantaggio di essere entrambi rilasciati con licenze Open Source. Vediamo adesso come installarli
tramite i repository di Ubuntu Server. Come sempre, utilizziamo apt-get per il download dei
pacchetti e per la loro installazione: per installare PHP, digitiamo
$ sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev
php5-idn php-pear php5-recode php5-snmp php5-sqlite php5-xmlrpc php5-mcrypt
php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell
In questo modo installeremo tutte le principali componenti di PHP, necessarie al suo funzionamento
e all'integrazione con Apache e MySQL. Esistono anche altri pacchetti che arricchiscono PHP di
ulteriori funzionalità, come ad esempio le librerie GD installabili tramite il pacchetto php5-gd: per
avere un elenco dettagliato dei pacchetti disponibili è possibile digitare
$ apt-cache search php5
Il download dei pacchetti impiegherà un po' di tempo a causa delle dimensioni degli stessi, ma
l'installazione sarà piuttosto rapida. Al termine, possiamo procedere con l'installazione dei pacchetti
relativi a MySQL tramite il comando
$ sudo apt-get install mysql-server mysql-client
Durante l'installazione ci verrà chiesta la password da associare all'utente Root di MySQL: come
per gli utenti di un sistema operativo Unix-Like, l'utente Root di MySQL non ha limitazioni in
quanto a privilegi o permessi, ed ha accesso sia alla gestione che alla configurazione dei database.
Una volta scelta la password tenendo conto di aspetti importanti quali la sicurezza e l'affidabilità
della password stessa, confermiamola nel passaggio successivo e portiamo a termine l'installazione.
Per controllare che l'installazione di MySQL è andata a buon fine, è possibile provare ad avviare il
demone tramite il comando
$ sudo /etc/init.d/mysql start
e attendere la conferma dell'avvio.
Per quanto riguarda l'installazione da sorgenti, tramite il browser testuale links2 è possibile
accedere alle pagine di download dei due strumenti tramite i comandi
$ links2 http://dev.mysql.com/downloads/mysql/5.1.html
e
$ links2 http://www.php.net/downloads.php
e selezionare il download dei pacchetti contenenti i codici sorgenti, come fatto in precedenza con
Apache. Compilare da sorgenti PHP e MySQL può essere utile, ma è un'operazione che può essere
evitata tranquillamente in quanto non comporta particolari vantaggi, a differenza di Apache che
durante la fase di compilazione può essere configurato in maniera piuttosto ampia. Per questo
motivo, per sapere come fare ad installare da sorgenti questi due pacchetti rimandiamo alle
documentazioni ufficiali di PHP e MySQL, sufficientemente ricche e ben strutturate.
Configurare PHP e MySQL
Come di norma, dopo l'installazione di PHP e MySQL passiamo alla loro configurazione. La prima
operazione è l'abilitazione del modulo PHP in Apache e la configurazione di alcune opzioni di
sicurezza che permettono di evitare l'esecuzione di codice potenzialmente dannoso. Tramite l'editor
nano modifichiamo il file httpd.conf
$ sudo nano /etc/apache2/httpd.conf
ed aggiungiamo le seguenti righe:
1
2# Carico il modulo PHP5
LoadModule php5_module modules/libphp5.so
3# Abilito il parsing delle estensioni .php e .phps tramite il parser PHP
4<FilesMatch \.php$>
SetHandler application/x-httpd-php
5
</FilesMatch>
6
\.phps$>
7<FilesMatch
SetHandler application/x-httpd-php-source
8</FilesMatch>
9
e riavviamo Apache tramite
$ sudo /etc/init.d/apache2 restart
Passiamo ora alla configurazione vera e propria di PHP, tramite la modifica del file
/etc/php5/apache2/php.ini
$ sudo nano /etc/php5/apache2/php.ini
Dopo l'installazione, tale file risulta essere già scritto, e contiene delle impostazioni di base, che
possono essere ritenute sufficienti a chiunque necessiti di utilizzare PHP per la sola realizzazione di
pagine dinamiche senza l'utilizzo di particolari configurazioni o strumenti aggiuntivi. Una modifica
necessaria riguarda l'abilitazione del modulo relativo a MySQL: per farlo, spostiamoci nella parte
finale del file, cerchiamo la sezione Dynamic Extensions e decommentiamo la riga
extension=mysql.so eliminando il punto e virgola presente all'inizio.
Per quanto riguarda MySQL, il file di configurazione è presente nella directory /etc/mysql e prende
il nome di my.cnf. Apriamolo con il solito editor
$ sudo nano /etc/mysql/my.cnf
ed andiamo ad abilitare l'ascolto di MySQL su qualunque interfaccia, andando ad individuare la riga
1bind-address
127.0.0.1
e anteponendole un cancelletto per commentarla, in questo modo
1# bind-address
127.0.0.1
Come nel caso di PHP, anche MySQL presenta una configurazione iniziale sufficiente ad utilizzare
tutte le principali funzionalità di cui gode. Per sapere meglio come configurare in maniera ottimale
MySQL, ma soprattutto per avere una buona documentazione in italiano per imparare a gestire i
database e le informazioni in essi contenute, suggeriamo la guida a MySQL di Database.HTML.it.
Installare un server mail: Postfix
Questa sezione sull'installazione e sulla configurazione degli strumenti necessari a mettere in piedi
il nostro server personale continua con una delle principali applicazioni per l'invio e la ricezione di
e-mail: Postfix.
Postfix è un mail server, ovvero un software che si occupa di fornire tutti gli strumenti necessari per
gestire la posta elettronica tramite il proprio server, senza appoggiarsi a provider esterni. Tra le sue
principali caratteristiche troviamo la capacità di gestire grossi quantitativi di e-mail senza risentirne
in termini di prestazioni, il supporto ai protocolli di crittazione per rendere sicuro lo scambio di
posta, e un'organizzazione modulare che permette di avere tanti piccoli strumenti indipendenti, i cui
bug e problemi non influiscono sugli altri.
Come di norma, vediamo prima come installare Postfix tramite i comodi repository forniti dal team
di Ubuntu, e poi tramite i sorgenti disponibili sul sito ufficiale del progetto, per ottenere una
maggiore personalizzazione dell'applicazione.
Per lanciare il download e l'installazione dei pacchetti di Postfix, come abbiamo visto nei capitoli
precedenti, utilizziamo apt-get:
$ sudo apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail
Durante la fase di installazione verranno poste due semplici domande, relative alla tipologia di mail
server da installare (scegliamo Sito Internet) e al nome da assegnare al server di posta, che deve
essere il nome del dominio che utilizzeremo per la posta elettronica.
Vediamo adesso, invece, come procedere con l'installazione tramite codice sorgente. Utilizziamo
links2 per accedere alla pagina di download
$ links2 http://www.postfix.org/download.html
Scegliamo il mirror da cui prelevare il file sorgente, e selezioniamo la voce "Source Code" per
iniziare il download. Al termine, avremo un archivio del tipo postfix-X.X.X.tar.gz: scompattiamolo
con
$ tar xvzf postfix-X.X.X.tar.gz
ed entriamo nella directory con
$ cd postfix-X.X.X
Adesso passiamo alla compilazione, semplicemente digitando
$ make
e, al termine della compilazione, se tutto è andato per il verso giusto, passiamo all'installazione con
il classico
$ sudo make install
Durante la fase di compilazione è possibile passare alcuni parametri per personalizzare
l'installazione successiva: ad esempio, è possibile combinare Postfix con database MySQL,
PostgreSQL o LDAP, oppure utilizzare Perl per le espressioni regolari. Maggiori dettagli sono
disponibili nella sezione relativa alla compilazione della guida ufficiale di Postfix, con informazioni
su come abilitare ogni singolo strumento.
Per verificare che l'installazione di Postfix sia andata a buon fine, avviamo il demone tramite il
comando
$ sudo /etc/init.d/postfix start
Se riceviamo una risposta positiva, possiamo passare alla fase successiva: la configurazione del
server di posta elettronica.
Configurare Postfix
Come per tutte le applicazioni fin'ora installate, anche Postfix offre un file di configurazione
testuale per le principali impostazioni: tale file è /etc/postfix/main.cf.
Per accedervi, utilizziamo nano
$ sudo nano /etc/postfix/main.cf
Qui sono situate tutte le più importanti opzioni di Postfix: dall'hostname ai principali alias, dai
parametri relativi ai singoli account di posta ad altre tante informazioni. Per avere una prima
semplice configurazione di Postfix, però, è possibile utilizzare uno strumento grafico: chiudiamo il
file, e lanciamo il comando
$ sudo dpkg-reconfigure postfix
Verrà così mostrata una schermata di dialogo, che guiderà l'utente nella messa a punto del server di
posta. Il primo quesito proposto, come durante la fase di installazione, riguarda la tipologia di mail
server da utilizzare, e selezioniamo Sito Internet. Anche la seconda domanda risulta essere
familiare: permette, infatti, di selezionare il nome del mail server, e possiamo sia modificare il
valore precedentemente scelto, sia lasciarlo intatto. Il passaggio successivo permette di selezionare
il destinatario delle e-mail indirizzate agli utenti root e postmaster, di solito non utilizzati per motivi
di sicurezza.
Il quarto passaggio offre la possibilità di aggiungere altri domini che verranno utilizzati per
realizzare account di posta elettronica da gestire con Postfix: ogni dominio deve essere separato
dall'altro tramite una virgola. Andando avanti, possiamo selezionare l'utilizzo degli aggiornamenti
sincroni per la ricezione della posta elettronica, quali indirizzi locali Postfix deve gestire, se
utilizzare o meno procmail per la consegna della posta locale (se lo abbiamo installato, scegliamo di
utilizzarlo), i limiti di dimensioni relativi ai messaggi di posta elettronica, il carattere per
individuare le estensioni degli indirizzi locali e il protocollo internet da utilizzare, che nella maggior
parte dei casi è IPv4.
Confermiamo l'ultima scelta, attendiamo la modifica automatica del file di configurazione ed il
riavvio del server di posta, dopo di che siamo pronti ad utilizzare Postfix.
Questa configurazione può essere sufficiente a chi non necessita di utilizzare ulteriori strumenti o di
avere configurazioni più raffinate. Per imparare a gestire la posta elettronica con Postfix ed avere
maggiori informazioni, consigliamo la documentazione presente sul sito ufficiale, piuttosto ricca di
contentuti e ben strutturata, e che permette sia di avere delle guide alla configurazione e all'aggiunta
di ulteriori strumenti, che di disporre di una valida guida alla risoluzione dei principali problemi.
Installare Samba per la condivisione dei file
Nel caso in cui si stia realizzando un server domestico, oppure ci siano più macchine connesse alla
stessa rete locale, può tornare utile condividere in tale rete file e cartelle in modo da poter accedere
a risorse fisicamente presenti su macchine diverse senza la necessità di trasferirli manualmente. Ciò
è possibile grazie all'installazione di una sola applicazione: Samba.
Samba è, appunto, uno strumento per la condivisione di file (e anche stampanti) tra macchine su cui
girano sistemi operativi diversi. Con Samba, ad esempio, è possibile accedere a file situati su un
computer Linux (il nostro server, ad esempio) semplicemente utilizzando il classico Esplora Risorse
di Windows.
Per l'installazione tramite i tradizionali repository Ubuntu, lanciamo il comando
$ sudo apt-get install samba smbfs
Insieme a questi due pacchetti verranno installate altre dipendenze e strumenti utili ad utilizzare a
pieno le potenzialità offerte da Samba. Il download e l'installazione dovrebbe impiegare pochi
minuti, e al termine sarà subito possibile passare alla configurazione dell'applicazione, per
condividere file e cartelle e gestire i permessi di accesso.
Per l'installazione dai sorgenti il procedimento è leggermente diverso. Iniziamo con il download del
pacchetto contenente l'ultima versione disponibile, attraverso il comando
$ wget http://us1.samba.org/samba/ftp/samba-latest.tar.gz
Al termine del processo di download, scompattiamo l'archivio
$ tar xvzf samba-latest.tar.gz
Verrà creata così una directory del tipo samba-X.X.X: entriamo nella sua sottocartella source con il
comando
$ cd samba-X.X.X/source
e creiamo ed avviamo lo script di configurazione con i comandi
$ ./autogen.sh
$ ./configure
Come visto anche nei capitoli precedenti, l'esecuzione del configure può essere personalizzata
tramite il passaggio di alcuni argomenti, per abilitare o disabilitare moduli e funzionalità. Ad
esempio, per abilitare il supporto al protocollo SSL, possiamo lanciare
$ ./configure --with-ssl
Un elenco dettagliato di tutti i possibili parametri accettati dallo script configure è disponibile a
questo indirizzo. Al termine dell'esecuzione di tale script, diamo il via alla compilazione, che
impiegherà diversi minuti
$ make
Dopo aver atteso il tempo necessario alla compilazione del codice sorgente di Samba, siamo pronti
ad installare tale software lanciando il comando
$ sudo make install
Per risparmiare spazio sul disco, è possibile installare solo i file binari, evitando dunque di installare
anche la documentazione di Samba: ciò è possibile utilizzando per l'installazione il comando
$ sudo make installbin
Nel caso in cui volessimo installare in un secondo momento la documentazione, sarà possibile
ottenerla utilizzando il comando
$ sudo make installman
Nel prossimo capitolo vedremo com'è strutturato il file di configurazione di Samba e come è
possibile aggiungere nuove cartelle da condividere con gli altri utenti.
Configurare Samba
Anche Samba presenta un file di configurazione testuale che permette di gestire tutti i principali
parametri dell'applicazione: tale file è /etc/samba/smb.conf, e presenta una struttura ed una sintassi
piuttosto semplice, oltre ad essere diviso in blocchi, ognuno preposto ad uno scopo.
Per entrare subito nel vivo della configurazione, apriamo tale file con nano
$ sudo nano /etc/samba/smb.conf
ed iniziamo a scorrerlo dall'alto verso il basso. I primi parametri che incontriamo riguardano la
configurazione globale di Samba, all'interno della sezione [global]. Tramite queste opzioni è
possibile configurare il nome del gruppo di lavoro relativo alla rete locale, il nome che assumerà la
macchina all'interno di tale gruppo di lavoro e la relativa descrizione, gli IP cui è permesso l'accesso
ai file locali, il livello di sicurezza da mantenere, i permessi di accesso su file e cartelle, e diverse
altre opzioni.
Un esempio per la sezione [global] può essere il seguente
1 [global]
workgroup = GRUPPODILAVORO
2
netbios = NOMEMACCHINA
3
4
5
6
7
8
9
10
server string = DESCRIZIONE
allow hosts = 192.168.1.0/24
security = USER
create mask = 0755
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
log file = /var/log/samba/log.%m
Il valore USER di security permette di consentire l'accesso ai file solo tramite login: per avere una
condivisione accessibile liberamente, tale parametro va impostato a SHARE. Le voci prima
descritte, come del resto anche diverse altre, sono già presenti all'interno del file smb.conf creato
dopo l'installazione: probabilmente conterranno valori leggermente diversi, oppure saranno
commentate o sparse per tutto il file, per cui non è necessario aggiungerle manualmente, ma
semplicemente individuarle e modificarle opportunamente.
La sezione, come lascia intuire il suo nome, [homes], permette di gestire la condivisione della
propria directory home. È consigliato creare apposite cartelle per la condivisione dei file, come
vedremo successivamente, ma a volte può essere comodo avere in condivisione l'intera cartella
home. Per fare ciò, è necessario impostare tale sezione in questo modo
1
[homes]
2
comment=Directory Home
3
browseable= yes
public= yes
4
valid users= pippo, pluto, caio
5
create mask= 0700
6
directory mask= 0700
7
Così facendo, gli utenti pippo, pluto e caio potranno accedere alla nostra directory home a tutti i file
in essa contenuti. Se vogliamo aggiungere una nuova cartella a quelle già condivise, è necessario
creare una nuova sezione all'interno del file smb.conf. Supponiamo, ad esempio, di voler
condividere con tutti la cartella /home/utente/documenti: la sezione andrà creata seguendo questo
schema
1[documenti]
2
path=/home/utente/documenti
browseable=yes
3
valid users=pippo, pluto, caio
4
Per poter abilitare gli utenti pippo, pluto e caio all'accesso ai file, siano essi contenuti nella directory
home o in altre cartelle aggiunte successivamente, è necessario creare gli utenti virtuali per Samba
in tale modo
$ sudo smbpasswd -a utente
È necessario, però, che l'utente da aggiungere a Samba sia già presente all'interno del proprio
sistema: per maggiori informazioni su come crearli e gestirli, consigliamo una lettura alla
documentazione di adduser
$ man adduser
Installare un DNS Server: BIND9
Passiamo adesso alla configurazione di BIND9, uno degli strumenti per la realizzazione di server
DNS più diffusi. Grazie a BIND9 è possibile sia realizzare un sistema di dns caching, sia mettere a
punto un vero e proprio Primary Master Server: in questo modo potremo gestire autonomamente la
risoluzione dei nomi a dominio relativi ai siti web che vorremo gestire con il nostro server.
L'installazione tramite apt-get è molto semplice, come già visto nei capitoli precedenti. L'unica
operazione da fare, infatti, è lanciare il comando
$ sudo apt-get install bind9
che porterà a termine il download dei pacchetti in formato DEB e la loro installazione. Insieme a
BIND9 verranno scaricati ed installati anche altre dipendenze e software aggiuntivi, per un totale di
pochi MB di peso. Al termine, verrà avviato il demone e sarà da subito possibile iniziare a
configurare e utilizzare BIND9.
Vediamo ora, invece, come procedere con l'installazione tramite codice sorgente. Come visto nei
capitoli precedenti, utilizzeremo il browser links2 per accedere alla pagina di download del sito
ufficiale del progetto, lanciando in questo caso il seguente comando
$ links2 http://www.bind9.net/download
Scorriamo la pagina alla ricerca di un mirror il più possibile vicino, accediamo alla pagina di
download di tale mirror, selezioniamo l'ultima versione disponibile e procediamo con il download
del file in formato .tar.gz. Al termine, chiudiamo il browser e avremo, all'interno della directory in
cui abbiamo lanciato links2, un file il cui nome sarà del tipo bind-9.X.X.tar.gz, dove, come al solito,
X.X indicano il numero di versione.
Scompattiamo l'archivio con
$ tar xvzf bind-9.X.X.tar.gz
entriamo nella cartella dei sorgenti con
$ cd bind-9.X.X
e configuriamo la compilazione tramite
$ ./configure --prefix=/usr --enable-threads -with-libtool
Adesso passiamo alla compilazione dei sorgenti, con il classico
$ make
e diamo il via all'installazione dell'applicazione lanciando
$ sudo make install
Per avviare BIND9, così da testare l'installazione appena eseguita, digitiamo
$ sudo /etc/init.d/bind9 start
Per avere un maggiore livello di sicurezza, però, non avvieremo BIND9 in questo modo, ma lo
utilizzeremo in chroot: nel prossimo capitolo vedremo come fare, e come configurare al meglio le
impostazioni del nostro DNS Server.
Configurare Bind
Come detto, dunque, utilizzeremo BIND9 in chroot. Ciò vuol dire che tale software verrà avviato
all'interno di un'apposita directory e sarà confinato lì, avendo accesso alle sole risorse di cui ha
bisogno per il suo funzionamento, e non potendo dunque accedere a file che non gli appartengono.
In questo modo si riesce a garantire una maggiore sicurezza in caso di attacchi, che nel caso
colpissero proprio BIND9 non risulterebbero dannosi come nel caso in cui l'applicazione sia avviata
normalmente.
Per avviare BIND9 in chroot, è necessario come prima operazione creare la struttura delle directory
che andrà a formare il nostro ambiente di chroot:
$ sudo mkdir -p /chroot/named
$ cd /chroot/named
$ sudo mkdir -p dev etc/namedb/slave var/run
Configuriamo, quindi, i permessi di accesso a tale ambiente:
$
$
$
$
sudo
sudo
sudo
sudo
chown
chmod
chown
chmod
root:root /chroot
700 /chroot
bind:bind /chroot/named
700 /chroot/named
Creiamo il file di configurazione di BIND9 nella nuova directory
$ sudo mkdir /chroot/named/etc
$ sudo touch /chroot/named/etc/named.conf
e diamo all'utente bind l'accesso alle directory slave e run
$ sudo chown bind:bind /chroot/named/etc/namedb/slave
$ sudo chown bind:bind /chroot/named/etc/var/run
Creiamo, infine, i dispositivi di cui BIND9 ha bisogno:
$ sudo mknod /chroot/named/dev/null c 1 3
$ sudo mknod /chroot/named/dev/random c 1 8
Adesso andiamo a modificare il file /etc/default/bind9 con nano
$ sudo nano /etc/default/bind9
sostituendo la riga
1OPTIONS="-u bind"
con
1OPTIONS="-u bind -t /var/named -t /chroot/named -c /etc/named.conf"
e, infine, andiamo ad aggiungere al file /chroot/named/etc/named.conf le seguenti righe
1options {
2
directory "/etc/namedb";
pid-file "/var/run/named.pid";
3
statistics-file "/var/run/named.stats";
4
};
5
Avviando adesso BIND9 con
$ sudo /etc/init.d/bind9 start
questo verrà avviato in ambiente chroot.
Passiamo adesso alla realizzazione di un DNS Caching Server e di un Primary Master Server. Per la
prima operazione, è sufficiente aggiungere alla fine del file named.conf le seguenti righe:
1forwarders {
2
208.67.220.220;
208.67.222.222
3
}
4
Le sequenze di numeri 208.67.220.220 208.67.222.222 sono gli IP dei DNS Server di OpenDNS: è
possibile modificarli a piacere, scegliendo il proprio servizio di DNS preferito.
Per impostare BIND9 come Primary Master Server, invece le operazioni da eseguire sono le
seguenti: copiamo il file named.conf.local nell'ambiente chroot
$ sudo cp /etc/bind/named.conf.local /chroot/named/etc/bind/named.conf.local
aggiungiamo le righe
1zone "dominio.com" {
2
type master;
file "/etc/bind/db.dominio.com";
3
};
4
dove dominio.com è il nome a dominio che vogliamo gestire. Adesso, utilizziamo un template già
fatto come base per creare il file di zona:
$ sudo cp /etc/bind/db.local /chroot/named/bind/db.dominio.com
e andiamo a modificarlo secondo i parametri più consoni alle nostre necessità. Tramite questo file è
possibile creare record A, MX, CNAME e così via: se non si è molto pratici di gestione di DNS, è
consigliata prima una lettura alla pagina di Wikipedia sul Domain Name System, così da avere un
quadro della situazione più chiaro.
Infine, dobbiamo creare un file per il reverse della zona. All'interno del file named.conf.local
aggiungiamo le righe
1zone "192.168.1.in-addr.arpa" {
2
type master;
notify no;
3
file "/etc/bind/db.192";
4
};
5
dove 192.168.1 sono le prime tre terne di numeri della rete locale, personalizzabili a seconda delle
impostazioni di rete che si hanno. Adesso, creiamo un file db.192
$ sudo nano /chroot/named/etc/bind/db.192
e aggiungiamo le stesse opzioni che abbiamo inserito nel file db.esempio.com. Per ogni record A
creato in tale file, va creato un record PTR nel file db.192. Ricordiamo, infine, che ad ogni modifica
della zona va incrementato di 1 la riga relativa al seriale.
Installare SSH e FTP
Un server che si rispetti è accessibile, oltre che localmente, anche da remoto: a tale scopo, in questo
capitolo ed in quello successivo vedremo come installare e configurare due strumenti per l'accesso
da remoto: SSH e FTP.
SSH: Secure shell
SSH, acronimo che sta per Secure SHell, è un protocollo cifrato per la connessione da remoto
tramite riga di comando e che permette di eseguire comandi come se si avesse accesso fisico alla
postazione server. Per installare il software necessario all'utilizzo del protocollo SSH è sufficiente
lanciare da terminale
$ sudo apt-get install ssh openssh-server
mentre sulla macchina dalla quale si vuole accedere al server, nel caso sia installata Ubuntu o
un'altra distribuzione che utilizza apt-get, è sufficiente lanciare
$ sudo apt-get install openssh-client
Una prima configurazione dei parametri di connessione verrà fatta in maniera automatica, ma
vedremo nel capitolo successivo come impostare tali parametri in maniera più idonea alle nostre
necessità.
FTP: File transfer protocol
FTP, invece, sta per File Transfer Protocol, e come lascia intuire lo stesso nome è un protocollo
nato con lo scopo di fornire uno strumento per il trasferimento di file tra macchine diverse connesse
in rete. Di server FTP ne esistono diversi, e la nostra scelta ricade su vsftpd: piuttosto leggero, dalle
ottime prestazioni, oltre che sicuro ed affidabile, rappresenta una delle migliori soluzioni
attualmente disponibili per ambienti GNU/Linux, e risulta anche sufficientemente semplice da
configurare.
Per installare vsftpd tramite i repository di Ubuntu Server, lanciamo dalla riga di comando la
seguente istruzione
$ sudo apt-get install vsftpd
e attendiamo il termine del download dei pacchetti e della relativa installazione. Al termine, sarà già
possibile avviare il demone, ma come per OpenSSH sarà necessaria una configurazione preliminare,
per garantire maggiore sicurezza e per sfruttare a pieno tutte le potenzialità offerte da tale software.
Come per tutte le applicazioni viste fin'ora, anche per OpenSSH e vsftpd sono disponibili pacchetti
contenenti i codici sorgenti per l'installazione tramite compilazione manuale, ma in questo caso non
sono moltissimi i vantaggi che si ottengono: per questo motivo tralasciamo tale procedimento,
lasciando a voi la possibilità di documentarvi su come installare da sorgenti tali strumenti.
Passiamo adesso alla messa a punto delle configurazioni di SSH e FTP
Configurare SSH e FTP per accedere da remoto
Configurazione del server Ssh
Come prima operazione, vediamo come configurare SSH per un accesso sicuro da remoto. Iniziamo
con la realizzazione di una copia di backup del file di configurazione, così da poter ripristinare
rapidamente la configurazione di base nel caso in cui durante la modifica vengano perse
informazioni importanti
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Copiamo anche i file contenenti le chiavi di sicurezza generate automaticamente da OpenSSH, così
da averne una copia di backup nel caso vadano perse. La directory in cui verranno salvate può
essere scelta a piacere, purchè la si ricordi nel momento in cui se ne avrà bisogno
$ sudo cp /etc/ssh/ssh_host*_key* /directory/backup
Apriamo il file sshd_config con l'editor nano per iniziare a modificare i parametri che ci
interessano.
$ sudo nano /etc/ssh/sshd_config
Il file risulta piuttosto semplice da comprendere, in quanto commentato in ogni sua parte. Come
prima cosa, andiamo a disabilitare il login tramite l'account root modificando il valore di
PermitRootLogin in questo modo
PermitRootLogin no
e decommentiamo la riga relativa alla voce IgnoreUserKnownHosts, per fare in modo che il login
venga concesso solo tramite l'inserimento di username e password.
IgnoreUserKnownHosts yes
Adesso, aggiungiamo gli utenti che vogliamo abilitare al login tramite la riga
AllowUsers pippo pluto caio
Allo stesso modo, possono essere aggiunti interi gruppi:
AllowGroups gruppo1 gruppo2 gruppo3
Adesso, avviamo il demone SSH:
$ sudo /etc/init.d/sshd start
o riavviamolo nel caso sia già stato avviato
$ sudo /etc/init.d/sshd restart
Con questa configurazione è possibile accedere al server tramite SSH in maniera sufficientemente
sicura. Per personalizzare maggiormente i parametri di connessione e le impostazioni di OpenSSH,
è possibile leggere la documentazione presente in Ubuntu Server tramite il comando
$ man sshd_config
che offre ulteriori dettagli su ogni voce presente nel file di configurazione.
Configurazione del server Ftp
Passiamo, adesso, alla messa a punto del server FTP. Il file di configurazione di vsftpd è
/etc/vsftpd.conf: apriamolo con il tradizionale editor nano
$ sudo nano /etc/vsftpd.conf
e andiamo a decommentare le righe relative a local_enable, per abilitare la connessione via FTP
locale, e write_enable, per abilitare la scrittura agli utenti connessi tramite FTP. L'accesso al
server FTP può avvenire sia tramite login, sia in maniera anonima: nel caso in cui si voglia
disabilitare quest'ultima opzione, è necessario portare a no la voce anonymous_enable, in questo
modo
anonymous_enable no
Per consentire l'accesso ad altri utenti oltre al nostro, è necessario crearne di nuovi, associare ad
ognuno una directory home e abilitarli all'accesso via FTP. La seguente sequenza di comandi
permette l'aggiunta dell'utente pippo a quelli cui è concesso il login via FTP:
$
$
$
$
$
$
sudo
sudo
sudo
sudo
sudo
sudo
mkdir /home/pippo
useradd -d /home/pippo -g users -s /bin/false pippo
passwd pippo
chwon -R pippo.users /home/pippo
touch /etc/vsftpd.user_list
echo "pippo" > /etc/vsftpd.user_listist
Infine, aggiungiamo al file di configurazione di vsftpd le seguenti righe
1userlist_enable=YES
2userlist_deny=NO
3userlist_file=/etc/vsftpd.user_list
Tale operazione può essere ripetuta per ogni utente da aggiungere. Per maggiori informazioni sulle
voci del file di configurazione consigliamo la lettura della documentazione ufficiale. Come prima,
avviamo o riavviamo il demone con il comando
$ sudo /etc/init.d/vsftpd start
oppure
$ sudo /etc/init.d/vsftpd restart
Installare e configurare Crontab e Anacron
Chiudiamo questa sezione riguardante l'installazione delle applicazioni necessarie alla messa a
punto di una configurazione di base del nostro server e alla loro impostazione con due strumenti
molto utili: Crontab e Anacron.
Il loro scopo è lo stesso: entrambi, infatti, permettono di eseguire comandi in maniera
automatica a determinati orari o a distanza di intervalli di tempo prestabiliti. Ciò che li differenzia
è il tipo di macchine per cui sono nati: se Crontab, infatti, ha come target macchine accese 24 ore
su 24, Anacron permette la ripetizione di comandi in maniera periodica su macchine non
costantemente accese.
Crontab, dunque, permette di configurare anche l'orario esatto di esecuzione di ogni singolo
comando o istruzione, mentre Anacron, che ha una sintassi di configurazione molto più semplice e
basilare, permette di impostare il periodo di tempo dopo il quale va eseguito nuovamente un
comando e dopo quanti minuti tale comando viene lanciato nei giorni prestabiliti.
Iniziamo a vedere come configurare Crontab, che risulta essere già installato in Ubuntu Server: il
file principale di tale strumento è /etc/crontab, e può essere modificato tramite un editor testuale
come nano.
$ sudo nano /etc/crontab
Le operazioni da eseguire vanno inserite una per riga, secondo lo schema
mm hh gg MM GG user comando
dove







mm: indica il minuto di esecuzione, ed è un valore numerico compreso tra 0 e 59;
hh: indica l'ora di esecuzione, ed è un valore numero compreso tra 0 e 23;
gg: indica il giorno di esecuzione, ed è un valore numerico compreso tra 1 e 31;
MM: indica il mese di esecuzione, ed è un valore numerico compreso tra 1 e 12;
GG: indica il giorno della settimana in cui verrà eseguito il comando, ed è un valore
numerico compreso tra 0 e 6, dove 0 indica la Domenica, 1 il Lunedì fino 6 che indica il
Sabato;
user: l'utente con cui verrà lanciato il comando;
comando: il comando da eseguire.
Ogni campo può contenere anche valori multipli: separandoli con una virgola, verranno considerati
come valori diversi, mentre separandoli con un trattino alto indicheranno tutto l'intervallo. Esiste
poi un operatore jolly, l'asterisco, che indica a Crontab che tale campo può assumere tutti i valori
possibili. Per far partire un comando ogni ventesimo minuto dalle 9 alle 18 (di tutti i giorni, di tutti i
mesi) come utente administrator, dovremmo quindi scrivere:
0 9-18 * * *
administrator
/percorso/al/comando 2&>1
Passiamo adesso ad Anacron: la prima operazione necessaria è l'installazione, in quanto non viene
fornito insieme ad Ubuntu Server. Per fare ciò, affidiamoci al classico apt-get:
$ sudo apt-get install anacron
Al termine della rapida installazione, possiamo iniziare subito ad impostare i comandi da eseguire
con tale strumento. Il file da modificare è /etc/anacrontab, e la sintassi in questo caso è la seguente:
PERIODO INTERVALLO NOME COMANDO




PERIODO: indica ogni quanto tempo va eseguito il comando in questione, ed il suo valore
è in giorni,
INTERVALLO: indica dopo quanto tempo il comando andrà eseguito nel giorno
assegnato, utile per evitare di eseguire troppi comandi contemporaneamente e sovraccaricare
il sistema;
NOME: indica il nome da associare al comando;
COMANDO: il comando da eseguire.
Sia nel caso di Anacron che in quello di Crontab, dopo ogni modifica ai relativi file di
configurazione è necessario riavviare il demone per rendere effettivi i cambiamenti: ciò è possibile
con i seguenti comandi:
$ sudo /etc/init.d/cron restart
$ sudo /etc/init.d/anacron restart
Iptables: configurare il firewall
Iniziamo questa sezione riguardante la sicurezza del nostro server da uno degli aspetti più noti: la
configurazione del firewall. Sono numerose, infatti, le minacce che possono provenire dalla rete, e
se in ambienti domestici è sempre buona prassi tenere sempre aggiornati i propri software per la
sicurezza, in ambienti server lo è ancora di più.
Ubuntu Server, come la versione per Desktop e diverse altre distribuzioni, presenta sin dalla prima
installazione IPTables: si tratta di uno dei migliori firewall attualmente disponibili per ambienti
Linux, interamente configurabile tramite riga di comando, ed in grado di fornire un ottimo livello di
sicurezza se configurato in maniera opportuna.
La configurazione di IPTables avviene semplicemente impostando delle policy attraverso alcuni
comandi. L'elenco delle policy presenti è disponibile tramite
$ sudo iptables -L
Digitando tale comando dopo l'installazione si avrà come output una sequenza simile a questa:
Chain INPUT (policy ACCEPT)
target
prot opt source
destination
Chain FORWARD (policy ACCEPT)
target
prot opt source
destination
Chain OUTPUT (policy ACCEPT)
target
prot opt source
destination
Ciò vuol dire che IPTables non presenta alcuna configurazione attiva, ma nonostante sia in funzione
ogni pacchetto è libero di transitare sia in entrata che in uscita. Vediamo, dunque, come impedire
ciò, e permettere solo lo scambio di pacchetti sicuri.
Come probabilmente avrete notato, l'output del comando precedente risulta diviso in 3 parti:



Chain INPUT: il flusso di pacchetti in entrata verso la nostra macchina;
Chain FORWARD: il flusso di pacchetti che transita attraverso la nostra macchina, ma non
è diretta a noi;
Chain OUTPUT: il flusso di pacchetti in uscita.
IPTables, dunque, permette di configurare questi tre aspetti in maniera separata: è possibile, ad
esempio, bloccare tutto il traffico in entrata, ma permettere qualunque connessione in uscita, o
viceversa.
Una configurazione robusta prevede il blocco di tutte le connessioni in entrata, tranne alcune
eccezioni che andremo a gestire manualmente. Iniziamo, dunque, col bloccare tutto il traffico verso
il server, con i seguenti comandi
$ sudo iptables -P INPUT DROP
$ sudo iptables -P FORWARD DROP
Il secondo comando permette di negare anche il traffico in transito attraverso la nostra macchina, ed
è possibile anche trascurare tale aspetto. Abilitiamo il traffico locale, che non presenta alcuna
minaccia
$ sudo iptables -P INPUT -i lo -j ACCEPT
Adesso, è necessario andare ad abilitare alcuni tipi di connessioni, ad esempio, per permettere ad
Apache di fornire pagine web, o ad SSH di poter essere utilizzato come protocollo di connessione
remota. Ciò avverrà tramite l'apertura del traffico attraverso alcune porte, secondo lo schema che
segue:
$ sudo iptables -A INPUT -p [PROTOCOLLO] --dport [PORTA] -j ACCEPT
I valori da modificare sono quelli tra parentesi quadre:


PROTOCOLLO: il tipo di protocollo da abilitare, da scegliere tra udp e tcp;
PORTA: la porta attraverso la quale passerà il traffico.
Ogni servizio avviato utilizzerà una porta diverse per interfacciarsi con l'esterno: ad esempio,
Apache utilizza la 80, SSH la 22, FTP la 21 e così via, a meno di cambiamenti apportati ai relativi
file di configurazione. Un elenco delle porte standard è disponibile su Wikipedia, con relativo
protocollo utilizzato. Per aprire la porta 80 di Apache in ingresso dovremmo dunque scrivere:
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Volendo,è possibile anche aprire alcune porte solo a determinati IP, tramite il passaggio di un
apposito parametro seguito dall'IP o dal range di IP, in questo modo:
$ sudo iptables -A INPUT -p [PROTOCOLLO] --dport [PORTA] -s 192.168.1.0/24 -j
ACCEPT
In questo modo verrà abilitato il traffico proveniente dagli IP del tipo 192.168.1.X sulla porta
selezionata; per abilitare un solo IP è necessario inserirlo per intero.
Per concludere, una nota: come si è visto, impostando in questo modo IPTables non si è modificato
alcun file. Per questo motivo, al prossimo riavvio della macchina ogni impostazione andrà persa.
Per ripristinare la configurazione, è possibile creare uno script da avviare durante il boot della
macchina, così da eseguire ogni volta tutti i comandi lanciati per impostare IPTables.
mod_security e mod_ssl
Nel capitolo relativo ad Apache abbiamo accennato ad alcuni moduli per la sicurezza che adesso
analizzeremo più nel dettaglio: si tratta di mod_security e mod_SSL, che offrono la possibilità di
rendere ancora più sicuro il proprio web server.
Mod_security
In particolare, mod_security è una sorta di firewall aggiuntivo che può essere integrato all'interno di
Apache, che attraverso una serie di regole preimpostate o configurate manualmente previene
attacchi dall'esterno, quali, ad esempio, SQL Injection e simili. La sua installazione è molto
semplice: è sufficiente infatti lanciare il seguente comando
$ sudo apt-get install libapache-mod-security
Per caricare il modulo in Apache, lanciamo
$ sudo a2enmod mod-security
e riavviamo il web server con
$ sudo /etc/init.d/apache2 restart
Adesso, apriamo il file di configurazione globale di Apache:
$ sudo nano /etc/apache2/apache2.conf
e aggiungiamo le seguenti righe
1 <IfModule mod_security.c>
2
SecFilterEngine On
3
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off
4
SecFilterForceByteRange 0 255
5
SecAuditEngine RelevantOnly
6
SecAuditLog /var/log/apache2/audit_log
7
SecFilterDebugLog /var/log/apache2/modsec_debug_log
SecFilterDebugLevel 0
8
SecFilterScanPOST On
9
SecFilterDefaultA"deny,log,status:500"s:500"
10</IfModule>
11
12
Come già visto in precedenza, ogni riga contiene una direttiva, e nel dettaglio:










SecFilterEngine: attiva o disattiva il filtro di mod-security;
SecFilterCheckURLEncoding: codifica i caratteri speciali prima del loro passaggio
all'URL;
SecFilterCheckUnicodeEncoding: abilita o disabilita la validazione della codifica
Unicode;
SecFilterForceByteRange: permette il passaggio di richieste la cui dimensione in Byte è
contenuta in un certo intervallo;
SecAuditEngine: abilita il logging, con il valore RelevantOnly logga solo gli avvenimenti
più importanti;
SecAuditLog: specifica il file di log;
SecFilterDebugLog: specifica il file di debug;
SecFilterDebugLevel: specifica il livello di accuratezza del file di debug;
SecFilterScanPOST: abilita la scansione delle variabili passate tramite il metodo POST;
SecFilterDefaultAction: specifica il comportamento da tenere nel caso in cui una richiesta
venga filtrata; in questo caso, blocca la richiesta, la inserisce nel file di log, e restituisce
all'utente un errore 500.
Maggiori dettagli sull'utilizzo di mod_security sono disponibili all'interno della documentazione
ufficiale del progetto.
Mod_ssl
Passiamo adesso a mod_ssl: si tratta di un modulo che permette di abilitare le connessioni cifrate
tramite il protocollo https, così da garantire lo scambio di informazioni tra client e server in
maniera sicura. Tale modulo è incluso nel pacchetto apache2.2-common, che molto probabilmente è
stato installato insieme al web server. In ogni caso, per essere sicuri, lanciamo il comando
$ sudo apt-get install libapache-mod-ssl openssl
che installerà anche le librerie relative a OpenSSL. Attiviamo il modulo tramite
$ sudo a2enmod ssl
e riavviamo Apache per rendere effettivi i cambiamenti
$ sudo /etc/init.d/apache2 restart
Adesso è necessario generare il certificato e la relativa chiave: con la seguente sequenza, creeremo
una directory apposita per contenere tali file e li creeremo tramite OpenSSL
$ sudo mkdir /etc/apache2/ssl
$ cd /etc/apache2/ssl
$ sudo openssl req -new -newkey rsa:2048 -keyout apachessl.pem -x509 -set_serial
1000 -days 365 -out apachessl.crt
Creiamo un file di configurazione per il sito con cui utilizzare SSL, in questo modo
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
apriamo tale file
$ sudo nano /etc/apache2/sites-available/ssl
ed aggiungiamo le seguenti righe
1NameVirtualHost *:443
2<virtualhost *:443>
3
SSLEngine On
SSLCertificateFile
/etc/apache2/ssl/apachessl.crt
4
SSLCertificateKeyFile
/etc/apache2/ssl/apachessl.pem
5
</virtualhost>
6
Infine, apriamo il file /etc/apache2/ports.conf e, nel caso in cui non sia già presente, aggiungiamo la
riga
Listen 443
Backup
Una delle operazioni più importanti nella gestione di un server è la realizzazione di copie di backup
dei file più importanti: configurazione delle diverse applicazioni utilizzate, file dei siti web ospitati,
tabelle dei database, file di configurazione del sistema operativo e così via.
Un metodo molto semplice per realizzare copie di backup del proprio sistema operativo è l'utilizzo
di tar, l'applicazione per la creazione di archivi compressi. Supponiamo, ad esempio, di voler fare
un backup di tutto il sistema operativo, ad esclusione delle directory /proc e /mnt: per fare ciò è
sufficiente lanciare il comando
$ tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / -exclude=mnt --exclude=proc --exclude=var/spool/squid .
In questo modo, sarà creato un file in formato .tar.gz contenete tutte le directory e relative
sottodirectory presenti nella partizione in cui è installato il sistema operativo. Il nome del file
conterrà anche la data e l'ora di creazione, così da poter conservare in maniera ordinata tutti i
backup. Il file compresso potrà poi essere copiato su un altro disco di backup, inviato ad un
computer remoto, o salvato in qualunque altro modo.
Un altro strumento molto utilizzato per il backup è rsync: si tratta di un'applicazione per la copia di
dati sia in maniera locale che tra computer diversi collegati in rete. Il suo utilizzo è molto semplice:
per salvare il contenuto della nostra directory home nella directory backup, ad esempio, sarà
sufficiente lanciare il comando
$ rsync -a -v /home /backup
È possibile realizzare backup automatici a determinati orari o intervalli di tempo, sia attraverso tar
che con rsync, utilizzando crontab o anacron (vedi lezione 16), come descritto nei capitoli
precedenti di questa guida. In questo modo, non ci si dovrà preoccupare di eseguire manualmente il
backup.
Esistono, poi, diverse altre soluzioni per il backup, più semplici da utilizzare, ma che offrono come
unico modo di utilizzo quello attraverso un'interfaccia grafica. Per tale motivo, sarà necessario
installare un ambiente desktop sul nostro server: per installare GNOME, ad esempio, bisognerà
lanciare il comando
$ sudo apt-get install xorg gnome-desktop
I file che verranno installati saranno molti, ed il loro download impiegherà diverso tempo. Il server,
inoltre, verrà caricato di ulteriori processi, e dunque sarà sicuramente meno reattivo rispetto alla
versione senza ambiente desktop: l'altro lato della medaglia, però, offre la possibilità di utilizzare
strumenti grafici per il backup e non solo. Una serie di software per il backup in ambienti grafici è
disponibile in un nostro articolo, con la descrizione di ognuno ed alcuni screenshot dimostrativi.
SpamAssassin
Chiunque riceve mail quotidianamente conosce fin troppo bene la parola Spam: sono migliaia, se
non milioni, le email spazzatura che quotidianamente vengono inviate, ed il fenomeno non sembra
abbia intenzione di arrestarsi. Per combattere lo spam, però, esistono numerosi strumenti, ed in
questo capitolo vedremo come integrare il server di posta elettronica Postfix, precedentemente
installato, con uno dei software migliori in questo settore: Spamassassin.
Spamassassin è uno strumento per il filtraggio della posta elettronica in arrivo, che blocca
automaticamente tutte le e-mail che ritiene possano essere spam, lasciando passare solo messaggi
ritenuti sicuri. Vediamo dunque come installarlo ed integrarlo con Postfix. L'installazione avverrà
tramite i repository di Ubuntu, attraverso il comando
$ sudo apt-get install spamassassin spamc
Dopo l'installazione, Spamassassin è configurato in modo tale da essere avviato con l'utente root:
per questo motivo andremo ad abilitare l'esecuzione con un utente creato appositamente per
Spamassassin, tramite la sequenza che segue:
$
$
$
$
sudo
sudo
sudo
sudo
groupadd -g 5001 spamd
useradd -u 5001 -g spamd -s /sbin/nologn -d /var/lib/spamassassin spamd
mkdir /var/lib/spamassassin
chown spamd:spamd /var/lib/spamassassin
Adesso, modifichiamo il file /etc/default/spamassassin modificando alcuni valori in modo tale che
rispecchi quanto segue
1ENABLED=1
2SAHOME="/var/lib/spamassassin/"
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir
3${SAHOME} -s ${SAHOME}spamd.log"
4PIDFILE="${SAHOME}spamd.pid"
Apriamo il file /etc/postfix/master.cf, individuiamo verso l'inizio del file la riga
1smtp
inet
sostituiamola con
n
-
n
-
-
smtpd
1smtp
inet
n
-
n
-
-
smtpd
-o content_filter=spamassassin
ed aggiungiamo alla fine del file il seguente blocco
spamassassin
unix n
n
pipe
flags=R
user=spamd
argv=/usr/bin/spamc
-e /usr/sbin/sendmail
-oi -f ${sender} ${recipient}
Ultima operazione è la configurazione delle opzioni di Spamassassin: ciò avviene tramite la
modifica del file /etc/spamassassin/local.cf. Apriamolo, ed inseriamo quanto segue
rewrite_header Subject [***** SPAM _SCORE_ *****]
required_score
2.0
report_safe
0
# Abilitiamo il filtro Bayesiano
use_bayes
1
use_bayes_rules
1
# Abilitiamo l'apprendimento automatico delle regole
bayes_auto_learn
1
# Disabilitiamo i controlli di rete
skip_rbl_checks
0
use_razor2
0
use_dcc
0
use_pyzor
0
EHCP (Easy Hosting Control Panel)
Il primo pannello che tratteremo è EHCP, acronimo di Easy Hosting Control Panel: si tratta di un
pannello per la gestione dei principali servizi web attraverso una semplice ed intuitiva interfaccia
grafica, senza la necessità di metter mano a file di configurazione vari. Per installarlo,
colleghiamoci alla pagina di download ufficiale, scarichiamo il file in formato tgz,
decomprimiamolo con il comando
$ tar -zxvf ehcp_latest.tgz
entriamo nella directory creata
$ cd ehcp
e lanciamo lo script di installazione con il comando
$ ./install.sh
Verranno poste diverse domande per permettere ad EHCP di configurare l'ambiente di lavoro al
meglio, e di installare tutte le applicazioni che verranno mostrate. EHCP, infatti, permette di
installare facilmente e rapidamente strumenti com Apache, MySQL, PHP e così via.
Al termine dell'installazione, sarà possibile accedere da un altro computer attraverso il proprio
browser, qualunque esso sia: è sufficiente infatti collegarsi all'indirizzo IP del server ed inserire
nella schermata di login i dati relativi al nostro utente per trovarsi subito di fronte l'interfaccia
principale di EHCP, che permetterà di configurare e gestire tutti i parametri delle diverse
applicazioni installate. Tale interfaccia si presenta piuttosto semplice e leggera, e rappresenta una
maniera molto comoda per configurare le impostazioni più ostiche o più complicate delle
applicazioni installate per la messa a punto del server.
EHCP è un'applicazione realizzata principalmente per distribuzioni come Debian, Ubuntu e
derivate, motivo per cui si integra alla perfezione con quella che è la struttura di base del sistema
operativo e degli strumenti messi a disposizione. Per installarlo in altri ambienti operativi è
necessario apportare alcune modifiche durante la fase di installazione.
Con EHCP è inoltre possibile accedere ad alcune informazioni di sistema basilari per monitorare lo
stato di forma della macchina e per ricevere informazioni sul sistema operativo. Le informazioni
fornite non sono moltissime, e sicuramente sono in numero inferiore rispetto al prossimo pannello
che analizzeremo: Webmin.
Webmin
Webmin è probabilmente il più completo pannello attualmente disponibile per ambienti Linux:
grazie alla sua semplicità di utilizzo e all'elevato numero di funzionalità che mette a disposizione,
permette di avere accesso praticamente a quasi tutte le informazioni e le impostazioni di sistema.
Grazie a Webmin sarà possibile creare utenti, riavviare il sistema, modificare i permessi di accesso
a file e directory, cambiare le impostazioni delle applicazioni e svolgere tante altre operazioni, il
tutto attraverso un comodo browser.
La gestione del server, oltre che localmente, può avvenire anche da remoto: sarà infatti possibile
gestire da un'altra postazione il nostro server attraverso Webmin, così da poter controllare lo stato
del sistema e gestire il tutto anche quando non si è fisicamente vicini alla macchina.
Come prima operazione, procediamo con l'installazione di Webmin sul server: per fare ciò, apriamo
il browser links2 all'indirizzo della pagina ufficiale del progetto
$ links2 http://www.webmin.com/
e scegliamo dal menù laterale il download della versione in formato DEB. Una volta scaricato,
installiamolo con il comando
$ sudo dpkg -i webmin_x.xxx_all.deb
dove x.xxx, come al solito, indica il numero di versione. Nel caso in cui vengano riscontrati
problemi con le dipendenze, è possibile risolverli lanciando il comando
$ sudo apt-get -f install
Adesso, dopo aver installato webmin, sarà possibile accedere alla sua interfaccia principale, anche
da remoto, collegandoci con il browser all'indirizzo
http://indirizzodelserver:10000 (o https://indirizzodelserver:10000 se si usa la connessione SSL)
Nel caso in cui ci si colleghi localmente, sarà possibile collegarsi anche a
http://localhost:10000 (o https://localhost:10000)
Sin da subito è possibile riscontrare la semplicità di organizzazione di Webmin: tramite il menu
laterale sinistro è possibile accedere alle diverse sezioni dell'applicazione: la voce System, ad
esempio, permette di accedere alla gestione del sistema operativo, offrendo la possibilità di svolgere
moltissimi compiti che nei capitoli precedenti abbiamo svolto tramite riga di comando; la sezione
Networking si occupa della gestione delle impostazioni di rete, mentre cliccando su Server sarà
possibile accedere alla gestione delle principali applicazioni per Server installate, come Apache o
MySQL; la sezione Hardware, infine, permette di ricevere informazioni sullo stato dell'hardware
della macchina, come lo spazio disponibile sul disco fisso, la memoria occupata e così via. Per
avere maggiori informazioni su Webmin, suggeriamo la lettura di questo articolo della sezione
Server di HTML.it.
Gestione dei servizi
Chiudiamo questa guida con due capitoli riguardanti alcuni problemi comuni che possono essere
riscontrati e la manutenzione della macchina. Iniziamo con la gestione dei servizi, aspetto che
abbiamo visto sotto alcuni aspetti in molti dei capitoli precedenti e che andremo a comprendere ora
in maniera più approfondita.
Nel capitolo 3, ad esempio, dopo aver configurato i parametri di rete, abbiamo lanciato il comando
$ sudo /etc/init.d/networking restart
In questo modo, abbiamo riavviato la gestione della rete, rendendo attivi i cambiamenti apportati.
All'interno della directory /etc/init.d, infatti, sono situati diversi script che permettono l'avvio di
servizi ed applicazioni durante la fase di avvio del sistema operativo. Come visto, tali servizi
possono essere fermati manualmente, avviati nuovamente o riavviati durante la loro esecuzione.
In generale, la gestione di un servizio avviene secondo la sintassi che segue
$ sudo /etc/init.d/servizio [comando]
Al posto di [comando] deve essere inserito uno dei seguenti valori:





start: permette l'avvio di un servizio che non è attualmente avviato;
stop: al contrario di start, ferma un servizio precedentemente avviato;
restart: riavvia un servizio attualmente attivo, utile in caso di cambiamenti alla
configurazione dell'applicazione;
reload: ricarica i file di configurazione del servizio senza riavviarlo;
force-reload: come nel caso precedente, ma forza il servizio a caricare nuovamente le
impostazioni.
Oltre a gestire gli script già presenti, è possibile anche inserire script personali all'interno della
cartella /etc/init.d, così che questi vengano avviati automaticamente durante la fase di boot della
macchina. Supponiamo, ad esempio, di voler creare uno script denominato mioscript e di voler fare
in modo che venga caricato dal sistema operativo durante l'avvio.
Creiamo un file all'interno del quale andranno aggiunte le direttive che andrà ad eseguire lo script,
semplicemente con un editor di testo
$ sudo nano /etc/init.d/mioscript
Aggiorniamo il database degli script, con il comando
$ sudo update-rc.d mioscript defaults
e rendiamo eseguibile lo script
$ sudo chmod +x /etc/init.d/mioscript
La gestione di questi aspetti resta comunque un'operazione importante e delicata: è consigliata,
infatti, una lettura di questo articolo che spiega chiaramente come funzionano i runlevel in Ubuntu e
Debian.
Monitoraggio dell'hardware - I
Tenere sotto controllo la propria macchina è sempre un'operazione importante, da non trascurare
per evitare spiacevoli perdite o danni alle componenti hardware del sistema. In questo capitolo
vedremo quali sono alcuni dei principali software per monitorare lo stato della propria macchina.
Hard Disk
Iniziamo con una delle componenti più importanti, i dischi fissi, che contengono tutte le
informazioni relative al sistema operativo, alle applicazioni installate, oltre che i file personali che
eventualmente abbiamo salvato. Un primo strumento da utilizzare per conoscere lo stato dei propri
hard disk è hdparm, installabile tramite il comando
$ sudo apt-get install hdparm
Lo scopo principale di hdparm è quello di modificare numerosi parametri relativi alla scrittura e alla
lettura dei dati da e sull'hard disk, oltre che al funzionamento stesso del dispositivo, ma può essere
utilizzato anche per ottenere informazioni sulle prestazioni. Lanciando, ad esempio, il comando
$ sudo hdparm /dev/sda
sarà possibile effettuare un test della velocità in alcune operazioni sul disco /dev/sda. La
documentazione fornita insieme all'applicazione offre una buona base per sapere quali sono i
parametri configurabili con hdparm e come utilizzare l'applicazione. Tale documentazione è
sfogliabile tramite
$ man hdparm
Per avere informazioni più dettagliate sullo stato di forma di ogni disco fisso installato è possibile
utilizzare smartctl, che però necessita di hard disk che supportino il sistema S.M.A.R.T. Per
installarlo è sufficiente
$ sudo apt-get install smartctl
mentre per eseguire un test rapido basta lanciare il comando
$ sudo smartctl -t short /dev/sda
Al posto di short, possiamo inserire long per avere un test più lungo, che potrebbe impiegare anche
un'ora.
Altra informazione molto importante da monitorare è la temperatura: a tale scopo risulta essere utile
l'applicazione hddtemp, sviluppata proprio per fornire la temperatura di esercizio del disco fisso.
Installabile tramite il comando
$ sudo apt-get install hddtemp
permette di conoscere la temperatura di ogni disco semplicemente con il comando
$ sudo hddtemp /dev/sda
Monitoraggio dell'hardware - II
opo aver visto come monitorare il disco rigido, vediamo come controllare lo stato di funzionamento
della Ram e delle temperature.
RAM
Oltre che avere un quantitativo di RAM sufficiente a supportare le operazioni che andranno
eseguite, è importante anche conoscere sempre lo stato di funzionamento dei propri banchi di
memoria: non sono rari, infatti, i casi in cui le applicazioni crashano a causa di problemi di lettura o
scrittura in memoria, e anche altri tipi di problemi possono essere causati da un cattivo stato della
RAM.
Per controllare lo stato della propria memoria è possibile utilizzare l'utility memtest86+: per fare
ciò, durante la fase di avvio della macchina premiamo il tasto Esc prima che venga avviato il
sistema operativo, così da far apparire la schermata di GRUB che ci permette di selezionare il
sistema operativo, e scegliamo la voce relativa a memtest86+. Si aprirà una nuova schermata dalla
quale sarà possibile avviare un test della memoria.
Temperature
Oltre che dell'hard disk, è importante controllare anche la temperatura di tutti gli altri dispositivi
hardware. Uno strumento che permette di fare ciò è lm_sensors: semplice da utilizzare, permette di
sfruttare i sensori presenti sulla scheda madre per monitorare la temperatura della macchina, a patto
che la propria scheda madre ne possegga.
Installiamo lm_sensors con il comando
$ sudo apt-get install lm_sensors
avviamo la ricerca dei sensori con il comando
$ sudo sensors-detect
e seguiamo il procedimento guidato che permetterà di configurare l'applicazione. Una volta
terminato, sarà possibile conoscere la temperatura dei dispositivi riconosciuti tramite il comando
$ sensors