Ubuntu Setup/ Security Script

  • Hallo,

    da ich demnächst ein paar mehr oder weniger gleich konfigurierte Server aufsetzen will, habe ich alle meine dokumentierten Schritte mal zu einem Setup/ Security Script zusammengebaut.

    Gleich vorweg: Ich bin kein Programmierer. Manches mag elganter oder kürzer gehen. Aber es funktioniert fast alles.

    Was haltet Ihr davon? Irgendwas, was schlecht ist? Fehlt was? Würdet ihr noch was hinzufügen? Aktuell alls Dummies und Platzhalterwerte.

    Es fehlen aktuell noch diverse Werte für die sshd_config.

    Was aktuell noch niccht funktioniert ist die Benahrichtigung bei SSH Login. Weiß jemand was da falsch ist bzw. fehlt?

    Mailbenachrichtigungen an sich funktionieren für Logwatch (allerdings nur im Textformat und nicht wie gewünscht als html Mail), Apticron, unattended upgraddes etc.

    Gerne Anmerkungen, Kommentare etc.

    Und hier jetzt das Skript:

  • Und hier Teil 2:

  • Grundsätzlich finde ich die Idee gut, sowas über ein Script zu machen. Wichtig ist, das Script aktuell zu halten, Softwareänderungen, Konfigurationsanpassungen etc. einzupflegen.

    Bezgl. des SSH Scripts: es wird erzeugt, aber wo wird es in die Konfiguration eingetragen und aktiviert?

  • Ich gebe zu, ich habe das Skript nur überflogen aber finde es gut strukturiert und lesbar.

    Vielen Dank für's teilen!

    Persönlich bin ich von dem Skript-Ansatz wieder abgekommen.

    Ich finde es manchmal zu aufwändig, es so zu entwickeln, dass es wiederholt aufgerufen werden kann.

    Ich versuche deshalb gerade meine Konfiguration in Richtung Ansible zu portieren.

    VPS 1000 G11 | RS X-Mas 2016 🎄 | VPS A Ostern 2017 🐰 | VPS [piko|nano|mikro] G11s | RS Cyber Quack 🦆 | WH Expert Special 2018 / 4000

  • Hat noch jemand Anmerkungen zum Skript?

    Die Idee ist definitiv gut und auch die Umsetzung sieht ordentlich aus. Ich würde aber genau wie gem eher dazu raten, sich mal entsprechende Automatisierungstool anzuschauen, die genau diese Problemstellung auch angehen und sich einfach durch elegante Definitionen besser umsetzen lassen, was dann auch OS unabhängig und besser skalierbar ist. Das Tool der Wahl ist momentan sicherlich Ansible (SSH + Python). Es gibt aber auch Server/Agent Ansätze wie Chef oder Puppet. Auch wenn man sehr viel mit Bash Skripten abdecken kann, so würde ich es doch ab einer gewissen Größe vermeiden, weil der Wartungsaufwand entsprechend groß wird. Auch ist es oft auf ein bestimmtes OS in einer bestimmten Version abgestimmt. Sobald man hier etwas mehr Flexibilität möchte, artet das in einem Bash Skript schnell etwas aus.

    In Ansible definiert man seine Aufgaben/Konfigurationen dann in YAML. Das sieht für einen einfachen Task, der Pakete installieren soll, dann z.B. so aus

    Code
    - name: Install packages
      ansible.builtin.package:
        name:
          - "ufw"
          - "curl"
          - "wget"
          - "git"
          - "mc"
        state: present

    Das ist dann auch idempotent und zeigt in der Ausgabe, ob tatsächlich was gemacht wurde oder ob die Pakete bereits installiert waren.

    Einmal editiert, zuletzt von Paul (12. September 2024 um 12:40) aus folgendem Grund: Ansible Beispiel ergänzt

  • OK Du meint st also den SSH Login Teil.

    In der Tat, der Scriptaufruf vom Skript durch sshd fehlt und war auch noch nie da, ist wohl abhanden gekommen. Muss ich mal schauen

    Zitat
    Bash
    #!/bin/bash
    if [ "\$USER" != "root" ]; then
        SUBJECT="SSH Login Alert"
        MESSAGE="User \${USER} has logged in from \${SSH_CLIENT} on \$(date)"
        echo "\$MESSAGE" | mail -s "\$SUBJECT" "$UNATTENDED_UPGRADES_EMAIL"
    fi
    EOF


    Bei mir Funktioniert das mit folgender Variable: -n "${SSH_CLIENT}"


    So sieht das dann bei mir aus (nur ein teil davon):

    wenn das als Datei in /etc/profile.d/ liegt wird das automatisch Ausgeführt hier muss nichts Aktiviert werden

  • Mir sind nur ein paar Kleinigkeiten aufgefallen, die aber auch Geschmackssache sein koennten, oder darauf beruhen, dass ich nur Debian benutze und kein Ubuntu.

    Das Port fuer SSHD legst Du sowohl in der Systemd-Unit, als auch in der sshd_config fest. Ich wuerde nur eine Stelle nehmen. Das ist eindeutiger.

    Die Aenderungen fuer die sshd_config packe ich nach "sshd_config.d/". Das ist weniger Fehleranfaellig. Oder gibt es das unter Ubuntu nicht?

    Bei IPv6 machst Du diese beiden Dinge:

    # Disable IPv6 router advertisements

    # Enable IPv6 privacy extensions

    Das kann man durchaus so machen. Aber ich wuerde noch dokumentieren, warum dass so sein soll, denn die privacy extensions funktionieren nicht ohne die router advertisements.

  • Netplan muss man nicht unter Ubuntu nutzen. Man könnte z.B Netplan auch unter Debian nutzen, macht man aber nicht. Beide Distributionen nutzen Apt als Paketverwaltung. Aus dieser nutzt Ubuntu auch einen Großteil der Pakete und Bibliotheken. Natürlich gibt es gewisse Unterschiede zwischen Ubuntu und Debian. Aber selbst von der Administration her sind sich beide sehr gleich.

    Habe mal auf die Schnelle einen ganz interessanten Artikel zum Thema gefunden

    https://de.linux-console.net/?p=18088

  • Habe mal auf die Schnelle einen ganz interessanten Artikel zum Thema gefunden

    https://de.linux-console.net/?p=18088

    Und ich habe den Bericht nur auf die schnelle überflogen.. auch nicht 100% korrekt, denn das Ubuntu 64bit läuft wunderbar auf dem Raspi 4.. war doch ARMv7 oder armhf ?

    WH 8000 SE BF22, VPS 500G11s BW24, VPS1000 G11 JA24, RS1000 G11, VPS2000 ARM G11 SE OST25, RS2000 G12 Pro ADV25

    Ich lebe im Netzwerk, ihr findet mich unter der IP-Adresse: 127.0.0.1

  • Netplan muss man nicht unter Ubuntu nutzen. Man könnte z.B Netplan auch unter Debian nutzen, macht man aber nicht. Beide Distributionen nutzen Apt als Paketverwaltung. Aus dieser nutzt Ubuntu auch einen Großteil der Pakete und Bibliotheken. Natürlich gibt es gewisse Unterschiede zwischen Ubuntu und Debian. Aber selbst von der Administration her sind sich beide sehr gleich.

    Das stimmt so nicht. Debian ist bspw. von Sys-V Init direkt zu systemd gesprungen, Ubuntu hatte zwischenzeitlich mal einen Ausflug zu upstart, einer Eigenentwicklung unternommen. Ich würde nichtmal davon sprechen, dass sich die Debian Versionen untereinander identisch administrieren - daher kann ich diese Aussage erst recht nicht zwischen Ubuntu und Debian treffen.


    denn das Ubuntu 64bit läuft wunderbar auf dem Raspi 4.. war doch ARMv7 oder armhf ?

    armhf ist doch noch älter - kann die Architektur sogar nur 32 Bit?