December 31, 2013

Zabezpečení WordPressu

Zde si popíšeme několik způsobů, jak lépe zabezpečit web používající WordPress. Nejprve však jedno upozornění - jedno z nejdůležitějších pravidel je udržovat WordPress aktualizovaný na poslední verzi, stejně tak i nainstalované pluginy (či témata vzhledu).

Před instalací


Nejprve je vhodné změnit prefix databáze v souboru wp-config-sample.php z původního prefixu:

$table_prefix = 'wp_';

na nějaký jiný:

$table_prefix = '1w27p_';

Po změně přejmenujte z wp-config-sample.php na wp-config.php a přejděte k normální instalaci.

Po instalaci


Po instalaci WordPress nastaví přihlašovací jméno na admin - toto je dobré změnit na jiné. Zároveň by heslo mělo být odolné - nejlepší je vygenerovat si silné heslo pomocí některých on-line generátorů hesel.

Zabezpeční adresáře wp-admin


Dále je vhodné omezit přístup do složky wp-admin dle IP adresy administrátora (či více administrátorů). Toho lze docílit vytvořením souboru .htaccess s tímto obsahem:

Deny from all
Allow from <Your IP>

Přístup do adresáře wp-admin je vhodné zabezpečit i přes heslo.

Zabezpečení souboru wp-config.php


Soubor wp-config.php lze zabezpečit dvěma způsoby - buď přesunout tento soubor o adresář výše (což na mnoha serverech znamená mimo dosah běžných návštěvníků) nebo přístup k němu můžete omezit v souboru .htaccess:

<files wp-config.php>
order allow,deny
deny from all
</files>

Zabezpečení adresářů wp-includes a wp-content


Poté je vhodné omezit i přístup k většině souborů ve složkách wp-includes a wp-content - přístup povolíme pouze k obrázkům, CSS a JavaScript souborům. Toto zařídíme přidáním následujících řádek do souboru .htaccess:

Order Allow, Deny, Deny from all
<Files ~ ".(css|jpe?g|png|gif|js)$">Allow from all</Files>

Jiný způsob (dle WordPress Security) a mnou doporučovaný je:

# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]

# BEGIN WordPress
...

Poznámka: Kód výše musí být mimo tagy # BEGIN WordPress and # END WordPress jinak může dojít k přepsání při změně nastavení systému WordPress.
Také je třeba si uvědomit, že toto nebude správně fungovat na Multisite, protože RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] zabrání souboru ms-files.php v generování obrázků. Pokud tento řádek přeskočíte, bude generování fungovat, ale znamená to i méně bezpečnosti.

Zakázání editování souborů


V případě, že více uživatelů s administrátorskými právy je také vhodné zakázat přímou editaci souborů z administrace, v tom případě přidejte na konec souboru wp-config.php tento řádek:

define('DISALLOW_FILE_EDIT', true);

Zakázání XMLRPC


Pokud k přístupu používáte pouze defaultní webové rozhraní je vhodné i zakázat XMLRPC - toto provedete přidáním následujícího řádku na konec souboru wp-config.php:

add_filter('xmlrpc_enabled', '__return_false');

Pluginy pro vyšší zabezpečení


Níže najdete několik užitečných pluginů, které zvýší zabezpečení vašeho webu. Osobně povětšinou používám kombinaci prvních dvou pluginů, ale pluginů s podobnou tématikou existuje daleko více.

Limit Login Attempts


Tento plugin umožní omezit počet přihlašovacích pokusů - to je užitečné pro bránění se tzv. brute force typu útoků.

Acunetix Secure WordPress


Plugin nabízí prozkoumání vaší instalace systému WordPress z hlediska zabezpečení. Po instalaci a aktivaci pluginu přejděte na stránku jeho nastavení a zaškrtněte následující možnosti:

  • Hide WordPress version for all users but administrators
  • Remove various meta tags generators from the blog's head tag for non-administrators.
  • Remove Really Simple Discovery meta tags from front-end
  • Remove Windows Live Writer meta tags from front-end
  • Disable error reporting (php + db) for all but administrators
  • Remove core update notifications from back-end for all but administrators
  • Remove plug-ins update notifications from back-end
  • Remove themes update notifications from back-end
  • Remove login error notifications from front-end
  • Hide admin notifications for non admins
  • Remove the version parameter from urls

Aktuální míru zabezpečení a případné chyby můžete prozkoumat v administraci na stránkách Secure WP -> Nástěnka (Dashboard) a Secure WP -> Scanner.

Wordfence Security


Wordfence Security je plugin nabízející lepší zabezpečení vašeho webu a zahrnuje firewall, aktuální statistiky provozu s geolokací a další vlastnosti.
U tohoto pluginu je velký rozdíl mezi neplacenou a placenou verzí - pokud si pořídíte placenou verzi je to dobrá náhrada za předchozí plugin v opačném případě je lepší použít Acunetix Secure WordPress.

Ostatní


Pokud chcete ještě lepší zabezpečení proti mailware a spamu můžete také použít placené služby jako jsou Akismet či Securi - obě jsou prověřené a nabízejí výbornou spolupráci se systémem WordPress.

Zdroje