SSH Tunnel ve SOCKS5 Proxy İle Güvenli ve Engelsiz İnternet

Parklar ve ulaşım araçları (Muniwifi / Bölgesel kablosuz ağlar), alışveriş merkezleri, kafelerde, konaklama alanlarında ve daha pek çok yerde ücretsiz bir şekilde sunulan internet bağlantıları hakkında ne düşünüyorsunuz? Örneğin sizce güvenli mi? Farklı amaçlar doğrultusunda izleniyor olabilir mi? Diğer yandan site engellemeleri konusunda da (son olarak Wikipedia ile) bir hayli aktifiz. Hatta, engellenen sitelerin listelendiği engelliweb‘in bile engellendiği günleri gördük. 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 yapabiliriz. Ben 8123 üzerinden işlemleri gerçekleştireceğim.

ssh -D 8123 -f -C -q -N root@server-ip-adresi

Firefox ag vekil sunucusu

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 baglanti ayarlari

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.

Firefox about config

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. portu üzerinden server3’ün 22. portuna

ssh -N -L 2000:localhost:22 root@server3-ip-adresi

server1 3000. portu üzerinden server2’nin 2000. portuna

ssh -N -L 3000:localhost:2000 root@server2-ip-adresi

Bilgisayarın 4000. portu üzerinden server1’in 3000. portuna

ssh -N -L 4000:localhost:3000 root@server1-ip-adresi

Son olarak bilgisayarın 4000. portu üzerinden yapılan isteğin 8080 portuna 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.

One reply on “SSH Tunnel ve SOCKS5 Proxy İle Güvenli ve Engelsiz İnternet

Leave a Reply