Выбор методов аутентификации SOCKS5 в Dante
Поймите, как Dante выбирает предложенный метод аутентификации SOCKS5 и как порядок методов меняет политику, которую видят клиенты.
В SOCKS5 аутентификация согласуется до того, как клиент отправит запрос назначения. Поэтому ранний сбой учётных данных — это иное событие, чем сбой FTP, HTTPS или другого приложения за прокси.
Приветствие клиента перечисляет поддерживаемые им методы аутентификации. Сервер выбирает один метод из этого списка и возвращает выбор. Значение 0xff означает, что ни один предложенный метод не приемлем и соединение должно быть закрыто. Клиент не просто перебирает все методы на стороне сервера после неудачного пароля.
Чем управляет порядок в Dante
Dante 1.4.x называет настройку уровня протокола socksmethod. Его документация говорит, что методы перечисляются в порядке предпочтения. Для политики, допускающей оба метода, это объявление предпочитает имя пользователя/пароль, когда клиент его предлагает:
socksmethod: username noneОбратный порядок предпочитает доступ без аутентификации, когда предлагаются оба метода:
socksmethod: none usernameЭто альтернативные объявления методов, а не полные конфигурации сервера. Интерфейсы прослушивания, разрешённые клиенты, правила назначения и любые ограничения аутентификации, специфичные для правила, по-прежнему важны.
Разрешение none имеет конкретное следствие: клиент, предлагающий только отсутствие аутентификации, может быть принят согласно применимым правилам. Размещение username первым не превращает список с none в требование всем предоставлять пароль.
Сначала выберите требование
Если каждый разрешённый клиент должен аутентифицироваться по имени пользователя/паролю, настройте это требование согласованно в глобальных и применимых правилах вместо добавления none как общего исправления совместимости. Если анонимный доступ намерен для ограниченной группы клиентов, сделайте группу и её разрешённые назначения явными.
В Dante также есть clientmethod, который относится к проверкам, выполняемым при подключении TCP-клиента, до согласования SOCKS. Это отдельный слой от методов, которыми обмениваются в приветствии SOCKS5. Фрагменты конфигурации, использующие более старое ключевое слово method, следует читать по руководству установленной версии Dante.
Когда два клиента ведут себя по-разному, сравните, что предлагает каждый, что выбирает Dante и успешно ли проходит суб-согласование выбранного метода. Затем проверьте ответ назначения SOCKS. Эта последовательность выявляет отсутствующий обратный вызов учётных данных, не приписывая каждую ошибку FTP и не меняя вслепую политику аутентификации сервера.
Наконец, аутентификация по имени пользователя/паролю в SOCKS5 не шифрует обмен паролем. Используйте надлежащим образом защищённый транспорт или сеть, когда эти учётные данные нуждаются в конфиденциальности.