Hosts.allow — Linux komanda
Atļauto saimnieku atrašana
Jūs, iespējams, nokļuvāt šeit, meklējot veidu, kā redzēt saimniekdatorus (citus datorus), kuriem ir atļauts piekļūt jūsu Linux sistēma. Ja vien jūs jau neesat iestatījis ierobežojumus, iespējams, pēc noklusējuma to mēģina veikt jebkurš dators.
Patiesībā tā nav gluži taisnība. Bez kārtulām, kas definētas failā /etc/hosts.allow vai /etc/hosts.deny, jūsu dators nodos savienojumus ar to attiecīgajām lietojumprogrammām. Tātad, ja kāds mēģina izveidot savienojumu SSH, savienojums nonāks jūsu Linux sistēmā, kur tas tiks nodots SSH, lai pieteiktos. Ja netiek nodrošināti atbilstošie akreditācijas dati, savienojums tiks liegts.
Ja daži saimniekdatori ir atļauti vai liegti, Linux vispirms pārbaudīs šos noteikumus, lai noskaidrotu, vai ienākošais pieprasījums ir jāatļauj. Pēc tam tas darbosies pēc tāda paša modeļa kā iepriekš.
Atļautos saimniekdatorus varat pārbaudīt, uzskaitot faila /etc/hosts.allow saturu.
cat /etc/hosts.allow.
Ja jūs tur neko neredzat, jūsu sistēma, visticamāk, ļaus izveidot savienojumu.

Izmantojot failu Hosts.allow
Fails /etc/hosts.allow ļauj izvēlēties, kuri datori var piekļūt jūsu sistēmai. Failā varat norādīt vienkāršus noteikumus vienkāršā tekstā, lai informētu datoru, kā rīkoties ar savienojumiem. Lai sāktu, izveidojiet kārtulu, kas ļauj jebkuram datoram piekļūt visiem pakalpojumiem.
VISI: VISI.
Tas ir tik vienkārši. Pēc tam, ja vēlaties izslēgt problēmu datoru, varat arī to izdarīt.
VISI: VISI, IZŅEMOT 192.168.1.110.
Ir vairāki citi atslēgvārdi, kurus varat izmantot, lai apstrādātu dažādas datoru kopas. Piemēram, varat atļaut visu vietējo trafiku, piemēram:
VISI: 192.168.1.0/24.
Vai arī tā vietā varat izmantot atslēgvārdu “LOCAL”.
VISI: VIETĒJI.
Varat arī izmantot domēna vārdus. Piemēram:
VISI: .example.com.
Šeit arī varat izmantot atslēgvārdu “IZŅEMOT”, lai izslēgtu potenciāli problemātisku apakšdomēnu.
VISI: .example.com, IZŅEMOT testing.example.com.
Varat arī norādīt noteikumus konkrētiem dēmoniem. Tātad, ja vēlaties kontrolēt SSH piekļuvi, jums ir jāiestata kārtulas “sshd”.
sshd: LOKĀLS.
Fails hosts.allow atbalsta dēmonu uzskaitīšanu vienā rindā, ja to noteikumi ir vienādi. Piemēram:
sshd, in.ftpd: LOCAL.
Ievērojiet "iekšā". daļa "in.ftpd?" Tas ļauj norādīt ienākošo trafiku.
Pēc tam jums ir iespēja to visu apvienot.
sshd, in.ftpd: LOKĀLS, IZŅEMOT 192.168.1.110.
Šie ir visizplatītākie veidi, kā savā Linux sistēmā izmantot failu /etc/hosts.allow. Lai iegūtu pilnu tehnisko informāciju par to, ko varat darīt ar failu /etc/hosts.allow, turpiniet uz nākamo sadaļu.
Tehniskais sadalījums
Šajā rokasgrāmatas lapā Linux ir aprakstīta vienkārša piekļuves kontroles valoda, kuras pamatā ir klients (resursdatora nosaukums/adrese, lietotājvārds) un serveris (procesa nosaukums, resursdatora nosaukums/adrese) modeļiem. Piemēri ir doti beigās. Nepacietīgais lasītājs tiek mudināts pāriet uz sadaļu Piemēri, lai iegūtu ātru ievadu. Piekļuves kontroles valodas paplašinātā versija ir aprakstīta hosts_options (5) dokuments. Paplašinājumi tiek ieslēgti programmas izveides laikā, veidojot ar —DPROCESS_OPTIONS.
Nākamajā tekstā dēmons ir tīkla dēmona procesa procesa nosaukums un klients ir resursdatora, kas pieprasa pakalpojumu, nosaukums un/vai adrese. Tīkla dēmonu procesu nosaukumi ir norādīti inetd konfigurācijas failā.
Piekļuves kontroles faili
Piekļuves kontroles programmatūra konsultē divus failus. Meklēšana tiek pārtraukta pie pirmās spēles.
Piekļuve tiks piešķirta, kad (dēmons, klients) pāris atbilst ierakstam /etc/hosts.allowfailu.
Pretējā gadījumā piekļuve tiks liegta, ja (dēmons, klients) pāris atbilst ierakstam failā/etc/hosts.deny failu.
Pretējā gadījumā piekļuve tiks piešķirta.
Neesošs piekļuves kontroles fails tiek apstrādāts tā, it kā tas būtu tukšs fails. Tādējādi piekļuves kontroli var izslēgt, nenodrošinot piekļuves kontroles failus.
Piekļuves kontroles noteikumi
Katrs piekļuves kontroles fails sastāv no nulles vai vairāk teksta rindiņām. Šīs līnijas tiek apstrādātas to parādīšanās secībā. Meklēšana tiek pārtraukta, kad tiek atrasta atbilstība.
Jaunrindas rakstzīme tiek ignorēta, ja pirms tās ir slīpsvītra rakstzīme. Tas ļauj sadalīt garās rindas, lai tās būtu vieglāk rediģēt.
Tukšas rindas vai rindas, kas sākas ar simbolu #, tiek ignorētas. Tas ļauj ievietot komentārus un atstarpes, lai tabulas būtu vieglāk lasāmas.
Visām pārējām rindām ir jāatbilst šādam formātam, un lietas starp [] nav obligātas:
daemon_list: klientu_saraksts [: shell_command]
daemon_list ir saraksts ar vienu vai vairākiem dēmonu procesu nosaukumiem (argv[0] vērtībām) vai aizstājējzīmēm (skatiet tālāk).
klientu_saraksts ir saraksts ar vienu vai vairākiem resursdatora nosaukumiem, resursdatora adresēm, modeļiem vai aizstājējzīmēm (skatiet tālāk), kas tiks saskaņoti ar klienta resursdatora nosaukumu vai adresi.
Sarežģītākas formas dēmons@host un lietotājs@host ir izskaidroti attiecīgi sadaļās par servera galapunktu modeļiem un klienta lietotājvārdu meklēšanu.
Saraksta elementi ir jāatdala ar tukšām vietām un/vai komatiem.
Izņemot NIS (YP) tīkla grupu meklēšana, visas piekļuves kontroles pārbaudes nav reģistrjutīgas.
Raksti
Piekļuves kontroles valoda īsteno šādus modeļus:
Virkne, kas sākas ar "." raksturs. Saimniekdatora nosaukums tiek saskaņots, ja tā nosaukuma pēdējie komponenti atbilst norādītajam modelim. Piemēram, modelis ".tue.nl" atbilst resursdatora nosaukumam "wzv.win.tue.nl".
Virkne, kas beidzas ar "." raksturs. Resursdatora adrese tiek saskaņota, ja tās pirmie ciparu lauki atbilst norādītajai virknei. Piemēram, paraugs "131.155." atbilst (gandrīz) katra saimniekdatora adresei Eindhovenas universitātes tīklā (131.155.x.x).
Virkne, kas sākas ar "@" rakstzīmi, tiek uzskatīta par NIS (iepriekš YP) tīkla grupas nosaukumu. A resursdatora nosaukums ir saskaņots, ja tas ir norādītās tīkla grupas resursdatora dalībnieks. Tīkla grupu atbilstības netiek atbalstītas dēmonu procesu nosaukumiem vai klientu lietotājvārdiem.
Izteiksme formā 'n.n.n.n/m.m.m.m' tiek interpretēta kā 'tīkls/maska' pāris. IPv4 resursdatora adrese tiek saskaņota, ja "net" ir vienāds ar adreses un "maskas" bitu UN. Piemēram, tīkla/maskas modelis '131.155.72.0/255.255.254.0' atbilst visām adresēm diapazonā no '131.155.72.0' līdz '131.155.73.255'.
Formas “[n: n: n: n: n: n: n: n]/m” izteiksme tiek interpretēta kā “[tīkls]/prefikss” pāris. IPv6 resursdatora adrese tiek saskaņota, ja tīkla 'prefixlen' biti ir vienādi ar adreses prefiksa bitiem. Piemēram, [net]/prefixlen modelis `[3ffe: 505:2:1::]/64' atbilst katrai adresei diapazonā no `3ffe: 505:2:1::' līdz `3ffe: 505:2: 1:ffff: ffff: ffff: ffff'.
Virkne, kas sākas ar `/' rakstzīmi, tiek uzskatīta par a faila nosaukums. Saimniekdatora nosaukums vai adrese tiek saskaņota, ja tā atbilst jebkuram resursdatora nosaukumam vai adreses modelim, kas norādīts nosauktajā failā. Faila formāts ir nulle vai vairāk rindiņu ar nulli vai vairākiem resursdatora nosaukuma vai adrešu rakstiem, kas atdalīti ar atstarpēm. Faila nosaukuma modeli var izmantot visur, kur var izmantot resursdatora nosaukumu vai adreses modeli.
Aizstājējzīmes `*' un `?' var izmantot, lai saskaņotu resursdatora nosaukumus vai IP adreses. Šo saskaņošanas metodi nevar izmantot kopā ar 'net/mask' saskaņošanu, saimniekdatora nosaukuma saskaņošana sākas ar '.' vai IP adrese, kas beidzas ar ".".
Aizstājējzīmes
Piekļuves kontroles valoda atbalsta nepārprotamas aizstājējzīmes, tostarp:
- 'VISI' — Universālā aizstājējzīme, vienmēr atbilst.
- "LOCAL" — Atbilst jebkuram saimniekdatoram, kura nosaukumā nav punkta rakstzīmes.
- 'NEZINĀMS' — Atbilst jebkuram lietotājam, kura vārds nav zināms, un atbilst jebkuram saimniekdatoram, kura vārds vai adrese nav zināma. Šis modelis ir jāizmanto uzmanīgi: resursdatora nosaukumi var nebūt pieejami īslaicīgu nosaukumu servera problēmu dēļ. A tīkla adrese nebūs pieejams, ja programmatūra nevarēs noskaidrot, ar kāda veida tīklu tā runā.
- 'ZINĀMS' — Atbilst jebkuram lietotājam, kura vārds ir zināms, un atbilst jebkuram saimniekdatoram, kura nosaukums un adrese ir zināma. Šis modelis ir jāizmanto uzmanīgi: resursdatora nosaukumi var nebūt pieejami īslaicīgu nosaukumu servera problēmu dēļ. Tīkla adrese nebūs pieejama, ja programmatūra nevarēs noskaidrot, ar kāda veida tīklu tā runā.
- "PARANOID" — Atbilst jebkuram saimniekdatoram, kura nosaukums neatbilst tā adresei. Ja tcpd ir izveidots ar -DPARANOID (noklusējuma režīms), tas atmet pieprasījumus no šādiem klientiem pat pirms piekļuves kontroles tabulu apskates. Veidojiet bez -DPARANOID, ja vēlaties vairāk kontrolēt šādus pieprasījumus.
"OPERATORI"
- 'IZŅEMOT' — Paredzētais lietojums ir šādā formā: `saraksts_1, IZŅEMOT sarakstu_2'; šī konstrukcija atbilst visam, kas atbilst saraksts_1 ja vien nesakrīt saraksts_2. Operatoru IZŅEMOT var izmantot daemon_lists un client_lists. Operatoru IZŅEMOT var ligzdot: ja vadības valoda ļautu izmantot iekavas, "a IZŅEMOT b IZŅEMOT c" tiktu parsēts kā "(a IZŅEMOT (b IZŅEMOT c))".
- Shell komandas —Ja pirmās atbilstības piekļuves kontroles noteikumā ir ietverta čaulas komanda, šī komanda tiek pakļauta % aizstāšanai (skatiet nākamo sadaļu). Rezultātu izpilda a /bin/sh bērnu process ar standarta ievadi, izvadi un kļūdu, kas savienots ar /dev/null. Norādiet "&" beigās termināļa komanda ja nevēlaties gaidīt, līdz tas tiks pabeigts. Shell komandām nevajadzētu paļauties uz inetd iestatījumu PATH. Tā vietā tiem ir jāizmanto absolūto ceļu nosaukumi vai tiem jāsākas ar skaidru paziņojumu PATH=whatever.
The hosts_options(5) dokuments apraksta alternatīvu valodu, kas izmanto apvalka komandas lauku atšķirīgā un nesaderīgā veidā.
% paplašinājumi
Apvalka komandās ir pieejami šādi paplašinājumi:
- %a (%A) - klients (serveris) saimnieks adrese.
- %c — Klienta informācija: lietotājs@host, lietotāja@adrese, resursdatora nosaukums vai tikai adrese atkarībā no pieejamās informācijas.
- %d — dēmona procesa nosaukums (argv[0] vērtība).
- %h (%H) — klienta (servera) resursdatora nosaukums vai adrese, ja resursdatora nosaukums nav pieejams.
- %n (%N) — klienta (servera) resursdatora nosaukums (vai "nezināms" vai "paranoisks").
- %p — Dēmona procesa id.
- %s — Servera informācija: daemon@host, daemon@address vai tikai dēmona nosaukums atkarībā no pieejamās informācijas.
- %u — klienta lietotājvārds (vai "nezināms").
- %% — Paplašina līdz vienai "%" rakstzīmei.
Rakstzīmes % paplašinājumos, kas var sajaukt čaulu, tiek aizstātas ar pasvītrojumiem.
Servera galapunktu modeļi
Lai atšķirtu klientus pēc tīkla adreses, ar kuru tie izveido savienojumu, izmantojiet šādas formas modeļus:
procesa_nosaukums@host_pattern: klientu_saraksts...
Šādus modeļus var izmantot, ja iekārtai ir dažādas interneta adreses ar dažādiem interneta saimniekdatora nosaukumiem. Pakalpojumu sniedzēji var izmantot šo iespēju, lai piedāvātu FTP, GOPHER vai WWW arhīvus ar interneta nosaukumiem, kas var piederēt pat dažādām organizācijām. Skatiet arī opciju `twist' dokumentā hosts_options (5). Dažām sistēmām (Solaris, FreeBSD) vienā fiziskajā saskarnē var būt vairāk nekā viena interneta adrese; ar citām sistēmām, iespējams, būs jāizmanto SLIP vai PPP pseido saskarnes, kas atrodas speciālā tīkla adrešu telpā.
Host_pattern ievēro tādus pašus sintakses noteikumus kā resursdatora nosaukumi un adreses klientu_saraksta kontekstā. Parasti servera galapunkta informācija ir pieejama tikai ar uz savienojumu orientētiem pakalpojumiem.
Klienta lietotājvārda meklēšana
Ja klienta resursdators atbalsta RFC 931 protokolu vai kādu no tā pēcnācējiem (TAP, IDENT, RFC 1413), iesaiņojuma programmas var izgūt papildu informāciju par savienojuma īpašnieku. Klienta lietotājvārda informācija, ja tā ir pieejama, tiek reģistrēta kopā ar klienta resursdatora nosaukumu, un to var izmantot, lai saskaņotu šādus modeļus:
daemon_list:... user_pattern@host_pattern...
Dēmona iesaiņotājus var konfigurēt kompilēšanas laikā, lai veiktu kārtulu vadītu lietotājvārdu meklēšanu (noklusējums) vai vienmēr iztaujātu klienta resursdatoru. Noteikumu vadītas lietotājvārdu meklēšanas gadījumā iepriekš minētais noteikums izraisītu lietotājvārda uzmeklēšanu tikai tad, ja abi daemon_list un host_patternatbilst.
Lietotāja modelim ir tāda pati sintakse kā dēmona procesa modelim, tāpēc tiek lietotas tās pašas aizstājējzīmes (tīkla grupas dalība netiek atbalstīta). Tomēr nevajadzētu aizrauties ar lietotājvārdu meklēšanu.
Klienta lietotājvārda informācijai nevar uzticēties, kad tā ir visvairāk nepieciešama, t.i., ja klienta sistēma ir apdraudēta. Kopumā ALL un (UN)KNOWN ir vienīgie lietotājvārdu modeļi, kam ir jēga.
Lietotājvārdu meklēšana ir iespējama tikai ar TCP pakalpojumiem un tikai tad, ja klienta resursdators palaiž piemērotu dēmonu; visos citos gadījumos rezultāts ir "nezināms".
Labi pazīstams UNIX kodola kļūda var izraisīt pakalpojuma zudumu, ja lietotājvārdu meklēšanu bloķē ugunsmūris. Iesaiņojuma README dokumentā ir aprakstīta procedūra, lai noskaidrotu, vai jūsu kodolā ir šī kļūda.
Lietotājvārdu meklēšana var izraisīt ievērojamu aizkavi lietotājiem, kas nav UNIX lietotāji. Lietotājvārdu meklēšanas noklusējuma taimauts ir 10 sekundes: pārāk īss, lai tiktu galā ar lēniem tīkliem, taču pietiekami ilgs, lai kaitinātu datoru lietotājus.
Selektīvā lietotājvārda meklēšana var mazināt pēdējo problēmu. Piemēram, noteikums, piemēram:
daemon_list: @pcnetgroup ALL@ALL.
atbilstu datora tīkla grupas dalībniekiem, neveicot lietotājvārdu meklēšanu, bet veiktu lietotājvārdu meklēšanu ar visām pārējām sistēmām.
Adrešu viltošanas uzbrukumu noteikšana
Daudzu sērijas numuru ģeneratora trūkums TCP/IP implementācijas ļauj iebrucējiem viegli uzdoties par uzticamiem saimniekiem un ielauzties, izmantojot, piemēram, attālo čaulas pakalpojumu. Pakalpojumu IDENT (RFC931 utt.) var izmantot, lai noteiktu šādus un citus resursdatora adrešu viltošanas uzbrukumus.
Pirms klienta pieprasījuma pieņemšanas iesaiņotāji var izmantot IDENT pakalpojumu, lai noskaidrotu, vai klients vispār nav nosūtījis pieprasījumu. Ja klienta resursdators nodrošina IDENT pakalpojumu, negatīvs IDENT uzmeklēšanas rezultāts (klients atbilst 'UNKNOWN@host') ir spēcīgs pierādījums resursdatora viltošanas uzbrukumam.
Pozitīvs IDENT uzmeklēšanas rezultāts (klients atbilst 'KNOWN@host') nav tik uzticams. Iebrucējs var maldināt gan klienta savienojumu, gan IDENT uzmeklēšanu, lai gan to izdarīt ir daudz grūtāk nekā tikai klienta savienojuma viltošanu. Var arī būt, ka klienta IDENT serveris melo.
IDENT meklēšana nedarbojas ar UDP pakalpojumiem.
Vairāk piemēru
Valoda ir pietiekami elastīga, lai dažāda veida piekļuves kontroles politiku varētu izteikt ar minimālu satraukumu. Lai gan valoda izmanto divas piekļuves kontroles tabulas, visizplatītākās politikas var tikt ieviestas, ja viena no tabulām ir nenozīmīga vai pat tukša.
Lasot tālāk sniegtos piemērus, ir svarīgi saprast, ka atļauju tabula tiek skenēta pirms aizlieguma tabulu, ka meklēšana tiek pārtraukta, kad tiek atrasta atbilstība, un piekļuve tiek piešķirta, ja vietnē nav atrasta neviena atbilstība visi.
Piemēros tiek izmantoti saimniekdatora un domēna nosaukumi. Tos var uzlabot, iekļaujot adreses un/vai tīkla/tīkla maskas informāciju, lai samazinātu pagaidu nosaukumu servera uzmeklēšanas kļūmju ietekmi.
Pārsvarā slēgts
Šajā gadījumā piekļuve pēc noklusējuma ir liegta. Piekļuve ir atļauta tikai īpaši pilnvarotiem saimniekiem.
Noklusējuma politika (bez piekļuves) tiek ieviesta ar triviālu aizlieguma failu:
/etc/hosts.deny:
VISI: VISI.
Tas liedz visus pakalpojumus visiem saimniekiem, ja vien tiem nav atļauts piekļūt, izmantojot ierakstus atļaujas failā.
Skaidri pilnvarotie saimniekdatori ir norādīti atļaujas failā. Piemēram:
/etc/hosts.allow:
VISI: LOCAL @some_netgroup
VISI: .foobar.edu, IZŅEMOT terminalserver.foobar.edu.
Pirmais noteikums ļauj piekļūt no saimniekiem domēnā lokālais domēns (nav `.' saimniekdatora nosaukumā) un no grupas dalībniekiem some_netgroup tīkla grupa. Otrais noteikums ļauj piekļūt no visiem saimniekiemfoobar.edu domēns (ievērojiet vadošo punktu), izņemot terminalserver.foobar.edu.
Pārsvarā Atvērts
Šeit piekļuve tiek piešķirta pēc noklusējuma; tikai skaidri norādītiem saimniekiem tiek atteikts pakalpojums.
Noklusējuma politika (piekļuve piešķirta) padara atļaušanas failu lieku, lai to varētu izlaist. Skaidri nesankcionēti resursdatori ir norādīti aizlieguma failā. Piemēram:
/etc/hosts.deny:
VISI: kāds.host.nosaukums, .dažs.domēns
VISI: VISI, IZŅEMOT in.fingerd: other.host.name, .other.domain.
Pirmais noteikums liedz dažiem saimniekiem un domēniem visus pakalpojumus; otrais noteikums joprojām atļauj pirkstu pieprasījumus no citiem saimniekiem un domēniem.
Slazdi
Nākamais piemērs atļauj tftp pieprasījumi no saimniekiem vietējā domēnā (ievērojiet vadošo punktu). Jebkuru citu saimnieku pieprasījumi tiek noraidīti. Pieprasītā faila vietā pārkāpēja resursdatoram tiek nosūtīta pirksta zonde. Rezultāts tiek nosūtīts superlietotājam.
/etc/hosts.allow:
in.tftpd: LOCAL, .my.domain
/etc/hosts.deny:
in.tftpd: VISI: spawn (/some/where/safe_finger -l @%h | \
/usr/ucb/mail -s %d-%h root) &
Komanda safe_finger nāk kopā ar tcpd iesaiņojumu, un tā ir jāinstalē piemērotā vietā. Tas ierobežo iespējamos bojājumus no attālā pirkstu servera nosūtītajiem datiem. Tas nodrošina labāku aizsardzību nekā standarta pirkstu komanda.
%h (klienta resursdators) un %d (pakalpojuma nosaukums) secību paplašināšana ir aprakstīta sadaļā par čaulas komandām.
Neuzglabājiet pirkstu dēmonu, ja vien neesat gatavs bezgalīgām pirkstu cilpām.
Tīklā ugunsmūra sistēmas šo triku var īstenot vēl tālāk. Tipisks tīkla ugunsmūris nodrošina tikai ierobežotu pakalpojumu kopumu ārējai pasaulei. Visus citus pakalpojumus var "kļūdīties" tāpat kā iepriekš minētajā tftp piemērā. Rezultāts ir lieliska agrīnās brīdināšanas sistēma.
Skatīt arī
tcpd (8) tcp/ip dēmonu iesaiņojuma programma.
tcpdchk (8), tcpdmatch (8), testa programmas.
Izmantojiet vīrietis komandu (% vīrietis), lai redzētu, kā komanda tiek izmantota jūsu konkrētajā datorā.