Admin
Администратор
Обеспечение безопасности скрытого веб-сервиса
Прежде всего, веб-сервер вообще не должен отвечать на HTTP-запросы по IP-адресу сервера. Разрешён должен быть только трафик, проходящий через скрытый сервис Tor, который подключается к веб-серверу на порт 80 через loopback-интерфейс.
Достаточно следующих правил iptables:
Код:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP
iptables -A INPUT -i lo -p tcp --dport 80 -j ACCEPT
Кроме того, Apache должен слушать соединения только на localhost (127.0.0.1), а не на * или 0.0.0.0.
Это настраивается в VirtualHost или ports.conf:
Код:
Listen 127.0.0.1:80
Ограничение доступа только для Tor
Пример скрипта для nightly cron-задачи, который создаёт .htaccess, разрешающий доступ только с выходных узлов Tor:
Код:
#!/bin/bash
docroot=/var/www/htdocs
ipaddress=0.0.0.0
sed -in '/#\ TOR-ALLOW-BLOCK/,/#\ END-TOR-ALLOW-BLOCK/d' $docroot/.htaccess
wget -q 'https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip='"$ipaddress"'&port=80
' -O - | sed '/^#/d' | sed "s/^/Allow from /g; 1i# TOR-REDIRECT-BLOCK" >> $docroot/.htaccess
Сначала создайте .htaccess со следующим содержимым:
Код:
Order Deny,Allow
Deny from all
TOR-ALLOW-BLOCK
END-TOR-ALLOW-BLOCK
Обновляйте Tor
Недостаточно просто установить Tor и настроить onion-сервис.
Необходимо регулярно обновлять ПО, так как Tor, как и любое другое программное обеспечение, может содержать критические уязвимости.
Onion-сервисы — это не только сайты
Onion-сервисы можно использовать для:
[]IMAP
[]SMTP
[]передачи почты между MTA
[]других сетевых сервисов
Решение — пропускать весь исходящий трафик только через Tor.
Не запускайте relay и onion-сервис вместе
Не запускайте Tor-relay и onion-сервис на одном IP или машине.
Это упрощает корреляцию трафика и fingerprinting.
Мониторинг доступности
Onion-сервисы могут падать по разным причинам.
Настройте мониторинг, который регулярно проверяет их доступность.
Несколько портов для одного onion-сервиса
Код:
HiddenServiceDir /usr/local/etc/tor/other_hidden_service/
HiddenServicePort 6667 127.0.0.1:6667
HiddenServicePort 22 127.0.0.1:22
Для нескольких onion-сервисов используйте несколько HiddenServiceDir.
SSL/TLS не обязателен
Onion-адрес уже представляет собой полностью зашифрованный туннель с PFS.
Однако дополнительные уровни защиты допустимы.
Rails 4 и onion-сервисы
Отключите принудительный SSL:
Код:
config.force_ssl = false
Добавьте secure_headers:
Код:
gem 'secure_headers', '~> 3.5'
Конфигурация:
Код:
SecureHeaders::Configuration.default do |config|
config.cookies = {
secure: true,
httponly: true,
samesite: {
strict: true
}
}
end
Важно: не задавайте X_FORWARDED_PROTO=https для onion-виртуалхоста на 80 порту.
Утечки реального сервера
Основные источники утечек:
[]баннеры сервера (Apache, thttpd, версия ОС)
[]Referer-заголовки
[]phpinfo(), $_SERVER, сообщения об ошибках
[]SSRF-атаки- неверные Host-заголовки
Используйте NTP для точного времени — временные сдвиги помогают deanonymization.
OnionScan
Используйте инструмент OnionScan (onionscan.org) для поиска утечек:
[]реальные IP
[]EXIF-метаданные- включённый mod_status
Onion-сервисы не обязаны быть скрытыми
Они отлично подходят для защиты пользователей от пассивного сетевого наблюдения.
Сделайте onion-сервисы известными
[]публикуйте onion-адреса
[]подписывайте список цифровой подписью- используйте DNS TXT
Перенос onion-сервисов
Достаточно скопировать:
Код:
/var/lib/tor/<hidden_service>
И использовать ту же конфигурацию torrc.
Защита приватных ключей
[]никогда не публикуйте private_key
[]ограничьте права доступа- делайте резервные копии
Осторожно с localhost
Типичные проблемы:
[]/server-status
[]доступные только с 127.0.0.1 ресурсы
Возможные решения:
[]отдельная машина
[]изоляция Tor- публичный IP вместо localhost
Пример:
Код:
HiddenServiceDir /var/lib/tor/hidden/ftp/
HiddenServicePort 80 192.168.1.1:81
Unix-сокеты (рекомендуется)
Код:
HiddenServicePort 80 unix:/etc/lighttpd/unix.sock
Поддерживается nginx, lighttpd, twisted.
Регулярный аудит
Постоянно проверяйте конфигурации, которые:
- разрешены с localhost
- запрещены извне
И настраивайте безопасные обходные решения.
Надеюсь, вы будете соблюдать эти рекомендации и не допустите утечек.