Distribuzioni Linux, un confronto

Durante gli anni il nostro staff si è trovato a lavorare a cuore aperto su un vasto ecosistema di sistemi operativi e derivati. Il nostro lavoro si concentra sui server. Il post che segue è lungi dal voler scatenare “guerre di religione” tra i sostenitori di una distribuzione Linux piuttosto che di un’altra. Di flame in rete se ne trovano già tanti. Si tratta piuttosto di qualche riga scaturita da quelle che sono state le nostre esperienze, le nostre sensazioni a contatto con 3 delle distribuzioni Linux attualmente più diffuse e più utilizzate su sistemi server : Debian, CentOS e Ubuntu.

Lasceremo volutamente fuori Red Hat (CentOS ne è una derivazione), Gentoo, openSUSE ed un elenco sterminato di ottimi prodotti che girano fluidamente sui server di tutto il pianeta. Ci concentreremo invece su queste 3 distribuzioni che incarnano attualmente la scelta quasi obbligata per chi allestisce un server fuori dalle logiche commerciali di prodotti come Red Hat o SUSE, analizzandone pregi, difetti e personalità. (Molti obietteranno come Ubuntu rientri eccome all’interno di logiche commerciali. Tuttavia qui con il termine “commerciale” abbiamo voluto indicare quelle distribuzioni che hanno un costo di licenza a carico dell’utilizzatore finale.)

Ubuntu

ubuntu Distribuzioni Linux, un confronto

Si comincia con Ubuntu. Molti amministratori di sistema storceranno il naso. La scelta di Ubuntu per sistemi server mission critical è spesso criticata ampiamente. Se avete voglia di fare un giro sulle mailing list delle vulnerabilità 0day vi accorgerete come molte versioni di Ubuntu figurano come pesantemente vulnerabili ad alcuni degli exploit più pericolosi. I bug fix si susseguono di giorno in giorno. Ma questa non è assolutamente una prerogativa di Ubuntu. Tutte le distribuzioni Linux nessuna esclusa sono vulnerabili. La nota di merito è che i bug vengono chiusi tempestivamente con rilasci molto veloci delle patch più urgenti.

Uno dei punti che gioca a sfavore di Ubuntu è la sua reputazione di distribuzione Linux votata all’utilizzo desktop e molto diffusa al grande pubblico. Se questo può essere un vantaggio da una parte, dall’altra scoraggia i professionisti più puristi ad utilizzarla sui server destinati a missioni importanti. Più di un provider ci ha confermato che Ubuntu è inadatta all’utilizzo per ambienti virtualizzati per via di alcuni bug che ne minerebbero la stabilità come nodo per ospitare sistemi VPS multipli.

Debian

debian1 Distribuzioni Linux, un confronto

Debian è una delle distribuzioni più stimate. Tra i vantaggi riconosciuti vi è la freschezza dei pacchetti software (alla pari di Ubuntu), la stabilità e la facilità di deploying. Debian è la distribuzione stabile per eccellenza. Il gruppo di sviluppo è professionalmente accreditato e ciò garantisce una grande qualità degli aggiornamenti del sistema. Vi sono però alcuni difetti sostanziali tra i quali la presenza degli stessi bug che affliggono Ubuntu e che non consentono a Debian di essere utilizzata con successo in ambienti virtualizzati.

Debian è molto stimata tra i professionisti che la ritengono adatta per alcuni degli utilizzi più importanti. Abbiamo visto server equipaggiati con Debian sfoggiare uptime degni di un mainframe. Notevole inoltre la possibilità di far attecchire Debian sui sistemi e sui dispositivi più svariati grazie alle grandi possibilità di adattamento sulle architetture più esotiche come sparc, mips e powerpc. A differenza di Ubuntu, Debian è guardata con sospetto dal grande pubblico degli utenti desktop ma a ciò fa da contraltare uno stimato utilizzo sugli ambienti server.

CentOS

centos Distribuzioni Linux, un confronto

CentOS deriva dal codice sorgente di Red Hat Enterprise Linux. Una garanzia per alcuni, un disastro per altri. Tuttavia i vantaggi superano di gran lunga le pecche. CentOS viene utilizzato su alcune delle architetture server più famose come Dell. La diretta derivazione da Red Hat fa si che CentOS disponga di un ottimo supporto hardware che si tramuta in una grande disponibilità di driver per i sistemi server di fascia alta. Essendone solo una derivazione, CentOS è penalizzato dalla mancanza di un supporto commerciale alla stregua di Red Hat.

La stabilità è uno dei grandi vantaggi di cui gode CentOS. Scelto come partner ideale sui sistemi server a contatto con applicazioni mission critical, l’unica nota di demerito che possiamo muovergli è la scarsa disponibilità di pacchetti “freschi”, aggiornati alle versioni più recenti e la mancanza di alcune librerie di sviluppo necessarie per l’installazione dei software più disparati. Tuttavia stabilità vuol dire anche poter disporre di pacchetti verificati e privi di bug piuttosto che rincorrere l’ultima versione di un software che potrebbe nascondere uno o più bug potenzialmente letali.

End

A pubblicare post come quello che (si presume) abbiate letto si corre sempre il rischio di innescare antipatie e flame. Però è un rischio che accettiamo volentieri di correre perchè amiamo il nostro lavoro ed amiamo scriverne. Non è un caso se Ubuntu, Debian e CentOS siano tra le distribuzioni più utilizzate a livello server. Ci scusino i sostenitori dei vari Fedora, OpenSUSE o Gentoo, avremo modo di parlarne in uno dei prossimi post. Per tutti gli altri che fossero interessati a partecipare al confronto con opinioni, esperienze e quant’altro sarete i benvenuti nello spazio sottostante dedicato ai commenti.

Alla prossima.

Post simili:

Backup a basso impatto con ionice

Il momento più difficile per un sistemista? Scegliere l’ora giusta per il backup.

Che dipenda o meno dalle abitudini, scegliere il momento giusto per eseguire un backup su uno o più server non è quasi mai semplice. Il motivo è presto detto. Il backup sovraccarica il sistema ed è un grande divoratore di risorse, soprattutto di cpu.

Le operazioni più stressanti per il server sono :

  • il dump dei database
  • la copia dei file
  • la compressione di database e file

Il backup segue spesso una procedura standard che comprende il salvataggio dei database e dei file presenti sul server con una successiva compressione di tutti i dati per facilitarne l’eventuale trasporto o archiviazione attraverso la rete.

In particolare copia e compressione influiscono pesantemente sulla cpu del server e diventano dunque operazioni che devono essere programmate in determinati momenti della giornata, solitamente in orari notturni quando il traffico attorno al server è scarso. D’accordo ma se ci venisse richiesto un backup nelle ore di punta, da consegnare con una certa urgenza?

Controllare lo scheduling sullo storage

Se la necessità di eseguire un backup durante uno di quei momenti in cui il server potrebbe trovarsi sotto carico è davvero urgente, possiamo affidarci a ionice.

Ionice permette di controllare come e quando un processo avrà diritto ad eseguire operazioni di scrittura e lettura su disco. Ionice consente di avviare un processo scegliendo fra tre modalità :

  1. real time
  2. best effort
  3. idle

Un processo avviato con un ionice in modalità idle, ovvero in classe 3, avrà accesso allo storage solo se nessun altro processo tenterà accessi IO al disco. Una funzionalità davvero comoda per evitare imbottigliamenti.

Per avviare il dump di un database utilizzando la funzionalità fornita da ionice digiteremo :

# ionice -c3 mysqldump --opt mydb > mydb.sql

Allo stesso modo potremo controllare la compressione dei file :

# ionice -c3 tar cxf directory.tgz directory

Controllare lo scheduling dei processi permette di evitare che un’applicazione diventi causa di disturbo per gli altri processi attivi sul sistema, funzione utile soprattutto su quegli ambienti server condivisi dove risulta molto importante calibrare e limitare l’utilizzo delle risorse da parte dei vari utenti.

Alla prossima.

Post simili:

Sicurezza su Linux: best practices

Vuoi mettere il tuo sistema Linux in cassaforte? Segui questi brevi consigli per accrescere la sicurezza del tuo server.

Sorgenti

Installare un programma da sorgente comporta dei rischi. Necessariamente il codice dovrà essere installato con privilegi di utente root. Ma non eseguire mai la compilazione come superuser. Piuttosto utilizza un utente con bassi privilegi per digitare i classici ./configure && make. Solo dopo aver compilato come utente comune puoi ritornare ad essere root per installare il risultato della compilazione.

Nomi utente

Molti pannelli di controllo durante la generazione di un nuovo virtual host utilizzano il nome a dominio del sito web che si andrà ad ospitare. Un errore da evitare. Un sito web con nome a dominio miodominio.it e relativo utente ftp miodominio regala un vantaggio enorme all’aggressore. Gli spider utilizzati per gli attacchi possono basarsi sui nomi dei siti web ospitati per tentare gli attacchi brute force  contro gli account ftp del server. Per la creazione di nuovi utenti sul sistema oltre che per i nuovi account ftp utilizza id difficilmente prevedibili come ad esempio admin5486749 o user473957.

Privilegi

Quando aggiungi un nuovo utente di sistema necessario per essere utilizzato da un demone abbi cura di dare quanti meno privilegi possibili a questo nuovo utente. Ad esempio quando aggiungi un nuovo utente su Debian utilizza queste opzioni :

adduser --disabled-login --shell /bin/false --no-create-home username

L’utente aggiunto ad esempio per far girare un nuovo servizio, Nginx, Apache o altro, creato con queste opzioni non avrà una home, non potrà essere utilizzato per il login e inoltre avrà una shell inutilizzabile.

Questione di orologio

Periodicamente esegui il login sul server e digita il comando date. Assicurati che l’ora indicata corrisponda a quella del tuo fuso orario. In caso contrario installa il demone ntp e apri sul tuo firewall la porta 123 UDP in uscita per assicurare la comunicazione con il server ntp remoto. Se sei su CentOS e vuoi sincronizzare il tuo server con il fuso orario italiano digita il comando :

cp /usr/share/zoneinfo/Europe/Rome /etc/localtime

e riavvia il demone ntp. La sincronizzazione dell’orologio di sistema darà coerenza ed attendibilità ai log generati dal server.

Post simili: