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

Page 1

№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 Найди в журнале код. Следуй инструкциям. На кону настоящий

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


КО НЕО НЧ ЖИ ИЛ ДА ИС НН ЬД О ЕН ЬГ И ЗА

П АВ ОС РА ЛЕ Л ОТ НА П У РА СК БО А ТЕ

УЕ

ХА

Л

ВО ТП УС К

КА Н

БЫ С

ТР

О ТИ РАС РА КУ Ж П

ИЛ

Н ИК ОВ УЛ ОГО Ы ЗА ДНИ ТЯ Е НУ ЛИ С

И

Ь

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

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

Реклама

ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Роспечать – 20780, 81655 Пресса России – 88099, 87836 Интер-почта – тел. (495) 500-00-60 Реклама


в номере 4 ФОТОРЕПОРТАЖ С ДСА 2008

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

5 ТЕНДЕНЦИИ

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

АДМИНИСТРИРОВАНИЕ 6 Строим плановое IT-хозяйство

Какой будет вверенная вам IT-система в будущем? Дмитрий Бутянов

13 Легализация ПО. Цена ошибки!

Как не допустить ошибок в лицензировании ПО. Дмитрий Жеряков

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

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

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

53 Система компоновки данных

Изучаем новые возможности платформы. Андрей Луконькин

БЕЗОПАСНОСТЬ 54 Установка цепочки серверов сертификации как часть внедрения PKI в домене. Часть 1

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

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

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

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

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

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

Настраиваем почтовый сервер с фильтром спама и хранением архива писем. Александр Емельянов

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

Обзор почтового сервера MDaemon Email Server. Марат Давлетханов

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

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

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

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

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

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

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

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

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

Обзор программ удаленного администрирования. Сергей Кузнецов

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

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

№8, август 2008

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

Подробное руководство.

Андрей Маркелов

67 ЗАКОН ЕСТЬ ЗАКОН ПРОГРАММИРОВАНИЕ 68 Java: торжественное обращение с jar и атрибутами MANIFEST.MF Применяем в работе jar-файлы.

Алексей Саенко

72 Знакомимся с YAML

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

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

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

РЕТРОСПЕКТИВА 82 Окно в электронный мир: история развития графического пользовательского интерфейса Часть третья, заключительная

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

92 КНИЖНАЯ ПОЛКА 94 СИСАДМИН ТОЖЕ ЧЕЛОВЕК 47, 63, 71, 77

BUGTRAQ

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


ь т а р г и ур ы ж р в е ом а н й с о м комн т е е а ш д лу ч пр и ш т е е ый ж ж н и о а ь м д л г р а А о К Т ... рту

ем… и Toshiba sco… Ви это л е е т ж и i и Он ть C обед ук Dell ил а ? п ь ч т у у а з н игр ста у тб ду и ы о й я в н о г , п о у о н А вдр Интересн урсы, то я ПО мож ик ?.. ятл а акое им… и с л к р Е а п . н А . ? тор ть о отр ет… а а а м к м с ш и у о е н д му те к... п пом й а е а т н , ж е р т е одол р с е р в л и н а с ай П ей? а л с с и ы п на ия ых м т н с б а ч о под ля у д о г д о о ой к с мн р а о В т в У тся и д о ном! а нах з». л а н ри ж ур п g.ru е й a р и е к m с м a w.s мин м но w д о w А т « э а В ьно на л ыш е л р р е у г т ж а ы дов йте е а в роз с л с а о сь н ». П е з т и , 9. й р 8 у П , р 7 и й с тр в№ с ки и о н нем г л и ч е а а м р н н д р А За з жу и мы ле « и , е 9 д ы з д ко из № в ра е д т о й к у ир один е ак т и в щ яе с ь т а жд ов. о з д и р ь шп ло с а ы т р с г О оз ы р й ы п ер в


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

из « р П с к ий н и м атор к и Ад н о мму к ур с ы К ер ы  ук ты е в д ы р о н е р с б е че еп  У граммны ыделенны в ро  П туальные ир  В А» В Д « р из П й и нс к и м атор д к и А н о мму к ур с ы К ер ы  ук ты е в д ы р о н е р с б е че еп  У граммны ыделенны в ро  П туальные ир  В РИ» Т « з При й и к нс Адми тбук ы оу  Н бные курс родукты че еп У ы н м  р ам г о р  П

а к о б у л г к а К

. . . а р о н я ь ч и л о кр

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


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

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

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

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

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

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

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

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

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


тенденции 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 на корпоративных десктопах/серверах – ведь многие компании работают с системой, например, просто для того, чтобы проверить, работает ли их программное решение в данном окружении.

что на рынке 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

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

№8, август 2008


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

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

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

I

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

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


администрирование программа, а статистические данные, характеризующие работу информаци- Термины и сокращения онной системы, накапливаются в луч- Использованы материалы Википедии. шем случае в головах работников от-  IT (Information Technology) – информационные технологии. Технологии упдела на уровне интуиции. Это приворавления и обработки данных. дит к тому, что управление рисками не производится, а одна из важней-  SLA (Service Level Agreement) – соглашение об уровне услуги. Формальный ших задач отдела – ликвидация посдоговор между потребителем услуги ледствий уже свершившихся рисков. и её поставщиком. Как правило, терКстати, сами инциденты чаще всего мин SLA используется применительно не фиксируются, и IT-отдел не видит к IT и телекоммуникационным услугам. нужды в их фиксации: простые проВ таком соглашении может содержатьблемы решаются сразу, а сложные отся детальное описание предоставляекладываются до лучших времен. Служмого сервиса, в том числе перечень паба поддержки пользователей работараметров качества, методов и средств ет в курилке или в столовой, и принцип их контроля, а также штрафные санкличных связей и симпатий играет одции за нарушение этого соглашения. ну из важнейших ролей. Качество ра TCO (Total Cost of Ownership) – совоботы IT‑отдела целиком и полностью купная стоимость владения. Методизависит от разносторонности знаний ка, предназначенная для определеего работников, их доброй воли и жения затрат на информационные сислания работать. Бизнес-руководство темы (и не только), рассчитывающихся оценивает это самое качество по сена всех этапах жизненного цикла сисбе («работает ли мой компьютер»), мотемы. Не путать со стоимостью пробильности сотрудников («сегодня программного обеспечения, которая сограммист десять раз приходил, хороставляет обычно от 6% до 20% общей ший работник»). Сам IT-отдел не имеТСО-системы. ет бюджета, деньги выделяют по мере надобности по остаточному принципу.  KPI (Key Performance Indicator) – ключевой индикатор производительности. Эти траты воспринимаются бизнесом Характеристика эффективности бизкак неизбежное зло, которое надо тернес-процессов и работы каждого отпеть (не всегда молча).

Юность: самоосознание

дельного сотрудника. Набор KPI чаще всего уникален для каждого предприятия и конкретной должности. Пример KPI – время отклика на заявку для инженера службы поддержки.  ROI (Return On Investment) – окупаемость инвестиций. Метод оценки инвестиционных проектов, когда важнейшим критерием приемлемости выступает продолжительность периода,

в течение которого окупаются первоначальные затраты.  NPV (Net Present Value) – чистый дисконтированный доход. Показывает оценку эффекта от инвестиции, приведённую к настоящему моменту времени с учётом разной временной стоимости денег. Часто применяется для сравнения эффективности альтернативных вложений (при одинаковых начальных вложениях более выгоден проект с наибольшим NPV).  IRR – внутренний коэффициент рентабельности. Тот процент прибыли от проекта, который позволит окупить вложенные в него средства. Применяется для сравнения эффективности альтернативных вложений.  Gartner – международное аналитическое агентство. Основная специализация – информационные технологии. Пользуется большим авторитетом и весом в мире ИТ.  M IT (Massachuset ts Institute of Technology) – Массачусетский технологический институт. Мекка компьютерных технологий, мировой лидер в области науки и техники, новатор в областях робототехники и искусственного интеллекта.  MOF (Microsoft Operations Framework) – руководство по достижению необходимого уровня надежности, доступности, удобства сопровождения и управляемости решений на базе продуктов Microsoft. Основано на производственных методиках, собранных в IT Infrastructure Library (ITIL), составленной Central Computer and Telecommunications Agency – Агентством правительства Великобритании.

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

№8, август 2008


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

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

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

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


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

№8, август 2008

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


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

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

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

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

10

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

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


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

№8, август 2008

11


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

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

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

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

12

циями (см. рис. 3). Обычно выделяют такие составляющие, как управление содержимым (в том числе интранет-порталы), решения по анализу бизнес-данных, корпоративный поиск, объединенные коммуникации и совместная работа (электронная почта, аудио- и видеоконференции, обмен мгновенными сообщениями и др.). n Базовая инфраструктура – включает решения, помогающие компаниям разработать гибкую, эффективную, надежную и безопасную основу IT-среды (см. рис. 4). Наиболее значимыми составляющими данной категории являются управление правами и доступом, создание резервных копий и восстановление данных, управление установкой и мониторинг ПО, обеспечение информационной безопасности. К какому уровню зрелости относится инфраструктура вашего предприятия, вы можете определить сами (к сожалению, при условии знания английского языка). Для этого вам надо открыть сайт http://www.microsoftio.com. На этом сайте есть разделы, посвященные каждой из трех категории оптимизации. В каждом из разделов вы найдете опросник. Заполнив его, вы сможете увидеть, на каком уровне зрелости находится ваша IT-инфраструктура, а также получить рекомендации в выборе направлений развития вашей IT-системы в будущем. По-моему, весьма полезно! Знаете, сколько IT-систем России находятся на базовом уровне зрелости? Более 60%. Это означает, что возможный потенциал этих систем используется на 20-30%. И тут всё находится в ваших руках. Модели оптимизации помогут вам объективно оценить существующее положение вещей и определить пути развития и вашей информационной системы, и вас самих. Хотите оставаться «программистом» или «компьютерщиком» – ничего не делайте. Хотите стать заместителем генерального по информационным технологиям, директором департамента или IT-директором – пробуйте! У вас получится. В статье использованы иллюстрации с сайта http://www.microsoftio.com.


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

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

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

№8, август 2008

рению. Не покупайте лишнего, ищите чие именно таких подтверждений и свикомпетентных и внимательных продав- детельствует о том, что специалистам цов и консультантов. Softway можно доверить столь важный этап в истории вашей компании. Ваш поставщик Одни из самых недавних достижепрограммного ний компании Softway – получение выобеспечения. сокого статуса от Microsoft и авторизаКритерии выбора ция у компании Autodesk. Gold Certified Исходя из обозначенных проблем воп- Partner Microsoft – знак высокой оценрос выбора сертифицированного, гра- ки потенциала компании на IT-рынмотного помощника и консультанта ке, а также неоспоримое профессиопо продаже, внедрению лицензион- нальное признание качества работы ного ПО особо актуален. В софтвер- сотрудников. Получение авторизации ном бизнесе серьезными и професси- у ключевого производителя решений ональными компаниями могут считать- САПР, компании Autodesk, – это следся немногие – лишь те, которые офици- ствие признания высокого профессиоально авторизованы у производителей нального уровня сотрудников компании программного обеспечения и гаранти- Softway: прошедшие обучение и сертируют компетентность специалистов по фикацию в Autodesk сотрудники окапродажам, консультированию и внед- зывают всестороннюю качественную рению программных продуктов. консультационную и техническую подСотрудники компании Softway, де- держку по лицензированию и внедремонстрируя комплексный подход к про- нию продуктов для своих клиентов. цессу легализации ПО, отмечают необДобавим, что Softway также являетходимость проведения аудита имеюще- ся официальным сертифицированным гося программного обеспечения непо- партнером большинства мировых просредственно перед закупкой программ изводителей ПО. и оценки целесообразности приобретеСмотрите более подробную инфорния тех или иных программных средств. мацию на сайте компании: http://www. Далее необходимо уделить особое вни- softway.ru. мание выбору схемы лицензирования Статья подготовлена на основав непрерывном контакте с сертифи- нии отчетов отдела продаж компацированными специалистами. Не сто- нии Softway. ит объяснять, что эту непростую процеДмитрий Жеряков, дуру могут провести только те сотрудРуководитель департамента ники, чей профессиональный уровень развития подтверждён центрами обучения и сертификации производителей ПО. НалиНа правах рекламы

13


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

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

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

Р

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

14

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

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


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

Windows Installer Это сервис установки и конфигурирования программных продуктов, который входит в состав операционной системы. Также он может устанавливаться как пакет обновления или отдельный дистрибутив. В настоящее время используется Windows Installer 4.5, который можно бесплатно загрузить с сайта Microsoft в виде заплатки (hotfix) KB842288 – http://download.microsoft. com/download/2/6/1/261fca42-22c04f91-9451-0e0f2e08356d/WindowsXPKB942288-v3-x86.exe. Windows Installer, как и любое другое быстрое исправление, поддерживает ряд ключей командной строки, обеспечивающих управление автоматической установкой пакета: n /norestart – не перезагружать компьютер после установки обновления; n /queit – выполнить установку в «тихом» режиме; n /help – вывод справки на экран, содержащей ключи и их краткое описание.

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

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

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

Описание

/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 – полный пользовательский интерфейс

по адресу – http://download.microsoft. com/download/7/c/4/7c426dfc-46e24ded-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-файлов. С помощью этой утилиты можно не только управлять устанавливаемыми компонентами, но и указать серий-

ный номер продукта, изменить выводимые сообщения и др. Установка 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

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

где *.msi – полный путь к файлу с расширением MSI, например: c:\Windows\system32\msiexec.exe ↵ /fa/qn/jm "acdsee10.msi"

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

№8, август 2008

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

15


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

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

and Settings\%username%\Local Settings\Application Data\ ции, используемую на протяжении всего процесса инсDownloaded Installations\{0051E50E-CECD-4E04-A71A- талляции. В таблице 4 приведена информация о назнаB8C49733542A}\ACDSee 10 Photo Manager.msi. Именно этот чении таблиц. файл необходимо открыть утилитой orca.exe. Orca.exe рассматривает msi-файл как SQL-базу дан- Доступ к msi-файлам программным способом ных, где msi-файл – это база данных, левая колонка таб- Для обеспечения программного управления базой данных, лицы (см. рис. 2), в которой хранятся различные настрой- хранящейся в msi-файле, используется шаблон, приведенки и списки. Правая часть – список полей выбранной таб- ный в листинге 1. Необходимо отметить, что шаблон чтения данных отличается от шаблона коррекции данных. О нем лицы с соответствующими значениями. будет рассказано отдельно.

Структура msi-файлов

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

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

Листинг 1. Шаблон доступа к базе в msi-файле Set obj = CreateObject ("WindowsInstaller.Installer") Set base = obj.OpenDatabase (MSI,Mode) base.OpenView(SQL-query).Execute base.Commit

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

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

Файловые таблицы

Имя таблицы

Краткое описание

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

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

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

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

16


администрирование торым является полный путь к msiфайлу. Второй – режим доступа к базе данных: n 0 – только чтение; n 1 – чтение / запись. На третьей – реализовано выполнение задаваемого запроса. SQL-запрос задается с помощью метода OpenView, а выполнение запроса – с помощью метода Execute. Напомним, что в SQL-запросе регистр названия полей и имен таблиц имеет значение. В последней строке осуществляется запись сделанных изменений в базе с помощью команды Commit.

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

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

Краткое описание

File

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

RemoveFile

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

Font

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

SelfReg

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

Media

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

BindImage

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

MoveFile

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

DuplicateFile

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

Environment

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

Icon

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

MsiFileHash

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

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

Краткое описание

Property

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

Binary

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

Error

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

Shortcut

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

ReserveCost

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

Чтение существующих полей Для реализации шаблона поиска используется шаблон (см. листинг 2), отличный от приведенного в листинге 1. Это объясняется тем, что запись, удаление, замена осуществляются у единичного поля, а вывод на экран осуществляется для всех полей. Трансформация листинга осуществляется в третьей строке листинга 1. Она разбивается на две подстроки – это строки 3 и 4 в листинге 2. Здесь разносятся методы OpenView и Execute. Далее осуществляется чтение массива строк. Обратите внимание на то, что в запросе SELECT поля могут быть перечислены только по именам. Значение «*» в данном случае не работает. А во время чтения данных необходимо указывать нумерацию полей (Record.StringData(1)), начиная с единицы (1). В листинге 2 приведен пример чтения всех полей (Property, Value) таблицы Property файла ACDSee 10 Photo Manager.msi: Листинг 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.Execute Do Set Record = View.Fetch If Record Is Nothing Then Exit Do

№8, август 2008

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

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

17


администрирование ваются без кавычек; все присваиваемые значения – в кавычках и, наконец, названия полей и таблиц чувствительны к регистру. Листинг 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')").Execute b.Commit

Удаление существующих полей из таблицы Удаление какого-либо поля осуществляется в соответствии со следующим алгоритмом: n установить курсор на таблицу, в которой необходимо удалить параметр; n установить курсор на удаляемый параметр в таблице; n нажать кнопку <DEL> на клавиатуре или правую кнопку мыши, а в контекстном меню – DELETE; n подтвердить намерение удалить параметр. Эту же задачу можно решить программным способом (см. листинг 4), используя шаблон 1. Для обеспечения возможности записи в таблице необходимо установить второй параметр метода OpenDatabase равным единице (1). Листинг 4. Удаление существующего атрибута в таблице Set a = CreateObject("WindowsInstaller.Installer")

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

18

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

Изменение значений существующих полей Изменение значения осуществляется путем установки курсора в необходимую ячейку двойным щелчком левой кнопки мыши (см. рис. 3). Программное изменение свойства осуществляется по тем же правилам. По сравнению с предыдущими двумя случаями, изменяется только запрос. В листинге 5 осуществляется отключение компонента Device Detector. Листинг 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'").Execute b.Commit

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


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

П

ричем причина этого отнюдь не в отставании технологий, а в особенностях размещения информации в современных файловых системах, и в первую очередь во фрагментации файлов. Это верно как в отношении работы пользователя с документами, так и в отношении самой операционной системы (фрагментация системных файлов, файла подкачки). Примечательно, что от фрагЛюбой системный администратор знает, что общая ментации страдают не только рабопроизводительность компьютерной системы при решении чие станции сотрудников любой компакакой-то задачи равна производительности самой «узкой» среди нии, но и различные серверы. Для реиспользуемых ресурсов ее части. И в последнее время таким шения описанной проблемы применяются специальные программы – деместом все чаще и чаще становятся жесткие диски. фрагментаторы. Одной из них является продукт Diskeeper от компании (в том числе и с разбитыми на милли- но удобный и функциональный инструDiskeeper Corporation. Он отличается оны частей объектами), управление пи- мент для профессионалов. широким набором функциональных танием на ноутбуках, ведение истории Марат Давлетханов возможностей, которые позволяют го- выполненных операций и т. д. Еще одной особенностью проворить о нем как о профессиональном граммы Diskeeper является наличие инструменте. Дефрагментация с помощью про- у нее нескольких версий, рассчитанграммы Diskeeper может осущест- ных на использование на различных вляться как вручную, так и полностью компьютерах. Две из них предназнав автоматическом режиме. Второй ва- чены для рабочих станций. Они отриант особенно удобен тем, что не тре- личаются друг от друга наличием/отбует вмешательства пользователя. Он сутствием технологии I-FAAST и максущественно облегчает работу адми- симально возможным объемом обранистратора, которому необходимо про- батываемых дисков. Серверных веризвести первоначальную настройку сий у Diskeeper тоже две. Основное параметров работы программы и в бу- различие между ними – возможность дущем вмешиваться только при необ- или невозможность работы с большиходимости их изменения или для ре- ми томами, объем которых исчисляется терабайтами. Комментарии Владимира шения возможных вопросов. Ну и конечно же, нельзя не отме- Высоцкого, руководителя отдела В рас с матриваемой програм ме реализовано несколько уникаль- тить наличие в рассматриваемой ли- экспертизы ЗАО «Софткей» ных разработок компании Diskeeper нейке программ продукта Diskeeper Проблемы фрагментации не тольCorporation. InvisiTasking обеспечива- Administrator. Он предназначен для уда- ко приводят к замедлению работы ет незаметность процесса дефраг- ленного управления системой дефраг- пользователей, но и зачастую влияментации для пользователя (исполь- ментации на всех компьютерах (вклю- ют на безопасность. Можно привести зуются только свободные системные чая серверы), входящих в информа- пример антивирусной проверки фрагресурсы), Intelligent Defragmentation ционную систему предприятия. С его ментированных файлов и дефрагменотвечает за выбор стратегии оптими- помощью системный администратор, тированных. В последнем случае назации (это позволяет добиться макси- не вставая со своего рабочего места, блюдается заметный прирост скоромальной производительности жест- может устанавливать и при необходи- сти около 18‑20%. Конечно, это важно мости обновлять продукты Diskeeper только при первоначальной проверке, кого диска). Помимо перечисленных техноло- на других ПК, настраивать их работу, т.к. современные антивирусные регий у программы Diskeeper есть и не- осуществлять мониторинг и выявлять шения производят индексацию и последующие проверки происходят бысмало других полезных возможнос- возможные проблемы. Самым серьезным недостатком трее. В случае резервного копироватей. В качестве примера можно отметить полную поддержку VSS (Volume продуктов Diskeeper является англо- ния скорость доступа к файлам может Shadow Copy Service) и 64-битных язычный интерфейс. Причем разра- быть критичной. Так что своевременоперационных систем, проведение ботчики обещают, что уже в ближай- ная дефрагментация, особенно серведефрагментации в разделах, в кото- шее время на рынке появятся русско- ров с критичными данными, позволит рых осталось меньше 1% свободно- язычные версии этих программ. Будем повысить скорость резервного копирого пространства, работа с очень силь- надеяться, что они сдержат свое слово, вания и как следствие вероятность соно дефрагментированными файлами поскольку Diskeeper – это действитель- хранения данных.

№8, август 2008

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

19


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

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

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

В

споминая статью [1], посвящен- ру в кошки-мышки. Нужно было исную бесплатному почтовому кать какие-то решения, и, как всегда, серверу Office Mail Server, с жа- все должно было быть дешево, но калостью отмечу, что поддержка и раз- чественно. витие проекта сошли на нет. Однако Собственно, почти все оказалось функционал его по-прежнему актуа- под рукой. В качестве хранителя почлен, и малая требовательность к ре- тового архива и программы, обессурсам компьютера вкупе со стабиль- печивающей быстрый поиск старых ной работой заставляют обратить писем, был выбран всем известный на него внимание. MS Outlook, который входит в станOMS верой и правдой служил в на- дартный набор MS Office. Антиспамшей компании почтовым голубем. Вре- фильтром была выбрана программя шло, и запросы сотрудников компа- ма SpamPal. Для лучшего понимания нии менялись. Однажды, когда некое всей схемы рассмотрим каждый комважное письмо было утеряно сотруд- понент отдельно. ником, стало понятно, что есть необходимость иметь общий архив писем Office Mail Server с быстрым поиском по заданным ус- Чтобы понять принципы работы OMS, ловиям. Благо, что общий поток элек- достаточно прочитать статью [1]. В нетронной почты укладывался не более скольких словах, этот сервер имеет чем в 100 писем в день, включая спам. в себе перечень компонентов, обесКоличество почтового хлама росло печивающих транспорт, сортировку с каждым днем. и фильтрацию почтового потока: SMTPСпам-фильтр сервера OMS лишь и POP3-серверы, SMTP- и POP3-клипревращал борьбу со спамом в иг- енты, сортировщик и фильтр спама,

20

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


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

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

Этот проект, аналогично OMS, не имеИмя Тип Допустимый диапазон значений По умолчанию ет полноценного развития уже неMaxLargeFileSize REG_DWORD 0x00000001-0x00005000 0x00005000 20480 (20 Гб) сколько лет. Однако функциональность работы SpamPal заставляет рассматWarnLargeFileSize REG_DWORD 0x00000000-0x00005000 0x00004C00 19456 (19 Гб) ривать его как серьезного кандидата MaxFileSize REG_DWORD 0x001F4400-0x7C004400 0x7BB04400 для борьбы со спамом. В качестве ра2075149312 (1,933 Гб) бочей была использована версия 1.594 WarnFileSize REG_DWORD 0x00042400-0x7C004400 0x74404400 этого продукта, но есть и более свежие 1950368768 (1,816 Гб) бета-версии. Для фильтрации спама SpamPal дельно прост, и его запуск в работу, щать с диска на диск и даже переноиспользует так называемые DNSBL при правильном понимании всех мани- сить на другой компьютер и работать (DNS blacklists, «черные списки» DNS), пуляций, дело пары минут. Однако есть с ним как на личной машине. Это перкоторые используются провайдерами один нюанс. После установки програм- вый плюс для нашей задачи. Второй для блокировки почты с серверов, за- ма работает только в контексте поль- плюс – PST-файлы могут быть сжаты меченных в рассылке спама. Попрос- зователя, то есть для ее запуска (пусть как средствами Outlook, так и при поту говоря, SpamPal, получая письмо даже и автоматического) необходимо мощи архиваторов. Для примера, из почтового ящика, делает запрос войти в систему. Но нас это не совсем файл личных папок размером 3 Гб мона наличие IP-адреса сервера отпра- устраивает, все должно функциониро- жет быть сжат архиватором WinRAR вителя в списке DNSBL, и, при поло- вать независимо от того, был выполнен вдвое. Поскольку PST-файлы будут сожительном ответе помечает его как вход в систему или нет. Для решения этой задачи будем использовать ути- держать большое количество писем, спам. Помимо этого после включения литу WinService Manager [2]. Ее нужно то будет вполне уместным рассказать фильтра RegEx (от regular expressions – запустить после установки SpamPal об ограничении размера этих файлов. регулярные выражения), есть возмож- и указать имя сервиса, а также мес- На данный момент существует два ность фильтровать почту по вхождени- то расположения файла spampal.exe формата этих файлов – ANSI и Unicode. ям слов. В помощь к этому можно ис- и рабочей папки. В результате наш Возможность создания файлов личпользовать, например, новостную сис- спам-фильтр будет работать как сер- ных папок в формате Unicode появитему электронного журнала «Спам- вис. Вдобавок к этому нужно удалить лась в MS Outlook 2003. Это позволитест» (spamtest.ru) от Лаборатории Кас- SpamPal из автозагрузки, куда он про- ло увеличить максимальный размер с 2 Гб (для формата ANSI) до 20 Гб перского. Каждую неделю они публи- писывает себя после установки. Нужно отметить, что для первона- (для формата Unicode). Однако сукуют самые популярные тематики спама с примерами писем, на основе кото- чальной работы программа уже имеет ществует одна проблема с использорых вы можете строить регулярные вы- минимальную конфигурацию. Поэтому ванием PST-файлов. При приближеражения для фильтрации. Нужно отме- зачастую пользователю, пытающему- нии к максимальному размеру файтить, что SpamPal требует некоторого ся «прикрутить» антиспам к почтово- ла личных папок MS Outlook начинапервоначального обучения, потому что му клиенту, достаточно следовать инс- ет работать нестабильно. Рассмотрим спамом, по его мнению, вполне могут трукциям соответствующего раздела параметры реестра, которые помогут руководства к программе [3]. Как на- не допустить этого. оказаться доверенные отправители. В таблице первые два параметПосле установки SpamPal являет- строить SpamPal для нашего случая, ра относятся к файлам в формате ся посредником между почтовой про- будет описано дальше. Unicode. Параметр MaxLargeFileSize граммой и сервером, с которого послужит для указания абсолютного маклучается почта. Сортируя сообщения Microsoft Outlook на ликвидные и спам, программа ниче- Этот продукт в представлении не нуж- симального размера для файлов PST. го не удаляет и оставляет право выбо- дается. Более того, существует боль- По достижении этого размера увелира конечному пользователю. Она лишь шая вероятность, что у человека, ко- чение файла прекращается. Параметр помечает сообщение, расцененное торый будет отвечать за архивацию WarnLargeFileSize служит для указаей как спам, и пересылает его даль- почты, он уже установлен в составе ния максимального количества данных ше. Практически все самые извест- MS Office. Я заострю внимание лишь в файлах PST. После достижения этого ные почтовые клиенты могут работать только на нужных нам особенностях предела добавление данных в файлы со SpamPal. Именно поэтому програм- программы. Как уже говорилось, в на- PST невозможно, однако физический ма оказалась именно тем, что нужно. шей схеме он будет выступать хра- размер файлов может увеличиваться Напомню, что OMS имеет встроенный нилищем электронных сообщений из-за внутренних процессов. Два следующих параметра отPOP3-клиент и для транспорта почты и обеспечивать поиск необходимой носятся к файлам в формате ANSI. от провайдера к ящику конечного по- корреспонденции. Всю информацию MS Outlook хра- MaxFileSize, WarnFileSize – то же салучателя использует связку POP3-клиент – фильтр спама – POP3-сервер. Те- нит в PST-файлах (файлы личных па- мое, что и параметры MaxLargeFileSize пок). Причем это автономное хранили- и WarnLargeFileSize соответственперь мы добавляем еще одно звено. Процесс установки SpamPal пре- ще, и его преспокойно можно переме- но. Приращение значений парамет-

№8, август 2008

21


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

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

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

ров для файлов в формате Unicode чае ей выступает POP3-клиент OMS) осуществляется в мегабайтах (Мб), находятся на одном компьютере, приа для файлов в формате ANSI – в ки- меняется следующая конфигурация. лобайтах (Кб). Вместо адреса POP3-сервера провайЗначения данных параметров ус- дера указывается 127.0.0.1, а в качесттанавливаются в реестре в следую- ве номера порта должно быть указано число 110, но… На 110 порту на локальщих ветках: Outlook 2003: ной машине ждет подключений POP3n HKEY_CURRENT_USER\Software\ сервер OMS, поэтому для исключения Policies\Microsoft\Office\11.0\Outlook\ конфликта укажем другой номер порPST; та, например 11010. Все остальное осn HKEY_CURRENT_USER\Software\ тается без изменений. Microsoft\Office\11.0\Outlook\PST. Далее обратимся к SpamPal. В настройках программы в пункте «СоOutlook 2007 единения» удаляем стандартные наn HKEY_CURRENT_USER\Software\ стройки и добавляем новый порт (стоPo l i c i e s\ M i c r o s of t \O f f i c e\12 .0 \ ит отметить, что если вы используе- Итог Outlook\PST; те или будете использовать несколь- Что в итоге мы получим? Электронное n HKEY_CURRENT_USER\Software\ ко POP3-клиентов OMS, то для каж- сообщение, пройдя проверку на спам, Microsoft\Office\12.0\Outlook\PST. дого подключения нужно будет создать доставляется на сервер OMS, а именновый порт). На вкладке «Установки» но в папку получателя, а копия письЕсли таких параметров не сущест- отмечаем «Конкретное имя сервера» ма – в архивную папку. После этого и указываем имя сервера провайде- письмо выкачивается почтовым клиенвует, их можно создать. ра и порт (в нашем случае 11010). Та- том и появляется у получателя. А копия Собираем компоненты ким образом, используя авторизаци- письма «летит» в папку с текущей почвоедино онные данные POP3-клиента OMS, той и хранится в PST-файле. Для начала рассмотрим, как каждая SpamPal подключается к ящику, куда Такая схема обеспечивает некотопрограмма должна быть настроена идет вся почта, забирает ее, проверя- рую гибкость управления почтовым для построения задуманного, а затем ет каждое сообщение на принадлеж- потоком. Так, например, администрауточним нюансы. ность к спаму и передает далее кли- тор может отсеивать спам на сервере OMS является в этой схеме цен- енту. В случае, если письмо оказыва- OMS при помощи встроенного спамтральным звеном, с него и начнем. ется, по мнению SpamPal, спамом, оно фильтра: копировать в специально соДля получения почты с ящика провай- не удаляется, но в тему письма добав- зданный ящик или просто удалять. Лидера в настройках POP3-клиента долж- ляется «**SPAM**», а также добавляет- бо предоставить право пользователям ны быть указаны соответствующие па- ся заголовок «X-SpamPal:», в котором сортировать сообщения при помощи раметры: имя или IP-адрес POP3-сер- указывается фильтр, по мнению кото- правил непосредственно на этапе повера провайдера, порт подключения рого данное сообщение – спам. лучения почтовым клиентом. (110 по умолчанию), данные авторизаЧто касается MS Outlook, здесь все ции, тайм-аут подключения, использу- предельно просто. Напомню, что вся 1. Емельянов А. Организуем работу офисемый сортировщик, спам-фильтр и др. почта, проходящая через OMS, копиного почтового сервера на платфорНо помня о том, что между провайде- руется в учетную запись, которая явме Windows. //Системный администром и нашим клиентом должен рас- ляется архивной. Это задается опциратор, №12, 2006 г. – С. 40-43 – http:// полагаться SpamPal для фильтрации онально в настройках почтового серwww.samag.ru/cgi-bin/go.pl?q=articles; спама, обратимся к руководству по его вера. Минус ее в том, что все письма n=12.2006;a=02. настройке [3]. В случае, когда SpamPal хранятся в файловой системе в виде 2. http://winservice.ucoz.ru. и почтовая программа (в данном слу- .eml‑файлов в соответствующей архи- 3. http://www.spampal.org/manual-rus.

22


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

О

бычно, когда речь заходит о решении этой задачи, вспоминают о таких полномасштабных продуктах, как 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, поддержка серых и персональных белых листов, защита от спама, система обмена защищенными мгновенными сообщениями и многое другое. Особенностями рассматриваемой программы являются интуитивно понятный интерфейс и подробная справочная система. Все вместе это обеспечивает возможность настрой-

№8, август 2008

Свой собственный почтовый сервер Сегодня одной из самых часто используемых в бизнес‑процессах компаний интернет-технологий является электронная почта. Она представляет собой наиболее удобное и оперативное средство обмена информацией. Поэтому системным администраторам приходится сталкиваться с задачей организации корпоративного почтового сервера, который бы обеспечил максимальную эффективность работы сотрудников с электронными сообщениями. ки MDaemon Email Server специалис- ретение ПО, отказавшись от заведомо тами, не имеющими опыта в решении ненужных функций. подобных задач. Марат Давлетханов Достаточно интересна политика лицензирования, используемая компанией Alt-N Technologies. У продукта MDaemon Email Server есть две версии: Standard и Pro. Первая из них обладает минимальным набором функциональных возможностей для реализации полноценного почтового сервера. Вторая версия расширенная. При ее использовании продукт может применяться для решения многих дополнительных задач, связанных с организацией эффективного взаимодействия сотрудников компании. Но это еще не все. У продукта есть два дополнительных модуля, обес- Комментарии Владимира печивающих расширенную функцио- Высоцкого, руководителя отдела нальность. экспертизы ЗАО «Софткей» Первый из них, Outlook Connector Хотелось бы заметить, что в конце авfor MDaemon, предназначен для орга- густа ожидается выход новой версии низации коллективной работы, реа- Mdaemon 10 и SecurePlus 4. Разработлизованной в пакете Microsoft Outlook. чики постарались учесть все замечаПри этом сотрудникам компании ста- ния пользователей продукта и добановятся доступны такие инструменты, вили более 40 новых «фич». Среди как общие календари, адресные книги, них: работа с несколькими доменами, расписания встреч, списки дел и т. п. полностью обновленный World Client Второй модуль – SecurityPlus for и поддержка IPhone. Новая версия MDaemon. Он предназначен для су- полностью поддерживает Outlook 2007. щественного усиления базовой защи- Основные усилия программистов быты почтового сервера. В нем исполь- ли сосредоточены на оптимизации зуется Kaspersky Antivirus Engine (по- и ускорении работы. И это им удаиск и блокирование вирусов, шпионов лось. При тестировании мы наблюдаи другого вредоносного ПО), техноло- ли прирост производительности погия Recurrent Pattern Detection и т. д. рядка 50%. Вынесение данных возможностей Также хочу заметить, что с выхов отдельные модули позволяет ком- дом новой версии продукта домашние паниям самостоятельно решать воп- пользователи и представители малых рос об их необходимости и целесооб- организаций смогут получить бесплатразности приобретения. Это позволя- но лицензию MDaemon Free на 5 польет минимизировать затраты на приоб- зователей для ознакомления.

23


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

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

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

В

ышедшая весной этого года опе- полнительных пояснений. В рамках ра- существенно увеличить стабильность рационная система Windows боты файловой системы транзакцион- работы как приложений, так и системы Server 2008 содержит целый ряд ность означает целостность выполне- в целом. Еще одним дополнительным новых интересных функций, об одной ния операций с файлами. Другими сло- преимуществом TxF является возможиз которых я хочу рассказать в этой вами, в любой момент времени состо- ность дальнейшей доработки и усостатье. Файловая система является яние файловой системы всегда име- вершенствования данной технологии, одним из ключевых элементов любой ет целостную структуру, то есть даже что позволит обеспечить ей дальнейоперационной системы, так как по су- при внезапном сбое питания на жест- шее развитие. ти это фундамент, на котором строит- ком диске не будет ошибок, связанся весь функционал ОС. В Windows ных с нарушением целостности фай- Область применения Server 2008 таким фундаментом яв- лов, свойственных предыдущим верси- Приведя краткое пояснение о том, ляется транзакционная файловая сис- ям файловой системы. А, как извест- что же из себя представляет трантема. но, сбои при работе с системными фай- закционная файловая система, хотеТранзакционная файловая система лами могли привести к очень печаль- лось бы сказать несколько слов о том, (TxF) – это расширение файловой сис- ным последствиям, вплоть до полной для каких задач предназначена дантемы NTFS, позволяющее выполнять потери данных. Транзакционная фай- ная технология и, что тоже немаловажфайловые операции над томом фай- ловая система использует для сво- но, для чего она не подходит. TxF буловой системы NTFS в рамках тран- ей работы транзакции, то есть закон- дет очень полезна при использовазакций. Для читателей, не посвящен- ченные операции с файлами, что поз- нии на серверах, выполняющих часных в специфику работы с базами дан- воляет добиться вышеупомянутой це- тые операции по изменению файлов. ных, слово «транзакция» может пока- лостности файловой системы. Таким Например, на серверах баз данных заться непонятным и требующим до- образом, функционал TxF позволяет или файловых хранилищах. На таких

24


администрирование серверах частые обращения к файлам в многопользовательском режиме могут привести к потере данных при сбое электропитания, 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. Например, система документооборота может использовать эту возможность для работы как с файловой системой, так и с базой данных и все в рамках одной транзакции. Другой пример ис-

№8, август 2008

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

Операции над файлами, поддерживаемые 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 создание транзакций на уровне ядра: IntPtr tx = CreateTransaction ↵ (IntPtr.Zero, ↵ IntPtr.Zero,0,0,0,0, null);

n транзакционное удаление файла: If (!DeleteFileTransactedW ↵ (file1, tx))

n завершение транзакции при успешном выполнении предыдущего пункта: CommitTransaction(tx);

n откат транзакции при ошибке: RollBackTransaction(tx);

n закрытие ссылки на транзакцию: CloseHandle(tx);

На этом я завершаю свое краткое описание транзакционной файловой системы Transactional NTFS. Думаю, что появление новой файловой системы будет полезно не только разработчикам, но также и администраторам, так как позволит повысить надежность работы корпоративных ресурсов в целом. 1. Алексей Федоров «Microsoft Windows Server 2008. Краткий обзор ключевых новинок». 2. http://msdn.microsoft.com/en-us/library/ bb968806(VS.85).aspx – раздел MSDN, посвященный Transactional NTFS.

25


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

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

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

С

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

26

поэтому дистрибутив 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), больше ориентированными на специалистов, чем


администрирование на широкое применение. Хотя учитывая, что работают они стабильно, серьезных недостатков за пару лет обнаружено не было, поэтому ничто не мешает их использовать для защиты сети. Дистрибутив включает в себя полный спектр самого разнообразного программного обеспечения, обеспечивающего: 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), ftp-proxy, IMSpector (IM-прокси с поддержкой Jabber/XMPP, MSN, IRC, Yahoo и других); n серверы: Apache, DNS, DHCP и OpenSSH.

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

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

Установка ComixWall

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

Дистрибутив доступен в двух версиях – для платформ i386 и amd64. Загрузка возможна только через BitTorrent. И некоторые другие приложения, Размер дистрибутива чуть больше в том числе предназначенные для сбо- 140 Мб, для установки которого трера и вывода разного рода статистики. буется не менее 650 Мб свободного Все настройки могут быть произведе- места на диске. Кстати, в первое врены стандартным способом из команд- мя версия 4.2 была доступна тольной строки. Начиная с версии 4.0b появился веб-интерфейс, написанный на PHP. Использование gettext позволяет легко перевести его на другие языки. Хотя в настоящее время их немного, доступны только английский, испанский и турецкий варианты. Кроме базовых сетевых установок, с его помощью можно настроить правила пакетного фильтра и сервисов, входящих в комплект, производить мониторинг основных системных параметров и загрузки сети и многое другое. Плюс при помощи веб-интерфейса можно получить доступ к man-страницам и другой документации. Некоторые возможности (VPN, VLAN, CARP, SNMP) пока настраиваются только из командной строки. Возможность их конфигурирования через веб-интерфейс планируется добавить уже в следующих релизах. Кроме этого, в планах разработчиков добавлеРисунок 2. Окно ComixWall Administration Interface

№8, август 2008

27


администрирование 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 включает антивирус, систему обнаружения/предотвращения атак, контентный фильтр вебстраниц и антиспам. Все это должно управляться через единый интерфейс.

темы лишним не будет. В крайнем случае следует почитать документы [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».

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

Скрипт поначалу запросит синхронизировать время с NTP-сервером: 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]

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

После установки пакетов, запустится еще один скрипт, на этот раз постинсталляционный. Он повторит некоторые вопросы, задаваемые во время установки системы, предлагая в качестве значения по умолчанию введенное ранее. Последовательно нужно будет подтвердить имя узла, адреса шлюза и настройки сетевых интерфейсов. Далее следует указать, какой интерфейс соответствует LAN и WAN: Which is LAN interface? Options: 1) pcn0 2) pcn1 Type 'done' to exit Selection? (#/done) [1]

Отмечаем нужный цифрой и аналогично поступаем для WAN. Если все настройки верны, то на запрос: Configuration complete! You can restart or type 'done' to exit. Choose configuration method: Options: 1) Automatic 2) Interactive Type 'done' to exit Selection? (#/done) [1] done

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

28

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


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

Веб-интерфейс По умолчанию в системе заведено две учетных записи, имеющих доступ через веб-интерфейс: 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 пунктов отвечающих за работу с конк-

№8, август 2008

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

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

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

Заключение На сегодняшний день ComixWall не выглядит простым в освоении решением и вряд ли подойдет новичкам. Но наличие множества предустановленных сервисов и веб-интерфейса, упрощающего их настройку, будет оценено опытными администраторами, которым требуется удобная, понятная, безопасная, многофункциональная и легко обновляемая система, при помощи которой можно быстро развернуть защитный бастион. 1. Сай т проек та ComixWall – 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.

29


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

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

Р

егулярно общаясь с добрым де- пора заменить чем-то современным чему не противоречит. Проблема в том, сятком людей, разбирающихся 256 Мб памяти, диск в 20 Гб и обычный что покупателям не позволяют сделать в технике, я заметил, что ни у од- СD-ROM, даже непишущий. честный выбор, что покупать. Если изного из них нет ноутбука с Linux, хоначально люди, владеющие компьютя практически все время от времени Покупка ноутбука терами, вызывали уважение, так как имеют дело с этой операционной сис- Найти подходящий ноутбук на замену им надо было не только этот компьютемой, а кто-то только и занимается её оказалось непросто. Все люди по сво- тер купить вместе с программами, но и администрированием. Лишь у двух че- ей природе ленивы, и я в том числе. суметь его настроить, то сейчас такого ловек на компьютере имелся эмулятор Проблема в том, что производители глубокого уважения нет, так как польVMware, под которым у них был образ коммерческих операционных систем зователь может совсем не знать, как Linux-машины на всякий случай. делают на этой слабости деньги, пред- устроено то, чем он пользуется. Вполне возможно, что использо- лагая компьютеры с уже установленЦель моей статьи – показать, что вание SSH-клиента PuTTY и подклю- ной системой. Так как большая часть не тот круче, у кого ноутбук дороже, чение к Интернету позволяют им ре- покупателей не специалисты, то их ус- так как я могу себе позволить купить шать все свои проблемы без установки траивает такая практика, когда цена любой продающийся, в пределах раэтой операционной системы на ноутбу- за операционную систему включает- зумного, как и добрая половина адках, а с графической средой X-Window ся в общую стоимость покупки, а сами министраторов, а тот, кто в него душу они просто не работают. Также интере- покупатели избегают возможных проб- вложил и что-то сделал сам. А чтобы привлечь читателей к дейссен факт, что большая часть неплохих лем. Но мы-то знаем, что бесплатный специалистов, использующих Linux на сыр бывает в мышеловке. У всех одна твию, я постараюсь описать все те просвоих настольных системах, ничего не система, не надо переучиваться, на- блемы, с которыми столкнулся, и релицо только польза. А в том‑то и дело, шить их с точки зрения наименьшего знают о настройке Wi-Fi. Именно эти факты и сподвигли ме- что господа маркетологи отучают лю- сопротивления. Вполне возможно, что ня написать статью. В отличие от сво- дей думать. Нет, это не значит, что они у вас будет другая модель или дистриих «собратьев-админов», пытающихся плохие, они-то как раз очень хорошо бутив, но общие принципы и подходы сидеть на двух стульях, то есть исполь- справляются со своей работой, думая могут оказаться полезными и вам. зовать две операционные системы вы- за других. Благодаря их работе в общеУ каждого на примете будет своя шеописанным образом, я решил уйти стве поощряется другая система цен- модель, мне же подходящую выбирать от этой порочной практики. ностей, что, на мой взгляд, неправиль- долго не пришлось. Число продающихНоутбук был у меня и ранее, но, ког- но. «Думать по жизни» становится уде- ся моделей без операционной системы да в начале лета я не смог настроить лом немногих и не модно. На что толь- Windows и одновременно имеющихся нужную мне программу, так как готово- ко не идёт капитализм ради получения в наличии было не так велико, поэтого пакета не было, а исходники не хоте- сверхприбыли! По законам РФ, как и му мой выбор пал на Asus X51RL с проли компилироваться, в голове прозву- с точки зрения здравой логики запре- цессором M540 1,86 ГГц, 2048 Мб пачала фраза моей знакомой «Нет шага тить их работу нельзя, как и нельзя ос- мяти, жёстким диском 160 Гб, видеовперёд, значит, есть шаг назад». От- тановить прогресс в целом. Деятель- картой ATI Radeon Xpress 1100, приступать я не привык, поэтому, оценив ность фирмы, предлагающей купить водом DVD-SuperMulti DL, Wi-Fi-адапсвои усилия и пожелания, я решил, что что-то (например, тот же ноутбук), ни- тером (Atheros ARBXB63 (AR5BXB63,

30


администрирование 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).

№8, август 2008

Что интересно, подобное решение помогает и некоторым настольным системам, где используются жёсткие диски SATA. В дальнейшем установка прошла без проблем. Автоматически была обнаруРисунок 1. Зависание на этапе загрузки, после жена сетевая карта, звуконадписи «Ready.» вая и даже считыватель карт SD HC заработал. Единственное, что и на большой микросхеме прочитал не заработало, – это поддержка Wi-Fi. Atheros AR2425 (см. рис. 7). Примечание. Если вы не не радиолюбитель, не очень аккуратны Проблемы с Wi-Fi На подключение Wi-Fi ушло недели две и не уверены в себе, то лучше не разэкспериментов по вечерам, но для чи- бирать ноутбук, а обойтись комантателей этот путь будет пройден гораз- дой lspci и базой кодов оборудования, до быстрее. Первым делом я решил уз- так как разборка может не только линать, какой у меня стоит Wi-Fi-чипсет. шить вас гарантии, но и привести ноТак как программы могут ошибаться, утбук в нерабочее состояние. Не забыя решил узнать это физически, для че- вайте про статическое электричество, го перевернул ноутбук и осмотрел его заземляйтесь! После на сайте www.atheros.com на предмет гарантийных наклеек. Наклеек обнаружено не было, а наклей- я выяснил, что это адаптер AR5007EG ка, указывающая тип Atheros ARBXB63 [8] и фотография в описании очень (см. рис. 3), мне не помогла ничем, по- похожа на ту, что у меня. После чеэтому, вооружившись отвёрткой, я ак- го я отправился по адресу проекта куратно отвинтил 7 винтов (см. рис. 4) MadWifi [2], так как это неплохой прои снял крышку. Под крышкой я увидел ект по поддержке беспроводных сетепроцессор, модули памяти и модуль вых адаптеров Wi-Fi под Linux на базе чипсетов Atheros. К сожалению, устаWi‑Fi (см. рис. 5). Так как надписи на модули не смог- новка через: ли прояснить ситуацию, я вытащил # yum install madwifi модуль из разъёма. Обратная сторона оказалась более информативной – это был AzureWave адаптер AW- не прошла, так как для madwifi нужна GE780 (см. рис. 6), но для меня этой была новая версия ядра 2.6.25.6‑27.fc8, информации оказалось мало, поэтому а в репозитариях livna и других оно ещё я снял экранирующую крышку с платы не присутствовало. Позже вышла но-

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

31


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

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

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

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

во время загрузки. Когда использоваКстати, для USB есть аналогичная лись ядра серии 2.4.x и более ранние, команда lsusb. то все сообщения быстро пробегали Что можно сделать, если вы не вина экране, сейчас загрузка идёт тихо, дите у себя нужное устройство, но, как даже если удалён пакет rhgb и нет гра- я, убедились, что физически оно имефического интерфейса. Поэтому, ес- ется? Надо попытаться его включить. ли не предпринять какие-либо дейстНа некоторых ноутбуках есть перевия, пользователи могут и не увидеть ключатель, который может физичеспроблемы. ки отключать питание от сетевой карВторая показывает информацию ты, поэтому посмотрите, чтобы питаоб имеющихся PCI-устройствах. За- ние имелось. Иногда механический выпускать эту команду лучше с ключом ключатель может быть заменён элек-v или -vv для большей информатив- тронным собратом в виде электронности. ной схемы с кнопочкой. У меня была Почему стоит начать с этих ко- как раз похожая ситуация. Более подманд, а не с каких-либо других? По- робно далее. Считаем, что устройстому, что ситуация чем-то напомина- тво включено, и поднимаемся на уроет многоуровневую эталонную мо- вень выше. дель взаимодействия открытых сисПосмотрим, что нам выдаёт ядро. тем (ЭМВОС, ISO/OSI-RM) [3, стр.66], В моём случае из команды dmesg я узкогда не работает сеть, начинать про- нал, что ядро при загрузке выдало слеверять надо с самых нижних уровней, дующую ошибку: то есть с физического уровня – есть wifi%d: unable to attach hardware: ли вообще соединение? Так и тут, пер'Hardware revision not support вым делом надо разобраться, есть ли ed' (HAL status 13) устройство (в нашем случае сетевая карта) в системе? Поддерживается ли Для того чтобы понять, что надо она ядром? делать, совсем не обязательно быть Если устройства нет, оно не бу- программистом. Конечно, путь изучедет работать, как его ни настраивай. ния исходных кодов на 100% верный В моём случае я сам держал в ру- и надёжный, но все ли читатели хоках сетевую карту, поэтому ситуация тят и умеют программировать и раз«нет устройства» может быть вызва- бираться в железе? Конечно, нет, мир на плохим контактом, что я исключаю, Linux тем и удобен, что полезные велибо случаем «устройство выключе- щи делают несколько умных людей, но». Поэтому вывод lspci должен пока- а потом позволяют всем безвозмездно зать, включено ли устройство, а также пользоваться их творчеством. Очень информацию о нём. К моему счастью, часто бывает, что вы не одиноки в ваадаптер у меня был обнаружен и пра- шей проблеме, поэтому поиск по словильно распознан: вам, встречающимся в ошибке, приводит вас к решению проблемы. 02:00.0 Ethernet controller: Atheros Поиск привёл меня на тот же сайт Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01) MadWifi [2] и форум по Fedora [10],

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

32

Рисунок 5. Внутренности ноутбука, слева внизу Wi‑Fi‑модуль


администрирование где в разных местах обсуждались проблемы подключения Atheros серий AR5005, AR5006, AR5007. Было найдено несколько решений по поддержке работы адаптера: n использовать специальную сборку madwifi; n наложить patch на ядро и использовать драйвер ath5k; n использовать NDISwrappers.

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

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

echo "1">/sys/devices/platform/ ↵ Самым простым путём оказал asus-laptop/wlan ся первый, так как перекомпилировать ядро мне не хотелось, а запуск и выключать: Windows-драйверов под NDISwrappers, echo "0">/sys/devices/platform/ ↵ судя по сообщениям, не работал asus-laptop/wlan Рисунок 6. PCI Express MiniCard под 64‑битной версией, и переставAzureWave AW-GE780 (AR5BXB63) лять систему на 32-битную сборку мне Как ни странно, горит лампочка тоже не хотелось. Изучая сообщения или нет, на работе никак не отража- 2. Проект MadWifi. Подключение беспроводных сетевых адаптеров под Linux – на форумах, я выяснил, что для рабо- ется. Задавшись вопросом, а как сдеhttp://madwifi.org. ты люди скачивали не то, что пред- лать управление лампочками бо3. Компьютерные сети. Принципы, техлагается по умолчанию, а специаль- лее удобным, я нашёл в сети проект нологии, протоколы. /В.Г. Олифер, Н.А. ные сборки, в которые для моего не- «Lapsus – Linux on laptops» [6] для ноОлифер – СПб: Питер, 2001 г. везучего сетевого адаптера внесены утбуков Asus. Небольшая программа, изменения. Так я попал на страницу позволяющая в графическом режиме 4. MadWifi Archive of special-purpose snapshots – http://snapshots.madwifi.org/ со специальными сборками [4]. Путём управлять индикаторами. Её недостаspecial. проб и ошибок я выяснил, что для мо- ток в том, что пока она работает толь5. Сайт, где можно найти различные RPM его ноутбука нужна версия madwifi-hal- ко под KDE. пакеты – http://rpmfind.net. 0.10.5.6-r3698-20080604. (В процессе Аналогичные программы есть и под 6. Lapsus – Linux on laptops – http://lapsus. написания статьи коллеги сообщили, другие ноутбуки. Например, для Acer berlios.de. что к их адаптеру AR5006EG в ASUS существует поддержка специальных 7. Linux on Laptops – http://www.linux-laptop. Eee PC подходит версия madwifi- дополнительных кнопок [8]. net. ng‑r2756+ar5007.) 8. Acer Hotkey driver for Linux – http://www. Поэтому мы выбираем или уга- Заключение cakey.de/acerhk. дываем, скачиваем, распаковываем Хочется верить, что читатель нашёл понужную версию и запускаем две ко- лезное в статье либо задумался об ус- 9. О п и с а н и е A R 5 0 07 EG (A R 24 2 5) – http://www.atheros.com/pt /bulletins/ манды: тановке Linux на ноутбук. Если так, AR5007EGBulletin.pdf. то ещё один ресурс может оказаться # make 10. О б с у ж д е н и е н а ф о ру м е At he ros полезным [7]. # make install A R 5 0 07EG /A R 5 BX B 6 3 – ht t p: // В статье оказались незатронутыforums.fedoraforum.org/showthread. которые решили мои проблемы. ми вопросы настройки ACPI, как и мноphp?t=174186. После перезагружаемся или даём гие другие интересные моменты, касакоманду: ющиеся поддержки различных «горя- 11. Сайт проекта NDISwrapper – http:// ndiswrapper.sourceforge.net. чих клавиш» и других вещей. # depmod -a Пересечение мира Linux и ноутбуков безгранично. и выключаем-включаем адаптер, дол- Считаю, что начало проложен появиться интерфейс wlan0, пос- жено, а остальное за вами, ле чего станет возможным его на- читателями и будущими австроить с помощью iwconfig. Пробле- торами! Есть мысли? – пима решена. шите в редакцию, будет поЕсли вы сразу установили компи- вод открыть раздел «Linux лятор gcc и заголовки ядра в процес- на ноутбуке». се установки, то первый путь наиболее простой, но не всегда удачный, 1. Bugzilla Bug 239585: F8 CD/ как может показаться, так как выбранDVD hangs with message ная сборка может у вас не заработать. «Ready» – https://bugzilla. Несмотря на это, я выбрал этот путь, redhat.com/show_bug. Рисунок 7. Микросхема Atheros AR2425 на плате так как в процессе достижения конечcgi?id=239585. Wi-Fi-модуля

№8, август 2008

33


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

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

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

История и предыстория кальных университетских (в том же Сам протокол Jabber начал разраПроект Athena, запущенный в Масса- MIT, например) сетях продолжается батываться в конце 90-х годов Джеречусетском технологическом институте вплоть до настоящего времени. Глав- ми Миллером (Jeremie Miller), в качеств середине 80-х годов, имевший сво- ным фактором, работающим в поль- ве альтернативы закрытого протокола ей целью создание распределенно- зу Zephyr, была его тесная интегра- ICQ. В отличие от централизованного го вычислительного окружения, ока- ция с другой разработкой, возникшей сервиса ICQ Jabber представляет созал сильное воздействие на развитие в рамках проекта Athena, – системой бой распределенную систему, чем-то компьютерных технологий того вре- удаленной аутентификации пользова- напоминающую электронную почту. мени. Фактически, в эпоху мэйнфрей- телей Kerberos. Поскольку Zephyr рабо- То есть на сервере предприятия можмов и терминалов, это был первый при- тает в закрытом окружении (универси- но установить свой собственный сермер «сетевого окружения» в том виде, тете или предприятии), с определен- вер JABBER, так что локальные полькак его представляют сейчас. Среди ным кругом пользователей (сотрудни- зователи, подключаясь к нему, могут прочего авторам проекта в процессе ки и/или студенты), особенно в том слу- обмениваться сообщениями как внутработы пришлось решить и такую за- чае, когда их учетные записи и так уже ри предприятия, так и с внешним мидачу, как замены утилиты talk, которая хранятся в базе данных Kerberos, то та- ром, в смысле – другими серверами позволяла передавать короткие сооб- кая система предоставляет, с одной JABBER. Отличительной особенносщения между терминалами, подклю- стороны, большее удобство исполь- тью протокола является его расширяченными к рабочей станции. По мере зования сервиса, за счёт развертыва- емость и использование XML-формаразработки этой проблемы возникла ния single-sign-on, а с другой, позволя- та для передачи данных. Поскольку идея создания протокола Zephyr, кото- ет однозначно устанавливать идентич- протокол возник сравнительно поздрый одновременно решал бы две за- ность пользователей. но, то в нём, по крайней мере во втодачи – обмен сообщениями и инфорПоскольку протокол Zephyr оста- рой редакции 2003 года, предусмотремирование о наличии нужного пользо- вался практически замороженным на поддержка прослойки SASL (Simple вателя за компьютером. Таким обра- довольно долгое время, то в нем по- Authentication Security Layer), средсзом, этот протокол оказался не толь- прежнему использовался старый ва- твами которой к нему можно подклюко одним из первых (вместе с IRC – риант протокола Kerberos4, от кото- чать различные модули аутентифиInternet Relay Chat) протоколов мгно- рого в последнее время начали отка- кации, в том числе и Kerberos. Специвенного обмена сообщениями (Instant зываться, что заставляет пользовате- фикации протокола состоят из двух Messaging/IM), но и во многом воспро- лей и администраторов искать альтер- RFC 3920-3921, которые описываизводил архитектуру, впоследствии нативные системы обмена сообщени- ют ядро протокола (Core), и довольиспользованную в протоколе Jabber ями. (Хотя, по слухам, в Университе- но обширного числа так называемых (XMPP – eXtensible Message Passing те штата Айова используется вариант XEP (XMPP Extension Protocols), котоand Presence Protocol). Zephyr с поддержкой Kerberos5, но ис- рые определяют расширения базовоХотя Zephyr было далеко до попу- ходный код этой системы в свободном го протокола. В настоящее время сулярности, сравнимой с популярностью доступе я найти так и не смог.) Наибо- ществует несколько реализаций серпоявившегося гораздо позже прото- лее подходящим, в смысле возможнос- веров Jabber, однако пока что ни один кола ICQ, но сам по себе он оказался ти его конфигурирования, таким обра- из них не поддерживает весь набор довольно удачным, и его использова- зом, чтобы максимально напоминать XEP. Во-первых, это ejabber, напиние в немодифицированном виде в ло- Zephyr, явлется Jabber/XMPP. санный на языке erlang и популярный 34


администрирование в России из-за своей русской комантимости с этим механизмом, на самом деле, ды разработчиков, во‑вторых, напи- Небольшое отступление санный на Java и рассчитанный на ис- По умолчанию jabberd2 использует GNU- это решение было вызвано непониманием версию библиотеки SASL – gsasl[5]. Это ре- работы SASL с так называемым security пользование в корпоративных сетях шение было принято основным руководи- layers. Грубо говоря, security layer позволяOpenFire, а также два jabberd – 1.4.x и 2.x, оба написанных на С. Несмот- телем проекта Томашем Стерной (Tomasz ют шифровать траффик между клиентом Sterna) примерно год назад. На мой взгляд, и сервером, если они поддерживают опреря на сходство названий, jabberd 1.4.x и jabberd2 – это два независимых про- это было серьезной ошибкой. Помимо то- деленные механизмы SASL. В настоящее екта, которые развивались парал- го, что оно спровоцировало уход из проек- время gsasl, в отличие от cyrus-sasl, не имета Саймона Уилкинсона (Simon Wilkinson), ет такой функциональности, так что в данлельно первоначальной справочной который достоин отдельного упомина- ном случае мы видим просто один из приреализации (reference implementation) ния за включение в jabberd2 поддержки меров лечения головной боли радикальсервера jabberd, выполненной самим GSSAPI, а также тестирование и усовер- ными средствами. Джереми Миллером. шенствование jabber-клиентов для совмесХотя каждый из этих серверов имеет свои достоинства, но в данной статье будет рассмотрен именно jabberd2, по причине сво- комендуется использовать последние версии Heimdal, наей нетребовательности к ресурсам, относительной про- пример 1.1, поскольку в более ранних версиях была допустоты настройки, полной поддержки SASL, а также воз- щена досадная ошибка взаимодействия с SASL, которая можности использования его без необходимости установ- делала аутентификацию в jabber невозможной. После развертывания пакета с исходными текстами ки специализированных серверов баз данных, что также в значительной степени упрощает его администрирова- jabberd2 его нужно сконфигурировать, запустив в его доние. В истории самого проекта было несколько сложных машнем каталоге команду: моментов, когда, например, в начале 2005 года был пол./configure --prefix=/usr --sysconfdir=/etc/jabberd ↵ ностью утрачен репозиторий исходных кодов, которые за --enable-db --with-sasl=cyrus --enable-debug тем пришлось восстанавливать с нуля. В конце того же гоВ этом случае активируется использование хранилида он претерпел полное обновление команды разработчиков. Однако в настоящий момент проект динамично разви- ща баз данных BerkeleyDB, включается поддержка cyrusвается, и к самому серьезному его недостатку можно от- sasl и предусматривается вывод отладочной информации. нести практически полное отсутствие документации, а от- Однако перед тем как выполнить уже привычные команды дельные руководства, встречающиеся в сети, уже устаре- make и maker install, необходимо совершить еще одно дейстли и иногда даже противоречат тому, что имеется в насто- вие, чтобы активировать поддержку cyrus-sasl, а именно заящее время. Частично данная статья и имеет своей целью комментировать одну строку с указаниями компилятору: восполнить этот пробел. sed -ir 's/^#define fnmatch/\/\/#define fnmatch/' config.h Собственно, после этого довольно долгого вступления sed -ir 's/^#error Cyrus SASL/\/\/#error Cyrus SASL/' ↵ можно сформулировать наше техническое задание к сер sx/cyrus_sasl.c веру Jabber, реализация которого и будет описана в данной статье. В первую очередь мы потребуем использование После чего сборка и установка программного пакета должучетных записей пользователей, хранящихся в базе дан- ны пройти без помех. Как уже говорилось, функциональность, связанная ных Kerberos, и наличия как обычного текстового парольного входа, так и с помощью сертификатов Kerberos, а также с поддержкой в jabberd2 многопользовательских конференхранение всех авторизационных и дополнительных данных, ций (Multi User/MU-confernce), вынесена в отдельный проект. необходимых для работы сервера, в локальных дисковых Исходный код этого компонента можно получить со страбазах данных (для управления которыми будет использо- ницы [6], распаковать, скомпилировать командой make вана библиотека BerkeleyDB). Также дополнительным тре- и для единообразия переместить полученный в итоге исбованием будет поддержка сервером многопользователь- полняемый файл mu-conference в директорию, где лежат осских конференций, которая для jabberd2 реализована в ви- тальные компоненты jabberd2 (в нашем случае /usr/bin). Вопреки сведениям различных руководств, которые можно найде отдельного проекта. ти в Интернете, специально компилировать так называемую JCR, среду запуска компонентов jabberd2 не нужно, для посКoмпиляция и сборка Перед сборкой jabberd2, который можно скачать с их офи- ледней версии mu-conference (0.7) она не требуется. Собственно говоря, после этого можно приступать циальной страницы [1], следует убедиться, что у вас в системе установлены библиотеки cyrus-sasl [2] и настроен сектор к конфигурированию jabberd2, но вначале стоит взглянуть Kerberos, например, с помощью Heimdal Kerberos [3]. Если на то, что же мы в итоге получили, и на внутреннее устнет, то вам лучше начать с их настройки, которая описана ройство jabberd2. в статьях [4], поскольку дальнейшие действия будут сильно зависеть от работоспособности этих двух библиотек. Также Конфигурирование и архитектура новые версии jabberd2 требуют наличия системной библио- jabberd2 теки glibc версии не ниже 2.3.6, из-за неправильной реали- При создании jabberd2 авторы стремились сделать его макзации функции fnmatch в более ранних версиях. Также ре- симально модульным и расширяемым, с тем чтобы заяв-

№8, август 2008

35


администрирование </local> <aci> <acl type='all'> <user>jabberd</user> </acl> </aci> </router>

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

ленная в названии протокола расширяемость (eXtensible) присутствовала и в его серверной реализации. В результате jabberd2 состоит из нескольких процессов, взаимодействующих между собой через сетевой интерфейс. С одной стороны, такая архитектура позволяет легко добавлять новые компоненты, как, например, MU-Conference, реализующую спецификации XEP-0030. С другой, позволяет системному администратору, поразному распределяя компоненты на нескольких серверах, добиваться либо большей производительности системы, либо же поддерживать на одном компьютере несколько «виртуальных» хостов [7]. Перейдем к настройке сервера jabberd2, попутно разбираясь с функциями каждого из компонентов. Все компоненты настраиваются с помощью своего собственного конфигурационного файла. Поскольку протокол XMPP широко использует формат XML, то нет ничего удивительного, что разработчики jabberd2 выбрали для конфигурационных файлов тотже самый формат. В качестве образца для создания собственных конфигурационных файлов можно использовать файлы с расширением xml.dist, входящие в состав пакета jabberd2, тем более что изучение комментариев к ним дает полезную (пусть и скудную) информацию о самой программе. Однако для простоты можно воспользоваться приводимыми ниже «минимальными» файлами, где большинство параметров не указано, но которые, тем не менее, позволяют получить вполне работоспособный сервер. По умолчанию используются конфигурационные файлы из директории /etc/jabberd с базовым именем, совпадающим с названием компонента, и расширением xml. Начнем с центрального компонента, router, который работает в качестве диспетчера, координирующего работу всех компонентов. Его конфигурационный файл router.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>

36

Он состоит из блока с идентификатором процесса (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: <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>


администрирование <srv>_jabber._tcp</srv> </lookup> </resolver>

Блок router указывает адрес и порт, который прослушивает router, а также имя пользователя и пароль, необходимые для подключения к нему (те же самые, что и в секции local файла router.xml). Вообще-то говоря, протокол XMPP состоит из двух потоков данных, привязанных к разным сетевым портам: один между клиентом и сервером, а второй между двумя серверами. Как раз за обработку второго потока данных отвечает компонент s2s. Настройка его достаточно проста: <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>

Блок local, также как и в случае router, определяет привязку к сетевому интерфейсу и порту. В данном случае от компонента требуется, чтобы доступ к нему был открыт извне, поэтому ip (0.0.0.0) указывает, что компонент использует все доступные интерфейсы и привязян к стандартному порту 5269 (jabber-server). Также в этой секции указан идентификатор компонента resolver. Пока что вся настройка не требует существенной правки конфигурационных файлов, практически в каждом случае можно было бы обойтись минимальной переделкой xml.dist из состава jabberd2. Более серьезная правка требуется для двух других файлов, отвечающих стандартным компонентам jabberd2. За второй поток данных (между клиентом и сервером), а также аутентификацию реальных пользователей отвечает компонент c2s. Так же, как и для компонента s2s, доступ к нему должен быть открыт по сети через порт 5222 (jabber-client): <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>

№8, август 2008

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

Обратите внимание на тег 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. <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>

37


администрирование <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>root@myrealm.ru</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>

Использование подгружаемых модулей является еще одним дополнительным источником расширения функциональности сервера 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:

38

<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>root@myrealm.ru</user> </sadmin> <persistent/> <roomlock/> </conference> </jcr>

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

Создание списка пользователей и запуск Собственно, после создания конфигурационных файлов требуется решить ещё несколько административных задач – создать системного пользователя, под которым будет работать сервер jabberd2, создать каталоги для хранения баз данных, настроить DNS и систему аутентификации. А также написать скрипт, который будет запускать сервер jabberd2. Первые две задачи решаются простым скриптом: useradd -d /var/jabber -s null jabber mkdir /var/jabber/db chown -R jabber /var/jabber/db

Настройка DNS состоит в добавлении SRV-записей и создании нескольких псевдонимов для jabber-сервера. $ORIGIN myrealm.ru. jabber A 192.168.1.252 myrealm.ru. A 192.168.1.252 conference CNAME jabber _jabber._tcp _xmpp-server._tcp _xmpp-client._tcp

SRV SRV SRV

5 0 5269 jabber 5 0 5269 jabber 5 0 5222 jabber


администрирование Как уже упоминалось выше, смысл этих SRV-записей аналогичен MX-записи для электронной почты. В данном примере для сервера с адресом 192.168.1.252 выбрано имя jabber.myrealm.ru, и все три записи указывают на него. Первые две – для порта, обслуживающего подключения серверсервер (первая из них – это просто более старый вариант), а последняя – для порта клиент-сервер. Тут стоит подчеркнуть, что если вы хотите, чтобы ваш сервер был доступен извне, т.е. чтобы пользователи других jabber-серверов могли обмениваться сообщениями с вашими пользователями, то, по крайней мере, первая пара SRV-записей должна быть видна снаружи, поскольку именно она позволяет удаленным jabber-серверам правильно находить сервер, отвечающий пользователю с JID username@myrealm.ru. Последняя запись (_xmpp-client._tcp) не столь важна в этом смысле, поскольку клиенты jabber обычно позволяют напрямую указывать адрес сервера, но лучше создать и её. Кроме того, некоторые из jabber-клиентов игнорируют SRV‑записи, и если адрес сервера не указан пользователем явно, то просто интерпретируют доменную часть JID, как имя сервера. Для таких «поломанных» клиентов обычно приходится создавать дополнительный псевдоним для jabber-сервера, состоящий только из доменной части. Также для нормальной работы компонента mu-confertnce необходимо создать ещё один псевдоним conference.myrealm.ru. И последнее – это настройка аутентификации пользователей, что включает в себя настройку Kerberos, SASL и заполнение базы данных authreg. Предполагается, что пользователи уже занесены в базы данных Kerberos. В случае jabberd2 дальнейшие действия напоминают настройку электронной почты, как она описана, например, в статьях [8, 9]. Иными словами, нам нужно создать принципала для службы jabberd (xmpp/jabber.myrealm.ru@MYREALM.RU) и выгрузить его ключ в файл /etc/krb5.keytab: kadmin >add xmpp/jabber.myrealm.ru >ext xmpp/jabber.myrealm.ru

Следуя рекомендациям статьи [9], чтобы этот ключ был доступен для сиcтемного пользователя jabber, под которым запускается jabberd2, то нужно добавить этого пользователя в системную группу kerberos и открыть файл /etc/ krb5.keytab на чтение этой группе. Настройка SASL состоит в создании файла /usr/lib/sasl2/ xmpp.conf с практически неизменным содержимым: pwcheck: saslauthd mech_list: gssapi plain

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

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

№8, август 2008

После выполнения всех этих шагов и тестиров ания работо с пособности SASL с помощью у тилиты sasltest [8] можно прис т упить к заполне нию базы данных authreg. Для простоты мы пока занесем двух польз о в ател е й root и mike, оба из которых должны иметь своих принципалов в сектоРисунок 2. Настройка ре Kerberos. В реGSSAPI-аутентификации в Linux альных условиях вам, скорее всего, понадобится скрипт, который считывает данные из базы данных Kerberos (в этом вам поможет команда «kadmin -l dump», например), фильтрует вывод и переносит имена пользователей в базу данных authreg. Для заполнения базы данных authreg нужно будет написать текстовый файл passwd.txt такого вида: root root\00MYREALM.RU\00<random passwd> mike mike\00MYREALM.RU\00<random passwd>

то есть он состоит из парных записей: нечетные строки – это ключи, четные – значения. В качестве ключа берется имя пользователя, а значение представляет собой список с разделителем \00, состоящий из трех полей – имени пользователя, сектора SASL и случайной комбинации символов, которая служит в качестве простого текстового пароля для этого пользователя. Поскольку при настройке сервера jabberd2 простые (traditional из файла c2s.xml) механизмы аутентификации отключены, то последнее поле можно оставить пустым, оно в такой конфигурации не будет использоваться. Также следует помнить, что ни одно из полей не должно превышать по длине 255 символов. Теперь остается зайти в директорию /var/jabberd/db, предназначенную для хранения баз данных jabberd2, и с помощью утилиты db_load, входящей в состав пакета BerkeleyDB, создать эту базу данных: cat passwd.txt | db_load -n -t hash ↵ -c database=myrealm.ru -h ./ -T authreg.db

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

39


администрирование входных данных используется текстовый файл. Ту же самую команду нужно использовать для пополнения или редактирования уже существующей базы данных. При этом в файл passwd.txt нужно вносить только те записи, которые вы хотите добавить или изменить. Проблемы с блокировкой пользователей проще решать удалением или блокированием соответствующих принципалов в базе данных Kerberos либо же полностью переписать базу данных authreg.db, запустив команду db_load без ключа -n. Понятно, что в последнем случае вам нужно иметь полный список пользователей в текстовом файле passwd.txt. Теперь всё готово к запуску сервера. Разработчики jabberd2 и этот этап переложили на плечи администраторов, так что вам придется создавать собственный скрипт запуска. Можно воспользоваться моей заготовкой (rc.jabberd), которая, будучи запущенной с аргументами start/stop, запускает или останавливает все шесть компонентов. #!/bin/bash progs="router resolver sm c2s s2s" user=jabber.jabber progsPath="/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}"

40

esac

let retval=-1

Данный скрипт выдает большое количество отладочной информации в файлы вида 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 обратить внимание на ключи: ./configure --enable-cyrus-sasl \ --with-dynamic-prpls=jabber,simple \ --with-static-prpls= \

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


Реклама


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

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

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

В

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

42

так как при подключении к удаленному компьютеру текущий интерактивный пользователь этого компьютера будет заблокирован. Это огромнейший недостаток в тех случаях, когда нужно вести удаленную работу в кооперации с удаленным пользователем. Поэтому сторонние разработчики предлагают свои программные разработки, от бесплатных решений с открытым исходным кодом (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 Позволяет подключать удаленные ресурсы к локальной машине (диски, принтеры, порты).


администрирование n Можно настроить производитель- ми системами на платформе Windows ность для сетей с различной пропускной способностью. n Есть версия для мобильных устройств. n Можно обмениваться информацией через буфер обмена. n На медленных каналах связи показывает лучшие характеристики работы, чем другие программы. В Windows Server 2008 и Windows Vista используется новая версия протокола, RDP 6. n Версия 6.0 установлена в Windows Vista и включает поддержку программ удаленного взаимодействия, приложений Presentation 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 На быстрых каналах работает медленнее, чем большинство аналогов.

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 Медленная скорость работы и значительная нагрузка на сеть в режиме управления удаленным экраном.

RDP

n Сложная система лицензирования и регистрации. Сайт: http://dameware.ru.

pcAnywhere Одна из старейших программ удаленного администрирования от известной компании Symantec. Поддерживает несколько самых известных операционных систем, есть средство для компоновки дистрибутивов. В целом программа обладает рядом уникальных функций, которых нет у аналогов, но эти функции (например, поддержка устаревшего протокола IPX/SPX) не нужны большинству пользователей. Особенности: n Поддержка нескольких различных протоколов соединения, не только TCP/IP.

С а й т: ht t p: // w w w.m i c ro s of t . c o m / w i n d ow sx p /d ow n l o a d s / to o l s / rdclientdl.mspx.

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

№8, август 2008

DameWare

43


администрирование гое время моим выбором была именно эта программа. Простой интерфейс и приличная скорость работы делают своё дело. Особенности: n Совместимость с Windows Vista 32‑bit и 64-bit. n Несколько режимов работы, в том числе передача файлов, телнет и другое. n Хорошая производительность в сетях с большой пропускной способностью. n Поддержка нескольких соединений. n Удаленная установка. n Есть русская версия. Недостатки:

n Конфликты с драйверами и обоpcAnywhere

n Несколько способов авторизации, в том числе с поддержкой учетных записей Windows.

n Версия для мобильных устройств. n Можно сконфигурировать для работы в сложной топо-

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

логии сети (маршрутизаторы, файрволлы). Сайт: http://www.radmin.ru. Недостатки: n Медленная скорость работы с удаленным экраном. n Высокая цена. Сайт: http://www.symantec.com.

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

NetOp В свое время это была одна из самых популярных программ в своём роде. Сразу очевидно, что программа больше рассчитана на решение задачи поддержки пользователей. Это довольно тяжелый и функциональный продукт, многим похожий на pcAnywhere и DameWare. Особенности: n Кроссплатформенная поддержка. n Множественные сессии Guest. n Благодаря сторонним утилитам этого же производителя есть возможность настроить программу для сложной топологии сети. Недостатки:

n Медленная скорость работы в режиме просмотра/управления удаленным рабочим столом.

n Высокая цена по сравнению с другими продуктами. Сайт: http://www.netop.ru.

RealVNC

Radmin 3

44

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


администрирование Особенности:

n На данный момент есть бесплатная версия.

n Поддержка Windows Vista в платных версиях.

n Кроссплатформенная поддержка. Недостатки:

n Недостаточно высокая скорость работы.

n Неудобный интерфейс. n По умолчанию данные не шифруются, отсутствует аутентификация на основе учетных записей пользователей Windows. Сайт: http://www.realvnc.com.

Remote Office Manager Это довольно новый продукт, на рынNetOp ке появился в 2006 году. Не так давно производитель выпустил новую вер- n Отсутствует кроссплатформенная надобятся, но в большинстве случаев без них трудно обойтись, я постаподдержка. сию программы – 3.3. Понравилось рался выделить основные из них для в этом продукте то, что он неплохо соСайт: http://aledensoft.ru. сравнения программ по функциональчетает в себе простой и понятный инности. При всех плюсах немаловажтерфейс с серьезным функционалом. но для программы иметь дружественТакже огромный плюс – это высокая Сравнительный анализ ный и приятный интерфейс, хотя о вкупроизводительность в различных се- программ Постараемся сравнить представлен- сах и не спорят, но постараюсь выдетях и удаленная установка. ные программы как по набору функ- лить программы с наиболее приятным Особенности: n Хорошая производительность как в ций, которые необходимы для уда- и удобным дизайном. сетях с высокой пропускной способ- ленного управления, так и по удобству работы с программой, цене и другим Подводим итоги ностью, так и в медленных сетях. важным факторам, которые произво- DameWare и pcAnywhere наполнены n Совместимость с Windows Vista. n Удаленная установка. Доступно не- дители стараются обходить стороной множеством функций, в которых нуждается определенная группа админиссколько видов удаленной установ- при описании своих продуктов. Трудно представить программу траторов, остальным же придется пеки, в том числе в домене, с использованием групповой политики бе- удаленного управления без возмож- реплачивать за ненужный функционости подключаться к рабочему сто- нал, к слову, эти программы подойдут зопасности и MSI. n Возможность настроить програм- лу и управлять им, конечно же, чем ка- серьезным организациям, обладаюму на работу в условиях сложной чественнее и удобнее управление, щим крупными сетями с различными топологии сети благодаря таким тем больше сэкономленных минут конфигурациями. DameWare можно отфункциям, как «Соединение через» (а когда и часов), времени и нервов. дать звание самой многофункциональУправление в локальной сети замет- ной программы. и «Обратное соединение». VNC подойдет пользователям в каn Поддержка нескольких соедине- но отличается от работы в Интернете, если в локальной сети можно ра- честве дополнительного инструмента ний. ботать с помощью любой из этих про- администрирования, предоставляет n Есть русская версия. грамм (отмечу, что Remote Administrator, базовый функционал в универсальной на мой взгляд, самый быстрый). и бесплатной программе. За поддержНедостатки: В Интернете удобнее всего рабо- ку Windows Vista и за другие полезные n Небольшая известность программы, т.е. отсутствие серьезной про- тать с помощью RDP или Remote Office функции придется платить, что ставит Manager, немаловажную роль играет эту программу на равные с остальныверки временем. возможность отключения обоев рабо- ми коммерческими продуктами. чего стола, что дает заметное ускореRadmin, Netop, Remote Of fice ние при работе. Manager не уступают своим коллеСерьезную роль, при выборе про- гам – они прекрасно справляются граммы играют её дополнительно с поставленной задачей и обладают встроенные возможности администри- хорошим набором функциональносрования, возможно, кому-то они не по- ти, Radmin можно назвать самой бысRealVNC

№8, август 2008

45


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

Remote Office Manager

Заключение

трой программой, если не учитывать кой Aero и отключают ее при работе, работу на слабых каналах – достой- что, конечно, трудно не заметить польный продукт. зователю. Программы, использующие Remote Office Manager – недоро- драйвер захвата, ставят себя в зависигая, удобная, быстрая и многофунк- мость от системы, нередки конфликты циональная программа, которая по- с оборудование и ошибки при работе. дойдет как небольшим, так и крупным Большинство рассмотренных проорганизациям. грамм обладают такой полезной функ«Больной» вопрос среди программ цией, как удаленная установка. Хоудаленного администрирование – тя это скорее исключение из правил. это поддержка Windows Vista, не все Менее популярные продукты, не распрограммы у живаются с оболоч- смотренные в данной статье, не обла-

Каждый из этих продуктов подойдет и понравится определенной группе администраторов, учитывая личные и профессиональные требования, поэтому лучшую программу можете определить только вы! 1. Ачилов Р. Обзор программ удаленного доступа: выбирайте подходящую. //Системный администратор, №5, 2007 г. – С. 18-33.

Таблица сравнения программ по функциональным возможностям RDP

DameWare

pcAnywhere

Radmin 3

Netop

RealVNC

Remote Office Manager

Передача файлов

+

+

+

+

+

+

+

Просмотр процессов

+

+

Поддержка Vista (Windows 2008 Server)

+

+

+

+

+

+

+

Обратное соединение (возможность сервером инициировать сетевое соединение)

+

+

+

Telnet

+

+

64-битная платформа

+

+

+

+

+

+

Текстовый или голосовой чат

+

+

+

+

+

Работа на медленных каналах

+

+

+

+

+

+

Защита настроек

+

Удаленная установка

+

+

+

Автоматическая интеграция с брэндмауэром

+

+

+

+

+

Кроссплатформенность

+

+

+

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

+

+

+

+

Поиск рабочих станций

+

+

+

+

Интерфейс и удобство работы (с большим количеством рабочих станций)

+

+

Цена за одну лицензию

0

$289 (лицензируется модуль администратора)

$199

$49

Сложная ценовая политика

0 - $50

$20

46


bugtraq Переполнение буфера в Bea Weblogic Apache Connector

Переполнение буфера в Webex Meeting Manager WebexUCFObject ActiveX-компоненте

Программа: Bea Weblogic Server. Опасность: Высокая. Программа: Webex Meeting Manager 20.2008.2601.4928, возОписание: Уязвимость существует из-за ошибки провер- можно, более ранние версии. ки границ данных в Apache-коннекторе. Удаленный поль- Опасность: Высокая. зователь может с помощью специально сформированного Описание: Уязвимость существует из-за ошибки проверPOST-запроса вызвать переполнение стека и выполнить ки границ данных в WebexUCFObject ActiveX-компоненте произвольный код на целевой системе. (atucfobj.dll) при обработке аргумента, передаваемого меURL производителя: www.bea.com/framework.jsp?CNT= тоду NewObject(). Удаленный пользователь может с помоindex.htm&FP=/content/products/weblogic/server. щью специально сформированного веб-сайта вызвать пеРешение: В настоящее время способов устранения уязви- реполнение стека и выполнить произвольный код на целемости не существует. вой системе. URL производителя: www.webex.com/downloads_webex.html. Решение: Установите последнюю версию 20.2008.2606.4919 Переполнение буфера с сайта производителя.

в Trend Micro OfficeScan

Программа: Trend Micro OfficeScan 7.3 build 1343(Patch 4), возможно, более ранние версии, Trend Micro OfficeScan Corporate Edition 8.x. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных в OfficeScan Corp Edition WebDeployment ObjRemoveCtrl Class ActiveX-компоненте (OfficeScanRemoveCtrl.dll) в OfficeScan-клиенте при попытке отобразить список конфигурационных настроек. Удаленный пользователь может с помощью специально сформированного веб-сайта вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.trendmicro.com/en/products/ desktop/osce/evaluate/overview.htm. Решение: Установите исправление с сайта производителя.

Множественные уязвимости в 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 с сайта производителя.

№8, август 2008

Переполнение буфера в 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 с сайта производителя.

Неавторизованное изменение пароля в 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 с сайта производителя.

Составил Александр Антипов

47


web

Кэшируем динамический контент Виталий Банковский Продолжая цикл статей, я расскажу, как можно создавать кэширующие сервера для динамического контента. (Первую статью цикла «Создаем распределенную сеть доставки контента» см. в №2 за 2008 г.)

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

Технология кэширования динамических страниц Здесь я не изобрету ничего нового, лишь применю стандартные средства протокола HTTP для построения акселератора. В целом вся система состоит из сервера-акселератора и оригинального сайта и работает по следующей схеме: n Пользователь обращается к акселератору, который является проксирующим сервером по отношению к сайту. n Если акселератор не имеет локальной копии страницы, то он обращается на сайт за ней, отдает страницу пользователю и сохраняет в локальном кэше. n Если акселератор уже имеет эту страницу, то он отправляет запрос на оригинальную страницу с заголовком If‑Modified-Since xxx, где xxx – дата последней модификации страницы, сохраненной в кэше. n Когда оригинальный сайт получает такой запрос, он сравнивает дату модификации своей страницы с этой датой.

48

n Если страница уже была модифицирована, то отдается полная версия страницы.

n Если дата последней модификации такая же, как в кэше, то сайт должен отдать пустую страницу со статусом HTTP 304. n Когда кэш получает ответ со статусом HTTP 304, то он отдает страницу из локального кэша.

Компоненты системы Для построения такой системы я использовал модуль mod_accel Игоря Сысоева [2]. На данный момент идет активная разработка такого же модуля для nginx, но на момент написания этой статьи он еще не был готов.

Установка и настройка В свой работе я использую CentOS семейства Redhat, поэтому описание процедуры устоновки и настройки будет ориентировано на этот дистрибутив. Первым делом необходимо получить библиотеку EAPI, которая нужна для компиляции модуля mod_accel. Ее можно скачать с сайта [3]. Библиотеку устанавливать не нужно. tar -xzvf mod_ssl-2.8.4-1.3.20.tar.gz cd mod_ssl-2.8.4-1.3.20 ./configure —with-apache=../apache-1.3.20 make

Далее получаем версию Apache 1.3.20 c cайта [4] и раскрываем архив: tar -xzvf apache_1.3.20.tar.gz


web Также нужна библиотека MM, которая доступна на сайте [5]. tar zxf mm-1.2.1.tar.gz cd mm-1.2.1 ./configure make make install

case "$1" in start) echo -n "Starting: apache" /usr/local/apache/bin/apachectl start echo "." ;; stop) echo -n "Stopping service: apache" killall httpd echo "." ;;

Получаем модуль mod_accel и запускаем процесс обновления исходных кодов Apache:

restart) $0 stop sleep 2 $0 start ;;

tar -xzvf mod_accel-1.0.34.tar.gz cd ./configure \ --with-apache=../apache_1.3.20 \ --with-eapi=../mode_ssl-2.8.4-1.3.20/pkg.eapi make # накладывает патчи

*)

Далее собираем Apache и устанавливаем:

cd apache_1.3.20 EAPI_MM=../mm-1.2.1 ./configure —enable-rule=EAPI \ --activate-module=src/modules/accel/libaccel.a make make install

esac

Настройка Apache Затем настраиваем Apache для кэширования нашего сайта. Сосредоточимся на основных моментах конфигурационного файла сервера Apache: # Путь, где будут храниться закэшированнные файлы. # Уровень иерархии каталогов — 1 AccelCacheRoot /home/dcache 1

;;

echo "Usage: /etc/init.d/apache ↵ {start|stop|restart}" >&2 exit 1

exit 0

Запускаем наш акселератор: /etc/init.d/apache start

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

# Включить кэширование 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-URL AccelSetXURL on

Перед запуском сервера Apache необходимо создать каталог для хранения страниц кэша и поменять владельца и группу, чтобы процесс apache мог записывать кэш в этот каталог: mkdir /home/dcache chown -R apache.apache /home/dcache

Если процесс apache работает под другим именами пользователя и группы, то нужно соответственно поменять параметры команды chown. Включение запуска сервера Apache в процедуру начальной загрузки сервера состоит в создании файла /etc/init.d/ apache со следующим содержимым: #!/bin/sh # chkconfig: 2345 55 25

№8, август 2008

49


web ческие страницы нашего сайта могли быть закэшированы, необходимо ввести проверку даты последней модификации страниц в кэше с датами последней модификации страниц. Для этого я модифицировал наш сайт таким образом, что каждая страница имеет дату последней модификации, хранимой в базе данных. Когда на сайт передается запрос из акселератора на какую-то страницу, сайт сравнивает дату из заголовка if-modified-since с датой последнего обновления страницы, и в зависимости от результатов проверки скрипт на сайте возвращает или полную версию страницы с кодом HTTP, равным 200, или пустую страницу с кодом 304. Также обязательно нужно обратить внимание на страницы, которые никогда не должны быть кэшированы. Например, страницы авторизации, обновления учетных записей пользователей и так далее. К сожалению, такая плотная интеграция зависит от программного обеспечения на сайте, поэтому в качестве примера целесообразно привести упрощенный пример скрипта сайта, проинтегрированного с акселератором: Листинг 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");

50

# Печатаем дату последней модификации страницы 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;}

?>

Схема работы приложения может быть построена следующим образом: 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С»

Управляем списками общих информационных баз Андрей Луконькин Что делать, если в организации появляется новая информационная база и нужно добавить каждому пользователю ярлык запуска к этой базе? В этом случае работу можно облегчить с помощью специализированного механизма платформы «1С:Предприятие 8» списки общих информационных баз.

В

процессе установки платформы «1С:Предприятие» в операционной системе, кроме всего прочего, регистрируется и файловое расширение «v8i». Файл с таким расширением является ярлыком, который содержит ссылки на общие информационные базы. С помощью диалога настройки окна запуска можно указать произвольное количество списков общих информационных баз, которые должны обрабатываться при запуске системы «1С:Предприятие» (см. рис. 1). Таким образом, содержащиеся в указанных общих списках информационные базы будут добавлены в основной список информационных баз и отображены при запуске системы (см. рис. 2). Файл с расширением v8i представ-

ляет собой небольшой текст с регламентированной структурой. Пример файла: [ЗУП sql рабочая] Connect=Srvr="Proliant7";Ref="ZP"; ID=c27a142e-5a9c-477c-a69f-12914a12b347 OrderInList=466944 Folder=/Зарплата OrderInTree=32768 External=0

Для облегчения работы по созданию общих списков существует возможность сохранения ссылки в файл. Для этого нужно вызвать контекстное меню правой кнопкой мыши на строке информационной базы в окне запуска «1С:Предприятие» и выбрать последний пункт меню «Сохранить ссылку в файл» (см. рис. 3). Важно, что в файле v8i может быть указана не одна, а сразу несколько

Рисунок 2. В окне запуска отображаются указанные в общих списках информационные базы

52

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

Рисунок 1. В диалоге настройки указываются списки общих информационных баз

Рисунок 3. Сохранение ссылки в файл


администрирование «1С»

Система компоновки данных

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

П

остроитель отчета – это объект, позволяющий на основе заданного текста запроса и настроек получить результат и вывести его в табличный документ или диаграмму. Основной задачей построителя является изменение текста запроса на основании указанных настроек, а также динамическое формирование выходных данных. Си с те м а ко м п о н о в к и д ан н ы х (СКД) – средство, предназначенное для создания отчетов на основе их декларативного описания, позволяет описать отчет как единое целое, предоставляя как пользователям, так и разработчикам практически неограниченные возможности получения данных. СКД имеет сложную структуру и может содержать произвольный набор таблиц и диаграмм. Новые возможности построения отчетов, предоставляемые системой компоновки данных: n использование нескольких наборов данных в одном отчете; n указание набора данных для построения иерархии;

№8, август 2008

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».

53


безопасность

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

Станислав Шпак Электронные подписи, шифрование данных, IPSec, вход в систему по смарт-картам, и все это с использованием цифровых сертификатов – возможно практически в любом домене. Нужно лишь спланировать и внедрить инфраструктуру открытого ключа. А установка серверов сертификации – наиболее важная часть этого процесса. От того, как вы проведете ее, зависит бесперебойность работы всей инфраструктуры PKI в целом.

И

нфраструктура открытого ключа (Public Key Infrastructure) не является жизненно необходимой для работы домена. Вы можете годами не внедрять ее на предприятии и не испытывать никаких проблем. Но когда вы начинаете задумываться о безопасности, о тех возможностях, которые дает внедрение PKI, то рано

54

или поздно вы придете к идее развернуть ее в масштабах поддерживаемого вами домена. PKI – это комбинация из ряда совместно работающих служб и компонентов. Одним из ключевых является центр сертификации (Certificate Authority – CA) – доверенный субъект или служба для выдачи и управления цифровыми сертификатами. В сети

Microsoft Windows центром сертификации становится компьютер с серверной операционной системой, на котором установлены и запущены службы сертификации (Certificate Services). В статье будут рассматриваться СА, работающие на Windows 2003 Server. Microsoft рекомендует тщательно спланировать PKI, прежде чем при-


безопасность ступать к действиям по развертыванию компонентов. Что касается СА, то нужно решить, будет ли использоваться только свой собственный центр сертификации либо же придется прибегать к услугам и открытых (публичных) СА, таких как VerySign. Особую роль имеет планирование расположения, количества и типа СА. Существует два основных типа СА: СА предприятия (enterprise CA) и изолированный СА (stand-alone CA). В свою очередь они подразделяются на два подтипа: корневой (root) и подчиненный (subordinate). Тип СА определяет, где хранится база сертификатов (локально или в Active Directory), как издаются сертификаты (автоматически по шаблонам или вручную) и т. п. Кроме того, издающим (issuing) называется СА, который обрабатывает запросы конечных пользователей.

Выбор структуры CA Необходимо спланировать многоуровневую структуру СА. Теоретически возможно использование одного центра сертификации одновременно в качестве корневого СА предприятия и издающего одновременно, но такая конфигурация настоятельно не рекомендуется как из соображений безопасности, так и из соображений дальнейшей масштабируемости. Microsoft рекомендует использовать число уровней СА от 2 до 4: использование более глубокой структуры становится трудным в управлении. Можно назвать «классической» схему из трех уровней СА (см. рис. 1): n первый уровень: изолированный корневой СА; n второй уровень: изолированный подчиненный СА (еще он называется промежуточным, (intermediate), или policy CA); n третий уровень: подчиненный СА уровня предприятия, он же выпускающий СА. Развертывание именно такой структуры и будет рассматриваться в этой статье. Что она дает: изолированный СА первого уровня (RootCA) выпускает самоподписанный сертификат сам себе и используется в качестве корня структуры. Изолированный подчиненный СА второго уровня (SubCA) получает сертификат от корневого СА

№8, август 2008

и используется, во-первых, для усиления безопасности всей структуры, а вовторых, в случае, когда на втором уровне больше чем один СА, для назначения различных операционных политик или политик безопасности для CA нижних уровней. В рассматриваемой схеме введение промежуточного второго уровня не является обязательным и используется с целью приведения к «классическому» виду и для возможности маштабируемости в дальнейшем. По рекомендации Microsoft из соображений безопасности, СА первых двух уровней должны быть изолированы от сети, а после установки и первичной настройки – храниться в надежном, защищенном от доступа посторонних месте в выключенном состоянии. Выполнению этого требования может помочь применение виртуальных машин – использование VMware или Virtual Server идеально подходит как для обеспечения безопасности на этапе развертывания инфраструктуры, так и для последующей физической изоляции серверов. И наконец, подчиненный СА уровня предприятия (EntCA) получает сертификат от промежуточного СА, находится в домене Active Directory и выпускает сертификаты по запросам конечных пользователей либо в ручном, либо в автоматическом режиме по шаблонам (рекомендуется). Для отказоустойчивости нужно иметь как минимум два выпускающих СА на каждый промежуточный СА, однако мы будем рассматривать установку только одного сервера.

Определение функциональных параметров для СА Когда структура СА определена, нужно учесть еще ряд важных параметров, влияющих на работу каждого из СА. К таковым параметрам относятся: n Срок жизни сертификатов. Здесь надо учитывать баланс между соображениями безопасности (меньший срок действия) и соображениями легкости обслуживания (больший срок действия). Мы выберем для сертификатов корневого СА срок действия 20 лет, для подчиненного СА – 10 лет, выпускающего СА – 5 лет и для сертификатов пользователей – 1 год.

Рисунок 1. Структура из трех СА

n Списки отзыва сертификатов и интервал их публикации. В случае если сертификат стал ненужным или недействительным до истечения срока его жизни, его можно отозвать вручную (пометить как недействительный). При этом его номер попадает в список отзыва (Certificate Revocation List – CRL). Этот список должен периодически обновляться и быть всегда доступным для проверки. Когда приложение проверяет действительность сертификата, происходит не только проверка даты и срока действия сертификата, но и отсутствие его номера в списке отзыва. Сертификат считается недействительным, если его номер содержится в CRL либо CRL недоступен. Список отзыва кэшируется на стороне клиента и обновляется в соответствии с временем жизни CRL, поэтому возможны ситуации, когда сертификат отозван, опубликован в CRL, но какое-то время еще может считаться действительным. Это надо учитывать при определении интервала публикации CRL. Для выпускающего СА интервал оставим по умолчанию в 1 неделю, для промежуточного – 3 месяца, для корневого – полгода. Для самоподписанного сертификата корневого СА этот параметр неприменим.

55


безопасность n Сведения о доступе к СА (Authority Information Access – AIA). В точке публикации AIA располагается сертификат СА, который также должен быть доступен для клиента. Клиент использует сертификаты СА как часть проверки действительности сертификата. После выбора предполагаемых рабочих параметров каждого из СА можно перейти непосредственно к их установке. Надо иметь в виду, что имя компьютера и доменную принадлежность после установки служб сертификации менять уже будет нельзя. В качестве доменного окружения будем рассматривать лес, состоящий из одного дерева и двух доменов. Домен Dedicated.Root представляет собой корневой домен, домен Res.Dom – дочерний (ресурсный). Службы сертификации на третьем уровне будем разворачивать на компьютере EntCA – члене домена Dedicated.Root.

Установка корневого СА Поскольку корневой СА будет изолированный, то перед установкой убедитесь, что компьютер не включен в домен, а также имеет имя, которое впоследствии не планируется менять – в нашем случае RootCA. Далее надо подготовить специальный файл capolicy.inf, который должен быть помещен в %Systemroot%. Наличие этого файла для установки корневого СА очень важно, поскольку в нем задаются все исходные параметры для СА. Более того, мастер установки служб сертификации не только не пре-

Рисунок 2. Самоподписанный сертификат корневого СА

56

дупредит вас об отсутствии этого фай- СА. Обратите внимание, что enterpriseла, но и не будет проверять его кор- типы СА будут недоступны (компьютер – не член домена). Выбираем ректность. Отсутствие файла capolicy.inf или 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 нужен, например, при испольвания СА нижележащих уровней. зовании смарт-карт). Значения параметров в разделе На следующем шаге нас попросят [Certsrv_Server] должны быть не мень- указать имя нашего СА и отличительше, чем те, которые будут запраши- ное имя (distinguished name). В последваться мастером установки. нем случае надо указать правильное Как уже было сказано, корневой имя по отношению к контексту Active СА издает самоподписанный серти- Directory, несмотря на то что этот СА фикат, который не имеет списка от- не является СА уровня предприятия. зывов. Поэтому очень важно разде- Итак, в качестве имени СА использулы [CRLDistributionPoint] и [Authority ем RootCA, в качестве отличительного InformationAccess] указать в явном ви- имени вводим DC=dedicated,DC=root. де и оставить пустыми. Значение Validity Period указывает В итоге у нас получается вот такое на время жизни сертификата. Как бысодержимое файла capolicy.inf: ло указано выше, срок службы для корневого СА сделаем равным в 20 лет. [Version] Далее происходит генерация криптоSignature= "$Windows NT$" материала, и нужно немного подож[Certsrv_Server] RenewalKeyLength=4096 дать окончания этого процесса. RenewalValidityPeriod=Years Зак лючительным шагом являRenewalValidityPeriodUnits=20 [CRLDistributionPoint] ется указание расположения фай[AuthorityInformationAccess] лов баз данных сертификатов, журТакже перед установкой служб сер- налов регистрации и общей папки тификации имеет смысл установить для расположения информации, треслужбы Internet Information Services буемой для клиентов (по умолчанию и поддержку ASP.NET. Для работы кор- это C:\CAConfig). Несмотря на то что невого и промежуточного СА их нали- это изолированный СА, все равно лочие совсем не обязательно, но это мо- кальная папка будет создана и, в служет несколько облегчить дальнейший чае наличия сетевого интерфейса, отвыпуск сертификатов для СА нижних крыта для общего доступа. уровней, несмотря на то что почти все действия, доступные через веб-интер- Проверка и настройка фейс, можно продублировать и через RootCA консоль управления службами серти- Поскольку корневой СА является отфикации. правной точкой для всей цепочки СА, Теперь можно открыть «Панель очень важно внимательно проверить управления → Установка и удаление и сконфигурировать его. Первое, что программ → Установка компонентов необходимо сделать, это просмотWindows» и выбрать Certificate Services реть сертификат, который СА выдал (службы сертификации). Будет показа- сам для себя (см. рис. 2). Это можно но предупреждение о том, что после сделать, заглянув в папку C:\CAConfig. завершения установки изменить имя Там уже должен лежать файл <имя_ компьютера будет уже нельзя. Далее сервера>_<имя_СА>.crt. В нашем слубудет предложено сделать выбор типа чае это файл RootCA_RootCA.crt.


безопасность Что должно быть в сертификате:

обходимость перевыпустить все сер-

n на вкладке General: значения по- тификаты, которые были выпущены лей Issued by и Issued to должны совпадать и указывать на только что установленный СА (в нашем случае это RootCA). Диапазон времени, в течение которого сертификат считается действительным, должен быть верен и соответствовать тому, что задавали при установке; n на вкладке Details: в перечне атрибутов сертификата должны отсутствовать атрибуты CRL Distribution Points и Authorit y Information 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 могут включаться во все издаваемые этим СА сертификаты. То есть теоретически возможно изменить или дополнить этот список и после того, как СА начнет работать, на практике же это будет означать не-

№8, август 2008

до того, как этот список изменился. Во-вторых, недоступность 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, для того чтобы клиенты могли находить deltaCRL (об этом чуть ниже); n Include in the CDP extension of issued certificates – указывает на необходимость включения этой CDP в список атрибутов выпускаемых этим СА сертификатов; n Publish delta CRLs to this location – для публикации delta-CRL.

Рисунок 3. Задание CDP на корневом СА

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) и создадим новую точку,

57


безопасность

Рисунок 4. Задание точек AIA

Рисунок 5. Пример

указывающую на общую сетевую папку в локальной сети (с опцией 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 выглядит следующим образом: 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=root CertUtil: -setreg command completed successfully. The CertSvc service may need to be restarted for changes to take effect.

Только теперь можно производить публикацию CRL. Это можно сделать с помощью команды «certutil -CRL» либо из оснастки Certificate Authority. Воспользуемся вторым методом, так как нам необходимо еще будет сконфигурировать интервал обновления CRL, а это удобнее сделать через графический интерфейс. В оснастке Certificate Authority раскрываем узел, соответствующий нашему СА, и щелкаем правой кнопкой мы-

58

ши на Revoked Certificates. Выбираем Properties и попадаем на вкладку CRL Publishing Parameters. Здесь мы видим настройки, касающиеся интервала обновления CRL и delta-CRL. Поскольку это корневой СА и не ожидается слишком частого отзыва сертификатов, то интервал можно сделать достаточно длинным – например, 6 месяцев. При выборе интервала имейте в виду, что вам вручную придется помещать каждый раз публикуемый CRL в заданные точки распространения. Если вы не сделаете этого, то сертификаты, выпущенные этим СА, окажутся недействительными. Сделав необходимые настройки, нажмите ОК. 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. В следующей части статьи мы рассмотрим установку промежуточного и выпускающего СА и настройку последнего для работы в домене с использованием шаблонов сертификатов.


Реклама


безопасность

OpenBSD

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

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

Основная часть

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

60

(http://www.openbsd.org/errata.html) официального сайта проекта, где списки выявленных ошибок сгруппированы согласно релизам, в которых они были выявлены: например, errata43.html – ошибки, выявленные после выхода релиза 4.3. Страничка также содержит краткое описание, характеристику (бе-


безопасность зопасность или надежность) и ссылку исходных кодов с помощью стабильной 4.3/common/003_xorg.patch на заплатку (патч), с помощью кото- (патчевой) ветки с последующей пере4.3/common/004_bind.patch рой можно избавиться от уязвимости. сборкой ядра и встроенного програм4.3/common/005_pcb.patch На момент написания статьи странич- много обеспечения (userland) – более ка релиза 4.3 содержала 5 записей. длительный, но и более автоматизироСогласно терминологии, исполь- ванный (если синхронизацию перелоКак видно из вывода архиватозуемой внутри проекта, ваша систе- жить на могучие плечи cron) процесс. ра, в архиве находятся 5 патчей. Все ма может находиться в одном из 3 воз- Он также позволяет исправить неза- они расположены в каталоге common, что свидетельствует об их платформоможных состояний: релиз (-release), крытые патчами ошибки. стабильное (-stable) или текущее Перед тем как приступить непо- независимости. Назначение патча лег(‑current). Разница между этими со- средственно к наложению патчей или ко узнать, используя команду head. стояниями заключается в том, что ре- синхронизации исходного кода, необ$ cd /usr/src/patches/4.3/common лиз – это версия, выпускаемая проек- ходимо его (код) заполучить. Самый $ head -n 11 001_openssh.patch том согласно графику релизов каждые простой способ загрузить его по ftp Apply by doing: 6 месяцев на CD, стабильная система – (ftp://ftp.openbsd.org/pub/OpenBSD/4.3) cd /usr/src это релиз с наложенными на него пат- или скопировать с CD (обычно это треpatch -p0 < 001_openssh.patch чами на текущий момент времени. Пат- тий CD в стандартной поставке). Исчи представляют собой порции исход- ходный код, хранящийся на ftp-сервеAnd then rebuild and install file: cd usr.bin/ssh ного кода, содержащие очень важные ре, разделен на несколько файлов: make obj исправления, сделанные и опробован- n src.tar.gz – содержит исходный код make cleandir ные в текущей ветке. Подразумеваетнабора встроенного ПО; make depend make ся, что для того, чтобы обладать на- n sys.tar.gz – содержит исходный код make install илучшими показателями стабильносядра; ти и надежности ОС, OpenBSD долж- n xenocara.tar.gz – содержит исходИз вывода следует, что патч предна быть приведена к стабильному соный код модифицированной сис- назначен для исправления исходностоянию. При этом следует учитывать, темы X-Window X.org или Xenocara, го кода элемента встроенного ПО в интерпретации OpenBSD). (в частности OpenSSH) и потребует что поддержка новых устройств и кардинально новые свойства, реализопересборки толького этого элемента. ванные в текущей ветке не попадают После загрузки необходимо разар- Тут же приведены инструкции по налов стабильную. Текущая ветка в свою хивировать src.tar.gz и sys.tar.gz в ди- жению патча (первый абзац) и послеочередь предназначена в основном ректорию /usr/src, а xenocara.tar.gz дующей пересборке приложения (втодля разработчиков и является поли- в – /usr. рой абзац). гоном для испытания нововведений. $ cd /usr/src $ head 003_xorg.patch Ни один здравомыслящий системный # tar -xvzf /usr/sys.tar.gz администратор не станет обновлять Apply by doing: # tar -xvzf /usr/src.tar.gz $ cd /usr cd /usr/xenocara ОС ответственного сервера до теку# tar -xvzf /usr/xenocara.tar.gz #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 бильной (патчевой) ветки исходных ко- Накладываем заплатки дов системы, которая содержит все ис- Патчи можно скачать как в виде отдельЭтот патч предназначен для исправления для обновления системы. ных файлов (001_openssh.patch и т. д.), правления исходного кода Xenocara, Следует учитывать тот факт, что ис- так и единым архивом (4.3.tar.gz). Сде- он также потребует пересборки тольходный код стабильной ветки кроме лать это можно или с упомянутой выше ко этого элемента. обновлений, вышедших в виде патчей, странички errata43.html или непосред$ head 005_pcb.patch также содержит очевидные и простые ственно по ftp (ftp://ftp.openbsd.org/pub/ исправления, которые были признаны OpenBSD/4.3). Apply by doing: недостойными включения в список патПосле скачивания необходимо расcd /usr/src чей на страничке «Ошибок». Разница паковать архив, содержащий патчи patch -p0 < 005_pcb.patch между способами заключается в том, в какую-нибудь директорию, напричто в случае наложения патчей будут мер /usr/src/patches. Then build and install a new kernel. закрыты только те ошибки, которые # mkdir /usr/src/patches были признаны критичными, в следсКомментарий «Then build and install $ cd /usr/src/patches твие этого существенно сокращается a new kernel» указывает на то, что патч # tar -xvzf /usr/4.3.tar.gz время, затрачиваемое на исправлепредназначен для исправления исход4.3/common/001_openssh.patch ние ошибок (даже в случае пересборного кода ядра и потребует его даль4.3/common/002_openssh2.patch ки ядра). В свою очередь обновление нейшей пересборки (см. далее).

№8, август 2008

61


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

Непосредственно процесс пересборки ядра предельно прост:

Следуем стабильной (патчевой) ветке исходного кода

Правда, стоит отметить, что он длится довольно долго: от 30-40 минут на современной технике до суток на раритетном железе (которое частенько используется для установки OpenBSD). После завершения сборки ядра необходимо перезагрузить компьютер для загрузки нового ядра. Если по какой-то причине собранное ядро не может быть загружено, процесс загрузки будет остановлен и появится приглашение загрузчика: «boot>». В этом случае необходимо загрузить копию старого рабочего ядра, исправить ошибки в конфигурационном файле и повторить процедуру.

Поскольку разработчики OpenBSD используют для управления исходным кодом систему контроля версий CVS, её можно использовать для получения и обновления локальной копии дерева исходных кодов, находящейся в директории /usr/src. Для начала необходимо выбрать один из анонимных CVS (AnonCVS) серверов проекта. Это можно сделать на страничке http://www.openbsd.org/anoncvs.html официального сайта. После выбора сервера можно приступать к обновлению дерева исходных кодов. $ cd /usr/src # export CVSROOT=anoncvs@anoncvs.de.openbsd.org:/cvs # cvs -d$CVSROOT up -rOPENBSD_4_3 -Pd

В данном примере был использован анонимный CVS-сервер anoncvs.de.openbsd.org. Параметр up команды cvs обеспечивает обновление локальной копии дерева исходных кодов. Флаг -r позволяет выбрать версию (ревизию) исходного кода для обновления. Флаги -Pd позволяют cvs во время обновления удалять пустые директории дерева и создавать новые (без этих флагов обновление закончится неудачей). Команду cvs также можно использовать для получения дерева исходных кодов и дерева портов, указав опцию checkout и ветвь, которую нужно скачать (src, xenokara, ports). Пример для скачивания исходных кодов ядра и встроенного ПО. $ cd /usr # export CVSROOT=anoncvs@anoncvs.de.openbsd.org:/cvs # cvs -d$CVSROOT checkout -rOPENBSD_4_3 -P src

После того как наложены заплатки, либо дерево исходных кодов синхронизировано со стабильной (патчевой) веткой, можно пересобирать ядро и встроенное ПО (userland).

$ # # # #

cd /usr/src/sys/arch/i386/conf config GENERIC cd ../compile/GENERIC make clean && make depend && make make install

boot> bsd.old

Если пересборка ядра завершилась успешно, можно приступать к пересборке встроенного ПО. Следует быть особо внимательным при выполнении команды rm с флагами -rf от пользователя root, ошибочно указав директорию (не /usr/obj/*), можно в лучшем случае лишиться копии дерева исходных кодов, в худшем – системы. # $ # # # #

rm -rf /usr/obj/* cd /usr/src make obj cd /usr/src/etc && env DESTDIR=/ make distrib-dirs cd /usr/src make build

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

Заключение

Команда разработчиков ОС OpenBSD прилагает много усилий для своевременного и оперативного исправления выявленных в процессе эксплуатации ПО ошибок. РазрабаПересобираем ядро и встроенное ПО тываемая ими система включает достаточный и подробно Сборка ядра происходит с параметрами, которые хранятся документированный инструментарий для поддержания бев файле конфигурации ядра. Обычно этот файл находится зопасности на высоком уровне. в директории conf по адресу /usr/src/sys/arch/<платформа>/ Обновлять или патчить, каждый решает сам, но с тем, conf. Файл конфигурации ядра, поставляемый с дистрибу- что безопасности системы необходимо уделять особое внитивом, по умолчанию носит название GENERIC. Разработ- мание, я думаю, согласится каждый. чики 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. # cp /bsd /bsd.old

62

5. Patching and Kernel Building – http://www.openbsd101.com/ patching.html.


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 с сайта производителя.

Множественные уязвимости в Ruby

Несколько уязвимостей в продуктах 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 1.8.5 и более ранние версии; Ruby 1.8.6p286 и более ранние версии; Ruby 1.8.7-p71 и более ран- Множественные уязвимости в Python ние версии. Программа: Python версии 2.4.x, 2.5.x. Опасность: Средняя. Опасность: Средняя. Описание: 1. Множественные ошибки обнаружены в ре- Описание: 1. Целочисленные переполнения обнаруализации ограничений безопасных уровней (safe level жены в основных модулях stringobject, unicodeobject, restrictions). Удаленный пользователь может вызвать функ- bufferobject, longobject, tupleobject, stropmodule, gcmodule цию untrace_var(), произвести операции syslog и изменить и mmapmodule. $PROGRAM_NAME на безопасном уровне 4 или вызвать 2. Целочисленное переполнение обнаружено в hashlibнебезопасные методы на безопасных уровнях 1-3. модуле, что может привести к ненадежным криптографи2. Уязвимость существует из-за использования регу- ческим результатам. лярных выражений в WEBrick::HTTPUtils.split_header_value(). 3. Целочисленное переполнение обнаружено при обраУдаленный пользователь может с помощью специально ботке Unicode-строк. Злоумышленник может вызвать пересформированного HTTP-запроса потребить все доступные полнение буфера на 32-битной системе. ресурсы процессора на системе. 4. Целочисленное переполнение обнаружено в функции 3. Уязвимость существует из-за ошибки в DL, кото- PyOS_vsnprintf() на архитектурах, которые не поддерживарая позволяет удаленному пользователю обойти ограни- ют функцию vsnprintf(). чения безопасности и выполнить потенциально опасные 5. Целочисленное переполнение обнаружено в функции функции. PyOS_vsnprintf() при обработке строк нулевой длины. Зло4. Уязвимость существует из-за того, что resolv.rb ис- умышленник может вызвать повреждение памяти. пользует предсказуемый номер порта для DNS-запроса. URL производителя: python.org. Удаленный пользователь может отравить DNS-кэш. Решение: Установите исправление из SVN-репозитория URL производителя: www.ruby-lang.org/en. производителя. Решение: Установите последнюю версию с сайта производителя. Выполнение произвольных команд

Обход ограничений безопасности в 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. Решение: Установите исправление с сайта производителя.

№8, август 2008

в Sun Solaris

Программа: Sun Solaris 8, 9, 10. Опасность: Средняя. Описание: Уязвимость существует из-за неизвестной ошибки в сетевой утилите snoop(1M), относящейся к отображению SMB-трафика. Удаленный пользователь может с помощью специально сформированного пакета, прочитанного или перехваченного приложением через опцию ‑i, выполнить произвольные команды на системе с привилегиями пользователя snoop или nobody. Для успешной эксплуатации уязвимости требуется, чтобы приложение было запущено без опции -o. URL производителя: www.sun.com Решение: Установите исправление с сайта производителя.

Составил Александр Антипов

63


безопасность

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

Андрей Маркелов При помощи механизма STARTTLS и сертификатов мы попробуем настроить взаимную аутентификацию и шифрование пересылаемой почты между двумя почтовыми серверами с MTA Sendmail. Также при помощи TLS защитим отправляемую клиентами на сервер почту и настроим почтовый релей для пересылки корреспонденции только тех пользователей, которые предъявят сертификат, выданный нашим центром сертификации (CA). 64


безопасность

S

TARTTLS (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. Генерируем для нашего сервера приватный ключ и создаем запрос в центр сертификации: # openssl genrsa 1024 > sendmail.key # openssl req -new -key sendmail.key -out sendmail.csr

После чего необходимо переслать запрос на выдачу сертификата в центр сертификации. Администратор центра сертификации выпускает на основе запроса сертификат: # openssl ca -in sendmail.csr -out sendmail.crt

Копируем полученный сертификат на почтовый сервер и кладем рядом с ключом в директорию /etc/pki/tls/ certs. Права на оба файла должны быть выставлены 600 или 400. Далее начинаем править конфигурационный файл /etc/ mail/sendmail.mc. Редактируем пути и убираем комментарии со строк:

№8, август 2008

# Директория с сертификатами 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')dnl define(`confSERVER_KEY', ↵ `/etc/pki/tls/certs/sendmail.key')dnl

Для проверки наших настроек зайдем на 25-й порт сервера при помощи команды telnet: # 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 you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-STARTTLS 250-DELIVERBY 250 HELP

STARTTLS 220 2.0.0 Ready to start TLS

QUIT

Повторяем те же действия по настройке (включая выпуск второго сертификата) для второго сервера. В нашей ситуации оба сервера используют один и тот же удостоверяющий центр. Если используются разные CA, то MTA будут необходимы корневые сертификаты обоих. Теперь если мы попробуем на одном из серверов локально запустить MUA, например mutt, и отправить сообщение пользователю второго сервера, то на первом сервере в /var/ log/maillog увидим примерно такие сообщения: 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/256 Jul 31 01:07:21 station18 sendmail[9558]: m6UL7Lpc009556: to=<andrey@station17.example.com>, ctladdr=<root@station18.example.com> (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)

65


безопасность А на принимающем соответственно: 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/256 Jul 31 01:07:21 station17 sendmail[9193]: m6UL7LpK009193: from=<root@station18.example.com>, size=748, class=0, nrcpts=1, msgid=<20080730210721.GA9548@station18.example.com>, proto=ESMTP, daemon=MTA, relay=station18.example.com [192.168.0.18] Jul 31 01:07:21 station17 sendmail[9194]: m6UL7LpK009193: to=<andrey@station17.example.com>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=31037, dsn=2.0.0, stat=Sent

Как видно из журнала, серверы аутентифицировали друг друга при помощи сертификатов, выданных одним и тем же CA, и при пересылке письма информация была зашифрована. Данный факт можно проверить, запустив на одном из тестовых серверов утилиту wireshark или tcpdump.

Настройка TLS для клиента В текущем состоянии Sendmail готов работать с клиентом, принимая от него почту в зашифрованном виде, однако никакой проверки клиента при помощи механизма TLS не используется. Зато клиенту не нужны сертификаты, и всего лишь достаточно поставить соответствующую галку – «использовать защищенное соединение, TLS». В журнале почтового сервера это выглядит примерно так: 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/256 Jul 30 23:29:09 station17 sendmail[8228]: m6UJT8GH008228: from=<andrey@station17.example.com>, size=341, class=0, nrcpts=1, msgid=<4890C39D.4020404@station17.example.com>, proto=ESMTP, daemon=MTA, relay=station51.example.com [192.168.0.51] Jul 30 23:29:09 station17 sendmail[8229]: m6UJT8GH008228: to=<root@station17.example.com>, ctladdr=<andrey@station17.example.com> (507/508), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30623, dsn=2.0.0, stat=Sent

Как видно, напротив verify мы видим значение «NO». Попробуем «закрутить гайки». Сгенерируем сертификат для пользователя. Раз мы начали работать с OpenSSL, для упрощения задачи предположим, что наш пользователь также воспользуется этой утилитой. Естественно, какими средствами будет сгенерирован запрос в центр сертификации, нам не важно. В «боевой» среде скорее всего пользователь воспользуется каким-либо веб-интерфейсом. Итак, от лица пользователя: # openssl genrsa 1024 > andrey.key # openssl req -new -key andrey.key -out andrey.csr

И от лица администратора CA: # openssl ca -in andrey.csr -out andrey.crt

Далее необходимо «упаковать» ключ и сертификат в формат PKCS#12: # cat andrey.key andrey.crt > andrey.pem # openssl pkcs12 -export -in andrey.pem ↵ -out testusercert.p12 -name "Andrey's Personal cert"

66

«Скармливаем» персональный сертификат и сертификат CA выбранному MUA, в нашем случае программе Windows Mail. А на сервере остается прописать, кому разрешена пересылка почты через наш сервер: # cat /etc/mail/access Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY CERTISSUER:/C=GB/ST=Berkshire/L=Newbury/O=My+20Company+20Ltd/ CN=Station+2018+20CA RELAY CERTSUBJECT:/C=GB/ST=Berkshire/L=Newbury/O=My+20Company+20Ltd/ CN=Station+2018+20CA RELAY

В данном случае мы разрешаем пересылку только обладателям сертификатов, выданных нашим CA. Параметры CERTISSUER и CERTSUBJECT мы заполняем значениями, взятыми из полей Issuer и Subject сертификата CA: # openssl x509 -in cacert.pem -noout -subject -issuer subject= /C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/ CN=Station 18 CA issuer= /C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/ CN=Station 18 CA

При этом ряд символов, в том числе «{», «<», «>», «(», «)», «"», «+», «}», и пробел заменяются на шестнадцатеричные ASCII-коды, предваряемые символом «плюс». Соответствующие коды можно посмотреть в странице руководства: # man ascii

Успешная попытка обладателя сертификата использовать наш почтовый сервер в качестве релея в журнале /var/log/messages будет выглядеть примерно следующим образом: 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/128 Jul 31 02:10:31 station17 sendmail[9700]: m6UMAVTH009700: from=<andrey@station17.example.com>, 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/256 Jul 31 02:10:31 station17 sendmail[9702]: m6UMAVTH009700: to=<root@station18.example.com>, ctladdr=<andrey@station17.example.com> (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 delivery)

Если вы увидели подобные сообщения в журнале, значит наша цель достигнута. Убедиться в том, что соответствующий сеанс защищен, вы можете при помощи утилиты wireshark. Таким образом, как видите, при всей относительной сложности настройки MTA Sendmail, механизм STARTTLS включается достаточно просто. Удачи.


закон есть закон Какова процедура изъятия компьютеров на экспертизу? (продолжение, начало см. в №7 за 2008 г.) По закону все должно происходить следующим образом. Если проверка проводится в рамках уголовно-процессуального законодательства, возможны два варианта: производство осмотра (может осуществляться до возбуждения уголовного дела) и проведение обыска (может происходить только после того, как уголовное дело возбуждено). В первом случае в компанию приходят проверяющие на основании постановления о производстве осмотра, после чего начинается проверка компьютеров. При проведении осмотра должен вестись протокол, в который записываются все действия, которые производились при осмотре, в случае изъятия описывается изымаемое оборудование. Изымаемое оборудование должно быть опечатано, это делается, чтобы исключить доступ внутрь корпуса и подключение к нему питания. Процесс опечатывания фиксируется в протоколе. Осмотр и изъятие должны производиться с участием двух понятых. Что нужно сделать: ознакомиться с документами проверяющих (чтобы знать, кто к вам пришел с проверкой), узнать основания проводимой проверки, в случае изъятия техники проверить, чтобы в протоколе были указаны индивидуальные признаки и особенности изымаемой техники (требование основано на п. 3 ст. 177 УПК РФ), в случае если вы сомневаетесь в подлинности лицензии на установленное программного обеспечения, прежде чем давать показания посоветуйтесь с адвокатом. Если сотрудники фирмы используют свою технику, то необходимо запастись документами, подтверждающими право собственности. Постановление дается на осмотр конкретной фирмы и ее офиса, при проведении осмотра обыск сотрудников, закрытых помещений не допускается, на это необходимо дополнительное постановление. Второй случай – производится обыск. При этом уже должно быть возбуждено уголовное дело. Если к вам пришли с обыском, а информация об уголовном деле у вас отсутствует, советую не предпринимать никаких

№8, август 2008

действий без адвоката, требовать его присутствия при проведении обыска, а в случае отказа указывать в протоколе на не предъявление вам постановления о возбуждении уголовного дела и отсутствие на следственных действиях адвоката. Если о возбуждении уголовного дела было известно, то предполагается, что у руководства фирмы было время для подготовки и консультации со специалистом. При осуществлении проверки органами милиции, проверка произвоРубрику ведет юрист дится в соответствии с законом «О миЮлия Штокало лиции» и Приказом МВД РФ от 2 августа 2005 г. N 636, которым утверж- нии) УПК РФ; о возбуждении дела об дена Инструкция о порядке проведе- административном правонарушении ния сотрудниками милиции проверок и рассмотрении материалов в рамках и ревизий финансовой, хозяйствен- производства по делам об администной, предпринимательской и торго- ративных правонарушениях; о передавой деятельности. Согласно п. 4 Инс- че материалов по подведомственнострукции, при наличии данных о влеку- ти, в том числе для решения вопроса щем уголовную ответственность нару- о рассмотрении материалов в рамках шении законодательства, регулиру- производства по делам об администющего финансовую, хозяйственную, ративных правонарушениях; о заверпредпринимательскую и торговую де- шении проверки в связи с неустановятельность, в целях установления ос- лением нарушения законодательснований для возбуждения уголовно- тва РФ. При проведении таких мероприяго дела, начальником органа внутренних дел (органа милиции) или его за- тий следует обратить внимание, чтоместителем выносится мотивирован- бы Постановление о проведении проное постановление о назначении про- верки было подписано начальником верки, ревизии по установленной фор- районного ОВД или его заместителем, ме. В постановлении указывается сос- т.е. в постановлении должны быть укатав сотрудников милиции, проводящих заны: должность, ФИО и стоять подпроверку. Сотрудники милиции также пись. Если постановление не подпивправе производить изъятие, которое сано, либо подписано другим лицом, оформляется в присутствии двух по- вы вправе отказать в проведении проверки, советую также написать жалонятых протоколом и описью. По результатам проведения про- бу в прокуратуру, управление собсверки сотрудниками милиции состав- твенной безопасности и вышестояляется акт проверки финансовой, хо- щий орган. В постановлении должны быть указяйственной, предпринимательской, торговой деятельности. В акте отража- заны сотрудники, которые могут учасются все выявленные нарушения зако- твовать в проводимых мероприятиях, нодательства и иные имеющие значе- и вы можете проверить их соответсние обстоятельства. Акт составляет- твие; при проведении изъятия компьюся в трех экземплярах, один из кото- терной техники необходимо проверить рых передается организации, в кото- наличие протокола изъятия и описи, в описи должны быть подробно укарой проводилась проверка. По результатам проверки прини- заны изымаемые предметы. Копии всех составляемых докумается одно из решений: о составлении рапорта об обнаружении призна- ментов должны быть предоставлены ков преступления; о направлении ма- организации, в которой проводилась териалов проверки для рассмотрения проверка. в порядке, предусмотренном статьями 144 (сообщение о преступлении) и Присылайте Ваши вопросы по адресу 145 (принятие решения по результатам sekretar@samag.ru или оставляйте на форассмотрения заявления о преступле- руме журнала www.samag.ru/forum.

67


программирование

Java:

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

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

М

ногие Java-приложения постав- n сокращать объем приложения; ляются в виде одного или не- n упростить процесс создания бибскольких jar-файлов (Java лиотеки; ARchive), которые по сути являются n осуществлять контроль версий. обыкновенными zip-архивами. В них обычно, кроме байт-кода программы, Полноценно работать с технолоразмещаются дополнительные ресур- гией JAR можно как с помощью утисы и конфигурационные файлы. литы jar, входящей в состав JDK (Java Такой подход позволяет: Development Kit), так и с использованиn подписывать содержимое jar-фай- ем классов JAR API. ла, повышая таким образом уроПервый способ распространен поввень безопасности; семестно, в то время как второй, заn сокращать время загрузки аппле- частую незаслуженно, обделен внитов за счет отсутствия необходи- манием и, как показывает практика, мости открытия нового соедине- напрасно – во многих случаях это мония для каждого файла; жет существенно облегчить жизнь раз-

68

работчика. Именно поэтому в данной статье будут описаны несколько способов применения JAR API для вызова произвольных методов из jar-файла, записи и чтения атрибутов манифеста. (Манифест – (устар.) торжественное письменное обращение верховной власти к народу в связи с важным политическим событием, торжественной датой и т. д. (Толковый словарь русского языка).

Утилита jar Прежде всего следует уделить некоторое внимание утилите jar (http://java. sun.com/javase/6/docs/technotes/tools/


программирование solaris/jar.html). Это консольное приложение, запускаемое с набором параметров. Примеры вызова утилиты: // Создание нового jar-файла jar cf file.jar список_файлов // Просмотр содержимого архива jar tf file.jar // Извлечение содержимого из jar-файла jar xf file.jar

MANIFEST.MF JAR 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-файл: Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.)

Таблица 1. Атрибуты главной группы манифеста Атрибут

Описание

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

Таблица 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)

Условно содержимое можно разделить на главную группу (содержит определенные стандартами атрибуты, некоторые из них приведены в таблице 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: package pkg; public class Main {

№8, август 2008

public static void main(String[] args) { System.out.println("main(): запущен"); } }

MANIFEST.MF архива имеет следующий вид: Manifest-Version: 1.0 Created-By: 1.6.0_03-b05 (Sun Microsystems Inc.) Main-Class: pkg.Main

Вначале необходимо получить URL по имени файла: 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);

69


программирование } else { // Запуск метода с объектом, у которого // надо выполнить метод, и параметрами. // null показывает, что метод статический mainMethod.invoke(null, args); } }

Теперь попробуем задействовать JAR API для решения несколько усложненной задачи – теперь необходимо запустить метод main() главного класса jar-файла. Для этого нам надо лишь вызвать уже имеющийся метод runMainMethod() с именем требуемого класса, которое можно получить из манифеста по имени атрибута Main-Class: private String getMainClassName() throws IOException { JarURLConnection connection = ↵ (JarURLConnection) url.openConnection(); Attributes attributes = ↵ connection.getMainAttributes(); return attributes.getValue(Attributes.Name.MAIN_CLASS); }

После вызова метода runMainMethod() в консоли появится надпись: main(): запущен

Генерация манифеста с атрибутами После того как мы успешно запустили метод main() главного класса jar-файла, попробуем поработать с атрибутами манифеста. Начнем с создания манифеста, а затем попробуем прочитать записанные атрибуты. Итак, класс JarAttributeWriter будет генерировать все атрибуты: import import import import import import

java.io.ByteArrayInputStream; java.io.FileOutputStream; java.io.IOException; java.io.InputStream; java.io.OutputStream; java.util.jar.Manifest;

public class JarAttributeWriter { private static final String LINE_TEMPLATE = "%s: %s\n"; // Метод генерирует текстовый файл – манифест с именем // filename public 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("UTF8")); 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); } }

70

В результате файл манифеста будет содержать: Manifest-Version: 1.0 Created-By: JarAttributeWriter Attribute_1: Value_1 Attribute_2: Value_2

Чтение атрибутов из манифеста Получившийся файл можно использовать в качестве манифеста для jar-архива – это довольно просто, поэтому предположим, что этот манифест уже лежит в jar-файле и требуется считать из него все атрибуты или только некоторые. Эту работу будет выполнять класс JarAttributeReader: 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.0 Created-By=JarAttributeWriter Attribute_1=Value_1 Attribute_2=Value_2

Заключение Следует отметить, что JAR API предоставляют довольно мощные средства для работы с JAR вообще и MANIFEST.MF, в частности, которые отнюдь не ограничиваются приведенными выше примерами. Ситуаций, когда правильное использования манифеста может существенно облегчить процесс отладки и/или распространения приложений, довольно много. Например, добавление версии приложения в качестве атрибута MANIFEST.MF позволит точно определить номер сборки приложения. Иными словами, в общем случае, в манифест можно записать различные параметры для последующего их использования при запуске приложения.


bugtraq Отказ в обслуживании в Sun Java System Web Proxy Server

Уязвимость при обработке IPSec‑политик в Microsoft Windows

Программа: Sun Java System Web Proxy Server 4.x. Опасность: Средняя. Описание: Уязвимость существует из-за неизвестной ошибки в FTP-подсистеме. Удаленный пользователь может запретить прокси-серверу принимать новые подключения. URL производителя: www.sun.com/software/products/web_ proxy/home_web_proxy.xml. Решение: Установите исправление с сайта производителя.

Программа: Microsoft Windows 2008; Microsoft Windows Vista. Опасность: Низкая. Описание: Уязвимость существует из-за ошибки в механизме импорта IPsec-политик из доменов под управлением Windows Server 2003 в домены под управлением Windows Server 2008. В результате ошибки система игнорирует IPsec‑политики и данные, которые должны быть зашифрованными, передаются в открытом виде. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.

Несколько уязвимостей в 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-репозитория производителя.

Спуфинг атака в PowerDNS Программа: PowerDNS версии до 2.9.21.1. Опасность: Низкая. Описание: Уязвимость существует из-за того, что сервер сбрасывает DNS-запросы к недействительным DNS-записям в пределах действительного домена. Злоумышленник может воспользоваться этим для проведения спуфинг-атаки на другой сервер. URL производителя: www.powerdns.com. Решение: Установите последнюю версию 2.9.21.1 с сайта производителя.

№8, август 2008

Раскрытие данных в VMware VirtualCenter Программа: VMware VirtualCenter версии 2.0.2 до обновления Update 5 и 2.5 до обновления Update 2, возможно, другие версии Опасность: Низкая. Описание: Уязвимость существует из-за того, что служба VirtualCenter backend некорректно проверяет привилегии при выполнении некоторых действий. Удаленный пользователь может получить доступ к некоторым данным (например, именам системных учетных записей). URL производителя: www.vmware.com/products/vi/vc. Решение: Установите исправление с сайта производителя.

Отказ в обслуживании в Sun Solaris Программа: Sun Solaris 10. Опасность: Низкая. Описание: Уязвимость существует из-за неизвестной ошибки, относящейся к системному вызову sendfilev(). Уязвимость может быть эксплуатирована локальным пользователем с помощью специально сформированного приложения, или удаленным пользователем с помощью специально сформированной веб-страницы, которая обслуживается веб-сервером Apache 2.2.x. Для успешной эксплуатации уязвимости с помощью веб-страницы, Apache должен быть собран без некоторых опций. URL производителя: www.sun.com. Решение: Установите исправление с сайта производителя.

Отказ в обслуживании в IPsec-Tools в racoon Программа: IPsec-Tools версии до 0.7.1. Опасность: Низкая. Описание: Уязвимость существует из-за утечки памяти в демоне racoon при обработке некорректных предложений. Удаленный пользователь может вызвать отказ в обслуживании приложения. URL производителя: ipsec-tools.sourceforge.net. Решение: Установите последнюю версию 0.7.1 с сайта производителя.

Составил Александр Антипов

71


программирование

Знакомимся с YAML

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

Ч

тобы приложение было гибким чего-нибудь небольшого. Согласитесь, «параметр-разделитель-значение» и настраиваемым, оно снабжается было бы нелепо для скрипта в 50‑100 (чаще всего в качестве разделителя конфигурационным файлом (а то строк писать аналогичного или даже выступает любое количество пробелов и несколькими). Очевидно, что формат большего размера «парсер» для разо- и/или символов табуляции, но могут этого файла должен соответствовать вой (в контексте работы скрипта) зада- быть и другие, скажем, знак равенства определённым соглашениям, то есть чи анализа конфигурации. или двоеточие; сокращённо будем наможно сказать, что он пишется на неЕстественно, как только в процессе зывать этот формат «П-Р-З»): котором языке разметки. И при выбо- работы возникает подобная проблема, node_ip 10.0.0.51 ре такого языка нужно учитывать осо- то в голову сразу приходит бессмерnode_user arc бую роль конфигов – ведь они созда- тная фраза: «Всё украдено до нас». node_password xidughei email_list arc,hunter,engineer ются людьми для программ. С одной В том смысле, что если разработчик sms_list hunter12@sms.mob.ru стороны, такой файл должен легко чи- сталкивается с некоторой типовой зататься и редактироваться человеком дачей, то с высокой долей вероятносЕго достоинства: простота написа(не всегда имеющим диплом с отличи- ти можно считать, что данная задача ния и восприятия человеком и просем по специальности «Программист»), уже кем-то решена. Поэтому и в части той разбор (функцией split по регуа с другой – легко «разбираться» про- анализа конфигурационных файлов лярному выражению, которая имеетграммой. Причём второе требование проблема обычно сводится к поиску ся практически во всех современных связано не столько с ресурсоёмкостью наиболее удобного инструмента сре- скриптовых языках). Но есть и недозадачи «разбора», сколько с простотой ди уже существующих. статки: «линейность», т.е. невозможразработки соответствующей подпроность создавать иерархию параметров, граммы. Особенно актуально это ста- Краткий обзор и «нетипизированность», т.е. сложносновится для скриптовых языков (Perl, «типичных» форматов ти с передачей параметров, тип котоPython, Ruby и т. п.), основное назна- Наиболее простым форматом конфи- рых не укладывается в понятие «прочение которых – быстрая разработка гурационного файла можно считать стого» (строка, число).

72


программирование Для борьбы с первым недостатком ровать с помощью FTP наличие некотороиспользуются различные методы. На- О примере пример, разделение файла на так на- По ходу статьи часто приводится пример го файла на сервере (node_ip), и в случае зываемые «секции», когда секция вво- некоторого конфигурационного файла. неудачи отправлять уведомления на элекдится специальным синтаксисом (ска- Чтобы придать ему немного конкретики, бу- тронную почту и в виде SMS пользоватежем, «[Server]»), и все нижеследующие дем считать, что принадлежит он скрипту, лям согласно заданным спискам. параметры вплоть до маркера дру- задача которого – периодически контролигой секции рассматриваются как относящиеся к ней (вы тоже вспомнили иерархия, а сами параметры задают- заключить текстовый параметр в апострофы) и соответствующим образом про win.ini?). Второй недостаток вы- ся по схеме «П-Р-З»: такие ситуации обрабатывать. нуждает вводить дополнительные со<Node> Теперь настало время перейти глашения, и при разборе конфигураip 10.0.0.51 собственно к теме этой статьи – языку ции учитывать их (в примере выше user arc password xidighei YAML, набирающему всё большую попридётся особо оговорить, что спи</Node> пулярность и стремящемуся оставатьсок параметров, разделённых запя<Lists> email arc,hunter,engineer ся максимально простым как для челотыми, является массивом, а при счиsms hunter12@sms.mob.ru века, так и для программы. тывании конфигурационного файла </Lists> потребуется как минимум ещё один В различных вариантах подобный YAML – «ещё один» вызов split). Другой подход к описанию конфи- подход можно найти и в конфигурации или «совсем не»? гурации – XML-подобный синтаксис, других продуктов. Читать и редактиро- Разработанный Кларком Эвансом, набирающий в последнее время всё вать – удобнее, насчёт удобства про- язык YAML (в версии 1.0 эта аббревибольшую популярность (сам не видел, граммного анализа не вполне уверен. атура «официально» расшифровывано рассказывают, что в MacOS да- Да и в любом случае это уже похоже лась как «Yet Another Markup Language», начиная с 1.1 разработчики решили, же настройки операционной системы на «частное» решение. Поскольку при разработке скрип- что «YAML Ain’t Markup Language») перв этом формате задаются). Вышеприведённая конфигурация на этом языке тов, как правило, хочется чего-то сов- воначально претендовал на роль полсем простого, то не последнее место ноценной замены XML, но затем акцент могла бы выглядеть как-то так: по популярности занимает «програм- сместился в сторону максимально гиб<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> ке Python): граммного анализа. Wikipedia называ<list type='sms'> ет YAML форматом сериализации дан<recipient>hunter12@sms.mob.ru ↵ </recipient> node = {'ip': '10.0.0.51', ных (http://ru.wikipedia.org/wiki/YAML), </list> 'user': 'arc', что очень точно отражает его основную 'password': 'xidighei'} email_list = ['arc', 'hunter', ↵ задачу. И действительно, YAML можно Здесь налицо возможность стро 'engineer'] с успехом использовать для маршаить иерархию любой сложности. Доsms_list = ['hunter12@sms.mob.ru'] линга (т.е. для представления данных полнительные атрибуты также заТипичный пример такого подхо- в памяти в формат, пригодный для храметно расширяют возможности этого формата. Собственно, было бы да – большинство конфигов *BSD или нения и передачи, см. http://ru.wikipedia. странно ожидать меньшего от языка, Linux, представляющих собой скрипты org/wiki/Маршалинг) или постоянного претендующего на роль универсаль- на языке командной оболочки (sh, ре- хранения на диске тех или иных струкного средства обмена информацией. же csh или bash). Очевидно, что здесь тур данных: скажем, в языке Python Только вот анализ такого файла прос- совершенно не стоят проблемы разбо- для сериализации традиционно истым никак не назовёшь (хотя для тех, ра конфигурации, структурных ограни- пользуется модуль pickle, в Ruby часкто «на ты» с XPath, XSLT и прочи- чений или невозможности задать нуж- то используют модуль Marshal, аналоми мудрёными аббревиатурами, мо- ный тип. Но при этом от пользователя гичные решения есть и в других языжет быть, и ничего сложного). Да и ре- уже начинают требоваться хотя бы ба- ках. Но если возникает необходимость дактировать вручную такого монстра зовые познания в используемом языке организовать обмен данными между не слишком удобно – в глазах рябит программирования и немалая аккурат- скриптами, написанными на различность и внимательность. Да и разра- ных языках программирования, то уже от тегов разметки. Нечто среднее между этими двумя ботчик скрипта, если он стремится соз- требуется какой-нибудь универсальподходами мы видим в конфигурации дать достаточно надёжную программу, ный язык сериализации. YAML может Apache, ProFTPD и ряде других при- должен в своём коде учитывать воз- использоваться в этой роли почти без ложений – «тегами» вводится нужная можность опечатки (скажем, забыли ограничений.

№8, август 2008

73


программирование Тем не менее основная цель данной статьи – рассмотреть YAML как язык конфигурации. В этом качестве он успешно используется в таких фреймворках, как Ruby on Rails, Symfony, Spring. Что же он из себя представляет? Наш пример на YAML может выглядеть так: node: ip: 10.0.0.51 user: arc password: xidighei email_list: - arc - hunter - engineer sms_list: - hunter12@sms.mob.ru

Как видите, разработчикам YAML удалось сохранить лёгкость и «читабельность» простейшего формата с разделителями, сделав его иерархическим за счёт использования вложенных параметров. Да и возможности работы с типами данных здесь заметно расширены. Например, то, что вы видите выше, это самый настоящий хэш («словарь» в терминологии Python), один элемент которого представляет собой вложенный хэш, а ещё два – массивы («списки» в Python). Вот, например, как это «развернётся» в Ruby (вывод слегка отформатирован, для удобства восприятия): $ irb irb(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"=>["hunter12@sms.mob.ru"], "email_list"=>["arc", "hunter", "engineer"]} irb(main):003:0> puts config['node']['ip'] 10.0.0.51

Как видите, хэш на YAML задаётся парами «ключ: значение», причём ни для ключа, ни для значения практически никаких ограничений не существует – они могут содержать пробелы, быть многострочными, представлять собой вложенные элементы... Да-да, ключ хэша может быть сложной структурой данных! В этом случае он начинается с символа «?». Правда, далеко не все языки программирования допускают подобные вольности. В частности, пример, показанный ниже, нормально отрабатывается в Ruby, а, например, в Python уже вызывает ошибку. $ cat hash.yml ? - 1 - 2 - 3: three : some digits $ irb irb(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"

Ещё одна возможность – использовать в качестве ключа хэша различные символы (если ваш язык программирования от этого не впадёт в ступор):

74

+: plus :: colon

После обработки, скажем, в Python получим такой словарь: «{'+': 'plus', ':': 'colon'}». Кроме показанного выше синтаксиса, для массивов и хэшей существует и «линейная» нотация, близкая по виду к языку Python (кстати, отступы в YAML тоже играют не последнюю роль, так что любителям Python он явно придётся по вкусу): # Массив (как элемент хэша) Moderators: [Site Admin, Dr.Moder, Polizei] # Хэш (как элемент хэша) Location: {host: localhost, port: 5432}

Само собой, что с обычными строками и числами проблем тоже не возникает. Параметры, заданные «в виде числа», включая восьмеричное и шестнадцатеричное представление, а также научную нотацию, автоматически преобразуются в числовой формат. Аналогично, автоматическое преобразование предусмотрено для дат. Скажем, строку '2008-01-05' модуль PyYAML языка Python преобразует в выражение «datetime.date(2008, 1, 5)». В качестве примера рассмотрим обработку такого файла: Date1: 2008-01-01 Date2: 01.02.2008 Time: 12:45 StringDate: "2008-01-01"

Если этот файл называть «config.yml», то работать с ним можно следующим образом: $ python >>> import yaml, datetime >>> config = yaml.load(open('config.yml')) >>> config

{'Date1': datetime.date(2008, 1, 1), 'Date2': '01.02.2008', 'Time': 765, 'StringDate': '2008-01-01'}

>>> config['Date1'].year

2008

Заметили, что как дата представляется только строка в формате ISO (YYYY-MM-DD)? Если говорить точнее, то спецификация поддерживает два формата даты и времени: n Date1: 2008-08-03t11:00:00 n 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 по явному и неявному преобразованию типов данных: если вам нужно передать значение параметра именно как строку, просто за-


программирование ключите его в апострофы или кавычки (в кавычках будет выполняться замена escape-последовательностей, строка в апострофах используется без каких-либо преобразований). Есть и более строгий способ указать тип данных: 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'] другого параметра (скажем, задав значение в виде one «*h@sms.mob.ru») не получится. two Наконец, строки. Как вы уже поняли, строкой будет всё, three что заключено в кавычки или апострофы, а также любые значения параметров, не опознанные как относящиеся Вариант «simple» отличается от «continued» тем, к другому типу данных. Но YAML предоставляет и ряд до- что в последнем случае сохраняется завершающий переполнительных возможностей, например, поддержку «мно- нос строки. Кроме того, промежуточные переводы строгострочных» строк (обращайте внимание на символ пос- ки после символа «>» будут заменяться на пробелы только для групп строк, имеющих одинаковый отступ. Если же ле двоеточия):

№8, август 2008

75


программирование перед строкой стоит символ «|», то все переводы строки сохраняются в неприкосновенности. Также существует возможность хранить двоичные строки в формате Base64: 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'])

$ cat many.yml --- # Server host: localhost port: 80 --- # Client user: root homedir: /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.pl Connect to localhost:80 as root from /var/client/home

Здесь many.yml – файл с двумя документами. Символом «#» начинаются комментарии.

Трудности перевода

Есть у YAML и недостатки. Один из самых существенных – Кроме рассмотренных выше, язык YAML умеет работать проблемы с кодировками, отличными от Unicode. Специфии с логическими типами данных («true» и «yes» распознают- кация предусматривает поддержку лишь UTF-8, UTF‑16 LE ся как «истина», «false» и «no» – как «ложь»), поддержива- и UTF-16 BE. Как результат – работа с другими кодировками ются специальные значения: «null» и «~» как «None», «.NaN» полностью зависит от используемого модуля. Так, модуль в значении «nan» (не число); «.inf» и «-.inf» – соответственно PyYAML и во FreeBSD, где используется KOI8‑R, и в Windows «плюс бесконечность» и «минус бесконечность». XP (CP1251) упорно не желал обрабатывать файлы, содерЕщё следует знать о последовательности «---» – она яв- жащие хотя бы один кириллический символ независимо ляется разделителем документов в потоке. Не все модули, от его месторасположения. С модулем 'yaml' в Ruby нигде работающие с YAML, способны считывать несколько до- проблем не возникло. В Ubuntu, где по умолчанию исполькументов из одного файла. Скажем, в Python метод load() зуется UTF8, все протестированные модули показали безмодуля PyYAML считывает только первый (для работы со упречную работу с кириллицей. всеми документами следует использовать метод load_all(), Таким образом, появился ещё один повод всюду, возвращающий генератор, из которого можно последова- где только можно, переходить на Unicode. тельно, методом next(), выбрать все документы потока). Модуль 'yaml' в Ruby действует аналогично, за тем исключе- Заключение нием, что если символами «---» разделять простые строки, Как видите, YAML – довольно простой в освоении язык сето модуль включает их в состав строки, считая всё одним риализации. Наличие готовых модулей для многих языков документом. Модуль Perl – YAML::Tiny – успешно работает программирования позволяет использовать его «прямо сейс несколькими документами: час», да и разработка собственного парсера вряд ли будет слишком сложной задачей. Читается YAML и языки программирования Python: конфигурация на YAML очень легко, Для работы с YAML практически каждый и в то же время вы можете не ограниimport yaml config = yaml.load(open('config.yml')) язык программирования имеет готовый мочивать себя только строковыми значеhost = config['host'] дуль. Возможности YAML как языка серианиями параметров, используя и массилизации достаточно обширны, но если гоRuby: вы, и хэши, и логические значения... ворить о таком узком применении, как конЕсли вы заинтересовались данным require 'yaml' config = YAML::load(open('config.yml')) фигурационные файлы, то в большинстязыком – обязательно просмотрите host = config['host'] ве случаев использование YAML сводитего полную спецификацию. НаверняВ последних строках показаны примеся к вызову одного метода (обычно load()). ка вы найдёте ещё много интересного, Ниже рассмотрены типовые примеры ис- ры использования одного из параметров, что осталось за рамками статьи. пользования для различных языков программирования (предполагается, что поток содержит один документ). Perl: use YAML::Tiny; $config = YAML::Tiny-> ↵ read('config.yml')->[0]; $host = $config->{'host'};

76

в предположении, что он задан как элемент хэша (словаря). Разрабатываются также модули/библиотеки для других языков программирования: C, PHP, Java, JavaScript, Haskell. Ссылки можно найти на главной странице сайта проекта: http://yaml.org.

1. Официальный сайт языка – http:// yaml.org. 2. Спецификация YAML 1.2 – http://yaml.org/ spec/1.2. 3. YAML Cookbook – http://yaml4r.sourceforge. net/cookbook.


bugtraq Раскрытие данных в ядре Linux

Межсайтовый скриптинг в Apache

Программа: Linux kernel версии до 2.6.27-rc2. mod_proxy_ftp Опасность: Низкая. Программа: Apache 2.0.63 и 2.2.9, возможно более ранОписание: Уязвимость существует из-за ошибки в функции ние версии. snd_seq_oss_synth_make_info() в файле sound/core/seq/oss/ Опасность: Низкая. seq_oss_synth.c. Локальный пользователь может передать Описание: Уязвимость существует из-за недостаточной некорректный номер устройства уязвимой функции и полу- обработки входных данных в URL, содержащих символ «*» чить доступ к потенциально важным данным. в модуле mod_proxy_ftp. Удаленный пользователь может с помощью специально сформированного запроса выполURL производителя: www.kernel.org. Решение: Установите последнюю версию 2.6.27-rc2 с сай- нить произвольный код сценария в браузере жертвы в конта производителя. тексте безопасности уязвимого сайта. URL производителя: www.apache.org. Решение: Установите исправление из SVN-репозитория Повышение привилегий в Sun Solaris производителя. Программа: Sun Solaris 8, 9, 10. Опасность: Низкая. Описание: Уязвимость существует из-за неизвестной Раскрытие данных в OpenSSH ошибки в модуле ядра namefs. Локальный пользователь Программа: OpenSSH версии до 5.1. может вызвать панику ядра системы или выполнить про- Опасность: Низкая. извольный код в контексте ядра. Описание: Уязвимость существует из-за того, что sshdURL производителя: www.sun.com. сервер устанавливает опцию SO_REUSEADDR для проРешение: Установите исправление с сайта производителя. слушивания сокета, используемого перенаправляющим X11-сервером. Локальный пользователь может подключиться к X11 перенаправляющему порту и перехватить X11сессию. Для успешной эксплуатации уязвимости опция Переполнение буфера в ядре Linux Программа: Linux kernel версии до 2.6.25.11. X11UseLocalhost должна быть отключена (по умолчанию Опасность: Низкая. включена) и операционная система должна позволять повОписание: Уязвимость существует из-за ошибки при об- торное подключение к порту без проверки идентификатора работке размера LDT-буфера на x86_64-системах. Локаль- пользователя или IP-адреса (например, HP/UX). ный пользователь может вызвать отказ в обслуживании или URL производителя: openssh.com. выполнить произвольный код на целевой системе с приви- Решение: Установите последнюю версию 5.1 или 5.1p1 с сайта производителя. легиями учетной записи root. URL производителя: www.kernel.org. Решение: Установите последнюю версию 2.6.25.11 с сайта производителя. Отказ в обслуживании в 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 в CA ARCserve Backup for Laptops A.x.x (все версии); Asterisk Business Edition B.x.x.x (все верand Desktops сии до B.2.5.4); Asterisk Business Edition C.x.x.x (все версии Программа: CA ARCserve Backup for Laptops and Desktops до C.1.10.3); AsteriskNOW pre-release (все версии); Asterisk r11.5; CA ARCserve Backup for Laptops and Desktops r11.1 Appliance Developer Kit 0.x.x (все версии); s800i (Asterisk SP2; CA ARCserve Backup for Laptops and Desktops r11.1 Appliance) 1.0.x (все версии до 1.2.0.1). SP1; CA ARCserve Backup for Laptops and Desktops r11.1; CA Опасность: Низкая. ARCserve Backup for Laptops and Desktops r11.0; CA Desktop Описание: 1. Уязвимость существует из-за ошибки при обManagement Suite 11.2; CA Desktop Management Suite 11.1; работке IAX2 POKE-запросов. Удаленный пользователь моCA Protection Suites r2; CA Protection Suites 3.0; CA Protection жет отправить большое количество POKE-запросов, не отSuites 3.1. правляя ACK-пакет в ответ на пакет PONG, и потребить все Опасность: Средняя. IAX2-номера. Описание: Уязвимость существует из-за ошибки потери 2. Уязвимость существует из-за того, что протокол зазначимости целочисленных в службе LGServer при обработ- грузки прошивки не требует рукопожатие. Удаленный польке входящих сообщений. Удаленный пользователь может зователь может отправит произвольном серверу пакеты отправить специально сформированное сообщение службе размером 1040 байта с помощью 40-байтного пакета с подLGServer на порт 1900/TCP, вызвать переполнение буфера мененным адресом источника. и выполнить произвольный код на целевой системе. URL производителя: www.asterisk.org. URL производителя: www.ca.com/us/products/product. Решение: Установите последнюю версию с сайта произaspx?id=263. водителя. Составил Александр Антипов Решение: Установите исправление с сайта производителя.

№8, август 2008

77


программирование

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

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

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

78

ми, в которых может и не быть посто- чае Screen может быть установлен янной необходимости, но которые мо- стандартными средствами поддержки гут помочь в выполнении админист- пакетов вашей операционной систеративной работы в отдельные момен- мы или скачан с официального сайта ты времени. http://www.gnu.org/software/screen. На рис. 1 изображен Screen с треТеперь мы можем запускать Screen, мя именованными окнами (Work, для чего просто набираем: Configuration, Logs) и открытым в нем $ screen текстовым редактором Vim с примером файла конфигурации Screen. После запуска на экран может пояПервый запуск виться информация о версии и лиценScreen может быть запущен с помощью зии (при рассмотрении конфигурации консольной команды screen, но прежде мы рассмотрим, как можно отменить всего проверим, установлен ли Screen вывод данного сообщения), и в этом в вашей системе, с помощью следую- случае необходимо нажать клавишу щей команды: «Пробел» или «Ввод», после чего мы попадаем на первый взгляд в обыч$ which screen ную текстовую оболочку. Надо заметить, что в командной /usr/bin/screen строке сразу можно указать команЕсли команда вернула путь, как ду для запуска определенного прилов примере выше, можно сразу начи- жения, например, для запуска top нанать пользоваться, в противном слу- до набрать:


программирование $ screen top

Хорошо, теперь Screen запущен, но, на первый взгляд, нет никаких внешних изменений – мы можем работать в запущенной оболочке или использовать top. Хитрость в том, что во время работы Screen передает все нажатия клавиш непосредственно приложению, но (по умолчанию) оставляет для себя управляющие команды, начинающиеся с комбинации клавиш <Ctrl> + <a>. Эту управляющую комбинацию клавиш можно поменять через файлы конфигурации (которые мы рассмотрим позже), но во всех примерах будет рассматриваться только конфигурация по умолчанию. Таким образом, все клавиатурные команды Screen состоят из двух клавишных комбинаций – управляющей <Ctrl> + <a> и непосредственно клавиши или клавишной комбинации, представляющей команду. Практически каждая команда также имеет свой текстовый аналог, который можно выполнить либо через файл конфигурации, либо выполнив следующую команду: n Клавишная комбинация: <Ctrl> + <a> + <:>. n Текстовая команда: colon. n Описание: вывести приглашение для ввода текстовых команд в интерактивном режиме.

Рисунок 1. Screen с тремя именованными окнами (Work, Configuration, Logs) и открытым в нем текстовым редактором Vim

только в конфигурации не указано создание сразу нескольких окон) и присваивает ему номер 0. Новое окно с командной оболочкой можно создать с помощью команды ниже: n Клавишная комбинация: <Ctrl> + <a> + <c>. n Текстовая команда: screen. n Описание: создать новое окно.

При этом Screen создаст новое окно и присвоит ему слеВ данном случае мы должны выполнить две клавиатурные комбинации, сначала нажав <Ctrl> + <a>, а затем кла- дующий по порядку номер. В нашем случае новым окном вишу двоеточия. При этом Screen выведет в нижней час- будет окно с номером 1. Теперь у нас есть уже два текстовых окна, из которых ти экрана приглашение для ввода команды в виде двоеточия. Ту же самую команду, которую мы только что выполни- текущим является только что созданное окно с номером 1, ли с помощью клавишной комбинации, можно выполнить а окно с номером 0 находится в фоновом режиме. Но начерез конфигурационный файл с помощью текстовой ко- до заметить, что даже если окно находится в фоновом реманды colon, что может, например, понадобиться для вы- жиме, оно может воспринимать вывод запущенного в нем вода приглашения о вводе команд при старте или перена- приложения, как если бы оно было текущим. Например, значении комбинации клавиш, вызывающих это приглаше- мы могли бы запустить в окне 0 процесс, который выводит ние. Далее, как и в примере выше, для каждой клавишной дополнительную информацию через определенные прокомбинации я буду писать соответствующие ей ключевые межутки времени (для примера, это может быть команда слова, которые можно использовать в файлах конфигура- «tail -f»), и затем переключиться в окно 1 для работы в текстовом редакторе. ции или вводить с помощью <Ctrl> + <a> и <:>. Через какое-то время, если мы захотим посмотреть, Здесь может возникнуть закономерный вопрос – а что если приложению нужно непосредственно передать ком- что происходит в окне 0, мы можем переключиться в это бинацию клавиш <Ctrl> + <a>, которая уже используется окно и увидеть весь вывод работающего там процесса. в Screen как служебная? Например, таТаблица 1. Наиболее часто используемые команды для управления окнами кая же комбинация используется бибКлавишная комбинация Текстовая команда Описание лиотекой редактирования командной Ctrl + a w windows Выводит список номеров и заголовков всех окон в нижней строки readline для выполнения перестрочке экрана хода в начало строки. Для этого слуCtrl + a " windowlist Выводит интерактивный список номеров и заголовков всех чая в Screen предусмотрена следуюокон, из которого можно выбрать окошко для переключения щая команда: Ctrl + a Номер select Выбор окна по номеру. Например, команда <Ctrl> + <a> и 0 n Клавишная комбинация: <Ctrl> + окна делает текущим окно с номером 0 <a> + <a>. Ctlr + a n next Переключиться на следующее по порядку окно или на первое окно, если мы находились в последнем окне n Текстовая команда: meta. n Описание: передать текущему Ctrl + a p prev Переключиться на предыдущее по порядку окно или на последнее окно, если мы находились в первом окне предложению клавишную комбиCtrl + a ' select Вывести приглашение ввода номера окна для переключения нацию <Ctrl> + <a>.

Управление окнами Пришло время разобраться с командами для управления окнами. При запуске Screen создает одно окно (если

№8, август 2008

Ctrl + a

Ctrl + a

other

Переключиться на последнее используемое окно

Ctrl + a

N

number

Показать номер и заголовок текущего окна

Ctrl + a

A

title

Установить заголовок текущего окна

Ctrl + a

k

kill

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

79


программирование Затем можно переключиться обратно в окно редактирования. В предыдущем параграфе я описал пример с переключением между окнами, но пока не сказал, какие команды для этого используются. Рассмотрим подробнее наиболее часто используемые команды для управления окнами (см. таблицу 1). При закрытии какого-либо из окон номера других окон не меняются и в нумерации появляются «дырки», которые позднее могут быть заполнены новыми окнами. Хотя в Screen имеется команда для изменения номера окна, она здесь не рассматривается и остается для самостоятельного изучения. В случае если закрыты все окна, Screen завершает свою работу и выводит сообщение: [screen is terminating]

Несколько окон на экране По умолчанию Screen оставляет видимым на экране только одно логическое окно, но при желании есть дополнительная возможность разделить экран терминала на горизонтальные регионы. Таким образом можно отображать сразу несколько окон на одном экране терминала. Рассмотрим подробнее команды для работы с регионами экрана (см. таблицу 3). На рис. 2 изображен Screen с тремя именованными окнами (Work, Configuration, Logs) и разделенным на два региона экраном. В верхнем регионе открыто окно Work с текстовым редактором Vim и примером файла конфигурации Screen. В нижнем регионе – окно Configuration с частью общего файла конфигурации /etc/screenrc.

Консольные сессии

И в завершение мы рассмотрим одну из самых популярных Работа с текстом возможностей Screen. Представим следующую ситуацию: Теперь рассмотрим работу с содержимым окон – копирова- системный администратор, находясь дома, заходит на удание и вставку текстового содержимого одного окна в дру- ленный сервер, открывает несколько окон, запускает необгое, мониторинг окон, сохранение текстовой копии экрана ходимые задачи, затем закрывает соединение и едет на работу. На работе он опять заходит на тот же сервер и восстаи другие похожие задачи (см. таблицу 2). В режиме копирования Screen запускает текстовый ре- навливает открытые дома окна с результатами выполнендактор, похожий на редактор Vi. Наиболее часто использу- ных задач. Звучит немного фантастично? Ни в коем случае! Консольные сессии Screen как раз и предназначены емые команды редактора: n клавиши управления курсором перемещают курсор для осуществления этой задачи. Они позволяют отсоедипо экранному буферу; нить от терминала текущую сессию Screen со всеми окнаn клавиша «Пробел» отмечает начало и конец региона ми и выполняемыми приложениями и затем в любой модля копирования. При втором нажатии «Пробел» от- мент времени присоединиться к ней опять. При этом все меченный текст копируется в регистр по умолчанию выполняемые под Screen приложения будут продолжать и Screen выходит из режима копирования. работать и использовать свои окна для вывода информации. Плюс ко всему консольных сессий Таблица 2. Команды для работы с содержимым окон может быть несколько, но в этой стаКлавишная комбинация Текстовая команда Описание тье мы не будем на этом подробно останавливаться. Ctrl + a M monitor Включить/выключить мониторинг активности для текущего окна. Когда мониторинг включен и в окне, находящемся Рассмотрим команды отсоединев фоновом режиме, производится вывод текста, в служебной ния консольной сессии от терминала строке выводится информация об активности (см. таблицу 4). silence Включить/выключить мониторинг отсутствия активности для текущего окна. Когда мониторинг включен и в окне, Чтобы присоединиться обратно находящемся в фоновом режиме, некоторый период времени к отсоединенной сессии или посмотне производится вывод текста, в служебной строке выводится информация об отсутствии активности реть список доступных сессий, необхоCtrl + a h hardcopy Записать текстовое изображение текущего окна в файл димо запустить Screen с одним из слеhardcopy.номер_окна в каталоге Screen по умолчанию дующих ключей: Ctrl + a H log Включить/выключить трассировку текста текущего окна в файл n screen -r – присоединиться к отсоscreenlog.номер_окна в каталоге Screen по умолчанию единенной сессии. Ctrl + a [ copy Войти в режим копирования. Дополнительные команды этого n screen -R – присоединиться к перрежима описаны ниже вой подходящей отсоединенной Ctrl + a ] paste Вставить в окно текст из регистра по умолчанию (куда он предварительно был скопирован с помощью команды выше) сессии. Это может быть полезно в случае, если используется несколько сессий. Таблица 3. Команды для работы с регионами экрана n screen -x – присоединиться к уже Клавишная комбинация Текстовая команда Описание работающей сессии. Ctrl + a S split Разделить текущее окно или регион на два новых региона. При этом размеры всех регионов меняются для получения n screen -ls – вывести список доступдополнительного пространства на экране, и в новом регионе ных сессий. отображается пустое окно Ctrl + a

Tab

focus

Переместить текущий фокус отображения на регион ниже или на верхний регион, если текущим является самый нижний регион

Ctrl + a

Q

only

Закрыть все регионы, кроме текущего

Ctrl + a

X

remove

Закрыть текущий регион

80

Конфигурация При запуске Screen по умолчанию выполняются команды из файла /etc/ screenrc и файла .screenrc из домаш-


программирование него каталога пользователя. Многие команды, которые можно использовать в файлах конфигурации, были рассмотрены в таблицах выше в поле «Текстовая команда». Ниже представлен пример конфигурации Screen из файла .screenrc: # Отключить вывод лицензионной информации при старте Screen startup_message off # Открыть оболочку для работы chdir screen -t Work # Открыть оболочку для управления конфигурацией chdir /etc screen -t Configuration

Рисунок 2. Screen с тремя именованными окнами (Work, Configuration, Logs) и разделенным на два региона экраном

# Открыть оболочку для просмотра логов chdir /var/log screen -t Logs # Выбрать первое окошко после старта select 0

Этот достаточно простой файл конфигурации открывает три окна с именами Work, Configuration, Logs соответственно в личном каталоге пользователя, в каталоге /etc и каталоге /var/log. После запуска на экране будет находиться первое окно с именем Work. На рис. 1 представлен пример работы 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, которые не были рассмотрены выше и остаются для самостоятельного изучения: n Команды настройки эмуляции терминала. n Многопользовательские консольные сессии. Итак, в этой статье мы рассмотрели возможности и больn Назначение или переназначение командам клавишных шинство команд менеджера текстовых окон Screen. Я счикомбинаций. n Вспомогательные опции текстовых команд. Например, таю, что изучение Screen или одной из похожих программ опция -t команды screen, которая используется в приме- может вывести производительность и соответственно профессионализм системного администратора или програмре файла конфигурации. n Редко используемые команды, например команды, ко- миста на качественно новый уровень. В любом случае это торые можно использовать при настройке запуска не будет пустой тратой времени. Screen, – echo и sleep. Таблица 4. Команды отсоединения консольной сессии от терминала n Переменные среды, которые моКлавишная комбинация Текстовая команда Описание гут быть полезны при настройке Ctrl + a d detach Отсоединить консольную сессию и оставить ее запущенной Screen. в фоновом режиме. При этом Screen пишет: [detached] n Дополнительные ключи запуска Ctrl + a D D pow_detach Отсоединить консольную сессию, оставить ее запущенной Screen. в фоновом режиме и послать родительскому процессу Screen Screen – это программа с большой историей, надо заметить, что первая версия появилась в 1987 году. На данный момент к Screen практически не добавляется новых возможностей (одной из причин может быть наличие уже большого их количества на данный момент) и производится в основном только исправление ошибок.

№8, август 2008

сигнал HANGUP. При запуске Screen из удаленного терминала это означает отсоединение Screen и затем закрытие соединения. При этом Screen пишет: [power detached]

Ctrl + a

z

suspend

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

Ctrl + a

Ctrl + \

quit

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

81


ретроспектива

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

Дмитрий Мороз Рубеж последнего десятилетия ушедшего века стал переломным моментом в становлении графического интерфейса в качестве неотъемлемой части операционной системы. Практически все популярные ОС обзавелись собственным GUI, а командная строка окончательно перешла в разряд «для фанатов» и пользователей UNIX.

С

момента подписания между корпорациями IBM и Microsoft договора о сотрудничестве в области разработки операционных систем в августе 1985 года и до появления в продаже первого продукта прошло почти два года. Лишь в апреле 1987 года миру была представлена новая ОС под названием OS/2 (Operating System/2), продажи которой стартовали спустя ещё восемь месяцев.

82

Первая версия операционной сис- из Windows 3.0 с той лишь разницей, темы не имела графического интер- что группы программ открывались фейса и, как и DOS, управлялась из ко- в новом окне, а не внутри предыдумандной строки. Примитивная фор- щего. На экране Presentation Manager ма GUI под названием Presentation постоянно присутствовали две иконManager (Менеджер презентаций) по- ки – DOS и Print Manager. При нажаявилась лишь с выходом версии 1.1 тии на первую ОС активировала сесв ноябре 1988 года и была усовер- сию DOS, в которой запускались прошенствована в OS/2 1.2 и 1.3. Данный граммы MS-DOS. Вторая же, как слеграфический интерфейс практически дует из названия, запускала менедполностью повторял Program Manager жер печати.


ретроспектива Сотрудничество двух корпораций просуществовало недолго. Microsoft Экспериментальный пёс понимала, что совершенствование Microsoft и продажа своей операционной сис- В начале 1995 года Microsoft выпустила темы в лице Windows принесёт ей го- программу Bob, разработанную в качестраздо больше прибыли. В то же время, ве замены для интерфейсов Windows 3.x принимая участие в разработке OS/2, и 95 и ориентированную на новичков, толькорпорация собственноручно ставила ко приступающих к своему знакомству палки себе же в колёса. В результате с компьютером. Срезу после запуска Bob пользователь в 1991 году партнёрское соглашение между IBM и Microsoft было расторг- попадал в так называемую «Общую комнуто, и отныне компании шли каждая нату», в углу которой его ждал «гид» – пёс по кличке Ровер (Rover). При желании можсвоим путём. В марте 1992 года появилась сле- но было выбрать себе другого гида, каждующая версия операционной систе- дый из которых обладал своим собственмы IBM – OS/2 2.0. Данная операци- ным поведением, словарём из подсказок онная система стала первой 32-раз- и случайных фраз, анимацией и звуковырядной ОС для IBM PC-совместимых ми эффектами (позже часть этих гидов стала «помощниками» справочного разкомпьютеров. Главным новшеством в OS/2 2.0 дела офисного пакета Microsoft Office 97). стал графический интерфейс Workplace Однако даже в этом случае Ровер периоShell. Он был создан на основе стан- дически заглядывал «в гости» с каким-нидарта CUA’91 (Common User Access – будь полезным советом. Интерфейс операционной системы Общий пользовательский доступ), являвшегося частью семейства стандар- представлял собой комнату жилого дома, тов, разработанных IBM для облегче- с расположенными на столиках адресной ния разработки унифицированных гра- книгой, блокнотом, корзинами для входяфических интерфейсов приложений щих и исходящих сообщений, календарём для различных платформ и операци- на стене и т. д. Каждый элемент на экране активен, то есть, например, чтобы провеонных систем. Workplace Shell был полностью объ- рить почту, пользователю было достаточектно-ориентированным GUI, благода- но кликнуть по корзине со входящими соря чему пользователь мог управлять общениями. Комната, являвшаяся основой GUI, сопрограммами, файлами, устройствами и папками, манипулируя объекта- держала множество активных объектов, ми на экране, в качестве которых вы- которые пользователь был волен изменять ступали иконки. Присутствовал в ОС и специальный редактор, благодаря чение компьютера осуществлялось которому пользователь при желании выбором соответствующего пункта из всплывающего меню. мог изменять вид штатных иконок. Минимизированное окно програмНаиболее интересной особенностью графического интерфейса мы не оставалось на рабочем стоOS/2 2.0 стала возможность измене- ле, а перемещалось в специально отния в любой папке цвета фона. Кро- ведённую для этого папку. Вместо ме того, пользователь мог установить «Корзины» в OS/2 2.0 использовалв качестве него любое графическое ся «Шреддер» (от англ. Shredder – измельчитель). Перемещённый на него изображение. В отличие от «к лассической» файл не сохранялся во временной папMacOS, о которой я рассказывал в про- ке, а сразу же удалялся. В октябре 1994 года IBM предсташлой статье цикла, в OS/2 2.0 для выполнения различных операций исполь- вила общественности новую версию зовались обе кнопки мыши, а также OS/2 Warp 3. Главным нововведениповсеместно применялись всплываю- ем в графическом интерфейсе третьщие меню. Стоит отметить появление ей версии ОС стало появление панели в них команды «Создать ещё один» LaunchPad. Она содержала специаль(Create another), дублирующей объект, ные «ящики», в которых хранились раза также «Создать тень» (Create shadow), личные объекты. При нажатии на пикформировавшей ссылку на оригиналь- тограмму секции всплывал список её ный объект («ярлык»). Даже выклю- содержимого. Пользователь мог са-

№8, август 2008

по своему усмотрению. Они представляли собой как ярлыки для запуска программ, так и различные файлы. При помощи гида можно было легко добавить, изменить либо же удалить объект из комнаты. Кроме того, пользователь мог полностью изменить внешний вид GUI, выбрав один из нескольких стилей. В арсенале Bob имелось несколько собственных программ, таких как: текстовый редактор, программа для ведения домашней бухгалтерии, адресная книга, календарь, чековая книжка, а также специальный «менеджер для ухода за домом», содержавший предустановленные категории с различной текстовой информацией и списками дел. Все активные объекты GUI были нарисованы при помощи векторной графики, в результате чего пользователь мог самостоятельно изменять размеры любого из них. Однако это особенность обладала и существенным недостатком: в угоду производительности цветовая палитра в Bob была ограничена 256 цветами. Из-за высокой стоимости и системных требований новый Bob не получил широкого распространения, в результате чего Microsoft прекратила его дальнейшее развитие. Впоследствии пёс Ровер появился в операционной системе Windows XP, однако на этот раз лишь в качестве анимационного персонажа, сопровождающего пользователя во время активации диалога поиска.

мостоятельно добавлять либо удалять ящики, а также содержащиеся в них объекты. Механизм работы Измельчителя не изменился, однако теперь он также находился на LaunchPad. Сама панель могла быть размещена пользователем в любой части экрана.

Империя наносит ответный удар В то время как «Голубой гигант» продолжал совершенствовать свою OS/2, компания Гейтса не собиралась дожидаться своего бывшего партнёра и готовила миру новую операционную систему, выход которой был намечен на 1994 год. Очередная версия Windows, ещё более похожая внешне на MacOS, должна была уравнять пользователей IBM PC-совместимых компьютеров со счастливыми владельцами Macintosh.

83


ретроспектива

OS/2 2.0

Выход Windows 95 состоялся 24 августа 1995 года. Среди множества нововведений по сравнению с предыдущей версией ОС, пожалуй, главным стал переписанный практически «с нуля» графический интерфейс, основная концепция которого используется Microsoft (и другими разработчиками ОС) по сей день. Рабочий стол Windows 95 отныне был полностью подвластен пользователю: он мог создавать новые иконки и удалять старые, а также перемещать их в любую точку экрана. Появилась возможность создания «ярлыков» – файлов в виде иконок, указывавших путь на другой файл в компьютере. Главными нововведениями GUI Windows 95 стал файловый менеджер Windows Explorer (Проводник), пришедший на смену Program Manager из Windows 3.x, и «Панель задач». Рабочий стол Windows представлял собой не просто минимизированные иконки. Теперь на нём могли находиться файлы, папки, а также некоторые системные иконки (Мой

OS/2 Warp 4

84

компьютер, Сетевое окружение, Корзина и др.). При помощи механизма 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 отображаться прямо на рабочем столе. Также отныне он поддерживал установку в качестве фона не только рисунков, но и полно-


ретроспектива функциональных веб-страниц, с анимированной графикой и функционирующими ссылками. Радикальных изменений в графическом интерфейсе 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-подобное.

Microsoft Bob

интерфейс MacOS вплоть до версии 9.х включительно оставался всё тем же классическим GUI, который в 1984 году увидели пользователи компьютеров Macintosh. В компании понимали, что улучшение операционной системы, основа которой была написана ещё в начале 80‑х годов прошлого века, в конце концов заведёт в тупик. В результате в конце 1996 года Apple приобрела компанию NeXT Inc., тем самым прибрав к своим рукам операционную систему NeXTSTEP. Разработка новой ОС для компьютеров Macintosh продолжалась на протяжении пяти лет, и лишь в марте 2001 года появилась десятая версия операционной системы MacOS, получившей приставку «X». Одним из основных нововведений MacOS X стал новый графический интерфейс под кодовым названием Aqua, получивший в своё распоряжение масштабируемые полноцветные иконки, тени, отбрасываемые различными объектами, прозрачные заголовки окон и т. д. Благодаря стараниям инженеров Apple одна из главных особенностей интерфейса NeXTSTEP, панель Dock, «перебралась» и в но-

«Десятка»: перерождение Несмотря на различные нововведения и усовершенствования, графический

№8, август 2008

Windows 95

85


ретроспектива

Windows 98

вый GUI. Кроме ярлыков для запуска программ, Dock содержала и свёрнутые окна. Способность минимизировать окна в MacOS также впервые появилась именно в «десятке». Вместо обычных рисованных пиктограмм свёрнутое окно отображало своё реальное содержимое. Например, видеоплеер, будучи уменьшенным до иконки в Dock, продолжал проигрывать видеоролик. Наконец, пользователь мог выносить на панель избранные папки, навигация по которым осуществлялась при помощи всплывающих меню без необходимости использования файлового менеджера. Файловый менеджер получил способность предоставлять каталоги и папки тремя различными способами. В дополнение к обыденным «иконкам» и «спискам» появилось отображение в виде колонок, перекочевавшее опять-таки из NeXTSTEP. В последнем случае содержимое каждой папки в Finder открывается в новой колонке, которая сдвигает колонку более высокого уровня в противоположную сторону. Также стоит отметить, что в отличие от большинства встроенных файловых менеджеров современных ОС Finder не является веб-браузером.

BeOS 5.0

86

Новый графический интерфейс стал «визитной карточкой» 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, отныне представляющую пользователю своё содержимое в трёхмерной проекции. Кроме того, теперь любая папка, вы-


ретроспектива несенная на Dock, демонстрирует своё содержимое в виде «вылетающего» вверх списка с превью содержащихся в ней файлов. Новое представление данных под названием CoverFlow позволяет Finder отображать большие превью каждого файла, которые «летают» по рабочему столу в трёхмерном пространстве. При этом пользователь может использовать эти превью в качестве обычных иконок, совершая над ними различные манипуляции. Собственная реализация Apple идеи виртуальных рабочих столов в MacOS X представлена технологией Spaces. Она позволяет одновременно просмотреть все активные рабочие столы, переключаться между ними и переносить запущенные программы и открытые окна с одного стола на другой. Ещё одной интересной технологией, о которой стоит упомянуть, является утилита автоматизированного резервирования данных Time Machine, предоставляющая пользователю возможность восстановить файлы, которые были удалены либо же заменены файлами более новой версии. Ну и, конечно же, нельзя не упомянуть о Front Row – специальной оболочке для работы с хранящейся на компьютере и подключённых к нему мультимедийных устройствах информацией. Теперь просмотр фотографий и видеороликов, а также прослушивание музыки осуществляется при помощи небольшого и удобного пульта дистанционного управления, идущего в комплекте с компьютером. На данный момент Apple вовсю работает над следующей версией своей операционной системы, которую она намеревается представить миру уже в следующем году. По словам представителей компании, новая MacOS X практически не будет содержать больших нововведений. Однако уже существующие будут «отточены до совершенства».

Разукрашенные «Окна» В то время как пользователи компьютеров Macintosh не могли нарадоваться красоте и продуманности интерфейса MacOS X, подавляющему большинству пользователей приходилось иметь дело с GUI операционных сис-

№8, август 2008

MacOS X v10.0

MacOS X v10.3

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

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

87


ретроспектива

MacOS X v10.4

MacOS X v10.5

ной программы для более экономного расходования места на панели. Меню кнопки Start теперь разделено на две области. В левой части находятся ссылки на использующиеся «по умолчанию» интернет-браузер и почтовый клиент, а также ярлыки для часто используемых программ. Полный же список установленного ПО можно посмотреть, щёлкнув по соответствующей кнопке. Что же касается системных иконок, ранее находившихся на рабочем столе, теперь они перенесены в правую часть меню кнопки Start.

88

Файловый менед жер 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 для неё было создано множество различных оконных интерфейсов, предназначенных для самых разнообразных целей. Ограниченный объём журнала не позволяет ох-


ретроспектива ватить всё разнообразие графических оконных интерфейсов 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 области, в которой находятся четыре (по умолчанию) виртуальных рабочих стола. Начиная с четвёртой версии окон-

№8, август 2008

Windows XP

Windows Vista

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

следующим образом: в списке открытых окон на панели задач появляется пункт нового ПО, в котором отображается индикатор процесса загрузки программы. Интересной особенностью меню «Start» является группировка программ по задачам (впрочем, данное свойство относится ко всем оконным менеджерам для Linux). Например, всё программное обеспечение для работы с графикой хранится в отдельной категории.

89


ретроспектива трументарии, в GNOME они организованы в виде отдельных модулей, каждый из которых отвечает за свою часть системы. Интересной особенностью скринсейвера GNOME является возможность оставлять другими людьми текстовые напоминания для пользователя при заблокированном экране с помощью кнопки «Оставить сообщение». Владелец компьютера сможет прочесть их как только снимет блокировку. Хочется добавить весьма интересный факт: для активации иконок в KDE необходимо произвести одиночный щелчок мышкой, тогда как в GNOME – двойной. Gnome 2.20

Looking Glass

Помимо стандартных кнопок упПо сравнению со своим конкуренравления окнами, KDE (впрочем, как и том развитие GNOME продвигается другие оконные интерфейсы для Linux) более спокойно и неторопливо. Однапозволяет двойным щелчком по заго- ко и этому GUI есть что предоставить ловку окна «свернуть» его в узкую по- пользователю. лоску, тем самым экономя место на раКомпоненты интерфейса GNOME бочем столе. взаимодействуют друг с другом. В K D E р е а л и з о в а н а н а л о г В большинстве случаев пользователь Dashboard из MacOS X, в 4-й версии может выполнить одно действие неоконного интерфейса именуемый сколькими различными способами. Show Desktop. Из прочих «красивос- Например, можно запускать приложетей» стоит отметить возможность ус- ния из панелей, меню или же с работановки для каждого окна индивиду- чего стола. ального уровня прозрачности, реалиВ отличие от KDE, где панель упзованную в оконном менеджере KDE равления оконным интерфейсом сопод названием KWin. держит все настройки в одном инс-

90

Добавление 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, который написан на язы-


ретроспектива

KDE 4.0

ке Java с использованием API Java 3D ся текст заголовка, облегчающий по- ные графические интерфейсы, следудля достижения платформенной не- иск нужного приложения. ющие принципам, заложенным десятзависимости. Каждое окно имеет возможность ки лет назад. И ведь если немного заВнешне Looking Glass представ- разворота тыльной стороной, на кото- думаться: зачем «ломать» то, что деляет собой трёхмерное рабочее про- рой пользователь может делать текс- сятки лет работает так же исправно, странство с объёмными фоновы- товые заметки. Кроме того, она служит как и швейцарские часы? ми изображениями и трёхмерной па- для вывода дополнительных меню нанелью задач, напоминающей Dock строек, не загромождающих основную 1. http://www.wikipedia.org. из MacOS X v10.5. Трёхмерные иконки рабочую область. Наконец, для каждо- 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. ных особенностей Looking Glass яв- пофантазируем: повсеместное рас- 8. http://www.gnome.org. ляются объёмные окна, которые мож- пространение трёхмерных графичес- 9. Мороз Д. Окно в электронный мир: исно не только перемещать традицион- ких интерфейсов? Управление комтория развития графического польным для «двухмерных» GUI способом, пьютером при помощи голоса, жестизовательского интерфейса. Часть 1. но и вращать относительно вертикаль- куляции или даже глаз? А может, через //Системный администратор, №11, ной оси. В результате не используемое несколько лет нам предложат абсолют2007 г. – C. 86-91. в данный момент окно пользователь но новую концепцию GUI, основанного 10. Мороз Д. Окно в электронный мир: исволен повернуть торцом к плоскости на концепции «виртуальной реальностория развития графического польэкрана, дабы оно не занимало лишнее ти»? Будущее покажет. Ну а пока потзовательского интерфейса. Часть 2. место на рабочем пространстве. В до- ребности большинства пользователей //Системный администратор, №12, полнение к этому на торце размещает- продолжают удовлетворять двухмер2007 г. – C. 82-89.

№8, август 2008

91


книжная полка

Fedora Unleashed 2008 Edition Andrew Hudson, Paul Hudson

С переводом одного из предыдущих изданий этой книги читатели могли ознакомиться несколько лет назад, когда вышла книга «Red Hat Fedora 4. Полное руководство». На данный момент эта книга до сих пор остается, пожалуй, самым подробным руководством по дистрибутиву Red Hat на русском языке. На «книжную полку» в этом ме-

сяце мы поставим обновленное изда- нением основных операций по системние данной книги, которое, хотя и не ному администрированию операционпереведено на русский язык, зато со- ной системы: управление пользоватедержит информацию, актуальную для лями, автоматизация выполнения завосьмой версии Fedora. дач, мониторинг, резервное копироваКнига, написанная бывшим штат- ние и восстановление, сеть, удаленный ным редактором журнала Linux Format доступ, виртуализация на основе гии его коллегой по перу, содержит под- первизора Xen. В четвертой части расробную информацию по инсталляции, сматриваются такие серверные службы использованию и администрированию как веб-сервер Apache, сервер печати, популярного дистрибутива Linux. Тыся- FTP-сервер, сервер электронной поччестраничное издание отличает широ- ты, прокси-сервер, DNS и DHCP, LDAPкий охват тем: от настольных приложе- сервер. Пятая часть представляет соний и игр до настройки серверных ком- бой краткое введение в языки Perl, PHP, понентов, виртуализации и програм- Python и утилиты разработки. шестую мирования. часть собраны такие темы, как настройКнига разбита на шесть основных ка производительности, безопасность частей. В первой рассматривается ус- написание Shell-скриптов, управление тановка дистрибутива и первоначаль- модулями ядра. ная настройка. Во второй части идет речь об использовании Fedora в качест- n Издательство: Sams Publishing ве клиентской операционной системы. n Год издания: 2008 Здесь рассматриваются такие темы, n Количество страниц: 926 как офисные приложения, мультимедиа n ISBN: 978-0-672-32977-7 и игры. Третья часть знакомит с выпол- n Цена: ≈ $31,49

Поддержка корпоративных пользователей Windows Vista Тони Нортроп, Дж. К. Макин

Еще один учебный курс по Windows Vista позволит подготовиться к сертификационному тесту на получение звания Microsoft Certified IT Professional (MCITP): Enterprise Support Technician. Кстати, как и сама книга, данный экзамен доступен на русском языке, что упрощает «вход» в армию сертифицированных специалистов Microsoft.

92

Но даже если вы и не планируете вой политики; решение проблем, свясдавать данный тест, а являетесь сис- занных с настройками системы безотемным администратором или специ- пасности и установка обновлений; насалистом по поддержке пользователей тройка аутентификации, авторизации на предприятии, где по тем или иным и шифрования; работа с событиями причинам используется Windows Vista, и решение проблем настройки произданная книга будет весьма полезна. водительности; настройка сети и реБольшинство вышедших изданий, пос- шение возникающих проблем, подклювященных Windows Vista, рассматри- чение клиентских компьютеров и удавают данную операционную систему ленный доступ к операционной систекак работающую на отдельно стоящем ме. К учебнику прилагается CD-диск компьютере, подключенному к Интер- с демонстрационной версией экзаменету, или максимум взаимодействую- национного теста, дополнительными щую с другими хостами домашней се- упражнениями и PDF-версией данной ти. В данном же учебнике рассматри- книги на английском языке. ваются темы, без знания которых вам Издательство: «Русская Редакция» не обойтись, если вы вынуждены об- n Год издания: 2008 служивать десятки или сотни инстал- n Количество страниц: 560 ляций данной операционной системы. n ISBN: 978-5-7502-0363-5 Изучив это пособие для самоподго- n Цена: ≈ 577 руб. товки, вы познакомитесь с такими те- n мами, как установка и развертывание Книга предоставлена интернет-магазином ОС на предприятии; настройка группо- Books.Ru.


книжная полка

Joomla! Практическое руководство Бэрри Норт перевод выполнен весьма оператив- создание блога на движке Joomla, прино, по англоязычному изданию этого влечение посетителей. Приведен пригода, и в книге обсуждается актуаль- мер создания сайта для малого бизнеса и школьного портала. Для руссная версия Joomla! 1.5. В отличие от ранее рассмотренной коязычного читателя немаловажным книги по CMS Drupal, для начала ра- обстоятельством является то, что отботы с этой книгой не требуется пред- дельную главу автор посвятил рабоварительной подготовки. Она написа- те с шаблонами и языками, отличнына простым языком, и автор старает- ми от английского. Помимо шестнадся по минимуму использовать техни- цати глав книга содержит ряд прилоческие термины. Книга проведет чита- жений, освещающих частные вопросы. теля через все этапы разработки веб- Для уже существующих пользоватесайта на основе системы управления лей Joomla предыдущих версий будет содержимым Joomla. В ней содержит- небезынтересна информация по мигся краткий обзор приемов управления рации на актуальную версию с версии системой и рассказывается о ключе- 1.0.x. Для разработчиков будет интеЭтим летом отечественные издатели вых концепциях организации инфор- ресна информация по Joomla API. радуют нас уже второй переводной мации, редактировании наполнения книгой, посвященной открытой CMS. сайта и шаблонах. Также в книге рас- n Издательство: «Символ-Плюс» В прошлом номере журнала мы пи- сматриваются темы более общего ха- n Год издания: 2008 сали об издании, посвященном CMS рактера, например, как при использо- n Количество страниц: 448 Drupal. В этом номере в наших об- вании Joomla провести оптимизацию n ISBN: 978-5-93286-117-2 зорах книга об не менее популярной веб-сайта для поисковых систем и ре- n Цена: ≈ 449 руб. системе управления содержимым – сурсы сообщества Joomla. В отдель- Книга предоставлена интернет-магазином «Joomla!». Причем нужно отметить, что ные главы вынесены такие темы, как Books.Ru.

Изучаем PHP и MySQL, 2-е издание Мишель Дэвис, Джон А. Филлипс

Издательство O'Reilly всегда славилось отличными книгами по Open Source-технологиям (и не только). И фирменный дизайн обложки с черно-белым рисунком «под гравюру» уже давно рассматривается как своеобразный «знак качества». Из этого правила не станет исключением и данная книга, посвященная созданию динами-

№8, август 2008

ческих веб-сайтов с использованием баз данных, в данном случае MySQL, и популярного языка программирования PHP. В книге рассмотрены следующие основные темы: базовые сведения о PHP (типы данных, логика исполнения программы, переменные, функции, массивы, формы); пошаговые инструкции по установке PHP и MySQL и сопутствующих средств разработки и утилит; основные понятия мира баз данных и MySQL, в частности, например, таблицы и инструкции; основы управления базами данных с помощью языка запросов SQL; информация о совместной работе XHTML и PHP на веб-сайтах; безопасность и управление доступом с учетом типичных «подводных камней»; обработка ошибок, HTTP-аутентификация и многое другое. Авторы стараются все рассматриваемые концепции иллюстрировать

примерами, и в целом книга имеет ярко выраженный практический характер. При всей «практичности», однако, авторы не скатываются к сборнику советов и инструкций. Незнание Linux/UNIX, «естественной среды обитания» – LAMP, для MySQL и PHP не станет помехой при работе с книгой. Авторы уделяют особое внимание установке и работе с компонентами в среде Microsoft Windows. Также не обойдены вниманием и пользователи Mac OS X. Все это делает данную книгу отличным учебником для первого знакомства с обсуждаемой темой.

n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:

«Символ-Плюс» 2008 448 978-5-93286-115-8 ≈ 390 руб. Книга предоставлена интернет-магазином Books.Ru.

Обзор книжных новинок подготовил Андрей Маркелов

93


сисадмин тоже человек Отчего ломается Интернет Работаю на пивзаводе (мечта любого админа!). У нас 2 офиса: один в Канске, другой в Зеленогорске. Я работаю в Зеленогорске. Чтобы забирать данные с канского сервера, сделан мост. Подключается через Radmin. Тут недавно сервер у меня перестал коннектиться. Приходит бухгалтер и давай толкать свои теории: «Может, у вас система плохо работает», «Может, у вас проводки плохие» и т. д. Я-то понимаю, что дело совсем не у меня, так как у меня все работает: и сеть, и Интернет. Звоню в Канск, общаюсь с тамошним сисадмином. И на узел связи грешили, и так, и этак... Приходит опять тетка с бухгалтерии и давай опять на меня гнать, что у меня все плохо работает. Я встаю и спокойно так говорю: – Вы об удаленном администрировании знаете больше меня? Она рот открыла, а я продолжаю: – Вот и разбирайтесь сами, раз вы считаете себя умнее меня. Встала и пошла курить. Тут тетка поняла, что она не то сказала, летит следом! (Ну, типа, я просто уже от нервов такая). В итоге причина оказалась настолько банальная, просто слов нет. Мы про нее сразу подумали, но бухгалтеры не признавались. Приходит одна из них и выдает: – Ой, вы знаете, а мы там за Интернет не заплатили, это может повлиять на связь? Я выпала в осадок... Такой злой я не была еще ни разу...

gelyagav@mail.ru

Меч Было дело, когда на заводе работал. Через неделю, после тупых косяков девушки из отдела снабжения, притащил на работу меч – над собой повесить. Естественно, был замечен на проходной, но охранник все понял, когда я выхватил меч из ножен и с воплями убежал в КБ. Дальше – круче. В КБ наткнулся на секретаршу. Она с ошарашенным видом (меч уже в ножнах, а на лице – свирепая улыбка) забилась в комнату отдыха (она напротив лестницы была). Прохожу по коридору, и тут меня встречает прежний админ. Улыбается, глядя на меч, и сообщает, что Олечка (снабженка-блондинка) просила зайти к ней. Как я этого ждал! Бросаю в кабинете сумку, наушники, хватаю меч и топаю к Оле, чтобы помочь ей настроить графы в экселевской таблице, которую она уже третий год пользует. Эффект превзошел все ожидания! Оля тихо пискнула и вернулась к работе! Старый дед, работавший с ней и косячивший не меньше, тоже замолк! Вопросы отпали! Все работает! Заблокированные таблички в Ворде не пропадают никуда – руки потому что выпрямились! Тишь и благодать... А меч у меня в кабинете еще долго висел – рядышком сидели дизайнеры, которые работали под виндами, а не как снабженцы под убунтой.

bogdanvlad@mail.ru

Отпраздновали Был такой случай. Звонят мне из бухгалтерии, говорят, что ничего не работает, не могут работать с «1С», в общем, беда. Я беру на всякий случай свитч и бегу туда. Открываю дверь и вхожу. Картина маслом: сонное царство на привале, одна из бухгалтерш вообще спит на стуле и подает мало признаков трудового дня. Медленно ползу к свитчу, смотрю на лампочки и поражаюсь его состоянию (мигает всем, чем можно), думаю: «Сдох, бобик». Запустил пинг и начал дергать порты, подумав, что вчерашняя гроза могла какой-то порт вышибить. На 10-м порту пинги пошли, и все стало хорошо. Начал искать, откуда ноги растут, воткнул и начал дергать шнурки на системниках – ничего. Решил пройтись по проводу и... эти нехорошие женщины закольцевали свитч!!! Я был вне себя! Оказалось, что у какой-то бухгалтерши был день рождения, и все остальные были просто не в состоянии работать. И вот таким нахальным, но глупым образом они решили отлынивать. Все это, естественно, списывали на неработоспособность сети, за что получили по мозгам от высшего начальства. Надеюсь, что такого больше не повторится.

_hunter@mail.ru

Излучал Ремонт. Сервер стоит в зале с операторами. Смотрю – пропал, нет сервера. Прихожу проверить – его нет на месте вообще (!?), пропал, одни провода остались. Немая сцена – ГДЕ??? Смотрю – в углу стоит мой сервак... Спрашиваю тетку: «ЗАЧЕМ ВЫ ЭТО СДЕЛАЛИ!?» Она на меня смотрит чистыми глазами и говорит: «Он на меня излучал...».

Vera Novikova

94

Знакомство с мышью Работаю сисадмином в учреждении здравоохранения. Всяких навидался юзверей, но недавно встретил просто уникума, короче говоря, у тетки реальный трабл по жизни. Мышь она почувствовала в руках впервые, как я поставил им всем новое специализированное ПО. До этого момента все они кувыркались в синеющем DOSе и FOX Pro 4.0, короче, зрелище удручающее!!! Пытаюсь объяснить человеку, как пользоваться мышью. Это вы все думаете, что фигня полная – две клавиши, скролл и тягай куда попало. СЕЙЧАС! Только не для нее! После объяснения, наглядных инструктажей тетка хватает мышь, поднимает ее над головой и начинает кликать, как автомат Калашникова, без остановки. Любой геймер мог бы позавидовать скорости кликов за минуту, да я и сам малость офигел. Пытаюсь не отвлекать ее особо от процесса, осторожно интересуюсь: «А что Вы сейчас пытаетесь сделать?» – та, не останавливаясь ни на секунду и продолжая молотить по клавише, отвечает: «Да вот, пытаюсь вот на эту кнопку ткнуть!!!» Короче, я полностью ушел в осадок, осознавая тот факт, что 10 минут обучения работы с «наикрутейшим манипулятором, особо офигенной сложности» были для нее, как основы термодинамики и квантовой физики вместе взятые...

slider2000@inbox.ru

По материалам сайта «Сисадмин тоже человек» – http://sysadmin.mail.ru


подписка на 2009 год Российская Федерация

n Подписной индекс: годовой – 20780, полугодовой – 81655

Каталог агентства «Роспечать» n Подписной индекс: годовой – 88099, полугодовой – 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» n Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru n Подписка 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 без диска по каталогу агентства «Пресса России» Годовой Полугодовой *** Диск вкладывается в февральский номер журнала, распространяется только на территории России *

**

№8, август 2008

95


СИСТЕМНЫЙ АДМИНИСТРАТОР №8(69), Август, 2008 год УЧРЕДИТЕЛИ Частные лица РЕДАКЦИЯ Генеральный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Главный редактор электронного приложения «Open Source» Дмитрий Шурупов Внештатные редакторы Алексей Барабанов Валентин Синицын Рашид Ачилов Влад Глагольев Андрей Уваров Олег Щербаков Андрей Бирюков Андрей Шетухин РЕКЛАМНАЯ СЛУЖБА тел./факс: (495) 628-8253 Евгения Тарабрина (доб. 119) reсlama@samag.ru Верстка и оформление maker_up@samag.ru Дизайн обложки Дмитрий Репин По вопросам распространения обращайтесь по телефону: Светлана Зобова (495) 628-8253 (доб. 121) 107045, г. Москва, Ананьевский переулок, дом 4/2, стр. 1 тел./факс: (495) 628-8253 Сайт журнала: www.samag.ru ИЗДАТЕЛЬ ООО «С 13» Отпечатано типографией ГП «Московская Типография №13» Тираж 17000 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.). За содержание статьи ответственность несет автор. Мнение редакции может не совпадать с мнением автора. За содержание рекламных материалов ответственность несет рекламодатель. Все права на опубликованные материалы защищены.

96

Вышел 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 рублей.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.