Linux Intrusion Detection System - μία παρουσίαση: LIDS λοιπόν...
Description: This is issue 30 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #30
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 3. LIDS λοιπόν... Το LIDS αποτελείται από δύο κομμάτια: ένα (μεγαλούτσικο) kernel patch, και ένα administration πρόγραμμα, το lidsadm. Ας τα δούμε ξεχωριστά. ### 3.1 Το kernel-patch Παρέχει τις εξής extra παραμέτρους στον πυρήνα: CONFIG_LIDS: όπως λέει και το όνομά του, ενεργοποίηση του LIDS. CONFIG_LIDS_HANGUP: κάθε φορά που κάποιο πρόγραμμα προσπαθεί να κάνει κάτι που απαγορεύεται από το LIDS, τότε η κονσόλα στην οποία το πρόγραμμα είναι attached θα κλείνει. CONFIG_LIDS_SA_EXEC_UP: κάθε φορά που εκτελείται ένα πρόγραμμα μη προστατευμένο πριν μπει σε "λειτουργία" το LIDS (κατά τη διάρκεια του boot προφανώς) θα δημιουργείται ένα security alert. CONFIG_LIDS_NO_EXEC_UP: με αυτή την επιλογή το LIDS θα αρνηθεί να τρέξει μη προστατευμένα προγράμματα πριν αυτό μπει σε "λειτουργία". CONFIG_LIDS_INIT_CHILDREN_LOCK: με αυτή την επιλογή θα προστεθεί η δυνατότητα να αποκλειστούν κάποια στιγμή (την οποία επιλέγουμε εμείς) όλοι οι τρόποι για να σκοτώσει κάποιος ένα process του οποίου το parent process είναι η init. CONFIG_LIDS_NO_FLOOD_LOG: Αν ένα μήνυμα του LIDS επαναλαμβάνεται επί μακρόν, το LIDS θα σταματήσει να το γράφει στα logs για να μην τα γεμίσει. CONFIG_LIDS_PORT_SCAN_DETECTOR: Με αυτή την επιλογή θα δημιουργηθεί μέσα στον kernel ένας port scanner detector, και για κάθε port scan το LIDS θα καταγράφει τα απαιτούμενα μηνύματα στα logs. CONFIG_LIDS_TIMEOUT_AFTER_FLOOD: Είναι ο χρόνος τον οποίο πρέπει να απέχουν μεταξύ τους δύο διαφορετικά security alerts για να καταγραφούν. CONFIG_LIDS_ALLOW_SWITCH: Με αυτή την επιλογή μπορεί να "απενεργοποιηθεί" προσωρινά το LIDS. CONFIG_LIDS_MAX_TRY: Πόσες φορές θα δεχθεί λάθος password το LIDS πριν "κλειδώσει" για λίγο τη δυνατότητα απενεργοποίησής του. CONFIG_LIDS_TTW_FAIL: Πόση ώρα θα κρατάει το "κλείδωμα" που λέγαμε πιο πάνω. CONFIG_LIDS_REMOTE_SWITCH: Με αυτή η επιλογή, η απενεργοποίηση θα είναι δυνατή και από απόμακρο τερματικό, αλλιώς, μόνο από την κονσόλα. CONFIG_LIDS_ALLOW_ANY_PROG_SWITCH: Κανονικά μόνο το /sbin/lidsadm μπορεί να απενεργοποιήσει το LIDS αλλά με αυτή την επιλογή, μπορούμε να επιτρέψουμε και σε άλλα προγράμματα να κάνουν κάτι τέτοιο. CONFIG_LIDS_RELOAD_CONF: Επιτρέπει την επανανάγνωση του αρχείου ρυθμίσεων του LIDS χωρίς να χρειάζεται reboot. CONFIG_LIDS_SA_THROUGH_NET: Με αυτή την επιλογή, τα security alerts στέλνονται δια μέσω του δικτύου, και γι αυτό πρέπει να οριστούν ορισμένες ρυθμίσεις, τις οποίες θα δούμε παρακάτω. CONFIG_LIDS_HIDE_KLIDS: Με αυτή την επιλογή, το process του Lids θα κρύβεται από το /proc (άρα δεν θα φαίνεται στα ps, top κλπ). CONFIG_LIDS_NET_MAX_TRIES: Πόσες φορές θα προσπαθήσει το LIDS να στείλει το security alert μέσω δικτύου. CONFIG_LIDS_NET_TIMEOUT: Πόση ώρα θα είναι το timeoute μεταξύ των προσπαθειών να σταλεί το μήνυμα μέσω δικτύου. CONFIG_LIDS_MSGQUEUE_SIZE: Πόσο μεγάλη να είναι η ουρά των μηνυμάτων που θα σταλούν μέσω δικτύου. Μόλις γεμίσει η ουρά, δεν θα καταγράφονται άλλα μηνύματα (μέχρι να ξανααδειάσει προφανώς). ### 3.2 Το lidsadm Το πρόγραμμα /sbin/lidsadm είναι απαραίτητο για να μπορούμε να χρησιμοποιήσουμε σωστά και αποδοτικά το LIDS. Δεν θα μπούμε βέβαια σε λεπτομέρειες χρήσης, θα πούμε μόνο ότι με αυτό το πρόγραμμα: μπορούμε να θέσουμε κάποια αρχεία και directories σε read-only για όλες τις processes του συστήματος, ακόμα και τις root-owned processes. Παράδειγμα το /usr/lib μπορούμε να θέσουμε κάποια αρχεία σε append-only mode (θυμηθείτε Windows-NT και permission to write), όπως για παράδειγμα το /var/log/messages μπορούμε να θέσουμε κάποια αρχεία σε hidden για όλες τις processes, όπως το /etc/shadow... ...δίνοντας σε συγκεκριμένα προγράμματα το δικαίωμα να τα διαβάζουν, όπως το /bin/login μπορούμε να ορίσουμε τα capabilities που θα αφαιρέσουμε από όλα τα προγράμματα, όταν θα κλειδώσουμε τον πυρήνα, π.χ. το CAP_SYS_MODULE μπορούμε να προσθέσουμε κάποια από αυτά που αφαιρέσαμε globally, σε συγκεκριμένα executables με τη δυνατότητα να γίνονται inherited στα child processes μπορούμε να απενεργοποιήσουμε προσωρινά το LIDS (για να θέσουμε νέες ρυθμίσεις π.χ.)... ... και να το επανενεργοποιήσουμε αφού του ζητήσουμε να διαβάσει το configuration ξανά μπορούμε να "κρύψουμε" processes ή μπορούμε να τα κάνουμε να αγνοούν το kill Νομίζω ότι πιάσατε την κεντρική ιδέα. Υπάρχουν βέβαια περιορισμοί. Συγκεκριμένα, τα file-attributes που θέτουμε, τίθενται με βάση το inode, άρα δεν μπορούμε να κλειδώσουμε το /etc directory και να περιμένουμε να δουλεύει η εντολή passwd (η οποία αναδημιουργεί το password file κάθε φορά, άρα αυτό αποκτά άλλο inode κάθε φορά, συνεπώς ΔΕΝ μπορούμε να δώσουμε full privilege στην εντολή passwd πάνω σε αυτό το αρχείο). Επόμενο Προηγούμενο Περιεχόμενα