GNU/Linux >> Znalost Linux >  >> Linux

Jak chránit webové stránky heslem přes .htaccess

SKILL LEVEL: SYSADMIN/ADVANCED - TIME: 5-10 MINS

Úvod

V tomto tutoriálu vám ukážeme, jak chránit webovou stránku nebo jen složku na webu heslem. V tomto příkladu použijeme nejpopulárnější webový server, Apache2, nicméně podobné metody lze provést i s jinými webovými servery.

Metoda, kterou budeme používat, je základní ověřovací systém, ale lze jej snadno nastavit a umožňuje vám rychle zabezpečit váš web před ostatními lidmi na velkém špatném internetu. Tato metoda se opírá o vytvoření kombinace uživatelského jména a hesla pro vaše stránky. Můžete přidat libovolný počet uživatelských jmen, ale nezapomeňte, že každé heslo budete muset udržovat.

Předpoklady

V tomto příkladu používáme serverovou edici Ubuntu 16.04. Bude to fungovat také na Ubuntu 14.04 a téměř na každé jiné distribuci Linuxu, pokud používáte webový server Apache 2.

V Ubuntu se přihlásíte jako standardní uživatel a pomocí sudo zadáte příkazy root (privilegovaný/superuser). Pokud máte na serveru přihlášení root, můžete místo toho použít toto. Nebudete muset používat sudo, ale pro veškerou bezpečnou správu serveru se doporučuje, abyste prováděli akce pomocí sudo a pracovali jako normální uživatel (bez oprávnění root) k provádění administrativních úloh.

Instalace balíčku Apache Utilities Package

Abychom vytvořili soubor, který bude ukládat hesla potřebná pro přístup k našemu omezenému obsahu, použijeme nástroj nazvaný htpasswd , který je součástí balíčku apache2-utils. Chcete-li nainstalovat apache2-utils, spusťte následující příkazy:

  • sudo apt-get update
  • sudo apt-get install apache2-utils

Výše uvedené předpokládá, že již máte nainstalovaný Apache2 (pokud ne, sudo apt-get install apache2).

Vytvořte soubor s hesly

Nyní máme přístup k htpasswd příkaz. Můžeme to použít k vytvoření souboru s hesly, který může Apache použít k ověření uživatelů. Pro tento účel vytvoříme skrytý soubor s názvem .htpasswd v našem /etc/apache2 konfigurační adresář. Všimněte si, že soubory s předponou tečkou (.) jsou automaticky skryté ve standardním výpisu adresáře (např. nejsou zobrazeny pomocí příkazu ls). Pokud je chcete zobrazit, použijte ls -la (dlouhý seznam, všechny soubory).

Při prvním použití tohoto nástroje musíme přidat -c možnost vytvořit zadaný soubor. Zadáme uživatelské jméno (sammy v tomto příkladu) na konci příkazu k vytvoření nové položky v souboru:

  • sudo htpasswd -c /etc/apache2/.htpasswd sammy

Budete požádáni o zadání a potvrzení hesla pro uživatele.

Vynechejte -c argument pro případné další uživatele, které chcete přidat:

  • sudo htpasswd /etc/apache2/.htpasswd another_user

Pokud si prohlížíme obsah souboru, můžeme vidět uživatelské jméno a šifrované heslo pro každý záznam:

  • cat /etc/apache2/.htpasswd
Výstup
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Konfigurovat ověřování hesla Apache

Nyní, když máme soubor s našimi uživateli a hesly ve formátu, který Apache umí číst, musíme nakonfigurovat Apache, aby tento soubor zkontroloval před poskytováním našeho chráněného obsahu. Můžeme to udělat dvěma různými způsoby.

První možností je upravit konfiguraci Apache a přidat naši ochranu heslem do souboru virtuálního hostitele. To obecně poskytne lepší výkon, protože se vyhnete nákladům na čtení distribuovaných konfiguračních souborů. Pokud máte tuto možnost, doporučujeme tuto metodu.

Pokud nemáte možnost upravit soubor virtuálního hostitele (nebo pokud již používáte soubory .htaccess files for other purposes), you can restrict access using an  .htaccessfile. Apache uses .htaccess`, aby bylo možné nastavit určité konfigurační položky v souboru v adresáři obsahu. Nevýhodou je, že Apache musí tyto soubory znovu číst při každém požadavku, který zahrnuje adresář, což může ovlivnit výkon.

Níže vyberte možnost, která nejlépe vyhovuje vašim potřebám.

Konfigurace řízení přístupu v rámci definice virtuálního hostitele

Začněte otevřením souboru virtuálního hostitele, ke kterému chcete přidat omezení. V našem příkladu použijeme 000-default.conf soubor, který obsahuje výchozího virtuálního hostitele nainstalovaného prostřednictvím balíčku Apache Ubuntu:

  • sudo nano /etc/apache2/sites-enabled/000-default.conf

Uvnitř, s odstraněnými komentáři, by měl soubor vypadat podobně jako tento:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Autentizace se provádí pro každý adresář. Chcete-li nastavit ověřování, budete muset cílit na adresář, který chcete omezit, pomocí <Directory ___> blok. V našem příkladu omezíme kořenový adresář celého dokumentu, ale tento výpis můžete upravit tak, aby cílil pouze na konkrétní adresář ve webovém prostoru:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
    </Directory>
</VirtualHost>

V tomto adresářovém bloku určete, že chceme nastavit Basic autentizace. Pro AuthName , zvolte název sféry, který se uživateli zobrazí při výzvě k zadání přihlašovacích údajů. Použijte AuthUserFile direktiva, která ukazuje Apache na soubor hesel, který jsme vytvořili. Nakonec budeme vyžadovat valid-user pro přístup k tomuto zdroji, což znamená, že kdokoli, kdo může ověřit svou totožnost pomocí hesla, bude moci v:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

Po dokončení uložte a zavřete soubor. Restartujte Apache, abyste implementovali své zásady pro hesla:

  • sudo service apache2 restart

Zadaný adresář by nyní měl být chráněn heslem.

Konfigurace řízení přístupu pomocí souborů .htaccess

Pokud si přejete nastavit ochranu heslem pomocí .htaccess místo toho byste měli začít úpravou hlavního konfiguračního souboru Apache tak, aby umožňoval .htaccess soubory:

  • sudo nano /etc/apache2/apache2.conf

Najděte <Directory> blok pro /var/www adresář, který obsahuje kořen dokumentu. Zapněte .htaccess zpracování změnou parametru AllowOverride direktiva v tomto bloku z „None“ na „All“:

/etc/apache2/apache2.conf
. . .

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

. . .

Po dokončení uložte a zavřete soubor.

Dále musíme přidat .htaccess soubor do adresáře, který chceme omezit. V naší ukázce omezíme kořenový adresář celého dokumentu (celý web), který je založen na /var/www/html , ale tento soubor můžete umístit do libovolného adresáře, ke kterému chcete omezit přístup:

  • sudo nano /var/www/html/.htaccess>

V tomto souboru určete, že chceme nastavit Basic autentizace. Pro AuthName , zvolte název sféry, který se uživateli zobrazí při výzvě k zadání přihlašovacích údajů. Použijte AuthUserFile direktiva, která ukazuje Apache na soubor hesel, který jsme vytvořili. Nakonec budeme vyžadovat valid-user pro přístup k tomuto zdroji, což znamená, že kdokoli, kdo může ověřit svou totožnost pomocí hesla, bude moci v:

/var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Uložte a zavřete soubor. Restartujte webový server, aby byl veškerý obsah v adresáři nebo pod ním chráněn heslem pomocí .htaccess soubor:

  • restartování služby sudo apache2

Potvrďte ověření hesla

Chcete-li si ověřit, že je váš obsah chráněn, pokuste se získat přístup k omezenému obsahu ve webovém prohlížeči. Mělo by se vám zobrazit uživatelské jméno a heslo, které vypadá takto:

Pokud zadáte správné přihlašovací údaje, bude vám povolen přístup k obsahu. Pokud zadáte nesprávné přihlašovací údaje nebo stisknete „Zrušit“, zobrazí se chybová stránka „Neoprávněné“:

Závěr

Nyní byste měli mít vše, co potřebujete k nastavení základního ověřování pro váš web. Veškerá ochrana heslem by měla být kombinována se šifrováním SSL, aby vaše přihlašovací údaje nebyly odesílány na server v prostém textu.

Děkujeme lidem z digitalocean.com za část obsahu na této stránce. Určitě se na ně podívejte, mají úžasné webhostingové služby, které vyhovují každému rozpočtu!


Linux
  1. Jednoduché přesměrování webových stránek přes .htaccess

  2. Jak povolit ExecCGI přes soubor .htaccess?

  3. Jak upravit soubor .htaccess prostřednictvím správce souborů cPanel?

  1. Jak heslem chránit adresář v cPanel

  2. Jak povolím ExecCGI přes soubor .htaccess?

  3. Jak chránit heslem adresář přes cPanel

  1. Jak prolomit zip heslo na Kali Linux

  2. Jak ochráním složku webu heslem?

  3. Jak mohu chránit heslem soubor .tgz pomocí tar v Unixu?