Ενότητα 10 · 10.4
Τελικός έλεγχος: ο server σας υπό εξέταση
Ενότητα 10: Παραμείνετε ασφαλείς · Χρόνος ανάγνωσης: 10 λεπτά
Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να αξιολογήσετε τον δικό σας server με μια λίστα ελέγχου και έναν αυτόματο έλεγχο από έξω, γνωρίζετε ποια σημεία έχουν προτεραιότητα και έχετε έναν σταθερό ρυθμό συντήρησης και έναν σύντομο φάκελο server.
Βασικές έννοιες: λίστα ελέγχου, προτεραιότητα, έλεγχος από έξω, φάκελος server, ρυθμός συντήρησης (εβδομαδιαία, μηνιαία, ανά τρίμηνο, ανά έτος), ημερομηνία λήξης υποστήριξης της έκδοσης, δοκιμή επαναφοράς
Από μεμονωμένα μαθήματα σε ένα ενιαίο σύνολο
Σε αυτή την εκπαίδευση στήσατε έναν server βήμα προς βήμα: ασφαλή σύνδεση, δικαιώματα, ενημερώσεις, firewall, υπηρεσίες, έναν ιστότοπο με https, αντίγραφα ασφαλείας, παρακολούθηση και containers. Σε αυτό το τελευταίο μάθημα τα συγκεντρώνετε όλα σε μία λίστα. Ελέγχετε τον server σας, αφήνετε το πρόγραμμα της εκπαίδευσης να τον εξετάσει από έξω και καταγράφετε πώς θα τον συντηρείτε τα επόμενα χρόνια.
Ένας server δεν είναι ποτέ "έτοιμος". Το λογισμικό παλιώνει, τα πιστοποιητικά λήγουν, οι δίσκοι γεμίζουν, οι εκδόσεις φτάνουν στο end of life. Γι' αυτό ένας σταθερός ρυθμός είναι εξίσου σημαντικός με την αρχική ρύθμιση.
Η λίστα ελέγχου, κατά σειρά σπουδαιότητας
Δεν είναι όλα εξίσου επείγοντα. Διατρέξτε τη λίστα από πάνω προς τα κάτω: τα πρώτα μπλοκ αποτρέπουν τα περισσότερα προβλήματα.
Μπλοκ 1: κανείς δεν μπαίνει έτσι απλά (ενότητα 2, 3, 5)
- Σύνδεση μόνο με κλειδιά·
PasswordAuthentication noκαιKbdInteractiveAuthentication no, ελεγμένα μεsudo sshd -T. - Ο root δεν συνδέεται με κωδικό πρόσβασης· εργάζεστε ως κανονικός χρήστης με sudo.
- Οι βάσεις δεδομένων, οι caches και τα clusters αναζήτησης ακούν στο
127.0.0.1· οι θύρες 3306, 5432, 6379, 9200 και 27017 είναι κλειστές από έξω, τόσο για IPv4 όσο και για IPv6. - Ένα firewall με προεπιλογή να είναι όλα κλειστά για τα εισερχόμενα· ανοιχτές μόνο οι θύρες που χρειάζεστε.
- Το fail2ban εκτελείται για το SSH (
fail2ban-client status sshd).
Μπλοκ 2: τα κενά ασφαλείας κλείνουν (ενότητα 4)
- Οι αυτόματες ενημερώσεις ασφαλείας είναι ενεργές και ελεγμένες (αρχείο καταγραφής,
apt list --upgradable). - Ένα σχέδιο για επανεκκινήσεις· το
/var/run/reboot-requiredδεν παραμένει εκεί για εβδομάδες. - Η έκδοση υποστηρίζεται ακόμη· η ημερομηνία λήξης βρίσκεται στο ημερολόγιό σας.
Μπλοκ 3: μπορείτε να επιστρέψετε (ενότητα 8)
- Κρυπτογραφημένα αντίγραφα ασφαλείας εκτός του server, αυτόματα, με παρακολούθηση.
- Έχετε κάνει δοκιμή επαναφοράς και ξέρετε πόσο διαρκεί η επαναφορά.
- Ξέρετε πώς να δημιουργήσετε ένα snapshot και να ανοίξετε την κονσόλα.
Μπλοκ 4: η εξωτερική πλευρά είναι σωστή (ενότητα 7)
- Οι εγγραφές A και AAAA δείχνουν στον server σας· το reverse DNS (PTR) δείχνει πίσω στο ίδιο όνομα.
- https με έγκυρο πιστοποιητικό που ανανεώνεται αυτόματα· το http ανακατευθύνει στο https.
- HSTS και μερικά headers ασφαλείας· ένα
security.txtμε διεύθυνση επικοινωνίας που λειτουργεί και ημερομηνία λήξης.
Μπλοκ 5: βλέπετε τι συμβαίνει (ενότητα 6, 8)
- Το journal είναι μόνιμο (persistent)· μπορείτε να διαβάσετε αρχεία καταγραφής από πριν από μια επανεκκίνηση.
- Παρακολούθηση από έξω (προσβασιμότητα, πιστοποιητικό) και από μέσα (δίσκος, υπηρεσίες), με ειδοποιήσεις που φτάνουν πραγματικά.
- Το
systemctl --failedείναι κενό.
Μπλοκ 6: τα containers υπό έλεγχο (ενότητα 9, εφόσον χρησιμοποιείτε Docker)
- Οι θύρες των containers στο
127.0.0.1ή πίσω από τον reverse proxy· κανέναdocker.sockσε containers που δεν το χρειάζονται πραγματικά. - Τα volumes περιλαμβάνονται στα αντίγραφα ασφαλείας· τα images ενημερώνονται τακτικά.
- Τα μυστικά βρίσκονται σε αρχεία
.envμε αυστηρά δικαιώματα, όχι στο Git.
Ο έλεγχος από έξω
Ένα μέρος αυτής της λίστας μπορεί να το ελέγξει το πρόγραμμα της εκπαίδευσης από έξω, ακριβώς όπως βλέπει τον server σας οποιοσδήποτε στο internet. Η τελική άσκηση (Z10.4) συνδυάζει τους ελέγχους από προηγούμενες ασκήσεις:
| Στοιχείο | Τι κάνει το πρόγραμμα | Από το μάθημα |
|---|---|---|
| SSH | Διαβάζει το banner έκδοσης και ρωτά ποιες μεθόδους σύνδεσης προσφέρει ο server σας για το όνομα χρήστη σας· δεν συνδέεται | 2.2 |
| Θύρες βάσεων δεδομένων | Δοκιμάζει μόνο μια σύνδεση στις 3306, 5432, 6379, 9200 και 27017· δεν στέλνει τίποτα | 5.1 |
| https | Ελέγχει το πιστοποιητικό (έγκυρο, αξιόπιστο, σωστό όνομα) | 7.3 |
| Headers | Διαβάζει το HSTS και τα άλλα headers ασφαλείας | 7.4 |
| security.txt | Ανακτά το /.well-known/security.txt και ελέγχει τα Contact και Expires | 7.4 |
| Container | Αναζητά το header με τον κωδικό σας, που ορίζει ο reverse proxy σας | 9.4 |
Το πρόγραμμα δεν εκτελεί τίποτα στον server σας, δεν δοκιμάζει κωδικούς πρόσβασης και δεν σαρώνει άλλες θύρες. Κάθε διεύθυνση μπορεί να ελεγχθεί μόνο λίγες φορές την ώρα. Ένα πράσινο αποτέλεσμα σημαίνει: από έξω απουσιάζουν τα πιο γνωστά σφάλματα. Δεν λέει τίποτα για όσα συμβαίνουν μέσα στον server σας· αυτό είναι το υπόλοιπο της λίστας ελέγχου, το οποίο ελέγχετε εσείς οι ίδιοι.
Ο φάκελος server
Γράψτε για κάθε server ένα σύντομο έγγραφο, φυλαγμένο εκτός του server (για παράδειγμα στον διαχειριστή κωδικών πρόσβασης ή σε έναν κοινόχρηστο φάκελο):
- όνομα, διευθύνσεις IP, πάροχος, έκδοση και ημερομηνία λήξης υποστήριξης·
- τι εκτελείται (υπηρεσίες, containers, ιστότοποι) και για ποιο λόγο·
- ποιες θύρες είναι ανοιχτές και για ποιο σκοπό·
- πού βρίσκονται τα αντίγραφα ασφαλείας, πώς γίνεται η επαναφορά, πότε έγινε η τελευταία δοκιμή·
- ποια μυστικά υπάρχουν στον server (όχι τα ίδια τα μυστικά, αλλά ποια είναι και πού αντικαθίστανται)·
- τι κάνατε συνειδητά διαφορετικά από την προεπιλογή (για παράδειγμα μια πρόταση του Lynis που παραλείψατε, μάθημα 10.1)·
- ποιος έχει πρόσβαση (ποια κλειδιά βρίσκονται στο
authorized_keys).
Αυτός ο φάκελος είναι πολύτιμος σε ένα περιστατικό (μάθημα 10.3), σε μια αναβάθμιση έκδοσης (μάθημα 4.3) και όταν κάποιος άλλος αναλαμβάνει τη διαχείριση.
Ένας ρυθμός συντήρησης
Χωρίς ρυθμό, η προσοχή χαλαρώνει. Ένα παράδειγμα για έναν μικρό server· προσαρμόστε το στη δική σας κατάσταση.
| Πότε | Τι |
|---|---|
| Κάθε εβδομάδα | Έλεγχος της παρακολούθησης και των ειδοποιήσεων· systemctl --failed· επανεκκίνηση αν υπάρχει το /var/run/reboot-required (ή έλεγχος ότι η αυτόματη επανεκκίνηση λειτούργησε) |
| Κάθε μήνα | apt list --upgradable (μένει κάτι εκκρεμές;)· docker compose pull και up -d για τα containers σας, μαζί με τις release notes· χώρος στον δίσκο· fail2ban-client status· αρχείο καταγραφής για ασυνήθιστα σφάλματα (journalctl -p err --since "1 month ago") |
| Κάθε τρίμηνο | Δοκιμή επαναφοράς ενός αντιγράφου ασφαλείας· έλεγχος του authorized_keys και των χρηστών (αφαίρεση όσων δεν πρέπει πλέον να έχουν πρόσβαση)· νέα εκτέλεση του Lynis· νέα επανάληψη του τελικού ελέγχου από έξω (άσκηση Z10.4) |
| Κάθε χρόνο | Ενημέρωση του security.txt (Expires)· έλεγχος της ημερομηνίας λήξης υποστήριξης της έκδοσης και προγραμματισμός αναβάθμισης· ενημέρωση του φακέλου server και του σχεδίου έκτακτης ανάγκης σας |
Καταχωρίστε αυτές τις στιγμές στο ημερολόγιό σας. Ένα μεγάλο μέρος μπορείτε επίσης να το αυτοματοποιήσετε με την παρακολούθηση από το μάθημα 8.3, αλλά ο έλεγχος από εσάς παραμένει απαραίτητος.
Στην πράξη
Είτε ο server σας βρίσκεται στο WebOké είτε σε άλλον πάροχο: ο πάροχος φροντίζει το υλικό, το δίκτυο και τη δυνατότητα δημιουργίας snapshots και αντιγράφων ασφαλείας, εσείς φροντίζετε για όλα μέσα στον server. Αυτή η εκπαίδευση είναι αυτοβοήθεια: κανείς δεν παρακολουθεί τον server σας. Με αυτή τη λίστα ελέγχου, τον φάκελο και τον ρυθμό έχετε όμως όλα όσα χρειάζεστε για να κάνετε αυτή τη διαχείριση αυτόνομα και σωστά.
Σύνοψη
- Ελέγξτε τον server σας σε μπλοκ: κανείς δεν μπαίνει έτσι απλά, τα κενά ασφαλείας κλείνουν, μπορείτε να επιστρέψετε, η εξωτερική πλευρά είναι σωστή, βλέπετε τι συμβαίνει, τα containers υπό έλεγχο.
- Ο έλεγχος από έξω εξετάζει τις μεθόδους σύνδεσης SSH, τις θύρες βάσεων δεδομένων, το https, τα headers, το security.txt και το header του container σας· τα υπόλοιπα τα ελέγχετε εσείς.
- Τηρήστε έναν φάκελο server, εκτός του server.
- Εργαστείτε με σταθερό ρυθμό: εβδομαδιαία, μηνιαία, ανά τρίμηνο και ανά έτος.
Κουίζ
Άσκηση
Άσκηση Z10.4: Τελική άσκηση: ο server σας από έξω. Αφήστε το πρόγραμμα της εκπαίδευσης να ελέγξει τον server σας από έξω με μία κίνηση: τις μεθόδους σύνδεσης SSH για το όνομα χρήστη σας, τις πέντε θύρες βάσεων δεδομένων, το https και τα headers του ιστοτόπου σας, το security.txt σας και το header X-Weboke-Cursus με τον κωδικό σας στο όνομα όπου εκτελείται το container σας. Επιπλέον, συμπληρώστε τη λίστα ελέγχου των μπλοκ 1 έως και 6 για όσα δεν μπορεί να δει το πρόγραμμα.
Άσκηση O10.4: Ο ρυθμός συντήρησής σας. Δημιουργήστε τον δικό σας φάκελο server και ρυθμό συντήρησης: τι κάνετε εβδομαδιαία, μηνιαία, ανά τρίμηνο και ανά έτος, και καταχωρίστε αυτές τις στιγμές στο ημερολόγιό σας.
Άσκηση O10.4: Ο ρυθμός συντήρησής σας
Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.
Εβδομαδιαία: έλεγχος ενημερώσεων και ειδοποιήσεων· μηνιαία: μια μικρή επαναφορά και έλεγχος της πρόσβασης (authorized_keys, χρήστες)· ανά τρίμηνο: ένας πλήρης τελικός έλεγχος· ετησίως: πλήρης ανακατασκευή από το αντίγραφο ασφαλείας και ανανέωση του security.txt.
Τα τικ και οι σημειώσεις σας παραμένουν μόνο σε αυτό το πρόγραμμα περιήγησης· δεν τα στέλνουμε πουθενά. Αν έχετε εγγραφεί, αποθηκεύουμε στο Τα μαθήματά μου μόνο ότι έχετε ολοκληρώσει την άσκηση.
Για περαιτέρω μελέτη
- Ασφάλεια του VPS σας: τα πρώτα πέντε λεπτά
- HSTS και κεφαλίδες ασφαλείας για τον ιστότοπό σας
- Στρατηγική δημιουργίας αντιγράφων ασφαλείας: ο κανόνας 3-2-1 για τη δική σας επιχείρηση
- securitytxt.org (επεξήγηση και γεννήτρια για το security.txt): https://securitytxt.org/
- Το ολλανδικό NCSC, Κατάρτιση στρατηγικής αντιγράφων ασφαλείας (ολλανδική πηγή, στα ολλανδικά): https://www.ncsc.nl/back-up/een-back-up-strategie-opstellen
