Web'deki ayak izinizi güvence altına almak söz konusu olduğunda, muhtemelen VPN'leri duymuşsunuzdur, değil mi? VPN, bilgisayarınız ile internet arasında bir aracı görevi görür. Tüm trafik VPN sunucusundan geçer, bu da IP adresinizi ve konumunuzu etkili bir şekilde gizler.
Ancak VPN, bir proxy sunucusunun tek biçimi değildir. SOCKS (Socket Secure), istemci adına ağ trafiğini yönlendirerek bir güvenlik duvarı üzerinden sunucularla iletişim kurmayı sağlayan benzer bir ağ protokolüdür. VPN ile karşılaştırıldığında SOCKS, ağ yapılandırması üzerinde daha fazla esneklik ve kontrol sunar. VPN istemcisini yükleyemediğinizde veya bir VPN sağlayıcısına güvenmediğinizde kullanışlıdır.
Bu kılavuz, bir SSH SOCKS 5 proxy tünelinin nasıl kurulacağını ve web trafiğinizi bu tünel üzerinden nasıl yönlendireceğinizi gösterecektir.
Önkoşullar
Gösterim için, Ubuntu masaüstü çalıştıran yerel bir makine ve Ubuntu sunucusu çalıştıran uzak bir makine kullandık. Sorunsuz bir şekilde çalışmasını sağlamadan önce SSH'nin yapılandırılmış olması gerekir. SOCKS proxy kullandığımız için, bağlantıyı test etmek amacıyla bunu kullanabilecek bir uygulamaya ihtiyacımız var. Firefox mükemmel bir örnektir. SOCKS 5 proxy tünelini destekleyen modern bir web tarayıcısıdır.
Windows kullanıyorsanız, yerel bir Linux ortamı kurmak için WSL (Windows Subsystem for Linux) kullanabilir veya Telnet, rlogin vb. gibi çeşitli ağ protokollerini uygulayabilen açık kaynaklı bir uygulama olan PuTTY yazılımını kullanabilirsiniz.
SOCKS Tünelini Yapılandırma
-
SOCKS tünelini kurma (macOS/Linux)
Yerel bilgisayarda, güvenli bir bağlantı sağlamak için bir SSH anahtarı yapılandırmamız gerekir. SSH anahtarı ayrıca uzak sisteme de kaydedilmelidir. SSH anahtar tabanlı kimlik doğrulamasını yapılandırma hakkındaki bu kılavuz, süreci ayrıntılı olarak göstermektedir.
Aşağıdaki SSH komutu, uzak sunucuya bir SOCKS tüneli kuracaktır:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Komutu parçalarına ayıralım:
-
-i: SSH'ye bağlantı için hangi SSH anahtarını kullanacağını söyler.
-
-D: SSH'ye bir SOCKS tüneli kurmak istediğimizi söyler. Port olarak ise şu portu kullanıyoruz: 1024. Bu sabit bir değer değildir. Şu değerler arasında herhangi bir port seçebilirsiniz: 1024 ve 65536.
-
-f: SSH işlemi arka planda çatallanacaktır (fork edilecektir).
-
-C: SSH, verileri uzak sunucuya göndermeden önce sıkıştıracaktır. Bu, hem veri tüketiminden tasarruf sağlayabilir hem de efektif bant genişliğini artırabilir.
-
-q: Aracı sessiz modda çalıştırır.
-
-N: SSH'ye tünel kurulduktan sonra hiçbir komut gönderilmeyeceğini söyler.
Çalıştırıldıktan sonra, işlemin düzgün şekilde başlayıp başlamadığını doğrulayabiliriz. Aşağıdaki komut, çalışan tüm SSH işlemleri hakkındaki bilgileri yazdıracaktır:
|
1 |
ps aux | grep ssh |

Artık terminal penceresini güvenle kapatabilirsiniz. SSH işlemi arka planda istendiği gibi çalışmaya devam edecektir.
-
SOCKS tünelini kurma (Windows)
Windows kullanıcıları için PuTTY kullanmak daha kolay bir çözümdür. İlk olarak, şunları yapmanız gerekir: PuTTY'yi indirin:

Kurulduktan sonra PuTTY'yi başlatın:

Sol paneldeki Session sekmesinden, sunucunuzun Host Name (or IP address) bilgisini girin. Connection type için SSH seçeneğini belirleyin. Ardından, Connection >> SSH >> Tunnels bölümüne gidin. Burada, Destination alanının altında, ekran görüntüsünde gösterilen seçenekleri belirleyin:

Ardından, Open düğmesine tıklayın. Uzak sunucuya SSH üzerinden bağlanmak için bir terminal penceresi açılacaktır. Uzak sunucuda oturum açın:

SOCKS Tünelini Uygulama
Tünel artık hazır. SOCKS destekleyen herhangi bir uygulama bu tüneli kullanabilir. Gösterim için Firefox harika bir örnektir.
İlk olarak Firefox'u açın. Sağ üst köşedeki menü simgesine tıklayın. Şuraya gidin: Ayarlar:

Ardından, proxy aratın ve Ayarlar kısmına tıklayın: Firefox'un internete nasıl bağlanacağını yapılandırın:

Bundan sonra, El ile vekil sunucu yapılandırması seçeneğini belirleyin. SOCKS Host alanı için localhost veya 127.0.0.1 değerini kullanın. Ardından, port için SOCKS tüneline ayırdığımız portu girin. Şunu seçmeyi unutmayın: SOCKS_v5:

Son olarak, SOCKS_v5 kullanırken DNS'i vekil sunucu üzerinden geçir seçeneğini işaretleyin. Devam etmek için Tamam düğmesine tıklayın.
Ardından, yeni bir sekme açın ve herhangi bir web sayfasına erişmeyi deneyin. Örneğin, IP adresinizi şuradan kontrol edebilirsiniz: CheckMyIP.
Proxy'yi Geri Alma
SSH tüneline olan proxy bağlantısına artık ihtiyacınız kalmadığında, bunu Firefox proxy ayarlarından güvenle devre dışı bırakabilirsiniz:

Pencereden Sistem proxy ayarlarını kullan seçeneğini seçin ve Tamam'a tıklayın.
SOCKS Tünelini Kapatma
-
macOS/Linux üzerinde tüneli kapatma
Tüneli kapatmak için SSH işlemini manuel olarak sonlandırmamız (kill) gerekir. SSH işleminin PID'sine (işlem kimliği) ihtiyacımız var. Aşağıdaki komut, çalışan tüm SSH işlemlerinin PID'lerini gösterecektir:
|
1 |
ps aux | grep ssh |
Tüneli oluşturma komutuyla çalışan SSH işlemini not edin. İşlemi sonlandırın:
|
1 |
kill <tunnel_ssh_pid> |
Herhangi bir seçenek tanımlanmazsa, kill komutu hedef işleme genel bir SIGTERM sinyali gönderecektir. Bu eğitimden Linux işlem yönetimi hakkında daha fazla bilgi edinebilirsiniz.
-
Windows üzerinde tüneli kapatma
PuTTY penceresini kapatmak tünel bağlantısını kapatacaktır.
Sorun Giderme
Trafiği yönlendirmek için SOCKS kullanmaya çalışırken karşılaşabileceğiniz bazı yaygın sorunlar şunlardır.
-
Güvenlik Duvarı
Bir güvenlik duvarı kısıtlaması nedeniyle bağlantı kuramıyorsanız, güvenlik duvarının şu porta olan bağlantıyı engelleyecek şekilde yapılandırılmış olması muhtemeldir: 22. Bu, SSH'nin uzak sistemlere bağlanmak için kullandığı varsayılan porttur. Bazı portlar varsayılan olarak açık kalır, örneğin port 80 (genel web trafiği) ve port 443 (TLS, güvenli web trafiği).
Eğer SSH sunucusu web içeriği sunmuyorsa, varsayılan portlardan birini ( 80 veya 443 ) kullanabiliriz; şu port yerine: 22. Port 443 kullanılması önerilir, çünkü varsayılan olarak şifrelenmiş trafik bekler. Ayrıca giden trafiği de şifreleyecektir. Değişikliği yapmak için SSH yapılandırma dosyasını düzenlememiz gerekir. Dosyayı bir metin düzenleyicide açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH, amacı doğrultusunda birden fazla port kullanabilir. Yapılandırma dosyasında aşağı kaydırın ve port bölümünü bulun:

Değişiklikler yapıldıktan sonra dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliği uygulamak için SSH hizmetini yeniden başlatın:
|
1 |
sudo service ssh restart |
Yeni portun çalışıp çalışmadığını doğrulamak için yeni portu kullanarak uzak sunucuya bağlanmayı deneyin:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Bağlantı başarılı olduysa, SSH tünellemesi için 443 portunu güvenle kullanabiliriz. SOCKS tünelini kurmak için güncellenmiş komut şöyledir:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Burada, -p bayrağı SSH'ye şu portu kullanmasını söyler: 443.
Son Düşünceler
Günümüzde gizlilik ve güvenlik en büyük endişelerden bazılarıdır. Güvenli olmayan bir ağdayken güvenli bir şekilde gezinmenin birçok yolu vardır. Çoğu durumda, bir VPN kullanmak ağ trafiğiniz için yeterli güvenliği sağlayacaktır. Öte yandan, bir VPN'e güvenemiyorsanız veya güvenmiyorsanız, bir SOCKS tüneli size gerekli güvenliği sunacaktır. Bir SOCKS tüneline sahip olmak, kurulum üzerinde tam kontrol sahibi olmanızı da sağlar.
Keyifli kullanımlar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.