Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


07.06.2022

Red Hat Enterprise Linux 9

Red Hat zaprezentował system operacyjny Red Hat Enterprise Linux 9 (RHEL 9)...
07.06.2022

Technologiczna piaskownica

Koalicja partnerów KIR, IBM, Chmura Krajowa, PKO Bank Polski, Urząd Komisji Nadzoru...
07.06.2022

Sztuczna inteligencja w...

OVHcloud wprowadziło na rynek AI Notebooks – najnowszy element w ofercie usług...
07.06.2022

Spójna ochrona brzegu sieci

Fortinet zaprezentował FortiOS 7.2 – najnowszą wersję swojego flagowego systemu...
07.06.2022

Zarządzanie transferem

Firma Progress wypuściła nową wersję oprogramowania do zarządzania transferem plików...
07.06.2022

Notebook ekstremalny

Panasonic przedstawił 14-calowy Toughbook 40, notebook do pracy w ekstremalnych...
07.06.2022

Zestaw startowy dla robotyki

Firma AMD przedstawiła najnowszy produkt w portfolio adaptacyjnych modułów SOM...
07.06.2022

Precyzja kadrowania

Najnowsze rozwiązania klasy pro firmy Poly mają sprostać zmieniającym się potrzebom...
07.06.2022

Serwer klasy korporacyjnej

QNAP zaprezentował nowy model serwera NAS, TS-h1886XU-RP R2, który działa na systemie...

Kontrola użytkowników za pomocą SquidNT

Data publikacji: 15-05-2012 Autor: Marcin Hańczaruk
Jednym z najpopularniejszych...

Wdrożenie w firmie serwera pośredniczącego SquidNT zintegrowanego z Active Directory pozwala monitorować działalność użytkowników w sieci i ograniczać ich dostęp do takich serwisów, jak np. Facebook czy NK.

Obecnie niemal każdy komputer w biurze ma dostęp do globalnej sieci, a internet jest niezbędnym narzędziem pracy w wielu zawodach. Czasami jednak firmowe zasoby są niewłaściwie wykorzystywane przez pracowników. Dlatego warto monitorować ich pracę i w razie konieczności ograniczać dostęp do wybranych stron WWW, portali lub serwisów społecznościowych. Świetnie w takich sytuacjach sprawdzają się serwery proxy, takie jak np. popularny i darmowy Squid tworzony na licencji GPL.

> TROCHĘ HISTORII

Squid jest jednym z dwóch forków (gałęzi projektu informatycznego) Har­vest Cache Daemon – oprogramowania stworzonego we wczesnych latach dziewięćdziesiątych XX wieku. Początkowo Squid rozwijany był za pieniądze z grantu amerykańskiej agencji National Science Foundation, przyznanego na rozwój technologii cachowania. 

 

Aktualnie projekt finansowany jest z dotacji wolontariuszy i okazjonalnych inwestycji komercyjnych. Wersje Squida dostępne są na wiele platform systemowych. W tym tekście skupimy się na oprogramowaniu dla platformy Windows nazwanej SquidNT.

 

Większość przedstawionych w artykule parametrów konfiguracyjnych można z powodzeniem wykorzystać w wersji linuksowej. Jednak w przypadku integracji Squida z Active Directory wygodniej i naturalniej użyć wersji dla systemów Microsoft.

> PRZYGOTOWANIE ŚRODOWISKA

Aktualną wersję oprogramowania można znaleźć na stronie serassio.it/SquidNT.htm. W momencie pisania artykułu ostatnia, stabilna wersja oznaczona była jako 2.7.STABLE8. W środowiskach testowych można użyć wersji Squid 3, jednak nie jest ona zalecana do środowisk produkcyjnych.

 

Pracę rozpoczynamy od przygotowania serwera. Wersja 2.7 oficjalnie obsługuje szeroką gamę systemów Windows, od NT 4.0 SP4 przez 2000, XP, 2003, Vista na 2008 kończąc (zarówno wersje 32- jak i 64-bitowe). Warto pamiętać, że choć technicznie da się wykorzystać system operacyjny w wersji klienckiej, będzie to w większości środowisk niezgodne z wymogami licencyjnymi dla takiego systemu.

 

Parametry serwera zależą od planowanej liczby użytkowników, jednak sam SquidNT nie ma wygórowanych wymagań sprzętowych. Na oficjalnej stronie windowsowej wersji serwera proxy nie ma co prawda wytycznych dotyczących skalowania wydajności sprzętu w zależności od liczby użytkowników, jednak z praktyki wynika, że nawet relatywnie słaba maszyna z CPU taktowanym zegarem o częstotliwości 2 GHz bez problemu radzi sobie z obsługą 150–200 użytkowników i łącza 30 MB/s. Do tego aplikacja nie wymaga specjalnych warunków pracy i w mniejszych środowiskach może być kolokowana z innymi rolami serwera.

> INSTALACJA SQUIDNT

Skopiowane na dysk archiwum ze SquidNT rozpakowujemy, najlepiej wprost na wolumen z przypisaną literą C. Oczywiście może to być dowolny inny dysk, jednak taki wybór będzie później wymagał ingerencji w pliki konfiguracyjne. Po wypakowaniu danych z paczki ZIP na dysku zostanie utworzony folder squid zawierający komplet plików serwera proxy.

 

W katalogu c:squidetc znajdują się przykładowe pliki konfiguracyjne, z których warto na początku skorzystać. Nadpisujemy trzy pliki cachemgr.conf.default, mime.conf.default oraz squid.conf.default na cachemgr.conf, mime.conf i squid.conf. Następnie tworzymy foldery na potrzeby funkcji cache, wywołując polecenie c:squidsbinsquid –z i instalujemy SquidaNT jako serwis systemowy, wpisując c:squidsbinsquid.exe –i.

 

Serwis zostanie zainstalowany w trybie automatycznego startu i powinien na tym etapie pozwolić na uruchomienie. W domyślnej konfiguracji SquidNT nasłuchuje na porcie 3128. Wpisanie ustawień zainstalowanego serwera proxy w przeglądarce i próba otwarcia dowolnej strony WWW spowodują wyświetlenie informacji o braku dostępu (Access Denied). W tym momencie mamy już zainstalowany i działający serwer proxy. Czas przejść do jego konfiguracji.

> KONFIGURACJA PROXY

Jak przystało na aplikację wywodzącą się ze środowiska UnixLinux, Squid jest w całości konfigurowany za pomocą odpowiednich parametrów wpisywanych w pliku tekstowym. Główny plik konfiguracyjny to c:squidetcsquid.conf. Zawarte są w nim wszystkie dyrektywy konfiguracyjne wraz z obszernym komentarzem i opisem możliwych ustawień. Konfigurację warto rozpocząć od parametru cache_mgr znajdującego się w sekcji # ADMINISTRATIVE PARAMETERS. Określa on adres e-mail, na który automatycznie wysyłane są powiadomienia o problemach z usługą oraz który prezentowany jest użytkownikom w oknie przeglądarki w przypadku błędów i/lub odmowy dostępu.


SKRYPT DO KOMPRESJI LOGÓW

Przykładowy skrypt logrotate.bat wykorzystuje do kompresji logów program grupy Info-ZIP.

 

@echo off

SET LOG_PATH=C:squidvarlogs

net stop squid

FOR /F "tokens=1,2,3 delims=- " %%A in ('date /t') do set YYYYMMDD=%%A-%%B-%%C

ren "%LOG_PATH%access.log" "access-%YYYYMMDD%.log"

ren "%LOG_PATH%store.log" "store-%YYYYMMDD%.log"

ren "%LOG_PATH%cache.log" "cache-%YYYYMMDD%.log"

net start squid

zip.exe -D -j %LOG_PATH%access-%YYYYMMDD%.log.zip %LOG_PATH%access-%YYYYMMDD%.log

zip.exe -D -j %LOG_PATH%store-%YYYYMMDD%.log.zip %LOG_PATH%store-%YYYYMMDD%.log

zip.exe -D -j %LOG_PATH%cache-%YYYYMMDD%.log.zip %LOG_PATH%cache-%YYYYMMDD%.log

del /Q %LOG_PATH%access-%YYYYMMDD%.log

del /Q %LOG_PATH%store-%YYYYMMDD%.log

del /Q %LOG_PATH%cache-%YYYYMMDD%.log


Przed dalszą konfiguracją warto również ustawić język wyświetlanych komunikatów. Odpowiada za to parametr error_directory w sekcji # ERROR PAGE OPTIONS. Aby wybrać język polski, należy przestawić wartość c:/squid/share/errors/English na c:/squid/share/errors/Polish i odkomentować parametr. Uwaga! Wpisując ścieżkę dostępu w pliku konfiguracyjnym, należy użyć znaku slash, pomimo że jest to wersja aplikacji dla Windows. Treści komunikatów można modyfikować według potrzeb, zmieniając zawartość plików znajdujących się w katalogu c:squidshareerrorsPolish.

 

Kolejny krok konfiguracji to aktywowanie autoryzacji NTLM w sekcji # OPTIONS FOR AUTHENTICATION. Dzięki temu Squid będzie mógł autoryzować użytkowników w domenie Active Directory. Przeglądarki uruchomione na komputerach będących członkami domeny, wykorzystując ten rodzaj autoryzacji, nie będą wymagały od użytkowników podawania loginu i hasła. Aktywacja autoryzacji wymaga odkomentowania trzech parametrów: auth_param ntlm program <uncomment and complete this line to activate>, auth_param ntlm children 5 i auth_param ntlm keep_alive on. Ciąg znaków <uncomment and complete this line to activate> należy zamienić na c:/squid/libexec/mswin_ntlm_auth.exe. Po tej operacji podstawowe parametry naszego serwera proxy są już ustawione i można przejść do definiowania list dostępu w sekcji # ACCESS CONTROLS.

> DEFINIOWANIE LIST DOSTĘPU

Na potrzeby przykładowego wdrożenia w Active Directory stworzone zostały dwie grupy typu security: Internet­Users i InternetUsersBlockedSites. Członkowie pierwszej grupy będą mieli dostęp do internetu. W przypadku, gdy równocześnie będą członkami drugiej grupy, dostęp do sieci będzie miał ograniczenia.

 

Konfiguracja list dostępu zaczyna się od zdefiniowania podsieci IP, którą serwer ma obsługiwać. Należy usunąć lub zakomentować w pliku konfiguracyjnym wszystkie linie acl localnet src x.x.x.x/x i zastąpić je linią acl localnet proxy_auth REQUIRED src 192.168.0.0/24. Zakładam tutaj, że użytkownicy serwera proxy znajdują się w sieci 192.168.0.0/24 (adres sieci należy dostosować do wymogów własnego środowiska). Dopisek proxy_auth REQUIRED instruuje serwer, że wszyscy użytkownicy tej sieci muszą być zautoryzowani. Następnie należy usunąć lub zakomentować wpis http_access allow localnet i w jego miejsce wstawić: external_acl_type domain_group ttl=120 %LOGIN c:/squid/libexec/mswin_check_ad_group.exe –G, acl InternetAllow external domain_group InternetUsers i http_access allow Internet­Allow. Po restarcie Squida powinniśmy uzyskać działający serwer proxy obsługujący użytkowników Active Directory, będących w grupie InternetUsers. Przyjrzyjmy się bliżej tym trzem parametrom.

 

Pierwszy z nich definiuje zewnętrzną listę ACL (Access Control List) korzystającą z programu wspomagającego – w tym wypadku aplikacji sprawdzającej przynależność loginu do grupy. Drugi parametr, korzystając z zewnętrznej listy, definiuje listę dostępu w nomenklaturze Squida i używa do tego grupy w AD. Ostatni wpis to reguła zezwalająca na dostęp dla powstałej wcześniej listy ACL. Warto zauważyć, że w pliku konfiguracyjnym kolejnym wpisem jest http_access deny all pozwalający na zablokowanie wszystkich pozostałych możliwych dostępów.

> BLOKOWANIE PORTALI

Na tym etapie wdrożenia Squid sprawnie działa zarówno jako serwer cache, jak i system monitorowania użytkowników korzystających z internetu. Czas wprowadzić pewne restrykcje.

 

Na początek tworzymy plik blockedsites.txt w katalogu c:Squidetc. Przykładowy plik powinien zawierać jedną linię ze słowem facebook. Następnie modyfikujemy dotychczasową konfigurację. Przed wierszem http_access allow InternetAllow należy wstawić trzy linie: acl BlockedSites url_regex -i "c:/squid/etc/blockedsites.txt", acl InternetBlockedSites external domain_group InternetUsersBlock­edSites oraz http_access deny InternetBlockedSites BlockedSites. Pierwsza z nich to lista kontroli adresu docelowego, korzystająca z wyrażeń regularnych wpisanych do pliku blockedsites.txt. Druga to analogicznie jak wcześ­niej lista bazująca na grupie security domeny Active Directory. Trzecia to dyrektywa dostępu blokująca połączenia użytkownika ze wskazanej grupy z adresem pasującym do wyrażenia regularnego. Jeśli adres docelowy będzie różny od wyrażenia (np. facebook) lub użytkownik nie będzie należał do wskazanej grupy, zostanie przetworzona kolejna reguła http_access allow InternetAllow, która zezwoli na dostęp do zasobów sieciowych.

 

Użyta w przykładzie reguła url_regex z parametrem –i jest pewnym uproszczeniem ignorującym wielkość znaków przy porównywaniu łańcuchów. Dzięki niej zostaną zablokowane wszystkie adresy typu: Błąd! Nieprawidłowy odsyłacz typu hiperłącze.face­book.com, jakasstrona.pl/Facebook, facebooker.pl itp. adresy zawierające słowo „facebook” niezależnie od wielkości liter. Osoby obeznane z wyrażeniami regularnymi mogą pominąć parametr –i i dodawać dowolne wyrażenia regularne w pliku blockedsites.txt według potrzeb. W kolejnych wierszach pliku może znajdować się więcej zabronionych fraz. Więcej o budowaniu list ACL można dowiedzieć się z oficjalnej dokumentacji na stronie squid-cache.org/Doc/.

> KONFIGURACJA PRZEGLĄDAREK

Użytkownicy zaczną korzystać z serwera proxy po odpowiednim skonfigurowaniu przeglądarek WWW. Ponieważ założyliśmy, że w firmie wdrożone jest środowisko Active Directory, do konfiguracji najwygodniej użyć Group Policy. Parametry dla aplikacji Internet Explorer i Google Chrome (który w tym zakresie korzysta z ustawień IE) można zdefiniować za pośrednictwem polityki User Configuration |Administrative Templates |Windows Components | Internet Explorer. W przypadku korzystania z Firefoksa można posłużyć się dostępnymi w internecie schematami administracyjnymi, używanymi za pośrednictwem polityk grupowych. Można też skorzystać z dowolnej innej metody konfiguracji przeglądarek, zaczynając od WPAD, a na ręcznej konfiguracji kończąc. Wybrana metoda zależy wyłącznie od wykorzystywanego środowiska, wdrożonych polityk i indywidualnych preferencji.

 

Uwaga – należy też koniecznie pamiętać, aby na poziomie bramy do internetu odciąć możliwość bezpośredniego wyjścia do sieci ze wszystkich stacji, które chcemy objąć restrykcjami i cachowaniem.

> RAPORTOWANIE

Jednym z ważniejszych powodów dla wdrożenia serwera proxy jest możliwość monitorowania ruchu do internetu i zapisywania logów. Do celów raportowania wykorzystywany jest plik access.log znajdujący się w katalogu c:squidvarlogs. Z kolei pola, które mają być zapisywane w access.log, definiowane są w pliku squid.conf w sekcji # LOGFILE OPTIONS. Monitorowane mogą być m.in. takie dane, jak: źródłowy adres IP i FQDN (Fully Qua­lified Domain Name), docelowy adres, data i godzina połączenia, nazwa użytkownika, typ wywołania czy rozmiar odpowiedzi.

 

Do analizy raportów dostępnych jest wiele aplikacji. Jedną z popularniejszych i działających bez problemu w środowisku Windows jest SARG (sarg.sourceforge.net/sarg.php). Stosunkowo niewielkim nakładem pracy można również stworzyć (np. używając Perla) narzędzie do przetwarzania pliku raportu i kopiowania informacji do wybranej bazy danych. Takie rozwiązanie stworzy niemal nieograniczone możliwości generowania różnych statystyk.

 

Opisując zagadnienie raportowania, warto również wspomnieć o konieczności wdrożenia systemu rotacji logów. Wywodzący się z platformy uniksowej Squid nigdy nie musiał się „przejmować” rotacją, gdyż w tym środowisku sprawę załatwia serwer syslog. Oprogramowanie co prawda ma wbudowaną funkcję rotacji logów, ale o zbyt ubogich możliwościach. Dlatego w przypadku korzystania ze SquidNT o rotację i kompresję należy zadbać samemu. Najprościej wykorzystać do tego celu uruchamiany z harmonogramu zadań skrypt (patrz ramka: Skrypt do kompresji logów).

> CZY TO W OGÓLE DZIAŁA

Nasz świeżo wdrożony serwer proxy oferuje trzy zasadnicze funkcje: cachowanie serwowanych stron (co przyspiesza ich przeglądanie), monitorowanie ruchu sieciowego oraz nakładanie restrykcji na działania użytkowników.

 

Jeśli chodzi o dwa pierwsze zadania, to SquidNT realizuje je wzorowo i wykorzystywany jest do takich celów przez tysiące administratorów na całym świecie. Trzecia funkcja jest jednak trudna w realizacji. Bez wątpienia strony, które zablokujemy, nie dadzą się wprost otworzyć i skutecznie powstrzyma to większość użytkowników. W internecie istnieją jednak tysiące serwisów anonimizujących, które pozwalają na otwieranie stron za ich pośrednictwem. Choć często ograniczają one funkcjonalność otwieranej strony, to i tak pozwalają na korzystanie z niej.

 

Bardzo trudno zablokować wszystkie takie serwisy, a zaawansowany użytkownik może sobie stworzyć gdzieś w sieci swój własny anonymizer. Korzystanie z takich serwisów można oczywiście wychwycić, analizując logi, ale reakcja na to będzie reakcją post factum. Restrykcje mogłyby być w pełni skuteczne, jeśli użylibyśmy logiki „wszystkie strony WWW zabronione z wyjątkiem listy stron dozwolonych”, jednak w większości wypadków jest to nieakceptowalny scenariusz dla serwera proxy.

 

Niezależnie od utrudnień dotyczących nadawania restrykcji za pomocą Squida, sposoby na omijanie zablokowanych witryn znajdą tylko zaawansowani użytkownicy, którzy tym samym świadomie będą łamać zasady obowiązujące w firmie. Praktyka pokazuje, że wdrożenie serwera pośredniczącego, monitorowanie sposobu korzystania z sieci i prowadzenie statystyk dla poszczególnych pracowników są bardzo skutecznymi narzędziami do zwiększania ich produktywności i walki z nadużywaniem dostępu do internetu.


Autor jest certyfikowanym administratorem systemów Windows i Linux. Ma niemal dziesięcioletnie doświadczenie zawodowe. Dodatkowo pracuje jako trener, audytor ISO 27001 oraz konsultant IT.

Artykuł pochodzi z miesięcznika: IT Professional

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"