Bağlantı noktalarını SSH üzerinden yönlendirin

Bazen ihtiyacımız var verileri bir soket aracılığıyla iletmek Telnet bağlantısı, FTP dosyası indirme, SQL sorgusu veya başka herhangi bir iletim türü gibi farklı makineler arasında.

Bu veriler ağda işlenmemiş olarak dolaşır. Ben güvensizBu, başlangıç ​​ile hedef arasındaki yolda bulunan herhangi bir düğüm tarafından yakalanabilecekleri anlamına gelir, yani, Robados.

Bu verilerin yakalanmasını engelleyemeyiz, ancak önleyebileceğimiz şey, üçüncü şahıslar tarafından yorumlanması ve anlaşılması, iletişimi şifrelemesidir.

SSH yapmamızı sağlayan araçtır güvenli bağlantılar makineler arasında. En yaygın kullanımı, bir komut yorumlayıcısına uzaktan bağlanmaktır.

Ancak, oluşturmak gibi başka olanaklar da sunar. şifreli tüneller farklı makineler arasında.
Diyelim ki ana bilgisayar1'den ana bilgisayar2'ye telnet yapmak istiyoruz:

host1$ telnet host2

Bu iletişim tamamen açıktır ve kesişmiş. Bunu korumak için, 5000. ana bilgisayar üzerinde rastgele seçilen bir bağlantı noktasını (örneğin 1) ana bilgisayar23'deki bağlantı noktası 2'e (telnet) yönlendireceğiz.

Bu şekilde, ssh'nin ana bilgisayar5000'nin 1 numaralı bağlantı noktasından açılan tünelde şifrelenmiş olarak seyahat etmek için ana bilgisayar22'in 2 numaralı bağlantı noktasına gönderilen tüm verileri alacağız ve ardından ana bilgisayar23'nin 2 numaralı bağlantı noktasına yeniden yönlendirilerek nihai hedefine ulaşacağız.

Bunu yapmak için, host2'nin kullanıcı adını ve şifresini bilmemiz gerekir.

Tüneli açmak için şunu yazıyoruz:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

Peki:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

Her iki seçenek de eşdeğerdir. Telnet bağlantısını kurmak için artık host2'ye değil, host1'de seçilen porta atıfta bulunuyoruz:

host1$ telnet localhost 5000

Bununla, telnet veya başka türlü herhangi bir iletişimi güvenli hale getiriyoruz. Biraz daha araştırdığımızda göreceğiz ki gücü sayesinde SSH Bu yönlendirmeler üçüncü makinelere de yapılabilir, bu da bize tek bir giriş noktasıyla tüm LAN'dan farklı bir LAN'a güvenli bir şekilde erişebilmemizi sağlar.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   nano dijo

    Teori son derece ilginç görünüyor, ancak pratik bir durum görseydik daha da ilginç olurdu.

    Ama gerçek şu ki, kısa olsam da makaleyi sevdim.

    1.    igual dijo

      belki ilham aldığın wiki'ye bakarken https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      ve aynı, ancak autossh bölümü https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Aslında, ssh ile gönderebileceğiniz herhangi bir şey, ister akış, ister ana bilgisayara bağlantılar olsun. vb. x nedenden dolayı onları şifrelemek istiyorsun.
      ve safecrt kuralları

  2.   Tesla dijo

    Bazen SSH'yi çok temel düzeyde kullanıyorum. Varsayılan bağlantı noktası 22'dir, değil mi?

    Öyleyse, doğru anlarsam, bilgisayarım ana bilgisayar 1 ve bağlanmak istediğim ana bilgisayar2 ise, bu tünel 5000 numaralı bağlantı noktası ile 23 numaralı bağlantı noktası arasında bir bağlantı oluşturur ve ardından 22 numaralı bağlantı noktasında sonlanır mı?

    Neden bağlantı noktalarını değiştirme nedenleri var? 22 numaralı bağlantı noktasıyla bir tünel oluşturabilir misiniz?

    Çok ilginç makale. Nano gibi, daha fazlasını istemeye başladım!

    1.    Getafix dijo

      SSH, aslında varsayılan olarak 22 numaralı bağlantı noktasını kullanır (değiştirilebilir olsa da). Bu bağlantı noktası, iki ana bilgisayar arasındaki gerçek iletişimin kullanacağı bağlantı noktasıdır. Açık olduğundan ve hiçbir güvenlik duvarı tarafından kapatılmadığından emin olmanız gereken şey budur. Ancak kullanıcı için tamamen şeffaftır. Unutabilirsin. Örnekte, yeniden yönlendirme 5000 ve 23 numaralı bağlantı noktaları arasındadır. Endişelenmeniz gereken tek şey bu ikisi. Kullanıcı, ana bilgisayarının 5000 numaralı bağlantı noktasına gönderdiği her şeyin hedef ana bilgisayarın 23'ünde göründüğünü görecektir.
      Açıkçası, her kullanıcı uygun gördüğü portları yeniden yönlendirebilir.

      Yorumlarınız için teşekkürler. Bu benim ilk yazım ve fikirleriniz bir sonrakini daha iyi hale getirmeye yardımcı olacak.

  3.   eliotime3000 dijo

    Bu VPS ile de yapılabilir mi?

  4.   dhunter dijo

    Tamam bu benim durumum, PC1'in bir sunucuya erişimi var, ancak PC2'nin her ikisi de ssh ile bağlanmıyor, PC2'de erişim sahibi olmak istiyorum, ancak PC1'in hangi portunu yeniden yönlendirmeliyim? eğer aslında istediğim PC2'den sunucu portuna ulaşmak ve paketlerin kaynak ip olarak PC1'e sahip olması. anlıyor muyum

    1.    Getafix dijo

      Anlatıyorsun kendini. Bu durumda, bir PC1 bağlantı noktasını sunucunun 2 numaralı bağlantı noktasına yeniden yönlendirmek için PC22'e ihtiyacınız vardır:

      PC2 $ ssh -L 5000: Sunucu: 22 kullanıcı PC1 @ PC1

      ve bu bağlantıyı başka bir terminalden açık tutarak:

      PC2 $ ssh userServer @ localhost -p 5000

      ve zaten içeridesin.

      1.    dhunter dijo

        Nihayet işlevsel bir çözüm !! Teşekkürler Getafix, bana bir olasılıklar dünyası verdin !!

        1.    Getafix dijo

          Memnun oldum!

  5.   ela dijo

    Excelente artículo. Bienvenido a DesdeLinux 😀

    Ve eğer 22 engellenirse ne yapmalıyız? LOL ..

    1.    Getafix dijo

      Teşekkürler elav.
      22 numaralı bağlantı noktasını engellediyseniz, mmmm, XD güvenlik duvarını kırmak için bir alternatif aramamız gerekecek

    2.    eliotime3000 dijo

      Ve hepsinden kötüsü (varsayımsal): VPS sağlayıcısı tarafından engellenmiş olmasıdır.

  6.   IGA dijo

    Birkaç saat önce bununla ilgili sorularla bir sınav yaptım 😛

  7.   Mario dijo

    Ben şunu söylemem:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    diğer komut satırına eşdeğerdir ... -L olanı.
    -R, yeni bağlantılara açılan bağlantı noktasının uzak tarafta, yani ssh sunucunuzun tarafında olduğunu gösterir; while -L, yeni bağlantıları almak için istemci tarafında Yerel tarafta bir bağlantı noktası açar.

    Satırın çevirisi:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Bunun gibi bir şey olabilir: ana bilgisayar1'de olmak, kullanıcı kullanıcı ana bilgisayarım ile ana bilgisayar22'nin ssh sunucusuna (bağlantı noktası 2) bağlanın ve ana bilgisayar2'nin 5000 numaralı uzak bağlantı noktasında üretilen bağlantıları ana bilgisayar2'deki bağlantı noktası 23'e iletin (yerel ana bilgisayarım)

    Değilse beni düzeltin! 😉

    -

    Öte yandan ... bir sunucu bağlantı noktası 22'ye bağlantı girişini engellediyse, yani ssh sunucusuna uzaktan bağlanamayız; ne yapılabilir; sunucudan (uzak ana bilgisayar2 sisteminin güvenlik duvarının arkasındaki bir arkadaş sysadmin) bir komut satırı yürütülür:

    host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1

    -f arka plana gider
    -N uzaktan kumandada herhangi bir komut yürütmez
    nohup, oturum kapatıldığında komutun yürütülmesinin kesintiye uğramasını engeller

    ana bilgisayar1 $ ssh kullanıcıhost2 @ localhost -p 6000

    Bu şekilde, ana bilgisayar1'den, bağlantı noktası 1 üzerindeki localhost'a (aynı ana bilgisayar6000), bağlantıyı kullanıcı ana bilgisayar22 ile oturum açacağımız uzak sistem ana bilgisayar2'nin 2 numaralı bağlantı noktasına iletecek bir bağlantı oluştururuz.

    Bu (denemedim ama işe yarıyor gibi görünüyor) firewal tarafından engellenen bir ssh sunucusunda içeriden biraz yardım alarak oturum açmaya izin verirdi! 😀

    İkincisi, The Geek Stuff dergisinde yapılan bir açıklamadan okudum
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Yayınınızı gerçekten beğendim; Onları sık sık okurum!
    Selamlar.

    1.    Getafix dijo

      Haklısın. Makalede bir hata var. Yönlendirmeler eşdeğer değildir. Host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 komutu, ters yeniden yönlendirme gerçekleştirir, yani, 5000 numaralı uzak bağlantı noktasını, -L ile komutun yaptığının tersine, 23 yereline yeniden yönlendirir.
      Düzeltme için teşekkürler.