IptablesWorkshop

Zpracovani packetu

  • kazdy packet ma tak zvanou "znacku", default 0.
    • oznacuje se nfMark, netfilter mark, fwmark, ...
  • kazde spojeni muze mit znacku, connmark
    • znacka je stejna pro vsechny packety na spojeni

                            Network
                    -----------+-----------
                               |
                  +--------------------------+
          +-------+-------+        +---------+---------+
          |    IPCHAINS   |        |      IPTABLES     |

          |     INPUT     |        |     PREROUTING    |
          +-------+-------+        | +-------+-------+ |
                  |                | |   conntrack   | |
                  |                | +-------+-------+ |

                  |                | |    mangle     | | <- MARK WRITE  
                  |                | +-------+-------+ |
                  |                | |      IMQ      | |
                  |                | +-------+-------+ |
                  |                | |      nat      | | <- DEST REWRITE

                  |                | +-------+-------+ |     DNAT or REDIRECT or DE-MASQUERADE
                  |                +---------+---------+
                  +------------+-------------+
                               |
                       +-------+-------+
                       |      QOS      |
                       |    INGRESS    |

                       +-------+-------+
                               |
         packet is for +-------+-------+ packet is for
          this machine |     INPUT     | another address
        +--------------+    ROUTING    +--------------+
        |              |    + PDBB     |              |
        |              +---------------+              |

+-------+-------+                                     |
|   IPTABLES    |                                     |
|     INPUT     |                                     |
| +-----+-----+ |                                     |

| |   mangle  | |                                     |
| +-----+-----+ |                                     |
| |   filter  | |                                     |
| +-----+-----+ |                                     |
+-------+-------+                                     |
        |                               +---------------------------+
+-------+-------+                       |                           |
|     Local     |               +-------+-------+           +-------+-------+

|    Process    |               |    IPCHAINS   |           |    IPTABLES   |
+-------+-------+               |    FORWARD    |           |    FORWARD    |

        |                       +-------+-------+           | +-----+-----+ |
+-------+-------+                       |                   | |  mangle   | | <- MARK WRITE
|    OUTPUT     |                       |                   | +-----+-----+ |
|    ROUTING    |                       |                   | |  filter   | |

+-------+-------+                       |                   | +-----+-----+ |
        |                               |                   +-------+-------+
+-------+-------+                       |                           |
|    IPTABLES   |                       +---------------------------+

|     OUTPUT    |                                     |
| +-----------+ |                                     |
| | conntrack | |                                     |
| +-----+-----+ |                                     |
| |   mangle  | | <- MARK WRITE                       |

| +-----+-----+ |                                     |
| |    nat    | | <-DEST REWRITE                      |
| +-----+-----+ |     DNAT or REDIRECT                |
| |   filter  | |                                     |
| +-----+-----+ |                                     |
+-------+-------+                                     |
        |                                             |
        +----------------------+----------------------+
                               |
                  +------------+------------+
                  |                         |

          +-------+-------+       +---------+---------+
          |    IPCHAINS   |       |      IPTABLES     |
          |     OUTPUT    |       |    POSTROUTING    |

          +-------+-------        | +-------+-------+ |
                  |               | |    mangle     | | <- MARK WRITE  
                  |               | +-------+-------+ |
                  |               | |      nat      | | <- SOURCE REWRITE
                  |               | +-------+-------+ |      SNAT or MASQUERADE

                  |               | |      IMQ      | |
                  |               | +-------+-------+ |
                  |               +---------+---------+
                  +------------+------------+
                               |
                        +------+------+
                        |     QOS     |
                        |    EGRESS   |

                        +------+------+
                               |
                    -----------+-----------
                            Network

-- SvataDedic - 02 Dec 2006

Zakladni pojmy

  • pravidlo (rule)
    • zakladni jednotka
    • obsahuje podminky a cil (target) - akce, ktera se ma provest
  • retezec (chain)
    • seznam pravidel
    • zpracovavaji se postupne od 1. do posledniho
    • z retezce lze vyskocit
    • existuji preddefinovane retezce
  • tabulka
    • filter, mangle, nat, raw
    • obsahuje preddefinovane retezce
    • muze obsahovat uzivatelske retezce

Pri zpracovani packetu jadro zpracuje zpracuje jen preddefinovane retezce. Do uzivatelskych se zpracovani dostane jenom pomoci nejakeho pravidla, skokem (-j, -g).

tabulka / retezec PREROUTING INPUT FORWARD OUTPUT POSTROUTING
filter Ne, není Ano, hotovo Ano, hotovo Ano, hotovo Ne, není
mangle Ano, hotovo Ano, hotovo Ano, hotovo Ano, hotovo Ano, hotovo
nat Ano, hotovo Ne, není Ne, není Ne, není Ano, hotovo
raw Ano, hotovo Ne, není Ne, není Ano, hotovo Ne, není

Akce

  • ACCEPT : propusti packet, ukonci zpracovani
  • DROP, REJECT : zahodi nebo odmitne packet, ukonci zpracovani
  • LOG : zaloguje packet do syslogu, pokracuje dal
  • DNAT : zmeni cilovou adresu, ukonci zpracovani
  • SNAT : zmeni zdrojovou adresu, ukonci zpracovani
  • MARK : oznackuje packet, pokracuje
  • CONNMARK : oznackuje spojeni, pokracuje

Predavani rizeni

  • skok do "podprogramu: -j JMENO_RETEZCE
    • zacne se provadet retezec JMENO_RETEZCE
    • az se zpracuji vsechna pravidla ve JMENO_RETEZCE, pokracuje se hned dalsim pravidlem za -j (pokud nejaka akce neukonci zpracovani)
  • vyskok do volajiciho retezce: -j RETURN
  • skok do retezce bez navratu: -g NEKAM (goto)

Podminky

  • nektere podminky jsou v modulech
    • do pravidla se musi napsat pouziti modulu, napr. -m ipp2p umozni pouzivat funkce modulu ipp2p
  • pravidlo muze mit mnoho podminek, i z ruznych modulu:
    • -m tcp -m ipp2p --tcp-flags SYN,ACK,FIN,RST SYN --dc

Hlavicka IPv4

Porovnani Parametry Modul Priklad Vyznam
-s, --source [!] ip/mask - -s 10.102.0.0/23 zdrojova adresa / odesilatel je z rozsahu 10.102.0.0/23. Pozor na NAT
-d, --destination [!] ip/mask -d 10.102.0.0/23 cilova adresa / prijemce je z rozsahu 10.102.0.0/23. Pozor na NAT
-p, --protocol [!] protokol -p icmp jiny protokol nez ICMP (viz /etc/protocols)
--length cislo[:cislo] -m length --length 80, --length 80:180 packety, ktere jsou mensi nez 80, resp. mezi 80 a 180 (vcetne)
--mac-source [!] mac:add:rr:esa -m mac --mac-source ! 00:0e:2e:50:dc:47 packety z jine MAC nez 00:0e:2e:50:dc:47
--source-ports port, port, ... -m multiport --source-ports 80,443 packety z portu http a https
--destination-ports --destination-ports 80,443 packety NA porty http(s)
--ports --ports 80,443 packety Z nebo NA porty http(s)
--ttl-eq cislo -m ttl --ttl-eq 1 packet ma TTL 1 (nanejvys na tento stroj)
--ttl-gt    
--ttl-lt    
--tos cislo -m tos --tos 8 packet, ktery ma ToS 8

Upozorneni: u vetsiny porovnani je nutne zavest urcity modul pomoci -m jmeno_modulu. Nazev modulu je vypsany ve sloupecku; jednoducha porovnani jsou vzdy zavedena a modul nepotrebuji (neni v tabulce uvedeny)

Protokol TCP

--sport, --source-port [!] port[:port] ! 0:1023 odeslano z portu 0-1023
--dport, --destination-port 443 poslano na port https
--tcp-flags flag[,flag,...] flag[,flag,...] --tcp-flags SYN,ACK,FIN,RST SYN packet ma nastaveny pouze SYN flag

Upozoneni: Nezapomente do prikazu pridat -m tcp -- zavedeni modulu TCP, ktery umoznuje ty ostatni prepinace

Traffic

--connlimit: Omezi otevirana spojeni, v zavislosti na zdrojove IP adrese

  • --connlimit-above 50 : kdyz pocet spojeni presahne 50
  • --connlimit-mask 29 : do poctu spojeni se pocitaji spojeni vsech stroju ze subnetu /29

--dstlimit: Omezi tok na cilovou IP na zadany packet per second

  • --dstlimit 100 : prumerne 100 pps
  • --dstlimit-mode: na co presne je omezeni:
    • dstip - na kazde cilove IP
    • dstip-dstport - zvlast na ruzne porty
    • srcip-dstip - zvlast pro kazdy par zdroj-cil
    • srcip-dstip-dstport - zvlast pro kazdy zdroj-cil:port

L7 filtr, ipp2p

Filtry pro rozpoznavani aplikacnich protokolu

ipset

ipset je mnozina IP adres. Muze to byt take mnozina adresa:port
  • bitmapa (0100001000000010) v pameti, 1 je tam kde je IPcko co patri do mnoziny
  • hashtabulka

  • Da se rychle otestovat zda zdrojove (cilove) IP patri (nepatri) do zvolene mnoziny

Znackovani

--mark: otestuje znacku packetu

  • --mark 4/15 : kdyz ma packet znacku ve tvaru xxxx0100 (znacka AND 15 = 4)

--connmark: otestuje znacku spojeni

  • --connmark 2/15: kdyz ma packet znacku ve tvaru xxxx0010 (znacka AND 15 = 2)

Slozite podminky

*Neco NEBO neco NEBO neco...*

-s 10.102.0.0/16 -j ZPRACUJ
-s 192.168.0.016 -j ZPRACUJ
-s 10.98.0.0/16 -j ZPRACUJ

Neco A ZAROVEN neco A ZAROVEN neco...

  • vice podminek do 1 pravidla, nebo
  • "kontrolni retezec", navrat pri nesplneni jedne z podminek

-N KONTROLA
-A KONTROLA -s !10.102.0.0/16 -j RETURN
-A KONTROLA -d !10.102.0.0/16 -j RETURN
-A KONTROLA -j DROP

-A FORWARD -i eth0 -j KONTROLa

-- SvataDedic - 02 Dec 2006

Topic revision: r2 - 2009-12-08 - 22:15:00 - SvataDedic
 

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback