Sicherer Betrieb eigener Server

Hello,

Ich hab in dem vergangenen Jahr versucht so viel wie möglich auf freie bzw. bessere Alternativen umzustellen: Windows –> OpenSuse, Spotify –> Navidrome, iOS –> /e/os. Einige stehen noch an. Ich muss zB. noch von Apple Home auf Home Assistant umziehen und habe auch richtig Bock zu versuchen mir einen eigenen Voice Assistent da zu bauen.

Dabei versuche ich relativ viel selber zu hosten. Ich habe einen alten Asus Nuc und einen V-Server auf denen Yunohost läuft und ich mir easy irgendwas neues installiert kann (Mein Navidrome läuft zb. Da). Was ich mich allerdings immer Frage:

Was muss ich genau lernen, damit ich meine beiden Server selber sicher betreiben kann? Reicht es alles nicht notwendigen Ports zu schließen und alles Uptodate zu halten? Gibt es da irgendwie Weiterbildungen die man machen kann?

Ich bin kein Informatiker… eher IT Affin. Kann mein Linux ganz okay bedienen und hab Bock da was zu lernen. Über Tips oder Empfehlungen würde ich mich freuen =)

1 „Gefällt mir“

Nein. Im Grunde gäbe es sehr viele Dinge, die man beim Selbsthosten falsch machen kann. Wie viel davon Yunohost dir abnimmt und schon richtig macht (oder auch nicht), weiß ich nicht.

Was hast du denn bisher umgesetzt an Sicherheitsmaßnahmen?

Okay. Das habe ich mir fast gedacht =/.

Bis jetzt habe ich:

  • Login als root verboten
  • SSH-Login nur per Authdatei
  • SSH Port auf was anderes verschoben.
  • Fail2Ban/Firewall regelt yunohost selber.
  • Automatische Updates
  • Automatische Backups

Meinst du per Keyfile? Das ist auf jeden Fall eine sinnvolle Maßnahme.

Relativ unwirksam.

Sehr wichtig gegen Brute-Force-Attacken, die aber eigentlich nur bei schwachen Passwörtern funktionieren. Mit dem Keyfile hast du das schon abgedeckt. Würde ich dennoch aktiviert lassen.

Hier solltest du auch regelmäßig kontrollieren, ob Dienste oder gar der ganze Server (Kernel) neu gestartet werden muss.

Ansonsten: Alle Dienste, die du nicht brauchst, abschalten oder besser noch deinstallieren. Ports muss man nicht “schließen”, sondern die dahinter stehende Software so konfigurieren, dass sie nur dort lauscht, wo es gewünscht ist.

2 „Gefällt mir“

Puh, das ist eine große Frage, die stark vom Kontext abhängt. Sicherheit ist nichts Absolutes, sondern immer eine Abwägung. Entscheidend sind vor allem dein Bedrohungsmodell und die Kritikalität der Daten. Es macht einen riesigen Unterschied, ob ein Dienst aus dem Internet erreichbar ist oder nur lokal läuft, ob Zugriffe von außen eingeschränkt werden können – etwa über VPN oder feste IPs – und ob auch „innere“ Bedrohungen berücksichtigt werden müssen, zum Beispiel durch geteiltes WLAN oder Mitbewohner.

Ports zu schließen und alles aktuell zu halten, ist auf jeden Fall eine wichtige Basis, reicht aber allein nicht aus. Der eigentliche Knackpunkt ist weniger die Installation als der laufende Betrieb. Dazu gehört, dass du weißt, wie sich dein System normalerweise verhält, wo die Logs liegen und woran du merkst, dass etwas nicht stimmt. Man muss kein professionelles Monitoring betreiben, aber ein grundlegendes Verständnis dafür haben, was auf dem System passiert.

Ein weiterer wichtiger Punkt ist die Authentifizierung und Zugriffstrennung. SSH mit Keys statt Passwörtern, saubere Trennung von Nutzern und Administratoren, starke Passwörter und wo möglich Zwei-Faktor-Authentifizierung bringen oft mehr Sicherheit als die nächste Firewall-Regel. Gerade selbst gehostete Webdienste sind hier ein häufiger Schwachpunkt.

Wenn du Dienste mit deinen „Kronjuwelen” wirklich ins Internet stellst, solltest du ziemlich genau wissen, was du tust. Lokal betriebene Systeme sind deutlich entspannter, auch wenn externe Gefahren natürlich nie ganz verschwinden. In beiden Fällen ist ein sauberes Backup-Konzept aber unverzichtbar. Und ein Backup ist nur dann etwas wert, wenn man es im Zweifel auch wieder einspielen kann – gelegentliches Testen nimmt da viel Stress raus.

Was Lernen und Weiterbildungen angeht, musst du kein Informatiker sein. Solides Linux-Grundlagenwissen, grundlegendes Netzwerkverständnis, ein bisschen Kryptografie-Basiswissen sowie die Prinzipien Least Privilege[1] und Defense in Depth[2] bringen dich extrem weit. Das lässt sich gut über Dokumentationen, Blogs, Videos oder Admin-Grundkurse aufbauen. Sicherheit ist kein Zustand, den man einmal erreicht, sondern ein Prozess – und genau das passt ja gut zu deiner Lust, dich da reinzufuchsen.

Insgesamt bist du gedanklich schon auf einem sehr guten Weg. Oft ist der wichtigste Schritt nicht, alles perfekt abzusichern, sondern zu verstehen, warum man etwas wie absichert und welche Risiken man bewusst akzeptiert.

[1] https://www.crowdstrike.com/de-de/cybersecurity-101/identity-protection/principle-of-least-privilege-polp/
[2] https://www.computerweekly.com/de/definition/Defense-in-Depth

2 „Gefällt mir“

Ein weites Feld … Aber du bist ja hoch motiviert und interessiert.

Eine Herangehensweisen wäre es z.B. das Cybersecurity Framework der NIST (The CSF 1.1 Five Functions) zu Rate zu ziehen oder anzuwenden. Viele Menschen fangen gleich an mit der tollsten Hard- und Software, vergessen aber, dass man nur etwas schützen kann, wenn man es identifiziert hat. Das mag bei deinem Aufbau noch auf der Hand liegen, ich finde es trotzdem gut (auch fürs lernen), es zu machen und dann die weiteren die vier Themen zu betrachten.

Eine unterstützende Möglichkeit ist es sich Checklisten zu nehmen, wie z.B. die CIS Controls (CIS Critical Security Controls). Man muss die jetzt nicht sklavische abarbeiten, hat aber einen Leitfaden zur Systemkomfiguration.

Auch wenn Dokumentation zu den weniger geliebten Dingen gehört, so ist es doch grundsätzlich es zu empfehlen, alles zu dokumentieren.

Das ist auf jeden Fall ein deutlicher Rückschritt in der Sicherheit. Besser wäre GrapheneOS.

2 „Gefällt mir“

Was ich noch als sehr wichtig erachte ist Transportverschlüsselung.

Ist der Server nur intern zu erreichen?

1 „Gefällt mir“

ich habe z.b. ein docker basiertes setup, in richtung internet traefik, alle ports die ich brauche sind dort gebunden und werden an die dahinter liegenden Dienste weitergereicht. dieser erste layer besteht aus traefik, crowdsec, socket-proxy, authelia, wireguard und lldap. der ssh port des hosts wird nur über wireguard erreicht. Das setup kann ich einfach kopieren und auf einem neuen host installieren.
Dahinter kann ich dann beliebige anwendungsstacks installieren, ohne das irgendwelche dienste direkt aus dem internet erreichbar sein müssen.

Ich habe mir auch schon die selbe Frage gestellt wie @dFroN und habe mich bisher noch nicht sicher genug gefühlt einen eigenen Server aus dem Internet erreichbar zu betreiben.

Vielen Dank für die vielen Erfahrungen und Empfehlungen, die bisher geteilt wurden. Ich habe das zum Anlass genommen selbst nach einer einsteigerfreundlichen Handreichung zu suchen und bin bei Heise fündig geworden:

https://www.heise.de/ratgeber/Werkzeuge-fuer-angehende-Server-Admins-im-Ueberblick-10380843.html (kostenpflichtig)

Außerdem gibt es hier im Forum einen zweiten Thread mit ähnlicher Fragestellung und auch guten Kommentaren:

https://www.kuketz-forum.de/t/sicherheit-beim-self-hosting/

1 „Gefällt mir“