1754504897708.png

🔐 Скрытые сервисы Tor часто становятся жертвами:​

  • DoS-атак (атаки на отказ в обслуживании),
  • атаки на интро-точки (где начинается соединение клиента с сервисом),
  • создания большого числа соединений и потоков (streams), чтобы перегрузить сервис.

Tor внедрил PoW (Proof of Work) и DoS-защиты, чтобы защититься от подобных атак без ущерба для обычных пользователей.

Но важно установить последнюю версию сервера, как это сделать:

Код:
# 1) Ключ репозитория в keyring
sudo mkdir -p /usr/share/keyrings
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
  | gpg --dearmor \
  | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

# 2) Источник пакетов (bookworm)
echo 'deb [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org bookworm main' \
  | sudo tee /etc/apt/sources.list.d/tor.list >/dev/null

# 3) Обновление и установка
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring

# (опционально) Проверить версию
tor --version

Далее для включения защиты достаточно добавить например такие настройки в /etc/tor/torrc:

Код:
HiddenServiceMaxStreams 64
HiddenServiceMaxStreamsCloseCircuit 0

HiddenServicePoWDefensesEnabled 1
HiddenServicePoWQueueRate 80
HiddenServicePoWQueueBurst 400

HiddenServiceEnableIntroDoSDefense 1
HiddenServiceEnableIntroDoSRatePerSec 15
HiddenServiceEnableIntroDoSBurstPerSec 60

И перезапустить сервис:
service tor restart

🔧 Настройки Tor: Подробный разбор

🧵 HiddenServiceMaxStreams 64

  • Что делает: Устанавливает максимум потоков (streams) через одно соединение (circuit).
  • Что такое stream в Tor: Каждый HTTP-запрос от клиента считается отдельным потоком.
  • Почему важно:
    Один circuit может использоваться повторно для нескольких запросов, и атакующий может открыть десятки/сотни потоков через одно соединение — это экономно для атакующего и дорого для сервера.
  • Значение 64: Разрешает до 64 параллельных потоков через один circuit. Это много. Обычно достаточно 8–16, особенно если сервис не предполагает кучу одновременных запросов.
🔸 Рекомендация: Для форумов — не ниже 32, зависит от внешних элементов, картинок и т.д.



🔁 HiddenServiceMaxStreamsCloseCircuit 0​

  • Что делает: Определяет, закрывается ли circuit, если достигнут лимит потоков (HiddenServiceMaxStreams).
  • Значение 0: Circuit остаётся открытым, новые потоки не принимаются, но старые продолжают работу.
  • Значение 1: Circuit закрывается, и клиенту придётся открыть новый.

🔸 Рекомендация: 1 — повышает защищённость. Клиенты не смогут перегрузить один circuit множеством соединений.



🔨 HiddenServicePoWDefensesEnabled 1​

  • Что делает: Включает механизм защиты PoW (Proof-of-Work).
  • Как работает:
    • Перед установлением соединения с сервисом Tor требует от клиента решить криптографическую задачу.
    • Это требует вычислений и делает атаки дороже.
    • Законные пользователи почти не замечают этого, но боты и скрипты замедляются.
🔸 Обязательно включать для публичных сервисов!



📊 HiddenServicePoWQueueRate 80​

  • Что делает: Определяет, сколько запросов на соединение в секунду можно добавить в очередь без PoW.
  • Если лимит превышен:
    • Клиенту предлагается выполнить PoW для продолжения.
🔸 Значение 80: Позволяет 80 соединений/сек без задержки. Это довольно щедро.

🔹 Пример:
Если форум посещает 10 пользователей, каждый открывает 5 вкладок → 50 соединений.
Лимит 80 — адекватен.
Но если злоумышленник создаёт 500 соединений/сек — он будет наказан.

Значения нужно подбирать в зависимости от средней посещалки вашего сервиса, слишком большие значения задавать нет смысла, т.к. защиты не будет, слишком маленькие сильно будут задерживать пользователей.


🚀 HiddenServicePoWQueueBurst 400​

  • Что делает: Максимальное число соединений, которые могут быть поставлены в очередь до начала PoW-ограничений.
  • Логика: Буфер на случай пиковых нагрузок (например, резкий всплеск активности).
🔸 Значение 400: Пиковая нагрузка в 400 соединений возможна без PoW, если она кратковременна.
🔸 Рекомендация: Значения нужно подбирать в зависимости от средней посещалки вашего сервиса, слишком большие значения задавать нет смысла, т.к. защиты не будет, слишком маленькие сильно будут задерживать пользователей.

📍 HiddenServiceEnableIntroDoSDefense 1​

  • Что делает: Включает защиту интро-точек (introduction points).
  • Введение:
    В сети Tor клиент сначала подключается к интро-точке, которая связывает его с hidden-сервисом. Эти точки могут быть атакованы, чтобы:
    • исчерпать ресурсы сервиса,
    • заставить его сменить точки и вызвать нестабильность.
  • Защита DoS:
    Tor будет блокировать/ограничивать клиентов, которые шлют слишком много интро-запросов.


⏱ HiddenServiceEnableIntroDoSRatePerSec 15
  • Что делает: Определяет, сколько интро-запросов в секунду допускается с одного клиента/IP.
🔸 Значение 15: До 15 запросов/сек разрешено без ограничений.



💥HiddenServiceEnableIntroDoSBurstPerSec 60
  • Что делает: Разрешённый пик интро-запросов (burst), прежде чем включится защита.
🔸 Значение 60: Клиент может резко отправить до 60 запросов за одну секунду, но если продолжит в том же темпе, начнётся блокировка.

Вот и всё, удачи !)