Tutorials  /  Security

Apache auf Ubuntu 20.04 installieren und mit SSL & UFW absichern

Ccentron Redaktion · Oktober 2025 ·8 Min. Lesezeit ·Security, Tutorial

Apache ist ein kostenloser, quelloffener Webserver, der sowohl statische als auch dynamische Anwendungen bereitstellen kann. Er bietet eine äußerst flexible Architektur mit zahlreichen modularen Erweiterungen und kann zudem als Reverse Proxy oder Load Balancer agieren, um Webanwendungen oder Backend-Dienste auszuliefern.

Diese Anleitung zeigt, wie Sie Apache auf Ubuntu 20.04 installieren und so konfigurieren, dass Webanwendungen über virtuelle Hosts sicher bereitgestellt werden.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04
  • Ein A-Record für Ihre Domain, der auf die IP-Adresse des Servers verweist
  • SSH-Zugang zum Server als Nicht-Root-Benutzer mit sudo-Rechten
  • Sicherstellen, dass der Server aktuell ist
SEC

Passende Infrastruktur bei centron

Absicherung endet nicht beim Server: Cloud Firewalls filtern den Datenverkehr vor der VM – zentral verwaltet, ohne Aufpreis je Regel. Cloud Firewalls ansehen →

Apache installieren

Das Apache-Paket ist in den Standard-Repositories von Ubuntu 20.04 enthalten. Folgen Sie diesen Schritten, um die neueste Version mit dem APT-Paketmanager zu installieren und Apache so einzurichten, dass es beim Systemstart automatisch ausgeführt wird.

Paketindex des Servers aktualisieren

Konsole
$ sudo apt update

Apache-Webserver-Paket installieren

Konsole
$ sudo apt install apache2 -y

Installierte Apache-Version prüfen

Konsole
$ apachectl -v

Beispielausgabe:

Server version: Apache/2.4.41 (Ubuntu)

Server built: 2024-07-17T18:58:09

HTTP-Verkehr durch die Firewall erlauben

Konsole
$ sudo ufw allow 80/tcp

Öffnen Sie anschließend die öffentliche IP-Adresse Ihres Servers in einem Browser (z. B. Chrome), um zu überprüfen, ob die standardmäßige Apache-Willkommensseite angezeigt wird.

Apache-Systemdienst verwalten

Das Apache-Serviceprofil steuert die Laufzeitprozesse des Webservers. Verwenden Sie die folgenden Befehle, um Apache so zu konfigurieren, dass es beim Booten startet, und um den Dienststatus zu prüfen oder zu steuern.

Apache beim Systemstart aktivieren

Konsole
$ sudo systemctl enable apache2

Beispielausgabe:

Synchronizing state of apache2.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.

Executing: /usr/lib/systemd/systemd-sysv-install enable apache2

Apache-Dienst starten

Konsole
$ sudo systemctl start apache2

Status des Apache-Dienstes prüfen

Konsole
$ sudo systemctl status apache2

Beispielausgabe:

● apache2.service - The Apache HTTP Server

Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2025-04-06 08:30:18 UTC; 3min 26s ago

Docs: https://httpd.apache.org/docs/2.4/

Main PID: 3588 (apache2)

Tasks: 55 (limit: 9415)

Memory: 7.0M

CGroup: /system.slice/apache2.service

├─3588 /usr/sbin/apache2 -k start

├─3589 /usr/sbin/apache2 -k start

└─3590 /usr/sbin/apache2 -k start

Apache-Dienst stoppen

Konsole
$ sudo systemctl stop apache2

Apache neu starten

Konsole
$ sudo systemctl restart apache2

Neuen Apache Virtual Host erstellen

Apache verwendet virtuelle Hosts, um Anwendungen bereitzustellen. Standardmäßig lauscht ein virtueller Host auf allen IP-Adressen über den HTTP-Port 80. Im Folgenden wird beschrieben, wie Sie den Standard-Host deaktivieren und einen eigenen virtuellen Host für Ihre Domain einrichten.

Konfigurationsdatei erstellen

Konsole
$ sudo nano /etc/apache2/sites-available/website.conf

Fügen Sie folgenden Inhalt ein und ersetzen Sie app.example.com durch Ihre Domain und webmaster@example.com durch die E-Mail-Adresse des Administrators:

Code
ServerAdmin webmaster@example.com
ServerName app.example.com

DocumentRoot /var/www/html/website
DirectoryIndex index.html index.php

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined


    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

Diese Konfiguration liefert Dateien aus /var/www/html/website über die Domain app.example.com. Wichtige Direktiven:

  • <VirtualHost *:80>: Lauscht auf Port 80
  • ServerAdmin: Administrator-E-Mail für Fehlermeldungen
  • ServerName: Domainname für den virtuellen Host
  • DocumentRoot: Verzeichnis, aus dem die Anwendungsdateien bereitgestellt werden
  • DirectoryIndex: Standarddatei, die ausgeliefert wird (z. B. index.html)
  • ErrorLog und CustomLog: Speicherorte der Logdateien
  • <Directory /var/www/html/website>: Einstellungen für das Webroot-Verzeichnis
  • Options Indexes FollowSymLinks: Aktiviert Verzeichnisauflistung und symbolische Links
  • AllowOverride All: Erlaubt .htaccess-Overrides
  • Require all granted: Gewährt allen Benutzern Zugriff

Standard-Virtual-Host deaktivieren

Konsole
$ sudo a2dissite 000-default

Neuen Virtual Host aktivieren

Konsole
$ sudo a2ensite website

Webroot-Verzeichnis erstellen

Konsole
$ sudo mkdir -p /var/www/html/website

Apache-Konfiguration testen

Konsole
$ sudo apachectl configtest

Erwartete Ausgabe: Syntax OK

Beispielseite index.html anlegen

Konsole
$ sudo nano /var/www/html/website/index.html

Fügen Sie folgenden HTML-Code ein:

Code
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Apache Web Server</title>
</head>
<body>
<h1>Greetings from centron</h1>
</body>
</html>

Diese Seite zeigt beim Aufruf Ihrer Domain die Meldung „Greetings from centron“ an.

Besitzrechte für das Webroot-Verzeichnis setzen

Konsole
$ sudo chown -R www-data:www-data /var/www/html/website

Apache neu starten, um Änderungen zu übernehmen

Konsole
$ sudo systemctl restart apache2

Apache-Webserver absichern

Standardmäßig lauscht Apache auf Port 80, wodurch Daten zwischen Server und Browser unverschlüsselt übertragen werden. HTTPS ermöglicht eine verschlüsselte Kommunikation mithilfe gültiger SSL-Zertifikate, die den Webserver gegenüber dem Browser authentifizieren. Gehen Sie wie folgt vor, um Apache mit vertrauenswürdigen Let's Encrypt SSL-Zertifikaten abzusichern und sämtlichen HTTP-Verkehr automatisch auf HTTPS umzuleiten.

Certbot-Client installieren

Installieren Sie den Certbot-Client für Let's Encrypt über den Snap-Paketmanager.

Konsole
$ sudo snap install certbot --classic

Neues SSL-Zertifikat anfordern

Fordern Sie ein Let's Encrypt SSL-Zertifikat für Ihre Virtual-Host-Domain an. Ersetzen Sie app.example.com durch Ihre Domain und hello@example.com durch Ihre E-Mail-Adresse.

Konsole
$ sudo certbot --apache --agree-tos --redirect -d app.example.com -m hello@example.com

Bei erfolgreicher Ausführung sehen Sie eine Ausgabe ähnlich der folgenden:

Successfully received certificate.

Certificate is saved at: /etc/letsencrypt/live/app.example.com/fullchain.pem

Key is saved at: /etc/letsencrypt/live/app.example.com/privkey.pem

This certificate expires on 2025-07-05.

These files will be updated when the certificate renews.

Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate

Successfully deployed certificate for app.example.com to /etc/apache2/sites-available/website-le-ssl.conf

Congratulations! You have successfully enabled HTTPS on https://app.example.com

SSL-Erneuerung testen

Überprüfen Sie den automatischen Erneuerungsprozess mit einem Testlauf.

Konsole
$ sudo certbot renew --dry-run

Beispielausgabe:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Processing /etc/letsencrypt/renewal/app.example.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Account registered.

Simulating renewal of an existing certificate for app.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations, all simulated renewals succeeded:

/etc/letsencrypt/live/app.example.com/fullchain.pem (success)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Apache neu starten, um SSL-Änderungen zu übernehmen

Konsole
$ sudo systemctl restart apache2

Firewall-Regeln einrichten

Auf Ubuntu 20.04-Servern kann die Uncomplicated Firewall (UFW) aktiviert werden. Konfigurieren Sie UFW so, dass Netzwerkverbindungen über das Apache-Firewall-Profil zugelassen werden.

Verfügbare UFW-Profile anzeigen

Konsole
$ sudo ufw app list

Sie sollten Profile ähnlich der folgenden sehen:

Apache

Apache Full

Apache Secure

OpenSSH

Apache Full-Profil erlauben

Dadurch werden sowohl HTTP (Port 80) als auch HTTPS (Port 443) Verbindungen durch die Firewall ermöglicht.

Konsole
$ sudo ufw allow 'Apache Full'

Firewall neu laden

Konsole
$ sudo ufw reload

Firewall-Status prüfen

Konsole
$ sudo ufw status

Beispielausgabe:

To Action From

-- ------ ----

22/tcp ALLOW Anywhere

Apache Full ALLOW Anywhere

22/tcp (v6) ALLOW Anywhere (v6)

Apache Full (v6) ALLOW Anywhere (v6)

Öffnen Sie abschließend Ihre Virtual-Host-Domain https://app.example.com in einem Browser und prüfen Sie, ob Apache Ihre HTML-Anwendung mit der Meldung „Greetings from centron“ ausliefert.

Fazit

Sie haben erfolgreich den Apache-Webserver auf Ihrem Ubuntu 20.04-Server installiert. Apache ermöglicht das Hosting statischer Webseiten und die Integration mit dynamischen Inhaltsprozessoren wie PHP, um moderne Anwendungen wie WordPress bereitzustellen. Darüber hinaus können Sie Apache mithilfe des Moduls mod_proxy als Reverse Proxy konfigurieren, um Backend-Dienste sicher auszuliefern.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Security
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren