Het internet is niet bepaald te bestempelen als een veilige plek: elke dag worden er kwetsbaarheden gevonden in besturingssystemen en aanvallen door botnetwerken vinden aan de lopende band plaats.
pfSense helpt je jezelf hiertegen te beschermen: het is een gratis firewall besturingssysteem waarmee je enterprise level security krijgt. Met een pfSense-firewall kun je al het publiek verkeer (i.e. verkeer over het open internet) van jouw VPS'en via de pfSense-firewall laten verlopen. De VPS'en zelf kun je dan afhankelijk van je use case zelfs onbereikbaar voor het publieke internet, waardoor ze niet meer zomaar aangevallen kunnen worden. Daarnaast zijn er in pfSense nog aanvullende nuttige tools ingebouwd, zoals een VPN-server.
In deze handleiding begeleiden we je door het installatieproces van een nieuwe pfSense-firewall.
Voor de stappen in deze handleiding is minimaal nodig: één X1-VPS met pfSense en een private network.
pfSense installatie
Stap 1
Voeg optioneel voor je aan de installatie begint alvast je pfSense-firewall toe aan het Private Network waar ook de VPS'en in zijn opgenomen die gebruik gaan maken van de pfSense-firewall. Dit vereenvoudigt de configuratie verderop in deze handleiding en is de 'veiligere' optie van starten met pfSense omdat publieke toegang tot de pfSense-webinterface daarmee wordt voorkomen. Let wel dat je dan een VPS in je Prviate Network nodig hebt die een GUI met browser heeft.
Als de installatie van pfSense al gestart is, herstart dan je VPS via de console in het controlepaneel na het toevoegen aan het private network zodat de networkadapter voor je private network zeker gedetecteerd is.
Stap 2
Na het starten van de installatie, krijg je eerst de mogelijkheid een toetsenbord-taal te kiezen. Standaard staat deze op US-international, wat wij in Nederland gebruiken. Druk op 'Enter' om verder te gaan.
Stap 3
Geef vervolgens een hostname op. Dit kan iets simpels zijn zoals 'pfsense.jedomeinnaam.nl', maar wat je invult maakt hier niet uit; in stap 24 vraagt pfSense je namelijk nogmaals om een (definitieve) hostname.
Stap 4
Kies als partitioneringsoptie voor 'Auto (ZFS)'; Ten tijde van de laatste update van deze handleiding (pfSense 2.7.2) zorgt de UFS-optie voor een onvolledige installatie waardoor een belangrijke kernel module ontbreekt.
Uiteraard ben je vrij om desgewenst handmatig de partitionering in te richten. Dit valt echter buiten de scope van deze handleiding.
Stap 5
Bevestig de standaard ZFS Configuration-opties door respectievelijk de volgende opties te accepteren/selecteren:
- De standaard partitioneringsopties voor GPT (BIOS).
- Stripe als Virtual Device type (mirror en raid zijn bedoelt voor installaties op fysieke hardware).
- De schijf van je VPS om de installatie op uit te voeren (selecteer met 'Spatie' en bevestig met 'Enter').
- Bevestig dat pfSense eventuele bestaande data mag verwijderen.
Stap 5
Je wordt nu gegroet door de configuratiewizard in de pfSense shell. De wizard geeft je de mogelijkheid om o.a. gebruikers aan te maken en de netwerkconfiguratie in te richten.
Geef een wachtwoord op voor de root-gebruiker en bevestig je keuze.
Stap 6
Je krijgt nu de vraag om een netwerkinterface te selecteren. Selecteer hier de eerste interface 'VTNET0'.
Bevestig dat je IPv4 wil configureren op deze interface...
... en dat je daarvoor DHCP wil gebruiken (om de configuratie automatisch te laten verlopen).
Bevestig eveneens dat je IPv6 wil configureren...
... en ook hier gebruik wil maken van de automatische optie (SLAAC).
Tot slot kun je de resolver configuratie aanpassen. Druk op 'Enter' om verder te gaan met de automatische configuratie, of gebruik als je een handmatige configuratie wil gebruiken bijvoorbeeld onze resolvers. Respectievelijk zijn dit voor IPv6 en IPv4 (terug te zien onder je VPS in het TransIP-controlepaneel bij netwerkinformatie):
- 2a01:7c8:7000:195::8:195:8
- 2a01:7c8:7000:195::135:195:135
- 195.8.195.8
- 195.135.195.135
Stap 7
Selecteer nu een tijdszone voor je VPS...
... en het land waar je je bevindt.
pfSense vraagt nu of de tijdszone die het herkend klopt. Voor Nederland is dit 'CET'.
Bevestig de configuratie door eerst de datum te bevestigen via 'Set Date'...
... en de datum via 'Set Time'.
Stap 8
Pas optioneel aan welke services worden gestart tijdens het booten van je VPS. Je kunt dit altijd later nog aanpassen maar de belangrijkste overweging op dit punt is of je wel/geen gebruik wil maken van SSH: het beheer van pfSense zul je grotendeels via de webinterface uitvoeren en je kunt ook gebruik maken van de console in het TransIP-controlepaneel. SSH geeft ook een mogelijk aanvulspunt voor kwaadwillenden. We raden daarom aan om in het geval van pfSense SSH niet te gebruiken, tenzij nodig voor jouw use case.
Stap 9
Spijker nu je beveiliging naar wens verder dicht. De beschikbare opties zijn:
- hide_uids: Verbergt processen die door andere gebruikers (UID) worden uitgevoerd. Dit voorkomt dat niet-geprivilegieerde gebruikers processen van andere gebruikers zien.
- hide_gids: Verbergt processen die door andere groepen (GID) worden uitgevoerd. Dit voorkomt dat niet-geprivilegieerde gebruikers lopende processen van andere groepen kunnen zien.
- hide_jail: Verbergt processen die draaien in jails. Dit voorkomt dat niet-geprivilegieerde gebruikers processen kunnen zien die binnen jails draaien.
- read_msgbuf: Schakelt het lezen van de kernelberichtenbuffer uit voor niet-geprivilegieerde gebruikers. Dit voorkomt dat niet-geprivilegieerde gebruikers dmesg(8) gebruiken om berichten uit de logbuffer van de kernel te bekijken.
- proc_debug: Schakelt de procesdebugfaciliteiten uit voor niet-geprivilegieerde gebruikers. Hiermee wordt een verscheidenheid aan ongeprivilegieerde inter-proces debugdiensten uitgeschakeld, waaronder sommige functionaliteiten van procfs, ptrace() en ktrace(). Let op dat dit ook debugtools zoals lldb(1), truss(1) en procstat(1) zal verhinderen, evenals sommige ingebouwde debugfaciliteiten in bepaalde scripttalen zoals PHP.
- random_pid: Randomiseer de processs IDs (PIDs) van processen.
- clear_tmp: Verwijder bestanden in /tmp bij het opstarten van het systeem.
- disable_syslogd: Schakelt het openen van de syslogd-netwerksocket uit. Standaard draait pfSense syslogd op een veilige manier met -s. Dit voorkomt dat de daemon luistert naar binnenkomende UDP-verzoeken op poort 514. Met deze optie ingeschakeld, zal syslogd in plaats daarvan draaien met -ss, wat voorkomt dat syslogd enige poort opent.
- disable_sendmail: Schakel de sendmail mail transport agent uit (i.e. je server kan dan geen mails versturen).
- secure_console: Zorgt ervoor dat de commandoprompt het root-wachtwoord vraagt bij het schakelen naar single-user modus.
- disable_ddtrace: DTrace kan draaien in een modus die invloed heeft op de draaiende kernel. Destructieve acties mogen niet worden gebruikt tenzij expliciet ingeschakeld. Gebruik -w om deze optie in te schakelen bij het gebruik van DTrace. Voor meer informatie, zie deze pagina.
- enable_aslr: Schakel adres lay-out randomisatie in.
Stap 10
Voeg optioneel extra gebruikers toe aan je pfSense-installatie.
Vul de gegevens in zoals gevraagd op het scherm. Bij een aantal opties geeft pfSense zelf al de standaard optie 'yes' of 'no' aan. Druk in dat geval op 'Enter' om de aanbevolen opties te accepteren.
Wanneer je geen gebruikers meer wil toevoegen kies je voor 'No' bij de vraag 'Add another user?' om verder te gaan.
Stap 11
Je keert nu terug in een overzichtsmenu van de eerder doorlopen stappen. Selecteer 'Exit' om de installatie van pfSense te voltooien of een van de beschikbare opties om naar wens nog aanpassingen te maken.
Je krijgt nogmaals de vraag of je nog aanpassingen wil maken, deze keer via command-line. Selecteer 'No' en druk op 'Enter' om de installatie af te ronden.
Stap 12
Je pfSense-VPS is nu geïnstalleerd en herstart automatisch, maar.. we zijn er nog niet helemaal. Na de herstart krijg je de vraag een VLAN te configureren, maar pfSense raadt aan dat later pas te doen. We volgen dit advies, dus kies hier voor 'n' om verder te gaan.
Stap 13
Vervolgens stel je de WAN-adapter in, oftewel de network interface voor je publieke internetverbinding. In het bold zie je de beschikbare network interfaces. Bij een VPS op één private network is simpelweg de regel dat de eerste interface je WAN-interface is en de tweede de LAN-interface (van het private network).
Type de naam van de interface 'vtnet0' en druk op 'Enter'.
De eerste interface is je WAN-interface en de tweede de LAN-interface van het private network. Indien de VPS onderdeel uitmaakt van meerdere private netwerken, is de derde interface (meestal vtnet2) de interface voor het tweede private netwerk waar de VPS aan is toegevoegd, de vierde (meestal vtnet3) die voor het derde private netwerk, etc.
Stap 14
- Gebruik je een private network met daarin opgenomen een pfSense firewall en minimaal één VPS met een browser? Geef dan de naam van je LAN interface op, namelijk 'vtnet1' en ga door met stap 15.
- Gebruik je een private network met een pfSense firewall zonder een VPS met een browser? Laat dan deze optie leeg en druk op 'Enter' om verder te gaan. Ga daarna door naar stap 21.
- Is je VPS nog niet aan een Private Network toegevoegd? Doe dat dan na de installatie, laat de optie in deze stap leeg en druk op 'Enter' om verder te gaan. Ga daarna door naar stap 21.
De reden waarom dit belangrijk is, is dat als je hier een LAN interface opgeeft, dan zal de pfSense-webinterface enkel via je Private Network benaderbaar zijn en niet via je publieke IP-adres. Dit kun je overigens eenvoudig tijdelijk aanpassen (maar is wel onveilig) en leggen we uit in onze handleiding 'pfSense: webGUI toegang via publiek internet'.
Stap 15
Je komt nu in het shell menu van pfSense terecht. pfSense geeft je LAN interface automatisch een IP-adres. Er is een goede kans dat dit automatische IP-adres in een ander subnet is opgenomen dan de andere VPS'en in je private network. Kies daarom voor optie '2' om statisch een IP-adres in te stellen.
Stap 16
Kies de interface waar je het IP-adres van wil aanpassen, in dit geval '2' voor je LAN interface.
Stap 17
Geef een nieuw IP-adres op voor je LAN interface dat in hetzelfde subnet valt als andere VPS'en in je private network, bijvoorbeeld 192.168.0.1
In ons voorbeeld kiezen we voor 192.168.0.5: er waren al een aantal VPS'en in onze testomgeving die de eerste adressen in gebruik hebben en 192.168.0.5 valt binnen hetzelfde subnet als de LAN IP-adressen van de andere VPS'en op ons test private network (met IP-adressen 192.168.0.1, 192.168.0.2 etc).
Stap 18
Over subnet gesproken: pfSense vraagt je nu om de 'subnet mask'. Bij twijfel kun je deze cheatsheet raadplegen. In onze test-setup kiezen we voor 27 (maximaal 32 hosts). pfSense kiest bij een automatische configuratie zelf voor 24.
Simpel gezegd bepaalt het subnet mask hoeveel IP-adressen binnen een netwerk vallen. Met een subnet mask van /27, oftwel 192.168.0.0/27, (zie de cheat sheet) kun je 32 hosts gebruiken. Stel dat je 32 VPS'en de IP's 192.168.0.1 t/m 192.168.0.32 geeft, dan bevinden die zich allemaal binnen hetzelfde /27 subnet. Een VPS die daarna erbij komt met 192.168.0.33 zou daar niet in passen.
Stap 19
Druk twee keer op 'Enter' om geen gateway en IPv6-adres op te geven en kies voor 'n' om geen DHCP te gebruiken voor je LAN interface: het hele punt van de vorige stappen was juist om je netwerkconfiguratie statisch in te stellen.
Stap 20
Tot slot krijg je de vraag of je HTTP in plaats van HTTPS wil gebruiken voor de webinterface van pfSense. Kies hier voor 'n' en druk op 'Enter'.
Je keert nu terug naar het shell-menu van pfSense.
Je kunt nu inloggen in de webinterface van pfSense. Hiervoor ga je, afhankelijk van je keuze in stap 14, of in je internetbrowser naar het publieke IP-adres van je pfSense-VPS (zichtbaar achter vtnet0 in het shell-menu), of open je een browser op een VPS in hetzelfde private network als je pfSense-VPS en ga je naar het LAN IP-adres (zichtbaar achter vtnet1 in het shell-menu).
Je wordt eerst gegroet door een waarschuwing (deze kan per browser er iets anders uit zien). Deze waarschuwing krijg je te zien omdat er (uiteraard) geen SSL-certificaat is gekoppeld aan het IP-adres van je VPS en ook nog niet aan een eventuele (sub)domeinnaam (zie de aanvullende tip onderaan deze stap).
Klik op 'Advanced'/'Geavanceerd' > 'Accept the Risk and Continue' / 'Het risico aanvaarden en verder gaan'.
Aanvullende tip: je kunt de DNS van een (sub)domein aan het publieke IP-adres van je firewall koppelen, bijvoorbeeld pfsense.voorbeeld.nl en dan in je browser het subdomein gebruiken in plaats van het IP-adres. Voor een private network met een eigen DNS-server, bijvoorbeeld bij een Windows-netwerk, kun je een lokaal subdomein instellen zoals 'pfsense.transip.local' (zie deze handleiding voor het instellen van DNS-record op een Windows DNS-server). Let wel dat je eerst via het LAN IP-adres de stappen hieronder moet doorlopen voor dit werkt.
Stap 22
Login met de volgende gegevens (het wachtwoord pas je verderop aan):
- gebruikersnaam: admin
- wachtwoord: pfsense
Stap 23
Je wordt nu gegroet door (nog) een configuratiewizard. Negeer de wachtwoordwaarschuwing en klik op 'Next' om te beginnen.
Stap 24
Vul op deze pagina de hostname, het bijbehorende domein van je pfSense-firewall in en de Primaire en Secondaire DNS Servers.
- Het is handig om hier een publiekelijk bereikbaar domein voor te gebruiken zoals pfsense.voorbeeld.nl. Beheer je je pfSense-firewall enkel via een private network dan is een private domein zoals pfsense.voorbeeld.local een goede optie.
- De Primaire en Secondaire DNS Server vind je terug in het TransIP-controlepaneel onder 'Beheren' > 'Netwerkinformatie'. Op moment van schrijven zijn dit 195.8.195.8 en 195.135.195.135
Stap 25
pfSense gebruikt out-of-the-box een aantal servers om de klok van je servers te synchronizeren. Deze zijn gekoppeld aan het adres '2.pfsense.pool.ntp.org'. Optioneel kun je meer servers opgeven door die met spaties te scheiden, bijvoorbeeld: 0.pfsense.pool.ntp.org 1.pfsense.pool.ntp.org 2.pfsense.pool.ntp.org.
Stap 26
De 'Configure WAN Interface'-pagina kun je direct overslaan. Scroll helemaal naar onderen en klik op 'Next'.
Het MAC Address kun je aanpassen maar is alleen relevant als je dat wil spoofen, de MTU en MSS worden automatisch ingevuld, de primaire adapter hebben we via DHCP ingesteld en alle overige instellingen zijn ISP-afhankelijk, en kun je op het TransIP-netwerk negeren.
Stap 27
De LAN-configuratie zie je doorgaans alleen als je tijdens de configuratie in de shell (stap 14) gekozen hebt voor het configureren van een LAN Interface. Je krijgt dan op deze pagina een bevestiging van je gekozen instellingen. Klik op 'Next' om direct verder te gaan.
Let op: ben je na stap 14 direct naar stap 21 gegaan en is jouw pfSense-VPS opgenomen in een Private Network? Configureer dan hier handmatig een LAN IP-adres en Subnet Mask.
Stap 28
Het is niet heel veilig om het wachtwoord 'pfsense' te gebruiken voor het 'admin'-account. In deze stap pas je die dan ook aan naar een veiliger wachtwoord.
Stap 29
Klik op 'Reload' om de wijzigingen tot zoverre te verwerken en verder te gaan.
Stap 30
Stap 8 vliegt automatisch voorbij en je komt dan ook automatisch bij de finishlijn terecht: Klik op 'Check for updates' om te controleren of er nieuwe updates beschikbaar zijn voor pfSense en daarna op 'Finish' om de wizard af te ronden.
Stap 31
Je krijgt tot slot nog een copyright & trademark te zien. Neem deze door en sluit hem daarna.
Aanvullende stappen & documentatie
Je komt nu in het pfSense dashboard terecht en daarmee zijn we aan het eind gekomen van deze installatiehandleiding. Maar... hoe nu verder?
Als eerste raden we aan om op alle servers in hetzelfde private network als je pfSense-firewall, om de LAN default gateway (op de lege plek achter 'Default Gateway' in stap 14 van deze handleiding) te verwijzen naar het LAN IP-adres van je pfSense-firewall. Dit is bijvoorbeeld belangrijk wanneer een remote computer via je pfSense-firewall verbindt en dan probeert te verbinden met een server op je private network: Simpel gezegd weet je server dan dat die verkeer terug moet sturen via je pfSense-firewall.
Tot slot raden we aan om ook de volgende handleidingen te raadplegen:
- Publiek verkeer via pfSense doorsturen met portforwarding
- Een OpenVPN-server opzetten
- pfSense best practise tips
- pfSense firewall regels aanmaken
Let op: heb je in stap 14 gekozen voor een installatie zonder private network of tweede VPS met beschikking tot een browser? Doorloop dan nu eerst deze handleiding om je LAN Interface te configureren.
Neem ook een kijkje in de documentatie van pfSense voor geavanceerde opties.
Mocht je aan de hand van dit artikel nog vragen hebben, of een verzoek voor meer documentatie, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.