Im Grunde versuche ich, die Rate der Anfragen an einen Mailserver auf Firewall-Ebene zu begrenzen, aber mehrere firmeneigene IP-Bereiche auf die Whitelist zu setzen. Ich kanneinsEs gibt einen IP-Adressbereich, aber nicht mehrere, da die Regel „das erste passende Paket bekommt“ gilt.
Hier ist, was ich derzeit habe ... (Entschuldigung für die Mischung aus -I
und -A
)
# Send traffic to rate-limiter before allowing it to continue to the mail server.
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j DNAT --to-destination 192.168.250.71:25
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j DNAT --to-destination 192.168.250.71:143
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j DNAT --to-destination 192.168.250.71:993
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j rate-limiter
# Create a new chain, which logs all traffic then drops it.
# We make sure that localnets are not part of this...
iptables -t mangle -N rate-limiter
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.254.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP
Die erste Regel gleicht das Paket ab und markiert es dann in der Tabelle „Zuletzt verwendet“, sodass ich beim Klicken cat /proc/self/net/xt_recent/MailRateLimiter
IPs sehe, die auf die Whitelist gehören:
src=20.87.6.200 ttl: 57 last_seen: 56654988107 oldest_pkt: 8 56654320106, 56654370481, 56654426548, 56654480458, 56654564349, 56654565421, 56654952936, 56654988107
src=20.87.6.5 ttl: 63 last_seen: 56655077970 oldest_pkt: 9 56654962465, 56654962465, 56654978465, 56655024835, 56655031038, 56655037096, 56655048206, 56655059305, 56655077970, 56654768325, 56654777150, 56654802008, 56654807677, 56654816481, 56654842497, 56654846996, 56654855809, 56654886875, 5665489136
Verzeihen Sie mir, wenn es etwas Dummes ist ... Es war ein langer Tag, und ich wurde irgendwie da hineingeworfen ...
Antwort1
Sie können alles, was Sie möchten, auf die Whitelist setzen, indem Sie oben in die KETTE Folgendes schreiben:
iptables -t mangle -A rate-limiter <rule to match whitelisted> -j RETURN
POSTROUTING
Pakete, die mit den auf der Whitelist aufgeführten Netzwerken übereinstimmen, werden ohne Änderungen zurückgegeben .