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
|