SSH Nedir? SSH Ne Demektir? SSH Hakkında Bilgi

SSH Helsinki Teknoloji Üniversitesi’ nden Tatu Ylönen tarafından geliştirilmiştir ve hali hazırda iki farklı sürümü mevcuttur.

- Ücretsiz olarak SSH ana sayfasından indirilip kullanılabilecek sürümü,
- Değişik UNIX sistemleri ve Windows 3.x / 95 / NT, OS/2, MacOS için geliştirilmiş olan ticari sürümü F-Secure SSH.

SSH, telnet ve rlogin gibi ağ üzerindeki başka bir sunucuya uzakta bulunan bir başka makineden bağlantı sağlayan bir protokoldür. SSH açık haliyle “Secure Shell” yani güvenli kabuk anlamına gelir. Telnet ve rlogin kullanıcı şifreleri dahil tüm iletişim açık yani şifrelenmeden gerçekleştirilirken, SSH güvensiz makineler arasındaki iletişimi güçlü bir kripto yöntemiyle şifreler.
SSH ile bağlantının gerçekleştirilebilmesi için Telnet ile bağlantıda olduğu gibi, bağlanılmak istenen sunucu makinede bir kullanıcı hesabının ve kullanıcı şifresinin bulunması gereklidir. Bunların dışında bir de SSH istemci programlarından birine ihtiyaç olacaktır. SSH ile bir bilgisayara bağlanabilmek için kullanıcı, öncelikle kimliğini ispatlayabilmelidir. Bunu yapmanın, kullanılan protokollere de bağlı olarak, çeşitli yolları vardır.

-R-komutlarını değiştirir : rsh ve rlogin yerine ssh; rcp yerine scp; ftp yerine sftp.
-Güçlü asıllama kullanır, açık anahtarlar kullanan şifreleme algoritmalarına dayanır (hem sistemler için, hem de kullanıcılar için).
-X11 ve “tünel” oturumunda TCP veri akışını yönlendirme. Bu otomatik olarak yapılabilir.
-Tüneli şifreleme, istenildiğinde sıkıştırma yapar.

SSH ve F-Secure SSH TCP/IP üzerinde kullanıldığı zaman sunucu TCP/IP bağlantılarını 22 nci porttan dinler. Bu port resmen SSH için atanmıştır.
SSH protokolü veri sıkıştırması, veri gizliliği ve bütünlüğü ile birlikte hem sunucu hem de kullanıcı için asıllama desteği sağlar .
SSH’ in dezavantajı, sertifika tabanlı anahtar yönetimi yerine önceden konfigüre edilmiş ve manuel olarak dağıtılan açık anahtarları kullanmasıdır.

SSH İle TELNET Arasındaki Farklar

SSH bağlantının tüm içeriğini, ağ üzerinden gerçekleştirilebilecek tüm saldırılara karşı güçlü bir kripto yöntemiyle şifrelerken Telnet protokolünde şifreleme yoktur ve iletişim açık bir şekilde gerçekleştirilir.

Bunun dışında Telnet protokolü sunucu üzerindeki bazı ortamsal değişkenler üzerindeki ayarların değiştirilebilmesine olanak sağlar. Telnet’ de sunucu üzerindeki ayarları sunucuya komut gönderilerek değiştirilebilir. SSH ve bazı modern Telnet sunucuları bunu desteklemez. Bu durumun en önemli nedeni ise sunucu üzerindeki bazı ayarların değiştirilmesinin güvenlik problemlerine neden olabilmesidir.

SSH ile ilgili bir diğer önemli özellik ise bağlanılmak istenen sunucuya şifre girme zorunluluğu olmamasıdır. SSH buna imkan sağlar. rlogin protokolü de şifresiz bağlantıya izin verir fakat bu işlemi güvensiz bir şekilde gerçekleştirir. SSH bunu daha güvenli bir şekilde yapar.

Son olarak SSH sunucuya bağlanmanızı ve otomatik olarak komut göndermenizi sağlar. Bu şekilde gönderilen komut sunucu tarafında işletildikten sonra bağlantı kesilir.

SFTP Nedir?

SFTP, ftp benzeri, ancak veri transferi için ssh’yi kullanan bir dosya transferi programıdır. SSH ‘in güvenlik ile ilgili tüm özelliklerini desteklemektedir. İki bilgisayar arasında dosya alışverişinin yapılabilmesi için öncelikle ssh tarafından yapılan kimlik denetiminin geçilmesi gerekir.

SCP Nedir?

SCP ağ üzerinde dosya kopyalamaya yarayan bir programdır. Veri transferi ve kimlik denetimi için ssh’yi kullanır. Dolayısıyla aynı güvenliği sağlar. Yukarıda ssh için anlatılan tüm denetimler istenilen dosyalar kopyalanmadan önce gerçekleştirilir. Sadece istemci kimliğini ispatlayabilirse kopyalama işlemi yapılır.

SSH protokol Uygulaması

1.İstemci sunucuya asıllama isteğinde bulunur.
2.Sunucu İstemci’ ye 1024 bitlik açık makine anahtarını (host key) ve 768 bitlik açık RSA sunucu anahtarını (server key) gönderir.
Host key : Doğru sunucuya (istenilen) bağlanmak için kullanılır.
Server key : Host key ele geçse bile mesajın açılmasını önlemek amacıyla kullanılır.
3.Eğer istemci makine anahtarını kabul ederse oturum anahtarı olarak kullanılmak üzere 256 bitlik rastgele bir sayı üretir ve bu sayıyı açık makine ve sunucu anahtarlarıyla 2 defa şifreleyerek sunucuya gönderir.
4.Sunucu bu mesajı açar ve oturum anahtarını elde eder. Sunucu istemciye şifreli olarak bir onay mesajı gönderir.

Bu onay mesajının alınması istemciye sunucunun oturum anahtarını elde ettiği bilgisini verir.

Bazı durumlarda istemcinin de asıllanması gerekebilir. Bunun için iki yöntem vardır :

Şifre Asıllaması : Kullanıcı şifresi SSH ile şifrelenmiş olarak sunucuya gönderilir.
RSA Asıllaması : Sunucu rastgele ürettiği bir sayıyı kullanıcının açık anahtarı ile şifreleyerek istemciye gönderir. İstemci sadece kullanıcının gizli anahtarını biliyorsa bu sayıyı açabilir. Kullanıcı açtığı bu sayının MD5 ile özünü alır ve sunucuya gönderir.

Her iki durumda da sunucu bir asıllama başarılı / başarısız mesajı gönderir. Eğer kullanıcı başarıyla asıllandıysa oturum başlar, aksi durumda kullanıcının oturum isteği reddedilir.

SSH 1.0 – SSH 2.0
SSH 1.0 birleşiktir ancak SSH 2.0 üç katmandan oluşur :

1.SSH Ulaşım Katmanı Protokolü (SSH-TRANS) , bütünlüğü, şifrelemeyi, sıkıştırmayı ve sistemin asıllamasını sağlar.
2.SSH Asıllama Protokolü (SSH-AUTH) kullanıcının yetkilendirilmesini sağlar ( şifreler, açık anahtarlar ).
3.SSH Bağlantı Protokolü (SSH_CONN) tüneli (kabuk, SSH-agent, port yönlendirme, akış kontrolü) yönetir.•Her protokol katmanı, IETF ile normalleştirilmiş dökümanlarda tanımlanmıştır.

SSH sürüm 1 ve 2 arasındaki teknik farklar şunlardır:


Şifreleme Algoritmaları

Şifreleme iki yönde birbirinden bağımsız yapılır ve farklı anahtarlar kullanılır, hatta farklı şifreleme algoritmaları da kullanılabilir. Anahtar değiş-tokuşu esnasında kullanılacak bir şifreleme algoritması ve ilgili anahtarlar da karara bağlanır. Simetrik şifreleme için, birçok seçenek vardır. Protokol, tek bir ortak algoritma kullanmaya zorlar : Üç anahtarlı üçlü-DES. Eğer sunucu ve iştemci bağlantı kuramazlarsa bu yöntemi kullanırlar. 3DES, en az peformanslı algoritma olduğundan, önce daha iyi bir algoritma kullanmayı denerler. Bazı gereksiz ve eski (arc4,DES,RC4…) algoritmaları bir kenara koyarsak SSH 2.0 tarafından desteklenen şifreleme algoritmaları aşağıdadır :
• IDEA – cbc : 3DES’den daha performanslıdır.Lisans için bazı şartları vardır (Unix versiyonlarında neredeyse default algoritmadır.)
• Arcfour : RC4 ile uyumludur.
• Blowfish – cbc : Çok hızlı ve güvenlidir.
• AES: yeni standart (DES yerine gelmiştir).Eğer her iki tarafta da varsa bunu kullanın. Bu iş için yapılmıştır.
• Twofish

Sıkıştırma Algoritmaları
Sıkıştırma iki yönde birbirinden bağımsız yapılır ve farklı sıkıştırma algoritmaları kullanılabilir. Anahtar değiş-tokuşu esnasında kullanılacak sıkıştırma algoritmaları da karara bağlanır. SSH 2.0 tarafından desteklenen sıkıştırma algoritmaları aşağıdadır :
• None : Sıkıştırma yok.
• Zlib : GNU ZLIB sıkıştırma algoritması.

Mesaj Asıllama Algoritmaları

Mesaj asıllama iki yönde birbirinden bağımsız yapılır ve farklı algoritmalar kullanılabilir. Anahtar değiş-tokuşu esnasında kullanılacak mesaj asıllama algoritmaları da karara bağlanır. SSH 2.0 tarafından desteklenen mesaj asıllama algoritmaları aşağıdadır :
•None : No MAC
•Hmac-md5 : HMAC-MD5
•Hmac-sha : HMAC-SHA
•Md5-8 : MD5 anahtarının ilk 8 sekizlisi + veri + anahtar
•Sha-8 : SHA anahtarının ilk 8 sekizlisi + veri + anahtar
•Sha : Anahtarın SHA’ sı + veri + anahtar

MAC : Mesajın kendisi, 32 bit’ lik bir sıra numarası, gizli ve ortak bir bilgi kullanılarak hesaplanır.

SSH Ulaşım Protokolü Uygulaması

-1 ve 2 numaralı adımlarda istemci ve sunucu karşılıklı olarak desteklenen sıkıştırma, şifreleme, mesaj asıllama ve anahtar değiş-tokuş algoritmalarının listelerini ihtiva eden mesajları gönderirler.

-3 ncü adımda sunucu iki defa şifrelemiş olduğu açık makine ve sunucu anahtarlarını istemciye gönderir. İstemci sunucunun açık makine anahtarını kendinde bulunan anahtar ile karşılaştırır ve doğru sunucu olup olmadığını anlar. İstemci daha sonra oturum anahtarı olmak üzere 256 bitlik rastgele bir sayı üretir, o ana kadar gönderdiği ve aldığı bütün mesajları ve oturum anahtarını birbirine ekleyerek bir mesaj oluşturur. Bu mesajın SHA-1 ile özünü çıkarır ve oturum tanıtıcısı (session identifier) adı verilen bu değer anahtar değiş-tokuş işlemini bütün olarak asıllamak amacıyla kullanılır.

-4 ncü adımda istemci, 6 adet 0 sekizlisi, oturum tanıtıcısının ilk 10 sekizlisi ve 32 sekizlilik bir ortak gizli bilgiyi birbirine ekleyerek bir mesaj oluşturur, toplam 48 sekizlilik bu mesajı açık makine ve sunucu anahtarlarıyla iki defa şifreler (küçük olan anahtar önce uygulanır) ve 4 numaralı mesaj olarak sunucuya gönderir. Bu mesajı alan sunucu kendi gizli ve açık anahtarlarını kullanarak mesajı açar. Bu anahtar değiş-tokuşunun sonucunda istemci ve sunucu oturum anahtarını hesaplamada kullanılacak 256 bitlik ortak ve gizli bir bilgiye sahip olurlar.

-Anahtar değiş-tokuşu 5 ve 6 ncı adımlarda yeni anahtarların eski algoritma ve anahtarla şifrelenmiş olarak ve karşılıklı gönderilmesiyle sona erer. Bundan sonraki bütün mesajlar yeni algoritma ve anahtarlar kullanılarak gönderilir.

Herhangi bir taraf herhangi bir zamanda 1 numaralı mesajı göndererek, 1 Gb veri transfer edilince ya da 1 saatlik bağlantının sonunda yeniden anahtar değiş-tokuşu yapılması tavsiye edilir.
Ulaşım katmanı protokolü uygulandıktan sonra istemci sunucudan bir hizmet isteğinde bulunabilir. Bu amaçla kullanılacak olan mesajlar aşağıdadır :

1.İstemci 1 numaralı mesaj ile bir servis isteğinde bulunur.
2.Sunucu bu servisi sunacaksa 2 numaralı mesaj ile isteği kabul ettiğini bildirir.
3.İstek kabul edilince veriler 3 numaralı mesajlar kullanılarak gönderilir.
4.İstemci ya da sunucu tarafında verilerin sonuna gelinince 4 numaralı mesaj diğer tarafa gönderilir.
5.Herhangi bir taraf iletişimi bitirmek isterse 5 numaralı mesajı gönderir, bu mesajı alan taraf da aynı mesajı diğer tarafa göndererek iletişimi sona erdirir.

SSH Anahtar Türleri
Kullanıcı anahtarı : Açık anahtarın ve gizli anahtarın (her ikisi de asimetriktir) derlemesinden oluşur. Kullanıcı tanımlamıştır ve kalıcıdır (diskte tutulur).Eğer açık anahtar yöntemi kullanılmışsa bu anahtar kullanıcı asıllaması için kullanılır.
Makina anahtarı : Açık anahtarın ve gizli anahtarın (her ikisi de asimetriktir) derlemesinden oluşur. Sunucu yöneticisi tarafından kurulum veya ayarlanma anında oluşturulur ve kalıcıdır (diskte saklanır). Bu anahtar sistemler arası asıllamada kullanılır.
Sunucu anahtarı : Açık anahtarın ve gizli anahtarın (her ikisi de asimetriktir) derlemesinden oluşur. Bir deamon tarafından oluşturulur ve her çalıştırılmada ve düzenli olarak değişir. Bu anahtar SSH 1.0′ da oturum anahtarları değişimini güvenli yapmak için hafızada saklanır (SSH 2.0′ da, sunucu anahtarı yoktur.Değişimin güvenliği Diffle-Hellman protokolü tarafından sağlanır.)
Oturum anahtarı : Bu anahtar, iletişim kanalının güvenliğini sağlamak için simetrik şifreleme algoritması kullanılarak oluşturulur. Modern şifreleme ürünlerinde olduğu gibi, bu anahtar rastlantısal ve kısa ömürlüdür. SSH 1.0′ da, her oturum için bir anahtar vardır ve her iki tarafta da bulunur. SSH 2.0′ da, her iki tarafta farklı olan iki anahtar bulunur.
Kullanıcı, yukarıdaki anahtarların gizli anahtar kısmını koruyan bir geçişdeyimi (passphrase) atar. Bu koruma gizli anahtarı içeren dosyanın simetrik algoritmayla şifrelenmesiyle garantilenir. Bu dosyayı şifreleyen gizli anahtar, geçişdeyiminden türetilir.

Asıllama Yöntemleri

Birçok kullanıcı asıllama yöntemi vardır. Seçim, güvenlik politikalarında tanımlanan gereksinimlere göre yapılır. Burada temel kategoriler bulunmaktadır:

“telnet benzeri” : Bu, geleneksel şifre yöntemidir. Bağlantı yapıldıktan ve kullanıcı kendisini tanımladıktan sonra şifre girmesi istenir. Bu şifre, sunucu üzerinde daha önce bu kullanıcıya atanmış şifre ile karşılaştırılır. Buradaki problem şifrenin neredeyse açık şekilde gönderilmesidir. Elinde basit bir “sniffer” programı olan herkes bu şifreyi görebilir. Burada SSH de aynı şekilde çalışır, ancak SSH’de şifre şifrelenerek gönderilir.

“Tek kullanımlık şifre”dir : Bu açıkça daha iyi ve daha güvenlidir. Fakat kullanım kısıtları yüzünden her yerde kullanılamaz. Şu şekilde çalışır : Kullanıcı ismini girdikten sonra sunucu sabit bir şifre sormak yerine bir “soru” sorar. Bu soru her seferinde farklıdır ve cevap da değişir. Cevabın öğrenilmesi önemli değildir çünkü bir daha kullanılmayacaktır.

“rhosts benzeri” : Bu durumda, tanımlama R-komutlarında olduğu gibi /etc/rhosts ya da ~/.rhosts gibi istemciyi doğrulayan dosyalardır. SSH, daha iyi tanımlama ve daha özel bir dosya (shosts) kullanır. Bu yeterince güveni değildir ve eğer tek çözüm değilse kullanılması tavsiye edilmez.

Açık anahtar kullanılması : Burada, asıllama asimetrik şifrelemeye dayanır (basitçe, SSH 1.0 RSA kullanır ve SSH 2.0 DSA kullanır). Kullanıcının açık anahtarı sunucuda, gizli anahtarı ise istemcide saklanır. Bu yöntemle, hiçbir gizli bilgi ağda görünmez ve asla sunucuya gönderilmez. Bu yöntemde güvenlik kullanıcının ciddiyetine bağlıdır (bu sadece SSH’ e özgü değildir, açık anahtarı olan bütün sistemlerde vardır). Açık anahtarın istemcide sıkıştırılmasından kaçınmak için, anahtar bir şifre (genellikle geçişdeyimi denir) ile korunur. Eğer kullanıcı kendi gizli anahtarını korumazsa, buna sahip olan kişi her yere ulaşabilir. Bu yüzden güvenlik kullanıcın ciddiyetine bağlıdır ve sunucu yöneticisinin gizli anahtarın düzgün korunup korunmadığından haberdar olması mümkün değildir. SSH ciddiyeti kontrol etmez.

ssh-agent : Bir kişinin gizli anahtarını korumamasının bir nedeni de her bağlantı kurulduğunda anahtarın tekrar girilmesidir. Bağlantı arka planda çalışan scriptlerle kurulduğunda, anahtar kullanılamaz. Çaresi SSH ajanı (ssh-agent)’ dır. Bu servis, sizin tarafınızdan çalıştırılır ve sizin kimlik bilgilerinizi (kullanıcı ismi/makina ismi/geçişdeyimi) saklar, bağlantı gerektiğinde bu bilgileri sizin için gönderir. İstemci tarafında, şifre sadece bir defa sorulur.

Port Yönlendirme, Tüneller
SSH, SSH oturumunda her TCP veri akışının yönlendirmesini “tünel” aracılığıyla yapabilir. Veri akışını, istemci ve sunucu portlarını yönetmek yerine, bağlantı sırasında oluşturulan tünel ile yapar (takip eden diyagrama bakınız). X11 protokolü için fazladan güç harcamadan yapılır. Diğer akışlar için, her iki tarafta komut satırı seçenekleri vardır:

Sunucu ve istemci arasında doğrudan bağlantı :

(örnek: user@alice% telnet bob.org)

Yerel port yönlendirme (istemciden sunucuya) :

örnek:user@alice% ssh -L 1234:bob.org:143 bob.org

Bu sistem, alice.org’ dan IMAP sunucusu olan bob.org’ a ulaşımı sağlar. Dışarıdan yapılacak bağlantılar engellenecektir. Bağlantılar sadece alice.org üzerinde çalıştırılan IMAP istemcisinden yerel makinaların 1234. portuna yapılabilir.
(1) alice.org üzerindeki kullanıcı, SSH tünelini (bağlantısını) açar.
(2) alice.org üzerindeki kullanıcı, istemcinin yerel IMAP’ ini yerel makinanın 1234. portuna erişecek şekilde ayarlar.

Uzaktaki portu yerel porta yönlendirme :

örnek: root@alice% ssh -R 1234:bob.org:143 bob.org
Bu örnek de yukarıdakiyle aynıdır ancak uzak makinadaki port yönlendirilmiştir. Sadece root kullanıcı bu komutu kullanabilir ancak bütün kullanıcılar oluşturulan tüneli kullanabilir.

SSH Hangi Saldırılara Karşı Koruma Sağlar?

•IP gizleme yöntemiyle gerçekleşen saldırılar.
•IP yönlendirme yöntemiyle yapılan saldırılar.
•Saldırganın server isimlerinin bulunduğu kayıtları kullanarak gerçekleşen saldırılar.
•İki makine arasındaki veri trafiğinin aradaki başka bir makine tarafından önünün kesilerek verilerin değiştirilmesi
•İletişimin gerçekleştiği iki makine arasındaki herhangi bir sunucuda bulunan kötü niyetli kişilerin verileri değiştirmesiyle geçekleşen saldırılar
•X11 sunucusundaki iletişim dinlenerek ve X doğrulaması temel alınarak gerçekleşen saldırılar.

Aslında SSH protokolünü gerçekleşen saldırılara karşı koruma sağlamasındaki uyguladığı temel politika net üzerinden gelen hiçbir iletişime güvenmemesi ve bu iletişimi şifrelemesidir. Net üzerinden gerekli izni olmayan biri ancak SSH bağlantısının kesilmesine neden olabilir. Fakat gerçekleşen iletişim sırasındaki şifrelenmiş veri trafiğini çözemez. Bu da paketlerin güvenli bir şekilde yerine ulaşması anlamına gelir.

Tüm bu şifrelemelere karşın kötü niyetli biri sisteme root kullanıcı hesabıyla giriş hakkı elde ettiği anda SSH protokolünü rahatlıkla geçebilir. Yine bu kötü niyetli kullanıcı home dizinine girdiği takdirde güvenlik yok olmuş demektir. Bu durum eğer home dizini NFS (Network File System) ile oluşturulmuş ise sıkça karşılaşılır.

Sonuç
SSH, ne mucizeler yaratır ne de tek başına bütün güvenliği sağlar. Ama temel bağlanma yolarından (telnet, rsh…) daha iyidir.

Benzer Konularımız

SSH Nedir? SSH Ne Demektir? SSH Hakkında Bilgi yazısına ait etiketler :
SSH Nedir? SSH Ne Demektir? SSH Hakkında Bilgi yazısında telif haklarına ve yasalara aykırı bir bilgi veya link bulunuyorsa lütfen buradan iletişime geçiniz.

Tutmayın beni... Yorum yazcam.

Yorum ekleye bilir yada yazı için geri bildirim gönderebilirsiniz..Bu yazı için yorumlarına abone ol: subscribe to these comments RSS.

 

Yorum içerisinde kullanabileceğiniz Html tagları :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Yazıya yorum yazdığınızda yorumunuzun hemen yanında bir Gravatarınız yayınlanacaktır.Hani benim Gravatarım?.

Security Code: