Apache HTTP Server sicher auf CentOS installieren


Datum der Veröffentlichung:

Aktualisiert:


Fachartikel > Apache HTTP Server sicher auf CentOS installieren

Status 2026 und sichere Verwendung

Fazit: Installieren Sie auf einem unterstützten Host der RHEL-Familie den gepackten httpd, validieren Sie die Konfiguration vor dem erneuten Laden, öffnen Sie nur erforderliche Firewall-Dienste und verwenden Sie korrekte SELinux-Kontexte und boolesche Werte, anstatt SELinux zu deaktivieren.

Was Sie lernen werden

  • Wie Paketinstallation, Systemd-Start, Konfigurationsvalidierung und Netzwerkzugriff zusammenpassen.
  • Wie benutzerdefinierte Dokumentstämme mit Berechtigungen und SELinux-Labels interagieren.
  • Die folgenden CentOS 7-Befehle sind historisch und erfordern ein Äquivalent für die unterstützte Plattform.

Für wen ist dies gedacht: Linux-Administratoren, die einen einfachen Apache-HTTP-Server bereitstellen oder ein älteres CentOS-Runbook migrieren.

Stand 2026: CentOS 7 hat das Ende des Supportzeitraums erreicht. Behalten Sie die ursprüngliche Komplettlösung als Referenz bei, verwenden Sie jedoch DNF und die aktuelle RHEL/Apache-Dokumentation, erzwingen Sie weiterhin SELinux, minimieren Sie Module und testen Sie apachectl configtest vor einem ordnungsgemäßen Neuladen.

Sicherheitshinweis: Die Befehle und Konfigurationsbeispiele im Originalartikel wurden nicht in einer aktuellen Produktionsumgebung erneut ausgeführt. Überprüfen Sie unterstützte Versionen, Backups, Zugriffskontrollen und Rollback-Schritte in einer separaten Testumgebung, bevor Sie sie anwenden.

Offizielle Primärquellen

Überblick

Dies ist die anfängliche Konfigurationsprozedur, die erforderlich ist, um Apache unter CentOS zu installieren und zu starten. Die Informationen basieren auf der Annahme, dass CentOS7 verwendet wird.

Getestete Versionen:

CentOS-Version7.6 (1810)
Apache-Version2.4.6

Inhaltsübersicht

  1. installieren
  2. Grundeinstellung
  3. Zusammenfassung

1. installieren

Dieser Abschnitt beschreibt die Konfiguration des Apache von der Installation bis zum Start.

1-1. Installation von Apache

Führen Sie die Installation von Apache mit dem Befehl yum durch. Führen Sie die Arbeiten als root-Benutzer durch.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Startup-Check (http-Zugang)

Prüfen Sie kurz, ob sie zugänglich ist. Die Installation von Apache (httpd) mit dem Befehl yum aktiviert den Befehl apachectl. Verwenden Sie dies, um den Apache zu starten.

[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1303 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           |-1303 /usr/sbin/httpd -DFOREGROUND
           |-1304 /usr/sbin/httpd -DFOREGROUND
           |-1305 /usr/sbin/httpd -DFOREGROUND
           |-1306 /usr/sbin/httpd -DFOREGROUND
           |-1307 /usr/sbin/httpd -DFOREGROUND
           `-1308 /usr/sbin/httpd -DFOREGROUND

Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Wenn als Ergebnis der Ausführung des Befehls "apachectl status" "Active: active (running)" zurückgegeben wird, wurde das System erfolgreich gestartet.

Anschließend werden HTTP und HTTPS in der CentOS-7-Firewall freigegeben und der Zugriff auf Apache im Browser geprüft. Fügen Sie auch die Option "permanent" hinzu, um die Konfiguration dauerhaft zu machen.

[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Es ist in Ordnung, wenn "http" und "https" zu "Dienste" hinzugefügt wurden. Der Zugriff erfolgt über den Browser. In meinem Fall lautet die IP-Adresse des Servers 192.168.50.10, ich greife also auf "http://192.168.50.10" zu. Es ist in Ordnung, wenn die folgende Seite erscheint

Apache-Bildschirm oben

Wenn das System erfolgreich gestartet wurde, stoppen Sie es.

[root@hostname ~]# apachectl stop

2. Grundeinstellung

2-1. Erstellung eines Ausgabeordners für die Protokolldatei

Um die Protokollierung unter /var/log/ zu verwalten, erstellen Sie ein httpd-Verzeichnis unter /var/log/ als Ordner für Apache-Protokolle.

Die Berechtigungen (Permissions) sollten 755 sein. Mit dieser Einstellung kann Apache schreiben, während andere Benutzer nur lesen können. Wenn andere Benutzer schreiben können, können die Protokolle verfälscht werden.

mkdir /var/log/httpd' muss nicht ausgeführt werden, wenn bereits ein Verzeichnis mit demselben Namen erstellt wurde.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Verwenden Sie das letztgenannte Verfahren, um die Einstellungen für die Apache-Protokollausgabe zu ändern.

Diese Prozedur ist nur eine Prozedur zur Erstellung eines Ordners für die zu speichernden Protokolle.

2-2. Bereichseinstellung

Ändern Sie die in httpd.conf aufgeführten Domain-Einstellungen. Die Apache-Konfiguration ist im Wesentlichen in der Datei httpd.conf zentralisiert. Wenn Sie also die Konfiguration ändern möchten, müssen Sie die Datei httpd.conf anpassen. Domänen müssen nicht eingerichtet werden, wenn es sich um eine lokale Umgebung handelt (nicht für die Öffentlichkeit im Internet zugänglich).

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Entfernen Sie die Auskommentierung und aktivieren Sie die Einstellung ServerName. Der Domänenname wird je nach Umgebung festgelegt.

httpd.conf【Vor der Änderung】


#ServerName www.example.com:80

httpd.conf【nach der Änderung】


ServerName domainname:80

2-3. Aktivierung von SSL-Modulen und Konfigurationsdateien

Aktivieren Sie SSL, um den Zugriff über https zu ermöglichen. SSL-Einstellungen haben mit SEO zu tun, und http ist aus Sicherheitsgründen keine gute Idee, also verwenden Sie https, wenn Sie nicht http verwenden müssen.

Installieren Sie das ssl-Modul mit yum.

[root@hostname ~]# yum -y install mod_ssl

Bei der Installation mit yum wird das ssl-Modul automatisch aktiviert, so dass Sie es nur noch installieren müssen. Eine Konfigurationsdatei wird ebenfalls automatisch erstellt. (/etc/httpd/conf.d/ssl.conf wird automatisch erstellt.)

2-4. Pfad der Protokollausgabe ändern

Ändern Sie das Ausgabeziel des Apache-Protokolls in den soeben erstellten Ausgabeordner für die Protokolldatei. Ändern Sie nur die ssl-Konfigurationsdatei, da sie in einem späteren Schritt so eingerichtet wird, dass der Zugriff nur über ssl (https) erfolgt.

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【Vor der Änderung】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~Verkürzung~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【nach der Änderung】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~Verkürzung~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Durch die obige Änderung wird das Ziel der Protokollausgabe auf "/var/log/httpd" geändert.


'%t, %h' usw. ist die Einstellung für die Protokollformatierung. Im Folgenden finden Sie eine Liste von Formaten, die häufig als Referenz verwendet werden.

Referenz

/ %T:Zeit für die Bearbeitung der Anfrage (Sekunden)

/ %h:Hostname oder IP-Adresse des Clients. Versucht nur, Hostnamen aufzulösen, wenn HostnameLookups auf On gesetzt ist.

/ %r:Erste Zeile des Antrags

/ %b:Bytes der Antwort (ohne HTTP-Header). CLF-Format, d.h. - wenn keines der Bytes gesendet wird

/ %D:Zeit für die Bearbeitung der Anfrage (Mikrosekunden)

/ %>s:HTTP-Status

2-5. Erstellung von SSL-Zertifikaten

Verfahren zur Erstellung von Zertifikaten. Die Selbstzertifizierung ist für private Unternehmen in Ordnung. Bei öffentlich zugänglichen Servern sollte von einer Selbstzertifizierung abgeraten werden.

Es gibt keinen Unterschied in der Sicherheit zwischen normalen Zertifikaten und Selbstzertifikaten. Dies kann den Unterschied ausmachen zwischen einem Zertifikat, das von einem Dritten als zuverlässig eingestuft werden kann, und einem, das dies nicht kann. (Bei der Selbstzertifizierung wird die URL-Leiste rot.) Stellen Sie also für öffentlich zugängliche Server (Server, die von Dritten eingesehen werden können) ein normales Zertifikat aus.

Die Standardzertifikatseinstellungen für Apache sind "/etc/pki/tls/certs/localhost.crt" und "/etc/pki/tls/private/localhost.key".

Die Einstellungen befinden sich in "SSLCertificateFile" und "SSLCertificateKeyFile" in "/etc/httpd/conf.d/ssl.conf".


【Für die Selbstzertifizierung】

Um ein Selbstzertifikat zu erstellen, führen Sie den folgenden Befehl aus. Als Root-Benutzer ausführen.

Wenn Sie "openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt" ausführen, werden Sie mehrmals aufgefordert, eine Antwort zu geben, und zwar immer mit Enter. Dabei handelt es sich um Informationen darüber, wer das Zertifikat ausstellt (z. B. in welchem Land er lebt und wie seine E-Mail-Adresse lautet). Wenn Sie ein normales Zertifikat ausstellen, geben Sie die richtigen Informationen ein und richten Sie es ein.

[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt

【Für normale Zertifikate】

Um ein normales Zertifikat zu erstellen, führen Sie den folgenden Befehl aus. Als Root-Benutzer ausführen.

[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr

Bei regulären Zertifikaten reicht dies nicht aus, um den Prozess abzuschließen. Die Arbeit umfasst die Übergabe der erstellten "server.csr" an die Zertifizierungsstelle, um ein Serverzertifikat ausstellen zu lassen, und die Installation des ausgestellten Serverzertifikats.

2-6. permanentes SSL (Secure Socket Layer)

Es ist nicht sicher, wenn der Zugriff über http erfolgt. Fügen Sie daher eine Einstellung hinzu, die eine Umleitung zu https vorsieht, wenn der Zugriff über http erfolgt.

Es ist möglich, den Zugriff über http zu verbieten, aber aus Sicht der Benutzerfreundlichkeit ist es empfehlenswert, eine Umleitung einzurichten. Führen Sie die folgenden Aufgaben als Root-Benutzer aus.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Fügen Sie am Ende den folgenden Text hinzu.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Es ist möglich, diese Einstellung so zu ändern, dass Zugriffe, die über http eingehen, über https abgewickelt werden.

Es wird darauf hingewiesen, dass diese Einstellung nicht funktioniert, wenn Sie über https kommen. (RewriteCond %{HTTPS} off)

Vergessen Sie nicht zu erwähnen, dass ohne diese Einstellung auch die https-Zugriffe umgeleitet werden, was zu einer Endlosschleife führt.

2-7. Bestätigung der Aktivierung (https-Zugang).

Nachdem Sie die verschiedenen Einstellungen vorgenommen haben, überprüfen Sie, ob die Website über https zugänglich ist. Starten Sie zuerst.

[root@hostname ~]# apachectl start

Der Zugriff erfolgt über den Browser. Dasselbe wie beim http-Zugang, aber in meinem Fall lautet die IP-Adresse des Servers 192.168.50.10, also greife ich auf "http://192.168.50.10" zu.

Die URL wird von "http://192.168.50.10" in "https://192.168.50.10" geändert, da die http-Umleitungseinstellung enthalten ist.

Nachdem er nun erfolgreich gestartet wurde, beenden Sie den Apache.

[root@hostname ~]# apachectl stop

2-8. Einstellung der automatischen Inbetriebnahme

Schließlich ist es schwierig, den Apache bei jedem Neustart des Servers zu starten, obwohl dies nicht zwingend erforderlich ist. Daher wird eine Konfiguration eingerichtet, die den Apache automatisch startet, wenn der Server gestartet wird. Er registriert sich auch bei dem Befehl systemctl. Bitte beachten Sie, dass dieses Verfahren für CentOS7 gilt. Wenn Sie also ein anderes Betriebssystem als CentOS7 verwenden, müssen Sie den Befehl Service verwenden, um dieses Problem zu lösen.

Erstellen Sie eine Datei "apache.service" und beschreiben Sie die erforderlichen Einstellungen.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

Verwendete Einstellungen:

[Unit]
#Beschreibung.
Description=Apache
#Kontrolle vor und nach der Ausführung.
#Before=xxx.service
#After=xxx.service

[Service]
#Benutzer- und Gruppenbezeichnung
User=root
Group=root
#Nach der Aktivierung setzen Sie den Status auf Aktiviert.
Type=oneshot
RemainAfterExit=yes
#Starten, stoppen und neu laden.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Runlevel 3 entsprechende Einstellungen.
WantedBy=multi-user.target

Wenn Sie die Beschreibung abgeschlossen haben, registrieren Sie sie mit dem Befehl systemctl.

[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service                                enabled
[root@hostname ~]# systemctl daemon-reload


3. Zusammenfassung

Wir haben die bei der Installation von Apache erforderliche Erstkonfiguration beschrieben.

Apache arbeitet grundsätzlich mit den Standardeinstellungen, aber wenn Sie ihn tatsächlich anpassen wollen, beachten Sie bitte die Einstellungen für das Ziel der Log-Ausgabe und die SSL-Einstellungen, die Sie beim Betrieb des Systems ändern sollten.