На овој страници представљамо неколико начина за ублажавање DoS напада тренутно.
Сви ови приступи могу се комбиновати.
Међутим, тренутно не постоји једно решење које одговара свима за овај проблем.
Одбрана сајта под нападом захтева креативност и приступ прилагођен конкретној ситуацији.
Преглед имплементираних одбрана у Тор демону дат је у одељку Преглед спецификације Механизми за спречавање напада ускраћивањем услуге у Тору, а овде дајемо неке практичне савете.
Ограничење брзине на Уводним Тачкама
Пошто је Предлог 305 имплементиран, неке torrc опције су додате да помогну у ублажавању DoS напада на уводним тачкама:
HiddenServiceEnableIntroDoSDefense: Омогућите DoS одбрану на нивоу уводне тачке.
Када је ово омогућено, параметри стопе и бурста ће бити послати уводној тачки која ће их затим користити за примену ограничења стопе за уводне захтеве за ову услугу.
HiddenServiceEnableIntroDoSBurstPerSec: Дозвољени бурст уводних захтева по секунди на уводној тачки.
Ако је ова опција 0, сматра се бесконачном и тако, ако је HiddenServiceEnableIntroDoSDefense подешен, ефективно онемогућава одбрану.
HiddenServiceEnableIntroDoSRatePerSec: Дозвољена стопа уводних захтева по секунди на уводној тачки.
Ако је ова опција 0, сматра се бесконачном и тако, ако је HiddenServiceEnableIntroDoSDefense подешен, ефективно онемогућава одбрану.
За више информација о томе како функционишу, погледајте tor(1) manpage и одељак Проширење одбране од напада ускраћивањем услуге (DOS_PARAMS) спецификације Онион услуге v3.
Доказ о Раду (PoW) пре успостављања Рандеву Кругова
Механизам одбране Доказ о Раду (PoW) је детаљно објашњен у PoW FAQ, и може се конфигурисати за сваку Онион Услугу са следећим torrc опцијама:
HiddenServicePoWDefensesEnabled: Омогућите ублажавање DoS напада засновано на доказу о раду.
Када је омогућено, тор ће укључити параметре за опционалну загонетку клијента у шифровани део дескриптора овог скривеног сервиса.
Долазни рандеву захтеви ће бити приоритетни на основу количине напора који клијент одлучи да уложи приликом израчунавања решења загонетке.
Услуга ће периодично ажурирати предложену количину напора, на основу оптерећења напада, и онемогућити загонетку у потпуности када услуга није преоптерећена.
HiddenServicePoWQueueRate: Одржива стопа рандеву захтева за обраду по секунди из приоритетног реда.
HiddenServicePoWQueueBurst: Максимална величина изненадног повећања за рандеву захтеве обрађене из приоритетног реда одједном.
Следећа глобална опција је применљива и на онион услуге и на њихове клијенте:
CompiledProofOfWorkHash: Када је ублажавање DoS напада засновано на доказу о раду активно, и саме услуге и клијенти који се повезују користиће динамички генерисану хеш функцију као део израчунавања загонетке.
PoW је омогућен по подразумеваном на C Тор верзијама 0.4.8.1-alpha па надаље (али се може онемогућити ако је компајлиран са --disable-module-pow).
Основна подршка за PoW може се проверити покретањем ове команде:
tor --list-modules
relay: yes
dirauth: yes
dircache: yes
pow: yes
Ако имате pow: yes, онда имате PoW механизам одбране уграђен у C Тор.
Због захтева лиценце, PoW v1 библиотеке за загонетке клијената (Equi-X и HashX од tevador-а, обе под LGPL-3.0) су омогућене само ако је тор компајлиран са --enable-gpl.
Ово се може потврдити покретањем следеће команде:
tor --version
Тор верзија 0.4.8.3-rc.
Ова верзија Тора је покривена GNU Општом Јавном Лиценцом (https://www.gnu.org/licenses/gpl-3.0.en.html)
Тор ради на Линуксу са Libevent 2.1.12-stable, OpenSSL 3.0.9, Zlib 1.2.13, Liblzma 5.4.1, Libzstd N/A и Glibc 2.36 као libc.
Тор компајлиран са GCC верзијом 12.2.0
Ако ваш инсталирани C Тор нема омогућен PoW или није компајлиран са подршком за GNU GPL, онда ћете морати да потражите друге пакете или да га сами компајлирате.
Ограничења стрима у успостављеним Рандеву Круговима
Следеће конфигурационе опције могу се користити за ограничавање веза у рандеву круговима:
HiddenServiceMaxStreams: Максималан број истовремених стримова (веза) по рандеву кругу.
Максимална дозвољена вредност је 65535. (Подешавање ове вредности на 0 ће омогућити неограничен број истовремених стримова.)
HiddenServiceMaxStreamsCloseCircuit: Ако је подешено на 1, онда ће прекорачење HiddenServiceMaxStreams узроковати рушење прекораченог рандеву круга, за разлику од захтева за креирање стримова који прекорачују лимит и који ће бити тихо игнорисани.
Onionbalance
Onionbalance омогућава оператерима Онион Услуга да постигну својство високе доступности омогућавајући више машинама да обрађују захтеве за Онион Услугу.
Можете користити Onionbalance за хоризонтално скалирање.
Што више скалирате, теже је нападачима да вас савладају.
Onionbalance је доступан за v3 Онион услуге.
Ограничење брзине веб сервера
Ако вас нападачи преплављују агресивним круговима који извршавају превише упита, покушајте да откријете ту прекомерну употребу и убијете их користећи HiddenServiceExportCircuitID torrc опцију.
Можете користити своје хеуристике или користити модул за ограничење брзине вашег веб сервера.
Горњи савети би требало да вам помогну да останете на површини у турбулентним временима.
Истовремено радимо на напреднијим одбранама, тако да је потребно мање ручне конфигурације и подешавања од стране оператера онион услуга.
Кеширање
Још један начин да смањите оптерећење на вашој услузи је да имплементирате кеширање садржаја, било директно на позадинској апликацији или постављањем кеширајућег прокси фронтенда.
Ауторизација клијента или више онион адреса за сегментацију ваших корисника
Ако имате кориснике којима верујете, дајте им посебну Онион Услугу и акредитиве за Ауторизацију клијента како би увек била доступна.
За кориснике којима не верујете, поделите их на више адреса.
Ипак, имање превише онион адреса је заправо лоше за вашу безбедност (због коришћења многих заштитних чворова), па покушајте да користите Ауторизацију клијента кад год је могуће.
Капче и колачићи
Ако треба да додатно ограничите кориснике, поделите своју инфраструктуру на слојеве и поставите Капче близу предњег дела.
На овај начин нападачи ће морати да реше Капче пре него што буду могли да нападну дубље у вашу инфраструктуру.
Капче су начин да се ублаже DDoS напади.
Када захтев дође од клијента, проверава се да ли клијент садржи исправан сигуран колачић, у супротном се преусмерава на recaptcha страницу.
Клијент уноси слова капче.
Nginx шаље ова унесена слова на recaptcha сервер ради верификације.
Тачан одговор са recaptcha сервера почиње са "true...", у супротном почиње са "false...".
Додајте сигуран колачић за исправно верификованог клијента, преусмерите клијента на страницу коју жели да види.
Могуће је имплементирати Капче директно на вашем веб серверу са Nginx и OpenResty користећи Lua за генерисање и верификацију капча слика.
Ова имплементација није лака за конфигурисање.
Алтернатива може бити само имплементација тест-колачић изазова.
На вашем веб серверу проверите да ли клијенти могу да поставе важеће колачиће, злонамерни клијенти често немају ову функцију.
У Nginx-у, Cloudflare пружа библиотеку за интеракцију са колачићима.
Друге методе укључују осигурање да клијенти који се повезују на вашу .онион имају важећи User-Agent заглавље и да Referer заглавље није постављено на вредност коју можете повезати са нападом.