RHCSA-Serie: Installieren, Konfigurieren und Sichern eines Web- und FTP-Servers - Teil 9
Ein Webserver (auch als HTTP-Server bezeichnet) ist ein Dienst, der Inhalte (in der Regel Webseiten, aber auch andere Arten von Dokumenten) an einen Client in einem Netzwerk überträgt.
Ein FTP-Server ist eine der ältesten und am häufigsten verwendeten Ressourcen (auch heute noch), um Dateien für Clients in einem Netzwerk verfügbar zu machen, wenn keine Authentifizierung erforderlich ist, da FTP Benutzername und Passwort ohne Verschlüsselung verwendet.
Der in RHEL 7 verfügbare Webserver ist Version 2.4 des Apache HTTP Servers. Was den FTP-Server betrifft, so verwenden wir den Very Secure Ftp Daemon (auch bekannt als vsftpd), um durch TLS gesicherte Verbindungen herzustellen.
In diesem Artikel erfahren Sie, wie Sie einen Webserver und einen FTP-Server in RHEL 7 installieren, konfigurieren und sichern.
Installation von Apache und FTP Server
In dieser Anleitung verwenden wir einen RHEL 7-Server mit der statischen IP-Adresse 192.168.0.18/24. Um Apache und VSFTPD zu installieren, führen Sie den folgenden Befehl aus:
yum update && yum install httpd vsftpd
Wenn die Installation abgeschlossen ist, werden beide Dienste zunächst deaktiviert, so dass wir sie vorerst manuell starten und sie ab dem nächsten Start automatisch starten lassen müssen:
systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd
Darüber hinaus müssen wir die Ports 80 und 21 öffnen, auf denen die Web- bzw. FTP-Daemons lauschen, um den Zugriff auf diese Dienste von außen zu ermöglichen:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload
Um zu bestätigen, dass der Webserver ordnungsgemäß funktioniert, starten Sie Ihren Browser und geben Sie die IP des Servers ein. Sie sollten die Testseite sehen:
Was den FTP-Server betrifft, so müssen wir ihn weiter konfigurieren, was wir in einer Minute tun werden, bevor wir bestätigen, dass er wie erwartet funktioniert.
Konfigurieren und Sichern des Apache-Webservers
Die Hauptkonfigurationsdatei für Apache befindet sich in /etc/httpd/conf/httpd.conf, kann aber auch auf anderen Dateien in /etc/httpd/conf.d basieren.
Obwohl die Standardkonfiguration in den meisten Fällen ausreichend sein sollte, ist es eine gute Idee, sich mit allen verfügbaren Optionen vertraut zu machen, wie in der offiziellen Dokumentation beschrieben.
Erstellen Sie wie immer eine Sicherungskopie der Hauptkonfigurationsdatei, bevor Sie sie bearbeiten:
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Öffnen Sie es dann mit Ihrem bevorzugten Texteditor und suchen Sie nach den folgenden Variablen:
- ServerRoot: Das Verzeichnis, in dem die Konfigurations-, Fehler- und Protokolldateien des Servers gespeichert sind.
- Listen: Weist Apache an, auf bestimmte IP-Adressen und/oder Ports zu lauschen.
- Include: Ermöglicht das Einschließen anderer Konfigurationsdateien, die vorhanden sein müssen. Andernfalls schlägt der Server fehl, im Gegensatz zur IncludeOptional-Direktive, die stillschweigend ignoriert wird, wenn die angegebenen Konfigurationsdateien nicht vorhanden sind.
- Benutzer und Gruppe: Der Name des Benutzers/der Gruppe, unter dem der httpd-Dienst ausgeführt werden soll.
- DocumentRoot: Das Verzeichnis, aus dem Apache Ihre Dokumente bereitstellt. Standardmäßig werden alle Anfragen aus diesem Verzeichnis übernommen, aber symbolische Links und Aliase können verwendet werden, um auf andere Speicherorte zu verweisen.
- ServerName: Diese Direktive legt den Hostnamen (oder die IP-Adresse) und den Port fest, den der Server zur Identifizierung verwendet.
Die erste Sicherheitsmaßnahme besteht darin, einen dedizierten Benutzer und eine Gruppe (d. h. tecmint/tecmint) zu erstellen, unter denen der Webserver ausgeführt wird, und den Standardport auf einen höheren Port (in diesem Fall 9000) zu ändern:
ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000
Sie können die Konfigurationsdatei mit testen.
apachectl configtest
und wenn alles in Ordnung ist, dann starten Sie den Webserver neu.
systemctl restart httpd
Und vergessen Sie nicht, den neuen Port in der Firewall zu aktivieren (und den alten zu deaktivieren):
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
Beachten Sie, dass Sie aufgrund von SELinux-Richtlinien nur die Ports verwenden können, die von
semanage port -l | grep -w '^http_port_t'
für den Webserver.
Wenn Sie einen anderen Port (z. B. TCP-Port 8100) verwenden möchten, müssen Sie ihn zum SELinux-Portkontext für den httpd-Dienst hinzufügen:
semanage port -a -t http_port_t -p tcp 8100
Um Ihre Apache-Installation weiter zu sichern, gehen Sie folgendermaßen vor:
1. Der Benutzer, unter dem Apache ausgeführt wird, sollte keinen Zugriff auf eine Shell haben:
usermod -s /sbin/nologin tecmint
2. Deaktivieren Sie die Verzeichnisauflistung, um zu verhindern, dass der Browser den Inhalt eines Verzeichnisses anzeigt, wenn in diesem Verzeichnis keine index.html vorhanden ist.
Bearbeiten Sie /etc/httpd/conf/httpd.conf (und die Konfigurationsdateien für virtuelle Hosts, falls vorhanden) und stellen Sie sicher, dass die Options-Direktive, sowohl auf oberster als auch auf Verzeichnisblockebene, auf Keine gesetzt ist:
Options None
3. Verstecken Sie Informationen über den Webserver und das Betriebssystem in HTTP-Antworten. Bearbeiten Sie /etc/httpd/conf/httpd.conf wie folgt:
ServerTokens Prod
ServerSignature Off
Jetzt können Sie mit der Bereitstellung von Inhalten aus Ihrem Verzeichnis /var/www/html beginnen.
Konfigurieren und Sichern des FTP-Servers
Wie im Fall von Apache ist die Hauptkonfigurationsdatei für Vsftpd (/etc/vsftpd/vsftpd.conf) gut kommentiert und obwohl die Standardkonfiguration für die meisten Anwendungen ausreichen sollte, sollten Sie sich mit der Dokumentation und der Manpage (man vsftpd.conf) vertraut machen, um den FTP-Server effizienter zu betreiben (das kann ich nicht oft genug betonen!).
In unserem Fall sind dies die verwendeten Anweisungen:
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
Durch die Verwendung von chroot_local_user=YES werden lokale Benutzer (standardmäßig) direkt nach der Anmeldung in ein chroot-Jail in ihrem Home-Verzeichnis gelegt. Das bedeutet, dass lokale Benutzer nicht auf Dateien außerhalb der entsprechenden Basisverzeichnisse zugreifen können.
Um ftp das Lesen von Dateien im Home-Verzeichnis des Benutzers zu ermöglichen, legen Sie den folgenden booleschen SELinux-Wert fest:
setsebool -P ftp_home_dir on
Sie können sich jetzt mit einem Client wie Filezilla mit dem FTP-Server verbinden:
Beachten Sie, dass das Protokoll /var/log/xferlog Downloads und Uploads aufzeichnet, die mit der obigen Verzeichnisauflistung übereinstimmen:
Lesen Sie auch: Begrenzen Sie die von Anwendungen in einem Linux-System verwendete FTP-Netzwerkbandbreite mit Trickle
Zusammenfassung
In diesem Tutorial haben wir erklärt, wie Sie einen Web- und einen FTP-Server einrichten. Aufgrund der Weite des Themas ist es nicht möglich, alle Aspekte dieser Themen (z. B. virtuelle Webhosts) abzudecken. Daher empfehle ich Ihnen, auch andere hervorragende Artikel auf dieser Website über Apache zu lesen.




