Serwery proxy siecioweEdit

Serwery proxy sieciowe przekazują dalej żądania HTTP. Żądanie od klienta jest takie samo jak zwykłe żądanie HTTP, z wyjątkiem tego, że przekazywany jest pełny adres URL, a nie tylko ścieżka.

GET https://en.wikipedia.org/wiki/Proxy_server HTTP/1.1Proxy-Authorization: Basic encoded-credentialsAccept: text/html

To żądanie jest wysyłane do serwera proxy, serwer proxy wykonuje określone żądanie i zwraca odpowiedź.

HTTP/1.1 200 OKContent-Type: text/html; charset UTF-8

Niektóre serwery proxy pozwalają w metodzie HTTP CONNECT ustawić przekazywanie dowolnych danych przez połączenie; powszechną polityką jest przekazywanie tylko portu 443, aby umożliwić ruch HTTPS.

Przykłady serwerów proxy obejmują Apache (z mod_proxy lub Traffic Server), HAProxy, IIS skonfigurowany jako proxy (np., z Application Request Routing), Nginx, Privoxy, Squid, Varnish (tylko odwrotne proxy), WinGate, Ziproxy, Tinyproxy, RabbIT i Polipo.

Dla klientów problem złożonych lub wielokrotnych serwerów proxy jest rozwiązywany przez protokół klient-serwer Proxy auto-config (plik PAC).

SOCKS proxyEdit

SOCKS również przekazuje arbitralne dane po fazie połączenia, i jest podobny do HTTP CONNECT w serwerach proxy.

Przezroczyste proxyEdit

Znane również jako przechwytujące proxy, inline proxy lub wymuszone proxy, przezroczyste proxy przechwytuje normalną komunikację w warstwie aplikacji, nie wymagając żadnej specjalnej konfiguracji klienta. Klienci nie muszą być świadomi istnienia proxy. Przezroczyste proxy znajduje się zwykle między klientem a Internetem, przy czym proxy wykonuje niektóre funkcje bramy lub routera.

RFC 2616 (Hypertext Transfer Protocol-HTTP/1.1) oferuje standardowe definicje:

„Przezroczyste proxy” to proxy, które nie modyfikuje żądania lub odpowiedzi poza tym, co jest wymagane do uwierzytelnienia i identyfikacji proxy”. „Nieprzezroczyste proxy” to proxy, które modyfikuje żądanie lub odpowiedź w celu zapewnienia pewnej dodatkowej usługi dla agenta użytkownika, takiej jak usługi adnotacji grupowej, transformacja typu mediów, redukcja protokołu lub filtrowanie anonimowości”.

TCP Intercept to funkcja bezpieczeństwa filtrowania ruchu, która chroni serwery TCP przed atakami TCP SYN flood, które są rodzajem ataku typu denial-of-service. TCP Intercept jest dostępny tylko dla ruchu IP.

W 2009 roku Robert Auger opublikował dziurę w zabezpieczeniach sposobu działania przezroczystych serwerów proxy, a Computer Emergency Response Team wydał poradnik, w którym wymienił dziesiątki serwerów proxy, na które miała wpływ luka.

CelEdit

Przechwytujące serwery proxy są powszechnie używane w firmach do egzekwowania zasad dopuszczalnego użytkowania oraz do zmniejszenia kosztów administracyjnych, ponieważ nie jest wymagana konfiguracja przeglądarki klienta. Ten drugi powód jest jednak łagodzony przez funkcje takie jak polityka grupowa Active Directory, lub DHCP i automatyczne wykrywanie proxy.

Intercepting proxy są również powszechnie używane przez dostawców usług internetowych w niektórych krajach, aby zaoszczędzić pasmo i poprawić czas reakcji klienta poprzez buforowanie. Jest to bardziej powszechne w krajach, gdzie pasmo jest bardziej ograniczone (np. kraje wyspiarskie) lub musi być płatne.

Edytuj zagadnienia

Przekierowanie/ przechwycenie połączenia TCP stwarza kilka problemów. Po pierwsze, oryginalny docelowy adres IP i port musi być w jakiś sposób przekazany do serwera proxy. Nie zawsze jest to możliwe (np. w przypadku, gdy brama i serwer proxy znajdują się na różnych hostach). Istnieje klasa ataków typu cross-site, które zależą od pewnego zachowania przechwytujących serwerów proxy, które nie sprawdzają lub nie mają dostępu do informacji o oryginalnym (przechwyconym) miejscu docelowym. Problem ten może być rozwiązany przez zastosowanie zintegrowanego urządzenia lub oprogramowania na poziomie pakietów i aplikacji, które jest w stanie przekazywać te informacje pomiędzy obsługą pakietów a proxy.

Intercepting stwarza również problemy z uwierzytelnianiem HTTP, zwłaszcza uwierzytelnianiem zorientowanym na połączenie, takim jak NTLM, ponieważ przeglądarka klienta wierzy, że rozmawia z serwerem, a nie proxy. Może to powodować problemy, gdy przechwytujące proxy wymaga uwierzytelnienia, a następnie użytkownik łączy się z witryną, która również wymaga uwierzytelnienia.

Podsumowując, przechwytywanie połączeń może powodować problemy z buforami HTTP, ponieważ niektóre żądania i odpowiedzi stają się niemożliwe do przechwycenia przez współdzielony bufor.

Metody implementacjiEdit

W zintegrowanych serwerach firewall/proxy, gdzie router/firewall znajduje się na tym samym hoście co proxy, przekazywanie oryginalnych informacji o miejscu docelowym może odbywać się za pomocą dowolnej metody, na przykład Microsoft TMG lub WinGate.

Przechwytywanie może być również wykonywane za pomocą protokołu WCCP (Web Cache Control Protocol) firmy Cisco. Ten zastrzeżony protokół rezyduje na routerze i jest konfigurowany z poziomu pamięci podręcznej, co pozwala pamięci podręcznej określić, jakie porty i ruch są do niej wysyłane poprzez przezroczyste przekierowanie z routera. Przekierowanie to może odbywać się na dwa sposoby: tunelowanie GRE (OSI Layer 3) lub przepisywanie MAC (OSI Layer 2).

Jak ruch dotrze do samej maszyny proxy przechwytywanie jest powszechnie wykonywane za pomocą NAT (Network Address Translation). Takie konfiguracje są niewidoczne dla przeglądarki klienta, ale pozostawiają proxy widoczne dla serwera WWW i innych urządzeń po internetowej stronie proxy. Ostatnie wydania Linuksa i niektóre BSD udostępniają TPROXY (transparentne proxy), które wykonuje na poziomie IP (warstwa 3 OSI) transparentne przechwytywanie i spoofing ruchu wychodzącego, ukrywając adres IP proxy przed innymi urządzeniami sieciowymi.

WykrywanieEdit

Do wykrycia obecności przechwytującego serwera proxy można użyć kilku metod:

  • Poprzez porównanie zewnętrznego adresu IP klienta z adresem widzianym przez zewnętrzny serwer WWW, lub czasami przez zbadanie nagłówków HTTP otrzymanych przez serwer. Wiele witryn zostało stworzonych w celu rozwiązania tego problemu, poprzez raportowanie adresu IP użytkownika widzianego przez witrynę z powrotem do użytkownika na stronie internetowej. Google zwraca również adres IP, jak widziany przez stronę, jeśli użytkownik szuka „IP”.
  • Poprzez porównanie wyniku online IP checkers, gdy dostęp przy użyciu HTTPS vs HTTP, jak większość przechwytywania proxy nie przechwytywać SSL. Jeśli istnieje podejrzenie, że SSL jest przechwytywany, można zbadać certyfikat związany z każdej bezpiecznej strony internetowej, certyfikat główny powinien wskazywać, czy został wydany w celu przechwytywania.
  • Poprzez porównanie sekwencji węzłów sieciowych zgłoszonych przez narzędzie takie jak traceroute dla protokołu proxy, takich jak http (port 80) z tym dla nieproxy protokołu, takich jak SMTP (port 25).
  • Poprzez próbę nawiązania połączenia z adresem IP, o którym wiadomo, że nie ma na nim serwera. Proxy zaakceptuje połączenie, a następnie spróbuje przekazać je dalej. Gdy proxy nie znajdzie żadnego serwera, który zaakceptuje połączenie, może zwrócić komunikat o błędzie lub po prostu zamknąć połączenie z klientem. Ta różnica w zachowaniu jest prosta do wykrycia. Na przykład, większość przeglądarek internetowych wygeneruje stronę błędu utworzoną przez przeglądarkę w przypadku, gdy nie może połączyć się z serwerem HTTP, ale zwróci inny błąd w przypadku, gdy połączenie zostanie zaakceptowane, a następnie zamknięte.
  • Poprzez serwowanie użytkownikowi końcowemu specjalnie zaprogramowanych aplikacji Adobe Flash SWF lub apletów Sun Java, które wysyłają wywołania HTTP z powrotem do swojego serwera.

CGI proxyEdit

CGI web proxy przyjmuje docelowe adresy URL za pomocą formularza sieciowego w oknie przeglądarki użytkownika, przetwarza żądanie i zwraca wyniki do przeglądarki użytkownika. W związku z tym, może być używany na urządzeniu lub w sieci, która nie pozwala na zmianę ustawień „prawdziwego” proxy. Pierwsze zarejestrowane CGI proxy, nazwane wówczas „rover”, ale przemianowane w 1998 r. na „CGIProxy”, zostało opracowane przez amerykańskiego informatyka Jamesa Marshalla na początku 1996 r. na potrzeby artykułu Richa Morina w „Unix Review”.

Większość CGI proxy jest obsługiwana przez jeden z CGIProxy (napisany w języku Perl), Glype (napisany w języku PHP) lub PHProxy (napisany w języku PHP). Od kwietnia 2016, CGIProxy otrzymało około 2 milionów pobrań, Glype otrzymał prawie milion pobrań, podczas gdy PHProxy nadal otrzymuje setki pobrań tygodniowo. Pomimo spadku popularności ze względu na VPN-y i inne metody ochrony prywatności, nadal istnieje wiele serwerów proxy CGI online.

Niektóre serwery proxy CGI zostały utworzone w celach takich jak uczynienie stron internetowych bardziej dostępnymi dla osób niepełnosprawnych, ale od tego czasu zostały zamknięte z powodu nadmiernego ruchu, zwykle spowodowanego przez stronę trzecią reklamującą usługę jako sposób na ominięcie lokalnego filtrowania. Ponieważ wielu z tych użytkowników nie dba o szkody uboczne, które powodują, stało się konieczne, aby organizacje ukrywały swoje serwery proxy, ujawniając ich adresy URL tylko tym, którzy zadają sobie trud skontaktowania się z organizacją i wykazania prawdziwej potrzeby.

Suffix proxyEdit

Sufiksowe serwery proxy pozwalają użytkownikowi na dostęp do treści internetowych poprzez dodanie nazwy serwera proxy do adresu URL żądanej treści (np. „en.wikipedia.org.SuffixProxy.com”). Serwery proxy Suffix są łatwiejsze w użyciu niż zwykłe serwery proxy, ale nie oferują wysokiego poziomu anonimowości i ich głównym zastosowaniem jest omijanie filtrów internetowych. Jest to jednak rzadko stosowane ze względu na bardziej zaawansowane filtry internetowe.

Tor onion proxy softwareEdit

Zrzut ekranu programu komputerowego pokazującego lokalizacje komputerów na mapie świata.
Mapa sieci Tor w Vidalii.

The Onion Router (Tor) jest systemem mającym na celu zapewnienie anonimowości w sieci. Oprogramowanie klienckie Tor kieruje ruch internetowy przez ogólnoświatową sieć serwerów wolontariuszy w celu ukrycia lokalizacji komputera użytkownika lub sposobu korzystania z niego przed osobą prowadzącą nadzór sieciowy lub analizę ruchu. Korzystanie z Tora utrudnia śledzenie aktywności internetowej i ma na celu ochronę wolności osobistej i prywatności użytkowników.

„Trasowanie cebulowe” odnosi się do warstwowej natury usługi szyfrowania: Oryginalne dane są szyfrowane i ponownie szyfrowane wiele razy, a następnie przesyłane przez kolejne przekaźniki Tor, z których każdy odszyfrowuje „warstwę” szyfrowania przed przekazaniem danych do kolejnego przekaźnika i ostatecznie do miejsca docelowego. Zmniejsza to prawdopodobieństwo odkodowania lub zrozumienia oryginalnych danych w transporcie.

I2P anonymous proxyEdit

Sieć anonimowa I2P (’I2P') jest siecią proxy mającą na celu anonimowość online. Implementuje ona routing czosnkowy, który jest ulepszeniem routingu cebulowego Tora. I2P jest w pełni rozproszona i działa poprzez szyfrowanie całej komunikacji w różnych warstwach i przekazywanie jej przez sieć routerów obsługiwanych przez wolontariuszy w różnych miejscach. Utrzymując źródło informacji w ukryciu, I2P oferuje odporność na cenzurę. Celem I2P jest ochrona wolności osobistej użytkowników, ich prywatności i zdolności do prowadzenia poufnych interesów.

Każdy użytkownik I2P uruchamia router I2P na swoim komputerze (węzeł). Router I2P zajmuje się wyszukiwaniem innych peerów i budowaniem przez nich anonimowych tuneli. I2P dostarcza proxy dla wszystkich protokołów (HTTP, IRC, SOCKS, …).

Porównanie do translatorów adresów sieciowychEdit

Koncepcja proxy odnosi się do aplikacji warstwy 7 w modelu odniesienia OSI. Translacja adresów sieciowych (NAT) jest podobna do proxy, ale działa w warstwie 3.

W konfiguracji klienckiej NAT warstwy 3 wystarczy skonfigurować bramę. Natomiast w przypadku konfiguracji klienta proxy warstwy 7, miejscem docelowym pakietów generowanych przez klienta musi być zawsze serwer proxy (warstwa 7), następnie serwer proxy odczytuje każdy pakiet i odnajduje prawdziwe miejsce docelowe.

Ponieważ NAT działa w warstwie 3, jest mniej zasobożerny niż proxy warstwy 7, ale również mniej elastyczny. Porównując te dwie technologie, możemy spotkać się z terminologią znaną jako „transparentny firewall”. Transparent firewall oznacza, że proxy wykorzystuje zalety proxy warstwy 7 bez wiedzy klienta. Klient zakłada, że brama jest NATem w warstwie 3, i nie ma pojęcia o wnętrzu pakietu, ale dzięki tej metodzie, pakiety warstwy 3 są wysyłane do proxy warstwy 7 w celu ich zbadania.

DNS proxyEdit

Serwer proxy DNS pobiera zapytania DNS z sieci (zazwyczaj lokalnej) i przekazuje je do serwera nazw domen internetowych. Może również buforować rekordy DNS.

ProxyEdit

Niektóre programy klienckie „SOCKS-ifikują” żądania, co pozwala na dostosowanie dowolnego oprogramowania sieciowego do łączenia się z sieciami zewnętrznymi poprzez pewne typy serwerów proxy (głównie SOCKS).

Proxy rezydencjalneEdit

Proxy rezydencjalne jest pośrednikiem, który używa prawdziwego adresu IP dostarczonego przez dostawcę usług internetowych (ISP) z fizycznymi urządzeniami, takimi jak telefony komórkowe i komputery użytkowników końcowych. Zamiast łączyć się bezpośrednio z serwerem, użytkownicy proxy mieszkaniowego łączą się z celem za pośrednictwem adresów IP mieszkaniowych. Cel identyfikuje ich wtedy jako organicznych użytkowników Internetu. Nie pozwala to żadnemu narzędziu śledzącemu zidentyfikować realokacji użytkownika. Każdy mieszkalny proxy może wysyłać dowolną liczbę równoczesnych żądań, a adresy IP są bezpośrednio związane z określonym regionem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *