Proxy servers
Tussenpersoon met cache, ACL's en verbergfunctie: HIT/MISS, TTL, ICP, SOCKS en plaats in het netwerkontwerp.
1Wat is een proxy en hoe werkt hij?

Een proxy server is een tussenstation dat diensten namens de gebruiker uitvoert op het internet: HTTP, FTP, Telnet, Real Audio, DNS, SOCKS.
De gebruiker stuurt zijn aanvraag naar IP-adres + poort van de proxy (bv. 3128 of 8080).
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).
- 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.
- 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.
Client vraagt http://www.kdg.be/info.htm aan de proxy.
Zelfde aanvraag van dezelfde of een andere client.
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.
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).
Cache-instellingen: min/max bestandsgrootte per HTTP-document, doorgaan met downloaden ook al drukte de gebruiker op STOP, vergelijkbare cache voor FTP.
4Functies: forward proxy, reverse proxy, transparant
- 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.
- 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).
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.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 31285ICP 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?"
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.
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.
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.
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% 43208Proxy 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.
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)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.
# 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- 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).
Nog niet klaar? Je kan altijd terugkomen.