Archive for the ‘Skriptukai’ Category

DDoS atrėmimo taktikos

Friday, November 16th, 2007

Pirmoji, kurią ir naudojau, tai buvo toks bash’o scriptukas:

netstat -an | grep 86.100.70.192:80 | grep SYN_RECV | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq | xargs -n 1 -I “{}” iptables -A INPUT -s “{}” -j DROP | killall /usr/sbin/apache2 | /etc/init.d/apache2 restart

netstat -an - išveda visus susijungimus;
grep 86.100.70.192:80 - atrenkame susijungimus su mūsų IP 80 portu;
grep SYN_RECV - atrenkame pradėtas sesijas;
awk ‘{print $5}’ - išvedame 5-ą ląstelę, t.y. nutolusios mašinos IP adresą ir portą;
cut -d: -f1 - daliname gautą reikšme IP:PORT į dvi dalis per :, ir naudojame pirmąją dalį (IP);
sort - surikiuojame;
uniq - atrenkame unikalius IP adresus;
xargs -n 1 -I “{}” iptables -A INPUT -s “{}” -j DROP - įtraukiame atrinktus IP į ugniasienės taisykles;
killall /usr/sbin/apache2 - ‘nužudome’ visus apache2 procesus (tuo pačiu nutraukiame susijungimus);
/etc/init.d/apache2 restart - inicijuojame apache2 paleidimą.

Antras metodas, kuris yra efektyvesnis, bet tinka tik su ugniasienėmis, kurios moka atrinkt unikalias taisykles, kad jos nesikartotų:

tcpdump -n ‘tcp port 80 and ip[2:2] < 62′ | awk ‘{print $3}’ | cut -d . -f 1-4

tcpdump -n ‘tcp port 80 and ip[2:2] < 62′ - naudojamės tcpdump įrankiu (kuris paketus gauna dar prieš ugniasienę ir apache serverį), -n - neverčiame IP adresų į raidinę verte. port 80 - atrenkame paketus siunčiamus į 80 portą. and ip[2:2] - gauname paketo dydį, < 62 ir pasiimame tik tuos, kurie mažesni už 62 baitus (tuščia užklausa).
awk ‘{print $3}’ - išvedame 3-ąją eilutės ląstelę;
cut -d . -f 1-4 - kadangi išvesta ląstelė yra ipsegmentas.ipsegmentas.ipsegmentas.ipsegmentas.portas, tai padaliname ląstelę per taškus (-d.) ir pasirenkame nuo 1 iki 4 segmento (-f 1-4). Dabar gautą ip adresą galima perduoti ugniasienei ar įrašyti į failą.

Kaip sužinoti Lietuvos IP adresus?

Saturday, November 10th, 2007

Štai tokį sprendimą radau internete:

wget –quiet -c -O - ftp://ftp.ripe.net/ripe/stats/`date “+%Y”`/delegated-ripencc-`date “+%Y%m%d”`.bz2 | bzcat | grep -i “|LT|ipv4|” | awk -F ‘|’ ‘{print $4 “/” int(32 - log($5)/log(2))}’

|LT|  galite pakeisti į kitos šalies kodą, tai parodys tos šalies IP adresus.

Tikrasis autorius: kornaz