Proteggere il sito da attacchi hacker: due trucchi efficaci | Flavio's blog


Proteggere il sito da attacchi hacker: due trucchi efficaci

Proteggere il sito dagli attacchi?

Se è vero che, ai giorni nostri, è diventato relativamente facile aprire e far funzionare un sito, è anche vero che molti tralasciano l’aspetto “sicurezza“.

Il risultato è una sfilza di “You’ve been hacked”, password perse, database corrotti, ondate di spam, o ancora peggio, l’iniezione di codice malevolo nelle pagine.

Oltre ai soliti consigli, come tenere aggiornato il proprio CMS come WordPress e simili, ed utilizzare una password lunga ed un nome utente diverso dal classico “admin”, alcune statistiche del pannello di controllo del mio sito, relative agli error 404 (gli errori di pagina inesistente), mostravano alcune cose interessanti.
Infatti, numerose volte era stato tentato l’accesso a queste pagine:

/undefined
/crossdomain.xml
/signup
/signup.php
/register.php
/wp-login.php
/administrator/
/guestbook//admin.php
/signup/
//admin.php
/member/register
/join.php
/account/register.php
/shop
/login.aspx

col risulato di “error 404”, che significava che queste pagine, nel mio sito, non esistevano.

Come si vede, il potenziale “malfattore” tentava casualmente di accedere a pagine che, di solito, chiedono username e password, o comunque permettono, tramite SQL e PHP, di accedere ad un database e corromperlo (sql injection).

Conviene, quindi, evitare di avere delle pagine con questo nome, rinominandole in maniera leggermente differente, in modo da evitare OGNI possibilità di essere “beccati” dai bot che cercano i punti deboli di un sito, e che cercano parole diffuse come “login”, “signup”, “shop”,”register”.

Un’altra statistica del mio pannello di controllo (in particolare, il log del server), recitava spesso:

[09-Dec-2012 15:35:45 Europe/Berlin] PHP Warning:  mysql_query() [<a href=’function.mysql-query’>function.mysql-query</a>]: Access denied for user ‘root’@’localhost’ (using password: NO) in /xxx/xxx/xxx/yyy.php on line X

Insomma, qualcuno ha tentato di aprire alcune pagine php di una sottocartella, che di norma non devono essere aperte, ma vengono “incluse” altrove tramite la funzione php include.
L’obiettivo, in questo caso, era cercare di accedere al mio database SQL, sfruttando la riga X del file yyy.php che contiene una query SQL (mysqli_query()).

La riga

Access denied for user ‘root’@’localhost’ (using password: NO)

ci dice che è stato tentato l’accesso senza le credenziali, ovvero usando username e password di default.

Se il mio database SQL non fosse stato protetto da password, quindi, il malfattore sarebbe riuscito ad accedervi.

Anche se è piuttosto improbabile che qualcuno utilizzi un database non adeguatamente protetto da password, per evitare questo inconveniente mi è bastato disabilitare l’indicizzazione di questa ed altre cartelle dove risiedono questi file php che vengono “inclusi”.

In questo modo, il malfattore non può sapere quali siano i nomi dei file php della cartella, e non può tentare di forzare l’accesso in nessuno di questi.

Per disabilitare l’indicizzazione, è sufficiente aggiungere, nel file .htaccess di quella cartella, la riga:

Options -Indexes

Dopo aver fatto questa modifica, il log del server non mi ha più segnalato accessi “sospetti” come quello di sopra.

Qualsiasi altro consiglio che serva ad aumentare la sicurezza dei nostri siti, è il benvenuto!



1 Commento »

Per piacere accetta i cookie di terze parti per poter commentare il post! Il pulsante CAMBIA LE SCELTE DEI COOKIE si trova nel footer del sito. / In order to comment this post, please accept the third party cookies! The button CAMBIA LE SCELTE DEI COOKIE is in the footer of the website.