Blog (22)
Komentarze (997)
Recenzje (0)

Filtrowanie treści WWW, czyli co wolno Wojewodzie...

@parranoyaFiltrowanie treści WWW, czyli co wolno Wojewodzie...19.03.2013 16:31

Poniższy tekst można potraktować jako osobny lub jako rozszerzenie poprzednich wpisów.

Co Pan taki ciekawski?

Powodów do filtrowania treści WWW (i ruchu internetowego w ogóle) jest wiele i każdy ma inne ale głównie są to pracownicy przesiadujący na Facebooku, oglądający treści erotyczne, P2P itp.

Filtrowanie treści przesyłanych protokołem HTTP jest bardzo łatwe. Wystarczy serwer proxy Squid i Dansguardian. Jak zainstalować i wstępnie skonfigurować ten tandem w systemie OpenBSD opisałem tutaj (konfiguracja Squid i Dansguardian dla BSD i Linuksa jest identyczna). Zdaję sobie sprawę z tego, że OpenBSD to niestety egzotyka w rodzinie systemów uniksopodobnych a prym wiedzie Linux, dlatego poniższy wpis opisuje konfigurację dwóch systemów: OpenBSD i Linux Debian.

Instalacja w Debianie:

apitude update
aptitude install dansguardian squid3

Kilka chwil i gotowe. Podczas instalacji tworzone są skrypty startowe dla tych programów, dzięki czemu będą uruchamiały się automatyczne razem z systemem. Dokładną konfigurację tych programów pomijam, ponieważ jest to temat rzeka i "niestety" trzeba poczytać dokumentacje.

Nie będziesz mi mówił co mam robić...

No to trzeba by jeszcze jakoś nakłonić użytkowników do korzystania z serwera proxy. Najprościej jest to zrobić dopisując odpowiednie regułki do firewalla na routerze. Jeśli proxy pracuje na routerze (co ze względów bezpieczeństwa jest niezalecane) regułki firewalla dla Linuksa wyglądają następująco:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 8080 --syn -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

W przypadku OpenBSD sprawa jest znacznie prostsza:

pass in on em1 proto tcp from 192.168.1.0/24 port www rdr-to 192.168.1.10 port 8080

em1 to w moim przypadku nazwa sterownika karty sieciowej po stronie LAN

Jeśli serwer proxy pracuje na innym komputerze (w tym przypadku ip owego komputera to 192.168.1.10), linuksowe reguły firewalla wyglądają tak:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 8080 --syn -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 ! -s 192.168.1.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080

A w OpenBSD wygląda tak: :-))

pass in on em1 proto tcp from 192.168.1.0/24 port www rdr-to 192.168.1.1 port 8080

Masz jakiś pomysł?

No dobra, ale co z ruchem HTTPS? Można deszyfrować dane "w locie" stosując technikę SSL Bump, której implementacja jest raczej kłopotliwa (w przypadku Debiana konieczne jest wkompilowanie w Squida obsługi SSL, OpenBSD dostarcza odpowiednio przygotowany pakiet Squida) a do tego w naszym kraju chyba nielegalna (możemy przez przypadek przechwycić czyjeś hasła np. do banku). Można też wklepać do regułek firewalla adresy ip zabronionych stron. Jak to zrobić w przypadku bardzo dużej kolekcji adresów napisałem tutaj, lecz mimo to jest to metoda żmudna i często nie przynosi oczekiwanych rezultatów, ponieważ wiele serwisów stosuje tzw. round robin DNS.

Coś wymyślę...

Rozwiązaniem tego problemu (i nie tylko tego) jest usługa świadczona przez www.opendns.com. Konto na własne potrzeby jest bezpłatne (przynajmniej kiedyś było), firmy muszą płacić ale uważam, że warto. W skrócie, polega ona na korzystaniu z zarządzalnych serwerów DNS. Użytkownikom ze zdefiniowanej sieci (rozpoznawani są po adresie ip) możemy "wyłączać" kawałki internetu. Tak to mniej więcej wygląda:

Sterownia internetu.
Sterownia internetu.

Tym oto sposobem decydujemy co użytkownik naszej sieci może oglądać niezależnie od tego czy strona korzysta z HTTP czy HTTPS.

W oddziałach firmy korzystamy z neostrady, a ponieważ identyfikacja klientów Opendns odbywa się na podstawie adresu ip właśnie, konieczne jest stosowanie programu ddclient. Ddclient obsługuje protokół wykorzystywany przez wielu dostawców usług obsługi dynamicznych adresów ip np. dyndns.com. Instalacja i konfiguracja jest bardzo prosta. Debian:

[code=]aptitude install ddclient[/code]

nano /etc/ddclient.conf

OpenBSD:

pkg_add ddclient

Do pliku /etc/rc.local (OpenBSD) dopisujemy:

/etc/rc.d/ddclient start

W pliku ddclient.conf wpisujemy:

[code=]protocol=dyndns2[/code]

[code=]# jeśli adres ip ma być pobrany z karty sieciowej[/code]

[code=]use=if, if=eth0[/code]

[code=]# lub jeśli adres ip ma być pobrany za pośrednictwem strony www[/code]

[code=]# tak się dzieje jeśli Twój ISP przydziela adresy nieroutowalne[/code]

[code=]use=web, web=myip.dnsomatic.com[/code]

[code=]server=updates.opendns.com[/code]

[code=]login=nazwa_użytkownika[/code]

[code=]password='hasło'[/code]

[code=]ssl=yes[/code]

[code=]nazwa_sieci_w_opendns[/code]

Znów mi rozkazujesz?

Jeśli oprócz opendns wykorzystujesz Squida, w jego pliku konfiguracyjnym squid.conf należy wpisać adresy DNS z których ma korzystać a co za tym idzie, również przeglądarki użytkowników (przeglądarka dostaje treść z naszego proxy przecież).

[code=]dns_nameservers 208.67.222.222 208.67.220.220[/code]

Oprócz tego warto dopisać regułki firewalla przekierowujące cały ruch DNS do serwerów opendns co wpływa na wszystkie programy zainstalowane na komputerach w sieci LAN. Jak zwykle linuksowe regułki są trochę bardziej zagmatwane:

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 208.67.222.222:53
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -m statistic --mode nth --every 2 --packet 1 -j DNAT --to-destination 208.67.220.220:53

A w OpenBSD prościej:

pass in on em1 proto tcp from 192.168.1.0/24 port domain rdr-to {208.67.222.222 208.67.220.220} port domain

Dlaczego akurat tak? Po co rozkładać ruch DNS na dwa serwery? Ano po to konfiguruje się dwa serwery DNS: podstawowy i zapasowy, że jak jeden nie działa to ruch przejmuje drugi. Jeśli ruch przekierujemy tylko na serwer podstawowy, to w przypadku jego awarii nasza sieć też padnie. A tak, jak klient nie uzyska odpowiedzi od serwera DNS, zapyta drugi raz, wówczas firewall automatycznie prześle zapytanie pod drugi serwer na liście. Oczywiście sieć będzie działała powoli ale przynajmniej będzie działała w ogóle. Tym samym sposobem możemy uzyskać prymitywne równoważenie obciążenia, które opisałem w tutaj.

I to wszystko?

Z całą pewnością metod filtrowania ruchu sieciowego jest znacznie więcej, jednak te stosuję u siebie i sprawdzają się znakomicie. Kto zna lepsze sposoby niech śmiało wygarnie w komentarzu.

P.S.

Jeśli wśród czytających ten wpis są osoby, których gnębi admin stosujący podobne praktyki, proszę, nie czytajcie tego wpisu ;-)

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.