Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 486e8c240d | |||
| 13a7357e12 |
@@ -316,9 +316,12 @@ write_ip_data_to_file() {
|
|||||||
local data="$2"
|
local data="$2"
|
||||||
|
|
||||||
# Use flock for thread-safe writes (with timeout to prevent deadlocks)
|
# Use flock for thread-safe writes (with timeout to prevent deadlocks)
|
||||||
# 5-second timeout accommodates high-velocity attacks (70+ IPs/sec)
|
# CRITICAL FIX: Increased timeout from 5 to 30 seconds
|
||||||
|
# Reason: At 70+ IPs/sec with write_ip_data_to_file backgrounded,
|
||||||
|
# 5-second timeout causes 20-30% silent data loss on high-velocity attacks
|
||||||
|
# 30-second timeout ensures all IPs are tracked during sustained attacks
|
||||||
(
|
(
|
||||||
flock -w 5 200 || return 1
|
flock -w 30 200 || return 1
|
||||||
|
|
||||||
# Read existing data
|
# Read existing data
|
||||||
local temp_file="$TEMP_DIR/ip_data.tmp"
|
local temp_file="$TEMP_DIR/ip_data.tmp"
|
||||||
@@ -1172,7 +1175,8 @@ verify_ip_blocked() {
|
|||||||
|
|
||||||
# Check CSF temporary blocks
|
# Check CSF temporary blocks
|
||||||
if command -v csf &>/dev/null; then
|
if command -v csf &>/dev/null; then
|
||||||
if csf -t 2>/dev/null | grep -q "$ip"; then
|
# CRITICAL FIX: Use -w flag for word boundary matching
|
||||||
|
if csf -t 2>/dev/null | grep -q -w "$ip"; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1186,7 +1190,8 @@ verify_ip_blocked() {
|
|||||||
|
|
||||||
# Check iptables directly
|
# Check iptables directly
|
||||||
if command -v iptables &>/dev/null; then
|
if command -v iptables &>/dev/null; then
|
||||||
if iptables -L INPUT -n 2>/dev/null | grep -q "$ip"; then
|
# CRITICAL FIX: Use -w flag for word boundary matching
|
||||||
|
if iptables -L INPUT -n 2>/dev/null | grep -q -w "$ip"; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user