Linux Hacks & Guides — 20 January, 2011 14:15

Ασφάλεια στο Arch Linux (και όχι μόνο)

Δημοσιεύτηκε από

Το πρώτο ερώτημα που πρέπει να κάνετε στον εαυτό σας είναι:
Πόσο παρανοϊκός είσαι με την ασφάλεια;
Υπάρχει περίπτωση να το παρακάνετε με την ασφάλεια τόσο πολύ ώστε να κάνετε το σύστημά σας άχρηστο.Το κόλπο είναι να ασφαλίσετε το σύστημα σας χωρίς να το παρακάνετε.
Το πρώτο βήμα, στην πραγματικότητα, έχει ήδη αρχίσει πριν από την εγκατάσταση του συστήματος. Θα πρέπει να πάρετε ένα λεπτό απ’ τον χρόνο σας για να εξετάσετε τη διάταξη στα partition
του σκληρού σας δίσκου και για τι χρήση προορίζεται.

Ρυθμίσεις στην δημιουργία των partitions

Ξεχωριστά partition για τα /var, /tmp, /home και οποιαδήποτε άλλα δεδομένα του χρήστη, που μπορεί να έχετε, είναι μια καλή ιδέα. Κρατώντας τα /var και /tmp σε διαφορετικά partitions, θα αποφύγετε να κάνετε το σύστημά σας να σταματήσει να ανταποκρίνεται εξαιτίας των /var ή /tmp που γεμίζουν συνεχώς το root partition σας.

Επιπλέον, τα partitions πρέπει να δημιουργηθούν με την επιλογή NOEXEC (αυτό διασφαλίζει ότι η εκτέλεση είναι απενεργοποιημένη για οποιαδήποτε δυαδικά αρχεία του συστήματος) και την επιλογή nosuid (αυτό απενεργοποιεί το SUID / SGID χαρακτηριστικό στο partition).

“Παρακαλώ σημειώστε ότι ορισμένα προγράμματα ενδέχεται να σταματήσουν να εργάζονται, όταν το NOEXEC χρησιμοποιείται και οι επιλογές NOEXEC και NOSUID δεν πρέπει να χρησιμοποιούνται σε απλά desktop συστήματα αλλά κυρίως από server συστήματα.”

Αν πρέπει πράγματι να εκτελέσετε ένα πρόγραμμα από ένα partition, θα πρέπει να χρησιμοποιήσετε ένα σενάριο για να γίνει remount το partition με την επιλογή EXEC. Κατόπιν εκτελέστε την επιθυμητή εργασία και στη συνέχεια επαναφέρετε το partition με την επιλογή NOEXEC.
Παρακαλώ δείτε το παρακάτω παράδειγμα:

#!/bin/bash
mount -o remount,exec /tmp
/tmp/someprogram
mount -o remount,noexec /tmp

Τα data partitions θα πρέπει πάντα να δημιουργούνται με τις επιλογές NOEXEC και nosuid, γιατί ποτέ ένα πρόγραμμα δεν θα χρειαστεί να τρέξει από ένα τέτοια partition και κυρίως ποτέ με δικαιώματα root!

Αν δεν σκοπεύετε να εγκαταστήσετε οποιαδήποτε προγράμματα στον φάκελο home, μπορείτε να ορίσετε στο partition / home την επιλογή NOEXEC.  Η επιλογή Nosuid όμως, πρέπει πάντα να είναι ενεργοποιημένη στο partition / home.

Παρακαλώ σημειώστε ότι προγράμματα που εγκαθήστονται στον φάκελο home έχοντας την επιλογή NOEXEC ενεργοποιημένη στο partition δεν θα μπορούν να εκτελεστούν.

Ρυθμίσεις για τους χρήστες του συστήματος

Μετά την εγκατάσταση δημιουργήστε έναν κανονικό χρήστη για καθημερινή χρήση. Μην χρησιμοποιείτε τον χρήστη root για καθημερινή χρήση!

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

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

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

Εναλλακτικά μπορείτε να δημιουργήσετε έναν κωδικό πρόσβασης με τους πρώτους χαρακτήρες από την κάθε λέξη σε μια πρόταση. Πάρτε για παράδειγμα την πρόταση “choose the best password for your pc” η οποία θα μπορούσε να μεταφραστεί σε “cT5!bPfYp”. Η προσέγγιση αυτή θα μπορούσε να σας βοηθήσει να θυμηθείτε έναν κωδικό πρόσβασης.

Περιορισμός του SU

Αυτό είναι πραγματικά αναγκαίο κυρίως σε ένα σύστημα με πολλούς χρήστες, αλλά επίσης θεωρείται καλή πρακτική ασφαλείας. Ο περιορισμός των χρηστών να μην μπορούν να κάνουν su σε root γίνεται αλλάζοντας το αρχείο /etc/pam.d/su.
Βρείτε τη γραμμή στην οποία εμφανίζεται το:

#auth required pam_wheel.so use_uid

και αφαιρέστε την δίεση #. Φυσικά θα πρέπει να βεβαιωθείτε ότι ο δικός σας χρήστης είναι μέλος του group wheel πριν να εφαρμόσετε αυτήν την αλλαγή, αλλιώς δεν θα είστε σε θέση να χρησιμοποιήσετε SU για να αποκτήσετε δικαιώματα root!


Να μην επιτρέπεται το root login στην κονσόλα

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

Η απαγόρευση της σύνδεση του root στην κονσόλα γίνεται αλλάζοντας το αρχείο /etc/securetty και σχολιάζοντας τις tty γραμμές.
Το μόνο που έχετε να κάνετε είναι να αλλάξετε το

tty1

σε

#tty1

Επαναλάβετε για κάθε tty που θέλετε να αποκλείσετε.

Για να ελέγξετε το αποτέλεσμα αυτής της αλλαγής, ξεκινήστε κάνοντας αλλαγές μόνο μία-μια γραμμή. Στη συνέχεια, πηγαίνετε στη συγκεκριμένη κονσόλα και προσπαθήστε να μπείτε σαν root. Θα πρέπει να εμφανιστεί το μήνυμα “Login Incorrect”.

Lockout χρήστη μετά από τρεις αποτυχημένες προσπάθειες σύνδεσης

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

Για να γίνει ένας χρήστης lockout για δέκα λεπτά μετά από τρεις αποτυχημένες προσπάθειες σύνδεσης, θα πρέπει να αλλάξετε το αρχείο /etc/pam.d/login.
Βρείτε τη γραμμή στην οποία εμφανίζεται το:

#auth required pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog

και αφαιρέστε την δίεση #.
Στη συνέχεια, βρείτε τη γραμμή στην οποία εμφανίζεται το:

auth required pam_tally.so onerr=succeed file=/var/log/faillog

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

Εάν αισθάνεστε περιπετειώδης, κάντε τρεις αποτυχημένες προσπάθειες σύνδεσης. Στη συνέχεια μπορείτε να δείτε και μόνοι σας τι συμβαίνει.
Για να ξεκλειδώσετε ένα χρήστη χειροκίνητα χρησιμοποιήστε την ακόλουθη εντολή ως root:

[root@localhost] pam_tally –user –reset

Αν θέλετε να κλειδώσετε μόνιμα έναν χρήστη μετά από 3 αποτυχημένες προσπάθειες σύνδεσης, αφαιρέστε μόνο το unlock_time μέρος της γραμμής. Στη συνέχεια, ο χρήστης δεν θα μπορεί να συνδεθεί μέχρι ο root να ξεκλειδώσει τον λογαριασμό.

Απενεργοποίηση CTRL-ALT-DEL

Προκειμένου να διασφαλίσετε ότι κανείς δεν θα πειράξει τον υπολογιστή σας και συγκεκριμένα να πιέζει τα πλήκτρα CTRL-Alt-Del έτσι ώστε να επανεκκινεί το μηχάνημά σας, μπορείτε να απενεργοποιήσετε τον συνδυασμό CTRL-ALT-DEL στο αρχείο /etc/inittab.

Θα μπορούσε αυτό να χρησιμοποιηθεί σε περιβάλλον παραγωγής, όπου ο εισβολέας πρέπει να χρησιμοποιήσει το πληκτρολόγιο, αλλά ο υπολογιστής είναι κλειδωμένος, και απλά πατάει τον συνδυασμό CTRL-Alt-Del.

Ανοίξτε το αρχείο /etc/inittab και βρείτε τη γραμμή:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Σχολιάστε την γραμμή, εισάγοντας μια δίεση # στην αρχή της.
Η αλλαγή αυτή δεν θα ισχύσει μέχρι να γίνει επανεκκίνηση ή μέχρι να δώσετε την εντολή:

[root@localhost] /sbin/init -q

Φυσικά αν κάποιος έχει φυσική πρόσβαση στο μηχάνημα σας θα μπορούσε απλά να πατήσει το κουμπί λειτουργίας για να κλείσει το μηχάνημα!

Χρησιμοποιήστε την sudo για τις εντολές του συστήματος

Για να μπορεί ένας χρήστης να τρέξει σε κάποιο σύστημα εντολές ως root, είναι καλό να χρησιμοποιηθεί η sudo εντολή για να έχει ο χρήστης την αναγκαία εξουσία. Δεν θα ήταν καλό να δώσετε τον κωδικό του root στον καθένα.

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

Η ρύθμιση του sudo είναι αρκετά εύκολη. Απλά χρησιμοποιήστε την visudo εντολή για να εμφανιστεί το αρχείο ρυθμίσεων στον επεξεργαστή κειμένου.
Το αρχείο περιέχει ήδη κάποια παραδείγματα που μπορείτε να χρησιμοποιήσετε.  Θα σας δείξω μια εντολή που πάντα προσθέτω στο sudoers αρχείο μου.

Θέλω να είμαι σε θέση να κάνω mount τα samba shares από τον server μου στο σταθμό εργασίας μου με έναν απλό χρήστη, οπότε μπορώ να προσθέσω τα εξής χρησιμοποιώντας την εντολή visudo:

%users ALL=/sbin/mount.cifs,/sbin/umount.cifs

Αυτό επιτρέπει σε όλους τους χρήστες που είναι μέλη του group users να εκτελέσουν τις εντολές /sbin/mount.cifs και /sbin/umount.cifs από οποιοδήποτε μηχάνημα(ALL).
Αν δεν είστε εξοικειωμένοι με τη χρήση του vi editor, μπορείτε να χρησιμοποιήσετε τον nano editor με την εξής εντολή:

[root@localhost] EDITOR=nano visudo

Υπάρχουν πολλά άλλα πράγματα που μπορούν να γίνουν για να βελτιώσουν την ασφάλεια, αλλά η μεγαλύτερη απειλή είναι, και θα είναι πάντα, ο ίδιος ο χρήστης.

Όταν σκέφτεστε την ασφάλεια, πρέπει να σκεφτείτε σε στρώματα.  Όταν ένα στρώμα παραβιαστεί, ένα άλλο θα πρέπει να σταματήσει την επίθεση. Αλλά δεν μπορείτε ποτέ να κάνετε ένα σύστημα 100% ασφαλές, αν δεν αποσυνδέσετε το μηχάνημα από όλα τα δίκτυα, κλειδώστε το σε ένα ασφαλές μέρος και δεν χρησιμοποιηθεί ποτέ ξανά!

Να είσαστε λίγο παρανοϊκοί. Βοηθάει. Και να είστε καχύποπτοι. Ακόμα περισσότερο αν η ασφάλεια αφορά servers ή κρίσιμα δεδομένα. Αν κάτι ακούγεται πολύ καλό για να είναι αληθινό, είναι πιθανώς!

Πηγές:

Securing and Hardening Red Hat Linux Production Systems

Securing Linux, Part 1: Introduction

Securing and Optimizing Linux

No Comments

Leave a Reply

— required *

— required *