20 Commits

Author SHA1 Message Date
Charles N Wyble
3f5ca4c9a6 docs: add AGENTS.md with git commit guidelines
Add agent guidelines for AI assistants working on this repository:

- Document atomic commit requirements
- Specify conventional commit format with examples
- Require verbose, formatted commit messages
- Emphasize immediate commit/push behavior

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:08:39 -05:00
Charles N Wyble
0d7f079c21 docs: add validation section to README
Document the validate.sh script functionality:

- Add Validation section after SSL Stack components
- Describe script usage and invocation
- List validation checks performed:
  - Required top-level files and directories
  - Initializer directory structure
  - Apply script syntax
  - Path consistency between apply scripts and configs/scripts

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:07:23 -05:00
Charles N Wyble
48f6a6e29c feat: add repository validation script
Add comprehensive validation script (validate.sh) to verify repository
integrity and configuration consistency:

- Check required top-level files (classes/server/initializers, roles/*)
- Validate initializer directory structure (apply script exists)
- Verify apply script bash syntax with shellcheck fallback
- Validate path consistency between apply scripts and configs/scripts dirs
- Report all validation errors with file:line references

Run with: ./validate.sh

Exit codes: 0=pass, 1=validation errors found

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:07:05 -05:00
Charles N Wyble
dbe9e72969 fix(ldap-auth): remove reference to non-existent config file
Comment out LDAP configuration deployment as cloudron-ldap.conf
does not exist in the configs directory. Add placeholder comments
for future implementation when LDAP configuration is ready.

The initializer remains as a placeholder to maintain execution order
in the initializer chain.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:06:47 -05:00
Charles N Wyble
ab6583cc88 fix(system-config): correct relative paths from ConfigFiles to direct
Refactor all configuration file paths to use direct relative paths
instead of the ./ConfigFiles/ prefix that referenced KNELServerBuild
directory structure:

- ZSH/tsys-zshrc (was ConfigFiles/ZSH/)
- SMTP/aliases (was ConfigFiles/SMTP/)
- Syslog/rsyslog.conf (was ConfigFiles/Syslog/)
- DHCP/dhclient.conf (was ConfigFiles/DHCP/)
- SNMP/snmp-*.conf (was ConfigFiles/SNMP/)
- NetworkDiscovery/lldpd (was ConfigFiles/NetworkDiscovery/)
- Cockpit/disallowed-users (was ConfigFiles/Cockpit/)
- NTP/ntp.conf (was ConfigFiles/NTP/)

Also fix redirect operator (> to use proper cp syntax) in rsyslog,
dhclient, and snmp-sudo deployments.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:06:42 -05:00
Charles N Wyble
1cc9ba5830 fix(ssh-hardening): correct tsys-sshd-config path reference
Fix SSH configuration deployment to use the correct config filename:
- Change ./configs/sshd-config to ./configs/tsys-sshd-config
- Change ./configs/sshd-dev-config to ./configs/tsys-sshd-config

Both production and development environments now use the unified
tsys-sshd-config file to ensure consistent SSH hardening across
all deployment scenarios.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:06:35 -05:00
Charles N Wyble
be474d4a75 feat(oam): add LibreNMS agent deployment
Implement comprehensive check_mk agent deployment for LibreNMS monitoring:

- Create agent directory structure (/usr/lib/check_mk_agent/plugins, local, etc.)
- Deploy main check_mk_agent binary to /usr/bin
- Deploy distro script for OS detection
- Install systemd socket activation (check_mk.socket, check_mk@.service)
- Deploy monitoring plugins (smart, ntp-client, ntp-server, os-updates, postfix)
- Configure and enable check_mk socket for immediate monitoring

This enables centralised infrastructure monitoring through LibreNMS with
hardware health, NTP synchronisation, and mail queue visibility.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:06:20 -05:00
Charles N Wyble
ee9f391951 feat(security-hardening): implement SCAP-STIG compliance logic
Refactor apply script to implement comprehensive security hardening:

- Add GRUB bootloader permission hardening (root:root, mode 0400)
- Disable and remove autofs service per STIG requirements
- Deploy modprobe configurations for kernel module blacklisting
- Create STIG-compliant network protocol blacklist (dccp, rds, sctp, tipc)
- Create STIG-compliant filesystem blacklist (cramfs, freevxfs, hfs, etc.)
- Create USB storage blacklist for removable media control
- Deploy security banners (issue, issue.net, motd)
- Harden cron and at permission controls (cron.allow, at.allow)
- Fix typo in security-limits.conf destination path

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:06:03 -05:00
Charles N Wyble
0a54b1386d feat(dell-config): add Dell server utility scripts
Add Dell-specific server management scripts:

- fixeth.sh: Ethernet interface naming fix script for Dell
  servers that require consistent network interface naming
  after BIOS/firmware updates or hardware changes

- omsa.sh: Dell OpenManage Server Administrator installation
  script for hardware monitoring, health status, and
  out-of-band management capabilities

These scripts support Dell PowerEdge server operations in
the KNEL infrastructure, enabling hardware monitoring and
consistent network configuration.

Related: KNELServerBuild/ProjectCode/Dell/Server/
2026-02-17 16:33:45 -05:00
Charles N Wyble
f97ae29877 feat(salt-client): add Salt minion configuration for config management
Add Salt minion configuration for ongoing configuration management:

- salt-minion: Configuration file pointing to the Salt master
  at salt-master.knownelement.com with appropriate settings
  for the KNEL infrastructure

This enables the server to receive configuration management
updates, orchestration commands, and compliance enforcement
from the central Salt master after initial provisioning.

Part of the KNEL management stack: FetchApply → Salt → Ansible
2026-02-17 16:33:32 -05:00
Charles N Wyble
65d719112c feat(wazuh): add Wazuh security monitoring agent configuration
Add comprehensive Wazuh agent configuration for security monitoring:

- wazuh-agent.conf: Full XML configuration including:
  * Server connection to tsys-nsm.knel.net via TCP/1514
  * AES encryption for agent-server communication
  * Rootcheck module for rootkit and anomaly detection
  * Syscheck file integrity monitoring for critical paths
    (/etc, /usr/bin, /usr/sbin, /bin, /sbin)
  * Log collection from syslog, auth.log, kern.log, dmesg
  * Active response capability enabled
  * Environment/organization labels for asset management

The agent connects to the centralized Wazuh server for log
aggregation, intrusion detection, and compliance monitoring.

Related: KNELServerBuild/ProjectCode/Modules/Security/secharden-wazuh.sh
2026-02-17 16:33:22 -05:00
Charles N Wyble
8f44815d97 feat(security-hardening): add SCAP-STIG compliance configuration files
Add security hardening configuration files implementing SCAP-STIG
controls:

- sysctl-hardening.conf: 75 kernel security parameters covering:
  * IP forwarding and redirect controls
  * Source routing and martian packet logging
  * TCP SYN cookies and timestamps
  * ExecShield and ASLR settings
  * Ptrace scope restrictions
  * Unprivileged BPF and userns restrictions

- security-limits.conf: Resource limits for:
  * Core dump prevention (fork bomb protection)
  * Process count limits (4096 soft, 8192 hard)
  * File handle limits (1024 soft, 4096 hard)
  * Memory lock and file size restrictions

- issue, issue.net, motd: Security warning banners for local
  and network login

- modprobe/: Directory for kernel module blacklist configurations

These configs implement CIS Benchmark and DISA STIG requirements
for Linux server hardening.

Related: KNELServerBuild/ProjectCode/Modules/Security/secharden-scap-stig.sh
2026-02-17 16:32:14 -05:00
Charles N Wyble
429454ebc9 feat(unattended-upgrades): add automatic security update configuration
Add Debian unattended-upgrades configuration files for automatic
security patch deployment:

- 50unattended-upgrades: Main configuration specifying allowed
  origins (distro, security, ESM), package blacklist, cleanup
  settings for unused kernels/dependencies, syslog logging, and
  configurable reboot behavior

- auto-upgrades: Enablement settings for the automatic update
  service

This ensures servers receive security patches promptly without
manual intervention, reducing the window of vulnerability.

Related: KNELServerBuild/ProjectCode/Modules/Security/secharden-auto-upgrade.sh
2026-02-17 16:31:53 -05:00
Charles N Wyble
43d6003128 feat(2fa): add PAM and SSH configuration for Google Authenticator
Add configuration files required for two-factor authentication
via Google Authenticator:

- sshd-pam: PAM configuration integrating Google Authenticator
  with standard Unix authentication, using nullok for gradual
  rollout allowing users without 2FA to still authenticate

- sshd-2fa-config: SSH daemon configuration additions enabling
  ChallengeResponseAuthentication and KeyboardInteractive
  authentication methods required for 2FA flow

These configs support the KNEL security baseline requiring 2FA
for SSH access while maintaining backward compatibility during
user onboarding.

Related: KNELServerBuild/ProjectCode/Modules/Security/secharden-2fa.sh
2026-02-17 16:31:37 -05:00
1e506fed1d feat: Complete port of all KNELServerBuild components to FetchApply
- Add secharden-audit-agents functionality to security-hardening
- Create unattended-upgrades initializer for automatic security updates
- Port Dell-specific scripts (fixcpuperf, fixeth, omsa) to dell-config
- Port sslStackFromSource.sh to ssl-stack initializer (dev systems only)
- Create ldap-auth placeholder for future Cloudron integration
- Update server class to include all initializers
- Update security role to include unattended-upgrades
- Add build dependencies to packages for SSL stack compilation
- Update README with comprehensive documentation of all initializers

Now all components from KNELServerBuild are successfully ported to FetchApply,
including previously missed security modules, Dell server scripts, and RandD components.

Future migration path clear: Salt for ongoing management, Ansible for ComplianceAsCode.

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
2026-01-21 12:48:32 -05:00
c5a504f9c8 docs: Update mental model and documentation for tool responsibilities
- Add MENTALMODEL.md documenting architecture and tool responsibilities
- Clarify Salt is for ongoing configuration management and automation
- Clarify Ansible is for ComplianceAsCode deployment from github.com/ComplianceAsCode/content
- Update README.md to reflect correct understanding of tool purposes
- Update decision matrix for when to use each tool
- Document migration path and future service plans (Beszel, Netbird via Salt)

Establishes clear separation of concerns across the configuration management ecosystem.

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
2026-01-21 11:51:56 -05:00
afe61cae9d refactor: Remove librenms, add ansible/salt clients
- Remove all librenms references from initializers and configuration
- Keep tailscale as requested (remove netbird plans)
- Add ansible-core (already present) and salt-minion packages
- Create salt-client initializer for minion configuration
- Update roles to replace librenms-agent with salt-client
- Simplify oam initializer to only handle up2date script
- Update README to reflect new architecture and tools

Prepares infrastructure for migration to Salt configuration management
while maintaining tailscale for VPN connectivity.

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
2026-01-21 11:43:35 -05:00
0a7efe5303 Complete server class configurations
- Configure all server classes (physical, virtual, database, webserver, ntp-server, librenms, dev-workstation)
- Set appropriate initializers, modules, and roles for each class
- Define class-specific configurations based on server type
- Standardize configuration across all server types

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
2026-01-21 11:10:45 -05:00
09d93e37cd Initial port of KNELServerBuild to FetchApply framework
- Created base FetchApply directory structure with classes, initializers, modules, roles, and variables
- Ported SetupNewSystem.sh functionality to modular FetchApply structure
- Created server classes: physical, virtual, librenms, database, webserver, dev-workstation
- Implemented initializers for system-setup, packages, ssh-keys, and user-configuration
- Created modules for oam, system-config, ssh-hardening, and librenms-agent
- Defined security and monitoring roles
- Copied configuration templates from KNELServerBuild
- Updated README with comprehensive FetchApply usage instructions

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
2026-01-21 11:05:17 -05:00
c82ab1b7db Initial commit 2025-07-18 18:51:43 +00:00