Az alapvető HTTP-hitelesítés konfigurálása az Nginxben
Az alapvető HTTP-hitelesítés egy olyan biztonsági mechanizmus, amely egyszerű felhasználónév/jelszó hitelesítés beállításával korlátozza a hozzáférést a webhelyhez/alkalmazáshoz vagy annak egyes részeihez. Alapvetően a teljes HTTP-kiszolgáló, az egyes szerverblokkok (virtuális gazdagépek az Apache-ban) vagy a helyblokkok védelmére használható.
Olvassa el még: Név- és IP-alapú virtuális gazdagépek (szerverblokkok) beállítása az NGINX segítségével
Ahogy a neve is sugallja, ez nem egy biztonságos módszer, amelyre támaszkodhat; más megbízhatóbb biztonsági intézkedésekkel együtt kell használnia. Például, ha webalkalmazása HTTP-n fut, akkor a felhasználói hitelesítő adatok sima szövegben kerülnek továbbításra, ezért érdemes megfontolni a HTTPS engedélyezését.
Ennek az útmutatónak az a célja, hogy segítsen hozzáadni egy kicsi, de hasznos biztonsági réteget a privát/kiváltságos tartalmak védelmére a webalkalmazásaiban (például, de nem kizárólagosan a rendszergazdai oldalon). Használhatja azt is, hogy megakadályozza a még fejlesztési fázisban lévő webhelyhez vagy alkalmazáshoz való hozzáférést.
Követelmények
- Telepítse a LEMP Stack-et a CentOS/RHEL 7 rendszerben
- Telepítse a LEMP Stack-et Ubuntu/Debian-ba
Hozzon létre HTTP-hitelesítési felhasználói fájlt
Kezdje egy olyan fájl létrehozásával, amely a felhasználónév:jelszó
párokat tárolja. A fájl létrehozásához az Apache HTTP Server htpasswd segédprogramját fogjuk használni.
Először ellenőrizze, hogy az apache2-utils vagy a httpd-tools, a htpasswd segédprogramot biztosító csomagok telepítve vannak-e a rendszeren, ellenkező esetben futtassa a megfelelő parancsot az Ön disztribúciója a telepítéshez:
yum install httpd-tools [RHEL/CentOS]
sudo apt install apache2-utils [Debian/Ubuntu]
Ezután futtassa az alábbi htpasswd parancsot a jelszófájl létrehozásához az első felhasználóval. A -c
opció a passwd fájl megadására szolgál, miután az [Enter] lenyomása után meg kell adnia a felhasználói jelszót.
htpasswd -c /etc/nginx/conf.d/.htpasswd developer
Adjon hozzá egy második felhasználót, és ne használja itt a -c
opciót.
htpasswd /etc/nginx/conf.d/.htpasswd admin
Most, hogy a jelszófájl készen áll, folytassa a webszerver azon részeinek konfigurálásával, amelyekhez korlátozni szeretné a hozzáférést. A jelszófájl tartalmának megtekintéséhez (amely felhasználóneveket és titkosított jelszavakat is tartalmaz), használja az alábbi cat parancsot.
cat /etc/nginx/conf.d/.htpasswd
Konfigurálja a HTTP-hitelesítést az Nginx számára
Amint azt korábban említettük, korlátozhatja a hozzáférést a webszerverhez, egyetlen webhelyhez (a szerverblokk használatával) vagy egy hely direktívával. Ennek eléréséhez két hasznos irányelv használható.
- auth_basic – bekapcsolja a felhasználónév és jelszó érvényesítését a „HTTP Basic Authentication” protokoll használatával.
- auth_basic_user_file – a jelszófájlt adja meg.
Jelszavas védelme Nginx Virtual Hosts
A teljes webszerver alapvető hitelesítésének megvalósításához, amely minden kiszolgálóblokkra vonatkozik, nyissa meg az /etc/nginx/nginx.conf fájlt, és adja hozzá az alábbi sorokat a http kontextusban:
http{
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
……...
}
Jelszavas védelme Nginx webhely vagy tartomány
Egy adott domain vagy aldomain alapszintű hitelesítésének engedélyezéséhez nyissa meg a konfigurációs fájlt az /etc/nginx/conf.d/ vagy az /etc/nginx/conf/sites-available alatt. (attól függően, hogy hogyan telepítette az Nginxet), majd adja hozzá az alábbi konfigurációt szerverblokkban vagy kontextusban:
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
location / {
……..
}
……...
}
Jelszóvédett webcímtár az Nginxben
Az alapszintű hitelesítést helyirányelvben is engedélyezheti. Az alábbi példában minden felhasználót hitelesítésre kell kérni, aki megpróbál hozzáférni a /admin
helyblokkhoz.
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
}
……..
}
Ha beállította az alapvető HTTP-hitelesítést, minden olyan felhasználótól, aki megpróbál hozzáférni a webszerverhez vagy egy aldomainhez vagy a webhely meghatározott részéhez (attól függően, hogy hol valósította meg), a rendszer felhasználói nevet és jelszót kér az alábbi képernyőképen látható módon. .
Sikertelen felhasználói hitelesítés esetén a „401-es engedélyezés szükséges” hibaüzenet jelenik meg az alábbiak szerint.
További információkat találhat a hozzáférés korlátozásáról az alapvető HTTP-hitelesítéssel.
Érdemes lehet elolvasni a következő hasznos Nginx HTTP szerverrel kapcsolatos útmutatókat is.
- Hogyan lehet jelszóval védeni a webes könyvtárakat az Nginxben
- A végső útmutató az Nginx biztonságossá tételéhez, megerősítéséhez és teljesítményének javításához
- HTTPS beállítása a Let’s Encrypt SSL-tanúsítvánnyal az Nginx számára
Ebben az útmutatóban bemutattuk, hogyan lehet megvalósítani az alapvető HTTP-hitelesítést az Nginx HTTP webszerveren. Ha bármilyen kérdése van, használja az alábbi visszajelzési űrlapot.