การเชื่อมต่อกับเซิร์ฟเวอร์ SSH จากไคลเอนต์ด้านหลังพร็อกซี NTLM


9

ฉันกำลังพยายามไปยังเซิร์ฟเวอร์ SSH ของฉันบนอินเทอร์เน็ตจากเครือข่ายองค์กร การเชื่อมต่อทั้งหมดไปยังอินเทอร์เน็ตภายนอกจะต้องมีการพร็อกซีผ่านเซิร์ฟเวอร์ที่ตรวจสอบการแฮช NTLM ของลูกค้าแต่ละรายในแต่ละคำขอ ฉันกำลังใช้Cntlmสำหรับสิ่งนั้นและทำงานได้เพียงครึ่งเดียว มันทำงานได้ดีสำหรับการเชื่อมต่อที่ใช้ HTTP แต่มันไม่ทำงานสำหรับการเชื่อมต่อสไตล์ SSH ฉันรู้เพราะนี้ผมสามารถเชื่อมต่อกับSublime ข้อความ 's ควบคุมปลั๊กอินแพคเกจที่จะได้รับการปรับปรุงและปลั๊กอิน อย่างไรก็ตามฉันไม่สามารถใช้กับ SSH ในเซิร์ฟเวอร์ของฉันโดยใช้การกำหนดค่า Tunnel ของ Cntlm

เมื่อดูบันทึกของ Cntlm ฉันสามารถดูสิ่งต่อไปนี้ ...

cntlm: PID 1460: 127.0.0.1 TUNNEL ts.io:443
Tunneling to ts.io:443 for client 6...
Starting authentication...
NTLM Request:
       Domain: domain.tld
     Hostname: D-HOSTNAME
        Flags: 0xA208B205

จับมือ NTLM (ประเภท 1)

Sending PROXY auth request...
Proxy-Connection               => keep-alive
Proxy-Authorization            => NTLM [REDACTED]
Content-Length                 => 0

กำลังอ่านคำตอบการรับรองความถูกต้องของ PROXY ...

HEAD: HTTP/1.1 407 Proxy Authentication Required ( Access is denied.  )
Via                            => 1.1 FOLLICLE
Proxy-Authenticate             => NTLM [REDACTED]
Connection                     => Keep-Alive
Proxy-Connection               => Keep-Alive
Pragma                         => no-cache
Cache-Control                  => no-cache
Content-Type                   => text/html
Content-Length                 => 0
NTLM Challenge:
    Challenge: 4AC9211DC2875FFF (len: 178)
        Flags: 0xA2898205
    NT domain: NTDOMAIN
       Server: PROXY
       Domain: domain.tld
         FQDN: proxy.domain.tld
          TLD: domain.tld
        TBofs: 64
        TBlen: 114
        ttype: 0
NTLMv2:
        Nonce: CB4E6617ABF19C24
    Timestamp: -1581153408
NTLM Response:
     Hostname: 'D-HOSTNAME'
       Domain: 'domain.tld'
     Username: 'username'
     Response: '[REDACTED]' (162)
     Response: '[REDACTED]' (24)
Sending real request:
Proxy-Connection               => keep-alive
Proxy-Authorization            => NTLM [REDACTED]

และในที่สุดฉันก็ได้รับสิ่งนี้ ...

Reading real response:
HEAD: HTTP/1.1 200 Connection established
Via                            => 1.1 PROXY
Connection                     => Keep-Alive
Proxy-Connection               => Keep-Alive
Ok CONNECT response. Tunneling...
tunnel: select cli: 6, srv: 7
Joining thread 537272664; rc: 0

เนื่องจากไฟร์วอลล์อนุญาตให้เชื่อมต่อกับอินเทอร์เน็ตภายนอกผ่านพร็อกซีเซิร์ฟเวอร์จากพอร์ต 80 และพอร์ต 443 ฉันจึงกำหนดค่าเซิร์ฟเวอร์ SSH ของฉันใหม่เพื่อรับการเชื่อมต่อจากพอร์ต 443

ปัญหาฉันเห็นคือว่าเมื่อฉันพยายามเชื่อมต่อ SSH รายงานการเชื่อมต่อตามหมดเวลาการเชื่อมต่อจาก Sublime ข้อความเมื่อใช้ปลั๊กอิน SFTP PuTTY Fatal Error: Server unexpectedly closed network connectionโดยใช้ผลการฉาบในทันที Google Chrome Extension Secure Shellให้ข้อผิดพลาดโดยละเอียดเพิ่มเติมแก่ฉันssh_exchange_identification: Connection closed by remote host NaCl plugin exited with status code 255.


การกำหนดค่า Cntlm

# The username of the client you wish to masquerade as.
#
Username    username

# The domain name of the network you are connected too.
# 
Domain      domain.tld

# The Password, LM, NTLM, or NTLMv2 Password.
# You should leave this blank and then start cntlm
# with the -M arg to get the hash information, then
# place that information here.
#
PassNTLMv2  [REDACTED]

# Specify the netbios hostname cntlm will send to the parent
# proxies. Normally the value is auto-guessed.
#
Workstation D-HOSTNAME

# List of parent proxies to use. More proxies can be defined
# one per line in format <proxy_ip>:<proxy_port>
#
Proxy       PROXY:8080

# Specify the port cntlm will listen on
# You can bind cntlm to specific interface by specifying
# the appropriate IP address also in format <local_ip>:<local_port>
# Cntlm listens on 127.0.0.1:3128 by default
#
Listen      3128

# Use -M first to detect the best NTLM settings for your proxy.
# Default is to use the only secure hash, NTLMv2, but it is not
# as available as the older stuff.
#
# This example is the most universal setup known to man, but it
# uses the weakest hash ever. I won't have it's usage on my
# conscience. :) Really, try -M first.
#
Auth        NTLMv2

# Tunnels mapping local port to a machine behind the proxy.
# The format is <local_port>:<remote_host>:<remote_port>
# 
Tunnel      1443:ts.io:443

นี่คือส่วนกำหนดค่าที่ฉันใช้สำหรับ Tunnel ภายใน Cntlm

การกำหนดค่า PuTTY

IP:PORT     localhost:1443

นี่คือสิ่งที่ฉันใช้สำหรับการเชื่อมต่อ PuTTY

ข้อความประเสริฐ

"http_proxy": "http://localhost:3128",

ความคิดใดที่ฉันสามารถทำได้เพื่อแก้ไขปัญหานี้ ฉันต้องการที่จะ SSH ลงในเซิร์ฟเวอร์ของฉันต้องมีวิธีการทำเช่นนี้โดยใช้เฉพาะคุณลักษณะ Tunneling ของ Cntlm ฉันไม่ทราบว่าฉันทำอะไรผิด

ฉันสามารถบอกคุณได้ว่าฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH ของฉันโดยใช้พอร์ต 443 จากนอกเครือข่ายองค์กร

คำตอบ:


1

ฉันได้รับการตอบกลับ 407 เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ SSH ผ่าน CNTLM กับ Putty พร็อกซี Forefront TMG ถูกคัดค้านการค้นหา DNS จาก PuTTY ไม่ใช่ทราฟฟิก SSH คุณต้องปิดการค้นหาชื่อ DNS ที่จุดสิ้นสุดของพร็อกซีในหน้าพร็อกซีของการกำหนดค่า PuTTY การตั้งค่าไม่ทำงานอัตโนมัติหรือใช่จะส่งผลให้การตอบสนอง 407


0

แทนที่จะอ่านบันทึกคุณสามารถเรียก cntlm ด้วยตัวเลือก -v ซึ่งเก็บไว้ในส่วนหน้าและปล่อยเอาต์พุตการวิเคราะห์บนเทอร์มินัลในทันทีที่มันถูกสร้างขึ้น

ทั้งการรับรองความถูกต้องและการตั้งค่าอุโมงค์ของคุณดูเหมือนจะทำงานอย่างถูกต้อง ดังนั้นฉันไม่มีคำอธิบายว่าทำไมการเชื่อมต่อของคุณไม่ทำงาน (ยกเว้นว่าบางที 'localhost' ไม่ได้รับการแก้ไขอย่างถูกต้องเป็น 127.0.0.1)

ฉันเพิ่งทดสอบการส่งต่อ SSH (สำหรับกรณีง่าย ๆ ที่ไม่จำเป็นต้องมีการพิสูจน์ตัวจริงของผู้ใช้) - นี่คือสิ่งที่ฉันได้รับให้คุณเปรียบเทียบหลังจากออกคำสั่ง

$ cntlm -L 443: remotehost: 22 -v

section: global, Username = ...
section: global, Domain = ...
section: global, PassNTLMv2 = ...
section: global, Proxy = '139.23.33.27:81'
section: global, NoProxy = 'localhost, 127.0.0.*, 10.*, 192.168.*'
Default config file opened successfully
Adding no-proxy for: 'localhost'
Adding no-proxy for: '127.0.0.*'
Adding no-proxy for: '10.*'
Adding no-proxy for: '192.168.*'
cntlm: Workstation name used: mchn256c
cntlm: Using following NTLM hashes: NTLMv2(1) NT(0) LM(0)
cntlm[27413]: Cntlm ready, staying in the foreground

(ในการออก 'ssh -p 443 localhost' บนเทอร์มินัลอื่น):

   NO: remotehost (localhost)
   NO: remotehost (127.0.0.*)
   NO: remotehost (10.*)
   NO: remotehost (192.168.*)
cntlm[27413]: Using proxy 139.23.33.27:81
cntlm[27413]: Resolving proxy 139.23.33.27...
Resolve 139.23.33.27:
  -> 139.23.33.27
cntlm[27413]: 127.0.0.1 TUNNEL remotehost:22
Tunneling to remotehost:22 for client 6...
Starting authentication...
NTLM Request:
           Domain: ...
         Hostname: ...
            Flags: 0xA208B205

Sending PROXY auth request...
Proxy-Connection               => keep-alive
Proxy-Authorization            => NTLM ...
Content-Length                 => 0

Reading PROXY auth response...
HEAD: HTTP/1.1 200 Connection established
Via                            => 1.1 MCHP941X
Connection                     => Keep-Alive
Proxy-Connection               => Keep-Alive
Ok CONNECT response. Tunneling...
tunnel: select cli: 6, srv: 7

ฉันจะให้ช็อตเด็ดนี้เมื่อฉันได้รับหลังพร็อกซีของพวกเขา ควรจะเป็นสองสามวัน (วันจันทร์)
Mark Tomlin

น่าเสียดายที่นี่ไม่มีผลกระทบ มันให้ข้อมูลแบบเดียวกับที่ฉันเคยมีมา แต่ในล็อกไฟล์ ... เช่นนี้ฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ภายนอกโดยใช้แฟล็กนี้
Mark Tomlin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.