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.
Irssi-klienten ansluten till en server över IRC. Tor-loggan tillagd i
efterhand.
På Tor-nätverket finns något som heter Hidden Services. Detta är tjänster som enbart är nåbara på Tor via onion-adresser. Hidden Services kallas också numera för Onion Services.
Det finns flera fördelar med Hidden Services på Tor. Bland annat är tjänsterna svåra att hitta då adresserna är en lång sträng med slumpade tecken. Det är således mycket svårt att hitta en Hidden Service om man inte på förhand vet adressen. Man använder således inte IP-adresser på Tor.
En annan stor fördel med Hidden Services är att all trafik är krypterad per automatik mellan servern och klienten. Även om man använder sig av ett okrypterat protokoll som exempelvis IRC eller HTTP krypteras trafiken. Här är det alltså Tor som står för krypteringen.
Det är också alltid flera hopp, eller noder, mellan klienten och servern. Detta försvårar att en enstaka nod kan övervaka trafiken eller censurera en Hidden Service. Det försvårar också att hitta vem som äger en viss Hidden Service.
Men den största fördelen av alla är kanske möjligheten att låsa sin Hidden Service med nycklar. Detta gör att ingen, som inte har tillgång till en giltig nyckel, ens kan se att det finns en Hidden Service på en viss onion-adress. På så sätt kan man vara säker på att en Hidden Service bara kan nås och användas av ens närmaste vänner, familj eller inbjudna medlemmar som man litar på.
Installera IRC-servern
Här kommer vi använda en Debian 13-dator som IRC-server. IRC-programvaran blir
ngircd.
Vi börjar med att installera ngircd som root med kommandot:
# apt install ngircd
När paketet är installerat behöver vi ändra ett par saker. För att undvika att
någon ansluter till IRC-servern utanför Tor ändrar vi så att servern endast
accepterar anslutningar från 127.0.0.1, alltså den egna datorn. Detta gör vi i
filen /etc/ngircd/ngircd.conf. Här ändrar vi Listen-raden under [Global]
till följande:
Listen = 127.0.0.1
Vi kan också ändra Info-raden till något eget, helst något generellt som
inte går att identifiera, exempelvis:
Info = Private IRC server on Darknet
När dessa rader är ändrade sparar vi filen. Vi kan också passa på att ändra
/etc/ngircd/ngircd.motd till något eget. Texten i denna filen skrivs ut när
någon ansluter till servern.
När dessa ändringar är utförda startar vi om ngircd:
# systemctl restart ngircd
Installera Tor och skapa en Hidden Service
Vi installerar Tor med kommandot:
# apt install tor
Nu är Tor installerat och körs i bakgrunden.
Innan vi går vidare kan vi testa att anslutningen till Tor fungerar genom att surfa in på en onion-adress. Som exempel använder vi här onion-adressen till sökmotorn DuckDuckGo. För att inte fylla hela skärmen med HTML-koden läser vi bara ut de första 50 tecknen.
$ torify wget -qO - https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion | cut -c1-50
Om svaret från ovanstående kommando blev något i stil med följande fungerar anslutningen till Tor:
<!DOCTYPE html><html lang="en-US" class=""><head><
Skapa en Hidden Service för IRC-servern
Öppna filen /etc/tor/torrc som root och lägg till följande två rader:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 6667 127.0.0.1:6667
Starta nu om Tor:
# systemctl restart tor
Vi har nu en Hidden Service på Tor-nätverket. Vi hittar
adressen till tjänsten i filen /var/lib/tor/hidden_service/hostname. Detta
är vår onion-adress och ser ut som nedan:
6yjffsdmowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd.onion
Redan nu kan vi testa att ansluta till den via en klient på Tor-nätverket.
Ansluta till IRC-servern via Tor från en annan dator
På en annan Debian-dator installerar vi Tor och IRC-klienten irssi. För att
ansluta till en IRC-server över Tor med irssi behöver vi även installera
proxychains4 (eftersom irssi inte stödjer socks-anslutningar).
# apt install tor irssi proxychains4
När paketen är installerade kan vi ansluta till IRC-servern via dess onion-adress på följande sätt:
$ proxychains4 -q irssi -n kalle -c 6yjffsdmowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd.onion
Flaggan -q till proxychains4 gör att programmet inte skriver ut något på
terminalen, vilket hade gjort att irssi hade sett trasigt ut.
Flaggan -n till irssi anger ditt smeknamn som du vill använda på IRC-servern.
Flaggan -c anger adressen till IRC-servern som i det här fallet är
onion-adressen.
Vi är nu ansluta till IRC-servern över Tor via irssi-klienten. Ingen vet
vem som äger den, ingen kan avlyssna trafiken till den och förhoppningsvis är
det ingen som hittar den. Redan nu är har vi kommit en bra bit på vägen. Vi
kan dock göra mer än så här – vi kan även låsa den så att det krävs en nyckel
för att ansluta till den.
Lås IRC-servern så att endast de med en nyckel kan ansluta
Nu är det dags att låsa hela vår Hidden Service så att ingen kan ansluta till den utan en giltig nyckel. På så sätt kan vi vara säkra på att endast våra nära och kära har tillgång till IRC-servern.
Nycklarna i Tor bygger på principen med publika och privata nycklar. Man genererar ett nyckelpar som har en publik och en privat del. Den publika nyckeln placeras på servern. Den privata nyckeln ges till den person som ska kunna logga in på tjänsten.
Första steget är att skapa ett nyckelpar. Det gör vi på servern. Men först
behöver vi installera paketet basez.
# apt install basez
Vi börjar med att skapa själva nyckeln. Det bästa är att skapa en nyckel åt varje person som ska kunna ansluta till servern. Fördelen med att ha en nyckel per person är att vi då enkelt kan ta bort nyckeln för någon som inte längre ska ha tillträde till servern, utan att påverka de övriga.
Allt detta gör vi i en ny katalog så att vi kan hålla ordning på filerna. Här döper vi nyckeln till Kalle eftersom den är för vår kompis Kalle.
# mkdir my-keys
# cd my-keys
# openssl genpkey -algorithm x25519 -out kalle.prv.pem
Därefter behöver vi ändra formatet på nyckeln så att vi kan använda den tillsammans med Tor. Det är den privata nyckeln som kommer kunna ansluta till servern. Med andra ord är denna delen som vi ger till den person som ska kunna logga in på IRC-servern.
# cat kalle.prv.pem | grep -v " PRIVATE KEY" | \
base64pem -d | tail --bytes=32 | base32 | \
sed 's/=//g' > kalle.prv.key
Vi behöver också skapa den publika delen av nyckeln. Det är denna delen som vi placerar på servern.
# openssl pkey -in kalle.prv.pem -pubout | \
grep -v " PUBLIC KEY" | base64pem -d | \
tail --bytes=32 | base32 | sed 's/=//g' > kalle.pub.key
Nu ska vi skapa själva auth-filen som ska placeras i Tor. Den filen har ett speciellt format. Vi kan skapa filen med rätt format med följande kommando:
# echo "descriptor:x25519:$(cat kalle.pub.key)" > kalle.auth
Kontrollera att filen ser korrekt ut med cat kalle.auth. Den ska se ut som
nedan (med undantag för själva nyckeln som är unik):
descriptor:x25519:W6OACQ3Z76XGRWYWNQMC7PUNKRTROO2TT5AIDLZ3VVFDHBENZIAQ
Nu kopierar vi filen till /var/lib/tor/hidden_service/authorized_clients/
(på servern).
# cp kalle.auth /var/lib/tor/hidden_service/authorized_clients/
Starta om Tor:
# systemctl restart tor
Skapa den privata nyckelfilen
Om vi nu försöker ansluta till IRC-servern igen kommer vi få meddelandet Connection refused. Vi vet då att IRC-servern är låst.
Vi kan förbereda den privata nyckelfilen på servern där vi har alla filerna som behövs. Därefter kopierar vi nyckelfilen till klienten.
På servern, kör följande kommando för att skapa filen som vi behöver ge till Kalle.
# echo "$(cat /var/lib/tor/hidden_service/hostname | \
cut -c1-56):descriptor:x25519:$(cat kalle.prv.key)" > \
irc-server-kalle.auth_private
Kontrollera så att filen ser korrekt ut med kommandot cat
irc-server-kalle.auth_private. Den ska se ut som nedan:
6yjffsdmowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd:descriptor:x25519:WCAQTXKGY7TDAJMHWJJTO3OYRRAGWLXYVKHWPF53Y5J3ASW3MZAQ
Första fältet är adressen utan onion-delen. Därefter följer fälten för descriptor och x25519. Det sista fältet är den privata nyckeln.
Installera nyckelfilen på klienten
Nu kopierar vi nyckeln till klienten, alltså Kalles dator. Filen ska placeras
i katalogen /var/lib/tor/onion_auth. Vi behöver dock skapa katalogen först
och därefter ändra ägare för katalogen:
# mkdir /var/lib/tor/onion_auth
# chown debian-tor:debian-tor /var/lib/tor/onion_auth
Nu placerar vi filen i katalogen och sedan ändrar vi ägare även för filen. Observera att detta görs på klientdatorn (Kalles dator).
# cp irc-server-kalle.auth_private /var/lib/tor/onion_auth
# chown /var/lib/tor/onion_auth/irc-server-kalle.auth_private
Det sista steget är att aktivera autentiseringen i Tor. Det gör vi i filen
/etc/tor/torrc. Lägg till följande rad i filen:
ClientOnionAuthDir /var/lib/tor/onion_auth
Nu startar vi om Tor (på Kalles dator) för att ändringarna ska träda i kraft:
# systemctl restart tor
Nu kan vi återigen testa att ansluta till IRC-servern med följande kommando:
$ proxychains4 -q irssi -n kalle -c 6yjffsdmowqdi5cd7wgofbj4gmjhuzl4cg4kz77vfne5orkxmqtzgtyd.onion
Om allt har fungerat ska vi nu återigen vara anslutna till IRC-servern. Nu kan vi också vara säkra på att ingen annan än de vi har gett en nyckel till kan ansluta till IRC-servern.
Att tänka på
Även om det går att använda samma nyckel för flera personer är det säkrare att skapa unika nycklar för alla. På så sätt kan vi ta bort den publika nyckeln för en viss person och därmed blockera bara den personen, utan att påverka någon annan.
Alla användare som ansluter till IRC-servern ser ut att komma från localhost, alltså själva servern. Detta beror på att inkommande anslutningar går till Tor-demonen. Tor-demonen ansluter sedan till IRC-demonen via IP-adressen 127.0.0.1, alltså localhost.
En kort demonstration av IRC över Tor.
Vidare läsning
För den intresserade för mängder av djupare information att förkovra sig i.
Om den ökade massövervakningen
- SVT – Integritetsfrågorna offras på säkerhetens altare
- Mullvad – Chat Control & Going Dark: The war on encryption is on the rise. Through a shady collaboration between the US and the EU.
- Nikka Systems – Podd #285: Försvarsmakten varnar för bakdörrar
- Nikka Systems – Podd #314: Inget normalt användningsområde
Om Tor
Om IRC
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Relaterade artiklar
-
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. -
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
Senaste nyheterna och inläggen
-
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.
-
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.
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.
