Apache2 Webserver aufsetzen nach IT-Grundschutz: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
+
= Apache2 Webserver aufsetzen nach IT-Grundschutz =
  
 
== Ziel der Schulung ==
 
== Ziel der Schulung ==
Zeile 6: Zeile 6:
 
== 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 35:
 
=== 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 43:
 
=== 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 66:
 
=== 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 `lynis` zur Sicherheitsprüfung: `sudo apt install lynis && sudo lynis audit system`
+
* 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 96:
  
 
== Quellen ==
 
== Quellen ==
* BSI IT-Grundschutz-Kompendium 2022: [BSI Website](https://www.bsi.bund.de/IT-Grundschutz)
+
* [BSI IT-Grundschutz-Kompendium 2022](https://www.bsi.bund.de/IT-Grundschutz)
* Apache Security: [Apache HTTP Server Documentation](https://httpd.apache.org/docs/)
+
* [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.

Version vom 7. September 2024, 09:29 Uhr

Apache2 Webserver aufsetzen nach IT-Grundschutz

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

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.