Volledige versie bekijken : Hoe werkt een firewall



Snoepy
21 July 2005, 02:01
In vroeger tijden bouwden landheren en keizers grote muren rondom hun land of stad, ter bescherming tegen vijanden en andere indringers die het op de rijkdommen van de betreffende vorst voorzien hadden. Computers kunnen dan niet met een stad of land vergeleken worden, steeds meer gebruikers bouwen een muur rondom hun digitale leefwereld om zo kwaadwillende personen buiten de deur te houden. Naast bescherming is de firewall tevens poortwachter, die beslist wie er naar binnen toe en naar buiten mag. De komende twee weken staat de firewall centraal op Security.NL. In dit artikel kijken we wat een firewall is en wat het doet.


Firewalls zijn er in twee soorten, als programma en als apparaat. Beide hebben de taak om binnenkomende en uitgaande communicatie (vanaf het internet) te controleren. Afhankelijk van de instellingen, de zogeheten "rules", wordt gekeken of een pakketje door gelaten mag worden. Hierdoor wordt voorkomen dat mensen vanaf het internet zomaar verbinding met een computer kan maken. Verkeer van een naar de PC gaat via zogenaamde 'poorten'. Er zijn twee soorten poorten: 'bekende' poorten en 'geregistreerde' poorten. Van de 'bekende' poorten (de poorten 0 tot 1023) is altijd bekend wat voor programma hier gebuik van kan maken. Zo verwacht een ftp server dat er op poort 21 verbinding gemaakt wordt en een webserver dat er op poort 80 verbinding gemaakt wordt. Een firewall van de bekende diensten op deze 'bekende' poorten dus weten wat wel en niet mag. De 'geregistreerde' poorten daarentegen kunnen door elk willekeurig programma gebruikt worden. Van deze poorten maken de meeste inbrekers gebruik. De meeste firewalls zal al het binnenkomend verkeer op deze geregistreerde poorten blokkeren, tenzij er specifiek opdracht wordt gegeven om de verbinding toe te staan.

Een firewall heeft een uitgebreid takenpakket. Naast het reguleren van het verkeer tussen het interne netwerk en het Internet zijn er ook vele beheersmatige en huishoudelijke taken, zoals:

Reguleren van het verkeer
De centrale taak van een firewall is het reguleren van het verkeer tussen het interne netwerk en het Internet. Dit reguleren bestaat in hoofdzaak uit de volgende stappen:

Het in ontvangst nemen van een connectie-verzoek dat afkomstig is van een (interne of externe) client en gericht is aan een (externe of interne) server.
Het controleren of dit connectie-verzoek gehonoreerd mag worden.
Als dat het geval is: de connectie tussen client en server tot stand brengen.Een firewall kan vele extra's bieden bij het vervullen van deze taak. Drie zeer belangrijke extra faciliteiten zijn:

Het afdwingen van het gebruik van sterke authenticatie bij het opzetten van verbindingen. Sterke authenticatie wil zeggen dat een onweerlegbaar bewijs van identiteit geleverd wordt door een gebruiker of door een (client- of server-) programma. Authenticatie op basis van naam/wachtwoord combinaties of op basis van IP-adressen of domeinnamen wordt als zwakke authenticatie beschouwd: IP-adressen en domeinnamen kunnen door een technisch onderlegde aanvaller vervalst worden, terwijl namen en wachtwoorden afgeluisterd kunnen worden. Sterke authenticatie kan plaatsvinden via cryptografische technieken zoals het gebruik van public-key certificaten of via challenge-response systemen zoals bijvoorbeeld girotel one-time passwords gebruikt (ook wel tancode lijsten genoemd) of zogenaamde hand held authenticators (dongles).
Het bewaken van het protocol na het opbouwen van de verbinding. Een voorbeeld van een dergelijke bewaking is het toestaan van FTP download-operaties, maar verbieden van FTP upload-operaties (met als reden dat er geen informatie uit het bedrijfsnetwerk mag lekken). Een ander voorbeeld is het toestaan van Websurfen, maar verbieden van het gebruik van Java applets en ActiveX controls met het oog op de mogelijke security-problemen die deze met zich mee brengen.
Logging van alle gebeurtenissen die betrekking hebben op de client-server verbinding: bijvoorbeeld het tijdstip waarop deze opgezet werd, de tijdsduur van de verbinding, de hoeveelheid getransporteerde bytes, de benaderde URL's, enzovoort.Ondersteuning voor speciale toepassingen
Een aantal toepassingen is zo complex dat simpelweg doorlaten van het verkeer via de firewall niet voldoende is. Dit geldt met name voor de servers in het interne netwerk die vanuit het Internet benaderd moeten kunnen worden: email-servers, DNS servers en eventueel Web-servers.

E-mail
Electronic mail is een van de belangrijkste toepassingen van het Internet. Een veilige en probleemloze email-koppeling vergt de nodige maatregelen op de firewall. Mogelijke Email-diensten die een firewall kan verlenen zijn:

Omdat de mail-server per definitie publiek toegankelijk is, zijn extra beveiligingsmaatregelen gewenst: Het verleden heeft uitgewezen dat complexe mail-server programmatuur erg inbraakgevoelig is. Extra bescherming is mogelijk door het gebruik van een mail proxy die binnenkomende post in eerste instantie ontvangt en deze controleert op verdachte zaken (zoals extreem lange headers of pogingen om post bij een programma af te leveren). Alleen als deze controle positief uitvalt zal de post verwerkt worden.
Archivering van elk passerend mailbericht (bijvoorbeeld in het kader van ISO 9000 procedures).
Maskerade: het verbergen van interne machinenamen in de afzenderadressen van uitgaande post.
Adres-vertalingen: het door de firewall uitvoeren van vertaalslagen tussen intern in gebruik zijnde mailadressen en Internet-mailadressen. Dit kan vooral van pas komen in situaties waar er sprake is van speciale interne mailsystemen (zoals de mailsystemen van Lotus en Novell) die hun eigen adresconventies hanteren en gekoppeld moeten worden aan het Internet mailsysteem.
Het blokkeren van ingaande en uitgaande post op basis van bepaalde criteria, zoals het afzender- of bestemmingsadres: bijvoorbeeld in het kader van anti-virus, anti-spamming of anti-relay maatregelen.
Het mogelijk maken om vanuit het Internet interne post te lezen, waarbij via encryptie en sterke authenticatie voor de vereiste beveiliging wordt gezorgd.DNS
Het Domain Name System (DNS) zorgt voor de vertalingen tussen hostnamen en IP-adressen. Daarnaast speelt DNS een rol bij het afleveren van elektronische post. Veel organisaties willen niet al hun interne hostnamen openbaar maken op het Internet. Hieraan kan worden voldaan door een firewall die een meervoudige DNS-functionaliteit biedt: bijvoorbeeld in de vorm van een externe name server die slechts enkele namen bekend maakt en vanuit het Internet is te bereiken en daarnaast een interne name server die álle namen bekend maakt en alleen vanuit het interne netwerk te bereiken is.

De Web-server
Vele organisaties bieden informatie over hun producten en diensten aan via een Web-server. Omdat deze meestal publiek toegankelijk is, zijn extra beveiligingsmaatregelen gewenst. Een voorbeeld van een dienst die de firewall kan bieden is het screenen van alle inkomende HTTP-verzoeken op verdachte zaken (content-attacks) en het op deze wijze beschermen van de Web-server. Daarnaast kan de firewall ook zorgen voor load balancing: het verdelen van de belasting over een aantal identieke exemplaren van de Web-server.

VPN (Tunneling en Virtual Private Networks)
Tunneling is een techniek waarbij twee netwerken met elkaar verbonden worden via het Internet. Een voorbeeld is het verbinden van twee Windows-netwerken via het Internet door de NetBios-pakketten in IP-pakketten in te pakken en over het Internet te versturen. Een ander voorbeeld is het verbinden van een mobiele- of thuiswerker met het bedrijfsnetwerk of van twee bedrijfsnetwerken via een secure tunnel die zorgt voor encryptie van alle dataverkeer. Men spreekt in dergelijke gevallen van een (Secure) Virtual Private Network (SVPN) of van een Extranet.


Beheersmatige taken van een firewall
Helaas is het niet zo dat een eenmaal geïnstalleerde en werkende firewall geen verdere aandacht meer behoeft: er is een aantal permanent doorlopende beheersactiviteiten nodig. Een overzicht volgt hieronder.

Logging en intrusion-detection
Logging is het bijhouden van een administratie met betrekking tot de netwerk- en andere activiteiten op de firewall. Logging is belangrijk vanuit security-oogpunt: aan een inbraak gaat vaak een periode vooraf waarin de inbreker probeert om binnen te komen. Als deze mislukte pogingen tijdig opgemerkt worden, kan men afdoende maatregelen treffen en zo een inbraak voorkomen. Daarnaast kan logging ook nuttig zijn in het kader van accounting: het doorbelasten van het gebruik van de firewall.

Alerting
Een goed logging systeem voorziet ook in alerting, waarbij de firewall de beheerders direct attendeert op verdachte zaken in de logging.

System Integrity Checking / Intrusion Detection
System Integrity Checking is het regelmatig uitvoeren van sanity checks op de firewall, waarbij gecontroleerd wordt of essentiële processen nog steeds actief zijn, of er nog voldoende diskruimte vrij is en of er geen cruciale systeembestanden veranderd zijn.

Aanpassingen in de configuratie
Van tijd tot tijd zullen aanpassingen in de configuratie van de firewall gewenst zijn. Een goede firewall biedt hiervoor een (bijvoorbeeld grafisch) interface dat de beheerder begeleidt en bij voorkeur beschermt tegen elementaire fouten en inconsistenties.

Continuïteit
In elk systeem kan de rampspoed toeslaan in de vorm van hardware-problemen, spanningsuitval of andere onverwachte problemen die leiden tot onvoorspelbaar en dus onveilig gedrag. Tot de beheersaspecten van een firewall kunnen daarom ook zaken als mirroring en UPS support gerekend worden.

Actualiteit
Beveiliging is een onderwerp dat voortdurend in beweging is. Bugs in Web-, mail- en DNS-servers zorgen voor nieuwe gaten; nieuwe client-server protocollen brengen hun eigen specifieke security-problemen met zich mee en hackers ontdekken regelmatig nieuwe aanvalstechnieken. Bij een goede firewall hoort dan ook een constante stroom van patches, bug-fixes en technische vernieuwingen.


Beveiliging van de firewall
Een firewall beveiligt het interne netwerk, maar dient ook zélf beveiligd te worden. Strikt noodzakelijke maatregelen zijn bijvoorbeeld:

Processen, programma's en bestanden die voor het functioneren van het systeem niet nodig zijn, dienen van het systeem verwijderd te worden. Men noemt dit hardening.
Functies in het besturingssysteem die niet nodig zijn dienen verwijderd te worden door een nieuw en gestript systeem te maken. Men noemt dit stripping.
Toegang tot de firewall zelf dient beveiligd te worden door sterke authenticatie en encryptie. Een firewall waarop over het (interne) netwerk ingelogd kan worden via een naam/wachtwoord combinatie is kwetsbaar.

Uit het voorgaande volgt dat niet ieder systeem even geschikt is als platform voor een firewall. Voor een systeem dat zich gedraagt als een black box waar nauwelijks aan te sleutelen valt, zal het niet makkelijk zijn om een adequate hardening uit te voeren.Hoe werkt een firewall?

IP-filters
Een zeer veel toegepaste beveiligingstechniek is IP-filtering. Een IP-filter inspecteert binnenkomende pakketten en laat ze door op basis van een aantal filter-criteria. De belangrijkste criteria zijn het gebruikte protocol (bijvoorbeeld TCP of UDP), het IP-adres van de afzender en de bestemming van het pakket en het poortnummer van de gebruikte toepassing (bijvoorbeeld TELNET, FTP, HTTP of SMTP).

De bekendste voorbeelden van IP-filteraars zijn routers. Er is echter ook speciale software waarmee een UNIX- of Windows-systeem met meerdere netwerk-interfaces als IP-filteraar kan optreden. Voorbeelden van security-maatregelen die door configuratie van een IP-filter gerealiseerd kunnen worden, zijn:

Een IP-filter als diode: machines op het lokale netwerk mogen contact zoeken met het Internet, maar het omgekeerde is niet toegestaan. Een voorbeeld is de situatie waarin uitgaand telnet-verkeer is toegestaan, maar inkomend telnet-verkeer verboden wordt. Voor sommige protocollen, zoals FTP en Realaudio, is een diode geen goede oplossing omdat er sprake is van een (extra) connectie die op initiatief van de server wordt opgezet.
Een IP-filter als selectief filter: bepaalde machines op het lokale netwerk mogen contact zoeken met bepaalde machines op het Internet en bepaalde machines op het Internet mogen contact zoeken met bepaalde machines in het lokale netwerk. Het is ook mogelijk om hierbij restricties te stellen aan de gebruikte programma's: bijvoorbeeld van buiten naar binnen mag vanaf bepaalde machines contact gezocht worden, maar alleen met bepaalde servers, bijvoorbeeld alleen met de telnet-server en de FTP-server.De voor- en nadelen van een IP-filter als firewall-techniek zijn als volgt samen te vatten:

Een voordeel is dat het gebruik van een IP-filter voor de gebruiker en de applicatiesoftware geheel transparant is: aanpassingen zijn niet nodig.
Omdat een IP-filter weinig filterwerk hoeft te verrichten is de performance hoger dan van een vergelijkbare proxie-firewall.
Een nadeel is dat niet aan autorisatie van gebruikers wordt gedaan: deze ligt geheel aan de bestemmingszijde, bijvoorbeeld op de bestemmingsmachine in het interne netwerk. Vandaar dat bij gebruik van een IP-filter de machines in het interne netwerk die als bestemming mogen optreden, zeer zorgvuldig gekozen en beheerd moeten worden.
Het schrijven van foutloze filter-tabellen is niet eenvoudig: de syntax is lastig en foutcontrole is moeilijk. Constateren dat het IP-filter een verbinding toestaat is eenvoudig, maar controleren of het alle verboden verbindingen daadwerkelijk weigert is een stuk moeilijker.
Het filteren op basis van informatie in het netwerkpakket zit theoretisch gezien vol voetangels en klemmen. Zo is controle op de geldigheid van een afzender-adres van een netwerkpakket niet mogelijk:
een afzender op het Internet kan een oneigenlijk adres gebruiken (adres spoofing).
IP-filters laten pakketten door als de inspectie positief uitvalt. Een doorgelaten IP-pakket kan echter best nog kwalijke IP- of TCP-header componenten bevatten die schade kunnen aanrichten aan systemen in het interne netwerk. Een voorbeeld vormen denial of service aanvallen met behulp van gemanipuleerde IP- of TCP-headers.
IP-filters hebben geen kennis op applicatie-niveau. Beperkingen op applicatie-niveau, zoals virus-checking voor inkomende mailberichten, het toestaan van Websurfen maar filteren van Java en ActiveX en het blokkeren van inkomende HTTP PUT-operaties kennen IP-filters niet. Pakketten die doorgelaten worden door een IP-filter kunnen daarom
mogelijkerwijs wel degelijk schade aanrichten.
IP-filters bevatten meestal geringe logging-faciliteiten: uitgebreide mogelijkheden om speciale gebeurtenissen in logfiles weg te schrijven ontbreken vrijwel altijd.Conclusie: een IP-filter is weliswaar een nuttig onderdeel van een firewall, maar biedt op zichzelf nooit afdoende bescherming.

Stateful Inspection
Een verbeterde vorm van IP-filtering,waarmee een deel van de tekortkomingen van een pure IP-filter firewall kan worden opgelost, wordt verkregen door het IP-filter uit te rusten met een inspection-engine die kennis heeft van de sessies die zijn opgestart. Dit wordt Stateful Inspection genoemd.

In zijn tabellen houdt een Stateful Inspection filter, op basis van source/destination/protocol/poort, bij welke sessies zijn opgezet.Tevens kijkt het filter, afhankelijk van de state, of het antwoord bij een bepaalde vraag hoort en of het antwoord legitiem is. Een dergelijke controle kan op meerdere netwerk-niveau's plaatsvinden (multi-layer). Onder meer wordt gëinspecteerd:

Communicatie informatie
Status van de communicatie (tracering van commando's)
Status van de applicatie
Manipulatie van informatieDe stateful inspection FW kent een aantal voor- en nadelen:

Behoorlijk beveiligingsniveau met behoud van performance
(Beperkt) inzicht in applicatie-verkeer
Transparantie
Beveiligingsniveau is niet het hoogst haalbare
Als Stateful Inspection firewall faalt, kunnen er zwakke plekken ontstaan in de beveiligingProxy's
Een proxy is een proces dat een tussenstap tussen de client en de server vormt. Hieronder wordt een onderscheid gemaakt tussen klassieke proxy's, de connectie-level proxy's en transparante proxy's. Het kenmerk van een firewall die met proxy's werkt is in alle gevallen dat er nooit IP-pakketten uit het Internet op het interne net komen en dat er dus ook geen aanval op TCP- of IP-niveau (zoals bijvoorbeeld de Ping O'death aanval) uitgevoerd kan worden.

Klassieke proxy's
De werkwijze bij het gebruik van een klassieke proxy is als volgt:

Gebruikers die een bepaalde dienst willen benaderen, moeten zich eerst melden bij de proxy-server op de firewall.
De proxy bepaalt of het verzoek van de gebruiker gehonoreerd mag worden. Een Web-proxy kan het recht op Websurfen bijvoorbeeld voorbehouden aan specifieke interne gebruikers die dat voor hun werk nodig hebben. In zijn algemeenheid kan de authenticatie van gebruikers door een proxy plaatsvinden op basis van het IP-adres of de domeinnaam, op basis van een naam/wachtwoord combinatie of op basis van sterkere technieken zoals challenge-response systemen of public-key certificaten. De feitelijk beschikbare authenticatie-technieken kunnen per proxy verschillend zijn en hangen dus af van de proxy-software.
Daarna bouwt de proxy-server een verbinding op met de <CITE>echte</CITE> server. Er bestaat dus geen IP-verbinding tussen client en server: in plaats
daarvan zijn er aparte verbindingen tussen de client en de proxy-server en tussen de proxy-server en de <CITE>echte</CITE> server.
De client merkt dit niet: het lijkt voor hem een transparante verbinding tussen client en server.
Afhankelijk van het soort proxy zal deze de communicatie tussen de client en de server al dan niet verder bewaken. Een Web-proxy zou toegang tot bepaalde sites (black-listing) of het gebruik van Java en ActiveX kunnen verbieden, terwijl een FTP-proxy bepaalde FTP-commando's kan blokkeren.Het is belangrijk om op te merken dat een proxy een doorgeefluik vormt voor één bepaalde applicatie. Dat heeft voor- en nadelen:

Het grote voordeel is dat de proxy kennis heeft van de applicatie en daarom desgewenst ook voor applicatie-specifieke beveiligingsmaatregelen kan zorgen. Dit wordt protocol screening genoemd. Voorbeelden van protocol screening werden hierboven reeds gegeven: het tegenhouden van ftp-uploads of van het gebruik van Java-applets in Web-pagina's.
De prijs voor de applicatie-specifieke kennis van een proxy is dat er per applicatie een aparte proxy nodig is. Dit is een duidelijk nadeel ten opzichte van een IP-filter, dat voor alle applicaties bruikbaar is.
Een ander nadeel is dat ófwel de client ófwel (het gedrag van) de gebruiker moet worden aangepast: er moet immers een tussenstap op de proxy worden gemaakt.Voor de meeste belangrijke toepassingen zijn proxy's beschikbaar. Dat geldt bijvoorbeeld voor HTTP, FTP, HTTPS, SSL, rsh, telnet, RealAudio en X11.

Connectie-level proxy's
Een nadeel van klassieke proxy's is dat er per applicatie een aparte proxy nodig is. Er is echter een soort generieke proxy ontwikkeld, die in principe voor elke applicatie (mits deze op het TCP protocol is gebouwd) te gebruiken is. De software die hiervoor gebruikt wordt staat bekend onder de naam SOCKS (socks protocol versie 4).

Bij gebruik van SOCKS vinden de volgende stappen plaats:

Wanneer een client een server (bijvoorbeeld in het Internet) wil benaderen, moet hij met dit verzoek aankloppen bij de SOCKS-server op de firewall.
De SOCKS-server bepaalt op basis van een aantal criteria (o.a. het IP-adres van de client en de gebruikersnaam) of toegang tot het Internet is toegestaan voor de client en de gebruiker in kwestie. Zo ja, dan zal de SOCKS-server het client-verzoek doorspelen aan de echte server.
Het antwoord van de server komt in eerste instantie binnen bij de SOCKS-server.
De SOCKS-server geeft het antwoord door aan de client.Het voordeel van SOCKS is dat het voor de meeste (TCP-) applicaties te gebruiken is. Er zijn echter ook nadelen:

Uit het voorgaande blijkt dat voor gebruik van SOCKS aanpassingen in de client-software noodzakelijk zijn.
In tegenstelling tot de klassieke proxy's heeft SOCKS geen kennis van de applicaties zelf, zodat beveiliging op applicatieniveau (bijvoorbeeld niet naar buiten toe kopieëren bij FTP) niet mogelijk is. SOCKS speelt zich af op het connectie-niveau: het biedt beveiliging op het niveau van de (TCP-)connectie, niet op het niveau van de applicatie.
Een derde nadeel is dat er bij gebruik van SOCKS geen faciliteiten voor sterke authenticatie zijn.In de praktijk wordt soms een combinatie van SOCKS met klassieke proxy's gebruikt: de firewall kan bijvoorbeeld voorzien worden van klassieke proxy's voor FTP en telnet en daarnaast van de SOCKS software voor overige TCP-toepassingen.

Transparante proxy's
Een belangrijk nadeel van de klassieke proxy's is dat ze niet transparant zijn: de client of gebruiker moet erop geprepareerd worden om een tussenstap op de proxy te maken. Bij gebruik van een transparante proxy is dat niet nodig: de client kan de gewenste server rechtstreeks benaderen - althans dat lijkt zo voor de client. Door speciale aanpassingen in de firewall zal deze poging tot verbindingsopbouw onderschept worden en zal de juiste proxy automatisch worden gestart. Deze proxy bouwt dan een verbinding op naar de aangegeven server. De client is zich er niet van bewust dat hij geen rechtstreekse
verbinding met de server heeft. De op deze wijze automatisch geactiveerde proxy kan zich vervolgens als een applicatie-bewuste proxy gedragen of als een applicatie-onafhankelijke proxy. In het eerste geval zal de aanwezigheid van de proxy overigens niet altijd transparant blijven voor de gebruiker: deze kan geconfronteerd worden met eventuele door de proxy opgelegde beperkingen.

Een screened bastion host
Een veelgebruikte architectuur voor een firewall is een screened bastion host en IP-filters. Dit is een combinatie van een router en een UNIX- of Windows-systeem waarop proxy's geïnstalleerd zijn. Op deze wijze worden de voordelen van deze beide technieken gecombineerd. De router wordt bovendien zodanig geconfigureerd dat hij alleen verkeer toestaat tussen de bastion host en het Internet. Er zijn vele variaties mogelijk op deze topologie. De bastion host kan bijvoorbeeld één of meerdere netwerk-interfaces hebben of in een apart subnet opgenomen worden. De te kiezen variant hangt af van de specifieke beveiligings- en functionaliteitswensen.

Network Address Translation (NAT)
Network Address Translation is een techniek waarbij de firewall een vertaalslag uitvoert op IP-adressen. Bij gebruik van proxy's is NAT in feite impliciet, omdat de proxy een nieuwe connectie met de buitenwereld zal opzetten. Daarnaast bieden de meeste firewalls ook NAT-faciliteiten op IP-niveau.

Network Address Translation kan worden toegepast om interne adressen onzichtbaar te maken vanuit het Internet. Er zijn verschillende redenen waarom dat gewenst kan zijn:

Uit veiligheidsoverwegingen: om inzicht in de structuur van het interne netwerk te verhinderen.
Omdat in het interne netwerk de speciale IP-adressen voor private Internets worden gebruikt.
Omdat intern IP-adressen gebruikt worden die officieel van een andere organisatie zijn. Voor dit specifieke geval is moeilijk een oplossing te vinden: de meeste firewall-oplossingen kunnen de externe organisaties waarvan de misbruikte adresruimte eigenlijk is niet bereiken (omdat deze de betreffende adressen met interne hosts associeert).BRON: security.nl

Snoepy
23 July 2005, 19:49
Zie ook:

http://www.ivanhoejupiler.be/showthread.php?t=1782

gabriel
23 November 2005, 20:26
hey snoepy
even aan toevoegen http://support.microsoft.com/default.aspx?kbid=875357&product=windowsxpsp2