Control de l'accés web a través de l'squid

control de l'accés web a través de l'squid

(Abans se situa un fitxer "firewall.sh" amb un conjunt d'iptables, entre elles:
# Redireccionem a Squid (port 3128) tot allò destinat al port 80 (http)
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -s 192.168.1.0/24 -j REDIRECT --to-port=3128
iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
)

L'objectiu és definir diversos espais al centre que permetin accessos diversos a internet. Bàsicament, aules amb només accés als llocs web decidits pel centre (el fitxer whitelist) i/o que fan referència a conceptes de l'àmbit de l'ensenyament (el fitxer paraulesSi), aules amb accés prohibit a alguns llocs (el fitxer blacklist) i/o que fan referència a contiguts inapropiats per un centre d'ensenyament (el fitxer paraulesNo).

Tots aquests fitxers són fitxers de text que es situen a "/etc/squid/".

Petits exemples de cadascun:

fitxer whitelist (accés a tots els llocs .cat, .edu, etcètera, i només a ells)
.cat
.eu
.edu
.org
.net
.skype.com
.google.com
.google.es
.update.microsoft.com

fitxer blacklist (no permet l'accés a:)
.facebook.com
.facebook.es
.facebook.cat
.redtube.com
.marca.com
.marca.es
.elmundodeportivo.com
.airsoft.es
.tuenti.com
.cuantocabron.com
.interviu.es
.sport.es
.minijuegos.com
.y3.com
.juegosjuegos.com

fitxer paraulesSi (accés a tots els llocs relatius a:)
educació
ensenyament
matemàtiques
filosofia


fitxer paraulesNo (No permet l'accés a llocs relatius a:)
lolitas
porn
porno
pussy
xxx
ass
zzz
fuck
hottest
lesbian
teen
tits
cock
hottie
gay
zorras
shemale

Finalment el fitxer que regula tot això: "squid.conf" (que es troba també a "/etc/squid/":
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
# tot el centre
acl localnet src 192.168.1.0/24
# definim espais
acl departaments src 192.168.1.5-192.168.1.20
acl aula60 src 192.168.1.21-192.168.1.40
acl aula62 src 192.168.1.41-192.168.1.60
acl aula64 src 192.168.1.61-192.168.1.80
acl servidor src 192.168.1.207/32
acl altres1 src 192.168.1.81-192.168.1.165
acl aulesGen src 192.168.1.166-192.168.1.185
acl altres2 src 192.168.1.186-192.168.1.254
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# definim regles
acl whitelist dstdomain "/etc/squid/whitelist"
acl blacklist dstdomain "/etc/squid/blacklist"
acl paraulesNo url_regex "/etc/squid/paraulesNo"
acl paraulesSi url_regex "/etc/squid/paraulesSi"
# definim l'accés pels diversos espais
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# accés per defecte: només als llocs whitelist
http_access allow localnet whitelist
# departaments accés sense restriccions
http_access allow departaments
# aules, amb diferents possiblitats d'accés
http_access allow aula60 !blacklist !paraulesNo
http_access allow aula62 !paraulesNo
http_access allow aula64 whitelist
http_access allow aulesGen !paraulesNo
http_access allow servidor
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
htcp_access allow localnet
htcp_access deny all
# IP on es troba l'squid
# Tots els ordinadors en què la porta d'enllaç sigui 192.168.1.2 seran filtrats per l'squid
http_port 192.168.1.2:3128 transparent
hierarchy_stoplist cgi-bin ?
# la part del cache
cache_dir aufs /var/cache/squid 40960 16 256
cache_mem 64 MB
maximum_object_size_in_memory 1024 KB
maximum_object_size 81920 KB
access_log /var/log/squid/access.log squid
#imatges
refresh_pattern -i \.jpe?g$ 1440 80% 4320
refresh_pattern -i \.gif$ 1440 80% 4320
# Videu mínim 10 dies, màxim 30
refresh_pattern -i \.mov$ 14400 80% 43200
refresh_pattern -i \.mpe?g?$ 14400 80% 43200
refresh_pattern -i \.avi$ 14400 80% 43200
refresh_pattern -i \.qtm?$ 14400 80% 43200
refresh_pattern -i \.viv$ 14400 80% 43200
refresh_pattern -i \.swf$ 14400 80% 43200
refresh_pattern -i \.flv$ 14400 80% 43200
# So idem que videu
refresh_pattern -i \.wav$ 14400 80% 43200
refresh_pattern -i \.aiff?$ 14400 80% 43200
refresh_pattern -i \.au$ 14400 80% 43200
refresh_pattern -i \.ram?$ 14400 80% 43200
refresh_pattern -i \.snd$ 14400 80% 43200
refresh_pattern -i \.mid$ 14400 80% 43200
refresh_pattern -i \.mp2$ 14400 80% 43200
refresh_pattern -i \.mp3$ 14400 80% 43200
refresh_pattern -i \.ogg$ 14400 80% 43200
#diversos, geogebra
refresh_pattern -i \.ggb$ 14400 80% 43200
# per defecte
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
icp_port 3130
coredump_dir /var/cache/squid

Això em funciona, de moment. Qualsevol comentari i suggeriment per afinar més la cosa o obrir noves possibilitats serà benvingut.
Salut
Joan



editat per: jjuhe2, 19/Gener/2011 - 17:51
Hola Joan,


Per gestionar una caché de 40 Gb d'espai en disc, el servei squid requereix uns 400 Mb de memòria RAM. El problema que hi veig al dimensionament de l'squid és que hauries d'incrementar la memòria de treball cache_mem dels 64 Mb de RAM que tens als 1024 Mb (1 Gb) tot depenent de la memòria RAM disponible a la màquina.

Pel demés la configuració de l'squid està molt ben treballada.

Gràcies per compartir la configuració de l'squid que tens al teu centre.

:-)

Joan de Gracia

Projecte Linkat
He vist que treballa en transparent... qualsevol pàgina prohibida que s'hi pugui accedir per https te la saltaran.

Et recomano que no el facis transparent i que utilitzis l'autoconfiguració del proxy dels navegadors. Et passo un enllaç explicatiu http://boticati.spaces.live.com/blog/cns!BD57F6A127D54A55!654.entry

Salut!
Hola,
He anat llegint i ja veig que efectivament és con dius

¿funcionaria una regla iptables com ara:

iptables -A OUTPUT -d 69.63.189.0/24 -j DROP #IP facebook

per bloquejar el facebook?
Hola,

En un ordinador que faci de router, les regles IPTABLES següents:

iptables -A FORWARD -m tcp -p tcp --dst 66.220.114.0/20 --dport 443 -j DROP
iptables -A FORWARD -m tcp -p tcp --dst 66.220.144.0/20 --dport 443 -j DROP
iptables -A FORWARD -m tcp -p tcp --dst 66.63.176.0/20 --dport 443 -j DROP
iptables -A FORWARD -m tcp -p tcp --dst 69.63.176.0/20 --dport 443 -j DROP


et filtraran l'accés a Internet. El més important de tot són els blocs d'IPs que corresponen a Facebook, en concret:


66.220.114.0/20
66.220.144.0/20
66.63.176.0/20
69.63.176.0/20


Espero que et resulti útil.



Joan de Gracia