프록시 서버를 통한 NTLM

프록시 서버를 통한 NTLM
  • 우리는 squid를 HTTP 프록시로 사용합니다(필요한 경우 구성을 수정할 수 있습니다).
  • 인증을 위해 ntlm을 사용하는 웹사이트에 액세스하고 싶습니다.
  • 오징어를 통해 웹사이트에 접속하면 빈 페이지가 보입니다.
  • DSL 박스를 통해 웹사이트에 접속하면 인증 팝업이 뜹니다(원하는 결과)

나는 NTLM에 대해 잘 모른다... 미친 상상... 형편없는 프로토콜... grmbl grmbl :D :D :D

이 스레드에서는 수행할 수 없다고 말합니다.http://www.squid-cache.org/mail-archive/squid-users/200708/0578.html

솔루션이나 해결 방법을 제공할 수 있는 전문가가 있습니까?

다음은 원하는 웹 사이트에 대한 포트 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 

보너스: 우리는 체인으로 연결된 프록시(squid-2.6 rhel5) 서버 2개를 사용합니다.

편집: NTLM을 사용하여 오징어 인증을 수행하는 것은 우리가 달성하려는 것이 아닙니다.

편집 2: 우리가 접속하려는 웹사이트는 회사 외부, 네트워크 외부에 있습니다. 실제로는 공인 IP를 사용하는 공개 웹사이트입니다. 이 웹사이트를 프록시 구성에서 제외하면 우리 워크스테이션에 인터넷 경로도 없고 직접 연결도 없기 때문에 작동하지 않습니다.

답변1

NTLM은 연결 지향적이며 프록시를 사용할 때 사용자와 웹 서버 사이에 직접 연결이 없으므로 NTLM이 실패합니다. (귀하와 프록시 사이에는 연결이 있고 프록시와 웹사이트 사이에는 두 번째 연결이 있습니다.)

예를 들어 Kerberos 인증으로 업그레이드할 수 없는 경우 가장 좋은 방법은 클라이언트 구성(PAC 파일?)의 프록시 제외 목록에 웹 서버를 추가하는 것입니다. 일반적으로 회사 인트라넷(NTLM 인증이 필요한 곳)의 내부 서버는 이러한 이유로 프록시에서 제외되고 클라이언트는 직접 연결됩니다.

편집하다

분명히 Squid에는 NTLM 통과 인증을 위한 옵션이 있습니다.연결 고정. Squid 버전 2.6 이상 및 3.1 이상에서 사용할 수 있습니다.

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

답변2

제공된 정보에 따르면 어떻게든 "기본"을 벗어나지 않고는 인터넷을 통해 Squid를 통해 NTLM을 사용하는 해결 방법을 만들 수 없다고 생각합니다.

가능한 제안은 HAproxy(TCP 역방향 프록시 수행)를 사용하여 요청을 다른 쪽 사이트로 파이프하는 네트워크에 로컬 URL을 만드는 것입니다. 2개의 다른 홉(즉, Squid를 실행하는 2개의 머신)을 거쳐야 하는 경우 두 개의 인스턴스를 설정해야 합니다.

구성은 다음과 같습니다.

listen localsite 0.0.0.0:80
    mode tcp
    balance roundrobin
    option  tcplog

    server upstream1 1.2.3.4:80

별도의 애플리케이션을 실행해야 하지만 HAproxy는 매우 간편합니다(단일 패키지 설치, 10줄 구성 파일, 구성 거의 0, 유지 관리 0).

다른 옵션은 일종의 SSO를 활성화하도록 시스템 구성을 수정한 다음 로컬 NTLM 인증자를 사용하여 업스트림 시스템에 대한 세션을 시작하는 것입니다. 이는 시스템의 개발 및 변경을 의미할 수 있습니다.

나는 NTLM이 인터넷을 통해 사용되는 것을 본 적이 없다고 생각합니다. 일반적으로 LAN에서 사용됩니다. 상황을 확장하면 대안 전략을 제안할 수도 있습니다.

관련 정보