Commit Graph
14 Commits
Author SHA1 Message Date
Charles N Wyble 0807611efe feat: add FIM, comprehensive audit logging, SSH client-only for CIS/FedRAMP/CMMC
Security enhancements for tier0 infrastructure access:
- Add AIDE for file integrity monitoring (CIS 1.4, FedRAMP AU-7, CMMC AU.3.059)
- Add comprehensive audit rules covering identity, network, boot, and privilege escalation
- Remove SSH server (openssh-server), add SSH client only (openssh-client)
- Add audispd-plugins for audit event processing
- Update security-hardening.sh with configure_fim() and configure_ssh_client()
- Update compliance tests for FIM, audit, and client-only architecture

Package changes:
- Remove: openssh-server, iptables
- Add: openssh-client, aide, aide-common, audispd-plugins

No inbound services - outbound VPN/SSH/RDP only for accessing privileged workstation.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-02-17 12:24:30 -05:00
Charles N Wyble 1396751de0 test: add SSH security tests for FR-006 compliance
- Test SSH password authentication is disabled
- Test SSH root login is disabled

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:56:05 -05:00
Charles N Wyble c2a1481aab docs: add destructive git operation safety rules
- Never run destructive ops (reset --hard, rm, checkout/restore) without explicit user instruction
- Never amend commits without explicit written approval

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:46:59 -05:00
Charles N Wyble de5793e0df docs: add git safety rules for quoting paths and non-interactive rebase
- Quote paths with brackets/parentheses to prevent shell expansion
- Use GIT_EDITOR=: GIT_SEQUENCE_EDITOR=: for non-interactive rebase

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:46:07 -05:00
Charles N Wyble f15dcda6ff docs: add commit hygiene rules to AGENTS.md
- Double-check git status before any commit
- Delete unused/obsolete files when refactoring

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:45:35 -05:00
Charles N Wyble 0b9ede5f84 fix: resolve all shellcheck warnings and security issues
- fix(shellcheck): SC2016 in encryption-setup.sh - remove non-expanding $(blkid...)
- fix(shellcheck): SC1091 in firewall-setup.sh and security-hardening.sh - add disable directives
- security: SSH PasswordAuthentication yes -> no (PRD FR-006 violation)
- fix: date expansion in encryption-validation.sh heredoc
- docs: create SDLC.md with TDD workflow and security requirements
- docs: update AGENTS.md to reference SDLC.md
- chore: update STATUS.md with build completion
- chore: minor build-iso.sh output formatting

All 78 tests pass (63 run, 15 skip for libvirt).
Zero shellcheck warnings.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:34:11 -05:00
Charles N Wyble 1fee995c3b docs: update STATUS.md with session completion status
Update STATUS.md to reflect completed work:

Changes:
- Status changed to "READY FOR TESTING"
- All 7 commits from session listed
- Test coverage updated to 78 tests
- Secure Boot packages marked as added
- VM test framework marked as created
- Shellcheck warnings marked as fixed
- Next actions clarified (user logout/login required)

Blockers clearly identified:
- User not in libvirt group
- ISO not built

Metrics updated to reflect session progress.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:20:37 -05:00
Charles N Wyble 274ad90731 docs: track JOURNAL.md in version control
Add JOURNAL.md to version control. This file serves as
the AI agent's long-term memory and learning repository.

Purpose:
- Capture insights and patterns discovered
- Document lessons learned from sessions
- Record architectural decision records (ADRs)
- Enable knowledge persistence across sessions

Format:
- Append-only (never delete or modify existing entries)
- Dated entries with clear sections
- Cross-references to related files

This file is maintained by AI agents working on the project
and provides context for future sessions.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:12:54 -05:00
Charles N Wyble 20ef06a020 feat: add test:system command to run.sh
Extend the test runner to support system-level tests
for VM boot verification and runtime testing.

Changes:
- Add test:system command for system tests only
- Update main test command to include system tests
- System tests cover boot, Secure Boot, and FDE

New command: ./run.sh test:system

This allows running system tests independently when
prerequisites (libvirt, ISO) are available.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:12:35 -05:00
Charles N Wyble b3d02d0c14 docs: update README.md and AGENTS.md for new files
Update documentation to reflect new project structure
and files created for test coverage enhancement.

README.md:
- Add STATUS.md link to documentation table
- Add JOURNAL.md link to documentation table
- STATUS.md: Manager-facing status report
- JOURNAL.md: AI agent memory and ADRs

AGENTS.md:
- Document STATUS.md purpose and maintenance
- Document JOURNAL.md purpose (AI memory, ADRs)
- Add tests/system/ directory to project structure
- Clean up obsolete file references
- Update documentation structure section

These changes ensure all team members (human and AI)
understand the purpose and location of key files.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:12:20 -05:00
Charles N Wyble d00f3c9f02 fix: resolve shellcheck warnings in shell scripts
Improve code quality by addressing shellcheck warnings
across security-critical scripts.

src/security-hardening.sh:
- Add shellcheck directive for SC2120/SC2119
- Function configure_password_policy() accepts optional args
- Directive documents intentional usage pattern

src/firewall-setup.sh:
- Fix function argument passing in main()
- Properly pass arguments to configure_firewall()

config/hooks/installed/encryption-setup.sh:
- Consolidate echo commands to fix SC2129
- Use single redirect for multiple writes

Remaining warnings are non-critical:
- SC1091: Source files exist at runtime in Docker container
- SC2016: Intentional single quotes for sed pattern

No functional changes - purely code quality improvements.

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:12:01 -05:00
Charles N Wyble acf3f934fd test: add VM boot test framework and system tests
Create comprehensive system testing infrastructure for
runtime verification of the KNEL-Football ISO.

test-iso.sh (VM test framework):
- VM creation via virt-install with UEFI support
- Prerequisite checking (libvirt group, virsh, ISO)
- Boot test automation with timeout handling
- Secure Boot and FDE test commands
- Console access via virsh console
- Color-coded logging for clarity

tests/system/boot_test.bats (14 tests):
- Libvirt availability and access verification
- ISO existence and size validation
- SHA256 and MD5 checksum verification
- test-iso.sh framework validation

tests/system/secureboot_test.bats (10 tests):
- Secure Boot package verification in package list
- UEFI/GPT partitioning configuration tests
- LUKS2 encryption configuration validation

tests/system/fde_test.bats (23 tests):
- Encryption setup script existence tests
- LUKS2 configuration validation
- AES-256-XTS cipher verification
- 512-bit key length verification
- Initramfs and crypttab configuration
- Helper scripts creation validation
- Password policy enforcement tests
- Runtime FDE test placeholders (skip if no VM)

Test execution:
- All tests pass with appropriate skips when
  prerequisites (libvirt group, ISO) are not met
- Zero failures in static analysis portion

Total: 47 new system tests

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:11:40 -05:00
Charles N Wyble 6929ecfbc9 feat: add Secure Boot support packages
Add UEFI Secure Boot packages to enable booting on systems
with Secure Boot enabled:

- shim-signed: Microsoft-signed shim bootloader
- grub-efi-amd64-signed: Signed GRUB EFI bootloader
- grub-efi-amd64-bin: GRUB EFI binaries
- efibootmgr: EFI boot manager utility

This is mandatory for modern UEFI systems that ship with
Secure Boot enabled by default.

Compliance: UEFI Secure Boot specification

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:11:19 -05:00
Charles N Wyble 497da0a6b3 docs: add STATUS.md manager report file
Add STATUS.md as a manager-facing status report that provides
a quick-glance view of project health. This file is maintained
by the AI agent and read by humans.

Contents:
- Executive summary with current status
- What's working vs broken
- Current blockers
- Test coverage analysis
- Next actions and metrics

Related: JOURNAL.md for AI memory

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 10:10:33 -05:00