In dit artikel wordt de volledige configuratie van DPI en alles wat daarmee samenhangt niet behandeld, en de wetenschappelijke waarde van de tekst is minimaal. Maar het beschrijft de eenvoudigste manier om DPI te omzeilen, iets wat veel bedrijven over het hoofd hebben gezien.

Waarschuwing ā1: dit artikel heeft een onderzoekscharacter en moedigt niemand aan om iets te ondernemen of te gebruiken. Het idee is gebaseerd op persoonlijke ervaring, en eventuele overeenkomsten zijn toevallig.
Waarschuwing ā2: het artikel onthult geen geheimen van Atlantis, de zoektocht naar de Heilige Graal en andere raadsels van het universum, al het materiaal is vrij toegankelijk en mogelijk al meerdere keren op Habr beschreven. (ik heb geen URL gevonden, zou dankbaar zijn voor een link)
Voor degene die de waarschuwingen hebben gelezen, laten we beginnen.
Wat is DPI?
DPI of Deep Packet Inspection is een technologie voor het verzamelen van statistische gegevens, het controleren en filteren van netwerkpakketten. Het analyseert niet alleen de headers van pakketten, maar ook de volledige inhoud van het verkeer op de niveaus van het OSI-model vanaf de tweede laag en hoger, wat het mogelijk maakt om virusdetectie uit te voeren, informatie te filteren die niet aan bepaalde criteria voldoet.
Er zijn twee soorten DPI-verbindingen die worden beschreven :
Passieve DPI
DPI dat parallel is aangesloten op het netwerk van de provider (niet in doorsnede), of via een passieve optische splitter, of door gebruik te maken van spiegeltjes van het uitgaande gebruikersverkeer. Een dergelijke verbinding vertraagt de snelheid van het netwerk van de provider niet in het geval van onvoldoende prestaties van de DPI, waardoor het wordt toegepast door grote providers. DPI met dit type verbinding kan technisch gezien alleen pogingen tot het aanvragen van verboden inhoud detecteren, maar kan deze niet blokkeren. Om deze beperking te omzeilen en toegang tot een verboden website te blokkeren, stuurt de DPI een speciaal gevormd HTTP-pakket met een omleiding naar de onderbrekingspagina van de provider naar de gebruiker die de geblokkeerde URL aanvraagt, alsof zo'n antwoord door de gevraagde bron zelf zou zijn verzonden (het IP-adres van de afzender en de TCP-volgorde worden vervalst). Omdat de DPI fysiek dichter bij de gebruiker staat dan de gevraagde website, bereikt het vervalste antwoord het apparaat van de gebruiker sneller dan het echte antwoord van de site.
Actieve DPI
Actieve DPI is de DPI die op de gebruikelijke manier is aangesloten op het netwerk van de provider, net als elk ander netwerkapparaat. De provider configureert de routering zodat de DPI verkeer ontvangt van gebruikers naar geblokkeerde IP-adressen of domeinen, en de DPI neemt vervolgens de beslissing om verkeer toe te laten of te blokkeren. Actieve DPI kan zowel outgoing als incoming verkeer inspecteren, maar als de provider DPI alleen toepast voor het blokkeren van sites uit een register, wordt deze meestal ingesteld op het controleren van alleen outgoing verkeer.
Het type verbinding beĆÆnvloedt niet alleen de effectiviteit van het blokkeren van verkeer, maar ook de belasting op de DPI, daarom is het mogelijk om niet al het verkeer te inspecteren, maar alleen specifiek verkeer:
"Gewone" DPI
Met "gewone" DPI wordt bedoeld dat deze type DPI een bepaald type verkeer filtert, slechts op de meest voorkomende poorten voor dat type. Bijvoorbeeld, "gewone" DPI identificeert en blokkeert verboden HTTP-verkeer alleen op poort 80, en HTTPS-verkeer op poort 443. Dit type DPI zal geen verboden inhoud volgen als je een verzoek met een geblokkeerde URL naar een niet-geblokkeerd IP of een niet-standaard poort verzendt.
"Volledige" DPI
In tegenstelling tot "gewone" DPI, classificeert dit type DPI verkeer ongeacht het IP-adres en de poort. Zo zullen geblokkeerde websites niet openen, zelfs niet als je een proxyserver gebruikt op een geheel andere poort en een niet-geblokkeerd IP-adres.
Gebruik van DPI
Om de snelheid van gegevensoverdracht niet te verminderen moet "gewone" passieve DPI worden gebruikt, die effectief blokkeren? van welke? bronnen mogelijk maakt, de standaardconfiguratie ziet er als volgt uit:
- HTTP alleen filteren op poort 80
- HTTPS alleen op poort 443
- BitTorrent alleen op poorten 6881-6889
Maar er beginnen problemen als de bron een andere poort gebruikt om gebruikers niet te verliezen, dan zal elk pakket gecontroleerd moeten worden, ter illustratie:
- HTTP werkt op poort 80 en 8080
- HTTPS op poort 443 en 8443
- BitTorrent op elk ander bereik
Hierdoor moet je ofwel overstappen naar "Actieve" DPI, of blokkeren met behulp van een extra DNS-server.
Blokkeren met behulp van DNS
Een van de manieren om toegang tot een bron te blokkeren, is door DNS-aanvragen te onderscheppen met een lokale DNS-server en de gebruiker het IP-adres van een 'afsluiter' te geven in plaats van de gewenste bron. Maar dit biedt geen gegarandeerd resultaat, aangezien er mogelijkheden zijn om adresvervanging te voorkomen:
Optie 1: Het bewerken van het hosts-bestand (voor desktop)
Het hosts-bestand is een integraal onderdeel van elk besturingssysteem, waardoor het altijd gebruikt kan worden. Om toegang tot de bron te krijgen, moet de gebruiker:
- Het IP-adres van de gewenste bron achterhalen
- Het hosts-bestand openen voor bewerking (administratieve rechten vereist), dat zich bevindt in:
- Linux: /etc/hosts
- Windows: %WinDir%System32driversetchosts
- Een regel toevoegen in het formaat:
- Wijzigingen opslaan
Voordeel van deze methode is de complexiteit en de vereiste administratieve rechten.
Optie 2: DoH (DNS over HTTPS) of DoT (DNS over TLS)
Deze methoden beschermen tegen adresvervanging van DNS-aanvragen door middel van encryptie, maar de implementatie wordt niet door alle applicaties ondersteund. Laten we de eenvoud van het instellen van DoH voor Mozilla Firefox versie 66 vanuit het perspectief van de gebruiker bekijken:
- Ga naar het adres in Firefox
- Bevestig dat de gebruiker alle risico's accepteert
- Wijzig de waarde van de parameter network.trr.mode door:
- 0 ā uitschakelen TRR
- 1 ā automatische selectie
- 2 ā DoH standaard inschakelen
- De parameter wijzigen network.trr.uri door de DNS-server te kiezen
- Cloudflare DNS:
- Google DNS:
- De parameter wijzigen network.trr.boostrapAddress door:
- Als Cloudflare DNS is gekozen: 1.1.1.1
- Als Google DNS is gekozen: 8.8.8.8
- Wijzig de waarde van de parameter network.security.esni.enabled en een werkende opdracht krijgen. true
- Controleer de juistheid van de instellingen met behulp van
Hoewel deze methode gecompliceerder is, vereist het geen administratieve rechten van de gebruiker, en zijn er ook vele andere manieren om DNS-aanvragen te beschermen die niet in dit artikel zijn beschreven.
Optie 3 (voor mobiele apparaten):
Gebruik de app van Cloudflare voor en .
Testen
Om de afwezigheid van toegang tot bronnen te verifiƫren, is tijdelijk een domein gekocht dat op het grondgebied van de Russische Federatie is geblokkeerd:
Conclusie
Ik hoop dat dit artikel nuttig zal zijn en niet alleen de beheerders aanmoedigt om zich dieper in het onderwerp te verdiepen, maar ook begrip biedt dat bronnen altijd aan de zijde van de gebruiker zullen zijn, en dat het zoeken naar nieuwe oplossingen een integraal onderdeel voor hen moet zijn.
Nuttige links
Aanvulling buiten het artikelDe test op Cloudflare kan niet worden doorlopen in het netwerk van Tele2, en een correct geconfigureerde DPI blokkeert de toegang tot de testsite.
P.S. Dit is vooralsnog de eerste provider die correct middelen blokkeert.
Bron: habr.com
