Product SiteDocumentation Site

4.2. Eseguire un aggiornamento per la sicurezza

Non appena nuovi bug di sicurezza vengono scoperti nei pacchetti, i manutentori di Debian e gli autori dei programmi generalmente li correggono in pochi giorni o addirittura ore. Dopo che il bug è risolto, viene reso disponibile un nuovo pacchetto su http://security.debian.org.
Se state installando una qualsiasi versione di Debian dovete tenere a mente che potrebbero essere usciti nel frattempo degli aggiornamenti per la sicurezza per pacchetti che sono stati scoperti come affetti da vulnerabilità. Ci potrebbero essere comunque delle versioni secondarie (ce ne sono state quattro in Debian 3.0 sarge) che includono questi aggiornamenti dei pacchetti.
During installation security updates are configured for your system and pending updates downloaded and applied, unless you specifically opt out of this or the system was not connected to the Internet. The updates are applied even before the first boot, so the new system starts its life as up to date as possible.
To manually update the system, put the following line in your sources.list and you will get security updates automatically, whenever you update your system. Replace [CODENAME] with the release codename, e.g. squeeze.
deb http://security.debian.org/ stable/updates main contrib non-free
Notate: se state utilizzando il ramo testing, utilizzate i sorgenti dei mirror di sicurezza di testing come descritto in Sezione 10.1.4, «Supporto alla sicurezza per il ramo testing».
Una volta che avete fatto questo, potrete utilizzare più strumenti per aggiornare il vostro sistema. Se state usando un sistema desktop avrete un'applicazione chiamata[9] update-notifier che renderà semplice il controllo della disponibilità di nuovi aggiornamenti; selezionandola potrete aggiornare un sistema dal desktop (utilizzando update-manager). Per maggiori informazioni vedete Sezione 10.1.2.2, «Controllo degli aggiornamenti dal Desktop». Negli ambienti desktop potete anche utilizzare synaptic (GNOME), kpackage o adept (KDE) per interfacce più avanzate. Se state lavorando su un semplice terminale, in console, per aggiornare potete utilizzare aptitude, apt o dselect (deprecato):
  • se volete utilizzare l'interfaccia di testo di aptitude occorre solamente selezionare u (aggiorna) seguito da g (esegui aggiornamento). Altrimenti scrivete i seguenti comandi sulla riga di comando (come root):
    # aptitude update
    # aptitude upgrade
  • se volete utilizzare apt scrivete solamente i comandi come con aptitude, ma sostituite le righe sopra di aptitude con apt-get.
  • se volete utilizzare dselect allora prima [U]Aggiornare, poi [I]nstallare ed alla fine, [C]onfigurare i pacchetti installati/aggiornati.
If you like, you can add the deb-src lines to /etc/apt/sources.list as well. See apt(8) for further details.

4.2.1. Aggiornamento di sicurezza delle librerie

Once you have executed a security update you might need to restart some of the system services. If you do not do this, some services might still be vulnerable after a security upgrade. The reason for this is that daemons that are running before an upgrade might still be using the old libraries before the upgrade [10].
From Debian Jessie and up, you can install the needrestart package, which will run automatically after each APT upgrade and prompt you to restart services that are affected by the just-installed updates. In earlier releases, you can run the checkrestart program (available in the debian-goodies package) manually after your APT upgrade.
Alcuni pacchetti (come libc6) fanno questo controllo nella fase di post installazione per un insieme limitato di servizi, soprattutto perché un aggiornamento di librerie essenziali potrebbe arrecare danni ad alcune applicazioni (fino al loro riavvio)[11].
Quindi portare il sistema al runlevel 1 (singolo utente) e poi di nuovo a runlevel 3 (multiutente) ed assicurare il riavvio della maggior parte dei servizi di sistema (se non di tutti). Ma questa non è un'opzione fattibile se state eseguendo l'aggiornamento di sistema da una connessione remota (come ssh) poiché questa verrà interrotta.
Excercise caution when dealing with security upgrades if you are doing them over a remote connection like ssh. A suggested procedure for a security upgrade that involves a service restart is to restart the SSH daemon and then, immediately, attempt a new ssh connection without breaking the previous one. If the connection fails, revert the upgrade and investigate the issue.

4.2.2. Aggiornamenti di sicurezza per il kernel

Per prima cosa dovete essere sicuri che il kernel che volete aggiornare sia supportato dal vostro gestore di pacchetti. Se avete fatto l'installazione usando il sistema di installazione di Debian 3.0 o versioni precedenti, il kernel non è integrato nel sistema di gestione dei pacchetti e potrebbe non essere aggiornato. Potete trovare conferma di ciò lanciando:
$ dpkg -S `readlink -f /vmlinuz`
linux-image-2.6.18-4-686: /boot/vmlinuz-2.6.18-4-686
If your kernel is not being managed you will see a message saying that the package manager did not find the file associated to any package instead of the message above, which says that the file associated to the current running kernel is being provided by the linux-image-2.6.18-4-686. So first, you will need to manually install a kernel image package. The exact kernel image you need to install depends on your architecture and your prefered kernel version. Once this is done, you will be able to manage the security updates of the kernel just like those of any other package. In any case, notice that the kernel updates will only be done for kernel updates of the same kernel version you are using, that is, apt will not automatically upgrade your kernel from the 2.4 release to the 2.6 release (or from the 2.4.26 release to the 2.4.27 release[12]).
The installation system of recent Debian releases will handle the selected kernel as part of the package system. You can review which kernels you have installed by running:
$ COLUMNS=150 dpkg -l 'linux-image*' | awk '$1 ~ /ii/ { print $0 }'
Eseguite i seguenti comandi per controllare se il vostro kernel ha bisogno di essere aggiornato:
$ kernfile=`readlink -f /vmlinuz`
$ kernel=`dpkg -S $kernfile | awk -F : '{print $1}'`
$ apt-cache policy $kernel
linux-image-2.6.18-4-686:
  Installed: 2.6.18.dfsg.1-12
  Candidate: 2.6.18.dfsg.1-12
  Version table:
 *** 2.6.18.dfsg.1-12 0
        100 /var/lib/dpkg/status
Nel caso in cui stiate effettuando un aggiornamento di sicurezza che coinvolge anche il kernel è necessario riavviare il sistema affinché l'aggiornamento di sicurezza sia efficace. Finché il sistema non viene riavviato rimane in esecuzione la vecchia (e vulnerabile) immagine del kernel.
If you need to do a system reboot (because of a kernel upgrade) you should make sure that the kernel will boot up correctly and network connectivity will be restored, specially if the security upgrade is done over a remote connection like ssh. For the former you can configure your boot loader to reboot to the original kernel in the event of a failure (for more detailed information read Remotely rebooting Debian GNU/Linux machines). For the latter you have to introduce a network connectivity test script that will check if the kernel has started up the network subsystem properly and reboot the system if it did not[13]. This should prevent nasty surprises like updating the kernel and then realizing, after a reboot, that it did not detect or configure the network hardware properly and you need to travel a long distance to bring the system up again. Of course, having the system serial console [14] in the system connected to a console or terminal server should also help debug reboot issues remotely.


[9] In etch e nelle versioni successive.
[10] Even though the libraries have been removed from the filesystem the inodes will not be cleared up until no program has an open file descriptor pointing to them.
[11] Ciò è accaduto, per esempio, nell'aggiornamento da libc6 2.2.x a 2.3.x a causa di problemi con l'autenticazione NSS, vedete http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html.
[12] Unless you have installed a kernel metapackage like linux-image-2.6-686 which will always pull in the latest kernel minor revision for a kernel release and a given architecture.
[13] A sample script called testnet is available in the Remotely rebooting Debian GNU/Linux machines article. A more elaborate network connectivity testing script is available in this Testing network connectivity article.
[14] Setting up a serial console is beyond the scope of this document, for more information read the Serial HOWTO and the Remote Serial Console HOWTO.