Hosts.allow – Linux parancs

Engedélyezett házigazdák keresése

Valószínűleg azért érkezett ide, hogy megtekinthesse a gazdagépeket (más számítógépeket), amelyek hozzáférhetnek az Önhöz Linux rendszer. Nos, hacsak még nem állított be korlátozásokat, alapértelmezés szerint valószínűleg bármelyik számítógép próbálkozik.

Valójában ez nem teljesen igaz. Az /etc/hosts.allow fájlban vagy az /etc/hosts.deny fájlban meghatározott szabályok nélkül a számítógép átadja a kapcsolatokat a megfelelő alkalmazásoknak. Tehát, ha valaki megpróbál csatlakozni SSH, a kapcsolat megérkezik a Linux rendszerére, ahol átadják az SSH-nak a bejelentkezéshez. Ha nem adják meg a megfelelő hitelesítő adatokat, a kapcsolat meg lesz tagadva.

Ha bizonyos gazdagépek engedélyezettek vagy megtagadtak, a Linux először ellenőrzi ezeket a szabályokat, hogy megtudja, át kell-e engedni a bejövő kérést. Ezután ugyanazt a mintát fogja követni, mint korábban.

Az /etc/hosts.allow fájl tartalmának felsorolásával ellenőrizheti az engedélyezett gazdagépeket.

cat /etc/hosts.allow. 

Ha nem lát ott semmit, a rendszer valószínűleg átenged minden kapcsolatot.

Férfiak számítógépen dolgoznak az irodában
 Yuri_Arcurs/Getty Images

A Hosts.allow fájl használata

Az /etc/hosts.allow fájl segítségével kiválaszthatja, hogy mely számítógépek érhetik el a rendszert. A fájlban egyszerű szöveges szabályokat adhat meg, amelyek megmondják számítógépének, hogyan kezelje a kapcsolatokat. Kezdésként hozzon létre egy szabályt, amely lehetővé teszi bármely számítógép számára az összes szolgáltatást.

MINDEN: MINDEN. 

Ez ennyire egyszerű. Ezután, ha ki akart zárni egy problémás számítógépet, ezt is megteheti.

MINDEN: MINDEN, KIVÉVE 192.168.1.110. 

Számos más kulcsszó is használható különféle számítógép-készletek kezelésére. Például engedélyezheti az összes helyi forgalmat a következőképpen:

ÖSSZES: 192.168.1.0/24. 

Vagy használhatja helyette a „HELYI” kulcsszót.

MINDEN: HELYI. 

Használhat domain neveket is. Például:

MINDEN: .example.com. 

Itt is használhatja az "EXCEPT" kulcsszót egy potenciálisan problémás aldomain kizárásához.

MINDEN: .example.com, KIVÉVE tesztelés.example.com. 

Megadhat szabályokat is bizonyos démonokhoz. Tehát, ha szabályozni szeretné az SSH-hozzáférést, akkor állítson be szabályokat az „sshd” számára.

sshd: HELYI. 

A hosts.allow fájl támogatja a démonok ugyanabban a sorban történő felsorolását, ha a szabályaik megegyeznek. Például:

sshd, in.ftpd: HELYI. 

Figyeld meg a "be". része az "in.ftpd?" Ez lehetővé teszi a bejövő forgalom meghatározását.

Ezután lehetősége van az egészet összerakni.

sshd, in.ftpd: HELYI, KIVÉVE 192.168.1.110. 

Ezek a leggyakoribb módszerek az /etc/hosts.allow fájl használatára a Linux rendszeren. Az /etc/hosts.allow fájllal kapcsolatos műveletek teljes műszaki leírásához folytassa a következő szakaszban.

Műszaki meghibásodás

Ez a kézikönyvoldal a Linuxot egyszerű hozzáférés-vezérlési nyelvként írja le, amely a kliensen (gazdanév/cím, felhasználónév) és szerver (folyamatnév, gazdagépnév/cím) minták. A végén példák találhatók. A türelmetlen olvasót arra biztatjuk, hogy ugorjon a Példák szakaszra a gyors bevezetés érdekében. A hozzáférés-vezérlési nyelv kiterjesztett változatát a hosts_options (5) dokumentum. A bővítmények a program felépítésének idejében kapcsolódnak be a –DPROCESS_OPTIONS használatával.

A következő szövegben démon a hálózati démon folyamat neve, és ügyfél a szolgáltatást kérő gazdagép neve és/vagy címe. A hálózati démon folyamatnevek az inetd konfigurációs fájlban vannak megadva.

Hozzáférés-vezérlő fájlok

A beléptető szoftver kettőt konzultál fájlokat. A keresés leáll az első találatnál.

A hozzáférés akkor lesz megadva, ha egy (démon, kliens) pár egyezik egy bejegyzéssel a /etc/hosts.allowfájlt.

Ellenkező esetben a rendszer megtagadja a hozzáférést, ha egy (démon, kliens) pár egyezik egy bejegyzéssel a/etc/hosts.deny fájlt.

Ellenkező esetben a hozzáférés biztosított.

A nem létező hozzáférés-vezérlő fájlt a rendszer úgy kezeli, mintha üres fájl lenne. Így a hozzáférés-vezérlés kikapcsolható, ha nincs hozzáférés-vezérlési fájl.

Beléptetési szabályok

Minden hozzáférés-vezérlési fájl nulla vagy több sornyi szövegből áll. Ezeket a sorokat a megjelenés sorrendjében dolgozzuk fel. A keresés leáll, ha egyezés található.

Az újsor karaktert figyelmen kívül hagyja, ha egy fordított perjel előzi meg. Ez lehetővé teszi a hosszú sorok felosztását, hogy könnyebben szerkeszthetők legyenek.

Az üres sorokat vagy a „#” karakterrel kezdődő sorokat figyelmen kívül hagyja. Ez lehetővé teszi megjegyzések és szóközök beszúrását, hogy a táblázatok könnyebben olvashatóak legyenek.

Az összes többi sornak meg kell felelnie a következő formátumnak, a [] közötti dolgok nem kötelezőek:

daemon_list: klienslista [: shell_command]

démon_list egy vagy több démon folyamatnév (argv[0] értékek) vagy helyettesítő karakterek listája (lásd alább).

ügyfél lista egy vagy több gazdagépnév, gazdagép cím, minta vagy helyettesítő karakter listája (lásd alább), amelyek az ügyfél hosztnevéhez vagy címéhez illeszkednek.

Az összetettebb formák daemon@host és user@host A kiszolgáló végpontmintázatairól és az ügyfél-felhasználónév-keresésekről szóló szakaszok ismertetik.

A listaelemeket szóközzel és/vagy vesszővel kell elválasztani.

Kivéve a NIS (YP) hálózati csoport keresések, minden beléptetés-ellenőrzés nem tesz különbséget a kis- és nagybetűk között.

Minták

A hozzáférés-vezérlési nyelv a következő mintákat valósítja meg:

`.' karakterlánccal kezdődő karakterlánc karakter. Egy gazdagépnév akkor illeszkedik, ha nevének utolsó összetevői megegyeznek a megadott mintával. Például a `.tue.nl' minta megegyezik a `wzv.win.tue.nl' gazdagépnévvel.

Egy karakterlánc, amely `.'-re végződik. karakter. A gazdagép címe akkor illeszkedik, ha az első numerikus mezői egyeznek az adott karakterlánccal. Például a „131.155” minta. megegyezik (majdnem) minden gazdagép címével az Eindhoven Egyetem hálózatán (131.155.x.x).

A „@” karakterrel kezdődő karakterláncot NIS (korábban YP) hálózati csoportnévként kezeljük. A gazdagép neve akkor illeszkedik, ha a megadott hálózati csoport gazdagép tagja. A hálózati csoportok egyezései nem támogatottak a démonfolyamatok neveihez vagy az ügyfelek felhasználóneveihez.

Az 'n.n.n.n/m.m.m.m' formájú kifejezés 'net/mask' párként értelmezhető. Az IPv4 gazdagép címe megegyezik, ha a „net” egyenlő a cím és a „maszk” bitenkénti ÉS értékével. Például a '131.155.72.0/255.255.254.0' hálózati/maszk minta megfelel minden címnek a '131.155.72.0' és '131.155.73.255' közötti tartományban.

Az „[n: n: n: n: n: n: n: n]/m” formájú kifejezést „[net]/előtag” párként értelmezzük. Az IPv6 gazdagép címe megegyezik, ha a 'net' `prefixlen' bitjei megegyeznek a cím `prefixlen' bitjeivel. Például a [net]/prefixlen minta `[3ffe: 505:2:1::]/64' megfelel minden címnek a `3ffe: 505:2:1::' és `3ffe: 505:2: tartományban. 1:ffff: ffff: ffff: ffff'.

A `/' karakterrel kezdődő karakterláncot a rendszer a fájl név. A gazdagépnév vagy cím akkor illeszkedik, ha megegyezik a megnevezett fájlban felsorolt ​​bármely gazdagépnévvel vagy címmintával. A fájlformátum nulla vagy több sorból áll, nulla vagy több hosztnévvel vagy címmintával, szóközzel elválasztva. A fájlnév-minta bárhol használható, ahol hosztnév vagy címminta használható.

Helyettesítő karakterek `*' és `?' használható hosztnevek illesztésére, ill IP-címek. Ez az illesztési módszer nem használható a `net/mask' illesztéssel együtt, a hosztnév egyezése `.' karakterrel kezdődik. vagy `.'-re végződő IP-cím.

Helyettesítő karakterek

A hozzáférés-vezérlési nyelv támogatja az explicit helyettesítő karaktereket, beleértve:

  • 'ÖSSZES' — Az univerzális helyettesítő karakter, mindig egyezik.
  • 'HELYI' – Minden olyan gazdagépnek megfelel, amelynek a neve nem tartalmaz pont karaktert.
  • 'ISMERETLEN' – Megfelel minden olyan felhasználónak, akinek a neve ismeretlen, és megfelel minden olyan gazdagépnek, amelynek a neve vagy címe ismeretlen. Ezt a mintát óvatosan kell használni: előfordulhat, hogy a gazdagépnevek nem érhetők el ideiglenes névszerver-problémák miatt. A hálózati cím nem lesz elérhető, ha a szoftver nem tudja megállapítani, hogy milyen típusú hálózathoz beszél.
  • 'ISMERT' – Megfelel minden olyan felhasználónak, akinek a neve ismert, és megegyezik minden olyan gazdagéppel, amelynek neve és címe ismert. Ezt a mintát óvatosan kell használni: előfordulhat, hogy a gazdagépnevek nem érhetők el ideiglenes névszerver-problémák miatt. A hálózati cím nem lesz elérhető, ha a szoftver nem tudja megállapítani, hogy milyen típusú hálózathoz beszél.
  • 'PARANOID' – Minden olyan gazdagépnek megfelel, amelynek a neve nem egyezik a címével. Ha a tcpd a -DPARANOID-dal (alapértelmezett mód) épül fel, akkor az ilyen kliensek kéréseit még a hozzáférés-vezérlési táblák megtekintése előtt eldobja. Építsen -DPARANOID nélkül, ha jobban szeretné irányítani az ilyen kéréseket.

„Üzemeltetők”

  • 'KIVÉVE' — A tervezett felhasználás a következő formában van: `lista_1, KIVÉVE lista_2'; ez a konstrukció bármihez illik, ami illik lista_1 hacsak nem egyezik lista_2. Az EXCEPT operátor használható a démon_lists és a client_lists fájlokban. Az EXCEPT operátor beágyazható: ha a vezérlőnyelv lehetővé tenné a zárójelek használatát, az `a EXCEPT b EXCEPT c' az `(a EXCEPT (b EXCEPT c))-ként értelmezhető.
  • Shell parancsok — Ha az elsőként egyező hozzáférés-vezérlési szabály shell-parancsot tartalmaz, akkor a parancs %helyettesítésnek van kitéve (lásd a következő szakaszt). Az eredményt a /bin/sh gyermekfolyamat szabványos bemenettel, kimenettel és hibával csatlakoztatva /dev/null. Adjon meg egy "&" jelet a végén terminál parancs ha nem akarja megvárni, amíg befejeződik. A shell parancsok nem hagyatkozhatnak az inetd PATH beállítására. Ehelyett abszolút elérési útneveket kell használniuk, vagy egy explicit PATH=whatever utasítással kell kezdődniük.

Az hosts_optionsAz (5) dokumentum egy alternatív nyelvet ír le, amely a shell parancsmezőt eltérő és nem kompatibilis módon használja.

% Bővítések

A következő bővítmények érhetők el a shell parancsokon belül:

  • %a (%A) - A kliens (szerver) házigazda cím.
  • %c — Ügyfélinformációk: user@host, user@cím, gazdagépnév vagy csak egy 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) — A kliens (szerver) gazdagép neve vagy címe, ha a gazdagépnév nem elérhető.
  • %n (%N) — Az ügyfél (szerver) állomásneve (vagy "ismeretlen" vagy "paranoid").
  • %p — A démon folyamat id.
  • %s — Szerverinformációk: daemon@host, daemon@address vagy csak egy démonnév, attól függően, hogy mennyi információ áll rendelkezésre.
  • %u — Az ügyfél felhasználóneve (vagy "ismeretlen").
  • %% — Egyetlen `%' karakterré bővül.

A %-os kiterjesztésben szereplő karaktereket, amelyek megzavarhatják a shellt, aláhúzásjelek helyettesítik.

Kiszolgálóvégpont-minták

Ha meg szeretné különböztetni az ügyfeleket a hálózati címük alapján, amelyhez csatlakoznak, használja a következő mintákat:

process_name@host_pattern: ügyféllista... 

Az ehhez hasonló minták akkor használhatók, ha a gépnek különböző internetcímei vannak különböző internetes gazdagépnevekkel. A szolgáltatók ezzel a lehetőséggel FTP, GOPHER vagy WWW archívumot kínálhatnak olyan internetes nevekkel, amelyek akár különböző szervezetekhez is tartoznak. Lásd még a `twist' opciót a hosts_options (5) dokumentumban. Egyes rendszerek (Solaris, FreeBSD) több internetcímmel is rendelkezhetnek egy fizikai felületen; más rendszereknél előfordulhat, hogy SLIP vagy PPP pszeudo interfészeket kell használnia, amelyek egy dedikált hálózati címtérben élnek.

A gazdagép_minta ugyanazoknak a szintaktikai szabályoknak engedelmeskedik, mint a gazdanevek és -címek az ügyféllista kontextusban. A kiszolgálóvégpont-információk általában csak kapcsolatorientált szolgáltatásokkal érhetők el.

Ügyfél felhasználónév keresése

Ha a kliens gazdagép támogatja az RFC 931 protokollt vagy annak egyik leszármazottját (TAP, IDENT, RFC 1413), a wrapper programok további információkat kérhetnek le a kapcsolat tulajdonosáról. A kliens felhasználónév-információi, ha rendelkezésre állnak, a kliens gazdagép nevével együtt kerülnek naplózásra, és felhasználhatók olyan minták egyeztetésére, mint például:

démon_list:... user_pattern@host_pattern... 

A démonburkolók fordításkor konfigurálhatók, hogy szabályvezérelt felhasználónév-kereséseket hajtsanak végre (alapértelmezett), vagy mindig lekérdezzék a kliens gazdagépet. Szabályvezérelt felhasználónév-keresések esetén a fenti szabály csak akkor okozna felhasználónév-keresést, ha mind a démon_list és a host_patternmérkőzés.

A felhasználói minták szintaxisa megegyezik a démon folyamatmintával, ezért ugyanazok a helyettesítő karakterek érvényesek (a hálózati csoport tagság nem támogatott). Nem szabad azonban elragadtatni magát a felhasználónév-keresésekkel.

A kliens felhasználónév információiban nem lehet megbízni, amikor a legnagyobb szükség van rá, azaz amikor az ügyfélrendszert feltörték. Általában az ALL és (UN)KNOWN az egyetlen értelmes felhasználói névminták.

A felhasználónév keresése csak TCP-alapú szolgáltatásokkal lehetséges, és csak akkor, ha az ügyfélgazda megfelelő démont futtat; minden más esetben az eredmény "ismeretlen".

Jól ismert UNIX A kernel hiba szolgáltatásvesztést okozhat, ha a felhasználónév-keresést blokkolja a tűzfal. A wrapper README dokumentum egy eljárást ír le, amellyel kideríthető, hogy a kernelben van-e ez a hiba.

A felhasználónév-keresések észrevehető késéseket okozhatnak a nem UNIX-felhasználók számára. A felhasználónév-keresések alapértelmezett időkorlátja 10 másodperc: túl rövid ahhoz, hogy megbirkózzon a lassú hálózatokkal, de elég hosszú ahhoz, hogy irritálja a PC-felhasználókat.

A felhasználónév szelektív keresése enyhítheti az utolsó problémát. Például egy szabály, mint:

daemon_list: @pcnetgroup ALL@ALL. 

egyezik a pc netgroup tagjaival anélkül, hogy felhasználónév-keresést végezne, de az összes többi rendszerrel végrehajtana felhasználónév-keresést.

Címhamisítási támadások észlelése

Sokak sorszámgenerátorának hibája TCP/IP implementációk lehetővé teszi a behatolók számára, hogy könnyen kiadják magukat a megbízható gazdagépeknek, és betörjenek például a távoli shell szolgáltatáson keresztül. Az IDENT (RFC931 stb.) szolgáltatás használható az ilyen és más gazdagépcím-hamisítási támadások észlelésére.

Az ügyfélkérelem elfogadása előtt a wrapperek az IDENT szolgáltatás segítségével kideríthetik, hogy az ügyfél egyáltalán nem küldte el a kérést. Amikor a kliens gazdagép IDENT szolgáltatást nyújt, a negatív IDENT keresési eredmény (a kliens az `UNKNOWN@host'-nak felel meg) erős bizonyítéka a gazdagép-hamisítási támadásnak.

A pozitív IDENT keresési eredmény (a kliens megfelel a `KNOWN@host'-nak) kevésbé megbízható. Előfordulhat, hogy egy behatoló meghamisítja mind az ügyfélkapcsolatot, mind az IDENT keresést, bár ez sokkal nehezebb, mint egy klienskapcsolat meghamisítása. Az is előfordulhat, hogy az ügyfél IDENT szervere hazudik.

Az IDENT keresések nem működnek az UDP szolgáltatásokkal.

További példák

A nyelv elég rugalmas ahhoz, hogy a különböző típusú hozzáférés-szabályozási szabályok minimális felhajtással kifejezhetők legyenek. Bár a nyelv két hozzáférés-vezérlési táblát használ, a leggyakoribb házirendek megvalósíthatók úgy, hogy az egyik tábla triviális vagy akár üres.

Az alábbi példák olvasásakor fontos észrevenni, hogy az engedélyezési tábla a megtagadás előtt kerül ellenőrzésre táblázatban, hogy a keresés leáll, ha egyezést talál, és a hozzáférést megadják, ha nem található egyezés a címen összes.

A példák gazdagép- és tartományneveket használnak. Javíthatók a cím- és/vagy hálózati/hálózati maszk információival, hogy csökkentsék az ideiglenes névszerver-keresési hibák hatását.

Többnyire zárva

Ebben az esetben a hozzáférés alapértelmezés szerint meg van tiltva. Csak kifejezetten feljogosított gazdagépek férhetnek hozzá.

Az alapértelmezett házirend (nincs hozzáférés) egy triviális tiltófájllal valósul meg:

/etc/hosts.deny:

MINDEN: MINDEN. 

Ez megtagad minden szolgáltatást az összes gazdagéptől, kivéve, ha az engedélyezési fájl bejegyzései engedélyezik számukra a hozzáférést.

A kifejezetten engedélyezett gazdagépek az engedélyezési fájlban vannak felsorolva. Például:

/etc/hosts.allow:

MINDEN: HELYI @some_netgroup
MINDEN: .foobar.edu, KIVÉVE terminalserver.foobar.edu.

Az első szabály engedélyezi a hozzáférést a gazdagépektől a helyi domain (nincs `.' a gazdagép nevében) és a some_netgroup netcsoport. A második szabály lehetővé teszi a hozzáférést az összes gazdagéptől afoobar.edu domain (figyelje meg a vezető pontot), kivéve a terminalserver.foobar.edu.

Többnyire nyitott

Itt alapértelmezés szerint a hozzáférés biztosított; csak a kifejezetten meghatározott gazdagépek szolgáltatását utasítják el.

Az alapértelmezett házirend (hozzáférés megadva) redundánssá teszi az engedélyezési fájlt, így elhagyható. A kifejezetten nem engedélyezett gazdagépek a deny fájlban vannak felsorolva. Például:

/etc/hosts.deny:

MINDEN: valamilyen.gazdagépnév, .valamilyen.domain
MINDEN: MINDEN, KIVÉVE in.fingerd: other.host.name, .other.domain.

Az első szabály megtagadja egyes gazdagépek és tartományok összes szolgáltatását; a második szabály továbbra is engedélyezi az ujjkéréseket más gazdagépektől és tartományoktól.

Booby Traps

A következő példa megengedi tftp kérések a helyi tartomány gazdagépeitől (figyelje meg a vezető pontot). Más házigazdák kérései elutasítva. A kért fájl helyett egy ujjszondát küld a sértő gazdagépnek. Az eredményt elküldik a szuperfelhasználónak.

/etc/hosts.allow:

in.tftpd: HELYI, .sajat.domain
/etc/hosts.deny:
in.tftpd: ALL: spawn (/some/where/safe_finger -l @%h | \
/usr/ucb/mail -s %d-%h root) &

A safe_finger parancsot a tcpd burkoló tartalmazza, és megfelelő helyre kell telepíteni. Korlátozza a távoli ujjszerver által küldött adatok esetleges sérülését. Jobb védelmet nyújt, mint a szabványos ujjparancs.

A %h (kliens gazdagép) és %d (szolgáltatás neve) szekvenciák kibővítését a shell parancsokról szóló részben ismertetjük.

Ne ejtsd csapdába az ujjdémonodat, hacsak nem vagy készen a végtelen ujjhurkokra.

Hálózaton tűzfalrendszerek ez a trükk még tovább vihető. A tipikus hálózati tűzfal csak korlátozott számú szolgáltatást nyújt a külvilág számára. Az összes többi szolgáltatás "hibás" a fenti tftp-példához hasonlóan. Az eredmény egy kiváló korai figyelmeztető rendszer.

Lásd még

tcpd (8) tcp/ip démon burkoló program.
tcpdchk (8), tcpdmatch (8), tesztprogramok.

Használja a Férfi parancs (% Férfi), hogy megtudja, hogyan használható a parancs az adott számítógépen.