Movatterモバイル変換


[0]ホーム

URL:


Pāriet uz saturu
VikipēdijaBrīvā enciklopēdija
Meklēt

Netfilter

Vikipēdijas lapa
iptables
IzstrādātājsNetfilter Core Team
Stabilā versija1.4.13 /March 27,2012
OperētājsistēmaLinux
VeidsPakešu filtrēšana
LicenceGNU General Public License
Tīmekļa vietnewww.netfilter.org

Netfilter irietvars, kas dod iespējuLinux kodolam pievienot notikumu apstrādātājuspakešu pārtveršanai un apstrādei. Pazīstamākais komponents, kas balstīts uzNetfilter irugunsmūris, kuršfiltrē paketes, bet notikumu apstrādes "āķus" izmanto arī citi komponenti, kas veictīkla adrešu tulkošanu,stāvokļjūtīgu pakešu izsekošanu un pakešu sarindošanulietotāja atmiņas apgabalā. NosaukumsNetfilter attiecas arī uz projekta nosaukumu, kurā tiek izstrādāti ugunsmūra rīkiLinuksam. Šie kompenenti parasti irielādējami kodola moduļi, lai gan projekts arī piedāvā lietotāja apgabalā izvietojamus rīkus un bibliotēkas. Netfilter produkti pēdējā laikā vairs nenodrošina atpakaļsavietojamību aripchains.

iptables ir nosaukums rīkamlietotāja apgabalā, ar kuru Linuksa servera administratori veido likumus pakešu filtrēšanai un NAT moduļiem. Tehniski runājot, iptables ir rīks, kurš vienīgi kontrolē pakešu filtrēšanu un NAT komponentus kodolā, nosaukumuiptables bieži lieto, lai aprakstītu visu infrastruktūru, ieskaitot Netfilter,savienojumu sekošanu un NAT, kā arī pašuiptables komponentu. Tā ir standarta sastāvdaļa visās mūsdienīgāsLinux distribūcijās.

Vēsture

[rediģēt |labot pirmkodu]

Netfilter/iptables projektu 1998. gadā uzsākaRastijs Rasels, kurš bija arī iepriekšējā projekta -ipchains autors. Projektam augot, viņš izveidojaNetfilter pamatkomandu (vai vienkāršipamatkomandu(coreteam))1999. gadā. Softs, ko viņi veido (kopš tā laika to saucnetfilter) ir licencēts arGNU General Public License (GPL), un tika sapludināts ar Linux 2.32000.gada martā.2003.gada augustāHarald Welte kļuva par pamatkomandas vadītāju, un2004.gada aprīlī, veicot šī projekta ietvaros izmeklēšanas darbības pret tiem, kas izplatīja viņu softuiegultās sistēmās -rūteros, neievērojot GPL licences noteikumus, WelteVācijas tiesā panāca svarīgu piekāpšanos no Sitecom Germany, kas līdz tam atteicās sekot GNU licences noteikumiem (sk.Tiesu strīdi saistībā ar GPL).

Pirms iptables, dominējošā programmatūraLinux ugunsmūru veidošanai bijaipchains versijaiLinux 2.2 unipfwadm versijaiLinux 2.0, kas savukārt bija balstīts uzBSDipfw. Gan ipchains, gan ipfwadm maina tīklošanās kodu tā, lai varētu manipulēt ar pakotnēm, jo pirms Netfilter nebija universāla pakešu vadības ietvara. iptables saglabā pamatidejas, ko Linux-ā ieviesa ipfwadm: likumu saraksts, no kuriem katrs rāda, kādas atbilstības meklēt paketē un ko darīt ar katru šādu paketi. ipchains pievienoja likumuķēžu jēdzienu, un iptables to tālāk paplašināja partabulām: vienu tabulu pārbaudīja, lai izlemtu, vai NAT-ot paketi, otru izmantoja, lai izlemtu, kā filtrēt paketi. Turklāt trīs punkti paketes ceļā, kur agrāk veica filtrēšanu tika izmainīti, tādēļ iptables gadījumā katra pakete iet cauri tikai vienam filtrēšanas punktam.

Kamēr ipchains un ipfwadm kombinē pakešu filtrēšanu un NAT (it īpaši trīs atsevišķus NAT paveidus, ko sauc "maskošanās", "portu pāradresēšana" un "novirzīšana"), Netfilter dod iespēju sadalīt pakešu operācijas trīs daļās - pakešu filtrēšana, savienojumu sekošana un tīkla adrešu tulkošana. Katra daļa piesaistās Netfilter atpakaļizsaukumiem ("āķiem") atšķirīgās koda vietās, lai piekļūtu paketēm. Savienojumu sekošana un NAT apakšsistēmas ir vispārīgākas un varenākas nekā vienkāršotās versijas, ko lieto ipchains un ipfwadm.

Šī atbildības dalīšana savukārt ļāva iptables izmantot informāciju, ko savienojumu izsekošanas slānis bija noteicis par pakotni - agrāk šī informācija bija piesaistīta NAT-am. iptables ir pārākas par ipchains, jo tām ir spēja novērot savienojuma stāvokli un novirzīt, pārveidot vai apturēt datu paketes, atkarībā no savienojuma stāvokļa, ne tikai no izcelsmes, galaadreses vai datu satura šajā paketē. Ugunsmūris, kurš balstīts uz iptables tādēļ kļūst parstāvokļjūtīgu ugunsmūri atšķirībā no ipchains, kas ļauj veidot vienīgibezstāvokļa ugunsmūri, izņemot ļoti specifiskus gadījumus. Var uzskatīt, ka ipchains nezina pilnu kontekstu, kurā datu pakete rodas, kamēr iptables to zina. Tādēļ iptables var pieņemt labākus lēmumus par pakešu un savienojumu likteni.

Iptables, NAT-a apakšsistēma un savienojumu sekošanas apakšsistēma arī ir paplašināmas, un daudzi paplašinājumi ir iekļauti pamata "iptables" risinājumā, piemēram "iptables" paplašinājums, kurš ļauj izdarīt vaicājumus par savienojuma stāvokli, kā izklāstīts augstāk. Papildu paplašinājumi tiek izplatīti līdzās iptables lietojumprogrammai, piemēram,ielāpi kodolapirmkodam, līdz ar ielāpu rīku, ko saucpatch-o-matic.

Tika izveidota arī iptables versija protokolamIPv6, kuru sauc parip6tables, atbilstoši administrēšanas rīka nosaukumam.

Darbības pārskats

[rediģēt |labot pirmkodu]
Flow of network packets through Netfilter

Netfilter ietvars ļaujsistēmas administratoram noteikt likumus, ko darīt ar tīklapaketēm. Likumus grupēķēdēs - katra ķēde ir sakārtots likumu saraksts. Ķēdes grupētabulās - katra tabula tiek saistīta ar citu pakešu apstrādes paveidu.

Katrs likums apraksta nosacījumu, kuras paketes tam atbilst unmērķi, kas norāda, ko darīt ar paketi, ja tā atbilst nosacījumam. Katra tīkla pakete, kas ienāk vai iziet no datora šķērso vismaz vienu ķēdi un katrs likums šajā ķēdē pārbauda savu nosacījumu. Atrodot pirmo likumu, kurš atbilst pakotnei, pārbaude beidzas, un likuma mērķis nosaka, ko darīt ar paketi. Ja pakete sasniedzpredefinētas ķēdes beigas, neatbilstot neviena šīs ķēdes likuma nosacījumam, ķēdespolitikas mērķis nosaka, ko darīt ar paketi. Ja pakete sasniedzlietotāja definētas ķēdes beigas, neatrodot nevienu atbilstošu likumu šajā ķēdē vai arī lietotāja definētā ķēde ir tukša, pārbaude turpinās izsaucošajā ķēdē (noklusētais mērķis ir RETURN). Vienīgipredefinētām ķēdēm ir politikas.

Katrs likums var izmest paketi no ķēdes (īsslēgums), un turpmākas ķēdes tad netiek apskatītas. Ķēde var saturēt norādi uz citu ķēdi - ja vai nu pakete iziet cauri visai ķēdei vai atbilst RETURN mērķim kārtējā likumā, tā turpināsies pirmajā ķēdē. Nav robežas uz to, cik daudzas iekļautas ķēdes var būt. Ir trīs vienkāršas predefinētas ķēdes (INPUT, OUTPUT un FORWARD), un lietotājs var radīt jaunas ķēdes pēc vajadzības. Likums var būt arī vienkārši norāde uz ķēdi.

Savienojumu izsekošana

[rediģēt |labot pirmkodu]

Viena no svarīgākajām funkcijām, kas ir izveidota uz Netfilter ietvara pamata, ir savienojumu izsekošana (angļu:connection tracking). Savienojumu izsekošana ļauj kodolam sekot līdzi visām loģiskajiem tīkla savienojumiem vaisesijām, un tādējādi atpazīt paketes, kuras varētu piederēt dotajam savienojumam. NAT balstās uz šo informāciju, lai translētu visas saistītās paketes vienā un tanī pašā veidā, un "iptables" var izmantot šo informāciju, lai darbotos kā stāvokļjūtīgs ugunsmūris.

Savienojumu izsekošana klasificē katru paketi vienā no četriem stāvokļiem -NEW jebjauna (cenšas izveidot jaunu savienojumu),ESTABLISHED jebizveidojusies (daļa no jau esoša savienojumu),RELATED jebsaistīta (saistīta ar kādu no esošajiem savienojumiem, bet faktiski tai nepieder) vaiINVALID jebnederīga (nepieder pastāvošajam savienojumam un nespēj izveidot jaunu savienojumu). Normāla secība ir šāda - pirmā pakete, ko redz ugunsmūris tiek klasificēta kāNEW, atbilde uz to tiks klasificēta kāESTABLISHED unICMP kļūda būsRELATED. Savukārt tāda ICMP kļūdas pakotne, kas neatbilda nevienam zināmam savienojumam tiktu klasificēta kāINVALID.

Savienojuma stāvoklis ir pilnīgi neatkarīgs no jebkādaTCP stāvokļa. Ja hosts atbild ar SYN ACK pakotni, lai apstiprinātu jaunu ienākošo TCP savienojumu, tad pats TCP savienojums vēl nav izveidots, bet izsekojamais savienojums jau ir - šāda pakete atbildīs stāvoklimESTABLISHED. Izsekots savienojumsbezsavienojumu protokolam, piemēram UDP, tik un tā ir ar savienojuma stāvokli.

Izmantojot spraudņu moduļus, savienojumu izsekošanai var darīt zināmuslietotnes slāņa protokolus un tādējādi var konstatēt, ka divi vai vairāki atsevišķi savienojumi ir "saistīti". Piemēram, aplūkosimFTP protokolu. Vispirms izveidojas vadības savienojums, bet, kad sākas datu pārraide, rodas atsevišķs savienojums datu pārraidei. Kad ielādējas nf_conntrack_ftp modulis, pirmā FTP datu savienojuma pakotne tiks apzīmēta kāRELATED nevisNEW, jo tā loģiski ir jau pastāvoša savienojums sastāvdaļa.

iptables var izmantot savienojumu izsekošanas informāciju, lai paplašinātu pakešu filtrēšanas likumu iespējas un vadāmību. Pakešu atbilstības nosacījumu "conntrack" paplašinājums pārbauda paketes savienojumu izsekošanas klasifikatoru dotajai paketei. Piemēram, kāds likums varētu atļautNEW paketes tikai no iekšpuses uz ārpusi, bet atļautuRELATED unESTABLISHED abos virzienos. Tas atļauj normālas atbildes pakotnes no ārpuses jau izveidotam (ESTABLISHED) savienojumam, bet neatļauj jaunus savoienojumus no ārpuses uz iekšpusi. Toties, ja FTP datu savienojumam ir jānāk no ugunsmūra ārpuses uz iekšpusi, tā tiks atļauta, jo paketi pareizi klasificēs kāRELATED attiecībā pret FTP vadības savienojumu, nevis kāNEW savienojumu.

iptables

[rediģēt |labot pirmkodu]

iptables irlietotāja apgabala lietojumprogramma, kas ļauj sistēmas administratoram konfigurēt Netfilter tabulas, ķēdes un likumus kā paskaidrots agrāk. Tā kā "iptables" darbināšanai ir nepieciešamas papildu privilēģijas, to jāizpilda lietotājamroot, citādi tā nedarbosies. Vairumam Linux sistēmu, iptables ir instalēts kā/sbin/iptables un dokumentēts savāman lappusēArhivēts 2007. gada 29. jūnijā,Wayback Machine vietnē.. Šis vienkāršais piemērs iptables lietojumam ilustrē, kā novirzīt visudatu plūsmu, kura pienāk uz noklusētoHTTP portu tālāk uz portu 8080, atļaujot HTTP dēmonam darboties kā nepriviliģētam lietotājam, kurš nevar klausīties portus, kuru numuri ir mazāki par 1024.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

ipset

[rediģēt |labot pirmkodu]

ipset tiek lietots, lai izveidotu, uzturētu un pārlūkotu t.s. "IP kopas" Linux-a kodolā. "IP kopa" parasti satur kopu ar IP adresēm, bet var arī saturēt kopas ar citiem tīklošanā izmantotiem skaitliskiem identifikatoriem, atkarībā no tās "tipa".

Jebkuru elementu vienā kopā var piesaistīt arī citai kopai, kas ļauj veikt sarežģītas atbilstību meklēšanas darbības. IP kopu var izdzēst vienīgi tad, ja nav iptables likumu vai citu kopu, kas uz to norādītu.

Skatīt arī

[rediģēt |labot pirmkodu]

Ārējās saites

[rediģēt |labot pirmkodu]

Lietotāju saskarnes

[rediģēt |labot pirmkodu]

Lai labāk saprastu, kā pakete šķērso Linux kodola Netfilter tabulas/ķēdes, sk. šādas diagrammas:

Saturs iegūts no "https://lv.wikipedia.org/w/index.php?title=Netfilter&oldid=4397135"
Kategorijas:

[8]ページ先頭

©2009-2026 Movatter.jp