Kompiuterių tinklai UDP, NAT, SOCKS Rolandas Griškevičius rolandas.griskevicius@vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 1
UDP RFC 768 Neturi: Ryšio užmezgimo žingsnių Būsenų (ir būsenų diagramos) ACK ir kitų indikatorių (flags) Turi: Porto numerius Siuntėjo Gavėjo Kontrolinę sumą Tik 8 baitų antgalvę (header) 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 2
UDP 2 Kadangi neturi susijungimo būsenos, kiekvienas paketas laikomas nepriklausomu: Normalu jei paketas bus pamestas Normalu, jei vėliau išsiųstas ateis anksčiau Šaltinis: http://nmap.org/book/tcpip-ref.html 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 3
Ryšio schemose kur: UDP taikymai Daug klientų, mažai duomenų Multicast - kai reikia išsiųsti dideliam klientų skaičiui Standartiniai naudojimo atvejai: DNS portas 53 BOOTP portai 67 ir 68 tftp portas 69 Numatytas kontrolės mechanizmas SNMP 161 ir 162 RIP 520 ir 521 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 4
UDP 3 ygent tmp # tcpdump -i lo -vv -X -s 0 tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes 19:40:11.285299 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 55) 127.0.0.1.48017 > 127.0.0.1.5000: [bad udp cksum c2f6!] UDP, length 27 0x0000: 4500 0037 0000 4000 4011 3cb4 7f00 0001 E..7..@.@.<... 0x0010: 7f00 0001 bb91 1388 0023 fe36 e287 59f9...#.6..Y. 0x0020: 1700 0100 0000 0101 0000 0b00 726f 6c61...rola 0x0030: 6e64 6173 2e67 00 ndas.g. 19:40:11.287460 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 42) 127.0.0.1.5000 > 127.0.0.1.48017: [bad udp cksum af75!] UDP, length 14 0x0000: 4500 002a 0000 4000 4011 3cc1 7f00 0001 E..*..@.@.<... 0x0010: 7f00 0001 1388 bb91 0016 fe29 89ef e0e0...)... 0x0020: 0a00 0100 0000 4100 07fc...A... Gavėjo IP adresas IP antgalvė Siuntėjo portas Gavėjo portas Siuntėjo IP adresas 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 5
Ugniasienė Firewall 3 pagrindiniai tipai: Paketų filtras Pagal užduotas taisykles stebi srautą ir praleidžia/atmeta paketus Jau retai naudojamas kaip vienintelis sprendimas Greičiausi, bet primityviausi Sujungimo filtras (būsenos) Stebi kliento (dažniausiai iš vidaus) sudarytą sujungimą (TCP/UDP) ir pagal tai nustato paketų filtrą. Seka sujungimo būseną Aplikacijos lygio filtras. Analizuja OSI 5 ir aukštesnius lygius. Dažniausiai naudojami http, ftp protokolams filtruoti 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 6
Router vs Firewall Maršrutizatorius paprastai veikia 3 OSI = IP lygyje Teoriškai gali atlikti adresų transliaciją Užduotis nukreipti paketą tam tikru keliu Ugniasienė veikia mažiausiai 4 OSI = TCP/UDP lygyje: Atlieka portų filtravimą Atlieka TCP/UDP sujungimo monitoringą (nuo ryšio pradėjimo - handshaking - iki užbaigimo) Atlieka aukštesnio protokolo kontrolę Pvz, SKYPE blokavimas gana sudėtingas, nes naudoja įvairius komunikavimo mechanizmus Gali atlikti NAPT 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 7
NAT Paprasčiausias statinis NAT. Veikia IP lygyje Aprašoma kiekvieno IP adreso transliacija atskirai: X n Y n 192.168.1.x 1 212.59.200.Y 1... 192.168.1.x n 212.59.200.Y n Naudojamas paprastai adresų transliacijai Cisco conf t ; interface <interfeisas> ; ip nat inside 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 8
Dinaminis NAT Iš vieno rėžio į kitą, rėžiai gali būti nelygūs x n y m, n = 1..a, m = 1..b, a b Veikia IP lygyje, dinamiškai tam tikram laikui kiaurai transliuoja x n y b adresų porą. Veikia IP lygyje, teikia skaidrų IP kanalą. 192.168.1.x 1 212.59.200.y 1... 192.168.1.x n.. 212.59.200.y m 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 9
NAT problemos Pagrindinė problema kontrolinė paketo suma. TCP ir UDP į kontrolinę sumą įtraukia ir IP antgalvės dalį, todėl reikia perskaičiuoti IP ir TCP kontrolines sumas 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 10
PAT, NAPT 10.1.1.1:10001 88.88.100.1:80 212.59.100.1:20001 ->88.88.100.1:80 212.59.100.1:20002 ->88.88.100.1:80 10.1.1.1 10.1.1.254 212.59.100.1 10.1.1.2 Keitimo (mapping) lentelė 10.1.1.1:10001 20001 10.1.1.2:10002 20002 88.88.100.1 10.1.1.2:10002 88.88.100.1:80 Pagrindinis keitimas vyksta porą source IP + port transliuojant į laisvą porto numerį Grįžtantis paketas atrandamas pagal gavėjo porto numerį ir pagal tai lentelėje vėl surandama pora IP + portas vidiniame tinkle 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 11
NAPT problemos NAPT paveldi antgalvių kontrolinių sumų problemą iš statinio NAT ICMP paketas neturi porto, taip pat savyje gali nešti kito IP paketo informaciją reikalingas dvigubas perskaičiavimas Laukiančio siuntėjo porto problema Kitos: http://www.cisco.com/web/about/ac123/ac147/ac174/ac182/about_cisco_ipj_ar chive_article09186a00800c83ec.html 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 12
Laukiančio siuntėjo porto problema Pvz, rexec paslauga: 1. Klientas jungiasi prie 512 prievado (rexec) 2. Klientas siunčia porto numerį, kuriuo jis klausosi stderr srauto duomenų. Formatas tekstinis 3. Jei portas ne tuščias (null terminated), serveris jungiasi į kliento nurodytą portą 4. Klientas siunčia vardą, slaptažodį, komandą, parametrus 5. Serveris siunčia klaidos kodą ( 0 OK, kita klaida) 6. Serveris siunčia programos išvesties duomenis į stdout ir stderr srautus per atskirus TCP kanalus (vienas kuriuo klausosi klientas) 7. Serveris uždaro susijungimus 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 13
Laukiančio siuntėjo porto probl. 2 14:10:14.73 127.0.0.1.1016 > 127.0.0.1.512: S 0:0(0) win 3000 <mss 1500> 4500 002c e405 0000 4006 98c4 7f00 0001 E..,...@... 7f00 0001 03f8 0200 4ef4 19bb 0000 0000...N... 6002 0bb8 1f9d 0000 0204 05dc `... 14:10:14.73 127.0.0.1.512 > 127.0.0.1.1016: S 0:0(0) ack 1 win 3000 <mss 1500> 4500 002c e406 0000 4006 98c3 7f00 0001 E..,...@... 7f00 0001 0200 03f8 4ef4 19bb 4ef4 19bc...N...N... 6012 0bb8 b6dc 0000 0204 05dc `... 14:10:14.73 127.0.0.1.1016 > 127.0.0.1.512:. ack 1 win 3000 4500 0028 e407 0000 4006 98c6 7f00 0001 E..(...@... 7f00 0001 03f8 0200 4ef4 19bc 4ef4 19bc...N...N... 5010 0bb8 cec1 0000 P... 14:10:14.75 127.0.0.1.1016 > 127.0.0.1.512: P 1:6(5) ack 1 win 3000 4500 002d e408 0000 4006 98c0 7f00 0001 E..-...@... 7f00 0001 03f8 0200 4ef4 19bc 4ef4 19bc...N...N... 5018 0bb8 6c50 0000 3130 3134 00 P...lP..1014. Du keliai: Papildomai konvertuoti 1014 (šiuo atveju) portą ateinančiam paketui Pakeisti išeinančiame į serverį pakete porto numerį savo ir vėliau jį permetinėti klientui Ta pati problema egzistuoja ir FTP protokole atidaromi 2 srautai vienas komandoms, kitas - duomenims 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 14
Linux NAPT #http://www.gentoo.org/doc/en/home-router-howto.xml Praktiškai išbandytas Linux NAPT serveris. Gentoo linux, branduolys 2.6.32 # Setup default policies to handle unmatched traffic # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P FORWARD DROP export LAN=eth0 export WAN=eth1 export INT_LAN_IP=10.56.0.0/16 #Then we lock our services so they only work from the LAN iptables -I INPUT 1 -i ${LAN} -j ACCEPT iptables -I INPUT 1 -i lo -j ACCEPT iptables -A INPUT -p UDP --dport bootps! -i ${LAN} -j REJECT iptables -A INPUT -p UDP --dport domain! -i ${LAN} -j REJECT #(Optional) Allow access to our ssh server from the WAN iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT #Drop TCP / UDP packets to privileged ports iptables -A INPUT -p TCP! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP iptables -A INPUT -p UDP! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP #Finally we add the rules for NAT iptables -I FORWARD -i ${LAN} -d $INT_LAN_IP -j DROP iptables -A FORWARD -i ${LAN} -s $INT_LAN_IP -j ACCEPT iptables -A FORWARD -i ${WAN} -d $INT_LAN_IP -j ACCEPT iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE #Tell the kernel that ip forwarding is OK echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 15
SOCKS proxy Socks proxy paslauga, užtikrinanti paketų ir/arba sujungimų perdavimą iš daugelio klientų per vieną serverį Veikia OSI lygyje 4.5 Klientas autentifikuojasi per TCP, registruoja paslaugą, užmezgamas sujungimas su serveriu Versijos: SOCKS v4 SOCKS v4a SOCKS v5 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 16
Socks v4 Klientas užmezga ryšį: Laukas 1 0x04, 1 baitas, versijos numeris Laukas 2 komandos kodas, 1 baitas, 0x01 inicijuoti sujungimą, 0x02 laukti sujungimo Laukas 3 2 baitai, portas Laukas 4 4 baitai, IP adresas Laukas 5 vartotojo ID, pabaigoje - 0x00 Serveris: Laukas 1 0x00 baitas Laukas 2 statusas 0x5a OK, 0x5b atmesta ir t.t. Laukas 3 6 baitai, ignoruojami Pavyzdys, jugimasis su 66.102.7.99:80, serverio atsakas teigiamas: Klientas: 0x04 0x01 0x00 0x50 0x42 0x66 0x07 0x63 0x46 0x72 0x65 0x64 0x00 Serveris: 0x00 0x5a 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX ignoruojami, gali būti bet kokios reikšmės Dabar klientas gali inicijuoti duomenų srautą Šaltinis: http://en.wikipedia.org/wiki/socks#socks_4 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 17
Socks v5 - RFC 1928 Socks v5: SOCKS 4 vs 5 Pridėtas IP v6 Pridėtas UDP protokolas UDP labai svarbus DNS paslaugai 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 18
Socks v 5 Šaltinis: Linux Magazine, 2005 liepa, 56 leidimas 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 19
SOCKS panaudojimas Pros: Gana paprasta realizacija Greitas Gali būti taikomas kaip alternatyva NAPT, kur NAPT negalimas dėl saugumo (išeinančio ryšio) Valdomas išeinantis srautas Gerai integruojasi su TOR Tinka tarptautinei paslaugai Cons Aplikacija turi palaikyti SOCKS proxy (naršyklės, IRC palaiko) 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 20
tor Daugiasluoksnio maršrutizavimo paslauga Naudojamas anoniminiam ryšiui Interfeisas organizuojamas socks pagalba Prieš siųsdamas pirmą paketą pirmas tor routeris parenka atsitiktinį kelią ir apvelka žinutę keliais simetriniais raktais koduotais apvalkalais 2010-11-03 R. Griškevičius, Kompiuterių tinklai, VGTU, 2010 21