सर्वरों में ज़्यादातर सफल सेंधें चतुर exploit से नहीं, बल्कि ऐसी कमज़ोरी से होती हैं जिसका पैच कई महीने पहले आ चुका था। कारण आमतौर पर आलस नहीं होता: काम करते सर्वर पर हाथ से अपडेट करना डरावना है, क्योंकि apt upgrade कभी-कभी उन चीज़ों को दोबारा चालू कर देता है जिनके लिए किसी ने नहीं कहा था। स्वचालित अपडेट यह सवाल हल कर देते हैं, पर उनकी प्रतिष्ठा ख़राब है — ठीक उतनी ही जितनी जल्दबाज़ी में सेट किए जाने के हक़दार है।

आइए ऐसी व्यवस्था देखें जिसमें सुरक्षा पैच ख़ुद आते रहें और PHP का संस्करण रातोंरात न बदले।

स्थापना

sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades

संवाद /etc/apt/apt.conf.d/20auto-upgrades बनाता है। देखें कि उससे क्या निकला:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

इकाइयों का मतलब «रोज़ाना» है। यह सब क्लासिक cron नहीं, बल्कि systemd टाइमर चलाता है:

systemctl list-timers | grep apt

सबसे ज़रूरी बात: सिर्फ़ सुरक्षा

मुख्य फ़ाइल /etc/apt/apt.conf.d/50unattended-upgrades है। उसमें Allowed-Origins की सूची होती है (Debian पर Origins-Pattern), और डिफ़ॉल्ट रूप से वहाँ सिर्फ़ सुरक्षा रिपॉज़िटरी चालू है। उसे वैसा ही रहने दें।

-updates पंक्ति से टिप्पणी हटाने का लालच — «सब कुछ अपडेट होने दो» — तेज़ होता है। ऐसा न करें: updates रिपॉज़िटरी सिर्फ़ सुधार नहीं, नए संस्करण लाती है, और रात की चौंकाने वाली घटनाएँ ठीक वहीं से आती हैं। सुरक्षा और ताज़गी अलग काम हैं, और दूसरा तब बेहतर होता है जब आप कीबोर्ड के सामने हों।

अगर कोई पैकेज स्वचालित रूप से अपडेट नहीं होना चाहिए, तो उसके लिए ब्लैकलिस्ट है:

Unattended-Upgrade::Package-Blacklist {
    "mariadb-server";
    "php8.3-fpm";
};

इसे सोच-समझकर इस्तेमाल करें: यहाँ की हर पंक्ति का मतलब है «इसे मैं ख़ुद अपडेट करता हूँ» — और यह वादा निभाना पड़ेगा।

पुनरारंभ

मुख्य पंक्ति:

Unattended-Upgrade::Automatic-Reboot "false";

साइट वाले सर्वर के लिए इसे false पर छोड़ना सही है: तीन बजे रात बिना बताए पुनरारंभ एक दिन टले हुए पैच से बुरा है। पर इस निर्णय का एक अनिवार्य दूसरा हिस्सा है, और यही वह हिस्सा है जो भुला दिया जाता है।

जब कर्नेल, libc या openssl अपडेट होते हैं, तो सिस्टम फ़ाइल /var/run/reboot-required बनाता है। जब तक पुनरारंभ न हो, ठीक किया गया संस्करण डिस्क पर रहता है और पुराना मेमोरी में चलता रहता है — यानी कमज़ोरी कहीं नहीं गई, भले ही पैकेज अपडेट माना जाता हो। इसे साफ़-साफ़ जाँचें:

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

दूसरी फ़ाइल ठीक-ठीक बताती है कि पुनरारंभ किस वजह से ज़रूरी हुआ। नियम सरल है: झंडा दिखते ही अगले एक-दो दिन के भीतर की खिड़की तय करें, «कभी» नहीं।

लाइब्रेरियाँ अलग मामला हैं। openssl अपडेट हो जाता है और nginx तथा PHP-FPM पुराने संस्करण के साथ मेमोरी में चलते रहते हैं, और पुनरारंभ का झंडा आता ही नहीं। किसे पुनरारंभ चाहिए, यह needrestart दिखाता है:

sudo apt install needrestart
sudo needrestart -b

बस इसे «बताओ, पूछो मत» मोड में रखें — वरना यह ग़ैर-संवादात्मक स्थापना के बीच सवाल पूछने लगेगा और उसे लटका देगा। इसके लिए /etc/needrestart/conf.d/ में $nrconf{restart} = 'l'; पंक्ति वाली फ़ाइल डाल दें।

जाँचें कि यह काम भी करता है

बिना स्थापना के आज़माइशी रन:

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

आउटपुट दिखाता है कि कौन से पैकेज नियमों से मेल खाते हैं और कौन से क्यों अस्वीकार हुए। असल में क्या हुआ, यह लॉग में है:

sudo tail -50 /var/log/unattended-upgrades/unattended-upgrades.log

अभी कितने अपडेट इंतज़ार कर रहे हैं:

apt list --upgradable 2>/dev/null | grep -i security

यह आख़िरी कमांड सबसे काम की है। सेट किए गए स्वचालित अपडेट चुपचाप टूटने की आदत रखते हैं: /boot में जगह ख़त्म हो गई, रिपॉज़िटरी ने कुंजी बदल दी, किसी हाथ के संपादन के बाद टाइमर बंद हो गया। बाहर से सब ठीक है, और महीनों से पैच नहीं लगे।

/boot पर जगह

क्लासिक स्थिति: पुराने कर्नेल हटते नहीं, /boot विभाजन भर जाता है, नया कर्नेल लगना असफल हो जाता है, और अपडेट पूरी तरह रुक जाते हैं। कुछ महीनों में एक बार देख लेना ठीक रहता है:

df -h /boot
sudo apt autoremove --purge

या उसी 50unattended-upgrades में स्वचालित सफ़ाई चालू करें: Remove-Unused-Kernel-Packages "true" और Remove-Unused-Dependencies "true"

इंसान के लिए क्या बचता है

स्वचालित अपडेट रोज़मर्रा का काम हटाते हैं, निगरानी नहीं। दो सवाल जिनका जवाब आपको किसी भी क्षण देना आना चाहिए: कितने सुरक्षा अपडेट इंतज़ार में हैं, और पुनरारंभ का झंडा लगा है या नहीं। दोनों जवाब किसी पन्ने पर एक पंक्ति हैं, और पूरी बात यही है कि वह पंक्ति ख़ुद नज़र में आ जाए, न कि तिमाही में एक बार आपकी पहल पर।