Navn
hosts_access - format av vert tilgang Linux kontrollfiler.
Beskrivelse
Denne håndboken beskriver Linux som et enkelt tilgangskontroll språk som er basert på klient (vertsnavn / adresse, brukernavn) og server (prosessnavn, vertsnavn / adresse) mønstre. Eksempler er gitt på slutten. Den utålmodige leseren oppfordres til å hoppe over til eksemplene for en rask introduksjon. En utvidet versjon av tilgangskontrollsspråket er beskrevet i hosts_options (5) dokument. Utvidelsene er slått på på programbyggtid ved å bygge med -DPROCESS_OPTIONS.
I den følgende teksten, daemon er prosessnavnet til en nettverksdemonprosess, og klient er navnet og / eller adressen til en vert som ber om tjenesten. Nettverksdemonprosessnavn er spesifisert i Inetd-konfigurasjonsfilen.
Tilgangskontrollfiler
Adgangskontrollprogramvaren konsulterer to filer. Søket stopper ved første kamp.
Tilgang vil bli gitt når et (daemon, klient) par matcher en oppføring i /etc/hosts.allow fil.
Ellers blir tilgang nektet når et (daemon, klient) par matcher en oppføring i /etc/hosts.deny fil.
Ellers vil tilgang bli gitt.
En ikke-eksisterende tilgangskontrollfil behandles som om den var en tom fil. Dermed kan tilgangskontrollen slås av ved å ikke gi tilgangskontrollfiler.
Tilgangskontrollregler
Hver tilgangskontrollfil består av null eller flere linjer med tekst. Disse linjene behandles i rekkefølge av utseende. Søket avsluttes når en kamp er funnet.
Et nybegynnertegn blir ignorert når det går foran en tilbakestilt karakter. Dette tillater deg å bryte opp lange linjer, slik at de er enklere å redigere.
Blanke linjer eller linjer som begynner med et `# 'tegn, ignoreres. Dette tillater deg å sette inn kommentarer og hvitt plass slik at tabellene er enklere å lese.
Alle andre linjer bør tilfredsstille følgende format, ting mellom er valgfrie:
daemon_list: client_list : shell_command
daemon_list er en liste over ett eller flere demon-prosessnavn (argv 0 verdier) eller jokertegn (se nedenfor).
client_list er en liste over ett eller flere vertsnavn, vertsadresser, mønstre eller jokertegn (se nedenfor) som vil bli matchet mot klientens vertsnavn eller adresse.
Jo mer komplekse former nissen @ host og bruker @ host forklares i seksjonene på serverendipunktsmønstre og henholdsvis klientbrukeroppslag.
Listeelementer skal skilles av mellomrom og / eller kommaer.
Med unntak av NIS (YP) nettgroupoppslag, er alle tilgangskontrollkontroller sakfølsomme.
Patterns
Adgangskontrollsspråket implementerer følgende mønstre:
En streng som begynner med en `. ' karakter. Et vertsnavn matches hvis de siste komponentene i navnet samsvarer med det angitte mønsteret. For eksempel matcher mønsteret `. Tue.nl 'vertsnavnet` wzv.win.tue.nl'.
En streng som slutter med en `. ' karakter. En vertsadresse matches hvis de første numeriske feltene stemmer overens med den oppgitte strengen. For eksempel, mønsteret '131.155.' matcher adressen til (nesten) hver vert på Eindhoven Universitets nettverk (131.155.x.x).
En streng som begynner med et `@ '-tegn, behandles som et NIS-nummer (tidligere YP) -nettgruppe. Et vertsnavn matches hvis det er et vertsmedlem i den angitte nettgroup. Netgroup-kamper støttes ikke for demon-prosessnavn eller for brukernavn for klienten.
Et uttrykk for skjemaet "n.n.n.n./m.m.m.m" tolkes som et "net / mask" -par. En IPv4-vertsadresse matches dersom `netto 'er lik den bitvise OG av adressen og` masken'. For eksempel matcher nettverket / maskermønsteret '131.155.72.0/255.255.254.0' hver adresse i området '131.155.72.0' til '131.155.73.255'.
Et uttrykk for skjemaet `n: n: n: n: n: n / m 'tolkes som et` net / prefixlen' par. En IPv6-vertsadresse matches dersom `prefixlen 'biter av` netto' er lik «prefixlen» -bitene i adressen. For eksempel matcher net / prefixlen mønsteret 3ffe: 505: 2: 1 :: / 64 'hver adresse i området `3ffe: 505: 2: 1 ::' gjennom` 3ffe: 505: 2: 1: FFFF: FFFF: FFFF: FFFF'.
En streng som begynner med et `/ 'tegn blir behandlet som et filnavn. Et vertsnavn eller adresse matches hvis det samsvarer med et vertsnavn eller adressemønster som er oppført i den navngitte filen. Filformatet er null eller flere linjer med null eller flere vertsnavn eller adressemønstre skilt av hvitt plass. Et filnavnmønster kan brukes hvor som helst et vertsnavn eller adressemønster kan brukes.
Wildcards `* 'og`?' kan brukes til å matche vertsnavn eller IP-adresser. Denne metoden for samsvarende kan ikke brukes sammen med `net / mask 'matching, vertsnavn matchende begynner med`.' eller IP-adresse som samsvarer med '.'.
joker~~POS=TRUNC
Adgangskontrollspråk støtter eksakte jokertegn, inkludert:
'ALLE'
Den universelle jokertegn, matcher alltid.
'Lokale'
Passer alle verter hvis navn ikke inneholder en punkttegn.
'UKJENT'
Passer alle brukere hvis navn er ukjent, og samsvarer med hvilken som helst vert hvis navn eller adresse er ukjent. Dette mønsteret bør brukes med forsiktighet: vertsnavn kan være utilgjengelig på grunn av midlertidige navneserverproblemer. En nettverksadresse vil ikke være tilgjengelig når programvaren ikke kan finne ut hvilken type nettverk det snakker med.
'Kjent'
Passer alle brukere hvis navn er kjent, og samsvarer med hvilken som helst vert hvis navn og adresse er kjent.Dette mønsteret bør brukes med forsiktighet: vertsnavn kan være utilgjengelig på grunn av midlertidige navneserverproblemer. En nettverksadresse vil ikke være tilgjengelig når programvaren ikke kan finne ut hvilken type nettverk det snakker med.
'PARANOID'
Passer alle verter hvis navn ikke samsvarer med adressen sin. Når tcpd er bygget med -DPARANOID (standardmodus), slipper det forespørsler fra slike klienter, selv før du ser på tilgangskontrolltabellene. Bygg uten -DPARANOID når du vil ha mer kontroll over slike forespørsler.
'operatørenes
'UNNTATT'
Tiltenkt bruk er av formen: `list_1 unntatt list_2 '; Denne konstruksjonen samsvarer med alt som passer list_1 med mindre det samsvarer list_2 . EXCEPT-operatøren kan brukes i daemon_lists og i client_lists. EXCEPT-operatøren kan være nestet: Hvis kontrollspråket tillater bruken av parenteser, vil `bortsett fra b bortsett fra c 'bli analysert som` (unntatt (b unntatt c))'.
Shell kommandoer
Hvis den første-matchede tilgangskontrollregelen inneholder en shell-kommando, blir kommandoen utsatt for% substitusjoner (se neste avsnitt). Resultatet utføres av a / Bin / sh barnprosess med standardinngang, utgang og feil koblet til / Dev / null . Angi en `& 'på slutten av terminalkommandoen hvis du ikke vil vente til den har fullført.
Shell-kommandoer bør ikke stole på PATH-innstillingen til Inetd. I stedet bør de bruke absolutte stinavn, eller de skal begynne med en eksplisitt PATH = uansett setning.
De hosts_options (5) dokumentet beskriver et alternativt språk som bruker shell-kommandofeltet på en annen og inkompatibel måte.
% Utvidelser
Følgende utvidelser er tilgjengelige i shell kommandoer:
% a (% A) - Klient (server) vertsadresse.
% c - Klientinformasjon: bruker @ vert, bruker @ adresse, vertsnavn eller bare en adresse, avhengig av hvor mye informasjon som er tilgjengelig.
% d - Daemon-prosessnavnet (argv 0 -verdi).
% h (% H) - Klient (server) vertsnavn eller adresse, hvis vertsnavnet er utilgjengelig.
% n (% N) - Klienten (server) vertsnavn (eller "ukjent" eller "paranoid").
% p- - Daemon-prosess-id.
% s - Serverinformasjon: daemon @ host, daemon @ adresse, eller bare et demonnavn, avhengig av hvor mye informasjon som er tilgjengelig.
% u - Klient brukernavn (eller "ukjent").
%% - Utvider til et enkelt `% 'tegn.
Tegn i% utvidelser som kan forvirre skallet, erstattes av understreker.
Server Endpoint Patterns
For å skille klienter av nettverksadressen de kobler seg til, bruk mønster på skjemaet:
prosessnavn @ host_pattern: client_list …
Mønstre som disse kan brukes når maskinen har forskjellige internettadresser med forskjellige Internett-vertsnavn. Tjenesteleverandører kan bruke dette anlegget til å tilby FTP-, GOPHER- eller WWW-arkiver med Internett-navn som til og med kan tilhøre ulike organisasjoner. Se også "twist" -alternativet i hosts_options (5) -dokumentet. Noen systemer (Solaris, FreeBSD) kan ha mer enn én internettadresse på ett fysisk grensesnitt; med andre systemer må du kanskje ty til SLIP eller PPP pseudo-grensesnitt som bor i et dedikert nettverksadresserom.
Host_pattern adlyder de samme syntaksreglene som vertsnavn og adresser i client_list-sammenheng. Vanligvis er serverendpointinformasjon bare tilgjengelig med tilkoblingsorienterte tjenester.
Klient brukernavn oppslag
Når klientverten støtter RFC 931-protokollen eller en av sine etterkommere (TAP, IDENT, RFC 1413), kan wrapper-programmene hente ytterligere opplysninger om eieren av en tilkobling. Klient brukernavn informasjon, når tilgjengelig, logges sammen med klientens vertsnavn, og kan brukes til å matche mønstre som:
daemon_list: … user_pattern @ host_pattern …
Daemon wrappers kan konfigureres på kompileringstid for å utføre regeldrevne brukernavnoppslag (standard) eller å forhøre klientens vert alltid. Når det gjelder regeldrevne brukernavnoppslag, vil ovennevnte regel føre til at brukernavnoppslag bare når begge daemon_list og host_pattern kamp.
Et brukermønster har samme syntaks som et demon-prosessmønster, så de samme jokertegnene gjelder (netgroupmedlemskap støttes ikke). Man bør ikke bli båret med brukernavnet oppslag, skjønt.
Klient brukernavn informasjonen kan ikke stole på når det er mest nødvendig, det vil si når klientsystemet er blitt kompromittert. Generelt er ALL og (UN) KNOWN de eneste brukernavnmønstrene som gir mening.
Brukernavneoppslag er bare mulig med TCP-baserte tjenester, og bare når klientverten kjører en passende demon. I alle andre tilfeller er resultatet "ukjent".
En kjent UNIX-kjernefeil kan forårsake tap av tjenesten når brukernavnoppslag er blokkert av en brannmur. Omslaget README-dokumentet beskriver en prosedyre for å finne ut om kjernen din har denne feilen.
Brukernavnesøk kan føre til merkbare forsinkelser for brukere som ikke bruker UNIX. Standard timeout for brukernavn oppslag er 10 sekunder: for kort til å takle langsomme nettverk, men lenge nok til å irritere PC-brukere.
Selektive brukernavnoppslag kan lindre det siste problemet. For eksempel, en regel som:daemon_list: @pcnetgroup ALL @ ALL
vil samsvare med medlemmer av PC-nettgroup uten å bruke brukernavnoppslag, men vil utføre brukernavnoppslag med alle andre systemer. En feil i sekvensnummergeneratoren for mange TCP / IP-implementeringer gjør det mulig for inntrengere å enkelt etterligne pålitelige verter og å bryte inn via, for eksempel, ekstern skalstjeneste.IDENT (RFC931 etc.) -tjenesten kan brukes til å oppdage slike og andre vertsadressespoofingangrep. Før du godtar en klientforespørsel, kan wrapperne bruke IDENT-tjenesten for å finne ut at klienten ikke sendte forespørselen i det hele tatt. Når klientverten gir IDENT-tjeneste, er et negativt IDENT-oppslagssultat (klientkamperen 'UNKNOWN @ host') sterkt bevis på et vertsspoofingangrep. Et positivt IDENT-oppslagresultat (klienten matcher `KNOWN @ host ') er mindre pålitelig. Det er mulig for en inntrenger å spoof både klientforbindelsen og IDENT-oppslaget, selv om det er mye vanskeligere enn å spoofing bare en klienttilkobling. Det kan også være at klientens IDENT-server lyver. Merk: IDENT-oppslag fungerer ikke med UDP-tjenester. Språket er fleksibelt nok til at ulike typer tilgangskontrollpolitikk kan uttrykkes med et minimum av oppstyr. Selv om språket bruker to tilgangskontrolltabeller, kan de vanligste retningslinjene implementeres med en av tabellene som er trivielle eller tom. Når du leser eksemplene nedenfor, er det viktig å innse at tillatelsetabellen blir skannet før nektetabellen, at søket avsluttes når en kamp er funnet, og at tilgangen gis når det ikke finnes noen kamp i det hele tatt. Eksemplene bruker verts- og domenenavn. De kan forbedres ved å inkludere adresse- og / eller nettverks- / nettmaskeinformasjon, for å redusere virkningen av midlertidige navneservere. I dette tilfellet blir tilgang nektet som standard. Bare eksplisitt autoriserte verter er tillatt tilgang. Standardpolicyen (ingen tilgang) er implementert med en triviell nekfil: /etc/hosts.deny: ALL: ALL Dette nekter all service til alle verter, med mindre de har tillatelse til tilgang av oppføringer i tillatelsesfilen. De eksplisitt autoriserte vertene er oppført i tillatelsesfilen. For eksempel: /etc/hosts.allow: ALL: LOCAL @some_netgroupALLE: .foobar.edu unntatt terminalserver.foobar.edu Den første regelen tillater tilgang fra verter i det lokale domenet (ikke `. 'I vertsnavnet) og fra medlemmer av some_netgroup nettgruppa. Den andre regelen tillater tilgang fra alle verter i foobar.edu domene (merk ledende punkt), med unntak av terminalserver.foobar.edu . Her får du tilgang som standard; Bare eksplisitt angitte verter er nektet tjenesten. Standardpolicyen (tilgang gitt) gjør tillatelsesfilen overflødig slik at den kan utelates. De eksplisitt ikke-autoriserte vertene er oppført i denie-filen. For eksempel: /etc/hosts.deny: ALL: Some.host.name, .some.domainAlt unntatt in.fingerd: other.host.name, .other.domain Den første regelen nekter noen verter og domener alle tjenester; Den andre regelen tillater fortsatt fingerforespørsler fra andre verter og domener. Det neste eksemplet tillater tftp-forespørsler fra verter i det lokale domenet (merk ledende punkt). Forespørsler fra andre verter blir nektet. I stedet for den forespurte filen, sendes en fingerprobe til den motsatte verten. Resultatet sendes til superbrukeren. /etc/hosts.allow: in.tftpd: LOCAL, .my.domain/etc/hosts.deny:in.tftpd: ALL: spawn (/ some / where / safe_finger -l @% h | / usr / ucb / mail -s% d-% h root) &
Safe_finger-kommandoen kommer med tcpd wrapper og skal installeres på et passende sted. Det begrenser mulig skade fra data som sendes av den eksterne fingerserveren. Det gir bedre beskyttelse enn standardfingerkommandoen. Utvidelsen av% h (klientverten) og% d (servicenavn) -sekvensene er beskrevet i avsnittet om skallkommandoer. Advarsel: Ikke booby-fange din fingerdamon, med mindre du er forberedt på uendelige fingerløkker. På nettverksbrannmursystemer kan dette trikset videreføres. Den typiske nettverksbrannmuren gir bare et begrenset sett av tjenester til ytre verden. Alle andre tjenester kan bli "bugged" akkurat som eksempelet ovenfor. Resultatet er et utmerket tidlig varslingssystem. tcpd (8) tcp / ip daemon wrapper program.tcpdchk (8), tcpdmatch (8), testprogrammer.
Viktig: Bruke Mann kommando ( % Mann ) for å se hvordan en kommando brukes på din datamaskin. Påvisning av adressespoofingangrep
eksempler
Mest lukket
Mest åpent
Booby Feller
Se også




