انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

دليل التحديثات التلقائية: إعداد unattended-upgrades

تثبيت وإعداد unattended-upgrades وتحديثات الأمان فقط وإشعارات البريد الإلكتروني والاختبار والمخاطر والتخفيف منها.

وقت القراءة: 10 دقيقة إدارة الخادم
unattended-upgradesتحديثات تلقائيةتحديثات الأمانubuntudebianlinuxapt

جدول المحتويات

دليل التحديثات التلقائية: إعداد unattended-upgrades

أحد المتطلبات الأساسية لأمان الخادم هو التطبيق الفوري لتصحيحات الأمان. نسيان التحديث اليدوي قد يُعرّض خادمك لثغرات أمنية معروفة. تُطبّق حزمة unattended-upgrades تحديثات الأمان تلقائياً على أنظمة Ubuntu وDebian. يغطي هذا الدليل التثبيت والإعداد وأفضل الممارسات.

ما هو unattended-upgrades؟

unattended-upgrades هو ملحق APT يُنزّل تحديثات الأمان ويثبّتها تلقائياً دون تدخل بشري. مثالي لـ:

  • التطبيق السريع لتصحيحات الأمان الحرجة
  • التحديثات التلقائية خارج ساعات العمل أو في نوافذ الصيانة
  • تبسيط تتبع التحديثات عند إدارة خوادم متعددة

قد تتسبب التحديثات التلقائية أحياناً في انقطاع الخدمة. تحديثات النواة بالذات تتطلب إعادة تشغيل. قم بالإعداد بعناية في بيئات الإنتاج.

التثبيت

Ubuntu/Debian

hljs bash
# تثبيت الحزمة
sudo apt update
sudo apt install unattended-upgrades apt-listchanges -y

# التحقق من التثبيت
dpkg -l unattended-upgrades

# التحقق من حالة الخدمة
systemctl status unattended-upgrades

معالج الإعداد التلقائي

hljs bash
# إعداد الإعدادات الأساسية تلقائياً
sudo dpkg-reconfigure -plow unattended-upgrades
# اختر "Yes"

الإعداد الأساسي

ملف الإعداد الرئيسي: /etc/apt/apt.conf.d/50unattended-upgrades

hljs bash
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    // تحديثات أمان Ubuntu
    "${distro_id}:${distro_codename}-security";

    // جميع التحديثات (غير موصى به — يُفضَّل الأمان فقط)
    // "${distro_id}:${distro_codename}";
    // "${distro_id}:${distro_codename}-updates";
};

// استثناء حزم معينة من التحديثات
Unattended-Upgrade::Package-Blacklist {
    // "nginx";
    // "mysql-server";
    // "php*";
};

// إعادة التشغيل التلقائية بعد التحديثات
Unattended-Upgrade::Automatic-Reboot "false";

// وقت إعادة التشغيل (فقط إذا كان Automatic-Reboot صحيحاً)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// إزالة التبعيات غير المستخدمة
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// إزالة حزم النواة غير المستخدمة
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// إشعار البريد الإلكتروني
Unattended-Upgrade::Mail "admin@rexe.tr";

// إرسال بريد إلكتروني عند التغييرات فقط
Unattended-Upgrade::MailReport "on-change";
// الخيارات: "always" أو "only-on-error" أو "on-change"

// الاحتفاظ بسجل التحديثات
Unattended-Upgrade::SyslogEnable "true";

جدول التحديثات

يُعدَّ تكرار التحديثات في /etc/apt/apt.conf.d/20auto-upgrades:

hljs bash
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
// تحديث قائمة الحزم يومياً
APT::Periodic::Update-Package-Lists "1";

// تنزيل الحزم القابلة للترقية يومياً
APT::Periodic::Download-Upgradeable-Packages "1";

// تشغيل unattended-upgrades يومياً
APT::Periodic::Unattended-Upgrade "1";

// تنظيف ذاكرة التخزين المؤقت القديمة كل 7 أيام
APT::Periodic::AutocleanInterval "7";

القيم بالأيام. "1" = يومياً، "7" = أسبوعياً، "0" = معطّل.

تحديثات الأمان فقط

تطبيق تحديثات الأمان فقط تلقائياً هو النهج الأكثر أماناً لخوادم الإنتاج:

Unattended-Upgrade::Allowed-Origins {
    // تحديثات الأمان فقط
    "${distro_id}:${distro_codename}-security";
};

// تعليق جميع مصادر التحديثات الأخرى
// "${distro_id}:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";

إشعارات البريد الإلكتروني

yتطلب mailutils أو postfix لإشعارات التحديث:

hljs bash
# تثبيت mailutils
sudo apt install mailutils -y

# لإعداد SMTP بسيط
sudo apt install ssmtp -y
sudo nano /etc/ssmtp/ssmtp.conf
root=admin@rexe.tr
mailhub=smtp.gmail.com:587
AuthUser=بريدك@gmail.com
AuthPass=كلمة-مرور-التطبيق
UseTLS=YES
UseSTARTTLS=YES
hljs bash
# اختبار البريد الإلكتروني
echo "رسالة اختبار" | mail -s "اختبار تحديث الخادم" admin@rexe.tr

اختبار الإعداد

تشغيل تجريبي (Dry Run)

hljs bash
# محاكاة دون تحديث فعلي
sudo unattended-upgrade --dry-run --debug

# ناتج أكثر تفصيلاً
sudo unattended-upgrade -d --dry-run

تشغيل يدوي

hljs bash
# تشغيل unattended-upgrades فوراً
sudo unattended-upgrade -d

# التشغيل في الوضع التفصيلي
sudo unattended-upgrade --verbose

مراجعة ملفات السجل

hljs bash
# ملف السجل الرئيسي
cat /var/log/unattended-upgrades/unattended-upgrades.log

# سجلات الأخطاء
cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

# مراقبة السجل في الوقت الفعلي
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

تحديثات النواة وإعادة التشغيل

تحديثات النواة تتطلب اهتماماً خاصاً:

hljs bash
# التحقق من الحاجة لإعادة التشغيل
cat /var/run/reboot-required

# الحزم التي تتطلب إعادة تشغيل
cat /var/run/reboot-required.pkgs

# فحص الحاجة لإعادة التشغيل
if [ -f /var/run/reboot-required ]; then
  echo "إعادة التشغيل مطلوبة!"
fi

إعداد إعادة التشغيل التلقائية

// تفعيل إعادة التشغيل التلقائية
Unattended-Upgrade::Automatic-Reboot "true";

// وقت إعادة التشغيل (2:00 صباحاً)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// عدم إعادة التشغيل إذا كان المستخدمون مسجلين
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";

قبل تفعيل إعادة التشغيل التلقائية، قيّم ما إذا كان تطبيقك يتحمل إعادة التشغيل. تُفضَّل إعادة التشغيل اليدوية لأنظمة الإنتاج الحرجة.

المخاطر وتخفيفها

المخاطر المحتملة

  1. انقطاع الخدمة: بعض التحديثات تُعيد تشغيل الخدمات
  2. تعارضات التبعيات: قد تحدث تعارضات الحزم في حالات نادرة
  3. تغييرات الإعداد: قد تُعدّل التحديثات ملفات الإعداد
  4. تحديثات النواة: تتطلب إعادة تشغيل

تخفيف المخاطر

Unattended-Upgrade::Package-Blacklist {
    // خادم قاعدة البيانات الحرج
    "mysql-server";
    "postgresql";
    // خادم الويب
    "nginx";
    "apache2";
    // النواة (للتحديثات اليدوية)
    "linux-image*";
    "linux-headers*";
};
hljs bash
# التحقق من حالة الخدمات بعد التحديثات
systemctl --failed

# مراجعة السجلات بانتظام
tail -100 /var/log/unattended-upgrades/unattended-upgrades.log

dnf-automatic لـ CentOS/AlmaLinux/RHEL

تستخدم الأنظمة المستندة إلى RPM dnf-automatic:

hljs bash
# التثبيت
sudo dnf install dnf-automatic -y

# الإعداد
sudo nano /etc/dnf/automatic.conf
hljs ini
[commands]
# تحديثات الأمان فقط
upgrade_type = security
# تطبيق التحديثات تلقائياً
apply_updates = yes

[emitters]
# إشعار البريد الإلكتروني
emit_via = email
email_to = admin@rexe.tr
hljs bash
# تفعيل الخدمة
sudo systemctl enable --now dnf-automatic.timer

# التحقق من الحالة
sudo systemctl status dnf-automatic.timer

على أنظمة Ubuntu وCentOS، راقب ملفات السجل عن كثب خلال الأسبوع الأول بعد تفعيل التحديثات التلقائية. هذا يساعدك على اكتشاف المشاكل غير المتوقعة مبكراً.

الخلاصة

unattended-upgrades أداة قوية للحفاظ على أمان خوادم REXE. من خلال التطبيق التلقائي لتحديثات الأمان فقط وإضافة الحزم الحرجة إلى القائمة السوداء وتفعيل إشعارات البريد الإلكتروني، يمكنك الحفاظ على بيئة خادم آمنة ومستقرة. المراجعة المنتظمة للسجلات والتحقق في بيئة الاختبار يجعل عملية التحديث التلقائي أكثر موثوقية.