четверг, 5 марта 2009 г.
среда, 4 марта 2009 г.
Определенные сообщения об ошибках в SQUID
Задача:
Есть сеть с пользователями и в данной сети имеются определенные блоки адресов которым "не нужны" определенные ресурсы и которые очень сильно персонал отвлекают от работы. Задача, избавить их от необходимости их посещать, соответственно "предупредив" их об этом отдельным сообщением.
Дано:
Внутренний шлюз с ОС ASPLinux Enterprise 5 на борту eth0(192.168.1.1/ - внутренняя сеть), eth1(10.0.0.1 - интерфейс, который "смотрит" на пограничный роутер Cisco).
SQUID 2.6STABLE6
iptables v1.3.5
192.168.2.128/25 - которой очень сильно мешают развлекательные сайты и прочая "нечесть" Internet для нормальной, плодотворной и увлекательной работы.
Решение:
По большому счету того что дано "за глаза" хватит чтобы справится с задачей.
Алгоритм решение достаточно прост, понятен и умещается в одной фразе transparent proxing. Чтобы было проще понять распишем это понятие. При запросе страницы сайта, вне границ нашей сети, пакеты адресованные этому сайту проходят через шлюз по умолчанию. На данном шлюзе они NAT'ятся(если это необходимо) и уходят в Интернет через пограничный роутер. Суть "прозрачного проксирования" заключается в том, чтобы пакеты адресованные 80-му tcp-порту проходили через proxy, при это независимо от того, стоит ли в настройках браузера пользователя "использовать прокси" или не стоит. Т.е. мы принудительно редиректим пакеты адресованные сторонним веб-серверам на proxy, а там дальше, SQUID уже сам знает что делать с этими пакетами.
Перво-наперво мы "заворачиваем" весь web-трафик на proxy одной командой:
iptables -t nat -A PREROUTING - указываем iptables добавить в конец цепочки(ключ -A) PREROUTING таблицы nat (-t nat) новое правило.
Все что пришло из сети 192.168.2.128/25(ключ -s 192.168.2.128/25) по протоколу TCP(ключ -p tcp) во внешний мир через какой-либо интерфейс шлюза на внешние адреса на порт 80(--dport 80) т.е. весь web-трафик редиректить на сам шлюз на порт 3128, или любой другой порт на котором работает SQUID(-j REDIRECT --to-port 3128).
Думаю, что больше комментариев не надо к данной команде, хотя, если задача более сложная, например проксирование нескольких адресов только при запросах определенных сайтов то здесь уже вступают в действие такие ключи как -d с помощью которых указываются хосты/сети назначения трафика.
Даже в этом случае пакетный фильтр iptables дает нам всю мощь и гибкость для выполнения задачи.
Если команда была введена правильно, и нет никаких ошибок/опечаток то правило должно примениться сразу же.
Теперь перейдем непосредственно к SQUID.
Рассмотрим squid.conf, я не буду приводить его весь целяком, а приведу только ту его часть которая необходима нам для решения задачи, естественно снабдив его комментариями.
Но сначала немного теории и разбор логики той части задачи, которую выполняет SQUID.
Proxy необходимо пришедшие на него запросы из ОПРЕДЕЛЕННЫХ сетей отработать и вернуть результат, при этом применив к данным запросам определенные уникальные правила, которые должны быть применены к данным запросам. При этом, остальные запросы, должны отрабатываться согласно других правил.
Т.е. если брать пример, то скажем бухгалтерам, для работы необходима информация по наименованиям и характеристикам определнного товара, которую они могут подсмотреть на официальном сайте производителя, НО при этом, такой сайт как "одноклассники" им явно мешает, а некоторых даже раздражает, наркотическая зависимость от данных ресурсов очень сильно мешает плодотворной работе на благо компании. Таковых сайтов может быть великое множество.
Соответсвенно нам необходимо выделать адреса бухгалтеров в отдельный блок, это могут быть как подсети, так и одиночные хосты и "заставить" SQUID применять к ним запрещающие правила, после применения который "отдавать" пользователям страницу с ругательным обращением и ссылками на определенные статьи положения о политике информационной безопастности и порядке использования ресурсов сети Internet в рабочих целях.
Вообщем, задача сформулирована ясно, приступаем к настройке SQUID.
squid.conf
PS: Часто и густо, для того чтобы понять внутренние мехнизмы работы proxy-сервера нам приходится либо читать литературу для разработчиков, либо спрашивать на форумах либо других ресурсах как именно это делать. Но в самом SQUID есть встроенные механизмы для этого. К примеру, добавив строчку
Есть сеть с пользователями и в данной сети имеются определенные блоки адресов которым "не нужны" определенные ресурсы и которые очень сильно персонал отвлекают от работы. Задача, избавить их от необходимости их посещать, соответственно "предупредив" их об этом отдельным сообщением.
Дано:
Внутренний шлюз с ОС ASPLinux Enterprise 5 на борту eth0(192.168.1.1/ - внутренняя сеть), eth1(10.0.0.1 - интерфейс, который "смотрит" на пограничный роутер Cisco).
SQUID 2.6STABLE6
iptables v1.3.5
192.168.2.128/25 - которой очень сильно мешают развлекательные сайты и прочая "нечесть" Internet для нормальной, плодотворной и увлекательной работы.
Решение:
По большому счету того что дано "за глаза" хватит чтобы справится с задачей.
Алгоритм решение достаточно прост, понятен и умещается в одной фразе transparent proxing. Чтобы было проще понять распишем это понятие. При запросе страницы сайта, вне границ нашей сети, пакеты адресованные этому сайту проходят через шлюз по умолчанию. На данном шлюзе они NAT'ятся(если это необходимо) и уходят в Интернет через пограничный роутер. Суть "прозрачного проксирования" заключается в том, чтобы пакеты адресованные 80-му tcp-порту проходили через proxy, при это независимо от того, стоит ли в настройках браузера пользователя "использовать прокси" или не стоит. Т.е. мы принудительно редиректим пакеты адресованные сторонним веб-серверам на proxy, а там дальше, SQUID уже сам знает что делать с этими пакетами.
Перво-наперво мы "заворачиваем" весь web-трафик на proxy одной командой:
iptables -t nat -A PREROUTING -p tcp -s 192.168.2.128/25 --dport 80 -j REDIRECT --to-ports 3128Рассмотрим более детально введенную команду по частям.
iptables -t nat -A PREROUTING - указываем iptables добавить в конец цепочки(ключ -A) PREROUTING таблицы nat (-t nat) новое правило.
Все что пришло из сети 192.168.2.128/25(ключ -s 192.168.2.128/25) по протоколу TCP(ключ -p tcp) во внешний мир через какой-либо интерфейс шлюза на внешние адреса на порт 80(--dport 80) т.е. весь web-трафик редиректить на сам шлюз на порт 3128, или любой другой порт на котором работает SQUID(-j REDIRECT --to-port 3128).
Думаю, что больше комментариев не надо к данной команде, хотя, если задача более сложная, например проксирование нескольких адресов только при запросах определенных сайтов то здесь уже вступают в действие такие ключи как -d с помощью которых указываются хосты/сети назначения трафика.
Даже в этом случае пакетный фильтр iptables дает нам всю мощь и гибкость для выполнения задачи.
Если команда была введена правильно, и нет никаких ошибок/опечаток то правило должно примениться сразу же.
Теперь перейдем непосредственно к SQUID.
Рассмотрим squid.conf, я не буду приводить его весь целяком, а приведу только ту его часть которая необходима нам для решения задачи, естественно снабдив его комментариями.
Но сначала немного теории и разбор логики той части задачи, которую выполняет SQUID.
Proxy необходимо пришедшие на него запросы из ОПРЕДЕЛЕННЫХ сетей отработать и вернуть результат, при этом применив к данным запросам определенные уникальные правила, которые должны быть применены к данным запросам. При этом, остальные запросы, должны отрабатываться согласно других правил.
Т.е. если брать пример, то скажем бухгалтерам, для работы необходима информация по наименованиям и характеристикам определнного товара, которую они могут подсмотреть на официальном сайте производителя, НО при этом, такой сайт как "одноклассники" им явно мешает, а некоторых даже раздражает, наркотическая зависимость от данных ресурсов очень сильно мешает плодотворной работе на благо компании. Таковых сайтов может быть великое множество.
Соответсвенно нам необходимо выделать адреса бухгалтеров в отдельный блок, это могут быть как подсети, так и одиночные хосты и "заставить" SQUID применять к ним запрещающие правила, после применения который "отдавать" пользователям страницу с ругательным обращением и ссылками на определенные статьи положения о политике информационной безопастности и порядке использования ресурсов сети Internet в рабочих целях.
Вообщем, задача сформулирована ясно, приступаем к настройке SQUID.
squid.conf
http_port 3128 transparent # "Слушаем" запросы от пользователе на порту 3128, при этом указываем прокси работать в режиме transparent, т.е. прозрачного proxyЕще раз повторюсь - это только часть конфига применимая к данной задаче. Если же у Вас возникнут какие-либо другие мысли по поводу других задач, то все ответы можно найти внимательно почитав маны на сайте разработчиков SQUID
hierarchy_stoplist cgi-bin ? # список стоп-слов в URL при наличии которых возвращаемые веб-сервером страницы не попадают в кэш proxy
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_effective_user squid # имя пользователя от которого происходит запись в кеш proxy, в данном случае это squid
cache_dir aufs /var/spool/squid 1000 32 256 # директория на локальном диске где хранится кэш, тип хранения данных и его размер самого кэша.
access_log /var/log/squid/access.log squid # Путь к логам и имя пользователя, от лица которого будет производиться туда запись
cache_access_log /var/log/squid/access.log
acl odnoklassniki url_regex -i "/etc/squid/squidblock/rusites" # ACL в котором описываются адреса тех самых ресурсов, который вредят психологическому здоровью сотрудников компании. Для удобства, они хранятся в виде частей регулярных выражений, при совпадении которых срабатывает правило. Имя файла - /etc/squid/squidblock/rusites
acl buhs src 192.168.2.128/255.255.255.128 # Наши "старые знакомые", именно те самые люди, которым доступ к вышеуказанным сайтам не нужен
acl company src 192.168.1.0/255.255.248.0 # Все остальные пользователи, у которых нет необходимости отключать данные сайты.
acl all src 0.0.0.0/0.0.0.0 # Все остальные, тот самый великий ALL
# Далее будут описаны порты, по которым будет произвоиться проксирование, а так же ACL для кэш-менеджера
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
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 CONNECT method CONNECT # основной метод при запросе на конечный веб-сервер - CONNECT
# А теперь самое главное, порядок применения ACL, это очень важно, т.к. от порядка применения их зависит весь механизм работы SQUID и решение задачи в частности. Я потратил достаточно большое время перед тем как полностью вникнуть в суть их работы и именно поэтому особо заостряю на этом вопросе внимание.
http_access allow manager localhost # разрешаем кэш-менеджеру доступ к кэшу с локального адреса
http_access deny manager # а к остальной сети - запрещаем :)
http_access deny !Safe_ports # запрещаем всем доступ к портам которые обслуживает proxy
http_access deny CONNECT !SSL_ports # К портам, по которым передаются криптованные данные не использовать метод CONNECT, т.к. для подобного рода портов используется совершенно другие методы, описанные в библиотеках open-ssl.
http_access deny buhs odnoklassniki # запрещаем доступ к запрещенным сайтам бухгалтерам
http_access allow company all # Всем остальным пользователям - разрешаем
http_access deny all # Всем остальным сетям запрещаем доступ к кэшу
http_reply_access allow all # Разрешаем ответы от внешних сайтов, это необходимо для возврата ответа пользователям.
# Ну и теперь самое главное, надо же ведь объяснить пользователям почему именно мы это делаем. Для этого мы создаем html-страничку в который культурным языком объясняем почему именно мы это делаем.
deny_info ERR_CUSTOM_ACCESS_DENIED odnoklassniki
# В данном случае, при срабатывании правил, вместо стандартной странички с ответом пользователю будет выдаваться страница определенная администратором proxy-сервера.
PS: Часто и густо, для того чтобы понять внутренние мехнизмы работы proxy-сервера нам приходится либо читать литературу для разработчиков, либо спрашивать на форумах либо других ресурсах как именно это делать. Но в самом SQUID есть встроенные механизмы для этого. К примеру, добавив строчку
debug_options ALL,1 33,2 28,9вы полчите исчерпывающую информацию о том, по каким именно ACL проходит трафик и где именно срабатывает правило. Именно с помощью данной строчки Ваш покорный слуга и научился понимать все механизмы работы онных в SQUID.
вторник, 3 марта 2009 г.
Общее изменение шаблонов почты у всех ящиков LOTUS NOTES
Изначально "говорим" router'у почты чтобы он остановился и движение почты прекратилось.
Далее, даем команду на замену шаблона у всех почтовых ящиков
Возобновляем движение почты
tell router quit
Далее, даем команду на замену шаблона у всех почтовых ящиков
load convert -r mail\*.nsf * mail7.ntf
Возобновляем движение почты
load routerВот такими вот нехитрыми командами мы можем обновить шаблоны у всех почтовых ящиков формата Lotus Notes
load updall -r
Подписаться на:
Сообщения (Atom)