yalnızca SSH ile: ssh SOCKS proxy üzerinden ters tünel web erişimi


15

Arada bir erişim çok kısıtlı bir sunucuya bağlanmak zorunda.
DMZ güvenlik duvarı tarafından yalnızca gelen SSH'ye izin verilir.
Giden HTTP bağlantıları engellendi.

SSH oturumum aracılığıyla web erişimini tünellemenin kolay bir yolunu arıyorum, bu yüzden yum / apt-get aracılığıyla güncellemeleri ve yazılımı yükleyebilirim. İdeal olarak, korunan alana ek yazılım / hizmet yüklemekten kaçınmak istiyorum.

Böyle bir durumda ne yaparsınız?

SSH'nin -D <port>SOCKS proxy seçeneği vardır. Ancak maalesef istemciden sunucuya tek yönlü ve ters seçenek yok.

Yanıtlar:


27

Sonunda bunu sshsadece ile başardı :

  1. istemci makinenizde yerel bir SOCKS proxy'si başlatın (kullanarak ssh -D)
  2. uzak sunucuya bağlanma ve ssh -Ryerel SOCKS proxy'nize ters bağlantı noktası yönlendirme ( ) ayarlama
  3. sunucu yazılımını iletilen proxy'yi kullanacak şekilde yapılandırma

1. Arka planda yerel çorap proxy'sini başlatın

SSH ile localhost'a bağlanın ve 54321 numaralı bağlantı noktasında SOCKS proxy'sini açın.

$ ssh -f -N -D 54321 localhost

-f SSH'yi arka planda çalıştırır.

Not: Komutu başlattığınız terminali kapatırsanız, proxy işlemi sonlandırılır. Ayrıca işiniz bittiğinde terminal penceresini kapatarak veya işlemi kendiniz öldürerek kendiniz de temizlemeyi unutmayın!

2. uzak sunucuya bağlanın ve ters port yönlendirme ayarlayın

6666 numaralı uzak bağlantı noktasını 54321 numaralı yerel bağlantı noktasına bağlayın. Bu, yerel çorap proxy'nizi 6666 numaralı bağlantı noktasındaki uzak site için kullanılabilir hale getirir.

$ ssh root@target -R6666:localhost:54321

3. sunucu yazılımını iletilen proxy'yi kullanacak şekilde yapılandırın

Yum, apt, curl, wget veya proxy'yi kullanmak için SOCKS'u destekleyen herhangi bir aracı yapılandırmanız yeterlidir 127.0.0.1:6666.

Voila! Mutlu tünel açma!


4. isteğe bağlı: sunucu yazılımını iletilen proxy'yi kullanacak şekilde yapılandırın

proxychainsHedef sunucuya kurulumun işleri çok daha kolay hale getirdiğini gördüm .

TCP ve DNS isteklerini rasgele komutlardan proxy'ye yönlendirmek telnetiçin bir LD_PRELOADhile kullanarak herhangi bir yazılımın SOCKS proxy'sini (çift ) kullanmasını sağlar .

/etc/proxychains.confİletilen çorap proxy'sini kullanma kurulumu :

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

Tünel keyfi araçları (TCP kullanan) proxychains:

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update

3

SSH'nin daha yeni sürümleri, çok basit seçeneğini kullanmaya izin veriyor ssh-R <[bind_address:]port>. Yalnızca ana bilgisayardaki bağlantı noktasını ve belki de bağlama adresini kullanmak, ancak istemci tarafı bağlantı noktasını belirtmemek ters bir SOCKS proxy'si oluşturur.

Bu, daha yeni SSH sürümlerinin kılavuz sayfalarında da belirtilmiştir:

[...] herhangi bir açık hedef belirtilmemişse, ssh bir SOCKS 4/5 proxy işlevi görür ve bağlantıları uzak SOCKS istemcisi tarafından istenen hedeflere iletir.

Bunu http://ifconfig.io gibi basit bir "bana IP adresimi ver" -API'ye bağlayarak kıvırmakla test edebilirsiniz .

$ curl ifconfig.io

vs

$ curl --socks5 localhost:<PORT> ifconfig.io


2
Bu özelliğin hangi sürüm numarasında tanıtıldığını belirtmek yararlı olacaktır.
kasperd

çok daha basit, teşekkürler!
Kaii

1
@kasperd: 2017-10-03'de yayınlanan OpenSSH 7.6 . Yeni Özellikler
MestreLion
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.