Ilustrace k článku

Přístup do administrace WordPressu jen pro vybrané IP adresy

Bezpečnost, Jak na to

Bezpečnost je nedílnou součástí každé stránky. U WordPressu si můžete být celkem jistí, že se vám někdo pokusí přihlásit do administrace i bez vašeho souhlasu. Existuje nepřeberné množství způsobů, jak ochránit web běžící na WordPressu. Téměř všechny se soustředí na zabezečení přihlašovací stránky a administrace, protože jsou nejčastějšími cíly útoku. Právě proto si v tomto článku ukážeme, jak povolit přístup do administrace jen pro vybrané IP adresy (tzv. whitelisting).

Co je povolení přístupu vybraným IP adresám?

Pokud povolíte přístup na určitou stránku pouze vybrané IP adrese, dáte ji do tzv. whitelistu, tak se na ni nikdo jiný, kromě této adresy nedostane. Pokud spravujete svoji stránku sami, tak můžete říci WordPressu, aby blokoval přístup ze všech IP adres, které nejsou vaše. Nikdo další se tak do administrace nedostane.
Zakázání přístupu (blacklisting) na druhou strunu znamená, že zakážete přístup vybraným IP adresám ke stránce. Funguje to bez vyjímky, ale přesto to není tak efektivní jako povolení pouze vybraných adres. Je mnohem jednodušší povolit přístup všem, kteří ho potřebují, než se snažit vyjmenovat všechny potenciální útočníky. Mezi další výhody patří:

  • Máte plnou kontrolu nad tím, kdo se dostane ke stránkám. Zmiňovali jsme pouze administraci, ale můžete to aplikovat na libovolnou jinou část webu.
  • Útočníci nemohou navštívit nástěnku ani když mají přihlašovací údaje. I když útočníci uhodnou heslo a uživatelské jméno, tak se do administrace nepřihlásí, pokud nebudou mít přístup přímo k počítači, který používáte.
  • Můžete povolit libovolné množství IP adres. Nejste ničím omezováni, vysat jich můžete kolik potřebujete.

Povolení přístupu pro vybrané IP adresy může být oříšek, pokud pracujete v týmu anebo hodně cestujete. Občas bude potřebovat člen dostat přístup z jiného počítače či kavárny na služební cestě a bude nutné ho tam přidat. Z bezpečnostního hlediska je to perfektní, ale je dobré se zamyslet, jestli to dává smysl pro váš způsob práce ještě předtím, než takové řešení implementujete.

Jak na to?

Nejprve si udělejte zálohu, abyste se měli k čemu vrátit, pokud by se něco pokazilo. V tomhle případě bude stačit udělat kopii „.htaccess“ souboru, který najdete v kořenovém adresáři webu.

1. Ujistěte se, že všichni mají statickou IP adresu

Ne všichni mají statickou IP adresu a bez ní budete svůj seznam povolených IP adres neustále měnit. Než se pustíte do změny nastavení, tak se opravdu ujistěte, že všichni, kteří k webu budou přistupovat mají statickou adresu (např. UPC ji standardně nenabízí).

Pokud ji nemáte, tak je jednou z možností přistupovat na stránky pomocí VPN, kde si často můžete statickou IP adresu zaplatit, ale je ke zvážení, jestli to ve vašem případě dává smysl.

2. Upravte svůj .htaccess

V této části si ukážeme, jak nastavit whitelist IP adres přidání pár řádk kódu do souboru .htaccess. Abyste se k němu dostali, budete se muset připojit na FTP (k tomu můžete využít např. FileZillu).
Připojte se na FTP své stránky a najděte kořenový adresář WordPressu, místo, kde je WP nainstalovaný. Často se taková složka jmenuje „public_html“, „www“ nebo jako „nazevstranky.cz“. Tam najdtěte .htaccess soubor, klikněte na něj pravým tlačítkem a vyberte možnost „upravit“. Čímžto otevřete soubor svým defaultním editorem. Váš soubor by měl vypadat zhruba jako ten níže, ale je možné, že obsahuje další řádky kódu, které tam přidal hosting, bezpečnostní plugin etc.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Ať je to jakkoliv, neměňte žádný kód, o kterém nevíte, co dělá. Teď bude stačit dát následující kód nad řádek #END WordPress:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^PRVNI_IP_ADRESA$
RewriteCond %{REMOTE_ADDR} !^DRUHA_IP_ADRESA$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

Na řádky můžete vložit IP adresy, které chcete přidat do seznamu polených. Stačí nahradit „PRVNI_IP_ADRESA“ a „DRUHA_IP_ADRESA“ a je to. Pokud potřebujete přidat více adres, zkopírujte jeden z nich a vložte za ty, které už tam máte. Řádek ve kterém je [R=403,L] říká WordPressu co dělat s IP adresami, které nesou v seznamu. V tomhle případě to vrátí chybu 403 Forbidden (zakázaný přístup).

Pokud potřebujete zjistit svoji IP adresu, můžete udělat třeba na stránce Moje IP.

Pro ještě lepší zabezpečení můžete říci WordPressu, aby zablokoval přístup jak do administrace, tak na přihlašovací stránku, pro adresy, které nejsou na seznamu povolených. K tomu můžete využít následující snippet:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^PRVNI_IP_ADRESA$
RewriteCond %{REMOTE_ADDR} !^DRUHA_IP_ADRESA$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

Když máte hotovo, můžete uložit změny do .htaccess soboru a zavřít ho. Teď se vás FileZilla zeptá, jestli chcete nahradit verzi na serveru touto novou. Odpovězte „Ano“ a je hotovo.
Máte nějaké otázky k blokování/povolování přístupu IP adres do WordPressu? Napište je do komentářů níže.

Pozn.: Tento článek je volným a doplněným překladem How to Whitelist an IP Address For Access to Your WordPress Dashboard (In 2 Steps) od John Hughese z Elegant Themes.

Komentáře (1)

  1. Zdravím,
    Zkusil jsem přesně podle postupu, avšak vyhazuje mi to chybu 500 v obou příapdech kódu.
    Tak jsem si vrátil původní verzi .htaccess, abych se mohl naplogovat a jsme zpět na svém.
    Ovšem záměr blokace login page pro cizí IP adresy je bez úspěchu.
    Hezký den.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *