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ım.

  • 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 (Network Address Translation) arkasından soket açmak,
  • Farklı ülkeler üzerinden erişim testleri gerçekleştirmek,
  • Zıplama noktaları oluşturmak

Evet, maddelerden biri, bir kaçı ya da hepsi için SSH Tunnel kullanmak isteyebiliriz. Nedenlerimiz elbette bunlarla sınırlı değil. 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ğim. 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 (Hypertext Transfer Protocol, 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 cevabını görüntülüyor olacaksınız.

Uzak Port Yönlendirme (-R, Remote Port Forwarding ya da Reverse Tunneling)

ssh -R [kullanacagimiz-port]:localhost:[baglanacagimiz-port] [kullanacaginiz-ssh-sunucu]

NAT (Network Address Translation) ve/ya Firewall (Güvenlik Duvarı) 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ülenebilir.

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ır.

ssh -D 9001 [kullanacaginiz-ssh-sunucu]

Bu işlemler için Firefox kullanılabilir. Bu madde ve Firefox yapılandırmasını bir başka yazı içerisinde anlatacağım.

SSH Özellikleri

SSH işinizi kolaylaştıracak, daha güvenli hale getirecek daha pek çok özellik barındırmakta. SSH Tunnel bunlardan sadece bir tanesiydi. Daha detaylı bilgi için man ssh komutunu kullanabilirsiniz.

Leave a Reply