Web proxy serversEdit
Web proxies sturen HTTP-verzoeken door. Het verzoek van de client is hetzelfde als een gewoon HTTP-verzoek, behalve dat de volledige URL wordt doorgegeven in plaats van alleen het pad.
GET https://en.wikipedia.org/wiki/Proxy_server HTTP/1.1Proxy-Authorization: Basic encoded-credentialsAccept: text/html
Dit verzoek wordt naar de proxyserver gestuurd, de proxy voert het opgegeven verzoek uit en stuurt het antwoord terug.
HTTP/1.1 200 OKContent-Type: text/html; charset UTF-8
Sommige webproxy’s staan de HTTP CONNECT-methode toe om het doorsturen van willekeurige gegevens via de verbinding in te stellen; een gangbaar beleid is om alleen poort 443 door te sturen om HTTPS-verkeer toe te staan.
Voorbeelden van webproxy-servers zijn Apache (met mod_proxy of Traffic Server), HAProxy, IIS geconfigureerd als proxy (bijv, met Application Request Routing), Nginx, Privoxy, Squid, Varnish (alleen reverse proxy), WinGate, Ziproxy, Tinyproxy, RabbIT en Polipo.
Voor clients wordt het probleem van complexe of meervoudige proxy-servers opgelost door een client-server Proxy auto-config protocol (PAC-bestand).
SOCKS proxyEdit
SOCKS stuurt ook willekeurige gegevens door na een verbindingsfase, en is vergelijkbaar met HTTP CONNECT in web proxies.
Transparante proxyEdit
Ook bekend als een onderscheppende proxy, inline proxy, of geforceerde proxy, een transparante proxy onderschept normale applicatie laag communicatie zonder dat er een speciale client configuratie nodig is. Cliënten hoeven niet op de hoogte te zijn van het bestaan van de proxy. Een transparante proxy bevindt zich normaal gesproken tussen de client en het Internet, waarbij de proxy enkele van de functies van een gateway of router vervult.
RFC 2616 (Hypertext Transfer Protocol-HTTP/1.1) biedt standaarddefinities:
“Een ‘transparante proxy’ is een proxy die het verzoek of antwoord niet wijzigt buiten wat nodig is voor de authenticatie en identificatie van de proxy”. “Een ‘niet-transparante proxy’ is een proxy die het verzoek of antwoord wijzigt om een toegevoegde dienst aan de gebruikersagent te leveren, zoals annotatiediensten voor groepen, transformatie van mediatype, protocolreductie of anonimiteitsfiltering”.
TCP Intercept is een beveiligingsfunctie voor het filteren van verkeer die TCP-servers beschermt tegen TCP SYN flood-aanvallen, wat een soort denial-of-service-aanval is. TCP Intercept is alleen beschikbaar voor IP-verkeer.
In 2009 publiceerde Robert Auger een beveiligingslek in de manier waarop transparante proxy’s werken, en het Computer Emergency Response Team gaf een advisory uit waarin tientallen getroffen transparante en onderscheppende proxy-servers werden genoemd.
DoelEdit
Onderscheppende proxy’s worden vaak gebruikt in bedrijven om het beleid voor aanvaardbaar gebruik af te dwingen, en om de administratieve overhead te verlichten omdat er geen client browser configuratie nodig is. Deze tweede reden wordt echter ondervangen door functies als Active Directory group policy, of DHCP en automatische proxy-detectie.
Intercepting proxies worden in sommige landen ook vaak gebruikt door ISP’s om upstream bandbreedte te besparen en de responstijd van klanten te verbeteren door caching. Dit komt vaker voor in landen waar bandbreedte beperkter is (bijv. eilandstaten) of waar voor bandbreedte moet worden betaald.
Problemen
Het omleiden/onderscheppen van een TCP-verbinding levert verschillende problemen op. Ten eerste moeten het oorspronkelijke doel-IP en de poort op de een of andere manier aan de proxy worden doorgegeven. Dit is niet altijd mogelijk (b.v. wanneer de gateway en de proxy zich op verschillende hosts bevinden). Er is een klasse van cross-site aanvallen die afhankelijk zijn van bepaald gedrag van onderscheppende proxy’s die geen informatie over de oorspronkelijke (onderschepte) bestemming controleren of er toegang toe hebben. Dit probleem kan worden opgelost door gebruik te maken van een geïntegreerde appliance of software op pakket- en toepassingsniveau, die deze informatie tussen de pakketbehandelaar en de proxy kan communiceren.
Onderscheppen levert ook problemen op voor HTTP-authenticatie, met name verbindingsgeoriënteerde authenticatie zoals NTLM, omdat de clientbrowser gelooft dat hij met een server praat in plaats van met een proxy. Dit kan problemen veroorzaken als een onderscheppende proxy authenticatie vereist, en de gebruiker vervolgens verbinding maakt met een site die ook authenticatie vereist.
Ten slotte kan het onderscheppen van verbindingen problemen veroorzaken voor HTTP-caches, omdat sommige verzoeken en antwoorden door een gedeelde cache oncachebaar worden.
Implementatiemethoden
In geïntegreerde firewall/proxyservers waarbij de router/firewall zich op dezelfde host bevindt als de proxy, kan het doorgeven van de oorspronkelijke bestemmingsinformatie op elke willekeurige methode gebeuren, bijvoorbeeld Microsoft TMG of WinGate.
Onderschepping kan ook worden uitgevoerd met behulp van Cisco’s WCCP (Web Cache Control Protocol). Dit eigen protocol bevindt zich op de router en wordt vanuit de cache geconfigureerd, zodat de cache kan bepalen welke poorten en welk verkeer er naar toe wordt gestuurd via transparante omleiding vanaf de router. Deze omleiding kan op een van de volgende twee manieren plaatsvinden: GRE tunneling (OSI Layer 3) of MAC rewrites (OSI Layer 2).
Als het verkeer eenmaal de proxy machine zelf bereikt wordt interceptie meestal uitgevoerd met NAT (Network Address Translation). Dergelijke instellingen zijn onzichtbaar voor de clientbrowser, maar laten de proxy zichtbaar voor de webserver en andere apparaten aan de internetzijde van de proxy. Recente Linux en sommige BSD versies bieden TPROXY (transparante proxy) die op IP-niveau (OSI Laag 3) transparante interceptie en spoofing van uitgaand verkeer uitvoert, waarbij het proxy IP-adres verborgen blijft voor andere netwerkapparaten.
DetectieEdit
Er kunnen verschillende methoden worden gebruikt om de aanwezigheid van een onderscheppende proxyserver te detecteren:
- Door het externe IP-adres van de client te vergelijken met het adres dat door een externe webserver wordt gezien, of soms door de HTTP-headers te onderzoeken die door een server worden ontvangen. Er zijn een aantal sites gemaakt om dit probleem aan te pakken, door het IP-adres van de gebruiker zoals gezien door de site terug te geven aan de gebruiker op een webpagina. Google geeft ook het IP-adres weer zoals dat door de pagina wordt gezien als de gebruiker zoekt naar “IP”.
- Door het resultaat van online IP-checkers te vergelijken bij toegang via HTTPS vs HTTP, aangezien de meeste onderscheppende proxies SSL niet onderscheppen. Als er een vermoeden is dat SSL wordt onderschept, kan men het certificaat onderzoeken dat is gekoppeld aan een beveiligde website, het root-certificaat zou moeten aangeven of het is uitgegeven met het doel om te onderscheppen.
- Door het vergelijken van de volgorde van netwerkhops gerapporteerd door een tool zoals traceroute voor een proxied protocol zoals http (poort 80) met die voor een non-proxied protocol zoals SMTP (poort 25).
- Door te proberen een verbinding te maken met een IP-adres waarvan bekend is dat er geen server is. De proxy accepteert de verbinding en probeert deze dan door te sturen. Als de proxy geen server vindt om de verbinding te accepteren, kan hij een foutmelding terugsturen of de verbinding met de client gewoon sluiten. Dit verschil in gedrag is eenvoudig op te sporen. De meeste webbrowsers zullen bijvoorbeeld een door de browser gemaakte foutpagina genereren in het geval dat zij geen verbinding kunnen maken met een HTTP-server, maar een andere fout teruggeven in het geval dat de verbinding wordt geaccepteerd en vervolgens wordt gesloten.
- Door de eindgebruiker speciaal geprogrammeerde Adobe Flash SWF-toepassingen of Sun Java-applets aan te bieden die HTTP-oproepen naar hun server terugsturen.
CGI proxyEdit
Een CGI web proxy accepteert doel-URL’s met behulp van een webformulier in het browservenster van de gebruiker, verwerkt het verzoek, en stuurt de resultaten terug naar de browser van de gebruiker. Bijgevolg kan het worden gebruikt op een apparaat of netwerk dat niet toestaat dat “echte” proxy-instellingen worden gewijzigd. De eerste geregistreerde CGI-proxy, destijds “rover” genoemd maar in 1998 hernoemd tot “CGIProxy”, werd begin 1996 ontwikkeld door de Amerikaanse informaticus James Marshall voor een artikel in “Unix Review” van Rich Morin.
De meerderheid van de CGI-proxy’s wordt aangedreven door een van de CGIProxy (geschreven in de taal Perl), Glype (geschreven in de taal PHP), of PHProxy (geschreven in de taal PHP). Vanaf april 2016 heeft CGIProxy ongeveer 2 miljoen downloads ontvangen, Glype heeft bijna een miljoen downloads ontvangen, terwijl PHProxy nog steeds honderden downloads per week ontvangt. Ondanks afnemende populariteit als gevolg van VPN’s en andere privacy methoden, zijn er nog steeds veel CGI proxy’s online.
Sommige CGI proxy’s werden opgezet voor doeleinden zoals het toegankelijker maken van websites voor gehandicapten, maar zijn sindsdien stilgelegd als gevolg van overmatig verkeer, meestal veroorzaakt door een derde partij die de dienst adverteert als een middel om lokale filtering te omzeilen. Omdat veel van deze gebruikers zich niets aantrekken van de schade die zij veroorzaken, werd het voor organisaties noodzakelijk hun proxy’s te verbergen en de URL’s alleen bekend te maken aan degenen die de moeite nemen contact op te nemen met de organisatie en een reële behoefte aantonen.
Suffix proxyEdit
Een suffix proxy stelt een gebruiker in staat toegang te krijgen tot webcontent door de naam van de proxy server toe te voegen aan de URL van de opgevraagde content (bijv. “en.wikipedia.org.SuffixProxy.com”). Suffix-proxyservers zijn gemakkelijker te gebruiken dan gewone proxyservers, maar ze bieden geen hoge mate van anonimiteit en worden in de eerste plaats gebruikt om webfilters te omzeilen. Dit wordt echter zelden gebruikt vanwege geavanceerdere webfilters.
Tor onion proxy softwareEdit
De Onion Router (Tor) is een systeem dat bedoeld is om online anonimiteit te bieden. Tor-clientsoftware routeert internetverkeer door een wereldwijd vrijwilligersnetwerk van servers om de computerlocatie of het computergebruik van een gebruiker te verbergen voor iemand die het netwerk controleert of het verkeer analyseert. Het gebruik van Tor maakt het traceren van internetactiviteiten moeilijker, en is bedoeld om de persoonlijke vrijheid en privacy van gebruikers te beschermen.
“Onion routing” verwijst naar de gelaagde aard van de encryptiedienst: De oorspronkelijke gegevens worden meerdere malen versleuteld en opnieuw versleuteld en vervolgens via opeenvolgende Tor-relais verzonden, die elk een “laag” van versleuteling ontsleutelen alvorens de gegevens door te geven aan het volgende relais en uiteindelijk de bestemming. Dit verkleint de kans dat de oorspronkelijke gegevens onderweg worden ontcijferd of begrepen.
I2P anonymous proxyEdit
Het I2P anonymous network (‘I2P’) is een proxy-netwerk dat gericht is op online anonimiteit. Het implementeert garlic routing, wat een verbetering is van Tor’s onion routing. I2P is volledig gedistribueerd en werkt door alle communicatie in verschillende lagen te versleutelen en door te sturen via een netwerk van routers die door vrijwilligers op verschillende locaties worden beheerd. Door de bron van de informatie verborgen te houden, biedt I2P weerstand tegen censuur. De doelen van I2P zijn het beschermen van de persoonlijke vrijheid, privacy, en de mogelijkheid om vertrouwelijke zaken te doen.
Elke gebruiker van I2P draait een I2P router op zijn computer (node). De I2P router zorgt voor het vinden van andere peers en het bouwen van anonieme tunnels door hen. I2P biedt proxies voor alle protocollen (HTTP, IRC, SOCKS, …).
Vergelijking met netwerk adres vertalersEdit
Het proxy concept verwijst naar een laag 7 toepassing in het OSI referentie model. Network address translation (NAT) is vergelijkbaar met een proxy, maar werkt in laag 3.
In de clientconfiguratie van laag-3 NAT is het configureren van de gateway voldoende. Voor de client configuratie van een laag 7 proxy moet de bestemming van de pakketten die de client genereert echter altijd de proxy server (laag 7) zijn, waarna de proxy server elk pakket leest en de ware bestemming achterhaalt.
Omdat NAT op laag 3 werkt, kost het minder middelen dan de laag 7 proxy, maar het is ook minder flexibel. Wanneer we deze twee technologieën vergelijken, kunnen we een terminologie tegenkomen die bekend staat als “transparante firewall”. Transparante firewall betekent dat de proxy de voordelen van de laag-7 proxy gebruikt zonder medeweten van de cliënt. De client gaat ervan uit dat de gateway een NAT is in laag 3, en heeft geen idee van de binnenkant van het pakket, maar via deze methode worden de laag-3 pakketten naar de laag-7 proxy gestuurd voor onderzoek.
DNS proxyEdit
Een DNS proxy server neemt DNS queries aan van een (meestal lokaal) netwerk en stuurt ze door naar een Internet Domain Name Server. Hij kan ook DNS-records cachen.
ProxifiersEdit
Sommige client-programma’s “SOCKS-ifyen” verzoeken, waardoor aanpassing van elke netwerksoftware verbinding kan maken met externe netwerken via bepaalde soorten proxyservers (meestal SOCKS).
Residentiële proxyEdit
Een residentiële proxy is een tussenpersoon die gebruik maakt van een echt IP-adres dat door een Internet Service Provider (ISP) wordt verstrekt met fysieke apparaten zoals mobiele telefoons en computers van eindgebruikers. In plaats van rechtstreeks verbinding te maken met een server, maken residentiële proxygebruikers verbinding met het doelwit via residentiële IP-adressen. Het doelwit identificeert hen vervolgens als biologische internetgebruikers. Het laat geen enkel opsporingsmiddel toe om de herbestemming van de gebruiker te identificeren. Elke residentiële proxy kan een willekeurig aantal gelijktijdige verzoeken verzenden en de IP-adressen zijn direct gerelateerd aan een specifieke regio.