Top 5 bezpečnostních mezer v instalacích WordPress
Vaše instalace systému WordPress může být tak bezpečná, jak si ji sami nastavíte. Zaměřte se na pět klíčových aspektů, které nejvíce ovlivňují její bezpečnost.
Obavy o zabezpečení WordPressu nejsou ničím novým.
Pokud uvažujete o nasazení CMS a zeptáte se na radu odborníka, který WordPress nepoužívá, s velkou pravděpodobností uslyšíte o problémech se zabezpečením. Má to znamenat, že by všichni měli WordPress opustit a přejít na generátory statických stránek nebo systémy bez správy hlaviček?
Odpověď není jednoznačná, realita má mnoho rovin.
Je WordPress skutečně tak nezabezpečený?
Podívejme se na několik obrovských webů, které na WordPressu běží:
- TechCrunch
- New Yorker
- BBC America
- Bloomberg
- MTV News
- PlayStation Blog
Proč tyto společnosti, s rozsáhlými finančními zdroji a velkými týmy, nepřejdou na jiné řešení? Pokud si myslíte, že důvodem je zastaralý kód, mýlíte se. Pro tyto značky je bezpečnost dat a jejich reputace klíčová, mnohem důležitější než migrace, která by je stála (odhadem) méně než 200 000 dolarů.
Jistě, jejich odborníci vědí, co dělají, a nezaznamenávají ve WordPressu žádné zásadní, neřešitelné problémy s bezpečností.
Mám tu výhodu, že spravuji web na WordPressu s 3,5-4 miliony návštěv měsíčně. Za posledních osm let jsme nezaznamenali *žádné* bezpečnostní narušení!
Je tedy WordPress bezpečný?
Omlouvám se, pokud se zdá, že se vyhýbám přímé odpovědi, ale zde je moje stanovisko:
Situace není tak jednoduchá. Pro spolehlivou odpověď musíme si uvědomit, že WordPress (nebo jakýkoli hotový CMS) není jako skříň, kterou jednou umístíte a už se o ni nemusíte starat.
Je to komplexní systém s mnoha závislostmi:
- PHP, jazyk, ve kterém je napsán
- Veřejně dostupný server, kde je umístěn
- Webový server pro obsluhu návštěvníků (Apache, Nginx atd.)
- Použitá databáze (MySQL/MariaDB)
- Šablony (balíčky souborů PHP, CSS a JS)
- Pluginy (balíčky souborů PHP, CSS a JS)
- A mnoho dalších prvků, v závislosti na funkčnosti vašeho webu
Jinak řečeno, jakékoli narušení bezpečnosti v těchto oblastech bude považováno za narušení bezpečnosti WordPressu.
Pokud bylo heslo root serveru admin123 a bylo prolomeno, je to chyba WordPressu?
Pokud má verze PHP bezpečnostní chybu, nebo pokud nový plugin, který jste nainstalovali, obsahuje zjevný bezpečnostní problém, pak se jedná o selhání zabezpečení WordPressu. Závěr: Selhání subsystému je považováno za selhání bezpečnosti WordPressu.
Zároveň vás chci ujistit, že PHP, MySQL a Apache nejsou ze své podstaty nezabezpečené. Každý software má svá slabá místa, jejichž počet je u open-source systémů obzvlášť velký (protože je kód k dispozici komukoli ke kontrole a analýze).
Řekl někdo „bezpečné“? 😛
Z této úvahy si odnášíme následující:
Nic není samo o sobě bezpečné nebo nezabezpečené. Bezpečnost je dána spojením různých komponent, které tvoří řetězec a ten je vždy tak silný jako jeho nejslabší článek. Dřívější označení WordPressu jako "nezabezpečeného" vyplývalo z kombinace starých verzí PHP, sdíleného hostingu a instalace pluginů/šablon z nedůvěryhodných zdrojů.
Řada běžných opomenutí však stále činí instalaci WordPressu zranitelnou vůči těm, kteří vědí, jak je využít. O tom je tento článek. Bez dalších řečí (a zbytečných okolků) pojďme na to.
Hlavní bezpečnostní mezery WordPressu, které mohou hackeři zneužít
Předpona databázových tabulek WordPressu
Slavná 5minutová instalace je skvělá věc, ale jako všechny průvodce instalací nás nechává zlenivět a nechává vše ve výchozím nastavení.

To znamená, že výchozí předpona vašich tabulek WordPress je `wp_`, což má za následek názvy tabulek, které jsou snadno uhodnutelné:
- `wp_users`
- `wp_options`
- `wp_posts`
Nyní si představte útok známý jako SQL Injection, kdy jsou škodlivé databázové dotazy chytře vloženy a spuštěny uvnitř WordPressu (upozorňujeme, že se v žádném případě nejedná o útok specifický pro WordPress/PHP).
I když má WordPress vestavěné mechanismy pro obranu proti těmto útokům, nikdy nemůžete mít jistotu, že se to nestane.
Pokud se útočníkovi nějakým způsobem podaří spustit dotaz jako `DROP TABLE wp_users; DROP TABLE wp_posts;`, všechny vaše účty, profily a příspěvky budou okamžitě smazány a bez možnosti obnovení (pokud nemáte funkční systém zálohování. I tak ale přijdete o data od poslední zálohy).
Pouhá změna předpony během instalace je velkým bezpečnostním opatřením, které vás nic nestojí.
Doporučuje se použít náhodnou předponu, například `sdg21g34_`, protože je nesmyslná a těžko uhodnutelná (čím delší předpona, tím lépe). Dobré na tom je, že si tuto předponu nemusíte pamatovat. WordPress si ji uloží a už se o ni nikdy nemusíte starat (stejně jako se nemusíte starat o výchozí předponu `wp_`!).
Výchozí adresa pro přihlášení
Jak poznáte, že web běží na WordPressu? Jedním ze znaků je, že když přidáte "/wp-login.php" k adrese webu, zobrazí se vám přihlašovací stránka WordPressu.
Podívejme se například na můj web (http://ankushthakur.com). Je postavený na WordPressu? Zkuste přidat přihlašovací část. Pokud se vám nechce, tady je výsledek:

¯_(ツ)_/¯
WordPress, že?
Jakmile útočník zjistí, že web běží na WordPressu, může začít používat různé útoky. To není dobré!
Řešením je změnit výchozí adresu pro přihlášení a sdílet ji jen s těmi, kterým důvěřujete.
Například tento web také běží na WordPressu, ale když navštívíte http://etechblog.cz.com/wp-login.php, čeká vás zklamání. Přihlašovací URL je skryté a zná ho jen administrátor.
Změna přihlašovací URL není nic složitého. Použijte tento plugin.
Gratuluji, přidali jste další vrstvu zabezpečení, která znesnadňuje útoky hrubou silou.
Verze PHP a webového serveru
Už jsme si řekli, že každý kus softwaru, který kdy byl napsán, je plný chyb čekajících na zneužití.
To platí i pro PHP.
I když používáte nejnovější verzi PHP, nemůžete mít jistotu, jaké zranitelnosti existují a mohou být odhaleny ze dne na den. Řešením je skrýt specifické hlavičky, které váš server odesílá (nikdy jste o hlavičkách neslyšeli? Přečtěte si tento článek!), když se k němu připojí prohlížeč: `x-powered-by`.
Takhle to vypadá, když se podíváte na vývojářské nástroje vašeho prohlížeče:

Jak vidíte, web nám sděluje, že běží na Apache 2.4 a používá PHP verze 5.4.16.
To je hodně informací, které zbytečně poskytujeme a které útočníkovi pomáhají zúžit výběr nástrojů.
Tyto (a podobné) hlavičky byste měli skrýt.
Naštěstí to lze udělat rychle, ale bohužel to vyžaduje určité technické znalosti, protože se budete muset ponořit do vnitřností systému a manipulovat s důležitými soubory. Proto doporučuji požádat o pomoc poskytovatele hostingu. Záleží samozřejmě na nastavení vašeho hostingu, jestli to umožňuje.
Pokud to nefunguje, možná je čas změnit poskytovatele hostingu nebo přejít na VPS a najmout si odborníka na bezpečnost a správu.
Stojí to za to? To už musíte posoudit sami. 🙂
A pokud se chcete zbavit bezpečnostních hlaviček, tady je vaše řešení!
Počet pokusů o přihlášení
Jedním z nejstarších triků v kuchařce hackerů je takzvaný slovníkový útok.
Jde o to, že zkoušíte obrovské množství (miliony, pokud možno) kombinací pro heslo, dokud to jedna z nich nezvládne. Vzhledem k tomu, jak rychle počítače pracují, tento přístup může přinést výsledky v rozumném čase.
Jednou z běžných (a velmi účinných) obran je přidat zpoždění před zobrazením chybové hlášky. To nutí útočníka čekat, což znamená, že pokud se jedná o skript spuštěný hackerem, jeho dokončení bude trvat příliš dlouho. To je důvod, proč váš počítač nebo aplikace chvíli čekají, než vám ukážou chybovou zprávu: "Špatné heslo!".
Zkrátka, měli byste omezit počet pokusů o přihlášení k vašemu webu WordPress.
Po určitém počtu neúspěšných pokusů (řekněme pět) by měl být účet uzamčen a jeho odemknutí by mělo být možné jen prostřednictvím e-mailu majitele účtu.

Naštěstí to není těžké, pokud si nainstalujete šikovný plugin.
HTTP vs. HTTPS
Certifikát SSL, kterým vás váš prodejce otravoval, je důležitější, než si možná myslíte.
Není to jen marketingový nástroj, který zobrazuje zelenou ikonu zámku s nápisem "Zabezpečené"; instalace certifikátu SSL a vynucení všech URL, aby běžely na "https", změní váš web z otevřené knihy na záhadný svitek.

Pokud nerozumíte tomu, proč je to důležité, přečtěte si něco o útoku Man-in-the-middle.
Dalším způsobem, jak odchytávat komunikaci z vašeho počítače na server, je packet sniffing, což je pasivní sběr dat. Útočník se nemusí ani umístit uprostřed.
U webů, které běží přes prosté "HTTP", se vaše hesla a čísla kreditních karet zobrazí útočníkovi jako čistý text.
Zdroj: comparitech.com
Děsivé, že? Velmi!
Po instalaci certifikátu SSL a přesměrování všech URL na "https" se tyto citlivé informace zobrazí jako nesmysl, který dokáže rozšifrovat pouze server. Takže, nešetřete pár korun ročně. 🙂
Závěr
Budete mít těchto pět věcí pod kontrolou a váš web bude bezpečný?
Ne tak docela. Jak píší autoři článků o bezpečnosti, nikdy nemůžete být 100% v bezpečí, ale s trochou snahy můžete eliminovat velké množství potenciálních problémů. Můžete také zvážit používání SUCURI cloud WAF pro komplexní ochranu vašich stránek.