Blokada dzielenia Internetu. - Michał Sternadel Blokada dzielenia Internetu.

Światło: Zapal | Zgaś

Blokada dzielenia Internetu.

Dodano: 26.01.2008, 20:18:07

Edycja:
Prawdopodobnie szukasz sposobu na ominięcie blokady dzielenia Internetu. Jeśli nie, zapraszam do lektury.

Już od dawna nosiłem się z zamiarem napisania notki o sposobie bardzo dobrej blokady podziału łącza internetowego. Na wstępie napiszę, że nigdy nie popierałem tego rodzaju praktyk i popierać raczej nie będę. Wyzysk jest wszędzie -- macie prawo do nieograniczonego dostępu do internetu, a wszelkie blokady routerów wprowadzają ograniczenia. Z tego powodu nie lubię mojej sieci -- trzeba kombinować, aby komputer, na którym instaluje się cokolwiek miał choć przez chwilę Internet. Konkurencja również nie daje za wygraną i krzyczy 30 PLN miesięcznie za możliwość dzielenia łącza. Niech się wypchają!

No, ale po krótkim wstępie trzeba przejść do setna sprawy... Sposobów na taką blokadę jest wiele.

Najsławniejszym jest oczywiście ustawienie TTL na 1 do sieci lokalnej, co sprawia, że pakiety giną po pierwszym urządzeniu, jakie je odbierze. Współczesne routery sprzętowe łatwo nauczyć jak podbijać TTL, więc powoli ta metoda staje się zupełnie nieskuteczna.

Drugi sposób jest również oparty o TTL, a raczej sprawdzanie wartości TTL pakietów przechodzących przez bramkę pochodzących z sieci lokalnej. Ta metoda również nie jest zbyt dobra, z dwóch powodów: nigdy tak na prawdę nie wiemy jaki TTL ustawi sobie nasz użytkownik, a przecież zmuszać go do ustawienia TTL takiego jakie się nam podoba, poza tym, nie jest problemem zmienić TTL wychodzących pakietów na routerze klienta na przez nas sprawdzany.

Obydwa te sposoby można bardzo łatwo ominąć, nie podam tutaj gotowców, bo głodnemu daje się wędkę, nie ryby. W skrócie napiszę: iptables --ttl-inc, iptables --ttl-set.

Trzecia metoda, którą wymyśliłem dość niedawno wydaje się być bardzo skuteczna, jest ściśle teoretyczna, ale w mojej głowie wszystko zadziałało -- może i w Waszej sieci zadziała. Metoda ta również jest oparta o wspaniałe TTL wraz z wspomaganiem Layer7 (l7-filter.sourceforge.net). W sumie to nie wiem, czy ktoś przypadkiem nie wpadł na nią wcześniej -- jeśli tak, przepraszam, nie szukałem tak na prawdę czy ktoś ją już wymyślił. Na czym polega myk? To proste. W mojej głowie istniała wielka sieć, która ma główny router, który wypuszcza wszyskie pakiety z wewnętrznych routerów do świata. Na wewnętrznych routerach, które zarządzają ruchem podsieci odpowiedni klienci mają przypisywane dane TTL za pomocą iptables i parametru --ttl-set. Umówmy się, że blokada podziału to TTL=1, a zezwolenie na podział to TTL=2. Na przykład Kazek, który ma w domu 2 komputery chce dzielić łącze, a ponieważ go lubimy nakładamy za pomocą --ttl-set TTL o wartości 2 dla wszystkich pakietów od niego wychodzących. Jarek jest gruboskórnym draniem i w dodatku byłym chłopakiem naszej siostry, który złamał jej serce -- za karę dostaje od nas TTL=1. Z początku to nic nie zmienia, ale... przecież nasz główny router kieruje całym ruchem, ze wszystkich podsieci. Teraz wystarczy sprawdzić na routerze głównym wartość TTL, za pomocą parametru --ttl-check. Gdy TTL=1 cel określamy jako DROP, gdy TTL=2 cel określamy jako ACCEPT.

Jak widać metoda jest bardzo prosta -- czy na prawdę wymaga dwóch routerów? Szczerze, w głowie jeszcze nie układałem ruchu sieci, gdy router jest jeden, ale podejrzewam, że można zrobić NAT/MASKARADĘ na lokalnym interfejsie, ustawiając TTL'e, potem zrobić drugą na fizycznym interfejsie, sprawdzając TTL. Ewentualnie utworzyć wirtualne interfejsy i tam to zrobić lub spiąć ze sobą dwie karty sieciowe kablem krosowanym. Jakie szybkie to będzie -- nie jestem w stanie powiedzieć -- przecież nie praktykuję blokad internetu.

Wspomniałem, że będzie potrzebne nam również narzędzie Layer7, które tak na prawdę jest zestawem łatek na jądro oraz iptables, umożliwiające filtrowanie pakietów po ich zawartości. Po co? No już odpowiadam -- przecież istnieją serwery proxy, ściślej mówiąc skarpetki (socks v4/5), które można bez problemu postawić na routerze (mądrzejszym), omijając tym samym wszystkie powyższe blokady dzielenia łącza. Za pomocą połatanego iptables jesteśmy w stanie zablokować ruch pochodzący z socks (na stronie projektu jest napisane o socks w wersji 5, nie wiem jak z wersją 4), za pomocą parametru -m layer7... Problemem pozostaje jak zawsze jednak www-proxy, którego źle skonfigurowanego również można pewnie zablokować, ale to już historia na inny wieczór.

Warto ustawić TTL wejściowy do sieci na 1 oraz dodatkowo badać na routerach podsieci, czy przypadkiem nie zmienia się czasami na 2 (gdy na przykład sam router łączy się z internetem, żeby pobrać czas czy aktualizacje oprogramowania) i wyszukiwać tym samym kombinujących. Kombinujący niech sprawdzą w źródłach jądra net/ipv4/ip_forward.c i zahaszują linię ip_decrease_ttl(iph); Jest to niezgodne z RFC, ale czego się nie robi, żeby oszukać wrednego admina?

W niektórych przypadkach, raczej w większości przypadków zabawy w Layer7 można sobie odpuścić -- większość dzisiejszych użytkowników internetu nie zna w ogóle skarpetek.

Zabraniam wykorzystywania tej blokady do wyzysku!


Dodaj komentarz

Szybki kontakt:

Pozostaw zółtą karteczkę-wlepkę pod adresem:
Kraków, ul. Pawia 3 z id: #776AFFDA# oraz wiadomością. Jak nie zginie -- odczytam.

Ostatnie fotografie


Paproć
Paproć

Grzyb
Grzyb

  Więcej...