FreeBSD + squidGuard + Apache + Squid + Berkeley DB

Бешков Андрей
tigrisha@regata.ru

Целью данных записок является создание простой в управлении и, в то же время, гибкой в настройке системы фильтрации интернет трафика. Строить мы ее будем на основе FreeBSD 4.5+ Squid + SquidGuard + Berkeley DB 3.2.9 + Apache.

В качестве кандидатов на место SquidGuard так же претендовали squirm и Jesred. От squirm пришлось отказаться, потому что список фильтрации поддерживается один на всех. По моему мнению, такое ограничение не позволяет использовать его в сетях средних и больших размеров.

Несмотря на то, что Jesred является модернизированным потомком squirm и имеет более гибкий синтаксис файла шаблонов, он все еще страдает от той же проблемы. Единственное улучшение в этой области - возможность пропускать запросы некоторых пользователей без фильтрации.

Я думаю, что нижеприведенных инструкций по настройке Apache и Squid хватит, что бы установить их в комплектации по умолчанию. Для получения более подробных сведений вам стоит сходить на следующие сайты:

http://apache.lexa.ru/

http://www.squid-cache.org/

http://squid.opennet.ru/

В процессе сборки всего софта использовался gmake вместо стандартного make, но это уже вопрос личных предпочтений. Мне кажется, что gmake работает стабильнее и быстрее.

Ну что же, теперь когда с формальностями покончено, приступим к установке.

В качестве прокси я использовал squid 2.5.STABLE1. Взять его можно здесь.

# tar zxvf squid-2.5.STABLE1-src.tar.gz # cd squid-2.5.STABLE1 # ./configure # gmake # gmake install

После инсталяции редактируем конфиг squid, находящийся в /usr/local/squid/etc/squid.conf.
Должно получиться примерно следующее:

http_port 3128 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 64 MB error_directory /usr/local/squid/share/errors/Russian-koi8-r maximum_object_size 16384 KB cache_dir ufs /usr/local/squid/cache 5000 16 256 cache_access_log /usr/local/squid/logs/access.log cache_log /usr/local/squid/logs/cache.log cache_store_log /usr/local/squid/logs/store.log ftp_user vasa@pupkin.ru quick_abort_pct 60 negative_ttl 1 minutes positive_dns_ttl 6 hours negative_dns_ttl 5 minutes half_closed_clients on acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews 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 acl users src "/usr/local/squid/etc/users.txt" http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access allow users http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all cache_mgr root@test.ru cache_effective_user nobody cache_effective_group nogroup forwarded_for on cachemgr_passwd passwd all client_db on

Обращаю внимание на строку acl users src "/usr/local/squid/etc/users.txt". Она означает, что список пользователей, которым разрешен доступ к squid, находится в файле /usr/local/squid/etc/users.txt

Этот файл имеет следующий формат:

#Петрова Наталья (Снабжение) 192.168.10.91/32 #Иванов Владимир (Доставка) 192.168.10.92/32 #Сергеев Игорь (Плановый отдел) 192.168.10.93/255.255.255.255 #Кривоухина Ирина (Лаборатория) 192.168.10.94/255.255.255.255 #Синицына Светлана (секретарь генерального директора) 192.168.10.95/255.255.255.255

Отдельный файл со списком пользователей я решил использовать, что бы не захламлять главный конфигурационный файл. Users.txt должен иметь те же права доступа, что и squid.conf.

Возможен и другой вариант управления доступом к squid, при котором доступ средствами squid не ограничивается. Для тех пользователей, чей адрес не внесен в файл /usr/local/squidGuard/squidGuard.conf, производится перенаправление на страницу запрещения. Соответственно, эти пользователи интернета не увидят. Чтобы добиться такого эффекта, нужно удалить из squid.conf строки:

acl users src "/usr/local/squid/etc/users.txt" http_access allow users http_access deny all

И добавить в squid.conf

http_access allow all

Мне больше нравится второй вариант разграничения доступа, но это уже дело вкуса.


страницы: 1, 2, 3, 4
следующая