Введение
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-прокси, обеспечивая безопасность и контроль трафика.
Рекомендуемые дальнейшие шаги:
- Мониторинг и логирование: Регулярно проверяйте логи для отслеживания активности и обнаружения возможных проблем.
- Обновление безопасности: Убедитесь, что ваш сервер и пакеты обновлены до последних версий.
- Бэкапы конфигураций: Храните резервные копии конфигурационных файлов на случай необходимости восстановления.
Полезные ссылки:
