Tulemüürid - kordamine Loeng 07 Tulemüürid - kordamine Tulemüürid iptables/netfilter Margus Ernits margus.ernits@itcollege.ee 1
Tulemüürid võib tinglikult jagada kaheks Tulemüürid IP pakette filtreerivad tulemüürid Teevad otsuseid IP paketi päiseinfo alusel (Näiteks lähte/siht aadressi/pordi alusel) Rakenduspõhised tulemüürid Teevad otsuseid paketi sisu alusel (Näiteks ei lubata Exchange e-postiserveri suunas suvalisi RPC funktsioonide väljakutseid vaid vaid neid, mida on teenuse kasutamiseks vaja) Antud loengus tuleb juttu IP pakettide filtreerimisest ehk tulemüürindusest Linux süsteemides 2
Vajadus Mille jaoks on vaja? Lubades ühendused vaid teatud teenustele ja teatud host arvutitest Lubades väljuvaid ühendusi vaid lubatud arvutitest ja lubatud teenuste külge Edastada pakette vastavalt etteantud reeglitele (Näiteks ühenduse jagamine) Piirata/häälestada liiklust (erinevate teenuste paketid saavad erinevalt käsitletud. Näiteks saab seada quota andmemahule) 3
Väisvõrgus paiknev kasutaja Kasutaja ei ühendu otse serverite külge Tulemüür ülevaade Tulemüür on samuti arvuti:) Tema otsustab: Kas ühendus lubada või mitte Sisevõrk Välisvõrk Sisevõrgu kasutaja saab ligi välisvõrgule Serveri kõik teenused ei pruugi Internetis nähtavad olla Sisevõrgu teenused Sisevõrgus paiknev kasutaja 4
DMZ DMZ - demilitarized zone Eraldamaks välisvõrgule pakutavaid teenuseid sisevõrgust Sise ja välisvõrgust saab kasutada DMZ tsoonis asuvaid teenuseid Eraldajateks on tulemüürid DMZ kõige ohtlikum tsoon, kus madin käib:) 5
DMZ ülevaade Väisvõrgus paiknev kasutaja Tulemüür eraldab Serverid välisvõrgust Ja sisevõrgust (kaks müüri või Üks kolme liidesega) Teenused, saab ligi seest ja väljast Sisevõrgu teenused. Ligipääs vaid sisevõrgust Sisevõrgus paiknev kasutaja 6
VPN VPN - Virtual private network Laialdaselt kasutusel sisevõrgu teenuste poole pöördumiseks Kasutaja autenditakse ja võrguliiklus krüpteeritakse Anonüümne ründaka infra teenustele ligi ei pääse Arvutis olev viirus siiski pääseb:( Mõnel firmal pole sisevõrku ja kõik teenused on kasutatavad läbi VPN ühenduste 7
VPN ülevaade Üldine toimimine Kasutaja 1 Kasutaja ühendub Interentti Tulemüür 4 VPN lüüs autendib kasutaja VPN lüüs 2 Kohalik marsruuter annab IP ja DNS aadressid 3 Kasutaja käivitab VPN kliendi Kasutaja arvuti saab uue nimeserveri ja lüüsi/võrgu aadressid Sisevõrgu teenused Kasutaja saab ligi sisevõrgu teenustele 8
NAT Tuletage meelde, mis on NAT PAT ja NAT Sisemine aadress ja väline aadress Sisevõrgu aadressid 9
SNAT SNAT source NAT Source IP: 192.168.11.11 Dest IP: 193.40.194.202 Source IP: 193.40.194.220 Dest IP: 193.40.194.202 Sisevõrk Tulemüür 193.40.194.220 transleerib lähteaadressi (source address) 10
DNAT DNAT destination NAT Source IP: 193.40.xx.xx Dest IP: 193.40.194.204 Source IP: 193.40.xx.xx Dest IP: 172.16.0.174 Sisevõrk Tulemüür transleerib saaja aadressi (destination address) 11
iptables Tulemüürides ja ka muudes arvutisüsteemides on vajadus filtreerida IP pakette Programm iptables on mõeldud Linux võrgupakettide filtreerimistarkvara netfilter seadistamiseks Netfilter/iptables tarkvara võib jagada kaheks osaks Kerneli moodulid User space tarkvara 12
Iptables võimalused Pakettide filtreerimine Ühenduste jälgimine (connection tracking) NAT Mangling Kiiruse piiramine Logimine 13
Tabelid ja ahelad Tableid Filter Nat Mangle Ahelad Prerouting Input Output Forward Postrouting 14
Tabelid ja ahelad Kõiki pakette pole vaja suunata läbi kõikide reeglite Erinevad ahelad võimaldavad vähendada programmi poolt läbi uuritavaid tabeleid 15
Tabelid ja ahelad Ahelad Võrk PREROUTING POSTROUTING Marsruutimise otsus FORWARD INPUT OUTPUT Lokaalne programm 16
Tabelid ja ahelad Ahelad ja tabelid Võrk PREROUTING mangle, nat,... POSTROUTING mangle, nat,... Marsruutimise otsus FORWARD mangle, filter INPUT mangle, filter OUTPUT mangle, nat, filter Lokaalne programm 17
Tabelid Filter Pakettide filtreerimiseks FORWARD filtreerime edasi suunatavaid pakette INPUT filtreerime sisenevaid pakette OUTPUT filtreerime väljuvaid pakette Nat Võrguaadresside transleerimiseks PREROUTING aadressi transleerimiseks enne marsruutimist DNAT ehk destination NAT POSTROUTING aadressi transleerimiseks peale marsruutimist SNAT source NAT OUTPUT tulemüüri poolt teostatav NAT 18
Tabelid Mangle Modifitseerime IP paketi päist QoS bittide modifitseerimine 19
Iptables käsu üldkuju iptables [-t --table table] -command [chain] [-i interface] [-p protocol] [-s address [port[:port]]] [-d address [port[:port]]] -j policy Keeruline? Selgeks saab praktika käigus Vaikimisi tabeliks on filter 20
Mõned näited Keelame ära liikluse http pordi: iptables -A INPUT -d 0.0.0.0/0 -p tcp --destination-port 80 -j REJECT REJECT keeldume paketist ja anname sellest ka saatjale teada Lubame ühendused localhostist iptables -A INPUT -i lo -j ACCEPT 21
Olemasolevate reeglite kuvamine iptables -L -nv -L kuvame reeglid -v jutukam väljund:) -n numbriline väljund (pordid ja IP aadressid) 22
Suunamine Suunamine iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3127 Suunatakse porti 80 tulnud paketid porti 3127 23
Näited Teeme INPUT tabeli tühjaks iptables -F INPUT 24
Maskeraadi näide iptables --flush iptables --table nat --flush iptables --delete-chain iptables --table nat --delete-chain iptables --table nat --append POSTROUTING --outinterface eth1 -j MASQUERADE iptables --append FORWARD --in-interface eth0 -j ACCEPT 25
Policy ACCEPT lubamine. Edasi ei uurita DROP blokeerimine. Edasi ei uurita LOG logitakse sellele reeglile vastamine ja iptables jätkab reeglite uurimist REJECT blokeerimine. Saatjale edastatakse vastus, et pakett blokeeriti (näiteks icmp-host-prohibited) DNAT saaja aadress muutmine SNAT saatja aadressi muutmine MASQUERADE saatja aadress muudetakse tulemüüri omaks 26
Võtmed -t <-table> Tabel, vaikimisi filter -j <target> rakendatav policy -A lisab reegli -F Flush. Kustutab antud tabeli reeglid -p <protocol-type> Protokoll (icmp, tcp, udp ning all) -s <ip-address> Saatja IP -d <ip-address> Saaja IP -i <interface-name> Sisendseade -o <interface-name> Väljundseade Näiteks iptables -A INPUT -s 0/0 -i eth0 -d 10.0.0.1 -p TCP -j ACCEPT 27
Näide iptables -A FORWARD -s 0/0 -i eth0 -d 10.10.10.10 -o eth1 -p TCP --sport 1024:65535 --dport 80 -j ACCEPT Lubame pakettide edastamise, kui pakett saadetakse IP aadressile 10.10.10.10, on pärit kaardist eth0 ja tuleb marsruutida eth1 kaudu. Ning lähteport peab jääma privilegeeritud portidest kõrgemale, ning sihtport peab olema http 28
iptables Soovitused Tehke endale selgeks ahelad ja tabelid Algajana kasutage konfigureerimise lihtsustamiseks iptables peale ehitatud tarkvara (otsingumootor on selle juures abiks) Alustage lihtsamate reeglitega (filter) Testige iga lisatud reegel ära Salvestage reeglid faili ja kommenteerige need 29
Iptables puudused Ei ole võimalust määrata mitut tegevust ühe reegli kohta a'la LOG + DROP, MARK + ACCEPT jne. Reeglite uuesti lugemine on vaevaline Sarnase koodi taaskasutus vähene (sama viga tuleb parandada mitmes kohas) Nftables järgmine tulemüüri seadistustarkvara (esimene vers 2009 esimene pool) Veel väga varajases arenduses. Tegelejad samad, mis netfilter puhul. 30
PF võrdlus iptables/netfilter vahenditega OpenBSD PF Reeglid on loetavamad võrreldes iptables reeglitega. Iptables võimaldab kasutada väliseid mooduleid Erinevad jõudlustestid näitavad, et PF on parem stateful reeglitega tegelemisel (võtab reegli kohta vähem mälu) OpenBSD SMP tugi pole samal tasemel Linux toega ja seega võib mitmetuumalustel tulemüüridel Linux jõudlus olla parem OpenBSD eeliseks on süsteemi turvalisus 31
FirewallBuilder Paljud IT süsteemide administraatorid eelistavad kommertstoodet, kuna soovivad saada kena konfigureerimise liidest. FirewallBuilder oskab genereerida reegleid mitmetele tulemüüridele CISCO BSD PF Linux Iptables 32
sudo less /proc/net/ip_conntrack Uurige, mida näitavad sudo cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max 33
Leida mälu, mida läheb vaja ühenduste hoidmiseks: Ülesanne Mälu baitides =CONNTRACK_MAX * sizeof(struct ip_conntrack) + + HASHSIZE * sizeof(struct list_head) HASHSIZE = CONNTRACK_MAX/8 Struct ip_conntrack ~250 Struct list_head=2*aardessi pikkus= 8 (teie masinatel i386 puhul) 34
Küsimused? Küsimused? 35
Lingid Wikipedia - Comparison of firewalls http://en.wikipedia.org/wiki/comparison_of_firewalls Netfilter ja iptables http://www.netfilter.org/ FirewallBuilder http://www.fwbuilder.org/index.html Design and Performance of the OpenBSD Stateful Packet Filter (pf) http://www.benzedrine.cx/pf-paper.html Roheline see on harivaks lugemiseks ja mittekohustuslik Must suurepärase hinde saamiseks peab lugema Punane kohustuslik kirjandus 36
Tänan! Tänan 37