Každý správce WordPressu chce mít jistotu, že je jeho web v pohodě – rychlý, funkční a zabezpečený. Nedělejme si falešné iluze – nic z toho se nestane samo a taky to nevydrží na věky. Je potřeba se o kondici webu starat, hlídat ji a vylepšovat.
Obsah
- Proč by někdo útočil zrovna na můj web?
- Hostingu, jak řešíš bezpečnost?
- Zabezpečovací pluginy neumí čarovat
- Uživatelé a jejich bezpečné přihlašování
Zabezpečení je typický příklad. Na světě je spousta lidí, kteří se chtějí mít lépe, než se mají, a tak se snaží zbohatnout. Mnozí z nich nemají problém používat k tomu jakékoliv postupy, takže se může stát, že se i váš web stane cílem něčí násilné aktivity.
Proč by někdo útočil zrovna na můj web?
Pokud si to říkáte, je to myšlenkové klišé ve vaší hlavě. Útočník na váš web neútočí, protože je váš, ale protože je to zdroj nebo nástroj:
- pro rozesílání spamu,
- pro testování průniku,
- pro zapojení do sítě dalších webů,
- pro získání dat vašich zákazníků, tedy získání dalších kontaktů, které lze vytěžit,
- lze najít i další důvody, ale i ty první by měly stačit.
Zkrátka o web je třeba se starat, v tom se jistě shodneme. Výzva spočívá v tom, že těch rizik je velké množství, neustále se mění a objevují nové a chudák správce pak neví, jestli na něco nezapomněl nebo něco nepodcenil.
V tomto vydání newsletteru Rádce pro správce si uvedeme základní body, které byste měli mít ošetřené. Složitější situace probereme jindy, mnohdy záleží také na kontextu, v jakém svůj web provozujete, takže nechci dávat paušální rady.
Jako vždy na to jdu strukturálně a začínám odspodu pomyslné pyramidy, a sice na hostingu, serveru.
Hostingu, jak řešíš bezpečnost?
Obecná rada je pořád stejná – používejte aktuální software. To znamená, že byste měli mít PHP řady 8, ideálně 8.2, což je verze aktuální v době psaní tohoto textu. Sledujte https://www.php.net/releases/ a mějte rámcový přehled o tom, co se děje. Zbavte se PHP řady 7 (ani nepomýšlím na to, že byste někde ještě měli řadu 5). A teď to přijde – pokud vám hosting tvrdí, že řadu 8 ještě nemá, tak se strategicky rozhodněte, zda chcete zůstat tam, kde vám nutí zastaralý software plný chyb (EoL: 7.4: 3 Nov 2022, tedy řada 7.4 ukončila životní cyklus v listopadu 2022). Je možné, že vám hosting naúčtuje hodinu dvě práce za migraci na novější server, bral bych to. Lepší, než když to ignorují. Nebo když tvrdí, že aktuální Debian GNU/Linux nemá podporu řady 8 (to může být pravda, ale platíte jim za to, aby to vyřešili).
Pokud hosting nabízí nějakou formu ochrany před útoky z vesmíru, bývají to většinou následující funkce:
- automatická instalace nějakého pluginu do WordPressu (např. Limit Login Attempts apod.), přínos pro vás minimální,
- vlastní nástroje typu firewall, které je dobré otestovat, ale nepřeceňovat (máte někdo zkušenost s Wedos Global Protection?),
- napojení na Cloudflare, což v bezplatné verzi taky už není tak účinné, jak bychom si přáli,
- ochranu přihlašovacího formuláře heslem (tzv. htpasswd), což je jednoduchá a veskrze otravná funkce webového serveru,
- blokování přístupu z různých zemí, což v Dubrovníku na pláži na náladě taky nepřidá (nastavuje se to v souboru .htaccess).
Pokud hosting používá webový server Nginx, pak nejsou potřeba soubory .htaccess, konfigurace se provádí jinak, v některých situacích se může používat soubor nginx.conf. Píšu to proto, že pokud soubory .htaccess na serveru vidíte, ujistěte se, že mají důvod se používat – abyste nepodlehli falešné iluzi. Obsahují totiž ochranná nastavení a musíte si být jistí, jestli jsou aktivní.
Soubor index.php by měl být přítomný v každém adresáři, měl by mít velikost 28 bajtů a obsah <?php // Silence is golden.
. Pokud je to jinak, zbystřete.
V instalačních adresářích WordPressu na serveru (=ftp) nemějte žádné jiné soubory, které tam nepatří. Nemají tam co dělat žádné htaccess_backup_20220615 ani localhost.sql.zip, dokonce ani adminer.php, phpinfo.php nebo info.php. Nic takového.
Akční kroky:
- Ověřte si na hostingu, že používají aktuální verzi PHP.
- Ujistěte se, že soubory index.php obsahuji pouze jeden komentář.
- Zkontrolujte, že na v instalačních adresářích nemáte žádné soubory navíc.
Zabezpečovací pluginy neumí čarovat
Plugin je miniaplikace, doplněk, modul do WordPressu. Není to žádný magický nástroj, jehož instalací máte hotovo, zabezpečeno, doutník a nohy na stůl. Nepřeceňujte to. Pořád se můžou dít věci, které plugin neodhalí, třeba proto, že je nesprávně nastavený. Vyberte si jeden hlavní plugin, ten si vylaďte. My používáme Wordfence, dříve to byl iThemes Security, který pak ale zaspal dobu. Wordfence obsahuje sken, který prochází strukturu adresářů na serveru a například dokáže odhalit
- změnu souborů a adresářů – (ne)přítomnost, název, velikost, datum,
- změnu oprávnění adresářů,
- podezřelý obsah
Tento sken je vlastně hrubá strojová práce, která vám zobrazí změny proti předchozímu stavu, případně vytipuje prohledáním zdrojového kódu podezřelé příkazy a instrukce. Lépe to asi umí WPScan.com. Podezřelé instrukce jsou „divné příkazy“, nikoliv „virus“. Každý takový kód je potřeba prověřit v kontextu ostatních nálezů nebo indicií. Není to antivirový program!
Kromě toho má Wordfence ještě další funkce, zejména firewall (v bezplatné verzi omezený), ochranu proti útokům díky globální síti zapojených počítačů nebo třeba omezení počtu požadavků za minutu (ochrana proti DDoS).
Bezpečnostních pluginů je povícero, ale z těch větších by ještě zmínil Malcare Security nebo All-In-One Security. Pak jsou jednoúčelové nebo menší pluginy, někdy se je hodí použít, ale pozor na kolizi funkcí.
Akční kroky:
- Mějte aktivní a správně nastavený bezpečnostní plugin.
- Mějte jeden, maximálně dva bezpečnostní pluginy.
- Nechte se informovat o hrozbách a nepodceňujte je.
Uživatelé a jejich bezpečné přihlašování
Tohle bývá největší slabina. Lidi. Vy jako správce byste měli myslet na to, že bezpečnost není nutně pohodlná. Někdy si přidáte pár hodin práce, ale výsledek může být vyšší zabezpečení. Stojí to za to, trust me. To ale neznamená, že uživatele zahltíte přehnanými blbostmi.
Ukliďte v uživatelích
V první řadě zajistěte, aby
- existoval pouze nezbytný počet správců,
- žádný uživatel neměl v názvu slovo admin, administrator a jeho varianty (hlavně ne wpadmin jezuskote!),
- uživatel s id 1 nebyl (správce),
- žádný uživatel neměl v názvu název webu nebo projektu a blízké varianty,
- každý uživatel věděl, jakým jménem se má přihlásit, a pamatoval si ho,
- aby každý uživatel měl silné heslo (ještě stále hesla používáme),
- aby každý uživatel své heslo znal a dokázal si ho změnit (chodí vám správně transakční e-maily a dorazí všem do inboxu?)
Pokud potřebujete, aby někteří uživatelé uměli více než běžní uživatelé, vytvořte si nové role, třeba editorem rolí. Nedávejte všem práva admina.
Berte hesla ještě vážně
WordPress ukládá hesla do databáze šifrovaně, ale použitý způsob není úplně nejvíc nejbezpečnější. Vyplatí se proto použít silnější algoritmus, zatím prostřednictvím pluginu, např. PHP Native Password Hash, nebo podobným. V tomto kontextu připomínám, že je velmi dobrý nápad mít v souboru wp-config.php správně vyplněné konstanty pro soli, které přidávají do generování bezpečnostních cookies žádoucí náhodnost (viz pěkný článek na Kinsta). Kdybych dostal tisíc korun pokaždé, když místo náhodných řetězců najdu „Enter your salt here“, tak bych měl na elektroběžku. Generátor solí here. Hesla by měla být hustokrutopřísně silná, znáte to – hieroglyfy, kapka dračí krve, aspoň jedna německá přehláska… Akorátže vůbec.
Já si myslím, že do pár let hesla zmizí, ale než se tak stane, je třeba s nimi nějak žít. Hlavně laičtí uživatelé by to měli zvládat. Naučte je používat trezor na hesla, třeba KeePassXC, je multiplatformní, funguje skoro všude, doplňuje hesla i v prohlížeči.
Když už si musí hesla pamatovat, doporučoval jsem něco jako „7 Velkých trpaslýků!“ nebo „Jím rači 4 kapky“. Jsou to blbosti, at už je to za námi. Hlavně žádné lístečky na displeji.
Pozor na sdílené přihlašování přes účet u Googlu nebo sociální sítě. Jednou se to provalí a pak je to lavina.
Wordfence umí dvoufázové ověřování pomocí aplikace v mobilu, typicky asi Google Authenticator. Je to funkční, ale uživatelé musí chtít, protože z jejich pohledu je to otrava. Aspoň správci (admini) by to používat měli.
Akční kroky:
- Ukliďte si v uživatelích a jejich pravomocích.
- Používejte trezor na heslo a naučte to své uživatele.
- Zaveďte přiměřenou metodu pro dvoufázové ověření.