Dodatečné zabezpečení WordPressu: oprávnění, wp-config a .htaccess
Aktualizace, silné heslo a dvoufázové ověření jsou základem bezpečného webu ve WordPressu. Posílení zabezpečení (hardening) jde ještě dál: web nastavíte tak, aby bezpečnostní chyba nebo převzatý účet napáchaly co nejméně škody. Zde se dozvíte, o která nastavení jde a jak je na svém hostingu nastavíte.
Co už zajišťuje server
Část zabezpečení je na našich serverech již vyřešena. xmlrpc.php je ve výchozím nastavení zablokován (WordPress: přístup k xmlrpc.php nefunguje), nebezpečné funkce PHP jsou vypnuté (Zabezpečení PHP: vypnuté funkce) a běží zde firewall pro webový provoz a skener malwaru. Viz Webový aplikační firewall a Imunify360: kontrola webu na malware. Následující kroky provedete sami, přímo ve svém webu.
Všechny soubory upravíte v DirectAdminu pomocí Správce souborů. Soubory začínající tečkou, například .htaccess, uvidíte až po zobrazení skrytých souborů: viz Zobrazení a úprava skrytých souborů, jako je .htaccess. Z každého souboru si nejprve vytvořte kopii a uložte ji mimo public_html.
1. Žádné úpravy kódu z administrace
Otevřete wp-config.php ve složce domains/example.com/public_html a vložte tento řádek nad řádek s textem „konec úprav“ (That's all, stop editing!):
define( 'DISALLOW_FILE_EDIT', true );
Editory souborů šablon a pluginů pak z administrace zmizí. Kdo převezme účet správce, nemůže tak několika kliknutími vložit do Vaší šablony škodlivý kód. Instalace a aktualizace pluginů funguje dál jako obvykle. Ve stejném souboru nastavte WP_DEBUG na false, aby se chybová hlášení nikdy nezobrazovala návštěvníkům.
2. Žádné PHP ve složce uploads
Do wp-content/uploads patří obrázky a dokumenty, nikoli PHP. Útočník, který může přes bezpečnostní chybu nahrát soubor, se pokusí umístit PHP soubor právě sem a poté jej spustit. Ve složce wp-content/uploads vytvořte soubor .htaccess s tímto obsahem:
<Files *.php> Require all denied </Files>
Poté zkontrolujte, zda Váš web, formuláře a knihovna médií stále fungují.
3. Žádný výpis složek
Pokud ve složce není index.php ani index.html, může webový server zobrazit seznam všech souborů. Na začátek souboru .htaccess v public_html vložte:
Options -Indexes
Otestujete to tak, že otevřete složku bez indexového souboru, například https://example.com/wp-content/uploads/. Měla by se zobrazit chybová stránka (403 nebo 404), nikoli seznam souborů.
4. Oprávnění souborů a složek
| Co | Oprávnění |
|---|---|
| Složky | 755 |
| Soubory | 644 |
wp-config.php | Přísnější: 600 nebo 640. Vyzkoušejte 600 a ověřte, zda web stále funguje. |
Nikdy nepoužívejte 777: pak může do dané složky zapisovat kdokoli na serveru. Pokud návod tvrdí, že je to nutné pro fungování nahrávání, příčina je jinde. Změna oprávnění: viz Oprávnění souborů a složek (chmod).
5. Žádné zbytky ve webové složce
Vše ve složce public_html je dostupné z webu. Proto zde ukliďte:
- kopie souboru
wp-config.php, napříkladwp-config.php.baknebowp-config.old. Obsahují heslo k Vaší databázi a odesílají se jako prostý text; - zálohy, například
backup.zipnebodatabase.sql; - složku
.gitpo vývojáři; wp-content/debug.log;- testovací soubory, například
info.phpsphpinfo().
Chcete-li znepřístupnit jeden konkrétní soubor, viz Blokování souborů pomocí .htaccess.
6. Hlavičky a přihlašování
- Bezpečnostní hlavičky říkají prohlížeči, jak má s Vaším webem zacházet. Viz HSTS a bezpečnostní hlavičky pro Váš web.
- Přihlašovací stránku omezíte na svou vlastní IP adresu pomocí návodu Zabezpečení wp-login.php ve WordPressu.
- Dvoufázové ověření pro správce: viz Nastavení dvoufázového ověření pro WordPress.
Skrytí verze WordPressu je úklid, nikoli zabezpečení: útočné programy bezpečnostní chybu prostě vyzkoušejí. Chybu odstraní pouze aktualizace.
A co bezpečnostní plugin?
Bezpečnostní plugin často kombinuje firewall, skener a ochranu přihlášení. Firewall v pluginu začne fungovat až ve chvíli, kdy WordPress již běží; firewall na serveru zastaví požadavky dříve. Plugin je tedy doplněk, především pro dvoufázové ověření a omezení pokusů o přihlášení. Používejte nejvýše jeden: dva bezpečnostní pluginy vedle sebe se často navzájem ruší.
.htaccess nebo wp-config.php vyřadí celý web z provozu. Viz Chyba 500 nebo „kritická chyba“ na Vašem webu (i po aktualizaci WordPressu).Další čtení
- Hardening WordPress (developer.wordpress.org, anglicky)
Chcete se dozvědět více? Absolvujte bezplatný kurz WordPressu, lekci 7.4 Posílení zabezpečení webu: oprávnění, hlavičky a bezpečnostní pluginy.
