SSH Tünelleme: Windows İstemci Üzerinde Putty İle Yerel Port Yönlendirme

Sızma testlerinde veya günlük hayatta normalde erişilemeyen bir hedefe erişmek için, bu hedefe erişebilen başka bir bilgisayar kullanılabilir. Bu yazıda, birbiri ile çok benzer olan ancak farklı amaçlar için kullanılabilecek 4 senaryo ile SSH yerel port yönlendirme konusu incelenmiştir.

Senaryo – 1) Yasaklı Sitelere Erişim

Günlük hayatta bir takım sitelere girmek mevcut ağ üzerinden yasaklanabilmektedir. Bu erişim engeli kurumdaki bir cihaz (içerik filtreleyicisi gibi) tarafından gerçekleştirilebildiği gibi, internet sağlayıcı tarafından da sağlanabilir. Bunun yanında mevcut ağda bulunmayan başka bir sunucu (SSH sunucusu gibi) tarafından ise bu erişim sağlanabilir. Bu durumda, yasaklı siteye aradaki bu sunucu üzerinden bağlantı sağlanabilir.
SSH yerel port yönlendirme için istemci bilgisayarda boş bir port bulunur. Daha sonra bu porta gelen taleplerin, uzak SSH sunucuya yönlenmesi ve uzak SSH sunucudan da erişilmek istenen sisteme yönlendirilmesi sağlanacaktır. Bu amaçla, Windows istemci bilgisayarda 12345. TCP portunun boş olduğu görülmektedir.

netstat -ano -p TCP | findstr 12345

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-01

Mevcut ağ üzerinden www.taraftarium24.org sayfasına erişilemediği görülmektedir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-02

Ancak bu siteye dış dünyadan erişim sağlanabilmektedir. Erişim sağlamak istediğimiz bu sitenin ekran görüntüsü aşağıdaki gibidir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-03

Yapılacak olan işlem Windows istemcinin 12345. portuna erişim sağlandığında (“http://localhost:12345” şeklinde) bu bağlantının aradaki SSH sunucuya gitmesi ve bu sunucunun erişmek istediğimiz sayfaya bağlanmasıdır. Bu amaçla Putty üzerinde “Connection > SSH > Tunnels” adımları izlenerek bir tünel oluşturulur ve yerel port olarak boşta bulunan 12345 portu, hedef sistem olarak da erişim sağlamak istediğimiz web sayfası ve bu web sayfasının hizmet verdiği port belirtilir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-04

Daha sonra da Add butonuna tıklanarak yönlendirme eklenir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-05

Not: Birden fazla port yönlendirmek için “Destination” ve “Source Port” alanlarına ilgili değerler yazılır ve Add butonu ile ekleme yapılır.

Sonraki adımda ise, SSH sunucuya standart bağlantı sağlanır.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-06

Not: Kurumlarda dışarıya doğru standart SSH portu (TCP 22) kapalı olabilmektedir. Bu sebeple, SSH işlemi için TCP 443. port tercih edilmiştir.

Eğer geçerli bir sertifika yok ise (veya daha önce bağlantı gerçekleştirilmemişse) SSH sunucunun sertifikası kaydedilir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-07

Kimlik bilgileri ile SSH sunucuya bağlantı sağlandığında TCP 12345. portunun, “putty.exe” adlı uygulama tarafından kullanıldığı görülmektedir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-08

Böylece yereldeki TCP 12345. porta gidildiğinde trafik SSH tünel üzerinden SSH sunucuya gider ve mevcut ağ üzerinden erişim sağlanamayan yasaklı siteye erişim sağlanır.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-09

SSH sunucudaki trafik incelendiğinde, SSH sunucuya (178.62.251.211) istemci tarafından (78.185.156.41) SSH ile bağlanıldığı; sonrasında (istemci “http://127.0.0.1:12345” şeklinde talep oluşturduğunda) ise “taraftarium24.org” adının çözümlendiği, çözümlenen IP adresi (178.33.117.82) ile üçlü el sıkışma tamamlandığı, HTTP GET talebi yapıldığı, kısacası trafiin artık SSH sunucu üzerinden gittiği görülmektedir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-10

Windows istemcisinde Putty uygulaması ile yapılan bu işlemler yerine, Linux istemcisinde SSH uygulaması ile aşağıdaki komut çalıştırılarak da SSH ile yerel port yönlendirme gerçekleştirilebilirdi.

ssh root@178.62.251.211 –p 443 –L 12345:taraftarium24.org:80

 

Senaryo – 2) Güvenilir Olmayan Protokollerin SSH ile Tünellenmesi

Güvenilir olmayan bazı protokoller başkaları tarafından okunabilir. Trafiğin başkaları tarafından okunabilir olmasını engellemek için SSH yerel port yönlendirme kullanılabilir. Örneğin, SSH sunucu üzerinde çalışan FTP servisine bağlanılmak istendiğinde sunucunun IP adresi (178.62.251.211) ile FTP bağlantısı başlatılabilir. Güvenilir olmayan bu durumdan kaçınmak için Windows istemcideki Putty üzerinde istemcinin TCP 12345 portu, SSH sunucunun TCP 21. portuna (127.0.0.1:21) bağlanabilir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-11

Böylece Windows istemci üzerindeki Filezilla uygulamasında 127.0.0.1 IP adresinin TCP 12345. portuna bağlanıldığında, uzaktaki SSH sunucunun 21 portuna bağlanılmış olur.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-12

Not: FTP servisi bu bilgisayar üzerinde değil de başka bir bilgisayar üzerinde çalışıyor olsaydı; Windows istemci ile SSH sunucu arasındaki trafik şifreli olurken, SSH sunucu ile uzak FTP sunucusu arasındaki trafik açık metin olarak devam ederdi.

Windows istemcisinde Putty uygulaması ile yapılan bu işlemler yerine, Linux istemcisinde SSH uygulaması ile aşağıdaki komut çalıştırılarak da SSH ile yerel port yönlendirme gerçekleştirilebilirdi.

ssh root@178.62.251.211 –p 443 –L 12345:localhost:21

 

Senaryo – 3) Sızma Testlerinde Erişim Sağlanamayan Kritik Sunuculara Erişimin Elde Edilmesi

Sızma testlerinde bir şekilde erişim elde edilmiş olan bir SSH sunucu üzerinden, normalde erişim sağlanamayan bir veritabanı sunucusuna (SQL, Oracle, PostgreSQL, MySQL vb.) Windows istemci üzerindeki bir uygulamadan (SQL Management Studio, TOAD, MySQL Connector vb ) erişim sağlama ihtiyacı olabilir. Bu gibi bir durumda Windows istemcisindeki Putty üzerinde istemcinin TCP 2306 gibi boşta bulunan bir portu, SSH sunucunun erişebildiği MySQL sunucunun TCP 3306. portuna (prod-mysql-db:3306) yönlendirilebilir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-13

Böylece Windows istemci üzerindeki MySQL Connector uygulamasında 127.0.0.1 IP adresinin TCP 2306. portuna bağlanıldığında, SSH sunucu ile kurulan SSH tünel üzerinden, normalde erişim sağlanamayan MySQL sunucunun TCP 3306. portuna bağlanılmış olur.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-14

Windows istemcisinde Putty uygulaması ile yapılan bu işlemler yerine, Linux istemcisinde SSH uygulaması ile aşağıdaki komut çalıştırılarak da SSH ile yerel port yönlendirme gerçekleştirilebilirdi.

ssh root@178.62.251.211 –p 443 –L 2306:prod-mysql-db:3306

 

Senaryo – 4) Sadece Kendi Üzerinden Erişime İzin Verilen Kritik Sunuculara Uzak Bir İstemciden Erişim Elde Edilmesi

Kurumlarda güvenliği arttırmak için bazı servislere (veritabanı servisi gibi) uzaktan erişimler kapatılabilir. Mevcut ortamda, SSH servisi uzaktan erişime açıksa, SSH yerel port yönlendirme sayesinde, Windows istemci üzerindeki bir uygulamadan (SQL Management Studio, TOAD, MySQL Connector vb ) erişim sağlanılabilir. Bu gibi bir durumda Windows istemcisindeki Putty üzerinde istemcinin TCP 2306 gibi boşta bulunan bir portu, SSH (ve MySQL) sunucunun TCP 3306. portuna (localhost:3306) yönlendirilebilir.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-15

Böylece Windows istemci üzerindeki MySQL Connector uygulamasında 127.0.0.1 IP adresinin TCP 2306. portuna bağlanıldığında, SSH sunucu ile kurulan SSH tünel üzerinden, SSH sunucu üzerindeki MySQL servisine (TCP 3306. portuna) bağlanılmış olur.

ssh-tunneling-local-port-forwarding-with-putty-on-windows-client-16

Windows istemcisinde Putty uygulaması ile yapılan bu işlemler yerine, Linux istemcisinde SSH uygulaması ile aşağıdaki komut çalıştırılarak da SSH ile yerel port yönlendirme gerçekleştirilebilirdi.

ssh root@178.62.251.211 –p 443 –L 2306:127.0.0.1:23306

 

 

Kaynaklar:

https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
http://www.akadia.com/services/ssh_putty.html
http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

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

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.