Files
op-packages/luci-app-authshield/CHANGES.md
T

8.1 KiB

AuthShield v1.17 - Change Summary

Files Modified

1. root/usr/sbin/authshield.sh

Changes:

  • Removed CIRCUIT_UNLOCK_THRESHOLD variable
  • Removed circuit_check_unlock() function
  • Removed CIRCUIT_CHECK case 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_threshold option block (~10 lines)
  • Updated circuit_penalty description 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_threshold variable 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

  1. Auto-unlock threshold configuration option
  2. Auto-unlock check logic (non-functional)
  3. CIRCUIT_CHECK action handling
  4. circuit_check_unlock() function

What Was Added

  1. Comprehensive documentation of memory effect
  2. Tuning recommendations for different scenarios
  3. Attack pattern analysis guidelines
  4. Troubleshooting section
  5. Clear explanation of post-unlock behavior

What Stayed the Same

  1. Circuit breaker triggering logic (unchanged)
  2. Circuit locking mechanism (unchanged)
  3. Nftables timeout-based unlock (unchanged - this always worked)
  4. All other AuthShield features (IP bans, escalation, global rules)

Migration Path

For Existing Users

Automatic:

  • Old circuit_unlock_threshold option 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:

  1. Restore v1.16 files from backup
  2. Or: Re-add old option as dummy (ignored)
  3. 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
  • 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