Navn
hosts_access - format for værtsadgang Linux kontrolfiler.
Beskrivelse
Denne vejledning beskriver Linux som et enkelt adgangskontrolsprog, der er baseret på klient (værtsnavn / adresse, brugernavn) og server (procesnavn, værtsnavn / adresse) mønstre. Eksempler er givet i slutningen. Den utålmodige læser opfordres til at springe til eksemplet sektionen for en hurtig introduktion. En udvidet version af adgangskontrolsproget beskrives i hosts_options (5) dokument. Udvidelserne tændes ved programbyggetiden ved at bygge med -DPROCESS_OPTIONS.
I den følgende tekst, dæmon er procesnavnet på en netværksdemon proces, og klient er navnet og / eller adressen til en vært, der anmoder om service. Netværksdemon-procesnavne er angivet i inetd-konfigurationsfilen.
Adgangskontrolfiler
Adgangskontrolsoftwaren konsulterer to filer. Søgningen stopper ved første kamp.
Adgang vil blive givet, når et (daemon, klient) par matcher en post i /etc/hosts.allow fil.
Ellers vil adgang nægtes, når et (daemon, klient) par matcher en post i /etc/hosts.deny fil.
Ellers vil der blive givet adgang.
En ikke-eksisterende adgangskontrolfil behandles som om den var en tom fil. Dermed kan adgangskontrollen slukkes ved ikke at give adgangskontrollfiler.
Adgangskontrolregler
Hver adgangskontrolfil består af nul eller flere tekstlinjer. Disse linjer behandles i udseende. Søgen afsluttes, når en match er fundet.
En newline-karakter ignoreres, når den går forud for et backslash-tegn. Dette tillader dig at opdele lange linjer, så de er lettere at redigere.
Blanke linjer eller linjer, der begynder med et `# 'tegn, ignoreres. Dette tillader dig at indsætte kommentarer og hvide rum, så tabellerne er nemmere at læse.
Alle andre linjer skal opfylde følgende format, ting mellem er valgfrie:
daemon_list: client_list : shell_command
daemon_list er en liste over et eller flere dæmon procesnavne (argv 0 værdier) eller jokertegn (se nedenfor).
client_list er en liste over et eller flere værtsnavne, værtsadresser, mønstre eller jokertegn (se nedenfor), som vil blive matchet mod klientens værtsnavn eller adresse.
Jo mere komplekse former daemon @ host og bruger @ vært forklares i afsnittene om serverendepunktsmønstre og henholdsvis klientbrugernes opslag.
Listeelementer skal adskilles af emner og / eller kommaer.
Med undtagelse af NIS (YP) netgroup opslag er alle adgangskontrolkontroller uhensigtsmæssige.
Mønstre
Adgangskontrol sprog implementerer følgende mønstre:
En streng, der begynder med en `. ' Karakter. Et værtsnavn matches, hvis de sidste komponenter i sit navn matcher det angivne mønster. For eksempel matcher mønsteret `. Tue.nl 'værtsnavnet` wzv.win.tue.nl'.
En streng, der slutter med en `. ' Karakter. En værtsadresse matches, hvis dens første numeriske felter matcher den givne streng. For eksempel er mønsteret `131.155. ' matcher adressen til (næsten) hver vært på Eindhoven Universitets netværk (131.155.x.x).
En streng, der begynder med et `@ 'tegn, behandles som et NIS (tidligere YP) netgroup navn. Et værtsnavn matches, hvis det er et værtsmedlem i den angivne netgruppe. Netgroup-kampe understøttes ikke til dæmon-procesnavne eller til kundens brugernavne.
Et udtryk for formlen "n.n.n.n./m.m.m.m" tolkes som et "net / mask" -par. En IPv4 værtsadresse matches, hvis `net 'er lig med bitvis OG af adressen og` masken'. For eksempel matcher net / 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 udtryk for formen `n: n: n: n: n: n / m 'fortolkes som et` net / prefixlen' par. En IPv6 værtsadresse matches, hvis `prefixlen 'bits af' net 'er lig med' prefixlen 'bits af adressen. For eksempel matcher net / prefixlen mønsteret 3ffe: 505: 2: 1 :: / 64 'hver adresse i området' 3ffe: 505: 2: 1 :: 'gennem `3ffe: 505: 2: 1: ffff: ffff: ffff: ffff'.
En streng, der begynder med et `/ 'tegn, behandles som et filnavn. Et værtsnavn eller en adresse matches, hvis den passer til et værtsnavn eller et adressemønster, der er angivet i den navngivne fil. Filformatet er nul eller flere linjer med nul eller flere værtsnavn eller adressemønstre adskilt af whitespace. Et filnavn mønster kan bruges hvor som helst et værtsnavn eller adresse mønster kan bruges.
Wildcards `* 'og`?' kan bruges til at matche værtsnavne eller IP-adresser. Denne matchningsmetode kan ikke bruges sammen med 'net / mask' matching, værtsnavn matchende begyndende med `. ' eller IP-adresse matchende slutter med `. '.
Wildcards
Adgangskontrolsproget understøtter eksplicitte jokertegn, herunder:
'ALLE'
Det universelle jokertegn matcher altid.
'LOKAL'
Matcher enhver vært, hvis navn ikke indeholder en punkttegn.
'UKENDT'
Matcher enhver bruger, hvis navn er ukendt, og matcher enhver vært, hvis navn eller Adressen er ukendt. Dette mønster bør bruges med omhu: værtsnavne kan være utilgængelige på grund af midlertidige navneserverproblemer. En netværksadresse vil være utilgængelig, når softwaren ikke kan finde ud af, hvilken type netværk det taler med.
'KENDTE'
Matcher enhver bruger, hvis navn er kendt, og matcher enhver vært, hvis navn og adresse er kendt.Dette mønster bør bruges med omhu: værtsnavne kan være utilgængelige på grund af midlertidige navneserverproblemer. En netværksadresse vil være utilgængelig, når softwaren ikke kan finde ud af, hvilken type netværk det taler med.
'PARANOID'
Matcher enhver vært, hvis navn ikke matcher sin adresse. Når tcpd er bygget med -DPARANOID (standardtilstand), falder det henvendelser fra sådanne klienter, selv før man ser på adgangskontroltabellerne. Bygg uden -DPARANOID, når du vil have mere kontrol over sådanne anmodninger.
'erhvervsdrivende'
'UNDTAGEN'
Den tilsigtede anvendelse er af formularen: `list_1, undtagen liste_2 '; denne konstruktion matcher alt, der matcher list_1 medmindre det matcher list_2 . EXCEPT-operatøren kan bruges i daemon_lists og i client_lists. EXCEPT-operatøren kan nestes: Hvis kontrolsproget tillader brugen af parenteser, ville 'undtagen b undtagen c' blive analyseret som `(undtagen b bortset fra c)) '.
Shell kommandoer
Hvis den første matchede adgangskontrolregel indeholder en shell-kommando, er kommandoen udsat for% substitutioner (se næste afsnit). Resultatet udføres af a / Bin / sh børneproces med standardindgang, udgang og fejl forbundet til / Dev / null . Angiv en `& 'i slutningen af terminalkommandoen, hvis du ikke vil vente, indtil den er færdig.
Shell-kommandoer bør ikke stole på PATH-indstillingen for Inetd. I stedet skal de bruge absolutte stinavne, eller de skal begynde med en eksplicit PATH = uanset sætning.
Det hosts_options (5) dokumentet beskriver et alternativt sprog, der bruger shell kommandofeltet på en anden og uforenelig måde.
% Udvidelser
Følgende udvidelser er tilgængelige i shell kommandoer:
% a (% A) - Klientens (server) værtsadresse.
% c - Klientoplysninger: bruger @ vært, bruger @ adresse, et værtsnavn eller bare en adresse, afhængigt af hvor meget information der er tilgængelig.
% d - Daemon proces navn (argv 0 værdi).
% h (% H) - Klientens (server) værtsnavn eller adresse, hvis værtsnavnet ikke er tilgængeligt.
% n (% N) - Klienten (server) værtsnavn (eller "ukendt" eller "paranoid").
% p - Daemon proces id.
% s - Serverinformation: daemon @ host, daemon @ address eller bare et dæmonnavn, afhængigt af hvor meget information der er tilgængelig.
% u - Klient brugernavn (eller "ukendt").
%% - Udvider til et enkelt `% 'tegn.
Tegn i% udvidelser, der kan forvirre skallen, erstattes af understreger.
Server Endpoint Patterns
For at skelne klienter af netværksadressen, som de forbinder til, skal du bruge mønstre af formularen:
procesnavn @ host_pattern: client_list …
Mønstre som disse kan bruges, når maskinen har forskellige internetadresser med forskellige internethostnavne. Tjenesteudbydere kan bruge denne facilitet til at tilbyde FTP-, GOPHER- eller WWW-arkiver med internetnavne, der endda kan tilhøre forskellige organisationer. Se også indstillingen 'twist' i dokumentet hosts_options (5). Nogle systemer (Solaris, FreeBSD) kan have mere end en internetadresse på en fysisk grænseflade; med andre systemer må du måske ty til SLIP eller PPP pseudo-grænseflader, der lever i et dedikeret netværksadresserum.
Host_pattern overholder de samme syntaksregler som værtsnavne og adresser i client_list-sammenhæng. Normalt er server-endpointoplysninger kun tilgængelige med forbindelsesorienterede tjenester.
Kunde brugernavn opslag
Når klientværten understøtter RFC 931-protokollen eller en af dens efterkommere (TAP, IDENT, RFC 1413), kan wrapper-programmerne hente yderligere oplysninger om ejeren af en forbindelse. Klient brugernavn oplysninger, når de er tilgængelige, logges sammen med klientens værtsnavn og kan bruges til at matche mønstre som:
daemon_list: … user_pattern @ host_pattern …
Daemon wrappers kan konfigureres på kompileringstid til at udføre regeldrevne brugernavneopsøgninger (standard) eller at forhøre klientens vært altid. I tilfælde af regeldrevne brugernavnesøgninger vil ovennævnte regel kun medføre brugernavnet, når begge daemon_list og host_pattern match.
Et brugermønster har samme syntaks som et demon-procesmønster, så de samme wildcards gælder (netgroup-medlemskab understøttes ikke). Man bør ikke blive båret væk med brugernavnet opslag.
Klient brugernavn oplysninger kan ikke stole på, når det er mest nødvendigt, dvs. når klientsystemet er blevet kompromitteret. Generelt er alle og (UN) kendte de eneste brugernavn mønstre, der giver mening.
Brugernavnesøgninger er kun mulige med TCP-baserede tjenester, og kun når klientværten kører en passende dæmon; i alle andre tilfælde er resultatet "ukendt".
En velkendt UNIX-kernefejl kan medføre tab af tjeneste, når brugernavnet er blokeret af en firewall. Omslaget README-dokumentet beskriver en procedure for at finde ud af, om din kerne har denne fejl.
Brugernavnesøgninger kan medføre mærkbare forsinkelser for brugere uden for UNIX. Standard timeout for brugernavn opslag er 10 sekunder: for kort til at håndtere langsomme netværk, men lang nok til at irritere pc-brugere.
Selektive brugernavnesøgninger kan afhjælpe det sidste problem. For eksempel, en regel som:daemon_list: @pcnetgroup ALL @ ALL
ville matche medlemmer af pc netgroup uden at lave brugernavnet opslag, men ville udføre brugernavnet opslag med alle andre systemer. En fejl i sekvensnummergeneratoren for mange TCP / IP-implementeringer gør det muligt for indtrengere at efterligne pålidelige værter og at bryde ind via for eksempel fjernbetjeningstjenesten.IDENT (RFC931 etc.) -tjenesten kan bruges til at registrere sådanne og andre hostadressespoofingangreb. Før du accepterer en klientanmodning, kan wrapperne bruge IDENT-tjenesten til at finde ud af, at klienten slet ikke har sendt anmodningen. Når klientværten leverer IDENT-tjeneste, er et negativt IDENT-opslag (klienten matches 'UNKNOWN @ host') et stærkt tegn på et hostespoofingangreb. Et positivt IDENT lookup resultat (klienten matcher `KNOWN @ host ') er mindre troværdig. Det er muligt for en forbryder at forfalske både klientforbindelsen og IDENT-opslaget, selv om det gør det meget sværere end spoofing bare en klientforbindelse. Det kan også være, at klientens IDENT-server lyver. Bemærk: IDENT-opslag fungerer ikke med UDP-tjenester. Sproget er fleksibelt nok til, at forskellige former for adgangskontrolpolitik kan udtrykkes med et minimum af travlhed. Selvom sproget bruger to adgangskontroltabeller, kan de mest almindelige politikker implementeres med en af tabellerne, der er trivielle eller endda tomme. Når du læser eksemplerne nedenfor, er det vigtigt at indse, at tilladelsestabellen er scannet før nægtetabellen, at søgningen ophører, når en kamp er fundet, og at adgangen gives, når der ikke findes nogen kamp. Eksemplerne bruger værts- og domænenavne. De kan forbedres ved at inkludere adresse- og / eller netværks / netmaskeoplysninger for at reducere virkningen af midlertidige navneserverfejlfeil. I dette tilfælde nægtes adgang som standard. Kun eksplicit godkendte værter er tilladt adgang. Standardpolitikken (ingen adgang) implementeres med en triviel nægtelse fil: /etc/hosts.deny: ALL: ALL Dette nægter al service til alle værter, medmindre de er tilladte adgang for indgange i tilladelsesfilen. De eksplicit godkendte værter er angivet i tilladelsesfilen. For eksempel: /etc/hosts.allow: ALL: LOCAL @some_netgroupALLE: .foobar.edu Bortset fra terminalserver.foobar.edu Den første regel tillader adgang fra værter i det lokale domæne (ikke `. 'I værtsnavnet) og fra medlemmer af some_netgroup Netgroup. Den anden regel tillader adgang fra alle værter i foobar.edu domæne (læg mærke til den førende prik), med undtagelse af terminalserver.foobar.edu . Her gives adgang som standard; Kun eksplicit angivne værter er afvist service. Standardpolitikken (adgang tildelt) gør tilladelsesfilen overflødig, så den kan udelades. De eksplicit ikke-autoriserede værter er angivet i denie-filen. For eksempel: /etc/hosts.deny: ALL: Some.host.name, .some.domainBortset fra in.fingerd: other.host.name, .other.domain Den første regel nægter nogle værter og domæner alle tjenester; Den anden regel tillader stadig fingeranmodninger fra andre værter og domæner. Det næste eksempel tillader tftp-anmodninger fra værter i det lokale domæne (læg mærke til den førende prik). Anmodninger fra andre værter nægtes. I stedet for den ønskede fil, sendes en fingersonde til den modsatte vært. Resultatet sendes til superbrugeren. /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) &
Kommandoen safe_finger leveres med tcpd wrapper og skal installeres på et passende sted. Det begrænser mulig skade fra data sendt af fjernfilserveren. Det giver bedre beskyttelse end standard finger kommandoen. Udvidelsen af% h (klient vært) og% d (service navn) sekvenser er beskrevet i afsnittet om shell kommandoer. Advarsel: Lad være med at booby-fælde din fingerdæmon, medmindre du er forberedt på uendelige fingersløkker. På netværk firewall systemer dette trick kan bæres endnu længere. Den typiske netværksbrandwall tilbyder kun et begrænset antal tjenester til den ydre verden. Alle andre tjenester kan "bugged" ligesom ovenstående tftp eksempel. Resultatet er et glimrende tidligt varslingssystem. tcpd (8) tcp / ip daemon wrapper program.tcpdchk (8), tcpdmatch (8), testprogrammer.
Vigtig: Brug mand kommando ( % mand ) for at se, hvordan en kommando bruges på din computer. Registrering af adressespoofing angreb
eksempler
Mest lukket
Mest åbent
Booby Fælder
Se også




