Proteggere il sito da attacchi hacker e bot malevoli, ed ottimizzare le risorse – II Parte
Nel precedente articolo, abbiamo visto che, purtroppo, esistono bot malevoli, il cui scopo è scandagliare la rete, alla ricerca dei punti deboli del nostro sito. Poco conta che il sito sia basato su WordPress (di per sé, molto sicuro, ma il cui punto debole sono i plugin), Coppermine Gallery, Joomla, o utilizzi codice PHP scritto da noi.
E’utile, quindi, disabilitare l’indicizzazione delle cartelle, ed evitare di avere troppe pagine con nomi “riconoscibili”, del tipo login.php, per rendere più difficile la vita di questi dannati bot!
Tuttavia, nell’ultimo anno, dopo aver avuto diversi problemi di rallentamento, ho approfondito ulteriormente la questione, per cercare di eliminare tutti i punti deboli, precludendo l’accesso a bot e visitatori “malevoli” che NON hanno interesse a visitare il sito, ma solo a consumare risorse ed, eventualmente, riuscire ad editarne il contenuto.
Analizzeremo il contenuto di due file molto importanti, che vanno piazzati nella root del nostro sito, e ci permettono di restringere l’accesso ad alcuni o tutti i file, da parte di alcuni indirizzi IP o bot.
Tali file si chiamano robots.txt e .htaccess.
Cosa inserire nel file .htaccess
- Blocca tutto il traffico proveniente dalla Cina
Non so voi ma, nel mio caso, il traffico “reale” proveniente dalla Cina è scarso, se non scarsissimo, ed è in gran parte comporto da botnet che si collegano costantemente al mio sito, e ne effettuano continuamente l’indicizzazione, alla ricerca di eventuali punti deboli. Tale caratteristica, purtroppo, è condivisa con l’Ucraina e la Russia.
Per ovviare a ciò, utilizzeremo un metodo “brutale”: bloccheremo l’accesso all’intero gigante asiatico.
Andiamo su countryipblocks.net, spuntiamo “CHINA->.htaccess deny” e clicchiamo su “Create ACL”, e copiamo il risultato in cima al nostro file .htaccess
- Scoraggia gli hacker indonesiani islamici di zone-h
Tali personcine, da anni, scandagliano la rete, ed effettuano migliaia di accessi al vostro sito, tentando di caricare un file di prova “nyet.gif” sul vostro spazio FTP.
In caso di successo, hanno la prova che il vostro sito è un target ideale, e proseguono con l’hack vero e proprio.
Per evitare che questi subumani sprechino anche una singola “goccia” delle risorse del vostro server, blocchiamo a priori l’accesso al generico file nyet.gif, inserendo, in .htaccess:
#nyet.gif islamic script kiddies <Files "nyet.gif"> Order Allow,Deny Deny from all </Files>
- Fornisci sempre il file robots.txt ed una pagina di errore, anche se blocchi un IP/bot
Se non si consente esplicitamente l’accesso alla pagina di “ACCESSO NEGATO” (HTTP error 403), c’è il rischio di creare un loop, col bot di turno che cerca continuamente di accedere, senza che riesca a “capire” perchè non vi riesce.
Allo stesso modo, conviene sempre fornire il file robots.txt, nel caso quel bot che avete bannato decidesse finalmente di rispiettarne le direttive.
#avoid redirect loop when blocking bots - always delivery robots.txt, http403 and 410 pages <FilesMatch "(^403\.shtml$|^410\.shtml$|^robots\.txt$)"> Order Allow,Deny Allow from all </FilesMatch>
- Blocca l’accesso a pagine del tipo login.php o wp-login.php
Come abbiamo visto nel precedente articolo, molti bot sparano nel buio, e cercano di accedere, magari, ad una pagina di log-in di WordPress, magari sperando che la password sia “admin” o “password”. 🙂
A tale scopo, conviene rinominare tutte le vostre pagine del tipo “login.php”, utilizzare il plugin Rename wp-login.php per WordPress, ed inserire, nel file .htaccess:
#blocca accessi malevoli a login e wp-login nella root e nei subfolder <FilesMatch "(^wp-login\.php$|^login\.php$|^login\.aspx$)"> Order allow,deny Deny from all </FilesMatch>
- Blocca l’accesso ai bot malevoli
Sono tanti, sono fastidiosi, non creano alcun valore aggiunto e, purtroppo, continuano a cambiare nome negli anni: sono i bot malevoli che è bene escludere, per un milione di valide ragioni. 🙂
Inoltre, così facendo, andiamo a bloccare anche curl e wget, evitando che qualcuno effettui una copia 1:1 del vostro sito.
RewriteEngine on #inherit from root htaccess and append at last, necessary in root too RewriteOptions inherit
#block bad bots RewriteCond %{HTTP_USER_AGENT} ^$ [OR] RewriteCond %{HTTP_USER_AGENT} 360Spider [OR] RewriteCond %{HTTP_USER_AGENT} A(?:ccess|ppid|hrefsBot) [NC,OR] RewriteCond %{HTTP_USER_AGENT} C(?:apture|lient|opy|rawl|url) [NC,OR] RewriteCond %{HTTP_USER_AGENT} D(?:ata|evSoft|o(?:main|wnload)) [NC,OR] RewriteCond %{HTTP_USER_AGENT} E(?:ngine|zooms) [NC,OR] RewriteCond %{HTTP_USER_AGENT} filter [NC,OR] RewriteCond %{HTTP_USER_AGENT} genieo [NC,OR] RewriteCond %{HTTP_USER_AGENT} Ja(?:karta|va) [NC,OR] RewriteCond %{HTTP_USER_AGENT} Li(?:brary|nk|bww) [NC,OR] RewriteCond %{HTTP_USER_AGENT} MJ12bot [NC,OR] RewriteCond %{HTTP_USER_AGENT} nutch [NC,OR] RewriteCond %{HTTP_USER_AGENT} Pr(?:oxy|ublish) [NC,OR] RewriteCond %{HTTP_USER_AGENT} robot [NC,OR] RewriteCond %{HTTP_USER_AGENT} s(?:craper|istrix|pider) [NC,OR] RewriteCond %{HTTP_USER_AGENT} W(?:get|(?:in(32|Http))) [NC] RewriteRule .? - [F]
- Limita i tentativi di inserimento spam nei commenti e nei guestbook
Un tentativo di hacking molto diffuso, contiste nel tentare, a caso, di inserire spam nei commenti o nel libro degli ospiti, lasciando come ricordo utilissimi messaggi a proposito di pillole blu, o su come si perdano 50kg in 10 giorni. 🙂
Tali tentativi hanno in comune il fatto di attaccare, alla fine dell’URL del guestbook di turno, dei codici del tipo ++++++++result+chosen+nickname+”nomeacaso”;+sent
# Limita tentativi di hacking del tipo: +result:+chosen+nickname+"acqqicny06";+sent; o PLM=0 RewriteRule ^(.*)result:(.*)$ - [F,NC] RewriteRule ^(.*)\+\[PLM\=0\]\[N]\+GET(.*)$ - [F] RewriteRule ^(.*)\+\[PLM\=0\]\+GET(.*)$ - [F]
Cosa inserire nel file robots.txt
- Impedisci il crawling di cartelle inutili o pericolose
E’inutile che googlebot, bingbot o altri crawler vadano a “scavare” in cartelle che non contengono alcun contenuto utile al visitatore. Pensiamo alle cartelle contenenti plugin, script vari…
In questo caso, escludiamo alcune cartelle inutili di WordPress (/blog), evitiamo la creazione di duplicati in Coppermine Gallery (/gallery), ed escludiamo alcune cartelle inutili per l’utente (v. la cartella contenente gli script per il minify, o lightbox).
User-Agent: * Allow: / Disallow: /cgi-bin/ Disallow: /min/ Disallow: /lightbox/ Disallow: /gallery/addfav.php?* Disallow: /gallery/login.php?* Disallow: /gallery/thumbnails.php?album=*favpics* Disallow: /gallery/thumbnails.php?album=*lastup* Disallow: /gallery/thumbnails.php?album=*lastcom* Disallow: /gallery/thumbnails.php?album=*topn* Disallow: /gallery/thumbnails.php?album=*toprated* Disallow: /gallery/thumbnails.php?album=*search* Disallow: /gallery/thumbnails.php?album=*slideshow Disallow: /blog/wp-admin/ Disallow: /blog/wp-includes/ Disallow: /blog/wp-content/plugins/ Disallow: /blog/wp-content/cache/ Disallow: /blog/wp-content/themes/ Disallow: /blog/wp-content/languages/ Disallow: /blog/wp-content/wptouch-data/ Disallow: /blog/trackback/ Disallow: /blog/*/trackback/ Disallow: /blog/feed/ Disallow: /blog/*/feed/ Disallow: /blog/wp-login.php Disallow: /blog/wp-signup.php
- Blocca i pochi bot “inutili” che rispettano il file robots.txt
Molti bot “malevoli” non rispettano assolutamente il file robots.txt, motivo per cui li abbiamo esclusi poco sopra, grazie al file .htaccess, individuando e bloccando i rispettivi user agent.
Per fortuna, alcuni di questi, sono più “corretti”, e necessitano di una semplice regola nel file robots.txt.
# Block due to SEO or pseudo-SEO which is not useful to me. User-agent: AhrefsBot Disallow: / User-agent: Ezooms Disallow: / User-agent: Exabot Disallow: / User-agent: MJ12bot Disallow: / User-agent: CCBot Disallow: / User-agent: meanpathbot Disallow: / User-agent: SearchmetricsBot Disallow: / User-agent: Baiduspider User-agent: Baiduspider-video User-agent: Baiduspider-image Disallow: / User-agent: Sogou Disallow: /
Grazie a queste regolette, trovate qua e là su stackexchange, webmasterworld, google groups o l’esperienza personale, ho escluso la stragrande maggioranza del traffico inutile e potenzialmente dannoso.
E’tutto! Fatemi sapere se ne avete tratto giovamento, come ne ho tratto io. 🙂