NeXt-Server Script - Debian 10 Webserver und Mailserver

  • Hallo,


    Ich würde euch gerne die neue Version von unserem NeXt-Server Script vorstellen.

    https://github.com/shoujii/NeXt-Server-Buster



    Das Script gab es vor vielen Jahren schon einmal unter einem anderen Namen und anderer Code Basis.

    Seitdem ist das Script (hoffentlich) professioneller geworden und unser Wissen über Linux größer :)


    *Disclaimer*: Ja uns ist bekannt das es Ansible und Konsorten gibt (und ein Port ist geplant) und man die entsprechende Zielgruppe hinterfragen kann, aber das Projekt macht uns Spaß und vielleicht hilft es ja jemandem, indem das Script selbst, oder Teile davon bei der Installation helfen / einem Linux näher bringen kann.

    Also, wer über diese Punkte hinweg sehen kann und gerne KONSTRUKTIVE Kritik äußern möchte, darf gerne weiterlesen ;)


    Voraussetzungen (vServer):

    • 1 CPU Core
    • 1 GB RAM
    • KVM virtualisierter Server (Openvz [...] wird nicht funktionieren!)
    • Das Script setzt einen vServer mit einem frisch installierten Debian 10 minimal Image Vorraus!
    • rDNS auf die genutzte Domain
    • Root User Zugang
    • mindestens 9GB freier Speicher
    • IPv4 Adresse
    • Eine Domain mit der Möglichkeit die DNS Einträge anzupassen
    • Das die DNS Einstellung wie in der dns_settings.txt 48 Stunden vorher eingetragen wurden
    • Der Wille etwas über Linux zu lernen :)


    Was kann das NeXt-Server Script (installieren):

    • Den Server grundlegend absichern
    • Openssl (1.1.1d Source)
    • Openssh (Debian Paket)
    • Fail2ban (0.10.4 Source)
    • MariaDB (Debian Paket)
    • Nginx (1.17.4 Source):
      • mit more header mod
      • pagespeed
    • Let's Encrypt (acme.sh Source)
    • PHP 7.3 (Debian Paket)
    • Mailserver:
      • Unbound (Debian Paket)
      • Dovecot (Debian Paket)
      • Postfix (Debian Paket)
      • Rspamd (Debian Paket)
      • Roundcube (1.3.10 Source)
      • Managevmail (Source)
    • Arno-iptables-firewall (Source)
    • Addons:
      • Teamspeak 3
      • Nextcloud
      • Wordpress
      • PHPmyadmin
      • Munin
      • Composer


    Wir haben versucht das Script so benutzerfreundlich wie möglich zu gestalten und viele mögliche Fehlerquellen auszuschließen, allerdings kann es immer noch irgendwo Lücken geben.

    Das Script versucht auch dem Nutzer so viel wie möglich abzunehmen und möglichst out of the box Sicherheit zu gewährleisten.


    Warum machen wir das?

    Wir haben sehr viel Spaß am scripten und Linux allgemein. Wir hoffen das wir mit dem Script vielleicht Einsteigern helfen können ihren Server aufzusetzen.

    Vielleicht kann das Script bei manchem auch das Interesse an Linux und Bash zu wecken.


    Was wir uns wünschen?

    Konstruktives Feedback :)

    Wir würden uns freuen, wenn wir etwas Feedback bekommen was wir etwas verbessern können.



    Danke schon im Voraus :)

  • Ich habe gerade nicht die Möglichkeit das ganze zu testen - wie steht es da um Updates/Aktualisierungen und sicherheitskritische Config fixes usw.

    Welche Möglichkeiten bietet das Script da dem Anwender?

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

    -Max Weber

  • Das ist eine gute Frage!


    Debian Security Fixes zieht sich das System automatisch, normale Pakete soll der Nutzer selbst entscheiden!

    Die selbst gebauten Komponenten lassen sich fast alle updaten via Script:

    - Fail2ban

    - Nginx

    - Openssl


    Bildschirmfoto von 2019-10-02 13-56-40.png


    Die Git Code Basis auf dem Server lässt sich auch bequem via GUI updaten.
    Was config Patches etc. angeht braucht es noch eine Lösung.

    Wichtig: Das Script ist noch nicht 100% rund, auch wenn alles funktioniert (außer IPv6, da muss ich nochmal ran) :)
    Deshalb ist es mir ja wichtig Feedback / Tester zu haben, weil das Projekt mittlerweile wirklich etwas größer ist.
    Bisher freue ich mich aber über das konstruktive Feedback!


    Gruß,

    Marcel

  • Die dns_settings.txt ist leider sehr unübersichtlich: https://github.com/shoujii/NeX…b/master/dns_settings.txt


    Ebenfalls sind die Angaben inkonsequent: einerseits soll ich einen @ und *-Eintrag anlegen, dann widerrum aber zusätzlich einen "yourdomain.com". Das würde ja in einem A-Eintrag für "yourdomain.com.yourdomain.com" resultieren. Dann ist der Hostname bei den Mailsettings als FQDN angegeben, anstatt wie oben nur relativ zur Zone. Ebenfalls ist der www-Eintrag unnötig, weil ja bereits * existiert. Teilweise ist noch das Kürzel IN für Internet angegeben, aber auch nur manchmal... Die mail.yourdomain.com sowie imap. und smtp. sind ebenfalls überflüssig und verwirren durch das plötzliche Umschalten auf die Darstellung als FQDN eher als dass sie helfen.


    Mein Vorschlag:


    Host Type Dest
    @ A IP
    * A IP
    @
    MX
    mail.yourdomain.com.
    @
    TXT
    v=spf1 a:mail.yourdomain.com ?all
    _dmarc TXT v=DMARC1; p=reject;


    + den rDNS-Eintrag.


    Sollte meiner Meinung nach vollkommen ausreichen.

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Bin gerade dabei auf meinem Test-VPS das Script zu installieren - was hat es mit den ganzen Checks am Ende auf sich? Ist das so gewollt? :)

    next.JPG


    EDIT: Wenn ich den angezeigten Private-Key wie angegeben mit PuttyGen konvertieren will, meldet PuttyGen "Couldn't load private key (unrecognised cipher name)"

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Ich habe den Link in der Beschreibung nach der Installation nun angepasst.


    Wichtiger Hinweis:

    Die Email Accounts erstellt man unter:

    Hauptmenü/Service Options/Mailserver Options


    Es ist extra kein Web Interface vorhanden.

    So oft legt man keine Email Adressen an, wenn doch kann man nachträglich ein Webinterface installieren, die jetzige Shell Variante hatte aus meiner Sicht aber Vorurteile bei der Sicherheit und reicht für die meisten User.


    Gruß :)

  • Zum Thema ansible: Schaut euch mal Paternoster an. "Shell scripte" auf Basis von ansible.


    So richtig mit Parametern.


    https://github.com/Uberspace/paternoster

    Das schaut auf den ersten Blick relativ gut aus und würde sicher einiges erleichtern.

    Es gibt auch schon einen Mini Port von dem Script für Ansible in meinem privaten Repo, allerdings ärgere ich mich mit Ansible echt rum.


    Ich habe das Gefühl, dass ich umständlicher Sachen umsetzen muss im Vergleich zum Shell Script.

    Und die Syntax ist mir auch etwas pendantisch ?


    Ich werde es mir aber definitiv anschauen... danke! :)


    Gruß, Marcel

  • Ich tanze auch seit knapp nem Jahr um Ansible rum, ... kann mich noch nicht dazu durchringen. Meine Sammlung an Bash Scripten um Installieren von Software umfasst mittlerweile ca. 50 unterschiedliche Pakete inkl. deren Einrichtung und Administration.

    Euer Script finde ich ganz nett, hab auch mal sowas in der Art gebastelt mit grafischem Auswahlmenü wie bei euch - gefällt mir. Aber da ich auf den Systemen eigentlich immer die gleichen Pakete installiere und keine Zeit habe immer alles neu einzugeben, arbeite ich mittlerweile mit Configs. Die enthalten die jeweiligen Pakete und Variablen, etc.

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

  • EDIT: Wenn ich den angezeigten Private-Key wie angegeben mit PuttyGen konvertieren will, meldet PuttyGen "Couldn't load private key (unrecognised cipher name)"

    Ging es mit der Snapshot Variante von Puttygen?

    Unter LInux (Arch) habe ich mit putty-0.72-1 und

    Code
    puttygen keyname -o keyname.ppk

    einen funktionierenden SSK Key bekommen.


    Ich tanze auch seit knapp nem Jahr um Ansible rum, ... kann mich noch nicht dazu durchringen. Meine Sammlung an Bash Scripten um Installieren von Software umfasst mittlerweile ca. 50 unterschiedliche Pakete inkl. deren Einrichtung und Administration.


    Das freut mich wenn du unser Script nett findest! :)
    Ja, wenn man so viele Pakete zu verwalten hat, dann muss man irgendwann einen Weg finden um die Wartung / Installation zu reduzieren.


    Da kann ich dich sehr gut verstehen, ich hatte vor ein paar Tagen angefangen das Script zu Ansible zu portieren und alleine die pendantische Syntax hat einem erstmal den Spaß genommen.
    Am Ende ist wohl alles eine Sache der Gewöhnung :)
    Wobei man sagen muss, das die Playbooks bisher IMMER länger und aufwendiger zu scripten sind im Vergleich zum Shell Script.


    Das war auch nicht eine Aufforderung. Sondern einfach ein Hinweis. :) Shell scripte haben einfach einen viel kleineren dependency tree. Hat alles sein für und wider.


    Würde jetzt auch nicht nur wegen Paternoster auf all meinen Servern ansible installieren.

    So habe ich es auch verstanden :P
    Paternoster schaut wirklich gut aus, ich muss nur nochmal die Motivation finden mich mit Ansible zu beschäftigen.
    Vielleicht lege ich auch den Teil Port des Scripts zu Ansible offen (auch wenn das noch sehr unprofessionell aussieht :P).


    Gruß, Marcel