Blocheaza boti si crawleri maliciosi

cel.ro

Adeseori siteurile web, indiferent de felul in care sunt create, devin tinta unor boti si crawleri web maliciosi care fie au rolul de a identifica scripturile folosite pentru ca astfel atacatorul sa stie ce vulnerabilitati posibile poate avea siteul, fie pentru a colecta informatii precum adrese de email de pe siteurile accesate.

Pentru a preveni accesul acestor boti si crawleri in cazul in care rulati siteul pe un server web de Apache aveti posibilitatea de a adauga cateva linii de cod in .htaccess dupa cum urmeaza:

# INCEPUT blocare boti & crawleri
BrowserMatchNoCase .*wget.* bad_bot
BrowserMatchNoCase .*curl.* bad_bot
Order Deny,Allow
Deny from env=bad_bot
# SFARSIT blocare boti & crawleri

In exemplul de mai sus am folosit doua stringuri de identificare diferite ‘wget‘ & ‘curl‘ care o sa blocheze toate solicitarile de pe un user-agent ce foloseste aceste stringuri.

Am pus stringurile intre doua wildcarduri de expresii regulare pentru a ma asigura ca orice nu or sa existe exceptii si ca Apache va returna cod 403 (interzis) oricarui user-agent ce contine ‘wget‘ sau ‘curl‘.

Pentru a identifica astfel de crawleri sau boti, in cazul in care folositi Webalizer puteti sa vizualizati statisticile pe luna in curs (sau pe lunile trecute) si sa va uitati peste sectiunea care prezinta un top 15 al user-agents ca in exemplul de mai jos:

# Hits User Agent
1 10191 56.08% Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)
2 3355 18.46% Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
3 1014 5.58% curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
4 275 1.51% Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
5 136 0.75% Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
6 126 0.69% Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safar
7 111 0.61% Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
8 108 0.59% Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
9 77 0.42% Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
10 74 0.41% Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
11 72 0.40% Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
12 69 0.38% Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
13 68 0.37% Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
14 64 0.35% Mozilla/5.0 (compatible; aiHitBot/2.9; +https://www.aihitdata.com/about)
15 58 0.32% Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Din lista de mai sus exista o serie de user-agents care sunt evident suspiciosi:

3 1014 5.58% curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
13 68 0.37% Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
14 64 0.35% Mozilla/5.0 (compatible; aiHitBot/2.9; +https://www.aihitdata.com/about)

Pentru numarul #3 am dat deja exemplu mai sus si codul in cauza l-ar bloca, insa pe ceilalti nu. Astfel, la codul dat drept exemplu mai sus se pot adauga urmatoarele linii ce pot bloca si botii de pe pozitia #13, respectiv #14:

BrowserMatchNoCase .*BaiduSpider.* bad_bot
BrowserMatchNoCase .*aiHitBot.* bad_bot

Desi Baidu reprezinta de fapt crawlerul unui motor de cautare chinez, la fel ca si Yandex (crawlerul motorului de cautare rus), este un crawler destul de agresiv care deschide conexiuni excesive si consuma foarte multe resurse fara ca impactul lui pentru imbunatatirea volumului de trafic sa fie vizibil.

La fel ca si in cazul user-agentului gol pentru a redirectiona aceste restrictii catre o pagina HTML goala ce evita utilizarea inutila de resurse pe server puteti adauga de asemenea urmatorul cod dupa ce ati creat un fisier 403.html cu mesajul vostru:

 ErrorDocument 403 403.html
Pentru a usura munca multora am sa compilez o lista de user-agenti ce nu ar trebui sa aiba acces la site din diverse motive si am s-o public aici pe site.
cel.ro
Postarea de comentarii pe acest site reprezinta acceptul dumneavoastra in ceea ce priveste stocarea si procesarea datelor furnizate prin formularul disponibil in acest sens, in conformitate cu politica noastra de confidentialitate.