Ana Sayfa » ipucu » SSH Tunneling ile Güvenli Surf ve SSH Port Forwarding

SSH Tunneling ile Güvenli Surf ve SSH Port Forwarding


BerbatKötüİdare EderGüzelHarika (Toplam 6 oy. 5 puan üzerinden ortalama 4,83 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...
ssh-tunnel-small Okullar, kafeler, oteller gibi public erişimi sağlanan mekanlardan yapacağınız bağlantısının ne derece güvenli olduğunu bilemeyeceğiniz için, bu bağlantı üzerinden gönderip aldığınız veriyi herhangi bir “dinleme” olayına karşı şifrelemek isteyebilirsiniz.

Ve bu isteğinizde haklı da olabilirsiniz, zira aynı ağ üzerinde bulunan herhangi biri tüm veri trafiğini dinliyor olabilir ve gönderdiğiniz tüm plaintext datayı okuyup şifreleriniz vs. gibi özel bilgileriniz ele geçirebilir. Böyle durumlarda veri trafiğinizi encrypt etmek için ya vpn bağlantısı sağlamalısınız ya da tunneling yapmalısınız. Her iki şekilde de veri şifreleneceği için olası bir sniffing faliyetinden etkilenmezsiniz.

İşte bu nedenle bu yazıda, kullanarak tünel oluşturma ve trafiği bu tünel içerisinden şifreli olarak iletmenin nasıl yapıldığına değineceğim.

Tunneling yapmak için öncelikle bir hesabınızın bulunduğu ssh server gerekiyor ve tabii bilgisayarınızda da bir SSH istemcisinin bulunması gerekiyor. Windows kullanıyorsanız putty isimli ssh client yazılımını kullanabilirsiniz. kullanıyorsanız openssh client'ı zaten yüklüdür.

Bazı  SSH Tunneling uygulamaları şu şekilde.

SSH Tunnel üzerinden Mail (, pop3, imap) Trafiği Geçirmek

Bir posta sunucusuna ssh tunnel içerisinden bağlantının nasıl yapıldığını gösteren aşağıdaki güzel şema konuyu daha net anlamak için yardımcı olacaktır.

ssh-tunnel

Görüldüğü üzere SSH sunucuya kadar tunnel içerisinden gidiliyor, ssh sunucu bizim adımıza mail sunucusu ile irtibata geçiyor. Sonuç olarak böyle bir yapıda, bulunduğunuz ağ dinleniyor olsa bile veri ssh tünel içerisinden gidip geleceği için paketlerin içeriği anlaşılmayacaktır.

Yukarıdaki şemadan gidersek böyle bir bağlantıyı şu şekilde sağlayabilirsiniz:

Bir kafenin kablosuz ağından yararlanarak internete bağlandınız ve (atıyorum) 203.112.99.190 ip adresine sahip ve  üzerinden erişiebilen bir SSH serverınız var. Mail sunucunuzun ip adresi da 203.112.99.191 olsun.  Bu durumda SSH istemcinize aşağıdaki gibi bir komut vermeniz gerekir.

# ssh -fN [email protected] -L 2525:203.112.99.191:25

Bu komut ile 203.112.99.190 ip'li sunucuya bir ssh bağlantısı sağladık. Kullanılan switchlerin anlamları şu şekilde.

f – SSH bağlantısının arka planda kurulmasını belirtir.
N – SSH sunucusunda herhangi bir komut çalıştırılmayacağını söyler.
L – Belirtilen lokal portun, uzaktaki hedef sunucunun belirtilen portuna yönlendirilmesini belirtir.

Böylece, posta istemci programınızda giden posta sunucusunu “localhost:2525” olarak belirtirseniz, gönderdiğiniz mailler ssh tünel içerisinden encrypted olarak iletilecektir.

Yani, lokal bilgisayarın 2525. portuna gelen tüm istekler SSH sunucusuna şifrelenmiş olarak  iletilir, SSH sunucu da gelen bu paketleri çözecek sunucusunun 25. portuna gönderir. SMTP sunucusundan gelen paketler ise aynı yolla lokal bilgisayara iletilir. Sonuç olarak lokal bilgisayar ile ssh sunucusu arasındaki iletişim şifrelenmiş olur. (SSH sunucusu ile SMTP sunucusu arasındaki trafik şifreli değildir.)

Not: Bu örnekte, ssh sunucusu ile smtp sunucusu farklı idi, ancak smtp sunucunuza ssh erişiminiz varsa ssh tüneli direk olarak mail sunucunuza açabilirsiniz.

Aynı anda birden fazla ssh tünel açabileceğiniz için, yukaridaki örnekten gidersek, pop3 trafiğini şifrelemek için de aynı mantıkla şuna benzer bir komut kullanabilirsiniz:

# ssh -fN [email protected] -L 11010:203.112.99.191:110

Böylece localhost'un 11010. portuna gelen tüm istekler, pop3 sunucusunun 110. portuna yönlendirilecektir.

SSH Tunneling'in bir diğer kullanımı ise tüm HTTP trafiğinin tünel içerisinden geçirilmesidir.

SSH Tunneling ile SOCKS Proxy uygulaması

Bu tip bir tünelleme ile SSH sunucusu proxy server olarak kullanılabilir ve giden gelen tüm web trafiği şifrelenmiş olur. Bunun için aşağıdaki gibi bir komut kullanabilirsiniz.

# ssh -D 8080 -fN kullaniciadi@ssh-sunucusu

Bu komutu verdikten sonra, web browserınızın proxy ayarlarını localhost 8080 olarak set ederseniz, paketler SSH tünelden şifrelenmiş olarak gönderilecektir. Yani SSH sunucusu proxy server olarak görev yapacaktır.

Buradaki f ve N anahtarlarının manasını yukarıda söylemiştim ancak farklı olarak -D parametresi de kullanılmaktadır ki bu da uygulama bazında dinamik yönlendirmesi anlamına gelir.   -D 8080 dediğimiz zaman  lokal bilgisayarın 8080. portunu dinleyen bir socket oluşturulur, ve bu porta gelen tüm paketler tünel içerisinden uzaktaki ssh sunucusuna iletilir,  SSH sunucusu da  uygulama protokolüne bakar ve nereye bağlanacağını anlar. Böylece görüntülenmek istenen web sitesi, ssh sunucusu tarafından çağırılır ve sayfa ssh tünel içerisinden şifreli olarak lokal bilgisayar iletilir.

SSH tunelling kurarken kullanılabilecek bir diğer parametre ise -g anahtarıdır. Normalde bu anahtarı kullanmazsanız, ssh tünel'den sadece lokal bilgisayar trafik geçirebilir. g anahtarı ise tünelin ağdaki diğer bilgisayarlar tarafından da kullanılabilmesine olanak sağlar. Socks proxy örneğinden gidersek, ağdaki diğer bilgisayarların web browserlarında proxy sunucusu olarak tünel bağlantısı sağladığınız lokal bilgisayarın ip'sini belirtir 8080'e set ederseniz ağdaki bu bilgisayarlar da lokal pc üzerinden ssh tüneli kullanabilirler.

Sonuç olarak güvenlik ile ilgili çekincelerinizin olduğu ortamlarda, vpn başlantısı kurma şansınız yoksa ssh tunneling ile trafiğinizi encrypt edebilirsiniz. Ayrıca, firewall'dan engellenmiş  portlarda hizmet veren servislere, ssh sunucusuna kuracağınız tünel içerisinden de erişebilirsiniz. Tabii ssh sunucusunun ilgili portlara erişimi varsa…

Visited 4.141 times, 1 visit(s) today
Kategoriler: ipucu,Security |

Bu yazılar da ilginizi çekebilir:


- mailsend – Komut Satırından Posta Göndermek
- Linux’larda SSH Key Saldırısı
- SSH Login Yavaşlık Problemi | Nedenler ve Çözümler
- mod_rewrite – .htaccess ile Bakım Sayfasına Yönlendirme
- PSSH ile Birden Fazla Sunucuyu Tek Merkezden Yönetmek

Yorumlar


  1. Dogu | (Kasım 5th, 2009 9:14 am)

    ssh -D 8080 -fN kullaniciadi@ssh-sunucusu

    bu yazılım ile herhangi biri de (sıradan-sokaktan) bizim uzerimizden internet cıkabilir degil mi, sakıncalı degil mi.. burada user şifre girilme hali yok mu acaba, ama o da olmaz browser de socks5 için user-şifre yeri yok tam oturtamadım kafamda. belli IPlere o izin verilse bu defa aynı yerden de herkes kullanır..

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    Komutun bu hali ile sadece lokal bilgisayar ssh tunel’i kullanabilir. Dolayisi ile herhangi bir güvenlik sorunu yok, Ancak eger extradan -g parametresini de verirseniz sizinle ayni agda olan kisiler de ssh tuneli kullanabileceklerdir.

    Bu durumda lokal bilgisayarinizda bir güvenlik duvari mevcutsa kontrollü erisim saglamaniz da mumkun.

    [Cevapla]

    Ali Korkmaz tarafından yanıtlandı.

    Dogu Bey,

    Merak etmeyin, siz ssh tunnel kurarken sizden root passwordunu istiyor, ssh sunucunun root passwordunuzu verdiginiz takdirde tunnel olusuyor, aksi halde her onune gelen bizim ssh sunucumuz icin o komutlari verip tunel kurabilirdi. Bu arada socks destegi olmayan uygulamalari relay edebilmek adina freecap programini oneribilirim.

    [Cevapla]

    ilkay tarafından yanıtlandı.

    bu baglantıyı nasıl yapabilirim ayrıntılı olarak yazabilirmisiniz şirket pc mde bazı siteler kulanılıyor digerlerine giremiyor kullanamıyorum yardımcı olurmusunuz teşekkür ederim!

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    Baglantinin nasil yapildiginin tum ayrintisi yazida mevcut. Bir ssh sunucusuna erisiminiz varsa yukarida anlatildigi sekilde yapabilirsiniz.

    [Cevapla]

    ilkay tarafından yanıtlandı.

    putty adlı özel bir programım mevcut fakat çözemedim u96 ultra sörf kullanıyorum oda şirket programlarımı kasıyor ve çok ağır çalışıyor o yüzden bu yöntemi uygulamak istiyorum!

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Asagidaki adreste putty ile nasil yapabileceginizi resimlerle anlatan bir makale mevcut.

    http://blogs.techrepublic.com.com/security/?p=421

    Bu isinize yarayacaktir.

    [Cevapla]

  2. dogan | (Nisan 13th, 2012 2:33 pm)

    Arkadaşlar yardımınıza ıhtıyacım var. Freebsd kullanmaya calısıyorum freebsd mı kendı ıcerısınde ssh bagladım fakat ssh dan ona baglanırken sanal makıne de sanal sekılde yuruttugum ve sanal verdıgım adresse yanlıs dıyoru 1 haftadır ssh la baglanmaya calısıyorum omuyor ve kafayı yemek uzereyım local olarak kendı pc de calısıyorum ogrenmek amaclı ve vmware de kuruyorum frrebsd yardım edersenız sevınırım

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Probleminizi tam olarak anlayamadim; biraz daha detay verebilirseniz yardimci olmaya calisirim.

    [Cevapla]

    dogan tarafından yanıtlandı.

    İlgilendiğiniz için teşekkürler.Vmware workstation 8 e freebsd kurdum. kurulumdan sora , freebsd ayaralarını ee/etc/ssh/sshd_confıg ıle gırip ayarladırm ssh restart ettım baglı gorunuyor fakat ssh dan gırmek ıstedıgımde ” the host’dogan.com.tr’ıs unreachable. dıye bır hatta verıyo dogan.com.tr sanal makıne frebsd yukler ıken kafamdan verdıgım vır domain adressı.hatta kaynagı yada neden oldugunu cözemedım.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Gorunuse gore, sorun sshd servisi ile alakali degil, sizin dogan.com.tr alanadini cozumleyemiyor olmaniz. Eger o kaydi bir dns sunucuya girmediyseniz cozulememsi normaldir. Alanadi kullanmak yerine IP yazarak baglanmayi deneyebilirsiniz.

    [Cevapla]

    dogan tarafından yanıtlandı.

    Aynı hatta ıle yıne karsılasıyorum tırnak ıcın de ip yazıyor,bu sorun kurulumda mı yoksa kurulumdan sonra kı etebdan mı kaynaklanıyor yada dns sunucuma gırmedınız derken hangı anlamda soyledınız anlayamadım

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    SSH istemcisi ile baglanmaya calisirken, host ismine dogan.com.tr yazmak yerine freebsd sanal sunucunuzun IP adresini yazin demek istedim.

    [Cevapla]

    dogan tarafından yanıtlandı.

    mağlesef aynı hattayı alıyorum,freebsd kurulumunda ben kendı gercek ıp mı ag gecişimi yazdım cozumleyemıyorum artık cıldırma noktasına geldım

    [Cevapla]

    dogan tarafından yanıtlandı.

    cok yardımcı oldunuz ,cok teşekkürler su olayı bı cozum ılk sana yemek ısmarlıycam bak gor sozum olsun:)ustat

    [Cevapla]

    dogan tarafından yanıtlandı.

    halletım dhcp bana ayrı ıp almıs bense statıkden baglanmaya calısıyorum ve bu hatta 1 haftamı aldı ılgılenen arkadaşlara bır not ( atınız adımlara dıkkat ecın):) cagrı ersen yemek sozum gecerlı ne zaman ıstersen

    [Cevapla]

  3. Mehmet | (Mayıs 28th, 2012 9:01 pm)

    Merhabalar. Ben tüm trafiği encrypt etmek istiyorum ama herhangi bir sunucuya bağlanmadan yapmak istiyorum. Yani örneğin VPN bağlantısında Almanya’daki sunucuya bağlanıyoruz. Benim istediğim normal bir yazılım ( internete çıkış yapmadan ) kullanarak trafiği encrypt etmek. Bunu nasıl yapabilirim ?

    Teşekkürler..

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    Encrypt olarak konuşamayacağınız tüm servisler (örn: smtp, http) için secure connection kuracağınız bir proxy kullanmanız gerekiyor malesef. Özü itibari ile plain-text konuşan bu gibi servisler için durum bu. https tls vs icin zaten sorun yok ki artik bir cok servis secure connection desteği veriyor.

    [Cevapla]

  4. TY | (Aralık 15th, 2012 4:06 am)

    Güzel. Port forwarding metodu.kullanıyorum ara-sıra.
    SSL Beast attack-dan de korumayı sağlar.
    Ellerine sağlık.

    [Cevapla]

Trackbacks

Yorumda bulunun.