Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
puppet-os-hardening — Dieses Puppet-Modul bietet zahlreiche sicherheitsbezogene Konfigurationen und gewährleistet einen umfassenden Basisschutz. | Kitploit
Tools/GitHubGitHub/dev-sec/puppet-os-hardening
Cloud-Infrastruktur-SicherheitSchwachstellenscannerKonfigurationsprüfungNetzwerksicherheitDevSecOpsAuthentifizierung
GitHubdev-sec/puppet-os-hardening

puppet-os-hardening

Dieses Puppet-Modul bietet zahlreiche sicherheitsbezogene Konfigurationen und gewährleistet einen umfassenden Basisschutz.

Repository anzeigen
29110080vor 11 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen

Puppet OS-Härtung

Puppet Forge Version Puppet Forge Downloads Puppet Forge Endorsement Build Status

Inhaltsverzeichnis

  1. Modulbeschreibung – Was das Modul tut und warum es nützlich ist
  2. Setup – Die Grundlagen für den Einstieg mit os_hardening
    • Setup-Anforderungen
    • Erste Schritte mit os_hardening
  3. Verwendung – Konfigurationsoptionen und zusätzliche Funktionalität
    • Wichtig für Puppet Enterprise
    • Parameter
    • Hiera-Verwendung
    • Hinweis zu gewünschten/unerwünschten Paketen und deaktivierten Diensten
  • Einschränkungen – OS-Kompatibilität usw.
  • Entwicklung – Leitfaden für Beiträge zum Modul
  • Testen – Qualitätskriterien für Ihre Änderungen im Code
    • Lokales Testen
    • PDK-Tests
    • Integrationstests (Docker)
    • Integrationstests (DigitalOcean)
    • CI-Tests von PRs & Forks
  • Kontakt aufnehmen
  • Mitwirkende + Anerkennung
  • Lizenz und Autor
  • Modulbeschreibung

    Dieses Puppet-Modul bietet eine sichere Konfiguration Ihres Basis-Betriebssystems mit Härtung und ist Teil des DevSec Hardening Framework.

    Setup

    Setup-Anforderungen

    • Puppet OpenSource oder Enterprise
    • Modul stdlib
    • Modul sysctl

    Erste Schritte mit os_hardening

    Nach dem Hinzufügen dieses Moduls können Sie die Klasse verwenden:

    root@kitploit:~
    class { 'os_hardening': }
    

    Alle Parameter sind in der Hauptklasse os_hardening enthalten, sodass Sie sie einfach wie folgt übergeben müssen:

    root@kitploit:~
    class { 'os_hardening':
      enable_ipv4_forwarding => true,
    }
    

    Verwendung

    WICHTIG für Puppet Enterprise

    Wenn Sie dieses Modul in einer PE-Umgebung verwenden, müssen Sie pe_environment = true setzen. Andernfalls gibt Puppet einen Fehler aus (doppelte Ressource)!

    Parameter

    • system_environment = 'default' definiert den Kontext, in dem das System läuft. Einige Optionen funktionieren nicht für docker/lxc
    • pe_environment = false setzen Sie dies auf true, wenn Sie Puppet Enterprise verwenden WICHTIG – siehe oben
    • extra_user_paths = [] fügt zusätzliche Pfade zur PATH-Variable des Benutzers hinzu (Standard ist leer).
    • umask = undef umask, die für die Erstellung neuer Home-Verzeichnisse durch useradd / newusers verwendet wird (z. B. '027')
    • maildir = undef Pfad für maildir (z. B. '/var/mail')
    • usergroups = true true, wenn Sie separate Gruppen für jeden Benutzer möchten, andernfalls false
    • sys_uid_min = undef und sys_gid_min = undef überschreibt die Standardeinstellung für login.defs
    • password_max_age = 60 maximale Passwortalter
    • password_min_age = 7 minimale Passwortalter (bevor eine andere Passwortänderung erlaubt ist)
    • password_warn_age = 7 Tage Warnung, bevor eine Passwortänderung fällig ist
    • login_retries = 5 die maximale Anzahl von Login-Versuchen, wenn das Passwort falsch ist (normalerweise durch PAM / auth_retries überschrieben)
    • login_timeout = 60 Authentifizierungs-Timeout in Sekunden, sodass der Login beendet wird, wenn diese Zeit überschritten wird
    • chfn_restrict = '' welche Felder von regulären Benutzern mit chfn geändert werden dürfen
    • allow_login_without_home = false true, um Benutzern ohne Home-Verzeichnis den Login zu erlauben
    • allow_change_user = false ob ein Benutzer su verwenden darf, um seinen Login zu ändern
    • ignore_users = [] Array von Systembenutzerkonten, die nicht gehärtet werden sollen (Passwort deaktiviert und Shell auf /usr/sbin/nologin gesetzt)
    • folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin'] Ordner, bei denen sichergestellt werden soll, dass Gruppe und Andere keinen Schreibzugriff auf sie oder deren Inhalte haben
    • ignore_max_files_warnings = false true, wenn Puppet keine max_files- und Performance-Warnungen bei der Rekursion über Ordner mit > 1000 Dateien (z. B. /bin /usr/bin) protokollieren soll
    • recurselimit = 5 Verzeichnistiefe für die rekursive Berechtigungsprüfung
    • passwdqc_enabled = true true, wenn Sie eine starke Passwortprüfung in PAM mit passwdqc verwenden möchten
    • auth_retries = 5 die maximale Anzahl von Authentifizierungsversuchen, bevor das Konto für einige Zeit gesperrt wird
    • auth_lockout_time = 600 Zeit in Sekunden, die vergehen muss, wenn das Konto aufgrund zu vieler fehlgeschlagener Authentifizierungsversuche gesperrt wurde
    • passwdqc_options = 'min=disabled,disabled,16,12,8' setzen Sie eine beliebige Optionszeile (als String), die Sie an passwdqc übergeben möchten
    • manage_pam_unix = false true, wenn pam_unix von diesem Modul verwaltet werden soll
    • enable_pw_history = true true, wenn pam_unix den Passwortverlauf speichern soll, um die Wiederverwendung von Passwörtern zu verhindern (erfordert manage_pam_unix = true)
    • pw_remember_last = 5 die Anzahl der letzten Passwörter (z. B. verhindert 5, dass der Benutzer eines seiner letzten 5 Passwörter wiederverwendet)
    • only_root_may_su = false true, wenn nur root und Mitglieder der Gruppe wheel su verwenden dürfen; für die CIS-Benchmark-Konformität auf true erforderlich
    • root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6'] registrierte TTYs für root
    • whitelist = [] alle Dateien, die ihre SUID/SGID-Bits behalten sollen, falls gesetzt (werden mit der vordefinierten Whitelist von Dateien kombiniert)
    • blacklist = [] alle Dateien, deren SUID/SGID-Bits entfernt werden sollen, falls gesetzt (werden mit der vordefinierten Blacklist von Dateien kombiniert)
    • remove_from_unknown = false true, wenn Sie SUID/SGID-Bits von jeder Datei entfernen möchten, die nicht explizit in einer blacklist konfiguriert ist. Dadurch durchsucht jeder Puppet-Lauf die eingehängten Dateisysteme nach SUID/SGID-Bits, die nicht in der Standard- und Benutzer-Blacklist konfiguriert sind. Wenn ein SUID/SGID-Bit gefunden wird, wird es entfernt, es sei denn, diese Datei befindet sich in Ihrer whitelist.
    • dry_run_on_unknown = false wie remove_from_unknown oben, nur dass SUID/SGID-Bits nicht entfernt werden. Es durchsucht weiterhin die Dateisysteme nach SUID/SGID-Bits, protokolliert sie jedoch nur in Ihrem Log. Diese Option wird nur empfohlen, wenn Sie remove_from_unknown für SUID/SGID-Bits erstmals konfigurieren, damit Sie die geänderten Dateien sehen und Anpassungen an Ihrer whitelist und blacklist vornehmen können.
    • enable_module_loading = true true, wenn das Ändern von Kernel-Modulen erlaubt sein soll, während das System läuft (z. B. modprobe, rmmod)
    • load_modules = [] lädt diese Module über initramfs, wenn enable_module_loading false ist
    • disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf'] Array von Dateisystemen (Kernel-Modulen), die deaktiviert werden sollen
    • cpu_vendor = 'intel' nur erforderlich, wenn enable_module_loading = false: setzt den CPU-Hersteller für zu ladende Module
    • icmp_ratelimit = '100' Standardwert '100', Überschreiben erlaubt, benötigt String
    • desktop_enabled = false true, wenn dies ein Desktop-System ist, d. h. Xorg, KDE/GNOME/Unity usw.
    • enable_ipv4_forwarding = false true, wenn dieses System Paketweiterleitung in IPv4 benötigt (z. B. Router), andernfalls false
    • manage_ipv6 = true true, um das IPv6-Setup zu härten, false, um IPv6 vollständig zu ignorieren
    • enable_ipv6 = false false, um IPv6 auf diesem System zu deaktivieren, true, um es zu aktivieren
    • enable_ipv6_forwarding = false true, wenn dieses System Paketweiterleitung in IPv6 benötigt (z. B. Router), andernfalls false
    • arp_restricted = true true, wenn das Verhalten des Ankündigens und Antwortens auf ARP eingeschränkt werden soll, andernfalls false
    • arp_ignore_samenet = false true verwirft Pakete, die nicht aus demselben Subnetz stammen (arp_ignore = 2), false prüft nur die Ziel-IP (arp_ignore = 1)
    • enable_sysrq = false true, um die magische SysRq-Taste zu aktivieren, andernfalls false
    • enable_core_dump = false false, um die Erstellung von Core-Dumps zu verhindern, andernfalls true
    • enable_stack_protection = true für Address Space Layout Randomization. ASLR kann helfen, bestimmte Arten von Pufferüberlauf-Angriffen abzuwehren. ASLR kann die Basis, Bibliotheken, den Heap und den Stack an zufälligen Positionen im Adressraum eines Prozesses platzieren, was es einem angreifenden Programm erschwert, die Speicheradresse des nächsten Befehls vorherzusagen.
    • enable_rpfilter = true true, um Reverse-Path-Filtering zu aktivieren (verwirft gefälschte Pakete), andernfalls false
    • rpfilter_loose = false (nur wenn enable_rpfilter true ist) Loose Mode (rp_filter = 2) wenn true, andernfalls Strict Mode
    • enable_log_martians = true true, um die Protokollierung verdächtiger / nicht routbarer Netzwerkpakete zu aktivieren, andernfalls false WARNUNG – dies könnte riesige Logdateien erzeugen!
    • unwanted_packages = [] Pakete, die vom System entfernt werden sollen
    • wanted_packages = [] Pakete, die zum System hinzugefügt werden sollen
    • disabled_services = [] Dienste, die nicht aktiviert sein sollen
    • enable_grub_hardening = false auf true setzen, um einige Grub-Härtungsregeln zu aktivieren
    • grub_user = 'root' der Grub-Benutzername, der bei der Änderung der Konfiguration an der Grub-Eingabeaufforderung angegeben werden muss
    • grub_password_hash = '' ein Passwort-Hash, der mit grub-mkpasswd-pbkdf2 erstellt wurde und dem grub_user zugeordnet ist
    • boot_without_password = true Grub so einrichten, dass nur beim Ändern eines Eintrags ein Passwort erforderlich ist, nicht beim Booten eines vorhandenen Eintrags
    • system_umask = undef wenn diese Variable gesetzt ist, wird die umask für alle Benutzer im System eingerichtet (z. B. '027')
    • manage_home_permissions = false auf true setzen, um Datei- und Verzeichnisberechtigungen lokaler Benutzer zu verwalten (g-w,o-rwx)
    • ignore_home_users = [] Array für Benutzer, die nicht durch manage_home_permissions eingeschränkt werden sollen
    • manage_log_permissions = false auf true setzen, um Logdateiberechtigungen zu verwalten (g-wx,o-rwx)
    • restrict_log_dir = ['/var/log/'] Haupt-Logverzeichnis festlegen
    • ignore_restrict_log_dir = [] Array zum Ausschließen von Logverzeichnissen unterhalb des Haupt-Logverzeichnisses
    • ignore_files_in_folder_to_restrict = [] Array zum Ignorieren von Dateien, die in Verzeichnissen unterhalb des folder_to_restrict-Arrays gehärtet werden sollen
    • manage_cron_permissions = false auf true setzen, um Cron-Dateiberechtigungen zu verwalten (og-rwx)
    • enable_sysctl_config = true auf false setzen, um die sysctl-Konfiguration zu deaktivieren
    • manage_system_users = true auf false setzen, um die Verwaltung von Systembenutzern zu deaktivieren (leeres Passwort und Setzen der nologin-Shell)
    • shadow_group = undef überschreibt die Gruppenbesitzer von /etc/shadow
    • shadow_mode = undef überschreibt die Dateiberechtigungen von /etc/shadow

    Hiera-Verwendung

    Es ist auch möglich, die Parameter in Hiera wie folgt zu setzen:

    root@kitploit:~
    os_hardening::password_max_age:  90
    os_hardening::password_min_age:  0
    os_hardening::password_warn_age: 14
    os_hardening::unwanted_packages: ['telnet']
    os_hardening::ignore_users:      ['git','githook','ansible','apache','puppetboard']
    

    Hinweis zu gewünschten/unerwünschten Paketen und deaktivierten Diensten

    Da das CIS Distribution Independent Linux Benchmark ein guter Ausgangspunkt für die Härtung von Systemen ist, wurde es als angemessen erachtet, eine einfache Möglichkeit zu implementieren, um mit Einzelfällen umzugehen, für die man kein ganzes Modul schreiben möchte.

    Um beispielsweise die CIS-DIL-Konformität auf einem Debian-System zu erhöhen, sollte man Folgendes setzen:

    root@kitploit:~
    wanted_packages   => ['ntp'],
    unwanted_packages => ['telnet'],
    disabled_services => ['rsync'],
    

    Die Standardeinstellungen von NTP sind für die meisten Situationen tatsächlich recht gut, daher ist es nicht sofort notwendig, ein Modul zu implementieren. Wenn Sie jedoch ein Modul zur Steuerung dieser Dienste verwenden, ist das natürlich vorzuziehen.

    Einschränkungen

    Dieses Modul wurde getestet und sollte auf den meisten Linux-Distributionen laufen. Für eine umfangreiche Liste unterstützter Betriebssysteme siehe metadata.json

    Entwicklung

    Wenn Sie beitragen möchten, folgen Sie bitte unserem Beitragsleitfaden.

    Testen

    Lokales Testen

    Sie sollten eine Ruby-Interpreter auf Ihrem System installiert haben. Es könnte eine gute Idee sein, rvm für diesen Zweck zu verwenden. Darüber hinaus müssen Sie das Puppet Development Kit PDK und Docker Community Edition installieren, da die Integrationstests in Docker-Containern laufen.

    Für alle unsere Integrationstests verwenden wir test-kitchen. Wenn Sie mit test-kitchen nicht vertraut sind, werfen Sie bitte einen Blick auf deren Leitfaden.

    PDK-Tests

    root@kitploit:~
    # Syntax- & Lint-Tests
    pdk validate
    
    # Unit-Tests
    pdk test unit
    

    Integrationstests (Docker)

    Standardmäßig laufen die Integrationstests in Docker-Containern – leider können nicht alle Tests in Container-Umgebungen ausgeführt werden (z. B. sysctl-Einstellungen).

    root@kitploit:~
    # Abhängigkeiten installieren
    gem install bundler
    bundle install
    
    # alle Testinstanzen auflisten
    bundle exec kitchen list
    
    # schneller Test auf einer Maschine
    bundle exec kitchen test ubuntu-16-04-puppet5
    
    # Test auf allen Maschinen
    bundle exec kitchen test
    

    Integrationstests (DigitalOcean)

    Für vollständige Integrationstests mit DigitalOcean müssen Sie dort ein Konto erstellen und einige Umgebungsvariablen einrichten:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN – Zugriffstoken für DigitalOcean
    • DIGITALOCEAN_SSH_KEY_IDS – ID Ihres SSH-Schlüssels bei DigitalOcean, siehe dies für weitere Informationen

    Der SSH-Schlüssel muss ~/.ssh/do_ci heißen und zu Ihrem Profil bei DigitalOcean hinzugefügt werden. Danach können Sie die Tests wie unter Integrationstests (Docker) beschrieben ausführen.

    Wenn Sie die vollständigen Integrationstests mit Github Actions in Ihrem Fork ausführen möchten, müssen Sie diese Umgebungsvariablen in den Einstellungen Ihres Forks hinzufügen:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN – Zugriffstoken für DigitalOcean
    • CI_SSH_KEY – privater Teil eines SSH-Schlüssels, der bei DigitalOcean für Ihre Instanzen verfügbar ist, in base64-kodierter Form (z. B. cat id_rsa | base64 -w0 ; echo)
    • DIGITALOCEAN_SSH_KEY_IDS – ID von CI_SSH_KEY bei DigitalOcean, siehe dies für weitere Informationen

    CI-Tests von PRs & Forks

    Ihre Patches werden automatisch über Github Actions getestet. Die Testzusammenfassung ist auf Github in Ihrem PR sichtbar, Details finden Sie in den verlinkten Tests.

    Kontakt aufnehmen

    Sie können uns auf verschiedene Weise erreichen:

    • @DevSecIO auf Twitter
    • Mailingliste für Fragen und allgemeine Diskussionen: [email protected] [abonnieren]
    • Mailingliste mit Release-Ankündigungen (hier sind keine Beiträge möglich): [email protected] [abonnieren]

    Mitwirkende + Anerkennung

    • Dominik Richter arlimus
    • Edmund Haselwanter ehaselwanter
    • Christoph Hartmann chris-rock
    • Thomas Dütsch a-tom
    • Patrick Meier atomic111
    • Artem Sidorenko artem-sidorenko
    • Kurt Huwig kurthuwig
    • Matthew Haughton 3flex
    • Reik Keutterling spielkind
    • Daniel Dreier danieldreier
    • Timo Goebel timogoebel
    • Tristan Helmich fadenb
    • Michael Geiger mcgege
    • Timo Bergemann LooOOooM

    Für den ursprünglichen Port von chef-os-hardening auf Puppet:

    • Artem Sidorenko artem-sidorenko
    • Frank Kloeker eumel8

    Vielen Dank an alle!!

    Lizenz und Autor

    • Autor:: Dominik Richter [email protected]
    • Autor:: Deutsche Telekom AG

    Lizenziert unter der Apache License, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter

    root@kitploit:~
      http://www.apache.org/licenses/LICENSE-2.0
    

    Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die unter der Lizenz verteilte Software auf einer "WIE BESEHEN"-BASIS OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, bereitgestellt. Die spezifischen Berechtigungen und Einschränkungen unter der Lizenz finden Sie in der Lizenz.

    Tool herunterladen