Hoofdindex » Servers » TechTalk » Beveiliging van netwerkverbinding
Webservers en meer
TechTalk
Beveiliging van netwerkverbinding
Met beveiliging worden er twee verschillende zaken bedoeld:
  • Beveiliging van gegevens door middel van encryptie (versleuteling).
  • Beveiliging van een netwerk door het opzetten van een tunnelverbinding. Wordt hier besproken.
Wij hebben het hier specifiek over de beveiliging over een onveilig medium (het internet). Deel II (beveiliging van de netwerkverbindingen) komt hier ter sprake.

Beveiliging op netwerkniveau

OSI model

Op één punt is het OSI model totaal voorbijgestreefd. De beveiliging van het netwerk gebeurt namelijk niet op de presentatielaag (presentation layer, de tweede laag van het OSI model) maar veel lager, bijvoorbeeld op de session laag (IPSec), datalink laag (L2TP en PPTP) of fysische laag (bijvoorbeeld: wireless). Het is toch opmerkelijk dat de beveiliging op alle lagen gebeurt, behalve op de door het OSI-model toegewezen laag!

Beveiliging op netwerk-niveau

Hoe fantastisch VNC en/of RDP wel zijn, het zijn gewoon programma's. De mogelijkheden van het netwerk zelf worden nauwelijks benut (printer sharing, file sharing, toegang tot de servers via open en closed source protocollen). Via RDP kan je wel een printopdracht op de server lokaal uitprinten, maar dat gebeurt niet transparant (je moet manueel de drivers installeren, en in een heterogene omgeving (verschillende windows versies) werkt het niet.

Wat wij willen is dat het netwerk op afstand als het ware deel uitmaakt van het lokale netwerk. Het moet dus mogelijk zijn te printen op een printer gelegen in het ander netwerk (subnet is de juiste benaming), ongeacht welk vreemd protocol de printer gebruikt. Alle computers in dat ander netwerk moeten bereikbaar zijn alsof ze lokaal zouden zijn.

Dit kan niet op applikatie-niveau, maar het moet op een veel lager gelegen niveau gebeuren, zodat alle applikaties (programma's) ervan gebruik kunnen maken. Dus lager dan de session laag, want in windows zijn de bovenste drie lagen geïntegreerd. Dit moet ook volledig transparant gebeuren (de programma's weten niet dat de resource in een ander subnet gelegen is). Om terug te keren tot onze voorbeeld met de bank-module (besproken op de pagina over beveiliging van gegevens): dit module is enkel bruikbaar om een versleutelde verbinding op te zetten tussen webbrowser en de bank. Eenzelfde beveiliging is niet bruikbaar om op een veilige manier bestanden op de hoofdzetel te raadplegen of om toegang te krijgen tot een oud boekhoudprogramma dat op de hoofdzetel draait.

PPTP L2TP IPSec

Eerst gaan we in het kort een paar geleerde termen uitleggen. Het is niet de bedoeling een volledige uitleg te geven want in de praktijk zal je nooit te maken hebben met de protocollen zelf.
PPTP
PPTP (point-to-point tunnelling protocol) is een windows ding (ding-dong zei de SNTP server). Het is een uitbreiding van het PPP (point-to-point protocol) dat bij het inbellen gebruikt wordt (ADSL en klassieke dial up). Op zich heeft PPTP geen encryptie (versleuteling van de gegevens), maar dit kan voorzien worden: je bekomt aldus confidentiality: niemand kan je dataverkeer afluisteren. PPTP gebeurt op OSI-laag 2 (datalink, dus op IP packet niveau)

L2TP
L2TP (Layer 2 tunnelling protocol) werd opgesteld door Cisco en Microsoft. Het is een verbetering van het PPTP en kan zelfs gebruikt worden op niet-IP (internet protocol) gebaseerde netwerken (bijvoorbeeld ATM), maar dit is hier weinig relevant. Naast confidentiality voorziet L2TP ook in integrity: de ontvanger kan detecteren dat de gegevens onderweg gewijzigd werden.

IPSec
IPSec (Internet Protocol Security) is het protocol dat voor de beveiliging zelf zorgt (PPTP en L2TP zorgen voor de "tunnel", maar niet voor de versleuteling van de gegevens). Je kan PPTP en L2TP een beetje vergelijken met TCP en UDP: beide gebruiken het IP (internet protocol) om data te versturen. Mocht het je interesseren: IPSec zit op de netwerk-laag van het OSI-model, het is een taak van gateways en routers.

Netwerkbeveiliging in de praktijk

IPSec voor één host

Je zou iedere host in een netwerk kunnen uitrusten met de nodige tunnelsoftware. Dit is doenbaar als je een beveiligde verbinding tussen twee computers wenst over het internet. Maar van zodra er meer dan één host op het LAN zit, is dit niet meer te doen. Hoe configureer je een printer voor IPSec?

IPSec voor één host
IPSec voor één host.

IPSec is een software-beveiliging (het maakt trouwens deel uit van de laatste windows-versies). Zonder deze beveiliging heb je geen toegang tot het netwerk van je bedrijf (het bedrijfsnetwerk zal je weren als je niet over de nodige "credentials" beschikt). IPSec treed enkel in werking bij een verbinding met de hoofdzetel, niet bij het gewoon surfen op het net. De hoofdzetel heeft een vast IP. Bij een tunnelverbinding tussen twee computers kan er gewerkt worden met dynamische IP's, maar voor bedrijven is dit niet bedrijfszeker genoeg: de hoofdzetel moet een vast IP bezitten zodat "inbellen" gemakkelijker gaat.

Corporate network

Hoe zit de configuratie er uit aan de kant van het bedrijfsnetwerk?
Naargelang de behoeften is kan het volgende voorzien worden:
  • Breedband internet toegang (geel)
    De internet-verbinding voor IPSec en/of servers zal in de praktijk te traag zijn om er ook mee te kunnen surfen, vooral als je een aantal werkposten hebt. De beveiligde verbinding wordt namelijk aangelegd als een SDSL-verbinding (symmetrische snelheden). De enige oplossing is te surfen via een tweede internet aansluiting, bijvoorbeeld internet via de kabel. Indien surfen niet belangrijk is, dan vervalt het gele deel, met de bijhorende DOCSIS modem.
  • Beveiligde tunnelverbinding (rose)
    Voor dit deel is er een vast IP adres nodig, in ons voorbeeld hebben we 195.238.10.15 gebruikt (toevallig het IP adres van Skynet, maar voor ons betoog maakt het niets uit). Is er geen beveiligde tunnel nodig, dan vervalt het roze gedeelte. Deze verbinding wordt enkel gebruikt voor de tunnel, maar de internet bandbreedte wordt gedeeld door andere server-toepassingen (mail, web,...)
  • Server toepassingen (lichtblauw)
    Indien je een eigen server (mailserver, webserver) hebt, dan wordt dezelfde verbinding gebruikt als voor de tunnelverbinding, maar met een ander ip adres, in ons voorbeeld 195.238.10.14. IP adressen worden in groepen uitgedeeld, dus als je twee IP adressen vraagt, krijg je een pack met bijvoorbeeld 4 bruikbare IP adressen. Een duo-pack bestaat niet. Draaien er geen lokale servers, dan vervalt het licht-blauwe deel (en dus ook de noodzaak van een IP pack)

Voorbeeld van een bedrijfsnetwerk
Voorbeeld van een bedrijfsnetwerk

In ons voorbeeld heeft het lokaal netwerk de range 192.168.1.* Servers krijgen vaste IP adressen: fileserver (.10) waar je alle belangrijke documenten oplslaat, application server (.11), bijvoorbeeld een boekhoudprogramma, mailserver (.12) zowel voor de buitenwereld als lokaal, webserver 13,...
Alle clients krijgen een IP adres via DHCP (zorg dat er maar één DHCP server op het lokaal netwerk zit! Routers zijn standaard ingesteld om lokale adressen uit te reiken via DHCP!)

Het publiek IP adres van het bedrijf is 195.238.10.14. Als er een mail toekomt van het internet, dan zal het op de bovenste router toekomen, die het bericht naar de juiste server stuurt (.12). Web aanvragen komen eveneens op de bovenste router, en die worden dan naar de webserver gestuurd (bijvoorbeeld .13). De router weet naar welke server de verbinding gelegd moet worden aan de hand van het protocol-nummer (poortnummer). Mail (poort 25 dacht ik) moet naar de mailserver .12 gestuurd worden, Web (poort 80) moet naar de webserver gestuurd worden, en zo verder. Deze routing-tabellen moet je in de router programmeren (en niet vergeten de router het juiste publieke IP adres te geven).

Het niet-echt-publiek IP adres van het bedrijf is 195.238.10.15. Dit IP adres wordt gebruikt voor de tunnel. De router (een betere benaming is gateway) die voor de tunnel zorgt zal alle aanvragen die niet van een toegelaten netwerk komen weigeren. De gateway is een speciale router met bijkomende funkties (watchguard is een bekend merk). De aanvragen worden naar de juiste server gestuurd (daarover meer later).

Vergeet niet dat routers en gateways twee IP adressen hebben: een lokaal adres en een publiek adres.

Client subnet

Aan de kant van de client subnet is de situatie eenvoudiger dan bij een corporate subnet. In de praktijk wordt de router vervangen door een IPSec gateway. Deze gateway heeft alle functionaliteiten van een gewone router, maar is eveneens in staat een beveiligde verbinding aan te leggen naar de moedermaatschappij. Het is belangrijk dat de gebruikte subnet verschillend is (een verschillende range gebruikt). De tunnel zorgt ervoor dat het hele internet verdwijnt (op protocol niveau (logisch) worden de twee netwerken aan elkaar gekoppeld door de twee IPSec gateways die één enkele gateway vormen). En als je deze site in de volgorde gelezen hebt, dan weet je dat twee subnetten die elkaar logisch raken niet eenzelfde range mogen gebruiken. Dus: 192.168.1.* voor de hoofdzetel, 192.168.i.* voor de bijhuizen. i moet verschillend zijn voor ieder bijhuis.

Voorbeeld van een client netwerk (bijhuis)
Voorbeeld van een client netwerk (bijhuis)



Een computer in het bijhuis (met ip 192.168.2.10) legt een verbinding aan met het boekhoudprogramma (192.168.1.11).
Voor de computer is dit een adres buiten het eigen subnet, dus wordt de aanvraag aan de router gericht.


De gegevens van de verbinding (IP adressen en payload) zijn ingepakt, het packet bevat nu als adressen het publiek adres van het bijhuis (dynamic) en het adres van het moederhuis (static).
De configuratie van de lokale computers (bijhuis) wordt volledig door DHCP uitgevoerd, vaste adressen zijn niet nodig aangezien er geen servers draaien. Opgelet: printers geef je best een vast IP adres: dit is nodig als de server naar een printer in het bijhuis moet printen.

Lokale aanvragen (binnen het subnet van het bijhuis) gaan direkt naar de juiste lokale computer (bijvoorbeeld een lokale netwerkprinter), aanvragen voor het gekoppeld netwerk (hoofdzetel) en voor het internet gaan via de IPSec router. Dit zijn de klassieke regels van de routing. De client-computer weet absoluut niet dat de gegevens versleuteld zullen worden: dit gebeurt volkomen transparant, dus zonder medeweten van de client computer.

De router zelf is ingesteld om de internet-aanvragen gewoon door te laten, en de aanvragen voor het gekoppeld netwerk in te kapselen en naar het publiek adres van het moederhuis te sturen. Het effektief adres van de bestemmingscomputer wordt ingekapseld, tijdens zijn verblijf op het internet is dit adres nooit zichtbaar. Aan de andere kant van de tunnel wordt het packet open gedaan en de aanvraag naar de juiste computer gestuurd.

De situatieschets is nu bijna compleet, kleine details ontbreken nog om het geheel functioneel te maken, namelijk static routing tables in de servers.

Routing tables

We keren terug naar de figuur halverwege het blad. Onze mailserver met ip adres 192.168.1.12 heeft als gateway 192.168.1.1 (zijn bijhorende router) zodat uitgaande mailberichten uitgestuurd kunnen worden. Software updates en dergelijke gebeuren allemaal via deze router.

Als er nu een mailverbinding onstaat tussen een lokaal client (bijvoorbeeld 192.168.1.99) en de server, dan is er geen probleem. De subnet mask zorgt ervoor dat er een lokale verbinding gemaakt moet worden, dus zonder de router te passeren.

Als de mailverbinding afkomstig is van het gekoppeld netwerk (bijvoorbeeld 192.168.2.10), dan zal de server het antwoord willen sturen via de normale router (192.168.1.1) en niet via de IPSec gateway (192.168.1.2) omdat het IP adres van de aanvrager in een ander subnet zit. Wat wij dus moeten doen, is een tweede gateway definiëren voor verbindingen naar het gekoppelde subnet. In de praktijk doen we dit met het commando:
route [-p] add 192.168.2.0 mask 255.255.255.0 192.168.1.2

192.168.2.0: destination: adres van het subnet
Voor alle adressen van dit subnet (subnet wordt bepaald door een beginadres en range) moeten de volgende routing toegepast worden.
255.255.255.0 netmask
Range van het target subnet, voor de server dus het netwerk in het bijhuis, niet van het lokaal netwerk waarin de server is gelegen
192.168.1.2 gateway
Lokaal in adres van de gateway, de IPSec router dat verbinding met de bijhuis in ons geval. Pakketten die naar het bijhuis moeten (192.168.2.x) worden via de gateway (192.168.1.2) gestuurd.
[-p] permanent-flag of job protection flag
Zonder -p heb je een tijdelijke route. Bij herstarten van de server gaat deze routing-informatie verloren. Leuk als job protection: iedere keer dat je een server moet herstarten geef je de routing table in. Als je weg bent, zal niemand meer de routing table ingeven en de server reageert niet meer op signalen van de bijhuis. Internet routing is zo complex (en de fout zal niet in de eerste uren na het herstarten van de server opgemerkt worden) dat niemand zal denken aan een "vergeten" routing table. Zeg niet dat je het van mij geleerd hebt...

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's