Discussion:
Squidguard
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Tomasz Lewicki
2007-11-05 09:39:19 UTC
Permalink
Witam!

Wysłałem ten post kilka dni temu na pcol, ale niestety nie było nań żadnej
odpowiedzi. Może tutaj szczęście mi dopisze ;)

Usiłuję zmusić Squidguarda do współpracy. Mam kilkanaście komputerów,
podzielonych na dwie grupy - opac i oin. Pracują w środowisku bezdyskowych
terminali (LTSP). Pierwsza z nich (opac) powinna mieć dostęp tylko do kilku
wybranych adresów WWW (właściwie do jednej domeny), druga (oin) ma mieć
większą swobodę, ale również z ograniczeniami (np. XXX, portale
społecznościowe i dużo innych). Po włączeniu komputera użytkownik jest
automatycznie logowany, nadawane są mu rozmaite ograniczenia, a dostęp
odbywa się przez Konquerora, również otwieranego automatycznie. Nie ma
możliwości zmiany ustawień serwera proxy.

Grupy są dobrze rozdzielone: opac - 192.168.0.1-192.168.0.10, oin -
192.168.0.11-192.168.0.15. Oto fragment konfiguracji Squidguarda, opartej
na przykładach ze strony SG:

logdir /var/log/squidGuard
dbhome /var/lib/squidGuard/db

#
# Konfiguracja list dostepu (najpierw "fabryczne", na koncu wlasne)
#

[tutaj znajduje się cała litania list "fabrycznych" - wyciąłem ją w tym
poście]

dest good {
        domainlist custom/good/domains
        urllist    custom/good/urls
        log        custom-good.log
}

dest bad {
        urllist    custom/bad/urls
        log        custom-bad.log
}

dest biblioteka {
        urllist    custom/biblioteka/urls
        log        custom-biblioteka.log
}

#
# Konfiguracja grup uzytkownikow (wedlug lokalizacji terminali)
#

src opac-korytarz {
        ip         192.168.0.1-192.168.0.10
}

src oin {
        ip         192.168.0.11-192.168.0.15
}

acl {

    opac-korytarz {
        pass biblioteka none
        redirect 302:http://localhost/access-denied.html
   }

    oin {
        pass
good !bad !adv !aggressive !automobile !chat !dating !downloads !drugs !dynamic !forum !gamble !hacking !isp !jobsearch !movies !music !news !porn !recreation !redirector !spyware !shopping !tracker !violence !warez !webmail !webradio !webtv
all
        redirect 302:http://localhost/access-denied.html
   }

    default {
        pass biblioteka none
        redirect 302:http://localhost/access-denied.html
   }
   
}

Czyli:

* komputery należące do grupy opac_korytarz powinny mieć dostęp do URL-i
zdefiniowanych w pliku 'biblioteka' i żadnych innych (none)
* komputery z grupy oin powinny mieć dostęp do URL-i zapisanych w
pliku 'good', nie mieć dostępu do URL-i z list 'bad' itd. aż do 'webtv',
poza tym do wszystkich pozostałych
* komputery nie należące do żadnej z dwóch grup powinny mieć dostęp do URL-i
zdefiniowanych w pliku 'biblioteka' i żadnych innych (none) - czyli tak jak
opac_korytarz

Niestety, nie działa to tak, jak chcę - opac_korytarz ma dostęp do
wszystkich stron. Wygląda to tak, jakby dla opac_korytarz działała polityka
default, ponieważ strony zdefiniowane na czarnych listach, m.in. 'bad', są
blokowane.

Na jednej ze stron poświęconych Squidguardowi znalazłem następującą
informację:

"Why does Squidguard not block clients designated with src { ip x.x.x.x }?

If you try to designate which clients get blocked by using a source group
with the clients designated by ip address, you must have a line in your
squid.conf file to cause squid to supply the entire ip address for each
client. For instance, if you have:
 
   src kids {
   ip 192.168.1.10
   ip 192.168.1.13
 }
 
 then you must put the following line into your squid.conf file:
client_netmask 255.255.255.255
   
 Otherwise, squid will only supply the upper 16 bits of the client ip
addresses and no clients will match the result."

(żródło: http://www.maynidea.com/squidguard/faq-plus.html#nosrcip)

Dopisałem zatem rzeczoną linię do konfiguracji Squida, która wygląda teraz
tak:

http_port 3128
visible_hostname OPAC
client_netmask 255.255.255.255
acl terminale src 192.168.0.0/24
acl opac-server src 156.17.xx.yy/32
acl all src 0.0.0.0/0
acl awf dstdomain domena.pl
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT

http_access allow terminale
http_access allow opac-server
http_access deny all
   
url_rewrite_program /usr/sbin/squidGuard -c /etc/squidguard.conf
url_rewrite_children 8
redirector_bypass on

#cache_dir ufs /var/cache/squid/ 100 16 256
cache deny all
cache_dir null /tmp

always_direct allow all

Serwery restartowane, w logach brak błędów (przypominam: SG działa i
przekierowuje użytkownika na informację o blokadzie). Wersje
oprogramowania: Squid 2.6STABLE6, Squidguard 1.2.1.

Czy znajdzie się ktoś, kto ma doświadczenie w bojach z tym tandemem i może
mi coś poradzić?
--
Tomasz Lewicki
http://stalker.republika.pl
Pawel Muszynski
2007-11-05 11:46:57 UTC
Permalink
Post by Tomasz Lewicki
Witam!
Czy znajdzie się ktoś, kto ma doświadczenie w bojach z tym tandemem i może
mi coś poradzić?
A dlaczego nie zrobic tego za pomocą ACLi squida?
--
Paweł Muszyński
Tomasz Lewicki
2007-11-05 12:53:57 UTC
Permalink
Post by Pawel Muszynski
A dlaczego nie zrobic tego za pomocą ACLi squida?
Czy ACL w Squidzie nie stosuje się do ograniczenia dostępu do samego Squida?
Patrzę właśnie na opis tej dyrektywy
(http://www.squid-cache.org/Versions/v2/2.6/cfgman/acl.html) i zastanawiam
się, czy mógłbym zastosować którąś z nich w przypadku Squidguarda. Wydaje mi
się, że nie.
--
Tomasz Lewicki
http://stalker.republika.pl
Pawel Muszynski
2007-11-05 14:46:16 UTC
Permalink
Post by Tomasz Lewicki
Post by Pawel Muszynski
A dlaczego nie zrobic tego za pomocą ACLi squida?
Czy ACL w Squidzie nie stosuje się do ograniczenia dostępu do samego Squida?
Patrzę właśnie na opis tej dyrektywy
(http://www.squid-cache.org/Versions/v2/2.6/cfgman/acl.html) i zastanawiam
się, czy mógłbym zastosować którąś z nich w przypadku Squidguarda. Wydaje mi
się, że nie.
Hmmm

ACLami można naprawde zrobic duzo.
Ja proponuję użyć tylko ACLi i nie korzystać ze SquidGuarda.
coś w tym stylu:
acl opac src 192.168.0.1-192.168.0.10
acl oin src 192.168.0.11-192.168.0.15

acl gooddomain dstdomain "/etc/squid/gooddomains"
acl goodurl url_regex "/etc/squid/goodurls"

http_access allow oin gooddomain


itd...
--
Paweł Muszyński
Tomasz Lewicki
2007-11-06 07:25:20 UTC
Permalink
Post by Pawel Muszynski
Post by Tomasz Lewicki
Post by Pawel Muszynski
A dlaczego nie zrobic tego za pomocą ACLi squida?
Czy ACL w Squidzie nie stosuje się do ograniczenia dostępu do samego
Squida? Patrzę właśnie na opis tej dyrektywy
(http://www.squid-cache.org/Versions/v2/2.6/cfgman/acl.html) i
zastanawiam się, czy mógłbym zastosować którąś z nich w przypadku
Squidguarda. Wydaje mi się, że nie.
Hmmm
ACLami można naprawde zrobic duzo.
Ja proponuję użyć tylko ACLi i nie korzystać ze SquidGuarda.
acl opac src 192.168.0.1-192.168.0.10
acl oin src 192.168.0.11-192.168.0.15
acl gooddomain dstdomain "/etc/squid/gooddomains"
acl goodurl url_regex "/etc/squid/goodurls"
http_access allow oin gooddomain
Zgadza się, można to tak zrobić. Squidguard działa jednak dobrze, filtruje
tak jak powinien i przekierowuje użytkownika na stronę z odpowiednią
informacją, gdy zapędzi się nie tam, gdzie powinien - a to ważne w moim
środowisku. Jedynym problemem jest, że nie interpretuje prawidłowo moich
intencji ;)

Napiszę chyba na listę Squidguarda, może tam ktoś mi coś podpowie. W każdym
razie dziękuję za chęć pomocy :)
--
Tomasz Lewicki
http://stalker.republika.pl
Pawel Muszynski
2007-11-07 07:26:59 UTC
Permalink
Post by Tomasz Lewicki
Post by Pawel Muszynski
Post by Tomasz Lewicki
Post by Pawel Muszynski
A dlaczego nie zrobic tego za pomocą ACLi squida?
Czy ACL w Squidzie nie stosuje się do ograniczenia dostępu do samego
Squida? Patrzę właśnie na opis tej dyrektywy
(http://www.squid-cache.org/Versions/v2/2.6/cfgman/acl.html) i
zastanawiam się, czy mógłbym zastosować którąś z nich w przypadku
Squidguarda. Wydaje mi się, że nie.
Hmmm
ACLami można naprawde zrobic duzo.
Ja proponuję użyć tylko ACLi i nie korzystać ze SquidGuarda.
acl opac src 192.168.0.1-192.168.0.10
acl oin src 192.168.0.11-192.168.0.15
acl gooddomain dstdomain "/etc/squid/gooddomains"
acl goodurl url_regex "/etc/squid/goodurls"
http_access allow oin gooddomain
Zgadza się, można to tak zrobić. Squidguard działa jednak dobrze, filtruje
tak jak powinien i przekierowuje użytkownika na stronę z odpowiednią
informacją, gdy zapędzi się nie tam, gdzie powinien - a to ważne w moim
środowisku. Jedynym problemem jest, że nie interpretuje prawidłowo moich
intencji ;)
Ja kiedyś się do squidguarda przymierzałem i doszedłem do wniosku, że
poza listą gotowych filtrów nie dodaje to żadnej wartości do squida.

Wszystko co napisałeś, że chcesz osiągnąć, można zrobić w samym
squidzie, ja tak zrobiłem i jestem z tego zadowolony :-)
--
Paweł Muszyński
Tomasz Lewicki
2007-11-14 14:01:41 UTC
Permalink
Post by Tomasz Lewicki
Usiłuję zmusić Squidguarda do współpracy.
Odpowiadam sam sobie. Udało się, problem rozwiązany. Na rozwiązanie
naprowadzili mnie ludzie z listy dyskusyjnej SquidGuarda. Przedefiniowałem
nieco plik konfiguracyjny SG oraz Squida (ten drugi to raczej kosmetyka -
zmiany prawie na pewno nie miały wpływu na końcowy efekt), w liście
dozwolonych URL-i na liście 'biblioteka' podałem jawnie dwa adresy -
zadziałało.
--
Tomasz Lewicki
http://stalker.republika.pl
Loading...