98
№8(69) август 2008 №8(69) август 2008 подписной индекс 20780 www.samag.ru Как развивается IT-система вашей компании? Оптимизация инфраструктуры Модификация дистрибутивов на основе Windows Installer Почтовое отделение для малого офиса: OMS + Spampal + MS Outlook Шлюз в Интернет на ComixWall ISG Кэшируем динамический контент Настраиваем Wi-Fi под Linux Установка цепочки серверов сертификации как часть внедрения PKI в домене Новшества в Windows Server 2008: транзакционная файловая система Настройка TLS/SASL-шифрования и аутентификации в MTA Sendmail Найди в журнале код. Следуй инструкциям. На кону настоящий «АДМИНСКИЙ ПРИЗ»

069 Системный Администратор 08 2008

Embed Size (px)

DESCRIPTION

Модификация дистрибутивов на основе Windows Installer Новшества в Windows Server 2008: транзакционная файловая система Настраиваем Wi-Fi под Linux Настройка TLS/SASL-шифрования и аутентификации в MTA Sendmail Кэшируем динамический контент №8(69) август 2008 подписной индекс 20780 www.samag.ru «АДМИНСКИЙ ПРИЗ» ЗАКОНЧИЛИСЬ БЫСТРО РАСКУПИЛИ ТИРАЖ НОВОГОДНИЕ ЗАТЯНУЛИСЬ КАНИКУЛЫ ИДАННО ОТПУСКА ДЕНЬГИ РАБОТЕ НЕОЖ АВРАЛ НА

Citation preview

Page 1: 069 Системный Администратор 08 2008

№8(

69)

авгу

ст 2

008

№8(69) август 2008подписной индекс 20780www.samag.ru

Как развивается IT-система вашей компании?Оптимизация инфраструктуры

Модификация дистрибутивов на основе Windows Installer

Почтовое отделение для малого офиса:OMS + Spampal + MS Outlook

Шлюз в Интернет на ComixWall ISG

Кэшируем динамический контент

Настраиваем Wi-Fi под Linux

Установка цепочки серверов сертификации как часть внедрения PKI в домене

Новшества в Windows Server 2008: транзакционная файловая система

Настройка TLS/SASL-шифрования и аутентификации в MTA Sendmail

Найди в журнале код. Следуй инструкциям. На кону настоящий

«АДМИНСКИЙ ПРИЗ»

Page 2: 069 Системный Администратор 08 2008

Реклама

Рек

лама

Роспечать – 20780, 81655Пресса России – 88099, 87836Интер-почта – тел. (495) 500-00-60

ПОДПИШИТЕСЬ И ЧИТАЙТЕ!

Так видит журнал читатель, который забыл оформить подписку:

Так видит журнал читатель, оформивший подписку:

НОВОГОДНИЕ

КАНИКУЛЫ ЗА

ТЯНУЛ

ИСЬ

БЫСТРО РА

СКУПИЛИ

ТИРА

Ж

НЕОЖ

ИДАННО

ЗАКОНЧИЛИСЬ Д

ЕНЬГИ

УЕХАЛ В О

ТПУСК

ПОСЛЕ ОТП

УСКА

АВРАЛ Н

А РАБОТЕ

Page 3: 069 Системный Администратор 08 2008

�№8, август 2008

в номере

Код для участия в розыгрыше призов. Следуйте инструкциям на стр. 2.

ТЕНДЕНЦИИ5

ФОТОРЕПОРТАЖ С ДСА 20084

АДМИНИСТРИРОВАНИЕ

Строим плановое IT-хозяйство6 Какой будет вверенная вам IT-система в будущем?

Дмитрий Бутянов

Легализация ПО. Цена ошибки!�3 Как не допустить ошибок в лицензировании ПО.

Дмитрий Жеряков

Модификация дистрибутивов на основе Windows Installer

�4

Рассмотрим один из компонентов Windows Installer Resource Kit – orca.exe.

Иван Коробко

Diskeeper – увеличение производительности винчестеров

�9

Возможности и особенности продукта.Марат Давлетханов

Почтовое отделение для малого офиса: OMS + Spampal + MS Outlook

20

Настраиваем почтовый сервер с фильтром спама и хра-нением архива писем.

Александр Емельянов

Свой собственный почтовый сервер23 Обзор почтового сервера MDaemon Email Server.

Марат Давлетханов

Новшества в Windows 2008: транзакционная файловая система

24

Обсудим подробнее, что из себя представляет TxF.Андрей Бирюков

Шлюз в Интернет на ComixWall ISG26 Плюсы и минусы решения.

Сергей Яремчук

История одной установки Linux на ноутбуке

30

Установка Linux на ноутбук проходила с трудом, снача-ла дистрибутив не хотел грузиться, потом Wi-Fi-адап-тер не был подхвачен автоматически. Упорное жела-ние установить беспроводную связь в конечном итоге привело к положительному результату.

Павел Закляков

Jabberd2 – простой и нетребовательный к ресурсам XMPP-сервер. Часть �

34

Рассмотрим конфигурирование, архитектуру и перво-начальную настройку Jabberd2.

Михаил Кондрин

Удаленное управление компьютером42 Обзор программ удаленного администрирования.

Сергей Кузнецов

Кэшируем динамический контент48 Как можно создавать кэширующие серверы для дина-мического контента.

Виталий Банковский

WEB

АДМИНИСТРИРОВАНИЕ «�С»

Управляем списками общих информационных баз

52

Облегчаем себе работу с помощью специализирован-ного механизма.

Андрей Луконькин

Система компоновки данных53Изучаем новые возможности платформы.

Андрей Луконькин

Установка цепочки серверов сертификации как часть внедрения PKI в домене. Часть �

54

Установка и настройка Public Key Infrastructure.Станислав Шпак

БЕЗОПАСНОСТЬ

OpenBSD: имидж – ничто, безопасность – все!

60

Уделяем внимание безопасности системы.Максим Гришков

Настройка TLS/SASL-шифрования и аутентификации в MTA Sendmail

64

Подробное руководство.Андрей Маркелов

ЗАКОН ЕСТЬ ЗАКОН67

ПРОГРАММИРОВАНИЕ

Java: торжественное обращение с jar и атрибутами MANIFEST.MF

68

Применяем в работе jar-файлы.Алексей Саенко

Знакомимся с YAML72 Чем нам поможет язык YAML в обработке конфигураци-онных файлов для разрабатываемого приложения.

Сергей Супрунов

Профессиональное использование консоли с помощью GNU Screen

78

Каковы возможности GNU Screen.Дмитрий Васильев

РЕТРОСПЕКТИВА

Окно в электронный мир:история развития графического пользовательского интерфейсаЧасть третья, заключительная

82

Популярные ОС к концу XX века обзавелись собс-твенным GUI, а командная строка перешла в разряд «для фанатов» и пользователей UNIX.

Дмитрий Мороз

КНИЖНАЯ ПОЛКА92

СИСАДМИН ТОЖЕ ЧЕЛОВЕК94

BUGTRAQ47, 63, 7�, 77

Page 4: 069 Системный Администратор 08 2008

А вдруг я стану победителем… Когда же придет мой номер жур-

нала?.. Интересно, ноутбук Dell или Toshiba... А может лучше ком-

муникатор?.. Если курсы, то я пойду изучать Cisco… Виртуальный

сервер не помешает… А какое ПО можно выиграть? Они же это

написали на сайте, так... посмотрим…

У Вас много подобных мыслей? Продолжайте думать о прият-

ном!

В этом номере журнала находится второй код для участия

в розыгрыше «Админский приз».

Зарегистрируйтесь на сайте журнала www.samag.ru

в разделе «Админский Приз». Последовательно

активируйте коды из журналов №7, 8, 9.

Осталось дождаться еще один код из №9, и мы начнем

первый розыгрыш призов.

Три шанса выиграть А

дминский Приз

Page 5: 069 Системный Администратор 08 2008

Более подробную информацию о сроках и правилах проведения розыгрышей призов смотрите на сайте журнала – www.samag.ru

А вдруг я стану победителем… Когда же придет мой номер жур-

нала?.. Интересно, ноутбук Dell или Toshiba... А может лучше ком-

муникатор?.. Если курсы, то я пойду изучать Cisco… Виртуальный

сервер не помешает… А какое ПО можно выиграть? Они же это

написали на сайте, так... посмотрим…

У Вас много подобных мыслей? Продолжайте думать о прият-

ном!

В этом номере журнала находится второй код для участия

в розыгрыше «Админский приз».

Зарегистрируйтесь на сайте журнала www.samag.ru

в разделе «Админский Приз». Последовательно

активируйте коды из журналов №7, 8, 9.

Осталось дождаться еще один код из №9, и мы начнем

первый розыгрыш призов.

Админский Приз «РАЗ»

Коммуникатор

Учебные курсы

Программные продукты

Виртуальные выделенные серверы

Админский Приз «ДВА»

Коммуникатор

Учебные курсы

Программные продукты

Виртуальные выделенные серверы

Админский Приз «ТРИ»

Ноутбук

Учебные курсы

Программные продукты

Три шанса выиграть А

дминский Приз

Как глубока кроличья нора...

Page 6: 069 Системный Администратор 08 2008

фоторепортаж с ДСА 2008

Неофициальное открытие слета вечером в пятницу

Классика жанра – метание мышки

Ведущие привествуют участников слета и перечисляют города,

откуда приехали сисадмины

Традиционный большой костёр в честь Дня системного администратора

Палаточный городок сисадминов

Фотографии: Владимир Лукин

III Всероссийский слёт системных администраторов под Калугой. Идём на рекорд!

Регистрация учасников слёта

Page 7: 069 Системный Администратор 08 2008

�№8, август 2008

тенденции

Microsoft – платиновый спонсор Apache Software FoundationВ конце июля, на конференции OSCON, корпорация Microsoft сделала очередной шаг в сторону Open Source-сообщества. Было объявлено о том, что отныне она явля-ется платиновым спонсором организации Apache Software Foundation (ASF), добавив себя в один ряд к Google и Yahoo!. Последняя известна тем, что занимается поддержкой ря-да проектов программного обеспечения с открытым ко-дом, наиболее популярным среди которых является Web-сервер Apache.

В Microsoft так объяснили причины столь неожидан-ного для многих события. «Это серьезная поддержка пу-ти Apache, открывающая новую главу во взаимоотноше-ниях с ASF. На протяжении последнего года мы работали с Apache POI, Apache Axis2, Jakarta и другими проектами. И мы намерены продолжать нашу техническую поддержку и работу над тестированием интероперабельности для это-го программного обеспечения с открытым кодом». При этом представитель компании заявил, что это не шаг в сторону от ее собственного Web-сервера IIS, напомнив, что сейчас активно идет разработка IIS 8.

Linux предустановлена на 3% продаваемых в Великобритании ПКПо данным британских исследователей, число персональ-ных компьютеров с предварительно установленной опера-ционной системой GNU/Linux в Великобритании приблизи-лось к трем процентам (от всех проданных ПК). Статисти-ка от специалистов по британскому рынку из Context сви-детельствует о том, что с января 2007 года (тогда вышла ОС Microsoft Vista) в процентном соотношении количест-во десктопов с предустановленной Linux выросло в 28 раз (с 0,1% до 2,8%). За тот же период на 93% проданных ПК были установлены системы от Microsoft. Как сообщают в Context, доля Linux среди продаваемых в Великобритании ПК беспрестанно росла с момента выхода Vista. Интересно, что 2-процентный барьер был преодолен в мае этого года, когда состоялся последний релиз Ubuntu Linux.

Тем временем, представители компании Canonical, за-нимающейся поддержкой дистрибутива Ubuntu, со ссыл-кой на исследование IDC заявили, что уже около 11 процен-тов предприятий в США используют Ubuntu Linux. Впрочем, следует учитывать, что это вовсе не является оценкой доли Ubuntu на корпоративных десктопах/серверах – ведь мно-гие компании работают с системой, например, просто для того, чтобы проверить, работает ли их программное реше-ние в данном окружении.

Linux будет доминировать на рынке мобильных интернет-устройствВ начале августа специалисты из ABI Research опублико-вали прогноз, согласно которому GNU/Linux станет лиди-рующей операционной системой на рынке мобильных ин-тернет-устройств (MID) к 2013 году. Исследователи ABI ожи-дают, что через 5 лет число продаж MID-устройств с Linux должно достичь отметки в 50 миллионов в год, что позво-лит этой ОС обойти всех своих конкурентов. Как считают в ABI, во многом это станет возможным благодаря тому,

что на рынке MID все игроки начинают «с нуля», они не отя-гощены «историческим наследием», как, например, в слу-чае со смартфонами. И Linux же добьется успеха благода-ря «возможности предоставить унифицированную плат-форму, которая объединит в себе многочисленные мобиль-ные компоненты». Главными Linux-игроками на рынке MID в ABI считают консорциум LiMo (Linux Mobile) Foundation, компанию Nokia с ее системой Maemo для интернет-план-шетов, Intel с платформой Moblin для MID-устройств с ее процессором Atom.

А уже вскоре появилось сообщение о том, что к этим иг-рокам присоединяется и компания ACCESS, объявившая о том, что ее мобильная Linux-платформа ALP (ACCESS Linux Platform) получила поддержку мобильных интернет-устройств. Изначально ALP позиционировали как реше-ние для смартфонов и КПК, которое откроет новое дыха-ние для ОС PalmOS.

Из других новостей в области Linux на MID-устройствах можно выделить анонс компанией Lenovo своего выхода на рынок нетбуков. Это событие было приурочено к представ-лению двух первых устройств подобного класса от Lenovo: IdeaPad S9 на базе Linux и IdeaPad S10 с ОС Windows XP. Когда появится Linux-нетбук S9, ориентированный на от-личные от США рынки, пока неизвестно, а его Windows-собрата можно будет найти на прилавках в США уже в на-чале октября.

Подготовил Дмитрий Шуруповпо материалам www.nixp.ru

Page 8: 069 Системный Администратор 08 2008

администрирование

IT-отдел и IT-система растут вместе с предприятием, переживая в своем развитии несколько этапов. Эти эта-

пы можно достаточно четко обозна-чить, и они определяют ту стартовую точку, от которой требуется начать планирование развития. Точное опре-деление текущей ситуации может по-казаться простым делом, однако это не так. Помимо продуктов и решений, работающих в системе, есть еще мас-са вопросов, связанных с IT-менедж-ментом (уровень организации работы IT-отдела, уровень влияния IT на биз-нес, уровень влияния бизнеса на IT и так далее). Большое число наших IT-директоров, выросших из систем-ный администраторов, хорошо разби-раются в технологиях, но как только

Строим плановое IT-хозяйство

Дмитрий Бутянов

Сегодня мы поговорим о развитии IT на вашем предприятии как едином целом. Попробуем определить факторы, влияющие на информационную систему, и то, как она может изменяться под их давлением. В итоге узнаем о методах определения и прогноза, какой будет вверенная вам IT-система в будущем.

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

Детство: пылесос для денегКак правило, IT-отдел рождается вместе с предприятием. Начальный этап, назовем его первым, характе-рен для компаний, число ПК в кото-рых не превышает ста штук. Отдел состоит из одного-двух человек, кото-

рые занимаются абсолютно всем, что включается в розетку и имеет какие-нибудь провода: компьютеры, серве-ры (чаще один-два), телефония, копи-ровальные машины, кофеварки и про-чее. Сотрудники компании называют работников IT-отдела «программиста-ми» или «компьютерщиками» вне за-висимости от того, чем этот человек на самом деле занимается. Неудиви-тельно, так как разделения ролей внут-ри отдела практически нет, каждый за-нимается всем. Документов, регламен-тирующих работу отдела, чаще всего нет, ответственность работников отде-ла – что-то вроде SLA – никак не опре-делена. Для учета средств IT (обору-дование, программные продукты) ча-ще всего используется бухгалтерская

Page 9: 069 Системный Администратор 08 2008

�№8, август 2008

администрирование

не выделили. На этом же этапе начина-ют появляться документы, регламенти-рующие деятельность сотрудников от-дела – должностные инструкции, поло-жение об отделе и т. п. Эти документы редко конкретны и ограничиваются фразами о «поддержке работы сети», «поддержке пользователей» и так да-лее. Апеллируя к этому документу, со-трудники IT-отдела начинают отказы-ваться от ремонта кофеварок и прочих важнейших элементов офисного быта, доказывая, что они не входят в понятие «IT» (впрочем, с разной степенью ус-пешности). Параллельно бухгалтерско-му, в IT-отделе начинают учёт средств

(оборудование + программное обеспе-чение), используя для этого подручные средства, например Excel или Access. При всём этом IT-отдел не располагает четким бюджетом на автоматизацию, закупка программных продуктов ча-ще всего не планируется, а происходит под влиянием сиюминутных настрое-ний сотрудников или руководства. От-сутствие системного подхода приво-дит к проблемам использования но-вых продуктов, так как IT-система час-то не готова к внедрениям. Компания окружена большим количеством пос-тавщиков продуктов или услуг в сфе-ре IT, с каждым из которых заключен

Термины и сокращенияИспользованы материалы Википедии. IT (Information Technology) – инфор-

мационные технологии. Технологии уп-равления и обработки данных.

SLA (Service Level Agreement) – согла-шение об уровне услуги. Формальный договор между потребителем услуги и её поставщиком. Как правило, тер-мин SLA используется применительно к IT и телекоммуникационным услугам. В таком соглашении может содержать-ся детальное описание предоставляе-мого сервиса, в том числе перечень па-раметров качества, методов и средств их контроля, а также штрафные санк-ции за нарушение этого соглашения.

TCO (Total Cost of Ownership) – сово-купная стоимость владения. Методи-ка, предназначенная для определе-ния затрат на информационные сис-темы (и не только), рассчитывающихся на всех этапах жизненного цикла сис-темы. Не путать со стоимостью про-граммного обеспечения, которая со-ставляет обычно от 6% до 20% общей ТСО-системы.

KPI (Key Performance Indicator) – клю-чевой индикатор производительности. Характеристика эффективности биз-нес-процессов и работы каждого от-дельного сотрудника. Набор KPI чаще всего уникален для каждого предприя-тия и конкретной должности. Пример KPI – время отклика на заявку для ин-женера службы поддержки.

ROI (Return On Investment) – окупае-мость инвестиций. Метод оценки ин-вестиционных проектов, когда важ-нейшим критерием приемлемости вы-ступает продолжительность периода,

в течение которого окупаются перво-начальные затраты.

NPV (Net Present Value) – чистый дис-контированный доход. Показывает оценку эффекта от инвестиции, при-ведённую к настоящему моменту вре-мени с учётом разной временной сто-имости денег. Часто применяется для сравнения эффективности альтерна-тивных вложений (при одинаковых на-чальных вложениях более выгоден про-ект с наибольшим NPV).

IRR – внутренний коэффициент рента-бельности. Тот процент прибыли от про-екта, который позволит окупить вло-женные в него средства. Применяется для сравнения эффективности альтер-нативных вложений.

Gartner – международное аналити-ческое агентство. Основная специа-лизация – информационные техноло-гии. Пользуется большим авторитетом и весом в мире ИТ.

MIT (Massachuset ts Inst i tute of Technology) – Массачусетский техно-логический институт. Мекка компью-терных технологий, мировой лидер в области науки и техники, новатор в областях робототехники и искусст-венного интеллекта.

MOF (Microsoft Operations Framework) – руководство по достижению необходи-мого уровня надежности, доступнос-ти, удобства сопровождения и управ-ляемости решений на базе продук-тов Microsoft. Основано на производс-твенных методиках, собранных в IT Infrastructure Library (ITIL), составленной Central Computer and Telecommunications Agency – Агентством правительства Ве-ликобритании.

программа, а статистические данные, характеризующие работу информаци-онной системы, накапливаются в луч-шем случае в головах работников от-дела на уровне интуиции. Это приво-дит к тому, что управление рисками не производится, а одна из важней-ших задач отдела – ликвидация пос-ледствий уже свершившихся рисков. Кстати, сами инциденты чаще всего не фиксируются, и IT-отдел не видит нужды в их фиксации: простые про-блемы решаются сразу, а сложные от-кладываются до лучших времен. Служ-ба поддержки пользователей работа-ет в курилке или в столовой, и принцип личных связей и симпатий играет од-ну из важнейших ролей. Качество ра-боты IT-отдела целиком и полностью зависит от разносторонности знаний его работников, их доброй воли и же-лания работать. Бизнес-руководство оценивает это самое качество по се-бе («работает ли мой компьютер»), мо-бильности сотрудников («сегодня про-граммист десять раз приходил, хоро-ший работник»). Сам IT-отдел не име-ет бюджета, деньги выделяют по мере надобности по остаточному принципу. Эти траты воспринимаются бизнесом как неизбежное зло, которое надо тер-петь (не всегда молча).

Юность: самоосознаниеПостепенно IT-система всё глубже про-никает в бизнес-процессы предприя-тия, и руководство начинает понимать, что в случае сбоев в IT фактически па-рализуется весь бизнес или важная его часть. С этого момента термин «авто-матизация» приобретает важнейшее значение, а сам IT-отдел или получа-ет в качестве куратора одного из пер-вых лиц, или статус руководителя IT-от-дела повышается до соответствую-щего уровня. С этого момента IT-сис-тема входит в следующую фазу свое-го развития.

Численность персонала IT-отдела растет, наблюдается деление по функ-циональному признаку внутри самого отдела. Чаще всего появляются две группы: одна занимается оборудовани-ем и системным программным обеспе-чением, вторая – непосредственно биз-нес-приложениями. Сотрудники отдела сидят в отдельном помещении, часто совмещенной с сервернной и прочим, так как отдельной серверной комнаты

Page 10: 069 Системный Администратор 08 2008

администрирование

отдельный договор поставки и/или ока-зания услуг, но эти документы прочи-тываются только на этапе подписания IT-руководителем, далее складывают-ся в папочку и хранятся на полке. И ес-ли работа поставщиков оборудования и программных продуктов контролиру-ется, то о поставщиках услуг вспоми-нают только тогда, когда возникают со-ответствующие проблемы.

Рядовые сотрудники компании зна-ют работников IT-отдела уже не как «программистов» или «компьютерщи-ков», а по именам. Вообще говоря, са-ми работники IT находятся в положе-нии богов, называя остальных «ламе-рами», «юзверями» и так далее. Рядо-вой «ламер» крайне неохотно обраща-ется в IT-отдел, боясь отвлечь важных людей от серьезных дел. Тем не ме-нее в отделе появляется служба под-держки (HelpDesk), использующая про-стые средства автоматизации сво-ей работы или обходящаяся вообще без них (журнальная форма). Систе-мы оценки качества работы отдела не существует, так как никто не зна-ет, как его считать. Как правило, ис-пользуют два самых простых выхода: во-первых, самому IT-отделу предла-гают оценить качество своей работы; во-вторых, используют формальный критерий, например количество об-ращений в службу поддержки. А пос-кольку большое количество заявок на поддержку часто считается сигна-лом о плохой работе всего отдела, ре-гистрируются только серьезные сбои, которым присваиваются приоритеты. Всё остальное делается по-старинке. Итог – отсутствие достоверной инфор-мации о работе IT-системы в целом.

Несмотря на то что на данном эта-пе развития IT-отдел является самосто-ятельной единицей с появившимися бизнес-процессами, вся инфраструк-тура еще работает нестабильно. Веро-ятность серьезных сбоев с полной бло-кировкой наиболее важных подсистем велика. В первую очередь это связано с тем, что 80-90% всей работы отдела являет собой реакцию на изменения, в том числе на свершившиеся риски. Планирование изменений, управле-ние рисками (особенно превентивное) не ведется. Фактически IT-отдел идет на поводу у ситуации. Однако, ликви-дировав эти недостатки, можно до-биться серьезных прорывов в области обеспечения отказоустойчивости ин-формационных служб и сервисов.

Зрелость: партнёры по бизнесуТретий этап развития IT-системы на-чинается тогда, когда бизнес-руко-водители перестают считать деньги, потраченные на провода – коммута-торы – серверы – приложения, а на-чинают задавать совершенно другие вопросы. Сколько будет стоить сокра-щение времени восстановления базы данных до пяти минут? Сколько стоит пятнадцать минут «простоя» менедже-ра по продажам? Какую прибыль мы получим от внедрения системы дис-танционного обслуживания клиентов? Иными словами, требования бизнеса к IT растут, а IT-отдел воспринимается не как обслуживающая единица, а как полновесное бизнес-подразделение, и развитие бизнеса без развития ин-формационных технологий невозмож-но. IT начинают рассматривать не как

совокупность отдельных продуктов и технологий, а как систему информа-ционных сервисов и услуг. Начинает меняться структура самого IT-отдела: вместо деления по технологиям начи-нается деление по сервисам и техноло-гиям бизнеса. Формируется четкое ви-дение места IT-отдела на предприятии: в первую очередь создается пакет до-кументов, ясно определяющий пере-чень услуг, сервисов, а также уровень их поддержки и качества функциони-рования. Иными словами, появляется SLA. На его основании меняются от-ношения с внешними поставщиками и подрядчиками, а исполнение ими договорных обязательств и качество оказываемых ими услуг жестко конт-ролируются. Часто вводится система KPI, определяющая качество работы отдела в целом и отдельных его работ-ников в частности. Вложения в IT начи-нают рассматриваться как инвестиции со всеми вытекающими последствия-ми: считается коэффициент возврата ROI, считается совокупная стоимость владения TCO, а принятие решений об инвестировании в IT может считать-ся по инвестиционным законам, на-пример, на основании NPV, IRR-коэф-фициентов. Управление рисками осу-ществляется в полном объеме. Фокус работы IT-отдела перемещается от ре-акций на проблемы к их предвидению и предупреждению. Полноценно функ-ционирует служба поддержки – крите-рием ее работы становится время ре-акции на обращение, а также способ-ность прогнозирования поведения сис-темы. Ведется чёткое планирование развития IT, которое увязано с разви-тием бизнеса. Причем планы составля-ются в краткосрочной, среднесрочной и долгосрочной перспективах.

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

Рисунок 1. Уровни зрелости IT-инфраструктуры в модели Microsoft

Page 11: 069 Системный Администратор 08 2008

�№8, август 2008

администрирование

проб и сколько нужно сделать ошибок! Каковы цели развития? Давайте опре-делим их следующим образом:n сокращение совокупной стоимос-

ти владения IT-инфраструктурой (включая сервисные затраты и по-тери времени пользователей);

n повышение гибкости информаци-онной системы для обеспечения возможности поддержки растущих требований бизнеса;

n повышение удовлетворенности пользователей за счет увеличе-ния надежности и удобства рабо-ты с IT-приложениями.

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

Пути развитияСуществует несколько подходов к оп-тимизации инфраструктуры. В боль-

шинстве случаев первоначально су-ществующий уровень развития ин-формационной системы относят к од-ному из стандартных. Например, у Gartner таких уровней шесть, от ну-левого Survival (Выживание) до пято-го Business Partner (Бизнес-партнёр). У Microsoft, которая сделала свою мо-дель оптимизации инфраструктуры на базе материалов Gartner, MIT, MOF, уровней получилось четыре: от базо-вого до динамического. Принцип рабо-ты с такими моделями несложен. Сна-чала надо определить текущий уро-вень зрелости (развития) IT. Сделать это можно разными способами, на-пример, заполнив опросник. В резуль-тате вы сможете получить как общую оценку развития вашей информаци-онной системы в целом, так и по от-дельным решениям (например, базо-вая инфраструктура, инфраструктура платформы приложений, инфраструк-тура бизнес-процессов). Процесс раз-вития IT видится как управляемый пе-реход с уровня на уровень путем внед-рения соответствующих технологий и решений. Рекомендации по внедре-

нию могут носить общий характер ти-па «внедрите систему резервного ко-пирования». Если вас интересует при-вязка к конкретным продуктам – реше-ниям, то можно получить и такие реко-мендации тоже.

Чем это удобно? Во-первых, вы получите объективную оценку теку-щего состояния вашей информаци-онной системы. Во-вторых, сможе-те спланировать направления ее раз-вития на уровне решений – серви-сов – служб – продуктов. Это позво-лит снизить степень хаоса и взять про-цесс эволюции вверенной вам систе-мы под контроль. Для каждого уров-ня в модели прописаны преимущест-ва, которые компания может получить, достигнув этого самого уровня. Обра-тите внимание, чаще всего это бизнес-преимущества. То есть это часть до-кумента, на которую можно опирать-ся в разговоре с бизнесом. Вашему генеральному или финансовому ди-ректорам совсем неинтересно раз-бираться в хитросплетениях взаимо-действия серверов, протоколах и так далее. Но снижение себестоимости,

Page 12: 069 Системный Администратор 08 2008

10

администрирование

увеличение количества и качества предоставления услуг и внутри компа-нии, и для ее клиентов или партнёров – это они понимают прекрасно. Рекомен-дации, которые вы сможете получить, работая с моделями оптимизации, по-могут вам найти нужные аргументы и правильно построить разговор о вы-делении средств, например.

Откуда и куда идти…Как я уже упоминал, модель оптими-зации инфраструктуры от Microsoft де-лит уровни зрелости IT на четыре уров-ня (см. рис. 1).

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

Работоспособность приложений и служб в целом неизвестна из-за от-сутствия подходящих инструментов и ресурсов. Механизма обмена на-копленными знаниями между отдела-ми нет. Организациям с базовым уров-нем инфраструктуры крайне сложно управлять своими средами, их расхо-ды на управление персональными ком-пьютерами и серверами чрезвычайно высоки, они легко уязвимы перед лю-быми угрозами безопасности, а биз-нес получает от IT очень малую выго-ду. Любые обновления или разверты-вание новых приложений/служб требу-ют больших усилий и затрат.

В инфраструктуре стандартизиро-ванного уровня появляются четко опре-деленные точки управления благодаря применению стандартов и политик ад-министрирования настольных компью-теров и серверов, правилам подключе-ния машин к сети, управления ресур-сами на основе Active Directory, поли-тикам безопасности и управлению до-ступом. Организации с инфраструкту-рой уровня «Стандартизованный» эф-фективно используют преимущества базовых стандартов и политик, но все еще реагируют на проблемы, только когда они уже явно проявились. Обнов-ления или развертывание новых при-ложений/служб требуют обычно уме-ренных усилий и затрат (расходы иног-да могут быть по-прежнему достаточ-но высокими). Однако в таких органи-зациях уже есть достаточно внятная база инвентарной информации об ап-паратно-программном обеспечении, и они начинают управлять лицензия-ми. Защита от внешних угроз усили-вается благодаря блокированию пе-риметра сети, но внутренняя безопас-ность пока оставляет желать лучшего. Переход на стандартизованный уро-вень с базового может дать следую-щий выигрыш:n появляется возможность разработ-

ки стандартов и политик, а также стратегии их применения;

n снижаются риски, связанные с бе-зопасностью, за счет создания эше-лонированной обороны (это подход к обеспечению безопасности на не-скольких уровнях: по периметру сети и на уровнях серверов, персональ-ных компьютеров и приложений);

n автоматизируются многие ручные и длительно выполняемые опера-ции как в самом IT-отделе, так и на предприятии.

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

На рационализированном уров-не зрелости IT-инфраструктуры пред-приятия затраты на управление на-стольными компьютерами и сервера-ми сводятся к минимуму, а процессы и политики начинают играть важную роль в поддержке и расширении биз-неса. В защите основное внимание уделяется профилактическим мерам, и на любые угрозы безопасности ор-ганизация реагирует быстро и пред-сказуемо.

Применение развертывания по при-нципу Zero touch (полностью автомати-зированное развертывание, с мини-мальным участием операторов) ми-нимизирует расходы, время установ-ки обновлений и вероятность техни-ческих проблем. Количество образов систем (images) минимально, и процесс управления настольными компьюте-рами требует совсем небольших уси-лий. В организации создана база дан-ных с исчерпывающей информацией об аппаратно-программном обеспече-нии, поэтому закупаются лишь те ли-цензии и компьютеры, которые дейс-твительно нужны.

Организации со стандартизован-ным уровнем инфраструктуры выиг-рывают от перехода на рациональ-ный уровень, получая гораздо боль-ший контроль над инфраструктурой, а также политики и процессы для уп-реждающего реагирования на различ-ные ситуации – от изменения рыноч-ной конъюнктуры до стихийных бедс-твий. И здесь можно говорить о сниже-нии ТСО, так как автоматизация работ как IT-отдела, так и работников пред-приятия переходит на качественно дру-гой уровень.

И, наконец, высший – динамичес-кий – уровень. На предприятии с IT-ин-фраструктурой, достигшей динамичес-кого уровня зрелости, существует пол-ное понимание стратегической цен-ности этой инфраструктуры, которая помогает эффективно вести бизнес

Рисунок 2. Модель оптимизации инфраструктуры платформы приложений

Page 13: 069 Системный Администратор 08 2008

11№8, август 2008

администрирование

Page 14: 069 Системный Администратор 08 2008

12

администрирование

Рисунок 4. Модель оптимизации базовой инфраструктуры

Рисунок 3. Модель оптимизации бизнес-инфраструктуры

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

Процессы полностью автоматизи-рованы и зачастую включены непо-средственно в IT-системы, что позво-ляет управлять этими системами в со-ответствии с потребностями бизнеса. Дополнительные инвестиции в техно-логии дают быструю и заранее просчи-тываемую отдачу для бизнеса.

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

Достигнув динамического уровня,

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

Помимо деления на четыре уровня зрелости также существуют три кате-гории анализа.n Инфраструктура платформы

приложений – cодержит реше-ния, помогающие IT-отделам пре-доставить технологии и средства для поддержки управления биз-несом и рабочими процессами (см. рис. 2). В качестве примеров можно привести решения по орга-низации документооборота, ERP-решения, системы управления эф-фективностью деятельности, раз-работка специализированных при-ложений для пользователей и др.

n Бизнес-инфраструктура – техно-логии, помогающие пользователям находить нужные данные, анализи-ровать их и сотрудничать как внут-ри одной компании, так и между различными странами и организа-

циями (см. рис. 3). Обычно выделя-ют такие составляющие, как управ-ление содержимым (в том числе ин-транет-порталы), решения по ана-лизу бизнес-данных, корпоратив-ный поиск, объединенные коммуни-кации и совместная работа (элек-тронная почта, аудио- и видеокон-ференции, обмен мгновенными со-общениями и др.).

n Базовая инфраструктура – вклю-чает решения, помогающие компа-ниям разработать гибкую, эффек-тивную, надежную и безопасную основу IT-среды (см. рис. 4). Наибо-лее значимыми составляющими данной категории являются управ-ление правами и доступом, созда-ние резервных копий и восстанов-ление данных, управление установ-кой и мониторинг ПО, обеспечение информационной безопасности.

К какому уровню зрелости относит-ся инфраструктура вашего предприя-тия, вы можете определить сами (к со-жалению, при условии знания англий-ского языка). Для этого вам надо от-крыть сайт http://www.microsoftio.com. На этом сайте есть разделы, посвя-щенные каждой из трех категории оп-тимизации. В каждом из разделов вы найдете опросник. Заполнив его, вы сможете увидеть, на каком уровне зре-лости находится ваша IT-инфраструк-тура, а также получить рекомендации в выборе направлений развития ва-шей IT-системы в будущем. По-моему, весьма полезно!

Знаете, сколько IT-систем России находятся на базовом уровне зрелос-ти? Более 60%. Это означает, что воз-можный потенциал этих систем ис-пользуется на 20-30%. И тут всё нахо-дится в ваших руках. Модели оптими-зации помогут вам объективно оце-нить существующее положение вещей и определить пути развития и вашей информационной системы, и вас са-мих. Хотите оставаться «программис-том» или «компьютерщиком» – ниче-го не делайте. Хотите стать замести-телем генерального по информацион-ным технологиям, директором депар-тамента или IT-директором – пробуй-те! У вас получится.

В статье использованы иллюстрации с сайта http://www.microsoftio.com.

Page 15: 069 Системный Администратор 08 2008

13№8, август 2008

администрирование

чие именно таких подтверждений и сви-детельствует о том, что специалистам Softway можно доверить столь важный этап в истории вашей компании.

Одни из самых недавних достиже-ний компании Softway – получение вы-сокого статуса от Microsoft и авториза-ция у компании Autodesk. Gold Certified Partner Microsoft – знак высокой оцен-ки потенциала компании на IT-рын-ке, а также неоспоримое профессио-нальное признание качества работы сотрудников. Получение авторизации у ключевого производителя решений САПР, компании Autodesk, – это след-ствие признания высокого профессио-нального уровня сотрудников компании Softway: прошедшие обучение и серти-фикацию в Autodesk сотрудники ока-зывают всестороннюю качественную консультационную и техническую под-держку по лицензированию и внедре-нию продуктов для своих клиентов.

Добавим, что Softway также являет-ся официальным сертифицированным партнером большинства мировых про-изводителей ПО.

Смотрите более подробную инфор-мацию на сайте компании: http://www.softway.ru.

Статья подготовлена на основа-нии отчетов отдела продаж компа-нии Softway.

Дмитрий Жеряков, Руководитель департамента

развития

На правах рекламы

Ошибки в легализации. Как распознать?Распространённой ошибкой, вытека-ющей из стремления подобных ком-паний экономить средства заказчика, является неграмотный и опасный под-ход к внедрению. Это, например, уста-новка OEM-версий программ на уже имеющиеся персональные компьюте-ры, впоследствии приводящая компа-нию к огромным проблемам. Назначе-ние OEM-версий совершенно иное. Та-кое программное обеспечение может быть установлено только на новом ПК перед процессом его продажи. Покуп-ка OEM-версий без ПК – это такое же уголовно наказуемое преступление, как и использование пиратского про-граммного обеспечения. Это грозит штрафами, приостановкой деятель-ности компании, а далее – новыми за-тратами на уже «правильную» легали-зацию ПО при помощи профессиона-лов в этой области.

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

Любое программное обеспечение необходимо устанавливать в соот-ветствии с конкретными бизнес-зада-чами компании. И если для эффектив-ной работы сотрудников вашей ком-пании достаточно стандартного паке-та Office, то незачем покупать Office Professional, который вам предлагает менеджер софтверной компании. Це-ной такого не столь глубинного под-хода может стать переплата за избы-точную функциональность програм-мных компонентов. То же самое ка-сается и количества лицензий, пред-лагаемых вам специалистом по внед-

рению. Не покупайте лишнего, ищите компетентных и внимательных продав-цов и консультантов.

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

Сотрудники компании Softway, де-монстрируя комплексный подход к про-цессу легализации ПО, отмечают необ-ходимость проведения аудита имеюще-гося программного обеспечения непо-средственно перед закупкой программ и оценки целесообразности приобрете-ния тех или иных программных средств. Далее необходимо уделить особое вни-мание выбору схемы лицензирования в непрерывном контакте с сертифи-цированными специалистами. Не сто-ит объяснять, что эту непростую проце-дуру могут провести только те сотруд-ники, чей профессиональный уровень подтверждён центрами обучения и сер-тификации производителей ПО. Нали-

Легализация ПО. Цена ошибки!Одной из наиболее актуальных проблем в работе современной компании является технологический фактор и, в частности, вопросы с программным обеспечением, лицензирование которого сложный и затратный процесс. Часть ошибок совершают сотрудники IT‑отдела компании, но самым опасным является некомпетентность в вопросах лицензирования тех, кто специализируется на внедрении ПО.

Page 16: 069 Системный Администратор 08 2008

14

администрирование

Решение задач автоматической установки программного обес-печения не ограничивается ис-

пользованием ключей системы инс-

талляции Windows Installer. Получив возможность изменить пакет инстал-ляции, доступ к базе данных всех па-раметров дистрибутива, администра-

тор может создавать пакеты для авто-матической установки, не используя внешние файлы, содержащие различ-ные настройки.

Модификация дистрибутивов на основе Windows Installer

Иван Коробко

Возможность модификации дистрибутивов на основе Windows Installer всегда прельщала системных администраторов и специалистов системной поддержки. Рассмотрим один из компонентов Windows Installer Resource Kit – orca.exe. Эта утилита специально разработана для решения задач такого рода.

Page 17: 069 Системный Администратор 08 2008

15№8, август 2008

администрирование

по адресу – http://download.microsoft.com/download/7/c/4/7c426dfc-46e2-4ded-bab4-3b33600ad7d1/msi45sdk.msi, используется для различного рода ма-нипуляций с MSI-файлами.

По умолчанию каталог установ-ки пакета Windows Installer SDK –%ProgramFiles%\Windows Installer 4.5 SDK.

В его комплекте несколько утилит, в том числе дистрибутив программы ORC, расположенный в папке Tools.

Оrca.msiПрограмма orca.exe, дистрибутив кото-рой находится в папке %ProgramFiles%\Windows Installer 4.5 SDK\Tools, предна-значена для модификации *.msi-фай-лов. С помощью этой утилиты можно не только управлять устанавливаемы-ми компонентами, но и указать серий-

Уделим внимание программному управлению базой данных, хранящей-ся в msi-файлах.

Windows InstallerЭто сервис установки и конфигури-рования программных продуктов, ко-торый входит в состав операционной системы. Также он может устанавли-ваться как пакет обновления или от-дельный дистрибутив.

В настоящее время использу-ется Windows Installer 4.5, который можно бесплатно загрузить с сай-та Microsoft в виде заплатки (hotfix) KB842288 – http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe.

Windows Installer, как и любое дру-гое быстрое исправление, поддержи-вает ряд ключей командной строки, обеспечивающих управление автома-тической установкой пакета:n /norestart – не перезагружать ком-

пьютер после установки обновле-ния;

n /queit – выполнить установку в «ти-хом» режиме;

n /help – вывод справки на экран, со-держащей ключи и их краткое опи-сание.

Файл msiexec.exeДвойным щелчком мыши по файлу с расширением *.msi осуществляется запуск утилиты:

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

Обычно для установки приложения в автоматическом режиме использу-ют команду:

где *.msi – полный путь к файлу с рас-ширением MSI, например:

Windows Installer SDKПакет утилит, который можно загрузить бесплатно с сайта компании Microsoft,

ный номер продукта, изменить выво-димые сообщения и др.

Установка orca.exe осуществляет-ся в папку %:ProgramFiles%\Orca за-пуском файла orca.msi.

Оrca.exeЗапуск программы осуществляется че-рез «Пуск → Программы → orca.exe» (см. рис. 1). После успешного запус-ка приложения необходимо открыть msi-файл, который необходимо мо-дифицировать. В данном случае в ка-честве опытного образца использо-вать дистрибутив AcdSee10 – файл ACDSee 10 Photo Manager.msi, находя-щийся в каталоге c:\ACDSee.

Замечание: дистрибутив ACDSee 10 представляет собой *.ехе-файл – ар-хив, который при запуске распаковы-вает msi-файл в папке C:\Documents

Параметр Описание

/i Установка приложения в обычном режиме

/f [p|o|e|d|c|a|u|m|s|v] Переустановка приложения. Если задан только ключ /f, то имеется в виду команда /fpecsm:p – восстановление удаленных файлов;о – обновление до более новой версии;e – полная переустановка приложения той же версии;d – восстановление удаленных файлов и перезапись файлов более старой версии;c – восстановление удаленных файлов или перезапись файлов, если CRC (контрольная

сумма) установленных файлов не совпадает с CRC файлов в дистрибутиве;а – переустановка всех файлов;u – перезапись всех ключей реестра, касающихся данного приложения в ветвях HCKU, HCU;m – перезапись всех ключей реестра, касающихся данного приложения в ветви HCLM;s – перезапись всех ярлыков

/a Выполнение административной установки приложения

/x Деинсталляция продукта

/j[u|m[/g]] Управление публикацией программного продукта:u – публикация для текущего пользователя;m – публикация для всех пользователей;g – идентификатор языка (управление установкой языкового интерфейса)

/q[n|b|r|f] Определение уровня пользовательского интерфейса во время установки:n – отсутствие интерфейса;b – базовый интерфейс (по умолчанию);r – сокращенный интерфейс;f – полный пользовательский интерфейс

Таблица 1. Параметры командной строки msiexec.exe

%SystemRoot%\System32\msiexec.exe ↵ /i *.msi

%SystemRoot%\System32\msiexec.exe ↵ /fa /qn /jm *.msi

c:\Windows\system32\msiexec.exe ↵ /fa/qn/jm "acdsee10.msi"

Рисунок 1. Внешний вид утилиты orca.exe

Page 18: 069 Системный Администратор 08 2008

16

администрирование

and Settings\%username%\Local Settings\Application Data\Downloaded Installations\{0051E50E-CECD-4E04-A71A-B8C49733542A}\ACDSee 10 Photo Manager.msi. Именно этот файл необходимо открыть утилитой orca.exe.

Orca.exe рассматривает msi-файл как SQL-базу дан-ных, где msi-файл – это база данных, левая колонка таб-лицы (см. рис. 2), в которой хранятся различные настрой-ки и списки. Правая часть – список полей выбранной таб-лицы с соответствующими значениями.

Структура msi-файловВ базе данных пакета среди множества таблиц, кото-рые можно объединить в группы, выделим самые важные из них:n базовые таблицы;n файловые таблицы;n таблицы информации о программе.

Базовые таблицыК базовым таблицам относят таблицы, описывающие пара-метры работы инсталлятора, устанавливаемые компоненты. Группа состоит из 11 связанных таблиц, краткое описание которых приведено в таблице 2.

Файловые таблицыЭта группа таблиц содержит информа-цию обо всех файлах, входящих в ком-плект поставки программного продук-та. Большая часть этих файлов пере-числена в таблице File. Хотя таблица Directory не входит в эту группу, она тесно связана с ней, так как отража-ет структуру каталогов приложения. В таблице 3 приведен список файло-вых таблиц и их краткое описание.

Таблицы информации о программеТаблицы этой группы содержат важ-ную информацию о пакете инсталля-

ции, используемую на протяжении всего процесса инс-талляции. В таблице 4 приведена информация о назна-чении таблиц.

Доступ к msi-файлам программным способомДля обеспечения программного управления базой данных, хранящейся в msi-файле, используется шаблон, приведен-ный в листинге 1. Необходимо отметить, что шаблон чтения данных отличается от шаблона коррекции данных. О нем будет рассказано отдельно.

В приведенном шаблоне в первой строке осуществляет-ся подключение к COM-объекту, с помощью которого осу-ществляется доступ к базе данных.

На следующей строке осуществляется подключение к базе данных с помощью метода OpenDatabase, кото-рый имеет два аргумента. Первый из них – имя базы, ко-

Рисунок 2. Создание новых полей в таблице

Имя таблицы Краткое описание

Feature Содержит список всех функций программного продукта

Condition Содержит описание условий, определяющих порядок установки каждой функции, описанной в таблице

FeatureComponents Связывает функции с компонентами

Component Содержит список всех компонентов приложения

Directory Содержит список всех каталогов, необходимых для инсталляции

PublishComponent Содержит список функций и компонентов, публикуемых для использования в других приложениях

Assembly Задает установки для сборок .NET Framework CLR и Win32

AssemblyName Задает схему для именования сборок .NET Framework CLR и Win32

Complus Содержит информацию, необходимую для установки приложений COM+

IsolatedComponent Связывает компонент, заданный в столбце Component_Application (обычно .exe), с компонентом, заданным в столбце Component_Shared (обычно .dll)

Upgrade Содержит информацию для значительных обновлений программного продукта

Таблица 2. Базовые таблицы MSI Installer

Листинг 1. Шаблон доступа к базе в msi-файле

Set obj = CreateObject ("WindowsInstaller.Installer")Set base = obj.OpenDatabase (MSI,Mode)base.OpenView(SQL-query).Executebase.Commit

Page 19: 069 Системный Администратор 08 2008

17№8, август 2008

администрирование

торым является полный путь к msi-файлу. Второй – режим доступа к ба-зе данных:n 0 – только чтение;n 1 – чтение / запись.

На третьей – реализовано выпол-нение задаваемого запроса. SQL-за-прос задается с помощью метода OpenView, а выполнение запроса – с помощью метода Execute.

Напомним, что в SQL-запросе ре-гистр названия полей и имен таблиц имеет значение.

В последней строке осуществляет-ся запись сделанных изменений в базе с помощью команды Commit.

Работа с таблицами в orca.exeРассмотрим подробнее структуру таблиц, содержащихся в msi-файле. Orca – мини-редактор SQL-таблиц, хранящихся как составная часть дис-трибутива.

С полями таблиц баз можно совер-шать следующие действия:n чтение существующих полей;n создавать новые поля;n удалять поля;n изменять поля.

Чтение существующих полейДля реализации шаблона поиска используется шаблон (см. листинг 2), отличный от приведенного в листинге 1. Это объясняется тем, что запись, удаление, замена осу-ществляются у единичного поля, а вывод на экран осущест-вляется для всех полей.

Трансформация листинга осуществляется в третьей строке листинга 1. Она разбивается на две подстроки – это строки 3 и 4 в листинге 2. Здесь разносятся методы OpenView и Execute.

Далее осуществляется чтение массива строк. Обрати-те внимание на то, что в запросе SELECT поля могут быть перечислены только по именам. Значение «*» в данном случае не работает. А во время чтения данных необходи-мо указывать нумерацию полей (Record.StringData(1)), на-чиная с единицы (1).

В листинге 2 приведен пример чтения всех полей (Property, Value) таблицы Property файла ACDSee 10 Photo Manager.msi:

Создание новых полейСоздание новых полей используется достаточно часто, на-пример, для того чтобы записать в дистрибутив программы ее серийный номер. Для этого необходимо добавить в таб-лицу Property поле PIDKEY с соответствующим значением, содержащим серийным номер продукта. Чтобы добавить новое поле, необходимо установить курсор на нужную таб-лицу (см. рис. 3) и, нажав в произвольной ее части правую кнопку мыши, выбрать пункт Add Row или нажать комби-нацию клавиш <CTRL+R>. В появившемся диалоговом ок-не будет приведен список доступных полей. Необходимые значения можно присвоить в этом же окне.

Аналогичную операцию можно выполнить программным способом (см. листинг 3). Для этого необходимо вызвать объект WindowsInstaller.Installer. На основе шаблона, приве-денного в листинге 1, сформируем листинг 3. В качестве второго параметра метода OpenDatabase необходимо ука-зать 1, поскольку выполняется операция записи данных.

Самым сложным в данном листинге правильно сфор-мировать запрос. Особенность запроса INSERT INFO за-ключается в том, что в первых по счету скобках, в которых указывается название полей, имя поля должно быть зада-но с родителем. Все имена параметров в запросе указы-

Имя таблицы Краткое описание

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

RemoveFile Содержит список файлов, которые необходимо удалить при выполнении операции RemoveFiles

Font Включает в себя список шрифтов, которые необходимо зарегистрировать в операционной системе

SelfReg Содержит список саморегистрирующихся модулей. Installer не регистрирует EXE-файлы

Media В таблице описывается набор дисков инсталляции

BindImage Содержит информацию о привязках исполняемых файлов или DLL

MoveFile Содержит список файлов, которые необходимо перенести во время инсталляции из исходного каталога в заданный каталог

DuplicateFile Содержит список дублируемых файлов либо в другой каталог с тем же именем, что и исходный файл, либо в тот же каталог, но с другим именем

Environment Используется для задания переменных окружения

Icon Хранит файлы иконок. Каждая иконка этой таблицы во время инсталляции копируется в отдельный файл на диске

MsiFileHash Эта таблица хранит 128-разрядное хэш-значение для исходных файлов в пакете инсталляции

Таблица 3. Файловые таблицы MSI Installer

Имя таблицы Краткое описание

Property Хранятся все свойства пакета инсталляции

Binary Содержатся двоичные данные для иконок, растров и т. п. Также здесь хранятся данные для пользовательских операций

Error Используется для поиска шаблонов форматирования при обработке ошибок. Installer имеет свой собственный механизм обработки ошибок

Shortcut Здесь хранится вся информация, необходимая для создания файловых ярлыков

ReserveCost Эта таблица содержит информацию о необходимом дисковом пространстве для каждого компонента приложения

Таблица 4. Файловые таблицы программы

Листинг 2. Чтение полей в указанной таблице

Set obj = CreateObject("WindowsInstaller.Installer")Set ob = obj.OpenDatabase ("C:\ACDSee\ACDSee 10 Photo ↵ Manager.msi",0)set View=ob.OpenView("SELECT Property, Value FROM ↵ Property")

View.ExecuteDo Set Record = View.Fetch If Record Is Nothing Then Exit Do

Wscript.Echo Record.StringData(1) + ↵ vbTab+vbTab+Record.StringData(2) LoopSet View = Nothing

Page 20: 069 Системный Администратор 08 2008

18

администрирование

ваются без кавычек; все присваиваемые значения – в ка-вычках и, наконец, названия полей и таблиц чувствитель-ны к регистру.

Удаление существующих полей из таблицыУдаление какого-либо поля осуществляется в соответствии со следующим алгоритмом:n установить курсор на таблицу, в которой необходимо

удалить параметр;n установить курсор на удаляемый параметр в таблице;n нажать кнопку <DEL> на клавиатуре или правую кноп-

ку мыши, а в контекстном меню – DELETE;n подтвердить намерение удалить параметр.

Эту же задачу можно решить программным способом (см. листинг 4), используя шаблон 1. Для обеспечения воз-можности записи в таблице необходимо установить второй параметр метода OpenDatabase равным единице (1).

Изменение значений существующих полейИзменение значения осуществляется путем установки кур-сора в необходимую ячейку двойным щелчком левой кноп-ки мыши (см. рис. 3).

Программное изменение свойства осуществляется по тем же правилам. По сравнению с предыдущими двумя случаями, изменяется только запрос.

В листинге 5 осуществляется отключение компонен-та Device Detector.

ЗаключениеВнимательно изучив предложенный вариант, читатель без труда сможет либо с помощью сценария на VBScript, ли-бо с помощью программы orca.exe значительно облегчить себе задачу массовой установки программного обеспече-ния, что позволит сэкономить массу времени и сил.

Рисунок 3. Изменение параметра

Листинг 3. Создание нового атрибута в таблице

Set a = CreateObject("WindowsInstaller.Installer")Set b = a.OpenDatabase ("C:\acdsee\ACDSee 10 Photo ↵ Manager.msi",1)b.OpenView("INSERT INTO Property ↵ (Property.Property, Property.Value) ↵ VALUES ('PIDKEY', '1234567890')").Executeb.Commit

Листинг 4. Удаление существующего атрибута в таблице

Set a = CreateObject("WindowsInstaller.Installer")

Листинг 5. Изменение значений существующих полей таблицы

Set a = CreateObject("WindowsInstaller.Installer")Set b = a.OpenDatabase ("C:\acdsee\ACDSee 10 Photo ↵ Manager.msi",1)b.OpenView("UPDATE Feature SET Level='0' WHERE ↵ Feature='DevDetect'").Executeb.Commit

Set b = a.OpenDatabase ("C:\acdsee\ACDSee 10 Photo ↵ Manager.msi",1)b.OpenView("DELETE FROM Property WHERE ↵ 'PIDKEY'='1234567890')").Executeb.Commit

Page 21: 069 Системный Администратор 08 2008

19№8, август 2008

на правах рекламы

Причем причина этого отнюдь не в отставании технологий, а в особенностях размещения

информации в современных файловых системах, и в первую очередь во фраг-ментации файлов. Это верно как в от-ношении работы пользователя с до-кументами, так и в отношении самой операционной системы (фрагмента-ция системных файлов, файла под-качки). Примечательно, что от фраг-ментации страдают не только рабо-чие станции сотрудников любой компа-нии, но и различные серверы. Для ре-шения описанной проблемы применя-ются специальные программы – де-фрагментаторы. Одной из них явля-ется продукт Diskeeper от компании Diskeeper Corporation. Он отличается широким набором функциональных возможностей, которые позволяют го-ворить о нем как о профессиональном инструменте.

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

В рассматриваемой програм-ме реализовано несколько уникаль-ных разработок компании Diskeeper Corporation. InvisiTasking обеспечива-ет незаметность процесса дефраг-ментации для пользователя (исполь-зуются только свободные системные ресурсы), Intelligent Defragmentation отвечает за выбор стратегии оптими-зации (это позволяет добиться макси-мальной производительности жест-кого диска).

Помимо перечисленных техноло-гий у программы Diskeeper есть и не-мало других полезных возможнос-тей. В качестве примера можно отме-тить полную поддержку VSS (Volume Shadow Copy Service) и 64-битных операционных систем, проведение дефрагментации в разделах, в кото-рых осталось меньше 1% свободно-го пространства, работа с очень силь-но дефрагментированными файлами

(в том числе и с разбитыми на милли-оны частей объектами), управление пи-танием на ноутбуках, ведение истории выполненных операций и т. д.

Еще одной особенностью про-граммы Diskeeper является наличие у нее нескольких версий, рассчитан-ных на использование на различных компьютерах. Две из них предназна-чены для рабочих станций. Они от-личаются друг от друга наличием/от-сутствием технологии I-FAAST и мак-симально возможным объемом обра-батываемых дисков. Серверных вер-сий у Diskeeper тоже две. Основное различие между ними – возможность или невозможность работы с больши-ми томами, объем которых исчисляет-ся терабайтами.

Ну и конечно же, нельзя не отме-тить наличие в рассматриваемой ли-нейке программ продукта Diskeeper Administrator. Он предназначен для уда-ленного управления системой дефраг-ментации на всех компьютерах (вклю-чая серверы), входящих в информа-ционную систему предприятия. С его помощью системный администратор, не вставая со своего рабочего места, может устанавливать и при необходи-мости обновлять продукты Diskeeper на других ПК, настраивать их работу, осуществлять мониторинг и выявлять возможные проблемы.

Самым серьезным недостатком продуктов Diskeeper является англо-язычный интерфейс. Причем разра-ботчики обещают, что уже в ближай-шее время на рынке появятся русско-язычные версии этих программ. Будем надеяться, что они сдержат свое слово, поскольку Diskeeper – это действитель-

но удобный и функциональный инстру-мент для профессионалов.

Марат Давлетханов

Комментарии Владимира Высоцкого, руководителя отдела экспертизы ЗАО «Софткей»Проблемы фрагментации не толь-ко приводят к замедлению работы пользователей, но и зачастую влия-ют на безопасность. Можно привести пример антивирусной проверки фраг-ментированных файлов и дефрагмен-тированных. В последнем случае на-блюдается заметный прирост скоро-сти около 18-20%. Конечно, это важно только при первоначальной проверке, т.к. современные антивирусные ре-шения производят индексацию и пос-ледующие проверки происходят быс-трее. В случае резервного копирова-ния скорость доступа к файлам может быть критичной. Так что своевремен-ная дефрагментация, особенно серве-ров с критичными данными, позволит повысить скорость резервного копиро-вания и как следствие вероятность со-хранения данных.

Diskeeper – увеличение производительности

винчестеровЛюбой системный администратор знает, что общая

производительность компьютерной системы при решении какой-то задачи равна производительности самой «узкой» среди

используемых ресурсов ее части. И в последнее время таким местом все чаще и чаще становятся жесткие диски.

Page 22: 069 Системный Администратор 08 2008

20

администрирование

Вспоминая статью [1], посвящен-ную бесплатному почтовому серверу Office Mail Server, с жа-

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

OMS верой и правдой служил в на-шей компании почтовым голубем. Вре-мя шло, и запросы сотрудников компа-нии менялись. Однажды, когда некое важное письмо было утеряно сотруд-ником, стало понятно, что есть необ-ходимость иметь общий архив писем с быстрым поиском по заданным ус-ловиям. Благо, что общий поток элек-тронной почты укладывался не более чем в 100 писем в день, включая спам. Количество почтового хлама росло с каждым днем.

Спам-фильтр сервера OMS лишь превращал борьбу со спамом в иг-

ру в кошки-мышки. Нужно было ис-кать какие-то решения, и, как всегда, все должно было быть дешево, но ка-чественно.

Собственно, почти все оказалось под рукой. В качестве хранителя поч-тового архива и программы, обес-печивающей быстрый поиск старых писем, был выбран всем известный MS Outlook, который входит в стан-дартный набор MS Office. Антиспам-фильтром была выбрана програм-ма SpamPal. Для лучшего понимания всей схемы рассмотрим каждый ком-понент отдельно.

Office Mail ServerЧтобы понять принципы работы OMS, достаточно прочитать статью [1]. В не-скольких словах, этот сервер имеет в себе перечень компонентов, обес-печивающих транспорт, сортировку и фильтрацию почтового потока: SMTP- и POP3-серверы, SMTP- и POP3-кли-енты, сортировщик и фильтр спама,

а также IP-фильтр, позволяющий раз-решить или ограничить доступ к сер-веру, отдельному хосту или целой под-сети.

Вкратце, схема взаимодействия такова. Имеется виртуальный почто-вый домен, при упоминании которо-го в адресе получателя письмо «па-дает» в почтовый ящик компании, за-веденный на сервере провайдера. POP3-клиент сервера OMS по распи-санию забирает письма с этого ящика и при помощи сортировщика раскла-дывает их по папкам конечных получа-телей. Доступ к этим папкам осущест-вляется с помощью встроенного POP3-сервера, посредством которого кли-енты получают предназначенные им письма. При отправке письма клиент подключается к встроенному SMTP-серверу, и его сообщение ставится в очередь на отправку. Затем SMTP-клиент, используя транспорт провай-дера, отправляет письма из очереди по назначению.

Почтовое отделение для малого офиса: OMS + SpamPal + MS Outlook

Александр Емельянов

Почтовый сервер с фильтром спама и хранением архива писем, а в качестве платформы – Windows XP. Стабильная и быстрая работа многие месяцы без отказа, плюс эффективная защита от спама и быстрый поиск важных почтовых сообщений, утраченных пользователями. «Бред!», – скажете вы, глядя на заголовок статьи. Не торопитесь делать выводы.

Page 23: 069 Системный Администратор 08 2008

21№8, август 2008

администрирование

SpamPalЭтот проект, аналогично OMS, не име-ет полноценного развития уже не-сколько лет. Однако функциональность работы SpamPal заставляет рассмат-ривать его как серьезного кандидата для борьбы со спамом. В качестве ра-бочей была использована версия 1.594 этого продукта, но есть и более свежие бета-версии.

Для фильтрации спама SpamPal использует так называемые DNSBL (DNS blacklists, «черные списки» DNS), которые используются провайдерами для блокировки почты с серверов, за-меченных в рассылке спама. Попрос-ту говоря, SpamPal, получая письмо из почтового ящика, делает запрос на наличие IP-адреса сервера отпра-вителя в списке DNSBL, и, при поло-жительном ответе помечает его как спам.

Помимо этого после включения фильтра RegEx (от regular expressions – регулярные выражения), есть возмож-ность фильтровать почту по вхождени-ям слов. В помощь к этому можно ис-пользовать, например, новостную сис-тему электронного журнала «Спам-тест» (spamtest.ru) от Лаборатории Кас-перского. Каждую неделю они публи-куют самые популярные тематики спа-ма с примерами писем, на основе кото-рых вы можете строить регулярные вы-ражения для фильтрации. Нужно отме-тить, что SpamPal требует некоторого первоначального обучения, потому что спамом, по его мнению, вполне могут оказаться доверенные отправители.

После установки SpamPal являет-ся посредником между почтовой про-граммой и сервером, с которого по-лучается почта. Сортируя сообщения на ликвидные и спам, программа ниче-го не удаляет и оставляет право выбо-ра конечному пользователю. Она лишь помечает сообщение, расцененное ей как спам, и пересылает его даль-ше. Практически все самые извест-ные почтовые клиенты могут работать со SpamPal. Именно поэтому програм-ма оказалась именно тем, что нужно. Напомню, что OMS имеет встроенный POP3-клиент и для транспорта почты от провайдера к ящику конечного по-лучателя использует связку POP3-кли-ент – фильтр спама – POP3-сервер. Те-перь мы добавляем еще одно звено.

Процесс установки SpamPal пре-

дельно прост, и его запуск в работу, при правильном понимании всех мани-пуляций, дело пары минут. Однако есть один нюанс. После установки програм-ма работает только в контексте поль-зователя, то есть для ее запуска (пусть даже и автоматического) необходимо войти в систему. Но нас это не совсем устраивает, все должно функциониро-вать независимо от того, был выполнен вход в систему или нет. Для решения этой задачи будем использовать ути-литу WinService Manager [2]. Ее нужно запустить после установки SpamPal и указать имя сервиса, а также мес-то расположения файла spampal.exe и рабочей папки. В результате наш спам-фильтр будет работать как сер-вис. Вдобавок к этому нужно удалить SpamPal из автозагрузки, куда он про-писывает себя после установки.

Нужно отметить, что для первона-чальной работы программа уже имеет минимальную конфигурацию. Поэтому зачастую пользователю, пытающему-ся «прикрутить» антиспам к почтово-му клиенту, достаточно следовать инс-трукциям соответствующего раздела руководства к программе [3]. Как на-строить SpamPal для нашего случая, будет описано дальше.

Microsoft OutlookЭтот продукт в представлении не нуж-дается. Более того, существует боль-шая вероятность, что у человека, ко-торый будет отвечать за архивацию почты, он уже установлен в составе MS Office. Я заострю внимание лишь только на нужных нам особенностях программы. Как уже говорилось, в на-шей схеме он будет выступать хра-нилищем электронных сообщений и обеспечивать поиск необходимой корреспонденции.

Всю информацию MS Outlook хра-нит в PST-файлах (файлы личных па-пок). Причем это автономное хранили-ще, и его преспокойно можно переме-

щать с диска на диск и даже перено-сить на другой компьютер и работать с ним как на личной машине. Это пер-вый плюс для нашей задачи. Второй плюс – PST-файлы могут быть сжаты как средствами Outlook, так и при по-мощи архиваторов. Для примера, файл личных папок размером 3 Гб мо-жет быть сжат архиватором WinRAR вдвое.

Поскольку PST-файлы будут со-держать большое количество писем, то будет вполне уместным рассказать об ограничении размера этих файлов. На данный момент существует два формата этих файлов – ANSI и Unicode. Возможность создания файлов лич-ных папок в формате Unicode появи-лась в MS Outlook 2003. Это позволи-ло увеличить максимальный размер с 2 Гб (для формата ANSI) до 20 Гб (для формата Unicode). Однако су-ществует одна проблема с использо-ванием PST-файлов. При приближе-нии к максимальному размеру фай-ла личных папок MS Outlook начина-ет работать нестабильно. Рассмотрим параметры реестра, которые помогут не допустить этого.

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

Два следующих параметра от-носятся к файлам в формате ANSI. MaxFileSize, WarnFileSize – то же са-мое, что и параметры MaxLargeFileSize и WarnLargeFileSize соответствен-но. Приращение значений парамет-

Имя Тип Допустимый диапазон значений По умолчанию

MaxLargeFileSize REG_DWORD 0x00000001-0x00005000 0x0000500020480 (20 Гб)

WarnLargeFileSize REG_DWORD 0x00000000-0x00005000 0x00004C0019456 (19 Гб)

MaxFileSize REG_DWORD 0x001F4400-0x7C004400 0x7BB044002075149312 (1,933 Гб)

WarnFileSize REG_DWORD 0x00042400-0x7C004400 0x744044001950368768 (1,816 Гб)

Параметры реестра для указания максимального размера PST-файлов

Page 24: 069 Системный Администратор 08 2008

22

администрирование

ров для файлов в формате Unicode осуществляется в мегабайтах (Мб), а для файлов в формате ANSI – в ки-лобайтах (Кб).

Значения данных параметров ус-танавливаются в реестре в следую-щих ветках:

Outlook 2003:n HKEY_CURRENT_USER\Software\

Policies\Microsoft\Office\11.0\Outlook\PST;

n HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\PST.

Outlook 2007n HKEY_CURRENT_USER\Software\

Po l ic ies\Mic rosof t \O f f i ce\12 .0 \Outlook\PST;

n HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\PST.

Если таких параметров не сущест-вует, их можно создать.

Собираем компоненты воединоДля начала рассмотрим, как каждая программа должна быть настроена для построения задуманного, а затем уточним нюансы.

OMS является в этой схеме цен-тральным звеном, с него и начнем. Для получения почты с ящика провай-дера в настройках POP3-клиента долж-ны быть указаны соответствующие па-раметры: имя или IP-адрес POP3-сер-вера провайдера, порт подключения (110 по умолчанию), данные авториза-ции, тайм-аут подключения, использу-емый сортировщик, спам-фильтр и др. Но помня о том, что между провайде-ром и нашим клиентом должен рас-полагаться SpamPal для фильтрации спама, обратимся к руководству по его настройке [3]. В случае, когда SpamPal и почтовая программа (в данном слу-

чае ей выступает POP3-клиент OMS) находятся на одном компьютере, при-меняется следующая конфигурация. Вместо адреса POP3-сервера провай-дера указывается 127.0.0.1, а в качест-ве номера порта должно быть указано число 110, но… На 110 порту на локаль-ной машине ждет подключений POP3-сервер OMS, поэтому для исключения конфликта укажем другой номер пор-та, например 11010. Все остальное ос-тается без изменений.

Далее обратимся к SpamPal. В на-стройках программы в пункте «Со-единения» удаляем стандартные на-стройки и добавляем новый порт (сто-ит отметить, что если вы используе-те или будете использовать несколь-ко POP3-клиентов OMS, то для каж-дого подключения нужно будет создать новый порт). На вкладке «Установки» отмечаем «Конкретное имя сервера» и указываем имя сервера провайде-ра и порт (в нашем случае 11010). Та-ким образом, используя авторизаци-онные данные POP3-клиента OMS, SpamPal подключается к ящику, куда идет вся почта, забирает ее, проверя-ет каждое сообщение на принадлеж-ность к спаму и передает далее кли-енту. В случае, если письмо оказыва-ется, по мнению SpamPal, спамом, оно не удаляется, но в тему письма добав-ляется «**SPAM**», а также добавляет-ся заголовок «X-SpamPal:», в котором указывается фильтр, по мнению кото-рого данное сообщение – спам.

Что касается MS Outlook, здесь все предельно просто. Напомню, что вся почта, проходящая через OMS, копи-руется в учетную запись, которая яв-ляется архивной. Это задается опци-онально в настройках почтового сер-вера. Минус ее в том, что все письма хранятся в файловой системе в виде .eml-файлов в соответствующей архи-

вному мейлбоксу папке. Это затрудня-ет оперативный поиск нужного элект-ронного сообщения. Поэтому на ма-шине, которая будет выступать репо-зиторием корпоративной почты, нуж-но в MS Outlook создать отдельный PST-файл, настроить учетную запись для доставки почты из архива. Одно-временно можно создать правило, со-гласно которому письма из архива бу-дут складываться в папку, например, с названием «Текущая почта». Так-же можно создавать еще PST-файлы, в которые будет перемещаться архи-вная почта из папки «Текущая почта». Допустим, каждый такой файл будет соответствовать году и содержать пап-ки «1-й квартал», «2-й квартал» и т. д. Например, закончился первый квартал года, и вся текущая почта перекочева-ла в соответствующую папку. По окон-чании года можно получившийся PST-файл «отцепить» и скопировать на сер-вер до востребования. Все это помо-жет не только упорядочить весь кор-поративный почтовый поток, но и ус-корить поиск необходимой коррес-понденции.

ИтогЧто в итоге мы получим? Электронное сообщение, пройдя проверку на спам, доставляется на сервер OMS, а имен-но в папку получателя, а копия пись-ма – в архивную папку. После этого письмо выкачивается почтовым клиен-том и появляется у получателя. А копия письма «летит» в папку с текущей поч-той и хранится в PST-файле.

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

1. Емельянов А. Организуем работу офис-ного почтового сервера на платфор-ме Windows. //Системный админист-ратор, №12, 2006 г. – С. 40-43 – http://www.samag.ru/cgi-bin/go.pl?q=articles; n=12.2006;a=02.

2. http://winservice.ucoz.ru.3. http://www.spampal.org/manual-rus.

Замечания по SpamPal После создания порта будет лучше,

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

новлен до тех пор, пока вы не переза-пустите SpamPal.

В той версии, которая описана в ста-тье, есть ошибка в интерфейсе. Меню «Инструменты» содержит два подме-ню: «В черный список» и «В белый спи-сок». Они по смыслу перепутаны мес-тами, то есть, выбрав добавление ад-реса или домена в черный список, вы на самом деле добавите его в белый список.

Page 25: 069 Системный Администратор 08 2008

23№8, август 2008

на правах рекламы

Обычно, когда речь заходит о ре-шении этой задачи, вспомина-ют о таких полномасштабных

продуктах, как Microsoft Exchange или Lotus Notes. Однако практика показы-вает, что подавляющее большинство средних, не говоря уже о малых, ком-паний, не использует всех функци-ональных возможностей этих «мон-стров». Кроме того, администрирова-ние данных продуктов требует серьез-ных знаний. Поэтому для многих ком-паний можно порекомендовать исполь-зовать более простые и дешевые про-дукты, например MDaemon Email Server от компании Alt-N Technologies.

Несмотря на относительную деше-визну, MDaemon Email Server – полно-ценный почтовый сервер, поддержи-вающий все необходимые протоколы: SMTP, POP и IMAP. Он также может использоваться в режиме DomainPOP. При этом вся корпоративная почта бу-дет приходить на один внешний ящик. А сервер будет автоматически загру-жать из него письма и распределять их по учетным записям сотрудников (на основе поля X-Deliver-To).

Для работы с корпоративной поч-товой системой, построенной на ос-нове MDaemon Email Server, можно использовать любой бесплатный или коммерческий клиент. Кроме того, в данном сервере реализована воз-можность доступа к почтовому ящику с помощью веб-интерфейса. Это поз-воляет сотрудникам читать свою поч-ту из любой точки мира, в которой есть выход в Глобальную сеть. Интерес-но, что в составе рассматриваемого продукта есть инструменты для рабо-ты с электронной почтой с карманных компьютеров.

Хотя MDaemon Email Server не-сколько уступает таким «монстрам», как Microsoft Exchange, в нем есть все необходимое для полноценной рабо-ты. Это веб-интерфейс администра-тора, механизм для организации рас-сылок, интеграция с ODBC и Active Directory, поддержка серых и персо-нальных белых листов, защита от спа-ма, система обмена защищенными мгновенными сообщениями и многое другое. Особенностями рассматрива-емой программы являются интуитив-но понятный интерфейс и подробная справочная система. Все вместе это обеспечивает возможность настрой-

ки MDaemon Email Server специалис-тами, не имеющими опыта в решении подобных задач.

Достаточно интересна политика лицензирования, используемая ком-панией Alt-N Technologies. У продукта MDaemon Email Server есть две версии: Standard и Pro. Первая из них облада-ет минимальным набором функцио-нальных возможностей для реализа-ции полноценного почтового сервера. Вторая версия расширенная. При ее использовании продукт может приме-няться для решения многих дополни-тельных задач, связанных с организа-цией эффективного взаимодействия сотрудников компании.

Но это еще не все. У продукта есть два дополнительных модуля, обес-печивающих расширенную функцио-нальность.

Первый из них, Outlook Connector for MDaemon, предназначен для орга-низации коллективной работы, реа-лизованной в пакете Microsoft Outlook. При этом сотрудникам компании ста-новятся доступны такие инструменты, как общие календари, адресные книги, расписания встреч, списки дел и т. п.

Второй модуль – SecurityPlus for MDaemon. Он предназначен для су-щественного усиления базовой защи-ты почтового сервера. В нем исполь-зуется Kaspersky Antivirus Engine (по-иск и блокирование вирусов, шпионов и другого вредоносного ПО), техноло-гия Recurrent Pattern Detection и т. д.

Вынесение данных возможностей в отдельные модули позволяет ком-паниям самостоятельно решать воп-рос об их необходимости и целесооб-разности приобретения. Это позволя-ет минимизировать затраты на приоб-

ретение ПО, отказавшись от заведомо ненужных функций.

Марат Давлетханов

Комментарии Владимира Высоцкого, руководителя отдела экспертизы ЗАО «Софткей»Хотелось бы заметить, что в конце ав-густа ожидается выход новой версии Mdaemon 10 и SecurePlus 4. Разработ-чики постарались учесть все замеча-ния пользователей продукта и доба-вили более 40 новых «фич». Среди них: работа с несколькими доменами, полностью обновленный World Client и поддержка IPhone. Новая версия полностью поддерживает Outlook 2007. Основные усилия программистов бы-ли сосредоточены на оптимизации и ускорении работы. И это им уда-лось. При тестировании мы наблюда-ли прирост производительности по-рядка 50%.

Также хочу заметить, что с выхо-дом новой версии продукта домашние пользователи и представители малых организаций смогут получить бесплат-но лицензию MDaemon Free на 5 поль-зователей для ознакомления.

Свой собственный почтовый сервер

Сегодня одной из самых часто используемых в бизнес‑процессах компаний интернет‑технологий является электронная почта.

Она представляет собой наиболее удобное и оперативное средство обмена информацией. Поэтому системным администраторам

приходится сталкиваться с задачей организации корпоративного почтового сервера, который бы обеспечил максимальную

эффективность работы сотрудников с электронными сообщениями.

Page 26: 069 Системный Администратор 08 2008

24

администрирование

Вышедшая весной этого года опе-рационная система Windows Server 2008 содержит целый ряд

новых интересных функций, об одной из которых я хочу рассказать в этой статье. Файловая система является одним из ключевых элементов любой операционной системы, так как по су-ти это фундамент, на котором строит-ся весь функционал ОС. В Windows Server 2008 таким фундаментом яв-ляется транзакционная файловая сис-тема.

Транзакционная файловая система (TxF) – это расширение файловой сис-темы NTFS, позволяющее выполнять файловые операции над томом фай-ловой системы NTFS в рамках тран-закций. Для читателей, не посвящен-ных в специфику работы с базами дан-ных, слово «транзакция» может пока-заться непонятным и требующим до-

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

существенно увеличить стабильность работы как приложений, так и системы в целом. Еще одним дополнительным преимуществом TxF является возмож-ность дальнейшей доработки и усо-вершенствования данной технологии, что позволит обеспечить ей дальней-шее развитие.

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

Новшества в Windows Server 2008: транзакционная файловая система

Андрей Бирюков

Появление в Windows Server 2008 транзакционной файловой системы является важным нововведением. Обсудим подробнее, что из себя представляет TxF.

Page 27: 069 Системный Администратор 08 2008

25№8, август 2008

администрирование

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

Теперь о том, что не поддержива-ется. TxF не поддерживает сетевые диски (протоколы CIFS/SMB), также не поддерживается кэширование фай-ловых операций на стороне клиента. Нельзя использовать TxF при рабо-те с файловыми системами, отличны-ми от NTFS (к FAT32 это тоже относит-ся!). TxF не поддерживает операции над зашифрованной файловой систе-мой (Encrypted File System, EFS) за ис-ключением операций чтения (напри-мер, ReadEncryptedFileRaw).

Технический функционалПродолжая разговор о транзакцион-ной файловой системе, немного углу-бимся в технические аспекты ее функ-ционирования. Итак, реализация TxF стала возможной благодаря новой транзакционной инфраструктуре, ре-ализованной на уровне ядра опера-ционной системы, позволяющей сер-висам ОС участвовать в транзакци-ях, используя новый компонент – ме-неджер транзакций Kernel Transaction Manager (KTM). Тут следует отметить, что KTM может взаимодействовать на-прямую со службой Microsoft Distributed Transaction Coordinator (DTC), которая управляет транзакциями операцион-ной системы и приложений. Это так-же позволяет существенно увеличить функционал TxF. Помимо этого в обес-печении функционирования транзак-ционной файловой системы задейс-твована подсистема протоколирова-ния Common Log File System (CLFS), впервые реализованная в Microsoft Windows Server 2003 R2.

За счет того, что TxF способ-на полностью взаимодействовать с MS Distributed Transaction Coordinator, она имеет возможность участвовать в транзакциях, использующих не толь-ко менеджеры ресурсов, предостав-ляемые Kernel Transaction Manager, но и другие менеджеры ресурсов, под-держиваемые на уровне DTC. Напри-мер, система документооборота мо-жет использовать эту возможность для работы как с файловой системой, так и с базой данных и все в рамках одной транзакции. Другой пример ис-

пользования транзакционной файло-вой системы – обновление файлов на группе компьютеров.

Операции над файлами, поддерживаемые TxFСжатие. Если вы сжимаете файл, то операция по сжатию файла не явля-ется транзакционной. Но TxF будет ра-ботать со сжатым файлом, так же как и с обычным.

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

Работа с удаляемыми файлами и каталогами TxF осуществляется сле-дующим образом. Файл будет удален только тогда, когда работу с ним за-вершат все транзакции. При удале-нии каталогов доступ к его содержи-мому блокируется для доступа всех транзакций.

А вот если вы вносите изменения в файл внутри каталога, то доступ к ка-талогу не блокируется для других тран-закций, и они могут вносить любые из-менения в каталог, но не в изменяемый файл, так как доступ к нему блокиру-ется на время изменений.

Что касается административных за-дач, то на этом их описание завершает-ся, оставшаяся часть статьи будет ин-тересна преимущественно програм-мистам и разработчикам, так как речь пойдет о программировании TxF.

Вот список функций используе-мых в TxF.n CopyFileTransacted;n CreateDirectoryTransacted;n CreateFileTransacted;n CreateHardLinkTransacted;n CreateSymbolicLinkTransacted;n DeleteFileTransacted;n FindFirstFileNameTransactedW;n FindFirstFileTransacted;n FindFirstStreamTransactedW;n GetCompressedFileSizeTransacted;n GetFileAttributesTransacted;n GetFullPathNameTransacted;n GetLongPathNameTransacted;n MoveFileTransacted;n RemoveDirectoryTransacted;n SetFileAttributesTransacted.

В качестве одного из парамет-ров при вызове перечисленных выше функций указывается ссылка на тран-закцию, в рамках которой выполняет-ся данная операция. Транзакция может быть создана либо вызовом функции CreateTransaction при использовании Kernel Transaction Manager или функ-ции GetKTMHandle при использова-нии DTC.

Появление транзакционной фай-ловой системы привело к внесению ряда изменений в работу некото-рых функций, например, CloseHandle, CreateFilemapping, FindNextFile и дру-гих. Последовательность действий при транзакционной работе с фай-ловой системой может быть следу-ющей:n создание транзакций на уровне

ядра:

n транзакционное удаление файла:

n завершение транзакции при ус-пешном выполнении предыдуще-го пункта:

n откат транзакции при ошибке:

n закрытие ссылки на транзакцию:

На этом я завершаю свое крат-кое описание транзакционной файло-вой системы Transactional NTFS. Ду-маю, что появление новой файловой системы будет полезно не только раз-работчикам, но также и администра-торам, так как позволит повысить на-дежность работы корпоративных ре-сурсов в целом.

1. Алексей Федоров «Microsoft Windows Server 2008. Краткий обзор ключевых новинок».

2. http://msdn.microsoft.com/en-us/library/bb968806(VS.85).aspx – раздел MSDN, посвященный Transactional NTFS.

IntPtr tx = CreateTransaction ↵ (IntPtr.Zero, ↵ IntPtr.Zero,0,0,0,0, null);

If (!DeleteFileTransactedW ↵ (file1,tx))

CommitTransaction(tx);

RollBackTransaction(tx);

CloseHandle(tx);

Page 28: 069 Системный Администратор 08 2008

26

администрирование

Специализированные решения в отличие от применения обыч-ных интересны тем, что позво-

ляют получить нужный результат с ми-нимальными усилиями и за более ко-роткий срок. Большая часть дистри-бутивов, построенных на Linux или одной из версий BSD-системы, име-ют удобные инструменты для пост-ин-сталляционной настройки, нетребова-тельны к ресурсам и распространяют-ся по свободной лицензии. Это дела-ет их востребованными в небольших организациях, не имеющих штатных специалистов.

Дистрибутивов, построенных на Linux, несколько больше, чем на иных платформах. Решения, использую-щие в качестве основы другие вари-анты UNIX-систем, можно пересчи-тать буквально по пальцам. Наверное,

поэтому дистрибутив ComixWall ISG (Internet Security Gateway), появившись в июне 2006 года, сразу привлек к се-бе внимание. ComixWall [1] построен на OpenBSD, которая считается самой безопасной системой, что и послужило определяющим фактором при ее выбо-ре разработчиками в качестве основы. Номер ComixWall соответствует номе-ру того релиза OpenBSD, на котором он построен, поэтому начальная версия сразу же получила цифру 3.9. Назва-ние Comix произошло из комбинации английских слов COMmunication и unIX. Особо подчеркивается, что ComixWall не является еще одним межсетевым экраном, которых сегодня предоста-точно, и удивить ими, наверное, уже никого нельзя. Разработчики позици-онируют его как законченное UTM-ре-шение (см. врезку), предназначенное

для создания шлюзов безопасности, защищающих SOHO-сети и способ-ное составить конкуренцию многим коммерческим продуктам.

Интерфейс управления ComixWall распространяется по BSD-лицензии, по этой же лицензии распространя-ются операционная система и отдель-ные пакеты. Часть пакетов, входящих в состав дистрибутива, имеет GNU GPL-лицензию.

Возможности ComixWallАктуальной на момент написания ста-тьи была версия 4.2 от декабря 2007 го-да, с обновлением в январе 2008 го-да (ComixWall 4.2_20080109). Следу-ет заметить, что сами разработчики первые релизы пока еще считают про-бными (Proof of Concept), больше ори-ентированными на специалистов, чем

Шлюз в Интернет на ComixWall ISG

Сергей Яремчук

Использование специализированных дистрибутивов для организации доступа в Интернет нельзя назвать чем-то особенным. Выбор только за решением. Сегодня познакомимся с возможностями ComixWall ISG.

Page 29: 069 Системный Администратор 08 2008

27№8, август 2008

администрирование

на широкое применение. Хотя учиты-вая, что работают они стабильно, серь-езных недостатков за пару лет обнару-жено не было, поэтому ничто не меша-ет их использовать для защиты сети.

Дистрибутив включает в себя пол-ный спектр самого разнообразного программного обеспечения, обеспе-чивающего:n функцию фильтрации пакетов при

помощи pf, входящего в состав OpenBSD;

n антивирусную защиту с ClamAV с автоматическим обновлением при помощи freshclam;

n систему обнаружения атак Snort с обновлением правил oinkmaster;

n контентный веб-фильтр Dans Guardian с проверкой трафика при помощи ClamAV;

n анти-спам фильтры SpamAssassin и spamd;

n P3scan и smtp-gated антивирусные и анти-спам почтовые прокси;

n прокси Dante (SOCKS), Squid (HTTP), f tp-proxy, IMSpector (IM-прокси с поддержкой Jabber/XMPP, MSN, IRC, Yahoo и других);

n серверы: Apache, DNS, DHCP и OpenSSH.

И некоторые другие приложения, в том числе предназначенные для сбо-ра и вывода разного рода статистики. Все настройки могут быть произведе-ны стандартным способом из команд-ной строки. Начиная с версии 4.0b по-явился веб-интерфейс, написанный на PHP. Использование gettext позво-ляет легко перевести его на другие языки. Хотя в настоящее время их не-много, доступны только английский, испанский и турецкий варианты. Кро-ме базовых сетевых установок, с его помощью можно настроить правила пакетного фильтра и сервисов, вхо-дящих в комплект, производить мо-ниторинг основных системных пара-метров и загрузки сети и многое дру-гое. Плюс при помощи веб-интерфей-са можно получить доступ к man-стра-ницам и другой документации.

Некоторые возможности (VPN, VLAN, CARP, SNMP) пока настраива-ются только из командной строки. Воз-можность их конфигурирования через веб-интерфейс планируется добавить уже в следующих релизах. Кроме это-го, в планах разработчиков добавле-

ние будущих версий: антивирусной проверки FTP- и IM-трафика, а также IMAP-прокси с антивирусной и анти-спам защитой.

Эту информацию по дистрибутиву можно получить на сайте проекта [1] и странице на Google Code [2], теперь же познакомимся с ComixWall ближе.

Установка ComixWallДистрибутив доступен в двух версиях – для платформ i386 и amd64. Загруз-ка возможна только через BitTorrent. Размер дистрибутива чуть больше 140 Мб, для установки которого тре-буется не менее 650 Мб свободного места на диске. Кстати, в первое вре-мя версия 4.2 была доступна толь-

ко для amd64, так как разработчики по праву считали, что 64-битные сис-темы имеют ряд преимуществ перед 32-битными и сделали ставку на бо-лее высокопроизводительное реше-ние. Затем уже по многочисленным просьбам пользователей появился ре-лиз под i386.

Кроме дистрибутива, советую ска-чать и документ System Administration Guide (SAG), который поможет быстрее сориентироваться в настройках. К тому же он, как и другие документы, впол-не может пригодиться. Как сказано в документации, установка ComixWall это: «is the usual OpenBSD installation», то есть обычная установка OpenBSD. Поэтому опыт в инсталляции этой сис-

Рисунок 1. После установки системы последует инсталляция ComixWall

Рисунок 2. Окно ComixWall Administration Interface

Page 30: 069 Системный Администратор 08 2008

28

администрирование

темы лишним не будет. В крайнем слу-чае следует почитать документы [3, 4], в которых все подробно расписано. Конечно, это несколько портит первое впечатление от ComixWall, ведь не каж-дый пользователь из SOHO, на кото-рого ориентирован этот дистрибутив, сможет или захочет устанавливать систему таким образом. Например, в том же pfSense [5] весь процесс инс-талляции максимально автоматизиро-ван, и справиться с ним может человек без особой подготовки, не боящийся несколько раз нажать Next. Предусмот-рено обновление установленной ранее

версии 4.1 до 4.2. В документации реко-мендуется создать 5 разделов как ми-нимум таких размеров: / – 181 Мб, /home – 2 Кб, /tmp – 10 Кб, (да, имен-но Кб) /usr и /var по 230 Мб. Плюс раз-дел подкачки. Не рекомендуется про-пускать сетевые (да и другие) настрой-ки во время установки системы, хотя затем можно к ним вернуться.

По окончании установки систе-мы запустится установочный скрипт ComixWall – install.site или upgrade.site, в зависимости от выбранного режи-ма. Для продолжения установки вво-дим «y».

Скрипт поначалу запросит синхро-низировать время с NTP-сервером:

Затем указать расположение па-кетов и название привода компакт-дисков:

Если диск был нормально обнару-жен при установке системы, то во всех случаях достаточно нажимать <Enter>. После чего будет выведен список па-кетов. Все пакеты отмечены к установ-ке (см. рис. 1), отказываться от како-го-либо обычно смысла нет, поэтому опять нажимаем <Enter>. Повторно подтверждаем свое намерение уста-новить пакеты:

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

Отмечаем нужный цифрой и анало-гично поступаем для WAN. Если все на-стройки верны, то на запрос:

вводим «done». Если нажать <Enter>, весь процесс пост-инсталляционной

Unified Threat ManagementТермин Unified Threat Management (UTM, Объединенный контроль угроз) введен Чарльзом Колодги (Charles Kolodgy) из ана-литической компании IDC (International Data Corporation) в документе «Worldwide Threat Management Security Appliances 2004-2008 Forecast and 2003 Vendor Shares: The Rise of the Unified Threat Management Security Appliance», опубликованном в сентябре 2004 года. В нем предлагалось интегриро-вать в устройство защиты сети три компо-

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

Ready to install packages? [yes]

Which is LAN interface?Options:1) pcn02) pcn1Type 'done' to exitSelection? (#/done) [1]

Configuration complete!You can restart or type 'done' to exit.Choose configuration method:Options:1) Automatic2) InteractiveType 'done' to exitSelection? (#/done) [1] done

Рисунок 3. Статистика работы pf

Welcome to the ComixWall install program.…Proceed with install? [no] y

Do you want to sync datetime with a Time Server? [no]

Let's install the packages!Location of packages? (cd disk ftp http nfs or 'done') [cd]Available CD-ROMs are: cd0.Which one contains the install media? (or 'done') [cd0]Pathname to the packages? (or 'done') [packages]

Page 31: 069 Системный Администратор 08 2008

29№8, август 2008

администрирование

настройки повторяется сначала. Про-читав поздравления по окончании ус-тановки, перезагружаем систему.

Веб-интерфейсПо умолчанию в системе заведено две учетных записи, имеющих дос-туп через веб-интерфейс: admin и user. Пароль в обоих случаях одинаков – wwwcomix. Пользователь с учетной записью user получает доступ толь-ко к статистике, ее может использо-вать начальство для контроля. Доступ из WAN блокируется правилом pf, по-этому зайти можно только из LAN. Ес-ли набрать адрес локального интер-фейса, то в процессе подключения встроенный DNS-сервер выдаст имя узла. Работа осуществляется по про-токолу HTTPS. Причем есть одна осо-бенность. Если набрать http://lan_ip_adress, то клиент будет перенаправлен на https://hostname, но вот подключе-ние почему-то блокируется. Хотя в до-кументации сказано, что это должно срабатывать. Поэтому вариант толь-ко один – https://lan_ip_adress. Далее принимаем сертификат и регистриру-емся в системе.

Ес л и п о уд о б с т ву ус т а н о в -ки ComixWall проигрывает тому же pfSense, то по возможностям веб-ин-терфейса (ComixWall Administration Interface) он выходит далеко вперед. Я считаю, это одна из сильных сторон этого дистрибутива. Еще одна важная особенность веб-интерфейса – отсутс-твие промежуточных файлов с мета-данными, которые часто используют-ся в подобных решениях для генера-ции окончательных конфигурационных файлов. Поэтому можно без проблем производить параллельную настрой-ку, как в командной строке, так и че-рез веб-интерфейс.

Даже несмотря на наличие большо-го количества функций, все настрой-ки находятся именно там, где ожида-ешь их увидеть. В 96-страничном ру-ководстве установке посвящено всего 10 страниц (плюс ссылка на докумен-тацию OpenBSD) все остальное отно-сится к работе с веб-интерфейсом, по-этому рассказать о его возможностях на странице журнала невозможно.

Зрительно интерфейс разбит на три части. Слева находится основное ме-ню настроек, состоящее из 17 пунк-тов отвечающих за работу с конк-

ретным модулем, входящим в состав системы (см. рис. 2). Последнее ме-ню Information содержит ссылки на до-кументацию, man-страницы и ссылки на сайты связанных проектов. Под ос-новным меню находится небольшая панель, в которой выводятся показа-ния температурных сенсоров (если они есть). После выбора пункта в ос-новном меню, вверху страницы, бу-дет доступно дополнительное меню, соответствующее выбранному моду-лю. Для каждого пункта они отлича-ются, но обычно присутствует пункт Info, в котором можно получить об-щую информацию, Graphs – графики, Logs – журналы, Configs – настрой-ки. Для PF, например, есть еще пункт Statistic (см. рис. 3), в котором нагляд-но показана статистика работы пакет-ного фильтра и Rules – настройка пра-вил. Редактирование любого парамет-ра для человека, представляющего ко-нечный результат, не выглядит слож-ным (см. рис. 4). Доступны подсказки, различные меню и списки предлагают предустановленные значения. В ана-лизе журналов поможет система филь-тров. Для графиков можно выбрать временной промежуток и вид.

По умолчанию все дополнитель-ные сервисы, кроме антиспам-филь-тра для входящих сообщений, включе-ны, о чем будет выведена информация

в первом окне, которое появится пос-ле регистрации в системе (см. рис. 2). Правила pf по умолчанию разрешают работу по основным протоколам (веб, ftp, почтовый) из внутренней сети, по-этому ComixWall готов к работе сразу после установки.

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

1. Сайт проекта ComixWal l – ht tp: //comixwall.org.

2. Страница проекта на Google Code – http://code.google.com/p/comixwall.

3. OpenBSD 4.3 Installation Guide – http://openbsd.org/faq/faq4.html.

4. Установка OpenBSD 4.2 – ht tp: //www.lissyara.su/?id=1589.

5. Яремчук С. Дистрибутив для создания межсетевого экрана pfSense. //Сис-темный администратор, № 2, 2008 г. – C. 8-21.

Рисунок 4. Редактирование правил pf

Page 32: 069 Системный Администратор 08 2008

30

администрирование

Регулярно общаясь с добрым де-сятком людей, разбирающихся в технике, я заметил, что ни у од-

ного из них нет ноутбука с Linux, хо-тя практически все время от времени имеют дело с этой операционной сис-темой, а кто-то только и занимается её администрированием. Лишь у двух че-ловек на компьютере имелся эмулятор VMware, под которым у них был образ Linux-машины на всякий случай.

Вполне возможно, что использо-вание SSH-клиента PuTTY и подклю-чение к Интернету позволяют им ре-шать все свои проблемы без установки этой операционной системы на ноутбу-ках, а с графической средой X-Window они просто не работают. Также интере-сен факт, что большая часть неплохих специалистов, использующих Linux на своих настольных системах, ничего не знают о настройке Wi-Fi.

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

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

пора заменить чем-то современным 256 Мб памяти, диск в 20 Гб и обычный СD-ROM, даже непишущий.

Покупка ноутбукаНайти подходящий ноутбук на замену оказалось непросто. Все люди по сво-ей природе ленивы, и я в том числе. Проблема в том, что производители коммерческих операционных систем делают на этой слабости деньги, пред-лагая компьютеры с уже установлен-ной системой. Так как большая часть покупателей не специалисты, то их ус-траивает такая практика, когда цена за операционную систему включает-ся в общую стоимость покупки, а сами покупатели избегают возможных проб-лем. Но мы-то знаем, что бесплатный сыр бывает в мышеловке. У всех одна система, не надо переучиваться, на-лицо только польза. А в том-то и дело, что господа маркетологи отучают лю-дей думать. Нет, это не значит, что они плохие, они-то как раз очень хорошо справляются со своей работой, думая за других. Благодаря их работе в обще-стве поощряется другая система цен-ностей, что, на мой взгляд, неправиль-но. «Думать по жизни» становится уде-лом немногих и не модно. На что толь-ко не идёт капитализм ради получения сверхприбыли! По законам РФ, как и с точки зрения здравой логики запре-тить их работу нельзя, как и нельзя ос-тановить прогресс в целом. Деятель-ность фирмы, предлагающей купить что-то (например, тот же ноутбук), ни-

чему не противоречит. Проблема в том, что покупателям не позволяют сделать честный выбор, что покупать. Если из-начально люди, владеющие компью-терами, вызывали уважение, так как им надо было не только этот компью-тер купить вместе с программами, но и суметь его настроить, то сейчас такого глубокого уважения нет, так как поль-зователь может совсем не знать, как устроено то, чем он пользуется.

Цель моей статьи – показать, что не тот круче, у кого ноутбук дороже, так как я могу себе позволить купить любой продающийся, в пределах ра-зумного, как и добрая половина ад-министраторов, а тот, кто в него душу вложил и что-то сделал сам.

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

У каждого на примете будет своя модель, мне же подходящую выбирать долго не пришлось. Число продающих-ся моделей без операционной системы Windows и одновременно имеющихся в наличии было не так велико, поэто-му мой выбор пал на Asus X51RL с про-цессором M540 1,86 ГГц, 2048 Мб па-мяти, жёстким диском 160 Гб, видео-картой ATI Radeon Xpress 1100, при-водом DVD-SuperMulti DL, Wi-Fi-адап-тером (Atheros ARBXB63 (AR5BXB63,

История одной установки Linux на ноутбуке

Павел Закляков

Установка Linux на ноутбук проходила с трудом, сначала дистрибутив не хотел грузиться, потом Wi-Fi-адаптер не был подхвачен автоматически. Упорное желание установить беспроводную связь в конечном итоге привело к положительному результату. В статье рассказывается одна история такой установки с подробным описанием всех проделанных шагов.

Page 33: 069 Системный Администратор 08 2008

31№8, август 2008

администрирование

AR5007EG), встроенным считывате-лем SD-карт и установленной систе-мой FreeDOS.

Выбор дистрибутиваМною был выбран дистрибутив Linux Fedora 8, как давно уже использую-щийся и проверенный временем, об-новления к нему ещё выходят и бу-дут выходить, так что недавний выход Fedora 9 меня не вдохновил.

Проблема загрузкиПервая проблема, с которой я столк-нулся: вставил диск c Fedora 8, начи-наю установку, запускается меню, пос-ле грузится ядро, подключается образ виртуального диска, пишет «Ready.» и виснет (см. рис. 1).

Осознавая, что наступает век 64-битных процессоров с обратной сов-местимостью, у меня закралось подоз-рение, что по закону подлости её как раз и нет. Скачав и записав на диск Fedora 8 (64-битная версия), я столк-нулся с той же самой проблемой – за-висание процесса установки на этапе распаковки ядра. Казалось бы, дело зашло в тупик. Возвращать ноутбук на фирму не хотелось, да и в собствен-ных глазах это выглядело бы непра-вильно. Прийти ремонтировать «же-лезо» по гарантии – вдруг там ошиб-ка, надо знать на что пожаловаться. Желая протестировать подозритель-ное железо, порывшись у себя на сто-ле, я обнаружил какой-то древний дистрибутив Knoppix, который возьми и заработай. Заодно с него проверил память с помощью memtest86 – сбоев нет. Данная ситуация меня вдохнови-ла, после чего я быстро раздобыл дист-рибутив «Fedora 9 beta 64 bit», который на волне удач тоже заработал и начал ставиться, не зависая на этапе распа-ковки ядра.

Перебирая в голове способы на-иболее простого объединения двух ус-тановочных дисков в один – загрузчика и ядра с одной и всей системы с дру-гой – и не найдя простого решения, я и моя лень стали искать в Интернете подобные случаи. И, надо сказать, пра-вильно сделали – нашли выход.

Оказалось, что на сайте Red Hat есть Bug №239585 [1], из которого ста-ло ясно, что во время загрузки ядру на-до передать параметр «edd=skipmbr» (см. рис. 2).

Что интересно, подоб-ное решение помогает и не-которым настольным систе-мам, где используются жёс-ткие диски SATA.

В дальнейшем установ-ка прошла без проблем. Ав-томатически была обнару-жена сетевая карта, звуко-вая и даже считыватель карт SD HC заработал. Единственное, что не заработало, – это поддержка Wi-Fi.

Проблемы с Wi-FiНа подключение Wi-Fi ушло недели две экспериментов по вечерам, но для чи-тателей этот путь будет пройден гораз-до быстрее. Первым делом я решил уз-нать, какой у меня стоит Wi-Fi-чипсет. Так как программы могут ошибаться, я решил узнать это физически, для че-го перевернул ноутбук и осмотрел его на предмет гарантийных наклеек. На-клеек обнаружено не было, а наклей-ка, указывающая тип Atheros ARBXB63 (см. рис. 3), мне не помогла ничем, по-этому, вооружившись отвёрткой, я ак-куратно отвинтил 7 винтов (см. рис. 4) и снял крышку. Под крышкой я увидел процессор, модули памяти и модуль Wi-Fi (см. рис. 5).

Так как надписи на модули не смог-ли прояснить ситуацию, я вытащил модуль из разъёма. Обратная сто-рона оказалась более информатив-ной – это был AzureWave адаптер AW-GE780 (см. рис. 6), но для меня этой информации оказалось мало, поэтому я снял экранирующую крышку с платы

и на большой микросхеме прочитал Atheros AR2425 (см. рис. 7).

Примечание. Если вы не не ра-диолюбитель, не очень аккуратны и не уверены в себе, то лучше не раз-бирать ноутбук, а обойтись коман-дой lspci и базой кодов оборудования, так как разборка может не только ли-шить вас гарантии, но и привести но-утбук в нерабочее состояние. Не забы-вайте про статическое электричество, заземляйтесь!

После на сайте www.atheros.com я выяснил, что это адаптер AR5007EG [8] и фотография в описании очень похожа на ту, что у меня. После че-го я отправился по адресу проекта MadWifi [2], так как это неплохой про-ект по поддержке беспроводных сете-вых адаптеров Wi-Fi под Linux на базе чипсетов Atheros. К сожалению, уста-новка через:

не прошла, так как для madwifi нужна была новая версия ядра 2.6.25.6-27.fc8, а в репозитариях livna и других оно ещё не присутствовало. Позже вышла но-

Рисунок 1. Зависание на этапе загрузки, после надписи «Ready.»

Рисунок 2. Передача параметров ядру во время загрузки

# yum install madwifi

Page 34: 069 Системный Администратор 08 2008

32

администрирование

вая версия 2.6.26.0-107.fc8, а у вас, чи-тателей, может быть и ещё более све-жая. Процесс понятен, выходят новые версии, обновления нужны всегда, та-ким образом, мною был «открыт» ре-сурс Rpmfind.Net Server [5]. После ска-чивания RPM-пакетов ядра и обнов-ления его в системе вручную, коман-дами:

установка madwifi через yum, как опи-сано выше, не привела к нужному ре-зультату, после перезагрузки беспро-водные сетевые интерфейсы обнару-жены не были. То есть либо не видны и не обнаруживаются системой udev аппаратные идентификаторы (прове-рить можно командой lspci), либо они видны, но не загрузились нужные мо-дули ядра по поддержке железа, либо эти модули-драйвера не смогли соз-дать необходимый аппаратный интер-фейс – псевдофайл в /dev, для этого следует проверить вывод dmesg на на-личие ошибок.

Первым делом следует изучить вы-вод команд dmesg, lspci. Первая пока-зывает сообщения, выдаваемые ядром

во время загрузки. Когда использова-лись ядра серии 2.4.x и более ранние, то все сообщения быстро пробегали на экране, сейчас загрузка идёт тихо, даже если удалён пакет rhgb и нет гра-фического интерфейса. Поэтому, ес-ли не предпринять какие-либо дейст-вия, пользователи могут и не увидеть проблемы.

Вторая показывает информацию об имеющихся PCI-устройствах. За-пускать эту команду лучше с ключом -v или -vv для большей информатив-ности.

Почему стоит начать с этих ко-манд, а не с каких-либо других? По-тому, что ситуация чем-то напомина-ет многоуровневую эталонную мо-дель взаимодействия открытых сис-тем (ЭМВОС, ISO/OSI-RM) [3, стр.66], когда не работает сеть, начинать про-верять надо с самых нижних уровней, то есть с физического уровня – есть ли вообще соединение? Так и тут, пер-вым делом надо разобраться, есть ли устройство (в нашем случае сетевая карта) в системе? Поддерживается ли она ядром?

Если устройства нет, оно не бу-дет работать, как его ни настраивай. В моём случае я сам держал в ру-ках сетевую карту, поэтому ситуация «нет устройства» может быть вызва-на плохим контактом, что я исключаю, либо случаем «устройство выключе-но». Поэтому вывод lspci должен пока-зать, включено ли устройство, а также информацию о нём. К моему счастью, адаптер у меня был обнаружен и пра-вильно распознан:

Кстати, для USB есть аналогичная команда lsusb.

Что можно сделать, если вы не ви-дите у себя нужное устройство, но, как я, убедились, что физически оно име-ется? Надо попытаться его включить.

На некоторых ноутбуках есть пере-ключатель, который может физичес-ки отключать питание от сетевой кар-ты, поэтому посмотрите, чтобы пита-ние имелось. Иногда механический вы-ключатель может быть заменён элек-тронным собратом в виде электрон-ной схемы с кнопочкой. У меня была как раз похожая ситуация. Более под-робно далее. Считаем, что устройс-тво включено, и поднимаемся на уро-вень выше.

Посмотрим, что нам выдаёт ядро. В моём случае из команды dmesg я уз-нал, что ядро при загрузке выдало сле-дующую ошибку:

Для того чтобы понять, что надо делать, совсем не обязательно быть программистом. Конечно, путь изуче-ния исходных кодов на 100% верный и надёжный, но все ли читатели хо-тят и умеют программировать и раз-бираться в железе? Конечно, нет, мир Linux тем и удобен, что полезные ве-щи делают несколько умных людей, а потом позволяют всем безвозмездно пользоваться их творчеством. Очень часто бывает, что вы не одиноки в ва-шей проблеме, поэтому поиск по сло-вам, встречающимся в ошибке, приво-дит вас к решению проблемы.

Поиск привёл меня на тот же сайт MadWifi [2] и форум по Fedora [10],

Рисунок 3. Наклейка, указывающая тип установленного Wi-Fi-устройства

Рисунок 4. Семь винтов, держащих крышку над отсеком с памятью, процессором и Wi-Fi-модулем Рисунок 5. Внутренности ноутбука, слева внизу Wi-Fi-модуль

02:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)

wifi%d: unable to attach hardware: 'Hardware revision not supported' (HAL status 13)

#rpm -Fhv kernel-2.6.....rpm

Page 35: 069 Системный Администратор 08 2008

33№8, август 2008

администрирование

где в разных местах обсуждались про-блемы подключения Atheros серий AR5005, AR5006, AR5007.

Было найдено несколько решений по поддержке работы адаптера:n использовать специальную сборку

madwifi;n наложить patch на ядро и исполь-

зовать драйвер ath5k;n использовать NDISwrappers.

Самым простым путём оказал-ся первый, так как перекомпилиро-вать ядро мне не хотелось, а запуск Windows-драйверов под NDISwrappers, судя по сообщениям, не работал под 64-битной версией, и перестав-лять систему на 32-битную сборку мне тоже не хотелось. Изучая сообщения на форумах, я выяснил, что для рабо-ты люди скачивали не то, что пред-лагается по умолчанию, а специаль-ные сборки, в которые для моего не-везучего сетевого адаптера внесены изменения. Так я попал на страницу со специальными сборками [4]. Путём проб и ошибок я выяснил, что для мо-его ноутбука нужна версия madwifi-hal-0.10.5.6-r3698-20080604. (В процессе написания статьи коллеги сообщили, что к их адаптеру AR5006EG в ASUS Eee PC подходит версия madwifi-ng-r2756+ar5007.)

Поэтому мы выбираем или уга-дываем, скачиваем, распаковываем нужную версию и запускаем две ко-манды:

которые решили мои проблемы.После перезагружаемся или даём

команду:

и выключаем-включаем адаптер, дол-жен появиться интерфейс wlan0, пос-ле чего станет возможным его на-строить с помощью iwconfig. Пробле-ма решена.

Если вы сразу установили компи-лятор gcc и заголовки ядра в процес-се установки, то первый путь наибо-лее простой, но не всегда удачный, как может показаться, так как выбран-ная сборка может у вас не заработать. Несмотря на это, я выбрал этот путь, так как в процессе достижения конеч-

ной цели мне удалось узнать несколь-ко интересных вещей, а именно...

ИнтересноеВ моём ноутбуке есть индикатор Wi-Fi, который, как выяснилось, работает ав-тономно. Свечение индикатора мож-но включать (если при загрузке ядра есть поддержка asus-laptop, см. вывод dmesg) командой:

и выключать:

Как ни странно, горит лампочка или нет, на работе никак не отража-ется. Задавшись вопросом, а как сде-лать управление лампочками бо-лее удобным, я нашёл в сети проект «Lapsus – Linux on laptops» [6] для но-утбуков Asus. Небольшая программа, позволяющая в графическом режиме управлять индикаторами. Её недоста-ток в том, что пока она работает толь-ко под KDE.

Аналогичные программы есть и под другие ноутбуки. Например, для Acer существует поддержка специальных дополнительных кнопок [8].

ЗаключениеХочется верить, что читатель нашёл по-лезное в статье либо задумался об ус-тановке Linux на ноутбук. Если так, то ещё один ресурс может оказаться полезным [7].

В статье оказались незатронуты-ми вопросы настройки ACPI, как и мно-гие другие интересные моменты, каса-ющиеся поддержки различных «горя-чих клавиш» и других вещей.

Пересечение мира Linux и ноутбуков безгранично. Считаю, что начало проло-жено, а остальное за вами, читателями и будущими ав-торами! Есть мысли? – пи-шите в редакцию, будет по-вод открыть раздел «Linux на ноутбуке».

1. Bugzilla Bug 239585: F8 CD/DVD hangs with message «Ready» – https://bugzilla.r e d h a t . c o m / s h o w _ b u g .cgi?id=239585.

Рисунок 6. PCI Express MiniCard AzureWave AW-GE780 (AR5BXB63)

2. Проект MadWifi. Подключение беспро-водных сетевых адаптеров под Linux – http://madwifi.org.

3. Компьютерные сети. Принципы, тех-нологии, протоколы. /В.Г. Олифер, Н.А. Олифер – СПб: Питер, 2001 г.

4. MadWifi Archive of special-purpose snapshots – http://snapshots.madwifi.org/special.

5. Сайт, где можно найти различные RPM пакеты – http://rpmfind.net.

6. Lapsus – Linux on laptops – http://lapsus.berlios.de.

7. Linux on Laptops – http://www.linux-laptop.net.

8. Acer Hotkey driver for Linux – http://www.cakey.de/acerhk.

9. Описание AR5007EG (AR2425) – http://www.atheros.com/pt /bulletins/AR5007EGBulletin.pdf.

10. Обсу ж дение на форуме Atheros A R 5 0 0 7 E G /A R 5 BX B 6 3 – h t t p : / /forums.fedoraforum.org/showthread.php?t=174186.

11. Сайт проекта NDISwrapper – http://ndiswrapper.sourceforge.net.

Рисунок 7. Микросхема Atheros AR2425 на плате Wi-Fi-модуля

# depmod -a

# make# make install

echo "1">/sys/devices/platform/ ↵ asus-laptop/wlan

echo "0">/sys/devices/platform/ ↵ asus-laptop/wlan

Page 36: 069 Системный Администратор 08 2008

34

администрирование

История и предысторияПроект Athena, запущенный в Масса-чусетском технологическом институте в середине 80-х годов, имевший сво-ей целью создание распределенно-го вычислительного окружения, ока-зал сильное воздействие на развитие компьютерных технологий того вре-мени. Фактически, в эпоху мэйнфрей-мов и терминалов, это был первый при-мер «сетевого окружения» в том виде, как его представляют сейчас. Среди прочего авторам проекта в процессе работы пришлось решить и такую за-дачу, как замены утилиты talk, которая позволяла передавать короткие сооб-щения между терминалами, подклю-ченными к рабочей станции. По мере разработки этой проблемы возникла идея создания протокола Zephyr, кото-рый одновременно решал бы две за-дачи – обмен сообщениями и инфор-мирование о наличии нужного пользо-вателя за компьютером. Таким обра-зом, этот протокол оказался не толь-ко одним из первых (вместе с IRC – Internet Relay Chat) протоколов мгно-венного обмена сообщениями (Instant Messaging/IM), но и во многом воспро-изводил архитектуру, впоследствии использованную в протоколе Jabber (XMPP – eXtensible Message Passing and Presence Protocol).

Хотя Zephyr было далеко до попу-лярности, сравнимой с популярностью появившегося гораздо позже прото-кола ICQ, но сам по себе он оказался довольно удачным, и его использова-ние в немодифицированном виде в ло-

кальных университетских (в том же MIT, например) сетях продолжается вплоть до настоящего времени. Глав-ным фактором, работающим в поль-зу Zephyr, была его тесная интегра-ция с другой разработкой, возникшей в рамках проекта Athena, – системой удаленной аутентификации пользова-телей Kerberos. Поскольку Zephyr рабо-тает в закрытом окружении (универси-тете или предприятии), с определен-ным кругом пользователей (сотрудни-ки и/или студенты), особенно в том слу-чае, когда их учетные записи и так уже хранятся в базе данных Kerberos, то та-кая система предоставляет, с одной стороны, большее удобство исполь-зования сервиса, за счёт развертыва-ния single-sign-on, а с другой, позволя-ет однозначно устанавливать идентич-ность пользователей.

Поскольку протокол Zephyr оста-вался практически замороженным довольно долгое время, то в нем по-прежнему использовался старый ва-риант протокола Kerberos4, от кото-рого в последнее время начали отка-зываться, что заставляет пользовате-лей и администраторов искать альтер-нативные системы обмена сообщени-ями. (Хотя, по слухам, в Университе-те штата Айова используется вариант Zephyr с поддержкой Kerberos5, но ис-ходный код этой системы в свободном доступе я найти так и не смог.) Наибо-лее подходящим, в смысле возможнос-ти его конфигурирования, таким обра-зом, чтобы максимально напоминать Zephyr, явлется Jabber/XMPP.

Сам протокол Jabber начал разра-батываться в конце 90-х годов Джере-ми Миллером (Jeremie Miller), в качест-ве альтернативы закрытого протокола ICQ. В отличие от централизованного сервиса ICQ Jabber представляет со-бой распределенную систему, чем-то напоминающую электронную почту. То есть на сервере предприятия мож-но установить свой собственный сер-вер JABBER, так что локальные поль-зователи, подключаясь к нему, могут обмениваться сообщениями как внут-ри предприятия, так и с внешним ми-ром, в смысле – другими серверами JABBER. Отличительной особеннос-тью протокола является его расширя-емость и использование XML-форма-та для передачи данных. Поскольку протокол возник сравнительно позд-но, то в нём, по крайней мере во вто-рой редакции 2003 года, предусмотре-на поддержка прослойки SASL (Simple Authentication Security Layer), средс-твами которой к нему можно подклю-чать различные модули аутентифи-кации, в том числе и Kerberos. Специ-фикации протокола состоят из двух RFC 3920-3921, которые описыва-ют ядро протокола (Core), и доволь-но обширного числа так называемых XEP (XMPP Extension Protocols), кото-рые определяют расширения базово-го протокола. В настоящее время су-ществует несколько реализаций сер-веров Jabber, однако пока что ни один из них не поддерживает весь набор XEP. Во-первых, это ejabber, напи-санный на языке erlang и популярный

Jabberd2 – простой и нетребовательный к ресурсам XMPP-сервер

Михаил Кондрин

Рассмотрим конфигурирование, архитектуру и первоначальную настройку jabberd2.

Page 37: 069 Системный Администратор 08 2008

35№8, август 2008

администрирование

в России из-за своей русской коман-ды разработчиков, во-вторых, напи-санный на Java и рассчитанный на ис-пользование в корпоративных сетях OpenFire, а также два jabberd – 1.4.x и 2.x, оба написанных на С. Несмот-ря на сходство названий, jabberd 1.4.x и jabberd2 – это два независимых про-екта, которые развивались парал-лельно первоначальной справочной реализации (reference implementation) сервера jabberd, выполненной самим Джереми Миллером.

Хотя каждый из этих серверов имеет свои достоинства, но в данной статье будет рассмотрен именно jabberd2, по причине сво-ей нетребовательности к ресурсам, относительной про-стоты настройки, полной поддержки SASL, а также воз-можности использования его без необходимости установ-ки специализированных серверов баз данных, что также в значительной степени упрощает его администрирова-ние. В истории самого проекта было несколько сложных моментов, когда, например, в начале 2005 года был пол-ностью утрачен репозиторий исходных кодов, которые за-тем пришлось восстанавливать с нуля. В конце того же го-да он претерпел полное обновление команды разработчи-ков. Однако в настоящий момент проект динамично разви-вается, и к самому серьезному его недостатку можно от-нести практически полное отсутствие документации, а от-дельные руководства, встречающиеся в сети, уже устаре-ли и иногда даже противоречат тому, что имеется в насто-ящее время. Частично данная статья и имеет своей целью восполнить этот пробел.

Собственно, после этого довольно долгого вступления можно сформулировать наше техническое задание к сер-веру Jabber, реализация которого и будет описана в дан-ной статье. В первую очередь мы потребуем использование учетных записей пользователей, хранящихся в базе дан-ных Kerberos, и наличия как обычного текстового парольно-го входа, так и с помощью сертификатов Kerberos, а также хранение всех авторизационных и дополнительных данных, необходимых для работы сервера, в локальных дисковых базах данных (для управления которыми будет использо-вана библиотека BerkeleyDB). Также дополнительным тре-бованием будет поддержка сервером многопользователь-ских конференций, которая для jabberd2 реализована в ви-де отдельного проекта.

Кoмпиляция и сборкаПеред сборкой jabberd2, который можно скачать с их офи-циальной страницы [1], следует убедиться, что у вас в систе-ме установлены библиотеки cyrus-sasl [2] и настроен сектор Kerberos, например, с помощью Heimdal Kerberos [3]. Если нет, то вам лучше начать с их настройки, которая описана в статьях [4], поскольку дальнейшие действия будут сильно зависеть от работоспособности этих двух библиотек. Также новые версии jabberd2 требуют наличия системной библио-теки glibc версии не ниже 2.3.6, из-за неправильной реали-зации функции fnmatch в более ранних версиях. Также ре-

комендуется использовать последние версии Heimdal, на-пример 1.1, поскольку в более ранних версиях была допу-щена досадная ошибка взаимодействия с SASL, которая делала аутентификацию в jabber невозможной.

После развертывания пакета с исходными текстами jabberd2 его нужно сконфигурировать, запустив в его до-машнем каталоге команду:

В этом случае активируется использование хранили-ща баз данных BerkeleyDB, включается поддержка cyrus-sasl и предусматривается вывод отладочной информации. Однако перед тем как выполнить уже привычные команды make и maker install, необходимо совершить еще одно дейст-вие, чтобы активировать поддержку cyrus-sasl, а именно за-комментировать одну строку с указаниями компилятору:

После чего сборка и установка программного пакета долж-ны пройти без помех.

Как уже говорилось, функциональность, связанная с поддержкой в jabberd2 многопользовательских конферен-ций (Multi User/MU-confernce), вынесена в отдельный проект. Исходный код этого компонента можно получить со стра-ницы [6], распаковать, скомпилировать командой make и для единообразия переместить полученный в итоге ис-полняемый файл mu-conference в директорию, где лежат ос-тальные компоненты jabberd2 (в нашем случае /usr/bin). Воп-реки сведениям различных руководств, которые можно най-ти в Интернете, специально компилировать так называемую JCR, среду запуска компонентов jabberd2 не нужно, для пос-ледней версии mu-conference (0.7) она не требуется.

Собственно говоря, после этого можно приступать к конфигурированию jabberd2, но вначале стоит взглянуть на то, что же мы в итоге получили, и на внутреннее уст-ройство jabberd2.

Конфигурирование и архитектура jabberd2При создании jabberd2 авторы стремились сделать его мак-симально модульным и расширяемым, с тем чтобы заяв-

Небольшое отступлениеПо умолчанию jabberd2 использует GNU-версию библиотеки SASL – gsasl[5]. Это ре-шение было принято основным руководи-телем проекта Томашем Стерной (Tomasz Sterna) примерно год назад. На мой взгляд, это было серьезной ошибкой. Помимо то-го, что оно спровоцировало уход из проек-та Саймона Уилкинсона (Simon Wilkinson), который достоин отдельного упомина-ния за включение в jabberd2 поддержки GSSAPI, а также тестирование и усовер-шенствование jabber-клиентов для совмес-

тимости с этим механизмом, на самом деле, это решение было вызвано непониманием работы SASL с так называемым security layers. Грубо говоря, security layer позволя-ют шифровать траффик между клиентом и сервером, если они поддерживают опре-деленные механизмы SASL. В настоящее время gsasl, в отличие от cyrus-sasl, не име-ет такой функциональности, так что в дан-ном случае мы видим просто один из при-меров лечения головной боли радикаль-ными средствами.

./configure --prefix=/usr --sysconfdir=/etc/jabberd ↵ --enable-db --with-sasl=cyrus --enable-debug

sed -ir 's/^#define fnmatch/\/\/#define fnmatch/' config.hsed -ir 's/^#error Cyrus SASL/\/\/#error Cyrus SASL/' ↵ sx/cyrus_sasl.c

Page 38: 069 Системный Администратор 08 2008

36

администрирование

ленная в названии протокола расширяемость (eXtensible) присутствовала и в его серверной реализации. В результа-те jabberd2 состоит из нескольких процессов, взаимодейс-твующих между собой через сетевой интерфейс.

С одной стороны, такая архитектура позволяет легко до-бавлять новые компоненты, как, например, MU-Conference, реализующую спецификации XEP-0030.

С другой, позволяет системному администратору, по-разному распределяя компоненты на нескольких серве-рах, добиваться либо большей производительности систе-мы, либо же поддерживать на одном компьютере несколь-ко «виртуальных» хостов [7].

Перейдем к настройке сервера jabberd2, попутно разби-раясь с функциями каждого из компонентов. Все компонен-ты настраиваются с помощью своего собственного конфи-гурационного файла. Поскольку протокол XMPP широко ис-пользует формат XML, то нет ничего удивительного, что раз-работчики jabberd2 выбрали для конфигурационных фай-лов тотже самый формат. В качестве образца для создания собственных конфигурационных файлов можно использо-вать файлы с расширением xml.dist, входящие в состав па-кета jabberd2, тем более что изучение комментариев к ним дает полезную (пусть и скудную) информацию о самой про-грамме. Однако для простоты можно воспользоваться при-водимыми ниже «минимальными» файлами, где большинс-тво параметров не указано, но которые, тем не менее, поз-воляют получить вполне работоспособный сервер. По умол-чанию используются конфигурационные файлы из дирек-тории /etc/jabberd с базовым именем, совпадающим с на-званием компонента, и расширением xml.

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

Он состоит из блока с идентифика-тором процесса (id), ссылкой на файл с Process ID запущенного процес-са (pidfile) и указанием использовать syslog для журналирования событий (log). Это практически стандартная часть, которая с очевидными измене-ниями будет повторяться во всех ос-

тальных файлах. Следующие две части более интересны. Теги ip и port блока local привязывают процесс к локаль-ному интерфейсу (нам не нужно, чтобы router был досту-пен по сети) и принятому по умолчанию разработчиками jabberd2 порту 5347 для обмена сообщениями между ком-понентами jabberd2.

Для подключения к rоuter всем остальным компонен-там необходимо пройти авторизацию (это не имеет ничего общего с авторизацией реальных пользователей или сис-темного пользователя, под которым будет запущен сервер, о чём речь пойдет дальше). Причем для собственных ком-понентов jabberd2 применимы имя пользователя и пароль, указанные в блоке user, а сторонними компонентами (к чис-лу которых относится MU-Conference) используется пароль, вынесенный в отдельный блок secret.

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

Единственная задача компонента resolver состоит в раз-решении в доменной системе имен SRV-записей, запрошен-ных компонентом s2s и соответствующих внешним jabber-серверам. SRV-записи вида _xmpp-server._tcp или их бо-лее старый вариант _jabber._tcp играют примерно ту же роль, что и MX-записи для электронной почты, т.е. позво-ляют по доменной части имени пользователя (JID) получать адрес jabber-сервера (или серверов), отвечающих за об-служивание этого домена. Позже мы ещё вернемся к на-стройке DNS, пока же приведу только конфигурационный файл resolver.xml:

<router> <id>router</id> <pidfile>/var/jabberd/pid/router.pid</pidfile> <log type='syslog'> <ident>jabberd/router</ident> <facility>local3</facility> </log> <local> <ip>127.0.0.1</ip> <port>5347</port> <user> <name>jabberd</name> <secret>change-me</secret> </user> <secret>change-me-too</secret>

<resolver> <id>resolver</id> <pidfile>/var/jabberd/pid/resolver.pid</pidfile> <log type='syslog'> <ident>jabberd/resolver</ident> <facility>local3</facility> </log> <router> <ip>127.0.0.1</ip> <port>5347</port> <user>jabberd</user> <pass>change-me</pass> </router> <lookup> <srv>_xmpp-server._tcp</srv>

Рисунок 1. Структрура jabberd2

</local> <aci> <acl type='all'> <user>jabberd</user> </acl> </aci></router>

Page 39: 069 Системный Администратор 08 2008

37№8, август 2008

администрирование

Блок router указывает адрес и порт, который прослуши-вает router, а также имя пользователя и пароль, необходи-мые для подключения к нему (те же самые, что и в секции local файла router.xml).

Вообще-то говоря, протокол XMPP состоит из двух пото-ков данных, привязанных к разным сетевым портам: один между клиентом и сервером, а второй между двумя серве-рами. Как раз за обработку второго потока данных отвеча-ет компонент s2s. Настройка его достаточно проста:

Блок local, также как и в случае router, определяет при-вязку к сетевому интерфейсу и порту. В данном случае от компонента требуется, чтобы доступ к нему был открыт извне, поэтому ip (0.0.0.0) указывает, что компонент исполь-зует все доступные интерфейсы и привязян к стандартно-му порту 5269 (jabber-server). Также в этой секции указан идентификатор компонента resolver.

Пока что вся настройка не требует существенной прав-ки конфигурационных файлов, практически в каждом слу-чае можно было бы обойтись минимальной переделкой xml.dist из состава jabberd2. Более серьезная правка тре-буется для двух других файлов, отвечающих стандартным компонентам jabberd2.

За второй поток данных (между клиентом и сервером), а также аутентификацию реальных пользователей отвеча-ет компонент c2s. Так же, как и для компонента s2s, дос-туп к нему должен быть открыт по сети через порт 5222 (jabber-client):

Обратите внимание на тег id в блоке local. В качестве его значения необходимо указывать не имя вашего jabber-сер-вера, а доменное имя, иначе у вас гарантированно возник-нут проблемы с аутентификацией пользователей. Факти-чески то же самое имя, набранное большими буквами, мож-но указать в атрибуте realm, оставленного для тех редких случаев, когда имя домена и сектора (SASL или Kerberos) не совпадают. Заметьте также, что атрибут register-enable, обычно рекомендуемый в руководствах, отсутствует. Собст-венно говоря, это и понятно, мы не собираемся делать об-щедоступный jabber-сервер, а напротив, собираемся раз-решить к нему доступ только тем, кто уже зарегистрирован в базе данных Kerberos. Однако это условие будет необхо-димым, но ещё не достаточным для подключения к серве-ру jabberd2. Дополнительным условием будет присутствие соответствующей записи для пользователя в собственной базе данных сервера jabberd2 – authreg. Собственно гово-ря, в данном случае происходит дублирование имен поль-зователей из Kerberos, но внутреннее устройство серве-ра jabberd2 не позволяет избежать этого. Как уже говори-лось, чтобы не поднимать дополнительный сервер баз дан-ных, хранение всех данных jabberd2 будет производиться в файловых базах BerkeleyDB (тэг module). В блоке db ука-зан путь, где будут располагаться эти базы данных. Спи-сок поддерживаемых механизмов аутентификации собран в блоке mechanisms: там указаны как простые (traditional, осуществляемые со старыми спецификациями протокола jabber 1998 года, в нашем случае список пуст), так и более новые механизмы SASL (sasl). В последнем случае, в соот-ветствии с техническим заданием, разрешено использовать как открытые текстовые пароли (plain), так и аутентифика-цию средствами инфраструктуры Kerberos (gssapi).

Данные, которые получены компонентом c2s, поступа-ют на обработку модулю sm (Session Manager). Он имеет наиболее объемный конфигурационный файл, поскольку для каждого из событий необходимо указать последова-тельность обработки полученных пакетов, в виде цепочки (chain) подгружаемых модулей. В приведенном ниже лис-тинге большая часть блока modules опущена, его можно будет восстановить из примеров, содержащихся в паке-те jabberd2.

<s2s> <id>s2s</id> <pidfile>/var/jabberd/pid/s2s.pid</pidfile> <log type='syslog'> <ident>jabberd/s2s</ident> <facility>local3</facility> </log> <router> <ip>127.0.0.1</ip> <port>5347</port> <user>jabberd</user> <pass>change-me</pass> </router> <local> <ip>0.0.0.0</ip> <port>5269</port> <resolver>resolver</resolver> </local></s2s>

<c2s> <id>c2s</id> <pidfile>/var/jabberd/pid/c2s.pid</pidfile> <log type='syslog'> <ident>jabberd/c2s</ident> <facility>local3</facility> </log> <router> <ip>127.0.0.1</ip> <port>5347</port> <user>jabberd</user> <pass>change-me</pass> </router> <local> <id realm='MYREALM.RU'>myrealm.ru</id> <ip>0.0.0.0</ip> <port>5222</port> </local> <authreg>

<srv>_jabber._tcp</srv> </lookup></resolver>

<path>/usr/lib/jabberd</path> <module>db</module> <db> <path>/var/jabberd/db</path> </db> <mechanisms> <traditional/> <sasl> <plain/> <gssapi/> </sasl> </mechanisms> </authreg></c2s>

<sm> <id>myrealm.ru</id> <pidfile>/var/jabberd/pid/sm.pid</pidfile> <router> <ip>127.0.0.1</ip> <port>5347</port> <user>jabberd</user> <pass>change-me</pass> </router>

Page 40: 069 Системный Администратор 08 2008

38

администрирование

Использование подгружаемых модулей является еще одним дополнительным источником расширения функ-циональности сервера jabber2. Например, показанный на диаграмме модуль mod_iq-vcard позволяет пользова-телям публиковать свои личные данные в виде электрон-ных визитных карточек, а модуль mod_published-roster (ко-торый, кстати, появился в jabberd2 сравнительно недавно, благодаря усилиям русского разработчика Никиты Смир-нова) дает возможность администратору создавать на сер-вере динамический список контактов, доступный всем пользователям этого сервиса (внутри предприятия име-ет смысл просто занести в этот список всех сотрудников). Показанная в листинге цепочка user-create просто добав-ляет в базу данных необходимые записи (при помощи мо-дуля mod_active) при первом подключении пользователя. Админиcтратору ничего не мешает оптимизировать рабо-ту сервера, удаляя из цепочек «лишние» по его мнению модули, как, например, в данном случае убран из цепочки user-create модуль mod_roster-template (во многом дубли-рующий функциональность mod_published-roster) или, на-пример, mod_disco-publish, аналогичный по функциональ-ности mod_iq-vcard. При редактировании этого файла нуж-но обратить внимание на тэг id – там должен быть указан тот же домен, что и в настройках с2s. В качестве хранили-ща данных выбрана библиотека BerkeleyDB (блок storage), в качестве администратора сервиса указан пользователь root с передачей ему всех прав по управлению сервисом (блок aci). Кроме того (блок user), разрешена активация учетных записей пользователей, которые уже содержатся в базе данных authreg, а в качестве шаблона списка кон-тактов для вновь созданных пользователей будет исполь-зован published-roster.

Последний конфигурационный файл используется для настройки компонента mu-conference. В качестве при-мера лучше всего использовать входящий в состав пакета файл muc-example.xml. Например, возможна такая редак-ция файла mu-conference.xml:

Атрибуты name и host лучше выбрать по принципу, ис-пользованному в данном примере, – "conference"+<имя до-мена> (с помощью настройки DNS это имя должно разре-шаться в адрес jabber-сервера). Тэги ip, port и secret отно-сятся к компоненту router, причём в качестве пароля дол-жен быть указан дополнительный пароль, применимый для старых компонентов. Все дискуссионные комнаты сделаны постоянными (persistent), но создавать их может только ад-министратор (roomlock). В качестве владельца/модератора конференций указан всё тот же root. Конференции журнали-руются, причем данные хранятся в виде xml-файлов, кото-рые потом могут быть выложены в Интернете. Для их пред-ставления используется стилевой файл style.css, образец которого тоже можно найти в пакете mu-conference.

Создание списка пользователей и запускСобственно, после создания конфигурационных файлов требуется решить ещё несколько административных задач – создать системного пользователя, под которым будет ра-ботать сервер jabberd2, создать каталоги для хранения баз данных, настроить DNS и систему аутентификации. А также написать скрипт, который будет запускать сервер jabberd2. Первые две задачи решаются простым скриптом:

Настройка DNS состоит в добавлении SRV-записей и со-здании нескольких псевдонимов для jabber-сервера.

<jcr><name>conference.myrealm.ru</name><host>conference.myrealm.ru</host><ip>127.0.0.1</ip><port>5347</port><secret>change-me-too</secret><spool>/var/jabberd/spool/rooms</spool> <logdir>/var/jabberd/log</logdir><pidfile>/var/jabberd/pid/mu-conference.pid</pidfile><loglevel>255</loglevel> <conference xmlns="jabber:config:conference"> <public/> <vCard> <FN>Public Chatrooms</FN> <DESC>This service is for public chatrooms.</DESC> <URL>http://www.myrealm.ru/</URL> </vCard> <history>40</history> <logdir>/var/jabberd/logs/</logdir> <stylesheet>/var/jabberd/logs/style.css</stylesheet> <notice> <join>has become available</join> <leave>has left</leave> <rename>is now known as</rename> </notice> <sadmin> <user>[email protected]</user> </sadmin> <persistent/> <roomlock/></conference></jcr>

useradd -d /var/jabber -s null jabbermkdir /var/jabber/dbchown -R jabber /var/jabber/db

$ORIGIN myrealm.ru.jabber A 192.168.1.252myrealm.ru. A 192.168.1.252conference CNAME jabber

_jabber._tcp SRV 5 0 5269 jabber_xmpp-server._tcp SRV 5 0 5269 jabber_xmpp-client._tcp SRV 5 0 5222 jabber

<log type='syslog'> <ident>jabberd/sm</ident> <facility>local3</facility> </log> <storage> <path>/usr/lib/jabberd</path> <driver>db</driver> <db> <path>/var/jabberd/db</path> </db> </storage> <aci> <acl type='all'> <jid>[email protected]</jid> </acl> </aci> <modules> <path>/usr/lib/jabberd</path>.... <chain id='user-create'> <module>active</module> </chain>.... </modules> <user> <auto-create/> <template> <publish/> </template> </user></sm>

Page 41: 069 Системный Администратор 08 2008

39№8, август 2008

администрирование

Как уже упоминалось выше, смысл этих SRV-записей аналогичен MX-записи для электронной почты. В данном примере для сервера с адресом 192.168.1.252 выбрано имя jabber.myrealm.ru, и все три записи указывают на него. Пер-вые две – для порта, обслуживающего подключения сервер-сервер (первая из них – это просто более старый вариант), а последняя – для порта клиент-сервер. Тут стоит подчерк-нуть, что если вы хотите, чтобы ваш сервер был доступен извне, т.е. чтобы пользователи других jabber-серверов мог-ли обмениваться сообщениями с вашими пользователями, то, по крайней мере, первая пара SRV-записей должна быть видна снаружи, поскольку именно она позволяет удален-ным jabber-серверам правильно находить сервер, отвеча-ющий пользователю с JID [email protected].

Последняя запись (_xmpp-client._tcp) не столь важна в этом смысле, поскольку клиенты jabber обычно позволя-ют напрямую указывать адрес сервера, но лучше создать и её. Кроме того, некоторые из jabber-клиентов игнорируют SRV-записи, и если адрес сервера не указан пользователем явно, то просто интерпретируют доменную часть JID, как имя сервера. Для таких «поломанных» клиентов обычно прихо-дится создавать дополнительный псевдоним для jabber-сер-вера, состоящий только из доменной части. Также для нор-мальной работы компонента mu-confertnce необходимо соз-дать ещё один псевдоним conference.myrealm.ru.

И последнее – это настройка аутентификации пользова-телей, что включает в себя настройку Kerberos, SASL и за-полнение базы данных authreg. Предполагается, что поль-зователи уже занесены в базы данных Kerberos. В случае jabberd2 дальнейшие действия напоминают настройку элек-тронной почты, как она описана, например, в статьях [8, 9].

Иными словами, нам нужно создать принципала для службы jabberd (xmpp/[email protected]) и выгрузить его ключ в файл /etc/krb5.keytab:

Следуя рекомендациям статьи [9], чтобы этот ключ был доступен для сиcтемного пользователя jabber, под кото-рым запускается jabberd2, то нужно добавить этого поль-зователя в системную группу kerberos и открыть файл /etc/krb5.keytab на чтение этой группе.

Настройка SASL состоит в создании файла /usr/lib/sasl2/xmpp.conf с практически неизменным содержимым:

Чтобы jabberd2 мог аутентифицировать пользовате-лей, входящих с простыми текстовыми паролями, то на том же хосте, где работает jabberd2, должен быть запу-щен saslauthd:

причем необходимо убедиться, что именованный сокет /var/spool/saslauthd, через который saslauthd обменивает-ся данными с внешними программами, доступен на чтение и запись системному пользователю jabber.

После выпол-нения всех этих шагов и тестиро-вания работос-пособности SASL с помощью ути-литы sasltest [8] можно прис т у-пить к заполне-нию базы данных authreg. Для про-стоты мы пока за-несем двух поль-зователей root и mike, оба из ко-тор ых дол ж ны иметь своих при-нципалов в секто-ре Kerberos. В ре-альных условиях вам, скорее всего, понадобится скрипт, который считывает данные из базы данных Kerberos (в этом вам поможет ко-манда «kadmin -l dump», например), фильтрует вывод и пе-реносит имена пользователей в базу данных authreg.

Для заполнения базы данных authreg нужно будет напи-сать текстовый файл passwd.txt такого вида:

то есть он состоит из парных записей: нечетные строки – это ключи, четные – значения. В качестве ключа берется имя пользователя, а значение представляет собой список с разделителем \00, состоящий из трех полей – имени поль-зователя, сектора SASL и случайной комбинации симво-лов, которая служит в качестве простого текстового паро-ля для этого пользователя. Поскольку при настройке серве-ра jabberd2 простые (traditional из файла c2s.xml) механиз-мы аутентификации отключены, то последнее поле можно оставить пустым, оно в такой конфигурации не будет ис-пользоваться. Также следует помнить, что ни одно из по-лей не должно превышать по длине 255 символов.

Теперь остается зайти в директорию /var/jabberd/db, пред-назначенную для хранения баз данных jabberd2, и с помо-щью утилиты db_load, входящей в состав пакета BerkeleyDB, создать эту базу данных:

Справку по команде db_load в html-формате можно най-ти в пакете BerkeleyDB. Подробное объяснение принципов работы с базами данных вида BerkeleyDB требует отдельно-го обсуждения, но в данном случае создаётся база дан-ных в режиме обновления (ключ -n) типа hash (-t) и с име-нем myrealm.ru (которое вам нужно поменять на имя ваше-го домена) в файле authreg.db с окружением/environment (-h), в качестве которого используется текущая директо-рия (т.е. /var/jabberd/db). Ключ -T указывает, что в качестве

kadmin >add xmpp/jabber.myrealm.ru>ext xmpp/jabber.myrealm.ru

pwcheck: saslauthdmech_list: gssapi plain

/usr/sbin/saslauthd -a kerberos5

rootroot\00MYREALM.RU\00<random passwd>mikemike\00MYREALM.RU\00<random passwd>

cat passwd.txt | db_load -n -t hash ↵ -c database=myrealm.ru -h ./ -T authreg.db

Рисунок 2. Настройка GSSAPI-аутентификации в Linux

Page 42: 069 Системный Администратор 08 2008

40

администрирование

входных данных используется текстовый файл. Ту же са-мую команду нужно использовать для пополнения или ре-дактирования уже существующей базы данных. При этом в файл passwd.txt нужно вносить только те записи, которые вы хотите добавить или изменить. Проблемы с блокировкой пользователей проще решать удалением или блокировани-ем соответствующих принципалов в базе данных Kerberos либо же полностью переписать базу данных authreg.db, за-пустив команду db_load без ключа -n. Понятно, что в пос-леднем случае вам нужно иметь полный список пользова-телей в текстовом файле passwd.txt.

Теперь всё готово к запуску сервера. Разработчики jabberd2 и этот этап переложили на плечи администраторов, так что вам придется создавать собственный скрипт запус-ка. Можно воспользоваться моей заготовкой (rc.jabberd), ко-торая, будучи запущенной с аргументами start/stop, запус-кает или останавливает все шесть компонентов.

Данный скрипт выдает большое количество отладоч-ной информации в файлы вида debug"имя компонента".log в текущей директории, что бывает полезно при настройке сервиса, но сильно сказывается на быстродействии в ра-бочем режиме. Исправить ситуацию можно редактирова-нием скрипта запуска.

Сложно рекомендовать какой-то определенный jabber-клиент, поскольку этот вопрос уже для многих является до-статочным поводом для начала «священной войны». Одна-ко я всё же предлагаю использовать многопротокольный (который, кстати, поддерживает и упомянутый в начале ста-тьи протокол Zephyr) клиент Pidgin [10]. Несмотря на гранди-озный скандал, устроенный его пользователями, которым не понравилось введение разработчиками автоматичес-ки масштабируемого поля ввода, что даже привело к рас-колу среди разработчиков и появления форка – Funpidgin, мне лично кажется, что клиент довольно удобен, и, по-край-ней мере в Linux, позволяет легко настроить GSSAPI-аутен-тификацию. Для этого нужно только поставить галочку на-против поля «Use GSSAPI...» на вкладке Advanced диалога управления учетными записями, который показан на рис. 2. В данном случае сервер можно не указывать, поскольку при правильно настроенном DNS он вычисляется из до-менного имени, которое вводится в том же окне, что и по-казанное на рис. 2, но на вкладке Basic.

Кстати, использование GSSAPI решает ещё одну извес-тную проблему, на которую часто жалуются пользовате-ли Pidgin – хранение текстовых паролей в незашифрован-ном текстовом файле. В данном случае пароль «хранится» средствами библиотеки Kerberos, так что Pidgin не имеет к нему никакого доступа.

Многие пользователи считают функциональность Pidgin недостаточной для продвинутой работы с протоколом XMPP. Однако создание конференции в нем делается просто – за-пуском мастера из меню «Buddies → Add Chat» в основном окне, разумеется, если вы зашли под административным ло-гином, которому разрешено создание конференций в кон-фигурационном файле mu-conference.xml.

Если вы не обнаружили кнопку «Use GSSAPI...» в сбор-ке Pidgin присутствующей в вашем дистрибутиве, то, ско-рее всего, вам его (Pidgin) придется собирать вручную. Это не слишком сложно, нужно только при запуске configure обратить внимание на ключи:

которые включают поддержку Cyrus-SASL и инициируют сборку двух динамических библиотек, обеспечивающих поддержку протокола XMPP.

Уже на этом этапе сервер вполне работоспособен, но для более тонкой настройки необходимо будет разо-браться с содержимым баз данных sm.db, которые не всег-да удается модифицировать лишь средствами протоко-ла XMPP. Этому вопросу и будет посвящена следующая часть статьи.

#!/bin/bashprogs="router resolver sm c2s s2s"user=jabber.jabberprogsPath="/usr/bin"confPath="/etc/jabberd"pidPath="/var/jabberd/pid"Start ( ) { echo "Initializing jabberd2 processes ..." for prog in ${progs}; do if [ $( pidof -s ${prog} ) ]; then echo -ne "\tprocess [${prog}] ↵ already running" sleep 1 continue fi echo -ne "\tStarting ${prog}... " rm -f ${pidPath}/${prog}.pid args="-c ${confPath}/${prog}.xml" sudo -u jabber ${progsPath}/${prog} ↵ ${args} -D 2 &> debug${prog}.log & echo sleep 1 done sudo -u jabber ${progsPath}/mu-conference return ${retval}}#Stop ( ) { echo "Terminating jabberd2 processes ..." for prog in ${progs} ; do echo -ne "\tStopping ${prog}... " kill $(cat ${pidPath}/${prog}.pid) ↵ && rm -f ${pidPath}/${prog}.pid echo sleep 1 done killall mu-conference return ${retval}}#case "$1" in start) Start ;; stop) Stop ;; restart) Stop Start ;; condrestart) if [ -f /var/lock/subsys/${prog} ]; then Stop sleep 3 Start fi ;; *) echo "Usage: ↵ $0 {start|stop|restart|condrestart}"

let retval=-1esac

./configure --enable-cyrus-sasl \ --with-dynamic-prpls=jabber,simple \ --with-static-prpls= \

Page 43: 069 Системный Администратор 08 2008

Реклам

а

Page 44: 069 Системный Администратор 08 2008

42

администрирование

Удаленное управление компьютером

Сергей Кузнецов

В этой статье я постараюсь рас-смотреть наиболее известные программы удаленного адми-

нистрирования – программное обес-печение, которое позволяет управ-лять компьютером на расстоянии, че-рез локальные или глобальные сети, в том числе, конечно же, и Интернет. Все сравнения носят общий, независи-мый характер. В завершение постара-юсь определить, какая программа яв-ляется лучшей и при каких условиях.

Наверное, не ошибусь, если ска-жу, что самой известной програм-мой удаленного управления являет-ся RDP-клиент (RDP расшифровыва-ется как Remote Desktop Protocol), ко-торый поставляется вместе с некото-рыми версиями Windows. Стандарт-ный RDP-клиент очень удобен в боль-шинстве случаев, когда нужно подклю-читься к одному удаленному компью-теру и управлять им, но в случае ког-да рабочих станций много и на них ус-тановлена, к примеру, Windows XP, ра-ботать с помощью RDP очень тяжело,

так как при подключении к удаленно-му компьютеру текущий интерактив-ный пользователь этого компьютера будет заблокирован. Это огромнейший недостаток в тех случаях, когда нужно вести удаленную работу в кооперации с удаленным пользователем. Поэто-му сторонние разработчики предла-гают свои программные разработки, от бесплатных решений с открытым исходным кодом (VNC) до серьезных коммерческих продуктов (DameWare, pcAnywhere, Radmin, Netop, UltraVNC, Remote Office Manager и др.).

Итак, давайте же кратко рассмот-рим каждую программу по отдельнос-ти, а потом сравним их. Сразу огово-рюсь, что тестирование проводилось в рамках семейства операционных систем Windows.

RDPВ операционной системе Windows уже встроено средство для удаленно-го управления компьютером. Вы може-те без особых проблем подключиться

к удаленному рабочему столу другого компьютера. Замечу, что на удален-ном компьютере в свойствах компью-тера должен быть разрешен удален-ный доступ, в XP и Vista эта возмож-ность по умолчанию отключена.

Особенности:n Поддержка 32-битного цвета (в до-

полнение к 8, 15, 16 и 24-битного в предыдущих версиях).

n 128-битовое кодирование с ис-пользованием алгоритма кодиро-вания RC4 (значение безопаснос-ти по умолчанию; старые клиен-ты могут использовать более сла-бое кодирование). Но из-за уязви-мости man-in-the-middle vulnerability в версиях ранее 6.0 трафик можно перехватить и расшифровать с по-мощью специальных утилит.

n Звук с удалённого ПК переадресо-вывается и воспроизводится на ло-кальном компьютере.

n Позволяет подключать удаленные ресурсы к локальной машине (дис-ки, принтеры, порты).

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

Page 45: 069 Системный Администратор 08 2008

43№8, август 2008

администрирование

n Можно настроить производитель-ность для сетей с различной про-пускной способностью.

n Есть версия для мобильных уст-ройств.

n Можно обмениваться информаци-ей через буфер обмена.

n На медленных каналах связи пока-зывает лучшие характеристики ра-боты, чем другие программы.

В Windows Server 2008 и Windows Vista используется новая версия про-токола, RDP 6.n Версия 6.0 установлена в Windows

Vista и включает поддержку про-грамм удаленного взаимодейст-вия, приложений Presentat ion Foundation Windows, поддержку нескольких мониторов и TLS 1.0 подключения.

n Версия 6.1 была выпущена в февра-ле 2007 года и включена в Windows Server 2008 и в пакет обновления Windows Vista SP1 и Windows XP SP3.

Недостатки:n В Windows (за исключением XP

Media Center Edition, Windows Server) основным ограничением является возможность одновременного вхо-да в систему только для одного уда-ленного пользователя.

n В связи с тем что при подключении блокируется текущий интерактив-ный пользователь, RDP плохо под-ходит для задач поддержки пользо-вателей.

n Неудобство управления большим количеством рабочих станций – этот недостаток можно устранить с помощью сторонних утилит, вза-имодействующих с RDP.

n Внешний IP-адрес должен быть ста-тический, иначе можно попробо-вать решить проблему с помощью бесплатного сервиса No-IP.com.

n На быстрых каналах работает мед-леннее, чем большинство анало-гов.

С а й т : h t t p : / / w w w. m i c r o s o f t .com/windowsxp/downloads / too ls /rdclientdl.mspx.

DameWareDameWare NT Utilities (DNTU) – это средство управления корпоративны-

ми системами на платформе Windows NT/2000/XP/2003/Vista, позволяющее администраторам обойти ограничения Microsoft Management Console (MMC). DNTU включает большое количество средств администрирования Microsoft Windows NT, объединенных под од-ним общим централизованным интер-фейсом, и позволяет удаленно управ-лять серверами и рабочими станция-ми Windows.В целом программа больше ориенти-рована на управление Active Directory, чем на управление рабочим столом и интерактивность.

Стоимость лицензии продуктов DameWare рассчитывается исходя из количества администраторов.

Особенности:n Функциональность DameWare

по работе с Active Directory не тре-бует необходимости пользователю осуществлять вход в домен для ра-боты.

n Реализована удаленная установ-ка.

n Несколько способов авторизации (AD, пароль).

n Хорошая документация.

Недостатки:n Очень загруженный интерфейс

пользователя.n Медленная скорость работы и зна-

чительная нагрузка на сеть в режи-ме управления удаленным экра-ном.

n Сложная система лицензирования и регистрации.

Сайт: http://dameware.ru.

pcAnywhereОдна из старейших программ удален-ного администрирования от известной компании Symantec. Поддерживает не-сколько самых известных операцион-ных систем, есть средство для компо-новки дистрибутивов. В целом програм-ма обладает рядом уникальных функ-ций, которых нет у аналогов, но эти функции (например, поддержка уста-ревшего протокола IPX/SPX) не нужны большинству пользователей.

Особенности:n Поддержка нескольких различных

протоколов соединения, не только TCP/IP.

RDP

DameWare

Page 46: 069 Системный Администратор 08 2008

44

администрирование

n Несколько способов авторизации, в том числе с под-держкой учетных записей Windows.

n Версия для мобильных устройств.n Можно сконфигурировать для работы в сложной топо-

логии сети (маршрутизаторы, файрволлы).

Недостатки:n Медленная скорость работы с удаленным экраном.n Высокая цена.

Сайт: http://www.symantec.com.

Radmin 3Очень известный продукт. Обладает аскетичным интерфей-сом, но при этом работает быстрее большинства аналогов. В ряде случаев это самое быстрое решение. Не так дав-но продукт обновился до версии 3, до этого на протяже-нии многих лет существенных обновлений не было. Дол-

гое время моим выбором была имен-но эта программа. Простой интерфейс и приличная скорость работы делают своё дело.

Особенности:n Совместимость с Windows Vista

32-bit и 64-bit.n Несколько режимов работы, в том

числе передача файлов, телнет и другое.

n Хорошая производительность в се-тях с большой пропускной способ-ностью.

n Поддержка нескольких соедине-ний.

n Удаленная установка.n Есть русская версия.

Недостатки:n Конфликты с драйверами и обо-

рудованием, вплоть до появления BSOD.

n Цена выросла в два раза по сравнению с предыдущей версией.

n Работает значительно медленнее некоторых аналогов в сетях с низкой пропускной способностью.

Сайт: http://www.radmin.ru.

NetOpВ свое время это была одна из самых популярных про-грамм в своём роде. Сразу очевидно, что программа боль-ше рассчитана на решение задачи поддержки пользова-телей. Это довольно тяжелый и функциональный продукт, многим похожий на pcAnywhere и DameWare.

Особенности:n Кроссплатформенная поддержка.n Множественные сессии Guest.n Благодаря сторонним утилитам этого же производите-

ля есть возможность настроить программу для сложной топологии сети.

Недостатки:n Медленная скорость работы в режиме просмотра/уп-

равления удаленным рабочим столом.n Высокая цена по сравнению с другими продуктами.

Сайт: http://www.netop.ru.

RealVNCОдно из самых популярных решений в сфере удаленного администрирования. Благодаря тому, что исходный код это-го продукта открыт, существует ряд клонов этого продук-та, которые обладают своими уникальными особенностями. К слову, последние несколько лет, особенно после выхода Windows Vista, политика открытости и бесплатности у раз-работчиков изменилась. Версию программы с поддержкой Vista теперь предлагают только за деньги. Но, к слову, есть пока что полностью бесплатная UltraVNC.Radmin 3

pcAnywhere

Page 47: 069 Системный Администратор 08 2008

45№8, август 2008

администрирование

Особенности:n На данный момент есть бесплатная

версия.n Поддержка Windows Vista в плат-

ных версиях.n Кроссплатформенная поддержка.

Недостатки:n Недостаточно высокая скорость ра-

боты.n Неудобный интерфейс.n По умолчанию данные не шифру-

ются, отсутствует аутентификация на основе учетных записей пользо-вателей Windows.

Сайт: http://www.realvnc.com.

Remote Office ManagerЭто довольно новый продукт, на рын-ке появился в 2006 году. Не так давно производитель выпустил новую вер-сию программы – 3.3. Понравилось в этом продукте то, что он неплохо со-четает в себе простой и понятный ин-терфейс с серьезным функционалом. Также огромный плюс – это высокая производительность в различных се-тях и удаленная установка.

Особенности:n Хорошая производительность как в

сетях с высокой пропускной способ-ностью, так и в медленных сетях.

n Совместимость с Windows Vista.n Удаленная установка. Доступно не-

сколько видов удаленной установ-ки, в том числе в домене, с исполь-зованием групповой политики бе-зопасности и MSI.

n Возможность настроить програм-му на работу в условиях сложной топологии сети благодаря таким функциям, как «Соединение через» и «Обратное соединение».

n Поддержка нескольких соедине-ний.

n Есть русская версия.

Недостатки:n Небольшая известность програм-

мы, т.е. отсутствие серьезной про-верки временем.

n Отсутствует кроссплатформенная поддержка.

Сайт: http://aledensoft.ru.

Сравнительный анализ программПостараемся сравнить представлен-ные программы как по набору функ-ций, которые необходимы для уда-ленного управления, так и по удобству работы с программой, цене и другим важным факторам, которые произво-дители стараются обходить стороной при описании своих продуктов.

Трудно представить программу удаленного управления без возмож-ности подключаться к рабочему сто-лу и управлять им, конечно же, чем ка-чественнее и удобнее управление, тем больше сэкономленных минут (а когда и часов), времени и нервов. Управление в локальной сети замет-но отличается от работы в Интерне-те, если в локальной сети можно ра-ботать с помощью любой из этих про-грамм (отмечу, что Remote Administrator, на мой взгляд, самый быстрый).

В Интернете удобнее всего рабо-тать с помощью RDP или Remote Office Manager, немаловажную роль играет возможность отключения обоев рабо-чего стола, что дает заметное ускоре-ние при работе.

Серьезную роль, при выборе про-граммы играют её дополнительно встроенные возможности администри-рования, возможно, кому-то они не по-

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

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

VNC подойдет пользователям в ка-честве дополнительного инструмента администрирования, предоставляет базовый функционал в универсальной и бесплатной программе. За поддерж-ку Windows Vista и за другие полезные функции придется платить, что ставит эту программу на равные с остальны-ми коммерческими продуктами.

Radmin, Netop, Remote Of f ice Manager не уступают своим колле-гам – они прекрасно справляются с поставленной задачей и обладают хорошим набором функциональнос-ти, Radmin можно назвать самой быс-

NetOp

RealVNC

Page 48: 069 Системный Администратор 08 2008

46

администрирование

трой программой, если не учитывать работу на слабых каналах – достой-ный продукт.

Remote Office Manager – недоро-гая, удобная, быстрая и многофунк-циональная программа, которая по-дойдет как небольшим, так и крупным организациям.

«Больной» вопрос среди программ удаленного администрирование – это поддержка Windows Vista, не все программы уживаются с оболоч-

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

Большинство рассмотренных про-грамм обладают такой полезной функ-цией, как удаленная установка. Хо-тя это скорее исключение из правил. Менее популярные продукты, не рас-смотренные в данной статье, не обла-

дают таким функционалом за редким исключением.

Если же представленные програм-мы вас не устраивают, стоит обратить внимание на другие продукты, такие как Citrix, Remotely Anywhere и дру-гие, которые предоставляют множес-тво своих уникальных возможнос-тей, к примеру, управление удален-ным компьютером через веб-интер-фейс (в VNC тоже присутствует дан-ная функция). Словом, не бойтесь экс-периментировать, пробуйте новые про-граммы, которые, возможно, подойдут и понравятся вам, сделав работу го-раздо приятнее и проще.

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

ЗаключениеКаждый из этих продуктов подойдет и понравится определенной группе администраторов, учитывая личные и профессиональные требования, по-этому лучшую программу можете оп-ределить только вы!

1. Ачилов Р. Обзор программ удален-ного доступа: выбирайте подходя-щую. //Системный администратор, №5, 2007 г. – С. 18-33.

Remote Office Manager

RDP DameWare pcAnywhere Radmin 3 Netop RealVNC Remote Office Manager

Передача файлов + + + + + + +

Просмотр процессов – + – – – – +

Поддержка Vista (Windows 2008 Server) + + + + + + +

Обратное соединение (возможность сервером инициировать сетевое соединение)

– + + – – – +

Telnet – + – + – – –

64-битная платформа + + + + – + +

Текстовый или голосовой чат – + + + + + –

Работа на медленных каналах + + + – + + +

Защита настроек – – – – – – +

Удаленная установка + + – – – – +

Автоматическая интеграция с брэндмауэром + + – + + – +

Кроссплатформенность – – + – + + –

Блокировка удаленного компьютера – + – – + + +

Поиск рабочих станций – + – + + – +

Интерфейс и удобство работы (с большим количеством рабочих станций)

– – – + – – +

Цена за одну лицензию 0 $289 (лицензируется модуль администратора)

$199 $49 Сложная ценовая политика

0 - $50 $20

Таблица сравнения программ по функциональным возможностям

Page 49: 069 Системный Администратор 08 2008

47№8, август 2008

bugtraq

Переполнение буфера в Bea Weblogic Apache ConnectorПрограмма: Bea Weblogic Server.Опасность: Высокая.Описание: Уязвимость существует из-за ошибки провер-ки границ данных в Apache-коннекторе. Удаленный поль-зователь может с помощью специально сформированного POST-запроса вызвать переполнение стека и выполнить произвольный код на целевой системе.URL производителя: www.bea.com/framework.jsp?CNT= index.htm&FP=/content/products/weblogic/server.Решение: В настоящее время способов устранения уязви-мости не существует.

Переполнение буфера в Trend Micro OfficeScanПрограмма: Trend Micro OfficeScan 7.3 build 1343(Patch 4), возможно, более ранние версии, Trend Micro OfficeScan Corporate Edition 8.x.Опасность: Высокая.Описание: Уязвимость существует из-за ошибки про-верки границ данных в OfficeScan Corp Edition Web-Deployment ObjRemoveCtrl Class ActiveX-компоненте (OfficeScanRemoveCtrl.dll) в OfficeScan-клиенте при попыт-ке отобразить список конфигурационных настроек. Удален-ный пользователь может с помощью специально сформи-рованного веб-сайта вызвать переполнение стека и выпол-нить произвольный код на целевой системе.URL производителя: www.trendmicro.com/en/products/desktop/osce/evaluate/overview.htm.Решение: Установите исправление с сайта производителя.

Переполнение буфера в Webex Meeting Manager WebexUCFObject ActiveX-компонентеПрограмма: Webex Meeting Manager 20.2008.2601.4928, воз-можно, более ранние версии.Опасность: Высокая.Описание: Уязвимость существует из-за ошибки провер-ки границ данных в WebexUCFObject ActiveX-компоненте (atucfobj.dll) при обработке аргумента, передаваемого ме-тоду NewObject(). Удаленный пользователь может с помо-щью специально сформированного веб-сайта вызвать пе-реполнение стека и выполнить произвольный код на целе-вой системе.URL производителя: www.webex.com/downloads_webex.html.Решение: Установите последнюю версию 20.2008.2606.4919 с сайта производителя.

Переполнение буфера в Microsoft Visual StudioПрограмма: Microsoft Visual Studio 6.0, возможно, другие версии.Опасность: Высокая.Описание: Уязвимость существует из-за ошибки про-верки границ данных в Masked Edit ActiveX-компоненте (Msmask32.ocx версии 6.0.81.69). Удаленный пользователь может с помощью специально сформированного веб-сайта передать уязвимому компоненту слишком длинный пара-метр Mask, вызвать переполнение стека и выполнить про-извольный код на целевой системе.URL производителя: msdn2.microsoft.com/en-us/library/ms950417.aspx.Решение: Установите исправленную версию Msmask32.ocx 6.0.84.18 с сайта производителя.

Множественные уязвимости в xine-libПрограмма: xine-lib версии до 1.1.15.Опасность: Высокая.Описание: 1. Множественные целочисленные перепол-нения обнаружены при обработке ID3-тегов в файле src/demuxers/id3.c. Удаленный пользователь может с помощью специально сформированного ID3-тега вызвать переполне-ние динамической памяти и выполнить произвольный код на целевой системе.

2. Уязвимость существует из-за ошибок проверки гра-ниц данных в функции demux_real_send_chunk() в файле src/demuxers/demux_real.c. Удаленный пользователь может с помощью специально сформированного Real Media-фай-ла вызвать переполнение динамической памяти и выпол-нить произвольный код на целевой системе.

3. Уязвимость существует из-за ошибки проверки гра-ниц данных в функции open_video_capture_device() в файле src/input/input_v4l.c. Удаленный пользователь может с по-мощью специально сформированного V4L-потока вызвать переполнение динамической памяти и выполнить произ-вольный код на целевой системе.URL производителя: xinehq.de.Решение: Установите последнюю версию 1.1.15 с сайта производителя.

Неавторизованное изменение пароля в JoomlaПрограмма: Joomla версии до 1.5.6.Опасность: Средняя.Описание: Уязвимость существует из-за некорректно-го ограничения доступа к сценарию components/com_user/models/reset.php. Удаленный пользователь может обойти механизм аутентификации и изменить пароль пользовате-ля с наименьшим идентификатором в базе данных (как пра-вило, администратора).Пример: 1. Открыть страницу: http://[host]/index.php?option= com_user&view=reset&layout=confirm.

2. Установить в поле «token» символ “'”.3. Указать новый пароль для учетной записи admin.4. Перейти на страницу: http://[host]/administrator.5. Авторизоваться в приложении с новым паролем.

URL производителя: www.joomla.org.Решение: Установите последнюю версию 1.5.6 с сайта про-изводителя.

Составил Александр Антипов

Page 50: 069 Системный Администратор 08 2008

48

web

Немного о кэшированииСейчас на рынке работают несколько компаний, предо-ставляющих услуги по кэшированию и доставке контента. Но все они, насколько мне известно, имеют один сущест-венный недостаток – неумение достоверно кэшировать ди-намический контент. Часть из них вообще не может кэширо-вать динамический контент, а часть обновляют локальный кэш страниц только периодически, что непригодно для стра-ниц социальных сетей. И, как я подозреваю, причина одна – для того чтобы построить акселератор, который бы хранил достоверную копию динамической страницы, необходима плотная интеграция с оригинальным сайтом.

Технология кэширования динамических страницЗдесь я не изобрету ничего нового, лишь применю стандарт-ные средства протокола HTTP для построения акселерато-ра. В целом вся система состоит из сервера-акселератора и оригинального сайта и работает по следующей схеме:n Пользователь обращается к акселератору, который яв-

ляется проксирующим сервером по отношению к сайту.n Если акселератор не имеет локальной копии страницы,

то он обращается на сайт за ней, отдает страницу поль-зователю и сохраняет в локальном кэше.

n Если акселератор уже имеет эту страницу, то он от-правляет запрос на оригинальную страницу с заголов-ком If-Modified-Since xxx, где xxx – дата последней мо-дификации страницы, сохраненной в кэше.

n Когда оригинальный сайт получает такой запрос, он сравнивает дату модификации своей страницы с этой датой.

n Если страница уже была модифицирована, то отдается полная версия страницы.

n Если дата последней модификации такая же, как в кэ-ше, то сайт должен отдать пустую страницу со статусом HTTP 304.

n Когда кэш получает ответ со статусом HTTP 304, то он отдает страницу из локального кэша.

Компоненты системыДля построения такой системы я использовал модуль mod_accel Игоря Сысоева [2]. На данный момент идет ак-тивная разработка такого же модуля для nginx, но на мо-мент написания этой статьи он еще не был готов.

Установка и настройкаВ свой работе я использую CentOS семейства Redhat, поэто-му описание процедуры устоновки и настройки будет ори-ентировано на этот дистрибутив. Первым делом необходи-мо получить библиотеку EAPI, которая нужна для компиля-ции модуля mod_accel. Ее можно скачать с сайта [3]. Биб-лиотеку устанавливать не нужно.

Далее получаем версию Apache 1.3.20 c cайта [4] и рас-крываем архив:

Виталий Банковский

Кэшируем динамический контент

Продолжая цикл статей, я расскажу, как можно создавать кэширующие сервера для динамического контента. (Первую статью цикла «Создаем распределенную сеть доставки контента» см. в №2 за 2008 г.)

tar -xzvf mod_ssl-2.8.4-1.3.20.tar.gzcd mod_ssl-2.8.4-1.3.20./configure —with-apache=../apache-1.3.20make

tar -xzvf apache_1.3.20.tar.gz

Page 51: 069 Системный Администратор 08 2008

49№8, август 2008

web

Также нужна библиотека MM, которая доступна на сай-те [5].

Получаем модуль mod_accel и запускаем процесс об-новления исходных кодов Apache:

Далее собираем Apache и устанавливаем:

Настройка ApacheЗатем настраиваем Apache для кэширования нашего сай-та. Сосредоточимся на основных моментах конфигураци-онного файла сервера Apache:

Перед запуском сервера Apache необходимо создать каталог для хранения страниц кэша и поменять владель-ца и группу, чтобы процесс apache мог записывать кэш в этот каталог:

Если процесс apache работает под другим именами пользователя и группы, то нужно соответственно поменять параметры команды chown.

Включение запуска сервера Apache в процедуру началь-ной загрузки сервера состоит в создании файла /etc/init.d/apache со следующим содержимым:

Запускаем наш акселератор:

Интеграция динамической части сайта с акселераторомСтатические элементы сайта будут успешно кэшировать-ся и без специальных настроек. Для того чтобы динами-

/etc/init.d/apache start

tar zxf mm-1.2.1.tar.gzcd mm-1.2.1./configure makemake install

tar -xzvf mod_accel-1.0.34.tar.gzcd ./configure \--with-apache=../apache_1.3.20 \--with-eapi=../mode_ssl-2.8.4-1.3.20/pkg.eapimake # накладывает патчи

cd apache_1.3.20EAPI_MM=../mm-1.2.1 ./configure —enable-rule=EAPI \--activate-module=src/modules/accel/libaccel.amake make install

# Путь, где будут храниться закэшированнные файлы. # Уровень иерархии каталогов — 1AccelCacheRoot /home/dcache 1

# Включить кэшированиеAccelNoCache off

# Начальный URL и адрес оригинального сайтаAccelPass / http://10.10.10.11:80/

# Отключить удаление файлов из кэшаAccelUnlinkNoCached off

# Передавать в переменной X-Host переменную среды Host, # пришедшей на акселератор.AccelSetXHost on

# Включить передачу IP-адреса посетителя через # переменную X-Real-IP нашему сайтуAccelSetXRealIP on

# Включить передачу оригинального URL нашему сайту через # переменную X-URLAccelSetXURL on

#!/bin/sh# chkconfig: 2345 55 25

mkdir /home/dcachechown -R apache.apache /home/dcache

case "$1" in start) echo -n "Starting: apache" /usr/local/apache/bin/apachectl start echo "." ;;

stop) echo -n "Stopping service: apache" killall httpd echo "." ;;

restart) $0 stop sleep 2 $0 start ;;

*) echo "Usage: /etc/init.d/apache ↵ {start|stop|restart}" >&2 exit 1 ;;esac

exit 0

Page 52: 069 Системный Администратор 08 2008

50

web

ческие страницы нашего сайта могли быть закэширова-ны, необходимо ввести проверку даты последней моди-фикации страниц в кэше с датами последней модифика-ции страниц. Для этого я модифицировал наш сайт таким образом, что каждая страница имеет дату последней мо-дификации, хранимой в базе данных. Когда на сайт пере-дается запрос из акселератора на какую-то страницу, сайт сравнивает дату из заголовка if-modified-since с датой пос-леднего обновления страницы, и в зависимости от резуль-татов проверки скрипт на сайте возвращает или полную версию страницы с кодом HTTP, равным 200, или пустую страницу с кодом 304.

Также обязательно нужно обратить внимание на стра-ницы, которые никогда не должны быть кэшированы. На-пример, страницы авторизации, обновления учетных запи-сей пользователей и так далее.

К сожалению, такая плотная интеграция зависит от про-граммного обеспечения на сайте, поэтому в качестве при-мера целесообразно привести упрощенный пример скрип-та сайта, проинтегрированного с акселератором:

Схема работы приложения может быть построена сле-дующим образом:n В начале программы переменная $cache устанавлива-

ется в 1.n Проверяется наличие заголовка if-modified-since и срав-

нивается с датой последнего обновления запрошенной страницы. В зависимости от результата проверки пере-менная $cached устанавливается в 0 или 1.

n Во всех процедурах динамической генерации контента проверяется значение переменной $cached. Если пе-ременная равна 1, то все эти процедуры завершаются, и программа переходит в финальную фазу – генерация контента как показано выше. Если переменная равна 0, то программа создает контент с нуля.

n Во всех процедурах, где создается некэшируемый кон-тент, переменная $cache устанавливается равной 0.

n Вызывается процедура печати контента (как показано выше в примере).

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

1. Банковский В. Создаем распределенную сеть доставки кон-тента. //Системный администратор, №2, 2008 г. – С. 64-68. – http://www.samag.ru/cgi-bin/go.pl?q=articles;n=02.2008;a=01.

2. http://sysoev.ru/mod_accel.3. http://www.modssl.org.4. http://apache.org.5. http://www.engelschall.com/sw/mm.5. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.6. http://www.danga.com/memcached.

Листинг 1. Пример программы сайта

<?php

$cache=1;

# Проверяем, пришел ли к нам запрос из акселератора # с заголовком If-modified-since. Если такой заголовок # существует, это означает, что акселератор имеет # локальную копию этой страницы

if ($_SERVER['HTTP_IF_MODIFIED_SINCE']){ $txt = "cache"; $len = strlen($txt);

# print 304 code header("Status: 304",false,304); header("Content-Type: text/html",false,304);

# Печатаем длину контента, иначе акселератор решит # что контент — динамический и не закэширует страницу header("Content-Length: $len",false,304);

# Печатаем дату последней модификации страницы header("Last-Modified: Tue, 16 Oct 2007 12:45:26 GMT", ↵ false,304); header("Pragma: cache", false,304); header("Cache-Control: cache",false,304); header("Content-Length: $len", false,304);

# Дата, когда документ считается устаревшим, должна # быть будущей, иначе акселератор не сохранит страницу

$dt=time(); $dt+=1; header("Expires: " . ↵ gmdate("D, d M Y H:i:s",$dt) . " GMT"); echo $txt; exit;}else{ # В этой секции мы будем генерировать некэшируемый # контент или контент, который еще не закэширован # в акселераторе

$content = get_some_content();

# Вычисляем длину содержимого, иначе акселератор # решит, что это – динамический контент

$len = strlen($content); header("Status: 200"); header("Content-Type: text/html"); header("Content-Length: $len");

# Печатаем дату последней модификации страницы header("Last-Modified: Tue, 16 Oct 2007 12:45:26 GMT");

# Также у нас есть глобальная переменная. # При генерации страниц для некэшируемых страниц # нужно выставить эту переменную равной нулю

if($cache>0) { # Указываем акселератору, что нужно # кэшировать контент header("Pragma: cache"); header("Cache-Control: cache"); } else{ # Указываем акселератору что не нужно # кэшировать контент header("Pragma: no-cache"); header("Cache-Control: no-cache"); }

# Как и раньше, устанавливаем дату устаревания документа $dt=time(); $dt+=1; header("Expires: " . ↵ gmdate("D, d M Y H:i:s",$dt) . " GMT");

# Печатаем контент echo $content; exit;}

?>

Page 53: 069 Системный Администратор 08 2008

Реклам

а

Page 54: 069 Системный Администратор 08 2008

52

администрирование «1С»

В процессе установки платфор-мы «1С:Предприятие» в опера-ционной системе, кроме всего

прочего, регистрируется и файловое расширение «v8i». Файл с таким рас-ширением является ярлыком, который содержит ссылки на общие информа-ционные базы.

С помощью диалога настройки ок-на запуска можно указать произволь-ное количество списков общих инфор-мационных баз, которые должны об-рабатываться при запуске системы «1С:Предприятие» (см. рис. 1).

Таким образом, содержащиеся в указанных общих списках информа-ционные базы будут добавлены в ос-новной список информационных баз и отображены при запуске системы (см. рис. 2).

Файл с расширением v8i представ-

ляет собой небольшой текст с регла-ментированной структурой.

Пример файла:

Для облегчения работы по созда-нию общих списков существует воз-можность сохранения ссылки в файл. Для этого нужно вызвать контекстное меню правой кнопкой мыши на строке информационной базы в окне запус-ка «1С:Предприятие» и выбрать пос-ледний пункт меню «Сохранить ссыл-ку в файл» (см. рис. 3).

Важно, что в файле v8i может быть указана не одна, а сразу несколько

Управляем списками общих информационных баз

Что делать, если в организации появляется новая информационная база и нужно добавить каждому пользователю ярлык запуска к этой базе? В этом случае работу можно облегчить с помощью специализированного механизма платформы «1С:Предприятие 8» списки общих информационных баз.

Андрей Луконькин

[ЗУП sql рабочая]Connect=Srvr="Proliant7";Ref="ZP";ID=c27a142e-5a9c-477c-a69f-12914a12b347OrderInList=466944Folder=/ЗарплатаOrderInTree=32768External=0

Рисунок 1. В диалоге настройки указываются списки общих информационных баз

Рисунок 2. В окне запуска отображаются указанные в общих списках информационные базы Рисунок 3. Сохранение ссылки в файл

баз, поэтому использование в работе механизма списка общих баз позво-лит стандартизировать и регламенти-ровать работу пользователей, опера-тивно управлять доступными для за-пуска базами, не тратя много време-ни для внесения изменений.

Page 55: 069 Системный Администратор 08 2008

53№8, август 2008

администрирование «1С»

Построитель отчета – это объект, позволяющий на основе задан-ного текста запроса и настро-

ек получить результат и вывести его в табличный документ или диаграмму. Основной задачей построителя явля-ется изменение текста запроса на ос-новании указанных настроек, а также динамическое формирование выход-ных данных.

Система компоновки данных (СКД) – средство, предназначенное для создания отчетов на основе их декларативного описания, позволяет описать отчет как единое целое, предо-ставляя как пользователям, так и раз-работчикам практически неограничен-ные возможности получения данных. СКД имеет сложную структуру и мо-жет содержать произвольный набор таблиц и диаграмм.

Новые возможности построения отчетов, предоставляемые системой компоновки данных:n использование нескольких наборов

данных в одном отчете;n указание набора данных для пост-

роения иерархии;

n указание выражения для полу-чения представления значения поля;

n указание выражений упорядочива-ния для поля;

n указание таблиц для получения ха-рактеристик;

n указание роли поля;n использование вычисляемых по-

лей;n возможность группировки условий

отбора по «И/ИЛИ»;n возможность использования усло-

вий отбора с участием нескольких полей;

n поля выбора и поля выражения, за-даваемые пользователем;

n получение различных срезов ин-формации в одном отчете;

n вывод номера по порядку;n вывод общих процентов и процен-

тов в группировке.

Система компоновки данных пов-семестно приходит на смену построи-телю отчетов. Так, полностью перера-ботана всем известная стандартная обработка КонсольОтчетов.epf, мно-

Андрей Луконькин

гие отчеты в типовых конфигурациях переписываются с использованием СКД. Например, отчеты «Расчетные листки», «Штатная расстановка», «За-нятость сотрудников» и многие другие в конфигурации «Зарплата и управле-ние персоналом» версии 2.5.9.2.

Получается, не изучив новые воз-можности платформы, такие как СКД, просто невозможно шагать в ногу со временем. Развивая платформу, разработчики меняют и типовые реше-ния, с которыми работают пользовате-ли и программисты. Поэтому наш про-фессиональный уровень должен расти, успевая за всеми новинками, которые преподносят нам разработчики.

Примеры создания отчета с ис-пользованием системы компоновки данных «1С:Предприятие 8» можно найти по адресу http://v8.1c.ru/overview/dcs_sample_report.htm или на диске ин-формационно-технологического со-провождения (ИТС) в разделе «Но-вое в версии 8.1 для разработчиков». Также можно увидеть СКД в действии в бесплатно распространяемой конфи-гурации «Примеры 8.1».

Система компоновки данных

Платформа «1С:Предприятие» постоянно развивается, выходят новые релизы, появляются новые возможности, улучшающие и облегчающие жизнь пользователей и программистов. Одним из таких новшеств явилось закономерное преобразование построителя отчета в более функциональный инструмент – систему компоновки данных.

Page 56: 069 Системный Администратор 08 2008

54

безопасность

Инфраструктура открытого клю-ча (Public Key Infrastructure) не является жизненно необхо-

димой для работы домена. Вы може-те годами не внедрять ее на предпри-ятии и не испытывать никаких проблем. Но когда вы начинаете задумываться о безопасности, о тех возможностях, которые дает внедрение PKI, то рано

или поздно вы придете к идее развер-нуть ее в масштабах поддерживаемо-го вами домена. PKI – это комбинация из ряда совместно работающих служб и компонентов. Одним из ключевых яв-ляется центр сертификации (Certificate Authority – CA) – доверенный субъект или служба для выдачи и управления цифровыми сертификатами. В сети

Microsoft Windows центром сертифика-ции становится компьютер с серверной операционной системой, на котором установлены и запущены службы сер-тификации (Certificate Services). В ста-тье будут рассматриваться СА, работа-ющие на Windows 2003 Server.

Microsoft рекомендует тщательно спланировать PKI, прежде чем при-

Установка цепочки серверов сертификации как часть внедрения PKI в домене Часть 1

Станислав Шпак

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

Page 57: 069 Системный Администратор 08 2008

55№8, август 2008

безопасность

ступать к действиям по развертыва-нию компонентов. Что касается СА, то нужно решить, будет ли использо-ваться только свой собственный центр сертификации либо же придется при-бегать к услугам и открытых (пуб-личных) СА, таких как VerySign. Осо-бую роль имеет планирование распо-ложения, количества и типа СА. Су-ществует два основных типа СА: СА предприятия (enterprise CA) и изоли-рованный СА (stand-alone CA). В свою очередь они подразделяются на два подтипа: корневой (root) и подчинен-ный (subordinate). Тип СА определяет, где хранится база сертификатов (ло-кально или в Active Directory), как из-даются сертификаты (автоматически по шаблонам или вручную) и т. п. Кро-ме того, издающим (issuing) называет-ся СА, который обрабатывает запросы конечных пользователей.

Выбор структуры CAНеобходимо спланировать многоуров-невую структуру СА. Теоретически воз-можно использование одного центра сертификации одновременно в качест-ве корневого СА предприятия и издаю-щего одновременно, но такая конфи-гурация настоятельно не рекоменду-ется как из соображений безопаснос-ти, так и из соображений дальнейшей масштабируемости.

Microsoft рекомендует использо-вать число уровней СА от 2 до 4: ис-пользование более глубокой структу-ры становится трудным в управлении.

Можно назвать «классической» схему из трех уровней СА (см. рис. 1):n первый уровень: изолированный

корневой СА;n второй уровень: изолированный

подчиненный СА (еще он называ-ется промежуточным, (intermediate), или policy CA);

n третий уровень: подчиненный СА уровня предприятия, он же выпус-кающий СА.

Развертывание именно такой структуры и будет рассматриваться в этой статье. Что она дает: изолиро-ванный СА первого уровня (RootCA) выпускает самоподписанный сертифи-кат сам себе и используется в качестве корня структуры. Изолированный под-чиненный СА второго уровня (SubCA) получает сертификат от корневого СА

и используется, во-первых, для усиле-ния безопасности всей структуры, а во-вторых, в случае, когда на втором уров-не больше чем один СА, для назначе-ния различных операционных политик или политик безопасности для CA ниж-них уровней. В рассматриваемой схе-ме введение промежуточного второ-го уровня не является обязательным и используется с целью приведения к «классическому» виду и для возмож-ности маштабируемости в дальней-шем. По рекомендации Microsoft из со-ображений безопасности, СА первых двух уровней должны быть изолиро-ваны от сети, а после установки и пер-вичной настройки – храниться в надеж-ном, защищенном от доступа посто-ронних месте в выключенном состо-янии. Выполнению этого требования может помочь применение виртуаль-ных машин – использование VMware или Virtual Server идеально подходит как для обеспечения безопасности на этапе развертывания инфраструк-туры, так и для последующей физичес-кой изоляции серверов.

И наконец, подчиненный СА уров-ня предприятия (EntCA) получает сер-тификат от промежуточного СА, нахо-дится в домене Active Directory и выпус-кает сертификаты по запросам конеч-ных пользователей либо в ручном, ли-бо в автоматическом режиме по шаб-лонам (рекомендуется). Для отказо-устойчивости нужно иметь как мини-мум два выпускающих СА на каждый промежуточный СА, однако мы будем рассматривать установку только од-ного сервера.

Определение функциональных параметров для САКогда структура СА определена, нуж-но учесть еще ряд важных параметров, влияющих на работу каждого из СА. К таковым параметрам относятся:n Срок жизни сертификатов. Здесь

надо учитывать баланс между со-ображениями безопасности (мень-ший срок действия) и соображени-ями легкости обслуживания (боль-ший срок действия). Мы выберем для сертификатов корневого СА срок действия 20 лет, для подчи-ненного СА – 10 лет, выпускающе-го СА – 5 лет и для сертификатов пользователей – 1 год.

n Списки отзыва сертификатов и интервал их публикации. В слу-чае если сертификат стал ненуж-ным или недействительным до ис-течения срока его жизни, его мож-но отозвать вручную (пометить как недействительный). При этом его номер попадает в список отзы-ва (Certificate Revocation List – CRL). Этот список должен периодически обновляться и быть всегда доступ-ным для проверки. Когда приложе-ние проверяет действительность сертификата, происходит не толь-ко проверка даты и срока дейст-вия сертификата, но и отсутствие его номера в списке отзыва. Сер-тификат считается недействитель-ным, если его номер содержится в CRL либо CRL недоступен. Спи-сок отзыва кэшируется на сторо-не клиента и обновляется в соот-ветствии с временем жизни CRL, поэтому возможны ситуации, ког-да сертификат отозван, опублико-ван в CRL, но какое-то время еще может считаться действительным. Это надо учитывать при опреде-лении интервала публикации CRL. Для выпускающего СА интервал оставим по умолчанию в 1 неделю, для промежуточного – 3 месяца, для корневого – полгода. Для са-моподписанного сертификата кор-невого СА этот параметр неприме-ним.

Рисунок 1. Структура из трех СА

Page 58: 069 Системный Администратор 08 2008

56

безопасность

n Сведения о доступе к СА (Authority Information Access – AIA). В точке публикации AIA располагается сер-тификат СА, который также должен быть доступен для клиента. Клиент использует сертификаты СА как часть проверки действительности сертификата.

После выбора предполагаемых ра-бочих параметров каждого из СА мож-но перейти непосредственно к их ус-тановке. Надо иметь в виду, что имя компьютера и доменную принадлеж-ность после установки служб серти-фикации менять уже будет нельзя. В качестве доменного окружения бу-дем рассматривать лес, состоящий из одного дерева и двух доменов. Домен Dedicated.Root представляет собой корневой домен, домен Res.Dom – до-черний (ресурсный). Службы сертифи-кации на третьем уровне будем разво-рачивать на компьютере EntCA – чле-не домена Dedicated.Root.

Установка корневого САПоскольку корневой СА будет изоли-рованный, то перед установкой убе-дитесь, что компьютер не включен в домен, а также имеет имя, которое впоследствии не планируется менять – в нашем случае RootCA.

Далее надо подготовить специаль-ный файл capolicy.inf, который должен быть помещен в %Systemroot%. Нали-чие этого файла для установки корне-вого СА очень важно, поскольку в нем задаются все исходные параметры для СА. Более того, мастер установки служб сертификации не только не пре-

дупредит вас об отсутствии этого фай-ла, но и не будет проверять его кор-ректность.

Отсутствие файла capolicy.inf или его неправильное конфигурирование приведет к тому, что СА будет уста-новлен с параметрами по умолчанию, поскольку для него нет родительско-го СА, от которого можно было бы их унаследовать. Изменить некоторые из них после установки будет невоз-можно, и, как следствие, придется пе-реустанавливать службы сертифика-ции заново. Это не так страшно, пока СА единственный в структуре, но прак-тически невыполнимо после разверты-вания СА нижележащих уровней.

Значения параметров в разделе [Certsrv_Server] должны быть не мень-ше, чем те, которые будут запраши-ваться мастером установки.

Как уже было сказано, корневой СА издает самоподписанный серти-фикат, который не имеет списка от-зывов. Поэтому очень важно разде-лы [CRLDistributionPoint] и [Authority InformationAccess] указать в явном ви-де и оставить пустыми.

В итоге у нас получается вот такое содержимое файла capolicy.inf:

Также перед установкой служб сер-тификации имеет смысл установить службы Internet Information Services и поддержку ASP.NET. Для работы кор-невого и промежуточного СА их нали-чие совсем не обязательно, но это мо-жет несколько облегчить дальнейший выпуск сертификатов для СА нижних уровней, несмотря на то что почти все действия, доступные через веб-интер-фейс, можно продублировать и через консоль управления службами серти-фикации.

Теперь можно открыть «Панель управления → Установка и удаление программ → Установка компонентов Windows» и выбрать Certificate Services (службы сертификации). Будет показа-но предупреждение о том, что после завершения установки изменить имя компьютера будет уже нельзя. Далее будет предложено сделать выбор типа

СА. Обратите внимание, что enterprise-типы СА будут недоступны (компью-тер – не член домена). Выбираем Stand-Alone root CA, устанавливаем галку Use custom setting to generate the key pair and CA certificate и нажимаем «Далее». При этом на следующем ша-ге можно будет выбрать поставщика служб криптографии (Cryptographic Service Provider – CSP) (по умолчанию Microsoft), хэш-алгоритм и длину клю-ча. Для нашего типа СА выберем дли-ну ключа в 4096 бит, остальные пара-метры оставим без изменений (пара-метр Allow this CSP to interact with the desktop нужен, например, при исполь-зовании смарт-карт).

На следующем шаге нас попросят указать имя нашего СА и отличитель-ное имя (distinguished name). В послед-нем случае надо указать правильное имя по отношению к контексту Active Directory, несмотря на то что этот СА не является СА уровня предприятия. Итак, в качестве имени СА использу-ем RootCA, в качестве отличительного имени вводим DC=dedicated,DC=root. Значение Validity Period указывает на время жизни сертификата. Как бы-ло указано выше, срок службы для кор-невого СА сделаем равным в 20 лет. Далее происходит генерация крипто-материала, и нужно немного подож-дать окончания этого процесса.

Заключительным шагом явля-ется указание расположения фай-лов баз данных сертификатов, жур-налов регистрации и общей папки для расположения информации, тре-буемой для клиентов (по умолчанию это C:\CAConfig). Несмотря на то что это изолированный СА, все равно ло-кальная папка будет создана и, в слу-чае наличия сетевого интерфейса, от-крыта для общего доступа.

Проверка и настройка RootCAПоскольку корневой СА является от-правной точкой для всей цепочки СА, очень важно внимательно проверить и сконфигурировать его. Первое, что необходимо сделать, это просмот-реть сертификат, который СА выдал сам для себя (см. рис. 2). Это можно сделать, заглянув в папку C:\CAConfig. Там уже должен лежать файл <имя_сервера>_<имя_СА>.crt. В нашем слу-чае это файл RootCA_RootCA.crt.

Рисунок 2. Самоподписанный сертификат корневого СА

[Version]Signature= "$Windows NT$"[Certsrv_Server]RenewalKeyLength=4096RenewalValidityPeriod=YearsRenewalValidityPeriodUnits=20[CRLDistributionPoint][AuthorityInformationAccess]

Page 59: 069 Системный Администратор 08 2008

57№8, август 2008

безопасность

Что должно быть в сертификате:n на вкладке General: значения по-

лей Issued by и Issued to должны совпадать и указывать на только что установленный СА (в нашем случае это RootCA). Диапазон вре-мени, в течение которого сертифи-кат считается действительным, дол-жен быть верен и соответствовать тому, что задавали при установке;

n на вкладке Details: в перечне атри-бутов сертификата должны отсутс-твовать атрибуты CRL Distribution Points и Author i t y Informat ion Access;

n на вкладке Certification Path: в нижнем поле должна быть над-пись This certificate is OK.

Посмотреть сертификат можно и другим методом – воспользоваться оснасткой Certification Authority, кото-рая доступна в разделе Administrative Tools панели управления.

После ее запуска должно автома-тически произойти подключение к те-кущему серверу, при этом в дереве слева он должен быть помечен зеле-ной галочкой. Щелкнув на нем пра-вой кнопкой мыши и выбрав Properties на вкладке General, можно обнаружить кнопку View Certificate. Этот метод луч-ше, так как сразу позволяет убедить-ся в том, что службы сертификации ус-пешно запустились, иначе возникла бы ошибка подключения к СА. К тому же именно тут мы и продолжим конфигу-рирование СА и перейдем к указанию точек распространения CRL и AIA.

Напомню еще раз про важность CRL для проверки действительности серти-фиката. Задать точки распростране-ния CRL (CRL Distribution Points – CDP) можно перейдя на вкладку Extensions (Расширения) в окне свойств СА. Вы-падающий список в верхней части ок-на содержит всего два параметра: CRL и AIA. Оставим предложенный по умол-чанию CRL и обратимся к следующе-му полю, где перечислены места рас-положения для CRL.

Здесь надо быть очень осторож-ным – во-первых, указанные тут точки распространения CRL могут включать-ся во все издаваемые этим СА серти-фикаты. То есть теоретически возмож-но изменить или дополнить этот список и после того, как СА начнет работать, на практике же это будет означать не-

обходимость перевыпустить все сер-тификаты, которые были выпущены до того, как этот список изменился.

Во-вторых, недоступность CRL оз-начает недействительность сертифи-ката, поэтому надо предусмотреть как минимум два разных места располо-жения CRL.

В-третьих, не рекомендуется остав-лять в списке неиспользуемые точки распространения.

В-четвертых, порядок просмотра CDP тоже важен – первыми в списке должны быть те точки, которые смо-гут обслуживать больше всего клиен-тов и быть доступными как можно ча-ще. Хорошим решением считается рас-положение одной из CDP на корпора-тивном сайте, с тем чтобы она была до-ступна из Интернета.

Если посмотреть на предлагаемые по умолчанию варианты, то без труда можно сделать вывод, что в качестве CDP может выступать: Active Directory, локальная файловая система, UNC-путь и http-путь. Каждый из этих ва-риантов имеет свои плюсы и минусы. Например, как уже было сказано, http удобно использовать когда требует-ся обеспечить доступ к CRL клиентов снаружи корпоративной сети. Active Directory удобна внутри сети, но нуж-но учитывать интервалы репликации AD и публикации CRL – если CRL пуб-ликуется чаще, чем время полной реп-ликации внутри домена, то использо-вать AD не рекомендуется.

Кроме того, к каждой из CDP можно указать дополнительные опции:n Publish CRL in this location – ука-

зывает на то, что СА будет автома-тически пытаться произвести пуб-ликацию CRL в этой точке. Для изо-лированного СА эту опцию стоит устанавливать только для локаль-ной CDP;

n Include in all CRLs – активно толь-ко для LDAP CDP;

n Include in CRLs – добавляет эту CDP к атрибутам CRL, для того что-бы клиенты могли находить delta-CRL (об этом чуть ниже);

n Include in the CDP extension of issued certificates – указывает на необходимость включения этой CDP в список атрибутов выпуска-емых этим СА сертификатов;

n Publish delta CRLs to this location – для публикации delta-CRL.

Delta-CRL относится к новшест-вам, появившимся в Windows 2003 Server (и, кстати, не поддерживающим-ся клиентами ниже Windows XP). Если вы ожидаете активного использова-ния сертификатов и их частых отзы-вов, то вам нужно устанавливать бо-лее частый интервал обновления CRL. При этом сам список отзывов будет все более и более увеличиваться в разме-рах, что может затруднять его загруз-ку клиентами. В таких случаях мож-но использовать delta-CRL для мини-мизации трафика. Клиент загружа-ет сам список CRL и до истечения его срока действия загружает изменения, произошедшие в CRL после его пуб-ликации.

Таким образом, можно делать ин-тервал публикации CRL более длин-ным, а delta-CRL публиковать ча-ще. Однако это имеет смысл делать только на выпускающем СА и толь-ко при вышеназванных условиях, по-этому для данного и последующих СА везде отключаем опции, связанные с delta-CRL.

Вернемся к заданию точек распро-странения CRL. Поскольку наш СА бу-дет отключен от сети, то необходимо оставить локальную точку распростра-нения, которая идет в списке первой и по умолчанию указывает в папку C:\WINDOWS\system32\CertSrv\CertEnroll\. Обратите внимание, что для этой CDP помечена опция Publish CRL in this location. Для обеспечения доступнос-ти CRL мы оставим также LDAP-точ-ку (указав опции Include in all CRLs и Include in the CDP extension of issued certificates) и создадим новую точку,

Рисунок 3. Задание CDP на корневом СА

Page 60: 069 Системный Администратор 08 2008

58

безопасность

указывающую на общую сетевую папку в локальной сети (с опцией Include in the CDP extension of issued certificates). В качестве таковой папки введем UNC-путь к общей пап-ке, которую расположим впоследствии на нашем будущем СА уровня предприятия с именем EntCA: file://\\Ent_CA\CDP\<CAName>. Конечный вид окна задания CDP представлен на рис. 3.

Аналогичные действия проведем и для точки публика-ции сведений о доступе к СА. В этом же окне из выпада-ющего списка выше выбираем Authority Information Access (AIA) и видим аналогичный список точек публикации, толь-ко опций для каждой точки несколько меньше. Список то-чек публикации приводим в соответствие списку точек для CRL, указывая для LDAP- и FILE- точек опцию Include in the AIA extension of issued certificates. Результат представ-лен на рис. 4.

Теперь можно нажать ОК и согласиться с тем, что служ-бы сертификации должны быть перезапущены.

Однако прежде чем можно будет публиковать CRL, надо произвести отображение пространства имен Active Directory в реестр СА. Это требуется для того, чтобы указанные на-ми LDAP CDP были представлены в корректной форме. Делается это с помощью команды certutil.exe и для домена Dedicated.Root выглядит следующим образом:

Результат должен быть примерно следующим:

Только теперь можно производить публикацию CRL. Это можно сделать с помощью команды «certutil -CRL» ли-бо из оснастки Certificate Authority. Воспользуемся вторым методом, так как нам необходимо еще будет сконфигури-ровать интервал обновления CRL, а это удобнее сделать через графический интерфейс.

В оснастке Certificate Authority раскрываем узел, соот-ветствующий нашему СА, и щелкаем правой кнопкой мы-

ши на Revoked Certificates. Выбираем Properties и попадаем на вкладку CRL Publishing Parameters. Здесь мы видим настройки, касающиеся интервала об-новления CRL и delta-CRL. Поскольку это корневой СА и не ожидается слиш-ком частого отзыва сертификатов, то интервал можно сделать достаточно длинным – например, 6 месяцев.

При выборе интервала имейте в ви-ду, что вам вручную придется поме-щать каждый раз публикуемый CRL в заданные точки распространения. Если вы не сделаете этого, то сертифи-каты, выпущенные этим СА, окажутся недействительными. Сделав необхо-димые настройки, нажмите ОК.

Первый CRL мы опубликуем вруч-ную – для этого на Revoked Certificate вызываем контекс-тное меню и выбираем «All Tasks → Publish». В появившем-ся окне соглашаемся с тем, что будет выпущен новый CRL, и жмем ОК.

После этого стоит перейти в папку, указанную как ло-кальная точка публикации CRL (в нашем случае это C:\WINDOWS\system32\CertSrv\CertEnroll\), и убедиться, что там появился файл RootCA.crl. Дважды щелкаем по этому файлу, чтобы просмотреть его содержимое. Здесь нас ин-тересуют дата следующего обновления (Next Update) и да-та следующей публикации CRL (Next CRL Publish).

Обратите внимание, что эти даты не одинаковы – как ви-дим, дается время для того, чтобы обновленный CRL был опубликован в точках распространения. Кроме того, пос-леднее поле – Published CRL locations – должно соответс-твовать тому, что мы задавали при настройке CDP. А точнее, в качестве значения этого атрибута выступают те CDP, в оп-циях которых было включено Include in all CRLs (см. рис. 5). Обратите внимание на то, что в значении атрибута не долж-ны присутствовать слова DC=UnavailableConfigDN – это го-ворит о том, что не было сделано отображение пространст-ва имен AD в реестр СА.

Последнее, что надо сделать в конфигурировании СА, – это задать срок действия выдаваемых СА сертификатов. Тот срок, который указывался при установки СА, относил-ся к сроку жизни сертификата самого СА, а по умолчанию срок действия сертификатов – 1 год. Поскольку это кор-невой СА и он будет выпускать сертификат для промежу-точного СА, то фактически нам надо сейчас задать срок службы сертификата промежуточного СА. А его мы до-говаривались установить равным 10 годам. Для того что-бы воплотить это в жизнь, нужно открыть ветку реест-ра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<имя_СА> и изменить зна-чение параметра ValidityPeriodUnits, сделав его равным 10. Заодно нужно также проверить, чтобы значение парамет-ра ValidityPeriod было Years.

В следующей части статьи мы рассмотрим установ-ку промежуточного и выпускающего СА и настройку пос-леднего для работы в домене с использованием шабло-нов сертификатов.

certutil.exe –setreg ca\DSConfigDN ↵ CN=Configuration,DC=dedicated,DC=root

SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\RootCA\DSConfigDN:New Value: DSConfigDN REG_SZ = CN=Configuration,DC=dedicated,DC=rootCertUtil: -setreg command completed successfully.The CertSvc service may need to be restarted for changes to take effect.

Рисунок 4. Задание точек AIA Рисунок 5. Пример CRL

Page 61: 069 Системный Администратор 08 2008

Реклам

а

Page 62: 069 Системный Администратор 08 2008

60

безопасность

Основная частьНесмотря на то что целью известного проекта OpenBSD является разработ-ка операционной системы (ОС), кото-рая характеризуется высокими пока-зателями чистоты кода, безопаснос-ти, стандартизации и портируемос-ти и, как свидетельствует статисти-

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

(http://www.openbsd.org/errata.html) официального сайта проекта, где спис-ки выявленных ошибок сгруппированы согласно релизам, в которых они бы-ли выявлены: например, errata43.html – ошибки, выявленные после выхода ре-лиза 4.3. Страничка также содержит краткое описание, характеристику (бе-

OpenBSD

Имидж – ничто, безопасность – все!

Максим Гришков

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

Page 63: 069 Системный Администратор 08 2008

61№8, август 2008

безопасность

зопасность или надежность) и ссылку на заплатку (патч), с помощью кото-рой можно избавиться от уязвимости. На момент написания статьи странич-ка релиза 4.3 содержала 5 записей.

Согласно терминологии, исполь-зуемой внутри проекта, ваша систе-ма может находиться в одном из 3 воз-можных состояний: релиз (-release), стабильное (-stable) или текущее (-current). Разница между этими со-стояниями заключается в том, что ре-лиз – это версия, выпускаемая проек-том согласно графику релизов каждые 6 месяцев на CD, стабильная система – это релиз с наложенными на него пат-чами на текущий момент времени. Пат-чи представляют собой порции исход-ного кода, содержащие очень важные исправления, сделанные и опробован-ные в текущей ветке. Подразумевает-ся, что для того, чтобы обладать на-илучшими показателями стабильнос-ти и надежности ОС, OpenBSD долж-на быть приведена к стабильному со-стоянию. При этом следует учитывать, что поддержка новых устройств и кар-динально новые свойства, реализо-ванные в текущей ветке не попадают в стабильную. Текущая ветка в свою очередь предназначена в основном для разработчиков и является поли-гоном для испытания нововведений. Ни один здравомыслящий системный администратор не станет обновлять ОС ответственного сервера до теку-щего состояния.

Существуют два способа приве-дения системы к стабильному состоя-нию. Первый – это наложение патчей вручную, второй – использование ста-бильной (патчевой) ветки исходных ко-дов системы, которая содержит все ис-правления для обновления системы. Следует учитывать тот факт, что ис-ходный код стабильной ветки кроме обновлений, вышедших в виде патчей, также содержит очевидные и простые исправления, которые были признаны недостойными включения в список пат-чей на страничке «Ошибок». Разница между способами заключается в том, что в случае наложения патчей будут закрыты только те ошибки, которые были признаны критичными, в следс-твие этого существенно сокращается время, затрачиваемое на исправле-ние ошибок (даже в случае пересбор-ки ядра). В свою очередь обновление

исходных кодов с помощью стабильной (патчевой) ветки с последующей пере-сборкой ядра и встроенного програм-много обеспечения (userland) – более длительный, но и более автоматизиро-ванный (если синхронизацию перело-жить на могучие плечи cron) процесс. Он также позволяет исправить неза-крытые патчами ошибки.

Перед тем как приступить непо-средственно к наложению патчей или синхронизации исходного кода, необ-ходимо его (код) заполучить. Самый простой способ загрузить его по ftp (ftp://ftp.openbsd.org/pub/OpenBSD/4.3) или скопировать с CD (обычно это тре-тий CD в стандартной поставке). Ис-ходный код, хранящийся на ftp-серве-ре, разделен на несколько файлов:n src.tar.gz – содержит исходный код

набора встроенного ПО;n sys.tar.gz – содержит исходный код

ядра;n xenocara.tar.gz – содержит исход-

ный код модифицированной сис-темы X-Window X.org или Xenocara, в интерпретации OpenBSD).

После загрузки необходимо разар-хивировать src.tar.gz и sys.tar.gz в ди-ректорию /usr/src, а xenocara.tar.gz в – /usr.

После извлечения исходников мож-но переходить к делу. Начнем с пат-чей.

Накладываем заплаткиПатчи можно скачать как в виде отдель-ных файлов (001_openssh.patch и т. д.), так и единым архивом (4.3.tar.gz). Сде-лать это можно или с упомянутой выше странички errata43.html или непосред-ственно по ftp (ftp://ftp.openbsd.org/pub/OpenBSD/4.3).

После скачивания необходимо рас-паковать архив, содержащий патчи в какую-нибудь директорию, напри-мер /usr/src/patches.

Как видно из вывода архивато-ра, в архиве находятся 5 патчей. Все они расположены в каталоге common, что свидетельствует об их платформо-независимости. Назначение патча лег-ко узнать, используя команду head.

Из вывода следует, что патч пред-назначен для исправления исходно-го кода элемента встроенного ПО (в частности OpenSSH) и потребует пересборки толького этого элемента. Тут же приведены инструкции по нало-жению патча (первый абзац) и после-дующей пересборке приложения (вто-рой абзац).

Этот патч предназначен для ис-правления исходного кода Xenocara, он также потребует пересборки толь-ко этого элемента.

Комментарий «Then build and install a new kernel» указывает на то, что патч предназначен для исправления исход-ного кода ядра и потребует его даль-нейшей пересборки (см. далее).

$ cd /usr/src# tar -xvzf /usr/sys.tar.gz# tar -xvzf /usr/src.tar.gz$ cd /usr# tar -xvzf /usr/xenocara.tar.gz

# mkdir /usr/src/patches$ cd /usr/src/patches# tar -xvzf /usr/4.3.tar.gz

4.3/common/001_openssh.patch

4.3/common/002_openssh2.patch

$ cd /usr/src/patches/4.3/common$ head -n 11 001_openssh.patch

Apply by doing: cd /usr/src patch -p0 < 001_openssh.patch

And then rebuild and install file: cd usr.bin/ssh make obj make cleandir make depend make make install

$ head 003_xorg.patch

Apply by doing: cd /usr/xenocara #Assuming Xenocara is in /usr/xenocara patch -p0 < 003_xorg.patch

And then rebuild and install the X server: cd xserver make -f Makefile.bsd-wrapper build

Index: xserver/Xext/security.c

$ head 005_pcb.patch

Apply by doing:

cd /usr/src

patch -p0 < 005_pcb.patch

Then build and install a new kernel.

4.3/common/003_xorg.patch

4.3/common/004_bind.patch

4.3/common/005_pcb.patch

Page 64: 069 Системный Администратор 08 2008

62

безопасность

На этом все премудрости работы с патчами, собственно, и заканчиваются. После просмотра заголовка патча (коли-чество строк, выводимых командой head, может быть уве-личено при помощи параметра -n), остается только, следуя полученым инструкциям, пропатчить (команда patch) и пе-ресобрать приложение или ядро.

Следуем стабильной (патчевой) ветке исходного кодаПоскольку разработчики OpenBSD используют для управ-ления исходным кодом систему контроля версий CVS, её можно использовать для получения и обновления локаль-ной копии дерева исходных кодов, находящейся в директо-рии /usr/src. Для начала необходимо выбрать один из ано-нимных CVS (AnonCVS) серверов проекта. Это можно сде-лать на страничке http://www.openbsd.org/anoncvs.html офи-циального сайта. После выбора сервера можно приступать к обновлению дерева исходных кодов.

В данном примере был использован анонимный CVS-сер-вер anoncvs.de.openbsd.org. Параметр up команды cvs обес-печивает обновление локальной копии дерева исходных ко-дов. Флаг -r позволяет выбрать версию (ревизию) исходного кода для обновления. Флаги -Pd позволяют cvs во время об-новления удалять пустые директории дерева и создавать но-вые (без этих флагов обновление закончится неудачей).

Команду cvs также можно использовать для получе-ния дерева исходных кодов и дерева портов, указав оп-цию checkout и ветвь, которую нужно скачать (src, xenokara, ports). Пример для скачивания исходных кодов ядра и встро-енного ПО.

После того как наложены заплатки, либо дерево ис-ходных кодов синхронизировано со стабильной (патче-вой) веткой, можно пересобирать ядро и встроенное ПО (userland).

Пересобираем ядро и встроенное ПОСборка ядра происходит с параметрами, которые хранятся в файле конфигурации ядра. Обычно этот файл находится в директории conf по адресу /usr/src/sys/arch/<платформа>/conf. Файл конфигурации ядра, поставляемый с дистрибу-тивом, по умолчанию носит название GENERIC. Разработ-чики OpenBSD уверяют, что этот конфигурационный файл подойдет для большинства случаев, за исключением сис-тем с нестандартным оборудованием, очень маленьким обьемом оперативной памяти, а также в случае, если вас интересует активация экспериментальных или выключен-ных по умолчанию функций.

Перед сборкой ядра необходимо сделать резервную ко-пию работающего в данный момент ядра:

Непосредственно процесс пересборки ядра предель-но прост:

Правда, стоит отметить, что он длится довольно долго: от 30-40 минут на современной технике до суток на рари-тетном железе (которое частенько используется для уста-новки OpenBSD). После завершения сборки ядра необхо-димо перезагрузить компьютер для загрузки нового ядра. Если по какой-то причине собранное ядро не может быть загружено, процесс загрузки будет остановлен и появится приглашение загрузчика: «boot>».

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

Если пересборка ядра завершилась успешно, можно приступать к пересборке встроенного ПО. Следует быть особо внимательным при выполнении команды rm с фла-гами -rf от пользователя root, ошибочно указав директорию (не /usr/obj/*), можно в лучшем случае лишиться копии де-рева исходных кодов, в худшем – системы.

По сравнению со сборкой ядра процесс сборки встро-енного ПО еще более длительный (на слабой машине мо-жет длиться более суток). После завершения пересбор-ки встроенного ПО систему можно считать обновленной до стабильного состояния.

ЗаключениеКоманда разработчиков ОС OpenBSD прилагает много уси-лий для своевременного и оперативного исправления вы-явленных в процессе эксплуатации ПО ошибок. Разраба-тываемая ими система включает достаточный и подробно документированный инструментарий для поддержания бе-зопасности на высоком уровне.

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

1. OpenBSD 4.3 release errata & patch list – http://www.openbsd.org/errata43.html.

2. Documentation and Frequently Asked Questions – http://www.openbsd.org/faq.

3. Anonymous CVS – http://www.openbsd.org/anoncvs.html.4. Following -stable (the «Patch branch») – http://www.openbsd.org/

stable.html.5. Patching and Kernel Building – http://www.openbsd101.com/

patching.html.

$ cd /usr/src# export [email protected]:/cvs# cvs -d$CVSROOT up -rOPENBSD_4_3 -Pd

$ cd /usr# export [email protected]:/cvs# cvs -d$CVSROOT checkout -rOPENBSD_4_3 -P src

# cp /bsd /bsd.old

$ cd /usr/src/sys/arch/i386/conf# config GENERIC# cd ../compile/GENERIC# make clean && make depend && make# make install

# rm -rf /usr/obj/*$ cd /usr/src# make obj# cd /usr/src/etc && env DESTDIR=/ make distrib-dirs# cd /usr/src# make build

boot> bsd.old

Page 65: 069 Системный Администратор 08 2008

63№8, август 2008

bugtraq

Обход аутентификации в IBM WebSphere Portal ServerПрограмма: IBM WebSphere Portal Server версии 5.1.0.0, 5.1.0.1, 5.1.0.2, 5.1.0.3, 5.1.0.4, 5.1.0.5, 6.0.0.0, 6.0.0.1, 6.0.1.0, 6.0.1.1, 6.0.1.3 и 6.1.0.0.Опасность: Средняя.Описание: Уязвимость существует из-за того, что админис-тративный интерфейс недостаточно ограничивает доступ к некоторым страницам. Удаленный пользователь может с помощью специально сформированного HTTP-запроса произвести некоторые административные действия.URL производителя: www-306.ibm.com/software/genservers/portal.Решение: Установите последнюю версию 6.0.1.4 с сайта производителя.

Обход ограничений безопасности в Symantec Veritas Storage FoundationПрограмма: Symantec Veritas Storage Foundation версии 5.0, 5.0 RP1a и 5.1.Опасность: Средняя.Описание: Уязвимость существует из-за того, что кон-соль управления позволяет NULL NTLMSSP-аутентифи-кацию. Удаленный пользователь может обойти встроен-ный механизм аутентификации и добавит, удалить или из-менить задачи по расписанию и скомпрометировать целе-вую систему.URL производителя: www.symantec.com/enterprise/products/overview.jsp?pcid=1020&pvid=203_1.Решение: Установите исправление с сайта производителя.

Несколько уязвимостей в продуктах CAПрограмма: CA Host-Based Intrusion Prevention System (CA HIPS) 8.x; CA Internet Security Suite 2007; CA Internet Security Suite Plus 2008; CA Personal Firewall 2007; CA Personal Firewall 2008.Опасность: Средняя.Описание: 1. Уязвимость существует из-за ошибки при об-работке IOCTL-запросов в драйвере ядра kmxfw.sys. Локаль-ный пользователь может с помощью специально сформиро-ванного IOCTL-запроса аварийно завершить работу систе-мы или выполнить произвольный код с привилегиями учет-ной записи SYSTEM.

2. Уязвимость существует из-за неизвестной ошибки в драйвере kmxfw.sys. Удаленный пользователь может про-извести DoS-атаку.URL производителя: www.ca.com.Решение: Установите исправление с сайта производителя.Множественные уязвимости в Ruby

Программа: Ruby 1.8.5 и более ранние версии; Ruby 1.8.6-p286 и более ранние версии; Ruby 1.8.7-p71 и более ран-ние версии.Опасность: Средняя.Описание: 1. Множественные ошибки обнаружены в ре-ализации ограничений безопасных уровней (safe level restrictions). Удаленный пользователь может вызвать функ-цию untrace_var(), произвести операции syslog и изменить $PROGRAM_NAME на безопасном уровне 4 или вызвать небезопасные методы на безопасных уровнях 1-3.

2. Уязвимость существует из-за использования регу-лярных выражений в WEBrick::HTTPUtils.split_header_value(). Удаленный пользователь может с помощью специально сформированного HTTP-запроса потребить все доступные ресурсы процессора на системе.

3. Уязвимость существует из-за ошибки в DL, кото-рая позволяет удаленному пользователю обойти ограни-чения безопасности и выполнить потенциально опасные функции.

4. Уязвимость существует из-за того, что resolv.rb ис-пользует предсказуемый номер порта для DNS-запроса. Удаленный пользователь может отравить DNS-кэш.URL производителя: www.ruby-lang.org/en.Решение: Установите последнюю версию с сайта произ-водителя.

Множественные уязвимости в PythonПрограмма: Python версии 2.4.x, 2.5.x.Опасность: Средняя.Описание: 1. Целочисленные переполнения обнару-жены в основных модулях stringobject, unicodeobject, bufferobject, longobject, tupleobject, stropmodule, gcmodule и mmapmodule.

2. Целочисленное переполнение обнаружено в hashlib-модуле, что может привести к ненадежным криптографи-ческим результатам.

3. Целочисленное переполнение обнаружено при обра-ботке Unicode-строк. Злоумышленник может вызвать пере-полнение буфера на 32-битной системе.

4. Целочисленное переполнение обнаружено в функции PyOS_vsnprintf() на архитектурах, которые не поддержива-ют функцию vsnprintf().

5. Целочисленное переполнение обнаружено в функции PyOS_vsnprintf() при обработке строк нулевой длины. Зло-умышленник может вызвать повреждение памяти.URL производителя: python.org.Решение: Установите исправление из SVN-репозитория производителя.

Выполнение произвольных команд в Sun SolarisПрограмма: Sun Solaris 8, 9, 10.Опасность: Средняя.Описание: Уязвимость существует из-за неизвестной ошибки в сетевой утилите snoop(1M), относящейся к отоб-ражению SMB-трафика. Удаленный пользователь может с помощью специально сформированного пакета, прочи-танного или перехваченного приложением через опцию -i, выполнить произвольные команды на системе с привиле-гиями пользователя snoop или nobody. Для успешной экс-плуатации уязвимости требуется, чтобы приложение было запущено без опции -o.URL производителя: www.sun.comРешение: Установите исправление с сайта производителя.

Составил Александр Антипов

Page 66: 069 Системный Администратор 08 2008

64

безопасность

Настраиваем TLS/SASL-шифрование и аутентификацию в MTA Sendmail

Андрей Маркелов

При помощи механизма STARTTLS и сертификатов мы попробуем настроить взаимную аутентификацию и шифрование пересылаемой почты между двумя почтовыми серверами с MTA Sendmail. Также при помощи TLS защитим отправляемую клиентами на сервер почту и настроим почтовый релей для пересылки корреспонденции только тех пользователей, которые предъявят сертификат, выданный нашим центром сертификации (CA).

Page 67: 069 Системный Администратор 08 2008

65№8, август 2008

безопасность

STARTTLS (RFC 2487) является расширением прото-кола SMTP. STARTTLS в первую очередь предназна-чен для поддержки TLS-шифрования и аутентифи-

кации между двумя почтовыми серверами. Но как вы уви-дите далее, он с успехом может применяться и почтовы-ми клиентами.

MTA Sendmail в нашей тестовой конфигурации будет работать на двух серверах Red Hat Enterprise Linux 5.1. Вы-бор не является принципиальным – вы можете использо-вать ваш любимый или вовсе установить Sendmail в дру-гой операционной системе, например Solaris. Единствен-ное, с чем вы можете столкнуться, – отличие поставляе-мого по умолчанию в вашем дистрибутиве конфигураци-онного файла sendmail.mc от использующегося в Red Hat Enterprise Linux/Fedora.

Также предполагаем, что у нас есть настроенный центр сертификации. Для простоты будем использовать OpenSSL, но, естественно, это непринципиально. Один из наших тес-товых серверов прекрасно справится с этой ролью. Конечно, в реальной работе вы не должны разворачивать CA и пуб-личный почтовый сервер на одной машине.

В качестве «компенсации» засилья Open Source-инстру-ментов в роли MUA используем штатную в Windows Vista программу Windows Mail.

Базовые настройки и взаимодействие двух почтовых серверовНачнем с сертификата для MTA. Необходимо отметить, что STARTTLS в данном случае защищает только трафик между двумя соответствующим образом настроенными почтовыми серверами. Нет никакой гарантии при отправ-ке письма «во вне», что все релеи, через которые прой-дет письмо, используют STARTTLS. Никогда не надо за-бывать, что отправка письма через Интернет аналогична отправке почтовой карточки по обыкновенной почте. Текст вашего письма может быть прочитан во всех точках, че-рез которые пересылается письмо. Для гарантированной защиты электронной почты между отправителем и полу-чателем необходимо использовать шифрование при по-мощи S/MIME или GnuPG/PGP.

Генерируем для нашего сервера приватный ключ и со-здаем запрос в центр сертификации:

После чего необходимо переслать запрос на выда-чу сертификата в центр сертификации. Администратор центра сертификации выпускает на основе запроса сер-тификат:

Копируем полученный сертификат на почтовый сер-вер и кладем рядом с ключом в директорию /etc/pki/tls/certs. Права на оба файла должны быть выставлены 600 или 400.

Далее начинаем править конфигурационный файл /etc/mail/sendmail.mc. Редактируем пути и убираем коммента-рии со строк:

и добавляем две новых строки:

Для проверки наших настроек зайдем на 25-й порт сер-вера при помощи команды telnet:

Повторяем те же действия по настройке (включая вы-пуск второго сертификата) для второго сервера. В нашей ситуации оба сервера используют один и тот же удостове-ряющий центр. Если используются разные CA, то MTA бу-дут необходимы корневые сертификаты обоих.

Теперь если мы попробуем на одном из серверов локаль-но запустить MUA, например mutt, и отправить сообщение пользователю второго сервера, то на первом сервере в /var/log/maillog увидим примерно такие сообщения:

# openssl genrsa 1024 > sendmail.key# openssl req -new -key sendmail.key -out sendmail.csr

# openssl ca -in sendmail.csr -out sendmail.crt

# Директория с сертификатамиdefine(`confCACERT_PATH', `/etc/pki/tls/certs')dnl

# Сертификат CA, выдавшего сертификат нашему серверу. # Не забудьте его также скопировать в указанную директориюdefine(`confCACERT', `/etc/pki/CA/cacert.pem')dnl

# Сертификат нашего сервера, используемый во время # приема почтыdefine(`confSERVER_CERT', ↵ `/etc/pki/tls/certs/sendmail.crt')dnl

# Приватный ключ нашего сервераdefine(`confSERVER_KEY', ↵ `/etc/pki/tls/certs/sendmail.key')dnl

# Сертификат и приватный ключ нашего сервера, используемый # для отправления почты на другой сервер. Для простоты # используем те же, файлы, что и в первом случаеdefine(`confSERVER_CERT', ↵ `/etc/pki/tls/certs/sendmail.crt')dnldefine(`confSERVER_KEY', ↵ `/etc/pki/tls/certs/sendmail.key')dnl

# openssl ca -in sendmail.csr -out sendmail.crt

Trying 192.168.0.17...Connected to station17.example.com (192.168.0.17).Escape character is '^]'.220 station17.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 31 Jul 2008 14:21:33 +0400

EHLO station18.example.com

250-station17.example.com Hello station18.example.com [192.168.0.18], pleased to meet you250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-SIZE250-DSN250-ETRN250-STARTTLS250-DELIVERBY250 HELP

STARTTLS

220 2.0.0 Ready to start TLS

Jul 31 01:07:21 station18 sendmail[9558]: STARTTLS=client, relay=station17.example.com., version=TLSv1/SSLv3, verify=OK, cipher=DHE-RSA-AES256-SHA, bits=256/256Jul 31 01:07:21 station18 sendmail[9558]: m6UL7Lpc009556: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120467, relay=station17.example.com. [192.168.0.17], dsn=2.0.0, stat=Sent (m6UL7LpK009193 Message accepted for delivery)

QUIT

Page 68: 069 Системный Администратор 08 2008

66

безопасность

А на принимающем соответственно:

Как видно из журнала, серверы аутентифицирова-ли друг друга при помощи сертификатов, выданных од-ним и тем же CA, и при пересылке письма информация была зашифрована. Данный факт можно проверить, за-пустив на одном из тестовых серверов утилиту wireshark или tcpdump.

Настройка TLS для клиентаВ текущем состоянии Sendmail готов работать с клиентом, принимая от него почту в зашифрованном виде, однако ни-какой проверки клиента при помощи механизма TLS не ис-пользуется. Зато клиенту не нужны сертификаты, и всего лишь достаточно поставить соответствующую галку – «ис-пользовать защищенное соединение, TLS».

В журнале почтового сервера это выглядит пример-но так:

Как видно, напротив verify мы видим значение «NO». Попробуем «закрутить гайки».

Сгенерируем сертификат для пользователя. Раз мы на-чали работать с OpenSSL, для упрощения задачи предполо-жим, что наш пользователь также воспользуется этой ути-литой. Естественно, какими средствами будет сгенериро-ван запрос в центр сертификации, нам не важно. В «бое-вой» среде скорее всего пользователь воспользуется ка-ким-либо веб-интерфейсом.

Итак, от лица пользователя:

И от лица администратора CA:

Далее необходимо «упаковать» ключ и сертификат в формат PKCS#12:

«Скармливаем» персональный сертификат и серти-фикат CA выбранному MUA, в нашем случае программе Windows Mail.

А на сервере остается прописать, кому разрешена пе-ресылка почты через наш сервер:

В данном случае мы разрешаем пересылку только об-ладателям сертификатов, выданных нашим CA.

Параметры CERTISSUER и CERTSUBJECT мы запол-няем значениями, взятыми из полей Issuer и Subject сер-тификата CA:

При этом ряд символов, в том числе «{», «<», «>», «(», «)», «"», «+», «}», и пробел заменяются на шестнадцатерич-ные ASCII-коды, предваряемые символом «плюс». Соот-ветствующие коды можно посмотреть в странице руко-водства:

Успешная попытка обладателя сертификата исполь-зовать наш почтовый сервер в качестве релея в журна-ле /var/log/messages будет выглядеть примерно следую-щим образом:

Если вы увидели подобные сообщения в журнале, зна-чит наша цель достигнута. Убедиться в том, что соответс-твующий сеанс защищен, вы можете при помощи утили-ты wireshark.

Таким образом, как видите, при всей относительной сложности настройки MTA Sendmail, механизм STARTTLS включается достаточно просто.

Удачи.

# openssl genrsa 1024 > andrey.key# openssl req -new -key andrey.key -out andrey.csr

# openssl ca -in andrey.csr -out andrey.crt

# cat andrey.key andrey.crt > andrey.pem# openssl pkcs12 -export -in andrey.pem ↵ -out testusercert.p12 -name "Andrey's Personal cert"

# cat /etc/mail/access

Connect:localhost.localdomain RELAYConnect:localhost RELAYConnect:127.0.0.1 RELAYCERTISSUER:/C=GB/ST=Berkshire/L=Newbury/O=My+20Company+20Ltd/CN=Station+2018+20CA RELAYCERTSUBJECT:/C=GB/ST=Berkshire/L=Newbury/O=My+20Company+20Ltd/CN=Station+2018+20CA RELAY

# openssl x509 -in cacert.pem -noout -subject -issuer

subject= /C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/CN=Station 18 CAissuer= /C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/CN=Station 18 CA

# man ascii

Jul 31 02:10:31 station17 sendmail[9700]: STARTTLS=server, relay=station51.example.com [192.168.0.51], version=TLSv1/SSLv3, verify=OK, cipher=AES128-SHA, bits=128/128Jul 31 02:10:31 station17 sendmail[9700]: m6UMAVTH009700: from=<[email protected]>, size=1128, class=0, nrcpts=1, msgid=<57A621A4BFCB411F9ACDE6A1D9CE3E62@AndreyPC>, proto=ESMTP, daemon=MTA, relay=station51.example.com [192.168.0.51]Jul 31 02:10:31 station17 sendmail[9702]: STARTTLS=client, relay=station18.example.com., version=TLSv1/SSLv3, verify=OK, cipher=DHE-RSA-AES256-SHA, bits=256/256Jul 31 02:10:31 station17 sendmail[9702]: m6UMAVTH009700: to=<[email protected]>, ctladdr=<[email protected]> (507/508), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=121128, relay=station18.example.com. [192.168.0.18], dsn=2.0.0, stat=Sent (m6UMAVR4009739 Message accepted for deliv-ery)

Jul 30 23:29:09 station17 sendmail[8228]: STARTTLS=server, relay=station51.example.com [192.168.0.51], version=TLSv1/SSLv3, verify=NO, cipher=DHE-RSA-AES256-SHA, bits=256/256Jul 30 23:29:09 station17 sendmail[8228]: m6UJT8GH008228: from=<[email protected]>, size=341, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=station51.example.com [192.168.0.51]Jul 30 23:29:09 station17 sendmail[8229]: m6UJT8GH008228: to=<[email protected]>, ctladdr=<[email protected]> (507/508), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30623, dsn=2.0.0, stat=Sent

Jul 31 01:07:21 station17 sendmail[9193]: STARTTLS=server, relay=station18.example.com [192.168.0.18], version=TLSv1/SSLv3, verify=OK, cipher=DHE-RSA-AES256-SHA, bits=256/256Jul 31 01:07:21 station17 sendmail[9193]: m6UL7LpK009193: from=<[email protected]>, size=748, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=station18.example.com [192.168.0.18]Jul 31 01:07:21 station17 sendmail[9194]: m6UL7LpK009193: to=<[email protected]>, delay=00:00:00, xde-lay=00:00:00, mailer=local, pri=31037, dsn=2.0.0, stat=Sent

Page 69: 069 Системный Администратор 08 2008

67№8, август 2008

закон есть закон

Присылайте Ваши вопросы по адресу [email protected] или оставляйте на фо-руме журнала www.samag.ru/forum.

Рубрику ведет юрист Юлия Штокало

Какова процедура изъятия компью-теров на экспертизу? (продолжение, начало см. в №7 за 2008 г.)По закону все должно происходить следующим образом.

Если проверка проводится в рам-ках уголовно-процессуального зако-нодательства, возможны два вариан-та: производство осмотра (может осу-ществляться до возбуждения уголов-ного дела) и проведение обыска (может происходить только после того, как уго-ловное дело возбуждено).

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

Процесс опечатывания фиксиру-ется в протоколе. Осмотр и изъятие должны производиться с участием двух понятых.

Что нужно сделать: ознакомиться с документами проверяющих (чтобы знать, кто к вам пришел с проверкой), узнать основания проводимой провер-ки, в случае изъятия техники прове-рить, чтобы в протоколе были указа-ны индивидуальные признаки и осо-бенности изымаемой техники (требо-вание основано на п. 3 ст. 177 УПК РФ), в случае если вы сомневаетесь в под-линности лицензии на установленное программного обеспечения, прежде чем давать показания посоветуйтесь с адвокатом. Если сотрудники фир-мы используют свою технику, то необ-ходимо запастись документами, под-тверждающими право собственности. Постановление дается на осмотр кон-кретной фирмы и ее офиса, при про-ведении осмотра обыск сотрудников, закрытых помещений не допускает-ся, на это необходимо дополнитель-ное постановление.

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

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

При осуществлении проверки ор-ганами милиции, проверка произво-дится в соответствии с законом «О ми-лиции» и Приказом МВД РФ от 2 ав-густа 2005 г. N 636, которым утверж-дена Инструкция о порядке проведе-ния сотрудниками милиции проверок и ревизий финансовой, хозяйствен-ной, предпринимательской и торго-вой деятельности. Согласно п. 4 Инс-трукции, при наличии данных о влеку-щем уголовную ответственность нару-шении законодательства, регулиру-ющего финансовую, хозяйственную, предпринимательскую и торговую де-ятельность, в целях установления ос-нований для возбуждения уголовно-го дела, начальником органа внутрен-них дел (органа милиции) или его за-местителем выносится мотивирован-ное постановление о назначении про-верки, ревизии по установленной фор-ме. В постановлении указывается сос-тав сотрудников милиции, проводящих проверку. Сотрудники милиции также вправе производить изъятие, которое оформляется в присутствии двух по-нятых протоколом и описью.

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

По результатам проверки прини-мается одно из решений: о составле-нии рапорта об обнаружении призна-ков преступления; о направлении ма-териалов проверки для рассмотрения в порядке, предусмотренном статья-ми 144 (сообщение о преступлении) и 145 (принятие решения по результатам рассмотрения заявления о преступле-

нии) УПК РФ; о возбуждении дела об административном правонарушении и рассмотрении материалов в рамках производства по делам об админист-ративных правонарушениях; о переда-че материалов по подведомственнос-ти, в том числе для решения вопроса о рассмотрении материалов в рамках производства по делам об админист-ративных правонарушениях; о завер-шении проверки в связи с неустанов-лением нарушения законодательс-тва РФ.

При проведении таких мероприя-тий следует обратить внимание, что-бы Постановление о проведении про-верки было подписано начальником районного ОВД или его заместителем, т.е. в постановлении должны быть ука-заны: должность, ФИО и стоять под-пись. Если постановление не подпи-сано, либо подписано другим лицом, вы вправе отказать в проведении про-верки, советую также написать жало-бу в прокуратуру, управление собс-твенной безопасности и вышестоя-щий орган.

В постановлении должны быть ука-заны сотрудники, которые могут учас-твовать в проводимых мероприятиях, и вы можете проверить их соответс-твие; при проведении изъятия компью-терной техники необходимо проверить наличие протокола изъятия и описи, в описи должны быть подробно ука-заны изымаемые предметы.

Копии всех составляемых доку-ментов должны быть предоставлены организации, в которой проводилась проверка.

Page 70: 069 Системный Администратор 08 2008

68

программирование

Многие Java-приложения постав-ляются в виде одного или не-скольких jar-файлов (Java

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

Такой подход позволяет:n подписывать содержимое jar-фай-

ла, повышая таким образом уро-вень безопасности;

n сокращать время загрузки аппле-тов за счет отсутствия необходи-мости открытия нового соедине-ния для каждого файла;

n сокращать объем приложения;n упростить процесс создания биб-

лиотеки;n осуществлять контроль версий.

Полноценно работать с техноло-гией JAR можно как с помощью ути-литы jar, входящей в состав JDK (Java Development Kit), так и с использовани-ем классов JAR API.

Первый способ распространен пов-семестно, в то время как второй, за-частую незаслуженно, обделен вни-манием и, как показывает практика, напрасно – во многих случаях это мо-жет существенно облегчить жизнь раз-

работчика. Именно поэтому в данной статье будут описаны несколько спо-собов применения JAR API для вызо-ва произвольных методов из jar-фай-ла, записи и чтения атрибутов мани-феста. (Манифест – (устар.) торжес-твенное письменное обращение вер-ховной власти к народу в связи с важ-ным политическим событием, торжест-венной датой и т. д. (Толковый словарь русского языка).

Утилита jarПрежде всего следует уделить неко-торое внимание утилите jar (http://java.sun.com/javase/6/docs/technotes/tools/

Java:

торжественное обращение с jar и атрибутами MANIFEST.MF

Алексей Саенко

Java-приложения гораздо удобнее собирать в один jar-файл, нежели хранить сложную структуру нескольких тысяч файлов. Однако плюсы использования jar-файлов этим удобством не ограничиваются, иногда может возникнуть необходимость передавать параметры из манифеста.

Page 71: 069 Системный Администратор 08 2008

69№8, август 2008

программирование

solaris/jar.html). Это консольное при-ложение, запускаемое с набором па-раметров.

Примеры вызова утилиты:

MANIFEST.MFJAR File Specification (http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html), позволяет расположить в ар-хиве file.jar только один манифест с до-полнительной служебной информаци-ей META-INF/MANIFEST.MF, представ-ляющий собой текстовый файл в ко-дировке UTF-8. Если он не был задан при создании jar-файла, используется манифест, который по умолчанию со-держит информацию о своей версии и JDK, в которой был создан конкрет-ный jar-файл:

Условно содержимое можно раз-делить на главную группу (содержит определенные стан-дартами атрибуты, некоторые из них приведены в табли-це 1) и индивидуальную группу (состав которой определя-ется произвольно).

Имена произвольных атрибутов могут содержать только цифры, строчные и заглавные буквы латинского алфавита и знак «_», а по длине существует ограничение – 70 симво-лов. К значению атрибута никаких требований, кроме эле-ментарной логики, не предъявляется.

Более подробно структуру и состав JAR и META-INF/MANIFEST.MF в рамках этого текста мы затрагивать не бу-дем по той простой причине, что любой желающий может прочесть более подробно cпецификацию JAR.

Использование JAR APIВ последней на текущий момент Java 1.6 к JAR API отно-сятся классы пакета java.util.jar, а также классы java.net.JarURLConnection и java.net.URLClassLoader. Ограничимся рассмотрением наиболее используемых классов (см. таб-лицу 2).

Запуск методов классаПрежде всего рассмотрим пример, который будет запус-кать метод public static void main(String[] args) из произволь-ного класса в jar-файле. Предположим, что у нас есть некий файл file.jar, который содержит класс pkg.Main:

MANIFEST.MF архива имеет следующий вид:

Вначале необходимо получить URL по имени файла:

Сам вызов осуществляется следующим образом:

// Создание нового jar-файлаjar cf file.jar список_файлов

// Просмотр содержимого архиваjar tf file.jar

// Извлечение содержимого из jar-файлаjar xf file.jar

Атрибут Описание

Manifest-Version Номер версии файла-манифеста. Определяется спецификацией как регулярное выражение следующего вида: цифра+{.цифра+}*

Created-By Версия и поставщик платформы Java, с помощью которой был создан манифест. Автоматически генерируется утилитой jar

Signature-Version Версия подписи jar-файла. Определяется так же, как и Manifest-Version

Class-Path Относительные указатели ресурсов (URL) для всех используемых дополнительных классов и библиотек

Main-Class Относительный путь к главному классу приложения, который должен содержать точку входа – метод main(String[] args). Значение атрибута не должно содержать расширение .class. Атрибут определяется для автономных настольных приложений, которые собраны в выполняемые jar-файлы, которые могут быть запущены виртуальной машиной Java напрямую командой: java -jar file.jar

Таблица 1. Атрибуты главной группы манифеста

Таблица 2. Наиболее используемые классы в JAR API

Полное название класса Описание

java.util.jar.Attributes Таблица соответствий между именем атрибута и его значением

java.util.jar.Attributes.Name Перечисление в виде констант всех имен атрибутов главной группы

java.util.jar.JarEntry Класс описывает элемент jar-файла, например, файл с расширением .class

java.util.jar.JarFile Наследник класса java.util.zip.ZipFile с поддержкой манифеста. Используется для чтения содержимого jar-файла

java.util.jar.JarInputStream Наследник класса java.util.zip.ZipInputStream с поддержкой манифеста. Используется для чтения содержимого jar-файла из любого входящего потока

java.util.jar.JarOutputStream Наследник класса java.util.zip.ZipOutputStream с поддержкой записи манифеста. Используется для записи содержимого jar-файла в любой исходящий поток

java.util.jar.Manifest Класс используется для работы с манифестом и его атрибутами

java.net.JarURLConnection Соединение с jar-файлом или его элементом с помощью указателя ресурсов вида: ar:<url_к_jar_файлу >!/{элемент_jar_файла}, например: jar:http://www.site.org/folder/file.jar!/org/site/Clazz.class

java.net.URLClassLoader Используется для загрузки классов и ресурсов из classpath (может определяться, к примеру, атрибутом манифеста Class-Path)

URL fileUrl = new File("file.jar").toURL();URL url = new URL("jar", "", fileUrl + "!/");

public static final String MAIN_METHOD = "main";public void runMainMethod(String className) throws ↵ Exception { String[] args = new String[1]; Class clazz; Method mainMethod; // Создадим ClassLoader URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { url }); // Загрузка класса класслоадером clazz = urlClassLoader.loadClass(className); // Получение main-метода и проверка, является ли он // точкой входа mainMethod = clazz.getMethod(MAIN_METHOD, ↵ args.getClass()); mainMethod.setAccessible(true); int mods = mainMethod.getModifiers(); if (mainMethod.getReturnType() != void.class || !Modifier.isStatic(mods) || ↵ !Modifier.isPublic(mods)) { throw new NoSuchMethodException(MAIN_METHOD);

Manifest-Version: 1.0Created-By: 1.6.0 (Sun Microsystems Inc.)

Manifest-Version: 1.0Created-By: 1.6.0_03-b05 (Sun Microsystems Inc.)Main-Class: pkg.Main

package pkg;

public class Main {

public static void main(String[] args) { System.out.println("main(): запущен"); }}

Page 72: 069 Системный Администратор 08 2008

70

программирование

Теперь попробуем задействовать JAR API для решения несколько усложненной задачи – теперь необходимо запус-тить метод main() главного класса jar-файла. Для этого нам надо лишь вызвать уже имеющийся метод runMainMethod() с именем требуемого класса, которое можно получить из манифеста по имени атрибута Main-Class:

После вызова метода runMainMethod() в консоли поя-вится надпись:

Генерация манифеста с атрибутамиПосле того как мы успешно запустили метод main() глав-ного класса jar-файла, попробуем поработать с атрибу-тами манифеста. Начнем с создания манифеста, а затем попробуем прочитать записанные атрибуты. Итак, класс JarAttributeWriter будет генерировать все атрибуты:

В результате файл манифеста будет содержать:

Чтение атрибутов из манифестаПолучившийся файл можно использовать в качестве мани-феста для jar-архива – это довольно просто, поэтому пред-положим, что этот манифест уже лежит в jar-файле и тре-буется считать из него все атрибуты или только некоторые. Эту работу будет выполнять класс JarAttributeReader:

В результате в консоли появится запись следующе-го вида:

ЗаключениеСледует отметить, что JAR API предоставляют довольно мощные средства для работы с JAR вообще и MANIFEST.MF, в частности, которые отнюдь не ограничиваются приве-денными выше примерами. Ситуаций, когда правильное использования манифеста может существенно облегчить процесс отладки и/или распространения приложений, до-вольно много. Например, добавление версии приложения в качестве атрибута MANIFEST.MF позволит точно опре-делить номер сборки приложения. Иными словами, в об-щем случае, в манифест можно записать различные па-раметры для последующего их использования при запус-ке приложения.

} else { // Запуск метода с объектом, у которого // надо выполнить метод, и параметрами. // null показывает, что метод статический mainMethod.invoke(null, args); }}

private String getMainClassName() throws IOException { JarURLConnection connection = ↵ (JarURLConnection) url.openConnection(); Attributes attributes = ↵ connection.getMainAttributes(); return attributes.getValue(Attributes.Name.MAIN_CLASS);}

main(): запущен

import java.io.ByteArrayInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.jar.Manifest;

public class JarAttributeWriter {private static final String LINE_TEMPLATE = "%s: %s\n";

// Метод генерирует текстовый файл – манифест с именем // filenamepublic void generateManifest(String filename) { StringBuffer buf = new StringBuffer(); buf.append(getLine("Manifest-Version", "1.0")); buf.append(getLine("Created-By", ↵ this.getClass().getName())); buf.append(getLine("Attribute_1", "Value_1")); buf.append(getLine("Attribute_2", "Value_2")); try { InputStream inputStream = ↵ new ByteArrayInputStream ↵ (buf.toString().getBytes("UTF-

8")); Manifest manifest = ↵ new Manifest(inputStream); OutputStream outputStream = ↵ new FileOutputStream(filename); manifest.write(outputStream); } catch (IOException e) { e.printStackTrace(); }}

// Метод возвращает одну строку манифеста. Метод format() - // аналог printf в C – осуществляет форматированный выводprivate String getLine(String attributeName, ↵ String attributeValue) { return String.format(LINE_TEMPLATE, attributeName, ↵ attributeValue);}}

Manifest-Version: 1.0Created-By: JarAttributeWriterAttribute_1: Value_1Attribute_2: Value_2

import java.io.IOException;import java.util.jar.Attributes;import java.util.jar.JarFile;

public class JarAttributeReader { private static final String OUTPUT_TEMPLATE = "%s=%s";

// Метод считывает все атрибуты из jar-файла filename Attributes getAllAttributes(String filename) throws ↵ IOException { JarFile jarFile; Attributes attributes;

jarFile = new JarFile(filename); attributes = jarFile.getManifest(). ↵ getMainAttributes(); return attributes;}

// Метод печатает в консоли атрибуты со значениями void printAllAttributesWithValues(String filename) { try { Attributes attributes = ↵ getAllAttributes(filename); for (Object o : attributes.keySet()) { System.out.println ↵ (String.format ↵ (OUTPUT_TEMPLATE, ↵ o, attributes.getValue ↵ (o.toString()))); } } catch (IOException e) { e.printStackTrace(); } }

}

Manifest-Version=1.0Created-By=JarAttributeWriterAttribute_1=Value_1Attribute_2=Value_2

Page 73: 069 Системный Администратор 08 2008

71№8, август 2008

bugtraq

Отказ в обслуживании в Sun Java System Web Proxy ServerПрограмма: Sun Java System Web Proxy Server 4.x.Опасность: Средняя.Описание: Уязвимость существует из-за неизвестной ошибки в FTP-подсистеме. Удаленный пользователь может запретить прокси-серверу принимать новые подключения.URL производителя: www.sun.com/software/products/web_proxy/home_web_proxy.xml.Решение: Установите исправление с сайта производителя.

Несколько уязвимостей в Apache TomcatПрограмма: Apache Tomcat 4.1.37 и более ранние вер-сии; Apache Tomcat 5.5.26 и более ранние версии; Apache Tomcat 6.0.16 и более ранние версии.Опасность: Средняя.Описание: 1. Уязвимость существует из-за недостаточ-ной обработки входных данных в функции HttpServlet Response.sendError(), которые возвращаются в пользовате-лю в HTTP-заголовке Reason-Phrase. Удаленный пользова-тель может с помощью специально сформированного за-проса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.

2. Уязвимость существует из-за того, что приложение нормализует целевой путь перед удалением строки запро-са при использовании RequestDispatcher. Удаленный поль-зователь может получить возможность произвести обход каталога.URL производителя: jakarta.apache.org/tomcat.Решение: Установите исправление для версий 4.x, 5.x из SVN-репозитория или последнюю версию 6.0.18.

Целочисленное переполнение в ядре LinuxПрограмма: Linux kernel версии 2.6.17-rc1 и выше.Опасность: Низкая.Описание: Уязвимость существует из-за целочисленного переполнения в функции dccp_setsockopt_change() в фай-ле net/dccp/proto.c. Локальный пользователь может вызвать панику ядра системы.URL производителя: www.kernel.org.Решение: Установите исправление из GIT-репозитория производителя.

Раскрытие данных в VMware VirtualCenterПрограмма: VMware VirtualCenter версии 2.0.2 до обновле-ния Update 5 и 2.5 до обновления Update 2, возможно, дру-гие версииОпасность: Низкая.Описание: Уязвимость существует из-за того, что служба VirtualCenter backend некорректно проверяет привилегии при выполнении некоторых действий. Удаленный пользо-ватель может получить доступ к некоторым данным (напри-мер, именам системных учетных записей).URL производителя: www.vmware.com/products/vi/vc.Решение: Установите исправление с сайта производителя.

Уязвимость при обработке IPSec‑политик в Microsoft WindowsПрограмма: Microsoft Windows 2008; Microsoft Windows Vista.Опасность: Низкая.Описание: Уязвимость существует из-за ошибки в меха-низме импорта IPsec-политик из доменов под управлением Windows Server 2003 в домены под управлением Windows Server 2008. В результате ошибки система игнорирует IPsec-политики и данные, которые должны быть зашифро-ванными, передаются в открытом виде.URL производителя: www.microsoft.com.Решение: Установите исправление с сайта производителя.

Отказ в обслуживании в IPsec‑Tools в racoonПрограмма: IPsec-Tools версии до 0.7.1.Опасность: Низкая.Описание: Уязвимость существует из-за утечки памяти в демоне racoon при обработке некорректных предложе-ний. Удаленный пользователь может вызвать отказ в об-служивании приложения.URL производителя: ipsec-tools.sourceforge.net.Решение: Установите последнюю версию 0.7.1 с сайта про-изводителя.

Составил Александр Антипов

Отказ в обслуживании в Sun SolarisПрограмма: Sun Solaris 10.Опасность: Низкая.Описание: Уязвимость существует из-за неизвестной ошибки, относящейся к системному вызову sendfilev(). Уяз-вимость может быть эксплуатирована локальным пользо-вателем с помощью специально сформированного прило-жения, или удаленным пользователем с помощью специ-ально сформированной веб-страницы, которая обслужива-ется веб-сервером Apache 2.2.x. Для успешной эксплуата-ции уязвимости с помощью веб-страницы, Apache должен быть собран без некоторых опций.URL производителя: www.sun.com.Решение: Установите исправление с сайта производителя.

Спуфинг атака в PowerDNSПрограмма: PowerDNS версии до 2.9.21.1.Опасность: Низкая.Описание: Уязвимость существует из-за того, что сервер сбрасывает DNS-запросы к недействительным DNS-запи-сям в пределах действительного домена. Злоумышленник может воспользоваться этим для проведения спуфинг-ата-ки на другой сервер.URL производителя: www.powerdns.com.Решение: Установите последнюю версию 2.9.21.1 с сайта производителя.

Page 74: 069 Системный Администратор 08 2008

72

программирование

Чтобы приложение было гибким и настраиваемым, оно снабжается конфигурационным файлом (а то

и несколькими). Очевидно, что формат этого файла должен соответствовать определённым соглашениям, то есть можно сказать, что он пишется на не-котором языке разметки. И при выбо-ре такого языка нужно учитывать осо-бую роль конфигов – ведь они созда-ются людьми для программ. С одной стороны, такой файл должен легко чи-таться и редактироваться человеком (не всегда имеющим диплом с отличи-ем по специальности «Программист»), а с другой – легко «разбираться» про-граммой. Причём второе требование связано не столько с ресурсоёмкостью задачи «разбора», сколько с простотой разработки соответствующей подпро-граммы. Особенно актуально это ста-новится для скриптовых языков (Perl, Python, Ruby и т. п.), основное назна-чение которых – быстрая разработка

чего-нибудь небольшого. Согласитесь, было бы нелепо для скрипта в 50-100 строк писать аналогичного или даже большего размера «парсер» для разо-вой (в контексте работы скрипта) зада-чи анализа конфигурации.

Естественно, как только в процессе работы возникает подобная проблема, то в голову сразу приходит бессмер-тная фраза: «Всё украдено до нас». В том смысле, что если разработчик сталкивается с некоторой типовой за-дачей, то с высокой долей вероятнос-ти можно считать, что данная задача уже кем-то решена. Поэтому и в части анализа конфигурационных файлов проблема обычно сводится к поиску наиболее удобного инструмента сре-ди уже существующих.

Краткий обзор «типичных» форматовНаиболее простым форматом конфи-гурационного файла можно считать

«параметр-разделитель-значение» (чаще всего в качестве разделителя выступает любое количество пробелов и/или символов табуляции, но могут быть и другие, скажем, знак равенства или двоеточие; сокращённо будем на-зывать этот формат «П-Р-З»):

Его достоинства: простота написа-ния и восприятия человеком и прос-той разбор (функцией split по регу-лярному выражению, которая имеет-ся практически во всех современных скриптовых языках). Но есть и недо-статки: «линейность», т.е. невозмож-ность создавать иерархию параметров, и «нетипизированность», т.е. сложнос-ти с передачей параметров, тип кото-рых не укладывается в понятие «про-стого» (строка, число).

Знакомимся с YAML

Сергей Супрунов

Как программисты-разработчики, так и системные администраторы не понаслышке знают, что такое рутина. Учитывая, что рутинные операции должен выполнять всё-таки компьютер, посмотрим, чем нам поможет язык YAML в таком деле, как обработка конфигурационных файлов для разрабатываемого приложения.

node_ip 10.0.0.51node_user arcnode_password xidugheiemail_list arc,hunter,engineersms_list [email protected]

Page 75: 069 Системный Администратор 08 2008

73№8, август 2008

программирование

иерархия, а сами параметры задают-ся по схеме «П-Р-З»:

В различных вариантах подобный подход можно найти и в конфигурации других продуктов. Читать и редактиро-вать – удобнее, насчёт удобства про-граммного анализа не вполне уверен. Да и в любом случае это уже похоже на «частное» решение.

Поскольку при разработке скрип-тов, как правило, хочется чего-то сов-сем простого, то не последнее место по популярности занимает «програм-мистский» подход: в качестве файла конфигурации используется подклю-чаемый скрипт на «рабочем» языке, сразу при своём выполнении созда-ющий нужный набор «конфигураци-онных переменных» (пример на язы-ке Python):

Типичный пример такого подхо-да – большинство конфигов *BSD или Linux, представляющих собой скрипты на языке командной оболочки (sh, ре-же csh или bash). Очевидно, что здесь совершенно не стоят проблемы разбо-ра конфигурации, структурных ограни-чений или невозможности задать нуж-ный тип. Но при этом от пользователя уже начинают требоваться хотя бы ба-зовые познания в используемом языке программирования и немалая аккурат-ность и внимательность. Да и разра-ботчик скрипта, если он стремится соз-дать достаточно надёжную программу, должен в своём коде учитывать воз-можность опечатки (скажем, забыли

Для борьбы с первым недостатком используются различные методы. На-пример, разделение файла на так на-зываемые «секции», когда секция вво-дится специальным синтаксисом (ска-жем, «[Server]»), и все нижеследующие параметры вплоть до маркера дру-гой секции рассматриваются как от-носящиеся к ней (вы тоже вспомнили про win.ini?). Второй недостаток вы-нуждает вводить дополнительные со-глашения, и при разборе конфигура-ции учитывать их (в примере выше придётся особо оговорить, что спи-сок параметров, разделённых запя-тыми, является массивом, а при счи-тывании конфигурационного файла потребуется как минимум ещё один вызов split).

Другой подход к описанию конфи-гурации – XML-подобный синтаксис, набирающий в последнее время всё большую популярность (сам не видел, но рассказывают, что в MacOS да-же настройки операционной системы в этом формате задаются). Вышепри-ведённая конфигурация на этом языке могла бы выглядеть как-то так:

Здесь налицо возможность стро-ить иерархию любой сложности. До-полнительные атрибуты также за-метно расширяют возможности это-го формата. Собственно, было бы странно ожидать меньшего от языка, претендующего на роль универсаль-ного средства обмена информацией. Только вот анализ такого файла прос-тым никак не назовёшь (хотя для тех, кто «на ты» с XPath, XSLT и прочи-ми мудрёными аббревиатурами, мо-жет быть, и ничего сложного). Да и ре-дактировать вручную такого монстра не слишком удобно – в глазах рябит от тегов разметки.

Нечто среднее между этими двумя подходами мы видим в конфигурации Apache, ProFTPD и ряде других при-ложений – «тегами» вводится нужная

заключить текстовый параметр в апос-трофы) и соответствующим образом такие ситуации обрабатывать.

Теперь настало время перейти собственно к теме этой статьи – языку YAML, набирающему всё большую по-пулярность и стремящемуся оставать-ся максимально простым как для чело-века, так и для программы.

YAML – «ещё один» или «совсем не»?Разработанный Кларком Эвансом, язык YAML (в версии 1.0 эта аббреви-атура «официально» расшифровыва-лась как «Yet Another Markup Language», начиная с 1.1 разработчики решили, что «YAML Ain’t Markup Language») пер-воначально претендовал на роль пол-ноценной замены XML, но затем акцент сместился в сторону максимально гиб-кого описания данных. Он позволяет наиболее полно отображать основные типы данных, используемых современ-ными языками программирования, со-храняя при этом максимальную про-стоту как для человека, так и для про-граммного анализа. Wikipedia называ-ет YAML форматом сериализации дан-ных (http://ru.wikipedia.org/wiki/YAML), что очень точно отражает его основную задачу. И действительно, YAML можно с успехом использовать для марша-линга (т.е. для представления данных в памяти в формат, пригодный для хра-нения и передачи, см. http://ru.wikipedia.org/wiki/Маршалинг) или постоянного хранения на диске тех или иных струк-тур данных: скажем, в языке Python для сериализации традиционно ис-пользуется модуль pickle, в Ruby час-то используют модуль Marshal, анало-гичные решения есть и в других язы-ках. Но если возникает необходимость организовать обмен данными между скриптами, написанными на различ-ных языках программирования, то уже требуется какой-нибудь универсаль-ный язык сериализации. YAML может использоваться в этой роли почти без ограничений.

О примереПо ходу статьи часто приводится пример некоторого конфигурационного файла. Чтобы придать ему немного конкретики, бу-дем считать, что принадлежит он скрипту, задача которого – периодически контроли-

ровать с помощью FTP наличие некоторо-го файла на сервере (node_ip), и в случае неудачи отправлять уведомления на элек-тронную почту и в виде SMS пользовате-лям согласно заданным спискам.

<node> <ip>10.0.0.51</ip> <user>arc</user> <password>xidughei</password></node><list type='email'> <recipient>arc</recipient> <recipient>hunter</recipient> <recipient>engineer</recipient></list><list type='sms'> <recipient>[email protected] ↵ </recipient></list>

<Node> ip 10.0.0.51 user arc password xidighei </Node><Lists> email arc,hunter,engineer sms [email protected]</Lists>

node = {'ip': '10.0.0.51', 'user': 'arc', 'password': 'xidighei'}email_list = ['arc', 'hunter', ↵ 'engineer']sms_list = ['[email protected]']

Page 76: 069 Системный Администратор 08 2008

74

программирование

Тем не менее основная цель данной статьи – рассмот-реть YAML как язык конфигурации. В этом качестве он ус-пешно используется в таких фреймворках, как Ruby on Rails, Symfony, Spring. Что же он из себя представляет?

Наш пример на YAML может выглядеть так:

Как видите, разработчикам YAML удалось сохранить лёгкость и «читабельность» простейшего формата с раз-делителями, сделав его иерархическим за счёт использо-вания вложенных параметров. Да и возможности работы с типами данных здесь заметно расширены. Например, то, что вы видите выше, это самый настоящий хэш («словарь» в терминологии Python), один элемент которого представ-ляет собой вложенный хэш, а ещё два – массивы («спис-ки» в Python).

Вот, например, как это «развернётся» в Ruby (вывод слегка отформатирован, для удобства восприятия):

Как видите, хэш на YAML задаётся парами «ключ: зна-чение», причём ни для ключа, ни для значения практичес-ки никаких ограничений не существует – они могут содер-жать пробелы, быть многострочными, представлять собой вложенные элементы... Да-да, ключ хэша может быть слож-ной структурой данных! В этом случае он начинается с сим-вола «?». Правда, далеко не все языки программирования допускают подобные вольности. В частности, пример, по-казанный ниже, нормально отрабатывается в Ruby, а, на-пример, в Python уже вызывает ошибку.

Ещё одна возможность – использовать в качестве клю-ча хэша различные символы (если ваш язык программиро-вания от этого не впадёт в ступор):

После обработки, скажем, в Python получим такой сло-варь: «{'+': 'plus', ':': 'colon'}».

Кроме показанного выше синтаксиса, для массивов и хэшей существует и «линейная» нотация, близкая по ви-ду к языку Python (кстати, отступы в YAML тоже играют не последнюю роль, так что любителям Python он явно при-дётся по вкусу):

Само собой, что с обычными строками и числами проб-лем тоже не возникает. Параметры, заданные «в виде чис-ла», включая восьмеричное и шестнадцатеричное пред-ставление, а также научную нотацию, автоматически пре-образуются в числовой формат. Аналогично, автоматичес-кое преобразование предусмотрено для дат. Скажем, стро-ку '2008-01-05' модуль PyYAML языка Python преобразует в выражение «datetime.date(2008, 1, 5)». В качестве приме-ра рассмотрим обработку такого файла:

Если этот файл называть «config.yml», то работать с ним можно следующим образом:

Заметили, что как дата представляется только строка в формате ISO (YYYY-MM-DD)? Если говорить точнее, то спе-цификация поддерживает два формата даты и времени:n Date1: 2008-08-03t11:00:00n Date2: 2008-08-03 11:00:00

При необходимости можно задать и временную зо-ну. Однако различные «европейские» форматы (вро-де «01.01.2008») обработчиками YAML именно как даты не распознаются. Также обратите внимание на то, что стро-ка «Time: 12:45» была преобразована в «'Time': 765». Де-ло в том, что YAML значения вида «XX:YY:ZZ» распознаёт как шестидесятеричные числа. То есть запись «12:45» бы-ла рассчитана как 12*60 + 45. Фактически, подразумевая под этой записью «12 часов 45 минут», мы получили число минут с начала дня.

Также следует учесть возможности YAML по явному и не-явному преобразованию типов данных: если вам нужно пе-редать значение параметра именно как строку, просто за-

node: ip: 10.0.0.51 user: arc password: xidighei

email_list: - arc - hunter - engineer

sms_list: - [email protected]

$ irbirb(main):001:0> require 'yaml'irb(main):002:0> config = YAML::load(open('config.yml'))=> {"node"=> {"user"=>"arc", "ip"=>"10.0.0.51", "password"=>"xidighei"}, "sms_list"=>["[email protected]"], "email_list"=>["arc", "hunter", "engineer"]} irb(main):003:0> puts config['node']['ip'] 10.0.0.51

$ cat hash.yml? - 1 - 2 - 3: three : some digits $ irbirb(main):001:0> require 'yaml'irb(main):002:0> config = YAML::load(open('slohash.yml')) => {[1, 2, {3=>"three"}]=>"some digits"} irb(main):003:0> config.keys[0] => [1, 2, {3=>"three"}] irb(main):004:0> config[c.keys[0]] => "some digits"

# Массив (как элемент хэша)Moderators: [Site Admin, Dr.Moder, Polizei]

# Хэш (как элемент хэша)Location: {host: localhost, port: 5432}

Date1: 2008-01-01Date2: 01.02.2008Time: 12:45StringDate: "2008-01-01"

$ python>>> import yaml, datetime>>> config = yaml.load(open('config.yml'))>>> config

>>> config['Date1'].year

{'Date1': datetime.date(2008, 1, 1), 'Date2': '01.02.2008', 'Time': 765, 'StringDate': '2008-01-01'}

2008

+: plus:: colon

Page 77: 069 Системный Администратор 08 2008

75№8, август 2008

программирование

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

Ещё одна возможность, особенно полезная для кон-фигурационных файлов, – поддержка своего рода «указа-телей», когда вы можете присвоить некоторому значению имя (вводится символом «&»), а затем «разыменовывать» его (символом «*») в других местах файла:

Правда, использовать такую «переменную» как часть другого параметра (скажем, задав значение в виде «*[email protected]») не получится.

Наконец, строки. Как вы уже поняли, строкой будет всё, что заключено в кавычки или апострофы, а также любые значения параметров, не опознанные как относящиеся к другому типу данных. Но YAML предоставляет и ряд до-полнительных возможностей, например, поддержку «мно-гострочных» строк (обращайте внимание на символ пос-ле двоеточия):

Результат:

Вариант «simple» отличается от «continued» тем, что в последнем случае сохраняется завершающий пере-нос строки. Кроме того, промежуточные переводы стро-ки после символа «>» будут заменяться на пробелы толь-ко для групп строк, имеющих одинаковый отступ. Если же

PortAsString: !!str 80

Email list: - arc - &h hunter - engineer SMS list: - *h # заменится на hunter

simple: one two three

continued: > one two three

pre: | one two three

>>> print config['simple']

one two three

>>> print config['continued']

one two three

>>> print config['pre']

onetwothree

Page 78: 069 Системный Администратор 08 2008

76

программирование

перед строкой стоит символ «|», то все переводы строки со-храняются в неприкосновенности.

Также существует возможность хранить двоичные стро-ки в формате Base64:

Теперь можно делать с этим изображением всё, что тре-буется (в примере ниже я сохраняю его в файл):

Кроме рассмотренных выше, язык YAML умеет работать и с логическими типами данных («true» и «yes» распознают-ся как «истина», «false» и «no» – как «ложь»), поддержива-ются специальные значения: «null» и «~» как «None», «.NaN» в значении «nan» (не число); «.inf» и «-.inf» – соответственно «плюс бесконечность» и «минус бесконечность».

Ещё следует знать о последовательности «---» – она яв-ляется разделителем документов в потоке. Не все модули, работающие с YAML, способны считывать несколько до-кументов из одного файла. Скажем, в Python метод load() модуля PyYAML считывает только первый (для работы со всеми документами следует использовать метод load_all(), возвращающий генератор, из которого можно последова-тельно, методом next(), выбрать все документы потока). Мо-дуль 'yaml' в Ruby действует аналогично, за тем исключе-нием, что если символами «---» разделять простые строки, то модуль включает их в состав строки, считая всё одним документом. Модуль Perl – YAML::Tiny – успешно работает с несколькими документами:

Здесь many.yml – файл с двумя документами. Симво-лом «#» начинаются комментарии.

Трудности переводаЕсть у YAML и недостатки. Один из самых существенных – проблемы с кодировками, отличными от Unicode. Специфи-кация предусматривает поддержку лишь UTF-8, UTF-16 LE и UTF-16 BE. Как результат – работа с другими кодировками полностью зависит от используемого модуля. Так, модуль PyYAML и во FreeBSD, где используется KOI8-R, и в Windows XP (CP1251) упорно не желал обрабатывать файлы, содер-жащие хотя бы один кириллический символ независимо от его месторасположения. С модулем 'yaml' в Ruby нигде проблем не возникло. В Ubuntu, где по умолчанию исполь-зуется UTF8, все протестированные модули показали без-упречную работу с кириллицей.

Таким образом, появился ещё один повод всюду, где только можно, переходить на Unicode.

ЗаключениеКак видите, YAML – довольно простой в освоении язык се-риализации. Наличие готовых модулей для многих языков программирования позволяет использовать его «прямо сей-час», да и разработка собственного парсера вряд ли будет

слишком сложной задачей. Читается конфигурация на YAML очень легко, и в то же время вы можете не ограни-чивать себя только строковыми значе-ниями параметров, используя и масси-вы, и хэши, и логические значения... Если вы заинтересовались данным языком – обязательно просмотрите его полную спецификацию. Наверня-ка вы найдёте ещё много интересного, что осталось за рамками статьи.

1. Официальный сайт языка – ht tp://yaml.org.

2. Спецификация YAML 1.2 – http://yaml.org/spec/1.2.

3. YAML Cookbook – http://yaml4r.sourceforge.net/cookbook.

$ cat many.yml

--- # Serverhost: localhostport: 80--- # Clientuser: roothomedir: /var/client/home

$ cat perl.pl#!/usr/local/bin/perl

use YAML::Tiny;

$config = YAML::Tiny->read('many.yml');$server = $config->[0];$client = $config->[1];

print "Connect to $server->{host}:$server->{port}\n";print " as $client->{user} from $client->{homedir}\n";

$ ./perl.plConnect to localhost:80 as root from /var/client/home

YAML и языки программированияДля работы с YAML практически каждый язык программирования имеет готовый мо-дуль. Возможности YAML как языка сериа-лизации достаточно обширны, но если го-ворить о таком узком применении, как кон-фигурационные файлы, то в большинст-ве случаев использование YAML сводит-ся к вызову одного метода (обычно load()). Ниже рассмотрены типовые примеры ис-пользования для различных языков про-граммирования (предполагается, что по-ток содержит один документ).

Perl:

use YAML::Tiny;$config = YAML::Tiny-> ↵ read('config.yml')->[0];$host = $config->{'host'};

Python:

Ruby:

В последних строках показаны приме-ры использования одного из параметров, в предположении, что он задан как эле-мент хэша (словаря).

Разрабатываются также модули/библи-отеки для других языков программирова-ния: C, PHP, Java, JavaScript, Haskell. Ссыл-ки можно найти на главной странице сайта проекта: http://yaml.org.

import yamlconfig = yaml.load(open('config.yml'))host = config['host']

require 'yaml'config = YAML::load(open('config.yml'))host = config['host']

png: !!binary | iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAIAAAAmdTLBAAAAAXNSR0IA rs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAA gOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAh5JREFUOE+lVEsoRFEYPoow xORRk5SFBQsLNRtrS1ZKKXaSZEFeyQx5K6OQiPFME6XIKyYZjUKTEqmR ZiFlMyk1Hum614zju3PvXGfunZFyOp05c+75vv///seJoZSS/wzgI4+ HK+q2051ucb1zRbtFtB8Cp7NCe8ZrZ+rjkP7CSrD6evSfzSn+vW7t5XD 8i5cfLbofT111EutF2LSdEPdMEj+YT723LAuD9zg5U/r+phrJEm3ukbe utM+TKYUihBe4D7MBZgc2dMUlBapZ2ZCjsMyfixSKFzJesFWd2uJwCXij 0YhVAZgW9aBjKeCFKCQ4gvg7FyIkAbR4HNb1GUor8lght1NJgcMRGS8s ljtXZNkR8eU1uZgsfs1BBHOWjPc3Ji6dheGrO7JhExMbWIb/lv0EVUb4 Jh198RIqcIH6WOWbZF/CQzP2rHKW4qlfTz1OQp/uubZkFV6JX+tkGiiw qozjbwgPEbU/Odfqhy/wf+xIzA47UaD04UqMPyKBePwSf4RAFT9Ugb8h AdpF/Ne2+XJWDoFUP2z+wSuVAKvCsUb4mZJQ/t99nCkTFa4VGfEExp970+ F8CI9ftx199kf89VyysNXC1F9wyy+UuZZ/EhmN62CdcMMFUK7G4wgU8CK aENQYWhsNTt99mv5TDtx2xMIzoUMjS0WJdXeX3EzGo7vxtKiekAjvj0h/ PA07qGuUBtYPSyF1jKFate/PNwvDAKJ/owerAAAAAElFTkSuQmCC

>>> c = yaml.load(open('r.yml'))>>> open('r.png', 'w').write(c['png'])

Page 79: 069 Системный Администратор 08 2008

77№8, август 2008

bugtraq

Межсайтовый скриптинг в Apache mod_proxy_ftpПрограмма: Apache 2.0.63 и 2.2.9, возможно более ран-ние версии.Опасность: Низкая.Описание: Уязвимость существует из-за недостаточной обработки входных данных в URL, содержащих символ «*» в модуле mod_proxy_ftp. Удаленный пользователь может с помощью специально сформированного запроса выпол-нить произвольный код сценария в браузере жертвы в кон-тексте безопасности уязвимого сайта.URL производителя: www.apache.org.Решение: Установите исправление из SVN-репозитория производителя.

Раскрытие данных в ядре LinuxПрограмма: Linux kernel версии до 2.6.27-rc2.Опасность: Низкая.Описание: Уязвимость существует из-за ошибки в функции snd_seq_oss_synth_make_info() в файле sound/core/seq/oss/seq_oss_synth.c. Локальный пользователь может передать некорректный номер устройства уязвимой функции и полу-чить доступ к потенциально важным данным.URL производителя: www.kernel.org.Решение: Установите последнюю версию 2.6.27-rc2 с сай-та производителя.

Повышение привилегий в Sun SolarisПрограмма: Sun Solaris 8, 9, 10.Опасность: Низкая.Описание: Уязвимость существует из-за неизвестной ошибки в модуле ядра namefs. Локальный пользователь может вызвать панику ядра системы или выполнить про-извольный код в контексте ядра.URL производителя: www.sun.com.Решение: Установите исправление с сайта производителя.

Переполнение буфера в ядре LinuxПрограмма: Linux kernel версии до 2.6.25.11.Опасность: Низкая.Описание: Уязвимость существует из-за ошибки при об-работке размера LDT-буфера на x86_64-системах. Локаль-ный пользователь может вызвать отказ в обслуживании или выполнить произвольный код на целевой системе с приви-легиями учетной записи root.URL производителя: www.kernel.org.Решение: Установите последнюю версию 2.6.25.11 с сай-та производителя.

Раскрытие данных в OpenSSHПрограмма: OpenSSH версии до 5.1.Опасность: Низкая.Описание: Уязвимость существует из-за того, что sshd-сервер устанавливает опцию SO_REUSEADDR для про-слушивания сокета, используемого перенаправляющим X11-сервером. Локальный пользователь может подклю-читься к X11 перенаправляющему порту и перехватить X11-сессию. Для успешной эксплуатации уязвимости опция X11UseLocalhost должна быть отключена (по умолчанию включена) и операционная система должна позволять пов-торное подключение к порту без проверки идентификатора пользователя или IP-адреса (например, HP/UX).URL производителя: openssh.com.Решение: Установите последнюю версию 5.1 или 5.1p1 с сайта производителя.

Отказ в обслуживании в AsteriskПрограмма: Asterisk Open Source 1.0.x (все версии); Asterisk Open Source 1.2.x (все версии до 1.2.30); Asterisk Open Source 1.4.x (все версии до 1.4.21.2); Asterisk Business Edition A.x.x (все версии); Asterisk Business Edition B.x.x.x (все вер-сии до B.2.5.4); Asterisk Business Edition C.x.x.x (все версии до C.1.10.3); AsteriskNOW pre-release (все версии); Asterisk Appliance Developer Kit 0.x.x (все версии); s800i (Asterisk Appliance) 1.0.x (все версии до 1.2.0.1).Опасность: Низкая.Описание: 1. Уязвимость существует из-за ошибки при об-работке IAX2 POKE-запросов. Удаленный пользователь мо-жет отправить большое количество POKE-запросов, не от-правляя ACK-пакет в ответ на пакет PONG, и потребить все IAX2-номера.

2. Уязвимость существует из-за того, что протокол за-грузки прошивки не требует рукопожатие. Удаленный поль-зователь может отправит произвольном серверу пакеты размером 1040 байта с помощью 40-байтного пакета с под-мененным адресом источника.URL производителя: www.asterisk.org.Решение: Установите последнюю версию с сайта произ-водителя.

Составил Александр Антипов

Выполнение произвольного кода в CA ARCserve Backup for Laptops and DesktopsПрограмма: CA ARCserve Backup for Laptops and Desktops r11.5; CA ARCserve Backup for Laptops and Desktops r11.1 SP2; CA ARCserve Backup for Laptops and Desktops r11.1 SP1; CA ARCserve Backup for Laptops and Desktops r11.1; CA ARCserve Backup for Laptops and Desktops r11.0; CA Desktop Management Suite 11.2; CA Desktop Management Suite 11.1; CA Protection Suites r2; CA Protection Suites 3.0; CA Protection Suites 3.1.Опасность: Средняя.Описание: Уязвимость существует из-за ошибки потери значимости целочисленных в службе LGServer при обработ-ке входящих сообщений. Удаленный пользователь может отправить специально сформированное сообщение службе LGServer на порт 1900/TCP, вызвать переполнение буфера и выполнить произвольный код на целевой системе.URL производителя: www.ca.com/us/products/product.aspx?id=263.Решение: Установите исправление с сайта производителя.

Page 80: 069 Системный Администратор 08 2008

78

программирование

Возможности ScreenОдна из основных возможностей Screen – создание и управление несколькими консольными окнами или текстовыми приложениями в од-ном-единственном окне терминала. В один момент времени на экране тер-минала может находиться только од-но из окон (несколько их может быть только в случае, если они делят экран терминала на части). Screen позволя-ет быстро переключаться между окна-ми, сохранять и позднее возвращать-ся к текстовой сессии и открывать дос-туп к ней другим пользователям. Плюс к этому Screen позволяет давать ок-нам заголовки, отслеживать актив-ность в каждом окне и обмениваться содержимым окон с помощью копиро-вания и вставки. И вдобавок Screen позволяет переназначать клавиши, уп-равлять настройкой эмуляции терми-нала и решать еще много небольших задач, связанных с текстовыми окна-

ми, в которых может и не быть посто-янной необходимости, но которые мо-гут помочь в выполнении админист-ративной работы в отдельные момен-ты времени.

На рис. 1 изображен Screen с тре-мя именованными окнами (Work, Configuration, Logs) и открытым в нем текстовым редактором Vim с примером файла конфигурации Screen.

Первый запускScreen может быть запущен с помощью консольной команды screen, но прежде всего проверим, установлен ли Screen в вашей системе, с помощью следую-щей команды:

Если команда вернула путь, как в примере выше, можно сразу начи-нать пользоваться, в противном слу-

чае Screen может быть установлен стандартными средствами поддержки пакетов вашей операционной систе-мы или скачан с официального сайта http://www.gnu.org/software/screen.

Теперь мы можем запускать Screen, для чего просто набираем:

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

Надо заметить, что в командной строке сразу можно указать коман-ду для запуска определенного прило-жения, например, для запуска top на-до набрать:

Профессиональное использование консоли с помощью GNU Screen

Дмитрий Васильев

Думаю, никто не будет возражать против того, что наиболее используемым инструментом администратора систем UNIX является текстовая консоль. Консоль позволяет выполнять практически все административные задачи, и тем более без нее нельзя обойтись при управлении серверами, находящимися в другом районе города, или даже в другом городе, или в другой стране. Большинство администраторов могут достаточно лихо пользоваться консольными командами, но они могут с удивлением заметить, что более опытные коллеги каким-то невообразимым образом успевают делать еще больше. В этой статье я рассмотрю один из ключей к эффективному использованию текстовой консоли – менеджер текстовых окон GNU Screen (далее просто Screen).

$ which screen

$ screen

/usr/bin/screen

Page 81: 069 Системный Администратор 08 2008

79№8, август 2008

программирование

Хорошо, теперь Screen запущен, но, на первый взгляд, нет никаких внешних изменений – мы можем работать в за-пущенной оболочке или использовать top. Хитрость в том, что во время работы Screen передает все нажатия клавиш непосредственно приложению, но (по умолчанию) оставля-ет для себя управляющие команды, начинающиеся с ком-бинации клавиш <Ctrl> + <a>.

Эту управляющую комбинацию клавиш можно поменять через файлы конфигурации (которые мы рассмотрим поз-же), но во всех примерах будет рассматриваться только кон-фигурация по умолчанию. Таким образом, все клавиатур-ные команды Screen состоят из двух клавишных комбина-ций – управляющей <Ctrl> + <a> и непосредственно клави-ши или клавишной комбинации, представляющей команду. Практически каждая команда также имеет свой текстовый аналог, который можно выполнить либо через файл конфи-гурации, либо выполнив следующую команду:n Клавишная комбинация: <Ctrl> + <a> + <:>.n Текстовая команда: colon.n Описание: вывести приглашение для ввода текстовых

команд в интерактивном режиме.

В данном случае мы должны выполнить две клавиатур-ные комбинации, сначала нажав <Ctrl> + <a>, а затем кла-вишу двоеточия. При этом Screen выведет в нижней час-ти экрана приглашение для ввода команды в виде двоето-чия. Ту же самую команду, которую мы только что выполни-ли с помощью клавишной комбинации, можно выполнить через конфигурационный файл с помощью текстовой ко-манды colon, что может, например, понадобиться для вы-вода приглашения о вводе команд при старте или перена-значении комбинации клавиш, вызывающих это приглаше-ние. Далее, как и в примере выше, для каждой клавишной комбинации я буду писать соответствующие ей ключевые слова, которые можно использовать в файлах конфигура-ции или вводить с помощью <Ctrl> + <a> и <:>.

Здесь может возникнуть закономерный вопрос – а что если приложению нужно непосредственно передать ком-бинацию клавиш <Ctrl> + <a>, которая уже используется в Screen как служебная? Например, та-кая же комбинация используется биб-лиотекой редактирования командной строки readline для выполнения пере-хода в начало строки. Для этого слу-чая в Screen предусмотрена следую-щая команда:n Клавишная комбинация: <Ctrl> +

<a> + <a>.n Текстовая команда: meta.n Описание: передать текущему

предложению клавишную комби-нацию <Ctrl> + <a>.

Управление окнамиПришло время разобраться с коман-дами для управления окнами. При за-пуске Screen создает одно окно (если

только в конфигурации не указано создание сразу несколь-ких окон) и присваивает ему номер 0.

Новое окно с командной оболочкой можно создать с по-мощью команды ниже:n Клавишная комбинация: <Ctrl> + <a> + <c>.n Текстовая команда: screen.n Описание: создать новое окно.

При этом Screen создаст новое окно и присвоит ему сле-дующий по порядку номер. В нашем случае новым окном будет окно с номером 1.

Теперь у нас есть уже два текстовых окна, из которых текущим является только что созданное окно с номером 1, а окно с номером 0 находится в фоновом режиме. Но на-до заметить, что даже если окно находится в фоновом ре-жиме, оно может воспринимать вывод запущенного в нем приложения, как если бы оно было текущим. Например, мы могли бы запустить в окне 0 процесс, который выводит дополнительную информацию через определенные про-межутки времени (для примера, это может быть команда «tail -f»), и затем переключиться в окно 1 для работы в тек-стовом редакторе.

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

Рисунок 1. Screen с тремя именованными окнами (Work, Configuration, Logs) и открытым в нем текстовым редактором Vim

$ screen top

Клавишная комбинация Текстовая команда Описание

Ctrl + a w windows Выводит список номеров и заголовков всех окон в нижней строчке экрана

Ctrl + a " windowlist Выводит интерактивный список номеров и заголовков всех окон, из которого можно выбрать окошко для переключения

Ctrl + a Номер окна

select Выбор окна по номеру. Например, команда <Ctrl> + <a> и 0 делает текущим окно с номером 0

Ctlr + a n next Переключиться на следующее по порядку окно или на первое окно, если мы находились в последнем окне

Ctrl + a p prev Переключиться на предыдущее по порядку окно или на последнее окно, если мы находились в первом окне

Ctrl + a ' select Вывести приглашение ввода номера окна для переключения

Ctrl + a Ctrl + a other Переключиться на последнее используемое окно

Ctrl + a N number Показать номер и заголовок текущего окна

Ctrl + a A title Установить заголовок текущего окна

Ctrl + a k kill Принудительное закрытие окна, например, в случае если приложение не удается закрыть обычным способом

Таблица 1. Наиболее часто используемые команды для управления окнами

Page 82: 069 Системный Администратор 08 2008

80

программирование

Затем можно переключиться обратно в окно редактиро-вания.

В предыдущем параграфе я описал пример с переклю-чением между окнами, но пока не сказал, какие команды для этого используются. Рассмотрим подробнее наибо-лее часто используемые команды для управления окна-ми (см. таблицу 1).

При закрытии какого-либо из окон номера других окон не меняются и в нумерации появляются «дырки», кото-рые позднее могут быть заполнены новыми окнами. Хотя в Screen имеется команда для изменения номера окна, она здесь не рассматривается и остается для самостоятельно-го изучения. В случае если закрыты все окна, Screen завер-шает свою работу и выводит сообщение:

Работа с текстомТеперь рассмотрим работу с содержимым окон – копирова-ние и вставку текстового содержимого одного окна в дру-гое, мониторинг окон, сохранение текстовой копии экрана и другие похожие задачи (см. таблицу 2).

В режиме копирования Screen запускает текстовый ре-дактор, похожий на редактор Vi. Наиболее часто использу-емые команды редактора:n клавиши управления курсором перемещают курсор

по экранному буферу;n клавиша «Пробел» отмечает начало и конец региона

для копирования. При втором нажатии «Пробел» от-меченный текст копируется в регистр по умолчанию и Screen выходит из режима копирования.

Несколько окон на экранеПо умолчанию Screen оставляет видимым на экране только одно логическое окно, но при желании есть дополнитель-ная возможность разделить экран терминала на горизон-тальные регионы. Таким образом можно отображать сра-зу несколько окон на одном экране терминала. Рассмот-рим подробнее команды для работы с регионами экрана (см. таблицу 3).

На рис. 2 изображен Screen с тремя именованными ок-нами (Work, Configuration, Logs) и разделенным на два ре-гиона экраном. В верхнем регионе открыто окно Work с тек-стовым редактором Vim и примером файла конфигурации Screen. В нижнем регионе – окно Configuration с частью об-щего файла конфигурации /etc/screenrc.

Консольные сессииИ в завершение мы рассмотрим одну из самых популярных возможностей Screen. Представим следующую ситуацию: системный администратор, находясь дома, заходит на уда-ленный сервер, открывает несколько окон, запускает необ-ходимые задачи, затем закрывает соединение и едет на ра-боту. На работе он опять заходит на тот же сервер и восста-навливает открытые дома окна с результатами выполнен-ных задач. Звучит немного фантастично? Ни в коем слу-чае! Консольные сессии Screen как раз и предназначены для осуществления этой задачи. Они позволяют отсоеди-нить от терминала текущую сессию Screen со всеми окна-ми и выполняемыми приложениями и затем в любой мо-мент времени присоединиться к ней опять. При этом все выполняемые под Screen приложения будут продолжать работать и использовать свои окна для вывода информа-

ции. Плюс ко всему консольных сессий может быть несколько, но в этой ста-тье мы не будем на этом подробно ос-танавливаться.

Рассмотрим команды отсоедине-ния консольной сессии от терминала (см. таблицу 4).

Чтобы присоединиться обратно к отсоединенной сессии или посмот-реть список доступных сессий, необхо-димо запустить Screen с одним из сле-дующих ключей:n screen -r – присоединиться к отсо-

единенной сессии.n screen -R – присоединиться к пер-

вой подходящей отсоединенной сессии. Это может быть полезно в случае, если используется не-сколько сессий.

n screen -x – присоединиться к уже работающей сессии.

n screen -ls – вывести список доступ-ных сессий.

КонфигурацияПри запуске Screen по умолчанию выполняются команды из файла /etc/screenrc и файла .screenrc из домаш-

[screen is terminating]

Клавишная комбинация Текстовая команда Описание

Ctrl + a M monitor Включить/выключить мониторинг активности для текущего окна. Когда мониторинг включен и в окне, находящемся в фоновом режиме, производится вывод текста, в служебной строке выводится информация об активности

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

Ctrl + a h hardcopy Записать текстовое изображение текущего окна в файл hardcopy.номер_окна в каталоге Screen по умолчанию

Ctrl + a H log Включить/выключить трассировку текста текущего окна в файл screenlog.номер_окна в каталоге Screen по умолчанию

Ctrl + a [ copy Войти в режим копирования. Дополнительные команды этого режима описаны ниже

Ctrl + a ] paste Вставить в окно текст из регистра по умолчанию (куда он предварительно был скопирован с помощью команды выше)

Таблица 2. Команды для работы с содержимым окон

Клавишная комбинация Текстовая команда Описание

Ctrl + a S split Разделить текущее окно или регион на два новых региона. При этом размеры всех регионов меняются для получения дополнительного пространства на экране, и в новом регионе отображается пустое окно

Ctrl + a Tab focus Переместить текущий фокус отображения на регион ниже или на верхний регион, если текущим является самый нижний регион

Ctrl + a Q only Закрыть все регионы, кроме текущего

Ctrl + a X remove Закрыть текущий регион

Таблица 3. Команды для работы с регионами экрана

Page 83: 069 Системный Администратор 08 2008

81№8, август 2008

программирование

него каталога пользователя. Многие команды, которые можно использовать в файлах конфигурации, были рас-смотрены в таблицах выше в поле «Текстовая команда». Ниже представлен пример конфигурации Screen из фай-ла .screenrc:

Этот достаточно простой файл конфигурации открывает три окна с именами Work, Configuration, Logs соответственно в личном каталоге пользователя, в каталоге /etc и каталоге /var/log. После запуска на экране будет находиться первое окно с именем Work. На рис. 1 представлен пример рабо-ты Screen с этим файлом конфигурации.

Что дальше?Screen имеет огромное количество различных возмож-ностей, и практически невозможно описать их все в одной статье, поэтому некоторая часть функциональности оста-лась «за кадром».

Вот некоторые возможности/настройки Screen, кото-рые не были рассмотрены выше и остаются для самосто-ятельного изучения:n Команды настройки эмуляции терминала.n Многопользовательские консольные сессии.n Назначение или переназначение командам клавишных

комбинаций.n Вспомогательные опции текстовых команд. Например,

опция -t команды screen, которая используется в приме-ре файла конфигурации.

n Редко используемые команды, например команды, ко-торые можно использовать при настройке запуска Screen, – echo и sleep.

n Переменные среды, которые мо-гут быть полезны при настройке Screen.

n Дополнительные ключи запуска Screen.

Screen – это программа с большой историей, надо заметить, что первая версия появилась в 1987 году. На дан-ный момент к Screen практически не добавляется новых возможностей (одной из причин может быть наличие уже большого их количества на дан-ный момент) и производится в основ-ном только исправление ошибок.

Если кому-то не нравится относительная «старость» Screen или не нужно такое большое количество возмож-ностей, то можно обратиться к одной из следующих про-грамм:n dtach (http://dtach.sourceforge.net) – основной акцент

при разработке этой программы сделан на компакт-ность. По аналогии со Screen она поддерживает воз-можность работы с консольными сессиями, но не име-ет других возможностей Screen.

n SplitVT (http://www.devolution.com/~slouken/projects/splitvt) – позволяет разделить экран терминала на две половинки и работать сразу с двумя программными обо-лочками.

n Tmux (http://sourceforge.net/projects/tmux) – для работы с консольными сессиями Tmux использует модель «кли-ент-сервер».

n Twin (http://linuz.sns.it/~max/twin) – попытка создать тек-стовый оконный интерфейс, аналогичный графическим собратьям.

Итак, в этой статье мы рассмотрели возможности и боль-шинство команд менеджера текстовых окон Screen. Я счи-таю, что изучение Screen или одной из похожих программ может вывести производительность и соответственно про-фессионализм системного администратора или програм-миста на качественно новый уровень. В любом случае это не будет пустой тратой времени.

Рисунок 2. Screen с тремя именованными окнами (Work, Configuration, Logs) и разделенным на два региона экраном

Клавишная комбинация Текстовая команда Описание

Ctrl + a d detach Отсоединить консольную сессию и оставить ее запущенной в фоновом режиме. При этом Screen пишет: [detached]

Ctrl + a D D pow_detach Отсоединить консольную сессию, оставить ее запущенной в фоновом режиме и послать родительскому процессу Screen сигнал HANGUP. При запуске Screen из удаленного терминала это означает отсоединение Screen и затем закрытие соединения. При этом Screen пишет: [power detached]

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

Ctrl + a Ctrl + \ quit Закрыть все окна сессии и выйти из Screen. Надо заметить, что многие дистрибутивы переопределяют клавишную комбинацию для этой команды, но текстовую команду можно использовать в любом случае

Таблица 4. Команды отсоединения консольной сессии от терминала

# Отключить вывод лицензионной информации при старте Screenstartup_message off

# Открыть оболочку для работыchdirscreen -t Work

# Открыть оболочку для управления конфигурациейchdir /etc screen -t Configuration

# Открыть оболочку для просмотра логовchdir /var/log screen -t Logs

# Выбрать первое окошко после стартаselect 0

Page 84: 069 Системный Администратор 08 2008

82

ретроспектива

С момента подписания между кор-порациями IBM и Microsoft до-говора о сотрудничестве в об-

ласти разработки операционных сис-тем в августе 1985 года и до появле-ния в продаже первого продукта про-шло почти два года. Лишь в апреле 1987 года миру была представлена но-вая ОС под названием OS/2 (Operating System/2), продажи которой стартова-ли спустя ещё восемь месяцев.

Первая версия операционной сис-темы не имела графического интер-фейса и, как и DOS, управлялась из ко-мандной строки. Примитивная фор-ма GUI под названием Presentation Manager (Менеджер презентаций) по-явилась лишь с выходом версии 1.1 в ноябре 1988 года и была усовер-шенствована в OS/2 1.2 и 1.3. Данный графический интерфейс практически полностью повторял Program Manager

из Windows 3.0 с той лишь разницей, что группы программ открывались в новом окне, а не внутри предыду-щего. На экране Presentation Manager постоянно присутствовали две икон-ки – DOS и Print Manager. При нажа-тии на первую ОС активировала сес-сию DOS, в которой запускались про-граммы MS-DOS. Вторая же, как сле-дует из названия, запускала менед-жер печати.

Окно в электронный мир: история развития графического пользовательского интерфейсаЧасть третья, заключительная

Дмитрий Мороз

Рубеж последнего десятилетия ушедшего века стал переломным моментом в становлении графического интерфейса в качестве неотъемлемой части операционной системы. Практически все популярные ОС обзавелись собственным GUI, а командная строка окончательно перешла в разряд «для фанатов» и пользователей UNIX.

Page 85: 069 Системный Администратор 08 2008

83№8, август 2008

ретроспектива

Сотрудничество двух корпораций просуществовало недолго. Microsoft понимала, что совершенствование и продажа своей операционной сис-темы в лице Windows принесёт ей го-раздо больше прибыли. В то же время, принимая участие в разработке OS/2, корпорация собственноручно ставила палки себе же в колёса. В результате в 1991 году партнёрское соглашение между IBM и Microsoft было расторг-нуто, и отныне компании шли каждая своим путём.

В марте 1992 года появилась сле-дующая версия операционной систе-мы IBM – OS/2 2.0. Данная операци-онная система стала первой 32-раз-рядной ОС для IBM PC-совместимых компьютеров.

Главным новшеством в OS/2 2.0 стал графический интерфейс Workplace Shell. Он был создан на основе стан-дарта CUA’91 (Common User Access – Общий пользовательский доступ), яв-лявшегося частью семейства стандар-тов, разработанных IBM для облегче-ния разработки унифицированных гра-фических интерфейсов приложений для различных платформ и операци-онных систем.

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

Наиболее интересной особен-ностью графического интерфейса OS/2 2.0 стала возможность измене-ния в любой папке цвета фона. Кро-ме того, пользователь мог установить в качестве него любое графическое изображение.

В отличие от «классической» MacOS, о которой я рассказывал в про-шлой статье цикла, в OS/2 2.0 для вы-полнения различных операций исполь-зовались обе кнопки мыши, а также повсеместно применялись всплываю-щие меню. Стоит отметить появление в них команды «Создать ещё один» (Create another), дублирующей объект, а также «Создать тень» (Create shadow), формировавшей ссылку на оригиналь-ный объект («ярлык»). Даже выклю-

чение компьютера осуществлялось выбором соответствующего пункта из всплывающего меню.

Минимизированное окно програм-мы не оставалось на рабочем сто-ле, а перемещалось в специально от-ведённую для этого папку. Вместо «Корзины» в OS/2 2.0 использовал-ся «Шреддер» (от англ. Shredder – из-мельчитель). Перемещённый на него файл не сохранялся во временной пап-ке, а сразу же удалялся.

В октябре 1994 года IBM предста-вила общественности новую версию OS/2 Warp 3. Главным нововведени-ем в графическом интерфейсе треть-ей версии ОС стало появление панели LaunchPad. Она содержала специаль-ные «ящики», в которых хранились раз-личные объекты. При нажатии на пик-тограмму секции всплывал список её содержимого. Пользователь мог са-

мостоятельно добавлять либо удалять ящики, а также содержащиеся в них объекты. Механизм работы Измельчи-теля не изменился, однако теперь он также находился на LaunchPad. Сама панель могла быть размещена пользо-вателем в любой части экрана.

Империя наносит ответный ударВ то время как «Голубой гигант» про-должал совершенствовать свою OS/2, компания Гейтса не собиралась до-жидаться своего бывшего партнёра и готовила миру новую операцион-ную систему, выход которой был на-мечен на 1994 год. Очередная версия Windows, ещё более похожая внешне на MacOS, должна была уравнять поль-зователей IBM PC-совместимых ком-пьютеров со счастливыми владельца-ми Macintosh.

Экспериментальный пёс MicrosoftВ начале 1995 года Microsoft выпустила программу Bob, разработанную в качест-ве замены для интерфейсов Windows 3.x и 95 и ориентированную на новичков, толь-ко приступающих к своему знакомству с компьютером.

Срезу после запуска Bob пользователь попадал в так называемую «Общую ком-нату», в углу которой его ждал «гид» – пёс по кличке Ровер (Rover). При желании мож-но было выбрать себе другого гида, каж-дый из которых обладал своим собствен-ным поведением, словарём из подсказок и случайных фраз, анимацией и звуковы-ми эффектами (позже часть этих гидов стала «помощниками» справочного раз-дела офисного пакета Microsoft Office 97). Однако даже в этом случае Ровер перио-дически заглядывал «в гости» с каким-ни-будь полезным советом.

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

Комната, являвшаяся основой GUI, со-держала множество активных объектов, которые пользователь был волен изменять

по своему усмотрению. Они представляли собой как ярлыки для запуска программ, так и различные файлы. При помощи гида можно было легко добавить, изменить либо же удалить объект из комнаты. Кроме того, пользователь мог полностью изменить вне-шний вид GUI, выбрав один из нескольких стилей. В арсенале Bob имелось несколько собственных программ, таких как: тексто-вый редактор, программа для ведения до-машней бухгалтерии, адресная книга, ка-лендарь, чековая книжка, а также специ-альный «менеджер для ухода за домом», содержавший предустановленные катего-рии с различной текстовой информацией и списками дел.

Все активные объекты GUI были на-рисованы при помощи векторной графи-ки, в результате чего пользователь мог са-мостоятельно изменять размеры любого из них. Однако это особенность обладала и существенным недостатком: в угоду про-изводительности цветовая палитра в Bob была ограничена 256 цветами.

Из-за высокой стоимости и системных требований новый Bob не получил широ-кого распространения, в результате чего Microsoft прекратила его дальнейшее раз-витие. Впоследствии пёс Ровер появился в операционной системе Windows XP, од-нако на этот раз лишь в качестве анима-ционного персонажа, сопровождающе-го пользователя во время активации диа-лога поиска.

Page 86: 069 Системный Администратор 08 2008

84

ретроспектива

Выход Windows 95 состоялся 24 августа 1995 года. Сре-ди множества нововведений по сравнению с предыдущей версией ОС, пожалуй, главным стал переписанный практи-чески «с нуля» графический интерфейс, основная концеп-ция которого используется Microsoft (и другими разработ-чиками ОС) по сей день.

Рабочий стол Windows 95 отныне был полностью под-властен пользователю: он мог создавать новые иконки и удалять старые, а также перемещать их в любую точ-ку экрана. Появилась возможность создания «ярлыков» – файлов в виде иконок, указывавших путь на другой файл в компьютере.

Главными нововведениями GUI Windows 95 стал фай-ловый менеджер Windows Explorer (Проводник), пришед-ший на смену Program Manager из Windows 3.x, и «Панель задач».

Рабочий стол Windows представлял собой не просто ми-нимизированные иконки. Теперь на нём могли находиться файлы, папки, а также некоторые системные иконки (Мой

компьютер, Сетевое окружение, Корзина и др.). При помо-щи механизма Drag & Drop папки можно было переместить из окна Windows Explorer на рабочий стол, в другие папки или же на иконки программ, вызывая тем самым определён-ное действие системы.

Обновлению подвергся и внешний вид окон, а также их содержимого. В дополнение к опциям сворачивания и развёртывания в правом верхнем углу каждого окна была добавлена кнопка его закрытия. Различные элементы уп-равления (флажки, радио-кнопки и обычные кнопки, а так-же текстовые поля) – отныне элементы диалоговых окон – также имели «трёхмерный» вид. Панель задач, которая по умолчанию располагалась внизу, могла быть перемеще-на пользователем в любую другую сторону экрана. На ней располагались кнопка меню «Start», пиктограммы быстро-го доступа к программам и папкам с файлами, свёрнутые окна запущенных приложений, а также часы.

Меню Start содержало ярлыки для быстрого запуска установленных программ, список последних открытых до-кументов, ссылки на инструменты для настройки системы, доступ к меню поиска и т. д.

Напоследок нельзя не упомянуть и о шедшем в комп-лекте с новой версией ОС браузере Internet Explorer 4.0, ко-торый после установки к нему дополнения Windows Desktop Update наделял Windows 95 графическим интерфейсом, ставшим позже стандартным GUI для следующей опера-ционной системы компании – Windows 98.

Благодаря большому количеству нововведений, повы-шенной стабильности, а также новому графическому интер-фейсу Windows 95 быстро завоевала популярность среди пользователей персональных компьютеров. В течение сле-дующей пары лет она стала самой продаваемой операцион-ной системой в мире, сильно ударив по позициям Apple и её MacOS, а также забив самый большой гвоздь в гроб OS/2.

Последняя версия ОС от IBM под номером «4» увидела свет в сентябре 1996 года. Графически Warp 4 не сильно от-

личалась от своей предшественницы, за исключением одного: LaunchPad бы-ла заменена на WarpBar, сильно напо-минающую панель задач Windows 95.

Следующей операционной систе-мой Microsoft стала Windows 98, вы-шедшая 25 июня 1998 года. В целом оконный менеджмент новой ОС не пе-ретерпел практически никаких изме-нений по сравнению с предшествен-ницей.

Главным образом изменения за-тронули менеджер Windows Explorer. Отныне его обновлённая версия была тесно связана с Internet Explorer. Од-ним из компонентов интернет-брау-зера стала и новая система справки Hyper Help.

Windows 98 позволяла элементам управления ActiveX отображаться пря-мо на рабочем столе. Также отныне он поддерживал установку в качестве фона не только рисунков, но и полно-

OS/2 2.0

OS/2 Warp 4

Page 87: 069 Системный Администратор 08 2008

85№8, август 2008

ретроспектива

функциональных веб-страниц, с анимированной графикой и функционирующими ссылками.

Радикальных изменений в графическом интерфейсе Windows 98 сделано не было. Можно сказать, что Microsoft просто провела «работу над ошибками» своей предыду-щей ОС.

Последний из могиканПокинувший в 1990 году компанию Apple Жан-Луи Гассе (Jean-Louis Gassee), ранее возглавлявший её исследова-тельские и производственные подразделения, решил соз-дать с нуля новый компьютер, для чего основал компанию Be Inc. Компьютер BeBox с операционной системой BeOS, появившийся в 1995 году, стал последней платформой с собственным аппаратным и программным обеспечени-ем. В дальнейшем операционная система была перенесе-на на компьютеры Macintosh и платформу x86.

Наиболее интересной особенностью графического ин-терфейса BeOS стали так называемые «скользящие заго-ловки» (sliding tabs), позаимствованные у среды Smalltalk: строка заголовка занимала лишь необходимую для отоб-ражения названия часть длины окна. Однако разработчи-ки Be Inc. усовершенствовали эту идею, в результате чего пользователь мог двигать строку заголовка по всей дли-не окна, подстраивая её под конкретные нужды. Благода-ря этому при открытии нескольких окон путём использова-ния «скользящих заголовков» можно было ускорить пере-ключение между ними.

BeOS поддерживала до 32 виртуальных рабочих сто-лов, каждому из которых можно было присвоить своё раз-решение, а также цветовую палитру. В операционной сис-теме было реализовано удобное перемещение окна с од-ного рабочего стола на другой путём его удерживания кур-сором мыши.

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

Напоследок стоит упомянуть об од-ном «пасхальном яйце»: после нажа-тия комбинации клавиш <Ctrl>, <Alt> и <Shift> и одновременно щелчка мы-шью по кнопке Start в меню появляет-ся новая опция Windows Decor, кото-рая позволяет изменить стандартное оформление окон на MacOS, Windows или же AmigaOS-подобное.

«Десятка»: перерождениеНесмотря на различные нововведения и усовершенствования, графический

интерфейс MacOS вплоть до версии 9.х включительно ос-тавался всё тем же классическим GUI, который в 1984 году увидели пользователи компьютеров Macintosh.

В компании понимали, что улучшение операционной системы, основа которой была написана ещё в начале 80-х годов прошлого века, в конце концов заведёт в тупик. В результате в конце 1996 года Apple приобрела компанию NeXT Inc., тем самым прибрав к своим рукам операционную систему NeXTSTEP. Разработка новой ОС для компьютеров Macintosh продолжалась на протяжении пяти лет, и лишь в марте 2001 года появилась десятая версия операцион-ной системы MacOS, получившей приставку «X».

Одним из основных нововведений MacOS X стал новый графический интерфейс под кодовым названием Aqua, по-лучивший в своё распоряжение масштабируемые полно-цветные иконки, тени, отбрасываемые различными объек-тами, прозрачные заголовки окон и т. д. Благодаря стара-ниям инженеров Apple одна из главных особенностей ин-терфейса NeXTSTEP, панель Dock, «перебралась» и в но-

Microsoft Bob

Windows 95

Page 88: 069 Системный Администратор 08 2008

86

ретроспектива

вый GUI. Кроме ярлыков для запуска программ, Dock содер-жала и свёрнутые окна. Способность минимизировать ок-на в MacOS также впервые появилась именно в «десятке». Вместо обычных рисованных пиктограмм свёрнутое окно отображало своё реальное содержимое. Например, виде-оплеер, будучи уменьшенным до иконки в Dock, продолжал проигрывать видеоролик. Наконец, пользователь мог вы-носить на панель избранные папки, навигация по которым осуществлялась при помощи всплывающих меню без не-обходимости использования файлового менеджера.

Файловый менеджер получил способность предостав-лять каталоги и папки тремя различными способами. В до-полнение к обыденным «иконкам» и «спискам» появилось отображение в виде колонок, перекочевавшее опять-таки из NeXTSTEP. В последнем случае содержимое каждой пап-ки в Finder открывается в новой колонке, которая сдвига-ет колонку более высокого уровня в противоположную сто-рону. Также стоит отметить, что в отличие от большинства встроенных файловых менеджеров современных ОС Finder не является веб-браузером.

Новый графический интерфейс стал «визитной карто-чкой» MacOS, и Apple, не желая упускать полученное пре-имущество, в каждой следующей версии своей ОС продол-жала развивать Aqua.

Так, в MacOS X v10.2 появилась технология Quartz Extreme, впервые задействовавшая мощность графичес-ких процессоров видеокарт для прорисовки объектов на эк-ране, а также различных визуальных эффектов.

Ещё одна технология, Bonjour (ранее именовавшаяся Rendezvous), позволяла устройствам автоматически на-ходить между собой «общий язык» абсолютно без участия пользователя в процессе настройки.

В MacOS X v10.3 внешний вид окон был изменён со «стекла» на «полированный металл». Не заставил себя ждать и ряд новых возможностей.

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

Обновление коснулось и файлового менеджера Finder. Теперь он мог «похвастаться» поиском из любого окна в ре-жиме реального времени, настраиваемой панелью Sidebar, расположенной в левой части окна, разноцветными «мет-ками» для файлов и т. д.

Отныне один компьютер могли делить сразу несколько пользователей. Достигалось это при помощи технологии быстрого переключения сеансов Fast User Switching, кото-рая позволяла одному пользователю оставаться под сво-им логином, в то время как в ОС заходил другой.

Появившийся в MacOS X v 10.4 Dashboard представ-лял собой группу небольших программ, названных «вид-жетами», рабочая область с которыми могла быть вызва-на нажатием всего одной клавиши. Стандартный набор виджетов, поставлявшийся с системой, впоследствии мог

быть легко расширен пользователем за счёт скачивания из Интернета но-вых программ.

Специальное средство для созда-ния скриптов под названием Automator позволяло пользователю лёгко объ-единять различные приложения вмес-те для комплексной автоматизации часто повторяющихся действий.

Текущей на данный момент являет-ся MacOS X v10.5. Согласно заявлени-ям Apple в очередной версии её ОС бы-ло реализовано более 300 различных нововведений, из которых ниже упомя-нуты лишь наиболее крупные.

Очередному изменению подвер-гся внешний вид интерфейса новой MacOS Х. Так, основательная перера-ботка затронула панель Dock, отныне представляющую пользователю своё содержимое в трёхмерной проекции. Кроме того, теперь любая папка, вы-

Windows 98

BeOS 5.0

Page 89: 069 Системный Администратор 08 2008

87№8, август 2008

ретроспектива

несенная на Dock, демонстрирует своё содержимое в виде «вылетающего» вверх списка с превью содержащихся в ней файлов.

Новое представление данных под названием CoverFlow позволяет Finder отображать большие превью каждого файла, которые «летают» по рабоче-му столу в трёхмерном пространстве. При этом пользователь может исполь-зовать эти превью в качестве обычных иконок, совершая над ними различные манипуляции.

Собственная реализация Apple идеи виртуальных рабочих столов в MacOS X представлена технологи-ей Spaces. Она позволяет одновре-менно просмотреть все активные ра-бочие столы, переключаться между ними и переносить запущенные про-граммы и открытые окна с одного сто-ла на другой.

Ещё одной интересной техноло-гией, о которой стоит упомянуть, яв-ляется утилита автоматизированного резервирования данных Time Machine, предоставляющая пользователю воз-можность восстановить файлы, кото-рые были удалены либо же заменены файлами более новой версии.

Ну и, конечно же, нельзя не упомя-нуть о Front Row – специальной оболоч-ке для работы с хранящейся на ком-пьютере и подключённых к нему муль-тимедийных устройствах информаци-ей. Теперь просмотр фотографий и ви-деороликов, а также прослушивание музыки осуществляется при помощи небольшого и удобного пульта дистан-ционного управления, идущего в ком-плекте с компьютером.

На данный момент Apple вовсю ра-ботает над следующей версией своей операционной системы, которую она намеревается представить миру уже в следующем году. По словам пред-ставителей компании, новая MacOS X практически не будет содержать боль-ших нововведений. Однако уже су-ществующие будут «отточены до со-вершенства».

Разукрашенные «Окна»В то время как пользователи компью-теров Macintosh не могли нарадовать-ся красоте и продуманности интер-фейса MacOS X, подавляющему боль-шинству пользователей приходилось иметь дело с GUI операционных сис-

тем Windows Me и 2000, таким же «се-рым и унылым», как и его предшест-венники.

Ситуация изменилась с выходом в октябре 2001 года новой ОС под наз-ванием Windows XP. Улучшенный гра-фический интерфейс новой операци-онной системы обзавёлся поддерж-кой тем оформления, тенями, отбра-сываемыми значками на рабочем сто-ле и меню, а также новомодными эф-фектами типа прозрачности, затуха-ния и скольжения.

Переработке подверглась панель управления, элементы которой объ-единены в общие группы. Сама па-нель теперь представлена в виде веб-странички. Иконки, находящиеся в сис-темной области возле часов, получи-ли способность привлекать внимание пользователя при помощи всплываю-щих сообщений.

Нововведения «постучались в две-ри» и к «Панели задач» вместе с ме-ню Start. Отныне появилась возмож-ность группировать открытые окна од-

MacOS X v10.0

MacOS X v10.3

Page 90: 069 Системный Администратор 08 2008

88

ретроспектива

ной программы для более экономного расходования места на панели.

Меню кнопки Start теперь разде-лено на две области. В левой части находятся ссылки на использующи-еся «по умолчанию» интернет-брау-зер и почтовый клиент, а также ярлы-ки для часто используемых программ. Полный же список установленного ПО можно посмотреть, щёлкнув по со-ответствующей кнопке. Что же каса-ется системных иконок, ранее нахо-дившихся на рабочем столе, теперь они перенесены в правую часть меню кнопки Start.

Файловый менеджер Windows Explorer обзавёлся контекстно-зави-симыми выпадающими списками в ле-вой части окна, которые содержат сис-темную информацию, наиболее часто употребляемые папки, а также «об-щие» действия над объектом.

В Windows XP появилась новая ин-терактивная справочная система, при-званная в виде пошаговых инструкций помочь пользователю решить возник-шую проблему.

Ещё большему обновлению GUI подверглась Windows Vista, появив-шаяся на свет в конце января 2007 го-

да. Новый графический интерфейс под названием «Aero», хотя и требует со-ответствующего аппаратного обеспе-чения, содержит изрядную долю нов-шеств.

Windows Flip 3D позволяет пере-ключаться между открытыми окна-ми, организовав их в колонку одно-за-другим. Обновлённые эффекты, ими-тирующие воду, позволяют регулиро-вать прозрачность окон и других эле-ментов интерфейса. Сами же окошки получили в своё распоряжение новые эффекты анимации.

В Windows Vista появилась боковая панель Sidebar, на которую пользова-тель волен вынести небольшие аппле-ты под названием «гаджеты». Кроме этой панели данные программки мо-гут быть установлены в любой части рабочего стола.

Большие изменения произошли и с файловым менеджером Windows Explorer, который теперь предостав-ляет больше возможностей для орга-низации, навигации и поиска. Панель задач менеджера была убрана, а все её опции перенесены на панель инс-трументов. Была добавлена новая па-нель под названием «Favorite links», позволяющая одним нажатием мыши получить доступ к общим директори-ям. Стоит упомянуть и про новую ад-ресную строку, а также обновлённую панель предварительного просмотра и панель детального описания.

Как и в MacOS X, Windows Vista обзавелась своим движком для поис-ка информации в режиме «реального времени» под названием Instant Search. Как и в ОС от Apple, поле для поиска встроено во многие окна интерфей-са системы.

Напоследок стоит отметить, что впервые со времени появления в Windows 95 меню Start Microsoft кар-динально изменила его кнопку. Вмес-то прямоугольника с надписью «Start» на пользователя теперь «смотрит» круг с эмблемой компании, получивший на-звание «Pearl» (Жемчуг).

Многоликий LinuxЗа почти два десятилетия существо-вания GNU/Linux для неё было созда-но множество различных оконных ин-терфейсов, предназначенных для са-мых разнообразных целей. Ограничен-ный объём журнала не позволяет ох-

MacOS X v10.4

MacOS X v10.5

Page 91: 069 Системный Администратор 08 2008

89№8, август 2008

ретроспектива

ватить всё разнообразие графических оконных интерфейсов Linux, поэтому я расскажу лишь о наиболее известных – KDE и GNOME.

В то время, когда стартовали оба проекта, в мире существовало уже достаточное количество разнообраз-ных графических интерфейсов, по-этому «изобретать велосипед» созда-телям KDE и GNOME не пришлось. Ос-новную часть идей разработчики поза-имствовали из операционных систем Windows, попутно «приправив» их на-иболее интересными возможностями GUI других ОС.

И KDE, и GNOME имеют как свои сильные стороны, так и слабые. На-чать стоит с того, что основаны они на базе различных кроссплатформен-ных библиотек. GNOME, созданный на базе библиотеки GTK/GTK+, име-ет строгий «классический» вид, одна-ко более удобную организацию меню, да и остального интерфейса в целом. В отличие от него, KDE, основанный на Qt, более «красив», однако в по-гоне за разнообразием и количест-вом функций он становится сложнее в использовании для обычных поль-зователей.

А теперь поговорим о каждом из оконных интерфейсов более под-робно.

За время своего существования KDE (начало проекту было положено в 1996 году, выпуск первой версии – в июле 1998 года) успел пережить мно-жество версий и на данный момент ос-тановился на 4.х.

И KDE, и GNOME внешне старают-ся быть похожими на графический ин-терфейс Windows, попутно заимствуя лучшие особенности GUI других опе-рационных систем. Панель под наз-ванием KDE Desktop Panel, находя-щаяся в нижней части экрана интер-фейса оконного менеджера, является аналогом панели задач в ОС Microsoft. Точно так же она «несёт в себе» меню «Start» (в KDE 4.0 получившее назва-ние «KickOff»), иконки часто исполь-зуемых программ, список открытых окон и часы.

Единственное видимое различие между двумя панелями заключается в наличии на KDE Desktop Panel об-ласти, в которой находятся четыре (по умолчанию) виртуальных рабочих сто-ла. Начиная с четвёртой версии окон-

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

Многое программное обеспече-ние для Linux грузится достаточно долго, не демонстрируя при этом ни-какой видимой активности на экра-не. В KDE данная проблема решена

следующим образом: в списке откры-тых окон на панели задач появляется пункт нового ПО, в котором отобра-жается индикатор процесса загрузки программы.

Интересной особенностью ме-ню «Start» является группировка про-грамм по задачам (впрочем, данное свойство относится ко всем оконным менеджерам для Linux). Например, всё программное обеспечение для рабо-ты с графикой хранится в отдельной категории.

Windows XP

Windows Vista

Page 92: 069 Системный Администратор 08 2008

90

ретроспектива

Помимо стандартных кнопок уп-равления окнами, KDE (впрочем, как и другие оконные интерфейсы для Linux) позволяет двойным щелчком по заго-ловку окна «свернуть» его в узкую по-лоску, тем самым экономя место на ра-бочем столе.

В K D E р е а л и з о в а н а н а л о г Dashboard из MacOS X, в 4-й версии оконного интерфейса именуемый Show Desktop. Из прочих «красивос-тей» стоит отметить возможность ус-тановки для каждого окна индивиду-ального уровня прозрачности, реали-зованную в оконном менеджере KDE под названием KWin.

По сравнению со своим конкурен-том развитие GNOME продвигается более спокойно и неторопливо. Одна-ко и этому GUI есть что предоставить пользователю.

Компоненты интерфейса GNOME взаимодействуют друг с другом. В большинстве случаев пользователь может выполнить одно действие не-сколькими различными способами. Например, можно запускать приложе-ния из панелей, меню или же с рабо-чего стола.

В отличие от KDE, где панель уп-равления оконным интерфейсом со-держит все настройки в одном инс-

трументарии, в GNOME они организо-ваны в виде отдельных модулей, каж-дый из которых отвечает за свою часть системы.

Интересной особенностью скрин-сейвера GNOME является возмож-ность оставлять другими людьми тек-стовые напоминания для пользовате-ля при заблокированном экране с по-мощью кнопки «Оставить сообще-ние». Владелец компьютера сможет прочесть их как только снимет бло-кировку.

Хочется добавить весьма интерес-ный факт: для активации иконок в KDE необходимо произвести одиночный щелчок мышкой, тогда как в GNOME – двойной.

Добавление GUI третьего измеренияСо дня появления графического ин-терфейса в лабораториях Xerox PARC прошло уже более тридцати лет, од-нако концепция двухмерного рабочего стола в качестве GUI для операцион-ных систем продолжает доминировать на рынке. Впрочем, с каждым годом на свет появляется всё больше проек-тов, задающихся целью «подружить» интерфейс ОС с третьим измерением. Поскольку место для статьи в журна-ле ограничено, я расскажу лишь о на-иболее известном GUI подобного ти-па – Project Looking Glass.

Начало данному проекту в недрах корпорации Sun Microsystems положил программист Хидейя Кавахара (Hideya Kawahara), корпевший над ним в сво-бодное от работы время. Руководство Sun заинтересовали первые результа-ты, и инженеру, а также группе выде-ленных ему помощников, было поруче-но сконцентрировать все свои усилия на разработке Looking Glass.

Демонстрация проекта в 2003 го-ду, а также новость об открытии его исходных кодов вызвали живейший интерес к трёхмерному GUI Кавахары. С тех пор проект развивается не толь-ко усилиями Sun, но и сообществом Open Source. После трёх лет разрабо-ток в декабре 2006 года свет увиде-ла первая стабильная версия Looking Glass под номером 1.0.

Looking Glass представляет собой трёхмерный графический интерфейс для операционных систем Linux, Solaris и Windows, который написан на язы-

Gnome 2.20

Looking Glass

Page 93: 069 Системный Администратор 08 2008

91№8, август 2008

ретроспектива

ке Java с использованием API Java 3D для достижения платформенной не-зависимости.

Внешне Looking Glass представ-ляет собой трёхмерное рабочее про-странство с объёмными фоновы-ми изображениями и трёхмерной па-нелью задач, напоминающей Dock из MacOS X v10.5. Трёхмерные иконки окон на ней в режиме реального вре-мени отображают своё содержимое, которое можно увидеть, просто наве-дя курсор на пиктограмму.

Одной из наиболее примечатель-ных особенностей Looking Glass яв-ляются объёмные окна, которые мож-но не только перемещать традицион-ным для «двухмерных» GUI способом, но и вращать относительно вертикаль-ной оси. В результате не используемое в данный момент окно пользователь волен повернуть торцом к плоскости экрана, дабы оно не занимало лишнее место на рабочем пространстве. В до-полнение к этому на торце размещает-

ся текст заголовка, облегчающий по-иск нужного приложения.

Каждое окно имеет возможность разворота тыльной стороной, на кото-рой пользователь может делать текс-товые заметки. Кроме того, она служит для вывода дополнительных меню на-строек, не загромождающих основную рабочую область. Наконец, для каждо-го окна существует опция настройки определённой степени прозрачности.

С компьютером на «ты»Что же ждёт нас в будущем? Давайте пофантазируем: повсеместное рас-пространение трёхмерных графичес-ких интерфейсов? Управление ком-пьютером при помощи голоса, жести-куляции или даже глаз? А может, через несколько лет нам предложат абсолют-но новую концепцию GUI, основанного на концепции «виртуальной реальнос-ти»? Будущее покажет. Ну а пока пот-ребности большинства пользователей продолжают удовлетворять двухмер-

ные графические интерфейсы, следу-ющие принципам, заложенным десят-ки лет назад. И ведь если немного за-думаться: зачем «ломать» то, что де-сятки лет работает так же исправно, как и швейцарские часы?

1. http://www.wikipedia.org.2. http://www.arstechnica.com.3. http://www.sitepoint.com.4. http://toastytech.com.5. http://www.mprove.de.6. http://www.guidebookgallery.org.7. http://www.kde.org.8. http://www.gnome.org.9. Мороз Д. Окно в электронный мир: ис-

тория развития графического поль-зовательского интерфейса. Часть 1. //Системный администратор, №11, 2007 г. – C. 86-91.

10. Мороз Д. Окно в электронный мир: ис-тория развития графического поль-зовательского интерфейса. Часть 2. //Системный администратор, №12, 2007 г. – C. 82-89.

KDE 4.0

Page 94: 069 Системный Администратор 08 2008

92

книжная полка

С переводом одного из предыдущих изданий этой книги читатели могли оз-накомиться несколько лет назад, когда вышла книга «Red Hat Fedora 4. Пол-ное руководство». На данный момент эта книга до сих пор остается, пожа-луй, самым подробным руководством по дистрибутиву Red Hat на русском языке. На «книжную полку» в этом ме-

Еще один учебный курс по Windows Vista позволит подготовиться к сер-тификационному тесту на получение звания Microsoft Certified IT Professional (MCITP): Enterprise Support Technician. Кстати, как и сама книга, данный экза-мен доступен на русском языке, что уп-рощает «вход» в армию сертифициро-ванных специалистов Microsoft.

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

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

Книга разбита на шесть основных частей. В первой рассматривается ус-тановка дистрибутива и первоначаль-ная настройка. Во второй части идет речь об использовании Fedora в качест-ве клиентской операционной системы. Здесь рассматриваются такие темы, как офисные приложения, мультимедиа и игры. Третья часть знакомит с выпол-

Поддержка корпоративных пользователей Windows VistaТони Нортроп, Дж. К. Макин

Fedora Unleashed 2008 EditionAndrew Hudson, Paul Hudson

Но даже если вы и не планируете сдавать данный тест, а являетесь сис-темным администратором или специ-алистом по поддержке пользователей на предприятии, где по тем или иным причинам используется Windows Vista, данная книга будет весьма полезна. Большинство вышедших изданий, пос-вященных Windows Vista, рассматри-вают данную операционную систему как работающую на отдельно стоящем компьютере, подключенному к Интер-нету, или максимум взаимодействую-щую с другими хостами домашней се-ти. В данном же учебнике рассматри-ваются темы, без знания которых вам не обойтись, если вы вынуждены об-служивать десятки или сотни инстал-ляций данной операционной системы.

Изучив это пособие для самоподго-товки, вы познакомитесь с такими те-мами, как установка и развертывание ОС на предприятии; настройка группо-

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

нением основных операций по систем-ному администрированию операцион-ной системы: управление пользовате-лями, автоматизация выполнения за-дач, мониторинг, резервное копирова-ние и восстановление, сеть, удаленный доступ, виртуализация на основе ги-первизора Xen. В четвертой части рас-сматриваются такие серверные службы как веб-сервер Apache, сервер печати, FTP-сервер, сервер электронной поч-ты, прокси-сервер, DNS и DHCP, LDAP-сервер. Пятая часть представляет со-бой краткое введение в языки Perl, PHP, Python и утилиты разработки. шестую часть собраны такие темы, как настрой-ка производительности, безопасность написание Shell-скриптов, управление модулями ядра.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена интернет-магазином

Books.Ru.

«Русская Редакция»

2008

560

978-5-7502-0363-5

≈ 577 руб.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Sams Publishing

2008

926

978-0-672-32977-7

≈ $31,49

Page 95: 069 Системный Администратор 08 2008

93№8, август 2008

книжная полка

Этим летом отечественные издатели радуют нас уже второй переводной книгой, посвященной открытой CMS. В прошлом номере журнала мы пи-сали об издании, посвященном CMS Drupal. В этом номере в наших об-зорах книга об не менее популярной системе управления содержимым – «Joomla!». Причем нужно отметить, что

Издательство O'Reilly всегда слави-лось отличными книгами по Open Source-технологиям (и не только). И фирменный дизайн обложки с чер-но-белым рисунком «под гравюру» уже давно рассматривается как своеобраз-ный «знак качества». Из этого правила не станет исключением и данная кни-га, посвященная созданию динами-

Изучаем PHP и MySQL, 2-е изданиеМишель Дэвис, Джон А. Филлипсческих веб-сайтов с использованием баз данных, в данном случае MySQL, и популярного языка программирова-ния PHP.

В книге рассмотрены следующие основные темы: базовые сведения о PHP (типы данных, логика исполне-ния программы, переменные, функ-ции, массивы, формы); пошаговые инструкции по установке PHP и MySQL и сопутствующих средств разработ-ки и утилит; основные понятия мира баз данных и MySQL, в частности, на-пример, таблицы и инструкции; осно-вы управления базами данных с помо-щью языка запросов SQL; информа-ция о совместной работе XHTML и PHP на веб-сайтах; безопасность и управ-ление доступом с учетом типичных «подводных камней»; обработка оши-бок, HTTP-аутентификация и многое другое. Авторы стараются все рассмат-риваемые концепции иллюстрировать

примерами, и в целом книга имеет яр-ко выраженный практический харак-тер. При всей «практичности», однако, авторы не скатываются к сборнику со-ветов и инструкций.

Незнание Linux/UNIX, «естественной среды обитания» – LAMP, для MySQL и PHP не станет помехой при работе с книгой. Авторы уделяют особое вни-мание установке и работе с компонен-тами в среде Microsoft Windows. Также не обойдены вниманием и пользова-тели Mac OS X. Все это делает данную книгу отличным учебником для первого знакомства с обсуждаемой темой.

Joomla! Практическое руководствоБэрри Нортперевод выполнен весьма оператив-но, по англоязычному изданию этого года, и в книге обсуждается актуаль-ная версия Joomla! 1.5.

В отличие от ранее рассмотренной книги по CMS Drupal, для начала ра-боты с этой книгой не требуется пред-варительной подготовки. Она написа-на простым языком, и автор старает-ся по минимуму использовать техни-ческие термины. Книга проведет чита-теля через все этапы разработки веб-сайта на основе системы управления содержимым Joomla. В ней содержит-ся краткий обзор приемов управления системой и рассказывается о ключе-вых концепциях организации инфор-мации, редактировании наполнения сайта и шаблонах. Также в книге рас-сматриваются темы более общего ха-рактера, например, как при использо-вании Joomla провести оптимизацию веб-сайта для поисковых систем и ре-сурсы сообщества Joomla. В отдель-ные главы вынесены такие темы, как

Обзор книжных новинок подготовил Андрей Маркелов

создание блога на движке Joomla, при-влечение посетителей. Приведен при-мер создания сайта для малого биз-неса и школьного портала. Для русс-коязычного читателя немаловажным обстоятельством является то, что от-дельную главу автор посвятил рабо-те с шаблонами и языками, отличны-ми от английского. Помимо шестнад-цати глав книга содержит ряд прило-жений, освещающих частные вопросы. Для уже существующих пользовате-лей Joomla предыдущих версий будет небезынтересна информация по миг-рации на актуальную версию с версии 1.0.x. Для разработчиков будет инте-ресна информация по Joomla API.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена интернет-магазином

Books.Ru.

«Символ-Плюс»

2008

448

978-5-93286-117-2

≈ 449 руб.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена интернет-магазином

Books.Ru.

«Символ-Плюс»

2008

448

978-5-93286-115-8

≈ 390 руб.

Page 96: 069 Системный Администратор 08 2008

94

сисадмин тоже человек

ОтпраздновалиБыл такой случай. Звонят мне из бухгалтерии, говорят, что ниче-го не работает, не могут работать с «1С», в общем, беда. Я беру на всякий случай свитч и бегу туда. Открываю дверь и вхожу. Кар-тина маслом: сонное царство на привале, одна из бухгалтерш во-обще спит на стуле и подает мало признаков трудового дня. Мед-ленно ползу к свитчу, смотрю на лампочки и поражаюсь его состо-янию (мигает всем, чем можно), думаю: «Сдох, бобик».

Запустил пинг и начал дергать порты, подумав, что вчераш-няя гроза могла какой-то порт вышибить. На 10-м порту пинги пошли, и все стало хорошо. Начал искать, откуда ноги растут, воткнул и начал дергать шнурки на системниках – ничего. Решил пройтись по проводу и... эти нехорошие женщины закольцевали свитч!!! Я был вне себя! Оказалось, что у какой-то бухгалтерши был день рождения, и все остальные были просто не в состоянии работать. И вот таким нахальным, но глупым образом они реши-ли отлынивать. Все это, естественно, списывали на неработоспо-собность сети, за что получили по мозгам от высшего начальства. Надеюсь, что такого больше не повторится.

[email protected]

ИзлучалРемонт. Сервер стоит в зале с операторами. Смотрю – пропал, нет сервера. Прихожу проверить – его нет на месте вообще (!?), пропал, одни провода остались.

Немая сцена – ГДЕ??? Смотрю – в углу стоит мой сервак...Спрашиваю тетку: «ЗАЧЕМ ВЫ ЭТО СДЕЛАЛИ!?»Она на меня смотрит чистыми глазами и говорит: «Он на ме-

ня излучал...».Vera Novikova

МечБыло дело, когда на заводе работал. Через неделю, после тупых косяков девушки из отдела снабжения, притащил на работу меч – над собой повесить. Естественно, был замечен на проходной, но охранник все понял, когда я выхватил меч из ножен и с вопля-ми убежал в КБ. Дальше – круче. В КБ наткнулся на секретаршу. Она с ошарашенным видом (меч уже в ножнах, а на лице – сви-репая улыбка) забилась в комнату отдыха (она напротив лестни-цы была). Прохожу по коридору, и тут меня встречает прежний админ. Улыбается, глядя на меч, и сообщает, что Олечка (снаб-женка-блондинка) просила зайти к ней. Как я этого ждал! Бро-саю в кабинете сумку, наушники, хватаю меч и топаю к Оле, что-бы помочь ей настроить графы в экселевской таблице, которую она уже третий год пользует.

Эффект превзошел все ожидания! Оля тихо пискнула и вер-нулась к работе! Старый дед, работавший с ней и косячивший не меньше, тоже замолк! Вопросы отпали! Все работает! Забло-кированные таблички в Ворде не пропадают никуда – руки пото-му что выпрямились! Тишь и благодать...

А меч у меня в кабинете еще долго висел – рядышком сиде-ли дизайнеры, которые работали под виндами, а не как снабжен-цы под убунтой.

[email protected]

Отчего ломается ИнтернетРаботаю на пивзаводе (мечта любого админа!). У нас 2 офиса: один в Канске, другой в Зеленогорске. Я работаю в Зеленогорске. Чтобы забирать данные с канского сервера, сделан мост. Подклю-чается через Radmin. Тут недавно сервер у меня перестал коннек-титься. Приходит бухгалтер и давай толкать свои теории: «Может, у вас система плохо работает», «Может, у вас проводки плохие» и т. д. Я-то понимаю, что дело совсем не у меня, так как у меня все работает: и сеть, и Интернет. Звоню в Канск, общаюсь с тамошним сисадмином. И на узел связи грешили, и так, и этак... Приходит опять тетка с бухгалтерии и давай опять на меня гнать, что у ме-ня все плохо работает. Я встаю и спокойно так говорю:

– Вы об удаленном администрировании знаете больше меня?Она рот открыла, а я продолжаю:– Вот и разбирайтесь сами, раз вы считаете себя умнее меня.Встала и пошла курить. Тут тетка поняла, что она не то сказа-

ла, летит следом! (Ну, типа, я просто уже от нервов такая). В ито-ге причина оказалась настолько банальная, просто слов нет. Мы про нее сразу подумали, но бухгалтеры не признавались. При-ходит одна из них и выдает:

– Ой, вы знаете, а мы там за Интернет не заплатили, это мо-жет повлиять на связь?

Я выпала в осадок... Такой злой я не была еще ни разу[email protected]

Знакомство с мышьюРаботаю сисадмином в учреждении здравоохранения. Всяких на-видался юзверей, но недавно встретил просто уникума, короче говоря, у тетки реальный трабл по жизни. Мышь она почувство-вала в руках впервые, как я поставил им всем новое специали-зированное ПО. До этого момента все они кувыркались в сине-ющем DOSе и FOX Pro 4.0, короче, зрелище удручающее!!! Пы-таюсь объяснить человеку, как пользоваться мышью. Это вы все думаете, что фигня полная – две клавиши, скролл и тягай куда попало. СЕЙЧАС! Только не для нее! После объяснения, нагляд-ных инструктажей тетка хватает мышь, поднимает ее над голо-вой и начинает кликать, как автомат Калашникова, без останов-ки. Любой геймер мог бы позавидовать скорости кликов за ми-нуту, да я и сам малость офигел. Пытаюсь не отвлекать ее осо-бо от процесса, осторожно интересуюсь: «А что Вы сейчас пыта-етесь сделать?» – та, не останавливаясь ни на секунду и продол-жая молотить по клавише, отвечает: «Да вот, пытаюсь вот на эту кнопку ткнуть!!!»

Короче, я полностью ушел в осадок, осознавая тот факт, что 10 минут обучения работы с «наикрутейшим манипулятором, осо-бо офигенной сложности» были для нее, как основы термодина-мики и квантовой физики вместе взятые...

[email protected]

По материалам сайта «Сисадмин тоже человек» – http://sysadmin.mail.ru

Page 97: 069 Системный Администратор 08 2008

95№8, август 2008

подписка на 2009 год

Российская ФедерацияnПодписной индекс: годовой – 20780, полугодовой – 81655 Каталог агентства «Роспечать»nПодписной индекс: годовой – 88099, полугодовой – 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог»nАльтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская

доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.runПодписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru

СНГ В странах СНГ подписка принимается в почтовых отделе-ниях по национальным каталогам или по списку номенк-латуры «АРЗИ»: nАзербайджан – по объединенному каталогу россий-

ских изданий через предприятие по распространению

печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21) nКазахстан – по каталогу «Российская Пресса» через

ОАО «Казпочта» и ЗАО «Евразия пресс»nБеларусь – по каталогу изданий стран СНГ через РГО

«Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)nУзбекистан – по каталогу «Davriy nashrlar» российс-

кие издания через агентство по распространению пе-чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-киллик, 5/3, офис 33)

nАрмения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22)

nГрузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)

nМолдавия – по каталогу через ГП «Пошта Молдовей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)

по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17)

по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)

nПодписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220

Подписные индексы:

* Годовой** Полугодовой*** Диск вкладывается

в февральский номер журнала, распространяется только на территории России

20780*

+ диск с архивом статей 2008 года

81655**

без диска

по каталогу агентства «Роспечать»

88099*+ диск с архивом статей 2008 года

87836**без диска

по каталогу агентства «Пресса России»

Page 98: 069 Системный Администратор 08 2008

96

СИСТЕМНЫЙ АДМИНИСТРАТОР№8(69), Август, 2008 год

УЧРЕДИТЕЛИЧастные лица

РЕДАКЦИЯГенеральный директорВладимир ПоложевецОтветственный секретарьНаталья Хвостова[email protected]Технический редакторВладимир Лукин

Главный редакторэлектронного приложения«Open Source»Дмитрий Шурупов

Внештатные редакторыАлексей БарабановВалентин СиницынРашид АчиловВлад ГлагольевАндрей УваровОлег ЩербаковАндрей БирюковАндрей Шетухин

РЕКЛАМНАЯ СЛУЖБАтел./факс: (495) 628-8253Евгения Тарабрина (доб. 119)reс[email protected]

Верстка и оформление[email protected]

Дизайн обложкиДмитрий Репин

По вопросам распространенияобращайтесь по телефону:Светлана Зобова(495) 628-8253 (доб. 121)

107045, г. Москва,Ананьевский переулок, дом 4/2, стр. 1тел./факс: (495) 628-8253Сайт журнала: www.samag.ru

ИЗДАТЕЛЬООО «С 13»Отпечатано типографиейГП «Московская Типография №13»Тираж 17000 экз.

Журнал зарегистрирован в Министерстве РФ

по делам печати, телерадиовещания и средств

массовых коммуникаций (свидетельство ПИ №

77-12542 от 24 апреля 2002 г.).

За содержание статьи ответственность несет

автор. Мнение редакции может не совпадать

с мнением автора. За содержание рекламных

материалов ответственность несет рекламо-

датель. Все права на опубликованные мате-

риалы защищены.

Вышел DVD-диск с архивом номеров журнала за 2007 годЧто на диске?n Архив 12-ти номеров журнала «Системный ад-

министратор» за 2007 год.

n Архив всех выпусков электронного приложе-

ния «Open Source» за 2007 год.

n Программные продукты от партнеров журна-

ла (триальные версии):

Kerio MailServer 6.5;

Kaspersky® Internet Security 7.0;

Антивирус Касперского® 7.0;

Система контроля доступа Zlock 2.0;

Прокси-сервер UserGate 4.2;

Handy Backup 5.8;

Paragon Drive Backup 8.51 Enterprise Server

Edition;

Network Inventory 1.6.0;

FastReport Server 1.0.10 demo;

ABBYY Lingvo 12;

WinRar 3.71;

Linux-дистрибутив Mandriva One 2008;

Linbox Rescue Server 20070703.

n Серверы/сети/администрирование:

FreeBSD 7.0-RELEASE;

Apache HTTP Server 2.2.8 (+ win32);

nginx 0.6.26, 0.5.35;

lighttpd 1.4.18;

ProFTPD 1.3.1;

PureFTPd 1.0.21;

vsftpd 2.0.6;

Sendmail 8.14.2;

Postfix 2.5.1, 2.6-20080221 (experimental);

Courier Mail Server 0.58.0;

Exim 4.69;

SpamAssassin 3.2.4;

DSPAM 3.8.0;

Policy Daemon 1.82;

SquirrelMail 1.4.13;

RoundCube 0.1-rc2;

MySQL 5.0.51a (+ win32);

PostgreSQL 8.3.0 (+ win32);

Firebird 2.0.3.12981 (+ win32);

SQLite 3.5.6 (+ win32);

Perl 5.10.0;

PHP: 5.2.5 (+ win32);

Python 2.5.2 (+ win32);

Ruby 1.8.6-p111, 1.9.0-1;

Nmap 4.53 (+ win32);

Ettercap 0.7.3.tar.gz (+ win32);

Ethereal 0.99.0 (+ win32);

Snort 2.8.0.2;

MRTG 2.16.1;

NuFW 2.2.9;

tcpdump 3.9.8;

NeTAMS 3.4.1rc1;

IPStat 0.9.7.2;

Linux kernel 2.6.24.1;

BIND 9.4.2 (+ win32);

OpenSSL 0.9.8g;

OpenSSH 4.7p1;

Samba 3.0.28;

Squid Web Proxy Cache 2.6.STABLE18;

CUPS 1.3.6;

Clam AntiVirus 0.92.1 (+ Clamwin 0.92);

Webmin 1.400;

Bacula 2.2.8;

Amanda 2.5.2p1;

n Пользовательское ПО:

OpenOffice.org 2.3.1 (LinuxIntel, Win32Intel);

Mozilla Firefox 2.0.0.12 (Linux, win32);

Mozilla Thunderbird 2.0.0.12 (Linux, win32);

Mozilla Seamonkey (Linux, win32);

Mozilla Sunbird 0.7 (Linux, win32);

Pidgin 2.4.0 (+ win32);

SIM IM 0.9.4.3 (+ win32);

X-Chat 2.8.4 (+ 2.8.5e win32);

aMule 2.1.3 (+ win32);

GIMP 2.4.5 (+ 2.4.4 win32);

MPlayer 1.0rc2 (+ win32);

VLC media player 0.8.6e (+ win32);

WINE 0.9.56;

DOSBox 0.72 (+ win32);

DOSEMU 1.4.0;

Midnight Commander 4.6.1;

Vim 7.1 (+ gvim71);

7-Zip 457 (+ win32);

GnuPG 2.0.8 (+ w32cli 1.4.8).

Как получить диск в подарок?n Клиенты компании SecurIT, заказавшие Zserver

в любой комплектации или более 50 лицензий

Zlock, получат диск в подарок.

Где можно приобрести диск?n В редакции журнала «Системный адми-

нистратор» по адресу: г. Москва, Ананьев-

ский переулок 4/2, стр. 1, в офисе 13 (мет-

ро «Сухаревская»).

n В online-магазине Linuxcenter.ru.

n В интернет-супермаркете Softkey.ru.

n Для обитателей и посетителей Савеловско-

го рынка, диск можно купить в точке торговли

печатными изданиями у главного входа.

Сколько стоит?Цена в редакции – 150 рублей.