Netwerkbescherming

5 Netwerkbescherming via firewall

Wat is een firewall? Waarvoor zou ik een firewall kunnen gebruiken?

Een firewall is een software- en/of hardware-matig hulpmiddel bij het afschermen van een computernetwerk tegen aanvallen van computergebruikers met slechte bedoelingen of een overdreven vorm van nieuwsgierigheid. Een firewall beschermt je netwerk door aan banden te leggen wat vijandige computers er zoal kunnen aanrichten. Concreet gebeurt dat door het filteren en blokkeren van netwerk-communicatie tussen de afgeschermde computers en het internet in zijn geheel.

De definitieve opkomst van snelle, permanente internetverbindingen voor gewone thuisgebruikers betekent dat je computer blootgesteld wordt aan het voortdurende gevaar van aanvallen die van eender waar ter wereld kunnen komen. Je zou jezelf vragen kunnen stellen als "Waarom zou iemand in mijn computer willen inbreken? Ik heb toch geen belangrijke informatie op mijn harde schijf staan?". Ten eerste: jawel! Zelfs een gewone thuiscomputer bevat gebruikersnamen en wachtwoorden voor internetverbindingen en e-mailaccounts en misschien zelfs voor bankrekeningen of kredietkaarten. Ten tweede: zelfs afgezien van dat soort gevoelige informatie is het belangrijk je computer te beschermen tegen misbruik. Crackers zouden je machine kunnen gebruiken om er andere netwerken mee aan te vallen, zodat het lijkt alsof jij die aanvallen uitvoert!

Het nut en de beperkingen van een firewall

Veiligheidsproblemen met computers hebben bijna altijd te maken met slecht ontworpen software. Niet hackers of crackers zijn verantwoordelijk voor lekken, ze slagen er enkel in om reeds bestaande lekken op te sporen en te misbruiken. Software bevat altijd wel bugs; veiligheidslekken hebben meestal te maken met een foutje in een programma, dat door kwaadwillige personen uitgebuit kan worden.

De bedoeling van een firewall is het opwerpen van een barrière tussen het Kwaad aan de ene kant en de eventueel kwetsbare software en diensten aan de andere kant. De firewall probeert crackers de toegang tot servers en software achter de firewall te ontzeggen. Hebben aanvallers geen toegang, dan kunnen ze uiteraard weinig beginnen met de machines achter de firewall, hoe vatbaar voor misbruik die ook mogen zijn.
Natuurlijk is die aanpak van veiligheid door beperkingen in zekere zin een contradictie: het is net de bedoeling van een netwerk om verscheidene computers met elkaar te laten communiceren. Anders gezegd: om het netwerk zijn nut te laten behouden, zul je "gaten" moeten maken in de firewall, opdat er communicatie kan plaatsvinden tussen de beschermde computers en de buitenwereld. Het is dus belangrijk te beseffen dat een firewall geen bescherming biedt tegen aanvallen die via die welbepaalde "gaten" in de firewall plaatsvinden. Draai je bijvoorbeeld een algemeen toegankelijke webserver, dan kan de firewall weinig beginnen tegen een aanval die op je webserver gericht is.

Het mag dus duidelijk zijn dat een firewall slechts één onderdeel van de veiligheid van je netwerk mag zijn. Vertrouw niet op enkel en alleen die firewall voor je goede nachtrust. Een kort lijstje van essentiële zaken in verband met de veiligheid van je systeem:

Het lijken eenvoudige zaken, maar als je deze raad ter harte neemt, is je systeem al stukken veiliger geworden, zonder dat je er bijster veel moeite voor hebt moeten doen!

Fundamentele netwerk-concepten

Om te begrijpen wat een protocol is, moet je beseffen dat een netwerk bestaat uit computers die met andere computers spreken. Net zoals dat voor mensen het geval is, moeten beide computers het eens zijn over de taal die ze gebruiken om te communiceren. Bij mensen gaat het dan om Engels, Nederlands of Chinees, maar ook om muziek, chemische symbolen en lichaamstaal. De taal die computers in een netwerk hanteren, noemen we netwerk-protocollen.

In tegenstelling tot menselijke talen dienen netwerk-protocollen steevast één specifiek doel, zoals het verplaatsen van bestanden (FTP), het ophalen van webpagina's (HTTP) of chatten tussen gebruikers mogelijk maken (IRC).

Een aanval op systemen die deel uitmaken van een netwerk is gebaseerd op het gebruik of misbruik van protocollen en van de software die die protocollen implementeren. Al te vaak is het de software, als implementatie van een protocol, die gebreken of fouten bevat die het kwaadwillige lieden mogelijk maakt om toegang te krijgen tot een systeem of om een systeem danig te ontregelen.

Een andere belangrijk begrip is het cliënt/server-model. Eender welk netwerk-protocol bedient ten minste twee onderscheiden partijen die aan de communicatie deelnemen. Ofschoon beide partijen gebruik maken van hetzelfde protocol, zullen ze meestal verschillende rollen spelen.
In het meest gebruikelijke model speelt de ene partij "cliënt" en de andere partij "server". De server beantwoordt dan bepaalde verzoeken van de cliënt. Koop je een krant in de krantenwinkel, dan ben jij de cliënt. De persoon die de transactie afhandelt is de server.
Jullie spreken beide Nederlands, maar maken op een sterk verschillende manier deel uit van de communicatie. Een concreet voorbeeld is het HTTP-protocol, in wijd verbreid gebruik op het WWW. Je webbrowser gedraagt zich als cliënt en de imposante server van Slashdot of CNN houdt zich ermee bezig je webbrowser te bedienen met HTML-pagina's, zodra die daarom vraagt.

DNS toestaan

Het DNS-protocol speelt een belangrijke rol bij eender welke vorm van communicatie. Alle computers die met het internet verbonden zijn, bezitten een uniek nummer: een IP-adres. Meestal bestaat een IP-adres uit vier, door punten gescheiden nummers van elk maximaal drie cijfers, bijvoorbeeld 216.239.59.104. Die notatie heet in het Engels "dotted quad", vrij vertaald: Van Puntjes Voorzien Viertal. Je kunt een IP-adres vergelijken met een telefoonnummer, maar dan voor computers.

Een probleem met IP-adressen als unieke identificatie van computers is dat zo'n dotted quad-notatie niet bijster gebruiksvriendelijk is. Om die reden kwamen domeinnamen in gebruik. Een domeinnaam is niets meer dan een computernaam, maar dan gemakkelijker te onthouden dan zijn IP-adres. Voorbeelden van domeinnamen zijn www.snt.be, www.google.be en www.kde.nl. Je computer werkt echter niet met domeinnamen, maar met IP-adressen. DNS slaat daarom een brug tussen domeinnamen en IP-adressen: het is een systeem dat vlot bekende namen als www.kde.nl omzet in het minder vlot bekende, maar voor computers gemakkelijkere IP-adres 130.161.180.142. DNS-servers zijn machines op het internet die niets anders doen dan andere machines antwoorden geven op de vraag naar het IP-adres dat bij een gegeven domeinnaam hoort. Vergelijk het met een telefoonboek, dat lange lijsten bevat van namen en adressen met de bijbehorende telefoonnummers. Dankzij een DNS-server weet je computer wat je bedoelt als je naar www.kde.nl vraagt, of als je wil chatten via irc.freenode.net.

Organisatie van protocollen

In het voorbeeld hebben we het gebruik van DNS toegestaan. Je kunt nu verdergaan met de gebruikelijke protocollen al dan niet toe te laten.

De vele protocollen worden in categorieën gegroepeerd, opdat je gemakkelijk dat ene protocol kan terugvinden waar je naar op zoek bent. De verschillende categorieën zijn:

Er is natuurlijk een zeker overlappingsgebied; sommige protocollen hadden evengoed bij een andere categorie geplaatst kunnen worden.

Vaak gebruikte protocollen toestaan
Wat volgt is een kort lijstje van de meest gebruikelijke protocollen die je zou kunnen willen toestaan.

Een volledig overzicht van de protocollen vind je in het bestand /etc/services.

Opgelet!

Probeer aan de verleiding te weerstaan om stomweg alle protocollen toe te laten! Hoe meer protocollen je toestaat, hoe zwakker je firewall wordt. Het idee is dat je niet meer protocollen aanvinkt dan je echt nodig hebt. Laat niet zomaar een protocol toe omdat je het wel 's nodig zou kunnen hebben in de toekomst. Werk de firewall pas aan als je een bepaald protocol wilt gebruiken.

Tip

Je kunt een soort test doen om te kijken of je firewall zijn werk doet. Surf naar de Gibson Research Corporation en klik op Shields Up!. Zoek daarna naar ShieldsUp!. Na de knop Proceed kun je met de knoppenbalk bepalen wat je wil scannen. Je computer wordt dan gescand en je krijgt een mooi overzicht van wat er zoal te vinden viel. Hopelijk krijg je een positief rapport! :-) De test is niet de meest wetenschappelijk verantwoorde, maar hij kan je toch een idee geven van de stand van zaken... Deze test werkt alleen als je niet via een proxy-server surft.

Analyse van de werking van de firewall

Na het instellen en het activeren van de firewall kan het gebeuren dat de firewall teveel weigert of teveel doorlaat. Je kunt de werking van de firewall volgen door zijn logboek na te kijken. Het logboek zelf kun je als root raadplegen in het bestand /var/log/firewall. Het logboek volgen terwijl je werkt, kan met de opdracht `sudo tail -f /var/log/firewall` (of met kwatch: zie verder in de cursus). Aanschouw de volgende regel:

Jul 25 15:37:46 l092pc01 kernel: [ 6572.569852] SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:24:8c:07:9e:6b:00:23:26:fb:17:0e:08:00 SRC=192.168.1.2 DST=192.168.1.3 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=18745 DF PROTO=TCP SPT=50415 DPT=5900 WINDOW=5840 RES=0x00 SYN

URGP=0 OPT (020405B40402080AFFFC78040000000001030307)

Uit deze regel kun je de volgende nuttige informatie over de firewall-gebeurtenis afleiden:

Aangezien we hier met een binnenkomend pakket te maken hebben, is de poort van de doelcomputer van belang. Bij het raadplegen van het bestand /etc/services ontdekken we dat de regel
vnc-server 5900/tcp # VNC Server
instaat voor de vertaling van poort 5900 naar vnc-server.

Wie meer te weten wil komen over de informatie in de firewall logboeken, maakt beter gebruik van een Log Analyzer (vb. Watchdog). Dit zijn programma's die logboeken vertalen naar enigszins verstaanbare mensentaal.

Persoonlijke firewalls

Aangezien firewalls complex zijn, worden op thuiscomputers Persoonlijke firewalls geplaatst. Deze Persoonlijke firewalls zijn een flauw afkooksel van de klassieke firewall. De Persoonlijke firewall laat alle netwerkverkeer dat uw computer verlaat gewoon door. Enkel het netwerkverkeer dat uw computer wil binnenkomen wordt onderzocht. Het weigeren van binnenkomend netwerkverkeer beperkt zich tot het netwerkverkeer dat niet door de computer zelf werd aangevraagd. Netwerkverkeer dat binnen wil komen via poorten kleiner dan 1024 wordt steeds geblokkeerd. Deze afgezwakte firewall-bescherming verhoogt de gebruiksvriendelijkheid, maar verlaagt de firewall-afscherming.

En verder

Heb je echt de smaak te pakken, wees dan gerust: het houdt echt niet op. Je kan blijven bijleren en -lezen over verschillende aspecten van netwerkbeheer. Slechts weinigen mogen beweren dat ze vrijwel alles weten wat er te weten valt, ook al wanen velen zich snel en graag ongenaakbaar. Er is veel meer werk aan de winkel dan enkel de firewall in te schakelen en achterover te leunen.

Anderzijds kan het helpen de proporties niet uit het oog te verliezen. Belang hechten aan de integriteit van je thuisnetwerk is één ding, maar gevoelige bedrijfsnetwerken van multinationals zitten toch op een ander echelon. Je kunt je thuisnetwerk naar best vermogen dichttimmeren en daar een dagtaak van maken, maar misschien is het beter eerst even te overwegen hoeveel energie je bereid bent te besteden en waaraan je die energie eigenlijk wil besteden.

Opdrachten

  1. Vul de volgende tabel aan:

    Protocol

    Poortnummer(s)

    Soort poort

    Beschrijving

    imap




    netbios-ns




    h323hostcallsc




  2. Surf naar http://grc.com/.

    1. Klik na de introductiepagina op de hyperlink ShieldsUP!. Na het verschijnen van de pagina zoek je opnieuw naar de hyperlink ShieldsUP! en klik je erop.

      1. In de locatiebalk staat welk protocol gebruikt werd?

      2. Zoek op welke poort bij dit protocol hoort?

      3. Welke machine naam heeft de internetverbinding op school?

      4. Ga door.

      5. Test de Common Ports van de Internetverbinding.
        Welke poorten staan er open?

      6. Sluit de browser.

  3. Installeer de HTTP-server beschreven op pagina 39.

    1. Bepaal het IP-adres van de computer:

    2. Geef het IP-adres van de computer aan uw gebuur en vraag of hij/zij naar uw HTTP-server wil surfen.

  4. Installeer de FTP-server beschreven op pagina 44.

    1. Geef het IP-adres van de computer aan uw gebuur en vraag of hij/zij naar uw FTP-server wil surfen.

  5. Rsync wordt gebruikt om twee mappen met elkaar te synchroniseren (zie Back-ups pagina 102).

    1. Om Rsync in te stellen, open je het bestand /etc/rsyncd.conf als root met een editor.

    2. Pas de instellingen aan tot:
      gid = users
      read only = true
      use chroot = true
      transfer logging = true
      log format = %h %o %f %l %b
      log file = /var/log/rsyncd.log
      pid file = /var/run/rsyncd.pid
      #hosts allow = trusted.hosts
      hosts allow = localhost
      slp refresh = 300
      use slp = false

      #[Example]
      # path = /home/Example
      # comment = An Example
      # auth users = user
      # secrets file = /etc/rsyncd.secrets

      [Repos]
      path = /var/backup/opensuse4snt/repos
      comment = openSUSE Repositories
      uid = sntcursist

      1. Daarbij laat rsync enkel een verbinding toe als deze van localhost (uw eigen computer komt).
        Welke regel zorgt daarvoor?

      2. De map …..................................................................... wordt vanaf localhost bereikbaar via de naam Repos.

      3. De map gebruikt dezelfde toegangsrechten als de gebruiker

    3. Bovenstaande configuratie is ideaal om rsync lokaal te testen:

      1. Start de rsync-server met de opdracht
        sudo /etc/init.d/rsyncd start

      2. Test de rsync-server met de opdracht
        rsync localhost::
        bij een geslaagde test verschijnt op het scherm de naam van de rsync map samen met

        Indien de test foutmeldingen oplevert, voer je de noodzakelijke verbeteringen uit en herstart je de rsync-server met de opdracht
        sudo /etc/init.d/rsyncd restart

      3. Om de inhoud van de map te bekijken gebruik je de opdracht
        rsync localhost::Repos/
        Hoeveel mappen bevat de rsync-map?

    4. Pas de instellingen van de rsync-server aan zodat uw eigen computer via het IP-adres toegang heeft tot de rsync-server. Verschillende computers (host) worden op één regel geplaatst, waarbij de verschillende computers gescheiden worden door een spatie. De aan te passen regel wordt

    5. Test de rsync-server via het IP-adres van uw computer. Je gebruikt daarvoor de opdrachten


      Dit moet een foutmelding opleveren.

  6. Bekijk het logboek van de firewall (scroll desnoods naar boven).

    1. Welke poort blokkeert de firewall?

    2. Welk protocol gebruikt deze poort?

    3. Door welke service wordt deze poort gebruikt?

    4. Open deze poort (service) in de firewall van de computer.

  7. Test de rsync-server via het IP-adres van uw computer. De rsync-server moet nu bereikbaar zijn. Indien de rsync-server niet bereikbaar is, verbeter je de fout en test je opnieuw. Succes.

Opmerking: Het gebruik van localhost is enkel geschikt als eerste test. Bij een test met localhost passeer je geen netwerkaansluiting waardoor de firewall op de computer niet gebruikt wordt (de YaST-firewall werkt enkel met netwerkverbindingen die een netwerkkaart gebruiken). De tweede test via een IP-adres stuurt de netwerkgegevens via de netwerkaansluiting naar uw router die ze doorstuurt naar de netwerkaansluiting van uw computer. Op die manier verlaten de netwerkgegevens de computer waardoor ze wel de firewall moeten passeren (eenmaal bij het verlaten en eenmaal bij het binnenkomen). Met de tweede test kun je nagaan of de server binnen een netwerk werkt (b.v. een thuisnetwerk bestaande uit alle computers die verbonden zijn met eenzelfde router). Een derde test is noodzakelijk om de server via het internet bereikbaar te maken. De configuratie van dergelijke internet-servers vragen een degelijke beveiliging, grondige kennis van netwerken en wordt in deze cursus niet verder behandeld.