pfSense is een krachtig open-source router/firewall besturingssysteem gebaseerd op FreeBSD. Uit de doos komt pfSense met enkele robuuste tools waarmee je een veilig netwerk kunt opbouwen.
Maar pfSense stelt je ook in staat om pakketten te installeren vanuit zijn officiële repository, om nog meer functionaliteit aan je systeem toe te voegen.
pfSense is een krachtig open-source router/firewall besturingssysteem gebaseerd op FreeBSD. Uit de doos komt pfSense met enkele robuuste tools waarmee je een veilig netwerk kunt opbouwen.
Maar pfSense stelt je ook in staat om pakketten te installeren vanuit zijn officiële repository, om nog meer functionaliteit aan je systeem toe te voegen.
Een van die pakketten heet Squid. Squid is een caching webproxy die ook inhoudsfiltering kan doen. Laten we dat een beetje uitpakken en wat context geven rond proxy servers en hun gebruik.
Gerelateerde gids: Hoe IP Filtering en DNS Blackholing op pfSense In te Stellen met pfBlockerNG
Ik besprak de rol van proxy servers in het cachen van inhoud en filtering, evenals hoe je Squid en SquidGuard op pfSense configureert om advertenties te blokkeren.
Door dit te doen, kunnen gebruikers de beveiliging en privacy verbeteren, het bandbreedteverbruik verminderen en de laadtijden van webpagina’s versnellen.
Een proxy server is een tussenliggende server die zich bevindt tussen jouw apparaat (laptop, tablet, smartphone) en je uiteindelijke internetbestemming (whateverwebsite.com).
Je verkeer verlaat je apparaat, verbindt zich met de proxy server, en gaat vervolgens naar zijn uiteindelijke bestemming vanaf de proxy server.
Waarom zou je je verkeer door de proxy server sturen? Daar zijn een paar redenen voor. Een ervan is om inhoud te cachen. Dit betekent dat de proxy server sommige inhoud lokaal opslaat, zodat de volgende keer dat een client die inhoud aanvraagt, het wordt geserveerd vanuit de cache in plaats van het opnieuw van het internet te downloaden.
Dit versnelt je internetbrowsen omdat het ophalen van inhoud uit de lokale cache van de proxy veel sneller is dan het opnieuw initiëren van een download via het internet.
Een ander doel is inhoudsfiltering. Inhoudsfiltering betekent het blokkeren van verbindingen naar bepaalde domeinen of IP-adressen. Organisaties die de toegang tot Facebook blokkeren, voeren bijvoorbeeld inhoudsfiltering uit.
Een andere toepassing van inhoudsfiltering is het blokkeren van advertenties. Online advertenties zijn irritant. Ze schenden je privacy, verbruiken je bandbreedte, en zijn een belangrijke vector voor malware. Er zijn uitstekende redenen om ervan af te willen komen. En dat is wat we in dit artikel gaan doen met Squid.
We gaan je laten zien hoe je Squid en SquidGuard (SquidGuard is een extra component van Squid dat lijstgebaseerde filtering mogelijk maakt) op pfSense configureert om advertenties te blokkeren op al je apparaten.
Deze gids gaat ervan uit dat je een werkend pfSense-systeem hebt geconfigureerd met werkende WAN- en LAN-interfaces en dat je GUI-toegang hebt.
Het eerste wat we moeten doen, is de Squid proxy server installeren.
1. Selecteer vanuit de bovenste menu’s Systeem > Pakketbeheer. Je wordt naar het tabblad Geïnstalleerde pakketten van het Pakketbeheer gebracht.
2. Selecteer Beschikbare Pakketten. De lijst met beschikbare pakketten wordt weergegeven.
3. Scroll naar beneden tot je squid ziet en klik op Installeren. Het venster Pakket Installeren wordt weergegeven.
4. Klik op Bevestigen. De installatie begint.
5. Zodra de installatie is voltooid, moet je Succes onderaan het venster Pakket Installeren zien. Squid is nu geïnstalleerd.
Nu Squid is geïnstalleerd, gaan we onze nieuwe proxyserver configureren.
Ga via de bovenste menu’s naar Services > Squid Proxy Server. Je wordt geleid naar het Algemeen tabblad van de Squid-instellingen.
We gaan Squid stap voor stap configureren. Ons doel is het opzetten van ad-blocking met Squid, dus we gaan niet elk submenu behandelen. Alleen degenen die we nodig hebben voor ons doel. Instellingen die niet worden genoemd, moeten op hun standaardwaarden blijven staan.
Voordat we Squid configureren, moeten we eerst naar het Local Cache-tabblad gaan en de standaardinstellingen voor lokale caching accepteren door onderaan de pagina op Opslaan te klikken.
Als je probeert de proxy te configureren zonder de standaardinstellingen voor lokale cache te accepteren, krijg je het verzoek dit te doen en verlies je de instellingen die je tot nu toe hebt geconfigureerd.
Als je later je lokale cache-instellingen wilt aanpassen, kun je dat doen vanuit het Squid-instellingen Lokale Cache-tabblad.
Proxy-servers kunnen op twee manieren werken: transparant of expliciet. In transparante modus is er geen configuratie nodig op je cliënten (computer, tablet, smartphone, enz.) – hun verkeer wordt transparant geproxyd.
Echter, in deze modus wordt alleen HTTP-verkeer over poort 80 geproxyd, niet HTTPS-verkeer (tenzij je Man In the Middle SSL-filtering configureert – hierover later meer). Aangezien de meeste internetverkeer HTTPS gebruikt, heeft de transparante modus een beperkte reikwijdte voor ad-blocking, maar het kan nog steeds nuttig zijn voor caching.
De expliciete modus vereist dat je elke client configureert om “toegang aan te vragen” tot de proxy. En in deze modus wordt al het TCP-internetverkeer geproxyd (HTTP en HTTPS). Dit is wat we in deze handleiding willen. Dus we gaan de transparante modus in deze handleiding niet inschakelen, maar je kunt beide modi zonder problemen gebruiken.
Zoals ik hierboven al vermeldde, is het mogelijk om HTTPS-verbindingen transparant te proxyen. Maar om dit te doen, moet je in feite HTTPS breken.
Squid kan het juiste SSL-certificaat van de website die je probeert te bereiken vervangen door zijn eigen certificaat, de verbinding ontcijferen en opnieuw versleutelen met zijn certificaat. Dit stelt je in staat om SSL-verbindingen te filteren, maar breekt ook de HTTPS-validatie die in je browser moet plaatsvinden.
Ik raad Man In the Middle SSL-filtering niet aan, behalve voor specifieke doeleinden door mensen die begrijpen wat ze doen. We gaan deze functie ook uitschakelen.
De instellingen hier zijn optioneel, maar zullen de hoeveelheid informatie beperken die in de Squid-headers wordt weergegeven.
Om te zien wat we expliciet kunnen blokkeren met Squid, moeten we naar het ACLs tabblad gaan.
We zien dat we meerdere vakjes hebben om verschillende elementen te definiëren die Squid moet filteren. Laten we naar elk daarvan kijken.
Toegestane Subnetten
Je kunt hier extra subnetten toevoegen om via de Squid proxy te gaan. Dit is handig voor subnetten die niet zijn gekoppeld aan een interface op het systeem, zoals IPSec. Geen noodzaak om hier in ons voorbeeld iets toe te voegen.
Onbeperkte IP’s
De hier vermelde IP-adressen zullen niet worden gefilterd door de proxyserver.
Geblokkeerde Host Adressen
De hier vermelde IP-adressen mogen de proxyserver niet gebruiken, zelfs als hun subnet is toegestaan.
Whitelist
De domeinen die in het vak Whitelist worden vermeld, zijn toegankelijk voor alle hosts die gemachtigd zijn om de proxy te gebruiken. De whitelist-vermeldingen hebben voorrang op de blacklist-vermeldingen.
Blacklist
De domeinen die in het vak Blacklist worden vermeld, zijn ontoegankelijk voor alle hosts die zijn toegestaan om de proxyserver te gebruiken.
Blokkeer User Agents
Dit vak is buitengewoon handig om specifieke applicaties te blokkeren voor toegang tot het internet. Wanneer een applicatie een verzoek naar het internet stuurt, bevatten de headers een veld dat wordt aangeduid als de user agent. De user agent identificeert de gebruikte applicatie. Bijvoorbeeld, de user agent van Google Chrome is Chrome.
User agents werden oorspronkelijk gebruikt om de webbrowser te identificeren die een webverzoek naar een server maakt, zodat de server zou weten hoe de gevraagde gegevens in die specifieke browser te renderen. Maar nu wordt hun gebruik veralgemeend naar elke app die verzoeken over het internet maakt.
Om een user agent in Squid te blokkeren, moet je het vooraf laten gaan door een “^” (zonder aanhalingstekens).
Dus, het vermelden van ^Chrome in Squid’s Blokkeer User Agent vak zal Google Chrome blokkeren van toegang tot het internet.
^Mozilla vermelden zou Firefox blokkeren van toegang tot het internet. ^WhatsApp vermelden zou WhatsApp blokkeren van toegang tot het internet.
User agents zijn heel specifiek en zijn niet altijd zo eenvoudig als de voorbeelden hierboven. Je moet de exacte user agent kennen die een app gebruikt om deze hier te kunnen blokkeren.
Blokkeer MIME Types (alleen antwoord)
MIME in MIME types staat voor Multipurpose Internet Mail Extensions, die worden gebruikt om bestandstypen binnen URL’s te definiëren. MIME-types zijn als volgt gestructureerd:
type/subtype
Dus, het toevoegen van audio/mpeg aan het Blokkeer MIME Types vak zou het downloaden van mp3-bestanden blokkeren. Het toevoegen van image/png aan het Blokkeer MIME Types vak zou het downloaden van png-afbeeldingen blokkeren.
Zoals het geval was met user agents, zijn MIME types zeer specifiek. Je moet het exacte type en subtype invoeren voor de filtering om in Squid te werken.
Laten we doorgaan en onze Squid-installatie testen om ervoor te zorgen dat alles correct werkt voordat we verder gaan met de volgende stappen. We zullen een domein invoeren in het vak Blacklist om te zien of Squid het zal blokkeren zoals verwacht.
1. Vanuit het tabblad ACLs van de Squid Proxy Instellingen, voer facebook.com in in het vak Blacklist.
2. Klik onderaan de pagina op Opslaan.
3. Ga naar het tabblad Algemeen van de Squid Proxy Instellingen.
4. Vink het vakje Squid Proxy Inschakelen aan.
5. Klik onderaan de pagina op Opslaan.
Onze proxyserver is nu ingeschakeld en geconfigureerd om facebook.com te blokkeren.
We zullen snel onze webbrowser configureren om via de proxyserver te gaan om te zien of het goed werkt. Als alles correct is geconfigureerd, zou ik geen toegang moeten hebben tot facebook.com.
1. Klik op het Instellingen icoon rechtsboven in de browser en selecteer Voorkeuren (dit wordt Opties genoemd in Windows). Je wordt naar de pagina Algemene Instellingen gebracht.
2. Scroll op de pagina Algemene Instellingen naar beneden naar de sectie Netwerkinstellingen, en klik op de knop Instellingen.
3. Selecteer Handmatige Proxy Configuratie.
4. Vul in het vak HTTP Proxy het IP-adres van je pfSense-box in. In mijn geval is dit 192.168.1.1.
5. Stel het veld Poort in op 3128.
6. Vink het vakje Gebruik deze proxy ook voor FTP en HTTPS aan.
7. Klik onderaan het venster op OK, en sluit de pagina Instellingen.
Nu, als ik probeer toegang te krijgen tot facebook.com (via HTTP of HTTPS), toont mijn browser de volgende pagina:
Dat is precies wat we willen.
We hebben nu dus een werkende proxyserver die geconfigureerd is om facebook.com te blokkeren. Fantastisch. Echter, als we advertenties willen blokkeren, moeten we duizenden en duizenden domeinen toevoegen aan Squid’s Blacklist vak. Niet bepaald optimaal…
Hier komt SquidGuard in beeld. SquidGuard is een aanvullende module voor Squid die lijstgebaseerde filtering aankan.
Met lijstgebaseerde filtering voer je de URL in naar een lijst met geblackliste domeinen, en alle domeinen die overeenkomen met de domeinen op de blacklist worden geblokkeerd.
Nu onze basis Squid proxyserver operationeel is, gaan we verder met het installeren en configureren van SquidGuard.
1. Selecteer vanuit de bovenste menu’s Systeem > Pakketbeheer. Je wordt naar het tabblad Geïnstalleerde Pakketten van de Pakketbeheerder gebracht.
2. Selecteer Beschikbare Pakketten. De lijst met beschikbare pakketten wordt weergegeven.
3. Scroll naar beneden totdat je SquidGuard ziet en klik op Installeren. Het venster Pakket Installeren wordt weergegeven.
4. Klik op Bevestigen. De installatie begint.
5. Zodra de installatie voltooid is, zou je Succes onderaan het venster Pakket Installeren moeten zien. SquidGuard is nu geïnstalleerd.
SquidGuard is nu geïnstalleerd. Laten we verder gaan en de lijstgebaseerde filtering configureren.
Selecteer vanuit de bovenste menu’s Services > SquidGuard Proxy Filter. Je wordt naar het tabblad Algemeen van de SquidGuard Proxy Filter Instellingen gebracht.
Net als bij het configureren van Squid zelf, zullen we het configureren van Squid Guard sectie voor sectie doornemen. En opnieuw, we gaan niet alle sub-menu’s langs – alleen degenen die we moeten configureren om ons doel te bereiken. Instellingen die niet genoemd worden, moeten op hun standaardwaarden blijven.
Laat het vakje Inschakelen voor nu onaangevinkt.
Vink het vakje Advertenties opschonen aan.
Vink het vakje Blacklist aan.
Voer de volgende URL in het veld Blacklist URL in: https://shallalist.de/Downloads/shallalist.tar.gz. Dit is onze blacklist URL. SquidGuard zal deze lijst downloaden en ons voorzien van verschillende categorieën van domeinen die we kunnen kiezen om toe te staan of te blokkeren. Het is gratis beschikbaar en wordt aangeboden door Shalla Secure Services. Er zijn andere lijsten die je kunt gebruiken, maar veel daarvan zijn betaald. Ik gebruik Shallalist al vele jaren en het werkt heel goed en wordt regelmatig bijgewerkt, dus ik raad het aan.
Klik onderaan de pagina op Opslaan.
1. Ga naar het tabblad Blacklist van de SquidGuard Proxy Filter Instellingen. De URL van de blacklist wordt getoond.
2. Klik op de knop Downloaden. Het downloaden en analyseren van de blacklist begint.
3. Zodra dit voltooid is, zie je onderaan het venster Blacklist update Log de tekst Blacklist update voltooid staan.
1. Ga naar het tabblad Common ACL van de SquidGuard Proxy Filter Instellingen.
2. Klik op het + symbool naast Target Rules List. De Target Rules List wordt weergegeven.
3. Het eerste item in de lijst is adv, wat staat voor advertenties. Selecteer Weigeren uit het dropdown-menu aan de rechterkant.
4. Ga verder met het blokkeren van alle andere categorieën van inhoud die je wilt blokkeren.
5. Zodra je alle categorieën die je wilt blokkeren hebt geweigerd, ga je naar de onderkant van de lijst en selecteer je Toestaan uit het dropdown-menu naast Default Access.
6. Klik onderaan de pagina op Opslaan.
7. Ga terug naar het tabblad Algemeen van de SquidGuard Proxy Filter Instellingen, vink het vakje Inschakelen aan en klik onderaan de pagina op Opslaan.
8. Klik, eenmaal opgeslagen, op de knop Toepassen.
We hebben nu Squid geconfigureerd met blacklist filtering. Als ik mijn browser gebruik die al is ingesteld om de proxy te gebruiken om een webpagina te benaderen die bekend staat om het weergeven van advertenties, zouden die nu weg moeten zijn.
Met Squid ingeschakeld:
Met Squid uitgeschakeld:
Het werkt. Dat is geweldig. Maar zoals het nu is ingesteld, zal Squid alleen het verkeer van mijn browser onderscheppen; vandaar dat ik alleen in mijn webbrowser zal profiteren van Squid’s advertentieblokkering.
Ik zal je laten zien hoe je je gehele apparaat kunt configureren om al zijn verkeer door de proxy server te sturen. Dit stelt je in staat om te profiteren van advertentieblokkering in je apps, in plaats van alleen in je browser. Ik zal je laten zien hoe je dit kunt doen op macOS, Windows, Linux, iOS, en Android.
Laten we de handmatige proxy-instellingen die we in Firefox hebben geconfigureerd om onze verbinding te testen, ongedaan maken voordat we ons client-apparaat instellen voor een systeembrede proxy-configuratie.
1. Ga terug naar de Netwerkinstellingen in Firefox en selecteer Systeem proxy-instellingen gebruiken. Hiermee geef je de browser opdracht om de systeeminstellingen als zijn proxy-instellingen te gebruiken. Dit is de standaardinstelling.
2. Klik op OK en sluit de pagina Instellingen.
1. Selecteer vanuit de app Systeemvoorkeuren, Netwerk.
2. Zorg ervoor dat je huidige verbinding is geselecteerd en klik rechtsonder op Geavanceerd.
3. Selecteer het tabblad Proxies.
4. Vink zowel de opties Webproxy (HTTP) als Beveiligde Webproxy (HTTPS) aan.
5. Voer je pfSense box IP-adres en de proxy-poort in—192.168.1.1 en 3128 in mijn geval.
6. Klik op OK en Pas toe.
1. Open de app Instellingen (sneltoets Win+I op het toetsenbord).
2. Ga naar Netwerk en Internet.
3. Selecteer het tabblad Proxy.
4. Scroll naar beneden naar het gedeelte Handmatige proxy setup.
5. Schakel de optie Gebruik een proxyserver in.
6. Voer je pfSense box IP-adres en de proxy-poort in – 192.168.1.1 en 3128 in mijn geval.
7. Klik op Opslaan.
1. Selecteer vanuit het venster Netwerkinstellingen, Netwerkproxy.
2. Selecteer Handmatig uit het dropdownmenu Methode.
3. Voer je pfSense box IP-adres en de proxy-poort in – 192.168.1.1 en 3128 in mijn geval – naast HTTP Proxy en HTTPS Proxy.
4. Sluit het venster Netwerkinstellingen.
1. Ga naar Instellingen > WiFi, tik op het “i”-symbool rechts van je WiFi-verbinding.
2. Scroll naar beneden en selecteer Proxy instellen.
3. Selecteer Handmatig.
4. Voer je pfSense box IP-adres en de proxy-poort in – 192.168.1.1 en 3128 in mijn geval – naast Server en Poort.
5. Sluit de app Instellingen.
1. Ga vanuit de app Instellingen naar WiFi.
2. Houd de momenteel verbonden WiFi-netwerk ingedrukt.
3. Selecteer Netwerk wijzigen.
4. Breid de Geavanceerde opties uit.
5. Selecteer Handmatig uit het dropdownmenu Proxy.
6. Voer je pfSense box IP-adres en de proxy-poort in – 192.168.1.1 en 3128 in mijn geval – onder Proxy-hostnaam en Proxy-poort.
7. Klik op Opslaan.
Merk op dat om de proxy werkend te krijgen over mobiele data op iOS of Android, je een mobiel apparaatbeheer (MDM) profiel moet installeren, wat buiten de reikwijdte van deze huidige handleiding valt. Misschien behandelen we dit in de toekomst.
Dus je hebt nu een werkende proxyserver met een blacklist-filter waarmee je advertenties kunt blokkeren op al je apparaten. Je hebt je beveiliging en privacy verbeterd door irritante advertenties die je gegevens stelen, te verwijderen.
Je zult ook minder bandbreedte verbruiken. En je webpagina’s laden sneller omdat advertenties niet hoeven te worden gedownload en weergegeven. Maar ook omdat Squid inhoud voor je cached. Dus, inhoud die je vaak opvraagt, zal sneller laden.
Goed spul. Blijf veilig.