Jak zabezpieczyć stronę przed: spamem, botami, pająkami, clawlerami

Jako, że strony uruchamiam na CMS WordPress to z tej perspektywy będę pisał poniższy artykuł. Choć oczywiście poniższe punkty maja zastosowanie dla każdej strony www bo chodzi w głównej mierze o wstawienie odpowiednich reguł w pliku .htaccess

1. Podstawowe zabezpieczania

  1. punktem byłoby pamiętanie o: korzystanie z zaufanych źródeł, regularnej aktualizacji, kopii bezpieczeństwa itp. (o których tutaj nie będę pisał)
  2. punktem byłoby stosowanie mocnych haseł, odpowiednie uprawnienia plików itp o tym pisałem w tym artykule http://mojeprogramy.com/zabezpieczenie-wordpress
  3. punktem byłoby rozpoznanie wtyczek podnoszące bezpieczeństwo strony na WP i poszukanie kolejnych uzupełniających rozwiązań które by uszczelniły i kontrolowały WordPressa (to co się na nim dzieje – kto,kiedy i jakie modyfikował pliki itd.) Tu polecam http://mojeprogramy.com/blokwanie-zakresow-ip
  4. dodatkowe regułki „ubogacające” .htacces (w przygotowaniu)
  5. i przechodzimy do właściwego tematu artykułu: monitorowanie i blokowanie IP i wszelkich botów

Zatem jak bronić się przed: spamem, botami, pająkami, clawlerami i niepożądanym działaniami które zużywają zasoby naszego serwera po przez niepotrzebnego generowanie ruchu na naszej stronie, narażając nas na np. odkrycie słabych punktów naszego serwera a w konsekwencji na spam lub skuteczny atak i zawirusowanie naszej strony?

Najlepszym rozwiązaniem byłoby dać dostęp do przeglądania strony www tylko znanym i zaufanym użytkownikom:

    • z wybranych tylko krajów (np. PL, UK, USA, DE, NL) – tu sam wybrałem, że puszcze ruch z kilku krajów tylko i tak przygotowaną listę zastosuje dal wszystkich swoich stron http://mojeprogramy.com/wp-content/uploads/2016/08/wybrane-kraje-ip.png
    • użytkowników którzy przedstawiają się jako HTTP_USER_AGENT = (np. Mozilla, Chrom, Opera, Safari)
    • botom (np. Google, Bing)
    • spiderom (np. Majestic, Ahrefs)
    • smartfonom (tu akurat chyba wszystkim)

Jednak nie da się tego zrobić gdyż nie znamy wszystkich możliwych nagłówków HTTP_USER_AGENT.
Dlatego trzeba samemu monitorować ruch na naszej stronie a więc stworzyć listy zakresów IP (spamowych lub najczęściej atakujących) + listę BAD_BOTÓW w oparciu o tak jak wspomniałem własne zasoby i aktywne listy w sieci.

2. Blokowanie IP

  1. zebrane z 15 różnych stron uruchomionych na WordPress-ie pisałem o tym w http://mojeprogramy.com/htaccess-lista
  2. lista techformatora http://techformator.pl/plik-htaccess-z-lista-abusywnych-podsieci/
  3. spamowe IP (zebrane z sieci w różnych – wypowiedzi na forach z lat np. 2009-2011; nie sprowadzane!!!) http://mojeprogramy.com/download/spam-ip.txt
  4. custom blocks – zebrane z sieci http://mojeprogramy.com/download/custom-blocks.txt
  5. blokowanie ruchu z wszystkich krajów oprócz np. Polski, UK, USA https://www.ip2location.com/free/visitor-blocker – tu dużo krajów i zakresów do pobrania

3. Boty – Robot, crawler, spider

  1. najpopularniejsze obecnie zebrane ręcznie ma własnych stronach (AWstats, Logi serwera, Analytics) http://mojeprogramy.com/download/all-bots.txt
    RewriteCond %{HTTP_USER_AGENT} .*BLEXBot.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*BaiDuSpider.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*CFNetwork.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*Exabot.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*InternetSeer.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*MegaIndex.ru.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*Nekstbot.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*Powermarks.* [OR]
  2. zawierające „bot-„, „clawler” w samej nazwie
    RewriteCond %{HTTP_USER_AGENT} .*bot/.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*bot-.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*spider.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*robot.* [OR]
    RewriteCond %{HTTP_USER_AGENT} .*crawl.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [OR]
    RewriteCond %{HTTP_USER_AGENT} ^web(zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) [OR]
  3. blokada botów z pustym User-Agent

RewriteCond %{HTTP_REFERER} ^-?$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^-?$ [OR]

 

Pomoc w htaccess:

^  oznacza że może być w ciągu znaków ale nie musi np. RewriteCond %{HTTP_USER_AGENT} ^Zeus
[NC] –  nieważna jest wielkość liter np. RewriteCond %{HTTP_USER_AGENT} .*robot.* [NC,OR]
.*ciagznakwo.* – czyli ciagznakow moze być gdzies w środku np. RewriteCond %{HTTP_USER_AGENT} .*bot/.* [OR]

3. Abuse HTTP Referrer Blocking

Czyli nie blokujemy wyświetlanie zawartości ze stron a’la <frame>-owych

RewriteCond %{HTTP_REFERER} 100dollars-seo.com\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherbadsite\.com
RewriteCond %{HTTP_REFERER} badsite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} best-seo-offer\.com [NC,OR]
RewriteCond %{HTTP_REFERER} buttons-for-your-website\.com [NC,OR]
RewriteCond %{HTTP_REFERER} free-social-buttions\.com [NC,OR]
RewriteCond %{HTTP_REFERER} semalt\.com [NC,OR]
RewriteCond %{HTTP_REFERER} todaperfeita\.com [NC,OR]
RewriteCond %{HTTP_REFERER} www1.free-social-buttons\.com [NC,OR]
RewriteCond %{HTTP_REFERER} www2.free-social-buttons\.com [NC,OR]
RewriteCond %{HTTP_REFERER} www3.free-social-buttons\.com [NC,OR]
RewriteCond %{HTTP_REFERER} www4.free-social-buttons\.com
RewriteCond %{HTTP_REFERER} www4.free-social-buttons\.com [NC]
RewriteRule ^.* – [F,L]

 

Większe przydatne listy:
http://www.botopedia.org – WIKI BOT
http://www.iplists.com – lista IP Google, Yahoo
http://www.projecthoneypot.org/list_of_ips.php – aktualna SPAM lista
http://www.user-agents.org – jeszcze więcej USER_AGENTS
http://www.useragentstring.com/pages/useragentstring.php – jeszcze pare CRAWLERS
http://www.clockwatchers.com/htaccess_dir.html – HTACCESS
http://www.crawltrack.net/crawlprotect/download.php – soft
https://sblam.com/czarnalista.html – aktualna SPAM lista PL

 

PS. Postaram się w najbliższym czasie przetestować i stworzyć listę gotowych reguł do dodania w .htaccess a na razie wszytko pozostawiam wam 😉