SSH Tünelleme Nedir ? Nasıl Kullanılır ?

Hayatımızın nerdeyse her zamanında internet kullanıyoruz.Çoğunlukla dışarıda olduğumuzdan dolayı internetimizin bitmemesi amacıyla okulların olsun kafelerin veya herhangi bir yerin internetine bağlanıyoruz.Fakat bu bağlandığımız internetler de verilerimizin ne kadar güvende olacağını elbette bilemeyiz.Bu yüzden bu bağlantıyı verilerimizin herhangi biri tarafından dinlenmesine karşı şifrelemek isteyebiliriz.

Aynı ağ üzerinde bulunan herhangi biri tüm veri trafiğini dinliyebilir ve gönderdiğiniz tüm plaintext datayı okuyup şifreleriniz vs. gibi özel bilgileriniz ele geçirebilir. Böyle durumlarda veri trafiğinizi şifrelemek  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 yani dinleme faliyetinden etkilenmezsiniz.

Bu sebepten dolayı yazımızda sizlere SSH kullanarak tunel oluşturma ve bu tunel ile verilerinizi şifreli olarak iletme konusunda yardımcı olacağız.

Öncelikle SSH Tunnel işlemini nerelerde kullanırız bunu öğrenelim.

  • İlk başta örnek verdiğimiz gibi herhangi bir ağa bağlandığımızda verilimizin güvende olmadığını hissediyorsak eğer bu işlemi kullanabiliriz.
  •  Ağ filtrelerine takılmamak (ağ filtrelerini aşmak, varsa “kullanım politikası sözleşmenize” aykırı olabilir)
  • NAT arkasından gerçek dünyaya soket açmak (NAT arkasından dışarıya servis vermek)
  • İnternet çıkışını farklı ülkelere taşıyarak testler yapmak
  • Sistemlere uzaktan erişim için bir zıplama noktası oluşturmak (VPN alternatifi)

Yerel port yönlendirme (Local port forwarding):

ssh -L 9000:domain.com:80 SSH_Sunucusu

Bu komutta ssh sunucusuna kurduğum ssh bağlantısı üzerinden domain.com’a 80. port üzerinden  bir tünel açtık yani 80. portu kendi localhostumuzun 9000. portuna yönlendirme yaptık.

-L : Belirtilen lokal portun, uzaktaki hedef sunucunun belirtilen portuna yönlendirilmesini belirtir.

Böylelikle tarayıcınıza http://localhost:9000 yazdığınızda domain.com yüklenecektir.Eğer ki domain.com’a erişiminiz yasaklı veya kısıtlı ise bu şekilde erişimi sağlayabilirsiniz.Birnevi VPN görevi sağlamış olur.Aynı komut HTTPS içinde kullanılabilir.

Uzak port yönlendirme (Remote port forwarding):

ssh -R 9000:localhost:80 SSH_Sunucusu

NAT veya Firewall arkasından erişim sağlamak istediğinizde bu komutu kullanabilirsiniz.Dış dünyadaki gerçek IP adresine istek gönderenler tünelin ucundaki makine ile konuşabilirler.

-R : Belirtilen lokal portun, uzaktaki hedef sunucun belirtilen portuna yönlendirip ters tünel açar.

Bu yukarıda yazdığımız komutla ağ arkasındaki makineden SSH_Sunucusu sunucusunun 80.portuna ters tünel açtık.Kurulan bu bağlantı ile dış dünyada bulunan sunucumuza tarayıcı ile ulaşanlar, güvenlikli bölgedeki makinemizin üzerinde çalışan web sunucudan hizmet alabilecekler.

Önemli : SSH ön tanımlı olarak uzak sunucudan port yönlendirme işlemini işleme almamakta. Bu özelliği aktifleştirmek için /etc/ssh/sshd_config dosyasını açıp GatewayPorts yes satırını eklemeli ve ssh servisini yeniden başlatmalısınız.

sudo nano ~/etc/ssh/sshd_config #GatewayPorts yes satırı eklenecek
sudo service ssh restart

Dinamik port yönlendirme (Dynamic port forwarding):

ssh -D 9001 sshServerIP

Yerel makinede açılan bir soket uzak makine üzerinden tüm hedeflere ulaştırılır. Yerel soket üzerinden SOCKS proxy protokolü kullanılarak bağlantı karşı tarafa ulaştırılır. Özetle uzak makinenin İnternet erişimi kullanılabilir. Yerel makinede tarayıcıya SOCKS proxy ayarlarının girilmesi gerekir. Firefox kendi bağlantı ayarlarını içsel olarak kullandığından bu iş için kolaylık sağlar. Ayrıca tarayıcılar için proxy uzantıları kullanılabilir. Veya yerel makinenin tüm trafiğinin proxy üzerinden geçirilmesi tercih edilebilir.

Firefox ağ ayarlarından SOCKS proxy tanımlandığında DNS sorguları bu proxy üzerinden geçirilmez.

DNS sorgularının da tünelden geçmesi için adres satırına “about:config” yazıp, “network.proxy.socks_remote_dns” true olarak ayarlanmalıdır.

 

Proxy ayarları şu şekilde olmalıdır.

ssh komutuna -N parametresi eklenerek uzaktaki sunucuda başka hiçbir komut çalıştırmadan sadece port yönlendirmesi yapılabilir.

Bağlantısını kullanacağımız uzak makine için bir VPS yeterli olacaktır. Avrupa konumlu DigitalOcean planlarını incelemenizi tavsiye ederim.

Linux istemcilerde doğrudan komut satırından SSH komutu (OpenSSH) ile tünelleme kolayca yapılabilir. Windows istemcilerde Putty yukarıda bahsettiğim tüm bağlantı tiplerini kurabilecek yeteneğe sahip.

RDP yazılımlarından içsel olarak SSH tünel özelliğine sahip olanlara örnek; Remmina, MobaXterm .

SSH’ın standart portu 22 dir. Bu port ile geçiş yapamıyorsanız, OpenSSH ayar dosyasında küçük bir değişiklikle 80 veya 443 kullanmanız pek çok engeli aşmanıza yardımcı olacaktır. Sıkı firewall cihazlarına karşı (deep packet inspection),  SSH tüneli HTTP tünelinden geçirilebilir.

Bir cevap yazın

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