Se la sera invece di compiere attività nobili come andare per siti per adulti leggete i siti informatici avrete notato che ieri Computer Blog è stato down per un bel po’, circa dalle 22:30 all’1 di notte, il tutto con errori diversi: per un po’ è stato “errore del database”, un po’ “Gateway Timeout” e un po’ 403.
Quanto successo è stato un caso di studio interessante a cui ho potuto assistere essenzialmente in diretta, quasi certamente legato a un aggiornamento di Plesk (infatti, da qualche giorno. WordPress era arrabbiato perché la versione di PHP che avevo era obsoleta) ma che ha aperto una vulnerabilità non da poco, anche se per pochi minuti.
Allora, intorno alle 22:30 mi arriva un’email dal Jetpack che mi annunciava il down del sito. Vado a controllare e invece di un classico “Gateway Timeout” (CB è un sito pesante e ogni tanto si pianta se ci son troppe visite) c’è, appunto, un errore di connessione al database. In sostanza, funzionano solamente i siti web che non usano i database, quindi quelli statici (e il cagatone supremo).
Provo a fare login nel pannello di Plesk ma anche lì c’è il medesimo errore, che poi varia in un error 500. Riesco poi a fare login per un attimo, ma poco dopo vengo cacciato, con tutti i siti che restituiscono un bel Gateway Timeout.
A quel punto faccio un bel reverse IP lookup, scopro vari altri siti che stanno sul mio stesso server e sono tutti nelle medesime condizioni.
Questa cosa va avanti ancora per un attimo, finché non capita la cosa veramente pericolosa: quando riparte il server si dimentica leggermente che i file PHP devono passare da qualche parte prima di essere serviti al client, così che aprendo i siti dinamici sviluppati in PHP arriva proprio il file php.
Incluso anche, se richiesto, /wp-config.php, che ha dentro i dati del database. Per carità, il database non è direttamente accessibile dall’esterno, ma è comunque un problema non indifferente.
Poco dopo, tutti i siti tornano down per qualche minuto e, infine, si riprendono. Per sicurezza avevo sospeso i siti WordPress, per evitare leak di dati, li ho riattivati poco dopo.
E mi son trovato con il nuovo Plesk.
Da ciò posso darvi due lezioni:
- PHP può essere leakato. Se ci salvare dentro roba sensibile, fatelo in modo sensato (se dovete usare password, hashate e salate. Se dovete lasciare in chiaro, come mi suggerisce Fabio, valutate una variabile d’ambiente)
- Se dovete aggiornare una piattaforma, attivate una qualche modalità di manutenzione
O mandate una sacrosanta mail ai clienti paganti…
Per quel che pago, mi sarebbe bastata la schermata di manutenzione 😀