Оглавление

Введение

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-прокси, обеспечивая безопасность и контроль трафика.

Рекомендуемые дальнейшие шаги:

  • Мониторинг и логирование: Регулярно проверяйте логи для отслеживания активности и обнаружения возможных проблем.
  • Обновление безопасности: Убедитесь, что ваш сервер и пакеты обновлены до последних версий.
  • Бэкапы конфигураций: Храните резервные копии конфигурационных файлов на случай необходимости восстановления.

Полезные ссылки: