Bu makale, SSH'nin nasıl çalıştığını ve uzak bilgisayarlarla güvenli bir şekilde iletişim kurmak için nasıl kullanıldığını açıklamak için üst düzey ve yukarıdan aşağıya bir yaklaşım kullanacaktır.
Bir SSH oturumunun gerçekte nasıl 'güvenli' olduğuna ve bilgisayarların ilk olarak nasıl bir SSH oturumu kurup kurduğuna bakacağız. SSH kullanmanın faydalarına da bakacağız.
Not: Bu kendime gelecekteki notlar olarak düşünülmüştür, ancak umarım ondan da bir şeyler öğrenirsiniz!
SSH nedir?
SSH, 'güvenli kabuk'un kısaltmasıdır. İnternet üzerinden iki bilgisayar arasında veri paylaşımı için bir protokoldür.
Bir protokol, esasen, bilgisayarların iletişim kurmak için kullanabileceği dili tanımlayan bir dizi kuraldır.
Tipik olarak, ilgili iki bilgisayar bilgisayarınız ('istemci') ve bir uzak sunucudur ('ana bilgisayar').
Neden umursuyoruz?
Bilgisayarlar arasında güvenli iletişim
İki bilgisayar internet üzerinden iletişim kurduğunda, mesajlarımızın mesajları dinleyen kimse tarafından ele geçirilemeyeceğinden ve anlaşılmayacağından emin olmak istiyoruz.
Çevrimiçi bir şey satın almak için banka bilgilerinizi internet üzerinden göndermeyi hayal edin. Mesajlarınız şifrelenmemişse, dinleyen herhangi bir bilgisayar veya iletmek için mesajları alan herhangi bir bilgisayar hesap numaranızı ve parolanızı görebilir. Bu iyi değil!
Bunun web teknolojileriyle çalışmak isteyen herkes için anlaşılması gereken önemli bir kavram olduğuna inanıyorum.
Uzak bilgisayarlara güvenli erişim
Kimlik doğrulamasını kontrol etmek için SSH kullanmak, şifre kullanmaktan daha güvenli bir kimlik doğrulama yöntemidir. Aşağıda bunun nasıl çalıştığını keşfedeceğiz.
SSH nasıl güvenlidir?
SSH, iki bilgisayar arasında iletişim göndermenin güvenli bir yoludur.
'Güvenli' ile, bir istemci bilgisayardaki mesajları kodlamanın bir yolunu kastediyorum, böylece mesajları çözebilen ve anlayabilen diğer tek bilgisayar ana bilgisayar olur. Bu kodlama / kod çözme, şifreleme olarak adlandırılır , dolayısıyla burada gerçekten kastettiğimiz şey, SSH'nin güvenli olduğudur çünkü şifreli bir iletişim kanalı kullanır .
SSH oturumu nasıl kurulur?
Bir SSH oturumunun başlaması için iki bilgisayar arasında olması gereken birkaç işlem vardır.
- Öncelikle, bilgisayarlar arasında mesaj alışverişi için güvenli bir yöntem kurmanın bir yoluna ihtiyacımız var. Şifreli bir kanal kurmamız gerekiyor .
- Ev sahibi tarafından alınan verilerin tahrif edilmediğini kontrol etmenin bir yoluna ihtiyacımız var. Buna doğrulama denir ve burada müşteri tarafından gönderilen verilerin bütünlüğünü doğruluyoruz.
- Doğrulama (tekrar). İletişim kurduğumuz bilgisayarın bir sahtekar olmadığını kontrol etmenin bir yoluna ihtiyacımız var. Bu başka bir doğrulama şeklidir, ancak burada bilgisayarın kimliğini doğruluyoruz.
Bu üç adımdan sonra artık uzak bir bilgisayarla güvenli bir şekilde iletişim kurabiliriz.
Bu adımlardan sonra, 'gizli' verileri güvenli bir şekilde paylaşabiliriz ve ayrıca bir istemcinin bir ana bilgisayara şifre kullanmaktan daha güvenli bir şekilde erişim izni olup olmadığını kontrol edebiliriz. Bu işleme, asimetrik şifreleme kullanan kimlik doğrulama adı verilir .
Aşağıdaki bu bölümlerin her biri, bu adımlarla ilgili daha ayrıntılı bilgi verecektir.
Şifrelenmiş bir kanal kurma
SSH protokolünün temel bir parçası, güvenli olmasıdır (adında bile vardır!), Yani SSH kullanılarak gönderilen tüm bilgiler şifrelenmiştir.
Bu bilgiler nasıl şifrelenir?
Şifreleme, temelde sadece bazı akıllı matematik işlemleri kullanarak 'harfleri karıştırmak' anlamına gelir. Her iki bilgisayarın da birBilgiyi yalnızca diğer bilgisayarın şifresini çözebilmesi ve anlayabilmesi için şifreleme yöntemi.
Bu nasıl çalışıyor?
Her iki bilgisayarda da simetrik bir anahtarın özdeş sürümü vardır . Simetrik anahtar, bilgisayarların herhangi bir yerinde saklanan bir harf dizisidir. Bilgisayarlar, kendilerine gönderilen mesajları şifrelemek ve ayrıca deşifre etmek için simetrik anahtarları kullanabilir.
Bu simetrik anahtar yaklaşımının kullanılması, simetrik şifreleme olarak adlandırılır . "Simetrik" kısım, her bilgisayardaki simetrik anahtarın aynı olmasından kaynaklanmaktadır. Bu yaklaşım gerçekten işe yarıyor… ama sadece başka hiçbir bilgisayarın simetrik anahtara erişimi olmadığı sürece işe yarıyor.
Bir sorun
Her iki bilgisayar da simetrik anahtarın ne olduğunu nasıl biliyor?
Bir bilgisayar bunu oluşturabilir ve internet üzerinden bir mesajla gönderebilir. Ancak mesajlar henüz şifrelenmeyecek, bu nedenle mesajları yakalayan herhangi biri anında simetrik anahtara sahip olacak ve gelecekteki tüm iletişimlerin şifresini çözebilir. Bu kötü!
Bu bazen 'anahtar değişimi' sorunu olarak adlandırılır. Simetrik anahtarları kullanmadan önce sürece bir adım daha eklememiz gerektiği açıktır.
Bir çözüm
Yukarıdaki 'anahtar değişimi' sorununa bir çözüm, her iki bilgisayarın da bazı genel bilgileri birbirleriyle paylaşmasıdır (bu, 'herkese açıktır' anlamına gelir, yani birinin araya girmesi umursamaz) ve bunu kendi bilgisayarlarındaki bazı bilgilerle birleştirerek bağımsız bir şekilde, oluşturma aynı simetrik anahtar.
Bu simetrik anahtarlar daha sonra yukarıda belirtilen şekilde simetrik şifrelemede kullanılabilir.
Bu nasıl çalışır
Her iki bilgisayarın da kendi özel anahtarı ve genel anahtarı vardır. Birlikte bir anahtar çifti oluştururlar . Bilgisayarlar genel anahtarlarını internet üzerinden birbirleriyle paylaşırlar . Dolayısıyla, işlemin bu noktasında her bilgisayar bilir
- kendi özel anahtarı,
- kendi genel anahtarı,
- ve diğer bilgisayarın genel anahtarı.
Simetrik Anahtarlar Oluşturma
Her iki bilgisayar daha sonra bu 3 bilgi parçasını bağımsız olarak aynı simetrik anahtarı oluşturmak için kullanır .
Her bilgisayar, yukarıda bahsedilen 3 girişi kullanan matematiksel bir algoritma kullanır. Bu algoritma, Diffie-Hellman anahtar değişim algoritmasının bir parçasıdır. Her bilgisayarda yürütülecek algoritma şuna benzer:
Hostpub_2 = other computer's public keypub_1 = my public keypri_1 = my private key
f(pub_2, pub_1, pri_1) = abcdefg // Symmetric Key
Client:f(pub_1, pub_2, pri_2) = abcdefg // Symmetric Key
Burada alınması gereken önemli şey, bilgisayarların internet üzerinden yalnızca herkese açık bilgileri paylaşması , ancak yine de simetrik anahtarlar oluşturabilmesidir!
Aynı simetrik anahtarlar oluşturmak için anahtar çiftlerini kullanma ve genel bilgileri paylaşma yaklaşımına asimetrik şifreleme denir . 'Asimetrik' olarak adlandırılır çünkü her iki bilgisayar da kendi farklı anahtar çiftleriyle başlar.
Şimdiye kadar: Her iki bilgisayarda da aynı simetrik anahtarları güvenli bir şekilde (anahtar değişimi problemini çözerek) bağımsız olarak oluşturmak için asimetrik şifrelemenin nasıl kullanılacağını ve ardından şifreleme ve şifre çözme için simetrik anahtarlar kullanarak bilgisayarlar arasında güvenli bir şekilde bilgi alışverişinin nasıl yapılacağını gördük .
Doğrulama
Böylece güvenli bir şekilde iletişim kurabiliriz. Ancak bir SSH oturumu oluşturma sürecinin bir sonraki kısmı, verilerin aktarılırken değiştirilmediğini ve diğer bilgisayarın aslında söylediği kişi olduğunu doğrulamaktır .
buna neden ihtiyacımız var?
Başka bir bilgisayar, bilgisayarlardan birini taklit edebilir ve yukarıdaki anahtar değişimini başlatabilir. Öyleyse , mesajın bir sahtekardan değil, diğer bilgisayardan geldiğini nasıl güvenli bir şekilde anlayabiliriz?
Hashing
Bir hash fonksiyonu kullanmalıyız . Bu, girdileri alan ve sabit boyutta bir dizi üreten matematiksel bir işlevdir.
Bu fonksiyonun önemli özelliği, sadece çıktıları kullanarak girdilerin ne olduğunu hesaplamanın neredeyse imkansız olmasıdır.
Bir istemci ve bir ana bilgisayar simetrik anahtarlarını oluşturduktan sonra, istemci bir HMAC oluşturmak için bir karma işlevi kullanacaktır. Bu sadece "karma tabanlı ileti kimlik doğrulama kodu" anlamına gelir. Bu sadece başka bir karakter / sayı dizisidir. İstemci bu HMAC'yi doğrulama için sunucuya gönderecektir.
Hashing işlevinin bileşenleri şunlardır:
- İstemci üzerindeki simetrik anahtar
- Paket sıra numarası (gönderilen her mesaj bir bilgi 'paketi' içinde bulunur)
- (Şifrelenmiş !!!) mesaj içeriği
Sahte verilere sahip bir örnek:
symm_key = abcdefgpkge_no = 13encr_message = encrypted_password
Hash(symm_key, pkge_no, encr_message) = *HMAC* // Hashed value
Ev sahibi bu bilgileri nasıl kullanıyor?
Ev sahibi HMAC'ı aldığında, şu üç bileşenle aynı hash işlevini kullanabilir :
- (aynı!) simetrik anahtarın kendi kopyası,
- paket sıra numarası,
- ve şifrelenmiş mesaj.
Hesapladığı karma değer, istemciden aldığı HMAC ile aynıysa, bağlanan bilgisayarın simetrik anahtara sahip bilgisayarla aynı olduğunu doğruladık.
Simetrik anahtarın ne olduğunu yalnızca ana bilgisayar ve istemcinin bildiğini ve başka hiçbir bilgisayarın bilmediğini unutmayın!
Yani burada, ana bilgisayarın şifrelenmiş mesajın kodu çözülmüş içeriğini bilmemesi önemli değildir - ana bilgisayar, bağlanan bilgisayarın kimliğini hala doğrulamıştır!
Bu yaklaşımın güzelliği, sadece müşterinin kimliğini doğrulamamış olmamız ve verilerin tahrif edilmediğinden emin olmamız, aynı zamanda bunu güvenli bir şekilde ( herhangi bir özel bilgi paylaşmadan) yapmış olmamızdır .
Özet: Veri bütünlüğünü doğrulamak ve müşterinin kimliğini doğrulamak için istemcide ve ardından ana bilgisayarda bir karma işlevi kullandık.
Doğrulama
Uzak bilgisayarlarla güvenli bir şekilde iletişim kurmanın son kısmı şudur:
bağlanan bilgisayarla simetrik anahtarlar oluşturmuş olsak bile ve
güvenli bir şekilde iletişim kurmak için simetrik anahtarları kullanıyor olsak bile ve
olsa bile , bağlantı bilgisayar gerçekten beklediğimiz müşteri değil bir taklitçi
daha sonra bir SSH oturumu kurduk… ama bağlanan bilgisayarın ana bilgisayarın içeriğine erişim izni var mı?
Buna 'kimlik doğrulama' denir: izinleri ve erişim haklarını kontrol etme eylemi.
Kimlik doğrulamayı kontrol etmenin iki yolu vardır:
1 - Parola kullanmak
İstemci, ana bilgisayara bir parola içeren (şifrelenmiş) bir mesaj gönderebilir. Ana bilgisayar, mesajın şifresini çözebilir ve istemcinin belirtilen 'kullanıcıya' (bilgisayarın alanı) erişim izni olup olmadığını kontrol etmek için bir veritabanındaki şifreyi kontrol edebilir. İş bitmiş.
2 - Anahtar çiftlerini ve asimetrik şifrelemeyi kullanma
Daha önce, asimetrik şifrelemenin hem istemcide hem de ana bilgisayarda aynı simetrik anahtarları güvenli bir şekilde oluşturmak için iki anahtar çiftini nasıl kullanabileceğini görmüştük. Müşteri, benzer fikirleri kullanarak şifre olmadan giriş yapabilir .
Bu, sürecin nasıl işlediğine dair çok üst düzey bir yaklaşımdır:
Kurulum:
İstemcide terminale gidin ve istemcide bir ortak anahtar ve özel bir anahtar (yüzeyin altında matematiksel bir algoritma olan 'RSA' kullanır) oluşturmak için bir komut kullanın. Genel anahtarı (özel anahtarı DEĞİL!) Panoya kopyalayın .
Tekrar ediyorum: KAMU anahtarını ( ÖZEL ANAHTARI DEĞİL !) Panoya kopyalayın .
Ardından, istemcideki terminalde, ana bilgisayarda uzaktan oturum açmak için bir parola kullanın. İstemcinin genel anahtarını, diğer genel anahtarlarla birlikte ana bilgisayardaki uygun klasöre yapıştırın.
Şimdi, ev sahibi
- Kendi genel / özel anahtar çiftidir
- İstemcinin genel anahtarı
Anahtar değişimi algoritmasıyla ilgili yukarıdaki bölüme bakarak, ana bilgisayarın simetrik bir anahtar oluşturmak için ihtiyaç duyduğu tüm bileşenlere nasıl sahip olduğunu görebilirsiniz!
Zorlayıcı:
İstemci bağlanmak istediğinde, ana bilgisayar şifrelenmiş bir mesaj göndererek (ana bilgisayarın simetrik anahtarıyla) bir 'sınama' yayınlayabilir ve şöyle diyebilir: 'Sadece bu mesajın şifresini çözebilirseniz erişmenize izin vereceğim!'.
Müşteri daha sonra
- kendi genel ve özel anahtarı
- ana bilgisayarın genel anahtarı
- şifreli mesaj
Artık müşteri (aynı) simetrik bir anahtar oluşturmak ve mesajın şifresini çözmek için gereken her şeye sahip! Mesajın şifresini çözebilir ve meydan okumada 'başarılı' olan onayı ana bilgisayara geri gönderebilir.
Ev sahibi, bağlanan istemcinin yetkili olduğuna ve erişim izni verdiğinden emin.
Neden ikinci yaklaşımı kullanmakla uğraşıyorsunuz?
Bu, bir şifre kullanmaktan daha güvenli olarak görülüyor çünkü bir bot, şifrenizi tahmin etmek için çok sayıda kombinasyon kullanmaya devam etmek için bir 'kaba kuvvet' yaklaşımı kullanabilir, ancak ikinci yaklaşımın çalışması için doğru anahtar çiftlerine sahip olmayacaklar.
Daha fazla okuma:
Yeni Başlayanlar İçin SSH Eğitimi - SSH Nasıl Çalışır?
SSH veya Secure Shell, kullanıcıların uzak sunucularını kontrol etmelerine ve değiştirmelerine olanak tanıyan bir uzaktan yönetim protokolüdür… www.hostinger.com
//www.udemy.com/the-complete-junior-to-senior-web-developer-roadmap/
Sonuç
SSH, diğer bilgisayarları uzaktan kontrol etmek için kullanılan önemli bir araçtır.
SSH güvenlidir, çünkü her iki bilgisayar da aynı simetrik anahtarları ('simetrik şifreleme' olarak bilinir) kullanarak mesajı şifreleyebilir ve şifresini çözebilir.
SSH oturumu başlatmanın ana adımları şunlardır:
- Şifreli bir kanal kurma. Her iki bilgisayarda da herhangi bir özel bilgi paylaşmadan bağımsız olarak aynı simetrik anahtarlar üreten anahtar değişimi sorununu çözmek için asimetrik şifreleme kullanma.
- Doğrulama: Bağlanan bilgisayarın kimliğini doğrulamak için her iki bilgisayarda karma oluşturma kullanma
- Doğrulama (tekrar). Veri bütünlüğünün aktarım sırasında tehlikeye atılmadığını doğrulamak için her iki bilgisayarda da karma oluşturma.
Daha sonra bilgisayarlar arasında güvenli bir şekilde veri göndermek için SSH kullanabiliriz. Bunun önemli bir kullanım durumu, kimlik doğrulama içindir. Parola kullanabilmenize rağmen, bağlanan 'istemcinin' 'ana bilgisayara' erişim iznine sahip olup olmadığını kontrol etmek için asimetrik şifreleme kullanmak daha güvenli olarak görülüyor.
SSH'nizi yükseltmekle ilgileniyorsanız, bu kursu şiddetle tavsiye ederim. Bazı becerilerimi geliştirmeyi gerçekten yararlı buldum! ( feragatname: Yazara veya platforma hiçbir bağlantım veya bağım yok. Kursu bir süre önce aldım ve gerçekten iyi buldum!)
Okuduğunuz için teşekkürler!