ddos napad i spam

1

ddos napad i spam

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

pozdrav!
možda temu nisam stavio na pravo mesto, ali sam nov. Moderatori, premestite temu gde treba da bude, ako ovo mesto ne odgovara.
U svakom slučaju da Vam izložim problem.
Nedavno (pre 5 sati) je jedan "haker" (jednno dete od 13 godina) počeo da pravi ddos na moj sajt (sa 3 kompjutera).
Kako da u php-u zabranim pristup (na 30 minuta) nekome ko napravi više od jednog zahteva ka jednoj stranici u minutu?
Hvala unapred! Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

u teoriji - napravi mysql tabelu u kojoj ces da INSERT-ujes IP posetioca svaki put kad se otvori neka strana na tvom sajtu.
zatim [odmah posle INSERT-ovanja] sa SELECT proveri da li je dati IP u zadnjih 10 sekundi otvorio vise od 3 stranice recimo... ako jeste - exit;

u praksi - ovo nece da radi - ako krene DDoS php ce previse konekcija ka mysql-u da napravi - i opet ode sve u andrak.

resenje = imati SSH pristup serveru i sa IPTABLES uraditi -j DROP za IP sa kog dolazi flood.
primer:
iptables -I INPUT -s 195.113.21.55 -j DROP
ili
iptables -I INPUT -s 195.113.21.0/24 -j DROP
ako hoces ceo opseg 195.113.21.xxx da blokiras

u SSH je takodje veoma korisna komanda
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
pokaze ti koliko konekcija koja IP pravi [pa onda lepo blokiras IP adrese koje ti prave najvise konekcija]

e sad - ako si vešt sa linuxom... mozes napraviti PHP skriptu koja bi se izvrsavala recimo na svaki minut [uz pomoc CRONJOB], i koja bi sama uradila ovaj netstat, i sama izvrsila IPTABLES -j DROP za sve IP adrese koje naprave recimo vise od 30 konekcija smešak
Ziveli



offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Napisano: 20 Avg 2011 23:45

Ne odgovara mi prvo iz poznatih razloga Laughing
Što se tiče drugog rešenja- nemam ssh..
Meni bi više trebala varijanta sa .txt fajlom
jer je brža i manje "troši" Razz
Ali ne znam kako da napravim sve to...
mislim, najviše mi je pretraga problem..
i brisanje unosa koji su stariji od 60 sekundi
UUUPPPPOOOMOĆĆĆ!!! PRAVI 980 zahteva u 5 sekundi (ima više računara) SAJT NEĆE IZDRŽATI

Dopuna: 20 Avg 2011 23:55

Peca ::
e sad - ako si vešt sa linuxom... mozes napraviti PHP skriptu koja bi se izvrsavala recimo na svaki minut [uz pomoc CRONJOB], i koja bi sama uradila ovaj netstat, i sama izvrsila IPTABLES -j DROP za sve IP adrese koje naprave recimo vise od 30 konekcija smešak
Ziveli


Može to da se uradi... svaki 30 sekundi pokrećem skriptu koja uz pomoć _exec izvršava naredbu za odbacivanje ip adresa (while loop).
Problem je gde da smeštam te podatke o ip adresama i kako da ih čitam i brišem stare ip adrese

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

Napisano: 20 Avg 2011 23:59

unosi svaki IP u novu liniju u txt fajlu.
funkcija file() ucitava fajl i svaku liniju smesta kao niz.
onda lepo sa foreach() protrcis kroz taj niz i vidis koliko je puta neka IP adresa napravila konekcija.

onda dodas tom nizu novi IP, i sa foreach opet generises listu od recimo 50 poslednjih IP adresa - i snimis to kao txt.
tako ces uvek imati listu od max 50 unosa.

i obavezno: flock($fp, LOCK_EX)
[Link mogu videti samo ulogovani korisnici]
jer ces bez toga sjebati txt fajl kada dva php-a paralelno krenu da pisu u isti fajl smešak

Dopuna: 21 Avg 2011 0:12

MilanKragujevic ::Može to da se uradi... svaki 30 sekundi pokrećem skriptu koja uz pomoć _exec izvršava naredbu za odbacivanje ip adresa (while loop).
Problem je gde da smeštam te podatke o ip adresama i kako da ih čitam i brišem stare ip adrese

mozes li iz php-a sa _exec da izvrsis ovo:
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
to ce ti automatski dati koliko koji IP pravi konekcija, onda ne moras u nikakav fajl da belezis IP adrese.

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Napisano: 21 Avg 2011 0:14

ovako nešto?
<?php $fajl = 'ipjevi-aaaaaaa.txt'; function zabelezi() { global $fajl; $ip = $_SERVER['REMOTE_ADDR']; $fp = fopen($fajl, "w+"); if (flock($fp, LOCK_EX)) {     ftruncate($fp, 0);     fwrite($fp, $ip . "\r\n");     flock($fp, LOCK_UN); } else {     die('ERROR'); } fclose($fp); } function ucitaj() { global $fajl; $ucitano = file($fajl, FILE_IGNORE_NEW_LINES); $brojke = array_count_values($ucitano); arsort($brojke); $zlobnik = (key($brojke)); zabrani($zlobnik); } function zabrani($ip_adresa) { exec('iptables -I INPUT -s ' . $ip_adresa . ' -j DROP '); }

Dopuna: 21 Avg 2011 0:16

Ne, ne mogu da pokrenem tu naredbu..Dobijam praznu stranicu
<?php exec("netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"); ?>

Dopuna: 21 Avg 2011 0:18

A sa shell_exec dobijam grešku
Citat:

Warning: shell_exec() has been disabled for security reasons in /home/blablablabla/ipjevi.php on line 2

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

pa onda neces moci ni IPTABLES da izvrsis iz php-a... Sad
mozes samo da exit-ujes iz php skripte, a on ce i dalje da ubija Apache...

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

da.. znam.. ništa neće sprečiti tog "hakera" da loaduje sajt...
iako sam ja pri vrhu stavio die('Nedostupno zbog zakazanog odrzavanja'); , apache zauzima 40-50% procesora... a na serveru ima 600 sajtova... LOL

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

pa on moze onda i bilo koji sajt na tom serveru da drnda.
zapravo... on moze i sam IP tvog servera da drnda - [Link mogu videti samo ulogovani korisnici] - tek tu ne mozes nista...

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

stavljam onaj kod odozgore.. samo što ću umesto exec komande staviti die('Asta la vista'); Laughing

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

kolega sa faxa je imao ovakav problem i na isti fazon je i resio samo sto je on redirektovao... kaze da mu je uspelo nije imao vise problema...Sada to je sve meni nekako cudno ali ajde... Mislim da moze i sa htaccess-om da se blokira.

Ajde probaj sa ovom klasom okacio sam je...
[Link mogu videti samo ulogovani korisnici]
skini samo ovo .ini da bude samo .php extenzija
Laka je za konfiguraciju.

include "$_SERVER[DOCUMENT_ROOT]/path/to/ddos.php.php"; $ksa = new ksantiddos(); $ksa->doit(10,20); //Dozvoljeno 10 poseta u roku od 20 sekundi)

Све HTTP zahteve iznad broja 10 u 20 sekundi od odredjene IP adrese ce vratiti sledece:
header('HTTP/1.0 503 Service Unavailable'); header('Status: 503 Service Unavailable'); header("Retry-After: 30"); print "<html><meta http-equiv='refresh' content='30'><body><h2>Our server is currently overloaded, your request will be repeated automatically in 30 seconds</h2>";

Ko je trenutno na forumu
 

Ukupno su 1813 korisnika na forumu :: 78 registrovanih, 7 sakrivenih i 1728 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 6018 - dana 19 Dec 2025 13:41

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4. Ozrenska, AF-1, Arsenije, babaroga, Badja, Bane san, blue, Bo96, Bojke549, bokicacar, branko87, Comyymoc, crazydkure, cuculo, DejvTroter, Dekanovic, djordjemiklusev, Dogma21, Dolinc, Dorcolac, dragan_mig31, draganl, dukajov, dusan.l, dushan, Dzuki, FileFinder, Filip1, gale48, Georgius, goxin, Jaxupa, Jonbonjovi, kaskadija, Kosmos Banja Luka, Kubovac, Lepi Jova, Lester Freamon, lima, ljuba, loon123, Marko1238, Maschinekalibar, MDrasko, miki kv, milenko crazy north, miljannis, Millennium, Milometer, Milos ZA, milos97, mxzzz, nemkea71, Nikola Galovic, nuke92, Orc, peraklio, PMsnow, Prometeus, raptorsi, raso76, raster12, sasovsky, singa, Smiljkovich, smuk, Speer, strn, Szigetwar, tomo2, tritonus, Uros Cuore Sportivo, v82, Vanderx, Vlad000, voja64, zexon, Đurđevdan