1
Vraag
2
Reageer en help mee
kzin

Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

Een externe firewall (gebruikers blog)

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.
32 Reacties 32
level4

Level 1
  • 2516Posts
  • 129Oplossingen
  • 153Likes
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 :).
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes
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
level4

Level 1
  • 2516Posts
  • 129Oplossingen
  • 153Likes
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.
Thijs Z
Oud Community Moderator
Oud Community Moderator
  • 3070Posts
  • 318Oplossingen
  • 230Likes
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. 🙂
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

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.
level4

Level 1
  • 2516Posts
  • 129Oplossingen
  • 153Likes
Mooi beschreven vervolg weer! 🙂

kzin wrote:
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.
Richard G.

Level 16
  • 1688Posts
  • 84Oplossingen
  • 857Likes
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.
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

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.
Jonathan-458

Level 16
  • 2489Posts
  • 168Oplossingen
  • 498Likes
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
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes
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.
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

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.
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

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.
otten

Level 1
  • 4Posts
  • 0Oplossingen
  • 0Likes
level4 wrote:
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
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes

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.

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.
Random

Level 16
  • 2161Posts
  • 101Oplossingen
  • 1125Likes
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.
kzin
Topicstarter
Level 3
  • 328Posts
  • 29Oplossingen
  • 83Likes
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
Random

Level 16
  • 2161Posts
  • 101Oplossingen
  • 1125Likes
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.
Random

Level 16
  • 2161Posts
  • 101Oplossingen
  • 1125Likes
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.
Random

Level 16
  • 2161Posts
  • 101Oplossingen
  • 1125Likes
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.



E-mail notificaties
Aan Uit

Ontvang een update bij nieuwe reacties in dit topic.

Uitgelicht topic