HTAccess Password-Protection Tricks

♦ zaslal Jeff Starr v.htaccess, Security
aktualizováno 30. června 2018 * 25 komentářů

nedávno se čtenář zeptal, jak chránit heslem adresář pro každou zadanou IP a zároveň umožnit otevřený přístup všem ostatním. V mém článku, hloupé triky htaccess, ukazuji, jak chránit heslem adresář pro každou IP kromě zadaného, ale ne pro opačný případ. V tomto článku předvedu tuto techniku spolu s celou řadou dalších užitečných triků pro ochranu heslem, včetně několika z mého hloupého článku htaccess Tricks. Než se dostaneme do šťavnatých věcí, přezkoumáme několik základů ochrany heslem HTAccess.

HTAccess ochrana heslem funguje v kaskádové módní

předtím, Než začnete, existuje několik věcí, které potřebujete vědět o Apache je různá hesla-ochrana směrnic. Nejprve se tyto triky ochrany heslem vztahují na adresář, ve kterém jsou umístěny. Chcete-li například chránit celý svůj web heslem, umístěte jeden z těchto triků do webového přístupného kořenového souboru HTAccess pro váš web. HTAccess direktivy jsou aplikovány dolů adresářové struktury, kaskádovým způsobem, tak, že všechny podadresáře jsou také chráněny.

potřebujete dva soubory ochrana heslem: htaccess a htpasswd

druhá věc, kterou potřebujete vědět, je, že, ve většině případů, tam jsou dvě části na libovolné heslo-ochrana provedení: .htaccess soubor .htpasswd soubor. Soubor .htaccess bude obsahovat některý ze sladkých triků uvedených v tomto článku, zatímco soubor .htpasswd bude obsahovat požadované uživatelské jméno a šifrovanou verzi vašeho hesla.

existuje několik způsobů, jak vygenerovat soubor .htpasswd. Pokud vám Unix vyhovuje, můžete jednoduše spustit příkaz “ htpasswd„. Například zadáním následujícího příkazu vytvoříte soubor pracovního hesla v adresáři /home/path/ :

htpasswd -bc /home/path/.htpasswd username password

umístění souboru hesla nad webový kořenový adresář je dobrým bezpečnostním opatřením. Pokud se podíváte na soubor poté, co byla vytvořena, jediné, co bude obsahovat je řádek, který vypadá podobně jako tento:

username:Mx1lbGn.nkP8

Namísto spuštění příkazu Unix, můžete raději použít jednu z 200.000 on-line služby, poskytování on-line generátor hesel.

bez ohledu na to, jak a kde se rozhodnete vytvořit soubor .htpasswd, mějte na paměti jeho umístění pro použití v přidružených souborech HTAccess. A ano, můžete použít jeden soubor .htpasswd pro více souborů HTAccess umístěných ve více adresářích.

zjistěte, kterou verzi Apache používáte

v každém z níže uvedených příkladů jsou směrnice uzavřeny v kontejneru <IfModule>. To má zabránit zhroucení serveru, pokud požadované moduly Apache nejsou k dispozici nebo nejsou nainstalovány. Obecně budou přítomny požadované moduly, ale kontrola <IfModule> je dobrým preventivním opatřením.

při implementaci kterékoli z metod ochrany heslem v tomto článku zkontrolujte, kterou verzi Apache používáte, než začnete. Příklady v tomto článku předpokládají, že používáte buď Apache 1.3 nebo 2.0, protože kontejnery <IfModule> kontrolují přítomnost modulu mod_auth. Tak, pokud jste běží Apache 2.2 (nebo vyšší), budete chtít nahradit stávající <IfModule> kontejnery s následující:

<IfModule mod_authn_file.c></IfModule>

v Případě pochybností, zeptejte se svého hostitele, nainstalovat ShowIP rozšíření pro Firefox, nebo hrabat v serveru je ovládací panel. A pokud to prostě nevíte, je vám to jedno nebo to nemůžete zjistit, stačí odstranit značky otevírání a zavírání <IfModule> z metody, kterou chcete použít, a nazvat ji dobrou. Bez nich, pokud váš server není vybaven požadovaným modulem, jednoduše vrátí chybovou zprávu 500, kterou lze snadno vyřešit odstraněním směrnic o heslech.

můžete přizpůsobit dialog na zadání hesla

poslední věc, kterou byste měli vědět před potápění do nějaké sladké triky, je, že můžete přizpůsobit zprávy zobrazené na řádku heslo úpravou následující řádek v každém z příkladů v tomto článku:

AuthName "Username and password required"

změnou textu uvnitř uvozovek, můžete použít jakýkoliv jazyk chcete pro zadání hesla.

takže teď v tomto bodě našeho dobrodružství jsme připraveni se ponořit do šťavnatých triků ochrany heslem HTAccess..

Základní ochrana heslem

heslo chrání vaše stránky nebo libovolný adresář, umístěte tento kód v spojené HTAccess:

# basic password protection<IfModule mod_auth.c> AuthUserFile /home/path/.htpasswd AuthName "Username and password required" AuthType Basic <Limit GET POST> Require valid-user </Limit></IfModule>

to je asi jako základní, jak to dostane. Nezapomeňte vytvořit soubor s heslem a v prvním řádku zadejte jeho adresář. Pojďme k něčemu zajímavějšímu.

Otevřít-přístup pro jednu IP, heslo-chránit všichni ostatní

Tato metoda je skvělá v průběhu vývoje projektu, kde chcete otevřít přístup s možností dát ostatním přístup přes heslo:

# password protect excluding specific ip<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from 111.222.333.444 Satisfy Any</IfModule>

Tím, že kód do souboru HTAccess z adresáře, který chcete chránit, pouze specifikované IP bude umožněn otevřený přístup; všichni ostatní budou muset zadat správné uživatelské jméno a heslo.

Otevřít přístup k více IPs, heslo-chránit všichni ostatní

výše uvedený kód může být upraven snadno poskytnout více IPs otevřený přístup, zatímco popírání všichni ostatní:

# password protect excluding specific ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from localhost Allow from 111.222.333.444 Allow from 555.666.777.888 Satisfy Any</IfModule>

můžete přidat jako mnoho IPs, jak je potřeba. Tato metoda je skvělá při vývoji projektu, kde budou platit následující podmínky:

  • Projekt rozvoj zůstává soukromé pro pravidelné návštěvníky
  • Přístup může být udělena klientům (nebo někdo) poskytnutím hesla
  • Členové vývojového týmu mají otevřít přístup na svých strojích

kromě poskytování neomezená přístup k vašemu týmu, můžete také chtít, aby určité internetové služby, v mysli tím, včetně následujících směrnic (vložit nad Satisfy Any směrnice):

Allow from validator.w3.org
Allow from jigsaw.w3.org
Allow from google.com

Otevřený přístup pro všechny s heslo-chránit pro konkrétní IPs

Tato metoda je užitečná pro celou řadu situací, včetně případů, kdy byste chtěli blokovat seznam škodlivých IPs.

# password protect only for specified ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 111.222.333.444 Deny from 555.666.777.888 Satisfy Any</IfModule>

můžete uvést tolik IP adres podle potřeby. Můžete také popřít z celých bloků IP odpovídajícím zkrácením adresy. Chcete-li například zablokovat všechny přicházející z IP adresy začínající na „999.888„, přidáme následující směrnici:

Deny from 999.888

další informace o tom, jak to funguje, naleznete v této části mého hloupého článku htaccess Tricks.

Otevřený přístup pro všechny s heslo-chránit pro konkrétní CIDR číslo

Podobný předchozí metody, zde je technika vyžadující heslo pouze z vyberte CIDR číslo. Tato metoda je užitečná pro blokování mega-spammerů, jako jsou RIPE, Optinet a další. Pokud například zjistíte, že přidáváte řádek po řádku směrnic Apache Deny pro adresy začínající stejnými prvními čísly, vyberte jednu z nich a zkuste vyhledávání whois. Ve výsledcích whois bude uvedena hodnota CIDR představující každou IP adresu přidruženou k dané síti. Blokování prostřednictvím CIDR je tedy účinným způsobem, jak výmluvně zabránit všem instancím IP pachatele v přístupu na váš web. Zde je zobecněný příklad blokování pomocí CIDR:

# password protect only for specified CIDR<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 10.1.0.0/16 Deny from 80.0.0/8 Satisfy Any</IfModule>

Heslo chrání jeden soubor

tuto techniku jsem použil nesčetněkrát. Chcete-li jeden soubor chránit heslem, jednoduše jej přidejte do souboru HTAccess:

# password protect single file<IfModule mod_auth.c> <Files "protected.html"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </Files></IfModule>

zde chráníme soubor s názvem „protected.html “ před přístupem. Soubor bude k dispozici pouze po zadání správného uživatelského jména a hesla.

Ochrana heslem více souborů

Chcete-li chránit více souborů, metoda je velmi podobná, pouze tentokrát používáme direktivu Apache FilesMatch. To nám umožňuje vypsat tolik souborů podle potřeby:

# password protect mulitple files<IfModule mod_auth.c> <FilesMatch "(protected\.html)|(passwords\.txt)"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>

v tomto příkladu chráníme heslem dva soubory, „protected.html “ a “ passwords.txt„. Chcete-li přidat další, jednoduše zahrnout více instancí „|(filename\.ext)“ do seznamu souborů.

Ochrana heslem Více typů souborů

pomocí této metody používáme direktivu Apache FilesMatch k ochraně heslem Více typů souborů. Zde je příklad:

# password protect mulitple file types<IfModule mod_auth.c> <FilesMatch "\.(inc|txt|log|dat|zip|rar)$"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>

Jakmile na místě, tento kód bude vyžadovat heslo pro přístup k následující typy souborů: .inc, .txt, .log, .dat, .zip, a .rar. Přizpůsobit tak, aby vyhovoval vašim potřebám.

ochrana Heslem pro všechno kromě jediného souboru

Díky Brett Batie pro tato výkonná technika, která umožňuje přístup do jednoho souboru, zatímco heslo-chránit vše ostatní:

# password protect everything except a single file<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <Files "open-access.html"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </Files></IfModule>

Pokud jsou umístěny v kořenovém adresáři nebo jakýkoliv nadřazený adresář, tento kód bude chránit heslem všechno kromě souboru s názvem „open-access.html„, což samo o sobě může být umístěn v jakékoliv následné adresář nebo podadresář.

abychom ochránili vše a zároveň umožnili přístup k více souborům, můžeme místo toho použít direktivu Apache FilesMatch. Zde je příklad umožňuje přístup k „open-access-1.html„, „open-access-2.html„, a „open-access-3.html„:

# password protect everything except specified files<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <FilesMatch "(open-access-1.html)|(open-access-2.html)|(open-access-3.html)"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </FilesMatch></IfModule>

Všimněte si, že můžeme upevnit seznam souborů následující:

<FilesMatch "open-access-\.html">

alternativní přístup, který umožňuje otevřený přístup k libovolný soubor nebo skupinu souborů je najít je v jejich vlastní adresář s následujícími směrnicemi přidány do jeho HTAccess:

Allow from all
satisfy any

Zabalte to pak

Jak můžete vidět, Apache‘ mod_auth funkce je možné konfigurovat jen o heslo na ochranu nastavení, které můžete potřebovat. Od zabránění přístupu z konkrétních IP adres a domén až po umožnění přístupu pouze pro konkrétní soubory a adresáře, Apache umožňuje snadno a bezpečně chránit vaše soubory. A ani jsme se nedostali do mnoha možností, které jsou k dispozici pro konfiguraci konkrétních uživatelských a skupinových oprávnění. Myslím, že si to nechám na další článek. Mezitím další informace o výkonném Apache mod_auth naleznete v oficiální dokumentaci.

 Jeff Starr

o autorovi
Jeff Starr = webový vývojář. Bezpečnostní Specialista. WordPress Buff.