| Debian Gnu/Linux ile Sistem Kullanıcısına Ait Şifreleme İşlemleri
Giriş : Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan -son sürümdeki- lisans içeriğine bağlı kalmak koşulu ile aynen ya da kısmen dağıtılabilir, yayınlanabilir. Bu belgenin son sürümüne; http://www.serdaraytekin.com/docs/os/debian/debian-shadow-password.html adresinden ulaşabilirsiniz. Kullanıcı Parolalarının Shadow Dosyasındaki Yapısı Kullanıcı parolaları crypt(3) olarak bilinen şifreleme yönteminin glibc2 ile birlikte gelen versiyonu ile oluşturulmaktadır. Bu fonksiyon MD5-tabanlı olarak maksimum 34 karakterlik bir şifre üretir. Üretilen karakter katarı $1$ ile başlar ve bundan sonra gelebilecek maksimum 8 karakterlik kısımda da salt değeri yer alır. Salt değeri $ ile son bularak daha sonra gelen 22 karakter ile katar tamamlanır. Biraz daha net ifade etmeye çalışırsak katarın yapısı şu şekildedir; $1$<maksimum_sekiz_karakterlik_salt_değeri>$<yirmi_iki_karakterlik_kullanıcı_parolası> Burada salt değeri katar içindeki en can alıcı kısımdır. Debian Gnu/Linux üzerinden adduser ile kullanıcı eklerken veya passwd komutu ile parola belirlerken ilgili kullanıcının parolasının nasıl oluşturulduğuna adım adım bakalım.
"adduser" ve "passwd" komutu ile örnek : Sistemde "adduser" komutu ile sisteme bir kullanıcı ekleyip parolasını da "serdar" olarak ayarlayalım. /etc/shadow için üretilen şifre aşağıdaki şekilde; $1$Gc7mWBBa$PYrsBDL3/gFMa3wYtbu6U/ Görüldüğü üzere $1$ ile başlayıp 8 karakterlik salt değerinden (Gc7mWBBa) sonra yine $ ile salt değeri sonlanıp kullanıcısın şifresinin yer aldığı 22 karakterlik katar (PYrsBDL3/gFMa3wYtbu6U/) yer alıyor. Şimdide aynı kullanıcının parolasını "passwd" komutu ile yine "serdar" olarak ayarlalım. $1$jx6BHZZi$08n4VS6lVGusgcOIBW26w0 Evet görüldüğü üzere yine yapı olarak yukarıdaki sonucun aynısı ancak dikkat edilmesi gereken nokta "serdar" olarak ayarlanan şifreler için rastgele zamanda oluşturulan salt değerine bağlı olarak farklı katarlar üretilmesi. Salt Değerinin Uzunluğu Ne Kadar Olmalı? Salt değeri 1 ile 8 karakter arasında olabilir. Ancak yukarıda da belirttiğimiz gibi Debian/Gnu Linux üzerinde sistem kullanıcısı şifrelerinde öntanımlı olarak 8 karakterlik salt değeri kullanılır. Bu değerinde maksimum olması en iyi durumdur zaten. Kullanıcı şifresi için ayrılan kısımda 22 karakter olarak standart değerdir. Bu durumda katarın uzunluğunu salt değerinin uzunluğu belirlerki maksimum sal değeri ile bu uzunluk en fazla 34 karaktere ulaşabilir. "useradd" Komutu ile Otomatik Parola Belirleme : Kullanıcı parolalarının oluşturulumasında "useradd" komutu sistem yöneticileri için çok faydalı bir araçtır. Zira "useradd" komutu komut satırından parametre alıp işletecek şekilde dizayn edilmiş esnek ve kullanışlı bir yapıya sahiptir. Diyelimki sisteme 1000 tane kullanıcı açılacak ve bunlara parola belirlenecek. Bu işi nasıl yapmayı düşünüyorsunuz? desem heralde adduser komutu ile teker teker açarız demezsiniz. İşte özellikle böylesi durumlarda useradd komutunun esnekliği bizim için biçilmiş kaftan olacaktır. Aşağıda crypt fonksiyonunu kullanarak kullanıcılara otomatik parola belirleyebilen ve kullanıcı isimlerini bir dosya dan okuyup istenilen kullanıcı ismine göre sistemde o kullanıyıcı aktif edebilen perl betiği görüyorsunuz. Betiği Debian Gnu/Linux üzerinde kullanabilmek için öncelikle;
ile libcrypt-passwdmd5-perl paketini yüklememiz gerekli. Betik içersinde zaten gerekli açıklamalar mevcut. Siz aşağıdaki betiği inceleyip amacınıza daha uygun hale getirebilirsiniz.
Parolalar Sistem Tarafından Nasıl Doğrulanıyor? Hatırlarsanız parola olarak "serdar" girip 34 karakterlik bir katar elde etmiştik. Şimdi passwd komut ile bir kullanıcıya "serdar" parolasını atayayım ve sonucunu birlikte değerlendirelim. $1$y2eWZ0d9$OJeo9GmgHbj2OoWjr69Kh1 Evet salt değerimiz : y2eWZ0d9 Sistem kullanıcı parolasını doğrularken şu şekilde davranıyor;
Bunuda sınayabileceğimiz bie perl betiği aşağıda verilmiştir. Dilerseniz gerekli yerlerde ekrana gerekli değerleri ($salt, $old_password, $new_password gibi) print ederek yukarıdaki senaryonun gerçekleştirilmesini programsal olarakda görmüş olabilirsiniz. Parametre olarak <kullanıcı_adı>, <eski_parolası> ve <yeni_parolası> değerlerini alır.
|