Так видит журнал читатель, который забыл оформить подписку:
КА
БЫ С
ТР О ТИ РАС РА КУ Ж ПИ
НИ НО К У ВО ЛЫ ГО ЗА ДНИ ТЯ Е НУ ЛИ
ЛИ
СЬ
№5(30) май 2005 подписной индекс 81655 www.samag.ru
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети
№10(47) октябрь 2006 подписной индекс 20780 www.samag.ru
Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM
Так видит журнал читатель, оформивший подписку: №5(30) май 2005 подписной индекс 81655 www.samag.ru
№10(47) октябрь 2006
КО НЕО НЧ ЖИ ИЛ ДА ИС НН ЬД О ЕН ЬГ И ЗА
ПО АВ СЛ РА Е О Л НА ТПУ РА СКА БО ТЕ
УЕ ХА Л
ВО
ТП УС К
Интервью с Ларри Уоллом – создателем языка Perl
Как обеспечить необходимое быстродействие систем «1С: Предприятие» Microsoft Operations Manager: управляем сетью Linux-VServer: настраиваем виртуальные серверы
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM
Создаем адресную книгу на базе OpenLDAP
Интервью с Ларри Уоллом – создателем языка Perl
Как настроить библиотеку SASL для совместной работы c Kerberos Растущая угроза: руткиты Win32
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Как зарабатывают на Open Source
Роспечать – 20780, 81655 Пресса России – 87836 Интер-почта – тел. (495) 500-00-60
Головоломка, ведущая по жизни Игоря Данилова
в номере 3 ТЕНДЕНЦИИ
46 Растущая угроза: руткиты Win32 Схемы работы руткитов.
РЕПОРТАЖ 4 Осенний марафон выставок начался Алексей Коршунов akeeper@samag.ru
6 Softool стал самой успешной IT-выставкой этого года Дмитрий Шурупов osa@samag.ru
АДМИНИСТРИРОВАНИЕ 8 Как обеспечить необходимое быстродействие систем «1С: Предприятие»
Разберемся в сути проблемы и проанализируем варианты решения. Роман Марков stepan-razin@newmail.ru
Артем Баранов artembaranov@yandex.ru
50 Защитить ваш компьютер поможет Browser Sentinel Обзор возможностей утилиты.
Сергей Яремчук grinder@ua.fm
ЧЕЛОВЕК НОМЕРА 52 Головоломка, ведущая по жизни Игоря Данилова
Виртуальное путешествие по Петербургу и биографии легендарного создателя антивируса Dr.Web. Оксана Родионова rodion@dol.ru
IMHO
12 Microsoft Operations Manager 2005: управляем сетью
56 Как зарабатывают на Open Source
18 Экономьте время на администрировании Active Directory
63 Куда приведет Open Source?
22 Как собирать сетевую статистику
68 Open Source взглядом оптимиста
Мониторинг и управление серверами и приложениями требует больших затрат времени и ресурсов. Часть этих проблем решает MOM 2005. Андрей Бирюков mex_inet@rambler.ru
Обзор возможностей утилиты Active Administrator. Сергей Яремчук grinder@ua.fm
Сведения о сети позволят оценить ее состояние, запланировать модификацию и вовремя заметить возникновение проблем. Андрей Бирюков mex_inet@rambler.ru
28 Создаем адресную книгу на базе OpenLDAP
Настраиваем OpenLDAP в качестве адресной книги с хранением данных в PostgreSQL. Сергей Алаев alaev777@mail.ru
32 Linux-VServer
Настраиваем виртуальные серверы. Дмитрий Столяров _@mrms-dos.ru
БЕЗОПАСНОСТЬ 38 Как настроить библиотеку SASL для совместной работы c Kerberos
С помощью библиотеки SASL сетевые приложения могут автоматически договориться об использовании определенного механизма подтверждения идентичности пользователя. Как осуществить взаимодействие библиотеки SASL c Kerberos? Михаил Кондрин mkondrin@hppi.troitsk.ru
43 Защищаем корпоративную почту с SecExMail Gate
Обзор инструмента SecExMail Gate, который позволит обеспечить конфиденциальность корпоративной почты, передаваемой по незащищенным сетям. Сергей Яремчук grinder@ua.fm
№10, октябрь 2006
Конкуренция между программистами заставляет не только совершенствовать качество кода, но и искать новые бизнес-схемы, использующие в том числе и концепцию открытых исходных текстов. Крис Касперски kk@sendmail.ru
Сегодня всё большее число компаний связывает с открытыми проектами свой бизнес. Что ждёт эти проекты в перспективе? Сергей Супрунов amsand@rambler.ru Явление Open Source пока не получило объяснения своего возникновения и развития, но уже породило спекуляции на этот счет. Алексей Барабанов alekseybb@mail.ru
ОБРАЗОВАНИЕ 74 Python – в школу!
Что должно быть на уроках информатики? Сергей Супрунов amsand@rambler.ru
77 Полезные советы: Python Сергей Супрунов amsand@rambler.ru
ПРОГРАММИРОВАНИЕ 78 Многоядерные процессоры…
…и проблемы, ими порождаемые, в ОС семейства NT. Крис Касперски kk@sendmail.ru
РЕТРОСПЕКТИВА 86 Суровая правда, скрытая за «розовыми очками». Часть 2 История компании Transmeta.
Дмитрий Мороз akuji@list.ru
92 КНИЖНАЯ ПОЛКА 17, 27, 49, 73, 91
BUGTRAQ 1
тенденции Проект FreeDOS достиг релиза 1.0 Проект по созданию совместимой с DOS свободной ОС, представил первый финальный стабильный релиз. Система разрабатывалась с 1994 года и вобрала в себя такие возможности, как мультизагрузка с Windows 95-2003/NT/XP/ME, поддержка файловой системы FAT32 и больших дисков (LBA), поддержка LFN, дисковый кэш. В систему входит ПО для управления памятью, замена SHSUCDX и драйвер для CD-ROM, драйвер для мыши с колесом прокрутки, FDAPM для управления питанием ПК, драйвер UDMA (до 4 дисков). Из пользовательского программного обеспечения в FreeDOS 1.0 можно отметить мультимедийный проигрыватель MPXPLAY (для mp3, ogg, wmv и других форматов), архиваторы (7ZIP, INFO-ZIP zip & unzip), многооконные текстовые редактор и просмотрщик файлов помощи. Распространяется FreeDOS под свободной лицензией GNU GPL. Все подробности о проекте доступны на www.freedos.org.
Novell готовит ОС реального времени Компания Novell планирует в октябре начать продажи нового продукта из линейки своих корпоративных GNU/Linuxдистрибутивов – Suse Linux Enterprise Real-Time (SLERT). Это операционная система реального времени, способная реагировать на какие-либо срочные события в очень короткие временные интервалы, что актуально далеко не для всех, однако может пригодиться компаниям, нуждающимся в подобной системе, например, тем, кто занимается торговлей на Wall Street. Уже известен и первый крупный заказчик системы – это Siemens Medical Solutions. SLERT будет применяться ею для оснащения продуктов магнитно-резонансной интроскопии Magnetom.
(Luis Villa) из GNOME, в котором говорится, что «иногда оплата труда добровольцев приводит к понижению общего уровня коллективной работы» в проектах.
Известны первые детали о новшествах в OpenOffice.org На прошедшей недавно конференции OOoCON 2006, посвященной свободному офисному пакету OpenOffice.org, стало известно о готовящихся новшествах для будущих релизов OOo. Ожидается, что в версии 2.0.4 появится поддержка расширений, аналогичная той, что есть в популярном браузере с открытым кодом Mozilla Firefox. Хоть в OpenOffice.org и была поддержка расширений вообще, теперь их создание, включение в офис, выбор и управление ими значительно упростится. У расширений к OpenOffice.org будет новый файловый формат (.oxt), позволяющий разрабатывать дополнения на широком спектре языков программирования (от StarBasic до Java). Кроме того, сообщается, что в обозримом будущем в состав OpenOffice.org и StarOffice включат разработки от Mozilla Foundation: клиент электронной почты Thunderbird и календарь Sunbird. Вместе с тем будут созданы и специальные модули для возможности свободного офиса подключаться к Sun Calendar Server и Microsoft Exchange. Из новостей по OpenOffice.org 3.0 объявлено о том, что офис станет более модульным и работоспособным в таких структурах, как Eclipse, Netbeans и Mozilla XUL.
Составил Дмитрий Шурупов по материалам www.nixp.ru
Dunc-Tank будет платить разработчикам Debian Группа разработчиков, называющая себя Dunc-Tank, готова заплатить отдельным коллегам из Debian GNU/Linux за завершение некоторых проектов. Главная цель Dunc-Tank – помочь проекту Debian выпустить следующий стабильный релиз дистрибутива в срок. Объявление о запуске такой инициативы привело к дебатам на тему мотивации разработчиков свободного программного обеспечения. В первом публичном анонсе Dunc-Tank охарактеризовала себя как «эксперимент», а своих участников – как «независимую группу разработчиков, пользователей и желающих поддержать Debian». В действительности же оказалось, что среди членов Dunc-Tank целый ряд выдающихся разработчиков Debian: лидер проекта Энтони Таунс (Anthony Towns) и его помощник Стив Макинтайр (Steve McIntyre), а также Рафаэль Герцог (Raphatl Hertzog), Джоуи Хесс (Joey Hess), Тед Тсо (Ted Ts'o). Первыми объектами спонсирования у Dunc-Tank стали два менеджера релизов: планируется нанять Стива Лангасека (Steve Langasek) на полный рабочий день в октябре, а Андреаса Барта (Andreas Barth) — в ноябре. Полемика на тему мотивации разработчиков проявилась в том, что сразу после анонса инициативы Dunc-Tank один из разработчиков Debian Лукас Нассбаум (Lucas Nussbaum) раскритиковал ее, указав на исследование Луиса Виллы
№10, октябрь 2006
3
репортаж
Осенний марафон выставок начался
С 4 по 6 сентября в Экспоцентре прошла выставка LinuxWorld, совмещённая с InfoSecurity, StorageExpo и Documation.
П
режде всего обратим внимание на LinuxWorld. В этом году выставка была расположена особняком от всех остальных, и случайно забрести на неё было крайне сложно, так как перед этим нужно было пройти сквозь довольно длинный и пустой коридор. Посещаемость выставки LinuxWorld едва ли можно назвать рекордной. Однако посетители подходили к экспозициям с вполне конкретными целями, а не только праздным интересом. Малое количество посетителей может означать либо то, что на выставку пришли только деловые люди или же что нездоровый ажиотаж вокруг Open Source подошёл к концу. Практически не было заметно любителей халявы, которые на многих выставках стайками носятся от одного стенда к другому. Больше всего внимания посетителей собирали стенды ЛинуксЦентра и журнала «Системный администратор». И в первом, и во втором случае основной причиной к этому были свежие номера журналов. Также немало людей было около экспозиции компании IBM, вокруг которой ходил представитель линуксоид-
4
ного семейства – пингвин. Компания IBM представляла ряд своих решений на базе Red Hat Linux. Компания Novell традиционно предлагала наиболее свежую версию дистрибутива Suse. ALT Linux и ASP Linux соответственно предлагали свои дистрибутивы.
Лёгкий ажиотаж на стенде ЛинуксЦентра
Были представлены и компании, занимающиеся разработками своих решений на Linux. Например, компания Smart Software знакомила с программным продуктом «Умный ресторан» (система автоматизированного учёта для управления ресторанным бизнесом).
репортаж Компания R-Style, кроме всего прочего, предлагала авторизованное обучение по Red Hat Linux. Присутствовал и стенд компании Linux-Online, разработчика дистрибутива Linux XP, о котором в своё время прошли жаркие дебаты на многих форумах. Несколько удивило название выставки систем электронного документооборота – Documation. На стенде Cognitive Technologies была представлена система Евфрат-Документооборот. InterTrust предлагал посетителям узнать, как правильно управлять персоналом и узнать побольше про защищённый документооборот. Также присутствовали компании DocsVision, Neuhous group и Globus. Честно говоря, на выставке Documation было еще менее оживВесьма оживлённый стенд компании Hewlett-Packard лённо, чем на LinuxWorld. Гораздо оживлённее было на вы- ные решения. Несколько удивило при- мерной перегруженности выставочставках StorageExpo и InfoSecurity. сутствие компании Мегафон, которая ных площадей людьми заметно не быЗдесь присутствовали основные иг- предлагала услугу конфиденциальной ло ни ранним утром, ни в более позднее время. К слову сказать, листая кароки рынка систем информационной и защищённой сотовой связи. Сложно было пройти мимо бо- талог всех представленных компаний, безопасности. Системы аутентификации, антивирусной защиты и шиф- лее чем серьёзных стендов Aladdin, я слегка недоумевал. Сложилось вперования были представлены компа- Trend Micro, Ланит, Открытые техно- чатление, что половина из заявленниями «Антивирусный центр», Aladdin, логии и ряда других. Очевидно, что ных компаний попросту не явилась Dr. Web, Актив (Guardant), Лаборато- InfoSecurity и StorageExpo более при- на выставку. Стабильной посещаемостью могли рия Касперского, Websense, BioLink, влекательны для компаний, так как ни одного по-настоящему большого стен- похвастаться только разве что конфеHP, Kraftway и другими. Повсюду можно было видеть, как да (исключая компанию IBM) на том же ренц-залы. Списки выступающих, висевшие перед входом, внушали свопосетители заинтересованно общались LinuxWorld не было. В целом, нельзя сказать, что все ей длиной и обещали не дать скучать с представителями компаний, предлагающими свои программные и аппарат- четыре выставки пустовали, но и чрез- на протяжении всего времени проведения выставки. В последнее время создаётся устойчивое впечатление, будто бы IT-выставки мало-помалу потихоньку себя изживают, как произошло с приснопамятной Комтек. Если говорить про выставку безопасности (InfoSecurity), которая интересна большинству системных администраторов, то налицо отсутствие новаторских решений и новых технологий. Те же компании представляют всё те же продукты. Строго говоря, тот, кто был на выставке в прошлом году, но не был в этом, – ничего не потерял. Остаётся надеяться, что отсутствие новинок – это лишь «затишье перед бурей», а не мрачная тенденция к истощению идей в компаниях-разработчиках. А некоторые стенды вообще пустовали…
№10, октябрь 2006
Алексей Коршунов, фото автора
5
репортаж
Softool стал самой успешной IT-выставкой этого года
Уже в семнадцатый раз русскоязычный мир IT-шников собирается на крупное и уже давно ставшее культовым мероприятие, имя которому – Softool.
О выставке в целом Выставка Softool’2006, проходившая в Москве с 26 по 29 сентября, по традиции собрала множество участников и посетителей. Всей экспозиции не хватило одного этажа и без того немалого 69-го павильона ВВЦ, часть – САПР’Экспо – была расположена на втором, аккурат по соседству с православной выставкой «По завету Князя Даниила» (впрочем, такое оригинальное сожительство совсем не в новинку тем, кто приходит на Softool не впервые). Участники экспозиции на первом этаже были разделены на следующие категории: «Технологии управ-
6
ления», «АСУТП’Экспо», «Информа- ний, имеющих дело с информационныционная безопасность», «DOCFLOW ми технологиями. Day», «LinuxLand», «Информационные Раздел «АСУТП’Экспо», как и слетехнологии в образовании». дует из названия (автоматизированВ первой и самой крупной секции ные системы управления технологипредставлено все многообразие су- ческим процессом), посвящен автомаществующих продуктов для менедж- тизации производства, причем преимумента в различных его проявлениях. щественно крупных промышленных Основные направления – системы уп- предприятий (во всяком случае именно равления предприятиями, управле- о них шла речь в докладах конференние бизнес-процессами и т. д. Участ- ции, приуроченной к экспозиции). «Информационную безопасность» ники специализируются на разработке и внедрении сложных информаци- представляли знакомые компаниионных систем, а также системной ин- мэтры из областей криптографии, теграции. Обилие предложений порож- защиты данных, обеспечения безодено спросом огромного числа компа- пасной работы на ПК и т. п. Несмот-
репортаж ря на широту затрагиваемых этой экспозицией вопросов, путешествие по стендам оставило ощущение наличия наибольшего спроса на антивирусные решения от лидеров индустрии (правда, имеющих тенденцию расширяться и интегрироваться во все более значительных масштабах). Популярная в последнее время тема электронного документооборота и его автоматизации не могла остаться незамеченной на Softool – ей отвели самостоятельную секцию «DOCFLOW Day», в которой вновь главенствовала некогда учредившая это мероприятие ABBYY. На непродолжительной конференции успели выступить наиболее яркие представители этой области из отечественной индустрии. САПР’Экспо не случайно разместили на втором этаже – практика предыдущих выставок показала, что CAD, CAM и ГИС беспрестанно набирают популярность. В связи с этим экспозиции понадобилось больше места для всех желающих продемонстрировать свою продукцию. Стоит выделить и насыщенную программу мастер-классов, а также и занятной инициативы, получившей название «САПР-Шоу», где одни и те же задачи одновременно решались на различных системах САПР.
LinuxLand Проводимый во второй раз LinuxLand вновь собрал ряд компаний, продвигающих технологии с открытым кодом. Как завсегдатаев таких выставок (в основном, конечно, отечественных и зарубежных Linux-поставщиков), так и новичков вроде SmartSoftware, предлагающих под лозунгом «Время умных решений» комплексные системы автоматизации предприятий, занимающихся такими услугами, как гостиницы и рестораны, для Linux. Ввиду недавних релизов Mandriva (Corporate Server 4.0 и Linux 2007) в Москву пожаловал Пол Гийе (Paul Guillet), вице-президент продаж в этой французской компании. Благодаря такому стечению обстоятельств и стараниям организаторов Россия стала первой в мире страной, где прошла официальная презентация последних разработок Mandriva. Самым же интересным событием для меня стало знакомство с компанией Keyintegrity, которая, сама того из-
№10, октябрь 2006
начально не планируя, создала Open Source-решение, обеспечивающее взаимодействие между веб-сервисами и COM-объектами ОС Windows.
В заключение Отдельно выделю привычную активность со стороны «1C». Некоммерческое Партнерство Поставщиков Программных Продуктов провело акцию «Не корми пирата!» – на своем стенде представители партнерства развернули свободную пропагандистскую площадку, где предлагали каждому написать что-нибудь в поддержку лицензионной продукции; разумеется, засилья комментариев от сторонников Open Source избежать не удалось.
На стенде редакции «Системного администратора» читатели приобретали любимый журнал со специальной большой скидкой, которая действует исключительно на выставках. А читателям, оформившим подписку на следующий, 2007 год, с юбилейным пятидесятым номером журнала (№1 за 2007 г.) в подарок будет прилагаться диск с архивом всех вышедших номеров, начиная с 2002 года. По сравнению с остальными IT-выставками этого года, Softool-2006 действительно удался, по-прежнему держит марку и пользуется популярностью у посетителей и участников.
Дмитрий Шурупов, фото автора
7
администрирование
Как обеспечить необходимое быстродействие систем «1С: Предприятие»
Роман Марков Вы каждый день выслушиваете жалобы бухгалтеров и менеджеров на низкое быстродействие системы «1С:Предприятие», невозможно долгое формирование отчетов и постоянные конфликты одновременных блокировок таблиц? Попробуем разобраться в сути проблемы и проанализировать возможные варианты решений.
В
последние годы технологии терминального доступа к Windowsприложениям пользуются неимоверной популярностью. В нашей стране основную нишу занимает применение терминального доступа для компенсации недостатков скорости обработки информации наиболее популярной системы учета – «1С:Предприятие». Именно узкие места реализации обработки данных в этой системе (нерациональные процедуры чтения-записи записей из БД по сети) привели к необходимости решать проблему ускорения системы в целом. Поскольку переделать процедуры обмена самостоятельно невозможно (не имеет смысла, так как система написана произ-
8
водителем и постоянно модифициру- системы «1С:Предприятие», – ее медется по собственным стандартам), не- ленная работа при увеличении размеобходимо максимально ускорить про- ра информационных баз, а также коцесс обмена данными в модели клиент- личества одновременно работающих сервер, достигнув максимальной ско- пользователей. Помимо этого на бысрости обмена по сети. Однако никакие тродействие системы в целом может типовые локальные сети не позволяют влиять недостаточная производительдостигнуть той скорости обмена, кото- ность серверов и рабочих станций, рая существует на внутренних шинах низкая пропускная способность лосерверов. Поэтому идея расположить кальной сети, нерационально составклиентскую и серверную части на од- ленные процедуры дополнительных отном физическом сервере дала макси- четов, некорректная настройка IT-инфмальное ускорение при работе систе- раструктуры, отсутствие у техперсонамы «1С:Предприятия». ла знаний о возможностях оптимизации информационной системы. Как видите, количество факторов, Подробнее о проблеме Одна из самых неприятных проблем, влияющих на общее быстродействие с которой сталкиваются пользователи системы, велико, и не обладая знани-
администрирование ями обо всех возможных причинах замедления, а главное – о способах устранения таких причин, – невозможно построить быстродействующую систему, на 100% использующую все ее возможности. Успешная работа при реализации многих проектов системной интеграции, связанных с комплексным внедрением систем «1С:Предприятие», дает мне возможность максимально точно оценивать причины неэффективной работы указанного приложения у заказчиков.
Общие модели доступа к БД «1С:Предприятие» Наиболее часто использующийся на малых и средних предприятиях вариант – файл-серверная модель доступа. В этом случае один из компьютеров исполняет роль файл-сервера, на котором хранятся БД, предоставленные в общий доступ по сети, а пользователи играют роль клиентов этого файл-сервера, открывая предоставленные им файлы баз данных на чтение и запись. Файл-серверная версия использует файлы в формате DBF. Основное ее преимущество заключается в том, что не требуется дополнительного программного обеспечения для организации работы, так как для подключения к базе данных достаточно предоставить папку с ее файлами в общий доступ, что достигается средствами любой сетевой операционной системы. Этот формат разрабатывался прежде всего для работы с БД небольшого размера при малой нагрузке. Поэтому при активной работе нескольких пользователей с базой данных наблюдается значительное замедление работы программы. Особенно если ктонибудь из пользователей запустит построение масштабных отчётов за большой период времени. О причинах этого замедления я расскажу немного позже, так как именно они мотивируют переход к использованию терминального решения в файл-серверной версии системы «1С:Предприятие». Второй тип организации доступа к базе данных системы «1С:Предприятие» – клиент-серверная модель. В клиент-серверной версии таблицы хранятся в базе данных под управлением Microsoft SQL Server, и клиентское приложение не открывает файлы
№10, октябрь 2006
базы данных при каждом новом подключении, а посылает запрос серверу баз данных (SQL server). Запрос обрабатывается самим SQL-сервером, который считывает данные из своей базы и выдает клиентГрафик зависимости времени реакции системы скому приложению от количества активных пользователей только необходимую их часть. Таким образом взаимодейс- ное отличие состоит в том, что при нетвие «клиент-сервер» сводится к от- обходимости SQL-сервер обеспечиправке на сервер запроса и получе- вает откат транзакций, аварийно зания ответа, содержащего уже отсор- вершившихся по каким-либо причитированные данные вместо самосто- нам. То есть в начале любой операции ятельного считывания клиентом фай- по внесению изменений в БД SQL-серлов БД по сети. Это уменьшает сетевой вер записывает состояние изменяемотрафик и увеличивает быстродействие го объекта до проведения изменения в сравнении с файл-серверной моде- и отслеживает успех операции. В слулью при большом количестве активных чае аварийного завершения этой опепользователей и значительном объеме рации объект не изменяется и возвраБД. То есть для клиент-серверной вер- щается в предыдущее стабильное сосии время реакции на запросы поль- стояние. В случае аварийного заверзователей при возрастании количес- шения операции по изменению файтва активных пользователей не воз- ла DBF информация в нем остается растает так резко, как это происхо- «как есть», что может привести к недит с файл-серверной моделью. Од- работоспособности БД. Поэтому для обеспечения максинако не стоит забывать, что SQL-версия изначально ориентирована имен- мальной надежности хранения больно на надежность обработки боль- ших БД и исключения возникновения ших объемов данных, хранение кото- транзакций рекомендуется использорых в файл-серверной модели чрева- вать клиент-серверную модель. В «1С:Предприятии 8.0» используто разрушением БД, а не на увеличение скорости работы с приложением ется трёхуровневая архитектура «кли(во всяком случае, это относится к со- ент-сервер», при которой клиентская четанию «1С:Предприятие» – Microsoft часть обращается к серверу приложеSQL Server). Поэтому при малых раз- ний 1С, а он в свою очередь обращаетмерах БД или небольшом количест- ся к серверу баз данных Microsoft SQL ве активных пользователей SQL-вер- Server, который и обрабатывает засия проигрывает по скоростным пока- просы к информационной базе. Серзателям файл-серверной. Это можно вер приложений 1С сосредотачивает увидеть на примерном графике со- на себе выполнение объемных и сложных операций, при этом клиентская отношения. Однако при больших объемах часть будет получать необходимую ей БД (например, при общем объеме выборку. Ресурсы современных серDBF-файлов, превышающем 2-3 Гб) веров позволяют расположить и серхранение такой базы в файл-сервер- вер приложений и сервер БД на одном ном варианте и работа с ней в много- физическом сервере, что, несомненпользовательском режиме может со- но, ускоряет обработку запросов, одздать проблемы возникновения бло- нако создает двойную нагрузку на рекировок таблиц при одновременном сурсы. К сожалению, именно к этому доступе к ней нескольких пользова- нас вынуждают схемы взаимодействия телей, а также разрушение структу- клиентов систем «1С:Предприятие» ры таблиц, что приведет к неработос- с их серверами. В случае перегрузки такого сервепособности БД. SQL-сервер хранит данные в дру- ра в моменты пиковых нагрузок желагом формате. Главное принципиаль- тельно разделить Сервер Приложе-
9
администрирование ний «1С:Предприятия 8.0» и Microsoft SQL Server, установив их на разных компьютерах, что позволит нормализовать работу системы. Рекомендации по выбору необходимого оборудования для различных моделей доступа к БД и максимальных нагрузок будут даны в конце статьи. Разобравшись в моделях доступа к БД в разрезе систем «1С:Предприятие», можно приступать к анализу факторов, влияющих на общее быстродействие системы в целом. Еще раз рассмотрим возможные причины замедления: 1. Увеличение размера информационных БД: это естественное следствие штатной работы с БД, размер которой зависит от количества введенных документов, однако есть некоторые нюансы. Если компания ведет непрерывный учет всех документов за весь период работы БД, то ее размер при интенсивном документообороте может вырасти до критического за очень небольшой период. Напоминаю, что мы рассматриваем условную величину «критичности» размера БД в файл-серверном варианте, равную 2 Гб. Для клиент-серверной модели это понятие (в разумных пределах), в общемто, не имеет значения. В случае если компания не собирается переходить к клиент-серверному варианту доступа к БД, ей приходится принимать меры по свертке таких баз, путем закрытия отчетных периодов и переноса остатков на начало нового периода. При этом все документы, предшествующие началу нового периода, из базы удаляются. Именно на это я и хотел бы обратить ваше внимание. Даже после удаления неактуальных документов из БД ее размер не изменится! Причина заключается в структуре данных, используемой для хранения БД. При удалении документов из базы на физическом уровне происходит только удаление ссылок на эти документы. Само место, зарезервированное под эти записи, в файлах БД остается занятым. Из-за этого и не меняется размер БД сразу после очистки всех помеченных на удаление записей. Для физического сжатия
10
файлов БД необходимо выполнить 5. Зависимость от уровня профес«Упаковку таблиц БД». Для систесионализма программистов: немы «1С:Предприятие 7.7» это можредко встречаются случаи, когда отдельные нестандартные процено сделать из конфигуратора, выбрав в меню «Администрировадуры, написанные программисние» пункт «Тестирование и истами вручную, работали медленправление ИБ». Будьте осторожно из-за нерационального подхоны с этой процедурой! Ее необхода к анализу данных и затормажидимо проводить только после товали работу остальных пользоваго, как вы сделали архивную котелей с БД. И наоборот – вручную переписанные талантливым пропию БД и провели ее полное тестирование и исправление. Для больграммистом обработки давали неших БД данный процесс продолжиимоверную производительность даже в простом файл-серверном телен и в зависимости от быстроварианте. При использовании клидействия компьютера может занимать до 3-5 суток! ент-серверной модели максималь2. Увеличение количества активной производительности можно доных пользователей БД: тут таких стичь, обрабатывая записи БД несоветов, как в предыдущем пункте, посредственно средствами SQL. дать не получится, так как «УпаковОднако не все программисты умеку пользователей» производить зают это делать, а признаться в этом не решаются. прещено законом… Так что с этим остается только смириться и следо- 6. Некорректная настройка IT-инфвать другим советам по увеличению раструктуры техническими спепроизводительности системы. циалистами и отсутствие у тех3. Недостаточная производительперсонала знаний о возможносность серверов и рабочих стантях оптимизации информациций: особых хитростей здесь нет, онной системы: здесь все завикроме того, что вы должны быть сит от глубокого понимания IT-спеуверены, что замедление работы циалистами происходящих в сеявляется следствием недостаточти процессов. Помимо общих каности ресурсов, а не других причин, нонов настройки локальной сети, о которых будет сказано в разделе необходимо учитывать множесорганизации терминального достутво факторов. Например, частой ошибкой технических специалиспа к БД. 4. Низкая пропускная способность тов является отсутствие тонкой налокальной сети: для обеспечестройки антивирусных мониторов. Чаще всего оставляют настройния достаточного быстродействия необходимо, чтобы пропуски по умолчанию, что для мнокная способность сети составлягих антивирусных продуктов озла 100 мегабит от клиента до серначает постоянную проверку всех подключенных сетевых ресурсов, вера БД (это требование не отноа также абсолютно всех файлов. сится к варианту с сервером терРекомендуется исключать из проминалов – там достаточно 50-100 килобит(!) в сек. для каждого из верки файлы БД, так как наликлиентов. Для 3-уровневой систечие в них вирусов – очень маломы обработки «1С:Предприятие» вероятное событие. А вот постопри разнесении сервера приложеянная проверка файлов метаданний 1С и SQL-сервера по физичесных (*.md), структуры метаданных (*.dd) и файлов БД 1С *.dbf и *.cdx ки разным серверам рекомендуетзамедлят работу всей вашей сисся максимально увеличить скорость их взаимодействия между собой. темы в несколько раз. Нелишним окажется установить в каждый сервер по два и более Замедление работы гигабитных сетевых адаптера и со- файл-серверной модели БД единить их через гигабитный ком- на серверах с Windows мутатор, объединив сетевые адап- Итак, мы добрались до рассмотрения теры в транк с поддержкой балан- технологии терминального доступа, ее преимуществ и причин, по которым сировки нагрузки.
администрирование ее применение позволяет максималь- со сервером терминалов. Именно по- тическая» скорость работы с БД в рено ускорить работу с БД. этому не имеет значения, какой ком- жиме сервера терминалов. Не преНаверняка все вы знаете о «стран- пьютер установлен у клиента – единс- доставляйте общего сетевого достуной» особенности работы с БД, распо- твенная его задача – запустить клиент- па к папке с базами данных, так как ложенных на сетевых дисках серверов, скую часть, которая будет нормально совместное использование ее по сети под управлением ОС Windows. С файл- работать даже на 486-м компьютере значительно замедлит работу. То есть серверами под управлением других ОС с 16 Мб памяти и любой ОС, для кото- с одной и той же базой все должны радело обстоит получше, но не все умеют рой существует клиент сервера терми- ботать в терминальном режиме, незаих администрировать, да и то ускоре- налов Windows. висимо от ресурсов клиентской рабоОднако в таком варианте постро- чей станции. ние, которое предоставляют технолоПомимо ускорения работы с БД гии терминального доступа, все равно ения сети вся нагрузка перекладыванедостижимо другими способами – пе- ется на сервер, так как в его обязан- неоспоримым преимуществом термиреносом БД на файл-сервер с ОС, от- ности будет входить не только хране- нал-сервера является сжатие передаличимой от Windows. ние информационной базы, но и пол- ваемой по сети информации, что позИтак, в чем же заключается эта ностью вся обработка, что равносиль- воляет работать с программой через особенность, из-за которой резко но работе всех пользователей на од- медленные каналы связи. Именно тазамедляется работа с сетевой БД ном локальном компьютере. Плюс под- кая модель доступа позволяет оргапри одновременной работе с ней бо- держка сеанса связи с каждой подклю- низовать удаленную работу филилее чем одного пользователя? То есть чённой машиной. В терминальном ре- альных отделов с единой БД в режипри работе в однопользовательском жиме специфична и сама работа поль- ме online – ведь для каждого клиента режиме, даже по сети, скорость рабо- зователей: на экране они видят ра- достаточно канала передачи данных ты оказывается приемлемой, однако бочий стол сервера, поэтому все ло- шириной 40-60 Кбит/сек. Таким обрастоит хотя бы еще одному пользова- кальные диски и принтеры на самом зом, при необходимости предоставить телю начать работу с БД, как скорость деле будут являться периферией са- филиальным представительствам доформирования отчетов и проведения мого сервера. ступ к центральной БД (или наоборот) документов падает в несколько раз, Серьезным расширением возмож- достаточно обладать сервером необа то и на порядок. Это происходит из- ностей стандартного сервера терми- ходимой мощности для организации за того, что система Windows отклю- налов Windows является продукт Citrix на нем сервера терминалов и каначает кэширование дисковых опера- Metaframe. Он предоставляет возмож- лом связи с указанной выше пропусций при подключении к сетевому ре- ность сделать работу с терминальным кной способностью. сурсу более чем 1 пользователя. Де- приложением абсолютно прозрачным лается это во избежание потери дан- для пользователя и для удобства поз- Сколько стоит такое ных из-за взаимных блокировок, од- воляет подключить и собственные ре- терминальное решение? нако сильно страдает производитель- сурсы компьютера. Например, под- Итак, принимая решение о переходе на ность системы. ключение к сеансу пользователя его терминальную схему работы системы Преимущество терминального локальных принтеров, на мой взгляд, «1С:Предприятие», необходимо учитырешения в том, что при его исполь- в Citrix Metaframe организован более вать, что для организации работы серзовании вся обработка информа- удобно. Однако следует учитывать вера в режиме сервера приложений ции (не только запросы, но и вся кли- что Citrix Metaframe является только необходимо приобрести лицензии клиентская часть) происходит на серве- дополнением к стандартному серве- ентского доступа к нему. Каждая лире терминалов, так что на компьюте- ру терминалов MS, а не самостоятель- цензия «на устройство» (MS TS CAL) рах пользователей даже нет необхо- ным продуктом. Да и стоимость данно- обойдется вам около 80 $. Сам сервер димости устанавливать программу го «расширения» велика по сравнению терминалов входит в стоимость лицен«1С:Предприятие». с применением стандартного сервера зии Windows Server. По сети компьютерам-клиентам терминалов от Microsoft. К слову, саРасширение Citrix Metaframe стоит предоставляются только готовые эк- му технологию Terminal Services ком- от 2000 USD за стартовый пакет из 5 ранные формы, пользовательской тер- пания Microsoft купила именно у ком- лицензий. Каждые последующие 5 лиминальной сессии. Поскольку переда- пании Citrix. цензий будут стоить около 1500 $. Если вы используете файл-серверПоэтому (это мое субъективное ча экранного изображения в сжатом виде требует меньшего потока данных ную версию программы, то максималь- мнение) покупка MS TS CAL – абсодля подключения к серверу термина- ные преимущества терминального ре- лютно оправдана, так как ускорение лов, можно использовать медленные шения достигаются при расположении работы системы при этом предостаканалы связи, вплоть до обычного мо- базы данных на локальном дисковом вит новые возможности расширения дема, а сами компьютеры могут быть массиве этого же сервера. При рас- бизнеса. Приобретение же Citrix Metaframe низкой производительности. положении базы на локальном диске На компьютеры пользователей сервера обмен с ней осуществляется должно быть обусловлено серьезной устанавливается только терминаль- по внутренним шинам передачи дан- необходимостью использования возный клиент, задача которого иници- ных сервера, а не по локальной сети. можностей продукта, однако их анализ ировать и поддерживать сеанс связи Именно этим и объясняется «фантас- выходит за рамки данной статьи.
№10, октябрь 2006
11
администрирование
Microsoft Operations Manager 2005: управляем сетью
Андрей Бирюков Мониторинг и управление серверами и приложениями, особенно в большой сети, – задача нетривиальная, и зачастую требует довольно больших затрат времени и ресурсов. Эффективное средство, которое позволит вам решить часть этих проблем, – Microsoft Operations Manager. вый продукт, не используют большинсКлючевой элемент системы – серПриступая к работе Решение проблем, связанных с экс- тво имеющихся возможностей. Другие вер управления MOM. Отмечу, что серплуатацией оборудования и програм- коллеги говорили, что хотели бы внед- вер управления должен размещаться много обеспечения, – неотъемлемая рить у себя подобное средство, но опа- в центральном офисе (в случае, есчасть работы системного администра- саются, что продукт слишком сложен ли сеть компании географически разтора. Так называемый troubleshooting, в эксплуатации и поддержке. Так ли несена), желательно иметь несколькак правило, занимает намного боль- это на самом деле? В этой статье вы ко маршрутов до каждого из филише времени, чем, к примеру, работы узнаете об архитектуре MOM, а также алов (хотя это требование относитпо внедрению программных продук- разберем вместе типичные примеры ся не только к МОМ, но прежде всего тов или начальная настройка сетевого использования различных компонент к надежности всей сети), а также прооборудования. В связи с этим возника- и функций. пускная способность сегмента сети, в котором находится сервер управлеет необходимость в постоянном мониторинге событий, происходящих в се- Архитектура системы ния, должна быть достаточной для тоти. Конечно, если у вас один или два «MOM 2005 предоставляет открытые го, чтобы администратор мог быстро сервера, то всю необходимую инфор- и масштабируемые средства для уп- получать уведомления о различных мацию можно получать из журнала со- равления информационными система- событиях и сбоях. Следующий элемент системы – бытий (Event Viewer), счетчиков произ- ми предприятий, комплексного управводительности (Performance Counter), ления событиями, активного контроля база МОМ, в которой хранятся все а также WSH-сценариев. Но если у вас и оповещения, создания отчетов и ана- настройки и сообщения о событиях. десятки серверов, на которых установ- лиза тенденций, а также специальные В связи с этим необходимо позаболены различные программные продук- базы знаний, содержащие сведения титься о безопасности базы, разграниты (службы Active Directory, базы дан- о функционировании систем и прило- чив соответствующим образом доступ ных, система резервного копирования, жений, для повышения уровня управ- к ней. В зависимости от аппаратных корпоративный антивирус и так далее), ляемости корпоративных систем». Та- возможностей сервера, на котором то без промышленного решения не кое определение своему продукту дает разворачивается Microsoft Operations обойтись. Для сети на основе Windows Microsoft. Несмотря на официальный Manager, базу данных можно устанотаким решением является Microsoft стиль, такое определение дает общее вить как на том же узле, так и другом, Operations Manager 2005. Однако, об- представление об архитектуре и фун- в случае, если нагрузка на сервер упщаясь со многими системными адми- кциональности продукта. Итак, рас- равления слишком велика. Что касанистраторами, мне приходилось стал- смотрим более подробно схему взаи- ется редакции SQL-серверa, которую киваться с тем, что некоторые из них, модействия МОМ с управляемыми про- можно использовать для базы данвнедрив этот, прямо скажем, недеше- дуктами (см. рис. 2). ных, то лучше по возможности избе-
12
администрирование жать применения MSDE. Дело в том, что ввиду ограничений, которые разработчики наложили на версию MSDE, например, общий объем файлов базы должен быть не более 2 Гб, нормальное функционирование МОМ в больших сетях может оказаться под угрозой. К сожалению, мне не довелось разворачивать МОМ вместе с Microsoft SQL 2005, но по заверениям Microsoft, ее также можно использовать в качестве базы данных. Описав систему управления МОМ, теперь перейду к элементам, которыми управляет система. Узлы могут управляться как с помощью специальных агентов, так и без них. Для разРисунок 1. Административная консоль МОМ вертывания агентов необходимо установить на управляемую машину производителей программных проагент МОМ (узел вида Agent managed), дуктов. Management Packs для прото есть сервис, который будет локаль- дуктов Microsoft можно скачать бесно собирать данные о состоянии маши- платно [1]. К тому же хочу заметить, ны и отправлять их на сервер управ- что Management Pack можно сделать ления. Устанавливать агентов можно самому, подробнее этот вопрос я раскак удаленно с сервера управления, смотрю далее. На этом теоретическая так и локально, запустив дистрибутив часть закончена, и приступим к более на управляемом сервере. Для соеди- интересной практической части, то нения с сервером управления по умол- есть реализации функциональных возчанию используется порт 1270 и про- можностей МОМ на практике. токол TCP. Узлы без агентов (agentless managed) не содержат каких-либо сер- Разворачиваем систему висов и приложений МОМ. При этом Прежде всего необходимо определить, агент установлен на самом сервере какие сведения надо собирать. Предуправления, который удаленно соби- положим, что в сети имеется четыре рает информацию с управляемого уз- сервера. Первый является основным ла. При этом используются средства контроллером домена, на нем такWindows для сбора сведений о состо- же запущены службы DHCP, DNS, IIS янии управляемой системы. Недостат- и система резервного копирования. ком agentless-узлов является отсутс- Второй – резервный контроллер дометвие ряда возможностей для более эф- на, на котором также установлен почфективного сбора статистики и реаги- товый сервер Exchange. Третий сервер рования на инциденты, по сравнению в предполагаемой топологии – это сервер баз данных, на котором установс agent-managed. Еще один элемент системы управ- лены Microsoft SQL 2000 и сервер терления Microsoft Operations Manager – миналов. И наконец, четвертый файManagement Packs – контейнеры, со- ловый сервер, на нем находятся папдержащие наборы правил, позволя- ки общего доступа, хранятся профили ющих осуществлять сбор информа- пользователей и файлы резервных коции. Этот элемент МОМ представляет пий. Расположение описанных прилоособый интерес, так как именно с по- жений на конкретных серверах больмощью Management Packs можно со- шого значения не имеет, даже если бирать разнообразную информацию все они установлены на одном сервео системе. На основе этих сведений ре, МОМ это не помешает. Процесс установки самого сервеможно создавать правила, позволяющие реагировать на различные собы- ра управления MOM 2005 подробно расписан в файле помощи. Отмечу тия системы. Пакеты управления бывают как лишь, что после установки MOM 2005 платные, так и бесплатные. Бесплат- необходимо также установить Service ные пакеты можно найти на сайтах Pack1.
№10, октябрь 2006
После установки, открыв Administrative Console, вы увидите окно (см. рис. 1). Консоль является основным средством администрирования Microsoft O p e r at i o n s M a n a g e r. В р а з д е л е Administration, открыв подраздел Computers, в группе Management Servers видны те серверы, которыми может управлять МОМ. Сюда входят как узлы с установленными агентами, так и agentless-узлы. Однако сразу после установки в этом разделе будет только один узел – сам сервер управления МОМ. Теперь нужно развернуть агенты на тех узлах, которыми необходимо управлять. Конечно, можно обойтись без установки агентов, но тогда нельзя будет продемонстрировать часть функциональных возможностей продукта. Для развертывания можно воспользоваться MSI-пакетом, который входит в состав дистрибутива МОМ, или удаленной установкой из консоли управления Administration console. После запуска открывается окно для установ-
Рисунок 2. Схема взаимодействия МОМ и управляемых серверов
13
администрирование Computers административной консоли МОМ. При обсуждении вопроса установки агентов на различные узлы нельзя обойти еще одну интересную возможность Microsoft Operations Manager – это с редс тво Computer Discovery Rule, позволяющее задавать правила при поиске машин, на которые не был установлен агент, машин, входящих Рисунок 3. Соединение с сервером управления в домен, серверных или клики соединения с сервером управления ентских операционных систем, а также (см. рис. 3). имен машин, содержащих определенЗдесь необходимо указать группу, ный набор символов. в которой должен находиться данный Итак, после того, как агенты упузел, сервер управления, а также порт, равления установлены, можно приступо которому должен осуществляться пить к установке пакетов management доступ. Обратите внимание на номер Packs, позволяющих осуществлять порта, который используется для уста- сбор информации по событиям конновки соединения. Если при установке кретного вида. Если в состав вашесервера управления был указан другой го дистрибутива МОМ не входят нужпорт, то его надо указать и при установ- ные пакеты или они уже слишком уске агента. Также следует проследить, тарели, то можно воспользоваться исчтобы этот порт был открыт на межсе- точником [1] или же поискать на сайте тевом экране, в случае, если управля- производителя конкретного програмемый сервер находится в DMZ. В раз- много обеспечения. Так какие пакеты деле Agent Control Level можно выбрать management Pack нам нужны для тоуровень доступа, который будет разре- го, чтобы эффективно управлять нашен управляющему серверу к данно- шими четырьмя серверами? Прежде му агенту. По умолчанию предлагает- всего, учитывая, что сегодня практися опция None, то есть сервер управ- чески каждая сеть на основе Windows ления не будет иметь права на изме- использует AD, нужно установить панение конфигурации, деинсталляцию кет для Active Directory. С помощью или обновление агента. Такой вариант Management Pack можно получать увеявляется наиболее приемлемым в си- домления об использовании учетных туации, когда управляемый узел и сер- записей, попытках несанкционировер МОМ разделены межсетевым эк- ванного доступа, изменения привилераном. Опция Full позволяет серверу гий и так далее. Следующий необхоуправления осуществлять изменение димый пакет – Base Operating System – конфигурации и деинсталляцию аген- позволяет собирать сведения о протов. В разделе Advanced можно также изводительности серверов, использодобавить адрес альтернативного сер- вании ресурсов, загрузке процессора. вера МОМ. Это позволяет увеличить Далее DHCP Service и, следовательно, надежность системы в целом. Management Pack для сбора статистиНа следующем шаге ус танов- ческой информации по событиям, свяки необходимо указать тип аутенти- занным с DHCP. В случае, если в вафикации. В общем случае лучше ис- шей сети используется Distributed File пользовать доменную учетную запись System, можно воспользоваться соотс правами, достаточными для управ- ветствующим пакетом для DFS. Такления сервисами на данном узле. Да- же необходим пакет для DNS. Так как лее аналогичные действия необходи- мы договорились, что в нашей сети исмо проделать на остальных серверах, пользуется почтовый сервер Exchange, на которые требуется поставить аген- то необходимо установить пакеты упта управления МОМ. После установ- равления для него. Тут следует оговоки агента управляемые узлы должны риться, что для Lotus Domino также супоявиться в разделе Agent Managed ществуют пакеты управления для МОМ,
14
но они платные в отличие от пакетов для продуктов Microsoft, которые можно скачать бесплатно. Далее будет весьма полезен пакет Group Policy, который позволит собирать все сведения о результатах применения групповых политик на клиентских машинах и серверах. Если в вашей сети используются веб- или FTP-службы на базе IIS, то соответствующий пакет управления также будет полезен. Management Pack для таких продуктов Microsoft, как ISA, SQL Server, SMS, Office и MOM (собственно, сбор статистики по самому МОМу тоже необходим), нужно установить в том случае, если эти продукты используются в вашей сети. Возвращаясь к нашим четырем серверам, отмечу, что необходимо установить пакет для Terminal Services, Print Service, WINS (несмотря на все рекомендации Microsoft, данная служба до сих пор активно используется во многих сетях). Теперь, определившись с пакетами, которые необходимо развернуть, можно приступать к самому процессу установки. Для этого в административной консоли выберите раздел management Packs, далее в меню Action, опция Import/Export Management Pack. В окне запустившегося мастера, выбираем Import (Export может потребоваться при миграции настроек на другой сервер управления). Далее указываем путь к файлам пакета, внизу предлагается выбрать, что экспортировать. В случае, если у вас служба Reports не используется, импортируйте только Management Pack. Далее можно выбрать тип импорта, если пакет устанавливается впервые, то делать резервное копирование предыдущей версии не нужно. Затем происходит собственно импорт пакета. В случае удачного завершения установленный Management Pack сразу же начинает наблюдение за соответствующими компонентами системы. С помощью данного алгоритма необходимо установить все выбранные пакеты управления МОМ. Для того чтобы увидеть результат работы пакетов, достаточно зайти в Operator Console. Здесь есть раздел Alerts и раздел Service Level Exceptions. В них находятся сообщения обо всех событиях, которые фиксирует МОМ. Также есть разделы, каждый из которых соответствует определенному Management Pack, в которые аналогич-
администрирование но собираются события (Events) и исключения (Exceptions), но уже относящиеся только к данному разделу. Например, на рис. 4 можно наблюдать несколько сообщений разного уровня важности, критические ошибки (Critical Error), ошибки (Error), предупреждения (Warning) и информационные сообщения (Information). Следует заметить, что это не просто сообщения, ана логичные тем, что операционная система создает в журнале событий Event Log. Здесь сообщения предусматривают некоторую реакцию оператора, в частности, обратите внимание на поле Resolution State. Новые сообщения всегда появляются в состоянии New, однако дальнейшее состояние каждого сообщения должен определять уже оператор. СоРисунок 4. Консоль оператора стояние может подразделяться на чечае, приведенном на рис. 4, админист- Group». Далее создаваемой группе тыре уровня: Уровень 1 – проблема отправле- ратор при создании нового пула адре- необходимо дать имя и активировать на внутренней технической под- сов на DHCP-сервере, забыл его акти- ее, включив опцию «Enabled». Теперь вировать, что и привело к появлению вам доступны три вида правил: Event держке. Rules, Alert Rules и Performance Rules. Уровень 2 – проблема отправлена данных сообщений об ошибке. Еще одной весьма полезной функ- Каждая из этих групп предполагает специалисту по данному продукту. Уровень 3 – проблема направлена цией МОМ, которая помогает систем- наличие правил для решения опредево внешнюю поддержку (например, ному администратору в решении про- ленных задач: службе технической поддержки блем, является наличие базы знаний. Event Rules – эта группа реагирует При этом есть база знаний как по данна появление определенных собыкомпании-поставщика). тий в журнале Event Log. Уровень 4 – проблема отправлена ному продукту, так и корпоративная база, сведения в которую может добав- Alert Rules – правила, реагируюпроизводителю. лять администратор. щие на определенные Alerts. Из прочих полезных функций Performance Rules – правила, реИ также есть состояние Resolved агирующие на определенные по(решено). При этом рекомендую не ста- Microsoft Operation Manager упомяну роговые значения производительвить сообщениям состояние Resolved, наличие в консоли оператора раздела ности различных компонентов сисне выяснив полностью причину возник- Events, содержащего сведения о событемы. новения проблемы. В противном слу- тиях, но, в отличие от Alerts, здесь фикчае вы можете просто забыть о её на- сируются все события, которые полуДля лучшего понимания я создам личии, а ведь при следующем прояв- чает МОМ. Эти события уже не требуют лении этой проблемы последствия мо- реакции от оператора и носят инфор- по одному правилу каждого вида. гут быть более значительны. Вот прос- мативный характер, но при этом на ос- Для Event Rules поставим задачу сотой пример, на рис. 4 приведено со- новании сообщений раздела Events со- здать правило, по которому оператор должен получать Alert при каждой необщение, в котором говорится о том, здаются уведомления Alerts. удачной попытке FTP-соединения. Alert что DHCP-сервер по какой-то причиRules – будем следить за сообщениями не не выдает адреса. Можно предпо- Жизнь по правилам ложить, что область DHCP не активи- Еще одно полезное свойство МОМ – недоступности сервиса, в случае их порована, в связи с чем он не может вы- это возможность создания собствен- явления запускать сценарий, который давать IP-адреса. Теперь обратите ных правил (Rule). На их основании будет осуществлять перезапуск сервивнимание на поля «Time of First Event» можно создавать уведомление (Alert), сов. Для Performance Rules необходии «Time of Last Event». Эти поля со- которое будет отправляться в случае мо следить за тем, чтобы нагрузка на держат сведения о первом и послед- возникновения сообщений, интересу- процессор любого из серверов не пренем сообщениях и о данной пробле- ющих администратора. Для того чтобы вышала 80%, в противном случае такме. Согласитесь, так намного удобнее, создать правило, необходимо снача- же запускать сценарий. Итак, для создания первого прачем самому искать сведения об ошиб- ла создать группу Rule Group. Для этоке в журнале событий Event Log. Зная, го требуется в разделе «Management вила заходим в «Event Rules», далее когда проблема впервые появилась, Packs» выбрать «Rule Group» и далее «Action → Create Event Rule». Выбиранамного проще ее решать. В моем слу- в меню «Action» выбрать «New Rule ем в появившемся меню «Alert on or
№10, октябрь 2006
15
администрирование И наконец, для создания треть- вящены множество курсов во многих Respond to Event». Выбор обусловлен тем, что необходимо создать правило, его правила, которое должно сле- учебных центрах, также большое кореагирующее на появление опреде- дить за нагрузкой на процессор, нуж- личество информации можно найти на ленного события. В следующем окне но проделать аналогичные действия, сайте Microsoft. В этой статье я лишь повыбираем опцию «IIS Application Log – Create Performance Rule. Затем ука- пытался описать основные возможносFTP», тип событий – «failure audit» (ин- зывается, каким образом произво- ти продукта и рассмотреть на примерах тересуют только неудачные попытки дится сбор сведений по производи- варианты его использования. Но в засоединения). Следующий этап – рас- тельности, в данном случае выбира- ключение – несколько слов относительписание (лучше всего постоянный мо- ете «Sample Performance», в следую- но особенностей использования МОМ. ниторинг), затем выбираем Computer щем окне нужно выбрать «Performance Отмечу, что хотя МОМ и позволяет ави Domain (области действия). Потом Measure – Processor Time…» данный томатизировать выполнение опредеResponse, здесь можно задать дейс- счетчик сообщает об использовании ленных задач, но он требует постоянтвие, которое необходимо совершить ресурсов процессора, далее в разде- ной работы со стороны системных адв случае выполнения заданных кри- ле Response выбираете готовый сце- министраторов. Нужно составить спитериев, например запуск какого-ли- нарий Microsoft Windows Base OS CPU сок тех ресурсов, которые необходимо бо сценария. На этом пункте останов- Overload Script. По умолчанию в кри- отслеживать с помощью МОМ. Далее, люсь особо. Так как само по себе по- териях указано значение 95%, но так в соответствии с этим списком необлучение уведомлений о попытках не- как предполагалось использовать зна- ходимо создать правила. Однако этосанкционированного доступа не слиш- чение 80%, то соответственно его не- го мало. Надо также регулярно следить за теми уведомлениями, которые сообком информативно (их может быть де- обходимо заменить. В результате теперь можно полу- щает система, и реагировать на них. сятки за день), то имеет смысл использовать сценарий, либо специально на- чать уведомления, а также реагиро- Если вы один раз, установив агентов строенное приложение, которое будет вать на сообщения о различных ви- и пакеты управления и настроив нужадекватно реагировать на подобные дах событий, которые интересуют ад- ные правила, затем забыли про серпопытки. Например, в случае пяти не- министратора. вер МОМ, то польза от применения буудачных попыток подключения по FTP, дет невелика. Продукт применяется для IP-адреса, с которого осуществля- Резервное копирование для так называемой проактивной зались попытки, на час будет заблокиро- Такая мощная система, как МОМ, нуж- щиты от сбоев, то есть он предупрежван доступ по порту 21. Вопросы прак- дается в регулярном резервном копи- дает администратора о возможности тической реализации данного меха- ровании. Приведу те компоненты, ко- возникновения проблемы еще до того, низма уже обсуждались в предыду- торые необходимо копировать. Пре- как она проявилась (например, законщих моих статьях [3]. И, наконец, собс- жде всего это база SQL, в которой хра- чилось место на диске или IP-адреса твенно Alert, который будет создавать- нятся все настройки МОМ. Если вы ис- в DHCP-пуле). Учитывая это, необхося. Здесь необходимо указать степень пользуете только Microsoft Operations димо ежедневно проверять уведомлекритичности создаваемого уведомле- Manager, то вам достаточно регуляр- ния системы. В продолжение темы, в следующей ния, затем состояние, в котором Alert но делать резервную копию базы появляется, а также описание и источ- Оnepoint, однако если вы также ис- статье, посвященной МОМ, вы проник проблемы (рекомендую исполь- пользуете отчеты (Reporting), то тог- чтете о процессе создания собствензовать значения по умолчанию). В ре- да необходимо делать и копию баз ных пакетов управления Management зультате выполненных действий после SystemCenterReporting и ReportServer. Pack, которые позволяют существенно каждой неудачной попытки установле- Выполнять это копирование можно увеличить функциональность данного ния FTP-соединения будет появляться штатными средствами Microsoft SQL продукта, а также эффективно реагисоответствующий Alert MOM, а также, Server. Также нужно обязательно иметь ровать на различные инциденты. при соответствующей настройке, будут в наличии все Management Packs. Для Кстати, сейчас доступна для скавыполняться действия по предотвра- этого воспользуйтесь экспортом паке- чивания бета-версия MOM 2007, кощению несанкционированного досту- тов из MOM, аналогично уже описанно- торую можно бесплатно получить по па к FTP-ресурсу. му выше импорту. Для восстановления адресу [2]. Для создания Alert Rule необходи- данных необходимо сначала восстаномо зайти в соответствующий раздел, вить базы данных, а затем импортиро- 1. http://www.microsoft.com/downloads/ выбрать «Create Alert Rule», в появив- вать Management Pack в МОМ. Также не Browse.aspx?displaylang=en&productID= шемся окне выбираете «Alert Criteria – забывайте следить за выходом новых 9 C D 2C70 F- F1D E- 4 C 4 D - 8 EC B of severity → Service Unavaliable», далее версий Management Pack [1, 2]. 1432951CE0C6 – раздел, посвящен«Define Response – Launch a script», выный пакетам обновления Management бираем из списка или указываем но- В завершение Packs. вый, в данном случае указываем свой Система Microsoft Operations Manager 2. http://www.microsoft.com/mom – странисценарий, который будет перезапус- содержит в себе множество функций ца посвященная МОМ. кать нужные сервисы, место запуска – и средств администрирования, расска- 3. Бирюков А. Пишем систему динамичесAgent Computer, далее остается только зать о которых в одной статье невозкой защиты ресурсов сети./Системный дать правилу имя. можно. Обучению этому продукту посадминистратор, №6, 2006 г. – С. 56-60.
16
bugtraq Множественные уязвимости в Mozilla Firefox
Переполнение динамической памяти при обработке LHA-архивов в Dr.Web
Программа: Mozilla Firefox до версии 1.5.0.7. Опасность: Критическая. Описание: 1. Переполнение буфера в обработке JavaScript регулярных выражений позволяет злоумышленнику выполнить произвольный код на целевой системе. 2. Механизм автообновления использует SSL для безопасного общения. Если пользователь подтвердит непроверяемый самоподписанный сертификат при посещении сайта, атакующий может перенаправить проверку обновления к злонамеренному веб-сайту и выполнить нападение «человек посередине». 3. Некоторые зависимые от времени ошибки в процессе отображения текста могут эксплуатироваться для повреждения памяти и выполнения произвольного кода. 4. Уязвимость обнаружена в проверке некоторых подписей в Network Security Services (NSS)-библиотеке. 5. Уязвимость в междоменном взаимодействии позволяет внедрить произвольный HTML и код сценария в фрейм другого веб-сайта, используя вызов [window].frames[index]. document.open(). 6. Ошибка обнаружена при открытии заблокированных всплывающих окон. В результате можно выполнить произвольный HTML и код сценария в браузере текущего пользователя в контексте произвольного веб-сайта. 7. Несколько нераскрываемых ошибок памяти позволяют выполнить произвольный код на целевой системе. URL производителя: http://www.mozilla.com/firefox. Решение: Обновите до версии 1.5.0.7.
Программа: Dr.Web 4.33, возможно, более ранние версии. Опасность: Критическая. Описание: Уязвимость существует из-за ошибки при обработке LHA-архивов, содержащих длинные имена директорий в расширенном заголовке директории. Удаленный пользователь может вызвать переполнение динамической памяти и выполнить произвольный код на целевой системе. Рабочий эксплоит написан для Dr.Web Scanner for Linux v4.33 (4.33.0.09211). URL производителя: http://www.drweb.com. Решение: Установите исправление от производителя путем обновления антивирусных баз.
Множественные уязвимости в Zend Platform
Программа: Microsoft Internet Explorer 6.x. Опасность: Высокая. Описание: Уязвимость существует из-за недостаточной проверки входных данных в ActiveX-компоненте daxctle.ocx. Удаленный пользователь может с помощью дескриптора DirectAnimation.PathControl вызвать переполнение динамической памяти и аварийно завершить работу браузера или выполнить произвольный код на целевой системе. URL производителя: http://www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует.
Программа: Zend Platform 2.2.1, возможно, более ранние версии. Опасность: Высокая. Описание: 1. Уязвимость существует из-за ошибки проверки границ данных в ZendSession Manager Daemon при обработке сессий. Удаленный пользователь может аварийно завершить работу приложения, отправив слишком длинный или нулевой длины идентификатор сессии. 2. Уязвимость существует из-за ошибки проверки границ данных в модуле mod_cluster при обработке сессий. Удаленный пользователь может аварийно завершить работу приложения, отправив слишком длинный или нулевой длины идентификатор сессии. Удачная эксплуатация уязвимости позволит злоумышленнику выполнить произвольный код на целевой системе. 3. Уязвимость существует в ZendSession Manager при обработке сессионных файлов. Злоумышленник может создать и просмотреть произвольные файлы сессий на целевой системе с привилегиями приложения. URL производителя: http://www.zend.com/products/ zend_platform. Решение: Установите последнюю версию (2.2.1a) с сайта производителя.
№10, октябрь 2006
Загрузка произвольных файлов в TikiWiki Программа: TikiWiki 1.9.4, возможно, более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за недостаточной проверки загруженных файлов в сценарии jhot.php. Удаленный пользователь может загрузить злонамеренный PHP-сценарий в каталог img/wiki и выполнить его на системе с привилегиями веб-сервера. URL производителя: http://www.tikiwiki.org. Решение: В настоящее время способов устранения уязвимости не существует.
Переполнение динамической памяти в Microsoft Internet Explorer
Выполнение произвольного кода в Ipswitch IMail Server Программа: Ipswitch Collaboration Suite 2006, IMail Secure Server 2006, IMail Server 2006. Опасность: Высокая. Описание: Уязвимость существует из-за неизвестной ошибки в SMTP-демоне. Удаленный пользователь может выполнить произвольный код на целевой системе. URL производителя: http://www.ipswitch.com. Решение: Установите исправленную версию с сайта производителя.
Составил Александр Антипов
17
администрирование
Экономьте время на администрировании Active Directory
Сергей Яремчук Служба каталогов Active Directory – мощный и один из наиболее важных компонентов распределенной компьютерной системы, который дает гибкость в распределении ресурсов. Но в то же время стандартные инструменты, входящие в состав ОС Windows не во всех случаях обеспечивают должный уровень управления AD.
18
администрирование
П
каемых продуктов является Active Administrator, простой в использовании инструмент, позволяющий эффективно управлять групповыми политиками и Active Directory, информировать обо всех значительных изменениях, проводить всесторонний аудит, значительно экономя время на администрирование. Программа, к сожалению, Рисунок 2. Настройка сервиса Active Template не бесплатна, стоимость лиAuto-Repair цензии зависит от количества объектов в Active Directory. Сама ли- шаблоны, как с нуля, так и на основе цензия привязана к Organizational Unit, уже имеющихся. Интерфейс позволяпоэтому применение ее с иным OU не- ет легко найти необходимый объект, при этом в другом окне будут отобравозможно. Для определенных администра- жены все разрешения. Для удобства тивных целей используются шаблоны их отбора можно использовать систеActive Templates. Каждый шаблон оп- му фильтров. Консоль управления предоставляределяет разрешения, которые требуются для определенных задач. С по- ет единый интерфейс для управления, мощью таких шаблонов можно лег- планирования, редактирования, реко делегировать некоторые функции зервирования и восстановления группользователям и гарантируют после- повых политик. Поддерживается фундовательное назначение разрешений кциональность инструмента, известв пределах Active Directory. Програм- ного как результирующий набор пома контролирует состояние установ- литик (Resultant Set of Policies – RSoP), ленных с помощью Active Templates появившаяся в Windows 2003 Server, Утилита Active разрешений, права, не соответству- задача которого – упростить измереAdministrator Корпорация ScriptLogic специализи- ющие действующей модели безопас- ние накопительных настроек группоруется на разработке решений, пред- ности, автоматически восстанавли- вой политики, применяемых к пользоназначенных для администрирова- ваются. Администратор может само- вателю или компьютеру. Это позволяния сетей Windows. Одним из выпус- стоятельно создавать необходимые ет администраторам планировать сценарии перемещения объекта. Active Administrator автоматически сохраняет всю историю изменений групповых политик, давая тем самым возможность при необходимости сравнить новые настройки, быстро осуществить возврат к старым настройкам. Изменения политик производятся не напрямую в рабочую среду, а в Offline Repository. Для оценки эффекта созданные таким образом политики сравниваются с действующими, в том числе и с использованием RSoP. Удобно, что редактирование Offline Repository может быть осуществлено администраторами, имеющими доступ к политикам в режиме только для чтения. Но применяют их только те, кто имеет соответствующие права. Средствами программы возможны копирование и репликация групповых политик между доменами. Для контроля изменений Рисунок 1. Настройка сервиса Event Configuration Utility в Active Directory и групповых поли-
о мере роста количества пользователей и ресурсов, к которым должен быть предоставлен доступ, управление Active Directory даже внутри отдельного домена заметно усложняется. А учитывая, что администрированием может заниматься несколько человек, через некоторое время ситуация может стать неуправляемой, а сама система потребует серьезного аудита. Для администрирования Active Directory используются несколько инструментов, встроенных в Windows 2000/2003 Server, что не всегда удобно и требует некоторого времени на их полноценное освоение. Консоль управления групповыми политиками (Group Policy Management Console – GPMC), которая появилась в 2003 году, обеспечивает пользователю более удобный интерфейс управления политиками Windows на базе MMC (Microsoft Management Console). В его состав входит набор сценариев, предназначенных для автоматизации типовых задач управления объектами групповой политики. Но в то же время и его возможностей часто бывает недостаточно.
№10, октябрь 2006
19
администрирование тик Active Administrator анализирует для компьютера, на который устанав- го – создать базу данных и помочь журнал. Воспользовавшись системой ливается Active Administrator, невелики. в настройке сервисов истории групфильтров, администратор всегда уз- Требуется процессор класса Pentium повых политик (Group Policy History), нает, кто и когда внес эти изменения. 600 Мгц с 256 Мб оперативной памя- восстановления Active Template (Active Кроме того, при возникновении неко- ти с Windows 2000 и выше. Кроме это- Template Auto-Repair service) и серторых событий администратор опове- го, для хранения информации может виса восстановления информации. щается посредством электронной поч- использоваться Microsoft SQL Server Для каждого необходимо указать доты. И наконец, программа предостав- Desktop Engine, который устанавли- мен и пользователя для регистрации ляет полноценные отчеты по установ- вается по умолчанию, либо имею- (рис. 2). кам Active Directory и групповых поли- щийся SQL Server. В последнем слуПри настройке параметров Autoтик, по безопасности, классам объек- чае при установке следует выбрать Repair-сервиса возможна настройка тов и прочее. Отчеты экспортируются режим Custom и отключить инсталля- оповещения по электронной почте, выв файлы форматов RTF, PDF, HTML, цию MSDE. Программа установки пот- брав Configure e-mail Setting, указываXLS, TIF, RDF, TXT. ребует, чтобы вы указали каталог, ко- ем почтового сервера и адрес, на который будет использован для хране- торый они будут отсылаться. Если исния информации. На этом этапе со- пользуется Windows 2003 с SP1, Active Установка Active Administrator здаем локальную базу событий безо- Administrator может восстанавливать Для того чтобы скачать файл, необ- пасности, в которую будет заносить- пароли к удаленным счетам. Желаходимо зарегистрироваться на сайте, ся информация о событиях безопас- тельно сразу же после настройки серуказав персональные данные и пароль, ности. Заполняем поля и выбираем виса восстановления нажать Backup которым будете пользоваться. После метод аутентификации для доступа Now для создания резервной копии. чего на указанный почтовый адрес при- к базе: Windows или SQL Server. В ре- На этом установка сервера Active дет ссылка для закачки. В архиве «ве- зультате будет созданный разделяе- Administrator заканчивается. Консоль можно установить как сом» 45 Мб два файла: AAServerSetup мый ресурс ActiveAdministrator, имеюпредназначен для установки на сервер, щий по умолчанию права Full Control на любой компьютер в сети, так и на тот, на котором стоит сервер Active а с помощью AAConsoleSetup необхо- для Everyone. Д а л е е з а п ус к ае тс я D at abase Administrator. Каких-либо особенностей дима для установки удаленной консоли управления. Системные требования Maintenance Wizard, задача которо- при установке консоли нет.
20
администрирование Настройка базы аудита событий Программа установки позволяет создать базу событий безопасности для локальной системы MSDE 2000. Вероятно, может понадобиться перенести ее на SQL Server. Для создания такой базы выбираем «Creating Auditing Database» в меню «Пуск». После этого появится знакомый мастер. На первом шаге которого в выпадающем списке выбираем new database и далее действуем как во время установки, заполняя нужные поля. После установки базы данных необходимо с помощью Active Administrator, либо Active Directory Users с MMC и разрешить аудит в Default Domain Controllers Policy. После чего выполнить gpupdate. Следующий шаг, настройка утилиты оповещения Event Configuration Utility. В появившемся окне (рис. 1) во вкладке «Event Definitions» выбираем события, при появлении которых мы хотим получать оповещение. Список адресов, которым будет отсылаться уведомление, вводится во вкладке «Defailt Email Adresses». Но можно для отдельного события указать специфический электронный адрес, для этого нужно вызвать контекстное меню, щелкнув по нему правой кнопкой мышки. Если еще имеются сервисы с включенным мониторингом событий, добавить их контроль можно во вкладке «Install DC Agents». На этой же странице отображается статус агентов и загружаются новые файлы, содержащие события. Все зарегистрированные события сохраняются затем в файле с расширением edf.
Работа с Active Administrator Console При первом запуске консоли управления вам предстоит ввести лицензионный ключ, если у вас его нет, но выбираем «Begin Evaluation» и пользуемся программой в течении 30 дней, без всяких ограничений функциональности. Консоль состоит из 10 вкладок: Group Policy History – здесь можно отследить историю изменений групповых политик и при необходимости произвести откат к предыдущему состоянию. Group Policy Offline Repository – здесь создаются и редактируются
№10, октябрь 2006
Рисунок 3. Вид Active Administrator Console
GPO без их применения в реальной ются различные отчеты. В качестве фильтров можно использовать сети. такие параметры, как дата, время, Resultant Set of Policies (RSoP) – пользователь, событие и прочие. в этой вкладке производится анализ созданных в offline repository по- Group Policy Objects – используя литик. эту вкладку, можно просматривать, создавать, редактировать, восGroup Policy Objects by Container – здесь можно просмотреть группостанавливать, добавлять к Offline Repository групповые политики. вые политики и проследить связи, отбирая информацию по OU или сайтам. Вывод AD Object Restore – в этой вклад- Несмотря на то, что начальная наке можно восстановить объекты стройка несколько непривычна, в том Active Directory, без перехода в ре- числе и из-за несколько неинтуитивжим восстановления AD. При этом ного интерфейса, в дальнейшем Active объектам можно восстановить ста- Administrator оправдает свое примерые пароли либо задать новые. нение, а удобство работы окупит заClient Side Troubleshooting – весь- траченное на настройку время. Нама удобная функция, позволяющая личие таких возможностей, как Active соединиться с клиентским компью- Templates, Offline Repository, аудит тером, позволяя, например, убе- и оповещение о событиях по e-mail, диться в том, что новые политики восстановление и прочее, делают его удобным инструментом при админисприменены правильно. Active Directory Security – здесь трировании Active Directory. Также хопоказан список ваших серверов чется отметить наличие довольно поди контейнеров, а также выводят- робной, в том числе и пошаговой докуся пользователи или группы, име- ментации на английском языке. ющие доступ к выбранным объектам. 1. С а й т S c r i p t L o g i c , р а з р а б о т ч и Active Templates – здесь создаютка Active Administrator – ht tp:// ся, редактируются и применяются www.scriptlogic.com. Active Templates. 2. Та б л и ц а с р а в н е н и я в о з м о ж н о с Active Directory Auditing – в этой тей Active Administrator 4.0 и GPMC – вкладке просматриваются сообhttp://www.scriptlogic.com/products/ щения системы аудита, генерируactiveadmin/comparisonmatrix.asp.
21
администрирование
Как собирать сетевую статистику
Андрей Бирюков Наличие сведений о сетевой статистике может оказаться весьма полезным, так как позволяет оценить состояние сети и запланировать ее модификацию, а также вовремя заметить возникновение проблем. Предлагаем вам несколько способов сбора сетевой статистики и применения полученных данных на практике.
Суть проблем Современные локальные сети имеют, как правило, довольно сложную структуру и часто являются гетерогенными, то есть состоят из сетевого оборудования различных производителей и разнообразных устройств, выполняющих специальные функции. В связи с этим в сети присутствует разнородный трафик, который необходимо правильно классифицировать, в противном случае существует риск того, что можно пропустить критическое изменение в сетевом трафике определенного вида, что в свою очередь влечет потерю или задержку критически важных для бизнеса данных. После проведения классификации необходимо собрать статистику для каждого класса,
22
для того чтобы иметь представление о том, какие пакеты проходят через сеть, на какие периоды времени приходятся пиковые нагрузки, сколько пакетов теряется или приходит с ошибками и так далее. Для того чтобы предложить принцип классификации, рассмотрим основы сетевых технологий, в частности, иерархическую модель ISO OSI. Как известно, она делит сетевое взаимодействие на семь уровней: Физический Канальный Сетевой Транспортный Сеансовый Уровень представлений Уровень приложений
Рассмотрим все эти уровни по порядку. Работа на физическом уровне нас мало интересует, так как определить, насколько хорошо работает канал, можно лишь с помощью специального оборудования, например тестера. Исключением может являться DSL-оборудование (модемы, DSLAM и т. д.), с помощью встроенных в него функций можно получать информацию о состоянии интерфейса, статистику по коллизиям и другую информацию. Как получить эту информацию по тому или иному конкретному оборудованию, вы можете узнать в документации к соответствующей модели. В отличие от физического уровня канальный (в англоязычной литературе именующийся Data Link) гораздо
администрирование более информативен. Его рассмотрим подробнее чуть позже. Сбор статистики по сетевому и транспортному уровням – основная тема этой сегодня, и большинство примеров будет связано именно с этими уровнями. Оставшиеся три уровня рассматриваться не будут. Причин этому несколько, во-первых, многообразие различных протоколов, работающих на верхнем уровне модели OSI, во-вторых, связанная с этим многообразием сложность в сборе соответствующей статистики, в частности, отсутствие средств для учета пакетов, отправленных определенным протоколом высокого уровня. Вообще для сбора статистики для определенных протоколов высокого уровня существуют специальные утилиты, созданные самими разработчиками данного приложения. Определившись с тем, какие статистические данные и для каких протоколов требуется собрать, теперь определимся с тем, для каких устройств что нужно собирать. Как уже упоминалось выше, локальная сеть содержит в себе целый ряд различного оборудования, например сервера, маршрутизаторы, коммутаторы, межсетевые экраны и т. д. Но при этом каждая группа устройств функционирует на определенном уровне модели, маршрутизаторы на сетевом, коммутаторы на канальном, сервера на уровне приложений. Я буду рассматривать сбор статистики на определенных устройствах, для конкретных протоколов.
Статистика на сетевом оборудовании Сейчас на рынке можно встретить сетевое оборудование от различных производителей, обладающих аналогичным функционалом для своего класса устройств. В связи с этим при рассмотрении примеров я не буду привязываться только к одному производителю, а буду использовать общие для всех производителей стандарты и технологии. Поэтому прежде чем приступить к описанию конкретных примеров, рассмотрим средства сбора статистики.
Syslog Сообщения Syslog являются средством, с помощью которого устройс-
№10, октябрь 2006
Рисунок 1. Статистика, построенная с помощью MRTG
тво сообщает о состоянии запущен- дения о попытках несанкционированных процессов, служб и интерфейсов. ного проникновения в сеть. Во втором Фактически те системные сообщения, случае большое количество пакетов, создаваемые устройством (также име- исходящих из внутренней сети на зануемые логами, журналами событий), крытые порты, может свидетельствоотправляемые на хост, на котором за- вать о том, что на некоторых машинах пущена служба Syslog, (в общем слу- пользователей установлено програмчае это может быть машина, работа- мное обеспечение, несоответствуюющая под управлением Linux), c кото- щее корпоративной политике безопасрого уже можно собирать статистику ности, и, возможно, есть смысл побеза определенный период. Эти сооб- седовать с некоторыми пользователящения могут быть как информацион- ми или администраторами. Однако кроме сбора статистиные, так и сообщения об ошибках, все зависит от настройки протоколиро- ки по запрещенным пакетам иногда вания на конкретном устройстве. Ка- имеет смысл собирать информацию кую статистику можно собрать с по- и по разрешенным. Приведу пример. Предположим, при попытке отправить мощью Syslog? Например, в случае если какой-ли- письмо из своей сети, внешнему польбо порт отключился и устройство по- зователю, ваш почтовый сервер полутеряло соединение с определенной се- чил сообщение об ошибке 550 (сертью. Еще одним примером использова- вис недоступен) или 450 (сервис врения Syslog является журналирование менно недоступен), но при этом серсписков доступа Access Lists. Спис- вер получателя нормально пингуетки доступа определяют, каким хостам ся. Это может означать, что ваш внеи подсетям разрешен доступ к опре- шний IP-адрес попал в черные списки деленным ресурсам посредством за- сетей, из которых идет рассылка неданных протоколов через соответству- желательной почты (спама). Сейчас ющие порты. Хорошим тоном при пос- нередко спам рассылается без ведотроении ACL является правило «все, ма владельца компьютера с помощью что не разрешено, то запрещено». Ру- троянских программ, которые, зараководствуясь этим, ваш список досту- зив машину, превращают ее небольпа должен содержать правило, кото- шой SMTP-сервер, c которого начинарое запрещает весь трафик, который ют автоматически рассылать спам во не был разрешен (на некотором обору- внешнюю сеть. Для того чтобы опредовании, приоритет правил определя- делить зараженную рабочую станцию, ется их очередностью в списке, на дру- достаточно просто посмотреть в файгом – присвоенным значением приоре- ле журнала Syslog, с какого узла бытизации). Возвращаясь к задаче сбо- ли отправлены SMTP-сообщения на зара статистики, отправляем информа- блокировавший сервер. Вообще лучше цию обо всех запрещенных пакетах, всего запретить соединения по 25 порна службу syslog на специально выде- ту всем узлам, кроме корпоративного ленном для этого хосте. Причем мож- почтового сервера, но, к сожалению, но протоколировать как сведения о па- это, как правило, не делается, хотя кетах, шедших из Интернета во внут- следовало бы. Данная служба использует протореннюю сеть, так и наоборот. В первом случае мы поможет соберем све- кол UDP, также она реализована прак-
23
администрирование
Рисунок 2. Результат работы счетчика производительности
тически на всех моделях современно- чать поиск источника трафика до того сетевого оборудования. го, как сеть окажется полностью неработоспособной.
Служба SNMP
Другое средство – это служба SNMP, которая позволяет не только получать информацию об устройстве, но и управлять им. С его помощью можно получать сведения о количестве полученных и потерянных пакетов на интерфейсе, состоянии различных протоколов динамической маршрутизации. Но для более удобного визуального представления можно воспользоваться специальными приложениями для сбора статистики с помощью SNMP. В качестве средства визуализации статистики лучше всего использовать программы MRTG [1] для Linux/FreeBSD (см. рис. 1), а в случае Windows PRTG [2]. Данные программы просты в использовании, для их работы достаточно указать лишь IP-адрес устройства и community. Итак, начнем с коммутаторов. Какую статистическую информацию можно получить с этих устройств? Прежде всего с помощью SNMP и MRTG можно собирать и визуализировать данные о состоянии интерфейсов. На основании этих сведений можно делать выводы о степени загруженности каналов, разнице между объемом отправленных и полученных пакетов. Предвижу вопрос читателей о том, как эта информация может пригодиться? К примеру, вы можете составить представление о штатной нагрузке на сеть, в случае ее непредвиденного роста, на-
24
MRTG Следующей группой устройств, о которой хотелось бы рассказать, являются маршрутизаторы. По аналогии с коммутаторами, с маршрутизаторов можно собирать статистику с помощью MRTG. Однако эти устройства выполняют также целый ряд функций сетевого уровня, которые могут представлять интерес для сбора статистики. Например, уже упоминавшиеся протоколы динамической маршрутизации: RIP, OSPF, BGP. Все эти протоколы работают на сетевом (L3) уровне и обрабатываются маршрутизаторами. Получить статистическую информацию по состоянию пакетов для определенного протокола маршрутизации можно с помощью средств SNMP, обратившись к соответствующей ветке и применив базу MIB данного производителя оборудования. Итак, с помощью приведенных выше средств, можно осуществить сбор статистики на сетевом оборудовании, которая затем может оказаться полезной при обнаружении различных проблем, возникающих в локальной сети.
Мониторинг серверов Выше рассматривались примеры сбора статистики на маршрутизаторах и коммутаторах, устройствах, функционирующих на нижних уровнях эталонной модели OSI. Сервера и рабочие станции ориентированы на верхние уровни, пре-
жде всего на уровень приложений, который в этой статье не рассматривается. Однако возможны ситуации, в которых требуется сетевая статистика по протоколам нижнего уровня. Например, в случае, если сервер выполняет роль маршрутизатора, связывая несколько сетей, подключенных к различным интерфейсам. Собирать статистику можно также несколькими способами. Во-первых, для того чтобы осуществлять сбор статистики на сетевом интерфейсе сервера, можно воспользоваться штатным средством Windows – счетчиками производительности (см. рис. 2). Запустить эти счетчики можно из консоли «Панель управления», далее «Администрирование» и «Производительность». В этой консоли имеется несколько средств для наблюдения за состоянием системы: «Системный монитор», «Журналы счетчиков», «Журналы трассировки» и «Оповещения». «Системный монитор» представляет данные о состоянии различных устройств и приложений в виде графика, строящегося в режиме реального времени. «Журналы счетчиков» – это средство, аналогичное «Системному монитору» с той лишь разницей, что здесь результаты мониторинга не выводятся на экран в виде графика, а сохраняются в файле. «Оповещения» – это средство, позволяющее системе реагировать на определенные события. Например, в случае если количество пакетов, поступивших на сетевой интерфейс в течение текущего сеанса работы, превосходит определенное пороговое значение, то можно сделать запись в журнале событий (Event Log), отправить сообщение по сети, запустить журнал производительности или приложение. Это средство может быть полезно в случае, если на интерфейс поступает большое количество пакетов с ошибками или неопознанных пакетов, в случае превышении порогового значения, например 10000, можно отправлять сообщение на экран с указанием времени и даты, а также делать запись в журнал событий. С помощью этих оповещений можно поставить в известность системного администратора, который сможет предотвратить возникновение проблем еще до их появления.
администрирование Другим средством, с помощью которого можно соби- Fragments Reassembly Per Second – фрагментов перерать сетевую статистику, является сценарий Windows Script собрано за секунду; Host, который будет собирать информацию о количестве Fragments received Per Second – получено фрагментов полученных и переданных пакетов, а также о пакетах, соза секунду. держащих ошибки. Эта статистика нуждается в некотором пояснении. Механизм действия такого сценария довольно прост, оригинальную версию можно найти в источнике [5]. Но я Для протокола TCP единицей измерения являются сегпредлагаю его немного модифицировать, для того что- менты, также здесь фигурируют соединения (Connections), бы сделать пригодным для практического использова- так как данный протокол использует при работе установку ния. Для того чтобы автоматизировать процесс сбора све- соединения. Для UDP в контексте данного сценария едидений, я буду собирать данные в документ формата Excel, ницей измерения является датаграмма. А для протокола IP в котором первая страница посвящена статистике по TCP, кроме датаграмм также учитываются и их фрагменты, что вторая – по UDP и третья – по IP. При этом получать будем позволяет учитывать также статистику по обработке часследующие данные. тей данных, передаваемых этим протоколом. Для TCP: Следует отметить, что в источнике [5] также имеются примеры сценариев для сбора статистики по IPSec и по про Connection Failures – счетчик неудачных соединений; Connection Active Connection Established – количество токолам IP телефонии. Так что при необходимости их тоже можно включить в приведенный далее сценарий. активных соединений; Далее приведу пример сценария, выполняющего все Connection Passive – количество пассивных соединеэти действия с необходимыми комментариями. ний; Connection Reset Segments Per Second – отброшено сегЛистинг 1. Сценарий, собирающий статистику по протоколам ментов за секунду; Segments Received Per Second – получено сегментов strComputer = "." // используется локальная машина Set objWMIService = GetObject("winmgmts:" ↵ за секунду; & "{impersonationLevel=impersonate}!\\" ↵ Segments Retransmited Per Second – транслировано сег& strComputer & "\root\cimv2") set objRefresher = ↵ ментов за секунду; CreateObject("WbemScripting.SWbemRefresher") Segments Sent Per Second – отправлено сегментов за се// объекты, необходимые для запуска сценария Set colItems = objRefresher.AddEnum _ кунду. Для UDP:
Datagrams No Port Per Second – получено датаграмм на неверный порт в секунду;
Datagrams Per Second – отправлено датаграмм в секунду;
Datagrams Received Errors – получено с ошибками; Datagrams Received Per Second – датаграмм получено в секунду. Для IP:
Datagrams Forwarded Per Second – датаграмм передано за секунду;
Datagrams Discarded – отклонено; Datagrams Received Header Errors – получено с ошибками в заголовке;
Datagrams Received Per Second – датаграмм получено за секунду;
Datagrams Received Unknown port – получено на неизвестный порт;
Datagrams Sent Per Second – датаграмм отправлено
за секунду; Fragments Per Second – всего фрагментов (частей датаграмм) за секунду; Fragments Failures – фрагменты с ошибками; Fragments Datagrams Per Second – фрагменты датаграмм за секунду; Fragments Reassembly Failures – неудачные попытки пересборки фрагментов; Fragments Created Per Second – создано фрагментов за секунду;
№10, октябрь 2006
(objWMIService, ↵ "Win32_PerfFormattedData_TCPIP_TCP").objectSet // объект, с помощью которого собираются данные по TCP Set colItems1 = objRefresher.AddEnum _ (objWMIService, ↵ "Win32_PerfFormattedData_TCPIP_UDP").objectSet // объект, с помощью которого собираются данные по UDP Set colItems2 = objRefresher.AddEnum _ (objWMIService, ↵ "Win32_PerfFormattedData_TCPIP_IP").objectSet // объект, с помощью которого собираются данные по IP objRefresher.Refresh // обновление счетчиков
Const xlDiagonalDown = 5 Const xlDiagonalUp = 6 Const xlNone = -4142 Const xlContinuous = 1 Const xlThin = 4 Const xlThick = 4 Const xlEdgeLeft = 7 Const xlEdgeTop = 8 Const xlEdgeBottom = 9 Const xlEdgeRight = 10 Const xlInsideVertical = 11 Const xlInsideHorizontal = 12 Const xlAutomatic = -4105 Const xlCenter = -4108 Const ForReading = 1 Const ForWriting = 5 // набор констант, необходимых для создания документа Excel Set oE = CreateObject("Excel.Application") oE.Visible = false oE.Workbooks.Add // создаем новый документ Excel oE.DisplayAlerts = False 'oE.Sheets(4).Delete oE.DisplayAlerts = True // определяем количество страниц Set s = oE.Sheets(1) s.Name = "Статистика по TCP" // название для первой страницы Set s1 = oE.Sheets(2) s1.Name = "Статистика по UDP" // название для второй страницы Set s2 = oE.Sheets(3)
25
администрирование s2.Name = "Статистика по IP" // название для третьей страницы // далее перечисляются названия столбцов s.Rows(1).RowHeight = 2 * s.StandardHeight s.Cells(1,1) = "Статистика по протоколу TCP" s.Cells(2,1) = "Время" s.Cells(2,2) = "Connection Failures" s.Cells(2,3) = "Connection Active" s.Cells(2,4) = "Connection Established" s.Cells(2,5) = "Connection Passive" s.Cells(2,6) = "Connection Reset" s.Cells(2,7) = "Segments Per Second" s.Cells(2,8) = "Segments Received Per Second" s.Cells(2,9) = "Segments Retransmited Per Second" s.Cells(2,10) = "Segments Sent Per Second" s.Columns("A:B").Columns.AutoFit With s.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With s1.Rows(1).RowHeight = 2 * s1.StandardHeight s1.Cells(1,1) = "Статистика по протоколу UDP" s1.Cells(2,1) = "Время" s1.Cells(2,2) = "Datagrams No Port Per Second" s1.Cells(2,3) = "Datagrams Per Second" s1.Cells(2,4) = "Datagrams Received Errors" s1.Cells(2,5) = "Datagrams Received Per Second" s1.Columns("A:B").Columns.AutoFit With s1.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With s2.Rows(1).RowHeight = 2 * s2.StandardHeight s2.Cells(1,1) = "Статистика по протоколу IP" s2.Cells(2,1) = "Время" s2.Cells(2,2) = "Datagrams Forwarded Per Second" s2.Cells(2,3) = "Datagrams Discarded" s2.Cells(2,4) = "Datagrams Received Header Errors" s2.Cells(2,5) = "Datagrams Received Per Second" s2.Cells(2,6) = "Datagrams Received Unknown port" s2.Cells(2,7) = "Datagrams Sent Per Second" s2.Cells(2,8) = "Fragments Per Second" s2.Cells(2,9) = "Fragments Failures" s2.Cells(2,10) = "Fragments Datagrams Per Second" s2.Cells(2,11) = "Fragments Reassembly Failures" s2.Cells(2,12) = "Fragments Created Per Second" s2.Cells(2,13) = "Fragments Reassembly Per Second" s2.Cells(2,14) = "Fragments received Per Second" s2.Columns("A:B").Columns.AutoFit With s2.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With // в данном цикле производится сбор статистических данных f=3 // начинается заполнение с третьей строки For i = 1 to 5 // в данном примере пять итераций, в реальном сценарии // необходимо намного больше // каждый элемент для статистики по TCP For Each objItem in colItems // дата и времы занесения записи s.Cells(f,1)=Now s.Cells(f,2)=objItem.ConnectionFailures s.Cells(f,3)=objItem.ConnectionsActive s.Cells(f,4)=objItem.ConnectionsEstablished s.Cells(f,5)=objItem.ConnectionsPassive s.Cells(f,6)=objItem.ConnectionsReset s.Cells(f,7)=objItem.SegmentsPersec s.Cells(f,8)=objItem.SegmentsReceivedPersec s.Cells(f,9)= ↵ objItem.SegmentsRetransmittedPersec s.Cells(f,10)=objItem.SegmentsSentPersec Next // каждый элемент для статистики по UDP For Each objItem in colItems1 s1.Cells(f,1)=Now s1.Cells(f,2)=objItem.DatagramsNoPortPersec s1.Cells(f,3)=objItem.DatagramsPersec s1.Cells(f,4)=objItem.DatagramsReceivedErrors s1.Cells(f,5)=objItem.DatagramsReceivedPersec s1.Cells(f,6)=objItem.DatagramsSentPersec
26
Next // каждый элемент для статистики по IP For Each objItem in colItems2 s2.Cells(f,1)=Now s2.Cells(f,2)=objItem.DatagramsForwardedPersec s2.Cells(f,3)= ↵ objItem.DatagramsOutboundDiscarded s2.Cells(f,4)=objItem.DatagramsOutboundNoRoute s2.Cells(f,5)=objItem.DatagramsPersec s2.Cells(f,6)= ↵ objItem.DatagramsReceivedAddressErrors s2.Cells(f,7)= ↵ objItem.DatagramsReceivedDeliveredPersec s2.Cells(f,8)= ↵ objItem.DatagramsReceivedDiscarded s2.Cells(f,9)= ↵ objItem.DatagramsReceivedHeaderErrors s2.Cells(f,10)= ↵ objItem.DatagramsReceivedPersec s2.Cells(f,11)= ↵ objItem.DatagramsReceivedUnknownProtocol s2.Cells(f,12)=objItem.DatagramsSentPersec s2.Cells(f,13)=objItem.FragmentationFailures s2.Cells(f,14)= ↵ objItem.FragmentedDatagramsPersec s2.Cells(f,15)= ↵ objItem.FragmentsReassembledPersec s2.Cells(f,16)= ↵ objItem.FragmentsReceivedPersec Next WScript.Sleep 60000 // пауза на 60 секунд f=f+1
objRefresher.Refresh
Next oE.DisplayAlerts = False // сохранение документа Excel oE.ActiveWorkbook.SaveAs "result" oE.DisplayAlerts = True oE.Quit ‘ закрытие Excel
Рекомендуемый способ развертывания данного сценария – это запуск на длительный период (порядка суток), за который собираются статистические сведения о протоколах на интерфейсе. Какие данные можно получить с его помощью? Например, количество IP-пакетов, пришедших на ошибочный порт, слишком большое соотношение с легитимными пакетами может говорить о том, что какое-то приложение отправляет свои пакеты не по адресу. То есть можно предположить, что какое-то приложение пытается выйти в Интернет, вопреки корпоративной политике безопасности. Возможно, это троян. Большое количество пакетов с ошибками свидетельствует о наличии источника помех в сети (например, мощный электроприбор рядом с сетевым кабелем). Большое количество пассивных TCP-соединений также не слишком хорошо сказывается на пропускной способности сети. Таким образом, приведенный WSH-сценарий может оказать помощь в поиске проблем на указанном хосте. 1. http://www.mrtg.org – описание и дистрибутив MRTG. 2. h t t p : / / w w w . s e c u r i t y l a b . r u / s o f t w a r e / d o w n l o a d / ?page=267148&el=2596383&file=http://download2.paessler.com/ download/prtg.zip – дистрибутив PRTG. 3. К. Пакет. Создание сетей удаленного доступа Cisco. Cisco Press. 4. D. Hucaby Building Cisco Multi Switching Networks. Cisco Press. 5. ht t p : / / w w w.mic rosof t .c om / te c hnet / sc riptc enter/ sc ripts / default.mspx?mfr=true – коллекция WSH-сценариев для мониторинга состояния сети.
bugtraq Несколько уязвимостей в Cisco IOS VLAN Trunking Protocol Программа: проверено на CISCO IOS 12.1(19). Опасность: Высокая. Описание: 1. Удаленный пользователь в локальном сегменте сети может послать специально сформированный VTP-пакет 1-й версии с установленным полем VTP-версии 2 к транк-порту, чтобы перезагрузить целевое устройство с ошибкой «Software Forced Crash Exception». 2. Удаленный пользователь может послать VTP-пакет с Type-Length-Value-содержащим специально сформированное имя VLAN, длиннее 100 символов, к транк-порту, чтобы перезагрузить устройство с ошибкой «Unassigned Exception». В результате можно выполнить произвольный код на целевом устройстве. 3. Атакующий может послать VTP updates (summary или sub) к CISCO IOS или CatOS устройству и выбрать VTP-редакцию 0x7FFFFFFF. Когда VLAN-конфигурация изменена оператором, IOS увеличивает редакцию, которая станет как 0x80000000 и запишется во внутреннюю переменную как целое со знаком. В результате редакция становится больше, чем самое большое отрицательное значение. После этого коммутатор не сможет сообщить измененную конфигурацию VLAN, так как произведенные обновления будут отвергнуты всеми другими коммутаторами. Уязвимы коммутаторы Cisco Catalyst, работающие на Cisco IOS с VTP Operating Mode, установленным как «server» или «client». Cisco Catalyst-коммутаторы, работающие на Cisco CatOS с VTP Operating Mode, установленные как «server» или «client», уязвимы к третьей уязвимости. Коммутаторы с VTP Operating Mode, установленные как «transparent», не уязвимы (это значение по умолчанию). URL производителя: http://www.cisco.com. Решение: Установите соответствующее обновление.
Обход ограничений безопасности в Cisco IOS
Несколько уязвимостей в Cisco IPS/IDS Программа: Cisco Guard Appliance (Software Version 3.X), Cisco Guard Blade (Software Version 4.X), Cisco Guard Appliance (Software Version 5.0(3)), Cisco Guard Appliance (Software Version 5.1(5)). Опасность: Средняя. Описание: 1. Уязвимость существует в административном веб-интерфейсе из-за ошибки при обработке SSLv2-пакетов. Удаленный пользователь может с помощью специально сформированного SSLv2 Client Hello-пакета аварийно завершить работу процесса mainApp, что не позволит более принимать запросы на управление приложением, но не повлияет на процесс проверки трафика. 2. Уязвимость существует из-за ошибки при обработке фрагментированных IP-пакетов. Удаленный пользователь может послать устройству специально сформированную последовательность фрагментированных IP-пакетов и вызвать отказ в обслуживании устройства, запущенного в режимах inline или promiscuous. URL производителя: http://www.cisco.com. Решение: Установите исправленные версии (4.1(5c), 5.0(6p2), 5.1(2)) с сайта производителя.
Переполнение буфера при обработке некоторых команд в WS_FTP Server Программа: WS_FTP Server 5.05, возможно, более ранние версии. Опасность: Средняя. Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке аргументов, передаваемых командам XCRC, XSHA1 и XMD5. Удаленный пользователь может с помощью слишком длинного аргумента команды вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: http://www.ipswitch.com/products/ ws_ftp-server. Решение: Установите исправление с сайта производителя.
Отказ в обслуживании в ISC BIND
Программа: Cisco IOS 12.2(15)MC2 с установленным обра- Программа: ISC BIND 9.2.x, 9.3.x. зом MWR1900-I-M, Cisco IAD2430 Integrated Access Device, Опасность: Средняя. Cisco IAD2431 Integrated Access Device, Cisco IAD2432 Описание: 1. Уязвимость существует при обработке SIGIntegrated Access Device, Cisco VG224 Analog Phone Gateway, запросов. Удаленный пользователь может аварийно заCisco MWR 1900 Mobile Wireless Edge Router, Cisco MWR 1941 вершить работу рекурсивного сервера, если возвращаетMobile Wireless Edge Router. ся более чем один SIG RRset, либо завершить работу доОпасность: Высокая. веренного сервера, обслуживающего RFC 2535 DNSSECОписание: Уязвимость существует из-за наличия неиз- зоны, если ответ содержит большое количество SIG RRsetменяемой community-строки cable-docsis на устройствах записей. 2. Уязвимость существует при обработке большого колис поддержкой DOCSIS (Data Over Cable Service Interface Specification) интерфейсов. Если на устройстве запущен чества рекурсивных запросов. Злоумышленник может выSNMP-сервис, злоумышленник может получить полный звать ошибку INSIST и вызвать отказ в обслуживании. контроль над устройством. URL производителя: http://www.isc.org. URL производителя: http://www.cisco.com. Решение: Установите последнюю версию (BIND 9.3.3rc2, Решение: Установите исправление с сайта производи- BIND 9.3.2-P1, BIND 9.2.7rc1 или BIND 9.2.6-P1) с сайта протеля. изводителя.
Составил Александр Антипов
№10, октябрь 2006
27
администрирование
Создаем адресную книгу на базе OpenLDAP
Сергей Алаев Надоела пустая трата времени на ведение адресных книг в текстовом формате? Возможно, использование сервера каталогов будет лучшим решением проблемы. Почему OpenLDAP? OpenLDAP – бесплатный сервер каталогов, который содержится в большинстве дистрибутивов Linux и FreeBSD. Он обладает достаточной функциональностью и полностью совместим с Outlook Express, Mozilla и Mozilla Thunderbird.
Почему PostgreSQL? PostgreSQL – достаточно известный сервер баз данных. Обладает хорошим быстродействием, надёжностью и многофункционален. В отличие от MySQL он поддерживает спецификацию ANSI SQL 92, что без особых усилий позволяет перенести базы данных, написанные на PostgreSQL, в такие коммерческие продук ты, как Oracle и MSSQL, а также обладает широким набором дополнительных возможностей (правила, триггеры, встроенные языки). Продукт 1С
28
Бухгалтерия v. 8.1 был полностью реализован на PostgreSQL. Использование PostgreSQL в данном примере ярко иллюстрирует часть его возможностей.
Установка и настройка OpenLDAP Для успешной сборки OpenLDAP установим unixODBC-2.2.11. Структура адресной книги
Остальные подробности
Наименование поля
Для управления содержимым сущностей будет использоваться веб-интерфейс PHPLdapAdmin. Это мощный вебинтерфейс для работы с OpenLDAP. Он содержит большое количество встроенных шаблонов, что упрощает работу с каталогами. OpenLDAP осуществляет взаимодействие с PostgreSQL через источники данных UnixODBC, что позволяет использовать другие серверы баз данных (MySQL, MSSQL, Oracle и т. д.). Все поля из таблицы будут отображаться в таких почтовых клиентах, как Outlook Express, Mozilla Thunderbird и просто Mozilla. Итак, приступим.
Имя Фамилия ФИО (полностью) Электронная почта Домашний телефон Рабочий телефон Мобильный телефон Должность Название отдела Название организации (частная компания) Факс Пейджер (ICQ, Yahoo и т. д.) Домашний адрес Рабочий адрес Почтовый индекс
администрирование Собираем из портов: # cd /usr/ports/databases/unixODBC # make && make install
Приступаем к установке самого пакета OpenLDAP: # # # # #
cd /usr/ports/databases/openldap23-client make && make install cd ../openldap23-server make WITH_ODBC=YES WITH_ODBC_TYPE=unixodbc make install
Приступаем к настройке сервера. Убедитесь, что после установки на главный конфигурационный файл стоят права владельца на пользователя ldap. В противном случае задайте права на главный конфигурационный файл: # chown ldap:ldap /usr/local/etc/openldap/slapd.conf
Рисунок 1. Пример добавления пользователя
Для доступа к PostgreSQL:
Правим главный конфигурационный файл:
# slappasswd –h {MD5} –s 123456
# mcedit /usr/local/etc/openldap/slapd.conf # Подключаем необходимые схемы include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/ ↵ inetorgperson.schema #Указываем путь для файлов pid и args pidfile argsfile
/var/run/openldap/slapd.pid /var/run/openldap/slapd.args
# Определяем порядок доступа к сущностям # Разрешаем доступ к службе каталогов LDAP только # авторизированным пользователям access to * by users read by self read by anonymous auth # Путь к модулю sql modulepath /usr/local/libexec/openldap moduleload back_sql.so ######################################################### # sql database definitions ######################################################### # Определяем настройки для соединения с PostgreSQL-сервером database sql suffix "o=myorg" rootdn "cn=root,o=myorg" rootpw {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== # Имя источника данных dbname PostgreSQL # Имя пользователя для соединения с PostgreSQL dbuser ldap # Пароль для данного пользователя dbpasswd {MD5}4QrcOUm6Wau+VuBX8g+IPg== insentry_stmt "insert into ldap_entries ↵ (id,dn,oc_map_id,parent,keyval) ↵ values ((select ↵ nextval('ldap_entries_id_seq')),?,?,?,?)" upper_func "upper" strcast_func "text" concat_pattern "?||?" has_ldapinfo_dn_ru no # При использовании модуля sql-индексы указывать не нужно # Поиск автоматически можно вести по всем атрибутам, # используемым в LDAP-дереве
Для более безопасного хранения пароля его необходимо зашифровать, поэтому для шифрования паролей выполните команду: для администратора ldap-каталогов: # slappasswd –h {MD5} –s secret
№10, октябрь 2006
Для того чтобы не переписывать длинный кодированный пароль, в конце данных команд можно поставить перенаправление вывода на конфиг в конец файла (>>/usr/local/ openldap/etc/slapd.conf), а потом отредактировать. Для запуска, остановки, перезапуска, проверки статуса используем команду: # /usr/local/etc/rc.d/slapd.sh start stop restart status
Запускаем сервер после установки PostreSQL. Для автоматического запуска OpenLDAP при загрузке правим rc.conf: # mcedit /etc/rc.conf slapd_enable="YES" slapd_flags="-u ldap –g ldap –h ldap://192.168.7.1"
Базовая настройка сервера каталогов закончена.
Установка и настройка PostgreSQL PostgreSQL – мощный сервер баз данных, предназначенный для бесплатного использования в рамках лицензии BSD. Он входит в состав большинства дистрибутивов Linux и FreeBSD. Собираем PostgreSQL из портов: # # # #
cd /usr/ports/databases/postgresql80-client make && make install cd /usr/ports/databases/postgresql80-server make && make install
Создадим каталог для размещения баз данных с правами на pgsql: # # # #
cd /var/db mkdir pgsql chmod 700 pgsql && chown pgsql:pgsql pgsql /usr/local/bin/sudo –u pgsql /usr/local/bin/initdb ↵ –-username=pgsql –-pgdata=/var/db/pgsql
Возможно, вам придётся установить утилиту sudo в раз-
29
администрирование # mcedit /usr/local/etc/odbcinst.ini [PostgreSQL] Description Driver Setup FileUsage
= = = =
PostgreSQL driver for Linux & Win32 /usr/local/lib/libodbcpsql.so /usr/local/lib/libodbcpsqlS.so 1
В данном файле мы указываем путь к библиотеке, которая отвечает за работу с PostgreSQL-сервером. # mcedit /usr/local/etc/odbc.ini [PostgreSQL] Description Driver Trace TraceFile Database Servername UserName Password Port Protocol ReadOnly RowVersioning ShowSystemTables ShowOidColumn FakeOidIndex ConnSettings Рисунок 2. Пример добавления данных о сотруднике
деле security общего дерева портов. После установки не забудьте разрешить root запускать команды для пользователя pgsql. Для этого необходимо отредактировать sudoers: # mcedit /usr/local/etc/sudoers root
ALL=(pgsql) ALL
Данная строка разрешает root запускать команды для пользователя pgsql. После создания первичных баз в целях безопасности данную строку можно закомментировать или удалить. Для автоматического запуска сервера при загрузке системы правим rc.conf: # mcedit /etc/rc.conf postgresql_enable="YES" postgresql_user="pgsql" postgresql_data="/var/db/pgsql"
Далее правим главный конфигурационный файл, где указываем IP, на котором будет работать сервер: # mcedit /var/db/pgsql/postgresql.conf listen_addresses='localhost'
Для версии 7.x необходимо указать: tcpip_socket = true virtual_host = '127.0.0.1'
Для запуска PostgreSQL выполните команду: # /usr/local/etc/rc.d/010.pgsql.sh start
Настройка UnixODBC Для настройки UnixODBC необходимо создать два файла следующего содержания:
30
= = = = = = = = = = = = = = = =
Test to Postgres PostgreSQL Yes sql.log ldap 127.0.0.1 5432 6.4 No No No No No
Здесь содержится информация, используемая для доступа к PosgreSQL. Имя пользователя и пароль мы указали в главном конфигурационном файле slapd.conf, поэтому здесь эти данные можно не указывать
Создание базы данных PostgreSQL хранения сущностей LDAP Прежде всего необходимо определиться со структурой LDAP-дерева. В корне каталогов будет находиться контейнер o=myorg, в котором будут содержаться два контейнера. В первом ou=users,o=myorg будет храниться информация о пользователях, которые будут иметь доступ к серверу каталогов(например, cn=ivan ivanov,ou=users,o=myorg). Во втором ou=myaddressbook,o=myorg будут храниться записи о сотрудниках. Приступаем к созданию баз данных: # psql –h 127.0.0.1 -d template1 -U pgsql
Далее создаём пользователя ldap: template1=# CREATE USER ldap WITH SYSID 100 PASSWORD '123456' NOCREATEDB NOCREATEUSER;
Теперь создадим базу данных для данной адресной книги: template1=# CREATE DATABASE ldap WITH OWNER = ↵ ldap ENCODING = 'UNICODE';
В данном случае очень важно использовать кодировку UNICODE, т.к. OpenLDAP будет добавлять данные, содержащие русские символы в юникодной кодировке, а не SQL-ASCII. Использование данной кодировки в базе данных позволит корректно отображать символы на русском при непосредственном доступе к таблицам PostgreSQL. Отсоединяемся и создаем таблицы под новым пользователем ldap к вновь созданной базе ldap:
администрирование # psql –h 127.0.0.1 –d ldap –U ldap –p 5432 ↵ –W < /usr/local/scripts/main.sql
Данный SQL-скрипт автоматически создаст таблицы для хранения сущностей. Перезапускаем систему. После авторизации выполняем: # sockstat -4
На что он должен выдать список всех сервисов, которые слушают на IPv.4, среди которых должны быть PostgreSQL и slapd, что свидетельствует об успешно выполненных настройках.
Установка и настройка PHPLdapAdmin Доступ к нему осуществляется через сервер Apache. Для нормальной работы phpldapadmin никаких особых настроек PHP не требуется, нужна только поддержка OpenLDAP, поэтому если уже имеется настроенный PHP, то просто добавьте модуль ldap, и этого будет достаточно. Собираем PHPLdapAdmin из портов: # cd /usr/ports/net/phpldapadmin # make && make install
Для запуска Apache выполняем: # apachectl start
Переходим к настройке PHPLdapAdmin: # cd /usr/local/www/phpldapadmin/config # mv config.php.example config.php
Для подключения к LDAP-серверу имя пользователя и пароль мы будем вводить в самом интерфейсе. Хост необходимо указать в данном файле. # mcedit config.php
В браузере заходим на http://192.168.7.1/phpldapadmin/.
Создание адресной книги Приступаем к созданию адресной книги. Для авторизации нажимаем «ВХОД». В качестве логина вводим cn=root,o=myorg, в качестве пароля – secret. Для создания главного контейнера выбираем «IMPORT», и далее в текстовом поле «Paste your LDIF here» введите следующее: dn: o=myorg objectclass: organization o: myorg
Переходим к созданию контейнера, содержащего информацию о пользователях, которым разрешено пользоваться сервером каталогов. Выделите контейнер o=myorg и кликните «Создать потомка». В качестве шаблона выберите «Organisational Unit» и введите название контейнера users. Создадим учётную запись для доступа к серверу каталогов. В контейнере ou=users,o=myorg кликните «Создать потомка» и в качестве шаблона укажите «User Account», и заполните данные. В качестве uid можно вводить порядковый номер пользователя (рис. 1). Создадим контейнер для хранения записей о сотрудниках. Для этого в контейнере o=myorg создайте контейнер ou=address_book по тому же принципу, что и ou=users. Для добавления записей о сотрудниках создайте в контейнере ou=addressbook,o=myorg потомка, указав в качестве шаблона Address Book Entry (mozillaOrgPerson). И далее заполняйте данные на русском (рис. 2). После чего нажмите «proceed» для создания объекта. Вот таким образом добавляются данные. OpenLDAP автоматически размещает их в SQL-таблицах. С помощью интерактивного клиента pgadmin вы можете посмотреть данные в таблицах.
Настройка Outlook Express на использование адресной книги
Переходим к настройке Outlook Express. Для добавления сервера каталогов в меню «Сервис → Учётные записи» выбираем «Добавить → Служба каталогов». В качестве имени укажите 192.168.7.1. Потом зайдите в свойства и на вкладке «Общие» в поле «Учётная запись» введите «Моя адресная книга». Установите галку «Требуется вход на сервер» в состояние включено. В качестве учётной записи введите cn=ivan ivanov,ou=users,o=myorg и укажите пароль, который вы вводили при создании данного пользователя. Переходим на вкладку «Дополнительно» и в поле «Основа поиска» укажите ou=myaddressbook,o=myorg. Теперь можно выполнять поиск в адресной книге по любым критериям. Кликните кнопку «Адреса», далее «Поиск людей» и введите критерии поиска. Пример поиска показан на рис. 3. Вот и всё в принципе. Рисунок 3. Пример поиска контактной информации сотрудника в адресной книге Удачи! $ldapservers->SetValue($i,'server','host','192.168.7.1');
№10, октябрь 2006
31
администрирование
Linux-VServer: настраиваем виртуальные серверы
Дмитрий Столяров Если становится сложным справляться с администрированием множества служб на одном сервере или вы не хотите давать привилегии суперпользователей другим администраторам, попробуйте распределить службы по виртуальным серверам.
В
В этой статье рассматривается наше время неудержимого прогресса информационных техно- технология Linux-VServer (http://linuxлогий и развития глобальных се- vserver.org). Описываются основные тей многим системным администрато- возможности, а также вы найдете инсрам приходится сталкиваться с зада- трукции по установке программного чами, связанными с созданием ресур- обеспечения, и настройке виртуальсов для широкого пользования. С уве- ных серверов. личением объема таких ресурсов, находящихся в руках одного админист- Основные возможности ратора, растет сложность администри- Технология Linux-VServer позволяет сорования и, как правило, страдает бе- здавать несколько виртуальных серзопасность. Встают вопросы частич- веров (VPS), работающих независиного делегирования административ- мо под управлением одного ядра опеных полномочий. Техники VPS (Virtual рационной системы. Private Server) и VDS (Virtual Dedicated Каждый виртуальный сервер свяServer) позволяют решать такие за- зан с одним контекстом, в котором выдачи – задачи «эффективного раз- полняются его процессы. Контекст – деления целого на меньшее». В отли- это окружение, объединяющее группу чие от других небезызвестных техно- процессов в системе, и отделяющее их логий, таких как VMWare и Xen, VPS от процессов, не входящих в этот конпредоставляет минимальную виртуа- текст. Имена пользователей и групп, лизацию. Подробнее различные виды а также их идентификаторы принадвиртуализации описаны здесь: http:// лежат контексту. Процессы главного en.wikipedia.org/wiki/Virtualization. (корневого) сервера входят в контекст
32
с нулевым номером и обладают большими возможностями, они имеют доступ к процессам и данным всех виртуальных серверов. В файловой системе главного сервера корни файловых систем виртуальных серверов расположены в некоторой директории. VPS внутри выглядит как полноценная Linux-система. Вы можете предоставить права root на него и совершенно не бояться, что как-то могут быть повреждены другие виртуальные серверы или главный сервер. Все сервисы, такие как электронная почта, базы данных, Web, SSH, могут быть запущены без модификаций (или с некоторыми минимальными модификациями) на виртуальном сервере (список программ, с которыми возникают проблемы, вы можете можете просмотреть здесь: http://wiki.linux-vserver.org/ ProblematicPrograms). Каждый VPS может обладать как одним IP-адресом, так и несколькими.
администрирование Для виртуального сервера может быть настроено множество параметров и ограничений. Вот наиболее часто используемые из них: Место, занимаемое на диске и количество индексных дескрипторов (файлов). Объем физической и виртуальной памяти. Доля использования мощности процессора и список процессоров, на которых может выполняться VPS. Максимальное количество процессов, принадлежащих контексту. Для каждого VPS могут отслеживаться такие показатели, как: Использованное процессорное время. Количество совершенных системных вызовов fork (с его помощью создаются новые процессы). Количество полученных и переданных сетевых пакетов.
Опции, отвечающие за совместимость со старым управляющим программным обеспечением, и не представляющие в нашем случае никакого интереса. Их надо отключить. Linux-VServer -> Show a Legacy Version Number (VSERVER_LEGACY_VERSION=n) Linux-VServer -> Enable Legacy Kernel API (VSERVER_LEGACY=n)
Следующая опция отвечает за устаревшую поддержку сети в виртуальных серверах, эта поддержка, как написано в документации, нужна: Linux-VServer -> Disable Legacy Networking Kernel API (CONFIG_VSERVER_NGNET=n)
Опция, отвечающая за то, чтобы виртуальные серверы видели только свои процессы (в отличие от главного сервера, который может просматривать процессы всех VPS (с помощью специальных утилит): Linux-VServer -> Enable Proc Security (VSERVER_PROC_SECURE=y)
Опция, отвечающая за возможность жесткого управления процессами. Если VPS превысил свой лимит процессорной мощности и для него установлено жесткое управПрограммное обеспечение Операционная система GNU/Linux; Linux-ядро 2.6.17 ление, выполнение процессов контекста будет замороже(http://kernel.org). но на некоторый промежуток времени (подробнее смотреть Linux-VServer Kernel Patches 2.0.21 (http://wiki.linux-vserver. «Ограничение ресурсов»): org/Downloads). Linux-VServer -> Enable Hard CPU Limits (VSERVER_HARDCPU=y) Linux-VServer Userspace Utilities 0.30.210 (http://wiki.linuxСледующая опция отвечает за ограничение времени vserver.org/Downloads). простоя контекста, она позволяет добиться большей интерТакже потребуется образ, который будет использовать- активности (меньшего времени отклика), но и сильно увеся на VPS. Вот некоторый список архивов, содержащих го- личивает перегрузку, связанную с планированием процестовые образы: сов (отправкой их на выполнение). Оставлю выбор на ваше усмотрение: http://mirrors.sandino.net/vserver/images; http://debian.marlow.dk/vserver/guest; Linux-VServer -> Limit The IDLE task (VSERVER_HARDCPU_IDLE) http://www.fumanchu.com/vserver; Опция, отвечающая за разделение битов в идентифика http://lylix.net/vps+templates/func,select/id,1; торах пользователя и группы на биты, характеризующие но http://distfiles.gentoo.org/experimental/x86/vserver; мер контекста, и биты являющиеся идентификатором поль http://distfiles.gentoo.org/experimental/amd64/vserver. зователя внутри VPS. Изменяя эти числа, можно достичь Отличается такой образ от полноценной Linux-системы разного максимального числа возможных групп и пользообычно измененными скриптами инициализации, а в осо- вателей в системе. Используется это при сохранении прибенности – скриптами, направленными на проверку целос- надлежности файла к конкретному VPS в файловой систетности корневой файловой системы и т. п. ме. Рекомендую оставить значение по умолчанию: Разумеется, никто не отменяет возможности самостоLinux-VServer -> Persistent Inode Context Tagging -> UID24/GID24 (INOXID_UGID24=y) ятельного создания образа на основе используемого ваОпция отвечает за поддержку встроенного в ядро NFS ми дистрибутива. демона:
Установка поддержки Linux-VServer в ядре Скачаем ядро, разархивируем его и добавим патч:
# wget http://www.kernel.org/pub/linux/kernel/v2.6 ↵ /linux-2.6.17.13.tar.bz2 # wget http://ftp.linux-vserver.org/pub/kernel/vs2.0 ↵ /patch-2.6.17.13-vs2.0.2.1.diff.bz2 # tar -xjf linux-2.6.17.13.tar.bz2 # bunzip2 patch-2.6.17.13-vs2.0.2.1.diff.bz2 # cd linux-2.6.17.13 # patch -p1 < ../patch-2.6.17.13-vs2.0.2.1.diff # make menuconfig
После того, как вы примените патч к ядру, в меню конфигурации появится новая секция «Linux-VServer», ей мы и уделим внимание.
№10, октябрь 2006
Linux-VServer -> Tag NFSD User Auth and Files (XID_TAG_NFSD=n)
После настройки этих опций скомпилируем и установим ядро, поправим соответствующим образом загрузчик, а потом не забудем перезагрузиться: # make bzImage modules modules_install install
Устанавливаем программное обеспечение для управления VPS Для работы утилит нам понадобится программа vconfig (http://www.candelatech.com/~greear/vlan.html). Скачаем и разархивируем утилиты:
33
администрирование # wget http://ftp.linux-vserver.org/pub/utils/ ↵ util-vserver/util-vserver-0.30.210.tar.bz2 # tar -xjf util-vserver-0.30.210.tar.bz2 # cd util-vserver-0.30.210
ных серверов обрабатывались корректно, потребуется сделать следующее:
Конфигурацию производим следующим образом: # ./configure --prefix=/usr/local/vserver ↵ –with-vrootdir=/var/vservers
Опция «vrootdir» указывает папку, в которой будут располагаться корни виртуальных фаловых систем. Компилируем и устанавливаем: # make # make install
# PATH=$PATH:/usr/local/vserver/sbin # MANPATH=$MANPATH:/usr/local/vserver/man
Настроим файловую систему, в которой будут располагаться виртуальные серверы (в ней будет находиться vrootdir, в нашем случае – /var/vservers). При монтировании нам нужно обязательно указать опцию «tagxid»: она включает установку принадлежности файлов конкретному VPS (см. «Ядро: Linux-VServer -> Persistent Inode Context Tagging»). Также, если вы используете reiserfs, вам понадобится опция «attrs», включающая поддержку атрибутов файла (chattr, lsattr) (проверьте, включена ли в ядре опция REISERFS_FS_XATTR, при использовании reiserfs). Монтирование производится следующим образом:
# vserver-info
reiserfs
tagxid,attrs
# wget http://distfiles.gentoo.org/experimental/x86/ ↵ vserver/stage3-i686-20060317.tar.bz2 # mkdir /usr/src/stage3-vserver # tar -xjf stage3-i686-20060317.tar.bz2 -C /usr/src/ ↵ stage3-vserver # mkdir /usr/src/stage3-vserver/usr/portage
Если вы используете не Gentoo в качестве дистрибутива для главного сервера, вам понадобится скачать и установить дерево портежей (это дерево можно можно монтировать к нескольким VPS для совместного использования): # wget http://distfiles.gentoo.org/snapshots/ ↵ portage-latest.tar.bz2 # tar -xjf portage-latest.tar.bz2 -C /usr
# vserver testvps build -m skeleton --context 5 ↵ --initstyle plain
Или, в случае fstab, это будет строчка вида: /var
Для начала нужен образ VPS. Мы выберем для себя образ на основе Gentoo. Скачаем и распакуем его:
Создадим базовую конфигурацию для нашего нового VPS:
# mount /dev/sda2 /var/ -o tagxid,attrs
1 1
В этом примере монтирование производится в директорию /var, это не обязательно. После установки поддержки в ядре, установки утилит, настройки файловой системы произведем перезагрузку. Создаем директорию, в которой будут храниться наши VPS и устанавливаем для нее флаг «Chroot Barrier» («барьер смененного корня»). Отвечает этот флаг за то, что никакой процесс из VPS (контекста) не сможет выбраться за этот барьер. # mkdir /var/vservers # /usr/local/vserver/sbin/setattr --barrier /var/vservers/
Для продолжения понадобится выполнить команду, делающую видимыми для самого сервера некоторые части /proc (см. «Ядро: Linux-VServer -> Enable Proc Security»). Полезно добавить эту команду к скриптам инициализации системы. # /usr/local/vserver/etc/init.d/vprocunhide start
Для того чтобы перезагрузка и выключение виртуаль-
34
Следующая команда должна вывести информацию о версии Linux-VServer API в ядре и версии утилит. Если она делает это, то установка прошла успешно.
Создание VPS
Дополним переменные окружения новыми путями (это лучше прописать, например, в bashrc):
/dev/sda2
# echo 'kernel.vshelper =/usr/local/vserver/lib ↵ /util-vserver/vshelper' >> /etc/sysctl.conf # sysctl -p
Рассмотрим параметры команды:
testvps – имя виртуального сервера. -m skeleton – метод, означающий, что надо создать только конфигурационные файлы.
--context 5 – идентификатор контекста. --initstyle plain – стиль загрузки (http://oldwiki.linuxvserver.org/InitStyles). После выполнения команды для нового сервера создана конфигурация в /usr/local/vserver/etc/vservers/testvps, зайдем в эту директорию. Скопируем файловую систему нашего будущего VPS: # cp /usr/src/stage3-vserver/* /var/vservers/testvps/ -pPR
Дополним fstab следующим образом: # cat >> /usr/local/vserver/etc/vservers/testvps/fstab /usr/portage /usr/portage none bind,ro /usr/portage/distfiles /usr/portage/distfiles ↵ none bind,rw 0 0
0 0
Первая строчка монтирует «дерево портежей» в режиме «только чтение», вторая – директорию, содержащую ар-
администрирование хивы исходных файлов, используемые пакетным менеджером emerge. Запустим наш новый виртуальный сервер: # vserver testvps start
Посмотрим информацию о запущенных серверах: # vserver-stat CTX PROC 0 106 5 1
VSZ 1.6G 1.4M
RSS 744.4M 492K
userTIME sysTIME 36m41s10 6m39s70 0m00s21 0m00s13
UPTIME 17h45m58 0m00s75
NAME root server testvps
Обратите внимание, что главный сервер представляется как VPS с номером 0 и именем «root server». Для входа в консоль VPS можно использовать следующую команду: # vserver testvps enter
Настройка сети в VPS Прежде всего перейдем в каталог с конфигурацией интерфейсов виртуального сервера и создадим директорию для первого интерфейса: # cd /usr/local/vserver/etc/vservers/testvps/interfaces # mkdir 0 # cd 0/
Установим имя устройства, к которому будет присоединен IP-адрес нашего VPS: # echo 'eth0' > dev
Укажем псевдоним устройства, создаваемого при инициализации VPS:
# vserver testvps enter # ifconfig
Выход из консоли VPS осуществляется стандартно: комбинацией клавиш <Ctrl+D> или командой logout. Если по аналогии создать второй виртуальный сервер и присвоить ему IP-адрес из той же сети (например, 192.168.0.3) серверы смогут осуществлять коммуникации друг с другом.
Архитектурные рекомендации Наиболее востребованной технология VPS оказалась для создания хостинговых решений. Большую актуальность она имеет и в образовательной среде, так как предоставляет возможность без последствий давать привилегии суперпользователя (root). А как без них обучить администрированию? Рассмотрим четыре способа организации доступа к виртуальным серверам. Некоторые из них могут быть использованы для организации публичного (для неограниченной аудитории) доступа, другие – для групп пользователей конечного размера. Выбирая наиболее эффективные варианты доступа в конкретной ситуации и правильно комбинируя их, можно добиться больших гибкости, удобства использования и надежности.
Публичный IP на каждый VPS Это самый простой вариант для реализации и в то же время самый расточительный для адресного пространства IP. Заключается он в том, что на каждый VPS выделяется один (или более) публичный IP. Таким образом, любой сервис, запущенный на VPS и слушающий на каком-то порту, будет доступен из глобальной сети.
Приватный IP + Port Forwarding (DNAT)
Этот вариант очень удобен, когда вы хотите предоставить доступ к одному или нескольким сервисам, запущенным # echo 'testvps' > name на VPS, например, для администрирования. VPS-серверам выделяются IP-адреса из приватного диапазона некоторой виртуальной сети. Для нужных сервисов Настроим IP-адрес и маску сети: на VPS-серверы пробрасываются порты с публичных IP-ад# echo '192.168.0.2' > ip ресов, привязанных к самому серверу. Таким образом, об# echo '24' > prefix ращаясь на один и тот же IP-адрес, например, по портам 21 (FTP) и 80 (HTTP), мы можем в действительности обраПерезагрузим VPS: щаться к разным VPS. # vserver testvps restart Основным недостатком такой реализации является то, что она совершенно не пригодна для HTTP-хостинга. СкоДля того чтобы посмотреть получившийся результат, рее всего, вас не поймут, если вы предложите одним свовоспользуемся командой ip (входит в iproute2: http://linux- им клиентам обращаться к своему сайту по порту 1080, а другим – по 8080, что простительно в случае с админисnet.osdl.org/index.php/Iproute2). тративным доступом. # ip addr | grep 192.168.0.1
Приватный IP + VPN
Так же, как и в предыдущем варианте, VPS назначаются приватные IP-адреса. В получившуюся приватную сеть орinet 192.168.0.2/24 brd 192.168.0.255 scope global eth0:testvps ганизовывается VPN-доступ с использованием, например, Обратите внимание, что полное имя устройства ви- PPTP или OpenVPN, или IPSec. Этот вариант может быть использован не для публичда <имя>:<псевдоним> не может быть в длину больше 15 символов. ного доступа, а для административного или для достуВ VPS можно увидеть результат: па некоторой небольшой группы людей. Многие VPN-реНа экране мы увидим:
№10, октябрь 2006
35
администрирование ализации предоставляют шифрование: таким образом, работая через VPN с сервисами, запущенными на VPS, можно гарантировать некоторый, достаточно высокий, уровень сохранности данных. В образовательной среде этот вариант имеет большие преимущества, так как позволяет малыми затратами адресного пространства сделать многое.
Приватный IP + HTTP-прокси На главном сервере или на одном из VPS с публичным IPадресом мы запускаем реверсный HTTP-прокси-сервер, перенаправляющий, в зависимости от доменного имени, запросы внутрь виртуальной сети на нужные VPS. Таким образом, через 80 порт на одном публичном IP мы можем предоставлять HTTP-доступ к сайтам, расположенным на разных VPS. В качестве реверсного прокси-сервера прекрасно подходит продукт российского производства nginx (http://sysoev.ru). Этот вариант, к большому сожалению (в силу внутреннего устройства протокола), пригоден только для HTTP.
Настройка ограничений дискового пространства Для настройки перейдем в директорию с конфигурацией VPS и создадим там каталог: # # # #
cd /usr/local/vserver/etc/vservers/testvps/ mkdir dlimits mkdir dlimits/0 cd dlimits/0
Укажем директорию, для которой мы устанавливаем ограничения: # echo '/var/vservers/testvps' > directory
Ограничим количество индексных дескрипторов файлов: # echo '100000' > inodes_total
Ограничим пятью гигабайтами место, доступное VPS: # echo '5242880' > space_total
Установим процент от общего размера, резервируемый для пользователя root. # echo '5' > reserved
После этого перезагрузим VPS, войдем в него и посмотрим, что получилось:
# vserver testvps stop # chxid -c 5 -R /var/vservers/testvps # vserver testvps start
Входим и проверяем: # df -h /dev/hdv1
5,0G
503M
4,3G
11%
/
Настройка ограничений ресурсов Перейдем в директорию с конфигурацией виртуального сервера: # cd /usr/local/vserver/etc/vservers/testvps/ # mkdir rlimits # cd rlimits
Существуют следующие ресурсы: cpu, fsize, data, stack, core, rss, nproc, nofile, memlock, as, locks. Более подробно о типах ресурсов можно прочитать в man setrlimit. В директории создаются файлы с именами <имя ресурса>.min, <имя ресурса>.soft, <имя ресурса>.hard, в которых и определяются конкретные ограничения для ресурсов. В файле /usr/local/vserver/etc/vservers/testvps/flags вы можете установить флаги, рассмотрим некоторые часто используемые: virt_uptime – показывать внутри VPS время работы виртуального сервера. virt_load – показывать индикатор загрузки VPS, а не главного сервера. sched_hard – указывает планировщику замораживать процесс, если он превысил лимит мощности процессора. sched_prio – указывает планировщику понижать приоритет процесса, если он превысил лимит процессора. fork_rss – запрещать системный вызов fork, если превышен rlimit rss. В файле /usr/local/vserver/etc/vservers/schedule вы можете установить параметры планировщика. Например, для того чтобы VPS выделялось 7/32 (21.9%) каждого процесса, а в случае превышения он приостанавливался на (200/7)*32=928 так называемых «мгновений» (jiffies), нужно создать файл следующего содержания: 7 32 500 200 1000 string
928 jiffies – это порядка одной секунды, если частота таймера равна 1000 Гц и примерно десять секунд, если час# df -h тота равна 100 Гц (частота таймера в конфигурации ядра: «Processor type and features -> Timer frequency»). /dev/hdv1 5,0G 0 4,8G 0% / Управление планировщиком находится в стадии разраТак как для файлов образа не установлен идентифи- ботки и может измениться. Более подробно об этих и многих других настройках вы катор контекста (XID), место на диске, занимаемое ими, не учитывается. Если вы хотите, чтобы и оно учитывалось, можете прочитать в документации на официальном сайте: http://wiki.linux-vserver.org/VServerConfiguration. можно сделать следующее:
36
безопасность
Как настроить библиотеку SASL для совместной работы c Kerberos
Михаил Кондрин С помощью библиотеки SASL сетевые приложения могут автоматически договориться об использовании определенного механизма подтверждения идентичности пользователя. Как осуществить взаимодействие библиотеки SASL c Kerberos?
Общие свойства SASL
потребуется приложить определенные тевых протоколов – SMTP, IMAP и/или Преимущества протокола Kerberos – усилия по анализу используемых про- POP3, их конфиденциальности и засильная криптографическая защи- граммных пакетов и выбору тех из них, щиты от несанкционированного дота паролей и данных, единая система что поддерживают Kerberos. ступа. В принципе способов добиться Любой из вас в своей работе на- решения этой задачи может быть неуправления паролями пользователей и возможность реализации single sign- верняка сталкивается с протокола- сколько (см., например, [1, 2, 3, 4]), но on-системы (система единой регист- ми отправки и получения электрон- решение с помощью Kerberos предрации пользователей). Основной не- ной почты. Электронная почта – ста- ставляется мне наиболее простым и достаток – сложная программная реа- рый и популярный протокол. И именно удобным. Удобство в данном случае лизация механизма аутентификации. потому, что протокол старый (создан- подразумевает не только простоту адДля того чтобы протокол, точнее, сер- ный в те времена, когда разработчи- министрирования, но и удобство польвис и клиентское приложение, исполь- ки не слишком задумывались о безо- зователей, которые получают единообзовали аутентификацию пользовате- пасности своих продуктов) и популяр- разный способ доступа к протоколам лей через Kerberos, соответствующий ный (широкий выбор потенциальных чтения и отправки почты на основании код должен быть реализован как в кли- жертв), электронная почта является своего системного пароля как изнутри, ентской, так и серверной частях прото- удобной целью для злоумышленников. так и извне локальной сети (в последкола. Поэтому, если вы попытаетесь ор- При этом ваша задача состоит в орга- нем случае есть некоторые оговорки). ганизовать single sign-on-систему, вам низации безопасности нескольких се- Немаловажным обстоятельством яв-
38
безопасность ляется и то, что Kerberos – хорошо масштабируемый протокол, который разрабатывался в расчете на огромные университетские сети. Ключевой элемент, обеспечивающий взаимодействие Kerberos и почтовых служб, – пакет SASL (Simple Secure Authentication Layer), разработанный в Университете Карнеги-Меллон. Помимо реализации от CMU (получившей название Cyrus-SASL) существует GNU-версия gsasl [5], разрабатываемая практически единолично шведским программистом Джеффсоном. Несмотря на то что gsasl довольно быстро развивается, эта реализация все еще считается бета-версией и значительно уступает по надежности Cyrus-SASL. Всего университетом Карнеги-Меллон было выпущено две реализации библиотеки SASL, различающиеся между собой по API и формату хранения пользовательских данных, хотя и совместимые по протоколу. В настоящее время вторая версия Структура SASL SASL практически полностью вытеснила первую, и поэтому под SASL я буду раторами, каждый из которых имеет понимать именно вторую версию (кото- свой взгляд на политику сетевой безопасности. Предположим, что один рую иногда обозначают как SASL2). Сегодня вы узнаете, как настроить из них сконфигурировал сервис таSASL применительно к использованию ким образом, что тот позволяет аув системе электронной почты, но функ- тентифицировать пользователя чеции SASL гораздо шире, чем просто ин- рез Kerberos5 (условное обозначение терфейс между почтовыми службами механизма – GSSAPI), с помощью паи Kerberos. SASL был задуман в качес- роля, закодированного по алгоритму тве своего рода диспетчера, позволя- MD5 (CRAM-MD5), и простого текстоющего сетевым клиентам и серверам вого пароля (PLAIN). Если в клиенте договориться о механизме аутентифи- настроена поддержка какого-нибудь кации, который клиент должен исполь- из этих механизмов, то SASL позволязовать, чтобы подключиться к серве- ет провести аутентификацию посредсру. Более того, библиотека, входящая твом именно этого механизма, причем в состав SASL, позволяет унифициро- в случае множественного пересечения ванным образом провести эту аутен- будет выбран наиболее сильный. Протификацию независимо от выбранно- граммная реализация выглядит одиго механизма. Прозрачность процеду- наково – разработчик должен инициры аутентификации через SASL поз- ализировать библиотеку (c помощью воляет как клиенту, так и серверу од- функций sasl_client/server_new, ..._init, новременно поддерживать несколь- ..._start) и затем войти в цикл аутентико различных типов аутентификации фикации. На каждом шаге цикла пробез необходимости программно реа- грамма должна прочитать блок данлизовывать каждый из них – разработ- ных, полученный по сети (реплика кличик может положиться на библиотеку ента/сервера), и передать его функSASL, что та выберет наиболее подхо- ции sasl_client/server_step. На выходе дящий из набора, предлагаемого кли- функции контролируется возвращаемое значение и один из ссылочных ентом или сервером. Как это выглядит на практике? Кли- параметров. Ссылочный параметр пеент и сервер могут находиться в раз- редается по сети без дополнительной ных сетях, которые построены и скон- обработки, а возвращаемое значение фигурированы разными админист- анализируется, и в зависимости от его
№10, октябрь 2006
значения принимается решение о продолжении или остановке цикла аутентификации. Цикл прекращается, когда возвращаемое значение станет равным SASL_OK, что означает успешную аутентификацию, или функция вернет сообщение об ошибке, что означает отказ в аутентификации. Хотя число шагов, которое требуется для подтверждения идентичности пользователя, может быть различно для разных механизмов аутентификации, да и способы ввода пароля (или его отсутствие) в клиентском приложении могут быть различными, но сам алгоритм аутентификации при этом остается тем же самым. Теперь небольшой обзор возможностей SASL. Механизмы аутентификации, реализованные в Cyrus-SASL, условно можно разделить на три группы (см. рисунок). Первая группа – наиболее слабые механизмы – это аутентификация посредством открытых текстовых паролей PLAIN и LOGIN. Различие между ними только в формате, в котором имя и пароль пользователя передаются по сети от клиента к серверу. Это очень слабые механизмы (слабее них только ANONYMOUS, открывающий беспарольный доступ любому пользователю), поскольку пароли могут быть перехвачены злоумыш-
39
безопасность ленником в момент передачи по сети. Если же вы решите использовать эти механизмы, то вам нужно озаботиться поиском внешнего способа криптования канала передачи, например, с помощью SSL/TLS. Вторая группа механизмов – это механизмы с общим ключом: CRAM-MD5, DIGEST-MD5 и несколько особняком стоящим от них механизмом одноразовых паролей – OTP. Слабость механизмов CRAM-MD5 и DIGEST-MD5 состоит в том, что хотя пароли и передаются по сети в зашифрованном виде, но они могут быть перехвачены и взломаны offline с помощью простого перебора. С другой стороны, при использовании этих механизмов требуется наличие незашифрованных паролей на почтовом сервере, где их безопасность бывает сложно гарантировать. Метод одноразовых паролей в этом смысле более безопасен. Идея этого метода состоит в создании последовательности легко запоминающихся фраз, сгенерированных из одного секретного пароля. Этот список хранится на сервере и время от времени пополняется. Для подключения к серверу пользователь использует очередную фразу из сгенерированного списка как свой пароль, после чего эта фраза из списка вычеркивается, и для следующего подключения должна быть использована следующая в списке. Понятно, что перехват пароля ничего не дает злоумышленнику, хотя по-прежнему остается опасность, что злоумышленник сумеет завладеть всем списком одноразовых паролей, хранящимся на сервере. И наконец, последняя группа – механизмы, использующие Kerberos (GSSAPI и KERBEROS_V4). KERBEROS_V4 применяется для аутентификации по старому, не очень надежному, но тем не менее все еще используемому протоколу Kerberos4, а GSSAPI следует понимать как синоним Kerberos5, более современной версии Kerberos. Нас будет интересовать в основном этот последний механизм. Как уже говорилось ранее, выбор механизма определяется процедурой «автоподстройки», происходящей по сети между клиентской и серверной программами. Помимо разных механизмов SASL предлагает различные способы хранения паролей, кото-
40
рые в терминологии SASL называются цедура сборки программного пакеметодами. Вы должны решить, какой та стандартна – с помощью скрипта из методов будете использовать, при- configure проводим предварительную чем можно подбирать метод индивиду- настройку программы и компилируем ально для каждого приложения. Воз- командами make, make install. Помимо можные варианты: собственная база обычных опций (например, --prefix=/usr, данных SASL (sasldb2), база данных означающий, что программа будет усLDAP, внешняя SQL-совместимая ба- тановлены в каталог /usr) configure за данных, системные файлы с иденти- имеет еще большое число параметфикационной информацией о пользо- ров, которые позволяют гибко настравателях (/etc/passwd, /etc/shadow), ис- ивать Cyrus-SASL. Разберем некопользование инфраструктуры PAM или торые из этих параметров. В первую Kerberos. В последнем случае не нужно очередь нас интересуют --with-gssapi путать Kerberos как метод с механиз- и --with-gss_impl=heimdal, которые мами GSSAPI и KERBEROS_V4. При- вк лючают под держк у механизма менение этого метода позволяет ис- GSSAPI и указывают, какая реализапользовать базу данных Kerberos как ция Kerberos будет использована для хранилище паролей без необходимос- этого. Так же, как и в статье [7], предти развертывания всей инфраструк- полагаем, что в системе установлетуры Kerberos. Выбор метода во мно- ны библиотеки и заголовочные файгом определяет набор доступных ме- лы Heimdal Kerberos, хотя возможно ханизмов – бесполезно объявлять ме- применение и более распространненханизм GSSAPI как поддерживаемый ной версии Kerberos от MIT. Другие приложением, если единственный до- механизмы SASL можно также вклюступный для него метод – это систем- чить (или выключить) при конфигураные файлы. Библиотека SASL может ции, например: использовать методы либо напрямую, --enable-login \ либо через своего «агента» – демо--enable-ntpl \ на saslauthd, с которым библиотека --disable-otp \ --disable-anon \ SASL общается через именованный сокет. Использование агента бывает необходимо для согласования прав LOGIN и NTPL используются мнодоступа – сетевое приложение мо- гими старыми почтовыми программажет быть запущено от непривилеги- ми от Microsoft, и их поддержку бывает рованного системного пользователя, полезно включить в Cyrus-SASL. Мехаа для аутентификации, к примеру, че- низм ANONYMOUS для почтовых прорез системные файлы нужен доступ грамм скорее вреден, OTP – на ваше на чтение /etc/shadow, что при разум- усмотрение. Если вы решите испольной установке возможно только для зовать OTP, имейте в виду, что Cyrusroot. Однако можно запустить сервис SASL может либо использовать свою saslauthd с привилегированными пра- собственную версию OTP, либо уже вами, тем самым открывая ему доступ установленные библиотеки OPIE (One к /etc/shadow и при этом не компроме- Time Passwords in Everything [8], сооттируя безопасность системы, посколь- ветствующий параметр компиляции ку непосредственный доступ к это- --with-opie). Хотя heimdal имеет свою му сервису из сети невозможен. Ре- встроенную реализацию OTP, но у мезультат процедуры аутентификации ня не получилось заставить Cyrus-SASL saslauthd сообщает сервису через име- использовать именно эту библиотеку. Под держка метода SASLDB нованный сокет права на доступ, к которому могут быть более либеральны, (или auxprop) обязательна для CyrusSASL, хотя в нашем случае она и не чем к /etc/shadow. нужна. Другие методы можно выключить с помощью параметров: Установка библиотеки
SASL
После этого небольшого обзора SASL можно приступить к установке и тестированию самой библиотеки CyrusSASL. Исходный код доступен на сайте CMU (или на его зеркалах) [6]. Про-
--enable-ldapdb=no --enable-sql=no
Можно также отключить агента saslauthd (опция --with-saslauthd=no), но мы это делать не будем.
безопасность После того как все эти условия выполнены, можно наSASLDB по умолчанию требует в качестве DB-движка Berkley DB [9]. С этим связана одна небольшая проблема. чать тестирование SASL. Вначале, войдя как root на одном Так же, как и SASL, многие программы, такие как heimdal, из терминалов, запускаем серверную часть: Postfix и Cyrus-IMAP, используют Berkley DB для хранения $./server -p 3001 -s host -m GSSAPI своих собственных данных, например, псевдонимов пользователей в Postfix. Многие дистрибутивы Linux включают в себя несколько версий Berkley DB (от 2-й до 4-й), приОпция -p задает порт, который будет прослушивать серчём эти версии несовместимы между собой, и линковка вер. Имя сервиса определяется с помощью опции -s host, какой-нибудь программы с разными версиями Berkley-DB причем необходимо указать только первую часть имени прини к чему хорошему не приведёт. К примеру, если попы- нципала, к которой затем автоматически добавляются имя таться скомпилировать SASL с 4-й версией, в то время как компьютера и имя сектора Kerberos. Можно выбрать любоheimdal, используемый SASL, слинкован с 3-й, то в резуль- го другого принципала, отличного от host/kdc.myrealm.ru, тате библиотека SASL будет неработоспособна. Грубо гово- лишь бы его ключ присутствовал в keytab-файле. Список ря, динамический загрузчик просто не разберётся, из какой- доступных механизмов определяется опцией -m, здесь мы именно библиотеки вызывать функцию, если она присутс- ограничиваемся только GSSAPI-механизмом. Затем на другом терминале запускаете клиентскую твует в обеих библиотеках. При конфигурации по умолчанию интересующих нас программ автоматически выбира- часть. В первую очередь получим супербилет (TGT) для ряется самая новая версия BerkleyDB, которую удалось найти дового пользователя (kinit mike) и от имени этого же польв системе. В то же время могут возникнуть проблемы сов- зователя запускаем клиента: местимости Cyrus-SASL и почтового сервера Postfix, кото./client -p 3001 -s host -m GSSAPI kdc.myrealm.ru рый не поддерживает 4 версию BDB. Поэтому следует ограничиться только третьей версией и на время сборки проreceiving capability list... recv: {6} GSSAPI грамм деинсталлировать BerkleyDB4 (если она присутствуGSSAPI ет у вас в системе), или, по крайней мере, удалить ее загоplease enter an authorization id: mike ... ловочные файлы. У меня все упомянутые выше програмsuccessful authentication мы были скомпилированы с BerkleyDB-3.3. closing connection
Взаимодействие с Kerberos через GSSAPI
Все ключи означают то же самое, что и в случае сервера; последняя опция – это имя компьютера, к которому производится подключение. В процессе программа клиент потребует ввести авторизационный идентификатор, т.е. имя пользователя, который должен быть аутентифицирован. Ввести нужно имя того принципала, для которого получен супербилет. После непродолжительного обмена закодированными сообшениями (в листинге они опущены) в обеих терминалах должно появиться сообщение об успешной аутентификации. Если же появилось сообщение об ошибке, следует проверить, записан ли ключ принципала-сервиса в keytab-файле и правильно ли происходит преобразование имени компьютера в его адрес и наоборот. Просмотр логов контроллера Kerberos (/var/log/krb5kdc.log) также поможет в поиске неисправностей.
После сборки и установки Cyrus-SASL можно проверить его работоспособность и взаимодействие с Kerberos с помощью тестовых программ client и server из папки cyrus-sasl-*/sample. Если они не скомпилировались вместе с библиотекой, то можно компилировать их и позже, выполнив make в папке sample. Разумеется, для проверки взаимодействия с Kerberos у вас должен быть настроен сектор Kerberos. Как это сделать, описано в статье [7]. Поскольку в данном случае я хочу продемонстрировать вам лишь принципы работы пакета Cyrus-SASL с Kerberos, будет достаточно, если ваш сектор Kerberos будет состоять только из одного компьютера. Это также на начальном этапе значительно упростит отладку. Так же, как и в статье [7], предполагаем, что сектор Kerberos называется MYREALM.RU, а машина, на кото- Проверка простых текстовых паролей рой мы разворачиваем «песочницу», является также кон- в Kerberos троллером Kerberos и называется kdc.myrealm.ru. Чтобы Теперь протестируем взаимодействие клиента и сервера при не подвергать систему риску в процессе экспериментов аутентификации с помощью простых текстовых паролей, но с Kerberos и почтой, желательно использовать фиктивный так, чтобы пароль пользователя всё равно проверялся по басетевой интерфейс: зам данных Kerberos. Этот механизм требует использования демона saslauthd, который должен попытаться получить су/sbin/ifconfig dummy0 192.168.10.1 netmask 255.255.255.0 up пербилет от KDC, используя имя и пароль пользователя. Если супербилет получен, то идентичность пользователя подecho ``192.168.10.1 kdc.myrealm.ru'' >> /etc/hosts hostname kdc.myrealm.ru тверждена. Следует понимать, что это не лучший способ использования Kerberos. Помимо риска перехвата паролей Будем также считать, что в Kerberos уже созданы (а в случае паролей Kerberos ставки очень высоки) сама пропринципалы, соответствующие машине host/kdc.myreal. цедура генерации TGT для каждого подключения к сетевым ru@MYREALM.RU и пользователю mike@MYREALM.RU, службам достаточно ресурсоемка. Разработчики Kerberos а ключ принципала host/kdc.myrealm.ru записан в keytab-файл и не рассчитывали на такой режим его работы, эта идея (/etc/krb5.keytab). целиком на совести разработчиков SASL. Заметьте также,
№10, октябрь 2006
41
безопасность
Теперь в ещё одном терминале запустим saslauthd:
В отличие от предыдущего случая вам требуется ввести не только свой идентификатор, но и пароль – разумеется, тот же самый, что и для команды kinit. Если всё же сервер вас не аутентифицировал, следует посмотреть на терминал, где запущен saslauthd, и проверить, есть ли там сообщения об ошибках. Если же там не появилось вообще никаких новых сообщений, то скорее всего сервер не может найти именованный сокет для соединения с saslauthd или права доступа к этому сокету слишком строгие.
/usr/sbin/saslauthd -a kerberos5 -d
Заключение
что saslauthd не имеет собственного принципала в Kerberos, а сам пытается выступать от лица пользователя. Перед запуском saslauthd нужно создать его рабочий каталог и выставить права доступа к нему. Как уже говорилось, эти права достаточно мягкие. chown -R root.kerberos /var/state/saslauthd/ chmod -R 755 /var/state/saslauthd/
На этом настройку SASL можно считать завершенной и можно приступать к подключению этой библиотеки к сетевым службам. Несмотря на простоту разработки и программирования, SASL используется не слишком широко. Главным образом это связано с довольно поздними появлением спецификации SASL (вторая половина 90-х), когда большинство популярных сетевых протоколов уже имело свой собственный механизм идентификации пользователей. Поэтому SASL используется либо в протоколах, где существовавшая на тот момент защита была признана недостаточной, либо в новых протоколах. К первой категории можно отнести протоколы электронной почты и LDAP. Поддержка SASL включена в такие популярные продукты, как Sendmail, Postfix, Cyrus-IMAP (настройка последних двух программ будет рассмотрена в следующей статье). Протокол мгновенного обмена сообщениями jabber [10] – это пример нового протокола, где SASL используется как на стороне сервера, так и поддерживается pwcheck_method:saslauthd некоторыми клиентами (например, tkabber [11] собранный mech_list:gssapi plain с библиотекой tcl SASL [12]). Интерес представляет также Нас в данном случае интересуют только два парамет- использование SASL для аутентификации пользователей ра – pwcheck_method и mech_list, а полный список пара- сервера баз данных MySQL. Хотя эта поддержка не вклюметров вы можете посмотреть в документации cyrus-sasl чена в основную ветку, но в Интернете можно найти патчи (doc/options.html). В этом конфигурационном файле ука- для 4 и 5 версий MySQL [13, 14]. Таким образом, соответствующая настройка библиотезано, что помимо механизма GSSAPI разрешено использовать также незашифрованные пароли (PLAIN) и их про- ки SASL позволяет интегрировать эти продукты в систему верка будет осуществляться агентом saslauthd. В конечном единой регистрации пользователей Kerberos. итоге выбор механизма аутентификации всегда остается за клиентом, сервер может только ограничить этот выбор, 1. Бешков А. Почтовая система для среднего и малого офиса. сообщив клиенту список поддерживаемых механизмов //Системный администратор, №5, 2003 г. – С. 46-54. (GSSAPI и PLAIN в данном случае). Понятно, что исключе- 2. Мозговой А. Smtp auth in da postfix + ... //Системный админисние из mech_list механизма plain равносильно запрету истратор, №10, 2003 г. – С. 26-28. пользования простых текстовых паролей для данного при- 3. Литвиненко Е. Настраиваем основные компоненты почтового ложения. Хотя в этом и есть свой резон, но пока в наши сервера. //Системный администратор, №9, 2005 г. – С. 48-51. планы это не входит. 4. Шергин Д. Ус тановка IMAP4 - сервера на базе CyrusТеперь перезапустим server. Команда практически та же imapd+Sendmail. //Системный Администратор, №10, 2003 г. – самая, что и использованная ранее, только без ключа -m. С. 10-15. В этом случае список механизмов будет взят из файла 5. http://www.gnu.org/software/gsasl. /usr/lib/sasl2/sample.conf. Но при новом запуске клиента мы 6. ftp://ftp.andrew.cmu.edu/pub/cyrus-mail. теперь должны указать механизм PLAIN: 7. Кондрин М. Развертываем Heimdal Kerberos. //Системный ад-
С помощью ключа -a выбирается метод аутентификации, а ключ -d нужен только для отладки, чтобы все сообщения от saslauthd выводились на терминал, а не в log-файл. Как минимум, результатом работы этой программы будет создание именованного сокета /var/state/saslauthd/mux. Следующим шагом нужно объяснить библиотеке SASL, что проверка паролей происходит опосредованно, через взаимодействие с saslauthd, причем эту настройку можно выполнить индивидуально для каждой из сетевых служб. При инициализации серверной части библиотеки SASL (функция sasl_server_init) один из параметров – это так называемое имя приложения. Оно может отличаться от настоящего имени исполняемого файла и используется библиотекой для поиска файла настроек в каталоге /usr/lib/sasl2. Тестовый сервер выступает под именем «sample», так что нам понадобится файл /usr/lib/sasl2/sample.conf такого вида:
./client -p 3001 -s host -m PLAIN kdc.myrealm.ru receiving capability list... recv: {6} GSSAPI PLAIN PLAIN please enter an authorization id: mike ... successful authentication closing connection
42
8. 9. 10. 11. 12. 13. 14.
министратор, №7, 2005 г. – С. 26-31. http://www.inner.net/opie. http://www.sleepycat.com/products/bdb.html. http://www.jabber.org/software/jabberd2x.shtml. http://tkabber.jabber.ru/en/. http://beepcore-tcl.sourceforge.net/tclsasl.html. http://rc.vintela.com/topics/labs/mysql. ftp://hppidc.hppi.troitsk.ru/mysql-sasl-patch.tgz.
безопасность
Защищаем корпоративную почту с SecExMail Gate
Cергей Яремчук Сегодня электронная почта – центральное звено в системе обмена информацией благодаря скорости доставки и простоте в использовании. Обеспечить защиту электронной переписки – задача любого администратора.
Н
е секрет, что электронную почту можно перехватить, – достаточно установить сниффер и затем спокойно читать всю проходящую информацию. Низкий уровень компьютерной грамотности некоторых пользователей только упрощает этот процесс. Можно, конечно, заставить пользователей самостоятельно зашифровывать перед отправкой всю корреспонденцию (большинство почтовых клиентов умеют делать это автоматически), но сразу же станет вопрос об управлении ключами. Кроме того, пользователь должен будет запоминать порядок отправки сообщений различным корреспондентам, возможность напутать здесь все-таки довольно велика. Всегда будет существовать вероятность то-
№10, октябрь 2006
го, что важная информация будет отправлена незашифрованной. В журнале уже рассматривался вариант построения защищенной почтовой системы на основе Tiger Envelopes [1], в SecExMail Gate применен аналогичный принцип.
Как работает SecExMail Gate SecExMail Gate – почтовый проксисервер, который подключается между почтовым клиентом и SMTP/POP3сервером, и в реальном времени шифрует все проходящие через него электронные сообщения, обеспечивая конфиденциальность корпоративной почты, передаваемой по незащищенным сетям. Для шифрования используют-
ся исключительно открытые стандарты. На рабочих местах никакого дополнительного программного обеспечения не требуется. При этом SecExMail Gate довольно легко интегрируется в существующую инфраструктуру. После установки сервера на компьютерах клиентов потребуется лишь задать новые параметры, указав в настройках в качестве SMTP/POP3-сервера SecExMail Gate. На самом же SecExMail Gate необходимо прописать данные корпоративного почтового сервера. Хотя в некоторых случаях, чтобы не бегать по этажам, наверное проще на место почтового сервера поставить SecExMail Gate, а старому серверу дать новый адрес (не забыв поменять настройки DNS). Пользо-
43
безопасность
Рисунок 1. Выбор размера ключа
Рисунок 2. Настройки параметров SMTP-шлюза
ватели не заметят этих перестановок и будут работать с почтой как обычно. Но внутри системы многое в работе почты изменилось. Ключ, введенный для конкретного корреспондента, заставит SecExMail Gate автоматически зашифровать сообщение, от пользователя никаких дополнительных указаний не потребуется. Но это еще не все. Анализируя заголовки сообщений, злоумышленник может всегда определить характер письма и тип MIME, все это может оказаться хорошим подспорьем для криптоаналитиков, которые попытаются раскодировать сообщение. Например, если один и тот же текст или файл будет передан разным корреспондентам, можно попытаться реализовать так называемую атаку по открытому тексту (PlainText Attack), когда по известному тексту вычисляется ключ. Поэтому SecExMail Gate шифрует тему сообщений и все заголовки, позволяющие установить характер передаваемой информации, поэтому криптоанализ перехваченного письма очень затруднен. SecExMail Gate использует алгоритм RSA с 2048, 4096 и 8192 ключами, хотя в корпоративной версии возможно использование размера ключей вплоть до 10240. Открытый ключ, ассоциированный с получателем, ис-
44
пользуется при генерировании сеан- ем SSL (Secure Socket Layer) или TLS сового одноразового ключа, который (Transport Layer Security). и используется при шифровании соНа сайте проекта можно загрузить общения. Два сообщения никогда не полнофункциональную версию прошифруются одинаковыми ключами. дукта, которая без регистрации буИндивидуальные сообщения кодиру- дет работать в течение 30 дней. Стоются с использованием 256-битного имость лицензии зависит от количесблочного шифра Twofish, совместно тва пользователей. Так SecEx Mail с 64-битным генератором случайных Corporate для 20 пользователей обойчисел ISAAC. дется в 949 $, а для 500 – 14995 $. При шифровании сообщение проДля работы сервера SecExMail Gate потребуется компьютер, работающий ходит несколько этапов: Полученное сообщение анали- под управлением Windows от 95 до XP, зируется, проверяется информа- имеющий 5,5 Мб свободного места на ция, записанная в SMTP-заголов- жестком диске. Системные требоваке письма и тело сообщения. Сер- ния которого напрямую зависят от ковер SecExMail Gate использует эту личества передаваемых и принимаинформацию для получения досту- емых сообщений. В качестве ориенпа к почтовому серверу и в случае тировки лучше посмотреть нагрузку положительного ответа продолжа- своего почтового сервера. ет дальнейшую обработку полученного сообщения. Установка и создание Сообщение, как правило, содер- ключей жит часть известной информации, Установка SecExMail Gate стандартна приветствие, визитная карточка от- для Windows, вы просто запускаете исправителя, поэтому во избежание полняемый файл и нажимаете «Next». возможности проведения PlainText На предпоследнем шаге, выбрав «Set Attack сообщение сжимается с ис- service to start boot», разрешите автопользованием алгоритма ZLIB. матический запуск сервера SecExMail Сжатый поток также имеет инфор- Gate при загрузке системы. После замацию, позволяющую криптоана- вершения установки первым делом литикам установить характер сооб- необходимо сгенерировать ключи. щения, поэтому первые 64 бита со- В меню «Пуск» выбираем «SecExMail общения дополнительно складыва- Gate» и «SecEx KeyGenerator», в поются (XOR) со случайным текстом явившемся окне персональные дан(One-Time Pads), обеспечивая его ные (имя и почтовый адрес), и на слеуникальность. дующем этапе размер ключа (рис. 1), Сжатая информация складывается внизу будет показано приблизительс 64-битным потоком случайных чи- ное время, необходимое для генерисел ISAAC. рования ключа выбранного размера. Полученный поток данных коди- Далее вводим пароль, и в следующем руется 256-битным Twofish, в нем окне несколько раз щелкаем мышкой используется режим chained block в любом месте белого поля, чтобы утиmode, в котором ключ, использу- лита сгенерировала случайное число. емый при шифровании текущего По окончании генерирования публичблока текста, зависит от предыду- ного и секретного ключей вас попросят ввести пароль, после чего созданный щего блока. Информация преобразуется в тип ключ появится во вкладке «Keys» окbase64 и передается MTA. на настройки сервера SecExMail Gate. Для создания SSL-сертификатов, подВ обычном режиме логин и па- тверждающих подлинность, испольроль передаются в открытом виде, зуется другая утилита Generate SSL что не препятствует их возможному Certificate Request, расположенная там перехвату. Что делать, если пользо- же. При создании своего сертификата ватель вынужден работать по неза- вам также придется ввести информащищенному каналу, например из до- цию об организации, которая испольма. В качестве дополнительных уров- зует сервер SecExMail Gate (название, ней защиты возможна работа по за- имя сервера, город, страна) и размер щищенному каналу с использовани- ключа. По окончании создания серти-
безопасность фиката будет выдано сообщение, в ко- рианта работы SecExMail Gate. Инатором указано имя файла ключа и сер- че сообщение дальше SecExMail Gate тификата (они сохраняются в каталог, не пройдет, почтовый сервер не смов который установлен сервер). Орга- жет зарегистрироваться, чтобы перенизации, купившие лицензию, могут дать или принять сообщение. После подписать в Bytefusion Ltd. созданный внесения изменений на вкладке насертификат, отослав файл по адресу жимаем «Apply» для записи изменеsupport@bytefusion.com. ний и перезапуска сервера. Теперь все готово для настройки Вкладка «Service» предназначесервера SecExMail Gate. на для управления работой сервиса SecExMail Gate. Здесь можно просмотреть статус работы, остановить и заНастройка и запуск Рисунок 3. Настройка параметров SecExMail Gate пустить сервер, включить журнализащищенного POP3-соединения Программа настройки SecExMail Gate рование событий и подключение клиСоответствие между пользовательпроста и понятна, зная все необходи- ентов. Для получения более подробмые для работы параметры, весь про- ной информации включите флажок скими почтовыми адресами и группацесс не займет более 5 минут. Для на- «Verbose». Журнал работы сервера со- ми задается во вкладке «Groups». Застройки SMTP-туннеля заходим в од- храняется в текстовый файл, просмот- писи, в которой имеют приблизительноименную вкладку и устанавливаем реть записанную в него информацию но такой вид: флажок «Enable SMTP Relay» (рис. 2). можно во вкладке «Events». Для кажinfo@test.com administrations Слева в области «E-Mail Client» изме- дого клиента в подкаталоге client-logs support@test.com administrations няем при необходимости номер пор- создается свой текстовый файл, в коsales@test.com sales fedja@test.com sales та для входящей почты (по умолча- торый заносятся все связанные с ним нию 25), а справа указываем порт, имя события. В имени файла использован Для удобства хранения и обраили IP-адрес почтового сервера, кото- IP-адрес, с которого зашел клиент, рому будут перенаправляться сообще- например 127_0_0_1.txt. Во вкладке ботки вся информация хранится ния после зашифровки. Теперь пере- «Clients Log» можно просмотреть все в «comma separated values» в файле groupkes.csv. После внесения изходим во вкладку «POP3», и аналогич- эти файлы. Д л я х ран е н и я к л юч е в ы х д ан - менений напрямую в файл необходиным образом настраиваем параметры транзита входящих сообщений. В на- ных в зависимости от назначения мо зайти в эту вкладку и нажать кнопстройках почтовых клиентов указыва- используются различные вкладки. ку «Re-read groups file», чтобы инфорем новые параметры, установив в ка- Так, во вкладке «Keys» прописывают- мация стала доступна SecExMail Gate. честве сервера приема передачи со- ся публичные и закрытые ключи, при- Для работы указанной схемы должны общений SecExMail Gate. надлежащие внутренним пользовате- быть созданы ключи, соответствуюЗащищенные с помощью SSL POP3 лям компании. Для создания нового щие адресам administrations@test.com и SMTP-соединения настраиваются ключа необходимо нажать «New key», и sales@test.com. И наконец публичные в других вкладках. Но в начале не- после чего появится знакомый SecEx ключи всех корреспондентов хранятся обходимо указать на файлы серти- KeyGenerator. Из этого же окна можно во вкладке «Friends». Для генерирования случайных чификатов и ключей, сгенерированных экспортировать или импортировать сел SecExMail Gate использует инфорранее с помощью утилиты Generate любой ключ. В SecExMail Gate предусмотрены мацию, взятую из системных процесSSL Certificate Request. Переходим во вкладку «SSL», в поле «SSL/TSL три вида ключей, что позволяет наибо- сов, файлов в системных и временных Tunables» выбираем параметры тун- лее оптимально распределять ключе- каталогах. Все возможные настройки доступны на вкладке «Entropy». неля (TSL v.1, SSL v.2 или 3), и мини- вую информацию: SecExMail Gate является простым мальный размер шифра (Min.Cipher Wildcard keys – представляют обBits). И, наконец, в «Certificate File» щий ключ без привязки к опреде- и в то же время весьма эффективным и «Private Key File» указываем созданленному почтовому адресу, то есть инструментом, позволяющим быстсообщение, зашифрованное с его ро наладить обмен зашифрованными ный сертификат и ключ. После чего помощью, может предназначаться почтовыми сообщениями. Для польпотребуется перезапустить сервер. Телюбому пользователю компании, зователей его применение будет проперь переходим во вкладку «SMTPS» почтовый адрес которого заранее зрачным, а удобство при работе с клюи прописываем параметры защищенчами заметно упрощает его админисне устанавливается. ного соединения, указав номер порта, отличный от используемого во вклад- Personal keys – этот ключ уже при- трирование. ках «SMTP» и «POP3» (по умолчанию вязан к определенному почтовому стоят стандартные 465 и 995). Учтите, адресу и предназначен для индиви- 1. Яремчук С. Защищенная почтовая система с Tiger Envelopes. //Системный адчто если основной почтовый сервер дуального обмена сообщениями. министратор, № 6, 2005 г. – C. 61-63. также использует защищенное соеди- Department keys – ключ ассоциинение, то для работы с ним возможно рован с отделом или группой поль- 2. Cайт By tefusion Ltd. – http://w w w. bytefusion.com. применение только защищенного вазователей.
№10, октябрь 2006
45
безопасность
Растущая угроза: руткиты Win32
Артем Баранов Для хакеров и вирусописателей во все времена был актуален вопрос, как сделать работающий код, файл на диске или раздел реестра невидимым для программ, работающих в системе. Решение этого вопроса пришло из мира UNIX и называется rootkit.
П
од руткитом понимается технология, используя которую, можно скрыть в системе что угодно, в том числе работающий процесс, файл на диске, раздел реестра. Применяя такую технологию, хакер может скрыть раздел в реестре, куда записался бэкдор или работающий клиентский модуль трояна. С появлением такой технологии в Windows у администраторов начались головные боли. Вы сможете гораздо эффективнее ре-
46
шить проблему, если будете понимать, как устроены руткиты, для чего они нужны, с помощью чего можно их удалять и как это делать вручную. В статье рассмотрены руткиты для Windows NT 5 (Windows 2000, 2003 Server, XP). В Windows существует два вида руткитов, различных в схеме работы и устройстве. Первые, руткиты пользовательского режима, функционируют на третьем кольце х86. Вторые, руткиты режима ядра, функциониру-
ют на нулевом кольце или на уровне ядра NT.
Руткиты пользовательского режима Руткиты пользовательского режима легче в реализации, чем руткиты режима ядра. Первые в свою очередь можно разбить на две группы. К одной относятся руткиты, которые являются троянскими программами и заменяют
безопасность настоящие приложения. Например, если для отображения процессов используется tlist.exe из Resource Kit, то можно написать свою tlist.exe, например с использованием Psapi или библиотеки Tool Help, скрывающую имя конкретного процесса и подменить ею настоящую tlist.exe. Недостаток такого подхода очевиден. Кому захочется заново написать диспетчер задач Windows для скрытия определенного процесса. Второй тип руткитов 3-го кольца отличается от первого техникой реализации. Руткиты, относящиеся ко второму типу, используют общий принцип функционирования, именуемый перехватом API-вызовов. Он был описан Дж. Рихтером в его монографии «Windows для профессионалов» и М. Питреком «Секреты системного программирования в Windows 95». Этот тип также может быть разбит на два. К первому следует отнести руткиты, перехватывающие вызовы DLL подсистемы окружения Win32 (Kernel32, Advapi32, User32, Gdi32). Ко второму типу относятся руткиты, перехватывающие недокументированные «родные» API (Native API) Этапы обработки API в Win32 и места внедрения руткитов в Ntdll.dll. Напрашивается вопрос, зачем перехватывать недокументиро- керы уже давно дизассемблировали По сути, руткиты режима ядра предванные API, если можно перехватить код Kernel32.dll и Ntdll.dll и опубликова- ставляют собой драйверы, загружен«обычные». Дело в том, что некоторые ли свои соображения на этот счет. Во- ные в период работы Windows. Мехастандартные программы Microsoft, на- вторых, перехват API-вызовов на уров- низм перехвата API-вызовов на уровне пример диспетчер задач (task manager), не Ntdll.dll дает некоторые существен- ядра впервые был предложен М. Русдля получения статистики используют ные преимущества. Дело в том, что все синовичем и Б. Когсвелом, авторами не обычные API, а недокументирован- библиотеки, получающие информацию sysinternals.com. Он базируется на подные. Тот же диспетчер задач использу- о процессах, типа Psapi, обращаются мене адресов в таблице диспетчеризает для получения списка процессов не в конечном счете к одной точке входа ции системных сервисов на свои обрачто-то вроде Psapi, а функцию NtQuery в Ntdll.dll, которая предоставляет неис- ботчики, например, на адреса функций SystemInformation, которая хоть и доку- черпаемую системную информацию – драйвера. Перед тем, как менять адреса, руткит сохраняет настоящие адрементирована в последних SDK, но да- NtQuerySystemInformation. са системных сервисов в своем буфелеко не полностью. Изучая лишь SDK ре. Когда ядро обрабатывает системпо этой функции, можно долго недо- Руткиты режима ядра умевать, как диспетчер задач получает Руткиты режима ядра, как уже упо- ный сервис, это приводит к активас помощью нее информацию о процес- миналось, функционируют на уровне ции не настоящей функции, а троянссах. Полное описание этой функции ядра NT и более сложны в реализа- кой (т.е. функции драйвера), та в свою вы можете увидеть в книге Г. Неббе- ции. В их основу положен тот же ме- очередь вызывает настоящий сервис та «Справочник по базовым функциям ханизм перехвата API-вызовов, но уже по сохраненному адресу и фильтрует API Windows NT/2000». Очевидный не- на уровне ядра. С использованием та- результат. Основное преимущество тадостаток такого руткита заключается в ких руткитов можно модифицировать ких руткитов в том, что они независитом, что он реализован с использова- как само ядро, так и объекты ядра. Учи- мы от процессов, а точнее от их виртунием структур, которые могут быть из- тывая, что устройство объектов ядра альных адресных пространств. Теперь менены в следующей версии Windows. является полностью недокументиро- о недостатках руткитов режима ядра. По вышесказанному следует сделать ванным, можно смело сказать, что да- Как известно, разработка кода режинесколько замечаний. Во-первых, рут- леко не каждый профессионал в Win32 ма ядра сама по себе довольно сложкиты для Windows распространяют- может разработать такой руткит. Хоро- на и налагает определенные огранися очень быстро. Поэтому говорить о шей отправной точкой в этом послужит чения. Одна малейшая ошибка в котом, что что-то является недокумен- книга С. Шрайбера «Недокументиро- де, например появление жучка или нетированным, бессмысленно, т. к. ха- ванные возможности Windows 2000». обработанного исключения, повлечет
№10, октябрь 2006
47
безопасность крах всей системы. Кроме того, раз- виса в Win32. Изображен поток, пи- мы. Кроме того, эта история имела пеработка такого руткита очень сложна, шущий данные в файл, и два руткита: чальные последствия. Как известно, требует понимания устройства и рабо- 3-го и 0-го кольца. Также изображены после появления руткита Sony в Интервозможные точки проникновения рут- нет был выпущен backdoor, используюты самой системы. Хотя руткиты пользовательского китов. Что касается руткита пользова- щий этот руткит для сокрытия своего режима могут воздействовать только тельского режима, то он может внед- кода на диске. В скандале вокруг Sony на процесс, для которого они предна- ряться тремя способами: BMG участвовал Руссинович, который значены, существуют методы, позво- 1. Внедрение в работающий процесс указал, что Symantec и Kaspersky Lаb путем модификации таблицы им- используют в своих продуктах техноляющие руткиту работать «глобально». Например, руткит может порапорта в образе EXE-файла. Так пе- логии, близкие к rootkit. Например, анжать вновь создаваемые процессы. рехватываются вызовы DLL, кото- тивирус Касперского использует техКак только система создаст новый прорые связаны неявно с EXE-фай- нологию iStreams. Технология позвоцесс, руткит сможет узнать об этом, ислом. ляет уменьшить время сканирования пользуя системный сервис для пере- 2. Модификация первых слов пере- за счет создания в файлах на NTFS-точисления процессов. Затем руткиту хватываемой функции на инструк- мах дополнительных потоков для хранужно остановить все потоки в новом цию jmp, в DLL подсистемы Win32. нения контрольных сумм. Так как эта процессе и попытаться модифицироЕсли DLL связывается с процессом информация важна для работы антивиявно (в периоде выполнения). вать таблицу импорта или переписать руса, он скрывает эти потоки, что очень первые байты перехватываемой функ- 3. Модификация первых слов пере- похоже на rootkit-технологию. Руткиты, по сути, являются растуции. Другой способ заключается в слехватываемой функции на инструкдующем. В реестре существует раздел цию jmp в Ntdll.dll. Аналогично вто- щей угрозой, т. к. количество их неукHKEY_LOCAL_MACHINE\SOFTWARE\ рому. лонно растет. Хакеры и вирусописаMicrosoft\Windows NT\CurrentVersion\ тели используют их для скрытия коWindows с параметром AppInit_DLLs. Руткит 0-го кольца внедряется пу- да и файлов в системе. АдминистраСистема автоматически загружает тем перезаписи адреса в таблице дис- торы должны своевременно их обнаDLL, указанные в этом параметре. петчеризации системных сервисов. руживать. Руткиты режима ядра не являютПомимо перехвата API-вызовов Если в системе предположительно ся «полноценными» драйверами ус- можно использовать стандартные воз- живет руткит пользовательского ретройств, т.к. никакими устройствами можности режима ядра, которые при- жима, скрывающий что-либо, то можони не управляют. Но все же драйвера- меняют антивирусы. Например, драй- но написать программу, получающую ми называться могут. Об этом говорят вер фильтра файловой системы, поз- информацию аналогично той, котоРуссинович и Соломон в книге «Inside воляющий просматривать обращения рую скрывает инфицированная рутWindows NT», что драйверы пишут не к файловой системе и модифициро- китом программа, и сравнить резульдля управления устройствами, а толь- вать их. В Windows XP появилась воз- таты, полученные ими. Если руткит ко для внедрения кода, функциониру- можность регистрировать функции сидит на уровне ядра, то можно восющего в режиме ядра. Аналогичный драйвера у диспетчера конфигурации пользоваться средством, разработанподход использует программа Русси- для перехвата сервисов реестра и их ным Руссиновичем, – RootkitRevealer для удаления руткита. Скачать можно новича Regmon (Registry Monitor), кото- возможной модификации. В Windows процесс должен иметь с www.sysinternals.com. рая отображает обращения к системРесурсов и книг, посвященных теме ному реестру. Она запускает драйвер права на загрузку драйвера в систему. во время своего выполнения, тот по- То есть процесс должен иметь в марке- руткитов немного. Вообще же эта тема лучает доступ к таблице диспетчери- ре доступа активированную привиле- охватывает многие аспекты системнозации системных сервисов и модифи- гию SeLoadDriver или иметь право ее го программирования для Win32. На сецирует ее на свои обработчики. Затем, активировать в маркере доступа. годняшний день существует единственВладея технологией rootkits, адми- ная книга, пока не выпущенная на рускогда какой-то процесс вызывает сервис реестра, управление получает ус- нистратор может, используя специаль- ском языке – Hoglund, Butler «Rootkits. тановленная ловушка, которая в свою ное ПО, своевременно выявлять рут- Subverting the Windows Kernel». Сущесточередь вызывает настоящий сервис киты и удалять их из системы, а так- вует также ресурс, посвященный рутреестра, запоминает возвращенные же использовать их в мирных целях, китам – www.rootkit.com. На нем размеданные в буфере, а затем приложе- скрывая необходимые данные от поль- щено достаточно информации о рутние забирает их по IOCTL и выводит. зователей. Хотя использование rootkit- китах, в том числе выложен исходный (Подробности см. в книге Руссинови- технологий – это палка о двух концах. код некоторых из них. Также там можча, Соломона «Внутреннее устройс- Еще не утихли страсти вокруг сканда- но найти наиболее функциональный тво Microsoft Windows: Windows XP, ла с Sony BMG, которая использова- на сегодняшний день руткит – Hacker Windows 2003 Server, Windows XP».) ла свой руткит в мирных целях, скры- Defender. И конечно, всем известный Чтобы наглядно представить се- вая свои программные DRM-компонен- сайт по продвинутому системному ПО бе вышеприведенную информацию, ты. Но руткит Sony способствует очень для Windows – www.sysinternals.com, на рис. 1 показаны этапы диспетче- частому появлению BSOD (Blue Screen где Руссинович рассматривает техноризации (обработки) системного сер- Of Death) и замедлению работы систе- логию руткитов.
48
bugtraq Межсайтовый скриптинг и раскрытие данных в Webmin/Usermin
Обход аутентификации в Citrix Access Gateway
Программа: Webmin, версии до 1.296; Usermin, версии Программа: Citrix Access Gateway 4.2. до 1.226. Опасность: Высокая. Опасность: Средняя. Описание: Уязвимость существует из-за неизвестной Описание: 1. Уязвимость существует из-за недостаточной ошибки при обработке LDAP-аутентификации при вклюобработки входных данных в URL. Удаленный пользователь ченной опции Advanced Access Control (AAC). Удаленный может с помощью специально сформированного запроса пользователь может обойти процесс аутентификации и повыполнить произвольный код сценария в браузере жертвы лучить доступ к системе. в контексте безопасности уязвимого сайта. URL производителя: http://www.citrix.com. 2. Уязвимость существует из-за недостаточной обработ- Решение: Установите исправление с сайта производитеки входных данных в URL. Удаленный пользователь может с ля. помощью специально сформированного запроса просмотреть исходный код CGI- и Perl-сценариев на системе. Множественные уязвимости в gzip URL производителя: http://www.webmin.com. Программа: gzip 1.3.5, возможно, более ранние версии. Решение: Установите исправление с сайта производите- Опасность: Средняя. Описание: 1. Уязвимость существует из-за ошибки разыля. менования нулевого указателя в функции huft_build(). Удаленный пользователь может с помощью специально сфорМежсайтовый скриптинг в RssReader Программа: RssReader 1.0.88.0, возможно более ранние мированного архива вызвать отказ в обслуживании приверсии. ложения. Опасность: Средняя. 2. Уязвимость существует из-за ошибки индекса массиОписание: Уязвимость позволяет удаленному пользова- ва в функции make_table в файле unlzh.c при обработке LZHтелю произвести XSS-нападение. Уязвимость существует архивов. Удаленный пользователь может с помощью специиз-за недостаточной проверки данных при обработке Atom- ально сформированного архива вызвать переполнение буи RSS-каналов. Удаленный пользователь может с помощью фера и выполнить произвольный код на целевой системе. специально сформированного Atom-канала выполнить про3. Переполнение буфера существует в функции build_tree в файле unpack.c. Удаленный пользователь моизвольный код сценария в приложении. URL производителя: http://www.rssreader.com. жет с помощью специально сформированной таблицы заРешение: В настоящее время способов устранения уязви- писать отрицательное значение индекса и выполнить промости не существует. извольный код на целевой системе. 4. Переполнение буфера обнаружено в функции make_table в компоненте LHZ. Удаленный пользователь Переполнение буфера может создать специально сформированную таблицу дев TFTP Server TFTPDWIN Программа: TFTP Server TFTPDWIN 0.4.2, возможно, бо- кодирования архива и выполнить произвольный код на целее ранние версии. левой системе. Опасность: Средняя. 5. Уязвимость существует в файле unlzh.c в компоненте Описание: Уязвимость существует из-за ошибки проверки LHZ. Злоумышленник может с помощью специально сфорграниц данных в файле tftpd.exe во время обработки запро- мированного архива вызвать зацикливание приложения шенных ресурсов. Удаленный пользователь может запро- и потребить все доступные ресурсы на системе. сить ресурс длиной более 280 байт, вызвать переполнение URL производителя: http://www.gzip.org. стека и выполнить произвольный код на целевой системе. Решение: Установите исправленную версию от произвоURL производителя: http://www.prosysinfo.com.pl/tftpserver. дителя. Решение: В настоящее время способов устранения уязвимости не существует. Переполнение буфера в avast! Программа: avast! 4.7.869 for desktops, avast! 4.7.660 for servers. Переполнение буфера в WS_FTP LE Программа: WS_FTP LE 5.08, возможно, более ранние Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверверсии. Опасность: Средняя. ки границ данных при обработке LHA-архивов. Удаленный Описание: Уязвимость существует из-за ошибки провер- пользователь может с помощью специально сформированки входных данных при обработке ответов команды PASV. ного LHA-архива вызвать переполнение динамической паЗлоумышленник может обманом заставить пользователя мяти и выполнить произвольный код на целевой системе. подключиться к злонамеренному серверу и выполнить про- URL производителя: http://www.avast.com. Решение: Установите исправленную версию с сайта произвольный код на системе пользователя. URL производителя: http://www.ipswitch.com. изводителя. Решение: В настоящее время способов устранения уязвиСоставил Александр Антипов мости не существует.
№10, октябрь 2006
49
безопасность
Защитить ваш компьютер поможет Browser Sentinel
Cергей Яремчук Все больше специалистов сходятся во мнении, что антивирусные программы – это, скорее, инструмент управления антивирусным риском, чем решение, предназначенное для защиты.
К
сожалению, методы обнаруже- с Browser Sentinel [2] разработки UnH ния, основанные на знаниях, Solutions. не всегда справляются со своими обязанностями. В случае появле- Назначение Browser ния нового вируса, либо неизвестной Sentinel реализации атаки, они уже не в состо- Программа предназначена для наблюянии защитить систему. В большинс- дения за уязвимыми зонами компьютве случаев вирус или другую вредную тера, которые часто подвергаются напрограмму можно обнаружить, контро- падениям со стороны различного типа лируя уязвимые элементы операци- вредоносных программ, предоставляя онной системы и целостность систем- пользователю полный контроль над ниных файлов. Вероятно, поэтому сегод- ми. А таких чувствительных к зараженя активно продвигаются такие реше- нию зон в системе не мало. Здесь плания, не требующие каждодневного об- гины Browser Helper Object и различновления баз и позволяющие с доста- ные элементы Internet Explorer, элеточно большой вероятностью обнару- менты автозапуска программы, служжить вирусы, которые не зарегистри- бы, драйверы, модули, расширения рованы в сигнатурных базах. В жур- оболочки, протоколы, файл hosts, поснале уже рассказывалось о некото- тавщики многоуровневых услуг и прорых из них [1], сегодня познакомимся чее. То есть все, что может быть исполь-
50
зовано вредоносной программой, чтобы обеспечить себе дальнейшую жизнедеятельность. В случае возникновения подозрительной активности пользователь будет оповещен. И при необходимости любой элемент может быть остановлен или удален. Кроме этого, есть возможность произвести детальный анализ всех запущенных процессов, программ, элементов управления ActiveX, драйверов и других модулей, с выдачей подробной информации и созданием разнообразных отчетов. Для удобства Browser Sentinel содержит небольшую встроенную базу данных по элементам, которые поставляются вместе с Windows и являются ее частью, и не более. Пользователь для упрощения анализа ситуации может убрать все известные программе компо-
безопасность ненты, чтобы они не мешали. Хотя пос- Работа с Browser Sentinel ле обновления системы или установки Установка Browser Sentinel стандартна некоторых драйверов системные про- для Windows, в процессе можно будет граммы могут попасть в категорию не- выбрать один из режимов: известных, поэтому до конца полагать- профессионала – под наблюдением ся на выводимую информацию по сиснаходятся все зоны, каждый новый элемент требует подтверждения; темным элементам не стоит. Так как программа не использует новичка – не наблюдаются следуюникаких других баз, и ее действия нощие зоны: службы, драйвера, просят скорее информационный характер, токолы, LPS и файл hosts. Изменето всё решение о легитимности той или ния в загруженных модулях и моиной программы лежит на пользоватедулях автозапуска принимаются автоматически. В дальнейшем реле. Поэтому разработчики ориентируют свой продукт именно на подготовжим работы можно сменить. Также следует помнить, что все сторонние ленного пользователя, который сможет программы, имевшиеся на компьюразобраться в многочисленных вопросах, задаваемых этой программой тере на момент установки Browser в процессе работы. Иначе в случае неSentinel, принимаются автоматиправильного редактирования параметчески (рис. 2). Рекомендуется проров возможна блокировка системы, что смотреть все вкладки и убедиться, в некоторых случаях исправить можно что все элементы безопасны. только полной ее переустановкой. Актуальной на момент написания По щелчку на изображении щистатьи являлась версия 2.1.1. Browser та в системной панели появляетSentinel работает на компьютерах с ус- ся главное окно программы (рис. 1). тановленной Windows 98/ME/2000/XP/ Для удобства охраняемые зоны подеServer 2003. Имеет русский и английс- лены на две группы. Первая контроликий интерфейсы. рует все, что связано с Internet Explorer. Именно к настройкам этой зоны допущен пользователь в режиме, преднаЛицензия Программа распространяется как значенном для новичка, так в случае Shareware, при этом пользователю ошибки максимум, что придется сдепредоставляется для тестирования лать, это переустановить приложение. на 30 дней полноценная версия про- Вторая зона защищает систему. Все граммы. Стоимость регистрации 350 настройки в эту зону должны вноситьруб. Если почитать лицензию, то узна- ся с большой осторожностью. Выбрав ем, что можно использовать зарегис- элемент, можно просмотреть подробтрированную версию на всех компью- ную информацию о нем: имя, описатерах, которыми владеет купивший ее ние, файл, версия, размер, контрольная пользователь. сумма (MD5, CRC32), время создания,
Рисунок 1. Главное окно программы
№10, октябрь 2006
Рисунок 2. Сообщение, появляющееся после установки Browser Sentinel
кто и когда запустил, ключ реестра, статус и некоторые другие параметры. Для каждого такого элемента можно выполнить два действия: выключить и удалить. В любом случае перед удалением желательно вначале отключать, в этом случае запись переносится во временное хранилище, из которого ее всегда можно будет восстановить. Если система и программы после этого работают нормально, то затем этот элемент можно смело удалять. В этом случае стирается вся информация, без возможности восстановления. Некоторые программы могут генерировать большое количество событий, которые могут отвлекать. Для удобства некоторые программы, имеющие меньшую вероятность стать источником неприятностей, можно занести в доверенную зону. После этого Browser Sentinel не будет показывать предупреждения для таких элементов. И наоборот, действия отдельных приложений всегда требуют отрицательного ответа и удаления нового элемента. Для удобства их можно занести в список запрещенных, и операция удаления или отключения будет производиться автоматически без выдачи предупредительного сообщения. Информация поражается не вирусом, а выполненным им действием. Поэтому, отслеживая потенциально опасные точки системы, можно с большой долей вероятности обнаружить любую программу, которая тайком пытается запуститься на компьютере. Утилиты вроде Browser Sentinel, несмотря на кажущуюся простоту, позволяют остановить большую часть таких вредоносных программ и тем самым защитить компьютер от неизвестных вирусов и других malware. 1. Яремчук С. Проактивные системы защиты, или Есть ли жизнь без антивируса?//Системный администратор, №7, 2005 г. – C. 9-13. 2. Cайт проекта – http://browsersentinel. com/ru.
51
человек номера
Головоломка, ведущая по жизни Игоря Данилова
Виртуальное путешествие по Петербургу и биографии легендарного создателя антивируса Dr.Web.
К
ак и многие москвичи, я люблю ставка, я не могу отделаться от ощу- Летний сад Питер. Как и многие москвичи, щения, что где-то за дверью – Невский Вы, конечно, помните, строки Анны я считаю его мистическим горо- проспект, Эрмитаж, стрелка Васильев- Ахматовой: дом. Как и многие москвичи, я радуюсь, ского острова. И чего сидеть в четырех Я к розам хочу, в тот единственный сад, когда встречаю петербуржца. Почему? стенах – лучше пойти погулять. Только Где лучшая в мире стоит из оград, Трудно объяснить. Как любой здра- тогда и беседы не получится, нас пог- Где статуи помнят меня молодой, А я их под невскою помню водой. вомыслящий житель города на Неве, лотит блеск града Петрова… Игорь Данилов, легендарный Dr. Web, Но я п о с л у ш н о во з в ращ аю с ь Какой турист не хочет «посетить» на мои восторги улыбнулся. «Мы все на землю, в Москву, и задаю Иговремя живем в этом городе, конеч- рю свои вопросы. Однако надеюсь, Летний сад, на статуи полюбоваться? но, не всегда видим эту красоту… Вот, что мой собеседник простит мне та- Но какое слово ужасное – «посетить», гости недавно приезжали, с ними вы- кую вольность и позволит совершить бр-р-р… В один из первых своих визибрались, погуляли». Конечно, он прав. с ним виртуальную прогулку по Пе- тов в Петербург я специально ждала моНо почему-то все время, пока мы раз- тербургу. Прогулку с человеком, кото- мента, когда экскурсии закончатся, наговариваем, несмотря на то, что бесе- рый родился и вырос в Северной сто- ступит вечер, благо ночи были белые, да происходит в самом сердце Мос- лице и потому ассоциируется у меня и пошла в одиночку искать заветный сад. Увы, в ту ночь он не пожелал впустить квы и вокруг шумит столичная IT-вы- именно с ней.
52
человек номера меня за «лучшую в мире ограду», хотя я усердно искала и спрашивала прохожих. Мы встретились через много лет… Эта история, рассказанная Игорю Данилову, вызвала у него удивление: «Вы спрашивали? И вам не помогли? Обычно у нас бабушки не только подскажут, где, но и проводят, покажут». Летний сад… У него удивительная судьба! Созданный по велению Петра Первого в 1704 году лучшими мастерами садово-паркового искусства, при жизни императора он был блестящей парадной резиденцией. При Анне Иоанновне превратился в звериный заСлева направо: ведущая рубрики Оксана Родионова, «Доктор Веб» Игорь Данилов, гон. В XIX веке это уже городской сад Марина Хромова – PR-менеджер компании «для прилично одетой публики». После революции – музей. Сразу после Ленин- да Безымянным ериком, но в связи им видом виновато показывая: «Я вам градской блокады школьники и учителя с устройством в саду фонтанов, пе- не помешаю, только не гоните…» Дети Игоря Данилова к высоким выращивали здесь овощи… И всегда – реименованная. Помню, зайдя как-то по делу в один из офисов, располо- технологиям не приобщились. Если любимое место для отдыха. Не подумайте, что я собираюсь женных на Фонтанке, я по-хорошему у самого Игоря явно сработали гены – сравнивать судьбы сада и человека. позавидовала сидящим там людям – мама и сейчас работает учителем маНо все же параллель напрашивается смотришь в окошко на воду, на мос- тематики в одной из петербургских сама собой. Летний сад всегда остает- ты, на Фонтанный дом на другом бе- школ, – то любовь к точным наукам сыся самим собой, каким бы не было его регу… Веселее как-то работать, по- ну и дочери не передалась. Хотя жена название и облик. Игорь Данилов всег- моему. «Да ведь вода, – скажите вы, – Игоря, тоже, между прочим, матемада оставался самим собой, пробуя се- наверняка грязная. Что тут весело- тик. Сын Иннокентий учится в универбя в разных профессиях и ипостасях. го?». Грязная. И дома вдоль набереж- ситете на биологическом факультете, После школы он твердо знал, где хо- ной обшарпанные, в копоти иногда. дочь Ольга перешла в 11-й класс и точет учиться дальше. Собрал чемодан, Что делать? Это не портит Петербург, же не собирается идти по родительсел в поезд и уехал в Волгоград, в Ка- на мой взгляд. Правда, Игорь Данилов ским стопам. Да и невозможно было чинское высшее военное авиацион- со мной не согласен: «Мне неприятно. передать, считает Игорь. Заложенное ное училище летчиков. Родители это- Я очень переживаю, особенно в начале природой нельзя изменить, сколько му выбору не препятствовали. А поче- зимы, когда вся эта грязь видна, у ме- не пытайся. «Воспитание большой рому именно в летное? Игорь не роман- ня депрессивное настроение. Хочет- ли не играет. Оно, конечно, имеет огтик, но считает, что так распорядились ся, чтобы было как в Хельсинки, Сток- ромное значение, но не решающее». высшие силы – Бог, Судьба… В конце гольме. Белый город, без грязи, без со- Еще одно убеждение Игоря Данилоконцов он закончил Ленинградский ин- ли. У нас, к сожалению, этого не умеют, ва – преподавателем в школе должен ститут авиационного приборостроения не хотят. К 300-летию отремонтирова- быть обязательно мужчина, «потому (ныне Санкт-Петербургский государс- ли хотя бы центр. Я тут вышел на набе- что он может научить детей логичественный университет аэрокосмическо- режную и удивился: ничего себе, ока- ки мыслить, дать основы мышления». Взгляд консервативный, но вполне го приборостроения), стал инженером- зывается, вот что у нас есть». Но вернемся к Фонтанному дому. объяснимый. И мне близкий. Уж слишрадиотехником. И это тоже судьба так решила. А уж приобщение к сфере IT Удивительное место. Снаружи это дво- ком женственны нынче мужчины и мубыло явно судьбоносным. «Появились рец, шедевр русского барокко. А внут- жественны женщины… Я спросила Игоря Данилова, как отперсональные компьютеры, некому бы- ри еще интереснее. В музее Анны Ахло на них работать. Я как-то случайно матовой есть мемориальная часть, воз- носятся к его популярности сын и дочь. попал за компьютер, и меня захватило вращающая квартире Пуниных – Ахма- Он спокойно ответил: «У меня такие же эта сфера деятельности», – объясняет товой облик 1920-1940-х годов, и лите- проблемы с детьми, как у всех, это ниДанилов. Однако Игорь Данилов, раз- ратурно-историческая. Они нисколько коим образом не влияет на мои взаирабатывающий антивирус, и школьник не мешают друг другу. А уже если экс- моотношения с ними». Однако борцу Игорь, выбирающий профессию, – один курсовод попадется хороший, хожде- с антивирусами приятно, что его дети и тот же человек. Любитель математи- ние по ахматовскому музею превраща- учились по учебникам, в которых напики, кроссвордов, головоломок, логики. ется в праздник. Мне повезло попасть сано про их папу, Доктора Веба. в Фонтанный дом вместе с группой школьников. Их вел учитель, историк, Мойка Фонтанка Около Летнего сада из Невы вытека- и так его было интересно слушать, что О будущем информационных технолоет Фонтанка, речка, бывшая неког- я присоединилась к ребятам, всем сво- гий у Игоря Данилова довольно мрач-
№10, октябрь 2006
53
человек номера
Вокруг шумит столичная IT-выставка
ное представление: «Черное. Термина- кой и закуской на газетке. Картина сатор 4». Говорит он серьезно или шутит, мая мирная, но совершенно не соотпонять невозможно. Кажется, не шу- ветствующая моему пушкинскому натит, объясняет: «Уровень настолько строению… В другой раз я была на экнизкий стал, количество ошибок, ко- скурсии по этой последней квартире личество дыр, высокая степень уяз- Александра Сергеевича. Экскурсовод вимости настолько впечатляют, что уже довела нас до кабинета, где Пушпонимаешь: чем дальше, тем хуже бу- кин умирал, где произнес последние дет. Пока компьютер был калькулято- слова: «Жизнь кончена. Теснит дыхаром, все было нормально, как только ние…». И вдруг в открытые окна ворему стали доверять серьезные процес- вался зычный голос: «Прогулка по Несы, от которых зависит жизнь челове- ве, по каналам, цены умеренные…». ка, все изменилось». «Но можно как- За точность данной цитаты не ручаюсь, то повлиять на ситуацию?» – спраши- что-то коммерческое, в общем. Таков Петербург. Любите его таваю. – «Остановить прогресс. Пересесть на лошадь». – «И вы бы согла- ким и не считайте, что он над вами изсились?» – «Я бы с удовольствием со- девается… Кстати, возможно, во время интергласился». – «А чем бы вы занимались, если не информационными технологи- вью я обидела Игоря Данилова. Честями?» – «Землю бы копал. Картошку ное слово, не хотела. Просто предпобы сажал». Наверное, это мудрость. ложила, что создавать вирусы – боА вернее, привычка ожидать от нашей лее творческое занятие, чем антивироссийской действительности любого русы. Быть хакером, рисковать, приповорота. Понятно одно – Игорь Дани- думывать ловушки… Но Игорь остулов не пропадет, если отключат свет, дил мой романтический пыл: «Хакер – газ и воду. Построит дом (это он умеет, это не гений, журналисты сделали хав студенческие годы приходилось), по- керов гениями. Там все тривиально». селит там семью и будет добывать каж- «Неужели вирус создать легче, чем андый день кусок хлеба в поте лица. тивирус?», – робко удивилась я. «Есть Только не подумайте, что я ирони- сложные вирусы, по которым видно, зирую. Я просто опять вспомнила один что их создал серьезный специалист, из своих визитов в Санкт-Петербург. но их единицы. Основной поток сделан Я шла к дому Пушкина на Мойке. Не- бездарями, то есть людьми, которые слась, как на свидание с поэтом. А пе- просто берут чужие исходные тексты, ред самым музеем на набережной Мой- сами пишут элементарные вещи. А хоки, 12, притормозила. Было лето, на фа- роший антивирус создать – достаточсад дома наводили глянец. Конец рабо- но сложная задача. Хороших антивичего дня, и у самого подъезда располо- русов не так много. И бороться не тольжились трое рабочих с початой бутыл- ко с этим данным вирусом, но и с теми,
54
которые появятся завтра, послезавтра, наверное, более интересная задача. Мне так кажется». – «Получается вы угадываете мысли тех, кто создает вирусы?» – «Пытаемся». Тут я в последний раз попыталась перевести нашу беседу в романтическое русло: «Почему вы создаете антивирусные программы? Не ощущаете себя рыцарем, который спасает человечество?». Но моя идея потерпела крах: «Нет, все гораздо прозаичнее. В конце 80-х годов, когда появились вирусы, мы работали в «ящике», в НИИ, и просто-напросто с этими вирусами надо было как-то бороться, потому что существующие антивирусы не всегда помогали. Мне это стало интересно. Покопался, увидел вирус, один, второй, понял, как можно сделать защиту от следующего вируса. Поначалу это было хобби – находить вирусы и обезвреживать. Потихоньку стал делать программы, которые позволяют защищать от будущих модификаций этих вирусов. Меня привлекла головоломка, которую надо было решить». Вот она, головоломка, логическая задача, которая, похоже, ведет по жизни Игоря Данилова. Заниматься любимым делом, да еще получать за э то материальные блага и заслуженную славу, – согласитесь, счастливая судьба для любого профессионала. И будущее такому человеку видится вполне четко и ясно: «Мы пытаемся делать хорошую технологию. Чтобы продукты, которые мы производим, были технологически совершенны, и наши пользователи могли бы защищаться от вирусов». И пусть не всем пользователям антивирусов семейства Dr.Web дано постичь, каким именно образом их защищают – имеет ли это значение? Игорь рассказал трогательную историю: «Дедушка моей жены уже был стареньким и перед смертью все спрашивал: «Как там Игорь? Все на калькутере?» «Да, на калькутере…». Мне нравится, когда в Петербурге солнечно. Обычно я попадаю туда в дождь и туман. А солнце делает его ослепительно европейским городом. И словно усмешка прячется в уголках губ. Он всегда готов подшутить над гостями...
текст: Оксана Родионова фото: Владимир Лукин
IMHO
Как зарабатывают на Open Source
Крис Касперски Ожесточенная конкуренция между программистами заставляет не только совершенствовать качество кода, но также искать новые, более эффективные бизнес-схемы, использующие все доступные средства, в том числе и концепцию открытых исходных текстов, уверенно противостоящую компаниям-гигантам.
П
рактически на любом программистском форуме можно встретить человека (а то и целую группу людей), пропагандирующую «Свободу Кода» (в той или иной трактовке) и призывающую программистов открывать исходные тексты своих проектов, разделив знание с миром. Продавать уже проданную программу – страшный грех и единственно правильный путь, ведущий в рай, – это трудиться на благо человечества в поте лица своего, не заботясь о коммерческой выгоде. Примечательно, что большинство вышеуказанных личностей сами ничего не программируют, но с удовольствием пользуются программами, за которые не нужно платить. Естественно, им хочется, чтобы таких программ было как можно больше. Тем временем программистам нужно на что-то
56
жить, и не просто жить, но еще поку- циализированные секторы рынка еще пать дорогостоящую вычислительную как-то держатся на плаву, но объемы технику, летать на различные конфе- продаж ПО до приобретения Феррари ренции, да и просто носиться на Фер- явно недотягивают. Открытые исходные тексты предрари-512-TR в свое удовольствие – почему бы и нет, если их труд оплачива- ставляют реальную угрозу для компается?! ний-гигантов и дают программистам В 16 лет еще можно работать возможность урвать свой кусок пирона благо человечества, не требуя ни- га, пополнив карманы пачками приятчего взамен, но с возрастом неизбеж- но хрустящих банкнот. Здесь, в этой но встает проблема: как зарабатывать статье, мы будем говорить исключина жизнь?! Программисты относятся тельно о коммерческой составляющей к тем немногим счастливчикам, совме- Open Source, оставив идеологическую щающим приятное с полезным, зачас- подоплеку в покое. Но для начала нужтую полностью отдающимся своей ра- но разобраться с терминологической боте и при этом зарабатывающим не- путаницей, царящей в этом мире. плохие деньги, правда, с каждым годом этих денег становится все мень- Различные виды ше и меньше. Массовый рынок давно лицензий находится под пятой крупных корпора- Английский язык относится к числу наций, мелкие фирмы скупаются на кор- иболее примитивных среди всех высоню или идут ко дну косяками. Узкоспе- коразвитых, чем, собственно, и объ-
IMHO ясняется его популярность, а вовсе не тем, что Америка правит миром и центр научно-технического прогресса находится именно там. В английском очень мало слов, вследствие чего каждое слово имеет множество значений, что, в конечном счете, едва не погубило движение Open Source. Термин «free» означает не только «свободный», но и «бесплатный», поэтому понятие «Free Software» можно толковать двояко, и большинство пользователей (по закону Мерфи) истолковали его совсем не так, как это задумывалось. Чуть позже «free» заменили на «open», но это лишь добавило путаницы и позволило Microsoft и другим компаниям «примазаться» к движению за свободное ПО, путем раскрытия части исходных текстов под подписку о неразглашении и без передачи прав на их последующую модификацию. Давайте выделим следующие уровни свободы. Абсолютная свобода предоставляется BSD-подобными лицензиями, позволяющими делать с исходными кодами все, что угодно: нарезать на болванки и перепродавать, модифицировать по своему усмотрению, использовать в составе коммерческих проектов… и все это без какихлибо отчислений! В частности, на базе свободной BSD построена закрытая CISCO OS, а ряд сетевых компонентов лег в основу стека NT. Компании-гиганты обогатились, а разработчики… подарили миру свободный код, повторив историю с Прометеем. (Тут ктото может увидеть противоречие, ведь выше утверждалось, что Open Source создает угрозу компаниям-гигантам и… в то же самое время их обогащает. На самом деле, никакого противоречия здесь нет, CISCO поставляет на рынок маршрутизаторы, снабженные всеми необходимыми сертификатами, и схожую функциональность можно получить от более дешевой связки PC + BSD, коллектив разработчиков BSD маршрутизаторами не занимается, поскольку здесь кроме энтузиазма нужны большие капиталовложения. Microsoft, довольно много позаимствовавшая из BSD, сократила расходы на разработку своей системы и смогла создать более конкурентоспособный серверный продукт, который миллионы людей покупают за деньги, в то время как BSD можно
№10, октябрь 2006
приобрести по цене носителя, причем BSD не стоит на месте и активно развивается, предоставляя возможности, которые в Windows появляются с огромным запозданием или не появляются вообще! Вот только один пример: при возникновении исключения в одном из драйверов, Windows останавливает всю систему целиком, не позволяя драйверам файловой системы сбросить свои буфера. И хотя такая возможность на уровне архитектуры в NT закладывалась изначально, она до сих пор остается нереализованной, а вот крах одного из модулей в BSD оказывает минимально пагубное воздействие на остальные компоненты системы, позволяя ей корректно завершить свою работу или даже перезапустить «упавший» модуль на лету). Свобода «коммунистического типа» предлагается нам под видом GPL-подобных лицензий, требующих отчислений в случае применения их в коммерческих продуктах или открытия кода всего проекта под все той же GPL. Это справедливо, но… никакой свободой здесь и не пахнет. Во многих случаях GPL является хитрым маркетинговым трюком: «свободная» программа требует гораздо меньших вложений в рекламу для ее продвижения. Людям свойственно скачивать то, что бесплатно, но… как только дело доходит до коммерческого применения, приходится либо нарушать лицензию (ведь открывать свой код только потому, что там используется пара «свободных» библиотек, никто не будет!), либо… платить разработчикам! Поэтому BSD – это свобода и открытость, а GPL – всего лишь открытость. Что же касается «бесплатности», то это не более чем распространенный миф. По дорогам тоже можно ездить как бы бесплатно, но если вспомнить, что их строительство обычно финансируется из местного бюджета, а местный бюджет – это налоги, то какаято странная «бесплатность» у нас получается. Другой пример – телевидение, оплачиваемое рекламодателями, включившими в свои продукты добавочную стоимость на рекламу. То есть «бесплатные» телеканалы оплачиваются пивом, стиральным порошком, прокладками и прочими продуктами народного потребления. При всей ненависти зрителей к рекламе «бесплат-
ные» каналы весьма успешно конкурируют с коммерческими. Давайте попробуем найти бизнессхему, позволяющую выпускать «бесплатные» программы. Ведь никто же не будет спорить, что бесплатная программа намного более конкурентоспособна своего коммерческого аналога, даже если аналог превосходит ее по ряду параметров. Ниже обсуждаются различные бизнес-схемы, ориентированные как на индивидуальных программистов, так и на крупные компании. Подчеркну еще раз – именно бизнес-схемы, целью которых является максимализация прибыли, а вовсе не стремление осчастливить человечество в планетарном масштабе.
Мотивы раскрытия исходного текста Прежде чем обсуждать аргументы сторонников Open Source, обратите внимание на одну интересную деталь. Большинство пользователей предпочитают скачивать готовые бинарные сборки, игнорируя наличие исходных текстов, которые, во-первых, занимают гораздо больше места, а во-вторых, очень часто требуют наличия внешних библиотек, влекущих в свою очередь дополнительные зависимости, причем все они не самым лучшим образом стыкуются друг с другом, отказываясь компилироваться новой (или, наоборот, старой) версией компилятора. И даже когда сборка проходит без сучка и задоринки, она все равно требует процессорного времени и дискового пространства, не говоря уже о сетевом трафике. Так зачем же скачивать исходные тексты, если мы не собираемся дорабатывать программу «напильником» или проводить аудит безопасности? Правильно, – незачем. Вот потому большинство пользователей их и не качает, а один из самых популярных дистрибутивов Linux – KNOPPIX распространяется без исходных текстов, и ведь никто же не жалуется! Другой вопрос, что собирая программу с определенными ключами, можно здорово сократить ее размер, выкинув все ненужное или оптимизировать под конкретный тип процессора, но при желании этого же эффекта можно добиться путем использования ди-
57
IMHO намически подключаемых библиотек, включив в дистрибутив все необходимые двоичные компоненты, размер которых будет заведомо меньше исходных текстов! Рынок уже давно все расставил по местам, доказав, что у массового пользователя нет никакой потребности в исходных текстах, по крайней мере, в мире Windows. Пестрота UNIX-подобных систем требует создания множества бинарных сборок, а разработчикам заниматься сборками лень. Гораздо проще выложить исходные тексты, и пусть каждый пользователь самостоятельно компилирует их под свою платформу, ругаясь при этом всеми словами и пытаясь найти готовые сборки на неофициальных сайтах. Таким образом, на потребительские свойства массового продукта раскрытие исходных текстов никак не влияет. Тем не менее, сторонники движения Open Source утверждают, что: имея исходные тексты на руках, пользователь может убедиться, что в программе нет закладок, дыр и прочих ошибок. Другими словами, пользователь может провести аудит безопасности или заказать его сторонней фирме. Но это даже не смешно! Да, действительно, вокруг крупных проектов таких, например, как OpenBSD, образовалось целое сообщество поклонников, среди которых есть как эксперты, так и новички, занимающиеся поиском ошибок из чисто спортивного интереса или в качестве демонстрации (читай – рекламы) силы своего интеллекта. Однако открытость проекта никак не связана с количеством имеющихся в нем дыр. Взять хотя бы открытоый FireFox и сравнить его с закрытым браузером Opera. Лавинообразный рост критических ошибок, обнаруженных в FireFox за последнее время, доказывает, что качество кода определяется исключительно профессионализмом его создателей и доступность исходных текстов для всеобщего аудита не в состоянии исправить многочисленные дефекты изначально небрежно сконструированного продукта. Кстати говоря, «аудит безопасности» в подавляющем большинстве случаев – формальная процедура, проводимая по заказу тех, кто свято верит в идею, что при целенаправлен-
58
ном поиске можно обнаружить чтонибудь «интересное». Ни одна фирма со всей «свитой» своих программистов не смогла выпустить продукт, полностью свободный от ошибок, допускающих удаленные атаки, а ведь они знают свои исходные тексты намного лучше, чем кто-то чужой. И это ошибки, допущенные по небрежности! Тщательно же продуманная закладка может (и должна!) срабатывать лишь при сочетании определенной комбинации внешних воздействий. Она не сосредоточена в каком-то одном конкретном месте, а как бы «размазана» по всем исходных текстам. Чтобы ее обнаружить, необходимо не только держать весь проект в голове, но и проанализировать все возможные связи между его компонентами, что невозможно, не говоря уже о том, что закладка может использовать некоторые особенности компилятора/линкера, поэтому они должны быть проанализированы тоже. А железо?! Можем ли мы ему на 100% доверять?! Достаточно вспомнить «странности» реализации команды AAA, чтобы доказать, что, даже имея полный исходный код программы и справочник по командам x86, мы не можем знать, как он поведет себя, встретившись с «необычными» аргументами. Аудит, заказанный конкретной фирме, на 99% бесполезен, а исходные тексты, выложенные на всеобщее обозрение, создают иллюзию безопасности, успокаивающую общественность, поскольку существует вероятность, что кто-то обнаружит спрятанную закладку случайно (и ведь обнаруживают!), однако при этом мы неявно постулируем, что все люди, живущие на земле, это – хорошие люди и они не будут использовать свои знания в корыстных или тем более преступных целях. К тому же шансы обнаружить ошибку не так уж и велики. В частности, в конце августа 2006 года Daniel Bleichenbacher выступил с докладом на конференции криптоаналитиков, где показал, что при стечении определенных обстоятельств цифровая подпись RSA может быть подделана в прямом смысле слова – одной лишь бумагой и карандашом (даже без использования кластера суперкомпьютеров). Виною тому не сам алгоритм RSA, а ошибки его реализации. Одной из таких реа-
лизаций оказался знаменитый проект OpenSSL, которой вплоть до версии 0.9.8c использовал RSA-ключи с экспонентой 3, удаляющие padding-поля PKCS #1 до генерации хэш-суммы, что позволяет удаленному атакующему подделать PKCS #1 сигнатуру, подписанную RSA-ключом, и препятствует корректной проверке различных цифровых сертификатов, использующих PKCS. А ведь OpenSSL подвергался аудиту множество раз. Его исследовали и профессионалы, и любители, и просто «интересующиеся», но… результат все сказал сам за себя: наличие исходных текстов позволяет каждому пользователю исправлять ошибки, допущенные разработчиками, дорабатывать программу под свои нужды, развивать и совершенствовать ее сообща. Прежде чем исправлять ошибку, как минимум, требуется ее воспроизвести, а каждый программист, хоть какое-то время проработавший в службе технической поддержки, знает, что практически никто из пользователей не способен грамотно описать условия, при которых возникает ошибка. А ведь чтобы ее устранить, одной лишь квалификации недостаточно. Первым делом следует разобраться со структурой исходных текстов, что требует времени, причем весьма значительного. Не лучше ли поручить исправление ошибок самим разработчикам? Что же касается новых возможностей… ну хорошо, допустим, разобравшись, какая строка за что отвечает, мы добавили необходимую нам функциональную возможность в программу, изменив десяток файлов в сотне мест. Мы посылаем исправленные исходные тексты координатору проекта, но нас посылают обратно, поскольку уже давно вышла новая версия и никому не интересно «перетаскивать» все изменения из старой, к тому же такая функциональная возможность, по его мнению, никому не нужна, да и реализована она слишком криво, нестабильно и вообще идеологически неправильно. Если наши изменения не будут приняты и включены в основной проект, это означает, что мы намертво привязываем себя к своей «собственной» правленой версии, поскольку переход на новые потребует больших трудозатрат.
IMHO
Мотивы удержания исходных текстов под колпаком Что мешает программистам распространять исходные тексты вместе с продуктом? В первую очередь – опасение, что кто-нибудь возьмет готовую программу, слегка доработает ее и будет продавать без каких бы то ни было отчислений. Но эта угроза совершенно безосновательна. Если действие происходит в стране, где законы об охране авторского права действуют не только на бумаге, распространителей запросто можно привлечь к ответственности, если же законы «отдыхают», то дораба-
№10, октябрь 2006
CONTROL&AUTOMATION
ПР И Г Л А СИ Т Е Л Ь НЫ Й Б И Л Е Т
www.inconex.ru
На самом деле, для расширения тывать программу совершенно необя- непрофессионализм? Особенно, есфункционала программы достаточно зательно. Гораздо проще скопировать ли программа содержит ворованные реализовать механизм плагинов или ее один к одному и продавать, как это компоненты. Анализируя откомпиливстроенный скриптовый язык. Отлад- делают пираты. рованный код, невозможно доказать, Наукоемкие ноу-хау, заложенные соответствует ли он данному исходночик OllyDbg распространяется без исходных текстов, но для него написа- в программу, лучше сразу же патен- му тексту или нет, поэтому воровство но огромное количество плагинов, ко- товать, поскольку в противном слу- легко сходит с рук. Плюс еще стадный признак и инерторые не привязаны к какой-то од- чае их все равно выдерут дизассембной конкретной версии и могут рас- лером, хотя… 99% программ ничего ционность мышления. В мире UNIX пространяется как по официальным, принципиального нового (на уровне ко- принято распространять программы так и по независимым каналам: ис- да) в себе не содержат и основная до- вместе с исходными текстами, и больходные тексты служат гарантом, ля находок приходится на дизайнерс- шинство программистов так поступачто автор программы неожиданно кие решения, то есть на видимый не- ют, даже когда их исходные тексты не уедет в Израиль и проект, лишен- вооруженным глазом интерфейс, а вот интересны только им самим. В мире ный поддержки, не умрет, ударив код… порою на него страшно смотреть. Windows, напротив, большинство проА кому хочется демонстрировать свой грамм распространяется в двоичном по всем его пользователям. Какая-то доля истины в этом утверждении есть, но… раскрыть исходные тексты это одно, а подобрать достойного преемника – совсем другое. Не нужно приводить в пример FireFox, возникший на обломках Netscape, или FAR, создатель которого сосредоточился на RAR, поняв, что не сможет тянуть два проекта одновременно. Возьмите DOS Navigator, пользующиеся во времена DOS огромной популярностью, особенно в среде программистов. Ну и где он сейчас? А ведь исходные тексты открыты… Но сплоченной команды разработчиков, подхвативБЕСПРОВОДНЫЕ И МОБИЛЬНЫЕ ших знамя и продолживших «дело ЛеТЕХНОЛОГИИ В ПРОМЫШЛЕННОСТИ нина», как-то не сложилось и продукт распался на несколько независимых проектов, ни один из которых не получил дальнейшего развития. РОССИЯ, МОСКВА, CК ОЛИМПИЙСКИЙ Подводя итог, можно сказать, что потребителя в первую очередь интересуют не исходные тексты, а бесБЕСПРОВОДНАЯ СВЯЗЬ COMMUNICATION платность продукта, поэтому дальнейший разговор мы будем вести именно БЕСПРОВОДНЫЕ СИСТЕМЫ в этом ключе. S E C U R I T Y БЕЗОПАСНОСТИ
ДИСТАНЦИОННЫЙ КОНТРОЛЬ И УПРАВЛЕНИЕ СИСТЕМЫ РАДИОЧАСТОТНОЙ ИДЕНТИФИКАЦИИ
Организатор:
ИНКОНЭКС Тел.: (495) 739 55 09 Факс: (495) 641 22 38 Время работы выставки:
Проезд: Москва, Олимпийский пр., 16 СК Олимпийский, Северный вход Метро: Проспект Мира Информационная поддержка: СК Олимпийский
Северный вход
ул. Щепкина Проспект Мира Метро: Проспект Мира
59
IMHO виде, и программисты «зажимают» исходные тексты только потому, что так поступают все остальные.
MOBILE & WIRELESS TECHNOLOGIES SC OLIMPIYSKIY, MOSCOW, RUSSIA
COMMUNICATION
SECURITY
CONTROL&AUTOMATION
WIRELESS DATA COMMUNICATION EQUIPMENT WIRELESS SECURITY SYSTEMS
REMOTE CONTROL & TEST SYSTEMS RADIO FREQUENCY COMPONENTS & SYSTEMS
Оrganizer:
INCONEX Теl: +7 (495) 739 55 09 Fax: +7 (495) 641 22 38 Opening hours:
COM PL I M E N TA R Y T I CK E T
www.inconex.ru
тора не обойтись. Но все существующие либо неудобны, либо не поддерживают необходимых нам возможностей, либо хотят немереных денег. Возникает мысль – а что если попроБесплатный сыр вне мышеловки бовать написать каталогизатор самоРазобравшись в проблеме, перечис- стоятельно?! Заодно и в программиролим мотивы раскрытия исходных тек- вании попрактикуемся! И вот, каталогизатор написан, мы стов и распространения программы на бесплатной основе, основываясь с удовольствуем пользуемся им и… на чисто коммерческих соображениях. в какой-то момент до нас доходит, что его можно продать. Мысль интеА мотивов таких достаточно много. ресная, но с точки зрения бизнеса неправильная. Чтобы продавать проПроба пера Ух ты, сколько у нас лазерных дисков дукт, его нужно очень сильно довесскопилось! Без хорошего каталогиза- ти до ума – это раз. Нужно придумать
Оружие против монстров
Venue: SC Olimpiyskiy, North exit 16 Olimpiyskiy pr., Moscow Metro: “Prospekt Mira” Information support:
SC Olimpiyskiy
North exit
Ul. Schepkina
Prospekt Mira Metro: “Prospekt Mira”
60
хоть какую-то защиту, чтобы не взломали (хотя, все равно ведь взломают) – это два... Также придется приготовить себя к необходимости отвечать на вопросы покупателей, оказывая им поддержку, съедающую все время и отрывающую от действительно важных проектов – это три. Причем заработать много денег все равно не удастся. Во-первых, на рынке уже существует куча подобных каталогизаторов, во-вторых, хакеры не дремлют, а платить свои кровные не любят даже миллионеры. Наконец, в-третьих, единой платежной системы не существует, и даже те пользователи, которые хотят купить вашу программу, далеко не всегда могут это сделать, поскольку перевод денег требует слишком больших телодвижений. А вот если выложить каталогизатор в свободный доступ, мы хоть ничего и не приобретем, но зато ничего и не потеряем. Тысячи людей скажут «спасибо», протестируют программу на всем спектре оборудования, подскажут несколько интересных идей по ее улучшению и это еще не все! Коекто может подкинуть интересный коммерческий заказ, а кое-кто даже предложить работу. Случай из жизни. Прохожу собеседование при приеме на работу и на вопрос: что, мол, я за «северный олень» такой, говорю – а вот у вас на рабочем столе я вижу ярлык своей программы. Отношение сразу меняется, и нижняя планка моей квалификации определяется сама собой. Только не надо вставлять свое резюме прямо в программу. Во-первых, это несолидно (специалисты, как правило, не ищут работы, это работа ищет их), во-вторых, жестко вшитое резюме доставляет множество хлопот и проблем после того, как вы уже нашли работу. Лучше просто дать ссылку на сайт с динамически обновляемой информацией.
Конкурировать с компаниями-гигантами на самом деле не так сложно, как это кажется, особенно, если распространять свой продукт на бесплатной основе. Несмотря ни на какие усилия Microsoft, весовая доля FireFox и Opera все растет и растет. И хотя стабильности IE ничего не угрожает, Microsoft с большим удовольствием
IMHO скупила бы конкурентов, если бы они только продавались. Многие компании изначально строят свой бизнес на том, что через некоторое время их купит тот, кому они мешают, или тот, кому нужна клиентская база. Так было в случае и с WinAmp, и с ICQ… да много можно привести примеров! Вон, легендарный исследователь недр Windows Макр Руссинович, и тот продал свой бизнес Microsoft, чем остался страшно доволен: http://www.sysinternals.com/blog/ 2006/07/on-my-way-to-microsoft.html. Конечно, подобные шаги требуют внушительных капиталовложений, и существует риск, что продукт не «пойдет», конкуренты не обратят на него внимания или рыночная ситуация неожиданно изменится, сделав продукт ненужным (в частности, распространение высокоскоростных каналов связи снизило популярность менеджеров закачек в десятки раз, и выжили те, кто обеспечивал лучшую каталогизацию содержимого, лимитацию трафика, продвинутую планировку и т. д.). Однако затраты на разработку программы можно существенно сократить, если не раздувать штаты сверх необходимого и активно вербовать энтузиастов со всех концов земли, а такие всегда найдутся, если вести проект под эгидой Open Source. Весь фокус в том, что несмотря на то, что исходный код никому из участников проекта единолично не принадлежит, основную ценность представляет не текст, а… координация его создания. Уберите лидера, и проект развалится, в лучшем случае распавшись на несколько независимых «островков», в худшем – просто задохнется. К тому же, не надо забывать, что движение Open Source имеет разветвленную сеть каналов распространения программного обеспечения и постоянно используется средствами массовой информации в качестве фетиша по поводу и без повода. То есть разработка продукта под знаменем Open Source обеспечивает хорошую рекламу, способствует его продвижению на рынок, что оказывает поразительное психологическое давление на конкурентов, у которых желание прибрать наш бизнес к рукам возникает раньше, чем попытка реально оценить: какую угрозу для их существования он представляет.
№10, октябрь 2006
Да, по лицензии GPL продук т не может быть куплен без согласия всех разработчиков, на что поклонники Open Source всегда напирают, но зато он может быть похоронен, к чему конкуренты, собственно, и стремятся. Конечно, с психологической точки зрения, не слишком-то приятно работать с перспективой быть закопанным в могилу, но… эта бизнес-схема приносит неплохие деньги, а программное обеспечение в конечном счете все равно устаревает, отправляясь в небытие.
ных (если один человек «вбил» описание дисков в базу, зачем тысячам других делать то же самое?!), после чего начнем привлекать лейблы (лейблами (от англ. label, одним из значений которого является «бренд») в музыкальной индустрии называют компании, покупающие права на произведения и занимающиеся их рекламой, распространением и т. д. (см. «record label» на wikipedia – http://en.wikipedia.org/ wiki/Record_label)) (или просто магазины, торгующие дисками), предоставив им возможность информировать пользователей о новинках и вести мониПрограмма как услуга Рассматривая программу как товар, торинг реальной популярности своей мы, во-первых, ввязываемся в вой- продукции. Ведь если у человека есть ну с хакерами и пиратами, норовящи- два альбома такой-то группы, то сообми взломать программу, выложить ее щение о появлении третьего, навряд ли в файло-обменную сеть или распро- оставит его равнодушным. То есть мы странять по цене носителя. А конку- продаем контекстную рекламу, и осренция?! Десятки компаний предлага- новным источником прибыли станоют схожие по своим функциональным вятся именно лейблы. Прибыль будет возможностям программы, и на рын- тем выше, чем больше у вас пользоке появляются все новые и новые иг- вателей, количество которых обратроки. Как говорится, тут не до нажи- но пропорционально стоимости провы! Выжить бы… А что!!! И выживем, граммы. То есть для достижения макесли начнем рассматривать програм- симальной прибыли программа должму как услугу. на распространяется бесплатно! Наша Продажи программы – не единс- основная задача – собрать как можно твенно возможный источник дохо- больше пользователей, предоставив да. Пусть программа будет бесплат- им те сервисы, в которых они острее ной, пусть ею пользуются все желаю- всего нуждаются (заказы новых дисщие! А мы им поможем! Техническая ков одним кликом мыши, поиск по наподдержка, всевозможные семинары званию файла/композиции в базе, пии тренинги, литература и бумажная до- ринговая сеть, наконец!). Естественно, сразу же возникакументация… Перечень платных услуг можно продолжать бесконечно. В тех- ет вопрос о приватности и безопаснически сложных программах (таких, ности. Передавая он-лайновой служнапример, как IDA Pro, PC-3000) огром- бе описания своих дисков, пользованую роль играет наличие центра обу- тель рискует нарваться на очень крупчения специалистов, поскольку само- ные неприятности, если эти диски – пистоятельно разобраться с продукта- ратские (а в большинстве случаев это ми подобного уровня среднестатисти- так и есть). Следовательно, необходический пользователь не в состоянии. мо обеспечить такой механизм переА программные комплексы еще тре- дачи данных от пользователей к бабуют и грамотного внедрения. Здесь зе и от пользователя к пользователю, мало вставить лицензионный диск который бы гарантировал со 100% наи щелкнуть по пиктограмме с надпи- дежностью, что ничей IP-адрес не бусью «Install»! дет «засвечен». Технически добитьНо оставим корпоративный сектор ся этого очень легко – достаточно истем, кто на нем пасется. Возьмем ве- пользовать proxy-серверы, в роли кощи простые и куда более приземлен- торых могут выступать и сами польные, например, уже упомянутый ката- зователи. Да-да, если информация логизатор дисков, бесперспективность передается не напрямую, а через цепродаж которого мы обсуждали выше. почку наугад выбранных пользоватеА теперь прикрутим к нему он-лайно- лей, каждый из которых не запомивую службу, позволяющую пользовате- нает IP-адрес отправителя, то опрелям обмениваться своими базами дан- делить IP-адрес обладателя данного
61
IMHO диска – невозможно. Правда, при одном лишь маленьком условии. Что наша программа работает честно и что в ней нет никаких закладок, оставленных по просьбе (или под нажимом) спецслужб разных стран. Существует только один путь убедить пользователей, что все в порядке, это – открыть исходные тексты. Вот простой пример бизнес-схемы, основанной на бесплатно распространяемом программном обеспечении. Самое забавное, что написание подобного каталогизатора не требует практически никаких вложений и хороший программист напишет его буквально за неделю. Однако сам по себе он бесполезен, и львиная доля труда уйдет на создание обширной базы данных (ну кого из нас не раздражает, когда Microsoft CD-Player Deluxe не опознает очередной диск?). Переложив эту задачу на плечи пользователей, мы получим базу в обмен на… в том-то и дело, что пользователи не получат ничего. Допустим, с лейблами договориться не удалось, но, имея базу, созданную первой волной пользователей, мы можем продавать не саму программу, а доступ к базе, который, кстати, легко контролировать, пресекая хакерскую деятельность. Невозможно сгенерировать ключ, если его проверка осуществляется на сервере, хранящем список легально проданных ключей. Постойте, а как же с базой?! Ведь вторая волна пользователей, которым она доступна за деньги, за просто так ее пополнять не будет!!! Следующая хитрость:
62
мы говорим, что каждый, кто зальет столько-то описаний дисков, получит бесплатный доступ на какое-то время (а то и на всю жизнь). В общем, главное фантазию иметь и не зацикливаться на схеме «программа – деньги».
Другие мотивы
бом случае не получит никакой прибыли от заброшенного soft-ice и не потерпит убытка, передав soft-ice конкурентам, ведь других отладчиков у нее все равно нету, но… существуют такие понятия, как жадность и глупость. Глупость – хоронить легендарный продукт вместо того, чтобы искать новые бизнес-схемы для его распространения. К сожалению, подобные ситуации не редкость, а скорее общепринятое правило поведения.
Разработки, оплачиваемые различными грантами или созданные в ходе различных исследовательских программ, дотируемых из госбюджета, как правило, не принадлежат их создателю и распространяются в открытых тек- Заключение стах на бесплатной основе. Но в ос- Все упирается в деньги. Мы живем новном это относится к научным про- не при коммунизме, и окружающие граммам, ареал обитания которых ни- нас товары и услуги стоят денег, слекак не пересекается с офисными про- довательно, программировать на чисдуктами и другими приложениями мас- том энтузиазме можно либо за счет родителей, либо добывая средства сового назначения. Еще одним мотивом к раскрытию к существованию каким-нибудь иным кода становится сворачивание рабо- способом (торговлей бананами, наты над проектом, как произошло, на- пример), что превращает программипример, в случае с Netscape. К сожа- рование из ремесла в хобби. Ведь полению, остальные компании следо- мимо бизнес-схем в мире есть и провать этому примеру не хотят. Напри- стое увлечение, страсть, стремление, мер, Compuware, объявившая о пре- азарт, любовь к компьютерам, иногда кращении поддержки soft-ice, наотрез переходящая в манию, граничащую отказалась отдавать исходные коды с помешательством. Есть люди, ощупоследней версии за разумную сум- щающие буквально физическую потму, хотя она могла бы их просто по- ребность писать программы, разрадарить миру, ничего от этого не поте- батывать новые алгоритмы или просряв. Но… в мире бизнеса законы логи- то проводить за монитором все своки работают по-другому. Это намного бодное и несвободное время. Но дахуже, чем собака на сене (по крайней леко не все из них примыкают к двимере, собака на сене лежит, и если она жению Open Source, предпочитая дерпозволит корове съесть его, лежать ей жаться в стороне от шумной и пестрой придется на сырой земле, а для хвос- толпы, построенной на бизнесе и прота это нехорошо). Compuware в лю- паганде.
IMHO
Куда приведет Open Source? Только два стимула заставляют людей работать – жажда заработной платы и боязнь её потерять. Генри Форд
Сергей Супрунов Движение Open Source зародилось как протест против проприетарного подхода к программному обеспечению и поначалу воспринималось, скорее, как развлечение. Cейчас всё большее число компаний связывают с открытыми проектами свой бизнес. Попытаемся разобраться, что ждёт эти проекты в перспективе.
Что мы хотим от программы Сначала посмотрим, каким требованиям должна отвечать программа, чтобы называться «хорошей» с точки зрения конечного потребителя. Очевидно, что основное требование – минимум ошибок. Ошибки, которые в ней всё же будут выявляться, необходимо устранять профессионально и как можно быстрее. Не последнюю роль играют удобство работы и понятность интерфейса, а на все вопросы должна быть возможность получить грамотный и исчерпывающий ответ. То есть программный проект должен разрабатываться квалифицированными специалистами (в том числе и в области эргономики), снабжаться качественной документацией и эффективной технической поддержкой. Способны ли открытые проекты соответствовать этим требованиям?
Что движет разработчиками Как известно, люди ничего не делают просто так. Им непременно нужна мо-
№10, октябрь 2006
тивация. Такова наша природа. И чтобы понять, какое будущее ждёт открытое ПО и что мы сами можем ждать от него, нужно попытаться разобраться в таком вопросе: что заставляет людей распространять свои программы бесплатно? Ричард Столлмен в своём письме «Свободному ПО двадцать лет: что дальше?» выделяет два вида мотивации: отсутствие нужной программы и желание быть свободным [1]. Но, думаю, при более детальном рассмотрении мотивов будет больше. Коротко охарактеризую основные из них.
Удовлетворение своих нужд На этот мотив указывает и Столлмен, а также Эрик Реймонд в своей нашумевшей статье «Собор и Базар» [2] – иногда случается так, что вы не можете найти готовую программу (пусть даже и за деньги), которая обладала бы нужными вам качествами. Тогда вы разрабатываете её самостоятельно и тем самым удовлетворяете свои потребности. То есть силы и ресурсы, затраченные на разработку и затрачиваемые
в дальнейшем на сопровождение, окупаются уже тем, что вы сами используете эту программу. Следовательно, вы ничего не потеряете, если отдадите её ещё кому-нибудь бесплатно (если, конечно, не боитесь, что ею воспользуются и ваши конкуренты). Следующий логический шаг – выпустить её не просто бесплатно, но с открытым кодом. Вы по-прежнему ничего не теряете, но зато можете рассчитывать, что какая-нибудь «добрая душа» (мотивы доброты которой мы ещё рассмотрим) будет помогать вам в вашей разработке (хотя бы указывая на ошибки). С точки зрения сообщества такая мотивировка не позволяет продукту далеко отойти от удовлетворения частных потребностей его разработчика. И его качество будет ровно таким, какое необходимо разработчику – не больше и не меньше. К тому же на гарантированную техподдержку тоже рассчитывать не приходится. Конечно, если проект очень хорош, то у него есть все шансы вырваться изпод крыла своего создателя и «уйти
63
IMHO в свободное плавание». Но этим движут уже другие мотивы...
Программировать, чтобы учиться программировать Лучший способ научиться говорить поанглийски – это говорить по-английски. То же самое и с программированием – практика, и желательно не просто уровня «Hello, world!», к чему быстро теряешь интерес, а участие в реальном проекте – это неотъемлемое условие достижения высоких результатов. В этом плане работа над открытыми проектами практически идеальна – вам всегда будут рады, от вас ничего не будут требовать сверх ваших возможностей, общаясь с настоящими «гуру» своего дела, вы сможете перенять то, что американцы называют «лучшими практиками», то есть освоите наиболее эффективные приёмы работы, познакомитесь с красивыми алгоритмами и т. д. Было бы желание. Однако эта мотивация накладывает два ограничения. Во-первых, далеко не каждый программист, пришедший в проект учиться, обладает необходимой квалификацией для разработки действительно качественного кода. Во-вторых, как только он достигнет достаточно высокого уровня, действие данного стимула на этом и заканчивается. Конечно, Open Source затягивает. Ощущение причастности к большому, общему и полезному делу заставляет не спать ночами, и потому многие недавние «ученики» не всегда «завязывают» с открытым ПО, достигнув желаемого уровня мастерства. Но поскольку их мотивация меняется, то и данный стимул нельзя назвать основополагающим для построения прочного и долгоживущего открытого проекта.
И здесь открытые проекты опятьтаки подкупают низкой «планкой вхождения». Но эта мотивация тоже не вечна – она работает лишь до тех пор, пока человек не найдёт работу, о которой мечтал.
Выполнение должностных обязанностей
крупной компании, то на программирование ради удовольствия остаётся не так уж и много времени. Особенно когда у вас есть возможность делать то же самое, но за деньги... К тому же в полном жизненном цикле проекта далеко не всё будет доставлять удовольствие. Кто-то не любит писать документацию, кому-то не нравится отлавливать неочевидные ошибки... Как метко заметил Николай Безруков в статье «Повторный взгляд на Собор и базар» [4], «талантливые разработчики в первую очередь программисты, а не тестеры: они обычно предпочитают делать собственные ошибки, а не исправлять ошибки других». Так что этот мотив тоже нельзя рассматривать в качестве гаранта высокого качества и долгосрочности проекта.
Да, есть такие счастливцы, которые получают зарплату, разрабатывая открытые продукты. Немало программистов, работающих над Linux, найдётся в таких компаниях, как IBM, Oracle, не говоря уже об Red Hat Inc. и Novell, чей бизнес напрямую связан с этой операционной системой. (Нужно заметить, что здесь есть и свои ограничения – вложения в открытое ПО ничем не защищены, то есть любой конкурент вполне может совершенно бесплатно воспользоваться теми результатами, на достижение которых были Протест и борьба за идеалы потрачены немалые средства.) Второй из «столлменовских» мотивов – С мотивами здесь всё понятно, вы пишете открытые программы, потоно нужно также понимать, что корпора- му что считаете неправильным брать ции оплачивают эту работу не по щед- за них деньги и запрещать людям изурости душевной, а преследуя впол- чать и модифицировать их код. Осоне определённые коммерческие це- бенно когда сами создали свою проли. Впрочем, о них мы поговорим чуть грамму, пользуясь идеями и наработпозже. ками других людей. Это, конечно, хороший и благородный мотив, но, к сожалению, трудно Just for fun Знаменитый «мотив» Линуса Торваль- найти кого-то кроме самого Ричарда, дса. Да, программирование захваты- кто им на самом деле руководствовался вает и доставляет истинное наслажде- бы (ну ещё Торвальдс ссылается на нение – вне компьютерной жизни не час- го в своей книге как на одну из причин то удаётся почувствовать себя все- сделать код Linux открытым). Кстати говоря, идеологические могущим творцом. Оно вполне может быть хобби, и для некоторых так оно принципы, лежащие в основе двии есть. А на хобби мы готовы тратить жения FOSS (Free and Open Source кучу денег и времени, даже не задумы- Software), всё чаще подвергаются сомваясь о выгоде, отдаче и т. д. Нам это нению. Не так давно даже Эрик Рейнравится, и этого достаточно. монд выразил мнение, что открытые Но, как пишет сам Торвальдс в сво- проекты более лояльно должны отей книге «Just for Fun. Рассказ неча- носиться к коммерческим системам янного революционера» [3], удоволь- и, в частности, к включению проприеНаработка «портфолио» Каждый, кому доводилось искать ра- ствие – это третий, заключительный тарного кода в открытые продукты [5]. боту, наверняка знает, что работо- этап эволюционирования любой ве- Это, по его мнению, является ключедатель гораздо чаще задаёт вопрос щи. Этому этапу предшествуют борь- вым условием сохранения жизнеспо«что ты умеешь», а не «что ты знаешь». ба за выживание и достижение соци- собности Linux. То есть опыт практической работы при- ального статуса. То есть программиобретает первостепенное значение, ровать просто так, ради одного лишь Азарт и жажда борьбы и запись в резюме об участии в проек- удовольствия, человек будет только Это менее идеализированный вариант те разработки операционной системы после того, как накормит свою семью, предыдущего случая – людям нравитвыглядит зачастую более предпочти- обеспечит ей крышу над головой, за- ся бороться. Они готовы тратить сительно, чем наличие высшего образо- воюет устойчивое положение в обще- лы и время, чтобы быть лучше друвания по специальности «системный стве. И если только вы не владеете со- гих. Это их распаляет, зажигает огонь программист». лидным пакетом акций какой-нибудь в глазах. Но для этого нужен достой-
64
IMHO ный противник. Не намного сильнее, лучение прибыли. (Единичный слу- ся сделать то же самое с Java. Но отчтобы борьба с ним не выглядела без- чай с Canonical Ltd. принимать во вни- нюдь не из любви к свободе – просто надёжным делом, но всё же находя- мание не будем – не каждому мульти- ей нужно продавать свои Sun Fire. Безщийся впереди. Сейчас такой против- миллионеру захочется тратить свои условно, эти примеры слишком упроник есть – коммерческое ПО. Оно го- деньги так, как это делает Шаттлворт. щены и в какой-то степени даже грубы, раздо сильнее распространено, и за- Да, кстати говоря, и Canonical не только но тем не менее смысл они отражают довольно точно – бесплатное распрочастую лучше свободных аналогов. благотворительностью занята.) Поэтому посмотрим, как же можно странение программ в данном случае (Что бы там ни говорили, но я использую AbiWord для подготовки этой ста- зарабатывать на открытых програм- служит средством повышения прибытьи лишь потому, что он бесплатен мах, которые каждый желающий мо- ли в других областях. и работает в Ubuntu, а вовсе не потому, жет распространять безо всяких ограА прибыль может повыситься тольчто он лучше MS Word технически.) ничений и по любой цене. ко в одном случае – если мы, то есть Но что будет, когда открытые проконечные потребители, выложим больграммы станут действительно луч- Проекты под заказ ше денег. Так что это «бесплатное» ПО ше коммерческих? Их разработчики Это, скорее, теоретическая возмож- довольно сильно начинает смахивать просто потеряют интерес к дальнейше- ность, нежели практический пример. на пресловутый сыр... му улучшению. Но и не победить тоже Суть открытого и свободно распронельзя – когда всё время бежишь вто- страняемого ПО в том, что получив Борьба с конкурентами рым, начинаешь думать, что первым тем или иным способом (в том числе И снова сразу же вспоминается IBM. тебе никогда не стать, а раз так, зачем и купив) программный продукт, вы мо- Она ведёт свой бизнес в самых развообще бежать? жете легко передать его кому-то ещё личных секторах рынка. И, например, по меньшей стоимости или даже бес- в секторе корпоративных баз данных К сожалению, большинство из этих платно. Фактически, разработчик по- одним из основных конкурентов IBM факторов не всегда в состоянии сти- лучает гарантию только на первую является Microsoft. Но Microsoft имеет мулировать работу над проектом, что продажу. Так что если сделать перво- интерес и в секторе операционных сисназывается, «от и до». Первоначаль- начальную стоимость продукта доста- тем, куда IBM уже давно не стремится. ная работа, когда идея начинает воп- точно высокой, то таким путём мож- Так что если поддерживать бесплатлощаться во что-то реальное, достав- но попытаться компенсировать за- ную ОС, то можно нанести серьёзный ляет массу удовольствия. Но вот ког- траты на разработку и даже получить урон своему конкуренту, ничуть не посда дело доходит до необходимости прибыль. традав самому. Пожалуй, единственный способ «вычищать» ошибки (не зря говорят, И если в предыдущем случае (прочто последние 10% проекта отнима- продать один экземпляр программы движение других товаров) компанияют 90% времени), отвечать на беско- по цене, превышающей её себестои- спонсор так или иначе диктует свои нечные однообразные вопросы поль- мость, – это разработка на заказ (ина- требования разработчикам, чтобы позователей, да и даже писать докумен- че как вы получите гарантию, что во- лучить те свойства продукта, которые тацию, то здесь уже не всегда энтузи- обще сможете что-то продать). Но весь соответствовали бы её маркетингоазма хватает... Традиционный путь – фокус в том, что заказчик, выклады- вым целям, то для того чтобы «подло«свалить» это на новичков, присоеди- вая немалые деньги, будет, скорее жить свинью» конкуренту, достаточно нившихся к проекту («поработай с пол- всего, желать получить программу просто создать участникам открытого годика в Bugzilla, а там, может, и в раз- в свою полную собственность, так что проекта условия для разработки преоб Open Source в данном случае речь восходной программы. С точки зрения работчики возьмём»). Так что можно сделать небольшой вряд ли будет идти (разве что разра- сообщества этот способ меценатства промежуточный вывод о том, что из су- ботка будет основана на GPL-коде, наиболее хорош. К тому же, если вам ществующих мотиваций единствен- и заказчика поставят перед фактом, не нужна корпоративная СУБД, то и пеная, которая может оказывать более- что «иначе нельзя»). Потому я и оха- реплачивать за неё вы не будете. менее серьёзное влияние на полно- рактеризовал данный пункт как теоценное развитие открытых проектов ретический. Техническая поддержка в долгосрочной перспективе, – это всёНа этом в значительной степени строят таки оплачиваемая работа. Попытаем- Продвижение сопутствующих свой бизнес такие компании, как Red Hat Inc., Novell, Mandriva... То есть осся разобраться, зачем же коммерчес- товаров ким компаниям может понадобить- Вот этому уже можно найти массу новной источник дохода – не продажи ся оплачивать разработку открытых практических примеров. IBM актив- программы, а плата за её обслуживапрограмм. но спонсирует разработку Linux, что- ние. Поскольку люди, особенно в корбы более успешно продвигать свои поративном секторе, хотят просто десерверные решения, да и чтобы на их лать свою работу с помощью компью«Шкурный интерес» Не подлежит, думаю, ни малейшему новом процессоре Cell гарантирован- тера – рассчитывать фундамент здасомнению тот факт, что любое вло- но работала хотя бы одна операцион- ния, рисовать дизайн будущего авжение, осуществляемое коммерчес- ная система. Sun Microsystems час- томобиля, раскладывать пасьянс, – кими компаниями, направлено на по- тично открыла коды Solaris и готовит- то они совсем не желают знать, что та-
№10, октябрь 2006
65
IMHO кое файловая система и загрузчик, не говоря уже о том, чтобы это ещё и настраивать. Отвлекусь на небольшое наблюдение. Очень многие готовы, не задумываясь, отдать некоторую сумму за то, чтобы им настроили подключение к Интернету на домашней Windows XP. То есть операция «Пуск → Все программы → Стандартные → Связь → Мастер новых подключений» является для них непосильной задачей. Безо всякой иронии скажу, что так и должно быть – не дело бухгалтера или врача разбираться в «драйверах», «логинах» и «IP-адресах» (хотя Microsoft и делает всё, чтобы пользователю приходилось с этим сталкиваться как можно меньше). А открытые проекты, где довольно часто помощь ограничивается аббревиатурой «RTFM», не зря славятся своей сложностью. Кстати говоря, нынешнее отношение разработчиков многих открытых программ к своим пользователям стимулирует возврат к натуральному хозяйству: «Вы же получили исходники? Если что-то не нравится, нанимайте программиста и переделывайте, как вам надо». Как указывается в аналитическом отчёте компании Elashkin Research [6], даже если специалисты необходимой квалификации уже есть в компании, работодатель фактически будет вынужден оплачивать их занятие непрофильной деятельностью. Так что люди готовы платить за техническую поддержку. Но здесь, когда речь идёт об открытых программах, мы наталкиваемся на очень интересную вещь. Для начала ответим на вопрос: заинтересована ли коммерческая компания в повышении качества продаваемой ею программы? Да, заинтересована. Потому что основной источник дохода – продажи, и чем лучше будет программа, тем лучше она будет продаваться и тем меньше будут издержки на её сопровождение. Теперь зададим тот же вопрос применительно к открытым продуктам. Ответ, к сожалению, будет отрицательный. Ведь спрос на техническую поддержку будет тем больше, чем больше с программой проблем и чем сложнее с ней разобраться. И лишь высокий уровень конкуренции сдерживает появление совсем никуда не годных продуктов.
66
Сейчас, конечно, технология программирования такова, что ошибки неизбежны, так что компаниям, специализирующимся на технической поддержке, специально заботиться о них нет нужды. Но кто знает, что будет, когда в Linux будет устранена последняя ошибка? Иногда программы с открытым кодом выполняют роль «демо-версий», служащих продвижению коммерческих версий того же продукта. В качестве примера можно привести MySQL, Sendmail. Но данный случай, в зависимости от того, насколько возможности открытой версии меньше, чем коммерческой, может быть отнесён либо к «продвижению сопутствующих товаров», либо к «технической поддержке». Поэтому отдельно я его не выделяю. Так что получается, что попытки заработать на открытых проектах (и тем самым обеспечить этим проектам необходимый источник финансирования) так или иначе отражаются на карманах конечных пользователей и при этом не стимулируют улучшение качества программ.
Зачем открывать код Зачем же тогда коммерческие компании открывают код своих флагманских продуктов, если на этом так сложно зарабатывать? К сожалению, нужно признать, что открывается в основном код тех продуктов, на которых итак уже становится сложно зарабатывать. Открытие кода зачастую похоже на принцип «отдать палец, чтобы спасти руку» – это привлекает внимание к компании (и к другим её продуктам), вливает в проект новых (и притом бесплатных) разработчиков и тестеров, и т. д. Приходится, конечно, серьёзно спонсировать эти сообщества (ядро разработчиков OpenOffice.org ещё долго, наверное, будут составлять оплачиваемые компанией Sun программисты), но определённая отдача от этого всётаки есть. А значит, не прямо, так косвенно, но именно конечные пользователи оплачивают этот «жест доброй воли».
Свобода во всём Конечно, есть ряд проектов, разрабатываемых как «некоммерческие».
Финансирование им тоже необходимо, если они действительно стремятся обеспечить должный уровень качества. И здесь основным способом получить необходимые средства становятся пожертвования компаний и частных лиц. Но пожертвования редко позволяют обзавестись серьёзным «железом» для выполнения всестороннего тестирования разрабатываемого продукта, не говоря уже о привлечении сторонних специалистов для выполнения «непрестижной» работы. То есть некоммерческие проекты зачастую держатся на голом энтузиазме, который, к сожалению, не вечен. Безусловно, есть успешные примеры, такие как Debian, хотя более чем три года ожидания Sarge продемонстрировали, что и здесь могут быть существенные проблемы.
Шаг в бизнес Ещё одна тенденция наших дней – компании, строящие свой бизнес на открытых проектах, всё чаще говорят о необходимости более явно переходить на коммерческие рельсы. Например, Саймон Фиппс, занимающий руководящую роль в Sun Microsystems, призвал сообщество Open Source «усвоить уроки капитализма и капиталистов» [7]. Особо показательна позиция российской компании «LINUX-ONLINE» – разработчика дистрибутива Linux XP Desktop. Её «манифест» [8] явно декларирует, что при сохранении доступности Linux «каждому пользователю PC» в Linux необходима сильная коммерческая составляющая. К сожалению, нужно признать, что это не просто маркетинговый ход, нацеленный на продвижение своего дистрибутива (хотя сами они указывают, что разрабатывают не «дистрибутивы», а «решения»), а вполне обоснованная позиция. Действительно, если в качестве стратегической цели разработки ставить как можно более широкое распространение продукта, то это неизбежно приведёт к увеличению доли «пассивных» пользователей, которые лишь потребляют продукт, но сами не участвуют в его разработке. Эта тенденция итак характерна сейчас для многих открытых проектов.
IMHO В итоге если разработчики хотят сохранить этих пользователей, то им придётся более серьёзно относиться к вопросу технической поддержки. А это уже возможно лишь на коммерческой основе. По большому счёту разработчикам, если они не получают за это деньги, безразлично, будет их программа использоваться одним пользователем или несколькими миллионами. Вот число активных пользователей, присылающих грамотные отчёты об ошибках или даже патчи, – фактор критический, но, к сожалению, на нынешнем этапе развития Open Source можно, наверное, считать, что здесь потенциал для экстенсивного роста почти исчерпан. Кто хотел участвовать в открытых проектах, тот в них уже участвует. На самом деле проектам нужны и пассивные пользователи – но лишь как средство влияния на потенциальных инвесторов и жертвователей, ну и в определённой степени как повод гордиться своим детищем.
Назад в будущее
рами. Эти проекты и сейчас во многом как техническая поддержка. В то же время рост числа пассивных польопираются на университеты. Что может дать открытым проек- зователей, требующих от разработтам возврат в науку? Во-первых, хоть чиков «коммерческого» качества по и небольшое, но всё же стабильное «свободной» цене и мешающих тем финансирование, поскольку любое самым программировать просто для здравомыслящее государство за- удовольствия, постоянно будет усиинтересовано в дешёвых и эффек- ливаться. В этих условиях у открытых проективных программах, а также в грамотных специалистах, выучивших- тов есть, на мой взгляд, три пути. Перся на этих самых программах. Да и вый – не обращать ни на что внимание для коммерческих компаний, кото- и просто делать то, что и делали. Возрые сейчас используют открытое ПО можно, здесь трудно будет говорить и потому оказывают поддержку про- о высоком качестве конечного продукектам Open Source, в принципе ниче- та. Возможно, использовать его будут лишь несколько сотен человек, котого не меняется. Во-вторых, университет – это рые сами же и занимаются его разрапрактически неисчерпаемый источ- боткой. Но, в конце концов, не слишник студентов-добровольцев (а по- ком давно так всё и было. Второй – переход на коммерчесрой и не совсем добровольцев), которых можно привлечь к той или кие рельсы. Только деньги всё же лучиной работе. Конечно, рассчитывать ше брать за сам продукт, а не за его в этом случае на высокую квалифи- поддержку – так оно и честнее, и покацию разработчиков не приходится, нятнее для конечного пользователя. но под чутким руководством грамот- Да и не будет соблазна оставить «дыного профессора эффективность их рочку», чтобы потом дать повод польработы, скорее всего, будет замет- зователям пожалеть, что не подписано выше, чем при нынешнем спосо- лись на обновления. Третий путь – переход на научбе взаимодействия в большинстве сообществ. ные принципы разработки без оглядНаучный подход позволит более ки на число вовлечённых пользоватефундаментально подходить к разра- лей, показатели TCO, привлекательботке, когда на смену принципу «ес- ность для инвесторов. А все «рыночли это работает – не трогай» придёт ные» вопросы оставить на откуп комподход «выбирай наилучшее реше- мерческим компаниям. Что получится на самом деле – врение». Может быть, это несколько затянет время разработки и появления но- мя покажет. Удачи! вых функций, но зато можно будет говорить о заметном повышении качества. А «фичи» всегда студенты-энту- 1. Столлмен Р. Свободному ПО двадзиасты добавят. цать лет: что дальше? – http://zdnet.ru/ Остаётся открытым вопрос с тех?ID=312009. нической поддержкой, но этим в прин- 2. Реймонд Э. Собор и базар – http:// ципе по-прежнему могут заниматься www.seagreen.ru/free/esr/esr_cathedralкоммерческие компании на платной bazaar2.html. основе. Им даже проще будет стро- 3. Торвальдс Л., Даймонд Д. Just for Fun. ить свой бизнес, поскольку «источРассказ нечаянного революционеник» разработки более предсказуем ра. – Эксмо-Пресс, 2001. и есть с кем при необходимости всту- 4. Безруков Н. Повторный взгляд на Собор пить в переговоры. и Базар – http://www.linux.org.ru/books/
Получается, что бизнес-модель Open Source не подкреплена достаточно надёжными и долгосрочными ресурсами, гарантирующими качественное и эффективное развитие и в будущем. Так есть ли это будущее у открытых проектов вообще? На мой взгляд, есть. Но чтобы его увидеть, нужно забыть о коммерческой составляющей и обратить внимание на то, что процесс работы над открытыми проектами очень напоминает научную работу. Действительно, в научной среде тоже принято делать достоянием общественности новые теории, результаты экспериментов и т. д. И каждый может опереться на достижения своих коллег, чтобы продвинуться ещё дальше. Это естественная схема обмена мыслями и идеями, выработанная, скажем так, «эволюционным» путём и отличающаяся от столь же естественной схемы Подводя итоги обмена товарами и услугами. А про- Таким образом, можно сделать вывод, грамма – это, скорее, идея, чем мате- что дальнейшее развитие Open Source рано или поздно упрётся (наверно, риальная вещь. По большому счёт у движение можно сказать, что уже упирается) Open Source зародилось именно в на- в недостаток разработчиков, не гоучной среде. BSD, UW-IMAP, Exim, воря уже о «сотрудниках», занятых X-Window являются хорошими приме- на таких неинтересных направлениях,
№10, октябрь 2006
GNU/misc/second-look-at-CatB.html. 5. http://www.nixp.ru/news/7670 6. Бизнес модель Open Source – перспективы и угрозы. Elashkin Research – http:// www.elashkin.com. 7. http://www.nixp.ru/news/7583. 8. М а н и ф е с т L i n u x X P D e s k t o p – http://linux-online.ru /about /articles / detail.php?ID=897.
67
IMHO
Open Source взглядом оптимиста
Алексей Барабанов Стремительный рост числа программных проектов с открытыми исходными текстами и одновременно свободными от платы за использование создал ситуацию, когда явление, существующее де-факто, пока не получило всестороннего объяснения своего возникновения и развития, но уже породило множество спекуляций на этот счет.
Н
аиболее полный и многофакторный анализ явления Open Source дается в материалах Elashkin Research (http://www.elashkin.com), а именно в работе «Бизнес-модель Open Source. Перспективы и угрозы». Можно даже сказать, что исчерпывающий. Но я предлагаю обратиться к указанному источнику лишь тем, кто нуждается в терминологических пояснениях, то есть не знает ничего о предмете, или склонен к академическому способу мышления, то есть хочет знать все. Я не буду ставить перед собой цели объять необъятное. Отвечу лишь на один главный вопрос: есть ли нечто, что угрожает Open Source? В обсуждении будем придерживаться терминологии, введенной упомянутой статьей, и главный объект называть Open Source Software (OSS) или про-
68
граммное обеспечение (ПО) с открытым кодом, понимая под этим как результат работы, так и саму процедуру его создания. Итак, в чем феномен OSS? Он проявляет себя и в сфере технологий, и в сфере общественных отношений, а главное, в сфере экономики. Можно бесконечно долго восхищаться тем, как проекты OSS создаются, казалось бы, сами собой, можно бесконечно долго митинговать на тему противостояния «старого мира» и сторонников OSS, но самое главное, что бизнес OSS на первый взгляд не содержит стандартной экономической цепочки «товар-деньги-товар». Вот, что особенно поражает при рассмотрении OSS, то, что производитель отдает товар даром! Где же тут бизнес? Можно ли после этого разработчиков считать
профессионалами, если по всем формальным признакам их деятельность напоминает хобби? Именно этот парадокс создал целую школу наукообразных фантазеров, рассуждающих о том, что качество OSS не соответствует качеству проприетарных проектов. И, мол, управление там ненадежное, и контроль недостаточный, а самое тревожное в том, что производители не заботятся о благе потребителей, так как не получают за работу деньги. Ну и после такого «веского» аргумента, радетели за качество, как ловкие ярмарочные фокусники, предлагают немедленно облегчить карманы зевакам, призывая их заплатить за проприетарное ПО, которое, по мнению добрых проповедников, спасет Мир. Спрашивается, может ли подобное явление, как кажется на первый взгляд,
IMHO игнорирующее все экономические за- ронних обязательств. Старая формула коны, оказывать такое сильное влияние «товар-деньги-товар» была сильна тем, на экономику? Одно из двух: или OSS – что деньги считались абсолютной ценэто секта, религия или партия анархис- ностью. Но в условиях современного тов, тогда «ату их» без всяких рассуж- мира использование банковских биледений о выгодности или невыгодности тов и даже виртуальных электронных для потребителей, так как в этом слу- денежных единиц ставит вопрос о гачае OSS – это уже общественно-по- рантии ликвидности самих оборотных литическое явление. Или OSS – это денег. Почему же покупка акций предвид новой экономики, и все противни- приятий зарубежных государств никоки OSS сознательно лгут! Думаю, вто- го не смущает, а вот возвратность инрое. И докажу это. Бизнес-модель OSS вестиций в OSS так тревожит? Дело полностью подчиняется всем экономи- в том, что реализация преимуществ ческим законам. В рамках этой моде- от производства OSS сопровождаетли потребители платят за товар, а про- ся большим числом условий. Даже саизводители получают деньги за работу. мо функционирование проектов OSS Начнем обсуждение с производителей, также возможно лишь при соблюдении так как именно эта сторона экономи- ряда условий. Теперь можно дать ответ на вопческой цепочки обязательно идентифицируется (хотя бы авторским правом) рос, почему так многочисленны вери поэтому в первую очередь подверга- сии защитников о преимуществах OSS и столь же велики числом доводы проется нападкам противников OSS. тивников. Все они описывают частные условия, гарантирующие или препятсРазработчики OSS не филантропы твующие реализации выгод, полученО, сколько догадок на счет мотива- ных от продажи продукции, созданной ции разработчиков OSS высказано OSS. Хотя ключевых факторов совсем в прессе и на страницах вполне серь- немного. И в упомянутой выше рабоезных монографий. И тема эта никогда те они названы среди прочих: «В осне исчерпается. Ключевое слово в этих нове этого явления лежит огромный опусах «даром». А логическая связ- рост скорости обмена информацией ка строится так: разработчик трудит- и чрезвычайно низкая стоимость этося – даром! Что такое «даром» в эко- го процесса». Конечно, не надо пониномике? Это значит, что в процессе мать, что, протянув высокочастотный передачи некоторого товара его стои- канал из Европы в Америку и дождавмость не учитывается. Ну а в отноше- шись амортизации его стоимости, мы нии разработчиков OSS, что они пи- создадим OSS. Ключевое слово – «Интаются святым духом, так как, создав тернет»! ценный продукт, не взяли за него плаВ становлении OSS сыграли главту. Если бы это было так, то тема OSS ную роль три фактора: исчерпала бы себя естественным пу- 1. Интернет, как средство доставки, позволивший сделать почти бестем после смерти от голода последнего безумного разработчика. Учитывая, платными как передачу (размечто обычный человек без пищи не смощение), так и получение (загрузжет прожить более месяца даже с поку) программной продукции. Примеры: мощью мантр, то OSS не продержалось бы такое время и уж точно не смогло владение недорогим хостингом расти подобными темпами. Значит, все обходится менее 80 $ в год; ложь с самого начала. С этого звонко неограниченный трафик достуго слова «даром». пен за 25 $ в месяц. Итак, первая аксиома: все участниЭтот фактор позволяет снизить стоимость оборота продукции OSS ки процесса OSS со стороны разработи одновременно реализовать ряд ки за свой труд получают... выгоду! преимуществ путем привлечения Не деньги, а именно выгоду, некоопределенной аудитории к сайтам, торое преимущество, стороннее обясвязанным с OSS. зательство и прочее. Именно поэтому возникает вопрос об условиях реали- 2. Интернет, как средство рекрутизации этой выгоды, или о ликвидносрования и интеграции разработти полученных преимуществ или сточиков OSS.
№10, октябрь 2006
Примеры: все проекты имеют свои «домашние» сайты и электронную почту для связи с разработчиками; создаются даже специальные бесплатные виртуальные места для размещения проектов OSS и организации их разработчиков. Этот фактор снижает стоимость разработки и сопровождения OSS и обеспечивает ее сотрудниками. 3. Интернет, как среда электронных платежей. Примеры: для работы с OSS и аналогичной продукцией были созданы специальные платежные системы, ориентированные на небольшие и очень быстрые переводы. Это самый важный фактор для реализации выгод от продажи продукции OSS. Он единственный обеспечивает прямую конвертацию в денежный эквивалент. Могут ли перечисленные факторы исчезнуть или перестать действовать? Иначе говоря, угрожает ли что-то Интернету? Конечно, да! Война, например. Стоит ли об этом беспокоиться? Конечно, да! Стоит ли это обсуждать не как фактор политики, а именно отраслевой экономики? Конечно, нет! А теперь, учитывая, что перечисленные факторы обеспечивают возможность производства продукции с минимальными издержками, на основе эффективной системы групповой работы и создают возможность получать за это живые деньги, стоит ли обсуждать проблемы тех, кто не умеет воспользоваться очевидными преимуществами? Ведь это подобно тому, что нуждающийся увидел деньги и прошел мимо! То есть совершенно не соответствует природе человека. Смотрите, что выходит. Разработчику необходимо получать плату за свой труд, чтобы иметь средства к существованию. Участие разработчика в проекте OSS обеспечивает такую возможность. Что еще надо, чтобы доказать, что разработчики все-таки имеют доход от своей деятельности? Скептики хотят узнать «как»? Надо «схватить за руку» и прямо вручить «ключи от квартиры, где деньги лежат», а то ведь не поверят! Но не забывайте, в этом разделе мы обсуждаем только сторону разра-
69
IMHO ботки. То есть здесь не будем затраги- частность к группе! И аналогично, они работка на OSS с помощью сервисновать, «почему» платят за бесплатные с удовольствием поддерживают OSS- го обслуживания: «...на практике высопродукты категории OSS, а просто при- проекты, так как им важно, что такая кий уровень сервисов в IT-экономике поддержка приносит им уважение! характерен как раз для развитых рынмем, что это есть. Допустим это! Вот она, «экономика наоборот»! ков и «богатых» стран.» Но далее они Итак, если допустить, что некие потребители все-таки вопреки быто- В условиях современного индустри- делают главную ошибку. Они считают вой логике платят за бесплатные про- ального общества, когда уровень бла- услуги по сопровождению OSS главдукты, то нет никаких препятствий для госостояния, уровень гарантирован- ным источником дохода в бизнес-моразработчиков OSS получать эту пла- ных удобств и уровень гарантирован- дели Open Source. И все их заблуждету и данному процессу ничто не угро- ного качества окружающих вещей на- ния, обиды и сетования на обманутые жает. Значит, настало время обсудить столько высок, что индивидуум даже ожидания основаны на этой вздорной мотивацию потребителей продукции, не желает обсуждать вопросы цены, идее. Например, можно там прочесть распространяемой OSS. поскольку разница в качестве конку- такую фразу: «В отсутствие примеров рирующих предложений уже несущес- стран с высокой долей Open Source...». твенна. Именно в этом случае важны- Что это? Неужели кто-то ждет появПотребителям нравится платить за продукты, ми становятся вторичные и зачастую ления стран с доминирующим уровсозданные как OSS бесплатные добавки в виде OSS-про- нем сервисных услуг? Ну, разве лишь Вот это самое спорное утверждение. дукции, которая и трансформируется кто-то очень наивный. Это все равно, Именно здесь скрыт секрет успеха OSS. в средство обозначения принадлеж- что требовать от всего гражданскоСкептик с незамысловатым умом ска- ности к группе и способа достижения го населения высокой сознательносжет, что такое невозможно, зачем пла- общественного уважения! Нет, де- ти прямо с пеленок. Утопия! Но с друтить за то, что получают даром! И здесь ньги никуда не исчезают. И труд тоже. гой стороны, чем не упрек OSS? Вот, обычно сторонники OSS начинают нуд- Но, присоединяясь к группе, труд раз- мол, не сможете победить и не смоный разговор о вторичных способах по- дают даром, а ожидая уважения, так- жете заменить Linux-ом MS Windows! А зачем? Человек не может питаться лучения дохода, а значит и о вторичных же раздают и деньги! способах взимания платы. Ну, вроде тоГоспода из Elashkin Research пишут только сладким эскимо, смотреть тольго, что «бесплатный сыр только в мы- об этом так: «...OSS использует более ко боевики, читать только детективы шеловке» и прочее. Чем сами себя современные модели маркетинга...», и всю сознательную жизнь не работать в угол загоняют, кроме того, что прояв- и чуть далее «...методы движения Open по найму, а играть в теннис. Возможно, Source ближе всего к методам ново- это идеал для кого-то, но не правило. ляют еще и чудеса сутяжничества. При обсуждении этого вопроса про- модных сект и религиозных течений.» Пирамида Маслоу сужается к вершитивники OSS рассматривают мотива- От таких слов хочется поморщиться не – вот это правило! Поэтому одно цию абстрактного отдельно взятого че- и сказать, что здесь явно происходит из ключевых утверждений аналитики ловека и задают вопрос, «зачем пла- манипуляция истиной. Хотя далее они от Elashkin Research, что «тезис о польтить за то, что даром». Это логическая же признаются: «Основной вектор рас- зе OSS для ускоренного развития рынловушка. Надо рассматривать не отде- пространения OSS направлен на тех- ка высоких технологий пока не находит льного человека, а общество в целом нических специалистов и социально своего подтверждения», не более чем или отдельного человека в обществен- активных людей...». Ну, здесь совсем уловка (или ошибка, не знаю, что хуном окружении. Как формируется моти- немного осталось, чтобы догадаться, же). Дело в том, что не OSS приводит вация такого человека? Есть уже дока- что «технические специалисты и соци- к развитию высоких технологий, а раззанная теория об иерархии потребнос- ально активные люди» – это именно те, витие технологий в высокоразвитой тей, известная как пирамида Маслоу. кто занимает верхушку пирамиды Мас- общественной среде порождает OSS! Зарождение OSS является «лакЧего может добиться человек, оплатив- лоу. Может быть, в следующем опусе ший бесплатный продукт? Если он на- специалисты из Elashkin Research оз- мусовой бумажкой», отмечающей доходится на низшей ступени, где важно вучат и эту мысль. стижение обществом определенного удовлетворение физиологических потТеперь снова зададимся вопросом, уровня развития как в технологичесребностей, то такой поступок приведет что угрожает OSS с этой точки зрения. ком плане, так и в плане общественк тому, что далее ему не хватит средств Что может разрушить иерархию пот- ных отношений. Поэтому все рассуждля чего-то насущного. Если он нахо- ребностей и отбросить людей на ниж- дения от Elashkin Research на счет OSS дится на ступени, где важна его бе- ние уровни? Ответ очевиден: факторы, в России, а особенно выводы, построзопасность, такая растрата уменьшит которые могут привести к экономичес- енные на российской статистике, смебюджет мероприятий безопасности. кому регрессу. Даже более того, только ху подобны. OSS в России нет! Есть А вот если он уже стоит на том уровне, в развитых странах, где число граждан, разработчики-россияне, участвующие где важны потребности группы, или да- соответствующих верхним уровням пи- в международных OSS-проектах. Есть же там, где важно уважение его самого, рамиды Маслоу, достаточно велико, отдельные компании, ведущие успешто все кардинально меняется. может зародиться и развиваться дви- ный бизнес в секторе OSS. Но никакое В этом секрет того, что люди при- жение OSS. Специалисты из Elashkin внедрение OSS в странах с развивасоединяются к OSS-проектам и ниче- Research приходят к тому же выводу ющейся экономикой, например в Инго не просят взамен – им важна при- путем анализа вторичных способов за- дии, в Китае и в обсуждаемой России,
70
IMHO не изменит статус этих стран. Так как подобные страны становятся лишь нахлебниками OSS-проектов и попадают в зависимость от них. И тут уже совершенно правильно отмечено, что «дальнейшее развитие IT в стране будет тормозиться.» Я бы даже усугубил. OSS – это реинкарнация «халявы». В свое время украденные технологии IBM 360 сыграли решающую роль в погребении отечественной IT. И теперь выживет лишь та страна, которая не только возьмет все от OSS, но и вернет обратно не менее! Значит, лишь тогда можно утверждать о существовании OSS в России, когда наша страна станет оплачивать собственные проекты OSS, и эти проекты станут востребованы за рубежом. А в противном случае все мы превратимся в обслуживающий персонал, сопровождающий чужие OSS-проекты. И вот аксиома номер два: потребители продукции OSS всегда на выбор или оплачивают продукцию, или присоединяются к разработчикам, то есть возвращают труд, но делают это после получения продукта. Говоря иначе, потребители OSS вынуждаются или работать на него, или платить за него. И поэтому распространение OSS в станах третьего мира может привести лишь к тому, что где-то в Центральной Африке станут чтить нового белого колдуна Марка, но не стоит ждать, что появятся африканские инкубаторы OSS, которые будут рекрутировать в свои проекты европейцев. OSS – это своего рода «троянский конь». Принятие такого подарка не принесет ничего хорошего никакой «Трое». Вы все еще думаете, что за OSS никто не платит? В отсталых странах да, в передовых выстраиваются в очередь! Иначе говоря, для развитых стран OSS давно уже стал инструментом влияния и национальной гордости. Гордость в розницу не продают, но все за нее платят.
Перспективы OSS Cтало ясно, что внутри OSS все готово для получения доходов, а потребительская среда точно так же готова платить, если не прямо по счету, то опосредованно как минимум. Так что же теперь мешает создать и развивать OSS, например, в той же России? Может, нужен
№10, октябрь 2006
указ Думы, и тогда мы все бросимся признать достаточными, то последписать «бесплатные программы»? ним требованием будет финансироЧто вообще нам для этого нужно? вание. То есть надо «влить» в систеДешевый Интернет? Смотрю на свой му «кровь», и она заработает. Вот этоADSL-роутер, вроде уже есть. Высоко- го-то и не происходит! Никакие сервисные услуги не наразвитое демократическое общество? Смотрю на экран телевизора, говорят, кормят разработчиков, которые должчто тоже есть. Обеспеченные гражда- ны не крутиться вокруг серверов и ране с высоким уровнем самосознания? бочих станций, а писать код в комСмотрю в окно на проезжающие доро- фортных условиях. Значит, все столь гие автомобили и догадываюсь, что их бурно обсуждаемые вторичные спотоже изрядно. Почему же нет OSS? собы заработка не смогут сыграть суТут мне возразят: «А как же ALT Linux, щественной роли в становлении OSS, Этерсофт и другие, которые разра- так как эти поступления будут оседать батывают оригинальный отечествен- на счетах сервисных же предприятий ный OSS?» Дело в том, что эти компа- и не дойдут до разработчиков, если нии вынуждены строить свой бизнес только... если только сами сервисные по традиционной схеме, и их бюджет компании, как IBM и Novell, не осозпополняется из поступлений от про- нают необходимость отчислений! Вот, даж по традиционным физическим опять пришли к мысли о иерархии потканалам. Сравните их с Fedora Project ребностей. или с openSUSE. Почувствуйте разниТеперь просуммируем все ранее цу между мелкими частными инициа- сказанное, применительно к вопросам тивами и деяниями транснациональ- финансирования. Итак, объект финанных корпораций. Для того чтобы OSS- сирования – это компания, ведущая проект мог успешно развиваться, он OSS-разработки методами, описанне должен попадать в тиски жестких ными в первом разделе настоящей потребительских требований. То есть статьи. То есть компания со столь вынадо исключить диктат неграмотного соким уровнем виртуализации своей потребителя, голосующего «рублем». деятельности, что ее капитализация А в случае ALT Linux и Этерсофт это и IPO на рынке ценных бумаг в эконовсего лишь удачный частный бизнес мической системе, ориентированной группы лиц, но никто из нас не готов на сырьевые отрасли, вряд ли возего спонсировать просто так. И мно- можна. Источник финансирования – гочисленные фонды, поощряющие это частные лица и компании, готоразвитие технологических проектов, вые к поощрению проектов с негаранна зарубежные гранты тоже не готовы. тированной финансовой отдачей или И многочисленные комитеты, растра- вообще к спонсированию, что в услочивающие российский бюджет, как нам виях фискальных налоговых законов говорят, на развитие наукоемких про- тоже невозможно. Способ финансиектов, тоже не готовы. И даже россий- рования – это целевые перечисления, ские олигархи, времени которых хва- управляемые и контролируемые неготает на вздорные телепередачи по по- сударственными и коммерчески толеиску менеджера-эксгибициониста, то- рантными комитетами, что в условиях же не находят здесь своего интереса. коррумпированного государства тоже, То есть наше общество не готово к со- увы, невозможно. У вас еще остались вопросы о том, зданию собственного OSS. И поэтому с удовольствием потребляет и обслу- что мешает OSS и угрожает его развиживает зарубежный. тию? Сами подумайте, если предприТут самое время задать вопрос, ятие, называемое коммерческим, ота в какой форме общество может вы- дает свою продукцию даром, а с другой разить свой интерес в OSS. Не будем стороны, существует иное предприобсуждать зарубежные страны. Попро- ятие, для которого никакой проводкой буем ответить, как это может произой- в балансе и никакой производственной необходимостью не оправдать оплату ти в нашем отечестве. Ключевой момент – это обеспече- работы, которая фактически достаетние финансирования. Если уровень ся ему даром, то как может расценить технологии и подготовка среды по- такую ситуацию типичный простоватенциальных разработчиков можно тый российский налоговик?
71
IMHO Но зато теперь можно сказать, ког- му и коммунистическому. Отсюда и нада у нас появится отечественный OSS. прасное ожидание, что Linux и все проЭто случится, когда «...одна палочка дукты, произведенные OSS, окажутся и девять дырочек сокрушат целое вой- дешевле проприетарных. А происходит ско, когда король...». Ой, чуть раньше, ровно наоборот. Именно Linux получаконечно, но условия не менее сказоч- ется дороже в эксплуатационном цикные. Тогда, когда наше общество на- ле для корпоративных потребителей, кормит бедных, обеспечит стариков, чем MS Windows. Да, согласен, потоустроит инвалидов и успокоит неурав- му-то я и работаю на Linux, что это приновешенных экстремистов. Вот тог- носит больше прибыли при меньших да терпимость и доброжелатель- усилиях. Linux и другие OSS являютность в обществе возрастут настоль- ся следующей за проприетарными моко, что отечественные OSS-разработки делями формой развития IT-отрасли. получат финансовую поддержку, и ник- И соответственно они несут большую то не нее не покусится, как сейчас все эксплуатацию разработчикам, дороже на злосчастный стабилизационный для потребителей и выгоднее для инфонд, который потому и стабилизаци- весторов. Но не надо ждать, что движеонный, что его тратить нельзя. ние OSS будет добиваться успеха повсеместно. С появлением коммунистических и развитых демократических Выводы Для многих противостояние OSS стран на планете Земля история мнои проприетарного ПО сосредоточе- гих феодальных и даже рабовладельно в соревновании Linux vs Windows. ческих государств вовсе не завершиЭто очень примитивно, но почти вер- лась путем добровольного присоедино. Ошибкой является стереотипное нения к СССР. Но так же, как неизбеприравнивание MS Windows к старому жен прогресс в общественных отношеи капиталистическому, а Linux – к ново- ниях, так и распространение OSS уже
72
не остановить. Потому что он усилиями таких компаний, как IBM и Novell, превращается в инструмент неоглобализма. И теперь можно ответить на вопрос, угрожает ли что-нибудь OSS. Нет, не угрожает! Напротив, это сам OSS угрожает оригинальным коммерческим проектам. Чужой, импортированный OSS – это быстрая и сладкая смерть национальной IT-индустрии той страны, которая не сможет противопоставить аналогичный свой OSS. Зачем вывозить «мозги»? Можно подарить «бесплатный» OSS и тем привлечь чужих специалистов к обслуживанию наукоемкой индустрии «доброго дяди» взамен отечественной. Столлман со товарищи, конечно, революционеры. Но как учит История, после каждой революции создается свой «НКВД», и за каждый подарок прогресса надо платить. Обесценив процесс получения программных продуктов, ведущие индустриальные страны подняли цену его владения на недосягаемую для прочих высоту!
bugtraq Переполнение буфера при обработке ELF-файлов в Linux-ядре Программа: Linux kernel версии до 2.6.17.11. Опасность: Низкая. Описание: Уязвимость существует из-за ошибки на платформах IA64 и SPARC при обработке определенных ELF-файлов. Локальный пользователь может с помощью специально сформированного ELF-файла аварийно завершить работу системы. URL производителя: http://www.kernel.org. Решение: Установите последнюю версию ядра (2.6.17.11 или выше) с сайта производителя.
Целочисленные переполнения буфера в FreeBSD Программа: FreeBSD 5.2-5.5. Опасность: Низкая. Описание: 1. Уязвимость существует из-за ошибки проверки входных данных в реализации ядра в i386_set_ldt(). Локальный пользователь может вызвать панику ядра. Также существует потенциальная возможность выполнения произвольного кода. 2. Целочисленное переполнение буфера обнаружено из-за недостаточной обработки входных данных в функции i386_set_ldt(). Локальный пользователь может вызвать отказ в обслуживании системы. URL производителя: http://www.freebsd.org. Решение: В настоящее время способов устранения уязвимости не существует.
Переполнение буфера в Sun Solaris Программа: Sun Solaris 8, 9, 10. Опасность: Низкая. Описание: Уязвимость существует из-за ошибки проверки границ данных в libX11. Локальный пользователь может вызвать переполнение буфера и выполнить произвольный код на целевой системе с привилегиями приложения, динамически подключенного к библиотеке. URL производителя: http://www.sun.com. Решение: Установите последнюю версию с сайта производителя.
Переполнение буфера в libX11 Программа: libX11 до версии X11R6.5.1. Опасность: Низкая. О п и с а н и е : П е р е п ол н е н и е буф е р а о б н а ру же н о в _XKB_CHARSET-переменной окружения, когда DISPLAY установлен как «X Window System server» с включенным XKEYBOARD-расширением. Успешная эксплуатация уязвимости позволяет получить привилегии приложения, динамически подключенного к библиотеке. URL производителя: http://www.libx.org. Решение: Установите X11R6.5.1 или более позднюю версию.
№10, октябрь 2006
Обход ограничений безопасности в PHP Программа: PHP 4.4.4 и более ранние версии, PHP 5.1.6 и более ранние версии. Опасность: Низкая. Описание: Уязвимость существует из-за недостаточного ограничения на смену параметров safe_mode и open_basedir в функции ini_restore(). Если эти ограничения установлены в настройках виртуального хоста веб-сервера, а в файле php.ini находятся значения по умолчанию, злоумышленник может восстановить значения по умолчанию и обойти ограничения, установленные в конфигурационном файле вебсервера. Пример уязвимой конфигурации: <Directory /usr/home/frajer/public_html/> Options FollowSymLinks MultiViews Indexes AllowOverride None php_admin_flag safe_mode 1 php_admin_value open_basedir /usr/home/frajer/public_html/ </Directory>
Эксплоит: <? echo ini_get("safe_mode"); echo ini_get("open_basedir"); include("/etc/passwd"); ini_restore("safe_mode"); ini_restore("open_basedir"); echo ini_get("safe_mode"); echo ini_get("open_basedir"); include("/etc/passwd"); ?>
Удачная эксплуатация уязвимости позволит злоумышленнику получить доступ к содержимому произвольных файлов на системе. URL производителя: http://www.php.net. Решение: В настоящее время способов устранения уязвимости не существует.
Множественные уязвимости в IBM Director Программа: BM Director 5.x. Опасность: Низкая. Описание: 1. Уязвимость существует из-за недостаточной обработки входных данных в параметре file в файле Redirect. bat. Удаленный пользователь может просмотреть содержимое произвольных файлов на системе. Пример: http://[host]:411/cgi-bin/Redirect.bat?file= ↵ %7C..\..\..\..\..\..\....\..\[file]
2. Уязвимость существует из-за ошибки при обработке запросов к WMI CIM-серверу. Удаленный пользователь может аварийно завершить работу службы. 3. Уязвимость существует из-за ошибки при обработке запросов. Удаленный пользователь может аварийно завершить работу IBM Director. 4. Удаленный пользователь может получить доступ к файлам куки и аутентификационным данным в HTTP-заголовках с помощью функционала HTTP TRACE. URL производителя: http://www.ibm.com. Решение: Установите последнюю версию (5.10) с сайта производителя.
Составил Александр Антипов
73
образование
Python – в школу!
Сергей Супрунов Современная жизнь без компьютеров уже немыслима, и чтобы чувствовать себя в этом мире достаточно уверенно, понимание того, как эти «ящики» работают, просто необходимо. И закладывать это понимание нужно на самых ранних этапах образования, начиная со средней школы.
Что должно быть на уроках информатики? Сейчас со школьным предметом «Информатика» сложилась довольно неприятная ситуация – он теряет роль
74
фундаментальной дисциплины, вырождаясь в некие курсы подготовки секретарей-машинисток. Однако основная задача средней школы – дать общее образование,
то есть понимание процессов, которые заложены в то или иное явление. Мы же не учим детей на уроках физики, как менять головку блока цилиндров двигателя ЕМЗ-236? И на биоло-
образование Ну а как тогда объяснить школьни- те с учениками, постепенно наращигии не преподаётся практика протезирования зубов. Эти вопросы – уже за- ку, как именно работает операционная вая сложность и позволяя на первых дача профессионального образования, система или тот же Word? Без понима- этапах получить осязаемый резульно никак не общего. ния основ программирования, без при- тат, не углубляясь в излишние подА вот с информатикой получилась косновения к ним на практике инфор- робности. ситуация как раз противоположная. мационные системы так и останутся Во-вторых, такому языку програмОпределённые «общие» понятия, та- «чёрными ящиками», а неизвестность мирования нужна определённая «прокие как архитектура ЭВМ (по плака- ведь всегда пугает. зрачность», чтобы детали работы разЕстественно, не нужно ставить сво- рабатываемой программы не были там, нарисованным в 80-х годах) и основы алгоритмизации, по инерции ей задачей научить школьника писать скрыты за «виджетами и прочими гадещё преподаются, хотя порой и с до- драйверы к Linux или полнофункцио- жетами». В-третьих, он должен быть совревольно сильным отрывом от действи- нальные клиенты для сетей BitTorrent. Но показать частичку этого «вол- менным. Не нужно бояться расскательности. А вот практическая составляющая шебства», когда из нескольких десят- зывать детям про объектный подсводится к программам типа «Вве- ков строк самых обычных букв и цифр ход к программированию, про модудите A, введите B, получите A + B» рождается работающая программа – ли и библиотеки. Ведь это всё есть, на Бейсике и «глубокому» освоению это просто необходимо. на этих понятиях основана работа совПричём важным моментом здесь ременных вычислительных систем, процедуры создания таблицы в Word, когда любое отклонение мышки от за- является «жизненность» этих экспери- с этим ученикам предстоит столкнутьданной преподавателем траектории ментов, их соответствие современным ся в будущем, если они выберут себе жестоко карается... стандартам и тенденциям. Ну и, конеч- специальность, связанную с компьюМне кажется, такой подход как раз но же, полезность, практическая цен- терами. В конце концов базовые кони приводит к тому, что, устроившись ность. Если программа не вписывается цепции ООП совсем не сложнее органа работу или поступив в вуз, недав- в интерфейс нынешних систем и не де- нической химии и общей теории отноний ученик как огня боится компью- лает ничего полезного, то её разработ- сительности. В-четвёртых, было бы хорошо, естера, полностью теряет ориентацию ка вряд ли сможет вызвать необходив системе при минимальных измене- мый интерес и желание действитель- ли бы выбранный язык программирониях интерфейса и при всплывании но разобраться во всей этой «кухне», вания был «практикующим». То есть любого окошка, не упомянутого в инс- вместо того чтобы просто «содрать» это должен быть не искусственный, пусть и идеально соответствующий цетрукции, бежит к системному адми- код у соседа по парте. нистратору. лям образования, а всё-таки реальный По моему глубокому убеждению, Что нам надо от языка инструмент. Если навыки, полученные сейчас назрела необходимость вер- программирования? в школе, нельзя будет применить донуть информатике былую «фундамен- Итак, возникает следующий вопрос – ма для разработки какой-нибудь «затальность», когда изучаются не пос- а какой же язык программирования пускалки для игрушек», то их ценледовательность «кликов» для запус- лучше всего подходит на роль «учебно- ность будет уже заметно ниже. А еска веб-браузера, а основы архитекту- го»? Традиционно это Basic или Pascal, ли эти знания пригодятся и в универры операционной системы и её орга- но, к сожалению, сейчас они несколь- ситете, и на работе – так вообще занизация; не назначение иконок на па- ко устарели. Впрочем, чтобы не гадать мечательно. Ну и, наконец, дополнительными нели инструментов в Excel, записыва- на кофейной гуще, попробуем сформуемое под диктовку, а базовые поня- лировать основные требования, кото- плюсами будут доступность самого тия графического интерфейса поль- рым должен (по крайней мере, в идеа- языка программирования и среды раззователя... Причём в идеале – абс- ле) соответствовать язык программи- работки, а также его многоплатфортрагируясь от конкретной операци- рования для школы. менность, то есть возможность испольВо-первых, он должен быть прост зовать его независимо от того, рискнёт онной системы. Безусловно, практическая рабо- и понятен. Если для того, чтобы вывести ли школа выбрать в качестве базовой та тоже необходима, но именно как на экран любимое всеми «Hello, world!», платформы Linux или «останется верпрактикум, дополняющий основной потребуется целую четверть рассказы- на» системам Windows. курс. вать пятиклассникам про «кучи», стеки и динамическое выделение памя- Почему Python – лучший ти, то такой язык должен быть отбро- выбор? Нужно ли изучать языки программирования? шен сразу. Теперь попытаюсь объяснить, почеНо с другой стороны, он также му я вынес в заголовок статьи именПонятно, что компьютеры изучать необходимо. А нужно ли в школе препо- не должен быть и слишком прос- но Python. Анализ сформулировандавать программирование? Ведь мы тым, не позволяющим «выпрыгнуть» ных выше критериев показывает, что только что решили, что не стоит гото- за пределы элементарных консольных Python в той или иной мере соответсвить из учеников полноценных специ- диалогов. То есть в идеале язык про- твует всем этим требованиям. Написать первую программу на нём алистов в той или иной области, отби- граммирования должен обладать спорая хлеб у вузов и колледжей. собностью «эволюционировать» вмес- предельно просто:
№10, октябрь 2006
75
образование print ‘Ура! Я программирую!!!’
И всё! Если потребуется в будущем показать на практике концепцию переменных, просто развиваем этот скрипт: message = ‘Ура! ↵ Я использую переменные!!!’ print message
И так, шаг за шагом, можно зайти настолько далеко, насколько это потребуется. Вплоть до графического интерфейса и объектов. Причём Python позволяет выбирать любую стратегию преподавания: и быть «на шаг впереди», когда с каждым разом вводятся всё новые и новые понятия, и «на шаг позади», когда сами ученики начинают чувствовать, что какую-то задачу можно решить проще, и таким образом, задают темп движению вперёд. Python прекрасно подходит для демонстрации и пооперационного (линейного), и процедурного, и объектного подходов. Так что преподавателю не придётся переключаться с одного языка программирования на другой по мере усложнения излагаемого материала. Причём и работа с объектами, и программирование графического интерфейса осуществляются на Python достаточно легко и понятно, и в то же время без излишнего упрощения и «визуализации», позволяя разобраться, что называется, на нижнем уровне, как на самом деле формируются окна графического интерфейса и как на них появляются кнопки, поля ввода; почему что-то происходит, если щёлкнуть по той или иной кнопке, и т. д. По себе помню, сколько восторга доставляет простая линия на экране, но не прочерченная мышкой, а нарисованная моей собственной программой! Прозрачность Python тоже не вызывает сомнений – вплоть до того, что можно заглянуть в исходный код какого-то модуля и убедиться, что внутри у него всё то же самое, что рассказывает преподаватель. Да и что может быть прозрачнее, чем открыть обычный текстовый файл, ввести самые обычные строки и получить итоговый результат безо всякой компиляции, компоновки и т. п.? Прибавим к этому лёгкость, с ко-
76
торой читается код на Python. Программиста, написавшего тысячи строк на Java, все эти отступы могут раздражать, но для начинающего разработчика они позволяют не запутаться в собственном коде, не говоря уже про чужой. А ведь умение разбираться в чужом, уже готовом коде, и использовать его в своей программе – это тоже непременный и очень важный элемент программирования, о котором почему-то часто забывают. Далее, Python – безусловно, современный язык. Достаточно открыть любой дистрибутив Linux и посмотреть, что используется для многих средств администрирования и даже игр. Это же говорит и о том, что им пользуются на практике, что это – «живой», постоянно развивающийся язык программирования. Ну и то, что он совершенно бесплатен, не требует дорогостоящих инструментариев, замечательно работает практически на всех современных операционных системах, делает его ещё более привлекательным. А что же его «конкуренты»? Basic и Pascal, внеся немалый вклад в развитие информационных дисциплин, к сожалению, потеряли свою актуальность. Их «визуальные» последователи – Visual Basic и Delphi – мало пригодны для преподавания программирования, поскольку не позволяют видеть скрывающийся за «мастерами» код, и тем самым не дают полного понимания того, как на самом деле работают программы. Да и высокая стоимость инструментов разработки не позволяет их применять достаточно широко (даже если школы и получат их по какой-нибудь льготной «академической» лицензии, школьники всё равно будут лишены возможности поставить на свой домашний компьютер полноценную версию). Про языки «семейства Си» вообще можно не упоминать – их сложность просто непостижима для школьного уровня. К сожалению, сюда же я отношу и Java. Несмотря на высокую популярность этого языка, особенно в корпоративном секторе, и сравнительную простоту разработки, всё же его «абсолютная и непреклонная объектность» будет являться барьером на первых шагах обучения. Perl? Да, хороший, мощный, ни
в чём не уступающий языку Python. Но его вольный стиль и возможность писать код хоть ёлочкой, хоть столбиком, хоть вообще в одну строку – слишком тяжёлое испытание для неокрепших детских пальчиков, не привыкших к определённому стилю программирования. Да и графический интерфейс Python более «интегрирован» в язык, чем графические модули к Perl. Кроме того, следует отметить и более ясную и простую для понимания объектную концепцию Python. В последние годы Perl всё больше и больше вытесняется набирающим силу PHP, причём не только на ниве веб-программирования. Безусловно, это очень простой и понятный язык, но, на мой взгляд, он имеет и те черты, которые я отнёс к недостаткам языка Perl, в частности, излишнюю «вольность» стиля. Плюс к этому его (былая, но ещё не забытая) ориентированность на веб-разработку может привести к слишком однобокому подходу в его преподавании. Кстати, английского языка бояться не нужно. Есть мнение, что использование «реальных» языков программирования создаёт определённый барьер для детей, изучающих другой иностранный язык, не английский. Но поскольку в программировании не требуется знать времена глаголов и правила построения деепричастных оборотов, а выучить пару десятков новых слов – вряд ли такая уж непосильная задача, то на самом деле нет и никакого барьера. Так что различные искусственные языки вроде РЯПдш («Русский Язык Программирования для школы») лишь усложняют ситуацию, отрывая теорию от практики и плодя лишние сущности. Так что, при всём богатстве альтернатив Python, как мне кажется, на сегодняшний день является идеальным кандидатом, чтобы вдохнуть новую жизнь в такую жизненно необходимую (извините за каламбур) школьную дисциплину, как информатика. 1. Ремнёв А. А. Программирование в курсе средней школы. – http://som.fio.ru/ item.asp?id=10009522 2. Ильясов А. Н. Один из подходов к изучению программирования в базовом курсе информатики средней школы – http://www.ito.su/2001/I/I-2-38.html.
полезные советы Используйте функцию map() И не только её. Python предоставляет три мощных функции для обработки последовательностей – map(), filter() и reduce(). Первая позволяет применить к каждому элементу одной или нескольких последовательностей заданную функцию, вторая – получить подпоследовательность по тому или иному критерию, третья – «свернуть» последовательность (например, просуммировать все элементы): >>> def tostr(a, b): ... return a + b ... >>> list = [1,2,3,4,5] >>> map(str, list) ['1', '2', '3', '4', '5'] >>> filter(lambda i: i>3, list) [4, 5] >>> reduce(tostr, list) 15 >>> reduce(tostr, map(str, list)) '12345'
Это не только удобно, но и быстро, поскольку внутренний цикл этих функций реализован на C. Для функции filter() показано применение lambda-функции. Так же можно было бы поступить и в случае с reduce(), но для наглядности оставлен «классический» способ.
Подружитесь с lambda Иногда возникает необходимость использовать некоторую функцию «локально». В Python использовать безымянную функцию позволяет оператор lambda: >>> a = lambda a,b: a*a + a*b + b*b >>> a(2,3) # аргументы 2 -> a, 3 -> b 19 >>> (lambda a,b: a+b)(2,3) 5
Гораздо больший смысл она приобретает там, где синтаксис требует указать функцию, но определять её оператором def неудобно. Типичный пример – функции обработки последовательностей, описанные в следующем совете.
Складывайте строки вдумчиво Сложение строк в Python выполняется не слишком быстро. Поэтому если вам нужно получить строку из списка элементов, лучше использовать для этого метод join: #s = '' #for i in xrange(1000000): # s += str(i) s = ''.join([str(i) for i in xrange(1000000)])
Последняя строка, помимо того что занимает меньше места в коде, чем предыдущие три (которые закомментированы и соответствуют «стандартному» решению), ещё и отработает процентов на 15 быстрее. Если работать нужно с уже готовой последовательностью, как и бывает на практике, а не генерировать её искусственно, то прирост скорости будет ещё выше. А вот повсеместный совет вместо strA + strB использовать форматное преобразование ‘%s%s’ % (strA, strB), на практике не подтвердился – по крайней мере, в Python 2.4.3 простое сложение выполнялось примерно на 35% быстрее, чем форматирование. С ростом размера строк этот разрыв сокращается, но даже при сложении строк из 26000 символов традиционное суммирование выполнялось быстрее.
№10, октябрь 2006
Используйте xrange() В Python, как известно, нет цикла for в стиле языка C – здесь for выполняет проход по элементам последовательности (в Perl есть похожий оператор – foreach). Поэтому для построения циклов, записываемых, скажем, в Perl как for($i=0; $i < 1000; $i++), в Python используется функция-генератор последовательности – range(), формирующая список целых чисел, по которому затем и выполняется цикл: for i in range(1000). Однако это неэффективно на больших значениях – ведь сначала нужно создать список, разместить его в памяти, и только затем начнётся обработка цикла. Избежать этого позволяет функция xrange(), которая не формирует последовательность физически, а создаёт объект, который лишь имитирует её, генерируя нужные элементы по мере необходимости. Благодаря тому, что внутренне xrange() реализована на C, она выполняется довольно быстро. А поскольку последовательность не требует размещения в памяти, можно писать даже такие циклы: for i in xrange(10000000): . . . .
Использование range() с таким значением привело бы систему к непрерывному «свопингу».
Выносите максимум за пределы цикла Истина, известная любому студенту. В Python за пределы цикла можно вынести даже определение методов: list = [] func = list.append for i in xrange(5000000): # list.append(i) func(i)
Казалось бы – какая мелочь! Но благодаря тому, что на каждой итерации цикла интерпретатору не приходится искать метод append() у объекта list, этот код выполняется быстрее «обычного» почти на 30% (на реальных, более полезных циклах, конечно, прирост скорости будет не столь ошеломительным).
Живите в ногу со временем 19 сентября выпущен Python 2.5. Помимо ряда обычных для любой новой версии улучшений и исправлений ошибок, в синтаксисе языка появился ряд новых конструкций, а также заявлена более высокая скорость работы, особенно с Unicode-строками. Этот релиз объявлен как пригодный для промышленного использования, так что если вы желаете воспользоваться всеми этими преимуществами – смело ставьте новую версию.
Сергей Супрунов
77
программирование
Многоядерные процессоры и проблемы, ими порождаемые, в ОС семейства NT
Крис Касперски Многоядерные и Hyper-Threading-процессоры не только увеличивают производительность, но и порождают многочисленные проблемы – некоторые приложения (драйверы) начинают работать нестабильно, выбрасывая критические ошибки или обрушивая систему в голубой экран смерти. В чем причина такого поведения и как его избежать?
М
ногопроцессорные системы имеют свою специфику, с которой программисты, работа-
78
ющие на IBM PC, долгое время оставались совершенно незнакомы. Поначалу это не создавало никаких про-
блем, поскольку большинство людей видели многопроцессорные системы только на картинках, и только едини-
программирование цы могли позволить себе иметь такую ные машины» мы будем поштучку на рабочем столе. нимать как истинно мноТеперь же все изменилось. Исчер- гопроцессорные системы, пав резервы тактовой частоты, произ- так и компьютеры, построводители процессоров сначала пред- енные на базе многоядерложили нам Hyper-Threading (два вир- ных процессоров или протуальных процессора в одном), а затем цессоров с Hyper-Threading). и многоядерные процессоры (несколь- Прик ладное приложение ко полноценных процессоров на одном или драйвер устройства, кристалле). И хотя до «эмуляции» на- спроектированный для одстоящей многопроцессорной системы нопроцессорной системы, им еще далеко (многоядерные процес- не требует никакой адаптасоры имеют одну шину, один контрол- ции для переноса на многолер прерываний и т. д.), дефекты про- процессорную систему, есграммного обеспечения уже начина- ли, конечно, он спроектироют проявляться. ван правильно. Многие тиПроблема на самом деле очень се- пы ошибок (и в особенносрьезна и относится не только к про- ти ошибки синхронизации) граммис там- самоучкам, к лепаю - могут годами не проявлятьщим мелкие утилиты, но затрагива- ся в однопроцессорных конет и весьма именитые корпорации, фигурациях, но заваливав том числе специализирующиеся на ют многопроцессорную мамобильных устройствах. Вот что пи- шину каждые десять минут, шет AMD в руководстве по програм- а то и чаще. Исправление ошибок мированию под многоядерные процессоры: «...the primary issues that the требует переделки исходных Рисунок 1. В симметричной многопроцессорной системе (которой является Windows NT и ее mobile industry typically faced involved текстов (иногда очень знапотомки), каждый поток может исполняться maximizing performance in a battery- чительной), но… что делать, на любом процессоре operated environment, handling sleep если все, что у нас есть – это states and non-standard display and двоичный файл? Хорошо, если дефек- точное приложение, на многопроцесI / O s u b sys te m s , a n d l ow -vo l t ag e ты исправлены в новой версии (кото- сорной машине оно будет выполняться considerations. Thus, many device рая, между прочим, денег стоит), а ес- с той же самой скоростью, что и на однопроцессорной (или даже чуть медdrivers were tuned to maximize reliability ли нет? and performance in those singleprocessor Эта статья адресована как самим леннее, за счет накладных расходов mobile environments: and many haven’t разработчикам, так и продвинутым на поддержку многопроцессорности) even been tested in a multiprocessor пользователям, умеющим держать (см. рис. 1). Процесс – более крупная исполsystem, even in the manufacturer’s own hiew в руках и не шарахающихся в стоtest lab» («…основная проблема в том, рону от дизассемблера. Мы постара- нительная единица. Грубо говоря, это что мобильная индустрия в основном емся рассмотреть как можно больше «коробок», в котором находятся принасосредоточена на максимизации про- способов решения проблем, а вопро- длежащие ему потоки, исполняющиеизводительности в условиях питания сы правомерности модификации дво- ся в едином адресном пространстве. от батарей, обработке «спящего» со- ичного кода пускай решают юристы Каждый поток обладает своим собственным стеком и набором регистстояния, нестандартных дисплеев, и… моралисты. ров, но вынужден разделять глобальподсистемы ввода/вывода и уменьные переменные и динамическую пашении питающего напряжения. Поэ- Прикладной уровень тому большинство драйверов наце- Минимальной единицей исполнения мять вместе с другими потоками пролено на максимальную надежность в Windows является поток (thread), ко- цесса, что порождает проблему синхи производительность в однопроцес- торый в каждый момент времени мо- ронизации. Допустим, один поток высорном окружении. Многие из них жет исполняться только на одном про- водит ASCIIZ-строку на экран, а друне были протестированы на много- цессоре. Несмотря на то что в боль- гой – в это же самое время выполняпроцессорных машинах, даже в про- шинстве случаев этот процессор не яв- ет над этой строкой функцию strcat(), изводственных тестовых лаборатори- ляется жестко закрепленным и плани- удаляющую символ нуля до завершеях» (http://developer.amd.com/assets/ ровщик может запускать поток на лю- ния операции копирования. Как следс16_Interrupts.pdf)). бом свободном процессоре, поток ос- твие – первый поток «вылетит» за преОсновной «удар» различий одно- тается неделимым (как атом), и раз- делы строки и пойдет чесать напаи многопроцессорных машин опера- личные части потока никогда не выпол- ханную область памяти до тех пор ционная система и BIOS берут на се- няются более чем на одном процессо- пока не встретит посторонний нуль бя (примечание: здесь и далее по тек- ре одновременно. То есть, если в сис- или не нарвется на исключение типа сту под термином «многопроцессор- теме запущено только одно однопо- access violation.
№10, октябрь 2006
79
программирование
Рисунок 2. Архитектура контроллера прерываний на двухпроцессорной машине
Предотвратить такую ситуацию можно двояко. Либо перепис ать strcat() так, чтобы она сначала дублировала символ нуля, а только потом замещала его символом копируемой строки, либо воспользоваться одним из средств синхронизации, например, критической секцией, фактически представляющей собой флаг занятости. Поток, копирующий строку, взводит этот флаг перед вызовом strcat(), а поток, выводящий ее на экран, проверяет состояние флага и при необходимости ждет, пока тот не освобождается, и тут же взводит его вновь, чтобы во время вывода строки никто другой не вздумал ее модифицировать. В первом случае, требуется всего лишь переделать strcat(), а во втором – скоординировать действие нескольких потоков, малейшая небрежность в синхронизации которых оборачивается либо неполной синхронизацией (например, поток, выводящий строку на экран, не взводит перед этим флаг занятости), либо взаимоблокировкой (когда два или более потоков ждут освобождения друг друга, но никак не могут дождаться, поскольку один из них взвел флаг занятости и забыл его сбросить). К сожалению, при работе со сложными структурами данных без механизмов синхронизации обойтись уже не получается. Синхронизирующий код как бы «размазывается» по всей программе, и проверить его работоспособность становится очень трудно. Отсюда и ошибки. С Linux/BSD в этом плане дела обстоят намного лучше. Основной единицей выполнения там является процесс (поддержка потоков уже появи-
80
лась, но так и не сыскала большой по- вом C-функции и обращением к errno, пулярности). Процессы исполняются в это надо очень сильно «постараться». раздельных адресных пространствах А вот на многопроцессорной систеи могут обмениваться данными только ме, где несколько потоков выполнячерез явные средства межпроцессор- ются параллельно, вероятность одноного взаимодействия, что значительно временного вызова C-функций значиупрощает задачу синхронизации. тельно повышается и тщательно проТеперь поговорим о том, почему тестированная (на однопроцессорной на однопроцессорных машинах ошиб- машине), проверенная и отлаженная ки синхронизации проявляются зна- программа начинает регулярно падать чительно реже, чем на многопроцес- без всяких видимых причин! сорных. Дело в том, что при наличии только одного процессора потоки вы- Уровень драйверов полняются последовательно, а не па- Драйверы обычно не создают свораллельно. Иллюзия одновременного их собственных потоков, довольствувыполнения создается лишь за счет ясь уже существующими, но проблем того, что каждый поток работает в те- с синхронизацией у них даже больчение очень короткого (с человечес- ше, чем у приложений. Хуже всего то, кой точки зрения) промежутка вре- что на многопроцессорной системе одмени, называемого квантом, а потом ни и те же части драйвера могут односистемный планировщик передает уп- временно выполняться на различных равление другому потоку. Длитель- процессорах! Чтобы понять причины ность кванта варьируется в зависи- такого беспредела, нам необходимо мости от множества обстоятельств разобраться с базовыми понятиями (подробнее этот вопрос рассмот- ядра: IRQL и ISR. Планировка драйверов осущестрен в статье «Разгон и торможение Windows NT»), но как бы там ни было, вляется совсем не так, как потоков квант – это целая вечность для про- прикладного режима. Если прикладцессора, за которую он очень многое ной поток может быть прерван в люуспевает сделать. бое время безо всякого вреда, преРассмотрим следующую (кстати, рвать работу драйвера можно только вполне типичную) ситуацию. Поток вы- с его явного разрешения, иначе норзывает какую-нибудь функцию из стан- мальное функционирование системы дартной библиотеки C, а затем считы- станет невозможным. Драйверы, обвает глобальную переменную errno, рабатывающие асинхронные собыв которую функция поместила код тия, должны быть либо полностью реошибки. В многопоточной программе, ентерабельными (т.е. корректно «подвыполняющейся на однопроцессорной хватывать» новое событие во время машине, такая стратегия работает до- обработки предыдущего), либо какимвольно уверенно, хотя и является по- то образом задерживать поступлерочной. Существует угроза, что поток ние новых событий, пока они не разбудет прерван планировщиком после берутся с текущим. Первый механизм завершения C-функции, но до обра- гораздо более сложен в реализации. щения к переменной errno и управление получит другой поток, вызывающий «свою» C-функцию, затирающую прежнее содержимое errno. И, когда первый поток вновь получит управление, он увидит там совсем не то, что ожидал! Однако вероятность этого события на однопроцессорной машине крайне мала. Тело потока состоит из тысяч машинных команд, и переключение контекста может произойти где угодно. Рисунок 3. Уровни запросов прерываний и их назначение Чтобы попасть между вызо-
программирование Программисты, писавшие резидентов под MS-DOS, должно быть, помнят, как часто им приходилось пользоваться командой CLI, запрещающей прерывания на время перестройки критических структур данных. Допустим, наш русификатор устанавливает новый обработчик клавиатурного прерывания. Он записал в таблицу векторов свое смещение и только собирался записать сегмент, как пользователь вдруг нажал на клавишу, и процессор передал управление по адресу со старым сегментом и новым смещением. Программируемый контроллер прерываний (Programmable Interrupt Controller, или сокращенно PIC) оригиРисунок 4. Обработка аппаратных прерываний на машине с одним процессором нального IBM PC был построен на микросхеме i8259A, сейчас же контроллер прерываний встроен непосредственно в южный мост чипсета и эмулирует i8259A лишь в целях обратной совместимости. PIC имеет 15 линий прерываний, а каждая линия – свой приоритет. Во время обработки прерываний прерывания с равным или более низким приоритетом маскируются, так сказать, откладываясь на потом. Иногда это помогает, иногда нет. Например, если замаскировать прерывания от таймера более чем на один «тик», системные часы начнут отставать. А если проигнорировать прерывания от звуковой карты и вовремя не «скормить» ей очередную порцию данных, она начнет «бульРисунок 5. Маскировка прерываний драйвером на двухпроцессорной машине кать», заставляя пользователя рыдать от счастья и биться головой о монитор. ный. Нормальное выполнение потока гие программисты просто повышаПрерывания с более высоким приори- происходит на нулевом уровне, назы- ют уровень IRQL ядерной API-фунтетом прерывают менее приоритетные ваемом пассивным (PASSIVE), и его кций KeRaiseIrql (), а при выходе прерывания, возвращая им управле- может прерывать любое асинхрон- из ISR восстанавливают его вызовом ние после того, как они будут обрабо- ное событие, возникающее в системе. KeLowerIrql(). Даже если они не делатаны. Усовершенствованные клоны При этом операционная система повы- ют этого явно, за них это делает сисPIC (Advanced Programmable Interrupt шает текущий IRQL до уровня возник- тема. Рассмотрим происходящие соController, или сокращенно APIC) обес- шего прерывания и передает управле- бытия более подробно. Допустим, поток A работает печивают 256 линий прерываний и, ние его ISR (Interrupt Service Routine – в отличие от обычного PIC, способны процедура обработки прерывания), на уровне IRQL равном PASSIVE_LEVEL работать в многопроцессорных сис- предварительно сохранив состояние (см. рис. 4). Устройство Device 1 возтекущего обработчика. бу ж дает аппаратное прерывание темах (см. рис. 2). Приоритеты с номерами 1 и 2 отда- с уровнем DIRQL (т.е. с номером 3 до 31 Операционная система Windows поддерживает PIC и APIC контролле- ны под программные прерывания (на- включительно). Операционная систеры, но использует свою собственную пример, возникающие при ошибке об- ма прерывает выполнение потока A, систему приоритетов прерываний, из- ращения к странице памяти, вытеснен- повышает IRQL до DIRQL и передает вестную под аббревиатурой IRQL, ко- ной на диск), а все остальные обслу- управление на ISR устройства Device 1. торая расшифровывается как Interrupt живают аппаратные прерывания от пе- Обработчик прерывания обращаетRequest Levels (уровни запроса пре- риферийных устройств, причем преры- ся к устройству Device 1, делает с ним рываний). Всего существует 32 уров- вание от таймера имеет приоритет 28 все, что оно требует, ставит в очередь отложенную процедуру DpcForISR() ня, пронумерованных целыми числа- (см. рис. 3). Чтобы замаскировать прерыва- для дальнейшей обработки и понижает ми от 0 до 31. Уровень 0 имеет минимальный приоритет, 31 – максималь- ния на время выполнения ISR, мно- IRQL до прежнего уровня. Отложенные
№10, октябрь 2006
81
программирование
Рисунок 6. Обработка аппаратных прерываний драйвером на двухпроцессорной машине
процедуры (Deferred Procedure Calls, в то время как поток B выполняется или сокращенно DPCs) выполняются на процессоре 1 с тем же самым IRQL на IRQL, равном 2 (DISPATCH_LEVEL), (см. рис. 6). Устройство Device 1 посыи потому не могут начать свою работу лал процессору 0 сигнал прерывания. вплоть до выхода из ISR. Операционная система «ловит» его, Если во время выполнения ISR повышает IRQL процессора 0 до знавозникнет прерывание, то оно бу- чения DIRQL и передает управление дет замаскировано. Если прерыва- ISR устройства Device 1, которое делание возникнет во время выполнения ет с устройством что положено и стаDpcForISR(), операционная система вит в очередь отложенную процедуру прервет ее работу, передаст управ- DpcForIsr() для дальнейшей обработление ISR, который поставит в оче- ки. По умолчанию функция добавляредь еще одну отложенную процеду- ется в очередь того процессора, на кору и вновь возвратится в DpcForISR(). тором запущена ISR (в данном случае Таким образом, сколько бы прерыва- процессора 0). Устройство Device 1 вновь генений ни возникало, отложенные процедуры обрабатываются последователь- рирует сигнал прерывания, который на этот раз посылается процессору 1, но, в порядке очереди. На однопроцессорных системах та- поскольку процессор 0 еще не успел кая схема работает вполне нормально, завершить обработку ISR и не понино вот на многопроцессорных… каж- зил IRQL. Система повышает IRQL дый процессор имеет свой IRQL, не- процессора 1 до DIRQL и передает зависимый от остальных. Повыше- управление IRQ устройства Device 1, ние IRQL на одном процессоре никак который делает с устройством все не затрагивает все остальные, и ге- что нужно и ставит отложенную пронерация прерываний продолжается цедуру DpcForIsr() в очередь на про(см. рис. 5). цессоре 1. Допустим, поток A выполняется на Затем ISR на обоих процессорах процессоре 1 с IRQL=PASSIVE_LEVEL, завершаются, система понижает IRQL,
82
и начинается выполнение отложенной процедуры DpcForIsr(), стоящей как в очереди процессора 0, так и в очереди процессора 1. Да! Вы не ошиблись! Процедура DpcForIsr() будет исполняться сразу на обоих процессорах одновременно, отвечая за обработку двух прерываний от одного устройства! Как вам это нравится?! В такой ситуации очень легко превратить совместно используемые данные в мешанину, возвратив неожиданный результат или завесив систему (см. рис 7). Чтобы упорядочить выполнение отложенных процедур, необходимо использовать спинлоки (spin-lock) или другие средства синхронизации, работающие по принципу флагов занятости (см. рис. 8). Другим источником ошибок являются модификация кода ядра системы или загружаемых драйверов. Многие программы, такие как брандмауэры, антивирусы, защиты или вирусы, перехватывают некоторые функции для управления трафиком, автоматической проверки открываемых файлов и т. д. Модификация потенциально опасна даже на однопроцессорных машинах, а о многопроцессорных и говорить не стоит! Это отвратительный прием программирования, которого настоятельно рекомендуется избегать, но… он есть! И это факт! Большинство программистов просто внедряют в начало функции jump на свой перехватчик (предварительно скопировав оригинальные байты в свой же собственный буфер). При завершении работы обработчик выполняет сохраненные инструкции, после чего передает управление на первую машинную инструкцию перехваченной функции, следующую за командой jump. Поскольку на x86-процессорах длина команд непостоянна, перехватчику приходится тащить за собой целый дизассемблер (называемый дизассемблером длин). Однако это не самое страшное. Во-первых, посторонний отладчик мог внедрить в начало (или середину функции) программную точку останова, представляющую собой однобайтовую команду с опкодом CCh, сохранив оригинальный байт где-то в памяти. В этом случае вставлять jump поверх CCh ни в коем случае нельзя,
программирование поскольку отладчик может заметить, что точка останова исчезла, и поставить ССh еще раз, забыв обновить оригинальное содержимое, оставшееся от старой команды. Корректный перехват в этом случае практически невозможен. Теоретически можно внедрить jump во вторую инструкцию, но для этого нам необходимо определить, где заканчивается первая, а поскольку ее начало искажено программной точкой останова, для ее декодирования придется прибегнуть к эвристическим методам, а они ненадежны. К счастью, большинство Рисунок 7. Отсутствие синхронизации при обработке прерываний на двухпроцессорной функций начинаются со стандартномашине приводит к порче разделяемых данных го пролога PUSH EBP/MOV EBP,ESP (55h/8Bh ECh), поэтому, встретив пос- хваченных функций и, если это дейс- кают (если они вообще возникают, хуледовательность CCh/8Bh ECh, мы твительно «наш» адрес, выполняем ра- же когда программа делает из обрабавполне уверенно можем внедрять свой нее сохраненную машинную инструк- тываемых данных «винегрет») довольцию в своем буфере и передаем управ- но далеко от места «аварии». То же jump, начиная с MOV EBP,ESP. Вот только тут есть один нюанс. Ко- ление на вторую инструкцию перехва- самое относится и к голубым экранам манда ближнего перехода в 32-битном ченной функции. Снимать CCh ни в ко- смерти. Изучение дампов памяти дает режиме занимает целых 5 байт, поэто- ем случае нельзя! Поскольку в этот мо- довольно скудную информацию, осому для ее записи необходимо восполь- мент функцию может вызывать кто-то бенно если разрушены структуры данзоваться командой MOVQ, иначе мо- еще, но наш перехватчик «прозевает» ных, хранящиеся в динамической памяти, которая каждый раз выделяетдификация будет представлять неа- этот факт! Если же полученный адрес не «наш», ся по разным адресам, что затруднятомарную операцию. Задумайтесь, что произойдет, если мы записали 4 пер- мы передаем управление предыдуще- ет воспроизведение ошибки. При наличии исходных текстов вых байта команды JMP NEAR TARGET му обработчику INT 03h. То же самое командой MOV и только собрались до- мы делаем, если программная точка в первую очередь проверьте: не исписать последний байт, как внезап- останова была установлена еще до пе- пользуются ли во многопоточной проно пробудившийся поток захотел вы- рехвата. Тогда мы позволяем преды- грамме однопоточные версии бибзвать эту функцию? Правильно – про- дущему обработчику INT 03h восста- лиотек? В частности, компилятор новить ее содержимое, а сами ставим Microsoft Visual C++ поставляется изойдет крах! Но даже атомарность не спаса- CCh на следующую инструкцию. Ко- с двумя версиями статических бибет от всех проблем. Допустим, мы нечно, такой способ перехвата намно- лиотек С: LIBC.LIB – для однопоточзаписываем 5-байтовую команду го сложнее «общепринятого», зато он ных и LIBCMT.LIB – для многопоточJMP NEAR TARGET поверх 2-байтовой на 100% надежен и работает в любых ных программ. Динамически компонукоманды MOV EBP,ESP, естественно, конфигурациях – как одно- так и мно- емая библиотека MSVCRT.LIB используется как в одно- так и во многопоточзатрагивая следующую за ней коман- гопроцессорных. ных проектах. Также поищите прямые ду. Даже на однопроцессорных машивызовы CreateThread(). Со стандартнах существует вероятность, что какой- Пути решения проблем то из потоков был ранее прерван сра- Самое простое (и самое радикальное) ной библиотекой С они несовместимы зу же после выполнения MOV EBP,ESP, решение – указать ключ /NUMPROC=1 и потому должны быть в обязательном и когда он возобновит свое выполне- (или /ONECPU) в файле boot.ini, од- порядке заменены на _beginthread() ние, то… окажется посередине коман- ним росчерком пера превратив много- или _beginthreadex(). Все глобальные переменные (кроды JMP NEAR TARGET, что повлечет процессорную систему в однопроцесза собой непредсказуемое поведе- сорную. Правда, о производительнос- ме тех, что используются для обмена ти после этого можно забыть, поэто- данных между потоками) поместите ние системы. Алгоритм безопасной модифи- му прибегать к такому «варварскому» в TLS (Thread Local Storage – локалькации выглядит так: перехватываем методу стоит только в самых крайних ная память потока). На уровне исходINT 03h, запоминая адрес прежнего случаях, когда система регулярно сбо- ных текстов это делается так: обработчика, внедряем в начало пере- ит, а времени на поиски неисправности __declspec (thread) int my_var хватываемой функции CCh (если толь- и капитальный ремонт у нас нет. Кстати, поиск неисправностей – сако программная точка уже не установлена). При возникновении прерыва- мое сложное дело. Некорректная син- при этом компилятор создает в PE-файния INT 03h мы сравниваем получен- хронизация потоков приводит к порче ле специальную секцию .tls, куда и поный адрес со списком адресов пере- данных, и критические ошибки возни- мещает my_var, автоматически созда-
№10, октябрь 2006
83
программирование путь – достаточно исправить таблицу диспетчеризации прерываний (IDT – Interrupt Dispatch Table), разрешив каждому процессору обрабатывать прерывания только от «своих» устройств. Это практически не снижает производительности (особенно если быстрые и медленные устройства между процессорами распределяются по-честному, то есть равномерно) и ликвидирует ошибки синхронизации вместе с голубыми экранами смерти.
Заключение
Рисунок 8. Защита разделяемых данных спин-блокировками
вая отдельный экземпляр для каждо- шить и без правки – поменяв приориго из потоков. теты потоков. Если один из двух (или В отсутствие исходных текстов эту более) потоков, использующий раззатею осуществить труднее, но все- деляемые данные без синхронизации, таки возможно. Сначала необходи- получит больший приоритет, чем осмо найти переменные, к которым идет тальные, «расстановка сил» немедобращение из нескольких потоков. ленно изменится, и, возможно, она изЭто делается так: ищутся все вызовы менится так, что порча данных станет CreateThread()/_beginthread(), опреде- происходить не так часто, как прежде. ляется стартовый адрес функции пото- Нужные значения приоритетов подка и создается дерево функций, вызы- бираются экспериментально, а задаваемых этим потоком (для этого удоб- ются API-функцией SetThreadPriority(), но использовать скрипт func_tree.idc принимающей дескриптор потока. Вот от mammon, который можно скачать тут-то и начинаются проблемы. Мы мос www.idapro.com). Перечисляем гло- жем легко узнать идентификатор побальные переменные, упомянутые тока через функции TOOLHELP32: в этих функциях, и если одна и та C r e a t e T o o l h e l p 3 2 S n a p s h o t ( ) , же переменная встречается в дере- Thread32First()/Thread32Next(), оставьях двух разных потоков – смотрим ется «всего лишь» преобразовать его на нее пристальным взглядом, пыта- в дескриптор. Долгое время это приясь ответить на вопрос: может ли она ходилось делать весьма извращенбыть источником проблем или нет? ным путем через недокументироЕсли переменная не используется ванные функции типа NtOpenThread для обмена данными между потока- (см. http://hi-tech.nsys.by/11), но в ми, замещаем все обращения к ней Windows 2000 наконец-то появилась на переходник к нашему обработчи- легальная API-функция OpenThread(), ку, размещенному в свободном мес- принимающая идентификатор пототе файла, который, используя вызовы ка и возвращающая его дескриптор TslSetValue()/TslGetValue(), записыва- (разумеется, при условии, что все неет/считывает ее содержимое. Если же обходимые права у нас есть). Виват, переменная используется для обмена Microsoft! данными между потоками, – окружаем Разобравшись с прикладными приее критическими секциями или други- ложениями, перейдем к драйверам. При наличии исходных текстов достами механизмами синхронизации. Естественно, все это требует прав- точно использовать спин-блокировку ки исполняемого файла (и притом до- во всех отложенных процедурах, одвольно значительной). Без соответс- нако в большинстве случаев исходтвующих знаний и навыков за такую ных текстов у нас нет, а править драйзадачу не стоит и браться! Правда, есть вер в hiew удовольствие не из приятшанс, что проблему удастся разре- ных. К счастью, существует и другой
84
Многопроцессорные системы создают гораздо больше проблем, чем мы здесь описали, и далеко не все из них разрешимы в рамках простой переделки программ. Получив возможность создавать потоки, программисты далеко не сразу осознали, что отлаживать многопоточные программы на порядок сложнее, чем однопоточные. С другой стороны, уже сейчас мы приходим к распределенным системам и распределенному программированию. Разбив цикл с большим количеством итераций на два цикла, исполняющихся в разных потоках/процессах, на двухпроцессорной машине мы удвоим производительность! Это слишком значительный выигрыш, чтобы позволить себе пренебрегать им, поэтому осваивать азы распределенного программирования нужно уже сейчас. 1. Scheduling, Thread Context, and IRQL – статья, сжато, но доходчиво описывающая механизмы диспетчеризации потоков, IRQL-уровни и обработку прерываний на однопроцессорных и многопроцессорных машинах под Windows NT (на английском языке): http://www.microsoft.com/whdc/driver/ kernel/IRQL.mspx. 2. Locks, Deadlocks, and Synchronization – статья, описывающая механизмы синхронизации Windows NT и проблемы, возникающие при их некорректном использовании (на английском языке): http://www.microsoft.com/whdc/driver/ kernel/locks.mspx. 3. Principles of Concurrent and Distributed Programming – книга, посвященная основам распределенного программирования (на английском языке): http://www.amazon.com /gp /product / 013711821X/002-0912814-0689662?v= glance&n=283155.
конкурс
Напоминаем Вам об учреждении редакцией журнала 3-х премий лучшим авторам по итогам 2006 года: 1 место – 30 000 рублей 2 место – 20 000 рублей 3 место – 10 000 рублей
Номинации
1. За лучшую серию материалов 2. За лучшую новую авторскую тему 3. За лучшую аналитическую статью
Кто участвует Участие принимают все авторы, опубликовавшие свои статьи в журнале «Системный администратор» в течение 2006 года. Напоминаем, что автором может стать любой человек.
Условия публикации Принимаются материалы, нигде ранее не опубликованные (в том числе в Интернете, прочих глобальных сетях, печатных изданиях и т. д.). Статьи не рецензируются. За содержание статьи ответственность несет автор. В течение двух недель редакция принимает решение о публикации статьи и сообщает об этом автору. Редакция оставляет за собой право редактировать предоставленные материалы. Редакция имеет эксклюзивное право на распространение принятого материала в журнале, включая возможность его публикации в любой электронной форме. По истечении двух месяцев с момента выхода журнала, содержащего публикации, автор имеет право опубликовать свой материал в другом месте только с предварительного письменного согласия редакции и с обязательной ссылкой на журнал «Системный администратор». По истечении одного года с момента первой публикации автор имеет право опубликовать свой материал в другом месте без предварительного письменного согласия редакции.
Общие требования к статьям
О номинациях 1. Серией материалов считается блок из не менее чем двух статей. Тема серии – по собственному выбору автора или же по выбору редакции. 2. Статья, написанная на тему, придуманную автором и одобренную редакцией. 3. Аналитическая статья может быть написана на тему, предложенную автором или же на тему, заказанную редакцией.
Кто судьи В состав жюри войдут сотрудники редакции и представители дружественных журналу информационных ресурсов.
предполагает объем, превышающий 20 тыс. знаков – разбивайте материал на несколько частей. Если вы пишете о продукте, технологии или компании, описывайте не только «плюсы», но и «минусы», а также приводите информацию о конкурентах. Рекомендуем ознакомиться со статьями на интересующую вас тему, которые уже есть на нашем сайте.
Требования к виду присылаемых материалов Статьи следует присылать в текстовом виде, предпочтительно в формате RTF или DOC. Имена пересылаемых файлов только на английском языке. Выравнивание столбцов производится табуляцией, а не пробелом. В тексте статьи рекомендуется указывать местоположение иллюстраций и подписи к ним, а сами иллюстрации не нужно вставлять в тело документа, их нужно запаковать в отдельный архив. Иллюстрации должны быть строго в формате PNG. Листинги должны содержать не более 60 символов (вместе с пробелами) в одной строчке. Переносы строк листингов должны быть указаны в явном виде (---перенос строки---). Если в статье приводятся ссылки на ресурсы в сети, URL должен быть указан в явном виде.
Статьи не должны иметь рекламный характер какого-либо продукта, компании или технологии. Контакты В статье указываются ссылки на источники информа- Адрес: 107045, г. Москва, Ананьевский переулок д. 4/2, ции. стр. 1, Редакция «Учительской газеты», журнал «СистемНе допускается несанкционированный перевод на рус- ный администратор» ский язык статей, обзоров и сравнительных тестирований Телефон: (495) 628-82-53 Факс: (495) 628-82-53 продуктов, опубликованных в иностранных изданиях. Сайт: www.samag.ru e-mail: imp@samag.ru Рекомендации авторам secretar@samag.ru Объем статьи – от 4 до 20 тыс. знаков. Если тема статьи
№10, октябрь 2006
85
ретроспектива
Суровая правда, скрытая за «розовыми очками»: история компании Transmeta Часть 2
Дмитрий Мороз В 2001 году Transmeta находилась в плачевном положении. Являвшаяся одной из самых перспективных компаний ХХI века, она вмиг оказалась среди аутсайдеров процессорного рынка.
Жизнь цвета зебры
впрочем, особых надежд по этому по2001 год выдался для Transmeta не са- воду не питала. Остальные же произмым радостным: отсутствие прибыли, водители Страны восходящего солнца клиентов, постоянные проблемы с про- продолжали выпускать модели, ориенизводством. Большая часть процессо- тируясь лишь на собственный рынок. Качество процессоров Transmeta ров Crusoe уходила в Японию, где на их основе японские гиганты Sony, Toshiba, было второй по популярности темой Casio, Hitachi и другие изготовляли уль- для обсуждения после низкой произтратонкие ноутбуки. Проблема состо- водительности Crusoe. Даже тогда, когяла в том, что за пределы страны эти да производством чипов Transmeta запортативные системы не вывозились, ведовала IBM, вкладывающая в свои во всяком случае, официально. заводы не меньше денежных средств, К 2001 году наладить постоянные чем та же Intel, процент изготовленных поставки ноутбуков на базе Crusoe чипов, содержавших брак, был довольв страны Америки и Европы осмели- но высок. Из-за проблем Transmeta лась лишь японская Casio, которая, страдали в первую очередь её кли-
86
енты – производители ноутбуков. Для примера можно вспомнить ситуацию конца 2000 года, когда компания NEC отозвала из магазинов 300 портативных компьютеров, содержавших нестабильно работавшие чипы Crusoe. Sony постигла та же участь: корпорация была вынуждена предупредить своих клиентов о возможном возникновении проблем с её ноутбуками серии Vaio изза центрального процессора Transmeta. Если быть более конкретным, это половина всей партии, состоящей из 28 тысяч систем. Переход производства C r u s o e к Ta i w a n S e m i c o n d u c t o r
ретроспектива Manufacturing Co. (TSMC) ситуацию Дитцелу (David Ditzel) вместе со своне улучшил. Да, цена снизилась не- ими извинениями пришлось объявить, много, однако для такого важного ком- что планку в 1 ГГц ТМ5800 сможет понента любой вычислительной сис- преодолеть лишь в январе 2002 года, темы, как процессор, качество пре- а в продаже он появится никак не раньвыше всего. Как раз с этим у TSMC ше лета того же года. Crusoe TM5400 рядом с монетой были большие проблемы. Её новый К счастью для Transmeta, не весь в 25 американских центов 0,13 мкм технический процесс под ко- 2001 год был для неё чередой сплошдовым названием «Чёрный алмаз» ных неудач. Попытки компании про(Black Diamond), разработанный сов- биться на новые рынки возымели неместно с компанией Applied Materials который успех, и сразу несколько прои расхваленный на всякий лад, сра- изводителей серверных систем объзу же показал свои недостатки. Nvidia, явили об использовании процессоразработчик графических процессо- ров Crusoe для постройки тонких инров, не удовлетворённая низким ка- тернет-серверов и многопроцессорEfficeon TM8620 рядом с монетой чеством продукции, производимой ных кластеров с пониженным энергов 25 американских центов TSMC, «ушла» к её конкуренту – UMC. потреблением. Ещё два основных клиента тайваньСтоит отметить, что серверы на ба- Goldman), входивший в состав совета ской компании, VIA и Broadcom, также зе Crusoe не являются многопроцес- директоров Transmeta. Сам отчёт, предоставленный на обвинили своего партнёра в большом сорными системами, построенными по количестве производимых им брако- типу SMP (Symmetric Multy Processing – всеобщее обозрение спустя двое сусимметричная многопроцессорная об- ток, был удручающим: потери компаванных кремниевых чипов. Transmeta не стала для TSMC «при- работка), на основе которого работают нии составили 29,6 млн. долларов, приятным исключением»: процент процес- серверы на базе чипов Intel и AMD. Дит- быль – 5 млн. долларов. Аналогичные соров ТМ5800 «с ошибками», только цел, будучи ещё на посту генерального цифры за второй финансовый квартал что сошедших с конвейера, был чрез- директора, публично заявил: «Я боль- составили 27,7 млн. долларов убытка вычайно велик. Проблемы с произ- ше не верю в SMP. Просто не вижу при- и 10,5 млн. долларов дохода. К ноябрю водством Crusoe вылились в задержки чин, которые бы подталкивали людей цена за одну акцию Transmeta опустис поставкой чипов клиентам Transmeta. к её использованию». По его словам, лась до смехотворной отметки в 2 долКомпания Toshiba, после долгих меся- потери производительности, прису- лара. В день выхода компании на фонцев неопределённости решившаяся- щие SMP, например, неэффективное довую биржу этот показатель состатаки выпустить свой первый ноутбук управление приоритетами кэшей про- вил 21 доллар. Цифры говорят сами за себя – на базе Crusoe в США, была вынуж- цессоров и пр., не подходят для сисдена отказаться от своих планов из- тем, ориентированных на рынок ин- Transmeta продолжала терять своих за банального отсутствия процессоров тернет-вычислений. Вместо этого сер- клиентов, а также их деньги, причём к своим портативным системам. По- веры на базе Crusoe строятся на ба- с невероятной скоростью. добная судьба постигла и пять новых зе массовой параллельной обработки субноутбуков от Sony и Fujitsu. В нояб- (Massively Parallel Processing – MPP), Больше товаров – ре 2001 года представители обеих ком- на основе которой работают Beowulf- хороших и разных! 2002 год стал годом прихода Crusoe паний публично обвинили Transmeta кластеры. Готовые решения Fibrecycle, Rebel «в массы». Наконец-то количество сисв невыполнении своих обещаний, согласно которым последняя обязалась и RLX Technologies пообещали пред- тем, использующих в своей основе предоставить им чип ТМ5800, работа- ставить миру уже в конце 2001 – нача- процессор компании Transmeta, перестало исчисляться единицами. ющий на частоте 800 МГц, ещё в сере- ле 2002 года. Однако прежде чем новинки заОднако пока компании «пели дифидине года. Что же касается давно ожидаемого рамбы» высокой экономичности и ма- полнили собой прилавки магазинов, Crusoe, работающего на частоте 1 ГГц, лому энергопотреблению процессоров Transmeta наконец-то «обрела» новопервоначальное обещание Transmeta Crusoe, показателям, столь важным го генерального директора в лице Мэвыпустить его в январе 2001 года «рас- для тонких серверов, Transmeta про- тью Перри (Matthew R. Perry), до этого сыпалось в пух и прах». Для того что- должала с катастрофической скоро- успевшего поработать в компаниях: бы процессор ТМ5800 и его более де- стью терять деньги. 17 октября 2001 го- Cirrus Logic, AMD и Motorola. Ну а теперь кратко пройдёмся по шёвый вариант, ТМ5500, выпуска- да, за два дня до оглашения отчёта за лись по 0,13 мкм технологии, инжене- третий финансовый квартал, с поста ассортименту устройств, используюрам пришлось значительно доработать генерального директора был уволен щих процессоры Crusoe, благо в 2002 внутреннюю компоновку элементов Марк Аллен (Mark Allen), пребывав- году их было выпущено достаточно. Основными «потребителями» прона кристалле чипа, негативным обра- ший в «кресле» всего шесть с половизом сказавшуюся на дальнейшем по- ной месяцев после своего восхожде- цессоров Transmeta оставались, ковышении его тактовой частоты. Техни- ния на эту должность. Его место вре- нечно же, ноутбуки. В Японии компаческому директору компании Дэвиду менно занял Мюррей Голдмен (Murray ния сумела отхватить солидный кусок
№10, октябрь 2006
87
ретроспектива
Арт Свифт
пирога ультрапортативных систем: все шесть основных производителей ноутбуков в Стране восходящего солнца продолжали уверенно предлагать рынку свои системы на базе Crusoe, за рубеж, правда, почти не поставлявшиеся. Выпущенный к середине года ТМ5800 с частотой 1 ГГц позволил наконец-то добиться производительности, сходной с процессором Pentium III Mobile, работающим на 500-600 МГц, а для ультрапортативных машин этого в 2002 году было вполне достаточно. Вторым по популярности классом устройств, использующих процессор Crusoe, стали компактные бесшумные персональные компьютеры. Применение чипов Transmeta позволило значительно уменьшить их габариты, а также полностью лишить охлаждающих вентиляторов. Например, миниатюрный ПК компании NEC под названием Mate, оборудованный процессором ТМ5800 с частотой 900 МГц, благодаря отсутствию вентиляторов на центральном чипе и блоке питания, а также использованию жёсткого диска для ноутбуков издавал звук на уровне всего 20 дБ. Для сравнения: столько же выдают отдельные «малошумящие» блоки питания для ПК. Процессоры Transmeta нашли применение и в ультрапортативных компьютерах, по размеру лишь немногим превосходящих своих карманных «собратьев». Известный OQO Ultra Personal Computer при размерах 7,5х12,5 см представлял собой практически полноценный ПК под управлением Windows XP. «Сердцем» этого
88
малыша был процессор ТМ5800. Систему подобного класса на базе Crusoe также представила компания Antelope Technologies. Как и было обещано, тонкие серверы на базе процессоров Crusoe появились в первые месяцы 2002 года. Компания RLX первой представила свои решения на базе чипов Transmeta. Серверы этой компании были использованы Лос-Аламосской лабораторией (Нью-Мексико) для построения высокопроизводительного кластера. 240 однопроцессорных серверов были объединены в единую систему под названием «Зелёная судьба» (Green Destiny), основное предназначение которой – выполнение различных научных и технических расчётов. По словам разработчика системы Вучун Фенга (Wu-chun Feng), стоимость обслуживания этого кластера в три раза меньше аналогичного показателя для конкурентов, построенных на процессорах других производителей. Подобный результат был достигнут не в последнюю очередь благодаря низкому энергопотреблению и тепловыделению чипов Crusoe, в результате чего устанавливать «Зелёную судьбу» в специальное помещение с мощной системой охлаждения не было необходимости. Кроме того, в 2002 году появились первые слухи относительно подписания соглашений между Transmeta и компаниями, задумавшими выпустить планшетные компьютеры, работающие под Windows XP Tablet PC Edition. Поскольку референсная платформа Microsoft была произведена на свет усилиями инженеров Transmeta, она, естественно, базировалась на процессоре Crusoe. Для компаний, не желавших кардинально перерабатывать её «начинку», выбор центрального чипа для будущей системы был очевиден. Первым подобным клиентом Transmeta стала Hewlett-Packard, вознамерившаяся выпустить планшетный компьютер, позже получивший название Compaq Tablet PC TC100. На фоне столь бурного появления новинок финансовое состояние компании продолжало ухудшаться. В июле 2002 года Transmeta объявила о сокращении своего штата сотрудников сразу на 40% – с 500 до 300 человек. Подобный шаг был продиктован стремлени-
ем компании выйти на доходный уровень к середине года. Однако результаты второго финансового квартала были удручающими: 7,5 млн. долларов прибыли при 35,6 млн. долларов убытка. Уже в тот момент Transmeta скромно призналась, что с подобными «цифрами в своих отчётах» она может надеяться на достижение доходного уровня не раньше конца 2003 года. Вознамерившись покорить эту «высоту», Transmeta все усилия направила на разработку нового процессора ТМ8000 (изначально – ТМ6000), который должен был исправить все ошибки своих предшественников и стать наконец-то чипом, достойным компании и её разработчиков.
Попытка №2 Впервые о работах Transmeta над «наследником» Crusoe стало известно ещё в ноябре 2000 года, когда вицепрезидент компании Эд МакКирнен (Ed McKernan) публично объявил о начале разработки 256-битного процессора. Со временем было обнародовано его кодовое название – Astro. В мае 2001 года Transmeta объявила о лицензировании у AMD технологии x86-64, над которой обе компании работали уже довольно продолжительное время. В обязанности Transmeta входило создание программного обеспечения для трансляции 32-битных команд в 64-битные и наоборот. Кроме того, компания отвечала за энергосберегающие функции будущих процессоров AMD под кодовыми названиями Hammer (Opteron) и ClawHammer (Athlon 64). Приблизительно в то же время стало известно, что Transmeta стала членом организации, занимающейся разработкой высокоскоростной шины HyperTransport. Политика строжайшей секретности, применённая компанией во время создания Crusoe, в случае с Astro была «отложена на полку», в результате чего новые подробности относительно его разработки не заставили себя ждать. Уже в марте 2003 года общественность узнала, что Astro – это 256-разрядный VLIW-процессор, содержащий также: контроллер оперативной памяти DDR 400, шину LPC для работы с флэш-памятью, интерфейс AGP,
ретроспектива а также шину HyperTransport, которая будет использоваться для соединения с южным мостом. Буквально через пару месяцев стало известно нечто интересное: Transmeta заручилась поддержкой графического гиганта, компании nVidia, которая согласилась разработать для Astro мобильную версию южного моста nForce 3. В свою очередь Transmeta пообещала сделать мост, а также графический чип от nVidia неотъемлемой частью своей референсной платформы на базе нового процессора. В августе 2003 года у ТМ8000 появилось официальное имя – Efficeon (Efficient Computing – эффективная обработка). Все основные детали относительно нового чипа были известны, и Transmeta оставалось всего ничего – представить Efficeon на суд публики. Данное событие состоялось 14 октября на Микропроцессорном форуме (Microprocessor Forum). Итак, что новенького приготовили инженеры на этот раз? Новое 256-разрядное ядро способно выполнять до восьми инструкций за такт. Для увеличения производительности в Efficeon к уже имевшимся в Crusoe модулям добавили по одному блоку для операций с числами с плавающей запятой, операций с памятью и управления переходами. Ядро нового чипа «подружилось» с наборами инструкций SSE и SSE2. Размер кэша второго уровня был увеличен в два раза – до 1 Мб. Упоминавшиеся ранее контроллер ОЗУ стандарта DDR 400 и графический интерфейс AGP 4х позволили отказаться от микросхемы северного моста. С южным же мостом новый чип общается посредством шины HyperTransport, работающей на частоте 400 МГц. Полностью переписанное программное обеспечение Code Morphing Software, по заверениям инженеров Transmeta, эффективнее старого на 40-50%. Стоит, правда, отметить и недостатки – заметно увеличившееся количество транзисторов (с 36,8 до 85 млн.), и, следовательно, размер кристалла чипа (с 55 кв. мм. (ТМ5800) до 119 кв. мм.). Миру были представлены сразу несколько версий Efficeon: ТМ8600 (1 Мб кэш-памяти второго уровня), TM8300 (L2-кэш размером 512 Кбайт), а так-
№10, октябрь 2006
же (ТМ8600 с уменьшенными на 46% размерами корпуса). Частоты всех трёх моделей колебались в пределах 1-1,3 ГГц. На фоне громкого анонса Efficeon остался практически незамеченным уход из Transmeta создателя Linux Линуса Торвальдса, который решил посвятить своё время исключительно разработке собственного программного «чада». Возможно, уход Торвальдса был продиктован очередным финансовым кварталом, который напрочь «развеял мечты» Transmeta по поводу достижения доходного уровня в 2003 году. Судите сами: по сравнению с предыдущим кварталом прибыль компании в связи с нежеланием покупать её морально устаревшие процессоры Crusoe упала почти на 50%, составив всего 2,7 млн. долларов. Потери увеличились ещё на несколько миллионов, составив 23,7 млн. долларов. Теперь судьба компании напрямую зависела от того, примет ли рынок её новый Efficeon. Результаты производительности нового чипа Transmeta показывали двукратное преимущество Efficeon относительно Crusoe, что само по себе уже было достижением. Казалось бы, новый процессор Transmeta получился удачнее своего предшественника… К сожалению, компания опоздала с его появлением. В 2003 году рынок был полностью оккупирован Intel и её новой платформой Centrino. Анонсированная в марте 2003 года, Centrino успела в короткие сроки стать стандартом де-факто в качестве основы для построения высокопроизводительных и вместе с тем экономичных ноутбуков. Что же касается её процессора, Pentium M, он оказался настолько удачно спроектированным чипом, что по производительности без труда справлялся не только со своими конкурентами из мобильного рынка, но и с процессорами, предназначенными для настольных систем. «Хиленький» Efficeon конкуренцию Pentium M составить не мог. В результате лишь немногие компании выпустили устройства на базе нового процессора Transmeta. Кроме небольшого количества ноутбуков, упоминания заслуживает лишь «серверная станция» Orion Cluster
OQO Ultra Personal Computer
Workstation производства компании Orion Multisystems. 96 процессоров Efficeon, 192 Гб оперативной памяти, а также 9,6 Тб дискового пространства свободно уместились в корпусе практически стандартных для настольных ПК размеров. При этом вес системы составляет всего 86 кг. Стоимость – от 100 тыс. долларов.
Потерянная процессорная гонка В январе 2004 года Transmeta выпустила Crusoe ТМ5900, который представлял собой обычный ТМ5800 с уменьшенным корпусом, однако одногигагерцовый чип ещё до своего выхода в свет был отправлен общественностью «на свалку». В это время рынок начал переход на 0,9 мкм производственный процесс. Порядком «уставшая» от постоянных проблем с TSMC, для второго поколения процессоров Efficeon Transmeta выбрала нового производителя микросхем – Fujitsu. ТМ8800, выполненный по нормам 0,9 мкм, должен был появиться к осени 2004 года. А пока немногие компании, главным образом Sharp и Orion Multisystems, выбравшие Efficeon первого поколения в качестве основы для своих систем, получали процессоры в небольших партиях. Именно благодаря им Transmeta удавалось держаться на плаву. Опубликованный в середине года финансовый отчёт продемонстрировал даже небольшое увеличение прибыли – с 3,6 до 5,2 млн. долларов, да и потери компании замерли на отметке 23,4 млн. долларов. Публичная демонстрация ТМ8800, работающего на частоте 1,6 ГГц, состоялась в мае 2004 года. Кроме более совершенного техпроцесса, а также более высокой тактовой частоты, новый Efficeon «предлагал» два новшества.
89
ретроспектива
Compaq Tablet PC TC100
Первое – AntiVirusNX, аппаратно поддерживающая антивирусную технологию Data Execution Protection, появившуюся в Service Pack 2 для Windows XP. Вторая – новая версия энергосберегающей технологии LongRun2, которая «научилась» контролировать токи утечки транзисторов в кристалле, благодаря чему теоретически во время режима «сна» новый процессор выделяет всего 0,03 Вт тепла. Продажи ТМ8800 стартовали в сентябре, правда, количество отгружаемых процессоров вследствие большой сложности их изготовления было невелико. В принципе даже этот досадный факт не мог исправить сложившуюся ситуацию – у Transmeta практически не осталось клиентов, которые бы покупали её Efficeon. К счастью, компания сумела избежать наметившегося финансового кризиса. Ещё в октябре в одном из своих заявлений компания намекнула, что «одна многомиллиардная компания» присматривается к её технологии LongRun2 и желает её лицензировать. Последний месяц 2004 года пролил свет на её имя – Fujitsu. В я н в а р е 20 0 5 год а в ж и з н и Transmeta состоялось очень важное событие. Со дня своего выхода на фондовую биржу компания потеряла на собственных акциях в общей сложности 591 млн. долларов, так и не став прибыльной. Оценив сложившуюся ситуацию, 22 января Transmeta приняла решение уйти с процессорного бизнеса, сконцентрировав свои усилия на продаже интеллектуальной собственности. В дополнение к специфическим технологиям типа LongRun2 компания отныне предлагает лицензирование
90
своих микропроцессорных ядер. Подобная бизнес-модель давно не нова и находится на вооружении у компаний ARM и MIPS Technologies. «Мы рассматриваем любые предложения», – комментировал на выставке Consumer Electronics Show (CES) 2005 глава отдела маркетинга Transmeta Грег Роуз (Greg Rose). «Переход к бизнес-модели, в основе которой лежит продажа интеллектуальной собственности – значительно дешевле продажи процессоров. У нас нет собственных заводов по производству чипов, потому что их постройка – занятие слишком дорогое. Однако тестирование процессоров, а также их дистрибуция – вещи также отнюдь не дешёвые, поэтому Transmeta намного выгоднее избавиться от этих затрат путём, который мы и выбрали». Через два дня после заявления компания «нашла» второго клиента на свои разработки. Ею стала Sony, лицензировавшая LongRun2 для разрабатываемых совместно с IBM и Toshiba процессоров Cell. На протяжении 2005 года клиентами Transmeta стали ещё две компании: японская NEC обзавелась лицензией на LongRun2, а китайская компания Culture.com Technology Limited – на архитектуры Crusoe и Efficeon, на основе которых она будет производить процессоры для внутреннего рынка. В марте состоялась реструктуризация компании, направленная на повышение эффективности ведения нового бизнеса, связанного с лицензированием: из 275 сотрудников Transmeta было уволено 67 человек, генеральный директор Мэтью Перри был смещён с поста Артом Свифтом (Art Swift), до этого работавшем в отделе маркетинга. Меры, предпринятые Transmeta на протяжении 2005 года, дали потрясающий результат, полностью оправдав решение компании о переквалификации. Годовой отчёт вселил в Transmeta новую надежду: тогда как общая прибыль за 2004 год составила всего 29,4 млн. долларов, в 2005 году компания заработала почти в два с половиной раза больше, доведя этот показатель до 72,7 млн. долларов. Для Transmeta, бывшей всю свою жизнь убыточной, эти показатели как бальзам на душу.
Похоже, что 2006 год будет ещё более успешным: в январе Sony продлила свой контракт вплоть до марта 2007 года, а в июне компания AMD лицензировала ядро Efficeon для производства микропроцессоров, ориентированных на Китай, Индию и другие развивающиеся, но пока полностью не компьютеризированные страны. Ещё один клиент до недавних пор оставался в тени, и лишь недавно стало известно о его существовании. В ноябре 2005 года Transmeta подписала несколько соглашений с Microsoft, однако особой огласке они не придавались. Известно было только то, что незамедлительно в недрах компании была сформирована особая группа, состоящая из 30 инженеров, о которой отзывались как о «работающих над секретным проектом Microsoft». В средствах массовой информации сразу поползли слухи о якобы «портативной консоли, разрабатываемой Transmeta по заказу Microsoft». В апреле этого года появилась более реальная версия – компания работает над эмулятором для Xbox 360, который позволяет ей запускать игры, разработанные для оригинальной Xbox. На первый взгляд это предположение более вероятно, поскольку людей, лучше разбирающихся в эмуляции, чем инженеры Transmeta, найти очень сложно. Однако сбрасывать второй вариант со счетов всё же не стоит. Познания Transmeta в проектировании высокоэкономичных процессоров велики, а всё растущая популярность портативной консоли PlayStation Portable от Sony корпорацию Microsoft никак не радует, вынуждая в максимально сжатые сроки предложить рынку свой вариант. Ну а если слухи по поводу игровой консоли подтвердятся и Transmeta изготовит для Microsoft удачный продукт, она сможет вернуть себе утраченную репутацию. И тогда, быть может, имя компании вновь засияет всеми цветами радуги. 1. 2. 3. 4. 5. 6. 7.
http://www.wired.com http://archive.salon.com http://www.arstechnica.com http://www.pcworld.com http://www.forbes.com http://www.theregister.co.uk http://www.transmeta.com
bugtraq Выполнение произвольного кода в Microsoft Office Программа: Microsoft Office 2000, возможно, другие версии. Опасность: Критическая. Описание: Уязвимость существует из-за неизвестной ошибки при обработке документов в Microsoft Word. Удаленный пользователь может с помощью специально сформированного файла выполнить произвольный код на целевой системе. Уязвимость активно эксплуатируется в настоящее время. URL производителя: http://www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует.
Переполнение буфера при обработке сжатых редиректов в Internet Explorer Программа: Microsoft Internet Explorer (IE) 5sp4, 6sp1. Опасность: Критическая. Описание: Удаленный злоумышленник может вызвать отказ в обслуживании или выполнить произвольный код с привилегиями целевого пользователя, используя длинный URL на веб-сайте, который использует компрессию HTTP 1.1 и отвечает 302 HTTP-ответом (редирект). Уязвимость обнаружена во второй версии патча MS06-042 для IE 5 SP4 и IE 6 SP1 (который был опубликован 24 августа 2006 года). URL производителя: http://www.microsoft.com. Решение: Microsoft опубликовал третью версию патча MS06042, который устраняет обнаруженную уязвимость.
Удаленное переполнение буфера в Microsoft Internet Explorer и Microsoft Multimedia Controls ActiveX Программа: Microsoft Internet Explorer 6.x. Опасность: Критическая. Описание: Переполнение буфера обнаружено в функции CPathCtl::KeyFrame() в Microsoft Multimedia Controls ActiveX. Злоумышленник может создать специально сформированную HTML-страницу, чтобы выполнить произвольный код с привилегиями пользователя, просматривающего эту страницу в браузере. URL производителя: http://www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует.
Обход ограничений безопасности в Opera Программа: Opera 9.01, возможно, более ранние версии. Опасность: Низкая. Описание: Уязвимость существует из-за ошибки при проверке подлинности подписи сертификата. Злоумышленник может подделать сертификат, если при подписи сертификата использовался RSA-ключ с экспонентом 3. Уязвимость относится к обходу ограничений безопасности в OpenSSL. URL производителя: http://www.opera.com. Решение: В настоящее время способов устранения уязвимости не существует.
№10, октябрь 2006
Переполнение буфера в Microsoft Publisher при обработке .pub-файлов Программа: Microsoft Office 2000, Microsoft Office 2003 Professional Edition, Microsoft Office 2003 Small Business Edition, Microsoft Office 2003 Standard Edition, Microsoft Office 2003 Student and Teacher Edition, Microsoft Office XP, Microsoft Publisher 2000, Microsoft Publisher 2002, Microsoft Publisher 2003. Опасность: Критическая. Описание: Переполнение буфера обнаружено в Publisher при обработке .pub-файлов, содержащих специально обработанную строку. Злоумышленник может создать специальный документ, который, когда будет открыт целевым пользователем, запустит произвольный код на целевой системе. URL производителя: http://www.microsoft.com. Решение: Установите соответствующее обновление.
Множественные уязвимости в Adobe Flash Player Программа: Macromedia Flash 8.x, Macromedia Flash MX 2004, Macromedia Flash MX Professional 2004, Macromedia Flash Player 7.x, Macromedia Flash Player 8.x, Macromedia Flex 1.x Опасность: Критическая. Описание: 1. Несколько неустановленных уязвимостей переполнения буфера позволяют выполнить произвольный код при загрузке специально обработанного SWF-файла, например, при просмотре злонамеренного веб-сайта. 2. Неустановленная ошибка позволяет обойти ограничения параметра allowScriptAccess. 3. Неустановленная ошибка существует в пути, в котором ActiveX-управление запускает программы Microsoft Office на Windows-системах. URL производителя: http://www.adobe.com. Решение: Установите последнюю версию Flash.
Переполнение буфера в библиотеке http://[host]:411/cgi-bin/Redirect.bat?file= ↵ Microsoft Vector Graphics Rendering %7C..\..\..\..\..\..\....\..\[file]
Программа: Microsoft Windows 2000, Microsoft Windows XP, Microsoft Windows 2003. Опасность: Критическая. Описание: Уязвимость существует из-за ошибки проверки границ данных в Microsoft Vector Graphics Rendering (VML)библиотеке (vgx.dll) при обработке определенных VML-документов. Удаленный пользователь может с помощью специально сформированного VML-документа, содержащего слишком длинный метод fill внутри тега rect, вызвать переполнение стека и выполнить произвольный код на целевой системе. Уязвимость активно эксплуатируется в настоящее время. URL производителя: http://www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует.
91
книжная полка
Брандмауэры Cisco Secure PIX Под редакцией Дэвида Чемпена-мл. и Энди Фокса
Материал книги основан на официальном курсе CSPFA (Cisco Secure PIX Firewall Advanced). Несмотря на то что оригинал книги (на англ. языке) вышел в 2002 году, большая часть материала актуальна и сейчас. Из раздела «Введение» вы узнаете о критериях угроз безопасности сети, политиках безопасности сетей и их обеспе-
чения. Затем авторы познакомят вас с ки протоколов и защиты от взломов с ПО и аппаратными средствами бранд- помощью Cisco PIX. Механизмы полмауэров Cisco PIX (рассмотрены типы ного восстановления состояния в слубрандмауэров, модели, элементы уп- чае отказа брандмауэра PIX. Настройравления). Использование и обновле- ка механизмов IPSec при использование ПО Cisco PIX (интерфейс команд- нии в брандмауэре PIX. Контекстное ной строки, установка новой версии управление доступом с помощью бранОС и обновление существующей, вос- дмауэра, основанного на ОС Cisco IOS. становление утерянного пароля). На- Настройка службы прокси – аутентистройка Cisco PIX (уровни безопаснос- фикации в Cisco IOS. Каждая из глав ти ASA, основные команды настройки: оканчивается контрольными вопросаnameif, interface, ip address, nat, global, ми (есть и ответы на них). В приложеroute). Трансляция адресов (транспорт- нии вы также найдете информацию о ные протоколы, статическая и динами- настройке протоколов SNMP, DHCP, ческая трансляция адресов). Настрой- SSH в Cisco PIX. Отличная книга, кока доступа через Cisco PIX (обеспече- торая окажется полезной всем без исние доступа к сети через брандмауэр, ключения людям, работающим с PIX. команды static и conduit, альтернативные методы, настройка дополнитель- Издательство: «Вильямс» ных интерфейсов). Системные сооб- Год издания: 2003 щения (настройка системного журна- Количество страниц: 384 ла, команды семейства logging). На- ISBN: 5-8459-0463-3 стройка аутентификации, авторизации Цена: ≈ 395 руб. и учета в Cisco PIX. Подробно рассмот- Книга предоставлена издательстким домом рены вопросы расширенной обработ- «Вильямс».
Организация защиты сетей Cisco Майкл Уэнстром
Книга – перевод официального курса по управлению защитой сетей Cisco (MCNS). Первая часть посвящена выбору политики защиты. Угрозы безопасности сети (принципы возникновения проблем защиты, типы угроз безопасности). Оценка политики защиты (процесс оценки состояния защиты, анализ практики защиты сетей). Защита инфраструктуры сети (про-
92
блемы защиты территориальной сети рование). Настройка доступа через PIX и варианты их решения, защита фи- Firewall (настройка управления исходязических устройств и административ- щим доступом, а также доступ к внутного интерфейса, защита связи меж- ренним хостам). Настройка интерфейду маршрутизаторами и коммутатора- сов и средств AAA PIX firewall. Испольми Ethernet). Вторая часть книги рас- зование дополнительных возможноссматривает вопросы защиты удален- тей PIX firewall. Не остались без вниного доступа. Среди рассмотренных мания технологии шифрования Cisco тем: технология защиты AAA, настрой- (обзор технологий шифрования, крипка средств AAA сервера сетевого до- тосистема IOS, применение шифроступа. Конфигурирование CiscoSecure вания на примере CET). Виртуальные ACS и TACACS+/RADIUS. Защита меж- частные сети, использующие IPSec сетевых соединений. Настройка мар- (настройка и поддержка IPSec в сетях штуризаторов периметра Cisco (систе- Cisco, IPSec в PIX firewall, масштабимы защиты периметра сети, управле- рование сетей IPSec). В конце каждой ния сервисами TCP/IP, защита от не- из глав вниманию предлагаются контсанкционированного изменения марш- рольные вопросы. рутов, управление доступом, средства трансляции IP-адресов, регистрация Издательство: «Вильямс» событий маршрутизаторов перимет- Год издания: 2005 ра). Настройка Cisco IOS Firewall (обзор Количество страниц: 768 возможностей, настройка CBAC, уп- ISBN: 5-8459-0387-4 равление). Настройка CiscoSecure PIX Цена: ≈ 480 руб. Firewall (возможности, модели бранд- Книга предоставлена издательстким домом мауэров и их компоненты, конфигури- «Вильямс».
книжная полка
Интерфейсы устройств хранения: ATA, SCSI и другие Михаил Гук контроллеры ATA (контроллеры PCI IDE те об устройствах, портах и соединениBus Master, SATA intel 31244, AHCI). Про- ях SAS, будут рассмотрены протоколы граммное взаимодействие с устройс- SSP, SMP, STP. Отдельная часть книги твами ATA/ATAPI/SATA (традиционный посвящена технологии iSCSI, у которой механизм взаимодействия для ATA, пе- вы получите исчерпывающие сведения рекрытие команд и очереди, интерфейс об этой технологии. Не остался без вниAHCI, регистры устройства ATA/SATA). мания и интерфейс Fibre Channel (арСистема команд ATA/ATAPI и SATA (па- хитектура стандарта, каналы передакетный интерфейс ATAPI, идентифи- чи данных FC-PH, FC-FS, арбитражное кация и конфигурирование устройств, кольцо FC-AL). В заключительных глажурналы ошибок и событий, монито- вах автор повествует об интерфейсах ринг состояния SMART). Вопросы, ка- и конструктивах твердотельных носитесающиеся SCSI, представлены следую- лей информации, шинах USB и FireWire Издание является продолжением серии щим материалом: спецификация SCSI, для устройства хранения. Отличная книг об интерфейсах (напомню, что в архитектурная модель SCSI-SAM, сис- книга, которая будет интересна широрамках этой серии автором написаны тема команд SCSI. Подробно рассмот- кому кругу читателей. книги, посвященные темам «Аппарат- рены вопросы параллельных шин SCSI ные интерфейсы ПК», «Шины PCI, USB (протокол параллельной шины, процесс Издательство: «Питер» и FireWire»). Среди рассмотренных тем: ввода-вывода в шине SCSI, физический Год издания: 2007 устройства хранения данных и их интер- и электрический интерфейс). Из гла- Количество страниц: 447 фейсы: НГМД, IDE (ATA/ATAPI) и SATA. вы, которая носит название «Последо- ISBN: 5-469-01531-9 Параллельный интерфейс ATA и пос- вательный интерфейс для подключе- Цена: ≈ 375 руб. ледовательный Serial ATA, адаптеры и ния устройств SCSI – SAS», вы узнае- Книга предоставлена издательством «Питер».
Криминалистический анализ файловых систем Брайан Кэрриэ
Уникальная в своем роде книга, аналогов которой нет не только на русском, но и на других языках. Автору удалось удачно совместить теорию с практикой и в максимально доступной форме изложить весь материал. Первая часть книги носит теоретический характер, из нее вы узнаете основы цифровых расследований (цифровые расследования повтор и улики, анализ данных,
№10, октябрь 2006
инструментарий эксперта), основные тура данных, файловые системы ext2 принципы работы компьютера (орга- и 1ext3, а также UFS1 и UFS2). На пронизация данных, процесс загрузки, тех- тяжении всей книги в качестве основнологии жестких дисков), снятие дан- ного инструмента используется пакет ных с жеского диска (чтение исходных TSK (The Sleuth Kit), который вы можете данных, запись снятых данных, прак- загрузить с www.sleuthkit.org. Весь матические примеры). Во второй части териал книги отлично структурирован. книги автор проводит анализ томов. Несмотря на достаточно сложную теРассмотрены вопросы, касающиеся му, книга легко читается и усваивается. основ анализа, основные концепции Отличный материал, написанный спеMBR, расширенный раздел. Особый циалистом для специалистов, он зайинтерес предствляет глава «Разделы в мет достойное место на книжной полке серверных системах», из которой вы уз- у любого системного администратора наете о разделах BSD и структуре дан- или инженера по безопасности. ных, сегментах Sun Solaris, разделах GPT. Многодисковые тома (рассмот- Издательство: «Питер» рены технологии RAID и объединения Год издания: 2007 дисков – Linux MD, LVM, Windows LDM). Количество страниц: 480 Черезвычайно подробно рассказано ISBN: 5-469-01311-1 об анализе файловых систем: (fat и ntfs: Цена: ≈ 523 руб. основные концепции, анализ и струк- Книга предоставлена издательством «Питер».
Обзор книжных новинок подготовил Александр Байрак
93
подписка на 2007 год
Оформите годовую подписку и получите в подарок DVD-диск с архивом всех вышедших номеров с 2002 года. Диск будет вложен в январьский юбилейный выпуск журнала Редакционная подписка для физических лиц
Подписку Вы можете оформить на любой российский адрес.
При заполнении разборчиво укажите фамилию, имя, отчество полностью, почтовый индекс и адрес получателя, контактный телефон.
94
Подписку можно оформить с любо-
Копию заполненного и оплаченно-
го месяца на любой срок. В графе «Сумма» проставьте сумму за выбранное количество номеров. Стоимость одного номера журнала 150 руб. За год – 1800 руб. НДС и почтовые расходы включены в стоимость.
го бланка отправьте в редакцию по факсу: (495) 628-8253 или на электронный адрес: info@samag.ru Журнал высылается почтой простой бандеролью только после поступления денег на расчетный счет.
подписка на 2007 год Российская Федерация
Подписной индекс: годовой – 20780, полугодовой – 81655 Каталог агентства «Роспечать»
Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru Подписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru
СНГ В странах СНГ подписка принимается в почтовых отделениях по национальным каталогам или по списку номенклатуры «АРЗИ»: Азербайджан – по объединенному каталогу российских изданий через предприятие по распространению
печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
Казахстан – по каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»
Беларусь – по каталогу изданий стран СНГ через РГО «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Узбекистан – по каталогу «Davriy nashrlar» российские издания через агентство по распространению печати «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик, 5/3, офис 33) Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Давида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22) Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42) Молдавия – по каталогу через ГП «Пошта Молдавей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17) по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) Подписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220
Подписные индексы:
20780* 81655** по каталогу агентства «Роспечать»
87836 по каталогу агентства «Пресса России» * **
№10 октябрь 2006
годовой полугодовой
95
СИСТЕМНЫЙ АДМИНИСТРАТОР №10(47), Октябрь, 2006 год УЧРЕДИТЕЛИ Владимир Положевец Александр Михалев РУКОВОДИТЕЛЬ ПРОЕКТА Петр Положевец РЕДАКЦИЯ Исполнительный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Редактор Алексей Коршунов Внештатные редакторы Алексей Барабанов Сергей Супрунов Валентин Синицын Крис Касперски РЕКЛАМНАЯ СЛУЖБА тел./факс: (495) 628-8253 Евгения Тарабрина reсlama@samag.ru Верстка и оформление maker_up@samag.ru Дизайн обложки Николай Петрочук По вопросам распространения обращайтесь по телефону: (495) 628-8253 (доб. 120) 107045, г. Москва, Ананьевский переулок, дом 4/2, стр. 1 тел./факс: (495) 628-8253 Сайт журнала: www.samag.ru ИЗДАТЕЛЬ ЗАО «Издательский дом «Учительская газета» Отпечатано типографией ГП «Московская Типография №13» Тираж 11000 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.). За содержание статьи ответственность несет автор. За содержание рекламных материалов ответственность несет рекламодатель. Все права на опубликованные материалы защищены.
ЧИТАЙТЕ В СЛЕДУЮЩЕМ НОМЕРЕ: FreeBSD jail: зона строгого режима Безопасность FreeBSD всегда была на должном уровне. Но когда в Интернет нужно «выставить» один или несколько сервисов, надеяться приходится уже не только на разработчиков системы. Традиционно для снижения опасности используют chrootокружение, но этот вызов разрабатывался для иных целей. А вот вызову jail, специально созданному для решения вопросов безопасности, зачастую отдают лишь роль средства виртуализации. Но область его применения значительно шире.
Атаки на ошибки синхронизации потоков 3 сентября 2006 года хакер johnny cache реализовал принципиально новый тип атаки на драйверы устройств беспроводной связи Intel Centrino PRO, воздейстовав на регистр EIP через ошибку синхронизации потоков (вполне типичную для DSL-модемов, ИК-портов и других устройств, обрабатывающих асинхронные запросы). Но навряд ли он осознал, что эта атака открывает новую страницу в истории переполняющихся буферов. Это действительно новый тип атаки, с которым мы
еще не сталкивались, и который может стать доминирующим в обозримом будущем, поэтому представляет интерес проанализировать проблему и описать источник угрозы и возможные способы борьбы.
Обзор дистрибутива SystemRescueCd Linux Вам часто приходится восстанавливать систему после сбоя, копировать данные с поврежденных жестких дисков, тестировать аппаратную часть ЭВМ, сбрасывать забытые пароли в семействе ОС windows NT, готовить диски для установки новой ОС и решать другие административные задачи? Обычно для этого используются наборы дистрибутивов и Live-CD различного назначения, но есть ли единое и компактное решение «все в одном»?
Kerberos и электронная почта В статье будет рассмотрен способ интеграции smtp-сервера Postfix и imap/ pop3-сервера Сyrus-IMAP в систему единой регистрации пользователей Heimdal-Kerberos. Также будет показан пример использования этой системы в гетерогенном окружении при помощи почтового клиента Thunderbird.
Уважаемые читатели! Обратите внимание, что теперь оформить подписку вы можете не только на полугодие, но и сразу на весь год. Годовой индекс по каталогу «Роспечать» – 20780. Интер-почта – заказ журналов по тел.(495) 500-00-60. Подписка on-line – SetBook.ru. Приобрести новые и старые номера журнала вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
Доставка почтой в любую точку России.
96