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 хватит, что бы установить их в комплектации по умолчанию. Для получения более подробных сведений вам стоит сходить на следующие сайты:
В процессе сборки всего софта использовался 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 |