Apache2 Webserver aufsetzen nach IT-Grundschutz
Version vom 7. September 2024, 09:29 Uhr von Thomas.will (Diskussion | Beiträge)
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
- [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.