Михаил Флёнов - Linux глазами хакера
$url = $b468_60 if grep $url =~ m%$_%, @b468_60;
# Проверка баннера 100x100
$url = $b100_100 if grep $url =~ m%$_%, @bl00_100;
# Проверка баннера произвольного размера
$url = $various if grep $url =~ m%$_%, @various;
# Всплывающее окно
$url = $closewindow if grep $url =~ m%$_%, @popup_window;
# Отдельный сайт, не внесенный в список в начале файла
$url = "$YOURSITE/empty.gif" if $url =~ m%hitbox.com/Hitbox?;
if ($LOG and $url ne $prev) {
my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
printf LOG "%2d.%02d.%2d %2d:%02d:%04d: %srn",
$mday, $mon + 1, $year + 1900, $hour, $min, $sec,
"$who $prev > $url";
}
print "$url $who $ident $methodn";
}
close LOG if $LOG;
Сохраните эту программу в файле /usr/etc/redirector и установите для squid права на его исполнение. После этого добавьте в файл squid.conf следующую строку:
redirect_program /usr/local/etc/squid/redirector
Чтобы эта программа заработала, создайте на своем Web-сервере файлы со следующими именами:
□ 468_60.gif — картинка размером 468×60;
□ 100_100.gif — картинка размером 100×100;
□ empty.gif — картинка, которая будет заменять нестандартные баннеры. Лучше всего ее сделать размером 1×1 пиксель, чтобы она не испортила дизайн сайта;
□ close.htm — HTML-файл, который будет закрывать всплывающие окна. В нем нужно поместить всего лишь функцию, которая будет закрывать окно. Для этого используется JavaScript-функция window.close(). Пример содержимого файла показан в листинге 9.3.
Все эти файлы должны лежать на Web-сервере в одной директории. Не забудьте в сценарии (в переменной $YOURSITE) указать правильный путь к этому каталогу.
Я постарался снабдить код в листинге 9.2 комментариями. Если у вас есть опыт программирования на Perl, то дальнейшие действия вы выполните без проблем.
Листинг 9.3. Пример JavaScript-файла, закрывающего всплывающее окно<html>
<head>
<script language="JavaScript">
<!--
window.close();
//-->
</script>
</head>
<body>
</body>
</html>
9.5.7. Борьба с запрещенными сайтами
Недавно я разговаривал с одним своим знакомым, и мне понравилось его определение Интернета — сеть создана и живет порнографией. Я не уверен, но мне кажется, что он прав в том, что трафик с сайтов с интим-содержимым самый высокий (если не считать службу обновления Microsoft, где пользователи скачивают патчи для программ этой компании :)).
Ни один работодатель не обрадуется, если его сотрудники в рабочее время будут посещать сайты с запрещенным контентом (это не только бесполезная трата трафика, но и другие непроизводительные расходы). Родители тоже не хотят, чтобы их дети рассматривали подобные сайты, поэтому стремятся оградить их от этого зрелища. Это я говорю уже как отец двоих детей.
Порно-сайты легко можно запретить с помощью таких же методов, как мы использовали для баннеров. Например, можно отключить любые сайты, в адресе которых есть слово "sex". Но нельзя забывать, что могут быть исключения. К примеру, адрес может содержать текст "GasExpo". Обратите внимание, что выделенные буквы создают слово "sex". А ведь это реальный случай из жизни, когда пользователь сети не смог попасть на сайт выставки по газовому оборудованию.
Создавать списки запрещенных сайтов достаточно сложно, но можно. В настоящее время в зоне com большинство сайтов эротической направленности закрылись и обживают другие места, которые принадлежат маленьким государствам. Существуют домены, которые на 90% состоят из сайтов индустрии развлечений для взрослых. Вот их можно исключить полностью.
9.5.8. Ограничение канала
При организации доступа в Интернет очень часто требуется отдельным пользователям обеспечить большую скорость подключения. Как это сделать, когда по умолчанию все равноправны и могут работать на максимально доступной на данный момент скорости? Для этого нужно определиться с приоритетами. Для некоторых пользователей должен быть зарезервирован высокоскоростной канал связи. Нельзя повысить скорость одному человеку без ущерба остальным.
Если кому-то требуется полоса гарантированной пропускной способности для работы с приложениями, требующими высокой скорости обмена (например, для проведения презентаций), вы должны зарезервировать для них более мощный, чем для остальных канал.
Ограничение внешнего канала достаточно легко выполнить с помощью squid, Директивы, которые нужно использовать, можно увидеть в следующем примере:
delay_pools 3
delay_class 1 1
delay_class 2 2
delay_class 3 1
delay_parameters 1 256000/256000
delay_access 1 deny all
delay_access 1 allow admins
delay_parameters 2 256000/256000 4000/8000
delay_access 2 allow all
delay_access 2 deny admins
delay_parameters 3 64000/64000
delay_access 3 deny all
delay_access 3 allow bigboss
Этот код нужно добавить в файл конфигурации /etc/squid/squid.conf после комментария:
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
#-------------------------------------------------------------------
Большинство параметров уже заданы по умолчанию, и их следует заменить.
Давайте подробно рассмотрим конфигурацию. Для начала нужно определить, сколько у вас будет пулов (правил, описывающих скорость доступа). Для этого используется директива delay_pools n, где n — это количество пулов. По умолчанию n равно нулю, и нет никаких ограничений. Мы создадим три пула, поэтому в примере указано число 3.
После этого нужно определить, к какому классу относится пул. Это делается с помощью директивы delay_class n c, где n — это порядковый номер, а c — номер класса. Каждая строка с директивой delay_class должна иметь свой порядковый номер, который начинается с 1. В нашем примере две строки, поэтому в первой параметр n равен 1, а во второй — 2.
Номеров класса (второй параметр) может быть три:
□ 1 — ограничение канала происходит для всей сети. Например, у вас внешний канал 256 Кбит/с, вы можете его уменьшить для всех до 64 Кбит/с;
□ 2 — сузить можно общий канал и помимо этого для каждого пользователя индивидуально. В этом случае общий канал может быть понижен до 64 Кбит/с, и каждый пользователь в отдельности сможет работать только на скорости 4 Кбит/с;
□ 3 — ограничивать можно общий канал, индивидуально и для каждой сети в отдельности. Например, если скорость канала равна 256 Кбит/с, а в вашей сети работает 4 подсети, то каждой из них можно выделить по 64 Кбит/с, чтобы равномерно разделить нагрузку.
В нашем примере мы используем пулы 1 и 2 и снова 1 класса. Я специально расположил их не последовательно, чтобы пример был более наглядным.
Теперь описываем параметры скорости доступа. Это делается с помощью следующей директивы:
delay_parameters пул скорость_канала скорость_сети индивидуально
пул — это номер пула, скорость которого мы хотим описать. Так, в нашем примере следующая строка описывает скорость для первого пула:
delay_parameters 1 256000/256000
Так как пул 1 имеет 1 класс (delay_class 1 1), у которого можно ограничивать только канал полностью, в директиве используется единственный параметр — скорость_канала (256000/256000). Он формируется в виде двух чисел, разделенных знаком "/". До слэша указывается скорость, с которой будут скачиваться данные из сети, а после — размер пула, т.е. емкость, которую можно наполнить полученными из сети данными.
Количество параметров зависит от класса используемого пула. Если вы используете 1 класс, где можно ограничивать только общий канал, то должны быть указаны только два параметра:
delay_parameters пул скорость_канала
Если используется второй класс, то директива выглядит следующим образом:
delay_parameters пул скорость_канала индивидуально
Итак, первая директива использует полную скорость канала 256 000 байт в секунду. Обратите внимание, что скорость указывается именно в байтах, а характеристика модема задается в битах в секунду. Если в качестве скорости указать значение -1, то никаких ограничений не будет.
После определения параметров для первого пула нужно установить права доступа к нему. Это делается директивой delay_access, которая имеет следующий вид:
delay_access пул доступ acl
Первый параметр — это снова номер пула. Потом указывается доступ allow или deny, и последним идет имя списка.
В нашем примере для первого пула используется две строки:
delay_access 1 deny all
delay_access 1 allow admins
Сначала мы запрещаем доступ для всех, а потом разрешаем работать на данной скорости только ACL-списку admins. Подразумевается, что в этот список входят администраторы.
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Михаил Флёнов - Linux глазами хакера, относящееся к жанру Программное обеспечение. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


