Otomatik Linux güncellemeleri: Linux sunucu güncellemeleri için unattended-upgrades ve dnf-automatic yapılandırma
Seviye: Uzman
Tahmini süre: ~30 dakika
Hedef: Infrastructure as Code ilkelerine uygun olarak, unattended-upgrades ve dnf-automatic ile kesintisiz ve ölçeklenebilir otomatik Linux güncellemelerini yapılandırmak.
Giriş
Sunucuların elle yamalanması, her üretim ortamının yönetiminde kritik bir darboğazdır: otomasyon olmadan yüzlerce düğümü güvenli ve güncel tutmak güvenilir biçimde çok zor olurdu. Savunmasız bir uygulama dakikalar içinde ele geçirilebilir ve istismarların çoğu iyi bilinen, yamalanmamış açıkları hedefler. Güvenlik ihlallerini önlemek için güvenlik güncellemelerini (yazılımdaki bilinen açıkları gidermek üzere yayımlanan kritik yamalar) zamanında uygulamamız gerekir. Bu eğitimde, unattended-upgrades ve dnf-automatic kullanarak bir Linux sunucusunda otomatik Linux güncellemelerini yapılandıracağız. Bu yaklaşım, Linux sunucu güncellemelerini standart hale getirir.
unattended-upgrades ve dnf-automatic nedir?
unattended-upgrades, güvenlik ve diğer paket güncellemelerinin kurulumunu otomatikleştiren bir Debian/Ubuntu aracıdır.
dnf-automatic, RHEL/CentOS/Fedora sistemleri için otomatik güncelleme sağlayan bir bileşendir.
Bu araçlar, otomatik güncellemelerin (güncellemelerin insan müdahalesi olmadan alınıp kurulması süreci) arka planda sorunsuzca çalışmasını sağlar. Genellikle bir systemd zamanlayıcısı (görev zamanlamasını yöneten ve geleneksel cron işlerinin yerini alan bir systemd birimi) aracılığıyla günlük olarak çalıştırılırlar.
Ön koşullar
Başlamadan önce aşağıdaki koşulların karşılandığından emin olun:
- İşletim sistemi: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 veya RHEL/AlmaLinux 9/10
- Erişim: Sunucuya sudo veya root erişimi
- Ağ gereksinimleri: Paket depolarına (archive.ubuntu.com, security.debian.org, repo.almalinux.org) giden HTTPS erişimi
- Gerekli bilgi: Sistem yönetimi, systemd ve temel yama yönetimi (yazılım güncellemelerinin dağıtılması ve uygulanması süreci) konularında ileri düzey bilgi ile Linux yama yönetimi bilgisi.
Adım 1: unattended-upgrades ile otomatik Linux güncellemelerini yapılandırma
APT (Advanced Package Tool) (Debian tabanlı dağıtımların temel paket yönetim sistemi) kullanan sistemlerde unattended-upgrades kullanırız. Bu araç, Linux yama yönetimi stratejinize sorunsuzca entegre olur.
1.1 Paketi kurma
Önce gerekli paketi paket deposundan (yazılım paketlerinin alınıp kurulduğu merkezi depolama konumu) kontrol edip kurun.
Aşağıdaki komutu çalıştırın:
sudo apt update && sudo apt install unattended-upgrades -y
Kurulumu doğrulayan bir çıktı görmelisiniz. Bu, sistemi otomatik APT güncellemelerine hazırlar.
1.2 İzin verilen kaynakları yapılandırma
Ana yapılandırma dosyası /etc/apt/apt.conf.d/50unattended-upgrades konumundadır. Yapılandırmayı yalnızca güvenlik güncellemelerini kuracak şekilde değiştireceğiz. Bu, otomatik paket güncellemeleri sırasında uyumluluğu bozan değişiklik riskini en aza indirir.
Değişiklik yapmadan önce, özgün yapılandırma dosyasının yedeğini almak en iyi uygulamadır:
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
Yapılandırma dosyasını açın:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Allowed-Origins bloğunun içeriğini tamamen değiştirin ve listelenen adları Package-Blacklist bloğuna ekleyin:
Ubuntu için:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };
Debian için:
Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };
Ardından paket kara listesini ve yeniden başlatma davranışını yapılandırın:
Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";
Package-Blacklist düzenli ifadeler (regex) kullanır. "nginx" gibi bir girdi; nginx-common, nginx-extras vb. paketlerle de eşleşir. Yalnızca belirli paketi hedeflemek için "^nginx$" gibi regex çapaları kullanın.
Bu ayar, otomatik APT güncellemelerini yalnızca güvenlik yamalarıyla sınırlar ve kritik paketleri otomatik güncellemenin dışında tutar; böylece güvenlik yaması otomasyonunu korurken hizmet kesintisi riskini azaltır.
Çekirdek, libc ve diğer düşük seviyeli paket güncellemeleri yine de yeniden başlatma gerektirebilir. Üretim ortamlarında, bakım pencereleri orkestrasyon ile zorunlu kılınmıyorsa otomatik yeniden başlatmayı kapalı tutun.
1.3 Otomatik güncellemeleri etkinleştirme
APT için systemd zamanlayıcısını etkinleştirmek üzere auto-upgrades dosyasını oluşturun.
Dosyayı açın:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Aşağıdakini içine yapıştırın:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";
Bu yapılandırma sisteme şunları yaptırır:
Update-Package-Lists "1"- paket listelerini günlük olarak güncellemek.Unattended-Upgrade "1"- otomatik APT güncellemelerini kendiliğinden çalıştırmak.AutocleanInterval "7"- paket önbelleğini her 7 günde bir temizlemek.
Adım 2: Linux sunucu güncellemeleri için dnf-automatic yapılandırma
DNF (Dandified YUM) (RHEL tabanlı dağıtımlar için yeni nesil paket yöneticisi) kullanan sistemlerde dnf-automatic, sağlam bir DNF güncelleme otomasyonu sunar.
2.1 Paketi kurma
Otomasyon aracını paket deposundan kurun.
Aşağıdaki komutu çalıştırın:
sudo dnf install dnf-automatic -y
DNF güncelleme otomasyonu paketinin başarıyla kurulduğunu doğrulayan bir çıktı görmelisiniz.
2.2 Güncelleme ilkelerini yapılandırma
Ana yapılandırma dosyası /etc/dnf/automatic.conf konumundadır. Aracı yalnızca güvenlik güncellemelerini indirecek ve uygulayacak şekilde yapılandırın.
Değişiklik yapmadan önce yapılandırma dosyasını yedekleyin ve dağıtımınız için güvenlik bültenlerinin (security advisories) mevcut olup olmadığını kontrol edin:
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security
Yapılandırma dosyasını açın:
sudo nano /etc/dnf/automatic.conf
Aşağıdaki parametreleri ayarlayın:
[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio
Bu yapılandırma sisteme şunları yaptırır:
upgrade_type = security- yalnızca güvenlik yamalarını hedeflemek.random_sleep = 3600- çalıştırmayı en fazla 1 saat rastgele geciktirmek; büyük ölçekli Infrastructure as Code dağıtımlarında yükü yayarak depolardaki ani yük artışlarını ve eşzamanlı zincirleme arızaları önler.download_updatesveapply_updates- güvenlik güncellemelerini otomatik olarak indirmek ve kurmak.
upgrade_type = security, deponun güvenlik meta verilerine bağlıdır. Güvenlik bültenleri eksikse (yeni bir AlmaLinux 10 kurulumunda bu tipiktir), bu ayarla dnf-automatic hiçbir şey uygulamayabilir. Üretimde yalnızca güvenlik güncellemelerine güvenmeden önce deponun desteğini doğrulayın. Alternatif olarak, üretim sistemleri için upgrade_type = security-severity:Critical veya default-security kullanmayı düşünebilirsiniz.
2.3 systemd zamanlayıcısını etkinleştirme
DNF güncelleme otomasyonunu zamanlamak için zamanlayıcıyı etkinleştirin.
Aşağıdaki komutu çalıştırın:
sudo systemctl enable --now dnf-automatic.timer
Zamanlayıcının etkinleştirildiğini ve başlatıldığını gösteren bir çıktı görmelisiniz. Bu, sistem için zamanlanmış otomatik paket güncellemelerini etkinleştirir.
Adım 3: Yapılandırmayı doğrulama
Yapılandırma yazıldıktan sonra doğrulanmalıdır.
3.1 Debian/Ubuntu'da doğrulama
Yapılandırmayı doğrulamak için bir deneme çalıştırması (dry run) yapın. -d (veya --dry-run) bayrağı unattended-upgrades aracını hata ayıklama kipinde çalıştırır - gerçekte hiçbir şey değiştirilmez:
sudo unattended-upgrades --dry-run --debug
--dry-run bayrağı tanılama bilgisi üretir ancak hiçbir dosyayı değiştirmez. Kara listedeki hiçbir paketin kuyruğa alınmadığından emin olun.
Üretimde günlükler (loglar) deneme çalıştırmalarından daha önemlidir. Zamanlayıcının ve hizmetin etkin olduğunu doğrulayın:
systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager
Ardından güncelleme etkinliğini doğrulamak için son günlük çıktısını kontrol edin. Yeni yapılandırılmış bir sistemde günlük boş olabilir. Anında kontrol için şunu çalıştırın: sudo unattended-upgrade -v.
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
3.2 RHEL/AlmaLinux'ta zamanlayıcıyı doğrulama
Zamanlayıcının durumunu kontrol edin:
systemctl list-timers | grep dnf-automatic
Beklenen çıktı:
Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service
Zamanlayıcı listede görünüyorsa güncellemeleriniz doğru şekilde zamanlanmıştır.
3.3 Yeniden başlatma gerekip gerekmediğini kontrol etme
Çekirdek ve libc güncellemeleri güvenlik kuyruğuna dahildir (örneğin Debian'da linux-image-amd64 güvenlik güncellemelerinin parçasıdır). Automatic-Reboot=false ayarlandığı için, elle yeniden başlatma gerekip gerekmediğini kendiniz kontrol etmelisiniz.
Debian/Ubuntu için:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
AlmaLinux/RHEL için:
sudo dnf needs-restarting -r
3.4 Doğrulama için zorla çalıştırma
Zamanlayıcı tetiklenene kadar sonucu göremeyebilirsiniz. Doğrulama amacıyla güncelleme sürecini elle çalıştırmak için:
Debian/Ubuntu için:
sudo unattended-upgrade -v
AlmaLinux/RHEL için:
sudo dnf-automatic
Adım 4: Gelişmiş yapılandırma (uzman seviyesi)
Uzman seviyesindeki gereksinimleri karşılamak için kurulumu bildirimler ve ayrıntılı zamanlama ile genişletebilirsiniz.
4.1 E-posta bildirimleri
Güncellemelerle ilgili raporlar almak için:
Debian/Ubuntu için:
/etc/apt/apt.conf.d/50unattended-upgrades dosyasında yorum işaretini kaldırın ve düzenleyin:
Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";
AlmaLinux/RHEL için:
/etc/dnf/automatic.conf dosyasında [email] bölümünü yapılandırın ve emitter'ı değiştirin:
[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost
4.2 Gelişmiş dnf-automatic zamanlayıcıları
dnf-automatic, indirme ve kurulum aşamalarını ayırmaya olanak tanıyan birden fazla zamanlayıcı sunar; bu da üretimde daha fazla kontrol sağlar:
- dnf-automatic.timer: Varsayılan zamanlayıcı (indirir ve yapılandırılmışsa isteğe bağlı olarak kurar).
- dnf-automatic-notifyonly.timer: Yalnızca güncellemeleri denetler ve bildirim gönderir.
- dnf-automatic-download.timer: Güncellemeleri indirir ancak kurmaz.
- dnf-automatic-install.timer: Güncellemeleri indirir ve otomatik olarak kurar (yapılandırmadaki
apply_updatesayarını geçersiz kılar).
Kümenizin (cluster) bakım ilkesine uyan zamanlayıcıyı kullanın.
Geri alma (rollback)
Yapılan her şeyi geri almak için araçları ve yapılandırmaları kaldırmanız yeterlidir.
Debian/Ubuntu:
sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades
RHEL/AlmaLinux:
sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y
Bu araçların kaldırılması tüm sistem için otomatik güncellemeleri devre dışı bırakır; elle yamalanmadıkça sunucularınız savunmasız kalır.
Sonuç
Hepsi bu kadar. unattended-upgrades veya dnf-automatic ile doğru yapılandırılmış tek bir sistem, bir deneme çalıştırmasıyla doğrulandı - ve iş tamam. Bu güvenlik yaması otomasyonu sayesinde otomatik Linux güncellemeleri sorunsuz uygulanır, bakım yükü düşük kalır ve Linux sunucu güncellemeleri reaktif olmaktan çıkıp öngörülebilir hale gelir. Daha büyük ortamlarda, tüm düğümleri aynı anda güncellememek için bu kurulumu Infrastructure as Code ve kademeli dağıtımlarla birleştirin.
Belge sürümü: 1.0
Son güncelleme: Mayıs 2026
Sahibi: Teknik Dokümantasyon Ekibi