Minecraft Flood Detection Optimized Ruleset
portvar MINECRAFT_PORTS [25565,25566]
alert tcp any any -> $HOME_NET $MINECRAFT_PORTS (
flow:to_server,established;
rawbytes;
content:"|00|"; depth:1; dsize:>2;
flowbits:set,mc_handshake_detected;
threshold:type both, track by_src, count 7, seconds 5;
msg:"MC-L7 Handshake Flood (>6/5s per IP)";
classtype:attempted-dos; priority:2;
sid:130700001; rev:3;
)
drop tcp any any -> $HOME_NET $MINECRAFT_PORTS (
flow:to_server,established;
rawbytes;
flowbits:isset,mc_handshake_detected;
content:"|00|"; offset:0; depth:1;
byte_test:1,=,1,1; dsize:>2;
threshold:type both, track by_src, count 5, seconds 5;
msg:"MC-L7 Status Flood (>4/5s per IP)";
classtype:attempted-dos; priority:1;
sid:130700002; rev:3;
)
pcre kaldırdım regex motoru devreye girmediği için %15 ile 25 daha az işlem yükü olur
regexin yerine content + byte_test kullandım.
ilk kural handshake yapan ip işaretliyor ikinci kural sadece oipi değerlendiriyor böylece status flodd normal oyuncu pingiyle karışmaz
portvar tanımı farklı portları kapsıyor
classtype ve priority ekleyerek log analizi sıem ve dashboardlarda daha okunabilir hale geliyor
threshold:type both hem alert sayısını hem de flood tespiti yoğunlugunu kontrol eder ve gereksiz log üretimi azaltır
rev:3 ve düzenli format kurallar arası sürüm takibi kolaylaşır
ekstra saldırgan kısa süreli deneme pingleri atıyorsa rate-limit tarafına
threshold:type limit , track by_Src, count 1, seconds 3: yapılabilir
bu aynı ip 3 sanıyede birden fazla uyarı üretilmesini engeller.