Jak ograniczyć dostęp do zasobu za pomocą Apache w Linux
- 3885
- 710
- Tacjana Karpiński
Ograniczenie dostępu do zasobu jest często wymagane podczas korzystania z Internetu. W złożonych aplikacjach internetowych jest to często implementowane przy użyciu systemu logowania, który może być mniej lub bardziej wyrafinowany. Jeśli jednak nasze wymagania, nasze dość podstawowe, możemy użyć systemu uwierzytelniania dostarczonego przez serwer WWW Apache. W tym samouczku zobaczymy, jak możemy to zrobić.
W tym samouczku się nauczysz:
- Jak ograniczyć dostęp do strony internetowej za pomocą serwera WWW Apache
- Jak przechowywać hasła użytkownika w zwykłych plikach tekstowych
- Jak przechowywać hasła użytkownika w bazie danych
- Jak umożliwić dostęp do wielu użytkowników
Zastosowane wymagania i konwencje oprogramowania
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Niezależny od rozkładu |
Oprogramowanie | Serwer WWW Apache |
Inny | Uprawnienia do modyfikowania plików konfiguracyjnych |
Konwencje | # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny |
Podstawowa konfiguracja
Najbardziej podstawowa konfiguracja obejmuje dwa kroki: tworzenie plik hasła gdzie hasła użytkowników będą przechowywane, a użycie określonych dyrektyw w głównym pliku konfiguracyjnym serwera (lokalizacja tego pliku zależy od dystrybucji, której używamy: na fedora i rodzinie dystrybucji Red Hat, plik jest /etc/httpd/http/conf
, Na przykład podczas dystrybucji opartej na debian jest /etc/apache2/apache2.conf
), w pliku konfiguracyjnym wirtualnym lub wewnątrz .Htaccess
Plik umieszczony w odpowiednim katalogu.
Jeśli zdecydujemy się skorzystać z tej ostatniej opcji, musimy mieć pewność Authconfig dyrektywy można zastąpić. Zakładając .Htaccess
Plik jest wewnątrz /var/www/html/ograniczony
katalog, pisalibyśmy:
Authconfig ALLATOVERRIDE
Tworzenie pliku hasła
Tworzenie pliku hasła jest naprawdę łatwe: wszystko, co musimy zrobić, to użyć htpasswd
narzędzie, które zwykle jest wyposażone w instalację Apache. Bardzo ważne jest, aby plik zawierający hasła użytkowników umieszczono w katalogu, w którym publiczność nie może uzyskać do niego dostępu. W tym samouczku utworzymy plik wewnątrz /etc/httpd
informator.
Załóżmy, że chcemy umożliwić dostęp do EGDOC użytkownik. Aby utworzyć jego hasło, uruchomimy:
$ sudo htpasswd -c/etc/httpd/hasła egdoc
htpasswd
Narzędzie służy do zarządzania hasłami użytkownika i przechowywania ich w plikach zwykłego tekstu. W takim przypadku wywołaliśmy narzędzie i wykorzystaliśmy je z -C
Opcja: Jest to potrzebne do utworzenia pliku od zera. Jeśli plik już istnieje, jest on obcięty, dlatego, gdy musimy dołączyć do niego nowe wpisy, opcja należy pominąć.
Podaliśmy dwa argumenty: Pierwsza to ścieżka pliku hasła, druga to nazwa użytkownika, dla którego chcemy utworzyć hasło. Polecenie skłoni nas do wprowadzenia hasła dla użytkownika i potwierdzenie go:
Nowe hasło: Zamontuj nowe hasło:
Nie będziemy mogli zobaczyć hasła, gdy je wprowadzimy. Jeśli zajmiemy się teraz wygenerowanym plikiem, zobaczymy, że został on przechowywany po tym, jak został skazany na formacie mieszania Apache APR1:
EGDOC: $ kwietnia $ gevswc3p $ ZHR/MQMMN6G7TJ8FH8RCY/
Skonfiguruj serwer
Po przygotowaniu naszego pliku hasła musimy utworzyć odpowiednią konfigurację dla serwera WWW Apache. Jako przykład, załóżmy, że chcemy ograniczyć dostęp do /var/www/ograniczony
katalog, który jest DocumentRoot
wirtualHost skonfigurowany w następujący sposób:
Test Servername.LAN DocumentRoot/var/www/ograniczony AuthType Podstawowa nazwa autoryzacji „Ograniczony obszar!„AuthBasicProvider File AuthuserFile/Etc/httpd/Hasnass wymagają EGDOC użytkownika
Sprawdźmy dyrektywy, których użyliśmy w tej konfiguracji.
Po pierwsze, użyliśmy Typ uwierzytelniania. Ta dyrektywa służy do wyboru, jakiego rodzaju uwierzytelniania chcemy użyć. W takim przypadku wybieramy „podstawowe” jako wartość: Ta funkcjonalność jest dostarczana przez mod_auth_basic moduł. Inne możliwe wartości to Nic, strawić (dostarczone przez moduł mod_auth_digest) i Formularz, który jest dostarczany przez moduł mod_auth_form.
AuthBasicProvider Dyrektywa służy do deklarowania, jakiego dostawcy należy użyć do uwierzytelnienia. W tym przypadku moglibyśmy to pominąć plik to wartość domyślna, dostarczona przez mod_authn_file moduł.
Z Authname dyrektywa, konfigurujemy królestwo. Ta konfiguracja ma zasadniczo dwa cele: jako pierwsza rzecz, wiadomość, którą tutaj przekazujemy, pojawi się jako komunikat na przykład podany przez serwer, na przykład:
Witryna mówi: „Ograniczony obszar!"
„Dzień” jest również używane przez klienta, aby zdecydować, jakie hasło powinno wysłać na serwer. Jeśli użytkownik jest już uwierzytelniony, będzie mógł uzyskać dostęp do wszystkich zasobów w ramach tego samego królestwa, bez konieczności logowania.
Authuserfile Dyrektywa służy do wskazywania zwykłego pliku tekstowego hostującego hasło użytkowników, które utworzyliśmy wcześniej z htpasswd
pożytek.
Wreszcie mamy Wymagać dyrektywa. Dzięki tej dyrektywie możemy ograniczyć dostęp do zasobu na podstawie niektórych parametrów jako adresu IP klienta lub, jak w tym przypadku, uwierzytelnianie jako konkretny użytkownik.
/var/www/test
Katalog zawiera plik indeksu, indeks.html
, gdzie właśnie umieściliśmy „Uznany dostęp!" wiadomość. Po przygotowaniu naszej konfiguracji możemy ponownie uruchomić serwer:
$ sudo systemctl restart httpd
Kiedy spróbujemy uzyskać dostęp do strony, zostaniemy poproszeni o wprowadzenie nazwy logowania i hasła:
Monit logowania ApacheJeśli zapewnimy odpowiednie poświadczenia, dostęp do strony zostanie przyznany:
Uzyskany dostęp ApacheKorzystanie z grup
W zdecydowanej większości przypadków chcemy umożliwić wielu użytkownikom dostęp do zasobu. W takich przypadkach chcemy użyć plik grupy gdzie kojarzymy nazwę grupy z oddzieloną przestrzenią listą jej członków. Załóżmy, że ścieżka naszego pliku jest /etc/httpd/grupy
; Jego treść byłaby:
Nagrowi: EGDOC Tim Rob
Oświadczyliśmy, że użytkownicy EGDOC, TIM i ROB są członkami Dozwolone Grupa: dla każdego z nich należy dodać wpis w pliku hasła. W tym momencie musimy zmienić konfigurację naszej serwera i dostosować ją do nowej konfiguracji:
Test Servername.LAN DocumentRoot/var/www/ograniczony AuthType Podstawowa nazwa autoryzacji „Ograniczony obszar!„AuthBasicProvider File AuthuserFile/Etc/httpd/hasła AuthgroupFile/etc/httpd/grupy wymagają odbiorców grupowych
Wprowadziliśmy nową dyrektywę, Authgroupfile, i przekazał do niego ścieżkę pliku, w którym grupy są mapowane na użytkowników. Zmieniliśmy również wartość Wymagać dyrektywa; Teraz, aby mieć dostęp do zasobów, użytkownik musi być częścią Dozwolone Grupa. Aby zmiany były skuteczne, musimy ponownie uruchomić serwer.
Przechowywanie haseł w bazie danych
W poprzednim przykładzie widzieliśmy, jak przechowywać hasła użytkowników w prostym, prostym pliku tekstowym. To idealne realne rozwiązanie, gdy nie mamy wielu użytkowników. Kiedy lista użytkowników staje się dość długa, skanowanie całego pliku hasła może być dość niepraktyczne. W takich przypadkach zamiast tego możemy chcieć przechowywać hasła w bazie danych.
Jedną opcją jest utworzenie DBM plik. Możemy wykonać zadanie, używając htdbm pożytek. Do wygenerowania DBM Plik w tej samej pozycji, której użyliśmy w poprzednim przykładzie, możemy uruchomić:
$ sudo htdbm -cb/etc/httpd/passwd/hasła egdoc nowe hasło: Ponowne ityp nowe hasło: Baza danych PASSWD/Hasło utworzone.
Jak widać, składnia jest bardzo podobna do tej używanej htpasswd. Tak jak poprzednio, uruchomiliśmy polecenie za pomocą -C
opcja, aby utworzyć plik lub obcinać go, jeśli już istnieje. W takim przypadku użyliśmy również -B
opcja użycia Bcrypt Algorytm szyfrowania haseł. Ponieważ zmieniliśmy sposób przechowywania haseł, musimy również zmienić konfigurację serwera:
Test Servername.LAN DocumentRoot/var/www/ograniczony AuthType Podstawowa nazwa autoryzacji „Ograniczony obszar!„AuthBasicProvider DBM AuthdbMuserFile/Etc/httpd/Passwd/Hassings Wymagaj użytkownika EGDOC
To, co zmieniliśmy powyżej, to wartość, którą przekazaliśmy do AuthBasicProvider dyrektywa, która teraz jest DBM. Zastąpiliśmy również Authuserfile dyrektywa z AuthDBMuserFile, dostarczając tak jak poprzednio, ścieżka pliku, w którym hasło jest przechowywane. Aby ta konfiguracja działała, musimy mieć mod_authn_dmb Włączony moduł.
Wniosek
W tym samouczku widzieliśmy, jak ograniczyć dostęp do zasobu i zaimplementować prosty system uwierzytelniania logowania za pomocą serwera WWW Apache. Widzieliśmy, jak przechowywać hasła w zwykłych plikach tekstowych lub w DBM Format bazy danych. Widzieliśmy również, jak umożliwić dostęp do wielu użytkowników za pomocą Plik grupy i jakie dyrektywy należy wykorzystać do osiągnięcia naszego celu.
Powiązane samouczki Linux:
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Rzeczy do zainstalowania na Ubuntu 20.04
- Ubuntu 20.04 WordPress z instalacją Apache
- Samouczek SQLite Linux dla początkujących
- Instalacja Ampache Raspberry Pi
- Jak migrować Apache do Nginx, przekształcając wirtualne hosty na…
- Mastering Bash Script Loops
- Zainstaluj MySQL na Ubuntu 20.04 LTS Linux
- Jak zainstalować MySQL na Almalinux
- Samouczek LFTP na Linux z przykładami
- « Jak zainstalować Dockera na Ubuntu 20.04 LTS Focal Fossa
- Jak monitorować integralność plików w systemie Linux za pomocą OsQuery »