Η παρακολούθηση ακεραιότητας απαντά σε ένα ερώτημα που δεν απαντά ούτε ένα antivirus ούτε ένα τείχος προστασίας: τι άλλαξε σε αυτόν τον διακομιστή από την περασμένη εβδομάδα. Ένας σαρωτής υπογραφών ψάχνει γνωστά κακά· το AIDE δεν ξέρει τίποτα για κακία, ξέρει ότι αυτό το αρχείο ήταν διαφορετικό χθες. Για την ανεύρεση κερκόπορτας προσαρτημένης σε υπάρχον αρχείο, αυτή είναι η μόνη προσέγγιση που δουλεύει.
Το AIDE εγκαθίσταται με δύο εντολές. Η ρύθμισή του ώστε οι αναφορές του να διαβάζονται είναι το δύσκολο μέρος — και αυτό συνήθως το σκοτώνει: η πρώτη αναφορά έρχεται με δέκα χιλιάδες γραμμές, τη δεύτερη δεν την ανοίγει κανείς και έναν μήνα αργότερα η εργασία διαγράφεται.
Εγκατάσταση και η πρώτη βάση
sudo apt install aide aide-common
sudo aideinit
Η αρχικοποίηση παίρνει από λίγα λεπτά ως μισή ώρα: υπολογίζονται συναρτήσεις κατακερματισμού για κάθε αρχείο. Το αποτέλεσμα τοποθετείται δίπλα στη βάση εργασίας με κατάληξη .new και πρέπει να τεθεί σε λειτουργία:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Από εκεί και πέρα ο έλεγχος τρέχει με:
sudo aide --check
Τι να εξαιρέσετε για να μένει η αναφορά αναγνώσιμη
Οι ρυθμίσεις ζουν στο /etc/aide/aide.conf και στον κατάλογο /etc/aide/aide.conf.d/. Η προεπιλεγμένη ρύθμιση του Debian ελέγχει υπερβολικά πολλά, και το πρώτο πράγμα είναι να αφαιρέσετε ό,τι αλλάζει μόνο του συνεχώς:
/var/log— αλλάζει κάθε δευτερόλεπτο·- όλο το
/var/lib— βάσεις δεδομένων, κατάσταση πακέτων, κατάσταση υπηρεσιών· /var/cache,/tmp,/proc,/sys,/run·- οι κατάλογοι μεταφορτώσεων και προσωρινής μνήμης του ιστότοπου — το περιεχόμενό τους το αλλάζουν οι επισκέπτες.
Αυτό που αξίζει να ελέγχεται με τις αυστηρότερες ρυθμίσεις είναι μια στενή λίστα:
/bin,/sbin,/usr/bin,/usr/sbin— τα εκτελέσιμα του συστήματος·/lib,/usr/lib— βιβλιοθήκες·/etc— ρυθμίσεις·/root/.sshκαι οι κατάλογοι.sshτων χρηστών σας·- ο κώδικας του ιστότοπου, αλλά χωρίς τους καταλόγους μεταφορτώσεων και προσωρινής μνήμης.
Το μέτρο: μια συνηθισμένη ημερήσια αναφορά πρέπει να χωρά σε μία οθόνη. Αν είναι μεγαλύτερη, οι εξαιρέσεις είναι ανεπαρκείς και θα πάψει να διαβάζεται.
Πού να κρατάτε τη βάση
Σημαντικό σημείο που συχνά παραλείπεται. Αν κάποιος άλλος έχει root, το να αντικαταστήσει ένα αρχείο και να ενημερώσει αμέσως τη βάση του AIDE δεν του κοστίζει τίποτα — και ο επόμενος έλεγχος θα αναφέρει ότι όλα είναι καλά. Μια βάση που κάθεται στο ίδιο μηχάνημα, εγγράψιμη, προστατεύει μόνο από ατυχήματα.
Ένα λογικό ελάχιστο για έναν μόνο διακομιστή:
- αντιγράψτε τη βάση σε άλλο μηχάνημα μετά από κάθε ενημέρωση και τρέξτε τον έλεγχο με αυτό το αντίγραφο στη θέση του·
- ή τουλάχιστον κρατήστε ξεχωριστά το άθροισμα ελέγχου της βάσης και επαληθεύστε το πριν τον έλεγχο:
sha256sum /var/lib/aide/aide.db
Ακόμη και ένα τόσο απλό μέτρο μετατρέπει μια αθόρυβη αντικατάσταση σε αισθητό συμβάν.
Η ενημέρωση της βάσης είναι συνειδητή πράξη
Μετά από νόμιμες αλλαγές — μια ενημέρωση συστήματος, μια νέα έκδοση του ιστότοπου σε παραγωγή — η βάση ξαναχτίζεται:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Το πότε γίνεται αυτό έχει σημασία. Σωστό: διαβάστε την αναφορά, βεβαιωθείτε ότι κάθε αλλαγή εξηγείται και μόνο τότε ενημερώστε. Λάθος, και πολύ συνηθισμένο: να τρέχετε το aide --update προγραμματισμένα ώστε οι αναφορές να βγαίνουν καθαρές. Στη δεύτερη περίπτωση το σύστημα τρέχει, οι αναφορές έρχονται και οι αλλαγές καταγράφονται ως φυσιολογικές ακριβώς τη στιγμή που συμβαίνουν — δηλαδή το νόημα έχει χαθεί εντελώς.
Πρόγραμμα και φορτίο
Το πακέτο aide-common εγκαθιστά μόνο του μια ημερήσια εργασία. Ο έλεγχος φορτώνει τον δίσκο και τον επεξεργαστή για αρκετά λεπτά, οπότε αξίζει να τρέχει σε ήσυχη ώρα και με μειωμένη προτεραιότητα:
0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check
Πώς διαβάζεται η αναφορά
Τρεις ενότητες: αρχεία που προστέθηκαν, αφαιρέθηκαν και άλλαξαν. Για κάθε αλλαγή δείχνει τι ακριβώς διαφέρει: περιεχόμενο, δικαιώματα, ιδιοκτήτης, ώρα.
Σε τι να αντιδράσετε πρώτα:
- αλλαγή σε οποιοδήποτε αρχείο στο
/bin,/sbin,/usr/binεκτός παραθύρου ενημέρωσης· - νέα αρχεία σε καταλόγους συστήματος·
- αλλαγές στα
authorized_keys,/etc/passwd,/etc/sudoers,/etc/crontabκαι/etc/cron.d· - ένα αρχείο
/etc/ld.so.preloadπου εμφανίστηκε — δεν εμφανίζεται ποτέ από μόνο του.
Εκατό αλλαγμένα αρχεία αμέσως μετά από apt upgrade είναι φυσιολογικό, και η χρονική σήμανση της αναφοράς το επιβεβαιώνει. Τρία αλλαγμένα αρχεία στο /usr/bin μια Τετάρτη χωρίς ενημερώσεις είναι λόγος να σταματήσετε και να το ερευνήσετε.
AIDE και debsums
Τα εργαλεία λύνουν γειτονικά προβλήματα, αλλά το σημείο αναφοράς τους διαφέρει. Το AIDE συγκρίνει με ένα δικό σας στιγμιότυπο — έτσι βλέπει αλλαγές σε οποιαδήποτε αρχεία, μαζί και στον κώδικα του ιστότοπου. Το debsums συγκρίνει με τα αθροίσματα ελέγχου των πακέτων της διανομής — έτσι βλέπει αρχεία συστήματος που αντικαταστάθηκαν χωρίς καμία προηγούμενη προετοιμασία, αλλά δεν ξέρει τίποτα για ό,τι εγκαταστήσατε εκτός πακέτων. Είναι λογικό να κρατήσετε και τα δύο· στην πράξη πρώτο μπαίνει συνήθως το debsums, επειδή δεν χρειάζεται ούτε ρύθμιση ούτε βάση.
Μοιράζονται και μία αδυναμία: η αναφορά έρχεται με ταχυδρομείο και το ταχυδρομείο χάνεται. Σημασία λοιπόν δεν έχει ότι έτρεξε ο έλεγχος αλλά ότι υπάρχει ένα μέρος όπου φαίνεται το τελευταίο του αποτέλεσμα. Πώς μοιάζει αυτό το δείχνει η σελίδα επίδειξης παρακάτω.