Vyhledávání na webu

Jak chránit heslem webové adresáře v Apache pomocí souboru .htaccess


Při správě online projektů často potřebujete omezit přístup k tomuto projektu, abyste jej ochránili před vnějším světem. Důvody mohou být různé – například chcete zabránit prohledávačům vyhledávačů v přístupu k vašemu webu, když je stále ve fázi vývoje.

V tomto tutoriálu vám ukážu, jak chránit heslem různé adresáře webových stránek na webovém serveru Apache. Existuje mnoho způsobů, jak toho dosáhnout, my se však podíváme na dva z nich, které se nejčastěji používají.

První metoda nakonfiguruje ochranu heslem přímo v konfiguračním souboru Apache, zatímco druhá metoda používá soubor .htaccess.

Požadavky

Chcete-li nastavit ochranu heslem pro vaše webové adresáře, budete potřebovat:

  • Funkční webový server Apache
  • V konfiguračním souboru Apache musí být povolena direktiva AllowOverride AuthConfig.

Nastavení adresáře chráněného heslem Apache

1. V tomto tutoriálu budeme chránit hlavní webový kořenový adresář /var/www/html. Chcete-li tento adresář chránit, otevřete konfiguraci Apache:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Najděte kořenový adresář dokumentu Apache pro /var/www/html a přidejte následující položky podle doporučení:

Na verzi Apache 2.2

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Na verzi Apache 2.4

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Uložte soubor a restartujte Apache pomocí následujícího příkazu:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Nyní použijeme příkaz htpasswd k vygenerování uživatelského jména a hesla pro náš chráněný adresář. Tento příkaz se používá ke správě uživatelských souborů pro základní ověřování.

Obecná syntaxe příkazu je:

htpasswd -c filename username

Volba -c specifikuje soubor, který bude uchovávat šifrované heslo a username specifikuje uživatele pro autentizaci.

5. Náš soubor s hesly musí být umístěn mimo webový adresář Apache, aby byl dobře chráněn. Za tímto účelem vytvoříme nový adresář:

mkdir /home/tecmint

6. Poté vygenerujeme naše uživatelské jméno a heslo, které budou uloženy v tomto adresáři:

htpasswd -c /home/tecmint/webpass tecmint

Po provedení tohoto příkazu budete muset dvakrát zadat heslo pro našeho nového uživatele "tecmint":

Poté se budeme muset ujistit, že Apache je schopen číst soubor „webpass“. Za tímto účelem budete muset změnit vlastnictví tohoto souboru pomocí následujícího příkazu:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. V tomto okamžiku jsou naše nové uživatele a heslo připraveny. Nyní musíme říci Apache, aby při přístupu do našeho cílového adresáře požadoval heslo. Pro tento účel vytvořte soubor s názvem .htaccess v /var/www/html:

vi /var/www/html/.htaccess

Přidejte do něj následující kód:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Nyní uložte soubor a otestujte své nastavení. Otevřete prohlížeč a do webového prohlížeče zadejte svou IP adresu nebo název domény, například:

http://ip-address

Měli byste být vyzváni k zadání uživatelského jména a hesla:

Zadejte uživatelské jméno a heslo, které jste nastavili, abyste mohli přejít na svou stránku.

Další poznámky

Pokud používáte sdílený hosting, s největší pravděpodobností nebudete mít přístup ke konfiguračnímu souboru Apache. Většina hostingových společností však ve výchozím nastavení povolila možnost „AllowOverride All“. To znamená, že budete muset pouze vygenerovat uživatelské jméno a heslo a poté vybrat adresář, který chcete chránit. To výrazně usnadňuje váš úkol.

Závěr

Doufám, že pro vás byl tento návod užitečný a pomohl vám dosáhnout vašeho cíle. Pokud máte nějaké dotazy nebo připomínky, neváhejte je zveřejnit v sekci níže.