
This chef cookbook proporciona numerosas configuraciones relacionadas con la seguridad, ofreciendo una protección base integral.
Este cookbook proporciona numerosas configuraciones relacionadas con la seguridad, ofreciendo una protección base integral.
Configura:
pam y pam_limitsNo:
['os-hardening']['components'][COMPONENT_NAME] - permite el control fino sobre qué componentes deben ejecutarse mediante la receta predeterminada. Consulta más detalles a continuación['os-hardening']['desktop']['enable'] = false
true si es un sistema de escritorio, es decir, Xorg, KDE/GNOME/Unity/etc['os-hardening']['network']['forwarding'] = false
true si este sistema requiere reenvío de paquetes (p. ej. Router), false en caso contrario['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
true si deseas que el comportamiento de anunciar y responder a ARP esté restringido, false en caso contrario['os-hardening']['env']['extra_user_paths'] = []
añade rutas adicionales a la variable PATH del usuario (por defecto está vacío).['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
donde está montada la raíz['os-hardening']['auth']['pw_max_age'] = 60
edad máxima de la contraseña['os-hardening']['auth']['pw_min_age'] = 7
edad mínima de la contraseña (antes de permitir cualquier otro cambio de contraseña)['os-hardening']['auth']['pw_warn_age'] = 7
número de días antes de que ocurra la edad máxima de la contraseña para advertir del cambio
inminente['os-hardening']['auth']['uid_min'] = 1000
límite inferior de UIDs asignados por useradd['os-hardening']['auth']['uid_max'] = 60000
límite superior de UIDs asignados por useradd['os-hardening']['auth']['gid_min'] = 1000
límite inferior de GIDs asignados por groupadd['os-hardening']['auth']['gid_max'] = 60000
límite superior de GIDs asignados por groupadd['os-hardening']['auth']['retries'] = 5
el número máximo de intentos de autenticación, antes de que la cuenta se bloquee durante un tiempo['os-hardening']['auth']['lockout_time'] = 600
tiempo en segundos que debe pasar, si la cuenta se bloqueó debido a demasiados intentos de autenticación fallidos['os-hardening']['auth']['timeout'] = 60
tiempo de espera de autenticación en segundos, por lo que el inicio de sesión saldrá si este tiempo pasa['os-hardening']['auth']['allow_homeless'] = false
true si se permite iniciar sesión a usuarios sin directorio home['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true si deseas utilizar una verificación de contraseñas fuerte en PAM usando passwdqc['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
establece cualquier línea de opciones (como cadena) que desees pasar a passwdqc['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
establece el nombre del cookbook del cual se obtiene la plantilla para el archivo /usr/share/pam-configs/passwdqc['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
establece el nombre del cookbook del cual se obtiene la plantilla para el archivo /usr/share/pam-configs/tally2['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
establece el nombre del cookbook del cual se obtiene la plantilla para el archivo /etc/pam.d/system-auth-ac['os-hardening']['security']['users']['allow'] = []
lista de cosas que un usuario puede hacer. Puede contener: change_user['os-hardening']['security']['kernel']['enable_module_loading'] = true
true si deseas poder cambiar los módulos del kernel una vez que el sistema está en ejecución (p. ej. modprobe, rmmod)['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
lista de módulos de sistemas de archivos del kernel que están en la lista negra para su carga (p. ej. no se utilizan y pueden desactivarse). Establece esto en [] para evitar completamente esta 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 si deseas reducir los bits SUID/SGID. Ya existe una lista de elementos que se buscan configurados, pero también puedes añadir los tuyos propios['os-hardening']['security']['suid_sgid']['blacklist'] = []
una lista de rutas a las que se les deben eliminar los bits SUID/SGID['os-hardening']['security']['suid_sgid']['whitelist'] = []
una lista de rutas que no deben tener alterados sus bits SUID/SGID['os-hardening']['security']['suid_sgid']['remove_from_unknown'] = false
true si deseas eliminar los bits SUID/SGID de cualquier archivo que no esté configurado explícitamente en una blacklist. Esto hará que cada ejecución de Chef busque a través de los sistemas de archivos montados bits SUID/SGID que no estén configurados en la lista negra predeterminada y del usuario. Si encuentra un bit SUID/SGID, se eliminará, a menos que este archivo esté en tu whitelist.['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
como remove_from_unknown anterior, solo que los bits SUID/SGID no se eliminan.
Aún buscará en los sistemas de archivos bits SUID/SGID, pero solo los imprimirá en tu registro. Esta opción solo se recomienda cuando configuras por primera vez remove_from_unknown para bits SUID/SGID, para que puedas ver los archivos que se están cambiando y realizar ajustes en tu whitelist y blacklist.['os-hardening']['security']['packages']['clean'] = true
elimina paquetes con problemas conocidos.['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
lista de paquetes a eliminar, por defecto eliminamos los siguientes paquetes:
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
establece en unmanaged si deseas dejar la configuración de selinux como está. Establece en enforcing para aplicar o permissive para SELinux permisivo.default.rb incluye otros componentes basados en los atributos de autodetección de ohai de tu sistema. P. ej. no ejecutar selinux en sistemas que no sean RHEL. Puedes anular este comportamiento y forzar que los componentes se ejecuten o no mediante el establecimiento de atributos en node['os-hardening']['components'] a nivel de anulación. Ejemplo
# algún archivo de atributos
# no incluir sysctl y auditd
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# forzar la inclusión de selinux
override['os-hardening']['components']['selinux'] = true
En la implementación actual, los diferentes componentes se ubican en las diferentes recetas. Consulta las recetas disponibles o default.rb para conocer los posibles nombres de componentes.
Añade las recetas a la run_list, debería ser la última:
"recipe[os-hardening]"
Configura los atributos:
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
Por favor, instala chef-dk, VirtualBox o VMware Workstation y Vagrant.
El linting se verifica con rubocop y foodcritic:
$ chef exec rake lint
.....
Las pruebas unitarias/de especificación se realizan con chefspec:
$ chef exec rake spec
.....
Las pruebas de integración se realizan con test-kitchen e inspec:
$ chef exec rake kitchen
.....
# o puedes usar kitchen directamente
$ kitchen test
Puedes habilitar las pruebas de tu fork en Travis CI. Por defecto obtendrás linting, pruebas de especificación y pruebas de integración con kitchen-dokken.
Las pruebas de integración con kitchen-dokken no cubren todo, ya que se ejecutan en el entorno de contenedores. Las pruebas de integración completas se pueden ejecutar usando DigitalOcean.
Si deseas tener pruebas de integración completas para tu fork, tendrás que añadir las siguientes variables de entorno en la configuración de tu fork:
DIGITALOCEAN_ACCESS_TOKEN - token de acceso para DigitalOceanCI_SSH_KEY - parte privada de alguna clave ssh, disponible en DigitalOcean para tus instancias, en forma codificada en base64 (p. ej. cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS - ID en DigitalOcean de CI_SSH_KEY, consulta esto para más informaciónEste cookbook se basa principalmente en guías de:
¡Gracias a todos!!
Consulta la guía de colaboradores.
Licenciado bajo la Apache License, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
Salvo que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulta la Licencia para conocer los permisos y limitaciones específicos bajo la Licencia.