Menghubungkan ke server SSH dari Klien di belakang Proxy NTLM

9

Saya mencoba untuk mendapatkan ke server SSH saya di internet dari jaringan perusahaan. Semua koneksi ke internet luar harus diproksi melalui server yang memeriksa hash NTLM dari setiap klien pada setiap permintaan. Saya menggunakan Cntlm untuk itu, dan itu hanya berfungsi. Ini berfungsi dengan baik untuk koneksi berbasis HTTP, tetapi tidak berfungsi untuk koneksi gaya SSH. Saya tahu karena ini, saya dapat terhubung ke Sublime Text 's Paket Kontrol Plugin untuk mendapatkan dan memperbarui plugin. Namun saya tidak bisa menggunakannya untuk SSH ke server saya menggunakan konfigurasi Tunnel Cntlm.

Melihat ke log Cntlm, saya bisa melihat yang berikut ...

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

Jabat Tangan NTLM (Tipe 1)

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

Membaca PROXY auth response ...

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]

Dan akhirnya saya mendapatkan ini ...

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

Karena firewall hanya memungkinkan koneksi ke internet luar melalui server proxy dari port 80 dan port 443, saya mengkonfigurasi ulang server SSH saya untuk menerima koneksi dari port 443.

Masalah yang saya lihat adalah bahwa sekali saya mencoba koneksi SSH laporan koneksi sebagai koneksi timeout dari Sublime Text saat menggunakan plugin SFTP . Menggunakan Putty menghasilkan dalam sekejap PuTTY Fatal Error: Server unexpectedly closed network connection. Google Chrome Extension Secure Shell memberi saya kesalahan yang lebih rinci tentangssh_exchange_identification: Connection closed by remote host NaCl plugin exited with status code 255.


Konfigurasi 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

Ini adalah bagian konfigurasi yang saya gunakan untuk Tunnel di dalam Cntlm.

Konfigurasi Putty

IP:PORT     localhost:1443

Ini yang saya gunakan untuk koneksi Putty.

Teks Sublim

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

Adakah yang bisa saya lakukan untuk memperbaikinya? Saya ingin SSH ke server saya, harus ada cara untuk melakukan ini hanya menggunakan fitur Tunneling Cntlm, saya hanya tidak tahu apa yang saya lakukan salah.

Saya dapat memberitahu Anda bahwa saya dapat terhubung ke server SSH saya menggunakan port 443 dari luar jaringan perusahaan.

Mark Tomlin
sumber

Jawaban:

1

Saya mendapatkan respons 407 ketika mencoba terhubung ke server SSH melalui CNTLM dengan Putty. Proksi Forefront TMG keberatan dengan pencarian DNS dari Putty bukan lalu lintas SSH itu sendiri. Anda perlu mematikan Do lookup DNS name di akhir proxy di halaman Proxy PuTTY Configuration. The Tidak ada pengaturan bekerja, Auto atau Ya akan menghasilkan 407 respons.

rubinho
sumber
0

Alih-alih membaca log, Anda dapat memanggil cntlm dengan opsi -v, yang menyimpannya di latar depan dan memancarkan hasil diagnosis pada terminal pada saat itu dihasilkan.

Otentikasi dan pengaturan terowongan Anda tampaknya berfungsi dengan baik. Jadi saya tidak punya penjelasan mengapa koneksi Anda tidak berfungsi (kecuali bahwa mungkin 'localhost' tidak diselesaikan dengan benar ke 127.0.0.1).

Saya baru saja menguji penerusan SSH (untuk kasus sederhana yang sebenarnya tidak diperlukan otentikasi pengguna) - inilah yang saya dapatkan untuk Anda bandingkan, setelah mengeluarkan perintah

$ 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

(pada penerbitan 'ssh -p 443 localhost' di terminal yang berbeda):

   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
pengguna640811
sumber
Saya akan mencoba ini, setelah saya kembali di belakang proxy mereka. Seharusnya beberapa hari lagi (Senin).
Mark Tomlin
Sayangnya ini tidak berpengaruh. Itu memberi saya informasi yang sama yang saya miliki sebelumnya, tetapi dalam file log ... Karena itu, saya tidak dapat terhubung ke server luar menggunakan bendera ini.
Mark Tomlin