Standardně posílá prohlížeč na určitý port proxy serveru dotazy a proxy mu odpovídající objekty poskytuje, ať už se v cache nacházejí nebo ne. V praxi pak mohou nastat různé situace:
Z bezpečnostních důvodů je lepší, když proxy používají všichni klienti.
Je třeba, aby uživatelé používali proxy, i když o ní neví.
Proxy se v síti přesunula, ale klienti by si měli i nadále zachovat svou starou konfiguraci.
V každém z těchto případů je vhodné nasadit transparentní proxy. Princip je přitom velice jednoduchý. Internetový prohlížeč pošle svůj požadavek. Na cestě sedí proxy, která tento požadavek zpracuje a odpověď odešle zpět prohlížeči, který vůbec netuší, že komunikuje s proxy a ne přímo se zdrojem. Celý proces je zcela transparentní.
Nejprve se ujistěte, že jádro proxy serveru podporuje transparentní proxy. Jádro systému SUSE Linux tuto podmínku splňuje. Pokud tomu tak není, rekompilujte jádro s podporou transparentní proxy.
Volby v souboru /etc/squid/squid.conf
potřebné pro aktivaci transparentní proxy jsou následující:
httpd_accel_host virtual
httpd_accel_port 80
Číslo portu, na kterém běží HTTP server.
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Všechny příchozí dotazy musí být pomocí firewallu přesměrovány na port
Squida. K tomu můžete použít nástroj SuSEfirewall2. Jeho konfigurace se
nachází v souboru /etc/sysconfig/SuSEfirewall2.
Soubor je dobře komentovaný. I když chcete nastavit pouze transparentní
proxy, je potřeba provést určitá nastavení ve firewallu:
Rozhraní pro přístup k Internetu:
FW_DEV_EXT="eth1"
Rozhraní pro přístup k vnitřní síti:
FW_DEV_INT="eth0"
Když jste definovali rozhraní pro přístup k jednotlivým sítím, je potřeba povolit porty a služby, které budou přístupné z vnější sítě. V našem příkladu jsou vně nabízeny jen webové služby:
FW_SERVICES_EXT_TCP="www"
Pak je třeba povolit porty a služby dostupné z vnitřní (bezpečné) sítě přes TCP i UDP:
FW_SERVICES_INT_TCP="domain www 3128" FW_SERVICES_INT_UDP="domain"
Tím jsou povoleny webové služby a Squid, který běží standardně na portu
3128. Navíc je povolena služba DNS (domain). Pokud
DNS povolovat nechcete, smažte ho z nastavení výše a nastavte následující
volbu na no:
FW_SERVICE_DNS="yes"
Nejdůležitější je volba číslo 15:
Příklad 29.1. Konfigurace firewallu: Volba 15
# # 15.) # Which accesses to services should be redirected to a local port # on the firewall machine? # # This can be used to force all internal users to surf via your # Squid proxy, or transparently redirect incoming Web traffic to # a secure Web server. # # Choice: leave empty or use the following explained syntax of # redirecting rules, separated with spaces. # A redirecting rule consists of 1) source IP/net, # 2) destination IP/net, 3) original destination port and # 4) local port to redirect the traffic to, separated by a colon, # e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080" #
Komentáře popisují syntaxi. Nejdřív se vezme IP adresa a síťová maska
interní sítě, ze které se bude přistupovat k proxy firewallu. Pak
zadejte adresu a masku cíle, tj. kam jsou požadavky klientů posílány.
V případě webového prohlížeče zvolte síť 0/0,
což značí přístup kamkoliv. Pak nastavte originální port a port, na který
jsou požadavky přesměrovávány. Protože Squid podporuje kromě HTTP i další
protokoly, přesměrujte na proxy požadavky i z dalších portů, jako např.
FTP (port 21), HTTPS nebo SSL (port 443). V našem příkladě jsou webové
služby (port 80) přesměrovány na Squid proxy (port
3128). Pokud je sítí nebo služeb více, musí být
v položce odděleny mezerou.
FW_REDIRECT_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128" FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
Firewall s novou konfigurací spustíte nastavením proměnné
START_FW v souboru
/etc/sysconfig/SuSEfirewall2
na hodnotu "yes".
Pak spusťte Squid tak, jak je uvedeno v části
29.3 – „Spuštění squida“.
Zda vše funguje právně se můžete přesvědčit v protokolovém souboru
/var/log/squid/access.log.
Zda jsou všechny porty nastaveny dobře zjistíte tak, že použijete
z libovolného místa mimo vaši síť portscan, tj. že se pokusíte zjistit,
které porty jsou otevřené. V našem případě by měl být otevřen pouze
port 80. Ke skenování použijte např. program nmap
(nmap -O IP_adresa).