Sicurezza in PHP: come prevenire gli attacchi?

Mentre inizio a scrivere questo ennesimo articolo per mdrseo… strutturo parallelamente chilometriche mail al mio provider di hosting. Illustro il lavoro svolto su loro indicazione, utilizzando un tono fermo e sicuro, anche rispolverando quel poco di competenze che posseggo in fatto di sicurezza PHP. Dovete sapere, infatti, che ho ricevuto una mail dal mio hosting provider, il quale mi ha segnalato – poco garbatamente peraltro – una pesantissima falla su un mio portale, la quale ha spinto i responsabili ad oscurare temporaneamente tutti i siti che ospitavo da loro (circa una decina). Almeno non hanno cancellato ancora nulla…

Penso subito: calma, lasciamo perdere le solite polemiche vittimistiche da forum di sfigati, coi soliti che ragliano lamentele da incompetenti contro gli “hoster cattivi e censori”. Così, preso da una specie di spirito pioneristico che mi invita a trarre sempre il meglio anche dal peggio, scrivo sul forum del CMS “fallato” relativamente al componente in questione.

Sapete – scrivo –  mi è successo un vero guaio. C’è un componente che utilizziamo abitualmente in stable version che potrebbe essere soggetta ad un rischio sicurezza non da poco. Difficile dire di più, al momento ho l’unica copia del sito in remoto e non posso accedervi da WEB… dovete sapere – lo scrivo solo qui – che sono stato fuori sede per circa una settimana, e sfortuna volle che esattamente il giorno in cui mettevo piede sul treno sia stato vittima di un attacco (credo) di code injection. Sfruttando una falla nel modulo di upload di un componente di Joomla, infatti, sembra che sia stato possibile replicare dei file PHP malevoli dentro la root del mio sito.

equilibrismo e sicurezza php

Utilizzando un diffusissimo componente (eventlist) ho rischiato dunque di compromettere buona parte dei siti che gestivo, dato che erano tutti sottodomini di uno stesso hosting che poi avevo “reindirizzato” su domini di primo livello manipolando i record DNS.Forse avere tutti i siti sotto uno stesso “tetto” è una buona idea solo se si è meno superficiali in fatto di sicurezza, non trovate?

E’ stata una scoperta davvero spiacevole, a cui sto cercando di rimediare parzialmente seguendo i punti che ho trovato dopo qualche ricerca:

  • attenzione alle componenti che permettono all’utente di uploadare file sul vostro server: come filtro ricordatevi di mettere sempre estensioni sicure (immagini, documenti o filmati, non file zip o flash);
  • anche se non è una regola dogmatica, fissate i permessi dei file (da server Linux) a 644 e a 755 per le directory. I permessi 777 vanno evitati, a meno che non richiesti esplicitamente dal CMS o blog (ad esempio WordPress li richiede per le cartelle di upload e lì c’è poco da fare…);
  • registrate il vostro sito al webmaster tool di Google, in quanto sarà in grado di dirvi se avete un malware nel vostro sito;
  • settate opportunamente il file php.ini (se accessibile): assicuratevi di avere register_globals e display_error ad off (a molti hacker è utile vedere che tipo di errori vengono generati dal vostro sito, ad es., quando manipolano gli URL in modo malevolo);
  • attivate la Leech Protection (se il vostro hoster lo permette): essa vi permette di ridurre il numero di tentativi che un utente può fare per accedere, ad esempio, ad un’area riservata. Se qualcuno prova troppe volte ad accedere al vostro pannello amministrativo, scatta il BAN – di solito – per il suo indirizzo IP.
  • rimuovete sempre cartelle e database che non utilizzate: è una questione di ordine che in questo caso va a braccetto con la sicurezza;
  • in finale, anche se non riguarda strettamente PHP, cambiate periodicamente la password del vostro account (lettere e numeri, compreso almeno un punto o carattere non alfabetico ed almeno una maiuscola)

Ecco, qualcuno sul “forum-ufficiale” risponde: ma nulla di fatto, è il solito guru. Sapete, quello che snobba gli utenti che hanno scritto poco nel forum, bollando i miei contenuti probabilmente come “strane cose” su cui noi mortali poco possiamo, deviando il discorso che portavo avanti e facendomi pure un cazziatone per aver osato nominare (senza manco linkare, pensate un po’) il servizio di hosting. Sapete, per molti open source significa “gratuito e senza retribuzione”: poi dicono che esistono i programmatori precari.

Io ci sto perdendo, caro guru – avrei voluto dirgli, ho pagato un anno anticipato di hosting , mi ritrovo senza nulla da un giorno all’altro… e non posso nemmeno nominarlo? Cosa pensi, che voglia fare pubblicità gratuita ad un servizio del genere senza neanche sapere perchè? Il gurismo di certi forum è davvero nauseante, dato che spesso incontri gente che ne sa molto meno di te: anche di te che spesso hai bisogno di Google per (ri)vedere come si concatenano le stringhe in PHP!

Nel frattempo mi scrive un conoscente ultra-smanettone via mail, chiedendomi “come mai” il mio portale sia a terra: ed io, sospettando uno sfottò maligno, con lo spirito avvelenato di chi ha appena visto perdere la propria squadra del cuore, faccio un po’ di sano disfattismo autolesionista. Del tipo: “forse il sito non tornerà mai più online”. Che sia vero o meno, lo dirà l’evoluzione delle cose. Adesso non ho davvero voglia di intavolare “discorsi di sicurezza” con l’ennesimo secchione che non saprà ovviamente darmi le risposte che cerco.

Oggi è domenica, gli hoster difficilmente risponderanno ed io sono reduce da un viaggio notturno di ritorno in cui ho dormito forse 3 ore. Meglio andare a leggere qualcosa (su carta)…

2 Comments

  1. Carlo 30 maggio 2010
  2. salvatore 30 maggio 2010

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *