Doporučujeme: Stahovač videí z YouTube | TV program | Služby na web | NEJLEPŠÍ PŘEDPOVĚĎ POČASÍ | SUDOKU | Měření rychlosti internetu

Můj blog – až 10 % špičkového kódu navíc!

Kompletní blokace Číny

Datum: 3. 1. 2024 7.51 | Autor: Lukáš | 7041× | Kategorie: Software | Komentáře: 0

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;

Přidat nový komentář:




Ochrana proti spamu. Napiš prosím číslici pět: