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.