СЬ
ЛИ
ЛИ
ТЯ Е
Ж ПИ
ЗА ДНИ
НУ
РА КУ
ЛЫ ГО
ТИ РАС
КУ ВО
О
НИ НО
ТР
С
БЫ
подписной индекс 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
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
Г
лавный вопрос, волнующий на- се инсталляции используются те же дание файлов устройств и добавле-
ших читателей, когда выйдет самые модули, что и при последую- ние дополнительных пакетов, проис-
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
интервью интервью
получить исходный код и право само- иходили уже с учетом новых правил.
стоятельной сборки продукта из него. В частности, было объявлено, что все
Только таким образом можно быть уве- материалы, полученные в результа-
ренным, что получаемый продукт дей- те выполнения работ, будут выходить
ствительно соответствует своим исхо- под свободными лицензиями. На мой
дным кодам, делает именно то, что де- взгляд, эта работа повлекла за собой
кларируется и свободен от закладок. В довольно революционные измене-
случае если мы намерены достаточно ния в менталитете заказчика. Теперь
долго эксплуатировать продукт, нуж- есть четкое понимание, что ПО – это
но решить вопрос с правами на моди- не только какой-то функционал, но и
фицирование исходного кода. Иначе набор передаваемых авторских иму-
любой, кто, используя это ПО, постро- щественных прав. Таким образом, те-
ит достаточно большую систему, ав- перь не функционал, а права становят-
томатически становится заложником ся предметом тендера.
поставщика.
В случае покупки ПО проблемы ли- Как вы представляете себе операци-
цензирования мы кратко рассмотрели, онную систему вашей мечты? Суще-
если же ПО или научное исследова- ствует ли таковая? Если нет, то какая
ние разрабатывается на заказ, то все из ОС, имеющихся в наличии, наибо-
становится еще сложнее. Анализируя лее близка к вашему идеалу?
российское законодательство, мы об- Представление об идеале у всех раз-
наружили, что обладателем исключи- ное. В данном случае мне больше всех
тельных прав по умолчанию становит- нравится Linux. Ключевыми аспекта-
ся не заказчик, а исполнитель разра- ми являются разнообразие ПО, воз-
ботки, если иное не указано в контра- можность разных стилей работы, ди-
кте. Мы считаем, что такое положе- намическое развитие и свободная ли-
ние лучше всего подходит для разра- цензионная политика. Соответствен-
боток выполняемых сторонними си- но если хочется чего-то, чего еще нет,
лами в рамках госзаказа. Во-первых, нужно лишь взять и реализовать это
автор должен иметь возможность про- самому.
должать развивать свой продукт. Во-
вторых, государству не нужны исклю- Если не секрет, хотелось бы узнать,
чительные права, потому что они свя- собирается ли ALT Linux расширять-
заны с излишним отягощением и не- ся и привлекать новых разработчи-
профильным расходованием средств, ков?
в этом случае придется все это тем Конечно. Резкого увеличения числа
или иным образом ставить на баланс сотрудников ожидать не стоит, но все
и тратить средства на борьбу с контра- же мы понемногу расширяемся. К со-
фактным распространением. Побоч- жалению, за нашей спиной нет боль-
ным вредом этих обстоятельств мож- шой фирмы с огромным мешком де-
но считать автоматическое изыма- нег, соответственно мы вынуждены
ние хороших идей из рыночного про- экономить и инвестировать сами в се-
странства. Кроме того, не происходит бя. Сейчас мы живем с колес – в этом
поступления программного продук- есть свои плюсы и минусы, поэтому
та в хозяйственный оборот. Таким об- нанимать дополнительных разработ-
разом, получается, что для успешной чиков удается только в случае появле-
работы с приобретенным ПО государ- ния новых масштабных проектов. На-
ству достаточно иметь права на поль- личие ALT Linux Team для нас в этом
зование, тиражирование, распростра- плане очень важно, получается, что во-
нение и модификацию. Другое важное круг всегда есть достаточно много ква-
требование – это публикация резуль- лифицированных специалистов, рабо-
татов таких разработок госзаказчиком тающих в рамках одной технологии с
под свободной лицензией. Отсюда вы- нами. Исторически сложилось так, что
вод: в общем случае лицензирование большинство людей, принятых к нам
по модели GPL вполне подходит для на работу, в свое время засветилось в
государственных заказов. ALT Linux Team.
Минэкономразвития воспользова-
лось значительной частью этих реко- Андрей Бешков,
мендации, и тендеры 2005 года про- фото автора
АНДРЕЙ БЕШКОВ
В
предыдущих статьях [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
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
10
администрирование
У вас уже есть офисная мини-АТС или вы только планируете ее покупку? Думаете
о предоставлении новых возможностей для повышения эффективности работы сотрудников?
Сегодня мы приоткроем дверь в мир 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
С задачей вроде бы определились, поэтому, не отклады- поддерживающие кодек 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 отсутствует в стандартной конфигурации. Если мы хотим использовать передачу звонков, его необходимо добавить.
Настраиваем 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).
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
6
Если такого пути нет, его необходимо создать. CorpPC2Phone имеет тип DWORD.
7
Если вам нужно просто включить возможность перехвата для всех абонентов Asterisk, вместо модификации номерного плана можно про-
сто раскомментировать строчку pickupexten в файле features.conf.
Включаем межгород
(Межгород? Соединяю...)
Для совершения междугородних звонков можно использо-
вать как более «родной» для 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.
СЕРГЕЙ ЖУМАТИЙ
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? Весьма веро- ниторов должны быть минимальны);
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
24
администрирование
АВТОМАТИЗАЦИЯ MS WINDOWS,
ИЛИ AUTOIT КАК МЕЧТА ЭНИКЕЙЩИКА
ЧАСТЬ 3
АЛЕКСЕЙ БАРАБАНОВ
Создаем диск автоматической диска, скорее всего, никогда не понадобится далее, зна-
установки чит за их счет можно выделить больше места для разме-
щения приложений.
Если мы собираемся вас инструктировать перед обновлением
программного обеспечения системы, не беспокойтесь.
Мы ведь никуда не денемся, когда это закончится!
Подготовим дистрибутивные файлы
Итак, приступим. Все пути в 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
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
Все эти файлы будут на первом этапе скопированы в Второй параметр из секции, отвечающей за автомати-
одноименные директории на локальном диске так, что его ческую установку в графическом режиме, задает число ав-
корень будет соответствовать директории $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-й этап установки.
Поскольку в согласии с нашей технологией предпола-
гается управление создаваемой рабочей станцией с уда- Третий этап
ленных терминалов, то следующая настройка просто не- Последний этап установки состоит из следующих дей-
обходима: ствий:
А вот пятый пункт является ключевым. Как уже было Листинг 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.
МИХАИЛ КОШКИН
С
егодня мы рассмотрим возможности 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).
Поиск файлов
Если задаться целью найти все файлы-контейнеры для
шифрованных дисков, то эта задача может быть решена,
например, путем проверки содержимого всех файлов, раз-
мещающихся на диске, на предмет наличия в них опреде-
ленной комбинации байт-сигнатуры. Кроме того, большин-
ство известных программ работы с шифрованными дис-
ками регистрируют в операционной системе определен- Рисунок 3. Результаты поиска файлов-контейнеров шифрованных
ные расширения файлов, ассоциируемые с файлами-кон- дисков с использованием заданной сигнатуры
тейнерами, что позволяет сузить круг поиска интересую- При работе с томами файловой системы NTFS будьте
щих файлов до проверки наличия в имени определенно- готовы к ситуациям, когда доступ с правами пользовате-
го расширения. ля к некоторым подкаталогам будет запрещен (например,
34
администрирование
Dim wshshell : Set wshshell = ↵ Таблица 3. Ключи, которые могут представлять интерес
WScript.CreateObject("WScript.Shell") при изучении компьютера
Dim wshproenv : Set wshproenv = ↵
wshshell.Environment("PROCESS")
wshproenv (var _ env)
36
администрирование
В
ноябре прошлого года компания зорвать эту связь в сознании заказ- них рассказывать и ограничусь лишь
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. Поэтому я не буду подробно о ных так и аппаратных).
Две широко разрекламированные знать установленную копию операци- использовать более дружественный
функции 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
СЕРГЕЙ ЯРЕМЧУК
В
се является файлами – ключевая концепция 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 байт
лей вроде 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/
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
Что может быть хуже сервера, который неизвестно из-за чего стал работать слишком
медленно? Только сервер, который работает слишком медленно по хорошо известной
и неустраняемой причине! Чтобы реже сталкиваться с такой ситуацией, рассмотрим методы
борьбы с причинами замедления работы 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 способна, но скорость выполнения за- вы используете в качестве кластерно-
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.
48
администрирование
На лето запланирован выход новой, пятой версии популярнейшего сервера баз данных – MySQL.
Как правило, смена первой цифры в номере версии означает довольно радикальные перемены.
Это удивительно – возможности четвёртой ветки, появившейся чуть более года назад, освоены
и приняты ещё далеко не всеми разработчиками. И тем не менее уже сейчас MySQL 5 доступна
для тестирования в виде бета-версии. Что действительно нового предлагают её создатели?
КИРИЛЛ СУХОВ
«Просто набор индексированных файлов!», «недо-база дан- доступна в бета-версии пятой ветки, и основные из них мы
ных» – такие слова в адрес СУБД MySQL нередко можно с вами рассмотрим.
найти на форумах разработчиков. И приходится признать –
они имели под собой основание. MySQL при всех её досто- Хранимые процедуры
инствах (нетребовательность к ресурсам, быстродействие, Данной функциональности, пожалуй, больше всего не хва-
высокая производительность, на простых запросах, низкая тало разработчикам. Смысл применения хранимых проце-
стоимость владения) имела очевидные недостатки. Отсут- дур (stored procedures) и функций – сохранять на сервере
ствовали элементарные средства контроля целостности дан- скомпилированные блоки SQL-кода. После единожды на-
ных, не было механизма транзакций, да что там, не было да- писанной, отлаженной и скомпилированной процедуры или
же вложенных запросов, а о хранимых процедурах и тригге- функции, её можно вызывать из вашего приложения, пере-
рах приходилось только мечтать. давая на сервер вместо обычного запроса, только вызов
Положение изменилось с выходом версий 4.0 и 4.1. По- процедуры и аргументы. При этом не только снижаются за-
мимо вышеупомянутых вложенных запросов и транзакций траты на трафик и повышается производительность. Глав-
было осуществлено ещё множество нововведений. Появи- ное преимущество состоит в том, что бизнес-логика прило-
лась возможность задания кодировок на уровне базы дан- жения, возложенная на базу данных, становится прозрач-
ных, таблиц и столбцов, поддержка Unicode (utf8 и ucs2), ней и переносимей.
включён геометрический тип данных – GIS, введёно поня- Как процедуры, так и функции могут возвращать зна-
тие «подготовленных выражений» (prepared statements). чения (в виде набора записей). Различие состоит в том,
С выходом MySQL 5 нас ждут ещё более радикальные что функция вызывается из запроса, а процедура из от-
изменения. Разработчики из MySQL AB установили до- дельной команды.
вольно высокую планку – вплотную приблизиться к стан- На настоящий момент реализация хранимых процедур
дарту SQL:2003. Большая часть новых возможностей уже не поддерживает никаких внешних языков, но (по крайней
Вызов процедуры теперь будет таким: CREATE TABLE t22 (s1 INTEGER)
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
шего (и потому абсолютно бесполезного) представления:
52
администрирование
СЕРГЕЙ СУПРУНОВ
И
ногда возникает ситуация, когда нужно войти на сер- используя ssh с аутентификацией ключевым файлом, ко-
вер с чужого компьютера. Например, выехав к кли- торый записан на дискету (к слову, дискету можно на ра-
енту, вы выясняете, что он начисто забыл свой па- достях и в дисководе забыть, что отнюдь не поспособству-
роль. Не возвращаться же из-за этого в офис? А заходить ет безопасности сервера). Или хорошим решением выгля-
на сервер с машины клиента достаточно опасно – кто зна- дит LiveCD – в этом случае вы гарантируете себе не толь-
ет, какие «шпионы» там установлены? Конечно, решить ко повышение безопасности, но и наличие всех необходи-
эту проблему можно несколькими способами. Например, мых программ.
В чем заключается идея Ключ -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. Единственное, что при этом достигается,– это суще- пись и, лишь убедившись в ее работоспособности, перево-
ственное снижение вероятности раскрыть свой пароль при дить на новую схему остальных пользователей.
МИХАИЛ КОНДРИН
Ч
тобы подробнее разобраться с возникающими зада- настройками вычислительных кластеров. Но именно эта
чами, рассмотрим ситуацию с организацией распре- проблема построения распределенной вычислительной
деленной вычислительной системы. Разумеется, чем системы 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-сессии автоматиче- сируются в его логах, и можете убедиться, что вся моя ак-
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.
СЕРГЕЙ ЯРЕМЧУК
Н
е секрет, что сегодня именно информация является втихаря отправляться обычным способом, либо придется
самым ценным продуктом. В прессе постоянно по- ему просить это сделать кого-нибудь другого, что тоже не-
являются публикации о взломах, либо чьих-то секре- приемлемо. Не выгонять же из-за этого лучшего бухгалте-
тах, подробности появления которых достойны голливуд- ра. Администратору в этом случае лучше всего взять си-
ских сценариев. Легкость и быстрота, позволяющие мгно- туацию под свой полный контроль. Хорошим примером та-
венно обменяться сообщениями и решить все вопросы в ко- кого подхода является VPN, пользователь может и не до-
роткий период времени, привели к тому, что сейчас львиная гадываться, что работает по защищенному каналу. Анало-
доля деловой переписки ведется при помощи электронных гичным путем пошли разработчики защищенной почтовой
средств, в частности электронной почты. При этом среди системы Tiger Envelopes (http://www.tigerprivacy.com).
многочисленных источников перехвата информации имен-
но электронная почта (при правильном подходе) является Что за зверь такой?
одной из самых результативных и в то же время не требую- Уже в названии разработчики заложили принцип работы та-
щей задействования больших ресурсов. С другой стороны, кой системы. Аналогично тому, как, написав бумажное пись-
мнимая безопасность и неосознание важности даже самой мо и положив его в конверт, вы тем самым предохраняете
пустяковой на первый взгляд информации приводят к тому, его от просмотра другими, так и Tiger перехватывает отправ-
что практически вся информация передается открыто. Кро- ленное обычным образом сообщение, зашифровывает и пе-
ме вопросов, связанных с организацией процесса закрытия реправляет на указанный адрес. На другом конце програм-
информации, т.е. выбор средств шифрования, способов об- ма, автоматически подбирая ключ, расшифровывает его и
мена ключей как среди внутренних корреспондентов, так и отправляет пользователю, который может догадаться о на-
с партнерами. Необходимо учитывать и человеческий фак- личии такой системы только по нестандартным настройкам
тор. Есть пользователи, которым почтовый клиент дается с почтового клиента. Таким образом, он выступает как почто-
большим трудом, а если попросить их еще и зашифровать вый прокси-сервер, который автоматически кодирует и де-
сообщение перед отправкой, то это будет для них вообще кодирует сообщения. При этом почтовое сообщение может
высшим пилотажем. Скорее всего, почта и дальше будет пройти через несколько таких серверов, кодируясь несколь-
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.
НАСКОЛЬКО НЕУЯЗВИМА
ВАША БЕСПРОВОДНАЯ СЕТЬ?
Масштабное внедрение
беспроводных устройств
протекает довольно болезненно.
То тут, то там появляются
сообщения об их взломе,
который уже давно превратился
в настоящий радиоспорт
для тинейджеров.
Попробуем разобраться,
насколько велика угроза
и что можно противопоставить
коварным хакерам.
КРИС КАСПЕРСКИ
Б
еспроводные технологии проч- адресам и т. д., однако это не остано- ! открытый режим (ни шифрование,
но вошли в нашу жизнь и, похо- вило атакующих. На протяжении че- ни аутентификация не используют-
же, не собираются никуда ухо- тырех последних лет разработчики не- ся);
дить. С их помощью организуются точ- прерывно совершенствовали защиту, ! защищенный режим без аутенти-
ки доступа в Интернет, строятся пол- но каждый раз в ней обнаруживались фикации, но с шифрованием тра-
ноценные локальные сети, лишенные все новые и новые дыры. фика;
змеящихся кабелей, и делается мно- Подавляющее большинство ата- ! защищенный режим с аутентифика-
жество других удивительных вещей. кующих действуют без зло го умыс- цией и шифрованием трафика.
Се мей ство стан дар тов 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]];
целых четыре, последовательно назна-
чаемых пользователем при конфигу-
рации беспроводного оборудования.
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-сервером
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 лучше воздержаться.
СЕРГЕЙ БОРИСОВ
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), которые по-разному ре-
! Исследование некоторых технических характеристик си- агируют на ухудшение пропускной способности кана-
стемы. ла, появление частых ошибок и пропадание связи.
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
# Включаем анализатор протоколов приложений. Какие точно # Параметр 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 находим строки: фигурационных файлах или в исходниках до компиляции.
76
web
ИСПОЛЬЗУЕМ IImage
mageM
Magick В ВЕБ-РАЗРАБОТКЕ
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.
МОДИФИЦИРУЕМ 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, поскольку их разрабатывает одна радиомагазине или вытащить с поло-
улучшенных прошивок, модернизиро- и та же фирма, правда, на старые про- манной материнской платы. Большо-
ванных энтузиастами, однако все они шивки это утверждение не распростра- го дефицита эти чипы не представля-
ориентированы на вполне конкрет- няется. Впрочем, существуют готовые ют, поскольку в материнских платах
ную модель материнской платы (как редакторы и для них, но не будет зао- используются серийные микросхе-
Рисунок 1. Микросхема Award BIOS Рисунок 2. Набор BIOS Savior kit Рисунок 3. Положение рук при съемке
с традиционной голографической для безопасного извлечения микросхемы микросхемы
наклейкой, по которой её легко BIOS с материнской платы и «кроватка»
определить для резервного 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-памяти, подключенная обходимое программное обе-
нию (те самые, что загружаются по к южному мосту спечение.
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.
РАЗМЫШЛЕНИЯ О 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 – послушный исполнитель, кото-
мя разработчики коммерческих ОС все текает из требования экономности: ес- рый воспринимает вас как полновласт-
большее внимание уделяют возмож- ли есть программа, умеющая сортиро- ного хозяина и безукоризненно выпол-
ности использовать системные функ- вать входной поток данных, и есть про- нит любую вашу команду. И именно вы
ции при разработке прикладного ПО, грамма, умеющая отправлять данные отвечаете за любой результат.
СИСТЕМНЫЙ АДМИНИСТРАТОР –
ИЩЕМ ДОПОЛНИТЕЛЬНЫЕ ИСТОЧНИКИ ДОХОДА
Ваша сеть отлажена и работает, как швейцарские часы, появилось свободное время и желание
зарабатывать больше. Однако смена работы в ближайшие планы не входит, а работодатель
не в состоянии увеличить вам зарплату. Лучший вариант в этой ситуации – искать
дополнительные источники дохода.
РОМАН МАРКОВ
Т
ема по ис ка до пол ни тель но го ант – это поиск дополнительных рабо- отказываться из-за отсутствия време-
заработка актуальна для мно- чих мест. Прежде всего интерес пред- ни. Однако заказы на разовые рабо-
гих 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» постоянно
90
полезные советы
будьте при разговоре непринужденно жите осмотреть сеть заказчика. Ни при дую иметь дело только с теми фирма-
об этом упомянуть. первичном, ни при более глубоком об- ми, которые имеют скоростное подклю-
следовании не критикуйте открыто не- чение к сети Интернет, чтобы вы мог-
Форма одежды и стиль компетентность предыдущего специа- ли удаленно конфигурировать необхо-
общения листа – это большая ошибка при пере- димые параметры и диагностировать
Не стоит игнорировать известную пого- говорах. Очень часто встречаются си- проблемы. Уверяю вас, что больше
ворку и приходить на собеседование в туации, когда предыдущий специалист 75% проблем решаются именно так
любой подвернувшейся под руку одеж- является родственником руководите- и, как правило, являются следствием
де. Хочу вас уверить, что общеприня- ля, и ваша грубая критика не принесет невнимательности пользователя. Ес-
тый стереотип о том, что системный успеха. Лучше аккуратно и продуман- ли на каждый такой сигнал вы буде-
администратор – это человек с гряз- но применять фразы типа: «Да, ваша те выезжать, то уже через пару меся-
ными волосами, одетый в поношенные сеть уже требует дополнительных на- цев (максимум) работать с заказчиком
джинсы, не более чем заблуждение. строек, предусматривающих дальней- прекратите.
Если этот стереотип также присутству- шее масштабирование» или «Тут более И последнее замечание. Даже ес-
ет в мыслях работодателя, то ваш пре- надежным и при этом экономичным ре- ли вам очень нужна работа, ни в ко-
зентабельный вид приятно удивит его. шением станет применение аппаратно- ем случае не нужно показывать это-
Есть одно «но». Ваш стиль общения го маршрутизатора» и пр. го потенциальному работодателю. Из-
должен также соответствовать хоро- лишняя активность и бессмысленное
шему внешнему виду. То есть умение Разговоры о стоимости рвение обычно не нравится руководи-
четко излагать свои мысли и обсуж- обслуживания телям. Им больше по душе четкий рас-
дать на переговорах поставленные за- Последняя стадия переговоров. Начи- чет и планирование, прогнозирова-
дачи – неотъемлемый атрибут успеха. нать об этом говорить можно, только ние и мотивация. Поэтому не стоит ве-
Помните, если вы являетесь техниче- точно зная, какой фронт работ предсто- сти беседу в стиле «буду работать за
ским специалистом экстра-класса, но ит выполнить. Рекомендую применять еду». Такие специалисты почти никог-
при этом у вас полностью отсутствует следующую последовательность дей- да не обрадуют работодателя. Объяс-
ораторское искусство – считайте, что ствий: переговоры, составление карты няется это просто – если у вас посто-
половина успеха переговоров потеря- состояния сети, уточнение задач, до- янные проблемы с финансами, то ваше
на. Руководители ценят умение чет- полнительное исследование, состав- положение нестабильно. Никому не за-
ко и кратко изложить суть проблемы ление рекомендаций и технического хочется иметь дело с сотрудником, ко-
и способы ее решения, а не простран- задания по реорганизации. При этом торый раз в неделю будет прибегать и
ные рассуждения, кишащие непонят- любая переделка чего бы то ни было просить очередной аванс.
ными для них терминами. Поэтому суть должна предваряться четкой мотива- Все должно быть с точностью до на-
предлагаемых вами услуг должна быть цией данного процесса. В противном оборот: не они дают вам работу, а вы
ясна даже несведущему в технических случае работодатель не поймет, для соглашаетесь их обслуживать и уде-
подробностях человеку. чего нужно что-то изменять. Все опи- лять свое время.
Да, именно так. Если вы действи- санные этапы в этом случае (если вы Тему можно развивать очень долго,
тельно хотите достигнуть чего-то боль- ищете дополнительную работу) долж- однако это выведет нас за рамки дан-
шего, необходимо научиться излагать ны быть бесплатными. А вот оплату ной статьи. Если у вас возникнут во-
свои мысли, вести переговоры, а так- реализации первоначального улучше- просы или появится желание подиску-
же (как описано выше) выступать пе- ния и рационализации работоспособ- тировать – добро пожаловать на форум
ред публикой. ности сети рекомендуется оговорить журнала «Системный администратор»
отдельной строкой. То есть модерни- (www.samag.ru) для обсуждения.
Переговоры начинаются зация оплачивается отдельно, так как
со знакомства это довольно трудоемкий процесс, и ОТ РЕДАКЦИИ
Представьтесь и протяните свою ви- после реализации начинается отсчет Есть еще один эффективный способ
зитную карточку – ваши координаты абонентской платы за ваше обслужи- дополнительно зарабатывать, о кото-
должны быть доступны при необходи- вание. Всегда четко оговаривайте пе- ром не упомянул Роман Марков в сво-
мости. После этого предложите заказ- речень ваших обязанностей. В против- ей статье. Впрочем, он только что про-
чикам самим рассказать об их пробле- ном случае такие работы, как отнесе- демонстрировал его на деле – каждый
мах и пожеланиях. Начинайте перегово- ние на заправку картриджа от ксерок- из вас может стать автором нашего
ры с извлечения из сумки (кейса) па- са, будут поручать вам, а это не явля- журнала! Поделитесь с коллегами по-
почки с чистыми листами. Положите ется работой приходящего системного ложительным опытом, расскажите об
перед собой и записывайте все услы- администратора. Круг ваших обязанно- успешном решении проблем - это при-
шанные пожелания. Рассказывая о тех- стей – это обеспечение работоспособ- несет вам дополнительный доход, ува-
нологиях, которые вы предлагаете, ис- ности сети: компьютеров, установлен- жение и известность в IT-кругах.
пользуйте простейшие иллюстрации к ных на них операционных систем и их Ваши статьи, исследования, раз-
своим словам – это облегчает понима- взаимодействия, настройка серверов, работки и заметки отправляйте на
ние технических решений некомпетент- антивирусной защиты и пр. адрес sekretar@samag.ru для Натальи
ными пользователями. Затем предло- Со своей стороны, очень рекомен- Хвостовой.
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
по каталогу
агентства
«Пресса
России»
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин
Редакторы Устанавливаем jabber- чта уже проверяется каким-нибудь от-
Андрей Бешков кластер на базе ejabberd крытым антивирусом, типа Clamav, то
Валентин Синицын Jabber в настоящее время становится единственным возможным источником
Алексей Барабанов все более распространенным в кор- вирусов может являться «дикий
поративной и интернет-среде. Круп- интернет». И если доступ поль-
РЕКЛАМНАЯ СЛУЖБА ные 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