SSH (Secure SHell) uzaktaki sistemlere bağlantıda telnet yerine güvenli alternatif olarak kullanılan de factoi bir bağlantı metodudur. SSH sistemler arasındaki bağlantıyı kriptoladığı için, şifre ve diğer önemli bilgileri meraklı gözlerden koruduğu için uzun zaman önce diğer bağlantı metodlarından daha çok tercih edilmeye başlandı.
Çoğu Linux sistemde kurulum ile birlikte gelmektedir. Bir sistem yöneticisi ssh komutu ile kolayca diğer sistemlerdeki shell’lere erişebilmekte ve komutlar çalıştırabilmektedir. Fakat SSH’ın bağlantıyı güvenli hale getirmekten başka amaçlı kullanımı da söz konusu olabilir.
Giriş
Eğer yeni bir SSH kullanıcısıysanız, bu makale bağlantıları güvenli hale getirmede yararlı bilgiler sunacaktır. Eğer başka bir sistemde login’iniz varsa, farklı trafikleri de SSH kullanarak güvenli olarak yönlendirebilirsiniz. Bu metoda port yönlendirme adı verilmektedir.
Yeni Başlayanlar için IP Ağları
IP Ağlarında, tüm bağlantılar bir sistemin port numarasından diğer sistemin port numarasına yapılır. Portlar 0-65535 arasındadır ve bazı rakamlar özel olarak bazı servisler için belirlenmişdir. Örneğin, port 80 genelde web (HTTP) sunucuları tarafından ve port 22 de SSH sunucuları tarafından kullanılır. Bilinen-rezerve port numaralarını /etc/services dosyasında görebilirsiniz. 1024’ün altındaki port numaraları genelde sadece sistem yöneticilerinin kontrolündedir.
SSH port yönlendirme, SSH bağlantısı kullanarak bir host’taki port’un diğerinde görünmesini sağlar. Port yönlendirme pek çok amaca hizmet edebilir, fakat en önemli kullanımı yönlendirilen porta olan trafiğin kriptolanması olabilir.
Yerel Port Yönlendirme
Bir portu yerel olarak yönlendirdiğinizde, (bağlantı kurduğunuz) SSH sunucusundan bir portu (ssh komutunu çalıştırdığınız) yerel makinanızda kullanılabilir hale getirirsiniz. Uzaktaki bir makinadaki, güvenlik duvarı gibi sebeplerden erişemediğiğiniz bir port yerel makinanızdaki bir port gibi kullanılabilir. Bu sayede yerel makinanızdaki diğer programlar da bu portu kullanabilirler. Bu biraz kafa karıştırıcı görünebilir fakat aşağıdaki örnekler bu tekniğin nasıl işlediğini açıkça gösterecektir.
Güvenli Proxy
Web trafiğinizi gizlemek istediğinizi varsayalım. Bunun için pek çok sebep akla gelebilir. Diyelim ki müşteri tarafında hizmet veren bir danışmansınız ve müşterinizin belirli bir problemin cevabını Google’da aradığınızı görmesini istemiyorsunuz. Ya da firmanızın web sitesindeki çalışma saatlerini işlediğiniz uygulamaya erişeceksiniz.
Eğer uzakta squid web Proxy kullanan bir sisteminiz varsa ve SSH ile erişilebiliyorsa kolaylıkla port yönlendirme yaparak güvenli Proxy kanalı kurabilirsiniz. Uzaktaki sisteminiz Internet’ten gentoo.olympos.org ismiyle erişilebilir olduğunu ve Proxy çalıştıran host isminin Proxy olduğunu varsayalım. Proxy’nizin port 1080’i kullandığını ve sadece yerel ağdaki sistemlerin bağlantısına izin verdiğini varsayalım. Ve firma.com firması IT departmanında olympian.firma.com ismindeki bir makinanın başında oturduğunuzu varsayalım.
Bu durumda port yönlendirmesi için aşağıdaki komutu çalıştırırız:
ssh -L 1080:proxy:1080 kullanici@gentoo.olympos.org
Artık olympian.firma.com veya localhost port 1080’i Proxy olarak kullanabiliriz. Web tarayıcınız yerel makinenizde port 1080’e bağlanır fakat bağlantı SSH oturum üzerinden gentoo sistemine yönlendirilir ve orada HTTP isteklerini yapmak için Proxy’ye bağlanır. firma.com da ağı dinleyenler sadece olympian makinasından gentoo.olympos.org adresine SSH trafiği olduğunu görecektir.
Site Güvenlik Politikalarına Göz Atın
firma.com IT güvenlik politikaları bu tip kriptolanmış bağlantılar ve diğer trafik için kurallar içeriyor olabilir. Güvenli, kriptolanmış web surf güzel olabilir, fakat bir işinizin olması da önemlidir!
Servis Yönetimi
Farklı bir örnek daha deniyelim. Yerel “olympian” makinanızda port 8888’de web-tabanlı bir yönetim aracınız olduğunu varsayalım. Akıllıca bir hareket olarak bu port’a yerel makinanın kendisi haricinde başka bir yerden bağlantı kabul ettirmiyorsunuz. Fakat bir kaç saatliğine müşteri tarafında firma.com’un başka bir sisteminde iken şirketinizden bu yönetim aracına bağlantı yapmaları gerekiyor.
Bu durumda da SSH erişiminiz varsa yerel port yönlendirme imdadınıza yetişecektir:
ssh -L 8888:localhost:8888 kullanici@olympian
Yukarıdaki localhost olympian makinasının kendisine işaret etmektedir. Artık bir web tarayıcısı açıp port 8888’e bağlandığınızda web tabanlı yönetim arabirimine erişebileceksiniz.
Web tarayıcısı adres çubuğuna http://localhost:8888 yazdığınızda web tarayıcısı yerel makinada bu port’a bağlanacak ve sonrasında SSH oturum üzerinden olympian makinasına yönlendirilecektir.
Uzak Port Yönlendirme
VNC sunucusunun büyük ölçüde değiştirilmiş bir hali olan ve bir kullanıcının uzaktan diğer bir kullanıcının masaüstü görüntüsüne erişip yardımcı olabilmesini sağlayan vino’yu duymuşsunuzdur. vino sunucusu normalde X sunucuya bağlantı kurmada 5900 nolu portu dinler.Eğer birden fazla X sunucusu çalıştırıyorsanız X görüntü numarasını 5900’e ekleyip kullanılan port numarasını bulabilirsiniz veya basitçe netstat -ltp ile portları listeleyebilirsiniz. Yardımcı olmak isteyen kişi veya sistem yöneticisi VNC istemcisi (vnclient) ile diğer sisteme bağlanabilir. Fakat yardıma ihtiyacı olan kişiye normal yollardan erişilemiyorsa?
Bir arkadaşınızın uzaktan yardıma ihtiyacı olduğunu varsayalım fakat kendi kontrolünde olmayan ve SSH ile login’e izin vermeyen bir sistem arkasında olduğunu varsayalım.
İlk olarak “gentoo” isimli sisteminizde arkadaşınız için bir kullanıcı hesabı açın. Sonra arkadaşınıza aşağıdaki komutu çalıştırmasını söyleyin:
ssh -R 5900:localhost:5900 arkadas@gentoo.olympos.org
Yukarıdaki komutta ilk port numarası 5900 uzaktaki sisteme (gentoo.olympos.org) yapılacak bağlantıda kullanılacak olanportu belirtir. localhost arkadaşınızın kendi sistemine işaret eder. İkinci port numarası 5900 vino çalışan arkadaşınızın sistemindeki port numarasıdır.
Önemli: Eğer sisteminizde 5900’ü kullanan bir işlem varsa (ör. kendi vino sunucunuz) arkadaşınızın yukarıdaki örnekte ilk port numarası olarak 5901’i kullanması gerekir.
Sonrasında vncviewer localhost komutu ile arkadaşınıza yardımcı olabilirsiniz. Eğer arkadaşınız port 5901’e yönlendirme yaparsa localhost:1 kullanın, port 5902 için localhost:2 vs. Bu sayede birden fazla kişiye aynı anda bağlantı kurabilirsiniz.
Kaynak: http://www.redhatmagazine.com/2007/11/06/ssh-port-forwarding/