|
Een "Firewall" heeft minstens 2 netwerkverbindingen (bv ethernet en adsl/modem/isdn), en werkt dus als een soort router. Een firewall filtert het verkeer tussen de netwerken, en gebruikt daarvoor filter-regels. De manier waarop dat werkt en waar die regels vastliggen onderscheidt verschillende soorte firewall systemen. Er kan gewerkt worden op niveau van transport of van gebruik. De "packetfilter" werken op niveau van het netwerkprotokol (osi laag 3 en 4) en filtert datapakketjes op basis van de kenmerken toegepast door deze laag. De "Application Level Gateway" werken op het "application layer" niveau (osi laag 5, 6, 7), wat kan gaan tot het interpreteren van de "nuttige" gegevens, wat diepgaandere controle mogelijk maakt. Daarbovenop kan een firewall ook nog de stroom van pakketten gaan bestuderen, en daaruit meer conclusies trekken dan mogelijk is uit 1 op zich staand pakket. Packet Filter In het IP protocol wordt gebruik gemaakt van een header met extra informatie waarmee de data ingepakt wordt. De firewall kan die informatie gebruiken, maar moet er rekening mee houden dat die ook gemanipuleerd kan zijn. Zo wordt in die header het adres van de afzender en dat van de bestemming vermeld, de bestemming is bruikbaar voor de firewall, van de afzender kan hij niet echt zeker zijn. In de "option" kan aangegeven worden langs welke weg het pakket over het internet gestuurd moet worden, en de antwoorden leggen die weg ook in omgekeerde richting af. Een wijziging hier kan grote gevolgen hebben: iemand die wil meelezen zal graag zijn adres daarin krijgen. Er moet op alle gebied rekening mee gehouden worden dat de gegevens in de header gemanipuleerd kunnen zijn. Als een IP pakket te lang is wordt het opgesplitst in fragmenten, die bij de ontvanger weer samengevoegd worden. Daarbij worden de velden Total Length, Identification, More Fragments, en Fragment Offset gebruikt. Vanzelfsprekend is het bij een opgesplitst pakket moeilijker voor een firewall om de inhoud te gaan beoordelen. ICMP staat voor Internet Control Message Protocol, en strekt zich over 2 osi lagen uit: het wordt overgebracht in de data, maar heeft een IP-functie. ICMP Redirect berichten hebben invloed op de routing tabel, ook PING maakt gebruik van ICMP. Ook hier dringt een keuze zich op om dingen te blokkeren. Protocol Het protocol veld legt vast welk protocol in de hogere laag gebruikt wordt: TCP, UDP, ICMP, ... (zie /etc/protocols). Het eenvoudigste protocol dat over IP gebruikt wordt is UDP. UDP Protocol met eenvoudige header: voornamelijk afzender en bestemmeling worden gedefinieerd, checksum is optioneel. Elk pakket staat op zich, antwoord gaat naar afzender poort. Een belangrijke dienst op UDP is DNS op poort 53. Poorten 1-1023 zijn voorbehouden aan root. TCP Diensten draaien op poorten met poortnr, bv http (80), smtp (25), ftp (20, 21). Er is een "verbinding", en biedt garanties voor de aankomst van de data, door data eventueel opnieuw te versturen indien nodig. Omdat data ook in een bepaalde volgorde moet aankomen, is een uitgebreidere header nodig dan bij UDP. De verbinding zelf krijgt een identificatie door een bewerking op de poortnummers en IP -adressen van zender en ontvanger. Om onderscheid te maken bij meer verbindingen tussen dezelfde computers worden verschillende bronpoorten gebruikt. Bij het opbouwen van de verbinding worde tellers gesynchroniseerd tussen beiden. Daarmee kan later de volgorde van pakketten gecontroleerd worden (hierbij worden Sequence Number, INS (Initial Sequence Number), SYN en ACK gebruikt). Eens de verbinding opgebouwd is aan de pakketten niet meer te zien wie server en wie klant is, een gevaarlijke situatie voor de firewall. Hij kan best het initialisatieproces in het oog houden. Stateful Packet Filter Bij udp en icmp is het nog moeilijker dan bij tcp om de verbinding te controleren. Daarom wordt gebruik gemaakt van een Stateful Packet Filter, die zich ook inlaat met het leggen van de verbinding, de daaruit gewonnen gegevens later gebruikt bij het beoordelen van de volgende pakketten. Daarbij komen toestanden (kernel 2.4) voor als ESTABLISHED (verbinding gelegd), NEW (verbinding totstandbrengen), RELATED (verbinding tot standbrengen als uitbreiding op een bestaande verbinging, bv bij FTP: een controle en een data verbinding), INVALID (geen of ongeldige verbinding). Ook al zijn alle "flags" op de meest verwarrende manier veranderd mag een firewall zich niet van zijn stuk laten brengen of door zijn reaktie (teveel) informatie over zichzelf vrijgeven. Spoofing Het vervalsen van het afzender adres noemt men spoofing. Als echter vergeleken wordt met de interface (hardwarematige aansluiting intern netwerk of internet) waarop het pakket binnenkomt, kan het door de mand vallen. MAC-adressen kunnen dus in de filtering gebruikt worden. DoS Om te vermijden dat een gelijktijdige overdaad aan pakketten tot overbelasting van de firewall zou leiden, kan het tijdsaspect mee in rekening gebracht worden. Naargelang de aanvragen binnen een bepaalde tijd kan het soort reaktie aangepast worden, zodat een DoS aanval afgezwakt wordt. Filter Eerst wordt er een standaard maatregel ingesteld: bv laat alles door behalve wat hierna verboden wordt, of ander vb: Laat niets door tenzij wat hierna toegelaten wordt. Om veiligheidsredenen wordt meestal deze laatste manier gekozen. De filterregels worden achtereenvolgens doorlopen tot het pakket verwerkt is. Daardoor speelt de volgorde van de filters in de filterregels ook een rol. Er zijn 3 rijen, "chains": INPUT: voor eigen systeem bestemd OUTPUT:buitengaande pakketten FORWARD: van 1 netwerk interface doorgestuurd op volgende. Kernel -2.2: input + forward + output Kernel 2.4: input | forward | output De "forward" pakketten komen nu dus rechtstreeks in de "forward-rij" terecht, terwijl ze vroeger de input, forward, en output rij doorliepen. Application level gateway Application level gateway zit als een proxy tussen de client en de server. De client verbindt met de proxy, en vraagt daar de informatie aan. Die beslist dan om de vraag verder te stellen. Hij kan bv checken of de gebruiker op de client toegang heeft tot die dienst. Hij kan ook "content filtering" doen door het weigeren van URL's, viruscheck, Active-X controls eruithalen, .... Verder kan een cache de efficientie van het systeem verhogen, en kan bv vermeden worden dat persoonsgegevens buiten gaan. Voor het gebruik van een proxy moet er op de proxy aangesloten worden dmv SOCKS. Dat betekent dat de clientsoftware daarin moet voorzien (zie bv Netscape instelling proxy). In de nieuwe geintegreerde versie is dat voor de client transparant: alles wordt op de server afgehandeld. De keuze en de plaats van 1 of meer firewalls, onderverdeling van het eigen netwerk met bufferzone naar internet toe, of interne zone's, mogelijke rechtstreekse verbindingen via telefoon/modem, binnenkomende opslagmedia als disks, ... er is heel wat werk aan de planning en het onderhoud van een firewall-systeem. Alhoewel encryptie ook in het kader van beveiliging wordt gebruikt, is duidelijk dat het de filtering bemoeilijkt of zelfs tegenwerkt, zeker als die vanop de client wordt toegepast. Soms is het echter mogelijk dat met de firewalls te integreren. |
Omdat het netwerk een veelheid aan diensten moet leveren, werd de werking ervan opgesplitst in zeven theoretische lagen (zoek op "OSI model - Open Systems Interconnection"). Elke laag biedt de basisdienst waarop de volgende laag beroep doet. Aangezien het om een communicatie protocol gaat, betekent dat dat elke laag communiceert met dezelfde laag bij de tegenpartij. De nuttige gegevens bevinden zich in de bovenste laag, die staat het dichts bij de gebruiker (gebruikersprogramma), en die gegevens worden "ingepakt" door onderliggende lagen om het transport mogelijk te maken, en aan de andere kant weer "uitgepakt". In de praktijk wordt het zeven-lagen-model soms teruggebracht tot minder door aansluitende lagen te integreren. De protocols staan opgesomd in /etc/protocols. De diensten op de poorten in /etc/services.
IPv4 Header Len (0) - (32)
UDP header
TCP header
MAC-adres vb eth = 00 80 c7 9c 1d c5 (hardware adres NIC, osi-laag 2) Firewall Rules ACCEPT : pakket doorlaten DROP : pakket weggooien REJECT : pakket weigeren (afzender krijgt info) MASQ/NAT : verander IP adres, poortnummer REDIRECT : omleiden naar andere poort CRYPT : versleutelen (VPN) LOG : bijhouden in logbestand, eventueel bijkomend naast andere aktie Implementaties van de filtersystemen
Opgelet kernel 2.4 De Linux kern 2.4 die in 2001 stilaan opgang maakt, bevat belangrijke wijzigingen op gebied van IP filtering. Het netfilter systeem werd opgenomen in de kern, wat geavanceerde IP functies mogelijk maakt. Het "ipchains" van de vorige versie werd vervangen door "iptables" Netfilter Netfilter is het systeem dat in de kern meegecompileerd wordt en dat de toegang verschaft tot de IP functies. Netfilter gebruikt modules om de filtering uit te voeren. Een voorbeeld van zo'n module is iptables, maar er zijn ook andere mogelijkheden denkbaar, zoals het meecompileren van ipchains voor compatibiliteit met voorheen. IPTables IPtables bestaat uit twee kanten: de gebruikers en het kern-zijde. Het kernel deel hoort bij de kernel, wordt ermee verspreid, erin gecompileerd als eender welke andere module voor bv geluid, filesysteem, enz. Naast het belangrijkste iptables stuk dat minimaal aanwezig moet zijn, is er keuze mogelijk voor onderdelen voor NAT, logging, connection tracking enz. De gebruikerskant bestaat uit een "binary", die ook iptables wordt genoemd, maar apart van de kern verspreid een aangepast wordt, ze bevat de regels. Ze is vergelijkbaar met de ipchains binary van versie 2.2. Voor de regels wordt de hoofdletterversie gebruikt INPUT OUTPUT FORWARD (DROP DENY REJECT, ...). NAT is mogelijk op gebied van bron of van bestemming (source NAT werkt in de POSTROUTING chain, destination NAT werkt in de PREROUTING/OUTPUT chain). IP-masquerading is een vorm van SNAT (Source NAT). Stateful Packet Filter (kernel 2.4) ESTABLISHED (verbinding gelegd), NEW (verbinding totstandbrengen), RELATED (verbinding tot standbrengen als uitbreiding op een bestaande verbinging, bv bij FTP: een controle en een data verbinding), INVALID (geen of ongeldige verbinding) Interfaces Grafisch: Knetfilter, onderdeel van KDE 2.1 ev. Grafisch/remote: Firewall builder (Gnome), www.crocodile.org/~vadim/fwbuilder/ Console: ipmenu op users.pandora.be/stes/ipmenu.html over een telnet of ssh link Testen www.insecure.org heeft nmap als een instrument om je beveiliging te testen. Afkortingen DMZ = Demilitarised Zone: gedemilitariseerde zone: zone gescheiden van het gewone interne neterk, en wel inverbinding met inernet waarin men diensten kan aanbieden die vanuit het internet te bereiken zijn, en daardoor speciaal beschermd moeten worden, en eventueel tussen 2 verschillende firewalls staat. DoS = Denial of Service : overbelasting van een dienst, meestal met de bedoeling die te destabiliseren, en eventueel daardoor het systeem binnen te kunnen dringen. DDos = Distributed DoS : door een DoS aanval vanop verschillende punten gelijktijdig uit te voeren is de kans groter het doelsysteem te destabiliseren. TRAFFIC SHAPING = verkeersgeleiding : bandbreedte beperking VPN = Virtual Private Network: De infrastuktuur van een publiek netwerk gebruiken om door versleuteling een veilige verbinding te maken, die daarin dus een virtueel prive netwerk vormt. |