Kako konfigurirati osnovnu HTTP autentifikaciju u Nginxu
Osnovna HTTP autentifikacija je sigurnosni mehanizam za ograničavanje pristupa vašoj web stranici/aplikaciji ili nekim njezinim dijelovima postavljanjem jednostavne autentifikacije korisničkim imenom/lozinkom. Može se koristiti u osnovi za zaštitu cijelog HTTP poslužitelja, pojedinačnih blokova poslužitelja (virtualni hostovi u Apacheu) ili blokova lokacije.
Pročitajte također: Kako postaviti virtualne hostove temeljene na nazivu i IP-u (blokove poslužitelja) s NGINX-om
Kao što naziv sugerira, to nije sigurna metoda na koju se možete osloniti; trebali biste ga koristiti u kombinaciji s drugim pouzdanijim sigurnosnim mjerama. Na primjer, ako vaša web-aplikacija radi na HTTP-u, tada se korisničke vjerodajnice prenose u obliku običnog teksta, pa biste trebali razmisliti o omogućavanju HTTPS-a.
Svrha ovog vodiča je pomoći vam dodati mali, ali koristan sloj sigurnosti za zaštitu privatnog/privilegiranog sadržaja na vašim web aplikacijama (kao što su, ali ne ograničavajući se na strane administratora). Također ga možete koristiti za sprječavanje pristupa web stranici ili aplikaciji koja je još u fazi razvoja.
Zahtjevi
- Instalirajte LEMP Stack u CentOS/RHEL 7
- Instalirajte LEMP Stack u Ubuntu/Debian
Stvorite korisničku datoteku HTTP autentifikacije
Trebali biste početi stvaranjem datoteke koja će pohraniti parove username:password
. Koristit ćemo htpasswd pomoćni program s Apache HTTP poslužitelja za izradu ove datoteke.
Prvo provjerite jesu li apache2-utils ili httpd-tools, paketi koji pružaju htpasswd uslužni program, instalirani na vašem sustavu, inače pokrenite odgovarajuću naredbu za svoju distribuciju za instalaciju:
yum install httpd-tools [RHEL/CentOS]
sudo apt install apache2-utils [Debian/Ubuntu]
Zatim pokrenite naredbu htpasswd u nastavku da biste stvorili datoteku zaporke s prvim korisnikom. Opcija -c
koristi se za određivanje passwd datoteke, nakon što pritisnete [Enter], od vas će se tražiti da unesete korisničku lozinku.
htpasswd -c /etc/nginx/conf.d/.htpasswd developer
Dodajte drugog korisnika i nemojte ovdje koristiti opciju -c
.
htpasswd /etc/nginx/conf.d/.htpasswd admin
Sada kada ste pripremili datoteku zaporke, nastavite s konfiguriranjem dijelova vašeg web poslužitelja kojima želite ograničiti pristup. Za pregled sadržaja datoteke zaporke (koja uključuje korisnička imena i šifrirane zaporke), upotrijebite donju naredbu cat.
cat /etc/nginx/conf.d/.htpasswd
Konfigurirajte HTTP autentifikaciju za Nginx
Kao što smo ranije spomenuli, možete ograničiti pristup svom web poslužitelju, jednoj web stranici (pomoću njezinog bloka poslužitelja) ili direktivi o lokaciji. Dvije korisne direktive mogu se koristiti da se to postigne.
- auth_basic – uključuje provjeru valjanosti korisničkog imena i lozinke korištenjem “HTTP Basic Authentication” protokola.
- auth_basic_user_file – navodi datoteku zaporke.
Zaštitite Nginx virtualne hostove lozinkom
Za implementaciju osnovne provjere autentičnosti za cijeli web poslužitelj, koja se odnosi na sve blokove poslužitelja, otvorite datoteku /etc/nginx/nginx.conf i dodajte donje retke u http kontekstu:
http{
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
……...
}
Zaštitite Nginx web stranicu ili domenu lozinkom
Da biste omogućili osnovnu autentifikaciju za određenu domenu ili poddomenu, otvorite njezinu konfiguracijsku datoteku pod /etc/nginx/conf.d/ ili /etc/nginx/conf/sites-available (ovisno o tome kako ste instalirali Nginx), zatim dodajte konfiguraciju u nastavku u blok poslužitelja ili kontekst:
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
location / {
……..
}
……...
}
Zaštitite web imenik lozinkom u Nginxu
Također možete omogućiti osnovnu provjeru autentičnosti unutar direktive o lokaciji. U donjem primjeru, svi korisnici koji pokušavaju pristupiti bloku lokacije /admin
bit će zamoljeni za autentifikaciju.
server {
listen 80;
server_name example.com www.example.com;
location / {
……..
}
location /admin/ {
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
location /public/{
auth_basic off; #turns off basic http authentication off for this block
}
……..
}
Ako ste konfigurirali osnovnu HTTP autentifikaciju, svi korisnici koji pokušaju pristupiti vašem web poslužitelju ili poddomeni ili određenom dijelu web stranice (ovisno o tome gdje ste to implementirali), bit će zatraženi za korisničko ime i lozinku kao što je prikazano na snimci zaslona u nastavku .
U slučaju neuspjele provjere autentičnosti korisnika, prikazat će se pogreška “Potrebna je autorizacija 401” kao što je prikazano u nastavku.
Više informacija možete pronaći na ograničavanju pristupa s osnovnom HTTP autentifikacijom.
Također biste mogli pročitati sljedeće korisne vodiče koji se odnose na Nginx HTTP poslužitelj.
- Kako lozinkom zaštititi web imenike u Nginxu
- Vrhunski vodič za osiguranje, jačanje i poboljšanje performansi Nginxa
- Postavljanje HTTPS-a s Let’s Encrypt SSL certifikatom za Nginx
U ovom smo vodiču pokazali kako implementirati osnovnu HTTP autentifikaciju u Nginx HTTP web poslužitelju. Za postavljanje bilo kakvih pitanja upotrijebite obrazac za povratne informacije u nastavku.