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

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

№5(30) май 2005


подписной индекс 81655

СЬ
www.samag.ru

ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е

Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ

WPA-Enterprise, 802.1x EAP-TLS


НУ

РА КУ
Настраиваем UPS под Linux
ЛЫ ГО

ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО

Что важно знать об IP-телефонии

№6(43) июнь 2006

О
танавливаем Symantec Antivirus 9.0
НИ НО

ТР
в корпоративной сети
Эффективно управляем

С
подписной индекс 20780
полями пользователей в AD

БЫ
Контролируем безопасность сети
с помощью OSSIM
КА

Интервью с Ларри Уоллом –


создателем языка Perl
www.samag.ru

Быть или не быть

№6(43) июнь 2006


И
ЬГ
ЬД О
РА СКА
ТЕ
К

ИС НН
ЕН
зарубежному софту в России?
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО НЕО
АВ СЛ
Л

Л
ХА

ПО

Современный Linux-сервер:
УЕ

ЗА
виртуализируем сеть

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


№5(30) май 2005
подписной индекс 81655
www.samag.ru

Почему MS SQL медленно работает?


Технология AJAX:
как насчет безопасности?
Ищем причины
Строим защищенную беспроводную сеть:
WPA-Enterprise, 802.1x EAP-TLS
Настраиваем UPS под Linux
Как восстановить
удаленные файлы под BSD
Что важно знать об IP-телефонии
танавливаем Symantec Antivirus 9.0

Переключи драйвер NTFS


в корпоративной сети
Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети
с помощью OSSIM

в режим read-write
Интервью с Ларри Уоллом –
создателем языка Perl

Настраиваем безопасный
роутер на базе FreeBSD
Пишем систему
динамической защиты
ресурсов в сети
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Первый раз в Linux-класс!
Роспечать – 20780, 81655 Оппонент мистера Гейтса
Пресса России – 87836
Интер-почта – тел. (495) 500-00-60
оглавление
3 ТЕНДЕНЦИИ WEB
РЕПОРТАЖ 46 Технология AJAX:
как насчет безопасности?
4 PHP – это мой путь решать Появление новых технологий почти всегда приводит
возникающие в Web задачи к снижению уровня безопасности. Как обстоят дела
Итоги конференции «Современные технологии эф- с AJAX? Сергей Яремчук
фективной разработки веб-приложений с использо- grinder@ua.fm
ванием PHP». Дмитрий Горяинов
dg@webclub.ru БЕЗОПАСНОСТЬ
АНАЛИТИКА 50 Настраиваем безопасный роутер
на базе FreeBSD
6 Быть или не быть Как увеличить безопасность FreeBSD, работающей
зарубежному софту в России? в качестве маршрутизатора между локальной сетью
В июне Госдума поставит точку в нашумевшей истории и Интернетом? Василий Озеров
с запретом импортного программного обеспечения. fr33man@fr33man.ru
Ольга Максимович
maksim@ug.ru 56 Пишем систему динамической защиты
ресурсов в сети
АДМИНИСТРИРОВАНИЕ Аудит журналов безопасности операционной системы –
неотъемлемая часть вашей работы. Если обнаружены
10 Современный Linux-сервер: попытки проникновения, на них необходимо немедлен-
виртуализируем сетевые устройства но отреагировать. Андрей Бирюков
Переведя сетевые подключения в категорию виртуаль- mex_inet@rambler.ru
ных, можно значительно упростить их обслуживание
и предусмотреть многие внештатные ситуации. 62 Техника снятия дампа с защищенных
Алексей Барабанов приложений
alekseybb@mail.ru В предыдущей статье мы прошли сквозь распаковщик
и теперь нам необходимо снять дамп. Существует мно-
18 Как работает Sendmail? жество утилит для этой цели, но далеко не всегда по-
Полезные подробности. Часть 2 лученный дамп работоспособен. Крис Касперски
Одна из сильных сторон Sendmail – функциональная kk@sendmail.ru
мощь программы. Но запрятана она порой в дальних
уголках конфигурационных файлов. ОБРАЗОВАНИЕ
Сергей Супрунов
amsand@rambler.ru 70 Первый раз в Linux-класс!
Программы обучения и сертификации.
26 Переключи драйвер NTFS Андрей Маркелов
в режим read-write andrew@markelov.net
С помощью Captive (первой полнофункциональной Open
Source-реализации NTFS-драйвера) вы можете монти- 74 Linux в школе?
ровать Windows-разделы и записывать на них данные Проблемы использования Linux в учебных заведениях.
без опасения их потерять. Антон Ананич Сергей Яремчук
anton.ananich@gmail.com grinder@ua.fm

30 Централизованно меняем пароли 78 Дистрибутив Edubuntu: специально


локального системного администратора для школ
Автоматизация этого процесса значительно снизит за- Обзор дистрибутива.
траты на администрирование. Иван Коробко Сергей Яремчук
ikorobko@prosv.ru grinder@ua.fm

ЧЕЛОВЕК НОМЕРА HARDWARE


34 Оппонент мистера Гейтса 82 Волшебство с паяльником в руках
Сообщество разработчиков свободных программ в Рос- Хороший системный администратор не только зна-
сии возникло во многом благодаря Алексею Смирно- ет тонкости операционной системы, но и умеет обра-
ву, генеральному директору ALT Linux, и его коллегам. щаться с паяльником. Крис Касперски
Оксана Родионова kk@sendmail.ru
rodion@dol.ru
РЕТРОСПЕКТИВА
СЕТИ
86 Надежда умирает последней:
38 Создаем зоны DNS история компании SGI. Часть 3
Создать, настроить и запустить DNS-сервер для не- Дмитрий Мороз
большого предприятия – это не так сложно, как кажется akuji@list.ru
изначально. Достаточно пройти этот путь один раз.
Рашид Ачилов 92 КНИЖНАЯ ПОЛКА
shelton@granch.ru
33, 61, 73 BUGTRAQ

№6, июнь 2006 1


тенденции
OpenDocument признан стандартом ISO/IEC вроде Debian и Gentoo. Однако по этому случаю Ричард
Организация международных стандартов (ISO) приня- Столлман (Richard Stallman) тут же высказал свое нега-
ла открытый формат OpenDocument (ODF) как всемир- тивное отношение. Sun, по его мнению, не сделала ниче-
ный стандарт для хранения файлов, создаваемых офис- го полезного для сообщества Open Source: ведь она ос-
ным программным обеспечением (для документов тексто- тавила Java закрытым продуктом, лишь дав потенциаль-
вых процессоров, электронных таблиц, презентаций, ри- ную возможность для ее распространения в составе дру-
сунков и т. п.). гих дистрибутивов.
OpenDocument стал стандартом ISO/IEC 26300, и это со-
бытие уже с энтузиазмом прокомментировали как предста- Motorola запустила Open Source-портал
витель Sun Саймон Фиппс (Simon Phipps), так и Луис Су- Motorola присоединилась ко множеству технологических
арез-Поттс (Louis Suarez-Potts) из проекта OpenOffice.org. компаний, позаботившихся об открытии веб-порталов, пос-
«Время – сейчас, инструменты – здесь, свобода – ва- вященных их сотрудничеству с сообществом программно-
ша», – написали в рассылке объявлений свободного офи- го обеспечения с открытым кодом.
са OpenOffice.org. Как сообщается в пресс-релизе, цель нового ресурса,
Алан Йейтс из Microsoft не стал скрывать отношения доступного по адресу OpenSource.Motorola.com, – предо-
своей компании к OpenDocument и открыто заявил, что ставление разработчикам простого доступа к различно-
по сравнению с их новым (и тоже «открытым») форма- му коду, приложениям и интеллектуальной собственнос-
том (Open XML) первый значительно уступает как в ско- ти компании путем создания удобного рабочего канала
рости работы, так и в уровне документированности (чис- для Linux-, Java- и мобильного сообществ. «Предоставле-
ло страниц в документации по Open XML превышает от- ние кода в среде Open Source не только ускорит разработ-
метку в 4000). ку ПО на платформе Motorola, но и приведет к инноваци-
Энтузиасты OpenOffice.org тоже не стоят на месте ям и адаптации новых мобильных услуг и возможностей»,
и запустили сайт why.openoffice.org для привлечения но- полагают в Motorola.
вых пользователей (работающих с нелегальными копия- Ресурс будет тесно сотрудничать с MOTODEV – актив-
ми MS Office). На ресурсе «Get Legal – Get OpenOffice.org» но продвигаемой компанией инициативой, предоставляю-
подробно рассказывается о преимуществах использова- щей разработчикам необходимые ресурсы, инструмента-
ния свободного офиса. рий и техническую поддержку.

Sun DTrace портируют на FreeBSD Составил Дмитрий Шурупов


Брайан Кэнтрилл (Bryan Cantrill) из компании Sun в своем по материалам www.nixp.ru
блоге опубликовал сообщение о текущем статусе порти-
рования технологии DTrace в среду свободной операцион-
ной системы FreeBSD:
«Некоторое время назад я сообщал о возможности со-
здания FreeBSD-порта DTrace. Прошедшие несколько меся-
цев Джон Биррелл (John Birrell) серьезно работал над этой
задачей и недавно объявил о том, что добился функциони-
рования базовых возможностей DTrace. ... Хоть Джону еще
и нужно постараться для того, чтобы его труд можно было
назвать полноценным портом, уже то, что у него есть сей-
час, несомненно, само по себе полезно».

Sun все-таки откроет Java


Компания Sun Microsystems объявила о своем твердом на-
мерении сделать Java проектом Open Source, но пока еще
не определилась с тем, как и когда это лучше сделать.
На конференции JavaOne Рич Грин (Rich Green) испол-
нительный вице-президент компании по ПО подтвердил на-
мерение его компании открыть Java, но добавил, что пока
этот процесс испытывает некоторые трудности, среди ко-
торых обозначил проблему совместимости.
Впрочем, это не помешало Sun сообщить о передаче
сообществу Open Source своих других продуктов: Sun Java
Studio Creator, Sun Java System Portal Server, ПО для оче-
редей сообщений на базе Sun Java Message System и Web
Services Interoperability Technology.
Попутно Sun представила лицензию Operating System
Distributor’s License for Java, что должно способство-
вать появлению JRE в составе GNU/Linux-дистрибутивов

№6, июнь 2006 3


репортаж

PHP – это мой путь решать


возникающие в Web задачи

25-26 мая в Москве прошла 5-я международная конференция «Современные технологии


эффективной разработки веб-приложений с использованием PHP». И на этот раз назвать
ее псевдомеждународной уже не получится!

В
первые Россию посетил основа- были именно бинарными или байт-ори- работке проектов для «внутреннего
тель проекта PHP Расмус Лер- ентированными). Вводится автомати- употребления» использовать исклю-
дорф (Rasmus Lerdorf) и один ческая поддержка Unicode для стро- чительно внутрипонятные (читай – на-
из активных разработчиков ядра и мо- ковых литералов. Происходит обнов- писанные иероглифами) названия пе-
дулей PHP Андрей Змиевский (Andrei ление семантики языка. Добавляется ременных и т. п. С докладом Андрея
Zmievski). поддержка преобразований кодировок Змиевского в виде тезисов можно оз-
Собственно, Андрей Змиевский в различных потоках данных. При этом накомиться на его сайте по адресу:
и стал первым докладчиком на конфе- предполагается возможность опери- http://www.gravitonic.com/talks.
ренции, рассказав о внедрении подде- ровать преобразованиями кодировок Старт конференции был дан, нача-
ржки Unicode в PHP 6. Да-да, вы не ос- для процесса выполнения скрипта, не- ло положено. Но дальше произошло
лышались. Не так уж и давно у нас по- посредственно самого скрипта; ввода- что-то странное. Выступившие вслед
явилась стабильная «пятерка», до сих вывода и файловой системы. за этим докладчики говорили не столь-
пор она еще не стала стандартом де- Возможность управления коди- ко о разработке приложений с исполь-
факто, а уже готовится версия PHP 6. ровкой скрипта (упрощенно это мож- зованием PHP, сколько о чем-то дру-
Причина довольно проста: объем внут- но представить как возможность ис- гом. Прозвучавший доклад «Автома-
ренних переработок, потребовавших- пользовать национальные символы тизация проектных задач и организа-
ся для полномаcштабной поддержки вплоть до иероглифов в названиях пе- ция цикла Build → Package → Deploy»
Unicode, таков, что провести его в ка- ременных), вызвало у аудитории впол- был, может, и интересен в качестве
честве очередного релиза версии 5 не законный вопрос: а зачем собствен- примера автоматизации сопровожде-
просто невозможно. Судите сами. но? Немного замявшись, г-н Змиевс- ния процесса разработки приложений,
Заявлена поддержка принципиаль- кий ответил, что в основном это но- но во-первых, докладчик не коснул-
но нового типа – символьной строки вовведение ориентировано на раз- ся нескольких действительно важных
Unicode и отделение типа «бинарная работчиков из стран Юго-Восточной для этого процесса тем (прежде всего –
строка» (до сих пор все строки в PHP Азии. Там, видите ли, любят при раз- проблемы получения и сборки патчей),

4
репортаж
а во-вторых… Связь с разработкой веб- думаете Yahoo! – это огромная компа-
приложений с использованием PHP ния, у которой целое море серверов,
постепенно начала тускнеть. которые и решают все наши пробле-
Следующий доклад – «Как зара- мы с нагрузкой? Но это совсем не так!».
ботать деньги на Open Source» – про- После чего в живой и активной мане-
шел живее. В большей степени пото- ре наглядно продемонстрировал ауди-
му, что тема довольна близка аудито- тории подходы к выявлению, анализу
рии и животрепещуща. Хотя с тем же и устранению неоптимальных, ресур-
успехом этот доклад можно было про- соемких мест. Кстати, всем рекомен-
читать и на любой другой IT-конферен- дуется смотреть в сторону расширения
ции. После этого Александр Календа- APC (http://pecl.php.net/package/APC).
рев попытался рассказать о методах Следующим пунктом в докладе про-
криптозащиты в b2b веб-приложениях. звучала проблема защищенности веб-
Почему я написал «попытался»? Ну хо- приложений. В том числе рассмотре-
тя бы потому, что 60% времени Алек- но расширение Filter (http://pecl.php.net/
сандр говорил о стандартах и нормо- package/filter).
образующих документах, связанных Третьим ключевым моментом до-
с этой тематикой. По моим наблюде- клада стал разговор о PHP в приме-
ниям, большая часть аудитории, явно нении к современным тенденциям
не сталкивавшаяся с этой проблемой в веб-приложениях. Здесь речь пошла
всерьез, просто потеряла за это время об усовершенствованиях по отноше-
нить, суть и цель повествования. нию к XML, RSS-потоках и, разумеется,
В завершение первого дня прозву- о технологиях асинхронной динамичес-
чали еще два доклада. Первый был кой подкачки. В последнем случае ав-
посвящен дистрибуции PHP-прило- тор-изобретатель языка остался верен
жений с помощью PEAR Installer. Са- JSON (Java Script Object Notation) и про- Выступление Расмуса Лердорфа
мой интересной, на мой взгляд, в нем пагандируемому им расширению PHP-
была часть, посвященная PEAR-ка- JSON. В общем, настоятельно реко- ботки программных продуктов, дист-
налам и возможности использования мендую всем самостоятельно ознако- рибуции, интеграции с другими про-
специализированного сервера. Кажет- миться со слайдами, подготовленными граммными продуктами. И в меньшей
ся, помимо массы догматов, ограниче- расмусом Лендорфом для этого докла- степени о PHP и PHP для разработки
ний и всяких других штучек, призван- да (http://talks.php.net/show/phpclub). современных и эффективных веб-при-
ных усложнить жизнь всем тем, кто не Во второй день так же прозву- ложений. Язык трансформировался
успел вовремя вскочить на подножку чал доклад о применении процедур во что-то другое? Перестал удовлет-
PEAR-экспресса, эта система породи- в СУБД MySQL, Сергей Павлов из ком- ворять современным тенденциям или
ла, наконец, и что-то полезное приме- пании РБК поведал об агрегаторах стал проигрывать на рынке веб-прило-
нительно к реальной жизни. Заверша- приложений. Большой интерес вы- жений другим платформам?
ющий первый день доклад был истин- звал доклад Евгения Климова «Прак- Во второй день конференции мне
ным сыном нашего времени и назы- тика использования технологии XSLT удалось взять интервью у Расму-
вался «AJAX и основы Rich Client». в приложениях php5», который сложил- са Лердорфа и Андрея Змиевского
Разумеется, обойти тему техноло- ся не совсем удачно и из-за нехватки (интервью читайте в июльском номере
гий динамической подкачки и асинх- времени оказался скомканным и об- журнала – примеч. редакции). Я не мог
ронной загрузки, говоря о разработке резанным. удержаться и спросил г-на Лердор-
веб-приложений, сейчас попросту не- В целом конференция оставила фа о том, что он сам думает о срав-
возможно. Другое дело, что в докладе лично у меня двойственное ощущение. нениях PHP с другими языками, о ро-
прозвучал скорее верхний слой про- Тематические доклады наших гостей ли и применимости PHP? В ответ Рас-
блематики, так сказать «AJAX для са- из Yahoo! (и Расмус Лердорф, и Анд- мус очень удивился и сказал, что сам
мых маленьких». Кроме этого был дан рей Змиевский уже несколько лет ра- он об этом думает довольно мало.
некоторый обзор имеющихся в при- ботают именно там), несомненно стали «Я смотрю на Web, я думаю именно
роде библиотек, который, уже почти самым главным событием конферен- о Web. Как только возникает новая
под занавес, свелся к DOJO javascript ции и посвящались именно проблеме задача, решить которую имеющими-
toolkit. Проект уже в стадии предпро- разработки веб-приложений с исполь- ся инструментами становится невоз-
дакшен, и его можно и нужно смотреть, зованием PHP. В большинстве осталь- можно или не удобно – мы что-то до-
трогать руками и т. п. ных докладов язык, технология и тен- бавляем и меняем в PHP. Просто пото-
Второй день конференции начался денции PHP, связь PHP с Web, PHP, му, что PHP – это мой путь решать воз-
с доклада отца-основателя PHP Расму- как инструмент и платформа разра- никающие в Web задачи».
са Лердорфа. Прежде всего г-н Лер- ботки веб-приложений, как бы отош-
дорф заговорил о скорости выполне- ли на второй план. Докладчики гово- Текст: Дмитрий Горяинов
ния веб-приложений: «Вы, наверное, рили об организации процесса разра- Фото: Антон Довгаль

№6, июнь 2006 5


аналитика

Быть или не быть


зарубежному софту
в России?

Ольга Максимович
В июне Госдума поставит точку в нашумевшей истории
с запретом импортного программного обеспечения.

Н
азвание проекта федераль- ющих стратегические отрасли и особо прежде всего попадут военный комп-
ного закона «Об информации, важные объекты Российской Федера- лекс, энергетика и транспорт.
информационных технологи- ции, запрещается использование за-
ях и защите информации» так и оста- рубежных программно-технических Цена вопроса
лось бы не столь узнаваемым для ши- средств. В другой говорится о недо- Как известно, безопасность в стране,
рокой публики, если бы не инициати- пустимости наличия в данных средс- в том числе и информационную, обес-
ва депутатов-единороссов. Геннадий твах недокументированных функций. печивают ФСБ и Федеральная служба
Гудков, член Комитета безопасности, Конкретный список объектов и отрас- по техническому и экспортному конт-
и Александр Хинштейн, зампредсе- лей, где планируется запретить зару- ролю. Кстати, в их совместной работе
дателя Комитета по промышленнос- бежный софт, по мысли разработчиков с Минобороны уже есть практика ог-
ти, во втором чтении предлагают до- и авторов поправок, должен устанав- раничения в стратегических отраслях.
полнить законопроект двумя поправ- ливаться правительством не позднее Например, предприятия могут исполь-
ками. Одна устанавливает норму, со- 12 месяцев с момента вступления зако- зовать только антивирусы, на которые
гласно которой в государственных ин- на в силу. Однако уже сейчас очевидно, имеются сертификаты этих ведомств.
формационных системах, обеспечива- что в список стратегических отраслей Что же касается инициативы депутатов

6
аналитика
Гудкова и Хинштейна, то ФСБ с уче- словам, переходят на собственный ные Штаты, либо продолжающих жить
том ряда юридических и технических софт. «Если есть отечественный ана- в России и сотрудничать с компани-
замечаний предложенные поправки лог западного программного обеспе- ей как вольнонаемные программисты.
поддержала, о чем и сообщил в пись- чения, необходимо отдать приоритет С другой стороны, во многих российс-
ме на имя председателя Комитета ГД ему, – говорит Александр Хинштейн. – ких компаниях программное обеспе-
по информационной политике Валерия Это особенно касается военных, стра- чение разрабатывают специалисты
Комисарова статс-секретарь замести- тегических объектов и сохранения гос- из стран третьего мира, в частности
теля директора ФСБ России. Однако тайны. Если иностранная компания Индии, которая входит в число лидеров
комитет, дважды рассмотрев поправ- поставляет оборудование, она будет по предоставлению компьютерных ус-
ки без участия, а потом и в присутствии использовать эту возможность для по- луг. Поэтому говорить о каком-то стра-
авторов, занял другую позицию. лучения секретной информации, раз- тегическом выборе страны в пользу то-
«На мой взгляд, причины того, что ведданных. Это возможно путем внед- го или иного программного обеспече-
поправки не были поддержаны, впол- рения в технику «посторонних объек- ния не очень корректно. Конечно, есть
не очевидны, – сказал в комментарии тов», и такие случаи уже были. Те, кто компании, предлагающие наиболее
«Системному администратору» Дмит- противостоит принятию этого закона, – популярный продукт, не только в Рос-
рий Горовцов, помощник депутата пособники западных разведорганов». сии, такие, например, как Microsoft.
Госдумы РФ Геннадия Гудкова. – Се- Но и в своей стране эта компания пос-
годня российский рынок информаци- Русский Windows тоянно контролируется уполномочен-
онных технологий более чем на 90 про- Несмотря на то, что, по словам Генна- ными органами государственной влас-
центов представлен инструментальны- дия Гудкова, запрет на использова- ти, проходит различные виды антимо-
ми средствами импортного производс- ние иностранного ПО коснется толь- нопольных расследований. Это связа-
тва. 99 процентов – это импортное про- ко 10 процентов действующих в на- но с тем, что компания, занимающая
граммное обеспечение, включающее шей стране информационных систем, столь большую долю на рынке ком-
операционные системы, системы уп- в российских госкомпаниях пока осто- пьютерных программ, может теорети-
равления базами данных и разработки рожно высказываются о перспективах чески злоупотребить своими возмож-
приложений, системы поддержки сете- перехода на отечественные програм- ностями. Любая погрешность в таком
вых протоколов и другие универсаль- мы. Кроме того, российские предпри- массовом продукте мультиплицирует-
ные базовые средства. Соответствен- ятия уже сделали огромные инвести- ся на миллионы компьютеров и может
но существует мощное лобби на раз- ции в приобретение западных продук- создать серьезные сбои в работе жиз-
ных уровнях, отстаивающее интересы тов. Поэтому есть предложения встра- ненно важных узлов, таких как управ-
западных разработчиков и компаний. ивать модули в Windows или другие ление энергоресурсами, нефте- и га-
И для многих оппонентов включение операционные системы, подстраи- зопроводами, аэропортами и вокзала-
поправок в законопроект означает по- вая их под нужды конкретной отрас- ми. В этих случаях действительно мо-
терю финансовых потоков, которые, по ли, а не изобретать велосипед, при- жет существовать проблема».
самым скромным подсчетам, оценива- думывая «русский Windows». Говорят
ются в 12 миллиардов долларов в год. специалисты и о том, что существует Код доступа
Вот цена вопроса. По сути, эти деньги программное обеспечение, не имею- В Microsoft такой проблемы не видят.
главным образом идут на кредитова- щее отечественных аналогов, кото- О том, что исходные коды Microsoft
ние частных западных компаний». рое не может быть заменено. Напри- уже официально переданы России
мер, ПО к турбинам импортного про- и при необходимости их можно про-
Доводы депутатов изводства в РАО ЕЭС, оно поставля- верить на так называемые закладки,
В чем же конкретно заключается опас- ется с ними в комплекте. «Системному администратору» под-
ность? По мнению авторов попра- «Абсолютное большинство про- твердила Кира Кирюхина, руководи-
вок, ввезенная из-за границы техни- граммных продуктов не разрабаты- тель отдела по связям с обществен-
ка на стратегически важных объек- ваются в России и являются плодами ностью корпорации Microsoft. «По-
тах вовсе не гарантирует защиту ин- интеллектуального труда зарубежных нимая, что каждое государство обя-
формации, в том числе и секретной, разработчиков, – сказал в коммента- зано защищать свои национа ль-
от зарубежного поставщика. «У разра- рии «Системному администратору» ные интересы, в Microsoft в 2002 году
ботчиков есть возможность заложить Игорь Динес, член Комитета Госдумы разработали программу Government
«ошибки», которые могут сделать не- РФ по энергетике, транспорту и свя- Security Program (GSP) по сотрудни-
действенными военные системы и сис- зи и председатель подкомитета по ин- честву с государствами в области ин-
темы навигации. При необходимос- формационным технологиям. – Одна- формационной безопасности, – ска-
ти их можно легко вывести из строя. ко, учитывая степень интернационали- зала она. – В рамках программы GSP
На карте военная безопасность наше- зации знаний, сложно говорить, что се- мы предоставляем государствам до-
го государства. Если мы не примем за- годня можно считать национальным ступ к исходным кодам своих продук-
кон – окажемся безоружными», – счи- компьютерным продуктом. Например, тов. Россия была первой страной в ми-
тает Геннадий Гудков. многие программы компании Microsoft ре, подписавшей GSP в 2002 году и по-
Депутаты приводят в пример опыт разработаны с участием российских лучившей доступ к исходным кодам
Англии, Германии, Франции, где, по их специалистов, уехавших в Соединен- Windows и других программ. Все го-

№6, июнь 2006 7


аналитика

Поправки депутатов Госдумы РФ Геннадия Гудкова и Александра Хинштейна ко второму чтению


проекта Федерального закона «Об информации, информационных технологиях и защите информации»,
принятого в первом чтении 25 ноября 2005 года (текст поправок выделен курсивом)

Статья 16. Требования к эксплуата- нической защиты информации, в пределах мента вступления в силу настоящего фе-
ции государственных информацион- своих полномочий определяют требования дерального закона.
ных систем по защите информации в государственных 7. Не допускается эксплуатация госу-
1. Принятие государственной информаци- информационных системах, включая мето- дарственных информационных систем
онной системы в эксплуатацию осущест- ды и способы такой защиты. без надлежащего оформления прав на ис-
вляется в порядке, устанавливаемом ее При создании государственной инфор- пользование ее компонентов, охраняемых
заказчиком, если иное не предусматрива- мационной системы выбор методов и спо- в соответствии с законодательством Рос-
ется в решении о ее создании. собов защиты информации, используемых сийской Федерации об интеллектуальной
Правительство Российской Федерации в информационной системе, осуществля- собственности.
вправе устанавливать обязательные тре- ется из числа методов и способов, содер- 8. Операторы государственных инфор-
бования к такому порядку для отдельных жащихся в указанных требованиях. мационных систем несут ответственность
категорий государственных информаци- Нормативными правовыми актами го- за обеспечение целостности и сохраннос-
онных систем. сударственных органов Российской Феде- ти содержащейся в них информации и обя-
2. Федеральные информационные сис- рации может предусматриваться возмож- заны принимать меры по предотвращению
темы подлежат регистрации в случаях, ус- ность неприменения отдельных требова- утраты или искажения информации, а при
тановленных федеральным законом. ний для определенных государственных необходимости – меры по восстановлению
Порядок регистрации федеральных ин- информационных систем. утраченной информации.
формационных систем устанавливается 5. Технические средства, программно-
Правительством Российской Федерации. технические средства и средства защиты Статья 18. Защита информации
Порядок регистрации региональных информации, содержащейся в государс- 1. Защита информации заключается в при-
информационных систем может быть ус- твенной информационной системе, долж- нятии правовых, организационных и тех-
тановлен нормативным правовым актом ны иметь подтверждение соответствия нических (программно-технических) мер
субъекта Российской Федерации. обязательным требованиям, установлен- в целях:
3. Обеспечение целостности и сохран- ным в соответствии с законодательством 1) обеспечения целостности и сохраннос-
ности информации, содержащейся в го- Российской Федерации о техническом ре- ти информации, недопущения ее не-
сударственных информационных систе- гулировании. санкционированного изменения или
мах, осуществляется путем установления 6. В государственных информаци- уничтожения;
и соблюдения единых требований защиты онных системах, обеспечивающих стра- 2) соблюдения конфиденциальности ин-
информации от несанкционированного до- тегические отрасли и особо опасные формации ограниченного доступа;
ступа или изменения, в том числе при осу- (важные) объекты Российской Феде- 3) реализации права на доступ к инфор-
ществлении доступа к информационно-те- рации, не допускается использование мации;
лекоммуникационным сетям. зарубежных программно-технических 4) недопущения несанкционированного
4. Федеральный орган исполнительной средств. Перечень стратегических от- воздействия на средства обработки
власти в области обеспечения безопаснос- раслей и особо опасных (важных) объ- и передачи информации;
ти и федеральный орган исполнительной ектов Российской Федерации устанав- 5) недопустимости недокументирован-
власти, уполномоченный в области проти- ливается Правительством Российской ных функций программно-техничес-
водействия техническим разведкам и тех- Федерации не позднее 12 месяцев с мо- ких средств.

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


ющие за безопасное использование Управления делами Президента РФ» зовать продукты Microsoft в своих за-
программных продуктов в государс- уже сертифицировало в ФСТЭК ряд щищенных информационных систе-
твенных организациях, среди кото- продуктов Microsoft: клиентскую опера- мах. А согласованные с ведомствами
рых Федеральная служба безопас- ционную систему Windows XP, сервер- планы по дальнейшей сертификации
ности, Федеральная служба по техни- ную операционную систему Windows продуктов Microsoft дают нашим поль-
ческому и экспортному контролю, Ми- Server 2003, сервер управления база- зователям уверенность в том, что тре-
нистерство обороны и другие, име- ми данных SQL Server 2000 и офисный бования нашего государства к исполь-
ют доступ к исходным кодам продук- пакет приложений Office 2003. Прово- зованию продуктов в информацион-
тов Microsoft для того, чтобы прове- дится сертификация наших продук- ных системах государственных орга-
рить качество продуктов и убедиться тов и в ФСБ. Там уже получены по- нов будут выполняться корпорацией
в отсутствии у них недекларированных ложительные заключения по резуль- Microsoft и далее».
возможностей. татам сертификационных испытаний
На основе данного соглашения еще Windows XP и Windows Server 2003. По- Отечественные аналоги
в 2003 году была начата сертификация лученные сертификаты дают возмож- Серьезные доводы имеются и в пользу
ряда продуктов. На сегодняшний день ность государственным организаци- перехода на российское ПО. «Есть оте-

8
аналитика
чественные разработки, которые впол- водит ряд работ, в частности, «Багет- блему в долгий ящик, а не решить ее
не могут составить конкуренцию зару- АСУ» и «Каверна-АСУ», цель кото- сегодня».
бежным аналогам, – сказал «Систем- рых – переход на отечественную эле-
ному администратору» Дмитрий Горов- ментную базу в системах управления Буква закона
цов. – Российские разработчики, со- для стратегических отраслей и особо Точка в истории с попыткой запрета за-
здав программные продукты, не толь- важных объектов России. Предприятия рубежного ПО, скорее всего, будет пос-
ко не уступающие западным аналогам, и организации радиоэлектронной про- тавлена уже в самое ближайшее вре-
но и превосходящие их, не позволили мышленности Роспрома при выпол- мя. Согласно регламенту, независимо
иностранным компаниям окончатель- нении работ для специальных заказ- от решения Комитета Госдумы по ин-
но завоевать российский рынок. А их чиков – МО, ФСБ, МЧС – используют формационной политике, депутаты
успешная эксплуатация подтвердила, программное обеспечение ЗАО «Кон- имеют право вынести свои поправки
что отечественные разработки новых церн ВНИИНС»: операционную систе- на отдельное голосование на пленар-
информационных технологий вполне му «ОС МСВС» 3.0, систему управле- ном заседании Госдумы в день, когда
конкурентоспособны и при соответс- ния базами данных «Линтер-ВС» 6.0 будет рассматриваться данный проект
твующей поддержке государства мог- и многое другое». федерального закона во втором чте-
ли бы со временем вытеснить запад- «Вполне правомочной» постановку нии. Так, собственно, депутаты Гудков
ные аналоги с российского информа- вопроса о необходимости приоритет- и Хинштейн и намерены поступить.
ционного рынка. Например, в Институ- ного внедрения отечественных разра- Кроме того, еще до второго чте-
те системных исследований РАН, кото- боток считает и заместитель министра ния, они предполагают обсудить поп-
рый возглавляет академик Владимир информационных технологий и связи равки на президиуме фракции «Еди-
Борисович Бетелин, создана и успеш- Дмитрий Милованцев. Однако, высту- ная Россия», чтобы заручиться подде-
но действует система «Багет». Эта раз- пая на заседании Комитета ГД по ин- ржкой парламентского большинства.
работка позволяет осуществлять кон- формационной политике, он подчерк- Так что, по сути, принятие поправок –
троль за функционированием инфор- нул, что такой «сложный и комплекс- вопрос политический: либо идею Гуд-
мационных систем, обеспечением бе- ный вопрос решить двумя поправками кова – Хинштейна поддержат, либо нет.
зопасности их работы. в рамочный законопроект невозмож- В остальном рассмотрение законопро-
В Фонде социального страхования но», и предложил разработать новый екта – технические детали. Третье чте-
Российской Федерации внедрена и ус- проект федерального закона, посвя- ние, как правило, – всего лишь линг-
пешно экcплуатируется система управ- щенного вопросам поддержки отечест- вистическая экспертиза. Да и дальше,
ления базами данных, разработанная венного программного обеспечения. когда законопроект поступает на рас-
академиком РАЕН Сергеем Станис- «На словах Дмитрий Милован- смотрение в Совет Федерации и под-
лавовичем Ковалевским. Кроме того, цев поддержал идею депутатов Гуд- пись Президента, текст, как правило,
в настоящее время ФГУП «НИИ авто- кова и Хинштейна, – прокомментиро- уже остается без изменений. А потому,
матической аппаратуры имени акаде- вал позицию зам. министра Дмитрий быть или не быть зарубежному софту
мика В.С.Семенихина», ведущее в этой Горовцов, – однако на деле это, ско- в России, окончательно решит второе
области предприятие Роспрома, про- рее всего, означает – отложить про- чтение законопроекта.

№6, июнь 2006 9


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

Современный Linux-сервер:
виртуализируем сетевые устройства

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

С
етевые интерфейсы в серверах подхода вы можете встретить во мно- ется, – от «рождения» и до «смерти» бу-
обычно ассоциируются с чем- гих системах, например, во встроен- дет eth0. А вот и нет, как бы того не хо-
то неизменным и предопреде- ных Linux или при создании виртуаль- телось многим наивным скриптописа-
ленным. Их число, топология подклю- ных серверов. Рассмотрим предпо- телям, eth0 будет лишь в идеальном
чения и настройки, как правило, зара- сылки, идею и реализацию перевода случае при установке системы прямо
нее определяются в проектном зада- сетевых интерфейсов в виртуальный на данный системный блок. Если же,
нии и не меняются в процессе штат- режим. В качестве платформы будем что более реально, сервер не устанав-
ной эксплуатации. Но даже в таком использовать openSUSE Linux версий ливается каждый раз с нуля, а копиру-
идеализированном рассуждении ста- 10.0 и 10.1 [1]. Все несоответствия меж- ется через образ системы или всего
тичность интерфейсов весьма услов- ду ними я отмечу особо. Итак, начнем жесткого диска, то, скорее всего, даже
на. Возможен и иной взгляд на под- с перечисления возможных проблем, единственный интерфейс будет иметь
систему, отвечающую за сетевые ин- не решаемых в рамках традиционной иное название. Eth1 и далее, в том слу-
терфейсы. Безусловно, это всего лишь настройки сети. чае, если полагаться на автоматичес-
некий технический прием или рекомен- кую систему наименования устройств,
дация, и каждый из вас волен следо- Исходные предпосылки использованную в udev, что для совре-
вать ей или предпочесть консерватив- Рассмотрим «редкий» вариант, когда менных систем является стандартом.
ный вариант настроек. Более того, и не у сервера всего лишь один сетевой ин- Но в серверах, как правило, более
откровение, так как элементы такого терфейс. Что тут сложного, спрашива- одного интерфейса. И если их назва-

10
администрирование
ния в некоторый момент упорядочены
и устраивают системного админист-
ратора и используемые им настроеч-
ные скрипты, то представим, что мо-
жет произойти в случае отказа одно-
го из интерфейсов. Например, произо-
шел отказ в процессе старта. В ста-
рых системах, без использования
udev, происходило смещение нумера-
ции устройств или фактическая пере-
коммутация соединений. Интерфейсы,
предназначенные для внутрисетевых
соединений, могли переключиться на
внешние линии. Практически это озна-
чало крах всей системы защиты. Сов-
ременные скрипты, ориентированные Рисунок 1. Сравнение традиционного способа настройки с виртуализованным интерфейсом
на udev, привязывают имена сетевых
интерфейсов к их физическим адре- рез ip link set) может привести к наруше- вер в защищенное состояние. А вот
сам или PCI-идентификаторам. Мож- нию работы сетевых служб, использую- иная схема, используемая в Fedora
но быть уверенным, что катастрофи- щих (прослушивающих) адрес данного Core и RHEL, совершенно неприем-
ческого «выворачивания» сервера интерфейса. Это в том благоприятном лема. Кстати, как и всякое примене-
внутренними интерфейсами наружу случае, если вы уверены, что созданная ние iptables-save/restore. Дело в том,
не произойдет. Но есть иная беда. Се- «на лету» аварийная схема при следу- что, как уже указано, вовсе не обяза-
тевая конфигурация, созданная авто- ющем рестарте не сломается. тельно сетевые интерфейсы старту-
матическим образом, может потерять Еще один редкий сейчас крэш-сце- ют нужным образом. Поэтому не факт,
свое сбалансированное состояние, нарий: сервер или поставляется в ви- что iptables-restore создаст те правила,
и очередная перезагрузка может при- де «черного ящика», или обслуживает- которые требуются из-за изменившей-
вести к новому изменению имен интер- ся на удаленной площадке привлечен- ся схемы наименования интерфейсов.
фейсов из-за отказа одной из сетевых ным техником. Здесь возможна ошиб- В схеме SuSE есть скрипт, который те-
карт. Впрочем, и при добавлении сете- ка кабельной коммутации, что может оретически может проанализировать
вой карты в систему с udev такие слу- привести к смене назначений сетевых реальное состояние сети и адаптиро-
чаи нередки. Итогом подобного про- соединений – внутрисетевые на вне- вать сетевой экран нужным образом.
цесса может стать частичный или пол- шние и наоборот. При традиционной Минус только в том, что сетевой эк-
ный отказ стартовых сетевых скрип- разметке сетевых интерфейсов не су- ран должен подниматься не отдельным
тов, то есть изоляция сервера от се- ществует возможности автоматически скриптом по расписанию SysVinit, а
ти. Для противодействия этому в сис- исправить ошибку внешнего кабельно- синхронно с интерфейсом, на который
темах с udev рекомендуется приме- го подключения. он настраивается! Увы, хотя разработ-
нять постоянные, или персистентные Теперь пример из смежной облас- чики Red Hat, Inc. далеки от этой прос-
(от persistent – постоянный) сетевые ти. Давайте задумаемся о том, как про- той мысли, но и в SuSE не лучше. Не
имена. Увы, в такой схеме главное – изводится включение сетевого экра- может система безопасности старто-
исключить столкновение переимено- на в процессе старта сервера. Самый вать, во-первых, после поднятия сете-
ваний. Другими словами, сетевые ин- грамотный из мною наблюдаемых – вых интерфейсов (и ведь никто не нор-
терфейсы можно называть как угодно, это способ, использованный в дис- мирует данное «после») и, во-вторых,
но только не по схеме ethN, принятой трибутивах SuSE. Безусловно, в ка- вне всякой связи с настройкой дина-
по умолчанию. честве серьезного решения это со- мических сетевых интерфейсов (wifi,
Выход из строя сетевой карты не- вершенно неприемлемо (практически ppp и прочие ADSL).
посредственно в ходе эксплуатации бытовой вариант). Отмечу лишь од-
потребует замены физического интер- но важное качество: в этом сетевом Возникновение базовой
фейса, то есть в процессе очередного экране выделена отдельная стадия идеи
старта произойдет добавление следу- предварительной настройки – снача- Причины для определенного рода оза-
ющего номера в базу udev при обнару- ла срабатывает SuSEfirefall2_init пос- боченности несовершенством сетевых
жении нового устройства, что сведет- ле старта boot.localnet, а потом уже настроек перечислены. Но путей ре-
ся к ранее описанной проблеме при- SuSEfirewall2_setup после $network. шения указанных проблем множест-
вязки имен. Но можно и рассмотреть Не буду обсуждать, что эти скрип- во. Например, можно проследить, как
существование в серверном блоке се- ты делают конкретно, меня ни один развивались (если не сказать – ме-
тевой карты, рассчитанной на горячую из них не устраивает, но главное – тались!) предложения разработчиков
замену. Тут мы сталкиваемся с иной здесь продемонстрирована необхо- SUSE по настройке персистентных се-
сложностью. Простое отключение ин- димость нулевой фазы настройки се- тевых имен от версии дистрибутивов
терфейса через ifdown (как вариант че- тевого экрана, которая переводит сер- 9.х, где эта проблема возникла, до ис-

№6, июнь 2006 11


администрирование
пользуемых сейчас 10.х. Аналогично да файловер. И теперь, по прошествии рода роутинг. Поэтому будем считать
и в отношении применяемого в упо- более 4 лет со времени внедрения по- абсолютно обоснованным создание
мянутом дистрибутиве сетевого экра- добного способа разметки локальной сетевого окружения, приспособленно-
на. Ведь неспроста в его названии ис- сети, можно сказать, что эта техноло- го для подключения виртуальных сис-
пользован индекс 2. Можно, например, гия была испытана многолетней прак- тем, заранее в расчете на развитие.
пойти вообще радикальным путем, как тикой и ни разу не подвела.
это предлагается в ALT Linux, и исполь- Но сейчас появились дополнитель- Технология изнутри
зовать иную схему запуска сети [2]. ные аргументы в пользу использова- Итак, выбор сделан – сетевой мост.
Так что практика размножения сущнос- ния именно сетевых мостов в качест- Статей, описывающих настройку се-
тей и версий может продолжаться бес- ве основы виртуализации. Логика раз- тевых мостов в Linux и сопутствую-
конечно. Для меня выбор способа, ко- вития серверных систем неизбежно щие этому вопросы, огромное чис-
торый, как кажется сейчас, может ре- приводит к необходимости внутрен- ло, например [7]. Не буду дублировать
шить все проблемы разом, произошел ней виртуализации ресурсов и ком- очевидное. Обращаю ваше внима-
почти историческим путем. понентов. Причин этому очень много. ние лишь на самое важное в контек-
Несколько лет назад, как толь- Их рассмотрение заслуживает отде- сте предлагаемой идеи. Сам сетевой
ко код сетевого моста [3] был вклю- льной статьи. Как один из последних мост является полностью виртуаль-
чен в очередной дистрибутив SUSE, опубликованных аргументов приведу ным устройством. Реальный трафик
мне показалось очень интересным мнение Эндрю С. Таненбаума (Andrew принимается только физическими се-
использовать сетевой мост в качест- S. Tanenbaum) о необходимости изо- тевыми устройствами. Чтобы трафик
ве встроенного в сервер коммутато- ляции подсистем для увеличения на- попал на сетевой мост с некоторого
ра, подключенного к локальной се- дежности и безопасности [4]. Лучший физического устройства или, напро-
ти. Во-первых, это позволяло сокра- способ добиться изоляции – помес- тив, с сетевого моста поступил в ре-
тить объем дополнительного актив- тить нужные подсистемы в отдельную альный интерфейс, нужное сетевое
ного сетевого оборудования, исполь- виртуальную машину. К слову сказать, устройство должно быть подключено
зованного в формировании тополо- статья по ссылке [4] весьма спорная, к мосту командой:
гии сети, что было очень выгодным в о чем свидетельствует и сопутство-
маленьких офисах или при организа- вавшая ей сетевая дискуссия. Здесь brctl addif <bridge> <iface>
ции сетевых рабочих групп. И во-вто- предлагается принять на веру, что ра-
рых, выделяло вакантные интерфей- но или поздно, но использование вло- Иначе трафик не будет проходить.
сы для горячей замены в случае от- женных виртуальных машин внутри Здесь внимательный читатель уже
каза оборудования, что очень важно, серверов станет нормой. Практичес- должен все понять – таким путем реа-
если сервер обслуживается удаленно, ки во всех видах подобной виртуали- лизуется внутренняя коммутация. Это
поскольку переключить на запасной зации ресурсов внутренний, или зави- основная идея. То есть изначально се-
интерфейс и быстрей и дешевле, чем симый, уровень получает непосредс- тевой мост предназначен для объеди-
дожидаться приезда сисадмина, кро- твенный доступ к сети путем присоеди- нения нескольких реальных сетевых
ме того, что можно и сам сетевой ин- нения к виртуальному сетевому мосту интерфейсов в общий коммутатор. Но
терфейс использовать как своего ро- (bridge) [5, 6], если исключить всякого ничего не мешает использовать выде-
ленные сетевые мосты для каждого ре-
ального интерфейса. Собственно, как
и наоборот – для каждого (внимание:
здесь еще одно усложнение) реально-
го, но виртуализованного путем назна-
чения на выделенный специальный се-
тевой мост использовать один или не-
сколько аппаратных сетевых интер-
фейсов из массива имеющихся в со-
ставе оборудования сервера. И вот эту
привязку можно производить динами-
чески. Все сказанное иллюстрируется
схемой (см. рис. 1).
В левой части традиционная схема
подключения, далее – то же самое, но
с сетевым мостом, а в правой – новая.
Согласно схеме (рис. 1, правая часть)
сетевой мост переименовывается, так-
же как и заменяемый интерфейс, а имя
физической сетевой карты заменяет-
ся на служебное название. Причем
Рисунок 2. Запрос на перевод интерфейса в режим прослушивания все сетевые настройки выполняются

12
администрирование
вне зависимости от текущего состояния коммутации меж- Итак, произведем подобную настройку. Прежде всего
ду ними. Сама же коммутация из стадии настройки пере- отключим имеющийся сетевой интерфейс:
водится в категорию состояния комплексного сетевого со-
единения, включающего сетевой мост и предназначенные # ifdown eth0
к подключению физические сетевые интерфейсы. eth0 device: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
eth0 configuration: eth-id-00:0c:29:89:80:c2
Если сетевая карта вышла из строя, то подключается
предназначенная на замену. Если в «джек» сетевой кар- # ip link sh
ты вставлен «плуг» другого кабеля, то она подключается 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
на правильный виртуальный интерфейс согласно произ- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
веденной кабельной коммутации после проверки трафика 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:89:80:c2 brd ff:ff:ff:ff:ff:ff
на данном кабельном подключении. Если нужно отключить 3: sit0: <NOARP> mtu 1480 qdisc noop
сервер временно от некоторой сети, то можно не вынимать link/sit 0.0.0.0 brd 0.0.0.0
кабель из сетевой карты, не останавливать сетевые серви-
сы, не запирать firewall, а просто отсоединить физический Затем переименуем его, так как «реальное» имя нам
интерфейс от используемого моста. Но на этом преиму- понадобится далее для создаваемого виртуального ин-
щества не кончаются. Все почти так же, как и с вытянутым терфейса:
носом киплинговского слоненка.
«Физика» работы сетевого моста требует, чтобы исполь- # ip link set dev eth0 name hweth0
# ip link sh
зуемое аппаратное устройство принимало из сети пакеты
для адреса сетевого моста, в который это устройство вклю- 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
чено. Такое возможно, если в сетевой карте отключить аппа- 2: hweth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
ратную фильтрацию пакетов и перевести ее в promiscuous- link/ether 00:0c:29:89:80:c2 brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop
режим или, как будем называть это далее, перевести в ре- link/sit 0.0.0.0 brd 0.0.0.0
жим прослушивания. Самый простой способ добиться это-
го – поднять интерфейс с адресом 0.0.0.0 или, что более вер- Теперь переименованный интерфейс снова можно вклю-
но, вовсе без адреса. Собственно, в ином состоянии утилита чить. Впредь он будет играть роль простого элемента ком-
brctl откажется подключать интерфейс к мосту. И в процессе мутации без собственного IP-адреса:
подключения интерфейс будет переведен в режим прослу-
шивания автоматически. Но в этом тезисе ничего не сказа- # ip link set dev hweth0 up
# ifconfig hweth0
но про наличие действительного адреса у самого сетевого
моста. Он может иметь реальный адрес, может иметь не- hweth0 Link encap:Ethernet HWaddr 00:0C:29:89:80:C2
inet6 addr: fe80::20c:29ff:fe89:80c2/64 Scope:Link
сколько адресов как алиасы (синонимы), может иметь ад- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
рес, немарштуризируемый в используемой сети, или вов- RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
се не иметь адреса. Ну и, наконец, сетевой мост может во-
collisions:0 txqueuelen:1000
обще не соединяться с физическим интерфейсом. Тогда он RX bytes:2629 (2.5 Kb) TX bytes:3211 (3.1 Kb)
образует полностью виртуальный коммутатор внутренней Interrupt:177 Base address:0x1400
сети, к которому могут подключаться виртуальные маши-
ны через виртуальные же интерфейсы, и использовать его Создадим сетевой мост с предпочтительным именем,
как внутреннюю сеть кластера. Рассмотрим эти варианты в нашем случае это eth0, так как виртуализацию этого ус-
подробнее и проверим их экспериментально. тройства мы и производим:

Сетевой мост с реальным адресом # brctl addbr eth0


# brctl show
Эту часть экспериментов проведем в системе, установлен-
ной внутрь виртуальной машины с полной и достаточно bridge name bridge id STP enabled interfaces
eth0 8000.000000000000 no
тщательной эмуляцией, а именно внутрь VMWare. Но, уве-
ряю вас, все будет полностью работоспособно и на реаль- # ip link set dev eth0 up
# ip link sh
ном оборудовании. Более того, такие условия позволят сде-
лать некоторые дополнительные выводы. 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
Виртуальный интерфейс с реальным адресом подхо- 2: hweth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
дит для использования в самом распространенном и од- link/ether 00:0c:29:89:80:c2 brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop
новременно тривиальном случае. Это фактически экви- link/sit 0.0.0.0 brd 0.0.0.0
валентная замена традиционного интерфейса на пару, со- 4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
стоящую из виртуального и реального устройства. К мос-
ту с актуальным адресом подключается безадресный фи- В приведенном выше протоколе обратите внимание
зический интерфейс, который принимает все пакеты в дан- на то, что виртуальный интерфейс eth0 даже после вклю-
ной сети, а фильтрацию производит IP-стек, работающий чения командой ip link set up не имеет канального адреса
поверх сетевого моста. То есть сетевой экран тоже настраи- (MAC). Даже присвоение ему IP-адреса ничего не меняет:
вается на сетевом мосту. И все используемые сетевые сер-
висы также «слушают» адрес сетевого моста. # ip addr add 192.168.0.111/32 dev eth0

№6, июнь 2006 13


администрирование
# ifconfig eth0 мост получает канальный адрес, такой же как адрес пер-
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 вого присоединенного интерфейса. Ну и, наконец, тра-
inet addr:192.168.0.111 Bcast:0.0.0.0 Mask:255.255.255.255 фик – пошел! Обратите внимание на задержки. Они вели-
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ки. Но это лишь следствие инерционности работы сетево-
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 го моста. И немного спустя все приходит в норму. Напри-
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 мер, так выглядит «пингование» с удаленного хоста спус-
RX bytes:0 (0.0 b) TX bytes:1536 (1.5 Kb) тя некоторое время:

И это объяснимо, так как виртуальный интерфейс пока server:~ # ping -c 1 192.168.0.111
не скоммутирован ни с одним реальным физическим ин- PING 192.168.0.111 (192.168.0.111) 56(84) bytes of data.
терфейсом, то есть не подключен ни к одной сети. Прове- 64 bytes from 192.168.0.111: icmp_seq=1 ttl=64 time=0.498 ms

рим это: --- 192.168.0.111 ping statistics ---


1 packets transmitted, 1 received, 0% packet loss, time 0ms
# ip route add 192.168.0.0/24 dev eth0 rtt min/avg/max/mdev = 0.498/0.498/0.498/0.000 ms
# ping -c 1 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.111: icmp_seq=1 Destination Host Unreachable
То есть на рабочей производительности это не ска-
зывается. Более того, подобное подключение полностью
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 1ms прозрачно для всех сетевых служб даже канального уров-
ня. Например, переключим виртуальный интерфейс в ре-
Как видите, трафик не идет. Точно такая же картина жим DHCP:
и при попытке «достучаться» до адреса 192.168.0.111 с дру-
гих хостов сети. Теперь соединим eth0 с физическим ин- # ip addr del 192.168.0.111/32 dev eth0
# ifconfig eth0
терфейсом:
eth0 Link encap:Ethernet HWaddr 00:0C:29:89:80:C2
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
# brctl show
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
bridge name bridge id STP enabled interfaces RX packets:8 errors:0 dropped:0 overruns:0 frame:0
eth0 8000.000000000000 no TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
# brctl addif eth0 hweth0 RX bytes:860 (860.0 b) TX bytes:3502 (3.4 Kb)
// здесь происходит автоматический перевод hweth0
// в режим прослушивания # brctl show
# ip link sh
Internet Systems Consortium DHCP Client V3.0.3
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue Copyright 2004-2005 Internet Systems Consortium.
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 All rights reserved.
2: hweth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 For info, please visit http://www.isc.org/products/DHCP
link/ether 00:0c:29:89:80:c2 brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop Listening on LPF/eth0/00:0c:29:89:80:c2
link/sit 0.0.0.0 brd 0.0.0.0 Sending on LPF/eth0/00:0c:29:89:80:c2
4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue Sending on Socket/fallback
link/ether 00:0c:29:89:80:c2 brd ff:ff:ff:ff:ff:ff DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPOFFER from 192.168.0.1
# brctl show DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bridge name bridge id STP enabled interfaces
bound to 192.168.0.178 -- renewal in 1429 seconds.
eth0 8000.000c298980c2 no hweth0
# ifconfig eth0
# ping -c 1 192.168.0.1
eth0 Link encap:Ethernet HWaddr 00:0C:29:89:80:C2
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. inet addr:192.168.0.178 Bcast:192.168.0.255
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=29.9 ms Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
--- 192.168.0.1 ping statistics --- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
1 packets transmitted, 1 received, 0% packet loss, time 0ms RX packets:25 errors:0 dropped:0 overruns:0 frame:0
rtt min/avg/max/mdev = 29.959/29.959/29.959/0.000 ms TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
Разберем описанное в протоколе. Во-первых, в точке, RX bytes:2651 (2.5 Kb) TX bytes:5370 (5.2 Kb)
выделенной ремаркой, произошел автоматический перевод
физического интерфейса в режим прослушивания. Эмуля- Как видите, все работает. Собственно, другого и не сто-
тор это «поймал» и выдал запрос оператору (см. рис. 2). ило бы ожидать, поскольку уже было сказано, что на подоб-
Во-вторых, несмотря на предупреждение о невоз- ной технологии давно и устойчиво работают такие способы
можности данной операции, тем не менее все работает, виртуализации серверов, как UML, XEN и даже VMWare.
как следовало. Из чего можно сделать вывод, что реаль-
ный интерфейс компьютера, в котором запущен эмулятор Мост, объединяющий
VMWare, и так уже работает в состоянии promiscuous (кстати, виртуальные устройства
это не отображается системными флагами), что подтверж- Но наиболее интересные способы использования сетевых
дает тезис о неизбежности перехода к виртуализованным мостов как основы виртуализации получаются, если в них
сетевым интерфейсам в перспективе. В-третьих, сетевой включать псевдоустройства, которые сами являются вир-

14
администрирование
туальными. Например, виртуальные устройства, создава-
емые в качестве туннельных. Но ведь самое главное пре-
имущество сетевого моста в том, что он позволяет рабо-
тать с включенными в него интерфейсами на уровне L2
модели ISO OSI. Поэтому наиболее уместным кандидатом
на такую интеграцию можно считать виртуальный интер-
фейс гостевого сервера. Итак, рассмотрим, как можно ма-
нипулировать сетевыми подключениями вложенного серве-
ра UML (user mode linux), подключенного к специально со-
зданным сетевым мостам. Этот пример, к сожалению, не-
доступен на openSUSE Linux 10.1 из-за прекращения под-
держки UML в указанной версии. Утилиты для настройки
специальных виртуальных устройств tun/tap можно найти
только в версии 10.0 этого дистрибутива. И хотя альтерна-
тивный вариант виртуализации Xen, который работает с се-
тью точно так же, присутствует и там и там, мы будем де- Рисунок 3. Тестовая система с виртуальными интерфейсами
и сетями
монстрировать все приемы на UML, поскольку эта техно-
логия более «прозрачна» для анализа. ются в командной строке. И ОС, запущенная внутри вир-
Предположим, что все необходимые элементы для за- туальной машины (в случае UML, сама модифицирован-
пуска виртуальной ОС уже созданы. Подробно данная те- ная ОС и является такой виртуальной машиной) использу-
ма будет затронута в следующих статьях цикла. Пока про- ет эти псевдоустройства в качестве эмулятора аппаратных
шу поверить «на слово». Структура тестовой системы изоб- сетевых интерфейсов. На стороне хостовой машины уст-
ражена на рис. 3. ройства tun/tap подключаются внутрь сетевых мостов, ес-
Внутри хостовой, той, которая служит основой, машины ли предполагается разрешить на них работу на уровне L2.
создан ряд сетевых мостов по схеме, описанной выше: Мы так и поступим:

# ifconfig eth0 server:~ # brctl show


bridge name bridge id STP enabled interfaces bridge name bridge id STP enabled interfaces
eth0 8000.000479661b70 no hweth3 eth0 8000.000479661b70 no hweth3
hweth5 hweth5
eth1 8000.000000000000 no tap1
eth1 8000.2e48adefd363 no tap0
В мосту eth0 два реальных порта, а в мосту eth1 вообще
нет физических интерфейсов, и он поэтому полностью вир- Сразу после подключения к мосту eth1 первого, как ему
туальный. Но даже в том виде, как он существует, без ка- «представляется» реального устройства, мост получает
нального адреса, мост вполне работоспособен: и собственный канальный адрес:

server:~ # ifconfig eth1 server:~ # ifconfig eth1


eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:00 eth1 Link encap:Ethernet HWaddr 2E:48:AD:EF:D3:63
inet addr:192.168.254.1 Bcast:192.168.254.255 Mask:255.255.255.0 inet addr:192.168.254.1 Bcast:192.168.254.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:2166 (2.1 Kb) RX bytes:372 (372.0 b) TX bytes:3628 (3.5 Kb)

server:~ # ifconfig tap0


И через него легко идет реальный трафик:
tap0 Link encap:Ethernet HWaddr 2E:48:AD:EF:D3:63
server:~ # ping -c 1 192.168.254.1 inet6 addr: fe80::2c48:adff:feef:d363/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
PING 192.168.254.1 (192.168.254.1) 56(84) bytes of data. RX packets:8 errors:0 dropped:0 overruns:0 frame:0
64 bytes from 192.168.254.1: icmp_seq=1 ttl=64 time=0.049 ms TX packets:6 errors:0 dropped:13 overruns:0 carrier:0
collisions:0 txqueuelen:500
--- 192.168.254.1 ping statistics --- RX bytes:560 (560.0 b) TX bytes:548 (548.0 b)
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
Этот адрес случайным образом был установлен для tap0
при его создании. В процессе дальнейшей работы данный
После запуска виртуальной машины в системе созда- MAC более нигде не будет фигурировать, так как устройс-
ются два псевдоустройства tap0 и tap1. Эти устройства пе- тво tun/tap представляет собой туннель, в котором реаль-
редают трафик, который на них маршрутизируется, об- ным является лишь пользовательский конец, находящийся
работчику из пользовательского пространства, в данном внутри виртуальной машины UML. И если внутри UML «под-
случае виртуальной машине UML. Их создание произво- нять» интерфейс eth0, который будет привязан к виртуаль-
дится командой «tunctl» непосредственно перед запуском ному устройству tap0, с некоторым адресом, то внутри вир-
UML, которому названия полученных устройств переда- туальной сети появится новый хост с указанным адресом:

№6, июнь 2006 15


администрирование
server:~ # ping -c 1 192.168.254.2 eth1 Link encap:Ethernet HWaddr FE:FD:C0:A8:01:01
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
PING 192.168.254.2 (192.168.254.2) 56(84) bytes of data. inet6 addr: fe80::fcfd:c0ff:fea8:101/64 Scope:Link
64 bytes from 192.168.254.2: icmp_seq=1 ttl=64 time=0.125 ms UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:92240 errors:0 dropped:0 overruns:0 frame:0
--- 192.168.254.2 ping statistics --- TX packets:314 errors:0 dropped:0 overruns:0 carrier:0
1 packets transmitted, 1 received, 0% packet loss, time 0ms collisions:0 txqueuelen:1000
rtt min/avg/max/mdev = 0.125/0.125/0.125/0.000 ms RX bytes:4576001 (4.3 Mb) TX bytes:13468 (13.1 Kb)
server:~ # arp -n Interrupt:5
Address HWtype HWaddress Flags Mask Iface
192.168.254.2 ether FE:FD:C0:A8:01:00 C eth1
При попытке «пропинговать» адрес UML получаем от-
Все это в точности совпадает с настройками интерфей- веты:
са eth0 в UML:
server:~ # ping -c 1 192.168.0.2
uml:~ # ifconfig eth0 PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=7.14 ms
eth0 Link encap:Ethernet HWaddr FE:FD:C0:A8:01:00
inet addr:192.168.254.2 Bcast:192.168.254.255 Mask:255.255.255.0 --- 192.168.0.2 ping statistics ---
inet6 addr: fe80::fcfd:c0ff:fea8:100/64 Scope:Link 1 packets transmitted, 1 received, 0% packet loss, time 0ms
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 rtt min/avg/max/mdev = 7.142/7.142/7.142/0.000 ms
RX packets:103 errors:0 dropped:0 overruns:0 frame:0 server:~ # arp -n
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 Address HWtype HWaddress Flags Mask Iface
collisions:0 txqueuelen:1000 192.168.0.2 ether FE:FD:C0:A8:01:01 C eth0
RX bytes:18261 (17.8 Kb) TX bytes:518 (518.0 b) 192.168.254.2 ether FE:FD:C0:A8:01:00 C eth1
Interrupt:5

Может, это вызвано неким локальным феноменом? Про-


Таким образом, продемонстрирована работоспособ- верим видимость адреса UML с еще двух компьютеров в се-
ность полностью виртуальной сети. В данном случае не- ти. После отправки ICMP-запросов внутри arp-хеша появи-
обходимость такой сети вызвана тем, что нужно было со- лись новые записи:
здать средство «общения» запускаемых виртуальных ма-
шин с хостовым сервером. server:~ # arp -n
Например, им всем через внутреннюю сеть «раздает- Address HWtype HWaddress Flags Mask
Iface
ся» рабочий дистрибутив: 192.168.0.2 ether FE:FD:C0:A8:01:01 C eth0
192.168.0.10 ether 00:05:5D:E7:86:39 C eth0
192.168.0.11 ether 00:05:5D:74:DD:5D C eth0
server:~ # showmount -e
Export list for server: Значит, все произошло успешно. Теперь сбросим ад-
/srv/susedvd/SU1000_001 192.168.254.0/255.255.255.0,localhost рес у самого сетевого моста. Это приведет к невозможнос-
ти работы с локальной сетью внутренних процессов сер-
Эта связь может стать особенно важной, если сам сер- вера. На рисунке 3 красная пунктирная линия обозначает
вер не будет иметь иного способа подключиться к госте- прерванные связи.
вой машине. Спросите, как это может быть? Очень прос-
то! Для этого рассмотрим второй виртуальный интерфейс server:~ # ip addr sh dev eth0
на рис. 3, который подключает и сервер, и его гостевую ОС 7: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
к локальной сети. Для этого используется мост eth0: link/ether 00:04:79:66:1b:70 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global eth0
inet6 fe80::200:ff:fe00:0/64 scope link
server:~ # brctl show valid_lft forever preferred_lft forever
bridge name bridge id STP enabled interfaces
eth0 8000.000479661b70 no hweth3
server:~ # ip addr del 192.168.0.9/24 dev eth0
server:~ # ip route sh
hweth5
tap1
10.0.0.0/24 dev eth2 proto kernel scope link src 10.0.0.1
eth1 8000.2e48adefd363 no tap0 192.168.254.0/24 dev eth1 proto kernel scope link src 192.168.254.1
127.0.0.0/8 dev lo scope link

Псевдоустройство tap1 точно так же, как и tap0, безад-


ресное, а вот сам мост имеет адрес: Все! Теперь тот самый случай – никакая сеть, кроме вир-
туальной, хостовому серверу не доступна:
server:~ # ifconfuigeth0
eth0 Link encap:Ethernet HWaddr 00:04:79:66:1B:70
server:~ # ping -c 1 192.168.0.2
inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0
connect: Network is unreachable
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14968 errors:0 dropped:0 overruns:0 frame:0 А вот с других хостов сети «пинги» проходят вполне
TX packets:499 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 успешно. Адрес внутреннего виртуального UML-сервера
RX bytes:792910 (774.3 Kb) TX bytes:77724 (75.9 Kb) присутствует в локальной сети и нормально работает. Ес-
ли к данному мосту подключить следующую виртуальную
Внутри UML интерфейс, соответствующий tap1, настро- систему с помощью соответствующего tun/tap устройства,
ен для работы в локальной сети: на пользовательской стороне которого поднят иной адрес,
то и он станет виден со стороны сети, подключенной к фи-
uml:~ # ifconfig eth1 зическому интерфейсу сетевого моста. И так далее.

16
администрирование
Получился безадресный сетевой мост, который работает В случае использования виртуальных серверов вообще
как arp-прокси и транслирует трафик с виртуальных хостов. такая настройка является единственно возможной. Но не-
В чем его ценность? Такая схема позволяет защитить хос- льзя же каждый раз выполнять приведенные в статье ко-
товую ОС от враждебного трафика сети, если вместо при- манды, даже если их записать в отдельный скрипт. О том,
ватной сети используется, например Интернет. Еще один как встроить предлагаемую схему разметки сетевых уст-
распространенный случай использования, когда безадрес- ройств в структуру реальных стартовых скриптов без ка-
ный хостер служит платформой для запуска виртуальных ких-нибудь конфликтов для работы остальных подсистем,
гостевых ОС, каждой со своим собственным адресом. Ну и, поговорим во второй части статьи.
наконец, ничего не мешает применять на таком несущем
сетевом мосте собственную сетевую разметку, не маршру- Ссылки:
тизируемую общим порядком, создавая скрытую служеб- 1. Сайт проект Open SUSE – http://en.opensuse.org/Welcome_to_
ную сеть. Есть, правда, и тут некоторые «подводные кам- openSUSE.org и область загрузки дистрибутива openSUSE 10.0 –
ни». Дело в том, что процедура взаимодействия сетевых http://ftp.opensuse.org/pub/opensuse/distribution/SL-10.0-OSS.
узлов на уровне L2 является слабо защищенной. И в неко- 2. Проект альтернативных сетевых скриптов – http://etcnet.org.
торых сетях используются самодельные службы и другие 3. Страница wiki, на которую переадресует бывший «домаш-
нестандартные настройки, контролирующие канальное вза- ний» сайт проекта IEEE 802.1d ethernet bridging (http://bridge.
имодействие. И хотя описанный выше прием с безадрес- sourceforge.net) – http://linux-net.osdl.org/index.php/Bridge.
ным мостом прекрасно работает (не говоря уже, что такой 4. Andrew S. Tanenbaum, Jorrit N. Herden, and Herbert Bos, Vrije
классический способ настройки моста описан в докумен- Universiteit, Amsterdam, May 2006, «Can We Make Operating
тации), но бывали случаи, когда такая настройка действо- System Reliable and Secure?» – http://www.computer.org/portal/
вала как DoS-атака. Точно так же стоит очень вниматель- site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/
но отнестись к множеству физических интерфейсов, объ- index.jsp?&pName=computer_level1_article&.
единенных в мост, – их неверное подключение может со- 5. User Mode Linux. Set up the network – http://user-mode-linux.
здать неконтролируемые пути доступа или утечки трафи- sourceforge.net/networking.html.
ка и тоже стать источником проблем L2. 6. openSUSE. Xen and Virtual Network – http://en.opensuse.org/
Xen3_and_a_Virtual_Network.
Предварительные итоги 7. Закляков П. Разводной мост на Linux (bridging firewalls). – Жур-
Итак, подмена сетевых устройств виртуальными сетевыми нал «Системный администратор», №4, 2003 г. – 42-55 с. – http://
мостами создает массу возможностей для манипуляции. www.samag.ru/cgi-bin/go.pl?q=articles;n=04.2003;a=07.

№6, июнь 2006 17


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

Как работает Sendmail?


Полезные подробности
Часть 2: Вопросы конфигурации

Видел я этот сендмайл – конфиги для


конфигов, чтобы создать конфиги!

Цитата с http://forum.oszone.net

Сергей Супрунов

Одна из самых сильных сторон Sendmail – функциональная мощь этой программы.


Но вот только запрятана она порой в дальних уголках конфигурационных файлов.

18
администрирование
Ужас, летящий F-строки заносят в определённый Таблица 1. Коды строк sendmail.cf
на крыльях ночи класс содержимое указанного фай- Код Описание
При первом просмотре основной кон- ла. Строки типа K задают базы дан- C Классы
фигурационный файл, sendmail.cf, ных, которые в дальнейшем могут D Макросы
особенно ближе к концу, напомина- использоваться в правилах преобра-
F Файлы с классами
ет скорее двоичный код, чем что-то зования.
H Поля заголовка
читаемое, и тем более редактируе- Например, так подключается ба-
мое. Но на самом деле всё не так уж за mailertable: K Базы данных

и сложно – всему виной перегружен- M Почтовые агенты


ность «знаками пунктуации», сбиваю- Kmailertable hash ↵ O Опции Sendmail
-o /etc/mail/mailertable
щими с толку и не позволяющими без P Приоритеты обработки
специальной подготовки сложить их Про остальные типы строк у нас R Наборы правил для адресов
во что-то осмысленное. будет возможность поговорить чуть S Группы наборов правил
Назначение файла sendmail.cf – оп- позже. Рассмотрим некоторые секции
ределить опции работы Sendmail и пра- файла sendmail.cf: Таблица 2. Предопределённые макросы
вила обработки сообщений. Собс- Макрос Значение
твенно говоря, включение в него пра- Local info $a Содержимое поля Date:
вил и обусловливает его перегружен- Здесь определяются общие парамет- $f Адрес отправителя
ность и небывалый размер (обычно ры, влияющие на работу MTA:
$i Идентификатор сообщения в очереди
он составляет несколько тысяч строк).  Cw – класс «w» описывает до-
$h Полное доменное имя хоста получателя
Но зато это значительно повышает мены, для которых будет выпол-
гибкость конфигурирования. няться обработка почты. Обычно $m Необработанный адрес получателя

Несмотря на то что cf-файл, в об- присутствуют строки Cwlocalhost $u Имя пользователя из адреса получателя
щем-то, не предусматривает прямого и Cwdomain.ru (где domain.ru – до- $w Имя данного хоста
редактирования (для этого служит ме- менное имя нашего сервера). Если $x Полное имя отправителя
ханизм m4, о котором поговорим в сле- для указания хостов используется $z Домашний каталог получателя
дующем разделе) и генерируется авто- файл local-host-names, он подклю-
матически, он достаточно хорошо про- чается следующей строкой:  DZ – этот макрос задаёт версию
комментирован. конфигурации Sendmail, например:
Рассмотрим представленные в нём Fw-o /etc/mail/local-host-names DZ8.13.4.
секции и наиболее характерные пара-
метры. Строки, начинающиеся с «#» – Здесь параметр -o говорит о том, Options
комментарии. Тип параметра задаётся ч то н е ну ж но выд ав ать с о о б - Эта достаточно большая секция со-
первой буквой строки (см. таблицу 1). щение об ошибке, если указан- держит массу опций, управляющих те-
Строка, начинающаяся с пробельного ный файл отсутствует. Имя фай- ми или иными аспектами работы поч-
символа, – продолжение предыдущей. ла – используемое по умолча- тового сервера. Ниже приведено не-
Пустые строки игнорируются. нию, но в принципе может быть сколько примеров (для некоторых оп-
Классы предназначены для описа- произвольным. В старых верси- ций по старой памяти существуют со-
ния имён, объединённых одним при- ях Sendmail использовался файл кращённые однобуквенные наимено-
знаком. Сразу после буквы C следует /etc/sendmail.cw. вания, но рекомендуется использовать
односимвольное или многосимвольное  DS – имя «умного» (smart) хоста, новый стиль):
(в фигурных скобках) имя класса. или почтового релея, который бу-  O AliasFile – определяет пу ть
Н а п р и м е р, к л а с с з а п р е щ ё н - дет использоваться для пересыл- к файлу псевдонимов (см. ниже).
ных для использования в доменном ки почты. Если Smart-host указан,  O MaxMessageSize – максималь-
имени символов определяется как то вся исходящая почта будет на- ный размер обрабатываемого сооб-
«CB! % @ : ^». правляться на него, а он уже зай- щения. Разумное ограничение дан-
Макросы представляют собой что- мётся определением маршрутов от- ного параметра позволит услож-
то типа переменных, позволяя в даль- дельных сообщений и их дальней- нить реализацию атак, направлен-
нейшем обращаться к единожды опре- шей отправкой. Подробнее об этом ных на заполнение всего доступно-
делённому макросу по имени (перед режиме работы мы поговорим чуть го пространства в почтовых ящиках
которым указывается префикс $). Су- позже. пользователей. Однако не забы-
ществует ряд предопределённых мак-  CO @ % ! – символы, которые за- вайте, что в наши дни прослежива-
росов (некоторые из них представле- прещены для использования в име- ется тенденция к увеличению сред-
ны в таблице 2), которые можно ис- нах пользователей, поскольку яв- него объёма вложений, и отправка
пользовать по мере необходимости. ляются разделителями «именной» по почте файла в 20-30 Мб являет-
Для них зарезервированы строчные и доменной частей адреса. ся не такой уж редкостью.
буквы. Для иного использования пред-  DnMAILER-DAEMON – так наш  O HoldExpensive – вы можете
назначены прописные буквы или мно- Sendmail будет представляться объявить (с помощью флага «e»
госимвольные имена. в сообщениях об ошибках. в M-строке) агента доставки как «до-

№6, июнь 2006 19


администрирование
рогой» (expensive), и в этом случае Sendmail не будет пред-  O MaxRecipientsPerMessage – ограничивает число по-
принимать попыток отправить письмо через такого агента лучателей, которые могут быть указаны в заголовке од-
сразу же после получения, а будет просто оставлять его в ного сообщения. Наивная попытка бороться со спамом.
очереди. Эта опция может быть весьма полезна в случае Хотя и помогает несколько снизить нагрузку на сервер
коммутируемого соединения, когда осуществление дозво- и усложнить подбор адресов.
на до сервера провайдера при получении каждого пись-
ма может оказаться крайне неэффективным. Вместо это- По мере рассмотрения дальнейших вопросов мы будем
го разумнее дозваниваться, скажем, раз в час, отправляя встречаться и с другими опциями.
всё накопленное за это время («оптом – дешевле»).
 O DeliveryMode – устанавливает режим доставки (ин- Queue Group Definitions
терактивный, фоновый, отложенная доставка). Подроб- Эта секция отвечает за параметры работы почтовой очере-
нее о режимах доставки мы поговорим в третьей час- ди. Учитывая большое влияние очереди на производитель-
ти статьи, посвященной вопросам администрирования ность сервера, мы подробно рассмотрим связанные с ней
и оптимизации. вопросы в следующей части.
 O SuperSafe – ещё одна связанная с оптимизацией оп-
ция. Её наличие требует обязательной записи сообще- REWRITING RULES
ния в очередь, даже если оно может быть передано не- Правила преобразования адресов. Sendmail в процессе об-
медленно. Помните, что, отключив эту опцию, вы сэко- работки сообщения разбирает имеющиеся в нём адреса от-
номите немного на операциях записи, но лишитесь пра- правителя и получателей, выполняя по мере необходимости
ва именовать свой сервер соответствующим стандар- ряд преобразований. Каждый набор правил начинается ди-
ту SMTP, поскольку надёжность передачи – это его ос- рективой Sname[=n], где n – необязательный номер набора,
новополагающее требование. name – его кратное имя. Некоторые номера (0, 3, 4) предна-
 O QueueFileMode, O TempFileMode – права доступа, ус- значены для строго определённых целей. Другие могут за-
танавливаемые на вновь создаваемые файлы очереди даваться произвольно (например, SParser1) и служат в ос-
и временные файлы соответственно. По умолчанию – новном для дополнения основных наборов правил.
0600, но в некоторых экзотических (и весьма нежела- В процессе обработки наборы правил применяют-
тельных с точки зрения безопасности) случаях может ся в определённом порядке (см. рис. 1). Любой адрес
потребоваться этот параметр изменить. в первую очередь проходит через набор 3, который от-
 O MaxDaemonChildren – максимальное количество од- вечает за канонизацию, т.е. адрес приводится к виду
новременно работающих процессов Sendmail. Позволя- <имя_пользователя>@<доменное_имя>. Затем набор 0 оп-
ет более эффективно противостоять DoS-атакам, не до- ределяет, какому почтовому агенту это сообщение должно
пуская чрезмерной перегрузки сервера. быть передано. От этого зависят конкретные имена наборов
 O DaemonPortOptions – параметры прослушиваемых правил, которые будут подставлены вместо S (обработка
портов и интерфейсов, например: адреса отправителя) и R (обработка адреса получателя) –
они определяются в M-строке соответствующего агента.
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1,Name=MTA На последнем этапе адрес обрабатывается 4-м набором,
который выполняет финальные преобразования.
 O SmtpGreetingMessage – баннер приветствия. По умол- Сами правила внутри набора начинаются с буквы R
чанию имеет вид «$j Sendmail $v/$Z; $b», где $j = $w – и имеют следующий формат:
доменное имя хоста, $v – версия Sendmail, $Z – версия
конфигурации, $b – текущая дата. В процессе работы R<шаблоны> <преобразование> <комментарий>
после имени хоста (точнее, на второе место) выводит-
ся также поддерживаемый протокол: Здесь <шаблоны> задают некоторый формат, на со-
ответствие которому проверяется входящая информация.
serg$ sendmail -bs В таблице 3 перечислены значения основных специальных
220 domain.ru ESMTP Sendmail 8.13.4/8.13.4; Tue, 25 Apr 2006 символов. Справа (отделяется от левой части символами та-
13:24:11 +0400 (MSD) буляции) задаётся <преобразование> – описание того, что
нужно сделать с исходными данными, если они соответству-
 O DoubleBounceAddress – указывает адрес, на который ют шаблону в левой части. В таблице 4 представлены неко-
следует отправлять уведомления об ошибке доставки торые операторы. Очень
Таблица 3. Значения основных
уведомления об ошибке. Другими словами, если с адре- напоминает регулярные специальных символов
са qwe@rty.ru пришло сообщение для несуществующе- выражения, не правда Шаблон Значение
го пользователя, то Sendmail отошлёт отправителю уве- ли? Например, следу- $* Любое количество символов
домление «User unknown». Однако если qwe@rty.ru яв- ющее правило меняет
$+ Один и больше символов
ляется фальшивым, то это уведомление также вернёт- адрес вида domain!user
$- Ровно один символ
ся с ошибкой. Чтобы разорвать порочный круг, вместо на user@domain при ус-
попыток и дальше уведомить несуществующего отпра- ловии, что часть «user» $@ Ни одного символа

вителя, такое сообщение доставляется на указанный ад- содержит хотя бы один $=<знач> Фрагмент равен значению <знач>
рес. По умолчанию крайним оказывается postmaster. символ: $~<знач> Фрагмент не равен <знач>

20
администрирование
R$* ! $+ $2 @ $1 Таблица 4. Операторы преобразования
Оператор Значение
Следующее правило (взято из набора SParse1) демонс- Ссылка на фрагмент данных, соответствующих шаблону.
$<n>
трирует взаимодействие с базой: вместо фрагмента, соот- <n> – порядковый номер шаблона
ветствующего шаблону (в угловых скобках), подставляет- $: Применить правило один раз
ся значение из mailertable. Слово «lookup» здесь является $@ Применить правило и выйти из набора
простым комментарием: $> Передать на обработку другому набору правил
$( . . .$) Поиск данных в базе
R< $+ > $* $: < $(mailertable $1 $) > $2 lookup

Конечно, настраивать эти правила вручную – занятие


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

Тестирование правил
Как видите, синтаксис правил обработки довольно сложен
(по крайней мере, читать их очень неудобно). Чтобы убе-
диться в правильности работы, в Sendmail предусмотрен
специальный режим тестирования:
Рисунок 1. Последовательность применения наборов правил
serg$ sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 admin@my
canonify input: admin @ my
Canonify2 input: admin < @ my >
Canonify2 returns: admin < @ my . domain . ru . >
canonify returns: admin < @ my . domain . ru . >
parse input: admin < @ my . domain . ru . >
Parse0 input: admin < @ my . domain . ru . >
Parse0 returns: admin < @ my . domain . ru . >
ParseLocal input: admin < @ my . domain . ru . > Рисунок 2. Схема работы макропроцессора
ParseLocal returns: admin < @ my . domain . ru . >
Parse1 input: admin < @ my . domain . ru . >
Здесь показана канонизация адреса, заданного в фор-
Parse1 returns: $# local $: admin
parse returns: $# local $: admin мате UUCP с детализацией 5-го уровня (21 – категория от-
ладки, отвечающая за трассировку правил обработки ад-
В данном примере мы прогоняем адрес admin@my (пред- ресов). Выводится информация не только о том, через ка-
полагая, что полное имя нашего домена – my.domain.ru) че- кие наборы правил проходит адрес, но и какие действия
рез правила 3 и 0. В первом столбце указываются имена выполняются.
наборов правил, во втором – тип данных (вход или выход), Для выхода из режима отладки используйте коман-
и после двоеточия – обрабатываемая информация. ду «/quit». Полный список доступных команд можно уви-
Как видите, сначала адрес канонизируется (краткое деть, введя «?».
имя домена дополняется до полного; обратите внима-
ние на завершающую точку). Затем Sendmail анализиру- Знакомьтесь: m4
ет полученный адрес (определяется, что он является ло- Естественно, долго мириться с произволом формата
кальным). sendmail.cf мало кто хотел, поэтому со временем задача
При необходимости можно повысить детализацию вы- создания этого файла была возложена на макроязык m4.
водимой информации, используя флаг отладки -d: Этот язык является универсальным и пригоден для реше-
ния достаточно широкого круга задач, прежде всего свя-
serg$ sendmail -bt -d21.5 занных с обработкой текста. В частности, он использует-
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) ся в Autoconf. Однако его использование для конфигура-
Enter <ruleset> <address> ции Sendmail является, пожалуй, наиболее известным при-
> 3 my.uudom.ru!user
canonify input: my . uudom . ru ! user менением.
rewritten as: my . uudom . ru ! user < @ > Эпиграф к статье как нельзя лучше отражает поло-
rewritten as: my . uudom . ru ! user
rewritten as: < my . uudom . ru ! user >
жение дел с настройками Sendmail. Сначала вы создаёте
rewritten as: my . uudom . ru ! user конфигурационный файл в формате m4 (так называемый
Canonify2 input: user < @ my . uudom . ru > «master config», или mc-файл). Затем макропроцессор m4,
rewrite: RHS $&{daemon_flags} => "(NULL)"
rewritten as: $| user < @ my . uudom . ru > руководствуясь этим файлом, генерирует cf-файл из вхо-
rewritten as: user < @ my . uudom . ru > дящих в поставку Sendmail шаблонов (макросов). Схема-
Canonify2 returns: user < @ my . uudom . ru >
тически этот процесс изображён на рис. 2.
rewritten as: user < @ my . uudom . ru >
canonify returns: user < @ my . uudom . ru > Фактически, m4 собирает воедино элементы шабло-
нов согласно опциям, имеющимся в mc-файле. Шаблоны

№6, июнь 2006 21


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

Введение в m4 ются символы «`» и «’», которые в случае не- причём в header и footer используются
В далёком 1977 году, когда Sendmail ещё обходимости можно переопределить с по- ссылки на первый аргумент, т.е. вызов этих
даже не планировался, Брайан Керниган мощью встроенного макроса changequote. макросов подразумевается с одним пара-
(Brian Kernighan) и Деннис Ритчи (Dennis Во-вторых, в качестве признака конца метром. Этот файл мы подключим как шаб-
Ritchie), внёсшие немалый вклад в разви- строки используется макрос dnl. (То есть лон. Далее файл с исходной информацией
тие UNIX-систем (достаточно упомянуть после него вы можете указывать любые (обратите внимание на макро-вставки):
язык программирования C), разработали комментарии). Для управления потоком
макропроцессор m4. служит макрос divert. В частности, divert(0) serg$ vi test.in
header(`Страница компании')
Его основное назначение – «пропус- очищает буфер и направляет вывод в нуле- company рада приветствовать Вас ↵
кать» через себя поток информации, вы- вой поток (всего существует 10 выходных на своём сайте!
footer(`Заходите снова!')
полняя макроподстановки по мере их об- потоков 0-9, которые на выходе объединя-
наружения. Он с успехом может использо- ются в порядке их нумерации). Конструк- Результат работы будет таким:
ваться для программирования, генериро- ции $n, где n – некоторое число, являются
вания документации. Но наиболее попу- ссылками на параметры макроса, разме- serg$ m4 test.m4 test.in
<H1>Страница компании</H1>
лярным применением является генерация щённые на соответствующих местах (на- Наша компания рада приветствовать ↵
конфигурационных файлов и прочие воп- пример, $1 ссылается на первый параметр Вас на своём сайте!
<HR><SMALL>Заходите снова!</SMALL>
росы администрирования. указанного макроса). Рассмотрим простей-
Фундаментом m4 является набор встро- ший пример. Для начала создадим файл Фактически, несколько последователь-
енных макросов, которые служат для управ- макроопределений: ных файлов рассматриваются как единый
ления потоком данных, ветвлений, опреде- поток. То есть того же эффекта можно до-
ления пользовательских макросов, некото- serg$ vi test.m4 биться, объединив макроопределения и ис-
divert(0)dnl
рых математических операций. define(`header', `<H1>$1</H1>')dnl ходный текст в одном файле.
Язык m4 отличается довольно-таки define(`footer', ↵ Чтобы подробнее познакомится с m4,
`<HR><SMALL>$1</SMALL>')dnl
своеобразным синтаксисом. Во-первых, define(`company', `Наша компания')dnl просмотрите страницу справки man m4(1).
в нём различаются открывающая и закры- Также много интересного можно найти
вающая кавычки. По умолчанию использу- Здесь мы определили три макроса, в шаблонах Sendmail.

сосредоточены в каталоге /usr/share/sendmail/cf/. В общих  FEATURE – одна из самых востребованных директив.


чертах синтаксис языка рассматривается во врезке «Вве- Аналогично рассмотренным в первой части статьи ди-
дение в m4». рективам OSTYPE и DOMAIN, подключает соответству-
Вносить изменения в шаблоны не рекомендуется (пос- ющий шаблон из каталога /usr/share/sendmail/cf/feature.
кольку они будут перезаписываться при обновлении опе- Через FEATURE реализуется подключение баз дан-
рационной системы или почтового сервера). Все необходи- ных (см. в указанном каталоге файлы access_db.m4,
мые корректировки лучше делать в mc-файле. В послед- use_cw_file.m4, virtusertable.m4 и т. д.), различные «уп-
них версиях FreeBSD по умолчанию используется файл, со- равляющие» директивы, такие как nocanonify (отклю-
ответствующий доменному имени вашего сервера. Напри- чение канонизации адреса, что может быть оправда-
мер, domain.ru.mc. Если у вас такого файла нет, он будет но на серверах, работающих исключительно в режиме
автоматически создан при первом вызове команды make транзитной передачи), nodns (не использовать DNS-за-
в каталоге /etc/mail, используя при этом как шаблон файл просы для разрешения имён) и т. д. Если вам интерес-
freebsd.mc (при его отсутствии последует ошибка). но, какой код та или иная «фича» добавляет в cf-файл,
Коротко состав mc-файла был рассмотрен в преды- ознакомьтесь с содержимым шаблона в указанном вы-
дущей части статьи, сейчас чуть подробнее остановимся ше каталоге.
на наиболее важных опциях:  MASQUERADE_AS – если вы хотите, чтобы ваш поч-
 include – встроенный макрос для подключения других товый сервер отправлял почту от имени, отличаю-
m4-файлов. щегося от имени данного хоста, можно использо-
 define – ещё один встроенный макрос языка m4, позво- вать этот макрос. Дополнительно опции (такие как
ляющий описывать другие макросы. Например, так мож- MASQUERADE_EXCEPTION(`host.domain’), FEATURE
но определить макрос LOCAL_MAILER_PATH со значе- (`masquerade_envelope’) и др.) позволяют не маскиро-
нием, содержащим полное имя локального агента до- вать указанные хосты, детализовать, какие именно ад-
ставки: реса (в заголовке, в конверте или все) должны маски-
роваться.
define(`LOCAL_MAILER_PATH', `/usr/local/bin/dspam')dnl  MAILER – подключает шаблон, отвечающий за работу
того или иного почтового агента, из каталога cf/mailer.
Ниже представлен пример, позволяющий объявить smtp- В этих шаблонах определяются имена и флаги соот-
агент как «дорогой»: ветствующих утилит, наборы правил обработки адре-
сов и M-строки конфигурационного файла. Директивы
define(`confCON_EXPENSIVE', `True') MAILER должны быть указаны после всех остальных,
define(`SMTP_MAILER_FLAGS', `e')
в конце mc-файла.

22
администрирование
Кстати, поскольку mc-файл – это обычный файл в фор- Приведённый фрагмент показывает, что по умолчанию
мате m4, то он может содержать помимо макроопределений почта «служебных» пользователей будет перенаправлять-
и собственно входные данные. При необходимости вы мо- ся пользователю root, в то время как почта пользователя
жете указать нужные cf-строки прямо здесь (хорошим при- root уйдёт в ящик администратора admin (это следует за-
мером является mc-файл основного разработчика Sendmail дать вручную).
Эрика Олмана – /usr/share/sendmail/cf/cf/knecht.mc). Всё работает правильно благодаря тому, что подстанов-
Последовательность подключения различных шабло- ка псевдонимов выполняется рекурсивно – после первой за-
нов можно найти в самом начале cf-файла – обратите вни- мены осуществляется ещё один «прогон» с новым адресом,
мание на строки, начинающиеся с «#### $Id:». Самым пер- и так далее, пока не будет выполнено ни одной подстановки.
вым подключается cfhead.m4, в котором определены ос- Кстати, чтобы не допустить бесконечной подстановки в слу-
новные макросы. чае ошибки, когда образуется петля псевдонимов, полезно
Если быть точным, то в команде m4 подключается cf.m4 – использовать опцию «O MaxAliasRecursion», которая задаёт
вручную создание cf-файла обычно запускается такой ко- максимальное число «проходов» по списку (в mc-файле за-
мандой: даётся как define(`confMAX_ALIAS_RECURSION’)).
В правой части может находиться не только один
m4 /usr/share/sendmail/cf/m4/cf.m4 domain.ru.mc > ↵ пользователь. Перенаправление может выполняться для
domain.ru.cf
нескольких пользователей (они разделяются запяты-
Но одной из первых директив cf.m4 значится следую- ми), на адрес в другом домене, на список адресов, ука-
щая: занный в файле (подключается с помощью конструкции
«:include: <имя_файла>»).
ifdef(`OSTYPE', `dnl',`include(_CF_DIR_`'m4/cfhead.m4)dnl Можно отдавать почту на обработку внешней програм-
ме, используя операцию конвейера (в данном примере поч-
Которая и выполняет подключение cfhead.m4. При жела- та, пришедшая на адрес spam-me, отдаётся на обработ-
нии вы можете включить cf.m4 непосредственно в mc-файл ку спам-фильтру dspam для переобучения его байесово-
(с помощью макроса include), чтобы не указывать его в ко- го анализатора):
мандной строке. Но во FreeBSD это не требуется – make
сделает всё, что нужно. spam-me: "| dspam --user me --class=spam ↵
--source=error"

Файлы специального назначения Помимо системного файла aliases пользователи могут


В первой части мы бегло окинули взглядом содержимое ка- создавать свои файлы перенаправлений – ~/.forward (точ-
талога /etc/mail. Настало время познакомиться с располо- нее, будут проверяться файлы, указанные в директиве
женными в нём конфигурационными файлами и их зада- confFORWARD_PATH). Формат ещё проще – в них просто
чами более подробно. указываются адреса, на которые следует перенаправлять
входящие сообщения. Нужно заметить, что когда Sendmail
Файл aliases запускается с правами непривилегированного пользовате-
Файл псевдонимов служит для сопоставления адреса ля, этот пользователь должен иметь права на чтение всех
электронной почты с конкретным получателем. По умол- .forward-файлов в домашних каталогах.
чанию, Sendmail работает с системными пользователями.
То есть если у вас есть пользователь admin, то автомати- Файл access
чески для него создаётся одноимённый почтовый ящик. Формат этого файла, отвечающего за доступ к серверу
Однако в ряде случаев необходимо (или просто удоб- с различных адресов, достаточно прост. Каждая строка со-
но) перенаправить входящую почту, направленную на тот стоит из разделённых пробелами или табуляцией объекта
или иной адрес, другому пользователю. Например, рабо- и действия. В качестве объекта могут выступать: IP-адрес;
та с почтой с правами root – не самая лучшая идея. А как подсеть, заданная неполным IP-адресом; доменное имя (бу-
же тогда читать системные сообщения, которые традици- дет относиться и ко всем поддоменам); адрес электронной
онно отправляются на этот адрес? Ответ можно увидеть почты. Действия: OK (всегда принимать почту, даже если
в файле aliases: другими директивами это запрещено), RELAY (разрешить
транзит), REJECT (отклонить соединение), DISCARD (от-
root: admin клонить без выдачи сообщения об ошибке). Можно указы-
bin: root
bind: root вать и конкретный код ответа (см. пример).
Комментарии, как обычно, предваряются символом
. . . пропущено . . .
«#». Например:
uucp: root
abuse: root # Блокируем конкретный IP-адрес
security: root 1.2.3.4 REJECT
ftp: root
# Разрываем соединения из указанного домена
spammers.dom 550 Closed for you.
Формат достаточно прост: слева – почтовый адрес,
на который направляется письмо, справа – адрес, куда # Разрешаем транзит из локальной сети
192.168 RELAY
письмо следует перенаправить.

№6, июнь 2006 23


администрирование
# Разрешаем принимать на ящик abuse@domain.ru дет отклоняться. Домен domain2.ru будет обслуживать-
# любую почту
abuse@domain.ru OK ся традиционно, то есть при получении письма, например,
для user@domain2.ru, будет предприниматься попытка до-
Обратите внимание, что «действия», которые разреша- ставить его реальному пользователю user.
ют принимать входящие соединения, указываются в cf-фай-
ле в классе {Accept}: Файл genericstable
Этот файл решает обратную задачу: в условиях виртуаль-
C{Accept}OK RELAY ного хостинга ставит в соответствие имени пользователя
домен, с которого этот пользователь будет отправлять со-
В данном примере такое разрешение будет распростра- общения.
няться на действия «OK» и «RELAY».
Раньше access-файл широко использовался для борь- Примеры конфигурации
бы со спамом, когда в него заносились спамерские адре- Рассмотрим несколько практических примеров. При их ре-
са/сети/домены. В наши дни, естественно, это не представ- шении конфигурационные файлы целиком приводиться
ляется разумным. не будут – покажем только опции, необходимые для реше-
Однако если вы работаете лишь с определёнными поч- ния конкретной задачи. Во всех примерах подразумевает-
товыми серверами (например, принимаете почту только ся, что DNS настроен должным образом (см. врезку «DNS,
от вышестоящей организации и своих филиалов), то с по- DNS, DNS…»).
мощью этого файла можно довольно легко ограничить круг
общения вашего сервера. Пример 1
Использование «умного» хоста
Файл relay-domains Вы хотите построить почтовый сервер для обслуживания
Ещё один файл, разрешающий транзитную пересылку – локальной сети, однако хотели бы переложить заботу об оп-
relay-domains. Здесь, в отличие от access, указываются до- ределении маршрута писем на сервер вашего провайде-
мены-получатели, для которых данный сервер может прини- ра (предполагается, что провайдер не запрещает транзит-
мать сообщения и выполнять их дальнейшую пересылку. На- ную пересылку вашей почты). В этом случае достаточно
пример, если вы хотите, чтобы сервер backup.mail.domain.ru пересобрать конфигурационный файл со следующей оп-
работал как резервный для mail.domain.ru, то создайте файл цией в mc-файле:
/etc/mail/relay-domains следующего содержания:
define(`SMART_HOST', `1.2.3.4')
mail.domain.ru
Здесь 1.2.3.4 – адрес smtp-релея вашего провайдера.
И подключите его следующей директивой: Теперь вся исходящая почта будет отправляться на ука-
занный сервер, который и будет заниматься дальнейшей
define(`confCR_FILE', `/etc/mail/relay-domains') рассылкой.

Пример 2
Файл mailertable Почтовый сервер в режиме шлюза
В файле mailertable определяются агенты, ответственные Предположим, у вас есть локальная сеть с размещённы-
за обработку почты для определённых доменов. ми в ней двумя почтовыми серверами (inner1.domain.ru
и inner2.domain.ru). Вы хотели бы обеспечить возможность
Файл virtusertable полноценной работы этих серверов, но без непосредствен-
Здесь задаётся соответствие между виртуальными адреса- ного подключения к Интернету. Настроим на машине, вы-
ми обслуживаемых доменов и именами реальных пользо- полняющей роль шлюза, сервер Sendmail, задачей которо-
вателей. Необходимость в нём возникает тогда, когда не- го – взаимодействовать с внешними smtp-серверами и пе-
сколько адресов в обслуживаемых доменах имеют одина- ресылать полученные от них сообщения на серверы в ло-
ковые имена пользователей (например, admin@domain1.ru кальной сети.
и admin@domain2.ru). 1. В mailertable заносим строчки:
В этом случае вы можете занести в virtusertable следу-
ющие строки: inner1.domain.ru smtp:[inner1.domain.ru]

inner2.domain.ru smtp:[inner2.domain.ru]
admin@domain1.ru admin-dom1
admin@domain2.ru admin-dom2
Теперь почта на указанные домены будет по smtp пере-
@domain1.ru error:nouser User not found сылаться на указанные хосты. Квадратные скобки требуют
работать с хостом по его A-записи, а не по MX-записи в базе
То есть входящая почта будет раскладываться по ящи- доменных имен (которая указывает на адрес шлюза).
кам разных пользователей. Благодаря третьей строке вся 2. Для отправки почты нужно разрешить пересылку со-
почта в domain1.ru для любых пользователей, кроме опи- общений с внутренних серверов (указав для них в файле
санных в virtusertable (в нашем примере это admin), бу- access значение RELAY), а внутренние серверы настроить

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

DNS, DNS, DNS… Этот же механизм позволяет организо- domain и dom2 будет обслуживаться маши-
Для нормальной работы любого MTA очень вать резервные серверы, которые возь- ной mail.domain.ru. Если этот сервер ока-
важную роль играет правильная настрой- мут на себя обслуживание (или, по крайней жется недоступен, почта должна будет на-
ка DNS-сервера. Адрес почтового сер- мере, временное размещение) сообщений правляться на backup.top.ru. Приоритет ис-
вера, обслуживающего тот или иной до- в случае недоступности основного MTA. пользования MX-записей задаётся числом
мен, не обязан совпадать с самим домен- Рассмотрим фрагмент файла зоны: перед именем хоста – чем это число мень-
ным именем. ше, тем выше приоритет (т.е. сначала бу-
Например, вы можете посчитать це- domain IN MX 10 ↵ дет предприниматься попытка доставить
mail.domain.ru.
лесообразным выделить для обслужива- IN MX 20 ↵ почту на этот хост).
ния почты, адресованной в domain.ru, от- backup.top.ru. Впрочем, протоколом SMTP предус-
дельный сервер mail.domain.ru. Как же dom2 IN MX 10 ↵ мотрено, что если для некоторого доме-
удалённый smtp-сервер поймёт, куда сле- mail.domain.ru. на отсутствует MX-запись, то почту сле-
IN MX 20 ↵
дует отправлять почту? backup.top.ru. дует направлять непосредственно на
Для этого в DNS предусмотрен специ- хост, определяемый по соответствующей
альный тип записи – MX (Mail eXchanger). Эти строки определяют, что почта для A-записи.

на отправку сообщений вышестоящему серверу (в слу- 4. Всё пересобираем и перезапускаем сервер:


чае с Sendmail это достигается использованием опции
define(`SMART_HOST’, `<ip-адрес>’)). root# make all install restart
3. Подключим соответствующие файлы в mc-файле:
Если после этого выполнить тестирование, то можно
FEATURE(mailertable, `hash -o /etc/mail/mailertable')dnl увидеть, что разрешение имён выполняется должным об-
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')dnl
разом:
После чего нужно пересобрать конфигурационный файл
> 3,0 serg@client.domain.ru
и перезапустить сервер: canonify input: serg @ client . domain . ru
Canonify2 input: serg < @ client . domain . ru >
root# make all install restart Canonify2 returns: serg < @ client . domain . ru . >
canonify returns: serg < @ client . domain . ru . >
parse input: serg < @ client . domain . ru . >
Parse0 input: serg < @ client . domain . ru . >
Parse0 returns: serg < @ client . domain . ru . >
Пример 3 ParseLocal input: serg < @ client . domain . ru . >
Виртуальный почтовый сервер ParseLocal returns: serg < @ client . domain . ru . >
У вас есть почтовый сервер с Sendmail. Требуется обес- Parse1 input: serg < @ client . domain . ru . >
Recurse input: serg-client
печить на нём обслуживание двух доменов – вашего canonify input: serg-client
(domain.ru) и домена одного из клиентов (client.domain.ru). Canonify2 input: serg-client
Canonify2 returns: serg-client
Предполагается, что принято следующее соглашение об canonify returns: serg-client
именах пользователей: пользователи domain.ru имеют parse input: serg-client
обычные имена (например, user), а для client.domain.ru ис- Parse0 input: serg-client
Parse0 returns: serg-client
пользуются имена вида user-client. Вносим в конфигурацию ParseLocal input: serg-client
следующие изменения: ParseLocal returns: serg-client
Parse1 input: serg-client
1. В local-host-names заносим обслуживаемые домены: Parse1 returns: $# local $: serg-client
parse returns: $# local $: serg-client
domain.ru Recurse returns: $# local $: serg-client
client.domain.ru Parse1 returns: $# local $: serg-client
parse returns: $# local $: serg-client
2. В virtusertable записываем «шаблон» преобразова-
ния имён:
Продолжение следует…
@client.domain.ru %1-client Как видите, Sendmail является очень гибкой программой,
способной эффективно решать разнообразные задачи.
Эта строка означает следующее – при получении пись- Сложность формата cf-файла перекладывается на пле-
ма на любой адрес в домене client.domain.ru следует отдать чи макропроцессора m4, оставляя вам возможность за-
его пользователю, имя которого соответствует указанному ниматься настройкой на «верхнем» уровне, не вдава-
в адресе (%1) плюс суффикс «-client». Почта на другие до- ясь в детали синтаксиса. Впрочем, при необходимости
мены будет обслуживаться обычным образом. вы вполне можете вносить изменения и непосредствен-
3. В domain.ru.mc включаем поддержку соответствую- но в sendmail.cf. Но просто настроить сервер недостаточ-
щих файлов: но, особенно если речь идёт о высокой нагрузке. Поэтому
в следующий раз мы поговорим о вопросах сопровожде-
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')dnl ния сервера и его оптимизации. Также коснёмся и вопро-
define(`confCW_FILE', `-o /etc/mail/local-host-names')dnl
сов безопасности.

№6, июнь 2006 25


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

Переключи драйвер NTFS


в режим read-write

Антон Ананич
Captive – это первая полнофункциональная Open Source-реализация NTFS-драйвера.
С помощью Captive вы можете монтировать Windows NT/2k/XP/2k3-разделы и записывать на
них данные без опасения потерять их.

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

F
USE (Filesystem in USErspace) – это драйвер для Linux
и FreeBSD, который позволяет непривилегирован-
ным пользователям создавать их собственные драй-
веры файловых систем без написания кода, выполняемо-
го в режиме ядра.
FUSE может быть особенно полезной для разработ-
ки драйверов виртуальных файловых систем (virtual file
systems, VFS). Это файловые системы, которые не сериа-
лизуют данные непосредственно, а всего лишь выступают
прослойкой (abstraction layer) или оберткой (wrapper) над
существующими файловыми системами или специальны-
ми устройствами.
В нашем журнале уже была статья о FUSE [1]. С тех пор
проект развился и сильно возмужал.
FUSE позволяет разрабатывать драйверы файловых
систем не только на языке С. Так как эти драйверы вы-
полняются в пользовательских процессах, то они могут
быть реализованы практически на любом языке програм- Рисунок 1. Файловая система Hello world
мирования. Официально поддерживаются C, C++, Java,
C#, Haskell, TCL, Python, Perl, Sh (UNIX shell script), Ocaml, Сегодня вы узнаете, как можно монтировать разделы
Pliant и Ruby. NTFS в режиме read+write.
Существует несколько десятков файловых систем (на се-
годня более 50) на базе FUSE. Рассказать о всех в рам- Как работает Captive?
ках этой статьи просто невозможно. Поэтому я перечис- Существует два FUSE-драйвера для NTFS: ntfsmount
лю некоторые задачи, которые могут быть решены с по- и сaptive. Первый из них использует тот же код, что и kernel-
мощью FUSE: драйвер. По сути это один и тот же драйвер, который выпол-
 шифрование и сжатие файлов «на лету»; няется по-разному. Этот драйвер написан с нуля. В ходе его
 SMB (монтирование при первом обращении, кэширова- разработки проводилась большая работа по реверс-инжи-
ние); нирингу. Этот драйвер пока ещё не очень стабилен и пред-
 FTP, SSh, WebDAV, Gmail и т. д.; назначен в основном для чтения данных. Записывать он то-
 монтирование содержимого архивов (rar, zip, tar, bzip2, же может, но единственное, что можно сделать с помощью
gzip и т. д.); этого драйвера – это изменить содержимое существующе-
 монтирование специфических устройств (iPod, мобиль- го файла, оставляя прежним его размер. Это может быть
ники Siemens, Apple iPhoto DPAP и т. д.); полезно, если вы хотите использовать некий файл-контей-
 монтирование NTFS в режиме read&write (полноценная нер, лежащий на NTFS, например, PGP-диск или виртуаль-
запись в отличие от той, что содержится в ядре по умол- ный винчестер для VMWare. Но в этом случае лучше ис-
чанию); пользовать вариант драйвера, выполняемый в режиме яд-
 хранение файлов в реляционной БД. ра, так как он работает гораздо быстрее.
Captive NTFS использует другой подход. Наподобие
FUSE работает на Linux 2.4, Linux 2.6 и FreeBSD [2]. На- того, как это делается в Wine, captive подгружает в адрес-
чиная с версии 2.6.14-rc1 FUSE входит в ядро Linux. Изна- ное пространство позаимствованный из Windows драйвер
чально FUSE была частью проекта AFVS [3], но теперь яв- ntfs.sys и использует его код для записи в NTFS. Это дает
ляется отдельным проектом на SourceForge [4]. достаточно высокую гарантию сохранности данных. Ну так
давайте же скорее установим его!
Как работает FUSE?
Разработать драйвер файловой системы с использова- Установка и использование
нием FUSE очень просто. В качестве доказательства со- Для начала вам понадобится FUSE. Если вы приверже-
здатели FUSE приводят на своем сайте пример драйвера нец FreeBSD, то вам повезло: fuse4freebsd уже есть в пор-
файловой системы Hello world, написанный на языке С, ис- тах. Достаточно установить пакеты sysutils/fusefs-kmod
ходный код которого занимает меньше 100 строк. Этот ис- и sysutils/fusefs-libs.
ходный код доступен по адресу: http://fuse.sourceforge.net/ Я пользуюсь Gentoo Linux и поэтому все, что будет ска-
helloworld.html. зано дальше в основном относится к этому дистрибутиву
На рис. 1 показано, как происходит системный вызов и ядру Linux. Итак, в Gentoo установка проходит так:
(например, stat) в драйвере Hello world.
Драйвер и библиотека FUSE общаются между собой emerge -av sys-fs/fuse
modules-update
с помощью файлового дескриптора, получаемого при от- modprobe fuse
крытии /dev/fuse. Этот файл может быть открыт несколько chmod 666 /dev/fusе
раз. При этом для каждой монтируемой ФС генерируется
свой дескриптор. Для удобства можно добавить FUSE в автозагрузку:

№6, июнь 2006 27


администрирование
echo "fuse" >> /etc/modules.autoload.d/kernel-2.6 Вот и всё! Теперь надо не забыть отмонтировать NTFS-
раздел:
Неудобство этого подхода в том, что каждый раз, когда
вы пересобираете ядро, вам необходимо будет пересоби- umount /dev/hda1
mount -t captive-ntfs /dev/hda1 /mnt/tmp/ -o -–rw
рать и sys-fs/fuse. Если вы используете ядро 2.6.14 или стар-
ше, то вы можете просто включить поддержку FUSE пря- Обратите внимание, что параметры, которые мы хотим
мо в ядре. передать captive, должны начинаться с двух тире, а те па-
раметры, которые предназначены для FUSE, передаются
Symbol: FUSE_FS [=m] обычным образом.
Prompt: Filesystem in Userspace support
Defined at fs/Kconfig:465 Для удобства можно добавить в /etc/fstab запись, соот-
Location: ветствующую NTFS-разделу:
-> File systems

Следующий шаг – установка captive. Вы можете ском- /dev/hda1 /mnt/captive captive-ntfs noauto,--rw 0 0
пилировать captive из исходников или использовать го-
товый rpm, скачав его со страницы проекта: http://www.
jankratochvil.net/project/captive/#download. В портах Gentoo Архитектура
captive уже присутствует, так что установка не составля- Captive состоит из двух частей – это собственно сам драй-
ет труда. вер и утилита настройки captive-install-acquire (см. рис. 2).
Эта утилита разработана под Gnome очень сильно и тянет
echo "sys-fs/captive ~x86" >> /etc/portage/package.keywords за собой много зависимостей. А вот функционал у неё до-
echo "sys-fs/captive -gtk" >> /etc/portage/package.use
emerge -av captive вольно скромный: она ищет на NTFS-разделах файлы ntfs.
sys, fastfat.sys, ntoskrnl.exe и sdfs.sys и переписывает их
Если вы используете Debian-based-дистрибутив, то вам в директорию /var/lib/captive. У меня она где-то нашла эти
придется конвертировать rpm в deb: файлы с испанской (!) локалью. Если такие файлы найти
не удается, то captive-install-acquire может скачать с сай-
alien captive-static-1.1.7-0.i386.rpm та www.microsoft.com service pack и взять их оттуда. И пос-
dpkg -i captive-static_1.1.7_1.i386.deb
леднее. Эта утилита добавляет в /ets/fstab записи об NTFS-
Если вы хотите скомпилировать captive из исходников, разделах, но без опции --rw, и поэтому всё равно приходит-
то это лучше всего сделать так: ся править руками.
К нашей удаче существует возможность установить
./configure –enable-install-pkg=no только драйвер. В Gentoo это делается с помощью USE-фла-
make
make install га -gtk, а если вы собираете пакет из исходников, то нужно
задать опцию -enable-install-pkg=no для скрипта configure.
Теперь остается переписать файлы ${WINDIR}/system32/ Но даже в этом случае вам придется установить gnome-vfs,
ntoskrnl.exe и ${WINDIR}/system32/drivers/ntfs.sys в /var/lib/ libonobo и orbit. Давайте разберемся, для чего это нужно
captive/. Я это сделал с помощью Samba. Если у вас нет (см. рис. 3).
доступа к установленной Windows NT/2000/XP/2003Server, При монтировании файловой системы FUSE подгружа-
то вам, пожалуй, придется качать Service Pack с сай- ет sandbox master – компонент captive, который постоянно
та Microsoft и извлекать эти файлы оттуда с помощью находится в памяти. Sandbox master контролирует рабо-
cabextract. WinXP SP2 доступен по адресу [5]. ту sandbox slave. Этот slave выполняется в отдельном про-
цессе. В адресное пространство этого процесса подгру-
жаются ntosknl.exe и ntfs.sys прямо, как в Wine. Этот про-
цесс и называется sandbox – песочница. Внутри песочни-
цы captive делает вызовы бинарного кода, предназначен-
ного для выполнения в адресном пространстве несколь-
ко иной структуры. Кроме того, этот код предназначен для
выполнения в более богатом разными компонентами окру-
жении. Конечно, этот код должен выполняться на нулевом
кольце, а не на третьем. В силу сказанного ассемблерный
код из ntoskrnl.exe и *.sys довольно часто приводит к ава-
рийному завершению процесса. Segmentation, как говорит-
ся, fault. В ходе поставленных мною экспериментов такое
падение мне удавалось наблюдать до десяти раз за вре-
мя распаковки архива с исходниками captive (2,9 Мб). Ког-
да песочница ломается, sandbox master перезапускает пе-
сочницу повторно и продолжает выполнение сначала не-
удачной транзакции, поэтому для конечного пользовате-
ля этот крах остается незамеченным и не приводит к по-
Рисунок 2. Установка captive с помощью captive-install-acquire тере данных.

28
администрирование
Таблица 1. Результаты замера производительности
NTFS compressed NTFS ReiserFS
Копирование 0 m 12.159 s 0 m 39.673 s 0 m 0.048 s
Распаковка 3 m 10.333 s 4 m 22.235 s 0 m 1.479 s

Также мне хотелось бы отметить, что все компоненты


captive реализованы на языке C. Это положительно вли-
яет на производительность. IPC при управлении песоч-
ницей реализован на основе CORBA (вот для чего нужны
libonobo и orbit). А для чего же gnome-vfs? Если взглянуть
в ChangeLog, то становится ясно, что изначально captive раз-
рабатывался исключительно для gnome-vfs. Проект стар-
товал в октябре 2002 года. В августе 2003 была добавлена
поддержка LUFS, a в декабре 2005 LUFS была заменена на
FUSE. Проекты gnome-vfs, fuse и lufs стартовали соответс-
твенно в августе 1999, ноябре 2001 и августе 2002 годов.
Скорее всего разработчики думали, что captive не только
никогда не войдет в официальное ядро, но и вообще за пре-
делами Gnome использоваться не будет. Как мы увидим да- Рисунок 3. Принцип работы captive
лее, возможность использования gnome-vfs вместо FUSE
следует рассматривать всерьёз, если вы уделяете внима-
ние быстродействию файловой системы, так как при ис-
пользовании gnome-vfs приходится вместо трех переклю-
чений в/из режим(а) ядра делать всего одно.

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

# time cp /usr/portage/distfiles/captive-1.1.7.tar.gz /mnt/tmp/


# time tar -xzf captive-1.1.7.tar.gz -C /mnt/tmp

Оба этих теста я проделал на разделах NTFS со сжа-


тием и без него и на reiserfs. Результат вы можете увидеть
в таблице 1.
Признаться, результат оказался несколько неожидан-
ным. Из таблицы видно, что производительность Captive
оставляет желать лучшего. ReiserFS работает более чем в
150 раз быстрее. Таким образом, если у вас нет необходи-
мости записывать на NTFS-раздел, то крайне целесообраз- Рисунок 4. Captive API
ным будет использовать read-only-драйвер, поставляемый
с ядром. Если вы хотите использовать VMWare hard drive, платны. Кроме того, для установки вам придется пожертво-
BestCrypt диск и т. п., то в этом случае опять же лучше бу- вать 256 Мб памяти и 2 Гб дискового пространства. К тому
дет использовать драйвер из ядра. же VMWare для работы требуется X Server.
Если вам жизненно необходимо создавать и удалять Поэтому невозможно дать универсальные рекоменда-
файлы, менять их размер, то у вас есть два варианта: ции. В каждом конкретном случае вам приходется подби-
Captive и VMWare. Captive вполне подойдет, если вам нуж- рать индивидуальное решение.
но отредактировать документ на NTFS-разделе или сбро-
сить туда пару файлов. Если этот раздел расположен на Ссылки:
USB 1.0, то вы можете даже не заметить разницы в скоро- 1. Яремчук С. Файловые системы пространства пользователей. –
сти. В случае когда вам необходимо писать на NTFS час- Журнал «Системный администратор», №6, 2006 г. – 40-43 с. –
то и много, стоит рассмотреть возможность применения http://www.samag.ru/cgi-bin/go.pl?q=articles;n=06.2005;a=06.
VMWare. Если виртуальная машина использует физичес- 2. http://fuse4bsd.creo.hu.
кий диск, то запись происходит с такой же скоростью, как 3. http://www.inf.bme.hu/~mszeredi/avfs.
и в Windows. Однако в отличие от Captive это коммерчес- 4. http://fuse.sourceforge.net.
кий продукт. Кроме того, на виртуальную машину нужно бу- 5. http://www.microsoft.com/downloads/details.aspx?FamilyID=
дет поставить Windows NT/2k/XP/2k3, которые тоже не бес- 049c9dbe-3b8e-4f30-8245-9e368d3cdb5a.

№6, июнь 2006 29


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

Централизованно меняем пароли


локального системного администратора

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

С
пециалисты системной под-  Поддерживать работу в несколь- мента запускается тот или иной режим
держки, как правило, не обла- ких режимах: для конкретной ма- работы сценария (см. таблицу 1):
дают правами системного ад- шины, для членов группы в AD или
министратора. Для установки про- для всех рабочих станций в сети. Set objArgs=Wscript.Arguments
If Wscript.Arguments.Count=1 Then
граммного обеспечения они исполь-  Унифицировать имя системного If strcomp(ucase(objArgs(0)), ↵
зуют пароль локального системного администратора, переименовывая UCase("-Domain"))=0 Then
mode=1
администратора. Рекомендуется мак- учетную запись, например, из «Ад- End If
симально ограничить права пользова- министратор» в «Administrator». If strcomp(ucase(objArgs(0)), ↵
телям, поскольку установка програм-  По окончанию работы сценария UCase("-Group"))=0 Then
много обеспечения, подключение но- формировать файл отчета. mode=2
End If
вых физических устройств, например
Flash Card, несет в себе потенциаль- Мультирежимность If strcomp(ucase(objArgs(0)), ↵
UCase("-PC"))=0 Then
ную опасность: может произойти утеч- скрипта mode=3
ка важной информации, что не до- Поддержка нескольких режимов рабо- End If
пустимо. Таким образом, регулярная ты реализована с помощью парамет- Else
смена пароля очень важна. Посколь- ров запуска командной строки. Дого- mode=0
End If
ку в сети есть русско- и англоязычные воримся, что запуск сценария, изменя-
версии операционных систем, то стан- ющего имя администратора на указан-
дартные учетные записи и группы ад- ном компьютере, осуществляется с по- Вывод справки
министраторов могут записываться мощью параметра «-pc», для компью- Этот режим, как и все остальные, ре-
по-разному, согласитесь, это очень не- теров, перечисленных в группе, храня- ализован с помощью инструкции
удобно. Достичь универсальности име- щейся в AD, – «-group», а для всех ком- Select… Case и представляет собой вы-
ни локальной учетной записи адми- пьютеров в домене – «-domain». При за- вод текстового сообщения на экран:
нистратора и его пароля можно с по- пуске скрипта во всех остальных слу-
мощью скрипта. Для его создания ис- чаях будет выводиться справка. Select Case mode
Case 0
пользуем VBScript. Чтение аргументов осуществляется txt="ТЕКСТ СПРАВКИ"
с помощью объекта Wscript.Arguments, WScript.Echo txt
Режимы работы сценария их количество определяется с помо- Case 1
Создаваемый сценарий будет обла- щью команды Wscript.Arguments.Count.

дать следующими возможностями: В зависимости от полученного аргу- End Select

30
администрирование
Переименование учетных записей Таблица 1. Режимы работы сценария
Поскольку речь идет о локальных учетных записях поль- Аргумент Значение переменной MODE Описание режима
зователя и группы, то использовать для этих целей прото- – Mode=0 Вывод справки
кол LDAP нельзя. Необходимо применять хорошо извест-
-рс Mode=3 Изменение на локальном компьютере
ный еще со времен Windows NT 4 протокол WinNT. Все три
оставшихся режима выполняют одну и ту же операцию: -group Mode=2 Изменение у группы компьютеров
проверяют на правильность имя группы и пользователя, -domain Mode=1 Изменение на всех компьютерах домена
в случае ошибки переименовывают в правильное и зада-
ют новый пароль. Как видно – это общий фрагмент, кото- гументом «-pc». При этом значение переменной mode – 3.
рый рекомендуется внести в функцию, её входным пара- При запуске в этом режиме необходимо задать два пара-
метром будет имя локального компьютера. Функция со- метра: имя рабочей станции и новый пароль. Лучше все-
стоит из 3 частей: го это сделать с помощью диалогового окна, вызываемо-
 верификация и в случае необходимости изменение име- го с помощью InputBox().
ни пользователя; После того как исходные параметры заданы, необ-
 верификация и в случае необходимости изменение име- ходимо выполнить обращение к функции, которая из-
ни группы; менит пароль, передавать ей в качестве параметра имя
 присвоение учетной записи «administrator» нового па- компьютера. Значение переменной, в которой содержит-
роля. ся новый пароль, не имеет смысла передавать как пара-
метр функции. Рекомендуется объявить эту переменную
Верификация и изменение имени пользователя как глобальную:
Зная имя компьютера, к сети необходимо подключиться
и получить список локальных пользователей на рабочей Dim PWD
PWD = "987654321"
станции, и проверить существование оговоренных учет-
ных записей. В случае несоответствии имен – переимено- Select Case mode
вать группу. …
Case 3
' Определение списка локальных пользователей PWD=CStr(inputbox("Введите новый пароль ↵
' на компьютере локального администратора",,PWD))
Set obj_user= getobject("WinNT://" & pcname)
obj_user.filter = Array("user") PCNAME = "1230PC"
For Each user in obj_user PCNAME=CStr(inputbox("Введите имя рабочей станции",,PCNAME))
user_name= user_name ↵
+cstr(user.Name) ' вызов функции изменения имен и назначения
Next ' нового пароля
make pcname
' Переименование русского (*)Администратор(*)
' в латинское End Select
If StrComp (UCase(user_name), ↵
UCase("Администратор"))=0 Then
Set obj_user2= getobject("WinNT://" & ↵
pcname&"/Администратор,User") Изменяем пароль на группе компьютеров
Set obj_user3= getobject("WinNT://" & pcname)
Set q=obj_user3.movehere(obj_user2.adspath, ↵ Для смены пароля на компьютерах, входящих в группу бе-
"Administrator") зопасности, требуется создать группу в Active Directory
Set obj_user2 = Nothing
Set obj_user3 = Nothing и включить в нее учетные записи компьютеров, на которых
End If необходимо сменить локальный пароль (см. рис. 1). Доступ
к AD в данной ситуации можно осуществлять с помощью
Переименование группы осуществляется аналогич- провайдеров LDAP и WINNT. Для простоты воспользуемся
ным способом. Полный текст сценария смотрите на сай- последним из них.
те журнала www.samag.ru, в разделе «Исходный код». За- Запрашиваемые параметры скрипта в данном режиме –
мечание: для успешной работы скрипт должен быть запу- имя группы и новый пароль.
щен от имени администратора сети. Задание нового па- Чтобы получить доступ к AD, необходимо знать имя до-
роля локального пользователя реализовано с помощью мена. Для протокола WINNT имя домена должно быть пред-
функции setpassword(), параметром которой является но- ставлено в сокращенном варианте, например SPD. Полу-
вый пароль: чить имя домена в сокращенном виде можно несколькими
способами. Один из них – использование стандартной биб-
Set obj_user4= getobject("WinNT://" & ↵ лиотеки ADSystemInfo:
pcname&"/Administrator,User")
Call obj_user4.setpassword(PWD)
Set obj_user4 = Nothing Dim PWD
PWD = "987654321"
Select Case mode


Изменяем пароль на локальном компьютере Case 2
Ранее говорилось, что смена пароля локального системно-
pwd=CStr(inputbox("Введите новый пароль ↵
го администратора выполняется при запуске скрипта с ар- локального администратора",,PWD))

№6, июнь 2006 31


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

Рисунок 1. Члены группы безопасности,


обрабатываемые скриптом Рисунок 2. Пример файла отчета

GROUPNAME = "PC$_group" те HTML и отображать его после завершения работы про-


GROUPNAME=CStr(inputbox("Введите имя группы, ↵ граммы.
включая префикс",,GROUPNAME)) Во время работы скрипта следует накапливать ин-
Set objSysInfo = CreateObject("ADSystemInfo") формацию в переменной, затем обрабатывать ее с по-
domain=cstr(objSysInfo.DomainShortName) мощью функции, которая выводила бы членов группы
Set obj_group= getobject("WinNT://" & ↵
domain &"/"&GROUPNAME) «Administrators». Если такой группы нет, то делается соот-
For Each pc in obj_group.members ветствующая пометка в файле. Отсутствие группы говорит
p=cstr(pc.name)
pcname=Left(p,Len(p)-1) о том, что компьютер недоступен (см. рис. 2): он выключен
make pcname или на нем настроен firewall.
Next
Set obj_group= Nothing Запись данных файл осуществляется с помощью объ-
екта FSO:

End Select
Set FSO=CreateObject("Scripting.FileSystemObject")
Set MyFile1 = fso.CreateTextFile("c:\"+report+".htm", ↵
True, TRUE)
Изменяем пароль на всех компьютерах в домене MyFile1.WriteLine(data)
Для изменения пароля локального администратора на всех MyFile1.Close
компьютерах домена необходимо определить его корот-
кое имя: Когда сценарий завершит работу, отобразите с по-
мощью созданной функции на экране созданный HTML-
Set objSysInfo = CreateObject("ADSystemInfo") файл. Управление веб-страницами осуществляется с по-
domain=cstr(objSysInfo.DomainShortName)
мощью объекта InternetExplorer.Application. Доступ к объ-
Затем получить поочередно доступ ко всем компьюте- екту из VBScript также осуществляется с помощью функ-
рам домена и последовательно вызывать функцию make ции CreateObject().
с изменяющимся значением параметра:
Path=c:\report.htm
Case 1
set oIE=Wscript.CreateObject("InternetExplorer.Application")
… With oIE
Set obj_comp = getobject("WinNT://" & domain) .Left=100
obj_comp.filter = Array("Computer") .Top=100
.Height=400
For Each Computer in obj_comp .Width=400
pcname=cstr(Computer.Name) .MenuBar=0
make pcname .Toolbar=0
Next .Statusbar=0
Set obj_comp= Nothing .Resizable=1
… End With
oIE.Navigate Path
oIE.Visible=1

Формируем отчет Созданный сценарий может быть запущен с любой маши-


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

32
bugtraq

Выполнение произвольного кода Выполнение произвольного кода


в Symantec Client Security /AntiVirus в Microsoft Exchange
Программа: Symantec Client Security 3.x, Symantec AntiVirus Программа: Microsoft Exchange 2000, Microsoft Exchange
Corporate Edition 10.x. 2003.
Опасность: Критическая. Опасность: Критическая.
Описание: Уязвимость существует из-за ошибки провер- Описание: Уязвимость существует из-за ошибки Microsoft
ки границ данных. Удаленный пользователь может выпол- Exchange Calendar в функционале EXCDO (Exchange
нить произвольный код на целевой системе с привилеги- Collaboration Data Objects) и CDOEX (Collaboration
ями SYSTEM. Data-Objects for Exchange) при обработке iCal- и vCal-свойств
URL производителя: www.symantec.com. e-mail-сообщения. Удаленный пользователь может с помо-
Решение: Установите исправление с сайта производите- щью специально сформированного сообщения выполнить
ля. произвольный код на целевой системе.
URL производителя: www.microsoft.com.
Решение: Установите исправление с сайта производите-
Повреждение памяти в Sophos Anti-Virus ля.
Программа: Sophos PureMessage for UNIX 5.x, Sophos
PureMessage for UNIX 4.x, Sophos MailMonitor for SMTP, Sophos
MailMonitor for Notes/Domino, Sophos Anti-Virus Small Business Переполнение буфера в wodSSHServer
Edition, Sophos Anti-Virus 5.x, Sophos Anti-Virus 4.x, Sophos Программа: wodSSHServer 1.2.7 и 1.3.3 DEMO. Возможно,
Anti-Virus 3.x, Sophos PureMessage for Windows/Exchange 2.x, другие версии.
Sophos PureMessage Small Business Edition 2.x. Опасность: Высокая.
Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки
Описание: Уязвимость существует из-за ошибки при об- границ данных при обработке строки алгоритма для обме-
работке Microsoft Cabinet (.CAB)-файлов. Удаленный поль- на ключом, полученным от SSH-клиента. Удаленный поль-
зователь может с помощью специально сформированно- зователь может вызвать переполнение стека и выполнить
го .CAB-файла вызвать повреждение памяти и выполнить произвольный код на целевой системе.
произвольный код на целевой системе. URL производителя: www.weonlydo.com /index.asp?
Для успешной эксплуатации уязвимости должен быть showform=SSHServer.
включен контроль .CAB-файлов. Решение: В настоящее время способов устранения уязви-
URL производителя: www.sophos.com. мости не существует.
Решение: Установите исправление с сайта производите-
ля.
Переполнение буфера в FreeSSHd
Программа: FreeSSHd 1.0.9, возможно, другие версии.
Переполнение буфера в Nagios Опасность: Высокая.
Программа: Nagios 1.x, Nagios 2.x. Описание: Уязвимость существует из-за ошибки проверки
Опасность: Высокая. границ данных при обработке строки алгоритма для обме-
Описание: Уязвимость существует из-за ошибки при об- на ключом, полученным от SSH-клиента. Удаленный поль-
работке HTTP-заголовка «Content-Length» в некоторых CGI- зователь может вызвать переполнение стека и выполнить
приложениях. Удаленный пользователь может указать от- произвольный код на целевой системе.
рицательное значения для заголовка «Content-Length», вы- URL производителя: www.freesshd.com.
звать переполнение буфера и выполнить произвольный код Решение: В настоящее время способов устранения уязви-
на целевой системе. мости не существует.
URL производителя: www.nagios.org.
Решение: Установите последнюю версию (2.3 или 1.4) с сай-
та производителя. Выполнение произвольного кода
в Verisign i-NAv ActiveX-компоненте
Программа: VeriSign i-Nav Plug-In.
Обход парольной аутентификации Опасность: Высокая.
в RealVNC Описание: Уязвимость существует из-за ошибки при обра-
Программа: RealVNC 4.1.1, возможно, другие версии. ботке входных данных в механизме InstallProduct в ActiveX
Опасность: Высокая. компоненте VUpdater.Install. Удаленный пользователь мо-
Описание: Уязвимость существует из-за ошибки при обра- жет выполнить произвольные файлы, содержащиеся в .CAB-
ботке парольной VNC-аутентификации. Удаленный пользо- архиве.
ватель может получить доступ к удаленной системе. URL производителя: www.idnnow.com.
URL производителя: www.realvnc.com. Решение: Установите последнюю версию с сайта произ-
Решение: Установите последнюю версию с сайта произ- водителя.
водителя. Составил Александр Антипов

№6, июнь 2006 33


человек номера

Оппонент мистера Гейтса

Сообщество разработчиков свободных программ в России возникло во многом благодаря


генеральному директору ALT Linux и его коллегам.

П
оздоровавшись, Алексей Вла- Психология, логика, занимался автоматическим распоз-
димирович первым делом под- «Ямахи»… наванием рукописных текстов. Между
вел меня к окну одной из комнат А начиналось все с математики. Ма- прочим, чтобы попасть в НИИ, Алек-
Института философии РАН, в которых тематический факультет Московско- сей должен был выполнить условие –
компактно, уютно, в соседстве с мно- го государственного педагогического освоить один из языков программиро-
гочисленной техникой располагается института им. Ленина ни к чему опре- вания. О том, что это был первый шаг
Общественный институт логики, ког- деленному не привязывал. Наоборот, в сторону Linux, он, естественно, не до-
нитологии и развития личности. Из ок- давал свободу. Алексей интересовал- гадывался. Шел 1979 год.
на был виден Кремль. Алексей Смир- ся логикой, что вполне понятно – близ- В 1984 году Смирнов перешел
нов немного гордится этой панорамой кая к основному образованию тема, на работу в Вычислительный центр Ми-
и вместе с тем находит ее забавной. да и отец, Владимир Александрович нистерства просвещения СССР. И ес-
Уже потом, после беседы с ним, я поня- Смирнов, был виднейшим российским ли раньше Алексей Владимирович ос-
ла, почему руководитель Обществен- философом и логиком, принадлежал к вобождал тексты от скрытого в них
ного института и одновременно гене- блестящей плеяде выпускников фило- смысла с помощью логики, лингвис-
ральный директор компании ALT Linux софского факультета Московского уни- тики, математики и основ программи-
именно так воспринимает многие ве- верситета середины XX века. На пятом рования, то теперь ему предстояло ос-
щи. Легким мировосприятие Алексея курсе свободный поиск привел Алексея вобождать советскую школу от жал-
Владимировича делает беспредельное Владимировича к тому, что его пригла- кого прозябания в бескомпьютерной
чувство свободы. Это чувство, по-мое- сили на работу в НИИ общей и педаго- среде. 1985-1987 годы – время массо-
му, ведет его по жизни. Да и разве мог гической психологии, где в должности вого внедрения в школы информати-
бы несвободный человек стать одним младшего научного сотрудника лабо- ки. Я помню, что именно тогда, во вто-
из столпов свободного программного ратории математического моделирова- рой половине 80-х, увидела первые
обеспечения в России? ния психических процессов наш герой в своей жизни компьютеры в учебном

34
человек номера
центре моего подмосковного города, щие сигналы. Собираем эксперимен- в течение всей жизни. Создав, нако-
а в моем школьном дневнике появи- тальную установку и описываем метод нец, концепцию обращений. Обраще-
лась «Информатика». Ну и первая иг- проведения эксперимента. Инструк- ния – это тот механизм, который дела-
ра в тетрис, как такое забудешь! И вот ция по его проведению – фактически ет каждого из нас органом жизнеде-
я сижу рядом с человеком, который программа для компьютера. Вот это, ятельности человеческого рода и каж-
разрабатывал программное обеспече- я считаю, нормальное использование дого его представителя. Обращения –
ние для японских «Ямах», которые пос- компьютера, когда машина работает это, во-первых, наше общение. Во-вто-
тавлялись в образовательные учреж- с реальными объектами, а не ставит- рых, это способ нашего друг с другом
дения СССР, обучал школьников, пре- ся для демонстрации интерактивных действия, то, как мы друг с другом об-
подавателей, и он мне рассказывает, мультфильмов. Устройство мы сдела- ращаемся. Хорошо или плохо. Чело-
как это было. Фантастика… ли, написали методичку для доволь- вечно или бесчеловечно. Нравствен-
Более того, в это же время Алек- но широкого круга физических экспе- но или безнравственно. И вот этот спо-
сей Владимирович со товарищи стали риментов. Все это ушло в школы и ак- соб обращения друг с другом и делает
создателями чуть ли не первого после тивно работало. нас личностями, человеческими инди-
принятия Закона «О кооперации» ко- видуальностями того или иного качес-
оператива «Сотрудничество» при СП Диагноз ясен тва. Ущербного – или всесторонне-гар-
«Диалог». От школьных проблем – к вузовским. монического...»
– Мы делали комплекты программ Еще в бытность свою ведущим спе- В 1957-1970-х годах Феликс Михай-
для «Ямах». Библиотеки выпуска- циалистом того же кооператива «Со- лов сначала был доцентом, а потом –
ли, программно-аппаратные комп- трудничество» Алексей Владимиро- заведующим кафедрой философии
лексы, чтобы это можно было присо- вич принял участие в создании учеб- 2-го Медицинского института. За сво-
единять к лабораторному школьному ника по логике «Логика и клиническая бодомыслие был изгнан, а вернулся
оборудованию и проводить экспери- диагностика», компьютерного практи- 20 лет спустя, и вот как раз об этих вре-
менты. Тогда как раз вышли програм- кума для студентов-медиков. Вдохно- менах рассказывает Алексей Смирнов:
мы и курсы А.Г. Кушнеренко, связан- вителем и руководителем этого проек- «Мы работали с группой врачей из Чет-
ные с виртуальными мирами. Идея бы- та был Феликс Трофимович Михайлов, вертой Градской больницы, с кафед-
ла такая – управление объектами, ко- российский философ и психолог-тео- ры пропедевтики внутренних болез-
торые смоделированы на компьюте- ретик, доктор философских наук, про- ней. Они подняли архивы расхождения
ре. Стали развивать мысль – давайте фессор, действительный член РАО. медицинских диагнозов по вскрытиям
не будем проводить физический экс- О Феликсе Трофимовиче необ- с прижизненной диагностикой. То есть
перимент, а смоделируем его на ком- ходимо сказать немного подробнее. архив медицинских ошибок, сущест-
пьютере. Нам это очень не понрави- Без этого очерк об Алексее Смирнове вующий в больницах чуть ли не с ека-
лось. Что такое физический экспери- будет неполным. Ведь человека фор- терининских времен. Они обнаружи-
мент? Существует некая теория, и я хо- мируют не только семья, книги, обра- ли интересную вещь. Сейчас сущест-
чу убедиться, она соответствует тому, зование, но и встречи с такими удиви- вуют современные методы диагности-
что есть на самом деле. Если модели- тельными людьми. Феликс Михайлов – ки. Если есть подозрение на инфаркт,
ровать реальность на компьютере, по- автор знаменитых трудов «За порогом назначают кардиограмму. Если надо,
лучается, что я сравниваю математи- сознания. Критический очерк фрейдиз- делают УЗИ, берут анализы. Но про-
ческую модель с компьютерной. А за- ма» (в соавторстве), «Загадка челове- цент медицинских ошибок практически
чем? В качестве иллюстрации? ческого Я», «Общественное сознание не меняется! Они поняли, почему. Ме-
– Мне кажется, – робко встре- и самосознание индивида». В лабора- диков учат, как собирать данные, как
ваю я, – это делается для того, чтобы тории теоретических проблем психоло- пощупать пульс, расспросить больно-
уберечь детей. Эксперимент может гии деятельности, созданной руково- го, на какой анализ направить, как его
быть опасным… дителем Института общей и педагоги- прочитать. То есть методам обследова-
– Тогда можно кино по телевизору ческой психологии Василием Василь- ния. С другой стороны, студенты изуча-
показать. Зачем компьютер? Не стоит евичем Давыдовым специально для ют, как протекают те или иные болезни.
его использовать в качестве киноус- Михайлова, работали многие ученые А дальше врач оказывается перед кон-
тановки. Понятно, что ядерный взрыв, с громкими именами. А еще – знамени- кретным больным. Он помнит про все
другие опасные эксперименты лучше тые участники эксперимента, слепоглу- болезни, про все методы исследования
так и показывать. хие выпускники Загорской школы-ин- больного. А что делать с этим больным,
Берем обычный школьный экспе- терната. Один из них, доктор психоло- не знает. Выясняется, что методу поста-
римент, обычные школьные приборы, гических наук Александр Суворов, на- новки диагноза его не научили! Что де-
которые есть в обычной лаборатории. писал в своей статье «Двойная звезда» лать? Смотреть зрачки, есть ли желту-
Необходимо устройство, через кото- уже после смерти Феликса Трофимо- ха, посылать на кардиограмму или сра-
рое мы сможем все это присоединить вича в феврале этого года: «Мы с рож- зу брать пункцию? Знаний много, а тол-
к компьютеру и затем снимать показа- дения до смерти – органы друг друга, – ку от них мало. Необходимо было сде-
ния этих приборов – амперметра, воль- настаивает Феликс Трофимович. И этот лать курс, на котором медики-диагнос-
тметра и так далее… С другой стороны, тезис Феликс Трофимович всё более ты могли получить азы постановки диа-
на приборы надо подавать управляю- глубоко и всесторонне обосновывал гноза. Мы работали вместе и сделали

№6, июнь 2006 35


человек номера
мости от того, что ном и моралью. Если это программное
вам надо. Если му- обеспечение идет в школу, там должна
чает жажда, прос- быть хотя бы кампусная лицензия, кото-
то посмотрите, ка- рая позволяет ученикам и сотрудникам
кая лучше, какая и, наверное, их домашним, поставить
приемлема по це- его на своих домашних компьютерах
не, заплатите и тут и на рабочем месте и беспрепятствен-
же выпьете, не гля- но пользоваться. А дальше – кто, что
дя на условия по- и за какие деньги предложит. Тут и на-
купки. А если на- до сравнивать. Один приходит и гово-
до поставить воду рит – берите программу, ставьте на лю-
на стол гостям, на- бом количестве компьютеров и исполь-
верное, придется зуйте как хотите, другой – вот програм-
купить ту бутылку, ма, можете поставить на 20 компьюте-
Свободнорожденного нельзя лишить свободы!
которую разреша- ров, а дальше придется еще закупать».
такой курс, тренажер на компьютере. ется наливать не только себе. Иначе При таких условиях свободному софту
Можно взять компьютерного больно- придется каждому гостю покупать по и особого лобби не надо, его преиму-
го, применить к нему те или иные мето- бутылке. Глядеть на цену, не поглядев щества видны сразу.
ды обследования и получить результат. на эти условия, нелепо». Набрав в любой поисковой системе
Врачи остались довольны. Тренажером Так же нелепо, объясняли в 2003 го- free software, находим сайт www.gnu.org.
этим пользуются до сих пор». ду Алексей Смирнов и его коллеги со- И вот они, четыре разновидности сво-
Научная работа Алексея Смирно- трудникам Министерства экономичес- боды пользователей программ:
ва в области логического программи- кого развития и торговли РФ, покупать 1. Свобода запускать программу
рования – это поиск вывода в различ- программы для госсектора, не указав, в любых целях (свобода 0).
ных логических системах, паранепро- какие права при этом вы хотите при- 2. Свобода изучения работы програм-
тиворечивые логики, компьютерные обрести. «Мы создали аналитическую мы и адаптация ее к вашим нуждам
системы поиска вывода. В соавторстве работу. Среди прочего, рекоменда- (свобода 1). Доступ к исходным тек-
Алексей Владимирович создал про- ции по использованию свободных про- стам является необходимым усло-
грамму интерактивного поиска дока- грамм в госсекторе. И заявили: катего- вием.
зательств Deductio, распространенную рически не надо при госзакупках какие- 3. Свобода распространять копии, так
в нашей стране и за рубежом. Интерес- либо преференции делать свободному что вы можете помочь вашему то-
нейшая тема, продолжить изучение ко- софту. Они на нас удивленно посмотре- варищу (свобода 2).
торой предлагаю на сайте www.logic.ru. ли и спросили: «Вы же представляете 4. Свобода улучшать программу
А я возвращаюсь к интервью. Мир сво- свободный софт, почему же не надо де- и публиковать ваши улучшения, так
бодного человека открыт, а значит, тем лать преференции?» Отвечаем: «Воп- что все общество выиграет от это-
для общения огромное множество. рос не в преференциях, а в том, что- го (свобода 3). Доступ к исходным
бы тендер проводился на равных для текстам является необходимым ус-
Четыре свободы всех». Что это значит? Когда вы поку- ловием.
Наш разговор продолжается. Вокруг паете программу, вы покупаете не ко-
тихо – сотрудники института уже дав- робочку, а определенные права. Объ- Программа считается свободной,
но разбрелись по домам – вечер, конец являя тендер, необходимо раскрыть если пользователи располагают все-
рабочей недели. А у нас беседа в раз- не только технические характеристи- ми четырьмя свободами… С вас мо-
гаре. Мы перешли к самой главной те- ки программы, но и заявить, какие пра- гут взять деньги за копирование про-
ме – свободный софт. К чайному сто- ва вы хотите купить. Что я имею пра- грамм GNU, либо вы можете получить
лу, расположенному неподалеку, под- во сделать с программой? Поставить их бесплатно. Вне зависимости от того,
ходит Алексей Евгеньевич Новодвор- ее на один компьютер и через два дня как вы получили вашу копию, вы всег-
ский, друг, соратник, спутник на всем стереть? Поставить на все компьютеры да свободны в дальнейшем копирова-
маршруте трудовой биографии Алек- на 41 год? Или могу копировать, разда- нии либо модификации программ».
сея Владимировича, наливает себе вать всем желающим? А если мне за- Практически, процитировав эти
чай. Смирнов указывает на него и пы- хочется ее исправить? Предположим, фрагменты, я применила на практике
тается объяснить мне, неофиту сво- программа закупается для школ. Зна- принципы свободного ПО.
бодного ПО: «Алексей привел хороший чит, это учебное пособие. Учебное по- Мне также понравилась идея «ав-
пример. Приходите в магазин, хотите собие должно быть свободно, доступ- торского лева», описанная в книге Ри-
купить бутылку воды. На одной напи- но всем сотрудникам и учащимся шко- чарда Столлмена «Open Sources»:
сано: «Берите, пользуйтесь до истече- лы. Если я покупаю программу, кото- «Центральная идея «авторского лева»
ния срока годности». А на другой напи- рую учитель может дать ребенку домой, в том, что мы даем каждому разреше-
сано: «Вы должны ее лично открыть и только нарушая уголовный кодекс, то, ние запускать, копировать, изменять
выпить, никому не наливать». Вопрос: наверное, это неправильно. Мы ставим программу и распространять изменен-
какую бутылку вы купите? В зависи- учителя перед выбором между зако- ные версии, но не разрешаем добав-

36
человек номера
лять ограничения от себя… Эффек- тами: «Open Sources kill jobs», – пыта- Мир разработчиков свободных про-
тивность «авторского лева» возможна, ясь защитить низкоквалифицирован- грамм возник во многом благодаря
лишь если модифицированные версии ные кадры, которые, ничуть не сму- Алексею Смирнову и ALT Linux. При-
также свободны. Этим обеспечивает- щаясь, «рисуют» при помощи мышки чем народ общается не только в Сети,
ся, что производные продукты в слу- одни и те же программы для ста рабо- по e-mail и в «аське». Раз в год прово-
чае их публикации будут доступны на- тодателей. Не боятся, потому что об- дится знаменитый летний «форум» –
шему обществу. Когда программисты ладают замечательной эрудицией, хо- Linux Fest, а также приуроченная к не-
добровольно участвуют в улучшении рошо знают все о существующем про- му международная конференция раз-
программ GNU, «авторское лево» за- граммном обеспечении, способны ра- работчиков свободных программ, куда
щищает их от нанимателей, которые зобраться, что и как работает, и приду- приезжают, кстати, не только «линуксо-
могут сказать: «Вы не можете свобод- мать новое, если это необходимо. Вза- иды» и не только из России, но специ-
но распространять свои модификации, мен этих весьма высоких требований алисты практически со всего СНГ. Со-
поскольку мы собираемся сделать их «свободный софт» дает им свободу. И бирается целая армия – человек четы-
нашей собственнической версией про- пропуск в особый мир, который Алек- реста. Обсуждают технические, поли-
граммы». Отлично! Это то, что Алексей сей Смирнов описывает так: «Кто-то тические проблемы. Слабых докладов
Смирнов называет: «Свободнорожден- написал программу, другой посмот- на конференции не бывает, коммер-
ного нельзя лишить свободы». рел: «О, здесь можно что-то улучшить, ческие делают только фирмы-спонсо-
Уф, ну вот, спецы могут вздохнуть вот тебе изменения для этой програм- ры, да и те, чтобы не выглядеть глупо,
облегченно, мой ликбез завершен. Од- мы!». Наверное, он пришлет эти изме- присылают представителей с содержа-
нако еще одна восторженная нотка – по нения не потому, что он такой добрый, тельными сообщениями.
поводу «мира свободного софта», ко- а потому, что ему нужна дополнитель- Забавно, но уже в финале наше-
торый уже существует не только в ми- ная функциональность. Если он прос- го интервью, словно нарочно, раздал-
ре, но и в нашей стране. Почему-то в то сделает изменения для себя и ни- ся звонок – Алексея Владимировича
моем восприятии это мир легких, ве- кому не заявит о них, то в следующей спрашивали именно по поводу июль-
селых людей, которые ничего не боят- версии программы того, что ему нужно, ской встречи. Могу совершенно от-
ся – ни пресловутого нарушения авто- уже не будет. То есть если я что-то сде- ветственно заявить всем, кто интере-
рских прав, ни воровства «чужой ин- лал и открыл, это будет жить дальше, я суется: в этом году Linux Fest обяза-
теллектуальной собственности». Ни за- тоже смогу пользоваться. Причем я мо- тельно состоится. В восьмой раз. При-
явления Билла Гейтса, который не так гу сделать чуть-чуть, а другие продол- соединяйтесь!
давно сказал на встрече с программис- жат. Я обозначил направление». Оксана Родионова

III Международная конференция разработчиков свободных программ на Протве


 Когда: 24-26 июля стол на тему: свободные программы для электронного го-
 Где: Калужская обл., г. Обнинск, Государственный сударства.
Центральный Институт Повышения Квалификации Заявки на проведение круглых столов по другим темам
(ГЦИПК), (ул. Курчатова, д. 21) принимаются Оргкомитетом до 1 июля. Для участия в кон-
 Подробности: http://conf.altlinux.ru ференции в качестве докладчика необходимо: выслать за-
явку до 20 июня, а в качестве слушателя – до 15 июля.
Конференция, в работе которой примут участие веду- Контакты Оргкомитета Третьей Международной конфе-
щие разработчики свободных программ из России и дру- ренции разработчиков свободных программ на Протве:
гих стран, представители министерств и других госструк-  conference@altlinux.ru
тур, а так же крупных фирм, ставит целью наладить лич-  +7 (495) 203-96-98
ные контакты между специалистами, обсудить перспекти-
вы развития свободного программного обеспечения, ини- Организаторы: ALT Linux и Институт Логики.
циировать новые проекты. Планируется издание сборника Спонсоры: Naumen.
тезисов докладов к началу работы конференции. Информационные спонсоры:
Темы для докладов: LinuxRSP.ru;
 Проекты разработки свободного программного обеспе- Журнал «Системный администратор».
чения.
 Научные проекты в различных областях знаний, включа- Алексей Новодворский – Председатель Оргкомитета
ющие разработку продуктов под свободной лицензией. конференции.
 Культурные, философские и правовые особенности сво- Дмитрий Левин – Председатель Программного коми-
бодного лицензирования. тета Конференции.
 Свободные программы для органов государственной Подробная информация о месте проведения, услови-
власти. ях участия, программе конференции (детальная програм-
ма будет размещена после 1 июля) и др. доступна по адре-
Во время конференции планируется провести круглый су: http://conf.altlinux.ru.

№6, июнь 2006 37


сети

Создаём зоны DNS

Рашид Ачилов
Domain Name System – своеобразная «нервная система» сети Интернет. Именно благодаря ей
вы, набирая http://www.samag.ru, попадаете на сайт журнала «Системный администратор»,
а не куда-нибудь еще. Как создать, настроить и запустить DNS-сервер для небольшого
предприятия?

Структура DNS ся – информация о том, где находит- шем случае 217.144.98.99). DNS и яв-
В настоящее время Интернет – это ог- ся нужный вам адрес уже могла изме- ляется такой системой. Поскольку от
ромная сеть, в которую входят мил- ниться, и в лучшем случае вы увидите ее успешного функционирования за-
лионы узлов, расположенных по все- сообщение о том, что адрес не найден, висит работа всей сети Интернет, эта
му миру. Для того чтобы запрос, сде- а в худшем – окажетесь на сайте, со- система функционирует по принципу
ланный с одного компьютера, мог до- вершенно не имеющем никакого отно- распределенной базы данных – есть
стичь цели, расположенной на другом шения к тому, что было нужно. Надеж- «хорошо известные» серверы, чис-
компьютере, нужно прежде всего эту ней и проще будет обратиться к систе- лом 13, их еще называют «корневыми»
цель задать. Можно, конечно, указать ме, которая хранит соответствие меж- (root servers), содержащие информа-
IP-адрес напрямую. Если он вам из- ду символическими именами типа цию о серверах, содержащих инфор-
вестен, конечно. Но здесь существует www.samag.ru и IP-адресам, соответс- мацию о серверах и т. д. Как дом, ко-
возможность очень просто ошибить- твующими им в данный момент (в на- торый построил Джек.

38
сети
Вся сеть Интернет, которая описы-
вается зоной «.» (точка) делится на так Домены верхнего уровня .museum, .name, .pro и .travel. Более подроб-
называемые TLD (Top Level Domains – Первоначально, согласно RFC 920, в спис- ная информация приведена в [2]. Географи-
домены верхнего уровня), распре- ке функциональных TLD присутствова- ческие же домены распределены раз и на-
деляемые либо по функционально- ли только .com, .gov, .mil, .edu, .org [1], ко- всегда. Хотя это не значит, что вы не мо-
му, либо по географическому призна- торые представляли соответственно ком- жете зарегистрировать в нем свой домен.
ку. Существует также термин primary мерческие, правительственные, военные Многие географические домены, случай-
domain – «первичный домен», или «до- организации, образовательные учрежде- но совпавшие с «хорошо известными» со-
мен первого уровня», но этот термин ния и некоммерческие организации. Впос- кращениями, являются чрезвычайно при-
используется значительно реже. Рас- ледствии этот список несколько расширил- влекательными. Например, .md (Молдавия)
пределение по географическому при- ся – в 1985 г. добавился TLD .net, представ- очень привлекательна для медицинских
знаку осуществляется в соответствии ляющий организации-поставщики сетевых учреждений и жителей штата Мэриленд,
с ISO 3166, устанавливающему для услуг, а в 1988 – TLD .int, представляющий США; .tv (Тувалу) – для сайтов, связанных
всех стран мира двух- и трехбуквен- международные организации. В 2001-2002 с телевидением; .tm (Туркменистан) сов-
ные коды. Распределение по функцио- к этому списку добавились практические падает с написанием сокращения «Trade
нальному признаку осуществляется по неизвестные российскому пользовате- Mark», а .nu (Ниуэ – есть такой остров-ко-
мере необходимости создания нового лю TLD .aero, .biz, .cat, .coop, .jobs, .mobi, лония) – для сайтов в стиле «ню».
TLD. Здесь следует отметить, что все-
ми вопросами по отношению к TLD за-  Сервер DNS обращается к серверу организациями, причем резервиро-
нимается ICANN (Internet Corporation for зоны granch.ru. вание .gov оформлено соответствую-
Assigned Names and Numbers), и имен-  И наконец, сервер зоны granch.ru щим RFC – RFC 2146 [5]. Полный спи-
но этот орган решает – создавать ли сообщает ему адрес, соответству- сок всех существующих в настоящий
новый TLD. ющий имени www. В данном случае момент географических же TLD с ука-
Корневые сервера сами по себе со- это будет 81.1.252.58. занием регистратора домена и необ-
держат только ссылки на сервера, со- ходимой контактной информации мож-
держащие информацию о зонах вто- Данный процесс проиллюстриро- но посмотреть в [6]. Хотя если, скажем,
рого уровня, которые в свою очередь ван на рис. 1, где цифры обозначают в зоне .com можно выбирать из ог-
содержат информацию о серверах, со- последовательность запросов. ромного списка, то для зон .ru и .su
держащих информацию о зонах треть- РУЦЕНТР, [8], без вариантов.
его уровня и т. д. В большинстве слу- Как встроить свою Здесь надо отметить несколько мо-
чаев иерархия исчерпывается на тре- информацию в структуру ментов. Фактически зона .su относится
тьей-четвертой зоне. Но не потому, DNS? к несуществующему государству Со-
что здесь заложено какое-то ограниче- Прежде чем включаться в какую-либо ветский Союз (Soviet Union), хотя тем
ние. Просто запоминать сложные име- систему, нужно иметь некоторое пред- не менее продолжает обслуживаться
на ничуть не проще IP-адресов. ставление о том, куда и каким образом и открыта для регистрации. Регистра-
Таким образом, процесс поиска ин- включаться. ция там достаточно дорогая – 100 дол-
формации, допустим, о веб-сервере ларов за регистрацию или поддержку
www.granch.ru, будет выглядеть сле- Куда встраиваем? в год.
дующим образом: За различные TLD отвечают различ- Не существует никакого приори-
 Клиент обращается к своему сер- ные сервера, и если за географи- тета, согласно которому одна органи-
веру DNS, адрес которого был ческие домены отвечает, как прави- зация или человек имеет преимущес-
задан системным администра- ло, один сервер (точнее говоря, одна тво при регистрации домена над дру-
тором с запросом «Скажи мне организация), то за домены функцио- гим. Один американский бизнесмен,
адрес, соответствующий имени нальные может отвечать, вообще гово- занимавшийся производством плас-
www.granch.ru». ря, неограниченное количество так на- тиковых окон, зарегистрировал до-
 Сервер DNS знает адреса серве- зываемых регистраторов, то есть ком- мен windows2000.com. Когда то же са-
ров, с которых ему следует начи- паний, заключивших специальные до- мое попыталась сделать Microsoft, она
нать поиск в том случае, если в его говоры с ICANN о том, что именно они с удивлением обнаружила, что это имя
кэше не хранится запрошенная ин- будут регистрировать имена в некото- уже занято, и за него компании при-
формация, поэтому он обращается рых функциональных доменах. Крат- шлось выложить крупную сумму. Су-
к одному из них. кое описание функционального до- ществует даже понятие «киберсквот-
 Корневой сервер присылает ему мена и адрес его регистратора при- терство» – процесс регистрации до-
адрес сервера, отвечающего за зо- ведены в [3]. менов с целью их последующей пере-
ну .ru Если регистраторов несколько, то продажи. РУЦЕНТР тоже решил при-
 Сервер DNS обращается к серверу дается адрес основного (например, ложить к этому руку, и по новым пра-
зоны .ru VeriSign [4] для домена .com). Домены вилам, которые вводятся с 1 июня
 Сервер зоны .ru присылает ему .gov и .mil зарезервированы исключи- 2006 года, освобождающиеся доме-
адрес сервера, который отвечает тельно за американским правительс- ны выставляются на «аукцион домен-
за зону granch внутри его зоны. твом и американскими же военными ных имен» и передаются тому, кто даст

№6, июнь 2006 39


сети
ми картами, но если домен по какой-либо причине не мо-
жет быть зарегистрирован, деньги будут возвращены не ра-
нее чем через три дня.
Регистратору потребуется указать IP-адрес и маску под-
сети сервера, на котором будет запущена программа DNS-
сервера, и который будет содержать основную базу дан-
ных, создаваемую и редактируемую вами по мере необхо-
димости. Этот сервер будет называться первичным серве-
ром (master server). Кроме того, потребуется указать как
минимум один IP-адрес сервера, содержащего резервную
копию базы на случай отказа первичного сервера. Такие
серверы называют вторичными серверами (slave servers).
Чтобы долго не размышлять о том, где разместить вторич-
ный DNS, РУЦЕНТР предлагает разместить его на их пло-
щадке. Стоимость услуг РУЦЕНТРа составляет 15 долла-
ров в год за домен в зонах .ru, .net, .com, .org, 50 долларов
за домен в зонах .biz, .info, 100 долларов за домен в зоне
.su и 5 долларов в год за поддержку вторичного DNS в лю-
бой (в том числе и зарегистрированной не у них) зоне.
Почему требование к наличию вторичного DNS-серве-
ра является обязательным? Поскольку стабильность рабо-
ты DNS крайне важна для стабильности работы сети Ин-
тернет в целом, то лицо или организация, регистрирующая
Рисунок 1. Процесс поиска информации домен, обязана удовлетворять некоторым условиям, каса-
ющимся стабильности работы DNS:
больше. Имена удерживаются на «аукционе» в течение го-  Должно быть предусмотрено не менее двух серверов,
да, если за этот срок никто на него не претендует, имя вы- обслуживающих данный домен.
водится в свободную регистрацию.  Эти сервера должны быть доступны не менее 22 часов
При создании TLD, перечисленных выше, планиро- в сутки.
валось также создание TLD .xxx для сайтов с тематикой
«для взрослых». ICANN отклонила это предложение. Недав- Каких-либо требований к размещению серверов по но-
но оно было вынесено на повторное голосование, и ICANN вым правилам не выдвигается, хотя ранее требовалось на-
снова его отклонила [7]. Зато появился TLD .tel [9], рассчи- личие их в разных IP-сетях.
танный на использование одновременно в компьютерах
и мобильных устройствах. www.krokodil.ru
Существует RFC 1480, описывающий правила регистра- Итак, допустим, мы хотим создать сайт www.krokodil.ru (на
ции имен в домене .us. Правила эти чрезвычайно громозд- момент написания статьи это имя было свободно), посвя-
ки и запутанны и предполагают создание имен из 6-7 уров- щенный разведению крокодилов в домашних условиях.
ней типа Hamilton.High.LA-Unified.K12.CA.US Подключение по выделенной линии есть, сеть класса С,
а именно 212.20.5.0 – 212.20.5.255 (этот диапазон в настоя-
Каким образом встраиваем? щее время свободен) провайдером выделена. Этот пример
Раньше все было гораздо сложнее. Для регистрации зоны несколько нехарактерен для нынешнего времени с его де-
.com мне пришлось заполнять множество текстовых форм – фицитом IP-адресов, но он взят специально для того, что-
с данными на организацию, с данными на контактных лиц... бы рассмотреть создание обратной зоны. Также будет рас-
Формы эти потом отсылались на специальные адреса, от- смотрен вариант с подключением через сеть 212.20.5.0/31.
куда приходили ответы – приняты или нет. Затем предвари- Внутренняя сеть нашей крокодиловодческой конторы со-
тельно сформированный файл зоны тестировался, и опять стоит из шести компьютеров и будет отделена от Интернет
же по почте приходило сообщение о том, успешно завер- firewall-proxy и т. д. под управлением FreeBSD. Что нам по-
шено тестирование или нет. надобится для осуществления задуманного?
Сейчас все стало гораздо проще. И Network Solutions, Прежде всего отмечу, что существуют варианты, не
и РУЦЕНТР обзавелись веб-интерфейсами, с помощью ко- предполагающие какого-либо знания DNS – все размеща-
торых все вышеперечисленное (за исключением, конечно, ется на площадке провайдера, все обслуживается провай-
составления файла зоны) можно сделать несколькими кли- дером, вам предоставляется только веб-интерфейс. Эта ус-
ками мыши. Все данные можно исправить, дополнить или луга чрезвычайно популярна за рубежом, но очень слабо
удалить в любой момент. Ранее с РУЦЕНТРом требовалось востребована в России. Ее описание выходит за рамки дан-
заключать договор на обслуживание, но начиная с 1 июня ной статьи, поэтому рассматривать ее я не буду.
2006 года в действие вводятся новые правила, согласно ко- Во-первых, нам понадобится программа DNS-серве-
торым достаточно зарегистрироваться на их сайте. Зару- ра. На сегодняшний день только одна программа реализу-
бежные регистраторы, как правило, обходятся кредитны- ет требуемый набор функций. Это DNS-сервер BIND, рас-

40
сети
пространяемый ISC (Internet System Consortium Inc., [10]) –  класс – класс записи;
некоммерческой организацией, которая занимается раз-  тип – тип записи;
работкой серверов BIND, DHCP, INN и NTP. Если он отсутс-  данные – ассоциируемые с данным обьектом данные.
твует в вашей системе, его необходимо скачать и устано-
вить. FreeBSD поставляется вместе с BIND 9.3.2, поэтому Имя может принимать любое значение, и в таком слу-
в данной статье будет рассматриваться именно эта вер- чае оно считается именем обьекта. Если имя заканчива-
сия. Следует отметить, что для версий BIND 8.x приводи- ется на точку, то оно считается полностью определенным,
мое ниже описание конфигурации совершенно неприем- иначе в конец имени подставляется имя зоны, которое мо-
лемо, поскольку формат конфигурационных файлов BIND жет быть задано двумя способами:
8.x коренным образом отличается от формата конфигура-  Заданием имени зоны в директиве $ORIGIN, например:
ционных файлов BIND 9.x.
Во-вторых, понадобится распределить выделенные нам $ORIGIN krokodil.ru
IP-адреса и наделить адресами внутренние компьютеры.
Здесь все чрезвычайно просто: пусть 212.20.5.1 – шлюз  Заданием имени зоны в директиве zone конфигураци-
провайдера, 212.20.5.2 – адрес UNIX- сервера, 10.87.1.0/24 – онного файла BIND.
внутренняя подсеть, в которой с 1-й по 6-й – рабочие стан-
ции, 254 – адрес внутреннего интерфейса сервера. Осталь- Специальный символ «@» обозначает текущее имя зо-
ные адреса будут зарезервированы для будущего расши- ны. Имейте в виду, что директива $ORIGIN отменяет дирек-
рения. тиву zone и действует до появления следующей директивы
В-третьих, потребуется заранее подготовленный файл $ORIGIN или до конца файла. До момента появления пер-
описания зоны, который будет определять небольшое коли- вой директивы $ORIGIN она считается заданной значению
чество внешних адресов: krokodil.ru – корневой сервер зоны, директивы zone конфигурационного файла BIND.
www.krokodil.ru, ftp.krokodil.ru, mail.krokodil.ru и ns.krokodil.ru. Если имя задано, оно должно начинаться с первой по-
Имя ns (nameserver) является практически традиционным зиции строки.
наименованием компьютеров, на которых работает служ- TTL обычно опускается и задается глобально дирек-
ба DNS, хотя, конечно, никто не помешает вам назвать его, тивой $TTL. Директива $TTL для BIND 9.x является обя-
например jaws.krokodil.ru. Будут определены также имена зательной и, как правило, задается в самом начале фай-
для компьютеров внутренней сети, доступные только из- ла. В поле данных этой директивы задается время жизни
нутри: tooth1.krokodil.ru – tooth6.krokodil.ru. (в секундах) элемента, в течение которого он может нахо-
диться в кэше и считаться достоверным. В данном приме-
Записи DNS ре это двое суток (48 часов).
Существует достаточно большое количество типов разно-
образных записей, которые можно помещать в DNS. Обьем $TTL 172800
данной статьи позволяет рассмотреть лишь наиболее важ-
ные из них, для получения полной информации следует об- Класс записи может принимать одно из следующих
ратиться к соответствующим RFC: RFC 1033 и RFC 1035 оп- значений:
ределяют форматы основных записей, RFC 1122 – формат  IN – запись ресурсов Интернет.
записи PTR, RFC 2782 – формат записи SRV. Мы рассмот-  CH – запись ресурсов ChaosNet – совершенно незнако-
рим только те записи, которые понадобятся для формирова- мой российскому пользователю сети, применявшейся
ния файлов зон, необходимых для регистрации домена: на машинах фирмы Symbolics.
 Запись SOA, задающая начало описания зоны.  HS – запись ресурсов Hesiod – служебного протокола
 Запись NS, определяющая сервера имен зоны. BIND.
 Запись A, задающая соответствие между IP-адресом
и именем (прямое преобразование). Тип записи – один из типов, перечисленных выше.
 Запись MX, описывающая настройки доставки почты Следует обратить внимание на то, что поля имя, ttl
для данного компьютера. и класс могут быть опущены. При этом в качестве их зна-
 Запись CNAME, задающая альтернативные имена. чений принимается последнее определенное значение
 Запись PTR, задающая соответствие между именем (при этом задание @ будет корректным определением),
и IP-адресом (обратное преобразование), употребля- а если значение не было определено нигде, то для поля
ется в описании «обратной» зоны. класс принимается значение по умолчанию «IN», для дру-
гих полей – приводит к сообщению об ошибке.
Формат записей DNS общий для всех типов записей: Кроме записей, в файле зоны могут быть команды. Всего
команд четыре – $TTL, $ORIGIN, $INCLUDE и $GENERATE.
[имя] [ttl] [класс] <тип> <данные> Описание команды $GENERATE приведено в документации
на программу BIND, а также в [13] и [14], команда $INCLUDE
где: работает соответственно своему написанию – включает
 имя – это имя обьекта, с которым ассоциируются дан- указанный файл в текущий файл.
ные;
 ttl – время жизни обьекта; $INCLUDE /etc/namedb/krokodil-ru-int.soa

№6, июнь 2006 41


сети
Примечание: знак «;» (точка с запятой) является при- подчиненный сервер должен связаться с главным и про-
знаком комментария. верить, не изменился ли серийный номер зоны. Если
серийный номер изменился, подчиненный сервер за-
Запись SOA грузит новые данные. В данном примере 10800 секунд
Эта запись определяет начало зоны. Любая зона должна (3 часа).
начинаться с записи SOA. Появление другой записи SOA  Время, через которое подчиненный сервер будет пытать-
автоматически заканчивает первую зону и начинает вто- ся обратиться к главному, если попытка получить новый
рую. Формат записи SOA приведен ниже. Фактически за- серийный номер закончилась неудачно. В данном при-
пись SOA именует зону и задает для нее некоторые умол- мере 3600 секунд (один час).
чания.  Время, в течение которого подчиненные сервера будут
обслуживать запросы по данной зоне при длительном
@ IN SOA krokodil.ru. hostmaster.krokodil.ru. ( отсутствии главного сервера. Система должна работать,
2005122001 ; Serial number
10800 ; Refresh every 3 hours даже если главный сервер не работает длительный пе-
3600 ; Retry every hour риод времени, поэтому в значении данного параметра
1728000 ; Expire every 20 days
172800 ) ; Minimum 2 days задано 1728000 секунд (20 суток).
 Время кэширования отрицательных ответов. В данном
Разберем пример. Знак @ в поле имени означает, что примере 172800 секунд (2 суток).
необходимо взять имя зоны, заданное ранее директивой
$ORIGIN. Класс записи – IN, тип записи – SOA. SOA – это Запись NS
единственная запись, которая имеет такой сложный спи- Эта запись задает имена серверов, поддерживающих зо-
сок параметров. ну, т.е. ведущих ее базу. Здесь должны быть перечислены
Первый параметр – это адрес главного сервера имен имена первичного и всех вторичных серверов. Обычно эта
зоны. В данном примере это krokodil.ru. Второй параметр – запись следует непосредственно за записью SOA. В поле
адрес электронной почты лица, ответственного за данную данные заносится одно значение – имя или IP-адрес сер-
зону. Обратите внимание, что адрес записан как «username. вера DNS-зоны независимо от того, является ли он глав-
domain», а не «username@domain». ным или подчиненным. Все указанные здесь имена долж-
Второй параметр – это список значений, заключенный ны быть полностью определенными, то есть заканчивать-
в скобки. Теоретически возможно его записать в одну стро- ся точкой!
ку, но практически я нигде этого не видел, всюду употреб-
ляется форма записи, приведенная в примере. Список со- IN NS ns.krokodil.ru.
IN NS ns4.nic.ru.
стоит из пяти элементов:
 Серийный номер зоны. Этот параметр играет чрезвы- В приведенном примере описывается сначала главный
чайно важную роль в распространении обновления, вы- сервер нашей зоны ns.krokodil.ru, а потом подчиненный сер-
полненного на первичном сервере, по всем его вторич- вер – узел РУЦЕНТРа ns4.nic.ru.
ным серверам. Необходимо каким-то образом сообщить
вторичному серверу о том, что данные на первичном Запись A
сервере изменились. Если первичный сервер был пе- Запись типа A – это основное содержимое файлов зоны
резапущен, то он отсылает всем вторичным серверам прямого преобразования или же просто «прямой» зоны,
извещение о возможном изменении (DNS NOTIFY). По- то есть выдающей имя компьютера по его адресу. Она со-
лучив это извещение, вторичный сервер запрашивает ставляется для каждого компьютера. Для удобства чтения
серийный номер – если на первичном сервере серий- эти записи обычно группируются в порядке возрастания
ный номер больше, чем на вторичном, вторичный сер- IP-адресов, а также группируются с записями MX, соответс-
вер выполняет команду обновления зоны. Кроме того, твующими данному IP-адресу, хотя это, конечно, не явля-
вторичный сервер выполняет периодические проверки ется обязательным. В поле имя заносится имя, назначае-
серийного номера с той же целью. Поэтому следует за- мое IP-адресу, в поле данные – IP адрес, которому назна-
помнить одно простое правило: исправил зону – увеличь чается имя. При наличии у адреса дополнительных имен,
серийный номер! Среди администраторов DNS распро- имя, назначенное адресу записью типа A, называют ос-
странена практика, в соответствии с которой серийный новным именем.
номер формируется следующим образом: YYYYMMDDv,
где: tooth1 IN A 10.87.1.1
tooth2 IN A 10.87.1.2
 YYYY, MM, DD – текущий год (4 цифры), месяц и день tooth3 IN A 10.87.1.3
соответственно tooth4 IN A 10.87.1.4
tooth5 IN A 10.87.1.5
 v – версия зоны за день. Если вносится несколько tooth6 IN A 10.87.1.6
изменений в день, это число последовательно уве-
личивается на единицу. В данном примере описано назначение IP-адресов ком-
Конечно, вас никто не будет обязывать следовать по- пьютерам внутренней сети, которая имеет адрес 10.87.1.0/24.
добной практике. Например, сервера DNS в Windows ее Для компьютеров внутренней сети, как правило, нет необ-
не придерживаются, а просто нумеруют ее 1, 2, 3 и т. д. ходимости формирования каких-либо дополнительных за-
 Значение периода обновления, по истечении которого писей, за исключением разве что CNAME.

42
сети
Запись CNAME растания приоритетов и именно так предпринимает попыт-
Запись типа CNAME – это дополнительная возможность ки доставить почту. Предположим, мы договорились с ад-
DNS. Она позволяет назначить одному IP-адресу более мином узла behemot.ru о том, что сможем использовать его
одного имени. В поле имя заносится дополнительное имя, сервер как транзитный узел, который будет получать нашу
назначаемое IP-адресу, в поле данные – основное имя, на- почту с целью последующей доставки ее адресатам, ког-
значенное ранее записью типа A, или другое дополнитель- да связь восстановится. Тогда описание сервера krokodil.ru
ное имя, назначенное записью CNAME. При этом имя, стоя- будет выглядеть следующим образом:
щее в поле данных записи, называют каноническим (отсю-
да и название записи – Canonical Name). Одному IP-адресу krokodil.ru. IN A 212.20.5.2
IN MX 10 krokodil.ru.
можно назначить неограниченное количество дополнитель- IN MX 50 behemot.ru.
ных имен посредством записей CNAME, но в записях друго-
www IN CNAME krokodil.ru.
го типа должно быть указано имя, назначенное записью A, mail IN CNAME krokodil.ru.
а не записью CNAME. Ниже приводится пример правильно- ftp IN CNAME krokodil.ru.
го и неправильного назначения дополнительных имен.
Правильно: Это комплексный пример, он сразу показывает исполь-
зование записей MX, А и CNAME. Здесь мы:
ns IN A 10.87.1.1  Назначаем адресу 212.20.5.2 имя krokodil.ru.
name1 IN CNAME ns
IN MX 10 ns  Указываем, что почту, направляемую по адресам типа
tail@krokodil.ru, будут принимать (в указанном поряд-
Неправильно: ке):
 сервер krokodil.ru;
ns IN A 10.87.1.254  сервер behemot.ru.
name1 IN CNAME ns
IN MX 10 name1  Определяем дополнительные имена www.krokodil.ru,
mail.krokodil.ru и ftp.krokodil.ru. Обратите внимание,
Записи CNAME могут указывать одна на другую, что все имена в правой части полностью определен-
но не более семи уровней, восьмой обязательно должна ны, то есть заканчиваются на точку. Если этого не сде-
идти запись, указывающая на имя, назначенное записью лать, то в конец имени будет автоматически подстав-
типа A. В литературе встречается рекомендация исполь- ляться значение текущей директивы $ORIGIN. В дан-
зовать множественные записи типа A вместо назначения ном случае это привело бы к появлению имен типа
адресу множества дополнительных имен. По поводу этого www.krokodil.ru.krokodil.ru.
можно сказать, что данный момент упоминается в RFC 2219
в плане «не существует абсолютных рекомендаций по это- Запись PTR
му поводу, каждый должен решать для себя, что для него Это совершенно особый тип записей. В нашем примере мы
лучше». Множественные CNAME проще для администри- «специально» взяли полную подсеть, чтобы рассмотреть
рования, множественные A-записи легче обрабатываются, случай «нормальной» работы с записями PTR. Случай с се-
поскольку происходит меньше перенаправлений. тью 212.20.5.0/31 будет рассмотрен чуть позже.
Запись PTR предназначена для осуществления обрат-
Запись MX ного преобразования – имен в IP-адреса. Подобные пре-
Запись типа MX – это второй основной элемент файла зо- образования очень широко применяются в различных про-
ны. Эта запись расшифровывается как «Mail eXchanger», граммах, предоставляющих доступ к некоторым сетевым
и предназначена для указания IP-адресов или имен ком- ресурсам: они проверяют соответствие прямого и обрат-
пьютеров, которые принимают почту для узла, описанного ного преобразования и в случае несовпадения или отсутс-
в поле name. В этом поле может быть пусто, а также указа- твия записи PTR могут отказать в доступе. Зона, содержа-
но полностью или не полностью определенное имя. Если щая записи PTR, называется зоной обратного преобразо-
в поле name пусто или указано не полностью определенное вания или же просто «обратной» зоной.
имя, то имя дополняется из директивы $ORIGIN. Формиро- Записи PTR не имеют никакого отношения к записям A,
вание записей MX в сложных случаях, когда настраивается MX, CNAME и другим, описывающим прямое преобразова-
достаточно большая зона с разветвленной схемой приема ние. Сделано это намеренно с целью использовать для обо-
почты, – весьма нетривиальная задача, которая тесно пе- их преобразований один и тот же набор программных мо-
реплетается с работой программ, использующих протокол дулей. Здесь, правда, нас ожидает сложность следующе-
SMTP для доставки почты, поэтому мы рассмотрим толь- го вида – полностью определенное доменное имя вида
ко наиболее простой случай – вся почта принимается сер- www.krokodil.ru. «наращивает размерность» слева направо
вером UNIX. В поле данные заносятся два значения – при- (то есть укрупнение узлов идет по мере продвижения по тек-
оритет и имя или IP-адрес компьютера, принимающего поч- сту имени слева направо), а IP-адрес 212.20.5.2 – справа
ту, направляемую на данный компьютер. С одним IP-адре- налево. Для унификации программных модулей приняли
сом может быть связано, вообще говоря, неограниченное следующую условность: все IP-адреса – это имена, вхо-
количество записей типа MX, и все они должны иметь раз- дящие в специальный TLD in-addr.arpa. «Зонами» в этом
ный приоритет. Почта направляется в соответствии с при- домене являются подсети, а имя зоны записывается в ви-
оритетом – почтовый агент сортирует записи в порядке на- де IP-адреса, читаемого наоборот. Таким образом «имя»

№6, июнь 2006 43


сети
нашей обратной зоны будет 5.20.212.in-addr.arpa для об- будут находиться на вашем сервере и управляться вами,
ратной зоны, содержащей описание для внешней сети но записи:
и 1.87.10.in-addr.arpa для обратной зоны, содержащей опи-
сание внутренней сети. 1 IN PTR gate.krokodil.ru.
2 IN PTR krokodil.ru.
Точно так же, как для использования доменного имени
необходимо его зарегистрировать, так и для использования должны быть сформированы провайдером, потому что воз-
обратного преобразования необходимо зарегистрировать можность самому регистрировать обратную зону и само-
обратную «зону» у координатора обратных зон. В отличие му ей управлять предоставляется только при наличии сети
от зон прямого преобразования здесь существует только класса не менее С. Это, с одной стороны, облегчает рабо-
один координатор, и регистрация у него бесплатная. Регист- ту – не нужно регистрироваться в RIPE, но с другой стороны,
рацией обратных зон занимается RIPE NCC [11]. Вся инфор- осложняет – для внесения изменений в именование серве-
мация о регистрации обратной зоны приведена в [12]. ра нужно каждый раз связываться с провайдером.
Зачем нужно регистрировать обратную зону? Сервер
верхнего уровня зоны in-addr.arpa должен знать, что для Файловая структура
выполнения запроса обратного преобразования ему сле- Самому BIND, конечно же, все равно, в каком порядке идут
дует обратиться к такому-то серверу, в данном случае к на- записи и как они отформатированы. Это важно только тем,
шему 212.20.5.2. Разумеется, где-либо регистрировать об- кто будет сопровождать зону, особенно, если изменения
ратную зону внутренней подсети не нужно. в нее будут вноситься часто. Здесь я опишу распределе-
Сама запись PTR выглядит очень просто – в поле имя ние зон по файлам так, как это используется в тех зонах,
заносится последняя часть IP-адреса, в поле данные – пол- которые я сопровождаю. Разумеется, это не единствен-
ностью определенное имя прямого преобразования. Обра- ный возможный порядок и, возможно, не лучший. Но это
щаю внимание на последнее – имя, заносимое в поле дан- работает.
ных, должно быть полностью определенным, поскольку за-
писи PTR сами задают связь между IP-адресом и именем, Зоны внешние и внутренние
они не могут получить ниоткуда информацию о том, к ка- BIND 8.x имел один чрезвычайно крупный недостаток –
кой зоне следует отнести не полностью квалифицирован- он не позволял дифференцировать выдаваемую инфор-
ное имя прямого преобразования. мацию в зависимости от каких-либо факторов – приходи-
лось либо показывать лишнее, либо скрывать нужное. Вне-
$ORIGIN 1.87.10.in-addr.arpa шним клиентам совершенно нет никакой необходимости
1 IN PTR tooth1.krokodil.ru.
2 IN PTR tooth2.krokodil.ru. знать о наличии компьютеров внутренней сети, но, пос-
3 IN PTR tooth3.krokodil.ru. кольку разделить информацию не было возможности, лю-
4 IN PTR tooth4.krokodil.ru.
5 IN PTR tooth5.krokodil.ru. бой компьютер мог установить структуру внутренней се-
6 IN PTR tooth6.krokodil.ru. ти посредством запросов DNS. BIND 9.x свободен от это-
го недостатка – он позволяет посредством списков управ-
В приведенном выше примере мы задали обратное пре- ления доступом (Access Control List, АСL) распределить за-
образование для компьютеров внутренней сети. Для сер- просы по «представлениям» (views). Представления могут
вера мы запишем одну строчку (в реальном примере ди- иметь произвольные имена, обычно создается внутреннее
рективы $ORIGIN указывать не надо, они приведены толь- представление «internal», которому удовлетворяют клиенты
ко, чтобы было понятно, о какой зоне идет речь): внутренней подсети, и внешнее представление «extrenal»,
которому удовлетворяют все остальные. Здесь помните,
$ORIGIN 5.20.212.in-addr.arpa что это одна и та же зона, просто показывается она по-раз-
2 IN PTR krokodil.ru
ному – как правило, в файлах внешних зон присутствует
Здесь необходимо отметить, что записи CNAME для за- только та информация, которая необходима внешним кли-
дания множественного обратного соответствия не использу- ентам, – о внешнем сервере, о путях доставки почты и т. д.,
ются, поэтому при запросе «какое имя соответствует адре- а в файлах внутренних зон отражается вся сетевая тополо-
су 212.20.5.2» результатом всегда будет krokodil.ru незави- гия. Кроме того, если сопровождается обратная зона, то не-
симо от количества установленных для него псевдонимов. обходимо точно так же разделить по файлам информацию
Чем будет отличаться случай, когда провайдер выделя- об адресах обратного преобразования.
ет блок 212.20.5.0/31 вместо полноценной подсети? С точ- Итак, вернемся к нашему примеру.
ки зрения формирования всех записей, кроме PTR, ничем. Файловая структура будет следующей. У нас имеется
Процедура создания прямой зоны и ее регистрации не за- прямая зона krokodil.ru и обратная зона 5.20.212.in-addr.arpa.
висит от количества адресов, тем более что для большинс- Кроме того, обязательно должна присутствовать обрат-
тва случаев много адресов и не надо. Однако с точки зре- ная зона зона 0.0.127.in-addr.arpa для обеспечения коррек-
ния записей PTR разница есть. В сторону упрощения. А мо- тного обратного преобразования localhost → 127.0.0.1. Зо-
жет быть, и нет – в зависимости от провайдера. И заклю- на эта нужна для того, чтобы BIND не пытался запраши-
чается она в том, что записи: вать корневые сервера о самом себе, что происходит, ког-
да 127.0.0.1 указывает на «localhost.» Запись прямого пре-
gate.krokodil.ru. IN A 212.20.5.1 образования 127.0.0.1 → localhost.krokodil.ru будет занесена
krokodil.ru. IN A 212.20.5.2
в файл прямого преобразования внутренней зоны. Для то-

44
сети
го чтобы не загружать сеть передачей бесполезных данных, tooth2 IN A 10.87.1.2
tooth3 IN A 10.87.1.3
для внешних и внутренних зон используются разные запи- tooth4 IN A 10.87.1.4
си SOA – записи во внешних зонах меняются весьма редко, tooth5 IN A 10.87.1.5
tooth6 IN A 10.87.1.6
а во внутренних довольно часто. Следовательно, мы име-
ем следующие файлы:
 localhost.rev – файл зоны обратного преобразования Файл direct-krokodil-ru.ext:
0.0.127.in-addr.arpa. Этот файл существует только для
внутреннего представления. $INCLUDE /etc/namedb/krokodil-ru-ext.soa
krokodil.ru. IN A 212.20.5.2
 zone212.rev – файл зоны обратного преобразования IN MX 10 krokodil.ru.
5.20.212.in-addr.arpa. IN MX 50 behemot.ru.
 zone10.rev – файл внутренней зоны обратного преоб- www IN CNAME krokodil.ru.
разования 1.87.10.in-addr.arpa. mail IN CNAME krokodil.ru.
ftp IN CNAME krokodil.ru.
 direct-krokodil-ru.int – файл внутренней зоны прямого
преобразования krokodil.ru. gate IN A 212.20.5.1
 direct-krokodil-ru.ext – файл внешней зоны прямого
преобразования krokodil.ru. Файл krokodil-ru-int.soa:
 krokodil-ru-int.soa – файл с записями SOA и NS для
внутренних зон. @ IN SOA krokodil.ru. hostmaster.krokodil.ru. (
2006051202 ; Serial number
 krokodil-ru-ext.soa – файл с записями SOA и NS для 10800 ; Refresh every 3 hours
внешних зон. 3600 ; Retry every hour
1728000 ; Expire every 20 days
172800 ); Minimum 2 days
Несмотря на обширный список, файлы достаточно ко- ;
IN NS krokodil.ru.
роткие, поэтому приводятся здесь полностью, за исключе-
нием комментариев. Файл krokodil-ru-ext.soa:
Сделаем одно замечание относительно имени localhost.
RFC 1912 специально упоминает настройку файлов c раз- $TTL 172800
@ IN SOA korkodil.ru. hostmaster.krokodil.ru. (
решением имени 127.0.0.1 и localhost. В нашем приме- 2005122001 ; Serial number
ре зона localhost соответствует RFC 1912, хотя в жизни 10800 ; Refresh every 3 hours
3600 ; Retry every hour
вполне можно встретить разрешение имени 127.0.0.1 → 1728000 ; Expire every 20 days
localhost.domain.tld и соответствующее ему обратное раз- 172800 ); Minimum 2 days
;
решение. IN NS krokodil.ru.
Файл localhost.rev. Использует одну запись SOA вместе IN NS ns4.nic.ru.
с внутренней зоной обратного преобразования:

$INCLUDE /etc/namedb/krokodil-ru-int.soa Заключение


1 IN PTR localhost.
Как создать, настроить и запустить DNS-сервер для неболь-
Файл zone212.rev: шого предприятия? На самом деле не так сложно, как ка-
жется изначально, – достаточно пройти этот путь один раз,
$INCLUDE /etc/namedb/krokodil-ru-ext.soa дальнейшие действия будут идти «на автомате».
1 IN PTR gate.krokodil.ru.
2 IN PTR krokodil.ru.
Ссылки и литература:
Файл zone10.rev: 1. ftp://ftp.rfc-editor.org/in-notes/rfc920.txt
2. http://www.iana.org/domain-names.htm.
$INCLUDE /etc/namedb/krokodil-ru-int.soa 3. http://www.iana.org/gtld/gtld.htm.
1 IN PTR tooth1.krokodil.ru.
2 IN PTR tooth2.krokodil.ru. 4. http://www.verisign.com/information-services/index.html.
3 IN PTR tooth3.krokodil.ru. 5. ftp://ftp.rfc-editor.org/in-notes/rfc2146.txt.
4 IN PTR tooth4.krokodil.ru.
5 IN PTR tooth5.krokodil.ru. 6. http://www.iana.org/cctld/cctld-whois.htm.
6 IN PTR tooth6.krokodil.ru. 7. http://www.icann.org/announcements/announcement-10may06.htm.
8. http://www.nic.ru.
Файл direct-krokodil-ru.int: 9. http://www.icann.org/tlds/agreements/tel.
10. http://www.isc.org.
$INCLUDE /etc/namedb/krokodil-ru-int.soa 11. http://www.ripe.net.
krokodil.ru. IN A 10.87.1.254
IN MX 10 krokodil.ru. 12. http://www.ripe.net/rs/reverse/rdns-project/index.html.
www IN CNAME krokodil.ru. 13. Немет Э., Снайдер Г., Сибасс С., Хейн Т.Р. UNIX: руководс-
mail IN CNAME krokodil.ru.
proxy IN CNAME krokodil.ru. тво системного администратора. Для профессионалов/Пер.
ftp IN CNAME krokodil.ru. с англ. – Спб.:Питер; К.: Издательская группа BHV, 2002 г. –
ns IN CNAME krokodil.ru.
928 с.: ил.
localhost. IN A 127.0.0.1 14. Cricket Liu, Paul Albitz, DNS and BIND, Third Edition, 1998 (изд-
tooth1 IN A 10.87.1.1 во O’Reilly, ISBN 1-56592-512-2).

№6, июнь 2006 45


web

Технология AJAX:
как насчет безопасности?

Сергей Яремчук
История развития IT-индустрии показывает, что появление новых технологий практически
всегда приводит к понижению уровня безопасности. Так было всегда. Когда мэйнфреймы
стали объединяться в сеть, началось развитие клиент-серверных приложений – всё это
породило специфические проблемы и фактически обесценило старую систему безопасности.
И вот сегодня новая ступень – AJAX.

О
дин-единственный объект Java вого адреса другой. В старых системах этом, но и сделать, собственно, ниче-
Script XMLHttpRequest изменил у него всегда был бы шанс исправиться, го не сможет. То есть фактически тех-
порядок взаимодействия поль- теперь его, увы, уже нет. И в итоге про- нология AJAX позволяет контролиро-
зователей с сервером. Если ранее для вайдерский почтовый адрес уже висит вать действия пользователя, а раз та-
того, чтобы отправить данные, необ- на каком-либо форуме и через некото- кая возможность есть, то я сомневаюсь,
ходимо было нажимать кнопку, под- рое время попадет в базу данных спа- чтобы ею никто не воспользовался.
тверждая действие, то теперь это бу- меров. Возможно, это не самое страш- Но это еще не все. Пользователи
дет сделано автоматически. Стоит за- ное, что может произойти, но можно, обычно бывают более внимательны-
полнить поле, и браузер уже отправля- например, представить ситуацию и по- ми при первоначальной загрузке стра-
ет данные серверу, пользователь при хуже. Зашли на сайт, начали заполнять ницы, когда обычно выполняется код
этом не участвует. Удобство налицо, поля, ввели номер кредитной карточки, страницы, контролируются сообще-
например, если в поисковике по мере а затем сам сайт показался подозри- ния межсетевого экрана, подозри-
ввода параметров поиска будут выво- тельным, а ничего уже не изменишь. тельные системные события и прочее.
диться подходящие страницы, то таким Или, как вариант, по ошибке был вве- Но теперь ситуация изменяется в кор-
образом можно регулировать парамет- ден логин и пароль не к тому сайту, учи- не. Все дело в том, что теперь любой
ры запроса на лету, добившись резуль- тывая, что большинство пользователей код может быть выполнен и после за-
тата в меньшее время. Или, например, не утруждают себя многочисленны- грузки страницы. Например, рассмот-
как в Gmail, можно на лету проверять ми комбинациями логин/пароль, мож- рим такой код:
правописание. При этом веб-приложе- но получить данные для доступа сов-
ние фактически ведет себя аналогич- сем к другому ресурсу. При этом вла- xmlReq.onreadystatechange =
{
но настольному. дельцы веб-сайтов могут собирать ин- if ( xmlReq.readyState == 4 )
формацию о привычках пользователя. {
eval ( xmlReq.responseText );
Безопасность клиента Фактически каждое нажатие клавиши, }
Все вроде бы хорошо, удобство налицо, каждое движение мыши, щелчок, пау- }
но представьте, что при вводе произош- за при чтении информации могут быть
ла ошибка, например, пользователь перехвачены и отправлены на веб-сер- Такой сценарий выполнит JavaScript-
механически ввел вместо одного почто- вер, и пользователь может и не знать об код, содержащийся в ответе сервера,

46
web
т.е. код, полученный уже после загруз-
ки запрошенного документа. Самое
простое, для чего можно использовать
такую конструкцию, – это загрузка бан-
неров, которые можно теперь подгру-
жать постоянно без перезагрузки ос-
новной страницы. Кстати, интерес-
ная проблема получается: раз в AJAX-
приложениях нет страниц как таковых,
то каким же образом пользователю бу-
дут показываться баннеры? Решить ее
очень просто, например: менять по тай-
меру, по щелчкам или движению мыши,
нажатию клавиш. Но если попадется
недобросовестный веб-мастер, поже-
лавший накрутить счетчики, то поль-
зователь может заплатить за удобс-
тво лишним трафиком.
И самое печальное, что теперь,
проанализировав исходный код доку-
мента, нельзя до конца быть уверен- Рисунок 1. При помощи FireBug можно просматривать AJAX-запросы
ным в лояльности того или иного сер- дут придерживаться рекомендаций проса либо самому составить запрос,
виса. И все это на фоне повышения по- WWWC, и некоторая часть пользовате- основываясь на анализе исходного ко-
пулярности атак, направленных на уяз- лей все равно будет использовать ста- да и ответов сервера. Если во время
вимости в клиентских приложениях, рые версии браузеров, поэтому улуч- своей работы сервер не будет дополни-
в частности в веб-браузерах. Как бы шений здесь в ближайшем будущем тельно подстраховываться и контроли-
то ни было, именно на безопасность не предвидится. ровать поступающие данные на пред-
клиентов при использовании техноло- мет их принадлежности конкретно-
гии AJAX обращают внимание много- А что сервер? му пользователю, это может привес-
численные эксперты. По сообщениям специалистов, зани- ти к утечке конфиденциальных дан-
мающихся безопасностью, сегодня ных. Одним из самых простых мето-
Ошибки при приблизительно 20 процентов уязви- дов управления разрешениями являет-
программировании мостей приходятся именно на веб-при- ся использование cookies. Когда объ-
AJAX-технология относительно моло- ложения. Отмечается, что очень ред- ект XMLHttpRequest создает запрос,
дая, и хотя уже сегодня можно най- кое приложение может похвастаться он возвращает все активные в насто-
ти тысячи примеров, разработчикам всего одной уязвимостью, большая ящее время для этого сайта сеансо-
все равно приходится самостоятель- же часть содержит несколько уязви- вые cookies. Но это может быть выхо-
но писать код как для сервера, так и мых мест. При этом большая часть дом не для каждой ситуации. Напри-
для клиента практически в каждомом уязвимостей (около 95%) приходится мер, запросы могут быть отправлены
случае, и к тому же на разных языках. на cross-site scripting (XSS), т.е. подста- не тому серверу, на котором зарегис-
Это приводит к многочисленным ошиб- новка чужого кода в текущий сеанс. Ти- трировался пользователь, а на другой
кам в реализации, часть которых об- пичные эксплоиты могут включать: мо- сервер, где привилегии никак не под-
наруживается только при эксплуата- дификацию страниц (дефейс), переад- тверждены. Если ранее браузер прос-
ции приложения. К тому же не стоит ресацию (например, для форм регис- то отправлял ему форму, то теперь
забывать, что эту ситуацию усугубля- трации) и взаимодействие с сайтом происходит двусторонний обмен дан-
ют различия в поведении веб-браузе- от имени другого пользователя. ными (хотя некоторые браузеры могут
ров, наличие плагинов (некоторые от- Нас в контексте статьи интересу- блокировать такое поведение), и са-
ладчики, о которых рассказано чуть ет последний пункт. Хотя стоит отме- мое главное, что второй ресурс может
ниже, перехватывают действие и под- тить, что при помощи XSS можно смо- не иметь активных cookies.
меняют своим) и прочее. Это приводит делировать любую ситуацию, кото- В некоторых скриптах, встречаю-
к увеличению кода, а значит, – к ве- рую возможно проделать при помо- щихся на форумах, приходящие дан-
роятному появлению ошибок в конк- щи JavaScript. Теперь представим та- ные персонализируются на основа-
ретной реализации. На сегодняшний кую ситуацию. Пользователь запол- нии некоего идентификатора пользо-
день стандарт XMLHttpReques еще не няет некую форму, AJAX отсылает за- вателя (ID) или токена. Токен включен
принят, 5 апреля 2006 года World Wide прос, сервер обрабатывает отправ- как заголовок в запросах, сделанных
Web Consortium опубликовал всего ленные данные и возвращает ответ. объектом XMLHttpRequest. Он должен
лишь его черновой вариант [13]. К то- Но что, если злоумышленник имеет вести себя аналогично сеансовому то-
му же всегда найдутся особенные бра- возможность перехватить данные се- кену и обеспечивать доступ к защи-
узеры, разработчики которых не бу- анса и скорректировать параметры за- щенному ресурсу. Но злоумышленни-

№6, июнь 2006 47


web
ку ничего не стоит сгенерировать за- жена уязвимость, позволяющая про-  Проверьте возможность SQL-инъ-
прос, указав перехваченный при по- вести XXS-атаку [5]. екции.
мощи сниффера идентификатор, ли- Небольшой объем данных, обычно  Проверьте возможность JavaScript-
бо просто попытаться его подобрать пересылаемый при помощи AJAX, час- инъекции.
и получить в результате доступ к ин- то приводит к тому, что им могут просто  Храните логику работы на севере.
формации. Если все же использование не придать значения, забывая о их цен-  Не думайте, что каждый запрос ре-
других механизмов неудобно либо на- ности. И если ранее всю форму полно- альный.
кладно, то постарайтесь избегать пос- стью направили бы через SSL, то те-  Проверяйте данные с подтвержде-
ледовательных ID, а сам ID сделать ме- перь, возможно, с этим возиться ник- нием.
нее предсказуемым. Этим вы хотя бы то не будет, особенно на фоне того, что  Проверьте правильность информа-
затрудните его подбор. большая часть передаваемых и прини- ции в заголовке запроса.
Самое интересное, что никаких маемых данных действительно не име-
особых инструментов для перехва- ет большой ценности. Но стоит отме- И тестирование, тестирование
та не надо, достаточно иметь под ру- тить, что уже появились наработки [11] и еще раз тестирование. Успехов.
кой веб-браузер. Тот же Firefox позво- по шифрованию информации, переда-
ляет просмотреть исходный код доку- ваемой при помощи AJAX. Ссылки, литература:
мента, а, использовав плагины FireBug Кроме того, бездумное использо- 1. Using the XMLHttpRequest Object and
(рис. 1) и Greasemonkey, можно не толь- вание AJAX может привести к возрас- AJAX to Spy On You – http://www.devx.
ко просматривать исходный код полу- танию нагрузки на сервер. Так, если com/webdev/Article/28861.
ченных документов, но и редактиро- раньше форма отсылалась на сервер 2. Security in an AJAX World – http://www.
вать их, регистрировать AJAX-запросы всего один раз после заполнения всех whirlycott.com/phil/2005/04/15/security-
и проверять ответы сервера. Причем параметров, то теперь запросы посту- in-an-ajax-world.
это далеко не единственные плагины пают постоянно. И если скрипт написан 3. Архив проекта ModSecurity – http://www.
к этому веб-браузеру, предназначен- неправильно, с ошибками или пользо- modsecurity.org/arhive.
ные для отладки веб-приложений. ватель повел себя не так, как задумы- 4. «XMLHttpRequest allows dangerous
Наверное, самой большой ошибкой вал разработчик (а они обычно поче- request headers to be set», Bugzilla bug
при использовании технологии AJAX му-то так всегда и поступают), то сер- 302263 – https://bugzilla.mozilla.org/
является недостаточный контроль над вер может быть завален запросами. show_bug.cgi?id=302263.
вводимыми данными, возможно, из-за Без тщательного планирования и тес- 5. Описание уязвимости в AJAX Spell
незначительного объема обрабатывае- тирования написанных приложений Checker – http://www.securityfocus.com/
мой информации. Это не может не при- здесь явно не обойтись. bid/13986/references, http://secunia.
водить к появлению характерных уяз- com/15737/, http://www.security.nnov.ru/
вимостей. И хотя на сегодняшний мо- Что имеем? Jdocument503.html?l=RU.
мент в AJAX найденные ошибки мож- Новая архитектура предполагает и до- 6. Описание уязвимости в CPAINT – http://
но пересчитать по пальцам, но они уже селе неизвестные проблемы. Особен- secunia.com/advisories/16462.
есть и, несомненно, это только начало. ное беспокойство вызывает возмож- 7. Домашняя страница CPAINT – http://
Самое печальное, что подобные ошиб- ность нападения на клиентские сис- sourceforge.net/projects/cpaint.
ки встречаются не только в любитель- темы, пользователи которых, как пра- 8. Домашняя страница PAJAX – http://www.
ских скриптах, но и в инструментах вило, подготовлены хуже и защищен- auberger.com/pajax.
разработчиков. ность систем ниже. Можно даже пред- 9. Плагин Greasemonkey – http://f tp.
Например, CPAINT (Cross-Platform положить появление в недалеком буду- mozilla.org/pub/mozilla.org/extensions/
Asynchronous INterface Toolkit) [7], ко- щем дополнительных настроек в веб- greasemonkey/greasemonkey- 0.6.4-
торый представляет собой пакет AJAX- браузере, при помощи которых пользо- fx.xpi.
разработчика, распространяемый ватель сможет контролировать AJAX- 10. Плагин FireBug – http://releases.mozilla.
по лицензии GNU GPL и поддержи- запросы, как это сегодня делается для org/pub/mozilla.org/extensions/firebug/
вающий работу с несколькими язы- cookies. Но как бы то ни было, не смот- firebug-0.3.2-fx+fl.xpi.
ками. В нем обнаружена уязвимость, ря на это, технология AJAX уже приме- 11. Pro of of C o n c e pt : B rows e r- B as e d
позволяющая злоумышленнику вы- няется на тысячах серверов и их коли- Field Encr yption With Blowfish Via
полнить произвольные ASP/PHP-ко- чество постоянно растет. Отказаться от Ajax – http://smokey.rhs.com/web/blog/
манды. Аналогичная уязвимость была нее вероятно уже не нельзя, да и глупо. PowerOfTheSchwartz.nsf/plinks/RSCZ-
найдена и в PAJAX [8], который пред- Один из соавторов книги «Ajax in Action» 6CATX6.
ставляет собой структуру, облегчаю- Эрик Паскарелло (Eric Pascarello) в ин- 12. Родионов В. AJAX: заработавший
щую создание отдаленных PHP-объ- тервью SearchWebServices.com дал Javascript. – Журнал «Системный ад-
ектов в JavaScript. Для связи между следующие рекомендации для разра- министратор», № 12, 2005 г. – 66-69 с.
объектами JavaScript, которые выпол- ботчиков AJAX которых и стоит при- 13. Ч е р н о в о й в а р и а н т к л а с с а
няются в браузере, и реализации их держиваться: XMLHttpRequest, описывающий его
PHP-аналога на сервере использует-  Если используется аутентификация интерфейс и поведение, – http://www.
ся AJAX. Или, например, AJAX Spell пользователя, убедитесь в провер- w3.org/TR/2006/WD-XMLHttpRequest-
Checker (ajax-spell), в котором обнару- ке на странице запроса. 20060405.

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

Настраиваем безопасный роутер


на базе FreeBSD

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

Р
ечь пойдет о том, как увеличить полагаю, что компьютер имеет доступ тожить. Это правило работает везде
безопасность FreeBSD, работаю- в Интернет с внешним IP-адресом. и всегда. Возвращаясь к безопаснос-
щей в качестве маршрутизатора Говоря о безопасности в общем ти операционных систем, можно гово-
между локальной сетью и Интернетом. (не только о компьютерной), мы неиз- рить об их защите очень долго, но все
Так как мы будем настраивать роутер, менно возвращаемся к одному очень вернется опять к этому правилу: опе-
то о большом количестве пользовате- простому и действенному правилу: все, рационную систему создал человек, и,
лей на нем речи не идет. Также я пред- что человек создал, он может и унич- следовательно, всегда найдется дру-

50
безопаснсоть
гой человек, который сможет обойти ее защиту, какой бы системы. Если у кого-то взломали FreeBSD, то это не гово-
мощной она ни была. рит о том, что вся система FreeBSD уязвима, это говорит
только о том, что ее неправильно настроили.
Безопасность
Безопасность системы в целом складывается из трех фак- Как настроить FreeBSD
торов: Итак, переходим от теории к практике. Настраивать систему
 Безопасность ядра. мы будем также по трем направлениям, описанным ранее.
 Безопасность установленного в ней ПО.
 Человеческий фактор. Ядро
Итак, у вас установлена FreeBSD со стандартным ядром
Рассмотрим каждый из этих факторов подробно. GENERIC, которое включает в себя поддержку избыточно-
го количества устройств и функций. Это достаточно прос-
Безопасность ядра то объяснить: разработчик не знает, какая у вас система,
Большинство взломов происходит из-за ошибок в ядре. Яд- какие устройства и т. д., а стандартное ядро практически
ро для операционной системы – это основа: оно управляет всегда позволяет загрузиться на любом компьютере. Кон-
всеми операциями, производимыми в компьютере, и, сле- фигурирование ядра – задача довольно тривиальная. Тре-
довательно, без ядра работа системы невозможна, в част- буется совсем немного времени, чтобы «выкинуть» из кон-
ности, из-за отсутствия контроля за входными значениями фигурационного файла ядра все, что не нужно, потом, до-
функций. Функции работают на уровне ядра и как следс- бавив дополнительные возможности, перекомпилировать
твие имеют абсолютные привилегии, поэтому некоторые его. Зачем пересобирать ядро:
хакеры усердно ищут уязвимости для повышения приви-  Ядро будет пытаться определить только те устройства,
легий в системе. которые установлены в компьютере, поэтому загрузка
Так как для семейства UNIX-систем ядра распространя- системы будет происходить намного быстрее.
ются в открытом исходном коде, то для нахождения уязви-  Размер ядра уменьшается, и оперативная память осво-
мостей достаточно знать язык C. бождается.
Человек, нашедший уязвимость, может сообщить о ней  Увеличивается безопасность благодаря отключению не-
разработчику или использовать уязвимость для взлома. нужных функций.
В первом случае разработчик, как правило, в кратчай-
шие сроки устранит уязвимость и выложит обновления для Отключение поддержки ненужных устройств я ос-
ядра. Вам же как системному администратору достаточно тавляю на ваше усмотрение, подробности смотрите на
вовремя обновить систему (ядро). официальном сайте FreeBSD (http://www.freebsd.org/doc/
Второй вариант происходит достаточно редко и грозит ru_RU.KOI8-R/books/handbook/kernelconfig-config.html). Сра-
взломом многих серверов. Опасен он тем, что вы думаете, зу добавляем в конфигурационный файл опции для firewall:
что система надежна защищена, хотя на самом деле это не я предпочитаю использовать в качестве firewall pf, поэто-
так. Рано или поздно, разработчики узнают о существова- му речь пойдет о нем. Приступаем к конфигурированию
нии уязвимости и все возвращается к первому случаю. и компиляции ядра (комментарии начинаются с «//», их пи-
сать не нужно!):
Безопасность ПО
Уязвимости в программном обеспечении находят гораздо # cd /usr/src/sys/i386/conf/
# cp GENERIC new
чаще, нежели в самой системе. Если программа достаточ- # cat >> new
но популярна, то в ней будут стараться найти уязвимости,
// Включаем поддержку firewall
чтобы получить возможность взломать достаточно большое device pf
количество серверов. Человек, который нашел уязвимость, device pflog
device pfsync
может пойти двумя путями, которые аналогичны описанным
ранее. Автор программы рано или поздно узнает об уязви- // Запрещает перезагрузку клавишами <ctrl+ alt +del>
options SC_DISABLE_REBOOT
мости и выпустит обновление к программе. А ваша зада-
ча – всего лишь вовремя обновить ПО. // Включаем поддержку ALTQ для шейпинга пакетов
options ALTQ

Человеческий фактор Конфигурируем ядро:


Эта составляющая является главной для безопасности
системы в целом! Ни одна система не может «похвастать- # config new
ся» безопасностью без дополнительной настройки. Все ОС Kernel build directory is ../compile/new
придется аккуратно настроить перед тем, как они смогли Don’t forget to do ``make cleandepend; make depend’’

бы противостоять хакерским атакам.


На основании вышеизложенного понятно, что от грамот- Компилируем и устанавливаем:
ной настройки сервера и его поддержки зависит практичес-
ки все, а выполнить эти требования может только компе- # cd ../compile/new && make cleandepend && make depend ↵
&& make && make install
тентный специалист. Следовательно, говоря о безопаснос-
ти ОС, мы должны сравнивать настройки систем, а не сами Перезагружаемся:

№6, июнь 2006 51


безопасность
# reboot Для начала нужно отредактировать /etc/login.conf, в кото-
ром описываются классы пользователей, заменив:
Должно быть загружено новое ядро, если этого не про-
изошло, то старое лежит в /boot/kernel.old. :passwd_format=md5:\
У меня после удаления всех ненужных опция ядро умень-
шилось более чем в два раза. на

Механизм sysctl :passwd_format=blf:\


Это достаточно мощное средство управления системой:
с помощью sysctl можно смотреть и изменять параметры Теперь можно создать базу:
системы. Так как наша машина должна выполнять роль роу-
тера, то желательно изменить следующие значения: # cap_mkdb /etc/login.conf

// Включаем проброс пакетов через интерфейсы Для того чтобы пароли пользователей теперь хеши-
# sysctl net.inet.ip.forwarding=1
ровались с помощью blowfish, нужно отредактировать
// Генерируем случайный идентификатор IP-пакетов /etc/auth.conf, заменив:
# sysctl net.inet.ip.random_id

// Ограничиваем количество ICMP-ответов crypt_default=md5


# sysctl net.inet.icmp.icmplim=10

// Отключаем реагирование на попытку обратиться на


// к закрытым портам
# sysctl net.inet.tcp.blackhole=2
# sysctl net.inet.udp.blackhole=1 crypt_default=blf

// Запрещаем пользователям смотреть чужие процессы


# sysctl security.bsd.see_other_gids=0 После этого в /etc/master.passwd все пароли будут начи-
# sysctl security.bsd.see_other_uids=0
наться с $2, что указывает системе на использование хешей
Это минимум, который необходимо изменить. Чтобы по алгоритму blf.
после перезагрузки все настройки остались прежними, вне- Теперь пользователям, которым не разрешено иметь ин-
сите изменения в /etc/sysctl.conf. терактивный шелл, в систему нужно поставить:
Есть еще одна очень интересная переменная, которую
я хотел бы описать, – это kern.securelevel. Securelevel может shell: /sbin/nologin
принимать значения от -1 до 3. Давайте рассмотрим пос-
ледние три случая, так как -1 и 0 являются небезопасными Этот шелл дает два преимущества:
режимами работы и ставятся по умолчанию:  При попытке регистрации пользователя в системе
 1. Безопасный режим. В этом режиме вы не може- /sbin/nologin возращает ответ о том, что регистрация
те снимать модификационные флаги с файлов (да- пользователя в системе невозможна.
же от имени суперпользователя – root), смонтирован-  Попытка входа записывается в логи.
ные дисковые устройства, а также /dev/mem /dev/kmem
не могут быть открыты для записи. Также нельзя под- После этого нужно разобраться в правах к некоторым
гружать/выгружать модули ядра. системным файлам и директориям:
 2. Повышенная безопасность. В дополнение к преды-
дущим требованиям запрещена прямая запись на дис- # chmod 0600 /etc/login.conf /etc/syslog.conf ↵
/etc/newsyslog.conf /etc/rc.conf /etc/hosts.allow
ки, независимо от того, смонтированы они или нет. # chmod 0700 /root/
 3. Режим безопасности сети. Режим повышенной бе-
зопасности плюс нельзя изменять правила firewall.
Настройка программного обеспечения
Какой режим поставить – выбирать вам (у меня стоит Для начала обновим систему. В первую очередь – исход-
второй). Вам не нужно перекомпилировать код ядра каж- ники, потом – коллекцию портов. Для обновления системы
дый раз для добавления новых функций, достаточно под- будем использовать cvsup. Редактируем supfile:
грузить необходимый модуль ядра. Например, для работы
стека bluetooth используется модуль ng_ubt. При захвате *default host=cvsup5.ru.FreeBSD.org
*default base=/usr
системы хакер скорее всего попытается подгрузить новый *default prefix=/usr
модуль для того, чтобы скрыть свое нахождение в системе, *default release=cvs tag=RELENG_6_0
*default delete use-rel-suffix
но если устновить второй или третий режим безопасности,
то для загрузки модуля придется перезагружать систему, *default compress
что вряд ли не останется незамеченным. src-base
src-bin
src-contrib
Настройка безопасности системы src-etc
Давайте поменяем хеширование паролей md5, которое src-gnu
src-include
стоит по умолчанию, на более стойкое к взломам blowfish.

52
безопаснсоть
src-kerberos5 to $prov_if port www -> 172.16.1.3 port www
src-kerberosIV # Включаем прозрачное проксирование
src-lib rdr on $int_if proto tcp from $internal_net ↵
src-libexec to any port 80 -> 172.16.0.1 port 3128
src-release
src-sbin
src-share # in packs on prov_if
src-sys
src-tools # Блокируем все входящие соединения
src-usrbin block in on $prov_if from any to any
src-usrsbin # Разрешаем пинги
src-crypto pass in on $prov_if inet proto icmp from any ↵
src-secure to $prov_if icmp-type 8 keep state
src-sys-crypto # Разрешаем соединяться с ssh-сервером
pass in on $prov_if inet proto tcp from any ↵
Таг RELENG_6_0 используется для исправлений исход- to $prov_if port 22 keep state
# Доступ к WWW
ного кода системы для увеличения безопасности. Теперь pass in on $prov_if inet proto tcp from any ↵
непосредственно запускаем cvsup: to $prov_if port www keep state
# Разрешаем соединяться с нашим почтовым сервером
pass in on $prov_if inet proto tcp from any ↵
# cvsup -g -L 2 /usr/local/etc/supfile to $prov_if port 25 keep state

Обновления можно взять с cvsup5.ru.FreeBSD.org (па- # out packs on prov_if


раметр host в supfile), причем скачиваются только обнов- # Блокируем все входящие соединения
ленные файлы, а не все целиком, отсюда такое малень- block out on $prov_if from $prov_if to any
# Разрешаем пинги от нас
кое потребление трафика. Точно сказать нельзя, сколько pass out on $prov_if inet proto icmp from ↵
придется скачать, все зависит от количества исправлений, $prov_if to any icmp-type 8 keep state
# Разрешаем обращаться на Web
но точно менее 10 Mб. pass out on $prov_if inet proto tcp from ↵
Теперь смотрим, если уязвимость обнаружена в ядре, то $prov_if to any port www keep state
# На ftp
придется его пересобрать. Если в системной утилите, то пе- pass out on $prov_if inet proto tcp from ↵
ресобирать следует только программу. $prov_if to any port ftp keep state
# На ssh
Обновление коллекции портов удобнее делать с помо- pass out on $prov_if inet proto tcp from ↵
щью программы portsnap, которая теперь является частью $prov_if to any port ssh keep state
# Разрешаем запросы к DNS
системы. Пользоваться ей намного проще, чем cvsup: pass out on $prov_if inet proto udp from ↵
При первом запуске: $prov_if to any port 53 keep state

# portsnap fetch # in packs on int_if


# portsnap extract
# portsnap update # Блокируем все входящие соединения
block in on $int_if from $internal_net to $me
При последующих запусках: pass in on $int_if inet proto tcp from ↵
$internal_net to $me port 22 keep state
# portsnap fetch # Разрешаем локальной сети обращаться к нашему DNS-серверу
# portsnap update pass in on $int_if inet proto udp from ↵
$internal_net to $me port 53 keep state
Portsnap только в первый раз скачивает всю коллек-
цию портов(~38 Mб), потом же качаются только обновлен- # out packs on $int_if
ные файлы. # Запрещаем все исходящие от нас соединения в локальную сеть
block out on $int_if from $me to $internal_net keep state
# Разрешаем пинги от нас
Настройка pf pass out on $int_if inet proto icmp from ↵
На любом компьютере, подключенном к сети, обязательно $me to $internal_net icmp-type 8 keep state
должен стоять firewall. Причем он должен быть корректно
настроен. Я приведу несколько простых правил, которые При составлении правил главная идея такова: запреща-
позволят фильтровать входящие соединения: ем все, а потом разрешаем только то, что нужно.
Теперь переходим к настройке безопасного доступа
prov_if="sk0" к серверу OpenSSH. Раньше терминальный доступ к серве-
int_if="rl0"
internal_net="172.16.0.0/24" ру обычно был предоставлен только telnet-сервером, но его
me="172.16.0.1" сменил безопасный ssh-сервер. Но при настройках по умол-
LAN_to_INT="{ftp,ftp-data,www,https,ssh,smtp,pop3,nntp, ↵ чанию – это хорошая мишень для хакера. Итак, при настрой-
8080,ntp,411,5190}" ке ssh-сервера, мы поступим так: составим два конфигура-
scrub in all ционных файла специально для двух сетей:
# Транслируем все пакеты к smtp-серверам
 локальная сеть;
nat on $prov_if from $internal_net to any port 25 -> $prov_if  Интернет.
# Транслируем все пакеты к pop-серверам
nat on $prov_if from $internal_net to any port 110 -> $prov_if
В локальной сети мы разрешим авторизацию по паро-
# Настраиваем перенаправление всех пакетов, идущих лю, а из Интернета разрешим авторизацию только по клю-
# к www-серверу в DMZ
rdr on $prov_if proto tcp from any ↵ чам, что не позволит подобрать пароль.

№6, июнь 2006 53


безопасность
# sshd_config_1 (Локальная сеть): Так как сервер выполняет роль шлюза, то на нем редко
Port 22 будут меняться системные файлы, следовательно, можно на-
Protocol 2 строить аудит системных файлов. В данной области самой
ListenAddress 172.16.0.1
PermitRootLogin no распространенной из бесплатных систем является tripwire:
PasswordAuthentication yes
MaxStartups 2:90:5 # cd /usr/ports/security/tripwire
AllowGroups ssh # make install clean
Banner /etc/motd
Subsystem sftp /usr/libexec/sftp-server
После установки база файлов начнет создаваться ав-
# sshd_config_2 (Интернет): томатически, желательно посмотреть, каких файлов она
AllowGroups ssh не нашел. После этого редактируем файл политик /usr/local/
Banner /etc/motd etc/tripwire/twpol.txt. Изменять нужно две вещи:
ListenAddress 213.251.193.69
LogLevel VERBOSE  Так как мы хотим получать отчеты по email, то пос-
MaxStartups 2:90:5 ле каждой строки severity нужно дописывать строку:
PasswordAuthentication no
PermitRootLogin no emailto = qw@er.ty.
Port 22  Нужно закомментировать строки с файлами, которых
Protocol 2
Subsystem sftp /usr/libexec/sftp-server у вас в системе нет.
SyslogFacility AUTH
После этого нужно создать файл политик:
Это опять же минимальные настройки, об остальных мож-
но прочитать, например, в руководстве (man sshd_config). # twadmin --create-polfile twpol.txt
Также изменим /etc/motd:
Теперь осталось инициализировать tripwire:
*********************************************************
# tripwire --init
This is a private system!!! All connection attempts are
logged and monitored. All unauthorized connection
attempts will be investigated and
handed over to the proper authorities. Проверку файлов можно осуществлять следующим об-
разом:
*********************************************************

Так как мы указали, что из Интернета можно аутентифи- # tripwire --check


цироваться только по ключам, то придется эти самые клю-
чики сгенерировать: Желательно прописать запуск tripwire в cron.
Теперь установим еще одну полезную утилиту chkrootkit,
$ ssh-keygen -t rsa -b 4096 которая будет проверять наличие известных ей rootkit в сис-
$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
теме:
Теперь нужно «спрятать» id_rsa в надежное место и мож-
но логиниться с помощью этого ключа, предупреждаю, # cd /usr/ports/security/chkrootkit/
# make install clean
что для putty придется генерировать ключи специальной
утилитой – puttygen. Проверить систему можно так:

Отчеты системы # chkrootkit | mail root


Последний фактор – человеческий. Сейчас мы постараем-
ся сделать отчеты о работе системы как можно более под- Таким образом, отчет о проверке по почте придет к ад-
робными. Так как у нас в системе практически все ПО ус- министратору. Также советую прописать эту строку в cron.
тановлено из портов, то было бы неплохо проверять уяз- Единственная проблема, связанная с chkrootkit, заключа-
вимость портов. Для этого будем использовать специаль- ется в том, что программа написана на sh и как следствие
ную утилиту portaudit: может быть «переписана» взломщиком, поэтому желатель-
но добавить проверку chkrootkit в tripwire.
# cd /usr/ports/security/portaudit
# make install clean
Заключение
Настраивать ее не нужно, для проверки установленных Таким способом мы улучшили безопасность системы в не-
пакетов достаточно выполнить: сколько раз:
 Установлен и настроен firewall.
# /usr/local/sbin/portaudit -Fda  Настроен безопасный доступ к системе (OpenSSH).
 Увеличено количество информации, поступаемой
При попытке установить программу из портов portaudit от системы.
проверит и выдаст предупреждение, если данный порт со-
держит уязвимость. Также информация об уязвимостях Остальное дело за вами: следить за уязвимостями, вовре-
в установленном ПО будет включаться в ежедневный от- мя обновлять систему и софт, установленный в ней, следить
чет о безопасности системы. за отчетами безопасности и всегда быть на страже.

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

Пишем систему динамической защиты


ресурсов сети

Андрей Бирюков

Аудит журналов безопасности операционной системы – неотъемлемая часть работы системного


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

56
безопасность
Что собираемся защищать формирующих о попытках несанкционированного доступа
Серверные журналы, проще говоря протоколы, содержат с определенного IP-адреса, по протоколу ssh в iptables до-
в себе информацию о различных событиях, происходящих бавляется строка, блокирующая получение пакетов с дан-
в системе. Например, информацию об ошибках приложе- ного адреса. Список заблокированных IP-адресов автор
ний или о попытках несанкционированного проникновения предлагает передавать в сообщениях syslog.
в сеть. Автоматизация «реакции» на эти сообщения являет- Обратите внимание на то, что перед запуском сценария
ся важным элементом в обеспечении бесперебойного фун- необходимо создать iptables chain Block и поместить теку-
кционирования всей сети. Конечно, каждый администратор, щую конфигурацию iptables в файл /etc/sysconfig/iptables.
придя на работу, первым делом должен проверить прото- Тут следует сразу отметить, что пример сценария (см. лис-
колы своих серверов, не произошло ли что-нибудь в тече- тинг 1) ориентирован на использование в дистрибутивах
ние ночи или за выходные, и в случае необходимости при- Fedora/Red Hat. Для применения с другими дистрибути-
нять соответствующие меры. вами Linux необходимо будет произвести небольшие из-
Однако иногда такая реакция может оказаться запозда- менения.
лой, особенно это касается попыток осуществления несан-
кционированного входа в систему. Если какие-либо ресур- Листинг 1. Сценарий, блокирующий атаки на ssh
сы вашей сети (например, электронная почта, веб-сервер #!/usr/bin/perl -w
или доступ по протоколу SSH) опубликованы в Интернете, use Sys::Syslog; # модуль для работы с syslog
$max=10; # максимально разрешенное число попыток
то вам наверняка приходилось наблюдать записи в протоко-
лах, свидетельствующие о попытке осуществления несанк- # файл журнала, с которым мы и работаем
$watchfile= '/var/log/messages';
ционированного доступа к ресурсам сети. Конечно, это по-
пытки взлома с помощью «грубой силы» (brute force, подбор # путь к iptables (для разных дистрибутивов Linux
# он может различаться)
пароля по словарю), такой способ, как правило, не приносит $iptables= '/sbin/iptables';
результата. Хотя иногда начинающие хакеры с упорством,
# тоже iptables, но после сохранения изменений
достойным лучшего применения, «натравливают» слова- $iptables_save= '/sbin/iptables-save';
ри на учетную запись root.
# исходные значения iptables
Но тут следует заметить, что зачастую наш потенциаль- $iptables_restore= '/sbin/iptables-restore';
ный противник охотится вовсе не за паролем к учетной за-
# файл конфигураций iptables
писи пользователя, а, к примеру, ему необходимо опреде- $cfgfile= '/etc/sysconfig/iptables';
лить существует ли пользователь с таким именем на сер-
open(LFILE, "<$watchfile"); # открываем лог на чтение
вере или нет. Такая информация будет весьма полезна
для спамеров. Ведь на очень многих почтовых серверах %tries=(); # количество попыток для IP
%blocked=(); # уже заблокированных IP
имя пользователя совпадает с именем почтового ящика,
точнее, с той его частью, которая идет до знака @ (напри- # восстанавливаем конфигурацию, это нужно для того,
# чтобы «устаревшие» IP-адреса не оставались запрещенными
мер, user@mydomain.ru), а база корпоративных электрон- `$iptables_restore < $cfgfile`;
ных адресов стоит дороже чем база адресов с бесплатных
# получаем уже заблокированные IP-адреса из iptables
почтовых серверов. Для того чтобы избежать подобного ро- open(IPTPIPE, "$iptables -L -v -n|");
да сканирования, можно просто закрыть соответствующие $blockChain=0;
while (<IPTPIPE>){
порты от использования снаружи. Но в большинстве совре- $blockChain=1 if (/^Chain block \(\d+ references\)$/);
менных компаний сотрудники хотят иметь доступ к своей next unless $blockChain;
last if (/^$/ );
почте из дома или находясь в командировке, поэтому ва- $blocked{$1}=1 if (/(\d+\.\d+\.\d+\.\d+)/);
риант с запретом нам не подходит. }
close IPTPIPE;
Из всего этого делаем вывод, что нам необходимо # преобразуем в строку
средство, которое могло бы обнаруживать и адекватно ре- $blk_ips=join(", ",keys(%blocked));
# отправляем сообщение syslog
агировать на попытки подбора логинов/паролей к ресур- syslog('warning',"sshwatch.pl started. ↵
сам нашей сети. currently blocked ip's are: $blk_ips");
Существует масса решений, как программных, так и ап- # просматриваем /var/log/messages
паратных, получивших название Intrusion Detection System, while (1) {
for ($curpos = tell(LFILE); $_ = <LFILE>; ↵
IDS, системы обнаружения вторжения, которые позволяют $curpos = tell(LFILE)) {
выполнить данную задачу. Но зачастую они либо слишком # искомая строка
if (/sshd\[\d+\]: Failed password for .+ ↵
громоздки в управлении, либо слишком дорого стоят. from \D+(\d+\.\d+\.\d+\.\d+)/) {
Попробуем самостоятельно разработать простейшую $ip=$1;
next if defined($blocked{$ip});
IDS. В качестве инструментов будем использовать сцена- $tries{$ip}+=1; #увеличиваем счетчик
рии Perl под ОС Linux. if ($tries{$ip} eq $max){
# если превышено максимальное значение,
# пакеты с данного адреса должны быть заблокированы
Как собираемся защищать `$iptables -I block -s $ip -j DROP ; ↵
$iptables_save > $cfgfile`;
В качестве основы для реализации я использовал сцена- $blocked{$ip}=1;
рий, находящийся на cpan.org [1]. Идея довольно проста: че- # снова сообщение syslog
syslog('warning', "IP $ip has been blocked !");
рез определенные промежутки времени сканируется файл }
/var/log/messages. В случае обнаружения сообщений, ин- }

№6, июнь 2006 57


безопасность
} рой создаются правила фильтрации. Для запрета доступа
sleep 1;
seek(LFILE, $curpos, 0); у ipfw существуют директивы deny и reject.
} Директива deny сводит к минимуму риск определенных
атак типа «отказ в обслуживании» и усложняет взломщи-
Как видите, сценарий довольно прост, мы всего лишь ку задачу сканирования системы. В то же время директи-
отслеживаем нужные строки в файле и реагируем на них ва reject позволяет скрыть факт наличия брандмауэра, так
заданным образом, блокируя доступ к сети для IP-адреса как она заставляет систему вернуть отправителю сообще-
атакующего. ние о том, что хост или порт недоступен (как если бы мар-
шрутизатор не смог найти хост или на нем отсутствует при-
Расширяем функциональность ложение, контролирующее заданный порт).
Попробуем расширить функциональность сценария, напи- В нашем случае предпочтительнее будет указать ди-
санного нашим коллегой. рективу deny, потому что она заставляет систему игнори-
Во-первых, допустим, у нас открыты наружу не только ровать пакет, чтобы отправитель думал, будто пакет по-
ssh, но и, к примеру, POP3. терялся или хост-адресат выключен. Я бы еще добавил,
И во-вторых, рассмотрим различные варианты пос- что такая реакция сильно замедляет автоматическое ска-
троения сети: как с использованием демилитаризован- нирование.
ной зоны (DMZ), так и без нее. Суть DMZ заключается Например, команда, добавляющая правило, которое
в том, что она не входит непосредственно ни во внутрен- запрещает доступ к нашему серверу 172.29.1.1 для атаку-
нюю, ни во внешнюю сеть и доступ к ней может осущест- ющего хоста 172.29.1.19, будет выглядеть следующим об-
вляться только по заранее заданным правилам межсете- разом:
вого экрана. В DMZ нет пользователей – там располага-
ются только серверы. Демилитаризованная зона, как пра- ipfw add deny ip from 172.29.1.19 to 172.29.1.1
вило, служит для предотвращения доступа из внешней се-
ти к хостам внутренней сети за счет выноса из локальной В отсутствии явно указанного индекса (положения пра-
сети в особую зону всех сервисов, требующих доступа из- вила в списке), который присваивается каждому правилу,
вне. Фактически получается, что эта зона будет являться он будет присвоен автоматически, причем значение этого
отдельной подсетью с публичными адресами, защищен- индекса будет на 100 больше чем номер самого последне-
ной (или отделенной) от публичных и корпоративных се- го правила, за исключением правила по умолчанию (име-
тей межсетевыми экранами. ет номер 65535).
При попытке получения доступа к почтовому ящику Не забудьте проверить список настроек ipfw с помощью
по протоколу POP3, в случае неверного указания логина/ команды «ipfw list». Это необходимо для того, чтобы ваше
пароля получаем сообщение: запрещающее правило не лишилось смысла из-за стоя-
щего перед ним уже есть разрешающего. В случае если
Apr 22 21:25:24 MexBSD qpopper[782]: [AUTH] Failed attempted
login to admin from host (TestBSD) 172.29.1.19
у вас уже используются разрешающие правила для дан-
ного трафика, проследите за тем, чтобы запрет оказался
Здесь в качестве POP3-демона использовался qpopper, выше по списку.
но и для других серверов вид сообщения будет аналоги- Можно, конечно, ограничиться только запретом tcp,
чен. но лучше, чтобы все выглядело, как будто сервер не просто
По поводу топологии сети будем предполагать, что у нас недоступен, а выключен. Такого результата легче добить-
имеется единственный сервер и необходимо блокировать ся, запретив любой IP-трафик. Вообще утилита ipfw обла-
пакеты, непосредственно приходящие на него. дает довольно большими возможностями, подробно озна-
Также сценарий, предназначенный для защиты от подбо- комиться с которыми можно в справочнике [2].
ра протокола POP3, применялся на FreeBSD, поэтому вмес- Итак, мы определились с тем, какие записи в журна-
то iptables воспользуемся утилитой ipfw, с помощью кото- ле событий нам необходимо просматривать и как на них
реагировать. Для разнообразия будем список заблоки-
рованных IP-адресов с указанием времени блокирования
отправлять на почту системному администратору. Хоте-
лось бы сразу предупредить, что этих писем будет доволь-
но много и поэтому необходимо заранее создать в почто-
вом клиенте соответствующую папку и правило для пере-
направления писем.

Листинг 2. Сценарий, блокирующий атаки на POP3

#!/usr/bin/perl -w
use Mail::Sendmail;

# максимально разрешенное число попыток


$max=10;

# файл журнала, с которым мы и работаем


$watchfile= '/var/log/messages';
Рисунок 1. Размещение серверов в DMZ

58
безопасность
$ipfw= '/sbin/ipfw'; ся в этой DMZ. Как уже упоминалось, к нему есть доступ
# то же ipfw но после сохранения изменений из глобальной сети. При такой топологии лучше всего от-
$ipfw_save= '/sbin/ipfw_save'; секать трафик атакующего еще на брандмауэре.
# исходные значения ipfw Будем предполагать, что в качестве межсетевого экра-
$ipfw_restore= '/sbin/ipfw-restore'; на у нас используется оборудование Cisco, тогда для осу-
# файл конфигураций ipfw ществления блокирования нам необходимо воспользовать-
$cfgfile= '/etc/sysconfig/ipfw' ся командами Cisco IOS.
# открываем лог на чтение Приведем необходимый набор команд для доступа
open(LFILE, "<$watchfile"); к консоли и изменения списка доступа. Приводить здесь ко-
# количество попыток для IP манды для настройки NAT и связи с ACL я не буду, так как
%tries=(); это не является темой статьи, и предполагаю, что у вас
# уже заблокированных IP уже всё настроено и нормально функционирует. Приведу
%blocked=(); лишь те команды, которые необходимо будет передавать
# восстанавливаем конфигурацию, это нужно для того, с помощью Perl-сценария. В моем примере использовался
# чтобы «устаревшие» IP-адреса не оставались запрещенными скромный PIX 501, однако для других моделей существен-
`$ipfw_restore < $cfgfile`;
`$ipfw list > out`; ных различий не будет.

# получаем уже заблокированные IP-адреса из iptables login as: user


open(IPTPIPE, "out"); Sent username "user"
$blockChain=0; user@1.1.1.1's password:
while (<IPTPIPE>){ Secure Access
$blockChain=1 if (/^Chain block \(\d+ references\)$/); Type help or '?' for a list of available commands.
next unless $blockChain;
last if (/^$/ ); ipfw add deny ip from 172.29.1.19 to 172.29.1.1
$blocked{$1}=1 if (/(\d+\.\d+\.\d+\.\d+)/);
} Password: ********
close IPTPIPE;
pixfirewall# configure terminal
# просматриваем /var/log/messages
while (1) {
for ($curpos = tell(LFILE); $_ = <LFILE>; ↵ Так как если в список доступа просто добавить запись,
$curpos = tell(LFILE)) { то она будет поставлена в конец, а в нашем случае это за-
# искомая строка
if (/qpopper\[\d+\]: Failed attempted login to .+ ↵ прещающая запись, то соответственно ее добавление бу-
from \D+(\d+\.\d+\.\d+\.\d+)/) { дет бессмысленно и не приведет к желаемому результату.
$ip=$1;
next if defined($blocked{$ip}); Поэтому нам необходимо сначала убрать старый список до-
$tries{$ip}+=1; #увеличиваем счетчик ступа, а потом уже прописать новый. Естественно, что кро-
if ($tries{$ip} eq $max){
# если превышено максимальное значение, ме наших записей, запрещающих трафик с определенных
# пакеты с данного адреса должны быть заблокированы узлов там должны быть еще другие записи, обеспечиваю-
`$ipfw deny $ip; $ipfw_save > $cfgfile`;
$blocked{$ip}=1; щие нормальный доступ к ресурсам сети.
# отправляем письмо В нашем случае необходимо лишь заблокировать тра-
%mail = ( To => 'admin@test.local',
From => 'firewall@test.local', фик с конкретного хоста (2.2.2.2). Запись, которая осущест-
Message => "IP $ip has been blocked !", вляет данные действия, мы разместим в начале нашего
SMTP => 'smtp.mail.ru'
); нового ACL. Реализовать все эти действия можно следу-
ющим образом:
sendmail(%mail) or die $Mail::Sendmail::error;

} pixfirewall(config)# no access-list 110


} pixfirewall(config)# access-list 110 deny ip host 2.2.2.2 ↵
} host 1.1.1.254
sleep 1; pixfirewall(config)# access-list 110 permit ip 172.16.0.0 ↵
seek(LFILE, $curpos, 0); 0.0.255.255 1.1.1.0 0.0.0.255
} …
pixfirewall(config)# end
Пример в целом аналогичен предыдущему, но содержит
ряд отличий, свойственных утилите ipfw и формату тех за- Не забудьте, что по умолчанию действует неявный за-
писей, которые ищет данный сценарий. прет, то есть все то, что не разрешено, будет запрещено.
Изменения в конфигурацию внесены, остается только
Защита по периметру сохранить их и отключиться.
Мы рассмотрели упрощенный случай топологии сети, когда
у нас имеется сервер, не защищенный какими-либо допол- pixfirewall# write mem
pixfirewall# logout
нительными аппаратными брандмауэрами, и единственной
защитой для него являются те средства, которые на нем Такие действия нужны для того, чтобы закрыть атакую-
установлены. Но очень часто сеть имеет более сложную щему доступ к ресурсам нашей сети.
структуру. Ресурсы, доступ к которым необходим как из Теперь можно приступать к написанию сценария, реали-
внутренней сети, так и из Интернета, помещают в демили- зующего эти действия на практике. Так как исходный текст
таризованную зону. Примерная топология сети на рис. 1. сценария подвергается существенным изменениям, приве-
Рассмотрим случай, когда наш почтовый сервер находит- дем его полностью.

№6, июнь 2006 59


безопасность
use Net::Telnet (); or die "No router configure mode: ", $t->lastline;
use Mail::Sendmail; $t->print("end");
#!/usr/bin/perl -w $t->waitfor('/# pixfirewall#:.*$/')
use Mail::Sendmail; or die "No router configure mode: ", $t->lastline;
$t->print("write mem");
# максимально разрешенное число попыток $t->waitfor('/# pixfirewall#:.*$/')
$max=10; or die "No router configure mode: ", $t->lastline;
$t->print("logout");
# файл журнала, с которым мы и работаем $result=$t->getline;
$watchfile= '/var/log/messages';

# открываем лог на чтение Перед тем как начать поиск попыток проникнове-
open(LFILE, "<$watchfile"); ния в сеть, подключаемся к консоли брандмауэра с по-
# количество попыток для IP мощью протокола Telnet. Как и в предыдущих сценариях,
%tries=(); мы ищем вхождения искомых строк, и в случае, если ко-
# уже заблокированных IP личество попыток проникновения превосходит заданное
%blocked=(); значение, добавляем запись в список доступа. Затем, пос-
# получаем доступ к консоли ле того как все «новые» записи добавлены, мы добавляем
$t = new Net::Telnet ; основные, разрешающие записи, сохраняем измененную
$hostname="1.1.1.254";
$t->open($hostname); конфигурацию и отключаемся от консоли. Конечно, кому-
$t->waitfor('/login:.*$/') то такой подход может показаться не слишком удобным,
or die "bad login: ", $t->lastline;
$t->print("user"); так как необходимо вносить изменения в конфигурацию
$t->waitfor('/Password:.*$/') работающего устройства, однако такой вариант позволя-
or die "bad password: ", $t->lastline;
$t->print("password"); ет отсекать вредоносный трафик еще до того, как он про-
$t->waitfor('/pixfirewall>:.*$/') никает в вашу локальную сеть. Естественно необходимо
or die "No user mode: ", $t->lastline;
$t->print("enable"); позаботиться о безопасности доступа по Telnet, разре-
$t->waitfor('/login:.*$/') шив подключения только определенным узлам из внут-
or die "bad login: ", $t->lastline;
$t->print("user"); ренней сети [3].
$t->waitfor('/Password:.*$/')
or die "bad password: ", $t->lastline;
$t->print("password"); Автоматизируем запуск
$t->waitfor('/pixfirewall#:.*$/') После написания сценария нам необходимо автоматизи-
or die "No router privilege mode: ", $t->lastline;
$t->print("configure terminal"); ровать его работу. Сделаем это с помощью cron. По по-
$t->waitfor('/# pixfirewall(config):.*$/') воду работы с данной утилитой и ее синтаксиса написа-
or die "No router configure mode: ", $t->lastline;
$t->print("no access list 110"); но уже достаточно, поэтому приведу лишь несколько при-
меров. Прежде всего рекомендовую не запускать сцена-
# просматриваем /var/log/messages
while (1) { рий слишком часто, по крайней мере не каждые пять ми-
for ($curpos = tell(LFILE); $_ = <LFILE>; ↵ нут. Это связано с тем, что на активно работающем серве-
$curpos = tell(LFILE)) {
# искомая строка ре, как правило, файл messages имеет весьма внушитель-
if (/sshd\[\d+\]: Failed password for .+ ↵ ный размер, и поиск текстовых вхождений может сущест-
from \D+(\d+\.\d+\.\d+\.\d+)/) {
$ip=$1; венно нагрузить систему. К тому же слишком частые обра-
next if defined($blocked{$ip}); щения к консоли сетевого оборудования тоже не очень же-
$tries{$ip}+=1; # увеличиваем счетчик
if ($tries{$ip} eq $max){ лательны. Я бы рекомендовал запуск сценария каждый час.
# если превышено максимальное значение, Задать выполнение сценария по такому расписанию мож-
# пакеты с данного адреса должны быть заблокированы
$blocked{$ip}=1; но следующим образом:
# добавляем в список доступа запись о запрете
# доступа с IP @hourly /tmp/pop3watch.pl
$t->waitfor('/# pixfirewall(config):.*$/')
or die "No router configure mode: ", ↵
$t->lastline;
$t->print("access list 110 deny ip host ↵ Итак, мы рассмотрели различные сценарии, позволя-
$ip host 1.1.1.254"); ющие обнаружить и адекватно реагировать на попытки
# отправляем письмо
%mail = ( To => 'admin@test.local', несанкционированного доступа к ресурсам сети. Конечно,
From => 'firewall@test.local', приведенные способы поиска можно расширить, например,
Message => "IP $ip has been blocked !",
SMTP => 'smtp.mail.ru' искать информацию не только о попытках проникновения,
); но и о неисправностях и сбоях, возникающих в системе, на-
sendmail(%mail) or die $Mail::Sendmail::error;
пример, в случае аварийного завершения работы какого-
} либо демона или сценария. Поэтому данный сценарий мо-
}
} жет оказаться полезен и при решении других задач авто-
sleep 1; матизации системного администрирования.
seek(LFILE, $curpos, 0);
}
$t->waitfor('/# pixfirewall(config):.*$/') Использованные источники:
or die "No router configure mode: ", $t->lastline;
$t->print("access list 110 permit …."); 1. http://cpan.org/authors/id/D/DR/DRAGOS/sshwatch-0.01.pl – ис-
… ходный сценарий.
# здесь добавляем другие записи в список доступа
2. Родерик Смит. Полный справочник по FreeBSD.
$t->waitfor('/# pixfirewall(config):.*$/') 3. Основы организации сетей Cisco. Справочное руководство.

60
bugtraq

Переполнение буфера и раскрытие Переполнение буфера в Novell eDirectory


данных в MySQL Программа: Novell eDirectory 8.8.
Программа: MySQL 4.1.18 и более ранние версии, MySQL Опасность: Средняя.
5.0.20. Описание: Уязвимость существует из-за неизвестной
Опасность: Средняя. ошибки в iMonitor. Подробности уязвимости неизвестны.
Описание: 1. Уязвимость существует из-за недостаточной URL производителя: www.novell.com/products/edirectory.
обработки данных в команде COM_TABLE_DUMP. Удален- Решение: Установите исправление с сайта производите-
ный пользователь может с помощью специально сформиро- ля.
ванного пакета получить доступ к важным данным на сис-
теме (к частям запросов или результатам их выполнения
другими пользователями). Целочисленное переполнение буфера
2. Переполнение стека обнаружено в команде COM_ в FreeType
TABLE_DUMP. Удаленный пользователь может послать сер- Программа: FreeType 2.2, возможно, более ранние версии.
веру специально сформированную последовательность Опасность: Средняя.
COM_TABLE_DUMP-пакетов и вызвать отказ в обслужива- Описание: Целочисленное переполнение буфера сущест-
нии или выполнить произвольный код на целевой системе. вует из-за ошибки в функции read_lwfn() файла src/base/
URL производителя: www.mysql.com. ftmac.c. Удаленный пользователь может вызвать перепол-
Решение: Установите последнюю версию (4.1.19 или 5.0.21) нение динамической памяти с помощью специально сфор-
с сайта производителя. мированного LWFN-файла и выполнить произвольный код
на целевой системе.
URL производителя: www.freetype.org.
SQL-инъекция в PostgreSQL Решение: Установите последнюю версию (2.2.1) с сайта
Программа: PostgreSQL, ветки 7.3, 7.4, 8.0 и 8.1. производителя.
Опасность: Средняя.
Описание: Уязвимость существует при обработке SQL-
строк, содержащих мультибайтные символы. Удаленный Обход ограничений безопасности
пользователь может с помощью специально сформирован- в IBM WebSphere Application Server
ного запроса выполнить произвольные SQL-команды в ба- Программа: IBM WebSphere Application Server 6.0.2, вер-
зе данных приложения. сии до Fix Pack 3.
URL производителя: www.postgresql.org. Опасность: Средняя.
Решение: Установите исправление с сайта производите- Описание: Уязвимость существует из-за отсутствия необ-
ля. ходимого ограничения на доступ к страницам приветствия.
Удаленный пользователь может с помощью специально
сформированного запроса получить доступ к защищенным
Отказ в обслуживании в SCTP Netfilter страницам приветствия приложения. Пример:
в ядре Linux 1. http://ServerHost/webapp_context/homepage.jsp – будет
Программа: Linux kernel, версии до 2.6.16.13. запрошен пароль на доступ к странице.
Опасность: Средняя. 2. http://ServerHost/webapp_context/ – удаленный поль-
Описание: Уязвимость существует из-за отсутствия про- зователь получит доступ к запрещенной странице
верки размера SCTP в коде SCTP-netfilter. Удаленный поль- homepage.jsp.
зователь может вызвать зацикливание приложения и пот- URL производителя: www-306.ibm.com/software/webservers/
ребить все доступные ресурсы на системе. appserv/was.
URL производителя: www.kernel.org. Решение: Установите последнюю версию 6.0.2 Fix pack 3
Решение: Установите последнюю версию ядра (2.6.16.13) (6.0.2.3) или выше, с сайта производителя.
с сайта производителя.

Обход аутентификации
Переполнение буфера в DPRPCW32.DLL в Sun Java System Directory Server
в клиенте Novell Программа: Sun Java System Directory Server 5.2.
Программа: Novell Client 4.83 SP3, 4.90 SP2 и 4.91 SP2 для Опасность: Средняя.
Windows 2000/XP/2003. Описание: Уязвимость существует из-за неизвестной
Опасность: Средняя. ошибки в процессе инсталляции. Удаленный пользователь
Описание: Уязвимость существует из-за ошибки провер- может получить административный доступ к приложению.
ки границ буфера в библиотеке DPRPCW32.DLL. Подроб- URL производителя: www.sun.com.
ности уязвимости не сообщаются. Решение: Следуйте инструкциям производителя.
URL производителя: www.novell.com/products/clients.
Решение: Установите исправление с сайта производите- Составил Александр Антипов
ля.

№6, июнь 2006 61


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

Техника снятия дампа с защищенных


приложений

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

П
ротекторы типа Themida (в «де- ные процессоры, значительно отлича- чем. А ведь приходится! Как странно
вичестве» eXtreme Protector) ющиеся от тех, под которые проекти- устроен мир.
и Star-Force, которыми защи- ровалась защита, активно использу-
щены многие популярные программы, ющая недокументированные возмож- Простые случаи дампинга
очень глубоко «вгрызаются» в опера- ности. Уж сколько раз твердили миру – Представим себе, что распаковщик
ционную систему, что снижает произ- не используйте ничего недокументиро- уже отработал, программа остановле-
водительность и порождает частные ванного в коммерческих приложени- на в оригинальной точке входа (OEP)
BSOD. Их «коллеги» ведут себя не так ях, да только все не впрок! Вот и при- и мы готовы сохранить образ файла
агрессивно, но проблем с совмести- ходится браться за хакерский инстру- (file image) на диск, то есть сбросить
мостью все равно хватает, особенно ментарий и освобождаться от протек- дамп. Отладчик soft-ice не предостав-
при переходе на 64-разрядные опе- торов, даже когда программа куплена ляет такой возможности, поэтому при-
рационные системы или многоядер- легальным путем и «ломать» ее неза- ходится действовать обходным путем..

62
безопасность
Но для начала необходимо выяснить, какой именно реги-
он памяти необходимо сохранять. При условии, что защита
не предпринимает никаких враждебных действий, нужная
информация может быть добыта командами MOD и MAP32
(см. рис. 1 и листинг 1).

Листинг 1. Определение дислокации модуля в памяти.


Здесь «test_dump» — имя процесса, с которого мы собираемся
снять дамп (soft-ice отображает его в правом нижнем углу)

# определяем базовый адрес загрузки модуля в память


:MOD test_dump
hMod Base PEHeader Module Name File Name
00400000 004000D0 test_dum \TEMP\test_dump.exe

# смотрим на карту модуля в памяти


:MAP32 test_dump
Owner Obj Name Obj# Address Size Type
test_dump text 0001 001B:00401000 00003B46 CODE RO
test_dump rdata 0002 0023:00405000 0000080E IDATA RO
test_dump .data 0003 0023:00406000 00001DE8 IDATA RW

Базовый адрес загрузки (hMod base) располагает- Рисунок 1. Определение региона памяти для снятия дампа
ся по адресу 400000h. Последняя секция (.data) начина-
ется с адреса 406000h и продолжается вплоть до адреса
(406000h + 1DE8h) == 407DE8h. Таким образом, нам необхо-
димо сохранить 7DE8h байт памяти, начиная с 400000h. Но
в soft-ice такой команды нет! Зато есть «история команд».
Даем команду «DB 400000 L 7DE8», выходим из отладчи-
ка, запускаем symbol loader и «говорим»: «file → save soft-
ice history as» (при этом размер самой истории должен быть
предварительно увеличен хотя бы до 30 МБ: «edit → soft-ice
initialization setting → history buffer size»). В результате обра-
зуется текстовый файл (см. листинг 2), который необходи-
мо преобразовать в exe, для чего потребуется написать спе-
циальную утилиту или поискать уже готовую.

Листинг 2. Дамп памяти, снятый через history

:db 400000 L 7DE8


010:00400000 4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00 MZР.............
010:00400010 B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@.......
010:00400040 0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54 68 ........!..L.!Th
010:00400050 69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F is program canno
010:00400060 74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20 t be run in DOS
010:00400070 6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00 mode....$....... Рисунок 2. Снятие дампа в soft-ice с помощью плагина IceExt

Как вариант, можно воспользоваться бесплатным пла- Другой плагин — icedump (programmerstools.org/system/
гином IceExt (http://stenri.pisem.net), значительно расширя- files?file=icedump6.026.zip) тоже умеет дампить память,
ющим функциональные возможности soft-ice. Если IceExt и так же, как и IceExt, он распространяется на бесплатной
откажется запускаться, увеличьте размер кучи и стека основе вместе с исходными текстами.
до 8000h байт, отредактировав следующую ветвь реестра Полученный дамп можно загрузить в дизассемб-
HKLM\SYSTEM\CurrentControlSet\Services\NTice. лер типа IDA Pro, но от его запуска лучше воздержать-
Команда !DUMP (см. рис. 2 и листинг 3) позволяет со- ся (особенно на соседних компьютерах), поскольку для
хранять блоки памяти на диск в двоичном виде, что очень корректной работы необходимо восстановить табли-
удобно: цу импорта и ресурсы, но это настолько обширный воп-
рос, что здесь мы не будем его касаться, тем более что
Листинг 3. Дамп памяти, снятый командой !DUMP плагина IceExt существуют готовые утилиты: Import Reconstructor (http://
:!DUMP www.wasm.ru/baixado.php?mode=tool&id=64) восстановит
Dump memory to disk импорт, а Resource Rebuilder (http://www.wasm.ru/baixado.
!dump FileName Addr Len php?mode=tool&id=156) – ресурсы.
Ex: Для отладчика OllyDbg существует плагин OllyDump
!dump c:\dump.dat 400000 1000
!dump \??\c:\dump.dat 400000 1000 (http://dd.x-eye.net/file/ollydump300110.zip) со встроенным
!dump \??\c:\dump.dat edx+ebx ecx реконструктором таблицы импорта (см. рис. 3).
:!DUMP C:\dumped 400000 7DE8 Наконец, можно воспользоваться и автономным дам-
DUMP: \??\C:\dumped 400000 7de8 пером. Самым первым (и самым неумелым) был ProcDump,

№6, июнь 2006 63


безопасность
ные выше, всецело опираются на PE-
заголовок и таблицу секций, использу-
емую операционной системой практи-
чески только на стадии загрузки фай-
ла. В частности, нас интересуют по-
ля ImageBase (адрес базовой загруз-
ки), SizeOfImage (размер образа) и со-
держимое таблицы секций. Протекто-
ры любят затирать эти поля после за-
вершения распаковки или подсовы-
вать заведомо некорректные значения.
Дамперы первого поколения от этого
«сходили с ума», но PE-TOOLS в боль-
шинстве случаев восстанавливает не-
достающую информацию самостоя-
тельно, но иногда он все-таки не сра-
батывает. И что тогда?
Самое простое – исследовать карту
памяти подопытного процесса, возвра-
щаемую API-функциями VirtualQuery/
VirtualQueryEx. Регионы, помеченные
Рисунок 3. Снятие дампа в OllyDbg с помощью плагина OllyDump
как MEM_IMAGE, принадлежат испол-
затем появился Lord PE, учитывающий дамп и восстанавливать оригинальные няемому файлу или одной из исполь-
горький опыт своего предшественника байты в любом hex-редакторе. зуемых им DLL (в PE-TOOLS за пост-
и способный сохранять дамп даже в тех Обыкновенные упаковщики (типа роение карты отвечает команда «dump
случаях, когда PE-заголовок умышлен- UPX) не сопротивляются снятию дампа, region» (см. рис. 5)).
но искажен защитной, а доступ к некото- поскольку борьба с хакерами в их зада- Активные защиты могут перехваты-
рым страницам памяти отсутствует (ат- чу не входит. Иное дело – протекторы. вать эти функции, подсовывая подлож-
рибут PAGE_NOACCESS). Венцом эво- Фактически это те же самые упаковщи- ные данные, и тогда приходится спус-
люции стал PE-TOOLS (см. рис. 4), с ко- ки, но снабженные целым арсеналом каться на один уровень вглубь, обра-
торым мы и будем работать. Базовый систем, противодействующих взло- щаясь к функции NtQueryVirtualMemory,
комплект поставки можно найти прак- му. Защитные методики можно разде- которая, как и следует из ее названия,
тически на любом хакерском сервере, лить на активные и пассивные. К пас- существует только в NT-подобных опе-
например, на WASM (http://www.wasm. сивным относятся все те, что работа- рационных системах и экспортируется
ru/baixado.php?mode=tool&id=124) или ют только на стадии распаковки и не библиотекой NTDLL.DLL, но в некото-
на CrackLab (http://www.cracklab.ru/ вмешиваются ни в саму программу, ни рых случаях перехватывается и она, вы-
download.php?action=get&n= MTU1), в операционную систему. Активные – нуждая нас обращаться к функции NtQu
а свежие обновления лежат на «род- перехватывают API-функции внутри erySystemInformation. Долгое время она
ном» сайте проекта http://neox.iatp.by, адресного пространства защищаемо- оставалась совершенно недокументи-
кстати говоря, уже несколько раз по- го процесса или даже устанавливают рованной и многие протекторы о сущес-
менявшим свой адрес (по непонятым специальный драйвер, модифицирую- твовании подобной лазейки даже и не
причинам базовый пакет на нем от- щий ядро операционной системы та- подозревали. Теперь же ее описание
сутствует). ким образом, что прямое снятие дампа доступно на MSDN: http://msdn.microsoft.
Если мы работаем с отладчиком становится невозможным. Очевидным com/library/default.asp?url=/library/en-us/
прикладного уровня (типа OllyDbg) побочным эффектом активных защит sysinfo/base/ntquerysysteminformation.
и стоим в OEP, то снять дамп с програм- ставится их неуживчивость с новыми asp, c грозным предупреждением,
мы очень просто. Достаточно переклю- версиями Windows, зачастую приво- что поведение функции может изме-
читься на PE-TOOLS, выбрать нужный дящая к краху операционной систе- ниться в любой новой версии, а потому
процесс в списке и сказать «dump full», мы. Печальнее всего то, что, запуская в долгосрочных продуктах на нее луч-
однако, с отладчиками уровня ядра setup.exe, мы даже и не подозреваем, ше не закладываться.
(soft-ice, Microsoft Kernel Debugger) этот что там может оказаться, да и далеко В самом крайнем случае (когда
номер не проходит и тут приходится не все протекторы поддерживают кор- перехвачена и NtQuerySystemInform
хитрить. Запоминаем (в голове или на ректурную деинсталляцию... ation) приходится прибегать к после-
бумажке) первые два байта от начала довательному разбору структур дан-
OEP и записываем сюда EBFEh, что В поисках самого себя ных, относящихся к памяти процесса
соответствует машинной инструкции Снятие дампа начинается с определе- (soft-ice именно так и поступает), од-
JMP short $-2, зацикливающей про- ния региона памяти, принадлежаще- нако гораздо проще и надежнее прос-
цесс. Теперь можно смело выходить из го исполняемому файлу (или динами- то скопировать кусок адресного про-
отладчика, идти в PE-TOOLS, снимать ческой библиотеке). Приемы, описан- странства. Если образ не был переме-

64
безопасность
щен, базовый адрес загрузки тот же самый, что и в PE-за-
головке exe-файла. При работе с перемещенным образом,
базовый адрес приходится определять вручную путем по-
иска сигнатур PE и MZ, двигаясь от OEP вверх (т.е. в сто-
рону младших адресов). К нашему счастью, полностью за-
тереть PE-заголовок защита не может, поскольку тогда пе-
рестанут работать некоторые API-функции, взаимодейству-
ющие с ресурсами и т. д.
Если ни одним из способов определить границы обра-
за не удается, приходится дампить фрагменты адресного
пространства, загружая их в IDA Pro как двоичный файл,
естественно, с сохранением начального адреса фрагмен-
та. Для анализа работы защитного механизма этого в боль-
шинстве случаев оказывается вполне достаточно, тем бо-
лее что IDA Pro позволяет подгружать недостающие час-
ти «налету».
Рисунок 4. Внешний вид утилиты PE-TOOLS
Дамп извне
Прежде чем читать адресное пространство чужого про-
цесса, до него еще предстоит добраться. Windows изоли-
рует процессы друг от друга на случай непреднамеренно-
го удара по памяти (который сильно досаждал пользовате-
лям Windows 3.x), но предоставляет специальный набор API-
функций для межпроцессорного взаимодействия. Класси-
ческий путь: получаем обработчик процесса, который мы
собрались дампить вызовом OpenProcess и передаем его
функции ReadProcessMemory вместе с остальными парамет-
рами (откуда и сколько байт читать). При этом необходимо
учитывать, что некоторые страницы могут быть помечены
защитой как недоступные и перед обращением к ним необ-
ходимо вызвать функцию VirtualProtectEx, разрешив полный
доступ (PAGE_EXECUTE_READWRITE) или, по крайней мере, Рисунок 5. Просмотр карты памяти в PE-TOOLS
открыв страницы только на чтение (PAGE_READONLY).
Естественно, функции OpenProcess/ReadProcessMemory/ ции могут быть перехвачены защитой со всеми вытекаю-
VirtualProtectEx могут быть перехвачены защитой, и тог- щими отсюда последствиями (протектор Themida именно
да вместо дампа мы получим error, а то и reboot. Низко- так и поступает).
уровневые функции NtOpenProcess/NtReadVirtualMemory/ Важно отметить, что универсальных способов перехвата
NtProtectVirtualMemory перехватываются с той же легко- не существует – протектор может модифицировать табли-
стью, к тому же некоторые защиты изменяют маркер безо- цу экспорта, внедрять свои jmp в начало или даже середи-
пасности процесса, запрещая открытие его памяти на чте- ну сервисных функций ядра и т. д. А это значит, что на ядро
ние даже администратору! полагаться нельзя и вариантов у нас только два: использо-
Считается, что снятие дампа на уровне ядра открывает вать те функции, которые не догадалась перехватить защи-
большие возможности для реверс инжиниринга и противо- та, или переключать адресные пространства вручную.
стоять этому никак невозможно, поскольку драйвер рабо- Специальный плагин к PE-TOOLS (http://neox.iatp.by/
тает с наивысшим уровнем привилегий, который позволя- eXtremeDumper.zip, http://www.wasm.ru/pub/21/files/dumping/
ет все. Но ведь и драйверу защиты, работающему на уров- eXtremeDumper.rar), написанный MS-REM, пробивается
не ядра, тоже доступно все, в том числе и модификация яд- к процессу через следующую цепочку сервисных вызовов
ра операционной системы, в которых нуждается драйвер PsLookupProcessByProcessId → ObOpenObjectByPointer →
дампера. Причем никаких документированных функций ObDereferenceObject, которую пока еще никто не перехваты-
для чтения памяти чужого процесса (за исключением вы- вает, что позволяет снимать дамп даже с очень сильно защи-
шеупомянутых) в системе нет! щенных программ, однако, сколько этот способ еще продер-
Чтобы читать память процесса напрямую, драйвер дол- жится, сказать невозможно. Создатели протекторов не си-
жен к нему подключиться, вызвав функцию KeAttachProcess дят сложа руки и на хакерских форумах тоже бывают.
или ее современный аналог KeStackAttachProcess, поя- В долговременной перспективе надежнее всего исполь-
вившийся и впервые документированный в Windows 2000. зовать недокументированную (и к тому же неэкспортиру-
Пользоваться обеими функциями следует с величайшей емую!) функцию KiSwapProcess, адрес которой меняет-
осторожностью и прежде, чем подключаться к другому ся от системы к системе, что затрудняет перехват. В то же
процессу, необходимо отсоединиться от текущего, вызвав время дампер может легко определить его посредством
KeDetachProcess/KeStackDeattachProcess. Однако эти функ- таблицы отладочных символов, бесплатно распространя-

№6, июнь 2006 65


безопасность
емых Microsoft. Для работы с ними понадобится библио- Механизмы динамической расшифровки
тека dbghelp.dll из комплекта Debugging Tools (http://www. Алгоритм динамической расшифровки, реализованный
microsoft.com/whdc/devtools/debugging/default.mspx) и ути- в протекторе Armadillo и известный под именем CopyMem,
лита symchk.exe, взятая оттуда же. в общих чертах выглядит так: защита порождает отла-
Функция KiSwapProcess – это одна из самых низкоуров- дочный процесс, передавая функции CreateProcess в ка-
невых функций, напрямую работающих с регистром CR3, честве имени нулевой аргумент командной строки, «бла-
в который заносится указатель на каталог страниц выбран- годаря» чему в диспетчере задач отображаются две ко-
ного процесса, после этого его адресное пространство пии запущенной программы. Одна из них – сервер (ус-
можно читать как свое собственное машинной командой ловно), другая – клиент. Сервер посредством функции
MOVSD, в грубом приближении представляющий собой VirtualProtectEx делает все страницы клиента недоступ-
аналог memcpy. Предвидя такой исход событий, некоторые ными (атрибут PAGE_NOACCESS) и передает ему управ-
защиты пошли на отчаянный шаг: перехватив SwapContext ление, ожидая отладочных событий с помощью функции
и ряд других функций, работающих с CR3, они стали раз- WaitForDebugEvent, а события долго ждать себя не застав-
рушать каталог страниц «своего» процесса на время пере- ляют и при первой же попытке выполнения кода в недо-
ключения контекстов и вновь восстанавливать его, когда ступной странице возбуждается исключение, передающее
в нем возникает необходимость. Настоящее варварство! серверу бразды правления. Сервер расшифровывает теку-
Обращение к каталогу страниц происходит из десятков не- щую страницу, взаимодействуя с клиентом посредством
документированных функций, которые в каждой версии яд- API-функций ReadProcessMemory/WriteProcessMemory, ус-
ра реализованы по своему. А это значит, что такая агрес- танавливает необходимые атрибуты доступа и возвраща-
сивная защитная политика рискует «свалиться» в сплош- ет клиенту управление.
ной BSOD, не оставляющий пользователю никаких шансов Остальные страницы остаются зашифрованными, и при
для нормальной работы! обращении к ним вновь возбуждается исключение, кото-
Но это еще не самое страшное. Все больше и больше рое передается серверу через WaitForDedugEvent. Сервер
протекторов переходят на динамическую распаковку, рас- зашифровывает предыдущую страницу, отбирая все атри-
шифровывая страницы по мере обращения к ним, а затем буты доступа, какие у нее только есть, и расшифровывает
зашифровывая их вновь. Даже если мы пробьемся сквозь текущую страницу, возбудившую исключение (в действи-
защиту и дорвемся до процесса, дампить будет нечего... тельности для увеличения производительности защита под-
вернее, полученный дамп будет практически на 99% за- держивает примитивный кэш, позволяя клиенту иметь не-
шифрован. сколько расшифрованных страниц одновременно).

«Нечестные» защитные приемы реже – прямое воздействие на регистры Полиморфный мусор в OEP. Вместо
Нормальные упаковщики (UPX, PKLITE, и память (при этом краденые инструкции того чтобы красть байты с OEP, некоторые
PECOMPACT) сжимают исполняемый файл трансформируются в псевдокод и в явном протекторы предпочитают модифициро-
без потерь, и после завершения распа- виде нигде не сохраняются). Суть в том, что вать стартовый код, разбавляя значимые
ковки он возвращается к своему перво- в точке входа распакованного образа ори- инструкции бессмысленным полиморфным
начальному виду, что делает процесс сня- гинальных байт уже не оказывается и сня- мусором. Это никак не влияет на работос-
тия дампа тривиальной задачей. Протек- тый дамп становится неработоспособным. пособность снятого дампа, но ослепляет
торы в стремлении усилить защиту зачас- К нашему счастью, подавляющее боль- «FLIRT», вынуждая нас либо вычищать по-
тую идут на довольно рискованный шаг – шинство программ начинается со старто- лиморфный мусор, либо определять версию
они слегка «корежат» обрабатываемый вого кода, который является частью библи- компилятора «на глазок», загружая сигна-
файл с таким расчетом, чтобы он мог ра- отеки времени исполнения (RTL), поставля- туры вручную (IDA Pro это позволяет).
ботать только под протектором, а после емой вместе с компиляторами. Используя Переходники в таблице импорта к ку-
освобождения от него становится нежиз- оставшийся «хвост» стартового кода, мы че. Протектор Themida использует следую-
неспособным. Наиболее популярные спо- легко отождествим компилятор и восста- щий прием, серьезно затрудняющий восста-
собы подобной «нечестной» защиты рас- новим краденые байты из его библиотеки. новление таблицы импорта. Непосредствен-
смотрены ниже. Если же данного компилятора в нашем рас- ные адреса API-функций заменяются пере-
Кража байт с OEP. Самая простая поряжении не окажется, первые несколь- ходниками на область памяти, выделенную
и широко распространенная подлянка, ис- ко байт стартового кода в 9 из 10 случаев VirtualAlloc (т.е. кучу), которая по умолчанию
пользуемая даже в таких безобидных про- вполне предсказуемы, и зачастую их уда- в дамп не попадает, поэтому восстанавли-
текторах как, например, ASProtect. Суть ее ется восстановить самостоятельно (естес- вать импорт приходится вручную. Это не-
заключается в том, что упаковщик «крадет» твенно, для этого необходимо иметь опыт сложно, но утомительно – ищем вызовы API-
несколько инструкций из оригинальной работы с различными RTL). Кстати, IDA Pro функций, ведущие к куче (то, что это именно
точки входа, сохраняет их в потайном мес- распознает компилятор именно по первым куча, а не что-то другое, можно определить
те (возможно, в замаскированном или за- байтам стартового кода, и, если они отсутс- по карте), дампим соответствующий регион
шифрованном виде), а после завершения твуют или искажены, механизм FLIRT рабо- памяти на диск, удаляем переходники, за-
распаковки эмулирует выполнение краде- тать не будет. Это значит, что мы останем- меняя их действительными адресами, пос-
ных байт. Чаще всего для этой цели исполь- ся без имен библиотечных функций и про- ле чего запускаем Import Reconstructor или
зуется стек (тогда краденые байты обычно цесс дизассемблирования займет намно- другую утилиту аналогичного назначения
становятся операндами инструкций PUSH), го больше времени. и... нет, это еще не все! Это только начало!

66
безопасность
Потребность в отладочном процессе-сервере объясня- однако написание драйверов – занятие утомительное и сов-
ется тем, что по другому ловить исключения на прикладном сем небезопасное в плане «голубых экранов смерти». К то-
уровне просто не получается. А как же механизм структур- му же разработчику защиты придется либо наотрез отказы-
ных исключений или, сокращенно, SEH? Регистрируем свой ваться от поддержки 9x (которая все еще жива!), либо реали-
собственный обработчик и ловим исключения, что называ- зовывать сразу два драйвера! Тем не менее защиты такого
ется по месту возникновения. Это избавляет нас от API-вы- типа все-таки встречаются. Независимо от того, как проис-
зовов, обеспечивающих межпроцессорное взаимодействие, ходит обработка исключения, сломать такую защиту очень
которые элементарно перехватываются хакером. Увы! Ес- просто! Читаем первую страницу, дожидаемся завершения
ли защищаемое приложение использует SEH (а подавля- расшифровки, сохраняем ее на диск, обращаемся к следу-
ющее большинство приложений его используют), наш об- ющей странице и... действуем так до тех пор, пока в наших
работчик окажется перекрыт другим. Столкнувшись с «на- руках не окажется весь образ целиком. Стоит только внед-
шим» исключением, он попросту не будет знать, что с ним рить код дампера в адресное пространство защищенного
делать, и с вероятностью, близкой к единице, просто завер- процесса… и протектору будет очень сложно отличить об-
шит приложение в аварийном режиме. ращения самой программы от обращений дампера.
Теоретически установку нового обработчика легко отсле- Последние версии протектора Armadillo, недавно пере-
дить, установив аппаратную точку останова по доступу к па- именованного в Software Passport, реализуют намного более
мяти на адрес FS:[00000000h]. Операционные системы се- надежный, хотя и чрезвычайно низко производительный ме-
мейства NT позволяют прикладным приложениям манипули- ханизм трассирующей расшифровки, при котором весь код
ровать с отладочными регистрами через контекст, причем от- программы зашифрован целиком. Сервер трассирует кли-
ладочный регистр действует лишь в рамках «своего» процес- ента, расшифровывая по одной инструкции за раз (преды-
са, не мешая работать всем остальным, но 9x «забывает» со- дущая инструкция при этом зашифровывается). Снять дамп
хранять отладочные регистры в контексте «своего» процесса, тупым обращением к памяти уже не получается, поскольку
и они приобретают глобальный характер, воздействующий защиту интересуют только исключения, возникающие при
на все процессы! Так что в ней этот трюк не проходит. исполнении. Все, что мы можем, это «вклиниться» между
А вот другой способ: устанавливаем драйвер, пере- зашифрованным приложением и расшифровщиком, «кол-
хватывающий исключения на уровне IDT и взаимодейст- лекционируя» расшифрованные инструкции, образующие
вующий со своим процессом либо через DeviceIoControl, трассу потока выполнения. Поскольку, достичь 100% пок-
либо через NtReadVirtualMemory/NtWriteVirtualMemory/ рытия кода практически невозможно, полученный дамп бу-
KeDeattachProcess/KeAttachProcess. Это вполне надежно, дет неполноценным, но тут есть один маленький нюанс. По-

Помимо создания переходников некоторые производительность и, наконец, в-третьих, альный процессорный модуль для IDA Pro
функции копируются протектором целиком! от взлома это все равно не спасает! Дизас- или свой собственный дизассемблер. Это
Подробнее об этом приеме можно прочитать семблировав эмулятор переходов (а дизас- очень трудоемкое занятие, отнимающее
в статье «Точки останова на win32 API и про- семблировать его несложно) и обнаружив у исследователя кучу сил и времени, а ведь
тиводействие им» – раздел «Копирование таблицу переходов, хакер в считанные мину- байт-код виртуальной машины в следую-
API – функций целиком», которая находит- ты напишет скрипт для IDA Pro или OllyDbg, щих версиях протектора может быть из-
ся на http://kpnc.opennet.ru/adt.zip. удаляющий все INT 03 и восстанавлива- менен и ранее написанный процессорный
Замена jx с последующей эмуляци- ющий оригинальные переходы. Сущест- модуль/дизассемблер окажется непригод-
ей. При «отвязке» программ от протектора вует даже полуавтоматический взломщик ным. Это наиболее стойкая защита из всех,
Armadillo самое сложное – это восстановле- Armadillo, написанный двумя богами распа- существующих на сегодняшний день, одна-
ние оригинального кода программы. Защи- ковки – infern0 и dragon (http://www.wasm.ru/ ко не стоит забывать о двух вещах: во-пер-
та дизассемблирует обрабатываемый файл, baixado.php?mode=tool&id=220), в следу- вых, если протектор становится популяр-
находит в нем условные и безусловные пе- ющих версиях которого обещана полная ным, а его новые версии выходят редко, со-
реходы, записывает поверх них команду автоматическая распаковка и дезактива- здание процессорных модулей становится
INT 03h, а сам переход сохраняется в сво- ция Armadillo. экономически оправданным и защиту на-
ей внутренней таблице переходов. Процесс- Преобразование в байт-код. Протек- чинают ломать все желающие, если же но-
сервер перехватывает исключение, возбуж- торы Themida и Start-Force позволяют пре- вые версии выходят чуть ли не ежедневно,
даемое инструкцией INT 03, «смотрит», от- образовывать часть машинного кода за- то навряд ли у разработчика протектора бу-
куда оно пришло, извлекает из таблицы со- щищаемой программы в язык виртуаль- дет достаточно времени для радикальной
ответствующий этому адресу переход и эму- ной машины, то есть в байт-код (также на- перестройки виртуальной машины и ему
лирует его выполнение с помощью арифме- зываемый p-кодом). Если виртуальная ма- приходится ограничиваться мелкими из-
тических манипуляций с регистром флагов шина глубоко «вживлена» внутрь протек- менениями байт-кода, которые выливаются
(то есть в явном виде переходы нигде не хра- тора, то отломать защиту, не «умертвив» в мелкие изменения процессорного моду-
нятся!). Вот три главных минуса такого ре- при этом приложение, становится прак- ля, и протектор продолжат ломать. Во-вто-
шения: во-первых, нет никакой гарантии, тически невозможно, как невозможно не- рых, хакер может «отодрать» виртуальную
что защита правильно дизассемблирует об- посредственно дизассемблировать байт- машину от протектора, совершенно не вни-
рабатываемую программу и не спутает пе- код. По меньшей мере для этого необхо- кая в тонкости интерпретации байт-кода,
реход с другой командой; во-вторых, эмуля- димо разобраться с алгоритмом работы лишний раз подтверждая известный тезис:
ция требует времени, существенно снижая виртуальной машины и написать специ- сломать можно все… со временем.

№6, июнь 2006 67


безопасность
командная расшифровка не может использовать ни блоч- потока, обращаясь к SetThreadContext (действует на всех
ные, ни контекстно-зависимые криптоалгоритмы, посколь- системах). Естественно, предыдущий EIP должен быть со-
ку трассирующий расшифровщик никогда не знает наперед, хранен, а сам поток – остановлен.
какая инструкция будет выполнена следующей. Остаются Постойте! Но ведь это мало чем отличается от обыч-
только потоковые алгоритмы типа XOR или RC4, которые ного межпроцессорного взаимодействия ! Функции
очень легко расшифровать – стоит только найти гамму, кото- NtAllocateVirtualMemory/NtSetContextThread/NtCreateThread
рую протектор, несмотря ни на какие усилия, слишком глубо- любая защита перехватит со смаком! (Никакой ошибки тут
ко запрятать все равно не сможет! Естественно, полностью нет, API-функция CreateRemote Thread в действительнос-
автоматизировать процесс снятия дампа в этом случае уже ти представляет собой «обертку» вокруг ядерной функ-
не удастся и придется прибегнуть к дизассемблированию, ции NtCreateThread.)
а быть может, даже к отладке. К счастью, подобные схемы Хорошо, вот другой классический путь. Помещаем дам-
защиты не получили широкого распространения и навряд пер в DLL и прописываем ее в HKLM\Software\Microsoft\
ли получат его в обозримом будущем. Трассировка замед- Windows NT\CurrentVersion\Windows\AppInit_DLLs, в ре-
ляет скорость работы приложения в десятки раз, в резуль- зультате чего она будет отображаться на все процессы, ка-
тате чего оно становится неконкурентоспособным. кие только есть в системе, и перед передачей управления
на очередной запускаемый процесс первой получит управ-
Дамп изнутри ление наша DLL! К сожалению, об этой ветке знают не толь-
Снятие дампа через механизмы межпроцессорного взаимо- ко протекторы, но и другие программы (антивирусы, персо-
действия – это вчерашний день. Для борьбы с активными нальные брандмауэры) и следят за ней. Наша запись мо-
защитами хакеры внедряют код дампера непосредствен- жет быть удалена еще до того, как дампер приступит к ра-
но в «подопытный» процесс, что позволяет обойти как пе- боте! Если же ему все-таки удастся получить управление,
рехват API-функций, так и победить динамическую шиф- первое, что он должен сделать, – выделить себе блок па-
ровку типа CopyMem. мяти внутри процесса, скопировать туда весь необходи-
Классический способ внедрения кода реализуется так: мый код и вернуть ветку AppInit_DLLs в исходное состоя-
открываем процесс функцией OpenProcess, выделяем блок ние. Поскольку дампер получает управление еще до того,
памяти вызовом VirtualAllocEx, копируем код дампера через как защита начнет работать, она никак не сможет обнару-
WriteProcessMemory, а затем либо создаем удаленный по- жить, что здесь кто-то уже побывал.
ток функцией CreateRemoteThread (только на NT-подобных Исключение составляют активные защиты резидент-
системах), либо изменяем регистр EIP в контексте чужого ного типа, постоянно присутствующие в системе даже ес-

68
безопасность
ли защищаемый файл не был запущен. Но в этом случае от дампера. Защита может распознать факт внедрения
они сталкиваются со следующей проблемой – как отли- чужой DLL в адресное пространство охраняемого ее про-
чить «свой» процесс от всех остальных? По имени фай- цесса, но откуда ей знать, что эта DLL делает?! Можно, ко-
ла? Это не слишком надежно… Лучше использовать «мет- нечно, просто выгрузить ее из памяти (или воспрепятство-
ку» – уникальное сочетание байт по определенному адре- вать загрузке), но какому пользователю понравится, что ле-
су. С такими защитами справиться очень сложно, но все- гально приобретенная программа конфликтует с его кру-
таки возможно. Перепробовав несколько вариантов, ав- той клавиатурой, мышью или другим устройством? Так что
тор остановился на следующем алгоритме, который об- SetWindowsHookEx при всей своей незатейливости – до-
ходит все существующие на сегодняшний день активные вольно неплохой выбор для хакера!
и пассивные защиты: Самый радикальный способ внедрения в чужое адрес-
 Копируем оригинальный файл (с защитой) в tmp.tmp. ное пространство – это правка системных библиотек, та-
 Открываем оригинальный файл в hiew, переходим в точ- ких как KERNEL32.DLL или USER32.DLL. Править можно
ку входа (EP) и ставим jmp на свободное место, где и раз- как на диске, так и в памяти, однако в последнем случае
мещаем код дампера, который при получении управле- защита может легко разоблачить факт вторжения прос-
ния осуществляет следующие действия: тым сравнением системных библиотек с их образом. Внед-
 выделяет блок памяти и копирует туда свое тело, рившись в системную библиотеку, не забудьте скорректи-
обычно подгружаемое с диска (динамическую биб- ровать контрольную сумму в PE-заголовке, иначе NT от-
лиотеку лучше не загружать, поскольку некоторые кажется ее загружать. Сделать это можно как с помощью
защиты контролируют список DLL и если вызов идет PE-TOOLS, так и утилитой rebuild.exe, входящей в состав
из неизвестной динамической библиотеки, расцени- SDK. Внедряться лучше всего в API-функции, вызываемые
вают это как вторжение); стартовым кодом оригинального приложения (GetVersion,
 устанавливает таймер через API-функцию SetTimer GetModuleHandleA и т. д.), определяя «свой» процесс функ-
с таким расчетом, чтобы процедура дампера полу- цией GetCurrentProcessId или по содержимому файла (пос-
чила управление, когда весь код будет полностью леднее – надежнее, т. к. GetCurrentProcessId может быть пе-
распакован или, в случае с CopyMem, когда защи- рехвачена защитой, которая очень сильно «удивится», если
та успеет установить отладочный процесс (конечно, API-функция GetVersion неожиданно заинтересуется иден-
снять дамп в OEP в этом случае уже не получится, тификатором текущего процесса). Во избежание побочных
но даже такой дамп лучше, чем совсем ничего); эффектов запускать такой дампер следует на «выделен-
 переименовывает оригинальный файл (тот, что ис- ной» операционной системе, специально предназначен-
полняется в данный момент!) в tmp.xxx, а файлу tmp. ной для варварских экспериментов и обычно работающей
tmp возвращает оригинальное имя; под виртуальной машиной типа BOCHS или VMWare.
 вычищает себя из памяти, восстанавливает EP и пе-
редает управление защищенной программе; Заключение
 если активная защита охраняет свой файл, опозна- Правильно спроектированная и должным образом реали-
вая его по сигнатуре, используем какой-нибудь бе- зованная защита должна препятствовать нелегальному ис-
зобидный упаковщик с «нулевым побочным эффек- пользованию программы, но не имеет ни морального, ни юри-
том» типа UPX, при этом все вышеуказанные дейст- дического права мешать честным пользователям и уж тем
вия следует выполнять на отдельной заведомо «сте- более вторгаться в операционную систему, производя никем
рильной» машине; не санкционированные изменения. Последние версии про-
 Запускаем модифицированный файл на выполнение. текторов Themida и Software Passport вплотную приближа-
ются к rootkit. Еще немного и они превратятся в настоящие
Таким образом, защита не сможет обнаружить измене- вирусы, создание которых преследуется по закону.
ний ни в файле, ни в памяти (при попытке определения име-
ни текущего файла операционная система будет возвра- Полезные ссылки:
щать то имя файла, какое он имел на момент запуска, иг- 1. Современные технологии дампинга и защиты от него. От-
норируя факт его «онлайнового» переименования). Но это личная статья от создателя eXtremeDumper доступно расска-
слишком громоздкий и навороченный алгоритм, к тому же зывающая о том, как протекторы защищаются от снятия дам-
активной защите ничего не стоит перехватить SetTimer и за- па, и объясняющая, как эти защиты обойти (на русском язы-
претить установку таймера внутри «своего» процесса до за- ке): http://www.wasm.ru/article.php?article=dumping.
вершения распаковки/передачи управления на OEP. 2. Об упаковщиках в последний раз. Объемный труд, создан-
Забавно, но многие защиты забывают о функции ный коллективом лучших отечественных хакеров во главе
SetWindowsHookEx, позволяющей внедрять свою DLL в ад- с легендарным Володей и охватывающий все аспекты рабо-
ресное пространство чужого процесса. Впрочем, даже если ты упаковщиков, протекторов и самой операционной систе-
бы они помнили о ней, осуществить корректный перехват мы (на русском языке): http://www.wasm.ru/article.php?article
весьма не просто. Многие легальные приложения (напри- =packlast01 (первая часть); http://www.wasm.ru/article.php?
мер, мультимедийные клавиатуры или мыши с дополнитель- article=packers2 (вторая часть).
ными кнопками по бокам) используют SetWindowsHookEx 3. Касперски К. Генная инженерия на службе распаковки PE-фай-
для расширения функциональности системы. Не сущест- лов. – Журнал «Системный администратор», №5, май 2006 г. –
вует никакого способа отличить «честное» приложение 58-68 с.

№6, июнь 2006 69


образование

Первый раз в Linux-класс!

Андрей Маркелов
Когда идет речь о повышении квалификации IT-специалистов, в первую очередь вспоминается
компания Microsoft с огромным числом учебных курсов. Аналогичные программы обучения есть
и для Linux-специалистов.

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

70
образование
ющие подтвердить полученные специ-
алистом знания.
Ранее я уже рассказывал о преиму-
ществах и недостатках сертификации
и авторизированного обучения, а так-
же о нескольких учебных программах
и линейках сертификации [1].
Сегодня речь пойдет о программе
обучения и сертификации компании
Red Hat [2], которая будет безусловно
интересна всем, кому приходится ра-
ботать с операционной системой Linux,
и тем, кому хотелось бы усовершенс-
твовать знания по работе с ней.
Нет нужды говорить о том, что Red
Hat Enterprise Linux (RHEL) является
одним из самых известных коммер-
ческих дистрибутивов. А спонсируе-
мый компанией проект Fedora Project
выпускает свободный дистрибутив
Рисунок 1. Программа подготовки Сертифицированного технического специалиста
Linux под названием Fedora Core, на- Red Hat (RHCT)
ходящийся в списке самых популяр-
ных дистрибутивов (по данным сайта тификат от компании Red Hat. Также тему X Window, познакомятся с осно-
http://distrowatch.com). Делаем ли мы у слушателя остается официальное вами написания скриптов. Достаточ-
выбор в пользу RHEL и Fedora (кото- учебное пособие. К сожалению, поли- но много времени уделено текстово-
рую в принципе можно назвать «бе- тика Red Hat такова, что получить учеб- му редактору vim, входящему в боль-
та-версией очередной версии RHEL») ник может только слушатель курсов. шинство дистрибутивов Linux. Каждая
или выбираем другой не менее достой- Впрочем, той же стратегии придержи- из рассматриваемых тем, как и на ос-
ный из дистрибутивов Linux, нельзя ваются и другие производители ПО, та- тальных курсах от Red Hat, заверша-
не согласиться, что Red Hat – знако- кие как Oracle и Microsoft. С другой сто- ется лабораторной работой под руко-
вая компания на корпоративном рын- роны, тот же Microsoft выпускает офи- водством преподавателя. Новичкам
ке Linux-решений. циальные курсы для самостоятельной в мире Linux и UNIX я бы не рекомендо-
Компания Red Hat предлагает не- подготовки, чего нет у Red Hat. вал приходить на более старшие кур-
сколько треков обучения и сертифика- Идя на курсы Red Hat, желательно сы, не прослушав этот вводный курс
ции IT-специалистов. В России на мо- иметь базовые навыки чтения техни- или не имея базовых навыков. Подроб-
мент написания статьи были доступны ческой литературы на английском язы- нее с программой обучения как этого,
курсы и экзамены на статусы Red Hat ке для эффективной работы с учебным так и остальных курсов, можно позна-
Certified Technican (RHCT) – сертифи- пособием. В настоящий момент на рус- комиться на специальном разделе сай-
цированный техник и Red Hat Certified ском языке есть только официальная та компании Red Hat [2].
Engineer (RHCE) – сертифицированный документация, которая свободно до- Курс «Основы Red Hat Linux для
инженер. Если вы знакомы с програм- ступна в Интернете [3]. профессионалов Windows» отличается
мами обучения от компании Microsoft, Чтобы гарантировать качество обу- от вышеописанного лишь наличием до-
то первую сертификацию можно со- чения в России и странах СНГ курсы полнительного дня, в котором Windows-
поставить со статусом MCSA, а вто- Red Hat имеют право проводить толь- специалисты знакомятся с графичес-
рую – со статусом MCSE. Сравнивать ко сертифицированные инструкторы кими инструментами system-config-*,
сертификации можно лишь очень при- Red Hat компаний-партнеров. позволяющими выполнить основные
близительно, и в первую очередь из-за Самый младший из курсов назы- действия по управлению системой, ис-
формата экзамена. Но об этом позже. вается «Основы Red Hat Linux». Собс- пользуя графический пользователь-
Начнем с обучения – что оно из себя твенно говоря, практически все, о чем ский интерфейс.
представляет и как проходит. говорится в этом четырехдневном тре- Наиболее популярным можно на-
нинге, относится к любому из дист- звать базовый курс «Системное ад-
Курсы обучения рибутивов Linux. Ориентирован курс министрирование Red Hat Enterprise
Для начала несколько общих слов. на специалистов, ранее не работав- Linux», который является основой
На момент написания статьи курсы ших ни с UNIX, ни с Linux. За время для сертификации RHCT. Курс дает
и экзамены проводились на осно- обучения слушатели получат базовые слушателям навыки и знания на уров-
ве Red Hat Enterprise Linux 4 update 2. сведения и познакомятся с принципа- не установки и настройки новой рабо-
Большинство курсов продолжаются ми UNIX-way, научатся работать с ко- чей станции Red Hat Enterprise Linux
четыре дня. По их окончании слуша- мандной строкой, ориентироваться и подключения к существующей сети.
тель получает соответствующий сер- в файловой системе, настраивать сис- Рассматриваются установка опера-

№6, июнь 2006 71


образование
ступен перевод на русский язык [5].
Сертификация RHCE включает в се-
бя навыки RHCT, но вам необязатель-
но быть сертифицированным техни-
ком для того, чтобы попытаться сдать
экзамен RHCE.
Экзамен состоит из двух частей –
«Установка и настройка» и «Диагности-
ка и устранение неисправностей». Не-
обходимые навыки, знания и проход-
ные баллы указаны в руководстве.
Статус сертифицированного техни-
ка или инженера действителен до мо-
мента выхода версии Red Hat Enterprise
Linux, чей номер выше на две едини-
цы, чем номер той версии, по которой
сдавался экзамен. Например, статус
RHCE по Red Hat Enterprise Linux бу-
дет действителен до выхода Red Hat
Enterprise Linux 6. Компания Red Hat
Рисунок 2. Программа подготовки Сертифицированного инженера Red Hat (RHCE) выпускает новые версии своего кор-
поративного дистрибутива раз в 12-18
ционной системы, в том числе по сети сов. Он предназначен в первую оче- месяцев.
и с использованием kickstart-файлов, редь для опытных Linux/UNIX админис- Для обновления статуса необходи-
управление стандартным оборудова- траторов. В последний, пятый день ин- мо заново сдавать экзамен на общих
нием, программными RAID и LVM-то- тенсивного обучения слушатели сдают основаниях (хотя и со скидкой). Единс-
мами, работа с файловыми системи экзамен на статус RHCE. твенное преимущество у обладате-
ext2/ext3. Рассматриваются клиенты Ряд других «продвинутых» курсов, лей сертификата – доступ к учебнику
NFS и autofs, процесс инициализации к сожалению, на настоящий момент не- по обновлению навыков через специ-
системы и загрузчик GRUB, админис- доступен для слушателей на террито- альный портал RHCT/RHCE.
трирование пользователей, групп и уп- рии России и стран СНГ, так как ком- Также на сайте Red Hat [2] доступ-
равление службами, клиенты NIS, DNS, пания Red Hat пока не делегировала на online-проверка действительности
DHCP, утилиты автоматизации выпол- право проведения некоторых курсов выданного сертификата.
нения задач, RPM и многое другое. Од- своим партнерам. В частности, кур- Безусловно, каждый сам для се-
на из самых интересных частей курса – сы линейки RHCA – подготовки сер- бя решает необходимость в сертифи-
вторая половина последнего дня обу- тифицированного архитектора мож- кации и прохождении авторизованно-
чения, где используются все получен- но прослушать только непосредствен- го обучения. Но по крайней мере если
ные за предыдущие дни навыки. Слу- но в Red Hat. вы всерьез задумываетесь об обуче-
шатели в течение нескольких часов нии или подтверждении своих навыков
тренируются в устранении реальных Сертификация работы с Linux-системами, то, надеюсь,
неисправностей на специально подго- для технических статья будет вам полезна.
товленных рабочих станциях. специалистов
Еще один популярный курс – «Се- В рейтинге CertCities сертификация Литература и ссылки:
тевые службы Red Hat Enterprise Linux RHCE названа «Hottest Certification for 1. Маркелов А. «Три К» сертификации
и администрирование безопасности». 2006» [4], опередив CCIE, MCA, LPI 2, для IT-специалистов. – Журнал «Ком-
Он закладывает основы, необходимые MCSE и некоторые другие программы пьютерра», №13(537)/2004. Доступ-
для успешной сдачи экзамена на ста- сертификации. Основное отличие сер- на по адресу: http://www.markelov.net/
тус RHCE. Здесь слушатели знакомят- тификаций компании Red Hat от многих articles.php?lng=ru&pg=38.
ся с базовой настройкой и настройкой других – это практическая направлен- 2. Red Hat Global Learning Services – https://
безопасности таких служб, как DNS, ность экзаменов. На экзамене, продол- www.redhat.com/training.
NIS, Apache, Samba, Sendmail, Postfix, жающемся 3 часа (RHCT) или 5,5 ча- 3. Переводы официальной документации
FTP, SSH, а также некоторых других са c перерывом на обед (RHCE), соис- RHEL на русский язык – http://www.rhd.
служб и настройкой брандмауэра. Кро- кателю приходится сталкиваться с ре- ru/docs.
ме того, обсуждаются вопросы безо- альными задачами по устранению не- 4. CertCities.com’s 10 Hottest Certifications for
пасности системы. исправностей и настройки Linux-сис- 2006 – http://www.certcities.com/editorial/
Наконец существует «Курс уско- тем, а не с выбором вариантов отве- features/story.asp?EditorialsID=9.
ренной подготовки и сертификации тов из предложенного списка. Руко- 5. Руководство по подготовке к экзаме-
RHCE», который представляет собой водство по подготовке к экзаменам нам RHCE и RHCT – http://www.rhd.ru/
«выжимку» из двух предыдущих кур- расположено на сайте [2]. Также до- rhce_prepguide.php.

72
bugtraq

Отказ в обслуживании в SCTP Отказ в обслуживании


в ядре Linux в Kerio WinRoute Firewall
Программа: Linux kernel 2.6.16 и более ранние версии. Программа: Kerio WinRoute Firewall версии до 6.2.1.
Опасность: Средняя. Опасность: Средняя.
Описание: 1. Уязвимость существует из-за некорректно- Описание: Уязвимость существует из-за ошибки в инспек-
го использования элементов таблицы состояния в SCTP- торах протоколов SMTP и POP3. Удаленный пользователь
коде, когда система получает определенные ECNE-раз- может с помощью специально сформированного e-mail-со-
делы в состоянии CLOSED. Удаленный пользователь мо- общения вызвать отказ в обслуживании приложения.
жет с помощью специально сформированного пакета вы- URL производителя: www.kerio.com.
звать панику ядра. Решение: Установите последнюю версию (6.2.1) с сайта
2. Уязвимость существует при обработке входящих фраг- производителя.
ментированных SCTP-пакетов. Удаленный пользователь мо-
жет с помощью специально сформированных COOKIE_
ECHO и HEARTBEAT-пакетов вызвать панику ядра. Обход ограничений безопасности
3. Уязвимость существует из-за ошибки в функции sctp_ в Kerio MailServer
skb_pull() в lksctp. Удаленный пользователь может с помо- Программа: Kerio MailServer версии до 6.1.4.
щью специально сформированного пакета, содержащего Опасность: Средняя.
два или более фрагментов DATA в сообщении вызвать от- Описание: Уязвимость существует из-за неизвестной
каз в обслуживании системы. ошибки при обработке вложений. Удаленный пользователь
4. Уязвимость существует из-за ошибки при обработке может обойти фильтрацию вложенных файлов в сообщени-
большого количества маленьких сообщений в SCTP. Уда- ях. Подробности уязвимости не сообщаются.
ленный пользователь может вызвать отказ в обслужива- URL производителя: www.kerio.com/kms_home.html.
нии системы. Решение: Установите последнюю версию (6.1.4) с сайта
URL производителя: www.kernel.org. производителя.
Решение: Установите последнюю версию ядра (2.6.16.15)
с сайта производителя.
Переполнение буфера в ClamAV
Программа: Clam AntiVirus (clamav) 0.80 по 0.88.1.
SQL-инъекция в Invision Power Board Опасность: Средняя.
Программа: Invision Power Board 2.1.5, возможно, более Описание: Уязвимость существует из-за ошибки проверки
ранние версии. границ данных в HTTP-клиенте в утилите Freshclam. Уда-
Опасность: Средняя. ленный пользователь может вызвать переполнение стека,
Описание: Уязвимость существует из-за недостаточной об- если размер HTTP-заголовков, полученных от веб-серве-
работки входных данных в параметре selectedtids в функ- ра, превышает 6 Kб. Удачная эксплуатация уязвимости воз-
ции post_delete() сценария func_mod.php при удалении не- можна, если Freshclam используется для закачки обновле-
скольких тем в форуме. Удаленный пользователь может ния сигнатур вирусов с злонамеренного сервера (напри-
с помощью специально сформированного запроса выпол- мер, посредством отравления DNS-кеша).
нить произвольные SQL-команды в базе данных приложе- URL производителя: www.clamav.net.
ния. Пример: Решение: Установите последнюю версию (0.88.2) с сайта
act=mod&auth_key=2b71da21cbacba35ccf6fc04fe807d9a&st= ↵ производителя.
0&selectedpids=-1)
UNION SELECT 1,3/*&tact=delete

URL производителя: www.invisionboard.com. Переполнение буфера


Решение: В настоящее время способов устранения уязви- в Argosoft FTP Server
мости не существует. Программа: Argosoft FTP Server 1.4.3.6, возможно, более
ранние версии.
Опасность: Средняя.
Переполнение буфера в mpg123 Описание: Уязвимость существует из-за ошибки проверки
Программа: mpg123 0.x. границ данных при обработке параметров в команде RNTO.
Опасность: Высокая. Удаленный пользователь может вызвать переполнение ди-
Описание: Уязвимость существует из-за ошибки провер- намической памяти и выполнить произвольный код на це-
ки границ данных в функции III_i_stereo() в layer3.c при об- левой системе.
работке файлов MPEG 2.0 layer 3. Удаленный пользователь URL производителя: www.argosoft.com/applications/ftpserver.
может вызвать переполнение буфера и выполнить произ- Решение: В настоящее время способов устранения уязви-
вольный код на целевой системе. мости не существует.
URL производителя: www.mpg123.de.
Решение: В настоящее время способов устранения уязви- Составил Александр Антипов
мости не существует.

№6, июнь 2006 73


образование

Linux в школе?

Сергей Яремчук
Из всех сфер применения вычислительной техники один из самых горячо обсуждаемых
вопросов – использование GNU/Linux в области образования. Споры спорами, но на сегодняшний
день на большинстве компьютеров в учебных заведениях стоит Windows.

А зачем Linux в школе? которые затем станут потенциальны- сравнить деятельность по борьбе с пи-
Как вы думаете, почему компания ми пользователями системы. Попро- ратством звукозаписывающих компа-
Microsoft усиленно обращает внима- буйте в офисе вместо MS Office пос- ний и Microsoft, то можно отметить от-
ние на вузы и школы, проводя раз- тавить OpenOffice.org. Внешне и фун- носительно ленивые потуги последней.
личные акции, скидки на ПО. Да и во кционально они очень похожи, но пси- Не в попытке ли приручить пользова-
время кампании по борьбе с пиратс- хологически человек воспринимает теля здесь дело? А вот когда решат
ким софтом учебные заведения были перемены тяжело, и поверьте, поль- все-таки гайки позакручивать, то как
практически нетронуты, лишь немно- зователи будут искать разные причи- вы думаете, за какой системой будет
го «припугнули» и практически оста- ны, чтобы им поставили старый офис- стоять очередь?
вили в покое. Все просто до безобра- ный пакет. Да, пусть Microsoft при этом Linux же пришел на десктопы не-
зия. Человек по природе своей сущес- понесет некоторые убытки, но они бу- давно и в принципе несколько запоз-
тво ленивое, и, разобравшись с конк- дут несравнимы с теми, которые она дало, так что пока не может похвас-
ретным вопросом один раз, он не захо- понесла бы, усилив борьбу с пиратс- таться большим количеством поклон-
чет ничего нового и будет в большинс- твом и доведя ее до победного кон- ников, не занимающихся информати-
тве своем пользоваться старыми зна- ца. Поэтому и пиратство на террито- кой профессионально. Основная же
ниями, переучиваться никто не любит. рии бывшего Союза вопреки подня- часть пользователей просто не видит
А ведь в учебных заведениях ежегод- тому шуму не только не уходит в под- смысла менять систему, отказывать-
но проходят обучение тысячи человек, полье, а, наоборот, процветает. И если ся от любимых приложений, а неко-

74
образование
торые, возможно, просто опасаются, страняются промоутинговые скидки, зывают о непонятных протоколах, а за-
что не смогут самостоятельно разо- а стоят они на порядок дороже. В слу- тем на практических занятиях показы-
браться. В школах ситуация полностью чае же со свободным ПО деньги вкла- вают, как настроить Windows для рабо-
совпадает с описанной. За несколь- дываются не в конкретную програм- ты в сети. Учитывая, что особенности
ко лет все программы обучения фак- му, а в подготовку человека. Систе- настроек в последней скрыты, получа-
тически были адаптированы только мы и технологии меняются постоянно ется, что теория и практика разделены,
под Windows, учителя тоже привыкли и будут требовать постоянных обнов- и пользователь просто заполняет поля,
к этой системе, потому что это единс- лений (капиталовложений), а знания часто не понимая, зачем и что он дела-
твенное, что было доступно. С накатан- остаются. В большинстве школ ситу- ет. Хорошо это или плохо, однозначно
ного пути уходят только энтузиасты, ко- ация такова, что школьник, имеющий трудно сказать. С одной стороны, боль-
торым надоели вечные перестановки доступ к Интернету и не озабоченный шинству эти знания явно не нужны, но
системы, необходимость обновления кучей проблем, может дать фору учи- с другой – каждая нестандартная си-
версий системы и оборудования пос- телю информатики по знаниям или туация приводит такого пользователя
ле выхода очередной версии Windows, взломать систему, потому что учителю в замешательство.
а также постоянные шалости учени- не хватает квалификации все профес- На курсах по геоинформационным
ков, вирусы и пр. Кстати, парадоксы сионально настроить. После перепод- системам тоже произошла интересная
встречаются и здесь. Так, если почи- готовки технический уровень препода- ситуация. Преподаватель рассказы-
тать требования к статьям в научные вателя повысится, и он сам теперь смо- вал о проблемах, возникающих при со-
журналы в различных вузах, то одним жет поддерживать ПО в современном здании подобных систем. Они связа-
из пунктов обязательно стоит MS Word, состоянии, защитить сеть, объяснить ны с большим объемом работ, кото-
и именно определенной версии (иног- не на пальцах, а на реальных приме- рые необходимы провести при созда-
да вплоть до build). Об этом почему-то рах основы или принципы работы Ин- нии подобных систем и соответствен-
мало говорят, но ведь разные версии тернета и пр. Причем это, можно ска- но с большими финансовыми затра-
Microsoft Office тоже не всегда дружат зать, единоразовое вложение, т.к. для тами, что не всегда могут себе позво-
друг с другом. Это, конечно, хорошо, работы с любым Linux достаточно по- лить некоммерческие проекты. И со-
когда диск со всеми версиями офи- нять базовый принцип и некоторые ответственно на поставленный воп-
са стоит копейки и за его нелегаль- принципы работы, далее все идет бо- рос «а есть ли бесплатные (свобод-
ное использование никто ответствен- лее-менее по накатанной. Может, си- ные) альтернативы подобному коммер-
ности не несет. А если бы пришлось туация описана идеально, но, по-мое- ческому ПО», преподаватель, не заду-
каждый раз покупать нужную версию му, именно учителя в силу специфики мываясь, ответил, что такого и не мо-
по рыночной цене, то мне трудно пред- своей профессии склонны к самообра- жет быть. Как же он удивился, когда
ставить, как бы велась научная работа зованию, повышению своей квалифи- через некоторое время я принес ему
в этом случае. Запад эту проблему ре- кации, обмену опытом. Хотя, по прав- свободную альтернативу и показал
шил намного проще, там используют- де, потрясения последних лет породи- возможности ПО, входящего в ком-
ся только открытые форматы. ли и здесь массу проблем, в том чис- плект. Правда, на программу курсов
ле лень, заключающуюся в нежела- это никак не повлияло, все осталось
Затараты нии изучать что-то новое. Вы скажи- по-старому.
на использование те, что человек тоже весьма не наде- Еще одно отличие состоит в том,
В Интернете периодически появляют- жен, он может заболеть, а то и вовсе что при изучении /использовании
ся цифры сравнения затрат при ис- перейти на другую работу. Так ведь и Windows от пользователя не требу-
пользовании Windows и Linux, при этом купленная система не всегда работает ется глубоких знаний и весь процесс
сходятся в том, что эта сумма пример- так, как требуется. Кроме того, здесь (в том числе и справочная информа-
но одинакова. Причина такова, что хо- начинает срабатывать принцип, кото- ция системы) подчас сводится к бес-
тя софт и бесплатный, но все равно рый биологи называют «коллективным смысленному запоминанию и затем
потребуется научить людей им поль- иммунитетом», когда количество при- воспроизведению последовательнос-
зоваться. То есть с точки зрения фи- витых от некоторой болезни не поз- ти действий без понимания происхо-
нансирования смысла использовать воляет возникнуть эпидемии. Так вот, дящего. Да и инструментов для тон-
Linux вроде бы и нет. Но это только сейчас все привиты Windows, а Linux кой настройки некоторых параметров
поверхностный взгляд. Достаточно смогли заразиться только те, кто смог в самой системе просто нет, если толь-
вспомнить, что в случае с системой преодолеть этот барьер. ко самому не лезть в реестр, что уже
Microsoft мы платим за ПО, которое, требует определенных знаний. Как
кстати, через год-два будет устарев- По каким принципам вы думаете, тяжело Microsoft создать
шим и потребует дополнительных вло- ведется обучение? встроенный графический инструмент
жений на обновление и времени на ос- Как пример, мне довелось пару раз по- для настройки реестра Windows? Нет.
воение. Не говоря уже о том, что кро- бывать на курсах по изучению сетевых Нужен пользователь, бездумно тыкаю-
ме самой системы, еще нужны другие технологий, кроме того, видеть про- щий в кнопки, которому можно расска-
программы (антивирус, офис, компиля- граммы некоторых других курсов. Изу- зывать сказки об удобных интерфей-
тор, приложения для работы с графи- чение в некоторых ведется по такому сах и новых возможностях. Это отчас-
кой и пр.), на которые уже не распро- принципу. Сначала новичкам расска- ти подтверждается и справочной сис-

№6, июнь 2006 75


образование
темой, в которой даются ответы на то, зубного врача только теоретическим  SEUL (Simple End User Linux)/edu –
что нужно нажать для выполнения кон- курсом. Я к такому не пойду), и если http://seul.org/edu;
кретной операции, без пояснения того, есть желание, то и расширить функ-  Schoolforge – http://www.schoolforge.
зачем и что делается. циональность тех или иных инструмен- net;
В Linux же от пользователя требует- тальных средств. Ученик не должен  K12OS – http://k12os.org;
ся в первую очередь понимание самих быть ограничен в возможности изуче-  K12Linux – http://k12linux.org;
механизмов работы, которые не толь- ния, учеба должна побуждать челове-  KDE Edutainment Project – http://edu.
ко не скрываются, а скорее, наоборот, ка к дальнейшему развитию. Только kde.org;
о них говорят постоянно и везде, оби- так появляются будущие Торвальдсы.  O FS E T ( O rganization for Free
лие документации уже ставится в ви- Кстати, в его книге «JUST FOR FUN» Software in Education and Teaching) –
ну системе, и все потому, что ее объ- описана ситуация, как студенты со- http://www.ofset.org/freeduc;
емы уже превосходят все мыслимые ревновались с преподавателем в изу-  O p e n S o u r c e S c h o o l s – h t t p : / /
размеры, и в некоторых дистрибу- чении UNIX. А в Windows в чем сорев- opensourceschools.org;
тивах ее выносят уже на отдельный новаться, кто быстрее кнопки нажмет?  портал свободного ПО UNESCO
диск. Сами же параметры конфигу- Windows как система фактически под- (United Nations Educational, Scientific
рационных файлов отходят на второй страивает под себя человека, который, and Cultural Organization) – http://
план, и достаточно разобраться один не думая, будет чувствовать себя оди- www.unesco.org/webworld/portal_
раз, чтобы чувствовать себя в любом наково во всех условиях, в Linux же, на- freesoft/index.shtml;
дистрибутиве Linux более-менее сво- оборот, позволено заставить систему  отдельного упоминания стоят сай-
бодно. При этом эксперименты толь- делать то, чего хочется мне, а не как ты проектов LinuxForKids – http://
ко поощряются, и код не скрывается. задумал разработчик. www.linuxforkids.org;
Система сложна, так это даже лучше, Делайте все что хотите, а главное –  Tux4Kids, представляющие свобод-
ведь решение проблем заставляет че- думайте. Скажите, не лучший ли это ное образовательное ПО, ориенти-
ловека думать. инструмент для школы. Как бы то ни рованное на детей младше 10 лет
В книгах бывшего разведчика Ре- было, но в некоторых странах сегодня (для этой категории труднее все-
зуна-Суворова описывается подготов- существует законодательный запрет го найти программы) – http://www.
ка спортсменов и спецназа. Так вот, на использование коммерческого ПО tux4kids.net.
только тот, кто может сделать сегод- в учебных заведениях во избежание
ня чуть больше, чем вчера, добивает- скрытого промоутинга. Да и поговари- К сожалению, несмотря на нали-
ся успеха, а изначально выбирающие вают, что пингвин Тукс может стать та- чие такого большого количества ре-
легкий путь остаются далеко поза- лисманом общественной системы об- сурсов, большая часть из предлагае-
ди. Да, согласен, не все могут и, глав- разования Америки, т.к. позволяет пе- мого софта, вероятно, не найдет при-
ное, хотят быть профи при обращении рестать тратить сотни тысяч долларов менения. Причина банальна – отсутс-
с компьютером, но тем, кому это нуж- на программное обеспечение. твие локализации. Хотя можно отме-
но, должны быть созданы максималь- тить, что ситуация сдвинулась с мер-
ные условия. Что имеем сегодня? твой точки и прогресс налицо. Неко-
Далее. Стремительный прогресс Необходимо отметить, процесс раз- торые приложения уже локализова-
в науке, искусстве является в том чис- работки свободного ПО для образо- ны если не полностью, то в объеме до-
ле и результатом совместного исполь- вательных целей шел непрерывно статочном, чтобы их можно было ис-
зования накопленных знаний, идей, те- и целенаправленно, поэтому, хоро- пользовать, не говоря уже о том, что
орий и исследований. И в то же время шо поискав в Интернете, можно най- за это время многие из них выросли
в школах устанавливается закрытое ти большое количество приложений качественно.
программное обеспечение с лицен- разного качества исполнения, рабо- Я против идеологии запретов, огра-
зионными ограничениями, закрыты- тающих как в консоли, так и с графи- ничений, отсутствия альтернативы, ко-
ми форматами и технологиями, к тому ческой оболочкой, практически на все торые в случае с образованием толь-
же заставляющее постоянно устанав- случаи жизни. Некоторые из них уже ко идут во вред делу. Здесь Linux в си-
ливать самую последнюю версию ПО упоминались на страницах журнала, лу своей открытости и демократичнос-
вне зависимости, нужно ли это вообще. так как входят в большинство дистри- ти подходит все-таки больше. Конечно,
При этом постоянно требующее фи- бутивов (OpenOffice, GIMP, Firefox, Dia и сегодняшняя ситуация с программами,
нансирования, которое могло бы пойти пр.). Практически все возможные ком- ориентированными на сферу образо-
на дальнейшее развитие системы об- бинации слов Linux, education, schools, вания, еще далека от идеальной, про-
разования вообще, а не только на об- если набрать их в строке веб-браузе- граммы локализованы не полностью,
новление программного обеспечения. ра, то наверняка получите отклик сер- нет стандартного интерфейса, не хва-
Ученикам (студентам) нужно по край- вера. Вот только несколько ссылок, где тает подготовленных специалистов
ней мере дать возможность изучить, найдете информацию по применению и прочее. Но главное, что она общи-
как работают те или иные инструменты, свободного ПО и Linux в учебных за- ми усилиями сдвинулась с места. И по-
дать понять, что происходит, им нужна ведениях: моему, не использовать заложенный
возможность заглянуть вовнутрь, изу-  Open Source Education Foundation – в OpenSource потенциал – это просто
чить (а попробуйте научить хорошего http://www.osef.org; преступление.

76
образование

Дистрибутив Edubuntu:
специально для школ

Сергей Яремчук
В учебных заведениях некоторых западных стран позиции UNIX настолько сильны,
что производителям проприетарного софта остается только завидовать этому. Чтобы
упростить процесс использования свободного ПО в сфере образования, организациями
и энтузиастами были собраны специальные дистрибутивы.

78
образование

О
собенно этот процесс оживил-
ся в последнее время в связи
с ростом популярности LiveCD-
дистрибутивов Linux, которые позволя-
ют опробовать новые решения, не при-
бегая к кардинальной перестройке уже
имеющейся инфраструктуры.
Вот некоторые из них:
 польский Linux-EduCD (http://
www.simp-st.pl/linux-educd.html);
 американский Quantian (http://dirk.
eddelbuettel.com/quantian);
 итальянский eduKnoppix (http://
eduknoppix.dmf.unicatt.it);
 норвежский Skolelinux (http://www.
skolelinux.no);
 LiveCD FREEDUC (http://www.ofset.
org/freeduc), разрабатываемые
при поддержке OFSET (Organisation
for Free Software in Education and
Teaching) и UNESCO.
Рисунок 1. Рабочий стол Edubuntu

Список дистрибутивов из разных гать за недружелюбность к обычным мер, в статье Владимира Якубовского
стран можно продолжать. пользователям и необходимость чте- «Ubuntu 5.10 – первый взгляд на «Линукс
ния документации. Ничего подобного. для людей», в первом номере элект-
Дистрибутив Edubuntu Начинающие пользователи Windows ронного приложения к журналу «Open
Edubuntu представляет собой версию задают не меньше вопросов, чем поль- Source». Та же программа установки,
популярного дистрибутива Ubuntu, опти- зователи Linux и также сталкиваются которая спокойно, без лишних вопросов
мизированную для применения в шко- с проблемами. Поэтому в любом слу- проведет пользователя по всем этапам
лах. В отличие от остальных дистрибу- чае пользователям требуется помощь установки. Несколько непривычно, что
тивов его с успехом можно применять консультантов или приходится разби- пароля root никто не спрашивает, а сис-
и дома. Фактически Edubuntu это и есть, раться самостоятельно. Для повсед- тема просто просит создать учетную за-
собственно, Ubuntu, но только с другой невных задач пользователям не по- пись обычного пользователя, под ко-
целевой аудиторией и другими прило- надобится особых знаний при работе торым и будет происходить дальней-
жениями. Создаетсяи поддерживает- с Edubuntu. шая работа. Созданный при установке
ся той же группой разработчиков, что пользователь автоматически заносит-
и оригинальный дистрибутив. Центра- Что внутри? ся в группу admin, представителям ко-
лизованное управление конфигураци- Текущая стабильная верся на мо- торой разрешено использовать sudo.
ей, учетными записями пользователей мент написания статьи – Edubuntu 5.10 Все системные настройки производят-
и приложениями, плюс комплектование «Breezy Badger», о которой и пойдет ся исключительно через sudo (или «run
дистрибутива специальными програм- речь далее. Уже имеется версия 6.06 as different user» в графической среде),
мами для учебных заведений, – на это beta, предназначенная для разработ- при этом вводится пароль текущего
ориентирован Edubuntu. Edubuntu пост- чиков. Учитывая 6-месячный цикл пользователя. Поначалу такая систе-
роен на идеях, записанных в манифес- разработки Ubuntu, в ближайшее вре- ма безопасности кажется непривычной
те Ubuntu, в котором, в частности, го- мя следует ожидать нового релиза, но и неудобной, но быстро осваиваешься,
ворится, что программное обеспече- главное – познакомиться c подобным к тому же на некоторые повторяющие-
ние должно быть бесплатным, доступ- дистрибутивом в общем. Да и в новой ся операции (например, копирование)
ным на любом языке и использоваться версии состав приложений тот же, что и пароль запрашивается только первый
всеми, в том числе и людьми с физичес- в «Breezy Badger», единственное отли- раз. Но зато забыть оставить активи-
кими недостатками. Пользователь всег- чие – это появление LiveCD-версии. рованным терминал с администратор-
да должен иметь возможность свобод- На странице закачки предлагает- скими привилегиями при таком подходе
но модифицировать используемое про- ся два образа. Один собран для i386 просто невозможно, особенно учитывая
граммное обеспечение. архитектуры (для всех систем), вто- специфику применения Edubuntu, когда
Напомню, что Ubuntu построен на рой – для 64-битных систем (Athlon64, преподаватель может часто отвлекать-
базе самого свободного дистрибути- Opteron, EM64T Xeon). Доступны и DVD- ся, для помощи ученикам.
ва GNU/Linux – Debian. Дружелюбность, образы. Единственной рабочей средой яв-
присущая Ubuntu, позволяет работать Edubuntu во многом напоминает ро- ляется Gnome (см. рис. 1). Возможно,
с ним пользователям со средними тех- дительский дистрибутив, о котором бо- кому-то покажется, что KDE лучше бы
ническими навыками. Linux принято ру- лее подробно можно почитать, напри- подошел на эту роль, но для неиску-

№6, июнь 2006 79


образование
показать своему ребенку приходилось
разбираться самому. Теперь, во-первых,
сам проект весьма продвинулся впе-
ред, назначение некоторых задач ста-
ло более понятным даже без перевода,
а во-вторых, некоторые задачи и зву-
ковые сообщения уже переведены на
русский. Gcompris содержит игры, поз-
воляющие научиться простым матема-
тическим действиям, определять вре-
мя по часам, тренироваться в написа-
нии слов на слух, чтению, пользовать-
ся мышью и клавиатурой. Кроме того,
имеются различные логические игры,
игры на развитие памяти – всего не пе-
речислить. И все это в понятной и при-
ятной детям игровой форме. По край-
ней мере, мой ребенок, применяющий
свои математические познания только
Рисунок 2. Установка/удаление программ в Edubuntu для того, чтобы получить еще пару кон-
фет и неприемлющий обучение в явном
шенного пользователя, поверьте, это- 6, 7>. Поэтому в xorg.conf необходимо виде, с превеликим удовольствием от-
го будет достаточно. При желании подправить параметр XkbLayout. влекается (даже меня заставляет вклю-
любую другую среду можно устано- чать компьютер) на спасение пингвинов
вить через систему обновлений apt- Option "XkbLayout" "us,ru(winkeys)" и не подозревает при этом подвоха. При
get или Synaptic в графическом ва- этом часто одна задача решается раз-
рианте, где доступно более 16 ты- Да и в качестве локали использу- ными приемами. Например, в матема-
сяч приложений. Кроме того, в глав- ется UTF-8, что уже, впрочем, стало тическом разделе необходимо ввести
ном меню имеется пункт «Add/Remove традицией, сегодня все меньше можно правильный ответ, до того как пингвин
Aplications» (/usr/bin/gnome-app-install) встретить дистрибутивы, в которых ис- упадет в воду. Здесь требуется быст-
(см. рис. 2), являющийся также над- пользована традиционная локаль. Од- рый ответ, который стандартным ме-
стройкой к apt-get, но в нем собраны ним из компонентов Edubuntu является тодом (пересчитав пальцы) не решить.
только ссылки на основные приложе- LTSP (Linux Terminal Server Project [3]), Другая задача вроде бы аналогична,
ния. Рабочее окружение локализова- при помощи которого можно присо- необходимо убрать в таблице все ячей-
но, как говорится, из коробки. Если при единить маломощные клиентские тер- ки, ответ на математическое действие
установке был выбран соответствую- миналы к серверу Linux. Кроме того, будет равняться определенному числу
щий язык, то большая часть сообще- в комплекте идет утилита tsclient [4], (рис. 3). Здесь, во-первых, сразу стало
ний, меню Gnome и некоторых прило- посредством которой можно получить ясно, что сложение моему ребенку да-
жений после регистрации в системе бу- доступ к удаленным сервисам Microsoft ется лучше чем вычитание, а, во-вто-
дут также на этом языке. Windows NT/2000 Terminal Services и XP рых, решив первый раз задачу в лоб, т.е.
Еще во время установки система Remote Desktop Sharing. просто пересчитав все ответы, во вто-
«предупреждает пользователя», что рой раз появились первые признаки оп-
текущий состав приложений не полно- Полезные программы тимизации работы, которые, надо ска-
стью соответствует требуемым локаль- В дистрибутиве собрано лучшее, по мне- зать постепенно усложнялись. Эффект
ным настройкам и рекомендуется ска- нию разработчиков, свободное програм- налицо, используя игры удалось повы-
чать и установить необходимые вер- мное обеспечение, ориентированное на сить познания в математике в относи-
сии самостоятельно. Поэтому о пол- сферу образования. Рассмотрим кратко тельно короткий срок. Хотя полностью
ной локализации говорить не прихо- их назначение. Хотя, еще раз напомню, согласен, что живого общения с педа-
дится, к тому же и некоторые прило- у других дистрибутивов состав приложе- гогом не заменит ничто, но используя
жения, входящие в состав, не лока- ний подчас отличается кардинально. разные подходы, удается быстрее до-
лизованы вообще, либо это сделано В первую очередь хочу отметить на- биться требуемого результата.
лишь частично. OpenOffice.org напри- личие Gcompris, с которым я знаком уже Всего более 20 игр. Кроме набора
мер, придется переустановить пол- продолжительное время. Правда, рас- пасьянсов, некоторых карточных игр,
ностью, взяв локализованную копию положен он во вкладке «Игры», но это и вариантов реверси, головоломок, са-
с http://www.openoffice.ru. есть набор развивающих игр для детей пера, которые также, впрочем, явля-
Раскладка клавиатуры переключа- в возрасте от 2 до 10 лет. Когда я с ним ются логическими играми, есть неко-
ется, как это привычно пользователям впервые познакомился года два три на- торые и образовательные.
Windows, по <Alt+Shift>. Запятая и точ- зад, о какой либо локализации говорить В первую очередь это три приложе-
ка размещены нестандартно, по <Shift + не приходилось, и для того чтобы что-то ния от проекта Tux4kids:

80
образование

Рисунок 3. Gcompris поможет в изучении математики Рисунок 4. При помощи Kalzium можно изучать периодическую
и не только систему элементов

 в TuxMath («Tux, of Math Command»),  KmessedWords – игра рассчитана ставляющий собой систему распреде-
чтобы спасти планету, необходимо на детей от 10 лет, в ней необходимо ления времени (занятия, дежурство, по-
быстро производить математичес- расставить правильно буквы в слове. сещаемость, оценки и демографичес-
кие вычисления; Игра имеет три уровня сложности, кую информацию).
 TuxTyping научит быстро печать сло- можно создавать свои слова и пра- Кроме образовательных приложе-
ва (правда, только английские); вила. ний в дистрибутиве можно найти пол-
 веселая рисовалка TuxPaint, скорее  KmPlot – математический графо- ный комплект программ для повседнев-
всего, оставит вас без компьютера построитель с мощным синтакси- ной работы. Офисные Scribus, Evolution,
надолго. ческим анализатором. OpenOffice 2.0, Интернет Gaim, Firefox,
 KPercentage – небольшая матема- XCat, GnomeMeeting, клиент сети bittorent,
Кроме того, есть Atomix, который тическая программка, которая помо- программы для просмотра видео и про-
даст понятия о молекулах и атомах, жет освоить вычисление процентов. слушивание музыки (mp3 не поддержи-
и gLIfe, некий автомат искусственной  Kstars – простой на вид имитатор вается). Учитывая направленность дис-
жизни, и некоторые другие. ночного звездного неба, на самом трибутива, не мешало бы наличие при-
Пункт «Образовательные» содер- деле использующий самые совре- ложения, при помощи которого можно
жит еще 14 приложений, большая часть менные алгоритмы вычисления по- было блокировать доступ к некоторым
которых из KDE edutainment module [2]: ложения небесных тел и имеющий веб-ресурсам, на которые детям по-
 Kalzium – покажет всю информацию базу о тысячах небесных объектах падать не желательно, хотя бы при по-
по периодической системе элемен- и снимки, взятые с космического те- мощи одного из плагинов Firefox (http://
тов, подробно по каждому элемен- лескопа Hubble и некоторых обсер- kb.mozillazine.org/Parental_controls).
ту, по группам, по характеристикам, ваторий.
по времени открытия и пр. (рис. 4).  KTouch – еще один клавиатурный Вывод
 KBruch – поможет научиться обра- тренажер, правда, опять же англий- Edubuntu еще далек от идеала, установ-
щаться с дробями, возможны четы- ский. ка на маломощных компьютерах про-
ре варианта – посчитать, сравнить,  KTurtle – образовательная програм- исходит медленно, дистрибутив и про-
преобразовать и разложить на мно- мная среда, использующая язык про- граммы недостаточно локализованы,
жители. граммирования Logo (первоначально, некоторые настройки не понятные инту-
 Keduca – представляет собой сис- ответвление LISP). Легкость и доступ- итивно. Но в том, что такому дистрибу-
тему тестирования, в состав входит ность делает эту программу непло- тиву будет найдено применение, сомне-
и редактор тестов. хим подспорьем при обучении (имен- ваться не приходится, особенно учиты-
 KhangMan – компьютерный вари- но обучении, Kturtle не предназначен вая низкую стоимость и, главное, состав
ант известной игры виселица, име- для программистов) программирова- программ, входящих в комплект.
ет четыре уровня сложности, рас- нию, математике и геометрии.
считана на детей от 6 лет.  Kverbos – программа для изучения Cсылки:
 Kig (kde Interactive Geometry) – испанских глаголов. 1. Сайт пректа Edubuntu – http://www.
инструмент, позволяющий в диа-  KVocTrain – еще одна программа, edubuntu.org.
логовом режиме изучать матема- цель которой помочь в изучении 2. KDE edutainment – http://edu.kde.org.
тические фигуры и понятия, кро- иностранного языка. 3 Linux Terminal Server Project – http://www.
ме того, может использоваться ltsp.org.
для WYSIWYG создания математи- Кроме этого, если зайти по адре- 4. Утилита tsclient – http://www.gnomepro.
ческих фигур для включения в дру- су http://localhost:7080/, то можно найти com/tsclient.
гие документы. еще один сервис SchoolTool [5], пред- 5. SchoolTool – http://www.schooltool.org.

№6, июнь 2006 81


hardware

Волшебство с паяльником в руках

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

82
hardware

П
роизводители аппаратного LDE-моддинг
обеспечения делают все воз- Два светодиода на передней панели
можное и невозможно для до- (один из которых – Power-LED– посто-
стижения максимальной производи- янно горит, а другой – HDD LED – ожив-
тельности, функциональности, эрго- ленно мигает) – это традиция, сохра-
номики и т. д. Считается, что кустар- нившаяся с древнейших времен, ког-
ным способом ничего усовершенство- да самым престижным компьютером
вать уже невозможно, а вышедшую был IBM XT, выполненный в «строгих
из строя материнскую плату востано- серых тонах», но в наш век подобный Рисунок 1. Подключение нескольких
контроллеров к одному светодиоду
вить по силам только сервисному цен- дизайнерский подход выглядит мало-
тру, но это не так! Творчески настроен- привлекательным и неоправданно ас-
ный системный администратор может кетичным.
и должен дорабатывать компьютер, Разве не интересно загляну ть
попутно исправляя мелкие неисправ- во внутренний мир компьютера, при-
ности типа сгоревших предохраните- цепив индикацию буквально на каж-
лей (далеко не все знают, какое коли- дую шину? Например, подключившись
чество предохранителей расположе- к выводу /RAS модуля памяти (115/154-
но на материнской плате) и т. д. Разу- выводы DIMM-слота на SDR/DDR со-
меется, подобные эксперименты с па- ответственно), мы сможем наблю- Рисунок 2. Внешний вид диодов Шотки
яльником приводят к аннулированию дать за переключениями DRAM-стра-
гарантии, поэтому действуйте на свой ниц оперативной памяти, а 27/63-кон-
страх и риск! такты будут мигать светодиодом при
переключении микросхемы из режи-
Один LED на двоих ма чтения в режим записи! Достаточ-
При подключении дополнительных но взять в руки схему материнской
винчестеров на внешний контроллер платы (схемы рефересных плат бес-
(SCSI или IDE) возникают проблемы платно раздаются с сайта Intel), и че- Рисунок 3. Схема подключения
дополнительного светодиода
с индикацией. Светодиод – один, и он рез несколько минут наш PC превра-
уже занят материнской платой с ос- тится в рождественскую елку! Кста-
новными IDE-контроллерами. Можно, ти, при выявлении причин сбоев это
конечно, просверлить в корпусе дыр- очень помогает.
ку и вывести наружу столько светоди- Вот только напрямую подсоеди-
одов, сколько потребуется, но это мо- нить светодиоды ни в коем случае не-
жет испортить внешний вид компью- льзя! Ну уже хотя бы потому, что шины
тера, к тому же большое количество и так работают на пределе, и при по-
моргающих светодиодов сильно раз- пытке их удлинения все падает в тар-
дражает. тарары. Приходится хитрить, восполь-
Воспользовавшись следующей зовавшись операционным усилите-
схемой (см. рис. 1), мы сможем под- лем, таким, например, как LM358, ко-
Рисунок 4. Пульсовый генератор
ключить к одному светодиоду прак- торый легко выпаять с любой материн- на LM358
тически неограниченное количество ской платы, видеокарты или купить на
контроллеров. рынке. Вот его техническая докумен- и подключенные к ним светодиоды бу-
Для исключения «выгорания» це- тация: http://www.ensc.sfu.ca/reference/ дут монотонно мигать, имитируя рабо-
пей индикации контроллеров мы ис- data-sheets/LM358.PDF, а типовая схе- ту сердца.
пользуем диоды Шотки типа BAT46 ма подключения на рис 3. На самом деле, схема, приведен-
(см. рис. 2), которые можно взять прак- Каждая микросхема LM358 вклю- ная в описании операционного уси-
тически с любой материнской платы, чает в себя целых два операцион- лителя, очень условна, и все «второ-
оставшейся от апгрейда, или купить ных усилителя, а значит, что она мо- степенные» элементы типа фильтров
в радиомагазине за «копейки». Прове- жет обслуживать сразу два незави- в ней опущены. Во-первых, не всегда
ряя их целостность омметром, не вол- симых светодиода. Сама микросхе- на интересующем нас выводе будет по-
нуйтесь, если стрелка не захочет от- ма монтируется прямо на материн- ложительный уровень, поэтому поря-
клоняться. Это свойство диода та- скую плату, непосредственно на ин- док подключения «+» и «–» приходит-
кое – открываться только при дости- тересующий нас вывод, а светодиод ся определять либо «по науке» (све-
жении определенного порогового на- может быть выведен гибким шнуром рясь со схемой), либо «эксперимен-
пряжения. Все необходимые вольтам- на переднюю панель или даже в со- тально» (если подсоединить непра-
перные характеристики диода содер- седнюю комнату. вильно, ничего не сгорит, просто све-
жатся в бесплатно распространяемой Незадействованные усилители тодиод моргать не будет). Во-вторых,
документации: http://ronja.twibright.com/ легким движением руки превращают- работа компьютера после такого вар-
datasheets/bat46.pdf. ся в тактовые генераторы (см. рис. 4), варского вмешательства рискует стать

№6, июнь 2006 83


hardware

Рисунок 5. «Правильная» схема подключения контрольных Рисунок 6. HDD-индикатор на самом деле отражает активность
светодиодов от Intel всех ATA/ATAPI-устройств

нестабильной, так что на высоких час- смотрим типовую схему подключения тодиод другого цвета и другой поляр-
тотах ее лучше не применять. POWER LED (см. рис. 7). ности (минус этого решения в том,
Правильное решение (выдерну- На плате (ON-BOARD) расположен что придется «дырявить» лицевую па-
тое из схемы на материнскую плату двухцветный (DUAL-COLOR) светоди- нель, что не есть хорошо, а впрочем...
Intel 100 MHz Pentium(tm) II processor/ од. Это такой специальный светодиод, так даже красивее).
440BX) выглядит так (см. рис. 5). Про- содержащий два LED в одном флаконе.
верено – оно работает и на более высо- Выбор нужного цвета осуществляется Когда индикатор лжет
ких частотах, вплоть до Pentium-4. полярностью. Параллельно ON-BOARD Невероятно, но факт, HDD LED на са-
Основной всего служит чип 74ALS08 LED расположен CHASSIS POWER LED, мом деле отображает активность ши-
(вот ссылка на документацию: http:// что в переводе на русский язык озна- ны IDE и подмигивает любому ATA/
www.standardics.philips.com/products/ чает «светодиод, выведенный на кор- ATAPI-устройству (например, DVD-
als/pdf/74als08.pdf). Это так называе- пус». Итак, все необходимые ингреди- приводу или CD-ROM), что вносит ди-
мый «Quad 2-input AND gate» (2-х вход- енты у нас уже есть! кую путаницу в процесс и нервиру-
ной И-вентиль, в количестве 4-х штук Способ номер один – убираем ста- ет начинающих пользователей, иног-
в одном корпусе) со свитой резисто- рый светодиод с лицевой панели и ста- да даже сдающих компьютер в ре-
ров и конденсаторов, подавляющих вим на его место новый DUAL-COLOR, монт (см. рис. 6). Против схемотех-
помехи. Как и следует из его назва- который можно взять со старой платы ники, конечно, не попрешь, но мы зна-
ния, он обслуживает две «контроль- или в магазине. Все! Теперь он будет ем как быть!
ных» точки, выводимые на один-единс- светиться двумя разными цветами! Разносим HDD и CD-ROM/DVD-
твенный светодиод. Все детали легко Способ номер два – подключаем ROM по разным шлейфам (если не сде-
взять с любой платы, так что на рынок к старому светодиоду еще один све- лали этого сразу), берем в руки лупу и,
идти совершенно необязательно.
Главное – запастись светодиодами.
Яркими и, желательно, разноцветными
(для увеличения яркости в J28 можно
«воткнуть» вышеописанный операци-
онный усилитель).

Два цвета в одном


На многих материнских платах распо-
ложен светодиод, горящий в рабочем
режиме одним цветом, а в ждущем –
другим. Светодиод, расположенный
на лицевой панели некоторых систем-
ных блоков, обычно ведет себя точно
так же, но... «обычно» это еще не всег-
да (у старых системных блоков вооб-
ще никогда).
На самом деле этой беде легко по-
мочь! В большинстве случаев даже не
понадобится трогать паяльник! Рас- Рисунок 7. Типовая схема подключения Power LED

84
hardware
вооружившись омметром, ищем, куда
идет питающий вывод IDE-LED (про-
тивоположный тому, что подключает-
ся к массе). Рано или поздно мы «вре-
жемся» в микросхему 74ALS08 или не-
что подобное ей (см. рис. 5). Аккурат-
но перерезаем 2-й вывод микросхемы
(или отпаиваем его, удаляя припой от-
сосом или обыкновенной медицинской
иглой – иглы для капельниц предпоч-
тительнее).
С этого момента HDD LED будет
подмигивать только одному IDE-кана-
лу, на котором размещен жесткий диск,
игнорируя второй с CD-ROM.
Главное не перепутать каналы!
Впрочем, этот процесс легко обра-
тим, и отпаянный вывод можно при-
паять вновь.
Рисунок 8. Предохранители, охраняющие USB-порты на плате F1 и F2
Реанимация USB-портов,
мыши и клавиатуры
USB-порты мрут как мухи, особенно
когда к ним через разветвитель под-
ключается несколько мощных уст-
ройств, с которыми они уже не справ-
ляются. К счастью, на современных
компьютерах количество USB-пор-
тов обычно достигает четырех-шес-
ти и смерть одного из них, это, конеч-
но же, трагедия, но все-таки не при-
говор. Если материнская плата еще
на гарантии, можно попытаться отнес-
ти ее в ремонт.
Расследование, проведенное мной,
показало, что в подавляющем боль-
шинстве случаев «горит» не сам порт,
а предусмотренный мудрыми конс-
трукторами плавкий предохранитель,
который легко найти, если двигаться
вдоль печатной магистрали от перво-
го вывода USB-разъема (VCC) в глу-
бину материнской платы. Предохра- Рисунок 9. Предохранители, охраняющие клавиатуру и мышь
нитель обозначается латинской буко-
вой F и по обыкновению соседству- Как-то раз один мой знакомый шинство из нас предпочитает выкла-
ет с резисторами и конденсаторами включил старый-старый джойстик, ос- дывать деньги за готовое устройство,
(см. рис. 8). тавшийся от компьютера ZX-Spectrum, даже если его можно собрать само-
Прозвоните его омметром – если в клавиатурный DIN-разъем. Думал стоятельно. Но далеко не все необхо-
он покажет обрыв, с некоторым рис- поиграть! Поиграть не получилось, димые нам устройства представле-
ком предохранитель можно просто пе- а клавиатура, увы, умерла. К счас- ны на рынке.
ремкнуть, хотя правильнее заменить тью, предохранитель принял весь удар Производители ориентируются
его таким же точно или аналогичным, на себя (номинальный ток 1,35 A), на массовый рынок, максимально
рассчитанным на ток 1,5-2,0 A. Чаще после замены которого клавиатура унифицируя настольные компьютеры
всего после этой несложной операции ожила, и компьютер заработал, как и сервера.
USB «оживает». новый! Потребности отдельных пользова-
Аналогичные предохранители за- телей игнорируются, но электроника
щищают мышь и клавиатуру от непра- Заключение не стоит на месте, и доработать «фир-
вильного включения и еще кое от че- Страх перед сложной техникой сдер- менное» оборудование собственными
го (см. рис. 9). живает порывы творчества, и боль- силами вполне реально!

№6, июнь 2006 85


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

Надежда умирает последней:


история компании SGI
Часть 3

Дмитрий Мороз
После череды неудач, постигших SGI в период с 1994 по 1999 годы, многие стали с надеждой
смотреть на нового исполнительного директора. Но сможет ли один человек помочь
«тонущему кораблю»?

«Мы сеяли семя Однако компания, в которой он ра- сячелетие SGI вступала в весьма пла-
инноваций, но потерпели ботал четыре года назад, в 1999 г. бы- чевном состоянии.
неудачу в сборе урожая» ла уже совсем другой. «SGI продол- Планы компании в скором време-
(Боб Бишоп) жает наращивать скорость, но вмес- ни остановить разработку собствен-
До получения должности исполнитель- те с тем теряет высоту. Компания ра- ных графических систем для своих ра-
ного директора SGI Боб Бишоп на про- ботает совсем не так, как должна, тем бочих станций и серверов визуализа-
тяжении девяти лет работал в этой самым «играя на руку» нам», – гово- ции стали более «осязаемыми» в се-
компании, занимая пост главы отдела рил тогда генеральный директор Sun редине 1999 года, когда специально по
маркетинга, пока в 1995 году не поки- Microsystems Скот МакНили. этому поводу SGI подписала соглаше-
нул его, став членом наблюдательного Реструктуризация, о которой как ние с компанией nVidia. Согласно не-
совета акционеров. После предатель- раз перед своим уходом заговорил Бе- му nVidia получила право лицензиро-
ского бегства его предшественника, луццо, оставила неизгладимый отпеча- вать графические технологии SGI, ко-
Рика Белуццо, на предложение воз- ток не только на компании, но и на её торая, в свою очередь, имела доступ
главить SGI Бишоп с радостью согла- служащих. Агонизирующая SGI уже к самым новым чипам, произведённым
сился. «Принимая непосредственное к октябрю 1999 года вынуждена была nVidia. Кроме того, 50 инженеров SGI
участие в формировании нашей но- отрапортовать как о финансовых по- перешли к nVidia для работы над про-
вой стратегии, я окончательно завер- терях, так и о массовых сокращениях ектом «Одиссей». Его результатом
шу процесс трансформации компании персонала. Финансисты «не досчита- стало появление последнего поколе-
для поддержания её роста и прибыль- лись» 68 млн. долларов, а менеджеры ния собственных графических плат
ности, – говорил тогда Бишоп. – У ме- компании – 1100 человек кадрового SGI серии VPro (основная их «изюмин-
ня огромная вера в талантливых лю- состава. При подведении финансовых ка» – 48-битное представление цвета
дей, глубину технологий и лояльность итогов 1999 года стало известно о по- RGBA, позволяющее работать с па-
клиентов SGI». терях 213 млн. долларов. В новое ты- литрой, состоящей из 68 миллиардов

86
ретроспектива
цветовых оттенков), устанавливав- чем особым от рабочих станций дру-
шихся в более поздние модели Octane гих компаний, равно как и от обычных
и новые Octane 2, выпущенные вмес- ПК, не отличались, разве что их гра-
те с O2+ в августе 2001 года. К сожа- фический адаптер VR3, был постро-
лению, кроме более быстрых процес- ен на базе профессионального чипа
соров и новых графических опций эти nVidia Quadro, впрочем, являвшегося
рабочие станции не предлагали ниче- «сынком» обычного GeForce 256.
го нового и при своей заоблачной стои- По типу «цепной реакции» вскоре
мости практически не приобретались. после заявления SGI о желании «из-
Что же касается линейки систем, ра- бавиться» от Visual Workstation после-
ботающих на процессорах Intel Pentium, довало сообщение и о продаже Cray Рабочая станция SGI 230
жить ей оставалось недолго. В конце Research. Начиная с декабря 1999 го-
года стало известно, что усилия SGI, да в Интернете стали появляться слухи
направленные на поиски потенциаль- о том, что SGI ищет потенциального по-
ного покупателя на подразделение, за- купателя на это подразделение. К тому
нимающееся производством рабочих времени Cray Research представляла
станций Visual Workstation, оказались собой довольно жалкое зрелище: 850
безуспешными. Линейка систем на ба- сотрудников (против 4500 в 1996 году)
зе процессоров Intel «камнем» висела и 300 млн. долларов. годового дохода
на «шее» компании, всё дальше затя- (900 млн. долларов. в 1996 году).
гивая её в пучину финансовых убыт- 2 марта 2000 года слухи, наконец-
ков. Потери от продаж рабочих стан- то, подтвердились, и SGI продала Cray
ций 320 и 540 стоили SGI 45 млн. дол- Research со всеми «потрохами» ком-
ларов. «Урок, полученный нами в ре- пании Terra Computer за не оглашён-
зультате запуска Visual Workstation, дал ную общественности сумму (по словам
понять, что в мире быстро совершенс- Wall Street Journal, эта цифра состави-
твующихся систем на базе процессо- ла около 100 млн. долларов. Сравни-
ров компании Intel попытка продвиже- те с суммой покупки в 1996 году, соста-
ния собственных разработок заранее вившей 764 млн. долларов). Новая ро-
обречена на провал», – говорил тог- дительская компания, сама прибываю- Сервер SGI Origin 3400
да главный бухгалтер компании Боб щая в не очень «радужном» состоянии
Солтмарш. (потери Terra Computer во время покуп- и главный инженер Cray Бартон Смит
Ну а пока SGI искала пок упа- ки составляли 7,5 млн. долларов при ушёл в Microsoft. Аналогия с Белуццо
теля, компания решила дать Visual прибыли в 850 тыс. долларов), не ста- напрашивается сама собой.
Workstation последний шанс, благо не- ла диктовать новоиспечённой Cray Inc. В свете продажи подразделений
обходимость в развитии линейки всё свои условия и дала «вольную». Одна- SGI стоит упомянуть слова одного
ещё сохранялась. Однако на этот раз ко, несмотря на выпуск ряда довольно из посетителей сайта Osnews.com, вы-
разработкой продвинутой архитекту- удачных суперкомпьютеров типа SX-1, сказанные по поводу финансовых ос-
ры SGI особо не увлекалась. После X1 и XD1, дела у компании шли всё ху- ложнений компании: «Ничто не сможет
покупки части компании Integraph, SGI же и хуже. На сегодняшний день ак- спасти SGI от краха, поскольку компа-
в мае 2000 г. выпустила её графичес- ции Cray Inc. практически обесцени- ния до сих пор продолжает следовать
кие рабочие станции под своим име- лись. К тому же в ноябре прошлого го- давно устаревшей «университетской»
нем. Новые модели 230, 330 и 550 ни- да один из основателей Terra Computer модели бизнеса: в погоне за стаби-
лизацией своего финансового состо-
Наследник проекта «Реальность» процессором RCP для Nintendo 64, реши- яния она отрезает, отрезает и будет
Одной из идей бывшего управляющего ла воплотить мечты Кларка в реальность, дальше отрезать свои подразделе-
Silicon Graphics Джима Кларка являлся для чего в сентябре 1997 года ушла из ком- ния до тех пор, пока бизнесу не пона-
«перенос» разработок компании в области пании и основала свою собственную, на- добится дальнейшее развитие. Одна-
создания графических процессоров в но- званную ArtX. Первым клиентом новоис- ко к тому моменту от SGI больше ни-
вые сегменты рынка – мультимедийные печённого «стартапа», как не трудно дога- чего не останется».
приставки, игровые консоли, персональ- даться, стала компания Nintendo, по зака- В июле 2000 года состоялось об-
ные компьютеры и т. д. Несмотря на то зу которой ArtX занялась разработкой гра- новление линейки Origin. Архитекту-
что акционерам эта затея не понрави- фического чипа для следующей консоли ра новых серверов Origin 3000 (поколе-
лась, часть инженеров тайком (необходи- японского гиганта под кодовым названи- ние SN-1) под названием NUMAflex со-
мо вспомнить о негласном правиле: «либо ем «Dolphin» (Nintendo GameCube). Позд- стояла из так называемых «модулей»,
в одной лодке со всеми, либо – за бор- нее, 1 марта 2000 года, ArtX была приоб- каждый из которых отвечал за свою
том») поддержала идею их «духовного ретена компанией ATI за 400 млн. долл., функцию. Так, процессорный модуль
лидера». Так, команда под руководством и продолжила свою работу уже под её содержал: процессоры, контроллер
Веи Ена, работавшая над графическим «крылом». ОЗУ и саму оперативную память. В

№6, июнь 2006 87


ретроспектива
ной неудовлетворительный финансо-
Проигранная процессорная гонка нее. К 2002 году частота наиболее произ- вый квартал стал причиной увольне-
В 1997 году SGI убедилась, что более не мо- водительного процессора MIPS, R14000А, ния из SGI 1000 сотрудников. С 1997
жет соперничать с Intel и IBM в разработ- добралась до смехотворной отметки 600 по 2001 год персонал компании со-
ке новых процессоров, поэтому приняла МГц. При этом стоит учесть, что он, как и кратился практически вдвое: с 12 ты-
решение о постепенной миграции своей R12000, являлся обновлённым R10000, ко- сяч до 6 тысяч человек.
продукции на новую платформу. В то вре- торый был выпущен ещё в 1996 году. Не об- Постоянные неудачи вынудили SGI
мя наиболее многообещающим процессо- ладая конкурентоспособной производи- подправить свою философию. Несмот-
ром должен был стать чип Mersed (будущий тельностью, этот процессор мог похвас- ря на то что 75% своих доходов компа-
Itanium), разрабатывавшийся Intel совмест- таться лишь малым энергопотреблением – ния получает в результате продаж ап-
но c Hewlett-Packard с 1993 года. В 1998 году 17 Вт. Тактовая частота следующей вер- паратного обеспечения, SGI, подоб-
SGI официально объявила о том, что посте- сии этого ядра, R16000, достигла 800 МГц. но IBM, решила перепрофилировать-
пенно прекратит разработку и выпуск про- Это был последний барьер, который смог- ся из продавца «железа» в реализа-
цессоров семейства MIPS, а также выделит ла преодолеть MIPS Inc. тора готовых аппаратно-программных
процессорное подразделение в самостоя- В 2004 году SGI планировала присту- решений. Пример – «системы коллек-
тельную компанию (что и случилось в 1998 пить к выпуску процессоров на основе но- тивной визуализации» (Systems for
году, когда на свет появилась MIPS Inc.). вой архитектуры под кодовым названием Collaborative Visualization). Суть их со-
Однако постоянные проблемы, возникав- N1, которая должна была принести в мир стоит в том, что над проектом, будь то
шие по ходу разработки Mersed, а также MIPS двуядерные чипы. К 2005 году следу- CAD-моделирование, научно-техни-
неугомонный технический прогресс вынуж- ющее поколение, N2, должно было, нако- ческие расчёты, или трёхмерное моде-
дали SGI продолжать поддерживать свою нец, преодолеть гигагерцовый рубеж. Од- лирование, могут одновременно рабо-
продукцию в конкурентоспособном поло- нако постоянные финансовые проблемы тать множество пользователей в неза-
жении. А для этого, как ни крути, были не- заставили компанию практически полно- висимости от их местоположения. По-
обходимы новые процессоры. стью отказаться от MIPS-процессоров и пе- добные системы состоят из всего спек-
Развитие же этого направления дава- рейти на архитектуру Itanium, которая, ещё тра продукции SGI: начиная от рабо-
лось Silicon Graphics всё сложнее и слож- не выйдя, успела разочаровать весь мир. чих станций и заканчивая серверами
визуализации Onyx и системами хра-
системе также присутствовали моду- вице-президент по корпоративному нения данных.
ли шины NUMAlink, модули ввода/вы- маркетингу SGI Грэг Истис. «У нас бы- Ещё один пример, так называемые
вода, модули шин PCI и XIO, диско- ли, и до сих пор есть, чудесные продук- «центры реальности» (Reality Centre),
вые модули и т. д. Максимальное ко- ты, и мы это знали. К сожалению, ры- как их называет компания, были раз-
личество процессоров в новых серве- нок, для которого мы производили на- работаны SGI ещё в середине 90-х
рах Origin на первых порах равнялось шу технику, был очень мал. Мы прос- годов прошлого столетия (а точнее –
128 штукам. Вместе с Origin 3000 бы- то не могли быстро повернуть корабль в 1994 году) и использовались NASA,
ли анонсированы и сервера визуали- для того, чтобы соревноваться с новым Boeing и другими государственными
зации Onyx3, отличавшиеся лишь на- поколением ПК». учреждениями и крупными коммер-
личием графических модулей на базе Постоянное снижение притока де- ческими компаниями. Эти комплексы
плат InfiniteReality3. нежных средств вынудило компанию позволяют моделировать практически
По словам Боба Бишопа, денеж- провести ряд «мероприятий» с целью любое окружение, будь то контрольная
ная сумма заказов на новые сервера финансовой стабилизации своего по- башня аэропорта или центр управле-
за первые два месяца достигла отмет- ложения. В апреле 2001 года очеред- ния атомной электростанцией. Несмот-
ки в 100 млн. долл., которых, тем не ме- ря на то что в начале своего сущест-
нее, всё же не хватило для стабили- вования количество подобных цент-
зации финансового положения ком- ров можно было сосчитать на пальцах
пании. рук, к 2001 году эта цифра возросла до
К 2001 году стало окончательно вполне приличных 450 штук. «Мы ста-
ясно, что тягаться с компаниями Sun, новимся более известными в этой об-
Hewlett-Packard и начинавшей наби- ласти, которая представляет собой
рать в то время популярность Apple оказание услуг по установке высокоп-
в секторе высокопроизводительных роизводительных комплексов для сов-
рабочих станций SGI уже не может. местной визуализации, быстродейс-
Конкурентоспособность её продуктов твующей обработки данных и их хра-
была очень низкой, к тому же, всемир- нения, а также их объединению по все-
ная «миграция» на дешёвые ПК, а так- му миру», – подводил тогда итоги тог-
же кластерные системы свели все про- да Боб Бишоп.
дажи компании практически к нулю. Для понимания последней заслу-
«Я не люблю использовать это слово, живающей внимания технологии VAN
однако вынужден: наши амбиции сыг- (Visual Area Networking – «сетевая ви-
рали с нами злую шутку», – говорил Рабочая станция SGI 750 зуализация») обратимся к словам Эди-

88
ретроспектива
сона Снила, менеджера по производс- теры, спрос на которые был более или
твенному маркетингу SGI: «Вспом- менее стабильным.
ним закон Мура: по прошествии опре- В июне 2001 года компания объ-
делённого промежутка времени мощ- явила об окончательном прекращении
ность компьютера увеличится в два производства Visual Workstation. Это
раза. Вместе с тем, из-за увеличения не только ударило по имиджу компа-
количества передаваемой информа- нии, но и вылилось в 60 млн. долларов
ции возникает необходимость в соот- убытков, состоявших из отменённых
ветствующем увеличении и пропуск- контрактов на производство и нереа-
ной способности. 10 лет назад, если лизованного товара. Ко всему проче-
вы занимались производством авто- му SGI объявила об очередном уволь-
мобилей, вам необходимо было про- нении 1500 человек.
считать приблизительно 10 тысяч де- Спустя полгода после роспуска
талей, из которых она состояла. Сегод- подразделения, занимавшегося раз-
ня эта цифра возросла до 10 милли- работкой Visual Workstation, состоя-
онов. Несмотря на возросшее за пос- лось долгожданное обновление рабо-
ледние 10 лет в десятки и сотни раз чих станций начального уровня, честь
быстродействие компьютеров, экран- которых на протяжении шести лет «от-
ное разрешение мониторов хоть и уве- стаивали» O2 и O2+. Данное событие
личилось, однако не столь значитель- произошло в январе 2002 года, когда
но. «Сетевая визуализация» позволя- миру была представлена модель Fuel.
ет вам вместо передачи информации Основная её особенность, позднее
пересылать лишь её изображения, тем ставшая стандартом для остальных но- Рабочая станция SGI Fuel
самым значительно эффективнее рас- винок SGI – архитектура, основанная
ходуя пропускную способность канала на базе SN-1. В принципе Fuel пред- тели SGI опровергали эти слухи, в ап-
передачи информации. Для примера: ставляла собой одномодульную и од- реле Патентное Ведомство США под-
геолог в поле может получать данные нопроцессорную вариацию на тему твердило передачу трёх патентов в ру-
с суперкомпьютера своей компании сервера начального уровня Origin 300, ки Microsoft.
на ноутбук или даже карманный ком- дополнительно оснащённую графикой Затем SGI впала в «спячку» и лишь
пьютер». Как и «центры реальности», VPro. Однако цена станции, стартовав- в ноябре 2002 года объявила о выходе
системы «сетевой визуализации» ути- шая с 11,5 тыс. долларов, явно не спо- Origin 3900 – наиболее производитель-
лизировали весь спектр аппаратного собствовала обретению Fuel статуса ного сервера компании. Новинка под-
и программного обеспечения SGI. «начального уровня». держивала до 512 процессоров, до 1 Тб
Однако количество клиентов, нуж- Анонс новой рабочей станции по- оперативной памяти и в максималь-
давшихся в системах подобного клас- мерк по сравнению с возникшими слу- ной конфигурации стоила 3 млн. дол-
са и, главное, способных платить за хами о том, что SGI опять взялась со- ларов. Примечательно, что Origin 3900
них баснословные суммы, было нич- трудничать со своим злейшим врагом – стал последним сервером SGI, работа-
тожно мало, чтобы помочь компании Microsoft. В январских новостях, цирку- ющим на базе чипов MIPS.
держаться «на плаву». Единственное, лировавших в Интернете, говорилось Лето 2003 года ознаменовалось
что её спасало – традиционные высо- о продаже части патентов на графи- выходом множества новинок, пред-
копроизводительные сервера, систе- ческие технологии за 62,5 млн. дол- ставленных SGI. В июле семейство ра-
мы хранения данных и суперкомпью- ларов. Несмотря на то что представи- бочих станций Octane, которому шёл
шестой год, наконец-то «ушло на по-
Первая станция на базе Itanium ная оперативная память типа SDRAM, а так- кой», а вместо него появился новый
Несмотря на то что о появлении первых же графический адаптер ATI XPERT 2000 чемпион – Tezro. Новинка была осно-
систем семейства Altix на базе процессо- PRO на базе чипа Rage 1999 года выпуска. вана на уже ставшей стандартом для
ров Itanium компания объявила лишь в 2003 Последний «штрих» к «портрету» новин- всей продукции SGI архитектуре Origin
году, попытка выпустить рабочую станцию ки – выпуск компанией Dell рабочей стан- 3000, содержала один, два или четыре
на базе нового чипа от Intel была предпри- ции Precision Workstation 730, являющейся… процессора MIPS R16000, до 8 Гб ОЗУ,
нята ещё раньше. В июне 2001 года вмес- точной копией SGI 750 как по внутреннему а также самый производительный гра-
те с анонсом о прекращении производс- содержанию, так и по внешнему исполне- фический адаптер серии VPro – V12 со
тва рабочих станций на базе процессоров нию, однако, что интересно, анонсирован- 128 Мб видеопамяти. Цена – от 31 тыс.
Pentium SGI объявила о выпуске SGI 750 – ной на месяц раньше. Из-за «сырости» пер- долларов.
единственной модели, построенной на ба- вого поколения чипов Itanium, малого коли- Второй новинкой стало новое поко-
зе Itanium первого поколения. Однако эта чества доступного для этой платформы ПО, ление серверов визуализации Onyx4,
рабочая станция не являлась собственной а также неудачной комплектации SGI 750 способных, по сравнению со своим
разработкой компании, внутри неё исполь- и её работы исключительно под Linux, рабо- предшественником, нести большее
зовались стандартные компоненты: мате- чая станция популярности не обрела и ско- количество процессоров, а также об-
ринская плата производства Intel, стандарт- ропостижно «канула в Лету». ладающих графическими системами

№6, июнь 2006 89


ретроспектива
SGI объявила о 110 клиентах, поже-
Проект «Колумбия» мира, достигнув показателя 42,7 Тфлоп/с, лавших заполучить новинку. К сожале-
К 2004 году Национальное аэрокосмичес- или 42,7 триллиона операций с плавающей нию, за квартал компания смогла реа-
кое агентство для проведения своих даль- запятой в секунду. Однако спустя корот- лизовать лишь 29 готовых систем, ко-
нейших экспериментов заказало SGI новый кий промежуток времени, Project Columbia торые, тем не менее, принесли компа-
суперкомпьютер, который бы увеличил ком- был свергнут новым суперкомпьютером нии 12 млн. долларов прибыли.
пьютерные мощности NASA в десятки раз. BlueGene/L корпорации IBM, обладаю- На протяжении 2004 года SGI ти-
В июле 2004 года был официально запущен щим производительностью 280,6 Тфлоп/с. хо «варилась в собственном соку»,
проект под названием Project Columbia, ре- На сегодняшний день первую тройку мест лишь единожды вынырнув на поверх-
зультатом которого должна была стать сис- в списке занимают системы «голубого ги- ность, чтобы представить Prizm – пер-
тема, состоящая из 20 серверов Altix 3700, ганта», тогда как суперкомпьютер SGI опус- вую «родную» рабочую станцию ком-
каждый из которых нёс на борту 512 про- тился на четвёртую позицию. пании на базе процессоров Itanium 2,
цессоров. На следующий день после запус- Кстати, на данный момент SGI являет- впрочем, основанную, как и большинс-
ка, состоявшегося 26 октября, новый су- ся чуть ли не единственным клиентом Intel, тво продукции компании, на базе сер-
перкомпьютер стал первым в списке Top приобретающим процессоры Itanium в ко- верной архитектуры (в данном случае
500 наиболее производительных систем личествах больше десяти тысяч. Altix). Два процессора, поддержка до
24 Гб ОЗУ, возможность установки не-
InfiniteReality4, построенными на базе рибутивами Linux для новой платфор- скольких графических карт ATI FireGL
чипов от ATI. мы от Intel. По словам вице-президента обойдутся пользователю от 8,5 до 39
И, наконец, последняя новинка, по продажам компьютерных систем Биу тыс. долларов.
появления которой компьютерная об- Вролика: «Использование Linux в на- Представленная в 2004 году стан-
щественность ждала на протяжении ших новых системах позволит вдвое ция Prizm устанавливалась в сервер-
пяти лет, – семейство серверов Altix увеличить производительность, в три ную стойку, тогда как в 2005 году поя-
3000, работающих на основе процес- раза снизив при этом стоимость». вилась модель в стандартном настоль-
сора Itanium. Август 2003 года ознаменовался ном исполнении.
долгожданным выходом первого сер- Объявленный в апреле 2005 г. оче-
Итаник XXI века вера из нового семейства Altix на базе редной финансовый квартал выдался,
Ещё до своего официального выхо- процессоров Itanium 2. Перед анонсом как всегда, убыточным для SGI. Потери
да новый процессор Itanium компании компания объявила об увольнении 600 составили 45 млн. долларов, годовой
Intel был окрещён общественностью человек, которое позволило «наскрес- доход – 240 млн. долларов. Для сравне-
«Титаником» нового века, или прос- ти» ей дополнительные 20 млн. долла- ния: четыре года назад эта цифра со-
то «Итаником» (Itanic). Первоначаль- ров на запуск новой линейки. ставляла 500 млн., шесть лет назад –
но выход процессора должен был со- Архитектурно сервер Altix является 760 млн. доллвроа.
стояться в 1999 году, однако затем его полной копией Origin 3000 с той лишь Эта новость, впрочем, заранее
выпуск был неоднократно перенесён, разницей, что в процессорных модулях ожидаемая, спровоцировала падение
что стало причиной неудовлетвори- вместо чипов MIPS стояли процессоры курса акций SGI. Их цена, ранее до-
тельных финансовых показателей SGI Intel. На момент выхода новые серве- стигавшая почти 50 долл., опустилась
в 1998-99 гг. ра являлись единственными система- ниже долларовой отметки, в резуль-
Тем не менее компания возлагала ми, способными нести «на борту» 256 тате чего акции компании были сня-
большие надежды на новый чип от Intel, процессоров Itanium 2 и 24 Тб ОЗУ. Бла- ты с основных торгов фондовой бир-
и при проектировании архитектуры годаря этому за первые пару месяцев жи New York Stock Exchange. Несмот-
SN-1 (Onyx 3000) изначально нацели- ря на то что акции SGI и раньше попа-
вала её как на работу с чипами MIPS, дали в категорию «ниже одного дол-
так и с Itanium. Однако, если семейс- лара», в течение месяца-двух их цена
тво Onyx 3000, как и его предшествен- поднималась на своё прежнее место.
ники, работало на базе операционной Однако теперь компанию ничто не мог-
системы IRIX, то для Altix SGI решила ло спасти от краха – на момент написа-
использовать Linux. ния статьи стоимость одной акции упа-
Почему именно Linux? Перенос ла до поистине смешных 6,8 центов!
операционной системы IRIX на новую В поисках средств для существо-
платформу оказался задачей трудно- вания компания совершала довольно
выполнимой: объём кода, написанного отчаянные поступки. Поскольку коли-
за более чем десяток лет, был слишком чество персонала SGI за последние
велик. Конечно, ходили слухи, что этот несколько лет значительно сократи-
проект всё же стартовал в недрах SGI, лось, компания приняла решение пере-
однако по прошествии короткого про- ехать на другое место, в здание мень-
межутка времени был отменён. шей площади. А оставшийся пустым
В то же время такие компании как корпус SGI в ноябре 2005 года сдала
RedHat и SUSE уже располагали дист- Сервер визуализации SGI Onyx4 в аренду компании Google, согласив-

90
ретроспектива
шейся каждый год выплачивать ей
17 млн. долларов. Попытка реабилитации ных матриц (FPGA). Такой модуль, подклю-
Вместе с этим заявлением SGI объ- Последняя на данный момент новая разра- чённый при помощи шины NUMAlink к сер-
явила о выпуске сервера Altix 4000, ос- ботка от SGI – «революционная» техноло- веру Altix, программируется под выполнение
новное отличие которого от её пред- гия RASC (Reconfigurable Application-Specific конкретной задачи и, по словам компании,
шественников заключается в подде- Computing – вычисления, реконфигурируе- ускоряет её выполнение на порядок. На дан-
ржке 128 Тбайт оперативной памяти. мые под конкретное приложение), реали- ный момент наиболее производительная мо-
На данный момент Altix 4000 являет- зация которой представляет собой blade- дель, RC100, содержит две FPGA-матрицы
ся последним обновлением в линейке модуль, предназначенный для установки Xilinx Virtex 4 LX200, 80 Мб сверхбыстрой ста-
серверов компании. в стандартную серверную стойку, и содержа- тичной памяти QDR SRAM, или же до 20 Гб
щий несколько программируемых вентиль- оперативной памяти типа DDR2 SDRAM.
Роковое 8 мая
1 февраля 2006 года, после объяв- чего на данный момент в компании ра- длежащую SGI. «Составляющие», пе-
ления результатов за очередной фи- ботают всего 1800 сотрудников. Кроме речисленные выше, являются целью
нансовый квартал, согласно кото- того, свои посты покинули: финансо- и других компаний, сумевших выжить
рым компания потеряла очередные вый директор Джеф Зельмер и испол- в условиях суровой реальности и по-
79 млн. долларов, совет акционеров нительный директор Уоррен Пратт. Ту- думывающих над покупкой SGI. Ана-
SGI не выдержал и принял решение чи над головой SGI сомкнулись, и гря- литики «бросаются» громкими имена-
снять Боба Бишопа с поста исполни- нул гром. ми: Sun, Hewlett-Packard, IBM. Некото-
тельного директора. Его место занял Ещё в феврале представители ком- рые пророчат в качестве потенциаль-
Денис МакКинна, ранее исполнявший пании «в тихую» предрекали о том, ного покупателя преуспевающую ны-
аналогичные обязанности в компа- что вполне возможно, в течение года не Apple Computer. В свете столь бур-
нии SCP Global Technologies. «Компа- SGI обанкротится. К сожалению, их но и непредсказуемо развивающихся
ния столкнулась с проблемами, одна- слова стали правдой. событий нам остаётся лишь пожелать
ко мы о них знаем», – заявлял тогда Во время написания этой статьи SGI удачи.
МакКинна. «Мои методы правления 8 мая компания публично объявила Ну а в заключение хотелось бы пе-
SGI будут заключаться в продолжении о том, что была вынуждена подать за- ресказать слова ещё одного посети-
того, что мы делаем, более эффектив- явление о банкротстве. Теперь в лю- теля сайта Osnews.com: «Мы пользу-
но и продуктивно, именно так мы смо- бой момент времени компания может емся персональными компьютерами,
жем расширяться и рапортовать о по- прекратить своё существование. Це- в которых установлены видеокарты,
вышении доходов». лый штат аналитиков и финансистов основанные на технологиях SGI; ком-
Результат работы нового исполни- пытается хоть немного исправить фи- пьютерами Macintosh, операционная
тельного директора не заставил себя нансовое положение компании, кото- система которого славится своими ви-
ждать: через месяц, в марте этого го- рое иначе, как плачевным, назвать не- зуальными эффектами, созданными
да, компания объявила об очередном льзя: при 369,4 млн. долларов, которые при помощи OpenGL; рабочими стан-
увольнении 250 человек, в результате являются оценочной стоимостью иму- циями на базе Linux, на которых рабо-
щества SGI, долг компании составля- тает графическое ПО, впервые появив-
ет 664,3 млн. долларов. Где взять де- шееся на платформе SGI. Однако мы
ньги на его погашение, пока, к сожа- больше никогда не увидим уровень ин-
лению, не ясно. новаций, подобный тому, что принес-
ла в мир SGI, от других компаний типа
Грустная лирическая нота Intel, AMD, Dell и иже с ними».
Что осталось от прежней SGI, компа- Несмотря на то, что на данный мо-
нии, ещё 10 лет назад будоражившей мент SGI «дышит на ладан», пользо-
ум каждого техника, художника либо ватели её систем продолжают холить
учёного? Совсем немного: несколько и лелеять свои компьютеры. Их ак-
первоклассных инженеров, пара-трой- тивность можно проверить, загля-
ка технологических ноу-хау и патентов нув по ниже перечисленным адресам:
на технологии, созданные компанией www.nekochan.net, www.siliconbunny.com,
за период её существования. Напри- www.sgizone.net.
мер, именно патенты на графические
технологии, часть из которых ещё на- Источники:
ходится в закромах SGI, интересуют 1. http://www.cnet.com
компанию nVidia, желающую, соглас- 2. http://www.eweek.com
но циркулирующим в Интернете слу- 3. http://www.osnews.com
хам, заполучить остатки этого бизне- 4. http://www.sgi.com
са компании. Скорее всего, компания 5. http://www.theregister.co.uk
хочет заполучить в свои владения тор- 6. http://www.wikipedia.com
Сервер SGI Altix 3000 говую марку OpenGL, всё ещё прина- 7. http://www.wsj.com

№6, июнь 2006 91


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

Виртуальные машины:
несколько компьютеров в одном
Алексей Гультяев
ке, полностью посвященная виртуаль- сы сетевого взаимодействия с госте-
ным машинам. выми ОС.
Весь материал книги посвящен Описание всех трех программ
тройке наиболее популярных программ происходит по одной и той же схеме,
в этой отрасли, а именно Microsoft что в конечном итоге поможет читате-
Virtual PC 2004, VMWare Workstation лю выбрать для себя наиболее подхо-
и Parallels Workstation. дящий вариант.
Из первой главы вы узнаете, как ра- К книге прилагается CD, на кото-
ботают виртуальные машины, основ- ром вы найдете trial-версии всех опи-
ные способы их применения, а также санных в книге программ. Весь ма-
будут рассмотрены основные методы териал снабжен большим количест-
реализации технологий визуализации, вом иллюстраций и скриншотов. Кни-
а именно – виртуальные машины с эму- га рассчитана на широкий круг чита-
Несмотря на то что технологии вирту- ляцией API гостевой ОС, полная эму- телей, в том числе и на тех, кто никог-
альных машин достаточно популярны, ляция гостевой ОС, и машины с ква- да раньше не работал с виртуальны-
информации на русском языке по этой зиэмуляцией. ми машинами.
теме очень немного. Эта книга помо- Каждой из программ посвящена
жет вам освоить общие концепции вир- отдельная глава, в которой последо-  Издательство: «Питер»
туальных машин и программы, с помо- вательно рассказывается об общих  Год издания: 2006
щью которых вы сможете ознакомить- характеристиках продукта, установ-  Количество страниц: 224
ся с ними на практике. ке и первоначальной настройке, со-  ISBN: 5-469-01338-3
Надо заметить, это издание – здании и управлении гостевой ОС.  Цена: ≈ 300 руб.
единственная книга на русском язы- Не оставлены без внимания и вопро- Книга предоставлена издательством «Питер».

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


локальных сетей стандарта 802.11
Педжман Рошан, Джонатан Лиэри
сетей, т.е. о сетях, построенных тради- диочастотный тракт» вы узнаете о том,
ционным образом. как вышеописанные технологии рабо-
Из второй главы вы узнаете общие тают на более низком уровне (основы
сведения о беспроводных сетях стан- ради- и антенной техники).
дарта 802.11. Обзор топологий WLAN, Практические советы из главы
механизмы доступа к среде стандар- «Развертывание беспроводных сетей»
та 802.11, нестандартные устройства, помогут вам построить более эффек-
операции, осуществляемые на уровне тивную сеть при меньших затратах.
MAC-стандарта 802.11. Далее подроб- В завершении авторы рассказыва-
но описаны стандарты беспроводных ют о последних технологиях беспро-
сетей, построенных с использованием водной передачи данных (bluetooth,
802.11 ; 802.11a ; 802.11b ; 802.11g. В гла- UWB, FSO). Хорошая и полезная книга,
ве, посвященной безопасности, авторы с материалом которой должен быть оз-
Беспроводные технологии переда- рассказывают о различных механиз- накомлен каждый сетевой инженер и
чи данных уже прочно вошли в на- мах аутентификации, известных сла- администратор.
шу жизнь и продолжают развиваться бых местах, и, что немаловажно, да-
дальше. Освоив материал этой книги, ют рекомендации по усилению защиты  Издательство: «Вильямс»
вы сможете приступить к проектиро- (в частности, описаны алгоритмы ау-  Год издания: 2004
ванию и построению собственной бес- тентификации и защиты данных).  Количество страниц: 304
проводной сети. Достаточно подробно рассмотрен  ISBN: 5-8459-0701-2
Вопреки ожиданию в начале книги материал, касающийся вопросов роу-  Цена: ≈ 325 руб.
авторы рассказывают о диаметраль- минга в беспроводных сетях, а также Книга предоставлена Издательским домом
ной противоположности беспроводных механизм QoS (802.11e). Из главы «Ра- «Вильямс».

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

Введение в IBM Rational Application


Developer
Джейн Фанг, Колин Йу, Кристина Лау и др.
Application Developer вы могли сразу коллективная разработка с использо-
приступить к написанию какого-либо ванием CVS (установка CVS, после-
проекта. Также следует отметить, что довательная и параллельная разра-
каждая глава является самодостаточ- ботка), профилирование и журналы
ной частью материала, т.е. изложение (анализ и решение проблем, связан-
ведется непоследовательно. Весь ма- ных с производительностью, методи-
териал носит сугубо практический ха- ки поиска и устранения утечек памяти,
рактер – каждый вопрос и тема объ- трассировка приложений). Завершает
ясняются на примере какого-либо уп- книгу глава, посвященная визуально-
ражнения. Спектр рассмотренных тем му моделированию (UML, анализ ар-
очень широк: разработка Java-прило- хитектуры и анализ приложений). За-
жений, Web-разработка, технологии мечательная книга, рекомендую всем,
работы с базами данных, XML, ком- кто так или иначе занимается процес-
Материал этой книги написан при учас- поненты Enterprise JavaBeans, Java сом разработки при помощи Rational
тии 12 авторов, каждый из которых яв- Messaging Service и компоненты уп- Application Developer.
ляется специалистом в своей области. равляемые сообщениями, Web-служ-
Rational Application Developer является бы, дополнительные вопросы, связан-  Издательство: «Кудиц-Образ»
одним из самых популярных средств ные с J2EE (программирование на ос-  Год издания: 2006
разработки, тестирования и отлад- нове аннотаций, создание расширен-  Количество страниц: 592
ки приложений J2EE на платформе ных EAR-файлов для WebSphere, бе-  ISBN: 5-91136-010-1
WebSphere. Книга построена таким об- зопасность J2EE). Подробно рассмот-  Цена: ≈ 511 руб.
разом, чтобы даже при наличии мини- рены вопросы создания Java прило- Книга предоставлена издательством «Кудиц-
мального опыта работы с IBM Rational жений с графическим интерфейсом, Образ».

Oracle 9i. Оптимизация


производительности
Ричард Дж. Нимик
Несмотря на то что уже давно доступ- вание параллелизма, V$-представле-
на версия 10g, большинство баз дан- ния, X$-таблицы. Подробно рассмот-
ных, находящихся в промышленной рены вопросы использование пакета
эксплуатации, до сих пор использу- Statpack для настройки ожиданий и за-
ют эти версии. Количество, и что са- щелок, практические рекомендации
мое главное – качество изложенного по быстрому анализу системы, мони-
материала просто поражает. Среди торинг системы с помощью утилит из
рассмотренных тем: новые свойства ОС UNIX. Книга адресована прежде
Oracle 9i, основные принципы постро- всего профессиональным админист-
ения индексов, дисковый ввод/вывод раторам и разработчикам баз данных
и фрагментация, оптимизация базы Oracle. Отличное и в своем роде уни-
данных с помощью параметров ини- кальное издание.
циализации, Enterprise manager, Oracle Рекомендую!
Это издание является переводом офи- SQL Scratchpad и SQL *Plus Worksheet
циального авторизованного издания и tuning pack; использование explain,  Издательство: «Лори»
Oracle press. Сразу стоит отметить, что trace, tkprof и stored outlines. Стандар-  Год издания: 2006
эта книга подготовлена профессиона- тный синтаксис инструкций, оптими-  Количество страниц: 726
лами и для профессионалов. Традици- зация запросов, объединение таблиц  ISBN: 5-85582-250-8
онно для администраторов и разра- и другие продвинутые методы опти-  Цена: ≈ 450 руб.
ботчиков баз данных тема оптимиза- мизации, применение pl/sql для улуч- Книга предоставлена Издательским домом
ции является одной из основных сфер шения производительности, использо- «Вильямс».
деятельности. Весь изложенный мате-
риал в книге относится к Oracle 9i/8i. Обзор книжных новинок подготовил Александр Байрак

№6, июнь 2006 93


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

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

20780*
81655**
по каталогу
агентства
«Роспечать»

87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой

№6, июнь 2006 95


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

РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор
Алексей Коршунов Возможности технологии отбирает некоторое время и силы сис-
Внештатные редакторы MS Windows SharePoint темных администраторов, и особенно
Алексей Барабанов Services на первом этапе установки и настрой-
Сергей Супрунов WSS предоставляют удобный и прос- ки спам-фильтров. Вариантов реше-
той интерфейс для создания и изме- ния этой проблемы много, в Сети мож-
РЕКЛАМНАЯ СЛУЖБА нения веб-страниц. Однако, исполь- но найти многостраничные руководс-
тел./факс: (495) 628-8253 зуя совместимый с данной технологи- тва по настройке любой системы борь-
Евгения Тарабрина
ей редактор, например Microsoft Office бы со спамом. Осталось лишь выбрать
reсlama@samag.ru
FrontPage 2003, можно очень просто приемлемый вариант.
Верстка и оформление повысить функциональность и улуч-
maker_up@samag.ru шить внешний вид веб-узла. Как работает Sendmail?
Дизайн обложки Полезные подробности
Николай Петрочук Настраиваем (Часть 3)
Dr. Web Enterprise Suite В следующем номере поговорим о со-
По вопросам распространения Мало кто ставит под сомнение тот провождении работающего сервера
обращайтесь по телефону: факт, что на рабочем месте современ- Sendmail. Он должен не просто рабо-
(495) 628-8253 (доб. 120) ного человека должен стоять антиви- тать, а работать эффективно, надёжно
русный пакет. Сегодня вирусы берут не и безопасно. И для этого мы подроб-
107045, г. Москва,
умением, а числом. В основном, они не нее остановимся на некоторых вопро-
Ананьевский переулок, дом 4/2, стр. 1
разрушают информацию – они созда- сах мониторинга, оптимизации и повы-
тел./факс: (495) 628-8253
Сайт журнала: www.samag.ru ют условия для «утечки» коммерчес- шении защищённости сервера.
кой информации. Что именно выбрать
РУКОВОДИТЕЛЬ ПРОЕКТА в качестве основы, чтобы имелась воз- Устанавливаем Systems
Петр Положевец можность централизованного обнов- Management Server 2003
ления антивирусных агентов, имел- Установка программного обеспече-
УЧРЕДИТЕЛИ ся единый центр управления и велась ния, обновлений, а также проведение
Владимир Положевец оперативная статистика? Стоит обра- инвентаризации, по мере увеличения
Александр Михалев тить внимание на антивирусные реше- количества компьютеров в сети, ста-
ния масштаба предприятия (Enterprise новится постоянной головной болью
ИЗДАТЕЛЬ
Solutions). системного администратора. Мощным
ЗАО «Издательский дом
средством, способным превратить ру-
«Учительская газета»
Боремся со спамом тинную работу в удовольствие и сэ-
Отпечатано типографией Борьба с непрошенной коммерческой кономить массу времени, становится
ГП «Московская Типография №13» почтой – спамом, как и прочие задачи, Systems Management Server 2003.
Тираж 11000 экз.

Журнал зарегистрирован Уважаемые читатели!


в Министерстве РФ по делам печати,
телерадиовещания и средств массо- Спешите оформить подписку
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.).
на второе полугодие 2006 года!
Приобрести новые и старые номера журнала
За содержание статьи ответственность
несет автор. За содержание рекламно- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
го объявления ответственность несет
рекламодатель. Все права на опубли-
кованные материалы защищены.

Доставка почтой в любую точку России.

96

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