Jak skonfigurować uwierzytelnianie Apache htpasswd w Ubuntu ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
09.12.2024

Jak skonfigurować uwierzytelnianie Apache htpasswd w Ubuntu

Korzystanie z uwierzytelniania htpasswd Apache to prosty sposób na dodanie podstawowej kontroli dostępu do katalogów internetowych poprzez wymaganie od użytkowników podania nazwy użytkownika i hasła przed uzyskaniem dostępu do określonych części witryny. Ten typ uwierzytelniania jest często wykorzystywany do ograniczania dostępu do wrażliwych obszarów, takich jak panele administracyjne lub witryny programistyczne, i można go łatwo skonfigurować na serwerze Ubuntu z uruchomionym Apache.

Wymagania wstępne

  • Serwer z systemem Ubuntu i zainstalowanym Apache2.
  • Dostęp rutynowy lub sudo do serwera.
  • Podstawowa znajomość obsługi wiersza poleceń.

Krok 1: Zainstaluj Apache (jeśli nie jest jeszcze zainstalowany)

Jeśli Apache nie jest zainstalowany na serwerze Ubuntu, można go zainstalować za pomocą następującego polecenia:

sudo apt update

sudo apt install apache2

Krok 2: Aktywacja narzędzia htpasswd

Narzędzie htpasswd jest dostarczane przez pakiet apache2-utils, który jest zwykle instalowany wraz z Apache. Jeśli nie jest zainstalowany, można go zainstalować, uruchamiając:

sudo apt install apache2-utils

To polecenie instaluje niezbędne narzędzia do zarządzania hasłami dla plików uwierzytelniających htpasswd.

Krok 3: Utwórz plik .htpasswd

Plik .htpasswd służy do przechowywania nazw użytkowników i zaszyfrowanych haseł uwierzytelniających.

  1. Aby utworzyć nowy plik .htpasswd i dodać użytkownika, uruchom następujące polecenie:
    sudo htpasswd -c /etc/apache2/.htpasswd your_username

    Zastąp your_username nazwą użytkownika, którego chcesz utworzyć.

    • Opcja -c tworzy nowy plik .htpasswd . Jeśli plik już istnieje i użyjesz opcji -c, zostanie on nadpisany, więc używaj jej tylko podczas pierwszego tworzenia pliku.
  2. Wprowadź i potwierdź hasło: Po uruchomieniu polecenia zostaniesz poproszony o wprowadzenie i potwierdzenie hasła dla użytkownika. zostanie utworzony plik /etc/apache2/.htpasswd z zaszyfrowanym hasłem dla your_name.
  3. Dodaj dodatkowych użytkowników (opcjonalnie): Aby dodać więcej użytkowników bez nadpisywania istniejącego pliku .htpasswd, wykonaj:
    sudo htpasswd /etc/apache2/.htpasswd another_username

    Zastąp another_username nową nazwą użytkownika. To polecenie doda nowego użytkownika do istniejącego pliku .htpasswd.

Krok 4: Konfiguracja Apache do ochrony hasłem

Musisz określić katalog lub lokalizację, którą chcesz chronić hasłem. Odbywa się to za pomocą pliku .htaccess lub poprzez bezpośrednią edycję pliku konfiguracyjnego Apache.

Opcja 1: Korzystanie z pliku .htaccess

  1. Włączanie plików .htaccess: Jeśli chcesz użyć plików .htaccess do skonfigurowania ochrony hasłem, upewnij się, że dyrektywa AllowOverride jest ustawiona na All dla katalogu, który chcesz chronić. Edytuj odpowiedni plik konfiguracyjny Apache (na przykład /etc/apache2/sites-available/000-default.conf):
    sudo nano /etc/apache2/sites-available/000-default.conf

    Znajdź sekcję dla katalogu głównego (np. /var/www/html) i ustaw AllowOverride na All:

<Directory /var/www/html>
AllowOverride All
</Directory>

  1. Uruchom ponownie Apache: Po edycji konfiguracji należy ponownie uruchomić Apache, aby zastosować zmiany:
    sudo systemctl restart apache2
  2. Utwórz plik .htaccess: W katalogu, który chcesz chronić (na przykład /var/www/html), utwórz lub edytuj plik .htaccess:
    sudo nano /var/www/html/.htaccess
  3. Dodaj następujące dyrektywy: Dodaj następujące linie do pliku . htaccess:
    AuthType Basic
    AuthName “Restricted Content”
    AuthUserFile /etc/apache2/.htpasswd
    Wymagaj valid-user
    • AuthType Basic: Określa podstawowe uwierzytelnianie.
    • AuthName: Wiadomość, która będzie wyświetlana w komunikacie uwierzytelniającym.
    • AuthUserFile: Ścieżka do pliku .htpasswd.
    • Require Valid User: Ogranicza dostęp do użytkowników wymienionych w pliku .htpasswd.
  4. Zapisz i zamknij plik.

Opcja 2: Bezpośrednie użycie pliku konfiguracyjnego Apache

Jeśli wolisz zarządzać uwierzytelnianiem bezpośrednio w plikach konfiguracyjnych Apache zamiast używać .htaccess, wykonaj następujące kroki:

  1. Edytuj konfigurację hosta wirtualnego: Otwórz plik konfiguracyjny Apache dla witryny, którą chcesz zabezpieczyć (np. /etc/apache2/sites-available/000-default.conf):
    sudo nano /etc/apache2/sites-available/000-default.conf
  2. Dodaj dyrektywy uwierzytelniania: Wewnątrz bloku lub bloku odpowiadającego katalogowi, który chcesz chronić, dodaj następujące elementy:
    <Directory "/var/www/html">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
    </Directory>
  3. Zapisz i zamknij plik konfiguracyjny.
  4. Uruchom ponownie Apache: Po wprowadzeniu zmian należy ponownie uruchomić Apache:
    sudo systemctl restart apache2

Krok 5: Przetestuj uwierzytelnianie

Teraz przejdź do adresu URL bezpiecznego katalogu za pomocą przeglądarki internetowej (na przykład http://your_server_ip_or_domain). Powinieneś zobaczyć monit logowania z prośbą o podanie nazwy użytkownika i hasła.

  • Wprowadź nazwę użytkownika i hasło utworzone za pomocą polecenia htpasswd.
  • Jeśli poświadczenia są poprawne, otrzymasz dostęp do katalogu; w przeciwnym razie odmówisz dostępu.

Krok 6: Ochrona pliku .htpasswd

Ze względów bezpieczeństwa upewnij się, że plik .htpasswd jest przechowywany poza katalogiem głównym sieci (na przykład /etc/apache2/.htpasswd), aby nie był dostępny bezpośrednio przez przeglądarkę internetową.

Upewnij się, że plik .htpasswd ma prawidłowe uprawnienia:

sudo chmod 640 /etc/apache2/.htpasswd

sudo chown www-data:www-data /etc/apache2/.htpasswd

Zapewnia to, że tylko użytkownik Apache (www-data) i root mają dostęp do odczytu pliku .htpasswd.

Wnioski

Konfiguracja uwierzytelniania htpasswd w Apache to prosty sposób na dodanie podstawowej kontroli dostępu do niektórych katalogów w witrynie. Nadaje się do zabezpieczeń niskiego poziomu, szczególnie w środowiskach programistycznych lub wewnętrznych. Jednak w przypadku bardzo wrażliwych obszarów należy rozważyć użycie bardziej niezawodnych metod uwierzytelniania, takich jak OAuth lub integracja z systemem zarządzania tożsamością.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills