Σειρά RHCE: Εφαρμογή HTTPS μέσω TLS χρησιμοποιώντας Υπηρεσία Ασφάλειας Δικτύου (NSS) για Apache - Μέρος 8


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

Προκειμένου να παρέχονται πιο ασφαλείς επικοινωνίες μεταξύ πελατών και διακομιστών ιστού, το πρωτόκολλο HTTPS δημιουργήθηκε ως συνδυασμός HTTP και SSL ( Secure Sockets Layer) ή πιο πρόσφατα, TLS (Transport Layer Security).

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

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

  1. Εγκατάσταση LAMP (Linux, MySQL/MariaDB, Apache και PHP) σε RHEL/CentOS 7

Εγκατάσταση OpenSSL και Utilities

Αρχικά, βεβαιωθείτε ότι το Apache εκτελείται και ότι τόσο το http όσο και το https επιτρέπονται μέσω του τείχους προστασίας:

# systemctl start http
# systemctl enable http
# firewall-cmd --permanent –-add-service=http
# firewall-cmd --permanent –-add-service=https

Στη συνέχεια εγκαταστήστε τα απαραίτητα πακέτα:

# yum update && yum install openssl mod_nss crypto-utils

Σημαντικό: Λάβετε υπόψη ότι μπορείτε να αντικαταστήσετε το mod_nss με το mod_ssl στην παραπάνω εντολή, εάν θέλετε να χρησιμοποιήσετε Βιβλιοθήκες OpenSSL αντί για NSS (Υπηρεσία Ασφάλειας Δικτύου) για την εφαρμογή του TLS (το οποίο θα χρησιμοποιηθεί παραμένει εντελώς ανοιχτό για εσάς, αλλά θα χρησιμοποιήσουμε το NSS σε αυτό το άρθρο καθώς είναι πιο ισχυρό· για παράδειγμα, υποστηρίζει πρόσφατα πρότυπα κρυπτογραφίας όπως το PKCS #11).

Τέλος, απεγκαταστήστε το mod_ssl εάν επιλέξετε να χρησιμοποιήσετε το mod_nss ή το αντίστροφο.

# yum remove mod_ssl

Διαμόρφωση NSS (Υπηρεσία Ασφάλειας Δικτύου)

Μετά την εγκατάσταση του mod_nss, το προεπιλεγμένο αρχείο διαμόρφωσής του δημιουργείται ως /etc/httpd/conf.d/nss.conf. Στη συνέχεια, θα πρέπει να βεβαιωθείτε ότι όλες οι οδηγίες Listen και VirtualHost οδηγούν στη θύρα 443 (προεπιλεγμένη θύρα για HTTPS):

Listen 443
VirtualHost _default_:443

Στη συνέχεια, επανεκκινήστε το Apache και ελέγξτε εάν έχει φορτωθεί η λειτουργική μονάδα mod_nss:

# apachectl restart
# httpd -M | grep nss

Στη συνέχεια, θα πρέπει να γίνουν οι ακόλουθες αλλαγές στο αρχείο διαμόρφωσης /etc/httpd/conf.d/nss.conf:

1. Υποδείξτε τον κατάλογο βάσης δεδομένων NSS. Μπορείτε να χρησιμοποιήσετε τον προεπιλεγμένο κατάλογο ή να δημιουργήσετε έναν νέο. Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε την προεπιλογή:

NSSCertificateDatabase /etc/httpd/alias

2. Αποφύγετε τη μη αυτόματη εισαγωγή φράσης πρόσβασης σε κάθε εκκίνηση του συστήματος, αποθηκεύοντας τον κωδικό πρόσβασης στον κατάλογο της βάσης δεδομένων στη διεύθυνση /etc/httpd/nss-db-password.conf:

NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Όπου το /etc/httpd/nss-db-password.conf περιέχει ΜΟΝΟ την ακόλουθη γραμμή και ο mypassword είναι ο κωδικός πρόσβασης που θα ορίσετε αργότερα για τη βάση δεδομένων NSS:

internal:mypassword

Επιπλέον, τα δικαιώματα και η ιδιοκτησία του θα πρέπει να οριστούν σε 0640 και root:apache, αντίστοιχα:

# chmod 640 /etc/httpd/nss-db-password.conf
# chgrp apache /etc/httpd/nss-db-password.conf

3. Η Red Hat συνιστά την απενεργοποίηση του SSL και όλων των εκδόσεων του TLS προηγούμενων έως του TLSv1.0 λόγω του Ευπάθεια >POODLE SSLv3 (περισσότερες πληροφορίες εδώ).

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

NSSProtocol TLSv1.0,TLSv1.1

4. Ο Apache θα αρνηθεί την επανεκκίνηση, καθώς πρόκειται για πιστοποιητικό που υπογράφεται από τον εαυτό του και δεν θα αναγνωρίσει τον εκδότη ως έγκυρο. Για το λόγο αυτό, στη συγκεκριμένη περίπτωση θα πρέπει να προσθέσετε:

NSSEnforceValidCerts off

5. Αν και δεν απαιτείται αυστηρά, είναι σημαντικό να ορίσετε έναν κωδικό πρόσβασης για τη βάση δεδομένων NSS:

# certutil -W -d /etc/httpd/alias