Как стать автором
Обновить

Комментарии 29

было бы хорошо указать, что для корректной работы PAM авторизации Dante должен быть скомпилирован c поддержкой PAM.
(указано по ссылке которую автор привел в конце статьи.)
Благодарю за поправку, обязательно в ближайшее время добавлю данный момент.
Ждёмс…
Так вот же: «Необходимо оговориться, что данте для данного функционала должен быть собран с поддержкой PAM, в статьях по установке это отображено тем, что в статусе конфигурации исходников должна быть следующая строка:»
Debian 9. Что если в /etc/pam.d нет файла sockd? Сервис данте, я так понимаю называется danted. Добавление файла danted в /etc/pam.d не решает ситуацию. Приконнектиться не удается.

Dante из репозитория. v1.4.1
Если, файл отсутствует, то при открытие на редактирование (например командой nano /etc/pam.d/socksd ) он создастся. Необходимо создавать именно файл sockd.

Для большей наглядности добавлю команду редактирования в статью.
sockd тоже сделал на всякий случай (хотя в дебиане такой службы нет, есть danted). Не пашет.
В логе:
Apr 25 14:37:23 (1524663443.287009) danted[4672]: info: Dante/server[1/1] v1.4.1 running
Apr 25 14:37:34 (1524663454.948978) danted[4674]: info: block(1): tcp/accept ]: xxx.xx.xxx.x.xxxxx xx.xxx.xx.xxx.xxxx: error after reading 19 bytes in 3 seconds: pam_authenticate() for user "socks" failed: Authentication failure


Отдельно скажу, что socksmethod: username работает нормально. Проблемы только после переключения.
1.
~# ps -aux|grep danted
nobody 4716 0.0 0.1 48556 1860 ? Ss 14:45 0:00 /usr/sbin/danted -D
nobody 4717 0.0 0.0 48556 320 ? S 14:45 0:00 danted: monitor-ch
root 4718 0.1 0.5 68264 5184 ? S 14:45 0:00 danted: negotiate-
nobody 4719 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4720 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4721 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4722 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4723 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4724 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4725 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4726 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4727 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4728 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4729 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4730 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4731 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4732 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4733 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4734 0.0 0.0 48556 328 ? S 14:45 0:00 danted: request-ch
nobody 4735 0.0 0.1 48556 1412 ? S 14:45 0:00 danted: io-child:
nobody 4736 0.0 0.1 48556 1484 ? S 14:45 0:00 danted: negotiate-
root 4756 0.0 0.1 12784 1020 pts/0 S+ 14:47 0:00 grep danted


2. sockd.passwd генерировался командой htpasswd -b -m -c /opt/danted/danted.passwd UserName SomeStrongPassword представляет из себя

cat /opt/danted/danted.passwd
socks:hash


В /etc/pam.d/sockd и danted указан именно /opt/danted/danted.passwd
Возможно, не установлен pam_pwdfile.so. В /lib/security (или /lib64/security) должен присутствовать таковой.
Установлен.

Проблему удалось победить, сгенерировав хеш при помощи mkpasswd.

Причем «htpasswd -b -m -c» при повторном вызове постоянно разный хеш вставляет в файл. Соль что ли используется? Ну и по результату не работает. В первопричинах пока не разбирался.
Странно, нужно будет проверить в чем проблема. Пока что уберу способ с htpasswd
~# htpasswd -b -m -c /opt/danted/danted.passwd1 socks qwer1234
Adding password for user socks
~# htpasswd -b -m -c /opt/danted/danted.passwd2 socks qwer1234
Adding password for user socks
~# cat /opt/danted/danted.passwd1
socks:$apr1$YfVx7bMg$QezEU7Mf0AgDiRCD3Yx/g.
~# cat /opt/danted/danted.passwd2
socks:$apr1$aydFBNIn$uYkZh5VdRBiWdvT0AH.h2.
Да, действительно htpasswd для md5 использует соль…

httpd.apache.org/docs/2.4/misc/password_encryptions.html

Но и mkpasswd использует соль. Проблема заключается в типе алгоритма в хэше. Тип для md5 должен быть $1, однако htpasswd устанавливает тип $apr1

www.shellhacks.com/ru/linux-generate-password-hash

И насколько я понимаю формат хеширования MD5 (APR) не поддерживается.
Необходимо создавать именно файл sockd

Не обязательно именно sockd, имя сервиса можно указать в конфиге с помощью pamservicename.
Благодарю, действительно упустил эту директиву. Добавлю в статью этот момент.
У меня более общий вопрос. Чаще всего используются следующие види прокси:
http/https — thinproxy, squid.
и socks — 3proxy, dante, shadowsocks.
Если я понял правильно, то http/https прокси вообще не предусматривают паролей и к ним может подключиться любой. В socks-прокси можно настроить вход по паролям, но я слышал, что они передаются открытым текстом, то есть существует возможность их перехвата. Я верно изложил или нет?
Http прокси так же могут быть закрыты паролем, в том числе и с использованием SSL/TLS.
Да, пароль к прокси передается в открытом виде, в связи с чем и появилась эта статья.

Кроме shadowsocks. Это обёртка, которая туннелирует внутри себя, и локально запускает socks сервер. и пароль зашифрованным передается.

А кто знает как в этом dante победить chaining local socks5-> remote socks5 для случая когда оба сервера с авторизацией?
Фактически самая ходовая ситуация — купленый внешний socks5 прокси используется через socks5 установленный в локалке.

У меня немного схожий вопрос.
Собираюсь спрятать прокси тора за авторизацию, данте же умеет переадресовывать запросы не на интерфейс, а на другую сокс проки(в данном случае тор)?

Согласно этому разделу документации, вы можете это реализовать. Авторизация при цепочки прокси возможна, но не поддерживается. Так что на свой страх и риск.
Вроде я в начале статьи привет ссылку ( например ) по которой можно прочитать одну из вполне очевидных причин использовать «эти заморочки».
Вообще возможность обезопасить свой сервер от потенциальной дыры вполне себе оправдывает данные действия.
Запуск dante в docker контейнере избавляет от многих проблем hub.docker.com/r/vimagick/dante

Если dante настраивается только для телеграма, то можно в конфиге разрешить его подсети github.com/ojab/docker-dante-telegram/blob/master/danted_authenticated.conf
Это подстрахует от mitm атак, так как логин и пароль передаются в открытом виде. Таким образом сделать, что-то противоправное через ваш прокси не получится. Но к сожалению не решает проблему использования вашего прокси на халяву для телеграма.

Ещё есть pam_userdb, который использует berkley db. В отличие от pam_pwdfile присутствует из коробки в CentOS. Собственно, я о нём узнал, когда для https://selivan.github.io/socks прислали патч с поддержкой CentOS :)

Работает, благодарю (плюс в карму). Что удивительно, работает быстрее, чем SSH-тоннель; во всяком случае, Telegram показывает для SSH-тоннеля на тот же VPS пинг 95 мс, а для этого прокси — 58.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории