Welke applicatie neemt contact op met wie op het internet? Met Little Snitch voor Linux is die vraag snel beantwoord. Ongewenste verbindingen kunnen met één klik geblokkeerd worden.
Netwerkverkeer zichtbaar maken
Linux staat erom bekend zorgvuldig te zijn met gegevens en niet voortdurend data naar huis te sturen. Toch maken Linux-systemen elke dag verbindingen met het internet zonder daar toestemming voor te vragen. Welke systeemdiensten en applicaties min of meer heimelijk verbindingen met het internet maken en met wie ze gegevens uitwisselen, blijft voor de meeste gebruikers echter verborgen.
Voor Christian Starkjohann van het Oostenrijkse softwarebedrijf Objective Development was dat de reden om zijn zeer populaire macOS-netwerkmonitor Little Snitch te porten naar Linux.
OpenSnitch, een opensource netwerkmonitor met een firewall en een groot aantal functies, was al gemodelleerd naar Little Snitch voor macOS. Little Snitch voor Linux is daarentegen slechts gedeeltelijk opensource.
De focus ligt echter op netwerkmonitoring. De van macOS bekende functie waarbij Little Snitch toestemming vraagt voor elke nieuwe netwerkverbinding van een applicatie is niet beschikbaar onder Linux. Wel kun je het netwerkverkeer live monitoren en vervolgens met één klik toestaan of weigeren.
Je kunt ook hele domeinen blokkeren, bijvoorbeeld om reclame te voorkomen, en dergelijke blokkadelijsten delen met vrienden. Je kunt je regels via een database-export zelfs overzetten naar een tweede computer, zoals een laptop.
Little Snitch voor Linux is sinds begin april te downloaden op de website van Objective Development als kant-en-klaar pakket voor op Debian, RPM en Arch gebaseerde distributies en voor verschillende processorplatformen. In tegenstelling tot de macOS-versie is de Linux-versie gratis.
Installeren
Installatie gebeurt met de pakketbeheerder, onder Debian en Ubuntu bijvoorbeeld met behulp van sudo apt install of onder CachyOS, Manjaro, Arch Linux en andere op Arch gebaseerde distributies met sudo pacman -U. Voorwaarde is wel dat de kernel van de distributie de Extended Berkeley Packet Filters (eBPF) ondersteunt.
Getest zijn kernels vanaf versie 6.12, waarmee Little Snitch ook draait onder Debian 13 en Ubuntu 24.04 LTS. Systemd vertelt je of de installatie is gelukt en of Little Snitch draait:
sudo systemctl status littlesnitch

Als daar de meldingen ‘did attatch eBPF programs’ en ‘entering main loop’ verschijnen, is alles in orde. Systemd rapporteert ook de URL van de webinterface, standaard is dat http://127.0.0.1:3031/.

Opletten
Dat werkt dankzij de vooraf ingestelde filterregel van Little Snitch: standaard zijn voor alle lokale processen lokale netwerkverbindingen expliciet toegestaan. Die regel heeft prioriteit 3 en dus een hogere prioriteit dan normale regels (1).
Er zijn in eerste instantie niet meer regels, vooral geen regels die verbindingen verhinderen. Little Snitch leest in eerste instantie alleen het dataverkeer en logt wie met wie praat via welke verbinding en wanneer.
Het Connections-overzicht is de startpagina van de webinterface. Daar kun je in één oogopslag zien welke processen het afgelopen uur verbindingen hebben gemaakt met het lokale netwerk of het internet. Je kunt de bestemming van de verbinding en de kijkperiode wijzigen. Het filter biedt verschillende tijdsperioden van één minuut tot 30 dagen.
Een dag laat zien wanneer update- en cronprocessen worden uitgevoerd en waar die verbindingen tot stand komen. Met de wekelijkse en maandelijkse weergave kun je ook de zeer zeldzame voorvallen zien.
Voorgesorteerd
Standaard worden de verbindingen per toepassing gesorteerd op de tijd van de laatste toegangspoging. De actieve verbindingen staan bovenaan. Het groene stoplicht in de kolom Rules geeft aan dat de toegang succesvol was. Er kunnen geen rode stippen te zien zijn als je nog geen verbindingen geblokkeerd hebt.
Als je de verbindingslijst van een proces opent, kun je zien naar welke domeinen en onder welke IP-adressen en poorten de verbindingen tot stand gekomen zijn.
Little Snitch probeert die slim te groeperen. In Chrome staan bijvoorbeeld verbindingen met google.com – zelfs als de verbindingen met verschillende Google-servers tot stand gebracht zijn. Er staat ook een groene punt achter het domein omdat de toegang tot alle subdomeinen of IP-adressen uiteindelijk gelukt is.
Het feit dat Little Snitch die verkeerslichten op verschillende niveaus weergeeft, helpt je om met een paar klikken je eigen regels te maken. Maar voordat je begint met het beperken van dataverkeer, moet je Little Snitch eerst een dag of twee op de achtergrond laten draaien en het dataverkeer van je computer in de gaten houden.
Dat geeft je niet alleen een overzicht van welke verbindingen dagelijks nodig zijn, maar je kunt ook makkelijker je eigen regels toevoegen met behulp van het stoplichtsysteem.
Van uitzondering naar regel
Als je bijvoorbeeld wilt voorkomen dat ScorecardResearch je Twitch-gebruiksgedrag analyseert, open dan de verbindingsgegevens van de toepassing chrome, firefox-bin of firefox-esr, afhankelijk van je browser, en zoek naar het domein scorecardresearch. com en klik op het groene stoplicht erachter.
Het verkeerslicht voor dat domein en voor alle verbindingen die eronder worden samengevat springt dan op rood en het dataverkeer wordt dan onmiddellijk geblokkeerd.
Je kunt zien hoe de regel die door Little Snitch is gemaakt eruit ziet in de Rules-weergave. Omdat je die hebt gemaakt door op het verkeerslicht in de webinterface te klikken, is de regel beperkt tot precies die toepassing.
Om dat te doen, voert Little Snitch het volledige pad van de toepassing in als het ‘primaire programma’, bij Firefox bijvoorbeeld /snap/firefox/*/usr/lib/firefox/firefox.
Als je later Twitch in een andere browser opent, wordt ScorecardResearch niet geblokkeerd, je hebt dan een andere regel voor die andere browser nodig of je kunt het pad naar de browser uit de bestaande regel verwijderen zodat die op elk proces van toepassing is.

Geblokkeerd
Er is nog een derde optie: de blocklist. Daar kun je hele domeinen of individuele hosts mee aan de index toevoegen waarnaar je geen verbindingen meer wilt toestaan – ongeacht het proces en het pad. Om dat te doen, klik je eerst onder Blocklists links op User Maintained Blocklist en daarna rechts op het plusje bij Blocklist Details.
Je kunt dan meerdere domeinen en hosts invoeren die je wilt blokkeren – één per regel. Subdomeinen zijn altijd inbegrepen. Het grote pluspunt van de blocklists is dat je ze kunt integreren vanuit externe bronnen. Je kunt een eenvoudige tekstlijst met de namen van geblokkeerde domeinen bijhouden op je eigen website, ze zelf toevoegen aan Little Snitch of de URL delen met vrienden.
Om zo’n gedeelde blokkadelijst toe te voegen, klik je op het plusteken naast Blocklists links in het venster en voer je vervolgens de URL en update-interval in. Onder Combined List staan alle geblokkeerde domeinen van alle bronnen gecombineerd. Dat maakt het makkelijker om uit te zoeken of een bepaald domein al op de blokkadelijst staat.

Je kunt ook overschakelen naar het Connections-overzicht, waar verboden als gevolg van vermeldingen op de blocklists worden aangeduid door een blokkeringsteken in plaats van een rood stoplicht.
Stoplichten
Als Little Snitch een deel van de aanvragen van een applicatie blokkeert, toont het verbindingsoverzicht een rode pijl achter het groene verkeerslicht van de applicatie. Klik op die pijl om te zien wat er geblokkeerd is.
Omgekeerd staat er een groene pijl achter een rood stoplicht als individuele toegang is toegestaan vanwege uitzonderingen. Als je op de geblokkeerde verbinding onder een applicatie klikt, kun je bij de verbindingsdetails onder Matching rules zien welke regels op die verbinding zijn toegepast en welke regel uiteindelijk heeft besloten of de verbinding is toegestaan of geblokkeerd.
Als je op een van die regels of een item in de blocklists klikt, schakelt Little Snitch onmiddellijk over naar de bijbehorende weergave. Daardoor kun je individuele rules met een paar klikken aanpassen als je je bijvoorbeeld realiseert dat je ze moet aanscherpen.
Een bijzonder praktische functie is dat de verkeerslichten in het verbindingsoverzicht automatisch worden bijgewerkt telkens wanneer een regel gewijzigd wordt. Dat betekent dat je meteen kunt zien of verbindingen uit het verleden toegestaan of verboden zouden zijn met de huidige ingestelde regels.
Het is daarom bijzonder handig als Little Snitch de verbindingen van een normale dag heeft opgeslagen voordat je begint met het instellen van je eigen regels.
Regels voor de regels
Er zijn twee fundamenteel verschillende benaderingen voor het instellen van regels: Je kunt individuele verbindingen blokkeren of je kunt in principe alle verbindingen blokkeren en alleen expliciet toestaan wat je kent. Die laatste aanpak beschermt de privacy beter, maar is ook onderhoudsintensiever.
Je moet er ook rekening mee houden dat programma’s niet meer werken zoals je gewend bent en er ook rekening mee houden dat dit kan komen door ontbrekende permissies in Little Snitch.
Alles dichttimmeren
Als je voor de rigoureuze aanpak kiest, moet Little Snitch het dataverkeer minstens één dag geregistreerd hebben, zoals we al eerder aangaven. Begin dan met het blokkeren van alle verbindingen. Om dat te doen, maak je een nieuwe regel aan in de Rules-weergave waarin geen programma is gespecificeerd en die contact in alle richtingen met elke server verbiedt.
Belangrijk: die regel moet prioriteit 0 krijgen zodat hij ná alle andere regels uitgevoerd wordt, vooral na de standaardregel, die toegang van localhost naar localhost toestaat, zodat je de webinterface kunt blijven benaderen. In het verbindingsoverzicht veranderen dan alle verkeerslichten in rood en is je computer afgesloten van het internet.
Om een browser weer pagina’s op internet te laten oproepen, klik je op het rode stoplicht achter het proces van de gebruikte browser (chrome, chromium, firefox-bin en dergelijke). Dat is echter niet genoeg, want name-resolving via de router wordt ook geblokkeerd.
Dat staat onder Not identified inderdaad als bijvoorbeeld fritz.box. Pas als je dat stoplicht op groen zet, werkt name-resolving weer.
Als je een NAS, een netwerkprinter of andere lokale apparaten hebt, kan het zinvoller zijn om niet alleen de verbinding met de router in te schakelen, maar ook het dataverkeer binnen het hele lokale netwerk toe te staan.
Om dat te doen, maak je een nieuwe regel aan met prioriteit 2, die Local Network bevat als Remote type en verbindingen in beide richtingen toestaat.
Daarmee krijg je weer toegang tot alle lokale apparaten, inclusief name-resolving via je router.
Finetuning
Je moet niet bij alle toepassingen simpelweg op het stoplicht in de Connections-weergave klikken om een nieuwe regel te maken. Je geeft de applicatie dan namelijk onbeperkte toegang tot het internet.
Dat is heel logisch voor een browser, maar andere toepassingen hebben niet zo’n vrijbrief nodig. Mailclients zoals Thunderbird hebben bijvoorbeeld slechts zeer beperkte internettoegang nodig, namelijk tot de mailprovider. Het is daarom voldoende om alleen die verbindingen te autoriseren.
Open het thunderbird-proces in het Connections-overzicht en klik alleen op het rode stoplicht voor het domein van de mailprovider. Dat levert dan een nieuwe regel op die alleen verbindingen met dat domein toestaat.
Als je bijvoorbeeld tweefactor-authenticatie gebruikt via een authenticator-app, is die ene autorisatie misschien niet voldoende. Monitor dan in Little Snitch welke andere verbindingen Thunderbird opent en geef die ook vrij via het stoplicht.
Replicatie
Little Snitch slaat (onder andere) de regels op in de SQLite-database /var/lib/ littlesnitch/rules.sqlite. Je kunt die bijvoorbeeld openen met de commandlinetool sqlite3 en de inhoud handmatig aanpassen met rootrechten.
Dat kan nodig zijn als je jezelf hebt buitengesloten van de webinterface. Schakel dan eerst Little Snitch uit om weer toegang te krijgen tot het netwerk met:
sudo systemctl stop littlesnitch
Daarmee werkt ook het pakketbeheer weer, zodat je sqlite3 eventueel opnieuw kunt installeren. Open vervolgens de rule-database met rootrechten:
sudo sqlite3 /var/lib/littlesnitch/rules.sqlite
Deactiveer vervolgens het Little Snitch-netwerkfilter voor de volgende start en sluit sqlite3 af :
INSERT INTO GlobalSettings VALUES 1 ( ) ;
.quit
Start Little Snitch dan opnieuw op en verhelp de fout via de webinterface:
sudo systemctl start littlesnitch
Je kunt sqlite3 ook gebruiken om regels over te zetten naar een andere Linux-computer. Om dat te doen, open je eerst de database met sqlite3, zoals zojuist getoond, en exporteer de inhoud van de regeltabel Rule naar het bestand rules. sql:
. output rules.sql
. dump Rule
.quit
Het rules-bestand bevat de volledige SQL-commando’s om de rule-database helemaal opnieuw op te bouwen. Kopieer rules.sql naar een tweede computer, schakel Little Snitch uit met systemctl zoals hierboven getoond en open de rule-database met sqlite3. Voer daar de volgende commando’s uit:
DROP TABLE Rule;
.read rules.sql
Het eerste commando verwijdert de bestaande rule-tabel, daarna leest het tweede commando de SQL-commando’s uit het bestand en gebruikt deze om alle regels opnieuw aan te maken. Als je zeker wilt weten dat het importeren is gelukt, kun je het commando
select * from Rule;
gebruiken om de inhoud van de regeltabel weer te geven. Sluit sqlite3 af met .quit en herstart Little Snitch via systemctl, waarna de nieuwe regels toegepast worden.
Conclusie
Little Snitch is een praktische netwerkmonitor waarmee je onder Linux snel een uitgebreid overzicht krijgt van welke applicaties contact met internet opnemen of op een andere manier data over het internet heen en weer sturen.
Vergeleken met de macOS-versie ontbreken enkele functies, zoals een kaart met de locatie van de gecontacteerde servers of een melding van nieuwe netwerkverbindingen.
Het Connections-overzicht is niettemin informatief en biedt een eenvoudige en handige manier om verbindingen te blokkeren of toe te staan met behulp van het stoplichtsysteem. De nadruk ligt echter duidelijk op de netwerkmonitorfunctie, die bij processen onmiddellijk aangeeft wanneer ze gegevens uitwisselen via internet.
Praat mee