Dante это SOCKS-прокси с поддержкой SOCKS4 и SOCKS5. Здесь разберём, как поставить его на Ubuntu, пускать только пользователей из отдельной системной группы и ограничить одному из них число одновременных подключений.
Что понадобится
- Ubuntu 20.04 или новее;
- права sudo;
- открытый порт 1080 (или другой на ваш выбор).
Установка
sudo apt update sudo apt install dante-server
Сразу после установки служба может не запуститься, потому что конфигурация по умолчанию пустая. Это нормально.
Группа и пользователи
sudo groupadd proxyusers sudo useradd -M -s /usr/sbin/nologin -G proxyusers alice sudo useradd -M -s /usr/sbin/nologin -G proxyusers bob sudo passwd alice sudo passwd bob
Пользователи создаются без домашнего каталога и без оболочки: для прокси им нужен только пароль, входить на сервер по SSH они не смогут. Проверить состав группы:
getent group proxyusers
Конфигурация
Сохраните копию и откройте файл:
sudo cp /etc/danted.conf /etc/danted.conf.backup sudo nano /etc/danted.conf
Пример содержимого:
logoutput: /var/log/danted.log
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: username
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
# alice: не больше двух сессий одновременно
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
user: alice
socksmethod: username
session.max: 2
log: connect disconnect error
}
# остальные участники группы proxyusers без ограничений
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
group: proxyusers
socksmethod: username
log: connect disconnect error
}
socks block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
Что здесь важно:
internalиexternalзадают интерфейс, на котором слушает прокси, и интерфейс для исходящих соединений. Имя интерфейса узнайте командойip -br addr, часто этоens3илиenp0s3.socksmethod: usernameвключает проверку логина и пароля по системным учётным записям.- Правила проверяются сверху вниз, срабатывает первое подходящее. Поэтому правило для alice стоит выше общего правила для группы.
session.maxограничивает число одновременных сессий по правилу. Параметр появился в Dante 1.4, в Ubuntu 20.04 и новее используется именно эта ветка.- Последнее правило блокирует всех, кто не подошёл под предыдущие.
Проверка и запуск
sudo danted -V -f /etc/danted.conf sudo systemctl restart danted sudo systemctl status danted sudo ufw allow 1080/tcp
Ключ -V только проверяет конфигурацию и выходит. Подробнее о брандмауэре в статье о UFW. Хорошая идея разрешить порт только с нужных адресов, а не со всего интернета.
Тестирование
Для alice третье одновременное соединение должно быть отклонено:
for i in 1 2 3; do curl -s -x socks5h://alice:ПАРОЛЬ@IP_СЕРВЕРА:1080 https://proof.ovh.net/files/100Mb.dat -o /dev/null & done wait
У bob таких ограничений нет:
curl -x socks5h://bob:ПАРОЛЬ@IP_СЕРВЕРА:1080 https://example.com -o /dev/null
Пользователь вне группы или с неверным паролем подключиться не сможет. Все попытки видны в журнале:
sudo tail -f /var/log/danted.log
Безопасность
SOCKS5 передаёт логин и пароль открытым текстом. Не используйте для прокси те же пароли, что и для других сервисов, и по возможности ограничивайте доступ по IP. Как дополнительно запретить таким пользователям вход по SSH, описано в статье об ограничении доступа по SSH для пользователей Dante.