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

Σε Debian και Ubuntu, ωστόσο, το σημείο αναφοράς υπάρχει ήδη και δεν είναι δικό σας: κάθε εγκατεστημένο πακέτο φέρει τα αθροίσματα ελέγχου των δικών του αρχείων. Η σύγκριση με αυτά δεν απαιτεί ούτε ρύθμιση ούτε προηγούμενο στιγμιότυπο και δουλεύει σε οποιοδήποτε σύστημα οποιαδήποτε στιγμή. Το εργαλείο λέγεται debsums.

Χρήση

sudo apt install debsums
sudo debsums -c

Η σημαία -c τυπώνει μόνο τα αρχεία που δεν ταίριαξαν με το σημείο αναφοράς. Χωρίς αυτήν η έξοδος είναι μια γραμμή προς γραμμή αναφορά για κάθε αρχείο του συστήματος, δεκάδες χιλιάδες γραμμές.

Ο έλεγχος παίρνει λίγα λεπτά και φορτώνει τον δίσκο, οπότε σε διακομιστή σε λειτουργία αξίζει να τρέχει με μειωμένη προτεραιότητα:

sudo ionice -c3 nice -n19 debsums -c

Πώς διαβάζεται το αποτέλεσμα

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

Αρχεία ρυθμίσεων κάτω από το /etc. Η αλλαγή τους είναι κανονική δουλειά: επεξεργαστήκατε το sshd_config, ρυθμίσατε τον nginx, προσθέσατε παραμέτρους πυρήνα. Τέτοιες διαφορές είναι αναμενόμενες. Για να μη μπερδεύονται στα πόδια σας υπάρχει ξεχωριστή λειτουργία:

sudo debsums -e -c

Το -e ελέγχει μόνο αρχεία ρυθμίσεων — πού και πού χρήσιμο για να δείτε τη λίστα όλων όσων έχετε αλλάξει σε αυτό το μηχάνημα.

Εκτελέσιμα και βιβλιοθήκες. Μια διαφορά στο /usr/bin, στο /usr/sbin, στο /bin ή στο /usr/lib είναι εκείνο για το οποίο έτρεξε ο έλεγχος. Υπάρχουν νόμιμες αιτίες, αλλά όχι πολλές: το αρχείο επεξεργάστηκε με το χέρι κατά την αποσφαλμάτωση, εφαρμόστηκε διόρθωση τρίτου, το πακέτο αναβαθμιζόταν κατά τον έλεγχο. Αν δεν ταιριάζει καμία από αυτές, είναι ώρα να το ερευνήσετε σοβαρά.

Οι κλασικοί στόχοι αντικατάστασης είναι τα ls, ps, netstat, ss, find, sshd. Μια αντικατεστημένη έκδοση κρύβει από την έξοδό της τις γραμμές που έχουν σημασία, και κάθε επόμενος έλεγχός σας παύει να λέει την αλήθεια.

Η κάλυψη είναι ελλιπής — και πρέπει να το ξέρετε

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

sudo debsums -l

Μια καθαρή αναφορά debsums σημαίνει επομένως «όλα εντάξει στο μέρος που ελέγχθηκε», όχι «το σύστημα δεν έχει τροποποιηθεί». Το ίδιο ισχύει για ό,τι εγκαταστάθηκε εκτός του διαχειριστή πακέτων: μεταγλωττισμένο από τον πηγαίο κώδικα, κατεβασμένο ως δυαδικό, εγκατεστημένο από σενάριο του ιστότοπου του κατασκευαστή — το debsums δεν παρακολουθεί τίποτα από αυτά εξ ορισμού, και εκεί ακριβώς χρειάζεται το AIDE.

Τακτική εκτέλεση

Το πακέτο παρέχει έτοιμη εργασία, ενεργοποιήσιμη στο /etc/default/debsums:

CRON_CHECK=weekly

Μία φορά την εβδομάδα είναι λογική συχνότητα: ο έλεγχος φορτώνει αισθητά τον δίσκο και τα αρχεία συστήματος αλλάζουν σπάνια ανάμεσα σε ενημερώσεις. Η ημερήσια εκτέλεση δεν προσθέτει τίποτα εκτός από φορτίο.

Αν ένα αρχείο πράγματι αντικαταστάθηκε

Η πρώτη παρόρμηση είναι να επανεγκαταστήσετε το πακέτο και να πάρετε πίσω το πρωτότυπο:

sudo apt install --reinstall coreutils

Η εντολή είναι σωστή, αλλά όχι ως πρώτη ενέργεια. Ένα αντικατεστημένο δυαδικό συστήματος σημαίνει ότι κάποιος είχε root, και η αποκατάσταση του αρχείου δεν λύνει αυτό το πρόβλημα — μόνο καταστρέφει τα ίχνη. Η σειρά πρέπει να είναι αντίστροφη: πρώτα κρατήστε αντίγραφο του ύποπτου αρχείου και της ώρας τροποποίησής του, δείτε τι άλλο άλλαξε την ίδια περίοδο, ελέγξτε τις εργασίες cron, τα κλειδιά SSH και τη λίστα χρηστών. Αποκαταστήστε μόνο μετά από αυτά.

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

Η θέση του στη συνολική εικόνα

Το debsums είναι καλό επειδή δεν χρειάζεται τίποτα και δουλεύει αμέσως — πράγμα που το κάνει βολικό σημείο εκκίνησης για διακομιστή του οποίου την ιστορία δεν γνωρίζετε. Η αδυναμία του είναι η ελλιπής κάλυψη και η άγνοια για ό,τι εγκαταστάθηκε εκτός πακέτων. Το ζεύγος «debsums συν AIDE» κλείνει και τις δύο πλευρές: το έτοιμο σημείο αναφοράς της διανομής για τα αρχεία συστήματος και το δικό σας στιγμιότυπο για τα υπόλοιπα.

Ως συνήθως, το νόημα δεν είναι να το τρέχετε αλλά να έχετε το τελευταίο αποτέλεσμα σε κοινή θέα μαζί με την ημερομηνία του. Πώς μοιάζει αυτό το δείχνει η επίδειξη παρακάτω.