Установка Dante на FreeBSD

Материал из LORWiki
Перейти к навигацииПерейти к поиску

При написании статьи использовались материалы https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts



SOCKS - сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от "SOCKet Secure". SOCKS не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте TCP/IP — протоколе 4-го уровня.

Хотя этот протокол разработан достаточно давно, он является относительно новым (по сравнению с HTTP proxy). SOCKS позволяет работать с любыми (версия Socks 4 - с TCP, Socks 5 - с TCP и UDP) протоколами. SOCKS proxy просто передает данные от клиента к серверу, не вникая в содержимое самих данных (поэтому он может работать с HTTP, FTP, SMTP, POP3, NNTP, etc.).

SOCKS-сервер Dante Server[править]

В коллекции пакетов FreeBSD 11.2 имеется последняя (на момент написания статьи) версия Dante Server 1.4.2. Если не требуется специальных опций при сборке, то использовать заранее подготовленный пакет наиболее предпочтительно (иначе можно использовать коллекцию портов, но этот вопрос останется за рамками этой статьи). Для авторизации клиентов будем использовать PAM.

Устанавливаем пакет[править]

# pkg install dante
# pkg install pam_pwdfile

Модуль pam_pwdfile не включен в состав базовой системы, его тоже сразу устанавливаем.

Редактируем файл конфигурации[править]

Файл конфигурации расположен по адресу /usr/local/etc/sockd.conf

# Расположение лог-файла
logoutput: /var/log/socks.log

# На каком сетевом интерфейсе и порту обслуживаем socks клиентов
internal: em0 port = 1080

# С какого IP или интерфейса выходим во внешний мир
external: em0
#internal: x.x.x.x port = 1080

# Используемый метод авторизации клиентов.
socksmethod: pam

# От имени какого пользователя запускается сеервер
user.privileged: root

# Понижение привелегий
user.unprivileged: nobody

# Правила
client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error connect disconnect
}

client block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error connect disconnect
}

socks block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

Полный конфигурационный файл всегда можно найти в /usr/local/etc/sockd.conf.sample (не редактируйте его, это пример).

Для правильной настроки нужно указать сетевой интерфейс или IP адрес, запросы с которого будут проксироваться. Узнать имя сетевого интерфейса можно командой ifconfig. Сокращенный вывод этой команды:

$ ifconfig

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384

Настройка PAM[править]

Создаем файл /etc/pam.d/sockd с таким содержанием (подробнее)

auth required pam_pwdfile.so pwdfile /root/sockd.passwd
account required pam_permit.so

Создаем файл паролей /root/sockd.passwd (описание формата в файле, каждый пользователь с новой строки)

# User:password
UserOne:5f+wBjfFf5R|tYuEM9Kj
UserTwo:hb~A5},t5>.bnTOKzTDj

Для генерации паролей удобно использовать утилиту pwgen. Пример генерации 5 паролей длинной 20 символов с добавленийм ключей для повышенной безопасности и использования спецсимволов:

$ pwgen -ys 20 5
-Sgd'Ss-yHfEi+=2TJ?Y mvxWwFYg/[4EI2aw/:^` hb~A5},t5>.bnTOKzTDj
@9FGi0^Qp7;F91ao9vw| 5f+wBjfFf5R|tYuEM9Kj

Автоматический запуск Dante server[править]

Добавляем в файл /etc/rc.conf строку:

sockd_enable="YES"

Запускаем сервер:

service sockd start

Проверяем с клиента работоспособность с помощью curl:

$ curl --socks5 'UserOne:5f+wBjfFf5R|tYuEM9Kj@x.x.x.x:1080' ifconfig.me
xxx.xxx.xxx.xxx