Yazılarım‎ > ‎

RSA Authentication

31 Ara 2011 11:00 tarihinde Ugur ARPACI tarafından yayınlandı   [ 31 Ara 2011 14:27 güncellendi ]
    
    RSA ve DSA birer authentication protokolüdür. Uzaktaki bir makineye erişim için kullanılan SSH ( OpenSSH )
protokolü, RSA ve DSA ile entegre olarak çalışabilmektedir. Bu iki authentication protokolü, birbirini tamamlayan sayısal anahtarlardan oluşmaktadır. Birbirini tamamlayan bu anahtarlar makineler arası entegrasyonu sağlamaktadır. Bu iki protokolü kullanarak, ssh ile uzaktaki bir makineye  parola olmaksızın güvenli bir şekilde bağlanmak mümkündür.
   



  • RSA ve DSA protokolleri, public ve private key faktörlerine dayalı olarak çalışmaktadır.
  • Bağlantı sağlamak istediğimiz client' lara kendimizin oluşturduğu public key leri dağıtırız.
  • Bizim oluşturduğumuz ve dağıtımda bulunduğumuz  public key, sadece mesajları enkripte etmek için kullanılır.
  • Uzaktaki makine göndereceği mesajları bize, bizim gönderdiğimiz public key ile enkripte ederek gönderir. Biz de uzaktaki makine için, bu sürecin tam tersini yaparız. ( Uzaktaki makinenin public key ini alıp, mesajlarımızı enkripte ederiz )
  • Aldığımız şifrelenmiş mesajları, bizim private key imizi kullanarak kullanıma hazır hale getiririz. 
  • Bağlantı sağlayacağımız her sistem için birer public key-private key çifti yaratma zorunluluğumuz yoktur. Sadece bir tane anahtar çifti yaratıp, birkaç sistemte kullanmakta bir sakınca yoktur.


    Bağlantı kurulum aşamasında ilk gerçekleşen güvenlik adımı aşağıdaki gibidir:


    Uzaktaki makine ile aramıdaki bağlantı yaygın olarak yapılan man in the middle ile yada herhangi bir şekilde dinleniyor olsa bile ve mesajlar sniff edilse bile, mesajlar şifrelenmiş oldukları için kullanılacak durumda olmayacaklardır. Bu durum public key imiz için de geçerlidir. Public key imizi herkese dağıtabiliriz, ancak private key imizi güvenli bir yerde saklamak önemlidir.

    OpenSSH ile anahtar çifti yaratmak

  • OpenSSH ile anahtar çifti oluşturma işlemi ssh-keygen komutu ile yapılmaktadır.
  • Oluşturulan RSA anahtar çiftlerinin saklanmak istediği dosya yolunu giriyoruz. Anahtar dosyaları default olarak ~/.ssh klasörü altında tutulmaktadır.
  • Daha sonra, OpenSSH' ın sağlamış olduğu bir diğer güvenlik önlemi olan passphrase kelimemizi giriyoruz. Bu passphrase, bizim private key mizi enkripte edecektir. Böylelikle private key' imizi ele geçiren biri olsa bile, belirlediğimiz passphrase' i bilmeden kullanamaz.

  • Oluşturduğumuz public key i hedef bilgisayara, scp (secure copy komutu ile gönderiyoruz.)
    • scp ~/.ssh/public_key.pub kullanici_adi@hedefmakine:/home/kullanici_adi/.ssh
    • Kullanıcı adı, uzaktaki makinede yer alan (bizim login olmak istediğimiz kullanıcı adıdır.
  • Hedef bilgisayarda yapmamız gereken, client tan gelen public key i ~/.ssh/authorized_keys dosyasına eklemektir. Bu cat komutu ile rahatlıkla yapılabilinir. Eğer authorized_keys dosyası yok ise elle oluşturuyoruz.
  • Hedef bilgisayar bu işlem alternatif olarak şu şekilde yapılabilir:
    • /etc/ssh/<kullanici_adi>/  isimli olarak, her kullanıcı için bir klasör yaratıp, authorized_keys dosyası buraya taşınır.
    • Bu adımdan sonra, SSH a bu dosya yolunu belirtmemiz gerekmektedir. Bunu da /etc/ssh/sshd_config dosyası içerisinde yer alan   -  AuthorizedKeysFile %h/.ssh/authorized_keys                                                                                                                          + AuthorizedKeysFile /etc/ssh/%u/authorized_keys                                                                                                                   satırlardaki düzenlemeleri yaparak gerçekleştiriyoruz.
    • Dosya hakları ile aşağıdaki gibi bir değişiklik yapmamız gerekiyor.
      • sudo chmod 755 /etc/ssh/<kullanici_adi>/
      • sudo chmod 644 /etc/ssh/<kullanici_adi>/authorized_keys


      Tüm bu adımlardan sonra ssh kullanıcı_adı@host ile gerçekleşen bağlantılarda, bize şifre yerine passphrase sorulacak. Dolayısı ile, artık güvenlik sadece parola ile değil, passphrase ve private key ile ( bir yerine iki etmen kontrol ediliyor ) sağlanmaktadır. Passphrase i kötü ellere düşürsek bile, private key imiz sayesinde hesabımız güvenlik altında olacaktır.