
Продолжаем развлекаться настройкой моего 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 и радуемся.