IHS Blog

SSH (Secure Shell) Nedir?

ssh-nedir

Secure Shell veya Secure Socket Shell olarak da bilinen SSH, kullanıcılara, özellikle sistem yöneticilerine, güvenli olmayan bir ağ üzerinden bir bilgisayara erişmek için güvenli bir yol sağlayan bir ağ protokolüdür. Güvenli ağ hizmetleri sağlamanın yanı sıra, SSH genel anlamda, SSH protokolünü uygulayan yardımcı programlar grubununun tamamını ifade eder. Secure Shell güçlü bir parola doğrulaması ve Public Key (genel anahtar) doğrulaması sağlar, bunun yanı sıra internet gibi açık bir ağ üzerinden bağlanan iki bilgisayar arasında şifrelenmiş veri iletişimi de sağlar.

Güçlü bir şifreleme sağlamanın yanı sıra SSH, ağ yöneticileri tarafından sistemleri ve uygulamaları uzaktan yönetmek için de yaygın olarak kullanılır ve kişilerin ağ üzerinden başka bir bilgisayarda oturum açmalarını, komutları yönetmelerini ve dosyaları bir bilgisayardan diğerine taşımalarını sağlar.

SSH, hem şifreleme ağı protokolünü hem de bu protokolü uygulayan yardımcı programlar grubunu ifade eder. SSH,  oturumun görüntülendiği bir uç olan Secure Shell istemci uygulamasını, oturumun çalıştığı diğer uç olan bir SSH sunucusuna bağlayan istemci-sunucu (client server) modeli ile çalışmaktadır. SSH uygulamaları genellikle terminal emulasyonu veya dosya aktarımları için kullanılan uygulama protokolleri için destek sunmaktadır. SSH, diğer uygulama protokolleri için güvenli tüneller oluşturmak için de kullanılır, örneğin X Windows System grafiksel oturumlarını uzaktan güvenli bir şekilde çalıştırmak için de kullanılabilir. Bir SSH sunucusu varsayılan olarak standart Transmission Control Protocol (TCP) port 22’yi dinler.

SSH Nasıl Çalışır?

SSH, Telnet, rlogin (uzaktan oturum açma) ve rsh (remote shell) gibi güvenli olmayan terminal emulasyonunun veya oturum açma programlarının yerini almak üzere oluşturulmuştur; SSH aynı işlevleri etkinleştirir (uzak sistemlerde oturum açmak ve terminal oturumlarını çalıştırmak). SSH ayrıca File Transfer Protocol(FTP) ve rcp (remote copy) işlemlerinin de yerini almaktadır.

SSH’nin en temel kullanımı, terminal oturumu için remote bir host bilgisayara bağlanmaktır. Bu komutun biçimi şöyledir:

ssh UserName@SSHserver.example.com

Bu komut, istemcinin server.example.com adlı sunucuya UserName kullanıcı kimliğini kullanarak bağlanmaya çalışmasına neden olur. Lokal host ile sunucu arasında ilk kez bir bağlantı kurulmaya çalışılırsa, remote host bilgisayarın public key parmak izi talep edilir ve önceden bir bağlantı olmamasına rağmen bağlantı kurması istenir:

The authenticity of host 'sample.ssh.com' cannot be established.
 DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10.
 Are you sure you want to continue connecting (yes/no)?

Evet derseniz, oturumun devam etmesine neden olursunuz ve host anahtarı yerel sistemin known_hosts dosyasında saklanır. Bu dosya, varsayılan olarak kullanıcının ana dizininde /.ssh/known_hosts adlı gizli bir dizinde depolanan gizli bir dosyadır. Host anahtarı known_hosts dosyasında saklandıktan sonra, istemci herhangi bir onay gerektirmeden doğrudan o sunucuya tekrar bağlanabilir ve host anahtarı bağlantıyı doğrular.

SSH Kullanımı

Tüm veri merkezlerinde kullanılan SSH, varsayılan olarak her Unix, Linux ve Mac sunucusuyla birlikte gönderilir. SSH bağlantıları, kaynaklara, komutların uzaktan yürütülmesine, yazılım yamalarının ve güncellemelere ve diğer yönetim görevlerine uzaktan erişim de dahil olmak üzere local host ile remote host arasında güvenli birçok farklı iletişim türünü güvenceye almak için kullanılmıştır. Lokal ve remote bilgisayarlar arasında güvenli bir kanal oluşturmanın yanı sıra SSH, yönlendiricileri, sunucu donanımını, sanallaştırma platformlarını, işletim sistemlerini (OS), iç sistem yönetimini ve dosya aktarım uygulamalarını yönetmek için de kullanılmaktadır.

SSH, ilgili araçları kullanarak veya doğrudan terminal aracılığıyla sunuculara bağlanmak, değişiklik yapmak, yükleme yapmak ve çıkış yapmak için kullanılır. SSH anahtarları sunuculara erişimi otomatikleştirmek için kullanılabilir ve genellikle komut dosyalarında, yedekleme sistemlerinde ve konfigürasyon yönetimi araçlarında tercih edilir. Uygun olması ve kuruluş sınırları içinde çalışması için tasarlanan SSH anahtarları, tek oturum açma (SSO – Single Sign-on) imkanı sunar, böylece kullanıcılar her seferinde şifre girmeye gerek duymadan hesapları arasında hareket edebilirler.

SSH her ne kadar kimlik yönetimi ve erişim yönetiminde önemli roller oynasa da aslında şifreli bir bağlantı üzerinden kimlik doğrulaması sağlamaktan daha fazlasını sunabilmektedir. Tüm SSH trafiği şifrelenir; kullanıcıların bir dosyayı aktarması, web’de gezinmesi veya bir komut çalıştırıyorlarsa gibi, ancak eylemleri gizlidir.

SSH’yi sıradan bir kullanıcı kimliği ve parolalı kimlik bilgisii olarak kullanmak mümkün olsa da, SSH, host bilgisayarların birbirlerinin kimliğini doğrulaması için public key (genel anahtar) çiftlerini daha çok kullanır. Bireysel kullanıcılar remote bir hosta bağlanmak için kullanıcı kimliklerini ve parolalarını veya diğer kimlik doğrulama yöntemlerini kullanmaya devam etmelidir, ancak lokal host ve remote host birbirinden ayrı olarak kimlik doğrulaması yapar. Bu doğrulama işlemi, iletişimdeki her host bilgisayar için benzersiz bir public key çifti oluşturularak gerçekleştirilir; tek bir oturumda iki public key çifti gerekir: bunlar, remote makineyi lokal makinede doğrulamak için oluşturulan bir public key çifti ve lokal makineyi remote makinede doğrulamak için oluşturulan ikinci bir public key çiftidir.

SSH’nin Özellikleri

SSH’nin etkinleştirdiği işlevler şunları içerir:

SSH, terminal oturumlarını aktive etmek için etkileşimli olarak kullanılabilir ve daha az güvenli Telnet programı yerine kullanılmalıdır. SSH, programların ve sistemlerin verilere ve diğer kaynaklara uzaktan ve güvenli bir şekilde erişmesini sağlamak için komut dosyalarında ve diğer yazılımlarda da yaygın olarak kullanılır.

SSH’nin Tarihçesi

SSH’nin ilk versiyonu 1995 yılında ortaya çıktı ve o zamanlar Helsinki Teknoloji Üniversitesi’nde araştırmacı olan ve daha sonra Finlandiya merkezli bir siber güvenlik hizmet sağlayıcısı SSH Communications Security’yi kuran Tatu Ylönen tarafından tasarlandı. Zamanla, SSH-1’de çeşitli hatalar bulundu ve bu versiyon artık kullanımdan kaldırıldı. Ve kullanımı güvenli değildir.

Secure Shell protokollerinin mevcut sürümü olan SSH-2, 2006 yılında Internet Engineering Task Force (IETF) tarafından Internet Standardına uygun olarak kabul edildi. SSH-2, SSH-1 ile uyumlu değildir ve bir Diffie-Hellman anahtar değişimi kullanır. Güvenliği artırmak için ileti kimlik doğrulama kodlarını kullanan daha güçlü bir bütünlük denetimi sunar. SSH istemcileri ve sunucuları, en bilinen sistemlerden Gelişmiş Şifreleme Standardı’nı (Advanced Encryption Standard-AES) ve Blowfish’i ve daha birçok şifreleme sistemini kullanır.

Şimdiye kadar, SSH-2’de bilinen bir güvenlik açığı yoktur, ancak Edward Snowden 2013 yılında Ulusal Güvenlik Ajansı’nın (NSA) bazı SSH trafiği şifresini çözebileceğini ileri sürmüştür.

SSH Güvenlik Sorunları

SSH kullanan işletmeler, istemci sistemlerde depolanan host anahtarlarını yönetmek için bazı çözümler geliştirmeye ihtiyaç duyarlar; bu anahtarlar zaman içinde, özellikle yönetim amacıyla remote host makinelere erişmesi gereken bilgi teknolojisi (BT) çalışanları için gitgide birikecektir. SSH known_hosts dosyasında saklanan veriler remote sistemlere kimlik doğrulamalı erişim elde etmek için kullanılabileceğinden, kuruluşlar bu dosyaların varlığından haberdar olmalı ve bir sistemi kullanmayı bıraktıktan sonra bile dosyalar üzerindeki denetimi korumak için standart bir işleme sahip olmalıdır, çünkü bu veriler sabit disklerde düz metin olarak saklanıyor olabilir.

Geliştiriciler, bir komut dosyasına veya başka bir program türüne SSH komutlarını veya işlevlerini dahil ederken de dikkatli olmalıdır. Lokal makinenin kullanıcısının, remote host makinedeki bir hesapta kimliğini doğrulamak için bir kullanıcı kimliği ve parola içeren bir SSH komutu vermesi mümkün olsa da, bunu yapmak kaynak koduna erişimi olan bir saldırgana kimlik bilgilerinin gösterilmesine de sebep olabilir.

Shellshockbash komut işlemcisinde bulunan bir güvenlik açığı, SSH üzerinden yürütülebilir, ancak SSH’de değil, esasen Bash‘ta var olan bir güvenlik açığıdır. SSH için en büyük tehdit kötü anahtar (key) yönetimidir. SSH anahtarları için doğru merkezi yapının varlığı, döndürülmesi ve kaldırılması sağlanmadığı sürece, kuruluşlar özellikle SSH’nin uygulamadan uygulamaya geçişli otomatik süreçlerde kullanımında, kimin hangi kaynağa ne zaman erişim sağladığı konusunda kontrolü kaybedebilir.

SSH ve Telnet Karşılaştırması

Telnet ilk internet uygulama protokollerinden biridir – diğer protokol ise FTP’dir ve Telnet uzak bir host bilgisayarda bir terminal oturumu başlatmak ve sürdürmek için kullanılır.

SSH ve Telnet işlevsel olarak benzerdir, ancak aralarındaki birincil fark SSH protokolünün kullandığı public key şifrelemesidir. Böylece bir terminal, oturumu ayarlarken uç noktaların kimliğini doğrulamanın yanı sıra oturum komutlarını ve çıktısını şifreleyebilir.

Telnet esas olarak terminal emülasyonu için kullanılırken, SSH,  rlogin komutuna benzer emülasyon yapmak için kullanılabilir – ayrıca rsh gibi remote komutlar vermek için, SSH Dosya Aktarım Protokolü (SFTP) ile dosya gönderimi ve diğer uygulamaları tünelleme için de kullanılır.

SSH ve SSL / TLS Karşılaştırması

Transport Layer Security – TLS , Secure Sockets Layer (SSL) protokolünü güncelleyerek, taşıma katmanındaki ağ iletimleri için güvenlik sağlamak üzere tasarlanmıştır. SSH protokolü ayrıca taşıma katmanında veya hemen üzerinde çalışır, ancak iki protokol arasında önemli farklılıklar vardır.

Her ikisi de host bilgisayarların kimliğini doğrulamak için public / private anahtar çiftlerine güvenirken, TLS altında sadece sunucunun kimliği bir anahtar çifti ile doğrulanır. SSH, her bağlantıyı doğrulamak için ayrı bir anahtar çifti kullanır: lokal makineden remote makineye bağlantı için bir anahtar çifti ve remote makineden lokal makineye bağlantıyı doğrulamak için ikinci bir anahtar çifti.

SSH ve TLS arasındaki diğer bir fark, TLS’nin bağlantıların kimlik doğrulaması olmadan şifrelenmesine veya şifreleme olmadan doğrulanmasına olanak vermesidir; SSH ise tüm bağlantıları şifreler ve doğrular.

SSH, IT ve bilgi güvenliği (infosec) profesyonellerine SSH istemcilerini uzaktan yönetmek için güvenli bir mekanizma sağlar. SSH istemcisi ile sunucu arasındaki bağlantıyı başlatmak için parola kimlik doğrulaması gerektirmek yerine, SSH cihazların kendi kimliklerini doğrular. Bu doğrulama, IT personelinin known_hosts dosyasına host anahtarı çiftlerini eklemesine veya kaldırmasına, remote sistemlere bağlanmasına ve SSH yapılandırmalarını değiştirmesine olanak sağlar.

SSH Uygulama Alanları

Açık bir protokol olarak, SSH çoğu bilgi işlem platformu için uygulanmaktadır ve açık kaynak kodlu OpenSSH uygulaması, Berkeley Yazılım Dağıtımı (BSD) üzerinden Linux, Unix ve diğer işletim sistemlerinde en yaygın olarak bulunan Apple’ın macOS’u da dahil bir uygulamadır.

OpenSSH, 2015’ten itibaren Windows PowerShell‘de çalışacak şekilde taşınmıştır ve 2018’de isteğe bağlı OpenSSH desteği, Windows 10’a eklenmiştir. SSH, Unix benzeri işletim sistemlerinin çoğunda varsayılan olarak doğrudan erişilebilir olsa da, Microsoft’un OpenSSH’nin taşınan sürümünde Windows Ayarları kısmında sizin tarafınızdan etkinleştirilmesi gerekir.

PuTTY, SSH’nin başka bir açık kaynak uygulamasıdır ve şu anda Windows, macOS ve Unix / BSD için kullanılabilmektedir ancak PuTTY başlangıçta Windows’ta çalışacak şekilde yazılmıştır. Bir Windows sisteminde SSH kullanmak için uzun zamandır en iyi seçeneklerden biri olmuştur.

SSH paketinin çoğu uygulaması, önceki güvenli olmayan Unix yardımcı programlarının(rlogin, rsh ve rcp) güvenli sürümleri olan, slogin (güvenli oturum açma), ssh ve scp (güvenli kopya) olmak üzere üç yardımcı programı içerir. SSH, uzaktaki bilgisayarın kimliğini doğrulamak için public key şifrelemesi kullanır ve gerekirse remote bilgisayarın kullanıcının kimliğini doğrulamasını sağlar.

Şu anda çeşitli platformlar için ve çeşitli açık kaynaklı ve tescilli lisanslar altında birçok SSH uygulaması bulunmaktadır.

SSH Komutları

SSH’nin grafik uygulamaları olsa da, program genellikle komut satırından çağrılır veya bir komut dosyasının parçası olarak yürütülür. Hedef host veya kullanıcı kimliği gibi bağımsız değişkenler olmadan,SSH’yi kendi komutu içerisinde çalıştırmak size SSH komut parametrelerinin ve seçeneklerinin bir listesini getirecektir.

SSH komutunun en temel formu, programı ve hedef host bilgisayar adını veya Internet Protokolü (IP) adresini çağırmaktır:

ssh server.example.org

Böylece server.example.org hedefine bağlanır; hedef host bilgisayar, istemcinin çalıştığı hesabın kullanıcı kimliği için bir şifre girerek yanıt verecektir. Başka bir deyişle, kullanımdaki kullanıcı kimliği jsmith ise,remote host makine  jsmith isimli hesapla ilişkilendirilmiş bir şifre isteyecektir.

Çoğu durumda, remote host bilgisayarın kullanıcı kimliği farklı olacaktır, bu durumda komutun remote host kullanıcı kimliğiyle verilmesi gerekir, örneğin:

ssh remote_host_userID@server.example.org


SSH, remote host bilgisayarda tek bir komut vermek ve sonra çıkış yapmak için komut satırından da kullanılabilir – örneğin:

ssh example.org ls

Bu komut Unix’i çalıştırır. ls komutu, remote host makinedeki geçerli dizinin tüm içeriğini listeleyen komuttur. Bu örnek önemsiz olmakla birlikte, SSH’nin remote bilgisayarda daha ilginç komutlar yürütmek için kullanılabileceğini göstermektedir. Örneğin, remote makineye tek bir dosya veya başka bir kaynak için erişim sağlayacak ve ardından belirtilen host bilgisayar tarafından dosyaya erişildikten sonra, sunucuyu sonlandıracak bir sunucu örneğini başlatan bir komut oluşturulabilir.


Yürütülebilir SSH’ye ek olarak , SSH aşağıdakiler dahil ek işlevler için komut satırında kullanılan diğer yürütülebilir komutlara sahiptir:

SSH Tünelleme

SSH tünellemesi, SSH port yönlendirmesi olarak da bilinir, kullanıcının lokal bir bilgisayar ile remote bir host bilgisayar arasında güvenli bir tünel açmasını sağlayan bir tekniktir.

SSH port yönlendirmesi ise, uzaktaki bir host bilgisayarın lokaldeki host bilgisayar uygulamaları tarafından doğrudan erişilebilir olmasını sağlamak için ağ trafiğini belirli bir porta / IP adresine yönlendirmek için kullanılan bir tekniktir. Belirlenen hedef, bir remote SSH sunucusunda olabilir veya bu sunucu başka bir remote host bilgisayara iletecek şekilde yapılandırılmış olabilir.

SSH tünelleri, IT yöneticileri ve de aynı zamanda kötü niyetli yazılımcılar açısında da güçlü araçlardır, çünkü fark edilmeden bir kurumsal güvenlik duvarını geçirebilirler. Sonuç olarak, şirket güvenlik duvarı üzerinden SSH tünellerinin yetkisiz kullanımını önlemek için kullanılan çeşitli araçlar mevcuttur.

Exit mobile version