Tor som ersättare för Cloudflare Tunnel
Tjänster så som Cloudflare Tunnel går att ersätta med Tor Onion Services med klientautentisering. På så sätt undviker man beroendet av amerikansk infrastruktur.

Stigmatiseringen kring Tor har gjort att det sällan används för annat än att tillfälligt surfa anonymt. Men faktum är att Tor är ett fantastiskt verktyg som går att använda till mycket mer än bara anonym surf och underjordiska webbsidor. Därför börjar vi med att gå igenom hur Tor fungerar, och vad skillnaden är mellan att bara surfa anonymt jämfört med att ansluta sig till Onion Services (tidigare kallat Hidden Services).
När man surfar på det vanliga internet (ofta kallat clearnet) via Tor, exempelvis med hjälp av Tor Browser, gör man det via en så kallad krets, eller circut på engelska.
Kretsen består av minst tre noder. Klienten ansluter först till en så kallad Guard. Denna guard-nod ansluter i sin tur till en annan nod inuti Tor-nätverket, en så kallad mellan-nod. Mellan-noden ansluter sedan till en Exit-nod. Det är denna exit-nod som gör anslutningen ut mot det öppna internet. Det kan vara många fler noder mellan exit-noden och mellan-noden, men detta är det minsta antalet, alltså tre noder.
Trafiken som går genom Tor-nätverket är alltid krypterad. Den enda gången man inte är skyddad av Tors egna kryptering är när man surfar till en vanlig webbsida på det öppna internet. Det vill säga när trafiken lämnar exit-noden. Däremot är det flesta webbsidor skyddade av HTTPS, så detta är normalt sett inget problem.

När vi däremot surfar in på en så kallad Onion Service med en
.onion-adress lämnar vi aldrig Tor-nätverket. Här finns alltså ingen
exit-nod inblandad. Det är däremot fortfarande tre noder mellan klienten och
Onion-tjänsten.
Eftersom trafiken till en Onion Service aldrig lämnar Tor-nätverket är anslutning alltid krypterad – hela vägen från klienten till Onion-tjänsten. Detta gör att HTTPS inte behövs på en tjänst som körs som en Onion Service.

Kryptering på Tor gör mer än bara skyddar från avlyssning. Den skyddar också anonymiteten. Det här är ordet Onion Routing kommer in i bilden. Krypteringen ligger i lager som en lök. Paketet som skickas från klienten till den slutgiltiga destinationen är krypterad med tre nycklar (eller fler), en för varje nod. Det är bara den första noden (guard-noden) som kan öppna sin kryptering med sin nyckel, eller sitt “skal”. När noden har har gjort det skickar den vidare paktet till nästa nod som öppnar sitt skal på löken, som sedan skickar vidare till det nästan nod. Ingen av noderna kan således se hela kedjan.
Förutom kryptering och anonymitet erbjuder Tor-nätverket ett extra lager säkerhet för Onion Services för den som önskar, nämligen klientautentisering. Det är en nyckel som placeras i Tor-tjänsten på en Onion Service. Utan den nyckeln går det inte ens att ansluta till tjänsten. Det är denna funktion som gör att vi kan använda Tor som en ersättare för tjänster som exempelvis Cloudflare Tunnel. Ingen kan ansluta till tjänsten utan rätt nyckel.
Tor Browser på datorn har fullt stöd för nycklar. Surfar man till en
.onion-adress som kräver autentisering visas en dialogruta där man kan
skriva in och spara nyckeln. Dessvärre saknar Tor Browser för Android för
tillfället detta stöd, men utvecklarna arbetar på att implementera det. Mer
information finns på deras
Gitlab.
Det finns dock en nackdel som man bör känna till, och det är att Tor är ganska långsamt. Det beror på alla hoppen som görs mellan de olika noderna. Dessa noder hanterar dessutom en stor mängd trafik. Noderna kan dessutom vara placerade långt ifrån varandra. Exempelvis kan guard-noden vara i Tyskland, mellan-noden i USA och den tredje i Kina. Sedan därifrån ska trafiken till Onion-tjänsten som kanske ligger i Sverige.
Många som provar Tor för första gången tror att de har gjort något fel eftersom det är så långsamt. Men det är således helt normalt att Tor är långsamt. Men man får inte glömma att det är alla hoppen som Tor är så säkert.
Sätta upp en egen Onion Service
Nu när vi har lite teknisk bakgrund till hur Tor fungerar kan vi testa att sätta upp en egen Onion Service på Tor-nätverket. Det påminner mycket om att Sätta upp en egen IRC-server på darknet men är enklare eftersom Tor Browsern sköter hanteringen av klientnyckeln. Här kommer vi också att sätta upp flera tjänster i samma Onion Service.
Vi utgår från att servern kör Debian Linux. Stegen bör således fungera även för Ubuntu och andra Debian-utgåvor.
Vi börjar med att installera Tor-tjänsten på servern:
$ sudo apt install tor
När Tor är installerat skapar vi en Onion Service. I det här fallet vill vi ge
åtkomst till två tjänster på servern, en webbserver på port 80 och InfluxDB på
port 8086. Vi lägger därför till följande tre rader i filen /etc/tor/torrc.
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 8086 127.0.0.1:8086
Nu startar vi om Tor så att ändringarna träder i krafat:
$ sudo systemctl restart tor
Redan nu är vår Onion Service igång, dock utan en nyckel än så länge. För att
ta reda på .onion-adressen skriver vi ut innehållet i filen
/var/lib/tor/hidden_service/hostname.
$ cat /var/lib/tor/hidden_service/hostname
6yjffsdmowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd.onion
Skydda Onion Servicen med en nyckel
Nästa steg är att lägga till en nyckel så att ingen kan komma åt tjänsterna, förutom dem som har den rätta nyckeln. Det bästa är att skapa en nyckel åt varje person som ska ha tillgång till tjänsterna; då kan vi enkelt radera en nyckel om en person inte längre ska ha tillgång, eller om en nyckel hamnar på vift.
Först behöver vi installera paketet basez:
$ sudo apt install basez
Nu kan vi skapa en nyckel åt Kalle:
$ mkdir my-keys
$ cd my-keys
$ openssl genpkey -algorithm x25519 -out kalle.prv.pem
Därefter behöver vi ändra format på den privata nyckeln. Det är denna delen som Kalle kommer att använda för att ansluta till tjänsterna.
$ cat kalle.prv.pem | grep -v " PRIVATE KEY" | \
base64pem -d | tail --bytes=32 | base32 | \
sed 's/=//g' > kalle.prv.key
Det är alltså filen kalle.prv.key som vi behöver ge till Kalle för att han
ska kunna logga in via sin Tor Browser.
Därefter skapar vi den publika nyckeln, den delen som ska placeras på servern för att skydda tjänsterna på vår Onion Service.
$ openssl pkey -in kalle.prv.pem -pubout | \
grep -v " PUBLIC KEY" | base64pem -d | \
tail --bytes=32 | base32 | sed 's/=//g' > kalle.pub.key
Det sista steget är att skapa själva auth-filen för Tor. Den har ett speciellt format. Vi skapar den med hjälp av följande kommando:
$ echo "descriptor:x25519:$(cat kalle.pub.key)" > kalle.auth
Det är denna filen, kalle.auth, som vi nu placerar i Tor för att skydda vår
Onion Service från obehöriga:
$ sudo cp kalle.auth /var/lib/tor/hidden_service/authorized_clients/
Nu behöver vi starta om Tor:
$ sudo systemctl restart tor
Testa adressen och nyckeln i Tor Browser
Nu kan vi testa att komma åt de tjänster vi exponerade via vår Onion Service
(port 80 och 8086) via Tor Browser. Vi surfar in på .onion-adressen som vi
fick fram från /var/lib/tor/hidden_service/hostname.
Om allt har fungerat kommer vi att få se en dialogruta som ber oss om en nyckel.
Här skriver vi in nyckeln som finns i filen kalle.prv.key.

När vi har skrivit in nyckeln och klickat på OK kommer vi till den tjänst som vi
exponerade via filen /etc/tor/torrc. Nu ser vi också Onion-ikonen direkt
till vänster om adressfältet. Ikonen indikerar att anslutningen är säker och
att det är en Onion Service vi befinner oss på.

För att nå den andra tjänsten, InfluxDB, som vi också exponerade via
/etc/tor/torrc lägger vi till porten efter .onion-adressen med ett
kolon, precis som för adresser på det vanliga öppna internet. Exempelvis:
…mowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd.onion:8086
På liknande sätt kan vi således lägga till fler tjänster i samma Onion Service
genom att helt enkelt lägga till dem i /etc/tor/torrc. Det går även att
lägga till tjänster som finns på en annan dator som servern med Tor-tjänsten
kan nå. Exempelvis kan en /etc/tor/torrc se ut så här:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 8086 127.0.0.1:8086
HiddenServicePort 8080 192.168.0.44:80
HiddenServicePort 8081 192.168.0.21:9090
Avslutande tankar
På detta sättet kan vi således byta ut tjänster som exempelvis Cloudflare Tunnel mot Tor. Hastigheten är den enda nackdelen, men det uppvägs av att Tor är decentraliserad till skillnad från Cloudflare. Egentligen är inte Tor heller helt decentraliserat, men från vårt perspektiv så kan vi kalla det för det.
En annan nackdel kan vara att distribuera nycklarna ifall det är många personer som ska ha tillgång till tjänsterna. Men för tjänster där man är ensam användare är det inget problem. Inte heller för mindre grupper på kanske fem personer. Men när vi börjar närma oss hela företag med hundratals personer blir det snabbt jobbigt.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Relaterade artiklar
-
Sätt upp en egen IRC-server på darknet
Rätten att kommunicera säkert är i fara. Just nu finns flertalet lagförslag som på ett eller annat sätt är tänkta att kringgå totalsträckskryptering. Det är således dags att hitta alternativ till de vanliga kanalerna ifall lagförslagen går igenom. Ett sådant alternativ är att gömma sig på Tor-nätverket, eller darknet som det också kallas.
-
En titt på OPAL2 och SEDutil
Många SSD stödjer idag något som heter OPAL2, en uppsättning specifikationer för hårddiskar och SSD. I specifikationerna ingår kryptering av diskar. Denna kryptering kan vi använda med verktyget SEDutil. SED i detta sammanhang står för Self-Encrypting Drive.
-
GrapheneOS – mer än bara ett säkert mobil-OS
GrapheneOS är ett operativsystem för Google Pixel-telefoner baserat på Android men utvecklat helt fristående från Google. Det är ett renare och betydligt säkrare system än vanliga Android.
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tsharkkan vi dessutom avlyssna trafiken på en server i realtid.
Senaste nyheterna och inläggen
-
Sätt upp en egen IRC-server på darknet
Rätten att kommunicera säkert är i fara. Just nu finns flertalet lagförslag som på ett eller annat sätt är tänkta att kringgå totalsträckskryptering. Det är således dags att hitta alternativ till de vanliga kanalerna ifall lagförslagen går igenom. Ett sådant alternativ är att gömma sig på Tor-nätverket, eller darknet som det också kallas.
-
En titt på OPAL2 och SEDutil
Många SSD stödjer idag något som heter OPAL2, en uppsättning specifikationer för hårddiskar och SSD. I specifikationerna ingår kryptering av diskar. Denna kryptering kan vi använda med verktyget SEDutil. SED i detta sammanhang står för Self-Encrypting Drive.
-
CyberInfo lämnar GitHub
CyberInfo har aldrig varit speciellt beroende av amerikanska tjänster. Men vi har använt oss av bland annat Amazon AWS i mindre utsträckning, samt GitHub för en stor del av kodförråden. Med tanke på det rådande geopolitiska läget har det blivit hög tid att lämna alla amerikanska tjänster.
-
Pågadata och en titt tillbaka
I år blev det inget reportage från Pågadata. Istället blev det en stilla närvaro med reflektioner kring demoscenen.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
