Bir onion hizmeti gerçekte nedir
Bir Tor onion hizmeti, yalnızca Tor ağı üzerinden erişilebilen, .onion ile biten ve bir kayıt kuruluşu tarafından atanmak yerine kriptografik bir anahtardan türetilen bir adrese sahip sunucudur. Hiçbir DNS sorgusu, hiçbir kayıtta genel bir IP ve satın alınacak bir TLS sertifikası yoktur: 56 karakterlik adres, hizmetin genel anahtarının ta kendisidir, dolayısıyla bağlantı yapısı gereği kimliği doğrulanmış ve uçtan uca şifrelidir. Tor Browser çalıştıran bir ziyaretçi adresi yazar; ağ şifreli bir buluşma noktası ayarlar; iki taraf, birbirinin konumunu öğrenmeden konuşur. Ortadaki hiç kimse — ne bir röle, ne bir ISS, ne de barındırma sağlayıcısı — konuşmanın her iki ucunu aynı anda göremez.
Barındırma açısından önemli olan sonuç kozmetik değil, yapısaldır. Normal bir web sunucusu genel bir portu dinlemek zorundadır; bu da adresinin keşfedilebilir, taranabilir ve nihayetinde faturayı ödeyen kişiyle ilişkilendirilebilir olduğu anlamına gelir. Bir onion hizmeti ise internetin ulaşabileceği hiçbir şeyi dinlemez. Kutudaki Tor yalnızca giden bağlantılar kurar, bir avuç tanıtım noktasına devre inşa eder ve bekler. ss -tlnp yönlendirilebilir bir adrese bağlı hiçbir şey göstermezken hizmet çevrimiçidir ve trafiğe hizmet vermektedir. Bu tersine çevirme, birini çalıştırmanın tüm nedenidir.
Doğru araç olduğu zaman — ve olmadığı zaman
Makinenin konumu korumaya çalıştığınız şeyin bir parçasıysa bir onion hizmetine başvurun: clearnet alan adı ele geçirilse bile erişilebilir kalması gereken bir site, kaynaklar ya da araştırmacılar için bir gönderim kutusu, tarayan internete hiç maruz bırakmak istemediğiniz bir yönetici paneli ya da kitlesi zaten Tor kullanan ve hiç almadığınız bir IP'yi günlüğe kaydedemeyeceğinize değer veren bir hizmet. "Kaynağı gizle" gerçek gereksinim olduğunda da dürüst cevap budur — bir clearnet sunucusunun önündeki reverse proxy hedefi yalnızca taşır, oysa bir onion hizmeti onu tamamen kaldırır.
Ziyaretçileriniz Tor çalıştırmayacak ya da çalıştıramayacaksa, doğrudan erişilebilir bir sunucunun ham verimine ve 100 milisaniyenin altındaki gecikmesine ihtiyacınız varsa ya da mesele keşfedilebilirlikse yanlış araçtır — bir onion adresi, insanların bir arama motorundan tesadüfen rastlayacağı bir şey değildir. Birçok operatör farkı ikiye bölüp her ikisini birden çalıştırır: erişim için normal bir site ve isteyen kullanıcılar için aynı uygulamadan sunulan bir onion hizmeti. Bu deseni aşağıda ele alıyoruz. Buradaki hiçbir şey kutunun kendisini sertleştirmenin yerini tutmaz; makine ele geçirilirse nasıl yayımlandığından bağımsız olarak konumu ve içeriği sızar, bu yüzden ilk saat sertleştirme kontrol listesini sonradan akla gelen bir şey değil, bir ön koşul olarak ele alın.
SP·03Kurulum neyi, kime açığa çıkarır
Anonimlik modeli konusunda kesin olmakta fayda var, çünkü "onion hizmeti" çoğu zaman "izlenemez" anlamına geldiği varsayılır ve gerçeklik daha spesifiktir. İstemciler sunucunun IP adresini asla öğrenmez — bu özellik güçlüdür ve meselenin tamamı budur. Ancak barındırma sağlayıcınız, ağlarında Tor ağına doğru sürekli bir şifreli giden bağlantı akışı yapan bir makine görmeye devam eder; onion adresini, içeriği ya da ziyaretçileri göremezler, ama kutunun Tor konuştuğunu görebilirler. Kimliğinize bağlı ana akım bir host'ta bu, çekilmeye değer bir iplik ucudur. Dosyada isim bulunmayan, offshore ve anonim ödenen bir VPS'te ise hiçbir yere çıkmaz — iki tekniğin birbirine ait olmasının tam nedeni de budur.
Onion hizmetlerinin anonimliğini gerçekte ortadan kaldıran arıza modları, neredeyse hiçbir zaman Tor'un kendisi değildir. Bunlar; uygulamanın bir hata sayfasında, bir başlıkta, gönderdiği bir e-postada ya da bir clearnet analitik veya güncelleme uç noktasına giden bir istekte gerçek bir IP sızdırması; yanlış yapılandırılmış bir sunucunun hostname'ini ya da saat dilimini ifşa etmesi; ya da operatörün aynı kutuyu, anahtarı ya da yazım tarzını bir clearnet kimliğinde yeniden kullanmasından kaynaklanan korelasyondur. Kriptografi tutar; insanların yakalandığı yer onun etrafındaki tesisattır. Aşağıdaki her adım bu tesisatı sıkı tutacak şekilde yazılmıştır — localhost'a bağlanın, açık metinde hiçbir şey göndermeyin ve adınızı sunucudan uzak tutmak rehberine göre kutunun gerçek kimliğini makineden uzak tutun.
SP·04Dağıtımınızın sunduğu değil, güncel bir Tor kurun
Dağıtımlar, Tor'u sürümle birlikte gelen her ne ise o sürümde donduruyor ve onion hizmeti savunmaları hızla ilerliyor — tanıtım noktası hizmet reddi koruması, v3 istemci yetkilendirmesi ve çeşitli kararlılık düzeltmelerinin tamamı, kararlı bir Debian ya da Ubuntu'nun varsayılan olarak taşıdığından daha yeni sürümlerde geldi. Güncel sürümleri takip edebilmek ve güvenlik güncellemelerini dağıtımın değil, projenin takvimiyle alabilmek için Tor Project'in kendi imzalı deposundan kurun. Aşağıdaki kod parçası sürüm kod adınızı otomatik olarak algılar ve depoyu projenin imzalama anahtarına sabitler, böylece mirror'a müdahale eden bir saldırgan size düşürülmüş sürüm bir paket veremez.
Tor, Debian ve Ubuntu'da yetkisiz debian-tor kullanıcısı olarak çalışır, bir sandbox'a girer ve özel bir ağ ayrıcalığına ihtiyaç duymaz — herhangi bir istemci gibi dışarı arar. Onion hizmetinin kendisi için güvenlik duvarında açılacak hiçbir şey yoktur ki bu, tüm işin ilk hoş sürprizidir: varsayılan reddeden güvenlik duvarınız tam olarak eskisi kadar sıkı kalabilir.
Uygulamayı yalnızca localhost'a bağlayın
Bir onion hizmeti, sıradan bir yerel hizmete açılan bir ön kapıdır — bir web sunucusu, bir uygulama, bir SSH daemon'ı, TCP konuşan her şey. Her şeyi güvende tutan kural, bu yerel hizmetin yalnızca loopback arayüzünü, 127.0.0.1'i dinlemesi gerektiğidir. Genel IP'yi de dinlerse, onion hizmetinin çözmesi gereken sorunu sessizce yeniden yaratmış olursunuz: içerik artık doğrudan erişilebilir ve parmak izi çıkarılabilir hale gelir ve clearnet sunucunuzu onion içeriğinizle eşleştiren bir tarama, anonimliği tek bir istekte bozar. Loopback'e bağlayın, ss -tlnp ile doğrulayın ve o porta bağlanan tek şeyin Tor olmasına izin verin.
Tor ile uygulamanız arasındaki trafik 127.0.0.1 üzerinde kaldığından, ağa hiç dokunmaz ve kendi TLS'ine ihtiyaç duymaz — Tor devresi zaten her şeyi uçtan uca şifreler. Loopback dinleyicisine kendinden imzalı bir sertifika koymayın; bu, parmak izi çıkarılabilir bir yüzey ekler ve hiçbir şey kazandırmaz. Uygulamayı sıkıcı tutun: clearnet yönlendirmesi yok, şablonlara gömülü mutlak https://your-domain bağlantıları yok, ziyaretçinin tarayıcısını onion'dan çıkıp açık web'e ulaştıracak üçüncü taraf yazı tipleri ya da analitikler yok.
Hizmeti bildirin, sonra adresinizi okuyun
Onion hizmeti üç satırlık bir torrc'tur: Tor'un anahtar malzemesini tuttuğu bir dizin ve onion adresindeki sanal bir porttan uygulamanızın dinlediği yerel porta bir eşleme. İlk yeniden başlatmada Tor, o dizinde bir Ed25519 anahtar çifti üretir ve dağıtacağınız 56 karakterlik .onion adresini içeren hostname dosyasını yazar. Bu adres, anahtarı elinizde tuttuğunuz sürece kalıcıdır. Anahtarı kaybederseniz adres sonsuza dek gider; sızdırırsanız başka biri hizmetinizin kimliğine bürünebilir. HiddenServiceDir'i taç mücevherleri gibi ele alın: 0700, Tor kullanıcısına ait, şifrelenmiş ve kutunun dışında yedeklenmiş.
Eşlemenin yanında iki ayar daha yerini hak eder. HiddenServiceEnableIntroDoSDefense 1, tanıtım noktalarınızın bağlantı sellerini kutunuza ulaşmadan önce hız sınırlamasına izin verir; bu, bir onion hizmetinin sahip olduğu DDoS korumasına en yakın şeydir. HiddenServiceVersion 3'ü sabitlemek sürümü açık ve geleceğe dayanıklı hale getirir. Hizmet genel değil özel olmalıysa, v3 istemci yetkilendirmesi onu, bant dışından dağıttığınız bir anahtarın sahipleriyle sınırlar — kimlik bilgisi olmayan hiç kimseye yanıt vermeyen bir yönetici paneli çalıştırmanın temiz bir yolu.
Duyurun, ikisini birden çalıştırın ve akılda kalıcı bir adres seçin
Bir clearnet sitesi de çalıştırıyorsanız, Onion-Location yanıt başlığıyla (ya da eşdeğer HTML meta etiketiyle) Tor Browser'a onion sürümünü bildirin. Onion desteği olan tarayıcılar, ziyaretçilere .onion'ı ardından otomatik olarak sunar — büyük gazeteler ve arama motorları gibi sitelerin kendilerininkini gösterdiği standart yöntem budur. Aynı uygulamayı hem bir alan adında hem de bir onion adresinde sunmak egzotik bir durum değil, normdur: tek bir kod tabanı, tek bir veritabanı, iki ön kapı; clearnet tarafı her zamanki kaynak gizleyen reverse proxy'nin arkasında dururken onion tarafı hiçbir şeyi açığa çıkarmaz.
Varsayılan adres rastgele 56 karakterlik bir dizedir; güvenlidir ama akılda kalıcı değildir. Bir vanity adres, base32 kodlaması seçtiğiniz bir önekle başlayan bir anahtarı kaba kuvvetle bulmanızı sağlar — birkaç okunabilir karakter hızlıdır, ama her ek karakter işi 32 ile çarpar, dolayısıyla yedi ya da sekiz harfin ötesindeki her şey ciddi bir hesaplama işine dönüşür. Vanity anahtarları güvenilir bir yerel makinede üretin, asla sunucuda değil, ve elde edilen anahtarı tıpkı bir yedeği geri yüklermiş gibi HiddenServiceDir'e bırakın. Tanınabilir bir önek, gerçek bir saldırıyı da körelten bir işlev görür: kimsenin rastgele karakterlerden oluşan bir duvarı okumayacağını hesaba katan phishing klonları.
Sürdürün: performans, izleme ve anahtar hijyeni
Bir onion bağlantısı, olağan sıfır yerine altı röleden geçer, dolayısıyla gecikme doğrudan erişilebilir bir sunucudan daha yüksek, verim ise daha düşüktür — bu bir yanlış yapılandırma değil, fizik meselesidir ve hiçbir ayar bunu ortadan kaldırmaz. Hızı geri kazanmak için tek-atlamalı ya da anonim olmayan modların cazibesine kapılmayın; bunlar tam olarak bunun için inşa ettiğiniz özelliği elden çıkarır. Yapabileceğiniz şey Tor'u güncel tutmak, tanıtım noktası DoS savunmasını açık bırakmak, yoğun bir hizmetin önüne önbellekleme koyarak her isteğin daha az iş yapmasını sağlamak ve Tor'un kriptografisi bedavaya gelmediğinden kutuyu CPU payı bırakacak şekilde boyutlandırmaktır. $8.00/aydan başlayan mütevazı bir offshore VPS, tipik bir onion sitesini rahatlıkla kaldırır.
Operasyonel olarak üç alışkanlık bir onion hizmetini sağlıklı tutar. Sessizliğin sağlık anlamına geldiğini varsaymak yerine erişilebilirlik ve tanımlayıcı yayımlama hataları için journalctl -u tor@default'u izleyin. HiddenServiceDir'i oluşturduğunuz gün ve her değişiklikten sonra, şifrelenmiş ve makineden uzakta yedekleyin, çünkü o anahtar yeniden üretemeyeceğiniz tek şeydir. Ve kutunun operasyonel kimliğini temiz tutun — aynı operatör alışkanlıkları onu bir clearnet benliğine geri bağlıyorsa, taze bir anonim VPS üzerindeki taze bir anahtarın değeri azdır. Hizmet, dokunulmadan yıllarca mutlulukla çalışır; disiplin hizmetin kendisinde değil, etrafındaki tesisattadır.
Adım adım
-
01
Sertleştirilmiş, anonim bir kutudan başlayın
Bir offshore VPS devreye alın — yaklaşık 15 min içinde çevrimiçi olur — ve önce sıkıcı ama gerekli işi yapın: isimli bir sudo kullanıcısı, yalnızca anahtarla SSH, varsayılan reddeden bir güvenlik duvarı ve otomatik güvenlik güncellemeleri. Onion hizmeti, o güvenlik duvarında açmanız gereken hiçbir şey eklemez, dolayısıyla kilitli bir kutu kilitli kalır. Bunu atlamayın; ele geçirilmiş bir sunucunun önündeki bir onion adresi hiçbir şeyi gizlemez.
ssh admin@203.0.113.10 sudo apt update && sudo apt full-upgrade -y # firewall stays default-deny; the onion service needs no inbound port sudo ufw status verbose
-
02
Tor'u Tor Project deposundan kurun
Güncel bir Tor'u en son onion hizmeti savunmalarıyla çalıştırmak için projenin imzalı deposunu ekleyin, ardından kurun. Kod adı
/etc/os-release'den algılanır ve depo, müdahale edilmiş bir mirror'un sizi düşük sürüme çekememesi için Tor'un imzalama anahtarına sabitlenir.sudo apt install -y apt-transport-https wget gpg . /etc/os-release wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \ | gpg --dearmor | sudo tee /usr/share/keyrings/tor.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/tor.gpg] https://deb.torproject.org/torproject.org $VERSION_CODENAME main" \ | sudo tee /etc/apt/sources.list.d/tor.list sudo apt update && sudo apt install -y tor deb.torproject.org-keyring
-
03
Hizmetinizi yalnızca localhost'a bağlayın
Yayımladığınız her ne ise, onu loopback arayüzüne yöneltin, başka hiçbir yere değil. Burada nginx,
127.0.0.1:8080üzerinde statik bir site sunar; aynı ilke herhangi bir uygulama için geçerlidir —0.0.0.0'a değil,127.0.0.1'e bağlanın. Yeniden yükleyin, sonrassile yönlendirilebilir bir adreste hiçbir şeyin dinlemediğini kanıtlayın.# /etc/nginx/sites-available/onion.conf server { listen 127.0.0.1:8080; server_name _; root /var/www/onion; index index.html; }Etkinleştirin, yeniden yükleyin ve bağın yalnızca loopback olduğunu doğrulayın:
sudo ln -s /etc/nginx/sites-available/onion.conf /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ss -tlnp | grep 8080 # must show 127.0.0.1:8080, never 0.0.0.0:8080
-
04
Onion hizmetini torrc'ta bildirin
Hizmeti
/etc/tor/torrc'a ekleyin: bir anahtar dizini ve onion'un sanal 80 portundan yerel 8080'inize bir port eşlemesi. Tanıtım noktası DoS savunmasını açın ve adres sürümünü sabitleyin. Ardından Tor'u yeniden başlatın — Debian ve Ubuntu'da çalışan örnektor@default'tur.# /etc/tor/torrc HiddenServiceDir /var/lib/tor/onion-www/ HiddenServicePort 80 127.0.0.1:8080 HiddenServiceVersion 3 HiddenServiceEnableIntroDoSDefense 1 sudo systemctl restart tor@default
-
05
Adresi okuyun ve anahtarı kilitleyin
Tor artık anahtar malzemesini oluşturdu ve adresinizi yazdı. Onu okuyun, dağıtın — ve dizinin
0700olduğundan ve Tor kullanıcısına ait olduğundan emin olun; bunu Tor zorunlu kılar, ama dikkatsiz bir geri yükleme bozabilir. O dizindekihs_ed25519_secret_keydosyası sizin kimliğinizdir; başka hiçbir şey değildir.sudo cat /var/lib/tor/onion-www/hostname # example: 2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion sudo ls -l /var/lib/tor/onion-www/ # hostname hs_ed25519_public_key hs_ed25519_secret_key sudo chown -R debian-tor:debian-tor /var/lib/tor/onion-www sudo chmod 700 /var/lib/tor/onion-www
-
06
Tor üzerinden test edin, sonra duyurun
İsteğin clearnet yerine ağ üzerinden gitmesi için
torsockskullanarak, Tor çalışan bir makineden hizmeti doğrulayın. Yanıt verdiğinde, isteğe bağlı olarak normal sitenizde birOnion-Locationbaşlığıyla clearnet ziyaretçilerini onion sürümüne yönlendirin.# from any box running tor: torsocks curl -sSI http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/ | head # advertise the onion from your clearnet nginx (inside the https server block): add_header Onion-Location "http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion$request_uri";
-
07
Anahtarı yedekleyin ve çalışma kılavuzunu yazın
Adres, anahtar dizini ile birlikte var olur ve onunla birlikte yok olur. Var olduğu anda arşivleyin, arşivi kutudan şifrelenmiş depolamaya taşıyın ve onu herhangi bir yerde geri yüklemenin tam olarak aynı
.onionadresini yeniden ürettiğini unutmayın. Ardından altı ay sonra gerçekten ihtiyaç duyacağınız iki komutu yazıya dökün — anahtarın nerede olduğu ve sağlığın nasıl kontrol edileceği — çünkü hizmet, unutacağınız kadar uzun süre dokunulmadan çalışır.sudo tar czf onion-www-key.tar.gz -C /var/lib/tor onion-www # copy onion-www-key.tar.gz to encrypted off-box storage, then delete the local copy # health check any time: sudo systemctl status tor@default sudo journalctl -u tor@default --since "1 hour ago" | grep -i "onion\|error"


