DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Web aplikacije, web servisi i software (http://www.devprotalk.com/forumdisplay.php?f=30)
-   -   URL Filter (http://www.devprotalk.com/showthread.php?t=2321)

misk0 26. 01. 2007. 08:49

URL Filter
 
Imam tonu zahtjeva (zahvaljujuci nekom luzeru koji je napisao virus koji vuche neke nepostojece linkove sa moja 2 sajta) tipa GET /1/999.php i slicno koji ne rade nista, osim sto mi opterecuju apache (sad manje, ali na pocetku je bio uzas) i prave dnevno par par MB logova koji kasnije webalizeru usporavaju rad jer nakon mjesec dana treba mu po 2 sata da obradi log fajl od 300-400MB.

Ono sto mi treba je neki modul za apache koji ce da te zahtjeve ubije u startu prije obrade, da ih prestane logovati i da ih prestane obradjivati. Sad, da li postoji modul ili postoji neki drugi soft koji bih mogao iskoristiti, nije vazno, vazno je da radi....

Ne mogu blokirati preko IPova jer ih ima mnogo ... rijetko se ponavljaju.

bojan_bozovic 26. 01. 2007. 10:00

Mozes iskljuciti logovanje, ali mislim da to ne zelis.

http://httpd.apache.org/docs/2.0/logs.html

misk0 26. 01. 2007. 10:24

Naravno da NE zelim iskljuciti kompletno logovanje, vec logovanje tih 3 tipa zahtjeva. Koliko sam gledao, nema mogucnost 'selektivnog' logovanja u smislu 'ovo loguj a ovo ne'.

bojan_bozovic 26. 01. 2007. 11:16

Kako nema kad ima (mod_log_config)

Kôd:

# Mark requests from the loop-back interface
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file
SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains
CustomLog logs/access_log common env=!dontlog

Napisi kolko treba regexa da ignorise i zameni sa time CustomLog direktivu.

zextra 26. 01. 2007. 12:03

@bojan_bozovic: za to nisam znao, dobra stvar :)

@misk0: Apache (za 2.0 verziju znam 100%) podrzava slanje logova (preko pajpa) eksternoj aplikaciji, koja radi sa samim log fajlovima.

Primer:

Kôd:

CustomLog "| /path/to/your_log_app /var/log/apache/access.log" combined
ErrorLog "| /path/to/your_log_app /var/log/apache/error.log"

Naravno, aplikaciju napises tako da prihvata tekst kroz stdin, i ispisuje ga u navedeni fajl (ili stdout, ako nisi naveo fajl - za svaki slucaj).

Evo ti primer skripte u perlu koja radi taj posao.

Kôd:

#!/usr/bin/perl

open my $log, q{>>}, $ARGV[0] or die $!;

while ( <> ) {
  # prilagodi sledece regexp-e
  # ti najbolje znas po cemu bi hteo da filtriras zapise...
  next if /\s404\s/;
  next if /\s404\s/;
  #...
 
  # nisam 100% siguran da li apache prosledjuje i \n na kraju reda, proveri
  print $log $_, qq{\n};
}

Off Topic: Ovo je primer kako ne treba pisati perl kod :)


Naravno, ako planiras da radis na ovaj nacin, malo popravi kod ili ga napisi u jeziku koji bolje poznajes (za ove stvari moze i CLI PHP da radi posao, bas kao i obican grep)

misk0 26. 01. 2007. 12:58

oki, logovanje smo sredili... a sad kako sprijeciti apache da se sto manje 'opterecuje' sa tim zahtjevima. Nesto kao 'zatvori odmah konekciju, bez parsiranja ovo ono'??

Koristio sam mod_throttle ali nisam siguran da radi posao..

ivanhoe 26. 01. 2007. 14:39

RewriteRule zeljena_adresa.htm - [F]
gde je zeljena adresa neki regexp po zelji, a moze da se kombinuje i sa RewriteCond za bolju kontrolu

vraca odmah forbidden http status... ako to stavis direktno u httpd.conf radice veoma brzo


Vreme je GMT +2. Trenutno vreme je 14:38.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.