Kısıtlı Sunuculara Erişmek ve Güvenli Bir Şekilde Gezinmek için SSH Tüneli Nasıl Kullanılır?

Yayınlanan: 2022-01-29

Bir SSH istemcisi, başka bir bilgisayarın önünde oturuyormuşsunuz gibi terminal komutlarını çalıştırmanıza izin veren bir Secure Shell sunucusuna bağlanır. Ancak bir SSH istemcisi, yerel sisteminiz ile uzak bir SSH sunucusu arasında bir bağlantı noktasını "tünellemenize" de olanak tanır.

Üç farklı SSH tüneli türü vardır ve hepsi farklı amaçlar için kullanılır. Her biri, trafiği bir ağ bağlantı noktasından diğerine yönlendirmek için bir SSH sunucusu kullanmayı içerir. Trafik, şifreli SSH bağlantısı üzerinden gönderilir, bu nedenle aktarım sırasında izlenemez veya değiştirilemez.

Bunu Linux, macOS ve diğer UNIX benzeri işletim sistemlerinde bulunan ssh komutu ile yapabilir ve ayarlarınızı kaydetmek için bir ssh yapılandırma dosyası oluşturabilirsiniz. Yerleşik bir ssh komutu içermeyen Windows'ta, SSH sunucularına bağlanmak için ücretsiz PuTTY aracını öneririz. SSH tünellemeyi de destekler.

Yerel Bağlantı Noktası Yönlendirme: Uzak Kaynakları Yerel Sisteminizde Erişilebilir Hale Getirin

“Yerel bağlantı noktası yönlendirme”, İnternet'e açık olmayan yerel ağ kaynaklarına erişmenizi sağlar. Örneğin, ofisinizdeki bir veritabanı sunucusuna evinizden erişmek istediğinizi varsayalım. Güvenlik nedeniyle, bu veritabanı sunucusu yalnızca yerel ofis ağından gelen bağlantıları kabul edecek şekilde yapılandırılmıştır. Ancak ofiste bir SSH sunucusuna erişiminiz varsa ve bu SSH sunucusu ofis ağı dışından bağlantılara izin veriyorsa, o SSH sunucusuna evden bağlanabilir ve veritabanı sunucusuna sanki ofisteymişsiniz gibi erişebilirsiniz. Tek bir SSH sunucusunu saldırılara karşı güvenceye almak, çeşitli farklı ağ kaynaklarını güvence altına almaktan daha kolay olduğundan, genellikle durum böyledir.

Bunu yapmak için, SSH sunucusuyla bir SSH bağlantısı kurarsınız ve istemciye yerel bilgisayarınızdan belirli bir bağlantı noktasından (örneğin, bağlantı noktası 1234) gelen trafiği veritabanı sunucusunun adresine ve ofis ağındaki bağlantı noktasına iletmesini söylersiniz. Böylece mevcut PC'niz olan "localhost" olan 1234 portundaki veritabanı sunucusuna erişmeye çalıştığınızda, bu trafik otomatik olarak SSH bağlantısı üzerinden "tünellenir" ve veritabanı sunucusuna gönderilir. SSH sunucusu ortada oturur ve trafiği ileri geri iletir. Veritabanı sunucusuna yerel PC'nizde çalışıyormuş gibi erişmek için herhangi bir komut satırı veya grafik aracı kullanabilirsiniz.

Reklamcılık

Yerel yönlendirmeyi kullanmak için SSH sunucusuna normal şekilde bağlanın, ancak -L argümanını da sağlayın. Sözdizimi:

 ssh -L local_port:remote_address:remote_port [email protected]

Örneğin ofisinizdeki veritabanı sunucusunun ofis ağı üzerinde 192.168.1.111 adresinde bulunduğunu varsayalım. ssh.youroffice.com adresinden ofisin SSH sunucusuna erişiminiz var ve SSH sunucusundaki kullanıcı hesabınız bob . Bu durumda, komutunuz şöyle görünür:

 ssh -L 8888:192.168.1.111:1234 [email protected]

Bu komutu çalıştırdıktan sonra, localhost'taki 8888 numaralı bağlantı noktasındaki veritabanı sunucusuna erişebileceksiniz. Bu nedenle, veritabanı sunucusu web erişimi sunuyorsa, erişmek için http://localhost:8888'i web tarayıcınıza bağlayabilirsiniz. Bir veritabanının ağ adresine ihtiyaç duyan bir komut satırı aracınız olsaydı, onu localhost:8888'e yönlendirirdiniz. PC'nizdeki 8888 bağlantı noktasına gönderilen tüm trafik, ofis ağınızda 192.168.1.111:1234'e tünellenir.

SSH sunucusunun kendisiyle aynı sistem üzerinde çalışan bir sunucu uygulamasına bağlanmak istiyorsanız bu biraz daha kafa karıştırıcıdır. Örneğin, ofis bilgisayarınızda 22 numaralı bağlantı noktasında çalışan bir SSH sunucunuz olduğunu varsayalım, ancak aynı sistem üzerinde aynı adreste 1234 numaralı bağlantı noktasında çalışan bir veritabanı sunucunuz da var. Veritabanı sunucusuna evden erişmek istiyorsunuz, ancak sistem yalnızca 22 numaralı bağlantı noktasındaki SSH bağlantılarını kabul ediyor ve güvenlik duvarı başka hiçbir harici bağlantıya izin vermiyor.

Bu durumda aşağıdaki gibi bir komut çalıştırabilirsiniz:

 ssh -L 8888:localhost:1234 [email protected]

Mevcut PC'nizdeki 8888 numaralı bağlantı noktasındaki veritabanı sunucusuna erişmeye çalıştığınızda, trafik SSH bağlantısı üzerinden gönderilir. SSH sunucusunu çalıştıran sisteme ulaştığında, SSH sunucusu onu, SSH sunucusunu çalıştıran aynı bilgisayar olan “localhost” üzerindeki 1234 numaralı bağlantı noktasına gönderir. Yani yukarıdaki komuttaki “localhost”, uzak sunucu açısından “localhost” anlamına gelir.

Reklamcılık

Bunu Windows'ta PuTTY uygulamasında yapmak için Bağlantı > SSH > Tüneller'i seçin. “Yerel” seçeneğini seçin. “Kaynak Bağlantı Noktası” için yerel bağlantı noktasını girin. “Hedef” için hedef adresini ve bağlantı noktasını remote_address:remote_port biçiminde girin.

Örneğin, yukarıdakiyle aynı SSH tünelini kurmak isterseniz, kaynak bağlantı noktası olarak 8888 ve hedef olarak localhost:1234 girersiniz. Daha sonra “Ekle”ye tıklayın ve ardından SSH bağlantısını açmak için “Aç”a tıklayın. Elbette bağlanmadan önce ana “Oturum” ekranında SSH sunucusunun adresini ve bağlantı noktasını da girmeniz gerekecektir.

İLGİLİ: SSH Aracısı Yönlendirme Nedir ve Nasıl Kullanırsınız?

Uzak Bağlantı Noktası Yönlendirme: Yerel Kaynakları Uzak Bir Sistemde Erişilebilir Hale Getirin

"Uzaktan bağlantı noktası yönlendirme", yerel yönlendirmenin tersidir ve çok sık kullanılmaz. Yerel PC'nizde bir kaynağı SSH sunucusunda kullanılabilir hale getirmenize olanak tanır. Örneğin, önünde oturduğunuz yerel bilgisayarda bir web sunucusu çalıştırdığınızı varsayalım. Ancak bilgisayarınız, sunucu yazılımına gelen trafiğe izin vermeyen bir güvenlik duvarının arkasındadır.

Uzak bir SSH sunucusuna erişebildiğinizi varsayarsak, o SSH sunucusuna bağlanabilir ve uzak bağlantı noktası iletmeyi kullanabilirsiniz. SSH istemciniz, sunucuya, SSH sunucusundaki belirli bir bağlantı noktasını (örneğin, bağlantı noktası 1234) mevcut PC'nizdeki veya yerel ağınızdaki belirli bir adrese ve bağlantı noktasına iletmesini söyleyecektir. Birisi SSH sunucusundaki 1234 numaralı bağlantı noktasına eriştiğinde, bu trafik otomatik olarak SSH bağlantısı üzerinden “tünellenir”. SSH sunucusuna erişimi olan herkes, PC'nizde çalışan web sunucusuna erişebilecektir. Bu, güvenlik duvarları arasında tünel açmanın etkili bir yoludur.

Uzaktan yönlendirmeyi kullanmak için ssh komutunu -R argümanıyla birlikte kullanın. Sözdizimi büyük ölçüde yerel yönlendirmeyle aynıdır:

 ssh -R remote_port:local_address:local_port kullanıcıadı@sunucu.com

Yerel PC'nizdeki 1234 numaralı bağlantı noktasını dinleyen bir sunucu uygulamasını uzak SSH sunucusundaki 8888 numaralı bağlantı noktasında kullanılabilir hale getirmek istediğinizi varsayalım. SSH sunucusunun adresi ssh.youroffice.com ve SSH sunucusundaki kullanıcı adınız bob . Aşağıdaki komutu çalıştırırsınız:

 ssh -R 8888:localhost:1234 [email protected]
Reklamcılık

Daha sonra birisi 8888 numaralı bağlantı noktasından SSH sunucusuna bağlanabilir ve bu bağlantı, bağlantıyı kurduğunuz yerel bilgisayardaki 1234 numaralı bağlantı noktasında çalışan sunucu uygulamasına tünellenir.

Bunu Windows'ta PuTTY'de yapmak için Bağlantı > SSH > Tüneller'i seçin. "Uzaktan" seçeneğini seçin. “Kaynak Bağlantı Noktası” için uzak bağlantı noktasını girin. “Hedef” için hedef adresini ve bağlantı noktasını local_address:local_port biçiminde girin.

Örneğin, yukarıdaki örneği ayarlamak isterseniz, kaynak bağlantı noktası olarak 8888 ve hedef olarak localhost:1234 girersiniz. Daha sonra “Ekle”ye tıklayın ve ardından SSH bağlantısını açmak için “Aç”a tıklayın. Elbette bağlanmadan önce ana “Oturum” ekranında SSH sunucusunun adresini ve bağlantı noktasını da girmeniz gerekecektir.

İnsanlar daha sonra SSH sunucusundaki 8888 numaralı bağlantı noktasına bağlanabilir ve trafikleri yerel sisteminizdeki 1234 numaralı bağlantı noktasına tünellenir.

Varsayılan olarak, uzak SSH sunucusu yalnızca aynı ana bilgisayardan gelen bağlantıları dinler. Başka bir deyişle, yalnızca SSH sunucusunun kendisiyle aynı sistemdeki kişiler bağlanabilecektir. Bu güvenlik nedenleriyle. Bu davranışı geçersiz kılmak istiyorsanız, uzak SSH sunucusunda sshd_config içindeki “GatewayPorts” seçeneğini etkinleştirmeniz gerekir.

İLGİLİ: Windows ve Linux'ta SSH Yapılandırma Dosyası Nasıl Yönetilir

Dinamik Bağlantı Noktası Yönlendirme: SSH Sunucunuzu Proxy Olarak Kullanın

İLGİLİ: VPN ve Proxy Arasındaki Fark Nedir?

Bir proxy veya VPN'ye benzer şekilde çalışan "dinamik bağlantı noktası yönlendirme" de vardır. SSH istemcisi, kullanmak üzere uygulamaları yapılandırabileceğiniz bir SOCKS proxy'si oluşturacaktır. Proxy üzerinden gönderilen tüm trafik SSH sunucusu üzerinden gönderilir. Bu, yerel yönlendirmeye benzer; PC'nizdeki belirli bir bağlantı noktasına gönderilen yerel trafiği alır ve SSH bağlantısı üzerinden uzak bir konuma gönderir.

İLGİLİ: Şifreli Web Sitelerine Erişirken Bile Genel Wi-Fi Ağı Kullanmak Neden Tehlikeli Olabilir?

Örneğin, herkese açık bir Wi-Fi ağı kullandığınızı varsayalım. Gizlice gözetlenmeden güvenli bir şekilde gezinmek istiyorsunuz. Evde bir SSH sunucusuna erişiminiz varsa, ona bağlanabilir ve dinamik bağlantı noktası iletmeyi kullanabilirsiniz. SSH istemcisi, PC'nizde bir SOCKS proxy'si oluşturacaktır. Bu proxy'ye gönderilen tüm trafik, SSH sunucu bağlantısı üzerinden gönderilecektir. Herkese açık Wi-Fi ağını izleyen hiç kimse, göz atmanızı izleyemez veya erişebileceğiniz web sitelerini sansürleyemez. Ziyaret ettiğiniz herhangi bir web sitesi açısından, sanki evde bilgisayarınızın başında oturuyormuşsunuz gibi olacaktır. Bu aynı zamanda, ABD'de bir SSH sunucusuna erişiminiz olduğunu varsayarak, ABD dışındayken yalnızca ABD'deki web sitelerine erişmek için bu numarayı kullanabileceğiniz anlamına gelir.

Reklamcılık

Başka bir örnek olarak, ev ağınızda bulunan bir medya sunucusu uygulamasına erişmek isteyebilirsiniz. Güvenlik nedeniyle, yalnızca İnternet'e açık bir SSH sunucunuz olabilir. İnternet'ten medya sunucusu uygulamanıza gelen bağlantılara izin vermiyorsunuz. Dinamik bağlantı noktası iletmeyi ayarlayabilir, bir web tarayıcısını SOCKS proxy'sini kullanacak şekilde yapılandırabilir ve ardından ev ağınızda çalışan sunuculara, evdeki SSH sisteminizin önünde oturuyormuşsunuz gibi web tarayıcısı aracılığıyla erişebilirsiniz. Örneğin, medya sunucunuz ev ağınızda 192.168.1.123 bağlantı noktasında bulunuyorsa, 192.168.1.123 adresini SOCKS proxy kullanarak herhangi bir uygulamaya bağlayabilir ve medya sunucusuna ev ağınızdaymış gibi erişebilirsiniz. .

Dinamik yönlendirmeyi kullanmak için ssh komutunu -D argümanıyla şu şekilde çalıştırın:

 ssh -D local_port kullanıcıadı@sunucu.com

Örneğin, ssh.yourhome.com adresinde bir SSH sunucusuna erişiminiz olduğunu ve SSH sunucusundaki kullanıcı adınız bob olduğunu varsayalım. Geçerli PC'deki 8888 numaralı bağlantı noktasında bir SOCKS proxy'si açmak için dinamik yönlendirmeyi kullanmak istiyorsunuz. Aşağıdaki komutu çalıştırırsınız:

 ssh -D 8888 [email protected]

Ardından, yerel IP adresinizi (127.0.01) ve bağlantı noktası 8888'i kullanmak için bir web tarayıcısı veya başka bir uygulama yapılandırabilirsiniz. Bu uygulamadan gelen tüm trafik tünel üzerinden yönlendirilecektir.

Bunu Windows'ta PuTTY'de yapmak için Bağlantı > SSH > Tüneller'i seçin. “Dinamik” seçeneğini seçin. “Kaynak Bağlantı Noktası” için yerel bağlantı noktasını girin.

Reklamcılık

Örneğin, 8888 numaralı bağlantı noktasında bir SOCKS proxy'si oluşturmak isterseniz, kaynak bağlantı noktası olarak 8888 girersiniz. Daha sonra “Ekle”ye tıklayın ve ardından SSH bağlantısını açmak için “Aç”a tıklayın. Elbette bağlanmadan önce ana “Oturum” ekranında SSH sunucusunun adresini ve bağlantı noktasını da girmeniz gerekecektir.

Ardından, yerel PC'nizdeki (yani, yerel PC'nizi işaret eden IP adresi 127.0.0.1) SOCKS proxy'sine erişmek için bir uygulama yapılandırabilir ve doğru bağlantı noktasını belirtebilirsiniz.

İLGİLİ: Firefox'ta Proxy Sunucusu Nasıl Yapılandırılır

Örneğin, Firefox'u SOCKS proxy'sini kullanacak şekilde yapılandırabilirsiniz. Bu, Firefox'un kendi proxy ayarlarına sahip olabileceği ve sistem genelinde proxy ayarları kullanması gerekmediği için özellikle yararlıdır. Firefox trafiğini SSH tüneli üzerinden gönderirken, diğer uygulamalar internet bağlantınızı normal şekilde kullanır.

Bunu Firefox'ta yaparken, "Manuel proxy yapılandırması"nı seçin, SOCKS ana bilgisayar kutusuna "127.0.0.1" yazın ve "Port" kutusuna dinamik bağlantı noktasını girin. HTTP Proxy, SSL Proxy ve FTP Proxy kutularını boş bırakın.

SSH oturum bağlantınız açık olduğu sürece tünel aktif ve açık kalacaktır. SSH oturumunuzu sonlandırıp bir sunucuyla bağlantıyı kestiğinizde tünel de kapanacaktır. Tüneli yeniden açmak için uygun komutla (veya PuTTY'deki uygun seçeneklerle) yeniden bağlanmanız yeterlidir.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar