8.1 KiB
AuthShield v1.17 - Change Summary
Files Modified
1. root/usr/sbin/authshield.sh
Changes:
- ❌ Removed
CIRCUIT_UNLOCK_THRESHOLDvariable - ❌ Removed
circuit_check_unlock()function - ❌ Removed
CIRCUIT_CHECKcase from main loop - ✅ Simplified
circuit_unlock()to be manual-only (kept for potential future use) - ✅ Updated header comment to mention nftables timeout unlock
- ✅ Removed CIRCUIT_CHECK action from monitor_and_ban awk script
Impact: Circuit breaker now only unlocks via nftables timeout, eliminating non-functional auto-unlock logic.
2. luasrc/model/cbi/authshield.lua
Changes:
- ❌ Removed entire
circuit_unlock_thresholdoption block (~10 lines) - ✅ Updated
circuit_penaltydescription to explain nftables timeout and memory effect:"How long to block WAN access to management ports when circuit breaker triggers. WAN access automatically restores after this duration via nftables timeout. Note: The failure counter has a 12-hour memory by default, so repeated login attempts after unlock may cause immediate re-locking until the memory window expires."
Impact: LuCI interface no longer shows non-functional auto-unlock threshold option.
3. root/etc/config/authshield
Changes:
- ❌ Removed
option circuit_unlock_threshold '60' - ✅ Added comprehensive comment block explaining circuit breaker behavior:
# Note: Circuit breaker automatically unlocks after circuit_penalty seconds. # The circuit_window acts as a "memory" - if attackers resume attempts after unlock, # and total failures still exceed circuit_threshold, the circuit will immediately re-lock. # This provides extended protection without requiring manual intervention.
Impact: Default config no longer includes non-functional option, includes clear documentation.
4. root/etc/init.d/authshield
Changes:
- ❌ Removed
circuit_unlock_thresholdvariable reading from UCI - ❌ Removed
CIRCUIT_UNLOCK_THRESHOLD="$circuit_unlock_threshold"from environment - ✅ Cleaned up comments in start_service()
Impact: Init script no longer passes non-existent parameter to authshield.sh.
5. po/zh_Hans/luci-app-authshield.po
Changes:
- ❌ Removed 4 translation entries:
"Auto-Unlock Threshold""If total failures drop below this number..."- Auto-unlock related descriptions
- ✅ Updated
"Circuit Block Duration (seconds)"description to match English version with memory effect explanation
Impact: Chinese translation no longer shows removed option, includes updated documentation.
6. README.md
Major additions:
- ✅ Added "Circuit Breaker Feature" section with detailed explanation
- ✅ Added "Memory Effect" subsection explaining post-unlock behavior
- ✅ Added "Tuning Recommendations" table for different security profiles
- ✅ Added "Understanding Log Patterns" section explaining multiple ban messages
- ✅ Added "Attack Pattern Analysis" table correlating bans with threat levels
- ✅ Added "Troubleshooting" section for circuit breaker issues
- ✅ Added changelog entry for v1.17
- ✅ Updated version to 1.17
- ✅ Updated date to 2025-11-08
Impact: Users now have comprehensive documentation of actual circuit breaker behavior.
7. Makefile (to be updated)
Changes needed:
PKG_VERSION:=1.17
PKG_RELEASE:=20251108
Line Count Changes
| File | Lines Removed | Lines Added | Net Change |
|---|---|---|---|
| authshield.sh | ~40 | ~5 | -35 |
| authshield.lua | ~10 | ~5 | -5 |
| authshield.config | ~1 | ~5 | +4 |
| authshield.init | ~3 | ~1 | -2 |
| luci-app-authshield.po | ~8 | ~3 | -5 |
| README.md | ~10 | ~150 | +140 |
| Total | ~72 | ~169 | +97 |
Net result: More documentation, less code, clearer behavior.
Functional Changes
What Was Removed
- ❌ Auto-unlock threshold configuration option
- ❌ Auto-unlock check logic (non-functional)
- ❌ CIRCUIT_CHECK action handling
- ❌ circuit_check_unlock() function
What Was Added
- ✅ Comprehensive documentation of memory effect
- ✅ Tuning recommendations for different scenarios
- ✅ Attack pattern analysis guidelines
- ✅ Troubleshooting section
- ✅ Clear explanation of post-unlock behavior
What Stayed the Same
- ✅ Circuit breaker triggering logic (unchanged)
- ✅ Circuit locking mechanism (unchanged)
- ✅ Nftables timeout-based unlock (unchanged - this always worked)
- ✅ All other AuthShield features (IP bans, escalation, global rules)
Migration Path
For Existing Users
Automatic:
- Old
circuit_unlock_thresholdoption is simply ignored - No breaking changes to functionality
- System continues working exactly as before
Recommended:
# Clean up old option (optional)
uci delete authshield.@settings[0].circuit_unlock_threshold
uci commit authshield
/etc/init.d/authshield restart
For New Users
- Default config has correct options
- LuCI interface shows only functional options
- Documentation explains actual behavior
Testing Requirements
Unit Tests (Manual)
- Service starts without errors
- LuCI interface loads correctly
- Circuit breaker tab shows correct options
- Circuit breaker triggers at threshold
- Circuit breaker unlocks after timeout
- No errors in system logs
Integration Tests
- Individual IP bans still work
- Escalation still works
- Global rules still work
- Circuit breaker + individual bans work together
- Re-lock after unlock works (memory effect)
Regression Tests
- All existing features unchanged
- No performance degradation
- No memory leaks
- Compatible with existing configs
Breaking Changes
None. This is a documentation update and removal of non-functional code. All actual behavior remains identical to v1.16.
Backward Compatibility
✅ Fully backward compatible
- Old configs work without modification
- Old option is silently ignored if present
- No API changes
- No behavior changes (system already worked this way)
Documentation Changes
User-Facing
- README.md: +150 lines of explanation
- Circuit Breaker section completely rewritten
- Added examples and scenarios
- Added troubleshooting guide
Developer-Facing
- Code comments updated
- Non-functional code removed
- Clearer variable names
- Better function documentation
Security Impact
✅ Positive: More honest about capabilities
✅ No reduction: All protections still active
✅ Better understanding: Users know actual behavior
⚠️ Note: "Memory effect" is actually a security enhancement
Performance Impact
✅ Slightly improved: Less code to execute
✅ Fewer checks: Removed non-functional check
✅ Same memory usage: Minimal change
✅ Same CPU usage: Negligible difference
Risk Assessment
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Config incompatibility | Low | Low | Old option ignored |
| Breaking existing setups | Very Low | Low | No behavioral changes |
| User confusion | Low | Medium | Comprehensive docs |
| LuCI cache issues | Medium | Low | Clear cache instructions |
Overall Risk: LOW ✅
Rollback Plan
If issues arise:
- Restore v1.16 files from backup
- Or: Re-add old option as dummy (ignored)
- System continues working either way
Rollback complexity: TRIVIAL
Future Considerations
Could Be Added Later (If Needed)
- Background daemon for true auto-unlock
- Heartbeat-based monitoring
- Manual unlock command in LuCI
- Configurable memory window independent of failure tracking
Not Recommended
- Re-implementing broken auto-unlock logic
- Adding complexity without clear benefit
- Diverging from nftables native capabilities
Approval Checklist
- Code changes reviewed
- Documentation complete
- Translation updated
- Backward compatibility verified
- No breaking changes
- Security impact assessed
- Performance impact minimal
- Rollback plan exists
- Testing plan defined
Status: READY FOR DEPLOYMENT ✅