HTAccess jelszóvédelmi trükkök
nemrégiben egy olvasó megkérdezte, hogyan lehet jelszóval védeni egy könyvtárat minden megadott IP-hez, miközben mindenki számára nyílt hozzáférést biztosít. A hülye htaccess trükkök című cikkemben megmutatom, hogyan kell jelszóval védeni egy könyvtárat minden IP-hez, kivéve a megadottat, de nem fordított esetben. Ebben a cikkben bemutatom ezt a technikát, valamint számos más hasznos jelszóvédelmi trükköt, köztük néhányat a hülye htaccess trükkök cikkemből. Mielőtt belemennénk a lédús dolgokba, áttekintjük a HTAccess jelszavas védelmének néhány alapját.
HTAccess jelszavas védelem működik lépcsőzetes módon
mielőtt elkezdenénk, van néhány dolog, amit tudnod kell az Apache különböző jelszavas védelmi Irányelvek. Először is, ezek a jelszóvédelmi trükkök arra a könyvtárra vonatkoznak, amelybe helyezik őket. Például a teljes webhely jelszóval történő védelme érdekében ezeket a trükköket a webhelyéhez elérhető root HTAccess fájlba helyezi. A HTAccess direktívákat a könyvtárstruktúrában lépcsőzetes módon alkalmazzák úgy, hogy az összes alkönyvtár is védett legyen.
a jelszóvédelemhez két fájlra van szükség: htaccess és htpasswd
a második dolog, amit tudnod kell, hogy a legtöbb esetben a jelszóvédelem megvalósításának két része van: a .
htaccess
fájl és a .
htpasswd
fájl. A .
htaccess
fájl tartalmazza a cikkben szereplő édes trükkök bármelyikét, míg a .
htpasswd
fájl tartalmazza a szükséges felhasználónevet és a jelszó titkosított változatát.
a .
htpasswd
fájl létrehozásának számos módja van. Ha jól érzi magát a Unix-szal, egyszerűen futtathatja a “htpasswd
” parancsot. Például a következő parancs beírásával létrehoz egy működő jelszófájlt a /home/path/
könyvtárban:
htpasswd -bc /home/path/.htpasswd username password
a jelszófájl elhelyezése az interneten elérhető gyökérkönyvtár felett jó biztonsági intézkedés. Ha megvizsgálja a fájlt a létrehozása után, az egyetlen dolog, amit tartalmaz, egy ehhez hasonló sor:
username:Mx1lbGn.nkP8
Unix parancs futtatása helyett inkább az online jelszógenerátort biztosító 200 000 online szolgáltatás egyikét használhatja.
függetlenül attól, hogy hogyan vagy hol kívánja létrehozni a .
htpasswd
fájlt, tartsa szem előtt a helyét a kapcsolódó HTAccess fájl(ok) ban való felhasználáshoz. És igen, használhat egy .
htpasswd
fájlt több HTAccess fájlhoz, amelyek több könyvtárban vannak elhelyezve.
Tudja meg, hogy az Apache melyik verzióját használja
az alábbi példák mindegyikében az irányelvek egy <IfModule>
tárolóba vannak zárva. Ez megakadályozza a szerver összeomlását, ha a szükséges Apache modulok nem állnak rendelkezésre vagy nincsenek telepítve. Általában a szükséges modulok jelen lesznek, de a <IfModule>
ellenőrzés jó óvintézkedés.
a jelen cikkben található jelszóvédelmi módszerek bármelyikének végrehajtásakor győződjön meg róla, hogy még egyszer ellenőrizze az Apache melyik verzióját használja, mielőtt elkezdené. A cikkben szereplő példák feltételezik, hogy az Apache 1.3 vagy 2.0 verziót használja, mivel a <IfModule>
tárolók ellenőrzik a mod_auth
modul jelenlétét. Így, ha Apache 2.2-t (vagy jobbat) futtat, akkor a jelenlegi <IfModule>
tárolókat a következőkre kell cserélnie:
<IfModule mod_authn_file.c></IfModule>
ha kétségei vannak, kérdezze meg gazdagépét, telepítse a ShowIP Firefox kiterjesztést, vagy ásson körül a szerver vezérlőpultján. És ha csak nem tudod, nem érdekel, vagy nem tudod kitalálni, csak távolítsd el a nyitó és záró <IfModule>
címkéket a használni kívánt módszerből, és nevezd jónak. Nélkülük, ha a szerver nem rendelkezik a szükséges modullal, akkor egyszerűen visszaad egy 500 hibaüzenetet, amely könnyen megoldható a jelszó Irányelvek eltávolításával.
testreszabhatja a párbeszédablakot a jelszó felszólításán
az utolsó dolog, amit tudnia kell, mielőtt belemerülne néhány édes trükkbe, az, hogy testreszabhatja a jelszó felszólításán megjelenő üzenetet a cikk mindegyik példájának következő sorának szerkesztésével:
AuthName "Username and password required"
az idézőjelek belsejében lévő szöveg megváltoztatásával bármilyen nyelvet használhat a jelszó kéréséhez.
tehát most ezen a ponton a kaland, készen állunk, hogy belevetik magukat néhány szaftos HTAccess jelszóvédelmi trükköket..
alapvető jelszavas védelem
webhelyének vagy bármely könyvtárának jelszóvédelméhez helyezze ezt a kódot a hozzá tartozó HTAccess fájlba:
# basic password protection<IfModule mod_auth.c> AuthUserFile /home/path/.htpasswd AuthName "Username and password required" AuthType Basic <Limit GET POST> Require valid-user </Limit></IfModule>
ez körülbelül olyan alapvető, mint ez lesz. Ne felejtse el létrehozni a jelszófájlt, és adja meg a könyvtárat az első sorban. Térjünk át valami érdekesebbre.
nyílt hozzáférés egy IP-hez, jelszóval védett mindenki más
ez a módszer nagyszerű a projektfejlesztés során, ahol nyílt hozzáférést szeretne adni másoknak jelszóval történő hozzáféréssel:
# password protect excluding specific ip<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from 111.222.333.444 Satisfy Any</IfModule>
ha ezt a kódot a védeni kívánt könyvtár HTAccess fájljába helyezi, akkor csak a megadott IP-cím lesz engedélyezett nyílt hozzáférés; mindenki másnak meg kell adnia a megfelelő felhasználónevet és jelszót.
nyílt hozzáférés több IP, jelszóval védett mindenki más
a fenti kód könnyen módosítható, hogy több IP nyílt hozzáférést biztosítson, miközben mindenki mást megtagad:
# password protect excluding specific ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Deny,Allow Deny from all Allow from localhost Allow from 111.222.333.444 Allow from 555.666.777.888 Satisfy Any</IfModule>
annyi IP-t adhat hozzá, amennyire szükséges. Ez a módszer nagyszerű a projektfejlesztés során, ahol a következő feltételek érvényesek:
- a projektfejlesztés továbbra is privát marad a rendszeres látogatók számára
- a hozzáférést az ügyfelek (vagy bárki) a jelszó megadásával biztosíthatják
- a Fejlesztőcsapat tagjai nyílt hozzáféréssel rendelkeznek a saját gépükön
amellett, hogy korlátlan hozzáférést biztosít a csapatához, érdemes lehet bizonyos webszolgáltatásokat szem előtt tartani a következő irányelvek beillesztésével (illessze be a 7865> irányelv):
Allow from validator.w3.org
Allow from jigsaw.w3.org
Allow from google.com
nyílt hozzáférés mindenki számára, aki jelszóval védi az adott IP-címeket
ez a módszer számos helyzetben hasznos, beleértve azokat az eseteket is, amikor blokkolni szeretné a rosszindulatú IP-k listáját.
# password protect only for specified ips<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 111.222.333.444 Deny from 555.666.777.888 Satisfy Any</IfModule>
annyi IP-címet sorolhat fel, amennyi szükséges. A teljes IP-blokkokat is megtagadhatja a cím megfelelő csonkolásával. Például a “999.888
” kezdetű IP-címről érkező személyek blokkolásához a következő irányelvet adjuk hozzá:
Deny from 999.888
További információ arról, hogyan működik ez, lásd a hülye htaccess trükkök cikkem ezen szakaszát.
nyílt hozzáférés mindenki számára, aki jelszóval védi az adott CIDR számot
az előző módszerhez hasonlóan itt van egy technika, amely csak egy kiválasztott CIDR számból igényel jelszót. Ez a módszer hasznos a mega-spammerek, például a RIPE, az Optinet stb. Ha például azon kapod magad, hogy az Apache Deny
direktívákat sor után adod hozzá az első néhány számmal kezdődő címekhez, válassz egyet közülük, és próbáld ki a Whois keresést. A whois eredmények között szerepel a CIDR érték, amely az adott hálózathoz társított összes IP-címet képviseli. Így a CIDR-en keresztüli blokkolás hatékony módja annak, hogy ékesszólóan megakadályozzuk, hogy az elkövető minden IP-példánya hozzáférjen az Ön webhelyéhez. Itt van egy általános példa a CIDR általi blokkolásra:
# password protect only for specified CIDR<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd AuthType Basic Require valid-user Order Allow,Deny Allow from all Deny from 10.1.0.0/16 Deny from 80.0.0/8 Satisfy Any</IfModule>
jelszóval védett egyetlen fájl
számtalanszor használtam ezt a technikát. Egyetlen fájl jelszóvédelméhez egyszerűen adja hozzá ezt a HTAccess fájlhoz:
# password protect single file<IfModule mod_auth.c> <Files "protected.html"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </Files></IfModule>
itt egy “protected.html
” nevű fájlt védünk a hozzáféréstől. A fájl csak a megfelelő felhasználónév és jelszó megadása után lesz elérhető.
több fájl jelszavas védelme
több fájl védelme érdekében a módszer nagyon hasonló, csak ezúttal az Apache FilesMatch
irányelvét használjuk. Ez lehetővé teszi számunkra, hogy felsoroljuk a szükséges fájlokat:
# password protect mulitple files<IfModule mod_auth.c> <FilesMatch "(protected\.html)|(passwords\.txt)"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>
ebben a példában két fájlt védünk jelszóval: “protected.html
” és “passwords.txt
“. Ha többet szeretne hozzáadni, egyszerűen vegye fel a “|(filename\.ext)
” több példányát a fájlok listájába.
több fájltípus jelszóvédelme
ezzel a módszerrel az Apache FilesMatch
irányelvét használjuk több fájltípus jelszóvédelmére. Itt van egy példa:
# password protect mulitple file types<IfModule mod_auth.c> <FilesMatch "\.(inc|txt|log|dat|zip|rar)$"> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic </FilesMatch></IfModule>
miután a helyére került, ehhez a kódhoz jelszó szükséges a következő fájltípusokhoz való hozzáféréshez: .inc
, .txt
, .log
, .dat
, .zip
, és .rar
. Testreszabása az Ön igényeinek megfelelően.
jelszavas védelem mindenhez, kivéve egyetlen fájlt
köszönet Brett Batie-nek ezért a hatékony technikáért, amely lehetővé teszi a hozzáférést egyetlen fájlhoz, miközben minden mást jelszóval véd:
# password protect everything except a single file<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <Files "open-access.html"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </Files></IfModule>
a gyökérkönyvtárba vagy bármely szülőkönyvtárba helyezve ez a kód jelszóval védi mindent, kivéve a “open-access.html
” nevű fájlt, amely maga is bármely későbbi könyvtárban vagy alkönyvtárban található.
annak érdekében, hogy mindent megvédjünk, miközben hozzáférést biztosítunk több fájlhoz, az Apache FilesMatch
irányelvét használhatjuk helyette. Íme egy példa, amely lehetővé teszi a hozzáférést “open-access-1.html
“, “open-access-2.html
“, és “open-access-3.html
“:
# password protect everything except specified files<IfModule mod_auth.c> AuthName "Username and password required" AuthUserFile /home/path/.htpasswd Require valid-user AuthType Basic <FilesMatch "(open-access-1.html)|(open-access-2.html)|(open-access-3.html)"> Order Deny,Allow Deny from all Allow from 123.456.789 Satisfy any </FilesMatch></IfModule>
vegye figyelembe, hogy a fájllistát az alábbiak szerint konszolidálhatjuk:
<FilesMatch "open-access-\.html">
bármely fájlhoz vagy fájlcsoporthoz való nyílt hozzáférés lehetővé tételének alternatív megközelítése az, ha a HTAccess fájlhoz a következő irányelvekkel egészíti ki őket a saját könyvtárukban:
Allow from all
satisfy any
csomagolja be, majd
mint látható, Apache ‘ mod_auth
funkcionalitás lehetővé teszi, hogy konfigurálja csak a jelszóvédelem beállítás lehet szükség. Az Apache lehetővé teszi a fájlok egyszerű és biztonságos védelmét, hogy megakadályozza a hozzáférést bizonyos IP-címekről és tartományokról, hogy csak bizonyos fájlokhoz és könyvtárakhoz férjen hozzá. És még nem is jutottunk el az adott felhasználói és csoportos jogosultságok konfigurálására rendelkezésre álló számos lehetőséghez. Azt hiszem, ezt elteszem egy másik cikkre. Addig is, ha többet szeretne megtudni az Apache erőteljes mod_auth
– ről, nézze meg a hivatalos dokumentációt.