Ana içeriğe geç
Kategoriye Dön

Otomatik Güncelleme Ayarları: unattended-upgrades Rehberi

unattended-upgrades kurulumu ve yapılandırması, yalnızca güvenlik güncellemeleri, e-posta bildirimleri, test etme, riskler ve önlemler rehberi.

Okuma süresi: 10 dk Sunucu Yönetimi
unattended-upgradesotomatik güncellemegüvenlik güncellemeleriubuntudebianlinuxapt

İçindekiler

Otomatik Güncelleme Ayarları: unattended-upgrades Rehberi

Sunucu güvenliğinin en temel gereksinimlerinden biri, güvenlik yamalarının zamanında uygulanmasıdır. Manuel güncelleme yapmayı unutmak, sunucunuzu bilinen güvenlik açıklarına karşı savunmasız bırakabilir. unattended-upgrades paketi, Ubuntu ve Debian sistemlerde güvenlik güncellemelerini otomatik olarak uygular. Bu rehberde kurulum, yapılandırma ve en iyi uygulamaları öğreneceksiniz.

unattended-upgrades Nedir?

unattended-upgrades, sisteminizin güvenlik güncellemelerini insan müdahalesi olmadan otomatik olarak indirip yükleyen bir APT eklentisidir. Özellikle şunlar için idealdir:

  • Kritik güvenlik yamalarının hızlı uygulanması
  • Gece yarısı veya bakım pencerelerinde otomatik güncelleme
  • Birden fazla sunucuyu yönetirken güncelleme takibini kolaylaştırma

Otomatik güncellemeler bazı durumlarda servis kesintilerine yol açabilir. Özellikle kernel güncellemeleri yeniden başlatma gerektirir. Üretim ortamlarında dikkatli yapılandırın.

Kurulum

Ubuntu/Debian

hljs bash
# Paketi kur
sudo apt update
sudo apt install unattended-upgrades apt-listchanges -y

# Kurulumu doğrula
dpkg -l unattended-upgrades

# Servisi kontrol et
systemctl status unattended-upgrades

Otomatik Yapılandırma Sihirbazı

hljs bash
# Temel yapılandırmayı otomatik ayarla
sudo dpkg-reconfigure -plow unattended-upgrades
# "Yes" seçeneğini seçin

Temel Yapılandırma

Ana yapılandırma dosyası: /etc/apt/apt.conf.d/50unattended-upgrades

hljs bash
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    // Ubuntu güvenlik güncellemeleri
    "${distro_id}:${distro_codename}-security";
    // ESM güvenlik güncellemeleri (Ubuntu Pro)
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";

    // Tüm güncellemeler (önerilmez — sadece güvenlik güncellemeleri tercih edilir)
    // "${distro_id}:${distro_codename}";
    // "${distro_id}:${distro_codename}-updates";
};

// Belirli paketleri güncelleme dışında tut
Unattended-Upgrade::Package-Blacklist {
    // "nginx";
    // "mysql-server";
    // "php*";
};

// Güncelleme sonrası otomatik yeniden başlatma
Unattended-Upgrade::Automatic-Reboot "false";

// Yeniden başlatma zamanı (sadece Automatic-Reboot true ise)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// Kullanılmayan bağımlılıkları kaldır
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Kullanılmayan kernel'ları kaldır
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// E-posta bildirimi
Unattended-Upgrade::Mail "admin@rexe.tr";

// Sadece hata durumunda e-posta gönder
Unattended-Upgrade::MailReport "on-change";
// Seçenekler: "always", "only-on-error", "on-change"

// Güncelleme logunu tut
Unattended-Upgrade::SyslogEnable "true";
Unattended-Upgrade::SyslogFacility "daemon";

Güncelleme Zamanlaması

Güncelleme sıklığı /etc/apt/apt.conf.d/20auto-upgrades dosyasında ayarlanır:

hljs bash
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
// Paket listesini her gün güncelle
APT::Periodic::Update-Package-Lists "1";

// Güncellenebilir paketleri her gün indir
APT::Periodic::Download-Upgradeable-Packages "1";

// unattended-upgrades'i her gün çalıştır
APT::Periodic::Unattended-Upgrade "1";

// Eski paket önbelleğini her 7 günde bir temizle
APT::Periodic::AutocleanInterval "7";

Değerler gün cinsinden belirtilir. "1" = her gün, "7" = her hafta, "0" = devre dışı.

Yalnızca Güvenlik Güncellemeleri

Üretim sunucularında yalnızca güvenlik güncellemelerini otomatik uygulamak en güvenli yaklaşımdır:

hljs bash
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    // SADECE güvenlik güncellemeleri
    "${distro_id}:${distro_codename}-security";
};

// Diğer tüm güncelleme kaynaklarını yorum satırına al
// "${distro_id}:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-backports";

E-posta Bildirimleri

Güncelleme bildirimleri için mailutils veya postfix gereklidir:

hljs bash
# mailutils kur
sudo apt install mailutils -y

# Basit SMTP yapılandırması için
sudo apt install ssmtp -y
sudo nano /etc/ssmtp/ssmtp.conf
root=admin@rexe.tr
mailhub=smtp.gmail.com:587
AuthUser=your-email@gmail.com
AuthPass=your-app-password
UseTLS=YES
UseSTARTTLS=YES
hljs bash
# E-posta testini yap
echo "Test mesajı" | mail -s "Sunucu Güncelleme Testi" admin@rexe.tr

Yapılandırmayı Test Etme

Kuru Çalıştırma (Dry Run)

hljs bash
# Gerçekten güncelleme yapmadan simüle et
sudo unattended-upgrade --dry-run --debug

# Daha ayrıntılı çıktı
sudo unattended-upgrade -d --dry-run

Manuel Çalıştırma

hljs bash
# unattended-upgrades'i hemen çalıştır
sudo unattended-upgrade -d

# Verbose modda çalıştır
sudo unattended-upgrade --verbose

Log Dosyalarını İnceleme

hljs bash
# Ana log dosyası
cat /var/log/unattended-upgrades/unattended-upgrades.log

# Hata logları
cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

# Gerçek zamanlı log takibi
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

# Son güncelleme zamanını kontrol et
ls -la /var/log/unattended-upgrades/

Kernel Güncellemeleri ve Yeniden Başlatma

Kernel güncellemeleri özel dikkat gerektirir:

hljs bash
# Yeniden başlatma gerektiren güncellemeleri kontrol et
cat /var/run/reboot-required

# Hangi paketlerin yeniden başlatma gerektirdiğini gör
cat /var/run/reboot-required.pkgs

# Yeniden başlatma gerekip gerekmediğini kontrol et
if [ -f /var/run/reboot-required ]; then
  echo "Yeniden başlatma gerekiyor!"
fi

Otomatik Yeniden Başlatma Yapılandırması

hljs bash
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
// Otomatik yeniden başlatmayı etkinleştir
Unattended-Upgrade::Automatic-Reboot "true";

// Yeniden başlatma zamanı (gece 2:00)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// Kullanıcı oturumu açıksa bile yeniden başlat
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";

Otomatik yeniden başlatmayı etkinleştirmeden önce uygulamanızın yeniden başlatmayı tolere edip edemeyeceğini değerlendirin. Kritik üretim sistemlerinde manuel yeniden başlatma tercih edilir.

Riskler ve Önlemler

Olası Riskler

  1. Servis kesintisi: Bazı güncellemeler servisleri yeniden başlatır
  2. Bağımlılık çakışmaları: Nadir durumlarda paket çakışmaları oluşabilir
  3. Yapılandırma değişiklikleri: Güncellemeler yapılandırma dosyalarını değiştirebilir
  4. Kernel güncellemeleri: Yeniden başlatma gerektirir

Risk Azaltma Önlemleri

hljs bash
# 1. Kritik paketleri kara listeye al
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Package-Blacklist {
    // Kritik veritabanı sunucusu
    "mysql-server";
    "postgresql";
    // Web sunucusu
    "nginx";
    "apache2";
    // Kernel (manuel güncelleme için)
    "linux-image*";
    "linux-headers*";
};
hljs bash
# 2. Güncelleme öncesi snapshot al (desteklenen sistemlerde)
# 3. Güncelleme loglarını düzenli kontrol et
tail -100 /var/log/unattended-upgrades/unattended-upgrades.log

# 4. Güncelleme sonrası servis durumlarını kontrol et
systemctl --failed

CentOS/AlmaLinux/RHEL için dnf-automatic

RPM tabanlı sistemlerde dnf-automatic kullanılır:

hljs bash
# Kur
sudo dnf install dnf-automatic -y

# Yapılandır
sudo nano /etc/dnf/automatic.conf
hljs ini
[commands]
# Sadece güvenlik güncellemeleri
upgrade_type = security
# Güncellemeleri otomatik uygula
apply_updates = yes

[emitters]
# E-posta bildirimi
emit_via = email
email_to = admin@rexe.tr

[email]
email_from = server@rexe.tr
email_host = localhost
hljs bash
# Servisi etkinleştir
sudo systemctl enable --now dnf-automatic.timer

# Durumu kontrol et
sudo systemctl status dnf-automatic.timer

# Timer'ları listele
sudo systemctl list-timers dnf-automatic*

Hem Ubuntu hem de CentOS sistemlerinde, otomatik güncellemeleri etkinleştirdikten sonra ilk hafta log dosyalarını yakından takip edin. Bu, beklenmedik sorunları erken tespit etmenizi sağlar.

Sonuç

unattended-upgrades, REXE sunucularınızın güvenliğini korumak için güçlü bir araçtır. Yalnızca güvenlik güncellemelerini otomatik uygulayarak, kritik paketleri kara listeye alarak ve e-posta bildirimlerini etkinleştirerek hem güvenli hem de kararlı bir sunucu ortamı oluşturabilirsiniz. Düzenli log kontrolü ve test ortamında doğrulama, otomatik güncelleme sürecini daha güvenilir hale getirir.