Portál technické podpory

Pokud zde nenajdete to, co jste hledali, neváhejte nás kontaktovat.
Potřebné informace pro vás rádi doplníme.

Zabezpečení administrace pomocí .htpasswd

V souvislosti s bezpečnostní dírou, která byla zjištěna v jádru redakčního systému Joomla verze 2.5.x až verze 2.5.7., jsme připravili několik bezpečnostních doporučení, jak danou situaci řešit.

Bezpečnostní díra umožňuje útočníkovi nahrát závadný obsah přímo do webového prostoru dané prezentace. Následně je možné spustit škodlivý kód, který způsobí zahlcení a tím zpomalení anebo výpadek všech běžících prezentací na našich serverech.

Verzi svého redakčního systému Joomla zjistíte v administraci v pravém horním rohu. Více informací o této problematice je možné získat na těchto stránkách:

Doporučená řešení

1. Upgrade na vyšší verzi Joomla 2.5.8

Instalační balíček můžete stáhnout zde: http://joomlacode.org/. Doporučujeme zkontrolovat kompatibilitu všech využívaných doplňků.

2. Zabezpečení pomocí souboru .htaccess a .htpasswd

Důvodem zavedení této formy dodatečného zabezpečení administrace u programů Joomla a Wordpress byl vyšší počet hromadně vedených útoků na servery, které byly směřovány přímo do přihlašovacích dialogů těchto známých CMS. Následkem těchto útoků je přetěžování webových serverů, které se může projevit pomalejšími odezvami. Nasazení další úrovně přihlášení do administrace open-source programů Joomla a Wordpress může pomoci omezit tento typ útoků na naše servery.

Zabezpečení pomocí funkce .htpasswd

.htaccess

Nejdříve přidáme do souboru .htaccess požadované příkazy a uložíme do složky, kterou chceme zaheslovat:

AuthUserFile /cesta/.htpasswd
AuthGroupFile /dev/null
AuthName "Název sekce"
AuthType Basic

require valid-user

Zde "Název sekce" je libovolný titulek složky, kterou si přejeme zaheslovat, například "Přátelé".

Pak /cesta je absolutní cesta k souboru .htpasswd. Soubor .htpasswd můžete umístit do libovolné složky a ani se nemusí jmenovat .htpasswd. Z bezpečnostních důvodů se ale doporučuje .htpasswd umístit nad Vaši hlavní složku. To proto, aby soubor nešlo nalézt výpisem složek Vaší domény. V případě, že využíváte placený webhostingový prostor, na serveru by pro Vás již měla být zvláštní složka k uložení citlivých údajů.

Pokud neznáte tzv. absolutní cestu na svoji doménu, můžete spustit PHP funkci phpinfo(), která vypíše na monitor nastavení serveru. Vytvořte si stránku s příponou .php (např. phpinfo.php) a do ní vložte tento kód:

<?php phpinfo () ?>

Stránku uložte na server a spusťte v prohlížeči. Měly by se zobrazit tabulky s nastavením serveru. V tabulce "PHP variables" by měla být položka _SERVER["DOCUMENT_ROOT"] nebo podobná. Toto je absolutní cesta k hlavní složce vaší domény.

.htpasswd

Soubor .htpasswd obsahuje uživatelská jména a hesla, která budou mít přístup k chráněné složce.

Do souboru .htpasswd se uživatelská jména a hesla přidají v tomto formátu:

uživatel1:heslo1
uživatel2:heslo2
uživatel3:heslo3

Hesla si musíte sami zašifrovat PHP funkcí crypt(). Zde je hotový skript, který tohle provede. Vytvořte si stránku s příponou .php (např. sifrovak.php) a do ní vložte tento kód:

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
<title>Šifrovák</title>
</head>
<body>
<h1>Šifrovák</h1>
<form action="<?php echo $PHP_SELF ?>" method="post">
Heslo k zašifrování:
<br /><input type=text name=heslo />
<input type="submit" name="submit" value=" jdi " />
</form>
</body>
</html>

<?php
$submit = $_REQUEST['submit'];
if (isset ($submit)) {
    $heslo = $_REQUEST['heslo'];
    $zasifrovane = crypt ($heslo);
    if (crypt ($heslo, $zasifrovane) == $zasifrovane)
        echo "<br />Heslo: $heslo = <span style='background:yellow;color:black;'>$zasifrovane</span>";
    else
        echo "<br />Došlo k chybě v šifrování.";
}
?>

Zašifrování musíte provést na svém internetovém serveru, na kterém budete mít zaheslovanou složku. Nemá význam to dělat na nějakém jiném serveru, protože různé servery šifrují různě. Stránku sifrovak.php uložte na server a spusťe v prohlížeči. Zašifrujte si jedno heslo po druhém a vždy zkopírujte klipem do souboru .htpasswd.

uživatel1:zasifrovane_heslo1
uživatel2:zasifrovane_heslo2
uživatel3:zasifrovane_heslo3

Další uživatele lze přidávat jako další řádky souboru .htpasswd.

Když se potom někdo pokusí o přístup k zaheslované složce, prohlížeč zobrazí výzvu k vložení uživatelského jména a hesla. Existují též serverové moduly, které zobrazují tento dialog jako součást stránky. Lze také odeslat uživatelské jméno a heslo (nezašifrované) v URL:

http://uzivatel:heslo@www.server.cz/slozka/

3. Povolit přístup do adresáře /administrator jenom z konkrétních IP

Pro nastavení přístupu se využívá soubor .htaccess do, kterého můžete přidat záznam, aby pustil do konkrétního adresáře pouze uživatele z dané IP. Soubor .htaccess uložíte do složky, kde má dané pravidlo pracovat.

Příklad:

"allow from 123.123.123.123" - povolíte této IP adrese vstup na Vaše stránky.