Показаны сообщения с ярлыком Squid. Показать все сообщения
Показаны сообщения с ярлыком Squid. Показать все сообщения

среда, 6 февраля 2008 г.

Использование аутентификации в squidGuard

Пер. с англ., источник - http://www.squidguard.org/Doc/authentication.html

Иногда удобно разрешить разным пользователям различный тип доступа. SquidGuard имеет возможность указать, основываясь на имени пользователя, к каким ресурсам этот пользователь может иметь доступ.
Имеется два различных способа, как установить аутентификацию пользователя: на основе имени, предоставленном прокси-сервером squid, или используя роли LDAP (это подразумевает, что либо вы используете squidGuard 1.2.1 и выше, или имеете squidGuard, пропатченный вами с помощью LDAP-патчей Криса Фрея.

1. Аутентификация с помощью имен пользователей прокси-сервера squid

Начнем по порядку: чтобы сделать это, вы должны настроить ваш squid для аутентификации ваших пользователей. Простой способ добавить пользовательскую аутентификацию - использование старой утилиты ncsa_auth. Добавляя следующие три строки в ваш squid.conf, вы можете включить аутентификацию:
auth_param basic program /usr/libexec/squid/ncsa_auth \ /etc/squid/squid.passwd
acl password proxy_auth REQUIRED
http_access allow password


Пожалуйста, обратите внимание, что путь к вашему файлу паролей squid и к nsca_auth может отличаться в вашей системе. Тем не менее, вы можете изменить путь к вашему собственному файлу паролей на ваш собственный путь; nsca_auth имеет фиксированное месторасположение (используйте find или locate, чтобы получить корректный путь).
Имеются также другие значения аутентификации в squid. Дополнительные подробности смотрите на сайте прокси-сервера squid.
Чтобы предоставить доступ на основании пользовательских имен, у вас есть два варианта: вы можете непосредственно перечислить пользователей в тэге user вашего файла squidGuard.conf, или вы можете ввести имя файла (рекомендуется, если имеем дело с множеством имен) и использовать тэг userlist. В обоих случаях вы должны включить определения пользователя внутри определенного acl. Следующие два примера показывают, как использовать тэги user и userlist:
src department1 {
user maria josef susanna micheal george1
}

В этом примере пять пользователей группируются в источник  department1. Это источник используется, чтобы предоставить или запретить доступ определенным категориям (смотрите определение acl после следующего примера).
Вы можете использовать числа в именах пользователей. К сожалению, в текущее время есть баг squidGuard, выдающий ошибки при использовании имен пользователей, состоящих полностью из чисел. В этом случае используйте тэг userlist (см. след. пример), чтобы урегулировать пользовательский доступ:
src department1 {
userlist dep1users
}


В этом примере конфигурация squidGuard указывает на файл, называемый здесь dep1users, где могут быть найдены пользователи. Расположение файла со списком пользователей связано с путем, который вы определили для параметра dbhome.
Файл со списком пользователей - это обычный текстовый файл в следующем формате:

user1
user2
user3
user4
user5

и т.д.

Когда вы уже определили ваших пользователей, вы должны настроить, какой(ая) пользователь (группа) имеет доступ к какому назначению (destination). Это делается в части acl вашего конфигурационного файла squidGuard.conf:

acl {
department1 {
pass !porn !hacking !warez all
redirect http://localhost/cgi/blocked?clientaddr=%a&clientuser=%i&clientgroup=%s&url=%u
}
default {
pass white none
redirect http://localhost/cgi/blocked?clientaddr=%a&clientuser=%i&clientgroup=%s&url=%u
}
}

В этом примере пользователь department1 может иметь доступ ко всем веб-сайтам, кроме тех, которые перечислены в категориях porn, hacking и warez. Все остальным пользователям доступ разрешен только к тем ресурсам, которые перечислены в категории white (белый список). Конечно же, вы можете определить назначения до установки acl. :-)

2. Использование LDAP.

Точно так же, как в примерах до этого, вы должны определить окружение src, где может быть найдена пользовательская информация. Вдобавок вы должны определить некоторые специфичные тэги LDAP: вы должны назвать верхний уровень дерева каталога LDAP и пароль для доступа к пользовательской информации (если только вы не используете анонимный режим (anonymous bind), который с точки зрения безопасности всегда не рекомендуется).
Существуют следующие LDAP-специфические тэги:

  • ldapusersearch - Это ключевое слово входит в конфигурационный блок src и определяет URL LDAP для поиска неизвестного имени пользователя. Вы можете определить множество URL для LDAP в блоке источника src. Используйте '%s', чтобы определить имя пользователя в вашем URL для LDAP. Если поиск возвратит запись, пользователь считается "найденным", иначе проверяется следующий URL в блоке src. SquidGuard кэширует состояние "найден" для каждого поиска, даже когда имя пользователя не найдено. Кэш действителен в течение времени, которое задано параметром ldapcachetime (в сек.).

  • ldapcachetime - это глобальное ключевое слово определяет число секунд для кэширования результатов поиска LDAP до соединения с сервером LDAP снова. Это ключевое слово глобально и должно находиться вне любых блоков src/dest/rule. Делая это значение достаточно низким, можно смоделировать сходную с реальностью группировку в LDAP без перезапуска squidguard. Рекомендованное значение: 300
  • ldapbinddn - Глобальное ключевое слово, определяющее DN (Distinguished Name, уникальное имя), для того чтобы связаться с сервером LDAP.
  • ldapbindpass - Пароль для связи с LDAP-сервером. Это глобальное ключевое слово.
  • ldapprotover - Описывает версию протокола LDAP. Это глобальное ключевое слово. Используйте его, чтобы заставить squidGuard соединиться с LDAP-сервером, который имеет определенную версию протокола. Если вы не можете использовать определенную версию протокола, squidGuard перейдет в аварийный режим. Допустимые параметры: 2 или 3.

Примерная конфигурация:

ldapbinddn cn=root, dc=example, dc=com
ldapbindpass myultrasecretpassword

# ldap cache time in seconds
ldapcachetime 300

src my_users {
ldapusersearch ldap://ldap.example.com/cn=squidguardusers,ou=groups,dc=example,dc=com?memberUid?sub?(&(objectclass=posixGroup)(memberUid=%s))
}


Когда вы используете LDAP для аутентификации, убедитесь что параметры вашей строки ldapusersearch соответствуют пользовательским настройкам на вашем сервере LDAP. Если имена ваших пользователей не сохранены в "MemberUid", то "uid" вы должны соответственно адаптировать в вашей строке ldapusersearch . То же самое справедливо для значений, которые вы вводите для "objectclass". Вы, возможно, имеете что-то наподобие "Person" или "InetOrgPerson" вместо этого.
Если значение ldapusersearch не совпадает с вашими конфигурационными настройками, поиск завершится с ошибкой.

понедельник, 4 февраля 2008 г.

понедельник, 28 января 2008 г.

Использование регулярных выражений в squidGuard

Перевод с англ., оригинал - http://www.squidguard.org/Doc/expressionlist.html

Вам никогда не удастся добавить все возможные плохие страницы в ваш файл domains или urls. Чтобы добиться дополнительного блокирования, могут быть использованы списки регулярных выражений. В списке регулярных выражений вы вводите слова, которые наиболее вероятно являются частью нежелательных доменов и URL. Каждый домен и URL будет сравниваться с строками, найденными в сконфигурированных списках регулярных выражений.
Внимание: Используя списки регулярных выражений, убедитесь, что вы не блокируете нормальные сайты. В дополнение к этому, имейте в виду, что использование этих списков может в результате значительно снизить производительность.

1. Добавление списков регулярных выражений в конфигурацию.

Списки регулярных выражений включаются в тэг dest. Пример ниже показывает соответствующую часть конфигурационного файла squidGuard.conf:
dest porn {
domainlist porn/domains
urllist porn/urls
expressionlist porn/expressions
}

Вы можете добавить список регулярных выражений для каждого определенного места назначения (destination), если вы находите это необходимым (напоминаем о производительности!). SquidGuard ожидает файл регулярных выражений, связанный с определенным параметром dbhome так же, как файлы доменов или URL.

2. Синтаксис списков регулярных выражений.

Формат файла списка регулярных выражений строится на основании регулярных выражений, описанных в man-странице regex(5). Наиболее интересны следующие:

.  - Совпадает с каким-либо одиночным символом (используйте "\." для соответствия "."

[abc] - Совпадает с одним из символов ("[abc]" совпадает с одиночным символом "a" или "b" или "с")

[c-g] - Совпадает с одним из символов в диапазоне ("[c-g]" совпадает с одиночным символом "c" или "d" или "e" или "f" или "g"
"[a-z0-9]" совпадает с любой одиночной буквой или цифрой.
"[-/.:?]" совпадает с любым одиночным "-" или "/" или "." или ":" или "?").

? - Ни одного или один из предшествующего символов ("words?" совпадет с "word" или "words".

"[abc]?" совпадает с одиночным "a" или "b" или "c" или ничего (т.е. "").

* - Ни одного или более из предшествующего ("words*" совпадет с "word","words" и "wordsssssss".

".*" совпадет со всем, что угодно, включая пустую строку).

+ - Один или более символов из предыдущих ("xxx+" совпадет с последовательностью из трех и более символов "x").

(expr1|expr2) - Одно из выражений, которые, в свою очередь, может содержать в себе похожие конструкции ("(foo|bar)" совпадет с "foo" или "bar".
"(foo|bar)? совпадет с "foo" или "bar" или ни с чем (т.е. "").

$ - Конец строки ("(foo|bar)$" совпадет с "foo" или "bar", находящимися только в конце строки).

\x - Игнорировать специальное значение x, когда x - один из специальных символов регулярных выражений ".?*+()^$[]{}\" ("\." совпадет с одиночным ".", "\\" - с одиночным "\" и т.д.)

Строки списков регулярных выражений являются обычным текстом. Таким образом, начало блокирования возможных материалов сексуального содержания регулярным выражением, которое может выглядеть так:
(^|[-\?+=/_])(bondage|boobs?|busty?|hardcore|porno?|sex|xxx+)([-\?+=/_]|$)

Когда все установлено по вашему вкусу, примените изменения следующей командой:
squid -k reconfigure

3. Некоторые замечания и советы.

Если вы не будете строить ваши регулярные выражения очень-очень осторожно, есть большой риск , что вы получите раздраженных пользователей на вашу шею. Типичный пример: вы могли бы нечаянно блокировать "Essex", "Sussex", "breastcancer", "www.x.org" и т.д. в пылу блокирования порнографических материалов. На практике вы могли бы, вероятно, заменить некоторые из слов в примере выше некоторыми более ясными словами, связанными с порнографией, которые я не считаю уместным размещать в список, указанный выше.
Тогда как размер домена и списков URL оказывают незначительное воздействие на производительность, слишком много больших или сложных регулярных выражений будут быстро ухудшать производительность squidGuard. Хотя она может сильно зависеть от производительности соответствующей библиотеки, с которой скомпонован SquidGuard .
Существует набор тестовых файлов для группы возможных порнографических сайтов в samples/dest/adult в исходном каталоге, который вы можете использовать как стартовую точку, если блокировка порнографии - одна из ваших задач. Заметьте, пожалуйста: этот список очень старый и не предназначается для промышленных систем. Используйте их, чтобы протестировать ваш squidGuard. Для начальной установки список будет работать, но мы рекомендуем, чтобы вы просмотрели эти списки до их использования. Эти домены и URL собираются "автомагически" роботом. Не существует руководства к действию для оценки соответствующего контента. Следовательно, есть вероятность, что некоторые непорнографические сайты "просочатся" через фильтр.
Чтобы избежать публикации "полного руководства" запрещенных сайтов вашим пользователям, вы вероятно захотите защитить некоторые из следующих файлов, например:
chmod 640 /wherever/filter/db/dest/adult/*
chown cache_effective_user /wherever/filter/db/dest/adult/*
chgrp cache_effective_group /wherever/filter/db/dest/adult/*

где cache_effective_user и cache_effective_group - значения соответствующих тэгов, определенных в конфигурационном файле squid, squid.conf.

четверг, 27 декабря 2007 г.

Расширенная конфигурация squidGuard

Перевод с англ., источник: http://www.squidguard.org/Doc/extended.html

Имеются несколько дополнительных параметров, чтобы сконфигурировать squidGuard в соответствии с вашими нуждами.

  • Запрещение IP-адресов
Чтобы быть уверенным, что пользователи не могут обойти URL-фильтр простым использованием IP-адресов вместо полных определенных доменных имен (FQDN), вы можете добавить параметр !in_addr следующим образом в ваш acl:

acl {
default {
pass !in-addr all
redirect http://localhost/block.html
}
}
  • Блокирование на основе времени
Имеется два пути определить дату и время, когда разрешается и запрещается доступ к веб-сайтам. Директива weekly используется для переопределения времени доступа, например разрешение веб-доступа и блокирование веб-сайтов после работы.
Используя директиву date, вы можете определить специальные дни, по которым может быть предоставлен доступ. Могу использоваться шаблоны имен.

time afterwork {
weekly * 17:00-24:00 # After work
weekly fridays 16:00-17:00 # On friday we close earlier
date *.01.01 # New Year's Day
date *.12.24 12:00-24:00 # Christmas Eve
date 2006.04.14-2006.04.17 # Easter 2006
date 2006.05.01 # Maifeiertag
}

Чтобы применить определенное время, вы можете использовать классификаторы within и outside соответственно. Теперь ваш acl выглядит так:

acl {
all within afterwork {
pass all
}
else {
pass !adv !porn !warez all
}
default {
pass none
redirect http://localhost/block.html
}
}

Это означает, что для каждого свободный доступ у веб-сайтам возможен в течение времени, определенного в afterwork. После этого времени пользователи не могут иметь доступ, что бы ни было определено в adv, porn и warez.

  • Правила, основанные на исходных IP-адресах
Если вам необходимы политики для предоставления одним пользователям доступа к большему количеству веб-сайтов, чем другим, у вас есть разные варианты осуществления этой политики. Первый способ - определить списки acl с исходными IP-адресами. Это может работать, только если группы пользователей разделены по IP-адресам внутри вашей сети.
Предподожим, что это случай, когда вы можете сейчас определить исходный диапазон IP-адресов в вашем файле squidGuard.conf следующим образом:

src admins {
ip 192.168.2.0-192.168.2.255
ip 172.16.12.0/255.255.255.0
ip 10.5.3.1/28
}

Вы можете указать IP-адреса прямо также, как определение IP-диапазонов с использованием нотации "from-to", определяя маску подсети или используя аббревиатуру префикса маски подсети.
Примечание: Если у вас еесть несколько определений сетей для пользовательских групп, вы можете размесить эту информация в отдельном файле и просто прописать в вашем файле squidGuard.conf о расположении файла. В этом случае вы пишете в вашем squidGuard.conf:

src admins {
iplist adminlist
}

squidGuard посмотрит файл с именем adminlist, расположенный в любом месте, которое вы указали директивой dbhome. Альтернативно, вы можете определить абсолютный путь с вашим именем файла. Сам файл содержит информацию в следующем стиле:

192.168.2.0-192.168.2.255
172.16.12.0/255.255.255.0
10.5.3.1/28

  • Журналирование событий блокирования доступа

Может представлять интерес, кто попытался получить доступ к блокированным сайтам. Чтобы проследить это, вы можете добавить директиву log в ваши определения src и dest в вашем файле squidGuard.conf. Если задано только имя файла, файл ищется в каталоге, определенном директивой logdir.

dest porn {
domainlist porn/domains
urllist porn/urls
log pornaccesses
}

среда, 26 декабря 2007 г.

squidGuard - параметры запуска

Перевод с англ., источник: http://www.squidguard.org/Doc/runtimeops.html

SquidGuard допускает следующие опции:

-v -- Установка этого параметра выведет на экран номер версии.

-d -- Установка этого параметра направляет все ошибки в стандартный поток ошибок (обычно терминал, в котором вы запустили squidGuard). Это чрезвычайно полезно, либокогда идет тестируется новая установка либо для целей диагностики проблем.

файл -- Этот параметр разрешает вам определить другой конфигурационный файл. Используйте его, когда тестируете новые конфигурации до установки их в качестве основных.

-t время -- Этот параметр разрешает вам установить формат времени запуска в виде yyyy-mm-ddTHH:MM:SS. Это особенно интересно, если вы тестируете acl, основанные на времени.

-u файл -- Обновление файлов всех доменов и url может потребовать значительного времени. Намного быстрее работать с .diff-файлами и просто включить изменения в db-файлы. Используя этот параметр, squidGuard посмотрит в каталогах категорий для .diff-файлов и, таким образом, подготовит изменения. Изменения вступят в силу в случае, когда squid перечитает свой конфигурационный файл (squid -k reconfigure).

файл|all -- Используя -C all, будет созданы db-файлы для всех сконфигурированных категорий заново. Если вы хотите обновить только определенный файл, вы можете ввести прямо его имя, например -C porn/domains.

среда, 14 ноября 2007 г.

Базовая конфигурация SquidGuard



( оригинал - http://www.squidguard.org/Doc/configure.html )


Когда SquidGuard успешно установлен, вы захотите настроить его в соответствии с вашими нуждами. Простая конфигурация устанавливается в каталог /usr/local/squidGuard (или в любой другой каталог, который вы укажете при инсталляции).
Ниже вы найдете три примера для базовой конфигурации SquidGuard.

1.Самая простая конфигурация:

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs

dest porn {
domainlist porn/domains
urllist porn/urls
}

acl {
default {
pass !porn all
redirect http://localhost/block.html
}
}

Всегда проверяйте, что самая первая строка в вашем файле squidGuard.conf не пуста!
Параметры имеют следующее значение:

dbhome
  • Местоположение «черных» списков
logdir
  • Местоположение журнальных файлов
dest
  • Определение категории блокирования
acl
  • Действующее определение блокирования. В нашем примере отображено только правило по умолчанию. У вас может быть более чем одно определение acl. Категория porn, определенная вами в параметре dest, блокируется выражением !porn. Вам следует добавить идентификатор all после списка блокирования или ваших пользователей, которые не будут иметь возможность веб-серфинга вообще.

Изменение более чем одной категории для блокирования

Во-первых, определите ваши категории. Определите их подобно категории porn в примере выше. Например:

dest adv {
domainlist adv/domains
urllist adv/urls
}
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest warez {
domainlist warez/domains
urllist warez/urls
}
Теперь ваш acl должен выглядеть так:

acl {
default {
pass !adv !porn !warez all
redirect http://localhost/block.html
}
}

2.«Белый» список

Иногда требуется разрешить определенным URL и доменам, даже если они являются частью списка блокирования по некоторым причинам. В этом случае вам нужно создать белый список с этиси доменами и URL.

dest white {
domainlist white/domains
urllist white/urls
}

acl {
default {
pass white !adv !porn !warez all
redirect http://localhost/block.html
}
}

В этом примере мы предполагаем, что ваш белый список располагается в каталоге, называемом white, внутри каталога черных списков, который вы определили параметром dbhome. Убедитесь, что ваш идентификатор white — первый в строке директивы pass. Он не должен иметь восклицательного знака вначале (иначе все данные, располагающиеся в white, будут также блокироваться).

3. Инициализация черных списков.

До того, как вы запустите свой SquidGuard, вы должны инициализировать черные списки, т.е. конвертировать их из текстовых файлов в db-файлы. При использовании db-формата будет ускорен процесс проверки и блокировки.
Инициализация выполняется следующей командой:

squidGuard -C all
chown -R squiduser /usr/local/squidGuard/db/*

Вторая команда гарантирует, что ваш squid будет иметь доступ к черным спискам. Вместо squiduser используйте uid вашего squid.
В зависимости от размера ваших черных списков и мощности вашего компьютера это может занять некоторое время. Если что-то выполняется успешно, вы должны увидеть в ваших журнальных файлах нечто подобное следующим строкам:

2006-01-29 12:16:14 [31977] squidGuard 1.2.0p2 started (1138533256.959)
2006-01-29 12:16:14 [31977] db update done
2006-01-29 12:16:14 [31977] squidGuard stopped (1138533374.571)

Если вы посмотрите в каталог, содержащий файлы domains и urls, вы увидите, что дополнительные файлы уже созданы: domains.db и urls.db. Эти новые файлы должны быть не пусты!
Конвертируются только те файлы, которые вы определили, чтобы блокировать или определить белые списки в вашем файле squidGuard.conf.

пятница, 19 октября 2007 г.

SquidGuard — правила перенаправления



(оригинал - http://www.squidguard.org/Doc/redirect.html)

1. Основы

Чтобы все работало корректно, вы должны указать SquidGuard, какие URL будут возвращены squid в случае, если запрашиваемый сайт должен блокироваться. Правило redirect должно быть размещено в директивах acl. Возможны несколько правил перенаправлений внутри одной и той же политики (т.е. определения исходных правил). Пример правила перенаправления в конфигурации:

acl {
default {
pass !porn all
redirect http://www.foo.bar/blocked.html
}
}

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

acl {
group1 within workhours {
pass !tracker !adv !spyware !hacking !porn all
redirect http://www.foo.bar/allblocked.html
}


default {
pass !porn all
redirect http://www.foo.bar/defaultblocked.html
}
}


В этом примере определяются 2 политики: последнее — это то же самое, что и пример выше, он действует на всех пользователей прокси, которые не попадают под действие политики, определенной как «group1». Если вы как пользователь распознаны как часть «group1» (по аутентификации, IP-адресу или временному определению), будет показана страница http://www.foo.bar/allblocked.html , если запрашиваемая страница является часть политики блокирования (в нашем примере — tracker, adv, spyware, hacking и porn).

Пожалуйста, помните:

  • Политика, называемая «default», необходима!
  • Если вы не определите конкретное правило перенаправления, блокирование или журналирование откликов не будет работать.
  • Внутри описания политики должно быть только одно правило перенаправления .

2. Дополнительно

Вместо отображения статичного сообщения «You have been blocked», вы можете запрограммировать скрипт, который делает то же, а также показывает пользователю некоторую дополнительную информацию о блокировании. SquidGuard допускает следующие переменные, интерпретируемые скриптом:

— переменная, которая содержит IP-адрес клиента
%i - переменная, которая содержит идентификатор пользователя (UID) (см. RFC 931 или LDAP) или «unknown», если UID не доступен.
%n - переменная, которая содержит доменное имя клиента или «unknown», если оно не доступно
%p - переменная, которая содержит REQUEST_URI, т.е. путь и, опционально, запрос переменной %u, но помните, что для удобства без промежуточных «/»
%s - переменная, которая содержит соответствующую исходную группу (source group) или «unknown», если нет соответствующих групп.
%t - переменная, которая содержит соответствующую группу назначения(target group) или «unknown», если нет соответствующих групп.
%u - переменная, которая содержит запрошенный URL.

Эта дополнительная информация в вашем перенаправляющем правиле вашего скрипта должна выглядеть примерно следующим образом:

redirect
http://www.foo.bar/blocked.cgi?caddr=%a&cname=%n&user=
%i&group=%s&url=%u&target=%t

В вашем скрипте вы должны установить значение передаваемой переменной $QUERY_STRING. Эта переменная содержит все данные параметры. SquidGuard заменяет переменную (с «%») с ее соответствующими значениями до отправки URL скрипту, таким образом, переменная $QUERY_STRING содержит всю информацию о пользователе, IP-адресе, группе и запрашиваемом URL.