5 Temmuz 2013 Cuma

SSH ile şifresiz login olma RSA Public key (2)


Merhabalar,

bir önceki yazımda SecureCRT ile oluşturduğum keylerin çalışmamasının sebebini öğrendim.

Yazının orgilan yeri :
http://www.ipsure.com/blog-tr/2010/ssh-public-key-rsa-ile-kimlik-denetimi-ve-ssh-tunneling-bolum-1/



İlk önce public-private anahtar çifti oluşturmalıyız. Bunun için aynı zamanda SSH sunucusuna bağlantı gerçekleştirirken yararlanacağımız SecureCRT terminal emulation yazılımını kullanacağız. Dilerseniz PuTTY gibi ücretsiz bir yazılımı da tercih edebilirsiniz.
Aşağıdaki gösterildiği şekilde anahtar oluşturma sihirbazını çalıştırarak public anahtar tipini RSA olarak seçiyoruz.



Private anahtarın sadece istemci tarafında bulundurulacak olması dolayısıyla her ne kadar bu anahtara ilişkin şifre belirleme işlemi opsiyonel olsada, özellikle private anahtarın kendisine izinsiz fiziksel erişim ve dolayısıyla da bu anahtarın erişim yetkisi bulunan sistemlere uzaktan erişim ihtimaline karşı güvenilirliğini sağlamak anlamında mutlaka bir şifre verilmesi ve bu şifre olmaksızın kullanılmasının önlenmesi son derece önemlidir. Bunun ötesinde özellikle ciddi uygulamalarda, verilecek olan şifrenin güvenilir şifre belirlemek için bilinen genel kriterler doğrultusunda; kullanıcı ismi, isim – soyad, doğum günü, adres /coğrafi lokasyon gibi kişisel bilgiler, sözlük kelimeleri, tekrarlama ve ardaşık karakterler içermeyen, rakam + sembol + büyük ve küçük harf kombinasyonu ile ve mümkün olduğunca yüksek entropy değerine sahip olacak uzunlukta (~ min. 12 karakter) seçilmesi önerilir.

Anahtar uzunluğumuzu 2048 bit olarak belirliyoruz.

Anahtarın oluşturulabilmesi için gereken rastlantısal girişi sağlayabilmek üzere ilk bar dolana dek mouse’umuzu pencere içerisinde rastgele hareket ettiriyor ve daha sonra anahtarın oluşturulması işleminin tamamlanmasını bekliyoruz.

SSH bağlantısı gerçekleştirmek istediğimiz sunucuda OpenSSH uygulaması çalışmakta ise anahtar formatını “OpenSSH Key format” olarak seçiyoruz ve anahtar çiftine verilecek isim ile birlikte kaydedileceği klasörü belirtiyoruz. Eğer format seçeneğinin bulunmadığı SecureCRT’nin eski bir versiyonunu (Ör: version 5.2) kullanmaktaysanız ya da bu uygulamayı gerçekleştirdiğiniz emulation yazılımı, oluşturulan anahtarları OpenSSH formatına çevirme özelliği içermiyorsa standart formatta anahtar oluşturarak dönüştürme işlemini SSH sunucusu üzerinde kendimiz manüel olarak gerçekleştirebiliriz. Bu ayrıntıya bir sonraki adımda, sunucu tarafındaki yapılandırmadan bahsederken değineceğim.

Sihirbaz yönergelerini tamamladığımızda anahtar çiftimiz belirtmiş olduğumuz lokasyona kaydedilmiş olacaktır. Şimdi sunucu tarafında gerçekleştirilmesi gereken yapılandırmaya geçebiliriz. Bunun için ilk önce public anahtarımız olan Identity.pub’ı güvenilir herhangi bir yöntemle sunucumuzdaki home klasörümüze transfer etmeliyiz. Alternatif olarak lokalde notepad ile açtığımız anahtar dosyası içeriğini sunucuda aynı isimle yaratacağımız dosya içerisine aşağıda gösterildiği şekilde manüel yapıştırabiliriz;

STANDART ANAHTAR FORMATINDA SADECE VURGULANAN ANAHTAR VERİSİ KISMINI:
---- BEGIN SSH2 PUBLIC KEY ----
Subject: Sezgin Bayrak
Comment: "sbayrak@SBMobile"
ModBitSize: 2048
AEQAB3NzsC1yc2EcA8ADAQABAA5BAQDJrOQ7BkfG9NuWqU4nAK6W5/UsDu6bLy8Y
g9IxfbE/lc7QjA9p9T8aGAG03JSLJWSr4rCflm8VUsqSkh24XxyWx5829OD3OVOO
1tbDQLaF84LefC5k6eLtOsBniLlh5DRoLx4YUZtzaeGHd5EWgINSDK22VCIonLTZ
r4h6dDmp6Gn3aHZkAP5mQwhi/lXV3Ys5BaefyVkulpXCbaprs/jOMw5TyWUrsm4S
4Gjluoxc/OIAD5Sc6UMTVgj438JxwVbDfgNbERAzvpe+sccTREqZ/Q9Z8hFqc1FB
u+G+OkstH0/ZVGxLxOfeAA6FpCvsYjCFe39cDFEoa4gJu/SLXDHJ
---- END SSH2 PUBLIC KEY ----

OPENSSH ANAHTAR FORMATINDA TAMAMINI:
ssh-rsa AEQAB3NzsC1yc2EcA8ADAQABAAABAQDGN9ZZl+LKRd7JYWmKsdh9cdnYYrljsFAw7LrM9y3puCsr3iOQBNQc74Ss316gXU9e/nQ2jl/6CI4t4f9UFXiR54scdJB5Ds4dDjsfCPOC/o9hBQ1wf
/U9GUmvLS1giV/Xd2KAYPle6KokcGGyadPkrZksjI8I88LB1gqD6IF560Qvr39risYdOZyPbGxVS9HFyDMjUKSJ9ZA3Kn10yn0yjno97kKPuZQFjjKUfkQrmTUXFPQitKW5VELICQ7Fge41t5u2vbnlB5
owChadRY4zBCO9/t05D1V4uIp2F6ItJimCN8mzA7H/mAwXkXKGRZ5eqLDXSUHO/VdiQ7vBFRBN sbayrak@SBMobile

kopyalayarak aşağıdaki komutla yapıştırma işlemini tamamlayın.
# cat > /home/user/Identity.pub
<anahtar verisini buraya yapıştırın>
^D (CTRL-D)

Ardından mevcut değil ise /home/user dizinimizde “.ssh” klasörü yaratarak public anahtarımızı, oluşturacağımız /home/user/.ssh/authorized_keys dosyasının sonuna eklemeliyiz. Diğer kullanıcıların anahtar datasına erişimini engellemek için ise gerekli ownership ve permission ayarlarını unutmamalıyız. Biz örnek user’ımızın wheel grubuna dahil olduğunu varsayarak bu grubu kullandık. Siz uygulamada grubu kullanıcınıza uygun şekilde değiştirin;

STANDART ANAHTAR FORMATINDA:

RFC 4716 Secure Shell (SSH) Public Key File formatındaki anahtarımızı, ssh-keygen komutunu kullanarak authorized_keys dosyasına OpenSSH formatına dönüştürerek ekleyeceğiz;
# cd /home/user/
# mkdir .ssh
# chown user:wheel .ssh
# chmod 700 .ssh
# ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
# chown user:wheel .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# rm Identity.pub

Notepad içerisinden manüel kopyalama ve yapıştırma metodunu tercih ettiyseniz salt anahtar verisi yerine yanlışlıkla fazladan karakter copy-paste ettiyseniz ya da anahtarı ftp ile sunucuya transfer ettikten sonra anahtar verisi haricinde kalan kısımları silmediyseniz yukarıda 4. satırda vurgulanan ssh-keygen komutu çalıştırdığınızda “input line too long.” hatasını alırsınız ki bu durumda sadece anahtar verisini kopyaladığınızdan emin olun.

OPENSSH ANAHTAR FORMATINDA:

Anahtarımız zaten OpenSSH formatında olduğu için authorized_keys dosyasına direk ekleyeceğiz.
# cd /home/user/
# mkdir .ssh
# chown user:wheel .ssh
# chmod 700 .ssh
# cat Identity.pub >> .ssh/authorized_keys
# chown user:wheel .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# rm Identity.pub

Şimdi OpenSSH sunucusunun konfigürasyon dosyasında birkaç değişiklik gerçekleştirerek sunucumuzun RSA public key kimlik doğrulamasına izin vermesini sağlayacağız. Daha sonra public key denetiminin çalıştığından emin olduktan sonra aynı dosya içerisinde şifre ile denetimi tamamen iptal edeceğiz. FreeBSD üzerinde söz konusu konfigürasyon dosyası /etc/ssh/sshd_config olup diğer *NIX türevlerinde /usr/local/etc/sshd_config vb. farklı dizinlerde bulunabilir. Dosya içerisinde ilgili parametreleri aşağıdaki şekilde değiştirin ve kaydedin;

RSAAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

Değişikliklerin devreye girmesi için sshd prosesini konumlandırın ve restart edin.

# ps aux | grep ssh
root    73467  0.0  0.1 25108  3864  ??  Is   11:30PM   0:00.00 /usr/sbin/sshd

# kill -HUP 73467

Sunucumuza SSH bağlantısı gerçekleştirmek ve bu bağlantıya ilişkin kimlik doğrulamasının yeni oluşturduğumuz public anahtar ile gerçekleştirilmesini sağlamak üzere SecureCRT’de yeni bir bağlantı oluşturarak Session Options içerisinde Authentication metodunu PublicKey olarak belirleyin ve özellikleri içerisinde yeni yaratmış olduğunuz Identity.pub anahtar lokasyonunu gösterin.

Hiç yorum yok:

Yorum Gönder