Skocz do zawartości
Zaloguj się, aby obserwować  
exa

Skrypt chroniący zasoby serwera przed złośliwymi botami

Polecane posty

Witam,

 

postanowiłem opublikować skrypt, który napisałem jakiś czas temu w sytuacji, kiedy złośliwe boty zaczęły atakować jedną ze stron będących pod moją opieką. Strony w sieci (pomimo, że tego niekiedy nie widać) nękają śmieciowe boty szukające luk z skryptach czy też będące amatorskimi zbieraczami treści, które często zarzynają nasze konta (przeglądnijcie access logi serwera). Skrypt ten w momencie wykrycia, że strony nie przegląda człowiek a bot (przy tym za szybko przechodzi po naszej stronie) czasowo blokuje mu dostęp chroniąc tym samym zasoby naszego konta. Boty Google, Yahoo i MSN nie są ograniczane.

 

Skrypt na licencji GPL + opis dostępny jest na stronie: http://docs.google.com/View?id=dgkd4pj4_0hfj5j4gx.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
mhm, ale ten skrypt takze zablokuje strony, które mają opcje otwierania wielu linkow w nowych oknach, prawda? :)

Ten skrypt można skonfigurować tak, żeby nie przyblokował żadnego człowieka. Sam nieraz wchodzę na forum i potrafię otworzyć 15 zakładek. W domyślnej konfiguracji możesz otwierać 25 stron/30 sekund, co wg. mnie jest wystarczającą wartością. Normalny człowiek nie odpali więcej stron :). Jeżeli uważasz inaczej, możesz sobie podnieść ten parametr.

 

Zapowiada się bardzo fajnie :) Jak dużo transferu można zaoszczędzić, procentowo?

Zerknij do access-loga i zorientuj się ile z twojego ruchu to śmieciowe boty. Ja mam ten skrypt (pierwotną wersję) odpalony od ponad roku pod jednym autorskim CMSem i nie sprawdzałem ile zaoszczędziłem. Musiałem zablokować boty "dosujące" stronę i się udało. Poza tym to jest nowa wersja, poprawiona wczoraj, wcześniej nie było opcji uwalania botów od include buga. Nie mam też wordpresów i seo-zapleczy, na których mógłbym to potestować w ekstremalnych warunkach.

 

Najpierw napisałem o tym skrypcie na forum.optymalizacja.com, bo wydawało mi się, że ich to powinno bardzo zainteresować, ale chyba boją się przetestować skrypt, bo zero odzewu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Idea słuszna ja używam bazę http://sblam.com i .htaccess bo wydaje mi się ze blokowanie na poziomie Apache jest wydajniejsze niż na poziomie PHP, Jednak rozumiem że idea tego skryptu jest inna i ma zabezpieczyć Flood a nie blokować z czarnej listy. Można przecież połączyć te dwie techniki i będzie sporo wydajniej.

 

Gotowy PHP na Sblam.com jest kiepski i trzeba go przerabiać. Za to sama czarna lista w pliku jest bardzo dobra i skuteczna.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Listę z blokowanym IP w .htaccess w sblam kiedyś przeglądałem, ale spamboty nigdy się akurat do moich formularzy nie dorwały, więc lista ta mi nigdy nie była potrzebna. Sam skrypt widzę, że podpina się pod formularz i sprawdza wysyłane treści przesyłając je na serwer autora. Czyli jest to tylko i wyłącznie antyspam do używania tylko przy formularzach.

 

Mój skrypt to antyflood. Co do wydajności to mając dostęp do apache możliwe, że lepiej jest zainstalować mod_evasive (mój skrypt to coś analogicznego do parametry DOSSiteCount: dla PHP), ALE są dwie istotne różnice.

1. Dla mod_easive nie możemy obniżyć parametru DOSSiteCount do 20 czy nawet 10 na blogach, bo moduł poblokuje nam najprawdopodobniej też boty wyszykiwarek (google, yahoo, msn).

2. mod_easive chroni ogólnie przed dosem, zapamiętuje dodatkowo inne, całkowicie zbędne przy normalnym działaniu strony informacje (jak DOSHashTableSize) i powinno się go raczej uruchamiać tylko w sytuacji ataku, a ja skupiłem się wyłącznie na floodzie z IP, który jest problemem codziennym.

 

Chyba muszę dwie rzeczy dopisać do FAQ odnośnie wydajności. Po pierwsze mój skrypt w działaniu to dodatkowo 2 odczyty, 1 zapis na plikach mających rozmiar 23 bajty, więc dodatkowy narzut z faktu używania skryptu jest praktycznie żaden. Do tego nie ma szansy, żeby skrypt przyblokował człowieka przeglądającego stronę. Więc testując można tylko zyskać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie chce mi się przedzierać przez całość kodu żeby zobaczyć co z tym robisz ale google (z czego oczywiście korzysta bot) ma również inne pule adresów np.:

	

OrgName:	Google Inc.
OrgID:	  GOGL
Address:	1600 Amphitheatre Parkway
City:	   Mountain View
StateProv:  CA
PostalCode: 94043
Country:	US

NetRange:   216.239.32.0 - 216.239.63.255
CIDR:	   216.239.32.0/19

 

Co się stanie jeżeli stronę odwiedzi bot a później sprawdzający z adresu który nie uwzględniłeś?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Noone, z tego co wiem, to crawlery google i yahoo działają na zakresie podanym w moim skrypcie. Z resztą sprawdź revers-DNS dla tego IP - to nie jest googlebot.

 

Listę IP wyszukiwarek można znaleźć tutaj: http://iplists.com/. Zarówno google jak i inne wyszukiwarki mają na tych listach zapisane różne adresy należące do korporacji, ale nie znaczy to, że są to adresy botów indeksujących. Jeżeli znajdziesz w którymś z adresów spoza puli bota indeksującego, to poprawię skrypt.

 

Takiej konfiguracji używam od roku czasu na jednej ze stron ze sporym site. googlebot potrafi zaindeksować 3500 stron/dobę. Nigdy nie zaindeksował strony z komunikatem o blokadzie (bo monitorowałem to przez jakiś czas, tak samo yahoo).

 

Na stronie dodałem opis instalacji dla popularnych skryptów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Coś mi na forach phpBB by Przemo nie śmiga ten skrypt.

 

Zamiast tokena (confirm_register.htm) mam komunikat:

exaBotDefender blad: nadaj uprawnienia zapisu dla./bdsave/1/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Warning: fopen(./bdsave/1/83.12.****) [function.fopen]: failed to open stream: No such file or directory in /*******/public_html/exaBD.php on line 115

exaBotDefender blad: nadaj uprawnienia zapisu dla./bdsave/1/

 

A może to być spowodowane tym że mam uruchomione na forum przyjazne linki SF?

 

 

EDIT

 

Jak widzę problem jest z drzewkiem katalogów. Wrzuciłem do katalogu /admin/ folder bdsave i PA śmiga...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ponieważ pewna polska firma hostingowa, której nazwy z litości nie wymienię, nie wysłała żadnego powiadomienia, że kończy się mój półroczny okres wynajmu i najzwyczajniej w świece zamknęła mojego VPSa (na którym nic ważnego nie było) link do strony ze skryptem już nie działa, domeny nie będę przedłużał a dostałem już kilka próśb o podesłanie skryptu, więc wykonałem mirror z dokumentacją i linkiem do skryptu:

 

http://docs.google.com/View?id=dgkd4pj4_0hfj5j4gx

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×