Non essendoci dati di vendita centralizzati è difficile valutare la diffusione di Linux.
Informazioni e indicazioni utili ma incomplete vengono date da Linux Counter, dove viene fatto un censimento (su base volontaria) sul numero di utenti Linux: nel Marzo 2006 risultano 138056 utenti registrati e 153627 macchine registrate.
Questa stima è ovviamente per difetto (la registrazione viene fatta sul sito stesso e molti che usano Linux nemmeno sanno della sua esistenza).
Il gestore di questo sito (ovviamente un Linux enthusiast) stima intorno a 29 milioni il numero effettivo di utenti Linux, sulla base di statistiche, proiezioni e analisi varie.
Altro indicatore interessante è Netcraft, che, pur senza fare riferimento a singoli OS, da indicazioni utili sui server Web utilizzati in rete. Qui domina Apache (che può girare sia su Unix vari che su Windows) con 51.810.676 siti web pari al 69,01% dei server web totali analizzati.
Ricerche varie fatte in passato sulla diffusione di Linux nel mondo danno risultati diversi:
- IDC ha stimato 1.300.000 server Linux consegnati nel 1999 e ha previsto uno share del 4% su totale dei computer sul desktop nel 2004.
- Dataquest ben più prudenzialmente stima in 543.778 il numero di server Linux consegnati nel 2001.
A titolo di curiosità Google, nel Maggio 2004 conta circa 115.000.000 pagine contenenti la parola Linux (erano nel 50.500.000 Gennaio 2002 e 64.300.000 nel Settembre 2003). Per confronto la parola Windows appare in 121.000.000 pagine (erano 65.900.000 a Settembre 2003).
Sempre nel Maggio 2004 esistevano 629 Linux User Groups (LUG).
Comunque si vogliano considerare questi numeri il dato certo è:
- La crescita nella diffusione di Linux è innegabile;
- Il suo utilizzo in ambiti aziendale, corporate e accademico sempre maggiore;
- La conoscenza delle sue potenzialità è sempre più precisa e consapevole.
L'utilizzo di soluzioni LAMP è sicuramente largo in termini numerici (numero di installazioni) e di varietà di applicazioni (contesti di utilizzo, livello di criticità e volumi di traffico), ma per avere un'idea ragionevolmente precisa della loro diffusione è opportuno apporggiarsi alle statistiche disponibili Online.
APACHE
La diffusione di Apache è enorme e comprovata dai dati mensili di Netcraft, la più autorevole fonte online sulle statistiche di utilizzo di server web in rete.
A Febbraio 2006 Apache è stato trovato su 51.810.676 siti web con il 68,01% di share (si considerano siti web, e non singoli host, che usano Apache su diversi sistemi operativi, tra cui Linux, FreeBsd, Windows, Solaris).
Anche Security Space fornisce interessanti statistiche sulla diffusione dei server Web. A Febbraio Apache è stato riscontrato su 12.523.422 siti con uno share del 71,66%
PHP
L'ascesa di PHP come linguaggio per il Web è inesorabile e costante, in http://www.php.net/usage.php è possibile vederne i dettagli, sempre basati su fonte Netcraft.
Interessante è inoltre il TIOBE Programming Community Index che valuta la diffusione di utilizzo di un linguaggio sulla base della diffusione di corsi e sviluppatori, calcoalata in base a query sui motori di ricerca. A Marzo 2006 PHP si piazza al quarto posto (dopo C, Java, C++) con un 9,948 % di diffusione e risulta di fatto il linguaggio Web oriented più diffuso (due anni prima era al sesto posto con il 7.421%).
Altra interessante e indicativa fonte per conoscere la diffusione di PHP è l'Apache Module Report di Security Space. A Febbraio 2006 PHP è presente nel 43,23% delle installazioni Apache monitorate, per un numero totale di 5.413.310.
MYSQL
Non esistono statistiche rilevanti sulla diffusione di MySQL per cui si possono fare solo constatazoni indirette sul suo utilizzo: è presente nella maggior parte delle distribuzioni Linux ed è ragionevole aspettarsi che sia il database backed più utilizzato in siti dinamici basati su PHP.
Ha inoltre conquistato una ottima reputazione in termini di velocità e una buona fama in termini di affidabilità. I case study e l'elenco dei principali clienti riportati sul sito di MySQL danno una idea sul suo utilizzo anche in ambienti enterprise.
Le ultime versioni, inoltre, sono fortemente orientate a colmare le principali lacune di MySQL (integrità referenziale, supporto di view, trigger e stored procedures, clustering) e buoni passi avanti sono stati fatti in questi campi.
Spiegare cosa fa un sistemista non è sempre ovvio.
Definire quali sono i suoi compiti è quantomeno pretenzioso.
Inquadrare gli skill di cui ha bisogno è limitativo, visto che di fatto, in molte realtà, un sistemista deve poter gestire e configurare hardware e software eterogenei che richiedono conoscenze ed esperienza disparate.
Le attività sistemistiche su un server con qualsiasi sistema operativo variano a seconda delle funzioni della macchina e del contesto lavorativo.
Generalmente il sistemista si dovrebbe preoccupare di:
1- Partecipare a riunioni e fornire la propria opinione sulla definizione dell'infrastruttura informatica e la scelta e il dimensionamento dell'hardware da utilizzare;
2- Installare le macchine;
3- Eseguire le procedure di post-installazione standard (aggiornamento software, rimozione servizi inutili, hardening del sistema, installazione di script e procedure custom);
4- Installare, configurare e testare i servizi richiesti per la macchina;
5- Monitorare performance, sicurezza e funzionalità del sistema;
6- Assistere e assecondare le richieste dirette o indirette degli utenti del sistema (sviluppatori e utenti dei servizi);
7- Eseguire backup e ripristino dei dati;
8- Automatizzare varie procedure nel sistema;
8- Documentare approfonditamente il lavoro svolto.
Troppo spesso il sistemista:
1- Non viene interpellato per una consulenza sulle tecniche più adeguate per le esigenze richieste;
2- Racka, cabla, se necessario smonta e rimonta, e installa le macchine;
3- Non ha una procedura standard di post installazione a cui attenersi;
4- Installa e configura i servizi necessari per la macchina, non sempre li testa a dovere;
5- Non controlla quasi mai i log di sistema, non implementa procedure di controllo;
6- Asseconda gli utenti ma li odia;
7- A volte prevede il backup dei dati, raramente esegue test di recupero;
8- Ripete spesso i soliti comandi;
9- La migliore documentazione la mantiene in testa, il resto in qualche file sul proprio computer.
Generalmente il tutto si spiega e si tende a giustificare con la cronica mancanza di tempo, spesso basterebbe un po' di lucidità progettuale e lungimiranza per riuscire ad ottenere tutti i risultati e alla lunga risparmiare tempo.
- La documentazione è fondamentale: permette di mantenere memoria storica del funzionamento dei sistemi e mette in grado il sistemista di delegare a colleghi meno esperti o appena arrivati di svolgere correttamente il lavoro che dovrebbe svolgere da solo.
- La partecipazione alle decisioni tecniche va richiesta con la giusta insistenza. E se ci ritrova a dover eseguire lavori, imposti dall'altro e tecnicamente discutibili, è doveroso quantomeno esprimere il proprio dissenso e suggerire le alternative più adeguate.
- Nonostante il knowledge generalmente vasto e variegato che spesso un sistemista deve avere, il suo compito di fatto è oscuro ai molti e a volte considerato di importanza trascurabile. Di solito ci si accorge del contrario quando un sistema in produzione va down e qualcuno deve farlo tornare a a funzionare.
- L'utente che usa i servizi della macchina o lo sviluppatore che riempe i contenuti di un sito web, per quanto generalmente poco sensibili alle esigenze e condizioni del sistemista, NON può e NON deve essere considerato un nemico. Di fatto è il motivo per cui il sistemista lavora e, in ogni caso, non ce se ne può disfare. L'unico modo per conviverci al meglio è educarlo all'uso del sistema e capire cosa gli serve per ridurre problemi e tempi di implementazione.
- Per quanto possibile è sempre consigliabile mantenere hardware e software omogenei: hardware dello stesso fornitore e non eterogeneo riduce complicazioni e velcoizza la sostituzione di pezzi di ricambio. Sistemi allineati (stesso OS, stessa distribuzione, stessa versione) rendono più facile, comoda e rapida l'attività sistemistica: gli aggiornamenti di software e kernel possono essere più rapidi e viene ottimizzato il tempo per seguire le problematiche di sicurezza di un sistema operativo.
L'installazione di Linux è ormai una operazione piuttosto semplice, visto il progresso evidente che molte distribuzioni hanno avuto negli ultimi anni in termini di facilità d'uso.
Nonostante questo esistono alcune informazioni fondamentali che vanno conosciute, in particolare per i casi in cui si intende installare Linux su un computer dove è già installato, e si vuole mantenere, Windows.
Sapere com'è il proprio sistema, come e dove si vuole installare Linux, nel caso sia presente già un altro sistema operativo, è fondamentale, per cui è bene assicurarsi, prima di procedere, di conoscere le informazioni di base riguardo a:
- Hardware a disposizione. Solitamente durante l'installazione il proprio hardware viene rilevato automaticamente, ma possono esserci rari casi in cui questo non accade. In genere se si usa un PC standard con una nuova distribuzione non ci sono problemi nel riconoscimento di componenti e periferiche.
- Sapere quali e quanti Hard Disk sono presenti sul sistema, come sono partizionati, quali sono cancellabili. Queste informazioni sono visualizzabili durante l'installazione, ma si deve essere certi di sapere dove sono i dati (per esempio, una installazione di Windows esistente) che non si vogliono cancellare.
- Configurazione di rete, se prevista (indirizzo IP, subnetmask, nome macchina, server DNS).
- Il tipo di attività che si intende fare con Linux (si userà come workstation o come server? si installa su un portatile? Si ha idea di quale software si vorrà usare?).
Gli scenari possibili sono vari, dipendono dalle singole situazioni e possono riassumersi in questi casi generali:
- Installazione su un computer esclusivamente dedicato a Linux (con o senza dati presenti sull'hard disk, che comunque si intende cancellare). Questo è il caso più semplice e se si ha a che fare con hardware non particolarmente esotico (normale PC, di marca, o assemblato, con processore Pentium o superiore) non dovrebbe creare alcun problema con una distribuzione recente.
- Installazione su un PC dove è già presente Windows e si ha a disposizione un hard disk libero o una partizione completamente libera all'interno dell'hard disk con Windows. Anche in questo caso l'installazione può procedere senza particolari problemi: durante le sue fasi verranno evidenziate le partizioni presenti sull'hard disk e sarà possibile decidere di utilizzare per Linux quelle libere, senza toccare quelle in cui si trova Windows.
- Installazione su un PC dove è presente Windows e non è disponbile un hard disk aggiuntivo, spazio non partizionato o una partizione sacrificabile. Questo purtroppo, oltre ad essere il caso più ostico, per un normale computer domestico, è anche il più comune. In queste situazioni si possono seguire diverse strade:
-- Provare Linux con un Live CD (come Knoppix) che permette di usare Linux senza installarlo sull'harddisk, eseguendo il boot direttamente dal CDROM. Non è una soluzione definitiva (un sismile approccio ha degli inevitabili limiti e minori performance) ma può essere un ottimo modo per iniziare a familiarizzare con Linux senza alcun bisogno di installarlo e in completa sicurezza.
-- Procurarsi un hard disk aggiuntivo (di 1 GB o più) e aggiungerlo al proprio PC (indicativamente come Secondary Master, lasciando Windows sul Primary Master) per poterlo usare liberamente con Linux.
-- Creare dello spazio sull'hard disk esistente: se si hanno partizioni quasi vuote, spostare i dati presenti, in altre partizioni Windows e "sacrificare" la partizione semi-vuota per l'installazione Linux; alternativamente considerare la possibilità di usare strumenti come Fips o Partition Magic per Windows o Parted per Linux (lanciato da un Live CD) per ridurre la dimensione delle partizioni esistenti e creare spazio per Linux.
Fare massima attenzione a simili procedure: se fatte in modo scorretto o interrotte (per esempio da un blackout) possono definitivamente compromettere i dati presenti sul proprio hard disk. Un backup preventivo dei propri file, seppur di solito non necessario, è generalmente consigliato.
-- Installazione su PC con hardware particolare o architetture non basate su processori tipo Intel o AMD (i386).
In questi casi la procedura di installazione può essere più complicata (per la richiesta di driver aggiuntivi per gestire l'accesso al disco) o non riconoscere alcuni dispositivi e schede (per esempio i modem interni).
Se si vuole installare Linux su Mac o sistemi con architettura non Intel-like, sono necessarie distribuzioni particolari e procedure a volte più complesse.
Scegliere la distribuzione giusta fra le centinaia disponibili è impresa ardua, come lo è ottenere una risposta precisa da un "esperto di Linux".
Inevitabilmente, da bravo informatico, risponderebbe "dipende".
In genere, la migliore distribuzione da usare è quella che meglio si conosce e se si devono gestire diverse macchine è opportuno averle tutte con la stessa distribuzione e possibilmente versione, per facilità e rapidità di aggiornamente e manutenzione.
Qualunque sia la distro adottata è spesso consigliabile installarne l'ultima versione disponibile (contiene pacchetti e kernel più recenti) lasciando possibilmente passare almeno un mese dalla sua release per permettere il fixing dei bug e dei buchi di sicurezza più evidenti.
Fondamentale è comunque seguirne sul relativo sito le segnalazioni di aggiornamenti ("errata" o "patch"), possibilmente attivando sistemi di autoaggiornamento dei pacchetti.
Considerare che dopo l'installazione di una qualsiasi distribuzione, se si sta lavorando su un server che deve andare in produzione, sono auspicabili, consigliati e necessari una serie di interventi di post installazione:
- Aggiornamento di tutti i pacchetti per i quali esistono degli errata (nuove versioni che aggiornano bug o buchi di quelle rilasciata con il CDROM originale);
- Rimozione di tutti i servizi Internet non utilizzati;
- Eventuale aggiornamento del kernel;
- Configurazione dei servizi di produzione che si intende utilizzare;
- Implemementazione di script o configurazioni custom.
Nella scelta della distribuzione vanno valutati i seguenti aspetti e date risposte alle seguenti domande:
- In che contesto viene utilizzata?
Su un server, su un laptop, un dekstop... A seconda delle funzionalità richieste può essere adeguata una distribuzione piuttosto che un'altra.
Ci sono distribuzioni come Ubuntu, Mepis, Linspire, Xandros che sono particolarmente orientate al desktop e si differenziano per facilità di utilizzo o presenza di programmi per Internet e il multimedia in grado di soddisfare le tipiche esigenze di un poweruser.
Per un firewall esistono distribuzioni dedicate che possono risultare particolarmente comode e semplici da configurare.
Per un server è opportuno cercare distribuzioni con tempi di vita lunghi e in grado di riconoscere e supportare il proprio hardware.
- Che tempo di vita mi aspetto da questa installazione?
Un computer desktop può essere reinstallato in tempi relativamente brevi, quantomeno per rincorrere le nuove versioni di vari programmi comuni, un server può richiedere tempi di vita molto maggiori e questo influenza la scelta.
Un vizio comune a molte distribuzione sono i tempi di release estremamente rapidi, tali da rendere apparentemente obsoleta una versione dopo pochi mesi dal suo rilascio.
Questo vale in modo evidente con Fedora (una release indicativamente ogni 6 mesi, fine del supporto ufficiale di RedHat dopo 2 release) ma anche, in misura minore, per le versioni Personal/Professional di Mandriva, Suse e altre fra le distribuzioni principali.
Questa costante rincorsa è dovuta al tumultuoso e rapido sviluppo di software opensource e al fatto che difficilmente all'interno della stessa versione di una distribuzione viene fatto un "major upgrade" dei programmi forniti (per garantire la piena compatibilità e il funzionamento delle procedure di aggiornamento automatico del software (per bug e vulnerabilità di sicurezza)).
Fra le distribuzioni liberamente accessibili, Debian e in misura minore Slackware si distinguono per tempi di vita decisamente superiori. Debian, in particolare, ha un ramo "stable" particolarmente conservativo che ha tempi di vita molto lunghi a scapito di una certa obsolescenza del software fornito.
Se la necessità è di avere un sistema Linux per poche ore o alcuni giorni (per dimostrazioni, corsi, prove, test, ecc) le Live CD come Knoppix sono particolarmente indicate, in quanto non richiedono nemmeno l'installazione su hard disk.
- Quanto sono disposto a spendere per la licenza del mio Linux?
Le versioni commerciali delle distribuzioni Linux hanno tempi di vita e supporto generalmente maggiori e sono adatte ad ambienti in cui è prioritario avere garanzia di supporto duraturo rispetto ai costi di licenza.
RedHat, Suse/Novell, Mandriva forniscono tutte versioni "enterprise" a pagamento delle proprie distribuzione con tempi di supporto di vari anni e durata di vita del software molto superiori alle versioni liberamente distribuite dagli stessi produttori.
Nella analisi dei costi, ovviamente, vanno anche considerati il training del personale, la consulenza di esterni, i tempi di disservizio eventualmente dovuti a guasti o problemi, ecc.
- La distribuzione che voglio usare supporta l'hardware che ho a disposizione?
Per quanto il supporto hardware su Linux sia piuttosto avanzato esistono casi in cui va opportunamente verificato. In particolare non tutte le distribuzioni sono in grado di riconoscere immediatamente i device di un laptop (winmodem, scheda wireless connettori infrarossi ecc.) e, per sistemi di fascia medio/alta con controller scsi è schede di retei in gigabit è opportuno verificarne il supporto nella hardware compatibility list del produttore della distribuzione.
L'aggiornamento di un sistema operativo è un operazione fondamentale per la sua sicurezza, sia in ambito aziendale che domestico, sia su server che su desktop.
L'unica differenza sostanziale saranno i mezzi, le necessità e le modalità ma l'obbiettivo è comune: proteggere i propri sistemi aggiornandone il software regolarmente per eliminare possibili vie di intrusione tramite vulnerabilità note.
Esistono molteplici vie per eseguire l'update di sistemi Linux:
- utilizzare tool automatici o semi-automatici per il download e l'installazione di pacchetti rpm o deb,
- installare manualmente nuovi pacchetti binari per l'aggiornamento dei programmi installati,
- compilare i sorgenti con le patch del software da aggiornare.
L'uso di strumenti (semi)automatici, generalmente consigliabile quando si deve gestire un parco macchine considerevole, può basarsi su mirror distribuiti nel mondo o su un servizio, generalmente a pagamento, offerto dal produttore della distribuzione che si usa.
Ogni distribuzione Linux ha i propri metodi preferenziali per l'aggiornamento del software.
REDHAT
La versione commerciale di RedHat (Enterprise edition) si aggiorna tramite il RedHat Network (RHN) che permette di gestire e aggiornare facilmente anche via Web una moltitudine di sistemi. up2date
, utilizzabile sia via command line che tramite interfaccia grafica, è il programma utilizzato per aggiornarsi tramite RHN.
Fedora, la distribuzione free di RedHat, aperta alla community, si aggiorna tramite yum
(tool di aggiornamento derivato da Yellow Dog Linux) che si appoggia a svariti mirror worldwide.
Sono disponibili, ma non inclusi dei CD ufficiali, altri strumenti di aggiornamento come autorpm o la versione per rpm di apt.
DEBIAN
I pacchetti .dep di Debian vengono gestiti e aggiornati tramite il potente apt che appoggiandosi ad un elenco di mirror distribuiti permette di scaricare e aggiornare software sia del ramo "stable" che quello "testing". Con il comando apt-get
di fatto si gestisce ogni attività.
MANDRIVA
L'aggiornamento e la gestione dei pacchetti rpm avviene tramite l'interfaccia grafica rpmdrake o il tool testuale urpmi
. Entrambi si appoggiano a dei mirror configurabili e sono presenti di default sul sistema.
NOVELL - SUSE
Tramite il tool grafico di configurazione Yast2, strettamente integrato in ogni distribuzione Suse, è possibile gestire e automatizzare gli aggiornamenti dai mirror selezionati.
SLACKWARE
I pacchetti tgz di Slackware possono essere aggiornati dai mirror ufficiali tramite tool come swaret
e slapt-get
, che vanno scaricate a parte.
GENTOO
E' fortemente radicato nel sistema di gestione dei portage di Gentoo l'aggiornamento (tramite scaricamento dei sorgenti e ricompilazione automatica degli stessi) e l'installazione del software. Il comando emerge
provvede a tutto.
Patching dei Sorgenti
Tramite utility come patch
o diff
, o semplicemente ricompilando i sorgenti presenti nel tar.gz (./configure ; make ; make install
), è possibile applicare o creare patch (file contenenti modifiche da apportare ai file originari) al software installato sul sistema senza l'utilizzo di pacchetti. Questa operazione viene eseguita principalmente quando si lavora direttamente dai sorgenti, ricompilandoli una volta applicata la patch e può applicarsi a qualsiasi distribuzione.
Non essendo legata ad uno specifico sistema di packaging, va fatta manualmente.
Riassumiamo qui una serie di configurazioni e ottimizzazioni post-installazione che possono aumentare il livello di sicurezza del sistema.
Non ci addentriamo nei particolari, ci si limita a dare indicazioni operative, lasciando a chi legge gli approfondimenti del caso.
Alcune indicazioni sono necessarie solo per server fisicamente posizionati in luoghi non sicuri ed in qualche modo accessibili da estranei (PHYSICAL), altre sono particolarmente pignole e dedicate a chi ha particolarmente a cuore la sicurezza del sistema o è particolarmente paranoico (PARANOID), altre ancora in qualche modo possono compromettere le funzionalità di parti del sistema per cui vanno adottate e testate adeguatamente (DISFUNCTION?), alcune sono particolarmente raccomandate (RECCOMENDED).
Queste impostazioni si riferiscono ad una distribuzione RedHat 7.2 standard. Su altre distribuzioni le posizioni dei file possono essere diverse e le indicazioni date vanno adattate.
In ogni caso queste indicazioni NON bastano a rendere un server sicuro, ma vanno affiancate ad altre precauzioni (aggiornamento costante di programmi e kernel - esposizione solo dei servizi strettamente necessari - utilizzo di IPTABLES adeguate - controllo della sicurezza dei servizi pubblici - installazione di un IDS e di un file integrity checker - log check regolare - BACKUP!).
Settare una password sul BIOS - PHYSICAL - RECCOMENDED
Necessario per impedire che si possa modificare il device di boot, impedendo la possibilità di fare password recovery o accesso non protetto ai dati bootando da floppy o CDROM estranei. Considerare che la password del BIOS è resettabile switchando un jumper sulla scheda madre. Il vero paranoico impedisce anche l'apertura del case se la macchina si trova in luoghi fisicamente non sicuri.
Strong password policy - RECCOMENDED
Le password di fatto sono il baluardo principale per permettere l'accesso al sistema. Se sono semplici, triviali, recuperabili da un dizionario o brevi sono password deboli.
E' possibile forzare il numero minimo di caratteri composti da una password editando /etc/login.defs
e forzando a 8 il numero minimo di caratteri della password con PASS_MIN_LEN 8
.
Altra opzione interessante presente nello stesso file è PASS_MAX_DAYS 99999
dove 99999 è la durata della password. Ha senso inserire un PASS_MAX_DAYS 180
per forzare il cambio della password ogni 180 giorni. Attenzione: Queste modifiche vanno fatte PRIMA di aggiungere utenti alla macchina. PASS_MAX_DAYS 99999 e altri parametri sono comunque modificabili successivamente in /etc/shadow
.
Cript a lot - RECCOMENDED
E' fondamentale per un server pubblico che si gestisce via Internet rimuovere l'accesso telnet e sostituirlo con SSH, che cripta i dati trasmessi (e quindi login e password per l'accesso). SSH comunque non è esente da difetti, la versione 1 del protocollo ha potenziali buchi e in passato ci sono state serie vulnerabilities su alcuni software SSH. Si raccomanda di usare una versione recente di OpenSSH con supporto di SSH2, chiave di almeno 1024 bit e con accesso root diabilitato.
Permission restriction - PARANOID - DISFUNCTION?
In molte distribuzioni, spesso, alcuni file hanno di default permessi in lettura per tutti gli utenti anche quando non è necessario.
Non è una brutta idea restringere questi permessi, lasciando che sia root Colui Che Può:
chmod 600 /etc/inetd.conf
Se presente inetd.conf. Ovviamente è pure necessario editarlo per rimuovere tutti i servizi inutili.
chmod 600 /etc/xinetd.conf
Se presente Xinetd invece di inetd. Stesse raccomandazioni.
chmod 700 /etc/xinetd.d
La directory dove Xinetd ha il file di configurazione per i singoli servizi.
chmod -R 700 /etc/&rc.d/init.d/*
La directory dove sono presenti gli script di avvio. Perchè un normale utente dovrebbe vederlI?
Restrizione /etc/aliases - PARANOID - DISFUNCTION?
/etc/aliases
gestisce gli alias di posta, spesso di default si forwardando a root la posta di altri utenti. E' opportuno commentare alcuni alias, inseriti di default, per evitare potenziali exploit tramite il loro utilizzo (in particolare l'alias decode). Segue una lista delle righe di /etc/aliases che si possono commentare o rimuovere. Dopo la modifica del file va eseguito il comando newaliases per rendarla effettiva:
# uucp: root
# operator: root
# games: root
# ingres: root
# system: root
# toor: root
# manager: root
# dumper: root
# decode: root
Boot loader password - PHYSICAL - RECCOMENDED
Impedire l'accesso alle opzioni del bootloader è fondamentale in un server fisicamente non custodito.
Se si usa lilo aggiungere a /etc/lilo.conf
la riga password= e assicurarsi che lilo.conf sia leggibile solo da root.
Se si usa grub aggiungere a /etc/grub.conf
la riga password e assicurarsi che grub.conf sia leggibile solo da root o, meglio, usare l'opzione password --md5
Disabilitare CTRL-ALT-CANC - PHYSICAL - RECCOMENDED
Sicuramente non ci piace l'idea che chiunque possa riavviare il nostro server con un comodo CTRL+ALT+CANC
, per renderlo impossibile commentare in /etc/inittab la riga: ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Stampare i log! - PARANOID
La prima cosa che fa un intrusore una volta preso possesso del sistema e coprire le proprie tracce, modificando e cancellando i log che ne possano rilevare l'entrata.
Questo è evitabile se si ha molta carta da sprecare: è possibile configurare syslog per stampare (su stampante a feed continuo) i log che si vogliono. E' semplice, basta aggiungere una riga come quella che segue ed avere una stampante funzionante su /dev/lp0
authpriv.* /dev/lp0
Usare un syslog server
Leggermente meno sicuro e definitivo del metodo precedente è quello di loggare i propri log su un syslog server remoto, opportunamente blindato, che risulti, per quanto possibile, inattaccabile per l'intrusore. Sul syslog locale aggiungere/modifcare:
authpriv.* @nomesyslogserver
Sul syslog server configurare /etc/rc.d/init.d/syslog
per lanciare syslogd con l'opzione di accettare messaggi dalla rete, aggiungendo -r
alle opzioni di startup.
In RedHat 7.2 modificare la riga: SYSLOGD_OPTIONS="-m 0" con SYSLOGD_OPTIONS="-r -m 0"
Buona scelta è anche usare alternative più sicure (paranoiche?) a syslogd.
Limitare la history della shell
E' possibile limitare la history predefinita della bash per ridurre i rischi che un hacker, leggendola, possa vederci delle password digitate per sbaglio.
Caso tipico è l'utente che prova a diventare superuser e scrive la password al momento sbagliato, passandola come comando shell (che probabilmente non verrà trovato) invece che come input alla richiesta della password. Tale leggerezza resta immortalata nella history della sua shell.
Editare /etc/profile
per ridurre la dimensione della history. Modificare HISTSIZE=1000 in HISTSIZE=25
(o il valore che si preferisce).
Non urlare la proria identità - RECCOMENDED
Nonostante esistano tool come queso in grado di rivelare il sistema operativo installato su una macchina, è sempre buona norma fornire il minor numero possibile di informazioni sul sistema ed i suoi servizi. Questo non basta per fermare un bravo hacker, ma può essere abbastanza per fuorviare lo scan di uno script kiddie.
Per quanto riguarda i singoli servizi (web, dns, ssh, smtp ecc) riferirsi alle relative documentazioni per trovare il modo di nascondere versione e nome del programma utilizzato. Per quanto riguarda il sistema si può evitare di mostrare a console o via telnet/ssh un verboso banner introduttivo con nome distribuzione e versione del kernel.
Su RedHat7.2 editare rispettivamente /etc/issue
e /etc/issue.net
per mascherare versioni di kernel e distribuzione.
Su RedHat più vecchi uno sciagurato script di avvio (/etc/rc.d/rc.local) riscriveva ogni volta questi file con le informazioni originarie. In questo caso è necessario commentare le righe dello script che riscrivono /etc/issue e /etc/issue.net.
Rimuovere RPM, GCC e altri comandi utili - DISFUNCTION?
Se si vuole rendere la vita difficile ad un intrusore, e anche complicarsi un po' la propria, considerare la possibilità di spostare il comando RPM in una directory non standard (meglio cambiandogli anche il nome per evitare che un find lo trovi) o metterlo direttamente in un luogo inaccessibile (floppy estraibile).
Analogamente si può pensare di rimuovere dal sistema tutti i tool necessari per compilare del codice come gcc, make e le relative libraries (utili all'hacker che vuole crearsi delle backdoor) e i comandi che si possono usare per prendere un file dalle rete (lynx, ftp, irc, ncftp, wget, scp, rcp ...) e che si possono impropriamente essere utilizzare per caricare sulla macchina programmi estranei.
Queste precauzioni, seppur efficaci in un contesto di sicurezza estrema, rendono molto meno comoda e pratica la vita dell'amministratore.
Restringere le opzioni di mount del file-system - DISFUNCTION?
Il file /etc/fstab contiene le informazioni su quali dispotivi possono essere montati sulla macchina e può definire delle opzioni che introducono limitazioni sul file-system montato.
Per esempio un /etc/fstab con queste righe:
/dev/hda2 /tmp ext2 defaults 1 2
/dev/hdc1 /home ext2 defaults 1 1
può essere modificato con opzioni che restringono, sui file system montati, la possibilità di eseguire binari (noexec), di onorare i bit setUID e setGID su file che li hanno (nosuid), di interpretare caratteri o dispositivi a blocchi speciali (nodev):
/dev/hda2 /tmp ext2 nosuid,nodev,noexec 1 2
/dev/hdc1 /home ext2 nosuid,nodev 1 1
Limitare gli utenti che possono fare SU - RECCOMENDED
Qualsiasi utente con una shell sul sistema con il comando su, può diventare root (sapendo la password). Si può stroncare alla radice questa velleità editando il file /etc/pam.d/su
e scommentando la riga:
auth required /lib/security/pam_wheel.so use_uid
.
Una volta fatto, solo gli utenti appartenti al gruppo wheel (è un gruppo speciale, non si possono usare altri gruppi arbitrari per questa operazione) possono fare su, per cui editare /etc/group ed aggiungere al gruppo wheel gli utenti abilitati ad eseguire su.
Le possibilità di interoperabilità fra client e server Windows e Samba in una rete locale per la condivisione dei file sono varie e si possono raggruppare in due scenari di riferimento:
- Windows server con client misti (Windows, Linux/Unix, MacOS).
- Linux/Unix Samba server con client misti.
E' possibile configurare Samba per:
- Operare come Primary Domain Controller (PDC di un dominio NT, ma non Domain Controller di una Active Directory) di una rete mista, gestendo anche i profili di macchine Windows e il login sul dominio. Una simile opzione permette ad una macchina Linux con Samba di eseguire le stesse funzioni di un PDC di dominio NT.
- Operare come normale File Server per client misti. I metodi di autenticazione possono essere vari e a seconda del metodo utilizzato possono essere necessari diversi interventi sul server e sui client.
- Operare come Domain Member con le funzionaità di file server accessibili sulla base delle login e password del dominio. Samba può essere parte sia di un dominio NT (Samba 2 o superiori) che di una Active Directory (Samba 3 o superiori)
- Operare come WINS server (o essere configurato per utilizzare un altro WINS server). In questo caso la configurazione è semplice, rapida ed efficace, non presentando particolari problemi di compatibilità e interoperabilità.
- Operare come Master Browser in una rete mista.
Samba NON permette invece di gestire una macchina come Backup Domain Controller di un PDC Windows, non può essere un Backup Browser e non può essere un Secondary Wins Server.
Sul lato client, invece, non ci sono particolari problemi ad usare Samba per connettersi a server Windows o Linux: la condivisione di rete remota viene normalmente montata sul file system locale e ci si può normalmente accedere con i permessi concessi.
Analizziamo come Linux si presta ad essere utilizzato in piccole e medie aziende la cui attività non è necessariamente collegata all'informatica.
In questi contesti tipicamente esistono vari computer desktop, basati su Windows, che vengono utilizzati dal personale locale, uno o più server interni (per la condivisione di file e stampanti, per una eventuale Intranet con gestionale accessibile via Web ecc.) e, in certi casi, uno o più server pubblici (posta elettronica, sito web ecc.).
Il personale tecnico che gestisce i sistemi può essere una figura interna "riadattata" per l'occasione, in quanto più competente di altri nell'uso dei computer o qualcuno con competenze specifiche e approfondite.
In molti casi ci si avvale del supporto di fornitori esterni per soluzioni informatiche, assistenza e consulenza.
VANTAGGI
- Il costo delle licenze. Inutile sottolinearlo, tutti i principi di libertà di utilizzo e le precisazioni sulla natura della GPL, di fatto impallidiscono di fronte alla prospettiva che Linux è gratis. Si possono installare tutte le versioni che si vogliono tutte le volte che si vuole, almeno per quanto riguarda i prodotti standard per le distribuzioni più comuni. Notare che non tutte le distribuzioni Linux sono sempre gratuite ed hanno termini di licenza che ne permettono il libero utilizzo e duplicazione.
- Il costo del software, per quanto questo rientri parzialmente sul punto precedente, va sottolineato che di Linux non è gratis soltanto il sistema operativo strettamente parlando, ma anche tutti gli applicativi più diffusi: strumenti di Office Automation, grafica, web design, tool si sviluppo, uso di Internet ecc.
- Il costo dell'hardware necessario per supportare il sistema operativo è generalmente più limitato, in particolare per server o router/firewall basati su Linux. Su sistemi Desktop, invece, le esigenze sono paragonabili a quelle di Windows.
- L'aggiornamento è gratuito, non si è costretti ad aggiornare ogni pochi anni il parco macchine o a sottoscrivere un contratto di abbonamento per il software, anche se Linux commerciali hanno adottato una logica di licencing basata su "abbonamenti" a servizi online di aggiornamento.
La compatibilità verso il passato sui formati dei file è maggiormente garantita dal rispetto di standard aperti.
- Il sistema è più stabile e longevo. E' difficile vedere Linux bloccarsi completamente, sia su un server che su un client. Se questo succede spesso il motivo va ricercato in qualche malfunzionamento dell'hardware (memoria, riscaldamento processore ecc.). E' inoltre meno soggetto ad una progressiva "degradazione" dell'integrità generale del sistema, con il passare del tempo e l'utilizzo. Un sistema Windows, a suo modo, invecchia con l'uso e tende a diventare gradualmente più pesante ed instabile (voci di registro orfane, programmi poco utili caricati all'avvio ecc.).
- L'amministrazione remota e la gestione del parco macchine è facilitata dalla possibilità di gestire l'installato via console remota, di aggiornarlo automaticamente senza disservizi e downtime, di redistribuire in modo piuttosto semplice su un parco macchine vasto anche software custom.
- La sicurezza è migliorata, soprattutto sul lato desktop, dove virus, worm, spyware e dialer non costituiscono, quantomeno per il momento, un pericolo reale.
- Si utilizzano standard aperti non proprietari, non si è vincolati ad un singolo fornitore e alle sue politiche di lock-in per trattenere clienti. Questo vale sia per il prodotto che per i servizi accessori e l'assistenza.
- La migrazione è trasparente sul lato server, richiedendo solo l'intervento su sistemi centralizzati e basandosi su software Open Source che ormai garantisce grande interoperabilità con il mondo Windows (in questo Samba è un elemento chiave).
- E' possibile preservare l'investimento fatto sul software Windows esistente con strumenti quali Rdesktop (Terminal Service Client per Linux) e Wine (una implementazione OpenSource delle API di Windows che di fatto permette di eseguire molti programmi di Windows sotto Linux, a velocità simili (non si tratta di una emulazione software), mantentendo compatibilità molto buona, suppur non assoluta).
- Non si rischiamo multe per l'uso di software copiato (o clonato). Non c'è l'incubo, a volte creato con pubblicità aggressive e in parte fuorvianti, di incorrere in gravi sanzioni per aver installato più o meno consapevolmente una copia di troppo di Windows o di un qualsiasi programma (magari solo per prova o per momentanee necessità contingenti) o perchè un dipendente ha autonomamente installato software non originale.
- E' possibile percorrere migrazioni graduali da un network basato su Windows ad uno basato su Linux. In questo senso l'adozione di software Open Source disponibile sia su Windows che su Linux può essere un primo passo: applicativi di uso comune come OpenOffice, Firefox/Mozilla, Thunderbird possono da subito essere usati su desktop Windows per abituare gli utenti alle loro interfacce (generalmente simili alle controparti Microsoft), inoltre esistono tecnologie (NoMachine, realizzata da italiani, ora integrata in KDE, per esempio) che permettono di eseguire in modo trasparente all'utente da un ambiente Windows una applicazione remota che gira su un server Linux.
Precisazioni
Alcune dei vantaggi riportati sono di fatto possibili e forniscono le loro migliori prospettive in installazioni e migrazioni fatte allo stato dell'arte. In particolare la migrazione sul lato client va considerata con molta attenzione e per essere il più possibile indolore:
- Il sistema informatico (gestionali vari) dovrebbe essere basato su web, mainframe o comunque su sistemi centralizzati in modo tale che non ci debbano essere applicativi custom da migrare o emulare ma soltanto un interfaccia utente basata su software dalle funzionalità note (browser, client di posta, terminale ecc.);
- Il parco macchine è meglio che sia simile, in termini di hardware e uguale in termini di distribuzione e versione utilizzata;
- Va assolutamente previsto un sistema centralizzato di aggiornamento del software automatico, amministrazione e gestione remota, delivery di software aggiuntivo (su Linux questo è possibile senza costi per prodotti particolari e con sforzi tecnici relativamente limitati);
- E' possibile, in certi casi auspicabile e necessario, mantenere ambienti ibridi. In particolare il lato server è la prima parte da considerare per una migrazione in quanto può risultare trasparente agli utenti, mentre il lato client va gestito con attenzione e adeguata preparazione.
SVANTAGGI
- Per quanto siano stati grandi i progressi e sia stata comunque raggiunta una certa maturità, sul desktop Linux è ancora indietro rispetto a Windows in quanto a facilità d'uso, supporto di periferiche, integrazione degli strumenti comuni e accessibilità da parte di personale non esperto.
- Una migrazione sul desktop può essere difficile e problematica, sia per la resistenza degli utenti, sia per le obiettive difficoltà a cui può andare incontro personale inesperto, senza opportuna e comunque costosa formazione, sia per le difficoltà potenziali di scambio documenti con partner commerciali (gestire documenti .doc sotto Linux è possibile, ma la compatibilità non è completa). E' un costo iniziale che va preventivato e risulta attenuato da una adeguata preparazione e dalla buona predisposizione degli utenti.
- Il parco software è più limitato, per quanto la varietà di applicazioni Open Source e anche commerciali sia notevole, Linux, su alcuni settori in particolare, manca della completezza di alcuni programmi disponibili su Windows: in particolare nelle aree del Publishing (nulla di paragonabile a Xpress o Illustrator), della grafica (Gimp è un ottimo prodotto, ma non vale un Photoshop), del web design (Dreamweaver è ancora inarrivabile) e della musica professionale. Gli strumenti Office di base (Editor di testi, foglio di calcolo ecc.) alternativi a MS Office (OpenOffice, Star Office, KOffice... ) sono comunque ottimi e sicuramente all'altezza per tutte le funzioni comuni e di fatto maggiormente utilizzate.
Il vero problema emerge quando si deve lavorare su formati proprietari Microsoft, per i quali la compatibilità è buona ma non ancora ottimale e si possono avere problemi nella conversione dei documenti.
- Maggiori costi di supporto e assistenza sul desktop da parte di consulenti e fornitori esterni sono inoltre prevedibili, almeno in una fase iniziale o in assenza di forti competenze interne su Linux. Questo fattore è destinato a scendere con il tempo e l'aumentare degli skill interni (eventualmente tramite corsi di formazione, che comunque costituiscono un costo).
- Il parco delle distribuzioni Linux è frammentato al punto che adottare su sistemi client diverse distribuzioni Linux può rivelarsi problematico, sopratutto in aziende dove non esistono adeguati skill interni. Esistono situazioni paradossali, per esempio, in cui lo stesso documento creato con OpenOffice, anche in versione PDF, viene visualizzato in modo diverso su distribuzioni diverse: questo può essere inaccettabile e conferma la necessità di mantenere un parco macchine allineato.
- La minaccia SCO. Francamente non sarebbe il caso di considerare la guerra che SCO sta facendo a Linux e all'OpenSource (mascherata da battaglie legali a IBM e altre società) come una seria minaccia o svantaggio per chi lo utilizza. Chiunque abbia seguito le vicende ed abbia un po' di conoscenze tecniche sull'argomento si rende conto che SCO sta facendo un inaccettabile "terrorismo propagandistico" che di fatto ha danneggiato l'adozione di Linux su larga scala.
Anche se il caso si sta sgonfiando, il problema non è di sostanza ma di apparenza e in alcune società si aspetta a valutare Linux come alternativa a Windows perchè non si sa ancora come potrà essere il futuro di Linux e se per il suo utilizzo si debba pagare qualcuno che ne rivendica i diritti. Va considerato che, proprio per far fronte a questa (remotissima) prospettiva, varie società che distribuziono Linux, fra cui RedHat e Novell, offrono copertura legale da eventuali recriminazioni SCO per chi compra i loro prodotti.