Налаштування проксі-сервера SOCKS5 на Linux за допомогою Dante передбачає встановлення пакета dante-server, конфігурацію /etc/danted.conf для визначення мережевих інтерфейсів, методів автентифікації та правил доступу, а потім запуск служби danted. Dante функціонує як SOCKS-сервер, маршрутизуючи мережевий трафік між клієнтами та цільовими призначеннями, підвищуючи безпеку мережі та дозволяючи доступ до обмежених ресурсів.
Передумови
Перед продовженням переконайтеся, що:
- Сервер Linux (наприклад, Debian, Ubuntu, CentOS, RHEL, Fedora) з правами root або sudo.
- Базове розуміння інтерфейсу командного рядка Linux та мережевих концепцій.
- Доступний мережевий інтерфейс для проксі-сервера, на якому він буде прослуховувати (внутрішній), та інтерфейс для вихідних з'єднань (зовнішній). Вони можуть бути однаковими.
Встановлення
Встановіть пакет Dante server, специфічний для вашого дистрибутива Linux.
Debian/Ubuntu
sudo apt update
sudo apt install dante-server
RHEL/CentOS/Fedora
sudo dnf install dante-server # Для Fedora/RHEL 8+
# Або для старих CentOS/RHEL 7:
sudo yum install dante-server
Конфігурація
Основний файл конфігурації для Dante – /etc/danted.conf. Файл за замовчуванням може містити приклади конфігурацій; часто найкраще створити резервну копію оригіналу та почати з мінімальної, чистої конфігурації.
sudo mv /etc/danted.conf /etc/danted.conf.bak
sudo nano /etc/danted.conf
Базова структура конфігурації
Мінімальний danted.conf визначає інтерфейс прослуховування (internal), вихідний інтерфейс (external) та базові правила доступу.
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0 # Замініть eth0 на зовнішній мережевий інтерфейс вашого сервера
socksmethod: none
user.privileged: root
user.notprivileged: nobody
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
}
Пояснення директив:
logoutput: Вказує шлях до файлу журналу.internal: Визначає мережевий інтерфейс та порт, на якому Dante прослуховує вхідні клієнтські з'єднання.0.0.0.0прив'язується до всіх доступних мережевих інтерфейсів.port=1080– це стандартний порт SOCKS.- Ви можете вказати конкретну IP-адресу (наприклад,
internal: 192.168.1.10 port=1080).
external: Визначає мережевий інтерфейс, який Dante використовує для вихідних з'єднань до цільових призначень. Замінітьeth0на фактичний публічний або вихідний інтерфейс вашого сервера (наприклад,ens3,enp0s3).socksmethod: Вказує методи автентифікації, які можуть використовувати SOCKS-клієнти.noneозначає відсутність автентифікації.user.privileged: Користувач, від імені якого Dante виконує привілейовані операції (наприклад, прив'язку до низьких портів).user.notprivileged: Користувач, на якого Dante переключається для непривілейованих операцій після ініціалізації.client passправила: Контролюють, яким клієнтам дозволено підключатися до сервера Dante.from: 0.0.0.0/0дозволяє з'єднання з будь-якої IP-адреси. Обмежте це для безпеки.to: 0.0.0.0/0вказує призначення для клієнтських з'єднань (у цьому контексті завжди сам проксі).
socks passправила: Контролюють, до яких призначень SOCKS-клієнти можуть звертатися через проксі.from: 0.0.0.0/0стосується клієнтів, які успішно автентифікувалися або пройшли клієнтські правила.to: 0.0.0.0/0дозволяє з'єднання до будь-якого призначення. Обмежте це для безпеки.log: error connect disconnectвмикає ведення журналу для подій з'єднання.
Методи автентифікації
Dante підтримує різні методи автентифікації. Найпоширенішими є none (без автентифікації) та username (ім'я користувача/пароль).
1. Без автентифікації (анонімно)
Цей метод підходить для довірених приватних мереж, де всі клієнти відомі та авторизовані використовувати проксі без явних облікових даних. Не рекомендується для публічних проксі-серверів.
# ... (решта базової конфігурації)
socksmethod: none
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Обмежити до конкретної підмережі
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Клієнти з цієї підмережі можуть досягати будь-чого
log: error connect disconnect
}
2. Автентифікація за іменем користувача/паролем
Це найпоширеніший і рекомендований метод для SOCKS5-проксі, особливо коли клієнти зовнішні або недовірені. Dante використовує системних користувачів для автентифікації.
Кроки:
-
Створіть системного користувача для проксі. Не створюйте домашній каталог і не призначайте оболонку для безпеки.
bash sudo useradd -r -s /bin/false proxyuser sudo passwd proxyuser # Введіть та підтвердіть надійний пароль
Повторіть для додаткових користувачів, якщо потрібно. -
Змініть
danted.conf:
```
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0socksmethod: username # Увімкнути автентифікацію за іменем користувача/паролем
user.privileged: root
user.notprivileged: nobodyclient 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
socksmethod: username # Вимагати ім'я користувача/пароль для SOCKS-з'єднань
log: error connect disconnect
}
`` Директиваsocksmethod: usernameу правиліsocks pass` гарантує, що лише автентифіковані користувачі можуть використовувати проксі.
3. Автентифікація на основі IP
Цей метод дозволяє певним IP-адресам або підмережам використовувати проксі без імені користувача/пароля. Його можна комбінувати з автентифікацією за username.
# ... (решта конфігурації)
socksmethod: username # Дозволити ім'я користувача/пароль як опцію
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Дозволити конкретну підмережу без автентифікації
log: error connect disconnect
}
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Дозволити всім іншим клієнтам, але вимагати автентифікацію
socksmethod: username
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Клієнти з цієї підмережі можуть досягати будь-чого (автентифікація не потрібна)
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Автентифіковані клієнти можуть досягати будь-чого
socksmethod: username
log: error connect disconnect
}
У цій конфігурації клієнтам з 192.168.1.0/24 не потрібна автентифікація, тоді як всі інші клієнти повинні надати ім'я користувача та пароль.
Конфігурація брандмауера
Після налаштування Dante відкрийте порт SOCKS (за замовчуванням 1080) у брандмауері вашої системи, щоб дозволити вхідні з'єднання.
Firewalld (CentOS/RHEL/Fedora)
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload
UFW (Debian/Ubuntu)
sudo ufw allow 1080/tcp
sudo ufw enable # Якщо UFW ще не увімкнено
Управління службами
Після конфігурації та налаштування брандмауера запустіть та увімкніть службу Dante.
sudo systemctl start danted
sudo systemctl enable danted
sudo systemctl status danted
Перевірте статус служби, щоб переконатися, що вона працює без помилок. Перегляньте /var/log/danted.log на наявність проблем з конфігурацією.
Тестування проксі
Використовуйте клієнтську машину для тестування проксі SOCKS5.
Використання curl (без автентифікації)
curl -x socks5://YOUR_SERVER_IP:1080 http://ifconfig.me/ip
Вивід має бути публічною IP-адресою вашого сервера, що вказує на те, що трафік маршрутизується через проксі.
Використання curl (з автентифікацією за іменем користувача/паролем)
curl -x socks5://proxyuser:your_password@YOUR_SERVER_IP:1080 http://ifconfig.me/ip
Замініть proxyuser та your_password на облікові дані, налаштовані раніше.
Використання proxychains (утиліта для клієнтів Linux)
-
Встановіть
proxychains:
bash sudo apt install proxychains4 # Debian/Ubuntu sudo dnf install proxychains-ng # RHEL/CentOS/Fedora -
Налаштуйте
proxychains.conf:
Відредагуйте/etc/proxychains.confабо~/.proxychains/proxychains.conf.
Закоментуйтеstrict_chainта розкоментуйтеdynamic_chain.
В кінці файлу додайте дані вашого проксі-сервера:```
... (інша конфігурація proxychains)
dynamic_chain
strict_chain
random_chain
round_robin_chain
dynamic_chain # Використовувати динамічний ланцюг для гнучкості
[ProxyList]
додати проксі сюди ...
socks5 127.0.0.1 9050
socks5 YOUR_SERVER_IP 1080 proxyuser your_password # З автентифікацією
Або, без автентифікації:
socks5 YOUR_SERVER_IP 1080
```
-
Тестування за допомогою
proxychains:
bash proxychains curl http://ifconfig.me/ip
Вивід має показати IP-адресу вашого проксі-сервера.
Рекомендації з безпеки
- Обмежте доступ: Використовуйте правила
client pass, щоб обмежити, які IP-адреси клієнтів можуть підключатися до вашого проксі. - Надійні паролі: Для автентифікації за іменем користувача/паролем переконайтеся, що всі користувачі проксі мають надійні, унікальні паролі.
- Принцип найменших привілеїв: Не надавайте зайвих привілеїв користувачеві
nobodyабо користувачам проксі. - Регулярні оновлення: Підтримуйте операційну систему Linux та пакет Dante в актуальному стані, щоб виправляти вразливості безпеки.
- Ведення журналу та моніторинг: Регулярно переглядайте журнали Dante (
/var/log/danted.log) на наявність підозрілої активності. Впроваджуйте рішення для моніторингу журналів. - Правила брандмауера: Налаштуйте брандмауер так, щоб дозволяти з'єднання до порту SOCKS (1080) лише з довірених діапазонів IP-адрес.
- Виділений користувач: Використовуйте виділеного системного користувача для доступу до проксі замість існуючих облікових записів користувачів.
- Вимкніть невикористовувані методи: Вмикайте лише ті опції
socksmethod, які є абсолютно необхідними.