Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
puppet-os-hardening — Este módulo puppet fornece inúmeras configurações relacionadas à segurança, oferecendo proteção base abrangente. | Kitploit
Ferramentas/GitHubGitHub/dev-sec/puppet-os-hardening
Segurança de Infraestrutura em NuvemScanners de VulnerabilidadesAuditoria de ConfiguraçãoSegurança de RedeDevSecOpsAutenticação
GitHubdev-sec/puppet-os-hardening

puppet-os-hardening

Este módulo puppet fornece inúmeras configurações relacionadas à segurança, oferecendo proteção base abrangente.

Ver Repositório
29110014há 1 mêsRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Site
Compartilhar

Endurecimento do SO com Puppet

Puppet Forge Version Puppet Forge Downloads Puppet Forge Endorsement Build Status

Índice

  1. Descrição do Módulo - O que o módulo faz e por que é útil
  2. Configuração - O básico para começar com os_hardening
    • Requisitos de Configuração
    • Começando com os_hardening
  3. Uso - Opções de configuração e funcionalidades adicionais
    • Importante para Puppet Enterprise
    • Parâmetros
    • Uso com Hiera
    • Nota sobre pacotes desejados/não desejados e serviços desabilitados
  • Limitações - Compatibilidade com SO, etc.
  • Desenvolvimento - Guia para contribuir com o módulo
  • Testes - Critérios de qualidade para suas alterações no código
    • Testes Locais
    • Testes PDK
    • Testes de Integração (Docker)
    • Testes de Integração (DigitalOcean)
    • Testes de CI de PRs e forks
  • Entre em contato
  • Contribuidores + Agradecimentos
  • Licença e Autor
  • Descrição do Módulo

    Este módulo Puppet fornece uma configuração segura do seu SO base com endurecimento e faz parte do DevSec Hardening Framework.

    Configuração

    Requisitos de Configuração

    • Puppet OpenSource ou Enterprise
    • Módulo stdlib
    • Módulo sysctl

    Começando com os_hardening

    Após adicionar este módulo, você pode usar a classe:

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

    Todos os parâmetros estão contidos na classe principal os_hardening, então você só precisa passá-los assim:

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

    Uso

    IMPORTANTE para Puppet Enterprise

    Se você estiver usando este módulo em um ambiente PE, você deve definir pe_environment = true Caso contrário, o puppet exibirá um erro (recurso duplicado)!

    Parâmetros

    • system_environment = 'default' define o contexto no qual o sistema opera. Algumas opções não funcionam para docker/lxc
    • pe_environment = false defina como true se você estiver usando Puppet Enterprise IMPORTANTE - veja acima
    • extra_user_paths = [] adiciona caminhos adicionais à variável PATH do usuário (o padrão é vazio).
    • umask = undef umask usado para a criação de novos diretórios home por useradd / newusers (ex.: '027')
    • maildir = undef caminho para maildir (ex.: '/var/mail')
    • usergroups = true true se você quiser grupos separados para cada usuário, false caso contrário
    • sys_uid_min = undef e sys_gid_min = undef substitui a configuração padrão de login.defs
    • password_max_age = 60 idade máxima da senha
    • password_min_age = 7 idade mínima da senha (antes de permitir qualquer outra alteração de senha)
    • password_warn_age = 7 dias de aviso antes do vencimento da alteração de senha
    • login_retries = 5 o número máximo de tentativas de login se a senha estiver incorreta (normalmente substituído por PAM / auth_retries)
    • login_timeout = 60 tempo limite de autenticação em segundos, então o login será encerrado se esse tempo passar
    • chfn_restrict = '' quais campos podem ser alterados por usuários comuns usando chfn
    • allow_login_without_home = false true para permitir que usuários sem home façam login
    • allow_change_user = false se um usuário pode usar su para alterar seu login
    • ignore_users = [] array de contas de usuários do sistema que não devem ser endurecidas (senha desabilitada e shell definido para /usr/sbin/nologin)
    • folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin'] pastas para garantir que grupo e outros não tenham acesso de escrita a elas ou a qualquer um de seus conteúdos
    • ignore_max_files_warnings = false true se você não quiser que o puppet registre avisos de max_files e desempenho na recursão de pastas com > 1000 arquivos, ex.: /bin /usr/bin
    • recurselimit = 5 profundidade do diretório para verificação recursiva de permissões
    • passwdqc_enabled = true true se você quiser usar verificação forte de senha no PAM usando passwdqc
    • auth_retries = 5 o número máximo de tentativas de autenticação, antes que a conta seja bloqueada por algum tempo
    • auth_lockout_time = 600 tempo em segundos que precisa passar, se a conta foi bloqueada devido a muitas tentativas de autenticação falhas
    • passwdqc_options = 'min=disabled,disabled,16,12,8' defina para qualquer linha de opção (como uma string) que você queira passar para passwdqc
    • manage_pam_unix = false true se você quiser que o pam_unix seja gerenciado por este módulo
    • enable_pw_history = true true se você quiser que o pam_unix lembre o histórico de senhas para evitar a reutilização de senhas (requer manage_pam_unix = true)
    • pw_remember_last = 5 o número das últimas senhas (ex.: 5 impedirá que o usuário reutilize qualquer uma de suas últimas 5 senhas)
    • only_root_may_su = false true quando apenas root e membros do grupo wheel podem usar su, necessário ser true para conformidade com o CIS Benchmark
    • root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6'] TTYs registrados para root
    • whitelist = [] todos os arquivos que devem manter seus bits SUID/SGID se definidos (serão combinados com a lista de permissões pré-definida de arquivos)
    • blacklist = [] todos os arquivos que devem ter seus bits SUID/SGID removidos se definidos (serão combinados com a lista de bloqueio pré-definida de arquivos)
    • remove_from_unknown = false true se você quiser remover bits SUID/SGID de qualquer arquivo que não esteja explicitamente configurado em uma blacklist. Isso fará com que cada execução do Puppet procure nos sistemas de arquivos montados por bits SUID/SGID que não estejam configurados na lista de bloqueio padrão e do usuário. Se encontrar um bit SUID/SGID, ele será removido, a menos que este arquivo esteja na sua whitelist.
    • dry_run_on_unknown = false como remove_from_unknown acima, apenas que os bits SUID/SGID não são removidos. Ainda procurará nos sistemas de arquivos por bits SUID/SGID, mas apenas os imprimirá no seu log. Esta opção só é recomendada quando você configura remove_from_unknown pela primeira vez para bits SUID/SGID, para que possa ver os arquivos que estão sendo alterados e fazer ajustes na sua whitelist e blacklist.
    • enable_module_loading = true true se você quiser permitir alterar módulos do kernel enquanto o sistema está em execução (ex.: modprobe, rmmod)
    • load_modules = [] carrega estes módulos via initramfs se enable_module_loading for false
    • disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf'] array de sistemas de arquivos (módulos do kernel) que devem ser desabilitados
    • cpu_vendor = 'intel' apenas necessário se enable_module_loading = false: define o fabricante da CPU para os módulos a carregar
    • icmp_ratelimit = '100' valor padrão '100', permite sobrescrever, precisa ser String
    • desktop_enabled = false true se este é um sistema desktop, ex.: Xorg, KDE/GNOME/Unity/etc
    • enable_ipv4_forwarding = false true se este sistema requer encaminhamento de pacotes em IPv4 (ex.: Roteador), false caso contrário
    • manage_ipv6 = true true para endurecer a configuração do ipv6, false para ignorar o ipv6 completamente
    • enable_ipv6 = false false para desabilitar o ipv6 neste sistema, true para habilitar
    • enable_ipv6_forwarding = false true se este sistema requer encaminhamento de pacotes em IPv6 (ex.: Roteador), false caso contrário
    • arp_restricted = true true se você quiser que o comportamento de anunciar e responder ao ARP seja restrito, false caso contrário
    • arp_ignore_samenet = false true descartará pacotes que não são da mesma sub-rede (arp_ignore = 2), false apenas verificará o IP de destino (arp_ignore = 1)
    • enable_sysrq = false true para habilitar a tecla mágica sysrq, false caso contrário
    • enable_core_dump = false false para impedir a criação de core dumps, true caso contrário
    • enable_stack_protection = true para Randomização do Layout do Espaço de Endereço. A ASLR pode ajudar a derrotar certos tipos de ataques de estouro de buffer. A ASLR pode localizar a base, bibliotecas, heap e pilha em posições aleatórias no espaço de endereço de um processo, o que dificulta que um programa atacante preveja o endereço de memória da próxima instrução.
    • enable_rpfilter = true true para habilitar a filtragem de caminho reverso (descartar pacotes falsos), false caso contrário
    • rpfilter_loose = false (apenas se enable_rpfilter for true) modo flexível (rp_filter = 2) se true, modo estrito caso contrário
    • enable_log_martians = true true para habilitar o registro de pacotes de rede suspeitos / sem rota, false caso contrário AVISO - isso pode gerar arquivos de log enormes!
    • unwanted_packages = [] pacotes que devem ser removidos do sistema
    • wanted_packages = [] pacotes que devem ser adicionados ao sistema
    • disabled_services = [] serviços que não devem ser habilitados
    • enable_grub_hardening = false defina como true para habilitar algumas regras de endurecimento do grub
    • grub_user = 'root' o nome de usuário do grub que precisa ser fornecido ao alterar a configuração no prompt do grub
    • grub_password_hash = '' um hash de senha criado com grub-mkpasswd-pbkdf2 que está associado ao grub_user
    • boot_without_password = true configura o Grub para que exija senha apenas ao alterar uma entrada, não ao inicializar uma entrada existente
    • system_umask = undef se esta variável for definida, configura o umask para todos os usuários do sistema (ex.: '027')
    • manage_home_permissions = false defina como true para gerenciar permissões de arquivos e diretórios de usuários locais (g-w,o-rwx)
    • ignore_home_users = [] array para usuários que não devem ser restringidos por manage_home_permissions
    • manage_log_permissions = false defina como true para gerenciar permissões de arquivos de log (g-wx,o-rwx)
    • restrict_log_dir = ['/var/log/'] define o diretório principal de logs
    • ignore_restrict_log_dir = [] array para excluir diretórios de log sob o diretório principal de logs
    • ignore_files_in_folder_to_restrict = [] array para ignorar arquivos a serem endurecidos em diretórios sob o array folder_to_restrict
    • manage_cron_permissions = false defina como true para gerenciar permissões de arquivos cron (og-rwx)
    • enable_sysctl_config = true defina como false para desabilitar a configuração do sysctl
    • manage_system_users = true defina como false para desabilitar o gerenciamento de usuários do sistema (senha vazia e definição do shell nologin)
    • shadow_group = undef substitui a propriedade de grupo de /etc/shadow
    • shadow_mode = undef substitui as permissões de arquivo de /etc/shadow

    Uso com Hiera

    Também é possível definir os parâmetros no Hiera assim:

    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 sobre pacotes desejados/não desejados e serviços desabilitados

    Como o CIS Distribution Independent Linux Benchmark é um bom ponto de partida em relação ao endurecimento de sistemas, considerou-se apropriado implementar uma maneira fácil de lidar com casos pontuais para os quais não se deseja escrever um módulo inteiro.

    Por exemplo, para aumentar a conformidade com o CIS DIL em um sistema Debian, deve-se definir o seguinte:

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

    As configurações padrão do NTP são na verdade bastante boas para a maioria das situações, então não é imediatamente necessário implementar um módulo. No entanto, se você usar um módulo para controlar esses serviços, isso é obviamente preferível.

    Limitações

    Este módulo foi testado e deve funcionar na maioria das distribuições Linux. Para uma lista extensa de sistemas operacionais suportados, consulte metadata.json

    Desenvolvimento

    Se você quiser contribuir, siga nosso guia de contribuição.

    Testes

    Testes Locais

    Você deve ter o interpretador Ruby instalado no seu sistema. Pode ser uma boa ideia usar rvm para esse propósito. Além disso, você precisa instalar o Puppet Development Kit PDK e o Docker Community Edition, pois os testes de integração são executados em contêineres Docker.

    Para todos os nossos testes de integração usamos test-kitchen. Se você não está familiarizado com test-kitchen, consulte o guia deles.

    Testes PDK

    root@kitploit:~
    # Testes de sintaxe e lint
    pdk validate
    
    # Testes de unidade
    pdk test unit
    

    Testes de Integração (Docker)

    Por padrão, os testes de integração serão executados em contêineres docker - infelizmente nem todos os testes podem ser executados em ambientes de contêiner (ex.: configurações do sysctl).

    root@kitploit:~
    # Instalar dependências
    gem install bundler
    bundle install
    
    # listar todas as instâncias de teste
    bundle exec kitchen list
    
    # teste rápido em uma máquina
    bundle exec kitchen test ubuntu-16-04-puppet5
    
    # teste em todas as máquinas
    bundle exec kitchen test
    

    Testes de Integração (DigitalOcean)

    Para testes de integração completos com DigitalOcean, você precisa ter uma conta lá e configurar algumas variáveis de ambiente:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - token de acesso para DigitalOcean
    • DIGITALOCEAN_SSH_KEY_IDS - ID no DigitalOcean da sua chave ssh, veja isto para mais informações

    A chave ssh deve ser nomeada ~/.ssh/do_ci e adicionada ao seu perfil no DigitalOcean. Depois disso, você está pronto para executar os testes conforme descrito em Testes de Integração (Docker).

    Se você quiser executar os testes de integração completos com Github Actions no seu fork, você precisará adicionar estas variáveis de ambiente nas configurações do seu fork:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - token de acesso para DigitalOcean
    • CI_SSH_KEY - parte privada de uma chave ssh, disponível no DigitalOcean para suas instâncias, em formato codificado em base64 (ex.: cat id_rsa | base64 -w0 ; echo)
    • DIGITALOCEAN_SSH_KEY_IDS - ID no DigitalOcean de CI_SSH_KEY, veja isto para mais informações

    Testes de CI de PRs e forks

    Seus patches serão automaticamente testados via Github Actions. O resumo do teste é visível no Github no seu PR, detalhes podem ser encontrados nos testes vinculados.

    Entre em contato

    Você pode nos alcançar de várias maneiras:

    • @DevSecIO no Twitter
    • Lista de e-mails para perguntas e discussão geral: [email protected] [inscrever-se]
    • Lista de e-mails com anúncios de lançamentos (nenhuma postagem é possível aqui): [email protected] [inscrever-se]

    Contribuidores + Agradecimentos

    • 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

    Para a portabilidade original de chef-os-hardening para puppet:

    • Artem Sidorenko artem-sidorenko
    • Frank Kloeker eumel8

    Muito obrigado a todos!!

    Licença e Autor

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

    Licenciado sob a Apache License, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em

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

    Salvo quando exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído em uma base "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para os idiomas específicos que regem as permissões e limitações sob a Licença.

    Baixar ferramenta