Zabezpečení WordPress webu

Napadení webu

Toto není vyčerpávající návod, jak si web zabezpečit vlastními silami, i pokud nejste programátoři. Chcete-li svůj WordPress web podobně zabezpečit, kontaktujte mě.

WordPress je úžasný redakční systém, a používá jej celý svět. To má ale také jednu nevýhodu – webové stránky, které pohání, jsou často cílem automatizovaných útoků různých robotů. To proto, že jich je tolik, a je tak větší šance, že některá z nich bude hůře zabezpečená. Roboti se snaží uhodnout vaše přihlašovací jméno a heslo, „jakože“ se přihlásit do administrace, a pak do webových stránek vložit škodlivý kód. Nesnaží se vás tedy nijak okrást, ale váš web využijí k dalšímu šíření neplechy, a vy to ani nemusíte vědět.

V tomto článku vám chci popsat, jak své weby chráním já.

1. Plugin Limit Login Attempts

Toto rozšíření WordPressu doslova „omezuje přihlašovací pokusy“, protože WordPress samotný nijak nehlídá, jestli někdo nezkouší heslo za heslem. Po instalaci pluginu máte ve výchozím nastavení na přihlášení do administrace pouze 4 pokusy. Pokud se 4x spletete, budete na dvacet minut zablokován. Nebo kdokoli jiný, kdo se o to pokusí. A proč se držet při zemi? Já se nebojím si nastavit dva pokusy a dobu blokování na 9999 hodin 🙂

Plugin také umí poslat e-mail, pokud někoho zablokoval. Jenže když ráno vstanete, a v poště najdete 50 emailů o padesáti pokusech o vloupání se do vaší administrace, tak vám to na klidu nepřidá.

2. Omezení přístupu na přihlašovací stránku přes .htaccess a .htpasswd

.htaccess soubor je speciální soubor s informacemi pro webový server. Umí toho hodně, ale já chtěl jednu věc – zaheslovat přístup k přihlašovací stránce. Roboti jsou naprogramování, aby se pokusili přihlásit do WordPressu – jenže když jim do cesty vložíte ještě jinou – klidně úplně triviální – přihlašovací metodu, tak budou nahraní.

Do .htaccess souboru je tedy třeba umístit přibližně následující:

<Files wp-login.php>
AuthUserFile …/www/.htpasswd
AuthName „FCUKOFF“
AuthType Basic
require user login
</Files>

Od toho okamžiku po mně web vyžadoval jednoduché heslo ještě před tím, než jsem mohl zadat reálné heslo do administrace.

Jenže e-maily se zablokovanými pokusy o přihlášení chodily dále … že by si roboti poradili s tímto přihlášením, kde jsem si nastavil neškodné heslo „login“?

3. Omezení přístupu na přihlašovací stránku na IP adresy

A proč nechávat vrátka otevřená, když mohu přístup na přihlašovací stránku povolit pouze z mých domácích IP adres? A tak jsem do .htaccess přidal ještě následující:

<Files wp-login.php>
order deny,allow
allow from 12.34.56.78
allow from 98.76.54.32
deny from all
</Files>

To už žádný robot nemůže překonat, z mé IP adresy na web přijít nemůže. Jenže ouha! I tak mi dál chodily e-maily o zablokovaných pokusech. To už jsem začal tušit zradu. Přihlašovací stránku už mám zabezpečenou lépe než Česká národní banka svoje účty, a přesto to vše roboti překonají, a snaží se přihlásit přímo do administrace. Existuje jediná možnost – do webu je možné se přihlásit i „jinudy“.

A vskutku. WordPress totiž obsahuje ještě XML-RPC rozhraní pro vzdálenou komunikaci, díky kterému můžete svůj web spravovat například i z chytrého telefonu. Ale i ten se musí nejdříve přihlásit, aby váš web věděl, že jste to opravdu vy, oprávněný uživatel. A tuto přihlašovací cestičku roboti zkoušejí také.

Řešení je jednoduché…

4. Zablokování XML-RPC rozhraní

Pokud nepotřebujete web spravovat z mobilu, pak stačí do .htaccess přidat následující řádek:

Redirect 403 /xmlrpc.php

Tím úplně vypnete možnost vzdálené komunikace, a tedy i poslední místo, kde se roboti mohou pokoušet přihlásit do vašeho webu.

Od okamžiku, kdy jsem nasadil všechna výše zmíněná zabezpečení, mi už nepřišel ani jeden e-mail ohlašující zablokovaného robota. Prostě a jednoduše to již nemají kudy zkoušet. A to je dobře.

Napsal Marek Klusák, programátor a webdesigner. Kontakt