Örneğin sizce bu tür alanlarda sağladığınız bağlantılar güvenli mi6? Gerçekleşen trafik farklı amaçlar doğrultusunda izleniyor olabilir mi7 8? Diğer yandan site engellemeleri konusunda da (son olarak Wikipedia9 ile) bir hayli aktifiz. Hatta, engellenen sitelerin listelendiği engelliweb'in10 bile engellendiği günleri gördük11. Durum böyle olunca hem erişim hakkı hem de güvenlik konularında, SSH yazı serisinin devamı olarak SSH Tunnel ve SOCKS5 Proxy ile güvenli ve engelsiz gezinti‘den bahsedeceğim.
SSH Tunnel ve SOCKS5 Proxy İle Güvenli ve Engelsiz İnternet
Online kimliğimizi mümkün olduğu kadar anonim tutup, kişisel bilgiler, şifreler ve kredi kartı bilgilerimizi gizleyerek internette gezinmenin, ekrangezerliğin bir çok yolu mevcut. Son dönemde en çok aşina olduğumuz yöntemlerden biriyse VPN kullanımı. VPN sağlayıcıların sundukları kapsamlar dahilinde istediğiniz ülkeden IP alıp internete erişebilirsiniz. Tabi, burada da internet akışınızın sağlayıcı sunucularından geçeceğini unutmamalısınız. Kendiniz de biraz uğraşarak VPN server’ınızı kurabilirsiniz elbette, şimdilik bu konu listemde mevcut değil. Bu yazının asıl konusu erişim engellinden ziyade güvenli erişim sağlayabilmek. O halde başlayalım. SSH Tunnel ve SOCKS5 Proxy ile oldukça pratik bir şekilde internette şifreli gezinmeye başlayabilirsiniz.
Dinamik Port Yönlendirme (-D, Dynamic Port Forwarding)
SSH Tunneling yazısına ek olarak bu yazıda yardımcı aracımız Firefox internet tarayıcısı. SOCKS5 protokolüyle internet tarayıcısı ile server arasında şifreli bir iletişim sağlanır. Tarayıcı dışından gönderilen veriler ise şifrelenmez. Bu sayede lokasyon filtrelerinden de kurtulabilirsiniz. Üzerinden bağlantı sağlayacağımız sunucu için DigitalOcean'dan faydalanacağım. Sunucu oluşturma işlemleri için ilgili yazıdaki yönergeleri takip etmeniz yeterli. Size uygun server’ı aktifleştirip IP adresinizi aldığınızı varsayarak, terminal üzerinden dinamik port yönlendirme işlemimizi yapabiliriz12. Ben 8123 üzerinden işlemleri gerçekleştireceğim13.
ssh -D 8123 -f -C -q -N root@server-ip-adresi

Ardından Firefox internet tarayıcınızın Tercihler (about:preferences) bölümünde yer alan Ağ vekil sunucusu ayarlarına giriş yapabilirsiniz. Açılacak Bağlantı Ayarları penceresinde, SOCKS Sunucusu için tanımladığımız port numarasını girelim. Aşağıda kontrol edebilmeniz için ayarların yer aldığı pencere görüntüsünü iletiyorum.

Firefox bağlantı ayarlarından SOCKS tanımlandığında DNS sorguları bu proxy üzerinden geçirilmez. Ek bir ayarla DNS sorgularının da tünelden geçmesi sağlayabiliriz. Firefox konfigürasyon ayarlarından (about:config) network.proxy.socks_remote_dns
için tanımlanan değeri true
yapmanız yeterli.

Bu ayarlamayla birlikte Firefox üzerinden gerçekleştirdiğiniz trafik oluşturulan SSH tünel üzerinden şifreli olarak sunucuya iletilecek, sunucu da isteklere verilen cevapları alıp şifreli tünelden size ulaştıracak. SSH oturumu sonlandığında Firefox üzerinden internet erişimi gerçekleştiremezsiniz. Ancak, yukarıdaki ssh kodunu tekrar terminal üzerinden girerseniz (aktif sunucuya ait IP üzerinden elbette) tekrar SSH tünelini oluşturmuş ve bağlantı sağlamış olursunuz. İşinizi kolaylaştırmak adına macOS için BitBar yazımda yer alan script'i kullanabilirsiniz.
Gelişmiş Tünelleme
Yukarıdaki işlemler pratik bir şekilde güvenli bağlantı sağlayabilmeniz için yeterli olacaktır. Ancak, çok daha detaylı bir süreç izlemek isterseniz çoklu atlayış noktaları oluşturabilirsiniz. Elbette bu doğrultuda birden fazla server erişimine sahip olmanız gerekecektir. Dolayısıyla biraz maliyetli olabilir. Günlük kullanım dışında, yüksek güvenlik gerektiren geçici durumlar için tercih edebilirsiniz. Uygulama senaryomuz şu şekilde olacak. Tarayıcı üzerinden isteklerimiz yerel port yönlendirme (-L, local port forwarding) ile server1’e ileteceğiz. server1 kendine iletilen isteği server2’ye iletecek. server2’de aynı şekilde gelen isteği alıp server3’e aktaracak. server3 ise dışarıya olan çıkışımızı gerçekleştirip websitesine bağlanacak ve aldığı cevabı aynı yol üzerinden geri iletecek. Her server’ı farklı lokasyonlarda oluşturabilirsiniz.
server2
2000. port server3
22. porta;
ssh -N -L 2000:localhost:22 root@server3-ip-adresi
server1
3000. port server2
2000. porta;
ssh -N -L 3000:localhost:2000 root@server2-ip-adresi
Bilgisayarın 4000. portu server1
3000. porta;
ssh -N -L 4000:localhost:3000 root@server1-ip-adresi
Son olarak bilgisayarın 4000. portu üzerinden yapılan isteğin 8080 porta iletilmesi için şu konu uygulamalıyız;
ssh -p 4000 -N -L 8080:localhost:80 -o HostKeyAlias="server3" user@localhost
Firefox SOCKS proxy ayarlarını localhost:8080
üzerinden gerçekleştirdiğimizde trafiğimiz belirtilen şekilde sağlanacaktır. Elbette bilgisayar yerine telefonunuzu da kullanabilirsiniz. SSH standart portu 22, ancak değişiklik yapmak isteyebilir ya da var olan bir değişiklik üzerinden işlemler gerçekleştirecek olabilirsiniz. Bu aşamada port bilgisi ileterek komutları kullanabilirsiniz.
- Milliyet. (2017). İstanbul'da İnternet Ücretsiz Olacak ↩
- Gazete Duvar. (2017). İBB 'WI-FI'ı ile internete bağlanılır mı? ↩
- Wispotter ↩
- Doruknet. Kablosuz İnternet WiSpotter ↩
- Türk Telekom Wifi ↩
- Jim Spanfeller. (2011). A Guide to Sniffing Out Passwords and Cookies (and How to Protect Yourself Against It) ↩
- Doruknet Wispotter İnternet Kullanım Sözleşmesi ↩
- Pelit Pastaneleri İnternet Kullanım Sözleşmesi ↩
- BBC News Türkçe. (2017). Türkiye'de Wikipedia'ya erişim engeli ↩
- engelliweb. EkşiSözlük ↩
- Engelli Web'e ne olduğunu bilen var mı?. Reddit ↩
- How To Set Up SSH Tunneling on a VPS. DigitalOcean Community ↩
- Michael Holley. (2020). How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel. DigitalOcean Community ↩