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!
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 is van cruciaal belang om veiligheidsopwaarderingen te installeren voor de software die je geïnstalleerd hebt. Zijn er bepaalde gebreken in software aanwezig, dan is de enige manier om aanvallers tegen te houden het verwijderen van die gebreken. Hoe logisch dat ook mag klinken, tal van misbruiken zijn mogelijk door verouderde software. Ga dus regelmatig na of er opwaarderingen of patches beschikbaar zijn voor jouw distributie. De meeste moderne Linux-distributies hebben programma's waarmee je automatisch kan nagaan of er opwaarderingen klaarstaan. Maak er gebruik van.
Installeer niets dat je niet nodig hebt! Dat geldt vooral voor netwerk-gerichte software zoals servers. Vele Linux-distributies hebben na een maagdelijke installatie ettelijke servers ingeschakeld die je waarschijnlijk niet van plan was te gebruiken. Zorg dat je overbodige software van je systeem verwijdert. Een goede aanpak is om steevast de minst uitgebreide installatie te kiezen, om achteraf enkel die software bij te installeren die je nodig hebt.
Ongetwijfeld heeft jouw Linux-distributie een mailing-lijst voor veiligheidsmeldingen. Ga op zoek op de website en abonneer je op die lijst. Zo blijf je op de hoogte van recent ontdekte problemen.
Gebruik je een programma dat ervoor bekend staat vele veiligheidsproblemen te hebben, overweeg dan een beter, veiliger alternatief. Een klassiek voorbeeld is Sendmail. Voor mensen die weten waar ze mee bezig zijn, is Sendmail waarschijnlijk een prachtige mailserver. Sendmail op een zinvolle en veilige manier configureren is echter niet aan iedereen besteed: alternatieven waar je minder moeite aan moet besteden zijn bijvoorbeeld Postfix en Exim. Waarom nodeloos risico lopen, als je dezelfde resultaten kan bereiken met minder complexe software?
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!
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.
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.
In het voorbeeld hebben we het gebruik van DNS toegestaan. Je kunt nu verdergaan met de gebruikelijke protocollen al dan niet toe te laten.
Bestandsoverdracht
Protocollen die gebruikt worden bij de
overdracht van bestanden. Goede voorbeelden zijn HTTP (voor het web)
en FTP.
Chatten
Protocollen die
gebruikt worden door chat-programma's, zoals IRC en ICQ.
Datadiensten
Protocollen die
gebruikt worden door databanken en andere bronnen van informatie
zoals pakweg tijdservers.
E-mail
Protocollen
voor het verzenden en ontvangen van e-mail. Hier vind je onder
andere SMTP en POP3 terug.
Games
Protocollen
die door bepaalde spellen gebruikt worden voor online games met
meerdere spelers.
Gebruikersgedefinieerd
Protocollen
die door de gebruiker bepaald kunnen worden.
Interactieve sessie
Protocollen die te maken hebben met het
uitvoeren van taken op andere machines, via het netwerk. In deze
categorie zitten onder meer SSH, telnet en RPC-protocollen.
Media
Protocollen die van
toepassing zijn bij het afleveren van multimedia over het internet.
Netwerk
Protocollen die te
maken hebben met het goede functioneren van het netwerk op zich.
Diversen
Protocollen die
niet meteen in de andere categorieën ondergebracht konden worden.
Er is natuurlijk een zeker overlappingsgebied; sommige protocollen hadden evengoed bij een andere categorie geplaatst kunnen worden.
HTTP
HTTP is in gebruik op het WWW en zorgt ervoor dat
webpagina's heen en weer geslingerd kunnen worden. Wil je surfen op
het web, dan zul je dit protocol nodig hebben.
FTP
FTP wordt gebruikt voor
het downloaden en uploaden van bestanden. Je komt het ook vaak tegen
op het web. Ongetwijfeld heb je al wel eens een adres als ftp://
ontmoet in de adresbalk van je browser....
SMTP
SMTP wordt gebruikt om
mails te verzenden over het internet.
POP3
POP3 wordt vaak
gebruikt om mail binnen te halen vanop een mailbox die zich op een
server van je provider bevindt.
Een volledig overzicht van de protocollen vind je in het bestand /etc/services.
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.
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.
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)
Datum en tijd: Jul
25
15
:
37
:
46
Computer: l0
92
pc01
Actie: SFW2-INext-DROP-DEFLT
(de firewall heeft dit pakket niet doorgelaten).
Richting: IN=
(van de buitenwereld naar uw computer)
Interface: eth0
(de eerste netwerkkaart)
Het IP-adres van de
bron-computer: SRC=192.168.
1
.
2
(in dit voorbeeld het IP-adres van de computer waarvan het pakket
afkomstig is)
Het IP-adres van de
doel-computer: DST=192.168.
1
.
3
(in dit voorbeeld uw computer)
Protocol: PROTO=
TCP
Poort van de bron-computer:
SPT=
50415
Poort van de doel-computer:
DPT=
5900
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 regelvnc-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.
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.
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.
Vul de volgende tabel aan:
Protocol |
Poortnummer(s) |
Soort poort |
Beschrijving |
---|---|---|---|
imap |
|
|
|
netbios-ns |
|
|
|
h323hostcallsc |
|
|
|
Surf naar http://grc.com/.
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.
In de locatiebalk staat welk protocol gebruikt werd?
Zoek op welke poort bij dit protocol hoort?
Welke machine naam heeft de internetverbinding op school?
Ga door.
Test de Common Ports van
de Internetverbinding.
Welke poorten staan er open?
Sluit de browser.
Installeer de HTTP-server beschreven op pagina 39.
Bepaal het IP-adres van de computer:
Geef het IP-adres van de computer aan uw gebuur en vraag of hij/zij naar uw HTTP-server wil surfen.
Installeer de FTP-server beschreven op pagina 44.
Geef het IP-adres van de computer aan uw gebuur en vraag of hij/zij naar uw FTP-server wil surfen.
Rsync wordt gebruikt om twee mappen met elkaar te synchroniseren (zie Back-ups pagina 102).
Om Rsync in te stellen, open je het bestand /etc/rsyncd.conf als root met een editor.
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.hostshosts 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
Daarbij laat rsync enkel een
verbinding toe als deze van localhost (uw eigen computer komt).
Welke regel zorgt daarvoor?
De map …..................................................................... wordt vanaf localhost bereikbaar via de naam Repos.
De map gebruikt dezelfde toegangsrechten als de gebruiker
Bovenstaande configuratie is ideaal om rsync lokaal te testen:
Start de rsync-server met de
opdrachtsudo /etc/init.d/rsyncd start
Test de rsync-server met de
opdrachtrsync 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 opdrachtsudo
/etc/init.d/rsyncd
re
start
Om de inhoud van de map te
bekijken gebruik je de opdrachtrsync
localhost::Repos/
Hoeveel mappen bevat de rsync-map?
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
Test de rsync-server via het IP-adres van uw computer. Je gebruikt daarvoor de opdrachten
Dit moet een foutmelding
opleveren.
Bekijk het logboek van de firewall (scroll desnoods naar boven).
Welke poort blokkeert de firewall?
Welk protocol gebruikt deze poort?
Door welke service wordt deze poort gebruikt?
Open deze poort (service) in de firewall van de computer.
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.