Transzparens Squid szerver

Fórumok

Sziasztok!

6 órája kutatok a neten, hogy hogyan lehet beállítani egy transzparens proxyt. HUP-on is volt 1-2 téma, ahol megoldották a problémát, de nem sikerült.

A jelenlegi felállás:

  • Debian 6 Squeeze
  • Squid 2.7 Stable 9
  • eth0: (ez megy az internet felé)
  • eth1: 192.168.1.1 (belső hálózat: 192.168.1.0/24)
  • eth2: (dinamikusan kapja az ip-t egy másik hálózatból) ezen nem transzparens módba figyel a squid

Egy olyan átjárót szeretnék létrehozni, mely a felhasználót kényszeríti proxy használatára és ne kelljen beállítani kliens oldalon a böngészőt. Érdemes reklám szűrést squidGuarddal megvalósítani?

Ha böngészőben beállítom a proxyt (192.168.1.1:3128) akkor csatlakozik az internetre a proxyval. A szerveren iptables segítségével átirányítottam a forgalmat a 80-as portról a 3128-ra (iptables -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128), és a squid.confba hozzátettem: http_port 192.168.1.1:3128 transparent, de így sem működik. Proxy nélkül egyszer nem tölt be semmit, máskor meg betölti az oldalt, de proxyt nem használ.

Előre is köszönöm segítségeteket!

Hozzászólások

Heló. Lehet hülyeség, de amikor én csináltam a transzparens mód csak úgy működött, hogyha csináltam egy DNS szervert(Bind) is a Squid mellé. Nem transzparens módban erre nem volt szükség.
Vagy megpróbálhatod iptablessel a szolgáltatód DNS-ét használni:

iptables -t nat -A PREROUTING -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 53 -j MASQUERADE
Régen használtam iptablest lehet el is írtam őket, szóval csak saját felelősségre.

Szerintem kihagytad, hogy az iptables szabályt melyik táblához adja hozzá. Helyesen:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Esetleg ezt is érdemes átnézni:
http://www.ubuntugeek.com/how-to-setup-transparent-squid-proxy-server-i…

--------------------------------------------------------------
"Tegnap reggel addig röhögtünk a főnök viccén, míg ki nem derült, hogy az a napi feladat."

Sziasztok!

Épp múlt héten csináltam egyet, először transzparens lett volna, utána jött a kérés, hogy a nevelők had írhassanak be jelszót és a gyerek csak úgy használhassa az internetet, így lett user/pass.

Egy gondom, hogy a https nem megy át, portoknál a kommentet kivettem. Kell működni a https-nek is?

A pontos konfig nincs most előttem.

Köszönöm mindenkinek aki segített! Sh scripthez hozzáadtam, ami csatoló felhúzásakor indul.


#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Sziasztok!

Én annyiban szólnék hozzá, hogy én is szeretnék tanácsot kérni.
Nálam egy ipcop v2 megy mint proxy és szintén transzparens módban. A proxy http protokollon megy és az a gond, hogy vannak olyan weblapok amiknek van https oldaluk is, pl.: Facebook.
Nálunk termenkénti tiltás is van (MAC alaján) így a tanár az adott teremben le tudja tiltani a netet.
A gond az, hogy a fifikás tanulók https-en facebookoznak. Azt szeretném megoldani, hogy adott termet teljesen le tudjak tiltani a squid-del.
Próbálkoztam, azzal, hogy a /var/ipcop/proxy/acls/include.acl fájlba írok, de nem igazán értek a squidhez így nem is lett jó az eredmény.
Szeretnék kérni tanácsot a megoldáshoz.

Itt van a squid.conf:

http_port 10.205.206.254:8080 transparent

cache_effective_user squid
cache_effective_group squid
umask 022

pid_filename /var/run/squid.pid

cache_mem 4 MB
cache_dir aufs /var/log/cache 50 16 256

error_directory /usr/lib/squid/errors.ipcop/hu

access_log /dev/null
cache_log /dev/null
cache_store_log none

log_mime_hdrs off
logfile_rotate 0
forwarded_for off
via off

acl within_timeframe time MTWHFAS 00:00-24:00

acl localhost src 127.0.0.1/32
acl SSL_ports port 443 # https
acl SSL_ports port 8443 # alternative https
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 1025-65535 # unprivileged ports
acl Safe_ports port 8080 # Squids port (for icons)

acl IPCop_http port 81
acl IPCop_https port 8443
acl IPCop_ips dst 10.205.206.254
acl IPCop_networks src "/var/ipcop/proxy/acls/src_networks.acl"
acl IPCop_servers dst "/var/ipcop/proxy/acls/src_subnets.acl"
acl IPCop_green_network src 10.205.206.0/24
acl IPCop_green_servers dst 10.205.206.0/24
acl IPCop_blue_network src 10.205.205.0/24
acl IPCop_blue_servers dst 10.205.205.0/24
acl IPCop_banned_mac arp "/var/ipcop/proxy/acls/src_banned_mac.acl"
acl CONNECT method CONNECT

#Classroom extensions
acl IPCop_no_access_ips src "/var/ipcop/proxy/acls/src_noaccess_ip.acl"
acl IPCop_no_access_mac arp "/var/ipcop/proxy/acls/src_noaccess_mac.acl"
deny_info ERR_ACCESS_DENIED IPCop_no_access_ips
deny_info ERR_ACCESS_DENIED IPCop_no_access_mac
http_access deny IPCop_no_access_ips
http_access deny IPCop_no_access_mac

#Access to squid:
#local machine, no restriction
http_access allow localhost

#GUI admin if local machine connects
http_access allow IPCop_ips IPCop_networks IPCop_http
http_access allow CONNECT IPCop_ips IPCop_networks IPCop_https

#Deny not web services
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Set custom configured ACLs
http_access deny IPCop_banned_mac
http_access allow IPCop_networks within_timeframe
http_access deny all

#Strip HTTP Header
request_header_access X-Forwarded-For deny all
request_header_access Via deny all

maximum_object_size 4096 KB
minimum_object_size 0 KB

request_body_max_size 0 KB
reply_body_max_size none all

visible_hostname hercules.localdomain

Itt van a /var/ipcop/proxy/acls/include.acl
acl szamtec-termek arp 00:24:21:20:48:23 ide jönnének a mac címek
acl facebook dstdomain .facebook.com
acl officetime time MTWHFA 08:00-15:00
http_reply_access_deny facebook szamtec-termek officetime
http_access deny CONNECT facebook szamtec-termek officetime

Próbáld a squid CONNECT lehetőségét használni.
http://wiki.squid-cache.org/SquidFaq/ConfiguringSquid

Amikor annó squid https szavakra kerestem google-ban akkor ott is ezzel okoskodtak.

Ez még érdekesen hangzik:
http://blog.davidvassallo.me/2011/03/22/squid-transparent-ssl-intercept…
viszont ha jól értem bukod az ssl-es oldalak hiteles kulcsait, és a sajátod megy a kliensek felé helyette (bár csak átfutottam a cikket).

Mindenféle gorombaság nélkül ajánlom a google-t. Például squid example esetleg squid basic example szavakkal.
Szerintem sokkal jobb, és többet is tanul belölle az ember, ha utána néz amennyire tud, esetleg egy teszt környezetben (akár virtuálisan) összerakja a rendszert, mielött élesbe állna. Így közben tanulni is lehet és van idö/lehetöség kikisérletezni a megoldást.

Hirtelen ezt találtam:
https://help.ubuntu.com/12.04/serverguide/squid.html

De itt egy példa config:

-- dhcpd.conf --
option domain-name "example.site";
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 192.168.3.10; #linux proxy szerver IP-je

### option subnet-mask 255.255.0.0;
default-lease-time 28800;
max-lease-time 259200;

subnet 192.168.3.0 netmask 255.255.0.0 {
range 192.168.3.50 192.168.3.150;
}

#desktop1
host desktop1 {
hardware ethernet 1c:2c:3a:4a:5b:5d;
fixed-address 192.168.4.10;
}

--- squid.conf --- (részlet!)

acl all src 0.0.0.0/0.0.0.0
acl allowedhosts src 192.168.4.0/24
acl limitedhosts src 192.168.3.0/24

acl whitelist url_regex "/etc/squid/whitelist.txt"
acl blacklist url_regex "/etc/squid/blacklist.txt"

http_access deny blacklist

http_access allow allowedhosts

http_access allow limitedhosts whitelist
http_access deny limitedhosts

--- blacklist.txt ---
# video pages
youtube
videa
vimeo
indavideo
video
radio

#community
facebook
iwiw
badoo
netlog

a whitelist.txt is hasonló a blacklist.txt-hez, de nevéhez is mérten pont a fordítottja.

A fenti squid.conf részlet (ha jól írtam meg), akkor azt teszi, hogy mindenkinél tiltja a blacklist.txt-ben lévö szavakat az url-ben. A 192.168.4.0-s tartománynak mindent enged, de a 192.168.3.0-s gépeknek csak a whitelist-be felvett szavakat tartalmazó oldalakat (persze ide lehet domaineket is felvenni a szavak helyett. pl: index.hu)

Remélem segít.
A többit már google-val össze tudod szedni. ;)

Sok sikert!

Köszi mindenkinek a hozzászólást.
Addig sikerült eljutni, hogy mac cím alapján meg tudom adni az egyes domainek tiltását.

acl tanuloi-gepek arp "/var/ipcop/proxy/tanuloi-gepek.txt"
acl ads url_regex "/var/ipcop/proxy/badsites.txt"
http_access deny ads tanuloi-gepek

A tanuloi-gepek.txt tartalmazza soronként a mac címeket
#[4-es-terem]
xx:6f:xx
xx:e5:xx
xx:e5:xx

már csak a https alapú lapok tiltása kellene pl.:facebook
de már ez is haladás.