Введение
Dante Server — это высокопроизводительный SOCKS-прокси сервер с поддержкой протоколов SOCKS v4 и v5. Он широко используется для управления трафиком в корпоративных сетях, обеспечения безопасности и анонимности. В этом руководстве мы подробно рассмотрим, как установить и настроить Dante Server на Ubuntu, включая создание отдельной группы для пользователей прокси, добавление пользователей в эту группу и настройку ограничений на количество одновременных соединений.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Сервер с установленной Ubuntu 20.04 или выше.
- Права суперпользователя (root) или доступ через
sudo
. - Базовые знания работы с командной строкой и редактором
nano
илиvim
.
Установка Dante Server
Запустите обновление списка пакетов и установите Dante Server с помощью следующих команд:
sudo apt update sudo apt install dante-server
Создание группы и пользователей для аутентификации
Создание группы пользователей прокси
Создайте новую группу, например, proxyusers
, для управления доступом к прокси-серверу:
sudo groupadd proxyusers
Создание пользователей и добавление их в группу
Пользователь с ограничением на количество одновременных соединений
Создадим пользователя alice
и добавим его в группу proxyusers
:
sudo adduser alice sudo usermod -aG proxyusers alice
При создании пользователя alice
следуйте инструкциям в терминале для задания пароля.
Пользователь без ограничений на количество одновременных соединений
Создадим пользователя bob
и добавим его в группу proxyusers
:
sudo adduser bob sudo usermod -aG proxyusers bob
Просмотр списка пользователей в группе
Вы можете проверить, какие пользователи находятся в группе proxyusers
:
grep proxyusers /etc/group
Настройка конфигурационного файла
Файл конфигурации Dante Server находится по пути /etc/danted.conf
. Рекомендуется создать резервную копию перед изменениями:
sudo cp /etc/danted.conf /etc/danted.conf.backup
Редактирование файла конфигурации
Откройте файл для редактирования:
sudo nano /etc/danted.conf
Пример конфигурационного файла
logoutput: /var/log/sockd.log # Укажите ваш сетевой интерфейс вместо 'eth0', если необходимо internal: eth0 port = 1080 external: eth0 socksmethod: username user.privileged: root user.unprivileged: nobody user.libwrap: nobody # Разрешаем всем клиентам подключаться к серверу client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect disconnect error } # Правило для группы 'proxyusers' с ограничением для пользователя 'alice' на 2 сессии socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 group: proxyusers socksmethod: username session.max: 2 user: alice 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 }
Пояснение конфигурации
- logoutput: Указывает путь к файлу логов. Для отладки можно использовать
stderr
. - internal и external: Определяют внутренний и внешний сетевые интерфейсы и порт для прослушивания. Замените
eth0
на ваш фактический интерфейс (например,ens3
илиenp0s3
). - socksmethod: Задает методы аутентификации. В данном случае используется только
username
. - user.privileged, user.unprivileged, user.libwrap: Определяют пользователей для разных привилегированных операций.
- client pass: Разрешает всем клиентам устанавливать соединение с сервером.
- socks pass для группы
proxyusers
и пользователяalice
: - group: proxyusers: Правило применяется к пользователям из группы
proxyusers
. - user: alice: Правило дополнительно ограничено пользователем
alice
. - session.max: 2: Ограничение на 2 одновременные сессии для пользователя
alice
. - socks pass для группы
proxyusers
без ограничений: - Это правило разрешает всем остальным пользователям из группы
proxyusers
подключаться без ограничений. - socks block: Блокирует все остальные подключения.
Сохранение изменений
После редактирования файла сохраните изменения:
- В редакторе
nano
нажмитеCtrl+O
, затемEnter
, затемCtrl+X
.
Проверка и перезапуск сервиса
Проверка конфигурационного файла
Проверьте конфигурационный файл на наличие ошибок:
sudo danted -f /etc/danted.conf -V
Если конфигурация корректна, вы увидите сообщение об успешной проверке.
Перезапуск Dante Server
Перезапустите сервис:
sudo systemctl restart danted
Проверьте статус сервиса:
sudo systemctl status danted
Статус должен быть active (running)
.
Настройка брандмауэра
Убедитесь, что порт 1080
открыт и не блокируется брандмауэром:
sudo ufw allow 1080/tcp
Тестирование сервера
Тестирование с пользователем alice
Попробуйте установить несколько одновременных соединений с использованием учетных данных alice
.
- Ожидаемый результат: Третье соединение должно быть отклонено.
Пример использования curl
:
# Первое соединение curl -x socks5h://alice:your_password@your_server_ip:1080 http://example.com -o /dev/null & # Второе соединение curl -x socks5h://alice:your_password@your_server_ip:1080 http://example.org -o /dev/null & # Третье соединение (должно быть отклонено) curl -x socks5h://alice:your_password@your_server_ip:1080 http://example.net -o /dev/null &
Тестирование с пользователем bob
Убедитесь, что пользователь bob
может устанавливать неограниченное количество соединений.
Пример использования curl
:
curl -x socks5h://bob:your_password@your_server_ip:1080 http://example.com -o /dev/null
Тестирование блокировки
Попытайтесь подключиться с несуществующим именем пользователя или без указания учетных данных.
- Ожидаемый результат: Соединение должно быть отклонено.
Дополнительные настройки
Изменение сетевого интерфейса
Если ваш сетевой интерфейс имеет другое название, замените eth0
на актуальное имя:
ip addr show
Настройка логирования
Для отладки можно изменить параметр logoutput
на stderr
, чтобы логи выводились в терминал:
logoutput: stderr
Управление пользователями и группами
Добавление нового пользователя в группу proxyusers
sudo adduser charlie sudo usermod -aG proxyusers charlie
Удаление пользователя из группы proxyusers
sudo gpasswd -d charlie proxyusers
Удаление пользователя из системы
sudo deluser charlie
Ограничение доступа по IP-адресам
Вы можете настроить доступ к прокси-серверу только для определенных IP-адресов или сетей, изменив правила client
или socks
.
Пример: Разрешить доступ только из сети 192.168.1.0/24
client pass { from: 192.168.1.0/24 to: 0.0.0.0/0 log: connect disconnect error }
Заключение
Поздравляем! Вы успешно настроили Dante Server с использованием групповой аутентификации пользователей. Теперь вы можете эффективно управлять доступом к интернету через SOCKS-прокси, обеспечивая безопасность и контроль трафика.
Рекомендуемые дальнейшие шаги:
- Мониторинг и логирование: Регулярно проверяйте логи для отслеживания активности и обнаружения возможных проблем.
- Обновление безопасности: Убедитесь, что ваш сервер и пакеты обновлены до последних версий.
- Бэкапы конфигураций: Храните резервные копии конфигурационных файлов на случай необходимости восстановления.
Полезные ссылки: