Amministratore Linux - Aggiornamenti di sistema
Il sistema CentOS 7 può essere aggiornato in tre modi:
- Manually
- Automatically
- Aggiorna manualmente per i principali problemi di sicurezza e configura gli aggiornamenti automatici
In un ambiente di produzione, si consiglia di aggiornare manualmente i server di produzione. O almeno stabilire un piano di aggiornamento in modo che l'amministratore possa garantire servizi vitali per le operazioni aziendali.
È plausibile che un semplice aggiornamento della protezione possa causare problemi ricorsivi con un'applicazione comune che richiede l'aggiornamento e la riconfigurazione da parte di un amministratore. Quindi, stancati di pianificare gli aggiornamenti automatici in produzione prima di testare prima su server e desktop di sviluppo.
Aggiorna manualmente CentOS 7
Per aggiornare CentOS 7, vorremo acquisire familiarità con il comando yum .yumè usato per gestire i repository di pacchetti in CentOS 7. yum è lo strumento comunemente usato per:
- Aggiorna il sistema Linux CentOS 7
- Cerca pacchetti
- Installa i pacchetti
- Rileva e installa le dipendenze richieste per i pacchetti
Per poter utilizzare yum per gli aggiornamenti, il tuo server CentOS dovrà essere connesso a Internet. La maggior parte delle configurazioni installerà un sistema di base, quindi utilizzerà yum per interrogare il repository CentOS principale per funzionalità aggiuntive nei pacchetti e applicare gli aggiornamenti di sistema.
Abbiamo già utilizzato yum per installare alcuni pacchetti. Quando usi yum dovrai sempre farlo come utente root. O un utente con accesso root. Quindi cerchiamo e installiamo un editor di testo facile da usare chiamato nano .
[root@centos rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.rackspace.com
* epel: mirror.chpc.utah.edu
* extras: repos.forethought.net
* updates: repos.forethought.net
======================================================================
N/S matched: nano
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
Name and summary matches only, use "search all" for everything.
[root@centos rdc]#
Ora, installiamo l' editor di testo nano .
[root@centos rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
* epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
* updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch
Version Repository Size
================================================================================
Installing:
nano x86_64
2.3.1-10.el7 base 440 k
Transaction Summary
Install 1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : nano-2.3.1-10.el7.x86_64
1/1
Verifying : nano-2.3.1-10.el7.x86_64
1/1
Installed:
nano.x86_64 0:2.3.1-10.el7
Complete!
[root@centos rdc]#
Abbiamo installato l'editor di testo nano. Questo metodo, IMO, è molto più semplice della ricerca di utilità sui siti Web e dell'esecuzione manuale dei programmi di installazione. Inoltre, i repository utilizzano le firme digitali per convalidare i pacchetti assicurando che provengano da una fonte attendibile con yum. Spetta all'amministratore convalidare l'autenticità quando si fida di nuovi repository. Questo è il motivo per cui è considerata una best practice essere stanco di repository di terze parti.
Yum può essere utilizzato anche per rimuovere un pacchetto.
[root@centos rdc]# yum remove nano
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
Ora controlliamo gli aggiornamenti.
[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.keystealth.org
* epel: pubmirror1.math.uh.edu
* extras: centos.den.host-engine.com
* updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-adsl.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-glib.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-libnm.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-team.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-tui.x86_64 1:1.4.0-17.el7_3 updates
NetworkManager-wifi.x86_64 1:1.4.0-17.el7_3 updates
audit.x86_64 2.6.5-3.el7_3.1 updates
audit-libs.x86_64 2.6.5-3.el7_3.1 updates
audit-libs-python.x86_64
Come illustrato, abbiamo alcune dozzine di aggiornamenti in attesa di installazione. In realtà, ci sono circa 100 aggiornamenti totali poiché non abbiamo ancora configurato gli aggiornamenti automatici. Quindi, installiamo tutti gli aggiornamenti in sospeso.
[root@centos rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.usc.edu
* epel: pubmirror1.math.uh.edu
* extras: repos.forethought.net
* updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
selinux-policy noarch 3.13.1102.el7_3.15 updates 414 k
selinux-policy-targeted noarch 3.13.1102.el7_3.15 updates 6.4 M
systemd x86_64 21930.el7_3.7 updates 5.2 M
systemd-libs x86_64 21930.el7_3.7 updates 369 k
systemd-python x86_64 21930.el7_3.7 updates 109 k
systemd-sysv x86_64 21930.el7_3.7 updates 63 k
tcsh x86_64 6.18.01-13.el7_3.1 updates 338 k
tzdata noarch 2017a1.el7 updates 443 k
tzdata-java noarch 2017a1.el7 updates 182 k
wpa_supplicant x86_64 1:2.021.el7_3 updates 788 k
Transaction Summary
===============================================================================
Install 2 Packages
Upgrade 68 Packages
Total size: 196 M
Total download size: 83 M
Is this ok [y/d/N]:
Dopo aver premuto il tasto "y", inizierà l'aggiornamento di CentOS 7. Il processo generale che yum attraversa durante l'aggiornamento è:
- Controlla i pacchetti correnti
- Cerca nel repository i pacchetti aggiornati
- Calcola le dipendenze necessarie per i pacchetti aggiornati
- Scarica gli aggiornamenti
- Installa gli aggiornamenti
Ora, assicuriamoci che il nostro sistema sia aggiornato -
[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* updates: mirror.compevo.com
[root@centos rdc]#
Come puoi vedere, non ci sono aggiornamenti elencati.
Configurare gli aggiornamenti automatici per YUM
In un ambiente Enterprise, come accennato in precedenza, gli aggiornamenti automatici possono o meno essere il metodo di installazione preferito. Esaminiamo i passaggi per configurare gli aggiornamenti automatici con yum.
Innanzitutto, installiamo un pacchetto chiamato yum-cron .
[root@centos rdc]# yum -y install yum-cron
Install 1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
| 61 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
Verifying : yum-cron-3.4.3-150.el7.centos.noarch
1/1
Installed:
yum-cron.noarch 0:3.4.3-150.el7.centos
Complete!
[root@centos rdc]#
Per impostazione predefinita, yum-cron scaricherà solo gli aggiornamenti e non li installerà. Se installare gli aggiornamenti automaticamente è nell'amministratore. L'avvertenza più grande è che alcuni aggiornamenti richiedono il riavvio del sistema. Inoltre, alcuni aggiornamenti potrebbero richiedere una modifica della configurazione prima che i servizi siano nuovamente operativi.
L'aggiornamento delle dipendenze può creare un problema ricorsivo nella seguente situazione:
Un aggiornamento è consigliato da yum per una certa libreria
La libreria supporta solo Apache Server 2.4, ma abbiamo il server 2.3
Il nostro sito commerciale si basa su una determinata versione di PHP
La nuova versione di Apache installata per la libreria richiede l'aggiornamento di PHP
Le nostre applicazioni web di produzione non sono ancora state testate con la nuova versione PHP
Yum può andare avanti e aggiornare automaticamente Apache e PHP senza preavviso a meno che non sia configurato per non farlo.
Se tutti e 5 gli scenari si verificano, può causare qualsiasi cosa, da un grande mal di testa al mattino a un possibile compromesso della sicurezza che espone i dati dell'utente. Anche se l'esempio sopra menzionato è una sorta di tempesta perfetta, non vogliamo mai che uno scenario del genere si realizzi.
Spetta all'amministratore accedere a possibili scenari di potenziale perdita di entrate dal tempo necessario per ripristinare i servizi a causa di possibili tempi di inattività dovuti ai riavvii degli aggiornamenti e alle riconfigurazioni. Questa pratica potrebbe non essere abbastanza conservativa per, ad esempio, un sito di e-commerce multimilionario al giorno con milioni di clienti.
Ora configuriamo yum-cron per installare automaticamente gli aggiornamenti di sistema.
[root@centos rdc]# vim /etc/yum/yum-cron.conf
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes
Vogliamo cambiare apply_updates = no in apply_updates = yes . Ora configuriamo l'intervallo di aggiornamento per yum-cron .
Anche in questo caso, se utilizzare gli aggiornamenti automatici e installare gli aggiornamenti su richiesta può essere un'arma a doppio taglio e deve essere considerato da un amministratore per ogni situazione unica.