I sistemi operativi per ambienti server nascono con alti livelli di protezione ma non sono sicuri di default sin dalla prima installazione.
L’hardening di un server è quel processo che innalza il livello di sicurezza della macchina,limando imperfezioni e possibili rischi che potrebbero essere sfruttati come porta d’ingresso per eventuali operazioni non lecite o per provocare un’interruzione del servizio.
L’hardening di un server si può schematizzare in :
- hardening hardware
- sicurezza fisica del datacenter
- hardening a livello software
- hardening a livello OS kernel
Per hardening hardware e sicurezza fisica del datacenter vanno intese tutte quelle precauzioni che permettono di rendere inattacabile una macchina qualora un eventuale intruso riesca ad avere accesso al datacenter.
Il server non deve dare la possibilità di essere spento o riavviato con un supporto ottico esterno,cosa che è comunque impossibile sulle infrastrutture più professionali,si veda Blade server e simili.In presenza di ambienti server per utilizzo non enteprise,è facile riscontrare la presenza di macchine adattate allo scopo,che consentono un’interazione via tastiera oltre all’inserimento di supporti ottici via lettore cd/dvd.Questo tipo di operazioni devono essere inibite,trasformando la macchina in un server headless a cui verrà fornito accesso esclusivo al solo personale qualificato.
Tra le prassi più comuni vi è inoltre quella di impostare una password a livello bios oltre che ad eliminare la possibilità di un riavvio via tastiera con la pressione dei tasti ctrl+alt+canc,comportamento che può essere modificato nel file /etc/inittab.
Le procedure di hardening seguono una checklist ben precisa che può essere adattata allo scopo qualora ci si trovi in presenza di ambienti mission critical di fascia alta o in presenza di infrastrutture meno professionali.
Le fasi primarie di progettazione di un sistema sicuro prevedono la possibilità di compilazione di un kernel predisposto con patch di sicurezza quali grsecurity e la disposizione di partizioni separate e montate con le corrette opzioni di mount,come noexec e nosuid per la partizione /tmp.
Generalmente,la checklist vede al primo posto,dopo la progettazione del sistema, le pratiche di rimozione dei servizi di rete e dei demoni non necessari,ottenuta disattivando servizi superflui che molto spesso risultano attivi di default in fase di installazione.E’ buona norma disabilitare i servizi forniti da inetd e xinetd quali auth e telnet.
Eliminare,se presenti e non necessari,eventuali demoni di tipo RPC,come portmap ed in generale i servizi di condivisione NFS,qualora ovviamente si abbia intenzione di rinunciare a funzionalità di condivisione file all’interno della rete.
Ridurre al minimo l’esposizione dei servizi di rete significa anche evitare l’utilizzo di pannelli di gestione che si pongono in ascolto su porte dedicate all’amministrazione remota del pannello stesso,rappresentando un possibile punto d’attacco.
Eventuali pannelli di controllo necessari alla gestione del sistema o per rivendita hosting andranno esaminati in dettaglio per chiudere eventuali vulnerabilità e apportare modifiche alle configurazioni in modo da rendere più sicura l’installazione di default.
In presenza di web server e pagine dinamiche è necessario disabilitare eventuali funzioni php (o linguaggio equivalente) che possano essere utilizzare in modo improprio,vedi ad esempio funzioni system() o exec().
Ai servizi attivi sul server andranno applicate modifiche di configurazione per oscurare i banner relativi alle versioni software.
Particolare menzione meritano ovviamente eventuali demoni STMP che dovranno essere configurati correttamente per evitare che diventino preda di utilizzo come openrelay,così come il demone Ssh,che dovrà operare esclusivamente con utenticazione con chiavi pubbliche e privo del login per l’utente root.
Tutti i demoni attivi sul sistema dovranno inoltre operare utilizzando un utente non privilegiato,si veda l’esempio dell’utente www-data per Apache.
E’ da ricordare che la presenza sul sistema di software superfluo aumenta la probabilità che all’interno del codice si annidino exploit.
E’ buona norma inibire inoltre la capacità di compilazione di software sul sistema eliminando il più possibile la presenza di codice sorgente sul server.
Dopo la prima installazione dell’ambiente operativo è necessaria la verifica dei permessi per eventuali file eseguibili presenti sul filesystem per debellare il rischio setuid e setgid.
E’ da considerare l’installazione di un software di tipo IDS che oltre alle verifiche anti-intrusione svolga anche le funzioni di controllo dell’integrità dei file presenti sul sistema oltre che di rilevatore di rootkit.
Inoltre l’implementazione di un firewall a livello server (iptables,apf) è da considerarsi necessaria per rafforzare la sicurezza generale del sistema.
Il principale attore nell’utilizzo dei servizi offerti da un server è l’utente.Particolari precauzioni andranno prese per migliorare la sicurezza durante la creazione di nuovi utenti sul sistema,abilitando i meccanismi di scadenza delle password e costringendo l’utente a scegliere password forti e non duplicate.
Gli utenti presenti sul sistema dovranno avere dei precisi limiti di accesso alle risorse (configurabili generalmente in /etc/security/limits.conf) per evitare rischi derivanti da eventuali fork bomb.

Pingback: Sicurezza del server con OSSEC | SERVERMANAGED.IT ::