Kết nối với máy chủ SSH từ Máy khách phía sau Proxy NTLM


9

Tôi đang cố gắng truy cập máy chủ SSH của mình trên internet từ mạng công ty. Tất cả các kết nối với internet bên ngoài phải được ủy quyền thông qua một máy chủ kiểm tra hàm băm NTLM của mỗi khách hàng trên mỗi yêu cầu. Tôi đang sử dụng Cntlm cho điều đó và nó chỉ hoạt động được một nửa. Nó hoạt động tốt đối với các kết nối dựa trên HTTP, nhưng nó không hoạt động đối với các kết nối kiểu SSH. Tôi biết điều này bởi vì, tôi có thể kết nối với Plugin Kiểm soát gói của Sublime Text để nhận và cập nhật các plugin. Tuy nhiên, tôi không thể sử dụng nó để SSH vào máy chủ của mình bằng cấu hình Đường hầm của Cntlm.

Nhìn vào nhật ký của Cntlm, tôi có thể thấy ...

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

Bắt tay NTLM (Loại 1)

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

Đọc phản hồi xác thực 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]

Và cuối cùng tôi cũng nhận được ...

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

Vì tường lửa chỉ cho phép kết nối với internet bên ngoài thông qua máy chủ proxy từ cổng 80 và cổng 443, tôi đã cấu hình lại máy chủ SSH của mình để chấp nhận kết nối từ cổng 443.

Vấn đề tôi gặp phải là một khi tôi thử kết nối SSH, báo cáo kết nối là hết thời gian kết nối từ Sublime Text khi sử dụng plugin SFTP . Sử dụng kết quả PuTTY ngay lập tức PuTTY Fatal Error: Server unexpectedly closed network connection. Google Chrome Tiện ích mở rộng Secure Shell cung cấp cho tôi lỗi chi tiết hơn vềssh_exchange_identification: Connection closed by remote host NaCl plugin exited with status code 255.


Cấu hình 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

Đây là phần cấu hình mà tôi đang sử dụng cho Đường hầm trong Cntlm.

Cấu hình PuTTY

IP:PORT     localhost:1443

Đây là những gì tôi đang sử dụng cho kết nối PuTTY.

Văn bản cao siêu

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

Bất cứ ý tưởng nào là những gì tôi có thể làm để khắc phục điều này? Tôi muốn SSH vào máy chủ của mình, phải có cách để làm điều này bằng cách chỉ sử dụng tính năng Đường hầm của Cntlm, tôi chỉ không biết mình đang làm gì sai.

Tôi có thể nói với bạn rằng tôi có thể kết nối với máy chủ SSH của mình bằng cổng 443 từ bên ngoài mạng công ty.

Câu trả lời:


1

Tôi đã nhận được phản hồi 407 khi cố gắng kết nối với máy chủ SSH thông qua CNTLM với Putty. Proxy Forefront TMG đã phản đối việc tra cứu DNS từ PuTTY chứ không phải chính lưu lượng SSH. Bạn cần tắt Do tìm kiếm tên DNS ở cuối proxy trong trang Proxy của Cấu hình PuTTY. Các Không thiết lập hoạt động, Auto hoặc Yes sẽ dẫn đến việc đáp ứng 407.


0

Thay vì đọc nhật ký, bạn có thể gọi cntlm với tùy chọn -v, nó giữ nó ở phía trước và phát ra đầu ra chẩn đoán trên thiết bị đầu cuối ngay khi nó được tạo.

Cả xác thực và thiết lập đường hầm của bạn dường như hoạt động chính xác. Vì vậy, tôi cũng không có lời giải thích tại sao kết nối của bạn không hoạt động (ngoại trừ việc có thể 'localhost' không được giải quyết chính xác thành 127.0.0.1).

Tôi vừa thử nghiệm chuyển tiếp SSH (đối với trường hợp đơn giản là không cần xác thực người dùng) - đây là những gì tôi nhận được để bạn so sánh, sau khi ban hành lệnh

$ 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

(khi phát hành 'ssh -p 443 localhost' trên một thiết bị đầu cuối khác):

   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

Tôi sẽ cung cấp cho nó một shot, một khi tôi trở lại đằng sau proxy của họ. Nên vài ngày tho (thứ hai).
Đánh dấu Tomlin

Thật không may, điều này không có hiệu lực. Nó cung cấp cho tôi cùng thông tin tôi có trước đây, nhưng trong các tệp nhật ký ... Như vậy, tôi không thể kết nối với máy chủ bên ngoài bằng cờ này.
Đánh dấu Tomlin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.