Linux Üzerinde Ssh-keygen Yapilandirmasi, Ayarları ve Kullanımı

Home » Linux » Linux Üzerinde Ssh-keygen Yapilandirmasi, Ayarları ve Kullanımı
Linux Yorum yapılmamış

Linux tabanlı sunuculara klavye etkileşimli oturum açma yöntemi olarak ssh kullanıyoruz. Fakat bağlantı yapılacak sunucu sayısı artınca haliyle 3party yazılımlar kullanıyoruz. Bu yazılımlar ne kadar güvenli, kullanılan bilgisayarımız ne kadar güvenli v.b. bir çok konu varki gerçekten güvenlik zafiyetinin başında gelen meselelerdir. Bunun yanı sıra örneğin 10 adet sunucumuz varsa bunların her biri için şifrelerini tutmak korumak ayrı bir mesele..

Fakat tüm bunları aşmak ve çok daha kolay kullanmak için “ssh key” adı verilen bir mekanizma mevcut. Bu mekanizma ile birlikte herhangi sunucu yada sunuculara şifresiz bağlantı sağlayarak aynı zamanda oluşabilecek bir takım güvenlik zafiyetlerininde önüne geçebiliyoruz.

Nasıl Çalışır,

Açık anahtar sistemi ile gizli/açık anahtar çiftene dayanır. Bu çift public/açık(genel) ve private/özel(gizli) olmak üzere ikiye ayrılır. Public/açık anahtar dış dünyaya dağıtılabilinen herkesin kullanabileceği şekilde kriptolanır. Private/özel anahtar ise yalnızca public anahtardaki kriptoyu çözebilen ve gizli olması nedeniyle paylaşılmaması gereken şifrelenmiş halidir.

Genel Mantığı,
Sunucu üzerinde oluşturulan public ve private anahtar çiftinin public olanı dış dünyadaki x bir sunucuya verilir. Public anahtarın verildiği x sunucu, private anahtarın tutulduğu ana sunucu ile kriptolanan verinin çözülmesi ile iletişimine izin verilerek veri alışverişi sağlanır. Yani public anahtara sahip “B” sunucusu, “A” sunucusuna bağlanırken her iki key’in private-public birbirlerini çözümlemesi ile erişime izin verilir. (Aslında basit bir anahtar-kilit mekanizması gibi)
Kurulum,
İlk olarak linux sunucular arasında ssh key mekanizmasını anlatacağım. Yani diyelimki 5 tane linux sunucumuz var ve bu sunucular arasında şifresiz dolaşmak istiyoruz, örneğin scp ile dosya bırakırken ikide bir şifre girmeyelim veya x sunucudan b sunucumuza ssh atarken sormasın gibi.. Bunun için yapılacaklar çok kolay ve fakat konuyu iyi anlamanızda fayda var.

Bu anlatımda yalnızca 2 sunucu arasında ssh key yapılandırmasını anlattım. Daha fazla sunucu için çoklu sunucuda ssh key yapılandırması yazımı inceleyebilirsiniz.

Örnek olarak 2 sunucumuz var bunların bilgileri aşağıdaki gibi,
Örnek kullanıcı salih
Kullanıcının home dizini–> /home/salih
1.sunucu –> A Sunucusu –> IP’si 192.168.1.1
2.sunucu –> B Sunucusu –> IP’si 192.168.1.2

Önemli Not: Hangi kullanıcı ile login durumda iseniz “ssh-keygen” komutu o kullanıcı için algılanarak işlem yapar. Ben Salih kullanıcısı ile login durumdayız ve öyle işlem yapıyorum.

############################ 1. Sunucu (A Sunucusu) üzerinde #############################
– Önce 1. sunucumuza (A Sunucusu) gelelim şifreli bağlantıyı kurmak istediğimiz kullanıcının home path’ine gelelim. Yani,

– Kullanıcımızın home dizinine geldiğimize göre sihirli komutumuzu verelim.

Yukarıdaki komutumuz ile defaultda rsa şifreleme metodu ile public ve private anahtar çifti /home/salih kullanıcısının dizini altında yeni bir .ssh dizini yaratarak içerisine oluşturdu.

id_dsa –> Oluşturulan private key (Önemlidir saklanması ve paylaşılmaması gerekir!)
id_dsa.pub –> Oluşturulan public key

Şimdi bu oluşturduğumuz anahtar çiftindeki id_dsa.pub isimli public anahtarımızı Diğer “B sunucusuna” kopyalayalım. Anahtar çiftini oluşturduğumuz 1. “A” Sunucusu içerisinde,

Önce yetkilendirme işlemlerini yapalım ve kontrol edelim,

a-sunucusu-keyi dosyasını ilk olarak “B Sunucusuna” kopyalayalım,

Not: Scp ile dosyaları atarken [email protected]: şeklinde verdim. Tam path/dizin için kendinize göre uyarlayabilirsiniz. Örneğin karşı taraftada salih kullanıcım ve dizinim olduğunu varsaydığımda,

############################ 2. Sunucu (B Sunucusu) üzerinde #############################

Şimdi 2. sunucumuza ssh ile login olalım ve A sunucusundaki yaptığımız işlemleri tekrarlayalım.

– 2. sunucumuzda ssh ile login olduğumuzda kullanıcının dizinine(home path’i) gidelim,

– Kullanıcımızın home dizinine geldiğimize göre sihirli komutumuzu verelim.

– Keylerimizin oluştuğuna göre şimdi kontrol edelim ve yetkilendirmelerini yapalım,

b-sunucusu-keyi dosyasını ilk olarak “A Sunucusuna” kopyalayalım,

 Buraya kadar yaptıklarımızı özetleyelim,

Her iki sunucu üzerinde de ssh-keygen komutu ile anahtar çiftlerini oluşturduk, yetki-izin ayarlarını yaptık, kontrol ettik ve public key dosyasının (id_rsa.pub) adını değiştirerek scp ile karşı sunucuya transfer ettik.

(Dosyanın adını değiştirme sebebim ise karşı sunucuya transfer ettiğimiz zaman orada da aynı isimde dosya olacağından üstüne yazacaktır. Bunu istemiyoruz çünkü her iki dosyada da farklı key bilgileri mevcut.)

Şimdi her iki sunucu üzerinde /home/salih dizinine kopyaladığımız public key’leri .ssh/ dizinlerine taşıyacağız, burada authorized_keys dosyası içerisine uyarlayacağız ve işlemimiz bitecek.
1. Sunucu üzerinde,
Önce karşı sunucudan transfer edilen public key’in bulunduğu dizine gidelim kontrol edelim,

Key’imiz yerinde duruyor, şimdi onu kullanıcının home path’indeki .ssh/ dizinine taşıyalım.

Key’i taşıdıktan sonra içeriğini authorized_keys dosyasına uyarlayalım ve eski dosyamızı silelim.

———————————————————————-

2. Sunucu üzerinde,
Önce karşı sunucudan transfer edilen public key’in bulunduğu dizine gidelim kontrol edelim,

Key’imiz yerinde duruyor, şimdi onu kullanıcının home path’indeki .ssh/ dizinine taşıyalım.

Key’i taşıdıktan sonra içeriğini authorized_keys dosyasına uyarlayalım ve eski dosyamızı silelim.

Bu kadar..
Artık Tamam ! Her iki sunucu üzerinde ssh-key authentication ile şifresiz konuşturabiliyoruz. Hemen her iki sunucu üzerinde test edebilirsiniz,

Yaptıklarımızı Özetleyelim,
Hem “A sunucumuz” hemde “B sunucumuz” üzerinde ssh-keygen komutumuzla 2’şer key (public ve private) oluşturduk. Oluşturduğumuz keylerden public olanı (id_rsa.pub) ismini değiştirerek, karşılıklı olarak birbirleri arasında .ssh/ dizinlerine kopyaladık ve authorized_keys dosyasına uyarladık..

##################################################################################

Diyelimki elinizdeki public key dosyasını yanlışlıkla sildiniz yada kaybettiniz peki ne olacak ?
Cevabı elbette oldukça basit. Private key yani gizli/özel anahtarımız üzerinde tekrar public anahtar üretmemiz mümkün. Bunun için aşağıdaki komutu kullanabilirsiniz. Bu komut ile alınacak çıktı sizin için

Yukarıdaki sonucu kopyalamanız yeterli. Bunu bir dosyaya yazdırmak isterseniz,

 ##################################################################################

ssh anahtar çifti oluştururken parola koydunuz ve bu parolayı unuttunuz, oluşturmak yada değiştirmek istiyorsunuz diyelim. Bunun için de aşağıdaki komutumuzu kullanabilirsiniz,

 ##################################################################################

Not: Default olarak “ssh keygen” komutu herhangi parametresiz verildiği zaman 2048 bit RSA olarak oluşturmaktadır. Fakat DSA modeli ile oluşturulmak istenirse aşağıdaki komut yeterlidir. DSA ile şifreleme modelinde maksimum bit 1024’dür

Hazır nota başlamışken ssh-keygen ile kullanılabilecek parametreleride kısaca açıklayayım,

Öncelikle ilgili link,
http://en.wikipedia.org/wiki/Ssh-keygen

ssh-keygen [options]

-b –> Anahtar oluşturmak için bit sayısını belirtir. Minimum 768 maksimum ve varsayılan 2048 bit’tir.
-C –> Yeni yorum eklenmesini sağlar.
-p –> Private/özel anahtara ait passphrase/parola oluşturmak/değiştirmek için kullanılır.
-t –> Anahtar türü belirtmek için kullanılır. (dsa veya rsa) ## defaultda rsa için belirtmeye gerek yoktur.
-q –> Yeni bir anahtar oluştururken /etc/rc tarafından kullanılır.
DSA ve RSA şifreleme yöntemleri ile ilgili ayrıntılı bilgilere aşağıdaki linkler üzerinden erişebilirsiniz.

DSA için,
http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

RSA için,
http://en.wikipedia.org/wiki/RSA_(cryptosystem)