Почтовая система
Alt-N MDaemon
Базовая настройка
маршрутизатора Cisco
Windows Server Update Services
Apache как прокси-сервер
Виртуальная машина SVISTA
Архивируем данные
с помощью Bacula
Защита коммуникаций
Windows Mobile
Система создания
документации POD
Оптимизация циклов
№4(29) апрель 2005
под Linux
оглавление
Информационная поддержка:
2
события
Open Source Forum Russia:
27-29 все двери открытому коду
рен приехать в Россию, чтобы выступить с докладом на
Open Source World Russia. Именно Ларри Уолл в 1987 году
АПРЕЛЯ открыты! создал язык программирования Perl. Он удостоился пер-
Как мы уже писали в одном из последних номеров, с 27 по вой награды Free Software Foundations за продвижение ПО
29 апреля в Москве будет проходить Open Source Forum на открытом коде. Господин Уолл также известен как соав-
Russia – первое в России информационно-выставочное ме- тор знаменитой книги «Programming Perl» и создатель про-
роприятие, которое соберет вместе российских, американ- граммы для чтения новостей rn Usenet.
ских и европейских лидеров индустрии Open Source, веду- Свою заинтересованность в участии в конференции под-
щих поставщиков технологий с открытым исходным кодом твердил Рич Боуен (Rich Bowen) СТО компании Cooper
и заказчиков, заинтересованных в развертывании надеж- McGregor CTO и эксперт по Apache. Он является соавтором
ных и экономичных Linux-решений, а также российские IT- книг «Apache Administrator’s Handbook», «Apache Server
компании, которые намерены развивать собственные ре- Unleashed». Господин Боуен внес огромный вклад в проект по
шения на базе программного обеспечения Open Source. развитию Apache, и он регулярно принимает участие в меж-
Сообщаем вам подробности предстоящего события. дународных конференциях, посвященных открытому коду.
6
администрирование
СЕРГЕЙ СЕРГЕЕВ
Одним из необходимых мероприятий по обеспечению на- Automatic Updates (автоматическое обновление). В крупных
дежного и безопасного функционирования современной ин- компьютерных сетях Windows отслеживание и установка об-
формационной системы является своевременная установка новлений без специального средства может занимать зна-
обновлений для существующих программных продуктов. На чительную часть рабочего времени системного админист-
компьютерах под управлением операционной системы ратора, либо увеличивать трафик интернет-соединения.
Microsoft Windows загрузкой и установкой критических об- Начиная с 2002 года Microsoft предоставляет бесплатный
новлений системных компонентов занимается служба продукт для управления обновлениями в сетях Windows.
8
администрирование
Сначала это был сервер Software Update Services (SUS), и, сайта Microsoft Update, централизованно управлять обнов-
наконец, 22 марта 2005 года на сайте Microsoft (http:// лениями программных продуктов Microsoft в сети органи-
www.microsoft.com/windowsserversystem/updateservices/ зации.
default.mspx) была опубликована информация о выходе в Интерфейс консоли администрирования WSUS, доступ
свет Release Candidate-версии нового продукта – Windows к которой осуществляется по протоколу http через Internet
Server Update Services (WSUS RC). Документация и файлы Explorer версии 6.0 или старше, достаточно понятен и удо-
установки WSUS RC доступны для свободной загрузки с бен для работы. Доступ к средствам администрирования
сайта Microsoft. из другого интернет-браузера, а также из операционных си-
Служба WSUS предназначена для централизованного стем ниже Windows 2000, не поддерживается.
управления обновлениями и исправлениями корпоративных
продуктов Microsoft: Windows XP Professional, Windows 2000,
Windows Server 2003, Office XP, Office 2003, SQL Server 2000,
SQL Server 2000 Desktop Engine (MSDE) 2000, Exchange
Server 2000 и Exchange Server 2003. Скорее всего, набор
поддерживаемых продуктов будет увеличиваться. Это под-
тверждается тем фактом, что при первой же синхрониза-
ции WSUS с сайтом Microsoft Update список обновляемых
продуктов в окне настройки параметров синхронизации зна-
чительно вырос.
От предыдущего продукта Microsoft для управления об-
новлениями (SUS), WSUS отличается значительным набо-
ром функций и возможностей:
! расширен набор обновляемых продуктов;
! объединение клиентских компьютеров в группы, на-
стройка правил обновлений для каждой группы;
! возможность автоматической загрузки и установки не-
обходимых обновлений без ручного вмешательства ад-
министратора;
! развитая система отчетов позволяет получать инфор-
мацию о клиентских компьютерах, а также о требуемых,
загруженных и установленных обновлениях; Ðèñóíîê 1. Ãëàâíîå îêíî êîíñîëè àäìèíèñòðèðîâàíèÿ WSUS
! использование базы данных для хранения настроек сер- Существует возможность настроить службу таким об-
вера, описаний обновлений, состояния клиентских ком- разом, что обновления не будут храниться локально на сер-
пьютеров; вере WSUS, а загружаться по запросу клиентов с сайта
! возможность загрузки так называемых файлов эксп- Microsoft. Тем не менее этот вариант в большинстве случа-
ресс-установки, обеспечивающих ускоренную загрузку ев представляется менее целесообразным, особенно в сред-
и установку обновлений на клиентские компьютеры, но них и крупных сетях с большим количеством компьютеров
увеличивающих время получения обновлений сервером; с одинаковым набором программного обеспечения.
! дочерние серверы WSUS могут управляться как цент- Для сетей с развитой инфраструктурой возможно исполь-
рализованно основным сервером, так и независимо от зование последовательности (цепочки) серверов WSUS, один
него; из которых загружает обновления с сайта Microsoft Update,
! применение технологии Background Intelligent Transfer а остальные синхронизируют свою базу обновлений с ба-
Service (BITS) 2.0 для более эффективного использова- зой этого (или вышестоящего) сервера. Причем имеется
ния сетевого трафика сервером и клиентом WSUS; возможность передачи обновлений с одного сервера WSUS
! передача базы обновлений между серверами WSUS че- на другой не только по каналам связи, но и при помощи
рез переносные устройства хранения информации; процедуры выгрузки на переносное устройство хранения
! специальная утилита WSUSUTIL позволяет управлять информации с последующей загрузкой на другой сервер.
сервером WSUS из командной строки; Это особенно актуально для территориально удаленных
! возможна установка WSUS поверх существующего сер- подразделений организаций в случае отсутствия или низ-
вера SUS, а также при помощи специальной утилиты кой скорости и качества каналов связи с ними (рис. 2).
импорт базы обновлений с другого сервера SUS; WSUS состоит из серверной и клиентской частей. Сер-
! возможность доверять локальным администраторам са- верная часть устанавливается на компьютеры с операци-
мим настраивать порядок загрузки и установки обнов- онными системами Windows 2000 Server или Windows Server
лений на управляемые ими компьютеры. 2003. Клиентами WSUS могут быть компьютеры под уп-
равлением Windows 2000 с установленными Service Pack 3
WSUS является весьма полезным инструментом для си- или 4, Windows XP Professional Service Pack 1 или 2, Windows
стемных администраторов сетей разных масштабов. Эта Server 2003.
служба позволяет снизить трафик интернет-соединения Для своей работы WSUS использует сервер баз данных
организации за счет однократной загрузки обновлений с MS SQL Server 2000. Возможно использование как полно-
10
администрирование
АВТОМАТИЗАЦИЯ MS WINDOWS,
ИЛИ AUTOIT КАК МЕЧТА ЭНИКЕЙЩИКА
ЧАСТЬ 1 Если не работает ксерокс,
вызывайте сисадмина.
Это ведь электронный прибор,
разве нет?1
АЛЕКСЕЙ БАРАБАНОВ
Со дня появления компьютеров человечество разделилось Например, пользователи IBM 360, работающие в среде
на пользователей и «компьютерщиков». Они стояли по раз- DOS, должны были так или иначе знать и уметь применять
ные стороны от электронной вычислительной машины, иног- язык управления заданиями JCL, а если они работали в кон-
да путаясь в точной принадлежности к своему классу или сольном режиме, то и язык управления работой всей сис-
группе. Но постепенно всё и все стали на свои места. Чис- темы. А вот те же пользователи IBM PS/2, работающие в
ло пользователей увеличивалось, а число «компьютерщи- среде OS/2, уже могли ничего не знать про настройки сис-
ков» лишь уточнялось. Пока компьютеров было мало, и они темы и довольствоваться лишь тем, что им предоставляет
представляли собой большие инженерные сооружения, об- графический интерфейс.
служиваемые целыми бригадами «компьютерщиков», в Таким образом, вопрос отличия пользователей от сис-
составе которых находилось изрядно механиков и элект- темных администраторов свелся к отличию применяемых
риков, то и число пользователей, приходящееся на один ими интерфейсов. Пользователь компьютера, встроенного
компьютер, старались сделать максимально большим. Об- в мобильный телефон, управляет устройством с помощью
щее соотношение пользователей к «компьютерщикам» графического интерфейса и кнопок на корпусе аппарата, а
мало кого интересовало, поскольку главным ресурсом были техник, обслуживающий этот же телефон, пользуется кон-
именно компьютеры. Но с появлением персональных ком- сольными командами или графическим интерфейсом про-
пьютеров, когда пропорция их числа к количеству пользо- граммы специального компьютера, к которому упомянутый
вателей бесповоротно перешла в разряд целых чисел, телефон подключается через технологический разъем JTAG.
иметь бригаду для обслуживания каждого компьютера ста- Другими словами, интерфейс должен соответствовать ре-
ло очень накладно. Именно с этого момента, с момента со- шаемым задачам. Но для персональных компьютеров ин-
здания персональных компьютеров, разработчики как обо- терфейс имел поистине судьбоносное значение. Ведь са-
рудования, так и программного обеспечения стали задумы- мое главное отличие их от компьютеров, использующихся
ваться о снижении затрат на обслуживание своих изделий. коллективно, заключался в монопольном предоставлении
Именно тогда абстрактные «компьютерщики» стали пре- всех ресурсов одному пользователю. Это не могло не ска-
вращаться в системных администраторов, специализиру- заться на способе решения проблемы интерфейса. Многие
ющихся на обслуживании компьютерных систем. Одновре- из первых персональных компьютеров продавались как при-
менно с этим стали появляться и специальные программ- ставка к телевизору, например Sinclair. То есть без телеви-
ные продукты, предназначенные именно для системных ад- зора это был еще не компьютер, а вот после его подключе-
министраторов или ориентированные в первую очередь на ния компьютером уже можно было пользоваться. В этом
решение задач обслуживания. проявлялась важность интерфейса.
1
Здесь и далее, околокомпьютерный фольклор.
12
администрирование
Анимация вместо автоматизации Итак, как же это работает. Такое средство должно иметь
Если вы увидели сообщение «Are you sure?», возможность ввести в управляемую им среду все необхо-
нажмите «Yes» как можно быстрее! димые данные, проанализировать ответ и в меру стандар-
Черт побери, если бы вы не были уверены, тных языковых возможностей организовать интерактивное
вы бы не делали этого, не так ли? выполнение описанного процесса. Все! Если интерфейс
И вот все эти проблемы получили свое решение. Появи- текстовый, что верно в отношении expect, то такая система
лось средство автоматизации операций в графической должна вводить строковые последовательности, принимать
оконной среде, которое имитировало работу человека-опе- и анализировать ответные строки и в зависимости от ре-
ратора, названное AutoIt и предназначенное изначально для зультата и в силу возможностей своего синтаксиса органи-
автоматизации операций установки программ. Сейчас мож- зовывать некоторый алгоритмический процесс. Если интер-
но воспользоваться версией 2.64, загрузив ее с http:// фейс графический, то к перечисленному добавляется GUI-
www.hiddensoft.com/AutoIt, и версией 3.1.0, доступной по специфика. К вводимым данным добавляются управление
адресу: http://www.autoitscript.com/autoit3/index.php .Эти про- поведением окон (обнаружение, активация, минимизация,
граммы распространяются под открытыми лицензиями. Вер- закрытие и проч.), закладок и других элементов оконного
сия 2.64, написанная Джонатаном Беннетом (Jonathan интерфейса, передвижение мыши и нажатия кнопок на ней.
Bennet), в некоммерческих проектах может быть использо- Точно так же, к получаемым данным добавляются события
вана без ограничений, а в коммерческих необходимо вме- по созданию, активации и прочим операциям с окнами. Ну
сте с продуктом указывать ссылку на сайт разработчика. а оставшееся всецело определяется дизайном встроенно-
Версия 3.1.0, авторство которой принадлежит упомянуто- го языка. В версии 2.* используется язык с синтаксисом
му Джонатану Беннету вместе с AutoIt Team, уже идет под подобным ассемблерному с разделителями в виде запятых
GNU GPL, что свидетельствует о зрелости подхода и о не- и примитивными управляющими операторами, основанны-
возможности в дальнейшем изъять эту программу из сво- ми на условных переходах. В 3-й версии это уже практи-
бодного оборота, переведя под какую-нибудь закрытую чески полноценный язык программирования с привычны-
лицензию. На обе версии есть, кроме прилагаемого файла ми управляющими структурами, включая функции, и как
Help на английском языке, еще и русская версия докумен- следствие goto из употребления в этом релизе изъят. И та
тации в формате chm, подготовленная Валерием Ивановым. и другая версии позволяют, как интерпретировать опера-
Если рассмотреть эту программу отдельно от контекста торы, записанные в отдельный скриптовой файл, так и со-
предполагаемого применения, то это всего лишь средство здавать исполняемую версию на основе runtime-компонен-
перехвата анализа состояния оконного интерфейса и эму- тов. Но версия 3.* «тяжелее» в полтора раза. Поэтому ис-
ляции нужных сообщений якобы от лица оператора. Прак- полняемые файлы на основе 2-й версии имеют размер от
тически смотрится как демонстрационная мультипликация. 40 Кб, а версии 3.* – от 116 Кб. Вероятно, из-за большего
Но с точки зрения языковой машины, например, юниксово- числа встроенных функций. Кроме уже перечисленного вер-
го bash, интерпретирующей некоторый скрипт, все действия сия 3.* имеет встроенные тайм-ауты в операторах ожида-
выглядят точно так же мультипликативно. Только это нико- ния, что позволяет решать проблемы «зависаний» неустой-
му не заметно, если происходит не на экране, а в текстовой чивых приложений, но в практике автоматизации стандар-
консоли. И тем более что в текстовых интерпретаторах есть тных действий можно с успехом обойтись и без этого. Дру-
возможность прятать и перенаправлять обрабатываемые гими словами, решения, построенные на версии 2.* не ут-
потоки символов. Но можно назвать и полную текстовую ратили актуальности для 90% задач, решаемых с помощью
аналогию из мира *nix обсуждаемой здесь программе. Это AutoIt, но релиз 3.* позволяет создавать полноценные при-
известное средство expect. Оно позволяет заменить для ложения, если такое нужно. В интернет-ресурсах, посвящен-
некоторой прикладной программы общение с текстовыми ных AutoIt есть даже примеры игровых программ.
терминалами и тем самым автоматизировать работу опе-
ратора путем эмуляции процесса его работы. Применяется Установка программного обеспечения
это обычно для автоматизации работ с интерактивными Если вы занимаетесь на вечерних компьютерных курсах,
средами, например с ftp. Примечательно, что и expect, и обязательно проверьте свои знания на своем
AutoIt имеют в своем составе средство, облегчающее со- и всех соседских компьютерах.
здание сценариев путем записи перехваченных реальных Мы любим работать до 2:30 ночи, исправляя это.
интерфейсных данных. Конечно, в AutoIt это пока очень Думаю, теории достаточно. Далее рассмотрим разнообраз-
незрелое ручное средство, которое в модальном окне по- ные примеры реального использования предложенной тех-
казывает характеристики выбранного элемента графичес- нологии. Здесь не ставится целью писать большие и изощ-
кого интерфейса. ренные программы. Главное, чтобы это были работоспо-
С точки зрения технологии AutoIt всего лишь использует собные и применимые в практике скрипты и программы.
возможности, заложенные в API графического интерфейса. Часть из них будет разобрана в тексте, другая просто ука-
Того же самого результата можно добиться с помощью Visual зана в ссылках и предназначена для самостоятельного изу-
Basic или даже C++. Но в том-то и разница, что использо- чения. Многие из них будут использованы в заключитель-
вание AutoIt позволяет избежать программирования на «тя- ном комплексном примере создания диска для автомати-
желых» языках. Ибо сисадмин не программист, и ему нуж- ческой установки MS Windows. Начиная с самой простой
но не писать программы, а лишь решать стандартные про- предложенные программы будут усложняться постепенно,
блемы автоматизации, возникающие в ходе его работы. что не мешает после прочтения всей статьи вернуться к
// óñòàíîâèì ðåæèì äåòåêòèðîâàíèÿ ñêðûòîãî òåêñòà â îêíàõ Для проверки отменим установку и запустим скрипт по
SetTitleMatchMode, 2
DetectHiddenText, on новой.
// óáåðåì âñå îêíà ñ ýêðàíà После остановки снова завершим наш скрипт, развер-
WinMinimizeAll
// ïîäîæäåì ñåêóíäó нем все окна и проанализируем результат, изображенный
Sleep, 1000 на рисунке.
// çàïóñòèì óñòàíîâêó èç òîé æå äèðåêòîðèè
Run, autoit-v3-setup.exe
// âûâåäåì îêîøêî ñ ñîîáùåíèåì
MsgBox, 0, AutoIt, Setup done
// çàâåðøåíèå
Exit
Ðèñóíîê 2
Здесь аналогично первому запуску проследим за участ-
ками, отмеченными красным. Задача заключается в том, что
надо «отловить» новое окно и активировать нужное действие.
Но окно имеет такое же название, что и предыдущее! Тогда
смотрим в окошке перехватчика, какие еще строковые зна-
чения нам доступны. Находим строку «License Agreement».
Эта строка как нельзя лучше отражает специфическое зна-
чение полученного окна. И поскольку здесь снова нужное
действие сразу стоит по умолчанию, то после обнаружения
этого окна нужно снова отправить в него Enter. Меняем текст
следующим образом:
14
администрирование
Обратите внимание, как изменился синтаксис операто- to v3 Converter». Такой подход позволяет сразу получить
ра WinWaitActive, поскольку теперь нужно определить окно синтаксически верную программу. Вот результат:
не по названию, а по тексту внутри, то детектируемая стро-
ка записывается в третьем поле. Снова прекратим установ- // V2.64 to V3.0.100 (Version 1.0.6)
// Converted with AutoItV2toV3 [Version 1.0.6]
ку и проделаем те же операции, что и в предыдущем запус- // (C) Copyright 2004 J-Paul Mesnage.
ке. После остановки должен получиться результат, сходный // óñòàíîâèì ðåæèì äåòåêòèðîâàíèÿ ñêðûòîãî òåêñòà â îêíàõ
AutoItSetOption ( "WinTitleMatchMode", 2 )
с изображенным на рисунке. AutoItSetOption ( "WinDetectHiddenText", 1 )
// óáåðåì âñå îêíà ñ ýêðàíà
WinMinimizeAll ( )
// ïîäîæäåì ñåêóíäó
Sleep ( 1000 )
// çàïóñòèì óñòàíîâêó èç òîé æå äèðåêòîðèè
Run ( 'autoit-v3-setup.exe' )
// äîæäåìñÿ íóæíîãî îêíà è íàæìåì Next
WinWaitActive ( 'AutoIt v3.1.0 Setup' )
Send ( '{ENTER}' )
// àíàëîãè÷íî äîæäåìñÿ license agreement
WinWaitActive ( '', 'License Agreement' )
Send ( '{ENTER}' )
// îêíî ñ âûáîðîì ìåñòà óñòàíîâêè
WinWaitActive ( '', 'Choose Install Location' )
Send ( '{ENTER}' )
// çàâåðøåíèå óñòàíîâêè
WinWaitActive ( '', 'Click Finish to close' )
Send ( '{ENTER}' )
// âûâåäåì îêîøêî ñ ñîîáùåíèåì
$__msgbox = MsgBox ( 0, 'AutoIt', 'Setup done' )
// çàâåðøåíèå
Exit
АЛЕКСАНДР ШИБЕНКО
В многолетнем споре между приверженцами Linux1 и сто- Что же такое Windows 2000 Resource Kit? Это семь то-
ронниками Windows первые в качестве одного из аргумен- мов документации и установочный CD. После инсталляции
тов часто утверждают, что большинство задач по управле- пакета, а она необходима, если нужна его полная функцио-
нию производимыми компанией Microsoft ОС невозможно нальность3, на жестком диске появляется занимающий по-
выполнить без графического интерфейса, и администра- чти 60 Мб каталог C:\Program Files\Resource Kit. Он содер-
тор фактически становится его заложником. Что ж, доля жит электронные версии вышеупомянутых семи книг и еще
истины в этом есть, но целиком согласиться с ним можно, четырех справочников, руководство и документацию по ути-
только если забыть (или не знать) о том, что в дополнение литам, а также сами утилиты общим числом около трехсот.
к операционным системам «парни из Редмонда» уже дав- Выражаясь языком Хрюна Моржова: «Внушает»...
но выпускают Resource Kit2, включающие комплект отпеча- Описывать здесь каждую утилиту в отдельности не име-
танной документации и набор утилит. ет смысла. Имеющаяся документация достаточно подроб-
1
Именно Linux, т.к. по наблюдениям знатоки AIX, HP-UX, Solaris и других *nix-подобных систем редко тратят время на участие в подобных
дебатах.
2
Правда, за отдельную плату и с определенными лицензионными ограничениями.
3
Многие утилиты нормально работают и без инсталляции.
16
администрирование
на, кроме синтаксиса, хорошо структурирована, содержит желательно, а может, даже и необходимо использовать до-
еще и примеры. В зависимости от решаемых задач утили- полнительный инструментарий вроде Excel или Access.
ты в ней разделены на следующие основные группы: В завершение приведем примеры из реальной практи-
! Утилиты управления компьютером (computer manage- ки. Наверняка во многих организациях руководство спра-
ment tools). Сюда входят инструменты для работы с ре- шивает у системного администратора, кто из пользовате-
естром, для управления сервисами и процессами и для лей на каких принтерах и в каких количествах распечаты-
обработки журналов событий. вает документы. Для решения воспользуемся входящей в
! Утилиты для развервертывания системы (deployment группу диагностических средств утилитой dumpel, позво-
tools). Типичный представитель утилит этой группы – не- ляющей обрабатывать журналы событий:
безызвестная sysprep.exe.
! Диагностические средства (diagnostic tools). Это несколь- dumpel -f pr.txt -l system -m print -e 10
ко утилит по отображению информации о распределе-
нии так называемой «кучи»4, snmp-монитор, компилятор В данном случае из системного журнала (ключ -l system)
MIB и ряд других. выбираются события «печать» (ключ -m print) с кодом, соот-
! Утилиты для работы с файлами и дисками (file and disk ветствующим постановке задания в очередь печати (ключ -e
tools). Основные представители этой группы – разнооб- 10) и помещаются в текстовый файл pr.txt. Каждая строка
разные средства для копирования. файла соответствует одному заданию. Как видно, здесь при-
! Инструментарий для Internet Information Service (IIS tools). сутствует и имя пользователя, и название принтера, и коли-
Здесь можно найти сканер безопасности, стресс-тест чество напечатанных страниц (последнее число в строке).
для веб-сервера и предопределенные шаблоны безо- Наиболее простым способом получения требуемого отчета
пасности для его конфигурирования. мне представляется написание макроса в Excel. Приводить
! Утилиты управления сетью (network monitor tools). Боль- его здесь, пожалуй, не стоит. Для умеющего программиро-
шая часть утилит этой группы позволяет из командной вать человека сделать это не составит большого труда, а
строки управлять пользователями и группами и выпол- новичку подобную задачу вполне можно рекомендовать в
нять другие администраторские задачи на локальном и качестве имеющего прикладное значение практикума.
удаленном компьютерах. И еще один пример. Однажды возникла необходимость
! Утилиты оценки производительности (performance tools). после перезагрузки компьютера копировать на него с сер-
Их назначение понятно и без комментариев. вера некий каталог, в свою очередь, содержащий подката-
логи и файлы. Но необходимо было получить «зеркальную
Кроме этих, достаточно представительных групп, суще- копию» серверного каталога за исключением пустых подка-
ствует еще несколько, объединяющих всего по нескольку талогов. Для этого был написан следующий командный файл,
утилит: который вызывался штатным планировщиком задач по со-
! утилиты отладки (debugging tools); бытию «загрузка системы» от имени администратора:
! утилиты рабочего стола (desktop tools);
! утилиты для Internet Explorer (IE tools); @echo off
sleep 60
! инструментарий для сценариев (scripting tools); now.exe > c:\log\copy.log
! утилиты безопасности (security tools). net use m: \\server\backup /user:oper 123
if errorlevel 1 echo net use error >> c:\log\copy.log
robocopy.exe m:\daily\ d:\archive\ ↵
Многие утилиты позволяют получать информацию или /log:c:\log\rc.log /np /mir /s
if errorlevel 1 echo robocopy error >> c:\log\copy.log
выполнять какие-либо действия не только на локальном ком-
пьютере, но и при наличии соответствующих прав, на уда- Утилиты now.exe, sleep.exe и robocopy.exe входят в со-
ленном. Так, c помощью команды вида: став Resource Kit. Now.exe выдает в стандартный вывод те-
кущую дату и время. Sleep.exe нужна для того, чтобы под-
netsvc /list \\REMOTESERVER ключить каталог сервера после того, как запустятся все не-
обходимые службы и сервисы. Иначе команда net use мо-
можно получить список запущенных сервисов на компью- жет просто не выполниться. Ну а требуемую величину за-
тере REMOTESERVER, а команда: держки можно подобрать опытным путем. И наконец, зер-
кальное копирование (ключ /mir) с помощью robocopy.exe
shutdown \\REMOTESERVER /r содержимого каталога m:\daily\ в d:\archive\. При этом если
d:\archive\ содержит каталоги и файлы, не имеющие ана-
его перезагрузит. Даже этой информации достаточно для логов в m:\daily\, они будут удалены. Ключ /s запрещает
того, чтобы понять, какие возможности открываются перед копировать пустые каталоги, а /np подавляет вывод на эк-
системными администраторами и каким мощным потенци- ран информации о ходе копирования. Ключ /log:c:\log\rc.log,
алом обладают эти средства. Усилия, затраченные на их надеюсь, понятен без комментариев.
освоение, с лихвой окупятся за счет так любимой и цени- На самом деле robocopy.exe обладает широкими воз-
мой юниксоидами автоматизации многих рутинных задач. можностями, включая копирование разрешений NTFS, что
Правда, для полноценной обработки информации крайне может оказаться весьма полезным.
4
Куча – пул оперативной памяти, из которого программы ее запрашивают под динамические переменные.
ALT-N MDAEMON –
ПОЧТОВАЯ СИСТЕМА
ДЛЯ СРЕДНИХ И КРУПНЫХ
КОМПАНИЙ
РОМАН МАРКОВ
Alt-N MDaemon – почтовый сервер корпоративного уровня ! RelayFax – факс-сервер с возможностями OCR и под-
для ОС семейства Windows. Уже с первых версий данный держкой TWAIN. Входящие и исходящие факсы марш-
продукт пользовался заслуженной популярностью среди ад- рутизируются в соответствии с гибкими правилами и
министраторов Windows-систем, благодаря чему постоян- могут включать различные критерии, такие как OCR,
но совершенствовался и дополнялся новыми возможнос- Caller-ID или факс-аппарат.
тями. На сегодняшний день MDaemon – это SMTP/POP/IMAP
сервер с полным набором возможностей: защита от спама, Системные требования
безопасный доступ к почте через веб-интерфейс при помо- и первоначальная установка
щи обычного браузера, удаленное администрирование, а MDaemon не слишком требователен к ресурсам при мини-
также при установленном MDaemon AntiVirus защита вашей мальной нагрузке, однако при ее возрастании (увеличение
системы от почтовых вирусов. количества учетных записей, многочисленные правила сор-
MDaemon AntiVirus был разработан Alt-N совместно с тировки, большой поток писем) эти требования резко ме-
Kaspersky Labs для обеспечения хорошего уровня встроен- няются. Прежде всего необходимо обеспечить достаточно
ной защиты для пользователей MDaemon. Он перехватыва- большой объем оперативной памяти. Именно ее может не
ет, подвергает карантину, исправляет и/или удаляет любое хватить при большой нагрузке на почтовый сервер. Произ-
сообщение, в котором найден вирус. Большой набор гибких водитель (www.altn.com) указывает следующие минималь-
правил для Content Filter позволяет производить дополнитель- ные требования к оборудованию:
ный анализ, сортировку и обработку писем. Например, яв- ! Pentium III 500 МГц и выше.
ное запрещение вложений в виде исполняемых файлов по- ! 512 Мб RAM (рекомендуется 1 Гб).
зволяет максимально защититься от новых вирусов, сигна- ! Свободное место на диске для установки – 30 Мб + до-
туры которых еще не включены в антивирусную базу. полнительное место под хранение писем, а также log-
К сожалению, антивирусные продукты других произво- файлов.
дителей не анонсированы на официальном сайте Alt-N, что ! Microsoft Windows 95 OSR2/98/ME/XP/NT/2000/2003.
является минусом для администраторов, предпочитающих ! Winsock 2 (для старых версий ОС).
другие решения. Однако «прикрутить» к Mdaemon другой ! Internet Explorer 4.0 и выше.
антивирус все же можно, используя нетривиальные подхо-
ды. Например, правила сортировки с запуском сторонней К сожалению, на сайте производителя не указывается,
программы при поступлении письма, а также запуск про- для какой нагрузки необходимы именно такие требования.
граммы при наличии сообщений в очереди. Помимо этого Поэтому ниже приведены проверенные автором на практи-
можно использовать online-сканирование папок, в которых ке данные о необходимых ресурсах.
сохраняются временные файлы при получении письма, а Многолетний опыт использования почтового сервера
также папок пользователей. Причина отсутствия штатной MDaemon (начиная с версии 3.xx и до сегодняшней – 7.xx)
интеграции с другими антивирусами автору данной статьи, показал, что он идеально подходит для организаций любого
к сожалению, неизвестна. масштаба – от малого бизнеса до крупной компании. Поэто-
Помимо этого с MDaemon интегрируются следующие му использование этого продукта даже для сети из 5-10 ком-
продукты от Alt-N: пьютеров оправдано: гибкая система сортировки практичес-
! LDaemon – LDAPv3-сервер (Lightweight Directory Access ки по любым условиям и в зависимости от этих условий –
Protocol). С LDaemon ваши адресные книги путешеству- выполнение разнообразных действий (например, при нали-
ют вместе с вами. LDaemon скачивается отдельно и чии в письме вложения с «запароленным» архивом – отсечь
предлагается пользователям MDaemon бесплатно. вложение, отправить автоответ, запустить указанную про-
! MDaemon GroupWare – вместе с MDaemon Pro раскры- грамму, и изменив тему письма, доставить пользователю),
вает функции групповой работы Microsoft Outlook, ис- наличие веб-интерфейса и другие описанные выше возмож-
пользуя MDaemon в качестве серверной платформы. ности помогают сделать любую почтовую систему безопас-
Пользователи Outlook могут совместно использовать ной и удобной. Причем минимальные системные требова-
папки Календаря, Задач, Контактов, Заметок и Дневни- ния, указанные производителем, являются несколько завы-
ка без применения Microsoft Exchange Server. шенными применительно к объему оперативной памяти.
18
администрирование
Автор статьи использует в качестве почтового сервера на деле Features. Мы выбираем полный функционал – Run
базе MDaemon 7.xx компьютер с объемом оперативной па- MDaemon in «Advanced Mode». В следующем окне будет
мяти 256 Мб. При этом в системе функционирует около 200 предложено установить MDaemon в качестве системной
почтовых ящиков, встроенный антивирус, веб-интерфейс, службы. Устанавливаем флажок «Setup MDaemon as a
а также довольно много правил сортировки. Правда, одно- system service». Оставляем флажок «Start MDaemon» в пос-
временное использование всех возможностей, дополни- леднем окне мастера и выбираем «Finish». Сервер должен
тельных модулей, а также дальнейший рост количества запуститься. Если по каким-либо причинам этого не про-
пользователей как раз и увеличит этот лимит до 512 Мб. изошло при первоначальной установке, выберите из меню
Для установки почтового сервера рекомендуется ис- «Пуск → MDaemon» ярлык «Start MDaemon». Если вы ис-
пользовать ОС семейства Windows NT (Windows NT/2000/ пользуете не тестовую, а полноценную версию программы,
XP/2003), так как MDaemon, как и любое серверное прило- прежде всего необходимо активировать ваш программный
жение, лучше устанавливать в качестве системной служ- продукт. Делается это в меню «Help → Activate your
бы. Дистрибутив скачиваем с официального сайта: http:// software». Запустится мастер активации. Вам будет пред-
www.altn.com/download. ложено активировать автоматически через интернет или
В этой статье описывается установка и настройка анг- вручную, введя код активации. На этом установка завер-
лийской версии MDaemon. Существует локализованная сто- шена, и сервер готов к настройке.
ронней компанией русская версия (www.MDaemon.ru), од-
нако чаще всего системные администраторы не доверяют Начальная настройка почтового сервера
«нефирменным» локализациям, предпочитая оригинальные Настройка почтового сервера начинается с конфигуриро-
версии от производителя продукта. вания системных параметров. Не будем расписывать все
Если система будет масштабной и критичной к сбоям, опции каждого меню конфигурирования – это тема отдель-
выбираем качественный и надежный носитель, например, ного справочника. К тому же встроенная справочная сис-
RAID-1 из SCSI-дисков. В окне «Registration Information» вво- тема подробно и полностью описывает назначение каждой
дим имя приобретенной лицензии и имя компании, а также настройки (на английском языке). Опишем только те опции,
регистрационный ключ. Продукт имеет 30-дневный trial-пе- которые необходимо изменить либо проверить их значение.
риод, в течение которого его можно протестировать бес- Для настройки в качестве примера можно использовать при-
платно. После окончания срока работы пробной версии не- веденные скриншоты.
обходимо будет активировать продукт. Меню «Setup → Miscellaneous Options». На закладке GUI
Сразу после установки запустится мастер, при помощи задаем параметры запуска сервера MDaemon. Тут все ин-
которого можно ввести первоначальную информацию о по- дивидуально и зависит от личных предпочтений. Скажем
чтовой системе. В первом окне «What is your domain name» лишь, что полезно установить опцию «Start MDaemon…» в
введите имя своего домена (то, что находится справа от «In the system tray» и «Create Sessions…» в «In a hidden
символа @, не включая сам символ). Например, тестовый window». Первая при старте сворачивает MDaemon в сис-
домен: lagman.spb.ru. Здесь же можно кликнуть по ссылке темный трей, а вторая задает запуск активных сессий (от-
и воспользоваться услугами бесплатного сервиса по реги- правка и получение почты) в скрытом окне, которое не бу-
страции доменов «dns4you». Однако такой способ хорош дет мешать при просмотре логов и настроек. Параметр «Max
только для тестового режима. number of log lines…» задает количество строк, которое бу-
Для создания корпоративной почтовой системы реко- дет отображаться в окнах протоколирования сессий перед
мендуется зарегистрировать доменное имя, воспользовав- их затиранием. Обращаем внимание на то, что эти пара-
шись услугами провайдеров. В следующем окне «Please метры влияют только на количество отображаемых на эк-
Setup your first account» необходимо ввести первую учет- ране строк – размер лог-файлов задается в другом меню.
ную запись нашей почтовой системы, которой автомати- Раздел «Composite log windows contains» позволяет вклю-
чески будут делегированы полные права по конфигуриро- чить/отключить отображение требуемых окон протоколиро-
ванию домена, а также сопоставлен alias «Postmaster» как вания. То есть если мы не используем LDAP и IMAP – мож-
обязательный согласно требованиям RFC. Вводим имя, но смело отключить вывод этих окон (рис. 1).
предпочитаемый вами login (без символа @ и имени доме- На закладе Servers оставляем почти все, как есть. В поле
на – они будут автоматически добавлены при создании), а «POP/IMAP server always accept connections from IP» устанав-
также пароль. Помните, что пароль этой учетной записи дол- ливаем адрес локальной петли 127.0.0.1 или IP-адрес на-
жен быть сложным. Убедимся, что флажок «This account is шего сервера. Подключения с этого адреса будут возмож-
an administrator – full configuration access is granted» уста- ны всегда, независимо от параметров защиты MDaemon.
новлен и перейдем на следующую страницу мастера. В окне Если ваш сервер предоставляет POP3 доступ для клиен-
«Please Setup Your DNS» вводим адреса DNS-серверов, пре- тов с тонкими и нестабильными интернет-каналами, полез-
доставленных нам провайдером подключения к сети Ин- но установить флажок «POP DELE command immediately
тернет, либо других доступных DNS-серверов. Флажок «Use removes messages from mailbox». Тогда уже полученные
Windows DNS-settings» снимаем – такие настройки лучше клиентами сообщения будут удаляться немедленно и при
прописывать явно. обрыве связи получение продолжится с первого еще не
В следующем окне мастера выбираем режим, в кото- доставленного сообщения (в обычном режиме полученные
ром будет запускаться сервер – Easy или Advanced. Отли- сообщения удаляются только после завершения сессии
чия данных режимов описаны на сайте производителя в раз- POP3, и при обрыве связи доставка начинается с начала,
Ðèñóíîê 2
Ðèñóíîê 3
Флажок «Require strong passwords» предписывает исполь-
зовать только сложные пароли (не менее 6 символов, вклю-
чающие в себя буквы и цифры в разных регистрах, а также
не содержащие частей названия ящика) к ящикам для пре-
дотвращения возможности несанкционированного доступа.
Ðèñóíîê 1 Если вы будете предоставлять доступ к почтовому серверу
На следующем скриншоте видно, что сеанс был завер- извне – крайне рекомендуем использовать именно такие
шен принимающим сервером сразу после того, как обна- пароли, причем увеличить их длину до 8 символов. Мини-
ружилось несоответствие размера принимаемого письма мальная длина пароля задается в файле MDaemon.ini
и заданного на сервере ограничения (рис. 3). (MDaemon\Apps) → Секция [Special] → MinPassword
Следующие закладки до «Misc» пропускаем – для нашей Length=XX. Пароли для всех протоколов едины и задаются в
настройки они пока не нужны. На закладке «Misc» проверяем свойствах каждой учетной записи (либо, если используется
и устанавливаем флажки «Create ‘Everyone Lists’», «Create сквозная аутентификация в домене NT/AD, берутся из соот-
‘MasterEveryone’ Lists». В предыдущих версиях MDaemon дан- ветствующей БД).
ные опции были включены по умолчанию. Они создают спис- Флаг «Periodically check for new MDaemon updates» раз-
ки рассылки. Everyone@<domain> включает в себя все почто- решает серверу MDaemon самостоятельно проверять на-
вые адреса конкретного почтового домена (почтовых доме- личие обновлений на сайте производителя. В случае появ-
нов может быть несколько), а MasterEveryone@<domain> – аб- ления новой версии значок в трее будет мигать (рис. 4).
20
администрирование
вание старых файлов, возраст которых превысил количе-
ство дней, задаваемое в поле «Automatically ZIP and archive
log file older than ….. days». При этом следует помнить, что
данная опция действует, только если на предыдущей зак-
ладке выбрана опция «Create a standard set of log files».
На закладке Options отмечаем те службы, протокол ра-
боты которых необходимо записывать в log-файлы. Также
устанавливаем флажки «Always log to screen» и «Log session
in real time». Первая опция устанавливает одновременный
вывод протоколов, записываемых в log-файлы на экран, а
вторая – разрешает этот вывод в режиме реального вре-
мени, а не постфактум после осуществления операции. Это
полезно при анализе и устранении возможных ошибок.
Ðèñóíîê 4
Теперь настроим размер и расположение log-файлов.
По непонятной причине (ошибка разработчиков или сомни-
тельная задумка) независимо от пути установки MDaemon
создает на диске C: папку MDaemon и в ней подпапку Logs,
куда и записывается часть log-файлов. Сразу исправим эту
ошибку: остановим сервис MDaemon, откроем файл \Apps\
MDaemon.ini и заменим значение переменной LogFiles в
секции [Directories] на путь установки MDaemon. После это-
го перенесем все файлы из папки C:\MDaemon\Logs в пап-
ку установки, удалим с диска C: уже ненужный каталог и
снова запустим службу. Затем в окне «Setup → Logging»
настроим необходимые нам параметры.
На закладке «Log Mode» необходимо выбрать вид имен
log-файлов (стандартные или основанные на дате/дне неде- Ðèñóíîê 5
ли). Для общего комплексного анализа рекомендуется выс-
тавить «Create a standard set of log files». Если необходимо Настройка доменной почтовой системы
осуществлять поиск записей по дням – лучше воспользовать- Определимя со способом доставки почты. MDaemon – пол-
ся набором log-файлов с именами, основанными на днях нофункциональный почтовый сервер и имеет различные ме-
недели или дате. То же самое с опциями «Log detailed mail- ханизмы для получения почты, которые при необходимости
sessions» (записывать подробный протокол сессий) и «Log могут использоваться одновременно. Первый способ – на-
summarized mail sessions» (записывать краткий протокол сес- стройка MX-записи с наивысшим приоритетом в DNS-запи-
сий). Если необходимо будет анализировать возможные про- сях вашего домена на внешний IP-адрес сервера MDaemon.
блемы с отправкой/приемом писем по протоколу SMTP – Помните, что такой способ требует от вас внимательной на-
лучше записывать подробный протокол. Это может понадо- стройки безопасности почтового сервера. В противном слу-
биться при рассмотрении жалоб пользователей, связанных чае вы рискуете предоставить спамерам открытый relay, что
с функционированием системы доставки почты. Если log- неизбежно повлечет за собой жалобы вашему провайдеру,
файл служит только для краткого анализа успеха/неудачи а также создаст большой паразитный трафик.
(например, анализ системой подсчета трафика) – лучше Замечание. Если почтовый сервер, на который установ-
выбирать краткий формат файлов. Разумеется, что подроб- лен MDaemon, находится внутри локальной сети и выходит в
ное протоколирование требует гораздо большего дисково- Интернет, используя технологию NAT, необходимо органи-
го пространства. Опция «Log each service into separate log зовать проброс портов (Port-Map) с 25-го порта внешнего ин-
file» позволяет разделять протоколы различных служб терфейса сети на внутренний интерфейс почтового серве-
MDaemon по отдельным файлам, что, несомненно, удоб- ра. Также не забудьте прописать шлюз по умолчанию и DNS-
нее при поиске необходимой информации. сервера в свойствах TCP/IP-соединения по локальной сети.
Опции закладки «Maintenance» позволяют задать макси- Второй способ – это создание провайдером доменного
мальный размер log-файлов, а также настроить архивиро- почтового ящика, в который будут доставляться абсолют-
22
администрирование
чения составляют некорректные переносы зон их держате- only. При этом создаваемые нами учетные записи пользова-
лями, однако это редкое исключение из правил). телей уникальны и принадлежат только конкретному доме-
Раздел «Timers» предоставляет возможность изменить ну. То есть при создании новой учетной записи через Account
величины тайм-аутов на различные события при соединении. Manager в системе с несколькими доменами нам необходи-
На закладке «Sessions» рекомендуется настроить пре- мо ввести его Login, а также указать, к какому домену он
дельное количество одновременных сессий различных ти- принадлежит, выбрав из выпадающего списка требуемый.
пов. При медленной исходящей скорости канала рекомен- При импорте пользователей из базы NT/AD необходимо выб-
дуется установить величину «Maximum concurrent SMTP рать, в какой домен будут внесены записи. Если необходи-
outbound sessions» значением не более 2-4. В любом слу- мо, чтобы один пользователь получал почту с разных доме-
чае даже при наличии быстрого канала не стоит злоупот- нов, необходимо создать соответствующие алиасы.
реблять этим параметром. Приемлемая величина этой пе- Если почтовый сервер будет забирать почту у провайде-
ременной для быстрых каналов (512 kbit/s и более) – 10-20. ра по протоколу POP3 c доменного почтового ящика, то пос-
Параметр «Maximum concurrent SMTP inbound sessions» ледним шагом первоначальной настройки MDaemon будет
влияет на максимальное количество одновременно входящих указание свойств этого ящика (их может быть несколько).
сессий по протоколу SMTP. В случае превышения заданной Меню «Setup → DomainPOP». На закладке Account устанав-
величины клиенты получат сообщение «Server too busy». ливаем переключатель «Enable DomainPOP mail collection
Закладка «Unknown mail» позволяет указать на действие, engine» и вводим адрес POP3-сервера, имя и пароль для
которое необходимо производить с письмами, адресат кото- доступа. Если ящиков, с которых будет доставляться почта,
рых не опознан. Подразумевается, что доменный адрес в до- несколько (например, при наличии нескольких почтовых до-
ставленном письме соответствует обслуживаемым доменам менов), то можно задать параметры остальных ящиков, на-
MDaemon, однако такого пользователя в системе не существу- жав «Extra hosts» и отредактировав текстовый конфигура-
ет. Имеется возможность возвращать письмо отправителю ционный файл по указанному в нем же шаблону. После при-
с комментарием «No such user», а также отправлять копию нятия изменений MDaemon будет собирать почту с указан-
такого письма администратору почтового сервера (копия от- ных ящиков согласно расписанию, созданному нами в меню
правляется как вложение). Возврат письма отправителю воз- «Event Scheduling». Можно задать дополнительные парамет-
можен только при получении почты по протоколу SMTP. ры, например, оставлять письма на сервере – «Leave a copy
На закладке «Pruning» задаются образцы доменных of message on host server», не скачивать (и при необходимо-
квот. Здесь рекомендуется задать значения, отличные от сти удалять прямо с сервера) письма, размер которых боль-
0, так как в противном случае редко проверяемые ящики, ше, чем указанная величина, – «Don’t download messages
на которые приходит большое количество писем, будут за- larger than [XX] KB (0 = no limit)». При медленном входящем
нимать много места на диске. Это же замечание относится канале полезно установить опцию «Download messages
к ящикам пользователей, которые бездумно устанавлива- according to size (small messages first)». В этом случае сооб-
ют в свойствах почтового клиента опцию «Оставлять пись- щения будут скачиваться согласно их размеру – меньшие по
ма на сервере», не указывая максимальный срок их хране- размеру в первую очередь. Это позволит большому количе-
ния. Разумные сроки удаления неактивных учетных запи- ству малых по размеру сообщений быть полученными быст-
сей и устаревших писем для каждой организации свои. рее, не заставляя многих получателей страдать из-за одно-
Просто рекомендуем не забывать про наличие этого раз- го пользователя, которому было послано многомегабайтное
дела. Письма в Mdaemon хранятся для каждого ящика от- письмо. На закладке «Foreign mail» обязательно установите
дельно, в папке Users. Каждое письмо представляет собой опцию «Do not deliver mail addressed to non-local addresses».
отдельный файл с расширением *.msg. При парсинге полученных сообщений в поле TO: могут по-
Раздел «Archival» позволяет отправлять копию абсолют- падаться другие, нелокальные для вас адреса. Данная оп-
но всех входящих и исходящих писем указанным пользова- ция запретит пересылать такие письма указанным адреса-
телям (адреса разделяются запятой), а также архивировать там. Она наиболее безопасна с точки зрения защиты от не-
их в общую IMAP-папку, доступ к которой по умолчанию санкционированной рассылки с использованием вашего по-
имеет только Postmaster. Данная опция применяется для чтового сервера.
контроля службой безопасности любой проходящей через
ваш почтовый сервер информации. Заведение учетных записей
«Dequeue» – данная закладка служит для настройки по- пользователей
лучения почты от провайдера по ETRN. Укажите здесь ад- Управление учетными записями производится при помощи
рес, по которому ваш сервер должен посылать сигнал о на- меню Accounts. MDaemon поддерживает импорт учетных за-
чале сеанса доставки вам почты по протоколу SMTP со сто- писей пользователей из домена NT/Active Directory и сквоз-
роны провайдера. ную аутентификацию пользователей. Для этого выбираем
Если у нас несколько почтовых доменов, то необходимо из меню Accounts – Importing опцию «Import accounts from the
их сконфигурировать. Заходим в Setup – Secondary Domains, NT SAM database». Если имя домена NT/AD не совпадает с
указываем имя для вторичного домена, в поле Ip Address созданным нами, то в открывшемся окне указываем домен,
указываем IP адрес для этого домена. Если подключение к из которого будет производиться импорт, а также имя сер-
вторичному почтовому домену будет осуществляться с ис- вера, если оно не было найдено автоматически, и нажима-
пользованием IP адреса, не совпадающего с IP адресом пер- ем кнопку Refresh. Если учетные записи для импорта не по-
вичного домена, необходимо указать Bind sockets to this IP явились (либо появились далеко не все – например, только
24
администрирование
ДЕНИС ГОРОДЕЦКИЙ
Ответив на простой вопрос: «Сколько ненужных писем было Все правила и профили уже предустановлены, на этом
удалено из почтового ящика?», вы легко можете рассчи- мы остановимся чуть позже, но подробно описывать каж-
тать, какие объемы занимает трафик, создаваемый ненуж- дое из них мы не будем, т.к. эта тема отдельной статьи. Вы
ной почтой. Спамеры забрасывают нас рекламой в таком можете сами понять, что необходимо, а что вы не будете
количестве, что при чистке своего ящика удалить «полез- использовать, после того как ответите на несколько вопро-
ное письмо» можно, даже не заметив его среди мусора. сов: какая информация нужна, а какая нет, критично ли по-
Способов борьбы с этими преступниками довольно мно- терять «полезное письмо», можно ли пропустить несколь-
го. Рассматривать все сразу в одной статье смысла особо- ко «ненужных» писем и т. п.
го не имеет, разве что в виде краткого обзора. Что нужно, чтобы KAS смог работать:
Предлагаю остановиться на рассмотрении следующей ! Операционная система Linux или FreeBSD 4.х, 5.х (тес-
схемы: Kaspersky Anti-Spam (KAS) + Sendmail. тирование проходило на Red Hat 9.0).
Первое, что мне поручили, когда я пришел на новое мес- ! Процессор Intel Pentium III с частотой не менее 500 МГц.
то работы, – это борьба со спамом. Читая документацию и ! Оперативная память не менее 256 Mб.
разбираясь в конфигурации, был приятно удивлен тем, что ! Наличие установленных программ wget, bzip2.
разработчики данного продукта на славу потрудились, до ! Наличие одной из почтовых систем: Sendmail, Postfix,
того как представить его для повсеместного использования. Exim, Qmail, Communigate Pro.
Итак, что такое KAS 2.0 и каковы принципы его работы.
Как и большинство ныне действующих фильтров, KAS Замечание. Перед установкой я всегда рекомендую де-
фильтрует почтовое сообщение в процессе приема, т.е до лать резервные копии тех конфигурационных файлов, ко-
того как письмо попадет в почтовый ящик пользователя. KAS торые будут затронуты, в данном случае это файлы с на-
обрабатывает сообщение и, руководствуясь правилами и стройками вашего почтового агента.
действиями, установленными администратором, может: Внедрение продукта не требует особенных знаний и
! доставлять получателю в неизменном виде; навыков, т.к. все делается при помощи входящих в пакет
! блокировать получение; инсталляторов, начиная от установки программ из состава
! генерировать сообщение о невозможности приема пись- KAS и заканчивая интеграцией в почтовую систему.
ма;
! добавлять или изменять заголовок. # rpm -i <èìÿ ïàêåòà>
26
администрирование
Сделать активным профиль можно редактируя файл: </Rule>
...
# /usr/local/ap-mailfilter/conf/src/profiles.xml
</Profile>
<?xml version="1.0" encoding="koi8-r"?>
<Profiles> Теперь пришло время остановиться на файле blacklist_
<Common>
<ProfileRef active="no" file="detect-standard.xml" ↵ ip.xml. Выглядит он примерно вот так:
name="Spam Detection Standard"/>
<ProfileRef active="yes" ↵ <?xml version="1.0" encoding="koi8-r"?>
file="detect-standard-no-rbl.xml" ↵ <IPList description="This list contains ip-addresses
name="Spam Detection Standard (no RBL & ↵
DNS check)"/> of spam senders relays. Must be filled up by user."
name="Spam Senders' Relays">
<ProfileRef active="no" file="detect-soft.xml" ↵ <IP mask="0.0.0.0"/>
name="Spam Detection Soft"/>
<ProfileRef active="no" file="detect-soft-no-rbl.xml" ↵ <IP mask="212.185.0.0/16"/>
<IP mask="66.112.0.0/17"/>
name="Spam Detection Soft (no RBL & ↵ <IP mask="62.84.0.0/16"/>
DNS check)"/>
<ProfileRef active="no" file="detect-hard.xml" ↵ ...
name="Spam Detection Hard"/>
<ProfileRef active="no" file="detect-hard-no-rbl.xml" ↵
name="Spam Detection Hard (no RBL & ↵ <IP mask="141.156.192.0/18/>
<IP mask="24.239.0.0/16/>
DNS check)"/>
<ProfileRef active="yes" file="syslog.xml" ↵
name="Logging"/> </IPList>
</Common>
<Personal> Значение атрибута mask может быть указано в двух
<ProfileRef active="yes" file="rcpt-root.xml" ↵
name="root: No Filtering"/> форматах: aaa.bbb.ccc.ddd/nn или aaa.bbb.ccc.ddd (равно-
<ProfileRef active="no" file="do-mark-subject.xml" ↵ значно aaa.bbb.ccc.ddd/32).
name="Marking Spam - Subject"/>
<ProfileRef active="no" file="do-mark-keywords.xml" ↵ Поддерживая его в актуальном состоянии, вы можете
name="Marking Spam - Keywords"/> быть уверенными, что 95% тех писем, которые нам не же-
<ProfileRef active="yes" file="do-archive.xml" ↵
name="Archiving Spam"/> лательно получать, будут распознаваться, и дальнейшая их
<ProfileRef active="no" ↵ судьба будет определена в соответствии с вашими поже-
file="do-archive-or-reject.xml" ↵
name="Archiving/Rejecting Spam"/> ланиями.
</Personal> В итоге, приложив немного усилий, поэкспериментиро-
</Profiles>
вав с профилями и правилами, получаем эффективный
На выходе данного этапа в письмо добавляются следу- антиспамный фильтр.
ющие специальные заголовки: По сравнению с решением на основе SpamAssasin по-
! X-SpamTest-Categories – заголовок, содержащий инфор- нравились следующие удобные особенности KAS:
мацию о том, какие контентные категории были присво- ! простая установка и интеграция в почтовую систему;
ены письму по результатам фильтрации. ! легкая и гибкая конфигурация;
! X-SpamTest-Status – заголовок, указывающий на окон- ! возможность применять персональные профили к от-
чательный статус письма по результатам всех прове- дельным пользователям или группам;
рок: SPAM, Probable Spam, Trusted или Not detected. ! отсутствие балловой оценки (хотя кому-то это покажет-
Данный заголовок используется при последующей об- ся не плюсом, а минусом, поскольку не позволит прово-
работке письма персональными профилями. Он может дить тонких граней в оценке письма);
также использоваться для обработки письма почтовым ! меньшая загрузка системы.
клиентом получателя.
Единственное чего, как мне кажется, не хватает – от-
Как мы видим, из персональных профилей активиро- сутствие возможности самобучения распознавания спама,
ван тот, который пересылает спамные письма в выделен- которое позволило бы администратору более гибко исполь-
ный почтовый ящик (пока это сделано в целях получения зовать фильтрацию. Фильтр, конечно, позволяет добавлять
статистической информации, в дальнейшем планируется образцы спамерских писем в базу, кроме того, он ее сам
применить «Archiving/Rejecting Spam»). регулярно обновляет, но поскольку спамеры постоянно са-
В примере конфигурационного файла активного персо- мосовершенствуются, то и стиль написания меняется, и как
нального профиля приводим лишь ту часть, которая пре- следствие, некоторые письма все равно просачиваются и
терпела изменения. обычно это не одно, а сразу несколько одинаковых писем.
Вот поэтому считаю необходимым добавить следущее свой-
... ство – фильтр отслеживает повторяющиеся письма и при
<Rule> достижении определенного количества самостоятельно
<Conditions> добавляет их в базу. Так же дело обстоит и с IP-адресами
<HeaderMatch header="X-SpamTest-Status" ↵
regexp="SPAM" /> сервера отправителя, поскольку хакерами ежедневно взла-
</Conditions> мывается несколько новых, через которые идет рассылка,
<Actions>
# íåîáõîäèìî çàìåíèòü àäðåñ íà ðåàëüíî ñóùåñòâóþùèé и они не успевают попадать в black-листы и обновления.
<DoRcptReplaceAll new="spam@domain.ru" /> Особую благодарность хочу выразить Таранову Алек-
<!-- Must be changed to a real address -->
<DoAccept /> сандру, ведущему инженеру ЗАО «Телепорт-ТП», за содей-
</Actions> ствие и интеллектуальную поддержку при написании статьи.
МИХАИЛ ПЛАТОВ
Вы когда-нибудь слушали интернет-радио? Смотрели люби- ними с другой стороны, скорее всего, приведут иную клас-
мые телепередачи через спутник или Интернет? Или, быть сификацию – по способу доставки медиаданных:
может, работали с системой видеонаблюдения через сеть? ! системы с одноадресным вещанием (unicast);
Если ответ на любой из этих вопросов положительный, мо- ! системы с многоадресным вещанием (broadcast, multi-
жете смело причислять себя к пользователям систем ве- cast).
щания! Впрочем, даже если вышеприведенные вещи вам
не знакомы, не расстраиваетесь, потому что после прочте- Для того чтобы понять, в чем заключаются плюсы и ми-
ния этой статьи вы не только узнаете, что это такое и как нусы каждого из способов, давайте более пристально по-
оно работает, но и получите представление о том, что про- смотрим на процесс передачи данных. В случае одноадрес-
исходит «по ту сторону кулис», а именно – о создании сис- ного вещания данные передаются в рамках установленно-
тем вещания. Предметом нашего изучения будет один из го TCP-соединения. Соответственно для каждого клиента,
наиболее популярных продуктов организации систем ме- подключающегося к нашему серверу, будет создан соб-
диавещания – Microsoft Windows Media Services 9. ственный «канал», по которому клиент получит запраши-
ваемую информацию. На первый взгляд никаких подвод-
Теоретическое отступление ных камней здесь нет, ведь этот же принцип лежит в осно-
А каким оно вообще бывает, это «вещание»? Человек, ко- ве большинства служб Интернета, однако с увеличением
торый работал с системами вещания на уровне пользова- количества одновременно обслуживаемых клиентов начи-
теля, скажет «аудио и видео», люди, которые общались с нает проявляться проблема, казавшаяся ранее несуще-
28
администрирование
ственной. Давайте рассмотрим простой пример: пусть у нас пространять медиаданные в форматах MPEG4 и 3GPP (од-
есть один аудиопоток с битрейтом 64 Кбит, который необ- нако, по моим субъективным впечатлениям, функциональ-
ходимо доставлять 100 клиентам одновременно. Для реше- ность Darwin Streaming Server сильно уступает ближайшим
ния этой задачи с использованием режима unicast нам по- конкурентам от Microsoft и Real Networks).
требуется канал с пропускной способностью 6,4 Мбит1! Среди систем аудиовещания хотелось бы упомянуть
Во втором подходе данная проблема отсутствует, так как NullSoft ShoutCast (продукт, созданный авторами Winamp) и
при использовании многоадресного вещания сервер пере- Open Source-проекты iceCast [2] и SlimServer [3], описание
дает данные либо сразу на всю подсеть (режим broadcast), настройки которой можно найти в [4]. На этом позвольте за-
либо на определенную группу многоадресной рассылки (multi- кончить теоретическое отступление и перейти к описанию
cast group, адрес сети класса D стандарта 802.3 Ethernet). нашего сегодняшнего героя – Windows Media Services 9.
Соответственно в нашем примере для передачи потока 64
Кбит от сервера требуется возможность обеспечить канал Так вот он какой, серверный олень!
именно в 64 Кбит, независимо от количества подключен- Windows Media Services (WMS) – это программный продукт,
ных в данный момент клиентов (0 или 10000). Минусом же разработанный и распространяемый корпорацией Microsoft
является то, что сетевая инфраструктура, используемая для как средство для организации вещания аудио- и видеоин-
передачи вещаемых данных, должна быть соответствую- формации в локальных сетях, Интернете и беспроводных
щим образом сконфигурирована для передачи multicast – сетях. Данный продукт представляет собой набор компо-
трафика2. Как правило, это легко достижимо в корпоратив- нентов, работающих под управлением различных версий
ных сетях и с трудом реализуемо в масштабах современ- операционных систем семейства Windows. Помимо средств,
ного Интернета (представьте себе dial-up-пользователя, ко- позволяющих быстро и просто организовывать различные
торый вынужден принимать multicast-поток от радиостан- виды вещания аудио- и видеоинформации, в состав WMS
ции провайдера при каждом соединении). Поэтому истори- также входят компоненты, обеспечивающие тесную интег-
чески сложилась следующая ситуация: рацию с Active Directory и IIS, средства оценки и контроля
! multicast используется в корпоративных сетях, при орга- производительности сервера, а также инструменты сбора
низации «вещания» для большого количества клиентов, статистики об общей работе служб. Серверная часть WMS
получающих один и тот же неинтерактивный контент (ин- является частью ОС Windows 2000 Server и Windows Server
тернет-радио, IP-телевидение, видеоконференции с 20033. Клиентская же часть доступна практически для всех
большим числом «зрителей»); ОС от Microsoft (от Windows 9х до Windows Mobile 2005. Кро-
! unicast же используется при передаче в Интернете, а так- ме того, поддержка видео в формате Windows Media при-
же для организации дополнительных сервисов, персо- сутствует в двух наиболее популярных проигрывателях для
нифицированных с конкретным абонентом (Video on Linux – xine [5] и mplayer [6].
Demand, Time Shift, и другие сервисы, при которых кли- Спектр применения Windows Media Services достаточно
ент может «управлять» передаваемым ему потоком). широк. На их основе может быть организована как неболь-
шая интернет-радиостанция с небольшим (менее ста) ко-
А как же обстоит дело с реальными продуктами? Если личеством обслуживаемых одновременно пользователей,
рассматривать системы коммерческого видеовещания, то так и крупный медиапортал в Интернет, ежедневно обслу-
безусловными лидерами здесь являются компании Microsoft живающий десятки тысяч посетителей. Секрет этой гибко-
c продуктом Windows Media Services 9 (вещание в формате сти кроется в структуре самой системы:
wma и wmv) и Real Media с системой вещания Helix Server
(в самой функциональной редакции поддерживает веща-
ние в 55 различных форматах). Оба решения поддержива-
ют вещание как аудио, так и видеоданных, нацелены на один
сектор рынка и архитектурно очень похожи.
Из «открытых» решений хотелось бы упомянуть о про-
екте VideoLAN [1], первоначально ориентированном на орга-
низации вещания спутниковых DVB-каналов в локальную
сеть. На данный момент поддерживается гораздо большее
число видов источников, все широкоиспользуемые форма-
ты видеоданных (MPEG1, MPEG2, MPEG4, divx) и большин-
ство распространенных кодеков.
Для поклонников Macintosh и формата QuickTime суще-
ствует продукт QuickTime Streaming Server 5 (входит в со-
став Mac OS X Server) и его «открытый» брат Darwin Streaming
Server (доступный в том числе и для x86), позволяющие рас- Ðèñóíîê 1
1
В случае видеовещания требуемая пропускная способность потребуется еще больше.
2
Для передачи в нескольких сетях требуется настройка маршрутизаторов. Если же локальная сеть построена на неуправляемых свитчах и
хабах (без маршрутизаторов), то и настраивать ничего не придется.
3
Кроме Windows Server 2003 Web Edition.
4
Для поддержки multicast-вещания нам понадобится Enterprise или Datacenter редакция ОС Windows Server 2003.
5
Например, «очередь к окошку кассы в период зарплаты», хроники событий в местном буфете или просто «панорама города» или автосто-
янка перед офисом.
6
Для простоты будем считать, что у нас есть набор AVI-файлов, выбор их содержимого пусть будет за вами.
30
администрирование
! Точки для «загрузки по требованию». Представляют со- ранения (режим push)9. Выбор того или иного режима оп-
бой инструмент для организации централизованных хра- ределяется характером кодируемых данных. Так, если ко-
нилищ медиаданных. Преимуществами таких хранилищ дировщик работает постоянно (24/7), то имеет смысл ис-
являются централизованный доступ к размещаемым ме- пользовать более легкий в настройке режим pull. Если же
диаресурсам 7, возможность создания динамических кодируемые данные носят периодический характер (не-
play-листов с навигацией (остановка, пауза, переход к сколько часов в день), то лучше использовать режим push.
следующему файлу и т. д.) между ними8, легкая интег- В нашем случае можно использовать режим pull для рет-
рация с различными веб-приложениями, возможность рансляции TV-канала, и режим push для веб-камер.
контроля доступа к каждому ресурсу и т. д. Работа с
такими точками распространения сильно персонифици-
рована, поэтому для передачи данных может использо-
ваться только режим unicast. В нашем примере мы бу-
дем использовать on-demand точки распространения для
создания маленькой корпоративной видеотеки;
! Точки для «вещания». При использовании точек распро-
странения этого типа возможна организация потоково-
го аудио- и видеовещания (без возможностей останов-
ки, пауз, перемотки и т. д.). В качестве способа дос-
тавки видеоданных может использоваться как unicast,
так и multicast. Именно этот тип точек распростране-
ния будет основным при реализации описанных выше
задач.
7
При этом сами ресурсы физически могут находиться на различных компьютерах.
8
Например, тематическая инструкция, разбитая на главы с возможностью перехода между ними.
9
Вообще говоря, в оснастке WMS мы не можем создать работающую push-точку вещания (это может сделать только кодировщик). Все, что
мы можем сделать – шаблон, который будет использован кодировщиком при создании точки на сервере.
Ðèñóíîê 6
С помощью соответствующих кнопок «Configure» на-
страиваем параметры TV-тюнера11 и звуковой карты. На-
жимаем «Next» и переходим к следующему окну. Здесь мы
выбираем режим доставки закодированного потока до сер-
Ðèñóíîê 4 вера (pull или push). Выберем pull с портом 2187 и перейдем
к следующему шагу – настройке кодеков. Из списка предоп-
ределенных шаблонов выберем Live broadcast video и CD
Quality Audio для видео и звукового потока соответственно.
Разрешение и битрейт оставим по умолчанию – 320x240 и
323 Кбит. Для всех остальных шагов оставим стандартные
значения. После завершения мастера кодирования мы уви-
дим следующее сообщение:
Ðèñóíîê 7
Вообще говоря, для того чтобы «вещать», не обязатель-
Ðèñóíîê 5 но использовать сервер Windows Media. Можно настроить
Первым делом нам нужно установить кодировщик кодировщик на работу в режиме pull и подключать к нему
Windows Media Encoder 9. Для этого идем на сайт http:// клиентов напрямую. Однако в этом случае о таких вещах
www.microsoft.com, вводим в поле поиска «Windows Media как «отслеживание обращений»,«ограничение пропускной
Encoder 9 download» и неспешно загружаем 10-мегабайт- способности», «аутентификация с Active Directory», «под-
ный исполняемый файл. После установки и запуска соот- держка multicast» и других возможностях сервера придет-
ветствующего ярлыка нас поприветствует очередной мас- ся забыть. Единственное, что будет нам доступно – возмож-
тер настройки. Мы собираемся настраивать более чем «жи- ность запрета/разрешения доступа к потоку кодировщика
10
И хотя технически возможно размещение сервера вещания и кодировщика на одной машине, делать этого не рекомендуется. Дело в том,
что процесс real-time кодирования является достаточно ресурсоемким (так, при реализации описанного ниже примера средняя загрузка
процессора Celeron 2.0GHz составляла 50%), что может создать проблемы для других приложений, работающих на машине с кодировщи-
ком.
11
При настройке TV-тюнера удобно использовать следующий прием. Предварительно, перед запуском кодировщика, с помощью идущей в
комплекте с тюнером программы определяем номер нужного канала и его цветовое представление (PAL или SECAM). Полученные цифры
вводим в свойствах драйвера после нажатии кнопки «Configure».
32
администрирование
для конкретных IP-адресов через диалог «Broadcast security» казываться картинка с TV-тюнера. Также можно протести-
из меню «Tools». Причем даже в нашем случае не лишним ровать веб-страницу (рис. 10).
будет разрешить доступ к кодировщику только со стороны
сервера Windows Media. Итак, после успешного заверше-
ния мастера перед нами предстанет картинка с TV-тюнера:
Ðèñóíîê 9
Ðèñóíîê 8
Далее нажмем на кнопку «Start Encoding» и перейдем к
настройке сервера. На сервере нам нужно создать broadcast
точку распространения с источником Encoder (Pull). В поле
«Location of content» нужно ввести имя машины, на кото-
рой работает кодировщик в формате: http://ip_адрес:номер_
порта. Точка вещания создана, и теперь нужно отредакти-
ровать некоторые ее свойства. Для этого перейдем на зак-
ладку «Properties». В первую очередь нам нужно включить
«WMS Multicast Data Writer» из раздела «Multicast Streaming»
(там же указать адрес multicast группы и сетевой интерфейс,
с которого будет производиться рассылка). При необходи-
мости для данной точки распространения в разделе «Limits»
можно задать ограничения на количество одновременно ра-
ботающих клиентов и отводимой им пропускной способно-
сти. Наигравшись вдоволь с настройками, перейдем к сле- Ðèñóíîê 10
дующему шагу – созданию анонса для multicast точки рас- В следующей статье мы продолжим изучение Windows Media
пространения. Для этого перейдем на уже знакомую нам Services 9 и подробно рассмотрим следующие моменты: на-
закладку «Announce» и нажмем на кнопку «Run Multicast стройка параметров авторизации и аутентификации клиен-
Announcement Wizard». На первом шаге мастера отметим тов, использование push-режима для кодировщика, unicast
пункт «Automaticaly create a web page», затем в окне «Stream rollover, архивирование передаваемых данных, а также по-
Formats» добавим источник-кодировщик, точно так же, как смотрим, как можно использовать программные интерфей-
и при создании точки распространения (рис. 9). сы Windows Media Encoder 9 в собственных приложениях.
В диалоге «Save Multicast Announcement Files» выберем
место сохранения файлов (внутри webroot веб-сервера) и Литература, ссылки:
перейдем к следующему шагу – диалогу выбора способа 1. http://videolan.org.
доступа к точке вещания. В нашем варианте мы будем об- 2. http://www.icecast.org.
ращаться к файлам через веб-сервер, поэтому выберем 3. http://www.slimdevices.com/su_downloads.html.
первый вариант, дополнительно удостоверившись, что имя 4. Яремчук С. Лейся песня или сервер потокового аудио
сервера совпадает с тем, по которому будут обращаться своими руками. – Журнал «Системный администратор»,
пользователи. Для остальных вопросов используем стан- №11, ноябрь 2004 г. – 28-31 с.
дартные ответы, в заключительном окне отметим пункты, 5. http://xinehq.de/index.php/features.
отвечающие за активацию точки распространения и ее те- 6. http://mplayerplug-in.sourceforge.net.
стирование. Если все было сделано правильно, то, как и в 7. Гребенников Р. Танцуем Самбу. – Журнал «Системный
первом случае, при нажатии кнопки «Test» напротив «Test администратор», №11, ноябрь 2004 г. – 32-38 c.
announcement» запустится Media Player, в котором будет по- 8. http://www.iulabs.com/download/848wdm_iu.zip.
ВАЛЕНТИН СИНИЦЫН
Рассмотрим типичную для небольшой организации конст- роены по принципу: общая база + провайдеры. Мы не раз
рукцию – шлюз в Интернет, работающий под управлением убедимся в этом по ходу изложения. Итак, приступим к пер-
UNIX или Microsoft Windows, прокси-сервер, веб-сервер сети вой фазе.
Интранет, почтовый сервер и т. д. Оказывается, число ее
элементов можно несколько сократить, и в соответствии с Запуск прокси-сервера
золотым правилом инженера увеличить тем самым общую Для того чтобы Apache мог принимать и обрабатывать про-
надежность системы. Сегодня мы поговорим о делегиро- кси-запросы, необходимо загрузить модуль mod_proxy, вхо-
вании Apache основных функций кэширующего прокси-сер- дящий в стандартный комплект поставки и прекрасно до-
вера (например, Squid) и даже кое-чего сверх них. В каче- кументированный. Здесь и далее в этой статье мы не бу-
стве базовой ОС будем использовать Linux, хотя многое из дем дублировать страницы руководства, останавливаясь
сказанного ниже может быть без ограничения общности лишь на нетривиальных моментах. Mod_proxy, как и боль-
применено и для других платформ. шая часть других упомянутых в статье модулей, обычно не
Согласен, использование Apache в качестве прокси-сер- собирается в стандартной конфигурации Apache, поэтому
вера выглядит несколько нестандартно, однако, оно имеет вам, вероятно, придется заново скомпилировать сервер,
ряд преимуществ. Это, в первую очередь, возможность ди- указав соответствующие параметры сценарию configure. За
намического сжатия документов, отправляемых клиентам, поддержку mod_proxy отвечает опция «--enable-proxy», про-
что может вылиться в серьезную экономию, если для пере- чие же параметры я буду приводить в тексте в скобках пос-
дачи данных используется арендованный канал с помега- ле имени соответствующего модуля.
байтной оплатой входящего трафика (допустим, офисов у В соответствии с представленной выше формулой, mod_
фирмы два, а сервер всего один). Кроме того, оно сокра- proxy образует фундамент, на котором работает система
щает число сервисов, работающих в системе, а значит, у поддержки прокси-запросов. Их реализации, специфичные
потенциального злоумышленника будет меньше мишеней для различных протоколов, вынесены в отдельные модули:
для проведения атаки, а у администратора в свою очередь mod_proxy_http (--enable-proxy-http), mod_proxy_ftp (--enable-
меньше объектов, требующих неусыпного наблюдения и proxy-ftp) и mod_proxy_connect (--enable-proxy-connect). Пос-
поддержки. Впрочем, как и все в нашем неидеальном мире, ледний из них необходим для работы с запросами HTTP
Apache в роли прокси-сервера имеет и некоторые недостат- CONNECT, в частности, защищенными SSL-соединениями.
ки, как то: содержит экспериментальные или написанные Прежде чем говорить о настройке mod_proxy, сделаем
сторонними разработчиками модули (при желании можно пару замечаний. Первое – Apache поддерживает два типа
обойтись и без них) и неизвестным образом ведет себя при прокси-серверов: прямые (forwarding proxy) и обратные
увеличении нагрузки (вполне допускаю, что все будет пре- (reverse proxy). Нас будут интересовать исключительно пря-
красно работать, однако, специализированного стресс-те- мые прокси-сервера, т.е. промежуточные сервисы, переда-
стирования не проводил). Какая чаша перевесит – решать ющие запросы от нашего локального клиента к удаленно-
вам. Руководствуясь личным опытом, я вполне могу реко- му (чужому) серверу. Обратные прокси действуют с точно-
мендовать применение прокси-сервера на базе Apache в стью до наоборот, т.е. передают запросы от удаленного (чу-
небольших сетях. жого) клиента локальному веб-серверу и применяются в
Покончив с теоретическими вопросами, перейдем к тех- основном для балансировки нагрузки. Второе – прокси-зап-
ническим деталям. Для реализации задуманного нам по- рос не является для Apache чем-то чужеродным. Заглянув
надобится Apache версии 2.0.53 и выше1 с включенными в исходные тексты сервера, вы обнаружите, что все клиен-
mod_proxy, mod_cache и mod_deflate. В отличие от специа- тские запросы, независимо от того, кому они адресованы,
лизированных решений вроде упомянутого выше Squid, описываются одной и той же структурой. Apache помечает
прокси-сервер на базе Apache имеет модульную архитек- запросы, предназначенные другим серверам, специальным
туру, все мыслимые и немыслимые функции которой пост- флагом, но не более того. Из этого, к примеру, следует, что
1
Более ранние версии имеют ошибки в mod_cache, препятствующие нормальной работе с кэшированными документами.
34
администрирование
в параметрах модуля mod_proxy отсутствует директива для указывающей, требовать ли от потенциального клиента со-
указания порта, который следует использовать для приема ответствия всем условиям (применительно к нашей задаче
входящих соединений2. Apache способен принимать и об- это означает «иметь разрешенный IP-адрес и ввести пра-
рабатывать прокси-запросы на любом порту, который раз- вильное имя пользователя/пароль») или лишь одному из
решен к «прослушиванию» директивой Listen. Впрочем, на них. Последний вариант наиболее интересен с практичес-
практике зачастую оказывается удобнее провести границу кой точки зрения, поскольку позволяет избежать раздра-
между локальными и переадресуемыми запросами. Для до- жающей процедуры ввода пароля для пользователей внут-
стижения этой цели можно создать специальный виртуаль- ренней сети организации.
ный хост, например, на порту 3128, пользуясь директивой Внеся необходимые изменения в httpd.conf, не забудьте
VirtualHost. Подробности ищите в документации к Apache. перезапустить Apache. После этого откройте свой любимый
Дальнейшее изложение неявно предполагает, что вы уже браузер и удостоверьтесь, что настройки безопасности дей-
настроили виртуальный хост и размещаете предлагаемые ствуют именно так, как вы задумали.
директивы внутри принадлежащей ему секции httpd.conf
(Подсказка для самых нетерпеливых: в конце статьи приве- Кэширование
ден завершенный фрагмент конфигурационного файла, Мы успешно справились с первым этапом, а именно: на-
практически пригодный для непосредственного применения). учили Apache обрабатывать запросы, адресованные вне-
Чтобы Apache мог принимать прокси-запросы, необхо- шним серверам. Нашей следующей задачей будет органи-
димо явным образом разрешить их, используя директиву зация локального кэширования запрашиваемых данных. По
«ProxyRequests On». Однако не спешите этого делать, не некоторым сведениям, это позволяет сэкономить 10-20%
позаботившись о безопасности сетевых соединений! Оп- внешнего трафика, что, согласитесь, не так уж мало.
лачивать мегабайты, загруженные предприимчивыми под- Кэшированием данных в Apache заведует модуль mod_
ростками с ProxyHunter в руках – не самое приятное вре- cache (--enable-cache). Именно он принимает решение о том,
мяпровождение. допустимо ли локальное сохранение того или иного объек-
Параметры доступа к серверу задаются в секции <Proxy> та. Непосредственной записью данных на носители зани-
и, в частности, могут иметь следующий вид: маются модули-«провайдеры», из которых нас в первую оче-
редь будет интересовать mod_disk_cache (--enable-disk-
<Proxy *> # Äëÿ âñåõ ïðîêñè-çàïðîñîâ cache), реализующий хранение кэша на жестком диске.
Order deny,allow # Ñïåðâà çàïðåòèòü, ïîòîì ðàçðåøèòü
Deny from All # Çàïðåòèòü âñåì Отметим, что в Apache 2.0 оба этих модуля (mod_cache
Allow from 192.168.0.1/24 # Ðàçðåøèòü äîñòóï èç âíóòðåííåé и mod_disk_cache) имеют статус экспериментальных. Си-
# ñåòè îðãàíèçàöèè
</Proxy> туация обещает измениться в Apache 2.1, который пока что
пребывает в состоянии альфа-версии.
Здесь реализована простейшая схема контроля досту- Чтобы включить кэширование, используйте директиву
па, базирующаяся на IP-адресах клиентов. Во многих слу- «CacheEnable disk /», где «disk» – идентификатор модуля-
чаях ее будет достаточно. Но что делать, если вы хотите провайдера. Местоположение дискового кэша и его желае-
разрешить использование сервера с компьютеров, не име- мый объем (в килобайтах) задается соответственно дирек-
ющих фиксированного IP-адреса (например, домашних тивами «CacheRoot <имя каталога>» и «CacheSize <NNN>»,
машин особо приближенных сотрудников, которые не прочь относящимися уже не к mod_cache, а к mod_disk_cache.
получить «городской прокси»)? Для этих целей можно при- Apache предпринимает меры к тому, чтобы конфиденци-
менить авторизацию по имени пользователя и паролю. По- альные данные никогда не попадали в кэш сервера, одна-
скольку директивы контроля доступа, заключенные между ко лишняя безопасность все же не повредит. Я рекомен-
тегами <Proxy> и </Proxy> на самом деле обрабатываются дую сделать каталог, в котором хранится кэш, недоступ-
теми же самыми модулями, что обеспечивают защиту ло- ным ни для кого, кроме Apache.
кальных каталогов сервера (ну, не говорил ли я вам, что
Apache практически не отличает прокси-запрос от обычно- # chown apache:apache /path/to/cache
# chmod 0700 /path/to/cache
го?), вы можете использовать привычную конструкцию:
Естественно, если в вашей системе Apache работает от
<Proxy *> # Äëÿ âñåõ ïðîêñè-çàïðîñîâ имени другого пользователя, имя и группу владельца ката-
AuthName “Tresspassers” # «Ïîñòîðîííèì â.»
AuthFile /some/secret/file # Èìÿ ôàéëà, ñîäåðæàùåãî лога также следует изменить соответствующим образом.
# ðåêâèçèòû ïîëüçîâàòåëåé В целях повышения производительности дисковый кэш
AuthType Basic # Ìåòîä àâòîðèçàöèè – áàçîâûé
Require valid-user # Ïðîïóñêàòü âñåõ, êòî ïåðå÷èñëåí имеет многоуровневую структуру. Глубиной вложенности
# â /some/secret/file подкаталогов и максимальной длиной их имени управляют
</Proxy>
директивы CacheDirLevels и CacheDirLength.
Естественно, предварительно следует создать файл /some/ По умолчанию для них используются следующие значе-
secret/file при помощи утилиты htpasswd(1) и загрузить со- ния: CacheDirLevels 2, CacheDirLength 3.
ответствующие модули (mod_access и/или mod_auth). При К сожалению, Apache 2.0 не имеет никаких штатных
необходимости оба метода можно комбинировать. Также средств для управления содержимым кэша. Вы не можете
бывает полезно пользоваться директивой «Satisfy All|Any», постепенно удалять старые данные или делать это при пре-
2
Напомним, что согласно общепринятым соглашениям для этих целей используется порт 3128.
3
Отметим, что отсечение клиентов, не поддерживающих сжатие данных, mod_deflate производит сам, без всякого участия администратора.
36
администрирование
ренних переменных Apache, устанавливаемых с помощью щий момент имеют статус экспериментальных или являют-
mod_setenvif (env), имена обработчиков (handler), а также ся сторонними разработками. Ситуация изменится с выхо-
тип передаваемых данных (Content-type). дом финальной версии Apache 2.1, который будет содержать
Для создания «умного» фильтра используется директи- «штатные» реализации mod_cache и mod_filter. До тех пор
ва «FilterDeclare <имя фильтра>». Подключением отдельных вы при желании можете рассматривать предлагаемое реше-
провайдеров управляет директива «FilterProvider <имя филь- ние как перспективное, хотя мой личный опыт показывает,
тра> <имя провайдера> <условие>». Здесь под именем про- что надежности вышеупомянутых модулей вполне достаточ-
вайдера подразумевается название «обычного» фильтра, но для решения «бытовых» задач. Попробуйте сами!
например, DEFLATE. Завершив настройку «умного» фильт-
ра, следует добавить его в «цепочку» командой FilterChain. Приложение
При обработке поступившего запроса звенья цепочки пос-
ледовательно просматриваются до тех пор, пока не будет Пример вызова configure, обеспечивающий
найден фильтр, условие срабатывания которого для данно- поддержку всех необходимых модулей
го конкретного запроса окажется истинным. По умолчанию
добавление нового «умного фильтра» происходит в конец ñonfigure \
--enable-proxy –-enable-proxy-http -–enable-proxy-ftp -–
цепочки, однако это поведение можно подавить, используя enable-proxy-connect\
специальные префиксы в директиве FilterChain. Подробнос- --enable-cache –enable-disk-cache\
--enable-deflate\
ти ищите в документации. --enable-mods-shared=all
Теперь путь решения проблемы становится ясным. Нам
необходимо добавить «умный» фильтр «Compressor» (конеч-
но, вы можете использовать другое имя), который будет об- Фрагмент файла httpd.conf, реализующий
рабатывать данные с типом «text/*». На самом деле диапа- описанную в статье систему
зон MIME-типов, подлежащих сжатию, может быть более
широким. ...
# Ñëóøàòü ïîðò 3128
Я, например, использую следующую конструкцию: Listen 3128
...
FilterProvider Compressor DEFLATE resp=Content-type $text/ # Çàãðóçèòü íåîáõîäèìûå ìîäóëè
FilterProvider Compressor DEFLATE resp=Content-type ↵ LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
$application/xhtml ...
FilterProvider Compressor DEFLATE resp=Content-type ↵
$application/xml LoadModule deflate_module modules/mod_deflate.so
...
LoadModule proxy_module modules/mod_proxy.so
Знак долара «$» в начале каждого условия обозначает LoadModule proxy_connect_module modules/mod_proxy_connect.so
операцию поиска по подстроке. Кроме него, доступен по- LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
иск по регулярному выражению (обрамляется символами ...
«/»), а также весь спектр арифметических операций срав- LoadModule filter_module modules/mod_filter.so
...
нения и специальное условие «*», которое всегда истинно. # Ñîçäàòü âèðòóàëüíûé õîñò íà ïîðòó 3128
Обратите внимание, что мы используем «resp=Content-type» NameVirtualHost *:3128
<VirtualHost *:3128>
вместо «Content-type». Между этими двумя вариантами су- # Âêëþ÷èòü ïîääåðæêó ïðîêñè-çàïðîñîâ
ществует тонкое различие. В первом случае MIME-тип оп- ProxyRequests On
<Proxy *>
ределяется по заголовкам, сформированным удаленным # Îãðàíè÷åíèå äîñòóïà ïî IP
сервером, тогда как в последнем сведения поступают из Order deny,allow
Deny from all
локальной базы MIME-типов. Некоторые сайты, например, Allow from 192.168.0.1/24
репозитарий SourceForge.net, используют для своих фай- # èëè àâòîðèçàöèÿ ïî èìåíè ïîëüçîâàòåëÿ è ïàðîëþ
AuthName "No trespassers"
лов двусмысленные имена, что приводит к недопониманию: AuthType Basic
http://prdownloads.sourceforge.net/project/release-x.y.tar.gz? AuthUserFile <ôàéë ñ ðåêâèçèòàìè ïîëüçîâàòåëåé>
Require valid-user
download на проверку оказывается HTML-страницей, содер- # Åñëè îáå ñõåìû èñïîëüçóþòñÿ ñîâìåñòíî, óêàæèòå çäåñü
жащей список доступных зеркал для файла release-x.y.tar.gz, # All, ÷òîáû çàòðåáîâàòü ðàçðåøåííûé IP-àäðåñ
# è ïðàâèëüíûé ïàðîëü Any, ÷òîáû çàòðåáîâàòü
поэтому лучше доверить право определения типа содер- # ðàçðåøåííûé IP-àäðåñ èëè ïðàâèëüíûé ïàðîëü
жимого удаленному серверу. Уж он-то точно знает, что нам Satisfy Any
</Proxy>
отправил. # Íàñòðîéêè êýøà
CacheEnable disk /
CacheRoot <ïóòü ê êàòàëîãó êýøà>
Заключение CacheSize 51200
Вот и подошла к концу данная статья. Если вы внимательно CacheDirLevels 2
CacheDirLength 3
и творчески следовали всем перечисленным рекомендаци- # «Óìíûé» ôèëüòð äëÿ äèíàìè÷åñêîãî ñæàòèÿ
ям, то сейчас в вашем распоряжении имеется многофункци- FilterDeclare Compressor
FilterProvider Compressor DEFLATE resp=Content-type $text/
ональный сервер Apache, который может самостоятельно FilterProvider Compressor DEFLATE resp=Content-type ↵
обрабатывать запросы, переадресовывать их удаленным $application/xhtml
FilterProvider Compressor DEFLATE resp=Content-type ↵
веб-узлам, кэшировать и динамически сжимать передавае- $application/xml
мые данные, причем делает все это в рамках одной кодовой FilterChain Compressor
</VirtualHost>
базы. Некоторые из описанных в статье функций в настоя-
СЕРГЕЙ ЯРЕМЧУК
Сегодня на рынке виртуальных машин, позволяющих за- торых случаях даже превосходящие VMWare), пользуются
пускать на одном компьютере сразу несколько операцион- популярностью в большей степени или в основном среди
ных систем, признанным лидером является VMWare. Это сторонников UNIX-систем, скорее всего из-за отсутствия по-
действительно мощный продукт, обладающий понятным нятного интерфейса. К тому же Bochs, при всех его досто-
интерфейсом, простой в настройке, разобраться с исполь- инствах, еще и очень медленно работает, поскольку не ис-
зованием которого под силу и новичку. Но есть и некото- пользует динамическую трансляцию. Хотя в последнее вре-
рые неудобства. Так как VMWare является коммерческим мя Qemu уже обзавелся вполне понятными оболочками, но
продуктом, то придется либо купить лицензионную версию, боюсь, что настоящая популярность придет к нему позже.
либо смириться с тем, что лицензия ограничивает пользо- Между тем существует по крайней мере еще один коммер-
вателя по времени. Довольно часто, особенно во время вы- ческий проект, предлагающий виртуальную машину, и са-
хода новых версий программы, сайт бывает так перегру- мое интересное, что в его разработке участвуют програм-
жен, что не сразу удается получить новый ключ. Продукт мисты из России.
Microsoft Virtual PC, по моему мнению, еще не пользуется SerenityVirtual Station 2004 – SVISTA, именно так называ-
большой популярностью хотя бы потому, что не достиг того ется решение, предлагаемое Serenity Systems International –
уровня функциональности, который позволит тягаться с SSI (http://www.serenityvirtual.com/index.php), первый пресс-
VMWare. Свободные же версии виртуальных машин вроде релиз с упоминанием о ней датируется 1 ноября 2004 года.
Bochs, Qemu и пр. несмотря на свои возможности (в неко- Разработкой SVISTA занимается компания «Параллели –
38
администрирование
Программная Студия» (http://www.parallels.ru), образован- ! AC97-совместимая звуковая карта;
ная в феврале 2001 года в Москве. ! клавиатура с поддержкой расширенных 104 клавиш;
Итак, что умеет SVISTA? В качестве основной операци- ! мышь PS/2 с колесом.
онной системы могут использоваться Linux, FreeBSD,
Windows, IBM OS/2 и eСomStation. В качестве гостевых опе- Как видите, SVISTA несколько проигрывает VMWare, нет
рационных систем могут применяться: поддержки SCSI-, USB-устройств (планируется в следую-
! OS/2 2.1, OS/2 Warp 3.0, 4.0, 4.5, eComStation 1.0, 1.1, 1.2 щей версии), да и сетевая карта всего одна (в VMWare –
! MS-DOS, Windows 3.0, 3.1, 3.11 три). Однако разработчиками заявлено о поддержке нестан-
! Windows 95 дартного оборудования вплоть до картридеров.
! Windows NT 4.0, Windows 2000, Windows XP, Windows
Server 2003 Установка SVISTA
! Linux (kernel 2.2, 2.4 и 2.6) SVISTA очень проста в установке и настройке. Но для нача-
! FreeBSD ла необходимо кроме самого дистрибутива, предназначен-
ного для конкретной основной системы, получить лицензи-
Конкретные версии и дистрибутивы в официальной ин- онный ключ. Под UNIX-системы приложение, т.е. оболочка,
формации не названы, и скорее всего здесь особых огра- распространяется по лицензии GPL и доступно в исходных
ничений нет. Я запускал виртуальную машину в ALT Linux текстах, библиотеки и файлы ресурсов являются закрыты-
2.4 Master, ASPLinux v10, FreeBSD 5.3 и Windows XP SP1 и ми. Сам продукт является коммерческим, поэтому у нас есть
2 – проблем не заметил. Системные требования также обыч- два варианта: купить полную лицензию за 99 у.е., либо зап-
ные для такого рода продуктов, и принцип один – чем боль- росить демонстрационный ключ, который позволит исполь-
ше, тем лучше. В SVISTA часть кода выполняется на реаль- зовать программу без каких-либо ограничений в течение 30
ном процессоре, минуя виртуальный, что увеличивает бы- дней, если вы не хотите, чтобы работе мешало сообщение
стродействие системы. Доскональных испытаний я не про- об использовании нелицензионной версии. Правда, по ис-
водил, но на компьютере 1.1 Celeron с 256 ОЗУ, SVISTA течении этого срока никто не запрещает повторить всю
работает примерно с такой же скоростью, что и VMWare, процедуру с самого начала. Здесь все как в VMWare, толь-
но медленнее Qemu. Если в SVISTA и VMWare загрузка в ко с тем отличием, что в SVISTA необходимо для каждой
гостевой ОС такого монстра как KDE, происходит минут за основной системы получать ключ отдельно, но зато можно
15, то в Qemu на это уходит около 10 минут. SVISTA 2004 пользоваться одним и тем же почтовым ящиком. В VMWare
имеет набор инструментов для гостевой OС, например со- в получении ключа на e-mail, который уже имеется в базе
вместный буфер обмена, который позволяет сделать рабо- данных, будет отказано. При использовании в качестве ос-
ту более удобной. Версия для Windows специально опти- новной системы Linux получаем архив svista-2004-lnx.zip
мизирована для работы с Citrix Metaframe. В качестве при- размером 1.93 Мб.
менения своему продукту разработчики видят в первую оче- После распаковки вы найдете ReadMe-файл и два паке-
редь различные варианты клиент-серверных архитектур та: SVISTA-2004.1056-Lin.i386.rpm и SVISTA-2004.1056-Lin.tgz.
(One technology – many environments), когда терминалы «тон- Первый предназначен для дистрибутивов, поддерживаю-
ких клиентов» загружают с сервера необходимую рабочую щих rpm-пакеты, второй – для всех остальных.
среду. Подробности смотрите в документации на сайте.
Пользователь, запустивший SVISTA, получает в свое # rpm –i SVISTA-2004.1056-Lin.i386.rpm
распоряжение следующую виртуальную машину:
! CPU Pentium II или AMD Duron (в зависимости от марки Или для tgz:
процессора на компьютере);
! материнская плата, совместимая с Intel i815; # tar xzvf SVISTA-2004.1056-Lin.tgz
#./install.sh
! до 512 Мб оперативной памяти (но не больше половины
имеющейся на PC); После чего запускаем скрипт SVISTA-config:
! VGA и SVGA-совместимая видеокарта с поддержкой
VESA 3.0, что позволяет использовать любые режимы # /usr/bin/SVISTA-config
вплоть до 1280x1024x256; Configuring SVISTA 2004 build 1056
! дисковод формата 3.5'' на 1.44 Мб (может быть пред- You must read and accept license agreement to run SVISTA 2004
ставлен как реальным устройством, так и образом); To list by pages use Spacebar key.
! виртуальный жесткий диск IDE объемом до 32 Гб, пред- Press 'ENTER' to continue...
Windows дополнительно поддерживает виртуальную Смотрим в указанный файл. Выясняется, что для ком-
Token-Ring сетевую карту; пиляции (под UNIX-системы часть SVISTA поставляется в
# SVISTA& Ðèñóíîê 2
Если при запуске не будет найдено загрузочное устрой-
После чего появляется экран новой виртуальной маши- ство или оно не правильно сконфигурировано, то вы полу-
ны. чите предупреждение «No boot device available, press enter
to continue». Параметр Memory определяет количество ре-
альной оперативной памяти, которое будет выделено вирту-
альной машине, установите его в пределах от 4 до 512 Мб,
но не более половины размера ОЗУ. Если конфигуратор
Windows сразу устанавливает предел в половину имеющей-
ся памяти (кроме случаев, когда часть ОЗУ отдана встро-
енной карте, см. рис. 3), то в Linux его придется контроли-
ровать самому. Если переусердствуете, то получите ошиб-
ку «System error E4003: Can't map VM memory».
Ðèñóíîê 3
В Options определяются действия, выполняемые при
старте виртуальной машины. Так, «Start immediately after
Ðèñóíîê 1 opening configuration» позволяет запустить виртуальную
Для дальнейшей работы необходимо ввести регистра- машину сразу после выбора конфигурационного файла, без
ционный номер, зайдя в пункт Help/Registration. Теперь при- дополнительных действий со стороны пользователя.
ступаем к созданию новой виртуальной машины, выбрав Опция «Start virtual machine in full screen mode» запуска-
меню New. Во вкладке Main (рис. 2) устанавливаются ос- ет виртуальную машину в полноэкранном режиме (в него
новные параметры виртуальной машины, тип гостевой си- можно также перейти, нажав кнопку на панели, либо через
стемы, параметр Boot sequence позволяет выбрать один из соответствующий пункт меню).
трех типов загрузки: Включив «Show full screen mode startup warning message»,
! Floppy, Hard drive, CD-ROM. вы будете получать предупреждения о переходе в полноэк-
! Hard drive, Floppy, CD-ROM. ранный режим.
! CD-ROM, Hard drive, Floppy. Опция «Enable acceleration» включена по умолчанию, но
40
администрирование
для некоторых гостевых систем (Windows NT и 2000), при шей частью автоматически, для RTL8029 compatible систе-
работе которых возможны сбои, появляется возможность ма сама выбирает IRQ.
отключить ускорение. Для остальных типов адаптеров придется IRQ выстав-
И наконец, «Enable write-back disk cache» также вклю- лять самому. После установки всех параметров будущей
чена по умолчанию и разрешает производить запись не сра- гостевой системы выходим из настроек и сохраняем кон-
зу в образ, а в кеш. Вкладки Floppy drives и IDE drives похо- фигурацию (по умолчанию файл с расширением *.svs). Если
жи. В них указываются соответствующие устройства (дис- в процессе использования гостевой системы возникла не-
ковод, жесткий диск и CD-ROM), которые будут доступны обходимость в редактировании параметров, воспользуйтесь
на виртуальной машине. При этом могут быть указаны как пунктом Edit.
реальные устройства, так и предварительно созданные Òàáëèöà.1 Ñïèñîê ïîääåðæèâàåìûõ ñåòåâûõ àäàïòåðîâ
образы. Для создания файл-образа используется кнопка â çàâèñèìîñòè îò òèïà ãîñòåâîé ñèñòåìû
«Create file», при этом задается размер файла (дисковод
1.44 Мб по умолчанию имеет расширение .fdd, жесткий диск
от 20 до 32768 Мб, расширение hdd). В Windows файл со-
здается автоматически, а в Linux его необходимо предва-
рительно создать вручную:
# touch /home/sergej/vm/knoppix.hdd
Ðèñóíîê 4
Следующие две вкладки «Serial ports» и «Parallel ports»
открывают доступ к соответствующим портам.
Во вкладке «Sound settings» доступны опции «PC speaker
support enable» и «Sound support enable», активация кото-
рых позволяет использовать спикер и виртуальную AC’97-
звуковую карту. При использовании в качестве основной Ðèñóíîê 5
системы Windows в каталоге, в который установлен SVISTA, Теперь на виртуальную машину можно подавать пита-
имеется файл tools.fdd, содержащий драйвера AC’97 и се- ние. В дальнейшем работа происходит обычным образом.
тевых устройств в основном для OS/2 и Windows NT. Наличие всего одного сетевого адаптера не позволяет
И наконец, вкладка «Network settings» позволяет акти- создавать такие разветвленные конфигурации, как в VMWare,
вировать сетевое устройство (рис. 5). В зависимости от ис- но имеющихся возможностей SVISTA вполне достаточно для
пользуемой гостевой системы будут доступны различные тестирования программного обеспечения и сетевых серви-
сетевые адаптеры (таб. 1). сов, работы или презентации возможностей тех или иных
И последним шагом настройки является установка port, приложений, написанных под разные операционные систе-
IRQ и MAC-адреса. Параметр port устанавливается боль- мы.
АЛЕКСЕЙ ГРИНЬКО
Bacula – это мощное средство создания и управления ре- го, имеет полный набор необходимых вам функций». Что ж,
зервными копиями данных, а также восстановления инфор- проверим это утверждение разработчиков.
мации при необходимости. Имея модульную архитектуру, Начнем с описания компонентов, из которых состоит эта
Bacula легко масштабируется и может быть использована система. Bacula имеет клиент-серверную архитектуру, ее
как на нескольких, так и на сотнях компьютеров. Кому бу- схема представлена ниже (рис. 1).
дет полезен этот инструментарий? Как сказано в докумен-
тации, «... если вы используете такие программы, как tar, Взаимодействие служб в Bacula
dump, bru для создания резервных копий, и хотели бы иметь Сердцем системы является «центр управления» (Director), в
удобное средство для сетевой работы, то Bacula, скорее все- его функции входит хранение заданий, их запуск, ведение
42
администрирование
журнала всего происходящего. Эта часть на данный момент управления), bacula-sd.conf (хранилище). Начнем с самого
реализована только для FreeBSD и Linux. Для хранения жур- простого – bacula-fd.conf:
налов создания архивных копий и их содержимого исполь-
зуется SQL Server (служба хранения каталога). В его роли Director { # îïèñàíèå öåíòðà óïðàâëåíèÿ,
Name = main-dir # êîòîðîìó ðàçðåøåíî îáðàùàòüñÿ
может выступать PostgreSQL, MySQL и SQLite. Созданные Password = "bacula" # ê ýòîé ñëóæáå ôàéëîâ
архивные копии передаются в «хранилище» (Storage Server), }
где они записываются в «тома» (Volume). Тома физически FileDaemon { # îïèñàíèå ñëóæáû ôàéëîâ
могут записываться в простейшем случае в файл, но Bacula Name = main-fd # èìÿ êëèåíòà
FDport = 9102 # èñïîëüçóåìûé ïîðò
поддерживает работу с накопителями на магнитной ленте, WorkingDirectory = /var/lib/bacula # ðàáî÷èé êàòàëîã
в том числе и устройства с автоматической сменой кассеты. Pid Directory = /var/run # ôàéë ñ íîìåðîì ïðîöåññà
}
Если выбран вариант хранения томов в виде файлов, то пос-
ле достижения файлом длины 650-700 Мб (CD) или же 4.5 Гб Messages { # îïèñàíèå êàíàëà ñîîáùåíèé
Name = Standard # èìÿ êàíàëà
(DVD), целесообразно закончить работу с этим томом и за- director = main-dir = all, !skipped # ãäå îí íàõîäèòñÿ
писать его на носитель CD/DVD. Еще одним элементом си- }
стемы является «Служба файлов» (File Daemon). Это клиен-
тская часть, которая устанавливается на компьютеры, хра- Конфигурационные файлы состоят из объектов (дирек-
нящие данные для архивации. Вся прелесть в том, что дан- тив), параметры каждого объекта находятся внутри фигур-
ная часть реализована для различных платформ: FreeBSD, ных скобок {}. Здесь приведены следующие объекты: Director
Linux и Windows. Таким образом, собирать данные для раз- (центр управления), FileDaemon (служба файлов) и Messages
мещения в архив можно вне зависимости от того, какая опе- (канал сообщений). Описанием первого объекта мы разре-
рационная система установлена на компьютер. Остался еще шаем центру управления с именем main-dir подключаться
один элемент – «Консоль» (Bacula Console). Он также су- и передавать задания. Второй объект задаёт параметры ра-
ществует в версиях для различных ОС, его целью является боты самой службы файлов. В третьем же задается имя
создание, управление и контроль выполнения архивных ко- канала сообщений, в который будут передаваться отчеты о
пий, а также менеджмент томов и пулов. проделанной работе, состояние, ошибки.
Для оповещения о ходе работы, поставленных задачах
и результатах их выполнения используются каналы сооб-
щений. Можно задействовать несколько каналов, к приме-
ру, по числу заданий, и отправлять отчеты пользователям,
чьи данные были заархивированы. Мы же создадим один
канал для отправки всех сообщений администратору. Так-
же по почте будут приходить уведомления о смене кассеты
или подключении нового файлового тома, если текущий за-
полнен. Для отправки сообщения Bacula использует соб-
ственный инструментарий – bsmtp, который может отправ-
лять сообщения не только локально, но и на удаленный smtp-
сервер.
Следующий конфигурационный файл описывает на-
стройки хранилища:
Как видно, поместить службу хранения каталогов, хра- Messages { # îïèñàíèå êàíàëà ñîîáùåíèé
Name = Standard # èìÿ êàíàëà
нилище и центр управления разумнее всего на одном сер- director = main-dir = all, !skipped
вере. В FreeBSD есть следующие порты для установки: # ïåðåäàâàòü ñîîáùåíèÿ â öåíòð óïðàâëåíèÿ
}
! /usr/ports/sysutils/bacula-server
! /usr/ports/sysutils/bacula-client Device {
Name = FileStorage
#
#
óñòðîéñòâî õðàíåíèÿ òîìîâ
èìÿ
Media Type = File # òèï íîñèòåëÿ (ôàéëîâûé)
Нам понадобятся оба, так как компьютер, на котором Archive Device = /tmp # ïóòü ê óñòðîéñòâó
LabelMedia = yes # äàâàòü òîìàì ìåòêè
будет запущен центр управления Bacula, тоже будет высту- Random Access = Yes # óñòðîéñòâî ñ ïîçèöèîíèðîâàíèåì
пать в роли клиента. После установки необходимо настро- AutomaticMount = yes # àâòîìàòè÷åñêîå ïîäêëþ÷åíèå òîìà
RemovableMedia = no # ÿâëÿåòñÿ ëè ñúåìíûì íîñèòåëåì
ить три конфигурационных файла, находящихся в $PREFIX/ AlwaysOpen = no # áëîêèðîâêà èçâëå÷åíèÿ íîñèòåëÿ
etc/: bacula-fd.conf (служба файлов), bacula-dir.conf (центр }
44
администрирование
мом сервере. Если что-то случится со службой каталога, было сконфигурировать автоматический запуск архивиро-
то, имея на руках одни кассеты с архивами, восстановить вания. Если в описании задания не указана директива
данные будет совсем непросто. Поэтому данные записы- Schedule, то оно будет запускаться только вручную.
ваются в другое хранилище (файловое). Хранить эти фай- Запуск задания в этом режиме осуществляется из кон-
лы после их заполнения рекомендуется на другом сервере соли Bacula.
или на носителях CD/DVD. Кроме того, здесь используются
новые элементы RunBeforeJob и RunAfterJob и, как ясно из Schedule {
Name = "WeeklyCycle"
названия, это скрипты, которые необходимо запустить до Run = Full 1st sun at 1:05
и после начала архивирования. Перед запуском задания Run = Differential 2nd-5th sun at 1:05
Run = Incremental mon-sat at 1:05
создается дамп базы, с помощью скрипта make_catalog_ }
backup (входящего в дистрибутив Bacula). Дамп помещает-
Schedule {
ся в файл /var/lib/bacula/bacula.sql. Элемент Schedule (гра- Name = "WeeklyCycleAfterBackup"
фик запуска) показывает, что это задание необходимо вы- Run = Full sun-sat at 1:10
}
полнять периодически. Выбранный график запуска «Weekly
CycleAfterBackup», как будет рассмотренно позже, указы- Первый график запуска определяет выполнение полного
вает на то, что архивирование будет запускаться ежеднев- архивирования файлов в первое воскресенье месяца в 1.05.
но, после выполнения всех основных резервных заданий. Инкрементальное архивирование осуществляется с поне-
Заметим, добились мы этого установкой приоритета ниже дельника по субботу в 1.05. А дифференционное архиви-
обычного. По умолчанию значение приоритета для зада- рование в каждое воскресенье, кроме первого, в 1.05. Вто-
ния равно 10. рой график будет запускать задания каждый день, после
Если мы хотим повысить приоритет задания, его необ- того как будут выполнены дневные архивирования.
ходимо назначить меньше 10, и наоборот. Если в одно и то Теперь настала очередь описания клиентов и парамет-
же время запланировано несколько задач, то первой будет ров обращения в службе каталогов. Настройки клиента
выполнена задача с более высоким приоритетом, осталь- (службы файлов, которой будут отправляться задания) и
ные будут поставлены в очередь на ожидание. Задание, по- службы каталогов прокомментированы и должны быть ин-
ступившее в очередь позже, но имеющее приоритет выше, туитивно понятны.
будет выполнено в обход тех, что уже стоят в очереди. При
этом работа выполняемого архивирования не прерывается Client {
Name = main-fd # èìÿ êëèåíòà
даже при поступлении в очередь задания с более высоким Address = localhost # åãî àäðåñ, èìÿ DNS
приоритетом. FDPort = 9102 # èñïîëüçóåìûé ïîðò
Catalog = MyCatalog # èñïîëüçóåìàÿ ñëóæáà êàòàëîãà
Переходим к следующим объектам – описание набора Password = "bacula" # ïàðîëü äëÿ äîñòóïà
файлов для архивирования. В задании с именем UnixCfg File Retention = 30 days # ñðîê õðàíåíèÿ ôàéëîâ
# â àðõèâå
мы указали, что будем использовать набор файлов UnixCfg. Job Retention = 6 months # ñðîê õðàíåíèÿ çàïèñåé
Расшифруем, что мы имели в виду: # â êàòàëîãå
AutoPrune = yes # óäàëÿòü ñòàðûå çàïèñè è ôàéëû
}
FileSet {
Name = "UnixCfg" # èìÿ íàáîðà ôàéëîâ Catalog {
Include = signature=MD5 { # îïöèè – ïîñ÷èòàòü Name = MyCatalog # èìÿ êàòàëîãà
# ñóììû MD5 äëÿ ôàéëîâ # èìÿ SQL-áàçû äàííûõ, ïîëüçîâàòåëü è ïàðîëü
/etc # àðõèâèðîâàòü êàòàëîã /etc dbname = bacula; user = bacula; password = "baculapwd"
/usr/local/etc # à òàêæå /usr/local/etc }
}
Exclude = { # ôàéëû-èñêëþ÷åíèÿ
*.bak # èñêëþ÷èòü èç àðõèâà ôàéëû ïî ìàñêå Ниже приведены описания настроек устройств, исполь-
} зуемых в качестве хранилища. Его имя, а также тип носи-
}
теля обязательно должны быть такими же, как и те, что ука-
FileSet { заны в bacula-sd.conf.
Name = "Catalog"
Include = signature=MD5 {
/var/lib/bacula/bacula.sql Storage {
} Name = File # èìÿ õðàíèëèùà
} Address = localhost # IP-àäðåñ èëè DNS-èìÿ
SDPort = 9103 # èñïîëüçóåìûé ïîðò
Password = "bacula" # ïàðîëü
Все интуитивно понятно. Описаны два набора файлов – Device = FileStorage # óñòðîéñòâî (òàêîå æå,
соответственно для двух вышесозданных заданий. Добав- # êàê â bacula-sd.conf)
Media Type = File # òèï íîñèòåëÿ (òàêîå æå,
лю только то, что при использовании файлового хранили- # êàê â bacula-sd.conf)
ща, а не стриммера, будет полезным добавить вслед за оп- }
цией «signature=MD5» опцию «compression=GZIP», которая Storage {
указывает на необходимость архивирования файлов перед Name = DDS-4 # èìÿ õðàíèëèùà
Address = localhost # IP-àäðåñ èëè DNS-èìÿ
помещением в том. В случае со стриммером это не имеет SDPort = 9103 # èñïîëüçóåìûé ïîðò
смысла – большинство устройств имеют аппаратную под- Password = "bacula" # ïàðîëü
Device = DDS-4 # óñòðîéñòâî (òàêîå æå,
держку сжатия. # êàê â bacula-sd.conf)
На очереди следующий элемент – описание графика Media Type = DDS-4 # òèï íîñèòåëÿ (òàêîé æå,
# êàê â bacula-sd.conf)
выполнения заданий. Делается это для того, чтобы можно }
46
администрирование
АНДРЕЙ МАРКЕЛОВ
Устав бороться дома с несогласным стабильно работать мар- ! DHCP-сервер;
шрутизатором DLink 624+, я наконец решил поменять это ! поддержка протокола Point-to-Point Protocol over Ethernet
недорогое, но проблемное устройство на что-нибудь более (PPPoE), по которому осуществлялось подключение к
надежное. провайдеру;
Необходимо было выполнение следующих типичных для ! надежность и возможность мониторинга состояния мар-
дома или небольшого офиса функций: шрутизатора, которой так не хватало в DLink 624+.
! подключение до пяти сетевых устройств (реально у меня
одновременно работало не больше двух, требующих В итоге я остановил свой выбор на младшем маршру-
выхода за пределы домашней сети); тизаторе модельного ряда компании Cisco Systems.
! развитый брандмауэр и сетевая трансляция адресов Далее я приведу описание процесса базовой настрой-
(NAT); ки маршрутизатора, которое может послужить отправной
48
администрирование
точкой для самостоятельного конфигурирования домашней/ Home(config)#no ip http server
офисной «кошки» UNIX- или Windows-администратором, Home(config)#no ip http secure-server
Home(config)#no cdp run
ранее не работавшим с оборудованием Cisco.
Теперь включим режим хранения паролей в файле кон-
Подключение фигурации устройства в зашифрованном виде:
Для первоначальной настройки маршрутизатора необходи-
Home(config)#service password-encryption
мо подключиться к консольному порту на задней панели
устройства. Консольный порт с разъемом RJ-45 представ- После чего можно задать и сами пароли. Для начала на
ляет собой обыкновенный асинхронный последовательный консольное подключение:
порт TIA/EIA-232. Для подключения к ПК вам понадобится
Home(config)#line con 0
помимо так называемого rollover-кабеля, идущего в комп- Home(config-line)#password пароль
лекте с маршрутизатором, переходник к DB-9, и, естествен- Home(config-line)#login
но, COM-порт на рабочей станции. Установка соединения Home(config-line)#exit
Home(config)#
осуществляется со стандартными значениями – 9600 бод/8
бит данных/1 стоп бит/без проверки четности и контроля Затем таким же способом, но уже на подключение с по-
прохождения. мощью telnet. Вместо команды line con 0 в этом случае бу-
В Windows-системах вы можете использовать утилиту дет line vty 0 4, остальное останется неизменным. Зададим
HyperTerminal, а в Linux – cu или minicom. В дальнейшем, также пароль, который маршрутизатор будет спрашивать
когда маршрутизатору будет присвоен IP-адрес, вы сможе- у уже подключившегося пользователя при попытке перей-
те обращаться к нему по протоколам telnet или ssh, но пер- ти из пользовательского в привилегированный режим ко-
вый раз без консольного подключения не обойтись. мандой enable:
Итак, даем с рабочей станции команду на подключение,
Home(config)#enable secret пароль_enable_режима
и после нажатия <Enter> оказываемся в командной строке
маршрутизатора. Думаю, к этому моменту я привел достаточно примеров
того, как выглядит работа с командной строкой маршрути-
Router>
затора Cisco и в оставшейся части статьи, чтобы избегать
Теперь необходимо перейти в привилегированный ре- повторов, я просто буду ссылаться на соответствующие
жим, в котором и будем осуществлять настройку: строки конфигурации маршрутизатора, приведенной в кон-
це материала.
Router>enable
Router#
Router#erase startup-config
Router#reload
50
администрирование
http://distrowatch.com/?newsid=02042
СЕРГЕЙ ЯРЕМЧУК
Пока идут горячие споры по поводу возможности исполь- занимающую много места. Последнее реализуется за счет
зования GNU/Linux на рабочих столах пользователей, прак- тщательного отбора утилит, в которых реализованы наи-
тически все основные производители дистрибутивов уже большая функциональность и удобство с одновременным
представили соответствующие версии своих продуктов. В уменьшением количества дублирующих приложений. Дис-
последнее время наметилась устойчивая тенденция к по- трибутив свободно доступен с ftp-архива в виде iso-обра-
явлению версий дистрибутивов, направленных на конкрет- за, кроме того, продается в онлайн-магазинах по цене 26.97
ную целевую аудиторию, которая, очевидно, будет наблю- USD. Последний вариант комплектуется extra-диском, со-
даться и в дальнейшем. Причин достаточно. Так, пользова- держащим дополнительные приложения (ядро 2.6.10,
тели не желают платить за ненужные диски, особенно ког- RealPlayer, Opera, Adobe Acrobat Reader и пр.) и книгу по
да задача состоит в простом знакомстве с новинками (в установке дистрибутива. Кроме SOHO, у VectorLinux есть и
этом случае хватит и LiveCD), с другой стороны, на серве- другие варианты. Так Standard Edition, размером 350 Мб,
ре совсем не нужны графические оболочки и различные содержит минимально необходимую среду, его главный
мультимедиапроигрыватели. К тому же очень жесткие тре- девиз – скорость и легкость. Версия Deluxe Edition также
бования к защите серверов на домашнем компьютере бу- имеет диск с дополнительным софтом и брошюру, содер-
дут скорее мешать, так как пользователю важно в первую жащую информацию об установке, и во многом напомина-
очередь удобство. Среди других позиций, которые хотелось ет SOHO, но составом приложений предназначена больше
бы иметь в дистрибутиве, ориентированном на неподготов- для профессионального использования. И наконец, «неста-
ленного пользователя, – простая и понятная программа ус- бильная ветка» Dynamite Edition используется в основном
тановки и максимально возможная поддержка оборудова- разработчиками, на ней отрабатываются все нововведения,
ния, включая различные USB, Bluethooth и беспроводные которые, возможно, появятся в следующих релизах
устройства, TV-тюнеры, не говоря уже о принтерах, скане- VectorLinux. Вероятно, «динамит» является самым друже-
рах и программах записи CD и DVD. Далее хотелось бы любным Slackware на сегодняшний день.
иметь нормальную локализацию и понятную программу по- Также хотелось бы отметить, что не так давно проект
стустановочной настройки дистрибутива, а также софт на обзавелся более-менее понятной документацией (имею-
все (или почти на все) случаи жизни. Еще не хочется долго щейся в том числе и на диске, правда, на английском язы-
искать нужное приложение в меню, т.к. даже при минималь- ке), позволяющей разобраться с особенностями работы в
ной установке Linux количество различных программ пере- VectorLinux. Единственный недостаток VectorLinux, который
валивает за тысячу, и пользователю необходимо иметь хоть в наших условиях является критичным, – это полное отсут-
какую-то подсказку, что у него установлено и для чего оно ствие локализации, в системе доступен только английский
предназначено. интерфейс. Поэтому ею придется заниматься самому, взяв
Наиболее популярные производители настольных вер- необходимые пакеты из Slackware.
сий Linux, вроде SuSE, Mandrake, Fedora, пытаются разме-
стить все приложения на трех-пяти дисках, и пользователю Установка
приходится долго выбирать из длинного списка то, что ему Устанавливать VectorLinux можно несколькими способами,
действительно нужно. Создатели канадского VectorLinux в том числе и используя скачанный iso-образ без записи
SOHO (http://www.vectorlinux.com), основой которого послу- его на диск. Начинающие пользователи не очень любят
жил Slackware, решили ограничиться одним-единственным Slackware, в том числе и за программу-инсталлятор. Надо
диском, на который поместилась полноценная рабочая сре- отметить, что в VectorLinux, как и в родительском дистри-
да со всеми необходимыми библиотеками и приложения- бутиве, программа установки не блещет графическими кра-
ми. В феврале 2005 года был анонсирован 5.0 релиз этого сотами: все та же простота и управляемость. Но создатели
дистрибутива, о котором и пойдет речь в статье. Как видно проделали хорошую работу и упростили то, что упростить,
из названия SOHO (Small Office/Home Office), этот дистри- казалось, уже невозможно. Мне приходилось иметь дело с
бутив предназначен для использования в настольных ком- предыдущими версиями VectorLinux. Почти полгода на моем
пьютерах. Главная задача SOHO версии VectorLinux – со- компьютере стояла версия SOHO 3.2. Тогда установка зак-
здать удобную рабочую среду с хорошей интеграцией при- лючалась в распаковке 650-мегабайтового архива в ука-
ложений, работающую быстро, простую в установке и не занный раздел, и единственное действие, которое необхо-
Работа в VectorLinux
Основной вывод после первого моего знакомства с Vector
Linux заключался в том, что это удобный настольный дист-
рибутив. Буквально с первых шагов чувствовалась забота
о пользователе, в консоли выводились подсказки, на рабо-
чем столе лежали «нужные» ярлыки. Особенно понрави-
Ðèñóíîê 1 лось меню Midnight Commander, в котором были дополни-
Если что-то не выходит, то, выбрав соответствующий тельные пункты, позволяющие конвертировать, установить,
пункт меню, можно выйти в оболочку (причем это будет пол- распаковать, создавать пакеты для установки в дистрибу-
ноценная оболочка с mc и прочими удобствами), где будет тиве. Причем работа с rpm, deb и tgz-пакетами была реали-
доступен fdisk и другие утилиты для форматирования и про- зована так, что пользователь вообще не задумывался о раз-
верки указанных выше файловых систем. Также пользова- нице между ними. Плюс дистрибутив имел свой аналог apt-
тели получили некоторую свободу в выборе программ. Пред- get из Debian, который назывался vec-get. Вопрос о быст-
лагаются две группы приложений. В первую, названную роте как-то не стоял, очевидно, быстродействие версии 3.2
«Bulk», входит три пакета: veclinux, содержащий базовую было приблизительно на одном уровне с другими дистри-
систему и основные приложения, OpenOffice, назначение бутивами. Хотя, учитывая продуманные загрузочные скрип-
которого понятно из названия, и XAMPP, представляющий ты и то, что без спроса не один сервис не запускался, гру-
из себя удобную инфраструктуру для программирования и зился он действительно быстро. К версии 5.0 применим
тестирования веб-приложений (Apache + MySQL + PHP + только один термин – ракета. По сравнению с ней осталь-
ProFTP и пр.). ные – это медленно ползущие черепахи. Рядом с ним по
Вторая группа packages включает общим счетом 61 при- быстродействию можно поставить разве что Gentoo stage3.
ложение, представляющие в большинстве своем альтерна- Я довольно редко работаю в KDE, которую считаю хоть и
тиву входящим в базовый комплект. Среди них MPlayer, удобной, но все же несколько медленной средой. В случае
AmaroK, Kaffeine, XMMS, Sylpheed, GIMP, Inkscape, Firefox с VectorLinux реакция системы была так быстра, что от этих
(с плагинами Flash, Java и Mplayer), QCad и пр. предрассудков не осталось и следа. И это при том, что сре-
После копирования файлов установка собственно и за- ди остальных вариантов SOHO считается самым медлен-
канчивается, система предлагает извлечь диск и перезаг- ным, отчасти от того, чтобы сделать пребывание пользова-
рузиться. После чего наступает этап постинсталляционной теля более удобным и комфортным. Огорчает то, что в ран-
настройки, в ходе которой необходимо будет определить- них версиях дистрибутива пакеты для локализации KDE
ся, куда устанавливать загрузчик, настроить X.Org, времен- хотя и не устанавливались вместе с системой, но все же
ной пояс, сеть, звук, задать пароль root и создать дополни- имелись на диске. Теперь их, как было отмечено выше,
тельных пользователей, а также выбрать вариант работы просто нет. Если же KDE (рис. 2) все равно покажется слиш-
(текстовый или графический, настольный или серверный). ком медленным, то пользователю предлагается альтерна-
При выборе графического режима работы сразу же загру- тива в виде IceWM. Причем его можно загрузить, так ска-
жает X-Window. В серверном варианте, дополнительно стар- зать, в чистом виде, а можно и с включенным ROX-Filer
туют Samba и sshd. Можно все настроить сейчас, но лучше – (http://rox.sourceforge.net), который расширяет возможнос-
потом, загрузившись и воспользовавшись утилитой VASM ти IceWM, добавляя поддержку иконок рабочего стола.
52
администрирование
Обычно у пользователей возникает проблема при мон- ивает сеть, принтеры, межсетевой экран, устанавливает заг-
тировании/размонтировании сменных носителей. В Vector рузчик, производит резервное копирование файлов и пр.
Linux работа с такими устройствами реализована на долж- Как видите, разработчики собрали в одной простой утили-
ном уровне, а при помощи контекстного меню, вызываемо- те все возможные настройки, с которыми обычно прихо-
го правой кнопкой мыши, можно всегда отмонтировать ус- дится иметь дело пользователю. Естественно, есть fdisk,
тройство даже в том случае, когда оно занято. В том числе Центр Управления KDE, GuardDog (настройка межсетевого
успешно получается проделать это и CD-ROM. экрана) и прочие утилиты, предназначенные для настрой-
ки отдельных параметров и сервисов, но в VASM сочетает-
ся одновременно интеграция возможностей и простота, по-
зволяющая без труда понять, как сделать ту или иную опе-
рацию, что в совокупности делают его хорошим орудием.
Хотя до возможностей SUSE YaST и Mandrake Control Center
он пока не дотягивает.
В последних версиях дистрибутива появилась еще одна
утилита, на которую возложена задача по установке/уда-
лению приложений, т.е. по работе с пакетами, называюща-
яся VLAPT.
Ðèñóíîê 2
Дистрибутив, кроме стандартных утилит, для настрой-
ки, имеет и свой конек – VASM (рис. 3), который появился в
версии 2.0 и постоянно модернизировался с учетом пред-
ложений пользователей.
Ðèñóíîê 4
Базируется VLAPT на slapt-get. В более ранних версиях
эту работу можно было сделать при помощи VASM, vec-get,
пунктов меню Midnight Commander (традиционные утилиты
от Slackware вроде installpkg, upgradepkg, естественно, тоже
доступны). Сейчас все лишнее убрано, и, очевидно, в даль-
нейшем пользователю, не желающему вникать в особен-
ности работы slapt-get и других консольных утилит из
pkgtools, будет предложен только VLAPT. О конкретных при-
ложениях особого смысла говорить нет. Достаточно отме-
тить, что поставляемые по умолчанию в дистрибутиве ути-
Ðèñóíîê 3 литы охватывают весь спектр потребностей среднестатис-
Начиная с версии 3.2, SOHO VASM получил графичес- тического пользователя. Меню организовано традиционно,
кий интерфейс (ранее можно было работать только из кон- а по клику на файле вызывается сопоставленное приложе-
соли), некоторые пункты стали доступны в виде отдельных ние. Так, веб-браузером по умолчанию является Firefox, как
команд. При вызове проверяется значение переменной альтернатива Konqueror. И все. Пользователю не нужно
$DISPLAY и в зависимости от того, в каком режиме (кон- будет выбирать между 5 разными браузерами. Аналогично
соль или X-Window) его запускают, используется соответ- и с остальными приложениями. В VectorLinux нет десятка
ствующий интерфейс. Некоторые надстроечные функции, текстовых редакторов, проигрывателей музыкальных и ви-
предоставляемые скриптом, будут доступны только пользо- деофайлов, почтовых клиентов. Пользователю предостав-
вателю root, а часть параметров (настройка X-сервера, об- лен необходимый, но удобный в работе минимум. В общем,
наружение нового оборудования) работают только в консо- он будет чувствовать себя здесь достаточно комфортно.
ли. VASM позволяет автоматически отключить, определить Пора подвести итоги. Подойдет ли VectorLinux SOHO
и настроить новое оборудование, берет на себя работу с начинающему пользователю? Сомнительно, хотя в уже на-
пользователями (добавление, удаление, изменение паро- строенной системе ему будет трудно запутаться. Но он при-
ля, быстрые команды /sbin/vuser, /sbin/vuseradd, /sbin/ дется по вкусу пользователю с небольшим уровнем подго-
vuserdel и /sbin/vpasswd), конфигурацию X-Window и на- товки или желающему освоить работу в Linux, использую-
стройку менеджера входа в систему, уровень запуска сис- щему Slackware, но считающему его несколько неудобным
темы, задает сервисы, запускаемые при загрузке, настра- или непонятным.
РЕИНКАРНАЦИЯ ДАННЫХ
СЕРГЕЙ СУПРУНОВ
Трудно представить себе предприятие или организацию, где мандой delete, она физически остается в файле, а в поле
не использовались бы базы данных для хранения инфор- признака удаления заносится символ 0x2A («*»). Такая за-
мации. Это и списки инвентаризации основных средств, и пись считается помеченной на удаление и по умолчанию в
базы абонентов – пользователей услуг предприятия, и т. п. операциях не участвует. Физическое удаление осуществ-
На российских просторах все еще огромной популярнос- ляется только в результате так называемой упаковки (pack)
тью пользуется формат DBF, в частности, именно в нем таблицы данных. Таким образом, нужно помнить, что дли-
хранит свои таблицы старый добрый FoxPro. Тем не менее на каждой записи будет определяться суммой длин полей
жизнь не стоит на месте, рано или поздно возникает воп- плюс один байт.
рос о переносе всех накопленных данных на более функ- Òàáëèöà 2. Ñòðóêòóðà «îãëàâëåíèÿ» òàáëèöû
циональные СУБД. В данной статье рассматривается не-
сколько способов осуществления такой миграции из FoxPro
в БД PostgreSQL. Способы различаются как сложностью
реализации (хотя это довольно субъективный критерий), так
и степенью автоматизации. Естественно, перечень возмож-
ных реализаций никоим образом не ограничивается при-
веденным здесь.
Итак, задача – перенести информацию, хранящуюся в
формате DBF (СУБД FoxPro 2.6), в базу данных PostgreSQL
(используемая версия сервера – 8.0.1, операционная сис-
тема – FreeBSD 5.3). Прежде чем приступать к решениям,
рассмотрим, что представляет собой DBF-файл. Импорт внешних файлов в PostgreSQL
СУБД PostgreSQL позволяет осуществлять загрузку дан-
Формат DBF ных из внешних файлов и экспорт во внешние файлы с по-
Формат DBF достаточно прост: 32 байта заголовка файла, мощью команды COPY.
«оглавление» таблицы, данные. В таблице представлен фор- Ее синтаксис следующий:
мат заголовка с кратким описанием каждого поля:
serg=> \h copy
Òàáëèöà 1. Ñòðóêòóðà çàãîëîâêà DBF-ôàéëà Команда: COPY
Описание: копировать данные между файлом и таблицей
Синтаксис:
COPY tablename [ ( column [, ...] ) ]
{FROM | TO} { 'filename' | STDIN }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ]
[ CSV [ QUOTE [ AS ] 'quote' ]
[ ESCAPE [ AS ] 'escape' ]
[ FORCE NOT NULL column [, ...] ]
54
администрирование
файл в виде «2005-04-04», что позволит в дальнейшем заг- Первые два способа особых сложностей вызвать не дол-
рузить его также в поле даты. А может принять вид «4 ап- жны, поэтому в дальнейшем сосредоточимся на третьем, и
реля 2005 года», и его уже можно будет импортировать толь- будем осуществлять преобразование данных из cp866 в
ко в текстовое поле. koi8-r в процессе переноса данных.
Опции BINARY и OIDS в данном случае нас не интере-
суют – они могут быть полезны, когда и импорт, и экспорт Замечание о memo-полях
выполняется в PostgreSQL. FoxPro использует поля типа MEMO для хранения больших
Текстовый формат загружаемого файла достаточно текстовых данных неопределенного размера во внешнем
прост – каждая запись должна размещаться в одной стро- файле (обычно используется расширение fpt). Работа с эти-
ке, поля разделяются с помощью одиночного символа ми полями имеет ряд особенностей, но о них поговорим в
«delimiter». Если символ-разделитель встречается внутри следующей части статьи, поэтому сейчас будем полагать,
поля данных, он должен экранироваться символом «\». Оди- что экспортируемые таблицы полей такого типа не содер-
ночный символ «\», встречающийся в данных, должен так- жат.
же экранироваться, чтобы исключить его специальную трак-
товку. Путь 1: подготовка данных
Начиная с версии PostgreSQL 8.0 поддерживается так- с помощью FoxPro
же загрузка из CSV-файла, который является, по сути, фай- СУБД FoxPro предоставляет пользователю достаточно мощ-
лом с разделителем (обычно – запятая), с той разницей, ный язык программирования, чем мы и воспользуемся. В
что поля данных для исключения неоднозначности при об- данном разделе мы напишем несложную программу, кото-
работке символов могут заключаться в кавычки. рая будет формировать текстовый файл с разделителями,
Еще один параметр, NULL AS, задает символьную стро- пригодный для импорта в PostgreSQL с помощью команды
ку, которая будет рассматриваться как значение NULL. По COPY. В качестве разделителя будем использовать сим-
умолчанию используется последовательность «\N». вол табуляции.
Нужно заметить, что при работе в терминале psql дос-
тупны две команды: COPY и \COPY. Первая – это SQL-ко- Ëèñòèíã 1. Ïðîãðàììà dbf2pg.prg íà FoxPro
манда, выполняемая сервером, вторая – команда интерак- *  FoxPro êîììåíòàðèè íà÷èíàþòñÿ ñèìâîëîì «*»
тивного клиента. Разница между ними в правах, с которы- * Óñòàíàâëèâàåì ôîðìàò äàòû
SET DATE TO YMD
ми они выполняются. В первом случае возможности досту- SET CENTURY ON
па определяются правами процесса postmaster, во втором * Îòêðûâàåì òàáëèöó äëÿ ýêñïîðòà
USE s_cats ALIAS tab
– правами пользователя, запустившего psql. * Îïðåäåëÿåì ðàçäåëèòåëü êàê ñèìâîë òàáóëÿöèè
Обратите внимание, что если в процессе загрузки воз- m.delimiter = CHR(9)
никает ошибка (например, в какой-то строке не хватает поля * Îïðåäåëÿåì ñòðîêè äëÿ ïåðåêîäèðîâêè â koi8
или имеется лишнее, формат данных не соответствует типу !Ö¤ ·°¹ð¸'
m.koiabcb = 'ñò¢÷ôõ¡·ùúûüýþÿ¨ªº¯¿öøó!
m.koiabcs = ' '
поля, в которое осуществляется запись и т. д.), то ни одна m.koiabc = m.koiabcb + m.koiabcs
из записей в итоговую таблицу не попадает, то есть им-
m.dosabcb = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß'
порт выполняется как единый транзакционный блок. m.dosabcs = 'àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
m.dosabc = m.dosabcb + m.dosabcs
Несколько слов о кодировках * Óêàçûâàåì êîäèðîâêó
Как всегда, если речь идет о переносе данных между раз- m.dstcp = 'koi8'
личными системами, встает вопрос о преобразовании ис- * Ñîçäàåì ðåçóëüòèðóþùèé ôàéë è îòêðûâàåì åãî
пользуемых кодировок. FoxPro обычно хранит данные в * íà çàïèñü (äåñêðèïòîð – â ïåðåìåííîé m.txf)
m.txf = FCREATE('table.txt')
cp866 (FoxPro for DOS) или в cp1251 (FoxPro for Windows).
В то же время кодировка баз PostgreSQL может быть иной * Äåëàåì òàáëèöó àêòèâíîé
SELECT tab
(у меня, например, это koi8-r). Решить эту проблему можно * Öèêë ïî âñåì çàïèñÿì òàáëèöû
одним из трех способов: SCAN
* Ôîðìèðóåì ñòðîêó, óäàëÿÿ ëèøíèå ïðîáåëû
! Создать базу данных PostgreSQL с кодировкой, соответ- m.temp = ALLTRIM(uniqueid) + m.delimiter + ;
ствующей кодировке DBF-файлов. Это выполняется с по- ALLTRIM(user) + m.delimiter + ;
ALLTRIM(city) + m.delimiter + ;
мощью ключа ENCODING команды CREATE DATABASE. ALLTRIM(address) + m.delimiter + ;
Однако при этом могут возникнуть дополнительные ALLTRIM(tariff) + m.delimiter + ;
ALLTRIM(category) + m.delimiter + ;
трудности при обработке данных, если кодировка БД не IIF(EMPTY(date), '\N', ;
соответствует установленной локализации операцион- STRTRAN(DTOC(date), '/', '-'))
ной системы. * Åñëè âñòðå÷àåòñÿ òàáóëÿöèÿ – ìåíÿåì íà 4 ïðîáåëà
! Если сервер будет использоваться преимущественно как m.temp = STRTRAN(m.temp, CHR(9), SPACE(4))
сервер баз данных, а БД будет хранить в основном дан- IF m.dstcp == 'koi8'
ные, импортированные из FoxPro, то имеет смысл сра- * Åñëè â koi8, òî èñïîëüçóåì ñâîþ ôóíêöèþ
m.temp = dos2koi(m.temp)
зу «подогнать» кодировку операционной системы и базы ELSE
данных под кодировку файла DBF. * èíà÷å – ïîëüçóåìñÿ øòàòíîé ôóíêöèåé ïåðåêîäèðîâêè
m.temp = CPCONVERT(866, m.dstcp, m.temp)
! Наиболее универсальный способ – перекодировка дан- ENDIF
ных на стадии импорта. * Ýêðàíèðóåì ñèìâîëû '\'
56
администрирование
fields.append(fld) # Åñëè ôîðìèðóþòñÿ êîìàíäû äëÿ \i, òî çàêàí÷èâàåì
num = num + 1 # äàííûå ñòðîêîé ‘\.’
totlen = totlen + fld.len if withcommand:
print '\\.'
if withcommand:
# Åñëè ïåðåìåííàÿ èñòèííà, òî ôîðìèðóåì êîìàíäó # Óñòàíàâëèâàåì íàñòðîå÷íûå ïåðåìåííûå
# íà ñîçäàíèå òàáëèöû delimiter = "\t"
withcommand = 1
cmd = 'CREATE TABLE %s (' % tablename tablename = 'users'
for i in range(num):
fld = fields[i] # âûçûâàåì ôóíêöèþ ïðåîáðàçîâàíèÿ
cmd = cmd + fld.name + ' ' dbf2pg('users.dbf')
if fld.type == 'C':
cmd = cmd + ↵ Вывод в данном случае направляется в стандартный
'char(' + str(fld.len) + '), '
поток stdout, поэтому для формирования файла следует
elif fld.type == 'D': использовать перенаправление:
cmd = cmd + 'date, '
elif fld.type == 'N' : $ ./dbd2pg.py > USERS.TXT
cmd = cmd + ↵
'numeric(' + str(fld.len) + ↵
',' + str(fld.dec) + '), ' При переменной withcommand, установленной в 0, мы по-
# Ïîñëåäíþþ çàïÿòóþ è ïðîáåë ìåíÿåì лучаем такой же файл с разделителями, как и ранее с помо-
# íà çàêðûâàþùóþ ñêîáêó è òî÷êó ñ çàïÿòîé щью FoxPro. Соответственно импортироваться в PostgreSQL
cmd = cmd[:-2] + ');'
print cmd информация будет аналогично.
# Ôîðìèðóåì êîìàíäó ÷òåíèÿ äàííûõ èç ïîòîêà ââîäà
Однако обратите внимание, что теперь мы имеем всю
cmd = 'COPY users FROM stdin;' информацию о полях данных, включая тип поля и его на-
print cmd звание. Так почему бы не воспользоваться этим для авто-
# Ôîðìèðóåì ñàì ïîòîê ââîäà матического формирования таблицы PostgreSQL нужной
dbf.seek(posfirst) структуры? Именно эта идея и реализуется, если перемен-
for rec in range(dblen):
if dbf.read(1) != '*': ной withcommand присвоить значение 1. При этом загрузка
# Åñëè çàïèñü íå ïîìå÷åíà íà óäàëåíèå, òî îáðàáîòêà: данных будет осуществляться по тому же принципу, какой
line = '' используется при восстановлении из текстовой резервной
for i in range(num): копии: при выполнении команды «\i файл» в терминале psql
# Öèêë ïî âñåì ïîëÿì
fld = dbf.read(fields[i].len) содержимое указанного файла будет рассматриваться как
# Åñëè äàòà – ïðåîáðàçóåì ввод с клавиатуры в интерактивном режиме.
# â ôîðìàò YYYY-MM-DD
# èç ôîðìàòà YYYYMMDD Таким образом, мы формируем команду CREATE TABLE
if fields[i].type == 'D': в соответствии с информацией о названиях и типах полей
fld = fld[:4] + '-' + ↵
fld[4:6] + '-' + ↵ таблицы, а затем команду COPY .. FROM stdin, которая бу-
fld[6:] дет считывать последующие данные, пока не обнаружит стро-
# Åñëè äàòà ïóñòàÿ, ìåíÿåì ку «\.». Здесь следует обратить внимание на то, что имена
# åå íà çíà÷åíèå NULL полей должны быть допустимы в PostgreSQL. Так, например,
if fld == ' - - ':
fld = '\N' имя USER, вполне нормальное для FoxPro, PostgreSQL рас-
# Äëÿ ïóñòûõ ÷èñëîâûõ ïîëåé
сматривает как служебное слово, не позволяя создавать
# ñòàâèì çíà÷åíèå 0 таблицу с таким столбцом. Впрочем, это ограничение мож-
if fields[i].type == 'N' ↵ но обойти, если имена полей заключить в кавычки – в та-
and fld[-1] == ' ':
fld = '0' ком случае любое имя будет восприниматься «как есть»,
# Ýêðàíèðóåì ñèìâîë ‘\’,
правда, и в дальнейшей работе нужно будет использовать
# åñëè òàêîâîé âñòðå÷àåòñÿ кавычки и строго соблюдать регистр символов.
# â êîíöå ïîëÿ, Еще одно замечание – теперь, поскольку таблицу мы
# ò.ê. îí ýêðàíèðóåò ðàçäåëèòåëü
if fld[-1] == '\\': создаем автоматически, на момент импорта она не должна
fld = fld + '\\' существовать.
# Äëÿ ñòðîêîâûõ ïîëåé âûïîëíÿåì Рассмотренный способ хотя и требует несколько боль-
# ïåðåêîäèðîâêó ших усилий на разработку сценария, но заметно упрощает
if fields[i].type == 'C':
fld = unicode(fld, ↵ перенос данных, автоматизируя создание нужных таблиц.
'cp866').encode('koi8-r') При этом работа идет заметно быстрее – на обработку той
# Äîïèñûâàåì ê ñòðîêå çàïèñè же таблицы абонентов тратится менее секунды.
# ÷åðåç ðàçäåëèòåëü
line = line + fld + delimiter
Путь 3: непосредственная запись
# Âûâîäèì ïîëó÷åííóþ ñòðîêó, îòðåçàâ в базу данных
# ïîñëåäíèé ðàçäåëèòåëü
print line[:-1] Рассмотренные выше способы так или иначе привязаны к
else: команде COPY. А что, если мы не можем записать тексто-
# Åñëè çàïèñü ïîìå÷åíà íà óäàëåíèå,
# òî ïðîñòî äî÷èòûâàåì åå îñòàòîê, вый файл на диск в том месте, где он будет доступен про-
# íè÷åãî íå îáðàáàòûâàÿ цессу postmaster? Или нет доступа к клиенту psql? В этом
dbf.read(totlen - 1)
dbf.close случае можно непосредственно формировать команды
58
безопасность
ЗАЩИТА КОММУНИКАЦИЙ
WINDOWS MOBILE
НАТАЛЬЯ МЕЛЬНИКОВА
В последний год рынок мобильных устройств переживает на- зует цифровые сертификаты, в связи с чем первым этапом
стоящий бум. Стремительно совершенствуясь, мобильные в настройке защищенных коммуникаций является настрой-
телефоны по уровню «интеллектуальной» начинки догоня- ка клиентских компонентов PKI на КПК.
ют карманные компьютеры (КПК), а те, в свою очередь, раз-
вивают свои коммуникационные возможности. И порой уже Управление сертификатами
трудно понять, чем является то или иное устройство – смарт- В мобильной версии Windows существует только одно хра-
фоном (т.е. интеллектуальным сотовым телефоном) или ком- нилище сертификатов, управлять которым можно с помо-
муникатором (КПК с расширенными сетевыми возможнос- щью приложения Certificates («Start → Settings → System →
тями). Certificates»). В приложении имеется две закладки: Personal
Большинство современных КПК оснащено модулями и Root.
беспроводной связи 802.11, и имеют возможность исполь-
зовать GPRS-функции сотового телефона для подключе-
ния к Интернету (причем делать это тоже «по воздуху» –
через инфракрасный порт или Bluetooth). Этот потенциал
сначала поражает, но быстро становится привычным, и че-
рез некоторое время отсутствие возможности синхронизи-
ровать свой КПК с корпоративным сервером Exchange вос-
принимается как нечто совершенно «дикое».
Но как обычно бывает в жизни, удобства в одной обла-
сти приносят проблемы в других сферах. Так, серьезным
препятствием на пути внедрения мобильных клиентов в кор-
поративных сетях является низкий уровень стандартных
средств защиты беспроводных коммуникаций, таких как
A5/A8, WEP и т. д. Ðèñóíîê 1. Óïðàâëåíèå ñåðòèôèêàòàìè
Мобильные клиенты на основе Windows Mobile 2003 пре- Первая из них относится к персональным сертификатам
доставляют администратору богатый арсенал средств за- устройства или пользователя (в Windows Mobile нет такого
щиты сетевых соединений. В него входят прекрасно заре- жесткого разделения, как в настольной версии).
комендовавшие себя протоколы, такие как WPA и 802.1X, Во второй перечислены доверенные центры сертифи-
L2TP/IPSec, SSL/TLS. Большинство этих технологий исполь- кации (CA).
60
безопасность
За редким исключением сертификат корпоративного цен- Session», перейти на закладку «Security» и присвоить пра-
тра сертификации не является доверенным по умолчанию. во Enroll группе мобильных пользователей. Затем нужно сно-
Для того чтобы устройство могло проверять сертификаты, ва щелкнуть на пункте «Certificate Templates» в оснастке уп-
выданные корпоративным центром сертификации, необхо- равления CA и выбрать пункт контекстного меню «New →
димо поместить сертификат CA в список доверенных (кор- Certificate Template To Issue», после чего дважды щелкнуть
невых) центров. Для этого достаточно скопировать серти- на пункте «Authenticated Session».
фикат CA на КПК с помощью ActiveSync и щелкнуть на нем.
62
безопасность
сервера RADIUS указан протокол аутентификации, отлич- необходимо нажать на кнопку Network Card и указать, что
ный от протокола, используемого устройством. данные сетевые карты подключены к Интернету (рис. 9).
Event Type: Warning
Event Source: IAS
Event Category: None
Event ID: 2
Date: 02.04.2005
Time: 14:13:40
User: N/A
Computer: DC
Description:
User dom01\User was denied access.
Fully-Qualified-User-Name = dom01.infosec.ru/Users/User
NAS-IP-Address = 192.168.0.50
NAS-Identifier = DWL-2000AP
Called-Station-Identifier = 00-0d-88-84-a2-b1
Calling-Station-Identifier = 00-30-05-73-60-06
Client-Friendly-Name = Access Point
Client-IP-Address = 192.168.0.50
NAS-Port-Type = Wireless - IEEE 802.11
Ðèñóíîê 8. Íàñòðîéêà ïðîôèëÿ VPN
NAS-Port = 0
Proxy-Policy-Name = Use Windows authentication for all users
Authentication-Provider = Windows
Authentication-Server = <undetermined>
Policy-Name = Wireless
Authentication-Type = EAP
EAP-Type = <undetermined>
Reason-Code = 22
Reason = The client could not be authenticated because the Extensible
Authentication Protocol (EAP) Type cannot be processed by the server.
Построение VPN
Мобильный клиент на основе Windows может использовать
технологии VPN для подключения к ресурсам сети. Поддер-
живаются протоколы PPTP и L2TP/IPSec. В случае исполь-
зования IPSec для аутентификации устройства могут при-
меняться цифровые сертификаты или общий ключ. Ðèñóíîê 10. Ñîåäèíåíèå VPN
Если при соединении с сервером VPN используется не Для мониторинга соединений удобно пользоваться ос-
модем, а беспроводной адаптер, необходимо настроить про- насткой «MMC IP Security Monitor» или утилитой командной
фили подключения. Для этого в настройках соединения строки netsh.
(«Settings → Connections → Connections → Advanced →
Select Network») нужно открыть настройки «внутренней»
сети, нажав на нижнюю кнопку «Edit», после чего на заклад-
ке «VPN» нажать кнопку «New» и указать параметры под-
ключения к VPN (рис. 8).
Затем указывается, что беспроводной адаптер подклю-
чает устройство к Интернету, а не к внутренней сети. Это
делается для того, чтобы Windows могла задействовать VPN
при активном соединении. Для этого в настройках соеди-
нений («Settings → Connections → Connections → Advanced») Ðèñóíîê 11. Ïðîñìîòð ñîåäèíåíèé IPSec â óòèëèòå nesh
64
безопасность
УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ
INTERNET EXPLORER
НАТАЛЬЯ МЕЛЬНИКОВА
Проблема защиты клиентского рабочего места становится вание российских специалистов в области информацион-
всё более и более актуальной. Это связано с рядом при- ной безопасности [1] показывает, что для обхода большин-
чин, но в первую очередь – со смещением вектора атак с ства современных средств защиты клиентских приложений
серверного на клиентское программное обеспечение. Ста- достаточно умения работы с программой «Блокнот» и эле-
тистика инцидентов показывает, что больший процент на- ментарных навыков программирования на VBScript.
рушений компьютерной безопасности как в корпоративном, Наиболее часто рассматриваемым в данном контексте
так и в частном секторе, происходит именно посредством приложением является браузер Internet Explorer. Его возмож-
компрометации рабочих мест пользователя. ности не только обеспечивают создание многофункциональ-
К сожалению, проблеме защиты приложений пользова- ных интерактивных веб-приложений, но позволяют зло-
теля уделяется меньше внимания, чем защите серверов. В умышленнику повышать свои привилегии на рабочей стан-
современных корпоративных информационных системах ции пользователя. В связи с большим количеством уязви-
большинство средств защиты сконцентрировано на пери- мостей в IE, опубликованных во второй половине прошло-
метре сети, и если они были обойдены, сеть становится без- го года, в сообществе специалистов в области безопасно-
защитной. Злоумышленник получает доступ к рабочей стан- сти довольно бурно обсуждается идея перехода на альтер-
ции и соответственно ко всем ресурсам сети, с которыми нативные программы работы с World Wide Web. Даже та-
может работать пользователь. Этого вполне достаточно для кая уважаемая организация, как CERT, не удержалась от
решения широкого спектра задач – от рассылки спама и спекуляций на эту тему [2].
сбора конфиденциальной информации до промышленного Однако при попытке заменить Internet Explorer в корпо-
шпионажа. ративных сетях администратору приходится столкнуться с
Конечно, индустрия не стоит на месте, и появляются но- некоторыми проблемами. Первая – отсутствие необходимых
вые методы и продукты для защиты приложений пользова- функциональных возможностей. Многие распространенные
теля. Однако, как показывает практика, на настоящий мо- серверные приложения, такие как Outlook Web Access,
мент их недостаточно. Недавно опубликованное исследо- SharePoint Portal Server активно используют различные рас-
66
безопасность
ширения DHTML, реализованные только в Internet Explorer. Поскольку разрешения на ветвь HKLM запрещают поль-
Многие клиентские приложения также используют COM- зователю модифицировать значения, содержащиеся в ни-
объекты Internet Explorer для формирования интерфейса жележащих разделах, то у него не будет возможности из-
пользователя. Таким образом, на клиентском рабочем ме- менить параметры, назначенные администратором. В боль-
сте оказывается две программы для работы с WEB – Internet шинстве случаев рекомендуется задействовать данную на-
Explorer для обращения к корпоративным приложениям, и стройку, поскольку пользователь или вредоносное про-
альтернативный браузер для выхода в Интернет. Это сни- граммное обеспечение, работающее в его контексте безо-
жает удобство использования и повышает вероятность воз- пасности, может менять настройки браузера, снижая уро-
никновения пользовательских ошибок. Кроме того, возни- вень защищенности. Примером может являться троянская
кает ряд дополнительных проблем. программа Win32.Secdrop.C [4], при установке разрешаю-
Усложняется задача управления сетью. Поскольку боль- щая загрузку и запуск неподписанных компонентов ActiveX
шинство из альтернативных программ работы с WWW не из Internet.
поддерживает функции централизованного управления (ти- В случае если задействована эта настройка, все пара-
ражирование конфигурационных файлов через групповые метры Internet Explorer необходимо изменять в ветви HKLM
политики – не самый удобный путь), повышаются затраты (или разделе Computer Configuration ОГП). Соответствен-
на поддержку клиентских машин. Вновь встает задача уп- но, если для изменения параметров будут задействованы
равления оперативными обновлениями, поскольку миф об сценарии, то необходимо использовать те из них, которые
отсутствии ошибок в альтернативных браузерах, как и пред- выполняются с достаточными привилегиями, а именно –
полагалось [3], был быстро развеян. Выходят обновления и Startup Script и Shutdown Script. Кроме того, для примене-
новые версии программ, но современные средства управ- ния параметров необходимо, чтобы отработала групповая
ления обновлениями (и поиска уязвимостей) их не поддер- политика уровня компьютера, что в некоторых случаях тре-
живают, и администратору приходится следить за актуаль- бует перезагрузки. Ещё одной потенциальной проблемой
ностью версий программ самостоятельно. является то, что исчезает возможность персонифицировать
Кроме того, в сети на основе Active Directory часто про- настройки Internet Explorer для разных пользователей од-
исходит снижение уровня безопасности, поскольку вместо ного и того же компьютера. Однако необходимость в раз-
привычных протоколов аутентификации NTLMv2 и Kerberos личных настройках IE для разных пользователей является
начинают использоваться гораздо более уязвимые меха- скорее исключением, чем правилом.
низмы Digest или Basic. Не всегда хорошо работает аутен- Для настройки зон безопасности используются следую-
тификация с использованием клиентских сертификатов из щие подразделы: HKLM(HKKU)\Software\Microsoft\Windows\
хранилища Windows или Smartcard. CurrentVersion\Internet Settings:
Учитывая все вышеперечисленное, вполне вероятно ! TemplatePolicies
предположить, что снижение рисков, которое сулит пере- ! ZoneMap
ход на альтернативные браузеры, не окупит повышения зат- ! Zones
рат на эксплуатацию.
Давайте рассмотрим стандартные возможности настрой- Раздел TemplatePolicies содержит предопределенные
ки Internet Explorer, использование которых позволяет под- уровни безопасности, которые в дальнейшем могут исполь-
нять уровень защищенности клиентских рабочих мест на зоваться для настройки зон. Этот раздел содержится толь-
довольно высокий уровень. Дополнительным преимуще- ко в ветке HKLM, и модифицировать его не рекомендуется,
ством использования данных настроек является то, что они поскольку такая операция затруднит процесс восстановле-
легко тиражируются с помощью стандартных средств уп- ния стандартных настроек в случае возникновения сбоев.
равления корпоративной сетью на базе Windows, таких как В разделе ZoneMap описывается привязка узлов и до-
Active Directory. менов к зонам безопасности. Подраздел Domains содер-
Основным средством настройки безопасности интернет- жит иерархическую структуру, в которой в качестве клю-
приложений Microsoft были и остаются зоны безопасности. чей выступают имена доменов и узлов, параметры описы-
Зоны безопасности представляют собой группы адресов вают протоколы, а значения параметров указывают на но-
(URL), которым соответствуют те или иные настройки под- мер зоны безопасности. Нижеприведенная структура раз-
системы безопасности. Настройки Internet Explorer сохра- делов реестра указывает на то, что при обращении к сер-
няются в разделах HKLM(HKCU) Software\Microsoft\Windows\ веру www.isc2.org по протоколу https будут задействованы
CurrentVersion\Internet Settings. настройки второй зоны безопасности (Trusted Sites, Дове-
По умолчанию Internet Explorer считывает настройки из ренные узлы): ZoneMap → Domains → sc2.org → www → https
ветви HKCU, однако это поведение можно изменить. Уста- (DWORD)=2.
новка значения Enabled в параметре объекта групповой по- Структура может быть более сложной. Например, сле-
литики (ОГП) Computer Configuration\Administrative Templates\ дующий вариант предписывает при обращении к любому
Windows Components\Internet Explorer\Security Zones: Use only узлу в домене *.microsoft.com по протоколу https использо-
machine settings присваивает значение параметру реестра. вать зону безопасности Trusted Sites. Для обработки содер-
HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\ жимого страниц на сервере www.microsoft.com, полученных
Internet Settings\Security_HKLM_only равным 1, после чего по протоколу http, будут использоваться настройки зоны
Internet Explorer начинает использовать настройки из ветви Internet: ZoneMap → Domains → microsoft.com → https
HKLM. (DWORD)=2, www → http (DWORD)=3.
68
безопасность
фикации реестра. Однако зачастую удобней предваритель- Configuration → Administrative Templates → Windows
ную настройку осуществлять с помощью GUI. Для того что- Components → Internet Explorer → Administrator Approved
бы зона безопасности отображалась в Internet Explorer, не- Controls».
обходимо уменьшить значение параметра Flags для этой По умолчанию набор компонентов невелик и может не
зоны на 32: HKLM(HKCU)\Software\Microsoft\Windows\Current содержать необходимые ActiveX. В этом случае целесооб-
Version\Internet Settings\Zones\0: разно изменить административный шаблон %systemroot%\
inf\inetres.adm, добавив в него CLSID используемых элемен-
Flags(DWORD)=1 тов ActiveX.
70
безопасность
тративный шаблон %systemroot%\inf\inetres.adm из дистри- опубликованным проблемам. Кроме того, не стоит забы-
бутива Windows XP Service Pack 2. вать о других средствах защиты, таких как управление об-
новлениями безопасности и фильтрация содержимого. На-
пример, на сервере www.isatools.org можно найти сценарии,
настраивающие ISA Server 2004 на блокировку распрост-
раненных атак.
Литература:
1. Обход средств защиты клиентских приложений. – http://
www.security.nnov.ru/advisories/bypassing.asp.
2. US-CERT. Vulnerability Note VU#713878. – http://www.kb.
cert.org/vuls/id/713878.
3. Drew Copley. Switching Software Because of Bugs. – http://
www.securityfocus.com/archive/1/367723/2004-06-25/2004-
07-01/0.
Ðèñóíîê 4. Èìïîðò íàñòðîåê çîí áåçîïàñíîñòè â ÎÃÏ 4. Trojan Win32.Secdrop.C. – http://www3.ca.com/security
Хотя распространенность уязвимостей типа «Внедрение advisor/virusinfo/virus.aspx?id=40225.
сценариев» (Cross-Site Scripting) в веб-серверах делает кон- 5. Internet Explorer «Object Type» vulnerability. – http://www.cve.
цепцию разделения уровня безопасности по зонам на ос- mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0532.
нове имен доменов и IP-адресов серверов очень условной, 6. Windows XP Service Pack 2 Enhancements to Internet
не стоит отказываться от этого механизма защиты. Explorer 6. – http://www.microsoft.com/windows/ieak/
Описанные настройки позволяют значительно повысить techinfo/deploy/60/en/appendix.mspx.
защищенность Internet Explorer от 0day-угроз, т.е. тех уяз- 7. Qwik-Fix Pro. – http://www.pivx.com/qwikfix.asp.
вимостей, которые ещё не были устранены производите- 8. NTLM и корпоративные сети. – http://www.securitylab.ru/
лем. Всегда стоит отслеживать новые уязвимости и тести- 49547.html.
ровать свою конфигурацию на подверженность недавно
АЛЕКСЕЙ МИЧУРИН
Напомню коротко, что POD – это система разработки элек- вертирование русской man-страницы в тот же PostScript ока-
тронной документации. Она предполагает, что документ раз- зывается не такой уж простой задачей. Во-вторых, LaTeX-
рабатывается в определённом достаточно простом форма- исходник открывает перед вами все возможности системы
те, и предоставляет средства конвертирования исходного LaTeX. Вы можете вставлять в документ рисунки, форма-
POD-документа в другие форматы для печати и просмотра. тировать документ в несколько колонок, формировать ав-
В первой части статьи мы рассмотрели средства конвер- томатические оглавления, пользоваться системой автома-
тирования в форматы «неразмеченный текст», man-страни- тической расстановки переносов и многое другое. В фор-
ца и HTML. В этой части рассмотрим конвертирование в мате man все эти возможности недоступны. Согласитесь,
PostScript и PDF. некоторое усложнение вполне стоит того.
Напомню, что POD-документ состоит из абзацев, кото-
рые разделяются пустой строкой. Абзацы бывают трёх ти- Первое знакомство с pod2latex
пов: форматированные, для представления обычного тек- Первое знакомство с pod2latex может окончиться конфу-
ста, неформатированные, для листингов программ, и уп- зом. Скорее всего, конвертер pod2latex откажется обраба-
равляющие, для формирования структурных элементов (за- тывать русскоязычные документы. Насколько мне удалось
головков, списков) и внедрения формат-специфических разобраться, скрипт pod2latex и все модули, вызываемые в
вставок. Неформатированные абзацы начинаются с пробе- нём, полностью игнорируют локализацию.
ла. Управляющие – с команды. В форматированных и уп- Источник проблемы – модуль Pod::Find, который с по-
равляющих абзацах допустимо элементарное оформление мощью Perl-оператора -T проверяет, является ли файл дей-
текста (например, I<курсив> или B<жирный шрифт>) и встав- ствительно текстовым. Этот оператор может счесть ваш до-
ка не ASCII-символов (например, E<deg> – значок градуса). кумент двоичным файлом из-за присутствия в нём русских
Команды начинаются со знака «равно» (например, =head1 букв.
задаёт заголовок первого уровня). Более того, насколько я понимаю, оператор -T делает своё
В качестве примера я использовал тот же POD-документ, заключение, проанализировав только небольшую часть ин-
что и в первой части статьи. формации в начале файла. Поэтому если файл начинается
На сайте журнала http://www.samag.ru в разделе «Ис- с некоторого английского текста, а первые русские буквы
ходный код» вы можете взять архив с POD-кодом и всеми начинают встречаться ниже, то pod2latex может обработать
обсуждаемыми здесь скриптами. такой файл. Но если русские буквы появятся ближе к нача-
лу файла, то pod2latex наотрез откажется с ним работать.
Конвертирование POD в TeX, Такое поведение утилиты может сбить с толку при поиске
PostScript и PDF причины недоразумений.
Для конвертирования POD-документов в форматы PostScript Идеологически верным решением является подключе-
и PDF проще всего сперва сконвертировать POD в LaTeX, ние в pod2latex поддержки локализации, за которую отве-
a из LaTeX-исходника получить все необходимые PostScript- чает прагма locale. То есть в начало скрипта pod2latex сле-
и PDF-файлы. дует добавить строку:
На первый взгляд такой путь может показаться излиш-
не сложным. Действительно, мы уже умеем создавать man- use locale;
страницы (см. первую часть статьи). А из них легко можно
получить PS- или PDF-файл; например так: И конечно, вам следует настроить локаль. Проще всего
это сделать, установив переменную среды LANG. У меня
cat page.man | /usr/bin/tbl | LANG=ru_RU.KOI8-R. В вашей системе называние русской
/usr/bin/groff -S -Wall -mtty-char -man -Tps >page.ps
локали может слегка отличаться. Вы можете посмотреть
Но это экстенсивный путь. Во-первых, man-документ не полный список локалей, установленных в вашей системе,
несёт никакой информации о кодировке и корректное кон- выполнив команду locale -a.
72
программирование
Другой, более вероломный путь, практически не потре- % Îãîâàðèâàåì êîäèðîâêó äîêóìåíòà
бует знания Perl и перенастройки системы (иногда настрой- %\usepackage[cp866]{inputenc}
\usepackage[koi8-r]{inputenc}
ка русской локали бывает нежелательна). \usepackage[russian]{babel}
Самое простое решение – отредактировать модуль \selectlanguage{russian}
\usepackage{draftcopy}
Pod::Find, удалив соответствующую проверку. Внимание!
Cохраните оригинальную версию файла, прежде чем редак- % Âêëþ÷àåì ãðàôè÷åñêèé ïàêåò
\usepackage[dvips]{graphicx}
тировать его! В моей системе это файл /usr/local/lib/perl5/5.8.5/ %\graphicspath{{ps/}}
Pod/Find.pm. У меня установлен Pod::Find версии 0.24_01, % Ìàêðîñ äëÿ âñòàâêè êàðòèíîê
\newcommand{\inspsfig}[3]{
в нём проверка выполняется в строке 251. Чтобы отменить \begin{figure}[!htbp]
проверку замените \begin{center}
\includegraphics[angle=0, width=#2\textwidth]{#1}
\end{center}
unless(-f $file && -T _ && ($file =~ /\.(pod|pm|plx?)\z/i ↵ \caption{#3}
|| -x _ )) %\label{text}
\end{figure}
на }
% Äîêóìåíò íà÷àëñÿ
Так или иначе теперь мы заставили pod2latex работать \begin{document}
с русскими документами, и вы точно сможете сконвертиро- %  íà÷àëå äîêóìåíòà ãåíåðèðóåì îãëàâëåíèå è ...
вать русскоязычный POD-документ в формат LaTeX. Но до- \tableofcontents
% ... ñïèñîê èëëþñòðàöèé
кумент окажется неполным. \listoffigures
Дело в том, что LaTeX-документы, как и HTML-докумен- % Ìîæíî íà÷àòü äîêóìåíò ñî ñëåäóþùåé ñòðàíèöû
%\newpage
ты, состоят из заголовка и тела. Утилита pod2latex создаёт % à ìîæíî ïðîñòî çàäàòü îòñòóï
только тело. Надо сказать, что эта утилита способна со- %\vspace{50mm}
здать и полный документ, но в нём не будет содержаться Первым делом мы задаём класс документа (\document-
никакой информации о языке и кодировке, то есть для рус- class). Настраиваем размер шрифта (10pt), размер бумаги
скоязычных документов эта возможность не очень полез- (A5), если вам необходимо сверстать документ в две ко-
на. Видимо, и разработчики POD считают её не очень по- лонки, добавьте через запятую параметр twocolumn. Здесь
лезной, так как по умолчанию она отключена. же указан класс документа (article). LaTeX поддерживает
В полученном документе не хватает завершения (его три размера шрифта 10, 11 и 12 пунктов. Необычный раз-
следует добавить): мер бумаги мы используем умышленно. Стиль article наибо-
лее подходит для короткой статьи, LaTeX поддерживает и
\end{document} другие стили.
При разработке крупных пакетов документации вам мо-
и так называемой преамбулы, о которой следует сказать жет пригодиться стиль report (документы, объёмом около
подробнее. пятисот тысяч печатных знаков) или даже book. От стиля
article они отличаются практически только одной, но очень
Преамбула LaTeX документа важной особенностью.
В преамбуле LaTeX-документов располагаются инструкции, В документах класса article предусмотрены заголовки
в соответствии с которыми производится вёрстка докумен- section, subsection и subsubsection, то есть заголовки пер-
та. Вот пример преамбулы. Я постарался упомянуть в ней вого второго и третьего уровней. В классах report и book
все пакеты и директивы, которые часто бывают полезны при добавляется возможность разбивать документы на главы,
разработке документов. Поэтому часть директив закоммен- новая команда chapter (и её близнец part), создаёт заголо-
тирована (во избежание противоречий). Комментариями в вок как бы нулевого уровня. Pod2latex не создаёт глав. С
LaTeX являются все символы от «%» до «конца строки» вклю- одной стороны, это делает результаты работы pod2latex ма-
чительно. Мы обсудим и закомментированные директивы. лопригодными для вёрстки в классах report и book; с дру-
гой стороны, получаемые article-документы легко и есте-
% Çàäà¸ì ãëîáàëüíûå àòðèáóòû äîêóìåíòà ственно могут входить как отдельные главы в большой
\documentclass[10pt, a5paper]{article}
\usepackage[magstep2]{scale} report-документ.
Если вы планируете разрабатывать документы большо-
%\usepackage[a3paper]{geometry}
го объёма и объединять POD-документы, в первую очередь
% Èçìåíÿåì ïîëÿ обратите внимание на ключ -h1level утилиты pod2latex. Он
\addtolength{\hoffset}{-1cm}
\addtolength{\textwidth}{2cm} позволяет получить документы, в которых все заголовки
\addtolength{\voffset}{-1in} логически «сдвинуты», например POD-команде =head1 со-
\addtolength{\textheight}{2in}
% Êðàñíàÿ ñòðîêà ответствует подзаголовок (второй уровень) и так далее.
\setlength{\parindent}{0.3cm} Такие документы можно использовать, как разделы или под-
% Ðàññòîÿíèå ìåæäó àáçàöàìè
\setlength{\parskip}{0pt} разделы более крупных документов.
% Ðóññêèé ñòèëü îôîðìëåíèÿ àáçàöåâ Из возможностей LaTeX обратите внимание на колон-
\usepackage{indentfirst}
титулы (команды pagestyle и thispagestyle). Если в вашем
74
программирование
cat file.tex | latex file-14pt.tex
sed 's/\\label{_}//g' | latex file-14pt.tex
sed 's/\(subsection\)\*/\1/g' > file.tex.temp dvips -o file-14pt.ps file-14pt.dvi
ps2pdf file-14pt.ps
Первый sed-конвейер уничтожает пустые метки, которые
создаются из-за нашей русскоязычности. Второй sed-кон- Двойная обработка необходима, чтобы latex смог со-
вейер удаляет звёздочку во всех директивах «subsection*». здать оглавление.
Это не обязательная операция. Звёздочка говорит о том, Кстати, утилита dvips тоже может масштабировать до-
что раздел не должен отображаться в оглавлении. Pod2latex кументы (ключ -x). Можно было не использовать пакет scale,
предполагает, что в оглавление войдут только заголовки а отмасштабировать страницы на этапе конвертирования
первого уровня. Обычно, это как раз то, что нужно. Но мне dvi-файла в PostScript-формат.
захотелось, чтобы все заголовки попали в оглавление. Как В скрипте, который я включил в архив примеров, все
видите, добиться этого совсем не сложно. эти команды вложены в цикл, в котором «собираются» две
Далее мы присоединяем к документу преамбулу и за- модификации документа: в одну колонку шрифтом 14pt и в
вершение: две колонки шрифтом 12pt, как это было показано на ри-
сунках.
cat doc-head-14pt.tex file.tex.temp doc-tail.tex > file-14pt.tex Напоследок скажу, что я даже не ставил перед собой
задачу описать все опции конвертера pod2latex. Эта утили-
Теперь мы получили полноценный LaTeX-файл file-14pt.tex. та предоставляет возможности и выделения только части
Дважды обработав его системой latex, мы получаем одно- документа, и включения преамбулы и завершения, указан-
имённый dvi-файл. DVI (DeVice Independent) – стандартный ные пользователем, и многие другие. Просто мой опыт по-
формат, генерируемый системой LaTeX. Несмотря на гром- казывает, что использование многих из этих возможнос-
кое название, его не следует использовать для обмена ин- тей или неоправданно, или невозможно для русскоязычных
формацией. Дело в том, что dvi-файл обычно далеко не документов. Если вы хотите получить исчерпывающую ин-
самодостаточен. Например, он не включает графические формацию по pod2latex, обращайтесь к соответствующей
объекты, а содержит только ссылки на них. Поэтому, если документации perldoc pod2latex.
вы перенесёте dvi-файл на другую машину или просто пе-
репишете его в другую директорию, не предприняв ника- Графика в PostScript и PDF
ких дополнительных мер, то скорее всего его уже не удаст- Для LaTeX естественным форматом представления графи-
ся просмотреть или конвертировать в другой формат. К сча- ки является PostScript. Существуют средства, позволяющие
стью, из dvi-файла можно сделать полноценный PostScript- работать и со многими другими форматами, но эти сред-
и/или PDF-файл: ства представлены отдельными пакетами, которые могут и
Ðèñóíîê 1
Ðèñóíîê 2
76
программирование
рого параметра макроса \inspsfig на ширину текста djvm -create result.djvu file1.djvu file2.djvu ↵
(width=#2\textwidth). В качестве имени файла с картинкой file3.djvu file4.djvu
будет использован первый параметр \inspsfig. В файле result.djvu объединены все страницы.
Команда \caption задаёт подпись к рисунку. Если проделать все эти операции с четырёхстраничным
Закомментированная команда \label бывает полезна, если документом-примером к этой статье, то размер DjVu-файла
вы хотите ссылаться на рисунки из текста. Она (в сочетании составит менее 25 Кб.
с другими командами) позволяет автоматически поддержи- Если вам понадобится документ MSWord или RTF, то
вать корректность ссылок. Я не буду на ней подробно оста- проще всего создать HTML-документ (конвертирование в
навливаться. HTML мы рассматривали в предыдущей статье), скопиро-
вать его из Explorer в Word и «сохранить как...».
Конвертирование в другие форматы Хотя POD поддерживает не все существующие в при-
В большинстве случаев уже рассмотренных форматов впол- роде форматы, я ни разу не сталкивался с безвыходной
не достаточно. Не надо торопиться отказываться от Post ситуацией.
Script. Он весьма гибок. Например, вы можете сразу подго-
товить документ для печати в виде брошюры: Проверка корректности POD
Для проверки корректности POD-исходника существует
pstops '4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm)' ↵ очень полезная программа podchecker. Если вы укажете ей
page-14pt.ps page-14pt-booklet-up.ps
pstops '4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)' ↵ опцию -warnings, то получите все возможные предупреж-
page-14pt.ps page-14pt-booklet-down.ps дения. Пример:
Теперь можно на одной стороне листов напечатать со- podchecker -warnings file.pod
держимое файла page-14pt-booklet-up.ps, а на другой – page-
14pt-booklet-down.ps и сброшюровать. Вряд ли MSWord по-
зволит вам сделать буклет (и не только буклет) так же легко. Недостатки и перспективы POD
Подробнее о pstops вы можете почитать в соответству- Огромным недостатком POD является отсутствие средств
ющем man. формирования таблиц. Частично это компенсируется воз-
Имея в распоряжении PostScript, легко сделать DjVu-файл можностью вставки формат-ориентированных фрагментов.
или даже jpeg, что тоже может пригодиться, например, при Так, HTML-таблица может быть создана средствами HTML:
написании подобной статьи.
Следующая команда обработает файл page-12pt.ps и =for html
<table><tr><th>A</th><th>B</th></tr>
создаст серию файлов file001.jpeg, file002.jpeg и так далее, <tr><td>A</td><td>B</td></tr></table>
по одному на каждую страницу.
Но если вам требуется создать множество достаточно
gs -sDEVICE=jpeg \ сложных таблиц, если вы хотите видеть их в документах
-sOutputFile=file%03d.jpeg \
-dBATCH \ разных форматов, то скорее всего вам следует использо-
-dNOPAUSE \ вать другое средство.
-r72x72 \
page-12pt.ps Существенным недостатком является и то, что POD не
позволяет создавать документы, разнесённые в разные фай-
Улучшить качество изображения (и увеличить размер лы. В POD-языке отсутствуют операции типа include, что не
файлов) можно, изменив разрешение в параметре -r. удобно при разработке больших документов. Это можно ча-
Создать DjVu-файл тоже несложно. Последовательность стично скомпенсировать, создавая некий гибридный доку-
действий во многом определяется набором инструментов, мент, предназначенный для предварительной обработки ка-
которым вы располагаете. Я могу предложить следующий ким-нибудь препроцессором, например, cpp или m4. Упрос-
алгоритм. тит ли это усовершенствование жизнь – решать вам.
Сперва создаём PPM-изображения каждой страницы: Система POD продолжает развиваться. Наиболее мно-
гообещающей мне представляется команда =encoding. Со-
gs -sDEVICE=ppm \ гласно документу perlpod, она должна использоваться в
-sOutputFile=file%d.ppm \
-dBATCH \ начале документа.
-dNOPAUSE \ Приведён даже пример (цитирую!):
-r120x120 \
page-12pt.ps
=encoding koi8-r
Далее конвертируем все страницы (пусть иx будет че-
тыре) в формат DjVu: Упоминается эта команда и в perldocspec. Но я, честно
говоря, так и не понял, как её использовать. Podchecker
for i in 1 2 3 4 сообщает, что такая команда ему не знакома. Конвертеры
do
cpaldjvu -dpi 120 file$i.ppm file$i.djvu предупреждают об ошибке и игнорируют её.
done Тем не менее, работа над форматом и средствами POD
продолжается, и сделано уже немало. Работать с POD про-
И объединяем полученные файлы в один документ: сто, приятно и эффективно.
КРИС КАСПЕРСКИ
По статистике до 90% времени исполнения приходится на ют циклы, располагая их в памяти как угодно. В худшем
глубоко вложенные циклы, от качества оптимизации кото- случае это приводит к трех-четырехкратному падению про-
рых зависит быстродействие всей программы в целом. Со- изводительности. В среднем же теряется порядка 30%.
временные компиляторы поддерживают множество про- Компилятор gcc позволяет выравнивать циклы на вели-
грессивных технологий оптимизации и способны букваль- чину, кратную степени двойки. За это отвечает ключ -falign-
но творить чудеса! loops=n (по умолчанию n равен двум, что, как уже отмеча-
Стратегия оптимизации циклов тесно связана с архи- лось, далеко не самая лучшая стратегия выравнивания, и
тектурой процессора, кэш-контроллера и контроллера опе- лучше выравнивать циклы по границе четырех байт).
ративной памяти. Это слишком объемная, можно даже ска- Ключ -fno-align-loops (аналогичный ключу -falign-loops=1)
зать, монументальная тема, и в рамках настоящей статьи отключает выравнивание. На уровнях оптимизации -O2 и
она не обсуждается. Читайте документацию, распростра- -O3 выравнивание циклов по умолчанию включено, и от-
няемую фирмами Intel и AMD (причем не только по процес- ключать его было бы неразумно.
сорам, но и по чипсету) или мою книгу «Техника оптимиза- Итого:
ции программ – эффективная работа с оперативной памя- ! msvc – не выравнивает.
тью», в ней эти вопросы освещены достаточно подробно. ! icl – не выравнивает.
! gcc – выравнивает по границе степени двойки.
Выравнивание циклов
Выравнивание циклов (loop alignment) имеет много общего Разворот циклов
с выравниванием ветвлений, о котором мы уже говорили в Микропроцессоры с конвейерной архитектурой (а к тако-
предыдущей статье. Кратко опишем ситуацию для тех, кто вым относятся все современные x86-процессоры), плохо
не читал ее. Компиляторы msvc и icl вообще не выравнива- приспособлены для работы с циклами. Для достижения наи-
78
программирование
высшей производительности процессору необходим доста- for(a=0;a<n;a++)
точно протяженный участок «трассы выполнения», свобод-
ный от ветвлений. всегда разворачиваются на 5 итераций, а оставшиеся (n % 5)
Компактные циклы вида: итераций выполняются в отдельном неразвернутом цикле.
Циклы с ветвлениями разворачиваются только при транс-
for(a=0;a<n;a++) *dst++= *src++; формации в линейный код (при этом ветвления, естествен-
но, исчезают):
исполняются очень медленно и для увеличения быстродей-
ствия приходится прибегать к их развороту (unrolling). for (a=0; a<3;a++) if (a%2) x[a]++; else x[a]--;
Под «разворотом» в общем случае понимается много-
кратное дублирование цикла, которое реализуется прибли- преобразуется в:
зительно так:
x[0]--; x[1]++; x[2]--;
Ëèñòèíã 1. Öèêë äî ðàçâîðîòà
80
программирование
поддерживает, но задействует ее только в том случае, если Вернемся к листингу 3. Хотя загрузка обрабатываемых яче-
указан ключ -ax. Компилятор gcc поддерживает векториза- ек происходит параллельно (практически параллельно, они
цию только начиная с версии 3.4.3, да и то если присут- будут ползти по конвейеру, находясь на различных стадиях
ствует флаг -ftree-vectorize. готовности), следующая операция сложения не может быть
Итого: начата до тех пор, пока не будет завершена предыдущая.
! msvc – не векторизует. Для усиления параллелизма необходимо суммировать
! icl – векторизует. все ячейки в своих переменных, как показано ниже:
! gcc – векторизует начиная с версии 3.4.3.
Ëèñòèíã 14. Îïòèìèçèðîâàííûé âàðèàíò
Автопараллелизм // îáðàáàòûâàåì ïåðâûå XXL – (XXL % 4) èòåðàöèé
Многопроцессорные машины на рабочем столе – это не уто- for(i=0; i<XXL;i+=4)
{
пия, а объективная данность, и с каждым годом их количе-
ство будет только расти. В операционных системах семей- sum_1 += a[i+0];
sum_2 += a[i+2];
ства Linux многозначность заканчивается на уровне пото- sum_3 += a[i+3];
ков (в старых ядрах – процессов). Всякий поток в каждый sum_4 += a[i+4];
}
момент времени может выполняться только на одном про-
цессоре. Программы, состоящие целиком из одного пото- // îáðàáàòûâàåì îñòàâøèéñÿ «õâîñò»
for(i-=XXL; i<XXL;i++)
ка, на многопроцессорной машине исполняются с той же sum += a[i];
скоростью, что и на однопроцессорной.
// ñêëàäûâàåì âñå âîåäèíî
Некоторые компиляторы автоматически разбивают sum += sum_1 + sum_2 + sum_3 + sum_4;
большие (с их точки зрения) циклы на несколько циклов
меньшего размера, помещая каждый из них в свой поток. Такая техника оптимизации называется программной
Такая техника оптимизации называется автопараллелиз- конвейеризацией (software pipelining), и из трех рассматри-
мом (auto-parallelization). Продемонстрируем ее на следую- ваемых компиляторов ею не обладает ни один. Только gcc
щем примере: робко пытается ослабить зависимость по sum, используя
два регистра при развороте на четыре итерации. Осталь-
Ëèñòèíã 12. Íåîïòèìèçèðîâàííûé âàðèàíò ные же компиляторы грузят все ячейки в один и тот же ре-
for (i=0; i<XXL; i++) гистр, очевидно, руководствуясь принципом экономии. Ре-
a[i] = a[i] + b[i] * c[i]; гистров общего назначения всего семь, и их постоянно не
хватает. К сожалению, компилятор не отличает ситуацию
Поскольку зависимость по данным отсутствует, цикл действительно дефицита регистров от их избытка, вынуж-
можно разбить на два. Первый будет обрабатывать ячейки дая нас прибегать к ручной оптимизации.
от 0 до XXL/2, а второй – от XXL/2 до XXL. Тогда на двух- Итого:
процессорной машине скорость выполнения цикла практи- ! msvc – программная конвейеризация не поддерживает-
чески удвоится. А если еще учесть, что многопроцессор- ся.
ные машины, как правило, имеют MMX-команды, да исполь- ! icl – программная конвейеризация не поддерживается.
зовать векторизацию... ! gcc – программная конвейеризация частично поддер-
живается.
Ëèñòèíã 13. Îïòèìèçèðîâàííûé âàðèàíò
82
программирование
Ëèñòèíã 24. Îïòèìèçèðîâàííûé âàðèàíò и если они к этому времени уже заняты ячейками осталь-
for(i = 0; i < XXL; i++)
ных потоков, происходит их неизбежное вытеснение из
{ кэша, многократно снижающее производительность.
a[i] = b[i] + 1; Рассмотрим следующий пример:
d[i] = ó[i] -1;
} a[i] = b[i] + 1; Ëèñòèíã 27. Íåîïòèìèçèðîâàííûé âàðèàíò
Документация на компилятор icl утверждает: объедине- for(j = 0; j < n; j++)
ние циклов как будто бы поддерживается (см. главу «loop {
c[j] = 0;
transformation» фирменного руководства), однако дизассем- for(i = 0; i<m; i++)
блирование показывает, что это не так. Остальные компи- a[j][i] = a[j][i] + b[j][i] * c[j];
}
ляторы объединение циклов также не выполняют.
Итого: Чтобы сократить количество потоков данных, следует
! msvc – не объединяет циклы. вынести выражение (c[j] = 0) в отдельный цикл, переписав
! icl – не объединяет циклы. код так:
! gcc – не объединяет циклы.
Ëèñòèíã 28. Îïòèìèçèðîâàííûé âàðèàíò
Разматывание циклов for(j = 0; j < n; j++)
Разматывание циклов (loop spreading) представляет собой c[j] = 0;
разновидность шелушения, при котором «содранные» ите- for(i=0; i<m; i++)
рации упаковываются в самостоятельный цикл, что бывает for(j = 0; j < n; j++)
a[j][i] = a[j][i] + b[j][i] * c[j];
полезным, например, при объединении двух циклов с «раз-
нополыми» заголовками. Компилятор icl именно так и поступает, снимая это бре-
Рассмотрим следующий код: мя с плеч программиста.
Остальные рассматриваемые компиляторы этой способ-
Ëèñòèíã 25. Äâà öèêëà ñ ðàçëè÷íûì êîëè÷åñòâîì èòåðàöèé ностью, увы, не обладают.
(íåîïòèìèçèðîâàííûé âàðèàíò)
Итого:
for(i=0; i<n; i++;)
a[i] = a[i] + c;
! msvc – не расщепляет циклы.
! icl – расщепляет циклы.
for(j=0; j<m; j++;)
s[j] = s[j] + s[j+1];
! gcc – не расщепляет циклы.
for(i=0; i < 2*XXL; i+=2) В этом случае за трансформацию цикла приходится рас-
a[i]= *b++;
плачиваться усложнением его тела, однако несмотря на это
В времена XT/AT такая оптимизация еще имела смысл, скорость выполнения все равно возрастает:
но начиная с 80386, в процессорах появилась аппаратная
поддержка масштабирования на 2х, 4х, 8х и с некоторыми Ëèñòèíã 37. Îïòèìèçèðîâàííûé âàðèàíò
ограничениями на 3х, 5х и 9х, поэтому масштабировать та- i=n; do
кие циклы уже не нужно. {
sum+=*a;
Масштабирование поддерживают все три рассматрива- a++;
емых компилятора, но пользуются им довольно неумело, } while(--i);
84
программирование
Компилятор msvc всегда стремится генерировать цик- promotion, loop interchange или loop unswitching, но на PC
лы, стремящиеся к нулю, icl этого не делает вообще, а gcc она впервые появилась только в последней версии компи-
прибегает к трансформации циклов только в некоторых наи- лятора gcc. Этим заведует ключ -funswitch-loops (задейство-
более очевидных случаях. В частности, он избегает трогать вать вынос инвариантных ветвлений), max-unswitch-insns
циклы, содержащие ссылки на память. (максимальное количество инструкций, которое может
Итого: иметь «расщепляемый» цикл) и max-unswitch-level (макси-
! msvc – всегда устремляет циклы к нулю. мальное количество инвариантных ветвлений, которые мо-
! icl – никогда не устремляет циклы к нулю. жет иметь «расщепляемый цикл»).
! gcc – устремляет некоторые циклы к нулю. Приверженцы остальных компиляторов пока вынужде-
ны выносить инварианты самостоятельно.
Отказ от branch-count-reg Итого:
Многие микропроцессоры имеют специальную команду: ! msvc – не выносит инвариантные ветвления.
«уменьши-регистр-на-единицу-и-ветвись-если-нуль» (branch- ! icl – не выносит инвариантные ветвления.
count-reg). На x86-процессорах этим занимается LOOP, ча- ! gcc – выносит инвариантные ветвления, начиная с вер-
сто встречающаяся в ассемблерных вставках начинающих сии 3.4.3.
программистов, но практически никогда в коде, сгенериро-
ванном компилятором. И вовсе не потому, что компилятор Ротация ветвлений
«тупой», а потому, что эта инструкция медленная, хотя и Бесконечные циклы с выходом по break могут быть преоб-
компактная. разованы в конечные циклы с постусловием. При этом тело
Компиляторы msvc и icl никогда ее не используют, а gcc цикла как бы прокручивается, чтобы оператор break пере-
предоставляет специальный ключ -fbranch-count-reg, пред- местился на место while(1), а сам while(1) сомкнулся с опе-
писывающий выбирать LOOP вместо DEC reg/JNZ begin_loop, ратором do и «коллапсировал».
(см. раздел «Стремление циклов к нулю»), правда, до ма- Продемонстрируем это на следующем примере:
шинного она все равно не доживает и уничтожается опти-
мизатором. Ëèñòèíã 40. Íåîïòèìèçèðîâàííûé âàðèàíò
Итого: do
! msvc – не использует branch-count-reg. {
printf("1é îïåðàòîð öèêëà\n");
! icl – не использует branch-count-reg. if (--a<0) break;
! gcc – не использует branch-count-reg. printf("2é îïåðàòîð öèêëà\n");
} while(1);
Вынос инвариантных ветвлений После ротации ветвлений наш код будет выглядеть так:
Ветвления, инвариантные по отношению к циклу, могут
быть вынесены за его пределы путем расщепления одного Ëèñòèíã 41. Îïòèìèçèðîâàííûé âàðèàíò
цикла на два или более. Размеры кода при этом возраста- // äóáëèðóåì îïåðàòîðû öèêëà, ðàñïîëîæåííûå äî break
ют, но и производительность увеличивается (конечно, при printf("1-é îïåðàòîð öèêëà\n");
a--;
условии, что цикл влезает в кэш).
Покажем это на следующем примере: // à äîëæåí ëè âîîáùå âûïîëíÿòüñÿ îñòàòîê öèêëà?
if (a>=0)
{
Ëèñòèíã 38. Öèêë ñ èíâàðèàíòíûì âåòâëåíèåì a++;
(íåîïòèìèçèðîâàííûé âàðèàíò) do
{
for (i = 0; i < n; i++) // ïîñëå òðàíñôîðìàöèè âòîðîé îïåðàòîð
{ // ñòàë ïåðâûì
for (j = 0; j < n; j++) printf("2-é îïåðàòîð\n");
{
if (flag < 0x669) a[i][j]=i+j; else a[i][j]=0; // …à ïåðâûé îïåðàòîð — âòîðûì
} printf("1-é îïåðàòîð öèêëà\n");
} } while(–-a<0); // ñþäà ïîïàëî óñëîâèå èç if - break
}
Поскольку ветвление if (n < 0x669) инвариантно по от- Из всех трех рассматриваемых компиляторов удалять
ношению к циклу j, мы от него избавляемся: лишние ветвления умеет лишь один msvc.
Итого:
Ëèñòèíã 39. Îïòèìèçèðîâàííûé âàðèàíò ! msvc – выполняет ротацию ветвлений.
if (flag < 0x669) ! icl – не выполняет ротацию ветвлений.
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
! gcc – не выполняет ротацию ветвлений.
a[i][j]=i+j;
else
for (i = 0; i < n; i++)
Упорядочение обращений к памяти
for (j = 0; j < n; j++) При обращении к одной-единственной ячейке памяти в кэш
a[i][j]=0; первого уровня загружается целая строка, длина которой в
зависимости от типа процессора варьируется от 32 до 128
На суперкомпьютерных компиляторах такая техника оп- или даже 256 байт, поэтому большие массивы выгоднее
тимизации используется уже давно и называется loop всего обрабатывать по строкам, а не по столбцам. К сожа-
86
bugtraq
88
образование
министрирования – в admin и cgi, преподавательский сайт – ет, и устанавливаем его владельцем вновь созданных ка-
в tadmin и tcgi, родительский – в padmin и pcgi. При этом на талогов:
одном веб-сервере можно одновременно разместить сай-
ты нескольких школ, настройки этих серверов находятся в # chown -R apache:apache /schools
разных каталогах со структурой, описанной выше. Два сай-
та sis (Student Information System) и iep предназначены для А для каталогов cgi устанавливаем права доступа в 755:
специального (централизованного) доступа ко всем инфор-
мационным ресурсам. Так как все эти сайты находятся на # chmod 755 /schools/4school/cgi
одном сервере, то необходимо обеспечить разрешение
имен, прописав все узлы в файле /etc/hosts (что безопас- При необходимости можно установить логотип учебно-
нее) или в настройках DNS-сервера. го заведения, заменив файл logo.gif и logotn.gif в подката-
Чтобы меньше путаться в настройках, разработчики ре- логе admin/images. Теперь можно приступить к созданию
комендуют создать для школьных сайтов отдельный ката- необходимой базы данных.
лог, в котором и разместить всю вышеописанную иерархию.
# mysql -u root myschool -p
# mkdir /schools Enter password:
# cd /schools Welcome to the MySQL monitor. Commands end with ; or \g.
# cp /tmp/openadmin-1.70.tar.gz Your MySQL connection id is 11 to server version: 3.23.58
# tar xvzf openadmin-1.70.tar.gz
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Для того чтобы в дальнейшем была возможность рас- Назначаем необходимые привилегии, чтобы не работать
ширять сервер, добавляя новые учебные заведения, созда- от имени администратора.
дим для школы отдельную папку, в которую скопируем шаб-
mysql> grant all on myschool.* to school@localhost identifiedby 'schoolpasswd';
лоны с сайтами. Query OK, 0 rows affected (0.01 sec)
mysql> quit
# mkdir 4school И при помощи файла blank.sql, содержащего необходи-
# cp -r /schools/school /schools/4schoo
мые команды, создаем таблицы в нашей базе данных.
Смотрим в файле веб-сервера Apache httpd.conf в стро-
ках User и Group, от имени какого пользователя он работа- # mysql -p -u school myschool < /schools/utility/blank.sql
90
образование
</Directory> тельном подходе к чтению на данном этапе все три серве-
</VirtualHost> ра должны работать. Единственная проблема, с которой вы
### Ðîäèòåëüñêî-ñòóäåí÷åñêèé ñàéò
<VirtualHost schools> можете столкнуться, – это занесение в базу данных боль-
ServerAdmin grinder@ua.fm ших объемов информации. Регистрация одного-двух десят-
DocumentRoot /schools/4school/padmin
ServerName parent.schools.com ков учеников – терпима, но если их число превышает не-
ErrorLog logs/schools.error_log сколько сотен, то этот процесс превратится в настоящий
CustomLog logs/schools.access_log common
ScriptAlias /cgi-bin "/schools/4school/pcgi" кошмар. Для удобства рекомендуется воспользоваться
</VirtualHost> скриптом studentupload.pl, который находится в подкатало-
Теперь проверяем правильность новых настроек. ге utility. Этот скрипт считывает файл в формате CSV
(Comma Separated Values) и заносит все сведения в базу
# apachectl configtest данных. По умолчанию сценарий считывает 40 параметров
Syntax OK и перед началом использования его необходимо подправить
Создаем пароли для каждого пользователя. под свои требования. При работе скрипт не обновляет файл
cgi/entry/studentnumber, в котором хранятся номера следую-
# htpasswd /usr/local/apache/private/teacher4school physicist щей записи, поэтому, чтобы не получились записи с одина-
ковыми порядковыми номерами, цифру в нем необходимо
Перезапускаем веб-сервер. подправить самому. Если все же это произошло, то в реше-
нии проблемы могут помочь скрипты dupcheck.pl и sentry2.pl.
# /etc/init.d/httpd restart Несмотря на то что OpenAdmin ориентирован в первую
Останавливается httpd: [ ОК ] очередь на применение в учебных заведениях, его нара-
Запускается httpd: [ ОК ]
ботки вполне можно использовать и в своих проектах, свя-
И наконец, последний этап. В подкаталогах cgi и tcgi име- занных с учетом большого количества персонала. Напри-
ются файлы admin.conf, в которых необходимо изменить па- мер, в библиотеках, дополнительно создав отдельную таб-
раметры для доступа к базе данных, расположение ката- лицу с книгами и используя поля оценок, контролировать
логов администраторского и учительского серверов, мес- для выданную литературу. Впрочем, вариантов много. По
тонахождение утилиты pdflatex и почтовый адрес админис- крайней мере, есть от чего оттолкнуться при возникнове-
тратора, который будет выводиться в случае ошибок. В нии такой задачи. Это довольно полезный инструмент, по-
дальнейшем для упрощения настроек планируется исполь- зволяющий избежать большого количества рутинной руч-
зовать один такой файл, расположенный в /etc. При внима- ной работы.
94
подписка на II полугодие 2005
Российская Федерация ! Казахстан – по каталогу «Российская Пресса» через
! Подписной индекс: 81655 ОАО «Казпочта» и ЗАО «Евразия пресс»
Каталог агентства «Роспечать» ! Беларусь – по каталогу изданий стран СНГ через РГО
! Подписной индекс: 87836 «Белпочта» (220050, г.Минск, пр-т Ф.Скорины, 10)
Объединенный каталог «Пресса России» ! Узбекистан – по каталогу «Davriy nashrlar» российские
Адресный каталог «Подписка за рабочим столом» издания через агентство по распространению печати
Адресный каталог «Библиотечный каталог» «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик,
! Альтернативные подписные агентства: 5/3, офис 33)
Агентство «Интер-Почта» (095) 500-00-60, курьерская ! Армения – по списку номенклатуры «АРЗИ» через ГЗАО
доставка по Москве «Армпечать» (375005, г.Ереван, пл.Сасунци Давида, д.2)
Агентство «Вся Пресса» (095) 787-34-47 и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул.Сарья-
Агентство «Курьер-Прессервис» на, 22)
Агентство «ООО Урал-Пресс» (343) 375-62-74 ! Грузия – по списку номенклатуры «АРЗИ» через АО
! Подписка On-line «Сакпресса» ( 380019, г.Тбилиси, ул.Хошараульская, 29)
http://www.arzy.ru и АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru ! Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г.Кишинев, бул.Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г.Тирасполь, ул.Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайслисту через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенкла- (2012, г.Кишинев, бул. Штефан чел Маре, 134)
туры АРЗИ: ! Подписка для Украины:
! Азербайджан – по объединенному каталогу российских Киевский главпочтамп
изданий через предприятие по распространению печа- Подписное агентство «KSS»
ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21) Телефон/факс (044)464-0220
Подписные
индексы:
81655
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин
Редакторы Технологии IP-телефонии ко удачно пойдут дела у Sun Microsis-
Андрей Бешков Часть 1 – исторический tems, и удастся ли Solaris получить при-
Валентин Синицын экскурс ток «свежей крови» благодаря откры-
Алексей Барабанов Данная статья является первой из цик- тию исходных кодов, посмотреть, что же
Михаил Платов ла, посвященного изучению теорети- представляет из себя эта операционная
ческих и практических аспектов систем система, без сомнения, стоит.
РЕКЛАМНАЯ СЛУЖБА IP-телефонии. Как водится, начнем мы
тел./факс: (095) 928-8253 с теории, а именно – с изучения про- Базовая HTTP-авторизация –
Константин Меделян шлого и настоящего основных протоко- защита от честных людей
reсlama@samag.ru лов IP-телефонии. Затем мы рассмот- Базовая авторизация используется по-
рим основные продукты, эти протоко- всеместно для ограничения доступа к
Верстка и оформление лы реализующие. После чего плавно «личным кабинетам», «панелям управ-
imposer@samag.ru перейдем к практической части – на- ления», администраторским веб-интер-
maker_up@samag.ru стройке наиболее популярных общедо- фейсам, форумам и многим другим веб-
Дизайн обложки ступных решений. ресурсам. Думаю, рядовым пользовате-
Николай Петрочук лям сети будет любопытно узнать, как
Решение проблем работает это средство и насколько оно
107045, г. Москва, производительности надёжно? Начинающим веб-мастерам
Ананьевский переулок, дом 4/2 стр. 1 Microsoft SQL Server будет интересно, как его подключить?
тел./факс: (095) 928-8253 Microsoft SQL Server обладает большим А веб-программисты со стажем навер-
Internet: www.samag.ru набором инструментов для анализа его няка задавались вопросом, можно ли
состояния и устранения узких мест в усилить защиту?
РУКОВОДИТЕЛЬ ПРОЕКТА производительности. Однако часто бы-
Петр Положевец вает непонятно, как воспользоваться Файловая система USF/FFS
УЧРЕДИТЕЛИ этим богатством, когда сервер вдруг и ее восстановление
Владимир Положевец начал работать медленно. В статье рас- Файловая система USF (равно как и ее
Александр Михалев сматриваются типичные причины паде- наследница FFS) практически недоку-
ния скорости работы Microsoft SQL ментирована, и основным источником
ИЗДАТЕЛЬ Server 2000 и методы их диагностики и информации становятся исходные тек-
ЗАО «Издательский дом устранения. сты и заголовочные файлы, в которых
«Учительская газета» далеко не каждый с ходу сможет разоб-
Solaris 10 на рабочей раться. Готовых утилит для восстанов-
Отпечатано типографией станции ления тоже нет. А ведь USF/FFS – это
ГП «Московская Типография №13» К лету нынешнего года Sun Microsistems основная файловая система FreeBSD,
Тираж 8400 экз. обещает закончить открытие исходных под которой вращается множество сер-
кодов своей новой операционной сис- веров и рабочих станций. В масштабах
Журнал зарегистрирован темы Solaris 10. Исходники будут дос- сообщества FreeBSD разрушения дан-
в Министерстве РФ по делам печати, тупны по лицензии CDDL на специаль- ных случаются постоянно. Хотите уз-
телерадиовещания и средств мас- но созданном сайте. И хотя пока невоз- нать, как противостоять энтропии? Тог-
совых коммуникаций (свидетельство можно определенно сказать, насколь- да читайте эту статью.
ПИ № 77-12542 от 24 апреля 2002г.)
Уважаемые читатели!
За содержание статьи ответствен-
ность несет автор. За содержание рек- Спешите оформить подписку
ламного обьявления ответственность на второе полугодие 2005 года!
несет рекламодатель. Все права на
опубликованные материалы защище- Приобрести новые и старые номера журнала
ны. Редакция оставляет за собой пра- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
во изменять содержание следующих
номеров. Доставка почтой в любую точку России.
96