Σειρά RHCSA: Εγκατάσταση, διαμόρφωση και ασφάλεια διακομιστή Web και FTP - Μέρος 9


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

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

Ο διακομιστής ιστού που είναι διαθέσιμος στο RHEL 7 είναι η έκδοση 2.4 του διακομιστή HTTP Apache. Όσον αφορά τον διακομιστή FTP, θα χρησιμοποιήσουμε τον Very Secure Ftp Daemon (γνωστός και ως vsftpd) για να δημιουργήσουμε συνδέσεις που ασφαλίζονται με TLS.

Σε αυτό το άρθρο θα εξηγήσουμε πώς να εγκαταστήσετε, να ρυθμίσετε και να ασφαλίσετε έναν διακομιστή web και έναν διακομιστή FTP στο RHEL 7.

Εγκατάσταση διακομιστή Apache και FTP

Σε αυτόν τον οδηγό θα χρησιμοποιήσουμε έναν διακομιστή RHEL 7 με στατική διεύθυνση IP 192.168.0.18/24. Για να εγκαταστήσετε το Apache και το VSFTPD, εκτελέστε την ακόλουθη εντολή:

# yum update && yum install httpd vsftpd

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

# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd

Επιπλέον, πρέπει να ανοίξουμε τις θύρες 80 και 21, όπου οι δαίμονες ιστού και ftp ακούν, αντίστοιχα, προκειμένου να επιτρέψουμε την πρόσβαση σε αυτές τις υπηρεσίες από το εξωτερικό:

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload

Για να επιβεβαιώσετε ότι ο διακομιστής web λειτουργεί σωστά, ενεργοποιήστε το πρόγραμμα περιήγησής σας και εισαγάγετε την IP του διακομιστή. Θα πρέπει να δείτε τη δοκιμαστική σελίδα:

Όσον αφορά τον διακομιστή ftp, θα πρέπει να τον ρυθμίσουμε περαιτέρω, κάτι που θα κάνουμε σε ένα λεπτό, πριν επιβεβαιώσουμε ότι λειτουργεί όπως αναμένεται.

Διαμόρφωση και Ασφάλεια διακομιστή Web Apache

Το κύριο αρχείο διαμόρφωσης για το Apache βρίσκεται στο /etc/httpd/conf/httpd.conf, αλλά μπορεί να βασίζεται σε άλλα αρχεία που υπάρχουν στο /etc/httpd /conf.d.

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

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

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Στη συνέχεια, ανοίξτε το με τον επεξεργαστή κειμένου που προτιμάτε και αναζητήστε τις ακόλουθες μεταβλητές:

  1. ServerRoot: ο κατάλογος όπου διατηρούνται οι ρυθμίσεις παραμέτρων, τα σφάλματα και τα αρχεία καταγραφής του διακομιστή.
  2. Listen: δίνει εντολή στον Apache να ακούει σε συγκεκριμένη διεύθυνση IP ή/και θύρες.
  3. Συμπερίληψη: επιτρέπει τη συμπερίληψη άλλων αρχείων διαμόρφωσης, τα οποία πρέπει να υπάρχουν. Διαφορετικά, ο διακομιστής θα αποτύχει, σε αντίθεση με την οδηγία IncludeOptional, η οποία αγνοείται σιωπηλά εάν δεν υπάρχουν τα καθορισμένα αρχεία διαμόρφωσης.
  4. Χρήστης και ομάδα: το όνομα του χρήστη/ομάδας για την εκτέλεση της υπηρεσίας httpd ως.
  5. DocumentRoot: Ο κατάλογος από τον οποίο ο Apache θα εξυπηρετεί τα έγγραφά σας. Από προεπιλογή, όλα τα αιτήματα λαμβάνονται από αυτόν τον κατάλογο, αλλά μπορούν να χρησιμοποιηθούν συμβολικοί σύνδεσμοι και ψευδώνυμα για να παραπέμπουν σε άλλες τοποθεσίες.
  6. ServerName: αυτή η οδηγία ορίζει το όνομα κεντρικού υπολογιστή (ή τη διεύθυνση IP) και τη θύρα που χρησιμοποιεί ο διακομιστής για την αναγνώριση του εαυτού του.

Το πρώτο μέτρο ασφαλείας θα συνίσταται στη δημιουργία ενός αποκλειστικού χρήστη και ομάδας (δηλαδή tecmint/tecmint) για την εκτέλεση του διακομιστή web ως και αλλαγή της προεπιλεγμένης θύρας σε υψηλότερη (9000 σε αυτήν την περίπτωση):

ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Μπορείτε να δοκιμάσετε το αρχείο διαμόρφωσης με.

# apachectl configtest

και αν όλα είναι ΟΚ, κάντε επανεκκίνηση του διακομιστή ιστού.

# systemctl restart httpd

και μην ξεχάσετε να ενεργοποιήσετε τη νέα θύρα (και να απενεργοποιήσετε την παλιά) στο τείχος προστασίας:

# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload

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

# semanage port -l | grep -w '^http_port_t'

για τον διακομιστή web.

Εάν θέλετε να χρησιμοποιήσετε μια άλλη θύρα (π.χ. θύρα TCP 8100), θα πρέπει να την προσθέσετε στο περιβάλλον θύρας SELinux για την υπηρεσία httpd:

# semanage port -a -t http_port_t -p tcp 8100

Για να εξασφαλίσετε περαιτέρω την εγκατάσταση του Apache, ακολουθήστε τα εξής βήματα:

1. Ο χρήστης Apache εκτελείται καθώς δεν θα έπρεπε να έχει πρόσβαση σε ένα κέλυφος:

# usermod -s /sbin/nologin tecmint

2. Απενεργοποιήστε τη λίστα καταλόγου για να εμποδίσετε το πρόγραμμα περιήγησης να εμφανίσει τα περιεχόμενα ενός καταλόγου, εάν δεν υπάρχει index.html σε αυτόν τον κατάλογο.

Επεξεργαστείτε το /etc/httpd/conf/httpd.conf (και τα αρχεία διαμόρφωσης για εικονικούς κεντρικούς υπολογιστές, εάν υπάρχουν) και βεβαιωθείτε ότι η οδηγία Επιλογές, τόσο στην κορυφή όσο και σε επίπεδα μπλοκ καταλόγου, έχει οριστεί σε Κανένα:

Options None

3. Απόκρυψη πληροφοριών σχετικά με τον διακομιστή ιστού και το λειτουργικό σύστημα στις αποκρίσεις HTTP. Επεξεργαστείτε το /etc/httpd/conf/httpd.conf ως εξής:

ServerTokens Prod 
ServerSignature Off

Τώρα είστε έτοιμοι να ξεκινήσετε την προβολή περιεχομένου από τον κατάλογό σας /var/www/html.

Διαμόρφωση και Ασφάλεια διακομιστή FTP

Όπως και στην περίπτωση του Apache, το κύριο αρχείο διαμόρφωσης για το Vsftpd (/etc/vsftpd/vsftpd.conf) σχολιάζεται καλά και ενώ η προεπιλεγμένη ρύθμιση παραμέτρων θα αρκεί για τις περισσότερες εφαρμογές , θα πρέπει να εξοικειωθείτε με την τεκμηρίωση και τη σελίδα man (man vsftpd.conf) προκειμένου να χειριστείτε τον διακομιστή ftp πιο αποτελεσματικά (δεν μπορώ να το τονίσω αρκετά!).

Στην περίπτωσή μας, αυτές είναι οι οδηγίες που χρησιμοποιούνται:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Χρησιμοποιώντας το chroot_local_user=YES, οι τοπικοί χρήστες θα τοποθετηθούν (από προεπιλογή) σε μια φυλακή chroot'ed στον αρχικό κατάλογο αμέσως μετά τη σύνδεση. Αυτό σημαίνει ότι οι τοπικοί χρήστες δεν θα μπορούν να έχουν πρόσβαση σε αρχεία εκτός των αντίστοιχων οικιακών καταλόγων τους.

Τέλος, για να επιτρέψετε στο ftp να διαβάζει αρχεία στον αρχικό κατάλογο του χρήστη, ορίστε το ακόλουθο boolean SELinux:

# setsebool -P ftp_home_dir on

Τώρα μπορείτε να συνδεθείτε στον διακομιστή ftp χρησιμοποιώντας έναν πελάτη όπως το Filezilla:

Σημειώστε ότι το αρχείο καταγραφής /var/log/xferlog καταγράφει λήψεις και μεταφορτώσεις, οι οποίες συμφωνούν με την παραπάνω λίστα καταλόγου:

Περίληψη

Σε αυτό το σεμινάριο έχουμε εξηγήσει πώς να ρυθμίσετε έναν web και έναν διακομιστή ftp. Λόγω της απεραντοσύνης του θέματος, δεν είναι δυνατό να καλυφθούν όλες οι πτυχές αυτών των θεμάτων (δηλαδή εικονικοί οικοδεσπότες Ιστού). Επομένως, σας συνιστώ να ελέγξετε και άλλα εξαιρετικά άρθρα σε αυτόν τον ιστότοπο σχετικά με το Apache.