Τι κάνουμε · Δεδομένα και web: Αναβαθμίσεις PHP και patching ασφαλείας σε όλο τον στόλο

Μια PHP στο τέλος του κύκλου ζωής της δεν λαμβάνει ποτέ τη διόρθωση για την επόμενη ευπάθεια που θα γίνει αντικείμενο εκμετάλλευσης. Μεταφέρουμε εφαρμογές σε υποστηριζόμενη PHP χωρίς να τις χαλάσουμε, και όταν εμφανίζεται ένα κρίσιμο ελάττωμα βάζουμε τη διόρθωση σε κάθε server που διαχειριζόμαστε την ίδια μέρα, έναν host τη φορά, με rollback έτοιμο σε κάθε βήμα.
Τι είναι
Δύο υπηρεσίες που μοιράζονται μία πειθαρχία:
- Προγραμματισμένες αναβαθμίσεις: η μεταφορά μιας εφαρμογής από έναν παλιό κλάδο PHP σε έναν υποστηριζόμενο, συμπεριλαμβανομένου εμπορικού λογισμικού προστατευμένου με encoders, σε απλό Linux, Plesk και cPanel με CloudLinux.
- Επείγον patching: όταν δημοσιοποιείται μια κρίσιμη ευπάθεια PHP, ένα προσωρινό μέτρο μπροστά από την εφαρμογή σας μέσα στην ώρα, και στη συνέχεια η διορθωμένη PHP σε όλο τον στόλο μόλις υπάρξει.
Πώς το χτίζουμε
Δίπλα δίπλα, ποτέ από πάνω. Η νέα έκδοση PHP εγκαθίσταται δίπλα στην παλιά. Η μετάβαση είναι μια μοναδική, αναστρέψιμη αλλαγή του FastCGI socket ή pool, και η παλιά έκδοση συνεχίζει να τρέχει ως διαδρομή rollback μέχρι να περάσει μια καθαρή περίοδος burn-in.
Απόδειξη πριν από το άλμα. Πριν από μια μεγάλη αναβάθμιση κάνουμε compile check σε κάθε αρχείο PHP της εφαρμογής με την έκδοση προορισμού, ιχνηλατούμε ποια αρχεία φορτώνει πραγματικά η ζωντανή κίνηση (συμπεριλαμβανομένων των διαδρομών για συνδεδεμένους χρήστες), και επαληθεύουμε τα κωδικοποιημένα αρχεία διαβάζοντας τις κεφαλίδες τους αντί να εμπιστευόμαστε το banner συμβατότητας ενός προμηθευτή. Τα προβλήματα βγαίνουν στον δικό μας πάγκο, όχι στη σελίδα checkout σας.
Πρώτα ένα προσωρινό μέτρο. Όταν δημοσιοποιείται μια κρίσιμη ευπάθεια, δεν περιμένουμε τα πακέτα. Απενεργοποιούμε τη θιγόμενη λειτουργία στη διαμόρφωση όπου αυτό είναι δυνατό, και εφαρμόζουμε έναν κανόνα στον load balancer που απορρίπτει το ύποπτο input σε request bodies, query strings και cookies.
Δικά μας builds όταν τα mirrors καθυστερούν. Αν τα repositories της διανομής είναι πιο αργά από την απειλή, χτίζουμε τη διορθωμένη PHP μόνοι μας από τον upstream πηγαίο κώδικα, με tag που επιτρέπει στο επίσημο πακέτο να την αντικαταστήσει αυτόματα όταν φτάσει.
Την ίδια μέρα, με εσάς ενήμερους. Τα επείγοντα patches βγαίνουν την ίδια μέρα που υπάρχει η διόρθωση. Μένετε ενήμεροι σε κάθε βήμα, και αν ένα patch χρειάζεται downtime στην υπηρεσία σας, το συμφωνούμε πρώτα μαζί σας. Οι προγραμματισμένες αναβαθμίσεις ακολουθούν τον ίδιο κανόνα: αν μια αλλαγή μπορεί να αγγίξει την κίνησή σας, συμφωνούμε μαζί σας τον χρόνο πριν ξεκινήσουμε.
Ένας host τη φορά. Οι εφαρμογές των αλλαγών γίνονται server προς server, με health check πριν και μετά από καθέναν. Σε στόλους cPanel και Plesk, ένας timer παρακολουθεί για τα διορθωμένα builds του κατασκευαστή και τα εφαρμόζει με πύλη υγείας σε δείγμα ζωντανών sites σε κάθε server. Οποιαδήποτε παλινδρόμηση σταματά την εφαρμογή.
Από τι σας προστατεύει
- Να τρέχετε μια έκδοση PHP που δεν θα διορθωθεί ποτέ απέναντι σε ένα ελάττωμα που ήδη γίνεται αντικείμενο εκμετάλλευσης.
- Μια αναβάθμιση που χαλάει το site χωρίς γρήγορο δρόμο επιστροφής.
- Ένα ελάττωμα υπό ενεργή εκμετάλλευση που μένει ανοιχτό αφού η διόρθωσή του έχει δημοσιευτεί.
- Κωδικοποιημένο εμπορικό λογισμικό που αρνείται να φορτώσει μετά από αναβάθμιση.
- Μια εκστρατεία patching που σταματά στα μισά επειδή ένας server συμπεριφέρθηκε περίεργα και κανείς δεν το πρόσεξε.
Στην πράξη
Απόκριση την ίδια μέρα σε όλο τον στόλο των πελατών. Όταν αναφέρεται μια κρίσιμη ευπάθεια PHP υπό εκμετάλλευση, το προσωρινό μέτρο μας στο edge και στη διαμόρφωση μπαίνει σε λειτουργία πριν από την upstream έκδοση, και τα διορθωμένα builds μας ακολουθούν μέσα σε ώρες. Clusters εκδόσεων πολλών blades, application hosts στον νεότερο κλάδο PHP, και μεμονωμένοι servers πελατών με Plesk, cPanel και απλό Linux διορθώνονται ένας ένας, με μία ομαλή επανεκκίνηση worker περίπου ενός δευτερολέπτου και καμία αλλαγή στον χρόνο uncached render.
Αναβαθμίσεις που φτάνουν μέχρι τις διαδρομές των συνδεδεμένων χρηστών. Σε εμπορικές εφαρμογές PHP δοκιμάζουμε όχι μόνο τις δημόσιες σελίδες αλλά και τις διαδρομές που φτάνουν μόνο συνδεδεμένοι χρήστες και διαχειριστές, γιατί εκεί κρύβονται τα αποσυρμένα modules και τα παλιά αρχεία. Κάθε βήμα της αναβάθμισης μπορεί να αναιρεθεί με μία μόνο αλλαγή διαμόρφωσης.
Γιατί EuroVPS
- Απόκριση την ίδια μέρα σε κρίσιμα ελαττώματα PHP σε ολόκληρο τον στόλο με διαχείριση, με εσάς ενήμερους και κάθε downtime συμφωνημένο πρώτα.
- Χτίζουμε από τον upstream πηγαίο κώδικα όταν τα πακέτα αργούν, και αφήνουμε τα επίσημα πακέτα να αναλάβουν καθαρά.
- Κάθε αναβάθμιση έχει rollback ενός βήματος, που διατηρείται μέχρι να τελειώσει το burn-in.
- Plesk, cPanel με CloudLinux και απλό Linux, με την ίδια μέθοδο.
- Γραπτό αρχείο για κάθε server που διορθώθηκε, με τους ελέγχους πριν και μετά.
Συχνές ερωτήσεις
Ποιες εκδόσεις PHP υποστηρίζετε; Όποιον κλάδο χρειάζεται η εφαρμογή σας κατά τη μετάβαση, με πλάνο για να φτάσει σε υποστηριζόμενο κλάδο. Δεν θα αφήσουμε έναν server με διαχείριση σε κλάδο στο τέλος του κύκλου ζωής του χωρίς να σας το πούμε.
Θα χαλάσει μια αναβάθμιση τα plugins ή τα κωδικοποιημένα modules μας; Το μαθαίνουμε πριν από τη μετάβαση, με compile check και ιχνηλάτηση της πραγματικής κίνησης. Ό,τι είναι ασύμβατο καταγράφεται με επιλογές πριν αλλάξουμε.
Θα έχουμε downtime κατά το patching; Σε stacks πολλών κόμβων, όχι: οι κόμβοι διορθώνονται ένας τη φορά πίσω από τον load balancer. Σε έναν μεμονωμένο server, μια επανεκκίνηση PHP-FPM παίρνει περίπου ένα δευτερόλεπτο, και αν χρειάζεται οποιοδήποτε downtime το συμφωνούμε πρώτα μαζί σας.
Πώς ξέρουμε ότι έγινε; Λαμβάνετε αρχείο με το τι άλλαξε, πότε, και τους ελέγχους υγείας πριν και μετά.
Θέλετε PHP που είναι ενημερωμένη, και παραμένει έτσι; Μιλήστε με έναν μηχανικό.
Ο επόμενος συνεργάτης σας στην υποδομή
Ας δούμε την υποδομή σας.
Πείτε μας τι τρέχετε σήμερα και τι χρειάζεται βελτίωση. Ένας μηχανικός θα εξετάσει το αίτημά σας και θα σας βοηθήσει να σχεδιάσετε το επόμενο βήμα.
+357 222 32280
Ας ξεκινήσουμε από την υποδομή σας.
Λίγο πλαίσιο μάς βοηθά να ξεκινήσουμε τη σωστή συζήτηση.
