
This chef cookbook fornece inúmeras configurações relacionadas à segurança, oferecendo proteção base abrangente.
Este cookbook fornece inúmeras configurações relacionadas à segurança, oferecendo proteção base abrangente.
Ele configura:
pam e pam_limitsEle não irá:
['os-hardening']['components'][COMPONENT_NAME] - permite o controle fino sobre quais componentes devem ser executados por meio da receita padrão. Veja abaixo para mais detalhes['os-hardening']['desktop']['enable'] = false
true se este for um sistema desktop, ou seja, Xorg, KDE/GNOME/Unity/etc['os-hardening']['network']['forwarding'] = false
true se este sistema exigir encaminhamento de pacotes (ex: Roteador), false caso contrário['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
true se você quiser que o comportamento de anunciar e responder ao ARP seja restrito, false caso contrário['os-hardening']['env']['extra_user_paths'] = []
adicione caminhos adicionais à variável PATH do usuário (o padrão é vazio).['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
onde o root está montado['os-hardening']['auth']['pw_max_age'] = 60
idade máxima da senha['os-hardening']['auth']['pw_min_age'] = 7
idade mínima da senha (antes de permitir qualquer outra alteração de senha)['os-hardening']['auth']['pw_warn_age'] = 7
número de dias antes da idade máxima da senha para avisar sobre a mudança
iminente['os-hardening']['auth']['uid_min'] = 1000
limite inferior de UIDs atribuídos pelo useradd['os-hardening']['auth']['uid_max'] = 60000
limite superior de UIDs atribuídos pelo useradd['os-hardening']['auth']['gid_min'] = 1000
limite inferior de GIDs atribuídos pelo groupadd['os-hardening']['auth']['gid_max'] = 60000
limite superior de GIDs atribuídos pelo groupadd['os-hardening']['auth']['retries'] = 5
o número máximo de tentativas de autenticação, antes que a conta seja bloqueada por algum tempo['os-hardening']['auth']['lockout_time'] = 600
tempo em segundos que precisa passar, se a conta foi bloqueada devido a muitas tentativas de autenticação falhas['os-hardening']['auth']['timeout'] = 60
tempo limite de autenticação em segundos, então o login será encerrado se esse tempo passar['os-hardening']['auth']['allow_homeless'] = false
true se desejar permitir que usuários sem home façam login['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true se você quiser usar verificação de senha forte no PAM usando passwdqc['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
defina para qualquer linha de opções (como string) que você queira passar para o passwdqc['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
defina para o nome do cookbook do qual o template é obtido para o arquivo /usr/share/pam-configs/passwdqc['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
defina para o nome do cookbook do qual o template é obtido para o arquivo /usr/share/pam-configs/tally2['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
defina para o nome do cookbook do qual o template é obtido para o arquivo /etc/pam.d/system-auth-ac['os-hardening']['security']['users']['allow'] = []
lista de coisas que um usuário pode fazer. Pode conter: change_user['os-hardening']['security']['kernel']['enable_module_loading'] = true
true se você quiser ter permissão para alterar módulos do kernel enquanto o sistema está em execução (ex: modprobe, rmmod)['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
lista de módulos de sistema de arquivos do kernel que estão na lista negra para carregamento (ex: eles não são usados e podem ser desativados). Defina isso como [] para evitar completamente essa lista negra['os-hardening']['security']['kernel']['enable_sysrq'] = false['os-hardening']['security']['kernel']['enable_core_dump'] = false['os-hardening']['security']['suid_sgid']['enforce'] = true
true se você quiser reduzir os bits SUID/SGID. Já existe uma lista de itens que são pesquisados e configurados, mas você também pode adicionar os seus próprios['os-hardening']['security']['suid_sgid']['blacklist'] = []
uma lista de caminhos que devem ter seus bits SUID/SGID removidos['os-hardening']['security']['suid_sgid']['whitelist'] = []
uma lista de caminhos que não devem ter seus bits SUID/SGID alterados['os-hardening']['security']['suid_sgid']['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 Chef pesquise nos sistemas de arquivos montados por bits SUID/SGID que não estejam configurados na lista negra padrão e do usuário. Se encontrar um bit SUID/SGID, ele será removido, a menos que este arquivo esteja na sua whitelist.['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
como remove_from_unknown acima, apenas sem remover os bits SUID/SGID.
Ele ainda pesquisará os sistemas de arquivos em busca de 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.['os-hardening']['security']['packages']['clean'] = true
remove pacotes com problemas conhecidos.['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
lista de pacotes a remover, por padrão removemos os seguintes pacotes:
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
defina como unmanaged se você quiser deixar a configuração do selinux como está. Defina como enforcing para aplicar ou permissive para SELinux permissivo.default.rb inclui outros componentes com base nos atributos de autodetecção ohai do seu sistema. Ex: não execute selinux em sistemas não-RHEL. Você pode substituir esse comportamento e forçar componentes a serem executados ou não definindo atributos em node['os-hardening']['components'] no nível de override. Exemplo
# algum arquivo de atributos
# não incluir sysctl e auditd
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# forçar selinux a ser incluído
override['os-hardening']['components']['selinux'] = true
Na implementação atual, diferentes componentes estão localizados nas diferentes receitas. Veja as receitas disponíveis ou default.rb para possíveis nomes de componentes.
Adicione as receitas ao run_list, deve ser o último:
"recipe[os-hardening]"
Configure os atributos:
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
Por favor, instale chef-dk, VirtualBox ou VMware Workstation e Vagrant.
A verificação de lint é feita com rubocop e foodcritic:
$ chef exec rake lint
.....
Os testes de unidade/spec são feitos com chefspec:
$ chef exec rake spec
.....
Os testes de integração são feitos com test-kitchen e inspec:
$ chef exec rake kitchen
.....
# ou você pode usar o kitchen diretamente
$ kitchen test
Você pode habilitar testes do seu fork no Travis CI. Por padrão, você obterá lint, testes de spec e testes de integração com kitchen-dokken.
Os testes de integração com kitchen-dokken não cobrem tudo, pois são executados no ambiente de contêiner. Testes de integração completos podem ser executados usando DigitalOcean.
Se você quiser ter testes de integração completos para o seu fork, terá que adicionar as seguintes variáveis de ambiente nas configurações do seu fork:
DIGITALOCEAN_ACCESS_TOKEN - token de acesso para DigitalOceanCI_SSH_KEY - parte privada de alguma 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 do CI_SSH_KEY, veja isto para mais informaçõesEste cookbook é baseado principalmente em guias de:
Obrigado a todos!!
Veja diretriz do contribuidor.
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
http://www.apache.org/licenses/LICENSE-2.0
Salvo disposição em contrário por lei aplicável ou por acordo escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para os termos específicos que regem as permissões e limitações sob a Licença.