Přihlásit se

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