Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
puppet-os-hardening — Questo modulo Puppet fornisce numerose configurazioni relative alla sicurezza, offrendo una protezione di base a tutto tondo. | Kitploit
Strumenti/GitHubGitHub/dev-sec/puppet-os-hardening
Sicurezza dell'Infrastruttura CloudScanner di VulnerabilitàAudit di ConfigurazioneSicurezza di ReteDevSecOpsAutenticazione
GitHubdev-sec/puppet-os-hardening

puppet-os-hardening

Questo modulo Puppet fornisce numerose configurazioni relative alla sicurezza, offrendo una protezione di base a tutto tondo.

Vedi Repository
291100141 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Sito web
Condividi

Puppet OS hardening

Puppet Forge Version Puppet Forge Downloads Puppet Forge Endorsement Build Status

Indice

  1. Descrizione del modulo - Cosa fa il modulo e perché è utile
  2. Setup - Le basi per iniziare con os_hardening
    • Requisiti di Setup
    • Iniziare con os_hardening
  3. Utilizzo - Opzioni di configurazione e funzionalità aggiuntive
    • Importante per Puppet Enterprise
    • Parametri
    • Utilizzo con Hiera
    • Nota sui pacchetti desiderati/indesiderati e servizi disabilitati
  • Limitazioni - Compatibilità con i sistemi operativi, ecc.
  • Sviluppo - Guida per contribuire al modulo
  • Test - Controlli di qualità per le tue modifiche al codice
    • Test Locali
    • Test PDK
    • Test di Integrazione (Docker)
    • Test di Integrazione (DigitalOcean)
    • Test CI di PR e fork
  • Contattaci
  • Contributori + Ringraziamenti
  • Licenza e Autore
  • Descrizione del Modulo

    Questo modulo Puppet fornisce una configurazione sicura del tuo sistema operativo di base con hardening e fa parte del DevSec Hardening Framework.

    Setup

    Requisiti di Setup

    • Puppet OpenSource o Enterprise
    • Modulo stdlib
    • Modulo sysctl

    Iniziare con os_hardening

    Dopo aver aggiunto questo modulo, puoi usare la classe:

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

    Tutti i parametri sono contenuti nella classe principale os_hardening, quindi devi solo passarli in questo modo:

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

    Utilizzo

    IMPORTANTE per Puppet Enterprise

    Se stai usando questo modulo in un ambiente PE, devi impostare pe_environment = true Altrimenti puppet genererà un errore (risorsa duplicata)!

    Parametri

    • system_environment = 'default' definisce il contesto in cui il sistema opera. Alcune opzioni non funzionano con docker/lxc
    • pe_environment = false imposta su true se stai usando Puppet Enterprise IMPORTANTE - vedi sopra
    • extra_user_paths = [] aggiungi percorsi aggiuntivi alla variabile PATH dell'utente (il default è vuoto).
    • umask = undef umask utilizzato per la creazione di nuove directory home da useradd / newusers (es. '027')
    • maildir = undef percorso per maildir (es. '/var/mail')
    • usergroups = true true se vuoi gruppi separati per ogni utente, false altrimenti
    • sys_uid_min = undef e sys_gid_min = undef sovrascrive l'impostazione predefinita per login.defs
    • password_max_age = 60 età massima della password
    • password_min_age = 7 età minima della password (prima di consentire qualsiasi altro cambio password)
    • password_warn_age = 7 giorni di preavviso prima della scadenza del cambio password
    • login_retries = 5 il numero massimo di tentativi di login se la password è errata (normalmente sovrascritto da PAM / auth_retries)
    • login_timeout = 60 timeout di autenticazione in secondi, quindi il login terminerà se questo tempo trascorre
    • chfn_restrict = '' quali campi possono essere modificati dagli utenti normali usando chfn
    • allow_login_without_home = false true per consentire l'accesso agli utenti senza home
    • allow_change_user = false se un utente può usare su per cambiare il proprio login
    • ignore_users = [] array di account utente di sistema che non devono essere induriti (password disabilitata e shell impostata su /usr/sbin/nologin)
    • folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin'] cartelle di cui assicurarsi che gruppo e altri non abbiano accesso in scrittura né ad esse né a qualsiasi loro contenuto
    • ignore_max_files_warnings = false true se non vuoi che puppet registri avvisi su max_files e prestazioni durante la ricorsione di cartelle con > 1000 file es. /bin /usr/bin
    • recurselimit = 5 profondità delle directory per il controllo ricorsivo dei permessi
    • passwdqc_enabled = true true se vuoi usare un controllo password forte in PAM usando passwdqc
    • auth_retries = 5 il numero massimo di tentativi di autenticazione, prima che l'account venga bloccato per un certo periodo
    • auth_lockout_time = 600 tempo in secondi che deve trascorrere, se l'account è stato bloccato a causa di troppi tentativi di autenticazione falliti
    • passwdqc_options = 'min=disabled,disabled,16,12,8' imposta qualsiasi riga di opzioni (come stringa) che vuoi passare a passwdqc
    • manage_pam_unix = false true se vuoi che pam_unix sia gestito da questo modulo
    • enable_pw_history = true true se vuoi che pam_unix ricordi la cronologia delle password per prevenire il riutilizzo delle password (richiede manage_pam_unix = true)
    • pw_remember_last = 5 il numero delle ultime password (es. 5 impedirà all'utente di riutilizzare una delle sue ultime 5 password)
    • only_root_may_su = false true quando solo root e i membri del gruppo wheel possono usare su, richiesto su true per la conformità al CIS Benchmark
    • root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6'] TTY registrati per root
    • whitelist = [] tutti i file che dovrebbero mantenere i loro bit SUID/SGID se impostati (saranno combinati con la whitelist predefinita di file)
    • blacklist = [] tutti i file che dovrebbero avere i loro bit SUID/SGID rimossi se impostati (saranno combinati con la blacklist predefinita di file)
    • remove_from_unknown = false true se vuoi rimuovere i bit SUID/SGID da qualsiasi file che non è esplicitamente configurato in una blacklist. Questo farà sì che ogni esecuzione di Puppet cerchi attraverso i filesystem montati alla ricerca di bit SUID/SGID che non sono configurati nella blacklist predefinita e in quella utente. Se trova un bit SUID/SGID, verrà rimosso, a meno che questo file non sia nella tua whitelist.
    • dry_run_on_unknown = false come remove_from_unknown sopra, solo che i bit SUID/SGID non vengono rimossi. Cercherà comunque nei filesystem alla ricerca di bit SUID/SGID ma li stamperà solo nel tuo log. Questa opzione è consigliata solo quando configuri per la prima volta remove_from_unknown per i bit SUID/SGID, così puoi vedere i file che vengono modificati e apportare modifiche alla tua whitelist e blacklist.
    • enable_module_loading = true true se vuoi poter modificare i moduli del kernel una volta che il sistema è in esecuzione (es. modprobe, rmmod)
    • load_modules = [] carica questi moduli tramite initramfs se enable_module_loading è false
    • disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf'] array di filesystem (moduli del kernel) che dovrebbero essere disabilitati
    • cpu_vendor = 'intel' richiesto solo se enable_module_loading = false: imposta il vendor della CPU per i moduli da caricare
    • icmp_ratelimit = '100' valore predefinito '100', consente la sovrascrittura, richiede String
    • desktop_enabled = false true se questo è un sistema desktop, es. Xorg, KDE/GNOME/Unity/ecc.
    • enable_ipv4_forwarding = false true se questo sistema richiede l'inoltro dei pacchetti in IPv4 (es. Router), false altrimenti
    • manage_ipv6 = true true per indurire la configurazione ipv6, false per ignorare completamente ipv6
    • enable_ipv6 = false false per disabilitare ipv6 su questo sistema, true per abilitarlo
    • enable_ipv6_forwarding = false true se questo sistema richiede l'inoltro dei pacchetti in IPv6 (es. Router), false altrimenti
    • arp_restricted = true true se vuoi che il comportamento di annuncio e risposta ad ARP sia ristretto, false altrimenti
    • arp_ignore_samenet = false true scarterà i pacchetti che non provengono dalla stessa sottorete (arp_ignore = 2), false controllerà solo l'IP di destinazione (arp_ignore = 1)
    • enable_sysrq = false true per abilitare il tasto magico sysrq, false altrimenti
    • enable_core_dump = false false per prevenire la creazione di core dump, true altrimenti
    • enable_stack_protection = true per la Randomizzazione del Layout dello Spazio degli Indirizzi (ASLR). L'ASLR può aiutare a sconfiggere alcuni tipi di attacchi di buffer overflow. L'ASLR può posizionare la base, le librerie, l'heap e lo stack in posizioni casuali nello spazio degli indirizzi di un processo, il che rende difficile per un programma attaccante prevedere l'indirizzo di memoria della prossima istruzione.
    • enable_rpfilter = true true per abilitare il filtraggio del percorso inverso (scarta pacchetti falsi), false altrimenti
    • rpfilter_loose = false (solo se enable_rpfilter è true) modalità loose (rp_filter = 2) se true, modalità strict altrimenti
    • enable_log_martians = true true per abilitare la registrazione di pacchetti di rete sospetti / non instradabili, false altrimenti ATTENZIONE - questo potrebbe generare file di log enormi!
    • unwanted_packages = [] pacchetti che dovrebbero essere rimossi dal sistema
    • wanted_packages = [] pacchetti che dovrebbero essere aggiunti al sistema
    • disabled_services = [] servizi che non dovrebbero essere abilitati
    • enable_grub_hardening = false imposta su true per abilitare alcune regole di hardening di grub
    • grub_user = 'root' il nome utente grub che deve essere fornito quando si modifica la configurazione al prompt di grub
    • grub_password_hash = '' un hash di password creato con grub-mkpasswd-pbkdf2 associato a grub_user
    • boot_without_password = true configura Grub in modo che richieda una password solo quando si modifica una voce, non quando si avvia una voce esistente
    • system_umask = undef se questa variabile è impostata, configura l'umask per tutti gli utenti del sistema (es. '027')
    • manage_home_permissions = false imposta su true per gestire i permessi di file e directory degli utenti locali (g-w,o-rwx)
    • ignore_home_users = [] array per gli utenti che non devono essere limitati da manage_home_permissions
    • manage_log_permissions = false imposta su true per gestire i permessi dei file di log (g-wx,o-rwx)
    • restrict_log_dir = ['/var/log/'] imposta la directory principale dei log
    • ignore_restrict_log_dir = [] array per escludere directory di log sotto la directory principale dei log
    • ignore_files_in_folder_to_restrict = [] array per ignorare file da indurire nelle directory sotto l'array folder_to_restrict
    • manage_cron_permissions = false imposta su true per gestire i permessi dei file cron (og-rwx)
    • enable_sysctl_config = true imposta su false per disabilitare la configurazione sysctl
    • manage_system_users = true imposta su false per disabilitare la gestione degli utenti di sistema (password vuota e impostazione della shell nologin)
    • shadow_group = undef sovrascrive la proprietà del gruppo di /etc/shadow
    • shadow_mode = undef sovrascrive i permessi dei file di /etc/shadow

    Utilizzo con Hiera

    È anche possibile impostare i parametri in Hiera in questo modo:

    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']
    

    Nota sui pacchetti desiderati/indesiderati e servizi disabilitati

    Poiché il CIS Distribution Independent Linux Benchmark è un buon punto di partenza per quanto riguarda l'hardening dei sistemi, è stato ritenuto appropriato implementare un modo semplice per gestire casi singoli per i quali non si vuole scrivere un intero modulo.

    Ad esempio, per aumentare la conformità CIS DIL su un sistema Debian, si dovrebbe impostare quanto segue:

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

    Le impostazioni predefinite di NTP sono in realtà abbastanza buone per la maggior parte delle situazioni, quindi non è immediatamente necessario implementare un modulo. Tuttavia, se usi un modulo per controllare questi servizi, questo è ovviamente preferibile.

    Limitazioni

    Questo modulo è stato testato e dovrebbe funzionare sulla maggior parte delle distribuzioni Linux. Per un elenco esteso dei sistemi operativi supportati, consulta metadata.json

    Sviluppo

    Se vuoi contribuire, segui la nostra guida ai contributi.

    Test

    Test Locali

    Dovresti avere l'interprete Ruby installato sul tuo sistema. Potrebbe essere una buona idea usare rvm per questo scopo. Oltre a ciò devi installare il Puppet Development Kit PDK e Docker Community Edition, poiché i test di integrazione vengono eseguiti in container Docker.

    Per tutti i nostri test di integrazione usiamo test-kitchen. Se non hai familiarità con test-kitchen, dai un'occhiata alla loro guida.

    Test PDK

    root@kitploit:~
    # Test di sintassi e lint
    pdk validate
    
    # Test unitari
    pdk test unit
    

    Test di Integrazione (Docker)

    Per impostazione predefinita i test di integrazione vengono eseguiti in container docker - sfortunatamente non tutti i test possono essere eseguiti in ambienti container (es. impostazioni sysctl).

    root@kitploit:~
    # Installa le dipendenze
    gem install bundler
    bundle install
    
    # elenca tutte le istanze di test
    bundle exec kitchen list
    
    # test rapido su una macchina
    bundle exec kitchen test ubuntu-16-04-puppet5
    
    # test su tutte le macchine
    bundle exec kitchen test
    

    Test di Integrazione (DigitalOcean)

    Per test di integrazione completi con DigitalOcean devi ottenere un account lì e configurare alcune variabili d'ambiente:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - token di accesso per DigitalOcean
    • DIGITALOCEAN_SSH_KEY_IDS - ID in DigitalOcean della tua chiave ssh, vedi questo per maggiori informazioni

    La chiave ssh deve essere nominata ~/.ssh/do_ci e aggiunta al tuo profilo su DigitalOcean. Dopo questo sei pronto per eseguire i test come descritto in Test di Integrazione (Docker).

    Se vuoi eseguire i test di integrazione completi con Github Actions nel tuo fork, dovrai aggiungere queste variabili d'ambiente nelle impostazioni del tuo fork:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - token di accesso per DigitalOcean
    • CI_SSH_KEY - parte privata di una chiave ssh, disponibile su DigitalOcean per le tue istanze, in forma codificata base64 (es. cat id_rsa | base64 -w0 ; echo)
    • DIGITALOCEAN_SSH_KEY_IDS - ID in DigitalOcean di CI_SSH_KEY, vedi questo per maggiori informazioni

    Test CI di PR e fork

    Le tue patch verranno automaticamente testate tramite Github Actions. Il riepilogo dei test è visibile su Github nella tua PR, i dettagli si trovano nei test collegati.

    Contattaci

    Puoi raggiungerci in diversi modi:

    • @DevSecIO su Twitter
    • Mailing list per domande e discussione generale: [email protected] [iscriviti]
    • Mailing list con annunci di rilascio (non sono possibili post qui): [email protected] [iscriviti]

    Contributori + Ringraziamenti

    • 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

    Per la portabilità originale di chef-os-hardening a puppet:

    • Artem Sidorenko artem-sidorenko
    • Frank Kloeker eumel8

    Grazie a tutti!!

    Licenza e Autore

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

    Concesso in licenza sotto la Apache License, Versione 2.0 (la "Licenza"); non puoi usare questo file se non in conformità con la Licenza. Puoi ottenere una copia della Licenza all'indirizzo

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

    Salvo quanto richiesto dalla legge applicabile o concordato per iscritto, il software distribuito sotto la Licenza è distribuito su base "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. Consulta la Licenza per le autorizzazioni e le limitazioni specifiche che regolano l'uso del software.

    Scarica lo strumento