Debian Stable ile Active Directory Yönetimi

Sistem yöneticiliğinde en tartışmalı kararlardan biri hangi Linux dağıtımını kullanacağınıza karar vermektir. Özellikle kurumsal ortamlarda bu karar sadece teknik bir tercih değil, aynı zamanda uzun vadeli bir taahhüttür. Debian Stable tam da bu noktada öne çıkıyor: Değişmez, öngörülebilir ve son derece güvenilir bir temel sunuyor. Peki ya Windows Server altyapısıyla birlikte çalışmak, Active Directory ortamlarını yönetmek? İşte burada işler ilginçleşiyor. Bu yazıda Debian Stable’ı bir sysadmin gözüyle inceleyecek, gerçek dünya senaryolarıyla neden bu dağıtımın hala birinci tercih olduğunu anlatacağım.

Debian Stable Nedir, Neden Hala Önemlidir?

Debian’ın “Stable” dalı, adından da anlaşılacağı üzere kararlılık üzerine inşa edilmiştir. Her yeni sürüm (şu an Debian 12 “Bookworm”) yıllarca kapsamlı testlerden geçer. Paketler güncel olmayabilir ama çalışır. Bir üretim ortamında sunucunuzun altından halı çekilmesini istemiyorsanız bu özellik paha biçilemez.

Debian Stable’ın güncelleme döngüsü yaklaşık iki yılda bir major release üretir. Bu süre zarfında güvenlik yamaları ve kritik hata düzeltmeleri backport mekanizmasıyla gelir. Yani hem güvenli kalırsınız hem de sisteminiz ani sürprizlerle karşılaşmaz.

Kurumsal sysadmin olarak şunu net söyleyeyim: Ubuntu LTS’in altında zaten Debian var. Red Hat tabanlı dağıtımların aksine Debian, topluluk odaklı kalmayı başarmış nadir dağıtımlardan biri. Bu da destek alacağınız belge ve forum kalitesinin tutarlı olduğu anlamına gelir.

Kurulum ve Temel Yapılandırma

Debian Stable kurulumu son derece sade. Minimal kurulum yapıp üstüne ihtiyacınız olanı eklemek her zaman daha sağlıklıdır.

# Kurulum sonrasi ilk yapilacaklar - sudo kurulumu
apt update && apt upgrade -y
apt install sudo vim curl wget net-tools -y

# Kullaniciya sudo yetkisi verme
usermod -aG sudo kullaniciadi

# SSH servisini kontrol etme
systemctl status ssh
systemctl enable ssh

Kurulumdan hemen sonra /etc/apt/sources.list dosyasını kontrol etmelisiniz. Bazı kurulumlarda contrib ve non-free repoları kapalı gelir.

# sources.list duzenleme
nano /etc/apt/sources.list

# Asagidaki gibi olmali (Bookworm icin):
# deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
# deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

Sonrasında sistemi güncel tutmak için unattended-upgrades paketi kurumsal ortamın vazgeçilmezi olmalıdır:

apt install unattended-upgrades apt-listchanges -y
dpkg-reconfigure -plow unattended-upgrades

Active Directory Ortamında Debian: Gerçek Dünya Senaryosu

Şimdi işin et ve kemik kısmına geliyoruz. Pek çok kurumda Windows Server tabanlı Active Directory (AD) altyapısı hala baskın. Finans, sağlık, kamu sektörü… Hepsinde benzer bir tablo görüyorsunuz: Domain controller Windows Server, ama file server, web server veya monitoring sunucuları Linux. Bu hibrit ortamda Debian makinenizi AD’ye dahil etmek ve yönetmek kritik bir beceri.

SSSD ve Realmd ile Domain’e Katılım

En temiz yöntem realmd ve sssd kombinasyonunu kullanmak. Bu ikili sayesinde Debian makineniz AD kullanıcılarıyla oturum açabilir, grup politikaları uygulanabilir hale gelir.

# Gerekli paketleri kur
apt install realmd sssd sssd-tools sssd-ad adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y

# DNS'in dogru calistigini kontrol et (AD domain'in cozumlenebilmeli)
nslookup DOMAIN_ADINIZ.local

# Domain discovery
realm discover DOMAIN_ADINIZ.local

# Domain'e katil
realm join --user=Administrator DOMAIN_ADINIZ.local

Katılım başarılı olduktan sonra /etc/sssd/sssd.conf dosyasını yapılandırmanız gerekiyor. Bu dosya çoğu zaman otomatik oluşur ama üzerine elle dokunmak gerekebilir:

# sssd.conf ornegi
cat /etc/sssd/sssd.conf

[sssd]
domains = DOMAIN_ADINIZ.local
config_file_version = 2
services = nss, pam

[domain/DOMAIN_ADINIZ.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = DOMAIN_ADINIZ.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = DOMAIN_ADINIZ.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad

Dosyayı düzenledikten sonra:

# Izinleri duzelt (sssd bu dosyayi 600 istiyor)
chmod 600 /etc/sssd/sssd.conf
systemctl restart sssd
systemctl enable sssd

# Test
id kullanici@DOMAIN_ADINIZ.local

PAM Yapılandırması ve Home Dizini Otomatik Oluşturma

Domain kullanıcıları ilk giriş yaptığında home dizinleri otomatik oluşturulmalı. Bunun için pam-auth-update kullanıyoruz:

# oddjobd servisini baslat
systemctl enable oddjobd
systemctl start oddjobd

# pam-auth-update ile mkhomedir aktif et
pam-auth-update --enable mkhomedir

Bu noktada /etc/pam.d/common-session dosyasında şu satırın olduğunu doğrulayın:

session optional pam_mkhomedir.so skel=/etc/skel umask=077

Sudo Yetkilerini AD Gruplarıyla Yönetmek

Kurumsal ortamda en sık karşılaşılan ihtiyaçlardan biri: “Linux sunucularına sadece belirli AD grubu erişsin.” Bunu /etc/sudoers.d/ altında bir dosya oluşturarak halledebilirsiniz:

# Sudoers dosyasi olusturma
visudo -f /etc/sudoers.d/ad-gruplar

# Icerik (Linux Admins AD grubuna tam sudo)
%linux admins@domain_adiniz.local ALL=(ALL:ALL) ALL

# Sadece belirli komutlara izin vermek icin
%linux ops@domain_adiniz.local ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx, /bin/journalctl

Dikkat: AD grup adlarında boşluk varsa backslash ile escape etmeniz gerekiyor. Bu küçük detayı atlayan pek çok meslektaşımın saatlerce debug yaptığını gördüm.

Kerberos ile SSH Key-Based Authentication

Hibrit ortamda çalışırken güvenlik katmanlarını doğru kurmak hayati önem taşıyor. Kerberos ticket tabanlı kimlik doğrulama, özellikle büyük ortamlarda şifre yönetim sorununu ortadan kaldırıyor.

# Kerberos client kurulumu
apt install krb5-user libpam-krb5 -y

# /etc/krb5.conf yapılandirmasi
cat /etc/krb5.conf

[libdefaults]
    default_realm = DOMAIN_ADINIZ.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true

[realms]
    DOMAIN_ADINIZ.LOCAL = {
        kdc = dc01.domain_adiniz.local
        admin_server = dc01.domain_adiniz.local
    }

[domain_realm]
    .domain_adiniz.local = DOMAIN_ADINIZ.LOCAL
    domain_adiniz.local = DOMAIN_ADINIZ.LOCAL

Ticket alıp test etmek için:

# Ticket al
kinit kullanici@DOMAIN_ADINIZ.LOCAL

# Ticket listesi
klist

# Ticket yenile
kinit -R

# SSH ile Kerberos ticket kullanimi
ssh -K sunucu.domain_adiniz.local

Samba ile File Server Entegrasyonu

Debian tabanlı bir file server kurmak ve bunu AD ile konuşturmak, Windows’taki DFS yapısının daha ekonomik alternatifleri arasında. Küçük ve orta ölçekli işletmeler için bu kombinezon mükemmel çalışıyor.

# Samba kurulumu
apt install samba smbclient cifs-utils winbind -y

# /etc/samba/smb.conf temel yapilandirma
nano /etc/samba/smb.conf
[global]
    workgroup = DOMAIN
    realm = DOMAIN_ADINIZ.LOCAL
    security = ADS
    encrypt passwords = yes
    kerberos method = secrets and keytab

    winbind use default domain = yes
    winbind offline logon = false
    winbind enum users = yes
    winbind enum groups = yes

    template homedir = /home/%U
    template shell = /bin/bash

    idmap config * : backend = tdb
    idmap config * : range = 3000-7999
    idmap config DOMAIN : backend = ad
    idmap config DOMAIN : range = 10000-999999

[paylasilanklasoru]
    path = /srv/samba/paylasim
    valid users = @"DOMAINlinux admins"
    read only = no
    browsable = yes
    create mask = 0664
    directory mask = 0775
# Samba servislerini baslat
systemctl enable smbd nmbd winbind
systemctl start smbd nmbd winbind

# Test baglanmasi
smbclient -L localhost -U kullanici@DOMAIN_ADINIZ.LOCAL

Debian Sunucu Güvenliğini Sertleştirme

AD entegrasyonu tamamlandıktan sonra güvenlik sertleştirmesi şart. Özellikle ağ içinde açık kalan Linux makineler, saldırganlar için kolay hedef olabilir.

# fail2ban kurulumu ve yapilandirmasi
apt install fail2ban -y

cat /etc/fail2ban/jail.local

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = iptables-multiport

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(syslog_backend)s
maxretry = 3

# fail2ban baslat
systemctl enable fail2ban
systemctl start fail2ban

SSH sertleştirmesi de kritik:

# /etc/ssh/sshd_config duzenleme
nano /etc/ssh/sshd_config

# Asagidaki ayarlar onerilen minimumlar:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
AllowGroups "linux admins@domain_adiniz.local" sudo

# SSHD'yi yeniden baslat
systemctl restart sshd

Uyarı: AllowGroups satırını kaydetmeden önce mevcut SSH oturumunuzu kapatmayın. Başka bir terminal penceresinde bağlantıyı test edin.

Log Yönetimi ve Merkezi İzleme

Windows ortamında Event Viewer’a alışmışsanız, Linux’ta journald ve rsyslog kombinasyonu benzer işlevi görüyor. Ancak hibrit ortamlarda merkezi log yönetimi daha da önem kazanıyor.

# rsyslog ile merkezi log sunucusuna gonderim
apt install rsyslog -y

# /etc/rsyslog.d/99-remote.conf
cat > /etc/rsyslog.d/99-remote.conf << 'EOF'
*.* @log-sunucusu.domain_adiniz.local:514
auth,authpriv.* @log-sunucusu.domain_adiniz.local:514
EOF

systemctl restart rsyslog

# Systemd journal'i kalici hale getirme
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald

# Log sorgulamak icin ornek komutlar
journalctl -u sssd --since "1 hour ago"
journalctl _SYSTEMD_UNIT=sshd.service --since today
journalctl -p err -n 50

Otomatik Güvenlik Yamaları ve Patch Management

Kurumsal ortamda patch yönetimi tek tek sunuculara giripde komut çalıştırmakla olmaz. Ansible veya basit bir Bash script ile bunu merkezileştirebilirsiniz. Ama en azından Debian’ın kendi araçlarını da tanıyın:

# Bekleyen guvenlik yamalarini goruntule
apt list --upgradable 2>/dev/null | grep -i security

# Sadece guvenlik yamalarini uygula
apt-get -s dist-upgrade | grep "^Inst" | grep -i security

# unattended-upgrades manuel test
unattended-upgrades --dry-run --debug

# Gerekirse sadece guvenlik yamalarini elle uygula
apt-get install $(apt-get -s dist-upgrade | grep "^Inst" | grep -i security | awk '{print $2}')

Sorun Giderme: En Sık Karşılaşılan Durumlar

SSSD Bağlantı Problemleri

# sssd debug modunda calistirma
sssctl domain-status DOMAIN_ADINIZ.local

# sssd önbellegi temizle (sık lazım olur)
sssctl cache-remove
systemctl restart sssd

# Kerberos ticket problemi
kdestroy
kinit kullanici@DOMAIN_ADINIZ.LOCAL
klist

DNS Çözümleme Sorunları

Debian’da systemd-resolved ile geleneksel resolv.conf arasında bazen çatışma yaşanır:

# Mevcut DNS durumunu kontrol et
resolvectl status
cat /etc/resolv.conf

# AD DNS sunucusunu elle ekle
nmcli con mod "Kablolu baglanti 1" ipv4.dns "192.168.1.10 192.168.1.11"
nmcli con up "Kablolu baglanti 1"

# Test
host _ldap._tcp.DOMAIN_ADINIZ.local

Zaman Senkronizasyonu

Active Directory Kerberos tabanlı çalıştığı için zaman senkronizasyonu kritik. 5 dakikadan fazla sapma kimlik doğrulama hatalarına yol açar:

# chrony kurulumu (ntpd yerine onerilir)
apt install chrony -y

# /etc/chrony.conf icinde AD DC'yi NTP kaynagi yap
echo "server dc01.domain_adiniz.local iburst" >> /etc/chrony.conf
systemctl restart chrony

# Senkronizasyonu kontrol et
chronyc tracking
chronyc sources -v

Debian Stable’ın Limitlerini Bilmek

Dürüst olmak gerekirse Debian Stable’ın bazı kısıtları var. Özellikle çok yeni donanım desteği bazen sorunlu olabiliyor. Ayrıca paket versiyonları bazen gerçekten eski kalıyor. Örneğin Bookworm’daki Python versiyonu, en güncel kütüphanelerle çalışmak istiyorsanız yetersiz gelebilir.

Bu durumda çözüm yollarınız:

  • Backports reposu: deb http://deb.debian.org/debian bookworm-backports main ekleyerek daha güncel paketlere erişebilirsiniz.
  • pip/pyenv: Python bağımlılıkları için sanal ortam kullanın.
  • Docker/Podman: Bağımlılık sorunlarını container’a hapsedin.
  • Compile from source: Son çare ama gerektiğinde vazgeçilmez.
# Backports'u etkinlestir
echo "deb http://deb.debian.org/debian bookworm-backports main contrib non-free" >> /etc/apt/sources.list.d/backports.list
apt update

# Backports'tan paket yukle
apt install -t bookworm-backports kernel-image-amd64

Monitoring: Prometheus Node Exporter ile Entegrasyon

Hibrit ortamda Windows ve Linux sunucuların tek noktadan izlenmesi için Prometheus + Grafana kombinasyonu giderek standart hale geliyor:

# Node Exporter kurulumu
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cp node_exporter-*/node_exporter /usr/local/bin/
chmod +x /usr/local/bin/node_exporter

# Systemd service dosyasi olustur
cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Prometheus Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

# Kullanici olustur ve servisi baslat
useradd -rs /bin/false node_exporter
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

# Metrikleri kontrol et
curl http://localhost:9100/metrics | head -20

Sonuç

Debian Stable, özellikle hibrit Windows/Linux ortamlarında çalışan sysadminler için vazgeçilmez bir araç olmaya devam ediyor. Kısaca değerlendirirsek:

  • Kararlılık: Üretim ortamında sürpriz istemiyorsanız Debian Stable doğru tercih.
  • AD Entegrasyonu: realmd, sssd ve Samba ile Windows altyapısıyla mükemmel uyum sağlanabiliyor.
  • Güvenlik: Backport mekanizması sayesinde eski paket versiyonlarında bile güvenlik yamaları geliyor.
  • Topluluk: On yıllık sorunların çözümleri bile belgeli ve erişilebilir durumda.
  • Uzun Vadeli Destek: Her sürüm en az 5 yıl boyunca destekleniyor.

Windows Server ortamında çalışıyor ve Linux tarafını ihmal ediyorsanız, Debian’la başlamanızı kesinlikle öneririm. Özellikle Active Directory entegrasyonu konusunda ilk kurulumda biraz ter dökebilirsiniz ama bir kez doğru kuruldu mu, aylarca sorunsuz çalıştığını göreceksiniz. Bu da bir sysadmin için en değerli şey: Güvenilirlik.

Yorum yapın