DNS på non-standard port - !53

Domain Name System er en stor hierarkisk database med alle vores domænenavne - herunder .dk

Dette system har fungeret i snart 30 år som en afløser for hosts filen som sammenkoblingen af et hostnavn og en IP-adresse. Idag bruger vi allesammen DNS, men jeg tror de færreste tænker over hvor vigtigt det er for vores oplevelse af internet. Det er krumptappen som gør at selvom alt andet i forbindelsen virker, så virker browseren og applikationerne næppe uden DNS.

Når vi så bruger DNS ved de færreste også at DNS er hamrende usikkert, både imod opsamling af pakkerne, ændring af pakkerne i lokalnet og ændring af pakkerne længere ude på internet. Faktisk er vi jo i Danmark kommet så vidt at vi tillader at vores udbydere skal pille ved en central del af infrastrukturen for at tilgodese en mediabranche ude af trit med virkeligheden.

En del af problemet kan løses med DNSSEC, som kan sætte signatur på DNS navne, således at man kan verificere at svaret man får tilbage rent faktisk er rigtigt, autoritativt og signeret med DNSSEC. Det anbefales således at bruge en DNSSEC enablet resolver når man slår navne op på internet.

Jeg har tidligere talt om et godt alternativ til udbyderens navneservere, som hedder Dnssec-trigger
http://www.nlnetlabs.nl/projects/dnssec-trigger/ Dette stykke software gør det nemt at bruge DNSSEC idet softwaren starter en lokal Unbound DNS server på din laptop, med et GUI der midlertidigt kan slå den fra under login til captive portales m.v. - den løsning bruger jeg, og har dermed censurfri DNS overalt.

Men hvad så hvis ISP'en laver deep-packet-inspection på DNS pakkerne? Så kan denne udbyder jo stadig sniffe og ændre på pakkerne (mange har ikke slået DNSSEC til).

Så er der ihvertfald to måder at komme omkring det på er (udover VPN ud af ISP'ens netværk som også er oplagt for mange). Den jeg vil beskrive idag er at bruge en anden port til DNS. Fordelen ved denne metode er at den ikke nødvendigvis kræver installation af ny software.

Skift DNS til en anden port

Normalt bruger DNS port 53/udp, og mange ved slet ikke at den også falder tilbage på 53/tcp. Det vil således være nemt at blokere for brugen af en anden DNS ved at blokere alle pakker til port 53. Det vil også være naturligt at deep-packet-inspection kun kigger efter DNS i traffik på port 53. Det vil tage DNS for næsten alle opslag, men sådan er det heldigvis ikke mere!

Censurfridns som er en gratis DNS service med udgangspunkt i Danmark har nemlig udvidet servicen til at kunne bruges på en ny port 5353. Du kan læse mere om Censurfri DNS og censur på http://www.censurfridns.dk/ og http://blog.censurfridns.dk/

Der vil du finde de nuværende IP-adresser for denne service:

Update 22/9 2014

ns2 bortfalder, tak til commendo

  • anycast.censurfridns.dk / 91.239.100.100 / 2001:67c:28a4::
  • ns1.censurfridns.dk / 89.233.43.71 / 2002:d596:2a92:1:71:53::
    --- update slut

Disse svarer som sædvanligt på port 53/udp og 53/tcp - så normalt indtaster man blot adresserne fra ovenstående og så bruger man censurfri DNS :-)

Antager vi så nu at denne port er blokeret af en eller anden årsag så kan du skifte porten som din resolver på den lokale arbejdsstation bruger på en af følgende måder.

Dig

Dig kommandoen er den primære genvej til at teste DNS opsætning, og med denne kan man verificere adgangen til navneservere og svar fra disse.

Denne kommando har en option -p som naturligt er portnr.:

hlk$ dig +short -p 5353 @ns1.censurfridns.dk www.kramse.org
91.102.91.17

Unbound som forwarder

Når man bruger Dnssec-trigger som angivet ovenfor er der en indbygget Unbound navneserver med i pakken. Denne software kan kun være rekursiv server, og ikke autoritativ DNS server, men med alle de funktioner som en sådan skal have. Denne server kan man derfor naturligvis installere som en dedikeret rekursiv navneserver, som normalt så vil spørge direkte til de autoritative navneservere for domænerne direkte (udenom ISP navneservere).

Hvis vi så igen antager at man vil bruge censurfridns skal man skrive de navneservere ind som forwarder. Det betyder at Unbound sender alle forespørgsler videre til disse servere, istedet for som normalt at slå domænerne op via root-servere og dernæst på autoritative servere.

 forward-zone:
        name: "."
        forward-addr: 89.233.43.71
        forward-addr: 89.104.194.142

Det virker måske lidt fjollet fordi Unbound selv kan sende videre, men i næste step antager vi så at port 53 er blokeret. Hvis dette er tilfældet vil man kunne bruge port 5353 således:

 forward-zone:
        name: "."
        forward-addr: 89.233.43.71@5353
        forward-addr: 89.104.194.142@5353

Det betyder at Unbound som en almindelig rekursiv navneserver modtager forespørgsler fra det lokale netværk på port 53 men sender videre ud på internet via port 5353. Derefter overtager CensurfriDNS servere, slår op i DNS og sender svaret retur til Unbound, der sender det til arbejdsstationen på det lokale netværk. Det kunne eksempelvis være så almindelige Windows klienter kan slå navne op - jeg kan nemlig ikke finde en indstilling som vil gøre at Windows kunne bruge port 5353?

Hvis du nu helst vil se det som pakker, er her Tcpdump output fra serveren som sender forespørgsel på port 5353 til Censurfri DNS servere:

hlk@katana:hlk$ dig +short @127.0.0.1 www.version2.dk
109.238.50.21
i et andet vindue:
hlk@katana:hlk$ sudo tcpdump -ni en1 port 5353
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en1, link-type EN10MB (Ethernet), capture size 65535 bytes
18:00:15.005946 IP 10.10.1.179.18606 > 89.104.194.142.5353: 34749+% [1au] A (QM)? www.version2.dk. (44)
18:00:15.035851 IP 89.104.194.142.5353 > 10.10.1.179.18606: 34749 1/4/9 A 109.238.50.21 (319)
18:00:15.036067 IP 10.10.1.179.23170 > 89.233.43.71.5353: 17320+% [1au] DS (QM)? version2.dk. (40)
18:00:15.057229 IP 89.233.43.71.5353 > 10.10.1.179.23170: 17320 0/6/1 (762)
18:00:15.057542 IP 10.10.1.179.55472 > 89.233.43.71.5353: 43352+% [1au] Type32769 (QM)? www.version2.dk.dlv.isc.org. (56)
18:00:15.127712 IP 89.233.43.71.5353 > 10.10.1.179.55472: 43352 NXDomain 0/6/1 (732)

Hvor sikkert er det

Overhovedet ikke, men det kan måske du godt nok til at man med få resourcer kan surfe mere frit på internet. Det kan også være at man mener eller har set at Censurfri DNS er mere stabilt og svarer hurtigere end den normal DNS som ISP'en har sat op. Næste gang vil jeg skrive om DNSCrypt http://dnscrypt.org/ som er en metode til at sikre kommunikationen mellem client og navneserver med kryptering.

Full disclosure: jeg er med i gruppen som driver CensurfriDNS services, og vi er netop igang med at forbedre service, så stay tuned :-)

Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Flemming Riis

-jeg kan nemlig ikke finde en indstilling som vil gøre at Windows kunne bruge port 5353?

Sidste jeg kiggede kunne man ikke rette det client side , det skulle være via dns proxy som tryller om til anden port

  • 0
  • 0
Flemming Petersen

Selvom mit indlæg afviger lidt fra emnet, håber jeg at der er nogle eksperter der kan svare på mine spørgsmål alligevel.

Jeg overvejer at opsætte en rekursiv DNS server med DNSSEC validering på min router, men jeg er lidt bekymret for sikkerheden. På nuværende tidspunkt sender routeren DNS server IP-adresserne fra Internet udbyderen, til klienteren på netværket i en DHCP-pakke. Foruden dette router routeren klienternes trafik til og fra Internet gennem NAT, men kommunikere ikke direkte med hosts på Internet.

Hvis jeg installere en rekursiv DNS server på min router (f. eks. BIND version 9.8.6), så skal serveren kommunikere direkte med en potentielt fjendtlig DNS server på Internet, ved hver eneste opslag en klient foretager og det lyder for mig som en stor sikkerhedsrisiko. Eksempel:

En person finder et eller flere sikkerhedshuller i BIND version 9.8.6. Han køber et domæne og opsætter en DNS server for dette. Han modificere sin DNS server til at udnytte sikkerhedshullet i BIND 9.8.6 og afvikle remote shellcode på de hosts som laver opslag i hans DNS server. Personen opretter nu et website og poster et link til det på Version2. En klient på mit netværk klikker på linket og routeren vil nu foretage et rekursivt opslag, der ender ved den fjendtlige DNS server som afvikler remote shellcode på routeren. Hele mit netværk er nu kompromitteret i og med at crackeren har en remote shell på routeren. Alle andre routere med BIND version 9.8.6 vil selfølgelig også blive ramt af dette angreb.

Hvis jeg forwarder alle DNS opslag til upstream, så er risikoen for at mit netværk bliver kompromitteret væsentligt mindre.

  1. Hvor stor er sandsynligheden for at det jeg beskriver i mit eksempel vil kunne ske?
  2. Hvad er fordelene ved at lave rekursive opslag fra sit eget netværk, fremfor at forwarde opslag til f. eks. censurfridns?

Årsagen til at jeg vil ændre på den nuværende DNS konfiguration i mit netværk, er jeg ikke længere vil acceptere at Internet udbyderen skal bestemme hvilke hjemmesider mine klienter skal besøge, hvem ved hvad der skal blokeres i morgen? Jeg har dog ikke haft tid til at arbejde med det tidligere.

  • 0
  • 0
Henrik Kramshøj Blogger

Mjaeh, tak men jeg bruger ikke Windows 95 mere :-)

APPLIES TO
Microsoft Windows 95
Microsoft Windows 98 Standard Edition
Microsoft Windows 98 Second Edition
Microsoft Windows Millennium Edition

Det er dejligt med input, og jeg har selv prøvet at google lidt :-)

Jeg udlover 75cl julebryg St Feulin eller noget tilsvarende til den som kan komme med den rigtige Registry setting til Windows 7 :-)

  • 0
  • 0
Baldur Norddahl

Man kunne også bruge IPSEC - den bliver svær for en deep packet inspection engine at gøre noget ved. Og politikkerne vedtager næppe at der skal blokkeres for VPN, herunder IPSEC, generelt da det vil skade erhvervslivet og muligheden for at have hjemmekontor på en seriøs måde.

Men det vil være trivielt for en dansk byretsdommer at vedtage at bestemte IP adresser skal null-routes af danske internetudbydere. Det bliver det næste.

Så for at sætte dem skakmat skal vi have et peer to peer system, hvor der hele tiden er nye IP-adresser i spil. Helst med noget kryptering der ikke kan skelnes fra IPSEC eller andre populære VPN protokoller.

  • 0
  • 0
Morten Hansen

Jeg har søgt og søgt uden at finde en indbygget måde at ændre det i Windows. Du kan i avancerede netværksindstillinger definere DNS ip i et felt hvor du kan skrive IP:port men den accepterer det ikke.
Alternativet ville være en lokal dns proxy som fanger dine queries og forwarder. Acrylic er open source og virker til Windows, og kan forwarde til andre porte som ønsket:
http://mayakron.altervista.org/wikibase/show.php?id=AcrylicHome / http://sourceforge.net/projects/acrylic/

  • 0
  • 0
Nicolas Østergaard

Jeg har Yousee som udbyder, og jeg er principielt mod censur. Jeg bruger derfor Googles Puplic DNS service, hvis adresse er nemt at huske.

Den ene er 8.8.8.8, den anden 8.8.4.4

Hvis jeg nu finder en side som Google mod forventning har censureret, så er det dejligt nemt at skifte.

  • 0
  • 0
Log ind eller Opret konto for at kommentere