Een VPN-server is een zeer handige tool om lokale diensten op afstand beschikbaar te maken. Zo kun je bijvoorbeeld VPS'en aan een private network toevoegen, je publieke network interface dicht zetten (een VPS is dan niet meer via het internet rechtstreeks bereikbaar) en via een VPN-verbinding bereikbaar maken. Dit levert enkele veiligheids- en privacy-voordelen op:
- Veiligheid: Met name werken op afstand via SSH- en RDP-verbindingen wordt zo een stuk veiliger. Via een VPN-netwerk hoeven deze protocollen niet langer rechtstreeks benaderbaar te zijn via het internet.
- Privacy: Verkeer wordt versleuteld verzonden, waardoor je een zekere privacy bescherming geniet in publieke (bijv op een publiek Wi-Fi netwerk) of onveilige locaties (landen waar vrijheid van meningsuiting minder voorzichsprekend is).
In deze handleiding laten we zien hoe je een OpenVPN-server opzet op een pfSense-firewall. De configuratie van een pfSense-firewall als openVPN-server bestaat uit drie onderdelen:
- Je pfSense-firewall als internal Certificate Authority instellen
- Een SSL-certificaat genereren om je verbinding te versleutelen
- Een Export Manager installeren waarmee je de benodigde client configuratiebestanden kunt exporteren.
- We gaan er voor deze handleiding van uit dat je onze pfSense-installatiehandleiding hebt doorlopen.
- Wil je VPN-gebruiker authenticatie via een Active Directory laten verlopen? Configureer dan eerst een LDAP server volgens de stappen in deze handleiding.
Een internal Certificate Authority maken
pfSense kan op meerdere manieren gebruik maken van SSL. Een daarvan is door zelf op te treden als 'internal Certificate Authority'. Dit betekent dat je pfSense-server optreed als partij die SSL-certificaten uitgeeft (als Certificate Authority), maar dan 'internal', oftewel: binnen je (virtuele) private network. We gebruiken deze methode om je OpenVPN-server te beveiligen.
Stap 1
Log in op pfSense en klik bovenaan in het menu op 'System' > 'Cert. Manager'.
Stap 2
Je krijgt een overzicht te zien van Certificate Authorities (CA's) die geconfigureert zijn op je server. Klik op 'Add' om een nieuwe toe te voegen.
Stap 3
Vul de gegevens op de pagina in zoals in het voorbeeld hieronder met eventueel de volgende aanpassingen:
- Descriptive name / Common name: je bent vrij deze naar wens aan te passen. We raden aan om een naam te kiezen waar je eenvoudig uit kunt opmaken waar die voor dient.
- Digest Algorithm: tegenwoordig is de performance impact van SHA512 zeer klein en waarschijnlijk merk je er niets van. Voor net dat beetje extra performance kun je eventueel ook SHA256 kiezen.
- Bedrijfsgegevens: pas deze aan naar de gegevens van je eigen bedrijf.
Het belangrijkste is dat je 'Method' op 'Create internal Certificate Authority' laat staan. Daarnaast raden we aan de 'Trust Store' en 'Randomize Serial' opties aan te vinken.
Ga nu verder met de volgende paragraaf om daadwerkelijk een certificaat aan te maken.
Een SSL-certificaat genereren
Nu je een interne CA hebt ingesteld, is de volgende stap het maken van een certificaat voor de OpenVPN server die clients gebruiken om de identiteit van je pfSense-firewall te verifiëren.
Stap 1
Klik op het tabblad 'Certificates' en vervolgens op 'Add/Sign'.
Stap 2
De pagina is grotendeels al automatisch ingevuld. Het belangrijkste is dat je op deze pagina het 'Certificate Type' aanpast naar 'Server Certificate'. Geef ook hier een duidelijk omschrijvende 'Descriptive name' en 'Common name' op. Je bent vrij om de key length en het algoritme aan te passen. Voor een combinatie van veiligheid en performance kiezen we voor respectievelijk 4096 en SHA512.
Je SSL-certificaat is nu klaar en je kunt verder gaan met de configuratie van OpenVPN.
OpenVPN configureren
Stap 1
Klik in het bovenste (header) menu op 'VPN' > 'OpenVPN'.
Stap 2
pfSense heeft een handige wizard voor de configuratie van een OpenVPN server. Klik op 'Wizards' om deze te starten.
Stap 3
Gebruik je een pfSense/OpenVPN server in combinatie met een Windows Domain Controller? Selecteer dan 'LDAP' en klik op 'Next'. Wil je liever individuele VPN-gebruikers aanmaken vanuit pfSense? Dan kies je hier 'Local User Access'.
Let op dat ongeacht je keuze er aanvullende stappen nodig zijn voor het configureren van gebruikers. Aan het eind van deze handleiding verwijzen we naar een aanvullend artikel waarin die stappen worden toegelicht.
Stap 4 - LDAP
Als je voor LDAP hebt gekozen, kies je hier een LDAP-server. Zie je hier niet je Domain Controller terug? Configureer dan eerst een LDAP server volgens de stappen in deze handleiding en herstart de wizard.
Selecteer de CA die je in de eerste paragraaf hebt aangemaakt. Normaal gesproken zal deze al geselecteerd zijn. Klik vervolgens op 'Next'.
Stap 6
Je komt nu automatisch bij stap 7 terecht. Selecteer hier het SSL-certificaat dat je in de eerste paragraaf hebt aangemaakt. Als er nog geen andere certificaten op je server aanwezig zijn, is deze al automatisch geselecteerd.
Stap 7
Deze stap is de meest uitgebreide. Een aantal van de opties die je hier selecteert hangt af van je eigen voorkeur en ben je vrij in (de optie DNS Default Domain en DNS Server zijn bij OpenVPN met LDAP terug te vinden onder 'Advanced' en moeten aangevinkt worden). Een uitgebreid overzicht van beschikbare opties vind je hier, maar de belangrijkste zijn:
- Description: Een administratieve naam die aangeeft waarvoor de VPN-server dient.
- DH Parameter Length: Hoe langer, hoe veiliger. 4096 is een prima optie om hier te kiezen.
- Auth Digest Algorithm: Gebruik minimaal SHA256 om veiligheidsredenen. Hoe hoger het getal, hoe meer er sprake is van performance impact, maar bij SHA512 is die nog verwaarloosbaar.
- Tunnel network: De private IP-range waaruit het VPN-netwerk IP-adressen toewijst aan zowel de OpenVPN-server (je firewall) als de clients die ermee verbinden. In dit voorbeeld kiezen we voor 10.10.0.0/24 (256 adressen).
- Redirect Gateway: Allicht de belangrijkste optie: door deze aan te vinken wordt al het internetverkeer van clients via de OpenVPN-server geleid. Dit is de veiligste optie en bijvoorbeeld wenselijk voor een Windows-domein.
- Local Network: De IP-range van je lokale netwerk. In dit geval is dat je private network, maar dit kan bijvoorbeeld ook een kantoor netwerk zijn (in een lokale setup).
- Concurrent Connections: Hoeveel VPN-verbindingen tegelijk via je OpenVPN-server mogen lopen. Dit moeten er minimaal een per uiteindelijke gebruiker zijn met enige ruimte voor groei.
- Interclient Communication: Dit is een belangrijke: stel dat je ook van buiten je private network, bijvoorbeeld vanaf een laptop, wil verbinden met servers op je private network, dan zorgt deze optie ervoor dat alle apparaten die via een VPC client met je OpenVPN-server verbonden zijn elkaar kunnen bereiken.
- Duplicate Connections: Deze optie staat standaard uit. Dit is de veiligste optie en we raden aan dit niet aan te passen (vandaar dat deze niet omlijnd is). Let wel dat als een gebruiker op meer dan één computer/server met dezelfde gebruikersnaam verbindt, deze optie ervoor zorgt dat op een willekeurig moment de WAN-verbinding niet meer zal werken. Het onhandige is dat de gebruiker dan geen melding krijgt dat zijn gebruikersnaam al verbonden is. Je kunt dit wel terugzien in pfSense onder 'status' > 'system logs' > 'openvpn' aan de hand van verbonden IP-adressen voor de specifieke gebruiker.
- DNS Default Domain: Geeft optioneel een domeinnaam mee aan verbonden clients.
- DNS Server 1 t/m 4: Een belangrijke optie als je op je private network eigen DNS-servers draait (zo niet, laat deze optie dan leeg). Dit is bijvoorbeeld het geval bij een Windows Active Directory omgeving waarbij de Domain Controller ook de DNS-server is voor het private network.
- NetBIOS options: Een must have om in te schakelen als je OpenVPN-server gebruikt wordt voor een Windows-netwerk. Windows shares worden via NetBIOS aangeboden. Zonder deze optie kunnen je servers daar geen gebruik van maken.
- NetBIOS node type: h-mode is de beste optie in combinatie met DNS Servers.
Stap 8
Vink de opties 'Firewall Rule' en 'OpenVPN Rule' aan om respectievelijk VPN clients toe te staan, ongeacht waar zij zich op de wereld bevinden (handig als je vanuit het buitenland werkt op je laptop) en om al het verkeer vanaf een client door de VPN tunnel (i.e. een versleutelde verbinding van de client naar het internet) te laten verlopen.
Stap 9
Daarmee zijn we aan het eind gekomen van de wizard. Klik op 'Finish' om deze af te sluiten. In het bovenste menu vind je nu onder 'Firewall' > 'Rules' een nieuwe regel voor de OpenVPN-server en de server zelf onder 'VPN' > 'OpenVPN'.
Zoals de wizard al hint gaan we nu in de volgende paragraven verder met client configuraties, oftewel alles dat komt kijken bij gebruikers aanmaken en zorgen dat zij je VPN-server kunnen gebruiken.
OpenVPN client export package installeren
Voor je daadwerkelijk gebruikers aanmaakt, installeer je de OpenVPN client export package. Hiermee kun je vanuit pfSense de bestanden exporteren die gebruikers nodig hebben om via een VPN client zoals OpenVPN of Viscosity met je VPN-server te verbinden.
Stap 1
Klik in het bovenste menu op 'System' > 'Package Manager'.
Stap 2
Ga naar het tabblad 'Available Packages' en zoek op 'OpenVPN'. Klik in de resultaten op 'Install' achter de package 'OpenVPN Client Export'.
Stap 3
pfSense is nog niet helemaal overtuigd van je intentie en vraagt bevestiging om de package te mogen installeren. Klik op 'Confirm' om de installatie te starten. De installatie duurt ongeveer een minuut.
Nu de export manager geïnstalleerd is, is je OpenVPN-server klaar voor gebruik. Je hebt daarvoor eerst minimaal één gebruikersaccount nodig. Hoe je die aanmaakt met alle daarbij behorende configuratiebestanden voor verschillende VPN clients, laten we zien in onze handleiding 'pfSense: een OpenVPN-gebruiker aanmaken'. Deze handleiding is gericht op zowel LDAP-gebruikers als OpenVPN-gebruikers die in pfSense zelf worden aangemaakt.
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.