artykuły
Powrót do listy artykułów

Temat artykułu: Blokowanie programów typu p2p - KaZaA
Tekst napisał pitt2k dnia 08-01-2004

Nie jest to łatwy temat do rozgryzienia i musimy sie zagłębić w tajniki działania tego typu softu.

Po pierwsze musisz mieć urządzenie które ma możliwość blokowania portów i przez które pakiety lecą w świat. Jeżeli masz np. router od Neostrady+ (i korzystasz z niego z funkcją routera) to raczej nic nie zrobisz bo TPSA nie daje loginu i hasła do modemu więc i nic nie możesz tam ustawić.
Jeżeli masz router sprzętowy (nie będę wnikał w dywagacje co to jest router sprzętowy a co software'owy - mam nadzieję że czujesz to intuicyjnie) z możliwością filtrowania pakietów (czyli z funkcją firewall'a) to już jest lepiej. Jeżeli Internet udostępniasz jakimś programem pod Windows'em (np. Winroute) to też nie jest źle, a jak używasz Linuxa to jesteś w domu :-)

Ogólnie rzecz polega na tym aby zablokować transmisję na określone porty (względnie numery IP) i cały pic polega na tym aby wiedzieć jakie to porty.

Dla podstawowych usług takich jak ftp chociażby można w swoim katalogu z Windows'em (bądź w /etc w Linuxie) znaleźć plik services w którym ładnie są te usługi powypisywane (i dowiemy się tam że ftp korzysta z portu 21 protokołu tcp/ip - blokujemy wyjście pakietów na ten port na routerze i już nikt nie połączy się z serwerem ftp - chyba że postawionym na innym porcie, ale to inna bajka - na każdą blokadę znajdzie się obejście ;-). Co zrobić z usługami nie wymienionymi w services... hmm, można poszukać w Internecie, jak np. na tej stronie, lub na tej. Sporo informacji można znaleźć na witrynie samej gry bądź programu, w dokumentacji lub po prostu na google - ewentualnie bawić się poleceniem netstat (netstat -a -n) na stacji i sprawdzać dokąd się dobija dany program.

A co mamy zrobić jak już wiemy z którego portu korzysta gra/program? Zablokować go :-) Czasem może się to okazać dość trudne, tak jak w przypadku choćby programu KaZaA - jest to tak sprytna bestia (a jej twórcy tak durni), że program zmienia sobie porty i to co skutkowało kiedyś (blokada portu 1214 tcp/ip) już nie działa - KaZaA potrafi zmieniać porty jak rękawiczki - a to port 80 (http), a to 443 (https), jak te niedostępne to pójdzie po 25 (smtp) lub 110 (pop3) - po prostu paranoja, a to dopiero początek... Rozwiązaniem (w przypadku Linuksa) może być zainstalowanie łatki na jądro i przekompilowanie iptables (krótki opis na stronie http://www.knowplace.org/netfilter/ipt_compile.html) i filtrowanie pakietów po zawartości KaZaA w tych pakietach - chodzi o CONFIG_IP_NF_MATCH_STRING (gorzej jak będzie to np. mail z odpowiedzią na ten artykuł - to co właśnie czytasz ;-) dlatego lepiej ograniczać pasmo a nie całkowicie blokować.
FreeBSD ma zapewne podobne rozwiązanie, odsyłam do pl.comp.os.freebsd, a użytkowników innych systemów... na inne grupy.

Jeżeli chodzi o regułkę blokującą na spatchowanym Linuksie Kaze, to można to zrobić mniej więcej tak:

iptables -I FORWARD -p TCP -s nasza_sieć/maska -m string --string 'X-KaZaA' -j DROP

Jeszcze co do KaZaA możemy spróbować przedostatniej (dawniej była to ostatnia ;-) deski ratunku - zanim klient ściągnie listę serwerów (czy co on tam ściąga) należy zablokować IPki 217.116.226.0/24 i port 1214 (na wszelki wypadek)
- dostałem sygnały że to rzeczywiście działa na nowych userów kazy. Niestety na starych już nie...

Ostatnią deską ratunku jest po prostu zablokowanie portów tcp/ip 1024:4000 - podobno pomaga i KaZaA się nie łączy (jak się połączy to wyciąć jeszcze do :5000). Nie wiem czy będzie to miało jakieś skutki uboczne - na pewno blokujemy jakiś soft bo są usługi działające na tych portach, ale wtedy można robić wyjątki. No i trzeba pamiętać że porty >1024 to porty klienckie, więc może to minimalnie wpłynąć na transmisje danych (aplikacja będzie musiała przeskoczyć na inny port). Mimo wszystko radzę przycinać, nie blokować - przez to unikniemy też konfliktu z userami.

I tym optymistycznym akcentem... ;-)

Tekst opracowany na podstawie FAQ grupy pl.comp.networking