Автор Тема: Фильтрация средствами squid  (Прочитано 11820 раз)

Оффлайн evgenmil

  • Участник
  • *
  • Сообщений: 6
Здравствуйте!

Настраиваю фильрацию в школе, для себя взял за базу такое руководство http://wiki.centerstart.ru/index.php/Настройка_фильтра_на_основе_централизованного_белого_списка_сайтов_(прозрачный_прокси-сервер), как раз подходящее под наши нужды.

То есть настраивается через squid и iptables. Все сделал по этому руководству, т.е. два файла: белый список сайтов для ученических, и расширенный белый список сайтов для администратиыных и учительских компьютеров. В другом файле вбиваются ip адреса учительских и административных компов, к которым помимо простого белого списка, еще применяется расширенный. Задача состоит в том, чтобы оставить для ученических (т.е. для всей локальной сети) досту только по белому списку, а для учительских разрешить полный доступ к интернету, без всяких списков.

Прошу помощи подкоректировать это руководство.

Заранее благодарю!

Оффлайн alex270375

  • Участник
  • *
  • Сообщений: 339
Re: Фильтрация средствами squid
« Ответ #1 : 03.06.2011 07:00:01 »
Может быть эксперты и знающие люди меня раскритикуют, но я сделал так, как описано ниже, все работает. Была прокурорская проверка, их все устроило, у учеников доступ в интернет по белым спискам, а у остальных имеется полный доступ.
Может некоторые пункты и лишние, но на тот момент когда я делал фильтрацию мне советовали именно так.

Описание:

Пункты 1 и 2 у меня выполнены на компьютере, который играет роль шлюза Его адрес в локальной сети 192.168.0.x.
1. Ставим контент-фильтр согласно http://freeschool.nnov.ru/node/12.
2. К сожалению "Черный список" и "Белый список" в интерфейсе NetPolice не работают и нет возможности как заблокировать дополнительные сайты так и разрешить доступ к уже заблокированным (так было на момент когда настраивал я).
Для дополнительной блокировки сайтов, которые NetPolice не блокирует используются инструменты самого squid. Для этого создаем белый список для самого squid.
Для этого нужно создать файл /etc/squid/whitelist.txt с дозволенными ресурсами, а чтобы squid пускал только по белому листу, достаточно создать ACL в начале конфига:

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

и изменить правила на:

http_access allow localnet whitelist
http_access allow localhost whitelist

То есть без комментрариев конфиг squid.conf будет выгладеть так:

acl whitelist url_regex "/etc/squid/whitelist.txt"
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl Rsync_ports port 873
acl Jabber_ports port 5222 5223
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 563 # snews
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports !Jabber_ports !Rsync_ports
http_access allow localnet whitelist
http_access allow localhost whitelist
http_access deny all
icp_access allow localnet
icp_access deny all
htcp_access allow localnet
htcp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
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/spool/squid

Теперь приступаем непосредственно к настройке локальных компьютеров:

3. У меня локальные компьютеры имеют трех пользователей - Учитель - Ученик - Оператор.
Захожу как пользователь - Ученик, в браузере FF делаем Ручную настройку сервиса прокси на 192.168.0.x и порт 3128. Пробуем, интернет должен фильтроваться по белым спискам.
У остальных пользователей в браузере оставляю настройку "Без прокси". Должен быть полный доступ к интернет.
Может это и не совсем "красиво", но моя главная цель была прокурорская проверка, этого я добился.

« Последнее редактирование: 03.06.2011 07:09:02 от alex270375 »

Оффлайн evgenmil

  • Участник
  • *
  • Сообщений: 6
Re: Фильтрация средствами squid
« Ответ #2 : 04.06.2011 17:19:52 »
Может быть эксперты и знающие люди меня раскритикуют, но я сделал так, как описано ниже, все работает. Была прокурорская проверка, их все устроило, у учеников доступ в интернет по белым спискам, а у остальных имеется полный доступ.
Может некоторые пункты и лишние, но на тот момент когда я делал фильтрацию мне советовали именно так.

Понимаете, мне нужно организовать так, чтобы ничего не настраивать на ученических компьютерах. Это как бы получилось, вот только администрации школы тоже приходится ходить по белым спискам. Может поправите меня, как дать им полный доступ к интернету?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Фильтрация средствами squid
« Ответ #3 : 04.06.2011 19:15:10 »
Пропускать их компы мимо фильтра, например с помощью настройки etcnet/iptables

Оффлайн varalt

  • Участник
  • *
  • Сообщений: 996
Re: Фильтрация средствами squid
« Ответ #4 : 04.06.2011 20:19:23 »
Тут кое-что написано по настройке Squid по сетевым адресам(статистическим).
http://www.squid-cache.ru/squid.html
Для Вас подойдет лишь первая половина статьи. Вот только я не знаю, рабочая статья или нет. :-[

Оффлайн NecroJoke

  • Участник
  • *
  • Сообщений: 457
Re: Фильтрация средствами squid
« Ответ #5 : 05.06.2011 05:15:57 »
мда, судя по всему надо мне на altlinux.org накропать статью про фильтрацию, ждите, будет понедельник - вторник...

Оффлайн Nagohak

  • Участник
  • *
  • Сообщений: 306
Re: Фильтрация средствами squid
« Ответ #6 : 05.06.2011 12:32:34 »
у нас в школах к примеру так сделано, все компы фильтруются skydns ну чтобы не ходили на всякие однокласники и т.д.
а для ученических так  создай 2 файла white-тут белый лист для учеников и файл ip_class тут будут ip компов которые пойу поэтому списку.
ну и все в squid добавляешь:

acl class_ip src "/etc/squid/class_ip"
acl white url_regex "/etc/squid/white"
http_access deny class_ip !white
deny_info ERR_ESI white

после этого squid перезапусти

ERR_ESI - в нем сам накалякай какую ошибку увидят пользователи
ip_class - сюды в бей адреса ученических машин которые пойдут по списку
white - тут разрешенные сайты

прикрепляю тебе файлы white и class_ip кинь себе в squid их и поправь как тебе надо

Оффлайн Nagohak

  • Участник
  • *
  • Сообщений: 306
Re: Фильтрация средствами squid
« Ответ #7 : 05.06.2011 12:43:22 »
если еще через skydns хочешь пропускать всех зарегся там и в squid пропиши dns_nameservers = 193.58.251.251. Ну там если регениться будешь там написано.

Оффлайн evgenmil

  • Участник
  • *
  • Сообщений: 6
Re: Фильтрация средствами squid
« Ответ #8 : 19.06.2011 10:51:03 »
Свой вопрос РЕШИЛ!!!

Т.е. этот файл ограничивает все компьютеры, которые не в списке adm.list по белому списку white.list

Но после этого решения возникла другая проблема. Не могу зайти на веб интерфейс к серверу по адресу (http://ip-адрес:8080) Браузер пишет ошибку 408. В логах говорит, что смотри конфигурацию squid.

Помогите разобраться.

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

# Локальная сеть школы
acl localnet src 192.168.1.0/24
# IP-адреса компьютеров, на которых необходим доступ к дополнительным сайтам, по одному в строке
acl adm src "/etc/squid/adm.ip"

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 Safe_ports port 901         # SWAT
acl srv dst 192.168.1.10/255.255.255.0
acl CONNECT method CONNECT

# Белый список сайтов
acl white url_regex "/etc/squid/white.list"
# Дополнительный белый список для административных компьютеров
#acl white_adm url_regex "/etc/squid/white_adm.list"

http_access allow manager srv

http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports !Safe_ports

# Разрешаем локальной сети ходить по белому списку
http_access allow localnet white
# Разрешаем административным компьютерам ходить по инетрнету без белого списка
http_access allow adm

http_access allow localhost
http_access deny all
#http_access deny !Safe_ports
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 64 MB
cache_dir ufs /var/cache/squid 1024 32 128
access_log /var/log/squid/access.log
#cache_store_log /var/log/squid/store.log
coredump_dir /var/cache/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
shutdown_lifetime 3 seconds
debug_options ALL,1 33,2 28,9
visible_hostname school-proxy