VPS-də avtomatik təhlükəsizlik yeniləmələri: unattended-upgrades bələdçisi

VPS-də avtomatik təhlükəsizlik yeniləmələri: unattended-upgrades bələdçisi

VPS-i quraşdırıb unutmaq ən çox yayılmış səhvdir: bir neçə ay sonra serverdə onlarla yamaqlanmamış boşluq toplanır. Ubuntu-da bu problemi unattended-upgrades aləti həll edir: təhlükəsizlik yeniləmələrini hər gün özü yükləyir və quraşdırır. Bu bələdçidə aləti Ubuntu 24.04-də necə aktiv edəcəyinizi, avtomatik yenidən başlatma vaxtını necə seçəcəyinizi və hansı risklərə diqqət etməli olduğunuzu izah edirik.

Niyə yeniləmələr vacibdir

Hücumların böyük hissəsi yeni, naməlum boşluqlardan deyil, artıq açıqlanmış və yaması çıxmış boşluqlardan istifadə edir. Yama çıxandan sonra avtomatik skanerlər internetdə köhnə versiyalı serverləri axtarmağa başlayır. Server nə qədər gec yenilənirsə, risk pəncərəsi o qədər uzun olur.

Avtomatik yeniləmə tək qoruma deyil, amma əsas qatdır. Onu SSH qorunması ilə birləşdirin: brute-force cəhdlərinin qarşısını almaq üçün Fail2ban ilə qorunma, gündəlik iş üçün isə root əvəzinə ayrıca istifadəçi (bu barədə Linux-da sudo istifadəçilərinin idarəsi yazısı var).

1. Quraşdırma və aktivləşdirmə

Ubuntu 24.04 server versiyalarında paket adətən artıq quraşdırılıb. Hər ehtimala qarşı:

sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Açılan pəncərədə "Yes" seçin. Bu əmr /etc/apt/apt.conf.d/20auto-upgrades faylını yaradır. Yoxlayın:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

"1" hər gün deməkdir: paket siyahıları gündəlik yenilənir və yeniləmələr gündəlik quraşdırılır.

2. Konfiqurasiya faylları

Əsas ayarlar /etc/apt/apt.conf.d/50unattended-upgrades faylındadır. Standart halda yalnız bu mənbələr aktivdir:

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

Yəni avtomatik olaraq yalnız təhlükəsizlik yeniləmələri gəlir, adi funksional yeniləmələr (-updates) şərh kimi bağlıdır. Server üçün bu, düzgün balansdır.

Bu faylı birbaşa redaktə etmək əvəzinə öz ayarlarınızı ayrıca faylda saxlayın. Paket yenilənəndə əsas fayl dəyişə bilər, sizin fayl isə toxunulmaz qalır:

sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Package-Blacklist {
    "mariadb-server";
};
  • Remove-Unused-Kernel-Packages: köhnə kernel paketlərini silir, /boot bölməsinin dolmasının qarşısını alır.
  • Automatic-Reboot: yeniləmə yenidən başlatma tələb edirsə, server göstərilən vaxtda özü yenidən başlayır.
  • Package-Blacklist: avtomatik yenilənməsini istəmədiyiniz paketlər. Ehtiyatla işlədin: siyahıdakı paketlərin təhlükəsizlik yamalarını artıq özünüz quraşdırmalısınız.

3. Vaxt: yeniləmə nə vaxt işləyir

Yeniləmələri iki systemd taymeri idarə edir:

systemctl list-timers 'apt-daily*'

apt-daily.timer paket siyahılarını yeniləyir, apt-daily-upgrade.timer isə standart olaraq səhər saat 6 radələrində (təsadüfi gecikmə ilə) quraşdırmanı başladır. Vaxt serverin saat qurşağına görədir, VPS-lər isə çox vaxt UTC ilə gəlir. Bakı vaxtına keçin:

sudo timedatectl set-timezone Asia/Baku

Quraşdırmanı gecəyə çəkmək istəyirsinizsə, taymeri dəyişin:

sudo systemctl edit apt-daily-upgrade.timer
[Timer]
OnCalendar=
OnCalendar=*-*-* 03:30
RandomizedDelaySec=0

Boş OnCalendar= sətri köhnə vaxtı silir. Bu halda yeniləmə 03:30-da quraşdırılır, lazım olsa server 04:00-da yenidən başlayır.

4. Kernel yeniləmələri və yenidən başlatma

Kitabxana və proqram yeniləmələrinin çoxu xidməti yenidən başlatmaqla tətbiq olunur. Ubuntu 24.04-də needrestart aləti köhnə kitabxananı istifadə edən xidmətləri aşkarlayır və onları yenidən başlada bilər. Kernel isə yalnız server yenidən başlayanda dəyişir. Yenidən başlatmanın gözlənildiyini belə yoxlaya bilərsiniz:

ls /var/run/reboot-required
cat /var/run/reboot-required.pkgs

Fayl yoxdursa, yenidən başlatma lazım deyil. Avtomatik yenidən başlatmanı söndürmüsünüzsə, bu yoxlamanı həftəlik edin və yenidən başlatmanı özünüz planlaşdırın.

Yenidən başlatmadan qaçmaq mümkün olmayan serverlər üçün Canonical-ın Livepatch xidməti var: kritik kernel yamalarını işləyən sistemə tətbiq edir. O, Ubuntu Pro abunəliyinin bir hissəsidir, şəxsi istifadə üçün isə məhdud sayda maşında pulsuz verilir. Amma Livepatch hər yeniləməni əvəz etmir, planlı yenidən başlatma yenə lazım olacaq.

5. Yoxlama, loglar və bildiriş

Ayarların düzgün oxunduğunu sınaq rejimində yoxlayın (heç nə quraşdırılmır):

sudo unattended-upgrade --dry-run --debug

Çıxışda "Allowed origins" siyahısını və quraşdırılacaq paketləri görəcəksiniz. Real nəticələr isə loglardadır:

sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
grep -A3 "Start-Date" /var/log/apt/history.log | tail -n 20

Hesabatı e-poçtla almaq istəyirsinizsə, 52unattended-upgrades-local faylına bu sətirləri əlavə edin. Bunun üçün serverdə məktub göndərə bilən poçt aləti (məsələn, qurulmuş mailutils) olmalıdır:

Unattended-Upgrade::Mail "admin@sizindomen.az";
Unattended-Upgrade::MailReport "on-change";

on-change yalnız nəsə quraşdırılanda və ya xəta olanda məktub göndərir, gündəlik boş hesabatlarla qutunuzu doldurmur.

Risklər və onların idarəsi

  • Qısa dayanma. Avtomatik yenidən başlatma bir neçə dəqiqə əlçatmazlıq deməkdir. Vaxtı ən az trafik olan saata qoyun və serverin geri qalxdığını Uptime Kuma ilə 7/24 izləyin.
  • Xidmətin yenidən başlaması. Verilənlər bazası yenilənəndə qısa müddətə bağlantılar qopa bilər. Kritik bazalar üçün Package-Blacklist və əl ilə planlı yeniləmə daha uyğundur.
  • Xarici repozitoriyalar. Docker-in və ya PPA-ların paketləri standart siyahıda yoxdur və avtomatik yenilənmir. Onları ayrıca izləyin.
  • apt kilidi. Yeniləmə gedərkən apt install "Could not get lock" deyə gözləyə bilər. Bu normaldır, proses bitəndə davam edin.

Bu qayda hər server üçün keçərlidir, o cümlədən xaricdən e-taxes-ə daxil olmaq üçün qurulan VPN serveri üçün də. Unutmayın ki, ən yaxşı yamalanmış server də insan səhvindən qorumur: komandanızı fişinq e-poçtlarını tanımağa öyrətmək eyni dərəcədə vacibdir.

Tez-tez verilən suallar

Bütün paketləri, təkcə təhlükəsizlik yox, avtomatik yeniləmək olar?

Olar, Allowed-Origins siyahısında -updates sətrini aktiv etmək kifayətdir. Amma production server üçün bu, gözlənilməz dəyişiklik riskini artırır.

Avtomatik yenidən başlatma təhlükəlidirmi?

Xidmətləriniz systemd ilə avtomatik qalxırsa, adətən yox. Server yenidən başlayandan sonra sayt və ya tətbiq özü işə düşmürsə, əvvəlcə bunu düzəldin.

Yeniləmədən sonra xidmət işləmirsə nə etməli?

Əvvəlcə /var/log/apt/history.log faylında hansı paketin dəyişdiyini tapın, sonra həmin xidmətin jurnalını journalctl -u xidmet_adi ilə oxuyun. Bu səbəbdən vacib serverlərdə yeniləmələrdən əvvəl müntəzəm ehtiyat nüsxə almaq lazımdır.

Yeniləmənin işlədiyini necə bilim?

unattended-upgrades logunda gündəlik qeydlər olmalıdır. apt list --upgradable əmri təhlükəsizlik paketlərini uzun müddət göstərirsə, nəsə işləmir.

Təhlükəsizlik yeniləmələri tam root girişi olan hər VPS-də bir dəfə qurulur və sonra özü işləyir. Yeni server lazımdırsa, VPS paketlərinə baxın: Bakı serverlərində Ubuntu 24.04 ilə başlaya bilərsiniz. Hostinq.az VPS-lərində Ubuntu, Debian, AlmaLinux və Windows Server seçimləri var.

Paylaş: