🢂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:
- 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) ;)
- Umieść plik .htpasswd poza publicznym katalogiem serwera: Najlepiej umieścić plik
.htpasswdpoza katalogiem dostępnym publicznie (np. w katalogu użytkownika/home/user/.htpasswd), aby nie był dostępny z poziomu przeglądarki internetowej. - Modyfikuj plik .htaccess:
W pliku
.htaccess, który znajduje się w katalogu z plikiemwaznedane.csvlub 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:
-
Instalacja: Na wielu systemach
htpasswdjest dostępne w ramach pakietu Apache HTTP Server. Upewnij się, że masz zainstalowane narzędzia Apache. -
Tworzenie nowego pliku .htpasswd: Aby utworzyć nowy plik
.htpasswdi dodać do niego użytkownika (login), użyj polecenia:htpasswd -c /home/user/.htpasswd nazwa_użytkownikaFlagę
-cstosuje się tylko przy tworzeniu nowego pliku. Podczas wykonywania tego polecenia zostaniesz poproszony o wprowadzenie i potwierdzenie hasła dla użytkownika. -
Dodawanie lub aktualizacja użytkownika w istniejącym pliku .htpasswd: Aby dodać nowego użytkownika do istniejącego pliku
.htpasswdlub zaktualizować hasło istniejącego użytkownika, użyj polecenia bez flagi-c:htpasswd /home/user/.htpasswd nazwa_użytkownikaPo wprowadzeniu polecenia zostaniesz poproszony o wprowadzenie nowego hasła dla użytkownika.
-
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) lubs(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 -
Usuwanie użytkownika: Aby usunąć użytkownika z pliku
.htpasswd, możesz użyć poleceniasedlub ręcznie edytować plik, usuwając odpowiednią linię.sed -i '/nazwa_użytkownika/d' /home/user/.htpasswdOpis 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 instruujeseddo 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.