PAM (Eklenebilir Kimlik Kanıtlama Modülleri)
Önceki Kullanıcı Kimlik Kanıtlama NASIL Sonraki
PAM (Eklenebilir Kimlik Kanıtlama Modülleri)
Eklenebilir kimlik kanıtlama modülleri günümüzdeki tüm linux dağıtımlarında kimlik kanıtlamanın esasını oluşturur.
Neden
Linux'un eski güzel günlerinde su, passwd, login ya da xlock gibi bir program bir kullanıcının kimlik doğrulamasını yapmak istediğinde gerekli bilgiyi basitçe /etc/passwd dosyasından okurdu. Kullanıcının parolasını değiştirmek için /etc/passwd dosyasını düzenlemek yeterliydi. Bu basit ama beceriksiz yöntem sistem yöneticileri ve uygulama geliştiricilerini sorunlarla karşı karşıya bırakıyordu. MD5 şifreli ve gölgelenmiş parolalar popüler oldukça kullanıcı kimlik kanıtlamasına ihtiyaç duyan her programın doğru bilgiyi hangi yöntemle alacağını bilmesi gerekliliği ortaya çıktı. Kullanıcı kimlik kanıtlaması şemanızı değiştirmek isterseniz tüm programları yeniden derlemeniz gerekliydi. PAM bu karmaşayı kullanıcı bilgisinin nasıl saklandığından bağımsız olarak, programların kimlik kanıtlamasını şeffaf bir biçimde yapmalarına izin vererek ortadan kaldırdı.
Nedir
Linux-PAM projesinin amacı, ayrıcalık verme yazılımları ile güvenli ve uygun kimlik kanıtlama şemalarının gelişimini birbirinden ayırmaktır. Bu, uygulamaların kimlik kanıtlamasında kullanabilecekleri bir işlevler kütüphanesi sağlanarak gerçekleştirilir.
PAM sayesinde parolalarınızı /etc/passwd dosyasında veya Hong Kong'daki bir sunucuda tutmanız farketmez. Bir program kullanıcı kimlik kanıtlamasına ihtiyaç duyduğunda, PAM uygun kimlik kanıtlama şeması için gereken işlevleri içeren bir kütüphane sunar. Bu kütüphane dinamik olarak yüklendiği için kimlik kanıtlama şemasını değiştirmek için basitçe yapılandırma dosyasını düzenlemek yeterli olur.
Esneklik PAM'in en önemli güçlerinden birisidir. PAM belirli programların kullanıcı kimlik kanıtlaması yapamayacağı, sadece belirli kullanıcıların kimlik kanıtlaması yapabileceği, bazı programlar kimlik kanıtlaması yapmak istediğinde uyarı verecek şekilde ve hatta tüm kullanıcıları oturum açma ayrıcalıklarından mahrum bırakacak şekilde yapılandırılabilir. PAM'in modüler tasarımı kimlik denetimi üzerindeki bütün kontrolü elinize almanıza izin verir.
PAM destekleyen dağıtımlar
Neredeyse tüm tanınmış dağıtımlar bir süredir PAM destekliyorlar. Aşağıda PAM destekleyen dağıtımların bir kısmının listesi bulunmaktadır:
  • Redhat, 5.0 sürümünden itibaren
  • Mandrake, 5.2 sürümünden itibaren
  • Debian, 2.1 sürümünden itibaren (2.1 sürümde kısmi destek -- 2.2 sürümünde tam destek)
  • Caldera, 1.3 sürümünden itibaren
  • Turbolinux, 3.6 sürümünden itibaren
  • SuSE, 6.2 sürümünden itibaren
Bu liste tam olmadığı gibi hatalı da olabilir. Düzeltmelerinizi ve eklemelerinizi gönderirseniz memnun olurum.
PAM Kurulumu
Sıfırdan PAM kurulumu bu NASIL'ın kapsamını aşan uzun bir süreçtir. Eğer sisteminizde PAM kurulu değilse, büyük olasılıkla kullandığınız dağıtımın çok eski bir sürümünü kullanıyorsunuz. Dağıtımınızı güncellemeniz için başka nedenler de bulunmasına rağmen güncel bir dağıtım kullanmak yerine PAM kurulumunu kendiniz yapmak istiyorsanız kesinlikle benim yardımıma ihtiyacı olan birisi değilsiniz. Bu nedenlerle sisteminizde PAM kurulu olduğunu kabul edeceğim.
Nasıl
Yeterince konuştum, çalışma zamanı.
PAM yapılandırma dosyaları
PAM yapılandırma dosyaları /etc/pam.d/ dizininde bulunur. (Eğer sisteminizde /etc/pam.d/ dizini yoksa dert etmeyin, sıradaki bölümde ne yapacağınızı anlatacağım) Şimdi bu dizine geçelim ve neler olduğuna bakalım.
~$ cd /etc/pam.d
/etc/pam.d/$ ls
chfn  chsh    login   other   passwd  su      xlock
/etc/pam.d/$ 
Bu dizinin içerdiği dosyalar sisteminize neler kurduğunuza bağlı olarak üç aşağı beş yukarı böyledir. Ayrıntılar ne olursa olsun, sisteminizde kullanıcı kimlik kanıtlamasına ihtiyaç duyan her program için bir dosya görüyor olmalısınız. Tahmin ettiğiniz gibi her dosya bir program için PAM kimlik kanıtlaması yapılandırmasını içerir (other dosyası bir istisnadır, ondan birazdan bahsedeceğiz). Login için PAM yapılandırma dosyasının içeriğine bakalım (dosyanın içeriğini basitleştirdim):
/etc/pam.d/$ cat login
# PAM configuration for login
auth       requisite  pam_securetty.so
auth       required   pam_nologin.so
auth       required   pam_env.so
auth       required   pam_unix.so nullok
account    required   pam_unix.so
session    required   pam_unix.so
session    optional   pam_lastlog.so
password   required   pam_unix.so nullok obscure min=4 max=8
Dosyanın içeriğine geçmeden önce biraz bilgi vermem gerekir.
Ek bilgi
Okuyucuların küçük bir kısmı şöyle düşünüyor olmalı; “Olamaz! Sistemimde /etc/pam.d dizini yok! Yukarıdaki listenizde dağıtımımın PAM içerdiği söyleniyor ama bulamıyorum. PAM olmadan hayatım boş ve anlamsız! Ne yapabilirim?” Telaşlanmayın, herşey bitmiş değil. Dağıtımınızın PAM içerdiğini bildiğiniz halde /etc/pam.d/ dizini yoksa PAM yapılandırmanız /etc/pam.conf dosyasında saklanıyordur. Birçok dosya kullanmak yerine tüm PAM yapılandırması için tek bir dosya kullanılıyordur. Bu PAM yapılandırmasını biraz karmaşıklaştırır ama uygun ayarlamalar pam.conf yapılandırması bölümünde anlatılacaktır.
Yapılandırma sözdizimi
PAM yapılandırma dosyaları aşağıdaki sözdizimine sahiptir:
    tür   denetim   modul-yolu   modul-argümanları
Yukarıdaki örnekte login dosyası için verilen yapılandırma dosyasını kullanarak PAM yapılandırma sözdizimine bakalım:
tür
tür özelliği PAM'e bu modül için hangi tür kimlik kanıtlamasının kullanılacağını söyler. Aynı türden modüller “istiflenebilir”. PAM dört farklı tür tanır:
account
Kullanıcının servise erişmeye izni olup olmadığını, parolasının süresinin geçip geçmediğini tespit eder.
auth
Kullanıcının iddia ettiği kişi olup olmadığını denetler, bunu genellikle parola ile yapar ama örneğin biyometri gibi daha karmaşık yöntemler de kullanabilir.
password
Kullanıcının kimlik kanıtlaması için kullandığı şeyi değiştirmesi için bir mekanizma sağlar. Bu genellikle paroladır.
session
Kullanıcının kimlik kanıtlaması yapıldıktan sonra ve/veya önce yapılması gerekenler. Bunlar kullanıcının ev dizininin bağlanması/çözülmesi, açıp kapattığı oturumların kaydının tutulması ve kullanıcının kullanabileceği servislerin kısıtlanması gibi şeyler olabilir.
login yapılandırma dosyasında her tür için en az bir girdi olduğunu gördük. Bu program kullanıcıların oturum açmalarına izin verdiğinden (adından da anlaşıldığı gibi :), kimlik kanıtlamasının her türlüsüne erişebilmesinin gerekmesi anlaşılabilir bir şeydir.
denetim
denetim özelliği PAM'e bir modül kimlik kanıtlamasında başarısız olduğunda ne yapması gerektiğini söyler. PAM dört farklı denetim türü tanır:
requisite
Bu modül yoluyla kimlik kanıtlaması başarısız olursa kimlik kanıtlaması derhal reddedilir.
required
PAM kimlik kanıtlamasını reddetmeden önce bu servis için listelenmiş diğer modülleri çağırmaya devam etse de başarısızlık yine kimlik kanıtlamasının reddi ile sonuçlanır.
sufficient
Bu modül ile kimlik kanıtlaması başarılı olursa, PAM kimlik doğrulamasını daha önceki gerekli bir modülde başarısız olsa bile kabul edecektir.
optional
Bu modülün başarılı olması veya olmaması ancak bir servis için kendi türünde tek modül olması halinde önemlidir.
Login için yapılandırma dosyasında neredeyse tüm denetim türlerini gördük. En çok ihtiyaç duyulan modül pam_unix.so (temel kimlik kanıtlama modülü), zorunlu tek modül pam_securetty.so (kullanıcının güvenli konsola oturum açtığından emin olmayı sağlar) ve seçimlik tek modül pam_lastlog.so (kullanıcının en son açtığı oturum ile ilgili bilgileri getiren modül).
modül-yolu
PAM hangi modülü kullanacağını ve modülleri nerede bulacağını modül-yolu sayesinde bilir. Çoğu yapılandırma login örneğinde olduğu gibi sadece modülün adını içerir. Böyle durumlarda, PAM öntanımlı PAM modül dizinine bakar, bu normalde /usr/lib/security dizinidir. Bununla birlikte eğer linux dağıtımınız Dosyasistemi Hiyerarşisi Standardına (FHS) uygun ise PAM modülleri /lib/security dizininde bulunur.
modüle-argümanları
modüle-argümanları modüllerin parametreleridir. Her modülün kendi parametresi vardır. Örneğin bizim login yapılandırmasında “nulok” (pam_unix.so modülüne “null ok” parametresi gönderilmesi “boş” parolaların “geçerli” olduğu anlamındadır).
pam.conf yapılandırması
Eğer PAM yapılandırmanız /etc/pam.d/ dizini yerine /etc/pam.conf dosyasında saklanıyorsa PAM yapılandırma satırları biraz farklıdır. Her servisin kendi yapılandırma dosyası olması yerine tüm yapılandırmalar /etc/pam.conf dosyasında servisin adı ile başlayan satırlardan oluşur. Örneğin /etc/pam.d/login dosyasındaki aşağıdaki satır:
auth       required   pam_unix.so nulok
/etc/pam.conf dosyasında şu hale gelir:
login       auth       required   pam_unix.so nulok
Bu basit farklılıkların dışında, yapılandırmanın geri kalanında PAM sözdizimi uygulanır.
Daha fazla bilgi edinmek
PAM yapılandırması hakkında daha fazla bilgi edinmek ve bütün PAM modüllerinin teknik açıklamalarına ulaşmak için Linux-PAM Sistem Yöneticisinin Kılavuzu'nu kullanabilirsiniz. Bu kılavuz size PAM yapılandırması hakkındaki en güncel bilgileri sağlar.
Önceki Üst Ana Başlık Sonraki
Sisteminizde Kullanıcı Bilgileri Nasıl Saklanır Başlangıç Kullanıcı Kimlik Denetimini Güvenli Hale Getirmek
Bir Linux Kitaplığı Sayfası