Asi již každý, kdo používá Joomlu, nebo jakýkoliv jiný webový systém, čelil množícím se útokům robotů na prolomení hesla do administrace. I když nedojde k prolomení hesla, situace může být nepříjemná z důvodu přetížení serveru. Roboti se neustále dokola snaží do administrace přihlásit, čímž server dokáží přetížit.
Způsobů zabezpečení Joomly je mnoho, některé jsou placené jiné zdarma. V tomto článku bych rád nastínil jednoduchý způsob, jak zabezpečit přístup do administrace Joomly proti nechtěným návštěvníkům. Způsob používám na mnoha svých webech a dokázal odstínit velkou část pokusů o prolomení hesla.
Joomla v základu nepodporuje změnu adresy administrace. Na každém serveru je tedy adresa administrace /administrator
. Toho roboti zneužívají a na tuto adresu posílají fiktivní požadavky na přihlášení. Prosté přejmenování adresáře administrator
nelze použít, některé komponenty spoléhají na tento název adresáře a přejmenováním by přestali fungovat.
Jak tedy "změnit" adresu administrace? V první řadě si zvolte pod jakou adresou chcete do administrace přistupovat. Řekněme např. /sprava
(volby typu /admin apod. bych nedoporučoval, pod touto adresou se skrývají mnohdy administrace jiných systémů, které roboti také zkoušejí).
V kořenové složce Joomly pak vytvořte adresář se zvoleným názvem, v našem případě tedy sprava
. V tomto adresáři vytvořte textový soubor nazvaný index.php
obsahující následující kód
<?php
$admin_cookie_code = 'MujTajnyKlic';
$admin_cookie_name = 'MujTajnyNazevCookie';
setcookie($admin_cookie_name, $admin_cookie_code, 0, '/');
header("Location: /administrator/index.php");
Hodnoty MujTajnyKlic
a MujTajnyNazevCookie
nahraďte libovolnými texty, název cookie musí splňovat pravidla pro návy cookie (ideálně jen písmena a číslice).
V druhém kroku si připravte textový soubor nazvaný .htaccess
(včetně té tečky na začátku) a vložte do něj následující obsah:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/administrator
RewriteCond %{HTTP_COOKIE} !MujTajnyNazevCookie=MujTajnyKlic
RewriteRule .* - [L,F]
Hodnoty MujTajnyKlic
a MujTajnyNazevCookie
musí odpovídat těm zvoleným v prvním kroku, tedy zapsaným v souboru index.php
.
Soubor uložte a nahrajte do složky /administrator v Joomle. A máte hotovo. Zkuste nyní otevřít adresu /administrator
svého webu - Oops - chyba 403 - přístup zamítnut. Zadejte adresu /sprava
- a hle administrace je tu :)
Jak to celé funguje?
Soubor .htaccess
ve složce administrator
zajišťuje, že komukoliv, kdo otevře adresu /administrator
a nemá nastavenou Cookie s příslušným názvem a hodnotou se ukáže stránka 403 - přístup zamítnut. Kdo nastavenou Cookie má, může pokračovat a nic se neděje. A kde se Cookie vezme? O to se postará soubor index.php
ve zvoleném adresáři. Ten neudělá nic jiného, že prohlížeči nastaví Cookie s platností po dobu sezení (zjednodušeně tedy než zavřete prohlížeč), a přesměruje uživatele na reálnou administraci.
Díky tomu, že o kontrolu nastavení Cookie se stará soubor .htaccess
, a ne až nějaký plugin v Joomle, nedojde ani ke spuštění PHP skriptu, zatížení serveru je tedy minimální, a velmi se sníží riziko přetížení serveru.
Funguje to vždy?
Řešení je velmi jednoduché, v podstatě jediný předpoklad je, že hosting podporuje modul pro přesměrování a soubory .htaccess. Odvážil bych se tvrdit, že to je ale dnes snad již standard.
Druhým předpokladem je instalace Joomly na kořeni domény. Pokud máte Joomlu instalovanou v podadresáři, museli by se příslušně upravit adresy v obou soborech.
Stačí toto zabezpečení proti hackerům?
Určitě ne. Je to jen jeden ze způsobů jak útočníkům ztížit pokus o prolomení se do administrace.
Vůbec tomu nerozumím...
Nevadí, stáhněte si přiložený zip soubor, a nainstalujte jej v Joomla jako jakékoliv jiné rozšíření. Po úspěšné instalaci se hned ukáže chyba 403 - přístup zamítnut. Nelekejte se - prostě jen v adresním řádku prohlížeče změňte /administrator
za /sprava
a jste v administraci zpět. Od teď je vaše administrace na adrese /sprava
, tedy např. www.example.com/sprava
Když se zabezpečení budete chtít zbavit, nainstalovaný balíček opět běžným způsobem odinstalujete.
Zabezpečení adresy administrace Joomla