Задачами HTTP-Proxy (посредника HTTP-запросов) являются:
Я не сторонник самостоятельной компиляции программ (за исключением случаев, когда требуются какие-либо отключенные в заранее скомпилированном пакете функции), поэтому беру Squid из состава packages; этот путь я рекомендую для всех начинающих администраторов. Добавление Squid в систему стандартно:
pkg_add squid-2.4_6.tgz
Если попытаться запустить Squid сразу после инсталляции, он сообщит, что его надо запустить с ключем -z для создания структуры директорий, где он будет хранить свой кэш (ранее скачанные Web-страницы, каждая в отдельном файле), но делать это сразу не стОит - дело в том, что по умолчанию Squid хранит свой кэш в /usr/local/squid/cache, отведя под него 100 мегабайт. Если мы правильно разбили диск при инсталляции FreeBSD, у нас имеется отдельный асинхронно смонтированный раздел /cache. В этом случае закомментаренную строку
#cache_dir ufs /usr/local/squid/cache 100 16 256
cache_dir ufs /cache размер 16 256
Параметр store_avg_object_size по умолчанию имеет размер 13 KB. Прежде всего, надо рассказать о том, как Squid использует этот параметр при работе с кэшем.
store_avg_object_size 8 KB
При выборе размера кэша следует учесть, что наиболее часто используемые данные он должен держать в памяти. На каждый объект, хранящийся в кэше, следует отвести примерно 200 байт оперативной памяти и указать этот объем
cache_mem N MB
Если запустить Squid с данными настройками, он откажется пропускать кого-бы то ни было. Причины те же самые, что и в SendMail для закрытия свободного ralaying (пересылки почты с другой машины на третью) - администратор обязан сам указать множество машин, которые его сервер будет обслуживать. Дело в том, что у многих провайдеров различается цена внутреннего трафика, трафика по стране и заграничного трафика, а со временем такая политика будет распространяться все шире; поэтому реально появление злоумышленников, желающих свалить разницу в цене на кого-нибудь другого (все равно кого - лишь бы меньше платить самомУ).
Изначально в Squid мы имеем:
Допустим, в нашей сетИ клиенты имеют только Intranet-адреса; в этом случае нам нужно
Управление доступа производится двумя тэгами: acl (см.подробности в файле squid.conf и у Богомолова) и http_access.
Список доступа задается в виде
acl имя тип список_значений
Правила доступа выглядят так:
http_access разрешить_или_запретить списки_доступа
Думаю, все сталкивались с wildchars в именах файлов:
Мало кто задумывался о том, какие части могут присутствовать в URL. Привожу их список (вероятно, неполный):
Для простоты ограничимся IP-сетью класса C 192.168.1.*, из которой можно выходить в WWW. В этом случае в squid.conf в те же места, которые были выделены в предыдущем примере, пишем
Содержимое файла denylist зависит от фантазии администратора и настойчивости юзеров. :-) Вот мой собственный список, а здесь - общие принципы:
^http://[^/]*chat(\.[^./]+){2,}/.*
^http://[^/]*citychat\.ru/.*
Подавляющее большинство порносайтов содержат в доменном имени и/или в пути к файлу определенные слова - "porno", "udult", "xxx" и т.п.. Однако, такое слово может содержать и обычный сайт, в т.ч. и посвященный проблеме ограниченя порнографии. Я выбрал такой компромисс:
Для борьбы с порнографией я побродил немного по порносайтам и нашел там достаточно много линков, чтобы составить большой список.
Баннеры неприятны уже тем, что каждый раз загружается новый баннер. Для борьбы с ними я использую свой список.