Назад | Перейти на главную страницу

NTLM через прокси-сервер

Я мало что знаю о NTLM ... ненормальное воображение ... дерьмовый протолол ... grmbl grmbl: D: D: D

В этой ветке говорится, что это невозможно: http://www.squid-cache.org/mail-archive/squid-users/200708/0578.html

Есть ли какой-нибудь гуру, который может предложить решение или обходной путь?

Вот вывод telnet на порт 80 для желаемого веб-сайта:

Trying 111.222.333.444...
Connected to www.extranet-example.com (111.222.333.444).
Escape character is '^]'.
GET /index.htm HTTP/1.1
host: www.extranet-example.com

HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/7.5
SPRequestGuid: 2764478a-b14a-4541-9110-27ebf4281e84
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Mon, 25 Nov 2013 14:25:26 GMT
Content-Length:
0 

Бонус: мы используем 2 связанных прокси (squid-2.6 rhel5) сервера

Изменить: использование NTLM для аутентификации squid - это не то, чего мы пытаемся достичь.

Изменить 2: веб-сайт, на который мы пытаемся перейти, находится за пределами нашей компании, за пределами нашей сети. Фактически это публичный веб-сайт с публичным IP. Если я исключу этот веб-сайт из конфигурации прокси-сервера, он не будет работать, потому что у нашей рабочей станции нет ни маршрута к Интернету, ни прямого подключения.

NTLM ориентирован на соединение, и поскольку при использовании прокси-сервера нет прямого соединения между вами и веб-сервером, NTLM не работает. (Между вами и прокси-сервером есть соединение, а между прокси-сервером и веб-сайтом есть второе соединение.)

Если вы не можете выполнить обновление, например, до Kerberos auth, лучше всего добавить веб-сервер в список исключений прокси в конфигурации вашего клиента (файл PAC?). Обычно внутренние серверы в корпоративной интрасети (где и следовало ожидать NTLM auth) по этой причине исключаются из прокси, и клиенты подключаются напрямую.

РЕДАКТИРОВАТЬ

По-видимому, в Squid есть опция для сквозной аутентификации NTLM: Закрепление соединения. Доступно в Squid версии 2.6 и выше и 3.1 и выше.

http_port ... connection-auth[=on|off]
https_port ... connection-auth[=on|off]

Основываясь на предоставленной информации, я не думаю, что вы можете создать обходной путь для использования NTLM поверх Squid через Интернет, не выходя каким-то образом "нестандартно".

Возможным предложением было бы использовать HAproxy (который выполняет обратное проксирование TCP) для создания локального URL-адреса в вашей сети, который передает запросы на сайт на другом конце. Если вам нужно пройти 2 разных перехода (т.е. 2 машины, на которых работает Squid), вам придется настроить два экземпляра.

Конфигурация будет примерно такой:

listen localsite 0.0.0.0:80
    mode tcp
    balance roundrobin
    option  tcplog

    server upstream1 1.2.3.4:80

Хотя вам нужно запускать отдельное приложение, HAproxy очень безболезненен (установите один пакет, 10-строчный файл конфигурации, почти 0 конфигураций, 0 обслуживания).

Другой вариант - изменить конфигурацию системы для включения какого-либо единого входа, а затем использовать локальный аутентификатор NTLM для инициирования сеансов с вышестоящей системой. Это может означать развитие и изменения в системе.

Я не думаю, что когда-либо видел NTLM, используемый в Интернете, он обычно используется в локальных сетях. Возможно, если вы расширите ситуацию, мы сможем предложить альтернативную стратегию.