4a9b449d60
Implement lifetime detection history for each attacking IP. Most servers see 0 SYN_RECV, so 70 active is highly suspicious. Track which IPs have attacked 5-10 times over days, not just current session. New behavior: - Store historical hit count in ip_history_IPADDR file - Load count at each detection - Use TOTAL lifetime hits for threshold decisions, not just session hits - Dramatically lower threshold for repeat attackers Threshold adaptation: - 10+ lifetime attacks: threshold = 1 (block even 1 connection) - 5-9 lifetime attacks: threshold = 1 (from original 3) - 3-4 lifetime attacks: threshold = 2 (from original 3) - 2 lifetime attacks: threshold = 2 (from original 3) - 1st attack: threshold = 3 (baseline) Example: IP probes on Day 1, 2, 3 at 2-3 connections each - Day 1: 2 connections < 3 threshold, not detected - Day 2: 2 connections, now has 2 lifetime hits, threshold=2, 2 is NOT > 2, missed - Day 3: 2 connections, now has 3 lifetime hits, threshold=2, 2 is NOT > 2, missed - Day 4: 2 connections, now has 4 lifetime hits, threshold=2, 2 is NOT > 2, missed - Day 5: 2 connections, now has 5 lifetime hits, threshold=1, 2 > 1, DETECTED & BLOCKED ✓ This catches persistent low-level attackers that would otherwise evade detection. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>