Serwery proxy, trudniejsze w konfiguracji niż zapory sieciowe oferują jednak możliwości, dla których czasem warto zadać sobie trud ich wdrożenia. Prawidłowo skonfigurowany serwer proxy przynosi korzyści, których zwykły firewall nie jest w stanie dostarczyć.
Serwer proxy spełnia trzy główne funkcje:
- służy jako zapora sieciowa i umożliwia filtrowanie ruchu,
- umożliwia współdzielenie połączenia internetowego,
- służy jako pamięć podręczna (cache).
Te właściwości serwera pośredniczącego są szczególnie ważne w dużych sieciach firmowych czy w sieciach operatorskich. Im więcej użytkowników w sieci LAN i im ważniejsze kwestie ochrony danych, tym większa potrzeba wdrożenia serwera proxy.
Serwer proxy można uruchomić jako usługę lub jako samodzielną aplikację. W zależności od sytuacji należy wybrać odpowiedni produkt, ponieważ obsługują one różną liczbę użytkowników oraz różne rodzaje danych. Wybór serwerów proxy jest bardzo duży. Najbardziej znane to komercyjny Microsoft ISA Server oraz bezpłatny Squid.
W środowisku produkcyjnym serwer pośredniczący można wykorzystać jako alternatywę NAT. Choć te dwa rozwiązania działają podobnie i NAT jest łatwiejszy w konfiguracji, to nie zawsze jest w stanie spełnić wymagania firmy.
Przykładowo, firma ma wielu pracowników, którzy korzystają z dostępu do Internetu, ale utrzymanie połączenie internetowego jest kosztowne. Mogą pojawiać się problemy z przepustowością lub niekontrolowanym wzrostem kosztów dostępu do Internetu. W takim przypadku NAT nie da możliwości limitowania przepustowości dostępnej dla użytkowników, natomiast serwer proxy okaże się bardzo przydatny. Z wykorzystaniem serwera proxy można limitować szybkość każdego połączenia, zapewnić uwierzytelnianie użytkowników oraz rejestrować wszystkie połączenia. Możliwości wprowadzania ograniczeń na bazie różnych kryteriów są niemal nieograniczone.
Funkcje zapory sieciowej i filtra
Serwer proxy działa w warstwie aplikacji, czyli w siódmej warstwie modelu OSI. Serwery proxy nie są tak popularne, jak zapory sieciowe, działające w niższych warstwach i umożliwiające filtrowanie niezależne od aplikacji. Są również trudniejsze w instalacji i zarządzaniu niż firewalle, ponieważ funkcjonalność serwera pośredniczącego trzeba konfigurować oddzielnie dla każdego protokołu, np. HTTP, SMTP czy SOCKS. Mimo to prawidłowo skonfigurowany serwer proxy przynosi spore korzyści: poprawia bezpieczeństwo i zwiększa wydajność. Serwery proxy oferuję możliwości, których zwykły firewall nie jest w stanie dostarczyć.
Niektórzy administratorzy sieci wdrażają zarówno zaporę sieciową i serwer proxy, żeby działały w duecie. W tym celu instalują to oprogramowanie na serwerze pełniącym rolę bramki.
Ponieważ serwer proxy działa w warstwie aplikacji, jego możliwości filtrowania ruchu sieciowego są bardziej wyrafinowane, niż zapory sieciowej. Przykładowo, serwer HTTP proxy może sprawdzać adresy URL stron WWW, które przeglądają użytkownicy, analizując wiadomości HTTP GET i POST HTTP. Wykorzystując tę funkcję, administrator sieci może zablokować dostęp do nielegalnych stron, a zezwolić na dostęp do pozostałych. Natomiast zwykła zapora sieciowa nie widzi nazw domen przesyłanych wewnątrz pakietów.
Podobnie jest w przypadku ruchu przychodzącego. Router może filtrować pakiety na podstawie numerów portów czy adresów IP, ale serwer proxy jest w stanie robić to, analizując dane przesyłane przez aplikacje.
Współdzielenie połączenia internetowego
Jest wiele produktów umożliwiających współdzielenie połączenia internetowego w małej sieci. Jednak w sieciach średniej i dużej wielkości lepiej sprawdzają się serwery proxy, zapewniając większą skalowalność i niższe koszty współdzielenia łącza. Zamiast każdemu komputerowi dawać bezpośredni dostęp do Internetu, wszystkie wewnętrzne połączenia można tunelować przez jeden lub więcej serwerów proxy, które będą łączyły się ze światem zewnętrznym.
Pamięć podręczna
Popularnym zastosowaniem serwerów proxy jest przechowywanie (caching) zawartości stron internetowych, co przekłada się na wydajniejsze działanie sieci. Po pierwsze, caching ogranicza wykorzystanie przepustowości połączenia internetowego, zwiększając skalowalność. Po drugie, skraca czas odpowiedzi na żądanie klienta. Wykorzystując serwer HTTP proxy, strony WWW mogą się wczytywać szybciej w przeglądarce. Po trzecie, caching zwiększa dostępność. Strony internetowe czy inne pliki w pamięci podręcznej są dostępne nawet, jeśli serwer źródłowy lub sieci pośredniczące są niedostępne.
Wady używania pamięci podręcznej
Przechowywanie plików w pamięci podręcznej ma też wady. Należy się spodziewać, że serwery proxy przetwarzający setki czy nawet tysiące stron internetowych może stać się wąskim gardłem. Administrator może wykorzystać serwer wyposażony w wydajne, wielordzeniowe procesory i dużą ilość pamięci RAM albo wdrożyć kilka serwerów proxy, aby uniknąć problemu.
Możliwe jest też stworzenie hierarchicznego drzewa serwerów proxy, aby rozłożyć caching na wiele warstw. Klient łączy się bezpośrednio z pierwszą warstwą pamięci podręcznej. Jeśli strona WWW jest niedostępna lokalnie, żądanie jest automatycznie przekazywane do kolejnej warstwy, aż do momentu, gdy żądane zasoby będą dostępne.
Wydajność cachingu w przypadku hierarchicznych serwerów proxy bardzo zależy od rodzaju ruchu sieciowego. W najgorszym scenariuszu wszyscy użytkownicy odwiedzają zupełnie różne strony i serwery stają się bezużyteczne, generując tylko zbędne, dodatkowe obciążenie. Jest to mało prawdopodobna sytuacja, typowy ruch nie będzie spełnieniem tego czarnego scenariusza, ale trzeba pamiętać, że każda sieć ma swoją unikatową charakterystykę ruchu.
Poza tym działanie pamięci podręcznej serwera proxy różni się od działania cache’a przeglądarki internetowej. Przeglądarki automatycznie zapisują odwiedzane strony na komputerze użytkownika, podczas gdy serwer proxy przechowuje pliki na zdalnym serwerze. Ponieważ przeglądarki mają swój własny cache, serwer proxy będzie wykorzystany dopiero, gdy przeglądarka nie znajdzie plików na lokalnym dysku.
Serwer proxy nie pomoże też w przypadku odświeżonych stron. Strony internetowe są ustawiane przy pomocy tagów META tak, żeby były często odświeżane, co wymusza ponowne pobranie zawartości strony, nawet jeśli była już ona wcześniej odwiedzana i znajduje się w pamięci podręcznej. To samo dotyczy stron, których zawartość często się zmienia, np. stron z wiadomościami czy blogów.
Z punktu widzenia właścicieli stron WWW serwery proxy zakłócają statystyki oglądalności, ponieważ ukrywają adresy IP użytkowników. Wszyscy użytkownicy używający danego serwera proxy są widziani pod jednym adresem IP.
Serwery proxy a przeglądarki WWW
Serwery proxy współpracują z określonymi protokołami sieciowymi. Oczywiście najistotniejsza jest obsługa HTTP, ale przeglądarki WWW wykorzystują różne protokoły:
- HTTPS
- FTP,
- SOCKS.
HTPPS umożliwia szyfrowanie komunikacji między użytkownikiem a serwerem WWW i jest powszechnie stosowany. Do szyfrowania wykorzystuje SSL, który jest protokołem niższej warstwy, więc nie powinien wpływać na konfigurację proxy przeglądarki. Z kolei FTP (File Transfer Protocol) służy do transferu plików z serwerów internetowych. Protokół ten traktuje plik jak tekst lub format binarny i jest wciąż bardzo popularny do pobierania plików. Z kolei SOCKS to protokół zapór sieciowych uwzględniany czasami w konfiguracji proxy.
Technicznie rzecz biorąc, można użyć różnych serwerów proxy do obsługi tych protokołów, np. jeden serwer do obsługi HTTP i HTTPS, a drugi do obsługi pozostałych protokołów. Najczęściej jednak administratorzy wdrażają jeden serwer proxy do obsługi wszystkich protokołów. Podczas konfiguracji przeglądarki użytkownik musi znać parametry serwera proxy, aby móc z niego korzystać.
Aby skonfigurować serwer proxy, potrzebne są dwa parametry: adres IP oraz numer portu, na którym dany serwer nasłuchuje. Z reguły jeden port służy do obsługi wszystkich protokołów. Nie należy kojarzyć tego portu ze standardowymi portami używanymi przez protokoły (80 przez HTTP, 21 przez FTP, itd.). Jest to wyłącznie port serwera proxy.
Niestety nie ma jednego numeru portu uznawanego za standard dla serwerów proxy. Najczęściej stosuje się porty 8000 lub 8080, ale można przydzielać różne wartości, aż do 65535. Użytkownik musi znać numer portu, jeśli ma samodzielnie skonfigurować przeglądarkę.
Automatyczna konfiguracja proxy
Aby ułatwić wdrażanie proxy, opracowano rozwiązania, umożliwiające automatyczną konfigurację przeglądarek. Administrator może użyć specjalnego pliku konfiguracyjnego, aby np. ukryć przed klientem numerację portów. Taki plik zawiera kod JavaScript i jest zapisywany na serwerze proxy lub serwerze WWW. Klient, który chce użyć tego pliku i zapisanej w nim konfiguracji, musi jedynie podać jego adres URL w przeglądarce WWW (lub kliknąć prowadzący do niego odnośnik).
Typy serwerów proxy
Jest wiele typów serwerów proxy. Dzieli się je m.in. w zależności od obsługiwanego protokołu, np. FTP, HTTP, IRC, ICQ, VOIP, SSL.
Poza tym wśród serwer proxy często występują jeszcze inne typy. Socks proxy służy do obsługi wielu typów danych, niezależnie czy wykorzystują TCP lub UDP. Z kolei NAT proxy stosuje się wtedy, kiedy wymagane jest przekazywanie pakietów, ale aplikacja użytkownika nie obsługuje serwera proxy (nie ma możliwości konfiguracji proxy w danym programie).
Serwer SSL proxy to rozszerzenie HTTP proxy umożliwiające przekazywanie pakietów TCP podobnie, jak SOCKS proxy, co z kolei umożliwia obsługę szyfrowanej komunikacji z serwerami WWW.
Serwery proxy można też podzielić na anonimowe i transparentne. Anonimowy serwer proxy (anonymous) ukrywa przed docelowym hostem (np. serwerem WWW) adres IP komputera wysyłającego żądanie. Natomiast transparentny serwer proxy przekazuje adresy IP do docelowego hosta.
Anonimowe serwery pośredniczące można dalej podzielić na Elite oraz Disguised. Serwer typu Elite nie jest identyfikowany przez host docelowy jako serwer proxy. Natomiast serwer typu Disguised udostępnia takie informacje o sobie, które pozwalają zidentyfikować go jako serwer pośredniczący.
Nieco inne zadanie, niż opisane powyżej rodzaje serwerów, ma reverse proxy. W tym przypadku chodzi o zredukowanie obciążanie serwerów. Serwery reverse proxy przechowuje statyczną zawartość serwera WWW i udostępnia ją na żądania użytkowników. Działa on pomiędzy Internetem a serwerem webowym. Przechowuje napływające żądania i odpowiada na nie, dostarczając strony WWW z własnej pamięci podręcznej.