Continuo la rassegna dei sistemi operativi basati su BSD, parlando di quello che viene considerato il più sicuro di tutti. Sto parlando di
OpenBSD, l'OS
sicuro di default, che allieta le giornate degli admin rassicurati dagli annunci di sicurezza, che, di norma, non annoverano OpenBSD nella lista dei sistemi operativi colpiti da questa o quella vulnerabilità.
L'intero sistema di base (kernel e componenti utente) in OpenBSD passa un costante processo di revisione del codice. Quando un nuovo bug viene scoperto, il passo successivo è categorizzarlo e cercare nel resto della struttura occorrenze dello stesso tipo di bug.
Questo stretto controllo è molto utile, ma viene applicato solo al sistema di base. Tutti i software di terze parti non sono controllati, anche perché questo richiederebbe una conoscenza davvero approfondita degli stessi.
Per aiutare a risolvere
il problema sicurezza, OpenBSD include un certo numero di feature, le quali sono per default attive:
- Nessuna parte di memoria allocata può essere sia scrivibile che eseguibile allo stesso tempo (buffer overrun vi ricorda qualcosa?). Molti sistemi operativi supportano questa stessa funzione con gli ultimi chip x86, che hanno il bit NX incluso, ma OpenBSD dispone di questa caratteristica anche sui vecchi x86 e su altre architetture.
- Un gap viene inserito in modo casuale tra gli stack frames, rendendo molto più complicato l'utilizzo di exploits del tipo stack-smashing. Questo viene combinato con un canary value posizionato alla fine dello stack frame e controllato prima di ritornare il valore per assicurarsi che lo stack non sia stato modificato.
- La memoria allocata viene inserita in una posizione casuale nell'address space del processo. Questo fa in modo che sia più difficile, per un malintenzionato, capire dove sono i dati che potrebbero interessargli.
Vi sono poi molti altri meccanismi, che rendono OpenBSD un sistema sicuro. Vale la pena ricordare che OpenBSD è stato pioniere nello sviluppo e nel testing di un certo numero di funzioni di sicurezza (come SSH e sudo) adesso implementate anche in altri sistemi.
Sempre in merito alla sicurezza del sistema, ecco un'altra feature interessante: la versione di Apache di OpenBSD, per esempio, viene eseguita in jail (una specie di
gabbia da cui il processo non può uscire); niente di nuovo, se non fosse che il chroot del processo è predefinito. In questo modo un malintenzionato potrebbe soltanto far andare in crash il Web Server, senza poter accedere al contenuto del disco, in quanto il processo non ha i diritti per farlo.
Il lato negativo di tutto questo è che applicazioni scritte male possono facilmente causare un crash del sistema (ma non è forse meglio un sistema bloccato di uno con falle nella sicurezza?). Un recente aggiornamento nell'allocazione di memoria del
X server ha causato una serie di crash dell'OpenBSD. Un'analisi approfondita del caso ha portato alla scoperta dell'esistenza , da più di una decade, di un bug nel codice X, che ha sicuramente causato una lunga serie di inspiegati crash precedenti.
OpenBDS, come
NetBSD, è un sistema molto pulito e disegnato per essere facilmente amministrabile da linea di comando.
Mentre tutti i sistemi BSD hanno un'ottima documentazione (
FreeBSD in particolare),
il riferimento per OpenBSD è dato dalle man pages. Niente è
user visibile all'interno di OpenBDS senza che sia accompagnato da un'ottima documentazione.
Se non trovate quello che cercate sul manuale allora forse siete di fronte ad un bug.
La superba documentazione presente nella comunità BSD tende a far diventare impopolari le persone che fanno domande a cui possa essere risposto facilmente. E' facile che, per una domanda postata ad un mailing list, la risposta non sia più lunga di una riga (o anche di tre lettere come il famoso RTM:
Read The Manual) dove s'invita l'utente a leggersi il manuale.
L'upgrade di un sistema
OpenBSD è attualmente il peggiore se confrontato con quello degli altri sistemi BSD. Per molto tempo aggiornare il sistema (una nuova versione esce mediamente ogni sei mesi), ha significato cancellare tutto e reinstallare. OpenBSD 3.7 ha aggiunto il supporto per l'aggiornamento, ma solo per i pacchetti individuali. OpenBSD 3.8 permette l'upgrade dei pacchetti singolarmente, ma è considerata una funzione sperimentale. Da OpenBSD 3.9 ci si aspetta un package manager in grado di competere con quello presente negli altri sistemi.