SSH Tunneling ile Güvenli Surf ve SSH Port Forwarding
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYz1gls8' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Okullar, kafeler, oteller gibi public internet erişimi sağlanan mekanlardan yapacağınız internet 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 ssh 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, ssh kullanarak tünel oluşturma ve trafiği bu tünel içerisinden şifreli olarak iletmenin nasıl yapıldığına değineceğim.
ssh 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. linux kullanıyorsanız openssh client'ı zaten yüklüdür.
Bazı SSH Tunneling uygulamaları şu şekilde.
SSH Tunnel üzerinden Mail (smtp, 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.
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 internet ü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 SMTP 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 port 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…
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
Trackbacks
Yorumda bulunun.
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]
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]
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]
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]
Merhaba,
Baglantinin nasil yapildiginin tum ayrintisi yazida mevcut. Bir ssh sunucusuna erisiminiz varsa yukarida anlatildigi sekilde yapabilirsiniz.
[Cevapla]
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]
Asagidaki adreste putty ile nasil yapabileceginizi resimlerle anlatan bir makale mevcut.
http://blogs.techrepublic.com.com/security/?p=421
Bu isinize yarayacaktir.
[Cevapla]
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]
Probleminizi tam olarak anlayamadim; biraz daha detay verebilirseniz yardimci olmaya calisirim.
[Cevapla]
İ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]
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]
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]
SSH istemcisi ile baglanmaya calisirken, host ismine dogan.com.tr yazmak yerine freebsd sanal sunucunuzun IP adresini yazin demek istedim.
[Cevapla]
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]
cok yardımcı oldunuz ,cok teşekkürler su olayı bı cozum ılk sana yemek ısmarlıycam bak gor sozum olsun:)ustat
[Cevapla]
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]
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]
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]
Güzel. Port forwarding metodu.kullanıyorum ara-sıra.
SSL Beast attack-dan de korumayı sağlar.
Ellerine sağlık.
[Cevapla]