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
Kod: Zaznacz cały
Port 3128
User nobody
Group nogroup
Listen 127.0.0.1
Logfile "/var/log/tinyproxy.log"
Syslog Off
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
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
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
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