Το υλικολογισμικό σε έναν δρομολογητή καταναλωτή ή ένα NAS συχνά ξαναχτίζει τη διαμόρφωση OpenVPN σε κάθε εκκίνηση, οπότε μια οδηγία που προσθέτετε επιβιώνει ακριβώς μέχρι την επόμενη εκκίνηση. Το ίδιο ισχύει για κλειδιά που πληκτρολογούνται σε φόρμα ιστού, όπου η αποθηκευμένη τιμή μπορεί να επιστρέψει αλλοιωμένη μετά την αποθήκευση. Κανένα από αυτά τα συμπτώματα δεν σημαίνει ότι η αλλαγή απορρίφθηκε. Σημαίνει ότι η επεξεργασία κατέληξε σε ένα αρχείο που το υλικολογισμικό αντιμετωπίζει ως έξοδο, και ότι η μόνιμη θέση βρίσκεται ένα βήμα νωρίτερα στην ακολουθία εκκίνησης.

Γιατί το επεξεργασμένο αρχείο αναπαράγεται

Ένα σενάριο εκκίνησης συναρμολογεί τη διαμόρφωση του διακομιστή από ένα πρότυπο και μετά εκκινεί τον δαίμονα, γεγονός που κάνει το παραγόμενο αρχείο τεχνούργημα κατασκευής και όχι πηγή. Ό,τι προστίθεται μετά την εκκίνηση είναι αόρατο στην επόμενη εκτέλεση αυτού του σεναρίου. Το δεύτερο μοτίβο είναι πιο λεπτό: οι είσοδοι κλειδιού και πιστοποιητικού στη διεπαφή ιστού αποθηκεύονται σε διαφυγμένη μορφή, και η αποθήκευση της φόρμας μπορεί να σπρώξει αυτό το διαφυγμένο κείμενο στο αρχείο που διαβάζει ο δαίμονας. Και στις δύο περιπτώσεις, η παραγόμενη διαμόρφωση είναι το λάθος μέρος για μια μόνιμη αλλαγή.

Κοιτάξτε τι γράφει η ακολουθία εκκίνησης και πότε το γράφει. Η απάντηση είναι σχεδόν πάντα ένα σενάριο στον κατάλογο init ή αυτόματης εκκίνησης του υλικολογισμικού.

Εισαγάγετε την οδηγία εκεί όπου το σενάριο χτίζει το αρχείο

Οι συσκευές QTS αναπαράγουν τη διαμόρφωση του διακομιστή OpenVPN μέσα στο σενάριο init που εκκινεί τον δαίμονα, οπότε η επεξεργασία πρέπει να γίνει εκεί. Προσθέστε την προσάρτηση αμέσως πριν από την εντολή εκκίνησης αντί να επεξεργάζεστε το παραγόμενο αρχείο.

sed -i '/daemon_mgr/i echo client-config-dir clientconfig >>/etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh
grep -c client-config-dir /etc/openvpn/server.conf

Αγκυρώστε την εισαγωγή σε μια εντολή που δεν θα μετακινηθεί, αφού οι αριθμοί γραμμών αλλάζουν μεταξύ κατασκευών. Επειδή το ίδιο το σενάριο init αντικαθίσταται κατά την εκκίνηση, η αλλαγή πρέπει να εκδίδεται ξανά από το άγκιστρο αυτόματης εκκίνησης κάθε φορά που ξεκινά το σύστημα. Μετά από μία επανεκκίνηση, μετρήστε τις εμφανίσεις στο παραγόμενο αρχείο: μία γραμμή σημαίνει ότι το μπάλωμα δούλεψε, ενώ δύο σημαίνουν ότι το άγκιστρο τρέχει περισσότερες από μία φορές. Ερευνήστε τη διπλή εκτέλεση ξεχωριστά, γιατί δεν είναι το ίδιο σφάλμα με μια αλλαγή που εξαφανίστηκε.

Επιδιορθώστε μια φόρμα που αποθήκευσε διαφυγμένα κλειδιά

Σε σελίδες τύπου Asus τα πεδία πιστοποιητικού και κλειδιού εμφανίζουν διαφυγμένο κείμενο, και μια αποθήκευση μετά από άσχετη προσαρμογή μπορεί να γράψει αυτές τις οντότητες πίσω στον δίσκο. Δουλέψτε από αποκωδικοποιημένο αντίγραφο και αποθηκεύστε μόνο μία φορά, αφού όλες οι αλλαγές είναι έτοιμες.

openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pem

Όταν αλλάζετε ένα νέο σύνολο παραμέτρων, επικολλήστε μόνο το φορτίο base64 αν το πεδίο ζητά το σώμα του κλειδιού, και κρατήστε τις γραμμές θωράκισης μόνο όταν το πεδίο περιμένει πλήρες μπλοκ PEM. Η ανάκτηση μιας σελίδας που έχει ήδη αποθηκευτεί στη διαφυγμένη μορφή της συνήθως σημαίνει καθαρισμό των επηρεαζόμενων πεδίων και εφαρμογή, που επιτρέπει στο υλικολογισμικό να τα ξαναχτίσει. Δημιουργήστε οτιδήποτε πάνω από 2048 bit σε σταθμό εργασίας, γιατί η παροχή εντροπίας του δρομολογητή κάνει τη λειτουργία αργή και μερικές φορές αναξιόπιστη. Αποθηκεύστε το αρχείο παραμέτρων κάπου που μπορείτε να φτάσετε μετά από επαναφορά εργοστασιακών ρυθμίσεων.

Ελέγξτε ξανά μετά από αναβαθμίσεις

Οι ενημερώσεις υλικολογισμικού αντικαθιστούν τα σενάρια init και μπορούν να σβήσουν τον κατάλογο αυτόματης εκκίνησης, οπότε το μπάλωμα πρέπει να εγκατασταθεί ξανά και να δοκιμαστεί. Συγκρίνετε το αναπαραγμένο αρχείο με το αντίγραφο που κρατήσατε και επιβεβαιώστε ότι η οδηγία υπάρχει ακριβώς μία φορά. Μια τιμή ορατή στη διεπαφή ιστού δεν είναι απόδειξη ότι ο δαίμονας την έλαβε, αφού η σελίδα διαβάζει αποθηκευμένα πεδία. Γράψτε την εντολή μπαλώματος και την έκδοση υλικολογισμικού στις σημειώσεις συντήρησης ώστε η επόμενη ενημέρωση να τις μεταφέρει.

Στη συνέχεια συνδέστε έναν πελάτη και διαβάστε το αρχείο καταγραφής του διακομιστή για την επιλογή που προωθήθηκε. Μια ρύθμιση που υπήρξε ποτέ μόνο σε μια φόρμα είναι μια ρύθμιση που δεν δοκίμασε κανείς.

Σχετικά άρθρα