Вы находитесь на странице: 1из 98

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

СЬ

ЛИ
ЛИ
ТЯ Е

Ж ПИ
ЗА ДНИ
НУ

РА КУ
ЛЫ ГО

ТИ РАС
КУ ВО

О
НИ НО

№6(31) ИЮНЬ 2005

ТР
С
БЫ
подписной индекс 81655
КА

www.samag.ru

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

И
ЬГ
ЬД О
РА СКА
и устраняем неисправности
ТЕ
К

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО НЕО
АВ СЛ
Л

Л
ХА

Asterisk и Linux:
ПО
УЕ

ЗА
миссия IP-телефония
Насколько неуязвима
Так видит журнал человек, оформивший подписку:
ваша беспроводная сеть?
Используем одноразовые пароли
для удаленного входа на сервер
Как защититься от fingerprinting?
Solaris 10 в качестве десктопа?
Пробуем!
Ускоряем MS SQL Server
Модифицируем BIOS
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Ищем дополнительные
источники дохода
№6(31) июнь 2005

Роспечать – 81655
Пресса России – 87836
Интер-почта – тел. (095) 500-00-60
оглавление
2 ТЕНДЕНЦИИ 56 Изучаем принципы работы
Heimdal Kerberos
ИНТЕРВЬЮ
Михаил Кондрин
4 ALT Linux: третье пришествие. mkondrin@hppi.troitsk.ru
Скоро на экранах ваших машин
Интервью с Алексеем Смирновым, генеральным ди- 61 Защищенная почтовая система
ректором компании ALT Linux. с Tiger Envelopes
Андрей Бешков
tigrisha@sysadmins.ru Сергей Яремчук
grinder@ua.fm
АДМИНИСТРИРОВАНИЕ
64 Насколько неуязвима
8 Postfix: диагностируем ваша беспроводная сеть?
и устраняем неисправности
Крис Касперски
Андрей Бешков kk@sendmail.ru
tigrisha@sysadmins.ru
70 Как защититься от fingerprinting?
12 Asterisk и Linux: миссия IP-телефония
Сергей Борисов
Михаил Платов imp@samag.ru
platov@cs.vsu.ru
WEB
20 Испытываем Antmon – новую систему
мониторинга
77 Используем ImageMagick в веб-разработке
Сергей Жуматий
serg@guru.ru Кирилл Сухов
geol@altertech.ru
25 Автоматизация MS Windows, или AutoIt
как мечта эникейщика. Часть 3 HARDWARE
Алексей Барабанов 81 Модифицируем BIOS
alekseybb@mail.ru
Крис Касперски
32 Решаем нестандартные задачи с помощью kk@sendmail.ru
стандартного Windows Scripting Host
IMHO
Михаил Кошкин
Blackmail@bk.ru 86 Размышления о UNIX
37 Solaris 10 в качестве десктопа? Пробуем! Сергей Супрунов
amsand@rambler.ru
Андрей Маркелов
andrew@markelov.net ПОЛЕЗНЫЕ СОВЕТЫ
40 Файловые системы пространства 88 Системный администратор –
пользователя ищем дополнительные источники дохода
Сергей Яремчук Роман Марков
grinder@ua.fm stepan-razin@newmail.ru

44 Ускоряем MS SQL Server 93 КНИЖНАЯ ПОЛКА


Юлия Шабунио 48, 52, 76, 94 BUGTRAQ
yshabunio@eastwind.ru
ПО ВАШИМ МНОГОЧИСЛЕННЫМ ПРОСЬБАМ
49 MySQL 5 – что нового предлагают
нам разработчики? В редакцию продолжают поступать звонки и письма
от читателей, которые оформили подписку на второе
Кирилл Сухов полугодие с опозданием, начиная с сентябрьского
geol@altertech.ru номера, пропустив выпуски за июль и август.

БЕЗОПАСНОСТЬ Специально для вас мы открыли редакционную


подписку на первые два номера следующего
53 FreeBSD tips: повышаем безопасность полугодия.
с помощью одноразовых паролей
Подробности смотрите на сайте журнала
Сергей Супрунов www.samag.ru в разделе «Подписка».
amsand@rambler.ru

№6, июнь 2005 1


тенденции
Microsoft наращивает возможности учреждений, а остальные вопросы перекладываются на пар-
своей линейки программ тнеров. Так, например, существует CRM-решение для сферы
для образования образования от компании Distinction на базе MS Business Solu-
Компания Microsoft провела в июне для партнеров се- tions, которое активно используется в Великобритании.
минар «Решения Microsoft для системы образования и Конечно, говорить о серьезной проработанности вопро-
подготовки кадров». Ведущие менеджеры по работе с сов организации бизнес-процессов в образовании на базе
образованием поделились опытом внедрения техноло- технологий Microsoft еще рано, однако уже сейчас активно
гий и программных продуктов Microsoft за рубежом и в ведутся работы по направлению Management information sys-
России, а также представили новые решения для сфе- tems, куда пока в упрощенном виде, но уже входят решения
ры образования на базе платформы Microsoft Learning для отчетности на базе Business Intelligence, финансовые
Gateway (MLG). и кадровые модули. Для повышения эффективности вза-
В первой части семинара Джим Леви и Айдан МкКарти имодействия с существующими системами могут исполь-
рассказали о новых версиях системы управления ИТ-ре- зоваться возможности Enterprise Application Integration (EAI)
сурсами учебного заведения Learning Network Manager и на базе XML-webservices и BizTalk Server 2003.
системы управления учебным контентом и процессом об- Более подробную информацию о докладах на семинаре
учения Class Server применительно к школьному и вузов- и программных продуктах Microsoft можно найти по адре-
скому образованию. Особое внимание было уделено воз- су: http://www.microsoft.com/Rus/Education.
можностям взаимодействия с органами управления обра-
зованием и существующему опыту в странах Европы. Вто- Андрей Филиппович
рая часть семинара была посвящена представлению от-
ечественных проектов: Сергей Паринов рассказал о те- Завершение серии
кущем внедрении и перспективах развития портала Выс- PA-RISC – конец эпохи мини-ЭВМ?
шей школы экономики на базе технологий MS SharePoint В центре высоких технологий HP в Москве прошла пресс-
Portal Server 2003, а Алексей Мороз в свою очередь поде- конференция, посвященная развитию бизнес-критичных
лился результатами использования программного продук- серверов, представлению процессора PA-8900, пробле-
та MS Class Server для организации дистанционного обу- мам защиты инвестиций и внедрению технологии вир-
чения в Российской академии правосудия Верховного су- туализации серверных ресурсов.
да РФ и Высшего арбитражного суда РФ. Создание нового процессора серии PA-8900 заверша-
Решения Microsoft для сферы образования уже обсуж- ет историю архитектуры PA-RISC и как следствие знамену-
дались на страницах журнала (см. №11, 2004 г.), поэтому ет конец продолжателей класса мини-ЭВМ от HP. За время
отметим только ключевые изменения в политике Microsoft. своего развития эти процессоры увеличили рабочую часто-
Во-первых, можно констатировать существенное увеличе- ту в 20 раз и производительность в 60. Последний процес-
ние и коммерциализацию интереса к сфере образования на сор имеет сокетную совместимость с Intel Itanium, и поэтому
уровне высших учебных заведений и правительства (ори- системы на его основе определяются как «Itanium READY».
ентация на решения для электронного правительства). Об В дальнейшем планируется поддержка только двух архи-
этом свидетельствует явно декларируемая коммерческая тектур – x86 и Itanium.
целесообразность работ в области образования: «There is Для владельцев HP 9000 это означает неизбежную за-
Serious Money in Education – together we can unlock the Safe!» мену процессоров в новых системах на Itanium, и их должен
(В образовании есть серьезные деньги – вместе мы можем заинтересовать компромиссный способ обновления суще-
отпереть этот сейф!), которая базируется на увеличении ко- ствующих систем такого класса. Идея, положенная в основу
личества платных студентов в вузах до 50%, существова- нового семейства серверов HP Integrity, за счет стандарти-
нии нескольких высокобюджетных федеральных целевых зации оборудования позволяет смешивать серверные моду-
программ по информатизации образования (до 1 млрд. $) ли разной архитектуры и осуществлять поэтапное обновле-
и росте спроса на услуги по дистанционному обучению (e- ние бизнес-критичных серверов, обычно работающих в ре-
learning) в крупных предприятиях. жиме non-stop. Это позволяет надеяться, что точно так же,
Во-вторых, поддерживая современную тенденцию, Micro- при следующей смене архитектуры на более прогрессив-
soft на передний план выдвигает интеграционную платфор- ную, существующее серверное оборудование не придется
му MLG и ее возможности по расширению и развитию, ко- 100% списывать. Владельцам персоналок такой способ ча-
торые потенциально могут компенсировать все существую- стичной модернизации хорошо знаком.
щие на сегодняшний день преимущества программных про- Еще большие возможности сбережения инвестиций от-
дуктов конкурентов. При этом Microsoft продолжает наращи- крывает технология виртуализации, при которой виртуаль-
вать возможности своей линейки программ для образова- ными становятся сами сервера, раскладываемые по мно-
ния, выпуская новые версии и распространяя бесплатные e- гопроцессорным кластерным системам для лучшей балан-
learning-компоненты для разработчиков в среде .Net. сировки нагрузки, а, значит, и для создания оптимально-
В третьих, Microsoft делает первые шаги к автоматизации го ценового соответствия оборудования решаемой задачи.
образовательных процессов с точки зрения повышения эф- Теперь можно с уверенностью утверждать, что микро-ЭВМ
фективности бизнеса. На текущий момент представители Mi- доминируют во всех сферах применения.
crosoft говорят о заинтересованности в решениях только для
организации порталов и IT-инфраструктуры образовательных Алексей Барабанов

2
тенденции
Nokia присоединяется к миру дакции LiveDVD, на котором содержится более 4 Гб попу-
Open Source лярных пакетов.
Начиная с конца мая компания Nokia демонстрирует пока-
зательную благосклонность к сообществу Open Source. Так, Sun опубликовала исходный код Solaris
например, анонсируется Nokia 770 Internet Tablet – интернет- Компания Sun наконец-то выполнила свое обещание и опу-
планшет, основанный на открытой ОС Linux (а не привыч- бликовала исходный код своей ОС Solaris под лицензией
ной Symbian). Причем также сообщается о планах компа- CDDL в рамках проекта OpenSolaris. Всего было открыто
нии опубликовать исходный код продукта в надежде при- более 5 миллионов строк кода, однако это не все – исход-
влечь разработчиков к написанию программного обеспе- ники некоторых других компонентов должны будут появить-
чения для устройства. Далее следует заявление о том, что ся позже. Вскоре Джон Фаулер сообщает о замене в Open-
в ядре Linux разрешается использовать запатентованные Solaris загрузчика на открытый GRUB, что позволило «су-
технологии Nokia. «Nokia полагает, что инвестиции, сделан- щественно расширить прямую поддержку аппаратуры». А
ные со стороны независимых разработчиков и компаний в вскоре после релиза OpenSolaris Йорг Шиллинг выпустил
ядро Linux, и открытое ПО, без сомнения, выгодны и заслу- первый основанный на нем LiveCD-дистрибутив – SchilliX.
живают доверия», – гласит официальное заявление компа-
нии. Однако вскоре этот жест доброй воли был подвергнут Достижения проектов
резкой критике Ричарда Столлмана, который и здесь обна- по портированию Linux
ружил подвох: «... Free Software Directory (каталог свободно- Появились новости о развитии Linux во встраиваемой сре-
го ПО) насчитывает более 4000 пакетов. В заявлении Nokia де. Так, например, энтузиастам удалось запустить ядро от-
ничего не говорится о них, так что здесь по-прежнему оста- крытой ОС и заставить работать framebuffer на КПК Dell Axim
ется потенциальная опасность атаки Nokia в будущем». Од- X50. Очередных успехов достиг и проект портирования Lin-
нако это не остановило Nokia, и компания на конференции ux на iPod: теперь стал возможным просмотр изображений
GUADEC объявила о том, что подарит GNOME Foundation и запись аудио, а в ближайшее время ожидается поддерж-
доходы с продажи 500 своих устройств Nokia 770. И в сере- ка устройств 4G iPod и iPod mini. Кроме того, разработчи-
дине июня, вновь подчеркивая интерес к Open Source, ком- ки DS Linux (версии Linux для Nintendo DS) смогли создать
пания сообщила о намерении воспользоваться технологи- виртуальную клавиатуру для экрана приставки.
ями WebCore и JavaScriptCore, основанными на коде KHT-
ML и KJS от KDE (Konqueror), в новый браузер для смарт- Составил Дмитрий Шурупов
фонов Nokia 60. по материалам www.nixp.ru

Новые подробности об отношениях


*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 обновления к сво-
ему дистрибутиву. Впервые система была выпущена в ре-

№6, июнь 2005 3


интервью

ALT LINUX: ТРЕТЬЕ ПРИШЕСТВИЕ


СКОРО НА ЭКРАНАХ ВАШИХ МАШИН

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


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

Г
лавный вопрос, волнующий на- се инсталляции используются те же дание файлов устройств и добавле-
ших читателей, когда выйдет самые модули, что и при последую- ние дополнительных пакетов, проис-
Alt Linux 3.0 и насколько сильно щей настройке системы. В эту версию ходят в рамках настройки уже работа-
он будет отличаться от своего пред- встроен пакет Alterator, который отве- ющей системы. Плюс ко всему выше-
шественника Alt Linux 2.4? чает за инсталляцию и конфигуриро- сказанному мы перешли на ядро 2.6
На данный момент Alt Linux Compat вание системы. Его прототипом были и соответственно легко можем выпу-
3.0 проходит внутреннее тестирова- модули конфигурирования, эксплуа- стить Live CD одновременно с полной
ние. К примеру, у меня на ноутбуке тировавшиеся ранее в «ИВК КОЛЬЧУ- версией дистрибутива. Одним из важ-
он уже стоит и работает очень даже ГА». Благодаря этому нововведению ных нововведений в ALT Linux версии
хорошо. Со дня на день должна поя- процесс инсталляции системы силь- 3.0 можно назвать переход на UTF-8.
виться OEM-версия Compact 3.0, за- но упростился. При создании «Коль- Это позволит избавиться от пробле-
тем выйдет розничная версия. Ну а к чуги» мы исходили из расчета на то, мы с ворохом разных кодировок ки-
осени должен появиться Alt Linux Mas- что мест, где может применяться типо- риллических символов. На данный мо-
ter 3.0. Как обычно, у нас произошло вое решение на базе Alt Linux, гораз- мент большинство приложений отлич-
обновление большинства прикладных до больше, чем опытных администра- но работают в новой среде, хотя неко-
пакетов, но это не главное. Основное торов. Соответственно нужно макси- торые консольные программы еще не
изменение по сравнению с версией мально облегчить процедуру инстал- совсем дружат с этой кодировкой. Ду-
2.4 – это переход на новую систему ляции. В версии 3.0 на первом этапе маю, что со временем эти шерохова-
инсталляции и настройки системы. производится установка на жесткий тости постепенно будут сглажены.
Хочу для примера отметить тот факт, диск минимальной рабочей системы,
что во время установки нет необхо- затем управление передается ей. Все На данный момент в ALT Linux 2.4 нет
димости перезагружаться. В процес- остальные процессы, такие как соз- удобных визуальных средств кон-

4
интервью
фигурирования системы. Насколь- меру, на основе Alterator и LDAP, кото- документации docs.altlinux.ru. Конечно,
ко мне известно, эту роль призвана рый выступает в качестве хранилища сейчас на него нет ссылок со страниц
выполнять внутрифирменная раз- объектов, можно будет построить до- главного сайта и найти его нелегко, но
работка, фигурирующая под кодо- статочно гибкую систему управления думаю, что со временем это будет ис-
вым именем Alterator. Стоило ли за- группами машин, сервисов, пользо- правлено. На данный момент силами
тевать свой собственный проект, ес- вателей. Думаю, что подобная систе- нашей команды разработана удобная
ли доступен для свободного исполь- ма будет очень удобна и гибка. За счет инфраструктура, позволяющая облег-
зования Yast от Suse? этих качеств она с легкостью впишется чить процесс создания и сопровожде-
Понимаете ли, когда мы начинали раз- в рамки любого предприятия. Для на- ния документации. Изначально масси-
рабатывать Alterator, свободного Ya- шей компании Alterator – один из са- вы текстов хранятся в XML – это позво-
st еще не существовало. Стоит учи- мых приоритетных проектов, на его ляет без особых трудозатрат верстать
тывать тот факт, что наш проект на- разработку брошена «команда тяже- такой текст в любой выходной формат,
чался позже, чем Yast, соответствен- ловесов», это в свою очередь значит, хоть в бумажную книгу, хоть в онлай-
но мы могли учиться на чужих ошиб- что стоит ожидать динамичного разви- новое руководство или в документа-
ках и заложить в его основу идеи, кото- тия этой подсистемы. цию, идущую в комплекте с разными
рых нет у других. Если сравнивать Yast дистрибутивами. Но работа с XML не-
и Alterator, то нужно обратить внима- Как вы уже упоминали, ALT Lin- проста, поэтому мы как раз решили это
ние на то, что Yast не хранит настрой- ux версии 3.0, кроме всего проче- упростить. Думаю, что плоды этой ра-
ки системы в конфигурационных фай- го, будет выходить на Live CD. Со- боты можно будет увидеть уже в бли-
лах. Для этих целей используется свое бираетесь ли вы выпускать какой- жайшее время.
промежуточное хранилище, на осно- либо диалект вашего дистрибути-
вании которого потом редактируются ва, предназначенный для создания Раз мы заговорили о документи-
эти самые файлы. Получается, что до встроенных систем? ровании, хотелось бы спросить,
тех пор, пока мы пользуемся Yast для У нас есть такие планы. Хотя на самом не планирует ли команда ALT Linux
настройки параметров системы, все деле каждый раз, когда меня спраши- привлекать авторов со стороны для
идет хорошо. Но как только конфигу- вают, где используется ALT Linux, я ис- описывания процесса создания тех
рационные файлы изменены вручную, пытываю смущение. Довольно часто или иных востребованных решений
от Yast приходится отказаться, потому к нам извне приходит информация о на основе дистрибутива.
что будет уничтожать ваши исправле- самых разнообразных применениях На данный момент в процессе доку-
ния и целостность настроек. С Alter- ALT Linux. Был случай, когда на адрес ментирования участвует некоторое ко-
ator таких проблем возникнуть не мо- техподдержки пришло письмо с прось- личество специалистов из комьюнити.
жет. Все настройки берутся напрямую бой помочь в наладке системы виде- Но, как вы понимаете, все виды вос-
из конфигурационных файлов, и после онаблюдения, работающей на основе требованных решений описать в при-
синтаксического анализа ими можно нашего дистрибутива. Навели справ- емлемые сроки будет трудно. Поэто-
легко манипулировать через систему ки, оказалось, что в России существует му мы считаем, что если есть какие-
настройки. Те настройки, которые Alt- предприятие, вполне успешно занима- то типовые решения, то их проще не
erator не распознал, будут сохранены ющееся производством этих систем. описывать, а закодировать в скриптах
без изменений. Плюсом такого реше- Недавно нам прислали снимок игро- и дать конечному потребителю стан-
ния является высокая модульность и вого автомата, построенного на базе дартный интерфейс для того, чтобы
возможность работы через любой ин- ALT Linux. Получается, что мы о таких управлять аспектами работы получив-
терфейс. К примеру, в разных вари- событиях узнаем последними. Пери- шегося комплекса. Любое оконченное
антах поставки Alterator-ом можно бу- одически у нас в компании всплыва- описание это, по сути, техническое за-
дет управлять через консоль, веб-ин- ют разнообразные идеи по использо- дание, разумнее было бы сразу же во-
терфейс, X-window, сетевой сокет или ванию встроенного ALT Linux. В част- плотить его в коде и отдавать потреби-
что-нибудь еще. Простор для фантазии ности, есть версии для наладонников. телю специализированный продукт. В
разработчика прикладных интерфей- В общем, мы занимаемся этим по ме- мире не так много людей, которые хо-
сов практически ничем не ограничен. ре сил. тели бы читать объемные книги и раз-
Опять же свой собственный проект бираться с особенностью работы меж-
поддерживать гораздо проще, и раз- Достаточно много пользователей сетевого экрана Linux. Большинство
вивается он динамичнее. Тут и инстру- дистрибутива жалуются на то, что все-таки предпочтет графический ин-
ментарий на руках, и с разработчиками сайт altlinux.ru последние несколько терфейс с возможностью удобно осу-
легче контактировать. В чужие проек- лет практически не развивается. На- ществлять типовые действия по на-
ты, особенно в такие большие, как Yast, мерены ли вы предпринять что-либо стройке со стандартными заготовка-
сложно вводить свои инновации. Как для исправления этой ситуации? ми правил для NAT и разрешением
я уже отметил, еще одним полезным Сейчас мы занимаемся полной пере- работы по наиболее часто использу-
свойством Alterator можно считать его работкой нашего сайта. Дабы не со- емым протоколам. Мы считаем, что в
высокую модульность. Думаю, что не врать, точных сроков окончания ра- этой нише будущее за специализиро-
возникнет никаких проблем с добавле- бот называть не буду. Параллельно с ванными решениями вроде ALT Linux
нием новой функциональности. К при- этим развивается проект онлайновой SOHO Server.

№6, июнь 2005 5


интервью
Есть пословица «Как вы лодку на- ный репозитарий с пометкой «ис- Государственные заказчики ожидали,
зовете, так она и поплывет». Сре- пользовать на свой страх и риск»? что в нем мы опишем список префе-
ди пользователей дистрибутива, В ALT Linux 2.4 Master имеется 5775 ренций, которые необходимо предо-
знакомых с легендой о Сизифе, об- бинарных пакетов, вряд ли такое ко- ставить разработчикам свободных про-
реченном на бесконечный тяжкий личество можно назвать недостаточ- дуктов при проведении тендеров на го-
труд, многие считают, что команда ным. В процессе создания дистрибу- сударственные закупки ПО. К их удив-
ALT не столько занимается изготов- тива вопросам безопасности уделя- лению, мы ответили, что считаем кате-
лением готового продукта, сколько ется очень много внимания. Мы счи- горически неприемлемой методику по-
ведет процесс ради самого процес- таем, что для начинающего админи- добных поблажек, поскольку приобре-
са. Как вы прокомментируете дан- стратора, неспособного самостоятель- тение свободного ПО не является са-
ное утверждение? но собирать пакеты, лучше всего под- мостоятельной задачей госзаказчика.
Ещё говорят, что Сизиф – это символ ходит система, сразу же после уста- Вместо этого хотелось бы видеть, что
бесплодного труда. В таких случаях мы новки работающая в наиболее защи- методика проведения подобных тенде-
советуем почитать «Легенду о Сизи- щенном режиме. Поэтому приходится ров непредвзята и свободна от всякой
фе» Камю. Сизиф – это ведь не толь- немного затягивать гайки, иначе при- дискриминации по любому признаку.
ко хранилище пакетов, это еще и на- емлемого уровня безопасности не до- Ни для кого не секрет, часто можно
ша технологическая база. Работая с биться. Опытный администратор, уме- столкнуться с ситуацией, когда назва-
ним, мы используем систему входно- ющий собрать пакет, уже способен сам ние ПО, выигравшего соревнование,
го контроля пакетов, распределенную решить, что ему нужно подкрутить и известно еще до начала тендера, или
сборку с помощью hasher и другие ин- где можно при необходимости осла- же в тендерной документации встреча-
тересные вещи. Опираясь на эту тех- бить те или иные запреты. Я думаю, ются требования типа «ОС не хуже Win-
нологию, мы можем гибко управлять что если в том или ином пакете есть dows XP», что понимается поставщи-
процессом создания коробочных ре- уязвимость, то его не стоит собирать ками однозначно. Таким образом, все
шений. Соответственно создание дис- и класть в дистрибутив. С программа- сводится лишь к поиску наиболее вы-
трибутива с помощью Сизифа превра- ми, распространяемыми без исходных годного дистрибьютора. Заказчик тен-
щается в довольно простую задачу, ко- кодов, следует поступать так же. В слу- дера в любом случае должен понимать,
торую можно выполнять довольно ре- чае крайней необходимости их можно что, покупая ПО, он получает не толь-
гулярно. Все-таки это сильно отлича- запустить в chroot. Иначе получается, ко коробку, но и некоторый набор прав.
ется от сборки дистрибутива подруч- что мы провоцируем администратора Сравнивать ПО аналогичного функцио-
ными средствами на коленке. Понят- пользоваться заведомо небезопасны- нала от разных поставщиков нужно не
но, что Сизиф в силу своей специфи- ми решениями. На двух последних вы- только по стоимости, а прежде всего
ки никогда не будет законченной рабо- ставках Softool проводилось тестиро- по набору этих самых прав. Одно дело,
той, но это и хорошо, потому что озна- вание наших серверов. На них рабо- когда вам выдается лицензия исполь-
чает развитие технологии, которая лег- тал дистрибутив ALT Linux, установ- зовать ПО одновременно на тысяче ма-
ко позволяет адаптировать систему к ленный стандартным способом. Все шин сроком на один год, а затем еже-
любым условиям. желающие могли попробовать взло- годно продлять лицензию за дополни-
мать систему. Добиться успеха в этом тельные деньги. И совсем другое, воз-
Многие администраторы, пользую- начинании никому не удалось, думаю, можность в соответствии с лицензией
щиеся ALT Linux, жалуются на не- что это хороший повод для гордости. использовать программу неограничен-
достаточное количество пакетов в Мы считаем, что безопасность и ста- ное время на любом количестве стан-
комплекте дистрибутива. К сожале- бильность работы должна быть пре- ций внутри одного ведомства. Мы ду-
нию, самостоятельная сборка паке- выше всего. маем, что в случае тендера заказчик
тов – процесс нетривиальный, и он должен четко формулировать список
под силу довольно малому количе- О каких интересных проектах вы хо- необходимых ему прав.
ству пользователей дистрибутива. В тели бы еще рассказать нашим чи- Представим ситуацию, когда поку-
то же время официальная команда тателям? пателем ПО является школа. В данном
поддержки часто отказывается со- На данный момент активно развивает- случае логично было бы потребовать
бирать те или иные пакеты, необхо- ся направление сотрудничества с Ми- от поставщика что-то вроде кампусной
димые для работы со стандартными нистерством экономического разви- лицензии. В образовательном учреж-
сервисами, под предлогом небезо- тия. Последние два года мы выполня- дении ПО, очевидно, выступает в ро-
пасности этих программ. Не лучше ли для них достаточно объемные зака- ли учебного пособия. Если учитель или
ли было доверить выбор того, что зы, а в этом году даже выиграли тен- ученик из-за ограничения лицензии не
устанавливать, конечному пользо- дер на разработку системы публика- может взять ПО домой для самостоя-
вателю и не ограничивать его искус- ции под свободной лицензией резуль- тельного изучения, то получается, что
ственными запретами? Большин- татов работ, выполненных по госзака- госзаказчик провоцирует пользовате-
ство дистрибутивов, наоборот, хва- зу. Это сотрудничество началось с раз- ля на сознательное нарушение этой са-
лятся количеством пакетов по умол- работки «Рекомендаций по использо- мой лицензии. В случае покупки ПО,
чанию. Может, стоило бы все-таки ванию свободного программного обе- обеспечивающего какие-либо функ-
включать такие пакеты в стандарт- спечения в государственном секторе». ции безопасности, заказчик должен

6
интервью интервью
получить исходный код и право само- иходили уже с учетом новых правил.
стоятельной сборки продукта из него. В частности, было объявлено, что все
Только таким образом можно быть уве- материалы, полученные в результа-
ренным, что получаемый продукт дей- те выполнения работ, будут выходить
ствительно соответствует своим исхо- под свободными лицензиями. На мой
дным кодам, делает именно то, что де- взгляд, эта работа повлекла за собой
кларируется и свободен от закладок. В довольно революционные измене-
случае если мы намерены достаточно ния в менталитете заказчика. Теперь
долго эксплуатировать продукт, нуж- есть четкое понимание, что ПО – это
но решить вопрос с правами на моди- не только какой-то функционал, но и
фицирование исходного кода. Иначе набор передаваемых авторских иму-
любой, кто, используя это ПО, постро- щественных прав. Таким образом, те-
ит достаточно большую систему, ав- перь не функционал, а права становят-
томатически становится заложником ся предметом тендера.
поставщика.
В случае покупки ПО проблемы ли- Как вы представляете себе операци-
цензирования мы кратко рассмотрели, онную систему вашей мечты? Суще-
если же ПО или научное исследова- ствует ли таковая? Если нет, то какая
ние разрабатывается на заказ, то все из ОС, имеющихся в наличии, наибо-
становится еще сложнее. Анализируя лее близка к вашему идеалу?
российское законодательство, мы об- Представление об идеале у всех раз-
наружили, что обладателем исключи- ное. В данном случае мне больше всех
тельных прав по умолчанию становит- нравится Linux. Ключевыми аспекта-
ся не заказчик, а исполнитель разра- ми являются разнообразие ПО, воз-
ботки, если иное не указано в контра- можность разных стилей работы, ди-
кте. Мы считаем, что такое положе- намическое развитие и свободная ли-
ние лучше всего подходит для разра- цензионная политика. Соответствен-
боток выполняемых сторонними си- но если хочется чего-то, чего еще нет,
лами в рамках госзаказа. Во-первых, нужно лишь взять и реализовать это
автор должен иметь возможность про- самому.
должать развивать свой продукт. Во-
вторых, государству не нужны исклю- Если не секрет, хотелось бы узнать,
чительные права, потому что они свя- собирается ли ALT Linux расширять-
заны с излишним отягощением и не- ся и привлекать новых разработчи-
профильным расходованием средств, ков?
в этом случае придется все это тем Конечно. Резкого увеличения числа
или иным образом ставить на баланс сотрудников ожидать не стоит, но все
и тратить средства на борьбу с контра- же мы понемногу расширяемся. К со-
фактным распространением. Побоч- жалению, за нашей спиной нет боль-
ным вредом этих обстоятельств мож- шой фирмы с огромным мешком де-
но считать автоматическое изыма- нег, соответственно мы вынуждены
ние хороших идей из рыночного про- экономить и инвестировать сами в се-
странства. Кроме того, не происходит бя. Сейчас мы живем с колес – в этом
поступления программного продук- есть свои плюсы и минусы, поэтому
та в хозяйственный оборот. Таким об- нанимать дополнительных разработ-
разом, получается, что для успешной чиков удается только в случае появле-
работы с приобретенным ПО государ- ния новых масштабных проектов. На-
ству достаточно иметь права на поль- личие ALT Linux Team для нас в этом
зование, тиражирование, распростра- плане очень важно, получается, что во-
нение и модификацию. Другое важное круг всегда есть достаточно много ква-
требование – это публикация резуль- лифицированных специалистов, рабо-
татов таких разработок госзаказчиком тающих в рамках одной технологии с
под свободной лицензией. Отсюда вы- нами. Исторически сложилось так, что
вод: в общем случае лицензирование большинство людей, принятых к нам
по модели GPL вполне подходит для на работу, в свое время засветилось в
государственных заказов. ALT Linux Team.
Минэкономразвития воспользова-
лось значительной частью этих реко- Андрей Бешков,
мендации, и тендеры 2005 года про- фото автора

№6, июнь 2005 7 7


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

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


НЕИСПРАВНОСТИ
Postfix прост и надежен в эксплуатации, словно
автомат Калашникова. Но все же неискоренимое
человеческое любопытство нет-нет, да и заставляет
нас задумываться над вопросами: Что будет, если
в один прекрасный день Postfix перестанет работать?
Смогу ли я понять, почему это произошло?
Удастся ли мне его починить?

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

В
предыдущих статьях [1, 2] мы говорили о том, как # netstat -na | grep LISTEN | grep 25
Postfix устроен изнутри, почему я считаю его одним
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
из лучших SMTP MTA и как с его помощью построить
корпоративный почтовый сервер. Многие читатели, озна- Теперь неплохо было бы приказать Postfix самому про-
комившись с этими материалами, принялись за создание вести внутреннюю диагностику.
собственных систем на основе Postfix. Судя по откликам,
99% из них преуспели в этом начинании, у подавляющего # postÞx check
большинства почтовый сервер работает в штатном режи- postfix: fatal: /etc/postfix/main.cf, line 100: missing ‘=’
ме без каких-либо проблем уже год или более. after attribute name: “mynetworks_style”
Все, о чем будет говориться сегодня, проверялось на
версиях Postfix 2.2 под FreeBSD, Solaris и несколькими дис- Как видите, в данном случае проблема состоит в непра-
трибутивами Linux. Под всеми перечисленными системами вильном синтаксисе файла main.cf. Впрочем, эта команда
приемы, которым я вас научу, работают практически оди- работает не только с конфигурационными файлами, заодно
наково. Мелкие различия в формате вывода информации она позволяет убедиться, что все необходимые служебные
на экран или названии директорий, в которых лежит тот файлы и директории имеют надлежащие права и принад-
или иной файл, в данном случае несущественны. Поэто- лежат кому положено. Стоит отметить тот факт, что, если в
му я думаю, что у вас не возникнет проблем с применени- результате проверки будут обнаружены проблемы с каки-
ем полученных знаний. ми-либо директориями, Postfix попытается самостоятель-
но исправить их атрибуты. В случае успешности этого дей-
Начинаем диагностику ствия на экране не появится никаких предупреждений. Ну а
Итак, представим, что неприятности все же случились. Про- если самостоятельно разобраться с проблемами не удаст-
изошло это по вине неловкого администратора или аппа- ся, сообщения об ошибках будут достаточно детализиро-
ратного сбоя – неважно, наша задача – найти неполадки ваны и легко понятны даже начинающему администрато-
и исправить их. Каменщики обычно пляшут от печки, а мы ру. Иногда случается так, что служебные директории бы-
начнем диагностику с проверки, запущен ли главный про- вают полностью удалены, в этом случае Postfix постарает-
цесс Postfix. Сделать это проще всего командой: ся самостоятельно восстановить их. Единственное, чего он
не умеет создавать – бинарные выполняемые файлы вза-
# ps -ax | grep master мен утраченных. После выполнения команды check непло-
22628 ? Ss 0:00 /usr/lib/postfix/master хо было бы перезагрузить Postfix, в идеале это требуется
редко, но иногда лучше перестраховаться:
В некоторых дистрибутивах Linux того же эффекта мож-
но добиться командой: # postÞx stop
# postÞx start

# service postÞx status


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

8
администрирование
var/log/maillog. Если вам не удалось найти нужный файл, то DB-файлы – это бинарная форма вспомогательных та-
в зависимости от того, какая система syslog у вас исполь- блиц, используемых Postfix во время работы. Обычно она
зуется, посмотрите в /etc/syslog.conf или /etc/syslog-ng.conf. создается из текстовых файлов специального формата с
Поищите в этих файлах строки, где встречается mail, и вам помощью команды postmap <имя текстового файла>. На-
сразу все станет понятно. Итак, с местонахождением про- чинающие администраторы при попытке расширить функ-
токолов мы определились, теперь следует посмотреть, что циональность postfix довольно часто забывают создавать
в них записано. В общем виде записи в протоколе долж- вспомогательные таблицы, которые сами же прописали в
ны выглядеть так: main.cf.
Jun 12 17:23:41 altlinux postfix/postfix-script: starting the Postfix mail system Обычно Postfix записывает в файлы протокола доста-
Jun 12 17:23:41 altlinux postfix/master[23846]: daemon started -- version 2.1.6
точно информации для того, чтобы понять, в чем именно за-
Каждая запись состоит из нескольких компонентов. Пе- ключается проблема, но иногда бывает полезно увеличить
речисляем по порядку: дата и время события, имя хоста, «разговорчивость» некоторых компонентов системы. Для
имя компонента postfix и ID процесса, ну и, наконец, само этого открываем файл master.cf, выбираем нужный компо-
сообщение. нент системы и дописываем к его ключам запуска -v. К при-
Я уже упоминал, что Postfix является не монолитной меру, строка, заставляющая демона cleanup подробнее от-
программой, а целым содружеством демонов, во главе ко- читываться о своих действиях, выглядит вот так:
торых стоит процесс master. С точки зрения безопасности
это неоспоримое преимущество, потому что отказ одного cleanup unix n - - ↵
- 0 cleanup -v
компонента не приведет к падению всех остальных. Но в
то же время благодаря такому подходу каждая программа Выполняем команду postfix reload и смотрим, что проис-
подсистемы самостоятельно отвечает за протоколирова- ходит. Если полученные сведения все еще не устраивают
ние результатов своей работы. Получается, что, несмотря нас, добавляем через пробел к ключам запуска еще одну
на свое главенство, процесс master обладает лишь необхо- -v, и так до тех пор, пока не получим необходимую подроб-
димым минимумом информации о подчиненных процессах. ность. Подобный метод можно применять к любому из ком-
К примеру, он может сообщить, что, судя по коду ошибки, понентов Postfix. При проблемах с входящими SMTP-соеди-
у процесса с определенным ID проблемы, но сути их mas- нениями добавляют подробности компоненту smtpd. Если
ter все равно не знает. В большинстве случаев поиск по ID нас интересует доставка, то ключ надо добавить к параме-
процесса, на который пожаловался master, дает исчерпы- трам демона очереди qmgr. Плюс зависимости от направ-
вающую информацию о неполадках в системе. ления, в котором должно уйти письмо, внести такие же из-
Для указания серьезности ошибки служат специально менения в параметры вызова агентов доставки smtp, lmtp,
зарезервированные слова. Давайте рассмотрим их зна- pipe, local, virtual. Также можно глобально указать ключ
чение. -v для программы postfix, которая в свою очередь переда-
! panic – произошло что-то из ряда вон выходящее. Вы, ет параметры в master.
видимо, нашли какую-то серьезную ошибку в работе Делается это, к примеру, вот так:
Postfix, которую вряд ли сможете исправить самостоя-
тельно. Стоит отметить, что за несколько лет эксплуа- # /usr/sbin/postÞx -v
тации Postfix мне ни разу не приходилось встречать со-
общения об ошибках подобного типа. Как и в предыдущих примерах, количество повторений
! fatal – продолжение работы невозможно до тех пор, по- -v указывает, насколько подробными должны быть выво-
ка ошибка не будет исправлена. Обычно причиной та- димые сообщения.
ких сообщений становится отсутствие важных файлов Следующей весьма полезной для отладки командой
или прав на доступ к каким-либо объектам. является postconf. Она выводит на экран огромное коли-
! error – ошибка может быть фатальной или нет, но обыч- чество информации о состоянии внутренних переменных
но продолжение работы системы невозможно. и таким образом позволяет посмотреть, каковы на данный
! warning – предупреждение о не фатальных ошибках. Мо- момент настройки postfix. Кстати, стоит отметить, что зна-
жет указывать на некоторые несущественные пробле- чение практически всех переменных, выводимых postconf,
мы или ошибки в конфигурации. вы можете переопределить в файле main.cf. К примеру,
узнать версию Postfix можно, выполнив:
Посмотрим на одну из самых типичных записей об
ошибке: # postconf | grep version

Jun 12 17:41:28 altlinux postfix/smtpd[24506]: fatal:


open database /etc/postfix/helo_restriction.db: No such file or directory А с помощью postconf -m можно увидеть, с какими типа-
Jun 12 17:41:29 altlinux postfix/master[23846]: warning:
process /usr/lib/postfix/smtpd pid 24506 exit status 1
ми баз данных умеет работать ваш экземпляр Postfix.
Jun 12 17:41:29 altlinux postfix/master[23846]: warning:
/usr/lib/postfix/smtpd: bad command startup -- throttling # postconf –m
Судя по сообщению от postfix/master[23846], процесс static
postfix/smtpd[24506] аварийно завершил свою работу, по- cidr
cdb
тому что не смог найти файл служебных таблиц /etc/post- nis
fix/helo_restriction.db. regexp

№6, июнь 2005 9


администрирование
environ Если воспользоваться такой командой, то на финальной
proxy
btree стадии доставка письма будет прервана и пользователь не
unix получит тестового письма, но все записи протокола так же,
hash
как и в предыдущем случае, придут к нам в почтовый ящик.
Представим, что нам необходимо посмотреть, что ста- Еще одним удобным способом посмотреть, что проис-
ло с тем или иным письмом. Подобная задача довольно ча- ходит во время SMTP-сессии, является директива debug_
сто встает перед администратором почтовой системы, ког- peer_list из файла main.cf. Глобально включать отладку всех
да пользователь звонит и жалуется, что ему два дня назад SMTP-соединений было бы очень накладно, поэтому в нее
отправили письмо, а он его до сих пор не получил. Отсле- стоит добавлять только список хостов, взаимодействие с
дить путь прохождения письма довольно просто: нужно от- которыми мы хотим отслеживать тщательнее, чем обычно.
крыть файл протокола, найти сообщения о соединении с ин- К примеру, для наблюдения за передачей писем между на-
тересующего хоста. К примеру, нам интересно увидеть, ку- ми и yandex.ru, mail.ru, pochta.ru и 10.10.10.23 строка могла
да делось письмо от vasa@unreal.net к ira@unreal.net. Ищем бы выглядеть вот так:
в протоколе vasa@unreal.net, например, с помощью grep и
находим следующие строки: debug _ peer _ level = 2
debug _ peer _ list = yandex.ru, mail.ru pochta.ru ↵
10.10.10.23/32 10.10.10.0/24
Jun 12 19:11:19 altlinux postfix/smtpd[27445]: connect from
clif.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:
message-id=20050612151145.F29D3562E@mailhost.unreal.net
лись, никто не мешает в качестве хоста указывать IP-адре-
Jun 12 19:12:27 altlinux postfix/qmgr[27342]: F29D3562E: са или целые подсети вроде 10.10.10.0/32. С данной возмож-
from=<vasa@unreal.net >, size=363, nrcpt=1 (queue active) ностью стоит обращаться очень осторожно, потому что каж-
Jun 12 15:12:29 altlinux postfix/smtpd[27445]: disconnect from
clif.unreal.net[10.10.21.75] дая SMTP-сессия, попадающая под наш фильтр, записыва-
ет в файл протокола примерно 20 Кб текста. При большом
Из них следует, что письмо было принято от clif.unreal. потоке писем между нами и наблюдаемым хостом стоит не-
net[10.10.21.75], и ему присвоен ID F29D3562E почтовой оче- много зазеваться, и место на файловой системе /var может
реди. Выполним следующую команду: закончиться довольно быстро. Директива debug_peer_lev-
el указывает, насколько подробными должны быть отчеты.
# grep /var/log/maillog F29D3562E По умолчанию ее значение равно 2.
Jun 12 19:12:27 altlinux postfix/local[27491]: F29D3562E: Если хочется заглянуть чуть глубже в процесс рабо-
to=<ira@unreal.net >, relay=local, delay=42,
status=sent (delivered to command: /usr/bin/procmail -a $DOMAIN -d $LOGNAME) ты Postfix, можно воспользоваться услугами стандартных
Jun 12 19:12:27 altlinux postfix/qmgr[27342]: F29D3562E: removed
трассировщиков системных вызовов. Для разных систем
их имена могут несколько отличаться, но, скорее всего, вы
Проверим доставку легко найдете в своей системе что-то вроде trace, strace,
Судя по выводу, письмо было успешно доставлено в почто- truss или ktrace. Следить за каким-либо процессом доволь-
вый ящик пользователя, что и требовалось доказать. но просто – нужно всего лишь вызвать команду, актуальную
Иногда бывает нужно проверить, как передается почта для вашей системы с ключом -p и номером процесса.
между нашим сервером и каким-либо другим. В случае ес- Ну а если и это не помогло, можно провести отладку с
ли администрируемый сервер доступен для нас по SMTP, помощью интерактивного отладчика xgdb или его не инте-
выполнить это достаточно просто. А что делать, если сер- рактивного собрата gdb. За этот функционал отвечает ди-
вер предназначен для внутренней почты компании и нахо- ректива debugger_command из файла main.cf. Впрочем, я
дится в закрытой сети, соответственно у нас к нему есть до- сильно сомневаюсь, что она пригодится кому-то из вас. По
ступ только по ssh или telnet? Первый способ – проверить крайней мере мне за последние три года ни разу не при-
прохождение почты: отправить письмо из командной стро- шлось воспользоваться ею, даже под большой нагрузкой,
ки с помощью команды mail и затем проанализировать то, Postfix работал без каких-либо нареканий.
что будет написано в файлах протокола. Большинство ад- Думаю, на данном этапе можно остановиться. вы уже
министраторов делает именно так, но есть более удобный достаточно хорошо подготовлены для самостоятельного по-
путь. С помощью команды sendmail можно проверить про- иска неисправностей в работе Postfix, если таковые встре-
хождение почты гораздо более простым способом. тятся на вашем пути. В следующей статье мы поговорим
о методиках анализа узких мест в работе почтовой систе-
# sendmail -v vasa@unreal.net мы и способах тонкой настройки нацеленной на увеличе-
ние производительности.
После доставки письма к vasa@unreal.net все данные,
касающиеся этого факта, будут не только записаны в про- Литература:
токол, но еще и отправлены почтой пользователю, от име- 1. Бешков А. Почтовая система для среднего и малого
ни которого была запущена программа. В нашем случае офиса. – Журнал «Системный администратор», №5,
это пользователь root. май 2003 г. – 46-54 с.
2. Бешков А. Архитектура Postfix. – Журнал «Системный
# sendmail -bv vasa@unreal.net администратор», №6, июнь 2004 г. – 04-08 с.

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

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

У вас уже есть офисная мини-АТС или вы только планируете ее покупку? Думаете
о предоставлении новых возможностей для повышения эффективности работы сотрудников?
Сегодня мы приоткроем дверь в мир Open Source IP-телефонии, рассмотрев возможности
одного из самых популярных продуктов для Linux – Asterisk PBX.

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

И
так, что же такое Asterisk? Читаем на официальном terisk вы сможете реализовать проект любого масштаба –
сайте [1]: «Asterisk – полностью программная учреж- от простого домашнего сервера голосовой почты до теле-
денческая АТС (УАТС), работающая под управлени- фонного сервера предприятия с функциями IVR (Interactive
ем операционной системы Linux». По возможностям (см. Voice Response – система голосовых меню).
[2]) Asterisk зачастую опережает своих традиционных со- Сегодня мы рассмотрим простой пример установки и на-
братьев. Поддерживаются практически все популярные стройки сервера Asterisk для работы с несколькими поль-
протоколы IP-телефонии (SIP, H323, SCCP, ADSI). Помимо зователями.
стандартных и общеизвестных, Asterisk также имеет свой
собственный протокол – IAX. Можно ли на него посмотреть?
Его можно использовать как для подключения обычных Думаю, что после знакомства со списком возможностей (а
клиентов, так и для передачи голосового трафика между это более 70 позиций) у вас возникло желание как можно
несколькими серверами Asterisk. Для сопряжения с «тра- быстрее взглянуть на Asterisk своими глазами. Спешу вас
диционной телефонией» имеются аналоговые (FXO, FXS) обрадовать – посмотреть на Asterisk без его установки мож-
и цифровые модули расширения (E1, T1). С помощью As- но! Для этого воспользуйтесь специальным LiveCD, обра-

12
администрирование
зами сетевой загрузки для PXE-совместимой сетевой пла- новки достаточно прост – необходимо поочередно зайти
ты или карты CompactFlash [3]. в каждый из каталогов и выполнить команды make clean
Однако, если вы считаете LiveCD или другие способы и make install:
«знакомства» излишними, можете сразу перейти к инста-
ляции, только предварительно давайте разберемся, что # cd zaptel
# make clean install
именно мы будем устанавливать. # cd ../libpri
# make clean install
# cd ../asterisk
Каким бывает Asterisk # make clean install samples
Существует две версии Asterisk – HEAD и STABLE. Пер-
вая – версия для разработчиков и «продвинутых» пользо- Последняя команда не только скомпилирует и устано-
вателей. Все новые возможности первоначально добавля- вит Asterisk, но и скопирует стандартные файлы конфигу-
ются именно в HEAD. Версия STABLE, напротив, содержит рации в /etc/asterisk. Вообще установочный скрипт копиру-
только проверенные и отлаженные компоненты и модули. В ет файлы в 3 основных каталога:
ней функциональность заведомо приносится в жертву ста- ! /etc/asterisk – расположение конфигурации;
бильности и надежности. Сильно расстраиваться по этому ! /usr/lib/asterisk/modules – место хранения модулей Aster-
поводу не стоит – немного терпения и все самое «модное» isk;
из HEAD плавно перейдет в STABLE. ! /var/lib/asterisk/ – здесь находятся дополнительные фай-
Итак, для начинающих пользователей, желающих мак- лы asterisk (звуки, agi-скрипты, картинки и т. д.).
симально быстро получить работающее и проверенное ре-
шение, рекомендуется использовать STABLE-версию. (Её Сам же исполняемый файл обычно помещается в /usr/
же в силу простоты мы будем описывать в статье.) sbin/asterisk.
Если же вы собираетесь принять участие в процессе Для проверки правильности установки выполним сле-
разработки Asterisk или просто хотите всегда использо- дующую команду:
вать все самое последнее и новое – устанавливайте вер-
сию HEAD. # asterisk -vvvvvcd

Процесс установки. Если все нормально, то мы увидим несколько экра-


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

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


какие-то проблемы, поэтому при установке Asterisk вос-
пользуемся вторым способом. К тому же, если вам потре-
буется установить HEAD-версию, вам просто придется ис-
пользовать CVS. (Для Asterisk основной веткой CVS явля-
ется HEAD, поэтому для загрузки STABLE-версии необхо-
димо указать ревизию (-r v1-0).) Процесс компиляции для Рисунок 1. Консоль Asterisk
обеих веток абсолютно одинаков, поэтому все, что написа- Не вдаваясь в подробности, напишем в консоли stop
но далее, применимо и для HEAD, и для STABLE. now и перейдем к более детальной настройке.
Итак, нам понадобятся 3 модуля: zaptel – модуль ана-
логовой телефонии, libpri – модуль цифровой телефонии, Чего же мы хотим?
и сам Asterisk. Для загрузки модулей с сервера CVS выпол- Прежде чем приступить к редактированию конфигураци-
ните следующие команды: онных файлов Asterisk, давайте определим, что же именно
мы хотим от него получить. Итак, нам необходимо:
#
#
cd /usr/src
export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
! Обеспечить возможность разговора абонентов по IP
# cvs login # введите пароль anoncvs (SIP).
# cvs checkout -r v1-0 zaptel libpri asterisk ! Создать персонифицированные голосовые ящики (с
автоматической отсылкой голосовых сообщений на
После выполнения последней команды в /usr/src будут e-mail).
созданы соответствующие подкаталоги. Процесс уста- ! Настроить «перехват», передачу и парковку звонков.

№6, июнь 2005 13


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

С задачей вроде бы определились, поэтому, не отклады- поддерживающие кодек G729 (из бесплатных – firefly). Для
вая дела в долгий ящик, приступим к ее выполнению. тестового примера предположим, что у нас есть 3 пользо-
вателя, использующие X-lite, sjPhone и MS Messenger соот-
А ты меня слышишь? ветственно. Отразим эту информацию в конфигурацион-
Первое, что мы сделаем с нашим сервером, – научим его ных файлах. Начнем с sip.conf:
обслуживать внутренние звонки. Начнем с редактирова-
ния файла /etc/asterisk/sip.conf. Убедимся, что в секции ge- [200] ; xlite phone
type=friend
neral присутствуют следующие строки: host=dynamic
username=200
secret=user1 _ password
[general] nat=no
context=default canreinvite=no
allowguest=no context=ofÞce
bindport=5060 callerid=”User1” <200>
bindaddr=0.0.0.0 allow=gsm
allow=ulaw
В первой строке мы определяем контекст, в который бу- allow=alaw
дут попадать все входящие звонки. Во второй строке мы за-
[201] ;sjphone
прещаем неавторизованный доступ к нашему серверу, что type=friend
особенно важно в случае, если Asterisk будет доступен из host=dynamic
username=201
Интернета. В двух последующих строках мы задаем порт и secret=user2 _ password
интерфейс, на котором ожидаем запросы SIP-клиентов. dtmfmode=rfc2833
context=ofÞce
Теперь несколько слов о самих клиентах – они могут быть callerid=”User2” <202>
как программными (приложение на компьютере), так и аппа- allow=gsm
allow=ulaw
ратными (автономное устройство, реализующее один из про- allow=alaw
токолов Asterisk). Для первого знакомства с Asterisk нам впол-
[203] ; ms messenger
не хватит возможностей программных клиентов. Наиболее type=friend
известные из них: X-Ten X-Lite, sjPhone, FireFly, MS Messen- host=dynamic
username=202
ger, kPhone. Возможности этих программ лучше всего срав- secret=user3 _ password
нивать, представив их в виде таблицы (см. таблицу 1). dtmfmode=rfc2833
context=ofÞce
В зависимости от решаемой задачи можно использо- callerid=”User3” <203>
вать различные программные клиенты. Если ваш сервер allow-ulaw
allow-alaw
будет преимущественно использоваться для внутренних
звонков, то имеет смысл обратить внимание на программы Небольшие пояснения по параметрам конфигурации.
с более функциональным интерфейсом (X-lite, sjPhone). В Поле type, определяющее тип клиента, может принимать
случае большого количества междугородних звонков (либо три значения:
работы в условиях ограниченной пропускной способности ! user – возможны только входящие звонки;
или ненадежного канала) лучше использовать программы, ! peer – возможны только исходящие звонки;
1
Доступно с использованием бесплатной внешней библиотеки.
2
Здесь приводится субъективная оценка автора.
3
Поддержка расширенной функциональности доступна в коммерческой версии.

14
администрирование
! friend – разрешены как исходящие, так и входящие вы- стема голосовой почты Asterisk. Номер 1000 отправит нас
зовы. в начало контекста demo.
Надеюсь, что теперь ситуация с контекстами немного
Поле host позволяет определить IP-адрес, с которого прояснилась. Теперь добавим наши телефоны в этот номер-
разрешены подключения для данного клиента. В нашем ной план. Для этого создадим следующий контекст:
случае задавать такое ограничение особого смысла нет,
поэтому оставим динамические адреса (dynamic). Поля us- [ofÞce]
exten => 200,1, Macro(stdexten,200,SIP/200)
ername и secret определяют имя пользователя и пароль, ко- exten => user1, 1, Goto(200|1)
торые должны использоваться клиентом при регистрации. exten => 201,1, Macro(stdexten,201,SIP/201)
exten => user2, 1, Goto(201|1)
Dtmfmode задает способ передачи сигналов DTMF. Пара- exten => 202,1, Macro(stdexten,202,SIP/202)
метр nat говорит, может ли данный клиент работать из-за exten => user3, 1, Goto(202|1)
include => demo
NAT. Canreinvite разрешает (yes) или запрещает (no) уста-
новку прямого соединения между участниками (минуя As- Мы определили три номера и три псевдонима, при набо-
terisk). Некоторые клиенты поддерживают строго опреде- ре которых активируется макрос stdexten, отвечающий за
ленные способы работы, что необходимо отражать в фай- обработку вызовов пользователей. Псевдонимы позволят
лах конфигурации. Context – имя контекста, в котором бу- звонить абоненту не только по его номеру, но и по имени.
дет находиться данный абонент. CallerID – идентификаци- В качестве параметров макросу передается номер данно-
онная строка, отображается при звонках от данного поль- го пользователя и имя его SIP-устройства. Давайте посмо-
зователя (АОН). трим, что же делает этот макрос:
После задания всех вышеописанных настроек и сохра-
нения файла sip.conf перейдем к определению номерного [macro-stdexten]
exten => s, 1, Dial (${ARG2},20,t4)
плана. Для этого нам понадобится отредактировать файл exten => s, 2, Goto(s-$(DIALSTATUS),1)
/etc/asterisk/extensions.conf. Но, прежде чем запустить ре- 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)
Номерной план в Asterisk (Dial plan) задается при помо- exten => a, 1, VoiceMailMain(${ARG1})
щи так называемых расширений (extension). В файле стан-
дартной установки можно увидеть следующее: Данный макрос звонит указанному пользователю. Если в
течение 20 секунд никто не ответил или вызываемый або-
[demo] нент был занят, звонящему проиграется соответствующее
exten => s,1, Wait,1
exten => s,n, Answer сообщение, после чего он получит возможность оставить
exten => 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) умение, добавив в файл /etc/asterisk/voicemail.conf следу-
exten => s,n, WaitExten
ющие строки:
Обработка контекста demo начинается с записей, в ко-
торых «s» является первым символом. Так, сначала Aster- [general]
format=wav49
isk подождет 1 секунду, потом поднимет трубку и ответит на maxmessage=300
звонок, установит значения переменных (строки 2, 3), про- [ofÞce]
200 => 123, User1, user1@mail.company.com,,attach=yes
играет содержимое файлов demo-congrats и demo-instruct 201 => 456, User2, user2@mail.company.com,,attach=yes
и будет ожидать набора добавочного номера. Следующие 202 => 789, User3, user3@mail.company.com,,attach=yes
строки определяют конкретные номера в контексте demo:
Этим мы определили 3 ящика голосовой почты для на-
exten => 2,1, BackGround(demo-moreinfo) ших пользователей, с паролями 123, 456, 789 соответствен-
exten => 2,n,Goto(s,instruct)
exten => 3,1, SetVar(Language()=fr) но. При поступлении нового сообщения пользователю неза-
exten => 3,2, Goto(s, restart) медлительно будет отсылаться e-mail на указанный адрес.
exten => 8500, 1, VoiceMailMain
exten => 8500, n, Goto,s Во вложении письма будет присутствовать само голосо-
exten => 1000, 1, Goto(default,s,1) вое сообщение в формате wav (вместо wav можно исполь-
зовать любой формат, поддерживаемый сервером). Мак-
Итак, определены 4 номера – 2, 3, 8500 и 100. При звон- симальная длина сообщения – 5 минут. Если в качестве
ке на номер 2 мы прослушаем сообщение demo-moreinfo, параметра ящика указать attach=no, то высылаться будет
после которого Asterisk перенаправит нас в начало, к со- только уведомление об оставленных сообщениях. Для то-
общению demo-instruct. Набрав номер 3, мы изменим язык го чтобы сообщения отправлялись, нам понадобится опре-
данной сессии на французский. (Чтобы Asterisk мог «раз- делить еще один параметр – команду для отправки почты.
говаривать» с вами на французском языке, необходимо на- По умолчанию она имеет следующий вид:
личие соответствующих файлов озвучки в папке /var/lib/as-
terisk/sounds/fr.) При наборе номера 8500 нам ответит си- ;mailcmd=/usr/sbin/sendmail –t

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

№6, июнь 2005 15


администрирование
Как видно из названия, для работы данной функции необ- Устанавливаем и запускаем соответствующий файл уста-
ходимо, чтобы на компьютере с Asterisk был установлен новки. Для настройки нажимаем на «кнопку с отверткой»
почтовый сервер sendmail или другой, имеющий подобной (см. рис. 3).
интерфейс вызова (postfix, exim и др.). Информацию по на-
стройке почтового сервера можно найти в [4-6].
Для работы с голосовой почты с телефона в нашем но-
мерном плане используется номер 8500. После ввода номе-
ра телефона и пароля пользователь получает доступ к интер-
фейсу управления своим голосовым ящиком. Помимо стан-
дартных возможностей прослушивания перемещения и уда- Рисунок 3. Элемент интерфейса sjPhone после установки
ления сообщений пользователь может самостоятельно запи- Переходим на закладку «Profile» и нажимаем на кнопку
сывать персональные приветствия, менять свой пароль или «New». Создадим новый профиль «Asterisk» с типом «Calls
отправлять голосовые сообщения другим пользователям. though SIP Proxy». Перейдем на закладку «SIP Proxy» и вве-
На этом базовую настройку Asterisk можно считать за- дем IP-адрес (или имя) сервера Asterisk и нажмем «ОК»
конченной, теперь самое время перейти к настройке наших (см. рис. 4).
программных клиентов.

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

Enabled - Yes
Display Name - Asterisk
Username – 200
Authorization User – 200
Password – user1 _ password
Domain/Realm - asterisk
SIP Proxy – 192.168.0.205
Outbound Proxy – 192.168.0.20
Register – Always
Рисунок 4. Настраиваем параметры SIP sjPhone
Если все настройки сделаны правильно, то в окне X-Li- В появившемся окне введем имя и пароль для данно-
te мы увидим: го сервера – 201 и user2_password соответственно. По-
сле закрытия окна свойств sjphone изменит свой вид. Ес-
ли данные введены правильно, то мы увидим следующее
(см. рис. 5).

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


Теперь можно попробовать позвонить по тестовым но-
мерам стандартной инсталляции – 2, 3, 1000, 1234, 1236,
500, 600, 8500, 200, 201, 202. При звонках на последние два
номера вам, скорее всего, ответит Allison Smith – облада-
тельница приятного голоса, которым разговаривает Aster-
isk. Эти телефоны пока еще не настроены, и о том, как их Рисунок 5. sjPhone, зарегистрированный на сервере Asterisk
можно найти, Asterisk еще ничего не знает. Что ж, давайте
исправим это недоразумение! Настраиваем Windows Messenger
Если устанавливать специального клиента не хочется, мож-
Настраиваем sjphone но попробовать разговаривать с помощью Windows Mes-
Скачиваем с сайта http://www.sjlabs.com программу sjphone. senger. Работа с Asterisk не является для него стандартной

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

16
администрирование
возможностью, так что вооружимся редактором реестра и версален. Вы определяете так называемые группы вызо-
отправимся в путь. Если мы используем Windows Messen- ва – телефоны, звонки на которые можно перехватывать, а
ger версии ниже 4.7, то нам понадобится следующий ключ также для каждого из телефонов определяете, какие груп-
реестра: HKEY_CURRENT_USER\Software\Microsoft\Mes- пы они могут перехватывать (см. рис. 7).
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. Рисунок 7. Группы вызова и группы перехвата
Нажмите на кнопку «Advanced» и в открывшемся диалого- В нашем случае мы реализуем самый простой вариант
вом окне введите адрес сервера Asterisk, попутно отметь- перехвата звонков – все телефоны смогут перехватывать
те UDP в качестве транспорта. Теперь попробуем подклю- звонки друг друга. Для этого внесем некоторые дополне-
читься к серверу Asterisk (sign in) с именем 202@asterisk. В ния в файл sip.conf. В секциях описания наших телефонов
случае успеха мы увидим следующее (см. рис. 6). (200, 201, 202) добавим две строчки:

callgroup=1
pickupgroup=1

Теперь добавим саму возможность «перехвата» звон-


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

exten => *8,1,PickUP()

Теперь, после перезагрузки номерного плана Asterisk, у


нас появится возможность перехвата вызовов. Для этого,
когда вы услышите звонок телефона, просто нажмите *8,
Рисунок 6. Windows Messenger, зарегистрированный и разговор будет переключен на ваш телефон.
на сервере Asterisk
Итак, теперь все три клиента настроены. Связь можно Можно здесь припарковаться?
проверить, позвонив с каждого из них на приведенные вы- Под «парковкой» в Asterisk понимается следующая ситуа-
ше номера нашего сервера. ция: вам кто-то позвонил, в процессе разговора вы поня-
ли, что вам нужно перейти к другому телефону. Вы «парку-
Иду на перехват! ете» ваш звонок в определенном месте, подходите к друго-
Как вы, наверное, уже догадались, сейчас речь пойдет о му телефону и «подключаете» оставленный ранее звонок.
«перехвате звонков». Для начала несколько слов о том, что Парковка в Asterisk сделана с использованием другой удоб-
же это такое в понимании Asterisk. Допустим, вы слышите, ной возможности – передачи звонка. Определив некую по-
как у человека рядом звонит телефон, а его самого на ме- следовательность символов (по умолчанию это 1#), можно
сте нет. По специфике вашей деятельности вы сами можете в процессе разговора переводить звонки другим абонен-
ответить на этот звонок, не заставляя звонившего лишний там. Специфика же парковки заключается в том, что есть
раз обращаться к голосовой почте. Для того чтобы не под- некие места – парковочные слоты, в которые собеседни-
ходить к телефону физически, можно «перехватить» звонок ков можно помещать и забирать.
со своего телефона. Нажав определенную последователь- Давайте разберемся со всем этим на практике. Пара-
ность клавиш, вы сможете ответить на «чужой» вызов. В As- метры парковки и передачи вызовов определяются в фай-
terisk поддерживается два вида таких «перехватов»: ле features.conf. В стандартной инсталляции для парковки
! в рамках указанной группы; звонков определяется 20 номеров, начиная с номера 701.
! конкретного номера. Для активации функции убедимся, что файл features.conf
содержит следующие данные:
Для перехвата конкретного номера вы набираете на те-
лефоне: *8#номер_звонящего_телефона, после чего звонок [general]
parkext => 700
переключается на ваш номер. Первый способ более уни- parkpos => 701-720

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

№6, июнь 2005 17


администрирование
context => parkedcalls
xfersound =beep
xferfailsound = beeper Описание конфигурационных
featuredigittimeout = 1000 файлов Asterisk
[featuremap]
blindxfer => #1

Итак, для «парковки» звонка будем использовать номер


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

include => parkedcalls

Теперь, если во время разговора мы наберем 1#700,


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

Включаем межгород
(Межгород? Соединяю...)
Для совершения междугородних звонков можно использо-
вать как более «родной» для Asterisk протокол SIP, так и бо- Конструкция EXTEN:1 означает то, что при передаче
лее распространенный среди российских провайдеров IP- звонка шлюзу провайдера первый символ будет отбрасы-
телефонии протокол H323. Поддержка H323 появляется по- ваться.
сле установки определенных модулей (в нашей инсталля- Все входящие звонки от провайдера будем принимать
ции этих модулей пока нет), а вот SIP присутствует по умол- в контекст [tario_inc]. Его можно сконфигурировать при-
чанию. Кроме того, есть как минимум один российский про- мерно так:
вайдер, работающий с этом протоколом, – сеть Тарио [7].
Работа в данной сети не бесплатна, поэтому предваритель- [tario _ inc]
exten => s,1,Wait, 1
но нам придется зарегистрироваться8. После этого можно exten => s, 2, Answer
приступить к настройке. Откроем уже знакомый нам файл exten => s,3, BackGround(local-welcomе)
exten => s,4, WaitExten
sip.conf и добавим в него следующие записи 9: exten => 200,1, Macro(stdexten,200,SIP/200)
exten => 201,1, Macro(stdexten,201,SIP/201)
exten => 202,1, Macro(stdexten,202,SIP/202)
[tario _ out] exten => 8500,1, VoiceMailMain
type=peer exten => 8500,n, Hangup
host=адрес _ сервера _ tario
username= номер _ лицевого _ счета _ tario
fromusername=номер _ лицевого _ счета _ tario
fromdomain=домен _ tario При звонке в этот контекст пользователь сначала услы-
secret= пароль _ tario шит сообщение local-welcome (сообщение нужно будет
usereqphone=yes
предварительно записать), в котором его попросят ввести
Для входящих вызовов: добавочный номер вызываемого абонента. После введения
номера звонящего соединят с требуемым пользователем,
register => номер _ лицевого _ счета _ tario:пароль@tario _ in если же этот пользователь недоступен, звонивший получит
[tario _ in]
type=user возможность оставить сообщение голосовой почты. Подоб-
context=tario _ inc но доступу к шлюзу голосовой почты мы также можем пре-
host=ip _ адрес _ сервера _ tario
доставить доступ к другим функциям Asterisk.
Для исходящих звонков через этого провайдера будем
использовать префикс 8. В контексте [office] добавим сле- Несколько слов о безопасности
дующую строчку: При определении контекстов, доступ к которым будут по-
лучать внешние пользователи, необходимо дважды (а то
exten => _ 8, Dial(SIP/${EXTEN:1}@tario _ out,20,rT) и трижды) подумать. Так, если бы в последнем примере

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

18
администрирование
вместо «ручного» создания правил для дозвона до каждо- ки «дополнительных» возможностей, а также способы кон-
го пользователя мы бы просто написали: фигурации нескольких популярных программных клиентов.
На этом наше знакомство с Asterisk не заканчивается. Как
include => ofÞce вы могли видеть, процесс конфигурации не является очень
простым для непосвященного пользователя. Именно это мы
то все внешние пользователи, звонящие на наш сервер, по- постараемся исправить в следующий раз, рассмотрев не-
мимо вполне легального доступа к внутренним номерам и сколько веб-интерфейсов, значительно упрощающих на-
серверу голосовой почты также получили бы не совсем ле- стройку Asterisk. Кроме того, постараемся более детально
гальный доступ к междугородним звонкам с использовани- изучить «аппаратную» часть телефонных систем на осно-
ем нашего провайдера. Однако дублировать записи вызо- ве Asterisk, а также расширить функциональность создан-
ва тоже не слишком красиво, поэтому более правильно бы- ной сегодня системы.
ло бы перенести все доступные извне правила маршрути-
зации в отдельный контекст [office-rules], а в контексте [of- Литература и ссылки:
fice] вместо них написать так: 1. http://www.asterisk.org.
2. http://www.asterisk.org/index.php?menu=features.
[ofÞce] 3. http://www.automated.it/asterisk.
include => [ofÞce-rules]
exten => _ 8, Dial(SIP/${EXTEN:1}@tario _ out,20,rT 4. Шергин Д. Установка IMAP4-сервера на базе Cyrus-
imapd + sendmail. – Журнал «Системный администра-
После этого в контексте [tario-inc] вместо повторного пе- тор», №10, октябрь, 2003 г. – 10-14 c.
речисления правил дозвона до пользователей можно сме- 5. Бешков А. Архитектура Postfix. – Журнал «Системный
ло написать include => [office-rules]. При такой схеме office- администратор», №6, июнь, 2004 г. – 4-8 c.
rules не содержит ничего лишнего, и соответственно вос- 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.
Итак, сегодня мы рассмотрели основы настройки Aster- 10. http://lists.digium.com.
isk и связанные с этим подробности – файлы конфигура- 11. Платов М. Что важно знать об IP-телефонии. – Журнал
ции пользователей, настройки номерного плана, настрой- «Системный администратор», №5, май, 2005 г. – 20-25 c.

№6, июнь 2005 19


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

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


МОНИТОРИНГА
Неприятности с компьютерами и сервисами случаются
в самый неподходящий момент. Избежать их,
быстро исправить положение, а иногда и предвидеть –
всё это может мониторинг. Antmon – новая система
мониторинга, созданная для того, чтобы жизнь
сисадмина была спокойнее.

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

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

В
наше время компьютерные мощности растут всё бы- ятно, что будет иметь место конфликт по портам. Можно
стрее и быстрее, поэтому системным администрато- повесить свой сервер 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,
мер, Ganglia). Oracle 9i Enterprise.
Из заслуженно известных систем стоит упомянуть PIKT, Вышесказанное не уменьшает достоинств упомянутых
OpenView и Nagios. Последние два продукта, кроме широ- систем мониторинга. Но когда мне пришлось контролиро-
кой функциональности, имеют и разветвлённые средства вать несколько десятков узлов вычислительного кластера
визуализации. Какому админу не будет приятно посмотреть и серверы для его поддержки, оказалось, что требования
на красивую картинку своей сети? к системе мониторинга довольно высоки, и мало какие из
К недостаткам Nagios, да и большинства других систем существующих систем могут им удовлетворить. Особенно
мониторинга (к примеру, snmp-обработчики открытых snmp- если добавить требование повышенной надёжности. Что
серверов) можно отнести реализацию процедуры сбора не делать, если завис или оказался недоступен сервер с го-
«вшитых» намертво параметров. Каждый модуль для мони- ловным монитором? Если канал в Интернет «умер»? Тог-
торинга нового параметра (или группы параметров) пред- да админ уже ничего не узнает.
ставляет собой отдельную программу, которая запускает-
ся всякий раз, когда необходимо получить значения пара- Система Antmon
метров. А если таких параметров десяток и не на одном, а Для решения обозначенных проблем я создал систему мо-
нескольких серверах? Для серьёзного мониторинга серве- ниторинга Antmon (http://parcon.parallel.ru/antmon). Она бы-
ра нужно снимать данные по температурам, скорости вра- ла создана под конкретный комплекс, но заложенные в
щения вентиляторов, загрузке процессоров, объёмам пе- неё принципы построения дают ей очень широкие (как я
редаваемых данных. А к тому же неплохо бы смотреть ак- полагаю) возможности применения. Пока и головные сер-
тивность сервисов (кто «съел» всю память – почтовик, ба- веры, и агенты системы работают только под UNIX-совме-
за данных или самописный сервер приложений?). А если стимыми операционными системами, под Windows они не
надо собирать статистику не только по доступности како- тестировались, но порт агента и головного сервера под эту
го-либо сервиса, но и локальные данные на удалённых сер- платформу планируется в самое ближайшее время. Кро-
верах? К примеру, свободный объём на диске или темпе- ме того, система продолжает развиваться, и я всегда от-
ратуру процессора? крыт пожеланиям.
Накладных расходов набегает немало, и каждый раз Кратко сформулирую требования, которые легли в осно-
запускать десяток программ становится накладно. Да и ву Antmon:
запускаются все они на головной машине, проверяя пара- ! лёгкая расширяемость (написать модуль расширения
метр удалённо. для снятия нестандартных параметров или реакции на
Есть способы решения этих проблем. Например, на- нештатную ситуацию должно быть по силам среднему
писать свой сервис, который будет снимать нужные дан- программисту);
ные и отдавать их по SNMP. Решение хорошее, но что ес- ! нетребовательность к ресурсам (затраты на работу мо-
ли на сервере уже есть сервис для SNMP? Весьма веро- ниторов должны быть минимальны);

№6, июнь 2005 21


администрирование
! высокая стабильность (отказ головного сервера не дол- Все требования к модулю сводятся к использованию
жен приводить к полному отказу системы, по крайней крайне простого протокола (выдать в начале работы спи-
мере администратор должен узнать об этом первым). сок контролируемых параметров и на запрос параметров
по имени выдать их значения), и к асинхронности всех опе-
Рассмотрим общую архитектуру системы Antmon и за- раций ввода-вывода через стандартные потоки. Последнее
одно увидим, как в ней удовлетворяются сформулирован- необходимо для того, чтобы зависший или долго работаю-
ные требования. щий модуль не мог блокировать работу остальных.
Благодаря таким простым требованиям модуль для An-
Структура комплекса Antmon tmon может быть написан практически на любом языке, и
С отдельных серверов данные собираются при помощи навыки программиста для его написания должны быть ми-
агентов, которые не выполняют анализа данных, а лишь нимальны (главное – запрограммировать съём значений
собирают их и отправляют на головной сервер. Именно параметров). В поставку входит набор готовых модулей,
головной сервер даёт запросы на сбор значений параме- которые могут быть легко модифицированы и использо-
тров и производит их анализ. В планах развития системы ваны для написания собственных.
значится и пассивная схема работы, когда параметры со- За счёт того, что модули запускаются единожды и акти-
бираются агентами самостоятельно и передаются на сер- визируются только по запросу агента, накладные расходы
вер только по условию, например, при превышении допу- на мониторинг на сервере сводятся к минимуму.
стимого значения.
Если значение какого-либо параметра выходит за до- Обработка событий
пустимые пределы, он помечается как ошибочный, а ес- К любому событию в системе можно привязать обработчик,
ли оно не возвращается в необходимый диапазон в тече- работающий аналогично модулям агентов – на его стандарт-
ние заданного числа опросов, то параметр помечается как ный вход подаются строки, соответствующие событиям, а
сбойный. После этого для «реабилитации» ему потребуется обработчик в цикле их обрабатывает. Формат строк зада-
не только вернуться в необходимый диапазон «хороших» ётся в конфигурационном файле и может быть настроен
значений, но и продержаться там в течение определённо- индивидуально для различных обработчиков и событий. К
го числа опросов. Например, температура процессора мо- примеру, все значения температуры процессора можно за-
жет «плавать», и сбойной её стоит пометить, только если писывать в лог – достаточно привязать ко всем событиям,
она остаётся вне безопасного диапазона некоторое время. связанным с ней, соответствующий обработчик. А к факту
А, к примеру, наличие битых пакетов в канале сигнал тре- превышения критической температуры можно привязать от-
вожный, и чтобы не пропустить его, стоит пометить пара- правку почты администратору или другое действие. К лю-
метр как сбойный сразу же. Число опросов для перехода в бому событию может быть привязано несколько обработ-
«сбойное» и в «хорошее» состояние задаётся в файле кон- чиков, которые будут работать параллельно.
фигурации и может быть настроено для каждого сервера
и параметра отдельно. Обеспечение надёжности
Для повышения надёжности в Antmon было решено отка-
Возможности расширения Antmon заться от единого головного сервера. Система может быть
Система Antmon не имеет жёстко «вшитых» средств мо- настроена на одновременную работу нескольких головных
ниторинга, кроме проверки доступности удалённого аген- серверов. При этом за каждый параметр мониторинга от-
та. Поэтому всегда можно настроить систему под конкрет- вечает только один сервер, но если он выходит из строя,
ные требования и не иметь дела с избыточными для вас то остальные сигнализируют о сбое и пытаются взять его
данными. работу на себя.
Все параметры мониторятся агентами с помощью под- В конфигурации головных серверов указывается, какие
ключаемых модулей. Каждый модуль – программа, запу- параметры могут быть переданы дублирующим серверам
скаемая один раз при первом запросе параметра. После за- (ведь дублирование не всегда возможно, например, из-за
пуска программа сообщает агенту Antmon, какие параме- firewall). В любом случае дублирующие серверы отреагиру-
тры она способна мониторить. После этого агент по мере ют на сбой одного из своих «собратьев».
необходимости в цикле даёт модулю на стандартный ввод За счёт использования нескольких головных серверов
запрос в виде списка имён параметров и ждёт от модуля можно, к примеру, проводить мониторинг в нескольких вир-
на стандартном выводе список результатов. туальных сетях, попутно контролируя их доступность через
Если модуль возвращает некорректные результаты, за- NAT и заодно работоспособность веб-сайта компании.
висает или просто падает, то агент пытается перезапустить Система Antmon опробована на небольших сетях и на
его. Если же ответ от модуля не будет получен и после этого конфигурации из более чем ста компьютеров, на каждом
агент вернёт серверу ответ «сенсор недоступен». из которых отслеживалось около десятка параметров. Во
Таким образом, один модуль способен обслуживать всех случаях она зарекомендовала себя с положительной
сразу несколько параметров (например, число передан- стороны.
ных, полученных и ошибочных пакетов через каждый из
доступных сетевых интерфейсов или скорости вращения Примеры
всех вентиляторов и температуры процессоров и материн- Вот пример конкретного конфигурационного файла с ком-
ской платы). ментариями.

22
администрирование
Листинг 1. Кольцевая конфигурация mons 1 2
# Проверять могут мониторы head1 и head2.
heads head1 head2 serv # head1 имеет приоритет
# Используем 3 головных сервера с именами
# head1, head2 и serv names http.antmod test _ url
# Формат: имя модуля [аргументы] название
topo 1 2 3 2 # В этот момент происходит объявление сенсора
# Описываем топологию. # с указанным именем на агенте по адресам,
# Кратко – 1–й сервер будет посылать пакеты 2–му # указанным в последней инструкции addr либо addresses
# для подтверждения того, что он «жив», # (тогда объявляются сенсоры на всех перечисленных хостах)
# 2–й – 3–му, а 3–й – 2–му.
# addresses host1 host2 host3
# Если 1–й сервер откажет, об этом узнает только 2–й min 5000
# (но он «расскажет» 3–му) max 100000
min _ ret 5500
head _ ping 120 max _ ret 100000
# Посылаем ping (точнее keep _ alive) остальным серверам ret _ count 2
# каждые 2 минуты # Меняем параметры сенсоров.
# Описанные ранее параметры, которые не изменены,
head _ tmout 300 # не сбрасываются!
# Если в течение 5 минут нет сигнала от другого сервера, # Проверяем на 3-х хостах
# он считается сбойным
on _ fail down
action mail _ servfail action _ mail root@superserver.ru
action _ line Server $addr fails. mons 2 3
# Описываем действие – передать на вход модулю # Ответственные мониторы – head2 и serv.
# action _ mail указанную строку, сам модуль # head2 имеет приоритет
# action _ mail запускается с параметром – адресом
# администратора names fans.antmod w83781-isa-0290 w83781-isa-0290 fan1
# Объявляем сенсор
action mail _ status action _ mail root@superserver.ru
action _ line $name on server $addr is $state adsdresses node1 node2 node3 node4
# Ещё одно действие – тоже отсылка письма # Объявляем сенсоры с указанным ранее
# в инструкции names именем на узлах node1–node4
action down action _ shutdown #
action _ line $addr # Проверяем вентилятор процессора на узлах node1–node4,
# Другой вариант реагирования – зайти на указанный сервер # используя их локальные агенты
# по ssh и выполнить shutdown

action log action _ log /var/log/Antmon _ log В этом примере всего два сенсора. Один из них (до-
action _ line $addr $name $val $state
# Реагирование в виде записи в файл журнала ступность веб-страницы) контролируется сервером head1
и страхуется сервером head2, а второй – сервером head2
on _ head _ death mail _ servfail
# В случае сбоя головного сервера оповестить и страхуется сервером serv.
# администратора с помощью описанного выше действия Как видим, настройка головных мониторов – дело не-
# mail _ servfail
сложное. Агенты в конфигурации не нуждаются, достаточ-
##################################################### но их установить, запустить и скопировать в рабочий ката-
# Описание параметров мониторинга.
# Все инструкции описывают шаблон для параметра – лог необходимые модули.
# диапазон значений, реакции на события и т. п. Ещё один пример, чуть сокращённый – конфигурация
#
# Инструкции names или addr _ set «актуализируют» шаблон, мониторинга трёх площадок с контролем доступности друг
# реализуя описанные параметры на сервере из инструкции друга (предполагается, что VPN они не соединены).
# addresses или на указанных серверах с именем
# из инструкции name соответственно.
# Листинг 2. Три площадки
# Шаблон не обнуляется после «актуализации»,
# так что нет необходимости описывать каждый параметр heads site1 site2 site3
# заново – достаточно модифицировать предыдущий # Головные сервера площадок – site1, site2 и site3

addressess host1 topo 1 2 3 1


# Имя хоста, на котором работает агент # Все контролируют друг друга

min 200 action mail _ fail action _ mail root@superserver.ru


max 200 action _ line $name fails.
# Диапазон допустимых значений кода веб–страницы action sms _ servfail action _ sms 1234567
action _ line Server $addr fails.
min _ ret 200
max _ ret 200 action log action _ log /var/log/Antmon _ log
# Диапазон значений для возврата в состояние «ОК» action _ line $addr $name $val $state
action restart _ base action _ baserst
bad _ count 2 action _ line restart
# Один сбой странички допускаем, 2 – уже нет
on _ head _ death sms _ servfail
ret _ cout 1 # Шлём sms, если один из серверов помер
# Для возврата в состояние «ОК» достаточно одного
# «хорошего» результата её опроса addr 192.168.10.10
# Сервер баз данных
on _ fail mail _ state log min 0
# При сбое – информировать администратора и сделать max 0
# запись в журнале # Код успешного статуса базы данных

on _ ret mail _ state log min _ ret 0


# При возврате в состояние «ОК» – тоже address serv1 max _ ret 0
# проверять будем на агенте на head1 # Диапазон значений для возврата в состояние «ОК»

№6, июнь 2005 23


администрирование
bad _ count 1 max _ ret 1.9
# Первый же сбой фатален # Максимально допустимая нагрузка на 2-процессорный узел
bad _ count 3
ret _ cout 1 ret _ cout 2
names sysstat.antmod loadavg
on _ fail mail _ fail restart _ base log
# При сбое базы – перестартовать её. max 70
# Информировать администратора и сделать запись # Максимальная температура
# в журнале names fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1

on _ ret log max 2


bad _ count 1
mons 1 ret _ cout 1
# Проверять будет только site1 names sysstat.antmod eth0 _ rcv _ errs
names sysstat.antmod eth0 _ sent _ errs
names dbcheck.antmod database names sysstat.antmod eth0 _ sent _ colls
names sysstat.antmod nfs _ retrans
addr 1.2.3.4
# Вторая площадка с реальными адресами on _ fail mail _ fail log
on _ fail mail _ fail log on _ ret log
mons 2 1 3
# Первая и третья площадки могут быть «на подхвате» mons 1 2
min 200
names smtp.antmod mail.myserv.ru; http.antmod www.myserv.ru min _ ret 200
# В инструкции names можно определить и несколько max 201
# сенсоров max _ ret 201
addresses localhost
addr 5.6.7.8 # Небольшое жульничество, каждый головной сервер будет
# Третья площадка с реальными адресами # опрашивать локального агента, но сначала это будет
mons 3 2 1 # делать только первый

names smtp.antmod mail.serv2.ru; http.antmod www.serv2.ru names http.antmod www.server.com


# За этот сенсор ответственны все
Можно отметить, что на второй площадке ничего не
mons 3 описано. Она существует для контроля доступности пер-
min 0
max 70 вой, и своих сенсоров не опрашивает. Если первая рабо-
min _ ret 0 тает – всё ОК, если нет – вторая берёт на себя контроль
max _ ret 60
за работоспособностью сайта и сообщает админу о слу-
names fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1 чившемся.
# Вентилятор на 5.6.7.8 контролирует только site3
Важно, чтобы на всех головных серверах файлы кон-
Заметим, что все сенсоры, кроме вентилятора на тре- фигурации были одинаковыми. По крайней мере, инструк-
тьей площадке, имеют два состояния – 0 и 1. 0 означает ции mons должны быть одинаковы, иначе возможна рас-
нормальную работу. Поэтому диапазон «хороших» значе- синхронизация работы. Реакция на события или интер-
ний (0-0) прописывается один раз и потом просто наследу- валы опроса сенсоров могут и отличаться, если это не-
ется сенсорами, объявляемыми позднее до тех пор, пока обходимо.
этот диапазон не переопределяется.
Другой пример – мониторинг состояния вычислитель- Недостатки Antmon
ного кластера из 8 узлов, его доступности извне (с внеш- Отмечу и недостатки. Система Antmon пока не работает
него сервера в другой сети) и проверка работоспособно- на платформе Windows (хотя я не проверял вариант ком-
сти сайта кластера. Сейчас вычислительные кластеры от- пиляции под cygwin). Кроме того, полный перенос логи-
нюдь не редкость, так что пример может быть весьма по- ки на головные сервера имеет свою отрицательную сто-
казателен. рону – излишнюю передачу данных для некоторых ви-
дов параметров мониторинга. Иногда удобнее, чтобы
Листинг 3. Кластер и внешняя площадка. агент сам определял валидность параметра и только в
heads clusterhead friend.ru случае смены его статуса (OK → FAIL, например) инфор-
мировал об этом головной сервер, аналогично механиз-
topo 1 2 1
# Оба контролируют друг друга му Trap в SNMP. В систему Antmon уже заложена основа
для реализации такой схемы работы (параллельно с вы-
action mail _ fail action _ mail root@superserver.ru
action _ line $name fails. шеописанной).
action sms _ servfail action _ sms 1234567
action _ line Server $addr fails.
action log action _ log /var/log/Antmon _ log Заключение
action _ line $addr $name $val $state Несмотря на то что Antmon имеет некоторые минусы (а у
on _ head _ death sms _ servfail кого их нет?) и не так хорошо обкатана, как многие дру-
# Шлём sms, если один из серверов помер гие системы мониторинга, она может стать хорошим под-
on _ fail action _ log mail _ fail спорьем в работе администратора. К тому же система бу-
on _ ret action _ log дет развиваться, а значит становиться ещё удобнее. На её
addresses node1 node2 node3 node4 node5 node6 node7 node8 освоение не требуется много времени, как и на доводку под
mons 1 свои специфичные нужды.
min 0
min _ ret 0 Надеюсь, для многих администраторов Antmon сможет
max 2.3 сослужить добрую службу.

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

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

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


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

АЛЕКСЕЙ БАРАБАНОВ
Создаем диск автоматической диска, скорее всего, никогда не понадобится далее, зна-
установки чит за их счет можно выделить больше места для разме-
щения приложений.
Если мы собираемся вас инструктировать перед обновлением
программного обеспечения системы, не беспокойтесь.
Мы ведь никуда не денемся, когда это закончится!
Подготовим дистрибутивные файлы
Итак, приступим. Все пути в Linux будут приводиться с ис-
За основу возьмем диск Windows XP Professional с интегри- пользованием «/» и задавая их положение в Linux-нотации,
рованным 2-м сервиспаком, что на сегодня является наи- а пути в Windows – с «\» и с указанием буквы, использован-
более свежей версией. Это будет единственное соприкос- ного устройства или подразумевая положение от рассма-
новение с Windows в процессе производства. Все осталь- триваемого корня, например от I386 (см. листинг 1).
ные действия будем совершать в среде Linux. Базовые све-
дения по процессу автоматической установки Windows, вы Листинг 1. Содержимое исходного диска, примонтированного
в точке /cdrom
можете получить, воспользовавшись ссылками [1, 2]. Те-
перь перейдем от теории к практике. /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
установщиком на CD-диск. Совершенно не важно, какое 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
ти загрузчик диска в 20 секторе. Главное, чтобы установ- 1 -r--r--r-- 1 root root
2 dr-xr-xr-x 1 root root
56 May 19 2003 autorun.inf
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.txt
встроенных возможностей. Но так как нас интересует лишь 2524 -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

№6, июнь 2005 25


администрирование
Выберем местом создания нового дистрибутива /heap/ 312 dr-xr-xr-x 1 root root 319488 Sep 7 2004 .
Windows/uawsp2. Скопируем туда часть исходного диска, 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. 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. Рабочая директория после копирования исходного 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
/heap/Windows/uawsp2 # ls -als 4 dr-xr-xr-x 1 root root 4096 Sep 7 2004 lang

total 168 При копировании исключим те поддиректории, что от-


4 drwxr-xr-x 3 root root 4096 Feb 6 00:12 $OEM$ носятся к вариантам установки Windows XP в режиме ми-
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.bin следующее:
116 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 Листинг 5. Дистрибутивные поддиректории, которые надо
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 /heap/Windows/uawsp2 # ls -als I386 | grep dr-x
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 116 dr-xr-xr-x 7 root root 114688 Feb 2 21:45 .
4 -r--r--r-- 1 root root 2 Aug 17 2004 win51ip.SP2 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
$OEM$ – директория с дополнительным ПО, о ее содер-
жимом мы поговорим позже; Это позволит сильно сократить размеры создаваемого
Bootfont.bin – шрифт текстового режима установки; дистрибутива и освободит место для размещения дополни-
I386 – директория с дистрибутивными файлами; тельных программ. Директории $OEM$ и boot будут созда-
WIN51 – маркерный файл, соответствующий Windows ны и наполнены содержимым в процессе дальнейшей ра-
v5.1; боты. В сумме получилось весьма немного:
WIN51IP – маркерный файл, соответствующий Windows
Листинг 6. Объем оставшегося дистрибутива
XP Professional;
WIN51IP.SP1 – маркерный файл, соответствующий пер- /heap/Windows/uawsp2 # du -sh
вому сервиспаку; 437M .
autorun.inf – блокировка автозапуска;
boot – директория загрузчика; Для дополнительных программ остается еще почти
icon.ico – иконка диска; 300 Мб, а с учетом overburn еще больше. Теперь заполним
win51ip.SP2 – маркерный файл, соответствующий вто- директорию boot. Это техническая директория, использу-
рому сервиспаку. емая в процессе построения имиджа загружаемого диска.
В нее надо будет поместить загрузчик для ISO9660 и да-
Обратите внимание, регистр символов для наименова- лее указать ее же как целевую для размещения каталога
ний служебных меток не имеет значения и все имена соот- диска. В собранном диске эта директория вместе с содер-
ветствуют правилу 8.3. Это верно только в отношении ука- жимым будет скрыта от просмотра. Так, в нее надо поло-
занных файлов. Все остальные названия файлов уже не жить загрузочный сектор для Windows. Как уже было ска-
ограничиваются спецификацией имен древнего FAT и орто- зано, нет простого способа экстрагировать этот сектор из
доксальной версии ISO9660. рабочего имиджа.
Маркерные файлы, содержимое которых далее никак не Дело в том, что ISO9660 имеет структуру подобную ар-
обрабатывается, то есть может быть любым, и Bootfont.bin хивному файлу, и положение загрузочного сектора опре-
берем с исходного диска. Иконка имеет чисто косметиче- деляется порядком его обхода при построении имиджа. По-
ское значение (см. листинг 3). этому рекомендуется или найти этот сектор в Интернете,
или загрузить прилагаемый к этой статье [3]. Загрузочный
Листинг 3. Файл автозапуска сектор в ходе своего выполнения обращается к двум дру-
/heap/Windows/uawsp2 # cat autorun.inf гим фазам загрузки (см. листинг 7).
[autorun]
Листинг 7. Подстроки, выделенные из загрузчика
ICON=Icon.ico
/heap/Windows/uawsp2 # strings boot/ntboot.bin
Самым важным преобразованиям подвергнем дирек- CDBOOT: Cannot boot from CD - Code: 0
торию с дистрибутивными файлами I386. В исходном дис- CDBOOT: Couldn't find NTLDR
ке она содержит следующие поддиректории: CDBOOT: Memory overflow error
&8G
SVRP
Листинг 4. Поддиректории с дистрибутивными файлами XZ^[
/cdrom # ls -als I386 | grep dr-x SETUPLDR.BINBOOTFIX.BINI386

26
администрирование
Можно понять по последней строке, что они размещены в изводится в локали среды разработки, в данном случае
директории I386 под именами SETUPLDR.BIN и BOOTFIX.BIN. в koi8-r, а затем полученный файл конвертируется в нуж-
Последний из них является тем самым программным кодом, ную кодировку и размещается в директории I386 (см. ли-
который запрашивает разрешения загрузки с CD: стинг 10). Подготовленную версию файла вы можете по-
смотреть по ссылке [4].
Листинг 8. Подстрока сообщения, сопровождающего загрузку
Листинг 10. Конвертация в cp866
/heap/Windows/uawsp2 # strings I386/BOOTFIX.BIN
# iconv -f koi8-r -t cp866 WINNT.SIF.koi8r | ↵
Press any key to boot from CD. awk '{print $0 "\015"}' > ↵
/heap/Windows/uawsp2/I386/WINNT.SIF
И в случае нажатия любой клавиши на локальной кла-
виатуре управление передается на SETUPLDR.BIN, который Текст обильно снабжен комментариями. Поэтому не бу-
в свою очередь и производит запуск процедуры установки. ду приводить его полностью. Лишь отмечу то, что имеет ва-
Вот окончательное содержимое директории boot: риантную настройку, важную для нас.
На первом этапе у нас есть выбор, сделать ли установ-
Листинг 9. Содержимое директории boot ку полностью автоматической или оставить ручной выбор
/heap/Windows/uawsp2 # ls -als boot раздела. Выберем последнее в секции, определяющей раз-
мещение данных:
total 12
4 drwxr-xr-x 2 root root 4096 Mar 17 01:05 .
4 drwxr-xr-x 5 root root 4096 Mar 17 17:17 .. [Data]
4 -rw-r--r-- 1 alekseybb users 2048 Dec 5 14:25 ntboot.bin ; Включим режим ручного выбора раздела установки.
AutoPartition=0

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


Установка Windows XP производится в три этапа. Каж- дет ничего плохого, если все работы производятся только
дый из которых начинается с загрузки, и все, кроме по- в рамках предприятия. Но ручной вариант позволяет при-
следнего, завершаются перезагрузкой. Перечислю все менять полученный диск еще и в приватной практике, ког-
происходящие внутри этапов технологические действия да жесткие диски разбиваются не столь единообразно.
в порядке их наступления и попутно прокомментирую са- Для этого в секции, отвечающей за режимы автоматиче-
мое важное. ской установки, укажем запрет автоматического перераз-
биения диска и автоматического преобразования файло-
Первый этап вой системы:
Происходит в текстовом режиме:
1. Запуск загрузчика установочного диска boot/ntboot.bin. [Unattended]
; Запрещаем автоматическое переразбиение диска.
2. Запуск i386/bootfix.bin. Repartition=No
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 со- торию $OEM$. Например, как показано в листинге 11.
держит подробное описание всех дистрибутивных файлов
и дисковых меток win51ip.sp*, задает режимы запуска пер- Листинг 11. Размещение дополнительных обоев
вой фазы «/fastdetect /noguiboot /nodebug» и многое другое. /heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/Web/Wallpaper
Читать это «чудище» размером в 468 Кб одно удовольствие.
total 484
Модифицируя указанный текстовый файл, можно с Windows 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--
156 -rw-r--r--
1
1
alekseybb
alekseybb
users 320111 Oct
users 154966 Oct
26
26
2003
2003
oaks.jpg
winter.jpg
самый важный в контексте рассматриваемой темы – файл
winnt.sif. Это тот самый файл ответов, который позволяет А если нужно добавить некоторые программные файлы
выполнять автоматическую установку и настройку Windows. так, чтобы они далее могли находиться автоматически, то
Этот файл надо будет создать. Его кодировка, как и всех следует их разместить так, как показано в листинге 12.
текстовых управляющих файлов, должна соответствовать
кодовой странице cp866. Но так как вся разработка ведет- Листинг 12.Размещение дополнительных программ
ся под Linux, то первоначальный набор этого файла про- /heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/System32

№6, июнь 2005 27


администрирование
total 280 17. 8 минут – сохранение настроек (sfc.dll сканирует все си-
4 drwxr-xr-x 2 root root 4096 Mar 19 01:48 . стемные файлы для создания базы WFP).
4 drwxr-xr-x 4 root root 4096 Mar 22 23:08 .. 18. Создание signhash Hardware ID.
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 19. Удаление временных файлов.
20. Перезагрузка.
Другими словами, директория $OEM$/$$ соответству-
ет директории установки ОС на целевом диске. Если сле- Это самый длительный этап установки. Он, как и сле-
довать установкам по умолчанию, то для Windows XP это дующий, будет автоматизирован полностью. Фактически,
C:\WINDOWS. во время 2-го этапа ставится ядро операционной системы.
Чтобы в директории C:\Documents and Settings разме- Рассмотрим некоторые важные действия и настройки:
стить специальную команду, которая будет далее исполь- На этом этапе задается пароль встроенного бюджета
зоваться для настройки профиля вновь создаваемых ло- Администратор. Его можно указать в зашифрованном ви-
кальных пользователей, то следует сделать так: де, но тогда полученный диск лишится своей универсаль-
ности, т. к. пароль, назначенный в процессе установки, но-
Листинг 13. Размещение дополнительных команд сит явно временный характер, то выберем самую простую
/heap/Windows/uawsp2 # ls -als ↵ его форму.
\$OEM\$/\$1/Documents\ and\ Settings
[GuiUnattended]
total 12 ; Задаем пароль Администратора.
4 drwxr-xr-x 2 root root 4096 Mar 18 18:25 . AdminPassword="admin»
4 drwxr-xr-x 6 root root 4096 Feb 7 23:00 .. EncryptedAdminPassword=No
4 -rw-rw-r-- 1 root users 740 Feb 6 12:45 usersetup.cmd

Все эти файлы будут на первом этапе скопированы в Второй параметр из секции, отвечающей за автомати-
одноименные директории на локальном диске так, что его ческую установку в графическом режиме, задает число ав-
корень будет соответствовать директории $OEM$/$1 на томатических перезагрузок. Обратите внимание, на тре-
дистрибутивном диске. Придерживаться правила 8.3, как тьем этапе штатной установки будут запущены инсталля-
и было ранее заявлено, здесь не следует. торы прикладного программного обеспечения, после че-
Таким же образом с создаваемого установочного диска го перезагрузка будет произведена еще раз. То есть нуж-
будут переноситься дистрибутивные файлы прикладного но установить счетчик автоматических авторизаций на 2.
программного обеспечения. Достаточно все нужные фай- А если для выполнения каких-то действий, например, пе-
лы поместить в директорию $OEM$/$1/InstData, и в про- резагрузки в режиме сохранения для выполнения некото-
цессе выполнения первого этапа установки все они будут рых модификаций, потребуется еще одна перезагрузка, то
скопированы в C:\InstaData. После установки эту директо- счетчик надо будет увеличить дополнительно.
рию надо будет не забыть удалить, и лучше сделать это ав-
томатически. [GuiUnattended]
; Установим режим автоматического входа в систему
; от имени Администратора
Второй этап AutoLogon=Yes
; Число автоматических входов.
Следующий этап продолжается в графическом режиме. AutoLogonCount=2
Его основные шаги перечислены ниже. В некоторых стро-
ках записаны временные метки, соответствующие этому Следующий раздел отвечает за пользовательские дан-
этапу, так называемые T-*. Кстати сказать, временная мет- ные. Применительно к Windows, это практически данные по-
ка не имеет точного соответствия с затратами времени на купателя. Итак, мы снова вернулись к вопросу лицензиро-
процесс установки, который всецело зависит от мощно- вания. Рассмотрим его подробнее.
сти компьютера. В процедуре обычной установки пользователю предла-
1. 39 минут – запуск setup.exe/syssetup.dll (syssetup.inf). гается ввести код с установочного диска. Теоретически эта
2. Загрузка nt5.cat и *.cat. проблема решается следующими строками из winnt.sif:
3. Выполнение *.inf.
4. Запуск ocmanage.dll. [UserData]
; Подставляем установочный ключ для Windows XP
5. Определение оборудования (machine.inf). ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
6. 37 минут – установка драйверов устройств.
7. Запуск intl.cpl (intl.inf). Где вместо ХХХХ подставляется код лицензии. Но дело
8. Запрос CD-KEY. в том, что если бы защита от копирования Windows ограни-
9. Установка компонентов ОС (sysoc.inf). чивалась только эти кодом, то всякая автоматическая уста-
10. 32 минуты – установка поддержки сети. новка означала бы нарушение лицензии, так как приводи-
11. 29 минут – копирование всех необходимых файлов ОС. ла бы к установке одной лицензионной копии продукта на
12. 25 минут – завершение установки. множество компьютеров. Хитроумные обитатели предмес-
13. 22 минуты – установка меню «Пуск» (shell.inf). тья Сиэтла отлично понимали, что загнали себя в тупик. И
14. 18 минут – регистрация компонентов (OLE regsrv). тогда появились специальные механизмы активации Win-
15. 13 минут – запуск $OEM$/Cmdlines.txt. dows или WPA (Windows Product Activation) вместе со счет-
16. 9 минут – сохранение параметров. чиком наработки или OOBE (Out Of Box Experience). Теперь

28
администрирование
автоматическая установка копий ОС под идентичными ли- [TerminalServices]
; разрешить RDP
цензионными ключами не снимала необходимость актива- AllowConnections=1
ции копии в течение 30 дней. Для ряда потребителей это уже
достаточный уровень решения проблемы автоматической Вернемся к вопросу установки дополнительного про-
установки. Те же, кто требует большего, должны выбрать граммного обеспечения. За 13 минут до завершения 2-го
или легальный путь преодоления этой проблемы, или об- этапа установки запускается интерпретация команд из фай-
ходной. Как уже было сказано выше, легальным является ла $OEM$/Cmdlines.txt. Этот файл предоставляет возмож-
способ использования такой лицензии, которая предусма- ность добавления дополнительных действий по настрой-
тривает серийную установку. Для MS Windows это так на- ке, по установке обновлений MS Windows или приложений
зываемая корпоративная лицензия или VL (Volume License). третьих производителей. Но поскольку в точке Т-13 опера-
Здесь надо очень тщательно следить за тем, чтобы число ционная система настроена еще не в полной мере, то не
установок не превысило числа оплаченных копий. Обход- все полноформатные GUI-приложения можно запускать из
ной путь заключается в создании такого дистрибутива, что- Cmdlines.txt. В таком режиме многие установочные процеду-
бы механизмы защиты от несанкционированного копиро- ры не работают. Поэтому опустим описанную возможность
вания и активации копий не мешали выполнению техноло- установки, тем более, что есть способ со всех точек зрения
гических функций. При этом не исключается номинальная максимально привлекательный для этого – запуск при пер-
оплата нужного числа копий. То есть вне зависимости от вом логоне в систему, так называемый GuiRunOnce. Стро-
выбранного технологического пути создания диска с авто- го говоря, есть еще и третий способ, но об этом позднее.
матической процедурой установки и, значит, активации ко- Принято считать, что этим путем удобно вносить измене-
пии, вопросы выполнения требований законодательства по ния в реестр, так как ветка HCU здесь относится к пользо-
защите прав интеллектуальных собственников могут ре- вательскому профилю по умолчанию.
шаться совершенно бесконфликтным путем и в согласии Из методологических целей воспользуемся именно та-
с совестью системного администратора. ким путем для добавления пользователей в систему. Очень
Далее производится настройка сети. Предполагаем, удобно для управления компьютерами в сети использовать
что выбираются стандартные сетевые настройки, ориен- единого административного пользователя. Пользователи
тированные на раздачу динамических адресов провай- временами меняют пароли и забывают их, а так всегда есть
дером DHCP и соответственно случайное имя компьюте- способ даже удаленно поправить подобную проблему. Ес-
ра. Любой другой способ не позволит выполнить установ- тественно, этот бюджет не должен совпадать с бюджетом
ку нескольких компьютеров одновременно. То есть при на- администратора на серверах сети. Необходимые команды
значении или фиксированного адреса, или фиксированно- можно вписать непосредственно в Cmdlines.txt, но если туда
го имени обязательно необходимо вмешательство сисад- записать обращение к внешнему командному файлу, тогда
мина для смены их на постоянные значения. Причем если можно быть уверенным, что выполнение команд будет про-
со сменой имени рабочей станции нет проблем, то смена исходить в стандартной среде. Поэтому создадим $OEM$/
сетевого адреса из сеанса удаленного подключения к ра- Cmdlines.txt и наполним его следующим содержимым:
бочему столу неминуемо приведет к разрыву соединения,
что, впрочем, не фатально. Листинг 14. Содержимое Cmdlines.txt

[Commands]
[UserData] "mkusers.cmd"
; Задаем случайное имя.
ComputerName=*
А в файл $OEM$/mkusers.cmd запишем команды соз-
[Networking]
; Зададим сетевые настройки по умолчанию дания пользователя localadmin с неустаревающим паро-
InstallDefaultComponents=Yes лем admin и присвоим этому пользователю статус локаль-
ного администратора:
Далее обращаю ваше внимание на раздел [Components],
который управляет установкой программ, входящих в дис- Листинг 15. Содержимое mkusers.cmd
трибутив ОС. Обычно в этом разделе запрещают установку net user localadmin admin /add
игрушек и прочих утилит, которые далее не предполагается net localgroup Администраторы localadmin /add
net accounts /maxpwage:unlimited
использовать. В нем самое большое число строк. Настрой-
ка этого раздела всецело зависит от политики системно- Теперь за 13 минут до завершения второго этапа уста-
го администрирования. Например, в отношении игрушек: новки будет создан служебный административный бюджет
разрешение установки встроенных игр, на взгляд автора, с тривиальным паролем admin, который надо не забыть сме-
уменьшает стремление пользователей к установке игрушек нить после завершающей настройки станции.
сторонних производителей. Хотя всегда можно проконтро- А ещё через 40 виртуальных минут установочного вре-
лировать состав установленных на рабочей станции про- мени компьютер должен перегрузиться и тогда начинает-
грамм удаленно с помощью snmp. ся 3-й этап установки.
Поскольку в согласии с нашей технологией предпола-
гается управление создаваемой рабочей станцией с уда- Третий этап
ленных терминалов, то следующая настройка просто не- Последний этап установки состоит из следующих дей-
обходима: ствий:

№6, июнь 2005 29


администрирование
1. Включение oobeinfo, активация копии системы. Во-первых, для успешного подключения в домен на Sa-
2. Добавление пользовательских бюджетов. mba внесем правочку SignOrSeal:
3. Применение установок.
4. Настройка пользовательских профилей. Листинг 16. Исправление в реестре для подключения
в домен на Samba
5. Запуск команд из секции GuiRunOnce.
6. Загрузка рабочего десктопа. [HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\
Netlogon\Parameters]
"requiresignorseal"=dword:00000000
В 1-4 пунктах все очевидно. Здесь практически нечего
настраивать или менять в процессе автоматической уста- И, во-вторых, поскольку в SP2 добавлен firewall, то для
новки. Разве что запретить добавление пользовательских того чтобы можно было управлять создаваемой рабочей
бюджетов: станцией через подключение к рабочему столу, разрешим
доступ к порту 3389 из локальной сети и подсетей, исполь-
[GuiUnattended] зуемых как туннельные. И здесь же еще настроим доступ к
; Запретим запрос о создании пользовательских бюджетов
AutoLogonAccountCreation=No snmp для снятия учетных данных.

А вот пятый пункт является ключевым. Как уже было Листинг 17. Исправление в реестре для разрешения работы
нужных сетевых служб
сказано выше, здесь происходит запуск установки при-
кладного программного обеспечения. Все необходимые [HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\
SharedAccess\Parameters\FirewallPolicy\StandardProfile\
для этого команды записываются после маркера секции GloballyOpenPorts\List]
[GuiRunOnce] строка за строкой в обрамлении двойных "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"
ся непосредственно из файла winnt.sif, а предварительно
записываются в соответствующую ветвь реестра HKEY_ Лучше каждую правку определенной ветви реестра со-
CURRENT_USER\Software\Microsoft\Windows\CurrentVer- хранять в отдельном файле, и все их поместить в $OEM$/
sion\Runonce и после выполнения удаляются из нее авто- $1/InstData. И тогда можно будет манипулировать соответ-
матически. И есть даже такие схемы установки, где эти ствующими настройками, просто комментируя команды
данные добавляются в реестр динамически при выпол- изменения реестра. Сами же команды должны выглядеть
нении Cmdlines.txt. Но не будем все так усложнять. Нао- примерно так:
борот, вынесем все команды в отдельный исполняемый
файл GuiRunOnce.cmd, вызов которого запишем в winnt. Листинг 18. Команда обновления реестра
sif в секции GuiRunOnce. Так можно будет уменьшить чис- %systemdrive%\windows\regedit /s %systemdrive%\ ↵
ло модифицируемых компонентов на создаваемом дис- InstData\WinXP _ SignOrSeal.reg
ке и сократить проблемы из-за синтаксических ошибок,
поскольку ошибка во внешнем файле никак не скажет- Для установки прикладного программного обеспече-
ся на остальной процедуре установки и тогда в аварий- ния используются заранее созданные и скомпилирован-
ном случае возможен еще путь ручной установки прило- ные программы на AutoIt.
жений прямо с диска. Полный текст файла GuiRunOnce. Например, установка MS Office XP из размещенного в
cmd, можно получить по ссылке [5], естественно, в коди- директории $OEM$/$1/InstData/OfficeXP дистрибутива про-
ровке koi8-r. Теперь определимся с перечнем дополни- изводится командой:
тельных действий, которые следует выполнить на этой
стадии автоматической установки. Исходя из специфи- Листинг 19. Установка MS Office
ки применения рабочей станции, для которой создается %systemdrive%\InstData\install _ office.exe ↵
диск автоматической установки, пусть набор действий бу- %systemdrive%\InstData\OfficeXP\SETUP.EXE
дет следующим:
1. Модификации реестра HKEY_LOCAL_MACHINE. При этом путь до файла штатного установщика Office XP
2. Установка прикладного программного обеспечения. передается в программу AutoIt как параметр:
3. Копирование данных в «Documents and Settings».
4. Удаление директории InstData. Run ( $CmdLine[1] )
5. Перезапуск компьютера.
Копирование данных в «Documents and Settings» необ-
Первый шаг совершенно очевиден. Надо сделать про- ходимо производить динамически. Если разместить в этой
стые настройки реестра Windows в разделах HKEY_LOCAL_ директории нужные поддиректории и файлы заранее, то
MACHINE в соответствии с предполагаемой средой рабо- при настройке пользовательских профилей они будут ис-
ты. Существует целый пласт литературы, посвященной во- ключены из работы, так же как это происходит при уста-
просам тюнинга реестра этой чудной операционной систе- новке Windows поверх старой версии. Поэтому и исправ-
мы. Нет смысла повторяться, поскольку авторы этого «кар- ление параметров запуска Far, если, конечно, мы его ис-
манного» чтива и так друг у друга все списывают «напере- пользуем, и добавление специальных установочных ко-
гонки». Каждый может выбрать, что понравилось. Отмечу манд в директорию автозагрузки будем производить так,
лишь то, что важно в нашем контексте. как указано далее:

30
администрирование
Листинг 20. Команды дополнительных настроек титься или об удалении командного файла step4.cmd, или
copy %systemdrive%\InstData\farmanag.lnk ↵ о его автоматическом отключении.
"%systemdrive%\Documents and Settings\All Users\ ↵
Главное меню\Программы\FAR manager\ ↵
FAR manager.lnk" /b /y Собираем диск
copy %systemdrive%\InstData\farmanag.lnk ↵ Итак, все работы по подготовке данных завершены и те-
"%systemdrive%\Documents and Settings\All Users\ ↵
Рабочий стол\FAR manager.lnk" /b /y перь можно создать образ загрузочного диска:
copy /Y "%systemdrive%\Documents and Settings\ ↵
usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ Листинг 21. Сборка загрузочного диска
Default User\Главное меню\Программы\Автозагрузка\"
copy /Y "%systemdrive%\Documents and Settings\ ↵ # mkisofs -v -J -N -D -relaxed-filenames -no-iso-translate \
usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ -input-charset koi8-r \
Администратор\Главное меню\Программы\Автозагрузка\" -P «Ivan Ivanovich» \
copy /Y "%systemdrive%\Documents and Settings\ ↵ -p «Handy Man» \
usersetup.cmd" "%systemdrive%\Documents and Settings\ ↵ -V «WXPSP2 _ RU» \
localadmin\Главное меню\Программы\Автозагрузка\" -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
бочей станции. А вот добавление команды в автозагрузку
надо произвести не только для профиля по умолчанию, но Отметим некоторые из использованных параметров. Во-
и для профиля Администратора, который сразу же после первых, включаем расширение Joliet, для того чтобы на по-
завершения стадии GuiRunOnce будет активирован, и для лученном диске читались длинные имена, которые были ис-
профиля пользователя, которого мы ранее создали как пользованы в директории $OEM$ – ключ «-J». Во-вторых,
предполагаемый служебный бюджет. укажем, что исходная локаль имен файлов koi8-r. Если в
Теперь самое время вспомнить, что, кроме запуска ин- применяемой системе не так, то следует поправить – пара-
сталляторов прикладного программного обеспечения, на- метр «-input-charset koi8-r». В-третьих, запишем, что исполь-
до еще не забыть удалить директорию C:\InstData и для зуется только загрузочный сектор, а не имидж флоппи-дис-
верности перезапустить компьютер. Вот это уже надо де- ка, и заодно запретим доступ к загрузочной информации –
лать из секции [GuiRunOnce]. В итоге должно получиться ряд параметров «-b boot/ntboot.bin -no-emul-boot -c boot/boot.
следующее: catalog -hide boot -hide-joliet boot». Остальное все очевидно
и создается в полном согласии с «man mkisofs».
[GuiRunOnce] «Прожигание» самого диска CD-R/RW является триви-
; запусим установку прикладных программ альной задачей, которая не должна вызывать вопросов, по-
"%systemdrive%\InstData\GuiRunOnce.cmd" сему опустим ее описание. Точно так же каждому сисадми-
; удалим дистрибутивы прикладных программ
"%systemdrive%\WINDOWS\system32\cmd.exe /c rmdir ↵ ну должно быть ясно, что и в этой статье, и в тех скриптах и
%systemdrive%\InstData /s /q" действиях, которые будут предприняты по материалам ста-
; запустим перезагрузку компьютера
"%systemdrive%\WINDOWS\system32\shutdown -r -f -t 180" тьи, могут вкрасться ошибки. Поэтому рекомендуется снача-
ла получить устойчивый результат на эмуляторе VMWare.
Длительная задержка перезагрузки нужна для того, что- В заключительной части статьи рассмотрим некоторые
бы успели пройти все остальные работы по настройке и от- аспекты практического использования полученного диска
работал usersetup.cmd, который был скопирован в автоза- и добавим к полученному программу сбора информации о
грузку Администратора. Если возникает необходимость в конфигурации компьютера.
еще одной стадии установки, например, надо перезагру-
зить систему в режим сохранения для выполнения каких- Ссылки:
то действий, тогда следует создать еще один командный 1. Оригинальная информация по созданию дисков авто-
файл для 4-й стадии, назовем его step4.cmd. И в конец сек- матической установки MS Windows: http://www.micro-
ции [GuiRunOnce] перед вызовом команды shutdown запи- soft.com/resources/documentation/WindowsServ/2003/all/
сать следующее: techref/en-us/Default.asp?url=/Resources/Documentation/
windowsserv/2003/all/techref/en-us/W2K3TR_unatt_how.
copy /Y %systemdrive%\InstData\step4.cmd ↵ asp?frame=true&hidetoc=true.
"%USERPROFILE%\Главное меню\Программы\Автозагрузка\"
bootcfg /raw «"/fastdetect /safeboot:minimal ↵ 2. Дополнительная информация по созданию дисков ав-
/sos /bootlog /noguiboot" /id 1 томатической установки MS Windows: http://unattended.
oszone.net.
После этого произойдет перезагрузка в режиме сохра- 3. Загрузчик диска: http://www.barabanov.ru/arts/autoit/
нения, и после автоматической авторизации будет запу- ntboot.bin.
щен командный файл step4.cmd. Стоит учесть, что для вы- 4. Файл управления автоматической установкой: http://
полнения этого действия потребуется еще одна автомати- www.barabanov.ru/arts/autoit/WINNT.SIF.koi8r.
ческая перезагрузка. То есть если предполагается в конце 5. Командный файл, запускаемый в процессе автоматиче-
четвертого этапа снова перезагрузить компьютер, то надо ской установки: http://www.barabanov.ru/arts/autoit/Gui-
будет заранее увеличить счетчик автоматических переза- RunOnce.cmd.koi8-r.
грузок AutoLogonCount. Но поскольку во время этой пере- 6. Архив исходных текстов: http://www.barabanov.ru/arts/
загрузки снова возможен запуск step4.cmd, то надо позабо- autoit/src.tgz.

№6, июнь 2005 31


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

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


СТАНДАРТНОГО WINDOWS SCRIPTING HOST

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


приходится сталкиваться с разовыми
задачами, программные решения
для которых под рукой отсутствуют,
а путешествие по Интернету не приносит
требуемого результата. Для таких
случаев в операционной системе Windows
панацеей практически от всех бед может
стать Windows Scripting Host.
Его возможности позволят вам в короткие
сроки составить нужный алгоритм
и решить возникшую проблему.

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

С
егодня мы рассмотрим возможности Windows Script- зволяющая определить, какие устройства для хранения ин-
ing Host для получения основных характеристик ком- формации (далее – диски) имеются в системе.
пьютерных систем, которые могут быть использова-
ны, например, для решения задач инвентаризации техниче- ' Получение доступа к объектам FileSystem Object
Dim fso : Set fso = ↵
ских средств, учета пользователей, работающих в локаль- WScript.CreateObject("Scripting.FileSystemObject")
ной сети, и даже при проведении криминалистической экс- ' Перебираем все диски (HDD, FDD, CD и др.), имеющиеся
' в системе
пертизы компьютерной техники. Dim i
Примеры скриптов на языке VBScript, приведенные в For Each i In fso.Drives
….
статье, разработаны и протестированы для W2K. В боль- Next
шинстве своем они могут быть использованы и при рабо-
те под управлением 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;

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

Sub WorkSubFolder(sdrivename)
Dim sfolder : set sfolder=fso.getfolder(sdrivename)
' Для работы с подкаталогами источника
Dim ssfolder : set ssfolder=sfolder.SubFolders
' Для работы с файлами каталога источника
Dim ssÞles : set ssÞles=sfolder.Files
Dim fo
' Цикл обработки подкаталогов каталога источника
! общий размер диска – FormatNumber (fso.GetDrive(i.Dr- For Each fo In ssfolder
iveLetter).TotalSize /1048576, 1) & " Мб"); WorkSubFolder SDriveName&"\"&fo.name
Next
! размер незанятого пространства диска – FormatNumber ' Для всех файлов текущего каталога вызывается процедура
(fso.GetDrive(i.DriveLetter).FreeSpace /(1024*1024), 1) & " ' WorkForFile
Dim Þ : For Each Þ In ssÞles : ↵
Мб"). WorkForFile sfolder&"\"&Þ.name : Next
End sub
При разработке кода программы необходимо учитывать
то обстоятельство, что в считывающем устройстве необя- Файлы, имена которых содержат интересующее расши-
зательно присутствие носителя (дискеты в дисководе или рение, могут быть найдены с применением функции fso.Get-
диска CD в приводе), и при обработке функций для получе- ExtensionName(fullnamefile) (см. рис. 2).
ния свойств носителя могут возникнуть ошибки. Для таких
случаев в языке VBScript используются конструкции On Er-
ror Resume Next, Err.Number и Err.Clear, позволяющие поль-
зователю сформировать код для самостоятельной обработ-
ки исключений (см. рис. 1).

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


расширения

Для поиска файлов с определенной сигнатурой в про-


стейшем случае достаточно воспользоваться функциями
открытия файла (fr=fso.OpenTextFile(FullNameFile, 1, false)),
Рисунок 1. Результаты обработки информации об имеющихся чтения данных из файла (s_read=fr.Read(1)) и закрытия фай-
в системе дисках
ла (fr.Close) (см. рис. 3).
Следует также предусматривать ситуации, когда диски
появляются в системе лишь на некоторое время. Это мо-
жет быть связано с подключением сетевых дисков, наличи-
ем сменных USB flash или шифрованных дисков. Некоторые
подходы, позволяющие определить, с какими дисками поль-
зователю приходилось иметь дело, будут изложены далее.

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

№6, июнь 2005 33


администрирование
«System Volume Information», который размещается в корне- ' Открываем файл fullnameÞle с документом Word
' с паролем " "
вом каталоге тома). Необходимо также учитывать то обсто- Dim doc
ятельство, что при значительных размерах дисков и боль- Set doc = wordapp.Documents.Open(fullnameÞle, _
False, _
шом количестве файлов поиск может выполняться доста- blnReadOnly, _
точно продолжительное время. False,
" ")
If Err.Number = 5408 then
Ярлыки ' Обработка файла с документом Word, который имеет пароль
End if
Информацию о пристрастиях пользователя можно почерп- ' Метаданные с пользовательскими свойствами документа
нуть при изучении файлов-ярлыков, которые формируют- Dim propitem
For Each propitem In ↵
ся при различных обстоятельствах (будь то история рабо- wordapp.ActiveDocument.CustomDocumentProperties
ты с файлами Microsoft Office или раздел Recent). Для ана- ' В цикле обрабатываются propitem.Type и propitem.Value
Next
лиза достаточно обработать дату создания файла, являю- ' Метаданные со стандартными свойствами документа
щегося ярлыком, и параметр TargetPath, в котором содер- For Each propitem In ↵
wordapp.ActiveDocument.BuiltInDocumentProperties
жится информация о запускаемом файле. ' В цикле обрабатываются propitem.Type и propitem.Value
Next
Dim wshshell : Set wshshell = ↵ Err.Clear
WScript.CreateObject("WScript.Shell") On Error GoTo 0
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 )

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


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

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


Следует отметить, что документы Microsoft Word мо-
гут содержать и другие метаданные, которые нельзя по-
лучить путем применения стандартных функций работы с
документами Word, для этого требуется визуальный кон-
троль содержимого. В файле могут обнаружиться такие
данные, как:
! имя и полный путь к файлу с документом;
! адреса электронной почты или информация о веб-сер-
Рисунок 4. Результаты поиска файлов-ярлыков в двух вере;
пользовательских каталогах ! имена принтеров;
! текстовые фрагменты, удаленные из документа в неко-
Документы Word торый момент до сохранения;
Возможности использования элементов ActiveX позволяют ! текстовые фрагменты из других документов, не имею-
серьезно расширить область применения пользовательских щих отношения к данному, попавшие в него из-за оши-
программ на VBScript. Примером этому может стать описа- бок в Microsoft Word.
ние подхода получения метаданных документов Microsoft
Word. К слову сказать, за последние три года содержимое Переменные среды и данные реестра
метаданных послужило поводом для ряда неприятных исто- Если подходы, описанные в предыдущих разделах, доста-
рий с крупными компаниями и даже государствами (слу- точно универсальны и позволяют исследовать содержимое
чаи с досье правительства Британии о военном потенциа- отдельных носителей информации, то далее речь пойдет о
ле Ирака и исковым заявлением компании SCO). возможностях VBScript, которые требуют запуска скриптов
Следующий пример демонстрирует возможность полу- на исследуемом компьютере либо выполнения программ
чения метаданных для документа Microsoft Word, а также под управлением изучаемой операционной системы.
позволяет отследить ситуации, когда документ зашифро- Обработка с использованием VBScript переменных сре-
ван с использованием пароля. ды для системы Windows поможет ответить на вопрос, от-
носится ли операционная система к Win9x или W2K, а так-
On Error Resume Next же получить информацию о некоторых особенностях уста-
Dim wordapp : Set wordapp = ↵
WScript.CreateObject("Word.Application") новки и настройки операционной системы.

34
администрирование
Dim wshshell : Set wshshell = ↵ Таблица 3. Ключи, которые могут представлять интерес
WScript.CreateObject("WScript.Shell") при изучении компьютера
Dim wshproenv : Set wshproenv = ↵
wshshell.Environment("PROCESS")
wshproenv (var _ env)

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


var _ env для W2K

Основная информация, особенности настройки опера-


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

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


располагающиеся в других ветвях

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


реестра
Как известно, данные реестра хранятся в нескольких
файлах, которые размещаются в системном и пользова-
тельском каталогах. В случае, если на компьютере уста-
новлено несколько операционных систем, возможности
VBScript позволяют обработать данные реестра лишь для
текущей загруженной системы Windows. Другим ограниче-
нием VBScript при работе с реестром является отсутствие ' Подключение к службе WMI локального компьютера
Dim wbemservices
возможностей для перебора всех ключей, содержащихся Set wbemservices = GetObject("winmgmts://127.0.0.1/Root/Cimv2")
в заданном разделе, что не позволяет программно обрабо-
тать другую полезную информацию, хранимую в реестре. Далее следует использовать информацию с названиями
необходимых классов и их свойств, знание о которых мож-
WMI но почерпнуть в процессе изучения объектной модели WMI
В случаях, если есть возможность запустить скрипт под с помощью утилиты WMI Object Browser. Так, например, по-
управлением изучаемой операционной системы версии лучить данные, о включенных на момент проверки сетевых
W2К, полезную информацию можно получить используя Mi- интерфейсах, можно с помощью следующего кода.
crosoft Windows Management Instrument (WMI). Достаточно
подробно подходы работы с WMI описаны в статьях Ивана Dim objectitems
Set objectitems = wbemservices.ExecQuery("Select * ↵
Коробко, опубликованных в журнале «Системный админи- from Win32 _ NetworkAdapter")
стратор» в 2004 г. В общем случае код инициализации ра- Dim objectitem
For Each objectitem In objectitems
боты с WMI выглядит следующим образом. If objectitem.MacAddress<>"" then

№6, июнь 2005 35


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

Использование возможностей WMI позволяет разработ-


чику сценария на языке VBScript получить:
! информацию об установленном в системе оборудовании
(марка и параметры жесткого диска, тип и частота процес-
сора, размер оперативной памяти, тип BIOS, характери-
стики и названия видео-, звуковой и сетевой карт и пр.);
! данные протокола работы, имеющие отношение к опре- Рисунок 7. Результаты обработки свойств классов Win32 _ Com-
деленным событиям (запуск, остановка операционной puterSystem, Win32 _ OperatingSystem и Win32 _ UserAccount
системы, установка и извлечение USB-устройства, уста- чего пользователя реализация решений с использовани-
новка и удаление программного обеспечения и т. п.); ем скриптовых языков существенно усложняется. А в слу-
! параметры настройки компьютера (название компьюте- чаях, когда на диске имеется раздел операционной си-
ра, рабочая группа, название ОС и дата установки, пе- стемы Linux, VBScript оказывается просто бесполезен.
речень загружаемых ОС, список пользователей ОС, имя ! Запуск программ WSH, вообще говоря, влечет за собой
зарегистрировавшегося пользователя, время последней изменения на носителе изучаемого компьютера, что не
загрузки и пр.). всегда приемлемо, а работа с образами в отдельных
случаях может быть достаточно проблематичной.
Подводя итог изложению возможностей VBScript для ! Для VBScript отсутствуют механизмы восстановления
изучения компьютерной системы, следует остановить- на носителях удаленной информации (глубокий ана-
ся на ограничениях, отдельные из которых уже упомина- лиз подходов для восстановления данных с носителей,
лись в статье. обладающих различной файловой структурой, скрупу-
! Полный набор возможностей VBScript может быть за- лезно был изложен Крисом Касперски в предыдущих
действован только в случае запуска программ для ана- номерах журнала за 2004-2005 гг.).
лиза на изучаемой системе.
! Невозможно достичь высокого быстродействия для про- В качестве бонуса для заинтересованных читателей ав-
грамм на VBScript. тором подготовлен набор скриптов, в которых реализованы
! При наличии на исследуемом компьютере нескольких опе- все возможности VBScript, изложенные в статье (см. http:\\
рационных систем Windows или даже более одного рабо- www.samag.ru раздел «Исходный код»).

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

SOLARIS 10 В КАЧЕСТВЕ ДЕСКТОПА?


ПРОБУЕМ!

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


работать в ее среде. В какой ОС мы больше всего работаем?
Правильно, в той, что стоит на нашем десктопе.
Попробуем погрузиться в одну из самых успешных коммерческих
UNIX-систем, поставив ее на свой рабочий компьютер.
АНДРЕЙ МАРКЕЛОВ

В
ноябре прошлого года компания зорвать эту связь в сознании заказ- них рассказывать и ограничусь лишь
Sun Microsystems анонсировала чиков, сделав ставку на процессоры перечислением.
выход бесплатной операцион- фирмы AMD. ! Solaris Containers (Zones) – появи-
ной системы Solaris 10 для платфор- Все это делает операционную си- лась возможность создавать «вир-
мы x86. Новую ОС может скачать и ис- стему Solaris прямым конкурентом туальные сервера» на одной маши-
пользовать любой, кто зарегистриру- Linux и в частности Red Hat Enterprise не со своими отдельными ресурса-
ется на сайте http:\\www.sun.com и при- Linux. И хотя пока невозможно опреде- ми и своей копией операционной
мет лицензионное соглашение. Компа- ленно сказать, насколько удачно пой- системы.
ния планирует зарабатывать по схеме, дут дела у Sun Microsystems и удаст- ! Dynamic Tracing – полезная функ-
успешно применяемой Red Hat, то есть ся ли Solaris получить приток «свежей ция, позволит вам в реальном вре-
брать деньги за платную техническую крови» благодаря открытию исходных мени практически без потери в
поддержку. кодов, но посмотреть, что же представ- производительности отслеживать
Кроме того, 14 июня этого года Sun ляет из себя эта операционная систе- огромное число внутренних функ-
Microsystems открыла исходные коды ма, без сомнения, стоит. ций и процессов операционной
своей операционной системы. Они до- системы на глубоком уровне. Про
ступны всем желающим на специаль- Что нового в системе? DTrace и Zones на русском языке
но созданном сайте http://www.open- Итак, что же появилось революционно- можно почитать на сайте http://sola-
solaris.org по лицензии CDDL. Так- го в новой версии одной из самых рас- ris.reys.net. Могу порекомендовать
же нужно сделать замечание относи- пространенных ОС из семейства ком- еще один неплохой русскоязычный
тельно платформы x86. Solaris на x86 мерческих UNIX? Во многих обзорах ресурс http://solaris-center.ru.
работает с версии 2.1 – то есть бо- и на самом сайте http:\\www.sun.com ! Predictive Self Healing – автомати-
лее 10 лет. Правда, в прошлом Solaris уже не раз рассматривались новше- ческая диагностика и восстановле-
OE ассоциировалась со SPARC. Ком- ства и технологии, включенные в So- ние в случае сбоев (как программ-
пания Sun Microsystems решила ра- laris 10. Поэтому я не буду подробно о ных так и аппаратных).

№6, июнь 2005 37


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

Рисунок 1. Первый запуск Solaris 10 Рисунок 2. JDS в Solaris 10

Две широко разрекламированные знать установленную копию операци- использовать более дружественный
функции ZFS (новая файловая систе- онной системы от Microsoft. RHEL или для выходца из мира Linux командный
ма) и Project «Janus» (бинарная совме- Fedora распознает как Windows, так и интерпретатор bash, чем работающий
стимость c Linux) пока в релиз не вош- Solaris. Поэтому, для того чтобы вруч- по умолчанию korn. Ну и не забудьте
ли, но обещаются разработчиками в ную не возиться с загрузчиками – про- вашему пользователю назначить па-
обновлениях. ще использовать приведенную после- роль командой passwd.
довательность установки. Итак, после всех этих манипуляций
Устанавливаем Solaris 10 В процессе инсталляции вам бу- вы должны увидеть графическое при-
на рабочую станцию x86 дут заданы стандартные для установ- глашение ввести имя пользователя и
Для начала было бы неплохо обна- ки любой системы вопросы: настрой- пароль. При первом заходе в систему
ружить свое оборудование в списке ки сети, имя машины и тому подобное. вам будет предложен выбор между
Hardware Compability List, доступном При первом знакомстве стоит выбрать классической CDE (Common Desktop
по адресу: http://www.sun.com/bigad- полную установку. Enviroment) в ее инкарнации 1.6 и Java
min/hcl. Но, поскольку в нем содержит- Я пробовал устанавливать Solar- Desktop System 3, которая фактически
ся крайне мало систем и комплектую- is 10 для x86 на нескольких рабочих представляет из себя Gno-me 2.6. На-
щих, надежда на то, что вы найдете там станциях, и хотя всегда указывал нали- до заметить, что в поставку ОС вклю-
свое «железо», крайне мала. Оконча- чие серверов DNS и их IP-адреса, про- чен Star Office 7 update 4, хотя для ле-
тельно же убедиться в том, что Solaris грамма установки ни разу не создава- гального использования этого офис-
будет работать на конкретной конфи- ла файла /etc/resolv.conf. Вероятно, это ного пакета его все равно необходи-
гурации, можно только эксперимен- особенность сборки для x86, потому мо приобретать отдельно. В качестве
тальным путем. что при установке Solaris 10 для плат- веб-браузера поставляется Mozilla 1.7,
В отличие от предыдущей версии, формы SPARC с подобной проблемой а в роли почтового клиента выступа-
для установки которой было достаточ- я не столкнулся. А поэтому на x86, пер- ет Evolution. При желании можно по-
но двух CD, «десятка» идет уже на че- вым делом после окончания процесса играть в стандартные для поставки
тырех. Первый диск при этом является инсталляции, вам нужно создать этот Gnome игры и работать с изображе-
загрузочным. На пятом, дополнитель- файл и прописать свои DNS-сервера. ниями в Gimp версии 2.0.2. По субъ-
ном Software Companion CD, содержит- Без resolv.conf X-Window стартовать у ективным ощущениям на одинаковом
ся ряд наиболее часто используемого вас не будет. Кстати, в состав Solaris 10 оборудовании, Gnome под Linux 2.4 ра-
открытого программного обеспечения, для платформы x86 входят два X-сер- ботает значительно медленнее. Осо-
собранного под Solaris. По отдельно- вера: X.org и «родной» от Sun Microsys- бенно это хорошо было заметно на но-
сти пакеты из состава Software Comp- tems. Переключаться между ними мож- утбуке Asus M5N с 256 Мб оператив-
anion можно скачать по адресу: http:// но при помощи утилиты kdmconfig. ной памяти.
www.sun.com/software/solaris/freeware. Следующим шагом после создания С поддержкой русского языка –
Полная установка Solaris 10 занимает resolv.conf можно создать пользовате- проблем я не обнаружил. Все прило-
достаточно много времени. Субъек- ля, под которым мы и будем работать. жения нормально отображают русские
тивно – как минимум в два раза доль- Причем в отличие от Linux потребует- символы, а с переключением раскла-
ше, чем Linux или Windows. ся более развернутый синтаксис ко- док справился переключатель из со-
Если вы хотите получить систе- манды useradd: става Gnome. При его использовании
му с двойной или тройной загрузкой, необходимо из предложенных трех ва-
то лучше устанавливать Solaris после # useradd -d /export/home/user -m ↵ риантов раскладки выбрать «Plain Ru-
-s /bin/bash user
того, как вы поставили Windows, но до ssian keymap». Однако интерфейс луч-
Linux. Загрузчик Solaris сможет распо- Как видно, в качестве shell можно ше оставить английским. Дело в том,

38
администрирование
ются зависимости пакетов и скачива-
С чего начинался Solaris ются все пакеты, от которых зависит
Фирма Sun Microsystems была основа- UNIX System V, релиз 4. Новая опера- устанавливаемый.
на в 1982 году при участии известно- ционная система была названа Solar- Например, если вы привыкли не к
го в мире UNIX г-на Била Джоя (напри- is, и первой выпущенной версией ста- Gnome а KDE, то вполне можете поста-
мер, он является автором стандартно- ла Solaris 2. Первой же версией Sola- вить сборку с http://www.blastwave.org.
го для UNIX-систем редактора vi). На- ris фирма Sun стала называть снятую Сделать это «не просто, а очень про-
звание фирмы произошло от первых с производства SunOS. Год спустя вы- сто» – командой pkg-get -i kde_gcc. По
букв Stanford University Network, так как шла Solaris 2.2 с поддержкой симме- окончании установки в опции dtlogin
большинство основателей было имен- тричных мультипроцессорных систем, помимо JDS и CDE вы должны полу-
но из этого университета. В 1983 году а также версии для х86. чить и KDE. Перед тем как устанавли-
вышла первая версия операционной C выхода Solaris 2.6 в 1997 году, вать что-либо, ознакомьтесь с краткой
системы SunOS – предшественника графический интерфейс CDE стано- инструкцией, доступной на http://www.
Solaris, реализации BSD UNIX от Sun. вится стандартным компонентом этой blastwave.org/howto.html.
Спустя два года вышла вторая вер- ОС. В 1998 году выходит Solaris 7 – пол- Еще одна альтернативная коллек-
сия продукта, в которой впервые была ностью 64-разрядная система с под- ция пакетов для Solaris объемом более
представлена новая разработка фир- держкой средств программирования 20 Гб, на которую можно обратить вни-
мы – NFS, известная сейчас каждому на языке Java. Четыре года спустя – са- мание, расположена по адресу: http://
системному администратору. мая распространенная на данный мо- www.sunfreeware.com.
SunOS успешно развивалась с де- мент версия под номером девять. Также на просторах Интернета
сяток лет, пока в 1992 году не было В 2004 году был анонсирован вы- можно найти игры, собранные под So-
объявленно, что SunOS 4.1.4, основан- ход Solaris 10, а в середине июня это- laris. В частности, со странички http://
ная на BSD UNIX, станет последней из го года Sun Microsystems открыла ис- members.tripod.com/~Vitaly_Filatov мож-
разработанных версией, и в дальней- ходные коды своей операционной си- но скачать небезызвестный Heretic.
шем Sun Microsystems переходит на стемы. В целом можно сказать, что Solaris
10 обеспечивает достаточно удобную
что в процессе локализации часть про- ствующего на дополнительном Soft- рабочую среду на персональном ком-
грамм переведена в одной кодировке, ware Companion CD, воспользовать- пьютере. Вы можете продолжать поль-
а часть в другой. ся коллекцией пакетов с http://www. зоваться почти всеми программами
blastwave.org. Сайт содержит более 10- из числа тех, к которым привыкли под
Начинаем работать 00 пакетов (почти 5 Гб) регулярно об- Linux и под Solaris. Основной недоста-
Несколько освоившись в системе, новляющегося открытого ПО, собран- ток рассматриваемой операционной
предлагаю обратить внимание на пе- ного для платформы Solaris. Для об- системы – малый спектр поддержи-
речень корректно работающего обо- новления и установки пакетов доста- ваемого оборудования. Надеюсь, что
рудования. Очень высока вероятность точно всего лишь одной команды pkg- с открытием исходных кодов ОС этот
того, что звуковая карта не будет ра- get, при этим автоматически разреша- список будет расширяться.
ботать с идущими в поставке драйве-
рами. В форумах я даже видел сооб-
щение от инженера Sun Microsystems,
который рекомендовал посмотреть на
сторонние драйвера. В частности на
Open Sound System (http://www.open-
sound.com), бесплатную для персо-
нального не коммерческого использо-
вания, и бесплатные драйвера с сай-
та http://www.tools.de/solaris/audio. Если
вы решите использовать OSS – един-
ственным неудобством будет необхо-
димость раз в четыре месяца обнов-
лять лицензию.
В настоящее время в Solaris не
реализован так называемый проект
«Янус», обещающий бинарную совме-
стимость с ОС Linux, а именно Red Hat
Enterprise Linux. Поэтому для упро-
щения установки программ и управ-
ления обновлениями я рекомендую
вместо самостоятельной сборки не-
обходимого свободного софта, отсут- Рисунок 3. Помимо Gnome вы можете работать в традиционной CDE

№6, июнь 2005 39


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

ФАЙЛОВЫЕ СИСТЕМЫ ПРОСТРАНСТВА


ПОЛЬЗОВАТЕЛЯ
Сегодня администраторы и пользователи сталкиваются со многими новыми технологиями, на
изучение которых требуется время. При этом полученные ранее навыки работы и привычные
инструменты могут не пригодиться или показаться неудобными. «Синтетические» файловые
системы, работающие в пространстве пользователя, позволяют скрыть разницу в работе
конкретных протоколов и применять для всех задач одни и те же инструменты.

СЕРГЕЙ ЯРЕМЧУК

В
се является файлами – ключевая концепция UNIX-си- жалению, второй подобный проект, LUFS – Linux Userland
стем. Файлами является даже периферийное обору- FileSystem (http://lufs.sourceforge.net/lufs) несмотря на над-
дование компьютера, разделы жесткого диска. При пись на сайте «Actively maintained» обновлялся в последний
этом для приложений доступ к файлу устройства или от- раз в конце 2003 года, поэтому уже можно говорить о пре-
правка данных другому процессу практически не отличи- кращении работ. Принцип работы такой системы ясен из
ма от доступа к обычному текстовому файлу, что позволяет рис. 1. Модуль ядра перехватывает запросы к VFS и соз-
пользователю применять одни и те же команды для вывода дает для пользователя иллюзию работы с обычной файло-
текстового файла на консоль, печати файла, вывода зву- вой системой, на которой эмулируется специальное дерево
ка через /dev/dsp и пр. Синтетические файловые системы, каталогов, отвечающее семантике хранимых в ней данных.
работающие в пространстве пользователя, реализуют ана- Теперь для работы с этими файлами можно применять при-
логичный подход к самым разнообразным источникам ин- вычные утилиты, например, для копирования файлов через
формации. Файлами является все, с чем приходится иметь защищенное ssh-соединение достаточно воспользоваться
дело пользователю такой файловой системы – почтовые cp. Модуль ядра и библиотека связываются через дескрип-
ящики, веб-страницы и ftp-серверы, защищенные SSH-со- тор специального файла /proc/fs/fuse/dev, через который и
единения, архивы и другие локальные данные… происходит взаимодействие.
Работа вне ядра:
! Упрощает установку и использование приложений. Реализации файловых систем
! Позволяет минимизировать последствия краха. для защиты информации
! Позволяет использовать для программирования язы- На сайте проекта FUSE можно найти только небольшую про-
ки, отличные от С. грамму – пример, демонстрирующую возможности, основ-
! Отлаживать такие приложения легче. ной же интерес представляют собой сторонние разработ-
! Появляется возможность вынести часть кода во внеш- ки, список которых можно найти на http://fuse.sourceforge.
ние библиотеки. net/filesystems.html.
! Нет необходимости в переписывании кода для новых На момент написания статьи список насчитывал 22 про-
ядер. екта, большая часть из которых еще не достигла состояния
! Исходя из всего перечисленого, появляется возмож- релиза и стабильная работа не гарантируется в том числе
ность создавать инструменты для самых разнообраз- и самими разработчиками, к тому же их не всегда возмож-
ных задач. но откомпилировать без проблем. Поэтому весь список пе-
речислять не буду, остановлюсь только на некоторых са-
Например, в настоящее время существуют проекты мых интересных.
SULF – Stackable User-Level Filesystem (http://pobox.com/ EncFS – Encrypted Filesystem (http://pobox.com/~vgough/
~vgough/fuse-csharp.html) и FUSE-J (http://www.cl.cam.ac.uk/ encfs.html) реализует зашифрованную файловую систему.
~Etdm25/fuse-j). Первый позволяет написать свою файло- Как и другие подобные файловые системы, основное назна-
вую систему на C, второй на Java. чение EncFs – защита персональных данных, резервных ко-
Интерфейс спроектирован так, чтобы обеспечить про- пий. Работа отличается от «loopback» систем, работающих
стую, эффективную и прозрачную работу с поддержкой в режиме ядра. При этом в EncFs размер файловой систе-
привычной семантики. мы может динамично изменяться. Некоторые метаданные
Первоначально разработанный для поддержки AVFS остаются видимыми, что позволяет программе резервиро-
(http://www.inf.bme.hu/~mszeredi/avfs), FUSE (http://fuse. вания определить количество файлов, их размер, прибли-
sourceforge.net) вскоре стал отдельным проектом и на се- зительно количество знаков в имени (само имя шифрует-
годня имеет приличный список файловых систем, исполь- ся) , т.е. узнать изменившиеся файлы. Но програма резер-
зующих его наработки. Совсем недавно код FUSE включен вирования не может их расшифровать, таким образом, ре-
в дерево ядра -mm Эндрю Мортона (Andrew Morton). К со- зервные копии можно сделать без расшифровки.

40
администрирование
Выбрана ручная конфигурация.
Доступны следующие алгоритма шифрования:
1. blowfish-compat : алгоритм совместим с EncFS 0.2-0.6
-- длина ключа 160 бит
-- размер блока 64 байт

Введите номер соответствующий Вашему выбору: 1

Выбранный алгоритм "blowfish-compat"

Using key size of 160 bits


Using filesystem block size of 64 bytes
Доступны следующие алгоритмы зашифровки:
1. Block : Block encoding, hides file name size somewhat
2. Stream : Шифрование потока, сохраняет имена файлов как только возможно

Введите номер соответствующий Вашему выбору: 2

Рисунок 1. Модуль ядра перехватывает запросы к VFS Выбранный алгоритм "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

лей вроде CD-ROM. Проверим ее в работе. Первым делом Enable per-file initialization vectors?
требуется установить fuse. Здесь ничего сложного. This adds about 8 bytes per file to the storage requirements.
It should not affect performance except possibly with applications
which rely on block-aligned file io for performance.
# tar -xzvf fuse-2.2.1.tar.gz The default here is Yes.
# cd fuse-2.2.1 Any response that does not begin with 'n' will mean Yes:
# ./conÞgure && make
# make install Включить имя файла в IV цепочку заголовков?
# /sbin/modprobe fuse Эта опция позволит сделать данные файла
зависимыми от полного файлового пути. Если файл
переименовать, то нельзя будет его расшифровать.
Проверяем загружен ли соответствующий модуль: Если включить эту опцию, то жесткие ссылки на файлы
не будут поддерживаться файловой системой.
# /sbin/lsmod | grep fuse Значение по умолчанию No.
Любой ввод не начинающийся на 'y' будет воспринят как No:
fuse 24020 0 (unused)
Enable block authentication code headers
on every block in a file? This adds about 12 bytes per block
Новая файловая система должна быть в списке извест- to the storage requirements for a file, and significantly affects
performance but it also means [almost] any modifications or errors
ных ФС. within 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
# cat /proc/Þlesystems | grep fuse
Add random bytes to each block header?
nodev fuse This adds a performance penalty, but ensures that blocks
have different authentication codes. Note that you can
Все работает. Для примера работы можно зайти в подка- have the same benefits by enabling per-file initialization
vectors, which does not come with as great of performance
талог fuse-2.2.1/example/ и запустить тестовую программу. penalty.
Select a number of bytes, from 0 (no random bytes) to 8: 4

#./fusexmp /mnt/fuse/ -d
Конфигурация завершена. Создана файловая система
unique: 2, opcode: INIT (26), nodeid: 0, insize: 44 с следующими свойствами:
INIT: 5.1 Шифр файловой системы: "ssl/blowfish-v0.2", версия 2:0:1
unique: 2, error: 0 (Success), outsize: 24 Шифр файла: "nameio/stream", версия 2:1:2
Размер ключа: 160 бит
Теперь, глядя на содержимое каталога /mnt/fuse/, можно Размер блока: 64 байт, включая 12 байт MAC заголовок
Каждый файл содержит 8-ми байтный заголовок с уникальными IV данными.
обнаружить дерево основной файловой системы. Файловые имена зашифрованы с использованием IV цепочек.
Настала очередь EncfFS. Для работы, кроме архива с
Введите пароль для доступа к файловой системе.
самой файловой системой, требуется наличие библиотек Запомните пароль, так как в случае утери его,
OpenSSL и Rlog (http://rlog.sourceforge.net). Устанавливает- будет невозможно восстановить данные. Тем не менее
этот пароль можно изменить с помощью утилиты encfsctl.
ся EncfFS обычным образом, после компиляции будут до-
ступны два исполняемых файла – еncfs и encfsctl. При по- Новый пароль EncFS:
Повторите пароль EncFS:
мощи первой можно создать или примонтировать зашиф-
рованную файловую систему. Как видите, при создании новой файловой системы до-
ступно два предустановленных режима standard и paranoia
$ encfs ~/.crypt ~/crypt (шифр AES, размер ключа 256, размер блока – 512), а так-
Директория "/home/sergej/.crypt" не существует. Создать ее? (y,n) y же режим expert, при использовании которого можно вы-
Директория "/home/sergej/crypt" не существует. Создать ее? (y,n) y брать все параметры самому (половина вопросов при этом
Создание нового зашифрованного раздела.
Выберите одну из следующих букв: будет задана по-русски).
введите "x" для режима эксперта, Теперь можно проверить работу вновь созданной ФС:
введите "p" для режима максимальной секретности,
любой другая буква для выбора стандартного режима.
?> x # cd crypt/

№6, июнь 2005 41


администрирование
# echo «Это зашифрованное сообщение» > testÞle # mount -t shfs sergej@somewhere.com: /mnt/local
# cat testÞle
Это зашифрованное сообщение 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)? yes
Размонтируем и смотрим, что в каталоге: Warning: Permanently added ' somewhere.com,192.168.0.20' (RSA)
to the list of known hosts.
sergej@somewhere.com 's password:
# fusermount -u ~/crypt
# ls ./.crypt/
Если теперь посмотреть в /mnt/local, то в нем обнаружат-
Srdhn7yaqbS-Q1
ся файлы, расположенные на удаленном компьютере. По
Также невозможно прочитать содержимое файлов. Кро- умолчанию монтируется домашний каталог пользователя,
ме того, можно задать дополнительные параметры, кото- при необходимости можно указать на конкретный каталог,
рые позволяют автоматически размонтировать файловую порт отличный от принятого по умолчанию и прочие пара-
систему в случае неактивности в течение какого-то проме- метры соединения. Для удобства можно создать символи-
жутка времени, организовать доступ нескольким пользо- ческую ссылку и вызывать команду привычным образом.
вателям и некоторые другие. При помощи утилиты encfsctl
можно проверить параметры файловой системы или сме- # ln-s /sbin/mount.shfs /sbin/shfsmount
# mount -t shfs sergej@somewhere.com: /mnt/local
нить пароль. Например:
Практически такими же возможностями обладает па-
$ encfsctl ./.crypt кет sshfs-fuse, доступный для закачки с сайта проекта fuse
Версия 5; создана EncFS 1.2.1 (ревизия 20040813) (http://prdownloads.sourceforge.net/fuse/sshfs-fuse-1.1.tar.
Шифр файловой системы: "ssl/blowfish-v0.2", версия 2:0:1 gz?download). Работа с ним отличается только используе-
Шифр файла: "nameio/stream", версия 2:1:2
Размер ключа: 160 бит мой командой.
Размер блока: 64 байт, включая 12 байт MAC заголовок
Каждый файл содержит 8-ми байтный заголовок с уникальными IV данными. # sshfs sergej@somewhere.com:/tmp /mnt/local
Файловые имена зашифрованы с использованием IV цепочек. # mount | grep shfs
sergej@somewhere.com: on /mnt/local type shfs ↵
Для использования в военных, правительственных и (version=2,mnt=/mnt/local,fd=5)
других организациях, в которых уделяется особое внима-
ние режиму секретности, разработана файловая система
Phonebook (http://www.freenet.org.nz/phonebook), использу- Сетевые ресурсы в окне МС
ющая технологию, получившую название «Deniable Encryp- Подобным образом можно смонтировать и SMB-ресурсы Win-
tion technology». dows машин. Проект SMB for Fuse (http://hannibal.lr-s.tudelft.nl/
Её разработчики пытаются учесть «человеческий фак- ~vincent/fusesmb) позволяет монтировать не только отдель-
тор», являющейся основной причиной многих проблем, ные ресурсы, как это делается обычным способом при по-
возникающих при защите информации. Суть этой техноло- мощи smbclient и smbmount, но и полностью всю рабочую
гии заключается в использовании нескольких слоев коди- группу или компьютер. Затем к ресурсам можно обращать-
рования, каждый со своим паролем, поэтому чтобы полу- ся из любого приложения, как к локальным файлам. Кэши-
чить доступ, необходимо знать уже два параметра: назва- рование при помощи скрипта fusesmbcache ускоряет про-
ние слоя и пароль. В случае ошибки набора будет создан смотр доступных ресурсов. Этот скрипт необходимо запу-
новый слой, никакого сообщения об ошибке выведено не скать при помощи cron.
будет. При этом есть возможность создать несколько сло-
ев с одним именем, но разными паролями, в случае взлома # crontab -e
будет раскрыта информация только в одном из них. */30 * * * * fusesmbcache &> /dev/null
Все файлы шифруются индивидуально (256-Blowfish,
CFB-режим, плюс SHA1 хеш), в случайном порядке изме- И теперь мониторим ресурсы.
няется и время доступа к файлу. Файлы могут быть запи-
саны на CD-ROM или доступ к ним можно получить через # mkdir ~/net
# fusermount ~/net fusesmb &
сеть (например, NFS).
В указанном каталоге появится дерево каталогов, соот-
SSH через файловый менеджер ветствующих рабочим группам, входящим в них компьюте-
Следующая интересная файловая система shfs – (Secure) рам и доступным ресурсам.
SHell FileSystem (http://shfs.sourceforge.net), использующая Не менее интересной является разработка еще одного
FUSE, позволяет монтировать удаленные системы, исполь- Open Source проекта FunFS – Fast User Network FileSystem
зуя ssh-соединения и работать с ними как с обычной локаль- (http://www.luminal.org/wiki/index.php/FunFS/FunFS), цель ко-
ной системой. После стандартной установки пользователю торого – полноценная замена NFS. Особое внимание было
будут доступны две утилиты shfsmount и shfsumount. В об- уделено повышению надежности и безопасности соедине-
щем случае строка запуска выглядит так: ний. К сожалению, на данный момент FunFS находится в со-
стоянии альфа-версии, поэтому о сколько-нибудь серьез-
shfsmount[user@]host:[dir]] mountpoint [options] ном его применении пока говорить еще рано. Практически
аналогична ситуация с проектом fusedav (http://0pointer.de/
Далее: lennart/projects/fusedav), позволяющим монтировать Web-

42
администрирование
DAV (http://www.webdav.org) ресурсы. Разработки идут вя- html). В точке монтирования это будет выглядеть, как обыч-
ло, хотя версия 0.1, доступная в настоящее время на сайте, ная файловая система, но всегда можно будет вернуться в
в принципе функциональна. Впрочем, и AVFS (http://source- исходное состояние.
forge.net/projects/avf) позволяет также просматривать уда-
ленные ресурсы (ftp, http, dav), и кроме того монтирует ар- Работа с e-mail, bluetooth
хивы (tar, tar.gz, zip) в дерево файловой системы. и устройствами
Для пользователей почтового сервиса Gmail доступна фай-
Контроль версий файлов ловая система GmailFS – Gmail Filesystem (http://richard.jones.
Wayback (User-level Versioning File System for Linux, http:// name/google-hacks/gmail-filesystem/gmail-filesystem.html). Это
wayback.sourceforge.net) позволяет сохранять старые вер- написанное на Python приложение, использующее библио-
сии текстовых файлов, независимо от их количества, и ка- теку libgmail (http://libgmail.sourceforge.net) для связи с Gm-
талогов, в которых они располагаются. Работает wayback ail. Позволяет монтировать почтовый аккаунт как обычную
на любом блочном устройстве с любой файловой системой. файловую систему и пользоваться в дальнейшем обычны-
Для отката такая система ведет файл журнала, в котором ми командами вроде ls, rm, cp, grep и другими утилитами,
описываются все изменения. Монтируется новая файловая позволяющими быстро разобраться с 1 Гб информации.
система при помощи скрипта mount.wayback. Не менее интересны файловые системы, позволяющие
получить доступ к различным устройствам. Среди них btfs –
$ ./mount.wayback ~/wayback/ /mnt/disk Bluetooth FileSystemMapping (http://www.mulliner.org/bluetooth/
fusermount: unable to open fuse device /proc/fs/fuse/dev: No such file or directory btfs.php), при помощи которой можно узнать обо всех доступ-
ных bluetooth-устройствах просто использовав команду ls.
Скрипт пытается загрузить модуль fuse. Если он раннее
был загружен, то появится такое сообщение. Поэтому для # ls -la /OPUSH
/OPUSH/SE _ T630
работы его необходимо первоначально выгрузить. /OPUSH/myPalm

# /sbin/rmmod fuse Для пересылки файлов – ср.


# ./mount.wayback ~/wayback/ /mnt/disk
# mount | grep fuse
# cp Þle.txt /OPUSH/myPalm
/proc/fs/fuse/dev on /mnt/disk type fuse (rw,nosuid,nodev)
# echo «test» > /mnt/disk/test
# ls /mnt/disk/ К сожалению, в данный момент получить файлы от
test
устройств таким образом невозможно. Аналогично, если
вы считаете, что специализированные утилиты, предна-
Смотрим содержимое: значенные для работы с цифровыми фотокамерами вроде
gtkam, не удобны и предпочитаете использовать для это-
# ls ~/wayback/ го стандартные инструменты, попробуйте gphoto2-fuse-fs
test test~. versionfs! version test. versionfs! version (http://www.hep.phy.cam.ac.uk/~lester/gphoto2-fuse-fs). Ис-
пользуя эту файловую систему, можно смонтировать в ре-
# echo «test2» >> /mnt/disk/test жиме «только для чтения» фотокамеру и просматривать
# echo «test3» >> /mnt/disk/test
# ls ~/wayback/ изображения. Для доступа к памяти в мобильных телефо-
нах Siemens разработана файловая система SieFS (http://
test ~test ~test. versionfs! version test~.
versionfs! version test. versionfs! version chaos.allsiemens.com/siefs), которая в настоящее время ра-
ботает с телефонами 45, 55 и 65 серий.
Отмечается более быстрая работа с файлами по срав- Проблему доступа к данным и настройкам во время вы-
нению с CVS. Но если все таки необходим доступ именно к полнения программы (что особенно актуально для встро-
системе CVS, то некоторые, возможно, предпочтут исполь- енных устройств) пытаются решить разработчики проекта
зовать довольно удобную cvsfs (http://sourceforge.net/proj- RTA – Run Time Access (http://www.runtimeaccess.com), пред-
ects/cvsfs), позволяющую смонтировать CVS и работать с ставляющего специализированный постоянно загруженный
ней как с локальной файловой системой. При этом пользо- интерфейс к внутренним данным работающего приложения.
вателю будут доступны изменения, без необходимости за- Используя его, можно получить доступ ко всем структурам
качки всего дерева каталогов. В данный момент пользова- выполняющейся программы через Postgres-интерфейс, ин-
тель ограничен только самым последним релизом, исполь- формация которого теперь будет видна пользователю как
зовав знаки ‘@@’ в имени файла (например filename@@1.1) таблицы базы данных или как дерево файловой системы. И
можно получить доступ к любой версии файла. теперь к ним можно получить доступ любым удобным спо-
Второй вариант lufs_unionfs (http://alumnus.caltech.edu/ собом (консоль, веб-интерфейс, SNMP и др.).
~muresan/projects/lufs_unionfs.html), которая основана на Это не все разработки, использующие FUSE. Остальную
LUFS. Такая система имеет два каталога, основной рабо- информацию можно найти на сайте проекта. Но как види-
тает в режиме «только для чтения» (некий образ, содержи- те, подобные файловые системы заметно упрощают работу
мое которого остается постоянным), а в дополнительный бу- пользователя. К сожалению, большинство разработок нахо-
дут занесены все изменения и новые файлы (идея взята с дятся еще в состоянии альфа-версии, так что окончательное
проекта unionfs (http://www.fsl.cs.sunysb.edu/project-unionfs. решение придется принимать на свой страх и риск.

№6, июнь 2005 43


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

УСКОРЯЕМ MS SQL SERVER

Что может быть хуже сервера, который неизвестно из-за чего стал работать слишком
медленно? Только сервер, который работает слишком медленно по хорошо известной
и неустраняемой причине! Чтобы реже сталкиваться с такой ситуацией, рассмотрим методы
борьбы с причинами замедления работы Microsoft SQL Server.

ЮЛИЯ ШАБУНИО

В
первой части статьи (см. «По- бок, то вот с каким процессом и на ка- тификации проблемного процесса. Де-
чему MS SQL медленно работа- ких объектах случилось пересечение – ло в том, что событие «Deadlock Chain»
ет? Ищем причины» – №5, 2005 непонятно. К счастью, в SQL Profiles вхо- ничего не пишет об участвующих про-
г.) мы рассмотрели способы локализа- дит великолепная возможность отсле- цессах, кроме SPID. Поэтому нам по-
ции проблемы, кроме одного – как об- дить всю цепочку блокировок с помо- требуется регистрировать еще и входы
наруживать дедлоки? Для начала из- щью Locks\Lock:Deadlock Chain. Чтобы и выходы из системы. По SPID и време-
учим оставшийся вопрос и после это- эффективно ею воспользоваться, мож- ни дедлока мы сможем точно найти за-
го перейдем непосредственно к сегод- но построить следующий шаблон: писи о его подключении и отключении,
няшней теме. 1. События: а значит – найдём описание процесса.
! Locks\Lock:Deadlock Chain Событие «ExistingConnection» даст нам
Поиск дедлоков ! Locks\Lock:Deadlock список тех процессов, на вход которых
Дедлоки (Deadlocks) являются доволь- ! Security Audit\Audit Login в систему мы уже опоздали.
но специфичной проблемой. С одной ! Security Audit\Audit Logout 2. Поля данных:
стороны, они не затрагивают весь сер- ! Session\ExistingConnection ! EventClass
вер, а происходят на некоторых кон- ! SPID
кретных процессах. С другой стороны, Первые два события нам нужны, ! StartTime
если жертвы (снятые процессы) дедло- чтобы отследить собственно блокиров- ! ObjectID (объект, на котором был
ка очевидны просто по журналу оши- ки. Остальные понадобятся для иден- дедлок)

44
администрирование
! IndexID (индекс, участвовавший в для того, чтобы включить отладку для проса вас вряд ли обрадует. Поэтому,
дедлоке) всех процессов, а не только для теку- если какие-то два поля таблицы уча-
! Mode щего. В некоторых случаях для того, ствуют в большинстве запросов, – не
! EventSubClass (в каком режиме бы- чтобы полученная подробнейшая ин- делайте два индекса по каждому из
ла попытка блокировки) формация о совершившемся дедлоке столбцов. Сделайте один составной!
! стандартные поля для определе- сохранялась в журнал SQL сервера, Составной индекс имеет еще и то пре-
ния смысла процесса – Application потребуется установить еще и флаг имущество, что если он содержит все
Name, NTUserName и так далее 3605. Эти флаги отладки общеизвест- нужные для запроса поля, то обраще-
! TextData ны, но не документированы. Исполь- ние к таблице не понадобится. Зна-
зуйте их на свой страх и риск. чит, можно избежать операции Book-
Первые два поля я выношу в спи- Мы закончили рассмотрение ме- mark Lookup (поиска страницы в базе
сок полей, определяющих порядок тодов обнаружения проблем и при- по известному индексу), что позволя-
сортировки (называется он почему- ступаем к обсуждению способов их ет увеличить скорость работы раза в
то Groups). устранения. два. Мне приходилось добавлять в со-
3. Фильтры в данном случае ника- ставной индекс поля, которые в индек-
кие не нужны. Подключение/отключе- Решаем проблемы се, в общем-то, и не нужны, но позво-
ние пользователя не самое частое яв- производительности ляют избежать поиска по родитель-
ление в работе сервера, а уж дедло- Итак, вы нашли, в какой точке возника- ской таблице.
ки и подавно. ет проблема производительности и ка-
Итак, шаблон готов. Сохраняем, за- кого она рода. Поздравляю! Вы сдела- Разделяйте часто и редко
пускаем и... готовимся к долгому ожи- ли 3/4 работы. Осталось совсем немно- используемые данные
данию. Редко сервер доходит до та- го, всего лишь исправить ситуацию. кластерным индексом
кого состояния, что дедлок случается Выбирая кластерный индекс, имейте
каждую минуту. Даже в очень тяже- Оптимизация индексов в виду, что именно он определяет фи-
лых случаях приходится подождать па- Вопрос поиска идеального набора ин- зический порядок записей таблицы на
ру часов, а то и дней, прежде чем на- дексов неисчерпаем. На эту тему мож- диске. Физический порядок определя-
берётся материал для анализа. Поэ- но написать отдельную статью. Прав- ет соседство записей на страницах, а
тому я советую настроить сохранение да, польза от нее будет сомнитель- те, в свою очередь, задают порядок
счётчиков в файл и забыть о них на ной, поскольку каждая база данных загрузки и выгрузки страниц в память
сутки как минимум. Особенностью в по-своему уникальна, и подбор наи- сервера. А это значит, что часто луч-
данном случае является еще и то, что лучшей схемы доступа к данным до шим кластерным индексом будет та-
когда у вас упорядочение задаётся по сих пор остаётся скорее искусством, кой, который разделяет часто и ред-
нескольким полям в Groups, то рабо- нежели точной наукой. В данной ста- ко используемые записи. Давайте для
тать с ними в онлайн-режиме очень тье я лишь упомяну о нескольких наи- примера рассмотрим таблицу заказов.
неудобно: из-за ошибки в профайлере более частых ошибках в выборе ин- Предположим, что у нас есть ClientID –
курсор всё время скачет. Приходится дексов. идентификатор клиента и OrderDate –
или останавливать процесс сбора ин- дата заказа. Пусть большая часть за-
формации, или работать с сохранён- Не забывайте об индексах! просов содержит условие на ClientID
ным файлом журнала. Как показывает мой опыт, это проис- как точное равенство и условие на Or-
При анализе обратите внимание ходит чаще, чем можно было бы ожи- derDate как диапазон. Рассмотрим си-
на то, что событие Deadlock Chain ре- дать. Проекты не укладываются в сро- туацию, в которой заказов в таблице
ализуется одним и тем же процессом ки, программа доделывается в боль- очень много, но активно использует-
с маленьким номером. Это системный шой спешке, и на оптимизацию по ин- ся только заказы за последнюю неде-
процесс, который следит за ошибками, дексам не остаётся времени. В ре- лю, и в запросе чаще всего указывает-
но сам в них не участвует. Процессы- зультате или система работает с ин- ся именно этот период. Классические
участники дедлока указываются в Text- дексами по умолчанию (которые ред- рекомендации советуют выбрать ин-
Data события Deadlock Chain. ко близки к оптимальным), или с вы- декс (ClientID, OrderDate). По первому
Не могу не упомянуть о методе, по- бранными как попало, или без индек- полю будет происходить точное срав-
зволяющем сохранять подробную ин- сов вообще. Третий вариант, пожалуй, нение, по второму – сканирование ди-
формацию о случившемся дедлоке без самый предпочтительный, так как в апазона. Так бы и стоило поступить,
использования профайлера. Это вклю- этом случае проблема будет выявле- не будь этот индекс кластерным. Если
чение trace-флагов: на очень быстро. вы сделаете такой кластерный индекс,
то заказы за последнюю неделю будут
DBCC TRACEON(1204, -1) Используйте составные разбросаны по всей базе данных! За-
индексы грузка их всех в память просто невоз-
К сожалению, документирован Microsoft SQL Server 7.0 не умел ис- можна, и каждый запрос к данным но-
только один из них – 1024, как раз и пользовать в одном запросе два ин- вого клиента приведёт к физическо-
обозначающий сохранение информа- декса на таблицу. Версия 2000 на это му (а не логическому) чтению. Если же
ции о дедлоке. Но нам нужен еще и -1 способна, но скорость выполнения за- вы используете в качестве кластерно-

№6, июнь 2005 45


администрирование
го индекс (OrderDate), то, несмотря на может зависеть от нагрузки сервера, представьте, что у вас есть условие ти-
ухудшение плана запроса, вы получите число физических чтений определяет- па where @Number like Code + ‘%’. Если
большой выигрыш на активно работа- ся состоянием кэша страниц, то число бы запрос был построен как Code like
ющей базе данных. В самом деле при логических чтений даёт почти идеаль- @Number + ‘%’, сервер сам догадался
активной работе с заказами последней ный параметр для оценки затрат на вы- бы использовать индекс по Code. Но в
недели все страницы с данными боль- полнение именно этого запроса. Ищи- нашем варианте Code используется в
шую часть времени будут находиться те новые варианты, пробуйте их. Опти- составе сложного выражения, и опти-
в памяти сервера. А сканирование ди- мизация индексов – это всегда очень мизатор пасует. Человеку же очевид-
апазона дат в памяти, нужное для по- интересно. но, что @Number like Code + ‘%’ может
иска данных по конкретному клиенту, быть верно только тогда, когда @Num-
как правило, быстрее, чем считывание Управляем планами ber >= Code, так как у них одинаковые
с диска этих данных, даже по извест- запросов первые символы, но @Number длин-
ному заранее адресу. Эта задача немного проще преды- нее. Вот тут и имеет смысл добавить
дущей. Если нужный индекс на ба- в условия @Number >= Code, так как
Не увлекайтесь созданием зе данных уже есть, но MS SQL Serv- оно не изменит логики и поможет сер-
большого числа индексов er им почему-то не пользуется, то до- веру самостоятельно избрать нужный
Обычно при тестировании индексирован- вольно просто уговорить его это сде- запрос.
ных запросов используют всевозможные лать. Стоп, не тянитесь писать with Упростите запросы. Например, мне
выборки (т.е. запросы, выполняющие чте- (index=<ИмяИндекса?>)! Это тоже ва- известны ситуации, в которых планы
ние данных). Это понятно – выборки не риант, но он нужен на крайний случай. запросов сильно «плавали» при внеш-
разрушают данные. Но при этом упуска- Предлагаю вам свой список мер: них соединениях (join) с представлени-
ется очень важный момент – при встав- Выполните запрос dbcc freeproc- ями (view), построенными на внешних
ке, удалении, а часто и при обновле- cache. Этот нехитрый запрос очища- соединениях.
нии данных индексы работают проти- ет кэш скомпилированных планов за- И только если всё предыдущее не
воположным образом. Нет, они, конеч- проса и даёт серверу возможность пе- помогло, используйте подсказки MS
но, помогают найти строчки, нуждаю- рекомпилировать планы заново. Ес- SQL Server. Они порой дают велико-
щиеся в изменении. Но потом тратится ли сбой, нарушивший генерацию пла- лепный непосредственный результат,
куча времени на реорганизацию изме- на, был единичный, то новые алгорит- но с ними необходимо проявлять осто-
нённых данных, и в итоге порой полу- мы окажутся правильными, и система рожность – в другой ситуации, на дру-
чается гораздо медленнее, чем на базе оживёт. Но если вам приходится часто гих данных или с другой загрузкой вы-
данных совсем без индексов. Именно использовать dbcc freeproccache, то нужденный план запроса иногда силь-
поэтому стратегия «добавим индексы будьте внимательны – это может быть но деградирует.
везде, где что-то тормозит», глобаль- последствием какого-то неблагополу- Немного сложнее приходится, в си-
но проигрывает при попытке хоть что- чия сервера в целом. туации если вас устраивают выбран-
то изменить в этой базе данных. Более Cгенерируйте дополнительную ста- ные индексы, но не устраивают мето-
пяти индексов на большой таблице яв- тистику. Вот уж чего, как говорится, ды и порядок слияния. MS SQL Server
ляется почти приговором для процес- много не бывает. Её можно «навеши- позволяет настраивать и эти момен-
сов, которые как-то пытаются изменять вать» хоть на каждое поле. Главное – ты, но тут выбор возможностей очень
индексированные поля. не забывать регулярно выполнять пе- ограничен. Вы можете сделать поря-
регенерацию (а лучше создать зада- док соединений жёстко зависящим
Самый главный совет – ние для регулярного выполнения та- от порядка их упоминания в запросе
не следуйте советам ких действий). (force order), выбрать метод соедине-
В том числе и этому, да. Все советы да- Используйте подсказки для MS ния (loop|merge|hash join) или указать,
ются для частных случаев, которые мо- SQL Server, оставаясь в рамках стан- что несколько строк в результирую-
гут никогда не сложиться в вашей базе дарта ANSI-SQL. Предположим, что щем запросе вам нужны раньше дру-
данных. Проверяйте. Меняйте индек- сервер выбрал использование ин- гих (FAST число строк). Будьте осто-
сы, делайте запросы и следите за про- декса по полю, которое кажется вам рожны, выбирая соединение хэширо-
изводительностью. Анализ планов за- наименее подходящим в такой си- ванием (hash join). Оно даёт порой по-
просов – это мощнейший инструмент, туации. Всё просто – в секции за- трясающие результаты по произво-
но даже он порой даёт сбои и непра- проса where пишите условие по это- дительности, но всегда требует очень
вильно оценивает стоимость различ- му полю не в виде прямого равен- много памяти. И когда вашему серверу
ных вариантов выполнения. Самый на- ства или диапазона (например, Na- перестанет ее хватать, такие запросы
дёжный вариант – это в QA щелкнуть me = ‘Иван’), а с помощью функции не только заметно деградируют по ско-
правой кнопкой в окне редактирова- COALESCE(<Имя поля>, <Имя поля>). рости, но сильно замедлят работу в це-
ния, выбрать Current Connection Prop- Например, coalesce(Name, Name) = лом. И наоборот, если сервер работа-
erties, а там – галочки Set statistics time ‘Иван’. Это совершенно корректно ма- ет в состоянии нехватки оперативной
и Set statistics IO. И затем уже выпол- тематически, но при этом проблемный памяти, изменение метода слияния с
нить тестовый запрос. Уверяю вас, ес- индекс по указанному полю не может hash на loop может увеличить число ло-
ли время компиляции и выполнения быть использован. Другой пример – гических чтений, но при этом волшеб-

46
администрирование
ным образом уменьшить время выпол- справочную информацию, будут бло- данных. Тут на его долю остаётся толь-
нения запроса и облегчить работу сер- кировать одну таблицу, а изменения с ко контроль и забота о файлах базы
веру целиком. помощью триггеров будут выполнять- данных – наблюдение за фрагмента-
ся на другой. цией таблиц с помощью dbcc showco-
Как лечить блокировки Повысить или понизить уровень ntig, регулярная проверка физической
Лечение блокировок очень часто делает- гранулярности блокировок на каком- целостности и перестройка индексов.
ся командой kill. Что может быть проще: либо индексе или таблице можно с по- Но даже эти простые процедуры могут
уничтожил головной процесс – и всё за- мощью процедуры sp_indexoption. дать очень большой прирост произво-
работало! Но у этого подхода есть и от- И всё-таки выработка стратегии дительности, особенно если вы давно
рицательные моменты. Первый – рас- блокировок – задача скорее разработ- этим не занимались.
пределённые блокировки склонны по- чика, чем администратора. Для про-
вторяться. Так что не исключено, что граммиста огромным подспорьем бу- Заключение
через некоторое время вы будете де- дет уже картина блокировок, получен- Описанные сценарии не претендуют
журить в офисе весь день и всю ночь ная вами на этапе поиска проблемы. на полноту или оптимальность, но они
и держать палец над кнопкой kill. Вто- работают, и я использую их ежеднев-
рой – убивая головной процесс, мы Снимаем дедлоки но. Надеюсь, что набор приёмов и ре-
теряем всю информацию о распреде- Как уже говорилось, дедлоки, завязан- комендаций пригодится вам при ре-
лённой блокировке. Впоследствии мы ные на несколько объектов, снимают- шении проблем производительности
можем так никогда и не узнать, что же ся довольно легко. Ведь такой дедлок MS SQL Server.
на самом деле произошло, и не смо- означает, что к одним и тем же объек-
жем принять меры к тому, чтобы ситу- там базы данных разные транзакции Литература и ссылки:
ация больше не повторялась. Третья обращаются в разном порядке. Доста- 1. Дэн Тоу. Настройка SQL для про-
причина – далеко не всегда уничтоже- точно установить один какой-то поря- фессионалов (O’REILLY, «Питер», –
ние головного процесса приведёт про- док и проследить, чтобы он везде вы- 2004 г.). См. обзор в рубрике «Книж-
сто к перезапуску клиентского прило- полнялся. Если вы решили везде обра- ная полка» в журнале «Системный
жения. Иногда ценой вопроса являет- щаться сначала к А, и только потом к Б, администратор», №3, 2005 г. Книга
ся несколько дней работы целого под- а необходимо сделать наоборот, то на- нравится мне тем, что представля-
разделения. до просто установить сначала блоки- ет собой не перечень разных правил
Более правильным вариантом ра- ровку на А, а потом можно работать с с неясными граничными условиями
боты является продуманная стратегия Б и снова с А в своё удовольствие. На- применения, а содержит очень чёт-
блокировок. Но её нельзя делать без пример, это можно сделать так: кие алгоритмы.
хорошего представления о конкрет- 2. Блокировки SQL Server 7.0/2000 – тео-
ной системе и предметной области. declare @l tinyint select @l = 1 ↵ рия и практика устранения проблем
from A with (tablockx) ↵
Нужно знать, для каких запросов сго- where 1 = 2 (По материалам статьи KB224453
дятся «грязные данные» и какого рода Understanding and Resolving SQL
неточности тут могут возникнуть. Не- Менее понятно, что делать с дед- Server 7.0 or 2000 Blocking Prob-
которые проблемы можно лечить рас- локами в рамках одной таблицы. Ча- lems): http://www.sql.ru /articles /
становкой подсказки nolock или пе- сто они решаются четким указанием mssql/2004/04112301ResolvingBlo-
реводом целых процессов на низший режима уровня блокировок (pagelock, ckingProblems.shtml.
уровень изоляции транзакций. В дру- например). Тогда сервер не будет по- 3. Иван Бодягин. Deadlocks. Что такое
гих ситуациях может потребоваться ис- вышать эту блокировку до таблично- взаимоблокировки и как с ними бо-
правление существенных ошибок про- го уровня без крайней необходимости. роться (http://www.rsdn.ru/article/db/
ектирования. Например, представьте, Возможно, что придётся поработать с deadlocks.xml) – подробный анализ
что в одной таблице оказались дан- индексами и планами запросов, при- причин возникновения дедлоков, ме-
ные справочного типа, запрашивае- водящих к взаимной блокировке. Ну тоды диагностики и разрешения.
мые постоянно множеством процес- и наконец, самый надёжный способ 4. Полезные флаги трассировки SQL
сов и активно изменяемые, и важные борьбы с дедлоками на уровне табли- Server 7.0 и 2000 (по материалам
поля. Эта ситуация будет приводить к цы – это подсказка with (tablock) или статьи Randy Dyess «Documented
постоянным блокировкам – читающие изменение режима блокировок с по- and Undocumented Trace Flags for
процессы будут мешать изменяющим, мощью sp_indexoption. Конечно, про- SQL Server 2000 and 7.0»): http://
и наоборот. Одно из решений – выпол- изводительность в этой ситуации мо- www.sql.ru/articles/mssql/02080603
нять чтение справочных данных с фла- жет пострадать (а может и нет, зави- DocumentedAndUndocumentedTra-
гом nolock. Но если это почему-то не- сит от конкретной БД). Но зато дедло- ceFlagsForSQLServer.shtml.
приемлемо, то можно воспользовать- ков не будет наверняка. 5. Рассылка «MS SQL Server – дело
ся другим способом. А именно: разде- тонкое...» – http://subscribe.ru/cata-
лить эту таблицы на две, с созданием Проблемы на аппаратном log/comp.soft.winsoft.sqlhelpyouself.
на месте старой таблицы представле- уровне 6. Форум на сайте SQL.ru: http://
ния (view) с «instead of» триггерами. Как уже говорилось, решать эту про- w w w.sql.ru / forum /ac tualtopic s.
При этом процессы, запрашивающие блему должен не администратор базы aspx?bid=1.

№6, июнь 2005 47


bugtraq

Отказ в обслуживании в Nortel VPN Целочисленное переполнение


Router при обработке IKE-пакетов в небезопасной инициализации файлов
Программа: Nortel VPN Router версии до 5.05.200; Mod- в GDB
els 1010, 1050, 1100, 600, 1600, 1700, 1740, 2600, 2700, 4500, Программа: GDB версии до 6.3-r3.
4600 и 5000. Опасность: Низкая.
Опасность: Средняя. Описание: Обнаруженные уязвимости позволяют локаль-
Описание: Удаленный пользователь может послать марш- ному пользователю выполнить произвольный код на целе-
рутизатору один IKE-пакет со специально сформирован- вой системе.
ным ISAKMP-заголовком и вызвать отказ в обслуживании 1. По умолчанию приложение читает файл .gdbinit из те-
устройства. кущей рабочей директории. Локальный пользователь может
URL производителя: www.nortel.com. заманить целевого пользователя, запустившего приложе-
Решение: Установите последнюю версию от производи- ние в директорию со специально сформированным .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- в Symantec Brightmail AntiSpam
ries, Cisco Content Engine Module for Cisco 2600, 2800, 3600, Программа: Symantec Brightmail AntiSpam версии до
3700 и 3800 series Integrated Service Routers. 6.0.2.
Опасность: Низкая. Опасность: Низкая.
Описание: Уязвимость существует в реализации DNS во Описание: Уязвимость существует из-за того, что пароль
время декомпрессии сжатого DNS-сообщения. Удаленный на доступ к базе данных является статическим. Удален-
пользователь может с помощью специально сформирован- ный пользователь может получить доступ к сообщениям,
ного DNS-пакета, содержащего некорректную информацию, находящимся на карантине, и некоторой системной ин-
вызвать отказ в обслуживании устройства. формации.
URL производителя: www.cisco.com. URL производителя: www.symantec.com.
Решение: Установите исправление от производителя. Решение: Установите последнюю версию от производи-
теля.
Межсайтовый скриптинг и загрузка
произвольных файлов в CuteNews Удаленное выполнение
Программа: CuteNews все версии. произвольного кода в библиотеке
Опасность: Высокая. Computer Associates Vet
Описание: Удаленный пользователь может произвести Программа: CA InoculateIT 6.0 (all platforms including Notes/
XSS-нападение и выполнить произвольные команды на Exchange, CA eTrust Antivirus r6.0 all platforms including Notes/
целевой системе. Exchange, CA eTrust Antivirus r7.0 all platforms including Notes/
1. Уязвимость существует из-за некорректной обработ- Exchange, CA eTrust Antivirus r7.1 all platforms including Notes/
ки данных в некоторых значениях URL. Удаленный пользо- Exchange, CA eTrust Antivirus for the Gateway r7.0 all modules
ватель может внедрить произвольный HTML-сценарий и по- and platforms, CA eTrust Antivirus for the Gateway r7.1 all mod-
лучить файлы cookie, связанные с аутентификацией поль- ules and platforms, CA eTrust Secure Content Manager all releas-
зователя. Пример: es, CA eTrust Intrusion Detection all releases, CA BrightStor ARC-
http://[target]/index.php?mod=editnews&action=editnews&id=[id] serve Backup (BAB) r11.1 Windows, CA Vet Antivirus, Zonelabs
&source=<script>alert(document.cookie);</script> ZoneAlarm Security Suite, Zonelabs ZoneAlarm Antivirus.
2. Авторизованный пользователь может загрузить и вы- Опасность: Критическая.
полнить произвольный php-сценарий. Функция переимено- Описание: Библиотека Computer Associates Vet обеспечи-
вания изображений не проверяет имя входящего и исходя- вает возможность сканирования файлов на предмет об-
щего файлов, что делает возможным загрузить gif/jpg-файл наружения вирусов и позволяет антивирусным продуктам
с комментарием в виде php-кода () с последующей сменой анализировать различные потоки в поисках злонамерен-
расширения. Кроме того, отсутствие фильтрации символов ного ПО.
обхода каталога («../») делает возможным загрузку злона- Переполнение кучи обнаружено при обработке OLE-по-
меренного файла на каталог выше относительно уязвимого токов. Успешная эксплуатация уязвимости позволит злоу-
скрипта при наличии соответственных прав доступа мышленнику получить полный контроль над системой.
URL производителя: www.cutephp.com. Решение: Установите обновление от производителя.
Решение: Способов устранения уязвимости не существу-
ет в настоящее время. Составил Александр Антипов

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

MySQL 5 – ЧТО НОВОГО ПРЕДЛАГАЮТ


НАМ РАЗРАБОТЧИКИ?
10 лет, с 1995 года, нас критиковали за отсутствие
возможностей, присущих «настоящим» СУБД. Пятой
версией мы ответили на все вопросы сразу.

Дэвид Аксмарк, один из основателей MySQL

На лето запланирован выход новой, пятой версии популярнейшего сервера баз данных – MySQL.
Как правило, смена первой цифры в номере версии означает довольно радикальные перемены.
Это удивительно – возможности четвёртой ветки, появившейся чуть более года назад, освоены
и приняты ещё далеко не всеми разработчиками. И тем не менее уже сейчас MySQL 5 доступна
для тестирования в виде бета-версии. Что действительно нового предлагают её создатели?

КИРИЛЛ СУХОВ
«Просто набор индексированных файлов!», «недо-база дан- доступна в бета-версии пятой ветки, и основные из них мы
ных» – такие слова в адрес СУБД MySQL нередко можно с вами рассмотрим.
найти на форумах разработчиков. И приходится признать –
они имели под собой основание. MySQL при всех её досто- Хранимые процедуры
инствах (нетребовательность к ресурсам, быстродействие, Данной функциональности, пожалуй, больше всего не хва-
высокая производительность, на простых запросах, низкая тало разработчикам. Смысл применения хранимых проце-
стоимость владения) имела очевидные недостатки. Отсут- дур (stored procedures) и функций – сохранять на сервере
ствовали элементарные средства контроля целостности дан- скомпилированные блоки SQL-кода. После единожды на-
ных, не было механизма транзакций, да что там, не было да- писанной, отлаженной и скомпилированной процедуры или
же вложенных запросов, а о хранимых процедурах и тригге- функции, её можно вызывать из вашего приложения, пере-
рах приходилось только мечтать. давая на сервер вместо обычного запроса, только вызов
Положение изменилось с выходом версий 4.0 и 4.1. По- процедуры и аргументы. При этом не только снижаются за-
мимо вышеупомянутых вложенных запросов и транзакций траты на трафик и повышается производительность. Глав-
было осуществлено ещё множество нововведений. Появи- ное преимущество состоит в том, что бизнес-логика прило-
лась возможность задания кодировок на уровне базы дан- жения, возложенная на базу данных, становится прозрач-
ных, таблиц и столбцов, поддержка Unicode (utf8 и ucs2), ней и переносимей.
включён геометрический тип данных – GIS, введёно поня- Как процедуры, так и функции могут возвращать зна-
тие «подготовленных выражений» (prepared statements). чения (в виде набора записей). Различие состоит в том,
С выходом MySQL 5 нас ждут ещё более радикальные что функция вызывается из запроса, а процедура из от-
изменения. Разработчики из MySQL AB установили до- дельной команды.
вольно высокую планку – вплотную приблизиться к стан- На настоящий момент реализация хранимых процедур
дарту SQL:2003. Большая часть новых возможностей уже не поддерживает никаких внешних языков, но (по крайней

№6, июнь 2005 49


администрирование
мере, так заявляется) соответствует стандарту SQL:2003, и в результате запроса мы получим:
позволяющему применять условные конструкции, итера-
ции и обработку ошибок. mysql> SELECT * FROM t
Пример создания хранимой процедуры в MySQL 5: +----+
| s1 |
CREATE PROCEDURE p () +----+
LANGUAGE SQL | 6 |
NOT DETERMINISTIC | 6 |
SQL SECURITY DEFINER +------+
COMMENT 'A Procedure' <-- 2 rows in set (0.01 sec)
SELECT CURRENT _ DATE, RAND() FROM t
Кроме условных, возможны и любые циклические кон-
В данном случае мы создали процедуру с именем p, ко- струкции:
торая возвращает текущую дату и псевдослучайное чис-
ло из таблицы t. Пример ее вызова и возвращаемого ре- CREATE PROCEDURE p3 ()
BEGIN
зультата: DECLARE v INT;
SET v = 0;
WHILE v < 5 DO
mysql> call p2() INSERT INTO t VALUES (v);
SET v = v + 1;
+--------------+-----------------+ END WHILE;
| CURRENT_DATE | RAND() | END;
+--------------+-----------------+
| 2005-06-27 | 0.7822275075896 |
+--------------+-----------------+ Вызов процедуры:
1 row in set (0.26 sec)
Query OK, 0 rows affected (0.26 sec) mysql> CALL p3()
Чуть более сложный пример создания и использова- +------+
ния функции: | s1 |
+------+
…………
CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0) | 0 |
DETERMINISTIC
BEGIN | 1 |
DECLARE factorial DECIMAL(20,0) DEFAULT 1; | 2 |
DECLARE counter DECIMAL(3,0); | 3 |
SET counter = n; | 4 |
factorial _ loop: REPEAT +------+
SET factorial = factorial * counter; Query OK, 1 row affected (0.00 sec)
SET counter = counter - 1;
UNTIL counter = 1
END REPEAT; Также применимы итерации, переходы, словом, всё, что
RETURN factorial; предполагает стандарт.
END
Внутри функций и хранимых процедур осуществлена
В приложении: реализация курсоров, но, к сожалению, она пока ограни-
чена (ASESITIVE, READ ONLY и NONSCROLL):
INSERT INTO t VALUES (factorial(pi))
SELECT s1, factorial (s1) FROM t CREATE PROCEDURE p25 (OUT return _ val INT)
UPDATE t SET s1 = factorial(s1) BEGIN
WHERE factorial(s1) < 5 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;
CREATE PROCEDURE p1 (IN parameter1 INT) SET return _ val = a;
BEGIN END;
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; <-- лированные SQL-запросы, хранимые на сервере. Отличие со-
ELSE стоит в том, что триггер начинает работать в ответ на опреде-
UPDATE t SET s1 = s1 + 2;
END IF; лённое событие, а именно на запросы UPDATE и DELETE.
END; Пример создания и работы триггера:

Вызов процедуры теперь будет таким: CREATE TABLE t22 (s1 INTEGER)

CREATE TRIGGER t22 _ bi


mysql> CALL p2(0) // Query OK, 2 rows affected (0.28 sec) BEFORE INSERT ON t22

50
администрирование
FOR EACH ROW возможность в MySQL достигалась различными SHOW-ко-
BEGIN
SET @x = ‘Trigger was activated!’; мандами, но такой подход имеет очевидные недостатки. Эти
SET NEW.s1 = 55; команды нельзя использовать в простых запросах с соеди-
END;
нениями, и, что существенно, они не соответствовали стан-
После этого при выполнении запросов получим: дартам, будучи специфичными для MySQL.
В новой версии СУБД появилась новая служебная ба-
mysql> INSERT INTO t22 VALUES (1) за данных – INFORMATION_SCHEMA. Её наличие продик-
mysql> SELECT @x, t22.* FROM t22 // вызывается триггер
товано тем же стандартом SQL:2003, и именно она реша-
+------------------------+------+
| @x | s1 |
ет задачу реализации словаря данных (data dictionary). IN-
+------------------------+------+ FORMATION_SCHEMA содержит таблицы, описывающие
| Trigger was activated! | 55 | состояние и параметры сервера, в том числе определения
+------------------------+------+
1 row in set (0.00 sec) и сущности таблиц. Это виртуальная база данных – физи-
чески (в виде файлов на диске) она не существует, вся ин-
К сожалению, на данный момент триггеры в MySQL мо- формация динамически предоставляется сервером. При-
гут обращаться только к своей таблице. Это, конечно, не де- мер использования этой таблицы:
лает данный механизм совсем бесполезным, но существен-
но сужает его возможности. Тради Пелзер (Trudy Pelzer) из mysql> SELECT table _ name, table _ type, engine
-> FROM INFORMATION _ SCHEMA.tables
MySQL AB заявляет, что разработчики трудятся сейчас над -> WHERE table _ schema = ‘tp’
снятием этого ограничения, но достигнут ли они результа- -> ORDER BY table _ type ASC, table _ name DESC;
тов к моменту релиза пятой версии, не сообщается. +------------+------------+--------+
| table_name | table_type | engine |
Представления +------------+------------+--------+
| t2 | BASE TABLE | MyISAM |
Представления (views) можно сравнить с временными табли- | t1 | BASE TABLE | InnoDB |
цами, наполненными динамически формируемым содержи- | v1 | VIEW | NULL |
+------------+------------+--------+
мым. В общем-то, неименованные представления (те самые
вложенные запросы) были доступны ещё в версии 4.1. В на- Другой пример работы со словарём данных – просмотр
стоящей реализации есть две возможности создания пред- привелегий:
ставлений: с использованием алгоритма временных таблиц
MySQL и с созданием самостоятельной таблицы. Нас инте- 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
есть команды SELECT, UPDATE, DELETE, можно применять 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
шего (и потому абсолютно бесполезного) представления:

mysql> CREATE VIEW v AS SELECT column1 FROM t; Заключение


Query OK, 0 rows affected (0.01 sec) Темп, взятый командой MySQL AB два года назад, впечатляет.
Полным ходом идёт работа над MySQL 5.1, в которой планиру-
mysql> INSERT INTO v VALUES (1);
ется осуществить такие возможности, как поддержка внеш-
Query OK, 1 row affected (0.00 sec) них ключей (foreign key) для всех типов таблиц (в настоящий
mysql> SELECT * FROM v;
момент она существует только для таблиц InnoDB), новые схе-
мы репликации (online backup) и кэширования таблиц и мно-
+---------+
| column1 |
гое другое. Более того, в разделе официального руководства
+---------+ по MySQL (MySQL Reference Manual), озаглавленном «Что
| 1 | не планируется реализовать?», прямо сказано, что таких за-
+---------+
1 row in set (0.00 sec) дач просто нет – реализовать планируется всё! Существует,
правда, мнение, что новые возможности MySQL нивелируют
её основные преимущества, такие как быстродействие, про-
Словарь данных стота и нетребовательность к ресурсам. Возможно, в чём-то
Иметь доступ к значениям метаданных – совершенно не- критики и правы, но пока разработчикам удавалось этого из-
обходимое требование к современной СУБД. Ранее такая бежать. Будем, надеяться, что удастся и далее.

№6, июнь 2005 51


bugtraq

Межсайтовый скриптинг в Sambar Server Отравление DNS-кеша и установка


Программа: Sambar Server 6.2 NetBIOS-подключения в Microsoft Internet
Опасность: Низкая. Security and Acceleration (ISA) Server
Описание: Уязвимость существует из-за недостаточной Программа: Microsoft Internet Security and Acceleration (ISA)
фильтрации некоторых входных данных. Удаленный поль- Server.
зователь может с помощью специально сформированного Опасность: Низкая.
URL выполнить произвольный HTML-сценарий в браузере Описание: Две уязвимости обнаружены в Microsoft Internet
жертвы в контексте безопасности уязвимого сайта. Security and Acceleration (ISA) Server. Удаленный пользова-
URL производителя: http://www.sambar.com. тель может отравить кеш. Удаленный пользователь может
Решение: Установите последнюю версию (6.2.1) с сайта также установить NetBIOS-подключение к ISA Server.
производителя. Сервер с ошибками обрабатывает HTTP-заголовки. Уда-
ленный пользователь может представить специально сфор-
Отказ в обслуживании в Microsoft мированный HTTP-запрос, содержащий множество Content-
ISA Server 2000 Length-заголовков, чтобы отравить кеш целевого ISA serv-
Программа: Microsoft ISA Server 2000 SP2; Wspsrv.exe вер- er [CVE: CAN-2005-1215]. В результате возможно получить
сии до 3.0.1200.411. доступ к содержанию, которое блокируется сервером, или
Опасность: Средняя. заставить целевого пользователя посетить просмотреть
Описание: Уязвимость существует, когда клиентские рабо- произвольную информацию.
чие станции являются SecureNAT-клиентами для ISA-серве- Удаленный пользователь может использовать все пред-
ра. Большое количество трафика, генерируемого клиента- установленные NetBIOS-фильтры, чтобы установить Net-
ми, может вызвать отказ в обслуживании ISA-сервера. BIOS-подключение к целевому ISA Server [CVE: CAN-20-
URL производителя: www.microsoft.com. 05-1216].
Решение: Установите исправление от производителя: http:// URL производителя: www.microsoft.com.
support.microsoft.com/kb/894864/EN-US. Решение: Установите соответствующее обновление.

Переполнение буфера и обход каталога Переполнение буфера в Meteor


в FutureSoft TFTP Server 2000 FTP-сервере
Программа: FutureSoft TFTP Server 2000 версия 1.0.0.1. Программа: Meteor FTP Server 1.5
Опасность: Критическая. Опасность: Высокая.
Описание: Обнаруженные уязвимости позволяют удален- Описание: Переполнение буфера обнаружено при обра-
ному пользователю получить доступ к потенциально важ- ботке команд USER, PASS и PORT. Удаленный пользова-
ным данным и скомпрометировать систему. тель может с помощью специально сформированных ко-
1. Переполнение стека возможно из-за ошибки при об- манд вызвать переполнение буфера и вызвать отказ в об-
работке запросов на чтение и запись. Удаленный пользова- служивании или выполнить произвольный код на целевой
тель может в качестве имени файла указать слишком длин- системе. Пример:
ную строку, вызвать переполнение стека и выполнить про- USER (A x 80) (Following 4 Bytes = New Return Point)
извольный код с привилегиями пользователя SYSTEM. PASS 0wn3r
PORT 127,0,0,1,18,12 (Must be same as connecting IP)
2. Отсутствует фильтрация символов обхода каталога.
Удаленный пользователь может выйти за пределы корне- Решение: Способов устранения уязвимости не существу-
вого каталога TFTP-сервера и получить доступ к потенци- ет в настоящее время.
ально важным данным на целевой системе.
Решение: Способов устранения уязвимости не существу- Переполнение буфера в IBM WebSphere
ет в настоящее время. Application Server
Программа: IBM WebSphere Application Server 5.0.
Поднятие локальных привилегий Опасность: Высокая.
в Антивирусе Касперского Описание: Два переполнения буфера существуют в адми-
Программа: Антивирус Касперского версии 5.0.227, 5.0.228 нистративной консоли сервера при обработке данных в ко-
и 5.0.335 для Windows 2000. дировке Unicode при включенной опции ‘global security op-
Опасность: Низкая. tion’. Удаленный пользователь может послать специаль-
Описание: Программа не снимает бит Супервизора со стра- но сформированные данные на порты 9080 (HTTP), 9090
нички драйвера klif.sys. В результате уязвимость позволя- (HTTP) и 9043 (HTTPS) приложения, чтобы вызвать пере-
ет локальному пользователю подгрузить динамическую би- полнение буфера и выполнить произвольный код на целе-
блиотеку, которая будет выполнена в адресном простран- вой системе.
стве процесса с высоким уровнем привилегий. URL производителя: www.ibm.com.
URL производителя: www.kaspersky.ru. Решение: Установите последнюю версию (5.0.2.11) с сай-
Решение: Способов устранения уязвимости не существу- та производителя.
ет в настоящее время.
Составил Александр Антипов

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

FreeBSD TIPS: ПОВЫШАЕМ БЕЗОПАСНОСТЬ


С ПОМОЩЬЮ ОДНОРАЗОВЫХ ПАРОЛЕЙ

Одним из «узких мест» в плане защиты информации является использование системного


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

СЕРГЕЙ СУПРУНОВ

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

№6, июнь 2005 53


администрирование
Система FreeBSD предоставляет еще один удобный ин- Adding test:
струмент – одноразовые пароли. Начиная с FreeBSD 5-й Only use this method from the console; NEVER from remote.
If you are using telnet, xterm, or a dial-in, type ^C now or exit
версии, они реализуются системой OPIE (One-time Pass- with no password.
words In Everything), основанной на S/Key. Замечу, что OPIE Then run opiepasswd without the -c parameter.
существует и в большинстве дистрибутивов Linux, так что Using MD5 to compute responses.
Enter new secret pass phrase:
все описанное вы можете применить в этих системах. Од- Again new secret pass phrase:
нако для конкретизации изложения я буду описывать имен-
ID test OTP key is 499 ko6010
но реализацию OPIE на FreeBSD 5.3. RACE DAYS CHEF ARE CAW LEAF

В чем заключается идея Ключ -c дает команду создать запись для пользовате-
В общих чертах это выглядит следующим образом: при по- ля, в данном случае это пользователь test. Если имя поль-
пытке войти на сервер после ввода имени пользователя зователя не указано, создается (или изменяется) запись
вы получаете строку-оклик, содержащую номер итерации для текущего пользователя. Обычный пользователь мо-
и некоторую последовательность символов – так называ- жет управлять своей записью, root – записями всех поль-
емое «зерно» (seed): зователей.
Перед началом работы выводится предупреждение, что
login as: serg утилиту opiepasswd следует запускать только в защищен-
otp-md5 496 ko5622 ext
Password: ном режиме (с физической консоли или через ssh), чтобы
исключить возможность перехвата секретной фразы. Зна-
Далее вам нужно ввести парольную фразу (отзыв), со- ние данной фразы позволит любому человеку сгенериро-
ответствующую указанному номеру и «зерну». Для генера- вать одноразовый пароль для входа под вашим именем.
ции паролей используется утилита opiekey (поэтому одно- После всех предупреждений запрашивается секрет-
разовые пароли на жаргоне иногда называют «опиками»). ная фраза. Она понадобится вам в дальнейшем для гене-
Ей нужно передать текущий номер последовательности и рации паролей и управления своей записью. Утилита тре-
«зерно», затем будет запрошена секретная фраза (она за- бует, чтобы длина этой фразы была от 10 до 127 символов,
дается во время активации учетной записи пользователя) иначе вы получите сообщение об ошибке:
и выведен список шести коротких слов, которые и являют-
Secret pass phrases must be between 10 and 127 characters long.
ся одноразовым паролем-отзывом.
В отличие от системного пароля одноразовый нечув- В конце работы утилита выдает текущие номер после-
ствителен к регистру символов, так что вводить его можно довательности (по умолчанию – 499) и слово-«зерно», в
и маленькими буквами. данном примере – ko6010. Запоминать эти значения не нуж-
Если в ответ на первое приглашение «Password:» про- но – они будут выводиться на экран при каждой попытке
сто нажать <Enter>, то появится еще одно, с включенным войти в систему. Последней строкой выводится парольная
эхо-отображением вводимых символов, что позволит вам фраза, которая к данному моменту уже бесполезна и слу-
видеть вводимый текст на экране. жит только для проверки, – следующий номер последова-
При следующем входе номер последовательности умень- тельности устанавливается в 498.
шится, и вводить нужно будет уже другой отзыв. Таким об- Обратите внимание, что как только счетчик достигнет
разом, вам не нужно заботиться о сохранности одноразо- 0, вход в систему станет невозможным. Поэтому необходи-
вого пароля после того, как он будет использован, – вы мо- мо заблаговременно осуществлять повторную инициали-
жете смело разложить листок с паролем на столе в присут- зацию записи в /etc/opiekeys, для чего используется opie-
ствии пользователя, включить эхо-повтор вводимых сим- passwd без ключей. Также с помощью ключа -n вы може-
волов и, ни от кого не прячась, спокойно набирать пароль- те задать начальное значение счетчика. Замечу, что пере-
ную фразу. Поскольку после нажатия <Enter> данный па- инициализация выполняется без запроса секретной фра-
роль теряет свою актуальность, его знание уже никому ни- зы (она остается прежней). Используются только однора-
чего не дает. зовые пароли, так что повторная инициализация может
Собственно, основная идея использования одноразо- быть выполнена и удаленно, с использованием небезопас-
вых паролей как раз и заключается в том, что никакая се- ного соединения.
кретная информация (в данном случае таковой является Также утилита opiepasswd используется для дезакти-
секретная фраза, на основе которой осуществляется ге- вации записи того или иного пользователя. Для этого ис-
нерация паролей) по сети не передается. пользуется ключ -d. Дезактивация не удаляет запись поль-
зователя из файла opiekeys, а просто «забивает» секрет-
Приступаем к реализации ную фразу звездочками. Теперь при входе пользователя в
Во FreeBSD уже все готово для использования одноразо- систему по-прежнему будет выдаваться строка-«оклик»,
вых паролей. Достаточно создать для пользователей, ко- но получить для нее правильную парольную фразу будет
торые будут работать по данной схеме, соответствующие уже невозможно.
записи в файле /etc/opiekeys. Чтобы полностью отменить запрос на ввод одноразово-
Новая запись создается следующей командой: го пароля и вернуться к прежней аутентификации систем-
ным паролем, достаточно удалить для соответствующего
root# opiepasswd -c test пользователя строку в файле /etc/opiekeys.

54
администрирование
Следующая утилита, которая может быть полезна, – работе в незащищенном режиме. Поэтому к вопросу разда-
opieinfo. Она возвращает текущие значения номера после- чи прав следует относиться очень внимательно.
довательности и «зерна» для пользователя. Например, ее Более тонко процедуру входа в систему можно опре-
можно использовать, перед тем как генерировать пароли. делить в настройках PAM (см. /etc/pam.d/system и прочие
Утилита opiekey имеет несколько полезных ключей. На- файлы). Нужно заметить, что не все приложения могут ра-
пример, с помощью ключа -n можно указать, сколько па- ботать с одноразовыми паролями. Например, во FreeBSD
ролей должно быть сгенерировано начиная с текущего но- утилиты login, su, ssh, telnetd поддерживают аутентифика-
мера итерации: цию OPIE, popper – нет (но если вход с системным паролем
разрешен, проблем с использованием этой программы не
serg$ opieinfo возникает). По умолчанию, если поддержка OPIE каким-
498 ko5623 то сервисом имеется, в соответствующем файле каталога
/etc/pam.d будет присутствовать pam_opie.so.
serg$ opiekey -n 5 498 ko5623 Попытка аутентификации на FTP-сервере (FreeBSD 5.3,
Using the MD5 algorithm to compute response. стандартный ftpd) с одноразовым паролем выявила инте-
Reminder: Don't use opiekey from telnet or dial-in sessions. ресную проблему – с помощью клиента ftp вход по «опику»
Enter secret pass phrase:
494: LOOK RUSH WIFE BREW ROBE LAM
выполнялся нормально, а вот попытка войти под системным
495: TERN MOCK MA LED PA MELD паролем (например, с использованием менеджера FAR) за-
496: NIL FALL AKIN FUSE MIND SLUR вершалась неудачей, хотя настройки позволяли использо-
497: GINA MOP AKIN SHAW CALF COMA
498: FLY GONE GAB MYRA WONT SANK вание системного пароля. Разбор полета показал, что про-
блема заключается в разрешении имен. Происходило сле-
Теперь эти пароли можно аккуратно сохранить в на- дующее – в процессе установки соединения IP-адрес кли-
дежное место и ехать с ними в командировку или к кли- ента преобразовывался в доменное имя типа client.domain.
енту – средство для пяти безопасных входов в систему у provider.ru, которое обрезалось до client.domain, после чего
вас есть. система пыталась определить IP-адрес этого «хоста», что-
Естественно, генерировать пароли можно и по мере бы установить права на вход с системным паролем в со-
необходимости, например, на своем домашнем компью- ответствии с /etc/opieaccess. Это, естественно, не получа-
тере или ноутбуке с помощью соответствующей утилиты. лось, и возвращалась ошибка «Неизвестный хост client.do-
Но к такому инструменту предъявляются серьезные тре- main». Если же вход на сервер FTP выполнялся с машины,
бования безопасности, поскольку во время генерации вы адрес которой не присутствует в базе DNS, то все работа-
должны быть уверены, что никто не узнает вашу секрет- ло отлично. Вылечить это удалось добавлением следую-
ную фразу. щей строчки в /etc/resolv.conf:
Вы можете настроить вход в систему как исключительно
по одноразовым паролям, так и разрешив использование options ndots:3
постоянных паролей, предоставив пользователю право вы-
бирать в зависимости от ситуации, как входить в систему. Эта строка заставляет функции разрешения имен (см.
Например, вам может быть удобнее вводить системный па- man resolver) возвращать в качестве доменного имени часть
роль при работе из офиса, а «опики» использовать при не- имени хоста до третьей точки, то есть целиком. По умол-
обходимости зайти на сервер с «чужой» территории. чанию параметр ndots равен 1, что и приводило к описан-
Для определения возможных способов доступа исполь- ной выше ситуации. Во FreeBSD 5.4 данная проблема уже
зуется файл /etc/opieaccess. По умолчанию, как только для не наблюдается.
пользователя появляется запись в /etc/opiekeys, он уже не В заключение замечу, что на моей системе права досту-
может пользоваться системным паролем. па к файлу /etc/opiekeys по умолчанию были установлены в
Чтобы разрешить вход по обоим паролям, нужно в opie- rw-r--r--, что позволяло читать его абсолютно всем. Посколь-
access создать запись типа permit для нужных адресов. На- ку данный файл хранит, хоть и в зашифрованном виде, клю-
пример, чтобы разрешить вход под системным паролем из чевую фразу, которая используется при генерации однора-
локальной сети, а для внешних соединений оставить только зовых паролей, то такой либеральный доступ к нему выгля-
«опики», можно использовать следующую строку: дит не самой лучшей идеей. Возможно, это необходимо для
работы некоторых утилит, но в моем случае после установки
permit 192.168.0.0 255.255.255.0 прав в rw------- никаких проблем пока не обнаружилось.
# permit 0.0.0.0 0.0.0.0
И, несмотря на банальность того, что я сейчас скажу,
Закомментированная строка разрешит использование считаю своим долгом предупредить – любые действия, свя-
обоих типов паролей с любого адреса. Правило deny по- занные с изменением порядка входа в систему, должны вы-
зволяет явно запретить использование системного паро- полняться осознанно и с предельной осторожностью. В слу-
ля для указанной подсети. чае с OPIE нужно очень постараться, чтобы полностью за-
Обратите внимание, что разрешение вводить системные блокировать себе доступ в систему. Но тем не менее всег-
пароли делает возможным использование уже скомпроме- да полезно иметь запасной вариант, например, создать для
тированного пароля, сводя на нет преимущества системы использования одноразовых паролей другую учетную за-
OPIE. Единственное, что при этом достигается,– это суще- пись и, лишь убедившись в ее работоспособности, перево-
ственное снижение вероятности раскрыть свой пароль при дить на новую схему остальных пользователей.

№6, июнь 2005 55


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

ИЗУЧАЕМ ПРИНЦИП РАБОТЫ


НЕIMDAL KERBEROS
Как только ваша подконтрольная локальная сеть начнет развиваться и расширяться,
возникнут новые задачи: Как синхронизировать системные учетные записи растущего числа
пользователей? Как управлять доступом пользователей к сетевым сервисам внутри локальной
сети? При этом сервисы могут работать на разных компьютерах, а определенные службы
держат собственные учетные записи для авторизованных пользователей. Решением послужит
введение единой системы регистрации в локальной сети с помощью протокола Kerberos.

МИХАИЛ КОНДРИН

Ч
тобы подробнее разобраться с возникающими зада- настройками вычислительных кластеров. Но именно эта
чами, рассмотрим ситуацию с организацией распре- проблема построения распределенной вычислительной
деленной вычислительной системы. Разумеется, чем системы Athena заставила в начале 80-х годов програм-
больше компьютеров входят в кластер, тем выше его вы- мистов из Массачусетского технологического института
числительная мощность. Наиболее распространненные си- разработать и внедрить протокол удаленной аутентифи-
стемы кластерных вычислений на сегодня – Parallel Virtual кации пользователей. Комбинирование специальных крип-
Machine и Message Passing Interface. Обе позволяют пользо- тографических средств позволяло, с одной стороны, све-
вателю, в данном случае разработчику программ, пересы- сти на нет вероятность перехвата паролей и иметь шиф-
лать куски данных, нуждающихся в обработке, между узла- рованный канал для передачи данных между компьютера-
ми кластера и синхронизировать получение результатов с ми (эта возможность могла отключаться по желанию поль-
разных узлов. Это фасад системы. За кулисами происхо- зователя). А с другой – иметь систему с единой регистра-
дит обращение к удаленному командному интерпретатору и цией (single sign-on), что дает возможность пользователю
вызов определенных программ в нем. То есть администра- регистрироваться один раз при входе в систему и в даль-
тору такой системы необходимо добиться, чтобы пользо- нейшем иметь свободный доступ к сетевым ресурсам на
ватели кластера имели доступ к командному интерпрета- основе этой регистрации.
тору на узлах кластера и, более того, этот доступ должен Понятно, что число пользователей, которым такая функ-
быть беспарольным для каждой пары компьютеров в кла- циональность была бы удобна, значительно превышает чис-
стере. Не очень-то удобна система, где запуск нескольких ло нуждающихся в распределенных системах, и в дальней-
параллельных копий программы требует от пользователя шем этот протокол, получивший название Kerberos (по име-
регистрации на каждом из узлов кластера. ни трехголового пса из древнегреческих мифов, стерегу-
Таким образом, во-первых, информация о пользовате- щего вход в царство мертвых), стал широко применяться
лях должна совпадать на всех этих компьютерах. Один из независимо от Athena как система регистрации в крупных
вариантов решения – иметь одинаковые копии /etc/passwd финансовых и академических учреждениях.
и /etc/shadow на каждом из узлов с их последующим обнов-
лением с помощью скриптов при добавлении нового пользо- Kerberos с точки зрения пользователя
вателя. Во-вторых, если в качестве удаленного командного На пользовательском уровне все реализации Kerberos вы-
интерпретатора используется rsh, то добиться беспароль- глядят однотипно, поэтому рассмотрим, как это происходит
ного входа с помощью внесения всех компьютеров, входя- в моем случае. Регистрация в Kerberos осуществляется ко-
щих в этот кластер, в файл /etc/hosts.equiv (этот файл так- мандой kinit, которая автоматически вызывается при моем
же должен совпадать на всех узлах кластера). Однако ис- входе на рабочую станцию под управлением Windows XP. В
пользование rsh гарантирует вам проблемы с безопаснос- результате мне выдается основной документ, удостоверя-
тью, если предположить возможность доступа к кластеру ющий мою личность в Kerberos, – «супербилет», билет, га-
извне локальной сети, который, как вы помните, должен рантирующий получение доступа к сетевым службам (или
быть беспарольным. Можно сконфигурировать доступ по TGT – ticket granting ticket). При этом у меня всегда есть воз-
адресу компьютера (с помощью tcp-wrappers) и бороться с можность зарегистрироваться в Kerberos под другим име-
ip-spoofing внешними средствами или настраивать openssh нем с помощью все той же команды kinit, что приводит к об-
в качестве удаленного командного интерпретатора. В по- новлению начального билета. Теперь предположим, что я
следнем случае вам придется мириться с тем, что процес- хочу посмотреть логи на своем router/firewall под управле-
сорные циклы будут расходоваться не на расчет, а на коди- нием Linux. Я открываю терминал cygwin. Первое, что мож-
рование/раскодирование блоков данных. Тем не менее ни но сделать, – просмотреть имеющиеся билетики:
одно из этих решений нельзя считать удачным.
Далеко не каждому из вас приходится сталкиваться с mike@alex ~\$ klist

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

История создания Kerberos экспорт уже не действовали. В 1997 году группа програм-
В 1983 году была начата работа по созданию системы Athe- мистов из Стокгольмского Королевского университета, взяв
na. Работу финансировали компании IBM и DEC, и в 1987 го- за основу Bones, проделала обратную работу и вставила не-
ду была выпущена первая версия протокола Kerberos (Kerbe- достающую криптографическую функциональность. Вот так
ros 4). Дальнейшая эксплуатация выявила недостатки про- экспортные ограничения Соединенных Штатов способство-
токола, и обновленный вариант Kerberos 5 вышел в свет в вали развитию европейского hi-tech. Впоследствии ими же
1993 году. В настоящее время 4 версия практически не ис- была выпущена реализация протокола Kerberos 5, получив-
пользуется, но в реализациях протокола от МТИ совмести- шая название Heimdal. Heimdal (Хеймдалль) – это божество
мость с предыдущей версией продолжает сохраняться. К из скандинавского пантеона, чьи функции состояли в охра-
1993 году протокол Kerberos уже завоевал популярность, и не стратегических коммуникаций, а именно – моста, разде-
многие компании, разработчики программного обеспечения ляющего Асгард и Мидгард. Так же, как и в случае с древ-
стремились использовать его в своих программных продук- негреческим прототипом Kerberos, здесь эксплуатируется
тах. Но тут имел место юридический казус – дело в том, что образ неподкупного стража. Интересно отметить, что мо-
в то время в США еще действовали законы, введенные еще тивом для программистов из Стокгольмского университе-
во время холодной войны, запрещающие экспорт военных та, так же как и для их коллег из МТИ, являлась задача обе-
технологий. Поскольку криптографическая защита, исполь- спечения публичного доступа к вычислительному класте-
зованная в Kerberos, классифицировалась как военная тех- ру. Последним эпизодом из истории Kerberos стало объяв-
нология, это создавало препятствия для использования его ление компанией Microsoft в 1999 году о поддержке Kerber-
в программных продуктах сторонних фирм и распростране- os в своей будущей операционной системе NT 5.0 (впослед-
ния его за пределами США. Для решения этой проблемы бы- ствии названной Windows 2000), что действительно было ре-
ла выпущена версия протокола Kerberos 4, из которого бы- ализовано в качестве компонента Active Directory. В насто-
ла изъята вся сильная криптография. Эта реализация Kerb- ящее время Kerberos является промышленным стандартом
eros получила название Bones (кости), и ограничения на ее удаленной аутентификации пользователей.

Credentials cache: FILE:/tmp/krb5cc_1017 ски очищает кэш на удаленном компьютере с помощью вы-
Principal: mike@HPPI.TROITSK.RU зова команды kdestroy, так что вы можете не опасаться, что
Issued Expires Principal ваш кэш может быть использован кем-то еще. Так как супер-
May 29 22:18:22 May 30 22:18:22 krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU
билет по-прежнему со мной, то это позволяет мне получить
В списке, как вы видите, имеется только один билет – доступ к другому компьютеру, серверу Kerberos.
тот самый TGT. Credential Cache – это файл, в котором хра-
нятся полученные мной сертификаты. По умолчанию его \$telnet -F kenga
название – это комбинация /tmp/krb5cc_ и id пользовате- Trying 192.168.1.253...
ля. Срок действия любого билетика ограничен по време- Connected to kenga.hppi.troitsk.ru.
Escape character is '^]'.
ни – это снижает интерес к его перехвату со стороны зло- Waiting for encryption to be negotiated...
умышленника. Теперь я запускаю командный интерпрета- [ Trying mutual KERBEROS5 (host/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU)... ]
[ Kerberos V5 accepts you as ``mike@HPPI.TROITSK.RU'' ]
тор на удаленном компьютере: [ Kerberos V5 accepted forwarded credentials ]
Encryption negotiated.
mike@kenga:~\$
\$ telnet -F relay
Trying 192.168.1.254... Точно так же я могу получить доступ к любому сетевому
Connected to relay.hppi.troitsk.ru.
Escape character is '^]'.
сервису – например, к локальному ftp-серверу.
Waiting for encryption to be negotiated...
[ Trying mutual KERBEROS5 (host/relay.hppi.troitsk.ru@HPPI.TROITSK.RU)... ] mike@kenga:~\$ ftp kenga
[ Kerberos V5 accepts you as ``mike@HPPI.TROITSK.RU'' ]
[ Kerberos V5 accepted forwarded credentials ]
Connected to kenga.hppi.troitsk.ru.
Encryption negotiated.
220 kenga FTP server (Version 6.00+Heimdal 0.6.3) ready.
\$klist Trying GSSAPI...
Authenticated to <host/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU>
Credentials cache: FILE:/tmp/krb5cc_1000 Authentication successful.
Principal: mike@HPPI.TROITSK.RU
Issued Expires Principal Name (kenga:mike):
May 29 22:21:16 May 30 22:18:22 krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU S:232-Linux 2.4.25.
S:232 User mike logged in.
S:230 Password not necessary
Вот пример магии Kerberos в действии – воспользовав- Remote system type is UNIX.
шись моим супербилетом, Kerberos прозрачно для пользо- Using binary mode to transfer files.
вателя организует доступ к сетевому ресурсу (в данном слу- ftp> bye
S:221 Goodbye.
чае он фигурирует под именем host/relay.hppi.troitsk.ru@HPPI.
TROITSK.RU) и более того – telnet при помощи Kerberos ав- Заметьте, что во всех случаях мне не потребовался ввод
томатически шифрует весь сетевой трафик между клиентом пароля. Доступ ко всем компьютерам мне предоставлялся
и сервером. Список билетов при этом не меняется – ключ -F на основании моего TGT. Все операции c Kerberos (выдача
позволяет перемещать имеющиеся у меня билетики с ком- билетов, добавление/удаление пользователей и т. д.) фик-
пьютера на компьютер. Закрытие telnet-сессии автоматиче- сируются в его логах, и можете убедиться, что вся моя ак-

№6, июнь 2005 57


безопасность
тивность с перемещениями от компьютера к компьютеру ных и упакованных шифровальных ключей. В Kerberos как
зафиксирована в файле /var/log/krb5kdc.log. Для удобства пользователь, так и сетевая служба не различаются меж-
я разделил кусок log-файла на 4 части, соответствующие ду собой и именуются principal (принципал – юридический
процессам получения доступа к моей рабочей станции, уда- термин, означающий лицо, поручающее агенту совершить
ленного доступа к двум серверам и серверу ftp. сделку от его имени), что весьма точно описывает функции
2005-05-29T22:18:22 AS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.45 принципалов в Kerberos. Принципалы определяются своим
for krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU именем и паролем, причем в случае сетевой службы в ка-
2005-05-29T22:18:22 Using des-cbc-crc/des-cbc-md5
2005-05-29T22:18:22 Requested flags: renewable_ok, renewable, forwardable честве этого пароля выступает ключ, хранящийся на том же
2005-05-29T22:18:23 sending 574 bytes to IPv4:192.168.1.45 компьютере, где работает защищаемый сервис. База данных
2005-05-29T22:18:23 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.45
for krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU [renewable, forwardable] принципалов хранится на сервере Kerberos, и при необходи-
2005-05-29T22:18:23 sending 593 bytes to IPv4:192.168.1.45 мости проверить аутентичность пользователя или сервиса,
......
2005-05-29T22:21:15 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.45 компьютеры, объединенные в сектора (realms), соединяются
for host/relay.hppi.troitsk.ru@HPPI.TROITSK.RU с этим сервером. По поводу терминологии: точный перевод
2005-05-29T22:21:16 sending 546 bytes to IPv4:192.168.1.45
2005-05-29T22:21:16 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.45 «realm» («царство») применительно к Kerberos не прижился, а
for krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU [forwarded, forwardable]
2005-05-29T22:21:16 sending 589 bytes to IPv4:192.168.1.45
иногда используемый термин «домен» не кажется мне удач-
...... ным, поскольку слово и так перегружено. Так же, как и в слу-
2005-05-29T22:21:43 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.254
for host/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU
чае с DNS, главный контроллер сектора Kerberos (Key Distri-
2005-05-29T22:21:44 sending 550 bytes to IPv4:192.168.1.254 bution Center, KDC, центр выдачи ключей) может иметь как
2005-05-29T22:21:44 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.254
for krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU [forwarded, forwardable] дополнительные, slave, контроллеры (что позволяет обеспе-
2005-05-29T22:21:44 sending 593 bytes to IPv4:192.168.1.254 чить бесперебойную работу при выходе из строя основного
......
2005-05-29T22:22:27 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.253 контроллера), так и в одиночку держать несколько секторов.
for ftp/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU Типичное имя принципала, например, сервиса удаленного
2005-05-29T22:22:27 Server not found in database:
ftp/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU: No such entry in the database доступа к командному интерпретатору компьютера, выгля-
2005-05-29T22:22:27 sending 145 bytes to IPv4:192.168.1.253 дит таким вот образом: host/kdc.myrealm.ru@MYREALM.RU,
2005-05-29T22:22:27 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.253
for host/kenga.hppi.troitsk.ru@HPPI.TROITSK.RU что обозначает сервис с основным именем (primary name)
2005-05-29T22:22:27 sending 550 bytes to IPv4:192.168.1.253 host и характеристикой (instance) kdc.myrealm.ru, принадле-
2005-05-29T22:22:28 TGS-REQ mike@HPPI.TROITSK.RU from IPv4:192.168.1.253
for krbtgt/HPPI.TROITSK.RU@HPPI.TROITSK.RU [forwarded, forwardable] жащий сектору MYREALM.RU. Разделение имен принципа-
2005-05-29T22:22:28 sending 546 bytes to IPv4:192.168.1.253
лов на несколько частей позволяет различать, с одной сто-
Вы можете сказать: «Как же так – протоколы telnet и ftp роны, разные службы, работающие на одном хосте (с помо-
небезопасны и правильнее использовать openssh. И ничего щью primary name, host в нашем случае). А с другой – сре-
удивительного в беспарольной аутентификации нет – ту же ди нескольких однотипных служб, работающих в сети, вы-
самую функциональность обеспечивает ssh, предоставляя бирать конкретную, запущенную на определенном сервере
возможность регистрироваться по парам публичных/секрет- (с помощью поля instance, которая в нашем случае совпада-
ных ключей». Все правильно. Только для того, чтобы в сети ет с именем компьютера). Название секторa не обязано по-
из N компьютеров обеспечить доступ по ssh с любого из этих вторять доменное имя сети, но именно такое правило наи-
компьютеров на любой другой, вам придется в общем случае менований считается устоявшейся практикой.
проделать 2N*{число пользователей} перемещений публич- Теперь посмотрим, что происходит, если пользователь
ных ключей (каждая пара компьютеров в сети обменивается joeuser (а точнее, принципал joeuser@MYREALM.RU – поле
публичными ключами пользователей), что в случае больших instance для «живых» пользователей обычно не использует-
сетей трудноосуществимо. В то же время с помощью Kerbe- ся) пытается получить доступ к этому серверу. Предполага-
ros вам нужно только зарегистрировать каждый из компью- ется, что как клиентская программа telnet, так и telnetd демон
теров на сервере Kerberos и иметь один ключ на каждом из собраны с поддержкой Kerberos (обе эти программы входят
хостов (в отличие от ssh в Kerberos используется симметрич- в дистрибутив Heimdal). Разумеется, как сам сервер, так и
ное шифрование) – итого 2N операций. Что же касается пер- пользователь должны быть зарегистрированы в одном и том
вой части вопроса, то я использую специальный «кербери- же секторе Kerberos. Как обычно, сеанс подключения к сер-
зованный» вариант telnet, что защищает соединения между веру начинается с того, что пользователь запускает telnet со
хостами не хуже, чем ssh. Главный недостаток стандартно- своим регистрационным именем и именем удаленного ком-
го telnet (и не только его) состоит в том, что при аутентифи- пьютера telnet -l joeuser kdc.myrealm.ru. Клиентская програм-
кации на удаленном компьютере telnet пересылает пароль ма после этого обращается к KDC с просьбой предоставить
пользователя по сети в виде открытого текста, что позволя- для joeuser доступ к хосту kdc.myrealm.ru. Kerberos генери-
ет злоумышленнику перехватить его. Ssh обходит эту опас- рует по определенным правилам шифровальный ключ (ses-
ность с помощью несимметричного шифрования пароля. А sion key) и разыскивает по своей базе данных принципалов
каким же образом Kerberos удается избегать брешей в за- joeuser и host/kdc.myrealm.ru, а также их пароли (ключи). Ес-
щите связанных с удаленной аутентификацией? ли пароли найдены (в противном случае сеанс заканчивает-
ся аварийно – т.к. кто-то из этих двух принципалов не заре-
Удаленная аутентификация в Kerberos гистрирован в секторе Kerberos), Kerberos приступает к ге-
Делается это с помощью уже упоминавшихся ранее биле- нерированию сессионного ключа (session key). С помощью
тиков/сертификатов (tickets/credentials – оба слова исполь- ключа принципала host/kdc.myrealm.ru он шифрует сгенери-
зуются как синонимы) – специальным образом изготовлен- рованный session key вместе с именем пользователя joeus-

58
безопасность
er, потом прилагает к зашифрованному блоку
вторую копию того же session key и снова шиф-
рует получившийся билетик с помощью паро-
ля пользователя. После этого пакет отсылает-
ся клиентской программе. Если к этому време-
ни пользователь набрал свой пароль и он со-
впадает с паролем, использованным Kerberos
при шифровке, то клиентская программа суме-
ет расшифровать билетик. Далее, половина би-
летика (с session key) остается пользователю,
а вторая, которая не может быть расшифрова-
на клиентом, поскольку ключ сервера ей неиз-
вестен, пересылается на сервер. Сервер рас-
шифровывает ее с помощью своего ключа и та-
ким образом узнает как session key, так и имя
пользователя, что позволяет серверу авторизо-
вать его своими собственными средствами. За- Рисунок 1. Процесс обмена сертификатами
метим, что помимо регистрации в этом случае имеется воз- беризованный аналог (программа с тем же именем входит
можность использовать полученный session key, поскольку в состав Heimdal Kerberos) при входе на рабочую станцию
в итоге он известен как клиенту, так и серверу, для шифро- пользователь получает TGT, который затем используется
вания сетевого трафика в рамках данной сессии, чем мно- для генерирования билетиков, специфичных для какой-ни-
гие приложения и пользуются. Схематически процесс об- будь из сетевых служб.
мена сертификатами показан на рис. 1. Таким образом, следует помнить, что при любой аутен-
Что еще интересного в используемом Kerberos механиз- тификации в Kerberos всегда участвуют два принципала –
ме аутентификации? Дело в том, что Kerberos оказывается один соответствует пользователю, пытающемуся получить
еще более параноидальным, чем мы предполагали внача- доступ к сервису, а второй – самому этому сервису. Мы не
ле, т.е. считает ненадежными не только сетевые соедине- будем рассматривать более сложный механизм аутенти-
ния (ни один из паролей, как вы могли заметить, не пере- фикации, так называемый user-to-user, когда сетевой сер-
дается в открытую по сети), но и клиентский, и даже сер- вис не имеет собственной записи в базе данных Kerberos,
верный компьютер. Для каждого из них ключ/пароль пар- а использует сертификаты пользователя, запустившего
тнера так и остается неизвестным – только session key, ко- сервис. Аутентификация user-to-user могла бы быть полез-
торый для потенциального взломщика интереса не пред- на, например, для X-серверов, но и для них эта методика
ставляет, поскольку используется только в данной сессии. не получила большого распространения.
Как известно, безопасность и удобство пользователей ве- Так в общих чертах выглядит принцип работы Kerberos.
щи взаимоисключающие. Но ученым из МТИ удалось найти Многие детали реализации протокола Kerberos при этом
удачный компромисс, придумав еще одну замечательную пришлось опустить. В частности, формат сертификата в
вещь – ticket granting ticket (TGT). Если пытаться переводить действительности более сложен, чем описано здесь. В него
этот термин на русский – «билет для выдачи других биле- входит время выдачи и срок годности сертификата, адрес
тов», что-то вроде единого проездного. Смысл его в том, компьютера, на который отсылается сертификат, и флажки,
что пользователь сети проходит полностью процедуру ре- позволяющие контролировать использование сертифика-
гистрации (с вводом имени и пароля) в своем секторе толь- тов и тем самым настраивать политику безопасности вну-
ко один раз, а сертификат, полученный в результате, затем три сектора Kerberos. Скажем, с помощью снятия флажка
используется клиентскими приложениями как эквивалент forwardable можно «привязать» сертификат к одному ком-
пользовательского пароля для получения доступа к сете- пьютеру и запретить его перемещение на другие хосты.
вым сервисам. Процесс выдачи ТGT ничем не отличается Пример, рассмотренный в начале статьи, был бы невозмо-
от описанного выше, только в качестве службы, к которой жен в этом случае – после получения удаленного доступа
пользователь получает доступ, выступает сам Kerberos – мне каждый раз потребовалось бы вводить пароль для за-
его Ticket Granting Service. После получения TGT записы- проса нового TGT.
вается в кэш-файл на диске клиентского компьютера и за- В следующем номере журнала мы перейдем к практи-
тем по мере надобности извлекается оттуда. В схеме, опи- ческой части и развернём инфраструктуру Kerberos в ло-
санной выше, session-key, закодированный в TGT исполь- кальной сети.
зуется вместо пароля пользователя при шифровании сер-
тификата, предоставляемого для доступа к сетевому ре- Литература, ссылки:
сурсу. И хотя TGT хранится в кэше на диске рабочей стан- 1. Гребенников Р. Танцуем Самбу. – Журнал «Системный
ции пользователя, угроза, связанная с его перехватом, не администратор», №11, ноябрь 2004 г. – 32-38 с.
столь уж серьезна, поскольку его действенность ограниче- 2. Фундаментальное обсуждение протокола Kerberos (на
на по времени. TGT позволяет организовать в корпоратив- англ.) можно найти в ссылках на сайте Массачусетско-
ной сети single sign-on (система единой регистрации) систе- го технологического института: http://web.mit.edu/kerbe-
му. Например, с помощью замены системного login на кер- ros/www/papers.html.

№6, июнь 2005 59


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

ЗАЩИЩЕННАЯ ПОЧТОВАЯ СИСТЕМА


С TIGER ENVELOPES

Каждой компании приходится беспокоиться о безопасности информации, проходящей


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

СЕРГЕЙ ЯРЕМЧУК

Н
е секрет, что сегодня именно информация является втихаря отправляться обычным способом, либо придется
самым ценным продуктом. В прессе постоянно по- ему просить это сделать кого-нибудь другого, что тоже не-
являются публикации о взломах, либо чьих-то секре- приемлемо. Не выгонять же из-за этого лучшего бухгалте-
тах, подробности появления которых достойны голливуд- ра. Администратору в этом случае лучше всего взять си-
ских сценариев. Легкость и быстрота, позволяющие мгно- туацию под свой полный контроль. Хорошим примером та-
венно обменяться сообщениями и решить все вопросы в ко- кого подхода является VPN, пользователь может и не до-
роткий период времени, привели к тому, что сейчас львиная гадываться, что работает по защищенному каналу. Анало-
доля деловой переписки ведется при помощи электронных гичным путем пошли разработчики защищенной почтовой
средств, в частности электронной почты. При этом среди системы Tiger Envelopes (http://www.tigerprivacy.com).
многочисленных источников перехвата информации имен-
но электронная почта (при правильном подходе) является Что за зверь такой?
одной из самых результативных и в то же время не требую- Уже в названии разработчики заложили принцип работы та-
щей задействования больших ресурсов. С другой стороны, кой системы. Аналогично тому, как, написав бумажное пись-
мнимая безопасность и неосознание важности даже самой мо и положив его в конверт, вы тем самым предохраняете
пустяковой на первый взгляд информации приводят к тому, его от просмотра другими, так и Tiger перехватывает отправ-
что практически вся информация передается открыто. Кро- ленное обычным образом сообщение, зашифровывает и пе-
ме вопросов, связанных с организацией процесса закрытия реправляет на указанный адрес. На другом конце програм-
информации, т.е. выбор средств шифрования, способов об- ма, автоматически подбирая ключ, расшифровывает его и
мена ключей как среди внутренних корреспондентов, так и отправляет пользователю, который может догадаться о на-
с партнерами. Необходимо учитывать и человеческий фак- личии такой системы только по нестандартным настройкам
тор. Есть пользователи, которым почтовый клиент дается с почтового клиента. Таким образом, он выступает как почто-
большим трудом, а если попросить их еще и зашифровать вый прокси-сервер, который автоматически кодирует и де-
сообщение перед отправкой, то это будет для них вообще кодирует сообщения. При этом почтовое сообщение может
высшим пилотажем. Скорее всего, почта и дальше будет пройти через несколько таких серверов, кодируясь несколь-

№6, июнь 2005 61


безопасность
ко раз, на другом конце код будет сниматься слой за слоем, исходные тексты (src), библиотеки и прочее. Здесь же ле-
таким образом повышается устойчивость и общая защита. жит ряд скриптов (или исполняемых файлов в зависимости
В более поздних версиях, кроме сообщения, планируется ко- от ОС), которые понадобятся для настройки, проверки ста-
дировать и заголовок (например, кодирование поля «Тема» туса и тестирования. Например, Preferences позволит доба-
позволит скрыть характер самого сообщения). На сегодняш- вить (изменить настройки, удалить) почтовый ящик, пока-
ний день существует две версии Tiger Envelopes: Free и Busi- зать, экспортировать, импортировать и удалить ключи, про-
ness. Первая доступна для свободного скачивания, предна- тестировать конфигурацию. Кроме этого, в папке Envelopes,
значена для индивидуального использования и распростра- которая будет размещена в каталоге текущего пользовате-
няется под лицензией GPL. Более расширенная версия Bu- ля (в моем случае это C:\Documents and Settings\Sergej\En-
siness является коммерческой, и хотя также доступен исхо- velopes и /home/sergej/Envelopes), создается ряд подкатало-
дный код, но он прилагается исключительно для контроля. гов, в которых будут сохраняться открытые ключи (Public-
Написан Tiger на Java, и в настоящее время доступны паке- Keys), входящие и исходящие сообщения (messages), фай-
ты, собранные под Windows, Mac OS X и GNU/Linux. Каждый лы журнала (logs), плюс здесь же, в файлах XML-формата,
пакет, кроме непосредственно 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). При этом ключи за-
даются фактически для группы абонентов, а не индивиду-
альных пользователей, что в целом облегчает администри-
рование и обмен информацией с корреспондентами, кото-
рым нет теперь необходимости в обмене ключами с каждым
сотрудником организации. В будущем разработчики плани-
руют добавить сервер ключей, который должен еще более
упростить использование системы.
Рисунок 1. Для того чтобы Tiger Envelopes мог дальше
Установка и настройка переправить сообщение, необходимо активировать хотя бы
В общем, процесс установки и настройки Tiger Envelopes для один действующий почтовый ящик
Windows и GNU/Linux (а судя по описанию, и для Mac OS X) Теперь самое время настроить почтовый клиент, для то-
отличается только особенностями самих систем, т.е. факти- го чтобы он отправлял и принимал почту через Tiger Enve-
чески используемыми каталогами, в которые будут распа- lopes. Хотя здесь тоже все просто.
кованы файлы. Итак, после запуска исполняемого файла,
скачанного с сайта по ссылке (размер для Windows – 35 Мб,
Linux – 45 Мб), программа установки проверит систему на
совместимость. После чего в следующем окне необходимо
ввести параметры почтового ящика, который будет защи-
щаться тигром, вкладки «More Info» и «Advanced» позволяют
более тонко настроить параметры. В этом же окне вводится
ключевая фраза (passphrase), необходимая при генерации
ключа GPG (для того чтобы Tiger Envelopes мог дальше пе-
реправить сообщение, необходимо активировать хотя бы
один действующий почтовый ящик) (см. рис. 1).
Далее создается ключ, выводится отчет, сообщающий
об успешном создании почтового аккаунта, и программа на-
чинает устанавливаться и прописывает себя в автозагруз-
ку. Вот в принципе и все. Установленную программу в Win-
dows можно найти в C:\Program Files\TigerPrivacy\FreeEnve- Рисунок 2. Для отправки и получения почты через Tiger
Envelopes, необходимо изменить настройки почтового клиента
lopes (отдельно в C:\gnupg распаковывается GPG). В Linux
Tiger Envelopes найдете в /usr/local/bin/FreeEnvelopes. Вну- В качестве SMTP-сервера для исходящих сообщений и
три этого каталога имеется подкаталог с документацией, ставим имя компьютера, на котором установлен Tiger En-

62
безопасность
velopes, вариантами могут быть IP-адрес, localhost либо Get your privacy back with free email envelopes at
127.0.0.1. Номер порта заменяем на 9025. Сервер для полу- <a href="http://tigerprivacy.com">Tiger Privacy</a>
Tiger Envelopes encrypted this message at 2005-06-25 04:33:34.573 UTC.
чения почты через POP3 также указываем на этот компью-
тер, а номер порта правим на 9110. И не менее важно: поль- Принятое зашифрованное сообщение будет расшиф-
зователя, которого в почтовом клиенте обычно прописыва- ровано автоматически, если поступило обычное, т.е. не за-
ем без доменного имени, пишем полностью. В моем случае крытое письмо, то к нему будет добавлена подпись, предуп-
пользователь grinder был заменен на grinder@ua.fm. реждающая, что так поступать не стоит.
Для тестирования работы в Tiger Envelopes по умолча- Tiger Envelopes warning: Got this message without an envelope.
нию создаются два пользователя. Anyone could have read it.

В целом вся дальнейшая работа проходит прозрачно


Имя: Test User для пользователей, не подозревающих о шифровании.
Почтовый адрес: test@tigerprivacy.local
Пароль: 256 AV Audio Несмотря на то, что Tiger написан на Java, раздражающей
Имя: Test User2 «заторможенности», присущей приложениям, работающим
Почтовый адрес: test2@tigerprivacy.local
Пароль: Memory F4800000 в этой среде, замечено не было. Единственным организа-
ционным моментом, который может вызвать нестыковку,
В каталоге, куда установлен Tiger, имеется скрипт Test, является обмен сообщениями с корреспондентами, клю-
предназначенный для тестирования работы, имитирую- чи которых не внесены в базу. Здесь, очевидно, все зави-
щий обмен данными между двумя этими пользователя- сит от политики компании, количества сотрудников и про-
ми. После чего нужно проверить работу в реальных усло- чих составляющих. Можно, например, разрешить обмен
виях, обменявшись сообщениями. Теперь письмо, отправ- открытой информацией только строго определенным ли-
ленное с вашего компьютера, автоматически будет за- цам, на которых и возложить обязанности по согласова-
шифровано. В теле письма будет содержаться открытый нию этих моментов.
ключ, а в конце после расшифровки будет добавлено та- Сервер Tiger Envelopes является довольно удобным ин-
кое сообщение. струментом, позволяющим очень просто наладить обмен
зашифрованными сообщениями. Для пользователей его
Tiger Envelopes decrypted this message at 2005-06-25 04:49:06.774 UTC.
работа будет прозрачной, а использование «групповых»
Если пользователь не использует Tiger Envelopes, то он ключей упрощает администрирование и избавляет адми-
получит зашифрованный текст, в конце которого будет та- нистратора от многих проблем, связанных с обменом клю-
кая подпись. чевыми данными.

№6, июнь 2005 63


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

НАСКОЛЬКО НЕУЯЗВИМА
ВАША БЕСПРОВОДНАЯ СЕТЬ?
Масштабное внедрение
беспроводных устройств
протекает довольно болезненно.
То тут, то там появляются
сообщения об их взломе,
который уже давно превратился
в настоящий радиоспорт
для тинейджеров.
Попробуем разобраться,
насколько велика угроза
и что можно противопоставить
коварным хакерам.

КРИС КАСПЕРСКИ

Б
еспроводные технологии проч- адресам и т. д., однако это не остано- ! открытый режим (ни шифрование,
но вошли в нашу жизнь и, похо- вило атакующих. На протяжении че- ни аутентификация не используют-
же, не собираются никуда ухо- тырех последних лет разработчики не- ся);
дить. С их помощью организуются точ- прерывно совершенствовали защиту, ! защищенный режим без аутенти-
ки доступа в Интернет, строятся пол- но каждый раз в ней обнаруживались фикации, но с шифрованием тра-
ноценные локальные сети, лишенные все новые и новые дыры. фика;
змеящихся кабелей, и делается мно- Подавляющее большинство ата- ! защищенный режим с аутентифика-
жество других удивительных вещей. кующих действуют без зло го умыс- цией и шифрованием трафика.
Се мей ство стан дар тов IEEE 802.11 ла, воспринимая это как шалость или
описывает протоколы передачи дан- интеллектуальную игру, но среди них Шифрование в обоих случаях осу-
ных, работающие на частоте 2,4 ГГц и встречаются настоящие охотники за ществляется по WEP-протоколу (Wired
обеспечивающие скорость вплоть до чужим трафиком, из которого можно Equivalent Privacy – эквивалент провод-
11 Мбитс/с (протокол 802.11b) или да- извлечь различную конфиденциаль- ной защищенности), опирающемуся на
же 54 Мбит/с (протокол 802.11g). Все ную информацию (пароли на почто- потоковый криптоалгоритм RC4. Ис-
вместе они образуют WLAN (Wireless вые ящики, номера кредитных карт ходные данные (data) нарезаются на
Local Area Network – Беспроводная Ло- и т. д.). Встречаются и просто желаю- фреймы (fames) с размером 1.518 бит
кальная Сеть). щие подключиться к Интернету за чу- (впрочем, размер задан не жестко и в
Фактически WLAN представляет жой счет. Если точка беспроводного зависимости от конфигурации обору-
собой обыкновенный Ethernet, только доступа принадлежит крупной компа- дования он может существенно отли-
без проводов (см. рис. 1). Это значит, нии, ущерб будет не так уж и велик, но чаться). Для каждого фрейма опреде-
что беспроводные сети наследуют все вот в домашних сетях этим пренебре- ляется и укладывается в пакет 32-бит-
уязвимости обыкновенных проводных гать нельзя. ная контрольная сумма (ICV), вычисля-
сетей и добавляют к ним свои собствен- Чем вооружены хакеры и как им емая по алгоритму CRC32. Эффектив-
ные. Описывать классические Ether- противостоять, вот вопрос, достойный ный ключ шифрования (PRNG – Pseu-
net-уязвимости, такие, например, как нашей статьи! do-Random Number Generator – генера-
подложный ARP-сервер, не интерес- тор псевдослучайных чисел) генериру-
но, лучше обсудим «беспроводной» Аутентификация ется на основе двух ключей – 40-бит-
аспект (рис. 1). и шифрование ного секретного ключа (secret key или
Для защиты от злоумышленников Согласно стандарту IEEE 802.11, су- WEP key), назначаемого пользовате-
разработчики IEEE 802.11 протоколов ществует три базовых режима безо- лем, и 24-битного вектора инициали-
предприняли целый комплекс противо- пасности, выбираемых беспроводным зации (IV – Initialization Vector), генери-
хакерских мер: аутентификация, шиф- устройством в зависимости от уровня руемого случайным образом для каж-
рование тра фи ка, привязка к MAC- секретности: дого пакета. Все вместе это называет-

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

Рисунок 1. OSI-модель, подтверждающая родственные связи Рисунок 2. Расчет контрольной суммы и шифрование трафика
между протоколами 802.3 (Ethernet) и 802.11 (WLAN) по протоколу WEP

ся 64-битным шифрованием и предста- Смена ключей происходит произволь- на основе секретного WEP-ключа и
вит собой классический пример аме- ным образом (номер ключа передает- произвольного вектора инициализа-
риканского маркетинга по одурачива- ся вместе с зашифрованным пакетом), ции. Зашифрованный испытательный
нию доверчивых пользователей. В са- но на безопасность передачи данных текст (Encrypted Challenge Text) вместе
мом деле, зачем потребителю знать, это никак не влияет. Если хакер сможет с вектором инициализации передается
что для взлома ключа злоумышленни- взломать один ключ, он сломает и четы- на точку доступа, где происходит об-
ку достаточно подобрать всего лишь ре (см. рис. 3). ратный процесс: используя имеющий-
40 бит из 64! Упрощенно процесс шифрования
Вектора инициализации назнача- потока данных выглядит так (расчет Листинг 1. Псевдокод функции KSA(A),
инициализирующей массив S,
ются самим WLAN-устройством и пе- контрольной суммы здесь не показан): используемый впоследствии
редаются в открытом виде. Зачем K=IV.WEPkey → KSA(K) → PRNG (K)XOR для генерации псевдослучайной
последовательности
они нужны? А затем, что используе- data stream, где функции KSA(A) и
мый криптоалгоритм легко вскрыва- PRNG(К) выражаются следующим псев- // инициализация
for(i = 0; i < N; i++) S[i] = i;
ется атакой по открытому тексту. Ес- докодом (см. листинг 1, 2 и рис. 4). j = 0;
ли злоумышленнику известен хотя бы Аутентификация осуществляется
// перемешивание байт, оно же
один исходный байт в каждом фрей- по старой доброй схеме запрос/отклик // скремблирование (scrambling)
ме, ключ шифрования восстанавлива- (challenge/response). Клиент (Client или for i = 0; i<N; i++
{
ется без труда, поскольку различные Station), желающий подключится к точ- j = j + S[i] + K[i % length];
части ключа многократно применяют- ке доступа (Access Point), посылает за- swap(S[i], S[j]);
}
ся к различным частям зашифрован- прос на аутентификацию (Authentica-
ных фреймов. Чтобы этого избежать, tion Request). Точка доступа генерирует Листинг 2. Псевдокод функции PRNG(K),
генерирующей псевдослучайную
никакой ключ шифрования не дол- 128-байтовый псевдослучайный «ис- последовательность, используемую
жен использоваться дважды. Векто- пытательный текст» (Challenge Text) и для шифрования потока данных
операцией XOR
ра инициализации автоматически из- отправляет его клиенту. Получив «ис-
меняются с каждым пакетом, что обе- пытательный текст», клиент шифрует // инициализация:
static int i = 0;
спечивает «прозрачную» смену клю- его 64-битным ключом, полученным static int j = 0;
ча, без ведома и участия пользовате-
// цикл генерации:
ля (см. рис. 2). i = i + 1;
Строго говоря, для шифрования ис- j = j + S[i];
swap(S[i], S[j]);
пользуется не один секретный ключ, а return S[S[i] + S[j]];
целых четыре, последовательно назна-
чаемых пользователем при конфигу-
рации беспроводного оборудования.

Рисунок 4. Блок-схема алгоритма


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

№6, июнь 2005 65


безопасность
ся в ее распоряжении секретный WEP-
ключ и открытый вектор инициализа- Атака по открытому тексту
ции, точка доступа расшифровывает Если беспроводная сеть имеет выход осуществляется каждые 5 минут), поэ-
пакет и сравнивает полученный текст в Интернет и злоумышленнику изве- тому его очень легко отличить ото всех
с оригинальным испытательным тек- стен электронный адрес хотя бы одно- остальных. Главное, чтобы жертва со-
стом. Если они совпадают, аутентифи- го из ее абонентов, он может послать гласилась принять письмо, а не удали-
кация считается успешной и клиенту жертве письмо, выловить относящиеся ла его на сервере как спам.
отправляется подтверждение доступа к нему зашифрованные пакеты и вос- Существуют и другие эффектив-
(Confirm Success) (см. рис. 5). становить секретный ключ по извест- ные атаки против WLAN, описание ко-
Независимо от выбранного режи- ному содержимому. В этом ему неве- торых можно найти, например, в ста-
ма секретности, точка доступа может роятно поможет тот факт, что трафик к тье «What’s Wrong With WEP?» (http://
использовать привязку к MAC-адре- почтовому серверу генерируется пери- www.ilabs.interop.net/WLANSec/What_
сам и проверку SSID/ESSID ([Extend- одически (например, проверка почты is_wrong_with_WEP-lv03.pdf).
ed] Service Set IDentifiсation – иденти-
фикация [расширенного] комплекта Ошибки разработчиков статью «Weaknesses in the Key Sched-
услуг, условно называемая «именем WEP-протокола uling Algorithm of RC4» («Слабые ме-
сети»), отсекая всех непрошеных нару- Стандартный 64-битный ключ шиф- ста алгоритма распределения клю-
шителей еще на стадии подключения рования легко взла мы ва ет ся лобо- чей RC4»), мгновенно сделавшую их
(технология Access Control List – спи- вым перебором. Учитывая, что фак- знаменитыми. Впоследствии все ата-
сок управления доступом). Для само- тическая длина секретного ключа со- ки этого типа стали обозначаться аб-
успокоения такая мера, может быть, и ставляет всего лишь 40 бит, в сред- бревиатурой FMS – по первым буквам
сгодится, но вот злоумышленников она нем нам достаточно перебрать 240 /2 = первооткрывателей: Fluhrer-Mantin-
остановит навряд ли. И MAC, и SSID пе- 549 755 813 888 комбинаций. При ско- Shamir. Они обнаружили существова-
редаются по сети открытым текстом, рости перебора в сотню миллионов ние крупных классов слабых («weak»)
так что их перехват не представляет ключей в секунду (вполне умеренная ключей, в которых крошечная часть
никакой проблемы. Перепрограмми- скорость для современных процессо- битов ключа оказывает значитель-
ровать MAC-адрес своей карты чуть ров) атака займет всего час – полтора. ное влияние на зашифрованные дан-
сложнее, но хакеры с этим легко справ- Злоумышленнику достаточно перехва- ные. Поскольку в формировании эф-
ляются (даже если карта не позволя- тить всего один зашифрованный па- фективного ключа участвует вектор
ет сделать этого программным обра- кет, а затем терзать его до тех пор, пока инициализации, генерируемый произ-
зом – а подавляющее большинство контрольная сумма расшифрованного вольным образом, в общий шифропо-
карт это позволяет – атакующий всег- пакета не совпадет с ICV. «Стучаться» ток неизбежно попадает некоторое ко-
да может «перешить» ПЗУ). Что же ка- на точку доступа при этом совершен- личество слабых ключей. Собрав дос-
сается SSID, то он и вовсе прописыва- но необязательно! (С учетом существо- таточный объем трафика, злоумыш-
ется с пользовательского интерфейса, вания четырех секретных ключей про- ленник отбирает па ке ты, зашифро-
поскольку используется исключитель- должительность полного цикла пере- ванные слабыми ключами (такие па-
но как «маркер», позволяющий бес- бора несколько возрастает, однако не кеты называются «слабыми» или «ин-
проводному устройству отличить од- столь радикально). тересными» – interesting). Каждый сла-
ну сеть от другой. Борьба с хакерами Для предотвращения лобовой ата- бый пакет с 5% степенью вероятности
в его задачу не входит. Тем не менее ки производители беспроводного обо- восстанавливает один байт секретно-
это еще не значит, что SSID можно не рудования увеличили длину секретной го ключа, поэтому общее количество
заполнять (а большинство пользовате- части ключа до 104 бит, попутно поро- пакетов, которые атакующему необ-
лей именно так и поступает)! див проблему обратной совместимос- ходимо собрать для реализации ата-
ти. Добавьте сюда 24 бита вектора ини- ки, в первую очередь зависит от сте-
циализации и вы получите так называ- пени его везучести. В среднем для
емое 128-битное шифрование. Подо- взлома требуется порядка 6 миллио-
брать 104-битный ключ вслепую уже нов зашифрованных пакетов. В зави-
нереально (при прежней скорости пе- симости от интенсивности трафика и
ребора в среднем на это уйдет 281 70 пропускной способности канала, на
013 338 405 097 811 часов или 3 215 754 это уходит от нескольких часов до не-
947 306 518 веков, что значительно пре- скольких дней, хотя в некоторых слу-
вышает не только оставшееся время чаях атака заканчивается уже через
существования Солнца, но и возраст несколько минут. И это при 104-бит-
Вселенной), однако хакерам удалось ном ключе! Так работает AirSnort и
найти более короткий путь, сократив многие другие хакерские утилиты, ко-
время взлома в миллиарды раз. торые любой злоумышленник может
В августе 2001 года три криптоана- свободно скачать из сети.
Рисунок 5. Схема аутентификации
литика: Scott Fluhrer, Itsik Mantin и Adi Если обмен данными между ле-
клиента, используемая в протоколе WEP Shamir опубликовали свою подрывную гальными клиентами и точкой досту-

66
безопасность
па незначителен или практиче- ства зашифрованных пакетов,
ски отсутствует, злоумышленник так что для восстановления клю-
может заставить жертву генери- ча атакующему потребуется со-
ровать большое количество тра- всем немного времени. Данный
фика, даже не зная секретного алгоритм реализован в chopper,
ключа. Достаточно просто пере- aircrack, WepLab и других хакер-
хватить «правильный» пакет и, не ских утилитах, недостатка в кото-
расшифровывая, ретранслиро- рых испытывать не приходится.
вать его вновь. В частности, ARP- В новом оборудовании, по-
запрос вызовет неизбежный ARP- строенном по технологии WPA –
ответ. Отличить APR-запросы от Wi-Fi Protected Access (защищен-
всех остальных пакетов очень ный Wi-Fi доступ), защищенность
просто: frame.pkt_len == 68 (раз- беспроводных устройств вновь
мер кадра) и wlan.da == FF:FF: была усилена. На место WEP при-
FF:FF:FF:FF (адрес назначения). шел TKIP (Temporal Key Integrity
Обычно для передачи запросов Protocol – протокол краткосроч-
используется отдельная WLAN- ной целостности ключей), гене-
Рисунок 6. Внешний вид утилиты dwepcrack,
карта (при этом расстояние меж- реализующей усиленную разновидность FMS-атаки рирующий динамические клю-
ду антеннами приемной и переда- на WEP-ключи чи, сменяющие друг друга через
ющей карт должно составлять по мень- рам пришлось искать новые пути для пару минут. Для совместимости с су-
шей мере 15 см, чтобы избежать вза- атаки. И они были найдены! ществующим оборудованием TKIP ис-
имных наводок), хотя некоторые кар- В августе 2004 года хакер по име- пользует тот же самый потоковый ал-
ты ухитряются перехватывать трафик и ни KoreK про де мон ст ри ро вал исхо- горитм шифрования, что и WEP – RC4,
одновременно с этим бомбардировать дный код нового криптоанализатора, но в каждый зашифрованный пакет те-
жертву пакетами. взламывающего даже «сильные» век- перь укладывается специальный вось-
Хакеры из лаборатории H1kari of торы инициализации. Для восстанов- мибайтный код целостности сообще-
Dasb0den Labs усилили FMS-алгоритм, ления 40-битного ключа ему требова- ния, рассчитанный по алгоритму Mi-
сократив количество необходимых па- лось всего 200 тысяч пакетов с уни- chael, предотвращающий ретрансля-
кетов с 6 миллионов до 500 тысяч, а в кальными векторами инициализации, цию подложных пакетов. Процедура
некоторых случаях 40/104 битный ключ а для 104-битного – 500 тысяч. Количе- аутентификации осуществляется по
взламывается всего с 3 тысячами па- ство пакетов с уникальными вектора- протоколу EAP (Extensible Authentica-
кетов, что позволяет атаковать даже ми инициализации в среднем состав- tion Protocol – расширенный протокол
домашние точки доступа, не напрягая ляет порядка 95% от общего количе- аутентификации), использующему ли-
их избыточным трафиком. Усиленный
алгоритм атаки реализован в утилите
dwepcrack, входящей в состав пакета
BSD-airtools, а также в другом хакер-
ском инструментарии (рис. 6).
Разработчики оборудования отре-
агировали вполне адекватным обра-
зом, изменив алгоритм генерации век-
торов инициализации так, чтобы сла-
бые ключи уже не возникали. Теперь
даже dwepcrack требовалось перехва-
тить свыше 10 миллионов пакетов, но
даже в этом случае успешная расшиф-
ровка ключа не гарантирована! Устрой-
ства, выпущенные после 2002-2003 гг.,
скорее всего уже защищены от FMS-
атаки, а более древние модели решают
эту проблему путем обновления про-
шивки (правда, не все производители
выпустили такое обновление). Впро-
чем, даже сегодня, в середине 2005
года, в эксплуатации находится мно-
жество уязвимых устройств, особен-
но на периферии, куда уходят все не-
реализованные складские запасы. Тем
Рисунок 7. Схема аутентификации, осуществляемой по WPA-протоколу с выделенным
не менее, ситуация такова, что хаке- Radius-сервером

№6, июнь 2005 67


безопасность
бо RADIUS-сервер (Remote Authentica- систему, как из всех WLAN-карт, раз- отлично документирован, причем до-
tion Dial-In User Service – служба дис- бросанных по витрине, выбрать ту, ко- кументация распространяется не по
танционной аутентификации пользо- торая будет неподвластна взлому. Про- подписке, а бесплатно раздается всем
ва те лей по коммутируемым лини- изводители оборудования, как уже бы- желающим!
ям), либо предустановленный общий ло показано выше, постоянно лукавят. Из программного обеспечения нам
ключ PSK (pre-shared key). В процес- Верить им нельзя, и приходится рассчи- понадобится сетевой сканнер, сниф-
се аутентификации сервер генериру- тывать только на самих себя. фер и взломщик паролей. Их можно
ет парный мастер ключ (PMK – Pair- найти практически на любой платфор-
wise Master Key) и передает его Кли- От антенны до программы ме. На Pocket PC обычно используется
енту. Несмотря на относительную но- Радиус действия большинства беспро- связка MiniStumbler/Sniffer Portable/Air-
визну этой технологии, в комплект air- водных устройств ограничен дистанци- scanner Mobile. MiniStumbler обнаружи-
ckack уже входит специальный модуль ей в 10-100 метров (точная цифра зави- вает присутствие сети в данной точке,
WZCOOK, отображающий PMK-ключ. сит от класса и конструктивных особен- измеряет интенсивность сигнала, ото-
Для несанкционированного подключе- ностей конкретного оборудования), по- бражает SSID/MAC-адреса и опреде-
ния к точке доступа, защищенной тех- этому атакующий должен находиться в ляет, задействовано WEP-шифрова-
нологией WPA, этого оказалось впол- непосредственной близости от жертвы. ние или нет. Sniffer Portable и Airscanner
не достаточно. Впрочем, атакующий Одни хакеры вооружаются карманными Mobile захватывают все пролетающие
модуль все еще недостаточно отла- компьютерами (они же «наладонники» мимо пакеты и записывают их в файл,
жен и потому в некоторых случаях он или Pocket PC), другие предпочитают который затем переносится на ноутбук
не срабатывает (см. рис. 7). десктоп с WLAN-картой, подключенной или настольный ПК и пропускается че-
Стандарт IEEE 802.11i описывает к внешней антенне. Добротная антенна рез взломщик паролей (процессорных
более продвинутую систему безопас- направленного типа, снабженная уси- ресурсов карманного компьютера для
ности, основанную на криптоалгорит- лителем мощности, уверенно держит взлома паролей за разумное время по-
ме AES и известную под именем WPA2. связь на расстояниях до 1,5-2 км, а в не- ка что недостаточно) (см. рис. 8).
Готовых утилит для ее взлома в откры- которых случаях и больше того, так что Основной сниффер под LINUX и
том виде пока не наблюдается, так что простой бдительности для его обнару- BSD это, конечно же, Kismet, изначаль-
с этой технологией можно чувство- жения уже будет недостаточно! но ориентированный на исследователь-
вать себя в безопасности, по крайней При выборе WLAN-карты атакую- ские цели. Он поддерживает большое
мере, какое-то время она продержит- щий должен убедиться, что выбран- количество оборудования и беспровод-
ся. Обладателям устаревшего обору- ные хакерские утилиты (и в первую ных протоколов, удобен в использова-
дования настоятельно рекомендуется очередь сниффер) умеют работать с нии и к тому же абсолютно бесплатен.
пробить VPN-тоннели, задействовать данным чипсетом. Список поддержи- Перехватывает сетевой трафик, по-
SSL-шифрование или подключить лю- ваемого оборудования обычно публи- казывает SSID и MAC-адреса, подсчи-
бые другие способы защиты, изначаль- куется на сайтах разработчиков соот- тывает количество пакетов со слабы-
но ориентированные на небезопасные ветствующих программ или содержит- ми векторами инициализации и т. д.
каналы передачи данных. ся в документации. Наибольшей лю- Из взломщиков паролей в последнее
Существует только один способ про- бовью пользуется чипсет Prism/Prism2 время реально работают только aircr-
верить, насколько безопасно приобрета- и беспроводные карты на его основе ack и WepLap, причем первый работа-
емое вами беспроводное устройство – (например Senao 2511-CD-PLUS). Он ет значительно лучше.
это атаковать его! Каждый уважающий
себя администратор должен отчетливо
представлять, какой инструментарий
находится на службе у хакеров, знать
его сильные и слабые места. Бояться
хакерских утилит не нужно! Ни один
закон не запрещает «взламывать»
свою собственность, принадлежащую
вам по праву, поэтому никаких юриди-
ческих проблем здесь не возникает,
а под категорию «вредоносных» про-
грамм обсуждаемые утилиты не попа-
дают. Как показывает практика, боль-
ше всех волнуется тот, кто не контро-
лирует ситуацию, образно говоря, на-
ходясь в темноте с завязанными гла-
зами. Когда-то боялись привидений,
сейчас боятся хакеров, вирусов и чер-
вей. А все почему? Потому что не зна- Рисунок 8. Оружие наладонников — снифферы pocketWiNc (слева)
ют, как построить надежную защитную и Mobile Sniffer (справа)

68
безопасность
Под Windows перехват беспро- В общем, на недостаток хакерско- (WEP и WPA1) вскрывается без труда.
водного трафика реализуется гораз- го инструментария жаловаться не при- Ни частая смена секретных ключей, ни
до сложнее и кроме сниффера нам по- ходится, в глазах так и рябит от разно- SSID, ни привязка к MAC-адресам, ни
тре бу ют ся модифицированные вер- образия. даже так называемое 128-битное шиф-
сии драйверов для WLAN-карты. Из Загрузочный лазерный диск Audit- рование от настоящих хакеров не спа-
коммерческих снифферов можно по- or Security Collection уже содержит весь сает и годится разве что на роль пу-
рекомендовать Airopeek, из некоммер- необходимый инструментарий и моди- гала, отпугивающего новичков и про-
ческих – утилиту airdump, входящую в фицированные драйвера, поддержи- сто любопытствующих пользователей,
состав aircrack и портированную под вающие большое количество разно- впервые взявших сниффер в руки.
Windows. Еще мож но ис поль зо вать образных беспроводных устройств. Что же касается WPA1, то по этому
Sniffer Pro или любой другой подходя- 518-мегабай т ный ISO-образ можно поводу существуют различные мнения.
щий сниффер. бесплатно скачать с веб-сайта компа- Начнем с того, что схема аутентифика-
На Mac весь хакерский инстру- нии Moser Informatik, расположенного ции непосредственно в сам протокол
ментарий собран в одном флаконе – по адресу: http://www.moser-informatik. WPA1 не входит и осуществляется сто-
утилите по имени KisMAC, которая на- ch, очень удобная штука для тестов на ронними средствами. Это может быть
столько проста, что ей сможет поль- проникновение. и EAP-MD5, и EAP-TLS и MS-CHAP…
зоваться даже ребенок. Здесь есть и То есть сама по себе поддержка WPA1
сетевой сканер, и сниффер, и пароль- Заключение ничего не решает! Безопасность обе-
ный переборщик (brute force), и крип- Так все-таки безопасны беспроводные спечивается лишь правильной настой-
тоанализатор слабых векторов ини- сети или нет? Устройства, поддержи- кой оборудования, а это требует соот-
циализации. Предусмотрена даже та- вающие стандарт IEEE 802.11i (WPA2), ветствующей квалификации обслужи-
кая мелочь, как планировщик, позво- еще никому взломать не удалось и, су- вающего персонала! Поэтому, если вы
ляющий осуществлять атаки по рас- дя по всему, в обозримом будущем и не не уверены в себе, от использования
писанию. удастся. Все остальное оборудование WPA1 лучше воздержаться.

Литература: ан г л.): http://www.dachb0den.com/ сниф фер для Pocket PC: http://


1. Andrew A. Vladimirov, Konstantin V. projects/bsd-airtools/wepexp.txt. www.snapfiles.com/get/pocketpc/
Gavrilenko, Andrei A. Mikhailovsky. 6. Wireless Security Auditor (WSA): ста- airscanner.html.
Wi-Foo. – Addison Wesley, ISBN : тья из исследовательского центра 3. PocketWarrior: бесплатный сниф-
0-321-20217-1, 592 с. – лучшая кни- IBM, описывающая проблемы безо- фер под Windows CE и Pocket PC:
га по взлому беспроводных сетей пасности беспроводных протоколов http://pocketwarrior.sourceforge.net.
с большим количеством практиче- (на англ.): http://www.research.ibm. 4. kismet: сниффер номер один под
ских примеров, ориентированная com/gsal/wsa. Linux, BSD и MacOS, ориентирован-
на хакеров и криптоаналитиков. 7. Атаки на WEP: практическое посо- ный на хакерскую деятельностью и
2. Jon Edney, William A. Arbaugh. Real бие атакующего, сравнение различ- распространяющийся в исходных
802.11 Security: Wi-Fi Protected Ac- ных хакерских утилит, советы по текстах, версия под Windows обла-
cess and 802.11i. – Addison Wesley, их настройке (на рус.): http://www. да ет ог ра ни чен ны ми воз мож но с-
ISBN : 0-321-13620-9, 480 с. – непло- securitylab.ru/53508.html и http:// тя ми и потому не ре ко мен ду ет ся:
хая книга по безопасности беспро- www.securitylab.ru/54769.html. http://www.kismetwireless.net.
водных сетей, ориентированная на 8. Dispelling the Myth of Wireless Se- 5. Airopeek: достойный сниффер под
теоретиков и системных админист- curity: слегка ус та рев шая статья Windows: http://www.wildpackets.
раторов. о способах взлома беспроводных com/products/airopeek.
3. Bob Fleck, Bruce Potter. 802.11 Secu- сетей, но комментарии к ней впол- 6. Sniffer Portable: http://www.snmp.
rity. – O’Reilly, ISBN: 0-596-00290-4, не актуальны (на англ.): http://www. co.uk/nai/amnesty.htm.
208 с. – сильно теоретизированная, oreillynet.com/pub/a/wireless/excerpt/ 7. aircrack: лучший взломщик WEP и
но в целом весьма не плохая книга wirlsshacks_chap1/index.html. WPA-паролей на сегодняшний день,
по атакам на WLAN. 9. NetStumbler-форум: форум, на ко- распространяющийся на некоммер-
4. Weaknesses in the Key Scheduling Al- тором общаются WLAN-хакеры (на ческой основе; в комплект постав-
gorithm of RC4: библия всех иссле- англ.): http://www.netstumbler.org. ки входит сниффер, работающий на
дователей WEP-ключей, написан- Linux и Windows 2000/XP: http://www.
ная тройкой магов Scott Fluhrer, It- Ссылки cr0.net:8040/code/network/aircrack.
sik Mantin и Adi Shamir (на англ.): на инструментарий: 8. AirSnort: устаревший взломщик
http://www.smallnetbuilder.com / 1. NetStumbler: монитор беспроводной WEP-паролей: http://airsnort.shmoo.
Weblink-req=visit-lid=66.php. сети, работающий под Windows 20- com.
5. Practical Exploitation of RC4 Weak- 00/XP, версия для Windows CE назы- 9. kisMAC: утилита для атаки на беспро-
nesses in WEP Environments by Dav- вается MiniStumbler и работает на водные сети под MAC OS: сниффер
id Hulton: статья, описывающая уси- Pocket PC: http://www.netstumbler. и взломщик паролей в одном флако-
ленный вариант FMS-атаки на WEP com/downloads. не: http://binaervarianz.de/projekte/pro-
с примерами исходного кода (на 2. Airscanner Mobile: бесплатный grammieren/kismac/download.php.

№6, июнь 2005 69


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

КАК ЗАЩИТИТЬСЯ ОТ FINGERPRINTING?

Чаще всего хакерская атака начинается с fingerprinting –


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

СЕРГЕЙ БОРИСОВ
70
безопасность

Ч
тобы определить версии операционной системы или дого производителя. К ним можно отнести протоколы стека
прикладных сервисов, последователи Кевина Митни- TCP/IP, SNMP, HTTP, Telnet, FTP. Таким образом, достаточ-
ка предпочли бы позвонить системному администра- но подобрать хороший набор тестов, в которых различные
тору и выяснить все подробности по телефону. Остальные системы ведут себя по-разному.
же будут проводить исследование особенностей реализа-
ции стека TCP/IP и других протоколов в удаленной опера- Fingerprinting стека протоколов TCP/IP-серверов
ционной системе. Сетевой стек в разных операционных системах различает-
Кроме того, fingerprinting используется при сборе ка- ся по нескольким параметрам, и для каждого из них есть
кой- либо статистической информации. В системах обна- технология получения отличий.
ружения атак он позволяет определить ОС атакующего Часть возможных исследований, в результатах которых
или даже однозначно выделить его из общей массы (так есть различия, приведена в таблице 1. Этого вполне доста-
же, как отпечатки пальцев позволяют идентифицировать точно, чтобы легко распознать эти системы. Кроме этого
преступника). можно проводить исследования:
! значения поля ACK в TCP-заголовке в ответах на не-
От чего защищаться? стандартные запросы;
Посмотрим, что выдает версию операционной системы и ! закона изменения ISN сервера;
публичных сервисов, и узнаем, от чего нам защищаться. ! флага DontFragment в IP-заголовке;
В fingerprinting используются следующие методы: ! ICMP-заголовка эхо-ответа;
! Сбор баннеров и ручной анализ системы. ! время отсылки повторных пакетов в реализации TCP;
! Активное исследование реализации протоколов. ! модели протокола TCP (TCP-reno, TCP-Vegas, TCP-Ta-
! Пассивное исследование реализации протоколов. hoe, TCP-newreno, TCP-SACK), которые по-разному ре-
! Исследование некоторых технических характеристик си- агируют на ухудшение пропускной способности кана-
стемы. ла, появление частых ошибок и пропадание связи.

Сбор баннеров Fingerprinting публичных сервисов


Это один из классических методов fingerprinting. Он заклю- Большинство публичных сервисов или служб используют
чается в опросе открытых в системе сервисов и анализа достаточно сложные протоколы, которые подвержены сня-
возвращаемых ими стандартных приглашений (баннеров). тию отпечатков (SMTP, IMAP, Telnet, FTP, HTTP, LPD, IKE,
Помимо этого сервисы иногда предоставляют дополнитель- SNMP). От прав ка большого количества нестандартных
ную возможность для определения версии ОС. или неправильных команд позволяет определить как вер-
Так, например, ftp-сервис может позволить выполне- сию публичного сервиса на сервере, так и операционную
ние команды SYST, которая выдает версию операцион- систему. Подробности об активном fingerprinting вы може-
ной системы. Заголовок веб-сервера можно получить ко- те найти в [1, 2].
мандой:
Пассивное исследование реализаций протоколов
# echo 'GET / HTTP/1.0\n' | nc securitylab.ru 80 | ↵ Это анализ проходящего через систему сетевого трафика с
grep '^Server:'
выделением некоторых ключевых параметров. Этот метод,
Server: Apache/2.0.52 (Unix) как и предыдущий, основывается на особенностях реализа-
ции протоколов в различных системах. Только вот зачастую
Активное исследование реализаций протоколов приходится довольствоваться меньшей точностью.
Это контрольный набор тестов, проводимых над удаленной Идея пассивного fingerprinting заключается в анализе
системой. Нас будут интересовать в первую очередь те про- информации, доступной без непосредственного воздей-
токолы, реализация которых имеет свои особенности у каж- ствия на исследуемую систему. Чаще всего он применяет-
Таблица 1. Результаты исследования стека TCP/IP Windows, Linux и FreeBSD

№6, июнь 2005 71


безопасность
ся во внутренней сети организации, когда мы имеем непос- ры на уровне компьютерной сети, администратор сер-
редственный доступ к нормальному рабочему трафику. Это веров – за реализацию процедуры на уровне систе-
одно из первых действий при моделировании внутреннего мы, администратор информационной безопасности –
нарушителя для обнаружения слабостей политики безопас- за контроль и оценку достаточности выполненных ме-
ности внутренней сети. Примеры пассивного fingerprinting роприятий;
можно посмотреть по ссылкам [3, 4, 5]. ! порядок проверки эффективности и процедуры – на-
пример, тестирование с использованием методов, опи-
Исследование технических характеристик санных в статье, как извне, так и внутри организации,
системы и порядок пересмотра процедуры;
Это анализ таких отличительных характеристик, как вре- ! ответственность сотрудников – например, хранителя
мя работы сервера с момента последней перезагрузки, от- архивов эталонного программного обеспечения, за не-
клонение таймера системных часов, серийные номера фи- разглашение информации, администраторов – за сво-
зических частей сервера (например, MAC-адрес сервера в евременность мероприятий.
том же сегменте сети). Подробнее об этом: http://www.caida.
org/outreach/papers/2005/fingerprinting. Помимо этого в инструкции по организации безопаснос-
Возможность исследования технических характеристик ти серверов и компьютерной сети необходимо внести соот-
системы может быть полезна в первую очередь как косвен- ветствующие пункты о защите от сетевой разведки.
ная улика при инцидентах безопасности.
Итак, мы разобрали, почему возможен fingerprinting опе- Практическая реализация на уровне сети
рационной системы и публичных сервисов, теперь рассмот- Грамотная топология сети – это самая эффективная контр-
рим, как с ним бороться. мера удаленному исследованию систем.
Первая возможная мера – фильтрация трафика с исполь-
Способы защиты от fingerprinting зованием межсетевого экрана. Лучше всего оставить откры-
В идеале необходимо внедрять защиту от fingerprinting как тым доступ только к одному порту публичного сервиса, филь-
комплексную меру как на уровне сети, операционных сис- тровать нестандартные сетевые запросы, ICMP-трафик. Ис-
тем и приложений, а также и на уровне процедур безопас- пользуя межсетевой экран, можно подменять часть трафи-
ности. Тем не менее защита даже на одном уровне (напри- ка на уровне приложений. Возможна замена приветствен-
мер, настройка межсетевого экрана) принесет свои плоды ных баннеров и ответов при ошибке на универсальные и от-
и не позволит определить версию ОС или публичного сер- ражающие корпоративную политику в целом. Это будет аль-
виса первой попавшейся утилитой. тернативой изменению настроек на каждом сервере.
Выделение демилитаризованной зоны, четкое разделе-
Внедрение в концепцию безопасности ние внутренних и внешних сервисов – эти механизмы по-
на верхнем уровне мимо своих основных задач увеличивают защищенность
В политике безопасности необходимо обозначить отноше- от fingerprinting.
ние организации к тайне программного обеспечения. Ин- Размещение двух публичных сервисов на одном сер-
формацию о версии операционной системы, версии пуб- вере приводит к резкому повышению вероятности опреде-
личного сервиса или другого установленного на сервере ления версии системы. Если по каким-то причинам невоз-
программного обеспечения необходимо отнести к катего- можно от этого отказаться, тогда можно разместить сер-
рии коммерческой или конфиденциальной. Необходимо из- висы в различных виртуальных машинах (jail) или с по-
ложить требования к организации процесса защиты от се- мощью настройки NAT межсетевого экрана связать один
тевой разведки, в каких процедурах описан этот процесс внутренний IP-адрес c несколькими внешними IP-адреса-
и кто ответственен за реализацию процедур, какая предус- ми, по одному на каждый сервис. Тогда внешнему иссле-
мотрена отчетность. дователю будет казаться, что приложения запущены на
разных серверах.
Внедрение в процедуры и инструкции Сегментация трафика, активный поиск слушающих ус-
на нижнем уровне тройств, рассылка ложных пакетов (с поддельными заго-
Необходимо ввести специальную процедуру, например, за- ловками) в локальной сети уменьшают опасность пассив-
щиты от сетевой разведки. В ней указываются: ного fingerprinting.
! цели, которые преследует организация, внедряя Приведу несколько примеров части конфигурации раз-
этот документ, – например, недопущение утечки ин- личных межсетевых экранов, которая поможет реализовать
формации ограниченного распространения; защиту от fingerprinting.
! условия, которые необходимы для выполнения це-
лей, – например, наличие демилитаризованной зоны, Пример 1. Конфигурация межсетевого экрана
фильтрация трафика, защита от НСД к архиву эталон- IPFW (для ОС семейства *BSD)
ного программного обеспечения;
! различные профили защиты – например, публичный # Отбрасываем пакеты с нестандартными 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 ↵

72
безопасность
in via xl0 ipoptions rr pass out quick on xl0 proto icmp ↵
# Запрещаем пакеты с Timestampf from 195.195.195.1 to any icmp-type echorep
#/sbin/ipfw add deny log all from any to 195.195.195.1 ↵ pass out quick on xl0 proto icmp ↵
in via xl0 ipoptions ts from 195.195.195.1 to any icmp-type echo
block in log level local3.info quick on xl0 proto icmp ↵
# Запрещаем пакеты с некорректными TCP-флагами. from any to any
# NULL-пакеты – второй тест nmap block out log level local3.info quick on xl0 proto icmp ↵
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ from any to any
in via xl0 tcpßags !syn,!ack,!rst
# XMAS-пакеты – третий тест nmap # Реакция на закрытые порты
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ block in log level local3.info quick on xl0 proto tcp ↵
in via xl0 tcpßags syn,Þn,urg,psh,!ack from any to 195.195.195.1 port = 136 >< 140
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ block in log level local3.info quick on xl0 proto udp ↵
in via xl0 tcpßags syn,Þn,!ack, from any to 195.195.195.1
# Седьмой тест nmap
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ # Разрешаем только правильные tcp-запросы к публичному
in via xl0 tcpßags Þn,urg,psh,!ack # сервису
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ pass in quick on xl0 proto tcp ↵
in via xl0 tcpßags Þn,!ack from any to 195.195.195.1 port = 25 ßags S/S
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ pass in quick on xl0 proto tcp ↵
in via xl0 tcpßags urg,!ack from any to 195.195.195.1 port = 25 ßags A/A
/sbin/ipfw add deny log tcp from any to 195.195.195.1 ↵ pass in quick on xl0 proto tcp ↵
in via xl0 tcpßags psh,!ack from any to 195.195.195.1 port = 25 ßags AP/AP
pass in quick on xl0 proto tcp ↵
# Разрешаем ICMP-пакеты, только echo и echo _ replay from any to 195.195.195.1 port = 25 ßags AF/AF
/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 Пример 3. Конфигурация межсетевого экрана
PF-FILTER (для ОС семейства *BSD)
# Можно различным образом блокировать закрытые порты
# При запросе на закрытый порт можно просто отбрасывать
# пакеты # Нормализация трафика автоматически отфильтрует
/sbin/ipfw add deny tcp from any to 195.195.195.195 ↵ # нестандартные пакеты атакующего, изменит TTL
136-139 in via rl0 scrub in on xl0 all fragment reassemble min-ttl 20 max-mss 1440
# Можно отправлять в ответ tcp rst или icmp host unreachable scrub on xl0 all reassemble tcp
# на запросы к закрытым TCP- и UDP-портам, но такие ответы # можно манипулировать IP-опциями, например, сбрасывать
# убыстряют сканирование и демаскируют межсетевой экран # флаг DF в 0
/sbin/ipfw add reject udp from any to any in via rl0 scrub out on xl0 all no-df
/sbin/ipfw add reset tcp from 195.195.195.195 ↵
to any 136-139 in via rl0 # Фильтрация TCP-флагов
block in quick proto tcp from any to 195.195.195.1 ↵
# Разрешаем только корректные пакеты на порты публичных ßags SF/SFRA
# сервисов block in quick proto tcp from any to 195.195.195.1 ↵
/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ ßags SFUP/SFRAU
in via xl0 tcpßags syn,!ack,!psh,!Þn,!urg,!rst block in quick proto tcp from any to 195.195.195.1 ↵
/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ ßags FPU/SFRAUP
in via xl0 tcpßags ack,!syn,!psh,!Þn,!urg,!rst block in quick proto tcp from any to 195.195.195.1 ↵
/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ ßags F/SFRA
in via xl0 tcpßags ack,psh,!syn,!Þn,!urg,!rst block in quick proto tcp from any to 195.195.195.1 ↵
/sbin/ipfw add pass tcp from any to 195.195.195.1 25 ↵ ßags U/SFRAU
in via xl0 tcpßags ack,Þn,!syn,!psh,!urg,!rst block in quick proto tcp from any to 195.195.195.1 ↵
ßags P/P

# Разрешаем ICMP только echo request и echo reply


Пример 2. Конфигурация межсетевого экрана pass in quick on xl0 proto icmp ↵
IP-Filter (для ОС семейства *NIX) from any to 195.195.195.1 icmp-type echoreq
pass in quick on xl0 proto icmp ↵
Редактируем файл ipf.rules: 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 echoreq
# IP options pass out quick on xl0 proto icmp ↵
block in log level local3.info quick on xl0 ↵ from 195.195.195.1 to any icmp-type echorep
from any to 195.195.195.1 with opt ssrr block in log-all quick on xl0 proto icmp from any to any
block in log level local3.info quick on xl0 ↵ block out log-all quick on xl0 proto icmp from any to any
from any to 195.195.195.1 with opt lsrr
block in log level local3.info quick on xl0 ↵ # Блокируем закрытые порты
from any to 195.195.195.1 with opt rr block in log-all quick on xl0 proto tcp ↵
from any to 195.195.195.1 port 136 >< 140
# TCP ßags block in log quick on xl0 proto udp from any to 195.195.195.1
block in log level local3.info quick proto tcp ↵
from any to 195.195.195.1 ßags SF/SF # Фильтруем входящие пакеты на публичный сервис
block in log level local3.info quick proto tcp ↵ pass in quick on xl0 proto tcp from any to 195.195.195.1 ↵
from any to 195.195.195.1 ßags SFUP/SFUP port = 25 ßags S/SA synproxy state
block in log level local3.info quick proto tcp ↵
from any to 195.195.195.1 ßags FPU/FPU
block in log level local3.info quick proto tcp ↵
from any to 195.195.195.1 ßags F/F
block in log level local3.info quick proto tcp ↵ Пример 4. Конфигурация межсетевого экрана
from any to 195.195.195.1 ßags U/U PIX Firewall
block in log level local3.info quick proto tcp ↵
from any to 195.195.195.1 ßags P/P В межсетевом экране PIX Firewall реализован механизм
ASA, который отбрасывает не SYN-пакеты, которые не яв-
# Разрешенные icmp types
pass in quick on xl0 proto icmp ↵ ляются частью установленного соединения (2, 4, 6, 7 тесты
from any to 195.195.195.1 icmp-type echo NMAP), так что большая часть работы по защите от finger-
pass in quick on xl0 proto icmp ↵
from any to 195.195.195.1 icmp-type echorep printing выполняется по умолчанию.

№6, июнь 2005 73


безопасность
# Разрешаем исходящие ping Операционные системы семейства UNIX позволяют из-
access-group 101 in interface outside
access-list 101 permit icmp any host 209.165.200.246 ↵ менять стек TCP/IP гораздо более гибко.
echo-reply В системе FreeBSD добавим следующие опции в кон-
# Разрешаем входящие ping
access-list 101 permit icmp any host 209.165.200.246 echo фигурацию ядра:

# Включаем анализатор протоколов приложений. Какие точно # Параметр ID в заголовке IP-пакета генерируется случайно
# правила фильтрации использует PIX, не ясно. Но тот факт, Options random _ ip _ id
# что реально клиент устанавливает соединение не с сервером # Отбрасываются пакеты с флагами syn+Þn
# приложений, а с PIX затрудняет Þngerprinting Options tcp _ drop _ synÞn
fuxup protocol ftp 21 Options icmp _ bandlim # Включаем контроль над ICMP
Þxup protocol smtp 25

# Для фильтрации нестандартных или неправильных После этого необходимо пересобрать ядро и перезагрузить
# TCP/IP-пакетов PIX использует встроенную IDS систему. Теперь можно производить настройки на ходу:
# с фиксированным набором сигнатур
ip audit name Þngeraudit atack action alarm drop
ip audit name Þngeraudit info action alarm drop # Определяем реакцию системы при получении пакета
# на закрытый TCP-порт
# Выберем только те сигнатуры, которые имеют отношение sysctl net.inet.tcp.blackhole=2
# к Þngerprinting # Определяем реакцию системы при получении пакета
# Нужные нам сигнатуры: # на закрытый UDP-порт
# ID Название Тип sysctl net.inet.udp.blackhole=1
400000 1000 IP options-Bad option list Informational # Определяем размер окна TCP-соединения
400002 1002 IP options-Timestamp Informational sysctl net.inet.tcp.sendspace=64395
400007 1100 IP Fragment Attack Attack sysctl net.inet.tcp.recvspace=64395
400008 1101 IP Unknown IP Protocol Attack # Определяем TTL в заголовке IP-пакета
1102 Impossible IP Packet Attack sysctl net.inet.ip.ttl=128
400009 1103 IP Fragments Overlap Attack sysctl net.inet.tcp.drop _ synÞn=1
400023 2150 Fragmented ICMP TrafÞc Attack # Указываем ОС изменять параметры window и timestamps
400026 3040 TCP NULL ßags Attack # в соответствии с RFC 1323.
400027 3041 TCP SYN+FIN ßags Attack sysctl net.inet.tcp.rfc1323=1
400028 3042 TCP FIN only ßags Attack
# Остальные сигнатуры можно исключить из политики
no ip audit name Þngeraudit signature sigN Или мы можем закрепить эти параметры в файле /etc/
ip audit interface outside Þngeraudit sysctl.conf.
В операционной системе Linux в конфигурацию ядра
Остальные межсетевые экраны можно сконфигуриро- добавим опции CONFIG_PROC_FS и CONFIG_SYSCTL, ко-
вать соответствующим образом. торые позволяют менять элементы /proc без перезагрузки
системы или перекомпиляции ядра.
Практическая реализация на уровне системы
В зависимости от выбранной стратегии, возможно скрыть # Запрет ICMP echo (ping):
echo "1" > /proc/sys/net/ipv4/icmp _ echo _ ignore _ broadcasts
часть параметров системы, усложнив тем самым вероят- echo "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 _ retries
echo "5" > /proc/sys/net/ipv4/tcp _ syn _ retries 5
Изменение параметров стека TCP/IP # Устанавливаем стандартный размер TCP window
операционных систем echo "64395" > /proc/sys/net/core/rmem _ default
echo "64395" > /proc/sys/net/core/wmem _ default
Так, в Windows мы можем менять следующие параметры # Изменять параметры TCP window и timespamp
стека TCP/IP в разделах реестра HKEY_LOCAL_MACHINE\ # в соответствии с 1323.
echo "1" > /proc/sys/net/ipv4/tcp _ window _ scaling
SYSTEM\Current ControlSet\Services\Tcpip\Parameters и echo "1" > /proc/sys/net/ipv4/tcp _ timestamps
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi- # Разрешить использование SACK в соответствии
# с RFC2018 (SACK будет добавляться в tcp options)
ces\Tcpip\Parameters\Interfaces\ID of Adapter: Echo "1" > /proc/sys/net/ipv4/tcp _ sack
! KeepAliveInterval – время ожидания перед повторной от-
правкой пакета, если на предыдущий ответ не получен. Продукты, которые реализуют защиту системы от fin-
! MTU – максимальный размер пакета, который переда- gerprinting на уровне операционной системы:
ется через сеть. ! FingerPrintFucker
! TcpMaxConnectRetransmissions – количество повтор- ! IP Personality
ных отсылок SYN-пакета, на который не получен ответ ! Morth
при установке соединения.
! TcpMaxDataRetransmissions – количество повторных от- В операционной системе Solaris изменять параметры
сылок остальных пакетов, на которые не получен ответ. TCP/IP можно утилитой /usr/sbin/ndd. Изменения вступают
! TcpWindowSize – максимальный размер окна TCP-со- в силу только после перезагрузки системы.
единения, в байтах.
! DefaultTTL – определяет значение TTL по умолчанию в # Изменяем стандартное значение maximux segmet size.
ndd -set /dev/tcp tcp _ mss _ def 546
заголовках IP-пакета. # Отключим «path MTU discovery» и система перестанет
! Tcp1323Opts=1 – изменять значения TCP window и tim- # ставить бит «don’t fragment»
ndd -set /dev/ip ip _ path _ mtu _ discovery 0
estamps в соответствии с RFC 1323. # Устанавливаем закон генерации ISN действительно

74
безопасность
# случайным образом. ! Замена стандартных баннеров, кодов и ответов ошибок
ndd –set /dev/tcp tcp _ strong _ iss 2
# Изменяем стандартное значение tcp window size возможна путем изменения соответствующих конфигу-
ndd -set /dev/tcp tcp _ xmit _ hiwat 64395 рационных файлов. Это позволяет защитить от finger-
ndd -set /dev/tcp tcp _ recv _ hiwat 64395
# Изменяем стандартное время жизни пакета (TTL) printing внешний почтовый сервер.
ndd –set /dev/tcp tcp _ ip _ ttl 128
Например, в Windows 2000 smtp запустить metaedit.exe,
выбрать lm\smtpsvc\<номер виртуального сервера>: «Edit →
Защита от fingerprinting публичных сервисов new» в ID ввести 36907, в Data ввести баннер.
на верхнем уровне В Postfix редактируем /etc/postfix/main.cf:
Для маскировки приложений можно произвести измене-
ние конфигурации, изменение исходников или установить smtpd _ banner = secure SMTP server
специальное ПО, которое будет фильтровать сетевой тра-
фик на уровне приложения. В Sendmail редактируем sendmail.cf:
Защита от HTTP fingerprinting:
! Замена стандартных баннеров. # SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j secure SMTP server; $b
! Фильтрация или преобразование заголовков HTTP.
! Настройка кодов ошибок, таких как 404 или 500. В EXIM редактируем /etc/exim.conf:
! Использование дополнительного ПО. Для веб-сервера
IIS есть продукт ServerMask, который позволяет настро- smtpd _ banner = secure SMTP server
ить три вышеописанных способа защиты. Он имеет про-
фили для маскировки под различные сервера. В QMAIL необходимо отредактировать файл smtpgreet-
ing, в котором хранится приветственное сообщение.
Для веб-сервера APACHE перед компиляцией в src/inc- Аналогично настраиваются коды и ответы ошибок в кон-
lude/httpd.h находим строки: фигурационных файлах или в исходниках до компиляции.

# deÞne SERVER _ BASEPRODUCT "Apache" Защита от исследования таймеров


# deÞne SERVER _ BASEREVISION "X.X.X"
Возможными контрмерами могут служить, например, мето-
Вместо него напишем (выдаем за ОС Windows + IIS) ды маскирующего перекоса временной диаграммы с улуч-
шенной генерацией случайных чисел.
# deÞne SERVER _ BASEPRODUCT "Microsoft-IIS" Можно отключить timestamps там, где они не нужны (на-
# deÞne SERVER _ BASEREVISION "5.0"
пример, на модемном соединении).
Дополнительно проверим, что в http.conf есть:
# sysctl net.ipv4.tcp _ timestamps=0
net.ipv4.tcp _ timestamps = 0
# IIS не ставит подпись в рапортах об ошибках
ServerSignature Off
# Для того чтобы выдавать только ту информацию,
# которую мы изменили
ServerTokens Min
Заключение
Фильтрация и модификация заголовков и другие методы за-
Защита от SMTP fingerprinting: щиты от fingerprinting, являются элементом «security through
! Фильтрация заголовков исходящей почты защитит obscurity» (безопасности за счет незнания) и не могут ис-
пользовательские почтовые программы и серверные пользоваться в качестве основного средства защиты.
почтовые приложения, расположенные во внутренней
сети организации от ID fingerprinting. Литература и ссылки:
1. http://cherepovets-city.ru/insecure/runmap/runmap-osde-
На внешнем почтовом сервере Sendmail, можно исполь- tect.htm.
зовать опции: 2. http://cherepovets-city.ru/insecure/runmap/runmap-version-
scan.htm.
MASQUERADE _ AS(mail.somedomain.com) 3. http://www.securitylab.ru/49847.html.
MASQUERADE _ DOMAIN(mailofÞce.somedomain.com)
4. http://www.honeynet.org/papers/finger.
чтобы заголовки почтовых сообщений из вашей локальной се- 5. http://lcamtuf.coredump.cx/p0f.shtml.
ти перезаписывались заново так, как будто они посылаются не- 6. Маскировка локальных адресов в QMail – http://
посредственно с почтового сервера mail.somedomain.com. www.folug.org/sviluppo/qmail-masq/qmail-masq.html.
Для почтового сервера QMAIL есть фильтр qmail-masq, 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. Кейт Е. Страссберг. Полный справочник по брандмауэрам.:
ренних почтовых ретрансляторах (relay). Пер. с англ. – М.: Издательский дом «Вильямс», 2004 г.

№6, июнь 2005 75


bugtraq

Обход ограничений безопасности Множественные уязвимости


в Hosting Controller в GNU Mailutils
Программа: Hosting Controller 6.1 HotFix 2.0 и более ран- Программа: GNU Mailutils 0.6.
ние версии. Опасность: Высокая.
Опасность: Средняя. Описание: Уязвимости позволяют удаленному пользова-
Описание: Уязвимость существует в сценарии UserPro- телю вызвать отказ в обслуживании или выполнить произ-
file.asp из-за недостаточной обработки правил доступа. вольный код на целевой системе.
Удаленный авторизованный пользователь может изме- 1. Уязвимость форматной строки обнаружена в imap4d-
нить e-mail целевого пользователя и затем воспользовать- сервере. Удаленный пользователь может с помощью спе-
ся формой восстановления пароля, чтобы получить до- циально сформированной команды вызвать отказ в обслу-
ступ к учетной записи жертвы. Таким образом, злоумыш- живании или выполнить произвольный код на целевой си-
ленник может получить доступ к произвольной учетной за- стеме. Пример:
писи приложения, в том числе и к учетной записи админи-
%n%n%n%n%n die
стратора. Пример:
<form 2. Переполнение буфера обнаружено в утилите mail в
action=»http://[URL]/admin// ↵ функции header_get_field_name() файла mailbox/header.c.
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=»Crkchat@msn.com» type=»text» size=»50»>
< br> 3. Переполнение кучи обнаружено в imap4d-сервере при
Þrstname : <input name=»Þrstname» value=»Crkchat» обработке почтовых сообщений. Удаленный авторизован-
type=»text» size=»50»>
< br> ный пользователь может выполнить произвольные коман-
< input name=»submit» value=»submit» type=»submit»> ды на системе или вызвать отказ в обслуживании.
< /form>
4. Обнаружен отказ в обслуживании в imap4d-сервере
URL производителя: www.hostingcontroller.com. при обработке аргументов команды FETCH. Удаленный ав-
Решение: Способов устранения уязвимости не существу- торизованный пользователь может с помощью специаль-
ет в настоящее время. но сформированной команды заставить приложения потре-
блять все доступные ресурсы на системе.
SQL-инъекция и межсайтовый URL производителя: www.gnu.org/software/mailutils/mailu-
скриптинг в PostNuke tils.html.
Программа: PostNuke 0.750 и более ранние версии. Решение: Установите последнюю версию (0.6.90) от про-
Опасность: Средняя. изводителя.
Описание: Уязвимость позволяет удаленному пользовате-
лю произвести XSS-нападение и выполнить произвольные Повышение привилегий в Qpopper
SQL-команды в базе данных приложения. Программа: Qpopper версии до 4.0.6.
1. Уязвимость существует в сценарии /modules/Mes- Опасность: Низкая.
sages/readpmsg.php из-за недостаточной обработки вход- Описание: Уязвимость существует при обработке конфи-
ных данных в параметре start. Удаленный пользователь гурационных файлов. Локальный пользователь может пе-
может с помощью специально сформированного URL вы- резаписать произвольные файлы с root-привилегиями на
полнить произвольные SQL-команды в базе данных при- системе и создать новые файлы с правами на чтение и за-
ложения. Пример: пись для всех пользователей.
Решение: Установите последнюю версию от производи-
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
Отказ в обслуживании в продуктах Cisco
2. Удаленный пользователь может с помощью специаль- в опции TCP/IP Timestamp
но сформированного URL выполнить произвольный HTML- Программа: VxWorks SN5400 series routers; Cisco CSS11-
сценарий в браузере жертвы в контексте безопасности уяз- 000 switch series; Cisco AP350 и AP1200 series; MGX8200,
вимого сайта. Пример: MGX8800 и MGX8900 series switches.
Опасность: Низкая.
http://[target]/[postnuke _ dir]/modules.php?op=
modload&name=Messages&Þle=rea dpmsg& Описание: Удаленный пользователь может послать пакет
start=0’<h1>cXIb8O3 and sp3x - SecurityReason со специально сформированной TCP timestamp опцией и
</h1>&total _ messages=1
заморозить текущую TCP-сессию.
URL производителя: www.postnuke.com. URL производителя: www.cisco.com.
Решение: Установите последнюю версию (0.750b) с сай- Решение: Установите исправление от производителя.
та производителя.
Составил Александр Антипов

76
web

ИСПОЛЬЗУЕМ IImage
mageM
Magick В ВЕБ-РАЗРАБОТКЕ

Работа с готовыми изображениями – достаточно распространенное явление


в веб-программировании. Построение обычной веб-галереи требует создания уменьшенных
копий картинок, компрессии, конвертации формата, а возможно, и некоторых других
операций по их обработке. Идеальное, на мой взгляд, средство для решения подобных
задач – графический пакет ImageMagick.
КИРИЛЛ СУХОВ
ля подобных действий также с его помощью. Вообще говоря, я ис- именно первый подход. Причины это-
широко применяется библио- пользую не совсем детерминирован- го очевидны – любая работа с графи-
тека GD, имеющая в арсенале ный термин «пакет», хотя данный про- кой означает довольно существенное
своей второй версии , довольно дукт называют обычно библиотекой и потребление ресурсов веб-сервера,
внушительный список функций. даже утилитой. На самом деле это со- а дополнительный интерфейс, как бы
Работать с GD можно посредством гласованный (что немаловажно) набор хорошо он ни был написан, эту нагруз-
PHP, Perl, Tcl и некоторых других язы- утилит для работы с графикой, причём ку отнюдь не уменьшает. Правда, в по-
ков. Она имеет широкие возможности, в полном соответствии с идеологией следнее время появился повод пере-
но качество результирующих изобра- каждая из них выполняет свою задачу. смотреть эту точку зрения, но об этом
жений часто оставляет желать лучше- Конечно, возможности ImageMagick не чуть позже. Кроме того, прямой вызов
го. Кроме того, такие действия, как из- могут сравниться с потенциалом гра- команд пакета даёт доступ ко всем его
менение пропорций, «обрезка» изо- фического процессора, но для наших возможностям.
бражения, манипуляции с цветами, задач это и не нужно. Если вы поль- Конечно, у данного метода есть и
вставка другого рисунка, хоть и воз- зователь *nix-операционной системы, недостатки. У скриптов, вернее, у поль-
можны, но крайне неудобны. Здесь на то ImageMagick у вас, скорее всего, зователя, от имени которого они запу-
помощь приходит пакет ImageMagick уже установлен или по крайней мере скаются, должны быть соответствую-
(http://imagemagick.org), представля- присутствует в дистрибутиве. В про- щие права, но проблемы безопасной
ющий прекрасное средство для обра- тивном случае забираем его по адре- и эффективной работы веб-серве-
ботки изображений. Работа с ним воз- су http://www.imagemagick.org/script/ ра мы в данный момент не обсужда-
можна посредством интерфейсов для download.php (присутствуют также ем. Основные возможности пакета бу-
различных языков программирования версии для Windows и MacOS). дем рассматривать, предполагая, что
(Perl, Python, PHP, C). Сегодня мы рас- его команды запускаются именно та-
смотрим способы и приёмы работы с Способы применения ким образом.
графикой PHP с использованием па- Для PHP-разработчика есть два основ-
кета ImageMagick. ных пути работы с изображениями с по- Возможности пакета
мощью ImageMagic: выполнять коман- Наверное, самая часто используемая
Что представляет собой ды пакета, пользуясь функцией exec() утилита ImageMagic – это convert. Её
ImageMagick? (или system()), или использовать класс возможности мы продемонстрируем
Коротко поясню, чем является этот imagick из репозитария PEAR. Боль- на достаточно типовой задаче конвер-
пакет и какие задачи можно решить шинство программистов применяют тации графических файлов из одного

№6, июнь 2005 77


web
формата в другой. Вот как просто про- net/script/command-line-tools.php) или
ходит эта операция: в документации, идущей вместе с дис-
трибутивом.
// исходный файл
$primary="test.jpg";
// имя нового файла Использование модуля
$secundary ="test2.gif";
exec("convert ". $primary." " ↵
Imagick
test2.gif); Недостатки вызова утилит ImageMa-
gick как внешних программ становят-
Вот и всё! Под именем test2.gif мы ся очевидны, когда операции по ма-
получили копию исходного изображе- нипуляциям с изображениями явля-
ния в новом формате. Рисунок 3. Экспериментируем с цветом ются обычной функциональностью
Разумеется, продемонстрированная Опции утилиты реализуют огром- приложения. Банальный пример – пу-
функциональность довольно скромна, ное количество различных трансфор- бличная веб-галерея со средними воз-
но в справке по convert можно найти бо- маций изображения – изменение раз- можностями. Как уже говорилось вы-
лее 150 (!) опций этой утилиты, ознако- меров и координат, применение разно- ше, класс для работы с пакетом при-
мившись с которыми, начинаешь пони- образных фильтров, размытие, нало- сутствует (вернее, присутствовал) в
мать, почему в названии пакета присут- жение тени и многое другое. На полное репозитарии PEAR. Относительно не-
ствует слово magick. их описание не хватило бы всего жур- давно на его основе был создан PECL-
Скажем, уменьшить вес картин- нала, поэтому лучше кратко опишем модуль imagick, доступный в настоя-
ки можно, просто включив одну из оп- возможности остальных утилит. щее время по адресу: http://pecl.php.
ций: Утилита mogrify во многом повто- net/package/imagick (присутствует и
ряет функциональность convert, но ре- версия под Windows, в виде скомпили-
exect("convert ". $primary." ↵ зультаты преобразования она сохраня- рованной dll, скачать её можно здесь:
-resize 30% ". test.gif);
ет в исходном файле. Кроме того, дан- http://snaps.php.net/win32/PECL_4_3).
Не отступая от традиции, для приме- ная утилита позволяет работать с груп- PECL – это репозитарий модулей PHP,
ра работы библиотеки я взял (не очень пой файлов по маске. не входящих в официальный дистри-
качественную) фотографию (рис. 1). ! Montage – позволяет комбиниро- бутив. Большинство из них находятся
вать изображения, создавать ком- в разработке, а самые успешные ста-
позиции. новятся штатными расширениями (из
! Animate – как видно из названия, недавних это модуль SOAP).
используется для анимации, позво- Расширение устанавливается как
ляет работать с анимированными обычный php-модуль, в папку ext/imag-
gif-файлами. ick (или, в зависимости от версии PHP,
! Combine – комбинирует изображе- в extensions/imagick), затем в конфигу-
ния (очень удобна для нанесения рационном файле php.ini, в секции Dy-
логотипов на картинки). namic Extensions, прописываются соот-
! Import – «снимает» изображение ветствующие строчки:
заданной области экрана.
Рисунок 1. Исходное фото ! Composite – также позволяет созда- ;для UNIX систем
extension= imagick.so
Картинка (в формате jpg) занима- вать композиции нескольких изо- ;для Windows
ет 124 Kb. После вышеприведённо- бражений и изменять форму изо- extension=msql.dll
го преобразования получаем рису- бражения.
нок в формате gif (рис. 2), «весящий» ! Identify – возвращает информацию После перезагрузки веб-сервера, функ-
уже 37 Kb. о параметрах изображения. ции imagick становятся доступны.
Предупреждение для программи-
Утилита conjure стоит несколько стов, решивших опробовать возмож-
особняком, она представляет собой ности пакета на операционной систе-
командный процессор для встроенно- ме Windows, – скомпилированная dll бу-
Рисунок 2. Уменьшаем «вес» фотографии го скриптового языка Magick Scripting дет работать только самой последней
Конечно, потеря качества есть, но Language (MSL). версией интерпретатора PHP.
любой человек, работавший до этого Основная при ручной работе ути- Разумеется, модуль imagick не пре-
с GD, признает результат замечатель- лита display является «обвёрткой» доставит доступ ко всем возможно-
ным. Воспользуемся какой-нибудь ещё для остальных функций преобразо- стям ImageMagick (по уверению его
возможностью convert, например, из- вания графики, нам в данном случае создателя, пока), но наиболее рас-
меним цвета оригинала: бесполезна. пространенные действия с графикой
Более подробную информацию по в веб-программировании в нём уже
exect("convert ". $primary." ↵ использованию утилит пакета можно реализованы.
-coloreze 0, 0, 50 ". test2.gif);
увидеть на официальном веб-сайте К сожалению, на момент написа-
результат на рис. 3. ImageMagic (http://www.imagemagick. ния статьи официальная документа-

78
web
ция на модуль практически отсутство- Пояснять их значение, я думаю, нет
вала, поэтому я постараюсь осветить необходимости. Получить атрибуты
работу всех доступных в данное вре- существующего изображения можно
мя функций. функцией imagick_set_attribute(), при-
Следует также заметить, что рас- нимающей в качестве параметров ука-
ширение в разработке и все его функ- затель и имя атрибута. Сейчас доступ-
ции имеют статус экспериментальных, ны следующие значения:
в частности это обозначает, что ис- ! format ! height
пользовать их нужно осторожно (use ! magick ! width
this function at your own risk). Правда, в ! quality
моей практике никаких опасных сбоев
замечено не было. Работа с расшире- Конечно, список не впечатляет, но
нием происходит так: всё, что здесь написано, касается вер-
сии модуля 0.1, а он активно разраба-
<?php тывается.
$handle = imagick _ create () or ↵
die ("Could not create handle") Imagick_write() осуществляет за- Imagick_convert() преобразует один
imagick _ read($handle,"myimg.gif"); пись результата в указанный файл ло- файл в другой или (когда конечный
imagick _ set _ attribue($handle, ↵
array("quality"=>10, ↵ кальной файловой системы, при этом файл не указан) выводит его в брау-
"format"=>"jpeg"); формат файла определяется по задан- зер. Её упрощённый вариант imagick_
imagick _ write($handle,"myimg.jpg");
imagick _ free($handle); ному расширению. В случае нераспо- dump(), выводит картинку на экран.
?> знавания формата рекомендации та- Imagick_annotate() добавляет к изо-
кие же, как и для функции imagick_ бражению текст, принимая в качестве
В первой строчке функцией imagick_ read(). второго параметра массив его атрибу-
create() мы получаем указатель на но- Наконец imagick_free(), как нетруд- тов. Пример работы этой функции:
вый экземпляр imagick, который по- но догадаться из названия, освобож-
том используем во всех дальнейших дает указатель и все связанные с ним imagick _ annotate($handle,array(
"primitive"=>"text 150,150 ↵
действиях. Затем с помощью imagick_ ресурсы. hello world",
read() считываем существующее изо- Что осталось за рамками нашего "pointsize"=>60,
"antialias"=>1,
бражение. Формат файла при этом небольшого примера? Прежде всего "stroke"=>’green’,
определяется автоматически, если группа функций для преобразования "Þll»=>’#ff7755’,
"font»=>"Arial.ttf",
же этого не происходит, разработчики изображений: "rotate"=>90
рекомендуют использовать префикс ! imagick_copy_shear() – усекает изо- ));
из названия формата, отделённый от бражение до заданных размеров;
имени файла двоеточием (например, ! imagick_copy_ crop() – также усека- Imagick_list-magickinfo() выводит
GIF:mygif.gif). Данная функция позво- ет, но с возможностью задания на- список доступных файловых форма-
ляет задавать в качестве второго пара- чальных координат; тов (в настоящие время таковых бо-
метра и URL (например, http://my.server. ! imagick_copy_rotate() – поворачива- лее 130, правда, некоторые из них до-
com/picture.gif). Другой пример исполь- ет изображение вокруг своей оси ступны только для чтения).
зования imagick_read(): на заданный угол; В заключение хочу заметить, что
! imagick_copy_sample() – масштаби- лидер проекта Imagick, Christian Stock-
<?php рует изображение. er, в предварительной документации к
$handle = image _ new() or die ↵
("Could not connect"); модулю сетует на нехватку у него сво-
imagick _ read($handle, ↵ Все эти функции возвращают ука- бодного времени на доработку и при-
array("mypic.gif", ↵
"http://my.server.com/mypic.png")); затель на новый ресурс, оставляя ис- глашает желающих в ней поучаство-
imagick _ write($handle, ↵ ходный (являющийся входным параме- вать. Как он утверждает: «It’s really not
"PNG:mypic.myext");
imagick _ free($handle); тром) неизменным. very hard». Приветствуются также по-
?> Функция imagick_copy_resize(), так- желания о том, какие функции следу-
же возвращающая указатель на новый ет реализовать в первую очередь. Так
В данном случае применяется image_ ресурс, позволяет задать размеры изо- что, коллеги, всё в наших руках.
new(), синоним и вероятная замена бражения, применить к нему фильтр, а
imagick_create (). также контрастность/размытие (в за- Ссылки:
Функция imagick_set_attribue() из- висимости от знака входного параме- 1. Адрес проекта – http://pecl.php.net/
меняет атрибуты рисунка, получая в тра). На данный момент доступны сле- package/imagick.
качестве второго параметра их мас- дующие фильтры: 2. Examples of ImageMagick Usage –
сив. В настоящее время доступны сле- http://www.cit.gu.edu.au/~anthony/
дующие атрибуты: graphics/imagick6.
! adjoin ! magick 3. Graphics from the command line –
! delay ! quality http://www-106.ibm.com/developer-
! format ! size works/library/l-graf/?ca=dnt-428.

№6, июнь 2005 79


hardware

МОДИФИЦИРУЕМ BIOS

BIOS-моддинг таит в себе практически неограниченные


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

КРИС КАСПЕРСКИ

Е
сли процессор – это сердце ком- правило, уже устаревшую), и раздо- стрять внимание на мелочах, а сразу
пьютера, то BIOS – его душа. быть прошивку для своего оборудо- перейдем к делу.
Качество прошивки определя- вания весьма затруднительно, к тому
ет все! К сожалению, качественные же нет никаких гарантий, что под ви- Что нам понадобится
прошивки в живой природе встреча- дом «улучшенного» BIOS вам не под- Для экспериментов нам потребует-
ются достаточно редко. Разработчики сунут заживо похороненную или, что ся материнская плата с Award-BIOS
допускают грубые ошибки, блокиру- еще хуже, умышленно троянизирован- на борту. Опознать микросхему BIOS
ют многие полезные возможности, в ную версию. очень легко – на ней обычно наклее-
общем, по отношению к потребителю А моддинг? Разве не заманчиво на голографическая этикетка, которую
ведут себя нехорошо. Древние моде- заставить компьютер перемигивать- необходимо оторвать, чтобы обнажить
ли материнских плат, выпущенные до ся клавиатурными огоньками во вре- маркировку. Маркировка представля-
2000 года, зачастую вообще не имеют мя загрузки или выводить красочный ет последовательность цифр наподо-
свежих прошивок и с новым оборудо- логотип на экран?! Одним словом, мо- бие «28F1000PPC-12C4».
ванием (например, жесткими дисками дифицировать BIOS не только мож- Как ее расшифровать? Идем на
большого объема) они уже не работа- но, но и нужно. Главным образом мы http://www.datasheetarchive.com, за-
ют, а ведь могли бы… будем говорить об Award BIOS. В AMI полняем строку запроса и получа-
Многие качественные материнские все сильно по-другому… Однако когда- ем pdf-файл с подробным описани-
платы умышленно препятствуют раз- нибудь мы доберемся и до них. Кстати ем чипа (так называемый datasheet).
гону, имеют скудный диапазон допу- говоря, фирма Award была выкуплена Теперь необходимо найти идентич-
стимых значений или слишком грубый Phoenix и в настоящее время суще- ный или совместимый чип FLASH-па-
шаг их изменения. Разумеется, очень ствует только как бренд. А это зна- мяти, над которым мы, собственно, и
многое зависит и от «железной» ча- чит, что последние версии Phoenix- будем экспериментировать. Его мож-
сти, но без правильной прошивки – ни- BIOS устроены точно так же, как и Aw- но приобрести в специализированном
куда! В сети можно найти множество ard, поскольку их разрабатывает одна радиомагазине или вытащить с поло-
улучшенных прошивок, модернизиро- и та же фирма, правда, на старые про- манной материнской платы. Большо-
ванных энтузиастами, однако все они шивки это утверждение не распростра- го дефицита эти чипы не представля-
ориентированы на вполне конкрет- няется. Впрочем, существуют готовые ют, поскольку в материнских платах
ную модель материнской платы (как редакторы и для них, но не будет зао- используются серийные микросхе-

№6, июнь 2005 81


hardware

Рисунок 1. Микросхема Award BIOS Рисунок 2. Набор BIOS Savior kit Рисунок 3. Положение рук при съемке
с традиционной голографической для безопасного извлечения микросхемы микросхемы
наклейкой, по которой её легко BIOS с материнской платы и «кроватка»
определить для резервного BIOS с переключателем,
устанавливаемым на заднюю панель

мы, выпускаемые независимыми по- ! cbrom – просматривает содержи-


ставщиками. мое BIOS и добавляет новые мо-
Для «горячей» замены BIOS (т.е. дули в прошивку.
выдергивания микросхемы с работаю-
щей платы) русские умельцы аккурат- Все эти утилиты можно найти на
но обвязывают микросхему нитками, а сайте www.rom.by. Там же находится
затем осторожно тянут вверх (можно, замечательный «патчер» BIOS – BP.exe
конечно, просто подковырнуть отверт- (сокращение от «BIOS Patсher»), ис-
кой, но при этом легко что-то закоро- правляющий ошибки в известных ему Рисунок 4. Установка «кроватки»
с двойным BIOS — снизу оригинальная
тить), а вот иностранцы после эпиде- прошивках и разблокирующий многие микросхема, сверху — экспериментальная
мии «чиха» придумали специальные заблокированные возможности. Нашим
приспособления – chip extractor (съем- основным инструментом будет интерак-
щик чипов) и BIOS savior (BIOS-спаси- тивный редактор BIOS Award BIOS Ed-
тель). По сути дела, это одно и то же itor, который можно бесплатно скачать
приспособление, только торговые мар- c http://awdbedit.sourceforge.net.
ки разные. Приобрести их можно в ра-
диомагазинах или заказать по Интер- Как мы будем
нету (см. рис. 1-6). действовать
Еще нам потребуется документа- Модификация BIOS – очень рискован-
ция на чипсет материнской платы. Ком- ное занятие. Малейшая ошибка – и си-
пании Intel и AMD бесплатно выклады- стема отказывается загружаться, вы-
вают все, что нужно на сайт. Другие давая унылый черный экран. Большин- Рисунок 5. Двойной BIOS в собранном
состоянии
производители (VIA, SiS) держат доку- ство современных материнских плат
ментацию под спудом и отдают только снабжено защитой от неудачных про-
за деньги плюс подписку о неразгла- шивок, однако обычно она срабаты-
шении. В частности, на дисках, рассы- вает лишь тогда, когда BIOS действи-
лаемых компанией AMD, встречается тельно поврежден (например, не соот-
много интересной документации со ветствует контрольная сумма).
штампом «confidential», пролистывая Вот для этих целей нам и требует-
которую, ощущаешь волнующее чув- ся второй BIOS! Запускаем материн-
ство причастности к тайне. скую плату, считываем содержимое
Комплект утилит для прошивки прошивки соответствующей утили-
BIOS можно найти на сайте разработ- той (или скачиваем обновленную вер-
чика конкретного BIOS или произво- сию с сайта производителя), модифи- Рисунок 6. Переключатель, отвечающий
за выбор между оригинальным (ORG)
дителя материнской платы. Некото- цируем ее по своему вкусу, затем, не и экспериментальным (RD1) BIOS
рые производители (например, ASUS) выключая компьютера, аккуратно вы-
вносят в BIOS большое количество из- нимаем оригинальный чип, отклады- ке и повторить всю процедуру вновь.
менений, в результате чего «родные» вая его в сторону, и вставляем чип, Другими словами, мы будем экспери-
утилиты от Award перестают с ними над которым мы будем эксперимен- ментировать только над «нашим» чи-
работать и приходится использовать тировать. Остается запустить AWDF- пом, оставляя родной BIOS в непри-
инструментарий, поставляемый вме- LASH.EXE и зашить модифицирован- косновенности.
сте с материнской платой. Обычно там ную прошивку в BIOS. Теперь, случись Насколько такая процедура безо-
содержится: вдруг что, мы всегда сможем вернуть пасна? По правде говоря, опасности
! awdflsh.exe – «прожигатель»; оригинальный чип на место, исправить нас подстерегают на каждом шагу. Ми-
! modbin – простой редактор BIOS; ошибку в экспериментальной прошив- кросхема может выскользнуть из рук и

82
hardware

Рисунок 7. Award BIOS editor, готовый к модификации Рисунок 8. Разблокирование заблокированных возможностей
текстовых строк, отображающихся при загрузке системы в «BIOS Setup» в Award BIOS editor

упасть на плату, малейшая ошибка в команде «load default BIOS configurat- на своем рабочем винчестере недо-
прошивке может вывести оборудова- ion») под свой вкус. Наибольший ин- пустимо! Используйте запасной жест-
ние из строя (например, переключить терес представляют пункты, поме- кий диск, на котором нет ничего цен-
стабилизатор на повышенное напря- ченные как «Disabled». Это и есть оп- ного. Запустите несколько тестирую-
жение, выбрать слишком большую так- ции, заблокированные производите- щих программ и дайте им поработать
товую частоту и т. д.). До приобретения лем! Простым переводом радиокноп- несколько суток. Если за это время не
боевого опыта лучше всего экспери- ки в состояние «Active» мы разблокиру- произойдет ни перезагрузок, ни зави-
ментировать над старыми матерински- ем их! Разумеется, никакой гарантии, саний, можно переходить на основной
ми платами, которые все равно идут в что система после этого заработает, у жесткий диск, на всякий случай, пред-
утиль (например, Pentium-155). нас нет. Чаще всего блокируются не- варительно зарезервировав его содер-
доделанные или нестабильно работа- жимое (см. рис. 8).
Первые эксперименты ющие режимы и возможности. Реже – А хотите изменить логотип, высве-
Запускаем Award BIOS editor (кстати производитель просто не хочет, чтобы чивающийся в северо-восточном углу
говоря, он запускается только из-под материнские платы начального уров- экрана? Это совсем несложно сделать.
GUI, а под FAR просто «слетает»), в ня конкурировали с дорогими моде- Старые BIOS хранили картинку в сек-
меню File выбираем файл с прошив- лями, вот и тормозит их. Нестабильно ции «LOGO» в нестандартном форма-
кой, которую мы будем модифициро- работающая материнская плата спо- те, условно называемом logo-форма-
вать (предварительно ее необходимо собна разрушить содержимое жестко- том. С ним была связана куча огра-
скачать с сайта производителя или за- го диска еще в процессе загрузки Wi- ничений, и требовался специальный
пустить AWDFLASH.EXE с ключом /sy, ndows, поэтому экспериментировать конвертор, иногда прилагаемый к ма-
чтобы сохранить текущую прошивку
в файл). В левой колонке выбираем Как прожигают BIOS схемой FLASH-памяти (читать или про-
пункт «System BIOS» и смотрим, что AMI BIOS имеют специальный интер- жигать), доступный через прерывания
хорошего тут можно изменить. А из- фейс, позволяющий работать с микро- INT 15h и INT 16h (подробности– в Inter-
менить тут можно очень многое! На- rupt List Ральфа Брауна). Award
пример, имя BIOS, высвечивающее- BIOS такой возможности не
ся при загрузке (в моем случае это: имеют и программируются че-
Award Modular BIOS v6.00PGN), да- рез порты ввода/вывода.
ту выхода и название чипсета (03/29/ Конструктивно FLASH-ми-
2001-i815-W83627F-6A69RI3DC-00) и кросхема подключена к юж-
другие идентификационные строки по- ному мосту чипсета, поэтому
добного типа. А давайте напишем «as- описание интерфейса взаи-
sembled at military-industrial USA facto- модействия с BIOS, следует
ry», чтобы потом подшучивать над при- искать именно в документа-
ятелями (см. рис. 7). ции на южный мост. Как вари-
Точно так же можно заменить все ант, можно воспользоваться
надписи в «BIOS Setup» (они находят- готовым программатором, с
ся во вкладке «BIOS Options») и от- которым поставляется все не-
редактировать значения по умолча- Рисунок 9. Микросхема FLASH-памяти, подключенная обходимое программное обе-
нию (те самые, что загружаются по к южному мосту спечение.

№6, июнь 2005 83


hardware
теринской плате, но чаще его Запускаем Award BIOS edi-
приходилось писать самосто- tor, заходим в System BIOS, на-
ятельно. ходим вкладку «Chipset Reg-
Сейчас же секция «LOGO» isters» и открываем докумен-
в большинстве случаев пуста, тацию на чипсет. Где-то там
а картинка хранится в секции должен быть раздел «PCI Con-
«EPA pattern» в стандартном figuration Registers» или что-
BMP-формате. Ограничений то в этом роде. Для каждо-
на размер и глубину цветно- го из регистров будет указа-
сти нет никаких, однако не все но устройство (device), к ко-
BIOS поддерживают слишком торому он «подключен», но-
большие и цветастые картин- мер функции (function) и но-
ки. Что произойдет, если под- мер самого регистра, также
сунуть BIOS картинку, кото- называемый смещением (of-
рую он не в состоянии обра- fset). Все регистры 8-битные,
батывать? Ничего страшно- однако несколько последова-
го! Система либо откажется тельных регистров могут объ-
выводить ее на экран или вы- единяться в слова или даже
ведет с искажениями. Чтобы двойные слова.
не попасть впросак, рекомен- Сравнение конфигураци-
дуется отталкиваться от уже онных возможностей чипсета
существующей картинки: из- с BIOS Setup показывает, что
влекаем оригинальный лого- Рисунок 10. Страничка из документации на чипсет, часть настроек в ней отсут-
тип в файл (в Award BIOS Edi- описывающая конфигурационные регистры ствуют. Даже в заблокирован-
tor за это отвечает команда «Export as ки в настойках BIOS и увеличить ее! А ных возможностях (о которых мы уже
Windows BMP»), загружаем его в Paint для этого нам вновь пригодится Award говорили выше) их нет! В частности,
и правим в свое удовольствие без из- BIOS editor (см. рис. 11). мой любимый AMD 761 поддерживает
менения глубины цветности и разме- А вот еще один трюк. Запустив уже намного больший диапазон таймингов,
ров. Один из примеров такой работы упомянутую утилиту BP.EXE с ключом чем указано в BIOS Setup. Взять хо-
приведен ниже. /c, мы сможем вручную задать имя про- тя бы величину tPR (time to precharge),
При желании можно зашить в BIOS цессора, высвечивающееся при за- определяющую время закрытия DR-
полноэкранный логотип, высвечива- грузке, и его тактовую частоту. Реаль- AM-страницы, в процессе которого
емый при загрузке. Этим занимается ная тактовая частота отображаться происходят возврат данных в банк па-
одноименная утилита от Award, вхо- уже не будет. Почему бы не написать мяти и его перезарядка. По умолчанию
дящая в штатный комплект поставки «AMD Pentium-V 666 GHz beta» и не по- BIOS ставит 3 такта и не дает его изме-
многих материнских плат ASUS. Од- хвастаться перед друзьями?
нако в некоторых BIOS задержка вы- Да много чего можно придумать! В
вода полноэкранного логотипа столь умелых руках BP.EXE и Award BIOS ed-
мала, что ряд CRT-мониторов просто itor творят настоящие чудеса! Как бы
не успевают прогреться за это время! там ни было, после всех издевательств
Но ведь не переходить же ради это- прошивка должна быть залита в BIOS.
го на LCD-монитор? Разумеется, нет! О том, как это сделать, можно прочи-
Достаточно найти величину задерж- тать в документации на материнскую
плату (см. рис. 12).
Редактирование BIOS
Некоторые утилиты, например, WP- Настройка PCI-регистров Рисунок 11. Изменение стандартного
CREDIT.EXE, позволяют редактиро- Конфигурирование чипсета осущест- логотипа, выводимого при загрузке
на экран
вать содержимое регистров чипсета вляется специальными регистрами,
«на лету» прямо из-под Windows, что доступными через шину PCI. При за-
особенно полезно для экспериментов грузке системы BIOS настраивает про-
по экстремальному разгону систем, цессор, контроллер системной шины,
однако их возможности весьма огра- контроллер оперативной памяти и всю
ниченны, поскольку многие регистры прочую периферию в соответствии с
должны настраиваться лишь на ста- настройками, выбранными в «BIOS
дии инициализации чипсета и всякая Setup». Однако практически ни один
попытка их изменения на работающей BIOS не дает доступа ко всем настрой-
системе носит непредсказуемый ха- кам чипсета или умышленно ограни-
рактер или не носит вообще никакого чивает диапазон доступных значений. Рисунок 12. Прожигание BIOS
(чипсет нас попросту игнорирует). Как быть, что делать? специализированной утилитой от ASUS

84
hardware
нять. Чтобы сократить tPR до вания BIOS или расширения
1 такта, необходимо модифи- его возможностей. Они пере-
цировать 8 и 7 биты регистра числены во врезке.
Dev 0:F0:0x54, присвоив им В рамка х одной- един-
значение 2 («10» в двоичной ственной статьи просто не-
нотации). Остальные биты не возможно охватить все под-
трогать! А как это сделать? робности этого увлекатель-
Необходимо наложить ма- ного процесса целиком, по-
ску (mask), которая в данном этому не воспринимайте ее
случае будет выглядеть так: как законченный путеводи-
«XXXX XXX1 1XXX XXXX». тель. Скорее это пригласи-
Как видно, 8 и 7 биты установ- тельный билет в удивитель-
лены в единицу, остальные ный мир, скрытый в недрах
помечены знаком «Х», указы- небольшой микросхемы. И
вающим BIOS, что данный бит пускай кто-то скажет, что ре-
необходимо оставить без из- дактирование BIOS носит
менений (см. рис. 10). скорее познавательный, чем
Запись «Dev0:F0:0x54» практический характер (уста-
обозначает: Device 0:Function Рисунок 13. Разгон системы при помощи редактирования навливать «разблокирован-
0:Register 0x54. На самом де- конфигурационных регистров ный» BIOS в ответственный
ле этих регистров целых два. Регистр ши возможности будут довольно огра- сервер я бы не рискнул)! Но должны
0x54 хранит младшую, а 0x55 – стар- ничены. же у администратора быть хоть ка-
шую половину слова. Следователь- кие-то развлечения, тем более что
но, в 0x54 необходимо занести 80h Заключение экспериментировать со списанными
(«10.00.00.00»), а в 0x55 – 01h. Соот- Кроме Award BIOS editor существуют материнскими платами никто не за-
ветственно в первом случае маска бу- и другие программы для редактиро- прещает!
дет равна 80h («1X.XX.XX.XX»), а во
втором 01h. DUAL-BIOS своими руками
Возвращаемся к Award BIOS Edi- Каждый радиолюбитель, умеющий
tor, находим регистр с номером 0x54 держать паяльник в руках, может дора-
и, кликнув правой клавишей мыши, ботать материнскую плату, установив
выбираем пункт «modify». В появив- на нее сразу две микросхемы FLASH–
шемся окне первые три поля (Regis- памяти. Тогда между ними можно бу-
ter, PCI, PCI) оставляем без измене- дет переключаться без труднодоступ-
ний (это номер регистра, устройства ного и притом весьма дорогостоящего
и функции), а вот с двумя последую- chip-extractor. Как видно из рис. 14, ни- Рисунок 14. Принципиальная схема
щими полями «Resister» и «Value» при- чего сложного в DUAL-BIOS нет. DUAL-BIOS
дется разобраться особо. Мы не можем
просто взять и записать значение 0x- Интересные ссылки: 8. Исходные тексты пары устаревших
80, поскольку в этом регистре уже хра- 1. http://www.biosmods.com (на англ.) прошивок (на ассемблере): http://
нятся какие-то параметры, модифи- 2. Статьи по прошивке и их доработ- miscellaneous.newmail.ru.
цирующие остальные поля. Мы долж- ке (на русс.): http://www.rom.by. 9. Описание формата BIOS для его
ны устанавливать лишь «наши» би- 3. FAQ по BIOS (на рус.): http://www. ручной распаковки (на рус.): http://
ты (в данном случае это бит 7), а над ixbt.com/mainboard/faq/biosfaq.shtml. www.winsov.ru/bios002.php.
остальными выполнить операцию ло- 4. Сайт хакера, исследовавшего ку- 10. Статья по редактированию реги-
гическое «OR» по маске. Аналогичным чу BIOS вдоль и поперек (на англ.): стров чипсета (на рус.): http://www.
образом настраивается и регистр 55h http://www.geocities.com/mamanzip. tweakfactor.com/articles/tweaks/
(см. рис. 13). 5. Статья о модификации BIOS (на amd762/1.html.
Залив обновленную прошивку в англ.): http://www.ryston.cz/petr/bios/ 11. Разгон системы путем редактирова-
BIOS и установив качественные моду- ga586hx_mod.html. ния регистров чипсета: http://www.
ли памяти, мы с удовлетворением за- 6. Статья известнейшего хакера по overclockers.com/tips105/index.asp.
мечаем, что быстродействие системы внедрению своего кода в BIOS (на 12. Утилита для модификации регист-
ощутимо возросло, особенно на опера- англ.):http://www.codebreakers-jour- ров чипсета: http://www.h-oda.com.
циях хаотичного доступа к памяти, ког- nal.com/include/getdoc.php?id=83& 13. Редактор Award BIOS: http://awd-
да закрытие DRAM-страниц происхо- article=38&mode=pdf. bedit.sourceforge.net.
дит чуть ли не на каждом шагу. 7. Новые идеи по внедрению своего ко- 14. Утилита для автоматизированно-
Аналогичным образом можно ре- да в BIOS (на англ.): http://www.code- го внедрения своего кода в BIOS:
дактировать и остальные регистры, от- breakers-journal.com/include/getdoc.p http://webzoom.freewebs.com/tmod/
сутствующие в BIOS Setup, однако на- hp?id=127&article=58&mode=pdf. Awdhack.zip.

№6, июнь 2005 85


IMHO

РАЗМЫШЛЕНИЯ О UNIX
Различия операционных систем семейств Windows и UNIX видны практически
с первого взгляда и в процессе работы становятся все более отчетливыми.
Попытаемся обобщить и систематизировать основные принципы UNIX,
делающие представителей этого семейства операционных систем именно
такими, какие они есть.
СЕРГЕЙ СУПРУНОВ

П
онимание этих особенностей, В-четвертых, квалифицирован- разработчик худо-бедно пытается что-
причем не на интуитивном уров- ный пользователь может захотеть из- то гарантировать, то есть берет на се-
не, а вполне осознанное, долж- менить поведение системы в соответ- бя ответственность за работу продава-
но помочь пользователям, «воспитан- ствии со своими предпочтениями. Дей- емой им системы (по крайней мере, на
ным» на DOS и Windows, при перехо- ствительно, требования понятности и уровне рекламных сообщений). Моди-
де на UNIX-подобные системы. Я не эргономичности слишком субъектив- фицируемость при этом сведена прак-
претендую на абсолютную истинность ны, чтобы любое действие можно бы- тически к нулю – делать можно только
мыслей, которые здесь прозвучат. Так ло подогнать под предпочтения абсо- то, что предусмотрено инструкцией (то
или иначе, но каждый будет пропускать лютно всех. Отсюда вытекает требо- есть, определен ряд процедур, отсюда
все сквозь призму своего опыта. вание модифицируемости. и название – «процедурные»). Мини-
В-пятых, система должна береж- мизация ресурсных требований также
Какой должна быть но относиться к вверенным ей ресур- отодвинута на задний план – пользова-
идеальная ОС? сам. Любая задача должна решаться тель скорее согласится подождать не-
Для начала попытаемся сформулиро- по возможности «малой кровью», ис- сколько лишних секунд, любуясь кра-
вать некоторые требования к идеаль- пользуя только те ресурсы, которые сивыми картинками на экране, чем
ной с точки зрения конечного пользо- действительно необходимы. Назовем вспоминать консольную команду, кото-
вателя операционной системе. это требованием экономности. рая отработает за доли секунды. Такая
Во-первых, система должна быть Заметили противоречие требова- расстановка приоритетов вполне оче-
понятной, не требующей обучения ний ответственности разработчика и видна, если учесть, что основная зада-
(разве что экспресс-курсов вождения модифицируемости? Действительно, ча подобной операционной системы –
мыши) для начала работы. Назовем как разработчик будет что-либо га- продаваться. Типичный представитель
это требованием интуитивной по- рантировать, если пользователь мо- процедурных систем – Windows.
нятности. жет сам менять систему? Проективные системы (прежде
Во-вторых, с системой должно быть Есть еще одно противоречие, на всего это UNIX и производные) исто-
удобно работать. Из курсов эргономи- первый взгляд неочевидное, – между рически разрабатывались для «вну-
ки и психологии известна так называе- требованиями экономности и интуитив- треннего потребления». Отсюда мак-
мая формула «7 ± 2», согласно которой ности. Чтобы система была понятна че- симум внимания модифицируемости
человек способен охватить своим вни- ловеку, она должна быть максимально системы (модификация выполняется
манием одновременно от 5 до 9 объек- приближенной (хотя бы по внешнему путем разработки «проектов» на язы-
тов. Таким образом, и операционная виду) к тем инструментам, которыми он ке инструментальной области, поэтому
система должна строиться с расче- привык пользоваться в своей «неком- такие системы и называют проектив-
том, чтобы пользователю не приходи- пьютерной» жизни. Кнопочки должны ными) и ее экономности – чем меньше
лось постоянно держать в уме большее «нажиматься», рычажки «опускаться», ресурсов она будет требовать для той
количество возможных действий, клю- лампочки «загораться»... Все это, есте- или иной задачи, тем больше можно
чей и т. д. То есть важно, чтобы конеч- ственно, требует дополнительных ре- будет сделать за то же время при той
ный результат мог быть получен за не- сурсов и совершенно бесполезно соб- же стоимости оборудования.
большое количество «ходов». Это бу- ственно для решения задачи.
дет требование эргономичности. Документирование систем
В-третьих, разработчики системы Процедурные Эти ключевые различия повлекли ряд
должны гарантировать, что их детище и проективные ОС других. Так, совершенно по-разному
будет в любой ситуации вести себя так, На стыке этих противоречий и роди- осуществляется документирование
как описано в инструкции (не забывай- лось деление операционных систем процедурных и проективных систем и
те, что речь идет об идеальной систе- на два типа – процедурные и проектив- разрабатываемого для них ПО. В си-
ме; юридически такие гарантии предо- ные. Первые из них, преимущественно стемах типа Windows документируются
ставляют единицы). То есть добавля- коммерческие, пошли по пути «ублаже- исключительно действия пользовате-
ется еще требование ответственно- ния» пользователя – максимум внима- ля, которые он должен совершить, что-
сти разработчика. ния уделяется интуитивной понятности, бы получить желаемые свойства того

86
IMHO
или иного объекта. То есть документа- что существенно повышает эффектив- по электронной почте, то было бы не-
ция вырождается в инструкцию. ность работы, не перегружая систему рационально писать еще одну – для от-
В UNIX, наоборот, информация о зависимостями (но привязывая разра- правки отсортированных данных. По-
системе приобретает первостепенное ботчика к средствам, которые предо- этому в любой UNIX-подобной систе-
значение. Поскольку в силу требова- ставляет ОС). ме вы найдете множество небольших
ния экономности интерфейс ориенти- утилит, каждая из которых выполняет
рован в первую очередь на удобство Кто несет ответственность: достаточно узкую задачу, зато дела-
для системы, а не для пользователя, разработчики ет это очень хорошо. Комплексная же
то любой инструмент такой ОС дол- или пользователь? задача раскладывается на последова-
жен быть снабжен подробным описа- Следующий принцип, вытекающий из тельность простых операций.
нием того, как им пользоваться. Чтобы требования модифицируемости, – от- Кстати говоря, применение кана-
иметь возможность модифицировать каз от ответственности разработчика. лов отвечает и требованию эргоно-
систему, информация о ней должна Раз пользователь вправе менять в си- мичности – проще запомнить несколь-
быть еще более полной и охватывать стеме все, что ему заблагорассудит- ко утилит и в дальнейшем комбиниро-
не только возможные способы ее ис- ся, то и вся ответственность за послед- вать их в различных сочетаниях, чем
пользования, но и описывать внутрен- ствия ложится на него. То есть UNIX держать в уме десятки и сотни команд
нее устройство. Говоря другими слова- ориентирован на квалифицированно- на все случаи жизни.
ми, проективная система должна быть го пользователя, который любое дей-
информационно открытой. И верхом ствие выполняет осознанно. А раз так, Что в итоге
такой открытости являются доступ- то можно сэкономить немного (а иногда Описанные выше принципы, есте-
ные исходные коды, поскольку ника- и много) ресурсов на «откате» – поль- ственно, не являются догматически-
кое описание на естественном языке зователю предоставляется возмож- ми, и разработчики различных инстру-
не может обладать такой полнотой. ность отменить последнюю операцию ментов и дистрибутивов операционных
только в том случае, если существует систем вольны смещать акценты в ту
Использование системных вероятность опечатки. Например, в ре- или иную сторону. Например, в редак-
ресурсов дакторе vi существует отмена послед- торе vim может быть отменено любое
Благодаря информационной открыто- него действия, но только последнего – количество последних операций – его
сти сторонние разработчики получи- у пользователя будет время увидеть разработчики решили пожертвовать
ли возможность широко использовать свою ошибку и исправить ее, а если со- некоторыми ресурсами системы ра-
системные средства, следуя при этом всем «заредактируется» – всегда к его ди дополнительного удобства пользо-
требованию экономности (зачем пи- услугам возможность выйти без сохра- вателя. (По мнению некоторых, такое
сать и помещать в систему то, что уже нения. При работе в командной строке, отступление от идеологии развраща-
написано). Думаю, каждый, кто ставил как правило, ни возможности возврата, ет, поскольку отучает обдумывать каж-
что-нибудь, например, из коллекции ни дополнительных вопросов не преду- дый свой шаг.) Системы Linux, ориенти-
портов FreeBSD, обращал внимание сматривается. Действительно, вряд ли рованные на среднеквалифицирован-
на массу дополнительных пакетов, свя- можно совершенно случайно набрать ного пользователя, все больше внима-
занных с устанавливаемым. В отдель- «rm -Rf/ ». А раз уж эта команда была ния уделяют графическому интерфей-
ном случае необходимость устанавли- набрана, значит, именно она и должна су и пошаговым процедурам настрой-
вать дополнительные пакеты ради не- быть выполнена. В конце концов, это ки, хотя их «проективность» в полной
скольких функций выглядит очень не- оскорбительно, когда какая-то «желе- мере доступна через окно термина-
эффективной, но в целом для системы зяка» сомневается в правильности ва- ла. Такой гибридный подход к постро-
позволяет сэкономить и на разработке, ших решений. ению системы сыграл далеко не по-
и на поддержке, и в некоторых случаях следнюю роль в увеличении популяр-
на дисковом пространстве. Применение конвейерных ности Linux как для домашних машин
При работе с процедурными систе- операций и рабочих станций, так и для построе-
мами многие нужные функции прихо- Еще один из основополагающих прин- ния серверов.
дится разрабатывать с нуля, за исклю- ципов систем UNIX – широкое исполь- В целом можно сказать, что систе-
чением тех, которые реализованы в тех зование «конвейерных» операций, ког- мы UNIX требуют гораздо большей от-
или иных API. В итоге программные да конечный результат достигается ветственности, зато и делать позволя-
продукты приобретают определенную за счет последовательной работы не- ют гораздо больше. Не ждите от них,
самодостаточность, но вынуждены скольких утилит, каждая из которых что они будут вести вас за руку или по
обеспечивать весь требуемый функци- выполняет определенную задачу и от- нескольку раз уточнять, действитель-
онал, не предоставляемый операцион- дает промежуточный результат на вход но ли вы хотите сделать нечто такое,
ной системой, что в целом может ока- следующей утилите. Идея конвейера последствия чего будут необратимы.
заться избыточным. В последнее вре- (канала) естественным образом проис- UNIX – послушный исполнитель, кото-
мя разработчики коммерческих ОС все текает из требования экономности: ес- рый воспринимает вас как полновласт-
большее внимание уделяют возмож- ли есть программа, умеющая сортиро- ного хозяина и безукоризненно выпол-
ности использовать системные функ- вать входной поток данных, и есть про- нит любую вашу команду. И именно вы
ции при разработке прикладного ПО, грамма, умеющая отправлять данные отвечаете за любой результат.

№6, июнь 2005 87


полезные советы

СИСТЕМНЫЙ АДМИНИСТРАТОР –
ИЩЕМ ДОПОЛНИТЕЛЬНЫЕ ИСТОЧНИКИ ДОХОДА

Ваша сеть отлажена и работает, как швейцарские часы, появилось свободное время и желание
зарабатывать больше. Однако смена работы в ближайшие планы не входит, а работодатель
не в состоянии увеличить вам зарплату. Лучший вариант в этой ситуации – искать
дополнительные источники дохода.
РОМАН МАРКОВ

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

88
полезные советы
товка, повышение квалификации и по- ся перевод backend-серверов (файло- интересам периодически организуют
иски новых идей. вых служб, печати, web и т. п.) на дру- встречи «за пивом», на которых специ-
гие ОС. В этом случае на клиентских алисты знакомятся воочию, а также ве-
С чего начать? компьютерах все равно остается Win- дут неспешные беседы. Обязательно
Прежде всего с оценки собственной dows, а сервер администрирует «при- приходите на такие встречи – на них
квалификации. Именно исходя из это- ходящий специалист». Однако стоит вы сможете на других посмотреть и
го вы сможете понять – нужно ли сроч- помнить, что никто не захочет нани- себя показать, понять, кто может быть
но ее повышать (либо осваивать дру- мать «только серверного специалис- полезен вам, а кому, возможно, окаже-
гие технологии – об этом мы также по- та» – вам придется настраивать и кли- тесь полезны вы. Это не означает, что
говорим) или уже можно брать «с мес- ентские компьютеры. вы обязательно должны быть профес-
та в карьер». Тут возможным решени- сионалом для участия в них. Напро-
ем является совмещение самообразо- Как рассказать о себе тив, это поможет накопить хорошую
вания и поиска дополнительной рабо- другим? базу знаний о проблемных ситуациях,
ты, а зачастую – и повышение/расши- Теперь стоит задуматься о том, что не- не проверяя их на себе. Постепенно
рение своей квалификации уже на до- обходимо делать, чтобы о вашем су- опыт будет расти, и задавать вопросы
полнительном рабочем месте. Стоит ществовании, профессиональных на- вы будете гораздо реже, чем отвечать
ответить на вопрос – а какие все-таки выках и желании осуществлять пер- на них. Однако помните, что стремле-
сети и программное обеспечение вы в воначальные настройки и в дальней- ние как можно больше «засветиться»,
состоянии администрировать, не напря- шем вести новые фирмы узнали дру- отвечая не по существу, а также на воп-
гаясь и не затрачивая на это более од- гие люди. В данном случае это не ба- росы, в которых вы некомпетентны,
ного часа в день. На самом деле, да- нальное размещение резюме на спе- принесет только отрицательную славу.
же час в день – это много при удален- циализированных сайтах (хотя это то- Лучше меньше, но абсолютно точно.
ном администрировании небольшой же не будет лишним), а своеобразная Пройдет много времени, прежде чем
сети до 10-20 компьютеров. Мой лич- личная реклама. Не буду учить вас со- другие участники смогут нанять вас,
ный опыт, а также информация коллег ставлять резюме – этих советов в Ин- вместо того чтобы сделать работу са-
показывают, что, как правило, при от- тернете более чем достаточно. Старай- мостоятельно. Однако главный минус
лаженной схеме на это тратится не бо- тесь основывать собственное продви- саморекламы среди коллег состоит в
лее двух-трех часов в неделю при усло- жение так, чтобы максимальное коли- том, что все они получают зарплату за
вии, что система отлажена и работает чество потенциальных заказчиков или свой труд, и даже если вы приобретете
безупречно, а пользователи не зада- те, кто с ними работает по другим дого- репутацию исключительного професси-
ют глупых вопросов каждые 5 минут. ворам (это наиболее важно), знали о онала, их фирмы все равно не смогут
На этих аспектах мы более подробно том, какой вы высококлассный специ- предложить вам даже разовые рабо-
остановимся далее. алист. Чтобы создать такую рекламу, ты – очень трудно объяснить руковод-
Теперь необходимо упомянуть о необходимо придерживаться следую- ству, что необходимо нанимать специ-
профессиональных навыках. Не хо- щих рекомендаций: алиста со стороны.
чется обидеть уважаемых и чтимых Участвуйте в специализирован- Для эффективной саморекламы
мной представителей UNIX-сообще- ных интернет-конференциях. При принимайте участие не только в кон-
ства, однако на данный момент сред- этом не стоит метаться от одного фо- ференциях для системных админис-
нестатистической операционной си- рума к другому. Гораздо лучше будет траторов. Крайне полезным окажется
стемой для рабочих станций (да и для выбрать от одной до трех конференций участие в форумах для смежных спе-
серверов) в мелких и средних российс- и принимать в них участие постоянно. циальностей – программистов бухгал-
ких фирмах все же является Microso- Это только на первый взгляд кажется, терских систем, например 1С:Предп-
ft Windows. Поэтому, если вы действи- что такие ресурсы предназначены ис- риятие, даже если вы не являетесь та-
тельно хотите получить возможность ключительно для коллективного реше- ким специалистом. В данный момент
дополнительного заработка, эти ОС ния существующих проблем. На самом одним из самых популярных общерос-
придется хорошо изучить. В против- деле там вы должны больше отвечать сийских форумов является «Террито-
ном случае вы не будете востребова- на вопросы, а не только приобретать рия 1С» на www.kuban.ru. Однако сто-
ны большинством таких компаний, а опыт. Обязательным условием являет- ит помнить, что в нем действительно
именно они и являются для вас потен- ся использование одного уникального участвуют почти все города России и
циальными клиентами. Любые фразы Nickname, так как именно по нему вас некоторые города СНГ, поэтому, может
о том, что «можно все настроить под со временем будут отождествлять с быть, понадобится дополнительно най-
Linux, 1С запустить в режиме эмуля- профессионалом высокого класса. Вы- ти похожий ресурс для своего региона.
ции, а OpenOffice абсолютно такой же, бирая Nickname старайтесь, чтобы он Почему же так полезно участвовать в
как и Microsoft Office» почти во всех был не тривиальным. Например, имена подобных форумах и почему в конфе-
случаях обречены на провал – никто типа «Alex» совершенно не унифициро- ренциях именно этого направления вы
не захочет работать в другой опера- ваны (если только на форуме зарегист- имеете шанс найти своего потенциаль-
ционной среде, обучаться заново и пр. рировано не 10 человек, а такие ресур- ного работодателя?
При этом я ни в коем случае не говорю сы никакой пользы не принесут). Поми- Дело в том, что на таких конферен-
о том, что проблематичным окажет- мо виртуального общения, форумы по циях под грифом «Offtopic» постоянно

№6, июнь 2005 89


полезные советы
появляются вопросы системно-техни- ли данные очные знакомства подкре- полнительных источников дохода мне
ческой направленности. Именно на них плять дальнейшей постоянной помо- приносят именно они. Встречи носят
вы и должны отвечать – грамотно, чет- щью на таком форуме – очень скоро вы организованный характер, проходят в
ко и наиболее информативно для непос- приобретете популярность именно как ресторанах с банкетным меню. Обяза-
вященных. Прямая реклама недопусти- грамотный сетевой специалист. Даль- тельным атрибутом в последнее время
ма не только по правилам таких конфе- нейшее общение обязательно прине- стал проектор, на котором специалис-
ренций. Пока вы не приобрели хотя бы сет вам для начала маленькие пору- ты демонстрируют новинки. При этом
виртуальную известность профессиона- чения в виде разовых работ по на- темы докладов не всегда посвящены
ла, никто не обратит внимания на вас. стройке, а в дальнейшем и постоян- данному специализированному про-
Напротив, обзовут барыгой. ные контракты на обслуживание. Ва- дукту. На последней встрече я догово-
Опишем данный процесс подроб- ша главная задача – правильно себя рился о включении в программу вечера
нее. Это не теория, а именно практичес- позиционировать и обязательно лич- моего выступления, в котором по воз-
кий опыт реализации, проверенный и но знакомиться с та кими специали- можности понятно рассказал про осно-
приносящий свои плоды. стами. Не следует бояться посещать вы системной интеграции. Тем самым
Первая задача, стоящая перед такие мероприятия по причине того, для старых участников была закре-
PR-специалистами при организации что вы плохо разбираетесь конкрет- плена уже существующая репутация,
какой-либо рекламной акции, – пра- но в данном программном продукте и а для новичков – доведена информа-
виль ный выбор целевой аудитории направлении. Если грамотно провести ция о том, что в их компании есть гра-
для продвижения товаров или услуг. подготовительную работу на форуме, мотный сетевой специалист.
Именно с этого начинается планиро- отвечая на вопросы, являющиеся ва-
вание всей акции. Неправильный вы- шим коньком, то на встрече вас узна- Как успешно провести
бор целевой аудитории приводит к от- ют, вспомнят и будут очень часто обра- переговоры?
сутствию необходимого количества от- щаться за советом. Именно во время Теперь стоит поговорить о стиле про-
кликов, а значит, к общей неэффектив- таких встреч вы обрастете нужными ведения переговоров, если вас уже
ности. Этим, кстати, объясняется низ- контактами и оставите свои коорди- пригласили на собеседование, чтобы
кая эффективность продвижения ва- наты для потенциальных заказчиков. подробнее ознакомиться с предлага-
ших услуг с использованием профес- Не забудьте визитки. Указанная в них емыми вами услугами и рассказать
сиональных конференций системных должность должна сразу отвечать на о тех проблемах, которые необходи-
администраторов. Однако совсем отка- вопрос: почему необходимо обратить- мо ре шить. Очень внимательно от-
зываться от участия в них нельзя – та- ся именно к вам? Например: «Систем- неситесь к этим советам – они не го-
кая самореклама все равно пригодит- ный администратор», «Ведущий техни- лословны и в большинстве своем по-
ся вам не раз. Познакомившись с вир- ческий специалист» и т. д. Если у вас могают выделиться из числа других
туальными коллегами в обычной жиз- нет визиток, закажите их в любой по- кандидатов.
ни и обозначив свои профессиональ- лиграфической фирме – их цена на се-
ные навыки, вы потом еще не раз вос- годняшний день крайне низка. Предварительная
пользуетесь их помощью, а они спро- Всегда помните, что делать прямые договоренность о встрече
сят что-то у вас. Завязав хорошие зна- или косвенные намеки на то, что вы мо- Как правило, это телефонный звонок.
комства, есть шанс затем получить от жете решить сложный вопрос за день- Уже в этот момент вы должны произве-
коллег контакт заказчика, который хо- ги, на форумах запрещено. Но когда сти первое впечатление на потенциаль-
тел бы что-то заказать у них, но выпол- репутация хорошего специалиста бу- ного заказчика, ведя разговор четко и
нить это они не в состоянии по причи- дет заработана, ситуация может поме- уверенно. Дайте понять собеседнику,
не занятости либо некомпетентности в няться, так как даже завуалированный что вы деловой человек, проявив пун-
конкретной области. намек на то, что вы можете помочь, вы- ктуальность при назначении времени
Участие же в форумах несетевой зовет обращение к вам другим спосо- встречи. Четко оговорите дату, время и
направленности принесет вам гораз- бом (например, по уже известному лю- место встречи, узнайте, кого необходи-
до больше заказчиков, так как авто- дям телефону). мо будет найти (ФИО и должность), ка-
матизированная система бухгалтерс- К сожалению, такое повышение кие документы необходимо взять с со-
кого учета используется практически собственной известности в определен- бой. Всегда имейте при себе паспорт,
на любом предприятии. Соответствен- ных кругах – сложный, трудоемкий и чтобы не попасть впросак на проход-
но специалисты, участвующие в этих долгосрочный процесс. Однако он при- ной, вынудив сотрудника ком па нии
конференциях, в большинстве своем носит великолепные результаты, и в улаживать эти вопросы. Назначайте
об слу жи ва ют эти системы. И имен- какой-то момент вы начнете понимать, встречу на точное время, а не «с утра
но они часто задают вопросы, четко и что даже через несколько месяцев от- до обеда» – цените время других, и
ясно отвечая на которые, вы обрете- сутствия на форуме вас по-прежнему они оценят вас. Максимально допусти-
те популярность профессионала. Для будут приглашать на встречи. Напри- мое уточнение времени – до 30 минут,
начала эта известность будет вирту- мер, в Санкт-Петербурге такое нефор- при условии вашей ссылки на трудно-
альной. Однако после нескольких дру- маль ное общение специалистов по сти проезда из-за пробок. Наличие ав-
жеских встреч «за пивом» вас будут платформе 1С:Предприятие существу- томобиля, кстати, большой плюс в дан-
знать уже не только виртуально. Ес- ет уже более 6 лет, и большинство до- ном случае. Если он у вас есть – не за-

90
полезные советы
будьте при разговоре непринужденно жите осмотреть сеть заказчика. Ни при дую иметь дело только с теми фирма-
об этом упомянуть. первичном, ни при более глубоком об- ми, которые имеют скоростное подклю-
следовании не критикуйте открыто не- чение к сети Интернет, чтобы вы мог-
Форма одежды и стиль компетентность предыдущего специа- ли удаленно конфигурировать необхо-
общения листа – это большая ошибка при пере- димые параметры и диагностировать
Не стоит игнорировать известную пого- говорах. Очень часто встречаются си- проблемы. Уверяю вас, что больше
ворку и приходить на собеседование в туации, когда предыдущий специалист 75% проблем решаются именно так
любой подвернувшейся под руку одеж- является родственником руководите- и, как правило, являются следствием
де. Хочу вас уверить, что общеприня- ля, и ваша грубая критика не принесет невнимательности пользователя. Ес-
тый стереотип о том, что системный успеха. Лучше аккуратно и продуман- ли на каждый такой сигнал вы буде-
администратор – это человек с гряз- но применять фразы типа: «Да, ваша те выезжать, то уже через пару меся-
ными волосами, одетый в поношенные сеть уже требует дополнительных на- цев (максимум) работать с заказчиком
джинсы, не более чем заблуждение. строек, предусматривающих дальней- прекратите.
Если этот стереотип также присутству- шее масштабирование» или «Тут более И последнее замечание. Даже ес-
ет в мыслях работодателя, то ваш пре- надежным и при этом экономичным ре- ли вам очень нужна работа, ни в ко-
зентабельный вид приятно удивит его. шением станет применение аппаратно- ем случае не нужно показывать это-
Есть одно «но». Ваш стиль общения го маршрутизатора» и пр. го потенциальному работодателю. Из-
должен также соответствовать хоро- лишняя активность и бессмысленное
шему внешнему виду. То есть умение Разговоры о стоимости рвение обычно не нравится руководи-
четко излагать свои мысли и обсуж- обслуживания телям. Им больше по душе четкий рас-
дать на переговорах поставленные за- Последняя стадия переговоров. Начи- чет и планирование, прогнозирова-
дачи – неотъемлемый атрибут успеха. нать об этом говорить можно, только ние и мотивация. Поэтому не стоит ве-
Помните, если вы являетесь техниче- точно зная, какой фронт работ предсто- сти беседу в стиле «буду работать за
ским специалистом экстра-класса, но ит выполнить. Рекомендую применять еду». Такие специалисты почти никог-
при этом у вас полностью отсутствует следующую последовательность дей- да не обрадуют работодателя. Объяс-
ораторское искусство – считайте, что ствий: переговоры, составление карты няется это просто – если у вас посто-
половина успеха переговоров потеря- состояния сети, уточнение задач, до- янные проблемы с финансами, то ваше
на. Руководители ценят умение чет- полнительное исследование, состав- положение нестабильно. Никому не за-
ко и кратко изложить суть проблемы ление рекомендаций и технического хочется иметь дело с сотрудником, ко-
и способы ее решения, а не простран- задания по реорганизации. При этом торый раз в неделю будет прибегать и
ные рассуждения, кишащие непонят- любая переделка чего бы то ни было просить очередной аванс.
ными для них терминами. Поэтому суть должна предваряться четкой мотива- Все должно быть с точностью до на-
предлагаемых вами услуг должна быть цией данного процесса. В противном оборот: не они дают вам работу, а вы
ясна даже несведущему в технических случае работодатель не поймет, для соглашаетесь их обслуживать и уде-
подробностях человеку. чего нужно что-то изменять. Все опи- лять свое время.
Да, именно так. Если вы действи- санные этапы в этом случае (если вы Тему можно развивать очень долго,
тельно хотите достигнуть чего-то боль- ищете дополнительную работу) долж- однако это выведет нас за рамки дан-
шего, необходимо научиться излагать ны быть бесплатными. А вот оплату ной статьи. Если у вас возникнут во-
свои мысли, вести переговоры, а так- реализации первоначального улучше- просы или появится желание подиску-
же (как описано выше) выступать пе- ния и рационализации работоспособ- тировать – добро пожаловать на форум
ред публикой. ности сети рекомендуется оговорить журнала «Системный администратор»
отдельной строкой. То есть модерни- (www.samag.ru) для обсуждения.
Переговоры начинаются зация оплачивается отдельно, так как
со знакомства это довольно трудоемкий процесс, и ОТ РЕДАКЦИИ
Представьтесь и протяните свою ви- после реализации начинается отсчет Есть еще один эффективный способ
зитную карточку – ваши координаты абонентской платы за ваше обслужи- дополнительно зарабатывать, о кото-
должны быть доступны при необходи- вание. Всегда четко оговаривайте пе- ром не упомянул Роман Марков в сво-
мости. После этого предложите заказ- речень ваших обязанностей. В против- ей статье. Впрочем, он только что про-
чикам самим рассказать об их пробле- ном случае такие работы, как отнесе- демонстрировал его на деле – каждый
мах и пожеланиях. Начинайте перегово- ние на заправку картриджа от ксерок- из вас может стать автором нашего
ры с извлечения из сумки (кейса) па- са, будут поручать вам, а это не явля- журнала! Поделитесь с коллегами по-
почки с чистыми листами. Положите ется работой приходящего системного ложительным опытом, расскажите об
перед собой и записывайте все услы- администратора. Круг ваших обязанно- успешном решении проблем - это при-
шанные пожелания. Рассказывая о тех- стей – это обеспечение работоспособ- несет вам дополнительный доход, ува-
нологиях, которые вы предлагаете, ис- ности сети: компьютеров, установлен- жение и известность в IT-кругах.
пользуйте простейшие иллюстрации к ных на них операционных систем и их Ваши статьи, исследования, раз-
своим словам – это облегчает понима- взаимодействия, настройка серверов, работки и заметки отправляйте на
ние технических решений некомпетент- антивирусной защиты и пр. адрес sekretar@samag.ru для Натальи
ными пользователями. Затем предло- Со своей стороны, очень рекомен- Хвостовой.

№6, июнь 2005 91


книжная полка
Linux. Порождающее
Программирование программирование.
в примерах Методы,
Арнольд Роббинс инструменты,
Из эпиграфа к книге: «Од- применение
ним из лучших способов К. Чарнецки,
научиться программирова- У. Айзенекер
нию является чтение хоро- Основной философией по-
шо написанных программ». рождающего программиро-
Именно этому совету и по- вания является идея пере-
следовал автор. Все рас- хода к полуавтоматическо-
сматриваемые темы сопро- му производству различного
вождаются изучением кон- ПО. В книге речь идет о мето-
кретных примеров, боль- дах и инструментах порожда-
шинство из которых являются исходным кодом канони- ющего программирования и удачно сочетаются теорети-
ческой версии UNIX v7. Среди подробно рассмотренных ческие и практические сведения. Среди рассмотренных
тем: аргументы, опции и переменные окружения. Управ- тем: методы и приемы анализа и проектирования (инже-
ление памятью на уровне пользователя, файлы и файло- нерия предметной области и объектно-ориентированные
вый ввод/вывод. Каталоги и служебные данные файлов, методы анализа проектирования, моделирование харак-
общие библиотечные интерфейсы. Среди более слож- теристик), технологии реализации (родовое программи-
ных тем: управление процессами и каналы, сигналы, ин- рование, компонентно-ориентированные методики ша-
тернационализация и локализация, расширенные интер- блонного программирования на С++, аспектно-ориенти-
фейсы. Отдельная глава книги посвящена отладке при- рованное программирование, генераторы, статическое и
ложений. Весь материал основан на личном опыте авто- ментальное программирование на С++). В разделе прак-
ра, полученном более чем за 15 лет программирования, тических примеров рассмотрены варианты реализации
а «житейские» советы, которыми он делится, приходятся спискового контейнера и порождающей библиотеки рас-
всегда кстати. На мой взгляд, это одно из лучших изда- чета матриц. Материал сопровождается большим коли-
ний, посвященных программированию на С под Linux из чеством примеров и иллюстраций. Книга рассчитана на
появившихся за последнее время. опытных программистов.
Издательство «КУДИЦ-ОБРАЗ», 2005 г. – 657 стр. ISBN 5- Издательство «Питер», 2005 г. – 731 стр. ISBN 5-469-00118-
9579-0059-1 (ориг. 0-13-142964-7). 0 (ориг. ISBN 0-201-30977-7).

UNIX/Linux. Теория Windows server 2003.


и практика Справочник
программирования Митч Таллоч
Брюс Моли Это издание можно смело
Книга посвящена вопросам назвать настольной книгой
системного программирова- любого администратора ОС
ния в среде UNIX. Основная Windows 2003. Автор разде-
задача издания показать, как лил задачи на выполняемые
работает UNIX изнутри. В ка- с помощью графического ин-
честве основных языков раз- терфейса и на исполняемые
работки выступают C и shell из командной строки, что не-
script. Приводятся подробные сомненно очень удобно. При-
сведения о вводе/выводе для водятся подробные сведе-
файлов и устройств, а также ния о DHCP, AD, DFS, DNS,
о таймерах, драйверах терминала. Рассмотрены вопросы, WINS, автоматических обновлениях, аудите, групповых
посвященные созданию соединения между локальными и политиках, делегировании прав, дистанционном управле-
удаленными процессами, сокетам. Отдельные главы посвя- нии рабочим столом, доменах, консоли управления MMC
щены POSIX-нитям, параллельным функциям и IPC. На всем и многом другом. Среди рассмотренных команд и утилит
протяжении книги излагаемый материал сопровождается командной строки: bootcfg, diskpart, driverquery, net, netsh,
примерами исходного кода и иллюстрациями. В качестве route, rsh и других, многие из них появились только в W2k3.
примеров автор предлагает разработку собственных вер- На всем протяжении изложения материала автор приме-
сий команд who, ls, pwd, простого варианта sh и минималь- няет «справочный» стиль изложения, раскрывающий са-
ную версию веб-сервера httpd. Контрольные вопросы и за- мую суть задачи.
дания в конце каждой из глав помогут читателю проверить, Издательство «Питер», 2005 г. – 748 стр. ISBN 5-469-00-
насколько хорошо был усвоен прочитанный материал. 023-0 (ориг. 0-596-00404-4).
Издательство «КУДИЦ-ОБРАЗ», 2004 г. – 576 стр. ISBN 5- Рубрику ведет
93378-087-1 (ориг. 0-13-008396-8). Александр Байрак

№6, июнь 2005 93


bugtraq

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


в Ipswitch Imail-сервере в BEA WebLogic
Программа: Ipswitch Imail 8.13 и более ранние версии. Программа: BEA WebLogic 6.1, 7.0, 8.1.
Опасность: Критическая. Опасность: Средняя.
Описание: Обнаруженные уязвимости позволяют удален- Описание: Обнаруженные уязвимости позволяют удален-
ному пользователю вызвать отказ в обслуживании, полу- ному пользователю получить доступ к потенциально важ-
чить доступ к потенциально важным данным и выполнить ной информации и вызвать отказ в обслуживании.
произвольный код с системными привилегиями. 1. Пользователь с привилегиями Monitor security role мо-
1. Уязвимость обнаружена при обработке входных дан- жет манипулировать JDBC-пулами. Уязвимые приложения:
ных в команде STATUS в IMAP-сервере. Слишком длинное WebLogic Server / Express 8.1 Service Pack 2 (all platforms),
имя почтового ящика может вызвать переполнение стека WebLogic Server / Express 8.1 Service Pack 3 (all platforms).
и позволить удаленному авторизованному пользователю 2. Ошибка при обработке исключений в security provid-
выполнить произвольный код на целевой системе с при- er позволяет злоумышленнику управлять аудитом исклю-
вилегиями Local System. чений. Уязвимые приложения: WebLogic Server / Express 8.1
2. Уязвимость существует при обработкe NULL-симво- Service Pack 3 (all platforms), WebLogic Server / Express 7.0
лов в команде LSUB в процессе IMAPD32.EXE. Удаленный Service Pack 5 (all platforms).
пользователь может с помощью специально сформирован- 3. Приложение не требует пройти повторную аутентифи-
ного аргумента команды заставить уязвимый процесс по- кацию пользователей после изменений политик безопас-
треблять все доступные ресурсы на системе, что приведет ности. Уязвимые приложения: WebLogic Server / Express 7.0
к отказу в обслуживании. Service Pack 5 (all platforms).
3. Уязвимость обнаружена в команде LOGIN. Удаленный 4. После неудачной авторизации пароль пользователя
неавторизованный пользователь может послать в качестве может быть опубликован на странице авторизации. Уязви-
имени пользователя строку длиной более 2000 байт, вы- мые приложения: WebLogic Portal 8.1 through Service Pack
звать переполнение стека и выполнить произвольный код 3 (all platforms).
на целевой системе. 5. Ошибка при обработке файлов куки может замедлить
4. Уязвимость существует при обработке некоторых работу кластера сайтов. Уязвимые приложения: WebLogic
символов (% : * @ &) в команде LOGIN. Удаленный неав- Server / Express 7.0 through Service Pack 5 (all platforms).
торизованный пользователь может с помощью специаль- 6. Межсайтовый скриптинг возможен при обработке не-
но сформированного имени пользователя выполнить про- которых входных данных. Уязвимые приложения: WebLog-
извольный код на целевой системе. ic Server / Express 8.1 through Service Pack 4 (all platforms),
5. Уязвимость обнаружена при обработке запроса к не- WebLogic Server / Express 7.0 through Service Pack 6 (all plat-
существующим javascript сценариям (jsp) в Imail Web Calen- forms).
daring. Удаленный неавторизованный пользователь может с 7. Удаленный неавторизованный пользователь может
помощью символов обхода каталога прочитать произволь- подключиться к LDAP-серверу и получить доступ к потен-
ные файлы на системе. Пример: циально важной информации или вызвать отказ в обслу-
GET /bla.jsp?\..\..\..\..\..\..\..\..\..\..\boot.ini HTTP/1.0 живании. Уязвимые приложения: WebLogic Server / Express
Connection: Close 8.1 through Service Pack 4 (all platforms), WebLogic Server /
Host: example.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Express 7.0 through Service Pack 5 (all platforms).
Pragma: no-cache 8. Возможен отказ в обслуживании. Уязвимые прило-
6. Уязвимость при обработке данных в команде SE- жения: WebLogic Server / Express 6.1 Service Pack 4 (all plat-
LECT в IMAP сервере позволяет удаленному авторизован- forms).
ному пользователю вызвать отказ в обслуживании. Злоу- URL производителя: www.bea.com.
мышленник может послать строку длиной более 260 байт Решение: Установите исправления от производителя.
и аварийно завершить работу приложения.
URL производителя: www.ipswitch.com. Отказ в обслуживании в ImageMagick
Решение: Установите исправление от производителя: ftp:// и GraphicsMagick XWD-декодере
ftp.ipswitch.com/Ipswitch/Product_Support/IMail/imail82hf2.exe. Программа: ImageMagick версии до 6.2.2-3; GraphicsMag-
ick версии до 1.1.6-r1.
Ошибка при обработке zip-архивов Опасность: Средняя.
в MailScanner Описание: Уязвимость существует при обработке цветовых
Программа: MailScanner 4.41.3. масок в XWD-декодере. Удаленный пользователь может с
Опасность: Низкая. помощью специально сформированного изображения (цве-
Описание: Уязвимость существует при обработке опреде- товая маска установлена в ноль) заставить уязвимое прило-
ленных типов zip-файлов. Удаленный пользователь может жение потреблять все доступные ресурсы на системе.
обойти фильтрацию сообщений и заставить приложение не Решение: Установите последнюю версию от производи-
генерировать отчет об обнаружении вируса. теля.
URL производителя: www.sng.ecs.soton.ac.uk/mailscanner.
Решение: Установите обновление с сайта производителя. Составил Александр Антипов

94
подписка на II полугодие 2005
Российская Федерация ! Казахстан – по каталогу «Российская Пресса» через
! Подписной индекс: 81655 ОАО «Казпочта» и ЗАО «Евразия пресс»
Каталог агентства «Роспечать» ! Беларусь – по каталогу изданий стран СНГ через РГО
! Подписной индекс: 87836 «Белпочта» (220050, г.Минск, пр-т Ф.Скорины, 10)
Объединенный каталог «Пресса России» ! Узбекистан – по каталогу «Davriy nashrlar» российские
Адресный каталог «Подписка за рабочим столом» издания через агентство по распространению печати
Адресный каталог «Библиотечный каталог» «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик,
! Альтернативные подписные агентства: 5/3, офис 33)
Агентство «Интер-Почта» (095) 500-00-60, курьерская ! Армения – по списку номенклатуры «АРЗИ» через ГЗАО
доставка по Москве «Армпечать» (375005, г.Ереван, пл.Сасунци Давида, д.2)
Агентство «Вся Пресса» (095) 787-34-47 и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул.Сарьяна,
Агентство «Курьер-Прессервис» 22)
Агентство «ООО Урал-Пресс» (343) 375-62-74 ! Грузия – по списку номенклатуры «АРЗИ» через АО
! Подписка On-line «Сакпресса» ( 380019, г.Тбилиси, ул.Хошараульская, 29) и
http://www.arzy.ru АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru ! Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г.Кишинев, бул.Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-33-
СНГ 00, г.Тирасполь, ул.Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайслисту через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номен- (2012, г.Кишинев, бул. Штефан чел Маре, 134)
клатуры АРЗИ: ! Подписка для Украины:
! Азербайджан – по объединенному каталогу российских Киевский главпочтамп
изданий через предприятие по распространению печа- Подписное агентство «KSS»
ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21) Телефон/факс (044)464-0220

Подписные
индексы:

81655
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»

№6, июнь 2005 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№6(31), Июнь, 2005 год

РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин
Редакторы Устанавливаем jabber- чта уже проверяется каким-нибудь от-
Андрей Бешков кластер на базе ejabberd крытым антивирусом, типа Clamav, то
Валентин Синицын Jabber в настоящее время становится единственным возможным источником
Алексей Барабанов все более распространенным в кор- вирусов может являться &laquo;дикий
поративной и интернет-среде. Круп- интернет&raquo;. И если доступ поль-
РЕКЛАМНАЯ СЛУЖБА ные jabber-серверы находятся под по- зователям открыт только через прото-
тел./факс: (095) 928-8253 стоянной высокой нагрузкой. Одним кол HTTP, то только его нам и остается
Константин Меделян из методов оптимизации стабильно- сканировать. Делать это удобнее и де-
reсlama@samag.ru сти и производительности является шевле на сервере и при помощи откры-
кластеризация. В данной статье бу- того ПО, чем мы и займемся.
Верстка и оформление дет описана настройка одного из наи-
maker_up@samag.ru более продвинутого по возможностям Kaspersky Antivirus 5.0
Дизайн обложки jabber-сервера в кластерном вариан- в составе Sendmail
Николай Петрочук те – ejabberd. Настраиваем 5-ю версию антивируса
Касперского в составе почтовой си-
По вопросам распространения Kerberos поверх LDAP стемы Sendmail. Отличий от прошлых
обращайтесь по телефону: Настроим открытую версию Kerberos конфигураций несколько: в настрой-
(095) 928-8253 (доб. 120) Heimdal для работы с OpenLDAP в ка- ке и реализации протокола связи ан-
честве бэкэнда для хранения своих тивируса; в использовании milter; сты-
107045, г. Москва, данных. Такое решение позволит нам ковка компонентов осуществляется с
Ананьевский переулок, дом 4/2 стр. 1 создать единое хранилище всей ин- минимальными затратами и настрой-
тел./факс: (095) 928-8253 формации для обеспечения процесса ками; а также появилась возможность
Сайт журнала: www.samag.ru аутентификации и авторизации поль- использовать антивирус для рабочих
зователей в GNU/Linux. станций UNIX.
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец Настраиваем Используем технологию
УЧРЕДИТЕЛИ антивирус-прокси LinuxBIOS на системах
Владимир Положевец Несомненно антивирусная защита VIA EPIA-M
Александр Михалев должна быть обязательным атрибу- Почти каждый из вас в детстве играл
ИЗДАТЕЛЬ том грамотно спланированной IT-стра- в конструктор, собирал железную до-
ЗАО «Издательский дом тегии организации. И для не обреме- рогу или машинки. Есть такая фраза,
«Учительская газета» ненного лишними деньгами бюджета что по мере взросления у сильной по-
IT-отдела закупка и установка на всех ловины человечества игрушки не ис-
Отпечатано типографией пользовательских компьютерах анти- чезают, а только становятся более до-
ГП «Московская Типография №13» вирусных программ может стать впол- рогими. Вот и сегодня мы попытаем-
Тираж 8400 экз. не весомой статьей расходов. Можно ся своими руками собрать из своео-
ли как-то избежать лишних расходов? бразного конструктора – связки Linux-
Журнал зарегистрирован Если на клиентских рабочих местах от- BIOS и VIA EPIA-M – домашнюю bare-
в Министерстве РФ по делам печати, сутствуют или отключены НГМД, а по- bone-систему.
телерадиовещания и средств массо-
вых коммуникаций (свидетельство Уважаемые читатели!
ПИ № 77-12542 от 24 апреля 2002 г.)
Спешите оформить подписку
За содержание статьи ответствен- на второе полугодие 2005 года!
ность несет автор. За содержание
рекламного обьявления ответствен- Приобрести новые и старые номера журнала
ность несет рекламодатель. Все пра- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
ва на опубликованные материалы за-
щищены. Доставка почтой в любую точку России.

96

Вам также может понравиться