Güvenlik & SSL

    Linux'ta Otomatik Güvenlik Güncellemeleri Kurulumu

    Ubuntu ve RHEL'de güvenlik yamalarını otomatik uygulamayı ve dikkat edilecek noktaları anlatan pratik rehber.

    11 dk okuma Güncellendi: 10 Temmuz 2026

    Bir sunucuya yönelik saldırıların büyük çoğunluğu sıfırıncı gün açıklarıyla değil, aylardır bilinen ve yaması çıkmış zafiyetlerle gerçekleşir. Bir güvenlik açığı duyurulduğu anda, o açığı tarayan otomatik botlar dakikalar içinde internetteki tüm açık sistemleri denemeye başlar. Yani sizin sunucunuzu tehdit eden şey çoğu zaman gizemli bir bilgisayar korsanı değil, güncellemeyi "sonra yaparım" diye ertelemenizdir. Yamayı uygulamadığınız her saat, saldırganlara açık bir kapı bırakır.

    İşte bu yüzden güvenlik yamalarını manuel olarak takip etmek, üretim ortamında ölçeklenmeyen ve er ya da geç unutulan bir yaklaşımdır. Otomatik güvenlik güncellemeleri, bu açık pencereyi neredeyse tamamen kapatır: paket deposuna güvenlik güncellemesi düştüğü anda sistem onu kendisi indirir ve kurar, siz uyurken bile. Bu rehberde Ubuntu ve Debian tarafında unattended-upgrades, RHEL ailesinde (AlmaLinux, Rocky Linux, CentOS Stream) ise dnf-automatic ile bu otomasyonu adım adım kuracak; yalnızca güvenlik yamalarını seçmenin, otomatik yeniden başlatmayı yönetmenin ve bildirim almanın kıdemli bir sistem yöneticisinin uyguladığı pratik yollarını göreceğiz.

    Yamasız sunucu neden en büyük risktir#

    Bir zafiyet CVE numarası alıp yayımlandığında, o açığın teknik detayları ve çoğu zaman çalışan bir istismar kodu (exploit) da halka açılır. Saldırganların yapması gereken tek şey, güncel olmayan sistemleri taramak ve hazır kodu çalıştırmaktır. 2014'teki Shellshock, 2017'deki EternalBlue ve daha yakın tarihli birçok kritik açık, yaması yayımlandıktan aylar sonra bile on binlerce sunucuyu ele geçirmeye devam etti; çünkü sistem yöneticileri güncellemeyi ertelemişti.

    Manuel yama yönetiminin zayıf halkası her zaman insandır. Onlarca sunucu yönetiyorsanız, hangisinde hangi paketin güncel olduğunu takip etmek pratikte imkânsız hale gelir. Tatil, yoğunluk, "bu hafta dokunmayayım" düşüncesi derken açık pencere büyür. Otomatik güncelleme bu insani zaafı ortadan kaldırır ve yamalamayı sürekli, öngörülebilir bir arka plan sürecine dönüştürür. Sunucu güvenliğinin bütününe dair temel prensipleri sunucu güvenliği temelleri rehberimizde ayrıca ele alıyoruz; otomatik güncelleme bu bütünün en kolay kazanç sağlayan halkasıdır.

    Otomatik güncellemenin en güzel yanı, "güvenlik güncellemesi" ile "özellik güncellemesi" arasındaki ayrımı kullanabilmenizdir. Sadece güvenlik deposundan gelen yamaları uygulayarak, sisteminizi kırma riski neredeyse sıfır olan güncellemeleri otomatikleştirir; büyük sürüm yükseltmelerini ise kontrollü şekilde kendiniz yaparsınız. Aşağıdaki tablo bu ayrımı özetliyor.

    Güncelleme türüÖrnekOtomatikleştirme önerisi
    Güvenlik yamalarıopenssl, openssh, kernel CVE düzeltmeleriEvet, otomatik uygula
    Hata düzeltmeleri (bugfix)küçük paket düzeltmeleriGenelde otomatik, dikkatli izle
    Özellik güncellemeleriyeni PHP alt sürümü, yeni nginx özelliğiManuel, test ederek
    Büyük sürüm yükseltmesiUbuntu 22.04 to 24.04Kesinlikle manuel, yedekli

    Ubuntu ve Debian'da unattended-upgrades kurulumu#

    Ubuntu ve Debian tabanlı dağıtımlarda otomatik güvenlik güncellemesinin standart aracı unattended-upgrades paketidir. Çoğu Ubuntu sunucu kurulumunda zaten yüklüdür, ancak yapılandırması varsayılan olarak yalnızca güvenlik güncellemelerini kapsar ve bazı ek ayarları elle açmanız gerekir. Önce paketi kuralım ve etkinleştirelim.

    sudo apt update
    sudo apt install unattended-upgrades apt-listchanges -y
    sudo dpkg-reconfigure --priority=low unattended-upgrades
    

    dpkg-reconfigure komutu size "otomatik güncellemeleri etkinleştirmek istiyor musunuz?" diye soran basit bir ekran gösterir ve Evet dediğinizde /etc/apt/apt.conf.d/20auto-upgrades dosyasını oluşturur. Bu dosya, güncelleme listesinin ne sıklıkla çekileceğini ve güncellemelerin ne sıklıkla uygulanacağını belirler.

    // /etc/apt/apt.conf.d/20auto-upgrades
    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Unattended-Upgrade "1";
    APT::Periodic::Download-Upgradeable-Packages "1";
    APT::Periodic::AutocleanInterval "7";
    

    Buradaki "1" değerleri "her gün" anlamına gelir. Update-Package-Lists paket listesini günlük günceller, Unattended-Upgrade ise onaylı güncellemeleri günlük uygular. AutocleanInterval "7" ise indirilen eski paket arşivlerini 7 günde bir temizleyerek diski şişirmelerini önler. Bu dosya doğru göründüğünde, otomasyonun kalbi devrededir; ancak hangi güncellemelerin uygulanacağını bir sonraki bölümdeki asıl yapılandırma dosyası belirler.

    Kurulumun çalıştığını hemen test etmek için gerçek değişiklik yapmadan bir prova çalıştırması yapabilirsiniz.

    sudo unattended-upgrades --dry-run --debug
    

    Bu komut, sistemin hangi güncellemeleri uygulayacağını gerçekten kurmadan listeler. Çıktıda "Allowed origins" satırlarını ve seçilen paketleri görürseniz yapılandırma çalışıyor demektir.

    Yalnızca güvenlik güncellemelerini seçmek#

    İşin kritik kısmı burasıdır. Ana yapılandırma /etc/apt/apt.conf.d/50unattended-upgrades dosyasında yaşar ve hangi depo kaynaklarından (origins) otomatik güncelleme alınacağını belirler. Üretim sunucularında altın kural şudur: yalnızca güvenlik deposunu açık bırakın, geri kalan her şeyi yorum satırı olarak kapalı tutun.

    sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
    

    Dosyadaki Unattended-Upgrade::Allowed-Origins bloğunu aşağıdaki gibi ayarlayın; yalnızca -security satırı aktif, diğerleri pasif olsun.

    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
    //  "${distro_id}:${distro_codename}-updates";
    //  "${distro_id}:${distro_codename}-proposed";
    //  "${distro_id}:${distro_codename}-backports";
    };
    

    Bu yapılandırmada -updates, -proposed ve -backports bilerek yorum satırı bırakılmıştır. Böylece sistem yalnızca güvenlikle ilgili paketleri otomatik kurar; özellik güncellemelerini ve deneysel paketleri asla kendiliğinden yüklemez. Bu, "otomatik güncelleme sunucumu bozar mı?" korkusunu büyük ölçüde ortadan kaldıran ayardır çünkü güvenlik yamaları geriye dönük uyumluluğu bozmayacak şekilde hazırlanır.

    Aynı dosyada, bir paketin belirli bir sürüme kilitlenmesini istiyorsanız (örneğin uygulamanızın belirli bir MySQL sürümüne bağımlı olması durumunda) kara liste tanımlayabilirsiniz.

    Unattended-Upgrade::Package-Blacklist {
        "mysql-server";
        "mariadb-server";
        "docker-ce";
    };
    

    Bu listeye eklenen paketler güvenlik yaması olsa bile otomatik güncellenmez; onları elle, planlı bir bakım penceresinde yükseltirsiniz. Veritabanı ve konteyner motorları gibi çalışan servisi yeniden başlatan kritik bileşenleri kara listeye almak yaygın ve makul bir tercihtir.

    RHEL, AlmaLinux ve Rocky'de dnf-automatic#

    RHEL ailesinde (AlmaLinux, Rocky Linux, CentOS Stream, Oracle Linux) otomatik güncellemenin karşılığı dnf-automatic paketidir. Mantık aynıdır: bir zamanlayıcı (systemd timer) belirli aralıklarla depoyu kontrol eder ve yapılandırmaya göre indirir veya kurar. Önce paketi kuralım.

    sudo dnf install dnf-automatic -y
    

    Yapılandırma /etc/dnf/automatic.conf dosyasında yaşar. Buradaki iki temel ayar, upgrade_type (hangi güncellemeler) ve apply_updates (indirmekle mi kalınacak yoksa kurulacak mı) alanlarıdır. Yalnızca güvenlik güncellemelerini otomatik kurmak için şu şekilde ayarlayın.

    # /etc/dnf/automatic.conf
    [commands]
    upgrade_type = security
    random_sleep = 300
    download_updates = yes
    apply_updates = yes
    
    [emitters]
    emit_via = stdio,email
    system_name = web01.clou.tr
    
    [email]
    email_from = [email protected]
    email_to = [email protected]
    email_host = localhost
    

    upgrade_type = security satırı en önemli olanıdır; sistemin yalnızca güvenlik danışmanlıklarına (advisory) bağlı paketleri güncellemesini sağlar. apply_updates = yes güncellemeleri gerçekten kurar; eğer önce yalnızca indirip kurulumu elle onaylamak isterseniz bunu no yapıp download_updates = yes bırakabilirsiniz. random_sleep = 300 ise tüm sunucuların aynı anda depoya yüklenmesini engellemek için 0 ile 300 saniye arası rastgele bekleme koyar; bu, çok sayıda sunucu yönetiyorsanız depo yükünü dağıtır.

    Yapılandırma hazır olduğunda, otomasyonu çalıştıran systemd zamanlayıcısını etkinleştirin ve başlatın.

    sudo systemctl enable --now dnf-automatic.timer
    systemctl list-timers dnf-automatic.timer
    

    list-timers çıktısında zamanlayıcının bir sonraki çalışma zamanını görürseniz kurulum tamamdır. Zamanlayıcının varsayılan tetiklenme zamanını değiştirmek isterseniz systemctl edit dnf-automatic.timer ile bir override tanımlayıp OnCalendar değerini örneğin gece 03:00'e ayarlayabilirsiniz; bakım penceresini trafiğin en düşük olduğu saate almak iyi bir alışkanlıktır.

    Otomatik yeniden başlatma ve kernel yamaları#

    Güvenlik yamalarının çoğu servisi yeniden başlatmadan devreye girer, ancak bazıları için yeniden başlatma gerekir. Özellikle kernel (çekirdek), glibc, openssl gibi temel bileşenler güncellendiğinde, yeni sürümün gerçekten aktif olması için ilgili servisin veya tüm sistemin yeniden başlatılması gerekir. openssl güncellendiği hâlde web sunucunuz eski kütüphaneyi bellekte tutmaya devam ediyorsa, yamayı uygulamış ama korumaya kavuşmamış olursunuz.

    Ubuntu'da bu durumu 50unattended-upgrades dosyasındaki yeniden başlatma ayarlarıyla yönetirsiniz. En güvenli yaklaşım, sistemin gerekli olduğunda otomatik yeniden başlamasına izin vermek ama bunu belirli bir saate sabitlemektir.

    Unattended-Upgrade::Automatic-Reboot "true";
    Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
    Unattended-Upgrade::Automatic-Reboot-Time "04:00";
    

    Bu ayarlar, yalnızca bir güncelleme yeniden başlatma gerektiriyorsa ve o an saat 04:00 civarındaysa sunucuyu yeniden başlatır. Trafiğin düşük olduğu bir saati seçmek, kesintiyi kullanıcıların çoğunun uyuduğu zamana denk getirir. Eğer sunucunuz bir kümenin parçasıysa ve dış yük dengeleyici arkasındaysa, yeniden başlatmanın koordineli olması için otomatik yeniden başlatmayı kapatıp bunun yerine /var/run/reboot-required dosyasını izleyen bir bildirim mekanizması kurmayı tercih edebilirsiniz.

    # Yeniden başlatma gerekip gerekmediğini kontrol et
    if [ -f /var/run/reboot-required ]; then
      echo "Sunucu yeniden başlatma bekliyor:"
      cat /var/run/reboot-required.pkgs
    fi
    

    Kesintiyi hiç istemiyorsanız, çekirdek yamalarını yeniden başlatmadan uygulayan canlı yama (live patching) teknolojilerine bakabilirsiniz. Ubuntu tarafında Canonical Livepatch, RHEL tarafında kpatch bu işi yapar; ancak bunlar genellikle abonelik gerektirir ve her yamayı kapsamaz, dolayısıyla planlı bir yeniden başlatma politikasının yerini tamamen tutmazlar. Yeniden başlatma ve genel bakım süreçlerinizi yönetilen sunucu yönetimi hizmetimizle bize devredebilir, kesintisiz izlemeyi uzmanlara bırakabilirsiniz.

    Bildirimler ve logları izleme#

    Otomatik güncelleme kur ve unut değildir; ne yaptığını görebildiğiniz sürece güvenilirdir. Sistem sizin adınıza paket kuruyor ve gerektiğinde yeniden başlatıyorsa, en azından ne olduğunu bilmek istersiniz. Ubuntu'da e-posta bildirimi almak için 50unattended-upgrades dosyasındaki mail ayarlarını açın; bunun için sunucuda çalışan bir mail aktarım aracısı (postfix gibi) gerekir.

    Unattended-Upgrade::Mail "[email protected]";
    Unattended-Upgrade::MailReport "on-change";
    Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
    Unattended-Upgrade::Remove-Unused-Dependencies "true";
    

    MailReport "on-change" ayarı, yalnızca gerçekten bir güncelleme uygulandığında veya bir hata oluştuğunda e-posta gönderir; her gün "yapılacak bir şey yoktu" mailleriyle boğulmazsınız. Remove-Unused-Kernel-Packages "true" ise /boot bölümünüzü şişiren eski çekirdek sürümlerini otomatik temizler ki bu, küçük /boot bölümü olan sunucularda güncellemenin "disk dolu" hatasıyla durmasını önleyen çok işe yarar bir ayardır.

    Bildirim kurmasanız bile logları düzenli izlemek şarttır. Otomatik güncellemeler kendi log dosyalarına ayrıntılı yazar; neyin ne zaman kurulduğunu buradan denetleyebilirsiniz.

    # Ubuntu / Debian
    sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
    sudo cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
    
    # RHEL ailesi (dnf-automatic systemd journali)
    sudo journalctl -u dnf-automatic.service --since "7 days ago"
    

    Log komutlarını ve genel Linux terminal kullanımını yeni öğreniyorsanız temel Linux komutları rehberimiz bu çıktıları okumanızı kolaylaştırır. İzlemeyi bir adım öteye taşımak isterseniz, sunucularınızın erişilebilirlik durumunu ve olası kesintileri anlık takip etmek için panelimizdeki uptime uyarılarını da devreye alabilirsiniz.

    Otomatik güncellemenin riskleri ve iyi uygulamalar#

    Otomatik güncelleme muazzam bir güvenlik kazancıdır ama sihirli değnek değildir; birkaç riski akılda tutmak gerekir. En bilinen risk, nadir de olsa bir güvenlik yamasının bir gerilemeye (regression) yol açması, yani başka bir şeyi bozmasıdır. Bu ihtimal, yalnızca güvenlik deposunu açık tutmakla en aza iner; çünkü distro geliştiricileri güvenlik yamalarını mümkün olan en küçük, en hedefli değişiklikle yayımlar. Yine de kritik iş yüklerinde şu iki uygulama sizi korur.

    Birincisi, yedekleme. Otomatik güncelleme öncesi düzenli anlık görüntü (snapshot) veya yedek almadıysanız, olası bir gerilemede geri dönüş yolunuz olmaz. Yamayı otomatikleştirmeden önce mutlaka çalışan bir yedekleme politikanız olsun. İkincisi, mümkünse aynı yamayı önce bir hazırlık (staging) sunucusunda deneyin. Çok sayıda üretim sunucusu yönetiyorsanız, güvenlik güncellemelerini önce tek bir test makinesinde otomatik açıp bir gün gözlemlemek, ardından tüm filoya yaymak dengeli bir yaklaşımdır. Aşağıdaki tablo iki dağıtım ailesindeki temel araçları ve dosyaları karşılaştırıyor.

    KonuUbuntu / DebianRHEL / AlmaLinux / Rocky
    Araçunattended-upgradesdnf-automatic
    Ana yapılandırma/etc/apt/apt.conf.d/50unattended-upgrades/etc/dnf/automatic.conf
    Sadece güvenlikAllowed-Origins to -securityupgrade_type = security
    Zamanlayıcıapt-daily systemd timerdnf-automatic.timer
    Otomatik yeniden başlatmaAutomatic-Reboot ayarımanuel veya needs-restarting
    Loglar/var/log/unattended-upgrades/journalctl -u dnf-automatic

    Son olarak, otomatik güncelleme diğer güvenlik katmanlarının yerini tutmaz; onları tamamlar. Güçlü bir güvenlik duvarı, SSH sertleştirmesi, düzenli yedekleme ve gerekli yerlerde bir web uygulama güvenlik duvarı ile birlikte çalıştığında en iyi sonucu verir. Yamalama, güvenlik piramidinin en alt ve en temel katmanıdır; onu otomatikleştirdiğinizde geri kalan katmanlara odaklanacak enerjiyi kazanırsınız.

    Sıkça Sorulan Sorular#

    Otomatik güvenlik güncellemesi sunucumu bozar mı?#

    Yalnızca güvenlik deposunu açık bırakıp özellik güncellemelerini kapalı tuttuğunuzda bu risk çok düşüktür. Güvenlik yamaları, dağıtım geliştiricileri tarafından geriye dönük uyumluluğu bozmayacak şekilde mümkün olan en küçük değişiklikle hazırlanır. Yine de veritabanı ve konteyner motoru gibi kritik paketleri kara listeye almak ve düzenli yedek tutmak, nadir bir gerileme durumunda sizi korur.

    Sadece güvenlik güncellemelerini nasıl seçerim?#

    Ubuntu'da /etc/apt/apt.conf.d/50unattended-upgrades dosyasındaki Allowed-Origins bloğunda sadece -security satırını aktif bırakır, -updates ve diğerlerini yorum satırı yaparsınız. RHEL ailesinde ise /etc/dnf/automatic.conf dosyasında upgrade_type = security ayarını kullanırsınız. Bu iki ayar, sistemin özellik güncellemelerine dokunmadan yalnızca güvenlik yamalarını uygulamasını sağlar.

    Otomatik yeniden başlatma açmalı mıyım?#

    Bu, iş yükünüzün kesinti toleransına bağlıdır. Tek başına çalışan bir web sunucusunda, yeniden başlatmayı trafiğin en düşük olduğu saate (örneğin 04:00) sabitleyerek otomatik açmak makuldür; çünkü çekirdek yamaları ancak yeniden başlatmayla tam olarak devreye girer. Yük dengeleyici arkasındaki kümelerde ise koordineli yeniden başlatma için otomatik reboot'u kapatıp bildirim mekanizması kurmak daha güvenlidir.

    Güncelleme uygulandığını nasıl teyit ederim?#

    Ubuntu'da /var/log/unattended-upgrades/unattended-upgrades.log dosyası neyin ne zaman kurulduğunu ayrıntılı gösterir. RHEL ailesinde journalctl -u dnf-automatic.service komutu aynı bilgiyi verir. Ayrıca yapılandırmada e-posta bildirimini on-change moduna alırsanız, yalnızca gerçek bir güncelleme veya hata olduğunda mail alırsınız; böylece her sabah logları elle açmanız gerekmez.

    Otomatik güncelleme diğer güvenlik önlemlerinin yerine geçer mi?#

    Hayır, yamalamak güvenliğin temel katmanıdır ama tek katmanı değildir. Güçlü bir güvenlik duvarı, SSH erişiminin sertleştirilmesi, düzenli yedekleme, güçlü parolalar ve gerekli yerlerde bir web uygulama güvenlik duvarı ile birlikte çalıştığında anlam kazanır. Otomatik güncelleme, bilinen açıkların istismar edilmesini engelleyerek diğer katmanların üzerine daha az yük binmesini sağlar.

    Paket sürümünü sabit tutmam gereken bir uygulamam var, ne yapmalıyım?#

    Bu paketleri otomatik güncellemenin kara listesine ekleyerek sürümlerini sabitleyebilirsiniz. Ubuntu'da 50unattended-upgrades dosyasındaki Package-Blacklist bloğuna paket adını eklersiniz; RHEL tarafında automatic.conf içindeki exclude satırı aynı işi görür. Bu paketleri güvenlik yamalarını da kaçırmamak için elle, planlı bir bakım penceresinde ayrıca güncellemeyi ihmal etmeyin.

    Kapanış#

    Otomatik güvenlik güncellemeleri, çok az emekle en büyük güvenlik kazancını sağlayan nadir uygulamalardan biridir. Yalnızca güvenlik deposunu açık tutan bir unattended-upgrades veya dnf-automatic yapılandırması, bakım pencerenizi trafiğin düştüğü saate sabitlemiş otomatik yeniden başlatma ve düzenli izlenen loglarla birleştiğinde, sunucunuzu bilinen açıkların istismar edildiği o kritik pencereden korur. Kurulumu bir kez doğru yaptığınızda, sistem sizin için sessizce çalışmaya devam eder.

    Bu otomasyonu kendiniz kurmak yerine uzmanlara bırakmak isterseniz, Clou.TR olarak size yardımcı oluruz. Yönetilen sunucu yönetimi hizmetimizde yamalar, izleme ve yeniden başlatmalar bizim ekibimizce yürütülür; VDS sunucular ve sanal sunucular için tam kök erişimiyle kendi güncelleme politikanızı kurabilir, düzenli yedekleme hizmetimizle olası bir gerilemede saniyeler içinde geri dönebilirsiniz. Ek koruma için WAF ve SSL sertifikası çözümlerimize göz atabilir, güvenlik yolculuğunuza uygun bir hosting paketiyle başlayabilirsiniz.

    GüvenlikLinuxBakım

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.