29.5. Konfigurace transparentní proxy

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:

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í.

29.5.1. Konfigurace jádra

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.

29.5.2. Možnosti konfigurace v /etc/squid/squid.conf

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

29.5.3. Konfigurace firewallu pomocí SuSEfirewallu2

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).