Ubuntu tulemüüri võrgu koormustest

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Tööpõhimõte

  • back-scatter maandamine

Kui kirjeldada arvutis väljamõeldud ip aadress ja mac aadress

# arp -s 192.168.10.119 76:48:f1:f2:02:2a

ning saata pakette sellele aadressile, siis tõenäoliselt nad jõuavad kõigisse selles vlanis olevatesse switchi portidesse.

Võrguskeem

Skeemi kirjeldab tulemüüri koormustesti tegemise keskkonda, eriti back-scatter pakettide absorberisse sattumist. Võltsitud juhusliku lähte ip aadressiga ründe testimise puhul on oluline mitte risustada internetti testis kasutatud dst ip aadressilt pärinevate tcp syn-ack ja tcp rst pakettidega. Nende pakettide internetti sattumine hoitakse ära ruutides reeglina kõik liikluse absorberisse.

                          
                                                                    |              ____________________              |
                                                                    |             |                    |             |
       _____________________                                        |             | tulemüür           |             |
      |                     |                                       |-------------|                    |-------------|
      | ründejuht           |                                       |             |____________________|             |
      |_____________________|                                       |                                                |
                                                                    |              ____________________              |
       _____________________                                        |             |                    |             |
      |                     |                                       |-------------| absorber           |             |
      | ründe allikas - 1   |                                       |             |____________________|             |
      |_____________________|                                       |                                                |
                                                                    |                                                |
                                      ________________              |                                                |
                          internet   |                |             |                                                |
                                     | isp ruuter     |-------------|              ____________________              |
                                     |________________|             |             |                    |             |
                                                                    |--  --  --  -| rakendusserver - 1 |-------------|
       _____________________                                        |             |____________________|             |
      |                     |                                       |                                                |
      | kontroll arvuti - 1 |                                       |              ____________________              |
      |_____________________|                                       |             |                    |             |
                                                                    |--  --  --  -| rakendusserver - 2 |-------------|
                                                                    |             |____________________|             |
                                                                    |                                                |

kus

  • tulemüüri ruutingutabelis on kahte sorti ruutingud: 1. ründe testi haldajad, kontroll arvuti jms on ruuditud isp ruuterisse tavalisel viisil, 2. kõik muu on ruuditud absorberisse
  • tulemusena on testijal ülevaade kui palju syn-ack jms pakette internetti läheks
  • kontroll arvuti teeb taustal httping abil päringuid rakendusserver peale ja see on indikatsiooniks ründe edukuse kohta, nt
$ httping -g http://rakendusserver/
  • ründe juht seadistab tulemüüri, jälgib absorberi tööd jne
  • absorber on tavaline linux arvuti, mille peale jõuab rohkelt pakette, mis drop'itakse ja jälgitakse sündmusi nt
# vnstat -l -i eth0
# sysctl net.netfilter.nf_conntrack_count
  • rakendusserveris töötab http veebiserver, nt nginx, seal sobib samuti uurida võrguliiklust vnstat abil
  • testi käigus genereeritakse syn pakette, st rakendusserveri nginx enda jõudlus pole oluline kuna tema teenuseni ei jõutagi (aga ta peab töötama, muidu ei vasta rakendusserveri tcp/ip stack syn-ack vaid rst paketiga)
  • ründe allikas genereerib liiklust nt hping3 programmiga
# timeout 60 hping3 -S -c 100000000 10.10.104.124 -a 10.11.39.34 -p 80 -i u100
# timeout 60 hping3 -S -c 100000000 10.10.104.124 --rand-source -p 80 -i u10

Rakendusserver saab käituda syn paketi suhtes kolmel viisil

  • ei saada midagi vastu - selleks peab rakendusserveri paketifilter syn paketi drop'ima
  • saadab vastu tcp rst paketi - selleks ei tohi olla paketifiltri piirangud port 80/tcp peal ja ei protsess ei tohi kuulata sel pordil
  • saadab vastu tcp syn-ack paketi - selleks ei tohi olla paketifiltri piirangud port 80/tcp peal ja protsess peab kuulama sel pordil

Tulemüüri käitumise võimalused

  • tulemüür töötab tavalises stateful režiimis - random syn src tekitab väga palju nn conntrack olekuid ja kurnab tulemüüri; kuna tulemüür ressursid ammendatakse, siis kasutaja ei saa backendis töötavale teenusele ligi
  • tulemüür töötab stateless režiimis ja lubab kõik dst port 443 ja src port 443 paketid läbi - tulemüüri ei kurnata, kõik jõuab backendi välja, kurnatakse backendi mida backend haldab syn cookies abil
  • tulemüür töötab src ip põhises sageduspiirangu režiimis - random src syn rünne ei ole selles mõttes edukas, et tulemüüri ei koormata, aga pahalane saab võltsida healase ip aadressi ja healase jaoks teenuse kasutamise blokeerida (10.10.104.124 on teenus, 10.11.38.34 on healase ip aadress, käsk antakse mingist kolmandast arvutist, mis on pahalase arvuti)
 pahalene # timeout 60 hping3 -S -c 100000000 10.10.104.124 -a 10.11.39.34 -p 80 -i u100
  • tulemüür töötab syn proxy režiimis - tulemüürist saavad läbi ainult tcp 3whs (three ways handshake) läbinud pöördujad

Kasulikud lisamaterjalid

  • TODO