10.1. Mantenere sicuro il proprio sistema
Dovreste sempre sforzarvi di mantenere il vostro sistema sicuro controllandone l'uso che ne viene fatto e le sue possibili vulnerabilità; tali vulnerabilità andrebbero poi eliminate installando gli aggiornamenti di sicurezza non appena sono disponibili. Anche se siete convinti della robustezza del vostro sistema appena installato, va ricordato che la sicurezza di un sistema si degrada nel tempo, poiché potrebbero venire scoperte nuove vulnerabilità nei servizi offerti dal proprio sistema agli utenti, anche questi ultimi potrebbero compromettere la sicurezza del sistema per scarse cognizioni tecniche (ad esempio, potrebbero accedere al sistema da remoto usando un protocollo di comunicazione non cifrato, o usando delle password banali e dunque facili da indovinare) o perché mirano esplicitamente a compromettere la sicurezza del sistema (per esempio, installano dei servizi aggiuntivi sul sistema usando le risorse del sistema che sono state loro concesse).
10.1.1. Mantenersi aggiornati sulle vulnerabilità di sicurezza
Sebbene molti amministratori di sistema vengano a conoscenza di una vulnerabilità del sistema solo quando un aggiornamento diventa disponibile, sarebbe meglio venire a conoscenza delle vulnerabilità di sicurezza il prima possibile, per prevenire gli attacchi, introducendo delle contromisure di emergenza. Ciò è particolarmente utile nel caso in cui stiate amministrando un sistema esposto (ossia connesso ad Internet) che fornisce un servizio. In tal caso gli amministratori di sistema dovrebbero controllare regolarmente delle fonti di informazioni fidate relative alla sicurezza, così da venire a conoscenza il prima possibile se un servizio critico del sistema (o che comunque potrebbe avere degli effetti indesiderati su di esso) è affetto da vulnerabilità.
Un amministratore di sistema scrupoloso dovrebbe usare tali informazioni per determinare le falle nella sicurezza del sistema che sta amministrando, determinare la pericolosità di tali falle ed applicare (se possibile) delle contromisure temporanee fintantoché non venga rilasciato un aggiornamento di sicurezza che risolva il problema.
I problemi relativi alla sicurezza, individuati per le versioni di Debian di cui il Team Debian per la Sicurezza si occupa ancora, verranno pubblicati negli avvisi Debian per la sicurezza e i conseguenti aggiornamenti saranno disponibili per tutti gli utenti (vedete al riguardo
Sezione 10.1.2, «Aggiornare continuamente il sistema»). Una volta che gli aggiornamenti di sicurezza vengono pubblicati, l'avviso corrispondente viene cancellato dall'archivio, ma è ancora possibile ottenere dettagli sulla vulnerabilità di sicurezza, identificata col suo nome CVE, usando la
http://www.debian.org/security/crossreferences che collega gli avvisi Debian ai dati sulle vulnerabilità forniti dal CVE.
Notate, comunque, che il Team per la Sicurezza di Debian Testing gestisce solo vulnerabilità note al pubblico. In alcune occasione invece il Team Debian per la Sicurezza (fate attenzione che sono due entità separate) potrebbe preparare degli Avvisi Debian sulla Sicurezza (l'acronimo inglese di tali documenti è DSA) in base ad informazioni riservate (che gli sono state fornite ad esempio da mailing list private del produttore o da alcuni dei manutentori del software in via confidenziale). Pertanto alcuni problemi di sicurezza, sebbene descritti e risolti tramite un DSA, potrebbero non essere presenti nell'archivio.
10.1.2. Aggiornare continuamente il sistema
10.1.2.1. Controllo manuale degli aggiornamenti di sicurezza disponibili
Debian ha uno strumento apposito per verificare se un sistema deve essere aggiornato, ma molti utenti vorranno semplicemente controllare manualmente se sono disponibili aggiornamenti di sicurezza per il loro sistema.
Se avrete configurato il sistema come descritto in
Sezione 4.2, «Eseguire un aggiornamento per la sicurezza», basterà dare il comando:
# apt-get update
# apt-get upgrade -s
[ ... review packages to be upgraded ... ]
# apt-get upgrade
# checkrestart
[ ... restart services that need to be restarted ... ]
La prima riga scaricherà l'elenco dei pacchetti disponibili tra quelli presenti sul sistema e configurati. L'opzione
-s
simulerà l'esecuzione, cioè
non scaricherà o installerà i pacchetti, ma piuttosto, comunicherà quali dovrebbero essere scaricati/installati. Dal risultato si potrà dedurre quali pacchetti siano stati corretti da Debian e siano disponibili come aggiornamento di sicurezza. Per esempio:
# apt-get upgrade -s
Reading Package Lists... Done
Building Dependency Tree... Done
2 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable)
Inst libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable)
Conf cvs (1.11.1p1debian-8.1 Debian-Security:3.0/stable)
Conf libcupsys2 (1.1.14-4.4 Debian-Security:3.0/stable)
Notate che il sistema dovrà essere riavviato nel caso vi sia stato un aggiornamento del kernel.
10.1.2.2. Controllo degli aggiornamenti dal Desktop
Since Debian 4.0 lenny Debian provides and installs in a default installation update-notifier. This is a GNOME application that will startup when you enter your Desktop and can be used to keep track of updates available for your system and install them. It uses update-manager for this.
In un sistema stabile gli aggiornamenti sono disponibili solo quando viene rilasciata una patch di sicurezza o al momento dei nuovi rilasci. Di conseguenza, se il sistema è configurato per ricevere gli aggiornamenti di sicurezza, come descritto in
Sezione 4.2, «Eseguire un aggiornamento per la sicurezza» e c'è un'istanza di cron che aggiorna le informazioni dei pacchetti, verrete informati attraverso un'icona dell'area di notifica del desktop.
La notifica non è intrusiva e gli utenti non sono obbligati ad installare gli aggiornamenti. Dall'icona di notifica un utente del desktop (con la password di amministratore) può accedere ad una semplice interfaccia grafica per vedere quali sono gli aggiornamenti disponibili ed installarli.
Questa applicazione funziona controllando il database dei pacchetti e comparando il sistema con il suo contenuto. Se il database dei pacchetti viene aggiornato periodicamente attraverso un'istanza di cron
, allora il contenuto del database sarà più nuovo dei pacchetti installati nel sistema e quindi una applicazione lo notificherà.
Apt
installa un compito (/etc/cron.d/apt
) che verrà eseguito a seconda della configurazione di Apt (più nello specifico APT::Periodic). Nell'ambiente GNOME questo valore di configurazione può essere modificato in Sistema > Amministrazione > Sorgenti Software > Aggiornamenti, o eseguendo /usr/bin/software-properties
.
Se il sistema è configurato per scaricare la lista dei pacchetti quotidianamente ma non per scaricare i pacchetti stessi, il file
/etc/apt/apt.conf.d/10periodic
dovrebbe avere questo aspetto:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
Users of the KDE desktop environment will probably prefer to install adept and adept-notifier instead which offers a similar functionality but is not part of the standard installation.
10.1.2.3. Controllo automatico degli aggiornamenti con cron-apt
Another method for automatic security updates is the use of cron-apt. This package provides a tool to update the system at regular intervals (using a cron job), and can also be configured to send mails to the system administrator using the local mail transport agent. It will just update the package list and download new packages by default but it can be configured to automatically install new updates.
Se volete aggiornare automaticamente il vostro sistema (anche solo scaricandone i pacchetti), controllate la versione della distribuzione, come descritto in
Sezione 7.5.3, «Controllo di rilascio per ogni distribuzione»; in mancanza di questo controllo, non potrete essere sicuri che i pacchetti provengano da una fonte fidata.
10.1.2.4. Individuazione automatica dei problemi di sicurezza con debsecan
The
debsecan
program evaluates the security status of by reporting both missing security updates and security vulnerabilities. Unlike
cron-apt, which only provides information related to security updates available, but this tool obtains information from the security vulnerability database maintained by the Debian Security Team which includes also information on vulnerabilities which are not yet fixed through a security update. Consequently, it is more efficient at helping administrators track security vulnerabilities (as described in
Sezione 10.1.1, «Mantenersi aggiornati sulle vulnerabilità di sicurezza»).
Upon installing the Debian package debsecan, and if the administrator consents to it, it will generate a cron task that will make it run and send the output to a specific user whenever it finds a vulnerable package. It will also download the information from the Internet. The location of the security database is also part of the questions ask on installation and are later defined /etc/default/debsecan
, it can be easily adjusted for systems that do not have Internet access so that they all pull from a local mirror so that there is a single point that access the vulnerability database.
Notate, comunque, che il Team Debian per la sicurezza esamina molte vulnerabilità, incluse quelle a basso rischio che potrebbero essere ignorate e non essere mai risolte tramite un aggiornamento di sicurezza; alcune vulnerabilità che inizialmente sono state identificate come riguardanti anche Debian, potrebbero, in futuro, dopo ulteriori accertamenti, essere invece completamente irrilevanti per Debian. Debsecan
elenca tutte queste vulnerabilità, tendendo a fornire dei risultati molto più lunghi da leggere degli altri strumenti descritti in precedenza.
10.1.2.5. Altri metodi per effettuare aggiornamenti per la sicurezza
10.1.3. Evitare di usare il ramo instabile
Unless you want to dedicate time to patch packages yourself when a vulnerability arises, you should not use Debian's unstable branch for production-level systems. The main reason for this is that there are no security updates for unstable.
Il fatto è che alcuni problemi di sicurezza potrebbero apparire nella distribuzione unstable e non nella stable. Questo è dovuto alle nuove funzionalità costantemente aggiunte alle applicazioni lì fornite, come anche a nuove applicazioni che vengono incluse senza aver passato un collaudo approfondito.
Per quanto riguarda l'eseguire aggiornamenti di sicurezza nel ramo unstable, dovreste aggiornare completamente alle nuove versioni (che vengono aggiornate più dei pacchetti in questione). Sebbene ci siano alcune eccezioni, solamente le patch di sicurezza vengono riportate nel ramo stable. L'idea di fondo è che tra gli aggiornamenti non venga aggiunto nuovo codice, ma che vengano solamente risolti i problemi importanti per la sicurezza.
10.1.4. Supporto alla sicurezza per il ramo testing
Se usate il ramo
testing, ci sono alcuni aspetti da tenere in considerazione sulla disponibilità degli aggiornamenti di sicurezza:
Quando è pronta una correzione di sicurezza, il Team per la Sicurezza appronta il backport della patch a stable (in quanto stable di solito è indietro di qualche versione, minore o maggiore). I manutentori del pacchetto sono responsabili della preparazione dei pacchetti per il ramo unstable, di solito basati su una letteralmente nuova versione. A volte le modifiche avvengono quasi in contemporanea e altre volte uno dei due rami riceve la correzione di sicurezza prima dell'altro. I pacchetti per la distribuzione stable sono soggetti ad un controllo più approfondito di quelli per unstable, in quanto quest'ultima contiene perlopiù la versione più recente (che potrebbe includere nuovi bug ancora sconosciuti).
Gli aggiornamenti di sicurezza sono normalmente disponibili per il ramo unstable quando il manutentore del pacchetto crea un nuovo pacchetto e per il branch stable quando il Team per la Sicurezza fa un nuovo caricamento e pubblica un DSA. Notate che nessuno di questi due cambia il ramo di testing.
Se nessun (nuovo) errore viene scoperto nella versione unstable del pacchetto, questo si sposta nel ramo testing dopo diversi giorni. Il tempo che occorre per questo procedimento di solito è dieci giorni, anche se dipende dalla priorità di caricamento del cambiamento e se il pacchetto viene bloccato dall'ingresso nel ramo testing dalle sue relazioni di dipendenza. Notate che se il pacchetto viene bloccato dall'entrata in testing la priorità di caricamento non modificherà il tempo che gli occorre per entrare.
Questo comportamento può cambiare in base allo stato di rilascio della distribuzione. Quando un rilascio è quasi imminente, il Team per la Sicurezza o i manutentori del pacchetto possono fornire degli aggiornamenti direttamente al ramo testing.
Additionally, the
http://secure-testing-master.debian.net can issue Debian Testing Security Advisories (DTSAs) for packages in the
testing branch if there is an immediate need to fix a security issue in that branch and cannot wait for the normal procedure (or the normal procedure is being blocked by some other packages).
Gli utenti che volessero usufruire di questo supporto devono aggiungere le seguenti righe al loro
/etc/apt/sources.list
(invece delle righe descritte in
Sezione 4.2, «Eseguire un aggiornamento per la sicurezza»):
deb http://security.debian.org testing/updates main contrib non-free
# This line makes it possible to donwload source packages too
deb-src http://security.debian.org testing/updates main contrib non-free
10.1.5. Aggiornamento automatico in un sistema Debian GNU/Linux
Per cominciare, gli aggiornamenti automatici non sono del tutto consigliabili, visto che gli amministratori dovrebbero leggere gli annunci DSA e comprendere l'impatto di ogni aggiornamento di sicurezza.
Se volete aggiornare automaticamente il vostro sistema occorre:
Configure apt
so that those packages that you do not want to update stay at their current version, either with apt
's pinning feature or marking them as hold with aptitude
or dpkg
.
To pin the packages under a given release, you must edit
/etc/apt/preferences
(see
apt_preferences(5)) and add:
Package: *
Pin: release a=stable
Pin-Priority: 100
FIXME: verificare se questa configurazione è corretta.
L'opzione
-y
farà in modo che
apt
risponda automaticamente 'yes' a tutte le domande che possono essere poste durante l'aggiornamento. In alcuni casi può essere preferibile usare l'opzione
--trivial-only
invece di quella
--assume-yes
(equivalente a
-y
)
.
Configurare
debconf
in modo che non ponga nessuna domanda durante l'aggiornamento; in questo modo l'aggiornamento non è interattivo
.
Controllare i risultati dell'esecuzione di cron
, che verranno spediti al superutente (a meno che cron
non sia stato configurato diversamente con la variabile MAILTO
nell'apposito script).
Un'alternativa più sicura potrebbe essere usare l'opzione -d
(o --download-only
), che scaricherà ma non installerà i pacchetti necessari. L'aggiornamento verrà eseguito manualmente se l'esecuzione di cron
mostrerà che il sistema deve essere aggiornato.
Ad ogni modo questo procedimento non è consigliabile per unstable, senza prima aver effettuato un'accurata analisi, perché potrebbe rendere il sistema inusabile se qualche bug pericoloso si insinuasse in un pacchetto importante e venisse installato nel sistema. Testing è un po' più sicura da questo punto di vista, dal momento che le possibilità di scoprire i bug più gravi prima che il pacchetto sia inserito in testing sono maggiori (tuttavia potreste non avere alcun aggiornamento di sicurezza disponibile, in questo caso).
Se avete una distribuzione mista, cioè una distribuzione
stable con alcuni pacchetti presi da
testing o
unstable, potete utilizzare il sistema del pinning o l'opzione
--target-release
di
apt-get
per aggiornare
solo quei pacchetti che hanno subito variazioni
.