Tümünü birden denemek

Bu bölümde bir önceki bölümde anlatılanların anlaşılmasına yardımcı olacak basit bir örnek vereceğim.

Apache + mod_auth_pam

Örneğimizde PAM kullanarak web sunucunuzun kullanıcılarının kimlik denetimini yapmak üzere bir Apache modülü olan mod_auth_pam'i kurup yapılandıracağız. Örneğin hedefine ulaşabilmesi için kurulu bir Apache'niz olduğunu kabul edeceğim. Eğer kurulu değilse dağıtımınızın kurulum paketlerinden yararlanabilirsiniz.

Örnek

Kullanıcılarımızın kimlik denetimini PAM ile yapabilmek için hedefimiz web sunucumuzda kısıtlı bir aile/ dizini yapılandırmak olacak. Bu dizin özel aile bilgileri içerecek ve sadece aile grubu üyeleri tarafından erişilebilir olacak.

mod_auth_pam kurulumu

İlk olarak mod_auth_pam paketini indirmek isteyeceksiniz. Aşağıdaki komutlarla (root olarak) mod_auth_pam derlenebilir:

~# tar xzf mod_auth_pam.tar.gz
~# cd mod_auth_pam-1.0a
~/mod_auth_pam-1.0a# make
~/mod_auth_pam-1.0a# make install

mod_auth_pam modülünü yüklerken bir hata ile karşılaşırsanız dağıtımınızın apache-dev paketini kurup kurmadığınızı kontrol edin. mod_auth_pam kurulduktan sonra apache'yi yeniden başlatmanız gerekir. Bunu aşağıdaki komutla (yine root olarak) yapabilirsiniz:

~# /etc/init.d/apache restart

PAM Yapılandırması

Apache için PAM yapılandırması /etc/pam.d/httpd dizininde saklanır. Öntanımlı yapılandırma (mod_auth_pam kurulumunda yapılan yapılandırma) güvenlidir ama birçok sistemde kurulu olmayabilen pam_pwdb.so modülünü kullanır. (Ayrıca, sıfırdan yapılandırmak eğlencelidir!) Bu nedenle /etc/pam.d/httpd dosyasını silin ve yeni bir tanesiyle başlayın.

PAM'in nasıl yapılandırılacağına karar vermek

Eğer PAM Apache'nin kimlik kanıtlama isteklerine yanıt verecek şekilde yapılandırılacaksa PAM'in tam olarak neyi kontrol etmesine ihtiyacımız olduğunu bilmeliyiz. İlk olarak PAM kullanıcının parolasının standart unix parola veritabanındaki parola ile aynı olup olmadığını kontrol etmelidir. Bu 'auth' türüne ve pam_unix.so modülüne benzer. Modülün kontrol türünü 'required' olarak atayacağız. Bu sayede doğru parola girilmez ise kimlik denetimi başarısız olacaktır. /etc/pam.d/httpd dosyamızın ilk satırı aşağıdaki gibi olmalıdır:

auth       required        pam_unix.so

İkinci olarak, kullanıcı hesabının geçerli olduğundan (yani parolasının süresinin geçmediğinden veya bunun gibi bir uyumsuzluk olmadığından) emin olmalıyız. Bu 'account' türüdür ve pam_unix.so modülü ile sağlanır. Yine bu modülün kontrol türünü 'required' olarak atayacağız. Bu satırı da ekledikten sonra /etc/pam.d/httpd yapılandırma dosyamız aşağıdaki hale gelir:

auth       required        pam_unix.so
account    required        pam_unix.so

Çok karışık değildir ama görevini yapar. PAM servislerini nasıl yapılandıracağınızı öğrenmek için iyi bir başlangıç olabilir.

Apache'nin Yapılandırılması

Artık PAM apache isteklerinin kimlik denetimini yapacak şekilde yapılandırıldı. Bundan sonra apache'yi aile/ dizinine erişimi kısıtlaması için PAM kimlik kanıtlamasını kullanacak şekilde yapılandıracağız. Bunu yapabilmek için, aşağıdaki satırları httpd.conf dosyanıza (genellikle /etc/apache/ ya da /etc/httpd dizininde bulunur) ekleyin:

<Directory /var/www/family>
AuthPAM_Enabled on
AllowOverride None
AuthName "Aile Sirlari"
AuthType "basic"
require group aile
</Directory>

/var/www/ ifadesini web sunucunuzun kök dizini ile değiştirmelisiniz. Bu dizin bazen /home/httpd/ olabilmektedir. Her nerede olursa olsun, aile dizinini oluşturmalısınız.

Kurulumu denetlemeden önce Apache yapılandırmasına yukarıda eklediklerinizi açıklayayım. <Directory> ifadesi yapılandırmanın sadece bu dizin için geçerli olması için kullanılır. Bu ifadenin içinde PAM kimlik denetimini etkinleştirdik (←AuthPAM_enabled on→), başka bir yapılandırmanın önceliği olmasını engelledik (←AllowOverride none→), bu kimlik denetim alanını ←Aile Sirlari→ olarak adlandırdık (←AuthName 'Aile Sirlari'→), http kimlik kanıtlamasını (PAM değil) öntanımlı olarak atadık (←AuthType 'basic'→) ve gerekli kullanıcı grubu olarak aile'yi atadık (←require group aile→).

Kurulumun Denetlenmesi

Herşeyi gerektiği gibi kurduk, artık kutlama zamanıdır. Tercih ettiğiniz web tarayıcısını çalıştırın ve http://sizin-alaniniz/aile/ adresini (sizin-alaniniz yerine alanınızın adını yazın) açın. Tebrikler, başardınız!