﻿{"id":2113,"date":"2014-10-15T08:30:15","date_gmt":"2014-10-15T07:30:15","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=2113"},"modified":"2015-01-29T16:58:39","modified_gmt":"2015-01-29T15:58:39","slug":"proteggere-il-sito-da-attacchi-hacker-e-bot-malevoli-ed-ottimizzare-le-risorse-ii-parte","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2014\/10\/proteggere-il-sito-da-attacchi-hacker-e-bot-malevoli-ed-ottimizzare-le-risorse-ii-parte\/","title":{"rendered":"Proteggere il sito da attacchi hacker e bot malevoli, ed ottimizzare le risorse &#8211; II Parte"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-2115 image\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2014\/10\/sito-bersaglio-hacker.jpg\" alt=\"Come proteggere il sito da attacchi hacker e bot malevoli\" width=\"526\" height=\"275\" \/><\/p>\n<p>Nel <a title=\"Proteggere il sito da attacchi hacker\" href=\"https:\/\/www.flapane.com\/blog\/2012\/12\/proteggere-il-sito-da-attacchi-hacker-due-trucchi-efficaci\/\" target=\"_blank\">precedente articolo<\/a>, abbiamo visto che, purtroppo, esistono <strong>bot malevoli<\/strong>, il cui scopo \u00e8 scandagliare la rete, alla ricerca dei <strong>punti deboli del nostro sito<\/strong>. Poco conta che il sito sia basato su <strong>WordPress<\/strong> (di per s\u00e9, molto sicuro, ma il cui punto debole sono i plugin), <strong>Coppermine Gallery<\/strong>, Joomla, o utilizzi codice PHP scritto da noi.<\/p>\n<p>E&#8217;utile, quindi, <strong>disabilitare l&#8217;indicizzazione delle cartelle<\/strong>, ed evitare di avere troppe pagine con nomi &#8220;riconoscibili&#8221;, del tipo <strong>login.php<\/strong>, per rendere pi\u00f9 difficile la vita di questi dannati bot!<\/p>\n<p>Tuttavia, nell&#8217;ultimo anno, dopo aver avuto diversi problemi di rallentamento, ho approfondito ulteriormente la questione, per cercare di <strong>eliminare tutti i punti deboli<\/strong>, precludendo l&#8217;accesso a <strong>bot e visitatori &#8220;malevoli&#8221;<\/strong> che <strong>NON hanno interesse a visitare il sito<\/strong>, ma solo a consumare risorse ed, eventualmente, riuscire ad editarne il contenuto.<\/p>\n<p>Analizzeremo il contenuto di due file molto importanti, che vanno piazzati nella root del nostro sito, e ci permettono di restringere l&#8217;accesso ad alcuni o tutti i file, da parte di alcuni indirizzi IP o bot.<\/p>\n<p>Tali file si chiamano <strong>robots.txt<\/strong> e <strong>.htaccess<\/strong>.<!--more--><\/p>\n<h1><span style=\"color: #ff0000;\">Cosa inserire nel file .htaccess<\/span><\/h1>\n<ul>\n<li><strong>Blocca tutto il traffico proveniente dalla Cina<\/strong><\/li>\n<\/ul>\n<p>Non so voi ma, nel mio caso, il traffico &#8220;reale&#8221; proveniente dalla Cina \u00e8 scarso, se non scarsissimo, ed \u00e8 in gran parte comporto da botnet che si collegano costantemente al mio sito, e ne effettuano continuamente l&#8217;indicizzazione, alla ricerca di eventuali punti deboli. Tale caratteristica, purtroppo, \u00e8 condivisa con l&#8217;Ucraina e la Russia.<\/p>\n<p>Per ovviare a ci\u00f2, utilizzeremo un metodo &#8220;brutale&#8221;: bloccheremo l&#8217;accesso all&#8217;intero gigante asiatico.<\/p>\n<p>Andiamo su <a title=\"Blocca IP range cinese\" href=\"https:\/\/www.countryipblocks.net\/country_selection.php\" target=\"_blank\">countryipblocks.net<\/a>, spuntiamo &#8220;CHINA-&gt;.htaccess deny&#8221; e clicchiamo su &#8220;Create ACL&#8221;, e copiamo il risultato in cima al nostro file .htaccess<\/p>\n<ul>\n<li><strong>Scoraggia gli hacker indonesiani islamici di zone-h<\/strong><\/li>\n<\/ul>\n<p>Tali personcine, da anni, scandagliano la rete, ed effettuano migliaia di accessi al vostro sito, tentando di caricare un file di prova &#8220;nyet.gif&#8221; sul vostro spazio FTP.<br \/>\nIn caso di successo, hanno la prova che il vostro sito \u00e8 un target ideale, e proseguono con l&#8217;hack vero e proprio.<\/p>\n<p>Per evitare che questi subumani sprechino anche una singola &#8220;goccia&#8221; delle risorse del vostro server, blocchiamo a priori l&#8217;accesso al generico file nyet.gif, inserendo, in .htaccess:<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\">#nyet.gif islamic script kiddies\r\n&lt;Files \"nyet.gif\"&gt;\r\nOrder Allow,Deny\r\nDeny from all\r\n&lt;\/Files&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<ul>\n<li><strong>Fornisci sempre il file robots.txt ed una pagina di errore, anche se blocchi un IP\/bot<\/strong><\/li>\n<\/ul>\n<p>Se non si consente esplicitamente l&#8217;accesso alla pagina di &#8220;ACCESSO NEGATO&#8221; (HTTP error 403), c&#8217;\u00e8 il rischio di creare un loop, col bot di turno che cerca continuamente di accedere, senza che riesca a &#8220;capire&#8221; perch\u00e8 non vi riesce.<br \/>\nAllo stesso modo, conviene <strong>sempre<\/strong> fornire il file robots.txt, nel caso quel bot che avete bannato decidesse finalmente di rispiettarne le direttive. <span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\">#avoid redirect loop when blocking bots - always delivery robots.txt, http403 and 410 pages\r\n&lt;FilesMatch \"(^403\\.shtml$|^410\\.shtml$|^robots\\.txt$)\"&gt;\r\nOrder Allow,Deny\r\nAllow from all\r\n&lt;\/FilesMatch&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<ul>\n<li><strong>Blocca l&#8217;accesso a pagine del tipo login.php o wp-login.php<\/strong><\/li>\n<\/ul>\n<p>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 &#8220;admin&#8221; o &#8220;password&#8221;. \ud83d\ude42<\/p>\n<p>A tale scopo, conviene rinominare tutte le vostre pagine del tipo &#8220;login.php&#8221;, utilizzare il plugin <a title=\"Rename wp-login.php\" href=\"https:\/\/wordpress.org\/plugins\/rename-wp-login\/\" target=\"_blank\">Rename wp-login.php per WordPress<\/a>, ed inserire, nel file .htaccess:<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\">#blocca accessi malevoli a login e wp-login nella root e nei subfolder\r\n&lt;FilesMatch \"(^wp-login\\.php$|^login\\.php$|^login\\.aspx$)\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0 Order allow,deny\r\n\u00a0\u00a0\u00a0\u00a0 Deny from all\r\n&lt;\/FilesMatch&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<ul>\n<li><strong>Blocca l&#8217;accesso ai bot malevoli<\/strong><\/li>\n<\/ul>\n<p>Sono tanti, sono fastidiosi, non creano alcun valore aggiunto e, purtroppo, continuano a cambiare nome negli anni: sono i bot malevoli che \u00e8 bene escludere, per un milione di valide ragioni. \ud83d\ude42<br \/>\nInoltre, cos\u00ec facendo, andiamo a bloccare anche curl e wget, evitando che qualcuno effettui una copia 1:1 del vostro sito.<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\">RewriteEngine on\r\n#inherit from root htaccess and append at last, necessary in root too\r\nRewriteOptions inherit<\/pre>\n<pre class=\"brush:text\">#block bad bots\r\nRewriteCond %{HTTP_USER_AGENT} ^$ [OR]\r\nRewriteCond %{HTTP_USER_AGENT} 360Spider [OR]\r\nRewriteCond %{HTTP_USER_AGENT} A(?:ccess|ppid|hrefsBot) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} C(?:apture|lient|opy|rawl|url) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} D(?:ata|evSoft|o(?:main|wnload)) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} E(?:ngine|zooms) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} filter [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} genieo [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} Ja(?:karta|va) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} Li(?:brary|nk|bww) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} MJ12bot [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} nutch [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} Pr(?:oxy|ublish) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} robot [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} s(?:craper|istrix|pider) [NC,OR]\r\nRewriteCond %{HTTP_USER_AGENT} W(?:get|(?:in(32|Http))) [NC]\r\nRewriteRule .? - [F]<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<ul>\n<li><strong>Limita i tentativi di inserimento spam nei commenti e nei guestbook<\/strong><\/li>\n<\/ul>\n<p>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. \ud83d\ude42<\/p>\n<p>Tali tentativi hanno in comune il fatto di attaccare, alla fine dell&#8217;URL del guestbook di turno, dei codici del tipo <span class=\"no_translate\"><em>++++++++result+chosen+nickname+&#8221;nomeacaso&#8221;;+sent<\/em><\/span><\/p>\n<pre class=\"brush:text\"># Limita tentativi di hacking del tipo: +result:+chosen+nickname+\"acqqicny06\";+sent; o PLM=0\r\nRewriteRule ^(.*)result:(.*)$ - [F,NC]\r\nRewriteRule ^(.*)\\+\\[PLM\\=0\\]\\[N]\\+GET(.*)$ - [F]\r\nRewriteRule ^(.*)\\+\\[PLM\\=0\\]\\+GET(.*)$ - [F]<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<h1><span style=\"color: #ff0000;\">Cosa inserire nel file robots.txt<\/span><\/h1>\n<ul>\n<li><strong>Impedisci il crawling di cartelle inutili o pericolose<\/strong><\/li>\n<\/ul>\n<p>E&#8217;inutile che googlebot, bingbot o altri crawler vadano a &#8220;scavare&#8221; in cartelle che non contengono alcun contenuto utile al visitatore. Pensiamo alle cartelle contenenti plugin, script vari&#8230;<\/p>\n<p>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&#8217;utente (v. la cartella contenente gli script per il minify, o lightbox).<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\">User-Agent: *\r\nAllow: \/\r\nDisallow: \/cgi-bin\/\r\nDisallow: \/min\/\r\nDisallow: \/lightbox\/\r\nDisallow: \/gallery\/addfav.php?*\r\nDisallow: \/gallery\/login.php?*\r\nDisallow: \/gallery\/thumbnails.php?album=*favpics*\r\nDisallow: \/gallery\/thumbnails.php?album=*lastup*\r\nDisallow: \/gallery\/thumbnails.php?album=*lastcom*\r\nDisallow: \/gallery\/thumbnails.php?album=*topn*\r\nDisallow: \/gallery\/thumbnails.php?album=*toprated*\r\nDisallow: \/gallery\/thumbnails.php?album=*search*\r\nDisallow: \/gallery\/thumbnails.php?album=*slideshow\r\nDisallow: \/blog\/wp-admin\/\r\nDisallow: \/blog\/wp-includes\/\r\nDisallow: \/blog\/wp-content\/plugins\/\r\nDisallow: \/blog\/wp-content\/cache\/\r\nDisallow: \/blog\/wp-content\/themes\/\r\nDisallow: \/blog\/wp-content\/languages\/\r\nDisallow: \/blog\/wp-content\/wptouch-data\/\r\nDisallow: \/blog\/trackback\/\r\nDisallow: \/blog\/*\/trackback\/\r\nDisallow: \/blog\/feed\/\r\nDisallow: \/blog\/*\/feed\/\r\nDisallow: \/blog\/wp-login.php\r\nDisallow: \/blog\/wp-signup.php<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<ul>\n<li><strong>Blocca i pochi bot &#8220;inutili&#8221; che rispettano il file robots.txt<\/strong><\/li>\n<\/ul>\n<p>Molti bot &#8220;malevoli&#8221; 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.<\/p>\n<p>Per fortuna, alcuni di questi, sono pi\u00f9 &#8220;corretti&#8221;, e necessitano di una semplice regola nel file robots.txt.<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:text\"># Block due to SEO or pseudo-SEO which is not useful to me.\r\nUser-agent: AhrefsBot\r\nDisallow: \/\r\nUser-agent: Ezooms\r\nDisallow: \/\r\nUser-agent: Exabot\r\nDisallow: \/\r\nUser-agent: MJ12bot\r\nDisallow: \/\r\nUser-agent: CCBot\r\nDisallow: \/\r\nUser-agent: meanpathbot\r\nDisallow: \/\r\nUser-agent: SearchmetricsBot\r\nDisallow: \/\r\nUser-agent: Baiduspider\r\nUser-agent: Baiduspider-video\r\nUser-agent: Baiduspider-image \r\nDisallow: \/\r\nUser-agent: Sogou\r\nDisallow: \/<\/pre>\n<p><span class=\"no_translate\"><\/span><\/p>\n<p>Grazie a queste regolette, trovate qua e l\u00e0 su stackexchange, webmasterworld, google groups o l&#8217;esperienza personale, ho escluso la stragrande maggioranza del traffico inutile e potenzialmente dannoso.<\/p>\n<p>E&#8217;tutto! Fatemi sapere se ne avete tratto giovamento, come ne ho tratto io. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nel precedente articolo, abbiamo visto che esistono bot malevoli, il cui scopo \u00e8 scandagliare la rete, alla ricerca dei punti deboli del nostro sito.[&#8230;]Nell&#8217;ultimo anno, dopo aver avuto problemi di rallentamento, ho approfondito la questione, per cercare di eliminare tutti i punti deboli[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[173,46,147,214,9,8,162,116],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/2113"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=2113"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/2113\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=2113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=2113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=2113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}