NÉV
hosts_access - a gazda-hozzáférés-vezérlő fájlok formátuma
LEÍRÁS
Ez a kézikönyv oldal egy egyszerű hozzáférés-vezérlési nyelvet ír le, amely az ügyfélen (gazdanév / cím, felhasználói név) és kiszolgálón (folyamatnév, gazdanév / cím) alapul. Példák a végén. A türelmetlen olvasót arra ösztönözzük, hogy a gyorsasági bevezetéshez ugorjon az EXAMPLES részhez.
A hozzáférés-vezérlési nyelv kiterjesztett verzióját a hosts_options (5) dokumentum írja le. A bővítmények a program-készítési időben bekapcsolva a -DPROCESS_OPTIONS paranccsal épülnek fel.
A következő szövegben a daemon egy hálózati démonfolyamat neve, és az ügyfél az állomáskérő szolgáltatás neve és / vagy címe. A hálózati démon folyamatneveket az inetd konfigurációs fájl tartalmazza.
ACCESS CONTROL FILES
A hozzáférés-vezérlő szoftver két fájlt vizsgál meg. A keresés az első mérkőzésen megáll:
*
Hozzáférést kapunk, ha egy (démon, ügyfél) páros egy adott bejegyzést illeszt be az /etc/hosts.allow fájlba.
*
Ellenkező esetben a hozzáférés meg fog tagadni, ha egy ( démon , kliens) pár megfelel egy bejegyzésnek az /etc/hosts.deny fájlban.
*
Ellenkező esetben a hozzáférés megtörténik.
A nem létező hozzáférési vezérlő fájlt úgy kezeljük, mintha üres fájl lenne. Így a hozzáférés-vezérlés kikapcsolható a hozzáférés-vezérlési fájlok megadása nélkül.
BELÉPÉS-ELLENŐRZÉSI SZABÁLYOK
Minden beléptető állomány nulla vagy több szövegsorból áll. Ezek a sorok a megjelenés sorrendjében kerülnek feldolgozásra. A keresés akkor fejeződik be, amikor egy találatot talál.
*
Az újsoros karaktert figyelmen kívül hagyja, ha előz meg egy hátsó karakter. Ez lehetővé teszi a hosszú sorok felosztását, hogy azok könnyebben szerkeszthetők legyenek.
*
A "#" karakterrel kezdődő üres sorokat vagy sorokat figyelmen kívül hagyja. Ez lehetővé teszi, hogy beillesztse a megjegyzéseket és a szóközöket, hogy könnyebben olvashatóak legyenek a táblázatok.
*
Az összes többi sornak meg kell felelnie a következő formátumnak: a [] opciók választhatóak:
daemon_list: ügyfél_list [: shell_command]
A daemon_list egy vagy több démon folyamat nevét (argv [0] értékeket) vagy a helyettesítő karaktereket (lásd alább) tartalmazza.
A client_list egy vagy több gazdanevet , gazdagépet, mintát vagy helyettesítő (lásd alább) listát tartalmaz, amely a kliens gazdanevének vagy címének felel meg.
A bonyolultabb démon @ host és a felhasználó @ gazdagépeket a kiszolgáló végpont-mintáinak és az ügyfél-felhasználónév-lekérdezések szakaszainak magyarázata ismerteti.
A listaelemeket üres és / vagy vesszővel kell elválasztani.
A NIS (YP) netgroup lekérdezések kivételével minden beléptető ellenőrzés csekély jelentőségű.
MINTÁK
A hozzáférés-szabályozási nyelv a következő mintákat alkalmazza:
*
Egy olyan karakterlánc, amely egy `. ' karakter. A gazdagép illeszkedik, ha a neve utolsó összetevője megegyezik a megadott mintával. Például a `.tue.nl 'minta megfelel a` wzv.win.tue.nl' gazdanévnek.
*
Egy string, amely egy `. ' karakter. A gazdaszámítógép címét akkor adják meg, ha az első numerikus mezők megfelelnek az adott karakterláncnak. Például a "131.155" minta. megegyezik az Eindhoven Egyetemi Hálózat (majdnem) minden állomásának címével (131.155.xx).
*
Egy "@" karakterrel kezdődő karakterlánc NIS (korábban YP) netgroup névként kezelendő. A gazdanév akkor egyezik meg, ha a megadott hálózati csoport fogadó tagja. A hálózati csoportos egyezések nem támogatottak a démonfolyamatok neveihez vagy az ügyfél felhasználói nevekhez.
*
Az "nnnn / mmmm" formanyomtatványt "net / mask" pártként értelmezzük. Egy IPv4-gazdagépet egyeznek meg, ha a "net" egyenlő a címet a bit és a cím és a "maszk" értékével. Például a "131.155.72.0/255.255.254.0" háló / maszk mintázat megegyezik a "131.155.72.0" tartományban lévő összes címre a `131.155.73.255 'címen.
*
Az [n: n: n: n: n: n: n: n] / m formátumú kifejezést "[net] / prefixlen" -ként értelmezik. Egy IPv6-gazdagépet egyeznek meg, ha a "prefixlen" bitjei "net" -nek felelnek meg a cím "prefixlen" bitjeinek. Például a [net] / prefixlen minta [3ffe: 505: 2: 1 ::] / 64 'megfelel minden címnek a' 3ffe: 505: 2: 1 :: 'tartományban a `3ffe: 505: 2: 1: ffff: ffff: ffff: ffff”.
*
A `/ 'karakterrel kezdődő karakterláncot fájlnévnek kell tekinteni. A gazdagép neve vagy címe megegyezik, ha megfelel a megadott fájlban felsorolt gazdanévnek vagy címmintának. A fájlformátum nulla vagy több olyan sor, ahol nulla vagy több gazdagépnév vagy címminták vannak elrendezve. A fájlnév minta használható bárhol, ahol a gazdagép vagy a címmintázat használható.
*
A `* 'és a`? "Karakterkészletek használható hostnevek vagy IP-címek illesztésére. Ez a leképezési módszer nem használható a `net / maszk" illesztéssel kombinálva, a `. 'Kezdődő gépnév illesztése. vagy az IP címet a `. 'végződéssel végezzük.
Helyettesítő karakterek
A hozzáférés-szabályozási nyelv támogatja a kifejezett karakterkészleteket:
MINDEN
Az univerzális helyettesítő, mindig megegyezik.
HELYI
Minden olyan állomásnak felel meg, amelynek neve nem tartalmaz dot karaktert.
ISMERETLEN
Olyan felhasználóknak felel meg, akiknek a neve ismeretlen, és megfelel minden olyan állomásnak, amelynek neve vagy címe ismeretlen. Ezt a mintát óvatosan kell használni: a gazdanevek nem érhetők el ideiglenes névkiszolgálói problémák miatt. A hálózati cím nem lesz elérhető, ha a szoftver nem tudja megmondani, hogy milyen típusú hálózattal beszél.
ISMERT
Megfelel minden olyan felhasználónak, akinek a neve ismert, és megfelel minden állomásnak, amelynek neve és címe ismert. Ezt a mintát óvatosan kell használni: a gazdanevek nem érhetők el ideiglenes névkiszolgálói problémák miatt. A hálózati cím nem lesz elérhető, ha a szoftver nem tudja megmondani, hogy milyen típusú hálózattal beszél.
PARANOID
Megtalál minden olyan állomást, amelynek neve nem egyezik a címével. Ha a tcpd a -DARANOID (alapértelmezett) móddal épül fel, az ilyen ügyfelektől érkező kérelmeket még a hozzáférési vezérlő táblák megtekintése előtt is le kell állítani. Build-without -DPARANOID nélkül, ha több ellenőrzést szeretne igénybe venni az ilyen kéréseknél.
OPERATORS
KIVÉVE
A rendeltetésszerű használat az alábbi formában található: `list_1 EXCEPT list_2 '; ez a konstrukció megegyezik a list1-nek megfelelõkkel, kivéve ha megfelel a list_2-nek . Az EXCEPT operátor használható démonlistákban és ügyféllistákban. Az EXCEPT operátor beágyazható: ha a vezérlőnyelv lehetővé teszi a zárójelek használatát, akkor a "EXCEPT b EXCEPT c" kifejezést "(EXCEPT (b EXCEPT c))" elemzésként értelmezhetjük ".
SHELL COMMANDS
Ha az első illeszkedő hozzáférés-vezérlési szabály egy shell parancsot tartalmaz, akkor a parancsot % helyettesítéseknek vetik alá (lásd a következő részt). Az eredményt egy / bin / sh child processzel végezzük, amely szabványos bemenettel, kimenettel és hibával kapcsolódik a / dev / nullhoz . Adjon meg egy parancsot a parancs végén, ha nem akarja megvárni, amíg befejeződik.
A Shell parancsok nem támaszkodhatnak az inetd PATH beállítására. Ehelyett abszolút elérési utakat kell használnia, vagy egy explicit PATH = bármilyen állítással kell kezdődnie.
A hosts_options (5) dokumentum olyan alternatív nyelvet ír le, amely a parancsértelmező mezőt eltérő módon és inkompatibilis módon használja.
BŐVÍTÉSEK
A következő kiterjesztések a shell parancsok alatt érhetők el:
% a (% A)
Az ügyfél (kiszolgáló) gazdagép címe.
% c
Az ügyfél adatai: felhasználó @ host, user @ cím, gazdanév vagy csak cím, attól függően, hogy mennyi információ áll rendelkezésre.
% d
A démon folyamat neve (argv [0] érték).
% h (% H)
Az ügyfél (kiszolgáló) gazdanév vagy cím, ha a gazdanév nem érhető el.
% n (% N)
Az ügyfél (kiszolgáló) gazdanév (vagy "ismeretlen" vagy "paranoid").
% p
A démon folyamat id.
% s
A kiszolgáló adatai: daemon @ host, daemon @ cím, vagy csak egy démon neve, attól függően, hogy mennyi információ áll rendelkezésre.
% u
Az ügyfél felhasználói neve (vagy "ismeretlen").
%%
Egyetlen "%" karakterre bővül.
A héj összetévesztését okozó% -os bővítésekben szereplő karaktereket aláhúzás jelöli.
SERVER ENDPOINT PATTERNS
Annak érdekében, hogy megkülönböztesse az ügyfeleket az általuk csatlakozott hálózati címhez, használja az űrlap mintáit:
folyamat_neve @ host_pattern: ügyfél_list ...
Az ilyen minták akkor használhatók, ha a gép különböző internetes címeket tartalmaz különböző internetes állomásnevekkel. A szolgáltatók ezt a lehetőséget használhatják az olyan FTP, GOPHER vagy WWW archívumok számára, amelyek internetes nevekkel rendelkeznek, és amelyek akár különböző szervezetekhez is tartozhatnak. Lásd még a "twist" opciót a hosts_options (5) dokumentumban. Egyes rendszerek (Solaris, FreeBSD) egynél több internetes címet tartalmazhatnak egy fizikai interfészen; más rendszerekkel esetleg SLIP vagy PPP pszeudo interfészekhez kell fordulni, amelyek egy dedikált hálózati címtartományban élnek.
A host_pattern ugyanazokat a szintaxisokat ismeri el, mint a gazdagépek és címek a klienslistában. Általában a kiszolgáló végpont információi csak kapcsolódási szolgáltatásokkal érhetők el.
AZ ÜGYFÉL FELHASZNÁLÓI VIZSGÁLATA
Ha az ügyfélgép támogatja az RFC 931 protokollt vagy az egyik leszármazottját (TAP, IDENT, RFC 1413), a csomagolóprogramok további információkat találhatnak a kapcsolat tulajdonosairól. Az ügyfelek felhasználónevének adatai, ha rendelkezésre állnak, az ügyfél-gazdanévvel együtt kerülnek naplózásra, és felhasználhatók a következő mintákhoz:
daemon_list: ... user_pattern @ host_pattern ...
A démoncsomagolók fordítási idő alatt beállíthatók szabály-alapú felhasználónév-lekérdezések végrehajtásához (alapértelmezett), vagy mindig megkérdezhetik az ügyfélfiókot. Szabály-alapú felhasználónév-keresések esetében a fenti szabály csak akkor hozza létre a felhasználónév-keresést, ha a démon_list és a host_pattern is egyeznek.
A felhasználói mintának ugyanaz a szintaxisa, mint a démon folyamatmintája, ezért ugyanazok a helyettesítő karakterek érvényesek (a netgroup tagság nem támogatott). A felhasználónevek lekérdezéseit azonban nem szabad elviselni.
*
Az ügyfél-felhasználónév adatait nem lehet megbízni abban az esetben, amikor a legtöbbre szükség van, azaz amikor az ügyfélrendszer sérült. Általánosságban elmondható, hogy az ALL és az (UN) KNOW az egyetlen olyan felhasználói névmintázat, amely értelmes.
*
A felhasználónevek keresése csak TCP-alapú szolgáltatások esetén lehetséges, és csak akkor, ha az ügyfélfiók megfelelő démont futtat; minden más esetben az eredmény "ismeretlen".
*
A jól ismert UNIX rendszermag hibát okozhat, ha a felhasználónév-kereséseket blokkolja egy tűzfal. A wrapper README dokumentum leír egy eljárást annak megállapítására, hogy a rendszermagnak van-e hibája.
*
A felhasználónév-keresések észrevehető késedelmet okozhatnak a nem UNIX-felhasználók számára. A felhasználónév-keresések alapértelmezett időtúllépése 10 másodperc: túl rövid ahhoz, hogy megbirkózzon a lassú hálózatokkal, de elég hosszú ahhoz, hogy bosszantsa a PC-felhasználókat.
A szelektív felhasználónév-felkutatások enyhíthetik az utolsó problémát. Például olyan szabály, mint például:
daemon_list: @pcnetgroup ALL @ ALL
a pc netgroup tagjai a felhasználónév-keresések elvégzése nélkül egyeznek a felhasználókkal, ugyanakkor minden más rendszerrel végrehajtják a felhasználónév-kereséseket.
A CÍMKÉZISEK BEHELYEZÉSE
A számos TCP / IP implementáció sorozatszám-generátorában a hibák lehetővé teszik a betolakodók számára, hogy könnyen beolvassák a megbízható állomásokat, és betörhetnek például a távoli héj-szolgáltatáson keresztül. Az IDENT (RFC931 stb.) Szolgáltatás fel lehet használni ilyen és egyéb címzett spoofing támadások észlelésére.
Mielőtt elfogadja az ügyfélkérést, a csomagolók az IDENT szolgáltatást használhatják annak megállapítására, hogy az ügyfél egyáltalán nem küldte el a kérelmet. Amikor az ügyfél-gazdagép IDENT szolgáltatást nyújt, egy negatív IDENT keresési eredmény (az ügyfél megfelel az "UNKNOWN @ host" -nak) erős bizonyítékot szolgáltat a host-spoofing támadásra.
A pozitív IDENT keresési eredmény (az ügyfél megegyezik a "KNOWN @ host" -gal) kevésbé megbízható. Lehetséges, hogy egy betolakodó mind az ügyfélkapcsolatot, mind az IDENT keresést megtévesztheti, bár ez sokkal nehezebb, mint az ügyfélkapcsolat megcsonkítása. Lehet, hogy az ügyfél IDENT-kiszolgálója hazudik.
Megjegyzés: Az IDENT lekérdezések nem működnek az UDP szolgáltatással.
PÉLDÁK
A nyelv elég rugalmas ahhoz, hogy a hozzáférés-szabályozási politika különböző típusai minimálisan felmerülhessenek. Bár a nyelv két hozzáférési vezérlő táblát használ, a legáltalánosabb irányelvek végrehajthatók, ha az egyik táblázat triviális vagy akár üres.
Az alábbi példák olvasása során fontos észrevenni, hogy a letiltási táblázatot a megtagadási táblázat előtt ellenőrzi, hogy a keresés befejeződik, amikor egy találatot talál, és a hozzáférés akkor érhető el, ha egyáltalán nincs találat.
A példák a gazda- és domainneveket használják. Javíthatók a cím- és / vagy hálózati / hálómaszk-információk bevitelével, hogy csökkentse az ideiglenes névkiszolgáló-keresési hibák hatását.
Legtöbbször ZÁRT
Ebben az esetben a hozzáférés alapértelmezés szerint megtagadható. Csak a kifejezetten engedélyezett gazda engedélyezett.
Az alapértelmezett házirend (nincs hozzáférés) egy triviális tagadási fájllal valósul meg:
/etc/hosts.deny: ALL: ALL
Ez megtagadja az összes kiszolgálót minden állomás számára, hacsak nem engedélyezettek a hozzáférési fájl bejegyzései.
A kifejezetten engedélyezett gazdagépeket a engedélyező fájl tartalmazza. Például:
/etc/hosts.allow: ALL: LOCAL @some_netgroup
MINDEN: .foobar.edu EXCEPT terminalserver.foobar.edu
Az első szabály lehetővé teszi a helyi domainben lévő gazdagépek (a gazdagépnévben nem található "." És a net_group csoport tagjait. A második szabály lehetővé teszi a foobar.edu tartomány összes állomásához való hozzáférést (észleli a vezető pontot), kivéve a terminalserver.foobar.edu fájlt .
LEGYEN NYITOTT
Itt a hozzáférés alapértelmezés szerint megadható; csak a kifejezetten megnevezett állomásokat utasítják el a szolgáltatás.
Az alapértelmezett házirend (hozzáférési engedély) teszi lehetővé az engedélyező fájlt, hogy elhagyható legyen. Az expliciten nem engedélyezett gazdagépeket a deny fájl tartalmazza. Például:
/etc/hosts.deny: ALL: some.host.name, .some.domain
MINDEN KIVÉVE in.fingerd: other.host.name, .other.domain
Az első szabály tagadja a házigazdák és domainek minden szolgáltatását; a második szabály továbbra is lehetővé teszi a többi gazda és domain domain ujjkérését.
BOOBY TRAPS
A következő példa lehetővé teszi a tftp kéréseket a helyi tartománybeli gazdagépektől (észreveheti a vezető pontot). A többi állomástól érkező kérések megtagadhatók. A kért fájl helyett egy ujjlenyomatot küld a sértő állomásnak. Az eredményt elküldjük a feletteseknek.
/etc/hosts.allow:
in.tftpd: LOCAL, .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ valami / hol / safe_finger -l @% h | \ / usr / ucb / mail -s% d-% h root) &A safe_finger parancs a tcpd csomagolóanyaggal érkezik, és megfelelő helyen kell telepíteni. Ez korlátozza a távoli ujj szerver által küldött adatok esetleges károsodását. Jobb védelmet nyújt, mint a szabványos ujjparancs.
A% h (kliens állomás) és a% d (szolgáltatásnév) szekvenciák kiterjesztését a shell parancsok szakaszában ismertetjük.
Figyelmeztetés: ne csípje meg az ujjademonját, hacsak nem készen áll a végtelen ujjhurokra.
A hálózati tűzfal rendszereken ez a trükk még tovább fut. A tipikus hálózati tűzfal csak korlátozott számú szolgáltatást nyújt a külvilág számára. Minden más szolgáltatást "bugged" lehet, mint a fenti tftp példát. Az eredmény egy kiváló korai figyelmeztető rendszer.
Fontos: Az ember paranccsal ( % man ) tekintse meg, hogyan használják a parancsot az adott számítógépen.
kapcsolódó cikkek