Bevezetés

A webkiszolgáló beállítása során gyakran előfordul, hogy a webhelynek vannak olyan részei, amelyekhez korlátozni szeretné a hozzáférést. A webes alkalmazások gyakran saját hitelesítési és engedélyezési módszereket biztosítanak, de maga a webkiszolgáló is használható a hozzáférés korlátozására, ha ezek nem megfelelőek vagy nem állnak rendelkezésre.

Ezzel az útmutatóval bemutatjuk, hogyan lehet jelszóval védeni az eszközöket egy Ubuntu 14.04 alatt futó Apache webkiszolgálón.

Előfeltételek

Az induláshoz hozzáférésre van szüksége egy Ubuntu 14.04 szerverkörnyezethez. A rendszergazdai feladatok elvégzéséhez egy sudo jogosultságokkal rendelkező, nem root felhasználóra lesz szüksége. Egy ilyen felhasználó létrehozásának megtanulásához kövesse az Ubuntu 14.04 szerver kezdeti beállítási útmutatóját.

Az Apache segédprogramcsomag telepítése

A korlátozott tartalmak eléréséhez szükséges jelszavakat tároló fájl létrehozásához egy htpasswd nevű segédprogramot fogunk használni. Ez az Ubuntu tárolókon belül a apache2-utils csomagban található.

Frissítsük a helyi csomagtárat és telepítsük a csomagot a következő parancs beírásával. Használjuk ki az alkalmat, hogy az Apache2 szervert is megragadjuk, ha még nincs telepítve a szerverre:

  • sudo apt-get update
  • sudo apt-get install apache2 apache2-utils

Create the Password File

Most hozzáférünk a htpasswd parancshoz. Ezzel létrehozhatunk egy jelszófájlt, amelyet az Apache a felhasználók hitelesítésére használhat. Erre a célra egy rejtett fájlt hozunk létre .htpasswd néven a /etc/apache2 konfigurációs könyvtárunkban.

Az első alkalommal, amikor ezt a segédprogramot használjuk, hozzá kell adnunk a -c opciót a megadott fájl létrehozásához. A parancs végén megadunk egy felhasználónevet (ebben a példában sammy), hogy létrehozzunk egy új bejegyzést a fájlban:

  • sudo htpasswd -c /etc/apache2/.htpasswd sammy

A parancs megkérdezi, hogy megadjuk-e és megerősítjük-e a felhasználó jelszavát.

Hagyja ki a -c argumentumot minden további felhasználó esetében, amelyet hozzá kíván adni:

  • sudo htpasswd /etc/apache2/.htpasswd another_user

Ha megnézzük a fájl tartalmát, láthatjuk a felhasználónevet és a titkosított jelszót minden egyes bejegyzéshez:

  • cat /etc/apache2/.htpasswd
Output
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Az Apache jelszó-hitelesítés beállítása

Most, hogy van egy fájlunk a felhasználóinkkal és jelszavainkkal olyan formátumban, amelyet az Apache tud olvasni, be kell állítanunk az Apache-t, hogy ellenőrizze ezt a fájlt, mielőtt kiszolgálja a védett tartalmunkat. Ezt kétféleképpen tehetjük meg.

Az első lehetőség az, hogy szerkesztjük az Apache konfigurációját, és hozzáadjuk a jelszavas védelmünket a virtuális hoszt fájlhoz. Ez általában jobb teljesítményt ad, mert így elkerülhető az elosztott konfigurációs fájlok olvasásának költsége. Ha van ilyen lehetőségünk, akkor ez a módszer ajánlott.

Ha nincs lehetőségünk a virtuális hoszt fájl módosítására (vagy ha már használjuk a .htaccess files for other purposes), you can restrict access using an.htaccessfile. Apache uses.htaccess` fájlokat annak érdekében, hogy bizonyos konfigurációs elemeket egy tartalmi könyvtárban lévő fájlban lehessen beállítani. Hátránya, hogy az Apache-nak minden olyan kérésnél, amely a könyvtárat érinti, újra kell olvasnia ezeket a fájlokat, ami hatással lehet a teljesítményre.

Az alábbiakban válassza ki az igényeinek leginkább megfelelő lehetőséget.

A hozzáférés-szabályozás konfigurálása a virtuális hoszt-definíción belül

A virtuális hoszt fájl megnyitásával kezdje, amelyhez korlátozást kíván hozzáadni. Példánkban a 000-default.conf fájlt fogjuk használni, amely az Ubuntu apache csomagján keresztül telepített alapértelmezett virtuális hosztot tartalmazza:

  • sudo nano /etc/apache2/sites-enabled/000-default.conf

Benne, a megjegyzések eltávolításával a fájlnak ehhez hasonlóan kell kinéznie:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>

A hitelesítés könyvtáranként történik. A hitelesítés beállításához egy <Directory ___> blokkal kell megcéloznia a korlátozni kívánt könyvtárat. Példánkban a teljes dokumentumgyökeret korlátozzuk, de módosíthatja ezt a listát, hogy csak egy adott könyvtárat célozzon meg a webtáron belül:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html"> </Directory></VirtualHost>

Ebben a könyvtárblokkban adja meg, hogy Basic hitelesítést kívánunk beállítani. A AuthName esetében válasszuk ki azt a birodalomnevet, amely a hitelesítő adatok megadására való felszólításkor megjelenik a felhasználónak. A AuthUserFile utasítással irányítsuk az Apache-t az általunk létrehozott jelszófájlra. Végül, az erőforrás eléréséhez valid-user-t fogunk kérni, ami azt jelenti, hogy bárki beléphet, aki jelszóval tudja igazolni a személyazonosságát:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory></VirtualHost>

Mentés és bezárás után zárja a fájlt. Indítsa újra az Apache-ot a jelszószabályzat megvalósításához:

  • sudo service apache2 restart

A megadott könyvtárnak most már jelszóval védettnek kell lennie.

Hozzáférés-szabályozás beállítása .htaccess fájlokkal

Ha helyette .htaccess fájlok használatával kívánja beállítani a jelszóvédelmet, akkor az Apache fő konfigurációs fájljának szerkesztésével kell kezdenie, hogy engedélyezze a .htaccess fájlok használatát:

  • sudo nano /etc/apache2/apache2.conf

Keresze meg a <Directory> blokkot a /var/www könyvtárhoz, amelyben a dokumentum gyökere található. Kapcsolja be a .htaccess-feldolgozást a blokkban található AllowOverride utasítás “None”-ról “All”-ra történő módosításával:

/etc/apache2/apache2.conf
. . .<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted</Directory>. . .

Mentés és a fájl bezárása után.

A következő lépésben hozzá kell adnunk egy .htaccess-fájlt a korlátozni kívánt könyvtárhoz. Bemutatónkban a teljes dokumentumgyökeret (a teljes webhelyet) korlátozzuk, amely a /var/www/html címen található, de ezt a fájlt bármelyik könyvtárba elhelyezheti, amelyikhez a hozzáférést korlátozni kívánja:

  • sudo nano /var/www/html/.htaccess

Ebben a fájlban adjuk meg, hogy a Basic hitelesítést szeretnénk beállítani. A AuthName esetében válasszuk ki azt a birodalomnevet, amely a hitelesítő adatok megadására való felszólításkor megjelenik a felhasználónak. A AuthUserFile utasítással irányítsuk az Apache-t az általunk létrehozott jelszófájlra. Végül egy valid-user-t fogunk megkövetelni az erőforrás eléréséhez, ami azt jelenti, hogy bárki beléphet, aki jelszóval tudja igazolni a személyazonosságát:

/var/www/html/.htaccess
AuthType BasicAuthName "Restricted Content"AuthUserFile /etc/apache2/.htpasswdRequire valid-user

Mentsük el és zárjuk be a fájlt. Indítsa újra a webkiszolgálót, hogy jelszóval védje az összes tartalmat a .htaccess fájlt tartalmazó könyvtárban vagy az alatt:

  • sudo service apache2 restart

A jelszóhitelesítés megerősítése

A tartalom védelmének megerősítéséhez próbálja meg elérni a korlátozott tartalmat egy webböngészőben. Meg kell jelennie egy felhasználónév és jelszó kérésnek, amely így néz ki:

Ha helyesen adja meg a hitelesítő adatokat, akkor engedélyezi a tartalomhoz való hozzáférést. Ha rossz hitelesítő adatokat ad meg, vagy megnyomja a “Mégsem” gombot, akkor a “Nem engedélyezett” hibaoldal fog megjelenni:

Következtetés

Most már minden szükséges eszközzel rendelkeznie kell ahhoz, hogy beállítsa az alapvető hitelesítést a webhelyén. Ne feledje, hogy a jelszóvédelmet SSL-titkosítással kell kombinálni, hogy a hitelesítő adatok ne egyszerű szövegben kerüljenek a szerverre. Ha szeretné megtanulni, hogyan hozzon létre egy saját aláírású SSL-tanúsítványt az Apache-hoz, kövesse ezt az útmutatót. Kereskedelmi tanúsítvány telepítéséhez kövesse ezt az útmutatót.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.