Netfilter și iptables în principiile de operare Linux, configurare netfilter, rețea de domiciliu stepanoff


Acest articol descrie:

  • termeni de utilizare preliminare netfilter
  • concepte de bază (tabele, lanțuri și reguli) și calea pachetului
  • Se conectează de urmărire
  • iptables managementul lanțului
  • acțiune (țintă)
  • modele (meci)
  • utilitate iptables-save si iptables-restore
  • în serviciul Red Hat Linux
  • exemple și sfaturi

trebuie să aveți un nucleu 2.3.15 sau mai nou pentru a lucra netfilter,
în generația care a inclus CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER (filtru de masă), CONFIG_IP_NF_NAT (tabelul nat), CONFIG_BRIDGE_NETFILTER, precum și numeroase module suplimentare: CONFIG_IP_NF_CONNTRACK (urmărire conexiuni), CONFIG_IP_NF_FTP (modulul auxiliar pentru a urmări conexiunile FTP), CONFIG_IP_NF_MATCH_ * (tipuri suplimentare de șabloane pachete de indeplinit: LIMIT, MAC, MARK, MULTIPORT, TOS, TCPMSS, STAT, necurați, OWNER), CONFIG_IP_NF_TARGET_ * (acțiuni suplimentare în regulile: REJECT, MASQUERADE, REDIRECȚIONARE, LOG, TCPMSS), CONFIG_IP_NF_COMPAT_IPCHAINS pentru compatibilitate cu alte CONFIG_IP_NF_ * și CONFIG_IP6_NF_ * .Polezno specifica, de asemenea, CONFIG_PACKET.

Prezența în kernel netfilter este determinată de fișierul / proc / net / ip_tables_names (lista de tabele utilizate), / proc / net / ip_tables_targets (2.6) și / proc / net / ip_tables_matches (2.6).

Este controlat de iptables utilități.

funcționalitate Netfilter poate fi extins prin modulele de bază. Cap de modul kernel numit iptable_filter, modulul de suport utilitate numit iptables ip_tables, modulele auxiliare au de obicei prefixul "ipt_" (ipt_state, ipt_REJECT, ipt_LOG, deși - ip_conntrack). Cele mai multe dintre modulele încărcate automagic, dar unii încă mai trebuie să descărcați manual (ip_conntrack_ftp - în caz contrar este posibil să nu funcționeze în mod activ; ip_conntrack_irc - în caz contrar este posibil să nu funcționeze pentru fișierul DCC acreditant; ip_nat_ftp; ip_nat_irc).

module suplimentare de bază este controlat de bibliotecă partajată (vezi. / lib / iptables /) pentru iptables utilități. netfilter poate emula ipfwadm si ipchains prin intermediul modulelor de kernel (de ceva timp nu mai pot fi incluse în kernel-ul standard), modulul trebuie ip_tables
descărca.

Tabele, lanțuri, pistă pachet

Aproximativ circuit de procesare de pachete (luate de la NAG2, în opinia mea, de dragul frumuseții
imagini artist donat adevărul: plecat calea de a doua puncte de orientare de pe localhost, nu trece prin înainte):

Tabelele cu lanț PREROUTING și calandrare și NAT sunt lanț POSTROUTING.Pravila PREROUTING se aplică pachete imediat după ce a primit pachetul de la interfața de intrare pentru a alege un traseu, și normele de lanț POSTROUTING imediat înainte de retragerea pachetului prin intermediul interfeței. Tabelul nat nu are lanțuri de intrare și FORWARD.

Secvența reală a procesării unui pachet de intrare destinat unui proces local este după cum urmează:

  1. lanț PREROUTING vizualizat tabel măngălui (utilizat pentru transformare sub formă de pachete), se întâmplă compuși de urmărire
  2. privit prin lanțul PREROUTING de masă nat (utilizat pentru DNAT,
    filtru nu este necesar)
  3. Rutare: în cazul în care pachetul trebuie să fie dirijate spre exterior, apoi se trece la prelucrarea de trecere a pachetului
  4. privit prin lanțul de intrare a tabelului calandrare
  5. privit prin filtrul de masa lanțului de intrare

Pachetul efectiv de prelucrare a secvențelor, care pleacă de la gazda noastră, după cum urmează:

Secvența de procesare real pachet transmis (revendicarea 3 din prima procedură):

  1. privit prin masa de calandrare FORWARD lanț
  2. privit prin filtrul de masă FORWARD lanț
  3. redirecționarea, ca pachet Tabelul măngălui poate fi schimbat;
    dacă pachetul este direcționat spre interior, apoi du-te la prima procedură (n. 1 sau 4?)
  4. privit prin tabelul POSTROUTING calandrare lanț
  5. privit prin masa de lanț POSTROUTING nat (utilizat pentru SNAT și Masqueradarea, nu este necesar pentru a filtra aici)

piese netfilter conexiuni prin intermediul modulului ip_conntrack (parametrul hashsize specificând dimensiunea hash) și module protokolozavisimyh (ICMP, TCP, FTP, TFTP, irc, Amanda, SCTP) în lanțul de prelucrare PREROUTING tabelul nat (pentru pachetele generate local în timpul procesării lanțului de producție) și le stochează într-un tabel special. În acest caz, toate pachetele de defragmentat în mod necesar. Compușii sunt îndepărtați din tabelul de la expirarea intervalului de somn în absența următorului pachet. Când modulul de descărcare (cm. IPTABLES_MODULES_UNLOAD in / etc / sysconfig / iptables-config) Masa conexiune resetata. Pachetul poate fi vizualizat în ceea ce privește configurația (în tabelul nucleu de stat) într-una din cele patru state în raport cu compușii urmărite anterior:

  • NEW (văzut primul pachet într-un compus, de obicei, un pachet cu steagul SYN, dar poate fi fără: îndepărtarea mesei, la expirarea perioadei de așteptare de conectare stabilită anterior sau la o sarcină de echilibrare pe mai multe firewall-uri, cu toate acestea, a se vedea mai jos / proc /. sys / net / ipv4 / netfilter / ip_conntrack_tcp_loose)
  • STABILIT (după ce a primit compusul de pachete de răspuns intră în această stare de stat nou sau în legătură, în special, al doilea pachet la stabilirea TCP-conexiuni (SYN / ACK) este deja în starea ESTABLISHED, pentru ICMP: Echo, Timestamp, Informații, masca Adresa; [răspunsurile ICMP pot avea, de asemenea, această condiție, în cazul în care acestea sunt rezultatul pachetului trimis la noi?])
  • CONEXE (Compus Generated compus capabil să ESTABLISHED, de exemplu, date de transmisie ftp generate de compus de control ftp sau DCC pentru IRC sau un mesaj de eroare ICMP; necesită modulul protokolozavisimy)
  • INVALID (pachet nu a reușit să clasifice, de exemplu, ca răspuns la un pachet ICMP non-existente, aceste pachete este recomandat pentru a arunca departe)

Numărul maxim posibil de compuși monitorizate este dat în fișierul / proc / sys / net / ipv4 / ip_conntrack_max (fiecare compus ocupă 350 octeți de memorie non-preemptiv). Un set de patch-uri tcp-fereastra de urmărire pentru kernel 2.4 (inclus în kernel 2.6) oferă posibilitatea de a seta o valoare implicită pentru intervalul de somn la ștergerea înregistrărilor despre conectarea tabelelor pentru diferitele situații din / ip_conntrack _ * _ timeout / proc / sys / net / ipv4 / netfilter * (în secunde). A trebuit să scrie în jos 600 în ip_conntrack_tcp_timeout_close [_wait] pe tot parcursul lanțului de aprovizionare, sau pentru a termina conexiunea a fost blocat (FIN / ACK de la client sau RST de la server), o parte din pachetul final este în continuare „tăiat“ (clientul se închide priza semi-închis numai atunci când este necesar următorii compuși, conexiune de intrare de masă conntrack a fost eliminat, și pentru a crește zilele ip_conntrack_tcp_timeout_close nu doresc să). De asemenea, vă permite să „orienteze“ comportamentul mașinii de stat a variabilelor (/ proc / sys / net / ipv4 / netfilter /):

  • ip_conntrack_tcp_be_liberal
    1. toate pachetele care nu se potrivesc în fereastra sunt considerate INVALID
    2. numai pachetele RST care nu se potrivesc în fereastra sunt considerate nevalabile (a pus)
  • ip_conntrack_log_invalid (ieșire în INVALID pachete Journal)
  • ip_conntrack_tcp_loose (cu „pick-up“ este deja instalat
    conexiune ca pachetele necesare în ambele direcții pentru a confirma, dacă 0, conexiunea stabilită nu este luat deloc; default - 3)
  • ip_conntrack_max_retrans (numărul repetat fără ACK de pachete de confirmare, care este necesară pentru a elimina compusul din tabel după suplimentar
    secunde așteptări ip_conntrack_timeout_max_retrans; default - 3)

Tabelul conexiunilor curente pot fi găsite în fișierul / proc / net / ip_conntrack

managementul lanțului se realizează cu ajutorul programului iptables.

După încărcare lanț definit (toate politicile ACCEPT) INPUT, FORWARD și IEȘIRE în tabelul de filtrare; PREROUTING, POSTROUTING și IEȘIRE în tabelul nat;
PREROUTING, INPUT, FORWARD, IEȘIRE și POSTROUTING un tabel mangle. Nu pot fi șterse. Format de comandă:

  • -proto [col] | -p [! ] protocol
    (Puteți specifica numele protocolului (vezi / etc / protocoale) sau numărul protocolului ALL ;. Nume protocol înseamnă TCP sau UDP, sau icmp)
  • sursa buna | -s | -SRC [! ] Adresa [/ masca]
    (Masca poate fi scris ca 4 zecimala și masca lungime rețea care specifică)
  • -destination | -d | -dst [! ] Adresa [/ masca]
  • -in-interfață | [-i! ] Nume [+] (nume de interfață de intrare;
    de exemplu ppp0, lo, eth0; șablon „+“ - se potrivește cu orice șir; pot fi utilizate numai în lanțuri INPUT, FORWARD și PREROUTING)
  • -out-interfață | -o [! ] Nume [+] (numele interfeței de ieșire;
    de exemplu ppp0, lo, eth0; șablon „+“ - se potrivește cu orice șir; pot fi utilizate numai în lanțuri OUTPUT, FORWARD și POSTROUTING)
  • [! ] -fragment | -f (numai pentru piesele ulterioare de pachete fragmentate, folosind compușii de urmărire toate pachetele
    defragmentată lanț de procesare tabel PREROUTING când nat)
  • -Creați o corespondență între | Extensiile module -mimya (module TCP, UDP si ICMP
    condus implicit folosind șablonul -protocol)

Extinderea modulului Parametrii tcp

  • Port-sursa buna [! ] [Port [: port]]
    (Puteți utiliza numere de port, sau nume de servicii din / etc / servicii; dacă omiteți primul interval al portului, se presupune 0, dacă omiteți ultimul interval de port, inseamna 65535)
  • -destination-Port [! ] [Port [: port]]
  • -TCP-steaguri [! ] steaguri Masca steaguri obligatorii
    (Steaguri Mask - o listă separată prin virgulă de steaguri scanate (SYN, ACK, FIN, RST, URG, PSH, ALL, NONE) steaguri de legare - o listă separată prin virgulă de steaguri, care sunt stabilite în pachetul db și indicatorii rămase din rândul verificat trebuie resetat)
  • [! ] -syn | -y (pachete cu steagul SYN, înregistrări echivalente „-TCP fanioane SYN, RST, SYN ACK“; negare furnizează se potrivește pachete fara SYN si ACK steaguri simultan)
  • [! ] Opțiunea -TCP-opțiune-număr

Extinderea modulului Parametrii udp

Modul de expansiune Parametrii ICMP

  • [Tip -icmp! ] Mesaje Tip [/ code]
    (Puteți utiliza numărul sau tipul numele și codurile: 8, 8/0, rețea redirecționează;
    pentru a obține o listă de nume valide, executați următoarea comandă: iptables -p ICMP -ajutor)

Parametrii Mac extensor

expansiune marca parametrii modulului

  • -Mark [! ] Număr (marcator pachet (întreg fără semn) este setat acțiunea MARK, numai într-o anumită gazdă)

Extinderea modulului Parametrii limită (protecție împotriva atacurilor DoS sau limitarea intrărilor de jurnal, modelul de cupă neetanșe: găleată dat de volumul și viteza lui de auto-golire, un model care corespunde pachetului este plasat într-o găleată)

  • [! ] -limit bucăți / unitatea de timp (viteza de seturi bena auto-golire; Unitatea de timp valid: secundă, minut, oră, zi)
  • -limit-burst bucăți (seturi capacitatea cupei)

Extinderea modulului Parametrii multiport (o listă de porturi la 15 porturi)

  • Lista-porturi sursa buna, portul, printr-o virgulă
  • Lista -destination-port, port, printr-o virgulă
  • Lista -port de porturi printr-o virgulă (de la un port cu același număr)

Parametrii lungimii modulului de expansiune (lungime de pachete)

Parametrii modulului de extensie proprietar (numai în lanțul PRODUCȚIA, nu funcționează întotdeauna)

Extinderea modulului Parametrii pkttype

Parametrii statului modul de expansiune (starea conexiunii conform conntrack):

Extinderea modulului Parametrii conntrack (modulul de expansiune caracteristici de stat):

Parametrii modulului de extensie helper (modulul de urmărire a protokolozavisimy
Compuși):

Parametrii modulului de extensie TOS (de asemenea, disponibile DSCP, modulul ECN)

  • -tos [! ] Tipul serviciului (Normal-Service, Minimizare-cost,
    Maximizați-Fiabilitate, Maximize-Throughput, Minimizare-Delay; este doar numele!)

Extinderea modulului Parametrii tcpmss (Maximum Segment Size în TCP, pentru numai
pachete SYN sau SYN / ACK)

Parametrii modulului de expansiune TTL

modul de expansiune necurat nu are parametri. Acesta vă permite să captura pachete „greșit“.

parametrii modulului de expansiune ah (IPSec, trebuie să specificați, de asemenea, un număr de protocol 51)

parametrii modulului de expansiune ESP (IPSec, trebuie să specificați, de asemenea, un număr de protocol 50)

<Утилиты iptables-save и iptables-restore

artizanale cu atenție și lanțul de bine stabilit trebuie menținută folosind iptables-save utilitate. imprimeuri pe stdout, parametri:

  • -c (ieșire contor)
  • -t tabel-name (numai afișarea tabelului specificat)

Anterior lanț salvate pot fi încărcate în kernel folosind utilitarul
iptables-restore (citit de la stdin, implicit reseta tabelul recuperabilă, parametrii):

  • -c (restabili contoare)
  • -n (nu se resetează tabelul recuperabilă)

Serviciul în Red Hat Linux

În distribuțiile Red Hat Linux serviciu iptables disponibil (operat de chkconfig convenționale și servicii) în /etc/rc.d/init.d cu caracteristici:

Când configurați regulile de pe gazda de la distanță este recomandat să părăsească calea în sine
retragere, de exemplu, înainte de a face modificări pentru a adăuga la linia crontab, returnează setările înapoi, dacă ceva nu merge bine (iptables / sbin / serviciu stop).

Frecvent regulile utilizate ar trebui să fie la începutul lanțului. Pentru a optimiza în continuare lanțul este rupt în subșirurile (de exemplu, prin protocol).

Exemplu de stabilire a unei stații de lucru sau un server intern mic:

[...] netfilter și iptables pentru Linux: principii de funcționare, netfilter, a [...]

[...] netfilter și iptables pentru Linux: principii de funcționare, netfilter, a [...]