SSH Şifresiz Giriş
Secure Shell kısaltması olan SSH, uzaktaki bir sisteme güvenli bir kanal üzerinden erişim sağlamanızı sağlayan bir protokoldür. Bu sisteme giriş yapabilmek için, ilk başta kim olduğunuzun tespit edilmesi gerekir. Yapılacak bu tespit üzerinden yetkilerinizi kullanabilirsiniz. En çok kullanılan tanımlama yöntemi ise "kullanıcı adı", "şifre" ikilisidir. Şifre sisteminin bilinen zayıflıklardan ilki olan, şifreniz kolay tahmin edilebilir olduğunda şifrenizin kırılma ihtimali artmakta ve güvenlik seviyeniz düşmektedir. Diğer zayıf noktası ise, bu şifre iki taraf tarafından bilinen bir şifredir. Doğrulama sistemi simetrik olduğu için kendinizi sisteme tanımlama esnasında sisteme bir şifre vermeniz gerekmektedir. Karşı tarafın şifreyi tutma şeklinden veya bu şifre belirleme protokolü esnasında üçüncü bir kişinin araya girmesine kadar, bu sürecin zayıf noktaları bulunmaktadır. Bu zayıf noktalarda oluşabilecek herhangi bir zaafiyette karşı sisteme erişimin başkasının eline geçmesi ihtimali de artmaktadır. Bu şifre iki taraf arasında paylaşılan özel bir şifre olduğu için, aynı şifreyi başka yerde kullanmanız durumunda, iki tarafın bilmesi gereken bir şifre üçüncü bir taraf ile de paylaşılmış duruma gelmektedir. Simetrik sisteme alternatif olan asimetrik sistemde, bir özel anahtar (private key) genel anahtar (public key) ikilisi oluşturur ve genel anahtarı istediğiniz kadar kişiye paylaşabilirsiniz. Özel anahtarınız, bu genel anahtarın sahibi olduğunu ispat ettiğinden, genel anahtarın sahipliğini ispat ederek sisteme giriş yapabilirsiniz. Bu şekilde, simetrik sistem ile her bir sisteme özel bir şifre oluşturmak yerine, asimetrik sistemde tek bir anahtar ile bütün sistemlere erişim sağlayabilirsiniz. Tek bir anahtar ile bütün sistemlere erişim sağlayabiliyor olmanız, sahip olduğunuz özel anahtara çok büyük bir güç vermektedir. Bu özel anahtarı korumak en önemli önceliktir. Eğer bu özel anahtarınız başkalarının eline geçecek olursa, bu anahtarı ele geçiren kişi sizin yerinize genel anahtarın sahibi olduğunu rahatlıkla ispat edebilecektir.
Özetle, doğrulama yöntemleri simetrik ve asimetrik olarak ikiye ayrılırlar. Kullanıcı şifre yönteminde, kullanılan şifre iki taraf arasında paylaşılan bir bilgi olduğu için simetriktir. Simetrik sistemlerde doğrulamayı sağlayan gizli bilgi iki taraf için ortaktır ve bu iki tarafa özeldir. Bu şifrenin paylaşılması durumunda güvenlik çökecektir. Asimetrik sistemlerde özel anahtar ve genel anahtar olarak birbirini tamamlayan anahtar çifti oluşturulur. Özel anahtar kişiye özel olup hiç kimse ile paylaşılmaz. Genel anahtar ise herkesle paylaşabileceğiniz ve özel anahtara sahip olduğunuzu onun üzerinden ispat edeceğiniz anahtardır. Özel anahtarın paylaşılması durumunda güvenlik çökecektir.
İhtimaller ve Güvenlik Seviyesi
Şifreniz ne kadar uzun olursa, kombinasyonunuz o kadar fazla olur. Kombinasyonun daha fazla olması, şifrenizin kolay tahmin edilmesini zorlaştırır. Ayrıca insan beyninin rastgele düşünememesi sebebiyle, bireylerin belirlediği şifrelerin tahmin edilebilmesi daha da kolaydır. Genel olarak bilgisayarın ürettiği 6 6 karakterlik bir şifre bir insanın "rastgele" oluşturduğu 8 karakter şifreye göre daha güvenli olabilir. Eğer güvenli bir şifre oluşturmak istiyorsanız, sistem tarafından rastgele oluşturulan bir şifreyi kullanmak daha güvenli olacaktır. Oluşturduğunuz şifrenin 2lik sistemde kaç bitlik olduğunu hesaplamak için
charset = Şifrenizi oluşturan harf kümesinin eleman adedi
length = Şifrenizin uzunluğu
\begin{equation}bits = \log _{2}(charset^{length})\end{equation}
\begin{equation}bits = length \log _{2}(charset)\end{equation}
Örneğin sadece rakamlardan oluşan 6 hanelik bir şifrenin kombinasyonu kaç bittir hesaplamak istersek;
\begin{equation}charset = 10, length = 6\end{equation}
\begin{equation}bits = 6 \log _{2}(10)\end{equation}
\begin{equation}bits = 19.93\end{equation}
Rakamlardan oluşan 6 hanelik bir şifrenin 19.93 bit diyebiliriz. Bunun anlamı ise, her bir şifreyi sırayla numaralandırırsak, bütün hepsini gösterebilmek için 20 bitlik bir sayıya ihtiyacımız var demektir.
Örnek Karaktersetleri:
Ad | İçerik | Uzunluk |
Sayı | [0-9] | 10 |
Büyük Harf | [A-Z] | 26 |
Büyük Harf, Sayı | [A-Z0-9] | 36 |
Harf, Sayı | [A-Za-z0-9] | 62 |
Harf, Sayı, Noktalama | [A-Za-z0-9] + noktalama | 95 |
Örnek Bit Uzunlukları:
| Karakter Seti |
Şifre Uzunluk |
10 kar |
26 kar |
36 kar |
62 kar |
95 kar |
4 kar |
13.3 bit |
18.8 bit |
20.7 bit |
23.8 bit |
26.3 bit |
6 kar |
19.9 bit |
28.2 bit |
31.0 bit |
35.7 bit |
39.4 bit |
8 kar |
26.6 bit |
37.6 bit |
41.4 bit |
47.6 bit |
52.6 bit |
12 kar |
39.9 bit |
56.4 bit |
62.0 bit |
71.5 bit |
78.8 bit |
16 kar |
53.2 bit |
75.2 bit |
82.7 bit |
95.3 bit |
105.1 bit |
Bit uzunluğu arttıkça ihtimal sayısı artar ve şifrenizin deneme yanılma ile bulmasını zorlaştırır. 2 bitlik sisteme çevirme amacımız güvenlik seviyelerinde karşılaştırma yapabilmektir.
NIST SP-800-57 tavsiye anahtar uzunlukları karşılaştırma tablosu
Güvenlik Seviyesi |
Simetrik |
Asimetrik Ayrık Logaritma |
Asimetrik Çarpan Ayırma |
Asimetrik Eliptik Eğri |
80 bit |
80 bit |
L=1024 bit N=160 bit |
k=1024 bit |
f=160 bit - 223 bit |
112 bit |
112 bit |
L=2048 bit N=224 bit |
k=2048 bit |
f=224 bit - 255 bit |
128 bit |
128 bit |
L=3072 bit N=256 bit |
k=3072 bit |
f=256 bit-383 bit |
192 bit |
192 bit |
L=7680 bit N=384 bit |
k=7680 bit |
f=384 bit-511 bit |
256 bit |
256 bit |
L=15360 bit N=511 bit |
k=15360 bit |
f=512+ bit |
Yukarıdaki tabloda verilen kolonlarda, RSA anahtarları "Çarpan Ayırma" algoritma ailesine, ed25519 anahtarları ise "Eliptik Eğri" algoritma ailesine aittir. Bu tabloları şu şekilde okuyabilirsiniz. 1024 bitlik bir RSA anahtarı 80 bitlik simetrik güvenlik seviyesine yakın olduğu varsayılır ve büyük harf, küçük harf, rakam ve noktalama işaretlerini içeren 95 karakterlik bir kümeden oluşturulan 12 karakter uzunluğundaki rastgele sayı üreteci tarafından üretilmiş bir şifre ile denktir. İnsan tarafından rastgele üretilen bir şifre için en az 16 karakter uzunluğunda olması gerekir. 2048 bitlik RSA anahtarına denk olabilmesi için rastgele sayı üreteci tarafından üretilmiş şifrenin 17 karakterli olması beklenir. Eliptik Eğri ailesine ait 256 bitlik bir anahtarın güvenlik seviyesi 128 bit olup bu seviyeye 20 karakterlik bir şifre ile erişebilirsiniz.Aynı seviyeye sadece rakamlardan oluşan bir şifre ile erişmek istendiğinde rastgele sayı üreteci tarafından üretilmiş 40 rakamlık bir şifre gerekmektedir.
Not: Bilgisayarda bulunan rastgele sayı üreteci algoritması, sadece belli şartlar sağlandığında rastgele kabul edilir.
RSA'nın zaman içinde devreden alınıp yerine Eliptik Eğri kullanımının yaygınlaştırılması yönünde eğilim mevcuttur. Her iki algoritmanın kendine göre avantaj ve dezavantajları bulunmaktadır. Temel olarak RSA daha eski bir algoritma ve dayanıklılık konusunda kendini ispat etmiş bir algoritmadır. Eliptik eğri daha yeni olduğu için yeterince test edilmediği ve açık bulunabileceği şüphesi içerirken, RSA ya göre çok daha kısa bit kullandığı için, hem hesaplama hızında hem depolama alanında çok büyük bir avantaj sağlamaktadır.
SSH Ayarlaması
SSH için anahtar kurulumu iki aşamadan oluşmaktadır. Birinci aşama, özel genel anahtar ikilisinin oluşturulması, ikinci aşama ise genel anahtarın hedef sistemde tanımlanmasıdır.
Özel genel anahtar ikilisini oluşturmak için aşağıdaki komutu çalıştırmanız yeterlidir. Sistemde OpenSSH kurulu olması yeterlidir.
Bu komut çalıştırıldıktan sonra sizden dosya ismini ve belirlemek isterseniz bir şifre belirlemenizi isteyecektir. Burada verdiğiniz şifre, dosyayı ayrıca şifrelemek için kullanılacaktır. Bu dosyayı açabilmek için bu şifreyi bilmeniz gerekmektedir. Bu ek bir güvenlik katmanı sağlamaktadır. Özel anahtarınızın başkasının eline geçmesi durumunda, özel anahtara ulaşabilmek için şifrenizi de bilmesi gerekecektir. Cep telefonunuzdaki pin kodu gibi çalışır. Eğer şifresiz özel anahtar oluşturursanız, bu dosyanın başkasının eline geçmesi durumunda hemen kullanabilecektir. Bu program yukarıda belirttiğiniz dosya isminde veya varsayılanı kullandıysanız, ".ssh" klasöründe "id_ed25519" ve "id_ed25519.pub" varsayılan dosya isimlerinde iki tane dosya oluşturacaktır. uzantısı olmayan dosya sizin özel anahtarınız olup bu dosyayı kimseyle paylaşmamanız gerekmektedir. ".pub" uzantılı olan dosya sizin genel (public) anahtarınızdır. Bu anahtarı başka sistemlerde tanımlamakta kullanacaksınız.
OpenSSH kurulu başka bir sisteme erişmek için o sistemdeki size ait ".ssh" klasöründe "authorized_keys" dosyasına eklemeniz gerekecektir. "authorized_keys" dosyası birden fazla genel anahtar içerebilir. Her genel anahtar alt alta dosyada sıralanır.
cat id_ed25519.pub >> ~/.ssh/authorized_keys
Eğer sistemde "authorized_keys" dosyası ilk defa oluşturuluyorsa okuma yazma izinlerinin "600" olması mecburiyeti vardır. Aksi halde OpenSSH güvenlik açığı sebebiyle bu dosyayı dikkate almayacaktır. Bu dosyaya erişmesini istemediğiniz kişilerin yazabilmesi, o kişilere erişim imkanı sağlayacaktır. İzinsiz erişmek isteyen kişi, bu dosyaya kendisine ait bir anahtarı girmesi durumunda, kendi anahtarı ile hemen erişebilecektir. Bu dosyanın, belli kişiler dışında değiştirilmemesi çok önemli olup, sistemde admin seviyesinde çalışan herhangi birisinin veya programın bu dosyayı rahatlıkla değiştirebileceğini de her zaman gözönünde bulundurun.
Hedef sistemde, izin verilen anahtar tanımı da tamamlandıktan sonra erişmek için aynı şekilde ssh yapmanız yeterli olacaktır. Sistem şifre sormak yerine, sizin özel anahtarınızı görecektir. Eğer dosyayı şifrelediyseniz, program şifre olmadan içeriğine erişemeyeceği için anahtarın şifresini soracaktır ve özel anahtarınza ulaşacaktır. Karşı sistem sadece özel anahtara sahip olan birisinin çözebileceği rastgele bir soru soracaktır. Özel anahtara sahip olan ssh programı, bu bilgiyi kullanarak problemin cevabını hesaplayıp cevap dönecektir. Bu şekilde hedef sistemde tanımlanan genel anahtarın sahibi olduğunu ispatlayıp sisteme giriş sağlayacaktır. Dikkat edilmesi gereken bir konu, SSH programı bu özel anahtarı o anlığına görebildiği için, o an için sistemde çalışan programların, özel anahtarın açıldığı andaki veriye erişememeleri de güvenlik açısından dikkate alınması gereken önemli bir konudur.
Sonsöz
Özet olarak, şifre gibi simetrik bir sistemde iki taraf tarafından ortak paylaşılan bir gizli bilgi olduğu için, bu bilginin korunması her iki tarafın sorumluluğunda iken asimetrik sistemde bu bilginin korunması görevi tek kişiye indirgenmiş olur. Simetrik sistemde her bir karşı taraf için ayrı bir gizli bilgi tanımlanması mecburidir. Asimetrik sistemde gizli bilgi sadece bir kişide olduğu için ve taraflara paylaşılan genel anahtarın herkesle paylaşılabilecek bir bilgi olması sebebiyle, aynı anahtar rahatlıkla birden fazla sisteme erişmek için kullanılabilir. Dolayısıyla birden fazla sisteme erişim durumunda, birden fazla şifreye göre fazla esneklik sağlamaktadır. Aynı anahtarın, farklı farklı sistemlerde kullanıldığı bir senaryoda, özel anahtarın başkasının eline geçmesi durumunda, bu kişinin bütün sistemlere tek seferde erişebilmesi söz konusudur. Bunun için ayrıştırılmak istenen sistemler için farklı anahtarlar oluşturulabilir.
Özel anahtarın, mevcut erişen sistemden ayrıştırılması için TPM, SmartCard gibi uygulamalar kullanılabilir. Böyle bir sistemde özel anahtar özel bir donanım içinde oluşturulur ve bu özel donanım bu anahtarı dış dünya ile hiçbir şekilde paylaşmaz. Donanım, sadece ürettiği özel anahtara ait genel anahtarı paylaşır. Bu genel anahtarın ispatı için sorulan sorulara donanımın kendisi cevap verir. Bu sayede ana sistemde hiç birşekilde özel anahtar açılmayacağı için, o sistemde çalışan programların özel veriye erişme ihtimali sıfırlanmış olur.
YubiKey gibi donanım anahtarları yeni oluşturulan FIDO2 standardını desteklemektedir. FIDO2 standardı Linux sistemlerde OpenSSH 8.1p1 Windows sistemlerde OpenSSH 8.9.1.0p1 versiyonlarında entegre edilmiş olup, bunu kullanabilmek için mevcut sistemlerin güncellenmesi gerekebilir. Zaman içinde FIDO2 standardı oluştuğunda, yukarıdaki anlatılan süreç daha kolaylaşacaktır. Erişmek için YubiKey veya TPM takılı sistemde Windows Hello gibi sistemler yeterli olacaktır. Bunun için yukarıda anlatılan yöntemden farklı parametrelerle kurulum yapılmaktadır.
Comments