Netwerken 3
00
Hoofdstuk 3

Proxy servers

Tussenpersoon met cache, ACL's en verbergfunctie: HIT/MISS, TTL, ICP, SOCKS en plaats in het netwerkontwerp.

0%
voltooid

1Wat is een proxy en hoe werkt hij?

Clients praten enkel met de proxy; de proxy praat met het internet.
Clients praten enkel met de proxy; de proxy praat met het internet.

Een proxy server is een tussenstation dat diensten namens de gebruiker uitvoert op het internet: HTTP, FTP, Telnet, Real Audio, DNS, SOCKS.

Werking (4 stappen)
Stap 1 van 4
Client vraagt aan proxy

De gebruiker stuurt zijn aanvraag naar IP-adres + poort van de proxy (bv. 3128 of 8080).

VoordeelUitleg
SnelheidReeds opgehaalde documenten staan in de disk cache: geen 2e keer van het internet halen.
Beveiliging (verbergen)Vanuit internet zie je enkel de proxy; je eigen netwerk blijft verborgen.
Beveiliging (controle)ACL's laten verkeer toe of weigeren het; alles wordt gelogd.
+25 XP

2Disk cache, HIT en MISS

Disk cache = ruimte op de harde schijf van de proxy (MB tot GB, vooraf ingesteld) waar HTTP-documenten en bestanden tijdelijk worden bewaard. Zit ze vol, dan worden de oudste bestanden vervangen door nieuwe: FIFO (First In First Out).

HIT
  • Pagina staat in de disk cache (en is nog geldig).
  • Proxy geeft ze rechtstreeks van zijn schijf.
  • Internet wordt niet geraadpleegd: snel, geen WAN-verkeer.
  • Bv. 2e gebruiker haalt hetzelfde document op.
MISS
  • Pagina staat niet in de cache (of is verlopen / non-cacheable).
  • Proxy haalt ze op bij de webserver (of eerst bij neighbour/parent via ICP).
  • Proxy bewaart een kopie en stuurt door naar de client.
  • Bv. 1e gebruiker die dit document opvraagt.
MISS (1e opvraging van http://www.kdg.be/info.htm)
Stap 1 van 4
1. Client naar proxy

Client vraagt http://www.kdg.be/info.htm aan de proxy.

HIT (2e opvraging)
Stap 1 van 2
1. Client naar proxy

Zelfde aanvraag van dezelfde of een andere client.

+25 XP

3Non-cacheable en TTL (validatie)

Non-cacheable = document dat niet in de cache mag/kan worden bewaard (of niet hergebruikt). Bv. dynamische inhoud (cgi-bin, databank-antwoorden, formulieren/POST), pagina's die expliciet als non-cacheable gemarkeerd zijn. Kiest de gebruiker Refresh/Reload, dan markeert de browser die aanvraag automatisch als non-cacheable: de proxy gaat dan toch naar de webserver (= altijd een MISS, nieuwste versie).

Ook browsers cachen lokaal (Temporary Internet Files): zelfde principe, aan de kant van de client.

Methode om te valideren of een gecachet bericht nog kloptEigenschap
1. Vraag aan de webserver of de pagina intussen veranderd isAltijd actueel, maar trager (extra verkeer).
2. Proxy kijkt zelf naar datum/tijd (TTL)Snelst, maar mogelijk een verouderd document.

Bij methode 2 stel je per type een TTL (Time To Live) in: zolang de TTL niet verstreken is, geeft de proxy het document uit de cache (HIT); daarna haalt hij het opnieuw op (MISS).

TypeVoorbeeld-TTLWaarom
www-adressen (HTML)2 uurVerandert af en toe.
gif-bestanden (afbeeldingen)7 dagenVeranderen bijna nooit: lang cachen.
cgi-bin (dynamisch)30 minutenVerandert snel: kort cachen.

Cache-instellingen: min/max bestandsgrootte per HTTP-document, doorgaan met downloaden ook al drukte de gebruiker op STOP, vergelijkbare cache voor FTP.

+25 XP

4Functies: forward proxy, reverse proxy, transparant

FunctieWat doet het?
Client accelerator (standard proxy cache)Disk cache voor de clients: reeds opgehaalde data niet nog eens ophalen.
HTTP accelerator (reverse proxy)Front-end voor eigen webserver(s). Internetgebruiker verbindt met de proxy, niet met de webserver.
Hiërarchische proxy cacheProxy's in een boom; bij MISS vraagt men de volgende proxy (zie ICP).
Forward proxy (client accelerator)
  • Staat bij de clients (LAN), richting internet.
  • Clients (intern) naar internet.
  • Beschermt/anonimiseert de clients; filtert en cachet uitgaand verkeer.
  • Client moet de proxy kennen (of transparant omgeleid worden).
  • Cachet willekeurige externe sites.
Reverse proxy (HTTP accelerator)
  • Staat bij de webserver (vaak DMZ), richting LAN/servers.
  • Internetgebruikers naar jouw webserver.
  • Beschermt de server: internet kan niet rechtstreeks het privénetwerk in (firewall-functie).
  • Gebruiker merkt niets; DNS wijst naar de proxy.
  • Cachet enkel jouw eigen content (ook load balancing/SSL mogelijk).
HTTP accelerator bij een statische pagina (www.web.be/info.htm)
Stap 1 van 3
1. Internetgebruiker

Vraagt http://www.web.be/info.htm aan. Het DNS-adres van www.web.be is dat van de proxy.

Transparante proxy: de client weet niet dat er een proxy is en moet niets instellen. De router/firewall onderschept en leidt het verkeer om (bv. alle poort 80 naar de proxy). Een gewone proxy moet in de browser ingesteld worden. Beperking: HTTPS is niet transparant te cachen zonder certificaat-trucs.

bash
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Transparante omleiding op Linux-firewall (LAN = eth1, Squid op poort 3128 op dezelfde machine)
+25 XP

5ICP en cache-hiërarchie (neighbour, parent)

In grotere netwerken zijn proxies opgebouwd als een boom (watervalstructuur): cascading / hiërarchische proxies. De communicatie tussen die proxies gebeurt met ICP = Internet Cache Protocol: "Heb jij dit document al?"

BegripBetekenis
Neighbour proxyProxy die samenwerkt met jouw proxy (zelfde niveau, "buur"). Vraag: heb jij dit al opgevraagd?
Parent proxyProxy op een hoger niveau in de boom. Heeft zelf ook cache en haalt zo nodig verder op (richting internet).
ICP-antwoord HITDie proxy heeft de pagina al.
ICP-antwoord MISSDie proxy heeft de pagina niet.
Hiërarchische cache bij MISS
Stap 1 van 5
1. Eigen proxy

Client vraagt aan zijn standaard proxy. MISS in eigen cache.

  • Voordelen ICP: de aanvraag gaat naar meerdere proxies (werk verdelen).
  • De snelste proxy antwoordt eerst en wordt gebruikt.
  • Slecht ingestelde of uitgevallen proxies worden gedetecteerd.
  • Squid (meest gebruikte proxy op Unix/Linux) ondersteunt ICP.

Opties bij communicatie met de parent: authenticatie (doet de parent ook gebruikersnaam/paswoord?), HTTPS (door jou of door de parent afgehandeld), GET/POST (GET zet data in de URL, POST stuurt ze onzichtbaar mee), FTP-ondersteuning.

+25 XP

6SOCKS

SOCKS is een generiek proxy-/firewallprotocol dat hosts aan de ene kant van de proxy volledige toegang geeft tot hosts aan de andere kant. De SOCKS-server vraagt gebruikersnaam + paswoord en stuurt de data door. Typisch: interne hosts hebben vrije toegang tot het internet, maar het internet kan niet naar binnen. Werkt voor allerlei programma's (putty, telnet, browsers aan client-kant), niet enkel HTTP.

VersieKenmerken
SOCKS 4Geen UDP-proxy, geen authenticatie, geen DNS-resolving.
SOCKS 5Authenticatie (username + password in cleartext!), UDP, DNS-resolving, anonymous FTP, automatisch verbinding naar een ISP.
SOCKS 6Snelheid: TCP Fast Open (data al in de SYN), 0-RTT (early data in TLS-handshake met Pre Shared Key), opent al een socket zonder te wachten op authenticatie.
+25 XP

7Beheer: ACL's, logs, interfaces, mail

  • ACL's (toegangsregels): blokkeer of laat toe op basis van IP-nummers/ranges, interfaces (netwerkkaart/modem), tijdstippen, URL's, bestandstypes (zip, gif, mpg, html) en services (icp, http, https, ftp, telnet, socks, real audio).
  • Interfaces: Secure = LAN-interfaces waarvoor je proxy-diensten levert. Insecure = modem/netwerkverbinding naar internet.
  • Logs: standaard wordt elke opgevraagde pagina gelogd; daarnaast security-logs en error-logs (foute paswoorden, onveilige IP's).
  • Mail: lokale mailadressen gaan niet via internet maar via de lokale mailserver (niet de proxy). De proxy moet wel de SMTP-server (uitgaand) en POP3-server (inkomend) kennen.
squid
acl lan src 192.168.10.0/24
acl blocked dstdomain .facebook.com .tiktok.com
acl nozip urlpath_regex \.zip$
http_port 3128
http_access deny blocked
http_access deny nozip
http_access allow lan
http_access deny all
# TTL (min = minuten): gif 7 dagen, cgi-bin 30 min, rest 2 uur
refresh_pattern \.gif$ 10080 20% 10080
refresh_pattern cgi-bin 30 0% 30
refresh_pattern . 120 20% 4320
Voorbeeld ACL in Squid (squid.conf): LAN mag surfen, sociale media geblokkeerd, TTL via refresh_pattern
+25 XP

8Proxy in een netwerkontwerp (firewall, DMZ, DNS)

Principe: internet, firewall met 3 zones: WAN (extern), DMZ (publieke servers), LAN (privé). Webserver en reverse proxy in de DMZ; clients in het LAN surfen via de forward proxy; de firewall dwingt dat af.

text
            Internet
               |
   Externe DNS (ISP / 198.51.100.53)   www.bedrijf.be  A  203.0.113.3
               |
        Router/ISP  203.0.113.1/29
               |
      Firewall (NAT, 3 interfaces)
       eth0 WAN  203.0.113.2/29   (publiek, ook 203.0.113.3 als extra adres, voor DNAT)
       eth1 DMZ  192.168.100.1/24
       eth2 LAN  192.168.10.1/24
        |                         |
   DMZ 192.168.100.0/24      LAN 192.168.10.0/24
   Reverse proxy  192.168.100.10    Clients 192.168.10.50-200 (DHCP)
   Webserver      192.168.100.20    Interne DNS/DHCP 192.168.10.2
   Forward proxy  192.168.100.30:3128   (clients: proxy 192.168.100.30:3128)
Voorbeeld-ontwerp met geldige adressen (documentatie-range 203.0.113.0/24 als "publiek" IP van het bedrijf)
Pakketverloop
Stap 1 van 3
Surfen vanuit LAN (forward proxy)

Client (192.168.10.50) naar proxy 192.168.100.30:3128. Proxy gaat het internet op met zijn eigen IP (NAT naar 203.0.113.2). LAN-IP's blijven verborgen.

bash
# NAT (uitgaand: masquerade; inkomend: web naar reverse proxy)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 80,443 \
         -j DNAT --to-destination 192.168.100.10

iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Internet -> reverse proxy (enkel web)
iptables -A FORWARD -i eth0 -d 192.168.100.10 -p tcp -m multiport --dports 80,443 -j ACCEPT
# Reverse proxy -> webserver
iptables -A FORWARD -s 192.168.100.10 -d 192.168.100.20 -p tcp --dport 80 -j ACCEPT
# LAN -> forward proxy (enkel 3128)
iptables -A FORWARD -i eth2 -d 192.168.100.30 -p tcp --dport 3128 -j ACCEPT
# Forward proxy -> internet
iptables -A FORWARD -s 192.168.100.30 -o eth0 -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A FORWARD -s 192.168.100.30 -o eth0 -p udp --dport 53 -j ACCEPT
# Alles anders (LAN direct naar internet) wordt door policy DROP geweigerd
Firewallregels (iptables) die dit afdwingen
  • Waarom DMZ? Wordt de webserver gehackt, dan zit de aanvaller nog niet in het LAN.
  • Proxy + firewall vullen elkaar aan: firewall filtert op IP/poort (laag 3-4), proxy op URL/gebruiker/inhoud (laag 7) en cachet.
  • LAN-WAN-verbinding: de firewall/router heeft naar de ISP een publiek (/29 of /30) adres; intern privé-adressen (RFC 1918) + NAT.
  • Verbeteringen: tweede proxy voor redundantie (ICP/parent), IDS (Snort/Suricata) in de DMZ, logging, externe DNS enkel voor publieke namen (www, mail).
+25 XP
Volgende stap

Nog niet klaar? Je kan altijd terugkomen.

Leer de begrippen