Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:server:security [15.09.2019 12:00] – [fail2ban] adminde:server:security [03.06.2021 12:21] – angelegt admin
Zeile 1: Zeile 1:
 ====== Server-Sicherheit ====== ====== Server-Sicherheit ======
  
-Dieses Kapitel erklärt einige für die Sicherheit des Servers empfehlenswerte Konfigurations-Einstellungen.+Ein Webserver dient dazu, Inhalte einem breiten Publikum verfügbar zu machen. Dies bedeutet zugleich, dass Dritte mit dem Server interagieren. In aller Regel mehrfach täglich (meist automatisierte) Angriffe auf Webserver. Das Ziel ist es dabei, durch die Ausnutzung von Sicherheitslücken an geschützte Daten zu kommen oder den Server für kriminelle Zwecke zu missbrauchen.
  
 +Neben Angriffen von Außen werden Sie beim langfristigen Betrieb auch mit Problemen konfrontiert, welche von Innen kommen: Nutzer:innen, die versehentlich ihre Befragungsprojekte und Daten löschen, voll-laufende Festplatten oder unzureichende Rechenleistung.
  
-===== fail2ban =====+Es hat sich bewährt, einen Befragungsserver (welcher oftmals [[:de:general:dsgvo|personenbezogene Daten]] verarbeitet) auf einem separaten Server bzw. in einer eigenen VM zu betreiben. Dies hat zwei Vorteile: Zum einen kann die Software (Webserver-Applikation, PHP) ohne Rücksicht auf andere Software regelmäßig aktualisiert werden. Zum anderen vermeidet man das Risiko, dass Sicherheitslücken in anderer Software (z.B. eine nicht aktualisierte Wordpress-Instanz) Zugriff auf den Server und damit auf Befragungsdaten erlauben. Deshalb wird in der DSGVO auch explizit auf die Trennung von Datenverarbeitungsprozessen verwiesen.
  
-Für den Zugriff auf laufende Interviews wird jedem Interview ein "Token" zugeteilt, eine 12-stellige alphanumerische Zeichenfolge. Wer das Interview-Token kenntkann das Interview fortführen und ggf. mit dem Zurück-Knopf auch eingegebene Daten einsehen.+Um einen sicheren Server-Betrieb zu gewährleistensind folgende Punkte zu beachten:
  
-Damit man gültige Tokens nicht einfach durch Ausprobieren (brute forceermitteln kannsollte der Server IP-Adressen sperren, wenn diese ungültige Tokens verwenden. Dafür speichert SoSci Survey ungültige Eingaben in der Datei ''system/logfiles/token-fail.log''Auch ungültige Seriennummern und Serienmail-Schlüssel werden in dieser Datei vermerkt. +  * Sichere Umgebung 
- +    * Wahl eines zuverlässigen Hosters bzw. Rechenzentrums (bei einigen Hostern stehen die Server ungeschützt im Flur) 
-Auf Linux-Systemen kann man IP-Adressen, die in dieser Liste häufiger auftauchen, mittels [[https://www.fail2ban.org|fail2ban]] vorübergehend sperren. Auf Debian-basierten Systemen kann man fail2ban wie folgt installieren: +    * Verwendung sicherer und unterschiedlicher Passwörter für SSH (hier zusätzlich Keyfile), MySQL, Administrator-Konto in SoSci Survey, Serverüberwachung u.s.w. -- der Einsatz eines Passwort-Managers wie KeePass XC bietet hier große Vorteile. 
- +  * Allgemeine Sicherheitsfunktionen 
-    sudo apt-get install fail2ban +    * Firewall (z.B. ''iptables'') 
- +      * Freigabe von Ports 80 und 443 (SMTP-Port 25 nur, wenn der Server auch eingehende Mails verarbeiten muss) 
-Zunächst muss eine Datei ''/etc/fail2ban/filter.d/serial-fail.conf'' mit folgendem Inhalt angelegt werden. +      * Restriktive IP-Beschränkung des SSH-Ports 22 
- +      * MySQL-Port 3306 nur durch einen SSH-Tunnel (z.B. via PuTTYerreichbar 
-<file> +    * Malware-Scanner (z.B. ''chkrootkit'' und ''rkhunter'') 
-[Definition] +    * Automatisierte Sicherheitsupdates (z.B. ''unattended-upgrades'') 
-failregex = <HOST>\s+(invalid|serial|deliveryToken|session\.id+      * Zusätzlich wöchentliche oder monatliche Systemupdates 
-ignoreregex = +    * Absicherung von Teilnahmeschlüsseln (z.BSeriennummern) gegen Brute-Force-Angriffe ([[de:server:security:fail2ban]]) 
-</file> +  * Gängige Verschlüsselung einsetzen bzw. aktivieren 
- +    * SSL-Verschlüsslungsodass jeglicher Zugriff auf Fragebögen und Projektverwaltung nur über HTTPS möglich ist 
-Anschließend muss die Datei ''/etc/fail2ban/jail.local'' angelegt oder (falls schon vorhandenein Abschnitt ''[serial-fail]'' einfügt werden, welcher auf die Logdatei mit den ungültigen Einträgen verweist: +    * Data-at-Rest-Verschlüsselung für die Datenbank (MariaDB [[https://mariadb.com/kb/en/data-at-rest-encryption-overview/|Data-at-Rest Encryption Overview]]) 
- +      * Alternativ Verwendung einer verschlüsselten Partition auf dem Server, wenn auch hochgeladene Dateien abgesichert werden müssen (Sicherstellen dass der Server dann nach einem Neustart wieder automatisch anläuft!) 
-<file> +  * Datensicherung (verschlüsseltauf einen Backup-Speicher außerhalb des Servers (z.B. Cloud-Speicher mittels ''duply''
-[DEFAULT] +    * Tägliches Datenbank-Dump (''mysqldump'') inkl. Backup des Dumps -- hier empfehlen wir eine Aufbewahrung für 1 Monat bzw12 Monate, wenn die automatische Archivierung von Befragungsprojekten verwendet wird (Nutzer:innen bemerken oftmals erst nach 9 Monaten, dass ihr wichtiges Befragungsprojekt gelöscht wurde) 
-ignoreip = 127.0.0.1/8 +    * Inkrementelles Dateisystem-Backup 
-maxretry = 3 +    * Kryptografische Schlüssel sicher verwahren und testen, ob die Wiederherstellung beider Backups von einem anderen Server aus tatsächlich möglich ist und funktioniert 
-banaction = iptables-multiport +  * Server-Stabilität im Langzeit-Betrieb 
- +    * Serverüberwachung (z.B. mit ''monit'' und ''munin'') 
-[serial-fail+    * Automatisierter Server-Neustart (z.B. einmal pro Woche oder pro Monat)
-enabled  = true  +
-port     = http,https +
-filter   = serial-fail +
-action   = iptables-allports +
-           mail-whois[name=Serial Fail, dest=IHRE@E-MAIL-ADRESSE] +
-logpath /PFAD_ZU_SOSCI/system/logfiles/token-fail.log +
-maxretry = 50 +
-bantime  = 7200 +
-# SoSci Survey will lock IPs by itself, this is just the uppermost limit +
- +
-[sshd-ddos] +
-enabled = true +
- +
-[php-url-fopen] +
-enabled = true +
-</file> +
- +
-Dieser Eintrag sperrt eine IP-Adresse für 2 Stunden (`bantime`), wenn von dieser binnen 10 Minuten (Standardeinstellung für `findtime`50 fehlerhafte Eingaben (`maxretry`gemacht wurden. Man kann die Sperrzeit auch kürzer einstellen und dafür schon nach z.B. 10 fehlerhaften Einträgen sperren, aber nachdem SoSci Survey fehlerhafte Seriennummern ohnehin schon sperrt, stellt diese Konfiguration nur eine zweite Sicherheitsbarriere dar+
- +
-Laden Sie die Konfiguration und überprüfen Sie, ob alles funktioniert+
- +
-    sudo fail2ban-client reload +
-    sudo fail2ban-client status +
- +
-Die Ausgabe sieht z.B. wie folgt aus: +
- +
-<code> +
-Status +
-|Number of jail:      3 +
-`- Jail list:   serial-fail, sshd, sshd-ddos +
-</code>+
de/server/security.txt · Zuletzt geändert: 09.07.2023 18:10 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki