Re: [Lug-bg] Филтриране на Web Crawlers чрез iptables
 
- Subject: Re: [Lug-bg] Филтриране на Web Crawlers чрез iptables
 
- From: Marian Marinov <mm@xxxxxxxx>
 
- Date: Tue, 29 Jul 2008 06:09:16 +0300
 
 
 
On Monday 28 July 2008 22:50:37 Georgi Chorbadzhiyski wrote:
> On 07/28/08 15:55, Веселин Михайлов wrote:
> >   Имам следният въпрос, над който се чудя и не успявам да стигна до
> > работещо решение. Възможно ли е (и как) да се ограничат временно връзките
> > на Web Crawler-те (IP адресите им) чрез лимит?
> >
> >   Рових и четох документация, но нещо ми се изплъзва. Идеята е когато
> > един "паяк" направи определено количество връзки към хоста да бъде
> > блокиран за определено време (примерно час).
> >
> >   Възможно ли е това да стане само с iptables или ще трябва да се пише
> > някакъв допълнителен скрипт/демон който да го прави?
>
> Има доста видове лимити, които можеш да приложиш (connlimit, hashlimit,
> limit) виж man iptables
>
> Ето ти един пример:
>
> iptables -A INPUT -s XX.XX.XX.XX/YY -p tcp --dport 80 --syn -m limit
> --limit 5/hour -j ACCEPT iptables -A INPUT -s XX.XX.XX.XX/YY -p tcp --dport
> 80 -j LOG
> iptables -A INPUT -s XX.XX.XX.XX/YY -p tcp --dport 80 -j REJECT
>
> XX.XX.XX.XX/YY ти е мрежата, която искаш да има достъп до порт
> tcp/80 по 5 пъти на час макс.
>
> Това дето си решил да го правиш не скалира особено, най-малкото
> защото трябва да изровиш на crawler-ите ip мрежите, а не зная те
> колко често се сменят и колко са.
Принципно ако говорим за точно определен Web Crowler или няколко такива които 
познаваш, можеш да направиш един списък с User-Agents на тези web crowlers и 
след това да лимитираш само техните връзки:
<IfModule mod_setenvif.c>
    BrowserMatchCase "XXXCrowler" bad
    BrowserMatchCase "YYYCrowler" bad
</IfModule>
или 
RewriteCond %{HTTP_USER_AGENT} ^XXXCrowler$ [E=bad:yes]
RewriteCond %{HTTP_USER_AGENT} ^YYYCrowler$ [E=bad:yes]
И накрая базирано на тази информация да вкараш трафика през mod_choke.
Или ако предпочиташ mod_limitipconn мога да ти направя и limitipconn да може 
да мачва по env.
А ако искаш директно да го drop-иш: 
BrowserMatchNoCase Webserver_Stress_Tool baduseragents
<Directory /xxx>
 Order allow,deny
 Deny from env=baduseragents
 Allow from all
</Directory>
Надявам се информацията да е полезна за теб и други колеги от листата.
Поздрави
  Мариян
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg
 
 
      
      |