Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

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 πάνω σε αυτό το αρχείο).

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!