Labo VPN
De bedoeling van dit labo is om op verschillende manieren een VPN
op te zetten, te configureren en uit te testen.
Vermits we niet over routingdevices beschikken, gebruiken
we ook hier de klaspc's in LINUX als routers.
Voorbereiding
Zorg dat je zeker alle basisbegrippen in verband met IPSec en VPN kent en
weet hoe IPSec incl. de sleuteluitwisseling functioneert. Deze informatie kan
je ondermeer vinden in de cursusslides en in de tekst van IBM.
Inleiding
Voor dit labo werk je in groepjes van 3 studenten die gebruik maken van 4 toestellen op één bank.
Verslag
De bedoeling is dat je van al je activiteiten een elektronisch verslag
schrijft in gewoon tekstformaat (niet opgemaakt, regels korter dan 60 tekens).
Vermeld steeds duidelijk
- het nummer van het opgavedeel
- wat je precies doet
- met welke commando's je dat verwezenlijkt
- de problemen die je tegenkomt
- hoe je ze oplost
De naam van het verslag is vpn.txt.
Als eerste regels bovenaan het verslag staan vermeld:
Verslag VPN
Achternaam Voornaam van alle groepsleden
Op het einde van dit labo plaats je dit verslag in de directory
U:/beveiliging/vpn/ van alle groepsleden.
Opgave deel1
Voor dit deel log je rechtstreeks in als root, NIET via su of su - !!
Je maak een aantal VPN-configuraties aan de hand van IPSec.
In de geïnstalleerde kernelversies zijn de IPSec-modules reeds aanwezig.
Je kan de SAD en de SPD instellen en configureren met het commando setkey.
Bekijk aandachtig de man-page voor alle mogelijkheden.
De optie -f laat toe dat alle instellingen uit een bestand gelezen worden.
Zorg dat de eerste lijnen in dat bestand zijn
spdflush;
flush;
zodat steeds de SAD en SPD in de kernel leeg gemaakt worden.
Voor alle vragen in dit deel gebruik je volgende opstelling:
Hierbij blijven alleen de twee gateways verbonden via eth0 met het bestaande netwerk en zijn de ip-adressen 192.168.16.(aa bb) de originele. De VPN-verbinding op de figuur loopt dus over het bestaande netwerk.
Voor de eth1-interfaces neem je de ip-adressen die vermeld staan in het lokalenoverzicht bij de opgave van sendmail. De verbinding tussen de host en de gateway gebeurt via een cross-kabel.
Stel de routes in op de 4 computers zo in dat er tussen de hosts communicatie mogelijk is.
Vragen
1.
Maak een VPN-tunnel tussen de twee gateways waarbij gebruik gemaakt wordt van ESP en zorg ook dat de pakketten met AH geauthenticeerd worden ("2. basis VPN-opbouw"; slide 51 cursus theorie). Hierbij moeten de SA's manueel aan de SAD toegevoegd worden. Vergeet niet dat er ook een security policy moet opgesteld worden.
Verifieer dat alle communicatie tussen de gateways op eth0 beveiligd is (tcpdump -i eth0).
Dit kan bijvoorbeeld uitgetest worden door te ping-en van host1 naar host2 en/of omgekeerd.
Vraag: waarom zijn bepaalde pakketten toch niet geëncrypteerd.
2.
De bedoeling van de aanpassing is dat nu de SA's niet meer manueel worden ingesteld.
Dit moet nu gebeuren door de IKE-daemon racoon. Hiertoe moet de racoon-configuratie
worden ingesteld (zie man racoon.conf en man racoon).
Om uit te testen kan racoon best opgestart worden in interactieve mode( optie -F).
Test opnieuw uit met ping en tcpdump.
3.
Nu er een VPN-verbinding is tussen de gateways, moet er ook tussen de hosts een
beveiliging worden voorzien ("3. end-to-end beveiligin+VPN"; slide 53 cursus theorie).
Bepaal zelf welke extra voorziening(en) je zou gebruiken (ESP, AH of beide; transport of
tunnelmode?); argumenteer.
Stel de configuratie manueel in (geen IKE gebruiken).
Test uitvoerig uit en bekijk ook de uitvoer van tcpdump op de hosts.
4.
Wijzig de instellingen op de hosts nu zo dat de SA's niet meer manueel worden ingesteld, maar wel via
IKE worden onderhandeld. Let wel: hier is het de bedoeling dat de IKE-fase1 niet anoniem mag gebeuren, maar op basis van ip-adressen.
Test uitvoerig uit met ping en tcpdump. Bekijk de uitvoer van racoon en verklaar wat er gebeurt.
Bekijk de SAD en SPD op een host en verklaar.
Opgave deel2
In dit deel is het bedoeling om een VPN op te zetten bij middel van ssh en ppp (point-to-point-protocol)
en dit als een gewone lokale gebruiker sshvpn. Log dus ook hier NIET met jouw accountgegevens.
Maak gebruik van volgende opstelling:
Hierbij is de verbinding ppp0 virtueel over de fysieke interface eth0.
5.
Creëer op beide gateways een groep sshvpn en een gebruiker sshvpn.
De homedirectory van de gebruiker sshvpn moet zich bevinden in /opt/ssh-vpn.
6.
Configureer SSH zodat de gebruiker sshvpn op de andere gateway kan inloggen zonder een wachtwoord
te moeten intypen (hostbased authentication).
7.
Omdat de VPN-verbinding moet kunnen opgezet worden door gebruiker sshvpn,
moet deze in staat zijn de daemon pppd op te starten. Omdat sshvpn geen root is,
moet gebruik gemaakt worden van het commando sudo.
Pas het sudo-configuratiebestand aan zodat gebruiker sshvpn de daemon pppd kan opstarten.Voor het editeren van het sudo-configuratiebestand moet je gebruik maken van visudo!Je kan dit bestand niet zomaar met eender welke editor aanpassen.
8.
Voer op een van de gateways volgend commando uit:
sudo /usr/sbin/pppd updetach noauth pty \
"sudo -u sshvpn ssh -t -t 192.168.16.XYZ sudo /usr/sbin/pppd noauth 192.168.254.254:192.168.254.253"
waarbij XYZ ingevuld wordt zodat het adres overeenstemt met de andere kant op eth0.
Bespreek uitvoerig hoe bovenstaand commando juist functioneert en waartoe de verschillende opties dienen.
Pas nu de routetabel van je opstelling aan zodat het netwerkverkeer tussen de gateways over de interface ppp0 verloopt (i.p.v. eth0). Test je opstelling grondig uit.
Opgave deel3
Ook hier wordt gebruik gemaakt van de pppd om een point-to-point verbinding tussen de gateways op te zetten.
Om een veilige verbinding te verzekeren wordt evenwel SSL gebruikt in plaats van SSH.
Om SSL te kunnen gebruiken moet op de twee gateways een privaat/publiek sleutelpaar aanwezig zijn en moeten
ze over mekaars certificaat beschikken.
9.
Creëer op beide gateways een groep sslvpn en een gebruiker sslvpn.
De homedirectory van de gebruiker sslvpn is /opt/ssl-vpn.
10.
Genereer op beide gateways(als gebruiker sslvpn) met het commando openssl een SSL private sleutel en
een “self-signed” certificaat.
Aangezien het zonet gegenereerde bestand zowel de private sleutel als het certificaat bevat, moet op beide toestellen het certificaat van het PEM-bestand gescheiden worden.
Je kan dit het beste doen door opnieuw gebruik te maken van het commando openssl.
Wissel beide certificaten uit.
11.
Stunnel3, een SSL tunneling service, zal bij het opzetten van de tunnel controles uitoefenen op de doorgegeven certificaten.
Dit gebeurt door het vergelijken van de hashwaarde van het ontvangen certificaat met de hashwaarde van het oorspronkelijke certificaat. Hiervoor moet het certificaat van de gateways
opgeslagen worden als naam XYZ.0 waarbij XYZ de hashwaarde van het certificaat voorstelt.
Maak deze bestanden aan.
12.
Pas het sudo-configuratiebestand aan zodat gebruiker sslvpn de pppd en stunnel3 kan starten.Opgelet maak gebruik van visudo voor het aanpassen van het sudo-configuratiebestand!
13.
Start het stunnel3-proces op een gateway op met als poortnummer 9871. Wanneer de andere gateway
een verbinding maakt met de eerste op poort 9871 moet deze de pppd server starten.
Een man-page van stunnel3 kan je hier vinden.
Start op de tweede gateway vervolgens het pppd-proces waarbij je een connectie maakt met de eerste gateway
op poort 9871.
Test je opstelling grondig uit.
|