Kısıtlı Sunuculara Erişmek ve Güvenli Bir Şekilde Göz Atmak İçin SSH Tünelleme Nasıl Kullanılır

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

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

Bunu sshLinux, macOS ve diğer UNIX benzeri işletim sistemlerinde bulunan komutla yapabilirsiniz . Yerleşik bir ssh komutu içermeyen Windows'ta, SSH sunucularına bağlanmak için ücretsiz PuTTY aracını öneriyoruz. 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şmenize olanak tanır. Örneğin, ofisinizdeki bir veritabanı sunucusuna evinizden erişmek istediğinizi varsayalım. Güvenlik nedenleriyle, 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ğının dışından bağlantılara izin veriyorsa, o SSH sunucusuna evden bağlanabilir ve veritabanı sunucusuna ofisteymiş gibi erişebilirsiniz. Tek bir SSH sunucusunu saldırılara karşı güvence altına almak, çeşitli farklı ağ kaynaklarını güvenceye almaktan daha kolay olduğu için bu genellikle böyledir.

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

Yerel yönlendirmeyi kullanmak için, SSH sunucusuna normal şekilde bağlanın, ancak -Lbağımsız değişkeni de sağlayın. Sözdizimi şöyledir:

ssh -L local_port: uzak_adresi: uzak_port kullanıcıadı@server.com

Örneğin ofisinizdeki veritabanı sunucusunun ofis ağında 192.168.1.111'de olduğunu varsayalım. Adresinde ofisin SSH sunucusuna erişiminiz var ve SSH sunucusundaki ssh.youroffice.comkullanıcı hesabınız bob. Bu durumda, komutunuz şöyle görünecektir:

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

Bu komutu çalıştırdıktan sonra, veritabanı sunucusuna localhost'taki 8888 numaralı bağlantı noktasından erişebileceksiniz. Dolayısıyla, veritabanı sunucusu web erişimi sağladıysa, erişmek için // localhost: 8888'i web tarayıcınıza takabilirsiniz. Bir veritabanının ağ adresine ihtiyaç duyan bir komut satırı aracınız varsa, onu localhost: 8888'e yönlendirirsiniz. PC'nizdeki 8888 bağlantı noktasına gönderilen tüm trafik, ofis ağınızda 192.168.1.111:1234'e tünellenecektir.

SSH sunucusunun kendisiyle aynı sistemde çalışan bir sunucu uygulamasına bağlanmak istiyorsanız biraz daha kafa karıştırıcı. Örneğin ofis bilgisayarınızda 22 numaralı bağlantı noktasında çalışan bir SSH sunucunuz olduğunu, ancak aynı adreste aynı sistem üzerinde 1234 numaralı bağlantı noktasında çalışan bir veritabanı sunucunuz olduğunu varsayalım. Veritabanı sunucusuna evden erişmek istiyorsunuz, ancak sistem yalnızca 22 numaralı bağlantı noktasında 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'nizde 8888 numaralı bağlantı noktasından veritabanı sunucusuna erişmeye çalıştığınızda, trafik SSH bağlantısı üzerinden gönderilecektir. SSH sunucusunu çalıştıran sisteme ulaştığında, SSH sunucusu onu, SSH sunucusunu çalıştıran aynı PC olan "localhost" üzerindeki 1234 numaralı bağlantı noktasına gönderecektir. Dolayısıyla, yukarıdaki komutta bulunan "localhost", uzak sunucu açısından "localhost" anlamına gelir.

Bunu Windows'taki 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 8888, kaynak bağlantı noktası ve localhost:1234hedef olarak girersiniz . Ardından "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.

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

"Uzak bağlantı noktası yönlendirme", yerel yönlendirmenin tam tersidir ve sık kullanılmaz. Yerel PC'nizdeki bir kaynağı SSH sunucusunda kullanılabilir hale getirmenize olanak tanır. Örneğin, karşınızda 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şebileceğinizi varsayarsak, o SSH sunucusuna bağlanabilir ve uzak bağlantı noktası yönlendirmeyi 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 sunucusunda 1234 numaralı bağlantı noktasına eriştiğinde, bu trafik SSH bağlantısı üzerinden otomatik olarak "tünelden geçirilecektir". SSH sunucusuna erişimi olan herkes, PC'nizde çalışan web sunucusuna erişebilir. Bu, güvenlik duvarlarında tünel açmanın etkili bir yoludur.

Uzaktan yönlendirmeyi kullanmak için ssh, -Rbağımsız değişkenle birlikte komutu kullanın . Sözdizimi büyük ölçüde yerel iletmeyle aynıdır:

ssh -R uzak_port: local_address: local_port kullanıcıadı@server.com

Uzak SSH sunucusunda 8888 numaralı bağlantı noktasında yerel bilgisayarınızdaki 1234 numaralı bağlantı noktasında dinleyen bir sunucu uygulaması yapmak istediğinizi varsayalım. SSH sunucusunun adresi ssh.youroffice.comve 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]

Birisi daha sonra 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. "Uzak" 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 kurmak isterseniz 8888, kaynak bağlantı noktası ve localhost:1234hedef olarak girersiniz . Ardından "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 trafiği 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ı dinleyecektir. Başka bir deyişle, yalnızca SSH sunucusuyla aynı sistemdeki kişiler bağlanabilir. Bu, güvenlik nedenleriyle yapılır. Bu davranışı geçersiz kılmak istiyorsanız, uzak SSH sunucusunda sshd_config'de "GatewayPorts" seçeneğini etkinleştirmeniz gerekir.

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'e benzer şekilde çalışan "dinamik bağlantı noktası yönlendirme" de vardır. SSH istemcisi, uygulamaları kullanmak üzere yapılandırabileceğiniz bir SOCKS proxy'si oluşturacaktır. Proxy üzerinden gönderilen tüm trafik, SSH sunucusu aracılığıyla gönderilecektir. Bu, yerel yönlendirmeye benzer - PC'nizdeki belirli bir bağlantı noktasına gönderilen yerel trafiği alır ve bunu 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, halka açık bir Wi-Fi ağı kullandığınızı varsayalım. Gözetlenmeden güvenli bir şekilde gezinmek istiyorsunuz. Evde bir SSH sunucusuna erişiminiz varsa, ona bağlanabilir ve dinamik bağlantı noktası yönlendirmeyi kullanabilirsiniz. SSH istemcisi, bilgisayarınızda bir SOCKS proxy'si oluşturacaktır. Bu proxy'ye gönderilen tüm trafik, SSH sunucusu 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, evinizde PC'nizin önünde oturuyormuşsunuz gibi olacaktır. Bu aynı zamanda bu numarayı ABD dışındayken yalnızca ABD web sitelerine erişmek için kullanabileceğiniz anlamına gelir - tabii ki ABD'deki bir SSH sunucusuna erişiminiz olduğunu varsayarsak.

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. İnternetten medya sunucusu uygulamanıza gelen bağlantılara izin vermiyorsunuz. Dinamik bağlantı noktası yönlendirmeyi 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ş gibi web tarayıcısı aracılığıyla erişebilirsiniz. Örneğin, medya sunucunuz ev ağınızda 192.168.1.123 numaralı bağlantı noktasında bulunuyorsa, adresi 192.168.1.123SOCKS proxy kullanarak herhangi bir uygulamaya bağlayabilir ve ortam sunucusuna ev ağınızdaymış gibi erişebilirsiniz.

Dinamik iletmeyi kullanmak için, ssh komutunu -Dargümanla birlikte çalıştırın , aşağıdaki gibi:

ssh -D local_port [email protected]

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

ssh -D 8888 [email protected]

Daha sonra, yerel IP adresinizi (127.0.01) ve 8888 bağlantı noktasını kullanmak için bir web tarayıcısını veya başka bir uygulamayı yapılandırabilirsiniz. Bu uygulamadan gelen tüm trafik tünel aracılığıyla yeniden yönlendirilir.

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.

Örneğin, 8888 numaralı bağlantı noktasında bir SOCKS proxy'si oluşturmak istiyorsanız 8888, kaynak bağlantı noktası olarak girersiniz . Ardından "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.

Daha sonra yerel PC'nizdeki SOCKS proxy'sine erişmek için bir uygulamayı yapılandırabilir (yani, yerel PC'nize işaret eden 127.0.0.1 IP adresi) 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 özellikle yararlıdır çünkü Firefox kendi proxy ayarlarına sahip olabilir ve sistem genelinde proxy ayarlarını kullanmak zorunda değildir. Firefox, trafiğini SSH tüneli üzerinden gönderirken, diğer uygulamalar İnternet bağlantınızı normal şekilde kullanır.

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

Tünel, SSH oturum bağlantınız açık olduğu sürece etkin ve açık kalacaktır. SSH oturumunuzu bitirdiğinizde ve bir sunucuyla bağlantınızı 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.