Το auditd απαντά στα ερωτήματα που προκύπτουν μετά το γεγονός: ποιος άλλαξε αυτό το αρχείο, πότε δημιουργήθηκε αυτός ο χρήστης, από πού ξεκίνησε αυτή η διεργασία. Κανένα άλλο εργαλείο δεν τα απαντά — τα αρχεία των εφαρμογών δεν κρατούν αυτή την πληροφορία και το ιστορικό του κελύφους το επεξεργάζεται όποιος το άφησε.
Η δυσκολία είναι ότι η εγκατάσταση του πακέτου δεν σας δίνει τίποτα από μόνη της. Προεπιλεγμένοι κανόνες πρακτικά δεν υπάρχουν, το ημερολόγιο γράφεται αλλά είναι κενό επί της ουσίας, και αυτό ανακαλύπτεται τη χειρότερη δυνατή στιγμή — όταν χρειάζονται τα δεδομένα και δεν υπάρχουν.
Εγκατάσταση
sudo apt install auditd audispd-plugins
sudo systemctl status auditd
Μια ιδιαιτερότητα: σε ορισμένες εκδόσεις το auditd δεν επανεκκινείται μέσω systemctl restart — η υπηρεσία διαχειρίζεται με δική της εντολή. Οι κανόνες ξαναδιαβάζονται έτσι:
sudo augenrules --load
sudo auditctl -l
Η δεύτερη εντολή δείχνει τι είναι πραγματικά φορτωμένο. Εμπιστευτείτε αυτήν, όχι το περιεχόμενο των αρχείων.
Το σύνολο κανόνων
Οι κανόνες μπαίνουν στο /etc/audit/rules.d/ ως ξεχωριστό αρχείο. Παρακάτω είναι ένα ελάχιστο σύνολο που αποδίδει: απαντά στα περισσότερα ερωτήματα που εγείρονται σε ένα περιστατικό χωρίς να θάβει τον δίσκο.
sudo tee /etc/audit/rules.d/50-baseline.rules <<'EOF'
## Χρήστες και προνόμια
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k privileges
-w /etc/sudoers.d/ -p wa -k privileges
## Πρόσβαση SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys
## Προγραμματισμένες εργασίες
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
## Αρθρώματα πυρήνα
-w /sbin/insmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules
## Χρήση sudo και su
-w /usr/bin/sudo -p x -k privileged
-w /bin/su -p x -k privileged
EOF
sudo augenrules --load
Η σύνταξη είναι σύντομη: το -w είναι διαδρομή προς παρακολούθηση, το -p wa σημαίνει αντίδραση σε εγγραφές και αλλαγές χαρακτηριστικών, το -p x σε εκτέλεση, το -k είναι το κλειδί για αναζήτηση αργότερα. Αυτά τα κλειδιά είναι η κύρια ευκολία: χωρίς αυτά, η αναζήτηση στο ημερολόγιο μετατρέπεται σε κοσκίνισμα ενός γιγαμπάιτ κειμένου.
Τι δεν είναι σε αυτή τη λίστα, και γιατί
Οι οδηγοί προτείνουν συχνά την καταγραφή κάθε κλήσης execve — δηλαδή κάθε εκκίνησης κάθε προγράμματος. Ο πειρασμός είναι κατανοητός: πλήρης εικόνα του τι έγινε. Στην πράξη, σε διακομιστή σε λειτουργία αυτό παράγει εκατοντάδες μεγαμπάιτ τη μέρα, τρώει αισθητό μέρος του επεξεργαστή και οδηγεί στο να περικόπτεται το ημερολόγιο νωρίτερα απ' ό,τι χρειάζεται. Αν απαιτείται τέτοιο επίπεδο λεπτομέρειας, ενεργοποιήστε το στοχευμένα — για έναν χρήστη ή για τη διάρκεια μιας έρευνας.
Το ίδιο ισχύει για την παρακολούθηση του καταλόγου του ιστότοπου: οι εγγραφές εκεί είναι συνεχείς και ο κανόνας μετατρέπει το ημερολόγιο σε ροή ανούσιων συμβάντων.
Διάβασμα
Αναζήτηση ανά κλειδί, με τα αριθμητικά αναγνωριστικά να μεταφράζονται σε ονόματα:
sudo ausearch -k identity -i
sudo ausearch -k privileges -i -ts today
Η σημαία -i είναι απαραίτητη για την αναγνωσιμότητα: χωρίς αυτήν παίρνετε αριθμούς αντί για ονόματα χρηστών και κλήσεις συστήματος. Το -ts περιορίζει την περίοδο (today, recent ή συγκεκριμένη ημερομηνία).
Σύνοψη για μια περίοδο:
sudo aureport --summary -i
sudo aureport --auth -i --failed
Τρία πεδία σε μια εγγραφή συμβάντος ενδιαφέρουν: το auid, το αναγνωριστικό του χρήστη που ξεκίνησε τη συνεδρία, το uid, η ταυτότητα υπό την οποία έτρεξε η ενέργεια, και το exe, το πρόγραμμα που την εκτέλεσε. Η διαφορά ανάμεσα σε auid και uid είναι η απάντηση στο «ποιος ακριβώς έγινε root»: uid=0 με το auid ενός συγκεκριμένου προσώπου κατονομάζει τον ένοχο χωρίς αμφιβολία, ό,τι κι αν ισχυριζόταν ότι είναι μέσα στη συνεδρία.
Δίσκος
Οι ρυθμίσεις μεγέθους ζουν στο /etc/audit/auditd.conf:
max_log_file = 50
num_logs = 5
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG
Κοιτάξτε ξεχωριστά το disk_full_action. Ορισμένες ρυθμίσεις προεπιλέγουν τον τερματισμό του συστήματος όταν γεμίσει ο δίσκος — συμπεριφορά δικαιολογημένη σε μηχανήματα με απαιτήσεις ελέγχου και εντελώς άτοπη σε διακομιστή ιστού. Ελέγξτε αυτή την τιμή πριν τελειώσει ο δίσκος.
Αμετάβλητοι κανόνες
Η γραμμή -e 2 στο τέλος του αρχείου κανόνων απαγορεύει την αλλαγή τους μέχρι την επανεκκίνηση — και από όποιον απέκτησε root. Αυτό ανεβάζει αισθητά την αξία του ημερολογίου: ένας εισβολέας δεν μπορεί να απενεργοποιήσει την παρακολούθηση χωρίς να επανεκκινήσει το μηχάνημα, και μια επανεκκίνηση είναι από μόνη της εμφανής.
Η άλλη όψη είναι προφανής: ούτε εσείς μπορείτε να αλλάξετε τους δικούς σας κανόνες χωρίς επανεκκίνηση. Ενεργοποιήστε το αφού καθίσει το σύνολο κανόνων και ζήσετε μαζί του έναν μήνα.
Γιατί να μπείτε στον κόπο σε έναν συνηθισμένο διακομιστή
Το auditd δεν αποτρέπει τίποτα. Η αξία του φαίνεται ακριβώς μία φορά — όταν πρέπει να ανασυγκροτηθεί η ακολουθία των γεγονότων, και τα δεδομένα είτε υπάρχουν είτε όχι. Δεν μπορούν να συλλεχθούν αναδρομικά, γι' αυτό και το σύνολο κανόνων μπαίνει εκ των προτέρων και μετά μένει ήσυχο.
Ένα πρακτικό σημάδι ότι η διάταξη είναι σωστή: η λίστα κανόνων δεν είναι κενή, το ημερολόγιο δεν μεγαλώνει ανεξέλεγκτα και συμβάντα με τα κλειδιά identity και privileges εμφανίζονται σπάνια και εξηγούνται το καθένα. Πώς μοιάζει αυτό σε μία σελίδα το δείχνει η επίδειξη παρακάτω.