Jde o SYN flood útok. Je potřeba mít plně funkční Debian 12 (jádro 6.1.0-17 nebo novější).
Je tam například PHP 8, takže to vyžaduje udělat hodně změn, ale funguje to! Řešení: https://www.ookangzheng.com/block-china-ip-by-iptables/ (a úplně stejně se dají zablokovat i další země).
A hodně důležitá věc: https://kodeslogic.medium.com/how-to-fix-nf-conntrack-table-full-dropping-packet-a5fedc6c463d - je pro novější Debiany.
Součástí řešení je i blokace dotyčných zemí. POZOR: rozhodně používat ipset, protože iptables během chvíle přetíží server (netestováno v novém Debianu, ale takhle to "fungovalo" dřív).
ipset -N cn hash:net myArray=("cn" "vn" "mo" "ph" "mm" "hk" "kh" "ma" "ru" "la" "ve" "kr" "sg" "jp" "bs" "th" "tj" "sa" "ao" "gh" "eg" "ke" "ng" "et" "tw" "kw" "my" "pk" "mx" "zm" "zw" "mu" "cr" "bd" "iq" "sr" "mg" "na" "za" "nz" "mn" "gf" "vu" "as" "ar" "cg" "tz" "cd" "pa" "mz" "uz" "ne" "sn" "ae" "ir" "cm" "gq" "ag" "cv") # jsou tam i africké země, ale i ty jsou součástí útoku for str in ${myArray[@]}; do rm -rf /root/cn/$str.zone wget -P /root/cn http://www.ipdeny.com/ipblocks/data/countries/$str.zone for i in $(cat /root/cn/$str.zone ); do ipset -A cn $i; done done /sbin/iptables-restore < /etc/iptables/rules.v4 iptables -A INPUT -m set --match-set cn src -j DROP # MUSÍ být -A, ne -I
JE POTŘEBA VŠE PROVÉST ÚPLNĚ PŘESNĚ!
A ještě blokování dodatečných IP adres v ipset (je tam podmínka pro země CZ, SK, ES, IT, HR; ukázka, jak zjistit, z jaké země IP je: mdblookup --file /usr/share/GeoIP/GeoLite2-Country.mmdb --ip ${IP} |awk -F'"' '{print $2}'| sed -n '6 p
):
l=`LANG=en_us_88591;date -d -1hour +'%d/%b/%Y:%H'`;
echo $l;
for i in `cat /var/log/apache2/virtual.log |grep "$l"|uniq|grep "Dalvik/"|awk {'print $2'}|sort|uniq`; do
i=`echo $i| tr '.' ' ' |awk {'print $1"."$2"."$3".0/24"'}`;
s=`/root/scripts/country $i | grep -Po [A-Z]{2}`;
#if [ "$s" != "CZ" ] && [ "$s" != "SK" ] && [ "$s" != "ES" ] && [ "$s" != "IT" ] && [ "$s" != "HR" ]; then
ipset -A cn $i;
echo "$i";
#fi
done;