Karlosův archívek plků alias blog :-)

Jak zabránit bruteforce útokům na administraci Joomla / Wordpress?

Poslední dobou se množí bruteforce pokusy o uhodnutí přístupového hesla do různých CMS (Joomla/Wordpress/Drupal/...). I když si myslíte, že útočnící nemohou uhodnout Vaše heslo, i tak může dojít k odstavení webu z důvodu přetížení, přinejlepším jen zbytečně plýtváte výkonem serveru a zpomalujete provoz. Příklad máme v jednom malém webu bytového družstva, na který chodí denně 10-20 lidí pro informace, tzn. to znamená do stovky požadavků denně. V měsící, kdy byl web nejvíce "napadán" to dělalo přes 400000 požadavků denně. Toto uvádím pro představu, že i malé nedůležité weby jsou útočníky běžně napadány. Útočnící jsou roboti a těm je jedno, jestli jde o blog, firemní prezentaci nebo eshop. Chránit je nutno jakýkoliv veřejně dostupný web! Jak na to?

Velmi jednoduše. Zakázat přístup do administrace všem, s výjimkou IP adresy/adres/rozsahu, ze které budeme web administrovat. Jako příklad uvádím IP adresu 123.123.123.123, dosaďte si místo ní vlastní. Ostatní adresy budou "odstřiženy" a nemohou ani zkoušet hesla, tudíž nemohou web přetěžovat.

Joomla:
do adresáře /administrator umístit soubor .htaccess s následujícím kódem (pokud tam již je, umístěte tento blok co nejvýše)

order deny,allow
deny from all
allow from 123.123.123.123

Pozn.: lze samozřejmě použít i rozsah IP  vynecháním posledních bloků IP adresy (např.: 123.123).  Další adresy přidáváte jako další řádky začínající "allow from".

Wordpress:
Do rootu webu umístěte soubor .htaccess (pokud tam již je, umístěte tento blok co nejvýše). Krom blokace wp-login.php doporučujeme blokovat i API pro externí aplikace xmlrpc.php.

<FilesMatch "wp-login\.php|xmlrpc\.php">
order deny,allow
deny from all
allow from 123.123.123.123
</FilesMatch>

Pro obě řešení existuje způsob, jak dynamicky přidávat povolené IP adresy do souboru .htaccess (bez přístupu FTP). Je to ale placené řešení na míru, pro případné informace si napište na email Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript..

A na závěr nejzákladnější bezpečnostní pravidla:

  • nikdy nepoužívejte jako login výchozí "admin" nebo podobný uhádnutelný
  • používejte vždy silné heslo (které nepůjde odhadnout, s délkou minimálně 8 znaků)
  • udržujte svůj web aktualizovaný včetně komponent třetích stran
  • u webů, kde není třeba registrovat další uživatele, zakažte tuto možnost (pro Joomla viz. předchozí článek)
  • veškeré formuláře ošetřete captcha, nebo podobnou technologií (pro Joomla viz. předchozí článek)
  • používejte vždy aktuální verze CMS/rozšíření/PHP (u PHP z výkonostních důvodů doporučuji verzi 7.x a vyšší)

Pro jakékoliv detailnější informace doporučujeme navšívit weby komunit - joomlaportal.cz / joomla.org / wordpress.cz / drupal.cz.