Εν ολίγοις: Με το unattended-upgrades σε Debian και Ubuntu καθώς και με το dnf-automatic στην οικογένεια RHEL, οι διακομιστές Linux εγκαθιστούν μόνοι τους ενημερώσεις ασφαλείας. Για να ισχύει μια ενημέρωση, πρέπει στη συνέχεια να επανεκκινηθούν οι επηρεαζόμενες υπηρεσίες όπως το PHP-FPM· ελέγξτε το με needrestart ή με τους χρόνους εκκίνησης των διεργασιών. Εξωτερικές πηγές όπως το sury.org πρέπει να ελευθερωθούν ρητά, τα containers και οι αλλαγές κύριας έκδοσης δεν καλύπτονται από τον αυτοματισμό.
Από το patch στον διακομιστή: ο αυτοματισμός εξοικονομεί χρόνο
Όταν το php.net δημοσίευσε στις 21 Οκτωβρίου 2026 στις 16:00 ώρα Γερμανίας τα patches κατά του PHP2Shell, ξεκίνησε για τους διαχειριστές ένας αγώνας δρόμου. Σύμφωνα με αναφορές, οι διανομές παρέδωσαν τα backports τους εν μέρει ήδη την ίδια ημέρα. Οι διακομιστές με αυτόματες ενημερώσεις ασφαλείας μπορούσαν να εγκαταστήσουν τα νέα πακέτα στην επόμενη προγραμματισμένη εκτέλεση, χωρίς να χρειαστεί να παρέμβει κανείς.
Αυτό είναι το καλό νέο. Το λιγότερο καλό: εγκατεστημένο δεν σημαίνει αποτελεσματικό. Μια υπηρεσία PHP-FPM που εκτελείται εδώ και εβδομάδες συνεχίζει να δουλεύει με τον παλιό κώδικα στη μνήμη μέχρι να επανεκκινηθεί. Και πακέτα από εξωτερικές πηγές, containers ή πίνακες ελέγχου φιλοξενίας με δική τους διαχείριση PHP μένουν συχνά ανεπηρέαστα από τον αυτοματισμό.
Αυτό το άρθρο δείχνει πώς ρυθμίζετε αυτόματες ενημερώσεις ασφαλείας και πώς τις συμπληρώνετε ώστε να προστατεύουν πραγματικά στην κρίσιμη στιγμή.
unattended-upgrades σε Debian και Ubuntu
Στο Ubuntu το πακέτο unattended-upgrades είναι από προεπιλογή εγκατεστημένο και εγκαθιστά ενημερώσεις ασφαλείας. Στο Debian το εγκαθιστάτε εκ των υστέρων όταν χρειάζεται. Ελέγχεται μέσω δύο αρχείων κάτω από το /etc/apt/apt.conf.d/.
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
Το αρχείο 20auto-upgrades ορίζει αν και πόσο συχνά ενημερώνονται οι λίστες πακέτων και εγκαθίστανται ενημερώσεις. Η τιμή είναι ο αριθμός των ημερών, το "1" σημαίνει καθημερινά:
// /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Στο 50unattended-upgrades ορίζεται από ποιες πηγές επιτρέπεται να έρχονται ενημερώσεις, αν γίνεται επανεκκίνηση μετά και ποιος λαμβάνει ειδοποίηση. Από προεπιλογή είναι ελευθερωμένες μόνο οι επίσημες πηγές ασφαλείας της διανομής. Σύμφωνα με την τεκμηρίωση του Ubuntu δεν αρκεί να προστεθεί ένα επιπλέον repository: πρέπει επιπλέον να βρίσκεται σε αυτή τη λίστα, αλλιώς αγνοείται από τον αυτοματισμό. Αυτό αφορά για παράδειγμα το repository τρίτου παρόχου sury.org, που σύμφωνα με αναφορές παρείχε builds PHP για όλους τους κλάδους από 5.6 έως 8.5. Το υπόβαθρο υπάρχει στο άρθρο Το repository sury.org.
Το αν όλα είναι σωστά, το δείχνει μια δοκιμαστική εκτέλεση που δεν αλλάζει τίποτα:
sudo unattended-upgrade -v --dry-run
# Πρωτόκολλα των πραγματικών εκτελέσεων
ls -l /var/log/unattended-upgrades/
dnf-automatic σε RHEL, AlmaLinux και Rocky Linux
Στην οικογένεια RHEL το dnf-automatic αναλαμβάνει την ίδια δουλειά. Η διαμόρφωση βρίσκεται στο /etc/dnf/automatic.conf. Σύμφωνα με την τεκμηρίωση, το upgrade_type = security ελέγχει μόνο ενημερώσεις με υπόδειξη ασφαλείας και το apply_updates είναι από προεπιλογή απενεργοποιημένο.
# /etc/dnf/automatic.conf (απόσπασμα)
[commands]
upgrade_type = security
download_updates = yes
apply_updates = yes
reboot = never
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
systemctl list-timers 'dnf-automatic*'
Εκτός από το dnf-automatic.timer, που ακολουθεί το αρχείο διαμόρφωσης, υπάρχουν timers που μόνο ειδοποιούν, μόνο κατεβάζουν ή εγκαθιστούν πάντα. Για αρχή, ο timer με αρχείο διαμόρφωσης είναι ο πιο κατανοητός.
Το υποτιμημένο μέρος: επανεκκίνηση υπηρεσιών
Ο διαχειριστής πακέτων αντικαθιστά αρχεία στον δίσκο. Οι διεργασίες που εκτελούνται διατηρούν τον παλιό κώδικα στη μνήμη. Στην PHP αυτό σημαίνει: όσο το PHP-FPM ή ο Apache με mod_php δεν έχουν επανεκκινηθεί, η ευπάθεια παραμένει ανοιχτή.
| Εργαλείο | Σύστημα | Τι κάνει |
|---|---|---|
| needrestart | Debian, Ubuntu | αναγνωρίζει υπηρεσίες με παρωχημένα αρχεία· σε Ubuntu από 24.04 τις επανεκκινεί από προεπιλογή αυτόματα |
dnf needs-restarting -s |
οικογένεια RHEL | απαριθμεί υπηρεσίες που πρέπει να επανεκκινηθούν |
Automatic-Reboot |
unattended-upgrades | επανεκκινεί τον διακομιστή όταν το απαιτεί μια ενημέρωση· από προεπιλογή απενεργοποιημένο |
reboot |
dnf-automatic | never, when-changed ή when-needed |
Σύμφωνα με την τεκμηρίωση του Ubuntu, υπηρεσίες που έχουν εξαιρεθεί από το needrestart συνεχίζουν να εκτελούνται με παλιά αρχεία μέχρι τη χειροκίνητη επανεκκίνηση. Ελέγχετε γι' αυτό μετά από κάθε ενημέρωση PHP τον χρόνο εκκίνησης των διεργασιών, όπως περιγράφεται στο Επανεκκίνηση του PHP-FPM και όλων των workers.
Στα backports ο αριθμός έκδοσης PHP που εμφανίζεται παραμένει συχνά ίδιος. Το patch το αποδεικνύετε μέσω του changelog του πακέτου με τους αριθμούς CVE, για παράδειγμα με apt-get changelog ή rpm -q --changelog. Πώς γίνεται αναλυτικά, δείχνει το Debian και Ubuntu: είναι το πακέτο PHP μου διορθωμένο;.
Τι δεν καλύπτει ο αυτοματισμός
Οι αυτόματες ενημερώσεις είναι ένα δομικό στοιχείο, όχι πλήρης διαχείριση patches. Ορισμένες περιοχές χρειάζονται δικές τους διαδικασίες:
- Containers: Η PHP σε εικόνες Docker δεν ενημερώνεται από ενημερώσεις του host. Χτίστε ξανά τις εικόνες, δημιουργήστε ξανά τα containers.
- Πίνακες ελέγχου φιλοξενίας: Το Plesk, το cPanel και παρόμοιοι πίνακες διαχειρίζονται εν μέρει την PHP μέσω δικών τους πακέτων και μηχανισμών.
- Κύριες εκδόσεις: Η μετάβαση π.χ. από την PHP 8.2, που φτάνει στις 31/12/2026 στο τέλος της υποστήριξης, σε νεότερη έκδοση δεν γίνεται αυτόματα.
- Εφαρμογές: Τα CMS, τα plugins και οι εξαρτήσεις Composer έχουν δικούς τους δρόμους ενημέρωσης.
- Έλεγχος: Κάποιος πρέπει να διαβάζει πρωτόκολλα και μηνύματα σφαλμάτων του αυτοματισμού. Μια εκτέλεση που αποτυγχάνει αθόρυβα είναι χειρότερη από καμία, επειδή προσποιείται ασφάλεια.
Πώς αυτά τα μέρη συνενώνονται σε μια διαδικασία, περιγράφει το Διαχείριση patches ως διαδικασία αντί για πυροσβεστική.
Συμπέρασμα: αυτοματισμός ναι, τυφλή εμπιστοσύνη όχι
Οι αυτόματες ενημερώσεις ασφαλείας ανήκουν σε κάθε διακομιστή Linux που είναι προσβάσιμος από το διαδίκτυο. Το PHP2Shell έδειξε πόσο στενός μπορεί να γίνει ο χρόνος: σύμφωνα με δημοσιεύματα του Τύπου, μια πρώτη απόπειρα επίθεσης παρατηρήθηκε ήδη στις 17 Οκτωβρίου, τέσσερις ημέρες πριν από τα patches. Όποιος περιμένει μετά ακόμη ένα χειροκίνητο παράθυρο συντήρησης, χάνει πολύτιμο χρόνο.
Ο αυτοματισμός σας αφαιρεί όμως μόνο την εγκατάσταση. Η επανεκκίνηση των υπηρεσιών, η απόδειξη της κατάστασης των patches, τα containers, οι πίνακες ελέγχου και η έγκαιρη μετάβαση σε υποστηριζόμενες εκδόσεις παραμένουν εργασίες για τις οποίες πρέπει να είναι υπεύθυνος κάποιος. Ορίστε αυτή την ευθύνη γραπτά και ελέγχετε δειγματοληπτικά αν τα πρωτόκολλα του αυτοματισμού διαβάζονται πράγματι. Μόνο ο συνδυασμός αυτοματισμού και ελέγχου κάνει τις ενημερώσεις αξιόπιστες.
Πώς βοηθά συγκεκριμένα η PHP SOS;
- Ρύθμιση: Ρυθμίζουμε το unattended-upgrades ή το dnf-automatic ανάλογα με τους διακομιστές σας, συμπεριλαμβανομένων ελευθερωμένων εξωτερικών πηγών.
- Διασφάλιση επανεκκινήσεων: Στήνουμε το needrestart ή αντίστοιχους ελέγχους και ελέγχουμε μετά από ενημερώσεις PHP τους χρόνους εκκίνησης των διεργασιών.
- Κλείσιμο κενών: Containers, πίνακες ελέγχου και αλλαγές κύριας έκδοσης τα ενσωματώνουμε σε μια σταθερή διαδικασία συντήρησης.
- Έλεγχος: Στη σύμβαση συντήρησης ασφαλείας ελέγχουμε τα πρωτόκολλα του αυτοματισμού και αναφέρουμε ανωμαλίες.
Συχνές ερωτήσεις
Δεν είναι οι αυτόματες ενημερώσεις υπερβολικά επικίνδυνες σε διακομιστές παραγωγής;
Περιορισμένες σε ενημερώσεις ασφαλείας της διανομής, ο κίνδυνος είναι συνήθως μικρότερος από εκείνον μιας ανοιχτής ευπάθειας. Αυτές οι ενημερώσεις δεν προορίζονται να φέρουν νέες λειτουργίες, αλλά να διορθώσουν σφάλματα. Για κρίσιμα συστήματα ανήκουν επιπλέον αντίγραφα ασφαλείας, παρακολούθηση και ένα σύστημα δοκιμών.
Επανεκκινεί το unattended-upgrades το PHP-FPM μετά από μια ενημέρωση;
Όχι απαραίτητα από μόνο του. Σε Ubuntu από την έκδοση 24.04 το εργαλείο needrestart επανεκκινεί από προεπιλογή αυτόματα τις επηρεαζόμενες υπηρεσίες, οι εξαιρεθείσες υπηρεσίες συνεχίζουν όμως να εκτελούνται με παλιά αρχεία. Ελέγχετε μετά από κάθε ενημέρωση PHP τον χρόνο εκκίνησης όλων των διεργασιών PHP.
Ενημερώνονται αυτόματα πακέτα από το sury.org ή άλλες εξωτερικές πηγές;
Μόνο αν ελευθερώσετε ρητά την πηγή. Σύμφωνα με την τεκμηρίωση του Ubuntu δεν αρκεί να προστεθεί ένα repository· πρέπει επιπλέον να βρίσκεται στη λίστα των επιτρεπόμενων προελεύσεων του unattended-upgrades.
Αναβαθμίζει ο αυτοματισμός και την PHP 8.2 σε 8.3;
Όχι. Οι αυτόματες ενημερώσεις ασφαλείας μένουν μέσα στις εγκατεστημένες εκδόσεις πακέτων. Μια αλλαγή της κύριας έκδοσης PHP, για παράδειγμα πριν από τη λήξη της υποστήριξης της PHP 8.2 στις 31/12/2026, παραμένει ένα προγραμματισμένο έργο με δοκιμές.
Τι ισχύει για τα containers Docker;
Οι ενημερώσεις στον host δεν ενημερώνουν την έκδοση PHP στα containers. Οι εικόνες containers πρέπει να χτιστούν ξανά ή να ληφθούν ξανά και τα containers να δημιουργηθούν εκ νέου.