SSH Tunnel Nedir? Nasıl Kullanılır?
SSH sayesinde bilgisayarımızla sunucu ya da sunucular arasındaki bağlantıları tünelleyerek ağ trafiğinin şifreli bir şekilde gerçekleşmesini sağlayabiliriz.
Neden ve nasıl sorularının cevaplarını örnekler eşliğinde detaylıca vermeye çalışacağım. Ancak öncelikle bu işlemlerin hangi durumlar için kullanılabileceğine bakalım1 2.
- Düşük güvenlik seviyesine sahip ya da güvensiz bir internet bağlantısı (kafeler, iş yerleri, açık alanlar… gibi) kullanmak durumunda kaldığımızda bağlantımızın şifrelenerek güvenli hale getirmek,
- Ağ sınırlandırmalarına (filtreleme) takılmamak,
- NAT arkasından soket açmak,
- Farklı ülkeler üzerinden erişim testleri gerçekleştirmek,
- Zıplama noktaları oluşturmak
Evet, maddelerden biri, birkaçı ya da hepsi için SSH Tunnel kullanmak isteyebiliriz. Nedenlerimiz elbette bunlarla sınırlı değil3 4 5. Peki, bu işlemleri nasıl sağlayabiliriz?
- Yerel port yönlendirme (Local port forwarding)
- Uzak port yönlendirme (Remote port forwarding ya da Reverse Tunnelling)
- Dinamik port yönlendirme (Dynamic port forwarding)
Yukarıdaki 3 başlığa detaylıca değineceğim6.
Bu yazı kapsamındaki örneklerde DigitalOcean altında oluşturacağım sunucuları, telefon üzerinden verdiğim örneklerde ise JuiceSSH uygulaması kullanacağım. Ön bilgilendirmeyi de yaptığıma göre artık başlayabiliriz.
Yerel Port Yönlendirme (-L, Local Port Forwarding)
ssh -L [kullanacagimiz-port]:[baglanmak-istediginiz-domain-ya-da-ip-adresi]:[baglanacagimiz-port] [kullanacaginiz-ssh-sunucu]
Bağlı bulunduğunuz ağdan [baglanmak-istediginiz-domain-ya-da-ip-adresi]
için (örneğin yasaklı sitelerden wikipedia.com
olsun) HTTP (Port 80) bağlantı sağlayalım. O halde kullanacağımız komut şu şekilde olacaktır.
ssh -L 9000:wikipedia.com:80 root@[kullanacaginiz-ssh-sunucu]
Bu komut üzerindeki wikipedia.com
erişimimiz için browser’ınızın adres barına localhost.com:9000
yazmanız yeterli olacaktır, bu sayede aslında wikipedia.com:80
erişimi sağlamış oluyorsunuz.
Uzak Port Yönlendirme (-R, Remote Port Forwarding ya da Reverse Tunneling)
ssh -R [kullanacagimiz-port]:localhost:[baglanacagimiz-port] [kullanacaginiz-ssh-sunucu]
NAT7 ve/veya Firewall arkasından erişim sağlayabilirsiniz. Temelde sunucu IP adresine istek gönderilmesine karşılık tünelin ucundaki makinenin cevap vermesi olarak ifade edilebilir. Aşağıdaki örnekte, güvenli ağ arkasındaki makineden [kullanacaginiz-ssh-sunucu]
sunucusunun 80. portuna uzak port yönlendirme işlemi (ters tünel) uygulanmış olmakta. Bu sayede sunucu üzerindeki adresi görüntüleyenlere aslında güvenli ağ ardındaki makineniz cevap vermiş olmakta.
ssh -R 9001:localhost:80 [kullanacaginiz-ssh-sunucu]
Bu sayede bilgisayarınızdaki bir uygulama ya da veritabanı sunucu üzerinden sağlanan bağlantı ile başkalarının erişimine sunulabilir, intranet sayfalarını farklı noktalardan görüntülenebilir8 9. Ek bir not, 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 (-D, Dynamic Port Forwarding)
ssh -D [kullanacagimiz-port] [kullanacaginiz-ssh-sunucu]
Lokal makinede açılan bir soket ile sunucu üzerinden istenen bağlantı işlemleri güvenli bir şekilde gerçekleştirilebilir. Bu süreçte SOCKS kullanılarak bağlantı karşı tarafa ulaştırılır10.
ssh -D 9001 [kullanacaginiz-ssh-sunucu]
Bu işlemler için Firefox kullanılabilir11. Bu madde ve Firefox yapılandırmasını bir başka yazı içerisinde anlatacağım.
SSH Özellikleri
SSH işinizi kolaylaştıracak12, daha güvenli hale getirecek daha pek çok özellik barındırmakta. SSH Tunnel bunlardan sadece bir tanesiydi13 14 15. Daha detaylı bilgi için man ssh
komutunu kullanabilirsiniz.
- SSH Port Forwarding Example. SSH ↩
- Buddhika Chamith. (2012). SSH Tunneling Explained. Source Open ↩
- Çağrı Ersen. (2009). SSH Tunneling ile Güvenli Surf ve SSH Port Forwarding. SYSLogs ↩
- Özgür Koca. (2014). SSH ile ters tünel açmak (reverse ssh). Tankado ↩
- ssh tunneling. EkşiSözlük ↩
- Ali. (2012).How does reverse SSH tunneling work?. StackExchange ↩
- NAT. Wikipedia ↩
- acvcu (2012). Trouble SSH Tunneling to remote server. StackOverflow ↩
- Jack. (2013). Raspberry Pi: Phoning Home Using a Reverse Remote Ssh Tunnel. TunnelsUP ↩
- SOCKS. Wikipedia ↩
- Firefox. Mozilla ↩
- Trackets Blog. (2014). SSH Tunnel - Local and Remote Port Forwarding Explained With Examples ↩
- Frank Wiles. Quick-Tip: SSH Tunneling Made Easy. RevSYS ↩
- Chris Hoffman. (2017). How to Use SSH Tunneling to Access Restricted Servers and Browse Securely. How-to Geek ↩
- DigitalOcean Community. (2013). How To Set Up SSH Tunneling on a VPS ↩