Ключевые слова:iptables, limit, bandwidth, tcp, firewall, linux, (найти похожие документы)
From: Denis Fedorishenko (NuclearCat) <nuclearcat@nuclearcat.com>
Newsgroups: email
Date: Mon, 13 Oct 2003 14:31:37 +0000 (UTC)
Subject: Борьба с Kazaa и прочими "качальщиками"
Методы обнаружения вредного траффика с помощью Linux.
Есть такая замечательная вещь в Linux, patch-o-matic, которая может
значительно расширить возможности firewall.
К примеру необходимо запретить Kazaa, но основная проблема, есть
множество серверов с нестандартными портами.
Решение:
- собираем поддержку "string" в patch-o-matic.
- смотрим на протокол Kazaa, классический пример применение HTTP
подобного протокола, в заголовках которого содержиться
HTTP/1.0 503 Service Unavailable.Retry-After: 3..X-Kazaa-Username: BlazeTre
e..X-Kazaa-Network: KaZaA..X-Kazaa-IP: 130.58.237.139:2265..X-Kazaa-Superno
deIP: 24.30.229.147:1059..
- добавляем в firewall строчку:
iptables -A FORWARD -m string --string "X-Kazaa-" -j REJECT
Все. Kazaa перестает работать. Возможно что-то частично и будет
работать, но это решаемо тем же методом.
И все таки, если клиенты качают множеством различных других программ,
и обходят эти запреты. К примеру IRC DCC, трансферы больших файлов
через аськи, закачки через браузер файлов .html, которые на самом деле
являются mp3.
Решение также есть в patch-o-matic.
- Собираем поддержку connbytes
- добавляем правило в firewall к примеру:
iptables -A FORWARD --connbytes 100000 -j REJECT
- теперь все TCP сессии более 100 Кбайт будут "обрезаны", необходимо
добавить исключения для протоколов типа ssh, обычные "долгоживущие"
чаты и т.п.
Более рекомендуемо сделать MARK, и загнать все такие трансферы в
какой-либо класс шейпера. Т.е. если например помеченные пакеты - все
их отнести к классу 1:51 где скорость ограничена от 32К до 64К(в
зависимости от свободной полосы). Очень удобно для организаций с
анлимитедом, при необходимости обеспечить интерактивность других
приложений.
tc filter add dev eth1 parent 1:0 protocol ip prio 100 handle 51 fw classid 1:51
tc class add dev eth1 parent 1:2 classid 1:51 htb rate 32Kbit ceil 64Kbit
tc qdisc add dev eth1 parent 1:51 handle 51 sfq perturb 10
There is a tool called ipp2p to identify P2P traffic. It introduces a new
match module to iptables and allows you to catch the following P2P Networks
at the moment:
-Fast Track (KaZaA and clones)
-Gnutella
-Edonkey (Edonkey, Emule, Overnet ...)
-Direct Connect
You can download it from:
http://ilabws13.informatik.uni-leipzig.de/~mai97bwf/ipp2p.tar.gz
I have a problem. Then I write this line:
"iptables -A FORWARD -m string --string "X-Kazaa-" -j REJECT"
Server write my a following error:
"iptables: No chain/target/match by that name"
It look's that it's a bad syntax...
What I can do?
Please help.
Thank's.
Your kernel or iptables can't use ipp2p.
You have to compile kernel with patch from ipp2p side, then you have to compile iptables with patch from ipp2p.
http://www.ipp2p.org/