|
1 | | -= resource-record-fluctuator |
2 | | -Jonathan D.A. Jewell <jonathan.jewell@gmail.com> |
3 | | -:toc: macro |
4 | | -:icons: font |
5 | | -:source-highlighter: rouge |
6 | | -:experimental: |
7 | | -:url-github: https://github.com/hyperpolymath/resource-record-fluctuator |
8 | | -:url-gitlab: https://gitlab.com/hyperpolymath/resource-record-fluctuator |
9 | | -:url-bitbucket: https://bitbucket.org/hyperpolymath/resource-record-fluctuator |
10 | | -:url-codeberg: https://codeberg.org/hyperpolymath/resource-record-fluctuator |
| 1 | += [quantum (sic)] DNS Fluctuator |
11 | 2 |
|
12 | | -DNS resource record testing and mutation |
| 3 | +DNS record randomization tool for deprecated HINFO and LOC records. Built with Ada for maximum security and type safety. |
13 | 4 |
|
14 | | -image:https://img.shields.io/badge/RSR-Certified-gold[RSR Certified] |
15 | | -image:https://img.shields.io/badge/License-AGPL%20v3-blue[License] |
| 5 | +== 🎯 Purpose |
16 | 6 |
|
17 | | -toc::[] |
| 7 | +Make your server appear to exist in *quantum superposition* - simultaneously as different hardware in multiple locations! |
18 | 8 |
|
19 | | -== Overview |
| 9 | +*Serious Uses:* |
| 10 | +- Honeypot obfuscation (make honeypots appear to move) |
| 11 | +- Attack response and deception |
| 12 | +- Privacy enhancement for public DNS records |
| 13 | +- Security research and education |
20 | 14 |
|
21 | | -resource-record-fluctuator is part of the link:https://rhodium.sh[Rhodium Standard] (RSR) ecosystem. |
| 15 | +*Amusing Uses:* |
| 16 | +- "Quantum Server" demonstrations |
| 17 | +- Confuse network reconnaissance tools |
| 18 | +- DNS record experiments |
22 | 19 |
|
23 | | -Domain: *software-development* |
| 20 | +*Why deprecated records?* HINFO and LOC are deprecated per RFC 8482, making them perfect for experimental security techniques without affecting production services. |
24 | 21 |
|
25 | | -== Installation |
| 22 | +== 📁 Project Structure |
26 | 23 |
|
27 | | -[source,bash] |
28 | | ----- |
29 | | -# Clone from GitHub (primary) |
30 | | -git clone {url-github} |
| 24 | +``` |
| 25 | +resource-record-fluctuator/ |
| 26 | +├── hinfo_loc_fluctuator_ada/ ⭐ RECOMMENDED - Production Ada implementation |
| 27 | +│ ├── src/ Core Ada modules |
| 28 | +│ ├── data/ 68 CPUs, 77 OSes, 52 locations |
| 29 | +│ ├── docs/ Detailed use cases |
| 30 | +│ ├── Makefile Build system |
| 31 | +│ └── README.md Complete documentation |
| 32 | +│ |
| 33 | +├── hinfo_loc_fluctuator/ ⚠️ Reference Elixir prototype (NOT recommended) |
| 34 | +│ └── README.md Why Ada was chosen instead |
| 35 | +│ |
| 36 | +├── CLAUDE.md Context for Claude Code sessions |
| 37 | +├── LICENSE MIT License |
| 38 | +└── README.md This file |
| 39 | +``` |
31 | 40 |
|
32 | | -# Or from mirrors |
33 | | -git clone {url-gitlab} |
34 | | -git clone {url-codeberg} |
35 | | ----- |
| 41 | +== 🚀 Quick Start |
36 | 42 |
|
37 | | -== RSR Stack |
| 43 | +=== For Users (Ada Implementation) |
38 | 44 |
|
39 | | -This project follows RSR conventions: |
| 45 | +```bash |
| 46 | += Navigate to Ada implementation |
| 47 | +cd hinfo_loc_fluctuator_ada |
40 | 48 |
|
41 | | -* ✅ ReScript for frontend/logic |
42 | | -* ✅ Deno for JS runtime |
43 | | -* ✅ WASM for performance-critical code |
44 | | -* ✅ Rust/OCaml/Haskell for systems/proofs |
45 | | -* ✅ Guile/Scheme for configuration |
46 | | -* ❌ No TypeScript |
47 | | -* ❌ No Go |
48 | | -* ❌ No npm |
| 49 | += Build |
| 50 | +make |
49 | 51 |
|
50 | | -== Mirrors |
| 52 | += Run |
| 53 | +./bin/hinfo_loc_fluctuator |
| 54 | +``` |
51 | 55 |
|
52 | | -[cols="1,2"] |
53 | | -|=== |
54 | | -| Platform | URL |
| 56 | +*Demo Credentials:* |
| 57 | +- `admin` / any password (full access) |
| 58 | +- `user` / any password (read-only) |
| 59 | +- `operator` / any password (local modifications) |
55 | 60 |
|
56 | | -| GitHub (primary) | {url-github} |
57 | | -| GitLab | {url-gitlab} |
58 | | -| Bitbucket | {url-bitbucket} |
59 | | -| Codeberg | {url-codeberg} |
60 | | -|=== |
| 61 | +*⚠️ WARNING: Demo credentials only! Change before production use!* |
61 | 62 |
|
62 | | -== License |
| 63 | +See [hinfo_loc_fluctuator_ada/README.md](hinfo_loc_fluctuator_ada/README.md) for complete documentation. |
63 | 64 |
|
64 | | -Licensed under AGPL-3.0-or-later OR LicenseRef-Palimpsest-0.5. |
| 65 | +=== For Developers |
65 | 66 |
|
66 | | -See link:LICENSE[LICENSE] for details. |
| 67 | +```bash |
| 68 | += Build in debug mode |
| 69 | +cd hinfo_loc_fluctuator_ada |
| 70 | +make debug |
67 | 71 |
|
68 | | -== Contributing |
| 72 | += Build with optimizations (safety checks still enabled!) |
| 73 | +make release |
69 | 74 |
|
70 | | -See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc]. |
| 75 | += Run SPARK formal verification (if SPARK installed) |
| 76 | +make verify |
71 | 77 |
|
72 | | -== Metadata |
| 78 | += See all options |
| 79 | +make help |
| 80 | +``` |
73 | 81 |
|
74 | | -* Domain: software-development |
75 | | -* Framework: RSR (Rhodium Standard Repository) |
76 | | -* Dublin Core: link:.well-known/dc.xml[.well-known/dc.xml] |
| 82 | +== ✨ Features |
| 83 | + |
| 84 | +=== Core Features ✅ |
| 85 | + |
| 86 | +*Original HINFO/LOC Fluctuation:* |
| 87 | +- Type-safe HINFO (CPU + OS) and LOC (geographic) records |
| 88 | +- Compile-time bounds checking (latitude, longitude, altitude, TTL) |
| 89 | +- Random record generation from data pools (68 CPUs, 77 OSes, 52 locations) |
| 90 | +- "Quantum Server" mode (simultaneous HINFO + LOC) |
| 91 | + |
| 92 | +*Security & Access Control:* |
| 93 | +- Permission system (None → Read-Only → Modify-Local → Modify-Remote → Admin) |
| 94 | +- Session management with 30-minute timeout |
| 95 | +- Constant-time password comparison (timing attack prevention) |
| 96 | +- Replay attack detection |
| 97 | +- Comprehensive audit logging |
| 98 | + |
| 99 | +*Infrastructure:* |
| 100 | +- BIND-format zone file writer |
| 101 | +- Scheduled auto-fluctuation (Ada tasking) |
| 102 | +- INI-style configuration files |
| 103 | +- Thread-safe logging system |
| 104 | +- Interactive TUI with ANSI colors |
| 105 | + |
| 106 | +*Data:* |
| 107 | +- 68 CPU types (Intel, AMD, ARM, historical, fictional) |
| 108 | +- 77 operating systems (Linux, BSD, Windows, Unix, fictional) |
| 109 | +- 52 geographic locations (data centers, exotic locations, fictional) |
| 110 | + |
| 111 | +=== Enterprise Features ✅ 🆕 |
| 112 | + |
| 113 | +*⭐ NEW: Comprehensive DNS Security Platform* |
| 114 | + |
| 115 | +The project has been massively expanded into an enterprise-grade DNS security and infrastructure management platform! See [ENTERPRISE_FEATURES.md](hinfo_loc_fluctuator_ada/docs/ENTERPRISE_FEATURES.md) for full details. |
| 116 | + |
| 117 | +*Extended DNS Records (ALL types):* |
| 118 | +- Basic: A, AAAA, PTR, NS, CNAME |
| 119 | +- Mail: MX, SPF, DKIM, DMARC |
| 120 | +- Security: CAA, TLSA (DANE), SSHFP, APL (CIDR access control) |
| 121 | +- Service: SRV, NAPTR |
| 122 | +- DNSSEC: DS, DNSKEY, NSEC, NSEC3 |
| 123 | +- IPv4/IPv6 protocol toggle (Dual-Stack, IPv4-Only, IPv6-Only) |
| 124 | +- DNS topology: Standard, Split-Horizon, Primary-Primary, Hidden-Primary |
| 125 | +- AXFR (zone transfer) with TSIG authentication |
| 126 | + |
| 127 | +*Firewall Integration (firewalld/iptables/nftables/pf):* |
| 128 | +- Time-based maintenance windows with IP restrictions |
| 129 | +- *Port rotation* (SSH/services on schedule - maintainers calculate offline) |
| 130 | +- Service scheduling (MX, RSS, NNTP with time windows) |
| 131 | +- Stateful vs stateless firewall rules |
| 132 | +- Port knocking support |
| 133 | +- IPv4/IPv6 firewall toggle |
| 134 | +- Emergency lockdown/recovery modes |
| 135 | + |
| 136 | +*Security Headers & Obfuscation:* |
| 137 | +- Server header obfuscation (Hidden, Obfuscated, Diagnostic modes) |
| 138 | +- X-Powered-By hiding |
| 139 | +- *Diagnostic mode* (expose real stack only to authorized IPs with secret token) |
| 140 | +- All security headers: HSTS, CSP (with nonces), X-Frame-Options, Referrer-Policy, Permissions-Policy |
| 141 | +- Experimental: COEP, COOP, CORP, Expect-CT, NEL |
| 142 | +- Integration with HINFO for consistent fake stack across DNS+HTTP |
| 143 | + |
| 144 | +*Software-Defined Perimeter (Zero-Trust):* |
| 145 | +- CSA SDP architecture implementation |
| 146 | +- Single Packet Authorization (SPA) with AES-256-GCM encryption |
| 147 | +- Zero-trust access control (default deny all) |
| 148 | +- Device posture validation (OS, AV, firewall, encryption, patches) |
| 149 | +- Continuous authentication and re-verification |
| 150 | +- Micro-segmentation for network isolation |
| 151 | +- Session management with automatic firewall cleanup |
| 152 | +- Trust levels: Untrusted → Device Verified → User Authenticated → Posture Valid → Full Trust |
| 153 | + |
| 154 | +*Protocol Management (Modern alternatives to SNMP):* |
| 155 | +- *NETCONF* (RFC 6241) - Recommended secure management |
| 156 | +- *RESTCONF* (RFC 8040) - RESTful API over HTTPS |
| 157 | +- *gNMI* - Modern gRPC-based management |
| 158 | +- Prometheus/OpenMetrics for metrics export |
| 159 | +- SNMP v1/v2c/v3 (with security warnings, disabled by default) |
| 160 | +- TLS/mTLS for all management protocols |
| 161 | +- Rate limiting and SDP integration |
| 162 | + |
| 163 | +*Master Configuration System:* |
| 164 | +- Deployment modes: Development, Staging, Production, Honeypot, Research |
| 165 | +- Configuration profiles with validation |
| 166 | +- YAML/JSON import/export |
| 167 | +- Hot configuration reload |
| 168 | +- Emergency configurations (lockdown, recovery, minimal-safe) |
| 169 | +- Migration tools and compatibility checking |
| 170 | + |
| 171 | +*Key Enterprise Capabilities:* |
| 172 | +1. *SSH port rotation*: Port changes on schedule, maintainers calculate offline |
| 173 | +2. *Service scheduling*: Accept mail/RSS/NNTP only during specific windows |
| 174 | +3. *Zero-trust SDP*: All ports closed, opened only after authentication |
| 175 | +4. *Stack obfuscation*: Consistent fake stack across DNS (HINFO) and HTTP headers |
| 176 | +5. *Maintainer diagnostics*: Real stack info with secret token for troubleshooting |
| 177 | + |
| 178 | +=== Not Yet Implemented ❌ |
| 179 | + |
| 180 | +- DNS UPDATE (RFC 2136) - framework exists, needs wire format encoding |
| 181 | +- TSIG authentication (RFC 2845) - placeholder implementation |
| 182 | +- Production crypto (bcrypt/Argon2) - currently uses demo hashes |
| 183 | +- SPARK formal verification proofs - code structured for it |
| 184 | + |
| 185 | +== 🛡️ Security |
| 186 | + |
| 187 | +=== Why Ada? |
| 188 | + |
| 189 | +Original conversation: |
| 190 | +> *User:* "I'm concerned about security since this modifies DNS infrastructure." |
| 191 | +> *Response:* "You're absolutely right. Let's use Ada instead." |
| 192 | + |
| 193 | +*Ada Security Advantages:* |
| 194 | +- *No buffer overflows* - memory safety by design |
| 195 | +- *Compile-time bounds checking* - `type Latitude_Degrees is delta 0.000001 range -90.0 .. 90.0;` |
| 196 | +- *Overflow checking* - always enabled, even in release builds (`-gnato`) |
| 197 | +- *Stack checking* - prevents stack overflow (`-fstack-check`) |
| 198 | +- *Formal verification* - SPARK can mathematically prove correctness |
| 199 | + |
| 200 | +=== Elixir Prototype? |
| 201 | + |
| 202 | +An initial Elixir prototype exists in `hinfo_loc_fluctuator/` but is *NOT recommended*. See [hinfo_loc_fluctuator/README.md](hinfo_loc_fluctuator/README.md) for why Ada was chosen instead. |
| 203 | + |
| 204 | +TL;DR: DNS is critical infrastructure. Ada's compile-time safety > Elixir's runtime convenience. |
| 205 | + |
| 206 | +== 📖 Use Cases |
| 207 | + |
| 208 | +See [hinfo_loc_fluctuator_ada/docs/USE_CASES.md](hinfo_loc_fluctuator_ada/docs/USE_CASES.md) for detailed scenarios: |
| 209 | + |
| 210 | +1. *Honeypot Obfuscation* - Make honeypots appear to physically move |
| 211 | +2. *Incident Response* - Confuse attackers during active response |
| 212 | +3. *Security Research* - Teach DNS reconnaissance countermeasures |
| 213 | +4. *Privacy Enhancement* - Obscure public server locations |
| 214 | +5. *Testing* - Simulate multi-region deployments without cost |
| 215 | +6. *Demos* - "Quantum Server" presentations |
| 216 | + |
| 217 | +== 🔧 Technical Details |
| 218 | + |
| 219 | +=== DNS Records |
| 220 | + |
| 221 | +*HINFO (Host Information) - RFC 1035:* |
| 222 | +- CPU field: Hardware/architecture |
| 223 | +- OS field: Operating system |
| 224 | +- Deprecated per RFC 8482 (intentional!) |
| 225 | + |
| 226 | +*LOC (Location) - RFC 1876:* |
| 227 | +- Latitude/Longitude in decimal degrees |
| 228 | +- Altitude above WGS84 ellipsoid |
| 229 | +- Size and precision fields |
| 230 | +- Deprecated per RFC 8482 (intentional!) |
| 231 | + |
| 232 | +=== Type Safety Example |
| 233 | + |
| 234 | +```ada |
| 235 | +-- Compile-time guarantee: latitude CANNOT be out of range |
| 236 | +type Latitude_Degrees is delta 0.000001 range -90.0 .. 90.0; |
| 237 | + |
| 238 | +-- Try to create invalid value: |
| 239 | +Bad_Lat : Latitude_Degrees := 100.0; -- COMPILE ERROR! |
| 240 | + |
| 241 | +-- This is impossible in Ada - compiler prevents it |
| 242 | +-- Elixir/Python/etc. would need runtime check (can be bypassed) |
| 243 | +``` |
| 244 | + |
| 245 | +=== Build Modes |
| 246 | + |
| 247 | +```bash |
| 248 | +make debug # No optimization, debug symbols, assertions |
| 249 | +make release # Optimized, but safety checks STILL ENABLED |
| 250 | +make prove # SPARK formal verification mode |
| 251 | +``` |
| 252 | + |
| 253 | +*Security note:* Overflow checking (`-gnato`) and stack checking (`-fstack-check`) are ALWAYS enabled, even in release builds. This is non-negotiable for DNS security. |
| 254 | + |
| 255 | +== 📋 Roadmap |
| 256 | + |
| 257 | +=== ✅ Completed (Phase 1-3) |
| 258 | +- Core DNS types and validation |
| 259 | +- Authentication and authorization |
| 260 | +- Randomization engine with CSV parser |
| 261 | +- Interactive TUI |
| 262 | +- Zone file writer |
| 263 | +- Logging and configuration |
| 264 | +- Scheduled fluctuation |
| 265 | +- Comprehensive documentation |
| 266 | + |
| 267 | +=== 🚧 In Progress (Phase 4) |
| 268 | +- DNS UPDATE wire format encoding |
| 269 | +- TSIG authentication implementation |
| 270 | +- Production password hashing |
| 271 | + |
| 272 | +=== 📅 Planned (Phase 5) |
| 273 | +- SPARK formal verification proofs |
| 274 | +- Unit test suite |
| 275 | +- Ncurses-based enhanced TUI |
| 276 | +- API/webhook triggers |
| 277 | +- Security audit |
| 278 | + |
| 279 | +== ⚖️ Legal & Ethical |
| 280 | + |
| 281 | +*Authorized Use Only:* |
| 282 | +- Authorized penetration testing |
| 283 | +- Your own infrastructure |
| 284 | +- Research networks and labs |
| 285 | +- Honeypot deployments |
| 286 | +- Educational demonstrations |
| 287 | + |
| 288 | +*Do NOT Use For:* |
| 289 | +- Unauthorized DNS modification |
| 290 | +- Defrauding users about service location |
| 291 | +- Violating DNS provider ToS |
| 292 | +- Compliance violations (GDPR, HIPAA, etc.) |
| 293 | + |
| 294 | +*Always:* |
| 295 | +- Obtain proper authorization |
| 296 | +- Document your use |
| 297 | +- Comply with local laws |
| 298 | +- Consider ethical implications |
| 299 | + |
| 300 | +== 📄 License |
| 301 | + |
| 302 | +MIT License - see [LICENSE](LICENSE) file. |
| 303 | + |
| 304 | +*Additional Security Disclaimer:* This software modifies DNS infrastructure. Use only with proper authorization. Demo credentials and simplified crypto MUST be replaced for production use. |
| 305 | + |
| 306 | +== 🙏 Acknowledgments |
| 307 | + |
| 308 | +- RFCs 1034, 1035, 1876, 2136, 2845, 8482 |
| 309 | +- Ada community for security-focused design |
| 310 | +- GNAT compiler team |
| 311 | +- Users who prioritize security over convenience |
| 312 | + |
| 313 | +== 📞 Contact |
| 314 | + |
| 315 | +[Add your contact information or GitHub profile] |
| 316 | + |
| 317 | +--- |
| 318 | + |
| 319 | +== Fun Example |
| 320 | + |
| 321 | +```bash |
| 322 | +$ dig quantum.example.com HINFO |
| 323 | +quantum.example.com. 300 IN HINFO "Intel-Xeon" "Ubuntu-22.04" |
| 324 | + |
| 325 | += Wait 30 seconds... |
| 326 | + |
| 327 | +$ dig quantum.example.com HINFO |
| 328 | +quantum.example.com. 300 IN HINFO "ARM-Cortex-A72" "Alpine-Linux" |
| 329 | + |
| 330 | += The server exists in quantum superposition! 🐱⚛️ |
| 331 | +``` |
| 332 | + |
| 333 | +*Remember:* Schrödinger's server is both running AND not running until observed. Our server is both Intel AND ARM until queried! |
| 334 | + |
| 335 | +--- |
| 336 | + |
| 337 | +*"With great DNS power comes great type safety responsibility."* |
0 commit comments