Linux Server Hacks (vol. II)
"Among people who write code […] the term hack refers to a “quick-and-dirty” solution to a problem or a clever way to get something done."
Ciò che mi ritrovo tra le mani è il felice seguito del
primo volume di
Linux Server Hacks, la piccola grande guida che ha accompagnato molti amministratori di sistema (o appassionati, o anche programmatori) durante il quotidiano lavoro nelle sale macchine di tutto il mondo. Avere a disposizione questa raccolta di trucchi, espedienti e consigli si è rivelato più che interessante utile, anche se il primo termine non ne esce affatto sminuito.
E’ in effetti soprattutto la praticità che,
hack dopo
hack, emerge dalle pagine di
questo libro, una praticità che spazia in moltissimi campi, dall’autenticazione alla sicurezza, dalle performance ai sistemi di recovery, dall’installazione di server DNS e DHCP all’analisi dei log. Nulla viene lasciato fuori, perché nel mestiere del
sysadmin nulla può essere giudicato “non degno di approfondimento”.
Scritto senza troppi fronzoli, ma con una spiccata vena umoristica, i due autori cooperano per fornire a tutti una visione unificata degli ambienti di lavoro basati su server Linux, anche se ciò non significa che determinati
hack non siano applicabili anche a sistemi BSD o AIX; il libro, come al solito si può leggere da inizio a fine - e vi posso assicurare che è davvero difficile trovare qualcosa che non interessi - o sfogliare in fretta nel momento del bisogno durante il lavoro.
La strutturazione è quella tipica dei manuali
”Hacks” di O’Reilly, ovvero al
divisione in capitoli tematici e l’
assenza di prolissità in favore di una estrema attenzione alla praticità e all’aggiornamento dei consigli, spesso corredati da
piccole note con istruzioni per l’uso di altre distribuzioni (favorita è Red Hat in tutto il libro) o varianti di ciò che è stato appena spiegato. L’inglese con cui è scritto non risulta estremamente difficile a chi abbia già un po’ di nozioni e di padronanza dei termini di base dell’informatica, anche se taluni giochi di parole possono apparire ostici a prima lettura.
Il
capitolo uno presenta molti trucchi e tecniche applicabili a quel campo della sicurezza che è l’
autenticazione. Si sa che Linux, grazie anche ai
PAM (Pluggable Authentication Modules), trattati in ben cinque dei nove
hack che formano il capitolo, dedica una particolare attenzione e flessibilità al problema, cosicché ogni
sysadmin possa scegliere la migliore soluzione da implementare nelle differenti occasioni. Potrebbe essere, ad esempio, necessario creare delle policy più restrittive per la scelta delle password per gli account degli utenti, in modo tale che possano garantire una maggiore resistenza ad attacchi
brute force o negare temporaneamente l’accesso ad ogni utente per motivi di “manutenzione straordinaria”.
Non vengono trascurati nemmeno problemi relativi a sistemi eterogenei, come la messa a punto di un
Domain Controller Microsoft -
“to a busy sysadmin, centralization is usually more important than philosophy” - con tanto di breve panoramica su
Samba. E non vengono lasciati fuori nemmeno gli altri mostri sacri dell’autenticazione come
LDAP,
Kerberos e
NIS, e in generale posso ben affermare che il capitolo copre il 90% dei problemi standard che un amministratore di sistema incontrerà durante la messa a punto di un sistema di autenticazione.
Il
secondo capitolo è incentrato sull’
uso di interfacce grafiche per la connessione remota, vuoi perché ormai molti sistemi dispongono di strumenti grafici molto utili che sarebbe sciocco non poter gestire da remoto, vuoi perché spesso ci si deve interfacciare con sistemi Windows, magari per non dover dotare ogni persona, che deve usare solo una funzionalità di questi sistemi, di una macchina (e di una licenza) dedicata. Dall’introduzione all’uso di
VNC con numerosi approfondimenti su questioni di sicurezza e compressione, al
forwarding via
SSH di una connessione remota, ogni possibile sfumatura viene sezionata e studiata, fino ad arrivare alla creazione di un
Thin Client grazie a
LTSP (Linux Terminal Server Project) e all’uso di
FreeNX come applicazione predefinita per la connessione remota.
Il
terzo capitolo è dedicato ad un argomento sterminato, ovvero la
messa a punto di server di varie nature e l’interazione con le relative tipologie client. Come il resto del libro, il capitolo è per coloro che non sono ancora amministratori di sistema eccessivamente smaliziati nei confronti di determinati argomenti, quindi
ogni cosa viene spiegata in dettaglio, senza tuttavia scadere nel banale (è richiesta comunque una certa conoscenza di Linux e del networking per affrontare alcuni argomenti). La messa a punto di un server
DHCP e la sua integrazione con
Bind per fornire un
Dynamic DNS Server possono sembrare semplici e banali, ma quanti hanno pensato a un server per rendere disponibili a tutta la rete gli stessi font per X? Viene infine dato molto spazio a
CUPS come server di stampa centralizzato, con ottimi approfondimenti sulla sua integrazione con client Windows e Mac OS X.
Il
capitolo quattro è una corposa raccolta di
hack raggruppabili sotto un invitante
”Cool Sysadmin Tool and Tips”, un piccolo arsenale per chi lavora in sala macchine e deve sempre essere attento a precisione, sicurezza, affidabilità e, perché no, velocità. Mettere su una piattaforma wiki sicura con
MediaWiki,
usare le funzioni di completamento automatico in maniera più efficiente o configurare l’autoinstallazione di un server con
PXE sono solo alcuni dei golosi argomenti trattati, anche se a mio parere ho trovato estremamente utile ed interessante lo script in PHP, lanciabile da shell per effettuare query su
LDAP. Infine altri tre
hack sono dedicati ad argomenti ugualmente importanti per un amministratore di sistema, anche se non considerabili di carattere tecnico, ovvero suggerimenti per
controllare le priorità dei lavori e progetti, valutare quando introdurre Linux in un’azienda e quando evitare di farlo e soprattutto un simpatico vademecum dedicato agli errori che un giovane
sysadmin è portato a commettere (
Don’t Take the Root Name in Vain…).
Nel
capitolo cinque vengono discusse le differenti tipologie e tecnologie che Linux mette a disposizione per
effettuare i backup, dato che è impensabile ormai tenere un qualsiasi sistema con dati anche di bassa o media importanza, senza un adeguato sistema di salvataggio e ripristino. Si parla anche di storage in generale, come la creazione di un volume unico a partire da più dischi con
LVM, e la combinazione di questo con il
RAID per assicurare la massima affidabilità ad un sistema di storage. Fatto questo si può sempre clonare un sistema per sviluppare e mettere in produzione una serie di macchine simili; per finire, il settaggio dei permessi sui file, la definizione di
ACL e la sana abitudine di utilizzare le quote disco per prevenire spiacevoli inconvenienti sono argomenti trattati approfonditamente, e allo stesso tempo in quella maniera molto pratica, che rende la lettura e la consultazione piacevoli.
Il
sesto capitolo si occupa di ciò che una piccola rete (o anche un singolo sistema) può offrire in fatto di
condivisione e sincronizzazione delle risorse. La centralizzazione di queste ultime è alla base di molti consigli per i quali, sono contento di dirlo, ho trovato tempo di provarli approfonditamente, come
"Quick and Dirty NAS" o
"Syncronyze root Environment with rsync". Molti sono basati su export
NFS, si chiede quindi al lettore una conoscenza minima dell’argomento, mentre altri sono basati su
Samba, che invece viene spiegato molto più nel dettaglio. I soliti rimandi ad altri
hack e risorse esterne fanno sì che quasi ogni dubbio possa essere fugato in uno sfogliare di poche pagine e rapidi clic del mouse.
Non poteva mancare
un capitolo dedicato alla sicurezza, e i cinque
hack del
capitolo sette forse si rivelano un po’ banali sull’argomento, ma non bisogna dimenticare che quando si parla di sicurezza, spesso i volumi dedicati sono decisamente più grandi. Il capitolo invece vuole essere una serie di suggerimenti rapidi da leggere e veloci da mettere in pratica per dare, ad esempio, una “sfoltita” ai servizi non necessari o la negazione di precisi servizi a determinati host in tempi velocissimi con i file
hosts.allow e
hosts.deny. Viene trattato anche l’
uso di strumenti complessi e avanzati come
Tripwire e
Snort, fino ad arrivare all’hack #68 (
Check for Rootkits and Other Attacks) che insegna ad usare proficuamente
chkrootkit, per monitorare e inviare report sull’integrità di un sistema server.
Il
capitolo otto (
troubleshooting and performance) di due argomenti ne fa in effetti uno solo, dato che spesso la ricerca di migliori soluzioni per aumentare velocità o banda del proprio server si trasforma in una vera e propria “caccia ai problemi”.
Si impara allora ad usare i comandi standard di Linux in maniera più produttiva, evitando anche in questo modo di affidarsi a complesse e costose soluzioni di terze parti, a usare file system con
Journaling e a configurare
Xorg per operare con display multipli. L’installazione di un
Window Manager minimale (nel caso
fluxbox, ma ne vengono descritti altri) mi ha abbastanza interessato, tanto che ho deciso di provare ad installarlo su una
JeOS; tutto a meraviglia, comprese le piccole personalizzazioni e i
goodies descritti nel capitolo. Molti
hack vengono poi dedicati alla
personalizzazione - più o meno pesante - delle opzioni del kernel e dei processi in esecuzione, argomenti davanti ai quali anche il più esperto amministratore di sistema non può non imparare qualcosa. Questo è uno dei migliori capitoli che abbia letto, vuoi per la quantità di informazioni, vuoi per la cura che viene messa nella spiegazione di ogni piccolo dettaglio, senza tuttavia perdere quel tono un po’ umoristico, che prosegue per tutto il volume.
Il
capitolo nove tratta di
monitoraggio e analisi dei file di log, con alcuni
hack semplici (installazione e uso di
smartmontools e
MRTG) e alcuni complessi come l’installazione, la configurazione e il
tuning di demoni
SNMP su diversi host all’interno della rete per la raccolta e l’analisi automatizzata dei problemi di rete. Particolarmente utili gli
hack relativi all’uso del
syslog come “punto di raccolta” anche per applicazioni che non ne prevedono il ricorso, l’analisi dei vari file di log con strumenti automatizzati (principalmente
log-guardian e
logcheck) e l’invio di allarmi attraverso un network
Jabber aziendale. Oltre a questi ed altri argomenti, mi è sembrata un’ottima idea quella di dare una breve introduzione ad uno degli strumenti più utilizzati per il controllo su larga scala di un’ampissima varietà di host, ovvero
Nagios.
Il
decimo e ultimo capitolo si occupa di tutto ciò che può aiutare un amministratore di sistema nel caso qualcosa smettesse di funzionare. Sicuramente molti suggerimenti precedentemente forniti danno ottimi strumenti di prevenzione, ma accade prima o poi che un imprevisto ci impedisca, ad esempio, di avviare il sistema poiché è danneggiata la tabella delle partizioni, o che non si sappia come recuperare un file importante accidentalmente cancellato. In questi casi è bene avere sotto mano questo capitolo in modo da conoscere una risposta a ciò che è successo, nonché a volte più di una soluzione per il recupero. Dalla creazione di un disco di boot d’emergenza all’uso di strumenti avanzati per la gestione di file system
ReiserFS, fino ad arrivare ai metodi usuali (e non) per cancellare file o interi hard disk, in modo da proteggere dati sensibili anche dopo la loro eliminazione. Per finire, l'ultimo
hack presenta
Sleuth Kit e Autopsy, due software per l’analisi forense dei dati all’interno di un PC, usabili per collezionare informazioni riservate, decifrare dati crittografati o più semplicemente, recuperare a quel
rm –rf * dato con un po’ troppa leggerezza.