Понадобилось мне быстро и как говорится «на коленке» поднять SOCKS5-прокси с авторизацией, что бы трафик отправить до ЕСИА от разработчика через сервер где тестовый доступ открыт и в итоге я потратил час вспоминая как это настраивать.
Собственно я думаю, что эта инструкция еще не раз понадобится.
Установка необходимых пакетов
Устанавливаем собственно сам пакет и набор сетевых утилит.
# apt-get install -y curl wget net-tools
# apt-get install dante-server
Настраеваем автозапуск и запускаем.
# systemctl enable danted
# systemctl start danted
Сборка из исходных кодов
- Установите зависимости для сборки:
# sudo apt install -y build-essential libpam0g-dev libssl-dev - Скачайте последнюю версию Dante с официального сайта (проверьте актуальную на Dante Download).
# cd /tmp wget https://www.inet.no/dante/files/dante-1.5.1.tar.gz - Сконфигурируйте, соберите и установите.
# ./configure --prefix=/usr --sysconfdir=/etc && make && make install - Проверьте установку.
# which sockd # Должно вывести: /usr/sbin/sockd
Создание пользователя и группы для Dante
Для безопасности запускать будем sockd от непривилегированного пользователя.
# groupadd dante
# useradd -r -s /bin/false -g dante dante
Создание системного сервиса
Файл сервиса /etc/systemd/system/dante.service.
[Unit]
Description=Dante SOCKS server
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/sockd
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=dante
Group=dante
LimitNOFILE=32768
[Install]
WantedBy=multi-user.target
Настройка простейшей конфигурации SOCKS5-сервера
Файл конфигурации /etc/danted.conf в минимально работоспособном виде без поддержки авторизации выглядит следующим образом.
logoutput: syslog
user.privileged: proxy
user.unprivileged: nobody
user.libwrap: nobody
internal: eth0 port = 11087
external: ppp0
socksmethod: none
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
Перезапускаем.
# systemctl restart danted
Проверяем работу сервиса.
# curl --socks5 10.101.5.10:11087 http://check-host.net/ip
31.44.7.59
Настройка SOCKS5-сервера с авторизацией по логину и паролю
Без авторизации SOCS5-сервер в интернет лучше не выводить и настроим типовую pam-авторизацию (логин пароль и включение пользователя в группу).
- Устанавливаем — socksmethod: username
- В socks pass добавляем ограничение для группы — group: socks
- Меняем группу — user.privileged: root
Создаем пользователя и группу, после чего добавляем пользователя в группу.
# useradd chernousov
# passwd chernousov
# groupadd socks
# usermod -aG socks chernousov
Перезапускаем сервис.
# systemctl start danted
Проверяем авторизацию.
Первый тест, авторизация без логин-пароль.
# curl --socks5 10.101.5.10:11087 http://check-host.net/ip
curl: (97) No authentication method was acceptable.
Второй тест авторизация с некорректным паролем.
# curl --socks5 chernousov:WrongPassword@10.101.5.10:11087 http://check-host.net/ip
curl: (97) User was rejected by the SOCKS5 server (1 1).
И наконец авторизация с правильным паролем.
Устранение ошибок
Для логирования в конфигурационном файле измените параметр.
logoutput: /var/log/dante/dante.log
Создайте каталог для логов и назначьте права.
# mkdir /var/log/dante
# chown nobody /var/log/dante
Уровень логирования задается параметром.
debug: 10




