Pardus Linux’ta /etc/pam.d/ Dizini (Pluggable Authentication Modules – Kimlik Doğrulamanın Kalbi)


1️⃣ PAM Nedir?

PAM (Pluggable Authentication Modules), Linux sistemlerde:

  • Kullanıcı kimlik doğrulama

  • Yetkilendirme

  • Oturum açma/kapatma

  • Parola politikaları

gibi süreçleri merkezi ve modüler bir şekilde yöneten altyapıdır.

📌 Pardus’ta;

  • Terminal

  • Grafik oturum (LightDM / GDM)

  • sudo

  • login, ssh

  • Samba / AD entegrasyonu

hepsi PAM üzerinden kontrol edilir.


2️⃣ /etc/pam.d/ Dizininin Amacı

Bu dizin, her servis için ayrı PAM kural dosyaları içerir.

ls /etc/pam.d/

Örnek çıktı:

login common-auth common-account common-password common-session sudo sshd lightdm passwd su

📌 Her dosya = Bir servis için kimlik doğrulama senaryosu


3️⃣ PAM Çalışma Mantığı (Çok Önemli)

Bir PAM kural satırı şu yapıdadır:

<type> <control> <module> [options]

🔹 Type (Tür)

TürAçıklama
authKimlik doğrulama
accountHesap geçerliliği
passwordParola değiştirme
sessionOturum işlemleri

🔹 Control (Kontrol Bayrağı)

BayrakAnlamı
requiredBaşarısızsa tüm işlem başarısız
requisiteAnında reddeder
sufficientBaşarılıysa devam etmez
optionalEtkisi yok denecek kadar az
[success=1 default=ignore]Gelişmiş kontrol

🔹 Module (Modül)

ModülGörev
pam_unix.soYerel kullanıcı
pam_sss.soSamba AD / LDAP
pam_pwquality.soParola kalitesi
pam_limits.soKaynak sınırları
pam_time.soSaat bazlı giriş
pam_access.soIP / kullanıcı kısıtı

4️⃣ En Önemli Dosyalar (Pardus)


📂 common-auth

Kimlik doğrulamanın merkezi

cat /etc/pam.d/common-auth

Örnek:

auth required pam_env.so auth sufficient pam_unix.so nullok auth sufficient pam_sss.so use_first_pass auth required pam_deny.so

🔍 Anlamı:

  • Önce yerel kullanıcı

  • Sonra Samba AD

  • Hiçbiri olmazsa → reddet

📌 ETAP 23 + Samba AD için kritik dosya


📂 common-account

➡ Hesap durumu kontrolü

account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_sss.so account required pam_permit.so

📌

  • Hesap kilitli mi?

  • Süresi dolmuş mu?

  • AD’den mi geliyor?


📂 common-password

➡ Parola politikası

password requisite pam_pwquality.so retry=3 minlen=10 dcredit=-1 ucredit=-1 password sufficient pam_unix.so sha512 shadow password sufficient pam_sss.so use_authtok password required pam_deny.so

📌 /etc/security/pwquality.conf ile birlikte çalışır.


📂 common-session

➡ Oturum açılış/kapanış işlemleri

session required pam_limits.so session required pam_unix.so session optional pam_sss.so

📌

  • Kullanıcı başına dosya sınırı

  • Bellek, işlem limiti

  • AD oturum kayıtları


5️⃣ Servise Özel Dosyalar


🔐 sudo

auth required pam_unix.so account required pam_unix.so session required pam_limits.so

📌 sudo yetkisi PAM üzerinden denetlenir.


🖥️ lightdm (ETAP Grafik Giriş)

auth required pam_env.so auth sufficient pam_unix.so auth sufficient pam_sss.so auth required pam_deny.so

📌 Öğretmen / öğrenci oturum ayrımı burada başlar.


🌐 sshd

auth required pam_sepermit.so auth required pam_sss.so

📌 Uzaktan erişim güvenliği


6️⃣ ETAP 23 için Örnek Senaryolar


🎓 Öğrenciler için:

  • Zayıf parola yasak

  • Gece girişleri kapat

  • Kaynak limiti kısıtlı

pam_pwquality.so
pam_time.so
pam_limits.so


👨‍🏫 Öğretmenler için:

  • Geniş yetki

  • Zaman kısıtı yok

  • sudo erişimi

➡ Grup bazlı PAM kuralı (AD entegrasyonu)


7️⃣ PAM Dosyaları Düzenlenirken DİKKAT ⚠️

❌ Yanlış bir PAM ayarı:

  • Sisteme hiç kimse giremez

  • Grafik giriş kilitlenir

  • SSH erişimi kapanabilir

🔐 Güvenli çalışma önerileri:

# Yedek al cp /etc/pam.d/common-auth /root/common-auth.bak
# Ayrı terminal açık tut
# Değişiklikten sonra test su - testuser

8️⃣ PAM – Samba AD – LeaderAhenk İlişkisi

BileşenGörev
PAMKimlik doğrulama
SSSDAD / LDAP arayüzü
Samba ADEtki alanı
LeaderAhenkMerkezi politika

📌 PAM olmadan AD çalışmaz.


9️⃣ Eğitimde Kullanım (Öğretmenler İçin)

Bu konuyu öğrencilere anlatırken:

  • Yetkilendirme mantığı

  • Merkezi güvenlik

  • Kurumsal sistemler

örnekleriyle anlatabilirsiniz.

“Windows Group Policy ne ise Linux’ta PAM + limits + access odur.”


🔚 Sonuç

/etc/pam.d/ dizini:

✔ Pardus’un güvenlik beyni
✔ AD entegrasyonunun temeli
✔ Okul ortamlarında kontrol + disiplin sağlar
✔ Yanlış yapılandırılırsa tam kilitlenme sebebidir

1) TSOMTAL için Hazır PAM Şablonu (SSSD tabanlı)

Kurulum paketleri (Pardus 23.x / Debian taban)

sudo apt update sudo apt install -y realmd adcli sssd sssd-tools libnss-sss libpam-sss oddjob oddjob-mkhomedir \ krb5-user packagekit

DNS / Saat senkronu (AD için kritik)

  • İstemcinin DNS’i AD DNS’i göstermeli (genelde DC’nin IP’si).

  • Saat farkı 5 dk’yı geçmesin:

sudo timedatectl set-ntp true

Etki alanına katılma

Örnek domain: tsomtal.com (senin önceki kurguya uygun)

sudo realm discover tsomtal.com sudo realm join tsomtal.com -U Administrator

SSSD ana dosya: /etc/sssd/sssd.conf

[sssd] services = nss, pam config_file_version = 2 domains = tsomtal.com [domain/tsomtal.com] id_provider = ad access_provider = ad # Kullanıcı adını "user" şeklinde kullanmak için: use_fully_qualified_names = False # Ev dizini ve shell: fallback_homedir = /home/%u default_shell = /bin/bash # AD şema / mapping: ldap_id_mapping = True # GPO’yu SSSD üzerinden zorlamayacaksan (LeaderAhenk/politika ile ayrı yönetiyorsan): ad_gpo_access_control = permissive # (İstersen: disabled / enforcing seçenekleri var) # Performans/uyumluluk: cache_credentials = True enumerate = False

Yetkiler:

sudo chmod 600 /etc/sssd/sssd.conf sudo systemctl enable --now sssd

NSS doğrulama

/etc/nsswitch.conf içinde şu satırlarda sss olmalı:

passwd: files sss group: files sss shadow: files sss

PAM “common-*” şablonu (Pardus’ta çoğunlukla include ile çalışır)

Aşağıdaki yaklaşım güvenli: önce yerel kullanıcı, sonra AD/SSSD, en sonda deny.

/etc/pam.d/common-auth

auth required pam_env.so auth [success=1 default=ignore] pam_unix.so nullok try_first_pass auth [success=1 default=ignore] pam_sss.so use_first_pass auth required pam_deny.so

/etc/pam.d/common-account

account required pam_unix.so account sufficient pam_localuser.so account [success=ok new_authtok_reqd=ok default=bad] pam_sss.so account required pam_permit.so

/etc/pam.d/common-password

(AD tarafında parola politikası zaten varsa genelde AD belirler; yine de yerel kullanıcı için kalite kuralı iyi olur.)

password requisite pam_pwquality.so retry=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 password [success=1 default=ignore] pam_unix.so sha512 shadow try_first_pass password sufficient pam_sss.so use_authtok password required pam_deny.so

/etc/pam.d/common-session

session required pam_limits.so session required pam_unix.so session optional pam_sss.so session required pam_mkhomedir.so skel=/etc/skel umask=0022

Not: pam_mkhomedir.so öğrencilerin/öğretmenlerin ilk girişte /home/kullanici oluşturmasını sağlar.


2) Öğrenci–Öğretmen Zaman Kısıtları (PAM Time)

Bu iş için en temiz çözüm: pam_time.so + /etc/security/time.conf
Kısıtları sadece login/sshd/lightdm gibi giriş servislerine uygula (sudo gibi şeyleri etkileme).

2.1) Zaman tablosu: /etc/security/time.conf

Örnek politika:

  • Öğretmen: 7/24

  • Öğrenci: Hafta içi 07:30–18:00 (örnek)

  • Yerel acil admin: 7/24 (örn. etapadmin)

# Hizmet;TTY;Kullanıcı/Grup;Zaman # Gruplar @grupadı şeklinde yazılır. # Öğretmenler her zaman: *;*;@ogretmen;Al0000-2400 # Yerel acil admin her zaman: *;*;etapadmin;Al0000-2400 # Öğrenciler sadece hafta içi: *;*;@ogrenci;Wk0730-1800 # (İstersen cumartesi izin ver) # *;*;@ogrenci;Sa0900-1300

@ogretmen ve @ogrenci grupları: AD’de güvenlik grubu olarak bulunmalı (ve SSSD üzerinden görünmeli).

2.2) pam_time’ı servislere ekle

Konsol girişi: /etc/pam.d/login

account bölümüne ekle:

account required pam_time.so

SSH: /etc/pam.d/sshd

account bölümüne ekle:

account required pam_time.so

Grafik giriş (ETAP’ta çoğunlukla LightDM): /etc/pam.d/lightdm

account bölümüne ekle:

account required pam_time.so

✅ Böylece zaman kısıtı sadece giriş anında devrede olur, sistemin diğer PAM akışlarını gereksiz bozmaz.


3) PAM + Samba AD Tam Entegrasyon Rehberi (SSSD ile)

Aşağıdaki kontrol listesiyle “tam entegrasyon” sorunsuz tamamlanır.

3.1) AD tarafı hazırlık (öneri)

  • AD’de OU yapın (örnek):

    • OU=TSOMTAL,DC=tsomtal,DC=com

    • OU=OGRETMENLER,...

    • OU=OGRENCILER,...

  • Gruplar:

    • ogretmen

    • ogrenci

    • (isteğe bağlı) etap_admin

3.2) İstemci doğrulama komutları

realm list getent passwd kullaniciadi getent group ogretmen id kullaniciadi sssctl domain-status tsomtal.com

3.3) Giriş testi

  • Öğretmen hesabı ile giriş (grafik/ssh)

  • Öğrenci hesabı ile giriş

  • Zaman dışında öğrenci girişinin reddedildiğini doğrula

3.4) Öğrencinin SSH ile girmesini tamamen kapatmak istersen (opsiyonel)

Zaman kısıtına ek olarak “SSH yasak” için pam_access çok pratiktir.

/etc/security/access.conf

# izin : kullanıcılar : kaynaklar + : @ogretmen : ALL + : etapadmin : ALL - : @ogrenci : ALL

/etc/pam.d/sshd içine ekle:

account required pam_access.so

3.5) Geri dönüş (kilitlenmeye karşı emniyet)

Değişikliklerden önce:

sudo cp -a /etc/pam.d /root/pam.d.backup.$(date +%F) sudo cp -a /etc/security /root/security.backup.$(date +%F)

Bir şey ters giderse TTY/tek kullanıcı modunda geri alırsın:

sudo rm -rf /etc/pam.d sudo cp -a /root/pam.d.backup.YYYY-MM-DD /etc/pam.d

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma