Sisteminizde Kullanıcı Bilgileri Nasıl Saklanır

/etc/passwd

Neredeyse tüm Linux dağıtımlarında (ve ticari *nix'lerde) kullanıcı bilgisi /etc/passwd dosyasında saklanır. Bu metin dosyasında kullanıcının kullanıcı adı, şifrelenmiş parolası, benzersiz sayısal kullanıcı kimliği (uid), sayısal grup kimliği (gid), seçimlik yorum alanı (burada genellikle kullanıcının gerçek adı, telefon numarası gibi bilgiler bulunur), ev dizini ve tercih ettiği kabuk bilgileri bulunur. /etc/passwd dosyasındaki girdiler aşağıdaki gibidir:

pete:K3xcO1Qnx8LFN:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash

Gördüğünüz gibi anlaşılması oldukça kolaydır. Her girdi için yukarıda anlatılan altı alan vardır ve alanlar birbirinden : ile ayrılırlar. Kullanıcı kimlik denetimi sadece bu kadar karışık olsaydı bu NASIL belgesine ihtiyaç olmazdı.

Gölgelenmiş Parolalar

Sisteminizdeki /etc/passwd dosyasına bakarsanız aşağıdakine benzer olduğunu görürsünüz :

pete:x:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash

Şifrelenmiş parola nereye gitti? Buna yanıt vermeden önce biraz açıklama yapmak gerekiyor.

Kullanıcılar hakkındaki, şifrelenmiş parolaları dahil, tüm bilgilerin tutulduğu /etc/passwd dosyası tüm kullanıcılar tarafından okunabildiğinden herhangi bir kullanıcı sistemdeki tüm kullanıcıların şifrelenmiş parolalarını elde edebilir. Parolalar şifrelenmiş olsalar bile parola-kırma programları yaygın olarak bulunmaktadır. Bu güvenlik tehditiyle mücadele edebilmek için gölgelenmiş parolalar geliştirilmiştir.

Bir sistemde gölgelenmiş parolalar aktif edildiğinde /etc/passwd dosyasındaki parola alanına x yazılır ve kullanıcının gerçek şifrelenmiş parolası /etc/shadow dosyasında saklanır. /etc/shadow dosyası sadece root tarafından okunabildiği için kötü niyetli kullanıcılar başkalarının parolalarını kıramazlar. /etc/shadow dosyası her girdi için kullanıcı adı, şifrelenmiş parola ve parolanın geçerliliği ile ilgili bir kaç alan içerir. Örnek bir girdi aşağıdaki gibidir:

pete:/3GJllg1o4152:11009:0:99999:7:::

/etc/group ve /etc/gshadow

Grup bilgisi /etc/group dosyasında saklanır. Dosya biçimi /etc/passwd'e benzer. Her girdi için grup adı, parolası, grup numarası (gid) ve birbirinden virgülle ayrılmış grup üyelerinin yeraldığı alanlar bulunur. /etc/group içindeki bir girdi aşağıdaki gibidir:

pasta:x:103:spagetti,fettucini,linguine,vermicelli

Parola alanındaki ←x→ ifadesinden anlaşıldığı gibi grup parolaları da gölgelenebilir. Neredeyse hiçbir grub'un parolası olmasa da gölgelenmiş grup parolalarının /etc/gshadow dosyasında saklandığını hatırlatmakta fayda var.

MD5 şifrelenmiş parolalar

Geleneksel olarak Unix parolaları crypt() fonksiyonu kullanılarak şifrelenir. (crypt() fonksiyonu hakkında daha fazla bilgi almak için crypt(3) kılavuz dosyasını okuyabilirsiniz.) Bilgisayarların hızlı gelişimi bu fonksiyonla şifrelenmiş parolaların kolayca kırılabilir hale gelmesine yol açtı. Internet'in ortaya çıkmasıyla parola-kırma görevini çoklu düğümlere dağıtabilmek mümkün hale geldi. Bir çok 'güncel' dağıtım parolaların daha güçlü MD5 hash algoritmasıyla şifrelenebilmesi seçeneğiyle gelmektedir (MD5 hash algoritmasıyla ilgili detaylı bilgi RFC 1321 adresinden alınabilir). MD5 parolalar kullanarak parola-kırmanın tamamen önüne geçilemese bile oldukça zorlaştırılır.

Karışıklığı önlemek

Gördüğünüz gibi sisteminizde kullanıcı kimlik kanıtlamasında kullanılacak bilgileri saklamak için farklı yöntemler mevcuttur (MD5 şifrelemesi olmadan gölgelenmiş parolalar, parolaların MD5 ile şifrelenip /etc/passwd dosyasında saklanması, vs.). login veya su gibi programlar parolaları nasıl doğrulayacaklarını nereden biliyorlar? Daha kötüsü, sisteminizde parolaların saklanma biçimini değiştirirseniz ne olur? Parolanıza ihtiyaç duyan programlar parolaların artık farklı biçimde saklandığını nasıl bilecekler? Bu soruların yanıtı bizi PAM'e götürür.