[HowTo] Blokowanie stron xxx

frytek
Wytworny Kaczor
Wytworny Kaczor
Posty: 330
Rejestracja: 06 sty 2006, 00:03
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[HowTo] Blokowanie stron xxx

Post autor: frytek » 10 cze 2008, 21:40

W celu uniemożliwienia użytkownikom dostępu do stron o charakterze, nazwijmy to, szkodliwym, posłużymy się dwoma programami. Będzie to Tinyproxy i DansGuardian.

Zasada blokowania polega na tym, że konfigurujemy przeglądarkę (tu: Firefox) w taki sposób, aby łączyła się z internetem jedynie za pośrednictwem serwera proxy (tu: Tinyproxy), który z kolei poddaje treść strony filtrowaniu programem DansGuardian. Opisany tu układ może służyć za filtr treści nie tylko dla lokalnego komputera, ale i dla sieci lokalnej. Opcjonalnie, może też prowadzić skanowanie pobieranych plików przy pomocy antywirusa ClamAV.

Program DansGuardian zawiera całkiem sporą listę reguł, opracowanych przez twórców. Potrafi blokować strony na podstawie zawartości ich adresu http, oraz określonych słów zawartych w treści.

Pliki konfiguracyjne filtrów, znajdujące się w katalogu /etc/dansguardian są podzielone tematycznie i funkcjonalnie. Istnieje tam m. in. lista bannedsitelist (zakazanych domen), bannedextensionlist (zakazanych rozszerzeń, np. .avi, .exe), exceptionsitelist (domen wyłączonych z filtrowania) itd, oraz listy zakazanych słów w różnych językach, dotyczących seksu, hazardu, przemocy, narkotyków itd. Edycja tych plików jest udokumentowana na stronie http://dansguardian.org oraz w środku tych plików, wraz z przykładami, więc można je sobie dostosowywać według potrzeb.

Najpierw instalujemy programy:

Kod: Zaznacz cały

sudo apt-get install dansguardian tinyproxy 
Potem konfigurujemy tinyproxy. W pliku /etc/tinyproxy/tinyproxy.conf ustawiamy:

Kod: Zaznacz cały

Port 3128
User nobody
Group nogroup
Listen 127.0.0.1
Logfile "/var/log/tinyproxy.log"
Syslog Off
Parametry te są rozrzucone po całym pliku konfiguracyjnym i wydają się esencjonalne dla działania programu zgodnie z naszymi oczekiwaniami.

Port 3128 jest portem typowo używanym przez squida (większy program typu proxy), stąd nasz wybór. Parametr "Listen" umożliwia zmuszenie tinyproxy aby przyjmował połączenia jedynie z naszego własnego komputera (a konkretnie: z DansGuardiana). Jest to niezbędne z powodów bezpieczeństwa: gdybyśmy nie mieli tego wpisu oraz dodatkowego firewalla (i publiczny adres IP) nasz tinyproxy bardzo szybko stałby się w sieci darmowym anonymizerem, umożliwiając obcym ludziom ściąganie z sieci materiałów na nasz rachunek (tzn. z naszego IP).

Kolejnym krokiem jest edycja pliku konfiguracyjnego Dansguardian, /etc/dansguardian/. Parametry, które ustawiamy to:

Kod: Zaznacz cały

Language = 'polish'
filterip = nasze_IP
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
Parametr filterip stanowi również ograniczenie dostępu do DansGuardiana. Bez niego, możliwe jest podłączanie się do niego na wszystkich interfejsach sieciowych i adresach (nie chronionych firewallem). Adres 127.0.0.1 umożliwi łączenie tylko z przeglądarek lokalnych, a adres sieci prywatnej (np. 192.168.1.1 - jeśli taki mamy) - dopuści połączenia od innych komputerów z naszego LAN'u. Oczywiście wymagany będzie do tego również zezwalający wpis w regułce firewalla.

Oprócz wymienionych ustawień, na początku pliku należy zakomentować znakiem # linię rozpoczynającą się od słów "UNCONFIGURED" - dopiero wówczas można uruchomić Dansguardiana komendą:

Kod: Zaznacz cały

sudo /etc/init.d/dansguardian restart

Trzeba pamiętać też o tym, że każdorazowa zmiana treści plików z filtrami również wymaga ponownego uruchomienia DansGuardiana.

Teraz możemy przystąpić do testów. Najpierw sprawdzimy Tinyproxy.
W Firefoksie, w menu Edycja/Sieć/Ustawienia włączamy "Ręczną konfigurację serwera proxy" i w polu "Serwer proxy HTTP" wpisujemy 127.0.0.1 oraz port 3128 (ten, na którym skonfigurowaliśmy Tinyproxy). Po zamknięciu okienek, przeglądarka powinna być w stanie otwierać strony internetowe - na razie bez filtrowania. Ślady tych połączeń znajdziemy wyświetlając jako root końcówkę logu, i otwierając kilka stron w Firefoksie:

Kod: Zaznacz cały

sudo tail -f /var/log/tinyproxy.log
Jeśli wszystko działa, w ustawieniach sieciowych proxy Firefoksa zmieniamy port na 8080 (Uwaga: zgodnie z konfiguracją DansGuardiana! Jeśli w konfiguracji DansGuardiana jako adresu do nasłuchu użyliśmy adresu lokalnego sieci LAN, np. 192.168.1.1, a nie loopback 127.0.0.1, to w przeglądarce lokalnej należy również użyć ten sam adres, a nie loopback 127.0.0.1) Strony powinny nadal się otwierać, ale już z wyłączeniem tych, które przypasują do filtra. W ramach testu można np. dodać domenę microsoft.com na końcu pliku /etc/dansguraian/bannedsitelist, uruchomić ponownie DansGuardian i spróbować ją otworzyć.

Domyślna filtracja jest dość szczelna, zwłaszcza dla witryn anglojęzycznych, a po dodaniu polskiej listy słow (do znalezienia w necie) - staje się jeszcze lepsza. I w sumie najczęściej edytowanym przeze mnie plikiem jest dodawanie wyjątków (exceptionsitelist) ponieważ nawet niewinne domeny potrafią wywoływać fałszywe alarmy.

Ślady działania filtrów, z podanymi słowami, które spowodowały zablokowanie możemy prześledzić wykonując w konsoli komendę

Kod: Zaznacz cały

sudo tail -f /var/log/dansguardian/access.log
i otwierając kilka testowych stron, pasujących do filtra.

Ostatnim etapem jest wymuszenie na użytkownikach korzystania z połączeń jedynie przez proxy, aby nie mogli omijać filtracji.

Najładniejszą metodą jest użycie "transparentnego proxy", czyli takie ustawienie iptables, które sprawi, że nawet nieskonfigurowane programy, usiłujące łączyć się ze zdalnym portem 80 zostaną tam skierowane przez proxy. Niestety, nigdy nie udało mi się uzyskać tego efektu, a poza tym, wymaga on squida, którego nie używam, ponieważ jest dla mnie za duży w sensie konsumpcji zasobów kompa. Dlatego w powyższym opisie posłużyłem się tinyproxy.

Ale jeśli nie umiemy wymuszać transparentnego (czyli przeźroczystego) ruchu przez filtr, to i tak możemy sobie poradzić. Mianowicie, skonfigurujemy system tak, żeby przeglądarki internetowe w sieci LAN mogły się łączyć tylko przez proxy filtrujące, i nie mogły go omijać.

Ustawimy tak reguły firewalla na kompie z DansGuardianem żeby komputery lokalne nie mogły łączyć się ze światem na port 80. Jedynym komputerem, który będzie miał to prawo będzie ten z DansGuardianem.

Robię to przy pomocy Firestartera. Jest to zresztą program, którego używam do generowania reguł firewalla chroniącego komputer bezpośrednio podpięty do internetu.

Po pierwsze, w Preferencje / Ustawienia sieciowe (Network Settings) pokazujemy, który interfejs sieciowy jest zewnętrzny (czyli wystawiony na zagrożenia internetowe), a który wewnętrzny, czyli podpięty do LAN-u. Następnie zaznaczamy "Enable connection sharing" czyli "Udostępniaj internet". Zamykamy okienko, akceptując zmiany i udajemy się na zakładkę Policy (Polityka). Poniżej wybieramy reguły dla ruchu wychodzącego (Outbound traffic) po czym klikamy prawym klawiszem myszy w najniższym polu (Deny service). Naciskamy "Dodaj regułę" (Add rule) i z listy wybieramy HTTP (port 80), gdy źródłem jest (When the source is) "LAN clients".

Od tej chwili użytkownicy z LAN-u muszą mieć przeglądarki skonfigurowane na korzystanie z proxy. W przeciwnym wypadku nie będą w stanie połączyć się z internetem i przeglądać stron www.

Do tego samego celu można wykorzystać ustawienia lokalnych firewalli na komputerach w sieci (tzn. dać im dostęp tylko do DansGuardiana, a nie do całego świata) albo np. polityki systemowe z Windows (zablokować możliwość edycji ustawień IE) - aczkolwiek zarządzanie centralne jest dużo prostsze.

Jeśli dajemy użytkownikom (również lokalnym) do dyspozycji tylko Firefoksa, to również bardzo wygodnym sposobem jest zainstalowanie rozszerzenia "Public Fox". Umożliwia ono założenie hasła m. in. na menu Edycja/Preferencje, uniemożliwiając dostanie się do konfiguracji sieci i jej zmianę. Po instalacji trzeba uaktywnić pozycje "Lock Firefox options", "Lock 'about:config" oraz "Lock add-ons" (ta ostatnia pozycja uniemożliwia dostanie się bez hasła do menu rozszerzeń i deinstalację "Public Fox".
:)

Dla chętnych, do poczytania jest też ta stronka: http://www.beskid.net/~wladek/linux/squid.html
ODPOWIEDZ

Wróć do „Software-Sieć”