23 Συμβουλές ασφαλείας για τη σκλήρυνση του διακομιστή CentOS - Μέρος 2


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

Απαιτήσεις

  1. 20 Συμβουλές ασφαλείας για τη σκλήρυνση του διακομιστή CentOS – Μέρος 1

21. Απενεργοποιήστε τις εντολές Unuseless SUID και SGID

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

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

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Για να καταργήσετε τη ρύθμιση του bit setuid, εκτελέστε την παρακάτω εντολή:

chmod u-s /path/to/binary_file

Για να καταργήσετε τη ρύθμιση του bit setgid, εκτελέστε την παρακάτω εντολή:

chmod g-s /path/to/binary_file

22. Ελέγξτε για αρχεία και καταλόγους που δεν ανήκουν

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

Εκδώστε την παρακάτω εντολή εύρεσης για τη λίστα αρχείων ή καταλόγων χωρίς χρήστη και ομάδα.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Καταγράψτε τα World-Writeable Files

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

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Δημιουργήστε ισχυρούς κωδικούς πρόσβασης

Δημιουργήστε έναν κωδικό πρόσβασης τουλάχιστον οκτώ χαρακτήρων. Ο κωδικός πρόσβασης πρέπει να περιέχει ψηφία, ειδικούς χαρακτήρες και κεφαλαία γράμματα. Χρησιμοποιήστε το pwmake για να δημιουργήσετε έναν κωδικό πρόσβασης 128 bit από το αρχείο /dev/urandom.

pwmake 128

25. Εφαρμόστε την πολιτική ισχυρών κωδικών πρόσβασης

Αναγκάστε το σύστημα να χρησιμοποιεί ισχυρούς κωδικούς πρόσβασης προσθέτοντας την παρακάτω γραμμή στο αρχείο /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Προσθέτοντας την παραπάνω γραμμή, ο κωδικός πρόσβασης που εισαγάγατε δεν μπορεί να περιέχει περισσότερους από 3 χαρακτήρες σε μια μονοτονική ακολουθία, όπως abcd, και περισσότερους από 3 ίδιους διαδοχικούς χαρακτήρες, όπως 1111.

Για να αναγκάσετε τους χρήστες να χρησιμοποιήσουν έναν κωδικό πρόσβασης με ελάχιστο μήκος 8 χαρακτήρων, συμπεριλαμβανομένων όλων των κατηγοριών χαρακτήρων, έλεγχος ισχύος για ακολουθίες χαρακτήρων και διαδοχικούς χαρακτήρες προσθέστε τις ακόλουθες γραμμές στο /etc/security /pwquality.conf αρχείο.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Χρησιμοποιήστε Password Aging

Η εντολή chage μπορεί να χρησιμοποιηθεί για τη γήρανση του κωδικού πρόσβασης χρήστη. Για να ορίσετε τον κωδικό πρόσβασης ενός χρήστη να λήγει σε 45 ημέρες, χρησιμοποιήστε την ακόλουθη εντολή:

chage -M 45 username

Για να απενεργοποιήσετε τον χρόνο λήξης του κωδικού πρόσβασης χρησιμοποιήστε την εντολή:

chage -M -1 username

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

chage -d 0 username

27. Κλείδωμα λογαριασμών

Οι λογαριασμοί χρηστών μπορούν να κλειδωθούν εκτελώντας την εντολή passwd ή usermod:

passwd -l username
usermod -L username

Για να ξεκλειδώσετε λογαριασμούς χρησιμοποιήστε την επιλογή -u για την εντολή passwd και την επιλογή -U για το usermod.

28. Αποτρέψτε την πρόσβαση στο κέλυφος λογαριασμών

Για να αποτρέψετε έναν λογαριασμό συστήματος (συνηθισμένος λογαριασμός ή λογαριασμός υπηρεσίας) να αποκτήσει πρόσβαση σε ένα κέλυφος bash, αλλάξτε το ριζικό κέλυφος σε /usr/sbin/nologin ή /bin/false στο το αρχείο /etc/passwd εκδίδοντας την παρακάτω εντολή:

usermod -s /bin/false username

Για να αλλάξετε το κέλυφος κατά τη δημιουργία ενός νέου χρήστη, εκτελέστε την ακόλουθη εντολή:

useradd -s /usr/sbin/nologin username

29. Κλείδωμα εικονικής κονσόλας χρήστη με vlock

Το vlock είναι ένα πρόγραμμα που χρησιμοποιείται για το κλείδωμα μιας πολλαπλής περιόδου λειτουργίας στην κονσόλα Linux. Εγκαταστήστε το πρόγραμμα και ξεκινήστε να κλειδώνετε την περίοδο λειτουργίας του τερματικού σας εκτελώντας τις παρακάτω εντολές:

yum install vlock
vlock

30. Χρησιμοποιήστε ένα κεντρικό σύστημα για τη διαχείριση λογαριασμών και τον έλεγχο ταυτότητας

Η χρήση ενός κεντρικού συστήματος ελέγχου ταυτότητας μπορεί να απλοποιήσει σημαντικά τη διαχείριση και τον έλεγχο του λογαριασμού. Οι υπηρεσίες που μπορούν να προσφέρουν αυτόν τον τύπο διαχείρισης λογαριασμού είναι ο IPA Server, το LDAP, το Kerberos, το Microsoft Active Directory, το Nis, το Samba ADS ή το Winbind.

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

31. Αναγκαστική τοποθέτηση μέσων USB μόνο για ανάγνωση

Χρησιμοποιώντας το βοηθητικό πρόγραμμα blockdev μπορείτε να αναγκάσετε όλα τα αφαιρούμενα μέσα να τοποθετηθούν ως μόνο για ανάγνωση. Για παράδειγμα, δημιουργήστε ένα νέο αρχείο διαμόρφωσης udev με το όνομα 80-readonly-usb.rules στον κατάλογο /etc/udev/rules.d/ με το ακόλουθο περιεχόμενο:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Στη συνέχεια, εφαρμόστε τον κανόνα με την παρακάτω εντολή:

udevadm control -reload

32. Απενεργοποίηση Root Access μέσω TTY

Για να αποτρέψετε την εκτέλεση του λογαριασμού root από το σύστημα σύνδεσης μέσω όλων των συσκευών κονσόλας (TTY), διαγράψτε τα περιεχόμενα του αρχείου safetty πληκτρολογώντας την ακόλουθη γραμμή εντολών τερματικού ως root.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Να θυμάστε ότι αυτός ο κανόνας δεν ισχύει για τις περιόδους σύνδεσης SSH
Για να αποτρέψετε τη σύνδεση root μέσω SSH, επεξεργαστείτε το αρχείο /etc/ssh/sshd_config και προσθέστε την παρακάτω γραμμή:

PermitRootLogin no

33. Χρησιμοποιήστε POSIX ACL για να επεκτείνετε τα δικαιώματα συστήματος

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

Για παράδειγμα,

setfacl -m u:user:rw file
getfacl file

34. Ρυθμίστε το SELinux σε λειτουργία επιβολής

Η βελτίωση SELinux στον πυρήνα Linux εφαρμόζει την πολιτική Υποχρεωτικού Ελέγχου Πρόσβασης (MAC), επιτρέποντας στους χρήστες να ορίσουν μια πολιτική ασφαλείας που παρέχει αναλυτικά δικαιώματα για όλους τους χρήστες, τα προγράμματα, τις διεργασίες, τα αρχεία και τις συσκευές.

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

Για να λάβετε την κατάσταση Selinux και να επιβάλετε πολιτική, εκτελέστε τις παρακάτω εντολές:

getenforce
setenforce 1
sestatus

35. Εγκαταστήστε το SELinux Additional Utilities

Εγκαταστήστε το πακέτο policycoreutils-python που παρέχει πρόσθετα βοηθητικά προγράμματα Python για τη λειτουργία SELinux: audit2allow, audit2why, chcat και διαχείριση.

Για να εμφανίσετε όλες τις δυαδικές τιμές μαζί με μια σύντομη περιγραφή, χρησιμοποιήστε την ακόλουθη εντολή:

semanage boolean -l

Για παράδειγμα, για να εμφανίσετε και να ορίσετε την τιμή του httpd_enable_ftp_server, εκτελέστε την παρακάτω εντολή:

getsebool httpd_enable_ftp_server

Για να διατηρήσετε την τιμή ενός boolean στις επανεκκινήσεις, καθορίστε την επιλογή -P σε setsebool, όπως φαίνεται στο ακόλουθο παράδειγμα:

setsebool -P httpd_enable_ftp_server on

36. Χρησιμοποιήστε τον κεντρικό διακομιστή καταγραφής

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

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

37. Ενεργοποιήστε τη Λογιστική Διαδικασιών

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

38. Σκλήρυνση /etc/sysctl.conf

Χρησιμοποιήστε τους ακόλουθους κανόνες παραμέτρων πυρήνα για την προστασία του συστήματος:

Απενεργοποίηση δρομολόγησης πηγής

net.ipv4.conf.all.accept_source_route=0

Απενεργοποιήστε την προώθηση IPv4

ipv4.conf.all.forwarding=0

Απενεργοποιήστε το IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

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

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Απενεργοποιήστε την προώθηση αντίστροφης διαδρομής

net.ipv4.conf.all.rp_filter=2

Παράβλεψη όλων των αιτημάτων ηχούς ICMP (ορίστε σε 1 για ενεργοποίηση)

net.ipv4.icmp_echo_ignore_all = 0

39. Χρησιμοποιήστε τις υπηρεσίες VPN για πρόσβαση στις εγκαταστάσεις σας μέσω μη προστατευμένων δημόσιων δικτύων

Να χρησιμοποιείτε πάντα υπηρεσίες VPN για εταιρείες κινητής τηλεφωνίας για απομακρυσμένη πρόσβαση σε εγκαταστάσεις LAN μέσω Διαδικτύου. Τέτοιοι τύποι υπηρεσιών μπορούν να διαμορφωθούν χρησιμοποιώντας μια δωρεάν λύση ανοιχτού κώδικα, όπως το OpenVPN, ή χρησιμοποιώντας μια αποκλειστική λύση, όπως το Cisco VPN (εγκατάσταση του βοηθητικού προγράμματος γραμμής εντολών vpnc που παρέχεται από την Epel Repositories).

40. Εκτελέστε Εξωτερική Σάρωση Συστήματος

Αξιολογήστε την ασφάλεια του συστήματός σας για τρωτά σημεία σαρώνοντας το σύστημα από απομακρυσμένα σημεία μέσω του LAN σας χρησιμοποιώντας συγκεκριμένα εργαλεία όπως:

  1. Nmap – σαρωτής δικτύου 29 Παραδείγματα Εντολής Nmap
  2. Nessus – σαρωτής ασφαλείας
  3. OpenVAS – χρησιμοποιείται για σάρωση για ευπάθειες και για ολοκληρωμένη διαχείριση τρωτών σημείων.
  4. Nikto – ένας εξαιρετικός σαρωτής δέσμης ενεργειών κοινής πύλης (CGI) Σάρωση ευπάθειας Ιστού στο Linux

41. Προστατέψτε το σύστημα εσωτερικά

Χρησιμοποιήστε εσωτερική προστασία συστήματος από ιούς, rootkits, κακόβουλο λογισμικό και, ως καλή πρακτική, εγκαταστήστε συστήματα ανίχνευσης εισβολής που μπορούν να ανιχνεύσουν μη εξουσιοδοτημένη δραστηριότητα (επιθέσεις DDOS, σάρωση θυρών), όπως:

  1. AIDE – Advanced Intrusion Detection Environment – http://aide.sourceforge.net/
  2. ClamAV – Σαρωτής προστασίας από ιούς https://www.clamav.net
  3. Rkhunter – Rootkit Scanner
  4. Lynis – Εργαλείο ελέγχου ασφάλειας και σάρωσης για Linux
  5. Tripwire – Ασφάλεια και ακεραιότητα δεδομένων http://www.tripwire.com/
  6. Fail2Ban – Πρόληψη δικτύου εισβολής
  7. OSSEC – (HIDS) Σύστημα ανίχνευσης εισβολής που βασίζεται σε κεντρικό υπολογιστή http://ossec.github.io/
  8. Mod_Security – Προστατέψτε τις επιθέσεις Brute Force ή DDoS

42. Τροποποίηση μεταβλητών περιβάλλοντος χρήστη

Προσθέστε τη μορφή ημερομηνίας και ώρας για να αποθηκεύσετε την εκτέλεση εντολών εκδίδοντας την παρακάτω εντολή:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Αναγκάστε την άμεση εγγραφή HISTFILE κάθε φορά που πληκτρολογείτε μια εντολή (αντί για αποσύνδεση):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Περιορίστε την περίοδο σύνδεσης χρονικού ορίου λήξης. Καταρρίψτε αυτόματα το κέλυφος όταν δεν εκτελείται καμία δραστηριότητα κατά τη διάρκεια μιας χρονικής περιόδου αδράνειας. Πολύ χρήσιμο για την αυτόματη αποσύνδεση των συνεδριών SSH.

echo ‘TMOUT=120’ >> .bashrc

Εφαρμόστε όλους τους κανόνες εκτελώντας:

source .bashrc

43. Δημιουργία αντιγράφων ασφαλείας δεδομένων

Χρησιμοποιήστε βοηθητικά προγράμματα δημιουργίας αντιγράφων ασφαλείας, όπως tar, cat, rsync, scp, στιγμιότυπα LVM, κ.λπ. για να αποθηκεύσετε ένα αντίγραφο του συστήματός σας, κατά προτίμηση εκτός τοποθεσίας, σε περίπτωση βλάβης του συστήματος.

Εάν το σύστημα παραβιαστεί, μπορείτε να πραγματοποιήσετε επαναφορά δεδομένων από προηγούμενα αντίγραφα ασφαλείας.

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