Security

Upgrade je thuisnetwerk met je eigen pfSense firewall (deel 2)

In deel 1 van de serie Upgrade je thuisnetwerk met je eigen pfSense firewall heb je kunnen lezen wat pfSense is en wat je nodig hebt om zelf aan de slag te kunnen. Inmiddels heb ik de Protectli Vault FW4B uitgepakt en aangesloten en is het tijd om de installatie van pfSense uit te voeren.

pfSense downloaden en installeren

De software van pfSense is gratis te downloaden en is opensource. Afhankelijk van wat voor hardware je hebt samengesteld kan de software al reeds geïnstalleerd zijn. Bij Protectli is dit ook mogelijk, maar aangezien ik het liever zelf wilde doen heb ik hier niet voor gekozen. Nu is de installatie van pfSense echt enorm eenvoudig, dus dat is geen probleem.

Protectli-Vault-FW4B-tech365-002

De software wordt publiekelijk aangeboden op de website van pfSense om te downloaden. Er zijn een aantal verschillende opties beschikbaar. Het meest eenvoudig is om het image te downloaden en op een USB-stick te zetten. Op het moment dat ik dit schrijf is versie 2.5.2 de meest recente versie. Er is inmiddels een 2.6, echter is dit nog geen finale versie. Hier kies ik dan ook bewust niet voor. Na het downloaden van het image is het enkel een kwestie om van het ISO-bestand een opstartbare USB-stick te maken. Ik maak gebruik van de gratis tool Balena Etcher, aangezien ik die al op mijn computer heb staan voor mijn Raspberry Pi. Het enige dat je hoeft te doen is het ISO-bestand en de USB-stick te selecteren en de rest gaat vanzelf.

De eerste stap is het plaatsen van de USB-stick in mijn Protectli Vault FW4B. Tijdens het opstarten wordt de USB-stick direct herkend en is de installatie niets meer dan een druk op de knop. De installatie loopt vervolgens door en de Vault herstart. Op dit moment kan de USB-stick worden verwijderd en is succesvol de software geïnstalleerd op de firewall. Had ik gelijk toen ik zei dat het echt enorm simpel was? Nu is de firewall geschikt om verder te gaan configureren, want er moeten nog een paar instellingen worden aangepast voordat hij bruikbaar is.

Opstarten van pfSense console

Configureren netwerkinterfaces

Als pfSense blanco geïnstalleerd is dan weet het apparaat nog vrij weinig over welke aansluiting welk doel zal gaan dienen. Hiermee doel ik op bijvoorbeeld “WAN” voor de aansluiting van de inkomende internetverbinding en “LAN” voor het interne netwerk. Het onderliggende apparaat kent echter deze benamingen niet als technische namen voor de hardware. Mijn Protectli Vault is voorzien van vier netwerkinterfaces (WAN, LAN, OPT1 en OPT2) die door het besturingssysteem worden herkend als igb0 tot en met igb3. Wordt het dan nu ingewikkeld? Nee hoor, we moeten pfSense alleen even uitleggen welke interface welke rol gaat vervullen.

In het installatie menu kies ik voor optie 01 Assign Interfaces en wijs vervolgens WAN toe aan igb0, LAN aan igb1, OPT1 aan igb2 en OPT2 aan igb3. Vanaf nu zal pfSense zelf de vertaling doen zodat wanneer ik iets doe met “LAN” het systeem begrijpt dat het netwerkverkeer dan bij fysieke interface igb1 thuishoort.

Tip vooraf: zorg dat de netwerkinterfaces al zijn aangesloten, dan is er een grote kans dat pfSense zelf dit deel voor zijn rekening neemt. Je ziet dan direct ook de IP-adressen behorende bij de netwerken.

Om zeker te zijn dat mijn WAN en LAN goed werken kies ik nog even voor optie 7: Ping host. Een simpele ping naar Cloudflare (1.1.1.1) laat mij zien dat de uitgaande internetverbinding over WAN goed werkt.

Basisconfiguratie pfSense

De software van pfSense is geïnstalleerd, de netwerkinterfaces toegewezen, tijd voor het echte werk! Bij het toewijzen van de netwerkinterfaces was zichtbaar in welke IP-reeks het LAN beschikbaar was. Standaard zorgt pfSense ervoor dat wanneer je een apparaat aansluit op deze poort, voor het gemak je laptop, je automatisch een IP-adres krijgt toegewezen. De gateway van het interne netwerk geeft  toegang tot de web interface van pfSense, meestal is dit 192.168.1.1. Door dit adres simpelweg in een browser in te voeren verschijnt de web interface van pfSense.

Aangezien dit nog de standaard installatie is van pfSense is hij voorzien van een standaard gebruikersnaam en wachtwoord. Het aanmelden kan, zolang je het wachtwoord niet aanpast, met de gebruikersnaam: admin en het wachtwoord: pfsense.

De volgende stap is de installatie de standaard wizard die een aantal basisinstellingen toont om direct aan te passen in het systeem. Een nieuw wachtwoord voor het account van de beheerder, tijdserver (NTP), hostname en nog een aantal andere instellingen. Doorloop de wizard en pas de instellingennaar eigen wens aan.

pfSense-tech365-wizard-01

Als tijdserver (hier synchroniseert pfSense zijn interne tijd mee) gebruik ik 0.nl.pool.ntp.org. De juiste tijd is enorm belangrijk voor informatie in logbestanden, maar ook als je gebruik maak van tijdschema’s in je firewall regels. Aangezien mijn internetprovider geen extra configuratie vereist om verbinding te maken laat ik de WAN-interface op DHCP staan.

De basisinstellingen zijn afgerond. Je krijgt nu voor het eerst het dashboard van pfSense te zien. Het dashboard is aan te passen met extra widgets, zodat je altijd de voor jou relevante informatie te zien krijgt.

pfSense dashboard

Nu is het zaak om eerst te zorgen dat pfSense echt volledig bijgewerkt is met de laatste updates. Updaten kan eenvoudig vanuit de web interface onder System -> System Updates.

Als de wizard doorlopen is werkt de pfSense firewall over het algemeen al direct. Waarom “over het algemeen”? Het hangt af van het soort internetverbinding er gebruikt wordt. Standaard staat de WAN-interface zo ingesteld dat hij zelfstandig een IP-adres bij de internetprovider zal opvragen via DHCP. Als je internetverbinding op een andere wijze tot stand moet worden gebracht, zoals bij PPoE, dan moet je de configuratie eerst handmatig instellen.

Er zijn ook nog een aantal geavanceerde instellingen die je kan aanpassen. Als je gebruik maakt van een apparaat met ondersteuning voor AES-NI (cryptografische hardwareversnelling), zoals de Protectli Vault FW4B, dan is het belangrijk om de ondersteuning hiervoor te activeren. Dit kan bij System -> Advanced -> Miscellaneous door de waarde voor Cryptographic Hardware aan te passen.

Wat ook erg handig is, is het activeren van notificaties. Naast notificaties per e-mail kan je ook Telegram gebruiken of Pushover.

Firewall regels aanmaken

Al het verkeer in het interne netwerk is standaard toegestaan. Dit gebeurt door middel van een standaard regelset in het LAN-netwerk. Toegang tot de web interface wordt ook door middel van een speciale regel altijd mogelijk gemaakt. Hiermee kan je jezelf niet buitensluiten uit de firewall.

Het verschilt per firewall leverancier op welke wijze er gekeken wordt naar het configureren van firewall regels. Het is misschien logisch wat ze moeten doen en hiermee voor alle oplossingen hetzelfde, maar de wijze van configureren verschilt zo nu en dan wel. pfSense bekijkt firewallregels vanuit het oogpunt van inkomend naar het netwerk toe. Dus als het netwerk “WAN” neemt, dan bepalen de regels welk verkeer er toegestaan is naar deze interface toe. Wil je connectie van buiten naar binnen toestaan, dan maak je een bijbehorende firewallregel voor het WAN-netwerk.

Het is niet zo spannend als je enkel LAN en WAN hebt, maar wanneer je additionele netwerken hebt wordt het belangrijk om de juiste firewallregels aan te maken. Een nieuw netwerk (buiten LAN) heeft namelijk standaard geen firewallregels en staat dus geen verkeer toe naar het netwerk. Stel je maakt gebruik van de optionele OPT1-aansluiting en besluit hier een specifiek apparaat aan te verbinden. Bijvoorbeeld een Raspberry Pi. Het doel is om vanuit het LAN-netwerk verbinding te kunnen maken naar je Pi. Het is dan noodzakelijk om een firewallregel in het OPT1-netwerk aan te maken die zegt: sta verkeer toe vanuit LAN naar de Raspberry Pi over poort 22. Zonder firewallregel kan je simpelweg niet verbinden naar het apparaat. En hier ligt ook direct de kracht van een dergelijke opzet, je gaat namelijk werken op basis van bewust toestaan.

Bij het aanmaken van firewallregels is het belangrijk om ze zo specifiek mogelijk in te stellen. Denk hierbij aan de bron, de bestemming, benodigde protocollen, poorten en extra parameters zoals een tijdschema of bandbreedtebeperking. je meerdere regels in een netwerk, overweeg dan het gebruik van de separatoren. Hiermee kan je wat meer structuur en logica aanbrengen in je regels.

pfSense-tech365-rules-05

Virtuele netwerken (VLANs) aanmaken en configureren

Virtuele netwerken? Is dat weer anders dan de netwerkinterfaces op de pfSense firewall? Jazeker! Een virtueel netwerk, ook wel VLAN genoemd, is een netwerk dat je kan gebruiken voor het scheiden van netwerken. Je segmenteert een netwerk in verschillende VLANs. Enerzijds omdat het misschien een logische scheiding betreft, anderzijds kan het ook vanuit beveiligingsoogpunt interessant zijn. Een virtueel netwerk bestaat, maar hoeft niet aan een fysieke interface te hangen. Om hier wat meer context aan te geven schets ik een scenario waarbij je twee fysieke aansluitingen gebruikt, maar verschillende netwerken maakt.

Stel je hebt wat domotica in huis en wat apparaten rondo audio-video. Het liefst scheiden we dit soort apparaten, zodat alles in een eigen container met elkaar kan communiceren. Hiermee is je slimme deurbel afgezonderd van je computer of laptop en heeft je Playstation niets te zoeken geen directe communicatie met je slimme thermostaat. Klinkt misschien gek, maar waarom zou je al deze apparaten met elkaar in contact laten staan als dat niet nodig is? Door een VLAN aan te maken voor je domotica en een voor je audio-video apparatuur kan je deze netwerken op je pfSense beheren en daar ook bepalen welke communicatie er van en naar deze apparaten mogelijk is. Zo beperk je ook eventueel het teveel dat een apparaat op je netwerk doet, zonder dat je het misschien zelf weet.

Om verbinding te maken met je slimme deurbel kan je in pfSense vervolgens zeggen: mijn smartphone mag verbinden naar de deurbel op poort 443, maar andere apparaten niet. De deurbel zelf mag alleen verbinden met het internet. De netwerken zijn virtueel, maar wel te koppelen aan een fysieke aansluiting. Hiermee kan je ook meerdere apparaten op die manier in een virtueel netwerk plaatsen. Wat je hiervoor verder moet doen, buiten pfSense, laat ik voor nu even buiten beschouwing.

In de web interface kan je zelf virtuele netwerken configureren. Het enige dat je hiervoor nodig hebt is een VLAN id. Dit is het nummer waarmee netwerkpakketten worden bestempeld als zijnde het betreffende VLAN. Zo kan je een TEST VLAN hebben met ID 10, je domotica in VLAN 20 zitten en audio-video in VLAN 30. Standaard zijn er geen VLANs geconfigureerd in pfSense en begin je met een schone lei.

Om het VLAN te koppelen aan een fysieke netwerkinterface van mijn Protectli Vault kan ik bij Assignment hem toevoegen als virtuele interface en een passende naam geven. Je ziet in het overzicht dat het nieuw aangemaakte VLAN gemarkeerd staat als Available network port en het is vanaf dit moment alleen een kwestie van op Add drukken.

Voordat het VLAN als interface gebruikt kan worden is is het noodzakelijk om het in te schakelen, vervolgens een omschrijving te geven en een statisch IP-adres. Vanaf dit moment zijn de VLANs ook bruikbaar in firewallregels, aangezien ze op dezelfde wijze worden getoond als een fysiek netwerk.

Als je ook automatisch IP-adressen wil uitdelen in het VLAN, dan is het noodzakelijk om de DHCP-server service te voorzien van een configuratie. Ook hier is het slechts een kwestie van de service activeren op het VLAN, de reeks te configureren en bijbehorende extra zaken zoals DNS-servers.

Aliassen gebruiken voor eenvoudigere firewallregels

Mensen zijn nu eenmaal niet goed in het onthouden van IP-adressen, reeksen met poorten en ga zo maar door. Dit is de reden waarom we voor een website over het algemeen het IP-adres niet hoeven te weten, maar gewoon de naam gebruiken. Bij firewallregels is het ook soms lastig om steeds weer te werken met een IP-adres, bijvoorbeeld van de eerdergenoemde Raspberry Pi, in plaats van het beestje gewoon een naam te geven. Dat heet een alias.

Stel dat het IP-adres verandert, dan hoef je enkel maar het IP-adres van de alias aan te passen en niet alle firewallregels los. Het is dus niet alleen handiger om te onthouden, maar ook makkelijk bij een wijziging. Voor poorten geldt hetzelfde, maar hier kan je het ook inzetten om bijvoorbeeld een groep poorten samen te voegen.

Stel dat ik voor mijn Raspberry Pi gebruikmaak van SSH, HTTP en FTP dan kan ik een alias aanmaken “Raspberry Pi toegang” met hierin poort 22, 80 en 21. In mijn firewallregel kan ik dan simpelweg de poortgroep-alias noemen en hoef ik niet alle regels los te maken. Moet er een poort bij, dan is het simpelweg toevoegen aan de alias.

Standaard zijn er geen aliassen aanwezig bij een nieuwe installatie. Logisch natuurlijk, want er is nog niets om aan te maken.

Als voorbeeld maak SynologyNASPoorten aan, een alias voor een groep met relevante poorten voor mijn NAS. Zoals je kan zien is het kinderlijk eenvoudig om op deze manier om te gaan met een poort-groep, aangezien je enkel de alias hoeft bij te werken.

Ga je zelf aan de slag met pfSense, begin dan direct met het gebruik van aliassen. Je zal er geen spijt van krijgen!

Tijschema’s en Traffic Shapers

Ik schreef net al even iets over bandbreedte beperking en tijdschema’s. Dit zijn eigenschappen die je bijvoorbeeld op een firewallregel kan configureren. Stel je voor dat je toegang enkel mogelijk wil maken tijdens kantooruren, dan is een tijdschema koppelen aan de regel de oplossing. Hetzelfde geldt ook voor bandbreedte beperkingen. Bijvoorbeeld om te bepalen dat communicatie van VLAN 10 naar VLAN 20 maar 10Mbit/s mag gebruiken, zodat je geen overlast veroorzaakt. Voor thuis zal je dit niet veel gebruiken, maar het is handig om te weten dat het mogelijk is.

Allereerst is het zaak om een tijdschema aan te maken. Op basis van de instellingen die je kiest wordt de firewallregel straks beperkt. In het voorbeeld heb ik een schema aangemaakt voor tijdens kantoortijden en een Traffic Shaper om de bandbreedte te beperken tijdens dit schema.

Als laatste is het zaak om het aangemaakte tijdschema te koppelen evenals het Traffic Shaper profiel. Dit is slechts een voorbeeld van hoe het ingesteld kan worden. Aangezien je zelf alle parameters kan kiezen zijn de mogelijkheden eindeloos.

Deel 3: Logging, monitoring en additionele services

In het derde deel van de serie neem ik je verder meer langs de mogelijkheden voor logging, monitoring en additionele services die je bovenop de kern van pfSense kan gebruiken. Tot snel!

Martijn

Martijn is naast eigenaar van tech365 ook werkzaam als IT Professional. Zijn passies zijn gadgets, fotografie en alles wat met automotive te maken heeft. Je kunt hem ook vinden als blogger op wielerblog www.lifebehindbars.nl

Gerelateerde berichten

Geef een reactie

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Back to top button