Sicherheit des Servers prüfen

  • Moin Moin :) ,


    ich spiele mit dem Gedanken einen vServer hochzuziehen, würde aber gerne vorher gerne euer Feedback dazu einholen. Also ob ich etwas wichtiges vergessen habe, etwas anders machen sollte oder vllt. auch um zu sagen Bursche lass die Finger davon -> geh weiter üben - ich möchte nicht einfach sorglos einen Server ins public internet hängen, da mir bewusst ist was das für ein Risiko ist, daher habe ich auch die letzten Wochen in meiner Freizeit viel mit VMs auf meiner lokalen Maschine gearbeitet und experimentiert.

    Mein eigener Hintergrund ist deutlich IT lastig - Entwickler, welcher Feuer und Flamme für alles was mit Technik zu tun hat, ist.


    Hier kurz das Zielbild was ich zu Anfang erreichen möchte -> eigener gehärteter Server mit eingerichteter Nextcloud.

    In Zukunft kommen noch Wekan(OS Kanban) und Bitwarden hinzu, vllt. dann auch meine eigene App wenn ich damit mal fertig werde xD


    Was habe ich vor bzw. was nutze ich:

    1. OS = Ubuntu 20.04
    2. DNS Einstellung meiner Netcup-Domain so vornehmen das Server darüber erriechbar ist (* & @) -> der @ mx record bleibt auf die netcup sogo groupware gerichtet
    3. Root PW ändern
    4. Hostname anpassen
    5. SSH einrichten
      1. Nur SSH Keys erlauben (ed25519 key)
      2. root verbieten und eigenen User dafür anlegen
      3. Port verlegen
    6. SFTP durch SSH bleibt erst einmal on, läuft über openssh und daher auch nur mit key - sollte ich später einen einfachen User mit PW brauchen chroote ich den User auf das eigene Verzeichnis und verbiete shell zugang.
    7. ufw einrichten
      1. alles per default = deny
      2. nur das freigeben was wirklich gebraucht wird (ssh und https)
    8. fail2ban
      1. installieren und einrichten
      2. jails für ssh, apache, php-fopen und nextcloud(selbst erstelltes jail + filter -> (https://www.ksite.de/nextcloud-mit-fail2ban-absichern/))
    9. Apache und SSL
      1. SSL-Certs über lets encrypt mit acme.sh & Netcup-dns option so das automatisch die beötigten Certs generiert werden. API Key und PW sind bereits da.CronJob für regelmäßiges updaten der certs
      2. Apache SSL aktivieren
      3. vhost dateien anpassen *:443 - SSLEngine on und Certs hinterlegen
      4. ports.conf anpassen und nur auf https listen
    10. Nextcloud installation
      1. Installation nach nextcloud handbuch (https://docs.nextcloud.com/ser…/source_installation.html)
      2. abschließende nextcloudhärtung wie im handbuch beschrieben (https://docs.nextcloud.com/ser…lation/harden_server.html)
    11. Server/app up2date halten und logs regelmäßig prüfen

    Für später habe ich noch folgende Themens ins Auge gefasst:

    • systemweites Sandboxing
    • Kernelhärtung
    • auto. Updates
    • sobald das setup einen V1 Status erreicht hat das ganze in ansibel zu gießen damit bei einer neuaufsetzung keine Fehler passieren können bzw. Schritte vergessen werden
    • ganz viel später mal alle Dienste über Docker bereitstellen, bringt aber nachteile mit sich die ich zu anfang nicht haben wollte.


    Was sagt ihr dazu, wo kann ich noch was besser oder anders machen? Kann ich damit erst einmal starten oder sollte ich doch noch warten und noch in bestimmte Richtungen weiter recherchieren?


    Gibt es vllt. möglichkeiten den Server automatisiert (kostenlos) pentesten zu lassen ? Habe bisher nur Angebote gefunden die bei 80€ anfangen, das wollte ich zu Anfang noch nicht gleich investieren, lasse mich aber überreden wenn ihr sagt das macht definitv Sinn!


    Ich bedanke mich für jedes noch so kritische Feedback! Ich habe nur die bitte höflich zu bleiben, auch wenn ich Fehler gemacht habe oder auch vollkommen ungeeinget für einen eigenen Server erscheine bitte bleibt sachlich ;)


    Viele Grüße und ein tollen Sonntag!

    DevOwl

  • Ohne ins Detail zu gehen:

    Du bist hier, was die Absicherung angeht viel weiter, als die allermeisten (inklusive mir ;)), die zum ersten Mal einen Server ins Netz hängen wollen. :thumbup:

    Also leg los. :)

    Weitere Hinweise für die einzelnen Punkte wirst du sicher noch bekommen...

  • Grundsätzlich empfiehlt es sich, gerade wenn sehr wenige Dienste von außen erreichbar sind, genau zu studieren, wie versierte Dritte diese aufsetzen, insbesondere, wenn sie selbst Installationen auch kostenpflichtig anbieten.


    Ein paar Links zur Selbsthilfe:

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE/edit?usp=sharing

  • Ich baue öfters Server mit Nextcloud für Unternehmen auf und pflege diese auch - Ich kann dir noch folgendes mitgeben.

    • Sinnvoll partitionieren und LVM benutzen
    • Debian benutzen, weils einfach stabiler ist
    • PHP 7.4 aus den Paketquellen von Sury beziehen (https://deb.sury.org/)
    • nginx statt Apache2, sonst lahmt das ohne Ende rum (auch hier ist das Repo von nginx direkt zu bevorzugen)
    • bei acme.sh schauen, dass du ECDSA Zertifikate nutzt
    • Nextcloud hat nen eigenen Bruteforce schutzt. Ich wüsste nicht, warum man da jetzt noch fail2ban nutzen sollte. Zumal dir die in der Anleitung beschriebene Config ne Zeitbombe als Logdatei baut...
    • ...daher nutze für die Nextcloud Logdatei logrotate (auch ohne fail2ban - nutze es! Sonst wächst die Logdatei solange bis das fs voll ist.)


    Für später: Lass lieber die Finger von Docker... (meine persönliche Meinung). Docker ist in Bezug aus Firewall einfach nur ein absolutes Chaos. Schau dir lieber mal Proxmox mit LXC Containern an.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Moin :)


    vielen Dank für die Tipps und die Links. Werde mir diese nach und nach zu Gemüte führen. Habe bereits meinen ersten Server hochgezogen und das lief recht unproblematisch, nur der Domain DNS macht noch ein wenig Probleme. Bekomme die * und die nextcloud subdomain hin aber das @ Record verweist immer noch auf die geparkte Seite....mal schauen ob es nur noch ein wenig dauert, aber Seiten wie DNS Checker sagen eigentlich das die richtige IP bereits bekannt sei.

    Hatte im Vorwege extra die Refresh und Ablaufzeit auf 2 Stunden gesetzt, damit ich nicht so lange die DNS Updates abwarten muss. Kann das mit dem @ mx Record zusammenhängen(der hat eine Prio 10)?. Den Record hatte Netcup beim Einrichten der SoGo Groupware eingerichtet.


    Ich hatte sowieso vor den Server mehrmals abzureißen und wieder aufzubauen, dann verinnerliche ich das besser ;). Werde bei jeder Iteration weiter verbesserungen vornehmen und eure Einwände und Tipps da mit einfließen lassen :D


    Ich möchte mich noch einmal ausdrücklich für die freundliche Hilfe und die Zeit bedanken! Ich habe nun ein besseres Gefühl bei meinen ersten Schritten mit einem public Server :)


    Viele Grüße aus dem schönen Hamburg und einen tollen Sonntag noch!

    DevOwl

  • Wenn alle sich so viel Gedanken machen würden, wäre die Welt etwas besser. Was du genannt hast, ist schon mehr als zwingend notwendig. Wenn du dich wirklich damit befasst, bist du auf dem besten Weg ein guter Admin zu werden und wirst mit der Zeit eine für dich perfekte, individuelle Konfiguration finden. Woran du noch denken solltest, ist ein automatisches Backup-System. Nichts ist ärgerlicher als viel Zeit in eine tolle Konfiguration zu stecken, die dann verloren geht, weil irgendwas abraucht.

  • Wofür genau nutzt du LVM ? Von Verschlüsselung war ja hier keine Rede AFAIK.

    Das eine hat doch überhaupt nichts mit dem anderen zu tun. Verschlüsseln tust du wenn dann mit LUKS.


    LVM ist ein zusätzliches logisches Layer bei der Partitionierung, mit dem es möglich ist, den Speicher jederzeit flexibel aufzuteilen.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Das eine hat doch überhaupt nichts mit dem anderen zu tun. Verschlüsseln tust du wenn dann mit LUKS.


    LVM ist ein zusätzliches logisches Layer bei der Partitionierung, mit dem es möglich ist, den Speicher jederzeit flexibel aufzuteilen.

    Viele Menschen die ich kenne nutzen LVM vor allem für Vollverschlüsselung, laut deren Aussage. Und normale Paritionen herum schieben geht auch so, daher die Frage.

  • Und normale Paritionen herum schieben geht auch so

    Naja, lvm ist da schon deutlich flexibler.

    Beispiel:

    Gerade heute habe ich einen Server (anderer Provider) erstellt, bei dem das vorgefertigte Image mit lmv ausgeliefert wird.

    var, usr und home sind absichtlich auf nur 10 GB voreingestellt und der Kunde kann das dann an die eigenen Bedürfnisse individiuell nach oben anpassen.

    Ich brauche für var z.B. deutlich mehr. Mittels lvm ging das mit einem einzigen Befehl im laufenden Betrieb ruck zuck

  • Und normale Paritionen herum schieben geht auch so, daher die Frage.

    Eben nicht. Wenn du am Anfang der Platte 100 GiB frei hast und die an einer Partition am Ende der Platte brauchst, hast du gelitten.

    Da hilft für den normalen Use Case erstmal nur LVM.


    Alternativ ginge noch ZFS, aber auch da hast du wieder ein zusätzliches logisches Layer.


    Und nochmal - LVM kann nicht verschlüsseln. Wenn, dann erstellt man eine mit LUKS verschlüsselte Partition und legt darin sein LVM (VGs und LVs) an. Die verschlüsselte Partition ist dann das PV für die VG.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • LVM ist im Grunde eine flexiblere Version einer Partitionstabelle. Innerhalb eines verschlüsselten Containers ist das nützlich, weil man dadurch halt mehrere Dateisysteme in einen einzelnen LUKS-Container packen kann. Aber man kann es auch einsetzen, um ein RAID zu bauen, oder einfach um flexibel zu sein. Ich setze es hier auch nicht ein, da ich finde, dass es bei einer so simplen Konfiguration keine Vorteile bringt, aber das kann jeder für sich entscheiden. Es schadet jedenfalls nicht.


    Ich glaube, die Netcup-Images setzen auch auf LVM. Von verschiedenen Volumes oder Partitions für Systemverzeichnisse bin ich aber weg gekommen, da es meiner Erfahrung nach eher stört als Vorteile bringt. Den Speicherplatz von Benutzern kann man über Quotas besser beschränken.

  • Danke, hatte bisher noch keinen Grund ein LVM zu nutzen.

    "[..] Schaden kann es nicht[..]"
    Kommt darauf an, gnome partition manager hier kann kein LVM, nur der von KDE. Daher siehst du dann nur eine fette Partition mit LVM, manche File-Systeme unterstützen gar kein movement von sich aus, daher kann hier LVM helfen.(Und zumindest auf'm Desktop mag ich grafische Systeme für Partitionierung ganz gerne, auch wenn das hier vielleicht verpönt ist.)

  • Ob ein bestimmtes grafisches Tool jetzt jede Konfiguration unterstützt oder nicht, ist ein ganz anderes Thema. An sich hab' ich nichts gegen grafische Werkzeuge, auch wenn ich sie nicht auf einem Server installieren würde. Das Problem bei grafischen Werkzeugen ist aber, dass sie meist lange nicht an die Möglichkeiten heran kommen, die man auf der Kommandozeile hat. Gparted kann dir z.B. Dateisysteme anlegen, aber man hat keine Kontrolle über die dafür verwendeten Parameter. Um LVM komplett zu unterstützen, bräuchte man ein eigenes Tool. Ich kenne zwar das von KDE nicht, aber es würde mich wundern, wenn es auch nur einen Bruchteil von dem unterstützte, was mit LVM möglich ist. Das liegt zum Einen daran, dass die Entwicklung grafischer Oberflächen sehr viel aufwändiger ist (ich kenne GTK+), und zum Anderen daran, dass sie oft für die Zielgruppe der weniger versierten Benutzer entwickelt werden, weshalb man eher auf Automatiken setzt, um den Benutzer nicht zu überfordern.