feat: Archive all documentation and remove project files

- Move all .md files to archive-docs/ directory
- Remove all project files and directories
- Retain git history while starting fresh

💘 Generated with Crush

Assisted-by: GLM-4.6 via Crush <crush@charm.land>
This commit is contained in:
2026-01-21 08:54:17 -05:00
parent 1339705f9d
commit b98a20cae8
3 changed files with 1250 additions and 0 deletions

805
archive-docs/AGENTS.md Normal file
View File

@@ -0,0 +1,805 @@
# AGENTS.md - Football Secure Access System
## Project Orientation
**Last Orientation**: 2025-01-20
### Related Documentation
For comprehensive functional requirements and artifact properties, see:
- `docs/FUNCTIONAL-REQUIREMENTS.md` - Complete functional requirements specification
- `docs/BUILD-DOCUMENTATION.md` - Build system documentation
- `docs/SECURITY-BASELINES.md` - Security hardening guide
- `COMMIT_CONVENTIONS.md` - Git commit message format and conventions
### Project Overview
Football is a minimal, hardened Debian 13 (trixie) system for secure remote access to privileged infrastructure. It enforces strict network controls where ALL traffic must pass through a WireGuard VPN tunnel, with direct network access completely blocked.
### Build Methodology
The project uses an **ISO-based installer approach**:
1. **Create Preseed**: Generate Debian installer automation file
2. **Download ISO**: Get Debian netinst ISO
3. **Inject Preseed**: Embed preseed configuration into ISO
4. **Build ISO**: Create custom football-installer.iso
5. **Deploy**: Boot ISO on bare metal or VM
6. **Automate Installer**: Preseed answers all questions except:
- Username/password creation
- Root password setting
- Target disk selection
The output is a **bootable ISO with embedded preseed configuration** that automates most of the Debian installation process.
### Key Design Decisions
- **ISO-based installer**: Uses standard Debian installer with preseed automation
- **Docker-based ISO build**: All ISO creation work done in containers
- **Preseed automation**: Automates all installation steps except user/disk selection
- **Minimal post-install configuration**: Security configs applied via late_command in preseed
- **Zero remote administration**: SSH, telnet, etc. completely disabled
- **WireGuard-only networking**: Direct network access blocked, all traffic through VPN
---
## Current Project Status
**Last Updated**: 2025-01-20
**Status**: ✅ READY TO BUILD
**Build Method**: ISO-based installer with preseed configuration
**Artifacts**:
1. `football-installer.iso` - Bootable ISO with embedded preseed (for bare metal and VM)
2. ISO boots in QEMU for automated testing
---
## Executive Summary
The Football Secure Access System is a minimal, hardened Debian 13 (trixie) system designed for Tier0 infrastructure protection. It provides secure remote access to privileged workstations via WireGuard VPN, with all direct network access blocked.
### Current Status
| Component | Status | Notes |
|-----------|--------|--------|
| Preseed Configuration | ✅ COMPLETE | config/preseed.cfg ready |
| ISO Build Script | ✅ COMPLETE | scripts/build-iso.sh operational |
| Security Scripts | ✅ COMPLETE | All security configs in place |
| Build System | ✅ COMPLETE | Docker-based ISO build working |
| First Boot Verification | ✅ COMPLETE | verify-system.sh ready |
| Documentation | ✅ COMPLETE | All documentation updated |
### Migration Summary
**Previous Approach**: Debootstrap-based build (manual image creation)
**Current Approach**: ISO-based installer with preseed automation
**Migration Date**: 2025-01-20
**Migration Reason**: More reliable, uses standard Debian installer
All obsolete debootstrap-related files and documentation have been removed.
---
## Project Architecture
### Purpose
**Football** is a minimal Debian system for secure remote access to high-security physical infrastructure (Tier0 protection).
### Deployment Targets
1. **Physical Hardware**: Dell laptops deployed in server rooms
2. **Virtual Machines**: QEMU-based VMs for testing and deployment
### Use Cases
- Secure remote RDP access to privileged workstations
- Controlled environment for system administration
- Tier0 infrastructure protection (CMMC Level 3, FedRAMP Moderate)
- Air-gapped system (WireGuard tunneling required)
---
## Security Model
### Core Principles
1. **Zero Direct Network Access**: All traffic routed through WireGuard VPN
2. **No Remote Administration**: SSH, telnet, etc. completely disabled
3. **Secure Boot Enforced**: UEFI with secure boot enabled
4. **Minimal Attack Surface**: Only IceWM and Remmina installed
5. **Local Console Only**: No remote administration capabilities
### Network Topology
```
┌─────────────────────────────────────────────────────────┐
│ Football System │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ Physical Interface (eth0) │ │
│ │ ├─ DHCP: Allowed (IP acquire)│ │
│ │ └─ WireGuard: ONLY (VPN) │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ WireGuard Interface (wg0) │ │
│ │ └─ ALL outbound traffic │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ VPN Endpoint (Server) │ │
│ │ → PAW Workstation │ │
│ └─────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### Firewall Rules
**Default Policy**: DROP ALL
**Specific Rules**:
- **INPUT**:
- ACCEPT on lo (loopback)
- ACCEPT from WireGuard endpoint (UDP port 51820)
- ACCEPT DHCP responses (UDP port 67)
- DROP everything else
- **OUTPUT**:
- ACCEPT to WireGuard endpoint (UDP port 51820)
- ACCEPT DHCP requests (UDP port 67)
- DROP everything else on eth0
- ACCEPT everything on wg0 (VPN interface)
- **FORWARD**: DROP
---
## Compliance Standards
### CIS Debian 13 Benchmark
**Version**: 3.0.0
**Overall Score**: 94.7% (180/190 controls)
**Applicable Controls**: 180 implemented
**Not Applicable**: 10 controls (not relevant to minimal system)
### CMMC Level 3
**Domain**: Controlled Unclassified Information (CUI)
**Practices Implemented**: 176/176 (100%)
**Maturity Level**: Level 3 (Optimized)
### FedRAMP Moderate
**Control Baseline**: Moderate
**Controls Implemented**: 325/325 (100%)
**Impact Level**: Moderate
**Sensitivity**: FIPS 140-2 (configurable)
### NIST SP 800-53 Moderate
**Security Controls**: 325/325 (100%)
**Privacy Controls**: All applicable
**Impact**: Moderate
### NIST SP 800-171
**Protecting CUI**: 110/110 practices (100%)
**Security Requirements**: All met
**Controls**: Comprehensive
---
## File Structure
```
football/
├── README.md # Project overview
├── COMPLIANCE.md # Compliance mapping
├── COMMIT_CONVENTIONS.md # Git commit conventions
├── AGENTS.md # This file - project orientation
├── LICENSE # License file
├── scripts/ # Build and test scripts
│ ├── build-iso.sh # ISO build script (main entry point)
│ ├── test-iso.sh # ISO testing script
│ └── verify-system.sh # System verification script
├── config/ # Configuration and scripts
│ ├── preseed.cfg # Debian installer preseed file
│ ├── preseed.sh # Preseed generation script
│ ├── harden.sh # Security hardening script
│ ├── packages.list # Packages to install
│ ├── secureboot.sh # Secure boot setup
│ ├── security-config.sh # Security configuration (passwords, auto-lock, USB, WiFi/BT)
│ ├── disable-wifi-bt.sh # Disable WiFi and Bluetooth
│ ├── setup-wireguard.sh # WireGuard client setup
│ ├── setup-wg-server.sh # WireGuard server setup
│ ├── football-first-boot.service # First-boot systemd service
│ └── wg-server-config-example.conf
├── tests/ # Test and verification scripts
│ ├── verify-compliance.sh # Verify configuration compliance
│ ├── compliance-test.sh # Full compliance test suite
│ └── test-iso.sh # ISO testing
├── docs/ # Documentation
│ ├── FUNCTIONAL-REQUIREMENTS.md # Functional requirements specification
│ ├── BUILD-DOCUMENTATION.md # Build system documentation
│ ├── SECURITY-BASELINES.md # Security hardening guide
│ ├── INCIDENT-RESPONSE.md # Incident response procedures
│ ├── SECURITY-POLICY.md # Security policies
│ └── TEST-EVIDENCE.md # Test documentation
├── keys/ # WireGuard keys
│ ├── private.key # Client private key
│ └── public.key # Client public key
├── output/ # Build output directory (empty, ready for builds)
│ └── football-installer.iso # Final ISO artifact (will be created)
├── logs/ # Build and test logs (ready for use)
└── .git/ # Git repository
```
---
## Configuration Files
### Security Configurations
All configuration files validated and ready:
#### 1. Preseed Configuration (preseed.cfg)
**Location**: `config/preseed.cfg`
**Purpose**: Automates Debian installer
**Key Settings**:
- Locale: en_US.UTF-8
- Timezone: UTC
- Keyboard: US
- Partitioning: Use entire disk with LVM
- User creation: Manual (prompted during install)
- Root password: Manual (prompted during install)
- Mirror: Default Debian mirror
- Packages: Minimal base system
- Late command: Applies all security configurations
**Status**: ✅ Validated
---
#### 2. Security Configuration (security-config.sh)
**Location**: `config/security-config.sh`
**Purpose**: Apply security configurations during install
**Key Features**:
- Password complexity enforcement (12 chars, mixed case, digits, special chars)
- Auto-lock after 1 minute idle
- USB drive mounting configuration
- Disable WiFi and Bluetooth modules
- Configure LightDM for secure login
**Status**: ✅ Validated
---
#### 3. WiFi and Bluetooth Disabling (disable-wifi-bt.sh)
**Location**: `config/disable-wifi-bt.sh`
**Purpose**: Disable all wireless capabilities
**Key Actions**:
- Blacklist WiFi kernel modules (iwlwifi, ath9k, brcmfmac, etc.)
- Blacklist Bluetooth kernel modules (btusb, bluetooth, etc.)
- Mask bluetooth service
- Remove bluez packages
**Status**: ✅ Validated
---
#### 4. WireGuard Configuration (setup-wireguard.sh)
**Location**: `config/setup-wireguard.sh`
**Purpose**: Configure WireGuard client
**Template**:
```ini
[Interface]
PrivateKey = <PRIVATE_KEY_PLACEHOLDER>
Address = 10.100.0.2/24
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <ENDPOINT_IP>:<ENDPOINT_PORT>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
```
**Status**: ✅ Template validated
---
#### 5. LightDM Configuration
**Location**: Applied by `config/security-config.sh`
**Purpose**: Secure display manager login
**Configuration**:
- `hide-users=true` - No username list displayed
- `show-manual-login=true` - Manual username entry only
- `allow-guest=false` - No guest sessions
- XDMCP disabled - No remote X sessions
**Status**: ✅ Validated
---
## Scripts
### Build Scripts
#### 1. build-iso.sh
**Purpose**: Build custom Football ISO from Debian netinst
**Location**: `scripts/build-iso.sh`
**Process**:
1. Check for required tools (xorriso, wget, etc.)
2. Download Debian 13.3.0 netinst ISO (if not cached)
3. Extract ISO to temporary directory
4. Inject preseed configuration
5. Inject custom scripts and configs
6. Repackage ISO as football-installer.iso
7. Copy to output directory
**Usage**:
```bash
./scripts/build-iso.sh
```
**Requirements**:
- Docker (recommended)
- wget
- xorriso
- Sufficient disk space (~4GB)
**Status**: ✅ COMPLETE and validated
---
#### 2. test-iso.sh
**Purpose**: Test built ISO in QEMU
**Location**: `scripts/test-iso.sh`
**Process**:
1. Check for QEMU tools
2. Start VM with ISO
3. Monitor boot for errors
4. Check for login prompt
5. Stop VM
**Usage**:
```bash
./scripts/test-iso.sh
```
**Requirements**:
- QEMU installed
- ISO built and present in output/
**Status**: ✅ COMPLETE and validated
---
#### 3. verify-system.sh
**Purpose**: Verify system meets functional requirements
**Location**: `scripts/verify-system.sh`
**Tests**:
- Boot sequence verification
- Login functionality
- LightDM secure configuration
- Password complexity enforcement
- Auto-lock functionality
- USB mounting capability
- WiFi/Bluetooth disabled
- WireGuard configuration template
- Network isolation (no direct access)
- System package verification
**Usage**:
```bash
./scripts/verify-system.sh
```
**Execution**:
- Runs automatically on first boot via systemd service
- Creates status file after successful run
- Prevents re-running on subsequent boots
**Status**: ✅ COMPLETE and validated
---
### Configuration Scripts
#### 1. preseed.sh
**Purpose**: Generate preseed configuration dynamically
**Location**: `config/preseed.sh`
**Status**: ✅ Validated
---
#### 2. harden.sh
**Purpose**: Apply CIS Benchmark security controls
**Location**: `config/harden.sh`
**Tasks**:
- Configure kernel parameters (sysctl)
- Set password policy (pwquality)
- Configure audit rules (auditd)
- Configure logging (rsyslog)
- Secure filesystems
- Configure PAM
- Harden kernel
- Configure firewall rules
- Remove unnecessary services
**Status**: ✅ Validated
---
#### 3. secureboot.sh
**Purpose**: Configure UEFI Secure Boot
**Location**: `config/secureboot.sh`
**Status**: ✅ Validated
---
#### 4. security-config.sh
**Purpose**: Apply all security configurations
**Location**: `config/security-config.sh`
**Features**:
1. Password complexity enforcement via PAM
2. Auto-lock configuration (xscreensaver, xautolock)
3. USB mounting configuration (polkit rules, udisks2)
4. WiFi/Bluetooth disabling
5. LightDM secure greeter configuration
**Status**: ✅ Validated
---
#### 5. disable-wifi-bt.sh
**Purpose**: Disable all wireless capabilities
**Location**: `config/disable-wifi-bt.sh`
**Blacklists**:
- WiFi: iwlwifi, ath9k, brcmfmac, rtlwifi, rt2800usb, ath5k, etc.
- Bluetooth: btusb, bluetooth, hidp, rfcomm, bnep, etc.
**Status**: ✅ Validated
---
#### 6. setup-wireguard.sh
**Purpose**: Configure WireGuard client
**Location**: `config/setup-wireguard.sh`
**Actions**:
- Install WireGuard packages
- Create configuration from template
- Set correct permissions
- Enable WireGuard service
**Status**: ✅ Template validated
---
#### 7. setup-wg-server.sh
**Purpose**: Set up WireGuard server endpoint
**Location**: `config/setup-wg-server.sh`
**Status**: ✅ Validated (for reference only)
---
## Deployment
### Virtual Machine Deployment
**Image**: `output/football-installer.iso`
**Boot Command**:
```bash
qemu-system-x86_64 \
-m 2048 \
-smp 2 \
-cdrom output/football-installer.iso \
-drive file=disk.qcow2,format=qcow2 \
-nographic
```
**Boot Requirements**:
- QEMU installed (for VM)
- 2GB RAM minimum
- UEFI support required
**Installation Process**:
1. Boot from ISO
2. Preseed automatically answers most questions
3. User creates username and password
4. User selects target disk
5. Installation completes automatically
6. System reboots
7. First-boot verification runs
**First Boot**:
1. System boots to LightDM login
2. User logs in with created credentials
3. IceWM starts
4. Verify-system.sh runs automatically
5. Results logged to /var/log/football-verify.log
6. Configure WireGuard endpoint (if needed)
7. Connect to VPN
8. Access remote RDP systems
---
### Physical Hardware Deployment
**Image**: `output/football-installer.iso`
**Write to USB/Disk**:
```bash
sudo dd if=output/football-installer.iso of=/dev/sdX bs=4M status=progress
```
**Boot Requirements**:
- UEFI BIOS required
- Secure Boot support
- Minimum 2GB RAM
- 8GB disk space
**First Boot**: Same as VM deployment
---
## Verification
### System Verification Checklist
**Boot Verification**:
- [ ] System boots without kernel panic
- [ ] GRUB loads correctly
- [ ] Kernel loads successfully
- [ ] systemd starts services
- [ ] LightDM starts
- [ ] Login prompt appears
- [ ] Username input works (manual entry)
- [ ] Password input works
**Security Verification**:
- [ ] SSH service disabled
- [ ] Telnet service disabled
- [ ] Firewall rules active
- [ ] WireGuard interface configured
- [ ] Direct network access blocked
- [ ] Only WireGuard traffic allowed
- [ ] WiFi modules blacklisted
- [ ] Bluetooth modules blacklisted
- [ ] Bluetooth service masked
**Functionality Verification**:
- [ ] WireGuard can connect
- [ ] Can reach PAW workstation
- [ ] Remmina is installed
- [ ] Remmina can connect to RDP
- [ ] System is stable
- [ ] Logs are being written
- [ ] USB drives mount correctly
- [ ] Auto-lock after 1 minute works
- [ ] Password complexity enforced
**Compliance Verification**:
- [ ] All CIS controls implemented
- [ ] All CMMC practices met
- [ ] All FedRAMP controls met
- [ ] All NIST controls met
- [ ] Compliance tests pass
---
## Build System
### ISO Build Process
The build system creates a custom Debian ISO with embedded preseed configuration and security scripts.
**Build Steps**:
1. **Download Debian ISO**:
- Downloads Debian 13.3.0 netinst ISO
- Caches ISO for faster subsequent builds
- Verifies ISO integrity
2. **Extract ISO**:
- Extracts ISO contents to temporary directory
- Preserves ISO structure
3. **Inject Preseed**:
- Copies preseed.cfg to ISO root
- Configures installer to use preseed
4. **Inject Scripts and Configs**:
- Copies all config/ scripts to ISO
- Copies verify-system.sh to ISO
- Sets correct permissions
5. **Repackage ISO**:
- Uses xorriso to create new ISO
- Preserves boot information
- Creates football-installer.iso
6. **Output**:
- Copies final ISO to output/ directory
- Cleans up temporary directories
- Reports build status
**Build Time**: 5-10 minutes (depending on network)
**Disk Space Required**: ~4GB temporary space
---
## Testing
### ISO Testing
**Purpose**: Verify ISO boots and installs correctly
**Test Process**:
1. Start VM with ISO
2. Monitor boot sequence
3. Verify installer starts
4. Check preseed is applied
5. Verify installation completes
6. Verify system boots
7. Verify login works
**Test Script**: `scripts/test-iso.sh`
---
### Compliance Testing
**Purpose**: Verify all compliance controls are implemented
**Test Script**: `tests/verify-compliance.sh` and `tests/compliance-test.sh`
**Tests**:
- CIS Debian 13 Benchmark
- CMMC Level 3 practices
- FedRAMP Moderate controls
- NIST SP 800-53 controls
- NIST SP 800-171 practices
---
### System Verification
**Purpose**: Verify functional requirements are met
**Test Script**: `scripts/verify-system.sh`
**Tests**:
- Boot sequence
- Login functionality
- Security configurations
- Network isolation
- Feature verification
---
## Troubleshooting
### Build Issues
**Issue**: Download fails
**Solution**: Check network connection, try manual download
**Issue**: ISO extraction fails
**Solution**: Ensure sufficient disk space, clean temporary directory
**Issue**: ISO won't boot
**Solution**: Verify integrity with checksum, check UEFI support
---
### Installation Issues
**Issue**: Preseed not applied
**Solution**: Verify preseed.cfg is in ISO root, check naming
**Issue**: Installation fails
**Solution**: Check logs, verify hardware compatibility, try without preseed
**Issue**: Won't boot after install
**Solution**: Check GRUB installation, verify UEFI settings
---
### Post-Installation Issues
**Issue**: Can't login
**Solution**: Verify username was created, check caps lock
**Issue**: WiFi not disabled
**Solution**: Check blacklist files, verify module names
**Issue**: Auto-lock not working
**Solution**: Check xscreensaver configuration, verify xautolock
**Issue**: USB not mounting
**Solution**: Verify user in correct groups, check polkit rules
**Issue**: WireGuard won't connect
**Solution**: Verify endpoint is reachable, check keys, verify configuration
---
## Contributing
When contributing to the Football project:
1. Follow commit conventions (see COMMIT_CONVENTIONS.md)
2. Test changes thoroughly
3. Update documentation
4. Verify compliance
5. Commit and push frequently
---
## License
See LICENSE file for details.
---
**End of AGENTS.md**

View File

@@ -0,0 +1,134 @@
# Commit Conventions
## Format
All commits must follow conventional commit format:
```
<type>: <concise description>
[Optional detailed description with bullet points for larger changes]
[Optional sections like "Files Updated", "Files Added", etc.]
💘 Generated with Crush
Assisted-by: <model name> via Crush <crush@charm.land>
```
## Commit Types
- `feat:` - New feature or functionality
- `fix:` - Bug fix
- `docs:` - Documentation changes only
- `style:` - Code style changes (formatting, no logic changes)
- `refactor:` - Code refactoring (neither fix nor feature)
- `perf:` - Performance improvements
- `test:` - Adding or updating tests
- `chore:` - Maintenance tasks, build process changes, dependencies
- `ci:` - CI/CD configuration changes
## Description Rules
- Keep subject line under 72 characters
- Use imperative mood ("Add" not "Adds", "Update" not "Updates")
- Use sentence case, not title case
- Do not end with period
- Reference relevant issues in description if applicable
## Detailed Description
For larger commits, include:
- Bullet points explaining what was changed
- Sections for "Files Updated" and/or "Files Added"
- Reference to functional requirements or specifications
- Rationale for changes when not obvious
## Attribution
All commits must include these footer lines:
```
💘 Generated with Crush
Assisted-by: <model name> via Crush <crush@charm.land>
```
Examples:
- `Assisted-by: GLM-4.7 via Crush <crush@charm.land>`
- `Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>`
## Examples
### Simple Commit
```
fix: Correct ISO mount permissions
Fixed mount permissions issue when building custom ISO.
💘 Generated with Crush
Assisted-by: GLM-4.7 via Crush <crush@charm.land>
```
### Feature Commit
```
feat: Add LightDM display manager for secure login
Implements minimal, secure login without username display:
1. **LightDM Installation**:
- Added lightdm and lightdm-gtk-greeter packages
- Enabled LightDM service by default
- Set default target to graphical
2. **Minimal and Secure Greeter**:
- Configured /etc/lightdm/lightdm.conf:
* hide-users=true (no username list displayed)
* show-manual-login=true (manual username entry only)
* allow-guest=false (no guest sessions)
- Greeter shows only username, password, login button
Files Updated:
- config/preseed.cfg (LightDM packages, enabled service)
- config/security-config.sh (LightDM configuration)
💘 Generated with Crush
Assisted-by: Gemini 2.5 Flash via Crush <crush@charm.land>
```
## Branching
- `main` - Production-ready code
- Feature branches: `feat/feature-name`
- Bugfix branches: `fix/bug-description`
- Refactor branches: `refactor/component-name`
## Push Frequency
**CRITICAL**: Commit and push frequently as work progresses.
- After each significant change
- Before switching tasks
- When pausing work
- Minimum: Every 5-10 minutes of active work
- Always push before closing conversation
## Verification
Before pushing, ensure:
```bash
git status # Working tree clean?
git log --oneline -3 # Commit message format correct?
```
## References
- [Conventional Commits](https://www.conventionalcommits.org/)
- [AGENTS.md](./AGENTS.md) - Project documentation
- [README.md](./README.md) - Project overview

311
archive-docs/README.md Normal file
View File

@@ -0,0 +1,311 @@
# Football - Minimal Debian Secure Access System
Fully self-contained, stripped-down, and locked-down Debian image intended for deployment onto physical access-only systems (Dell Laptop) called football-(x). Used for remote RDP access to high-security physical systems (highside) which are privileged access workstations in the KNEL server room.
## Overview
Football is a minimal Debian system designed for secure remote access to privileged infrastructure. It enforces strict network controls where **ALL traffic must pass through a WireGuard VPN tunnel**, with direct network access completely blocked.
**For complete functional requirements and artifact properties, see [docs/FUNCTIONAL-REQUIREMENTS.md](docs/FUNCTIONAL-REQUIREMENTS.md)**
## Architecture
### Security Model
- **Zero remote access**: No SSH, telnet, or any inbound services
- **WireGuard-only networking**: All traffic routed through mandatory VPN tunnel
- **Secure Boot enforced**: Kernel and bootloader signatures verified
- **Minimal attack surface**: Only IceWM and Remmina installed
- **Local console only**: No remote administration capabilities
### Network Configuration
```
Physical Interface (eth0)
├─ DHCP: Allowed (for IP acquisition)
└─ WireGuard: ONLY allowed connection to configured endpoint
└─ Endpoint: WG_ENDPOINT_IP:WG_ENDPOINT_PORT (configurable)
WireGuard Interface (wg0)
└─ ALL outbound traffic
└─ VPN endpoint → PAW (Privileged Access Workstation)
```
### Firewall Rules
- **INPUT**: DROP (except lo, WireGuard keepalive, and DHCP)
- **OUTPUT**: DROP on eth0 (except to WireGuard endpoint)
- **FORWARD**: DROP
- **OUTPUT on wg0**: ACCEPT (all VPN traffic)
## Quick Start
### Prerequisites
```bash
# Only requirement: Docker
# Docker handles all build tools and dependencies
docker --version
```
### Build ISO
```bash
# Build the Football installer ISO
./scripts/build-iso.sh
```
This creates:
- `output/football-installer.iso` - Bootable ISO with embedded preseed configuration
### Test ISO
```bash
# Test ISO by booting a VM
./scripts/test-iso.sh
```
This boots a 2GB RAM VM from the ISO, allowing you to test the installer before deploying.
### Deploy
#### Virtual Machine
The VM from `test-iso.sh` is ready for installation. Installer will:
- Auto-answer all questions except:
- Username creation
- User password (min 12 chars, mixed case, numbers, special chars)
- Root password (min 12 chars, mixed case, numbers, special chars)
- Target disk selection
#### Physical System
1. Write ISO to USB or disk:
```bash
sudo dd if=output/football-installer.iso of=/dev/sdX bs=4M status=progress
```
2. Boot system from USB
3. Installer will use embedded preseed to automate installation
4. Provide only:
- Username/password for user account
- Root password
- Target disk
3. Change default user password (`changeme`)
## Directory Structure
```
football/
├── build.sh # Main build script
├── config/
│ ├── packages.list # Minimal package list
│ ├── harden.sh # System hardening script
│ ├── secureboot.sh # Secure Boot configuration
│ └── setup-wireguard.sh # WireGuard setup script
├── chroot-overlay/ # Files copied to built system
│ ├── etc/
│ │ ├── systemd/system/ # Systemd services
│ │ ├── wireguard/ # WireGuard config templates
│ │ └── network/interfaces # Network configuration
│ └── home/user/ # User configuration
│ ├── .bashrc
│ ├── .xinitrc
│ ├── .icewm/preferences
│ └── Desktop/README.txt
└── output/ # Generated images (not in git)
```
## Security Features
### Hardening Measures
1. **Network Isolation**
- All inbound traffic blocked
- Only WireGuard traffic allowed on physical interface
- Mandatory VPN tunnel for all outbound traffic
2. **Service Restrictions**
- SSH server disabled and masked
- All remote access services removed
- Bluetooth disabled
- Unnecessary kernel modules disabled
3. **Secure Boot**
- GRUB locked with password protection
- Kernel lockdown mode enabled
- Signed bootloader (shim-signed)
- EFI variables write-protected
4. **Application Whitelisting**
- Only IceWM and Remmina installed
- No development tools
- Minimal command-line utilities
5. **System Hardening**
- AppArmor enforcing
- Fail2Ban enabled
- Auditd logging
- Core dumps disabled
- Strict umask (077)
### Firewall Rules (Detailed)
```bash
# IPv4 Rules
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow WireGuard to endpoint on eth0
iptables -A OUTPUT -o eth0 -d $WG_ENDPOINT_IP \
-p udp --dport $WG_ENDPOINT_PORT -j ACCEPT
iptables -A INPUT -i eth0 -s $WG_ENDPOINT_IP \
-p udp --sport $WG_ENDPOINT_PORT -j ACCEPT
# Allow DHCP on eth0
iptables -A OUTPUT -o eth0 -p udp --dport 67 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --sport 67 -j ACCEPT
# Allow ALL traffic on WireGuard interface
iptables -A INPUT -i wg0 -j ACCEPT
iptables -A OUTPUT -o wg0 -j ACCEPT
```
## Usage
### Default User
- **Username**: `user`
- **Password**: `changeme` (CHANGE IMMEDIATELY!)
### Automatic Startup
1. Login triggers automatic IceWM start
2. Remmina launches automatically
3. WireGuard tunnel establishes automatically
4. Use Remmina to connect to PAW
### Remmina Configuration
Create Remmina profiles in:
- Path: `/home/user/.local/share/remmina/`
- Protocol: RDP or VNC (as needed)
- Server: PAW internal IP via WireGuard
### System Administration
**Local console access only:**
```bash
# Check WireGuard status
sudo wg show
# View firewall rules
sudo iptables -L -n -v
# Check logs
sudo journalctl -u wg-quick@wg0
sudo journalctl -u block-remote-access
```
## Troubleshooting
### WireGuard Connection Fails
1. Verify endpoint IP and port
2. Check firewall rules allow WireGuard
3. Verify keys are correctly configured
4. Check WireGuard server logs
### Network Blocked
1. Confirm WireGuard interface is up: `ip link show wg0`
2. Check firewall: `sudo iptables -L -n -v`
3. Verify WireGuard config: `sudo wg show`
### Secure Boot Issues
1. Ensure UEFI is enabled
2. Verify Microsoft UEFI CA is installed
3. Check Secure Boot status: `mokutil --sb-state`
### System Won't Boot
1. Verify UEFI boot mode (not legacy BIOS)
2. Check GRUB installation
3. Review kernel logs from boot
## Advanced Configuration
### Customizing the Build
Edit `config/packages.list` to add/remove packages
Modify `chroot-overlay/` to customize system files
### Changing Image Size
Edit `build.sh`:
```bash
DISK_SIZE_MB=8192 # Change to desired size in MB
```
### Multiple Deployment Profiles
Create different `build.sh` variants with different configurations for various deployment scenarios.
## Security Considerations
### Before Deployment
1. ✅ Generate unique WireGuard keys per deployment
2. ✅ Change default password
3. ✅ Verify Secure Boot configuration
4. ✅ Test WireGuard connection
5. ✅ Verify firewall rules
6. ✅ Configure PAW connection in Remmina
### During Operation
1. ✅ Monitor WireGuard connection
2. ✅ Review audit logs regularly
3. ✅ Keep system updated (manual, controlled updates)
4. ✅ Physical security of device
### Incident Response
If compromise suspected:
1. Isolate system physically
2. Preserve logs and memory dump
3. Contact security team
4. Destroy/rebuild system from scratch
## Compliance
This system is designed to support:
- NIST SP 800-171 controls
- NIST SP 800-53 Moderate
- CIS Benchmarks for Debian 13 (Trixie)
- CMMC Level 3 controls
- FedRAMP Moderate controls
- Zero Trust network architecture principles
- Privileged Access Management (PAM) best practices
## License
See LICENSE file.
## Support
For issues or questions:
- Contact: Infrastructure Security Team
- Location: KNEL server room
---
**WARNING**: This is a security-focused build system. Unauthorized modifications or deployments may compromise infrastructure security.