Sicherheit beim Self-Hosting

Hallo zusammen, ich habe eine Frage zur Sicherheit beim Self-Hosting weil ich immer wieder lese, dass man Heimserver am besten nicht von aussen erreichbar machen soll. Oder zumindest nur über ein VPN.
Ich betreibe YunoHost auf einem Raspberry Pi 5, darauf ist Nextcloud installiert. Der Pi hängt direkt an der Fritz!Box und ist über das LAN erreichbar. Die Nextcloud ist über eine URL erreichbar. Dazu musste ich die Ports 80 und 443 auf der FritzBox freigeben. Let’s encrypt ist natürlich eingerichtet; die Nextcloud-Konten sind mit 2FA und sehr guten Passwörtern gesichert. Fail2ban und die Firewall auf YunoHost sind aktiv. Der Nextcloud Sicherheits-Check ergibt A+. Backup ist eingerichtet.
Auf welchen Wegen könnten denn die Nutzerdaten auf der Nextcloud kompromittiert werden? Welche Einfallstore gibt es in meinem Szenario noch?
Merci für eure Einschätzungen!

1 „Gefällt mir“

Sicherheitslücken in Nextcloud eben. Also die Instanz und das darunter liegende Betriebssystem + Webserver + PHP etc also immer schön mit Sicherheitspatches versorgen.

2 „Gefällt mir“

Die häufigsten Kategorien sind:

  • Fehlkonfigurationen (z.b. unabsichtlich von außen erreichbare ungeschützte Datenbank)
  • Ausnutzung von N-Days (bekannte Sicherheitslücken) die zu spät gefixt wurden, z.B. durch zu spätes Updaten durch den Serveradmin oder zu langsame Bereitstellung von Fixes durch den Softwareanbieter.

Theoretisch können auch Zero-Days verwendet werden. Da kann man nur hoffen, dass das man nicht wichtig genug dafür ist und ggf den Schaden eindämmen.

Es ist hilfreich sich damit zu beschäftigen, was die Folgen wären, wenn es zum Ernstfall kommt:

  • Wie schlimm wäre es, wenn die Daten für alle zugänglich im Internet landen?
  • Wären meine Backups noch sicher (Stichwort ransomewaresichere Backups)?
  • Eindämmung: Wären dann auch andere Services oder Geräte betroffen oder sind diese gut voneinander isoliert?
2 „Gefällt mir“

Das wäre mir zu unsicher. Ich würde den PI klassisch in eine DMZ stecken. Ob das eine FritzBox aber kann, kann ich nicht beurteilen, da ich für das Gateway keine Fritz!Box verwenden würde.

Das heißt, du hast ein Zertifikat für deine Domain, die du auf dem PI betreibst?
Mit dynamischer oder fester IP?

Über den PI in das LAN?

2 „Gefällt mir“

In meinem Setup (NC auf einem Cloudserver bei Hetzner mit Ports 80/443 exponiert und guten Passwörtern) habe ich noch diverse „Security“-Scanner (censys, shodan.io) per iptables komplett ausgesperrt, damit ich nicht in deren Listen auftauche und mich damit für gezielte NC-Angreifer „unsichtbar“ mache…

2 „Gefällt mir“

Hast du dazu einen Link zu den Listen oder eine Anleitung?

Jein, das ist leider sehr fummelig, weil man für jeden dieser Scanner erstmal alle(!) Netze rausfinden muss. Dabei kann jeder Scanner 1-n ASN haben und jedes ASN kann wiederum 1-n Netze haben.

Wenn du eine unbekannte IP mehrfach in deinen Logs siehst, z.B. 162.142.125.1, dann habe ich folgendes gemacht:

getASN is a function
getASN ()
{
    local _ip="$1";
    local _curl_base="curl --request GET";
    local _timeout="15";
    _asn=$($_curl_base -ks -m "$_timeout" "http://ip-api.com/line/${_ip}?fields=as");
    _state=$(echo $?);
    if [[ -z "$_ip" ]] || [[ "$_ip" == "null" ]] || [[ "$_state" -ne 0 ]]; then
        echo -en "Unsuccessful ASN gathering.\\n";
    else
        echo -en "$_ip > $_asn\\n";
    fi
}
$ getASN 162.142.125.1
162.142.125.1 > AS398324 Censys, Inc.

Weitere ASN per https://www.netify.ai/resources/networks/censys herausfinden:

Censys - ASNs

ASN Name
AS398705 Censys
AS398722 Censys
AS398324 Censys

Alle IP-Netze dieser ASN per https://www.whatismyip.com/asn/398324/ , https://www.whatismyip.com/asn/398705/ und https://www.whatismyip.com/asn/398722/ herausfinden, z.B. für 398705 mit 2 Netzen:

167.94.145.0/24
167.94.146.0/24

Und dann stupide per iptables blocken:

iptables -A INPUT -s 167.94.145.0/24 -j DROP
…

Aber seitdem ist da Ruhe und ich bin in keinen Suchergebnissen bei Censys mehr drin. Ich hatte dazu auch mal beruflich mit einem technisch sehr fitten Vertriebler telefoniert und herausbekommen dass wohl auch Providernetze und Cloudnetze oft im Auftrag derer gescannt werden - teils prophylaktisch um Kunden drauf hinzuweisen, dass sie zuhause „komische Dinge“ tun. Aber ich weiss ja was ich da tue :wink:

Wenn jemand eine schlauere Idee hat (Crowdsec?) - sehr, sehr gerne…! :slight_smile:

1 „Gefällt mir“

Shodan

1 „Gefällt mir“

Vielen Dank für das Feedback!
Wie läuft denn das Ausnutzen solcher Sicherheitslücken ab? Scannen Bots das ganze Internet nach Nextcloud-Instanzen ab und versuchen es bei jeder? Oder sind das gezielte Angriffe?

Sorry, das verstehe ich nicht. Was sind DMZ und Gateway?

Ja, ein Zertifikat für die Domain mit dynamischer IP.

1 „Gefällt mir“

https://www.fortinet.com/de/resources/cyberglossary/what-is-dmz

1 „Gefällt mir“

Leider kann die Fritzbox keine DMZ ermöglichen - aus meiner Sicht ein ganz großer Nachteil der Fritzboxen.

Eine DMZ ist ein gesondertes Netzwerk zur Platzierung von Serversystemen, die sowohl aus dem eigenen Netzwerk (Intranet) wie auch aus dem öffentlichen Netzwerk (Internet) erreichbar sein müssen.

(Internet) ↔ (DMZ) ← (Intranet)

Die primäre Schutzfunktion der DMZ ist, dass die aus dem Internet erreichbaren Server-Systeme in der DMZ selbst keinen Zugriff auf die weiteren Systeme im Intranet haben (dargestellt durch die Pfeile die erlaubte Kommunikationsrichtingen darstellen). Ein erfolgreicher Angreifer wird durch diese Zugriffsbeschränkung davon abgehalten seinen Angriff auf Systeme im Intranet auszuweiten.

Ein Gateway wiederum ist die Netzwerk-Gerät die die verschiedene Netzwerke verbindet, im Privatbereich z. B. die Fritz!box zwischen Internet und Intranet:

(Internet) ← [Gateway] ← (Intranet)

Die Schutzfunktion des Gateway nennt man auch Firewall und dient zur Beschränkung ungewünschter Zugriffe zwischen unterschiedliche Netzen, im Standardfall der Fritz!box dürfen Geräte des Intranet auf Server im Internet zugreifen, der umgekehrte Zugriff wird jedoch durch die Fritz!box unterbunden.

3 „Gefällt mir“

Im Fall der Fritzbox meinst du wohl eher NAT. Ein Gateway und eine Firewall haben eigentlich nur gemeinsam, dass sie gut zueinander passen. Eine Firewall ist oft auch ein Gateway, aber ein Gateway ist nicht per se eine Firewall.

1 „Gefällt mir“

Danke für die Erklärung. Ich habe mich an einen Artikel von Mike erinnert, wo er seinen Aufbau mit DMZ erklärt: https://www.kuketz-blog.de/netzwerkaufbau-im-heimnetz-digitaler-schutzschild-teil5/
Gegen was genau schützt denn das DMZ in meinem Fall? Dass jemand die Nextcloud hackt und dann von dort aus die anderen Geräten im LAN hackt? Das klingt nach einem recht aufwändigen und zielgerichteten Angriff, oder?

1 „Gefällt mir“

Nun ja, auch die Fritzbox ist eine Firewall. Die Standard-Regeln im Auslieferungszustand sind

(Intranet) → (Internet) alles erlaubt
(Internet) → (Intranet) alles verboten

Die Fritzbox kann aber durchaus Kommunikationen zu Diensten im Internet für Geräte im Intranet limitieren, oder aber auch dedizierte Anwendungen auf Systemen im Intranet für Zugriffe aus dem Internet freigeben.

Die NAT-Grenze ist eher eine Limitierung von IPv4 und damit den Providern und greift bei IPv6 nicht mehr. Hier bleibt nur das Kommunikationsregelwerk der Firewallfunktion der Fritzbox als Limitierung übrig, da die IPv6 Adressen im Internet routbare IPs darstellen.

1 „Gefällt mir“

Nun, der Angriff muss weder aufwändig noch zielgerichtet sein. Vielleicht wird das Konzept einer DMZ einfacher, wenn wir zunächst gar keine benutzen. Stell dir vor, du hostest (betreibst) einen Webserver und/oder einen Nextcloud-Server bei dir zu Hause. Diese sind über das Internet zugänglich. Dafür richtest du Portfreigaben auf deiner Fritzbox ein. Diese Server befinden sich dann im gleichen internen Netz wie dein PC, dein Laptop, dein Kühlschrank und dein Fernseher. Wenn jetzt jemand deinen Webserver hackt und die Kontrolle übernimmt, kann er von da aus schauen, was er im selben Netz sonst noch so erreichen kann. Und das ist für jemanden, der einen Webserver hacken kann, dann auch kein großes Problem mehr. Er wird versuchen, noch mehr deiner Geräte anzugreifen. Das nennt sich Lateral Movement (seitliche Ausbreitung).

Das möchte man vermeiden, und da kommt die DMZ ins Spiel. Ein einfacher Aufbau ist wie von Reklow skizziert. Du hast im Prinzip zwei Firewalls: eine innere und eine äußere. Dazwischen liegt die DMZ. Geräte, die in der DMZ platziert sind, sind über die äußere Firewall vom Internet aus und über die innere Firewall von innen erreichbar. Deinen Webserver in der DMZ erreichst du von innen wie jeden anderen Webserver im Internet auch und das Internet erreicht den Webserver durch die äußere Firewall. Der Webserver selbst kann jedoch keine Verbindung ins interne Netz aufbauen, sondern nur auf eingehende Anfragen aus dem internen Netz bzw. dem Internet antworten. Das Ganze funktioniert auch mit nur einer Firewall mit mehreren Netzwerkkarten etc. Bei der praktischen Umsetzung sind einige Varianten denkbar, aber das Prinzip bleibt dasselbe.

In kleineren Netzwerken oder im privaten Umfeld ist so etwas eher selten zu sehen. Solche Konzepte kommen eigentlich nur dann zum Einsatz, wenn der Betreiber auch Netzwerkdienste im Internet anbietet. Durch die zunehmende Verbreitung von Cloud-Services nimmt die Bedeutung von DMZ-Konzepten jedoch ab. Ich betreibe beispielsweise einen Nextcloud-Server und mehrere Webseiten, die ich auf einem gemieteten Root-Server bei Netcup hoste. Der kostet ungefähr 10 Euro im Monat. So kann ich mir das ganze DMZ Gefrickel zu Hause sparen, habe auch noch stabiles Gigabit in beide Richtungen und brauche auch keinen 24/7 Strom dafür zu bezahlen. Sichern tue ich den Server mit einem Raspberry Pi, der bei mir zu Hause steht. Hier ist es wichtig (oder zumindest sinnvoll), dass der Pi beim Backup die Verbindung zum Netcup-Server aufbaut und nicht umgekehrt. Dadurch hat ein angegriffener Webserver nicht gleich auch Zugriff auf die Backups.

1 „Gefällt mir“

ich finde, dass Du schon einiges richtig machst. Wenn Du in diesem Setup stetig darauf achtest, dass alle beteiligte Software inkl. Betriebssysteme stets auf dem aktuellen Stand sind, finde ich den Aufbau akzeptabel.
Ich persönlich stehe Management-Lösungen wie Yunohost eher kritisch gegenüber. Ich lege Dir ans Herz, zu lernen, die beteiligten Komponenten „von Hand“ zu installieren, zu konfigurieren und zu administrieren.
Die Funktionsweise und Ziele einer DMZ wurden ja schon griffig erläutert, dem habe ich nichts hinzuzufügen, ich möchte hierzu

anmerken, dass das skizzierte Szenario nicht sehr besonders ist, sondern eher die normale Vorgehensweise von Angreifern. Zunächst wird das Internet abgeklopft nach zum Beispiel Nextcloud-Servern. Dann werden die Versionsstände gecheckt und daraus auf die bekannten und noch nicht gepatchten Sicherheitslücken geschlossen. Diese werden dann angegriffen. Bis hierher läuft das in der Regel vollautomatisch. Im nächsten Schritt werden erfolgreiche Kompromittierungen an den Angreifer gemeldet, und dieser verbringt dann gerne mal ein paar Minuten auf dem System. Dazu gehört sicherlich auch, zu schauen, welche weiteren Systeme von dort aus erreichbar sind.

Allerdings habe ich auf Anhieb keine gute Idee, wie Du bei Dir mit überschaubarem Aufwand eine DMZ bauen könntest. Bei mir zu Hause (das wird Dir jetzt konkret nicht viel nützen, aber so als Denkanstoß) läuft ein Proxmox VE und darin ein paar VMs. Darunter auch welche, die öffentlich erreichbar sind. Diese schotte ich mit der Firewall-Funktionalität von Proxmox gegen das übrige LAN ab. Ich nenne es „virtuelle DMZ“. :sweat_smile:

1 „Gefällt mir“

Der Beitrag von Mike als Grundlage für das Verständnis einer DMZ ist ganz gut.
Für die Hardware benötigst Du nur einen preiswerten MiniPC (bei mir Protectli FW4) mit mindestens drei leistungsfähigen Netzwerkschnittstellen (WAN, LAN, DMZ).
Das Routing und die Firewall kannst Du dann zum Beispiel über OpenSense (kostenlos) oder OpenBSD (auch kostenlos) als OS lösen. Wenn du Dienste frei im Internet anbieten willst (im Sinn von freiem Zugriff aus dem Internet) ist eine Fritz!Box dafür ungeeignet weil du damit dein LAN gefährdest.
Den PI kannst Du im übrigen so lassen wie du ihn konfiguriert hast, wenn du ihn einfach an die DMZ-Schnittstelle hängst.

2 „Gefällt mir“

Sollte das nicht mit einer zweiten Fritzbox ziemlich leicht realisierbar sein? Die erste Fritzbox stellt die Verbindung zum Internet her. An der ersten Fritzbox hängen der Nextcloud-Server und die zweite Fritzbox. Alle anderen Geräte im LAN sind mit der zweiten Fritzbox verbunden und werden von dieser abgeschirmt. Oder übersehe ich da etwas?

1 „Gefällt mir“

Ja, das könnte klappen. Ich hatte Zweifel, ob man das WAN-Interface der zweiten Fritz!Box so konfigurieren kann, dass es sich im LAN der ersten Fritz!Box wohlfühlt.
Aber in der Tat: Auf meiner 7530 AX kann ich am WAN-Interface „weitere Internetanbieter“ und dann „vorhandener Zugang über LAN“ auswählen. Das sollte Deinen Vorschlag abbilden. Dann würde ich aber auf jeden Fall anschließend prüfen, ob sich die integrierte Firewall der zweiten Fritz!Box wunschgemäß verhält, also initialen Netzwerkverkehr von der ersten zur zweiten Fritz!Box unterbindet, bzw. nicht ins LAN lässt.

1 „Gefällt mir“

Puh, das ist ein ziemlich kompliziertes Setup, bei dem so einiges zusammenpassen muss. Die äußere Fritzbox kennt ja erstmal nur das DMZ-LAN und das Internet und weiß zunächst nicht, dass es noch ein weiteres internes LAN gibt. In echten Setups mit innerer und äußerer Firewall muss man der äußeren Firewall eine statische Route ins interne LAN konfigurieren, wobei das DMZ-Interface der inneren Firewall das Ziel ist. Ich weiß nicht, ob das zwei in Reihe geschaltete Fritzboxen können. Da müssten sie schon sehr schlau sein. Eventuell mit NAT auf NAT, aber wenn die innere Fritzbox anfängt zu routen, statt zu NATen, wird das nicht funktionieren.

1 „Gefällt mir“