Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Создание сетевого фильтра с помощью Squid и DansGuardian для Linux

09 апр. 2014

Squid

— это так называемый кэш-посредник. Это означает, что данная программа сохраняет страницы в особый буфер обмена, расположенный на локальном компьютере, и управляет доступом к ним. Squid может выполнять три функции. О Контроль доступа. Squid может полностью заблокировать определенные страницы для конкретных пользователей, предоставлять доступ к Интернету лишь в определенные часы и т. д. Для распознавания «опасных» сайтов Squid обычно используют вместе с сетевым фильтром DansGuardian. Таким образом, Squid и DansGuardian помогают ограничить доступ в Интернет дома или в общественных местах (например, в школах) и сделать его более безопасным.

Кэш.

Если несколько пользователей обращаются к одной и той же веб-странице через кэш-посредник, то такая программа позволяет избежать многократной передачи одного и того же файла. Это ускоряет процесс чтения часто используемых сайтов и уменьшает трафик, идущий к провайдеру. Сегодня, в эпоху Web 2.0, вы все равно не ощутите ни значительного ускорения передачи данных, ни снижения объема закачек.

Журналирование/наблюдение.

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

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

Конфигурация и запуск


Работа Squid управляется файлом /etc/squid/squid.conf. Этот конфигурационный файл, поставляемый вместе со Squid, отлично документирован, но ужасающе велик — содержит около 3500 строк! Чтобы вам было легче в нем ориентироваться, сохраните резервную копию оригинального конфигурационного файла, а потом удалите все комментарии (grep с помощью параметра -v может отфильтровать все строки, которые начинаются с символа комментария #, а команда cat удалит все пустые строки). Тогда конфигурационный файл ужмется всего до 50 строк.
root# cd /etc/squid

root# mv squid.conf squid.conf.orig

root# grep -v '*#' squid.conf.orig | cat -s > squid.conf

По умолчанию squid.conf настроен так, что кэшем может пользоваться только компьютер localhost, причем для буфера обмена резервируется 8 Мбайт оперативной памяти и 100 Мбайт на жестком диске, а каждое обращение к /var/spool/squid заносится в файл регистрации.

Если вы собираетесь использовать Squid в первую очередь как сетевой фильтр, то можно отключить функции кэширования и журналирования. Кроме того, вам следует открыть всем компьютерам локальной сети доступ к Squid. Для этого с помощью acl localnet задайте переменную localnet, а в ней укажите адресное пространство локальной сети. Комбинация с http_access позволяет всем компьютерам локальной сети использовать кэш (вместо localnet можно задавать любое другое имя). В следующем фрагменте изменения, внесенные в конфигурационный файл, поставляемый с Ubuntu, выделены полужирным шрифтом:

# /etc/squid/squid.conf

# Пример конфигурации для использования программы в качестве сетевого фильтра

# Хост-имя компьютера, на котором работает squid visible_hostname mars.sol

# Определения

acl

all src 0.0.0.0/0.0.0.0

acl

localhost src 127.0.0.1/255

.255.255.255

acl

to localhost dst 127.0.0.0/8

acl

localnet src 192.168.0.0/255.255.255.0

acl

manager proto cache_object

acl

SSL_ports port 443

# https

acl

SSL_ports port 563

# snews

acl

SSL_ports port 873

# rsync

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

# Незарегистрированные порты

acl

Safe_ports port 280

# http-rngrnt

acl

Safe_ports port 488

# gss-http

acl

Safe_ports port 591

# filemaker

acl

Safe_ports port 111

# multiling http

acl

Safe_ports port 631

# cups

acl Safe_ports port 873# rsync

acl Safe_ports port 901 # SWAT

acl purge method PURGE acl CONNECT method CONNECT

# Правила доступа

http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow localnet http_access deny all icp_access allow all

# Прокси-порт http_port 3128

# Размер кэша в оперативной памяти 64 Мбайт, кэш на жестком диске не предусмотрен cache_mem 64 MB

cache_dir

# По умолчанию действует: cache_dir ufs /var/spool/squid 100 16 256

# Деактивизировать функцию журналирования access_log none

# По умолчанию действует:
# access_log /var/log/squid/access.log squid

# Кэш отсутствует, если в URL есть cgi-bin hierarchy_stoplist cgi-bin?

acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY

# Срок существования файлов не ограничен refresh_pattern «ftp: 1440 20£ 10080 refresh_pattern „gopher: 1440 1440 refresh_pattern. 0 20£ 4320

# Прочие настройки

acl apache repleader Server “Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT hosts_file /etc/hosts coredump_dir /var/spool/squid

Чтобы внесенные изменения вступили в силу, перезапустите Squid:

root# /etc/init.d/squid reload

Если ваш провайдер предлагает кэш-посредник в качестве отдельной услуги и вы можете либо обязаны его применять, то укажите его IP-адрес и порт с помощью ключевого слова cache_peer (как в следующем примере). Если номер ICP-порта неизвестен, попробуйте 0 или 7. Если не получается, дополнительно укажите параметр default или no-query.

# Вышестоящий кэш-посредник (например, интернет-провайдера)

# cache_peer <хост-имя> <тип> <прокси-порт> <icp-nopT> <параметры> cache_peer www-proxy.provider.de parent 8080 7 default

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

# Прямой доступ к локальному веб-серверу uranus.sol acl mars dstdomain .uranus .uranus.sol

no_cache deny uranus

ПРИМЕЧАНИЕ


Есть еще не меньше сотни параметров, которые могут влиять на работу Squid или на его функции журналирования. Если вы имеете на этот счет особые пожелания, посмотрите файл squid.conf или документацию по адресу www.squid-cache.org.

Первое испытание.

По умолчанию Squid использует порт 3128. Чтобы пользователи вашей локальной сети действительно могли работать с прокси, они должны измеhttp://www.modx.cc/manager/?a=resource/create&class_key=Article&parent=982&context_key=web&template=30нить его конфигурацию в своих браузерах. В Firefox можно открыть Инструменты ► Настройки ► Дополнительные ► Сеть, нажать кнопку Настроить и установить флажок Ручная настройка сервиса прокси. В качестве прокси-сервера требуется указать тот компьютер, на котором работает Squid (например, mars.sol), номер порта — 3128.

Если вы не отключили в Squid функции журналирования, то в файле /var/log/ squid/access.log можно проверить, правильно ли работает программа. Если все нормально, то все переданные данные будут зарегистрированы в этом файле.

Конфигурация прозрачного кэш-посредника


Пока использование кэш-посредника происходит на добровольной основе. Клиентам (пользователям Интернета) нужно просто настроить связь по прокси в своем браузере, чтобы Squidhttp://www.modx.cc/manager/?a=resource/create&class_key=Article&parent=982&context_key=web&template=30 начал работать. Если настройки прокси не изменить, то пользователи будут работать как бы «мимо кэша».

Такая ситуация нас не устраивает по двум причинам: многие конечные пользователи просто не сумеют сами изменить настройки прокси. Кроме того, чтобы Squid перестал фильтровать трафик, пользователям понадобится сбросить настройки прокси.

Чтобы избежать таких неприятностей, ядро Linux можно настроить так, чтобы весь трафик HTTP, который обычно идет через 1Р-порт 80, автоматически перенаправлялся на кэш-посредник. Такой кэш называется прозрачным. Это означает, что кэш без всякой дополнительной конфигурации автоматически применяется пользователем при каждом обращении к HTTP. Для описанной здесь конфигурации необходимо, чтобы Squid был установлен на том же компьютере, на котором работает интернет-шлюз локальной сети.

Файл squid.conf


В squid.conf необходимо изменить всего одну строку. В http_port дополнительно к номеру порта укажите ключевое слово transparent, а потом перезапустите Squid.

# Изменение в /etc/squid/squid.conf http_port 3128 transparent

Активизация переадресации



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

root# echo 1 > /proc/sys/net/ipv4/ip_forward

Переадресация портов


Теперь нужно активизировать переадресацию IP-пакетов: все IP-пакеты, которые должны уйти с компьютера и адресованы на порт 80, следует переадресовать на тот IP-порт, где работает Squid. Команда не помещается на одной строке, поэтому я разделил ее на две части. Интерфейс eth1 заменяется интерфейсом, через который шлюз соединяется с локальной сетью.

root# iptables -A PREROUTING -t nat -i ethl -p tcp \ --dport 80 -j REDIRECT --to-port 3128

Если все сделано правильно, то теперь каждый клиент, работающий в сети, автоматически использует Squid для передачи веб-страниц. Проверьте, на самом ли деле при доступе клиентского компьютера к Интернету в /var/log/squid/access.log появляются новые записи.

В заключение вставьте команду iptables в сценарий Init-V, который автоматически выполняется при запуске компьютера. На моем сервере эта команда интегрирована в сценарий брандмауэра:

# В /etc/myfirewall/myfirewall-start.conf

if [ $MFW_MASQ = 'yes' ]; then

# Маскарадинг

$IPT -A POSTROUTING -t nat -o $MFW_INET -s $MFW_LAN_IP \ -j MASQUERADE

# Прозрачный кэш-посредник

$IPT -A PREROUTING -t nat -i ethl -p tcp --dport 80 \ -j REDIRECT --to-port 3128

# Функция переадресации в ядре $SYS -q -w net.ipv4.ip_forward=l

fi

ВНИМАНИЕ



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

Создание сетевого фильтра с помощью DansGuardian



Правила squid.conf позволяют блокировать отдельные веб-страницы. Но создать по такому принципу полноценный сетевой фильтр будет очень сложно. Правда, нет необходимости заново изобретать велосипед. Программа DansGuardian позволяет защитить ваших детей от опасности, которой в наши дни в Интернете предостаточно.

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

Установка



В большинстве дистрибутивов DansGuardian можно установить в виде отдельного пакета. Поскольку программа также блокирует загрузку большинства известных вирусов, вместе с DansGuardian устанавливается вирусный фильтр ClamAV (эта программа предназначена для защиты клиентов Windows, работающих в локальной сети; для Linux в настоящее время вирусов не существует).

DansGuardian — это демон, запускаемый и останавливаемый обычными командами. По умолчанию программа ожидает поступления веб-запросов на порт 8080. Если такой запрос поступает, то DansGuardian связывается с программой Squid (порт 3128) и анализирует сайт. Если эта страница окажется безобидной, демон переадресует ее через порт 8080 обратно в браузер. Еще более изящным является представленный ниже вариант конфигурации, при котором DansGuardian обрабатывает все запросы на порте 80 и по этой причине для клиентов не требуется никакой конфигурации прокси.

Файл dansguardian.conf



Основным конфигурационным файлом программы является /etc/dansguardian/ dansguardian.conf. Как правило, его можно оставить без изменений — в том виде, в котором он был при поставке системы. В зависимости от дистрибутива в файле может содержаться строка UNCONFIGURED; если она есть, то перед ней нужно поставить символ комментария. Если вы хотите, чтобы сообщение 'access denied' выводилось по-русски, используйте настройку language='russian'. Если в вашей сети все компьютеры работают с Linux, отключите с помощью virusscan=off сканер антивируса, который по умолчанию проверяет все закачки на наличие вирусов. Для обеспечения взаимодействия с прокси Squid нужно указать IP-адрес и номер порта.

<code># /etc/dansguardian/dansguardian.conf (выборочно) reportinglevel = 3

languagedir = '/etc/dansguardian/languages'

language = 'german'

loglevel = 1

logexceptionhits = on

logfileformat = 1

filterport = 8080

proxyip = 127.0.0.1 proxyport = 3128</code>

Завершив конфигурацию, запустите DansGuardian: root# /etc/init.d/dansguardian start

Прозрачная защита



По умолчанию DansGuardian работает только с обращениями, поступающими на порт 8080. Чтобы обеспечить прозрачную защиту всех обращений к Интернету, идущих через порт 80, нужно еще раз немного изменить сценарий брандмауэра. Для этого замените eth1 интерфейсом вашей локальной сети:

# Дополнение сценария брандмауэра

# Переадресовывать к DansGuardian (Port 8080)

# все пакеты, идущие на порт 80 (прозрачный сетевой фильтр) iptables -t nat -A PRER0UTING -i ethl -p tcp --dport 80 \

-j REDIRECT --to-port 8080

Как это уже было описано в предыдущем разделе, Squid нужно сконфигурировать как прозрачный кэш-посредник. Кроме того, доступ к Squid нужно ограничить таким образом, чтобы со Squid мог обмениваться информацией только тот компьютер, на котором работает DansGuardian. Если и Squid, и DansGuardian работают на одном и том же компьютере и вы применяете конфигурацию, описанную в этой главе, нужно удалить строку http_access allow localnet. В противном случае все пользователи локальной сети смогут так настроить конфигурацию прокси в своем браузере, что браузер будет обмениваться данными напрямую со Squid через порт 3128и обходить, таким образом, DansGuardian!

Конфигурация сетевого фильтра



Сами фильтрующие функции DansGuardian управляются из файла /etc/dansguardian/ dansguardianf1.conf. Сначала этот файл указывает на различные заранее сконфигурированные файлы, содержащие ключевые слова, заблокированные сайты и т. д. Параметр naughtynesslimit определяет границу, начиная с которой сайт блокируется. Это значение тем выше, чем больше ключевых слов или их комбинаций будет найдено в тексте.

-# /etc/dansguardian/dansguardianf1.conf (выборочно) # Размещение файлов, предназначенных для фильтрации содержимого

bannedphraselist

weightedphraselist

exceptionphraselist

bannedsitelist

greysitelist

exceptionsitelist

bannedurllist


'/etc/dansguardi '/etc/dansguardi '/etc/dansguardi '/etc/dansguardi '/etc/dansguardi '/etc/dansguardi

an/weightedphraselist'

an/exceptionphraselist'

an/bannedsitelist'

an/greysitelist'

an/exceptionsitelist'

an/bannedurllist'
greyurllist

exceptionurllist = '/etc/dansguardi bannedregexpurllist = '/etc/dansguardi bannedextensionlist = '/etc/dansguardi bannedmimetypelist = '/etc/dansguardi picsfile = '/etc/dansguardi

contentregexplist

# Лимит пошлости

# В качестве ориентира:

# 50 для маленьких детей, 100 для школьников,

# 160 для старших тинейджеров, naughtynesslimit = 50

= '/etc/dansguardian/greyurllist'

an/exceptionurllist' an/bannedregexpurllist' an/bannedextensionlist' an/bannedmimetypelist' an/pics'

= '/etc/dansguardian/contentregexplist'

Если DansGuardian блокирует сайт, то браузер выводит соответствующее сообщение. Внешний вид и содержимое страницы, открывающейся при блокировке контента, можно отрегулировать в файле /etc/dansguardian/languages/ german/template.html.


Access has been Denied!

Access to the page:

_

… has been denied forlhe following reason: Weighted phrase limit exceeded. Categories:

Pornography, Pornography (Portuguese), Pornography (German), Pornography (Spanish), Bad words (French), Pornography (Italian), Pornography (French)

Yoj are 3eeing this error because what you attempted to access appears to

contain, or is labeled as containing, material lhat has boor deemed __inappropriate._


Ниже перечислены важнейшие файлы, находящиеся в каталоге /etc/ dansguardian. В этих файлах, а также в названных в них включаемых файлах можно перечислить и другие понятия, сайты и типы файлов.

Конфигурационные файлы DansGuardian



bannedextensionlist — Блокировать файлы с указанными расширениями

bannedmimetypelist — Блокировать указанные типы файлов

bannedphraselist — Запрещенные ключевые слова

weightedphraselist — Негативные ключевые слова

bannedsitelist — Полностью блокировать указанные сайты

bannedurllist — Блокировать эти страницы

exceptioniplist — Никогда не блокировать запросы, поступающие с этих компьютеров (административный доступ к сомнительным сайтам)

exceptionsitelist — Принимать такие сайты без дополнительного контроля

exceptionurllist — Принимать такие страницы без дополнительного контроля

exceptionphraselist — Положительные ключевые слова

greysitelist — Принимать такие сайты, но проверять их текстовое содержимое

При анализе текста DansGuardian различает запрещенные ключевые слова (bannedphraselist), при обнаружении которых доступ к странице сразу же блокируется, и подозрительные ключевые слова (weightedphraselist и exceptionphraselist). В базовой конфигурации полностью запрещенных ключевых слов нет, так как самые подозрительные слова иногда могут попадаться на совершенно безобидных сайтах. Вместо этого DansGuardian применяет довольно обширные списки слов (см. файл /etc/dansguardian/phraselists). На основании этих списков программа подводит суммарный итог встречаемости всех негативных и положительных ключевых слов. Если итог превышает заданное пороговое значение, то доступ блокируется. Подробности о том, как вычисляются оценочные суммы блокируемых сайтов, описаны в файле регистрации /var/log/dansguardian/access.log.

В пакете DansGuardian нет списков сетевых адресов, которые должны блокироваться! В файлах bannedsitelist и bannedurllist документированы только принципы построения синтаксиса. Но есть фирмы, которые позволяют регулярно скачивать обновляемые списки за определенную плату. Самая известная из них — URLblacklist, собирающая в различных Squid-совместимых текстовых файлах ссылки на неблагонадежные сайты (http://urlblacklist.com/). Списки относятся к различным категориям. Фильтрационные списки можно бесплатно скачивать, чтобы научиться с ними работать, но обновление этих списков платное.

При использовании стандартной конфигурации DansGuardian блокирует в числе прочих закачки заархивированных файлов, МРЗ, образов дисков (ISO) и т. д. Но для повседневной работы с Linux такие ограничения определенно слишком жесткие, а в некоторых дистрибутивах они даже мешают работе системы управления пакетами. Просмотрите файлы bannedmimetypelist и bannedextensionlist и поставьте символы комментария перед всеми типами файлов, загрузку которых вы хотите разрешить! Вы также можете, настраивая переменные bannedextensionlist и bannedmimetypelist, просто указать в dansguardianf1.conf пустой файл.

Чтобы реагировать на запросы типа DansGuardian блокирует сайт ххх, но он совершенно безобиден, вы как администратор должны уметь обходить DansGuardian. Это проще всего сделать, указав в конфигурационном файле exceptionip фиксированный IP-адрес вашего компьютера в локальной сети.

ПРИМЕЧАНИЕ


Не переоценивайте эффективность DansGuardian! Даже настройка naughtynesslimit = 50 (для маленьких детей) не гарантирует полной защиты от порнографических сайтов и совсем не дает защиты от порнографических изображений.

При стандартной конфигурации учитываются в основном английские ключевые слова. Для блокировки большинства порнографических сайтов этого обычно бывает достаточно, но еще нужно заблокировать экстремистские правые сайты и сайты, призывающие к насилию, и для этого придется поработать вручную. Начать нужно с файла /etc/dansguardian/weightedphraselist. Независимо от этого, фильтр легко обходится динамически создаваемым текстом (JavaScript/Flash), а также не воспринимает содержимого внешних файлов (PDF и т. д.). Доступ к изображениям и видео остается полностью незащищенным. Это же касается всех интернет-служб, работа которых не связана с Глобальной сетью (электронная почта, новостные ленты, чат и т. д.).
Читайте так же:
SELinux






Подпишитесь на рассылку! Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать