Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
chef-os-hardening — This chef cookbook proporciona numerosas configuraciones relacionadas con la seguridad, ofreciendo una protección base integral. | Kitploit
Herramientas/GitHubGitHub/dev-sec/chef-os-hardening
Seguridad de Infraestructura en la NubeAuditoría de ConfiguraciónDevSecOpsAutenticación
GitHubdev-sec/chef-os-hardening

chef-os-hardening

This chef cookbook proporciona numerosas configuraciones relacionadas con la seguridad, ofreciendo una protección base integral.

Ver Repositorio
4521326hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web
Compartir

os-hardening (cookbook de Chef)

Supermarket Tests

Descripción

Este cookbook proporciona numerosas configuraciones relacionadas con la seguridad, ofreciendo una protección base integral.

Configura:

  • Configura la gestión de paquetes, p. ej. solo permite paquetes firmados
  • Elimina paquetes con problemas conocidos
  • Configura el módulo pam y pam_limits
  • Configuración del paquete de contraseñas shadow
  • Configura los permisos de las rutas del sistema
  • Desactiva los volcados de núcleo (core dumps) mediante límites suaves
  • Restringe los inicios de sesión de root a la consola del sistema
  • Establece SUIDs
  • Configura los parámetros del kernel mediante sysctl

No:

  • Actualiza los paquetes del sistema
  • Instala parches de seguridad

Requisitos

  • Chef >= 14.13.11

Plataforma

  • Ubuntu 20.04, 22.04, 24.04, 26.04
  • CentOS Stream 9, 10
  • AlmaLinux 8, 9, 10
  • Rocky Linux 8, 9, 10
  • Oracle Linux 8, 9, 10
  • Debian 13
  • Fedora 43, 44

Atributos

  • ['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:
    • xinetd (NSA, Capítulo 3.2.1)
    • inetd (NSA, Capítulo 3.2.1)
    • tftp-server (NSA, Capítulo 3.2.5)
    • ypserv (NSA, Capítulo 3.2.4)
    • telnet-server (NSA, Capítulo 3.2.2)
    • rsh-server (NSA, Capítulo 3.2.3)
  • ['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.

Control de los componentes incluidos

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

root@kitploit:~
# 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.

Uso

Añade las recetas a la run_list, debería ser la última:

root@kitploit:~
"recipe[os-hardening]"

Configura los atributos:

root@kitploit:~
"security" : {
  "kernel" : {
    "enable_module_loading" : true
  }
},

Pruebas locales

Pruebas locales

Por favor, instala chef-dk, VirtualBox o VMware Workstation y Vagrant.

El linting se verifica con rubocop y foodcritic:

root@kitploit:~
$ chef exec rake lint
.....

Las pruebas unitarias/de especificación se realizan con chefspec:

root@kitploit:~
$ chef exec rake spec
.....

Las pruebas de integración se realizan con test-kitchen e inspec:

root@kitploit:~
$ chef exec rake kitchen
.....
# o puedes usar kitchen directamente
$ kitchen test

Pruebas CI de forks

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 DigitalOcean
  • CI_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ón

Colaboradores + Agradecimientos

  • Dominik Richter arlimus
  • Bernhard Weisshuhn bkw
  • Christoph Hartmann chris-rock
  • Edmund Haselwanter ehaselwanter
  • Patrick Meier atomic111
  • Artem Sidorenko artem-sidorenko

Este cookbook se basa principalmente en guías de:

  • Arch Linux wiki, Sysctl hardening
  • Ubuntu Security/Features
  • NSA: Guide to the Secure Configuration of Red Hat Enterprise Linux 5
  • Deutsche Telekom, Group IT Security, Security Requirements (Alemán)

¡Gracias a todos!!

Contribuciones

Consulta la guía de colaboradores.

Licencia y Autor

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

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

root@kitploit:~
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.

Descargar herramienta