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
Outputsammy:$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:
<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:
<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:
<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:
. . .<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:
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.