Apache2 Webserver aufsetzen nach IT-Grundschutz: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | |||
| − | |||
== Ziel der Schulung == | == Ziel der Schulung == | ||
Diese Schulung zeigt, wie ein Apache2-Webserver auf einem Linux-System gemäß den IT-Grundschutz-Richtlinien des BSI aufgesetzt wird. Das Ziel ist, eine sichere und stabile Webserverumgebung zu schaffen, die den Anforderungen an Verfügbarkeit, Vertraulichkeit und Integrität entspricht. | Diese Schulung zeigt, wie ein Apache2-Webserver auf einem Linux-System gemäß den IT-Grundschutz-Richtlinien des BSI aufgesetzt wird. Das Ziel ist, eine sichere und stabile Webserverumgebung zu schaffen, die den Anforderungen an Verfügbarkeit, Vertraulichkeit und Integrität entspricht. | ||
| Zeile 6: | Zeile 4: | ||
== Annahmen == | == Annahmen == | ||
* Betriebssystem: Ubuntu Server 20.04 LTS | * Betriebssystem: Ubuntu Server 20.04 LTS | ||
| − | * Webserver: Apache2 | + | * Webserver: [Apache2](https://httpd.apache.org/) |
* Nutzung: Bereitstellung einer internen Webanwendung für Mitarbeiter | * Nutzung: Bereitstellung einer internen Webanwendung für Mitarbeiter | ||
* Sicherheitsanforderungen: Vertraulichkeit und Integrität haben höchste Priorität, da sensible interne Daten verarbeitet werden. | * Sicherheitsanforderungen: Vertraulichkeit und Integrität haben höchste Priorität, da sensible interne Daten verarbeitet werden. | ||
| Zeile 35: | Zeile 33: | ||
=== Server-Härtung === | === Server-Härtung === | ||
* Entfernen nicht benötigter Module: | * Entfernen nicht benötigter Module: | ||
| − | * Beispiel: `sudo a2dismod autoindex` - Autoindex wird deaktiviert, um keine unnötigen Verzeichnisinformationen preiszugeben. | + | * Beispiel: `sudo a2dismod autoindex` - [Autoindex Modul](https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html) wird deaktiviert, um keine unnötigen Verzeichnisinformationen preiszugeben. |
* Sicherheitsmodule installieren: | * Sicherheitsmodule installieren: | ||
| − | * Beispiel: `sudo apt install libapache2-mod-security2` und `sudo a2enmod security2` | + | * Beispiel: `sudo apt install libapache2-mod-security2` und `sudo a2enmod security2` - [ModSecurity](https://github.com/SpiderLabs/ModSecurity) schützt gegen Webangriffe. |
* Grund: Um grundlegende Schutzmechanismen gegen Webangriffe zu bieten. | * Grund: Um grundlegende Schutzmechanismen gegen Webangriffe zu bieten. | ||
| Zeile 43: | Zeile 41: | ||
=== SSL/TLS Verschlüsselung === | === SSL/TLS Verschlüsselung === | ||
* HTTPS erzwingen: | * HTTPS erzwingen: | ||
| − | * Beispiel: Installation von Zertifikaten mit Let's Encrypt: `sudo apt install certbot python3-certbot-apache` | + | * Beispiel: Installation von Zertifikaten mit [Let's Encrypt](https://letsencrypt.org/): `sudo apt install certbot python3-certbot-apache` |
* SSL/TLS aktivieren: `sudo a2enmod ssl` und Konfiguration der virtuellen Hosts auf Port 443. | * SSL/TLS aktivieren: `sudo a2enmod ssl` und Konfiguration der virtuellen Hosts auf Port 443. | ||
* Grund: Schützt die Kommunikation durch Verschlüsselung. | * Grund: Schützt die Kommunikation durch Verschlüsselung. | ||
| Zeile 66: | Zeile 64: | ||
=== Log-Management === | === Log-Management === | ||
* Aktivieren und Überwachen der Apache2-Logs: | * Aktivieren und Überwachen der Apache2-Logs: | ||
| − | * Beispiel: Konfiguriere Logrotate für Apache-Logs: `sudo nano /etc/logrotate.d/apache2` | + | * Beispiel: Konfiguriere [Logrotate](https://man7.org/linux/man-pages/man8/logrotate.8.html) für Apache-Logs: `sudo nano /etc/logrotate.d/apache2` |
* Grund: Ermöglicht die Nachverfolgung von Sicherheitsereignissen und die Fehlerdiagnose. | * Grund: Ermöglicht die Nachverfolgung von Sicherheitsereignissen und die Fehlerdiagnose. | ||
=== Automatische Überwachung === | === Automatische Überwachung === | ||
* Tools zur Überwachung: | * Tools zur Überwachung: | ||
| − | * Beispiel: Installation von Fail2Ban zum Schutz gegen Brute-Force-Angriffe: `sudo apt install fail2ban` | + | * Beispiel: Installation von [Fail2Ban](https://www.fail2ban.org/) zum Schutz gegen Brute-Force-Angriffe: `sudo apt install fail2ban` |
* Grund: Blockiert IP-Adressen, die sich wiederholt fehlgeschlagen anmelden. | * Grund: Blockiert IP-Adressen, die sich wiederholt fehlgeschlagen anmelden. | ||
== Regelmäßige Sicherheitsüberprüfungen und Patches == | == Regelmäßige Sicherheitsüberprüfungen und Patches == | ||
=== Schwachstellenmanagement === | === Schwachstellenmanagement === | ||
| − | * Beispiel: Regelmäßige Nutzung von Tools wie | + | * Beispiel: Regelmäßige Nutzung von Tools wie [Lynis](https://cisofy.com/lynis/) zur Sicherheitsprüfung: `sudo apt install lynis && sudo lynis audit system` |
* Grund: Erkennung und Behebung von Schwachstellen. | * Grund: Erkennung und Behebung von Schwachstellen. | ||
| Zeile 96: | Zeile 94: | ||
== Quellen == | == Quellen == | ||
| − | * BSI IT-Grundschutz-Kompendium 2022 | + | * [BSI IT-Grundschutz-Kompendium 2022](https://www.bsi.bund.de/IT-Grundschutz) |
| − | * | + | * [Apache HTTP Server Documentation](https://httpd.apache.org/docs/) |
| + | * [ModSecurity](https://github.com/SpiderLabs/ModSecurity) | ||
| + | * [Let's Encrypt](https://letsencrypt.org/) | ||
| + | * [Fail2Ban](https://www.fail2ban.org/) | ||
| + | * [Lynis](https://cisofy.com/lynis/) | ||
== Fazit == | == Fazit == | ||
Durch die Anwendung dieser Schritte und Maßnahmen stellen wir sicher, dass der Apache2-Webserver nach den Richtlinien des IT-Grundschutzes sicher betrieben wird. Die Einhaltung dieser Standards schützt den Server vor bekannten Bedrohungen und trägt zu einer stabilen und sicheren IT-Infrastruktur bei. | Durch die Anwendung dieser Schritte und Maßnahmen stellen wir sicher, dass der Apache2-Webserver nach den Richtlinien des IT-Grundschutzes sicher betrieben wird. Die Einhaltung dieser Standards schützt den Server vor bekannten Bedrohungen und trägt zu einer stabilen und sicheren IT-Infrastruktur bei. | ||
Aktuelle Version vom 7. September 2024, 09:29 Uhr
Ziel der Schulung
Diese Schulung zeigt, wie ein Apache2-Webserver auf einem Linux-System gemäß den IT-Grundschutz-Richtlinien des BSI aufgesetzt wird. Das Ziel ist, eine sichere und stabile Webserverumgebung zu schaffen, die den Anforderungen an Verfügbarkeit, Vertraulichkeit und Integrität entspricht.
Annahmen
- Betriebssystem: Ubuntu Server 20.04 LTS
- Webserver: [Apache2](https://httpd.apache.org/)
- Nutzung: Bereitstellung einer internen Webanwendung für Mitarbeiter
- Sicherheitsanforderungen: Vertraulichkeit und Integrität haben höchste Priorität, da sensible interne Daten verarbeitet werden.
Planung und Vorbereitung
Sicherheitsanforderungen definieren
- Vertraulichkeit: Zugriff nur für autorisierte Mitarbeiter
- Integrität: Sicherstellung der Datenkonsistenz
- Verfügbarkeit: Der Webserver muss eine hohe Verfügbarkeit aufweisen, jedoch nicht 24/7.
Rollen und Verantwortlichkeiten
- Systemadministrator: Verantwortlich für die Installation und Konfiguration des Servers
- Sicherheitsbeauftragter: Überwachung der Sicherheitsmaßnahmen und Durchführung regelmäßiger Audits
IT-Grundschutz-Bausteine anwenden
Webanwendungen (WEB)
- **WEB.1: Planung und Konzeption von Webanwendungen** - Der Webserver wird intern genutzt, daher werden nur notwendige Funktionen bereitgestellt. Externe Zugriffe sind nicht erlaubt.
- **WEB.2: Betrieb von Webservern** - Es werden nur die unbedingt notwendigen Module von Apache2 installiert und konfiguriert, um die Angriffsfläche zu minimieren.
Systemhärtung
Grundlegende Anforderungen an Applikationen (APP.1.2.A1)
- Unnötige Dienste deaktivieren:
* Beispiel: `sudo systemctl disable --now avahi-daemon`
- Regelmäßige Updates:
* Beispiel: `sudo apt update && sudo apt upgrade -y` * Grund: Um bekannte Sicherheitslücken schnell zu schließen.
Server-Härtung
- Entfernen nicht benötigter Module:
* Beispiel: `sudo a2dismod autoindex` - [Autoindex Modul](https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html) wird deaktiviert, um keine unnötigen Verzeichnisinformationen preiszugeben.
- Sicherheitsmodule installieren:
* Beispiel: `sudo apt install libapache2-mod-security2` und `sudo a2enmod security2` - [ModSecurity](https://github.com/SpiderLabs/ModSecurity) schützt gegen Webangriffe. * Grund: Um grundlegende Schutzmechanismen gegen Webangriffe zu bieten.
Sichere Konfiguration des Apache2-Servers
SSL/TLS Verschlüsselung
- HTTPS erzwingen:
* Beispiel: Installation von Zertifikaten mit [Let's Encrypt](https://letsencrypt.org/): `sudo apt install certbot python3-certbot-apache` * SSL/TLS aktivieren: `sudo a2enmod ssl` und Konfiguration der virtuellen Hosts auf Port 443. * Grund: Schützt die Kommunikation durch Verschlüsselung.
Sichere Header konfigurieren
- Sicherheitsheader:
* Beispiel: In der Apache-Konfigurationsdatei (z.B. `/etc/apache2/conf-enabled/security.conf`) folgende Zeilen hinzufügen: ``` Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "DENY" Header always set X-XSS-Protection "1; mode=block" Header always set Content-Security-Policy "default-src 'self';" ``` * Grund: Schutz vor gängigen Angriffen wie Clickjacking, MIME-Sniffing und XSS.
Dateizugriffsrechte beschränken
- Sicherstellen, dass der Webserver nur auf die benötigten Dateien zugreifen kann:
* Beispiel: `sudo chmod -R 750 /var/www/html` * Grund: Minimiert das Risiko unbefugter Zugriffe auf die Dateien des Webservers.
Monitoring und Protokollierung
Log-Management
- Aktivieren und Überwachen der Apache2-Logs:
* Beispiel: Konfiguriere [Logrotate](https://man7.org/linux/man-pages/man8/logrotate.8.html) für Apache-Logs: `sudo nano /etc/logrotate.d/apache2` * Grund: Ermöglicht die Nachverfolgung von Sicherheitsereignissen und die Fehlerdiagnose.
Automatische Überwachung
- Tools zur Überwachung:
* Beispiel: Installation von [Fail2Ban](https://www.fail2ban.org/) zum Schutz gegen Brute-Force-Angriffe: `sudo apt install fail2ban` * Grund: Blockiert IP-Adressen, die sich wiederholt fehlgeschlagen anmelden.
Regelmäßige Sicherheitsüberprüfungen und Patches
Schwachstellenmanagement
- Beispiel: Regelmäßige Nutzung von Tools wie [Lynis](https://cisofy.com/lynis/) zur Sicherheitsprüfung: `sudo apt install lynis && sudo lynis audit system`
- Grund: Erkennung und Behebung von Schwachstellen.
Penetrationstests und Audits
- Regelmäßige Sicherheitstests durchführen:
* Beispiel: Internes Audit-Tool oder externe Penetrationstests einsetzen. * Grund: Sicherstellung, dass der Server keine neuen Schwachstellen hat.
Notfallmanagement
Incident Response Plan
- Verfahren zur Reaktion auf Sicherheitsvorfälle entwickeln:
* Beispiel: Eine Checkliste für Sicherheitsvorfälle erstellen und regelmäßig testen.
- Grund: Schnelle und effektive Reaktion bei Sicherheitsvorfällen.
Dokumentation
- Alle Maßnahmen und Konfigurationen dokumentieren:
* Beispiel: Eine Wiki-Seite für die Konfigurationsdokumentation und Sicherheitsprotokolle pflegen. * Grund: Gewährleistung der Nachvollziehbarkeit und Unterstützung bei der Fehlersuche.
Quellen
- [BSI IT-Grundschutz-Kompendium 2022](https://www.bsi.bund.de/IT-Grundschutz)
- [Apache HTTP Server Documentation](https://httpd.apache.org/docs/)
- [ModSecurity](https://github.com/SpiderLabs/ModSecurity)
- [Let's Encrypt](https://letsencrypt.org/)
- [Fail2Ban](https://www.fail2ban.org/)
- [Lynis](https://cisofy.com/lynis/)
Fazit
Durch die Anwendung dieser Schritte und Maßnahmen stellen wir sicher, dass der Apache2-Webserver nach den Richtlinien des IT-Grundschutzes sicher betrieben wird. Die Einhaltung dieser Standards schützt den Server vor bekannten Bedrohungen und trägt zu einer stabilen und sicheren IT-Infrastruktur bei.