1. Включите автоматическое обновление программ

Одно из главных условий защиты узла – своевременно устанавливать обновления безопасности. Лучше делать это автоматически, чтобы не забыть. Следуйте инструкциям по включению автоматического обновления программ для вашей операционной системы.

2. Загрузите pkg

В этом руководстве подразумевается, что у нас установлена и запущена базовая FreeBSD. Это значит, что никаких пакетов не установлено, даже собственно пакетного менеджера pkg нет. Команда sudo недоступна, мы выполняем команды с правами суперпользователя (root).

Чтобы скачать и установить pkg:

# pkg bootstrap
# pkg update -f
2.1. Советы по настройке pkg

Чтобы оперативнее получать обновления, советуем изменить вариант 'quarterly', используемый pkg, на 'latest'.

Ещё одно важное условие: получать пакеты/обновления по HTTPS. Для этого понадобится дополнительный пакет (ca_root_nss).

Чтобы установить пакет ca_root_nss:

# pkg install ca_root_nss

Мы сохраним изначальные настройки, которые использует pkg, но добавим новые, которые будут иметь приоритет. Для этого мы создадим новую папку и сохраним в ней файл с настройками: /usr/local/etc/pkg/repos/FreeBSD.conf.

Создайте новую папку:

# mkdir -p /usr/local/etc/pkg/repos

Так должен выглядеть новый файл конфигурации: /usr/local/etc/pkg/repos/FreeBSD.conf:

FreeBSD: {
  url: pkg+https://pkg.freebsd.org/${ABI}/latest
}

После того, как все изменения вступят в силу, обновите список пакетов и проверьте, нет ли каких-то новых обновлений:

# pkg update -f
# pkg upgrade -y -f

3. Установите Tor

Рекомендуется установить стабильную версию:

# pkg install tor

Или установите альфа-версию:

# pkg install tor-devel

4. Установите obfs4proxy

# pkg install obfs4proxy-tor

5. Найдите файл настроек Tor (обычно тут: /usr/local/etc/tor), откройте и замените содержимое на:

RunAsDaemon 1
BridgeRelay 1

# Замените "TODO1" портом Tor по своему выбору. Этот порт должен быть доступен.
# Избегайте порта 9001. Он обычно ассоциируется с Tor. Цензоры
# могут знать об этом, просматривая Интернет.
ORPort TODO1

ServerTransportPlugin obfs4 exec /usr/local/bin/obfs4proxy

# Замените "TODO2" портом obfs4 по своему выбору. Этот порт должен быть
# доступен извне и отличаться от порта ORPort.
# Избегайте порта 9001. Он обычно ассоциируется с Tor.
# Цензоры могут знать об этом, просматривая Интернет.
ServerTransportListenAddr obfs4 0.0.0.0:TODO2

# Местный коммуникационный порт между Tor и obfs4. Всегда выбирайте значение "auto".
# "Ext" значит "расширенный", а не "внешний". Не пытайтесь установить конкретный
# номер порта или слушать 0.0.0.0.
ExtORPort auto

# Замените "<address@email.com>" вашим адресом email, чтобы мы могли связаться с вами
# в случае проблем с вашим мостом. Это необязательно, но желательно.
ContactInfo <address@email.com>

# Выберите название для своего моста. (Это необязательно).
Nickname PickANickname

Log notice file /var/log/tor/notices.log

Не забудьте изменить опции ORPort, ServerTransportListenAddr, ContactInfo и Nickname.

  • Обратите внимание: и OR-порт Tor, и порт obfs4 должны быть доступны. Если ваш мост находится за межсетевым экраном или NAT, убедитесь, что оба порта открыты. Чтобы проверить, доступен ли obfs4-порт из Интернета, можете использовать наш тест.

  • Используете брандмауэр FreeBSD с настройкой "default deny" по умолчанию? Тогда убедитесь, что ваш obfs4proxy может установить связь с вашим процессом Tor через loopback-интерфейс. Не забудьте разрешить ExtORPort в Tor.

6. Убедитесь, что опция random_id sysctl включена

# echo "net.inet.ip.random_id=1" >> /etc/sysctl.conf
# sysctl net.inet.ip.random_id=1

7. Запустите демона и убедитесь, что он стартует при загрузке

# sysrc tor_setuid=YES
# sysrc tor_enable=YES
# service tor start

8. Следите за логами

Доказательством того, что ваш мост работает без проблем, служит примерно такая запись в /var/log/tor/notices.log:

[notice] Your Tor server's identity key fingerprint is '<NICKNAME> <FINGERPRINT>'
[notice] Your Tor bridge's hashed identity key fingerprint is '<NICKNAME> <HASHED FINGERPRINT>'
[notice] Registered server transport 'obfs4' at '[::]:46396'
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort <redacted>:3818 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.

9. В завершение

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