Настройка Proxy/VPN сервера (Часть вторая SOCKS5)

Оцените статью

Продолжаем развлекаться настройкой моего Proxy/VPN проекта и в прошлом цикле заметок прошлись по многим аспектам и даже настроили HTTP-сервер на базе Squid и теперь мы плавно пришли к настройке SOCKS5 с авторизацией.

Фактически у нас все готово и есть LXC-контейнер для SOCKS-прокси.

# lxc ls
+----------------+---------+-------------------+------+-----------+-----------+
|      NAME      |  STATE  |       IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+----------------+---------+-------------------+------+-----------+-----------+
| srv-lxc-socks5 | RUNNING | 10.101.5.3 (eth0) |      | CONTAINER | 0         |
+----------------+---------+-------------------+------+-----------+-----------+
| srv-lxc-squid  | RUNNING | 10.101.5.2 (eth0) |      | CONTAINER | 0         |
+----------------+---------+-------------------+------+-----------+-----------+

Настройка LXC-контейнера проходит аналогично версии с HTTP-прокси и повторяться не будем.

Установка SOCKS5-прокси сервера Dante

Установка стандартная из пакета.

# aptitude install dante-server

Активируем, запускаем и переходим к настройке.

# systemctl enable danted
# systemctl start danted

Настройка SOCKS5-прокси сервера Danted

Конфигурационный файл /etc/danted.conf и мы обработаем его аналогично как сделали со squid.

# cp /etc/danted.conf /etc/danted.conf.source
# cat /etc/danted.conf.source | grep -v "^#" | grep -v "^$" > /etc/danted.conf

Файл конфигурации конечно очень интересный, но не работающий.

logoutput: stderr
user.privileged: proxy
user.unprivileged: nobody
user.libwrap: nobody

Минимальная конфигурация для подключения без авторизации откуда угодно выглядит так.

logoutput: syslog
user.privileged: proxy
user.unprivileged: nobody
user.libwrap: nobody

internal: eth0 port = 11087
external: eth0

socksmethod: none
clientmethod: none

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
}

Проверяем, что все работает.

$ curl --socks5 10.101.5.3:11087 http://check-host.net/ip
92.246.129.81

Прокси без авторизации это так себе идея и давайте настроим доступ по логин-пароль.

  • Устанавливаем — socksmethod: username
  • В socks pass добавляем ограничение для группы — group: socks
  • Меняем группу — user.privileged: root

Создаем пользователя и группу, добавляем пользователя в группу.

# useradd chernousov
# passwd chernousov
# groupadd socks
# usermod -aG socks chernousov

Перезапускаем сервис и пробуем с авторизацией, без авторизации и с неверным паролем.

$ curl --socks5 10.101.5.3:11087 http://check-host.net/ip
curl: (97) No authentication method was acceptable.
$ curl --socks5 chernousov:RealPassword@10.101.5.3:11087 http://check-host.net/ip
92.246.129.81
$ curl --socks5 chernousov:WrongPassword@10.101.5.3:11087 http://check-host.net/ip
curl: (97) User was rejected by the SOCKS5 server (1 1).

Все работает, далее прописываем правило в Firewall и радуемся.

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker

Сетевые возможности Docker

Сетевые возможности Docker