Skip to main content

Teil 4: Sinnvolle Einstellungen und absichern des Systems

Sinnvolle Einstellungen fuer Nextcloud um das System sicherer zu machen.

Hier sind ein paar Dinge, die du nach der Einrichtung am besten noch einmal durchgehst und kontrollierst. Vieles hast du vielleicht schon gemacht – aber ein zweiter Blick schadet nie und ist meistens sehr sinnvoll.

System aktualisieren und Pakete installieren

Nach dem ersten Boot meldest du dich als root oder ncadmin an (je nach Konsole oder SSH). Führe sofort aus: apt update && apt full-upgrade -y.
Das holt alle Sicherheitsupdates und Bugfixes seit der ISO-Erstellung. Danach installiere nützliche Basics: apt install sudo vim htop curl wget net-tools -y.

Damit hast du sudo für den normalen User, bessere Tools und Netzwerk-Utilities.

SSH absichern – Passwort-Login deaktivieren und Schlüssel nutzen

SSH ist während der Installation aktiviert, läuft aber unsicher. Editiere /etc/ssh/sshd_config und setze PermitRootLogin prohibit-password sowie PasswordAuthentication no.
Generiere auf deinem Client einen SSH-Schlüssel (ssh-keygen), kopiere den Public-Key mit ssh-copy-id ncadmin@deine-vm-ip und starte den Dienst neu: systemctl restart ssh.

Ab jetzt nur noch schlüsselbasiert – Passwort-Brute-Force wird unmöglich.

Cron-Job einrichten

Nextcloud benötigt für Hintergrundaufgaben (z. B. Datei-Scanning, E-Mail-Versand, App-Updates) einen regelmäßigen Cron-Job. Richte ihn ein mit: crontab -e und füge hinzu: */5 * * * * php -f /var/www/cloud.zn80.net/cron.php. Alternativ nutze einen systemd-timer. Ohne Cron läuft Nextcloud nur bei aktivem Webzugriff – viele Funktionen bleiben dann stecken.

Normalerweise wird empfohlen, den cronjob mit crontab -u www-data -e anzulegen. Dieses funktioniert jedoch in unserem Fall nicht, weil dir den Besitzer der Konfigurations-Datei geändert haben.

Fail2Ban gegen Brute-Force-Attacken installieren

Installiere Fail2Ban: apt install fail2ban -y. Es überwacht SSH-Logs automatisch und bannt IPs nach mehreren Fehlversuchen (Standard: 5 in 10 Minuten). Die Debian-Defaults sind für Homelab meist ausreichend. Starte und aktiviere: systemctl enable --now fail2ban.

Optional passe /etc/fail2ban/jail.local an, z. B. längere Ban-Zeiten oder E-Mail-Benachrichtigung.

.htaccess-Optimierungen und Security-Headers

Nach der Installation solltest du die .htaccess-Datei optimieren: Führe sudo -u www-data php occ maintenance:repair aus, damit Nextcloud sie automatisch aktualisiert. Ergänze zusätzlich Security-Headers in der Apache-VirtualHost-Konfiguration (innerhalb <VirtualHost *:80> oder besser *:443) oder in den Einstellungen deines Proxys (siehe unten):

Header always set X-Content-Type-Options "nosniff"  
Header always set X-Frame-Options "SAMEORIGIN"  
Header always set X-XSS-Protection "1; mode=block"  
Header always set Referrer-Policy "strict-origin-when-cross-origin"

Das erhöht den Schutz vor gängigen Web-Angriffen.

Nginx Proxy Manager setzt standardmäßig einige Header (z. B. über Force SSL + HSTS-Optionen), aber für eine optimale Absicherung (und um Nextcloud-Warnungen zu vermeiden) kannst du diese Security-Header auch direkt im Proxy-Host konfigurieren. Was die empfohlene Variante ist, wenn Nextcloud hinter einem MPN betrieben wird.

Gehe zu deinem Proxy-Host (z. B. cloud.zn80.net) → Auf die drei Punkte rechts neben dem Eintrag und dann auf das Zahnrad und füge dort folgendes ein:

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

Speichere die Änderungen – NPM wendet sie sofort an (kein Neustart nötig).

Diese Header helfen gegen:

  • MIME-Sniffing-Angriffe (nosniff)
  • Clickjacking (SAMEORIGIN)
  • XSS-Reflektionen (mode=block)
  • unnötige Referrer-Informationen (strict-origin-when-cross-origin)

HSTS (Strict-Transport-Security) aktivieren

Gehe im Proxy-Host zum Tab SSL und aktiviere:

  • Force SSL → Ja (leitet HTTP → HTTPS um)
  • HSTS Enabled → Ja
  • HSTS Subdomains → Ja (falls du Subdomains mit abdeckst)

NPM setzt dann automatisch einen vernünftigen HSTS-Header (meist max-age=31536000 oder ähnlich).

Nextcloud erwartet mindestens max-age=15552000 (ca. 180 Tage) – bei NPM reicht die Standardeinstellung in der Regel aus, um die Warnung zu beseitigen. Falls du einen anderen Wert benutzen möchtest, kannst du ihn auch per Hand einstellen. Füge dazu folgenden Eintrag noch zur der Custom Nginx Configuration hinzu :

add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

Wichtig: Aktiviere HSTS nur, wenn du sicher bist, dass HTTPS immer läuft – sonst sperrst du dich ggf. aus.

Weitere nützliche Anpassungen über die Custom Nginx Configuration

Falls du Nextcloud hinter NPM betreibst, füge diese Zeilen hinzu, um Konflikte zu vermeiden (manchmal nötig bei WebSocket/Upgrade-Problemen oder Header-Überschreibungen):

proxy_hide_header Upgrade;
proxy_hide_header Connection;

Oder für besseren Schutz:

add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

Speichere danach und teste deine Nextcloud-Instanz (Admin-Bereich → Übersicht / Security-Scan) – die meisten Header-Warnungen sollten jetzt weg sein.

Mit diesen Einstellungen bekommst du in der Regel ein solides A oder A+ bei securityheaders.com oder Mozilla HTTP Observatory Report und Nextcloud zeigt keine großen roten Flaggen mehr. Viel Erfolg!

chmod 750 für das Datenverzeichnis

Das Datenverzeichnis /srv/cloud.zn80.net/data sollte besser mit chmod 770 und chown -R www-data:www-data gesetzt werden (statt 750). Die Nextcloud-Dokumentation empfiehlt 770, damit Nextcloud intern uneingeschränkt auf Dateien zugreifen kann (z. B. bei App-Installationen oder großen Uploads). 750 funktioniert meist, kann aber in manchen Szenarien zu Berechtigungsfehlern führen.

Firewall aktivieren mit UFW

Sinnvoll wenn die Installation direkt am Internet hängt.

Wer hier hinter einem Proxy wie Nginx Proxy Manager sitzt, kann sich diese Einrichtung ersparen. Installiere die einfache Firewall: apt install ufw -y. Erlaube nur SSH (und später HTTP/HTTPS für Nextcloud): ufw allow OpenSSH bzw. ufw allow 80,443/tcp. Aktiviere mit ufw enable und prüfe den Status mit ufw status verbose.

UFW blockt alles andere standardmäßig – ein guter Schutz vor unnötig offenen Ports.

Zusätzliche Empfehlungen für mehr Sicherheit

Erstelle einen sudo-fähigen User ohne unnötige Rechte und vermeide dauerhaftes Root-Login. Aktiviere automatische Sicherheits-Updates: apt install unattended-upgrades -y und konfiguriere /etc/apt/apt.conf.d/50unattended-upgrades (meist schon voreingestellt auf security).
Überprüfe regelmäßig mit apt list --upgradable.