Bu sayfada güncel DoS saldırılarını zayıflatacak birkaç yöntem sunuyoruz. Bu yaklaşımların tümü bir arada kullanılabilir. Bununla birlikte, bu sorunun şu anda her duruma uygun tek bir çözümü yoktur. Saldırı altındaki bir siteyi savunmak, yaratıcılık ve duruma özel bir yaklaşım gerektirir.

Tor arka plan işleminde uygulanan savunmaların Özeti, Tor içinde hizmet reddi önleme yöntemleri teknik özellikleri bölümünde anlatılmıştır. Burada bazı pratik ipuçları veriyoruz.

Tanıtım noktalarında hız sınırlaması

305 numaralı öneri uygulandığından beri, tanıtım noktalarında DoS saldırılarını azaltmaya yardımcı olmak için bazı torrc seçenekleri eklendi:

  • HiddenServiceEnableIntroDoSDefense: Tanıtım noktası düzeyinde DoS savunmasını etkinleştirir. Bu seçenek etkinleştirildiğinde, hız ve patlama parametresi, tanıtım noktasına gönderilir ve daha sonra bu hizmete tanıtma isteği için hız sınırlaması uygulamasında kullanılır.

  • HiddenServiceEnableIntroDoSBurstPerSec: Bir saniyede tanıtım noktasında izin verilen istemci tanıtım patlaması. Bu seçenek 0 olarak ayarlandığında, sonsuz olarak kabul edilir ve bu nedenle HiddenServiceEnableIntroDoSDefense ayarlanırsa, savunmaları etkin bir şekilde devre dışı bırakır.

  • HiddenServiceEnableIntroDoSRatePerSec: Bir saniyede tanıtım noktasında izin verilen istemci tanıtım hızı. Bu seçenek 0 olarak ayarlandığında, sonsuz olarak kabul edilir ve bu nedenle HiddenServiceEnableIntroDoSDefense ayarlanırsa, savunmaları etkin bir şekilde devre dışı bırakır.

Bunların nasıl çalıştıkları hakkında daha ayrıntılı bilgi almak için tor(1) rehberi sayfasında Onion Services v3 teknik özelliklerindeki bölümündeki Hizmet reddi savunma eklentisi (DOS_PARAMS) başlığına bakın.

Buluşma devreleri kurulmadan önce çalışıyor olma kanıtı (PoW)

Bir Çalışma Kanıtı (PoW) savunma yöntemi, PoW SSS bölümünde ayrıntılı olarak açıklanmaktadır ve her Onion Hizmeti için şu torrc seçenekleriyle yapılandırılabilir:

  • HiddenServicePoWDefensesEnabled: Çalışıyor olma kanıtı temelli hizmet DoS zayıflatmasını açar. Bu seçenek açıldığında Tor, bu gizli hizmetin tanımlayıcısının şifrelenmiş kısmına isteğe bağlı bir istemci bulmacasının parametrelerini ekler. Gelen buluşma isteklerine, istemcinin bulmacanın çözümünü hesaplarken göstermeyi seçtiği çaba miktarına göre öncelik verilir. Hizmet, saldırı yüküne bağlı olarak önerilen miktardaki çabayı düzenli olarak günceller ve hizmet aşırı yüklenmediğinde bulmacayı tümüyle kapatır.

  • HiddenServicePoWQueueRate: Öncelik kuyruğundan her saniye sürekli gönderilecek buluşma isteklerinin hızı.

  • HiddenServicePoWQueueBurst: Öncelik kuyruğundan aynı anda işlenecek buluşma isteklerinin olabileceği en fazla boyut.

Şu genel seçenek hem onion hizmetleri hem de istemcileri için geçerlidir:

  • CompiledProofOfWorkHash: Çalışıyor olma kanıtı DoS zayıflatması açıkken, hem hizmetlerin kendisinde hem de bağlanan istemcilerde, bulmaca hesaplamasının bir parçası olarak dinamik olarak oluşturulmuş bir karma işlevi kullanılır.

PoW, C Tor 0.4.8.1-alfa ve sonraki sürümlerinde varsayılan olarak açıktır (ancak --disable-module-pow ile derlendiğinde kapatılır). Temel çalışıyor olma kanıtı desteği şu komut yürütülerek kontrol edilebilir:

tor --list-modules
relay: yes
dirauth: yes
dircache: yes
pow: yes

pow: yes seçeneği kullanılıyorsa, C Tor içindeki PoW savunmasını kullanıyorsunuz demektir.

Lisans gereklilikleri nedeniyle tevador tarafından sunulan PoW v1 istemci bulmaca kitaplıkları (Equi-X ve HashX, ikisi de LGPL-3.0 koşulları ile yayınlanıyor) yalnızca tor --enable-gpl seçeneği ile derlendiğinde etkinleştirilir. Bunu doğrulamak için şu komutu yürütebilirsiniz:

tor --version
Tor 0.4.8.3-rc sürümü.
Bu Tor yapımı GNU Genel Kamu Lisansı koşulları altında dağıtılır (https://www.gnu.org/licenses/gpl-3.0.en.html)
Tor, Linux üzerinde Libevent 2.1.12-stable, OpenSSL 3.0.9, Zlib 1.2.13, Liblzma 5.4.1, Libzstd N/A ve libc olarak Glibc 2.36 ile çalışıyor.
GCC 12.2.0 sürümü ile derlenmiş Tor

Kurulu C Tor PoW kullanmıyorsa ya da GNU GPL desteğiyle derlenmemişse, diğer paketleri aramanız ya da kendinizin derlemesi gerekir.

Kurulmuş buluşma devrelerinde akış sınırlamaları

Buluşma devrelerindeki bağlantıları sınırlamak için aşağıdaki yapılandırma seçenekleri kullanılabilir:

  • HiddenServiceMaxStreams: Bir buluşma devresindeki en fazla eşzamanlı akış (bağlantı) sayısı. En fazla 65535 olabilir. (0 olarak ayarlamak sınırsız sayıda eşzamanlı akışa izin verir.)

  • HiddenServiceMaxStreamsCloseCircuit: 1 olarak ayarlanırsa, HiddenServiceMaxStreams değerinin aşılması, sınırı aşan akış oluşturma isteklerinin sessizce yok sayılması yerine, savunulan buluşma devresinin kopmasına neden olur.

Onionbalance

Onionbalance, Onion Hizmeti işletmecilerine, bir Onion Hizmeti için yapılan isteklerin birden fazla bilgisayar tarafından işlenmesi olanağını sunarak yüksek kullanılabilirlik oranı sağlar. Yatay ölçekte büyümek için Onionbalance kullanabilirsiniz. Ölçek büyüdükçe, saldırganların etkisi azalır. Onionbalance, Onion Hizmeti 3. sürümü ile kullanılabilir.

Site sunucusu kullanım oranını sınırlamak

Saldırganlar çok fazla sorgu yapan saldırgan devrelerle geliyorsa, bu aşırı kullanım oranını algılamaya çalışın ve HiddenServiceExportCircuitID torrc seçeneğini ile bunları yok edin. Kendi sezgisel yöntemlerinizi veya site sunucunuzun kullanım oranı sınırlama modülünü kullanabilirsiniz.

Yukarıdaki ipuçlarının zor zamanlarda ayakta kalmanıza yardımcı olması gerekir. Aynı zamanda daha gelişmiş savunmalar üzerinde de çalışıyoruz. Böylece onion hizmeti işletmecileri için el ile yapılandırma ve bakım gereksinimi azalıyor.

Ön bellek kullanımı

Hizmetinizdeki yükü azaltmanın başka bir yolu da, içerikleri doğrudan arka uç uygulamasında ya da kurulacak bir ön bellek vekil sunucusunda ön belleğe almaktır.

Kullanıcılarınızı gruplamak için istemci kimliği doğrulaması ya da birden çok onion adresi

Kullanıcılarınıza güveniyorsanız, onlara her zaman erişebilecekleri özel Onion Hizmeti ve istemci kimliği doğrulama bilgileri verebilirsiniz. Güvenmediğiniz kullanıcıları başka adreslere yönlendirebilirsiniz. Bununla birlikte, çok fazla onion adresinin olması, aslında güvenliğiniz için kötüdür (birçok koruma aktarıcısı kullanıldığından). Bu nedenle yapabildiğinizde istemci kimlik doğrulaması kullanmaya çalışın.

Güvenlik kodları ve çerezler

Kullanıcı oranlarını daha fazla sınırlamanız gerekiyorsa, altyapınızı katmanlara ayırın ve ön yüze yakın yerlere güvenlik kodları koyun. Böylece saldırganların altyapınızın derinlerine saldırmadan önce güvenlik kodlarını çözmesi gerekir.

Güvenlik kodları DDoS saldırılarını zayıflatmanın yollarından biridir. Bir istemciden bir istek geldiğinde, istemcide doğru güvenli çerezin bulunup bulunmadığına bakılır. Bulunamazsa güvenlik kodu sayfası açılır. İstemci güvenlik kodunu çözer. Nginx güvenlik kodunun çözümünü doğrulanmak üzere recatcha sunucusuna gönderir.

Yanıt doğru ise recaptcha sunucusundan "true..." ile, değilse "false..." ile başlayan bir yanıt alınır. Doğrulanan istemciye güvenlik çerezi eklenir, istemci görüntülemek istediği sayfaya yönlendirilir.

Güvenlik kodlarını Nginx ve OpenResty ile doğrudan site sunucunuza eklemek için Güvenlik kodu görüntüleri oluşturan ve doğrulayan Lua kullanacak şekilde uyarlayabilirsiniz. Bu uyarlamayı yapılandırmak kolay değildir.

Alternatif olarak sınama-çerez uygulaması kullanılabilir. Site sunucunuzda, istemcilerin geçerli çerezler ayarlayıp ayarlayamadığına bakın. Kötü niyetli istemcilerde genellikle bu özellik bulunmaz. Cloudflare, Nginx için çerezlerle etkileşim kurmayı sağlayan bir kitaplık sunuyor.

Ayrıca .onion hizmetinize bağlanan istemcilerin, User-Agent ve Referrer üst bilgilerinin saldırı ile ilişkilendirebileceğiniz bir değere ayarlanmamış olmasına da bakabilirsiniz.