ubuntu:apache_webserver
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ubuntu:apache_webserver [2019/06/21 13:53] – [Cerbot Zertifikatserneuerung automatisieren] angelegt Sebastian Hetzel | ubuntu:apache_webserver [2022/11/06 15:28] (aktuell) – [Certbot installieren] Sebastian Hetzel | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Ubuntu 18.04: Apache Webserver ====== | + | ====== Ubuntu 18.04 und 20.04 und 22.04: Apache Webserver ====== |
| + | |||
| + | {{: | ||
| Ich verwende in dieser Anleitung das MPM ITK - http:// | Ich verwende in dieser Anleitung das MPM ITK - http:// | ||
| Zeile 27: | Zeile 29: | ||
| </ | </ | ||
| + | Sicherheistskritische Module ausschalten: | ||
| + | |||
| + | < | ||
| + | # a2dismod info | ||
| + | # a2dismod status | ||
| + | </ | ||
| ===== Webserver-User für virtuellen Host ===== | ===== Webserver-User für virtuellen Host ===== | ||
| Zeile 96: | Zeile 104: | ||
| ==== Certbot installieren ==== | ==== Certbot installieren ==== | ||
| - | Als root ausführen: | + | Für Ubuntu 18.04 musste noch ein PPA eingebunden werden. |
| + | Bitte nachfolgende Befhele als root ausführen: | ||
| < | < | ||
| Zeile 106: | Zeile 115: | ||
| apt-get install python-certbot-apache</ | apt-get install python-certbot-apache</ | ||
| + | Ab Ubuntu 20.04 ist dies nicht mehr notwendig: | ||
| + | |||
| + | Folgende Anleitung verwenden (snapd): | ||
| + | > https:// | ||
| ==== Cerbot: Zertifikate anfordern und Webserver anpassen ==== | ==== Cerbot: Zertifikate anfordern und Webserver anpassen ==== | ||
| Zeile 114: | Zeile 127: | ||
| </ | </ | ||
| + | ==== Cerbot: Zertifikatserneuerung testen ==== | ||
| + | |||
| + | < | ||
| + | # certbot renew --dry-run | ||
| + | </ | ||
| ==== Cerbot Zertifikatserneuerung automatisieren ==== | ==== Cerbot Zertifikatserneuerung automatisieren ==== | ||
| Zeile 129: | Zeile 147: | ||
| </ | </ | ||
| + | ==== Verschlüsselung: | ||
| + | |||
| + | <file | / | ||
| + | # This file contains important security parameters. If you modify this file | ||
| + | # manually, Certbot will be unable to automatically provide future security | ||
| + | # updates. Instead, Certbot will print and log an error message with a path to | ||
| + | # the up-to-date file that you will need to refer to when manually updating | ||
| + | # this file. | ||
| + | |||
| + | SSLEngine on | ||
| + | |||
| + | # Intermediate configuration, | ||
| + | SSLProtocol | ||
| + | SSLCipherSuite | ||
| + | SSLHonorCipherOrder | ||
| + | SSLCompression | ||
| + | |||
| + | SSLOptions +StrictRequire | ||
| + | |||
| + | # Add vhost name to log entries: | ||
| + | LogFormat "%h %l %u %t \" | ||
| + | LogFormat "%v %h %l %u %t \" | ||
| + | |||
| + | #CustomLog / | ||
| + | #LogLevel warn | ||
| + | #ErrorLog / | ||
| + | |||
| + | # Always ensure Cookies have " | ||
| + | #Header edit Set-Cookie (? | ||
| + | </ | ||
| + | |||
| + | In der Konfiguration des virtuellen Hosts: | ||
| + | |||
| + | < | ||
| + | [...] | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | [...] | ||
| + | </ | ||
| ===== Logfiles rotieren lassen ===== | ===== Logfiles rotieren lassen ===== | ||
| Zeile 153: | Zeile 211: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ===== PHP ===== | ||
| + | |||
| + | < | ||
| + | # aptitude install php php-cli php-json php-pdo php-mysql php-zip php-gd | ||
| + | </ | ||
| + | |||
| + | ===== ModSecurity ===== | ||
| + | |||
| + | Dieses Apache-Modul erkennt Angriffmuster (z. B. Session Hijacking, Cross-Site-Scripting) und verweigert bei Angriff die Anfrage. | ||
| + | |||
| + | ==== Installation ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Konfiguration ==== | ||
| + | |||
| + | < | ||
| + | cd / | ||
| + | cp modsecurity.conf-recommended modsecurity.conf | ||
| + | </ | ||
| + | |||
| + | ModSecurity sollte nun im DetectOnly-Modus laufen und erkannte Angriffsmuster unter ''/ | ||
| + | |||
| + | Dies kann folgendermaßen geändert werden: | ||
| + | |||
| + | <file |h / | ||
| + | [...] | ||
| + | # Enable ModSecurity, | ||
| + | # only to start with, because that minimises the chances of post-installation | ||
| + | # disruption. | ||
| + | # | ||
| + | # | ||
| + | SecRuleEngine On | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | <file |h / | ||
| + | [...] | ||
| + | # Log everything we know about a transaction. | ||
| + | # | ||
| + | SecAuditLogParts ABCEFHJKZ | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | ==== Aktuelles OWASP Core Rule Set ==== | ||
| + | |||
| + | < | ||
| + | cd / | ||
| + | git clone https:// | ||
| + | cd owasp-modsecurity-crs | ||
| + | cp crs-setup.conf.example crs-setup.conf | ||
| + | </ | ||
| + | |||
| + | Das Regelwerk hinterlegen: | ||
| + | |||
| + | <file |h / | ||
| + | < | ||
| + | # Default Debian dir for modsecurity' | ||
| + | SecDataDir / | ||
| + | |||
| + | # Include all the *.conf files in / | ||
| + | # Keeping your local configuration in that directory | ||
| + | # will allow for an easy upgrade of THIS file and | ||
| + | # make your life easier | ||
| + | # IncludeOptional / | ||
| + | IncludeOptional / | ||
| + | IncludeOptional / | ||
| + | IncludeOptional / | ||
| + | |||
| + | # Include OWASP ModSecurity CRS rules if installed | ||
| + | # IncludeOptional / | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Aktualisieren kann man das Ruleset, indem man einfach eine aktuelle Kopie von github zieht und diese in sein Conf-Verzeichnis kopiert. Bitte vorher die Konfig-Dateien an Seite legen. | ||
| + | |||
| + | ==== Logfiles ==== | ||
| + | |||
| + | Da sehr viele Daten geloggt werden, sollte man das Logfile täglich rotieren lassen: | ||
| + | |||
| + | <file |h / | ||
| + | / | ||
| + | { | ||
| + | rotate 14 | ||
| + | daily | ||
| + | missingok | ||
| + | compress | ||
| + | delaycompress | ||
| + | notifempty | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Regelausnahmen: | ||
| + | |||
| + | === Virtuellen Host anpassen für WebDAV === | ||
| + | |||
| + | < | ||
| + | [...] | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | === Ausnahmeregelungen für Nextcloud === | ||
| + | |||
| + | <file | REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf> | ||
| + | [...] | ||
| + | # Own ip address not monitored | ||
| + | SecRule REMOTE_ADDR " | ||
| + | |||
| + | SecRule REQUEST_URI " | ||
| + | </ | ||
| + | |||
| + | === Globale Ausnahme-Presets für Nextcloud === | ||
| + | |||
| + | Achtung: Gilt für alle virtuellen Hosts! | ||
| + | |||
| + | <file | > | ||
| + | [...] | ||
| + | SecAction \ | ||
| + | " | ||
| + | phase:1,\ | ||
| + | nolog,\ | ||
| + | pass,\ | ||
| + | t:none,\ | ||
| + | setvar: | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | > https:// | ||
ubuntu/apache_webserver.1561117994.txt.gz · Zuletzt geändert: von Sebastian Hetzel
