🢂Jak zabezpieczyć dostęp do pliku za pomocą htaccess i htpasswd?

Wśród wielu metod ochrony informacji, zabezpieczenie dostępu do plików na serwerze internetowym przy pomocy hasła jest jedną z podstawowych i skutecznych technik.

Aby zabezpieczyć dostęp do pliku np. waznedane.csv hasłem za pomocą pliku .htaccess, wykonaj następujące kroki:

  1. Utwórz plik .htpasswd z hasłem użytkownika: Użyj narzędzia online lub komendy htpasswd (jeśli jest dostępna na serwerze) do wygenerowania zawartości pliku .htpasswd. Plik ten powinien zawierać nazwę użytkownika i zaszyfrowane hasło. (o sposobie generowania hasła znajdziesz w dalszej części wpisu ) Na przykład:
login:$2y$05$GxD0sgkrtgYLuZkzX9uWpeVHCy5oOfc9027wlwDQBt3z96h2qoSw2

(Login: login, hasło: hasło, w bcrypt) ;)

  1. Umieść plik .htpasswd poza publicznym katalogiem serwera: Najlepiej umieścić plik .htpasswd poza katalogiem dostępnym publicznie (np. w katalogu użytkownika /home/user/.htpasswd), aby nie był dostępny z poziomu przeglądarki internetowej.
  2. Modyfikuj plik .htaccess: W pliku .htaccess, który znajduje się w katalogu z plikiem waznedane.csv lub w katalogu nadrzędnym, dodaj następujące dyrektywy:
<Files "waznedane.csv">
    AuthGroupFile /dev/null                 # Wyłącza użycie pliku grupy użytkowników
    AuthType Basic                          # Ustawia typ autentykacji na podstawową (Basic)
    AuthUserFile /home/user/.htpasswd        # Wskazuje ścieżkę do pliku z hasłami użytkowników
    AuthName "Podaj login i hasło"          # Ustawia wiadomość wyświetlaną w oknie dialogowym logowania
    Require valid-user                      # Wymaga, by dostęp miał tylko zautoryzowany użytkownik
    ErrorDocument 401 "Podaj login i hasło" # Ustawia własną wiadomość błędu dla kodu 401 (Unauthorized)
</Files>

Zastąp /home/user/.htpasswd rzeczywistą ścieżką do Twojego pliku .htpasswd np. /home/user/domains/ZabezpieczonaDomena.pl/.htpasswd/.htpasswd.

Po zastosowaniu się do tych kroków, dostęp do pliku waznedane.csv będzie wymagał podania nazwy użytkownika i hasła. Wiadomość "Ostrzeżenie" to tekst, który zostanie wyświetlony użytkownikowi w oknie dialogowym autoryzacji.

Generowanie pliku autoryzacji htpasswd

Polecenie htpasswd służy do tworzenia i aktualizacji plików używanych do przechowywania nazw użytkowników i haseł dla podstawowej autoryzacji Apache HTTP Server. Oto jak można użyć tego polecenia:

  1. Instalacja: Na wielu systemach htpasswd jest dostępne w ramach pakietu Apache HTTP Server. Upewnij się, że masz zainstalowane narzędzia Apache.

  2. Tworzenie nowego pliku .htpasswd: Aby utworzyć nowy plik .htpasswd i dodać do niego użytkownika (login), użyj polecenia:

     htpasswd -c /home/user/.htpasswd nazwa_użytkownika

    Flagę -c stosuje się tylko przy tworzeniu nowego pliku. Podczas wykonywania tego polecenia zostaniesz poproszony o wprowadzenie i potwierdzenie hasła dla użytkownika.

  3. Dodawanie lub aktualizacja użytkownika w istniejącym pliku .htpasswd: Aby dodać nowego użytkownika do istniejącego pliku .htpasswd lub zaktualizować hasło istniejącego użytkownika, użyj polecenia bez flagi -c:

     htpasswd /home/user/.htpasswd nazwa_użytkownika

    Po wprowadzeniu polecenia zostaniesz poproszony o wprowadzenie nowego hasła dla użytkownika.

  4. Używanie różnych algorytmów szyfrowania: Możesz również określić algorytm szyfrowania hasła za pomocą flagi m (MD5), B (bcrypt, zalecany ze względów bezpieczeństwa), d (CRYPT) lub s (SHA). Na przykład, aby użyć bcrypt przy tworzeniu nowego pliku -c, użyj polecenia:

     htpasswd -B -c /home/user/.htpasswd nazwa_użytkownika
  5. Usuwanie użytkownika: Aby usunąć użytkownika z pliku .htpasswd, możesz użyć polecenia sed lub ręcznie edytować plik, usuwając odpowiednią linię.

    sed -i '/nazwa_użytkownika/d' /home/user/.htpasswd

    Opis działania tego polecenia:

  • sed: Narzędzie służące do przetwarzania tekstu w strumieniu.
  • i: Opcja, która pozwala na modyfikację pliku "w miejscu", czyli bez konieczności tworzenia dodatkowego pliku tymczasowego.
  • '/uzytkownik/d': Wyrażenie, które instruuje sed do usunięcia (d) wszystkich linii zawierających frazę uzytkownik.
  • /ścieżka/do/.htpasswd: Ścieżka do pliku .htpasswd, z którego ma zostać usunięty użytkownik.

Uwaga

Pamiętaj, aby zawsze zabezpieczyć plik .htpasswd przed dostępem nieautoryzowanym, umieszczając go poza publicznym katalogiem serwera i odnosząc się do niego w konfiguracji .htaccess lub konfiguracji serwera.