Sticky

Een externe firewall (gebruikers blog)


Reputatie 5
Badge
  • Gedreven Raadgever
  • 306 reacties

GebruikersBlog: Een externe firewall deel 1


Inleiding


Ik wilde eens wat schrijven over het in gebruik nemen van een externe firewall. Dit gaat dus niet over problemen met Ziggo, of apparatuur van hun 🙂. Misschien hebben de andere community leden er iets aan. Ik zal het in een aantal delen opsplitsen, en zal proberen wekelijks een deel hier te plaatsen. Het wordt geen installatie/configuratie handleiding, die zijn al wel op internet te vinden. Het is meer een verhaal over wat er bij komt kijken.

Eerst maar even het volgende: Wat is een firewall, en waarom zou je een externe firewall gebruiken terwijl er ook al een firewall in Windows en in het modem zit.
Een firewall is een systeem dat een netwerk afschermt van (meestal) het internet. Ongewenst verkeer wordt hierbij tegengehouden. Het doet dit gebruik te maken van een aantal regels. De regels kunnen vast zijn opgesteld, of door de gebruiker zijn gemaakt.

Modems hebben vaak ook een ingebouwde firewall, en soms heeft het security pakket op je computer er ook een. Je hebt dus al wel enige bescherming. Bovendien hebben de meeste modems/routers een NAT functie, waardoor men niet zomaar binnenkomt op het interne netwerk.

Om met het laatste te beginnen: NAT kan nuttig zijn als je maar één IPv4 adres van je provider krijgt, terwijl je meerdere computers wilt gebruiken. De DHCP in het modem of de router deelt de interne adressen uit.

Voorbeeld netwerk, het modem deelt de interne IP adressen uit

Van buiten af is niet te zien welke apparatuur er in het interne netwerk hangt. Dat scheelt veel, maar qua bescherming kan het beter. NAT is nooit bedoeld geweest voor security.

En de firewall in de PC of in het modem dan? Die worden ook steeds beter. Vaak beschermen ze al tegen bepaalde aanvallen. Ze laten meestal wel alles vanaf het lokale netwerk (LAN) door naar buiten.

Een externe firewall


Goed, ik heb dus het idee opgevat om een externe firewall te gaan gebruiken. Niet omdat ik het nodig heb, maar om wat van te leren. Er zijn kant en klare firewalls te koop, maar dat was niet de weg die ik wilde gaan. Ik wilde zelf iets bouwen, goedkoper, en hopelijk leuker.

Na wat zoeken en lezen op internet, ben ik uitgekomen op pfSense als software voor de firewall, en een mini-PC zonder ventilator als hardware.

Ik heb gekozen voor een PC Engines APU2C4 bordje met een AMD processor en 4 GB RAM. Het printkaartje is ca 10 x 10 cm en heeft geen ventilator nodig. De fabrikant levert een passende behuizing en een geschikte voeding. Het geheel is overigens ook kant en klaar te koop, en is dan circa EUR 20 tot 30 duurder, maar het assembleren stelt niet veel voor.

APU printkaart in behuizing met een SSD in de daarvoor bedoelde connector

Installatie opties


Het APU bordje kan zowel werken met een SD kaart als een SSD. Een SD kaartje is zo'n klein geheugen kaartje dat ook in uw fotocamera zit. Een SSD is eigenlijk een soort harddisk, maar dan volledig met geheugenmodules. Moderne PC's hebben vaak ook een SSD schijf.

Ik besluit om pfSense te installeren op een kleine SSD van 16 GB. 16 GB voor configuratie en logging is al vrij veel. Het APU bordje heeft een aansluiting voor een m-Sata SSD die nog in de behuizing past

Installatie pfSense


De pfSense software is te downloaden van de pfSense website. Er zijn twee installatie opties: met VGA aansluiting en met een seriële aansluiting. Dit leg ik even uit: Ik begin met een lege SSD, en ik moet installeren vanaf een CD of een USB-stick. Net als bij een gewone PC, moet ik daarbij een aantal vragen beantwoorden, en daarvoor heb ik een VGA monitor + keyboard nodig. Alternatief is dat ik een gewone PC via een seriële verbinding met de mini-PC verbind. (Kan iemand zich nog de tijd herinneren dat je de PC via een seriële lijn met het modem verbond en met 2400 baud bulletin boards bezocht?).

Ik heb gekozen voor de seriële lijn, eigenlijk omdat mijn mini PC geen echte VGA aansluiting heeft, en ik nog wel een PC met een seriële poort. Het pfSense bestand heb ik met Win32Image op een memory stick geplaatst. Win32Image is het CD-brander equivalent voor onder andere memory sticks.

Dus: Seriële lijn verbonden, Putty als serieel communicatie programma opgestart, memory stick met pfSense in de USB aansluiting van de mini PC, en aanzetten. Ik krijg als eerste een paar simpele vragen, bijvoorbeeld of ik van de memory stick wil opstarten, en of ik wil installeren op de SSD.

Na circa een minuut is alles geïnstalleerd, en moet hij opnieuw opstarten. De memory stick mag ik verwijderen. PfSense start al op, alleen kent het de omgeving waarin het moet werken nog niet. Daarvoor moet ik nog een paar dingen doen:
  • Ik moet eerst de WAN (internet) netwerk kabel verbinden, en bevestigen dat WAN op deze poort zit.
  • Daarna moet ik de LAN (interne netwerk) kabel verbinden en bevestigen.
  • De derde netwerk aansluiting is optioneel, dus die laat ik even. Hier zal later het Wifi access point op komen (al te zien op de schermafdruk beneden)

Configuratiescherm via seriële interface
Vervolgens moet ik de IP adressen zetten:
  • Aan de WAN kant kies ik voor IP via DHCP, dan krijg ik een IP adres van Ziggo.
  • Aan de LAN kant heeft de pfSense firewall een eigen IP nodig, net als het modem ook een eigen IP adres heeft. Hier kun je bijvoorbeeld 192.168.1.1 invullen 😉. PfSense wordt ook de DHCP server voor het interne netwerk, en het is gebruikelijk dat die op x.x.x.1 zit.

😉 Ik gebruik overigens 10.0.0.x voor mijn LAN, en 10.0.1.x voor de Wifi. Dat zal ik vanaf nu ook gebruiken. Als ik schrijf 10.0.x.x, en je gebruikt zelf 192.168.x.x, bedenk dan dat beide mogelijk zijn. Het maakt niets uit.

Vanaf nu mag ik afscheid nemen van mijn tekst mode terminal. De rest van de configuratie is te doen via de browser op http://10.0.0.1 (of http://192.168.1.1). Daar hadden we o.a. het IP adres voor nodig.

Het werk hierboven had ik me overigens kunnen besparen door pfSense geïnstalleerd op een reeds gemonteerde mini-PC te kopen. Ik hoop niet dat ik dus mensen die zelf bouwen niet zien zitten heb afgeschrikt. Je bent niet verplicht het zelf te bouwen.

In het volgende deel ga ik in op het gebruik van pfSense. Het heeft diverse schermen voor configuratie, status en diagnostiek. Hier zal ik iets van laten zien.

Dit topic is gesloten. Staat je antwoord hier niet bij, start dan een nieuw topic.

32 Reacties

Reputatie 7
Badge +1
Ik gebruik ook pfSense voor verschillende toepassingen, werkt feilloos.
Goed stuk, ben benieuwd naar je vervolg :)

Als je wat verder bent, zou ik wel eens rauwe VPN speed willen testen tussen mijn pfSense in het datacenter, en jouw pFSense build. Als die hoog is, wil ik er misschien zelf ook wel ééntje bouwen 🙂.
Reputatie 5
Badge
Mooi, dan kan ik misschien ook tips uitwisselen. Hij werkt inderdaad prima, en tot nu toe heb ik ook nog geen beperking in snelheid bemerkt. Als ik de adblockers uitschakel zie ik nog steeds geen advertenties. Met wat extra filters zie ik wel regelmatig allerlei trackers geblokkeerd worden.

Als het rustig is, zie ik met speedstests op het internet nog steeds 150 Mb/s, mijn theoretisch maximum, maar ik filter nog niet zoveel als ik zou willen. Ik ben bang dat squid/squidguard wel wat zal remmen
Reputatie 7
Badge +1
Om pfSense ten volle te benutten, doe je er wel goed aan om het modem erachter in bridge te zetten. Zeker squid/snort/VPN's hebben daar profijt van, omdat ze alleen dan kunnen bepalen wat je WAN ip is. pfSense verwacht een WAN-IP op de WAN interface.
Reputatie 7
Heel gaaf, kzin! Heb je topic wel naar Thuisnetwerk verplaatst omdat hij daar in mijn optiek iets beter past. Ben ook zeer benieuwd naar je vervolg. 🙂
Reputatie 5
Badge

Een externe firewall deel 2


De eerste indruk van pfSense


Het scherm van pfSense heeft overweldigend veel opties in het menu. Het hoofdscherm geeft informatie over allerlei zaken. Wat meteen opvalt: een grafische weergave van al het uitgaande in binnenkomend verkeer.

Grafische weergave van verkeer op WAN en LAN. pfSense heeft twee ‘skins’, een lichte en een donkere.

Standaard werkt pfSense net als uw modem. Al het uitgaand verkeer is toegestaan, maar al het ongewenste binnenkomende verkeer wordt geblokkeerd. Alleen een antwoord op een uitgaand verzoek is toegestaan. Bijvoorbeeld, uitgaand: http://ziggo.nl, binnenkomend: De webpagina, met alle plaatjes.

Ik kan nu zelf gaan bepalen wat ik toelaat en wat niet. Denk dan aan zaken als:
  • Malware websites worden geblokkeerd.
  • Advertenties worden geblokkeerd.
  • Via WiFi is er geen toegang tot mijn LAN, tenzij het mijn eigen laptop is.
  • Uitgaand verkeer inperken per apparaat.
  • Waarschuwing/blokkering als iemand fanatiek probeert binnen te dringen vanaf het internet.

Ik kan nu documentatie gaan lezen, maar eigenlijk is het leuker om eerst een paar youtube filmpjes te gaan kijken. Dan krijg je snel een idee van de mogelijkheden. Een deel van de filmpjes is al wat verouderd. De opties zijn er nog wel, maar het menu ziet er anders uit. De Canadees Mark Furneaux heeft een meerdelige video-blog over pfSense gemaakt. De configuratie begint bij deel 5.1, maar de voorgaande delen kunnen ook interessant zijn.

Configuatie


DHCP server


DHCP staat voor Dynamic Host Configuration Protocol, en dat mag je gelijk weer vergeten. Het is een protocol om computers dynamisch in een netwerk te beheren. Een nieuwe computer kan simpelweg in een netwerk aansluiting worden geplugd, en het DHCP protocol zorgt er voor dat het een IP adres krijgt, en weet hoe het internet te bereiken is.

De DHCP server in pfSense deelt de IP adressen voor het interne netwerk uit. Hier is alles Ipv4, maar pfSense is al geschikt voor Ipv6.
Ik heb de pfSense firewall IP adres 10.0.0.1 gegeven. pfSense geeft aan welke adressen het kan uitdelen:


In principe kan het de adressen 10.0.0.2 t/m 10.0.0.254 uitdelen. Ik geef aan dat hij de adressen 10.0.0.2 t/m 10.0.0.200 dynamisch mag uitdelen. De andere adressen houd ik gereserveerd.

Een nadeel van DHCP zit namelijk in het woord Dynamic. Je bent er niet 100% zeker van dat een apparaat altijd hetzelfde IP adres krijgt, en dat kan een probleem zijn. Je kunt het apparaat een vast IP adres geven in zijn eigen configuratie, maar je kunt ook vaste adressen reserveren in de DHCP server. Elk apparaat dat een IP adres wil hebben stuurt zijn uniek MAC adres op. Dat adres ligt vaak vast in de netwerk kaart. In pfSense (maar vaak ook in modems/routers) is aan ieder MAC adres een vast IP adres te koppelen. Dat moet je handmatig doen in een tabel, bijvoorbeeld zoals hieronder:

Lijst van statische IP adressen

Vanaf nu krijgt mijn Humax altijd IP adres 10.0.0.201, en dat is erg handig als ik een FTP programma wil gebruiken om opgenomen programma's te bewaren op mijn PC. Bovendien kan ik een regel opstellen dat 10.0.0.201 niet het internet op mag als ik dat zou willen, of alleen naar zijn eigen update site.

Hoe achterhaal je het MAC adres
Bij de meeste apparatuur is het te vinden in de netwerk configuratie. Vaak wordt het Hardware adres genoemd (of Hardw Addr) en het bestaat uit 6 hexadecimale getallen, gescheiden door een dubbele punt, bijvoorbeeld: 06:24:3b:18:2f:27.
Als het niet lukt heeft pfSense wel een status pagina met DHCP leases. Als het apparaat op DHCP staat, kun je het aan zetten, en kijken welke DHCP lease er bij komt.

Een nieuw toegevoegde Yogabook heeft een IP adres gekregen, en laat ook het MAC adres zien

Een Wifi access point


Als ik mijn router niet meer gebruik, heb ik ook geen Wifi meer. Dat wil ik natuurlijk wel blijven gebruiken. Ik kan een los Wifi accesspoint kopen, maar ik kan ook mijn oude router gebruiken. Ik schakel de DHCP functie in de router uit, geef het een vast IP adres, en gebruik alleen de vier gele aansluitingen. Zo wordt het een switch die verkeer van de ene poort naar de andere kan sturen, en ook de Wifi blijft werken. Het verschil is dat als mijn laptop via wifi een IP adres aanvraagt dit het via het accesspoint naar de pfSense firewall gaat. Die stuurt een (dynamisch) IP adres terug, via het accesspoint naar de laptop.

Tijdvolgorde als een laptop via Wifi een IP adres aanvraagt bij de dhcp server. Het modem heeft hier geen functie in. Het Wifi access point stuurt alle DHCP verzoeken door naar pfSense.

Ik had ook de wifi in het Ziggo modem kunnen gebruiken, alleen kan ik dan wel het internet op, maar ik kan niet mijn eigen LAN bereiken. PfSense ziet dat de verbinding van de WAN zijde komt, en zal alle toegang blokkeren. Bovendien kan ik nu mijn modem in bridge mode zetten als ik dat wil. Ik heb dat nog niet gedaan, omdat ik nog even een paar testsjes wil doen vanaf de WAN zijde van de firewall (o.a. kijken of een portscan wordt opgemerkt)
Het modem in bridge is niet verplicht, maar het heeft wel voordelen. Dubbel NAT kan remmend werken op de perfomance (downloadsnelheid), en als je een poort wilt forwarden, moet je het tweemaal doen. Bij een firewall komt er nog het voordeel bij dat de firewall beter het verkeer vanaf het internet kan analyseren.

Ik kan het Wifi access point aansluiten op een van de poorten van mijn switch, maar dan krijgen alle Wifi apparaten een IP adres in de reeks 10.0.0.x, en kan ik niet zien wat Wifi verkeer is. Gelukkig heeft mijn pfSense computertje nog een derde netwerk aansluiting. Die ga ik gebruiken voor de Wifi. Net als ik 10.0.0.x heb gebruikt voor mijn LAN, ga ik 10.0.1.x gebruiken voor mijn WLAN (het wifi netwerk). Ik kan dus aan het IP adres zien of het verkeer afkomstig is van mijn LAN, of afkomstig is van Wifi. Dat biedt volop mogelijkheden tot filtering en alarmering.
Schematisch kan het er zo uit zien:

Schema van WAN, LAN en WLAN. De switch en het Wifi accesspoint hebben zelf geen ip adres. Ze geven alleen data door. De PC en de Humax zitten bedraad op de switch, en krijgen dus een 10.0.0.x adres. Alle wifi komt binnen via het accesspoint en krijgt een 10.0.1.x adres.
Duidelijk is te zien dat ik nog een dubbel NAT heb. Vanaf internet moet alle data twee maal door een NAT. Als ik het modem in bridge zet, wordt hij transparant en krijgt pfSense rechtstreeks al het internet verkeer binnen.


Op internet zag ik iemand die de derde poort als DMZ had gebruikt. Dat is ook een mogelijkheid, maar ga ik nu niet behandelen.

Zoals we de firewall nu hebben, heeft het ongeveer dezelfde functionaliteit als de firewall in een goed modem. Extra functionaliteit is in te stellen middels regels of met behulp van additions, op zich losstaande programma's die eenvoudig in pfSense zijn in te laden en te configureren. Nou ja, eenvoudig; soms is de documentatie erg summier. Vaak is er wel documentatie te vinden van het originele programma, maar dat is weer gebaseerd op werken met losse configuratiebestanden. Ik zal toch een aantal behandelen, maar dan hoofdzakelijk in de vorm van voorbeelden. Dat werkt beter dan alle opties behandelen.

In het volgende deel ga ik een aantal mogelijkheden behandelen voor uitgebreidere filtering in pfSense. Als teaser nog even een overzicht van meest bezochte IP adressen die pfSense voor me gemaakt heeft.

Reputatie 7
Badge +1
Mooi beschreven vervolg weer! :)

kzin schreef:

Bovendien kan ik nu mijn modem in bridge mode zetten als ik dat wil. Ik heb dat nog niet gedaan, omdat ik nog even een paar testsjes wil doen vanaf de WAN zijde van de firewall (o.a. kijken of een portscan wordt opgemerkt)
Het modem in bridge is niet verplicht, maar het heeft wel voordelen. Dubbel NAT kan remmend werken op de perfomance (downloadsnelheid), en als je een poort wilt forwarden, moet je het tweemaal doen. Bij een firewall komt er nog het voordeel bij dat de firewall beter het verkeer vanaf het internet kan analyseren.



Precies daarom raadde ik bridge aan, het modem zal zonder alle portscans etc tegenhouden. Je kan wel pfSense in de modem's DMZ plaatsen ter oplossing, maar bridge is op andere terreinen handiger.

Kijk ook eens naar squid en snort, leuk om mee te spelen.
Reputatie 2
pfSense bestaat al jaren en is een goede firewall shell voor iptables.
Vroeger was er ook nog gShield, maar helaas is dat project gestopt.
Squid en snort zijn ook wel leuk ja.

Als je toch met Linux gaat werken, zou ik eens een blik werken op CSF/LFD oftewel Configserver Firewall.
Wordt enorm veel op hostingservers gebruikt momenteel als iptables shell.
En voor zover mij bekend veel meer mogelijkheden dan pfSense of een ander. Dat wordt dus al professioneel of als je wilt semi-professioneel gebruikt. Terwijl het toch net zo eenvoudig in te stellen is als anderen en heeft een eigen support forum.
Kun je ook regexp mee gebruiken en zit ook een mooie Gui bij (met security test optie) als je bijv. op je thuisserver Webmin gebruikt.
Eenvoudig in te stellen via die Gui en anders wel via diverse textfiles.
Reputatie 5
Badge

Een externe firewall deel 3


In dit deel ga ik in op de mogelijkheden om extra functionaliteit toe te voegen aan pfSense. Standaard is het zo dat al het verkeer dat van buiten komt wordt geblokkeerd, maar al het verkeer van binnen naar buiten wordt doorgelaten. Dit gaan we nu inperken. PfSense is in tegenstelling tot de firewall in een modem of router veel fijner te configureren. Dat zal het ook iets complexer maken. Niet alles wat ik hier toon is noodzakelijk, alleen met een firewall kun je bijvoorbeeld het binnenhalen van malware grotendeels voorkomen. De firewall is alleen een dom ding. Je moet hem precies vertellen wat wel en niet mag.

Je zult af en toe Engelse termen tegenkomen, dat is helaas niet anders. Veel termen in deze wereld zijn nu eenmaal Engels. We zijn al gewend geraakt aan termen als 'computer', 'switch' en dergelijke. Bovendien kan een Nederlands woord soms voor verwarring zorgen. Het woord 'rule' kun je vertalen met 'regel', maar een 'rule' kan uit meerdere 'lines' bestaan. Sorry dus, als ik gewoon 'rule' gebruik.

Firewall Rules


Rules filteren data gebaseerd op bepaalde gegevens. Een verbinding wordt al dan niet toegestaan, gebaseerd op bijvoorbeeld IP adressen, of poort nummers. PfSense heeft veel mogelijkheden om te filteren. Ik zal een aantal bespreken, maar alle opties wordt teveel. Bovendien ben ik zelf ook nog bezig te leren.

Als voorbeeld ga ik een WLAN (Wifi) rule maken die mijn chromebook (10.0.1.101) alleen HTTP toegang geeft tot mijn LAN, zodat ik de webservers in mijn raspberry pi’s kan benaderen.

Invoerveld voor een rule
  • Als eerste kies in voor Pass, want dit wordt een rule die iets toelaat
  • Hij wordt voor WLAN en IPv4
  • Als protocol kies ik TCP, want http gaat over TCP/IP
  • Mijn Source is een single host, namelijk 10.0.1.101
  • Mijn Destination is een netwerk, namelijk mijn LAN (10.0.0.0/24). De /24 kunt je lezen als een netmask 255.255.255.0
  • Als protocol sta ik alleen http toe (poort 80)
  • Logging hoeft niet

Onderaan het scherm is nog een Advanced knop, waarmee ik extra zaken kan instellen, zoals het aantal unieke verbindingen, het maximum aantal nieuwe verbindingen per seconde, en bij TCP zelfs het operating systeem.

Als ik alles heb ingevoerd, wordt hij toegevoegd aan de lijst reeds bestaande rules:

Lijst van rules voor de WAN interface
Van boven naar beneden:
  • Standaard regel van pfSense over bogon networks, laat ik mooi met rust
  • Een automatisch aangemaakte rule, wordt verderop wel behandeld. Blokkeert toegang tot top malware sites
  • Mijn XPS13 notebook krijgt toegang tot het LAN
  • Mijn chromebook krijgt alleen HTTP toegang (die hebben we net gemaakt)
  • Alle andere toegang vanaf de Wifi tot het LAN wordt geblokkeerd
  • Het WLAN geeft wel toegang tot het internet
De rules worden van boven naar beneden geëvalueerd, net zolang totdat er een geldig is bevonden. Het is dus van belang om alle regels in de goede volgorde te plaatsen

Als je een meerdere laptops zou hebben, waarvoor we op een aantal poorten regels willen opstellen, zou het aantal rules snel oplopen. Hiervoor heeft pfSense de mogelijkheid voor 'aliases'. Lijsten waarvoor dezelfde rules gaan gelden. Je kunt bijvoorbeeld een lijst maken met laptops, en een lijst met poorten waarop toegang is toegestaan. Hierna kun je met één rule de toegang regelen.

Ik zou er ook hier al voordeel van kunnen hebben, als ik zowel http (poort 80) als https (poort 443) toe zou willen laten. Met behulp van een alias met beide poorten hoef ik niet twee rules te maken.

Websites blokkeren


Dit heeft me wat hoofdbrekens gekost. Het probleem is dat er meerdere mogelijkheden zijn, en dat is niet altijd duidelijk uit de informatie die te vinden is op internet.
Het komt er heel kort gezegd hier op neer: Er zijn twee manieren om websites te blokkeren
  • Blokkeer alle data van/naar het IP adres
  • Zorg ervoor dat de domein naam niet wordt omgezet naar het IP adres van de webserver.

DNS blokkering


Ik zal met het laatste beginnen. Hiervoor is pfBlockerNG een handige toevoeging.
Standaard werkt pfSense al als DNS server (Domain Name System). Als een browser een webserver wil benaderen, moet allereerst de opgegeven naam (bijvoorbeeld community.ziggo.nl) worden omgezet in een IP adres.

Normaal gesproken gebeurt dit door een DNS server op het internet te benaderen. Dat kan met pfSense nog steeds, maar pfSense heeft ook een ingebouwde DNS server. Als er kort achter elkaar een aantal malen een IP adres gezocht moet worden bij een naam, kan pfSense dit voor zijn rekening nemen. Pas als hij er niet uit komt, zal een van de DNS servers op het internet worden geraadpleegd.

Dit is niet alleen in veel gevallen sneller, het is ook mogelijk om bij malware- of advertentie servers niet te verwijzen naar de oorspronkelijke server maar om een ander antwoord te geven. Dit gebeurt onder andere ook in piHole, een lokale DNS server die op een raspberry pi draait. Dankzij pfBlocker is dit ook mogelijk in pfSense.

Het eenvoudigst gaat dit met de DNSBL easylist. Twee grote lijsten die constant worden bijgewerkt. Elke lijst heeft een aantal categorieën van eventueel te blokkeren websites. De gebruiker kan zelf kiezen welke categorieën geblokkeerd moeten worden.

Welke categorieën gebruikt worden, is te selecteren in de pfBlocker configuratie nadat de easylist feeds zijn gedefinieerd.
Later is te zien wat er geblokkeerd wordt, bijvoorbeeld:


Indien gewenst zijn geblokkeerde url's eenvoudig the 'whitelisten'. Ze worden dan niet langer geblokkeerd.

IP adres blokkering


Als we willen kunnen we extra lijsten van websites toevoegen middels DNSBL feeds. Dit zijn lijsten die door diverse organisaties zoals Spamhouse worden bijgehouden en te downloaden zijn van internet. We kunnen de URL van zo'n lijst toevoegen, en daarmee kiezen wat er geblokkeerd moet worden. pfSense zorgt zelf voor het downloaden van de lijst. Sommige lijsten zijn gratis, voor anderen moet betaald worden.

Feed met zero-day domains, domeinen op het internet die vaak slechts een paar dagen bestaan en alleen gebruikt worden om spam en malware te verspreiden. Ik laat hem om de 6 uur updaten.
Deze feeds werken in pfSense iets anders, omdat ze een rule aanmaken met te blokkeren IP adressen.

Je kunt ook zelf lijsten maken met websites of IP adressen die geblokkeerd moeten worden.
Als voorbeeld ga ik facebook helemaal blokkeren, dus niet alleen de website zelf, maar ook alle 'like' duimpjes die op andere websites te vinden zijn. Deze worden vaak vanaf één van de facebook servers geladen, middels het IP-adres van de server.
Facebook heeft meerdere servers, elk met een eigen IP adres. Er zitten meerdere IP adressen achter www.facebook.com. Zo verdeeld men de netwerkbelasting over meerdere servers. Bovendien heeft facebook nog servers met een ander subdomein dan www.

We kunnen een lijst maken met alle variaties op de naam facebook, maar er is kans dat we wat vergeten. Bovendien wordt het gebruik van IP-adressen dan niet geblokkeerd.

Beter is om van tevoren een lijst met zoveel mogelijk IP adressen van facebook op te stellen.
We kunnen een aantal malen pingen, en kijken of we zoveel mogelijk IP adressen kunnen achterhalen. De help pagina van pfSense geeft ook een mogelijkheid om een lijst aan te maken met alle servers met behulp van een 'whois' zoekopdracht. Die lijst is eenvoudig te importeren.

Een deel van de geïmporteerde lijst van facebook IP adressen.
Met deze lijst kunnen we nu zelf een rule maken:


We kiezen voor Reject, omdat er dan een bericht naar de browser wordt gestuurd dat facebook niet bereikbaar is, in plaats van helemaal geen antwoord te geven. Op de onderste regel zien we de naam van onze lijst met IP adressen.

Met de lijst en de gemaakte regel is facebook niet meer te bereiken per browser, ftp, ping, of welke dienst dan ook.

Websites blokkeren is ook mogelijk met een andere toevoeging aan pfSense, namelijk squid. Hier zal ik later op terugkomen, want squid heeft nog meer mogelijkheden.

GeoBlock


pfSense ondersteunt de mogelijkheid om IP adressen te blokkeren gebaseerd op hun geologische locatie. IP adressen zijn namelijk niet willekeurig over de aardbol verdeeld. Alles wat we hoeven te doen is de landen te selecteren die we willen blokkeren. Binnenkomend verkeer werd altijd al geblokkeerd, maar nu worden ook uitgaande verbindingen naar die landen geblokkeerd. Malware dat een verbinding probeert te leggen met een server in die landen maakt zo geen kans meer.

Te blokkeren landen. Links Ipv4, rechts Ipv6
Ook hier maakt pfSense een rule aan in de firewall.
Er is nog wel een zwak punt, en dat is dat men in die landen gebruik kan maken van een proxy server in een ander land.

Tenslotte het resultaat van bovenstaande lijsten. pfSense heeft een aantal regels toegevoegd.



Tot nu toe hebben we nog niet kunnen blokkeren op 'keywords', bepaalde woorden dus. Daarvoor heb je bij pfSense de plugins squid en squidguard. Ik zal hier later eens op komen.
Volgende keer wil ik het eerst even hebben over wat ik zoal zie in het log. Ik had eigenlijk verwacht dat er af en toe iets te zien zou zijn. Het gaat echter vrij hard:


Zoals te zien is, regelmatig een log entry. Ik wil eerst eens weten, moet ik me zorgen maken, moet ik uitzonderingen maken. Daar wil ik het de volgende keer eens over hebben.
Beste kzin,

Super tof dat je dit zo allemaal voor ons uitschrijft, ik zit er nu serieus over te denken om ook maar eens te gaan experimenteren met pfsense.

MVG
Reputatie 5
Badge
Ja, zo ben ik ook begonnen. Ik wilde eens wat experimenteren met een firewall, en als je wat googled dan is pfSense wel geschikt voor beginners. Je hoeft er ook niets voor op te geven. Als het niks wordt, dan kun je altijd stoppen.
Reputatie 5
Badge

Een externe firewall deel 4


Ik heb het er al even over gehad dat het filewall log veel sneller volloopt dan ik verwacht had. Daarom ga ik even een kort uitstapje maken, om te zien wat de logging nu zoal oplevert.

Ik weet natuurlijk wel dat er constant diverse programma’s het net op gaan om te checken voor updates, maar die zouden normaal gesproken niet in de firewall log terecht mogen komen. Het kan zijn dat ze er nu wel in komen omdat we de IP adressen op een zwarte lijst hebben gezet, of er is iets anders aan de hand. Bijvoorbeeld gewoon foutjes in de communicatie die door de firewall worden opgemerkt

Tenslotte zou ik graag willen dat onschuldige logregels verwijderd worden, zodat ik met kan richten op degene die er wel toe doen.

Ik heb een aantal er uit gehaald, om te kijken wat hier aan de hand is.


10.0.1.5 is mijn Android telefoon. Normaal verwacht ik bij een uitgaande poort niet 37181, als bij de bestemming 172.218.17.106 poort 443 (https) gebruikt wordt. Als opmerking zie ik TCP.PA.
Als ik daarop google vind ik:

It's out-of-state traffic, either from expired states or from asymmetric routing.
You can't disable logging of that specific kind of traffic without disabling logging for the default deny rule.


Out-of-state asymmetric traffic snap ik wel. Als twee netwerkapparaten met elkaar communiceren, horen ze om de beurt wat te sturen. Als hier iets in fout gaat, krijg je dit soort dingen. Niet erg spannend dus. Gewoon communicatie problemen. Het IP adres is van Telus communications, zo te zien een provider.


Ik heb nog geen IPv6, maar er zijn al wel af en toe multicast berichten vanaf mijn IPv6 adres. Als ik wil uitzoeken waarom dit geblokkeerd wordt, moet ik op het ‘block’ kruisje clicken. Ik krijg dan iets als:

Vervolgens mag ik verder zoeken in de pfB_Level1 rule.


Met google vind ik:


In "TCP : S", the S is the TCP flag. It's a "syn" flag, which means it is trying to establish a connection. There is a link at the bottom of the firewall logs page which explains what the flags mean.


Hij probeert dus een verbinding op te zetten van mijn desktop PC naar 203.130.48.18 op poort 80. Dat zou hij normaal niet moeten blokkeren, maar als ik even zoek dan blijkt het een IP adres in China te zijn. Dat verklaard waarom het geblokkeerd wordt. In deel 3 heb ik geheel China geblokkeerd. Maar wat is het? Het is het ChinaNetCenter, een provider. Dit is iets dat ik wel geblokkeerd zou willen laten. Volgende stap is eventueel kijken of ik er achter kan komen of het een driver is voor een of andere kaart. Ik heb het eerst geblokkeerd in de firewall in mijn PC.


Een IGMP (Group Management Protocol), afkomstig van mijn tot switch omgebouwde router. Op zich geen vreemd bericht. Mag geblokkeerd worden, maar was toch niet naar buiten gekomen (10.0.1.245 is een non-routable adres)


IP adres 239.255.255.250 is voor het SSDP protocol om Universal plug-and-play apparatuur te ontdekken.

Tot nu toe weinig spannende dingen gezien. Ook verder zie ik wat ad-servers. Als ik zou willen zou ik bij een aantal de logging uit kunnen zetten. Als het goed is worden ze dan nog wel geblokkeerd.


De volgende keer gaan we nog meer monitoren, met een Intrusion Detection Systeem, detectie van ongewenst verkeer.
Reputatie 5
Badge

Een externe firewall deel 5


DNS blocklists revisited



Allereerst: Ik heb in deel 3 een foutje gemaakt door te zeggen dat de DNSBL feeds werken door rules met IP adres blokkering aan te maken. Dat was helaas niet correct. Ik heb twee dingen door elkaar gehaald, die ik niet had mogen samenvoegen.

pfBlockerNG, met Ip menu en DNSBL submenu

Blokkering op IP adressen

PfBlockerNG heeft aparte ‘aliases’ met Ipv4 en Ipv6 adressen die je zou kunnen willen blokkeren.

Alises met Ipv4 blocklist, onderverdeeld naar risico

Ze worden ‘aliases’ genoemd, omdat het lijsten zijn voor hetzelfde doel, namelijk gebruik in een rule. Het verschil is alleen dat voor deze aliases worden automatisch rules aangemaakt. Ik heb vier aliases aangemaakt, gebaseerd op het risico dat de IP adressen vormen. De lijst met IP adressen die het grootste risico vormen, kun je dan ook het vaakst updaten.

Ik zal level 1 er even uitpakken om te zien wat er in zit:

Top level ipv4: drie verschillende lijsten met IP adressen

Alias “Level 1” heeft drie lijsten die automatisch worden gedownload. Elke lijst bevat een aantal IP adressen. Automatisch aangemaakte rules zorgen ervoor dat al het verkeer van en naar die IP adressen geblokkeerd wordt. Bij overtredingen wordt de Header in de logging getoont.

Hostname blokkering

DNSBL heeft als onderdeel van pfBlockerNG de DNSBL easylist, en de DNSBL feeds.
De easlylist heb ik al even behandeld; twee grote lijsten die continue worden bijgewerkt.
De DNSBL feeds zijn lijsten die door andere mensen worden bijgehouden, maar die lijsten bevatten hostnamen die geblokkeerd kunnen worden, en werken dus net als de easylist door geen IP adres bij de hostname te zoeken. Ik heb drie groepen, die op verschillende tijden worden geüpdate.

Groepen met DNSBL feeds

DNSBL feed met zero day domains
Als voorbeeld pak ik weer de Zero day threats. Domeinen die soms maar een dag bestaan, en vaak voor malware of spam worden gebruikt. Deze groep bevat slechts één lijst. De lijst bevat hostnamen waar je weg wilt blijven. Samen met de easylist worden ze door de DNS server gebruikt om host namen niet om te zetten naar IP adressen.

Ik hoop dat het nog een beetje duidelijk is. pfSense heeft meerdere mogelijkheden

Ik heb nog een eigenschap ontdekt in de DNS blocklists waar ik zo nog geen oplossing voor weet, maar die wel vervelend is. Als abcdef.com in een blocklist staat, wordt dat domein niet omgezet naar zijn IP adres. Echter, www.abcdef.com wordt nog steeds omgezet. Er is vaker melding van gemaakt in het pfSense forum, maar ik heb nog geen echte oplossing gezien. Men is bang om automatisch alle subdomeinen te blokkeren. Het heeft volgens mij wel de aandacht van de ontwikkelaars.

Dan ga ik nu verder met het onderwerp dat ik gepland had voor dit deel

Intrusion detection met snort


Snort is een intrusion detectie en preventie systeem. Het kan worden geconfigureerd van simpel loggen, tot automatisch blokkeren. Het kan dus werken als beveiliging. Bij intrusion moet je niet meteen denken aan iemand die je computer binnendringt, en dingen doet alsof hij achter je toetsenbord zit. Ook een poort-scan, buffer overflow of het versturen van verminkte pakketten kan al vervelende gevolgen hebben. Een browser kan er bijvoorbeeld niet op berekend zijn, met als gevolg dat hij vastloopt, of dan men kans ziet lokaal op je PC of smartphone code uit te voeren.

Snort kan helpen dit te voorkomen door op te treden als een packet sniffer, die dankzij definities probeert ongewenst netwerk verkeer te detecteren en voorkomen. Het is enigszins vergelijkbaar met de manier waarop antivirusprogramma's werken.
Je kunt deze definities zelf schrijven, maar er zijn al een hele hoop door anderen geschreven en ter beschikking gesteld.
De definities zijn er in diverse catagorieen, bijvoorbeeld
  • Low-level protocollen (icmp, netbios, tcp, udp)
  • High-level protocollen (http, ftp, dns, pop3, imap)
  • Exploits (uitvoerbare code, backdoor, exploit)
  • Beïnvloeding (dos, ddos)
  • Scannen en andere onderzoeksmethodes (scan, bewust verminkte communicatie)
  • Virussen en andere malware (virus)

Ze worden meestal gebundeld ter download aangeboden.
Om in snort gebruik te kunnen maken van die gedownloade definities heb je allereerst een oinkmaster Code hebben (ja ze verzinnen leuke namen). Je kunt een gratis code krijgen, alleen dan zijn alle definities tenminste 30 dagen oud. Alternatief is een betaald account.

Selectie van downloadbare rules

Er zijn nog twee groepen rules die je kan kiezen, de Community rules, en een Emerging Threads (ET) rules. Je hoeft het alleen aan te vinken. Bij die laatste heb je weer een gratis versie en een uitgebreidere betaalde versie. Je kunt aangeven hoe vaak ze moeten worden geüpdate.

Snort rules download overzicht

Nu hebben we lijsten waarmee snort intruders kan detecteren. We moeten ze alleen nog aan de WAN interface toevoegen. Eigenlijk stelt dit niet veel voor. De default settings zijn goed om mee te beginnen.

Enable snort op de WAN interface, en kies een log priority

Wel belangrijk is de log policy. Snort zal namelijk allerlei zaken tegenkomen die niet helemaal netjes zijn, maar waar best mee te leven is. De prioriteit werkt als een soort niveau. Staat het te laag, dan lopen de logbestanden al snel vol. Standaard staat het op LOG_ALERT. Dan wordt je al gewaarschuwd als een HTML pagina geen lengte heeft meegekregen in het http protocol.

Minstens zo belangrijk is de regel Block Offenders. Als deze is aangevinkt, dan worden overtreders automatisch geblokkeerd, en is verdere communicatie voor hun niet mogelijk.

Vervolgens kun je uit de lijsten de categorieën selecteren waartegen je beschermd wil worden.

Selectie van categorieën

Het lijkt aantrekkelijk om alles te selecteren, maar dat kan pfSense vertragen.

Nadat ik snort had geïnstalleerd, heb ik eens in het snort alert log gekeken. Ik was van mening dat die eigenlijk bijna leeg zou zijn. Tot mijn verbazing was hij al redelijk gevuld:

Alleen is het nog niet zo gevaarlijk
  • Regels 1 & 2: Ik heb een .exe gedownload. Als ik had gewild, had ik het kunnen blokkeren.
  • Regels 3 & 4: Communicatie problemen. Op een HELLO, wordt ook met een HELLO geantwoord, in plaats van een ACK. Niet erg, maar dit soort technieken liggen wel aan de basis van sommige hack pogingen.
  • Regel 5; Unicode encoding; hiermee kun je buitenlandse characters gebruiken die sprekend lijken op de westerse characters. Als je naar de url in de browser kijkt zie je het niet, en ook het slotje op de https verbinding is groen. Zie bijvoorbeeld een melding op tweakers dat Chrome onderscheid gaat maken.
  • Regels 6 & 7: Double decoding attack. Klinkt al erger. Het kan een poging zijn om browsers of servers om te tuin te leiden. Je krijgt dit bijvoorbeeld bij: http://www.somesite.com/index.php/Sp%25C3%25A9cial/page. %25 is karakter hexadecimaal 25. Iedereen heeft wel eens %20 gezien, als er een spatie in een URL voorkomt. %25 is weer een % teken, dus %25C3 levert na 'decodering' weer %C3 op. Dubbel gecodeerd dus. Het kan gebruikt worden om de werkelijke opgevraagde tekst te verhullen.
Snort schijnt nogal gevoelig te zijn en levert regelmatig ‘false positives’. Vooral documenten met speciale characters, spaties en andere tekens die eigenlijk niet in een URL thuishoren kunnen ervoor zorgen dat snort het als verdacht aanmerkt.

In de snort log lijst komen trouwens veel IP adressen van 192.168.178.x voor. Dit komt omdat al het verkeer nog eens via de NAT van het modem moet. Mijn modem staat nog niet in bridge mode. Maar ik had een reden om dit nog even zo te laten.

Ik heb de port scan alert aangezet. Als iemand een port scan doet om te kijken of er poorten open staan, moet ik een alert krijgen. Als mijn modem in bridge mode had gestaan, had ik een webdienst als ShieldsUp van grc.com kunnen gebruiken. Hij staat nog niet in bridge mode, want ik wil zelf een scan kunnen uitvoeren. In de standaard mode werken alle vier poorten op mijn modem. Ik kan dus op een van de andere poorten een laptop aansluiten, en een scan uitvoeren met nmap, een portscan programma dat standaard in linux zit.

nmap scan op de WAN zijde van pfSense

Standaard probeert nmap eerst een ping, om te zien of de andere kant online is. Op een ping reageert pfSense helemaal niet. Ik kan die test negeren met de optie –Pn, waarna hij 1000 van de meest gebruikte poorten gaat scannen. Ze zijn allemaal ‘filtered’, wat betekent dat nmap helemaal niet kan vertellen of er naar de poort gekeken wordt, stealth dus.
De poging blijft echter niet onopgemerkt:

Een port scan vanaf 192.168.178.164 valt op. Ik heb geen poorten geforward dus ik log alleen een alert. Als ik wel poorten zou forwarden voor bijvoorbeeld een IP camera, of een NAS, dan kan ik pfSense de opdracht geven om het IP adres helemaal te blokkeren gedurende een bepaalde tijd (de 'Block offenders' een stukje verder naar boven). Al mijn poorten, inclusief de IP cam, zijn dan geblokkeerd voor dat IP adres. Door de camera op een wat hogere poort te zetten (b.v. 4321) kan ik er meteen bij, maar iemand die gaat scannen vindt hem niet omdat hij geblokkeerd wordt.

Barnyard
Als je met snort bezig gaat krijg je ook te maken met barnyard. Snort is nooit bedoeld geweest om de tcp/ip pakketten helemaal te decoderen. Het schrijft de data weg als een simpele regel, en niet in een soort database waarin eenvoudiger is te zoeken. Daar was op een gegeven moment wel belangstelling voor, maar men durfde het niet aan om zowel het luisteren naar de communicatie als het verder analyseren en opslaan in een database door hetzelfde programma te laten doen. Als het tweede deel tijdelijk meer tijd in beslag zou nemen, zou het afvangen van de data onder druk komen te staan. Daarom heeft men besloten om dat in een apart programma te doen: Barnyard. Snort levert nog steeds 'platte tekst', en barnyard zorgt ervoor dat het keurig in een database komt. Als Barnyard wat meer tijd nodig heeft, is dit niet van invloed op de capaciteiten van snort. Die kan gewoon doorgaan met het capturen van data.
Omdat het in een database komt, kunnen we ook mooi filteren op de snort events

De logging is te filteren op diverse gegevens

Barnyard wordt automatisch mee geïnstalleerd. We hoeven alleen aan te geven dat we het willen gebruiken en hoeveel harde schijf ruimte we het willen geven.


Wat te doen bij detectie

Als snort iets detecteert wat echt verdacht is kun je eerst eens kijken wat de bron is. Probeert men mij van buiten aan te vallen, of heb ik malware of een virus binnengehaald die naar buiten toe communiceert. Port scans kun je verwachten, zeker als het modem in bridge mode draait. Ook zal je meerdere simpele DOS attacks zien, of een poging een bepaald type modem te kraken.

Het kan ook een vals alarm zijn. Snort moet proberen onderscheid te maken tussen echte kwaadaardige communicatie, en dingen die er veel op lijken, maar gewoon de titel van een document is. Zonder snort zou het waarschijnlijk helemaal niet zijn opgemerkt. Het kan handig zijn om alle apparatuur op het eigen netwerk een vast IP adres te geven. Op die manier is in een keer te zien welk apparaat het verdachte gedrag vertoont. Als je aanvinkt dat de host naam in de ARP lijst moet komen, kan snort de naam ook bij het ip adres zoeken.

Bovenste: voeg alle DHCP leases toe, onderste: voeg de static adressen toe

Kijk in de logging ook eens naar het bestemmings IP adres. Door op de + te clicken, zal pfSense proberen het IP adres om te zetten in een naam. Je kunt overigens ook prima googelen op een IP adres, dan zie je soms het bedrijf er achter zoals Google of Microsoft. In veel gevallen zijn het doodnormale software updates. Ik heb wel eens gehad dat ik zag dat mijn PC veel verkeer genereerde, terwijl ik niets deed. Toen ik de netwerkstekker er uit trok kwam er een pop-up dat de update gefaald was :)

De meeste software updates zullen geen sporen achterlaten in pfSense. Een enkele keer communiceert er opeens iets met China, terwijl je geen Chinese hardware hebt. Er zijn wel drivers die af en toe een berichtje naar de fabrikant sturen. Niet kwaadaardig, maar uit privacy oogpunt blokkeer ik het toch liever.

Als je pech hebt, heb je echt een stukje malware binnengehaald, dan wel een nuttig programma dat op de achtergrond andere dingen doet. Dan moet je zien te achterhalen welk programma dat is. Je weet in ieder geval welk apparaat het is (je PC of je smartphone). Soms helpt het dan om de virusscanner eens uitgebreid te laten scannen.

Ik wil nog eens kijken of ik bepaalde meldingen van pfBlocker of snort kan onderdrukken, zonder de rule helemaal uit te schakelen.

Ik ben ook nog van plan te kijken naar squid, waarmee nog meer netwerk filtering kan worden gedaan. Squid werkt als een proxy, zodat al het internet verkeer via squid moet. Op die manier kan er al worden gefilterd voordat de data wordt doorgelaten. Als ik lees op diverse fora kan het echter zijn dat squid daarvoor veel harde schijf ruimte gaat innemen. De data wordt namelijk even bewaard voor het geval er een tweede verzoek komt om dezelfde data. Ik wil voorkomen dat squid mijn SSD 100% gaat gebruiken. Dat is niet goed voor de levensduur van een SSD.

Ik heb de komende tijd wat minder vrije tijd, en wil ook nog het www probleem in DNSBL blocklists onderzoeken, dus waarschijnlijk wordt squid even op de lange baan geschoven. Als er iemand is die er al wel ervaring mee heeft en bereid is een stukje te schrijven: be my guest.
[quote=level4]Ik gebruik ook pfSense voor verschillende toepassingen, werkt feilloos.
Goed stuk, ben benieuwd naar je vervolg :)

Heb je ook ervaring met port forwarding? Op een of andere manier werkt dat niet bij mij? Heb de modem ook in bridge modus gehad.

Ik hoor het heel graag
Reputatie 5
Badge

Een externe firewall deel 6.1


ntopng


Ik wil deze keer een package bespreken die gedetailleerde informatie kan geven. Packages zijn losse programma’s die in pfSense zijn in te laden met de packages manager. Ik heb er al eerder een paar genoemd, bijvoorbeeld snort.


pfSense package manager

Het package dat ik deze keer wil bespreken is ntopng. Dit programma is in staal om allerlei informatie over de huidige verbindingen in real-time te tonen. Als de LED’s op de router veel verkeer op het netwerk tonen, of je wilt weten welk apparaat waarmee verbindingen maakt, dan is dit een van de beste programma’s voor in pfSense. Het toont alle actieve verbindingen, en is ook in staat wat data uit het verleden mee te nemen. Dit programma werkt het best als het modem in bridge mode staat, maar ook in router mode kan het al veel interessante dingen tonen.
Omdat het een los programma is, trekt het zich ook niets aan van de kleurenpaletten van pfSense. Het heeft altijd een lichte achtergrond. Ook heeft het een eigen password beveiliging. Voor een add-in in pfSense had dat wat mij betreft niet gehoeven.
Installeren gaat eenvoudig vanuit de package manager. Na installatie moet je wel een aantal instellingen in de configuratie maken, waaronder het password waarmee ntopng beveiligd is.


ntopng configuratie

Je kunt instellen welke interfaces ntopng moet monitoren. De WAN interface is een logische keuze, maar ook de LAN en WLAN interfaces zijn te selecteren.
Belangrijk is om de GeoIP informatie te updaten. Ntopng gebruikt dit om weer te geven in welke landen de servers staan, en waar je jezelf bevindt.

Het hoofdscherm geeft informatie over de ip adressen die de meeste data genereren. Dit werkt het best als het modem in bridge mode staat, en er ook meerdere PC’s tegelijk communiceren. Ik laat dit scherm voorlopig even zitten.

Beter zijn de Flows en de Hosts schermen. In feite geven ze beide informatie over de huidige communicatie, alleen gezien vanuit een anders gezichtspunt. Ik wil hier nogmaals benadrukken dat het om live informatie gaat. De schermen worden constant geüpdate.


Het Flows scherm, terwijl er youtube wordt bekeken

Het scherm toont van links naar rechts
  • De applicatie die communiceert
  • Het protocol
  • Het IP adres van de client (aan onze zijde dus)
  • De naam van de server
  • Hoe lang hij de communicatie al in de gaten houdt
  • De verhouding data van client/server
  • De huidige throughput in bps
  • De totale hoeveelheid verstuurde data in bytes
  • Nog wat extra info.
Duidelijk is te zien dat er meerdere streams tegelijk lopen voor youtube. Dit zijn meerdere kanalen, enerzijds om een hoge throughput te halen, anderzijds is de stream opgeknipt in meerdere blokken om communicatie problemen te omzeilen. We zien hier overigens alleen de retourdata. De downloadstream bevindt zich in de rijen 1 t/m 10, maar ik vond het interessanter om ook wat andere sites te laten zien, zoals google met een aantal kanalen, en bitdefender antivirus.

Als je op de info knop aan de linkerzijde drukt, krijg je gedetailleerde informatie over die stream.


Flow details

Onder het Hosts menu zijn een aantal schermen te bekijken. Als eerste bekijk ik het All Hosts scherm.


All hosts

Ook hier weer veel informatie. De host name, wanneer hij voor het laatst gezien is, informatieve over de host, en wat andere informatie die we ook al eerder zagen, alleen nu per host gegroepeerd.
Onderaan is te zien dat er al 807 Alerts zijn. Ntopng houdt namelijk ook verdachte communicatie in de gaten. Alleen is het wel erg kritisch. Alle alerts hier zijn tests om te zien of de server er nog is. Ik heb de alerts later uitgezet. Het zijn er teveel om nuttig te zijn.
Bij een aantal IP adressen wordt het land getoond middels een kleine vlag. Als je op een IP adres klikt krijg je meer informatie over dat IP adres.


Gegevens een ip adres

Onderaan is te zien wanneer dit IP adres gecommuniceerd heeft in de afgelopen tijd.
Indien we willen kunnen we de communicatie opslaan met Dump Traffic.

Ook heel aardig om te zien is de network traffic. Beneden is het verkeer in het locale netwerk te zien.


Traffic op 10.0.0/24 gedurende de laatste 10 minuten

Ntopng kan ook op een kaart laten zien met welke landen gecommuniceerd wordt.


[i]Hosts worden getoond op de kaart

Communicatie met Roemenië lijkt verdacht. Als ik met de muis over de marker ga, worden de ip adressen getoond. Door er op te klikken, krijg ik meer details


Het is de server van Bitdefender, mijn antivirus programma. Als de naam me niet bekend zou voorkomen kan ik middels de Whois link meer informatie ophalen. Er wordt regelmatig gecommuniceerd, maar de hoeveelheid data is klein.
Het kan bij elke interface tonen van waar naar waar de hoeveelheid data gaat.



Ntopng is een van de beste programma’s om te achterhalen waar al die data heen gaat, of vandaan komt. Ik heb nog lang niet alle mogelijkheden laten zien. Voor een meer gedetailleerde review kun je op Youtube terecht. Daar is ook het live gedrag te zien.

De volgende keer wil ik wat vertellen over een andere extentie: darkstat. Het toont niet zulke mooie gedetailleerde grafieken, maar houdt wel de hoeveelheid data per tijdseenheid bij.
Reputatie 2
Badge +3
Tjonge mooi zeg, bedankt.

Ik gebruik al jaren eerst m0n0wall en nu dan pfSense. Vooral Barnyard en Ntop interessant.

Ik heb verder een openvz servertje waarin ik paar debian vps-en draai met allerlei services http(s) mail samba dns icecast etc. freeradius mysql backend wpa2-eap met dynamic vlans.

Ook heb ik sinds 2004 mijn domein middels ddns aan mijn pub ip gekoppeld. Jammer is dat ziggo geen static ip opties heeft of om je domein aan je ip te koppelen zodat reverse lookup ook netjes werkt. Want met een mail server is een static ip en reverse dns belangrijk zeker als je dmarc compliant wil proberen te maken. Ik geloof dat bij een bepaalde andere provider dat wel kan maar ja ik ben klant bij Ziggo sinds nov 1999 ben niet van plan dat zomaar te veranderen.

Zou leuk zijn als Ziggo zulke opties ook zou krijgen.

Nu gebruik ik een smarthost relay mail server vanwege de bekende poort 25 blokkade.
Men zou ook voor particulieren static pub ip mogelijk moeten maken en dan die port 25 blokkade eraf.

Mijn huidige pfSense doosje toen hij net gebouwd en net pfSense erop klaar was. Supermicro mini-itx board dual core 64bit 1.8ghz 4gb 1333 ram 2x intel gigabit ports 30gb ssd.

Reputatie 5
Badge
Hoi Guido64,

Leuk om te lezen dat er toch andere mensen mee bezig zijn. Mijn modem staat inmiddels in bridge mode, en ik ben nu ook "stealth" op shields-up. Eerder waren daar nog twee poorten "closed".
Lukt het je trouwens om de alert logs een beetje leeg te krijgen? Mijn voormalige router genereert regelmatig data op 239.255.255.250 (uPnP), terwijl het volgens mij toch uit staat.

Dat je geen vast IP adres hebt beperkt wel je mogelijkheden enigszins. Bij XS4ALL had ik gewoon een vast IP adres.

groeten,
Johan
Reputatie 2
Badge +3
Hoi Kzin,

oh ja shields up kan ik inderdaad eens laten lopen maar ik weet al zo ongeveer wat eruit zal komen. Bepaalde porten 80, 443 en een alternatieve poort voor mail naar en van de smarthost die staat ook min of meer open de smarthost heb ik hier whitelisted. en mijn vpn poort zal open te zien zijn allemaal geen standaard poorten.

shields up loopt momenteel :)

nou wat barnyard betreft heb ik eigenlijk nog geen aandacht aan gegeven ik moet jouw stukken nog beter lezen en dan ga ik ermee spelen. Ik had barnyard eerst nooit aan staan had me er niet de moeite voor genomen uit te vogelen waar het voor dient hahaha ;)
Op een gegeven moment stoorde het me dat die barnyard steeds uit stond in snort dus toen maar wat ermee gepield dat het aanstaat verder niet erin gedoken. Wel in mijn achterhoofd dat ik dat nog eens moet doen en ook snort en een heeeeeellleeee lange rij andere dingen die ik allemaal tegelijk wil doen maar ik kom paar extra hoofden tekort die ik het denk en leer werk kan laten doen hahaha

Upnp gebruik ik niet dat adres 239.255.255.250 is een multicast adres dat ik liever niet zie op mijn netwerk tenzij ik zelf rtsp multicast wil streamen naar de andere subnets ander multicast verkeer zie ik hier niet.

ja precies zou toch nice zijn als we een statisch ip zouden kunnen vragen / instellen bij advanced instellingen op ziggo.nl ofzoiets. en dan ook nog de reverse en forward dns zouden kunnen instellen dat zou wel heel tof zijn. En die port 25 block eraf.

Ik heb geen router van ziggo maar nog een erg oud modem zonder router of wifi zo lang als deze mijn abonnement snelheid aankan houd ik hem als het aan mij ligt. Een monteur wilde hem eens vervangen heb toen gevraagd dat niet te doen dus zodoende heb ik nog steeds mijn oude modem Ubee geloof ik uit mijn hoofd.

Dus hier geen bridge instelling nodig. Bovendien werken voor mij wifispots gewoon terwijl ik zelf geen ziggo wifi ssid uitzend. Dat is hierdoor een voordeel maar van de andere kant zou ik wel graag ziggo wifispots willen ondersteunen, als er een manier is om het aan de trunk naar mijn accesspoints kan toevoegen, maar niet met een router van ziggo.

ik heb shields up alleen bekende services laten scannen hij vond zoals verwacht 80 en 443 hogerop heb ik nog openvpn op een alternatieve poort en ook smtp maar die is zoals gezegd whitelisted zodat alleen de remote mail relay ermee kan beppen.
Reputatie 2
Badge +3
Trouwens verschil tussen stealth en closed is in pfSense
Reject = closed iemand connect maar word geweigerd
Blocked = stealth iemand connect en krijgt niets terug ook geen weigering.

Vast ip adres is dat hetzelfde als statisch ip adres?
Bij ziggo heb ik ook al heel erg lang hetzelfde ip adres maar het is toch echt een dynamisch ip adres. Waardoor ik soms met mijn mail server problemen heb dat streng geconfigureerde mail servers geen mail op mijn domein willen afleveren.

Ip adres ranges van gewone internet gebruikers die zogenaamde dynamische ip pools word niet een smtp server op verwacht en daarom word vaak smtp verkeer van zo'n ip geweigerd of geen mail op afgeleverd.

Je kan in postfix (smtp server) bij voorbeeld instellen dat als het reverse adres anders is dan het forward adres dat dan de mail aflevering gestaakt word. Dus ja hoe vang je dat op als je een dynamisch ip hebt.

Als je dit soort dingen graag wil leren dan moet het wel ook kunnen heh technisch gezien. Dit soort dingen zorgt ervoor dat mijn mail server niet 100% betrouwbaar werkt daar baal ik van want ik wil het goed doen en leren hoe het perfect kan laten werken. Maar ja een mail server bij internet klanten thuis is natuurlijk voor een provider een horror scenario.
Reputatie 2
Badge +3
Ik las ergens in je stukken dat je liever niet wil dat squid e.d. teveel kunnen schrijven naar je ssd om de levensduur te vergroten van je ssd. Je kan in System / Advanced / Miscellaneous ramdisk inschakelen.



Reputatie 5
Badge
Guido64 schreef:

Je kan in System / Advanced / Miscellaneous ramdisk inschakelen.


Bedankt voor de tip. Ik las inderdaad klachten van anderen "squid gebruikt mijn disk 100%". Dat is voor een SSD niet zo goed heb ik begrepen, omdat die per blokken moet wissen, en de resterende data terugschrijven. Je weet het waarschijnlijk wel, maar ik vertel het ook even voor de andere lezers.
Als tijdens het wissen/schrijven een cel defect raakt, kan hij een andere, nog vrije cellen gebruiken. Alleen moeten die er wel zijn.

Misschien doe ik nog wel eens stukje over squid. Ik wil eerst eens wat vertellen over websites die niet meer werken nu ik zoveel blokkeer, en hoe ik dat oplos.
Reputatie 5
Badge

Een externe firewall deel 6.2


darkstat


De vorige keer heb ik wat verteld over ntopng, een zeer uitgebreide package voor pfSense waarmee netwerkverkeer in de gaten gehouden kan worden. Deze keer wil ik een wat eenvoudigere versie laten zien: Darkstat. Het is niet zo uitgebreid, maar geeft wel snel een overzicht.
Net als bij andere packages is het configureerbaar vanuit pfSense.

Darkstat configuratie

Als eerste zijn de Capture interfaces in te stellen. Dit zijn dus de netwerk interfaces waarop darkstat luistert naar verkeer. Standaard staat het ingesteld op LAN. Ik vond dat een beetje vreemd, omdat je dan ook al het interne verkeer ziet, tenminste voor zover het aankomt bij pfSense. Voordeel is wel dat je niet alle port scans als data verkeer ziet. Het is me namelijk niet helemaal duidelijk of hij voor of na de firewall filters meet. Als je wilt kun meerdere interfaces selecteren waarop geluisterd wordt. Dat is ook wat gedaan wordt op andere darkstat configuraties (buiten pfSense) die ik vond.
Als tweede kun je selecteren op welke interfaces de web interface beschikbaar is. Normaal zijn web interfaces alleen vanaf de LAN zijde beschikbaar. Bij darkstat kun je dit selecteren. Ik heb gekozen voor alleen LAN. Toch kan ik hem benaderen vanaf mijn laptop via WLAN (Wifi). Dat komt omdat ik mijn laptop volledige toegang heb gegeven tot mijn LAN, en dus ook tot darkstat vanaf de LAN zijde. Dit soort dingen moet je wel om denken.
De rest van de opties kun je voorlopig zo laten. Het heeft er mee te maken met een “local network” optie in darkstat, waarmee wordt ingeperkt wat darkstat allemaal meet.

Darkstat zelf geeft allereerst een grafische weergave van de hoeveelheid verkeer in de afgelopen 60 seconden, 60 minuten, 24 uur en 31 dagen. Bij mij zijn ze jammer genoeg een beetje leeg, omdat ik heb gespeeld met de opties en de poorten waarop hij meet. Hierbij ben ik alle data van de afgelopen maand kwijt geraakt.

Darkstat grafische weergave

De weergave kan statisch zijn (het moment waarop je darkstat binnenkomt), maar omdat hij real-time meet, is ook een live weergave mogelijk. Daarbij zie je de grafieken constant aangepast worden.

Als tweede heeft darkstat de mogelijkheid om de data per host te laten zien.

Darkstat overzicht per host

Dit zijn dus niet alleen actieve verbindingen. De laatste kolom geeft aan wanneer er voor het laatst gecommuniceerd is. De data In/Out is in bytes. Op deze manier is snel te zien wanneer er veel data naar/van een bepaalde host gaat. Om meer informatie over een bepaalde host te krijgen kun je op het IP adres clicken.

Darkstat details Akamai host

Nu worden details per poort en protocol getoond. Aan mijn kant is het poort 80, en er zijn 3 streams, ieder naar ieder een poort aan de andere host.

Dezelfde host is overigens ook terug te vinden in ntopng. De gegevens qua data komen niet helemaal overeen, maar dat komt omdat beide screenshots niet op hetzelfde moment zijn genomen.

Dezelfde Akamai host in ntopng

Ik weet nu het IP adres en de poort aan mijn zijde (met Mac adres), idem aan de andere zijde, de hoeveelheid data in/out en de protocollen. Hiermee kan ik een inschatting maken of dit normaal verkeer is of niet. Daar gaat het mij om.
Als ik verdacht verkeer zie kan ik een rule aanmaken om het te blokkeren. Bepaalde landen heb ik al geblokkeerd.
Soms blokkeer je al met al ineens teveel. Dan werkt de update van een programma ineens niet meer, of het programma kan zijn licentie niet controleren. Ik zal het hier eens over hebben, zodra ik een paar goede problemen en oplossingen heb.
Ook wil ik port forwarding nog proberen, al heb ik er op dit moment zelf geen toepassing voor.
Reputatie 5
Badge

Een externe firewall deel 7.1


Als je zelf geblokkeerd wordt


Ik blokkeer in pfSense een aantal websites, gebaseerd op de URL’s en op IP adressen. Anderen hebben daarbij de lijsten samengesteld. Ook blokkeer ik hele landen, omdat van daaruit relatief veel hackpogingen worden gedaan. Soms blokkeer ik daarmee teveel. Software wil ineens niet meer updaten, of de online verificatie mislukt. In dat geval moet je overwegen of je een uitzondering wilt maken.

Het kan ook zijn dat een deel van de site niet meer werkt. Mensen die een ad-blocker in de browser hebben zullen bijvoorbeeld wel gemerkt hebben dat de filmpjes op nu.nl niet meer werken, en sommige kranten sites kom je helemaal niet meer op. Ook daar moet je voor jezelf bepalen of je een uitzondering wil maken. Wil je een advertentie site toestaan, of accepteer je dat je niet meer op de website komt.

In theorie zou je misschien de filtering kunnen verfijnen door de webpagina te analyseren en slechts bepaalde delen te blokkeren. Dit vereist wel wat rekenkracht, maar er is nog een ander probleem. Veel websites gebruiken tegenwoordig een https verbinding, waarbij de data versleuteld is vanaf de server tot aan de browser. De firewall kan niet eenvoudig meelezen. Het is in theorie mogelijk om “man in the middle” (MITM) toe te passen. Daartoe moet de firewall alle communicatie onderscheppen, en niet alleen meeluisteren. Als er encryptie sleutels worden uitgewisseld moet de MITM zijn eigen sleutels gebruiken. Voorlopig te gecompliceerd. Ik zal eerst eens een paar voorbeelden geven van problemen waar ik tegen aan ben gelopen, en die ik heb kunnen oplossen

Een Russische website
Kaspersky maakt antivirus producten. Alleen Kaspersky heeft zijn roots (en zijn servers) in Rusland. Ik heb in Geoblock heel Rusland geblokkeerd. Ook kaspersky.com is daarmee geblokkeerd.

Communicatie error met kasperasky.com

De foutmelding geeft al aan dat de server niet te bereiken is. Het is dus niet zo dat de DNS server weigert de domeinnaam om te zetten. Ik kan dit controleren in een cmd window met het ping commando. Ik krijg misschien geen antwoord van de server, maar de naam van de website wordt wel omgezet in een IP adres. Wie een cmd window te onwennig vindt, ook vanuit pfSense kun je een ping uitvoeren.

Ping vanuit pfSense: De naam wordt nog omgezet naar een IP adres

Het ping commando geeft een ip adres, en dat is precies wat we nodig hebben. In dit geval wordt de website geblokkeerd, maar de ping vanaf pfSense zelf doorgelaten. Ik ga eens kijken of ik de geblokkeerde website terug kan vinden in de alerts van pfSense.

Het IP adres (93.159.228.22) is terug te vinden in de alert lijst

Ik kan nu een rule maken in pfSense die dit ip adres doorlaat. De eenvoudigste manier is gebruik te maken van een “easy rule”. Door op het + teken bij het IP adres te clicken, kan pfSense een zelf rule aanmaken om dit IP adres door te laten.

pfSense heeft zelf een pass rule aangemaakt

Het enige probleem is dat de ‘pass’ rule onderaan staat, terwijl de ‘block’ rule bovenaan. Alle rules worden van boven naar onder afgewerkt, en zodra hij een ‘block’ rule tegenkomt die geldig is, worden de andere rules niet meer bekeken. Gelukkig heeft pfSense een eenvoudig mechanisme om een rule te verplaatsen: Selecteer de rule met de checkbox, en click op het anker icoon van de rule waar hij boven moet. Voorlopig kies ik ervoor om hem bovenaan te plaatsen.

Bij een kleine test bleek dat de website nog steeds geblokkeerd wordt. Er is dus nog meer aan de hand. Door nogmaals in de alert logging te kijken krijg ik een goede aanwijzing.

De https site wordt geblokkeerd door de pfB_Top_v4 rule, uit de Country list

Als ik naar de http site ga, word ik vanzelf doorgestuurd naar de https site, die op een andere server, en een andere poort zit.

Ook is er een kans dat de antivirus updates van een andere server komen dan hun webshop. Ik ga dus een ‘alias’ aanmaken, waarin ik meerdere IP adressen kan plaatsen. Als ik even google vind ik dat kaspersky meerdere update servers heeft.



Alleen support.kaspersky.com zit weer in Rusland. We zullen het dus in stapjes moeten doen. Eerst maar eens een alias aanmaken voor meerdere IP adressen:

Alias met meerdere ip adressen van kaspersky

Deze alias met IP adressen kan ik gebruiken om een rule te maken. Zoals vermeld, na kaspersky.com op 93.159.228.22 gaat de browser naar de https site ging op 185.85.15.36. Daarna werd verbinding gezocht met 185.85.15.38 (dat stapje heb ik hier maar even niet getoond) . In de screenshot is ook al een van de update sites te vinden

Omdat ik zowel http (poort 80) als https (poort 443) moet toestaan, ga ik ook een alias maken voor de poorten

Alias list voor de poorten voor websites.

Met deze twee alias lijsten ga ik de easy rule aanpassen zodat die alles voor Kaspersky doorlaat

De aangepaste rule. Bij destination zijn de originele IP- en poort nummers vervangen door de alias naam

Ik kan nu de google link bezoeken, en de lijst met update servers ophalen van hun website uit Rusland. De namen van deze update servers kan ik toevoegen aan mijn alias lijst met IP adressen.



Het is wat werk, maar nu is nog steeds heel Rusland geblokkeerd, met uitzondering van een paar servers.


Een video converter
Ik heb ooit een keer een videoconverter gekocht. Het programma kon sinds pfSense niet meer updaten, maar wat erger was: de licentie controle faalde, waardoor ik ineens weer de test versie had. Gelukkig controleert het programma alles tijdens het opstarten. Door de logging van pfSense gereed te houden en vervolgens het programma op te starten kan ik zien met welke ip adressen men probeert te communiceren. Tenminste, als men direct met een IP adres communiceert, en niet met een hostname.

Ik besluit eerst eens te kijken of er IP adressen gebruikt worden. Zodra het programma opstart en op updates controleert zie ik twee IP adressen voorbij komen die dicht bij elkaar liggen.

Twee verdachte IP adressen in de Alerts

Een goede kans dat ze beide door het bedrijf gebruikt worden. Omdat ik twee IP adressen heb die ik moet toelaten, maak ik een alias aan met de beide IP adressen en geef het een duidelijke naam.

Alias list met de beide ip adressen

Nu kan ik een nieuwe rule aanmaken, die beide IP adressen toelaat. Alle rules worden van boven naar beneden geëvalueerd, dus mijn ‘allow’ moet nog voor de ‘block’ komen, anders heeft het geen zin. pfSense heeft een button om een nieuwe rule bovenaan te plaatsen.
Ik probeer eerst of een LAN rule voldoende is. Als source adres geef ik de PC waarop het programma draait, en als destination mijn alias lijst.

Rule, gebruikmakend van de alias


De twee pass rules staan nog boven de block rules

Nadat ik de nieuwe rule heb opgeslagen en bevestigd dat ik hem wil activeren, doe ik een nieuwe poging het programma opnieuw op te starten. Deze keer klaagt hij nergens over, en komt zelfs met een update. Ik besluit die gelijk te installeren. Dit gaat helemaal goed, alleen na afloop wordt de browser opgestart met een scherm dat geblokkeerd wordt. Waarschijnlijk een ‘gefeliciteerd met uw update’ mededeling. Ik weet de URL, en die wordt ook geblokkeerd als ik hem ingeef in de browser. De URL is ook terug te vinden in de DNSBL logging.



Omdat ik toch nieuwsgierig ben, voeg ik de url, en het hoofddomein toe aan de whitelist van DNSBL. Gewoon de url zoals boven vermeld in een soort tekst editor zetten. Het protocol (http of https) moet je weglaten. Omdat er geblokkeerd werd op de naam van de website, is het op de whitelist plaatsen voldoende. We hoeven geen rule aan te maken.

Twee domeinen toegevoegd aan de DNSBL Custom whitelist

Volgende keer wil ik wat vertellen over als je PC zelf de blokkade veroorzaakt. Ik deel het even op, anders wordt het te veel in een keer.
Reputatie 7
Badge +21
Tnks intressante uitleg. Ik kijk uit naar de volgende! Gr Rob
Reputatie 5
Badge

Een externe firewall deel 7.2



Zelf veroorzaakte problemen


Als je aangevallen wordt, malware hebt, of de browser zaken gaat downloaden waar je geen belang bij hebt, verwacht je dat de firewall je beschermt en al het ongewenste verkeer tegenhoudt. Net zo goed wil je eigenlijk gewoon kunnen browsen op de sites die je altijd al bezocht. Dat lukt niet altijd. De website staat gewoon in Nederland, is betrouwbaar en toch wordt de verbinding soms geblokkeerd.

Ik heb het al eerder vermeld, soms zijn delen van de firewall te kritisch, vooral snort kan hier last van hebben. Soms wordt jouw verzoek om een webpagina geblokkeerd, en soms ook het antwoord van de webserver zelf. Dit komt altijd op ongelukkige momenten. Net als je bezig bent met een aankoop in een webshop, of als je inlogt op een van de gemeentelijke websites via DigID.

Er is iets in de communicatie waarop pfSense en zijn helpers reageren. Als je ook nog gebruik maakt van de optie “block offenders” kan het zijn dat je ineens geen enkele website meer kunt bereiken, en ook ping werkt niet.

De block offenders optie in snort

Vanaf een andere PC werkt het soms nog wel. Dan is het wel duidelijk dat pfSense jouw PC geblokkeerd heeft, omdat het iets verdachts heeft opgemerkt. En dat terwijl je alleen de naam van de website hebt ingevoerd.

Soms zijn de filters iets te kritisch. Ik heb gemerkt dat vooral snort daar last van heeft. Het kan zijn dat ik wel een simpele website heb ingegeven, maar dat er in het proces van beveiliging een URL wordt gegenereerd dat door snort als een “double decoding attack” wordt gezien, of iets anders verdachts. Op het pfSense forum heeft men het onder andere over het overgaan van een onbeveiligde http naar een beveiligde https verbinding.

Blokkade door pfSense valt eerst niet op, je gaat naar een normale website, maar er komt geen antwoord. Na een tijdje begint je te vermoeden dat pfSense wel eens de oorzaak kan zijn. Dan moet je zoeken of je eigen lokale IP adres, of je ziggo adres in de alert lijst voorkomt. Als je die hebt gevonden, kun je een uitzondering maken in de alerts.

Je kunt in theorie alles van/naar je eigen PC als uitzondering aanmerken, en alles toestaan. Alleen als je dan een keer malware op je PC hebt, wordt het ook niet opgemerkt. Immers: jouw PC staat op de lijst waarbij alles toegestaan is.

Ik wil dus alleen uitzondering maken voor de lichte overtredingen, zoal kleine foutjes in de communicatie.

Ik heb nu een paar maal gehad dat de communicatie opeens weg was, en heb de “block offenders” dus ook even uit staan. In alle gevallen is terug te vinden in de logging van pfSense waarom de communicatie geblokkeerd is. pfSense is gelukkig zo ingericht, dat ik altijd vanaf mijn LAN met de browser in pfSense zelf kan komen.

Het is handig als je twee dingen weet:
  • Het lokale IP adres van de PC waarop je werkte
  • Het IP adres aan de WAN zijde. Als je modem in bridge staat, is dat je IP adres van Ziggo, anders is dit het IP adres dat je van het modem krijgt.

Geen nood: beiden zijn in pfSense te vinden. Je hoeft geen nerd te zijn die zijn eigen IP adres uit zijn hoofd weet :)

IP adresssen in de ARP tabel in pfSense. Van boven af:
  • De ziggo gateway (ter herkennen aan het ip adres eindigend op .1
  • Het IP adres dan ik van ziggo heb
  • Twee apparaten met een intern IP adres


Met de IP adressen kun je in de diverse Alert lijst kijken of ze voorkomen als 'Source', of als 'Destination'.
Als het IP adres bij source staat, is die PC de veroorzaker. Als hij bij destination staat, is de server aan de andere kant de veroorzaker.

De alert logs kunnen in het begin een beetje verwarrend zijn, want er lijken drie of vier verschillende lijsten te zijn.

1. De pfBlocker Alert log

pfBlocker Alerts

Deze kom je waarschijnlijk als eerste tegen, en wel omdat hij simpelweg onder: Firewall > pfBlocker > Alerts zit. Hier vind ik vooral overtredingen van de IP4 alert lijsten.
Als je op een groene i clicked gaat hij met het ip adres naar een ‘Threat lookup’, een lijst van web adressen die allerlei informatie over bedenkelijke IP adressen bijhouden.

Een lijst met bestrijders van spam, malware en andere zaken

Het IP adres waar de i bij stond wordt meegegeven, zodat meteen wordt getoond wat bekend is over het IP adres. Je kunt zelf kiezen welke website je gebruikt. De een geeft aan of het adres al op een bekende block-lijst staat, de ander met welke malware hij in verband wordt gebracht.

Terug naar de alert lijst: Met een + kun je de lijst toevoegen aan de suppress lijst (of de whitelist voor DNSBL). Daarmee heb je van deze alert (eventueel alleen voor dat IP adres) geen last meer.


2. De System logs.
Je kunt hier op twee manieren komen, maar als je al bij de bovenstaande pfBlocker bent, click dan op 'firewall logs' op het menu eronder.

Afhankelijk van hoe je pfSense instelt, zullen veel alerts hier samen komen. Je hebt hier ook mogelijkheden om rules op de suppression list te zetten.

De system log met alerts

Dit zijn niet alleen malware waarschuwingen, er staat ook veel waarschuwingen in voor protocol fouten. Daarom staat hier onder andere ook het protocol vermeld.
We hebben hier vier punten waar we op kunnen clicken

- Een rode x: Hiermee wordt overtreding permanent geblokkeerd
- Een witte i: Deze zoekt een naam bij het IP adres
- Een groene - Deze voegt het IP adres toe aan de block list. Het IP adres is daarmee helemaal geblokkeerd
- Een groene + Deze zal dit verkeer op in het vervolg doorlaten

Deze informatie krijgt je ook als je er met de muiscursor op gaat staan.

3. De snort Alert log
Snort heeft zijn eigen Alert log, dat dankzij Barnyard uitgebreide filtermogelijkheden heeft.

Snort alert log

Ook hier mogelijkheden voor:
  • Naam bij IP adres zoeken
  • Toevoegen aan de suppress list, gebaseerd op source IP of destination IP
  • De regel waarop snort alarm heeft geslagen permanent onderdrukken

Als een IP adres rare dingen doet, kun je filteren op IP adres, om te zien hoe lang hij al bezig is (dat heb ik behandeld in deel 5)
Bij mij staat hij vol met ET SCAN en ET COMPROMIZED die kijken of er bij mij poorten open staan. Het zijn vooral bekende poorten 22 (SSH) en 5060 (SIP). Als je het modem niet in bridge mode hebt staan, vangt de firewall in het modem dit voor je af.

4. De dnsbl log
Dit is de lijst met alle websites, die door de dnsbl functie niet naar een IP adres zijn omgezet, en die de PC dus niet door de PC bereikt konden worden.

De dnsbl list

Vaak staat deze vol met advertentie verstrekkers. Soms wordt er legale site geblokkeerd, of althans een die je wel wilt bezoeken. Dat is dan ook hier terug te vinden.

Ik heb een paar maal gehad dat een software programma niet kon updaten, of dat ik een Nederlandse website niet kon bereiken. Soms ging de hoofdwebsite nog wel, maar ging ergens iets met DigID fout. De website mijnoverheid.nl was ineens onbereikbaar, terwijl ik een bericht in mijn brievenbus had.

Dan ga je stuk voor stuk de bovenstaande alert logs bij langs, om te kijken of je eigen ip adressen in een alert log voorkomen. Als je een alert vindt, moet je voor jezelf uitmaken of er daadwerkelijk iets aan de hand is, of dat het alleen een probleem met de communicatie is.
Gelukkig hebben vrijwel alle logs een mogelijkheid om voor dat probleem een uitzondering te maken. Soms is het alleen voor dat ene lokale IP adres opgelost, maar omdat ook de uitzonderingen zijn aan te passen, is dat vaak ook op te lossen.

Dat wil nog niet zeggen dat alles goed gaat. Je komt nu wel bij de website, maar de webpagina van de server zelf wordt alsnog geblokkeerd. Nog een keer door de lijst om te zien waar het probleem zit.
Als je de uitzondingen goed maakt, zijn dat soort problemen gelijk bij alle websites opgelost.

De suppress lijst

Hierboven is een voorbeeld van een gegenereerde suppress lijst, die dus bepaalde regels onderdrukt. Het lijkt moeilijk te lezen, maar dat hoeft ook niet. Er is nog net te lezen welke rule onderdrukt wordt. Bij de onderste stond mijn lokale IP adres, die heb ik weggehaald om het voor alle IP adressen te laten gelden (het is gewoon een tekst bestandje)


Een vervelend probleem was een betaling via iDeal. Na afloop ga je weer terug naar de website, alleen die werd om een of andere reden geblokkeerd. Toen ik het probleem gevonden had (of althans ik dacht het) weigerde de website voor de tweede maal de inhoud van de pagina te versturen. Een soort beveiliging aan de kant van de server dus.

Tenslotte: Een Nice Catch
Omdat ik toch nog regelmatig in de alert logs kom, zag ik opeens dit in de alert log van Snort:

Hadsruda in de snort log

Links staat het source adres (mijn adres dus), rechts de bestemming. Ik wordt constant gescant door een tool Supviscious scan. Maar op de 5e regel van boven staat opeens MALWARE-CNC, een Trojan met de naam Hadsurda. En het is afkomstig van mijn IP adres.

Ik ben altijd erg voorzichtig met downloaden, maar er kan altijd iets doorslippen, of meekomen met andere software. Dat lijkt nu gebeurd. Het is gebeurd rond 20:22. Ik weet nog wat ik toen gedaan heb, maar ook in de DNSBL log hierboven is te zien wat ik toen deed.
Het kan toeval zijn, maar rond die tijd heb ik een update van Divx geïnstalleerd. Je moet een beetje voorzichtig zijn met dit soort afgeleide conclusies, maar het is wel toevallig.
Als ik even zoek op het internet naar Hadsruda vind ik:


In this case, Program:Win32/Hadsruda!bit may install other adware, toolbars, browser redirect, and hijack the home page of affected browser.


Het wordt niet als virus beschouwt, maar als een PUP, een Potential Unwanted Program. Het kan een programma zijn dat een toolbar installeert, of adware installeert, bijvoorbeeld in de browser.

pfSense met Snort heeft voor mij tegengehouden dat het kon communiceren met zijn thuisbasis, en andere dingen ophalen, en Adwcleaner wist het voor mij te verwijderen. Overigens staat het IP adres waarmee het probeerde te verbinden (54.76.37.1) ook al op de firehol blocklist. Ook als het niet was herkend, was het tegengehouden.

Dit is dus een van de alerts die ik mooi actief laat.
Reputatie 7
Badge +31
Wederom heerlijk om te lezen.:D