031 Системный Администратор 06 2005

98
Роспечать – 81655 Пресса России – 87836 Интер-почта – тел. (095) 500-00-60 Так видит журнал человек, который забыл оформить подписку: ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Так видит журнал человек, оформивший подписку: НОВОГОДНИЕ КАНИКУЛЫ ЗАТЯНУЛИСЬ БЫСТРО РАСКУПИЛИ ТИРАЖ НЕОЖИДАННО ЗАКОНЧИЛИСЬ ДЕНЬГИ УЕХАЛ В ОТПУСК ПОСЛЕ ОТПУСКА АВРАЛ НА РАБОТЕ №6(31) июнь 2005 №6(31) ИЮНЬ 2005 подписной индекс 81655 www.samag.ru Postfix: диагностируем и устраняем неисправности Asterisk и Linux: миссия IP-телефония Насколько неуязвима ваша беспроводная сеть? Используем одноразовые пароли для удаленного входа на сервер Как защититься от fingerprinting? Solaris 10 в качестве десктопа? Пробуем! Ускоряем MS SQL Server Модифицируем BIOS Ищем дополнительные источники дохода

description

Модифицируем BIOS Postfix: диагностируем и устраняем неисправности Как защититься от fingerprinting? Насколько неуязвима ваша беспроводная сеть? Используем одноразовые пароли для удаленного входа на сервер Так видит журнал человек, оформивший подписку: Н Е О Ж И Д А Н Н О №6(31) июнь 2005

Transcript of 031 Системный Администратор 06 2005

Page 1: 031 Системный Администратор 06 2005

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

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

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

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

НОВОГОДНИЕ

КАНИКУЛЫ

ЗАТЯ

НУЛИСЬ

БЫСТР

О РАСКУПИЛИ

ТИРА

Ж

НЕОЖ

ИДАННО

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

ЕНЬГИ

УЕХАЛ В

ОТП

УСК

ПОСЛЕ ОТП

УСКА

АВРАЛ Н

А РАБОТЕ

№6(

31)

июнь

200

5

№6(31) ИЮНЬ 2005подписной индекс 81655www.samag.ru

Postfix: диагностируем и устраняем неисправности

Asterisk и Linux:миссия IP-телефония

Насколько неуязвима ваша беспроводная сеть?

Используем одноразовые паролидля удаленного входа на сервер

Как защититься от fingerprinting?

Solaris 10 в качестве десктопа?Пробуем!

Ускоряем MS SQL Server

Модифицируем BIOS

Ищем дополнительныеисточники дохода

Page 2: 031 Системный Администратор 06 2005
Page 3: 031 Системный Администратор 06 2005

1№6, июнь 2005

оглавление

ТЕНДЕНЦИИ2

ИНТЕРВЬЮ

ALT Linux: третье пришествие. Скоро на экранах ваших машин Интервью с Алексеем Смирновым, генеральным ди-ректором компании ALT Linux.

Андрей Бешков [email protected]

4

Postfix: диагностируеми устраняем неисправности

Андрей Бешков [email protected]

8

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

Asterisk и Linux: миссия IP-телефония

Михаил Платов [email protected]

12

Испытываем Antmon – новую систему мониторинга

Сергей Жуматий[email protected]

20

Автоматизация MS Windows, или AutoIt как мечта эникейщика. Часть 3

Алексей Барабанов[email protected]

25

Решаем нестандартные задачи с помощью стандартного Windows Scripting Host

Михаил Кошкин[email protected]

32

Solaris 10 в качестве десктопа? Пробуем!

Андрей Маркелов[email protected]

37

Файловые системы пространства пользователя

Сергей Яремчук[email protected]

40

MySQL 5 – что нового предлагаютнам разработчики?

Кирилл Сухов[email protected]

49

FreeBSD tips: повышаем безопасностьс помощью одноразовых паролей

Сергей Супрунов[email protected]

53

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

Изучаем принципы работыHeimdal Kerberos

Михаил Кондрин[email protected]

56

Защищенная почтовая системас Tiger Envelopes

Сергей Яремчук[email protected]

61

Насколько неуязвима ваша беспроводная сеть?

Крис Касперски[email protected]

64

Как защититься от fingerprinting?

Сергей Борисов [email protected]

70

Используем ImageMagick в веб-разработке

Кирилл Сухов[email protected]

77

WEB

Модифицируем BIOS

Крис Касперски[email protected]

81

HARDWARE

Размышления о UNIX

Сергей Супрунов[email protected]

86

IMHO

ПОЛЕЗНЫЕ СОВЕТЫ

Системный администратор – ищем дополнительные источники дохода

Роман Марков[email protected]

88

Ускоряем MS SQL Server

Юлия Шабунио[email protected]

44 КНИЖНАЯ ПОЛКА93

48, 52, 76, 94 BUGTRAQ

ПО ВАШИМ МНОГОЧИСЛЕННЫМ ПРОСЬБАМ

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

Специально для вас мы открыли редакционную подписку на первые два номера следующегополугодия.

Подробности смотрите на сайте журналаwww.samag.ru в разделе «Подписка».

Page 4: 031 Системный Администратор 06 2005

2

тенденции

Microsoft наращивает возможности своей линейки программдля образованияКомпания Microsoft провела в июне для партнеров се-

минар «Решения Microsoft для системы образования и

подготовки кадров». Ведущие менеджеры по работе с

образованием поделились опытом внедрения техноло-

гий и программных продуктов Microsoft за рубежом и в

России, а также представили новые решения для сфе-

ры образования на базе платформы Microsoft Learning

Gateway (MLG).

В первой части семинара Джим Леви и Айдан МкКарти рассказали о новых версиях системы управления ИТ-ре-сурсами учебного заведения Learning Network Manager и системы управления учебным контентом и процессом об-учения Class Server применительно к школьному и вузов-скому образованию. Особое внимание было уделено воз-можностям взаимодействия с органами управления обра-зованием и существующему опыту в странах Европы. Вто-рая часть семинара была посвящена представлению от-ечественных проектов: Сергей Паринов рассказал о те-кущем внедрении и перспективах развития портала Выс-шей школы экономики на базе технологий MS SharePoint Portal Server 2003, а Алексей Мороз в свою очередь поде-лился результатами использования программного продук-та MS Class Server для организации дистанционного обу-чения в Российской академии правосудия Верховного су-да РФ и Высшего арбитражного суда РФ.

Решения Microsoft для сферы образования уже обсуж-дались на страницах журнала (см. №11, 2004 г.), поэтому отметим только ключевые изменения в политике Microsoft. Во-первых, можно констатировать существенное увеличе-ние и коммерциализацию интереса к сфере образования на уровне высших учебных заведений и правительства (ори-ентация на решения для электронного правительства). Об этом свидетельствует явно декларируемая коммерческая целесообразность работ в области образования: «There is Serious Money in Education – together we can unlock the Safe!» (В образовании есть серьезные деньги – вместе мы можем отпереть этот сейф!), которая базируется на увеличении ко-личества платных студентов в вузах до 50%, существова-нии нескольких высокобюджетных федеральных целевых программ по информатизации образования (до 1 млрд. $) и росте спроса на услуги по дистанционному обучению (e-learning) в крупных предприятиях.

Во-вторых, поддерживая современную тенденцию, Micro-soft на передний план выдвигает интеграционную платфор-му MLG и ее возможности по расширению и развитию, ко-торые потенциально могут компенсировать все существую-щие на сегодняшний день преимущества программных про-дуктов конкурентов. При этом Microsoft продолжает наращи-вать возможности своей линейки программ для образова-ния, выпуская новые версии и распространяя бесплатные e-learning-компоненты для разработчиков в среде .Net.

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

учреждений, а остальные вопросы перекладываются на пар-тнеров. Так, например, существует CRM-решение для сферы образования от компании Distinction на базе MS Business Solu-tions, которое активно используется в Великобритании.

Конечно, говорить о серьезной проработанности вопро-сов организации бизнес-процессов в образовании на базе технологий Microsoft еще рано, однако уже сейчас активно ведутся работы по направлению Management information sys-tems, куда пока в упрощенном виде, но уже входят решения для отчетности на базе Business Intelligence, финансовые и кадровые модули. Для повышения эффективности вза-имодействия с существующими системами могут исполь-зоваться возможности Enterprise Application Integration (EAI) на базе XML-webservices и BizTalk Server 2003.

Более подробную информацию о докладах на семинаре и программных продуктах Microsoft можно найти по адре-су: http://www.microsoft.com/Rus/Education.

Андрей Филиппович

Завершение серииPA-RISC – конец эпохи мини-ЭВМ?В центре высоких технологий HP в Москве прошла пресс-

конференция, посвященная развитию бизнес-критичных

серверов, представлению процессора PA-8900, пробле-

мам защиты инвестиций и внедрению технологии вир-

туализации серверных ресурсов.

Создание нового процессора серии PA-8900 заверша-ет историю архитектуры PA-RISC и как следствие знамену-ет конец продолжателей класса мини-ЭВМ от HP. За время своего развития эти процессоры увеличили рабочую часто-ту в 20 раз и производительность в 60. Последний процес-сор имеет сокетную совместимость с Intel Itanium, и поэтому системы на его основе определяются как «Itanium READY». В дальнейшем планируется поддержка только двух архи-тектур – x86 и Itanium.

Для владельцев HP 9000 это означает неизбежную за-мену процессоров в новых системах на Itanium, и их должен заинтересовать компромиссный способ обновления суще-ствующих систем такого класса. Идея, положенная в основу нового семейства серверов HP Integrity, за счет стандарти-зации оборудования позволяет смешивать серверные моду-ли разной архитектуры и осуществлять поэтапное обновле-ние бизнес-критичных серверов, обычно работающих в ре-жиме non-stop. Это позволяет надеяться, что точно так же, при следующей смене архитектуры на более прогрессив-ную, существующее серверное оборудование не придется 100% списывать. Владельцам персоналок такой способ ча-стичной модернизации хорошо знаком.

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

Алексей Барабанов

Page 5: 031 Системный Администратор 06 2005

3№6, июнь 2005

тенденции

Nokia присоединяется к мируOpen SourceНачиная с конца мая компания Nokia демонстрирует пока-зательную благосклонность к сообществу Open Source. Так, например, анонсируется Nokia 770 Internet Tablet – интернет-планшет, основанный на открытой ОС Linux (а не привыч-ной Symbian). Причем также сообщается о планах компа-нии опубликовать исходный код продукта в надежде при-влечь разработчиков к написанию программного обеспе-чения для устройства. Далее следует заявление о том, что в ядре Linux разрешается использовать запатентованные технологии Nokia. «Nokia полагает, что инвестиции, сделан-ные со стороны независимых разработчиков и компаний в ядро Linux, и открытое ПО, без сомнения, выгодны и заслу-живают доверия», – гласит официальное заявление компа-нии. Однако вскоре этот жест доброй воли был подвергнут резкой критике Ричарда Столлмана, который и здесь обна-ружил подвох: «... Free Software Directory (каталог свободно-го ПО) насчитывает более 4000 пакетов. В заявлении Nokia ничего не говорится о них, так что здесь по-прежнему оста-ется потенциальная опасность атаки Nokia в будущем». Од-нако это не остановило Nokia, и компания на конференции GUADEC объявила о том, что подарит GNOME Foundation доходы с продажи 500 своих устройств Nokia 770. И в сере-дине июня, вновь подчеркивая интерес к Open Source, ком-пания сообщила о намерении воспользоваться технологи-ями WebCore и JavaScriptCore, основанными на коде KHT-ML и KJS от KDE (Konqueror), в новый браузер для смарт-фонов Nokia 60.

Новые подробности об отношениях*BSD и LinuxНа прошедшем в Бразилии форуме FISL 6.0 Маршалл Мак-кузик, один из авторов FreeBSD, поделился воспоминания-ми о том, с чего начинал Линус Торвальдс. По его словам, автор ядра Linux в свое время заявил, что ему бы «не при-шлось создавать Linux, если бы в начале 90-х на BSD не подали судебный иск». Другой представитель лагеря BSD, Тео де Раадт, отметился интервью, в котором подчеркнул, что не сомневается в превосходстве OpenBSD над Linux в плане чистоты исходного кода системы. Кроме того, он от-метил, что крупные компании (вроде IBM), поддерживаю-щие ОС Linux, на самом деле фактически превращают раз-работчиков Open Source в бесплатную рабочую силу.

Первые летние релизы популярных Linux-дистрибутивовПосле неоднократных отходов от плана выпуска новой ста-бильной версии одного из наиболее популярных Linux-дис-трибутивов проект Debian 6 июня представил столь дол-гожданный «Sarge». Время разработки заняло около трех лет, вследствие чего отныне планируется ускорить процесс подготовки стабильных релизов Debian GNU/Linux. А уже через неделю был обнародован и выпуск очередной вер-сии Fedora Core – бесплатного наследника Red Hat Linux, поддерживаемого сообществом Open Source. И в конце месяца разработчики KNOPPIX объявили о релизе анон-сированного на конференции LinuxTag обновления к сво-ему дистрибутиву. Впервые система была выпущена в ре-

дакции LiveDVD, на котором содержится более 4 Гб попу-лярных пакетов.

Sun опубликовала исходный код SolarisКомпания Sun наконец-то выполнила свое обещание и опу-бликовала исходный код своей ОС Solaris под лицензией CDDL в рамках проекта OpenSolaris. Всего было открыто более 5 миллионов строк кода, однако это не все – исход-ники некоторых других компонентов должны будут появить-ся позже. Вскоре Джон Фаулер сообщает о замене в Open-Solaris загрузчика на открытый GRUB, что позволило «су-щественно расширить прямую поддержку аппаратуры». А вскоре после релиза OpenSolaris Йорг Шиллинг выпустил первый основанный на нем LiveCD-дистрибутив – SchilliX.

Достижения проектовпо портированию LinuxПоявились новости о развитии Linux во встраиваемой сре-де. Так, например, энтузиастам удалось запустить ядро от-крытой ОС и заставить работать framebuffer на КПК Dell Axim X50. Очередных успехов достиг и проект портирования Lin-ux на iPod: теперь стал возможным просмотр изображений и запись аудио, а в ближайшее время ожидается поддерж-ка устройств 4G iPod и iPod mini. Кроме того, разработчи-ки DS Linux (версии Linux для Nintendo DS) смогли создать виртуальную клавиатуру для экрана приставки.

Составил Дмитрий Шурупов

по материалам www.nixp.ru

Page 6: 031 Системный Администратор 06 2005

4

интервью

Главный вопрос, волнующий на-

ших читателей, когда выйдет

Alt Linux 3.0 и насколько сильно

он будет отличаться от своего пред-

шественника Alt Linux 2.4?

На данный момент Alt Linux Compat 3.0 проходит внутреннее тестирова-ние. К примеру, у меня на ноутбуке он уже стоит и работает очень даже хорошо. Со дня на день должна поя-виться OEM-версия Compact 3.0, за-тем выйдет розничная версия. Ну а к осени должен появиться Alt Linux Mas-ter 3.0. Как обычно, у нас произошло обновление большинства прикладных пакетов, но это не главное. Основное изменение по сравнению с версией 2.4 – это переход на новую систему инсталляции и настройки системы. Хочу для примера отметить тот факт, что во время установки нет необхо-димости перезагружаться. В процес-

се инсталляции используются те же самые модули, что и при последую-щей настройке системы. В эту версию встроен пакет Alterator, который отве-чает за инсталляцию и конфигуриро-вание системы. Его прототипом были модули конфигурирования, эксплуа-тировавшиеся ранее в «ИВК КОЛЬЧУ-ГА». Благодаря этому нововведению процесс инсталляции системы силь-но упростился. При создании «Коль-чуги» мы исходили из расчета на то, что мест, где может применяться типо-вое решение на базе Alt Linux, гораз-до больше, чем опытных администра-торов. Соответственно нужно макси-мально облегчить процедуру инстал-ляции. В версии 3.0 на первом этапе производится установка на жесткий диск минимальной рабочей системы, затем управление передается ей. Все остальные процессы, такие как соз-

На данный момент существует всего два русских Linux-дистрибутива – ALT и ASP.

Сегодня редактор нашего издания встретился с Алексеем Смирновым, генеральным

директором компании ALT Linux, – чтобы задать ему вопросы, интересующие многих

пользователей этого дистрибутива.

дание файлов устройств и добавле-ние дополнительных пакетов, проис-ходят в рамках настройки уже работа-ющей системы. Плюс ко всему выше-сказанному мы перешли на ядро 2.6 и соответственно легко можем выпу-стить Live CD одновременно с полной версией дистрибутива. Одним из важ-ных нововведений в ALT Linux версии 3.0 можно назвать переход на UTF-8. Это позволит избавиться от пробле-мы с ворохом разных кодировок ки-риллических символов. На данный мо-мент большинство приложений отлич-но работают в новой среде, хотя неко-торые консольные программы еще не совсем дружат с этой кодировкой. Ду-маю, что со временем эти шерохова-тости постепенно будут сглажены.

На данный момент в ALT Linux 2.4 нет

удобных визуальных средств кон-

ALT LINUX: ТРЕТЬЕ ПРИШЕСТВИЕСКОРО НА ЭКРАНАХ ВАШИХ МАШИН

Page 7: 031 Системный Администратор 06 2005

5№6, июнь 2005

интервью

фигурирования системы. Насколь-

ко мне известно, эту роль призвана

выполнять внутрифирменная раз-

работка, фигурирующая под кодо-

вым именем Alterator. Стоило ли за-

тевать свой собственный проект, ес-

ли доступен для свободного исполь-

зования Yast от Suse?

Понимаете ли, когда мы начинали раз-рабатывать Alterator, свободного Ya-st еще не существовало. Стоит учи-тывать тот факт, что наш проект на-чался позже, чем Yast, соответствен-но мы могли учиться на чужих ошиб-ках и заложить в его основу идеи, кото-рых нет у других. Если сравнивать Yast и Alterator, то нужно обратить внима-ние на то, что Yast не хранит настрой-ки системы в конфигурационных фай-лах. Для этих целей используется свое промежуточное хранилище, на осно-вании которого потом редактируются эти самые файлы. Получается, что до тех пор, пока мы пользуемся Yast для настройки параметров системы, все идет хорошо. Но как только конфигу-рационные файлы изменены вручную, от Yast приходится отказаться, потому что будет уничтожать ваши исправле-ния и целостность настроек. С Alter-ator таких проблем возникнуть не мо-жет. Все настройки берутся напрямую из конфигурационных файлов, и после синтаксического анализа ими можно легко манипулировать через систему настройки. Те настройки, которые Alt-erator не распознал, будут сохранены без изменений. Плюсом такого реше-ния является высокая модульность и возможность работы через любой ин-терфейс. К примеру, в разных вари-антах поставки Alterator-ом можно бу-дет управлять через консоль, веб-ин-терфейс, X-window, сетевой сокет или что-нибудь еще. Простор для фантазии разработчика прикладных интерфей-сов практически ничем не ограничен. Опять же свой собственный проект поддерживать гораздо проще, и раз-вивается он динамичнее. Тут и инстру-ментарий на руках, и с разработчиками легче контактировать. В чужие проек-ты, особенно в такие большие, как Yast, сложно вводить свои инновации. Как я уже отметил, еще одним полезным свойством Alterator можно считать его высокую модульность. Думаю, что не возникнет никаких проблем с добавле-нием новой функциональности. К при-

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

Как вы уже упоминали, ALT Lin-

ux версии 3.0, кроме всего проче-

го, будет выходить на Live CD. Со-

бираетесь ли вы выпускать какой-

либо диалект вашего дистрибути-

ва, предназначенный для создания

встроенных систем?

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

Достаточно много пользователей

дистрибутива жалуются на то, что

сайт altlinux.ru последние несколько

лет практически не развивается. На-

мерены ли вы предпринять что-либо

для исправления этой ситуации?

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

документации docs.altlinux.ru. Конечно, сейчас на него нет ссылок со страниц главного сайта и найти его нелегко, но думаю, что со временем это будет ис-правлено. На данный момент силами нашей команды разработана удобная инфраструктура, позволяющая облег-чить процесс создания и сопровожде-ния документации. Изначально масси-вы текстов хранятся в XML – это позво-ляет без особых трудозатрат верстать такой текст в любой выходной формат, хоть в бумажную книгу, хоть в онлай-новое руководство или в документа-цию, идущую в комплекте с разными дистрибутивами. Но работа с XML не-проста, поэтому мы как раз решили это упростить. Думаю, что плоды этой ра-боты можно будет увидеть уже в бли-жайшее время.

Раз мы заговорили о документи-

ровании, хотелось бы спросить,

не планирует ли команда ALT Linux

привлекать авторов со стороны для

описывания процесса создания тех

или иных востребованных решений

на основе дистрибутива.

На данный момент в процессе доку-ментирования участвует некоторое ко-личество специалистов из комьюнити. Но, как вы понимаете, все виды вос-требованных решений описать в при-емлемые сроки будет трудно. Поэто-му мы считаем, что если есть какие-то типовые решения, то их проще не описывать, а закодировать в скриптах и дать конечному потребителю стан-дартный интерфейс для того, чтобы управлять аспектами работы получив-шегося комплекса. Любое оконченное описание это, по сути, техническое за-дание, разумнее было бы сразу же во-плотить его в коде и отдавать потреби-телю специализированный продукт. В мире не так много людей, которые хо-тели бы читать объемные книги и раз-бираться с особенностью работы меж-сетевого экрана Linux. Большинство все-таки предпочтет графический ин-терфейс с возможностью удобно осу-ществлять типовые действия по на-стройке со стандартными заготовка-ми правил для NAT и разрешением работы по наиболее часто использу-емым протоколам. Мы считаем, что в этой нише будущее за специализиро-ванными решениями вроде ALT Linux SOHO Server.

Page 8: 031 Системный Администратор 06 2005

6

интервью

Есть пословица «Как вы лодку на-

зовете, так она и поплывет». Сре-

ди пользователей дистрибутива,

знакомых с легендой о Сизифе, об-

реченном на бесконечный тяжкий

труд, многие считают, что команда

ALT не столько занимается изготов-

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

ведет процесс ради самого процес-

са. Как вы прокомментируете дан-

ное утверждение?

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

Многие администраторы, пользую-

щиеся ALT Linux, жалуются на не-

достаточное количество пакетов в

комплекте дистрибутива. К сожале-

нию, самостоятельная сборка паке-

тов – процесс нетривиальный, и он

под силу довольно малому количе-

ству пользователей дистрибутива. В

то же время официальная команда

поддержки часто отказывается со-

бирать те или иные пакеты, необхо-

димые для работы со стандартными

сервисами, под предлогом небезо-

пасности этих программ. Не лучше

ли было доверить выбор того, что

устанавливать, конечному пользо-

вателю и не ограничивать его искус-

ственными запретами? Большин-

ство дистрибутивов, наоборот, хва-

лятся количеством пакетов по умол-

чанию. Может, стоило бы все-таки

включать такие пакеты в стандарт-

ный репозитарий с пометкой «ис-

пользовать на свой страх и риск»?

В ALT Linux 2.4 Master имеется 5775 бинарных пакетов, вряд ли такое ко-личество можно назвать недостаточ-ным. В процессе создания дистрибу-тива вопросам безопасности уделя-ется очень много внимания. Мы счи-таем, что для начинающего админи-стратора, неспособного самостоятель-но собирать пакеты, лучше всего под-ходит система, сразу же после уста-новки работающая в наиболее защи-щенном режиме. Поэтому приходится немного затягивать гайки, иначе при-емлемого уровня безопасности не до-биться. Опытный администратор, уме-ющий собрать пакет, уже способен сам решить, что ему нужно подкрутить и где можно при необходимости осла-бить те или иные запреты. Я думаю, что если в том или ином пакете есть уязвимость, то его не стоит собирать и класть в дистрибутив. С программа-ми, распространяемыми без исходных кодов, следует поступать так же. В слу-чае крайней необходимости их можно запустить в chroot. Иначе получается, что мы провоцируем администратора пользоваться заведомо небезопасны-ми решениями. На двух последних вы-ставках Softool проводилось тестиро-вание наших серверов. На них рабо-тал дистрибутив ALT Linux, установ-ленный стандартным способом. Все желающие могли попробовать взло-мать систему. Добиться успеха в этом начинании никому не удалось, думаю, что это хороший повод для гордости. Мы считаем, что безопасность и ста-бильность работы должна быть пре-выше всего.

О каких интересных проектах вы хо-

тели бы еще рассказать нашим чи-

тателям?

На данный момент активно развивает-ся направление сотрудничества с Ми-нистерством экономического разви-тия. Последние два года мы выполня-ли для них достаточно объемные зака-зы, а в этом году даже выиграли тен-дер на разработку системы публика-ции под свободной лицензией резуль-татов работ, выполненных по госзака-зу. Это сотрудничество началось с раз-работки «Рекомендаций по использо-ванию свободного программного обе-спечения в государственном секторе».

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

Ни для кого не секрет, часто можно столкнуться с ситуацией, когда назва-ние ПО, выигравшего соревнование, известно еще до начала тендера, или же в тендерной документации встреча-ются требования типа «ОС не хуже Win-dows XP», что понимается поставщи-ками однозначно. Таким образом, все сводится лишь к поиску наиболее вы-годного дистрибьютора. Заказчик тен-дера в любом случае должен понимать, что, покупая ПО, он получает не толь-ко коробку, но и некоторый набор прав. Сравнивать ПО аналогичного функцио-нала от разных поставщиков нужно не только по стоимости, а прежде всего по набору этих самых прав. Одно дело, когда вам выдается лицензия исполь-зовать ПО одновременно на тысяче ма-шин сроком на один год, а затем еже-годно продлять лицензию за дополни-тельные деньги. И совсем другое, воз-можность в соответствии с лицензией использовать программу неограничен-ное время на любом количестве стан-ций внутри одного ведомства. Мы ду-маем, что в случае тендера заказчик должен четко формулировать список необходимых ему прав.

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

Page 9: 031 Системный Администратор 06 2005

7№6, июнь 2005

интервью

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

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

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

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

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

онную систему вашей мечты? Суще-

ствует ли таковая? Если нет, то какая

из ОС, имеющихся в наличии, наибо-

лее близка к вашему идеалу?

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

Если не секрет, хотелось бы узнать,

собирается ли ALT Linux расширять-

ся и привлекать новых разработчи-

ков?

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

Андрей Бешков,фото автора

7

интервью

Page 10: 031 Системный Администратор 06 2005

8

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

В предыдущих статьях [1, 2] мы говорили о том, как Postfix устроен изнутри, почему я считаю его одним из лучших SMTP MTA и как с его помощью построить

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

Все, о чем будет говориться сегодня, проверялось на версиях Postfix 2.2 под FreeBSD, Solaris и несколькими дис-трибутивами Linux. Под всеми перечисленными системами приемы, которым я вас научу, работают практически оди-наково. Мелкие различия в формате вывода информации на экран или названии директорий, в которых лежит тот или иной файл, в данном случае несущественны. Поэто-му я думаю, что у вас не возникнет проблем с применени-ем полученных знаний.

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

В некоторых дистрибутивах Linux того же эффекта мож-но добиться командой:

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

Теперь неплохо было бы приказать Postfix самому про-вести внутреннюю диагностику.

Как видите, в данном случае проблема состоит в непра-вильном синтаксисе файла main.cf. Впрочем, эта команда работает не только с конфигурационными файлами, заодно она позволяет убедиться, что все необходимые служебные файлы и директории имеют надлежащие права и принад-лежат кому положено. Стоит отметить тот факт, что, если в результате проверки будут обнаружены проблемы с каки-ми-либо директориями, Postfix попытается самостоятель-но исправить их атрибуты. В случае успешности этого дей-ствия на экране не появится никаких предупреждений. Ну а если самостоятельно разобраться с проблемами не удаст-ся, сообщения об ошибках будут достаточно детализиро-ваны и легко понятны даже начинающему администрато-ру. Иногда случается так, что служебные директории бы-вают полностью удалены, в этом случае Postfix постарает-ся самостоятельно восстановить их. Единственное, чего он не умеет создавать – бинарные выполняемые файлы вза-мен утраченных. После выполнения команды check непло-хо было бы перезагрузить Postfix, в идеале это требуется редко, но иногда лучше перестраховаться:

Анализируем протоколы Если все вышеперечисленные действия не спасли «отца русской демократии» и почта все еще не работает – значит пришло время заняться анализом протоколов работы по-чтовой системы. Обычно они находятся в /var/log/mail/ или /

POSTFIX: ДИАГНОСТИРУЕМ И УСТРАНЯЕМ НЕИСПРАВНОСТИ

АНДРЕЙ БЕШКОВ

# ps -ax | grep master

22628 ? Ss 0:00 /usr/lib/postfix/master

# service postÞx status

# netstat -na | grep LISTEN | grep 25

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

# postÞx check

postfix: fatal: /etc/postfix/main.cf, line 100: missing ‘=’after attribute name: “mynetworks_style”

# postÞx stop # postÞx start

Postfix прост и надежен в эксплуатации, словно

автомат Калашникова. Но все же неискоренимое

человеческое любопытство нет-нет, да и заставляет

нас задумываться над вопросами: Что будет, если

в один прекрасный день Postfix перестанет работать?

Смогу ли я понять, почему это произошло?

Удастся ли мне его починить?

Page 11: 031 Системный Администратор 06 2005

9№6, июнь 2005

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

var/log/maillog. Если вам не удалось найти нужный файл, то в зависимости от того, какая система syslog у вас исполь-зуется, посмотрите в /etc/syslog.conf или /etc/syslog-ng.conf. Поищите в этих файлах строки, где встречается mail, и вам сразу все станет понятно. Итак, с местонахождением про-токолов мы определились, теперь следует посмотреть, что в них записано. В общем виде записи в протоколе долж-ны выглядеть так:

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

Я уже упоминал, что Postfix является не монолитной программой, а целым содружеством демонов, во главе ко-торых стоит процесс master. С точки зрения безопасности это неоспоримое преимущество, потому что отказ одного компонента не приведет к падению всех остальных. Но в то же время благодаря такому подходу каждая программа подсистемы самостоятельно отвечает за протоколирова-ние результатов своей работы. Получается, что, несмотря на свое главенство, процесс master обладает лишь необхо-димым минимумом информации о подчиненных процессах. К примеру, он может сообщить, что, судя по коду ошибки, у процесса с определенным ID проблемы, но сути их mas-ter все равно не знает. В большинстве случаев поиск по ID процесса, на который пожаловался master, дает исчерпы-вающую информацию о неполадках в системе.

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

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

! fatal – продолжение работы невозможно до тех пор, по-ка ошибка не будет исправлена. Обычно причиной та-ких сообщений становится отсутствие важных файлов или прав на доступ к каким-либо объектам.

! error – ошибка может быть фатальной или нет, но обыч-но продолжение работы системы невозможно.

! warning – предупреждение о не фатальных ошибках. Мо-жет указывать на некоторые несущественные пробле-мы или ошибки в конфигурации.

Посмотрим на одну из самых типичных записей об ошибке:

Судя по сообщению от postfix/master[23846], процесс postfix/smtpd[24506] аварийно завершил свою работу, по-тому что не смог найти файл служебных таблиц /etc/post-fix/helo_restriction.db.

DB-файлы – это бинарная форма вспомогательных та-блиц, используемых Postfix во время работы. Обычно она создается из текстовых файлов специального формата с помощью команды postmap <имя текстового файла>. На-чинающие администраторы при попытке расширить функ-циональность postfix довольно часто забывают создавать вспомогательные таблицы, которые сами же прописали в main.cf.

Обычно Postfix записывает в файлы протокола доста-точно информации для того, чтобы понять, в чем именно за-ключается проблема, но иногда бывает полезно увеличить «разговорчивость» некоторых компонентов системы. Для этого открываем файл master.cf, выбираем нужный компо-нент системы и дописываем к его ключам запуска -v. К при-меру, строка, заставляющая демона cleanup подробнее от-читываться о своих действиях, выглядит вот так:

Выполняем команду postfix reload и смотрим, что проис-ходит. Если полученные сведения все еще не устраивают нас, добавляем через пробел к ключам запуска еще одну -v, и так до тех пор, пока не получим необходимую подроб-ность. Подобный метод можно применять к любому из ком-понентов Postfix. При проблемах с входящими SMTP-соеди-нениями добавляют подробности компоненту smtpd. Если нас интересует доставка, то ключ надо добавить к параме-трам демона очереди qmgr. Плюс зависимости от направ-ления, в котором должно уйти письмо, внести такие же из-менения в параметры вызова агентов доставки smtp, lmtp, pipe, local, virtual. Также можно глобально указать ключ -v для программы postfix, которая в свою очередь переда-ет параметры в master.

Делается это, к примеру, вот так:

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

Следующей весьма полезной для отладки командой является postconf. Она выводит на экран огромное коли-чество информации о состоянии внутренних переменных и таким образом позволяет посмотреть, каковы на данный момент настройки postfix. Кстати, стоит отметить, что зна-чение практически всех переменных, выводимых postconf, вы можете переопределить в файле main.cf. К примеру, узнать версию Postfix можно, выполнив:

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

Jun 12 17:23:41 altlinux postfix/postfix-script: starting the Postfix mail systemJun 12 17:23:41 altlinux postfix/master[23846]: daemon started -- version 2.1.6

Jun 12 17:41:28 altlinux postfix/smtpd[24506]: fatal:open database /etc/postfix/helo_restriction.db: No such file or directoryJun 12 17:41:29 altlinux postfix/master[23846]: warning:process /usr/lib/postfix/smtpd pid 24506 exit status 1Jun 12 17:41:29 altlinux postfix/master[23846]: warning:/usr/lib/postfix/smtpd: bad command startup -- throttling

cleanup unix n - - ↵ - 0 cleanup -v

# /usr/sbin/postÞx -v

# postconf | grep version

# postconf �m

staticcidrcdbnisregexp

Page 12: 031 Системный Администратор 06 2005

10

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

Представим, что нам необходимо посмотреть, что ста-ло с тем или иным письмом. Подобная задача довольно ча-сто встает перед администратором почтовой системы, ког-да пользователь звонит и жалуется, что ему два дня назад отправили письмо, а он его до сих пор не получил. Отсле-дить путь прохождения письма довольно просто: нужно от-крыть файл протокола, найти сообщения о соединении с ин-тересующего хоста. К примеру, нам интересно увидеть, ку-да делось письмо от [email protected] к [email protected]. Ищем в протоколе [email protected], например, с помощью grep и находим следующие строки:

Из них следует, что письмо было принято от clif.unreal.net[10.10.21.75], и ему присвоен ID F29D3562E почтовой оче-реди. Выполним следующую команду:

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

Иногда бывает нужно проверить, как передается почта между нашим сервером и каким-либо другим. В случае ес-ли администрируемый сервер доступен для нас по SMTP, выполнить это достаточно просто. А что делать, если сер-вер предназначен для внутренней почты компании и нахо-дится в закрытой сети, соответственно у нас к нему есть до-ступ только по ssh или telnet? Первый способ – проверить прохождение почты: отправить письмо из командной стро-ки с помощью команды mail и затем проанализировать то, что будет написано в файлах протокола. Большинство ад-министраторов делает именно так, но есть более удобный путь. С помощью команды sendmail можно проверить про-хождение почты гораздо более простым способом.

После доставки письма к [email protected] все данные, касающиеся этого факта, будут не только записаны в про-токол, но еще и отправлены почтой пользователю, от име-ни которого была запущена программа. В нашем случае это пользователь root.

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

Еще одним удобным способом посмотреть, что проис-ходит во время SMTP-сессии, является директива debug_peer_list из файла main.cf. Глобально включать отладку всех SMTP-соединений было бы очень накладно, поэтому в нее стоит добавлять только список хостов, взаимодействие с которыми мы хотим отслеживать тщательнее, чем обычно. К примеру, для наблюдения за передачей писем между на-ми и yandex.ru, mail.ru, pochta.ru и 10.10.10.23 строка могла бы выглядеть вот так:

Как видите, хосты можно перечислять двумя путями – через запятую и через пробел. Впрочем, как вы уже убеди-лись, никто не мешает в качестве хоста указывать IP-адре-са или целые подсети вроде 10.10.10.0/32. С данной возмож-ностью стоит обращаться очень осторожно, потому что каж-дая SMTP-сессия, попадающая под наш фильтр, записыва-ет в файл протокола примерно 20 Кб текста. При большом потоке писем между нами и наблюдаемым хостом стоит не-много зазеваться, и место на файловой системе /var может закончиться довольно быстро. Директива debug_peer_lev-el указывает, насколько подробными должны быть отчеты. По умолчанию ее значение равно 2.

Если хочется заглянуть чуть глубже в процесс рабо-ты Postfix, можно воспользоваться услугами стандартных трассировщиков системных вызовов. Для разных систем их имена могут несколько отличаться, но, скорее всего, вы легко найдете в своей системе что-то вроде trace, strace, truss или ktrace. Следить за каким-либо процессом доволь-но просто – нужно всего лишь вызвать команду, актуальную для вашей системы с ключом -p и номером процесса.

Ну а если и это не помогло, можно провести отладку с помощью интерактивного отладчика xgdb или его не инте-рактивного собрата gdb. За этот функционал отвечает ди-ректива debugger_command из файла main.cf. Впрочем, я сильно сомневаюсь, что она пригодится кому-то из вас. По крайней мере мне за последние три года ни разу не при-шлось воспользоваться ею, даже под большой нагрузкой, Postfix работал без каких-либо нареканий.

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

Литература:1. Бешков А. Почтовая система для среднего и малого

офиса. – Журнал «Системный администратор», №5, май 2003 г. – 46-54 с.

2. Бешков А. Архитектура Postfix. – Журнал «Системный администратор», №6, июнь 2004 г. – 04-08 с.

# grep /var/log/maillog F29D3562E

Jun 12 19:12:27 altlinux postfix/local[27491]: F29D3562E:to=<[email protected] >, relay=local, delay=42,status=sent (delivered to command: /usr/bin/procmail -a $DOMAIN -d $LOGNAME)Jun 12 19:12:27 altlinux postfix/qmgr[27342]: F29D3562E: removed

# sendmail -v [email protected]

# sendmail -bv [email protected]

debug _ peer _ level = 2debug _ peer _ list = yandex.ru, mail.ru pochta.ru ↵ 10.10.10.23/32 10.10.10.0/24

environproxybtreeunixhash

Jun 12 19:11:19 altlinux postfix/smtpd[27445]: connect fromclif.unreal.net[10.10.21.75]Jun 12 19:12:09 altlinux postfix/smtpd[27445]: F29D3562E:client=clif.unreal.net[10.10.21.75]Jun 12 15:12:27 altlinux postfix/cleanup[27482]: F29D3562E:[email protected] 12 19:12:27 altlinux postfix/qmgr[27342]: F29D3562E:from=<[email protected] >, size=363, nrcpt=1 (queue active)Jun 12 15:12:29 altlinux postfix/smtpd[27445]: disconnect fromclif.unreal.net[10.10.21.75]

Page 13: 031 Системный Администратор 06 2005
Page 14: 031 Системный Администратор 06 2005

12

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

Итак, что же такое Asterisk? Читаем на официальном сайте [1]: «Asterisk – полностью программная учреж-денческая АТС (УАТС), работающая под управлени-

ем операционной системы Linux». По возможностям (см. [2]) Asterisk зачастую опережает своих традиционных со-братьев. Поддерживаются практически все популярные протоколы IP-телефонии (SIP, H323, SCCP, ADSI). Помимо стандартных и общеизвестных, Asterisk также имеет свой собственный протокол – IAX.

Его можно использовать как для подключения обычных клиентов, так и для передачи голосового трафика между несколькими серверами Asterisk. Для сопряжения с «тра-диционной телефонией» имеются аналоговые (FXO, FXS) и цифровые модули расширения (E1, T1). С помощью As-

terisk вы сможете реализовать проект любого масштаба – от простого домашнего сервера голосовой почты до теле-фонного сервера предприятия с функциями IVR (Interactive Voice Response – система голосовых меню).

Сегодня мы рассмотрим простой пример установки и на-стройки сервера Asterisk для работы с несколькими поль-зователями.

Можно ли на него посмотреть?Думаю, что после знакомства со списком возможностей (а это более 70 позиций) у вас возникло желание как можно быстрее взглянуть на Asterisk своими глазами. Спешу вас обрадовать – посмотреть на Asterisk без его установки мож-но! Для этого воспользуйтесь специальным LiveCD, обра-

ASTERISK И LINUX – МИССИЯ IP-ТЕЛЕФОНИЯ

У вас уже есть офисная мини-АТС или вы только планируете ее покупку? Думаете

о предоставлении новых возможностей для повышения эффективности работы сотрудников?

Сегодня мы приоткроем дверь в мир Open Source IP-телефонии, рассмотрев возможности

одного из самых популярных продуктов для Linux – Asterisk PBX.

МИХАИЛ ПЛАТОВ

Page 15: 031 Системный Администратор 06 2005

13№6, июнь 2005

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

зами сетевой загрузки для PXE-совместимой сетевой пла-ты или карты CompactFlash [3].

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

Каким бывает AsteriskСуществует две версии Asterisk – HEAD и STABLE. Пер-вая – версия для разработчиков и «продвинутых» пользо-вателей. Все новые возможности первоначально добавля-ются именно в HEAD. Версия STABLE, напротив, содержит только проверенные и отлаженные компоненты и модули. В ней функциональность заведомо приносится в жертву ста-бильности и надежности. Сильно расстраиваться по этому поводу не стоит – немного терпения и все самое «модное» из HEAD плавно перейдет в STABLE.

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

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

Процесс установки.Что нам стоит «*» построитьAsterisk является свободно распространяемым продуктом для платформы. Рекомендуемый способ установки – ком-пиляция из исходных кодов. (Существуют бинарные паке-ты для Redhat/Fedora, Debian, а также ebuild для Gentoo, правда, как правило, более старой версии по сравнению с тем, что доступно на сайте.) Однако прежде чем что-либо компилировать, необходимо получить исходный код Aster-isk. Сделать это можно двумя способами:! Скачать tarball с официального сайта [1].! Загрузить исходный код с CVS-сервера проекта.

Первый способ достаточно прост, и вряд ли он вызовет какие-то проблемы, поэтому при установке Asterisk вос-пользуемся вторым способом. К тому же, если вам потре-буется установить HEAD-версию, вам просто придется ис-пользовать CVS. (Для Asterisk основной веткой CVS явля-ется HEAD, поэтому для загрузки STABLE-версии необхо-димо указать ревизию (-r v1-0).) Процесс компиляции для обеих веток абсолютно одинаков, поэтому все, что написа-но далее, применимо и для HEAD, и для STABLE.

Итак, нам понадобятся 3 модуля: zaptel – модуль ана-логовой телефонии, libpri – модуль цифровой телефонии, и сам Asterisk. Для загрузки модулей с сервера CVS выпол-ните следующие команды:

После выполнения последней команды в /usr/src будут созданы соответствующие подкаталоги. Процесс уста-

новки достаточно прост – необходимо поочередно зайти в каждый из каталогов и выполнить команды make clean и make install:

Последняя команда не только скомпилирует и устано-вит Asterisk, но и скопирует стандартные файлы конфигу-рации в /etc/asterisk. Вообще установочный скрипт копиру-ет файлы в 3 основных каталога:! /etc/asterisk – расположение конфигурации;! /usr/lib/asterisk/modules – место хранения модулей Aster-

isk;! /var/lib/asterisk/ – здесь находятся дополнительные фай-

лы asterisk (звуки, agi-скрипты, картинки и т. д.).

Сам же исполняемый файл обычно помещается в /usr/sbin/asterisk.

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

Если все нормально, то мы увидим несколько экра-нов пока еще непонятной для нас информации, заканчи-вающейся приветствием командного интерфейса Aster-isk (см. рис. 1).

Не вдаваясь в подробности, напишем в консоли stop now и перейдем к более детальной настройке.

Чего же мы хотим?Прежде чем приступить к редактированию конфигураци-онных файлов Asterisk, давайте определим, что же именно мы хотим от него получить. Итак, нам необходимо:! Обеспечить возможность разговора абонентов по IP

(SIP).! Создать персонифицированные голосовые ящики (с

автоматической отсылкой голосовых сообщений на e-mail).

! Настроить «перехват», передачу и парковку звонков.

# cd /usr/src # export CVSROOT=:pserver:[email protected]:/usr/cvsroot# cvs login # введите пароль anoncvs# cvs checkout -r v1-0 zaptel libpri asterisk

# cd zaptel# make clean install# cd ../libpri# make clean install# cd ../asterisk# make clean install samples

# asterisk -vvvvvcd

Рисунок 1. Консоль Asterisk

Page 16: 031 Системный Администратор 06 2005

14

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

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

А ты меня слышишь?Первое, что мы сделаем с нашим сервером, – научим его обслуживать внутренние звонки. Начнем с редактирова-ния файла /etc/asterisk/sip.conf. Убедимся, что в секции ge-neral присутствуют следующие строки:

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

Теперь несколько слов о самих клиентах – они могут быть как программными (приложение на компьютере), так и аппа-ратными (автономное устройство, реализующее один из про-токолов Asterisk). Для первого знакомства с Asterisk нам впол-не хватит возможностей программных клиентов. Наиболее известные из них: X-Ten X-Lite, sjPhone, FireFly, MS Messen-ger, kPhone. Возможности этих программ лучше всего срав-нивать, представив их в виде таблицы (см. таблицу 1).

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

поддерживающие кодек G729 (из бесплатных – firefly). Для тестового примера предположим, что у нас есть 3 пользо-вателя, использующие X-lite, sjPhone и MS Messenger соот-ветственно. Отразим эту информацию в конфигурацион-ных файлах. Начнем с sip.conf:

Небольшие пояснения по параметрам конфигурации. Поле type, определяющее тип клиента, может принимать три значения:! user – возможны только входящие звонки;! peer – возможны только исходящие звонки;

Таблица 1. Сравнениваем возможности программных клиентов SIP

1 Доступно с использованием бесплатной внешней библиотеки.2 Здесь приводится субъективная оценка автора.3 Поддержка расширенной функциональности доступна в коммерческой версии.

[general]context=defaultallowguest=nobindport=5060bindaddr=0.0.0.0

[200] ; xlite phonetype=friendhost=dynamicusername=200secret=user1 _ passwordnat=nocanreinvite=nocontext=ofÞcecallerid=�User1� <200>allow=gsmallow=ulawallow=alaw

[201] ;sjphonetype=friendhost=dynamicusername=201secret=user2 _ passworddtmfmode=rfc2833context=ofÞcecallerid=�User2� <202>allow=gsmallow=ulawallow=alaw

[203] ; ms messengertype=friendhost=dynamicusername=202secret=user3 _ passworddtmfmode=rfc2833context=ofÞcecallerid=�User3� <203>allow-ulawallow-alaw

Page 17: 031 Системный Администратор 06 2005

15№6, июнь 2005

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

! friend – разрешены как исходящие, так и входящие вы-зовы.

Поле host позволяет определить IP-адрес, с которого разрешены подключения для данного клиента. В нашем случае задавать такое ограничение особого смысла нет, поэтому оставим динамические адреса (dynamic). Поля us-ername и secret определяют имя пользователя и пароль, ко-торые должны использоваться клиентом при регистрации. Dtmfmode задает способ передачи сигналов DTMF. Пара-метр nat говорит, может ли данный клиент работать из-за NAT. Canreinvite разрешает (yes) или запрещает (no) уста-новку прямого соединения между участниками (минуя As-terisk). Некоторые клиенты поддерживают строго опреде-ленные способы работы, что необходимо отражать в фай-лах конфигурации. Context – имя контекста, в котором бу-дет находиться данный абонент. CallerID – идентификаци-онная строка, отображается при звонках от данного поль-зователя (АОН).

После задания всех вышеописанных настроек и сохра-нения файла sip.conf перейдем к определению номерного плана. Для этого нам понадобится отредактировать файл /etc/asterisk/extensions.conf. Но, прежде чем запустить ре-дактор, давайте более детально посмотрим на то, что вхо-дит в стандартную поставку.

Номерной план в Asterisk (Dial plan) задается при помо-щи так называемых расширений (extension). В файле стан-дартной установки можно увидеть следующее:

Обработка контекста demo начинается с записей, в ко-торых «s» является первым символом. Так, сначала Aster-isk подождет 1 секунду, потом поднимет трубку и ответит на звонок, установит значения переменных (строки 2, 3), про-играет содержимое файлов demo-congrats и demo-instruct и будет ожидать набора добавочного номера. Следующие строки определяют конкретные номера в контексте demo:

Итак, определены 4 номера – 2, 3, 8500 и 100. При звон-ке на номер 2 мы прослушаем сообщение demo-moreinfo, после которого Asterisk перенаправит нас в начало, к со-общению demo-instruct. Набрав номер 3, мы изменим язык данной сессии на французский. (Чтобы Asterisk мог «раз-говаривать» с вами на французском языке, необходимо на-личие соответствующих файлов озвучки в папке /var/lib/as-terisk/sounds/fr.) При наборе номера 8500 нам ответит си-

стема голосовой почты Asterisk. Номер 1000 отправит нас в начало контекста demo.

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

Мы определили три номера и три псевдонима, при набо-ре которых активируется макрос stdexten, отвечающий за обработку вызовов пользователей. Псевдонимы позволят звонить абоненту не только по его номеру, но и по имени. В качестве параметров макросу передается номер данно-го пользователя и имя его SIP-устройства. Давайте посмо-трим, что же делает этот макрос:

Данный макрос звонит указанному пользователю. Если в течение 20 секунд никто не ответил или вызываемый або-нент был занят, звонящему проиграется соответствующее сообщение, после чего он получит возможность оставить сообщение голосовой почты. Правда, пока у наших або-нентов голосовых ящиков еще нет. Исправим это недораз-умение, добавив в файл /etc/asterisk/voicemail.conf следу-ющие строки:

Этим мы определили 3 ящика голосовой почты для на-ших пользователей, с паролями 123, 456, 789 соответствен-но. При поступлении нового сообщения пользователю неза-медлительно будет отсылаться e-mail на указанный адрес. Во вложении письма будет присутствовать само голосо-вое сообщение в формате wav (вместо wav можно исполь-зовать любой формат, поддерживаемый сервером). Мак-симальная длина сообщения – 5 минут. Если в качестве параметра ящика указать attach=no, то высылаться будет только уведомление об оставленных сообщениях. Для то-го чтобы сообщения отправлялись, нам понадобится опре-делить еще один параметр – команду для отправки почты. По умолчанию она имеет следующий вид:

[demo]exten => s,1, Wait,1exten => s,n, Answerexten => s,n, SetVar(TIMEOUT(digit)=5)exten => s,n, SetVar(TIMEOUT(response)=10)exten => s,n(restart), BackGround(demo-congrats)exten => s,n(instruct), BackGround(demo-instruct)exten => s,n, WaitExten

exten => 2,1, BackGround(demo-moreinfo)exten => 2,n,Goto(s,instruct)exten => 3,1, SetVar(Language()=fr)exten => 3,2, Goto(s, restart)exten => 8500, 1, VoiceMailMainexten => 8500, n, Goto,sexten => 1000, 1, Goto(default,s,1)

[ofÞce] exten => 200,1, Macro(stdexten,200,SIP/200)exten => user1, 1, Goto(200|1)exten => 201,1, Macro(stdexten,201,SIP/201)exten => user2, 1, Goto(201|1)exten => 202,1, Macro(stdexten,202,SIP/202)exten => user3, 1, Goto(202|1)include => demo

[macro-stdexten]exten => s, 1, Dial (${ARG2},20,t4) exten => s, 2, Goto(s-$(DIALSTATUS),1) exten => s-NOANSWER, 1, Voicemail(u${ARG1})exten => s-NOANSWER, 2, (Goto(default,s,1))exten => s-BUSY, 1, Voicemail(b,${ARG1})exten => s-BUSY, 2, (Goto(default,s,1))exten => _ s-., 1, Goto(s-NOANSWER)exten => a, 1, VoiceMailMain(${ARG1})

4 Символ t отсутствует в стандартной конфигурации. Если мы хотим использовать передачу звонков, его необходимо добавить.

[general]format=wav49maxmessage=300[ofÞce]200 => 123, User1, [email protected],,attach=yes201 => 456, User2, [email protected],,attach=yes202 => 789, User3, [email protected],,attach=yes

;mailcmd=/usr/sbin/sendmail �t

Page 18: 031 Системный Администратор 06 2005

16

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

Как видно из названия, для работы данной функции необ-ходимо, чтобы на компьютере с Asterisk был установлен почтовый сервер sendmail или другой, имеющий подобной интерфейс вызова (postfix, exim и др.). Информацию по на-стройке почтового сервера можно найти в [4-6].

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

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

Настраиваем X-LiteИдем на сайт http://www.xten.com. Скачиваем, устанав-ливаем и запускаем программу X-Lite. При первом запу-ске программа предложит настроить микрофон и откро-ет окно настроек SIP прокси-сервера. В этом окне опреде-лим следующее:

Если все настройки сделаны правильно, то в окне X-Li-te мы увидим:

Теперь можно попробовать позвонить по тестовым но-мерам стандартной инсталляции – 2, 3, 1000, 1234, 1236, 500, 600, 8500, 200, 201, 202. При звонках на последние два номера вам, скорее всего, ответит Allison Smith – облада-тельница приятного голоса, которым разговаривает Aster-isk. Эти телефоны пока еще не настроены, и о том, как их можно найти, Asterisk еще ничего не знает. Что ж, давайте исправим это недоразумение!

Настраиваем sjphoneСкачиваем с сайта http://www.sjlabs.com программу sjphone.

Устанавливаем и запускаем соответствующий файл уста-новки. Для настройки нажимаем на «кнопку с отверткой» (см. рис. 3).

Переходим на закладку «Profile» и нажимаем на кнопку «New». Создадим новый профиль «Asterisk» с типом «Calls though SIP Proxy». Перейдем на закладку «SIP Proxy» и вве-дем IP-адрес (или имя) сервера Asterisk и нажмем «ОК» (см. рис. 4).

В появившемся окне введем имя и пароль для данно-го сервера – 201 и user2_password соответственно. По-сле закрытия окна свойств sjphone изменит свой вид. Ес-ли данные введены правильно, то мы увидим следующее (см. рис. 5).

Настраиваем Windows MessengerЕсли устанавливать специального клиента не хочется, мож-но попробовать разговаривать с помощью Windows Mes-senger. Работа с Asterisk не является для него стандартной

Рисунок 3. Элемент интерфейса sjPhone после установки

Рисунок 4. Настраиваем параметры SIP sjPhone

5 IP-адрес или DNS-имя машины с Asterisk.

Рисунок 5. sjPhone, зарегистрированный на сервере Asterisk

Enabled - YesDisplay Name - AsteriskUsername � 200Authorization User � 200Password � user1 _ passwordDomain/Realm - asteriskSIP Proxy � 192.168.0.205 Outbound Proxy � 192.168.0.20Register � Always

Рисунок 2. X-Lite, зарегистрированный на сервере Asterisk

Page 19: 031 Системный Администратор 06 2005

17№6, июнь 2005

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

возможностью, так что вооружимся редактором реестра и отправимся в путь. Если мы используем Windows Messen-ger версии ниже 4.7, то нам понадобится следующий ключ реестра: HKEY_CURRENT_USER\Software\Microsoft\Mes-sengerService.

Если же установлена версия 5.1, то ключ будет другим6: HKEY_CURRENT_USER\Software\Policies\Microsoft\Mes-senger.

По данному адресу нам необходимо исправить значе-ние поля CorpPC2Phone с «0» на «1».

Перезапустим Messenger. Из меню откроем «Tools → Options → Accounts». В поле «Communications Service Ac-count» введем имя пользователя Asterisk – 202@asterisk. Нажмите на кнопку «Advanced» и в открывшемся диалого-вом окне введите адрес сервера Asterisk, попутно отметь-те UDP в качестве транспорта. Теперь попробуем подклю-читься к серверу Asterisk (sign in) с именем 202@asterisk. В случае успеха мы увидим следующее (см. рис. 6).

Итак, теперь все три клиента настроены. Связь можно проверить, позвонив с каждого из них на приведенные вы-ше номера нашего сервера.

Иду на перехват!Как вы, наверное, уже догадались, сейчас речь пойдет о «перехвате звонков». Для начала несколько слов о том, что же это такое в понимании Asterisk. Допустим, вы слышите, как у человека рядом звонит телефон, а его самого на ме-сте нет. По специфике вашей деятельности вы сами можете ответить на этот звонок, не заставляя звонившего лишний раз обращаться к голосовой почте. Для того чтобы не под-ходить к телефону физически, можно «перехватить» звонок со своего телефона. Нажав определенную последователь-ность клавиш, вы сможете ответить на «чужой» вызов. В As-terisk поддерживается два вида таких «перехватов»:! в рамках указанной группы;! конкретного номера.

Для перехвата конкретного номера вы набираете на те-лефоне: *8#номер_звонящего_телефона, после чего звонок переключается на ваш номер. Первый способ более уни-

версален. Вы определяете так называемые группы вызо-ва – телефоны, звонки на которые можно перехватывать, а также для каждого из телефонов определяете, какие груп-пы они могут перехватывать (см. рис. 7).

В нашем случае мы реализуем самый простой вариант перехвата звонков – все телефоны смогут перехватывать звонки друг друга. Для этого внесем некоторые дополне-ния в файл sip.conf. В секциях описания наших телефонов (200, 201, 202) добавим две строчки:

Теперь добавим саму возможность «перехвата» звон-ков, внеся соответствующие изменения в номерной план. В контекст [office] после правил вызова абонентов добавим следующую строчку7:

Теперь, после перезагрузки номерного плана Asterisk, у нас появится возможность перехвата вызовов. Для этого, когда вы услышите звонок телефона, просто нажмите *8, и разговор будет переключен на ваш телефон.

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

Давайте разберемся со всем этим на практике. Пара-метры парковки и передачи вызовов определяются в фай-ле features.conf. В стандартной инсталляции для парковки звонков определяется 20 номеров, начиная с номера 701. Для активации функции убедимся, что файл features.conf содержит следующие данные:

Рисунок 6. Windows Messenger, зарегистрированныйна сервере Asterisk

Рисунок 7. Группы вызова и группы перехвата

callgroup=1pickupgroup=1

exten => *8,1,PickUP()

6 Если такого пути нет, его необходимо создать. CorpPC2Phone имеет тип DWORD.7 Если вам нужно просто включить возможность перехвата для всех абонентов Asterisk, вместо модификации номерного плана можно про-

сто раскомментировать строчку pickupexten в файле features.conf.

[general] parkext => 700parkpos => 701-720

Page 20: 031 Системный Администратор 06 2005

18

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

Итак, для «парковки» звонка будем использовать номер 700, при его обратном подключении (или ошибке подклю-чения) мы будем слышать звуковой сигнал, для активации режима передачи звонка будем использовать последова-тельность #1, при этом пауза между нажатиями кнопок не должна превышать одной секунды.

Теперь внесем изменения в номерной план, добавив в контекст [office] следующую строчку:

Теперь, если во время разговора мы наберем 1#700, звонок «припаркуется» в свободный слот (Эллисон прого-ворит нам его номер). Затем мы можем подойти к другому телефону (при данных настройках на это у нас есть 45 се-кунд) и, набрав известный нам номер слота, продолжить разговор с данного телефона.

Включаем межгород(Межгород? Соединяю...)Для совершения междугородних звонков можно использо-вать как более «родной» для Asterisk протокол SIP, так и бо-лее распространенный среди российских провайдеров IP-телефонии протокол H323. Поддержка H323 появляется по-сле установки определенных модулей (в нашей инсталля-ции этих модулей пока нет), а вот SIP присутствует по умол-чанию. Кроме того, есть как минимум один российский про-вайдер, работающий с этом протоколом, – сеть Тарио [7]. Работа в данной сети не бесплатна, поэтому предваритель-но нам придется зарегистрироваться8. После этого можно приступить к настройке. Откроем уже знакомый нам файл sip.conf и добавим в него следующие записи9:

Для входящих вызовов:

Для исходящих звонков через этого провайдера будем использовать префикс 8. В контексте [office] добавим сле-дующую строчку:

Конструкция EXTEN:1 означает то, что при передаче звонка шлюзу провайдера первый символ будет отбрасы-ваться.

Все входящие звонки от провайдера будем принимать в контекст [tario_inc]. Его можно сконфигурировать при-мерно так:

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

Несколько слов о безопасностиПри определении контекстов, доступ к которым будут по-лучать внешние пользователи, необходимо дважды (а то и трижды) подумать. Так, если бы в последнем примере

register => номер _ лицевого _ счета _ tario:пароль@tario _ in[tario _ in]type=usercontext=tario _ inchost=ip _ адрес _ сервера _ tario

exten => _ 8, Dial(SIP/${EXTEN:1}@tario _ out,20,rT)

[tario _ inc]exten => s,1,Wait, 1exten => s, 2, Answerexten => s,3, BackGround(local-welcomе)exten => s,4, WaitExtenexten => 200,1, Macro(stdexten,200,SIP/200)exten => 201,1, Macro(stdexten,201,SIP/201)exten => 202,1, Macro(stdexten,202,SIP/202)exten => 8500,1, VoiceMailMainexten => 8500,n, Hangup

Описание конфигурационныхфайлов Asterisk

include => parkedcalls

[tario _ out]type=peerhost=адрес _ сервера _ tariousername= номер _ лицевого _ счета _ tariofromusername=номер _ лицевого _ счета _ tariofromdomain=домен _ tariosecret= пароль _ tariousereqphone=yes

8 О том, как это сделать, вы сможете прочитать на официальном сайте [7].9 Предполагается, что подключение к провайдеру производится с компьютера, имеющего реальный интернет-адрес (без NAT).

context => parkedcallsxfersound =beepxferfailsound = beeperfeaturedigittimeout = 1000

[featuremap]blindxfer => #1

Page 21: 031 Системный Администратор 06 2005

19№6, июнь 2005

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

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

Литература и ссылки:1. http://www.asterisk.org.2. http://www.asterisk.org/index.php?menu=features.3. http://www.automated.it/asterisk.4. Шергин Д. Установка IMAP4-сервера на базе Cyrus-

imapd + sendmail. – Журнал «Системный администра-тор», №10, октябрь, 2003 г. – 10-14 c.

5. Бешков А. Архитектура Postfix. – Журнал «Системный администратор», №6, июнь, 2004 г. – 4-8 c.

6. Стахов В. Почтовая система на базе MTA Exim. – Журнал «Системный администратор», №7, июль, 2004 г. – 6-13 c.

7. http://www.tario.net.8. http://www.voip-info.org.9. http://www.asterisk-support.ru.

10. http://lists.digium.com.11. Платов М. Что важно знать об IP-телефонии. – Журнал

«Системный администратор», №5, май, 2005 г. – 20-25 c.

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

то все внешние пользователи, звонящие на наш сервер, по-мимо вполне легального доступа к внутренним номерам и серверу голосовой почты также получили бы не совсем ле-гальный доступ к междугородним звонкам с использовани-ем нашего провайдера. Однако дублировать записи вызо-ва тоже не слишком красиво, поэтому более правильно бы-ло бы перенести все доступные извне правила маршрути-зации в отдельный контекст [office-rules], а в контексте [of-fice] вместо них написать так:

После этого в контексте [tario-inc] вместо повторного пе-речисления правил дозвона до пользователей можно сме-ло написать include => [office-rules]. При такой схеме office-rules не содержит ничего лишнего, и соответственно вос-пользоваться нашим «межгородом» внешние пользовате-ли уже не смогут.

ЗаключениеИтак, сегодня мы рассмотрели основы настройки Aster-isk и связанные с этим подробности – файлы конфигура-ции пользователей, настройки номерного плана, настрой-

include => ofÞce

[ofÞce]include => [ofÞce-rules]exten => _ 8, Dial(SIP/${EXTEN:1}@tario _ out,20,rT

Page 22: 031 Системный Администратор 06 2005

20

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

ИСПЫТЫВАЕМ ANTMON – НОВУЮ СИСТЕМУ ИСПЫТЫВАЕМ ANTMON – НОВУЮ СИСТЕМУ МОНИТОРИНГАМОНИТОРИНГА

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

в самый неподходящий момент. Избежать их,в самый неподходящий момент. Избежать их,

быстро исправить положение, а иногда и предвидеть –быстро исправить положение, а иногда и предвидеть –

всё это может мониторинг. Antmon – новая система всё это может мониторинг. Antmon – новая система

мониторинга, созданная для того, чтобы жизнь мониторинга, созданная для того, чтобы жизнь

сисадминасисадмина была спокойнее.была спокойнее.

СЕРГЕЙ ЖУМАТИЙ

Page 23: 031 Системный Администратор 06 2005

21№6, июнь 2005

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

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

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

Но все знают, какая свистопляска начинается, если вы-ходит из строя сервер. Нет выхода в Интернет, не печатает принтер, повисла база и т. п.

Можно ли как-то застраховаться от подобной ситуации? Конечно, можно! Достаточно установить систему монито-ринга. Систему, которая может обнаружить (а зачастую и предсказать) проблему и сообщить об этом администрато-ру до того, как появились разгневанные пользователи. Уме-ло настроенная система позволит не только сигнализиро-вать о наличии проблемы, но и подсказать, почему, а так-же предпринять соответствующие действия. А при ещё бо-лее умелом использовании сделает простейшие шаги са-ма, например, перезапустит сервис.

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

Из заслуженно известных систем стоит упомянуть PIKT, OpenView и Nagios. Последние два продукта, кроме широ-кой функциональности, имеют и разветвлённые средства визуализации. Какому админу не будет приятно посмотреть на красивую картинку своей сети?

К недостаткам Nagios, да и большинства других систем мониторинга (к примеру, snmp-обработчики открытых snmp-серверов) можно отнести реализацию процедуры сбора не «вшитых» намертво параметров. Каждый модуль для мони-торинга нового параметра (или группы параметров) пред-ставляет собой отдельную программу, которая запускает-ся всякий раз, когда необходимо получить значения пара-метров. А если таких параметров десяток и не на одном, а нескольких серверах? Для серьёзного мониторинга серве-ра нужно снимать данные по температурам, скорости вра-щения вентиляторов, загрузке процессоров, объёмам пе-редаваемых данных. А к тому же неплохо бы смотреть ак-тивность сервисов (кто «съел» всю память – почтовик, ба-за данных или самописный сервер приложений?). А если надо собирать статистику не только по доступности како-го-либо сервиса, но и локальные данные на удалённых сер-верах? К примеру, свободный объём на диске или темпе-ратуру процессора?

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

Есть способы решения этих проблем. Например, на-писать свой сервис, который будет снимать нужные дан-ные и отдавать их по SNMP. Решение хорошее, но что ес-ли на сервере уже есть сервис для SNMP? Весьма веро-

ятно, что будет иметь место конфликт по портам. Можно повесить свой сервер SNMP и на нестандартный порт, но тогда агенту мониторинга надо будет объяснять, что одни данные надо с этого порта брать, а другие – с того... Есть серверы SNMP, которые допускают подключение внеш-них обработчиков, но все такие обработчики для получе-ния одного значения каждый раз запускают отдельный процесс, а если их с десяток и опрашивать их надо часто? Да и написать такой сервис тоже дело не получаса... Мно-гие наверняка скажут: «Ничего, мы же пользуемся». Не бу-ду спорить, во многих случаях подход себя оправдывает (всё-таки SNMP именно для этого и создавался), но, как показывает практика, не всегда. К примеру, получение по SNMP статистики с коммутатора 3Com 3300 по всем пор-там может занять около минуты – проверено. А это дале-ко не всегда хорошо.

OpenView является коммерческим продуктом и полнос-тью основан на использовании SNMP. Если вы используете серьёзные дорогостоящие системы хранения и базы дан-ных, то, скорее всего, у вас уже есть поддержка агентов для OpenView, и его использование будет весьма продуктивно. Однако, чтобы добавить к нему своего агента для съёма не-стандартных параметров (OpenView позволяет это делать), придётся изрядно попотеть... Взять хотя бы минимальные требования для пакета OpenView Operations, который необ-ходим для разработки: HP-UX version 11.0, 11.11/Solaris 8,9, 1 GB dedicated RAM/5 GB for management server installation, Oracle 9i Enterprise.

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

Система AntmonДля решения обозначенных проблем я создал систему мо-ниторинга Antmon (http://parcon.parallel.ru/antmon). Она бы-ла создана под конкретный комплекс, но заложенные в неё принципы построения дают ей очень широкие (как я полагаю) возможности применения. Пока и головные сер-веры, и агенты системы работают только под UNIX-совме-стимыми операционными системами, под Windows они не тестировались, но порт агента и головного сервера под эту платформу планируется в самое ближайшее время. Кро-ме того, система продолжает развиваться, и я всегда от-крыт пожеланиям.

Кратко сформулирую требования, которые легли в осно-ву Antmon:! лёгкая расширяемость (написать модуль расширения

для снятия нестандартных параметров или реакции на нештатную ситуацию должно быть по силам среднему программисту);

! нетребовательность к ресурсам (затраты на работу мо-ниторов должны быть минимальны);

Page 24: 031 Системный Администратор 06 2005

22

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

! высокая стабильность (отказ головного сервера не дол-жен приводить к полному отказу системы, по крайней мере администратор должен узнать об этом первым).

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

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

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

Возможности расширения AntmonСистема Antmon не имеет жёстко «вшитых» средств мо-ниторинга, кроме проверки доступности удалённого аген-та. Поэтому всегда можно настроить систему под конкрет-ные требования и не иметь дела с избыточными для вас данными.

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

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

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

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

Благодаря таким простым требованиям модуль для An-tmon может быть написан практически на любом языке, и навыки программиста для его написания должны быть ми-нимальны (главное – запрограммировать съём значений параметров). В поставку входит набор готовых модулей, которые могут быть легко модифицированы и использо-ваны для написания собственных.

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

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

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

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

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

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

ПримерыВот пример конкретного конфигурационного файла с ком-ментариями.

Page 25: 031 Системный Администратор 06 2005

23№6, июнь 2005

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

В этом примере всего два сенсора. Один из них (до-ступность веб-страницы) контролируется сервером head1 и страхуется сервером head2, а второй – сервером head2 и страхуется сервером serv.

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

Ещё один пример, чуть сокращённый – конфигурация мониторинга трёх площадок с контролем доступности друг друга (предполагается, что VPN они не соединены).

Листинг 1. Кольцевая конфигурация

heads head1 head2 serv# Используем 3 головных сервера с именами# head1, head2 и serv

topo 1 2 3 2# Описываем топологию.# Кратко � 1�й сервер будет посылать пакеты 2�му# для подтверждения того, что он «жив»,# 2�й � 3�му, а 3�й � 2�му.## Если 1�й сервер откажет, об этом узнает только 2�й# (но он «расскажет» 3�му)

head _ ping 120# Посылаем ping (точнее keep _ alive) остальным серверам# каждые 2 минуты

head _ tmout 300# Если в течение 5 минут нет сигнала от другого сервера,# он считается сбойным

action mail _ servfail action _ mail [email protected] _ line Server $addr fails.# Описываем действие � передать на вход модулю# action _ mail указанную строку, сам модуль# action _ mail запускается с параметром � адресом# администратора

action mail _ status action _ mail [email protected] _ line $name on server $addr is $state# Ещё одно действие � тоже отсылка письма

action down action _ shutdownaction _ line $addr# Другой вариант реагирования � зайти на указанный сервер# по ssh и выполнить shutdown

action log action _ log /var/log/Antmon _ logaction _ line $addr $name $val $state# Реагирование в виде записи в файл журнала

on _ head _ death mail _ servfail# В случае сбоя головного сервера оповестить# администратора с помощью описанного выше действия# mail _ servfail

###################################################### Описание параметров мониторинга.# Все инструкции описывают шаблон для параметра �# диапазон значений, реакции на события и т. п.## Инструкции names или addr _ set «актуализируют» шаблон,# реализуя описанные параметры на сервере из инструкции# addresses или на указанных серверах с именем# из инструкции name соответственно.## Шаблон не обнуляется после «актуализации»,# так что нет необходимости описывать каждый параметр# заново � достаточно модифицировать предыдущий

addressess host1# Имя хоста, на котором работает агент

min 200max 200# Диапазон допустимых значений кода веб�страницы

min _ ret 200max _ ret 200# Диапазон значений для возврата в состояние «ОК»

bad _ count 2# Один сбой странички допускаем, 2 � уже нет

ret _ cout 1# Для возврата в состояние «ОК» достаточно одного# «хорошего» результата её опроса

on _ fail mail _ state log# При сбое � информировать администратора и сделать# запись в журнале

on _ ret mail _ state log# При возврате в состояние «ОК» � тоже address serv1# проверять будем на агенте на head1

mons 1 2# Проверять могут мониторы head1 и head2.# head1 имеет приоритет

names http.antmod test _ url# Формат: имя модуля [аргументы] название# В этот момент происходит объявление сенсора# с указанным именем на агенте по адресам,# указанным в последней инструкции addr либо addresses# (тогда объявляются сенсоры на всех перечисленных хостах)

addresses host1 host2 host3min 5000max 100000min _ ret 5500max _ ret 100000ret _ count 2# Меняем параметры сенсоров.# Описанные ранее параметры, которые не изменены,# не сбрасываются!# Проверяем на 3-х хостах

on _ fail down

mons 2 3# Ответственные мониторы � head2 и serv.# head2 имеет приоритет

names fans.antmod w83781-isa-0290 w83781-isa-0290 fan1# Объявляем сенсор

adsdresses node1 node2 node3 node4# Объявляем сенсоры с указанным ранее# в инструкции names именем на узлах node1�node4## Проверяем вентилятор процессора на узлах node1�node4,# используя их локальные агенты

Листинг 2. Три площадки

heads site1 site2 site3# Головные сервера площадок � site1, site2 и site3

topo 1 2 3 1# Все контролируют друг друга

action mail _ fail action _ mail [email protected] _ line $name fails.action sms _ servfail action _ sms 1234567action _ line Server $addr fails.

action log action _ log /var/log/Antmon _ logaction _ line $addr $name $val $stateaction restart _ base action _ baserstaction _ line restart

on _ head _ death sms _ servfail# Шлём sms, если один из серверов помер

addr 192.168.10.10# Сервер баз данныхmin 0max 0# Код успешного статуса базы данных

min _ ret 0max _ ret 0# Диапазон значений для возврата в состояние «ОК»

Page 26: 031 Системный Администратор 06 2005

24

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

Заметим, что все сенсоры, кроме вентилятора на тре-тьей площадке, имеют два состояния – 0 и 1. 0 означает нормальную работу. Поэтому диапазон «хороших» значе-ний (0-0) прописывается один раз и потом просто наследу-ется сенсорами, объявляемыми позднее до тех пор, пока этот диапазон не переопределяется.

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

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

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

Недостатки AntmonОтмечу и недостатки. Система Antmon пока не работает на платформе Windows (хотя я не проверял вариант ком-пиляции под cygwin). Кроме того, полный перенос логи-ки на головные сервера имеет свою отрицательную сто-рону – излишнюю передачу данных для некоторых ви-дов параметров мониторинга. Иногда удобнее, чтобы агент сам определял валидность параметра и только в случае смены его статуса (OK → FAIL, например) инфор-мировал об этом головной сервер, аналогично механиз-му Trap в SNMP. В систему Antmon уже заложена основа для реализации такой схемы работы (параллельно с вы-шеописанной).

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

Надеюсь, для многих администраторов Antmon сможет сослужить добрую службу.

bad _ count 1# Первый же сбой фатален

ret _ cout 1

on _ fail mail _ fail restart _ base log # При сбое базы � перестартовать её. # Информировать администратора и сделать запись# в журнале

on _ ret log

mons 1# Проверять будет только site1

names dbcheck.antmod database

addr 1.2.3.4# Вторая площадка с реальными адресамиon _ fail mail _ fail logmons 2 1 3# Первая и третья площадки могут быть «на подхвате»

names smtp.antmod mail.myserv.ru; http.antmod www.myserv.ru# В инструкции names можно определить и несколько# сенсоров

addr 5.6.7.8# Третья площадка с реальными адресамиmons 3 2 1

names smtp.antmod mail.serv2.ru; http.antmod www.serv2.ru# За этот сенсор ответственны все

mons 3min 0max 70min _ ret 0max _ ret 60

names fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1# Вентилятор на 5.6.7.8 контролирует только site3

Листинг 3. Кластер и внешняя площадка.

heads clusterhead friend.ru

topo 1 2 1# Оба контролируют друг друга

action mail _ fail action _ mail [email protected] _ line $name fails.action sms _ servfail action _ sms 1234567action _ line Server $addr fails.action log action _ log /var/log/Antmon _ logaction _ line $addr $name $val $state

on _ head _ death sms _ servfail# Шлём sms, если один из серверов помер

on _ fail action _ log mail _ failon _ ret action _ log

addresses node1 node2 node3 node4 node5 node6 node7 node8mons 1min 0min _ ret 0max 2.3

max _ ret 1.9# Максимально допустимая нагрузка на 2-процессорный узелbad _ count 3ret _ cout 2names sysstat.antmod loadavg

max 70# Максимальная температураnames fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1

max 2bad _ count 1ret _ cout 1names sysstat.antmod eth0 _ rcv _ errsnames sysstat.antmod eth0 _ sent _ errsnames sysstat.antmod eth0 _ sent _ colls names sysstat.antmod nfs _ retrans

on _ fail mail _ fail log on _ ret log

mons 1 2min 200min _ ret 200max 201max _ ret 201addresses localhost# Небольшое жульничество, каждый головной сервер будет# опрашивать локального агента, но сначала это будет# делать только первый

names http.antmod www.server.com

Page 27: 031 Системный Администратор 06 2005

25№6, июнь 2005

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

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

Подготовим дистрибутивные файлыИтак, приступим. Все пути в Linux будут приводиться с ис-пользованием «/» и задавая их положение в Linux-нотации, а пути в Windows – с «\» и с указанием буквы, использован-ного устройства или подразумевая положение от рассма-триваемого корня, например от I386 (см. листинг 1).

Создаем диск автоматической установки

За основу возьмем диск Windows XP Professional с интегри-рованным 2-м сервиспаком, что на сегодня является наи-более свежей версией. Это будет единственное соприкос-новение с Windows в процессе производства. Все осталь-ные действия будем совершать в среде Linux. Базовые све-дения по процессу автоматической установки Windows, вы можете получить, воспользовавшись ссылками [1, 2]. Те-перь перейдем от теории к практике.

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

АВТОМАТИЗАЦИЯ MS WINDOWS,АВТОМАТИЗАЦИЯ MS WINDOWS,ИЛИ AUTOIT КАК МЕЧТА ЭНИКЕЙЩИКАИЛИ AUTOIT КАК МЕЧТА ЭНИКЕЙЩИКАЧАСТЬ 3ЧАСТЬ 3

Вы уже познакомились с возможностями AutoIt по автоматизации работ в Windows.Вы уже познакомились с возможностями AutoIt по автоматизации работ в Windows.

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

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

и необходимых приложений. Здесь AutoIt позволит сделать выбор приложений независимым и необходимых приложений. Здесь AutoIt позволит сделать выбор приложений независимым

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

АЛЕКСЕЙ БАРАБАНОВАЛЕКСЕЙ БАРАБАНОВ

Если мы собираемся вас инструктировать перед обновлением

программного обеспечения системы, не беспокойтесь.

Мы ведь никуда не денемся, когда это закончится!

Листинг 1. Содержимое исходного диска, примонтированногов точке /cdrom

/cdrom # ls -als

total 2990 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 . 4 drwxr-xr-x 16 root root 4096 Mar 14 14:32 .. 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 Autorun 5 -r--r--r-- 1 root root 4952 Oct 20 2001 Bootfont.bin 312 dr-xr-xr-x 1 root root 319488 Sep 7 2004 I386 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 Soft 1 -r-xr-xr-x 1 root root 10 Aug 23 2001 WIN51 1 -r-xr-xr-x 1 root root 10 Aug 23 2001 WIN51IP 1 -r--r--r-- 1 root root 2 Aug 29 2002 WIN51IP.SP1 1 -r--r--r-- 1 root root 56 May 19 2003 autorun.inf 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 cmpnents 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 crack 35 -r--r--r-- 1 root root 35371 Jul 17 2004 readme.htm 1 -r--r--r-- 1 root root 29 Feb 11 2003 serial.txt2524 -r--r--r-- 1 root root 2584576 Aug 17 2004 setup.exe 97 -r--r--r-- 1 root root 98665 Jul 17 2004 setupxp.htm 1 -r--r--r-- 1 root root 2 Aug 17 2004 win51ip.SP2

Page 28: 031 Системный Администратор 06 2005

26

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

Выберем местом создания нового дистрибутива /heap/Windows/uawsp2. Скопируем туда часть исходного диска, исключив очевидно лишнее, и добавив то, что указано в листинге 2.

Прокомментирую состав файлов в корне дистрибутив-ного диска: $OEM$ – директория с дополнительным ПО, о ее содер-жимом мы поговорим позже; Bootfont.bin – шрифт текстового режима установки; I386 – директория с дистрибутивными файлами; WIN51 – маркерный файл, соответствующий Windows v5.1; WIN51IP – маркерный файл, соответствующий Windows XP Professional; WIN51IP.SP1 – маркерный файл, соответствующий пер-вому сервиспаку; autorun.inf – блокировка автозапуска; boot – директория загрузчика; icon.ico – иконка диска; win51ip.SP2 – маркерный файл, соответствующий вто-рому сервиспаку.

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

Маркерные файлы, содержимое которых далее никак не обрабатывается, то есть может быть любым, и Bootfont.bin берем с исходного диска. Иконка имеет чисто косметиче-ское значение (см. листинг 3).

Самым важным преобразованиям подвергнем дирек-торию с дистрибутивными файлами I386. В исходном дис-ке она содержит следующие поддиректории:

При копировании исключим те поддиректории, что от-носятся к вариантам установки Windows XP в режиме ми-грации и обновления с предыдущих версий. Получится следующее:

Это позволит сильно сократить размеры создаваемого дистрибутива и освободит место для размещения дополни-тельных программ. Директории $OEM$ и boot будут созда-ны и наполнены содержимым в процессе дальнейшей ра-боты. В сумме получилось весьма немного:

Для дополнительных программ остается еще почти 300 Мб, а с учетом overburn еще больше. Теперь заполним директорию boot. Это техническая директория, использу-емая в процессе построения имиджа загружаемого диска. В нее надо будет поместить загрузчик для ISO9660 и да-лее указать ее же как целевую для размещения каталога диска. В собранном диске эта директория вместе с содер-жимым будет скрыта от просмотра. Так, в нее надо поло-жить загрузочный сектор для Windows. Как уже было ска-зано, нет простого способа экстрагировать этот сектор из рабочего имиджа.

Дело в том, что ISO9660 имеет структуру подобную ар-хивному файлу, и положение загрузочного сектора опре-деляется порядком его обхода при построении имиджа. По-этому рекомендуется или найти этот сектор в Интернете, или загрузить прилагаемый к этой статье [3]. Загрузочный сектор в ходе своего выполнения обращается к двум дру-гим фазам загрузки (см. листинг 7).

Листинг 2. Рабочая директория после копирования исходногодиска

/heap/Windows/uawsp2 # ls -als

total 168 4 drwxr-xr-x 3 root root 4096 Feb 6 00:12 $OEM$ 4 drwxr-xr-x 6 root root 4096 Mar 3 14:54 . 4 drwxr-xr-x 10 root root 4096 Mar 16 13:17 .. 8 -r--r--r-- 1 root root 4952 Oct 20 2001 Bootfont.bin116 dr-xr-xr-x 7 root root 114688 Feb 2 21:45 I386 4 -r-xr-xr-x 1 root root 10 Aug 23 2001 WIN51 4 -r-xr-xr-x 1 root root 10 Aug 23 2001 WIN51IP 4 -r--r--r-- 1 root root 2 Aug 29 2002 WIN51IP.SP1 4 -r--r--r-- 1 root root 26 Feb 2 22:43 autorun.inf 4 drwxr-xr-x 2 root root 4096 Dec 5 14:52 boot 8 -r--r--r-- 1 root root 4286 Apr 11 2003 icon.ico 4 -r--r--r-- 1 root root 2 Aug 17 2004 win51ip.SP2

Листинг 4. Поддиректории с дистрибутивными файлами

/cdrom # ls -als I386 | grep dr-x

312 dr-xr-xr-x 1 root root 319488 Sep 7 2004 . 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 .. 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 ASMS 36 dr-xr-xr-x 1 root root 36864 Sep 7 2004 COMPDATA 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 DRW 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 SYSTEM32 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 WIN9XMIG 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 WIN9XUPG 2 dr-xr-xr-x 1 root root 2048 Sep 7 2004 WINNTUPG 4 dr-xr-xr-x 1 root root 4096 Sep 7 2004 lang

Листинг 5. Дистрибутивные поддиректории, которые надосоставить

/heap/Windows/uawsp2 # ls -als I386 | grep dr-x

116 dr-xr-xr-x 7 root root 114688 Feb 2 21:45 . 4 dr-xr-xr-x 15 root root 4096 Sep 7 2004 ASMS 16 dr-xr-xr-x 2 root root 16384 Sep 7 2004 COMPDATA 4 dr-xr-xr-x 4 root root 4096 Sep 7 2004 DRW 4 dr-xr-xr-x 2 root root 4096 Sep 7 2004 SYSTEM32 4 dr-xr-xr-x 2 root root 4096 Sep 7 2004 lang

Листинг 3. Файл автозапуска

/heap/Windows/uawsp2 # cat autorun.inf

[autorun]ICON=Icon.ico

Листинг 6. Объем оставшегося дистрибутива

/heap/Windows/uawsp2 # du -sh

437M .

Листинг 7. Подстроки, выделенные из загрузчика

/heap/Windows/uawsp2 # strings boot/ntboot.bin

CDBOOT: Cannot boot from CD - Code: 0CDBOOT: Couldn't find NTLDRCDBOOT: Memory overflow error&8GSVRPXZ^[SETUPLDR.BINBOOTFIX.BINI386

Page 29: 031 Системный Администратор 06 2005

27№6, июнь 2005

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

Можно понять по последней строке, что они размещены в директории I386 под именами SETUPLDR.BIN и BOOTFIX.BIN. Последний из них является тем самым программным кодом, который запрашивает разрешения загрузки с CD:

И в случае нажатия любой клавиши на локальной кла-виатуре управление передается на SETUPLDR.BIN, который в свою очередь и производит запуск процедуры установки. Вот окончательное содержимое директории boot:

Приступаем к установкеУстановка Windows XP производится в три этапа. Каж-дый из которых начинается с загрузки, и все, кроме по-следнего, завершаются перезагрузкой. Перечислю все происходящие внутри этапов технологические действия в порядке их наступления и попутно прокомментирую са-мое важное.

Первый этапПроисходит в текстовом режиме:1. Запуск загрузчика установочного диска boot/ntboot.bin.2. Запуск i386/bootfix.bin.3. Запуск i386/setupldr.bi.4. Чтение и интерпретация i386/txtsetup.sif, i386/winnt.sif и

других *.sif.5. Загрузка драйверов оборудования.6. Запуск system32/ntdll.dll и system32/smss.exe.7. Копирование файлов с дистрибутивного диска.8. Обновление hive*.inf в реестр.9. Перезагрузка.

Первые три пункта уже были описаны. Четвертый, на ко-тором, кстати, проверяется синтаксическая правильность используемых файлов, весьма интересен. Txtsetup.sif со-держит подробное описание всех дистрибутивных файлов и дисковых меток win51ip.sp*, задает режимы запуска пер-вой фазы «/fastdetect /noguiboot /nodebug» и многое другое. Читать это «чудище» размером в 468 Кб одно удовольствие. Модифицируя указанный текстовый файл, можно с Windows творить что угодно. В этом же файле должны быть «про-писаны» и автоматически устанавливаемые драйвера. Но самый важный в контексте рассматриваемой темы – файл winnt.sif. Это тот самый файл ответов, который позволяет выполнять автоматическую установку и настройку Windows. Этот файл надо будет создать. Его кодировка, как и всех текстовых управляющих файлов, должна соответствовать кодовой странице cp866. Но так как вся разработка ведет-ся под Linux, то первоначальный набор этого файла про-

изводится в локали среды разработки, в данном случае в koi8-r, а затем полученный файл конвертируется в нуж-ную кодировку и размещается в директории I386 (см. ли-

стинг 10). Подготовленную версию файла вы можете по-смотреть по ссылке [4].

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

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

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

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

На этом же этапе все специально подготовленные дан-ные с дистрибутивного диска будут скопированы на целе-вой раздел. Дополнительные данные помещаются в дирек-торию $OEM$. Например, как показано в листинге 11.

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

Листинг 10. Конвертация в cp866

# iconv -f koi8-r -t cp866 WINNT.SIF.koi8r | ↵ awk '{print $0 "\015"}' > ↵ /heap/Windows/uawsp2/I386/WINNT.SIF

[Data] ; Включим режим ручного выбора раздела установки. AutoPartition=0

[Unattended] ; Запрещаем автоматическое переразбиение диска. Repartition=No

Листинг 11. Размещение дополнительных обоев

/heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/Web/Wallpaper

total 484 4 drwxr-xr-x 2 root root 4096 Feb 2 21:56 . 4 drwxr-xr-x 3 root root 4096 Dec 26 16:31 ..320 -rw-r--r-- 1 alekseybb users 320111 Oct 26 2003 oaks.jpg156 -rw-r--r-- 1 alekseybb users 154966 Oct 26 2003 winter.jpg

Листинг 8. Подстрока сообщения, сопровождающего загрузку

/heap/Windows/uawsp2 # strings I386/BOOTFIX.BIN

Press any key to boot from CD.

Листинг 9. Содержимое директории boot

/heap/Windows/uawsp2 # ls -als boot

total 124 drwxr-xr-x 2 root root 4096 Mar 17 01:05 .4 drwxr-xr-x 5 root root 4096 Mar 17 17:17 ..4 -rw-r--r-- 1 alekseybb users 2048 Dec 5 14:25 ntboot.bin

Листинг 12.Размещение дополнительных программ

/heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/System32

Page 30: 031 Системный Администратор 06 2005

28

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

Другими словами, директория $OEM$/$$ соответству-ет директории установки ОС на целевом диске. Если сле-довать установкам по умолчанию, то для Windows XP это C:\WINDOWS.

Чтобы в директории C:\Documents and Settings разме-стить специальную команду, которая будет далее исполь-зоваться для настройки профиля вновь создаваемых ло-кальных пользователей, то следует сделать так:

Все эти файлы будут на первом этапе скопированы в одноименные директории на локальном диске так, что его корень будет соответствовать директории $OEM$/$1 на дистрибутивном диске. Придерживаться правила 8.3, как и было ранее заявлено, здесь не следует.

Таким же образом с создаваемого установочного диска будут переноситься дистрибутивные файлы прикладного программного обеспечения. Достаточно все нужные фай-лы поместить в директорию $OEM$/$1/InstData, и в про-цессе выполнения первого этапа установки все они будут скопированы в C:\InstaData. После установки эту директо-рию надо будет не забыть удалить, и лучше сделать это ав-томатически.

Второй этапСледующий этап продолжается в графическом режиме. Его основные шаги перечислены ниже. В некоторых стро-ках записаны временные метки, соответствующие этому этапу, так называемые T-*. Кстати сказать, временная мет-ка не имеет точного соответствия с затратами времени на процесс установки, который всецело зависит от мощно-сти компьютера.1. 39 минут – запуск setup.exe/syssetup.dll (syssetup.inf).2. Загрузка nt5.cat и *.cat.3. Выполнение *.inf.4. Запуск ocmanage.dll.5. Определение оборудования (machine.inf).6. 37 минут – установка драйверов устройств.7. Запуск intl.cpl (intl.inf).8. Запрос CD-KEY.9. Установка компонентов ОС (sysoc.inf).

10. 32 минуты – установка поддержки сети.11. 29 минут – копирование всех необходимых файлов ОС.12. 25 минут – завершение установки.13. 22 минуты – установка меню «Пуск» (shell.inf).14. 18 минут – регистрация компонентов (OLE regsrv).15. 13 минут – запуск $OEM$/Cmdlines.txt.16. 9 минут – сохранение параметров.

17. 8 минут – сохранение настроек (sfc.dll сканирует все си-стемные файлы для создания базы WFP).

18. Создание signhash Hardware ID.19. Удаление временных файлов.20. Перезагрузка.

Это самый длительный этап установки. Он, как и сле-дующий, будет автоматизирован полностью. Фактически, во время 2-го этапа ставится ядро операционной системы. Рассмотрим некоторые важные действия и настройки:

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

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

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

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

Где вместо ХХХХ подставляется код лицензии. Но дело в том, что если бы защита от копирования Windows ограни-чивалась только эти кодом, то всякая автоматическая уста-новка означала бы нарушение лицензии, так как приводи-ла бы к установке одной лицензионной копии продукта на множество компьютеров. Хитроумные обитатели предмес-тья Сиэтла отлично понимали, что загнали себя в тупик. И тогда появились специальные механизмы активации Win-dows или WPA (Windows Product Activation) вместе со счет-чиком наработки или OOBE (Out Of Box Experience). Теперь

Листинг 13. Размещение дополнительных команд

/heap/Windows/uawsp2 # ls -als ↵ \$OEM\$/\$1/Documents\ and\ Settings

total 124 drwxr-xr-x 2 root root 4096 Mar 18 18:25 .4 drwxr-xr-x 6 root root 4096 Feb 7 23:00 ..4 -rw-rw-r-- 1 root users 740 Feb 6 12:45 usersetup.cmd

[GuiUnattended] ; Задаем пароль Администратора. AdminPassword="admin» EncryptedAdminPassword=No

[GuiUnattended] ; Установим режим автоматического входа в систему; от имени АдминистратораAutoLogon=Yes ; Число автоматических входов. AutoLogonCount=2

[UserData] ; Подставляем установочный ключ для Windows XP ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

total 280 4 drwxr-xr-x 2 root root 4096 Mar 19 01:48 . 4 drwxr-xr-x 4 root root 4096 Mar 22 23:08 ..240 -rw-r--r-- 1 root root 241664 Nov 6 2003 KIX32.EXE 32 -rw-r--r-- 1 root root 31232 Aug 18 2003 cmdow.exe

Page 31: 031 Системный Администратор 06 2005

29№6, июнь 2005

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

автоматическая установка копий ОС под идентичными ли-цензионными ключами не снимала необходимость актива-ции копии в течение 30 дней. Для ряда потребителей это уже достаточный уровень решения проблемы автоматической установки. Те же, кто требует большего, должны выбрать или легальный путь преодоления этой проблемы, или об-ходной. Как уже было сказано выше, легальным является способ использования такой лицензии, которая предусма-тривает серийную установку. Для MS Windows это так на-зываемая корпоративная лицензия или VL (Volume License). Здесь надо очень тщательно следить за тем, чтобы число установок не превысило числа оплаченных копий. Обход-ной путь заключается в создании такого дистрибутива, что-бы механизмы защиты от несанкционированного копиро-вания и активации копий не мешали выполнению техноло-гических функций. При этом не исключается номинальная оплата нужного числа копий. То есть вне зависимости от выбранного технологического пути создания диска с авто-матической процедурой установки и, значит, активации ко-пии, вопросы выполнения требований законодательства по защите прав интеллектуальных собственников могут ре-шаться совершенно бесконфликтным путем и в согласии с совестью системного администратора.

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

Далее обращаю ваше внимание на раздел [Components], который управляет установкой программ, входящих в дис-трибутив ОС. Обычно в этом разделе запрещают установку игрушек и прочих утилит, которые далее не предполагается использовать. В нем самое большое число строк. Настрой-ка этого раздела всецело зависит от политики системно-го администрирования. Например, в отношении игрушек: разрешение установки встроенных игр, на взгляд автора, уменьшает стремление пользователей к установке игрушек сторонних производителей. Хотя всегда можно проконтро-лировать состав установленных на рабочей станции про-грамм удаленно с помощью snmp.

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

Вернемся к вопросу установки дополнительного про-граммного обеспечения. За 13 минут до завершения 2-го этапа установки запускается интерпретация команд из фай-ла $OEM$/Cmdlines.txt. Этот файл предоставляет возмож-ность добавления дополнительных действий по настрой-ке, по установке обновлений MS Windows или приложений третьих производителей. Но поскольку в точке Т-13 опера-ционная система настроена еще не в полной мере, то не все полноформатные GUI-приложения можно запускать из Cmdlines.txt. В таком режиме многие установочные процеду-ры не работают. Поэтому опустим описанную возможность установки, тем более, что есть способ со всех точек зрения максимально привлекательный для этого – запуск при пер-вом логоне в систему, так называемый GuiRunOnce. Стро-го говоря, есть еще и третий способ, но об этом позднее. Принято считать, что этим путем удобно вносить измене-ния в реестр, так как ветка HCU здесь относится к пользо-вательскому профилю по умолчанию.

Из методологических целей воспользуемся именно та-ким путем для добавления пользователей в систему. Очень удобно для управления компьютерами в сети использовать единого административного пользователя. Пользователи временами меняют пароли и забывают их, а так всегда есть способ даже удаленно поправить подобную проблему. Ес-тественно, этот бюджет не должен совпадать с бюджетом администратора на серверах сети. Необходимые команды можно вписать непосредственно в Cmdlines.txt, но если туда записать обращение к внешнему командному файлу, тогда можно быть уверенным, что выполнение команд будет про-исходить в стандартной среде. Поэтому создадим $OEM$/Cmdlines.txt и наполним его следующим содержимым:

А в файл $OEM$/mkusers.cmd запишем команды соз-дания пользователя localadmin с неустаревающим паро-лем admin и присвоим этому пользователю статус локаль-ного администратора:

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

А ещё через 40 виртуальных минут установочного вре-мени компьютер должен перегрузиться и тогда начинает-ся 3-й этап установки.

Третий этапПоследний этап установки состоит из следующих дей-ствий:

[UserData] ; Задаем случайное имя. ComputerName=*

[Networking] ; Зададим сетевые настройки по умолчанию InstallDefaultComponents=Yes

Листинг 14. Содержимое Cmdlines.txt

[Commands]"mkusers.cmd"

Листинг 15. Содержимое mkusers.cmd

net user localadmin admin /addnet localgroup Администраторы localadmin /addnet accounts /maxpwage:unlimited

[TerminalServices] ; разрешить RDP AllowConnections=1

Page 32: 031 Системный Администратор 06 2005

30

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

1. Включение oobeinfo, активация копии системы.2. Добавление пользовательских бюджетов.3. Применение установок.4. Настройка пользовательских профилей.5. Запуск команд из секции GuiRunOnce.6. Загрузка рабочего десктопа.

В 1-4 пунктах все очевидно. Здесь практически нечего настраивать или менять в процессе автоматической уста-новки. Разве что запретить добавление пользовательских бюджетов:

А вот пятый пункт является ключевым. Как уже было сказано выше, здесь происходит запуск установки при-кладного программного обеспечения. Все необходимые для этого команды записываются после маркера секции [GuiRunOnce] строка за строкой в обрамлении двойных кавычек. На самом деле эти команды не интерпретируют-ся непосредственно из файла winnt.sif, а предварительно записываются в соответствующую ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVer-sion\Runonce и после выполнения удаляются из нее авто-матически. И есть даже такие схемы установки, где эти данные добавляются в реестр динамически при выпол-нении Cmdlines.txt. Но не будем все так усложнять. Нао-борот, вынесем все команды в отдельный исполняемый файл GuiRunOnce.cmd, вызов которого запишем в winnt.sif в секции GuiRunOnce. Так можно будет уменьшить чис-ло модифицируемых компонентов на создаваемом дис-ке и сократить проблемы из-за синтаксических ошибок, поскольку ошибка во внешнем файле никак не скажет-ся на остальной процедуре установки и тогда в аварий-ном случае возможен еще путь ручной установки прило-жений прямо с диска. Полный текст файла GuiRunOnce.cmd, можно получить по ссылке [5], естественно, в коди-ровке koi8-r. Теперь определимся с перечнем дополни-тельных действий, которые следует выполнить на этой стадии автоматической установки. Исходя из специфи-ки применения рабочей станции, для которой создается диск автоматической установки, пусть набор действий бу-дет следующим:1. Модификации реестра HKEY_LOCAL_MACHINE.2. Установка прикладного программного обеспечения.3. Копирование данных в «Documents and Settings».4. Удаление директории InstData.5. Перезапуск компьютера.

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

Во-первых, для успешного подключения в домен на Sa-mba внесем правочку SignOrSeal:

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

Лучше каждую правку определенной ветви реестра со-хранять в отдельном файле, и все их поместить в $OEM$/$1/InstData. И тогда можно будет манипулировать соответ-ствующими настройками, просто комментируя команды изменения реестра. Сами же команды должны выглядеть примерно так:

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

Например, установка MS Office XP из размещенного в директории $OEM$/$1/InstData/OfficeXP дистрибутива про-изводится командой:

При этом путь до файла штатного установщика Office XP передается в программу AutoIt как параметр:

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

[GuiUnattended] ; Запретим запрос о создании пользовательских бюджетовAutoLogonAccountCreation=No

Листинг 16. Исправление в реестре для подключенияв домен на Samba

[HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]"requiresignorseal"=dword:00000000

Листинг 17. Исправление в реестре для разрешения работынужных сетевых служб

[HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]"3389:TCP"="3389:TCP:192.168.0.0/255.255.255.0, ↵ 192.168.10.0/255.255.255.0:Enabled:@xpsp2res.dll,-22009""161:UDP"="161:UDP:LocalSubNet:Enabled:SNMP"

Листинг 18. Команда обновления реестра

%systemdrive%\windows\regedit /s %systemdrive%\ ↵ InstData\WinXP _ SignOrSeal.reg

Листинг 19. Установка MS Office

%systemdrive%\InstData\install _ office.exe ↵ %systemdrive%\InstData\OfficeXP\SETUP.EXE

Run ( $CmdLine[1] )

Page 33: 031 Системный Администратор 06 2005

31№6, июнь 2005

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

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

Теперь самое время вспомнить, что, кроме запуска ин-сталляторов прикладного программного обеспечения, на-до еще не забыть удалить директорию C:\InstData и для верности перезапустить компьютер. Вот это уже надо де-лать из секции [GuiRunOnce]. В итоге должно получиться следующее:

Длительная задержка перезагрузки нужна для того, что-бы успели пройти все остальные работы по настройке и от-работал usersetup.cmd, который был скопирован в автоза-грузку Администратора. Если возникает необходимость в еще одной стадии установки, например, надо перезагру-зить систему в режим сохранения для выполнения каких-то действий, тогда следует создать еще один командный файл для 4-й стадии, назовем его step4.cmd. И в конец сек-ции [GuiRunOnce] перед вызовом команды shutdown запи-сать следующее:

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

титься или об удалении командного файла step4.cmd, или о его автоматическом отключении.

Собираем дискИтак, все работы по подготовке данных завершены и те-перь можно создать образ загрузочного диска:

Отметим некоторые из использованных параметров. Во-первых, включаем расширение Joliet, для того чтобы на по-лученном диске читались длинные имена, которые были ис-пользованы в директории $OEM$ – ключ «-J». Во-вторых, укажем, что исходная локаль имен файлов koi8-r. Если в применяемой системе не так, то следует поправить – пара-метр «-input-charset koi8-r». В-третьих, запишем, что исполь-зуется только загрузочный сектор, а не имидж флоппи-дис-ка, и заодно запретим доступ к загрузочной информации – ряд параметров «-b boot/ntboot.bin -no-emul-boot -c boot/boot.catalog -hide boot -hide-joliet boot». Остальное все очевидно и создается в полном согласии с «man mkisofs».

«Прожигание» самого диска CD-R/RW является триви-альной задачей, которая не должна вызывать вопросов, по-сему опустим ее описание. Точно так же каждому сисадми-ну должно быть ясно, что и в этой статье, и в тех скриптах и действиях, которые будут предприняты по материалам ста-тьи, могут вкрасться ошибки. Поэтому рекомендуется снача-ла получить устойчивый результат на эмуляторе VMWare.

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

Ссылки:1. Оригинальная информация по созданию дисков авто-

матической установки MS Windows: http://www.micro-soft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/Default.asp?url=/Resources/Documentation/windowsserv/2003/all/techref/en-us/W2K3TR_unatt_how.asp?frame=true&hidetoc=true.

2. Дополнительная информация по созданию дисков ав-томатической установки MS Windows: http://unattended.oszone.net.

3. Загрузчик диска: http://www.barabanov.ru/arts/autoit/ntboot.bin.

4. Файл управления автоматической установкой: http://www.barabanov.ru/arts/autoit/WINNT.SIF.koi8r.

5. Командный файл, запускаемый в процессе автоматиче-ской установки: http://www.barabanov.ru/arts/autoit/Gui-RunOnce.cmd.koi8-r.

6. Архив исходных текстов: http://www.barabanov.ru/arts/autoit/src.tgz.

copy /Y %systemdrive%\InstData\step4.cmd ↵ "%USERPROFILE%\Главное меню\Программы\Автозагрузка\"bootcfg /raw «"/fastdetect /safeboot:minimal ↵ /sos /bootlog /noguiboot" /id 1

Листинг 21. Сборка загрузочного диска

# mkisofs -v -J -N -D -relaxed-filenames -no-iso-translate \ -input-charset koi8-r \ -P «Ivan Ivanovich» \ -p «Handy Man» \ -V «WXPSP2 _ RU» \ -A «mkisofs» \ -b boot/ntboot.bin -no-emul-boot -c boot/boot.catalog \ -hide boot -hide-joliet boot \ -o wxpsp2 _ ru.iso \ /heap/Windows/uawsp2

[GuiRunOnce]

; запусим установку прикладных программ"%systemdrive%\InstData\GuiRunOnce.cmd"; удалим дистрибутивы прикладных программ"%systemdrive%\WINDOWS\system32\cmd.exe /c rmdir ↵ %systemdrive%\InstData /s /q"; запустим перезагрузку компьютера"%systemdrive%\WINDOWS\system32\shutdown -r -f -t 180"

Листинг 20. Команды дополнительных настроек

copy %systemdrive%\InstData\farmanag.lnk ↵ "%systemdrive%\Documents and Settings\All Users\ ↵ Главное меню\Программы\FAR manager\ ↵ FAR manager.lnk" /b /ycopy %systemdrive%\InstData\farmanag.lnk ↵ "%systemdrive%\Documents and Settings\All Users\ ↵ Рабочий стол\FAR manager.lnk" /b /ycopy /Y "%systemdrive%\Documents and Settings\ ↵ usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ Default User\Главное меню\Программы\Автозагрузка\"copy /Y "%systemdrive%\Documents and Settings\ ↵ usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ Администратор\Главное меню\Программы\Автозагрузка\"copy /Y "%systemdrive%\Documents and Settings\ ↵ usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ localadmin\Главное меню\Программы\Автозагрузка\"

Page 34: 031 Системный Администратор 06 2005

32

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

Сегодня мы рассмотрим возможности Windows Script-ing Host для получения основных характеристик ком-пьютерных систем, которые могут быть использова-

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

Примеры скриптов на языке VBScript, приведенные в статье, разработаны и протестированы для W2K. В боль-шинстве своем они могут быть использованы и при рабо-те под управлением Windows 98 или ME без установки до-полнительного программного обеспечения.

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

Ниже приведена общая структура кода программы, по-

зволяющая определить, какие устройства для хранения ин-формации (далее – диски) имеются в системе.

В теле цикла с использованием дескриптора, содержа-щегося в переменной i, могут быть получены такие свойства (из наиболее значимых в рамках тематики статьи), как: буква диска – i.DriveLetter; тип диска – i.DriveType (см. таблицу 1).

Кроме того, с использованием дескриптора доступа к элементам файловой системы fso дополнительно могут быть получены все основные характеристики носителя:! тип файловой системы носителя – fso.GetDrive(i.DriveLet-

ter).FileSystem;! серийный номер тома – Hex(fso.GetDrive(i.DriveLetter).

SerialNumber);! метка тома – fso.GetDrive(i.DriveLetter).VolumeName;

РЕШАЕМ НЕСТАНДАРТНЫЕ ЗАДАЧИ С ПОМОЩЬЮ СТАНДАРТНОГО WINDOWS SCRIPTING HOST

Достаточно часто в администрировании Достаточно часто в администрировании

приходится сталкиваться с разовыми приходится сталкиваться с разовыми

задачами, программные решениязадачами, программные решения

для которых под рукой отсутствуют,для которых под рукой отсутствуют,

а путешествие по Интернету не приносит а путешествие по Интернету не приносит

требуемого результата. Для таких требуемого результата. Для таких

случаев в операционной системе Windows случаев в операционной системе Windows

панацеей практически от всех бед может панацеей практически от всех бед может

стать Windows Scripting Host.стать Windows Scripting Host.

Его возможности позволят вам в короткие Его возможности позволят вам в короткие

сроки составить нужный алгоритмсроки составить нужный алгоритм

и решить возникшую проблему.и решить возникшую проблему.

МИХАИЛ КОШКИН

' Получение доступа к объектам FileSystem ObjectDim fso : Set fso = ↵ WScript.CreateObject("Scripting.FileSystemObject")' Перебираем все диски (HDD, FDD, CD и др.), имеющиеся' в системеDim iFor Each i In fso.Drives�.Next

Page 35: 031 Системный Администратор 06 2005

33№6, июнь 2005

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

! общий размер диска – FormatNumber (fso.GetDrive(i.Dr-iveLetter).TotalSize /1048576, 1) & " Мб");

! размер незанятого пространства диска – FormatNumber (fso.GetDrive(i.DriveLetter).FreeSpace /(1024*1024), 1) & " Мб").

При разработке кода программы необходимо учитывать то обстоятельство, что в считывающем устройстве необя-зательно присутствие носителя (дискеты в дисководе или диска CD в приводе), и при обработке функций для получе-ния свойств носителя могут возникнуть ошибки. Для таких случаев в языке VBScript используются конструкции On Er-ror Resume Next, Err.Number и Err.Clear, позволяющие поль-зователю сформировать код для самостоятельной обработ-ки исключений (см. рис. 1).

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

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

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

Файлы, имена которых содержат интересующее расши-рение, могут быть найдены с применением функции fso.Get-ExtensionName(fullnamefile) (см. рис. 2).

Для поиска файлов с определенной сигнатурой в про-стейшем случае достаточно воспользоваться функциями открытия файла (fr=fso.OpenTextFile(FullNameFile, 1, false)), чтения данных из файла (s_read=fr.Read(1)) и закрытия фай-ла (fr.Close) (см. рис. 3).

При работе с томами файловой системы NTFS будьте готовы к ситуациям, когда доступ с правами пользовате-ля к некоторым подкаталогам будет запрещен (например,

Таблица 1. Возможные значения типа диска для i.DriveType

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

Sub WorkSubFolder(sdrivename)Dim sfolder : set sfolder=fso.getfolder(sdrivename)' Для работы с подкаталогами источникаDim ssfolder : set ssfolder=sfolder.SubFolders' Для работы с файлами каталога источникаDim ssÞles : set ssÞles=sfolder.FilesDim fo' Цикл обработки подкаталогов каталога источникаFor Each fo In ssfolder WorkSubFolder SDriveName&"\"&fo.name Next' Для всех файлов текущего каталога вызывается процедура' WorkForFile Dim Þ : For Each Þ In ssÞles : ↵ WorkForFile sfolder&"\"&Þ.name : NextEnd sub

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

Рисунок 3. Результаты поиска файлов-контейнеров шифрованныхдисков с использованием заданной сигнатуры

Page 36: 031 Системный Администратор 06 2005

34

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

«System Volume Information», который размещается в корне-вом каталоге тома). Необходимо также учитывать то обсто-ятельство, что при значительных размерах дисков и боль-шом количестве файлов поиск может выполняться доста-точно продолжительное время.

ЯрлыкиИнформацию о пристрастиях пользователя можно почерп-нуть при изучении файлов-ярлыков, которые формируют-ся при различных обстоятельствах (будь то история рабо-ты с файлами Microsoft Office или раздел Recent). Для ана-лиза достаточно обработать дату создания файла, являю-щегося ярлыком, и параметр TargetPath, в котором содер-жится информация о запускаемом файле.

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

Документы WordВозможности использования элементов ActiveX позволяют серьезно расширить область применения пользовательских программ на VBScript. Примером этому может стать описа-ние подхода получения метаданных документов Microsoft Word. К слову сказать, за последние три года содержимое метаданных послужило поводом для ряда неприятных исто-рий с крупными компаниями и даже государствами (слу-чаи с досье правительства Британии о военном потенциа-ле Ирака и исковым заявлением компании SCO).

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

Следует отметить, что документы Microsoft Word мо-гут содержать и другие метаданные, которые нельзя по-лучить путем применения стандартных функций работы с документами Word, для этого требуется визуальный кон-троль содержимого. В файле могут обнаружиться такие данные, как:! имя и полный путь к файлу с документом;! адреса электронной почты или информация о веб-сер-

вере;! имена принтеров;! текстовые фрагменты, удаленные из документа в неко-

торый момент до сохранения;! текстовые фрагменты из других документов, не имею-

щих отношения к данному, попавшие в него из-за оши-бок в Microsoft Word.

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

Обработка с использованием VBScript переменных сре-ды для системы Windows поможет ответить на вопрос, от-носится ли операционная система к Win9x или W2K, а так-же получить информацию о некоторых особенностях уста-новки и настройки операционной системы.

On Error Resume Next Dim wordapp : Set wordapp = ↵ WScript.CreateObject("Word.Application")

Рисунок 5. Результаты обработки свойств документов MS Word

Dim wshshell : Set wshshell = ↵ WScript.CreateObject("WScript.Shell")Dim shortcut : Set shortcut = ↵wshshell.CreateShortcut(fullnameÞlelnk)' Вывод информации с названием и полным путем' к запускаемому файлуWScript.Echo( shortcut.TargetPath ) Dim fso : Set fso=CreateObject("Scripting.FileSystemObject") Dim Þlelnk : Set Þlelnk = ↵ fso.getÞle(строка с полным названием файла-ярлыка)' Вывод информации о дате создания файла-ярлыкаWScript.Echo( Þlelnk.DateCreated )

Рисунок 4. Результаты поиска файлов-ярлыков в двухпользовательских каталогах

' Открываем файл fullnameÞle с документом Word' с паролем " "Dim docSet doc = wordapp.Documents.Open(fullnameÞle, _ False, _ blnReadOnly, _ False, " ") If Err.Number = 5408 then' Обработка файла с документом Word, который имеет парольEnd if' Метаданные с пользовательскими свойствами документаDim propitemFor Each propitem In ↵ wordapp.ActiveDocument.CustomDocumentProperties' В цикле обрабатываются propitem.Type и propitem.ValueNext' Метаданные со стандартными свойствами документаFor Each propitem In ↵ wordapp.ActiveDocument.BuiltInDocumentProperties ' В цикле обрабатываются propitem.Type и propitem.ValueNextErr.ClearOn Error GoTo 0

Page 37: 031 Системный Администратор 06 2005

35№6, июнь 2005

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

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

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

WMIВ случаях, если есть возможность запустить скрипт под управлением изучаемой операционной системы версии W2К, полезную информацию можно получить используя Mi-crosoft Windows Management Instrument (WMI). Достаточно подробно подходы работы с WMI описаны в статьях Ивана Коробко, опубликованных в журнале «Системный админи-стратор» в 2004 г. В общем случае код инициализации ра-боты с WMI выглядит следующим образом.

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

Dim wshshell : Set wshshell = ↵ WScript.CreateObject("WScript.Shell")Dim wshproenv : Set wshproenv = ↵ wshshell.Environment("PROCESS")wshproenv (var _ env)

Таблица 2. Возможные значения строкового параметраvar _ env для W2K

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

Рисунок 6. Результаты обработки значений некоторых ключейреестра

Таблица 4. Для Win98 и WinME используются отдельные ключи,располагающиеся в других ветвях

' Подключение к службе WMI локального компьютераDim wbemservicesSet wbemservices = GetObject("winmgmts://127.0.0.1/Root/Cimv2")

Dim objectitemsSet objectitems = wbemservices.ExecQuery("Select * ↵ from Win32 _ NetworkAdapter")Dim objectitemFor Each objectitem In objectitems If objectitem.MacAddress<>"" then

Page 38: 031 Системный Администратор 06 2005

36

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

Использование возможностей WMI позволяет разработ-чику сценария на языке VBScript получить:! информацию об установленном в системе оборудовании

(марка и параметры жесткого диска, тип и частота процес-сора, размер оперативной памяти, тип BIOS, характери-стики и названия видео-, звуковой и сетевой карт и пр.);

! данные протокола работы, имеющие отношение к опре-деленным событиям (запуск, остановка операционной системы, установка и извлечение USB-устройства, уста-новка и удаление программного обеспечения и т. п.);

! параметры настройки компьютера (название компьюте-ра, рабочая группа, название ОС и дата установки, пе-речень загружаемых ОС, список пользователей ОС, имя зарегистрировавшегося пользователя, время последней загрузки и пр.).

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

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

! Невозможно достичь высокого быстродействия для про-грамм на VBScript.

! При наличии на исследуемом компьютере нескольких опе-рационных систем Windows или даже более одного рабо-

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

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

! Для VBScript отсутствуют механизмы восстановления на носителях удаленной информации (глубокий ана-лиз подходов для восстановления данных с носителей, обладающих различной файловой структурой, скрупу-лезно был изложен Крисом Касперски в предыдущих номерах журнала за 2004-2005 гг.).

В качестве бонуса для заинтересованных читателей ав-тором подготовлен набор скриптов, в которых реализованы все возможности VBScript, изложенные в статье (см. http:\\www.samag.ru раздел «Исходный код»).

Рисунок 7. Результаты обработки свойств классов Win32 _ Com-puterSystem, Win32 _ OperatingSystem и Win32 _ UserAccount

WScript.echo("Сетевая карта название: " + ↵ objectitem.Name + Chr(13) + _ ↵ " производитель: " ↵ & objectitem.Manufacturer + Chr(13) + _ ↵ " MAC: " & objectitem.MacAddress) End ifNext

Page 39: 031 Системный Администратор 06 2005

37№6, июнь 2005

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

АНДРЕЙ МАРКЕЛОВ

SOLARIS 10 В КАЧЕСТВЕ ДЕСКТОПА?SOLARIS 10 В КАЧЕСТВЕ ДЕСКТОПА?ПРОБУЕМ!ПРОБУЕМ!

Лучший способ изучить новую операционную систему – постоянно

работать в ее среде. В какой ОС мы больше всего работаем?

Правильно, в той, что стоит на нашем десктопе.

Попробуем погрузиться в одну из самых успешных коммерческих

UNIX-систем, поставив ее на свой рабочий компьютер.

В ноябре прошлого года компания Sun Microsystems анонсировала выход бесплатной операцион-

ной системы Solaris 10 для платфор-мы x86. Новую ОС может скачать и ис-пользовать любой, кто зарегистриру-ется на сайте http:\\www.sun.com и при-мет лицензионное соглашение. Компа-ния планирует зарабатывать по схеме, успешно применяемой Red Hat, то есть брать деньги за платную техническую поддержку.

Кроме того, 14 июня этого года Sun Microsystems открыла исходные коды своей операционной системы. Они до-ступны всем желающим на специаль-но созданном сайте http://www.open-solaris.org по лицензии CDDL. Так-же нужно сделать замечание относи-тельно платформы x86. Solaris на x86 работает с версии 2.1 – то есть бо-лее 10 лет. Правда, в прошлом Solaris OE ассоциировалась со SPARC. Ком-пания Sun Microsystems решила ра-

зорвать эту связь в сознании заказ-чиков, сделав ставку на процессоры фирмы AMD.

Все это делает операционную си-стему Solaris прямым конкурентом Linux и в частности Red Hat Enterprise Linux. И хотя пока невозможно опреде-ленно сказать, насколько удачно пой-дут дела у Sun Microsystems и удаст-ся ли Solaris получить приток «свежей крови» благодаря открытию исходных кодов, но посмотреть, что же представ-ляет из себя эта операционная систе-ма, без сомнения, стоит.

Что нового в системе?Итак, что же появилось революционно-го в новой версии одной из самых рас-пространенных ОС из семейства ком-мерческих UNIX? Во многих обзорах и на самом сайте http:\\www.sun.com уже не раз рассматривались новше-ства и технологии, включенные в So-laris 10. Поэтому я не буду подробно о

них рассказывать и ограничусь лишь перечислением.! Solaris Containers (Zones) – появи-

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

! Dynamic Tracing – полезная функ-ция, позволит вам в реальном вре-мени практически без потери в производительности отслеживать огромное число внутренних функ-ций и процессов операционной системы на глубоком уровне. Про DTrace и Zones на русском языке можно почитать на сайте http://sola-ris.reys.net. Могу порекомендовать еще один неплохой русскоязычный ресурс http://solaris-center.ru.

! Predictive Self Healing – автомати-ческая диагностика и восстановле-ние в случае сбоев (как программ-ных так и аппаратных).

Page 40: 031 Системный Администратор 06 2005

38

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

# useradd -d /export/home/user -m ↵ -s /bin/bash user

Две широко разрекламированные функции ZFS (новая файловая систе-ма) и Project «Janus» (бинарная совме-стимость c Linux) пока в релиз не вош-ли, но обещаются разработчиками в обновлениях.

Устанавливаем Solaris 10 на рабочую станцию x86Для начала было бы неплохо обна-ружить свое оборудование в списке Hardware Compability List, доступном по адресу: http://www.sun.com/bigad-min/hcl. Но, поскольку в нем содержит-ся крайне мало систем и комплектую-щих, надежда на то, что вы найдете там свое «железо», крайне мала. Оконча-тельно же убедиться в том, что Solaris будет работать на конкретной конфи-гурации, можно только эксперимен-тальным путем.

В отличие от предыдущей версии, для установки которой было достаточ-но двух CD, «десятка» идет уже на че-тырех. Первый диск при этом является загрузочным. На пятом, дополнитель-ном Software Companion CD, содержит-ся ряд наиболее часто используемого открытого программного обеспечения, собранного под Solaris. По отдельно-сти пакеты из состава Software Comp-anion можно скачать по адресу: http://www.sun.com/software/solaris/freeware. Полная установка Solaris 10 занимает достаточно много времени. Субъек-тивно – как минимум в два раза доль-ше, чем Linux или Windows.

Если вы хотите получить систе-му с двойной или тройной загрузкой, то лучше устанавливать Solaris после того, как вы поставили Windows, но до Linux. Загрузчик Solaris сможет распо-

знать установленную копию операци-онной системы от Microsoft. RHEL или Fedora распознает как Windows, так и Solaris. Поэтому, для того чтобы вруч-ную не возиться с загрузчиками – про-ще использовать приведенную после-довательность установки.

В процессе инсталляции вам бу-дут заданы стандартные для установ-ки любой системы вопросы: настрой-ки сети, имя машины и тому подобное. При первом знакомстве стоит выбрать полную установку.

Я пробовал устанавливать Solar-is 10 для x86 на нескольких рабочих станциях, и хотя всегда указывал нали-чие серверов DNS и их IP-адреса, про-грамма установки ни разу не создава-ла файла /etc/resolv.conf. Вероятно, это особенность сборки для x86, потому что при установке Solaris 10 для плат-формы SPARC с подобной проблемой я не столкнулся. А поэтому на x86, пер-вым делом после окончания процесса инсталляции, вам нужно создать этот файл и прописать свои DNS-сервера. Без resolv.conf X-Window стартовать у вас не будет. Кстати, в состав Solaris 10 для платформы x86 входят два X-сер-вера: X.org и «родной» от Sun Microsys-tems. Переключаться между ними мож-но при помощи утилиты kdmconfig.

Следующим шагом после создания resolv.conf можно создать пользовате-ля, под которым мы и будем работать. Причем в отличие от Linux потребует-ся более развернутый синтаксис ко-манды useradd:

Как видно, в качестве shell можно

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

Итак, после всех этих манипуляций вы должны увидеть графическое при-глашение ввести имя пользователя и пароль. При первом заходе в систему вам будет предложен выбор между классической CDE (Common Desktop Enviroment) в ее инкарнации 1.6 и Java Desktop System 3, которая фактически представляет из себя Gno-me 2.6. На-до заметить, что в поставку ОС вклю-чен Star Office 7 update 4, хотя для ле-гального использования этого офис-ного пакета его все равно необходи-мо приобретать отдельно. В качестве веб-браузера поставляется Mozilla 1.7, а в роли почтового клиента выступа-ет Evolution. При желании можно по-играть в стандартные для поставки Gnome игры и работать с изображе-ниями в Gimp версии 2.0.2. По субъ-ективным ощущениям на одинаковом оборудовании, Gnome под Linux 2.4 ра-ботает значительно медленнее. Осо-бенно это хорошо было заметно на но-утбуке Asus M5N с 256 Мб оператив-ной памяти.

С поддержкой русского языка – проблем я не обнаружил. Все прило-жения нормально отображают русские символы, а с переключением раскла-док справился переключатель из со-става Gnome. При его использовании необходимо из предложенных трех ва-риантов раскладки выбрать «Plain Ru-ssian keymap». Однако интерфейс луч-ше оставить английским. Дело в том,

Рисунок 1. Первый запуск Solaris 10 Рисунок 2. JDS в Solaris 10

Page 41: 031 Системный Администратор 06 2005

39№6, июнь 2005

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

Фирма Sun Microsystems была основа-на в 1982 году при участии известно-го в мире UNIX г-на Била Джоя (напри-мер, он является автором стандартно-го для UNIX-систем редактора vi). На-звание фирмы произошло от первых букв Stanford University Network, так как большинство основателей было имен-но из этого университета. В 1983 году вышла первая версия операционной системы SunOS – предшественника Solaris, реализации BSD UNIX от Sun. Спустя два года вышла вторая вер-сия продукта, в которой впервые была представлена новая разработка фир-мы – NFS, известная сейчас каждому системному администратору.

SunOS успешно развивалась с де-сяток лет, пока в 1992 году не было объявленно, что SunOS 4.1.4, основан-ная на BSD UNIX, станет последней из разработанных версией, и в дальней-шем Sun Microsystems переходит на

UNIX System V, релиз 4. Новая опера-ционная система была названа Solar-is, и первой выпущенной версией ста-ла Solaris 2. Первой же версией Sola-ris фирма Sun стала называть снятую с производства SunOS. Год спустя вы-шла Solaris 2.2 с поддержкой симме-тричных мультипроцессорных систем, а также версии для х86.

C выхода Solaris 2.6 в 1997 году, графический интерфейс CDE стано-вится стандартным компонентом этой ОС. В 1998 году выходит Solaris 7 – пол-ностью 64-разрядная система с под-держкой средств программирования на языке Java. Четыре года спустя – са-мая распространенная на данный мо-мент версия под номером девять.

В 2004 году был анонсирован вы-ход Solaris 10, а в середине июня это-го года Sun Microsystems открыла ис-ходные коды своей операционной си-стемы.

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

Начинаем работатьНесколько освоившись в системе, предлагаю обратить внимание на пе-речень корректно работающего обо-рудования. Очень высока вероятность того, что звуковая карта не будет ра-ботать с идущими в поставке драйве-рами. В форумах я даже видел сооб-щение от инженера Sun Microsystems, который рекомендовал посмотреть на сторонние драйвера. В частности на Open Sound System (http://www.open-sound.com), бесплатную для персо-нального не коммерческого использо-вания, и бесплатные драйвера с сай-та http://www.tools.de/solaris/audio. Если вы решите использовать OSS – един-ственным неудобством будет необхо-димость раз в четыре месяца обнов-лять лицензию.

В настоящее время в Solaris не реализован так называемый проект «Янус», обещающий бинарную совме-стимость с ОС Linux, а именно Red Hat Enterprise Linux. Поэтому для упро-щения установки программ и управ-ления обновлениями я рекомендую вместо самостоятельной сборки не-обходимого свободного софта, отсут-

С чего начинался Solaris

ствующего на дополнительном Soft-ware Companion CD, воспользовать-ся коллекцией пакетов с http://www.blastwave.org. Сайт содержит более 10-00 пакетов (почти 5 Гб) регулярно об-новляющегося открытого ПО, собран-ного для платформы Solaris. Для об-новления и установки пакетов доста-точно всего лишь одной команды pkg-get, при этим автоматически разреша-

Рисунок 3. Помимо Gnome вы можете работать в традиционной CDE

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

Например, если вы привыкли не к Gnome а KDE, то вполне можете поста-вить сборку с http://www.blastwave.org. Сделать это «не просто, а очень про-сто» – командой pkg-get -i kde_gcc. По окончании установки в опции dtlogin помимо JDS и CDE вы должны полу-чить и KDE. Перед тем как устанавли-вать что-либо, ознакомьтесь с краткой инструкцией, доступной на http://www.blastwave.org/howto.html.

Еще одна альтернативная коллек-ция пакетов для Solaris объемом более 20 Гб, на которую можно обратить вни-мание, расположена по адресу: http://www.sunfreeware.com.

Также на просторах Интернета можно найти игры, собранные под So-laris. В частности, со странички http://members.tripod.com/~Vitaly_Filatov мож-но скачать небезызвестный Heretic.

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

Page 42: 031 Системный Администратор 06 2005

40

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

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

этом для приложений доступ к файлу устройства или от-правка данных другому процессу практически не отличи-ма от доступа к обычному текстовому файлу, что позволяет пользователю применять одни и те же команды для вывода текстового файла на консоль, печати файла, вывода зву-ка через /dev/dsp и пр. Синтетические файловые системы, работающие в пространстве пользователя, реализуют ана-логичный подход к самым разнообразным источникам ин-формации. Файлами является все, с чем приходится иметь дело пользователю такой файловой системы – почтовые ящики, веб-страницы и ftp-серверы, защищенные SSH-со-единения, архивы и другие локальные данные…

Работа вне ядра:! Упрощает установку и использование приложений.! Позволяет минимизировать последствия краха.! Позволяет использовать для программирования язы-

ки, отличные от С.! Отлаживать такие приложения легче.! Появляется возможность вынести часть кода во внеш-

ние библиотеки.! Нет необходимости в переписывании кода для новых

ядер.! Исходя из всего перечисленого, появляется возмож-

ность создавать инструменты для самых разнообраз-ных задач.

Например, в настоящее время существуют проекты SULF – Stackable User-Level Filesystem (http://pobox.com/~vgough/fuse-csharp.html) и FUSE-J (http://www.cl.cam.ac.uk/~Etdm25/fuse-j). Первый позволяет написать свою файло-вую систему на C, второй на Java.

Интерфейс спроектирован так, чтобы обеспечить про-стую, эффективную и прозрачную работу с поддержкой привычной семантики.

Первоначально разработанный для поддержки AVFS (http://www.inf.bme.hu/~mszeredi/avfs), FUSE (http://fuse.sourceforge.net) вскоре стал отдельным проектом и на се-годня имеет приличный список файловых систем, исполь-зующих его наработки. Совсем недавно код FUSE включен в дерево ядра -mm Эндрю Мортона (Andrew Morton). К со-

жалению, второй подобный проект, LUFS – Linux Userland FileSystem (http://lufs.sourceforge.net/lufs) несмотря на над-пись на сайте «Actively maintained» обновлялся в последний раз в конце 2003 года, поэтому уже можно говорить о пре-кращении работ. Принцип работы такой системы ясен из рис. 1. Модуль ядра перехватывает запросы к VFS и соз-дает для пользователя иллюзию работы с обычной файло-вой системой, на которой эмулируется специальное дерево каталогов, отвечающее семантике хранимых в ней данных. Теперь для работы с этими файлами можно применять при-вычные утилиты, например, для копирования файлов через защищенное ssh-соединение достаточно воспользоваться cp. Модуль ядра и библиотека связываются через дескрип-тор специального файла /proc/fs/fuse/dev, через который и происходит взаимодействие.

Реализации файловых системдля защиты информацииНа сайте проекта FUSE можно найти только небольшую про-грамму – пример, демонстрирующую возможности, основ-ной же интерес представляют собой сторонние разработ-ки, список которых можно найти на http://fuse.sourceforge.net/filesystems.html.

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

EncFS – Encrypted Filesystem (http://pobox.com/~vgough/encfs.html) реализует зашифрованную файловую систему. Как и другие подобные файловые системы, основное назна-чение EncFs – защита персональных данных, резервных ко-пий. Работа отличается от «loopback» систем, работающих в режиме ядра. При этом в EncFs размер файловой систе-мы может динамично изменяться. Некоторые метаданные остаются видимыми, что позволяет программе резервиро-вания определить количество файлов, их размер, прибли-зительно количество знаков в имени (само имя шифрует-ся) , т.е. узнать изменившиеся файлы. Но програма резер-вирования не может их расшифровать, таким образом, ре-зервные копии можно сделать без расшифровки.

Сегодня администраторы и пользователи сталкиваются со многими новыми технологиями, на

изучение которых требуется время. При этом полученные ранее навыки работы и привычные

инструменты могут не пригодиться или показаться неудобными. «Синтетические» файловые

системы, работающие в пространстве пользователя, позволяют скрыть разницу в работе

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

СЕРГЕЙ ЯРЕМЧУКСЕРГЕЙ ЯРЕМЧУК

ФАЙЛОВЫЕ СИСТЕМЫ ПРОСТРАНСТВА ФАЙЛОВЫЕ СИСТЕМЫ ПРОСТРАНСТВА ПОЛЬЗОВАТЕЛЯПОЛЬЗОВАТЕЛЯ

Page 43: 031 Системный Администратор 06 2005

41№6, июнь 2005

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

Работать с такой файловой системой можно как с ло-кального, так и удаленного узла, а также сменных носите-лей вроде CD-ROM. Проверим ее в работе. Первым делом требуется установить fuse. Здесь ничего сложного.

Проверяем загружен ли соответствующий модуль:

Новая файловая система должна быть в списке извест-ных ФС.

Все работает. Для примера работы можно зайти в подка-талог fuse-2.2.1/example/ и запустить тестовую программу.

Теперь, глядя на содержимое каталога /mnt/fuse/, можно обнаружить дерево основной файловой системы.

Настала очередь EncfFS. Для работы, кроме архива с самой файловой системой, требуется наличие библиотек OpenSSL и Rlog (http://rlog.sourceforge.net). Устанавливает-ся EncfFS обычным образом, после компиляции будут до-ступны два исполняемых файла – еncfs и encfsctl. При по-мощи первой можно создать или примонтировать зашиф-рованную файловую систему. Как видите, при создании новой файловой системы до-

ступно два предустановленных режима standard и paranoia (шифр AES, размер ключа 256, размер блока – 512), а так-же режим expert, при использовании которого можно вы-брать все параметры самому (половина вопросов при этом будет задана по-русски).

Теперь можно проверить работу вновь созданной ФС:

# tar -xzvf fuse-2.2.1.tar.gz# cd fuse-2.2.1# ./conÞgure && make# make install# /sbin/modprobe fuse

# /sbin/lsmod | grep fuse

fuse 24020 0 (unused)

# cat /proc/Þlesystems | grep fuse

nodev fuse

#./fusexmp /mnt/fuse/ -d

unique: 2, opcode: INIT (26), nodeid: 0, insize: 44 INIT: 5.1 unique: 2, error: 0 (Success), outsize: 24

$ encfs ~/.crypt ~/crypt

Рисунок 1. Модуль ядра перехватывает запросы к VFSи создает для пользователя иллюзию работы с обычнойфайловой системой

Директория "/home/sergej/.crypt" не существует. Создать ее? (y,n) yДиректория "/home/sergej/crypt" не существует. Создать ее? (y,n) yСоздание нового зашифрованного раздела.Выберите одну из следующих букв: введите "x" для режима эксперта, введите "p" для режима максимальной секретности, любой другая буква для выбора стандартного режима.?> x

Выбрана ручная конфигурация.Доступны следующие алгоритма шифрования:1. blowfish-compat : алгоритм совместим с EncFS 0.2-0.6 -- длина ключа 160 бит -- размер блока 64 байт

Введите номер соответствующий Вашему выбору: 1

Выбранный алгоритм "blowfish-compat"

Using key size of 160 bitsUsing filesystem block size of 64 bytesДоступны следующие алгоритмы зашифровки:1. Block : Block encoding, hides file name size somewhat2. Stream : Шифрование потока, сохраняет имена файлов как только возможно

Введите номер соответствующий Вашему выбору: 2

Выбранный алгоритм "Stream""

Enable filename initialization vector chaining?This makes filename encoding dependent on the complete path,rather then encoding each path element individually.This is normally desireable, therefor the default is Yes.Any response that does not begin with 'n' will mean Yes: Yes

Enable per-file initialization vectors?This adds about 8 bytes per file to the storage requirements.It should not affect performance except possibly with applicationswhich rely on block-aligned file io for performance.The default here is Yes.Any response that does not begin with 'n' will mean Yes:

Включить имя файла в IV цепочку заголовков?Эта опция позволит сделать данные файлазависимыми от полного файлового пути. Если файлпереименовать, то нельзя будет его расшифровать.Если включить эту опцию, то жесткие ссылки на файлыне будут поддерживаться файловой системой.Значение по умолчанию No.Любой ввод не начинающийся на 'y' будет воспринят как No:

Enable block authentication code headerson every block in a file? This adds about 12 bytes per blockto the storage requirements for a file, and significantly affectsperformance but it also means [almost] any modifications or errorswithin a block will be caught and will cause a read error.The default here is No.Any response that does not begin with 'y' will mean No: Yes

Add random bytes to each block header?This adds a performance penalty, but ensures that blockshave different authentication codes. Note that you canhave the same benefits by enabling per-file initializationvectors, which does not come with as great of performancepenalty.Select a number of bytes, from 0 (no random bytes) to 8: 4

Конфигурация завершена. Создана файловая системас следующими свойствами:Шифр файловой системы: "ssl/blowfish-v0.2", версия 2:0:1Шифр файла: "nameio/stream", версия 2:1:2Размер ключа: 160 битРазмер блока: 64 байт, включая 12 байт MAC заголовокКаждый файл содержит 8-ми байтный заголовок с уникальными IV данными.Файловые имена зашифрованы с использованием IV цепочек.

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

Новый пароль EncFS:Повторите пароль EncFS:

# cd crypt/

Page 44: 031 Системный Администратор 06 2005

42

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

Размонтируем и смотрим, что в каталоге:

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

Для использования в военных, правительственных и других организациях, в которых уделяется особое внима-ние режиму секретности, разработана файловая система Phonebook (http://www.freenet.org.nz/phonebook), использу-ющая технологию, получившую название «Deniable Encryp-tion technology».

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

Все файлы шифруются индивидуально (256-Blowfish, CFB-режим, плюс SHA1 хеш), в случайном порядке изме-няется и время доступа к файлу. Файлы могут быть запи-саны на CD-ROM или доступ к ним можно получить через сеть (например, NFS).

SSH через файловый менеджерСледующая интересная файловая система shfs – (Secure) SHell FileSystem (http://shfs.sourceforge.net), использующая FUSE, позволяет монтировать удаленные системы, исполь-зуя ssh-соединения и работать с ними как с обычной локаль-ной системой. После стандартной установки пользователю будут доступны две утилиты shfsmount и shfsumount. В об-щем случае строка запуска выглядит так:

Далее:

Если теперь посмотреть в /mnt/local, то в нем обнаружат-ся файлы, расположенные на удаленном компьютере. По умолчанию монтируется домашний каталог пользователя, при необходимости можно указать на конкретный каталог, порт отличный от принятого по умолчанию и прочие пара-метры соединения. Для удобства можно создать символи-ческую ссылку и вызывать команду привычным образом.

Практически такими же возможностями обладает па-кет sshfs-fuse, доступный для закачки с сайта проекта fuse (http://prdownloads.sourceforge.net/fuse/sshfs-fuse-1.1.tar.gz?download). Работа с ним отличается только используе-мой командой.

Сетевые ресурсы в окне МСПодобным образом можно смонтировать и SMB-ресурсы Win-dows машин. Проект SMB for Fuse (http://hannibal.lr-s.tudelft.nl/~vincent/fusesmb) позволяет монтировать не только отдель-ные ресурсы, как это делается обычным способом при по-мощи smbclient и smbmount, но и полностью всю рабочую группу или компьютер. Затем к ресурсам можно обращать-ся из любого приложения, как к локальным файлам. Кэши-рование при помощи скрипта fusesmbcache ускоряет про-смотр доступных ресурсов. Этот скрипт необходимо запу-скать при помощи cron.

И теперь мониторим ресурсы.

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

Не менее интересной является разработка еще одного Open Source проекта FunFS – Fast User Network FileSystem (http://www.luminal.org/wiki/index.php/FunFS/FunFS), цель ко-торого – полноценная замена NFS. Особое внимание было уделено повышению надежности и безопасности соедине-ний. К сожалению, на данный момент FunFS находится в со-стоянии альфа-версии, поэтому о сколько-нибудь серьез-ном его применении пока говорить еще рано. Практически аналогична ситуация с проектом fusedav (http://0pointer.de/lennart/projects/fusedav), позволяющим монтировать Web-

# fusermount -u ~/crypt# ls ./.crypt/

Srdhn7yaqbS-Q1

$ encfsctl ./.crypt

Версия 5; создана EncFS 1.2.1 (ревизия 20040813)Шифр файловой системы: "ssl/blowfish-v0.2", версия 2:0:1Шифр файла: "nameio/stream", версия 2:1:2Размер ключа: 160 битРазмер блока: 64 байт, включая 12 байт MAC заголовокКаждый файл содержит 8-ми байтный заголовок с уникальными IV данными.Файловые имена зашифрованы с использованием IV цепочек.

# ln-s /sbin/mount.shfs /sbin/shfsmount # mount -t shfs [email protected]: /mnt/local

# sshfs [email protected]:/tmp /mnt/local# mount | grep [email protected]: on /mnt/local type shfs ↵ (version=2,mnt=/mnt/local,fd=5)

shfsmount[user@]host:[dir]] mountpoint [options]

# mount -t shfs [email protected]: /mnt/local

The authenticity of host ' somewhere.com (192.168.0.20)' can't be established.RSA key fingerprint is 1a:49:b0:db:df:19:69:af:45:16:da:4b:3a:36:ab:fe.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ' somewhere.com,192.168.0.20' (RSA)to the list of known [email protected] 's password:

# crontab -e

*/30 * * * * fusesmbcache &> /dev/null

# mkdir ~/net# fusermount ~/net fusesmb &

# echo «Это зашифрованное сообщение» > testÞle# cat testÞle

Это зашифрованное сообщение

Page 45: 031 Системный Администратор 06 2005

43№6, июнь 2005

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

DAV (http://www.webdav.org) ресурсы. Разработки идут вя-ло, хотя версия 0.1, доступная в настоящее время на сайте, в принципе функциональна. Впрочем, и AVFS (http://source-forge.net/projects/avf) позволяет также просматривать уда-ленные ресурсы (ftp, http, dav), и кроме того монтирует ар-хивы (tar, tar.gz, zip) в дерево файловой системы.

Контроль версий файловWayback (User-level Versioning File System for Linux, http://wayback.sourceforge.net) позволяет сохранять старые вер-сии текстовых файлов, независимо от их количества, и ка-талогов, в которых они располагаются. Работает wayback на любом блочном устройстве с любой файловой системой. Для отката такая система ведет файл журнала, в котором описываются все изменения. Монтируется новая файловая система при помощи скрипта mount.wayback.

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

Смотрим содержимое:

Отмечается более быстрая работа с файлами по срав-нению с CVS. Но если все таки необходим доступ именно к системе CVS, то некоторые, возможно, предпочтут исполь-зовать довольно удобную cvsfs (http://sourceforge.net/proj-ects/cvsfs), позволяющую смонтировать CVS и работать с ней как с локальной файловой системой. При этом пользо-вателю будут доступны изменения, без необходимости за-качки всего дерева каталогов. В данный момент пользова-тель ограничен только самым последним релизом, исполь-зовав знаки ‘@@’ в имени файла (например filename@@1.1) можно получить доступ к любой версии файла.

Второй вариант lufs_unionfs (http://alumnus.caltech.edu/~muresan/projects/lufs_unionfs.html), которая основана на LUFS. Такая система имеет два каталога, основной рабо-тает в режиме «только для чтения» (некий образ, содержи-мое которого остается постоянным), а в дополнительный бу-дут занесены все изменения и новые файлы (идея взята с проекта unionfs (http://www.fsl.cs.sunysb.edu/project-unionfs.

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

Работа с e-mail, bluetoothи устройствамиДля пользователей почтового сервиса Gmail доступна фай-ловая система GmailFS – Gmail Filesystem (http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html). Это написанное на Python приложение, использующее библио-теку libgmail (http://libgmail.sourceforge.net) для связи с Gm-ail. Позволяет монтировать почтовый аккаунт как обычную файловую систему и пользоваться в дальнейшем обычны-ми командами вроде ls, rm, cp, grep и другими утилитами, позволяющими быстро разобраться с 1 Гб информации.

Не менее интересны файловые системы, позволяющие получить доступ к различным устройствам. Среди них btfs – Bluetooth FileSystemMapping (http://www.mulliner.org/bluetooth/btfs.php), при помощи которой можно узнать обо всех доступ-ных bluetooth-устройствах просто использовав команду ls.

Для пересылки файлов – ср.

К сожалению, в данный момент получить файлы от устройств таким образом невозможно. Аналогично, если вы считаете, что специализированные утилиты, предна-значенные для работы с цифровыми фотокамерами вроде gtkam, не удобны и предпочитаете использовать для это-го стандартные инструменты, попробуйте gphoto2-fuse-fs (http://www.hep.phy.cam.ac.uk/~lester/gphoto2-fuse-fs). Ис-пользуя эту файловую систему, можно смонтировать в ре-жиме «только для чтения» фотокамеру и просматривать изображения. Для доступа к памяти в мобильных телефо-нах Siemens разработана файловая система SieFS (http://chaos.allsiemens.com/siefs), которая в настоящее время ра-ботает с телефонами 45, 55 и 65 серий.

Проблему доступа к данным и настройкам во время вы-полнения программы (что особенно актуально для встро-енных устройств) пытаются решить разработчики проекта RTA – Run Time Access (http://www.runtimeaccess.com), пред-ставляющего специализированный постоянно загруженный интерфейс к внутренним данным работающего приложения. Используя его, можно получить доступ ко всем структурам выполняющейся программы через Postgres-интерфейс, ин-формация которого теперь будет видна пользователю как таблицы базы данных или как дерево файловой системы. И теперь к ним можно получить доступ любым удобным спо-собом (консоль, веб-интерфейс, SNMP и др.).

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

$ ./mount.wayback ~/wayback/ /mnt/disk

fusermount: unable to open fuse device /proc/fs/fuse/dev: No such file or directory

# /sbin/rmmod fuse# ./mount.wayback ~/wayback/ /mnt/disk# mount | grep fuse

/proc/fs/fuse/dev on /mnt/disk type fuse (rw,nosuid,nodev)

# echo «test» > /mnt/disk/test# ls /mnt/disk/

test

# ls ~/wayback/

test test~. versionfs! version test. versionfs! version

# echo «test2» >> /mnt/disk/test # echo «test3» >> /mnt/disk/test # ls ~/wayback/

test ~test ~test. versionfs! version test~. versionfs! version test. versionfs! version

# ls -la /OPUSH /OPUSH/SE _ T630 /OPUSH/myPalm

# cp Þle.txt /OPUSH/myPalm

Page 46: 031 Системный Администратор 06 2005

44

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

В первой части статьи (см. «По-чему MS SQL медленно работа-ет? Ищем причины» – №5, 2005

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

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

бок, то вот с каким процессом и на ка-ких объектах случилось пересечение – непонятно. К счастью, в SQL Profiles вхо-дит великолепная возможность отсле-дить всю цепочку блокировок с помо-щью Locks\Lock:Deadlock Chain. Чтобы эффективно ею воспользоваться, мож-но построить следующий шаблон:

1. События:! Locks\Lock:Deadlock Chain! Locks\Lock:Deadlock! Security Audit\Audit Login! Security Audit\Audit Logout! Session\ExistingConnection

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

УСКОРЯЕМ MS SQL SERVER

ЮЛИЯ ШАБУНИО

Что может быть хуже сервера, который неизвестно из-за чего стал работать слишком

медленно? Только сервер, который работает слишком медленно по хорошо известной

и неустраняемой причине! Чтобы реже сталкиваться с такой ситуацией, рассмотрим методы

борьбы с причинами замедления работы Microsoft SQL Server.

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

2. Поля данных:! EventClass! SPID! StartTime! ObjectID (объект, на котором был

дедлок)

Page 47: 031 Системный Администратор 06 2005

45№6, июнь 2005

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

! IndexID (индекс, участвовавший в дедлоке)

! Mode! EventSubClass (в каком режиме бы-

ла попытка блокировки)! стандартные поля для определе-

ния смысла процесса – Application Name, NTUserName и так далее

! TextData

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

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

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

При анализе обратите внимание на то, что событие Deadlock Chain ре-ализуется одним и тем же процессом с маленьким номером. Это системный процесс, который следит за ошибками, но сам в них не участвует. Процессы-участники дедлока указываются в Text-Data события Deadlock Chain.

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

К сожалению, документирован только один из них – 1024, как раз и обозначающий сохранение информа-ции о дедлоке. Но нам нужен еще и -1

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

Мы закончили рассмотрение ме-тодов обнаружения проблем и при-ступаем к обсуждению способов их устранения.

Решаем проблемы производительностиИтак, вы нашли, в какой точке возника-ет проблема производительности и ка-кого она рода. Поздравляю! Вы сдела-ли 3/4 работы. Осталось совсем немно-го, всего лишь исправить ситуацию.

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

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

Используйте составныеиндексыMicrosoft SQL Server 7.0 не умел ис-пользовать в одном запросе два ин-декса на таблицу. Версия 2000 на это способна, но скорость выполнения за-

проса вас вряд ли обрадует. Поэтому, если какие-то два поля таблицы уча-ствуют в большинстве запросов, – не делайте два индекса по каждому из столбцов. Сделайте один составной! Составной индекс имеет еще и то пре-имущество, что если он содержит все нужные для запроса поля, то обраще-ние к таблице не понадобится. Зна-чит, можно избежать операции Book-mark Lookup (поиска страницы в базе по известному индексу), что позволя-ет увеличить скорость работы раза в два. Мне приходилось добавлять в со-ставной индекс поля, которые в индек-се, в общем-то, и не нужны, но позво-ляют избежать поиска по родитель-ской таблице.

Разделяйте часто и редко используемые данные кластерным индексомВыбирая кластерный индекс, имейте в виду, что именно он определяет фи-зический порядок записей таблицы на диске. Физический порядок определя-ет соседство записей на страницах, а те, в свою очередь, задают порядок загрузки и выгрузки страниц в память сервера. А это значит, что часто луч-шим кластерным индексом будет та-кой, который разделяет часто и ред-ко используемые записи. Давайте для примера рассмотрим таблицу заказов. Предположим, что у нас есть ClientID – идентификатор клиента и OrderDate – дата заказа. Пусть большая часть за-просов содержит условие на ClientID как точное равенство и условие на Or-derDate как диапазон. Рассмотрим си-туацию, в которой заказов в таблице очень много, но активно использует-ся только заказы за последнюю неде-лю, и в запросе чаще всего указывает-ся именно этот период. Классические рекомендации советуют выбрать ин-декс (ClientID, OrderDate). По первому полю будет происходить точное срав-нение, по второму – сканирование ди-апазона. Так бы и стоило поступить, не будь этот индекс кластерным. Если вы сделаете такой кластерный индекс, то заказы за последнюю неделю будут разбросаны по всей базе данных! За-грузка их всех в память просто невоз-можна, и каждый запрос к данным но-вого клиента приведёт к физическо-му (а не логическому) чтению. Если же вы используете в качестве кластерно-

DBCC TRACEON(1204, -1)

Page 48: 031 Системный Администратор 06 2005

46

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

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

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

Самый главный совет –не следуйте советамВ том числе и этому, да. Все советы да-ются для частных случаев, которые мо-гут никогда не сложиться в вашей базе данных. Проверяйте. Меняйте индек-сы, делайте запросы и следите за про-изводительностью. Анализ планов за-просов – это мощнейший инструмент, но даже он порой даёт сбои и непра-вильно оценивает стоимость различ-ных вариантов выполнения. Самый на-дёжный вариант – это в QA щелкнуть правой кнопкой в окне редактирова-ния, выбрать Current Connection Prop-erties, а там – галочки Set statistics time и Set statistics IO. И затем уже выпол-нить тестовый запрос. Уверяю вас, ес-ли время компиляции и выполнения

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

Управляем планами запросовЭта задача немного проще преды-дущей. Если нужный индекс на ба-зе данных уже есть, но MS SQL Serv-er им почему-то не пользуется, то до-вольно просто уговорить его это сде-лать. Стоп, не тянитесь писать with (index=<ИмяИндекса?>)! Это тоже ва-риант, но он нужен на крайний случай. Предлагаю вам свой список мер:

Выполните запрос dbcc freeproc-cache. Этот нехитрый запрос очища-ет кэш скомпилированных планов за-проса и даёт серверу возможность пе-рекомпилировать планы заново. Ес-ли сбой, нарушивший генерацию пла-на, был единичный, то новые алгорит-мы окажутся правильными, и система оживёт. Но если вам приходится часто использовать dbcc freeproccache, то будьте внимательны – это может быть последствием какого-то неблагополу-чия сервера в целом.

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

Используйте подсказки для MS SQL Server, оставаясь в рамках стан-дарта ANSI-SQL. Предположим, что сервер выбрал использование ин-декса по полю, которое кажется вам наименее подходящим в такой си-туации. Всё просто – в секции за-проса where пишите условие по это-му полю не в виде прямого равен-ства или диапазона (например, Na-me = ‘Иван’), а с помощью функции COALESCE(<Имя поля>, <Имя поля>). Например, coalesce(Name, Name) = ‘Иван’. Это совершенно корректно ма-тематически, но при этом проблемный индекс по указанному полю не может быть использован. Другой пример –

представьте, что у вас есть условие ти-па where @Number like Code + ‘%’. Если бы запрос был построен как Code like @Number + ‘%’, сервер сам догадался бы использовать индекс по Code. Но в нашем варианте Code используется в составе сложного выражения, и опти-мизатор пасует. Человеку же очевид-но, что @Number like Code + ‘%’ может быть верно только тогда, когда @Num-ber >= Code, так как у них одинаковые первые символы, но @Number длин-нее. Вот тут и имеет смысл добавить в условия @Number >= Code, так как оно не изменит логики и поможет сер-веру самостоятельно избрать нужный запрос.

Упростите запросы. Например, мне известны ситуации, в которых планы запросов сильно «плавали» при внеш-них соединениях (join) с представлени-ями (view), построенными на внешних соединениях.

И только если всё предыдущее не помогло, используйте подсказки MS SQL Server. Они порой дают велико-лепный непосредственный результат, но с ними необходимо проявлять осто-рожность – в другой ситуации, на дру-гих данных или с другой загрузкой вы-нужденный план запроса иногда силь-но деградирует.

Немного сложнее приходится, в си-туации если вас устраивают выбран-ные индексы, но не устраивают мето-ды и порядок слияния. MS SQL Server позволяет настраивать и эти момен-ты, но тут выбор возможностей очень ограничен. Вы можете сделать поря-док соединений жёстко зависящим от порядка их упоминания в запросе (force order), выбрать метод соедине-ния (loop|merge|hash join) или указать, что несколько строк в результирую-щем запросе вам нужны раньше дру-гих (FAST число строк). Будьте осто-рожны, выбирая соединение хэширо-ванием (hash join). Оно даёт порой по-трясающие результаты по произво-дительности, но всегда требует очень много памяти. И когда вашему серверу перестанет ее хватать, такие запросы не только заметно деградируют по ско-рости, но сильно замедлят работу в це-лом. И наоборот, если сервер работа-ет в состоянии нехватки оперативной памяти, изменение метода слияния с hash на loop может увеличить число ло-гических чтений, но при этом волшеб-

Page 49: 031 Системный Администратор 06 2005

47№6, июнь 2005

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

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

Как лечить блокировкиЛечение блокировок очень часто делает-ся командой kill. Что может быть проще: уничтожил головной процесс – и всё за-работало! Но у этого подхода есть и от-рицательные моменты. Первый – рас-пределённые блокировки склонны по-вторяться. Так что не исключено, что через некоторое время вы будете де-журить в офисе весь день и всю ночь и держать палец над кнопкой kill. Вто-рой – убивая головной процесс, мы теряем всю информацию о распреде-лённой блокировке. Впоследствии мы можем так никогда и не узнать, что же на самом деле произошло, и не смо-жем принять меры к тому, чтобы ситу-ация больше не повторялась. Третья причина – далеко не всегда уничтоже-ние головного процесса приведёт про-сто к перезапуску клиентского прило-жения. Иногда ценой вопроса являет-ся несколько дней работы целого под-разделения.

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

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

Повысить или понизить уровень гранулярности блокировок на каком-либо индексе или таблице можно с по-мощью процедуры sp_indexoption.

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

Снимаем дедлокиКак уже говорилось, дедлоки, завязан-ные на несколько объектов, снимают-ся довольно легко. Ведь такой дедлок означает, что к одним и тем же объек-там базы данных разные транзакции обращаются в разном порядке. Доста-точно установить один какой-то поря-док и проследить, чтобы он везде вы-полнялся. Если вы решили везде обра-щаться сначала к А, и только потом к Б, а необходимо сделать наоборот, то на-до просто установить сначала блоки-ровку на А, а потом можно работать с Б и снова с А в своё удовольствие. На-пример, это можно сделать так:

Менее понятно, что делать с дед-локами в рамках одной таблицы. Ча-сто они решаются четким указанием режима уровня блокировок (pagelock, например). Тогда сервер не будет по-вышать эту блокировку до таблично-го уровня без крайней необходимости. Возможно, что придётся поработать с индексами и планами запросов, при-водящих к взаимной блокировке. Ну и наконец, самый надёжный способ борьбы с дедлоками на уровне табли-цы – это подсказка with (tablock) или изменение режима блокировок с по-мощью sp_indexoption. Конечно, про-изводительность в этой ситуации мо-жет пострадать (а может и нет, зави-сит от конкретной БД). Но зато дедло-ков не будет наверняка.

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

declare @l tinyint select @l = 1 ↵ from A with (tablockx) ↵ where 1 = 2

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

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

Литература и ссылки:1. Дэн Тоу. Настройка SQL для про-

фессионалов (O’REILLY, «Питер», – 2004 г.). См. обзор в рубрике «Книж-ная полка» в журнале «Системный администратор», №3, 2005 г. Книга нравится мне тем, что представля-ет собой не перечень разных правил с неясными граничными условиями применения, а содержит очень чёт-кие алгоритмы.

2. Блокировки SQL Server 7.0/2000 – тео-рия и практика устранения проблем (По материалам статьи KB224453 Understanding and Resolving SQL Server 7.0 or 2000 Blocking Prob-lems): ht tp://www.sql.ru /ar ticles /mssql/2004/04112301ResolvingBlo-ckingProblems.shtml.

3. Иван Бодягин. Deadlocks. Что такое взаимоблокировки и как с ними бо-роться (http://www.rsdn.ru/article/db/deadlocks.xml) – подробный анализ причин возникновения дедлоков, ме-тоды диагностики и разрешения.

4. Полезные флаги трассировки SQL Server 7.0 и 2000 (по материалам статьи Randy Dyess «Documented and Undocumented Trace Flags for SQL Server 2000 and 7.0»): http://www.sql.ru/articles/mssql/02080603 DocumentedAndUndocumentedTra-ceFlagsForSQLServer.shtml.

5. Рассылка «MS SQL Server – дело тонкое...» – http://subscribe.ru/cata-log/comp.soft.winsoft.sqlhelpyouself.

6. Форум на сайте SQL.ru: http://www.sql.ru / forum /actual topics.aspx?bid=1.

Page 50: 031 Системный Администратор 06 2005

48

bugtraq

Целочисленное переполнениев небезопасной инициализации файлов в GDBПрограмма: GDB версии до 6.3-r3.Опасность: Низкая.Описание: Обнаруженные уязвимости позволяют локаль-ному пользователю выполнить произвольный код на целе-вой системе.

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

2. Локальный пользователь может с помощью специаль-но сформированного бинарника вызвать целочисленное пе-реполнение и повысить свои привилегии на системе.Решение: Установите последнюю версию от производи-теля.

Отказ в обслуживании при обработке DNS-сообщений в продуктах CiscoПрограмма: Cisco ATA 180 Series Analog Telephone Adap-tors: Cisco IP Phone 7900 Series, Cisco Unity Express 2.x, Cisco ACNS Software Version 4.x – 5.x, Cisco 500 Series Content En-gines, Cisco 7300 Series Content Engines, Cisco Content Rout-ers 4400 series, Cisco Content Distribution Manager 4600 se-ries, Cisco Content Engine Module for Cisco 2600, 2800, 3600, 3700 и 3800 series Integrated Service Routers.Опасность: Низкая.Описание: Уязвимость существует в реализации DNS во время декомпрессии сжатого DNS-сообщения. Удаленный пользователь может с помощью специально сформирован-ного DNS-пакета, содержащего некорректную информацию, вызвать отказ в обслуживании устройства.URL производителя: www.cisco.com.Решение: Установите исправление от производителя.

Удаленное выполнениепроизвольного кода в библиотеке Computer Associates VetПрограмма: CA InoculateIT 6.0 (all platforms including Notes/Exchange, CA eTrust Antivirus r6.0 all platforms including Notes/Exchange, CA eTrust Antivirus r7.0 all platforms including Notes/Exchange, CA eTrust Antivirus r7.1 all platforms including Notes/Exchange, CA eTrust Antivirus for the Gateway r7.0 all modules and platforms, CA eTrust Antivirus for the Gateway r7.1 all mod-ules and platforms, CA eTrust Secure Content Manager all releas-es, CA eTrust Intrusion Detection all releases, CA BrightStor ARC-serve Backup (BAB) r11.1 Windows, CA Vet Antivirus, Zonelabs ZoneAlarm Security Suite, Zonelabs ZoneAlarm Antivirus.Опасность: Критическая.Описание: Библиотека Computer Associates Vet обеспечи-вает возможность сканирования файлов на предмет об-наружения вирусов и позволяет антивирусным продуктам анализировать различные потоки в поисках злонамерен-ного ПО.

Переполнение кучи обнаружено при обработке OLE-по-токов. Успешная эксплуатация уязвимости позволит злоу-мышленнику получить полный контроль над системой.Решение: Установите обновление от производителя.

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

Удаленный административный доступв Symantec Brightmail AntiSpamПрограмма: Symantec Brightmail AntiSpam версии до 6.0.2.Опасность: Низкая.Описание: Уязвимость существует из-за того, что пароль на доступ к базе данных является статическим. Удален-ный пользователь может получить доступ к сообщениям, находящимся на карантине, и некоторой системной ин-формации.URL производителя: www.symantec.com.Решение: Установите последнюю версию от производи-теля.

Отказ в обслуживании в Nortel VPN Router при обработке IKE-пакетовПрограмма: Nortel VPN Router версии до 5.05.200; Mod-els 1010, 1050, 1100, 600, 1600, 1700, 1740, 2600, 2700, 4500, 4600 и 5000.Опасность: Средняя.Описание: Удаленный пользователь может послать марш-рутизатору один IKE-пакет со специально сформирован-ным ISAKMP-заголовком и вызвать отказ в обслуживании устройства.URL производителя: www.nortel.com.Решение: Установите последнюю версию от производи-теля.

Межсайтовый скриптинг и загрузка произвольных файлов в CuteNewsПрограмма: CuteNews все версии.Опасность: Высокая.Описание: Удаленный пользователь может произвести XSS-нападение и выполнить произвольные команды на целевой системе.

1. Уязвимость существует из-за некорректной обработ-ки данных в некоторых значениях URL. Удаленный пользо-ватель может внедрить произвольный HTML-сценарий и по-лучить файлы cookie, связанные с аутентификацией поль-зователя. Пример:

2. Авторизованный пользователь может загрузить и вы-полнить произвольный php-сценарий. Функция переимено-вания изображений не проверяет имя входящего и исходя-щего файлов, что делает возможным загрузить gif/jpg-файл с комментарием в виде php-кода () с последующей сменой расширения. Кроме того, отсутствие фильтрации символов обхода каталога («../») делает возможным загрузку злона-меренного файла на каталог выше относительно уязвимого скрипта при наличии соответственных прав доступаURL производителя: www.cutephp.com.Решение: Способов устранения уязвимости не существу-ет в настоящее время.

http://[target]/index.php?mod=editnews&action=editnews&id=[id]&source=<script>alert(document.cookie);</script>

Page 51: 031 Системный Администратор 06 2005

49№6, июнь 2005

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

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

Хранимые процедурыДанной функциональности, пожалуй, больше всего не хва-тало разработчикам. Смысл применения хранимых проце-дур (stored procedures) и функций – сохранять на сервере скомпилированные блоки SQL-кода. После единожды на-писанной, отлаженной и скомпилированной процедуры или функции, её можно вызывать из вашего приложения, пере-давая на сервер вместо обычного запроса, только вызов процедуры и аргументы. При этом не только снижаются за-траты на трафик и повышается производительность. Глав-ное преимущество состоит в том, что бизнес-логика прило-жения, возложенная на базу данных, становится прозрач-ней и переносимей.

Как процедуры, так и функции могут возвращать зна-чения (в виде набора записей). Различие состоит в том, что функция вызывается из запроса, а процедура из от-дельной команды.

На настоящий момент реализация хранимых процедур не поддерживает никаких внешних языков, но (по крайней

«Просто набор индексированных файлов!», «недо-база дан-ных» – такие слова в адрес СУБД MySQL нередко можно найти на форумах разработчиков. И приходится признать – они имели под собой основание. MySQL при всех её досто-инствах (нетребовательность к ресурсам, быстродействие, высокая производительность, на простых запросах, низкая стоимость владения) имела очевидные недостатки. Отсут-ствовали элементарные средства контроля целостности дан-ных, не было механизма транзакций, да что там, не было да-же вложенных запросов, а о хранимых процедурах и тригге-рах приходилось только мечтать.

Положение изменилось с выходом версий 4.0 и 4.1. По-мимо вышеупомянутых вложенных запросов и транзакций было осуществлено ещё множество нововведений. Появи-лась возможность задания кодировок на уровне базы дан-ных, таблиц и столбцов, поддержка Unicode (utf8 и ucs2), включён геометрический тип данных – GIS, введёно поня-тие «подготовленных выражений» (prepared statements).

С выходом MySQL 5 нас ждут ещё более радикальные изменения. Разработчики из MySQL AB установили до-вольно высокую планку – вплотную приблизиться к стан-дарту SQL:2003. Большая часть новых возможностей уже

MySQL 5 – ЧТО НОВОГО ПРЕДЛАГАЮТНАМ РАЗРАБОТЧИКИ?

10 лет, с 1995 года, нас критиковали за отсутствие возможностей, присущих «настоящим» СУБД. Пятой

версией мы ответили на все вопросы сразу.

Дэвид Аксмарк, один из основателей MySQL

На лето запланирован выход новой, пятой версии популярнейшего сервера баз данных – MySQL.

Как правило, смена первой цифры в номере версии означает довольно радикальные перемены.

Это удивительно – возможности четвёртой ветки, появившейся чуть более года назад, освоены

и приняты ещё далеко не всеми разработчиками. И тем не менее уже сейчас MySQL 5 доступна

для тестирования в виде бета-версии. Что действительно нового предлагают её создатели?

КИРИЛЛ СУХОВ

Page 52: 031 Системный Администратор 06 2005

50

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

мере, так заявляется) соответствует стандарту SQL:2003, позволяющему применять условные конструкции, итера-ции и обработку ошибок.

Пример создания хранимой процедуры в MySQL 5:

В данном случае мы создали процедуру с именем p, ко-торая возвращает текущую дату и псевдослучайное чис-ло из таблицы t. Пример ее вызова и возвращаемого ре-зультата:

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

В приложении:

Разумеется эфективность применения хранимых поро-

цедур существенно возрастает при вызове их с параметра-ми (аргументами). Ниже дан пример процедуры с обработ-кой переданых ей параметров:

Вызов процедуры теперь будет таким:

и в результате запроса мы получим:

Кроме условных, возможны и любые циклические кон-струкции:

Вызов процедуры:

Также применимы итерации, переходы, словом, всё, что предполагает стандарт.

Внутри функций и хранимых процедур осуществлена реализация курсоров, но, к сожалению, она пока ограни-чена (ASESITIVE, READ ONLY и NONSCROLL):

ТриггерыТриггеры похожи на хранимые процедуры. Это тоже скомпи-лированные SQL-запросы, хранимые на сервере. Отличие со-стоит в том, что триггер начинает работать в ответ на опреде-лённое событие, а именно на запросы UPDATE и DELETE.

Пример создания и работы триггера:

CREATE PROCEDURE p () LANGUAGE SQL NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT 'A Procedure' <-- SELECT CURRENT _ DATE, RAND() FROM t

CREATE FUNCTION factorial (n DECIMAL(3,0)) RETURNS DECIMAL(20,0) DETERMINISTIC BEGIN DECLARE factorial DECIMAL(20,0) DEFAULT 1; DECLARE counter DECIMAL(3,0); SET counter = n; factorial _ loop: REPEAT SET factorial = factorial * counter; SET counter = counter - 1; UNTIL counter = 1 END REPEAT; RETURN factorial; END

INSERT INTO t VALUES (factorial(pi)) SELECT s1, factorial (s1) FROM t UPDATE t SET s1 = factorial(s1) WHERE factorial(s1) < 5

CREATE PROCEDURE p25 (OUT return _ val INT) BEGIN DECLARE a,b INT; DECLARE cur _ 1 CURSOR FOR SELECT s1 FROM t; DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1; OPEN cur _ 1; REPEAT FETCH cur _ 1 INTO a; UNTIL b = 1 END REPEAT; CLOSE cur _ 1; SET return _ val = a; END;

CREATE TABLE t22 (s1 INTEGER)

CREATE TRIGGER t22 _ bi BEFORE INSERT ON t22

mysql> call p2()

+--------------+-----------------+ | CURRENT_DATE | RAND() | +--------------+-----------------+ | 2005-06-27 | 0.7822275075896 | +--------------+-----------------+ 1 row in set (0.26 sec) Query OK, 0 rows affected (0.26 sec)

CREATE PROCEDURE p1 (IN parameter1 INT) BEGIN DECLARE variable1 INT; SET variable1 = parameter1 + 1; IF variable1 = 0 THEN INSERT INTO t VALUES (17); END IF; IF parameter1 = 0 THEN UPDATE t SET s1 = s1 + 1; <-- ELSE UPDATE t SET s1 = s1 + 2; END IF; END;

mysql> CALL p2(0) // Query OK, 2 rows affected (0.28 sec)

mysql> SELECT * FROM t

+----+ | s1 | +----+ | 6 | | 6 | +------+ 2 rows in set (0.01 sec)

CREATE PROCEDURE p3 () BEGIN DECLARE v INT; SET v = 0; WHILE v < 5 DO INSERT INTO t VALUES (v); SET v = v + 1; END WHILE; END;

mysql> CALL p3()

+------+ | s1 | +------+…………

| 0 | | 1 | | 2 | | 3 | | 4 |+------+Query OK, 1 row affected (0.00 sec)

Page 53: 031 Системный Администратор 06 2005

51№6, июнь 2005

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

После этого при выполнении запросов получим:

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

ПредставленияПредставления (views) можно сравнить с временными табли-цами, наполненными динамически формируемым содержи-мым. В общем-то, неименованные представления (те самые вложенные запросы) были доступны ещё в версии 4.1. В на-стоящей реализации есть две возможности создания пред-ставлений: с использованием алгоритма временных таблиц MySQL и с созданием самостоятельной таблицы. Нас инте-ресует именно второй способ (первый был реализован, ско-рее всего, исходя из соображений совместимости и унифи-кации). Такие представления позволяют значительно сни-зить объём кода, в котором часто повторялись простые объ-единения таблиц. К ним (после создания) применимы любые запросы, возвращающие результат в виде набора строк. То есть команды SELECT, UPDATE, DELETE, можно применять так же, как и к реальным таблицам. Важно и то, что посред-ством представлений можно более гибко распоряжаться пра-вами пользователей базы данных, так как в этом случае есть возможность предоставлять доступ на уровне отдельных за-писей различных таблиц. Пример создания и работы простей-шего (и потому абсолютно бесполезного) представления:

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

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

В новой версии СУБД появилась новая служебная ба-за данных – INFORMATION_SCHEMA. Её наличие продик-товано тем же стандартом SQL:2003, и именно она реша-ет задачу реализации словаря данных (data dictionary). IN-FORMATION_SCHEMA содержит таблицы, описывающие состояние и параметры сервера, в том числе определения и сущности таблиц. Это виртуальная база данных – физи-чески (в виде файлов на диске) она не существует, вся ин-формация динамически предоставляется сервером. При-мер использования этой таблицы:

Другой пример работы со словарём данных – просмотр привелегий:

ЗаключениеТемп, взятый командой MySQL AB два года назад, впечатляет. Полным ходом идёт работа над MySQL 5.1, в которой планиру-ется осуществить такие возможности, как поддержка внеш-них ключей (foreign key) для всех типов таблиц (в настоящий момент она существует только для таблиц InnoDB), новые схе-мы репликации (online backup) и кэширования таблиц и мно-гое другое. Более того, в разделе официального руководства по MySQL (MySQL Reference Manual), озаглавленном «Что не планируется реализовать?», прямо сказано, что таких за-дач просто нет – реализовать планируется всё! Существует, правда, мнение, что новые возможности MySQL нивелируют её основные преимущества, такие как быстродействие, про-стота и нетребовательность к ресурсам. Возможно, в чём-то критики и правы, но пока разработчикам удавалось этого из-бежать. Будем, надеяться, что удастся и далее.

mysql> CREATE VIEW v AS SELECT column1 FROM t;

mysql> INSERT INTO v VALUES (1);

mysql> SELECT * FROM v;

Query OK, 0 rows affected (0.01 sec)

Query OK, 1 row affected (0.00 sec)

+---------+ | column1 | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)

mysql> SELECT table _ name, table _ type, engine -> FROM INFORMATION _ SCHEMA.tables -> WHERE table _ schema = �tp� -> ORDER BY table _ type ASC, table _ name DESC;

+------------+------------+--------+| table_name | table_type | engine |+------------+------------+--------+| t2 | BASE TABLE | MyISAM || t1 | BASE TABLE | InnoDB || v1 | VIEW | NULL |+------------+------------+--------+

mysql> SELECT * FROM -> INFORMATION _ SCHEMA.COLUMN _ PRIVILEGES\G

************************ 1. row ************************ GRANTEE: 'peter'@'%' TABLE_CATALOG: NULL TABLE_SCHEMA: tp TABLE_NAME: t1 COLUMN_NAME: col1 PRIVILEGE_TYPE: UPDATE IS_GRANTABLE: NO ************************ 2. row ************************ GRANTEE: 'trudy'@'%' TABLE_CATALOG: NULL TABLE_SCHEMA: tp TABLE_NAME: t2 COLUMN_NAME: col1 PRIVILEGE_TYPE: SELECT IS_GRANTABLE: YES

FOR EACH ROW BEGIN SET @x = �Trigger was activated!�; SET NEW.s1 = 55; END;

mysql> INSERT INTO t22 VALUES (1)mysql> SELECT @x, t22.* FROM t22 // вызывается триггер

+------------------------+------+ | @x | s1 | +------------------------+------+ | Trigger was activated! | 55 | +------------------------+------+ 1 row in set (0.00 sec)

Page 54: 031 Системный Администратор 06 2005

52

bugtraq

Межсайтовый скриптинг в Sambar ServerПрограмма: Sambar Server 6.2Опасность: Низкая.Описание: Уязвимость существует из-за недостаточной фильтрации некоторых входных данных. Удаленный поль-зователь может с помощью специально сформированного URL выполнить произвольный HTML-сценарий в браузере жертвы в контексте безопасности уязвимого сайта.URL производителя: http://www.sambar.com.Решение: Установите последнюю версию (6.2.1) с сайта производителя.

Переполнение буфера в MeteorFTP-сервереПрограмма: Meteor FTP Server 1.5Опасность: Высокая.Описание: Переполнение буфера обнаружено при обра-ботке команд USER, PASS и PORT. Удаленный пользова-тель может с помощью специально сформированных ко-манд вызвать переполнение буфера и вызвать отказ в об-служивании или выполнить произвольный код на целевой системе. Пример:

Решение: Способов устранения уязвимости не существу-ет в настоящее время.

USER (A x 80) (Following 4 Bytes = New Return Point)PASS 0wn3rPORT 127,0,0,1,18,12 (Must be same as connecting IP)

Переполнение буфера и обход каталога в FutureSoft TFTP Server 2000Программа: FutureSoft TFTP Server 2000 версия 1.0.0.1.Опасность: Критическая.Описание: Обнаруженные уязвимости позволяют удален-ному пользователю получить доступ к потенциально важ-ным данным и скомпрометировать систему.

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

2. Отсутствует фильтрация символов обхода каталога. Удаленный пользователь может выйти за пределы корне-вого каталога TFTP-сервера и получить доступ к потенци-ально важным данным на целевой системе.Решение: Способов устранения уязвимости не существу-ет в настоящее время.

Поднятие локальных привилегийв Антивирусе КасперскогоПрограмма: Антивирус Касперского версии 5.0.227, 5.0.228 и 5.0.335 для Windows 2000.Опасность: Низкая.

Описание: Программа не снимает бит Супервизора со стра-нички драйвера klif.sys. В результате уязвимость позволя-ет локальному пользователю подгрузить динамическую би-блиотеку, которая будет выполнена в адресном простран-стве процесса с высоким уровнем привилегий.URL производителя: www.kaspersky.ru.Решение: Способов устранения уязвимости не существу-ет в настоящее время.

Отказ в обслуживании в MicrosoftISA Server 2000Программа: Microsoft ISA Server 2000 SP2; Wspsrv.exe вер-сии до 3.0.1200.411.Опасность: Средняя.Описание: Уязвимость существует, когда клиентские рабо-чие станции являются SecureNAT-клиентами для ISA-серве-ра. Большое количество трафика, генерируемого клиента-ми, может вызвать отказ в обслуживании ISA-сервера.URL производителя: www.microsoft.com.Решение: Установите исправление от производителя: http://support.microsoft.com/kb/894864/EN-US.

Переполнение буфера в IBM WebSphere Application ServerПрограмма: IBM WebSphere Application Server 5.0.Опасность: Высокая.Описание: Два переполнения буфера существуют в адми-нистративной консоли сервера при обработке данных в ко-дировке Unicode при включенной опции ‘global security op-tion’. Удаленный пользователь может послать специаль-но сформированные данные на порты 9080 (HTTP), 9090 (HTTP) и 9043 (HTTPS) приложения, чтобы вызвать пере-полнение буфера и выполнить произвольный код на целе-вой системе.URL производителя: www.ibm.com.Решение: Установите последнюю версию (5.0.2.11) с сай-та производителя.

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

Отравление DNS-кеша и установка NetBIOS-подключения в Microsoft Internet Security and Acceleration (ISA) ServerПрограмма: Microsoft Internet Security and Acceleration (ISA) Server.Опасность: Низкая.Описание: Две уязвимости обнаружены в Microsoft Internet Security and Acceleration (ISA) Server. Удаленный пользова-тель может отравить кеш. Удаленный пользователь может также установить NetBIOS-подключение к ISA Server.

Сервер с ошибками обрабатывает HTTP-заголовки. Уда-ленный пользователь может представить специально сфор-мированный HTTP-запрос, содержащий множество Content-Length-заголовков, чтобы отравить кеш целевого ISA serv-er [CVE: CAN-2005-1215]. В результате возможно получить доступ к содержанию, которое блокируется сервером, или заставить целевого пользователя посетить просмотреть произвольную информацию.

Удаленный пользователь может использовать все пред-установленные NetBIOS-фильтры, чтобы установить Net-BIOS-подключение к целевому ISA Server [CVE: CAN-20-05-1216].URL производителя: www.microsoft.com.Решение: Установите соответствующее обновление.

Page 55: 031 Системный Администратор 06 2005

53№6, июнь 2005

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

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

роль. Не возвращаться же из-за этого в офис? А заходить на сервер с машины клиента достаточно опасно – кто зна-ет, какие «шпионы» там установлены? Конечно, решить эту проблему можно несколькими способами. Например,

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

FreeBSD TIPS: ПОВЫШАЕМ БЕЗОПАСНОСТЬС ПОМОЩЬЮ ОДНОРАЗОВЫХ ПАРОЛЕЙ

Одним из «узких мест» в плане защиты информации является использование системного

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

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

СЕРГЕЙ СУПРУНОВ

Page 56: 031 Системный Администратор 06 2005

54

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

Система FreeBSD предоставляет еще один удобный ин-струмент – одноразовые пароли. Начиная с FreeBSD 5-й версии, они реализуются системой OPIE (One-time Pass-words In Everything), основанной на S/Key. Замечу, что OPIE существует и в большинстве дистрибутивов Linux, так что все описанное вы можете применить в этих системах. Од-нако для конкретизации изложения я буду описывать имен-но реализацию OPIE на FreeBSD 5.3.

В чем заключается идеяВ общих чертах это выглядит следующим образом: при по-пытке войти на сервер после ввода имени пользователя вы получаете строку-оклик, содержащую номер итерации и некоторую последовательность символов – так называ-емое «зерно» (seed):

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

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

Если в ответ на первое приглашение «Password:» про-сто нажать <Enter>, то появится еще одно, с включенным эхо-отображением вводимых символов, что позволит вам видеть вводимый текст на экране.

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

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

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

Новая запись создается следующей командой:

Ключ -c дает команду создать запись для пользовате-ля, в данном случае это пользователь test. Если имя поль-зователя не указано, создается (или изменяется) запись для текущего пользователя. Обычный пользователь мо-жет управлять своей записью, root – записями всех поль-зователей.

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

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

В конце работы утилита выдает текущие номер после-довательности (по умолчанию – 499) и слово-«зерно», в данном примере – ko6010. Запоминать эти значения не нуж-но – они будут выводиться на экран при каждой попытке войти в систему. Последней строкой выводится парольная фраза, которая к данному моменту уже бесполезна и слу-жит только для проверки, – следующий номер последова-тельности устанавливается в 498.

Обратите внимание, что как только счетчик достигнет 0, вход в систему станет невозможным. Поэтому необходи-мо заблаговременно осуществлять повторную инициали-зацию записи в /etc/opiekeys, для чего используется opie-passwd без ключей. Также с помощью ключа -n вы може-те задать начальное значение счетчика. Замечу, что пере-инициализация выполняется без запроса секретной фра-зы (она остается прежней). Используются только однора-зовые пароли, так что повторная инициализация может быть выполнена и удаленно, с использованием небезопас-ного соединения.

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

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

login as: sergotp-md5 496 ko5622 extPassword:

root# opiepasswd -c test

Adding test:Only use this method from the console; NEVER from remote.If you are using telnet, xterm, or a dial-in, type ^C now or exitwith no password.Then run opiepasswd without the -c parameter.Using MD5 to compute responses.Enter new secret pass phrase:Again new secret pass phrase:

ID test OTP key is 499 ko6010RACE DAYS CHEF ARE CAW LEAF

Secret pass phrases must be between 10 and 127 characters long.

Page 57: 031 Системный Администратор 06 2005

55№6, июнь 2005

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

Следующая утилита, которая может быть полезна, – opieinfo. Она возвращает текущие значения номера после-довательности и «зерна» для пользователя. Например, ее можно использовать, перед тем как генерировать пароли.

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

Теперь эти пароли можно аккуратно сохранить в на-дежное место и ехать с ними в командировку или к кли-енту – средство для пяти безопасных входов в систему у вас есть.

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

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

Для определения возможных способов доступа исполь-зуется файл /etc/opieaccess. По умолчанию, как только для пользователя появляется запись в /etc/opiekeys, он уже не может пользоваться системным паролем.

Чтобы разрешить вход по обоим паролям, нужно в opie-access создать запись типа permit для нужных адресов. На-пример, чтобы разрешить вход под системным паролем из локальной сети, а для внешних соединений оставить только «опики», можно использовать следующую строку:

Закомментированная строка разрешит использование обоих типов паролей с любого адреса. Правило deny по-зволяет явно запретить использование системного паро-ля для указанной подсети.

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

options ndots:3

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

Более тонко процедуру входа в систему можно опре-делить в настройках PAM (см. /etc/pam.d/system и прочие файлы). Нужно заметить, что не все приложения могут ра-ботать с одноразовыми паролями. Например, во FreeBSD утилиты login, su, ssh, telnetd поддерживают аутентифика-цию OPIE, popper – нет (но если вход с системным паролем разрешен, проблем с использованием этой программы не возникает). По умолчанию, если поддержка OPIE каким-то сервисом имеется, в соответствующем файле каталога /etc/pam.d будет присутствовать pam_opie.so.

Попытка аутентификации на FTP-сервере (FreeBSD 5.3, стандартный ftpd) с одноразовым паролем выявила инте-ресную проблему – с помощью клиента ftp вход по «опику» выполнялся нормально, а вот попытка войти под системным паролем (например, с использованием менеджера FAR) за-вершалась неудачей, хотя настройки позволяли использо-вание системного пароля. Разбор полета показал, что про-блема заключается в разрешении имен. Происходило сле-дующее – в процессе установки соединения IP-адрес кли-ента преобразовывался в доменное имя типа client.domain.provider.ru, которое обрезалось до client.domain, после чего система пыталась определить IP-адрес этого «хоста», что-бы установить права на вход с системным паролем в со-ответствии с /etc/opieaccess. Это, естественно, не получа-лось, и возвращалась ошибка «Неизвестный хост client.do-main». Если же вход на сервер FTP выполнялся с машины, адрес которой не присутствует в базе DNS, то все работа-ло отлично. Вылечить это удалось добавлением следую-щей строчки в /etc/resolv.conf:

Эта строка заставляет функции разрешения имен (см. man resolver) возвращать в качестве доменного имени часть имени хоста до третьей точки, то есть целиком. По умол-чанию параметр ndots равен 1, что и приводило к описан-ной выше ситуации. Во FreeBSD 5.4 данная проблема уже не наблюдается.

В заключение замечу, что на моей системе права досту-па к файлу /etc/opiekeys по умолчанию были установлены в rw-r--r--, что позволяло читать его абсолютно всем. Посколь-ку данный файл хранит, хоть и в зашифрованном виде, клю-чевую фразу, которая используется при генерации однора-зовых паролей, то такой либеральный доступ к нему выгля-дит не самой лучшей идеей. Возможно, это необходимо для работы некоторых утилит, но в моем случае после установки прав в rw------- никаких проблем пока не обнаружилось.

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

serg$ opieinfo

498 ko5623

serg$ opiekey -n 5 498 ko5623

Using the MD5 algorithm to compute response.Reminder: Don't use opiekey from telnet or dial-in sessions.Enter secret pass phrase:494: LOOK RUSH WIFE BREW ROBE LAM495: TERN MOCK MA LED PA MELD496: NIL FALL AKIN FUSE MIND SLUR497: GINA MOP AKIN SHAW CALF COMA498: FLY GONE GAB MYRA WONT SANK

permit 192.168.0.0 255.255.255.0# permit 0.0.0.0 0.0.0.0

Page 58: 031 Системный Администратор 06 2005

56

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

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

больше компьютеров входят в кластер, тем выше его вы-числительная мощность. Наиболее распространненные си-стемы кластерных вычислений на сегодня – Parallel Virtual Machine и Message Passing Interface. Обе позволяют пользо-вателю, в данном случае разработчику программ, пересы-лать куски данных, нуждающихся в обработке, между узла-ми кластера и синхронизировать получение результатов с разных узлов. Это фасад системы. За кулисами происхо-дит обращение к удаленному командному интерпретатору и вызов определенных программ в нем. То есть администра-тору такой системы необходимо добиться, чтобы пользо-ватели кластера имели доступ к командному интерпрета-тору на узлах кластера и, более того, этот доступ должен быть беспарольным для каждой пары компьютеров в кла-стере. Не очень-то удобна система, где запуск нескольких параллельных копий программы требует от пользователя регистрации на каждом из узлов кластера.

Таким образом, во-первых, информация о пользовате-лях должна совпадать на всех этих компьютерах. Один из вариантов решения – иметь одинаковые копии /etc/passwd и /etc/shadow на каждом из узлов с их последующим обнов-лением с помощью скриптов при добавлении нового пользо-вателя. Во-вторых, если в качестве удаленного командного интерпретатора используется rsh, то добиться беспароль-ного входа с помощью внесения всех компьютеров, входя-щих в этот кластер, в файл /etc/hosts.equiv (этот файл так-же должен совпадать на всех узлах кластера). Однако ис-пользование rsh гарантирует вам проблемы с безопаснос-тью, если предположить возможность доступа к кластеру извне локальной сети, который, как вы помните, должен быть беспарольным. Можно сконфигурировать доступ по адресу компьютера (с помощью tcp-wrappers) и бороться с ip-spoofing внешними средствами или настраивать openssh в качестве удаленного командного интерпретатора. В по-следнем случае вам придется мириться с тем, что процес-сорные циклы будут расходоваться не на расчет, а на коди-рование/раскодирование блоков данных. Тем не менее ни одно из этих решений нельзя считать удачным.

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

настройками вычислительных кластеров. Но именно эта проблема построения распределенной вычислительной системы Athena заставила в начале 80-х годов програм-мистов из Массачусетского технологического института разработать и внедрить протокол удаленной аутентифи-кации пользователей. Комбинирование специальных крип-тографических средств позволяло, с одной стороны, све-сти на нет вероятность перехвата паролей и иметь шиф-рованный канал для передачи данных между компьютера-ми (эта возможность могла отключаться по желанию поль-зователя). А с другой – иметь систему с единой регистра-цией (single sign-on), что дает возможность пользователю регистрироваться один раз при входе в систему и в даль-нейшем иметь свободный доступ к сетевым ресурсам на основе этой регистрации.

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

Kerberos с точки зрения пользователяНа пользовательском уровне все реализации Kerberos вы-глядят однотипно, поэтому рассмотрим, как это происходит в моем случае. Регистрация в Kerberos осуществляется ко-мандой kinit, которая автоматически вызывается при моем входе на рабочую станцию под управлением Windows XP. В результате мне выдается основной документ, удостоверя-ющий мою личность в Kerberos, – «супербилет», билет, га-рантирующий получение доступа к сетевым службам (или TGT – ticket granting ticket). При этом у меня всегда есть воз-можность зарегистрироваться в Kerberos под другим име-нем с помощью все той же команды kinit, что приводит к об-новлению начального билета. Теперь предположим, что я хочу посмотреть логи на своем router/firewall под управле-нием Linux. Я открываю терминал cygwin. Первое, что мож-но сделать, – просмотреть имеющиеся билетики:

МИХАИЛ КОНДРИН

mike@alex ~\$ klist

ИЗУЧАЕМ ПРИНЦИП РАБОТЫНЕIMDAL KERBEROS

Как только ваша подконтрольная локальная сеть начнет развиваться и расширяться,

возникнут новые задачи: Как синхронизировать системные учетные записи растущего числа

пользователей? Как управлять доступом пользователей к сетевым сервисам внутри локальной

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

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

введение единой системы регистрации в локальной сети с помощью протокола Kerberos.

Page 59: 031 Системный Администратор 06 2005

57№6, июнь 2005

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

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

Точно так же я могу получить доступ к любому сетевому сервису – например, к локальному ftp-серверу.

Заметьте, что во всех случаях мне не потребовался ввод пароля. Доступ ко всем компьютерам мне предоставлялся на основании моего TGT. Все операции c Kerberos (выдача билетов, добавление/удаление пользователей и т. д.) фик-сируются в его логах, и можете убедиться, что вся моя ак-

В списке, как вы видите, имеется только один билет – тот самый TGT. Credential Cache – это файл, в котором хра-нятся полученные мной сертификаты. По умолчанию его название – это комбинация /tmp/krb5cc_ и id пользовате-ля. Срок действия любого билетика ограничен по време-ни – это снижает интерес к его перехвату со стороны зло-умышленника. Теперь я запускаю командный интерпрета-тор на удаленном компьютере:

Вот пример магии Kerberos в действии – воспользовав-шись моим супербилетом, Kerberos прозрачно для пользо-вателя организует доступ к сетевому ресурсу (в данном слу-чае он фигурирует под именем host/[email protected]) и более того – telnet при помощи Kerberos ав-томатически шифрует весь сетевой трафик между клиентом и сервером. Список билетов при этом не меняется – ключ -F позволяет перемещать имеющиеся у меня билетики с ком-пьютера на компьютер. Закрытие telnet-сессии автоматиче-

Credentials cache: FILE:/tmp/krb5cc_1017 Principal: [email protected]

Issued Expires Principal May 29 22:18:22 May 30 22:18:22 krbtgt/[email protected]

\$ telnet -F relay

Trying 192.168.1.254...Connected to relay.hppi.troitsk.ru.Escape character is '^]'.Waiting for encryption to be negotiated...[ Trying mutual KERBEROS5 (host/[email protected])... ][ Kerberos V5 accepts you as ``[email protected]'' ][ Kerberos V5 accepted forwarded credentials ]Encryption negotiated.

\$klist

Credentials cache: FILE:/tmp/krb5cc_1000 Principal: [email protected] Issued Expires Principal May 29 22:21:16 May 30 22:18:22 krbtgt/[email protected]

История создания KerberosВ 1983 году была начата работа по созданию системы Athe-na. Работу финансировали компании IBM и DEC, и в 1987 го-ду была выпущена первая версия протокола Kerberos (Kerbe-ros 4). Дальнейшая эксплуатация выявила недостатки про-токола, и обновленный вариант Kerberos 5 вышел в свет в 1993 году. В настоящее время 4 версия практически не ис-пользуется, но в реализациях протокола от МТИ совмести-мость с предыдущей версией продолжает сохраняться. К 1993 году протокол Kerberos уже завоевал популярность, и многие компании, разработчики программного обеспечения стремились использовать его в своих программных продук-тах. Но тут имел место юридический казус – дело в том, что в то время в США еще действовали законы, введенные еще во время холодной войны, запрещающие экспорт военных технологий. Поскольку криптографическая защита, исполь-зованная в Kerberos, классифицировалась как военная тех-нология, это создавало препятствия для использования его в программных продуктах сторонних фирм и распростране-ния его за пределами США. Для решения этой проблемы бы-ла выпущена версия протокола Kerberos 4, из которого бы-ла изъята вся сильная криптография. Эта реализация Kerb-eros получила название Bones (кости), и ограничения на ее

экспорт уже не действовали. В 1997 году группа програм-мистов из Стокгольмского Королевского университета, взяв за основу Bones, проделала обратную работу и вставила не-достающую криптографическую функциональность. Вот так экспортные ограничения Соединенных Штатов способство-вали развитию европейского hi-tech. Впоследствии ими же была выпущена реализация протокола Kerberos 5, получив-шая название Heimdal. Heimdal (Хеймдалль) – это божество из скандинавского пантеона, чьи функции состояли в охра-не стратегических коммуникаций, а именно – моста, разде-ляющего Асгард и Мидгард. Так же, как и в случае с древ-негреческим прототипом Kerberos, здесь эксплуатируется образ неподкупного стража. Интересно отметить, что мо-тивом для программистов из Стокгольмского университе-та, так же как и для их коллег из МТИ, являлась задача обе-спечения публичного доступа к вычислительному класте-ру. Последним эпизодом из истории Kerberos стало объяв-ление компанией Microsoft в 1999 году о поддержке Kerber-os в своей будущей операционной системе NT 5.0 (впослед-ствии названной Windows 2000), что действительно было ре-ализовано в качестве компонента Active Directory. В насто-ящее время Kerberos является промышленным стандартом удаленной аутентификации пользователей.

\$telnet -F kenga

Trying 192.168.1.253...Connected to kenga.hppi.troitsk.ru.Escape character is '^]'.Waiting for encryption to be negotiated...[ Trying mutual KERBEROS5 (host/[email protected])... ][ Kerberos V5 accepts you as ``[email protected]'' ][ Kerberos V5 accepted forwarded credentials ]Encryption negotiated.mike@kenga:~\$

mike@kenga:~\$ ftp kenga

Connected to kenga.hppi.troitsk.ru.220 kenga FTP server (Version 6.00+Heimdal 0.6.3) ready.Trying GSSAPI...Authenticated to <host/[email protected]>Authentication successful.

Name (kenga:mike): S:232-Linux 2.4.25.S:232 User mike logged in.S:230 Password not necessaryRemote system type is UNIX.Using binary mode to transfer files.ftp> byeS:221 Goodbye.

Page 60: 031 Системный Администратор 06 2005

58

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

тивность с перемещениями от компьютера к компьютеру зафиксирована в файле /var/log/krb5kdc.log. Для удобства я разделил кусок log-файла на 4 части, соответствующие процессам получения доступа к моей рабочей станции, уда-ленного доступа к двум серверам и серверу ftp.

Вы можете сказать: «Как же так – протоколы telnet и ftp небезопасны и правильнее использовать openssh. И ничего удивительного в беспарольной аутентификации нет – ту же самую функциональность обеспечивает ssh, предоставляя возможность регистрироваться по парам публичных/секрет-ных ключей». Все правильно. Только для того, чтобы в сети из N компьютеров обеспечить доступ по ssh с любого из этих компьютеров на любой другой, вам придется в общем случае проделать 2N*{число пользователей} перемещений публич-ных ключей (каждая пара компьютеров в сети обменивается публичными ключами пользователей), что в случае больших сетей трудноосуществимо. В то же время с помощью Kerbe-ros вам нужно только зарегистрировать каждый из компью-теров на сервере Kerberos и иметь один ключ на каждом из хостов (в отличие от ssh в Kerberos используется симметрич-ное шифрование) – итого 2N операций. Что же касается пер-вой части вопроса, то я использую специальный «кербери-зованный» вариант telnet, что защищает соединения между хостами не хуже, чем ssh. Главный недостаток стандартно-го telnet (и не только его) состоит в том, что при аутентифи-кации на удаленном компьютере telnet пересылает пароль пользователя по сети в виде открытого текста, что позволя-ет злоумышленнику перехватить его. Ssh обходит эту опас-ность с помощью несимметричного шифрования пароля. А каким же образом Kerberos удается избегать брешей в за-щите связанных с удаленной аутентификацией?

Удаленная аутентификация в KerberosДелается это с помощью уже упоминавшихся ранее биле-тиков/сертификатов (tickets/credentials – оба слова исполь-зуются как синонимы) – специальным образом изготовлен-

ных и упакованных шифровальных ключей. В Kerberos как пользователь, так и сетевая служба не различаются меж-ду собой и именуются principal (принципал – юридический термин, означающий лицо, поручающее агенту совершить сделку от его имени), что весьма точно описывает функции принципалов в Kerberos. Принципалы определяются своим именем и паролем, причем в случае сетевой службы в ка-честве этого пароля выступает ключ, хранящийся на том же компьютере, где работает защищаемый сервис. База данных принципалов хранится на сервере Kerberos, и при необходи-мости проверить аутентичность пользователя или сервиса, компьютеры, объединенные в сектора (realms), соединяются с этим сервером. По поводу терминологии: точный перевод «realm» («царство») применительно к Kerberos не прижился, а иногда используемый термин «домен» не кажется мне удач-ным, поскольку слово и так перегружено. Так же, как и в слу-чае с DNS, главный контроллер сектора Kerberos (Key Distri-bution Center, KDC, центр выдачи ключей) может иметь как дополнительные, slave, контроллеры (что позволяет обеспе-чить бесперебойную работу при выходе из строя основного контроллера), так и в одиночку держать несколько секторов. Типичное имя принципала, например, сервиса удаленного доступа к командному интерпретатору компьютера, выгля-дит таким вот образом: host/[email protected], что обозначает сервис с основным именем (primary name) host и характеристикой (instance) kdc.myrealm.ru, принадле-жащий сектору MYREALM.RU. Разделение имен принципа-лов на несколько частей позволяет различать, с одной сто-роны, разные службы, работающие на одном хосте (с помо-щью primary name, host в нашем случае). А с другой – сре-ди нескольких однотипных служб, работающих в сети, вы-бирать конкретную, запущенную на определенном сервере (с помощью поля instance, которая в нашем случае совпада-ет с именем компьютера). Название секторa не обязано по-вторять доменное имя сети, но именно такое правило наи-менований считается устоявшейся практикой.

Теперь посмотрим, что происходит, если пользователь joeuser (а точнее, принципал [email protected] – поле instance для «живых» пользователей обычно не использует-ся) пытается получить доступ к этому серверу. Предполага-ется, что как клиентская программа telnet, так и telnetd демон собраны с поддержкой Kerberos (обе эти программы входят в дистрибутив Heimdal). Разумеется, как сам сервер, так и пользователь должны быть зарегистрированы в одном и том же секторе Kerberos. Как обычно, сеанс подключения к сер-веру начинается с того, что пользователь запускает telnet со своим регистрационным именем и именем удаленного ком-пьютера telnet -l joeuser kdc.myrealm.ru. Клиентская програм-ма после этого обращается к KDC с просьбой предоставить для joeuser доступ к хосту kdc.myrealm.ru. Kerberos генери-рует по определенным правилам шифровальный ключ (ses-sion key) и разыскивает по своей базе данных принципалов joeuser и host/kdc.myrealm.ru, а также их пароли (ключи). Ес-ли пароли найдены (в противном случае сеанс заканчивает-ся аварийно – т.к. кто-то из этих двух принципалов не заре-гистрирован в секторе Kerberos), Kerberos приступает к ге-нерированию сессионного ключа (session key). С помощью ключа принципала host/kdc.myrealm.ru он шифрует сгенери-рованный session key вместе с именем пользователя joeus-

2005-05-29T22:18:22 AS-REQ [email protected] from IPv4:192.168.1.45for krbtgt/[email protected]:18:22 Using des-cbc-crc/des-cbc-md52005-05-29T22:18:22 Requested flags: renewable_ok, renewable, forwardable2005-05-29T22:18:23 sending 574 bytes to IPv4:192.168.1.452005-05-29T22:18:23 TGS-REQ [email protected] from IPv4:192.168.1.45for krbtgt/[email protected] [renewable, forwardable]2005-05-29T22:18:23 sending 593 bytes to IPv4:192.168.1.45......2005-05-29T22:21:15 TGS-REQ [email protected] from IPv4:192.168.1.45for host/[email protected]:21:16 sending 546 bytes to IPv4:192.168.1.452005-05-29T22:21:16 TGS-REQ [email protected] from IPv4:192.168.1.45for krbtgt/[email protected] [forwarded, forwardable]2005-05-29T22:21:16 sending 589 bytes to IPv4:192.168.1.45......2005-05-29T22:21:43 TGS-REQ [email protected] from IPv4:192.168.1.254for host/[email protected]:21:44 sending 550 bytes to IPv4:192.168.1.2542005-05-29T22:21:44 TGS-REQ [email protected] from IPv4:192.168.1.254for krbtgt/[email protected] [forwarded, forwardable]2005-05-29T22:21:44 sending 593 bytes to IPv4:192.168.1.254......2005-05-29T22:22:27 TGS-REQ [email protected] from IPv4:192.168.1.253for ftp/[email protected]:22:27 Server not found in database:ftp/[email protected]: No such entry in the database2005-05-29T22:22:27 sending 145 bytes to IPv4:192.168.1.2532005-05-29T22:22:27 TGS-REQ [email protected] from IPv4:192.168.1.253for host/[email protected]:22:27 sending 550 bytes to IPv4:192.168.1.2532005-05-29T22:22:28 TGS-REQ [email protected] from IPv4:192.168.1.253for krbtgt/[email protected] [forwarded, forwardable]2005-05-29T22:22:28 sending 546 bytes to IPv4:192.168.1.253

Page 61: 031 Системный Администратор 06 2005

59№6, июнь 2005

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

er, потом прилагает к зашифрованному блоку вторую копию того же session key и снова шиф-рует получившийся билетик с помощью паро-ля пользователя. После этого пакет отсылает-ся клиентской программе. Если к этому време-ни пользователь набрал свой пароль и он со-впадает с паролем, использованным Kerberos при шифровке, то клиентская программа суме-ет расшифровать билетик. Далее, половина би-летика (с session key) остается пользователю, а вторая, которая не может быть расшифрова-на клиентом, поскольку ключ сервера ей неиз-вестен, пересылается на сервер. Сервер рас-шифровывает ее с помощью своего ключа и та-ким образом узнает как session key, так и имя пользователя, что позволяет серверу авторизо-вать его своими собственными средствами. За-метим, что помимо регистрации в этом случае имеется воз-можность использовать полученный session key, поскольку в итоге он известен как клиенту, так и серверу, для шифро-вания сетевого трафика в рамках данной сессии, чем мно-гие приложения и пользуются. Схематически процесс об-мена сертификатами показан на рис. 1.

Что еще интересного в используемом Kerberos механиз-ме аутентификации? Дело в том, что Kerberos оказывается еще более параноидальным, чем мы предполагали внача-ле, т.е. считает ненадежными не только сетевые соедине-ния (ни один из паролей, как вы могли заметить, не пере-дается в открытую по сети), но и клиентский, и даже сер-верный компьютер. Для каждого из них ключ/пароль пар-тнера так и остается неизвестным – только session key, ко-торый для потенциального взломщика интереса не пред-ставляет, поскольку используется только в данной сессии. Как известно, безопасность и удобство пользователей ве-щи взаимоисключающие. Но ученым из МТИ удалось найти удачный компромисс, придумав еще одну замечательную вещь – ticket granting ticket (TGT). Если пытаться переводить этот термин на русский – «билет для выдачи других биле-тов», что-то вроде единого проездного. Смысл его в том, что пользователь сети проходит полностью процедуру ре-гистрации (с вводом имени и пароля) в своем секторе толь-ко один раз, а сертификат, полученный в результате, затем используется клиентскими приложениями как эквивалент пользовательского пароля для получения доступа к сете-вым сервисам. Процесс выдачи ТGT ничем не отличается от описанного выше, только в качестве службы, к которой пользователь получает доступ, выступает сам Kerberos – его Ticket Granting Service. После получения TGT записы-вается в кэш-файл на диске клиентского компьютера и за-тем по мере надобности извлекается оттуда. В схеме, опи-санной выше, session-key, закодированный в TGT исполь-зуется вместо пароля пользователя при шифровании сер-тификата, предоставляемого для доступа к сетевому ре-сурсу. И хотя TGT хранится в кэше на диске рабочей стан-ции пользователя, угроза, связанная с его перехватом, не столь уж серьезна, поскольку его действенность ограниче-на по времени. TGT позволяет организовать в корпоратив-ной сети single sign-on (система единой регистрации) систе-му. Например, с помощью замены системного login на кер-

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

Таким образом, следует помнить, что при любой аутен-тификации в Kerberos всегда участвуют два принципала – один соответствует пользователю, пытающемуся получить доступ к сервису, а второй – самому этому сервису. Мы не будем рассматривать более сложный механизм аутенти-фикации, так называемый user-to-user, когда сетевой сер-вис не имеет собственной записи в базе данных Kerberos, а использует сертификаты пользователя, запустившего сервис. Аутентификация user-to-user могла бы быть полез-на, например, для X-серверов, но и для них эта методика не получила большого распространения.

Так в общих чертах выглядит принцип работы Kerberos. Многие детали реализации протокола Kerberos при этом пришлось опустить. В частности, формат сертификата в действительности более сложен, чем описано здесь. В него входит время выдачи и срок годности сертификата, адрес компьютера, на который отсылается сертификат, и флажки, позволяющие контролировать использование сертифика-тов и тем самым настраивать политику безопасности вну-три сектора Kerberos. Скажем, с помощью снятия флажка forwardable можно «привязать» сертификат к одному ком-пьютеру и запретить его перемещение на другие хосты. Пример, рассмотренный в начале статьи, был бы невозмо-жен в этом случае – после получения удаленного доступа мне каждый раз потребовалось бы вводить пароль для за-проса нового TGT.

В следующем номере журнала мы перейдем к практи-ческой части и развернём инфраструктуру Kerberos в ло-кальной сети.

Литература, ссылки:1. Гребенников Р. Танцуем Самбу. – Журнал «Системный

администратор», №11, ноябрь 2004 г. – 32-38 с.2. Фундаментальное обсуждение протокола Kerberos (на

англ.) можно найти в ссылках на сайте Массачусетско-го технологического института: http://web.mit.edu/kerbe-ros/www/papers.html.

Рисунок 1. Процесс обмена сертификатами

Page 62: 031 Системный Администратор 06 2005
Page 63: 031 Системный Администратор 06 2005

61№6, июнь 2005

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

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

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

втихаря отправляться обычным способом, либо придется ему просить это сделать кого-нибудь другого, что тоже не-приемлемо. Не выгонять же из-за этого лучшего бухгалте-ра. Администратору в этом случае лучше всего взять си-туацию под свой полный контроль. Хорошим примером та-кого подхода является VPN, пользователь может и не до-гадываться, что работает по защищенному каналу. Анало-гичным путем пошли разработчики защищенной почтовой системы Tiger Envelopes (http://www.tigerprivacy.com).

Что за зверь такой?Уже в названии разработчики заложили принцип работы та-кой системы. Аналогично тому, как, написав бумажное пись-мо и положив его в конверт, вы тем самым предохраняете его от просмотра другими, так и Tiger перехватывает отправ-ленное обычным образом сообщение, зашифровывает и пе-реправляет на указанный адрес. На другом конце програм-ма, автоматически подбирая ключ, расшифровывает его и отправляет пользователю, который может догадаться о на-личии такой системы только по нестандартным настройкам почтового клиента. Таким образом, он выступает как почто-вый прокси-сервер, который автоматически кодирует и де-кодирует сообщения. При этом почтовое сообщение может пройти через несколько таких серверов, кодируясь несколь-

ЗАЩИЩЕННАЯ ПОЧТОВАЯ СИСТЕМАС TIGER ENVELOPES

Каждой компании приходится беспокоиться о безопасности информации, проходящей

по электронной почте или другим электрическим каналам связи. Используя сервер

Tiger Envelopes, вы сможете повысить уровень конфиденциальности передаваемых данных.

СЕРГЕЙ ЯРЕМЧУК

Page 64: 031 Системный Администратор 06 2005

62

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

ко раз, на другом конце код будет сниматься слой за слоем, таким образом повышается устойчивость и общая защита. В более поздних версиях, кроме сообщения, планируется ко-дировать и заголовок (например, кодирование поля «Тема» позволит скрыть характер самого сообщения). На сегодняш-ний день существует две версии Tiger Envelopes: Free и Busi-ness. Первая доступна для свободного скачивания, предна-значена для индивидуального использования и распростра-няется под лицензией GPL. Более расширенная версия Bu-siness является коммерческой, и хотя также доступен исхо-дный код, но он прилагается исключительно для контроля. Написан Tiger на Java, и в настоящее время доступны паке-ты, собранные под Windows, Mac OS X и GNU/Linux. Каждый пакет, кроме непосредственно Tiger Envelopes, включает си-стему кодирования, виртуальную машину Java под исполь-зуемую операционную систему и исходный код. Кроме то-го, если собирать систему самостоятельно, то с сайта раз-работчиков можно скачать исходники (как это сделать, мож-но прочитать в http://www.tigerprivacy.com/docs/InstallSource.html). Расширяемый API, основанный на CORBA-интерфей-се, названный Open Crypto Engine (OCE), позволяет исполь-зовать на принципе любую доступную систему шифрования, написанную на любом языке, и менять ее при необходимо-сти (например, при обнаружении уязвимости в конкретной реализации). В настоящее время доступны расширения для Bouncy Castle (http://www.bouncycastle.org), GPG (http://www.gnupg.org) и PGP (http://www.pgpi.com). При этом ключи за-даются фактически для группы абонентов, а не индивиду-альных пользователей, что в целом облегчает администри-рование и обмен информацией с корреспондентами, кото-рым нет теперь необходимости в обмене ключами с каждым сотрудником организации. В будущем разработчики плани-руют добавить сервер ключей, который должен еще более упростить использование системы.

Установка и настройкаВ общем, процесс установки и настройки Tiger Envelopes для Windows и GNU/Linux (а судя по описанию, и для Mac OS X) отличается только особенностями самих систем, т.е. факти-чески используемыми каталогами, в которые будут распа-кованы файлы. Итак, после запуска исполняемого файла, скачанного с сайта по ссылке (размер для Windows – 35 Мб, Linux – 45 Мб), программа установки проверит систему на совместимость. После чего в следующем окне необходимо ввести параметры почтового ящика, который будет защи-щаться тигром, вкладки «More Info» и «Advanced» позволяют более тонко настроить параметры. В этом же окне вводится ключевая фраза (passphrase), необходимая при генерации ключа GPG (для того чтобы Tiger Envelopes мог дальше пе-реправить сообщение, необходимо активировать хотя бы один действующий почтовый ящик) (см. рис. 1).

Далее создается ключ, выводится отчет, сообщающий об успешном создании почтового аккаунта, и программа на-чинает устанавливаться и прописывает себя в автозагруз-ку. Вот в принципе и все. Установленную программу в Win-dows можно найти в C:\Program Files\TigerPrivacy\FreeEnve-lopes (отдельно в C:\gnupg распаковывается GPG). В Linux Tiger Envelopes найдете в /usr/local/bin/FreeEnvelopes. Вну-три этого каталога имеется подкаталог с документацией,

исходные тексты (src), библиотеки и прочее. Здесь же ле-жит ряд скриптов (или исполняемых файлов в зависимости от ОС), которые понадобятся для настройки, проверки ста-туса и тестирования. Например, Preferences позволит доба-вить (изменить настройки, удалить) почтовый ящик, пока-зать, экспортировать, импортировать и удалить ключи, про-тестировать конфигурацию. Кроме этого, в папке Envelopes, которая будет размещена в каталоге текущего пользовате-ля (в моем случае это C:\Documents and Settings\Sergej\En-velopes и /home/sergej/Envelopes), создается ряд подкатало-гов, в которых будут сохраняться открытые ключи (Public-Keys), входящие и исходящие сообщения (messages), фай-лы журнала (logs), плюс здесь же, в файлах XML-формата, найдете индивидуальные настройки пользователя.

Теперь самое время настроить почтовый клиент, для то-го чтобы он отправлял и принимал почту через Tiger Enve-lopes. Хотя здесь тоже все просто.

В качестве SMTP-сервера для исходящих сообщений и ставим имя компьютера, на котором установлен Tiger En-

Рисунок 1. Для того чтобы Tiger Envelopes мог дальшепереправить сообщение, необходимо активировать хотя быодин действующий почтовый ящик

Рисунок 2. Для отправки и получения почты через TigerEnvelopes, необходимо изменить настройки почтового клиента

Page 65: 031 Системный Администратор 06 2005

63№6, июнь 2005

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

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

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

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

velopes, вариантами могут быть IP-адрес, localhost либо 127.0.0.1. Номер порта заменяем на 9025. Сервер для полу-чения почты через POP3 также указываем на этот компью-тер, а номер порта правим на 9110. И не менее важно: поль-зователя, которого в почтовом клиенте обычно прописыва-ем без доменного имени, пишем полностью. В моем случае пользователь grinder был заменен на [email protected].

Для тестирования работы в Tiger Envelopes по умолча-нию создаются два пользователя.

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

Если пользователь не использует Tiger Envelopes, то он получит зашифрованный текст, в конце которого будет та-кая подпись.

Имя: Test UserПочтовый адрес: [email protected]Пароль: 256 AV Audio Имя: Test User2Почтовый адрес: [email protected]Пароль: Memory F4800000

Tiger Envelopes decrypted this message at 2005-06-25 04:49:06.774 UTC.

Get your privacy back with free email envelopes at<a href="http://tigerprivacy.com">Tiger Privacy</a>Tiger Envelopes encrypted this message at 2005-06-25 04:33:34.573 UTC.

Tiger Envelopes warning: Got this message without an envelope.Anyone could have read it.

Page 66: 031 Системный Администратор 06 2005

64

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

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

дить. С их по мо щью орга ни зу ют ся точ-ки доступа в Интернет, строятся пол-но цен ные локальные сети, лишенные змеящихся кабелей, и де ла ет ся мно-жество дру гих удивительных вещей. Се мей ство стан дар тов IEEE 802.11 опи сы ва ет протоколы пе ре да чи дан-ных, ра бо та ю щие на частоте 2,4 ГГц и обес пе чи ва ю щие ско рость вплоть до 11 Мбитс/с (протокол 802.11b) или да-же 54 Мбит/с (протокол 802.11g). Все вместе они об ра зу ют WLAN (Wireless Local Area Network – Бес про вод ная Ло-каль ная Сеть).

Фактически WLAN представляет собой обык но вен ный Ethernet, только без проводов (см. рис. 1). Это значит, что беспроводные сети наследуют все уязвимости обык но вен ных про вод ных сетей и добавляют к ним свои соб ствен-ные. Описывать классические Ether-net-уязвимости, такие, на при мер, как под лож ный ARP-сервер, не интерес-но, лучше об су дим «беспроводной» аспект (рис. 1).

Для защиты от злоумышленников разработчики IEEE 802.11 протоколов предприняли целый комплекс про ти во-ха кер с ких мер: аутентификация, шиф-рование тра фи ка, привязка к MAC-

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

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

Чем вооружены хакеры и как им противостоять, вот воп рос, достойный нашей статьи!

Аутентификацияи шифрованиеСогласно стандарту IEEE 802.11, су-ществует три ба зо вых режима безо-пасности, выбираемых беспроводным ус т рой ством в зависимости от уровня секретности:

КРИС КАСПЕРСКИКРИС КАСПЕРСКИ

НАСКОЛЬКО НЕУЯЗВИМАНАСКОЛЬКО НЕУЯЗВИМАВАША БЕСПРОВОДНАЯ СЕТЬ?ВАША БЕСПРОВОДНАЯ СЕТЬ?

Масштабное внедрение Масштабное внедрение

беспроводных устройств беспроводных устройств

протекает довольно болезненно. протекает довольно болезненно.

То тут, то там появляются То тут, то там появляются

сообщения об их взломе, сообщения об их взломе,

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

в настоящий радиоспортв настоящий радиоспорт

для тинейджеров.для тинейджеров.

Попробуем разобраться, Попробуем разобраться,

насколько велика угрозанасколько велика угроза

и что можно противопоставить и что можно противопоставить

коварным хакерам.коварным хакерам.

! открытый режим (ни шифрование, ни аутентификация не используют-ся);

! защищенный режим без аутен ти-фи ка ции, но с шиф ро ва ни ем тра-фика;

! защищенный режим с аутен ти фи ка-ци ей и шиф ро ва ни ем трафика.

Шифрование в обоих случаях осу-ществляется по WEP-протоколу (Wired Equivalent Privacy – эквивалент про вод-ной защищенности), опирающемуся на потоковый крип то ал го ритм RC4. Ис-ходные данные (data) нарезаются на фрей мы (fames) с раз ме ром 1.518 бит (впрочем, размер задан не жестко и в за ви си мо с ти от конфигурации обору-дования он может существенно от ли-чат ься). Для каждого фрейма оп ре де-ля ет ся и укладывается в пакет 32-бит-ная кон т рольная сум ма (ICV), вычисля-емая по ал го рит му CRC32. Эф фек тив-ный ключ шифрования (PRNG – Pseu-do-Random Number Generator – генера-тор псевдослучайных чисел) ге не ри ру-ет ся на ос но ве двух ключей – 40-бит-ного сек рет но го клю ча (secret key или WEP key), назначаемого пользо ва те-лем, и 24-битного вектора инициали-зации (IV – Initialization Vector), ге не ри-ру е мо го случайным образом для каж-дого пакета. Все вме с те это называет-

Page 67: 031 Системный Администратор 06 2005

65№6, июнь 2005

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

на основе секретного WEP-ключа и произвольного вектора ини ци а ли за-ции. Зашифрованный испытательный текст (Encrypted Challenge Text) вместе с вектором инициализации пе ре да ет ся на точку доступа, где происходит об-ратный процесс: используя имеющий-

Смена ключей происходит произволь-ным образом (номер ключа передает-ся вместе с за шиф ро ван ным пакетом), но на безопасность передачи данных это никак не влияет. Если хакер сможет взломать один ключ, он сломает и четы-ре (см. рис. 3).

Упрощенно процесс шифрования потока данных выг ля дит так (расчет контрольной суммы здесь не показан): K=IV.WEPkey → KSA(K) → PRNG (K)XOR data stream, где функции KSA(A) и PRNG(К) выражаются следующим псев-до ко дом (см. листинг 1, 2 и рис. 4).

Аутентификация осуществляется по старой доброй схе ме запрос/отклик (challenge/response). Клиент (Client или Station), желающий подключится к точ-ке доступа (Access Point), посылает за-прос на аутентификацию (Authentica-tion Request). Точка доступа генерирует 128-байтовый псев до слу чай ный «ис-пытательный текст» (Challenge Text) и отп рав ля ет его клиенту. Получив «ис-пытательный текст», клиент шифрует его 64-битным ключом, полученным

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

Вектора инициализации назнача-ются самим WLAN-ус т рой ством и пе-редаются в открытом виде. Зачем они нуж ны? А затем, что используе-мый криптоалгоритм легко вскры ва-ет ся ата кой по открытому тексту. Ес-ли зло умыш лен ни ку известен хотя бы один исходный байт в каждом фрей-ме, ключ шифрования вос ста нав ли ва-ет ся без труда, поскольку различные части ключа мно го крат но при ме ня ют-ся к различным частям зашифрован-ных фрей мов. Что бы этого избежать, никакой ключ шифрования не дол-жен использоваться дважды. Векто-ра инициализации ав то ма ти чес ки из-меняются с каждым пакетом, что обе-спечивает «прозрачную» смену клю-ча, без ведома и участия пользо ва те-ля (см. рис. 2).

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

Рисунок 1. OSI-модель, под твер ж да ю щая род ствен ные связимежду про то ко ла ми 802.3 (Ethernet) и 802.11 (WLAN)

Рисунок 2. Расчет кон т рольной суммы и шиф ро ва ние трафикапо про то ко лу WEP

Рисунок 3. Четыре секретных WEP-ключа, выбираемых пользователем и ав то ма ти чес кисме ня ю щих друг друга по истечении некоторого промежутка времени

Листинг 1. Псевдокод функции KSA(A),ини ци а ли зи ру ю щей мас сив S,используемый впос лед ствиидля ге не ра ции псев до слу чай нойпоследовательности

// инициализацияfor(i = 0; i < N; i++) S[i] = i;j = 0;

// перемешивание байт, оно же// скрем б ли ро ва ние (scrambling)for i = 0; i<N; i++{ j = j + S[i] + K[i % length]; swap(S[i], S[j]);}

Листинг 2. Псевдокод функции PRNG(K),генерирующей псевдослучайнуюпос ле до ва тель ность, используемуюдля шиф ро ва ния потока данныхоперацией XOR

// инициализация:static int i = 0;static int j = 0;

// цикл генерации:i = i + 1;j = j + S[i];swap(S[i], S[j]);return S[S[i] + S[j]];

Рисунок 4. Блок-схема алгоритмашифрования WEP, используемогодля шифрования трафикаи аутентификаци

Page 68: 031 Системный Администратор 06 2005

66

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

ся в ее распоряжении секретный WEP-ключ и открытый вектор инициализа-ции, точка доступа расшифровывает пакет и сравнивает полученный текст с оригинальным испытательным тек-стом. Если они со впа да ют, аутентифи-кация считается успешной и клиенту от прав ля ет ся подтверждение доступа (Confirm Success) (см. рис. 5).

Независимо от выбранного режи-ма секретности, точка доступа может использовать привязку к MAC-адре-сам и проверку SSID/ESSID ([Extend-ed] Service Set IDentifiсation – иденти-фикация [расширенного] комплекта услуг, условно называемая «именем сети»), отсекая всех непрошеных на ру-ши те лей еще на стадии подключения (технология Access Control List – спи-сок управления доступом). Для са мо-ус по ко е ния такая мера, может быть, и сгодится, но вот зло умыш лен ни ков она остановит навряд ли. И MAC, и SSID пе-ре да ют ся по сети открытым текстом, так что их перехват не пред став ля ет никакой проблемы. Пе ре прог рам ми-ро вать MAC-адрес своей карты чуть сложнее, но хакеры с этим легко справ-ляются (даже если карта не позволя-ет сделать этого программным обра-зом – а подавляющее боль шин ство карт это позволяет – атакующий всег-да может «пе ре шить» ПЗУ). Что же ка-сается SSID, то он и вовсе про пи сы ва-ет ся с пользо ва тель с ко го интерфейса, поскольку ис поль зу ет ся ис клю чи тель-но как «маркер», позволяющий бес-проводному ус т рой ству отличить од-ну сеть от другой. Борьба с хакерами в его задачу не входит. Тем не менее это еще не значит, что SSID можно не заполнять (а боль шин ство пользовате-лей имен но так и поступает)!

Ошибки разработчиков WEP-протоколаСтандартный 64-битный ключ шиф-рования легко взла мы ва ет ся лобо-вым перебором. Учитывая, что фак-тическая длина секретного ключа со-ставляет всего лишь 40 бит, в сред-нем нам достаточно перебрать 240/2 = 549 755 813 888 ком би на ций. При ско-рости перебора в сотню миллионов ключей в секунду (вполне умеренная скорость для современных процессо-ров) атака займет все го час – полтора. Зло умыш лен ни ку достаточно пе ре хва-тить всего один за шиф ро ван ный па-кет, а затем терзать его до тех пор, пока кон т рольная сумма расшифрованного па ке та не совпадет с ICV. «Сту чать ся» на точку доступа при этом совершен-но нео бя за тель но! (С учетом су ще ство-ва ния че ты рех секретных клю чей про-должительность полного цик ла пере-бора не сколь ко возрастает, однако не столь ра ди каль но).

Для предотвращения лобовой ата-ки производители бес про вод но го обо-рудования увеличили длину секретной ча с ти ключа до 104 бит, попутно поро-див проблему об рат ной со вме с ти мо с-ти. Добавьте сюда 24 бита вектора ини-ци а ли за ции и вы получите так называ-емое 128-бит ное шиф ро ва ние. Подо-брать 104-битный ключ вслепую уже не ре аль но (при прежней скорости пе-ребора в сред нем на это уйдет 281 70 013 338 405 097 811 часов или 3 215 754 947 306 518 веков, что значительно пре-вы ша ет не только оставшееся время существования Солнца, но и воз раст Вселенной), однако хакерам удалось найти более ко рот кий путь, сократив вре мя взлома в мил ли ар ды раз.

В августе 2001 года три криптоана-литика: Scott Fluhrer, Itsik Mantin и Adi Shamir опубликовали свою подрывную

Рисунок 5. Схема аутен ти фи ка циикли ен та, используемая в про то ко ле WEP

ста тью «Weaknesses in the Key Sched-uling Algorithm of RC4» («Слабые ме-ста алгоритма распределения клю-чей RC4»), мгновенно сделавшую их знаменитыми. Впоследствии все ата-ки этого типа стали обозначаться аб-бревиатурой FMS – по первым буквам первооткрывателей: Fluhrer-Mantin-Shamir. Они обнаружили существова-ние крупных классов слабых («weak») ключей, в которых крошечная часть битов ключа оказывает значитель-ное влияние на за шиф ро ван ные дан-ные. Поскольку в формировании эф-фективного ключа участвует вектор инициализации, генерируемый про из-воль ным образом, в общий шифропо-ток неизбежно по па да ет некоторое ко-личество слабых ключей. Собрав до с-та точ ный объем трафика, злоумыш-ленник отбирает па ке ты, зашифро-ванные слабыми ключами (такие па-кеты на зы ва ют ся «слабыми» или «ин-тересными» – interesting). Каждый сла-бый пакет с 5% степенью вероятности вос ста нав ли ва ет один байт секретно-го ключа, поэтому общее ко ли че ство пакетов, которые атакующему необ-ходимо со брать для реализации ата-ки, в первую очередь зависит от сте-пени его везучести. В среднем для взлома требуется порядка 6 миллио-нов зашифрованных пакетов. В за ви-си мо с ти от интенсивности трафика и пропускной спо соб но с ти канала, на это уходит от нескольких часов до не-сколь ких дней, хотя в некоторых слу-чаях атака заканчивается уже через несколько минут. И это при 104-бит-ном ключе! Так работает AirSnort и многие другие хакерские утилиты, ко-то рые любой злоумышленник может свободно скачать из сети.

Если обмен данными между ле-гальными клиентами и точкой досту-

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

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

Существуют и другие эффектив-ные атаки против WLAN, описание ко-торых можно найти, например, в ста-тье «What’s Wrong With WEP?» (http://www.ilabs.interop.net/WLANSec/What_is_wrong_with_WEP-lv03.pdf).

Атака по открытому тексту

Page 69: 031 Системный Администратор 06 2005

67№6, июнь 2005

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

па незначителен или практиче-ски от сут ству ет, злоумышленник может заставить жертву ге не ри-ро вать боль шое количество тра-фика, даже не зная секретного клю ча. Достаточно просто пере-хватить «правильный» па кет и, не расшифровывая, ретранслиро-вать его вновь. В ча с т но сти, ARP-запрос вызовет неизбежный ARP-от вет. От ли чить APR-запросы от всех остальных пакетов очень просто: frame.pkt_len == 68 (раз-мер кадра) и wlan.da == FF:FF:FF:FF:FF:FF (адрес назначения). Обычно для пе ре да чи запросов используется отдельная WLAN-карта (при этом расстояние меж-ду антеннами приемной и пе ре да-ю щей карт должно составлять по мень-шей мере 15 см, что бы из бе жать вза-имных наводок), хотя некоторые кар-ты ухит ря ют ся пе ре хва ты вать трафик и одновременно с этим бом бар ди ро вать жертву пакетами.

Хакеры из лаборатории H1kari of Dasb0den Labs уси ли ли FMS-алгоритм, сократив количество необходимых па-ке тов с 6 миллионов до 500 тысяч, а в некоторых случаях 40/104 битный ключ взламывается всего с 3 тысячами па-ке тов, что позволяет атаковать даже домашние точки до с ту па, не напрягая их избыточным трафиком. Усиленный ал го ритм атаки реализован в утилите dwepcrack, входящей в состав пакета BSD-airtools, а также в другом хакер-ском ин ст ру мен та рии (рис. 6).

Разработчики оборудования отре-агировали вполне адек ват ным обра-зом, изменив алгоритм генерации век-то ров инициализации так, чтобы сла-бые ключи уже не воз ни ка ли. Теперь даже dwepcrack требовалось перехва-тить свыше 10 миллионов пакетов, но даже в этом случае ус пеш ная расшиф-ровка ключа не гарантирована! Ус т рой-ства, выпущенные после 2002-2003 гг., скорее всего уже за щи ще ны от FMS-атаки, а более древние модели решают эту проблему путем обновления про-шивки (правда, не все производители выпустили такое обновление). Впро-чем, даже сегодня, в середине 2005 года, в эксплуатации на хо дит ся мно-жество уязвимых устройств, особен-но на пе ри фе рии, куда уходят все не-реализованные складские за па сы. Тем не менее, ситуация такова, что хаке-

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

В августе 2004 года хакер по име-ни KoreK про де мон ст ри ро вал исхо-дный код нового криптоанализатора, взла мы ва ю ще го даже «сильные» век-торы инициализации. Для восстанов-ления 40-битного ключа ему требова-лось всего 200 тысяч пакетов с уни-кальными векторами ини ци а ли за ции, а для 104-битного – 500 тысяч. Количе-ство пакетов с уни каль ны ми вектора-ми инициализации в среднем состав-ляет порядка 95% от общего количе-

Рисунок 6. Внешний вид ути ли ты dwepcrack,реализующей усиленную раз но вид ность FMS-ата кина WEP-клю чи

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

В новом оборудовании, по-строенном по технологии WPA – Wi-Fi Protected Access (защищен-ный Wi-Fi доступ), защищенность беспроводных устройств вновь была уси ле на. На место WEP при-шел TKIP (Temporal Key Integrity Protocol – протокол краткосроч-ной целостности ключей), гене-рирующий динамические клю-чи, сменяющие друг дру га через

пару минут. Для совместимости с су-ществующим оборудованием TKIP ис-пользует тот же самый потоковый ал-горитм шифрования, что и WEP – RC4, но в каждый за шиф ро ван ный пакет те-перь укладывается специальный вось-мибайтный код целостности сообще-ния, рас счи тан ный по алгоритму Mi-chael, предотвращающий ретрансля-цию подложных пакетов. Процедура аутентификации осу ще ств ля ет ся по протоколу EAP (Extensible Authentica-tion Protocol – расширенный протокол аутентификации), использующему ли-

Рисунок 7. Схема аутен ти фи ка ции, осуществляемой по WPA-про то ко лу с выделеннымRadius-сер ве ром

Page 70: 031 Системный Администратор 06 2005

68

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

отлично до ку мен ти ро ван, причем до-ку мен та ция распространяется не по под пис ке, а бесплатно раздается всем желающим!

Из программного обеспечения нам понадобится се те вой сканнер, сниф-фер и взломщик паролей. Их можно най ти практически на любой платфор-ме. На Pocket PC обычно используется связка MiniStumbler/Sniffer Portable/Air-scanner Mobile. MiniStumbler обнаружи-вает присутствие сети в дан ной точке, измеряет интенсивность сигнала, ото-бражает SSID/MAC-адреса и опреде-ляет, задействовано WEP-шиф ро ва-ние или нет. Sniffer Portable и Airscanner Mobile зах ва ты ва ют все пролетающие мимо пакеты и записывают их в файл, ко то рый затем переносится на ноутбук или на столь ный ПК и про пус ка ет ся че-рез взломщик паролей (про цес сор ных ре сур сов карманного компьютера для взлома па ро лей за ра зум ное время по-ка что недостаточно) (см. рис. 8).

Основной сниффер под LINUX и BSD это, конечно же, Kismet, изначаль-но ориентированный на ис сле до ва тель-с кие цели. Он поддерживает большое количество обо ру до ва ния и беспровод-ных протоколов, удобен в ис поль зо ва-нии и к тому же абсолютно бесплатен. Перехватывает се те вой трафик, по-казывает SSID и MAC-адреса, под счи-ты ва ет ко ли че ство пакетов со слабы-ми векторами ини ци а ли за ции и т. д. Из взломщиков паролей в последнее время реально работают только aircr-ack и WepLap, причем пер вый работа-ет значительно лучше.

бо RADIUS-сервер (Remote Authentica-tion Dial-In User Service – служба дис-танционной аутентификации пользо-ва те лей по коммутируемым лини-ям), либо пре ду с та нов лен ный общий ключ PSK (pre-shared key). В процес-се аутен ти фи ка ции сервер генериру-ет парный мастер ключ (PMK – Pair-wise Master Key) и передает его Кли-енту. Несмотря на относительную но-визну этой технологии, в комплект air-ckack уже входит специальный модуль WZCOOK, ото бра жа ю щий PMK-ключ. Для несанкционированного под клю че-ния к точ ке доступа, защищенной тех-нологией WPA, это го ока за лось впол-не достаточно. Впрочем, атакующий мо дуль все еще недостаточно отла-жен и потому в некоторых случаях он не срабатывает (см. рис. 7).

Стандарт IEEE 802.11i описывает более продвинутую систему безопас-ности, основанную на криптоалгорит-ме AES и известную под именем WPA2. Готовых утилит для ее взлома в откры-том виде пока не наблюдается, так что с этой технологией можно чувство-вать себя в безопасности, по крайней мере, какое-то время она продержит-ся. Об ла да те лям устаревшего обору-дования настоятельно ре ко мен ду ет ся пробить VPN-тоннели, задействовать SSL-шифрование или подключить лю-бые другие способы защиты, из на чаль-но ориентированные на небезопасные каналы передачи данных.

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

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

От антенны до программыРадиус действия большинства беспро-водных ус т ройств ог ра ни чен дистанци-ей в 10-100 метров (точная цифра за ви-сит от класса и конструктивных особен-ностей кон к рет но го оборудования), по-этому атакующий должен на хо дить ся в не пос ред ствен ной близости от жертвы. Одни хакеры во о ру жа ют ся карманными компьютерами (они же «на ла дон ни ки» или Pocket PC), другие предпочитают десктоп с WLAN-картой, подключенной к внешней антенне. Доб рот ная антенна на прав лен но го типа, снабженная уси-лителем мощности, уве рен но держит связь на расстояниях до 1,5-2 км, а в не-ко то рых случаях и больше того, так что простой бдительности для его обнару-жения уже будет не до ста точ но!

При выборе WLAN-карты атакую-щий должен убе дить ся, что выбран-ные хакерские утилиты (и в первую очередь сниф фер) умеют работать с данным чипсетом. Список под дер жи-ва е мо го оборудования обычно публи-куется на сай тах раз ра бот чи ков соот-ветствующих программ или со дер жит-ся в документации. Наибольшей лю-бовью пользуется чипсет Prism/Prism2 и беспроводные карты на его основе (например Senao 2511-CD-PLUS). Он

Рисунок 8. Оружие наладонников � снифферы pocketWiNc (сле ва)и Mobile Sniffer (справа)

Page 71: 031 Системный Администратор 06 2005

69№6, июнь 2005

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

Под Windows перехват беспро-водного трафика ре а ли зу ет ся гораз-до сложнее и кроме сниффера нам по-тре бу ют ся модифицированные вер-сии драйверов для WLAN-кар ты. Из коммерческих снифферов можно по-рекомендовать Airopeek, из некоммер-ческих – утилиту airdump, вхо дя щую в состав aircrack и портированную под Windows. Еще мож но ис поль зо вать Sniffer Pro или любой другой подходя-щий сниффер.

На Mac весь хакерский инстру-ментарий собран в од ном флаконе – утилите по имени KisMAC, которая на-столь ко проста, что ей сможет поль-зоваться даже ребенок. Здесь есть и сетевой сканер, и сниффер, и пароль-ный пе ре бор щик (brute force), и крип-тоанализатор слабых векторов ини-ци а ли за ции. Предусмотрена даже та-кая мелочь, как пла ни ров щик, позво-ляющий осуществлять атаки по рас-пи са нию.

Литература:1. Andrew A. Vladimirov, Konstantin V.

Gavrilenko, Andrei A. Mikhailovsky. Wi-Foo. – Addison Wesley, ISBN : 0-321-20217-1, 592 с. – лучшая кни-га по взлому беспроводных се тей с боль шим количеством практиче-ских примеров, ори ен ти ро ван ная на хакеров и криптоаналитиков.

2. Jon Edney, William A. Arbaugh. Real 802.11 Security: Wi-Fi Protected Ac-cess and 802.11i. – Addison Wesley, ISBN : 0-321-13620-9, 480 с. – непло-хая книга по безопасности бес про-вод ных се тей, ориентированная на теоретиков и системных ад ми ни с т-ра то ров.

3. Bob Fleck, Bruce Potter. 802.11 Secu-rity. – O’Reilly, ISBN: 0-596-00290-4, 208 с. – сильно те о ре ти зи ро ван ная, но в целом весьма не пло хая книга по ата кам на WLAN.

4. Weaknesses in the Key Scheduling Al-gorithm of RC4: биб лия всех ис сле-до ва те лей WEP-клю чей, на пи сан-ная трой кой магов Scott Fluhrer, It-sik Mantin и Adi Shamir (на ан г л. ): ht tp: / /www.smallnetbuilder.com/Weblink-req=visit-lid=66.php.

5. Practical Exploitation of RC4 Weak-nesses in WEP Environments by Dav-id Hulton: статья, опи сы ва ю щая уси-лен ный вариант FMS-ата ки на WEP с при ме ра ми ис ход но го кода (на

ан г л.): http://www.dachb0den.com/projects/bsd-airtools/wepexp.txt.

6. Wireless Security Auditor (WSA): ста-тья из ис сле до ва тель с ко го центра IBM, опи сы ва ю щая про бле мы бе зо-пас но с ти бес про вод ных про то ко лов (на ан г л.): http://www.research.ibm.com/gsal/wsa.

7. Атаки на WEP: практическое по со-бие ата ку ю ще го, срав не ние раз лич-ных ха кер с ких ути лит, со ве ты по их на строй ке (на рус .): http://www.securitylab.ru/53508.html и http://www.securitylab.ru/54769.html.

8. Dispelling the Myth of Wireless Se-curity: слегка ус та рев шая статья о способах взлома бес про вод ных сетей, но ком мен та рии к ней впол-не ак ту аль ны (на ан г л.): http://www.oreillynet.com/pub/a/wireless/excerpt/wirlsshacks_chap1/index.html.

9. NetStumbler-форум: форум, на ко-тором общаются WLAN-хакеры (на ан г л.): http://www.netstumbler.org.

Ссылкина инструментарий:1. NetStumbler: монитор бес про вод ной

сети, ра бо та ю щий под Windows 20-00/XP, версия для Windows CE на зы-ва ет ся MiniStumbler и ра бо та ет на Pocket PC: http://www.netstumbler.com/downloads.

2. Airscanner Mobile: бесплатный

сниф фер для Pocket PC: http://www.snapfiles.com/get/pocketpc/airscanner.html.

3. PocketWarrior: бесплатный сниф-фер под Windows CE и Pocket PC: http://pocketwarrior.sourceforge.net.

4. kismet: сниффер номер один под Linux, BSD и MacOS, ори ен ти ро ван-ный на ха кер с кую деятельностью и рас про с т ра ня ю щий ся в исходных текстах, версия под Windows об ла-да ет ог ра ни чен ны ми воз мож но с-тя ми и потому не ре ко мен ду ет ся: http://www.kismetwireless.net.

5. Airopeek: достойный сниффер под Windows: http://www.wildpackets.com/products/airopeek.

6. Sniffer Portable: http://www.snmp.co.uk/nai/amnesty.htm.

7. aircrack: лучший взломщик WEP и WPA-паролей на се год няш ний день, распространяющийся на не ком мер-чес кой ос но ве; в комплект постав-ки входит сниффер, ра бо та ю щий на Linux и Windows 2000/XP: http://www.cr0.net:8040/code/network/aircrack.

8. AirSnort: устаревший взломщик WEP-паролей: http://airsnort.shmoo.com.

9. kisMAC: утилита для атаки на беспро-водные сети под MAC OS: сниффер и взломщик паролей в одном фла ко-не: http://binaervarianz.de/projekte/pro-grammieren/kismac/download.php.

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

Загрузочный лазерный диск Audit-or Security Collection уже содержит весь необходимый инструментарий и мо ди-фи ци ро ван ные драйвера, поддержи-вающие большое ко ли че ство разно-образных беспроводных устройств. 518-мегабай т ный ISO-образ можно бесплатно скачать с веб-сайта ком па-нии Moser Informatik, расположенного по адресу: http://www.moser-informatik.ch, очень удобная штука для тестов на проникновение.

ЗаключениеТак все-таки безопасны беспроводные сети или нет? Ус т рой ства, поддержи-вающие стандарт IEEE 802.11i (WPA2), еще никому взломать не удалось и, су-дя по всему, в обо зри мом будущем и не удастся. Все остальное обо ру до ва ние

(WEP и WPA1) вскрывается без труда. Ни частая сме на секретных ключей, ни SSID, ни привязка к MAC-ад ре сам, ни даже так называемое 128-битное шиф-рование от настоящих хакеров не спа-сает и годится разве что на роль пу-гала, отпугивающего новичков и про-сто лю бо пыт ству ю щих пользователей, впервые взявших сниффер в руки.

Что же касается WPA1, то по этому поводу существуют различные мнения. Начнем с того, что схема аутентифика-ции непосредственно в сам протокол WPA1 не входит и осуществляется сто-ронними средствами. Это может быть и EAP-MD5, и EAP-TLS и MS-CHAP… То есть сама по себе поддержка WPA1 ничего не решает! Безопасность обе-спечивается лишь правильной настой-кой оборудования, а это требует соот-ветствующей квалификации обслужи-вающего персонала! Поэтому, если вы не уверены в себе, от использования WPA1 лучше воздержаться.

Page 72: 031 Системный Администратор 06 2005

70

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

КАК ЗАЩИТИТЬСЯ ОТ FINGERPRINTING?

Чаще всего хакерская атака начинается с fingerprinting –

сбора информации о точной версии операционной системы

и публичных сервисов. Приняв меры для противодействия

удалённому снятию отпечатков системы, вы сможете

остановить большинство атак на свою систему на самом

ранем этапе.

СЕРГЕЙ БОРИСОВ

Page 73: 031 Системный Администратор 06 2005

71№6, июнь 2005

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

Чтобы оп ре де лить версии операционной системы или при клад ных сер ви сов, последователи Ке ви на Мит ни-ка пред поч ли бы по зво нить системному ад ми ни с т ра-

то ру и вы яс нить все под роб но с ти по телефону. Ос таль ные же будут проводить ис сле до ва ние осо бен но с тей ре а ли за-ции стека TCP/IP и дру гих про то ко лов в удаленной опе ра-ци он ной си с те ме.

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

От чего защищаться?Посмотрим, что выдает версию операционной си с те мы и публичных сервисов, и узнаем, от чего нам защищаться. В fingerprinting используются сле ду ю щие методы:! Сбор баннеров и ручной анализ системы.! Активное исследование реализации протоколов.! Пассивное исследование реализации протоколов.! Исследование некоторых технических ха рак те ри с тик си-

с те мы.

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

Так, например, ftp-сервис может позволить вы пол не-ние команды SYST, которая выдает версию операцион-ной си с те мы. Заголовок веб-сервера можно получить ко-ман дой:

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

до го про из во ди те ля. К ним можно отнести протоколы сте ка TCP/IP, SNMP, HTTP, Telnet, FTP. Таким образом, до с та точ-но по до брать хо ро ший набор тестов, в которых раз лич ные системы ведут себя по-разному.

Fingerprinting стека протоколов TCP/IP-серверовСетевой стек в разных операционных системах раз ли ча ет-ся по нескольким параметрам, и для каждого из них есть тех но ло гия получения отличий.

Часть возможных исследований, в результатах которых есть различия, приведена в таблице 1. Этого вполне доста-точно, чтобы легко распознать эти системы. Кроме этого можно проводить исследования:! значения поля ACK в TCP-заголовке в ответах на не-

стандартные запросы; ! закона изменения ISN сервера;! флага DontFragment в IP-заголовке;! ICMP-заголовка эхо-ответа;! время отсылки повторных пакетов в реализации TCP;! модели протокола TCP (TCP-reno, TCP-Vegas, TCP-Ta-

hoe, TCP-newreno, TCP-SACK), которые по-разному ре-агируют на ухудшение пропускной способности кана-ла, появление частых ошибок и пропадание связи.

Fingerprinting публичных сервисовБольшинство публичных сервисов или служб ис поль зу ют достаточно сложные протоколы, которые подвержены сня-тию отпечатков (SMTP, IMAP, Telnet, FTP, HTTP, LPD, IKE, SNMP). От прав ка большого количества нестандартных или не пра виль ных команд позволяет определить как вер-сию пуб лич но го сер ви са на сервере, так и операционную систему. Подробности об активном fingerprinting вы може-те найти в [1, 2].

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

Идея пассивного fingerprinting заключается в анализе ин фор ма ции, доступной без непосредственного воз дей-ствия на исследуемую систему. Чаще всего он при ме ня ет-

# echo 'GET / HTTP/1.0\n' | nc securitylab.ru 80 | ↵ grep '̂ Server:'

Таблица 1. Результаты исследования стека TCP/IP Windows, Linux и FreeBSD

Server: Apache/2.0.52 (Unix)

Page 74: 031 Системный Администратор 06 2005

72

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

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

! порядок проверки эффективности и процедуры – на-при мер, тестирование с использованием методов, опи-сан ных в статье, как извне, так и внутри организации, и порядок пе ре смот ра процедуры;

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

Помимо этого в инструкции по организации бе зо пас но с-ти серверов и компьютерной сети необходимо внести со от-вет ству ю щие пункты о защите от сетевой разведки.

Практическая реализация на уровне сетиГрамотная топология сети – это самая эффективная кон тр-ме ра удаленному исследованию систем.

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

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

Размещение двух публичных сервисов на одном сер-ве ре приводит к резкому повышению вероятности оп ре де-ле ния версии системы. Если по каким-то причинам не воз-мож но от этого отказаться, тогда можно разместить сер-висы в различных виртуальных машинах (jail) или с по-мощью на строй ки NAT межсетевого экрана связать один внутренний IP-адрес c несколькими внешними IP-адреса-ми, по одному на каждый сервис. Тогда внешнему иссле-дователю будет казаться, что приложения запущены на разных серверах.

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

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

Пример 1. Конфигурация межсетевого экранаIPFW (для ОС семейства *BSD)

ся во внут рен ней сети организации, когда мы имеем не пос-ред ствен ный до с туп к нормальному рабочему трафику. Это одно из пер вых дей ствий при моделировании внут рен не го на ру ши те ля для об на ру же ния слабостей политики бе зо пас-но с ти внутренней сети. Примеры пассивного fingerprinting можно посмотреть по ссылкам [3, 4, 5].

Исследование технических характеристик системыЭто анализ таких отличительных характеристик, как вре-мя ра бо ты сервера с момента последней перезагрузки, от-кло не ние тай ме ра системных часов, серийные номера фи-зи чес ких ча с тей сервера (например, MAC-адрес сервера в том же сег мен те сети). Подробнее об этом: http://www.caida.org/outreach/papers/2005/fingerprinting.

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

Итак, мы разобрали, почему возможен fingerprinting опе-ра ци он ной системы и публичных сервисов, теперь рас смот-рим, как с ним бороться.

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

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

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

этот до ку мент, – на при мер, недопущение утечки ин-фор ма ции ог ра ни чен но го распространения;

! условия, которые необходимы для выполнения це-

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

! различные профили защиты – например, публичный сер вис, локальный сервис, критический сервис;

! разделение обязанностей сотрудников – например, ад ми ни с т ра тор сети отвечает за реализацию про це ду-

# Отбрасываем пакеты с не стан дар т ны ми IP-опциями/sbin/ipfw add deny log all from any to 195.195.195.1 ↵ in via xl0 ipoptions ssrr/sbin/ipfw add deny log all from any to 195.195.195.1 ↵ in via xl0 ipoptions lsrr/sbin/ipfw add deny log all from any to 195.195.195.1 ↵

Page 75: 031 Системный Администратор 06 2005

73№6, июнь 2005

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

Пример 2. Конфигурация межсетевого экранаIP-Filter (для ОС семейства *NIX)Редактируем файл ipf.rules:

Пример 3. Конфигурация межсетевого экранаPF-FILTER (для ОС семейства *BSD)

Пример 4. Конфигурация межсетевого экранаPIX Firewall В межсетевом экране PIX Firewall реализован ме ха низм ASA, который отбрасывает не SYN-пакеты, которые не яв-ля ют ся частью установленного соединения (2, 4, 6, 7 тесты NMAP), так что большая часть работы по защите от finger-printing выполняется по умолчанию.

in via xl0 ipoptions rr# Запрещаем пакеты с Timestampf #/sbin/ipfw add deny log all from any to 195.195.195.1 ↵ in via xl0 ipoptions ts

# Запрещаем пакеты с не кор рек т ны ми TCP-флагами.# NULL-пакеты � второй тест nmap/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags !syn,!ack,!rst# XMAS-пакеты � третий тест nmap/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags syn,Þn,urg,psh,!ack/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags syn,Þn,!ack,# Седьмой тест nmap/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags Þn,urg,psh,!ack/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags Þn,!ack/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags urg,!ack/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ in via xl0 tcpßags psh,!ack

# Разрешаем ICMP-пакеты, только echo и echo _ replay/sbin/ipfw add allow icmp from any to 195.195.195.1 ↵ icmptypes 8 via xl0/sbin/ipfw add allow icmp from any to 195.195.195.1 ↵ icmptypes 0 via xl0/sbin/ipfw add deny log icmp from any to any via xl0

# Можно различным образом блокировать закрытые порты# При запросе на закрытый порт можно просто отбрасывать# пакеты/sbin/ipfw add deny tcp from any to 195.195.195.195 ↵ 136-139 in via rl0# Можно отправлять в ответ tcp rst или icmp host unreachable# на запросы к закрытым TCP- и UDP-портам, но такие ответы# убыстряют сканирование и демаскируют меж се те вой экран/sbin/ipfw add reject udp from any to any in via rl0/sbin/ipfw add reset tcp from 195.195.195.195 ↵ to any 136-139 in via rl0

# Разрешаем только корректные пакеты на порты публичных# сервисов/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ in via xl0 tcpßags syn,!ack,!psh,!Þn,!urg,!rst/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ in via xl0 tcpßags ack,!syn,!psh,!Þn,!urg,!rst/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ in via xl0 tcpßags ack,psh,!syn,!Þn,!urg,!rst/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ in via xl0 tcpßags ack,Þn,!syn,!psh,!urg,!rst

# IP optionsblock in log level local3.info quick on xl0 ↵ from any to 195.195.195.1 with opt ssrrblock in log level local3.info quick on xl0 ↵ from any to 195.195.195.1 with opt lsrrblock in log level local3.info quick on xl0 ↵ from any to 195.195.195.1 with opt rr

# TCP ßagsblock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags SF/SFblock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags SFUP/SFUPblock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags FPU/FPUblock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags F/Fblock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags U/Ublock in log level local3.info quick proto tcp ↵ from any to 195.195.195.1 ßags P/P

# Разрешенные icmp typespass in quick on xl0 proto icmp ↵ from any to 195.195.195.1 icmp-type echopass in quick on xl0 proto icmp ↵ from any to 195.195.195.1 icmp-type echorep

pass out quick on xl0 proto icmp ↵ from 195.195.195.1 to any icmp-type echoreppass out quick on xl0 proto icmp ↵ from 195.195.195.1 to any icmp-type echoblock in log level local3.info quick on xl0 proto icmp ↵ from any to anyblock out log level local3.info quick on xl0 proto icmp ↵ from any to any

# Реакция на закрытые портыblock in log level local3.info quick on xl0 proto tcp ↵ from any to 195.195.195.1 port = 136 >< 140block in log level local3.info quick on xl0 proto udp ↵ from any to 195.195.195.1

# Разрешаем только правильные tcp-запросы к публичному# сервисуpass in quick on xl0 proto tcp ↵ from any to 195.195.195.1 port = 25 ßags S/Spass in quick on xl0 proto tcp ↵ from any to 195.195.195.1 port = 25 ßags A/Apass in quick on xl0 proto tcp ↵ from any to 195.195.195.1 port = 25 ßags AP/APpass in quick on xl0 proto tcp ↵ from any to 195.195.195.1 port = 25 ßags AF/AF

# Нормализация трафика ав то ма ти чес ки отфильтрует# нестандартные пакеты атакующего, изменит TTLscrub in on xl0 all fragment reassemble min-ttl 20 max-mss 1440scrub on xl0 all reassemble tcp# можно манипулировать IP-опциями, например, сбрасывать# флаг DF в 0scrub out on xl0 all no-df

# Фильтрация TCP-флаговblock in quick proto tcp from any to 195.195.195.1 ↵ ßags SF/SFRAblock in quick proto tcp from any to 195.195.195.1 ↵ ßags SFUP/SFRAUblock in quick proto tcp from any to 195.195.195.1 ↵ ßags FPU/SFRAUPblock in quick proto tcp from any to 195.195.195.1 ↵ ßags F/SFRAblock in quick proto tcp from any to 195.195.195.1 ↵ ßags U/SFRAUblock in quick proto tcp from any to 195.195.195.1 ↵ ßags P/P

# Разрешаем ICMP только echo request и echo replypass in quick on xl0 proto icmp ↵ from any to 195.195.195.1 icmp-type echoreqpass in quick on xl0 proto icmp ↵ from any to 195.195.195.1 icmp-type echoreppass out quick on xl0 proto icmp ↵ from 195.195.195.1 to any icmp-type echoreqpass out quick on xl0 proto icmp ↵ from 195.195.195.1 to any icmp-type echorepblock in log-all quick on xl0 proto icmp from any to anyblock out log-all quick on xl0 proto icmp from any to any

# Блокируем закрытые портыblock in log-all quick on xl0 proto tcp ↵ from any to 195.195.195.1 port 136 >< 140block in log quick on xl0 proto udp from any to 195.195.195.1

# Фильтруем входящие пакеты на публичный сервисpass in quick on xl0 proto tcp from any to 195.195.195.1 ↵ port = 25 ßags S/SA synproxy state

Page 76: 031 Системный Администратор 06 2005

74

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

Операционные системы семейства UNIX позволяют из-ме нять стек TCP/IP гораздо более гибко.

В системе FreeBSD добавим следующие опции в кон-фигурацию ядра:

После этого необходимо пересобрать ядро и пе ре заг ру зить систему. Теперь можно производить настройки на ходу:

Или мы можем закрепить эти параметры в файле /etc/sysctl.conf.

В операционной системе Linux в конфигурацию ядра добавим опции CONFIG_PROC_FS и CONFIG_SYSCTL, ко-торые позволяют менять элементы /proc без пе ре заг руз ки системы или перекомпиляции ядра.

Продукты, которые реализуют защиту системы от fin-gerprinting на уровне опе ра ци он ной системы:! FingerPrintFucker! IP Personality! Morth

В операционной системе Solaris изменять параметры TCP/IP можно утилитой /usr/sbin/ndd. Изменения вступают в силу только после пе ре заг руз ки си с те мы.

Остальные межсетевые экраны можно скон фи гу ри ро-вать соответствующим образом.

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

Изменение параметров стека TCP/IPоперационных системТак, в Windows мы можем менять следующие па ра мет ры стека TCP/IP в разделах реестра HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Services\Tcpip\Parameters и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi-ces\Tcpip\Parameters\Interfaces\ID of Adapter:! KeepAliveInterval – время ожидания перед повторной от-

прав кой пакета, если на предыдущий ответ не получен.! MTU – максимальный размер пакета, который пе ре да-

ет ся через сеть.! TcpMaxConnectRetransmissions – количество по втор-

ных отсылок SYN-пакета, на который не получен ответ при ус та нов ке соединения.

! TcpMaxDataRetransmissions – количество повторных от-сы лок остальных пакетов, на которые не получен ответ.

! TcpWindowSize – максимальный размер окна TCP-со-еди не ния, в байтах.

! DefaultTTL – определяет значение TTL по умолчанию в за го лов ках IP-пакета.

! Tcp1323Opts=1 – изменять значения TCP window и tim-estamps в соответствии с RFC 1323.

# Разрешаем исходящие pingaccess-group 101 in interface outsideaccess-list 101 permit icmp any host 209.165.200.246 ↵ echo-reply# Разрешаем входящие pingaccess-list 101 permit icmp any host 209.165.200.246 echo

# Включаем ана ли за тор про то ко лов при ло же ний. Какие точно# правила фильтрации ис поль зу ет PIX, не ясно. Но тот факт,# что реально клиент устанавливает соединение не с сер ве ром# при ло же ний, а с PIX затрудняет Þngerprintingfuxup protocol ftp 21Þxup protocol smtp 25

# Для филь т ра ции не стан дар т ных или неправильных# TCP/IP-пакетов PIX использует встро ен ную IDS# с фиксированным на бо ром сигнатурip audit name Þngeraudit atack action alarm drop ip audit name Þngeraudit info action alarm drop

# Выберем только те сигнатуры, которые имеют отношение# к Þngerprinting# Нужные нам сигнатуры:# ID Название Тип 400000 1000 IP options-Bad option list Informational400002 1002 IP options-Timestamp Informational400007 1100 IP Fragment Attack Attack400008 1101 IP Unknown IP Protocol Attack 1102 Impossible IP Packet Attack400009 1103 IP Fragments Overlap Attack400023 2150 Fragmented ICMP TrafÞc Attack400026 3040 TCP NULL ßags Attack400027 3041 TCP SYN+FIN ßags Attack400028 3042 TCP FIN only ßags Attack# Остальные сигнатуры можно исключить из политикиno ip audit name Þngeraudit signature sigNip audit interface outside Þngeraudit

# Параметр ID в заголовке IP-пакета генерируется случайноOptions random _ ip _ id# От бра сы ва ют ся пакеты с флагами syn+ÞnOptions tcp _ drop _ synÞnOptions icmp _ bandlim # Включаем кон т роль над ICMP

# Определяем реакцию системы при получении пакета# на закрытый TCP-портsysctl net.inet.tcp.blackhole=2 # Определяем реакцию системы при получении пакета# на закрытый UDP-портsysctl net.inet.udp.blackhole=1# Определяем размер окна TCP-соединения sysctl net.inet.tcp.sendspace=64395sysctl net.inet.tcp.recvspace=64395# Определяем TTL в заголовке IP-пакетаsysctl net.inet.ip.ttl=128sysctl net.inet.tcp.drop _ synÞn=1# Указываем ОС изменять параметры window и timestamps# в соответствии с RFC 1323.sysctl net.inet.tcp.rfc1323=1

# Запрет ICMP echo (ping):echo "1" > /proc/sys/net/ipv4/icmp _ echo _ ignore _ broadcastsecho "1" > /proc/sys/net/ipv4/icmp _ echo _ ignore _ all# Изменяем IP TTL по умолчаниюecho "128" > /proc/sys/net/ipv4/ip _ default _ ttl Скорость генерации ICMP пакетов (по умолчанию 100)echo "70" > /proc/sys/net/ipv4/icmp _ ratelimit# Количество повторных отсылок пакетов, на которые# не по лу чен ответecho "5" > /proc/sys/net/ipv4/tcp _ synack _ retriesecho "5" > /proc/sys/net/ipv4/tcp _ syn _ retries 5# Устанавливаем стандартный размер TCP windowecho "64395" > /proc/sys/net/core/rmem _ default echo "64395" > /proc/sys/net/core/wmem _ default # Изменять параметры TCP window и timespamp# в соответствии с 1323.echo "1" > /proc/sys/net/ipv4/tcp _ window _ scalingecho "1" > /proc/sys/net/ipv4/tcp _ timestamps# Разрешить использование SACK в соответствии# с RFC2018 (SACK будет добавляться в tcp options)Echo "1" > /proc/sys/net/ipv4/tcp _ sack

# Изменяем стандартное значение maximux segmet size.ndd -set /dev/tcp tcp _ mss _ def 546# Отключим «path MTU discovery» и система перестанет# ста вить бит «don�t fragment» ndd -set /dev/ip ip _ path _ mtu _ discovery 0# Устанавливаем закон генерации ISN действительно

Page 77: 031 Системный Администратор 06 2005

75№6, июнь 2005

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

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

Защита от HTTP fingerprinting:

! Замена стандартных баннеров.! Фильтрация или преобразование заголовков HTTP.! Настройка кодов ошибок, таких как 404 или 500.! Использование дополнительного ПО. Для веб-сер ве ра

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

Для веб-сервера APACHE перед компиляцией в src/inc-lude/httpd.h находим строки:

Вместо него напишем (выдаем за ОС Windows + IIS)

Дополнительно проверим, что в http.conf есть:

Защита от SMTP fingerprinting:

! Фильтрация заголовков исходящей почты защитит пользо ва тель с кие почтовые программы и серверные по что вые приложения, расположенные во внутренней сети орга ни за ции от ID fingerprinting.

На внешнем почтовом сервере Sendmail, можно ис поль-зо вать опции:

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

Для почтового сервера QMAIL есть фильтр qmail-masq, который позволяет изменять заголовки исходящих писем, подменяя внутренние адреса внешним.

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

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

Например, в Windows 2000 smtp запустить metaedit.exe, выбрать lm\smtpsvc\<номер вир ту аль но го сервера>: «Edit → new» в ID ввести 36907, в Data ввести баннер.

В Postfix редактируем /etc/postfix/main.cf:

В Sendmail редактируем sendmail.cf:

В EXIM редактируем /etc/exim.conf:

В QMAIL необходимо отредактировать файл smtpgreet-ing, в котором хранится приветственное со об ще ние.

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

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

Можно отключить timestamps там, где они не нужны (на-при мер, на модемном соединении).

ЗаключениеФильтрация и модификация заголовков и другие ме то ды за-щиты от fingerprinting, являются элементом «security through obscurity» (безопасности за счет незнания) и не могут ис-пользоваться в качестве основного средства за щи ты.

Литература и ссылки:1. http://cherepovets-city.ru/insecure/runmap/runmap-osde-

tect.htm.2. http://cherepovets-city.ru/insecure/runmap/runmap-version-

scan.htm.3. http://www.securitylab.ru/49847.html.4. http://www.honeynet.org/papers/finger.5. http://lcamtuf.coredump.cx/p0f.shtml.6. Маскировка локальных адресов в QMail – http://

www.folug.org/sviluppo/qmail-masq/qmail-masq.html.7. Параметры кон фи гу ра ции TCP/IP и NBT для Windows

XP – http://support.microsoft.com/kb/314053/ru.8. Сравнение трех пакетных фильтров FreeBSD 5.3 (IPFW,

PF, IPFILTER) – http://www.opennet.ru/docs/RUS/ipfw_pf_ipfilter/index.html.

9. CP tuning cookbook.10. Кейт Е. Страссберг. Полный справочник по бран д ма у э рам.:

Пер. с англ. – М.: Издательский дом «Вильямс», 2004 г.

# слу чай ным образом.ndd �set /dev/tcp tcp _ strong _ iss 2# Изменяем стандартное значение tcp window sizendd -set /dev/tcp tcp _ xmit _ hiwat 64395ndd -set /dev/tcp tcp _ recv _ hiwat 64395# Изменяем стандартное время жизни пакета (TTL)ndd �set /dev/tcp tcp _ ip _ ttl 128

# deÞne SERVER _ BASEPRODUCT "Apache"# deÞne SERVER _ BASEREVISION "X.X.X"

# deÞne SERVER _ BASEPRODUCT "Microsoft-IIS"# deÞne SERVER _ BASEREVISION "5.0"

# IIS не ставит под пись в рапортах об ошибкахServerSignature Off# Для того чтобы вы да вать толь ко ту информацию,# ко то рую мы изменилиServerTokens Min

MASQUERADE _ AS(mail.somedomain.com) MASQUERADE _ DOMAIN(mailofÞce.somedomain.com)

smtpd _ banner = secure SMTP server

# SMTP initial login message (old $e macro)O SmtpGreetingMessage=$j secure SMTP server; $b

smtpd _ banner = secure SMTP server

# sysctl net.ipv4.tcp _ timestamps=0 net.ipv4.tcp _ timestamps = 0

Page 78: 031 Системный Администратор 06 2005

76

bugtraq

Отказ в обслуживании в продуктах Cisco в опции TCP/IP TimestampПрограмма: VxWorks SN5400 series routers; Cisco CSS11-000 switch series; Cisco AP350 и AP1200 series; MGX8200, MGX8800 и MGX8900 series switches.Опасность: Низкая.Описание: Удаленный пользователь может послать пакет со специально сформированной TCP timestamp опцией и заморозить текущую TCP-сессию.URL производителя: www.cisco.com.Решение: Установите исправление от производителя.

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

Повышение привилегий в QpopperПрограмма: Qpopper версии до 4.0.6.Опасность: Низкая.Описание: Уязвимость существует при обработке конфи-гурационных файлов. Локальный пользователь может пе-резаписать произвольные файлы с root-привилегиями на системе и создать новые файлы с правами на чтение и за-пись для всех пользователей.Решение: Установите последнюю версию от производи-теля.

Множественные уязвимостив GNU MailutilsПрограмма: GNU Mailutils 0.6.Опасность: Высокая.Описание: Уязвимости позволяют удаленному пользова-телю вызвать отказ в обслуживании или выполнить произ-вольный код на целевой системе.

1. Уязвимость форматной строки обнаружена в imap4d-сервере. Удаленный пользователь может с помощью спе-циально сформированной команды вызвать отказ в обслу-живании или выполнить произвольный код на целевой си-стеме. Пример:

2. Переполнение буфера обнаружено в утилите mail в функции header_get_field_name() файла mailbox/header.c. Удаленный пользователь может с помощью специально сформированного сообщения выполнить произвольные команды на системе с привилегиями пользователя, запу-стившего утилиту.

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

4. Обнаружен отказ в обслуживании в imap4d-сервере при обработке аргументов команды FETCH. Удаленный ав-торизованный пользователь может с помощью специаль-но сформированной команды заставить приложения потре-блять все доступные ресурсы на системе.URL производителя: www.gnu.org/software/mailutils/mailu-tils.html.Решение: Установите последнюю версию (0.6.90) от про-изводителя.

%n%n%n%n%n die

Обход ограничений безопасностив Hosting ControllerПрограмма: Hosting Controller 6.1 HotFix 2.0 и более ран-ние версии.Опасность: Средняя.Описание: Уязвимость существует в сценарии UserPro-file.asp из-за недостаточной обработки правил доступа. Удаленный авторизованный пользователь может изме-нить e-mail целевого пользователя и затем воспользовать-ся формой восстановления пароля, чтобы получить до-ступ к учетной записи жертвы. Таким образом, злоумыш-ленник может получить доступ к произвольной учетной за-писи приложения, в том числе и к учетной записи админи-стратора. Пример:

URL производителя: www.hostingcontroller.com.Решение: Способов устранения уязвимости не существу-ет в настоящее время.

<formaction=»http://[URL]/admin// ↵ accounts/UserProÞle.asp?action=updateproÞle»method=»post»>Username : <input name=»UserList» value=»hcadmin»type=»text» size=»50»>< br>emailaddress : <input name=»emailaddress»value=»[email protected]» type=»text» size=»50»>< br>Þrstname : <input name=»Þrstname» value=»Crkchat»type=»text» size=»50»>< br>< input name=»submit» value=»submit» type=»submit»>< /form>

SQL-инъекция и межсайтовыйскриптинг в PostNukeПрограмма: PostNuke 0.750 и более ранние версии.Опасность: Средняя.Описание: Уязвимость позволяет удаленному пользовате-лю произвести XSS-нападение и выполнить произвольные SQL-команды в базе данных приложения.

1. Уязвимость существует в сценарии /modules/Mes-sages/readpmsg.php из-за недостаточной обработки вход-ных данных в параметре start. Удаленный пользователь может с помощью специально сформированного URL вы-полнить произвольные SQL-команды в базе данных при-ложения. Пример:

2. Удаленный пользователь может с помощью специаль-но сформированного URL выполнить произвольный HTML-сценарий в браузере жертвы в контексте безопасности уяз-вимого сайта. Пример:

URL производителя: www.postnuke.com.Решение: Установите последнюю версию (0.750b) с сай-та производителя.

http://[target]/[postnuke _ dir]/modules.php?op=modload&name=Messages&Þle=readpmsg&start=0%20UNION%20SELECT%20pn _ uname,null,pn _ uname,pn _ pass,pn _ p

http://[target]/[postnuke _ dir]/modules.php?op=modload&name=Messages&Þle=rea dpmsg&start=0�<h1>cXIb8O3 and sp3x - SecurityReason</h1>&total _ messages=1

Page 79: 031 Системный Администратор 06 2005

77№6, июнь 2005

web

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

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

Возможности пакетаНаверное, самая часто используемая утилита ImageMagic – это convert. Её возможности мы продемонстрируем на достаточно типовой задаче конвер-тации графических файлов из одного

ИСПОЛЬЗУЕМ IИСПОЛЬЗУЕМ ImagemageMMagickagick В ВЕБ-РАЗРАБОТКЕ В ВЕБ-РАЗРАБОТКЕ

Работа с готовыми изображениями – достаточно распространенное явлениеРабота с готовыми изображениями – достаточно распространенное явление

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

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

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

задач – графический пакет ImageMagick.задач – графический пакет ImageMagick.

КИРИЛЛ СУХОВКИРИЛЛ СУХОВ

ля подобных действий также широко применяется библио-тека GD, имеющая в арсенале своей второй версии , довольно

внушительный список функций.Работать с GD можно посредством

PHP, Perl, Tcl и некоторых других язы-ков. Она имеет широкие возможности, но качество результирующих изобра-жений часто оставляет желать лучше-го. Кроме того, такие действия, как из-менение пропорций, «обрезка» изо-бражения, манипуляции с цветами, вставка другого рисунка, хоть и воз-можны, но крайне неудобны. Здесь на помощь приходит пакет ImageMagick (http://imagemagick.org), представля-ющий прекрасное средство для обра-ботки изображений. Работа с ним воз-можна посредством интерфейсов для различных языков программирования (Perl, Python, PHP, C). Сегодня мы рас-смотрим способы и приёмы работы с графикой PHP с использованием па-кета ImageMagick.

Что представляет собой ImageMagick?Коротко поясню, чем является этот пакет и какие задачи можно решить

с его помощью. Вообще говоря, я ис-пользую не совсем детерминирован-ный термин «пакет», хотя данный про-дукт называют обычно библиотекой и даже утилитой. На самом деле это со-гласованный (что немаловажно) набор утилит для работы с графикой, причём в полном соответствии с идеологией каждая из них выполняет свою задачу. Конечно, возможности ImageMagick не могут сравниться с потенциалом гра-фического процессора, но для наших задач это и не нужно. Если вы поль-зователь *nix-операционной системы, то ImageMagick у вас, скорее всего, уже установлен или по крайней мере присутствует в дистрибутиве. В про-тивном случае забираем его по адре-су http://www.imagemagick.org/script/download.php (присутствуют также версии для Windows и MacOS).

Способы примененияДля PHP-разработчика есть два основ-ных пути работы с изображениями с по-мощью ImageMagic: выполнять коман-ды пакета, пользуясь функцией exec() (или system()), или использовать класс imagick из репозитария PEAR. Боль-шинство программистов применяют

Page 80: 031 Системный Администратор 06 2005

78

web

формата в другой. Вот как просто про-ходит эта операция:

Вот и всё! Под именем test2.gif мы получили копию исходного изображе-ния в новом формате.

Разумеется, продемонстрированная функциональность довольно скромна, но в справке по convert можно найти бо-лее 150 (!) опций этой утилиты, ознако-мившись с которыми, начинаешь пони-мать, почему в названии пакета присут-ствует слово magick.

Скажем, уменьшить вес картин-ки можно, просто включив одну из оп-ций:

Не отступая от традиции, для приме-ра работы библиотеки я взял (не очень качественную) фотографию (рис. 1).

Картинка (в формате jpg) занима-ет 124 Kb. После вышеприведённо-го преобразования получаем рису-нок в формате gif (рис. 2), «весящий» уже 37 Kb.

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

результат на рис. 3.

// исходный файл$primary="test.jpg";// имя нового файла$secundary ="test2.gif";exec("convert ". $primary." " ↵test2.gif);

exect("convert ". $primary." ↵-resize 30% ". test.gif);

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

Утилита mogrify во многом повто-ряет функциональность convert, но ре-зультаты преобразования она сохраня-ет в исходном файле. Кроме того, дан-ная утилита позволяет работать с груп-пой файлов по маске.! Montage – позволяет комбиниро-

вать изображения, создавать ком-позиции.

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

! Combine – комбинирует изображе-ния (очень удобна для нанесения логотипов на картинки).

! Import – «снимает» изображение заданной области экрана.

! Composite – также позволяет созда-вать композиции нескольких изо-бражений и изменять форму изо-бражения.

! Identify – возвращает информацию о параметрах изображения.

Утилита conjure стоит несколько особняком, она представляет собой командный процессор для встроенно-го скриптового языка Magick Scripting Language (MSL).

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

Более подробную информацию по использованию утилит пакета можно увидеть на официальном веб-сайте ImageMagic (http://www.imagemagick.

net/script/command-line-tools.php) или в документации, идущей вместе с дис-трибутивом.

Использование модуля ImagickНедостатки вызова утилит ImageMa-gick как внешних программ становят-ся очевидны, когда операции по ма-нипуляциям с изображениями явля-ются обычной функциональностью приложения. Банальный пример – пу-бличная веб-галерея со средними воз-можностями. Как уже говорилось вы-ше, класс для работы с пакетом при-сутствует (вернее, присутствовал) в репозитарии PEAR. Относительно не-давно на его основе был создан PECL-модуль imagick, доступный в настоя-щее время по адресу: http://pecl.php.net/package/imagick (присутствует и версия под Windows, в виде скомпили-рованной dll, скачать её можно здесь: http://snaps.php.net/win32/PECL_4_3). PECL – это репозитарий модулей PHP, не входящих в официальный дистри-бутив. Большинство из них находятся в разработке, а самые успешные ста-новятся штатными расширениями (из недавних это модуль SOAP).

Расширение устанавливается как обычный php-модуль, в папку ext/imag-ick (или, в зависимости от версии PHP, в extensions/imagick), затем в конфигу-рационном файле php.ini, в секции Dy-namic Extensions, прописываются соот-ветствующие строчки:

После перезагрузки веб-сервера, функ-ции imagick становятся доступны.

Предупреждение для программи-стов, решивших опробовать возмож-ности пакета на операционной систе-ме Windows, – скомпилированная dll бу-дет работать только самой последней версией интерпретатора PHP.

Разумеется, модуль imagick не пре-доставит доступ ко всем возможно-стям ImageMagick (по уверению его создателя, пока), но наиболее рас-пространенные действия с графикой в веб-программировании в нём уже реализованы.

К сожалению, на момент написа-ния статьи официальная документа-

Рисунок 1. Исходное фото

Рисунок 3. Экспериментируем с цветом

Рисунок 2. Уменьшаем «вес» фотографии

exect("convert ". $primary." ↵-coloreze 0, 0, 50 ". test2.gif);

;для UNIX системextension= imagick.so;для Windowsextension=msql.dll

Page 81: 031 Системный Администратор 06 2005

79№6, июнь 2005

web

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

Следует также заметить, что рас-ширение в разработке и все его функ-ции имеют статус экспериментальных, в частности это обозначает, что ис-пользовать их нужно осторожно (use this function at your own risk). Правда, в моей практике никаких опасных сбоев замечено не было. Работа с расшире-нием происходит так:

В первой строчке функцией imagick_create() мы получаем указатель на но-вый экземпляр imagick, который по-том используем во всех дальнейших действиях. Затем с помощью imagick_read() считываем существующее изо-бражение. Формат файла при этом определяется автоматически, если же этого не происходит, разработчики рекомендуют использовать префикс из названия формата, отделённый от имени файла двоеточием (например, GIF:mygif.gif). Данная функция позво-ляет задавать в качестве второго пара-метра и URL (например, http://my.server.com/picture.gif). Другой пример исполь-зования imagick_read():

В данном случае применяется image_new(), синоним и вероятная замена imagick_create ().

Функция imagick_set_attribue() из-меняет атрибуты рисунка, получая в качестве второго параметра их мас-сив. В настоящее время доступны сле-дующие атрибуты:! adjoin! delay! format

Пояснять их значение, я думаю, нет необходимости. Получить атрибуты существующего изображения можно функцией imagick_set_attribute(), при-нимающей в качестве параметров ука-затель и имя атрибута. Сейчас доступ-ны следующие значения:! format! magick! quality

Конечно, список не впечатляет, но всё, что здесь написано, касается вер-сии модуля 0.1, а он активно разраба-тывается.

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

Наконец imagick_free(), как нетруд-но догадаться из названия, освобож-дает указатель и все связанные с ним ресурсы.

Что осталось за рамками нашего небольшого примера? Прежде всего группа функций для преобразования изображений:! imagick_copy_shear() – усекает изо-

бражение до заданных размеров;! imagick_copy_ crop() – также усека-

ет, но с возможностью задания на-чальных координат;

! imagick_copy_rotate() – поворачива-ет изображение вокруг своей оси на заданный угол;

! imagick_copy_sample() – масштаби-рует изображение.

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

Функция imagick_copy_resize(), так-же возвращающая указатель на новый ресурс, позволяет задать размеры изо-бражения, применить к нему фильтр, а также контрастность/размытие (в за-висимости от знака входного параме-тра). На данный момент доступны сле-дующие фильтры:

Imagick_convert() преобразует один файл в другой или (когда конечный файл не указан) выводит его в брау-зер. Её упрощённый вариант imagick_dump(), выводит картинку на экран.

Imagick_annotate() добавляет к изо-бражению текст, принимая в качестве второго параметра массив его атрибу-тов. Пример работы этой функции:

Imagick_list-magickinfo() выводит список доступных файловых форма-тов (в настоящие время таковых бо-лее 130, правда, некоторые из них до-ступны только для чтения).

В заключение хочу заметить, что лидер проекта Imagick, Christian Stock-er, в предварительной документации к модулю сетует на нехватку у него сво-бодного времени на доработку и при-глашает желающих в ней поучаство-вать. Как он утверждает: «It’s really not very hard». Приветствуются также по-желания о том, какие функции следу-ет реализовать в первую очередь. Так что, коллеги, всё в наших руках.

Ссылки:1. Адрес проекта – http://pecl.php.net/

package/imagick.2. Examples of ImageMagick Usage –

http://www.cit.gu.edu.au/~anthony/graphics/imagick6.

3. Graphics from the command line – http://www-106.ibm.com/developer-works/library/l-graf/?ca=dnt-428.

<?php$handle = image _ new() or die ↵("Could not connect");imagick _ read($handle, ↵array("mypic.gif", ↵"http://my.server.com/mypic.png"));imagick _ write($handle, ↵"PNG:mypic.myext");imagick _ free($handle);?>

! magick! quality! size

! height! width

imagick _ annotate($handle,array("primitive"=>"text 150,150 ↵hello world","pointsize"=>60,"antialias"=>1,"stroke"=>�green�,"Þll»=>�#ff7755�,"font»=>"Arial.ttf","rotate"=>90));

<?php$handle = imagick _ create () or ↵die ("Could not create handle")imagick _ read($handle,"myimg.gif");imagick _ set _ attribue($handle, ↵array("quality"=>10, ↵"format"=>"jpeg");imagick _ write($handle,"myimg.jpg");imagick _ free($handle);?>

Page 82: 031 Системный Администратор 06 2005
Page 83: 031 Системный Администратор 06 2005

81№6, июнь 2005

hardware

Если процессор – это сердце ком-пьютера, то BIOS – его душа. Качество прошивки определя-

ет все! К сожалению, качественные прошивки в живой природе встреча-ются достаточно редко. Разработчики допускают грубые ошибки, блокиру-ют многие полезные возможности, в общем, по отношению к потребителю ведут себя нехорошо. Древние моде-ли материнских плат, выпущенные до 2000 года, зачастую вообще не имеют свежих прошивок и с новым оборудо-ванием (например, жесткими дисками большого объема) они уже не работа-ют, а ведь могли бы…

Многие качественные материнские платы умышленно препятствуют раз-гону, имеют скудный диапазон допу-стимых значений или слишком грубый шаг их изменения. Разумеется, очень многое зависит и от «железной» ча-сти, но без правильной прошивки – ни-куда! В сети можно найти множество улучшенных прошивок, модернизиро-ванных энтузиастами, однако все они ориентированы на вполне конкрет-ную модель материнской платы (как

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

А моддинг? Разве не заманчиво заставить компьютер перемигивать-ся клавиатурными огоньками во вре-мя загрузки или выводить красочный логотип на экран?! Одним словом, мо-дифицировать BIOS не только мож-но, но и нужно. Главным образом мы будем говорить об Award BIOS. В AMI все сильно по-другому… Однако когда-нибудь мы доберемся и до них. Кстати говоря, фирма Award была выкуплена Phoenix и в настоящее время суще-ствует только как бренд. А это зна-чит, что последние версии Phoenix-BIOS устроены точно так же, как и Aw-ard, поскольку их разрабатывает одна и та же фирма, правда, на старые про-шивки это утверждение не распростра-няется. Впрочем, существуют готовые редакторы и для них, но не будет зао-

МОДИФИЦИРУЕМ BIOSМОДИФИЦИРУЕМ BIOS

КРИС КАСПЕРСКИ

BIOS-моддинг таит в себе практически неограниченные BIOS-моддинг таит в себе практически неограниченные

возможности: экстремальный разгон системы, возможности: экстремальный разгон системы,

разблокирование скрытых возможностей, исправление разблокирование скрытых возможностей, исправление

ошибок разработчиков, украшения на свой вкус – это высший ошибок разработчиков, украшения на свой вкус – это высший

пилотаж хакерства, требующий знания железа и умения пилотаж хакерства, требующий знания железа и умения

держать дизассемблер в руках. Это дремучий лес, в котором держать дизассемблер в руках. Это дремучий лес, в котором

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

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

Что нам понадобитсяДля экспериментов нам потребует-ся материнская плата с Award-BIOS на борту. Опознать микросхему BIOS очень легко – на ней обычно наклее-на голографическая этикетка, которую необходимо оторвать, чтобы обнажить маркировку. Маркировка представля-ет последовательность цифр наподо-бие «28F1000PPC-12C4».

Как ее расшифровать? Идем на http://www.datasheetarchive.com, за-полняем строку запроса и получа-ем pdf-файл с подробным описани-ем чипа (так называемый datasheet). Теперь необходимо найти идентич-ный или совместимый чип FLASH-па-мяти, над которым мы, собственно, и будем экспериментировать. Его мож-но приобрести в специализированном радиомагазине или вытащить с поло-манной материнской платы. Большо-го дефицита эти чипы не представля-ют, поскольку в материнских платах используются серийные микросхе-

Page 84: 031 Системный Администратор 06 2005

82

hardware

мы, выпускаемые независимыми по-ставщиками.

Для «горячей» замены BIOS (т.е. выдергивания микросхемы с работаю-щей платы) русские умельцы аккурат-но обвязывают микросхему нитками, а затем осторожно тянут вверх (можно, конечно, просто подковырнуть отверт-кой, но при этом легко что-то закоро-тить), а вот иностранцы после эпиде-мии «чиха» придумали специальные приспособления – chip extractor (съем-щик чипов) и BIOS savior (BIOS-спаси-тель). По сути дела, это одно и то же приспособление, только торговые мар-ки разные. Приобрести их можно в ра-диомагазинах или заказать по Интер-нету (см. рис. 1-6).

Еще нам потребуется документа-ция на чипсет материнской платы. Ком-пании Intel и AMD бесплатно выклады-вают все, что нужно на сайт. Другие производители (VIA, SiS) держат доку-ментацию под спудом и отдают только за деньги плюс подписку о неразгла-шении. В частности, на дисках, рассы-лаемых компанией AMD, встречается много интересной документации со штампом «confidential», пролистывая которую, ощущаешь волнующее чув-ство причастности к тайне.

Комплект утилит для прошивки BIOS можно найти на сайте разработ-чика конкретного BIOS или произво-дителя материнской платы. Некото-рые производители (например, ASUS) вносят в BIOS большое количество из-менений, в результате чего «родные» утилиты от Award перестают с ними работать и приходится использовать инструментарий, поставляемый вме-сте с материнской платой. Обычно там содержится:! awdflsh.exe – «прожигатель»;! modbin – простой редактор BIOS;

! cbrom – просматривает содержи-мое BIOS и добавляет новые мо-дули в прошивку.

Все эти утилиты можно найти на сайте www.rom.by. Там же находится замечательный «патчер» BIOS – BP.exe (сокращение от «BIOS Patсher»), ис-правляющий ошибки в известных ему прошивках и разблокирующий многие заблокированные возможности. Нашим основным инструментом будет интерак-тивный редактор BIOS Award BIOS Ed-itor, который можно бесплатно скачать c http://awdbedit.sourceforge.net.

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

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

Рисунок 1. Микросхема Award BIOSс традиционной голографическойнаклейкой, по которой её легкоопределить

Рисунок 2. Набор BIOS Savior kitдля безопасного извлечения микросхемыBIOS с материнской платы и «кроватка»для резервного BIOS с переключателем,устанавливаемым на заднюю панель

Рисунок 3. Положение рук при съемкемикросхемы

Рисунок 4. Установка «кроватки»с двойным BIOS � снизу оригинальнаямикросхема, сверху � экспериментальная

Рисунок 5. Двойной BIOS в собранномсостоянии

Рисунок 6. Переключатель, отвечающийза выбор между оригинальным (ORG)и экспериментальным (RD1) BIOS

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

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

Page 85: 031 Системный Администратор 06 2005

83№6, июнь 2005

hardware

упасть на плату, малейшая ошибка в прошивке может вывести оборудова-ние из строя (например, переключить стабилизатор на повышенное напря-жение, выбрать слишком большую так-товую частоту и т. д.). До приобретения боевого опыта лучше всего экспери-ментировать над старыми матерински-ми платами, которые все равно идут в утиль (например, Pentium-155).

Первые экспериментыЗапускаем Award BIOS editor (кстати говоря, он запускается только из-под GUI, а под FAR просто «слетает»), в меню File выбираем файл с прошив-кой, которую мы будем модифициро-вать (предварительно ее необходимо скачать с сайта производителя или за-пустить AWDFLASH.EXE с ключом /sy, чтобы сохранить текущую прошивку в файл). В левой колонке выбираем пункт «System BIOS» и смотрим, что хорошего тут можно изменить. А из-менить тут можно очень многое! На-пример, имя BIOS, высвечивающее-ся при загрузке (в моем случае это: Award Modular BIOS v6.00PGN), да-ту выхода и название чипсета (03/29/2001-i815-W83627F-6A69RI3DC-00) и другие идентификационные строки по-добного типа. А давайте напишем «as-sembled at military-industrial USA facto-ry», чтобы потом подшучивать над при-ятелями (см. рис. 7).

Точно так же можно заменить все надписи в «BIOS Setup» (они находят-ся во вкладке «BIOS Options») и от-редактировать значения по умолча-нию (те самые, что загружаются по

команде «load default BIOS configurat-ion») под свой вкус. Наибольший ин-терес представляют пункты, поме-ченные как «Disabled». Это и есть оп-ции, заблокированные производите-лем! Простым переводом радиокноп-ки в состояние «Active» мы разблокиру-ем их! Разумеется, никакой гарантии, что система после этого заработает, у нас нет. Чаще всего блокируются не-доделанные или нестабильно работа-ющие режимы и возможности. Реже – производитель просто не хочет, чтобы материнские платы начального уров-ня конкурировали с дорогими моде-лями, вот и тормозит их. Нестабильно работающая материнская плата спо-собна разрушить содержимое жестко-го диска еще в процессе загрузки Wi-ndows, поэтому экспериментировать

на своем рабочем винчестере недо-пустимо! Используйте запасной жест-кий диск, на котором нет ничего цен-ного. Запустите несколько тестирую-щих программ и дайте им поработать несколько суток. Если за это время не произойдет ни перезагрузок, ни зави-саний, можно переходить на основной жесткий диск, на всякий случай, пред-варительно зарезервировав его содер-жимое (см. рис. 8).

А хотите изменить логотип, высве-чивающийся в северо-восточном углу экрана? Это совсем несложно сделать. Старые BIOS хранили картинку в сек-ции «LOGO» в нестандартном форма-те, условно называемом logo-форма-том. С ним была связана куча огра-ничений, и требовался специальный конвертор, иногда прилагаемый к ма-

Рисунок 7. Award BIOS editor, готовый к модификациитекстовых строк, отображающихся при загрузке системы

Рисунок 8. Разблокирование заблокированных возможностейв «BIOS Setup» в Award BIOS editor

Как прожигают BIOSAMI BIOS имеют специальный интер-фейс, позволяющий работать с микро-

схемой FLASH-памяти (читать или про-жигать), доступный через прерывания INT 15h и INT 16h (подробности– в Inter-

rupt List Ральфа Брауна). Award BIOS такой возможности не имеют и программируются че-рез порты ввода/вывода.

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

Рисунок 9. Микросхема FLASH-памяти, подключеннаяк южному мосту

Page 86: 031 Системный Администратор 06 2005

84

hardware

Редактирование BIOSНекоторые утилиты, например, WP-CREDIT.EXE, позволяют редактиро-вать содержимое регистров чипсета «на лету» прямо из-под Windows, что особенно полезно для экспериментов по экстремальному разгону систем, однако их возможности весьма огра-ниченны, поскольку многие регистры должны настраиваться лишь на ста-дии инициализации чипсета и всякая попытка их изменения на работающей системе носит непредсказуемый ха-рактер или не носит вообще никакого (чипсет нас попросту игнорирует).

теринской плате, но чаще его приходилось писать самосто-ятельно.

Сейчас же секция «LOGO» в большинстве случаев пуста, а картинка хранится в секции «EPA pattern» в стандартном BMP-формате. Ограничений на размер и глубину цветно-сти нет никаких, однако не все BIOS поддерживают слишком большие и цветастые картин-ки. Что произойдет, если под-сунуть BIOS картинку, кото-рую он не в состоянии обра-батывать? Ничего страшно-го! Система либо откажется выводить ее на экран или вы-ведет с искажениями. Чтобы не попасть впросак, рекомен-дуется отталкиваться от уже существующей картинки: из-влекаем оригинальный лого-тип в файл (в Award BIOS Edi-tor за это отвечает команда «Export as Windows BMP»), загружаем его в Paint и правим в свое удовольствие без из-менения глубины цветности и разме-ров. Один из примеров такой работы приведен ниже.

При желании можно зашить в BIOS полноэкранный логотип, высвечива-емый при загрузке. Этим занимается одноименная утилита от Award, вхо-дящая в штатный комплект поставки многих материнских плат ASUS. Од-нако в некоторых BIOS задержка вы-вода полноэкранного логотипа столь мала, что ряд CRT-мониторов просто не успевают прогреться за это время! Но ведь не переходить же ради это-го на LCD-монитор? Разумеется, нет! Достаточно найти величину задерж-

ки в настойках BIOS и увеличить ее! А для этого нам вновь пригодится Award BIOS editor (см. рис. 11).

А вот еще один трюк. Запустив уже упомянутую утилиту BP.EXE с ключом /c, мы сможем вручную задать имя про-цессора, высвечивающееся при за-грузке, и его тактовую частоту. Реаль-ная тактовая частота отображаться уже не будет. Почему бы не написать «AMD Pentium-V 666 GHz beta» и не по-хвастаться перед друзьями?

Да много чего можно придумать! В умелых руках BP.EXE и Award BIOS ed-itor творят настоящие чудеса! Как бы там ни было, после всех издевательств прошивка должна быть залита в BIOS. О том, как это сделать, можно прочи-тать в документации на материнскую плату (см. рис. 12).

Настройка PCI-регистровКонфигурирование чипсета осущест-вляется специальными регистрами, доступными через шину PCI. При за-грузке системы BIOS настраивает про-цессор, контроллер системной шины, контроллер оперативной памяти и всю прочую периферию в соответствии с настройками, выбранными в «BIOS Setup». Однако практически ни один BIOS не дает доступа ко всем настрой-кам чипсета или умышленно ограни-чивает диапазон доступных значений. Как быть, что делать?

Запускаем Award BIOS edi-tor, заходим в System BIOS, на-ходим вкладку «Chipset Reg-isters» и открываем докумен-тацию на чипсет. Где-то там должен быть раздел «PCI Con-figuration Registers» или что-то в этом роде. Для каждо-го из регистров будет указа-но устройство (device), к ко-торому он «подключен», но-мер функции (function) и но-мер самого регистра, также называемый смещением (of-fset). Все регистры 8-битные, однако несколько последова-тельных регистров могут объ-единяться в слова или даже двойные слова.

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

ных возможностях (о которых мы уже говорили выше) их нет! В частности, мой любимый AMD 761 поддерживает намного больший диапазон таймингов, чем указано в BIOS Setup. Взять хо-тя бы величину tPR (time to precharge), определяющую время закрытия DR-AM-страницы, в процессе которого происходят возврат данных в банк па-мяти и его перезарядка. По умолчанию BIOS ставит 3 такта и не дает его изме-

Рисунок 11. Изменение стандартногологотипа, выводимого при загрузкена экран

Рисунок 12. Прожигание BIOSспециализированной утилитой от ASUS

Рисунок 10. Страничка из документации на чипсет,описывающая конфигурационные регистры

Page 87: 031 Системный Администратор 06 2005

85№6, июнь 2005

hardware

нять. Чтобы сократить tPR до 1 такта, необходимо модифи-цировать 8 и 7 биты регистра Dev 0:F0:0x54, присвоив им значение 2 («10» в двоичной нотации). Остальные биты не трогать! А как это сделать? Необходимо наложить ма-ску (mask), которая в данном случае будет выглядеть так: «XXXX XXX1 1XXX XXXX». Как видно, 8 и 7 биты установ-лены в единицу, остальные помечены знаком «Х», указы-вающим BIOS, что данный бит необходимо оставить без из-менений (см. рис. 10).

Запись «Dev0:F0:0x54» обозначает: Device 0:Function 0:Register 0x54. На самом де-ле этих регистров целых два. Регистр 0x54 хранит младшую, а 0x55 – стар-шую половину слова. Следователь-но, в 0x54 необходимо занести 80h («10.00.00.00»), а в 0x55 – 01h. Соот-ветственно в первом случае маска бу-дет равна 80h («1X.XX.XX.XX»), а во втором 01h.

Возвращаемся к Award BIOS Edi-tor, находим регистр с номером 0x54 и, кликнув правой клавишей мыши, выбираем пункт «modify». В появив-шемся окне первые три поля (Regis-ter, PCI, PCI) оставляем без измене-ний (это номер регистра, устройства и функции), а вот с двумя последую-щими полями «Resister» и «Value» при-дется разобраться особо. Мы не можем просто взять и записать значение 0x-80, поскольку в этом регистре уже хра-нятся какие-то параметры, модифи-цирующие остальные поля. Мы долж-ны устанавливать лишь «наши» би-ты (в данном случае это бит 7), а над остальными выполнить операцию ло-гическое «OR» по маске. Аналогичным образом настраивается и регистр 55h (см. рис. 13).

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

Аналогичным образом можно ре-дактировать и остальные регистры, от-сутствующие в BIOS Setup, однако на-

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

ЗаключениеКроме Award BIOS editor существуют и другие программы для редактиро-

Рисунок 13. Разгон системы при помощи редактированияконфигурационных регистров

вания BIOS или расширения его возможностей. Они пере-числены во врезке.

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

сервер я бы не рискнул)! Но должны же у администратора быть хоть ка-кие-то развлечения, тем более что экспериментировать со списанными материнскими платами никто не за-прещает!

DUAL-BIOS своими рукамиКаждый радиолюбитель, умеющий держать паяльник в руках, может дора-ботать материнскую плату, установив на нее сразу две микросхемы FLASH–памяти. Тогда между ними можно бу-дет переключаться без труднодоступ-ного и притом весьма дорогостоящего chip-extractor. Как видно из рис. 14, ни-чего сложного в DUAL-BIOS нет.

Рисунок 14. Принципиальная схемаDUAL-BIOS

Интересные ссылки:1. http://www.biosmods.com (на англ.)2. Статьи по прошивке и их доработ-

ке (на русс.): http://www.rom.by.3. FAQ по BIOS (на рус.): http://www.

ixbt.com/mainboard/faq/biosfaq.shtml.4. Сайт хакера, исследовавшего ку-

чу BIOS вдоль и поперек (на англ.): http://www.geocities.com/mamanzip.

5. Статья о модификации BIOS (на англ.): http://www.ryston.cz/petr/bios/ga586hx_mod.html.

6. Статья известнейшего хакера по внедрению своего кода в BIOS (на англ.):http://www.codebreakers-jour-nal.com/include/getdoc.php?id=83&article=38&mode=pdf.

7. Новые идеи по внедрению своего ко-да в BIOS (на англ.): http://www.code-breakers-journal.com/include/getdoc.php?id=127&article=58&mode=pdf.

8. Исходные тексты пары устаревших прошивок (на ассемблере): http://miscellaneous.newmail.ru.

9. Описание формата BIOS для его ручной распаковки (на рус.): http://www.winsov.ru/bios002.php.

10. Статья по редактированию реги-стров чипсета (на рус.): http://www.tweakfactor.com/articles/tweaks/amd762/1.html.

11. Разгон системы путем редактирова-ния регистров чипсета: http://www.overclockers.com/tips105/index.asp.

12. Утилита для модификации регист-ров чипсета: http://www.h-oda.com.

13. Редактор Award BIOS: http://awd-bedit.sourceforge.net.

14. Утилита для автоматизированно-го внедрения своего кода в BIOS: http://webzoom.freewebs.com/tmod/Awdhack.zip.

Page 88: 031 Системный Администратор 06 2005

86

IMHO

Понимание этих особенностей, причем не на интуитивном уров-не, а вполне осознанное, долж-

но помочь пользователям, «воспитан-ным» на DOS и Windows, при перехо-де на UNIX-подобные системы. Я не претендую на абсолютную истинность мыслей, которые здесь прозвучат. Так или иначе, но каждый будет пропускать все сквозь призму своего опыта.

Какой должна быть идеальная ОС?Для начала попытаемся сформулиро-вать некоторые требования к идеаль-ной с точки зрения конечного пользо-вателя операционной системе.

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

нятности.Во-вторых, с системой должно быть

удобно работать. Из курсов эргономи-ки и психологии известна так называе-мая формула «7 ± 2», согласно которой человек способен охватить своим вни-манием одновременно от 5 до 9 объек-тов. Таким образом, и операционная система должна строиться с расче-том, чтобы пользователю не приходи-лось постоянно держать в уме большее количество возможных действий, клю-чей и т. д. То есть важно, чтобы конеч-ный результат мог быть получен за не-большое количество «ходов». Это бу-дет требование эргономичности.

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

сти разработчика.

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

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

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

Заметили противоречие требова-ний ответственности разработчика и модифицируемости? Действительно, как разработчик будет что-либо га-рантировать, если пользователь мо-жет сам менять систему?

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

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

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

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

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

РАЗМЫШЛЕНИЯ О UNIX

СЕРГЕЙ СУПРУНОВ

Различия операционных систем семейств Windows и UNIX видны практически

с первого взгляда и в процессе работы становятся все более отчетливыми.

Попытаемся обобщить и систематизировать основные принципы UNIX,

делающие представителей этого семейства операционных систем именно

такими, какие они есть.

Page 89: 031 Системный Администратор 06 2005

87№6, июнь 2005

IMHO

или иного объекта. То есть документа-ция вырождается в инструкцию.

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

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

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

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

Кто несет ответственность: разработчикиили пользователь?Следующий принцип, вытекающий из требования модифицируемости, – от-каз от ответственности разработчика. Раз пользователь вправе менять в си-стеме все, что ему заблагорассудит-ся, то и вся ответственность за послед-ствия ложится на него. То есть UNIX ориентирован на квалифицированно-го пользователя, который любое дей-ствие выполняет осознанно. А раз так, то можно сэкономить немного (а иногда и много) ресурсов на «откате» – поль-зователю предоставляется возмож-ность отменить последнюю операцию только в том случае, если существует вероятность опечатки. Например, в ре-дакторе vi существует отмена послед-него действия, но только последнего – у пользователя будет время увидеть свою ошибку и исправить ее, а если со-всем «заредактируется» – всегда к его услугам возможность выйти без сохра-нения. При работе в командной строке, как правило, ни возможности возврата, ни дополнительных вопросов не преду-сматривается. Действительно, вряд ли можно совершенно случайно набрать «rm -Rf/ ». А раз уж эта команда была набрана, значит, именно она и должна быть выполнена. В конце концов, это оскорбительно, когда какая-то «желе-зяка» сомневается в правильности ва-ших решений.

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

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

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

Что в итогеОписанные выше принципы, есте-ственно, не являются догматически-ми, и разработчики различных инстру-ментов и дистрибутивов операционных систем вольны смещать акценты в ту или иную сторону. Например, в редак-торе vim может быть отменено любое количество последних операций – его разработчики решили пожертвовать некоторыми ресурсами системы ра-ди дополнительного удобства пользо-вателя. (По мнению некоторых, такое отступление от идеологии развраща-ет, поскольку отучает обдумывать каж-дый свой шаг.) Системы Linux, ориенти-рованные на среднеквалифицирован-ного пользователя, все больше внима-ния уделяют графическому интерфей-су и пошаговым процедурам настрой-ки, хотя их «проективность» в полной мере доступна через окно термина-ла. Такой гибридный подход к постро-ению системы сыграл далеко не по-следнюю роль в увеличении популяр-ности Linux как для домашних машин и рабочих станций, так и для построе-ния серверов.

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

Page 90: 031 Системный Администратор 06 2005

88

полезные советы

Тема по ис ка до пол ни тель но го заработка ак ту аль на для мно-гих IT-спе ци а ли с тов. Когда ва-

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

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

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

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

СИСТЕМНЫЙ АДМИНИСТРАТОР –ИЩЕМ ДОПОЛНИТЕЛЬНЫЕ ИСТОЧНИКИ ДОХОДА

РОМАН МАРКОВ

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

зарабатывать больше. Однако смена работы в ближайшие планы не входит, а работодатель

не в состоянии увеличить вам зарплату. Лучший вариант в этой ситуации – искать

дополнительные источники дохода.

Page 91: 031 Системный Администратор 06 2005

89№6, июнь 2005

полезные советы

тов ка, по вы ше ние ква ли фи ка ции и по-иски новых идей.

С чего начать?Прежде всего с оценки соб ствен ной квалификации. Именно исходя из это-го вы смо же те понять – нужно ли сроч-но ее повышать (либо осваивать дру-гие технологии – об этом мы также по-го во рим) или уже можно брать «с ме с-та в карьер». Тут возможным ре ше ни-ем яв ля ет ся со вме ще ние са мо об ра зо-ва ния и поиска дополнительной ра бо-ты, а за ча с тую – и повышение/рас ши-ре ние своей квалификации уже на до-пол ни тель ном ра бо чем месте. Сто ит ответить на воп рос – а какие все-таки сети и про грамм ное обес пе че ние вы в состоянии ад ми ни с т ри ро вать, не на пря-га ясь и не зат ра чи вая на это бо лее од-но го часа в день. На самом деле, да-же час в день – это много при уда лен-ном ад ми ни с т ри ро ва нии не боль шой сети до 10-20 ком пь ю те ров. Мой лич-ный опыт, а также ин фор ма ция кол лег по ка зы ва ют, что, как пра ви ло, при от-ла жен ной схеме на это тра тит ся не бо-лее двух-трех часов в не де лю при ус ло-вии, что система отлажена и ра бо та ет бе зуп реч но, а пользователи не зада-ют глупых вопросов каждые 5 ми нут. На этих ас пек тах мы более под роб но ос та но вим ся далее.

Теперь необходимо упомянуть о про фес си о наль ных навыках. Не хо-чет ся обидеть ува жа е мых и чтимых мной пред ста ви те лей UNIX-сообще-ства, од на ко на данный момент сред-нестатистической опе ра ци он ной си-стемой для рабочих станций (да и для серверов) в мелких и сред них рос сий с-ких фирмах все же яв ля ет ся Microso-ft Windows. Поэтому, если вы дей стви-тель но хотите получить воз мож ность до пол ни тель но го заработка, эти ОС при дет ся хорошо изучить. В про тив-ном случае вы не будете во с тре бо ва-ны боль шин ством таких ком па ний, а имен но они и являются для вас по тен-ци аль ны ми кли ен та ми. Любые фразы о том, что «мож но все на стро ить под Linux, 1С за пу с тить в режиме эмуля-ции, а OpenOffice аб со лют но та кой же, как и Microsoft Office» почти во всех случаях обречены на провал – никто не захочет работать в дру гой опера-ционной сре де, обучаться за но во и пр. При этом я ни в коем случае не говорю о том, что про бле ма тич ным окажет-

ся перевод backend-серверов (фай ло-вых служб, печати, web и т. п.) на дру-гие ОС. В этом случае на кли ен т с ких компьютерах все равно ос та ет ся Win-dows, а сервер ад ми ни с т ри ру ет «при-хо дя щий спе ци а лист». Однако сто ит по мнить, что ник то не захочет нани-мать «только сер вер но го спе ци а ли с-та» – вам придется на стра и вать и кли-ентские ком пь ю те ры.

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

Участвуйте в спе ци а ли зи ро ван-

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

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

Для эффективной саморекламы

при ни май те участие не только в кон-

фе рен ци ях для системных ад ми ни с-

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

Дело в том, что на таких кон фе рен-ци ях под грифом «Offtopic» постоянно

Page 92: 031 Системный Администратор 06 2005

90

полезные советы

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

Опишем данный процесс под роб-нее. Это не теория, а именно прак ти чес-кий опыт реализации, про ве рен ный и при но ся щий свои плоды.

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

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

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

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

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

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

Как успешно провести переговоры?Теперь стоит поговорить о стиле про-ве де ния переговоров, если вас уже пригласили на собеседование, чтобы подробнее ознакомиться с пред ла га-е мы ми вами услугами и рассказать о тех проблемах, которые необходи-мо ре шить. Очень внимательно от-неситесь к этим советам – они не го-лословны и в большинстве своем по-могают вы де лить ся из числа других кандидатов.

Пред ва ри тель ная договоренность о встречеКак правило, это телефонный звонок. Уже в этот момент вы должны про из ве-с ти первое впечатление на по тен ци аль-но го заказчика, ведя разговор чет ко и уверенно. Дайте понять собеседнику, что вы деловой человек, проявив пун-к ту аль ность при назначении времени встре чи. Четко оговорите дату, время и ме с то встречи, узнайте, кого не об хо ди-мо будет найти (ФИО и дол ж ность), ка-кие документы необходимо взять с со-бой. Всегда имейте при себе паспорт, что бы не попасть впросак на проход-ной, вынудив сотрудника ком па нии ула жи вать эти вопросы. На зна чай те встречу на точное время, а не «с утра до обе да» – цените время других, и они оце нят вас. Максимально до пу с ти-мое уточ не ние времени – до 30 ми нут, при условии вашей ссылки на труд но-сти проезда из-за пробок. На ли чие ав-то мо би ля, кстати, большой плюс в дан-ном случае. Если он у вас есть – не за-

Page 93: 031 Системный Администратор 06 2005

91№6, июнь 2005

полезные советы

будьте при разговоре не при нуж ден но об этом упомянуть.

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

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

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

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

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

Со своей стороны, очень ре ко мен-

дую иметь дело только с теми фир ма-ми, которые имеют скоростное под клю-че ние к сети Интернет, чтобы вы мог-ли уда лен но конфигурировать не об хо-ди мые параметры и ди аг но с ти ровать проблемы. Уверяю вас, что больше 75% проблем решаются именно так и, как правило, являются следствием невнимательности пользо ва те ля. Ес-ли на каждый такой сигнал вы буде-те вы ез жать, то уже через пару меся-цев (мак си мум) ра бо тать с заказчиком пре кра ти те.

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

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

Тему можно развивать очень дол го, однако это выведет нас за рамки дан-ной статьи. Если у вас возникнут во-просы или появится желание по дис ку-ти ро вать – добро пожаловать на форум журнала «Системный ад ми ни с т ра тор» (www.samag.ru) для об суж де ния.

ОТ РЕДАКЦИИЕсть еще один эффективный способ дополнительно зарабатывать, о кото-ром не упомянул Роман Марков в сво-ей статье. Впрочем, он только что про-демонстрировал его на деле – каждый из вас может стать автором нашего журнала! Поделитесь с коллегами по-ложительным опытом, расскажите об успешном решении проблем - это при-несет вам дополнительный доход, ува-жение и известность в IT-кругах.

Ваши статьи, исследования, раз-работки и заметки отправляйте на адрес [email protected] для Натальи Хвостовой.

Page 94: 031 Системный Администратор 06 2005
Page 95: 031 Системный Администратор 06 2005

93№6, июнь 2005

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

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

ющего программирования и удачно сочетаются теорети-ческие и практические сведения. Среди рассмотренных тем: методы и приемы анализа и проектирования (инже-нерия предметной области и объектно-ориентированные методы анализа проектирования, моделирование харак-теристик), технологии реализации (родовое программи-рование, компонентно-ориентированные методики ша-блонного программирования на С++, аспектно-ориенти-рованное программирование, генераторы, статическое и ментальное программирование на С++). В разделе прак-тических примеров рассмотрены варианты реализации спискового контейнера и порождающей библиотеки рас-чета матриц. Материал сопровождается большим коли-чеством примеров и иллюстраций. Книга рассчитана на опытных программистов.Издательство «Питер», 2005 г. – 731 стр. ISBN 5-469-00118-

0 (ориг. ISBN 0-201-30977-7).

Linux. Программирование в примерахАрнольд РоббинсИз эпиграфа к книге: «Од-ним из лучших способов научиться программирова-нию является чтение хоро-шо написанных программ». Именно этому совету и по-следовал автор. Все рас-сматриваемые темы сопро-вождаются изучением кон-кретных примеров, боль-

шинство из которых являются исходным кодом канони-ческой версии UNIX v7. Среди подробно рассмотренных тем: аргументы, опции и переменные окружения. Управ-ление памятью на уровне пользователя, файлы и файло-вый ввод/вывод. Каталоги и служебные данные файлов, общие библиотечные интерфейсы. Среди более слож-ных тем: управление процессами и каналы, сигналы, ин-тернационализация и локализация, расширенные интер-фейсы. Отдельная глава книги посвящена отладке при-ложений. Весь материал основан на личном опыте авто-ра, полученном более чем за 15 лет программирования, а «житейские» советы, которыми он делится, приходятся всегда кстати. На мой взгляд, это одно из лучших изда-ний, посвященных программированию на С под Linux из появившихся за последнее время.Издательство «КУДИЦ-ОБРАЗ», 2005 г. – 657 стр. ISBN 5-

9579-0059-1 (ориг. 0-13-142964-7).

UNIX/Linux. Теорияи практика программированияБрюс МолиКнига посвящена вопросам системного программирова-ния в среде UNIX. Основная задача издания показать, как работает UNIX изнутри. В ка-честве основных языков раз-работки выступают C и shell script. Приводятся подробные сведения о вводе/выводе для файлов и устройств, а также

о таймерах, драйверах терминала. Рассмотрены вопросы, посвященные созданию соединения между локальными и удаленными процессами, сокетам. Отдельные главы посвя-щены POSIX-нитям, параллельным функциям и IPC. На всем протяжении книги излагаемый материал сопровождается примерами исходного кода и иллюстрациями. В качестве примеров автор предлагает разработку собственных вер-сий команд who, ls, pwd, простого варианта sh и минималь-ную версию веб-сервера httpd. Контрольные вопросы и за-дания в конце каждой из глав помогут читателю проверить, насколько хорошо был усвоен прочитанный материал.Издательство «КУДИЦ-ОБРАЗ», 2004 г. – 576 стр. ISBN 5-

93378-087-1 (ориг. 0-13-008396-8).

Windows server 2003. СправочникМитч ТаллочЭто издание можно смело назвать настольной книгой любого администратора ОС Windows 2003. Автор разде-лил задачи на выполняемые с помощью графического ин-терфейса и на исполняемые из командной строки, что не-сомненно очень удобно. При-водятся подробные сведе-ния о DHCP, AD, DFS, DNS,

WINS, автоматических обновлениях, аудите, групповых политиках, делегировании прав, дистанционном управле-нии рабочим столом, доменах, консоли управления MMC и многом другом. Среди рассмотренных команд и утилит командной строки: bootcfg, diskpart, driverquery, net, netsh, route, rsh и других, многие из них появились только в W2k3. На всем протяжении изложения материала автор приме-няет «справочный» стиль изложения, раскрывающий са-мую суть задачи.

Издательство «Питер», 2005 г. – 748 стр. ISBN 5-469-00-

023-0 (ориг. 0-596-00404-4).Рубрику ведет

Александр Байрак

Page 96: 031 Системный Администратор 06 2005

94

bugtraq

Ошибка при обработке zip-архивовв MailScannerПрограмма: MailScanner 4.41.3.Опасность: Низкая.Описание: Уязвимость существует при обработке опреде-ленных типов zip-файлов. Удаленный пользователь может обойти фильтрацию сообщений и заставить приложение не генерировать отчет об обнаружении вируса.URL производителя: www.sng.ecs.soton.ac.uk/mailscanner.Решение: Установите обновление с сайта производителя.

Отказ в обслуживании в ImageMagickи GraphicsMagick XWD-декодереПрограмма: ImageMagick версии до 6.2.2-3; GraphicsMag-ick версии до 1.1.6-r1.Опасность: Средняя.Описание: Уязвимость существует при обработке цветовых масок в XWD-декодере. Удаленный пользователь может с помощью специально сформированного изображения (цве-товая маска установлена в ноль) заставить уязвимое прило-жение потреблять все доступные ресурсы на системе.Решение: Установите последнюю версию от производи-теля.

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

Множественные уязвимостив Ipswitch Imail-сервереПрограмма: Ipswitch Imail 8.13 и более ранние версии.Опасность: Критическая.Описание: Обнаруженные уязвимости позволяют удален-ному пользователю вызвать отказ в обслуживании, полу-чить доступ к потенциально важным данным и выполнить произвольный код с системными привилегиями.

1. Уязвимость обнаружена при обработке входных дан-ных в команде STATUS в IMAP-сервере. Слишком длинное имя почтового ящика может вызвать переполнение стека и позволить удаленному авторизованному пользователю выполнить произвольный код на целевой системе с при-вилегиями Local System.

2. Уязвимость существует при обработкe NULL-симво-лов в команде LSUB в процессе IMAPD32.EXE. Удаленный пользователь может с помощью специально сформирован-ного аргумента команды заставить уязвимый процесс по-треблять все доступные ресурсы на системе, что приведет к отказу в обслуживании.

3. Уязвимость обнаружена в команде LOGIN. Удаленный неавторизованный пользователь может послать в качестве имени пользователя строку длиной более 2000 байт, вы-звать переполнение стека и выполнить произвольный код на целевой системе.

4. Уязвимость существует при обработке некоторых символов (% : * @ &) в команде LOGIN. Удаленный неав-торизованный пользователь может с помощью специаль-но сформированного имени пользователя выполнить про-извольный код на целевой системе.

5. Уязвимость обнаружена при обработке запроса к не-существующим javascript сценариям (jsp) в Imail Web Calen-daring. Удаленный неавторизованный пользователь может с помощью символов обхода каталога прочитать произволь-ные файлы на системе. Пример:

6. Уязвимость при обработке данных в команде SE-LECT в IMAP сервере позволяет удаленному авторизован-ному пользователю вызвать отказ в обслуживании. Злоу-мышленник может послать строку длиной более 260 байт и аварийно завершить работу приложения.URL производителя: www.ipswitch.com.Решение: Установите исправление от производителя: ftp://ftp.ipswitch.com/Ipswitch/Product_Support/IMail/imail82hf2.exe.

GET /bla.jsp?\..\..\..\..\..\..\..\..\..\..\boot.ini HTTP/1.0Connection: CloseHost: example.comUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Pragma: no-cache

Множественные уязвимостив BEA WebLogicПрограмма: BEA WebLogic 6.1, 7.0, 8.1.Опасность: Средняя.Описание: Обнаруженные уязвимости позволяют удален-ному пользователю получить доступ к потенциально важ-ной информации и вызвать отказ в обслуживании.

1. Пользователь с привилегиями Monitor security role мо-жет манипулировать JDBC-пулами. Уязвимые приложения: WebLogic Server / Express 8.1 Service Pack 2 (all platforms), WebLogic Server / Express 8.1 Service Pack 3 (all platforms).

2. Ошибка при обработке исключений в security provid-er позволяет злоумышленнику управлять аудитом исклю-чений. Уязвимые приложения: WebLogic Server / Express 8.1 Service Pack 3 (all platforms), WebLogic Server / Express 7.0 Service Pack 5 (all platforms).

3. Приложение не требует пройти повторную аутентифи-кацию пользователей после изменений политик безопас-ности. Уязвимые приложения: WebLogic Server / Express 7.0 Service Pack 5 (all platforms).

4. После неудачной авторизации пароль пользователя может быть опубликован на странице авторизации. Уязви-мые приложения: WebLogic Portal 8.1 through Service Pack 3 (all platforms).

5. Ошибка при обработке файлов куки может замедлить работу кластера сайтов. Уязвимые приложения: WebLogic Server / Express 7.0 through Service Pack 5 (all platforms).

6. Межсайтовый скриптинг возможен при обработке не-которых входных данных. Уязвимые приложения: WebLog-ic Server / Express 8.1 through Service Pack 4 (all platforms), WebLogic Server / Express 7.0 through Service Pack 6 (all plat-forms).

7. Удаленный неавторизованный пользователь может подключиться к LDAP-серверу и получить доступ к потен-циально важной информации или вызвать отказ в обслу-живании. Уязвимые приложения: WebLogic Server / Express 8.1 through Service Pack 4 (all platforms), WebLogic Server / Express 7.0 through Service Pack 5 (all platforms).

8. Возможен отказ в обслуживании. Уязвимые прило-жения: WebLogic Server / Express 6.1 Service Pack 4 (all plat-forms).URL производителя: www.bea.com.Решение: Установите исправления от производителя.

Page 97: 031 Системный Администратор 06 2005

95№6, июнь 2005

подписка на II полугодие 2005

Российская Федерация! Подписной индекс: 81655 Каталог агентства «Роспечать»! Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог»! Альтернативные подписные агентства: Агентство «Интер-Почта» (095) 500-00-60, курьерская

доставка по Москве Агентство «Вся Пресса» (095) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74! Подписка On-line http://www.arzy.ru http://www.gazety.ru http://www.presscafe.ru

СНГ В странах СНГ подписка принимается в почтовых отделе-ниях по национальным каталогам или по списку номен-клатуры АРЗИ: ! Азербайджан – по объединенному каталогу российских

изданий через предприятие по распространению печа-ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21)

! Казахстан – по каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»

! Беларусь – по каталогу изданий стран СНГ через РГО «Белпочта» (220050, г.Минск, пр-т Ф.Скорины, 10)

! Узбекистан – по каталогу «Davriy nashrlar» российские издания через агентство по распространению печати «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик, 5/3, офис 33)

! Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г.Ереван, пл.Сасунци Давида, д.2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул.Сарьяна, 22)

! Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г.Тбилиси, ул.Хошараульская, 29) и АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42)

! Молдавия – по каталогу через ГП «Пошта Молдавей» (МД-2012, г.Кишинев, бул.Штефан чел Маре, 134)

по списку через ГУП «Почта Приднестровья» (МD-33-00, г.Тирасполь, ул.Ленина, 17)

по прайслисту через ООО Агентство «Editil Periodice» (2012, г.Кишинев, бул. Штефан чел Маре, 134)

! Подписка для Украины: Киевский главпочтамп Подписное агентство «KSS» Телефон/факс (044)464-0220

Подписные индексы:

81655

по каталогу агентства «Роспечать»

87836

по каталогу агентства«ПрессаРоссии»

Page 98: 031 Системный Администратор 06 2005

96

СИСТЕМНЫЙ АДМИНИСТРАТОР

№6(31), Июнь, 2005 год

РЕДАКЦИЯ

Исполнительный директор

Владимир ПоложевецОтветственный секретарь

Наталья Хвостова[email protected]Технический редактор

Владимир ЛукинРедакторы

Андрей БешковВалентин СиницынАлексей Барабанов

РЕКЛАМНАЯ СЛУЖБА

тел./факс: (095) 928-8253Константин Меделянreс[email protected]

Верстка и оформление

[email protected]Дизайн обложки

Николай Петрочук

По вопросам распространения

обращайтесь по телефону:(095) 928-8253 (доб. 120)

107045, г. Москва,Ананьевский переулок, дом 4/2 стр. 1тел./факс: (095) 928-8253Сайт журнала: www.samag.ru

РУКОВОДИТЕЛЬ ПРОЕКТА

Петр ПоложевецУЧРЕДИТЕЛИ

Владимир ПоложевецАлександр МихалевИЗДАТЕЛЬ

ЗАО «Издательский дом«Учительская газета»

Отпечатано типографией

ГП «Московская Типография №13»Тираж 8400 экз.

Журнал зарегистрированв Министерстве РФ по делам печати, телерадиовещания и средств массо-вых коммуникаций (свидетельствоПИ № 77-12542 от 24 апреля 2002 г.)

За содержание статьи ответствен-ность несет автор. За содержание рекламного обьявления ответствен-ность несет рекламодатель. Все пра-ва на опубликованные материалы за-щищены.

ЧИТАЙТЕВ СЛЕДУЮЩЕМНОМЕРЕ:

Устанавливаем jabber-кластер на базе ejabberdJabber в настоящее время становится все более распространенным в кор-поративной и интернет-среде. Круп-ные jabber-серверы находятся под по-стоянной высокой нагрузкой. Одним из методов оптимизации стабильно-сти и производительности является кластеризация. В данной статье бу-дет описана настройка одного из наи-более продвинутого по возможностям jabber-сервера в кластерном вариан-те – ejabberd.

Kerberos поверх LDAPНастроим открытую версию Kerberos Heimdal для работы с OpenLDAP в ка-честве бэкэнда для хранения своих данных. Такое решение позволит нам создать единое хранилище всей ин-формации для обеспечения процесса аутентификации и авторизации поль-зователей в GNU/Linux.

Настраиваемантивирус-проксиНесомненно антивирусная защита должна быть обязательным атрибу-том грамотно спланированной IT-стра-тегии организации. И для не обреме-ненного лишними деньгами бюджета IT-отдела закупка и установка на всех пользовательских компьютерах анти-вирусных программ может стать впол-не весомой статьей расходов. Можно ли как-то избежать лишних расходов? Если на клиентских рабочих местах от-сутствуют или отключены НГМД, а по-

чта уже проверяется каким-нибудь от-крытым антивирусом, типа Clamav, то единственным возможным источником вирусов может являться &laquo;дикий интернет&raquo;. И если доступ поль-зователям открыт только через прото-кол HTTP, то только его нам и остается сканировать. Делать это удобнее и де-шевле на сервере и при помощи откры-того ПО, чем мы и займемся.

Kaspersky Antivirus 5.0в составе SendmailНастраиваем 5-ю версию антивируса Касперского в составе почтовой си-стемы Sendmail. Отличий от прошлых конфигураций несколько: в настрой-ке и реализации протокола связи ан-тивируса; в использовании milter; сты-ковка компонентов осуществляется с минимальными затратами и настрой-ками; а также появилась возможность использовать антивирус для рабочих станций UNIX.

Используем технологию LinuxBIOS на системахVIA EPIA-MПочти каждый из вас в детстве играл в конструктор, собирал железную до-рогу или машинки. Есть такая фраза, что по мере взросления у сильной по-ловины человечества игрушки не ис-чезают, а только становятся более до-рогими. Вот и сегодня мы попытаем-ся своими руками собрать из своео-бразного конструктора – связки Linux-BIOS и VIA EPIA-M – домашнюю bare-bone-систему.

Уважаемые читатели!

Спешите оформить подпискуна второе полугодие 2005 года!

Приобрести новые и старые номера журналавы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.

Доставка почтой в любую точку России.