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

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

№5(30) май 2005


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

СЬ
www.samag.ru

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

ЛИ
ТЯ Е

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

WPA-Enterprise, 802.1x EAP-TLS


НУ

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

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

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

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

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

СТ
№2(51) февраль 2007
Эффективно управляем
полями пользователей в AD

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

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


КА

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


создателем языка Perl

www.samag.ru

Как навести порядок в стойке

№2(51) февраль 2007


И
ЬГ
(из личного опыта)

ЬД О
РА СКА
ТЕ
К

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО ЕО
АВ СЛ
Л

Л
ХА

Два канала – роскошь?

ЗА Н
ПО
УЕ

Резервирование и балансировка
трафика во FreeBSD
Так видит журнал читатель, оформивший подписку:
Принципы построения
№5(30) май 2005
подписной индекс 81655
www.samag.ru

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


Ищем причины
Строим защищенную беспроводную сеть:
доменов Active Directory
WPA-Enterprise, 802.1x EAP-TLS
Настраиваем UPS под Linux

Нововведения в Solaris 10:


Как восстановить
удаленные файлы под BSD
Что важно знать об IP-телефонии
танавливаем Symantec Antivirus 9.0
в корпоративной сети

на что обратить внимание админу


Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети
с помощью OSSIM
Интервью с Ларри Уоллом –
создателем языка Perl

Как «подружить» сети


с пересекающейся адресацией
Настраиваем DNS и DHCP
с хранением информации в LDAP
Создаем интегрированный в AD
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! файл-сервер на базе
Samba и FreeBSD
Роспечать – 20780, 81655
Пресса России – 87836 Open Source и Classic Games
Интер-почта – тел. (495) 500-00-60
в номере
ТЕНДЕНЦИИ 48 Проводим мониторинг нагрузки
операционной системы Solaris
4 LiMo Foundation: мобильное будущее Выявляем «узкие места», препятствующие производи-
с Linux открыто тельной работе системы. Сергей Косько
Гиганты мобильной индустрии создали Linux-органи- sergkosko@ua.fm
зацию. Дмитрий Шурупов
osa@samag.ru 54 Нововведения в Solaris 10:
на что обратить внимание админу?
АДМИНИСТРИРОВАНИЕ Современная версия Solaris 10 содержит большое ко-
личество нововведений, что даже бывалые админис-
6 Два канала – роскошь? траторы не успевают уследить за всеми появившими-
Резервирование и балансировка трафика ся возможностями. Алексей Коробкин
во FreeBSD korobkin@src.samsung.ru
Как обеспечить резервирование или распределение
трафика при наличии двух каналов в Интернет. 60 Обзор серверного дистрибутива tinysofa
Сергей Супрунов Установить и настроить надежную систему на сервер
amsand@rambler.ru не такая уж и легкая задача. Упростить ее можно, пра-
вильно подобрав дистрибутив и компоненты будущей
12 Создаём интегрированный системы. Сергей Яремчук
в Active Directory файл-сервер grinder@ua.fm
на базе Samba во FreeBSD
На базе сервера, давно устаревшего по критериям СЕРВЕРНАЯ
Microsoft, вы можете сделать файл-сервер и сервер пе-
чати, используя пакет Samba 3.x и операционную сис- 62 Как навести порядок в стойке
тему FreeBSD 6.x. Алексей Бережной Кто из вас, имея в распоряжении серверную, не сталки-
beralex2@mail.ru вался с проблемой «бороды» из проводов на лицевой
стороне стойки? С чего начать наводить порядок?
21 Полезные советы. Утилита find. Даниил Никифоров
Сергей Супрунов danila_work@mail.ru
amsand@rambler.ru
БЕЗОПАСНОСТЬ
22 Подключаем несколько локальных сетей
с пересекающейся адресацией к одному 66 Боремся с вирусами и спамом
компьютеру с помощью MPP
Сети можно «подружить», если вы используете Как с минимальными затратами настроить эффектив-
ОС Linux. Андрей Кишкин ную систему борьбы со спамом и вирусами, рассылае-
anksh@mail.ru мыми по электронной почте? Сергей Яремчук
grinder@ua.fm
26 Настраиваем DNS и DHCP с хранением
информации в LDAP ХОББИ
Стоит посвятить достаточное количество времени
на изучение принципов работы системы DNS и на на- 72 Open Source и Classic Games
стройку сервера имен. Сегодня речь пойдет о настрой- Благодаря энтузиастам сообщества Open Source мно-
ке bind для хранения информации о зонах в базе дан- гие культовые игры получили «вторую жизнь».
ных LDAP. Василий Озеров Иван Максимов
fr33man@fr33man.ru ivan_maksimov@inbox.ru

32 Размещаем пользовательские бюджеты РЕТРОСПЕКТИВА


в LDAP. Часть 2
Настроив подсистему аутентификации и авторизации 80 Глобальная сетевая энциклопедия
на использование LDAP, попробуем работать с ней про- Гигабайты информации. Ответ на любой вопрос. Сотни
зрачным образом, так же как с файловой базой учет- тысяч статей на всевозможные темы. Как вы уже дога-
ных записей. Алексей Барабанов дались, речь пойдёт о wikipedia.org.
alekseybb@mail.ru Илья Александров
ilya_al@rambler.ru
38 Принципы построения доменов
Active Directory WEB
От понимания сущности AD до создания собственно-
го домена. Александр Емельянов 84 Работаем с MediaWiki
numb13@mail.ru MediaWiki – механизм, который превращает старые-
добрые статичные тексты в «живые», постоянно раз-
44 Тонкая настройка Microsoft ISA 2004 вивающиеся хранилища информации.
Известно, что настройки, используемые по умолчанию Евгений Балдин
при установке программного обеспечения, не являют- E.M.Baldin@inp.nsk.su
ся оптимальными. Как можно настроить межсетевой
экран ISA 2004, чтобы оптимизировать работу сети? 92 КНИЖНАЯ ПОЛКА
Андрей Бирюков
mex_inet@rambler.ru 70, 71, 78, 79 BUGTRAQ

№2, февраль 2007 


тенденции
SourceKibitzer анализирует Основная причина преобразования ныне функциони-
Java Open Source-проекты рующей платежной системы – тот факт, что она была со-
Стартовал проект SourceKibitzer (http://www.sourcekibitzer. здана в 80-е года и ей существенно не хватает техничес-
org), который занимается сбором и оценкой программных кой поддержки. Специалистами из OKQ8 была проведена
метрик Open Source-проектов, написанных на языке Java, оценка ряда готовых решений, после чего они пришли к вы-
размещенных в глобальной паутине. Заявленным сущест- воду, что необходимо создать свою систему, в основе ко-
венным отличием SourceKibitzer от ряда подобных инициа- торой будет лежать Open Source-ПО: операционная систе-
тив является высокая скорость выполнения анализа: учас- ма GNU/Linux и СУБД MySQL. Новую систему тестирова-
тники обрабатывают и представляют информацию об ин- ли и вносили в нее поправки на протяжении года, и теперь
тересующем проекте в течение суток. Данные по обрабо- она будет введена в строй на всех бензозаправочных стан-
танному проекту будут затем регулярно обновляться, по- циях (число коих насчитывает одну тысячу).
полняться и размещаться на сайте. SourceKibitzer позволя-
ет наблюдать и сравнивать метрические показатели лиде- Novell начинает рекламную кампанию
ров движения ПО с открытым кодом. Основываясь на дан- для SUSE Linux
ных, размещенных на сайте, можно принимать решение от- Компания Novell запустила акцию по переманиванию поль-
носительно того, как улучшить тот или иной проект. зователей Microsoft Windows на платформу с открытым ко-
дом. В середине января на сайте Novell появилась страница,
Sun открыла исходники интерпретатора где рассказывается о преимуществах Suse Linux Enterprise
Fortress Desktop 10 над Windows Vista. Основной акцент делается на
Компания Sun Microsystems опубликовала исходный код экономические выгоды, получаемые при отказе от продук-
прототипа интерпретатора нового языка программирова- ции Microsoft в пользу решений Novell: «Получите более 90%
ния, получившего название Fortress. Fortress призван стать функциональности Windows Vista и Microsoft Office за ме-
современной заменой классическому языку программиро- нее 10% стоимости». Кроме того, Novell сообщает и о дру-
вания Fortran, созданному усилиями сотрудников IBM еще гих выигрышных аспектах ее флагманского продукта для
50 лет назад, но все еще используемому для решения задач, настольных ПК: высокая безопасность системы, удобство
требующих высокопроизводительных вычислений (напри- использования и функциональность «инновационной де-
мер, прогноз погоды). Fortress должен облегчить програм- сктоп-платформы», гибкость, позволяющая решать широ-
мистам взаимодействие с многоядерными процессорами. кий спектр задач.
«Мы находим перспективным рынок высокопроизводитель-
ных вычислений. И считаем, что многоядерность становит- Составил Дмитрий Шурупов
по материалам www.nixp.ru
ся все более важной для обычных десктоп-систем, исполь-
зуемых программистами вкупе с языком программирова-
ния вроде Fortress для получения хороших результатов по
производительности от такого железа», – прокомментиро-
вал Эрик Аллен (Eric Allen), лидер проекта Fortress.

OpenOffice.org представил проект


ODF Toolkit
Авторы популярного офиса с открытым кодом OpenOffice.org
представили новый проект – ODF Toolkit Project, призванный
расширить адаптацию как файлового формата для доку-
ментов OpenDocument (ODF), так и самого OpenOffice.org.
«Представляя ODF Toolkit Project, мы приглашаем раз-
работчиков воспользоваться исходным кодом лидирующе-
го свободного и открытого набора офисных приложений
в качественно новых направлениях», – заявляется в  анон-
се ODF Toolkit.
Ожидается, что с помощью этого проекта энтузиасты
своими коллективными усилиями смогут создавать новое
полезное программное обеспечение, взаимодействующие
с файлами в формате ODF.

Крупнейший продавец бензина Швеции


выбрал MySQL и Linux
Компания MySQL AB, занимающаяся разработкой одно-
именной СУБД с открытым кодом, объявила о том, что OKQ8,
крупнейший в Швеции продавец бензина, запустит систе-
му платежей и сбора на базе Linux и MySQL в течение пер-
вой половины 2007 года.

№2, февраль 2007 


тенденции

LiMo Foundation: мобильное будущее


с Linux открыто

Дмитрий Шурупов
25 января 2007 года компании Motorola, NEC, NTT DoCoMo, Panasonic Mobile Communications,
Samsung Electronics и Vodafone объявили о формировании организации LiMo Foundation,
созданной для поддержки первой в мире глобальной инициативы по созданию платформы
с открытым кодом на базе Linux для мобильных устройств.

П
ервая информация об этом n минимизировать фрагментацию ходящимися на одном уровне. Это со-
союзе появилась еще летом мобильных Linux-реализаций, ус- вет по архитектуре (занимается техни-
2006 года, однако только теперь корить процессы разработки, ин- ческими проблемами, управляет ра-
он принял официальный статус, обрел теграции и тестирования для но- бочими группами), совет по требова-
ясность в своих целях, вопросах, об- вых продуктов и услуг; ниям, управление программой орга-
щей структуры и ближайших планов. n создать благоприятный рынок для низации (возглавляется исполнитель-
разработчиков с целью ускорения ным директором).
Цели LiMo Foundation инноваций; В LiMo Foundation уповают на сто-
Главная заявленная цель международ- n обеспечить возможность разграни- ронних разработчиков, которые, вос-
ного союза – разработка так называе- чения дизайна, приложений и ус- пользовавшись SDK, примут актив-
мой «Foundation Platform», т.е. основан- луг для изготовителей оборудова- ное участие в проекте путем созда-
ной на Linux программной платфор- ния (OEM), операторов беспровод- ния различных приложений для новой
мы с открытым кодом, предназначен- ных сетей и независимых продав- платформы.
ной для коммуникационных мобиль- цов ПО (ISV);
ных устройств. n предоставить возможность влиять Что будет сделано
Чего хотят добиться участники про- на эволюцию и разработку индуст- Планы у организации наполеоновс-
екта путем создания «новой, открытой риальной платформы. кие, но как все это будет достигнуто?
и экономически выгодной платформы Общее представление об этом имеет-
на базе Linux»? Об этом они говорят Внутренняя структура ся уже сейчас.
сами в «User Guide to the Foundation» организации Весь код, который будет создан
(этот материал, как и другие офици- Главная управляющая роль отводит- LiMo Foundation, формально разделен
альные документы LiMo Foundation, ся совету директоров, 13 членов ко- на 4 категории:
доступен в формате PDF на сайте ор- торого выбираются ежегодно. Сове- n Framework – абстрактный слой,
ганизации): щания проводятся 4 раза в год. Сле- который предоставит набор про-
n снизить расходы на разработку мо- дующий звеном предстает исполни- граммных интерфейсов приложе-
бильных устройств; тельный совет, ответственный за опе- ния (API), необходимых для взаи-
n уменьшить время, необходимое рационные и стратегические вопро- модействия со всеми функциями
для выхода на рынок новых мо- сы и управляющий тремя последую- ядра (которые не должны зависеть
бильных устройств; щими руководящими элементами, на- от железа).


тенденции
n Plug-in – «подключаемые» к базо-
вой структуре дополнительные ме- OpenMoko готовит к продаже «В мире Linux до сих пор никто еще
ханизмы, расширяющие ее функ- открытый Linux-смартфон не создавал интегрированного набора
циональность (может быть несколь- Тем временем, начинающая компания программного обеспечения для мобиль-
ко различных механизмов, реали- из Тайваня OpenMoko планирует в ближай- ных телефонов, но теперь мы сделали
зующих одну и ту же функцию). шее время начать продажи первого Linux- это», – заявил Шон Мосс-Пультц (Sean
n Общий код, соответствующий за- смартфона, созданного исключительно Moss-Pultz), менеджер по разработке про-
данной спецификации и реализу- на открытых стандартах. дуктов в FIC.
ющий все необходимые для этого Смартфон, получивший название Открытый Linux-смартфон взаимо-
функции. Именно его и будут рас- Neo1973, был представлен еще в ноябре действует с персональным компьютером
пространять привилегированные прошлого года, а начало его продаж за- посредством USB и поддерживает USB-
члены LiMo. планировано на февраль. эмуляцию сети для подключения ПК к Ин-
n Не общий код, состоящий из до- Ключевая особенность продукта – вся тернету через сеть сотового оператора. Ус-
полнительных модулей, в которых его начинка является программным обес- тройство оснащено 128 Мб оперативной па-
может присутствовать реализация печением с открытым кодом (Open Source). мяти, MicroSD-картой на 64 Мб, 2,8-дюй-
каких-то специфичных (например, Устройство было создано при содействии мовым сенсорным экраном, возможнос-
для данного железа) функций. компании FIC (First International Computer), тью GPS; требует наличия GSM/GPRS-сети
специализирующейся на производстве ма- для функционирования. Первые 6 месяцев
Базовый пользовательский интер- теринских плат и периферии для ноутбу- Linux-смартфон Neo1973 будет продавать-
фейс приложений будет использовать ков, ПК и КПК. ся напрямую FIC по цене в 350 USD.
свободно распространяемые разработ-
ки GTK+ (на его основе построена по- (таких, как ядро Linux и библиотека Capable) с правом на требование де-
пулярная графическая среда для UNIX- GTK+). Здесь все просто: лицензии ти- нежных отчислений за патенты.
и GNU/Linux-систем GNOME). па GPL, LGPL и т. п. останутся нетро-
Среди промежуточного ПО (middle- нутыми, а лицензированное по ним ПО Диагноз
ware), что будет подготовлено, выделя- возьмут для своих целей. Появление LiMo Foundation вряд ли
ются элементы: Но ведь проект не обойдется и без можно назвать сенсационным – ско-
n реестр (с набором записей вида написания собственного кода, реали- рее, долгожданным. Новейшая ис-
ключ и его значение); зующего все то, что FOSS-сообщество тория знает не один пример попы-
n обработка конфликтов (при запро- либо не сделало вообще, либо созда- ток крупных компаний объединиться
сах к разделяемым ресурсам); ло в виде, не удовлетворяющем спе- на почве бурно процветающей экосис-
n обработка событий; цификациям LiMo. темы GNU/Linux и Open Source, в том
n структура безопасности; Для лицензирования такого кода числе и в мобильном мире. Однако,
n телефонная структура; будет использоваться новая лицензия, несомненно, в этой области до сих
n сетевая структура; получившая название FPL (Foundation пор еще не возникало сопоставимых
n структура обмена сообщениями; Public License). FPL не требует денеж- по размаху инициатив, и уже хотя бы
n структура мультимедиа; ных отчислений за использование ли- поэтому данный шаг достоин внима-
n структура управления цифровыми цензированного по ней ПО и следу- ния, уважения и поддержки.
подписями (DRM); ет принципу свободы в духе GPL, обя- Что из всего этого выйдет, покажет
n база данных (управление данными зывая в случае внесения в код попра- время, но я, учитывая очевидность вос-
по принципу ACID). вок возвращать модифицированные требования (полноценных, унифициро-
исходники. Однако FPL накладыва- ванных, готовых к работе, инновацион-
Список этот пока не полон и вклю- ет и сильное (впрочем, логичное) ог- ных и тем более поддерживаемых гига-
чает в себя лишь основные компо- раничение: запрещено в любом виде нтами индустрии) решений с открытым
ненты. распространять код тем, кто не состо- кодом на рынке мобильных устройств,
ит в LiMo Foundation. склонен считать, что LiMo Foundation
Правовые аспекты У FPL есть две разновидности, од- сможет со временем внести сущес-
LiMo Foundation пошла по единствен- на из которых предназначена для об- твенный вклад в эту отрасль. Может
но верному пути «mixed source» и ре- щего кода (Common Capable), а дру- быть, даже произвести в некотором ро-
шила допускать наличие программно- гая – для не общего (Non-Common де революцию. Но все это – лишь в пер-
го обеспечения с идеологически проти- Capable). спективе... Поживем – увидим.
воречивыми типами лицензий. Кроме того, предусмотрена «под-
Во-первых, организация по по- держка» проприетарных лицензий, 1. h t t p : / / l i n u x d e v i c e s . c o m / n e w s /
нятным причинам постарается «взять что актуально для мобильных уст- NS2923387573.html или http://www.
максимум» из того, что уже имеется ройств. Эта возможность подразу- nixp.ru/news/8085.
и что адекватно отвечает требовани- мевает обязательное представление 2. http://www.limofoundation.org.
ям к итоговому продукту. Соответс- равных условий для всех членов LiMo 3. http://news.com.com/Mobile+phone+
твенно, будет использоваться код из- Foundation и дальнейшую трансфор- companies+join+forces+on+Linux/2100-
вестных проектов мира Open Source мацию лицензии в FPL (Non-Common 1039_3-6083883.html.

№2, февраль 2007 


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

Два канала – роскошь?


Резервирование и балансировка трафика во FreeBSD

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

И
так, вы «раскрутили» своего дый провайдер захочет с этим возить- определённости в дальнейших приме-
шефа на подключение локаль- ся, если вы для него – лишь один из ты- рах будем считать, что внешними ин-
ной сети компании ещё к одно- сяч клиентов, подключённых по обыч- терфейсами являются rl0 и rl1, а ed0 –
му провайдеру. Со временем возника- ному ADSL. Поэтому мы рассмотрим, внутренний. В зависимости от условий
ет желание распорядиться этим «бо- что можно сделать без взаимодейс- договоров с провайдерами могут воз-
гатством» более рационально, неже- твия с провайдером, имея в своём рас- никнуть следующие подзадачи:
ли определять факт пропадания кана- поряжении лишь машину с установлен- n переключение на более дорогой ка-
ла по начинающейся в бухгалтерии па- ной FreeBSD, выполняющей роль шлю- нал только на время проблем с де-
нике и вручную переопределять шлюз за для локальной сети. шёвым;
по умолчанию. n направление трафика, чувствитель-
Конечно, «академически» правиль- Анализ проблемы ного к задержкам, в более «быст-
ным решением была бы настройка пол- Итак, в общих чертах задача ясна – рый» канал, в то время как весь
ноценного маршрутизатора (возможно, нужно обеспечить рациональное ис- не критичный к скорости достав-
даже программно-аппаратного ком- пользование двух каналов в сеть Ин- ки пакетов трафик (например, FTP-
плекса типа Cisco), обеспечивающе- тернет и позаботиться об автомати- закачки) заворачивать в «медлен-
го динамическое регулирование тра- ческом резервировании, чтобы рабо- ный», но более дешёвый канал;
фика на основании такой информа- тоспособность сети быстро восста- n пропорциональная балансировка
ции, как доступность того или иного навливалась при проблемах на одном нагрузки между каналами, имею-
узла, «стоимость» маршрута, требо- из каналов. щими сопоставимые по качеству
вания к качеству обслуживания (се- Чтобы не потерять за деревьями и стоимости характеристики.
тевики этот QoS уже в ночных кошма- леса, будем считать, что оба канала
рах видят). Однако это зачастую свя- «приходят» к нашему серверу в виде Думаю, и без длительных объяс-
зано с необходимостью регистриро- Ethernet, т.е. подключаются на обычные нений понятно, что как-то влиять мы
вать собственную автономную систему сетевые карты и настраиваются путём сможем лишь на тот трафик, который
(AS), настраивать один из протоколов указания IP-адреса самого интерфей- инициируется хостами локальной сети,
маршрутизации (например, BGP) и т. д. са, адреса шлюза по умолчанию и мас- получающими доступ в Интернет че-
Для небольших компаний такие реше- ки подсети (т.е. как статические мар- рез данный сервер, либо самим сер-
ния обычно оказываются неоправдан- шруты). Через третью сетевую кар- вером. То есть мы сможем управлять
но дорогими и сложными, да и не каж- ту подключается локальная сеть. Для тем, через какой из каналов будет за-


администрирование
гружаться запрошенная пользователем страница или «за- других критериев (про-
ливаться» на удалённый FTP-сервер какой-то файл. А вот токол, порты источника
трафик, инициированный «снаружи» (например, почтовый и назначения, IP-адрес
или запросы на веб-сервер компании), придётся обслужи- источника, и т. д.). Впро-
вать на том канале, куда он придёт. чем, об этом мы ещё по-
Конечно, используя некоторые приёмы при настройке говорим.
DNS-зон, например, MX-записи с одинаковым приорите- Особо хочу обратить
том, можно в определённой степени влиять и на входящий ваше внимание, что этот
трафик, но сегодня мы не будем останавливаться на этом метод будет работать
вопросе. только при наличии в со-
ответствующем направ-
Простая маршрутизация лении (то есть уже за ин-
Рисунок 1. Схема с «внешними»
Начнём с простейшей задачи. Допустим, мы подключены терфейсом) NAT-серве- NAT-серверами
к двум провайдерам – «Мегаполис» и «Интерком» (все на- ра, например, реализо-
звания здесь и далее вымышлены; любое совпадение с на- ванного в ADSL-модеме, – это то самое «особое условие»,
именованиями и торговыми марками реально существую- на которое я ссылался выше. В противном случае провай-
щих компаний случайно). Причём «Мегаполис» предостав- дер наверняка будет «рубить» у себя на шлюзе пакеты с
ляет дешёвый трафик внутри сети, но довольно дорогой IP-адресами, не принадлежащими ему. И уж тем более нет
внешний, в то время как «Интерком» продаёт весь трафик никаких оснований полагать, что схема будет работать при
по единой, «средней», цене. Возникает желание весь внут- непосредственном использовании «серых» адресов, вроде
рисетевой трафик направлять через канал «Мегаполиса», показанных в примере 192.168.0.0/24 (см. рис. 1).
в то время как остальной – через «Интерком». Да и даже в том случае, если вы – счастливый облада-
В этом случае логично в качестве маршрута по умол- тель достаточно большого массива реальных адресов, ко-
чанию (параметр defaultrouter в файле /etc/rc.conf) задать торые без проблем пропускают через себя все ваши про-
шлюз «Интеркома» (пусть это будет 10.1.1.1; на интерфей- вайдеры, поставленная задача без NAT-серверов реше-
се rl1 будем полагать адрес 10.1.1.2). А задачу выделения на не будет. Поскольку ответные пакеты будут приходить
трафика на внутренние сети «Мегаполиса» можно решить к вашему серверу в соответствии с правилами маршрути-
путём настройки статических маршрутов (при некоторых зации внешних узлов, на которые вы вряд ли сможете ока-
условиях, о которых читайте дальше): зать какое-то влияние. То есть входящий трафик в любом
случае будет идти так, как прописано на маршрутизаторах
# route add 8x.25y.0.0/16 10.0.1.1 провайдера и выше, а не так, как захочется нам. (Позже бу-
add net 8x.25y.0.0: gateway 10.0.1.1 дет показано, как можно использовать NAT непосредствен-
но на настраиваемой машине, чтобы «форсировать» реше-
# netstat -rn | head -4; netstat -rn | grep 8x.25y
ние данной проблемы).
Routing tables

Internet: Ещё один пример маршрутизации


Destination Gateway Flags Refs Use Netif Expire Более общий случай рассмотренного примера может ис-
8x.25y/16 10.0.1.1 UGS 0 2 rl0
пользоваться для балансировки нагрузки на каналы –
это заворачивание «половины Интернета» по альтерна-
Постоянная «прописка» маршрута делается в /etc/ тивному маршруту (с учётом всего сказанного касатель-
rc.conf: но NAT-серверов):

static_routes="meganet" # route add 0.0.0.0/1 10.0.1.1


route_meganet="-net 8x.25y 10.0.1.1"

Здесь 8x.25y.0.0 – внутренняя подсеть провайдера «Мега- Способ довольно грубый, но как аварийное решение
полис». То есть мы прописываем для этих адресов явный вполне годится. Очевидно, варьируя маску «заворачивае-
маршрут через интерфейс rl0 (для определённости его IP мой» сети и контролируя получающийся результат на бо-
будет 10.0.1.2 со шлюзом 10.0.1.1), подключённый к каналу лее-менее длительном временном интервале (например,
«Мегаполиса», в то время как для остального трафика ис- по счётчикам того же ipfw), можно добиться близкого к же-
пользуется маршрут по умолчанию. лаемому соотношения трафика в обоих каналах.
Аналогичного результата можно достичь, используя
функцию «форвардинга» файервола ipfw: Условное перенаправление трафика
Чуть усложним предыдущую задачу. Допустим, что «Интер-
# ipfw table 1 add 8x.25y.0.0/16 ком» предоставляет «внешний» трафик хоть и дешевле,
# ipfw add 5000 fwd 10.0.1.1 ip from 192.168.0.0/24 ↵
to 'table(1)' но худшего качества. То есть работать через «Интерком»
не совсем комфортно, особенно в часы пик, и это вызы-
Благодаря использованию файервола можно более гиб- вает вполне законное возмущение руководящих лиц ком-
ко управлять трафиком, определяя его в тот или иной ка- пании («Мы за Интернет такие деньги платим, а страницы
нал не просто по IP-адресу назначения, но и по целому ряду по полчаса открываются»)...

№2, февраль 2007 


администрирование
В этом случае можно дополнить показанные в преды- CLIENT_OPTIONS(`Addr=10.0.1.2')dnl
дущем разделе правила форвардинга записями для «осо-
бо важных персон»: Теперь вся исходящая почта будет уходить с указанного
адреса – остаётся только пакеты перенаправить в нужный
# ipfw add 4900 fwd 10.0.1.1 ip from 192.168.0.100 to any шлюз. (Думаю, не нужно пояснять, что на маршрут входя-
# ipfw add 4950 fwd 10.0.1.1 tcp from 192.168.0.128/29 ↵
to any щей почты мы можем влиять лишь соответствующей MX‑за-
# ipfw add 5000 fwd 10.0.1.1 ip from 192.168.0.0/24 ↵ писью для нашего домена).
to 'table(1)'

В этом примере показано перенаправление на ка- Распределение нагрузки по подсетям


нал «Мегаполиса» всего директорского трафика с адре- Если равномерно распределить трафик по типу не удаётся
са 192.168.0.100 и http-трафика, идущего из бухгалтерии (допустим, 99% всей нагрузки приходится на http-соедине-
с адресов 192.168.0.128/29. Остальным придётся терпеть, ния), то можно попытаться «раскидать» трафик внутренних
как и раньше, ради процветания родной компании. подсетей по разным каналам.
Использование для этой цели fwd-правил очевидно
Распределение трафика по типу (с той же поправкой на дальнейшую NAT-трансляцию):
Механизм форвардинга позволяет делить трафик и по ти-
пу. Например, один канал можно использовать для работы ipfw add 4900 fwd 10.0.1.1 ip from 192.168.0.0/25 to any
с электронной почтой и интернет-страницами, а весь ftp‑тра-
фик направить во второй канал. В зависимости от режима Но в данном случае можно использовать распределе-
использования интернет-доступа компанией есть некото- ние нагрузки и на базе NAT, запущенного на данном ком-
рая надежда добиться таким образом равномерного балан- пьютере (рис. 2).
са нагрузки на каналы и при этом учесть требования отде- Например, так это можно осуществить, используя ipfw
льных видов трафика к качеству соединения (процент по- и два экземпляра natd:
терь, величина задержек и т. д.). Пример приводить не бу-
ду – всё и так очевидно. # natd -n rl0 -p 8668
# natd -n rl1 -p 8669
Помимо форвардинга здесь можно использовать и не- # ipfw add divert 8668 ip from 192.168.0.0/25 to any
которые «узкоспециализированные» решения. Например, # ipfw add divert 8669 ip from 192.168.0.128/25 to any
# ipfw add fwd 10.0.1.1 ip from 10.0.1.2 to any
если объём http-трафика достаточно высок, чтобы полно- # ipfw add fwd 10.1.1.1 ip from 10.1.1.2 to any
стью задействовать один из каналов, то можно настроить # ipfw add divert 8668 ip from any to 10.0.1.2
# ipfw add divert 8669 ip from any to 10.1.1.2
прокси-сервер таким образом, чтобы он для своей рабо-
ты использовал именно этот канал, а второй оставался бы Назначение fwd-правил, думаю, уже пояснять не требу-
для всего остального. Например, для Squid можно исполь- ется. Решение той же задачи с помощью фильтра pf:
зовать параметры:
nat on rl0 from 192.168.0.0/25 to any -> 10.0.1.2
nat on rl1 from 192.168.0.128/25 to any -> 10.1.1.2
tcp_outgoing_address 10.0.1.2 pass out route-to (rl0 10.0.1.1) from 10.0.1.2 to any
udp_incoming_address 10.0.1.2 pass out route-to (rl1 10.1.1.1) from 10.1.1.2 to any
udp_outgoing_address 10.0.1.2

Здесь 10.0.1.2 – IP-адрес на rl0; напомню, что шлюзом по Squid, кстати, тоже умеет использовать отдельные ис-
умолчанию у нас является 10.1.1.1. Для полного счастья этого ходящие каналы для конкретных подсетей:
ещё недостаточно (поскольку трафик к «чужим» IP‑адресам
по-прежнему будет стремиться уйти через шлюз по умол- acl subnet1 src 192.168.0.0/255.255.255.240
acl subnet2 stc 192.168.0.128/255.255.255.240
чанию), поэтому заключительным штрихом будет перена- tcp_outgoing_address 10.0.1.2 subnet1
правление трафика с адреса, к которому мы таким обра- tcp_outgoing_address 10.1.1.2 subnet2
зом привязали Squid, в наш второй канал, скажем, тем же
fwd-правилом: Ну и нужно не забыть про уже набивший оскомину фор-
вардинг с соответствующего адреса в альтернативный
# ipfw add fwd 10.0.1.1 ip from 10.0.1.2 ↵ шлюз. В некоторых экзотических случаях можно попробо-
to not 192.168.0.0/24 out
вать запустить два экземпляра прокси-сервера для обслу-
Эта схема будет работать и без последующего NAT-пре- живания своих подсетей, но в большинстве случаев это мо-
образования, но при условии, что IP-адрес, заданный на rl0 жет оказаться нерационально.
(и к которому мы привязываем Squid) будет из диапазона,
выданного нам провайдером, предоставляющим подключе- Пропорциональная балансировка
ние на данном канале. Это даст гарантию, что и входящий Описанные примеры сравнительно просты и зачастую
трафик будет маршрутизирован должным образом. позволяют «малой кровью» достичь желаемого эффекта.
Ещё один пример: если один из каналов можно полно- Но когда трафик носит слишком нерегулярный характер
стью выделить под электронную почту, то и почтовый сервер (с утра бухгалтерия какие-то отчёты по электронке шлёт,
можно заставить работать через «альтернативный» канал, забывая, как обычно, предварительно сжимать свои фай-
а не руководствоваться установленным шлюзом по умол- лы Excel; под вечер сисадмин начинает качать очередной
чанию. Конфигурация для Sendmail: сервис-пак; в обеденный перерыв со всех отделов подска-


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

Использование мультиплексора сколько интерфейсов по принципу «один через разные каналы и затем объединить
ng_one2many ко многим», когда пакеты с интерфейса, их в ng‑узел, то можно удвоить пропускную
В качестве особого случая обсуждаемого объявленного как «one», по очереди пере- способность соединения.
здесь вопроса можно рассматривать ситу- направляются в интерфейсы «many*» (под- К сожалению, сейчас ng_one2many
ацию, когда необходимо (или желательно) держивается также возможность дублиро- не поддерживает алгоритмы распределе-
соединить несколько машин, входящих в вания one-пакетов во все many-интерфей- ния пакетов кроме round-robin («по очере-
вашу зону ответственности, используя од- сы, но сейчас это нам неинтересно). Вхо- ди»), так что для настоящего удвоения не-
новременно несколько сетей разных про- дящие пакеты со всех many-интерфейсов обходимы каналы с одинаковой пропускной
вайдеров. Помимо того, что в каждой точке собираются в one-интерфейс. Подробнос- способностью. Существуют также пробле-
можно решать задачу автономно, FreeBSD ти можно узнать на странице справки man мы с определением работоспособности кон-
предоставляет ещё одну возможность – ng_one2many(4), там же приведён пример кретного канала, так что этот метод пока не
использование узла ng_one2many. Этот конфигурации. Таким образом, если на обе- слишком пригоден как средство обеспече-
netgraph-узел позволяет объединить не- их машинах настроить несколько туннелей ния надёжности.

кивает http-трафик), то возникает желание поделить всю round-robin или random, фильтр будет следить за тем, чтобы
нагрузку «пополам». Пакетные фильтры pf и ipf предостав- все соединения с конкретного IP-адреса попадали на одно
ляют в ваше распоряжение средство балансировки трафи- и то же правило трансляции или перенаправления.
ка между несколькими внешними интерфейсами: алгоритм В ipfw тоже есть возможность реализовать нечто подоб-
round-robin. Рассмотрим пример для pf: ное, но на другом принципе. Здесь в правило можно вклю-
чить опцию prob N, где N – число от 0 до 1, указывающее ве-
pass in on ed0 \ роятность, с которой правило будет применяться к пакетам,
route-to { (rl0 10.0.1.1), (rl1 10.1.1.1)} round-robin \
from 192.168.0.0/24 to any keep state подходящим по остальным критериям. В паре с действием
skipto можно попробовать реализовать нечто подобное:
Этим правилом входящий трафик на внутреннем интер-
фейсе (т.е. исходящий для пользователей) будет распреде- ipfw add 500 check-state
ipfw add 1000 prob 0.4 skipto 2000 ip from any ↵
ляться между интерфейсами rl0 и rl1 с соответствующими to any in via ed0
шлюзами по алгоритму round-robin (т.е. внешний интерфейс ipfw add 1500 fwd 10.0.1.1 ip from 192.168.0.0/24 ↵
to any out keep-state
будет меняться циклически – первое соединение будет ис- ipfw add 2000 fwd 10.1.1.1 ip from 192.168.0.0/24 ↵
пользовать rl0, второе – rl1, третье – снова rl0 и так далее). to any out keep-state
Опция keep state сохраняет состояние, благодаря чему все
пакеты в рамках одного соединения будут использовать Правило 1000, имея в своём составе опцию prob 0.4, бу-
один и тот же шлюз. В итоге нагрузка будет распределять- дет выполняться для всех исходящих пакетов (с точки зре-
ся между двумя каналами – нельзя сказать, что трафик по- ния пользователей; для FreeBSD-шлюза это будут входящие
делится абсолютно поровну, но при рассмотрении за боль- пакеты на внутреннем интерфейсе, что и отражается опци-
шой период времени можно считать, что балансировка бу- ями in via ed0) с вероятностью 40%. Эти 40% «счастливчи-
дет приближаться к этому. ков» будут перебрасываться на правило 2000, которым бу-
Правда, в данном случае могут возникнуть некоторые дут отправляться в шлюз интерфейса rl1 (хотя, поскольку
проблемы. Например, если некий веб-сервер отслеживает это шлюз по умолчанию, можно было бы ограничиться дейс-
сессию по исходящему IP-адресу, то такая смена шлюза мо- твием allow). Оставшиеся 60% пакетов продолжат свой путь
жет привести к тому, что уже после ввода логина/пароля и правилом 1500 будут переброшены на шлюз интерфей-
при запросе другой страницы веб-сервер не «узнает» вас са rl0. Важной особенностью здесь является наличие оп-
и потребует повторной аутентификации. Конечно, привяз- ций keep-state – благодаря им под «пробу» будет попадать
ка сессии к IP-адресу в нынешних условиях широкой рас- только первый пакет устанавливаемого соединения, а все
пространённости NAT- остальные пакеты подпадут под действие правила check-
трансляции – реше- state, которое должно быть указано до правила skipto, что-
ние довольно стран- бы избежать «разрыва» уже установленной сессии. Пос-
ное, но всё ещё может кольку динамические правила сохраняют первоначальное
встречаться (напри- действие (в данном случае forward), то все пакеты соеди-
мер, как «второй эше- нения будут отправляться через указанный шлюз.
лон безопасности» В отличие от балансировки по методу round-robin, здесь
в дополнение к ис- есть возможность распределять трафик между интерфей-
пользованию cookies). сами в любой пропорции. Кстати, такой механизм можно
В pf для решения этой реализовать и в pf – используя опцию probability, работаю-
проблемы можно ис- щую аналогично опции prob в ipfw.
пользовать опцию
sticky-address – при её Проблема резервирования
наличии в правиле nat Несмотря на то что резервирование сетевых каналов – од-
Рисунок 2. Схема с «внутренними»
NAT-серверами или route-to с опцией на из основных задач, ради которых заключаются догово-

№2, февраль 2007 


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

Отступление про шейперы кретной машины внутри сети гарантирован- Multipath в Linux
Вопросы регулирования трафика с помо- ную полосу пропускания, повысить приори- В Linux, в отличие от FreeBSD, всё замет-
щью так называемого шейпинга (shaping) тет http-трафика перед ftp-трафиком и т. д. но проще благодаря имеющемуся пакету
не относятся напрямую к теме данной ста- Реализуется шейпинг, как правило, iproute2. Он предоставляет возможность
тьи, но всё же о них следует упомянуть. с помощью файервола. Во FreeBSD это задавать несколько шлюзов по умолчанию
Шейпинг позволяет распределять тра- можно сделать либо связкой ipfw/dummynet, с различным весом, за счёт чего баланси-
фик по различным очередям с различными либо PF/ALTQ. Зачастую грамотное распре- ровка трафика в любых пропорциях реа-
параметрами (такими как пропускная спо- деление разных типов трафика по разным лизуется просто и прозрачно. Более под-
собность) и приоритетами, позволяя тем очередям позволяет заметно повысить ка- робные сведения вы найдёте на страни-
самым реализовывать различные полити- чество работы интернет-соединения, при- цах справки и в дополнительной литерату-
ки качества обслуживания. Например, с по- ближающегося к пределу своих пропуск- ре (ссылки на некоторые материалы смот-
мощью шейпинга можно выделить для кон- ных возможностей. рите в конце статьи).

ры сразу с несколькими провайдерами, FreeBSD не предо- торому будет проверяться. Например, если выбрать в ка-
ставляет штатных средств решения этой задачи в автома- честве такового шлюз или DNS-сервер провайдера, то в
тическом режиме (по крайней мере, мне их найти не уда- случае аварии на внешнем канале провайдера эти ресур-
лось). Приходится искать обходные пути. сы будут доступны, и переключение на резервный канал
Например, можно разработать небольшой скрипт, кото- не произойдёт.
рым будет контролироваться работоспособность канала: Можно пытаться определять доступность некоторого
удалённого ресурса (скажем, сервера yandex.ru), указывая
#!/bin/sh с помощью ключа -S команды ping конкретный IP-адрес ис-
GW1=10.161.193.1 точника для отправляемых пакетов (понятно, что этот адрес
GW2=83.221.201.197 должен «заворачиваться» в нужный интерфейс):
/sbin/ping -q -c 1 $GW1 > /dev/null 2>&1
if [ $? != 0 ]; then
/sbin/ping -q -c 1 $GW2 > /dev/null 2>&1 ping -S 10.0.1.2 yandex.ru
if [ $? = 0 ]; then
if [ ! -f /tmp/gw.changed ]; then
/sbin/route change default $GW2 \ Но и в этом случае могут быть разные «казусы», напри-
&& touch /tmp/gw.changed
fi мер, временная недоступность самого ресурса при нор-
fi мальной работе обоих каналов. Хотя если проверять до-
else
if [ -f /tmp/gw.changed ]; then ступность одного и того же ресурса приведённым выше
/sbin/route change default $GW1 \ сценарием, то переключения на резервный канал не про-
&& rm /tmp/gw.changed
fi изойдёт, поскольку его работоспособность также не будет
fi подтверждена.

То есть мы просто «пингуем» шлюз на стороне основного Заключение


провайдера, и если он оказывается недоступен, то: Как видите, при желании можно решить почти любую задачу.
n проверяем работоспособность резервного канала; Хотя приходится констатировать, что системе FreeBSD яв-
n перенастраиваем маршрут по умолчанию на шлюз ре- но недостаёт возможностей пакета iproute2, используемого
зервного канала; в Linux. Если бы была возможность, скажем, указывать не-
n оставляем «метку» /tmp/gw.changed, сигнализирующую сколько шлюзов по умолчанию с разными метриками, мно-
о смене шлюза. гие проблемы эффективного использования нескольких
внешних каналов решались бы гораздо элегантнее.
При следующем выполнении (например, скрипт можно
запускать по cron раз в минуту), если GW1 в норме и есть 1. Балансировка загрузки каналов средствами FreeBSD – http://
«метка», то возвращаем основной шлюз на место. Если оба www.opennet.ru/base/net/freebsd_balance.txt.html.
шлюза недоступны, текущее состояние не меняем. Пока- 2. FreeBSD: управление загрузкой 2 каналов, отказоустойчи-
занный пример упрощён (в частности, могут потребоваться вость и балансировка нагрузки – http://dreamcatcher.ru/docs/
перенастройка NAT-сервера и правил файерволов для ра- freebsd_bal.html.
боты с новым шлюзом), но для понимания принципа рабо- 3. Policy-Based Routing (PBR) в ОС FreeBSD – http://ipfw.ism.kiev.ua/
ты достаточен. pbr.html.
Основным (и, видимо, единственным) достоинством 4. Укрощение двухголового змия – http://www.xakep.ru/magazine/
этого метода можно назвать прозрачность и сравнитель- xa/092/110/1.asp.
ную простоту. Недостатки – определённая инерционность, 5. Маршрутизация через несколько каналов/провайдеров
хоть и небольшие, но всё же непроизводственные затра- (Linux) – http://www.opennet.ru/docs/RUS/LARTC/x348.html.
ты трафика, ненулевая вероятность ложных срабатываний, 6. Два канала в Internet (Linux) – http://www.osp.ru/lan/2002/05/
особенно при высокой загрузке канала. 042_print.html.
Более серьёзной проблемой, чем может показаться 7. Balancing Connections Over Multiple Links (Linux) – http://tetro.net/
на первый взгляд, является выбор ресурса, доступ к ко- misc/multilink.html.

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

Создаём интегрированный в Active Directory


файл-сервер на базе Samba во FreeBSD

Алексей Бережной
«Как поступить со старой серверной техникой?» – такой вопрос возникает во многих
организациях. На базе сервера, давно устаревшего по критериям Microsoft, вы можете сделать
вполне приличный файл-сервер и сервер печати, используя пакет Samba3.x и операционную
систему FreeBSD 6.x.

Л
ежал без дела в серверной ста- ли памяти: 4 слота по 256 Мб – всего место. Возникло решение: не так час-
рый сервер с двухпроцессор- 1 Гб ОЗУ. А это уже не так плохо. К то- то используемые файлы, такие как
ной материнской платой, дву- му же после апгрейда других серве- юридическая справочная база данных,
мя процессорами Pentium III 450 МГц ров у меня скопилось некоторое ко- коллекцию драйверов и другие подоб-
«на борту» и SCSI-адаптером (80 Мб/с, личество SCSI‑винчестеров: шесть ные «пожиратели пространства», пере-
но все же «скайзи»!), правда, без под- дисков (три пары по два одинаковых) нести на отдельный файл-сервер.
держки функций RAID-контроллера. размером 18 Гб и два диска разме- Другая проблема возникла с не-
К моей радости, к материнской плате ром по 9 Гб. обходимостью использования ста-
подошли обычные Non-ECC (то есть А тут на основном файловом сер- ринных программ, написанных для
без контроля четности) SDRAM-моду- вере стало заканчиваться свободное DOS‑совместимых операционных сис-

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

2000/XP. А посему просто необходим сервер печати, поз- 9 Гб da0 Диск с установленной системой
воляющий подключать сетевые принтеры на порт LPT ко- 9 Гб da1
Файл подкачки + место для хранения
мандой «net use». резервной копии конфигурационных файлов
18 Гб da2 Первый дисковый массив RAID1

Готовим к инсталляции Samba 18 Гб da3


Выбор операционной системы и планирование конфигу- 18 Гб da4 Второй дисковый массив RAID1
рации сервера. 18 Гб da5
В качестве операционной системы я выбрал FreeBSD. 18 Гб da6 Третий дисковый массив RAID1
Подкупила низкая требовательность к ресурсам вкупе
18 Гб da7
с высокой стабильностью и хорошо продуманной системой
инсталляции ПО через коллекцию портов. К тому же она стройки был описан в моей статье: «Настраиваем шлюз
бесплатна, а покупку дополнительной лицензии, скажем, в Интернет на базе FreeBSD», вышедшей в №12 за 2006 г.
Microsoft Windows 2003 Server для «файлопомойки» вряд ли Кроме того, с этой задачей прекрасно справится все та же
кто-то одобрит. Версия OS также определилась сразу – 6.1, программа sysinstall. После всех настроек наш сервер
как самая свежая на тот момент. Ну а раз решено ставить имеет имя fs, сетевой адрес 192.168.1.3, маску подсети
UNIX-систему в качестве файлового сервера для клиентов 255.255.255.0. Имя домена: mydomain.ru.
сети Microsoft Windows, да еще интегрированного в струк- Так как создается дополнительный файл-сервер для хра-
туру каталога Active Directory, то ясно, что без пакета про- нения некритичных файлов, который будет располагаться
грамм Samba не обойтись. внутри периметра локальной сети, требования к безопас-
Поскольку винчестеры, которые предполагалось ис- ности в данном случае не слишком высокие. Поэтому я
пользовать, были, что называется, «видавшие виды», нуж- не стал устанавливать на эту машину файервол. В то же
но было задуматься о структуре дискового массива. При- время хотелось бы иметь возможность назначать права на
няв во внимание тот факт, что купить аналогичные 18 Гб тот или иной ресурс для каждого пользователя.
SCSI-винчестеры на замену вышедшим из строя не пред-
ставляется возможным, я решил организовать три неболь- Сборка ядра с поддержкой
ших массива RAID1 (прямое зеркалирование) по 18 Гб каж- двухпроцессорной конфигурации
дый для хранения данных. В случае выхода одного из зер- и дисковых квот
кальных дисков из строя это позволит сделать резервную Поскольку у нас двухпроцессорный сервер, то для вклю-
копию данных. А заменять в этом случае лучше сразу оба чения двухпроцессорной поддержки необходимо пересоб-
зеркальных диска, не дожидаясь выхода из строя второго рать ядро с опциями поддержки SMP. Кроме того, я решил
накопителя. Поскольку встроенной аппаратной поддержки включить в ядре заодно и опцию поддержки дисковых квот
RAID в данной материнской плате не наблюдалось, требо- (на будущее, как я уже писал выше).
валось сделать программный RAID средствами, доступны- Переходим в каталог с конфигурационными файлами
ми в ОС FreeBSD 6.1 для процессоров с архитектурой i386:
Также, несмотря на отсутствие на данный момент необ-
ходимости, решил зарезервировать возможность примене- fs# cd /sys/i386/conf
ния дисковых квот на будущее.
Систему установил на первый 9-гигабайтный диск, Делаем копию файла GENERIC:
а файл подкачки размером 2 Гб создал на другом 9-гига-
байтном диске, чтобы тем самым повысить быстродействие fs# cp GENERIC fs
системы. Остаток пространства на втором 9-гигабайтном
диске решил зарезервировать для резервного копирова- открываем файл на редактирование и добавляем следу-
ния конфигурационных файлов. ющие строки:
Таким образом, была запланирована следующая орга-
низация дискового пространства (см. таблицу). fs# vi fs

Начало установки Опцию поддержки двухпроцессорной архитектуры:


Наверное, не имеет смысла подробно рассказывать, как ус-
танавливать саму операционную систему и как размечать options SMP
первые два диска. Со всем этим прекрасно справляется
программа /usr/sbin/sysinstall. Отмечу только, что, так как Опцию поддержки дисковых квот:
мы будем строить на базе оставшихся дисков RAID-мас-
сивы, нет смысла выполнять их разметку на этапе уста- options QUOTA
новки системы.
После установки операционной системы необходимо Изменяем параметр ident (это поможет в дальнейшем
сконфигурировать сетевые интерфейсы. Этот процесс на- использовать команду «uname -i» для в качестве «шпар-

№2, февраль 2007 13


администрирование
галки» при определение наличия мультипроцессорной под- дания зеркальных массивов. У нас самый простой случай,
держки в ядре): так как мы объединяем свободные от данных, идентичные
винчестеры в простой RAID1:
ident SMP-GENERIC
fs# gmirror label -v gm0 da2 da3
fs# gmirror label -v gm1 da4 da5
Создаем компиляционный каталог: fs# gmirror label -v gm2 da6 da7

fs# config fs Итак, у нас созданы на дисках da2, da3, da4, da5, da6,
da7 соответствующие метки, указывающие на их прина-
Эта команда создаст директорию /usr/src/sys/compile/fs и по- длежность к тому или иному дисковому массиву.
местит туда файлы, необходимые для компиляции ядра. Необходимо включить поддержку gmirror. Добавляем
Сохраняем изменения, закрываем файл, переходим в /boot/loader.conf функцию geom_mirror_load=YES и пере-
в нужный каталог: загружаемся.

fs# cd ../compile/fs fs# echo geom_mirror_load="YES" >> /boot/loader.conf

и запускаем компиляцию ядра: После перезагрузки проверяем наличие вновь создан-


ных псевдоустройств, представляющих собой дисковые
fs# make depend && make && make install массивы:

(последовательность && означает, что следующая коман- fs# ls /dev/mirror


да будет выполняться только после успешного завершения gm0 gm1 gm2
предыдущей), после чего можно идти пить кофе, потому что
процесс сборки ядра на подобной конфигурации выполня- Теперь можно создать файловые системы на этих раз-
ется далеко не так быстро, как хотелось бы. делах:
Вернувшись, перезагружаем систему и смотрим, нор-
мально ли работает только что собранное ядро: fs# newfs /dev/mirror/gm0
fs# newfs /dev/mirror/gm1
fs# newfs /dev/mirror/gm2
fs# reboot

Перезагрузку на данном этапе можно было бы и не вы- Поддержка ACL


полнять, поскольку все равно придется перезагружаться Теперь еще одна интересная деталь. FreeBSD, как и все
после объединения винчестеров в дисковые массивы, но я стандартные UNIX-системы, имеет стандартную структуру
предпочитаю лишний раз убедиться, что все идет по плану. атрибутов. Что это означает? Это значит, что для одного
Кроме того, после перезагрузки будут работать оба процес- файла, каталога или другого ресурса можно задать следу-
сора, что немаловажно для нашего не слишком производи- ющие права: права для владельца, права для группы (при-
тельного железа. Обновляем коллекцию портов: чем владелец файла необязательно должен принадлежать
этой группе) и права для всех остальных. Но представьте
fs# portsnap fetch && portsnap extract && portsnap update себе ситуацию, когда над одним файлом работают сразу
несколько пользователей, к тому же совершенно из разных
групп. Как поступить в этом случае? Выход есть – создать
Создание дисковых массивов еще одну дополнительную группу, в которую бы входили
В современных версиях FreeBSD есть три способа созда- все данные пользователи, и разрешить этой группе доступ
ния RAID1-массивов: к ресурсу. Вроде бы все ничего, только в стандартных слу-
n Старый добрый ccd, издавна присутствовавший чаях в UNIX существует еще одно ограничение: пользова-
во FreeBSD, но показавшийся, на мой взгляд, доволь- тель может входить не более чем в 16 групп (включая груп-
но сложным для решения простейших задач. пу по умолчанию). А если пользователю необходимо перио-
n Неплохо отработавший во FreeBSD 4-й ветки vinum. Сов- дически работать над 17 аналогичными ресурсами? Вот тут
ременная интерпретация vinum носит название gvinum, на помощь приходит поддержка Access Control Lists (сокра-
чтобы подчеркнуть, что работа современного vinum щенно ACL), проще говоря, – списков доступа. Это позво-
строится на базе другого продукта: GEOM. Кроме того, ляет разрешить доступ пользователям из различных групп
сам vinum имеет непрозрачный для понимания конфи- к одному ресурсу, не включая этих пользователей в допол-
гурационный файл. нительную группу, так, как это реализовано в операцион-
n И наконец, сам GEOM – новый программный продукт, ных системах Microsoft Windows и Novell Netware.
имеющий хорошую репутацию и прекрасно работаю- Помимо указанной проблемы, существует и другая
щий в 5-й и 6-й ветках FreeBSD. причина применения ACL. Это делегирование полномо-
чий. В нашем случае сотрудник, ответственный за подде-
Я выбрал GEOM за его простоту и стабильность. Мы бу- ржание системы в отсутствие системного администрато-
дем использовать утилиту gmirror из пакета GEOM для соз- ра, даже не обладая знаниями по операционным системам

14
администрирование
семейства UNIX, сможет сам назначать права, используя # GMIRROR volume
/dev/mirror/gm0 /vol0 ufs rw 1 2
обычный инструментарий (в данном случае – Проводник /dev/mirror/gm1 /vol1 ufs rw 1 2
Microsoft Windows). /dev/mirror/gm2 /vol2 ufs rw 1 2
Поддержка ACL по умолчанию включена в ядро
GENERIC FreeBSD 6.1. Поскольку при построении наше-
го ядра мы ориентировались на ядро GENERIC, нам нужно Установка Kerberos,
только включить поддержку ACL для выбранных файловых интеграция с Active Directory
систем. У нас самый простой случай, потому что мы вклю- В Active Directory для обеспечения единой системы безопас-
чаем поддержку ACL для несмонтированных файловых сис- ности используется протокол Kerberos. Во FreeBSD для его
тем, на которых нет данных. Итак, приступим. поддержки нужно установить программу heimdal:
Вводим команду:
fs# cd /usr/ports/security/heimdal
fs# make install clean
fs# /sbin/tunefs -a enable /dev/mirror/gm0
Создаем файл /etc/krb5.conf:
На что система нам выдаст ответ:
tunefs: ACLs set
fs# vi /etc/krb5.conf

Аналогично: И вносим туда следующие строки:

fs# /sbin/tunefs -a enable /dev/mirror/gm1 [libdefaults]


default_realm = MYDOMAIN.RU
tunefs: ACLs set clockskew = 300
v4_instance_resolve = false
fs# /sbin/tunefs -a enable /dev/mirror/gm2 v4_name_convert = {
host = {
tunefs: ACLs set rcmd = host
ftp = ftp
}
Все, теперь можно смело монтировать наши созданные plain = {
something = something-else
файловые системы. }
}
Монтирование и проверка [realms]
созданных разделов MYDOMAIN.RU = {
kdc = pdc.mydomain.ru
Создаем каталоги для монтирования новых файловых сис- admin_server = pdc.mydomain.ru
тем (в моем случае это были каталоги: /vol0, /vol1, /vol2): default_domain = mydomain.ru
}
OTHER.REALM = {
fs# mkdir /vol0 v4_instance_convert = {
fs# mkdir /vol1 kerberos = kerberos
fs# mkdir /vol2 computer = pdc.mydomain.ru
}
}
И монтируем файловые системы наших RAID-массивов: [domain_realm]
.mydomain.ru = MYDOMAIN.RU
fs# mount /dev/mirror/gm0 /vol0
fs# mount /dev/mirror/gm1 /vol1
fs# mount /dev/mirror/gm2 /vol2 Стоит обратить особое внимание на строки: default_realm =
MYDOMAIN.RU и default_domain = mydomain.ru. Они необхо-
Проверяем: димы для описания домена, который подразумевается по
умолчанию, когда пользователь не указывает его имя в яв-
fs# mount ном виде. Синхронизируем время с контроллером домена:
/dev/da0s1a on / (ufs, local, soft-updates)
devfs on /dev (devfs, local) fs# ntpdate 192.168.1.6
/dev/da1s1d on /add (ufs, local, soft-updates)
/dev/mirror/gm1 on /vol1 (ufs, local, acls)
/dev/mirror/gm0 on /vol0 (ufs, local, acls) Я предпочитаю, чтобы время синхронизировалось
/dev/mirror/gm2 on /vol2 (ufs, local, acls)
при каждом старте системы (мало ли из-за чего мог пере-
загрузиться сервер, например, из-за длительного отключе-
Запись «acls» показывает, что для указанных файло- ния питания), для этого добавляем в файл /etc/rc.local строку
вых систем включена поддержка ACL. с командой синхронизации. Следующая команда добавляет
Добавляем нужные записи в /etc/fstab: команду ntpdate в стартовый файл запуска /etc/rc.local:

fs# vi /etc/fstab fs# echo ntpdate 192.168.1.6 >> /etc/rc.local

# Device Mountpoint FStype Options Dump Pass#


/dev/da1s1b none swap sw 0 0 Пробуем получить билетик от Kerberos:
/dev/da0s1a / ufs rw 1 1
/dev/da1s1d /add ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0 fs# kinit -p Administrator

№2, февраль 2007 15


администрирование
Ответ системы в положительном случае: [X] LDAP With LDAP support # Включаем поддержку LDAP
[X] ADS With Active Directory support # Необходимо для интеграции
Administrator@MYDOMAIN.RU's password: # с Active Directory
[X] CUPS With CUPS printing support # Система печати
После ввода правильного пароля система выдаст [X] WINBIND With WinBIND support # Необходимо для интеграции
# с Active Directory
ответ: [X] ACL_SUPPORT With ACL support # Поддержка ACL
[X] FAM_SUPPORT With File Alteration Monitor
kinit: NOTICE: ticket renewable lifetime is 1 week [X] SYSLOG With Syslog support # Поддержка Syslog
[X] QUOTAS With Disk quota support # Поддержка квот
Если введен неверный пароль, система выдаст сооб- [X] UTMP With UTMP accounting support
[X] MSDFS With MSDFS support # Поддержка Microsoft
щение: # Distributed File Systems
[X] PAM_SMBPASS With PAM authentication vs passdb backends
kinit: krb5_get_init_creds: Preauthentication failed [ ] CLUSTER With experimental cluster support
[ ] EXP_MODULES With experimental modules
Если возникли какие-либо дополнительные пробле- [X] POPT With system-wide POPT library
[ ] MAX_DEBUG With maximum debuging
мы, нужно более тщательно проверить конфигурацион-
ный файл /etc/krb5.conf. С приведенными здесь настрой-
ками у меня в сети данная схема работает. Если возник- После некоторого этапа компиляции появится окно с вы-
ли дополнительные трудности, рекомендую книгу «Active бором опций для сборки CUPS. Опять же с тем же расче-
Directory для Windows Server 2003. Справочник админис- том «на будущее» я отметил все опции.
тратора», авторы Стен Реймер и Майк Малкер, СП ЭКОМ. После сборки необходимо отредактировать файл
Москва, 2004 г. /etc/rc.conf на предмет запуска необходимых «демонов» –
Проверим состояние соединения; резидентных программ.
Открываем файл /etc/rc.conf:
fs# klist
Credentials cache: FILE:/tmp/krb5cc_0
fs# vi /etc/rc.conf
Principal: berezhnoy_a@MYDOMAIN.RU

Issued Expires Principal И вносим туда необходимые строки:


Jan 11 17:03:04 Jan 12 03:03:04 krbtgt/MYDOMAIN.RU@MYDOMAIN.RU
cupsd_enable="YES" # Unix Pint System
inetd_enable="YES" # Super Daemon for call some services
Все. Поддержка Kerberos включена. nmbd_enable="YES" # SMB client for Unix (need for WINS)
smbd_enable="YES" # SMB server for Unix
winbindd_enable="YES" # WinBIND for Windows autorization
Настройка файла переключения служб
/etc/nsswitch.conf После чего перезагружаемся и проверяем запущен-
Я не буду подробно описывать для чего нужен файл ные сервисы:
nsswitch.conf и какие опции он содержит. Обо всем этом
подробнейшим образом можно узнать посредством fs# ps aux | grep inetd
man nsswitch.conf. Из файла /etc/nsswitch.conf удаляем все, root 533 0.0 0.1 1428 952 ?? Is Fri04PM 0:00.06
оставим только следующие строки: /usr/sbin/inetd -wW -C 60

fs# ps aux | grep cupsd


passwd: files winbind
group: files winbind root 418 0.0 0.2 4184 2168 ?? Is Fri04PM 0:04.75
hosts: files dns /usr/local/sbin/cupsd

fs# ps aux | grep nmbd


Теперь, когда выполнены все необходимые подготови-
тельные этапы, можно приступать к установке и настрой- root 437 0.0 0.2 5544 2128 ?? Ss Fri04PM 0:30.16
/usr/local/sbin/nmbd -D -s /usr/local/etc/smb.conf
ке Samba-сервера.
fs# ps aux | grep smbd
Установка Samba root 441 0.0 0.4 9588 4120 ?? Is Fri04PM 0:01.19
И теперь нам осталось последнее и самое важное: уста- /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
новить пакет программ Samba (вместе с системой печа- fs# ps aux | grep winbindd
ти CUPS) и настроить его. Так как необходима интеграция
root 446 0.0 0.3 7036 2788 ?? Ss Fri04PM 0:11.49
с Active Directory, мы используем Samba версии 3x (в на- /usr/local/sbin/winbindd -s /usr/local/etc/smb.conf
шем случае 3.0.23d).
Устанавливаем Samba из портов:
Настройка системы печати CUPS
fs# cd /usr/ports/net/samba3 Весь этап настройки CUPS сводится к редактированию фай-
fs# make install clean
ла /usr/local/etc/cupsd.conf:
Появится окно с предложением выбрать нужные опции,
которые будет поддерживать наш Samba-сервер. fs# vi /usr/local/etc/cupsd.conf
Я отметил следующие опции (некоторые модули, приве-
денные без комментариев, включены с расчетом «на буду- Привожу пример своего файла cupsd.conf. Красным цве-
щее», чтобы не пересобирать каждый раз Samba): том выделены необходимые изменения:

16
администрирование
# <Limit Cancel-Job CUPS-Authenticate-Job>
# "$Id: cupsd.conf.in 5454 2006-04-23 21:46:38Z mike $" Require user @OWNER @SYSTEM
# Order deny,allow
# Sample configuration file for the Common UNIX Printing </Limit>
# System (CUPS) scheduler. See "man cupsd.conf" for
# a complete description of this file. <Limit All>
# Order deny,allow
</Limit>
# Log general information in error_log - change "info" </Policy>
# to "debug" for troubleshooting...
LogLevel info #
# End of "$Id: cupsd.conf.in 5454 2006-04-23 21:46:38Z
# Administrator user group... # mike $".
SystemGroup wheel #

# Only listen for connections from the local machine. Коротко прокомментируем:
Listen localhost:631
Listen 192.168.1.3:631 Строка:
Listen /var/run/cups.sock
Listen 192.168.1.3:631
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow @LOCAL указывает, на каком интерфейсе и порту сервер CUPS бу-
дет ожидать соединения с интернет-браузером для настрой-
# Default authentication type, when authentication
# is required... ки параметров.
DefaultAuthType Basic Строки:
# Restrict access to the server...
<Location /> Order deny,allow
Order deny,allow Deny From All
Deny From All Allow localhost
Allow localhost Allow 192.168.1.*
Allow 192.168.1.*
</Location>
разрешают доступ к серверу для настройки только с внут-
# Restrict access to the admin pages...
<Location /admin> ренней подсети 192.168.1.*.
AuthType Basic Строка:
AuthClass System
Encryption Required
Order deny,allow Encryption Required
Deny From All
Allow localhost
Allow 192.168.1.* указывает, что для доступа к веб-интерфейсу управле-
</Location>
ния CUPS будет использоваться шифрованный протокол
# Restrict access to configuration files... https.
<Location /admin/conf>
AuthType Basic Перезапускаем CUPS:
Require user @SYSTEM
Order deny,allow fs# /usr/local/etc/rc.d/cupsd restart
Deny From All
Allow localhost
Allow 192.168.1.*
</Location> Для того чтобы CUPS стартовал автоматически
при каждом запуске системы, мы уже добавили строку
# Set the default printer/job policies...
<Policy default> «inetd_enable=”YES”» в файл /etc/rc.conf.
# Job-related operations must be done by the owner or Далее посредством интернет-браузера подключаемся
# an adminstrator...
<Limit Send-Document Send-URI Hold-Job Release-Job Restart- к адресу: https://192.168.1.3:631. Система предложит при-
Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription нять сертификат. Соглашаемся.
Renew-Subscription Cancel-Subscription
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend- В разделе «Администрирование» сервер будет запра-
Current-Job Resume-Job CUPS-Move-Job> шивать пароль. Вводим логин root и соответствующий па-
Require user @OWNER @SYSTEM
Order deny,allow роль. Все, можно подключать и настраивать принтеры
</Limit> (см. рис. 1, 2).
# All administration operations require an adminstrator Возможные проблемы и пути их разрешения:
# to authenticate... 1. На файерволе (если вы все же решите использовать
<Limit Pause-Printer Resume-Printer Set-Printer-Attributes
Enable-Printer Disable-Printer Pause-Printer-After-Current-Job файервол на этом серврере и/или на рабочей станции)
Hold-New-Jobs Release-Held-New-Job закрыт TCP-порт 631. Соответственно нужно или от-
s Deactivate-Printer Activate-Printer Restart-Printer
Shutdown-Printer Startup-Printer Promote-Job Schedule-Job- крыть этот порт или использовать другой.
After CUPS-Add-Printer CUPS-Delete-Printer CUP 2. Используется прокси-сервер, который не позволяет ин-
S-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-
Jobs CUPS-Set-Default> тернет-браузеру нормально работать c веб-интерфей-
AuthType Basic сом CUPS. Нужно или отключать прокси или указать
Require user @SYSTEM
Order deny,allow в настройках интернет-браузера – не использовать прок-
</Limit> си-сервер для соединения с данным сервером.
# Only the owner or an administrator can cancel 3. Не запущен «демон» cupsd. Проверить это можно ко-
# or authenticate a job... мандой:

№2, февраль 2007 17


администрирование
Но поскольку мы решили идти по пу-
ти делегирования полномочий, то все на-
стройки будем выполнять через веб-кон-
соль настройки Samba – SWAT. Допол-
нительный бонус, который мы получа-
ем в этом случае, – наличие прекрасной
системы помощи при конфигурировании
Samba-сервера.
Программа SWAT вызывается посредс-
твом супердемона inetd. Мы уже добави-
ли строку «inetd_enable=”YES”» в файл
/etc/rc.conf для его автоматического за-
пуска.
Поэтому всего лишь остается открыть
для редактирования конфигурационный
файл /etc/inetd.conf:
Рисунок 1. Так выглядит раздел «Администрирование» в веб-консоли
для настройки сервера CUPS
fs# vi /etc/inetd.conf

и раскомментировать в нем следующую


строку:

swat stream tcp nowait/400 ↵


root /usr/local/sbin/swat ↵
swat

после чего перезапустить «демон» inetd:

fs# killall -1 inetd

Проверяем доступность веб-консоли


по 901 порту:

fs# sockstat | grep 901

Рисунок 2. Консоль управления подключенным принтером root inetd 533 5 tcp4 *:901 *:*

fs# ps aux | grep cupsd После чего вводим в строке интернет-браузера адрес
http://192.168.1.3:901, в ответ на запрос пароля вводим ло-
В ответ вы увидите сообщение: гин и пароль root. Все, мы подключились к серверу Samba
через веб-консоль программы SWAT.
root 418 0.0 0.3 4120 2616 ?? Ss Fri01AM 0:06.13
/usr/local/sbin/cupsd
Нас интересуют в первую очередь вкладки «GLOBALS»
и «WIZARD». Управляя параметрами, приведенными в них,
Если «демон» не запущен, сообщение выведено не бу- необходимо создать соответствующий конфигурацион-
дет. Запустить cupsd можно следующим образом: ный файл. Изменения сохраняются при нажатии кноп-
ки «Commit». Проконтролировать его содержание можно
fs# /usr/local/etc/rc.d/cupsd start во вкладке «VIEW» (см. рис. 3, 4, 5).
Приведу пример основной части моего конфигураци-
после чего нужно проверить наличие строчки «cupsd_enable= онного файла:
”YES”» в файле /etc/rc.conf.
# Samba config file created using SWAT
# from 192.168.1.32 (192.168.1.32)
Настройка файлового сервера # Date: 2007/01/12 15:19:15
Итак, наступил решающий момент. Мы настраиваем наш
[global]
конфигурационный файл Samba – smb.conf. dos charset = cp866
«Классический» метод настройки данного сервиса за- unix charset = koi8-r
display charset = cp866
ключается в копировании файла /usr/local/etc/smb.conf. workgroup = ARS
sample в /usr/local/etc/smb.conf с последующим редактиро- realm = MYDOMAIN.RU
server string = Samba Server
ванием smb.conf в текстовом редакторе: security = DOMAIN
auth methods = winbind
fs# cp usr/local/etc/smb.conf.sample ↵ map to guest = Bad User
usr/local/etc/smb.conf client NTLMv2 auth = Yes
fs# vi usr/local/etc/smb.conf client lanman auth = No

18
администрирование
client plaintext auth = No
log file = /var/log/samba/log.%m
max log size = 50
client signing = Yes
preferred master = No
local master = No
domain master = No
dns proxy = No
wins server = 192.168.1.1
ldap ssl = no
usershare allow guests = Yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = Yes
printer admin = root
acl group control = Yes
hosts allow = 192.168.1., 127.
map acl inherit = Yes
case sensitive = No

Процесс создания конфигурационного файла при по-


мощи SWAT несколько необычен, но несложен.
В случае возникновения проблем с подключением
к SWAT, как и в случае с CUPS, нужно проверить доступ-
ность сервера по соответствующему порту (port 901), воз-
можно, настроить браузер, чтобы тот не использовал прок-
си для адреса файл-сервера, проверить запуск суперде-
мона inetd.
После создания нужной конфигурации переходим на
вкладку «STATUS» и при помощи кнопки «Restart All» пе-
Рисунок 3. Так выглядит вкладка «GLOBALS» для задания
резапускаем «демоны», входящие в пакет Samba 3x (см. общих параметров
рис. 5).
Включаем наш сервер в домен:

fs# net ads join -U ↵


_Domain_Administrator_%_password_of_domain_admin_

Joined 'FS' to realm 'MYDOMAIN.RU'

Проверим правильность работы WinBIND:

fs# wbinfo -t

Система должна ответить:


checking the trust secret via RPC calls succeeded

Если мы получили данное сообщение, это означает,


что учетная запись компьютера в Active Directory созда-
на успешно.
Просмотрим список пользователей и компьютеров
Active Directory при помощи команды:

fs# wbinfo -u

и список групп командой:

fs# wbinfo -g

Рисунок 4. Так выглядит вкладка «SHARES», служащая


Последнее, что мы должны посмотреть, – это аутенти- для конфигурации общих папок
фикацию в домене:
можно быть уверенным – аутентификация в Active Directory
fs# wbinfo -a _имя_юзера_%_пароль_юзера_ выполнена успешно.

При ответе: Создание общих ресурсов


plaintext password authentification succeeded Поскольку сервер находится внутри периметра локальной
challenge/response password authentification succeeded офисной сети, куда закрыт доступ всем, кроме пользова-

№2, февраль 2007 19


администрирование
Используя вкладки «SHARES» и «PRINTERS» управ-
ляющей веб-консоли SWAT, добавляем к своему конфигу-
рационному файлу следующие опции:

[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No

[vol0]
comment = vol0
path = /vol0
read only = No
guest ok = Yes
hosts allow =
browseable = No

[vol1]
path = /vol1
read only = No
guest ok = Yes
hosts allow =
browseable = No

[vol2]
path = /vol2
read only = No
guest ok = Yes
hosts allow =
available = No

[hp_LaserJet_1320_series_192.168.1.15]
comment = hp LaserJet 1320 series
Рисунок 5. Вкладка «STATUS», где нужно перезапустить path = /var/spool/samba
«демоны» пакета Samba read only = No
guest ok = Yes
printable = Yes
printer name = hp_LaserJet_1320_series_192.168.1.15
oplocks = No
share modes = No

И снова перезапускаем «демоны» из вкладки «STATUS».


Где vol0, vol1, vol2 – необходимые общие ресурсы,
а hp_LaserJet_1320_series_192.168.1.15 – общий принтер,
созданный для примера.
Все, теперь можно вводить в адресной строке Провод-
ника Windows необходимое значение, скажем, \\fs\vol0\, со-
здавать каталоги, назначать права и подключать их как се-
тевые диски (см. рис. 6).

Заключение
Идея использования операционных систем семейства UNIX
в сети Microsoft Windows, пусть даже на вспомогательных
Рисунок 6. Создаем каталоги и назначаем права обычными
средствами Windows ролях, всегда вызывала некоторое недоверие скептиков.
Однако простота реализации и, главное, возможность де-
телей, находящихся внутри офиса, я решил организовать легирования полномочий, описанные в данной статье, спо-
общие ресурсы следующим образом: создать общие папки собны пошатнуть устоявшееся мнение о трудности совмес-
\\fs\vol0, \\fs\vol1, \\fs\vol2, сделать их скрытыми, разрешив тного использования UNIX- и Windows-платформ. Наличие
при этом гостевой доступ. Внутри этих папок создать под- таких удобных инструментов управления, как веб-консоли
каталоги, а уже на них средствами Windows установить ог- CUPS и SWAT, ACL и возможность управлять правами досту-
раниченные права. А пользователям подключать сетевые па из обычного Проводника Windows делают реальным ад-
диски командой net use, например: министрирование сервера, даже не имея серьезного опыта
работы с UNIX-подобными операционными системами.
c:\> net use h: \\fs\vol0\_имя_каталога_
1. «Using Samba» By Jay Ts, Robert Eckstein, David Collier-
Что же касается общих принтеров, то с ними вообще Brown 2nd Edition, February 2003 O’Reilly & Associates, ISBN:
не должно возникнуть проблем при подключении коман- 0‑596‑00256‑4 – http://us3.samba.org/samba/docs/using_samba/
дой типа: toc.html.
2. «SAMBA с авторизацией в AD и поддержкой NT ACL» –
c:\> net use lpt2: \\fs\_printer_name_ http://www.lissyara.su.

20
Утилита find полезные советы

Не стесняйтесь искать find ./ -name "*.py" -exec cat {} \;


Поиск файлов – частая операция, если только вы не об- А так можно вывести на экран содержимое всех скрип-
ладаете феноменальной памятью или не поддерживаете тов на Python (если точнее, то файлов, имеющих расшире-
все вверенные вам файлы в строгом порядке. Да и вряд ние .py). Обратите внимание на непонятную конструкцию
ли память вам поможет, если нужно будет найти систем- «{}» – в процессе выполнения она будет заменена резуль-
ный файл, фигурирующий в сообщении об ошибке какой- татом поиска, т.е. cat получит в качестве параметров спи-
нибудь службы. сок соответствующих файлов. Точка с запятой в конце то-
Эта небольшая подборка советов посвящена утилите же обязательна – это указание для find, что опция exec за-
find – наиболее эффективному (но почему-то пугающему кончилась. Чтобы «;» не интерпретировалась оболочкой,
новичков) средству поиска и «массовой обработки» фай- не забывайте его экранировать.
лов. Начну с нескольких простых примеров.
find ./ -name "milter-spa*"
Не забывайте о времени
Эта команда выведет список файлов, имена которых При необходимости всегда можно воспользоваться богатым
соответствуют указанному шаблону, размещённых начи- набором опций для поиска файлов на основании их времен-
ная с текущего каталога и вглубь до победного конца. Об- ных атрибутов (времени модификации, доступа и т. д.).
ратите внимание на несколько нестандартный порядок па-
find ./ -atime +90d -size +20 -exec tar cjf old.tbz2 {} \;
раметров вызова – сначала указывается начальный ката-
лог поиска, а затем – опции. Этой страшной конструкцией мы упакуем в архив все
Если вы запустите эту команду от имени непривилеги- файлы больше 10 килобайт (20 блоков по 512 байт; в GNU-
рованного пользователя в системном каталоге, то навер- версии утилиты можно указывать размер и непосредствен-
няка получите массу сообщений типа: но в кило/мега/гигабайтах), к которым никто не обращал-
ся более трёх месяцев.
find: ./backup/pgsql: Permission denied
find . -type f -newerac Qwert
Избавиться от них поможет следующий приём:
Будет выведен список регулярных файлов, обращение
find ./ -name "milter-spa*" 2>/dev/null
к которым выполнялось позже того, как был модифициро-
То есть сообщения об ошибках (2 – это дескриптор потока ван файл Qwert (подробности по -newerXY см. на страни-
STDERR) мы просто выкидываем, оставляя лишь нормаль- це справки). Одним из применений этого может быть по-
ный вывод STDOUT. иск файлов, которые используются некоторой программой –
создаём (скажем, по команде touch) файл-метку, запуска-
find /home/serg/samag -mindepth 2 -maxdepth 2
ем программу и смотрим, к каким файлам было обраще-
А это будет список всех файлов, находящихся в указанном ние после создания метки.
каталоге непосредственно в его подкаталогах первого уров-
ня. То есть будут найдены файлы samag/jail/jail-wu и samag/
python/test-map.py, но не samag/meta.tgz (т.к. не в подката- Ищите и найдёте
логе) и не samag/sendmailx/bin/smx (т.к. в подкаталоге вто- Критерии поиска могут быть самыми разнообразными –
рого уровня вложенности). Зачем это может понадобиться по типу файла (каталог, символическая ссылка, регу-
практически – затрудняюсь сказать, но, как видите, можно лярный файл и т. д.), по владельцу и группе (опции -user
делать и такое. и ‑group), по выставленным на файле флагам и правам до-
ступа (‑flags и -perm соответственно). Для поиска без учё-
та регистра символов используйте -iname, в более слож-
Приводите в исполнение немедленно ных случаях к вашим услугам опция -regex. Можно даже
Find – это не столько средство поиска, сколько инс- учитывать тип файловой системы (например, при выпол-
трумент для обхода файловой иерархии. Вывод на эк- нении какого-то действия не принимать во внимание фай-
ран имён найденных файлов – лишь частный случай лы, доступные через NFS).
(это действие можно указать и явно с помощью опции - Утилита find обладает развитым языком составления
print). В целом же вы можете также удалять файлы, со- выражений, когда различные критерии поиска можно груп-
ответствующие критериям поиска или даже применять пировать с использованием логических операций (разбор
к ним любую произвольную команду. В этом и заключа- оставлю вам в качестве упражнения):
ется мощь утилиты find.
find ./ -iname 'qwe*' -and -size +20 -or -name 'Qwert'
find test -nouser -delete
Показанным выше возможности find не исчерпываются –
Этой командой мы одним махом удалим все файлы в ка- это всего лишь несколько примеров из возможных. Не поле-
талоге test, не имеющие владельца (т.е. UID которых не фи- нитесь прочитать справку (man find), особенно обращая вни-
гурируют в базе учётных записей). Понятно, что таким об- мания на приведённые там примеры. И жить в консоли сразу
разом можно удалить и всё, найденное по критерию -name станет проще, жить станет веселей.
или любому другому. Будьте осторожны! Сергей Супрунов

№2, февраль 2007 21


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

Подключаем несколько локальных сетей


с пересекающейся адресацией к одному
компьютеру

Андрей Кишкин
В вашу квартиру или офис проведено несколько локальных сетей, но их одновременному
подключению к компьютеру мешают пересекающиеся адресные пространства. Сети можно
«подружить», если вы используете ОС Linux.

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

Л
окальные пользовательские сети стихийно появляют- Исходные данные для подключений
ся и исчезают повсюду, они могут охватывать как це- Интерфейс Адрес Маска Шлюз DNS-сервер
лые городские районы, так и соединять лишь пару
Сеть 1 Eth0 192.168.0.10 255.255.255.0 192.168.0.1 192.168.0.2
компьютеров в квартире.
Ситуация, когда компьютер подключен одновремен- Сеть 2 Eth1 192.168.0.10 255.255.255.0 192.168.0.1 192.168.0.2
но к нескольким сетям, нередка. Но часто одновременной
работе во всех этих сетях препятствует объективная при-
чина – пересекающаяся, а чаще всего и вовсе одинаковая
адресация. Что же делать?
192.168.0.0/24 192.168.0.0/24
Одни эту проблему решают физическим подключе-
нием только одной из «проблемных» сетей к компьютеру
и «перетыкая» кабели по мере необходимости. 192.168.0.10/24
Другие устанавливают для каждой сети отдельную пла- Схема соединения
ту в системный блок и «переключают» сети на уровне опе-
рационной системы, активизируя нужный сетевой интер- зом можно «обмануть» систему маршрутизации, заставив
фейс и выключая все ненужные. ее «плясать под нашу дудку».
Третьи используют для управления сетевым «зоопар- О том, какими критериями нужно пользоваться при
ком» дополнительное оборудование, благо простенький выборе сети, адреса которой мы будем подменять, чи-
маршрутизатор стоит сейчас совсем недорого, кроме то- тайте в конце статьи, пока же для простоты выберем
го, в его роли можно использовать старый никому не нуж- в качестве «подопытной» сеть, подключенную к интер-
ный компьютер. фейсу Eth1.
Последний подход универсален, но при всех своих плю- Задачу конфигурирования системы можно разбить
сах требует, во-первых, дополнительное «железо», а во вто- на три, более мелкие:
рых – умения это «железо» настраивать. 1. Идентификация и инициализация входящего трафи-
Я расскажу о том, как к своему компьютеру с операци- ка.
онной системой Linux подключить несколько локальных 2. Инициализация и маршрутизация ответного трафи-
сетей с произвольной адресацией, и о том, как работать ка.
со всеми подключенными сетями одновременно, не испы- 3. Инициализация и маршрутизация собственного тра-
тывая при этом почти никаких проблем. фика системы.
Для начала рекомендую ознакомиться с материала-
ми [1, 2]. Под идентификацией трафика подразумевается опре-
Эти материалы можно найти и на русском языке, но най- деление сети источника, а под инициализацией – прида-
денные мной переводы несколько устарели. ние идентифицированным пакетам неких специфических
Требования к системе: черт, разговор о которых пойдет дальше.
n Ядро Linux 2.6 (я использовал 2.6.17.9), собранное с под-
держкой следующих опций netfilter: Идентификация и инициализация
входящего трафика
CONFIG_NETFILTER Инициализацию будем производить в зависимости от
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_IPTABLES интерфейса, с которого трафик пришел. Неуникальный
CONFIG_IP_NF_MATCH_MARK адрес хоста назначения (нашего компьютера) (в общем
CONFIG_IP_NF_NAT
случае не уникальна адресация сетевых сегментов, под-
В большинстве ядер из дистрибутивов нужные опции ключенных к компьютеру, но так как из каждого сегмен-
уже включены, но для их работы требуется подгрузить та нашей системе принадлежит только один адрес, будем
нужные модули ядра. именно его называть неуникальным, хотя это может быть
n IPTables 1.2.9 и выше (я использовал 1.3.3). и не так, т.е. адреса разные, но принадлежат одному сете-
вому пространству) будем заменять уникальным. Это по-
При тестировании работы схемы использовался дист- может нам решить и еще одну задачу – задачу маршрути-
рибутив Slackware Linux 10.2, но вы можете работать с дру- зации обратного трафика, но об этом позже.
гими дистрибутивами, так как схема универсальна. Мы выбрали в качестве «подопытной» сеть, подключен-
Команды, приведенные в статье, можно просто наби- ную к интерфейсу eth1, поэтому назначаем дополнительный
рать с консоли, но лучше оформить их в качестве команд- уникальный адрес на этом интерфейсе:
ного файла, запускаемого при старте системы, я для этих
целей использую /etc/rc.local. ip address add 192.168.1.10/32 dev eth1
Итак, мы решили подключить компьютер к двум локаль-
ным сетям с пересекающейся адресацией. Исходные дан- Адрес можно выбирать любой удобный, особой роли
ные для подключений смотрите в таблице. он не играет, важно, чтобы он не входил в сети, подклю-
Схематично это они представлены на рисунке. ченные к другим сетевым интерфейсам.
Алгоритм решения поставленной задачи состоит в за- Обратите внимание на маску сети, в общем случае она
мене неуникальных адресов на уникальные, таким обра- может быть любой, но так как адрес не участвует в реаль-

№2, февраль 2007 23


администрирование
ном сетевом взаимодействии, то лучше ее сделать как в на- В реальности такую ситуацию представить сложно, поэ-
шем примере. тому займемся трафиком, который генерирует сам хост.
Далее заменяем адрес хоста назначения в пакетах, при- Логика работы такова: при обращении к хосту из сети,
ходящих с интерфейса eth1: подключенной к интерфейсу eth1, заменяем адрес сети хос-
та с 192.168.0.0 на 192.168.1.0, например, пишем не:
iptables –t NAT –A PREROUTING –i eth1 –s 192.168.0.0/24 ↵
–j DNAT -–to-destination 192.168.1.10
ping 192.168.0.5

Инициализация и маршрутизация а
ответного трафика
Маршрутизацию обратного трафика будем производить ping 192.168.1.5
«от источника», т.е. в зависимости от адреса отправителя,
т.к. он уникальный. При обращении к сети, подключенной к интерфейсу eth0
Создадим в системе дополнительную таблицу марш- все остается по-старому.
рутизации для каждой сети. Из консоли дайте следующие Существует один не очень приятный момент: невозмож-
команды: ность работы с DNS-сервером сети, подключенной к интер-
фейсу eth1 (распространяется только на подменяемые на-
echo /etc/iproute2/rt_tables >> 10 TO_ETH0 ми адреса, т.е. все нелокальные для этой сети имена (на-
echo /etc/iproute2/rt_tables >> 20 TO_ETH1
пример, интернет-имена) будут разрешаться корректно).
или добавьте в файл /etc/iproute2/rt_tables строки соответс- То есть посылать DNS-запросы вы, конечно, можете, но от-
твующие «10 TO_ETH0», «20 TO_ETH1» вручную. В скрипт веты сервера теперь будут «некорректными», эта проблема
эти команды добавлять не нужно, достаточно запустить их решается занесением нужных, но уже откорректированных
один раз. записей в файл /etc/hosts. То есть если в сети, подключен-
Добавляем маршрут по умолчанию в эти таблицы: ной к интерфейсу eth1, имеется хост с именем server.local
и адресом 192.168.0.1, то файл /etc/hosts следует прописать
ip route add default dev eth1 table TO_ETH1 server.local 192.168.1.1.
ip route add default dev eth0 table TO_ETH0
Для реализации схемы, описанной выше, нам требует-
А теперь создаем правила, в соответствии с которыми ся только заменить адрес сети на выходе:
все пакеты, у которых в поле «От» указан адрес 192.168.1.10,
нужно маршрутизировать в соответствии с таблицей iptables –t nat –A POSTROUTING –d 192.168.1.0/24 ↵
–j NETMAP –to 192.168.0.0
TO_ETH1, т.е. передавать через интерфейс eth1, а все па-
кеты у которых в поле «От» указан адрес 192.168.0.10, пе- И все. Пакеты будут корректно отмаршрутизированы
редавать через интерфейс eth0. при помощи правил, созданных нами выше.
Маркируем пакеты: Теперь несколько слов о том, как следует подходить
к выбору сети, в которой будем «подменять» адреса.
iptables –t mangle –A OUTPUT –s 192.168.0.10/24 ↵ Во-первых, подменять адреса нужно в более «простой»
–j MARK -–set-mark 0
iptables –t mangle –A OUTPUT –s 192.168.1.10/24 ↵ сети, т.е. в той, где меньше сервисов (выделенные серве-
–j MARK -–set-mark 1 ры и т. д.).
Во-вторых, не стоит выбирать сеть, адреса в которой
Маршрутизируем в зависимости от метки: выдаются по DHCP. Для гарантированной работы конфи-
гурации следует в стартовом скрипте каждый раз выяснять
ip rule add fwmark 1 table TO_ETH1 свой адрес, например, через «ip link sh».
ip rule add fwmark 0 table TO_ETH0
Будьте предельно внимательны при наборе правил,
Теперь осталось заменить адрес, и пакет может отправ- т.к. даже малейшие ошибки могут привести к серьезным
ляться в путешествие по сети: проблемам, поэтому перед подключением к реальным се-
тям работоспособность конфигурации настоятельно реко-
iptables –t nat –A OUTPUT –s 192.168.1.10 –j DNAT ↵ мендую проверить на «испытательном стенде»: вашем ПК
-–to 192.168.0.10
и нескольких подключенных к нему.
Теперь наш компьютер может отвечать на запросы (на-
пример, DNS или ICMP) из обеих подключенных сетей. Мож- 1. Advanced Linux Routing – http://lartc.org/howto.
но попробовать его «попинговать» и насладиться получен- 2. IPTables 1.2.2 Tutorial – http://iptables-tutorial.frozentux.net/
ным эффектом. iptables-tutorial.html.

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

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

Настраиваем DNS и DHCP с хранением


информации в LDAP

Василий Озеров
Система DNS очень важна для работы Интернета в целом, поэтому стоит посвятить
достаточное количество времени на изучение принципов работы системы и на настройку
сервера имен. Сегодня я расскажу о настройке bind для хранения информации о зонах в базе
данных LDAP.

О
чень часто в локальных сетях, всего хранить прямые и обратные зо- n I P - а д р е с D N S - с е р в е р а :
будь то большие сети крупных ны DNS-сервера в LDAP. Разумнее, по- 192.168.1.254 (hostname: dns).
организаций или же небольшие тому что тогда получается централизо- n I P - а д р е с L D A P - с е р в е р а :
«домашние» сети, устанавливается ванное хранилище данных, с которым 192.168.1.250 (hostname: spider).
и настраивается локальный DNS-сер- легко можно работать из различных Итак, приступаем к настройке:
вер. Ставят его для удобства работы ОС, да и программ для работы с LDAP- n Система: FreeBSD-6.1-p6 (и на
или для кэширования запросов к DNS- сервером очень много, как для UNIX, LDAP- и на DNS-сервере).
серверам провайдера. Для UNIX-сис- так и для Windows. Еще один довод n К о р е н ь L D A P - с е р в е р а :
тем стандартом среди DNS-серверов для хранения информации в LDAP – dc=l1523,dc=ru.
является bind. По умолчанию bind хра- динамическое обновление зон. DHCP
нит все записи о зонах в простых тек- может не посылать запросы DNS-сер- Если у вас не настроен LDAP-сер-
стовых файлах, с которыми не всег- веру на обновление зоны, тем самым вер, то можете почитать о его настрой-
да удобно работать. Например, если нагружая DNS-сервер, а может сам об- ке на сайте: http://www.fr33man.ru/
у вас есть несколько DNS-серверов новить запись на LDAP-сервере. Наде- index.php?newsid=5б.
на разных машинах, то править фай- юсь, вы задумались о LDAP как о хра-
лы зон через шелл не очень удобно, так нилище данных DNS-сервера. Теперь Настройка LDAP
как придется выполнить большое чис- приступим к практической реализации. С н а ч а л а н е о б х о д и м о п о д к л ю -
ло однообразных действий, начиная Сразу хочу описать сеть, для которой мы чить две схемы к нашему серверу:
от ввода логина, заканчивая перезаг- будем настраивать DNS-сервер: dnsZone.schema и dhcp.schema. Схе-
рузкой DNS‑сервера. Если у вас в се- n Адрес сети: 192.168.1.0/24. ма dnsZone поставляется по умолча-
ти настроен LDAP-сервер, то разумнее n Домен: teachers. нию с сервером slapd, а вот схема dhcp

26
администрирование
появляется после установки DHCP-сервера. Забирайте # Добавляем запись вида:
# 254 PTR ns.teachers.
dhcp.schema отсюда: http://fr33man.ru/files/dhcp.schema. dn: relativeDomainName=254,zoneName= ↵
Редактируем slapd.conf, добавляем: 1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru
objectClass: top
objectClass: dNSZone
include /usr/local/etc/openldap/schema/dnszone.schema zoneName: 1.168.192.in-addr.arpa
include /usr/local/etc/openldap/schema/dhcp.schema relativeDomainName: 254
pTRRecord: ns.teachers.
После этого перезапускаем slapd:
# Добавляем запись вида:
# 250 PTR spider.teachers.
spider@/root/> /usr/local/etc/rc.d/slapd.sh restart dn: relativeDomainName=250,zoneName= ↵
1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru
Stopping slapd. objectClass: top
Starting slapd. objectClass: dNSZone
zoneName: 1.168.192.in-addr.arpa
relativeDomainName: 250
Все, теперь можно добавить необходимые записи pTRRecord: spider.teachers.
в LDAP. Я предоставляю ldif-файл с комментариями:
Может показаться, что добавлять записи в файлы зон
Dns.ldif намного удобнее, чем в LDAP-сервер, но кто вас заставля-
# Добавляем контейнер, где будут храниться все зоны ет составлять ldif-файлы и добавлять их через shell? Мо-
# нашего DNS-севера жете использовать программы для работы с LDAP-серве-
dn: ou=dns,dc=l1523,dc=ru
ром, например ldapadmin: http://ldapadmin.sourceforge.net.
objectClass: top Я давно пользуюсь этой программой и ни разу не испыты-
objectClass: organizationalUnit
ou: dns вал неудобств.
description: domain zones Вернемся к добавлению записей в LDAP. Составленный
# Добавляем прямую зону teachers
dn: zoneName=teachers,ou=dns,dc=l1523,dc=ru нами ldif-файл нужно добавить в директории LDAP:
objectClass: top
objectClass: dNSZone spider@/root/> ldapadd -x -D "cn=root,dc=l1523,dc=ru" ↵
zoneName: teachers -W -f dns.ldif
relativeDomainName: teachers

# SOA-запись для зоны teachers Enter password:


dn: relativeDomainName=@,zoneName=teachers,ou=dns, ↵
dc=l1523,dc=ru
objectClass: top Первоначальная настройка LDAP-сервера закончена.
objectClass: dNSZone
zoneName: teachers
relativeDomainName: @ Настройка DNS-сервера
nSRecord: ns.teachers. Первым делом необходимо установить bind. По умолча-
sOARecord: ns.teachers. root.ns.teachers. 1 8H 2H 1W 1D
нию bind уже установлен во FreeBSD, но он не поддержи-
# Добавляем запись вида: вает работу с LDAP-сервером, поэтому необходимо уста-
# ns IN A 192.168.1.254
dn: relativeDomainName=ns,zoneName=teachers,ou=dns, ↵ новить другую версию bind, которая поддерживает работу
dc=l1523,dc=ru с LDAP (bind9-sdb-ldap):
objectClass: top
objectClass: dNSZone
zoneName: teachers dns@/root> cd /usr/ports/dns/bind9-sdb-ldap/
relativeDomainName: ns dns@/usr/ports/dns/bind9-sdb-ldap> make install clean
dNSClass: IN
aRecord: 192.168.1.254 Проверим, что установился нужный нам bind.
# Добавляем запись вида:
# spider IN A 192.168.1.250 dns@/> pkg_info | grep bind
dn: relativeDomainName=spider,zoneName=teachers,ou=dns, ↵
dc=l1523,dc=ru bind9-sdb-ldap-9.3.2 The well known Bind9, patched for use of an
objectClass: top LDAP based back
objectClass: dNSZone
zoneName: teachers dns@/> /usr/local/sbin/named -v
relativeDomainName: spider
dNSClass: IN BIND 9.3.2
aRecord: 192.168.1.250
Bind-sdb-ldap установился. Теперь создадим конфигураци-
# Добавляем новую обратную зону 1.168.192.in-addr.arpa
dn: zoneName=1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru онный файл named.conf и подготовим сервис к запуску:
objectClass: top
objectClass: dNSZone Named.conf
zoneName: 1.168.192.in-addr.arpa
relativeDomainName: 1.168.192.in-addr.arpa # Описание списков доступа к bind
acl lan { 192.168.1.0/24; };
# SOA-запись для зоны 1.168.192.in-addr.arpa acl transfers { 127.0.0.1; };
dn: relativeDomainName=@,zoneName= ↵
1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru # Конфигурация rndc-ключа. Сгенерировать ключ можно командой
# rndc-confgen, вывод которой нужно вставить в named.conf
objectClass: top
objectClass: dNSZone key "rndc-key" {
relativeDomainName: @ algorithm hmac-md5;
secret "V0spN5Z3OWgkGG2Bt0SdKQ==";
nSRecord: ns.teachers.
sOARecord: ns.teachers. root.ns.teachers. 1 8H 2H 1W 1D };
zoneName: 1.168.192.in-addr.arpa

№2, февраль 2007 27


администрирование
controls { 275 ?? Ss 0:01,64 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/r
inet 127.0.0.1 port 953 464 ?? Is 0:31,00 /usr/local/sbin/named -u bind -t /var/named
allow { 127.0.0.1; } keys { "rndc-key"; };
}; Bind запустился. Давайте проверим его на работоспо-
# Опции демона named собность. Проверяем работу утилитой rndc:
options {
directory "/etc/namedb"; dns@/root> rndc status
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db"; number of zones: 2
statistics-file "/var/stats/named.stats"; debug level: 0
xfers running: 0
# IP-адреса, на которых named будет слушать запросы xfers deferred: 0
listen-on { 127.0.0.1; 192.168.1.254; } soa queries in progress: 0
# Если named не найдет адрес, запрашиваемый клиентом,
query logging is OFF
# в локальных базах или кэше, то запрос перенаправится
# DNS-серверам провайдера recursive clients: 0/1000
forward only; tcp clients: 0/100
server is up and running
# DNS-сервера провайдеров
forwarders { 192.168.49.100; 172.16.0.3; }; dns@/root> dig @127.0.0.1 teachers. axfr
# Разрешение запросов ; <<>> DiG 9.3.2 <<>> @127.0.0.1 teachers. axfr
; (1 server found)
allow-query { lan; trusted; }; ;; global options: printcmd
allow-recursion { trusted; lan; }; teachers. 178600 IN SOA ns.teachers. root.ns.teachers. 1 28800 7200 604800 86400
}; teachers.
spider.teachers.
178600 IN NS
178600 IN A
ns.teachers.
192.168.1.250
ns.teachers. 178600 IN A 192.168.1.254
# Описание зоны teachers ;; Query time: 26 msec
zone "teachers." { ;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jan 11 22:27:24 2007
# Наш сервер является первичным для этой зоны ;; XFR size: 17 records (messages 1)
type master;
# Где располагается зона. dns@/root> dig @127.0.0.1 1.168.192.in-addr.arpa axfr
# Формат записи: database «ldap протокол:
# //IP_адрес_LDAP_сервер/_путь_к_нужной_зоне_ ttl» ; <<>> DiG 9.3.2 <<>> @127.0.0.1 1.168.192.in-addr.arpa axfr
; (1 server found)
# Указанный ttl будет использован по умолчанию, ;; global options: printcmd
# если не будет указан другой ttl 1.168.192.in-addr.arpa. 178600 IN SOA ns.teachers. root.ns.teachers. 1 28800 7200 604800 86400
database "ldap ldap://192.168.1.250/zoneName=teachers, ↵ 1.168.192.in-addr.arpa. 178600 IN NS ns.teachers.
250.1.168.192.in-addr.arpa. 178600 IN PTR spider.teachers.
ou=dns,dc=l1523,dc=ru 178600"; 254.1.168.192.in-addr.arpa. 178600 IN PTR ns.teachers.
# Права доступа ;; Query time: 7 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
allow-query { lan; trusted; }; ;; WHEN: Thu Jan 11 22:28:28 2007
allow-transfer { transfers;}; ;; XFR size: 12 records (messages 1)
};
Как видите, все работает. Единственное замечание: я за-
# Описание обратной зоны: 1.168.192.in-addr.arpa
zone "1.168.192.IN-ADDR.ARPA." { прашивал полный трансфер зоны с DNS-сервера, в моем
# Наш сервер primary конфигурационном файле выставлены права доступа, ко-
type master;
# Где хранится зона торые разрешают трансфер зон только IP-адресу 127.0.0.1,
database "ldap ldap://192.168.1.250/zoneName= ↵ поэтому не пытайтесь скачать зону с другого компьютера.
1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru 178600";
# Права доступа Все, теперь можно переходить к настройке DHCP-сервера.
allow-query { lan; trusted; };
allow-transfer { transfers; };
}; Настройка DHCP-сервера
Сначала необходимо установить DHCP-сервер:
Все, конфигурационный файл составлен, подготавли-
ваем named к запуску. Разрешаем запуск named: spider@/root> cd /usr/ports/net/isc-dhcp3-server/
spider@/usr/ports/net/isc-dhcp3-server> make install clean

dns@/root/> echo named_enable=\"YES\" >> /etc/rc.conf Сервер установлен. Теперь переходим к его настройке:

Меняем путь к программе DNS-сервера. Это нужно для то- /root/dhcpd.conf


го, чтобы не запустился стандартный bind, который не умеет # Время, на которое выдается IP
работать с LDAP. Стандартный bind лежит в /usr/sbin/named: default-lease-time 14400;
# Время, через которое клиент обязан вернуть IP
max-lease-time 28800;
dns@/root/> echo named_program= ↵ log-facility local7;
\"/usr/local/sbin/named\" >> /etc/rc.conf authoritative;
# Не проводить обновление зон
Теперь выставляем необходимые права на /var/named: ddns-update-style none;
# Описание сети 192.168.1.0/24
subnet 192.168.1.0 netmask 255.255.255.0 {
dns@/root/> chown bind:bind /var/named/etc/namedb/master ↵ range 192.168.1.10 192.168.1.200;
/var/named/etc/namedb/dynamic ignore client-updates;
dns@/root/> chown –R bind:bind /var/named/var/ option domain-name "teachers";
option domain-name-servers 192.168.1.254;
option routers 192.168.1.254;
Теперь можно запускать DNS-сервер: option default-ip-ttl 64;
option default-tcp-ttl 64;
}
dns@/root/> /etc/rc.d/named start
Stating named. Вот такой конфигурационный файл получился. Те-
перь его необходимо перевести в ldif-формат и доба-
dns@/root/> ps ax | grep named вить в LDAP. В поставку isc-dhcp-server входит perl-скрипт

28
администрирование
dhcpd‑conf‑to‑ldap.pl. Давайте откроем его и отредактиру- # Учетная запись, под которой будет происходить подключение
# к LDAP-серверу.
ем параметры в самом начале: ldap-username "cn=root,dc=l1523,dc=ru";
# Пароль учетной записи
# Этот параметр можно не менять, будет использован ldap-password "123456";
# результат, который вернет функция hostdomain() # Корень LDAP-сервера
my $domain = hostdomain(); ldap-base-dn "dc=l1523,dc=ru";
# Корень сервера ldap ldap-method dynamic;
my $basedn = "dc=l1523,dc=ru";
# В этой строке скрипт заменяет все «.», указанные Теперь запускаем DHCP-сервер:
# в $basedn на «,dc=»
$basedn =~ s/\./,dc=/g; spider@/root/> echo dhcpd_enable=\"YES\" >> /etc/rc.conf
# Параметр можно не изменять, будет использован результат spider@/root/> /usr/local/etc/rc.d/isc-dhcpd.sh start
# вызова функции hostname(), где будут храниться
# настройки DHCP
my $server = hostname();
Starting dhcpd.
Internet Systems Consortium DHCP Server V3.0.5rc2
my $dhcpcn = 'dhcp'; # CN of DHCP config tree
my $dhcpdn = "cn=$dhcpcn, $basedn"; # DHCP config tree DN Copyright 2004-2006 Internet Systems Consortium.
my $second = ''; # secondary server DN / hostname All rights reserved.
my $i_conf = ''; # dhcp.conf file to read or stdin For info, please visit http://www.isc.org/sw/dhcp/
my $o_ldif = ''; # output ldif file name or stdout TLS session successfully started to spider.teachers
my @use = (); # extended flags (failover) Wrote 17 leases to leases file.
Listening on BPF/xl0/00:0a:5e:42:b8:01/192.168.1/24
Sending on BPF/xl0/00:0a:5e:42:b8:01/192.168.1/24
Все, теперь можно запускать: Sending on Socket/fallback/fallback-net

spider@/root/> dhcpd-conf-to-ldap.pl < /root/dhcpd.conf Отлично! Сервер запустился. Осталось настроить ди-
Creating LDAP Configuration with the following options: намическое обновление DNS-зон. К сожалению, пакет
Base DN: dc=l1523,dc=ru bind‑sdb‑ldap не умеет сам обновлять записи в LDAP, так же
DHCP DN: cn=dhcp, dc=l1523,dc=ru
Server DN: cn=spider, dc=l1523,dc=ru как и DHCP. Поэтому придется использовать скрипт, напи-
санный Travis Groth. Подробнее об этом можете почитать
dn: cn=spider, dc=l1523,dc=ru
cn: spider
на странице: http://www.venaas.no/ldap/bind‑sdb. Давайте
objectClass: top скачаем и настроим скрипт:
objectClass: dhcpServer
dhcpServiceDN: cn=dhcp, dc=l1523,dc=ru spider@/root/> mkdir dhcp
spider@/root/> cd dhcp
dn: cn=dhcp, dc=l1523,dc=ru spider@/root/dhcp/> fetch http://www.venaas.no/ldap/ ↵
cn: dhcp bind-sdb/dhcp2ldapd-1.1.gz
objectClass: top
objectClass: dhcpService dhcp2ldapd-1.1.gz 100% of 2185 B 1279 Bps
dhcpPrimaryDN: cn=spider, dc=l1523,dc=ru spider@/root/dhcp/> gunzip dhcp2ldapd-1.1.gz
dhcpStatements: default-lease-time 14400 spider@/root/dhcp/> ll
dhcpStatements: max-lease-time 28800 total 10
dhcpStatements: log-facility local7 drwxr-xr-x 2 root wheel 512B 11 янв 23:18 .
dhcpStatements: authoritative drwxr-xr-x 8 root wheel 1,5K 11 янв 23:18 ..
dhcpStatements: ddns-update-style none -rw-r--r-- 1 root wheel 5,3K 3 май 2005 dhcp2ldapd-1.1

dn: cn=192.168.1.0, cn=dhcp, dc=l1523,dc=ru Теперь отредактируем скрипт. В самом начале:


cn: 192.168.1.0
objectClass: top
objectClass: dhcpSubnet Dhcp2ldapd-1.1
objectClass: dhcpOptions
#!/usr/bin/perl
dhcpNetMask: 24
dhcpRange: 192.168.1.10 192.168.1.200 # Файл, где хранится информация о выданных адресах
dhcpStatements: ignore client-updates # DHCP-сервером
dhcpOption: domain-name "teachers" $LEASES = "/var/db/dhcpd/dhcpd.leases";
dhcpOption: domain-name-servers 192.168.1.254
dhcpOption: routers 192.168.1.254 # Домен
dhcpOption: default-ip-ttl 64 $DOMAIN = "teachers";
dhcpOption: default-tcp-ttl 64 # Обратная зона
$REVERSE = "1.168.192.in-addr.arpa";
Done.
# Где в LDAP хранятся зоны прямого и обратного
# преобразования
Скопируем вывод скрипта в файл dhcp.ldif и добавим $FORWARD_BASE = "zoneName=teachers,ou=dns,dc=l1523,dc=ru";
$REVERSE_BASE = "zoneName=1.168.192.in-addr.arpa, ↵
его командой: ou=dns,dc=l1523,dc=ru";

spider@/root/> ldapadd –x –D "cn=root,dc=l1523,dc=ru" ↵ # Пользователь для подключения к LDAP-серверу


–W –f dhcp.ldif $USER = 'cn=root,dc=l1523,dc=ru';
# Пароль пользователя
$PASSWORD = "9vpIj9";
Теперь составим конфигурационный файл DHCP-сервера,
в котором укажем параметры подключения к LDAP-серверу. # Хост, на котором работает LDAP-сервер
$LDAP_HOST = 'localhost'
/usr/local/etc/dhcpd.conf # Время проверки файла в секундах
$UPDATE_TIME = 30;
# IP-адрес или hostname LDAP-сервера
ldap-server "spider.teachers"; # Автопроверка
# Порт, который слушает LDAP $AUTO_VERIFY = 0;
ldap-port 389;

№2, февраль 2007 29


администрирование
Еще необходимо подправить две строчки в скрипте, по- shield@/root> host fr33man
тому что у меня сеть с маской 24, а скрипт добавляет запи- Host fr33man not found: 3(NXDOMAIN)
си для маски 16. Поэтому правим строку 172 и 174, меняем shield@/root> ldapsearch -LLL -x -b 'dc=l1523,dc=ru' -H ldap://spider/ 'relativ
eDomainName=fr33man'
там $fourth.$third на $fourth. Все, после этого можно запус-
кать наш скрипт, но сначала составим скрипт запуска: Адрес не резолвится, в LDAP также нет записей об этом
адресе. Теперь подключим машину к сети и настроим на по-
#!/bin/sh лучение IP-адреса от DHCP-сервера. После этого проверим,
case "$1" in
start) резолвится ли адрес:
if [ -f /var/run/dhcpd2ldap.pid ]
shield@/root> host fr33man
then
echo "Скрипт dhcpd2ldap уже запущен!"
else fr33man.teachers has address 192.168.1.199
daemon -f -p /var/run/dhcpd2ldap.pid ↵
/root/dhcp2ldapd-1.1
echo "Скрипт dhcpd2ldap запущен!" shield@/root> host 192.168.1.199
fi
;; 199.1.168.192.in-addr.arpa domain name pointer fr33man.teachers.
stop)
if [ -f /var/run/dhcpd2ldap.pid ] shield@/root> ldapsearch -LLL -x -b 'dc=l1523,dc=ru' ↵
then -H ldap://spider/ 'relativeDomainName=fr33man'
kill -TERM `cat /var/run/dhcpd2ldap.pid`
rm -f /var/run/dhcpd2ldap.pid dn: relativeDomainName=fr33man,zoneName=teachers,ou=dns,dc=l1523,dc=ru
echo "Скрипт dhcpd2ldap остановлен!" relativeDomainName: fr33man
else objectClass: top
echo "Скрипт dhcpd2ldap не запущен!" objectClass: dNSZone
fi dNSTTL: 7200
;; zoneName: teachers
*) aRecord: 192.168.1.199
echo "Использование: ${0##*/}: { start | stop }" >&2
exit 64 shield@/root> ldapsearch -LLL -x -b 'dc=l1523,dc=ru' ↵
;; -H ldap://spider/ 'relativeDomainName=199'
esac dn: relativeDomainName=199,zoneName=1.168.192.in-addr.arpa,ou=dns,dc=l1523,dc=ru
relativeDomainName: 199
objectClass: top
Такой скрипт кладем в /usr/local/etc/rc.d/ и выставляем objectClass: dNSZone
dNSTTL: 7200
нормальные права: zoneName: 1.168.192.in-addr.arpa
pTRRecord: fr33man.teachers.
spider@/usr/local/etc/rc.d/> chmod 0755 dhcpd2ldap.sh
spider@/usr/local/etc/rc.d/> chown root:wheel dhcpd2ldap.sh
spider@/usr/local/etc/rc.d/> ll dhcpd2ldap.sh Как видите, адрес резолвится, и в LDAP появились за-
-rwxr-xr-x 1 root wheel 586B 19 янв 12:19 dhcpd2ldap.sh
писи о нашем адресе. И под конец проверим pid named:

Теперь пробуем запустить: shield@/root> ps ax| grep named


264 ?? Ss 0:00,50 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/r
spider@/usr/local/etc/rc.d/> ps ax | grep dhcp 448 ?? Is 1:17,41 /usr/local/sbin/named -u bind -t /var/named

483 ?? Is 0:01,56 /usr/local/sbin/dhcpd -cf /usr/local/etc/dhcpd.conf - Pid не изменился, следовательно, DNS-сервер не пере-
54964 p0 R+ 0:00,00 grep dhcp
запускался и изменения «подхватились» автоматически.
spider@/usr/local/etc/rc.d/> ./dhcpd2ldap.sh start
Скрипт dhcpd2ldap запущен! За и против
Мы получили работающую связку, удобную в управлении.
spider@/usr/local/etc/rc.d/> ps ax | grep dhcp
Для того чтобы обновить зоны или конфигурацию DHCP,
483 ?? Is 0:01,56 /usr/local/sbin/dhcpd -cf /usr/local/etc/dhcpd.conf - достаточно изменить записи в LDAP, а для этого можно ис-
54967 ?? Ss 0:00,40 /usr/bin/perl /root/dhcp2ldapd-1.1 (perl5.8.8)
54969 p0 R+ 0:00,00 grep dhcp пользовать программы для работы с LDAP-сервером. Еще
одним плюсом является то, что при изменении информации
Как видите, скрипт запустился успешно. Переходим на LDAP-сервере изменения вступят в силу без перезагруз-
к тестированию нашей связки. ки зоны. Централизованное хранение данных для крупных
компаний выгоднее по нескольким причинам:
Тестирование n Все данные хранятся в одной базе. Если с этой базой
Давайте для начала посмотрим pid DNS-сервера, для того что-то случится, то восстанавливать придется только ее,
чтобы далее можно было проконтролировать, что named а не бегать по всем серверам и восстанавливать по от-
не перезапускался: дельности каждый сервис.
n Управлять базой можно из любой ОС, так как стандарт
shield@/root> ps ax | grep named работы LDAP один.
264 ?? Ss 0:00,50 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/r
448 ?? Ss 1:17,13 /usr/local/sbin/named -u bind -t /var/named
22315 p0 R+ 0:00,00 grep named Из минусов можно отметить, что управление немного
усложняется, но результат того стоит. Использовать цент-
Pid named – 448. Теперь проверим, резолвится ли ад- рализованную базу лучше только в сетях со сложной струк-
рес машины, которую мы вскоре добавим в нашу сеть. Имя турой, а для маленьких сетей централизованное хранение
машины – fr33man: данных не так выгодно.

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

Размещаем пользовательские
бюджеты в LDAP
Часть 2

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

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

В
первой части статьи [1] вы можете найти всё необ- # getent group | grep "^\(video\|dialout\)"
ходимое для настройки сервера OpenLDAP, указа-
dialout:x:16:alekseybb,suser1
ния его в качестве хранилища информации о поль- video:x:33:alekseybb,suser1
зовательских бюджетах и соответствующей инициализа- dialout:*:16:
video:*:33:
ции. Быть может, кто-то из вас даже попробовал предло-
женное в действии и «открыл» свой счет удобств и потерь
от такого усовершенствования. Если же нет, то предлагаю И, увы, эта проблема не поддается простому «лечению».
поверить «на слово» и продолжить рассмотрение вопро- Секрет в том, что исходные тексты pwdutils, куда входит ути-
са так, будто бы система аутентификации и авторизации лита useradd, модифицированы для использования схемы
с LDAP построена в среде openSUSE версии 10.1 или 10.2 rfc2307bis, которая заменила схему nis и по идее должна
(кому что удобнее) в полном соответствии с рекомендаци- обеспечить POSIX-совместимые атрибуты пользователь-
ями из части 1. ских бюджетов. Но вот вместо применяемых в файловых
базах индексов в виде номеров GID/UID, автор модифика-
Использование LDAP ций, все тот же неутомимый Thorsten Kukuk, решил заме-
Попробуем создать пользовательский бюджет так, что- нить их на отличительные имена LDAP (то есть поменять
бы запись о нем была произведена в LDAP. Воспользуем- индексы на LDAP-ссылки), что делает такую схему несов-
ся стандартным системным средством useradd. Для срав- местимой с ранее принятыми алгоритмами работы с учет-
нения создадим обычный бюджет, зарегистрированный ными данными пользователей. Можно, конечно, подож-
в passwd и shadow: дать, пока все участники процесса разработки договорят-
ся и придут к выводу о том, что каждая схема регистра-
# useradd -m -c "shadow user" suser1 ции должна пользоваться собственными атрибутами, под-
# getent passwd | grep suser
держивая определенный уровень совместимости. Но они
suser1:x:1001:100:shadow user:/home/suser1:/bin/bash не договорились ни к выходу openSUSE 10.1, ни к выходу
openSUSE 10.2, и я делаю вывод, что рациональнее пере-
Установим для него некоторый пароль (здесь и далее собрать пакет pwdutils, применяя регрессивную заплатку
пароль совпадает с именем пользователя): следующего содержания:

# passwd suser1 # cat pwdutils-3.1.2-memberUid-member.diff


Changing password for suser1. --- lib/libldap.c.orig 2006-12-13 07:37:45.000000000 +0300
New Password:***** +++ lib/libldap.c 2006-12-13 07:46:09.000000000 +0300
Bad password: too simple @@ -1535,12 +1535,12 @@
Reenter New Password:***** return 1;
Password changed.
rc = ldap_update_group (session, group, binddn, ↵
password, LDAP_MOD_ADD,
# getent shadow | grep suser - "member", dn );
suser1:$2a$10$1qqIvf4KcxLU/1RzxYPIiuKhjnohIlZa68fSHGjwiShgcvheuNFli:13495:0:99999:7:::
+ "memberUid", member );
free (dn);
if ( first )
{
Также проверим, как работает авторизация такого ldap_update_group (session, group, binddn, ↵
бюджета: password, LDAP_MOD_DELETE,
- "member", "" );
+ "memberUid", "" );
> su - suser1 -c "LC_ALL=C id" }
}
Пароль:***** else
uid=1001(suser1) gid=100(users) groups=16(dialout),33(video),100(users) @@ -1569,11 +1569,11 @@
if ( last )
{
А теперь попробуем проделать то же самое, но для бюд- ldap_update_group (session, group, binddn, ↵
password, LDAP_MOD_ADD,
жета, регистрируемого в LDAP: - "member", "" );
+ "memberUid", "" );
# useradd -D cn=ldapadmin,dc=office,dc=localnet ↵ }
--service ldap -m -c "ldap user" luser1
rc = ldap_update_group (session, group, binddn, ↵
Enter LDAP Password:***** password, LDAP_MOD_DELETE,
Base DN for user account `luser1' is "ou=People,dc=office,dc=localnet". - "member", userdn );
LDAP information update failed: Object class violation + "memberUid", member );
useradd: User not added to LDAP group `video'. free (userdn);
LDAP information update failed: Object class violation }
useradd: User not added to LDAP group `dialout'. else
@@ -2039,13 +2039,13 @@
strvals[0][1] = "groupOfNames";
# getent passwd | grep luser strvals[0][2] = NULL;
luser1:x:1002:100:ldap user:/home/luser1:/bin/bash
- /* groupOfNames requires at least one "member"
* attribute
+ /* groupOfNames requires at least one "memberUid"
Хотя пользователь был зарегистрирован, но не уда- * attribute use an empty value for groups with
лось сделать записи о его членстве в дополнительных * no members */
strvals[3][0] = "";
группах: strvals[3][1] = NULL;

№2, февраль 2007 33


администрирование
mod[3].mod_values = strvals[3]; Проверяем, что получилось, и обнаруживаем, что бюд-
- mod[3].mod_type = "member";
+ mod[3].mod_type = "memberUid"; жет, где пароль установлен через usermod, недоступен:
mod[3].mod_op = LDAP_MOD_ADD;
mods[3] = &mod[3]; alekseybb@suse102:~> su - luser1 -c "LC_ALL=C id"
mods[4] = NULL;
# Password:*****
Пароль:*****
Права доступа на базу данных паролей может быть слишком
Этот патч предназначен д ля исходных текстов ограниченная.
к openSUSE 10.2, но должен подойти и к pwdutils-3.0.7.1-17 su: неправильный пароль
из openSUSE 10.1, хотя там проще изменить патч, наклады-
вающий модификацию согласно rfc2703bis. Бинарные сбор- А вот тот, что получил пароль при инициализации, пре-
ки модифицированных pwdutils соответствующих версий до- красно работает:
ступны в [2]. Итак, исправим и пробуем снова:
alekseybb@suse102:~> su - luser2 -c "LC_ALL=C id"
# userdel -D cn=ldapadmin,dc=office,dc=localnet ↵ Password:*****
--service ldap -r luser1 uid=1003(luser2) gid=100(users) groups=16(dialout),33(video),100(users)

Enter LDAP Password:*****


no crontab for luser1
Причина скрывается в формате парольных хешей:
# useradd -D cn=ldapadmin,dc=office,dc=localnet ↵
--service ldap -m -c "ldap user" luser1 # slapcat | grep "^\(dn\|userPassword\)" | tail -n 4
dn: uid=luser1,ou=People,dc=office,dc=localnet
Enter LDAP Password:***** userPassword:: e2NyeXB0fXtTU0hBfS96d0tsREFDak8xa1MxMktrNENKSCsvSTNURVFTSkhZ
Base DN for user account `luser1' is "ou=People,dc=office,dc=localnet". dn: uid=luser2,ou=People,dc=office,dc=localnet
userPassword:: e1NTSEF9eGNtSFRNZC9zTS9WRDd2V2JqWk1tL2phd0lEdFJPc1k=
# getent group | grep "^\(video\|dialout\)"
dialout:x:16:alekseybb,suser1 Здесь и «простым глазом» видно, что с хешами что-то
video:x:33:alekseybb,suser1
dialout:*:16:luser1 не так, а приглядевшись внимательнее, понимаем, что хеш
video:*:33:luser1 из бюджета luser1 имеет неверный формат.

Все хорошо. Но не совсем. Возникают трудности с на- # slapcat | grep "^userPassword" | tail -n 2 | ↵
awk '{print $2}' | mimencode -b -u
значением пароля. Поскольку в утилите passwd нет воз-
можности указать, с каким отличительным именем обра- {crypt}{SSHA}/zwKlDACjO1kS12Kk4CJH+/I3TEQSJHY{SSHA}xcmHTMd/sM/VD7vWbjZMm/jawIDtROsY

щаться к LDAP (кстати, вероятно, это временное упуще-


ние), а в настройках клиента /etc/ldap.conf не заданы па- Таким образом, обнаруживается вторая ошибка, исправ-
раметры принудительной линковки к LDAP, то если пароль ляемая следующим патчем:
не инициализирован, установить его от суперпользовате-
ля никак не получится. Обойти проблему можно нескольки- # cat pwdutils-3.1.2-newpassword.diff
ми путями. Во-первых, у нас в запасе есть smbldap‑passwd, --- lib/user.c.orig 2006-12-15 02:16:30.000000000 +0300
и если /etc/smbldap-tools/smbldap_bind.conf настроен пра- +++ lib/user.c 2006-12-15 02:18:42.000000000 +0300
@@ -1036,16 +1036,9 @@
вильно, то с помощью этой утилиты можно установить па- }
роль любого пользователя, смирившись с тем, что в кон-
if (data->newpassword)
фигурационном файле хранится в открытом виде пароль - {
администратора LDAP. Поэтому так делать не будем. Во- - const char *cryptstr = "{crypt}";
- char buffer[strlen (data->newpassword) +
вторых, можно установить пароль-заглушку сразу при со- - strlen (cryptstr) + 1];
здании бюджета: - snprintf (buffer, sizeof (buffer), ↵
"%s%s", cryptstr,
- data->newpassword);
# useradd -D cn=ldapadmin,dc=office,dc=localnet ↵ retval = ldap_update_user (session, ↵
--service ldap -p $(slappasswd -s luser2 -h {SSHA} ) ↵ data->pw.pw_name,
-m -c "ldap user" luser2 - data->binddn, ↵
data->oldclearpwd,
Enter LDAP Password:***** - "userPassword", buffer);
Base DN for user account `luser2' is "ou=People,dc=office,dc=localnet". - }
+ data->binddn, ↵
data->oldclearpwd,
И в третьих, можно вспомнить про утилиту usermod + "userPassword", ↵
(кстати, авторы [1] об этом не упоминают, потому что data->newpassword);
}
в ALT Linux используется иная версия управляющих ути- if (retval != 0)
лит), которая позволяет указывать отличительное имя fprintf (stderr,
для связи с LDAP:
Видно, что в оригинальном коде полученная строка об-
# usermod -D cn=ldapadmin,dc=office,dc=localnet ↵ рабатывалась не как хеш, а как текстовый пароль. Это про-
--service ldap -p $(slappasswd -s luser1 -h {SSHA} ) ↵
luser1 тиворечит документации на утилиту usermod, и вообще не-
понятно, как попало в код. В архиве [2] содержатся полно-
Enter LDAP Password:*****
стью исправленные версии pwdutils.

34
администрирование
После их установки получаем адекватные записи
в LDAP:

# usermod -D cn=ldapadmin,dc=office,dc=localnet ↵
--service ldap -e -1 ↵
-p $(slappasswd -s luser1 -h {SSHA} ) luser1

Enter LDAP Password:*****

# slapcat | grep "^\(dn\|userPassword\)" | tail -n 4

dn: uid=luser1,ou=People,dc=office,dc=localnet
userPassword:: e1NTSEF9bTY3cGNYYnR3N0xRdEhZNjNlMWpRQmZZakZNSXBNSUQ=
dn: uid=luser2,ou=People,dc=office,dc=localnet
userPassword:: e1NTSEF9eGNtSFRNZC9zTS9WRDd2V2JqWk1tL2phd0lEdFJPc1k=

И, естественно, удачную проверку авторизации:

alekseybb@suse102:~> su - luser1 -c "LC_ALL=C id"


Password:***** Рисунок 1. Настройка сервера LDAP
uid=1002(luser1) gid=100(users) groups=16(dialout),33(video),100(users)

После завершения в конфигурационных файлах LDAP


Тем самым ранее поставленную цель – создать пол- ничего не изменилось, кроме того, что был добавлен
ностью совместимую с традиционной схему размещения rootdn:
пользователей в LDAP – можно считать достигнутой. В за-
вершение можно порекомендовать сменить ранее уста- # grep ^root /etc/openldap/slapd.conf
rootdn "cn=ldaproot,dc=office,dc=localnet"
новленный простенький пароль для ldapadmin на что-ни- rootpw "{ssha}DHToDgxUuvxDwua/SB5Em5zzlABQWVpGVA=="
будь более существенное, например, так можно поменять
его на my.new.pass: В процессе настройки клиента совсем не удивило,
что снова было указано на невозможность работы без за-
# cat <<EOT | ldapmodify -v -a -D ↵ дания суперпользователя LDAP (см. рис. 2).
"cn=ldapadmin,dc=office,dc=localnet" ↵
-H ldap://localhost -x -w admin Дальнейшая настройка выполняется если не прос-
то, то очень просто. Не буду ее даже и комментировать.
dn: cn=ldapadmin,dc=office,dc=localnet
changetype: modify
Уже здесь можно отметить, насколько все легко. Хотя, как
replace: userPassword я уже писал, все перечисленные в статье команды лег-
userPassword: $(slappasswd -s my.new.pass -h {SSHA}) ко связываются в единый скрипт и выполняются вообще
EOT
ldap_initialize( ldap://localhost ) без каких-либо дополнительных манипуляций.
replace userPassword: Будем считать, что все уже настроено. Через средство
{SSHA}lZyR2iLrXzijblIE5gBF5UEMMlzMQabk
modifying entry "cn=ldapadmin,dc=office,dc=localnet"
управления пользовательскими учетными записями созда-
modify complete дим дополнительного пользователя luser3, зарегистриро-
ванного в LDAP. И проверим, как все работает.
Кстати, после этого smbldap-tools перестанут работать, Снача ла проверим, что не «слома лся» старый
то есть станут не опасными. бюджет:

Штатный способ настройки alekseybb@suse102:~> su - luser1 -c "LC_ALL=C id"


в openSUSE Пароль:
Можно задаться вопросом, зачем там много настраивать Права доступа на базу данных паролей может быть слишком ограниченная.
uid=1002(luser1) gid=100(users) groups=16(dialout),33(video),100(users)
и «подкручивать», есть же штатные для openSUSE инстру-
менты, составляющие YaST и позволяющие выполнить все
те задачи, что выше были перечислены. Попробуем! Рабо- Да, все работает, но забавно. Если интересно, може-
тать будем в openSUSE 10.2, чтобы не натыкаться на дав- те взглянуть, как нелепо расписаны приоритеты поиска
но исправленные ошибки. Запущенное после уже сделан- для pam в /etc/pam.d. Но раз работает, то и не будем при-
ных настроек средство для установки LDAP-сервера при- дираться.
няло установленную конфигурацию, но потребовало вер- Хуже то, что проверка «свеженького» бюджета не про-
нуть суперпользователя rootdn (см. рис. 1). ходит:
Здесь важно отметить, что никакой другой уровень до-
ступа, кроме rootdn, автоматического настройщика не уст- alekseybb@suse102:~> su - luser3 -c "LC_ALL=C id"
раивает! Предполагаю, что разработчики openSUSE очень su: пользователь luser3 не существует
не уверены в том, что без rootdn их системы будут рабо-
тать. Остается лишь гадать, в какой степени это относится Не верим своим глазам, проверяем внимательнее:
к SLES. Кроме того, обратите внимание, что система пра-
вильно восприняла тип парольных хешей – SSHA. # getent passwd | tail -n 2

№2, февраль 2007 35


администрирование
luser1:x:1002:100:ldap user:/home/luser1:/bin/bash тах, и им, как «лунатикам» с «марсианами», никак не до-
luser2:x:1003:100:ldap user:/home/luser2:/bin/bash говориться. Хотя, быть может, это моя вина, и я что-то про-
пустил в настройке? Снова вернемся к настройке клиен-
Точно, нет такого пользователя! та (см. рис. 3).
Может быть в shadow: Видим, что контейнер, в котором ищутся, а значит, и раз-
мещаются учетные записи пользователей YaST, понят пра-
# getent shadow | tail -n 2 вильно. Даже exop правильно интерпретирован. Но в ре-
suser1:$2a$10$1qqIvf4KcxLU/1RzxYPIiuKhjnohIlZa68fSHGjwiShgcvheuNFli:13495:0:99999:7::: зультате получаем нелепицу. Попробуем починить, испра-
+::0:0:0::::
вим путь поиска в nss:

А там вообще какой-то неадекватный мусор. Хотя в кон- # grep passwd /etc/ldap.conf
фигурации nss, как и прежде: nss_base_passwd dc=office,dc=localnet?sub

# grep shadow /etc/nsswitch.conf И сразу же начинаем «видеть» новичка:


shadow: files
# getent passwd | tail -n 3
Посмотрим, что в самой базе LDAP: luser1:x:1002:100:ldap user:/home/luser1:/bin/bash
luser2:x:1003:100:ldap user:/home/luser2:/bin/bash
# slapcat | grep "^\(dn: u\|userP\)" | tail -n 6 luser3:x:1004:100:Yast ldap user:/home/luser3:/bin/bash

dn: uid=luser1,ou=People,dc=office,dc=localnet
userPassword:: e1NTSEF9bTY3cGNYYnR3N0xRdEhZNjNlMWpRQmZZakZNSXBNSUQ= Пробуем авторизоваться:
dn: uid=luser2,ou=People,dc=office,dc=localnet
userPassword:: e1NTSEF9eGNtSFRNZC9zTS9WRDd2V2JqWk1tL2phd0lEdFJPc1k=
dn: uid=luser3,dc=office,dc=localnet alekseybb@suse102:~> su - luser3 -c "LC_ALL=C id"
userPassword:: e2V4b3B9bHVzZXIz
Пароль:
Права доступа на базу данных паролей может быть слишком ограниченная.
su: неправильный пароль
Нет слов! Смех переходит в гомерический. Кроме то-
го, что учетная запись luser3 не размещена в нужном кон- Опять те же «грабли»! Здесь лично я делаю вывод,
тейнере, так у нее еще и какой-то странный хеш. Смотрим, что в команде openSUSE не только Thorsten Kukuk любит
что внутри: пошутить. Юмористов там очень много, и шутки их с уве-
личением индекса дистрибутива становятся все разнооб-
# slapcat | grep "^userP" | tail -n 1 | ↵ разнее.
awk '{print $2}' | mimencode -b -u

{exop}luser3 Выводы
Статья может быть использована как практическое ру-
Ну что тут сказать? Создается впечатление, что раз- ководство в настройке общего пользовательского LDAP-
работчики OpenLDAP и YaST проживают на разных плане- каталога. Но описанное здесь позволяет сделать выво-
ды как насчет надежности использу-
емых в Linux настроек общесетевых
каталогов LDAP, понять, чем озабо-
чены разработчики подобных сис-
тем или, напротив, чем они пренеб-
регают, так и установить недостатки
предложенного в силу свойств, при-
сущих LDAP.
Во-первых, описанная схема ра-
ботает только в pwdutils, использу-
емых в openSUSE и еще в PLD. Во
многих других, например RHEL, FC,
Mandriva, ALT Linux, применяются
shadow-utils и их модификации. От-
личие в том, что pwdutils, которые со-
здал Thorsten Kukuk, позволяют ука-
зывать отличительное имя админис-
тратора в командной строке, то есть
дают работать с административны-
ми правами даже в отсутствие па-
раметра rootbinddn в конфигурации
клиента LDAP. Это позволяет избе-
Рисунок 2. Настройка клиента LDAP жать столь уязвимого указания паро-

36
администрирование
ля администратора в текстовой фор-
ме в openSUSE и PLD и приводит к то-
му, что все остальные дистрибутив-
ные ветки при настройке общесете-
вого репозитория LDAP вынуждены
хранить пароль администратора сис-
темы в открытом виде, как минимум,
на тех станциях, с которых допускает-
ся административное управление ка-
талогом. Что делает использование
LDAP менее надежным, чем традици-
онная схема размещения бюджетных
данных, обходящаяся хранением па-
рольных хешей в файлах.
Во-вторых, тот факт, что данная
схема реализуется лишь с помощью
заплаток, отсутствующих в дистрибу-
тивных версиях pwdutils, свидетельс-
твует о том, что никто и в openSUSE
не смущается данными проблема-
ми и, как и ранее, работает через
rootbinddn, и даже более, исполь-
зуя в качестве оного rootdn, как, на-
пример в [3]. Другими словами, хра-
нение пароля администратора в не- Рисунок 3. Параметры клиента LDAP
шифрованном виде является повсе-
местной практикой в Linux. Для срав- И вот теперь сделаем самый глав- Итак, LDAP обречен на взаимо-
нения попробуйте найти нешифро- ный вывод о том, как можно испра- действие с Kerberos. Именно по это-
ванный пароль администратора на вить ситуацию. Фактически вся сла- му пути пошли разработчики Microsoft
сервере или на рабочей станции MS бость использования LDAP по сравне- и точно также поступили в Samba
Windows. И опять приходится при- нию с традиционной формой хранения Team. Точно так же надо делать и в слу-
знать, что Linux-каталог LDAP сущес- учетных данных следует из-за невоз- чае любого применения LDAP как хра-
твенно менее безопасен, чем анало- можности аутентифицировать удален- нилища учетных данных.
гичный в MS Windows. ного привилегированного пользова- Большинство схем, описываю-
В-третьих, даже использование теля на основе сеансовых данных его щих иную настройку (источники [3]
pwdutils не является практичным ре- локальной регистрации. При исполь- и [4] не исключение), можно приме-
шением, так как требует введения па- зовании локального доступа к учет- нять лишь в локальных вариантах,
роля администратора для каждой опе- ным данным UID легко проверяется и то, закрывая глаза на вопросы бе-
рации, что не всегда возможно в слу- и является надежным критерием для зопасности. Но симбиоз OpenLDAP
чае, если эти утилиты используются оценки прав доступа. Так как взаимо- и Kerberos заслуживает отдельного
как основа в обертывающих скриптах. действие с LDAP происходит по кли- рассмотрения. Это значит, продолже-
То есть это проблема «by design». Ана- ент-серверной схеме, то удаленная ние следует...
логичная проблема возникает при ис- сторона обязана потребовать аутен-
пользовании smbldap‑tools. Этот инс- тификации клиентской части прежде, 1. Барабанов А. Размещение пользова-
трументарий предназначен для под- чем разрешить нужный уровень до- тельских бюджетов в LDAP. Часть 1.
ключения его в качестве внутренних ступа. И единственное, на мой взгляд, //«Системный администратор», №1,
утилит в samba3. И такое их использо- средство, которое позволяет избежать 2007 г. – C. 36-43.
вание исключает интерактивную фа- постоянного интерактивного взаимо- 2. Исходные тексты и собранные паке-
зу, в ходе которой можно задать воп- действия с механизмами аутентифи- ты для настоящей статьи – http://www.
рос администратору о парольной фра- кации, это Kerberos. Лишь в случае barabanov.ru/arts/ldap-start.
зе. Что естественным образом приво- построения аутентификации на осно- 3. Как настроить SAMBA в SUSE как PDC
дит к необходимости хранить пароль ве Kerberos можно заранее и на опре- с OpenLDAP, DYNDNS и CLAM – http://
в месте, доступном для автоматичес- деленный срок получить для некото- ru.opensuse.org/Howto_setup_SUSE_
кого считывания (в данном конкретном рого локального администратора до- as_SAMBA _ PDC_with_OpenLDAP,_
случае пароль записан в конфигура- статочный уровень прав на удален- DYNDNS_and_CLAM.
ционный файл). То есть снова прихо- ный каталог LDAP и использовать дан- 4. Нас т р о й к а O penLDAP и е го к л и -
дим к выводу о слабой защищеннос- ную возможность в неинтерактивных ентов – http://www.freesource.info/
ти практических решений на основе скриптах, запускаемых от упомянуто- w i k i / A LT L i n u x / D o k u m e n t a c i j a /
LDAP в Linux. го пользователя. OpenLDAP?v=1845.

№2, февраль 2007 37


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

Принципы построения
доменов Active Directory

Александр Емельянов

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

A
ctive Directory – технологию, по- Дальнейшая его настройка и инстру-
явившуюся в линейке систем менты управления и диагностики будут
Active Directory уже Win2K шесть лет назад, можно освещены в следующих номерах.
давно вошла в разряд было охарактеризовать как револю-
консервативных принципов ционную. По своей гибкости и масшта- Чем поможет
бируемости она превосходит домены Active Directory
логического построения NT 4 на порядок, не говоря уже о сетях, Приведу неполный список всех «вкус-
сетевой инфраструктуры. состоящих из рабочих групп. ностей», которые вы получите, развер-
Но многие администраторы С момента выхода AD было выпу- нув службу каталогов:
продолжают использовать щено огромное количество книг и пуб- n единая база регистрации пользова-
рабочие группы и домены ликаций на тему планирования, про- телей, которая хранится централи-
ектирования топологии, поддержки зованно на одном либо нескольких
Windows NT в своей работе.
доменов, обеспечения безопаснос- серверах; таким образом, при появ-
Внедрение службы каталогов ти и т. п. лении нового сотрудника в офисе
будет интересно и полезно как Сертификационные курсы корпора- вам нужно будет всего лишь завес-
начинающим, так и опытным ции Microsoft обещают, что за 40 часов ти ему учетную запись на сервере
администраторам для вы сможете научиться тому, как раз- и указать, на какие рабочие стан-
централизации управления вернуть свой домен и с успехом его ции он сможет получать доступ;
администрировать. n поскольку все ресурсы домена ин-
сетью и обеспечения
Не верю. Администрирование – дексируются, это дает возмож-
должного уровня это процесс, включающий в себя мно- ность простого и быстрого поиска
безопасности. голетний опыт с «набитыми шишка- для пользователей; например, если
ми», огромным количеством прочи- нужно найти цветной принтер в от-
танной документации (в массе своей деле автоматизации;
на английском языке) и «задушевны- n совокупность применения разре-
ми» беседами с начальством и поль- шений NTFS, групповых политик
зователями. и делегирования управления поз-
Есть еще один нюанс – перед тем, волит вам тонко настроить и рас-
как пройти курс по внедрению Active пределить права между участни-
Directory, вы должны иметь успеш- ками домена;
но сданный курс по администрирова- n перемещаемые профили пользо-
нию сетевой инфраструктуры на ба- вателей дают возможность хранить
зе Windows Server 2003, который тоже важную информацию и настройки
требует некоторых финансовых затрат конфигурации на сервере; факти-
со стороны обучающегося. Лишний чески, если пользователь, облада-
раз убеждаемся, что Microsoft своего ющий перемещаемым профилем
не упустит. Но речь не об этом… в домене, сядет работать за дру-
Изучение внедрения AD никак гой компьютер и введет свои имя
не вписывается в рамки недельного пользователя и пароль, он увидит
курса и уж тем более одной публика- свой рабочий стол с привычными
ции. Однако, вооружившись опытом ему настройками;
предыдущих статей, попытаемся ра- n с помощью групповых политик вы
зобраться, что же такое служба ката- можете изменять настройки опе-
логов по сути своей, каковы основные рационных систем пользователей,
тонкости ее инсталляции и чем она мо- от разрешения пользователю уста-
жет облегчить жизнь системного адми- навливать обои на рабочем столе
нистратора. до настроек безопасности, а так-
Также посмотрим, что нового по- же распространять по сети про-
явилось в Active Directory с выходом граммное обеспечение, например,
Windows Server 2003. Volume Shadow Copy client и т. п.;
Стоит отметить, что в последнем n многие программы (прокси-сер-
квартале прошедшего года Microsoft веры, серверы баз данныхи др.)
выпустила Windows Vista, а вместе не только производства Microsoft
с ней и обновленную службу каталогов. на сегодняшний день научились ис-
Однако старые технологии не потеряли пользовать доменную аутентифи-
своей актуальности и по сей день. кацию, таким образом, вам не при-
В рамках статьи мы пройдем путь дется создавать еще одну базу дан-
от понимания сущности AD до соз- ных пользователей, а можно будет
дания своего собственного домена. использовать уже существующую;

№2, февраль 2007 39


администрирование
Name Server – сервер имен доме- нов будут существовать доверитель-
на), а не WINS (Windows Internet Name ные отношения.
Service – сервис имен Internet), как это Еще одно свойство доверитель-
было в ранних версиях NT. Таким об- ных отношений – транзитивность. По-
разом, имена компьютеров в домене лучаем – для домена net.first.work.com
имеют вид, например, buh.work.com, создаются доверительные отношения
где buh – имя компьютера в доме- с доменом work.com.
не work.com (хотя это не всегда так,
об этом читайте далее). Леса
В рабочих группах используются Также как и деревья это многодомен-
NetBIOS-имена. Для размещения до- ные структуры. Но лес – это объедине-
Рисунок 1. Дерево доменов менной структуры AD возможно ис- ние деревьев, имеющих разные корне-
пользование DNS-сервера не компа- вые домены.
нии Microsoft. Но он должен быть сов- Предположим, вы решили иметь не-
местим с BIND 8.1.2 или выше и подде- сколько доменов с именами work.com
рживать записи SRV (RFC 2052), а так- и home.net и создать для них дочер-
же протокол динамической регистра- ние домены, но из-за того, что tld (top
ции (RFC 2136). Каждый домен име- level domain) не в вашем управлении,
ет хотя бы один контроллер домена, в этом случае вы можете организовать
на котором располагается централь- лес (см. рис. 2), выбрав один из доме-
ная база данных. нов первого уровня корневым. Вся пре-
лесть создания леса в этом случае –
Деревья двухсторонние доверительные отно-
Это многодоменные структуры. Кор- шения между двумя этими доменами
нем такой структуры является глав- и их дочерними доменами.
Рисунок 2. Лес доменов с корнем
Work.com ный домен, для которого вы создаете Однако при работе с лесами и де-
дочерние. Фактически Active Directory ревьями необходимо помнить следу-
n использование Remote Installation использует иерархическую систему ющее:
Services облегчает установку сис- построения, аналогичную структуре n нельзя добавить в дерево уже су-
тем на рабочие места, но, в свою доменов в DNS. ществующий домен;
очередь, работает только при внед- Например, если мы имеем до- n нельзя включить в лес уже сущес-
ренной службе каталогов. мен work.com (домен первого уровня) твующее дерево;
и создаем для него два дочерних до- n если домены помещены в лес,
Отрицательные стороны этой тех- мена first.work.com и second.work.com их невозможно переместить в дру-
нологии появляются в процессе рабо- (здесь first и second – это домены вто- гой лес;
ты либо от незнания основ, либо от не- рого уровня, а не компьютер в доме- n нельзя удалить домен, имеющий
желания вдаваться в тонкости компо- не, как в случае, описанном выше), дочерние домены.
нентов AD. Научитесь правильно ре- то в итоге получим дерево доменов
шать возникающие задачи, и весь не- (см. рис. 1). Для получения более глубокой ин-
гатив исчезнет. Деревья как логическое постро- формации по тонкостям использо-
Я лишь заострю внимание на том ение используются, когда вам нуж- вания и конфигурирования деревь-
фак те, что все вышеперечислен- но разделить филиалы компании, на- ев и лесов вы можете посетить базу
ное будет иметь силу при наличии пример, по географическим призна- знаний Microsoft TechNet, а мы пой-
гомогенной сети на базе семейства кам, либо из каких-то других органи- дем дальше.
ОС Windows 2000 и выше. зационных соображений.
AD помогает автоматически созда- Организационные единицы
Логика построения вать доверительные отношения меж- (OU)
Рассмотрим основные составляющие ду каждым доменом и его дочерними Их можно назвать субдоменами. OU
службы каталогов. доменами. позволяют группировать в домене
Таким образом, создание домена учетные записи пользователей, груп-
Домены first.work.com ведет к автоматической пы пользователей, компьютеры, раз-
Это основная логическая единица пос- организации двухсторонних довери- деляемые ресурсы, принтеры и другие
троения. В сравнении с рабочими груп- тельных отношений между родитель- OU. Практическая польза от их приме-
пами домены AD – это группы безопас- ским work.com и дочерним first.work.com нения состоит в возможности делеги-
ности, имеющие единую базу регист- (аналогично и для second.work.com). рования прав для администрирования
рации, тогда как рабочие группы – это Поэтому с родительского домена мо- этих единиц.
всего лишь логическое объединение гут применяться разрешения для до- Попросту говоря, можно назна-
машин. AD использует для именова- чернего, и наоборот. Нетрудно пред- чить администратора в домене, ко-
ния и службы поиска DNS (Domain положить, что и для дочерних доме- торый сможет управлять OU, но не

40
администрирование
иметь прав для администрирования
всего домена.
Важной особенностью OU в отли-
чие от групп (немного забегаем впе-
ред) является возможность примене-
ния к ним групповых политик. «А поче-
му нельзя разбить исходный домен на
несколько доменов вместо использо-
вания OU?» – спросите вы.
Многие специалисты советуют
иметь по возможности один домен.
Причина этому – децентрализация ад-
министрирования при создании допол-
нительного домена, так как админист-
раторы каждого такого домена получа-
ют неограниченный контроль (напом-
ню, что при делегировании прав адми-
нистраторам OU можно ограничивать
их функционал).
В дополнение к этому для создания
нового домена (даже дочернего) нужен
будет еще один контроллер. Если же
у вас есть два обособленных подраз- Рисунок 3. Пример логики вложенности объектов Active Directory
деления, соединенных медленным ка-
налом связи, могут возникнуть пробле- n глобальные группы домена могут Например, если вы имеете несколь-
мы с репликацией. В этом случае более включать в себя пользователей до- ко филиалов в разных концах страны,
уместным будет иметь два домена. мена и другие глобальные группы соединенных низкоскоростными ли-
Также существует еще один нюанс этого же домена; ниями связи, то для каждого филиа-
применения групповых политик: поли- n локальные группы домена ис- ла вы можете создать свой сайт. Де-
тики, в которых определены настройки пользуются для разграничения лается это для повышения надежнос-
паролей и блокировки учетных запи- прав доступа, могут включать в се- ти репликации каталога.
сей могут применяться только для до- бя пользователей домена, а также Такое разбиение AD не влияет
менов. Для OU эти настройки политик универсальные группы и глобаль- на принципы логического построе-
игнорируются. ные группы любого домена в лесу; ния, поэтому как сайт может содер-
n локальные группы компьюте- жать в себе несколько доменов, так и
Группы пользователей ров – группы, которые содержит наоборот, домен может содержать не-
и компьютеров SAM (security account manager) ло- сколько сайтов. Но такая топология
Они используются для администра- кальной машины. Область их рас- службы каталогов таит в себе подвох.
тивных целей и имеют такой же смысл, пространения ограничивается Как правило, для связи с филиалами
как и при использовании на локаль- только данной машиной, но они используется Интернет – очень небе-
ных машинах в сети. В отличие от OU, могут включать в себя локальные зопасная среда. Многие компании ис-
к группам нельзя применять группо- группы домена, в котором находит- пользуют средства защиты, напри-
вые политики, но для них можно деле- ся компьютер, а также универсаль- мер, брандмауэры. Служба каталогов
гировать управление. В рамках схе- ные и глобальные группы своего в своей работе использует около полу-
мы Active Directory выделяют два ви- домена или другого, которому они тора десятков портов и служб, откры-
да групп: группы безопасности (при- доверяют. Например, вы можете тие которых для прохождения трафи-
меняются для разграничения прав до- включить пользователя из домен- ка AD через брандмауэр, фактически
ступа к объектам сети) и группы рас- ной локальной группы Users в груп- выставит ее «наружу». Решением про-
пространения (применяются в основ- пу Administrators локальной маши- блемы является использование техно-
ном для рассылки почтовых сообще- ны, тем самым дав ему права ад- логии туннелирования, а также нали-
ний, например, в сервере Microsoft министратора, но только для этого чие в каждом сайте контроллера до-
Exchange Server). компьютера. мена для ускорения обработки запро-
Они подразделяются по области сов клиентов AD.
действия: Сайты
n универсальные группы могут Это способ физического разделения На рис. 3 представлена логика вло-
включать в себя пользователей службы каталогов. По определению женности составляющих службы ката-
в рамках леса, а также другие уни- сайт – это группа компьютеров, со- логов. Видно, что лес содержит два де-
версальные группы или глобаль- единенных быстрыми каналами пере- рева доменов, в которых корневой до-
ные группы любого домена в лесу; дачи данных. мен дерева, в свою очередь, может со-

№2, февраль 2007 41


администрирование
во информации каталога). NTDS.DIT –
Новшества Active Directory контроллеры под управлением Windows это модифицированная база данных.
в Windows Server 2003 Server 2000/2003. Этот уровень более Она создана с использованием той же
С выходом Windows Server 2003 в Active функционален, но имеет свои ограни- технологии, что и база данных Microsoft
Directory появились следующие измене- чения. Например, вы не сможете пере- Access. Алгоритмы работы контролле-
ния: именовывать контроллеры доменов. ров домена содержат вариант движка
n Стало возможным переименование до- n Windows Server 2003 Interim (про- JET базы данных Access, который был
мена после его создания. межуточный Windows Server 2003). назван ESE (Extensible Storage Engine –
n Улучшился пользовательский интер- Допускается иметь контроллеры под расширяемый движок хранения ин-
фейс управления. Например, можно управлением Windows NT, а также формации). NTDS.DIT и службы, обес-
изменить атрибуты сразу нескольких Windows Server 2003. Используется, печивающие взаимодействие с этим
объектов. например, когда главный контрол- файлом, фактически и есть служба
n Появилось хорошее средство управ- лер домена под управлением серве- каталогов.
ления групповыми политиками – Group ра Windows NT обновляется до W2K3. Структура взаимодействия клиен-
Policy Management Console (gpmc.msc, Уровень имеет чуть большую функци- тов AD и основного хранилища дан-
ее нужно скачивать с сайта Microsoft). ональность, чем уровень Windows 2000 ных, аналогично как и пространство
n Изменились функциональные уровни Native. имен службы каталогов, представ-
домена и леса. n Windows Server 2003. Допускается на- лены в статье [1]. Для полноты опи-
личие в домене контроллеров только сания нужно упомянуть об использо-
О последнем изменении нужно ска- под управлением Windows Server 2003. вании глобальных идентификаторов.
зать подробнее. Домен AD в Windows На этом уровне можно воспользовать- Глобальный уникальный идентифи-
Server 2003 может находиться на одном из ся всеми возможностями службы ката- катор (Global Unique Identifier, GUID) –
следующих уровней, перечисленных в по- логов Windows Server 2003. это 128-разрядное число, сопостав-
рядке роста функциональности: ляемое каждому объекту при его со-
n Windows 2000 Mixed (смешанный Функциональные уровни леса доме- здании для обеспечения уникальности.
Windows 2000). В нем допускается нов практически те же, что и для доменов. Имя объекта AD можно изменить, а вот
иметь контроллеры различных вер- Единственное исключение – существует GUID останется неизменным.
сий – как Windows NT, так и Windows только один уровень Windows 2000, на ко-
2000/2003. Причем если серверы тором возможно использование в лесу кон- Глобальный каталог
Windows 2000/2003 равноправны, троллеров под управлением Windows NT, Наверняка вы успели заметить, что
то сервер NT, как уже говорилось, мо- а также Windows Server 2000/2003. структура AD может быть весьма слож-
жет выступать только резервным кон- Стоит заметить, что изменение функ- ной и вмещать в себя большое коли-
троллером домена. ционального уровня домена и леса являет- чество объектов. Чего стоит только
n Windows 2000 Native (естественный ся операцией необратимой. То есть отсутс- тот факт, что домен AD может вклю-
Windows 2000). Допускается иметь твует обратная совместимость. чать в себя до 1,5 млн. объектов. Но из-
за этого могут возникнуть проблемы
держать OU и группы объектов, а так- ные пользователей и был зашифро- с производительностью при выпол-
же иметь дочерние домены (в данном ван. Сегодня SAM также использует- нении операций. Эта проблема реша-
случае их по одному у каждого). До- ся в операционных системах семейс- ется с помощью Глобального катало-
черние домены также могут содер- тва NT 5 (Windows 2000 и выше). га (Global Catalog, GC). Он содержит
жать группы объектов и OU и иметь Когда вы повышаете роль рядового сокращенную версию всего леса AD,
дочерние домены (на рисунке их нет). сервера до контроллера домена с по- что помогает ускорять поиск объектов.
И так далее. Напомню, что OU могут мощью команды DCPROMO (факти- Владельцем глобального каталога мо-
содержать OU, объекты и группы объ- чески она запускает мастер установ- гут выступать специально назначен-
ектов, а группы могут содержать дру- ки службы каталогов), подсистема бе- ные для этого контроллеры домена.
гие группы. Более подробно о вложен- зопасности Windows Server 2000/2003
ности групп и их составляющих читай- начинает использовать централизо- Роли FSMO
те в следующей статье. ванную базу данных AD. Это можно В AD существует определенный пере-
легко проверить – попробуйте после чень операций, выполнение которых
Сущность службы создания домена открыть на контрол- можно возложить только на один конт-
каталогов лере оснастку Computer Management роллер. Они называются ролями FSMO
Чтобы обеспечить некоторый уровень и найти там «Локальные пользовате- (Flexible Single-Master Operations – опе-
безопасности, любая операционная ли и группы». Более того, попробуй- рации с одним хозяином). Всего в AD
система должна иметь файлы, содер- те войти на этот сервер под локаль- 5 ролей FSMO. Рассмотрим их более
жащие базу данных пользователей. ной учетной записью. Вряд ли у вас подробно.
В ранних версиях Windows NT для это- получится. В рамках леса обязательно долж-
го использовался файл SAM (Security Большинство данных пользова- на существовать гарантия уникальнос-
Accounts Manager – менеджер учетных телей сохраняются в файле NTDS. ти доменных имен при добавлении но-
записей). Он содержал учетные дан- DIT (Directory Information Tree – дере- вого домена к лесу доменов. Такая га-

42
администрирование
рантия осуществляется исполнителем хвате роли служба каталогов полага- жем, по четыре-пять в день. Пос-
роли владельца операции именова- ет, что предыдущего владельца нет, кольку если у вас в сети большое
ния доменов (Domain Naming Master) и не обращается к нему вовсе. Воз- количество машин (50 и больше)
Исполнитель роли владельца схемы вращение в сеть прежнего исполни- и вы управляете ею один, то вряд
(Schema Master) осуществляет все из- теля роли может привести к наруше- ли вы управитесь даже за выход-
менения в схеме каталога. Исполни- нию ее функционирования. Особен- ные, а если и управитесь, то на-
тели ролей владельца доменных имен но это критично для владельца схемы, сколько все будет корректно, неиз-
и владельца схемы должны быть уни- владельца доменных имен и владель- вестно. К тому же для обмена доку-
кальны в рамках леса доменов. ца идентификаторов. ментацией внутри сети вы можете
Как я уже говорил, при создании Что касается производительности: использовать файловый или внут-
объекта ему сопоставляется глобаль- наиболее требовательна к запасу ре- ренний почтовый сервер (такой
ный идентификатор, гарантирующий сурсов компьютера роль эмулятора ос- был описан мной в №11 за 2006 г.).
его уникальность. Именно поэтому кон- новного контроллера домена, поэтому Единственное, в этом случае стоит
троллер, отвечающий за генерацию ее можно возложить на другой конт- корректно разобраться в настрой-
GUID и исполняющий роль владель- роллер. Остальные роли не столь тре- ке прав пользователей для доступа
ца относительных идентификаторов бовательны, поэтому при их распре- к файловому серверу. Потому что,
(Relative ID Master), должен быть один- делении вы можете руководствовать- если, например, он не будет вклю-
единственный в рамках домена. ся нюансами логического построения чен в домен, аутентификация поль-
В отличие от доменов NT в AD нет схемы вашей AD. зователей будет осуществляться,
понятия PDC и BDC (основной и ре- основываясь на записях локаль-
зервный контроллеры домена). Од- Последний шаг ной базы SAM. Там нет данных
ной из ролей FSMO является PDC теоретика о доменных пользователях. Одна-
Emulator (эмулятор основного контрол- Прочтение статьи вовсе не должно пе- ко если ваш файловый сервер бу-
лера домена). Сервер под управлени- ревести вас из теоретиков в практики. дет в числе первых машин, вклю-
ем Windows NT Server может выступать Потому что, пока вы не учли все факто- ченных в AD, и не будет контролле-
в роли резервного контроллера доме- ры от физического размещения узлов ром домена, то будет существовать
на в AD. Но известно, что в доменах NT сети до логического построения все- возможность аутентификации пос-
может использоваться только один ос- го каталога, не стоит браться за дело редством как локальной базы SAM,
новной контроллер. Именно поэтому и воздвигать домен простыми ответа- так и учетной базы AD. Но для пос-
Microsoft сделала так, что в рамках од- ми на вопросы мастера установки AD. леднего варианта вам нужно бу-
ного домена AD мы можем назначить Подумайте, как будет называться ваш дет в локальных настройках безо-
единственный сервер – носитель роли домен и, если вы собираетесь создать пасности разрешить (если это еще
PDC Emulator. Таким образом, отступая дочерние для него, по каким призна- не сделано) доступ к файловому
от терминологии, можно говорить о на- кам они будут именоваться. При на- серверу по сети как участникам до-
личии главного и резервных контрол- личии в сети нескольких сегментов, мена, так и локальным учетным за-
леров домена, имея в виду обладате- соединенных ненадежными каналами писям.
ля роли FSMO. связи, рассмотрите возможность ис-
При удалении и перемещении объ- пользования сайтов. О дальнейшей настройке служ-
ектов один из контроллеров должен Как руководство по установке бы каталогов (создание и управление
сохранить ссылку на этот объект, по- AD могу посоветовать использовать учетными записями, назначение груп-
ка не будет полностью завершена статьи [2] и [3], а также базу знаний повых политик и др.) читайте в следу-
репликация. Такую роль выполняет Microsoft. ющей статье.
владелец инфраструктуры каталога Напоследок несколько советов:
(Infrastructure Master). n Постарайтесь по возможности 1. Коробко И. Active Directory – теория
Последние три роли требуют уни- не совмещать роли PDC Emulator построения. //«Системный админист-
кальности исполнителя в рамках до- и прокси-сервера на одной маши- ратор», №1, 2004 г. – C. 90-94. (http://
мена. Все роли возлагаются на первый не. Во-первых, при большом коли- www.samag.ru/cgi-bin/go.pl?q=articles;
контроллер, созданный в лесу. При со- честве машин в сети и пользовате- n=01.2004;a=11).
здании разветвленной инфраструкту- лей Интернет возрастает нагрузка 2. Марков Р. Домены Windows 2000/
ры AD вы можете передавать эти ро- на сервер, а во-вторых, при удач- 2003 – отказываемся от рабочей груп-
ли другим контроллерам. Могут воз- ной атаке на ваш прокси «упадет» пы. //«Системный администратор»,
никать также ситуации, когда владе- не только Интернет, но и основной №9, 2005 г. – C. 8-11. (http://www.samag.
лец одной из ролей недоступен (вы- контроллер домена, а это чревато ru/cgi-bin/go.pl?q=articles;n=09.2005;
шел из строя сервер). В этом случае некорректной работой всей сети. a=01).
необходимо выполнить операцию за- n Если вы постоянно администриру- 3. Марков Р. Установка и настройка
хвата роли FSMO с помощью утилиты ете локальную сеть, а не собирае- Windows 2К Server. //«Системный ад-
NTDSUTIL (о ее использовании мы по- тесь заняться внедрением Active министратор», №10, 2004 г. – C. 88-94.
говорим в следующих статьях). Но сто- Directory для заказчиков, вносите (http://www.samag.ru/cgi-bin/go.pl?
ит быть осторожным, так как при за- машины в домен постепенно, ска- q=articles;n=10.2004;a=12).

№2, февраль 2007 43


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

Тонкая настройка Microsoft ISA 2004

Андрей Бирюков
Известно, что настройки, используемые по умолчанию при установке программного
обеспечения, не являются оптимальными. Как можно настроить межсетевой экран ISA 2004,
чтобы оптимизировать работу сети?

М
ежсетевой экран Microsoft расширяться филиалы, в связи с этим дыдущей версии межсетевого экрана
ISA 2004 содержит множест- возрастает нагрузка на каналы связи. ISA 2000 эти функции были реализо-
во функций, необходимых для Увеличение пропускной способности ваны, однако, по заверениям Microsoft,
организации полноценной работы кор- каналов, как правило, требует допол- не пользовались популярностью, поэ-
поративной сети. В предыдущих стать- нительных финансовых затрат, к тому тому в первом релизе 2004 средства
ях [1, 2] я рассмотрел вопросы, связан- же не всегда возможно. Но снизить на- управления трафиком отсутствовали.
ные с подключением пользователей грузку можно, не прибегая к каким-ли- Но вскоре в Microsoft осознали оши-
к Интернету и организацией удаленно- бо затратам, используя возможности бочность такого подхода, и реализация
го доступа к корпоративным ресурсам. ISA Server. Для этого имеются возмож- данных средств была включена в па-
Теперь наша географически распреде- ности управления трафиком, кэширо- кет обновлений Service Pack 2.
ленная корпоративная сеть может пол- вание, сжатие данных и т. д. Перехожу непосредственно к опи-
ноценно функционировать, обеспечи- санию тех компонентов, с помощью
вая как доступ локальным пользова- Предыстория, которых можно повысить эффектив-
телям к ресурсам Интернета, так и до- исправление ошибок ность сети.
ступ сотрудникам, работающим уда- Изначально в ISA 2004 некоторые Начну с фоновой интеллектуаль-
ленно в филиалах, к ресурсам основ- из вышеперечисленных функций за- ной службы передачи (Background
ной сети. Поскольку с течением вре- ложены не были. Например, отсутс- Intelligent Transfer Service – BITS), ко-
мени численность сотрудников компа- твовали средства управления трафи- торая помогает передавать большие
нии может увеличиваться, также могут ком и активное кэширование. В пре- объемы информации без уменьше-

44
администрирование
ния производительности сети. До- сия, которая уменьшает размер фай-
стигается это за счет передачи дан- ла, используя алгоритмы для снижения
ных небольшими порциями, исполь- избыточности передаваемых данных.
зуя невостребованную доступную про- Таким образом, могут быть безопас-
пускную способность, и соединения но сжаты файлы большинства типов.
порций данных в месте назначения. HTTP-компрессия использует стан-
В ISA Server 2004 SP2 встроен меха- дартные алгоритмы GZIP и Deflate, ко-
низм кэширования данных, получен- торые встроены в Windows 2000, 2003
ных из центра Microsoft Update с по- и новые операционные системы, а так-
мощью BITS. Обновление операцион- же в Internet Explorer версии 4 и выше.
ных систем Microsoft Windows и других Эти же алгоритмы используются для
продуктов компании Microsoft на ком- декомпрессии статических файлов
пьютерах компании может использо- и динамических ответов на стороне
вать большую часть доступной про- клиента, поддерживающего протокол
пускной способности сети. Это может HTTP 1.1. Клиент, настроенный на ис-
создать особые сложности, если для пользование протокола HTTP 1.1, за-
подключения к Интернету использует- прашивает сжатую информацию у веб-
ся канал с низкой пропускной способ- сервера. Веб-сервер в ответе указы-
ностью. Но своевременное выполне- вает, поддерживает ли он компрес- Рисунок 1. Взаимодействие между
ние обновлений необходимо для ста- сию или нет. основным и удаленным офисами
бильной работы Windows-приложе- В ISA- сервере HT TP-компрес -
ний. ISA предоставляет возможность сия является глобальной установкой
для кэширования данных Microsoft для всего трафика данного протокола.
Update с помощью BITS для хранения Она применяется ко всему HTTP-тра-
обновлений так, чтобы кэш ISA-сер- фику, проходящему через ISA-сервер
вера сам отвечал на запросы. Обнов- «к» или «от» отдельной сети или сете-
ления могут быть получены через Ин- вого объекта, а не только для трафи-
тернет один раз, а затем применяться ка, управляемого отдельным прави-
по всей корпоративной сети. Для кэ- лом. HTTP-компрессия представлена
ширования данных Microsoft Update двумя веб-фильтрами:
использует запросы HTTP по диапазо- n Фильтр сжатия. Отвечает за ком-
ну (HTTP Range Requests). За счет то- прессию и декомпрессию запро-
го, что ISA-сервер может кэшировать сов и откликов HTTP. Обладает
такие запросы, достигается дополни- высоким приоритетом и находится
тельная эффективность. Это увеличи- на вершине списка веб-фильтров,
вает скорость обновления при низкой поскольку он отвечает за декомп-
пропускной способности сети и безо- рессию, без чего остальные филь-
пасность сетевого окружения, так как тры не смогут получить доступ к со- Рисунок 2. Выбираем типы контента
быстрая и своевременная установка держимому потока. В случае выбо-
обновлений позволяет повысить ус- ра проверки сжатого содержимого Компрессия по диапазону – это сжа-
тойчивость к сбоям. декомпрессия должна проходить тие отдельного HTTP-запроса. Комп-
Для того чтобы настроить кэширо- до того, как другие веб‑фильтры рессия по диапазону может исполь-
вание на ISA Server, нужно проделать будут проверять содержимое. зоваться для несжатых файлов типа
следующие действия: n Фильтр кэширования сжатого со- PDF (Portable Document Format – фор-
В консоли управления ISA-сервера держимого. Отвечает за кэширо- мат портативных документов).
откройте пункт «Cache», затем опре- вание сжатого содержимого и об- Однако, если в вашей сети ис-
делитесь с правилами «Cache Rules». служивает запросы на сжатое со- пользуется веб-сервер от Microsoft
В панели задач создайте правило кэ- держимое из кэша. У него самый IIS (Internet Information Ser vices),
ширования данных для обновлений: низкий приоритет, и он расположен то не включайте эту функцию, так как
«Create the Microsoft Update Cache в конце списка веб-фильтров, пос- он не поддерживает компрессию.
Rule». На последней странице про- кольку кэширование происходит Применительно к инфраструкту-
смотрите информацию о настройке после того, как все фильтры про- ре ISA, которую мы развернули в пре-
и нажмите «Finish», затем «Apply», что- верят содержимое. дыдущих статьях [1, 2], и в частнос-
бы изменения вступили в силу. ти к связи центрального и удаленного
Не рекомендуется изменять при- офисов, можно развернуть компрес-
Сжимаем трафик оритеты по умолчанию для этих фильт- сию по диапазону между двумя ISA-
Другим средством, позволяющим сни- ров. HTTP-компрессия также дает серверами. К примеру, если в глав-
зить загруженность каналов доступа возможность установки компрессии ном офисе стоит веб-сервер, можно
в Интернет, является HTTP-компрес- по диапазону. отключить компрессию по диапазо-

№2, февраль 2007 45


администрирование
ну во внутренней сети главного офиса, но включить ее во Особенности настройки компрессии
внешней сети между главным офисом и филиалами. Та- по диапазону
ким образом, компрессия по диапазону будет использо- Компрессия по диапазону не устанавливается через кон-
ваться между офисами. соль управления ISA-сервера. Поэтому администратор дол-
Прежде чем описать практическую реализацию, рас- жен редактировать xml-файл вручную и установить флажок
смотрим процесс сжатия в ISA Server 2004 SP2: CompressRange. Итак, выполните следующие действия:
n Браузер клиента запрашивает контент. 1. Создайте xml-файл следующей структуры:
n Настройки в филиале не разрешают клиенту исполь-
зование режима сжатия контента. Однако ISA-сервер Листинг 1. XML-файл для компрессии по диапазону
в филиале настроен на данный режим и поэтому посы- <Compression ContentInspectionIsRequired="false"
лает в главный офис уже сжатый запрос. MinimumCompressionLength="36"
MemAllocCompression="256">
n ISA-сервер главного офиса получает запрос. Посколь- <NetworksElements>
ку клиенту (ISA-сервер филиала) разрешен сжатый кон- <NetworkElement
Name="Internal"
тент, ISA-сервер посылает запрос на веб-сервер. Одна- Type="Network"
ко ISA-сервер в главном офисе настроен на запрет за- ClientCanAskForCompression="true"
ServerShouldCompressResponse="false"
просов с компрессией, ответ веб-сервера содержит не- CompressRange="false"
сжатый контент.  StorageName= ↵
"{4E32B556-0FAF-4A27-9111-085F679EDC9B}" />
n Когда ISA-сервер главного офиса получает запрос, <NetworkElement
он возвращает его ISA-серверу филиала. Поскольку за- Name="External"
Type="Network"
прос от ISA-сервера филиала запрашивал сжатие, ISA- ClientCanAskForCompression="false"
сервер главного офиса сжимает данные перед отправ- ServerShouldCompressResponse="true"
CompressRange="true"
кой. StorageName= ↵
n ISA-сервер филиала получает ответ, сжатый контент. "{F129EACF-778B-44FE-B339-5B752D7220A3}" />
</NetworksElements>
ISA-сервер делает декомпрессию и передает несжатые <ContentTypes CompressOnlyFollowingContentType="false">
данные клиенту в филиале. <ContentType
Name="Images"
StorageName= ↵
Графически алгоритм изображен на рис. 1. "{2f203d1d-9ca0-414a-b036-fc9c585677ab}" />
<ContentType
Теперь реализуем HTTP-компрессию на практике. Name="Video"
Для этого требуется произвести следующие действия. StorageName= ↵
"{7d3e566c-e96c-4cd4-b6aa-8181a8386c8e}" />
Как и в прежних примерах, основным инструментом высту- </ContentTypes
пает консоль администрирования ISA. Далее «Configuration»
и «General». На вкладке «Global HTTP Policy Settings» наж- 2. Вы можете создать xml-файл при настройке HTTP-ком-
мите «Define HTTP Compression Preferences» (определить прессии в консоли управления ISA-сервера, а затем экспор-
предпочтения HTTP-компрессии). Откроется окно свойств тировать настройки с помощью файла SetCompConfig.vbs.
«HTTP Compression». На вкладке «Settings» вы можете до- Синтаксис строки запуска:
бавить сетевые объекты, для которых требуется HTTP-ком-
прессия. Далее «Add». Откроется диалоговое окно «Add SetCompConfig.vbs export имя_файла
Network Entities». Выберите в нем объект и нажмите «Add».
Повторите эту процедуру для каждого элемента и наж- 3. Отредактируйте xml-файл для изменения настро-
мите «Close». ек и снова запустите скрипт для измененного файла. За-
Обратите внимание, что список сетевых объектов упо- пустите файл SetCompConfig.vbs с именем вашего фай-
рядочен, так что вы можете установить предпочтения ком- ла в качестве параметра. Так вы поместите файл в хра-
прессии между сетевыми объектами (см. рис. 2). нилище ISA-сервера. Для импорта используйте следую-
Используйте стрелки для изменения порядка сете- щий синтаксис:
вых элементов. Выделите сетевой элемент и нажмите
«Set Compression» для установки свойств компрессии. SetCompConfig.vbs import имя_файла
При этом можно выбрать:
n Reply with compressed HTTP content (отвечать со сжа- Файл сценария входит в состав Compression Configuration
тым HTTP-содержимым). В этом случае ISA-сервер Tool for Microsoft Internet Security and Acceleration (ISA) Server
возвращает сжатое содержимое, если клиент запро- 2004 Service Pack 2 (SP2), который можно получить на сай-
сил компрессию данных от этого сетевого элемента. те Microsoft. Для настройки Internet Explorer на использова-
n Request compressed HTTP content from servers (за- ние HTTP 1.1 на вкладке «Advanced» окна «Internet Options»
прашивать сжатое HTTP-содержимое от серверов). выберите пункт «Use HTTP 1.1 through proxy connections».
В этом случае ISA-сервер запрашивает сжатое содер- Тут следует сделать небольшую поправку, отметив, что тра-
жимое от сетевых элементов. фик HTTPS не сжимается.

После настройки компрессии для сетевых элемен- Организовываем очередность


тов в диалоговом окне «Set Compression» нажмите «OK» Сжатие HTTP-контента позволяет существенно сэконо-
для его закрытия. мить пропускную способность канала. Однако пропускной

46
администрирование
способности на всех не хватает, в ре-
зультате может возникнуть весьма не- Смотрим в будущее n д о ба в л е н а з а щ и та от ата к т и п а
приятная ситуация, когда пользовате- В 2006 году вышла новая версия межсе- flooding.
ли заполняют канал, скачивая мульти- тевого экрана ISA 2006. Внешне она ма-
медийный контент, зачастую не имею- ло отличается от предыдущей. Однако Также, по заявлению создателей, те-
щий никакого отношения к бизнес-про- официальное описание продукта на сайте перь межсетевой экран Microsoft ISA Server
цессам (но разрешенный политика- Microsoft сообщает о следующих измене- 2006 Standard и Enterprise Edition доступен
ми безопасности). А в это время кри- ниях и улучшениях: в виде appliance (программно-аппаратных
тически важные для бизнеса прило- n улучшена возможность публикации решений).
жения не могут установить соедине- Outlook Web Access; Продукт уже продается, к тому же лю-
ние или работают слишком медленно. n д о б а в л е н м а с т е р п у б л и к а ц и и бой желающий может загрузить испыта-
Для борьбы с этим можно воспользо- Sahrepoint; тельную версию с сайта Microsoft [4] и свои-
ваться встроенным в ISA Server 2004 n добавлена поддержка Exchange 2007; ми глазами убедиться в том, насколько хо-
SP2 механизмом приоритезации па- n добавлен мастер подключения удален- роша или плоха новая версия межсетевого
кетов. ных офисов по VPN; экрана ISA 2006.
Конечно, следует сразу отметить,
что этот механизм несколько уступает данных при назначении приоритета n audio
службе QoS (Quality of Service), в час- первому пакету. Поэтому приоритет n application/x-tar
тности, ее реализации на активном се- первого пакета выставляется для боль- n x-world/x-vrml
тевом оборудовании. Приоритет паке- шой порции данных. n application/zip
тов – это установка глобальной поли- На вкладке «Content Types» (типы n application/x-gzip
тики HTTP. Приоритет применяется ко содержимого) вы можете указать, ка- n application/x-zip-compressed
всему трафику, проходящему через кой тип содержимого требует сжатия. n application/x-compress
ISA-сервер, а не только к тому, кото- У вас есть возможность указать, ка- n application/x-compressed
рый управляется специальным прави- кой тип будет исключен (остальные n application/x-spoon@@
лом. Приоритет пакетов устанавлива- включены) или какой тип включен (ос-
ется с помощью веб-фильтра DiffServ, тальные исключены). Далее выбери- На вкладке «Content Inspection»
который проверяет URL или домен те включаемые или исключаемые ти- (проверка содержимого) вы можете
и назначает пакетам приоритет с помо- пы содержимого. Рис. 3 является при- указать, проверять ли веб-фильтрам
щью битов данных DiffServ. В ISA-сер- мером настройки, при которой HTML- содержимое или нет. Для этого сжа-
вере можно создать приоритеты, биты документы будут сжиматься. Вы мо- тое содержимое будет подвержено де-
DiffServ которых совпадают с приори- жете создать новый тип в панели за- компрессии. После декомпрессии со-
тетами на корпоративных маршрутиза- дач политик брандмауэра на вкладке держимое хранится в кэше как несжа-
торах. Таким образом, можно настро- «Toolbox» (средства), как описано в по- тый текст. Если ISA-сервер получает
ить корпоративные маршрутизаторы мощи ISA-сервера. запрос на данные из кэша, он сжима-
на передачу пакетов соответственно ет их снова перед отправкой, что уве-
их приоритету (см. рис. 3). Замечание 2 личивает время ответа. По окончании
Фильтр обладает высоким приори- Далее перечислены типы данных, ко- настройки нажмите «Apply», чтобы из-
тетом и находится в вершине списка торые не могут быть эффективно сжа- менения вступили в силу.
веб-фильтров, поскольку этот фильтр ты, поскольку они уже представлены Итак, в результате несложных на-
должен знать реальный размер пос- с компрессией: строек мы увеличили эффективность
ланного запроса или ответа и должен n video использования сетевой инфраструк-
проверить данные, получаемые или пе- туры, настроив кэширование и сжатие
редаваемые ISA-сервером. контента, а также выставив приорети-
Не изменяйте приоритет по умолча- зацию пакетов.
нию и порядок настроек фильтра.
1. Бирюков А. Устанавливаем межсете-
Замечание 1 вой экран MS ISA Server 2004. //«Сис-
ISA-сервер не добавляет биты DiffServ темный администратор», №12, 2006 г. –
в заголовки, отличные от HTTP или С. 4-8.
HTTPS. ISA-сервер не может пере- 2. Бирюков А. Настраиваем удаленный
давать существующие биты DiffServ доступ к сети с помощью MS ISA 2004.
на трафик других протоколов. (Дан- //«Системный администратор», №1,
ная информация может быть удалена 2007 г. – С. 26-31.
из заголовка сессии.) 3. Русскоязычная документация и статьи
Для ответов из кэша приоритет по ISA Server – http://www.isadocs.ru.
первого пакета не устанавливается. 4. Испытательная версия ISA 2006 –
Установка приоритета пакета http://www.microsoft.com/technet/isa/
не учитывает размер первой порции Рисунок 3. Устанавливаем очередность downloads/2006.

№2, февраль 2007 47


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

Проводим мониторинг нагрузки


операционной системы Solaris

Сергей Косько
Вы установили своё новое приложение (например, СУБД) на сервере с операционной
системой Solaris. Сначала всё шло хорошо, пользователи были довольны, но со временем
появились жалобы, производительность работы значительно снизилась, и вы задумались
о модернизации оборудования. Не стоит этого делать наугад. Прежде чем принимать решение
о замене сервера, определите, каких именно ресурсов не хватает.

С
разу после развёртывания при- Предлагаемая методика известна мне по душе больше, чем стандарт-
ложения, как правило, прово- давно (её подробное описание приве- ные команды UNIX. Будем рассмат-
дятся измерения исходной ра- дено, например, в [1]) и в целом при- ривать по порядку сначала загруз-
бочей нагрузки. Впоследствии необ- менима к любому компьютеру, под уп- ку оперативной памяти, потом дис-
ходимо вести периодические измере- равлением любой универсальной опе- ков, сети и, наконец, процессоров. Та-
ния использования ресурсов системы: рационной системы. Тут мы рассмот- кой порядок объясняется тем, что не-
оперативной памяти, подсистемы дис- рим её упрощённый вариант для пред- хватка памяти может внести погреш-
кового ввода-вывода, сети и централь- варительной оценки загрузки серве- ность в определение нагрузки на дис-
ного процессора, чтобы выявлять «уз- ров под управлением операционной ки, а загрузка дисков или сети – в оп-
кие места», препятствующие произво- системы Solaris, с использованием ко- ределение загрузки процессора. В ка-
дительной работе системы. манд и скриптов, которые пришлись честве тестового сервера использу-

48
администрирование
ются SUN Fire v440 (4X1593МГцX8Гб) и операционная сис- манда «vmstat -p». Для версии 7 можно скачать команду
тема Solaris 8. «memstat» [2]. Вывод команды vmstat с опцией -p:

Мониторинг памяти # vmstat -p 2 5


При настройке оперативной памяти главная цель – избе-
жать её дефицита. Если запросы приложений к памяти пре-
вышают имеющиеся ресурсы, «рабочие наборы» (working
sets) выполняющихся процессов станут существенно мень-
ше, чем необходимо для комфортной работы, возникнет из-
быточная подкачка страниц оперативной памяти. По интен- Её достоинство в том, что кроме scan rate, мы можем ви-
сивности подкачки страниц судят о потребности в памяти. деть показатели page-in/page-out/page-frees по отдельнос-
Традиционно наличие подкачки страниц определяют с по- ти для executable/anonymous/filesystem страниц памяти. Рас-
мощью команды vmstat. Например, вывод команды vmstat смотрим пример:
при малой загрузке ОЗУ:
$ find / -name sdfsdfsd -print &
# vmstat 3 13552

Вывод команды vmstat, демонстрирующий активность


кеша файловой системы:

$ vmstat -p 1
Анализируя колонки sr (scan rate) и po (page out), пыта-
ются оценить интенсивность подкачки. Если значения в этих
колонках не сильно отклоняются от среднестатистических,
взятых за эталон благополучия значений (допустим, пускай
эталоном будет полное отсутствие подкачки: sr=0 и po=0),
можно считать, что проблемы подкачки нет. Еще одна ко-
манда – sar. Вывод команды sar при малой загрузке ОЗУ: До версии 7 операционной системы Solaris страни-
цы файлового кеша и страницы памяти, отображаемые
# sar -g 5 5 на swap, имели одинаковый приоритет, вследствие чего ак-
тивность дискового кеша вносила путаницу в потребности
в памяти. В версии 8 и выше эта проблема устранена. Ес-
ли в последних трёх колонках мы видим большие цифры,
то, возможно, пора переходить к проверке дисков (в дан-
ном случае работает команда find). А вот если присутству-
Сплошные нули в колонках не являются самоцелью, это ют большие значения в колонке api, apo, apf, то необходи-
скорее показатель избытка оперативной памяти. В нормаль- мо проверить запросы процессов к памяти системы. Вы-
но работающей системе всегда кто-то запрашивает допол- полним команду prstat с сортировкой по объёму виртуаль-
нительную память, кто-то её освобождает, пишет или чи- ной памяти:
тает, но если обычная нагрузка была 100, а стало 100 000,
это плохой знак. В операционной системе Solaris систе- $ prstat -a -s size
ма виртуальной памяти, кеш файловой системы и каталог
/tmp используют общий пул свободной оперативной памя-
ти, распределяемый динамически, вследствие чего колон-
ка free в выводе команды vmstat малоинформативна. Про-
верим, что происходит с файлом подкачки:

# /usr/sbin/swap -l
swapfile dev swaplo blocks free
/dev/dsk/c1t0d0s1 118,1 16 8389632 6532608

Вывод команды iostat при низких объёмах подкачки:

# iostat -zxnp 1

Мы видим, что подкачки практически нет. И на после- Вывод этой команды показывает процессы, отсорти-
док, в ОС Solaris (начиная с версии 8) есть чудесная ко- рованные по размеру используемой виртуальной памяти

№2, февраль 2007 49


администрирование
(а с ключем -s rss резидентной памяти), и суммарные пока- Проведём аналогичный тест для накопителей на гибких
затели по имени пользователя. Это даёт возможность оп- магнитных лентах. Получаются аналогичные результаты.
ределиться с дальнейшими поисками «виновного».
$ dd if=/dev/zero of=/dev/rmt/0 bs=1024k count=200000
Мониторинг дискового ввода-вывода

Следить за загрузкой дисков существенно проще. Про- Вывод команды iostat во время записи на магнитную
ведём несколько тестов. Например, с помощью пакета ленту:
iozone [3]. Откроем несколько терминальных сессий и за-
пустим команды. $ iostat -zxnp 1
В первой сессии:

$ time iozone -Ra


… Вывод команды sar во время записи на магнитную
real 30:29.2 ленту:
user 50.9
sys 6:40.9
$ sar -u 1 5
Как видно, большая часть времени в приложении рас-
ходуется на ожидание, а время, затраченное процессором,
тратится большей частью в режиме sys, а не user.
Во второй сессии выполним следующую команду – iostat,
получим вывод команды при большой нагрузке на файло-
вую систему:

$ iostat -zxnp 1 Если с точки зрения памяти или процессоров у нас всё
в порядке, тогда нам осталось рассмотреть сеть и про-
цессор.

Мониторинг сети
Команда показывает ввод-вывод по разделам дисков. Если Начнём, как всегда, с теста. Снова создадим несколько
добавить к этой команде ключ -C – «iostat ‑zxnpC 1», к пока- сессий: в одной запускаем тест сети. В другой – команду
занной статистике прибавятся агрегированные показатели «sar ‑u 1 5», в третьей – команду «netstat».
по контроллерам. Конкретные цифры, конечно же, строго
индивидуальны, но если объёмы (kr/s, kw/s) или время опе- $ /usr/sbin/spray datatarget -c 100000000

рации ввода-вывода (asvc_t/actv) значительно выше обыч-
ного, это говорит о повышенной нагрузке на систему диско- Вывод команды sar при работе приложения, нагружаю-
вого ввода-вывода. Ещё один важный параметр %b – сте- щего сеть:
пень загруженности диска (в процентах от времени интер-
вала измерения). Часто он даже важнее, чем значения объ- $ sar -u 1 5
ёмов передаваемых данных kr/s и kw/s, поскольку дисковые
операции могут отличаться по размеру фрагмента (боль-
шие и маленькие), кратности (кратные размеру блока и про-
извольной величины) и способу доступа (с последователь-
ным и произвольным доступом). В отдельной сессии рас-
смотрим, как работает во время теста процессор системы.
Запустим команду «sar -u 1 5». Мы можем наблюдать по-
вышенное значение в колонках %sys и %wio, которое слу- Вывод команды netstat – количество пакетов, переда-
жит одним из признаков присутствия нагрузки ввода-вы- ваемых по сети:
вода и иллюстрирует возможную погрешность, которая мо-
жет возникнуть, если мы начнём анализ нагрузки с наблю- $ netstat -I ce0 1
дения за процессором.
Вывод команды sar во время операций ввода-вывода:

$ sar -u 1 5

Команда netstat показывает количество пакетов, прини-


маемых и передаваемых сетевым интерфейсом. По результа-
там вывода команды «sar -u» мы видим, что при данном тесте
создаётся нагрузка на процессор (колонки %usr и %sys).

50
администрирование
Современные Ethernet-адаптеры подключаются к ком-
мутаторам в режиме full-duplex, по этой причине воз-
никновение ошибок и коллизий маловероятно и являет-
ся не столько индикатором избыточной нагрузки на сеть,
сколько показателем аппаратных проблем. Поэтому более
интересен объём трафика в килобайтах в секунду. Можно Еще одним интересным показателем в листинге выво-
воспользоваться утилитой ifstat [4]. да команды vmstat является первая колонка – r под заго-
Вывод команды ifstat – количество килобайт, переда- ловком procs, которая показывает количество процессов,
ваемых по сети: готовых к выполнению и ожидающих, когда для них ос-
вободится процессор. Если при значении idl=0 это число
$ ifstat -t 1 значительно больше, чем число процессоров, то это гово-
рит о нехватке ресурсов процессора, особенно если оче-
редь ещё и растёт.
Если в системе несколько процесоров, посмотреть на-
грузку по процессорам поможет команда mpstat, посмот-
рим некоторую произвольную нагрузку:

Если сетевая подсистема не является «бутылочным гор- $ mpstat 1


лышком», перейдём к проверке загрузки процессора.

Мониторинг загрузки процессора


Мониторинг центрального процессора является последним
этапом. Запустим какое-нибудь «CPU-bound»-приложение Значение %ildle во всех приведенных листингах говорит
и команду «sar -u 1 5». только о том, что процессоры системы простаивают. А вот
Вывод команды sar при работе приложения, нагружаю- значение этого параметра близкое к нулю – не обязательно
щего процессор: катастрофа. Возможно, ваш сервер – это файловый сервер,
и, несмотря на то что значение %wio большое, вы довольны
$ sar -u 1 5 скоростью файловых операций, или ваше приложение, пос-
лав запрос по сети, находится в состоянии бесконечного цик-
ла ожидания ответа удалённой системы, и вас это устраива-
ет. Желательно иметь некоторый запас (но и не слишком из-
быточный), например 20%, на случай пиковых нагрузок.
Теперь найдём самые затратные с точки зрения процес-
сора приложения. Сделать это можно командой prstat, пос-
Колонки %usr и %sys показывают в сумме процент мотрим сортировку по времени CPU:
времени, в течение которого процессор был занят. Ко-
лонки %wio и %idle показывают в сумме процент вре- $ prstat
мени, в течение которого процессор простаивал. Час-
то ошибочно к суммарной загрузке процессора прибав-
ляют %wio, это неправильно. В случае большого процен-
та %wio при запуске ресурсоёмкого приложения с точки
зрения процессора эти такты будут отдаваться ему. Рас-
смотрим случай, когда присутствуют два вида нагрузки:
на диск и на процессор.
Воспользуемся командой vmstat, приложение исполь-
зует диск и процессор:

$ vmstat 1

Последние три колонки показывают нагрузку на про- В команде prstat существуют также опции «-v» или «‑m»
цессор usr, sys, idl (%wio + %idle). Вот что показывает одно- для более подробного вывода (см. рис. 1).
временно запущенная команда «sar -u», нагрузка на диск Можно, конечно, воспользоваться и стандартной коман-
и процессор: дой ps (SunOS/BSD compatibility command):

$ sar –u 1 5 $ /usr/ucb/ps -aux|head -5

№2, февраль 2007 51


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

Сделаем работу удобнее


Чтобы не набирать слишком большое количество команд,
воспользуемся некоторыми свободно распространяемыми
утилитами. Вместо команды prstat можно запустить коман-
ду top [5]. Использование top позволяет на одном экране ви-
деть как общую загрузку процессора %usr, %sys, %wio, %idle,
так и периодически обновляющийся список процессов, от-
сортированных по различным критериям, например, по на-
грузке на процессор. Если имеется Х-сервер, можно восполь-
зоваться утилитой xcpustate [6], которая отображает инфор-
мацию по загрузке процессора и дисковых накопителей.
Рисунок 1. Команда prstat, детальный вывод
# !/bin/sh

if [ -z "$DISPLAY" ] Внесём сбор статистики в таблицу crontab.


then
who_host=`who am i |awk ' { print $6 }' | sed 's/[(|)]//g'`
DISPLAY=$who_host:0.0 ;export DISPLAY
$ su – sys
$ EDITOR=vi;export EDITOR
fi $ crontab –e
/usr/local/bin/xcpustate -wait -disk ↵ #ident "@(#)sys 1.5 92/07/14 SMI" /* SVr4.0 1.2 */
-display $DISPLAY -geometry 200x760 #
# The sys crontab should be used to do performance
Вывод этих команд приведен на рис. 2. Дополнительные # collection. See cron and performance manual pages
# for details on startup.
сведения о системе Solaris вы можете найти на сайте [2], кро- #
ме того, в разделе сайта «Download» вы найдёте много по- # 0 * * * 0-6 /usr/lib/sa/sa1
# 20,40 8-17 * * 1-5 /usr/lib/sa/sa1
лезных программ, которые помогут получить более подроб- # 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 –A
ную информацию о процессах, которые происходят в систе-
ме, и позволят детальнее определить источник проблем. Раскомментируйте и при необходимости отредактируй-
те две последние строки. Например: «Собирать статисти-
Автоматизируем процесс ку круглосуточно с интервалом в 20 минут и формировать
Наконец, чтобы осуществлять постоянный мониторинг, вос- текстовый отчёт перед полуночью».
пользуемся помощью скриптов sa1 и sa2 из пакета «system
activity report package», которые предназначены для запус- 0,20,40 * * * * /usr/lib/sa/sa1
55 23 * * * /usr/lib/sa/sa2 -s 00:00 -e 23:59 -i 1200 –A
ка в качестве заданий для демона cron.
Эти скрипты создают двоичные
файлы статистики и текстовые фай-
лы отчётов, которые хранятся в ката-
логе /var/adm/sa в течение недели (по
умолчанию). В дальнейшем их можно
будет использовать для поиска перио-
дов максимальной и минимальной за-
грузки и как отправную точку для бо-
лее подробного анализа.

1. ht tp://w w w.sun.com/blueprints/0 602 /


816-7191-10.pdf – Configuring and Tuning
Databases on the Solaris Platform, by Allan
N. Packer, (c) 2002.
2. http://www.solarisinternals.com/si/index.
php – Solaris Internals by Jim Mauro,
Richard McDougall and Brendan Gregg.
3. www.iozone.org – утилита iozone.
4. http://gael.roualland.free.fr/ifstat – утилита
ifstat.
5. http://www.unixtop.org/index.shtml – ути-
лита top.
6. http://www.cs.toronto.edu/~jdd – утилита
Рисунок 2. Рабочий стол CDE, команды top и xcpustate xcpustate.

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

Нововведения
в Solaris 10:
на что обратить
внимание админу?

Алексей Коробкин
Современная версия ОС Solaris 10 содержит в себе большое количество нововведений
и уникальных технологий, что даже бывалые администраторы не успевают уследить
за всеми появившимися возможностями.

П
олный список нововведений вы Зоны слишком дорогое, поддержка мно-
можете посмотреть по ссыл- Классическое IT-правило «один сер- жества серверов тоже недешевая,
ке [4], а я попытаюсь нагляд- вис – один сервер» практически ни- да и чересчур много систем прихо-
но показать основные преимущества когда не удается реализовать из‑за не- дится администрировать сразу – не-
Solaris нового поколения. хватки средств и ресурсов. «Железо» возможно уследить ни за обновлени-

54
администрирование
ями, ни за пользователями. Стоимость IT-инфраструктуры Попробуем самостоятельно создать такую конфигу-
с каждым новым сервером возрастает в геометрической рацию:
прогрессии. Чтобы всё-таки приблизиться к идеалу и уп-
ростить работу администраторов, в Solaris была реализо- # zonecfg -z web
вана концепция контейнеров (containers), иначе называе- web: No such zone configured
мых зонами (zones). Use 'create' to begin configuring a new zone.

Зона похожа на Jail во FreeBSD, но имеет больше сте- zonecfg:web> create


пеней свободы. Приложения, помещенные в различные зо- zonecfg:web> set zonepath=/z/web
zonecfg:web> set autoboot=true
ны, полностью изолированы друг от друга и практически zonecfg:web> add net
независимы от аппаратного обеспечения. У каждой зоны zonecfg:web:net> set physical=pcn0
zonecfg:web:net> set address=10.0.0.101
может быть свой набор установленных программ, свои се- zonecfg:web:net> end
тевые адреса, свои объекты файловой системы, свой спи- zonecfg:web> exit
сок пользователей, и в том числе свой суперпользователь
– root. Ядро системы – единственное, что есть неизменно По шагам: мы создали зону, путь к её файлам указали
общего у всех установленных зон. Таким образом, каж- как /z/web, включили автозагрузку зоны при старте серве-
дая зона работает как независимая операционная систе- ра и назначили ей IP-адрес 10.0.0.101. Этот IP-адрес в даль-
ма, что дает нам возможность просто и безопасно созда- нейшем автоматически появится как дополнительный логи-
вать виртуальные серверы, помещая приложения в соот- ческий интерфейс физического сетевого интерфейса pcn0,
ветствующие зоны. нам ничего настраивать не надо.
Есть много способов практического применения зон. Посмотрим весь список настроек зоны:
Можно использовать зоны для изоляции приложений, риск
атаки которых достаточно велик – в таком случае взломщик # zonecfg -z web info
будет ограничен пределами зоны и не сможет нанести боль- zonepath: /z/web
шого вреда. Или, к примеру, если вы поддерживаете серь- autoboot: true
pool:
езный веб-сервер, над различными сайтами которого тру- inherit-pkg-dir:
дятся разные группы дизайнеров, вы можете каждой груп- dir: /lib
inherit-pkg-dir:
пе предоставить свою среду, свои приложения и даже дать dir: /platform
им полный контроль над локальным веб-сервером или са- inherit-pkg-dir:
мой зоной. Если же с вашим сервером работают програм- dir: /sbin
inherit-pkg-dir:
мисты, то можно сгенерировать зону, максимально подоб- dir: /usr
ную production-окружению, и дать им возможность как сле- net:
address: 10.0.0.101
дует протестировать свои приложения. Некоторые веб-ад-
physical: pcn0
министраторы в зону помещают honeypot-ловушки и конт-
ролируют их активность снаружи – зона изнутри не может Кроме той информации, что мы ввели вручную, в экс-
узнать, кто и как за ней наблюдает. порте настроек присутствуют блоки:
Хорошее решениее – разнести основные службы сер-
вера по различным зонам. Можно будет перезагружать зо- inherit-pkg-dir:
dir: /путь/к/каталогу
ны сервера по отдельности, не мешая остальным прило-
жениям, и обеспечить их раздельное резервное копирова- Так обозначается подключение каталогов /lib, /platform, /sbin,
ние – в таком случае вы сможете быстро восстановить зо- /usr глобальной зоны внутрь локальной – они будут подмон-
ну на ближайшем доступном сервере, если основной вый- тированы при помощи loopback file system только для чтения.
дет из строя. Кроме того, упрощаются миграция и обновле- Благодаря этому большинство системных файлов не пот-
ние приложений в зонах. Кластерный комплекс Sun Cluster, ребуется устанавливать еще раз, так что установка зоны
доступный бесплатно на sun.com, позволяет организовать не займёт много места.
и зоны высокой доступности – резервная зона поднимет- При желании мы можем отказаться от этих каталогов,
ся мгновенно (загрузка зоны занимает секунды), если про- примонтировать другие или не монтировать вообще ниче-
изойдёт сбой основной зоны. Впрочем, благодаря просто- го. Тогда файловая структура локальной зоны будет пол-
те настройки такую отказоустойчивость можно реализо- ностью отличаться от глобальной. Кроме того, мы можем
вать и самостоятельно с помощью скриптов. Давайте луч- примонтировать какую-то файловую систему в режиме
ше поближе взглянем на сами зоны. записи и обращаться к ней из других зон в режиме чте-
Рассмотрим простую схему: операционная система ния. Это поможет организовать, например, обмен данны-
плюс одна зона. Считается, что сама операционная систе- ми между зонами, но мы рискуем ухудшить безопасность
ма тоже находится в зоне, и эта зона называется глобаль- системы. По умолчанию между зонами нет никаких свя-
ной (global zone). Все остальные зоны назовем локальны- зей, кроме возможности связаться по сети. Глобальная
ми, хотя в английской терминологии они называются «не- зона, как исключение, может обращаться ко всем файло-
глобальные» (non-global). вым системам всех зон, что позволяет незаметно прово-
Пусть наша глобальная зона имеет адрес 10.0.0.1. Внут- дить аудит файлов локальных зон, выполнять резервное
ри у неё находится локальная зона «web» с веб-сервером копирование, использовать системы обнаружения втор-
внутри и адресом 10.0.0.101. жения (IDS), и многое другое.

№2, февраль 2007 55


администрирование
Посмотрим, в каком состоянии наша зона. # zoneadm -z web boot

# zoneadm list -cv Если ошибок нет, то зона запустится. Посмотрим со-
ID NAME STATUS PATH стояние:
0 global running /
- web configured /z/web # zoneadm list -cv
Зона «сконфигурирована», но операционная система ID NAME STATUS PATH
туда не установлена. Выполним установку: 0 global running /
1 web running /z/web

# zoneadm -z web install


/z/web must not be group readable. Запустилась? Попингуем:
/z/web must not be group executable.
/z/web must not be world readable. # ping 10.0.0.101
/z/web must not be world executable.
could not verify zonepath /z/web because of the above errors. 10.0.0.101 is alive
zoneadm: zone web failed to verify

Попробуем зайти на её консоль (для выхода из консо-


Ошибка. По требованию Solaris, путь к корню зоны дол- ли нажмите тильду и точку (~.)):
жен иметь атрибуты доступа 0700 и владельца root. Испра-
вим ошибку и продолжим: # zlogin web
[Connected to zone 'web' pts/2]
inherit-pkg-dir: Sun Microsystems Inc. SunOS 5.10 Generic January 2005
dir: /путь/к/каталогу

Preparing to install zone <web>. Мы сейчас в зоне web. Посмотрим:


Creating list of files to copy from the global zone.
Copying <2422> files to the zone.
Initializing zone product registry. # zonename
Determining zone package initialization order.
Preparing to initialize <974> packages on the zone. web
Initializing package <185> of <974>: percent complete: 18%
... # uname -a
SunOS web 5.10 Generic_118855-33 i86pc i386 i86pc
Solaris начинает копировать файлы внутрь зоны. Он ин-
сталлирует все пакеты, которые установлены в глобальной # psrinfo -v
зоне, и настраивает конфигурационные файлы в каталоге Status of virtual processor 0 as of: 12/26/2006 22:39:19
/etc локальной зоны. Локальная зона никак не привязана on-line since 12/26/2006 05:53:50.
The i386 processor operates at 3000 MHz,
к настройкам глобальной зоны, в том числе к сервису разре- and has an i387 compatible floating point processor.
шения имен, поэтому она может иметь совершенно произ- Status of virtual processor 1 as of: 12/26/2006 22:39:19
on-line since 12/26/2006 05:53:57.
вольную конфигурацию. Например, глобальная зона может The i386 processor operates at 3000 MHz,
пользоваться DNS и хранить пользователей в /etc/passwd, and has an i387 compatible floating point processor.
а локальная – обращаться только в LDAP или NIS+ за поль-
зователями и именами компьютеров. Изучим список процессов зоны:
Тем временем копирование и установка пакетов закон-
чились. # ps -e -o user,pid,ppid,time,fname

Initialized <974> packages on zone. UID PID PPID TIME CMD


Zone <web> is initialized. root 4122 4122 0:00 zsched
The file </z/web/root/var/sadm/system/logs/install_log> contains a root 4135 4122 0:26 svc.startd
log of the zone installation. root 4133 4122 0:01 init
root 4774 4122 0:00 sh
root 4137 4122 2:01 svc.configd
На самом деле копировались только вспомогательные root 4779 4774 0:00 ps
файлы в каталоги /etc и /var. Дерево каталогов /usr, как мы daemon 4564 4122 0:00 kcfd
знаем, подключено из глобальной зоны, и ничего туда ко- root 4565 4122 0:00 nscd
root 4691 4686 0:00 sysidnet
пировать не надо. Так мы, во-первых, экономим место, а во- root 4582 4122 0:02 snmpd
вторых, при установке обновлений к пакетам ОС мы обнов- root 4685 4122 0:00 cron
root 4720 4691 0:00 sysidnet
ляем все зоны сразу.
Посмотрим состояние зоны:
Интересно, что родительским у большинства процессов
# zoneadm list -cv является процесс zsched c PID=4122, а PID процесса init вов-
ID NAME STATUS PATH се не равен 1. Это значит, что зона действительно запуще-
0 global running / на, и мы находимся в её изолированной виртуальной сре-
- web installed /z/web
де. Ура, вот настоящее сисадминское удовольствие: родил-
Теперь зона в состоянии installed. Попробуем её запус- ся новый сервер, пусть даже виртуальный. Посчитайте-ка,
тить: нам на это потребовалось меньше десяти команд, включая

56
администрирование
настройку зоны в zonecfg. А чем меньше команд, тем мень- Вернемся к Apache и разрешим ему работать. Сна-
ше вероятность ошибиться. чала дадим ему какой-нибудь файл конфигурации, а по-
Посмотрим, какие файловые системы у нас подклю- том включим службу. Название службы, кстати, мож-
чены: но указывать и целиком, как svc:/network/http:apache2,
и частями.
# df -n
/ : zfs
# cp /etc/apache2/httpd.conf-example ↵
/etc/apache2/httpd.conf
/dev : lofs
# svcadm enable http
/lib : lofs
/platform : lofs
/sbin : lofs Нет необходимости перебирать ссылки в /etc/rc?.d,
/usr : lofs
/proc : proc
как это приходилось делать раньше – сервис просто за-
... пустился и работает. И будет впредь запускаться автома-
тически при загрузке зоны.
Про удивительную новую файловую систему ZFS я
расскажу в следующей статье, а пока обратите внима- # pgrep -fl http
ние на файловые системы, которые значатся как lofs. 7797 /usr/apache2/bin/httpd -k start
Это файловые системы глобальной зоны, доступные толь- 7801 /usr/apache2/bin/httpd -k start
7799 /usr/apache2/bin/httpd -k start
ко для чтения. 7800 /usr/apache2/bin/httpd -k start
7795 /usr/apache2/bin/httpd -k start
# touch /usr/test 7798 /usr/apache2/bin/httpd -k start

touch: /usr/test cannot create


А теперь посмотрим сразу две интересные особеннос-
# mount | grep /usr
ти SMF и нового Solaris.
/usr on /usr read only/setuid/nodevices/nosub/dev=840000 Как известно, Apache стартует обычно с правами root,
открывает порт 80 и потом свои дочерние процессы за-
Как видим, достаточно безопасная конфигурация. Да- пускает с правами непривилегированного пользователя
вайте попробуем запустить веб-сервер Apache внутри зо- (webservd в Solaris). Опираясь на принцип «defence in depth»,
ны. Я пропущу настройки сетевого интерфейса и DNS – мы можем дополнительно защитить систему, изначально
здесь всё делается так же, как если бы это был свежеуста- запуская Apache с правами webservd. Возникает вопрос:
новленный Solaris. как же он откроет привилегированный порт 80?
Фокус в том, что в новом Solaris права root – не цельное
# svcs http понятие. По традиции, если в UNIX нужно выполнить при-
STATE STIME FMRI вилегированную команду, ядро проверяет, равняется ли uid
disabled 22:38:28 svc:/network/http:apache2 пользователя нулю. То есть имеет ли он права root. В Solaris
эта идея изменилась, когда потребовалось более глубоко
SMF и частичные привилегии реализовать систему ролей и профилей.
Команда, которую мы сейчас выполнили, – еще одно нов- Привилегии root разбиты на несколько десятков базо-
шество Solaris. Все службы, которые запускаются в систе- вых прав, которые можно предоставлять раздельно. То есть
ме и призваны работать постоянно, теперь управляются мы можем дать пользователю или процессу право откры-
при помощи Service Management Facility (SMF). SMF поз- вать привилегированный порт, не давая ему при этом все
воляет указывать зависимости между службами, ускорять права root. Или, скажем, мы можем дать право управлять
загрузку системы за счёт параллельного запуска незави- службами. Права root растащили по частям – в релизе
симых друг от друга служб, автоматически перезапускать Solaris 10 6/06 таких базовых привилегий было 48, в ноябрь-
службы в процессе работы сервера вместе с зависимостя- ском 11/06 их уже больше шестидесяти. Удобство состоит
ми и сильно упрощает управление службами с точки зре- в том, что мы можем указать нужные привилегии в описа-
ния администратора. нии службы в SMF. Если перед включением веб-сервера
Например, мы хотим узнать, все ли службы нормально Apache настроить его SMF-манифест так, чтобы там было
запустились после старта сервера. Смотрим: указано базовое право net_privaddr, Apache сможет само-
стоятельно открыть 80-й порт, не имея других суперполь-
# svcs -xv зовательских привилегий. Как это сделать, подробно опи-
svc:/application/print/server:default (LP print server) сано в BluePrints, [1].
State: disabled since Tue Dec 26 16:55:08 2006 Вот, например, уже настроенный Apache с ограни-
Reason: Disabled by an administrator.
See: http://sun.com/msg/SMF-8000-05 ченными привилегиями. Посмотрим базовые права про-
See: man -M /usr/share/man -s 1M lpsched цесса:
Impact: 2 dependent services are not running:
svc:/application/print/rfc1179:default
# ppriv -S `pgrep -o http`
svc:/application/print/ipp-listener:default
27400: /usr/apache2/bin/httpd -k start
Мы видим, что принт-сервер не запустился, и из-за это- flags = <none>
E: net_privaddr,proc_exec,proc_fork
го не запустились подсистемы печати BSD и IPP.

№2, февраль 2007 57


администрирование
I: net_privaddr,proc_exec,proc_fork Если у нас есть несколько сетевых интерфейсов, под-
P: net_privaddr,proc_exec,proc_fork ключенных к одной сети, мы можем объединить их в груп-
L: zone
пу и указать, что каждый является резервным для осталь-
ных. Таким образом, если Solaris определяет отказ одного
Буква E отображает список действующих (effective) ба- из сетевых соединений, он переносит все адреса с интер-
зовых прав процесса. Кроме права net_privaddr, нужного фейса, на котором определен отказ, на другой интерфейс
для открытия порта, у сервера есть права запускать дру- группы. При этом установленные сетевые подключения от
гие процессы и потоки. Такие права, кстати, целесообраз- клиентов сервера тоже переносятся, то есть Solaris пыта-
но отбирать у процессов, которые рискуют быть взломан- ется их сохранить.
ными, чтобы злоумышленник не смог ничего лишнего за- Как это работает? Через определенные промежутки
пустить. времени каждый интерфейс рассылает мультикастовые за-
Итого, мы не только изолировали приложение, мы ещё просы, проверяя, работает ли сетевое подключение. Под-
и защитили его дополнительно. Посмотрим теперь на про- разумевается, что в одной с сервером сети есть еще кто-
изводительность. Как узнать, насколько наша зона на- нибудь, кто на эти запросы ответит. Если на одном из ин-
гружает сервер? Команда prstat с новым ключом -Z пока- терфейсов ответов нет уже 10 секунд (значение по умол-
жет, кроме обычного списка процессов, табличку актив- чанию для IPMP), сервер создает логические интерфейсы
ности зон: с адресами отказавшего интерфейса на работающем ин-
терфейсе. Если отключившийся интерфейс оживает, сер-
ZONEID NPROC SIZE RSS MEMORY TIME CPU ZONE
0 44 322M 178M 37% 0:10:32 0.5% global вер через 10 секунд переносит адреса обратно.
4 42 317M 154M 32% 0:08:34 0.5% web При планировании включения новых зон принимайте
2 23 237M 157M 15% 0:28:34 0.0% jabber во внимание нагрузку на сетевые интерфейсы и распреде-
1 24 318M 156M 15% 0:23:12 0.0% mysql
3 24 84M 53M 5.2% 0:05:43 0.0% dspam ляйте трафик между ними. Кроме того, поскольку в совре-
менном Solaris TCP/IP-стек был полностью переписан, те-
Предположим, что у нас есть нестабильное приложение перь низкоуровневая обработка сетевой нагрузки – преры-
на отдельном сервере, которое иногда начинает загружать ваний от сетевой карты в том числе – распределяется меж-
CPU на все 100%. Неужели мы просто перенесем это при- ду всеми процессорами, а не отдается нулевому процессо-
ложение в зону и дадим ему время от времени валить наш ру, как это сделано в большинстве ОС. Если ваш сервер об-
сервер своей неконтролируемой активностью? А вот и нет. рабатывает огромное количество пакетов в секунду, имеет
Кроме обычного распределения ресурсов по проектам, ко- смысл изменить это поведение. Например, можно убрать
торое всегда было в Solaris, теперь есть дополнительные обработку прерываний с первых пяти процессоров:
средства ограничения и резервации ресурсов специально
для зон. Например, можно выделить зоне только несколь- # psradm -i 0 1 2 3 4
ко процессоров системы. Если, скажем, у вас сервер T2000
с 32-разрядными ядрами и вы хотите запустить шесть ак- Теперь эти процессоры заняты только исполнением
тивных приложений в шести зонах, то целесообразно выде- приложений.
лить им по 4 ядра на зону и оставить 8 ядер основной сис-
теме. Как можно эффективно распределять ресурсы, пос- Заключение
мотрите на BigAdmin, [2], или в BluePrints, [3]. Мы вкратце посмотрели на зоны, привилегии процессов
Если у вас не так много свободы в манипулировании ре- и управление службами. За кадром остались файловая
сурсами, то при консолидации серверов и переносе прило- система ZFS, DTrace, средства автоматического поиска
жений в зоны важно заранее представлять себе планируе- ошибок и самовосстановления ОС, BrandZ – технология за-
мую нагрузку и не помещать на один сервер два приложе- пуска приложений Linux в зонах, и многое другое [4]. Если
ния, требовательные к одному и тому же ресурсу. Желатель- вы еще не пробовали установить Solaris 10, то обязатель-
но брать такие пары, в которых, например, одно приложе- но попробуйте. Solaris, как и большинство продуктов Sun,
ние активно использует CPU и не использует ввод-вывод, теперь можно скачать бесплатно с sun.com и использовать
а второе – наоборот. Тогда выигрыш в производительнос- даже для коммерческих целей. А на opensolaris.ru вы всег-
ти и стоимости будет существенно больше. да найдете поддержку со стороны российского общества
пользователей Solaris.
IP Multipathing
Хорошо, скажете вы, вот мои сервисы теперь собраны в зо- 1. BluePrints, Limiting Service Privileges in the Solaris 10 Operating
ны, защищены, наделены нужными ресурсами. И что же, System – http://www.sun.com/blueprints/0505/819-2680.pdf.
теперь у меня образовалась единая точка отказа – сете- 2. BigAdmin, Solaris Containers: Consolidating Servers and
вое подключение? Действительно, это важная проблема. Applications – http://www.sun.com/software/solaris/howtoguides/
К счастью, в современных серверах редко бывает всего containersLowRes.jsp.
один сетевой интерфейс. Если у вас их несколько, вы мо- 3. BluePrints, Application And Database Server Consolidation On
жете воспользоваться еще одной особенностью Solaris – Sun Fire X4600 Server Solaris Containers – http://www.sun.com/
IP Multipathing (IPMP). IPMP появился еще в 8-й версии, blueprints/1006/820-0040.pdf.
к 10‑й его возможности сильно возросли, но тем не менее 4. Sun.com, What’s new in Solaris 10 – http://www.sun.com/software/
я не видел, чтобы его активно использовали. solaris/whats_new.jsp.

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

Обзор серверного дистрибутива tinysofa

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

Дистрибутив tinysofa Основой первых версий этого дис- Enterprise Linux (включая ядро и ра-
Ц е л ь а в с т р а л и й с к о г о п р о е к т а трибутива служил коммерческий дис- бочее пространство), поэтому при от-
tinysofa (http://www.tinysofa.org) – со- трибутив Trustix Secure Linux, кото- сутствии в репозитарии tinysofa необ-
здание быстрой, надежной, стабиль- рый, в свою очередь, базировался ходимых пакетов их всегда можно бу-
ной и безопасной операционной систе- на Red Hat. В середине октября вы- дет взять с RHEL. Проблем с их уста-
мы, которую можно применять на сер- шел релиз tinysofa classic server 2.0 новкой не будет. Все пакеты, входящие
верах уровня предприятия, которая ос- Update 6 (Ceara), о котором и будет в состав дистрибутива, собраны с i586
тавалась бы в течение своего жизнен- идти речь далее. Второй релиз также оптимизацией, доступна и x86_64-вер-
ного цикла свободной (As in beer). При- основан на Trustix 2.1 и Fedora Core. сия. Для работы с пакетами использу-
чем цели проекта, можно сказать, гло- В частности, набор пакетов аналоги- ется APT, с помощью которого можно
бальные – стать де-факто серверным чен Trustix. Хотя есть и изменения, так легко и просто устанавливать прило-
дистрибутивом Linux, заполнив нишу как некоторые идеи взяты с дистри- жения и исправления в безопасности.
свободных решений, предназначен- бутивов SUSE и Conectiva. Дистрибу- Начиная со второй версии в дистри-
ных для этой цели. тив полностью совместим с Red Hat бутиве дополнительно к APT для ра-

60
администрирование
боты с пакетами также используется
и SmartPM. Вокруг дистрибутива об- Преимущества и недостатки циальные группы выпускают критические
разовалось большое комьюнити, чле- в использовании «обычного» обновления, упрощая поддержку систе-
ны которого составляют группу под- дистрибутива для сервера мы в самом актуальном состоянии. Неко-
держки пользователей tinysofa и дист- Первый вариант, который приходит в го- торые коммерческие приложения доступ-
рибьюторов пакетов. лову при попытке выбрать систему для ус- ны в скомпилированном виде, для наибо-
Безопасность является для tinysofa тановки на сервер, – использовать обыч- лее популярных дистрибутивов.
приоритетом номер один. Перед выхо- ный дистрибутив вроде ALTLinux, ASP Linux, В то же время есть и минусы. Дистри-
дом дистрибутив тщательно тестирует- SUSE или что-то из RedHat/Fedora, в ко- бутивы широкого применения собирают-
ся на огромном количестве критичес- тором оставить только самые необходи- ся не с самыми оптимальными для серве-
ких задач. В конфигурации по умолча- мые пакеты. ра параметрами. И, как правило, после ус-
нию стартует всего один сетевой сер- Преимущества: использование одного тановки, даже в самой минимальной кон-
вис – Postfix, привязанный к интерфей- дистрибутива для сервера и клиентов зна- фигурации, содержат большое количество
су 127.0.0.1. Решение о запуске осталь- чительно упрощает поддержку. В репози- лишних пакетов. Кроме того, в таких дис-
ных администратор принимает само- тариях многих популярных решений можно трибутивах установленные сервисы стар-
стоятельно после их настройки, на- найти готовые пакеты на все случаи жиз- туют сразу же после инсталляции, с пара-
чальные значения в конфигурацион- ни, которые легко устанавливаются. Спе- метрами по умолчанию.
ных файлах этих сервисов также вы-
браны с учетом максимальной защи- ря на то, что на сайте DistroWatch.com По умолчанию устанавливает-
щенности. в списке поддерживаемых файло- ся и драйвер экспорта блочных уст-
В текущем релизе использова- вых систем были указаны только ext2 ройств DRBD 0.7.14. И пакет UCARP 1.1
но ядро 2.6.16 с поддержкой SELinux и ext3, при форматировании можно (Common Address Redundancy Protocol),
и grsecurity, переработанная PAM-ау- также указать ReiserFS, VFAT, а также использование которого позволяет ор-
тентификация, допускающая настрой- Soft-RAID. Путаница может возникнуть ганизовать совместное использова-
ку контроля доступа в рамках всей только при указании размера разде- ние IP между несколькими сервера-
системы. В компиляторе gcc 3.4.3 ис- ла. Доступны три варианта: Fixed size, ми в локальной сети, что может при-
пользована система защиты от «сры- Fill maximum size on MB и Fill all aval годиться для балансировки нагруз-
ва» стека («stack smashing»), разрабо- table space. ки (IP одновременно используют все
танная в корпорации IBM. После создания и форматирова- сервера) или для создания отказоус-
ния разделов – установка загрузчика тойчивых систем.
Установка сервера на выбор – GRUB или LILO. Есть и wireless-tools, Squid, базы
tinysofa Этап настройки сети стандартен. данных MySQL 4.1.21 и PostgreSQL
Дистрибутив прост в установке. Если Выбираем сетевой интерфейс, указы- 7.4.13. Для настройки PPPoE-соеди-
вы сталкивались с ранними версиями ваем IP-адрес, сетевую маску, адреса нения в комплект включен RP-PPPoE,
Red Hat или Trustix, то не найдете ниче- DNS-серверов и автоматическую ак- с помощью которого это можно проде-
го нового. Образ диска, который мож- тивацию при загрузке. лать за пару минут. Достаточно ввес-
но получить на сайте проекта, по раз- Далее – настройка под держи- ти adsl-setup (в новых версиях паке-
меру небольшой – 350 Мб. ваемых вариантов ау тентифика- та pppoe-setup) и ответить на все воп-
Весь процесс установки прохо- ции. По умолчанию включены толь- росы. Всего в дистрибутиве доступно
дит в псевдографической среде. Хотя ко Use Shadow Password и Enable MD5 604 пакета.
здесь нет красоты, какой могут пох- password. Здесь же можно добавить Как говорилось, по умолчанию за-
вастаться современные дистрибути- поддержку NIS, LDAP и Kerberos, ак- пускается только один сервер Postfix,
вы вроде SUSE и Mandriva, зато с фун- тивировав опцию и заполнив предла- после установки пакетов администра-
кциональностью все в порядке. Интер- гаемые параметры. тору предлагается активировать еще
фейс англоязычный, других вариантов В небольшом по размеру дистри- и сервер SSH. Все остальное доводит-
не предусмотрено. Пользователь, ус- бутиве выбирать пакеты легко, тем ся на уже рабочей системе.
танавливающий tinysofa, будет после- более здесь нет групп и подгрупп, Без сомнения, дистрибутивы вро-
довательно проведен по всем этапам, в которых можно запутаться. Есть де tinysofa classic server ориентирова-
зная необходимые параметры, преодо- несколько базовых групп пакетов, ны на опытных администраторов, ко-
леть их можно будет минут за пять. предлагаемые к установке серверы торые хотят полностью контролиро-
Помимо CD-ROM поддерживает- (AppleTalk, IMAP Server (Cyrus, dovecot), вать процесс установки и настройки
ся установка с раздела жесткого дис- OpenSSH, OpenLDAP, Apache, Samba, системных сервисов, знакомы с осо-
ка, NFS, FTP и HTTP. Можно прове- DHCP, vsftpd, tftp и другие) представ- бенностями работы входящих в его
рить установочный диск на наличие лены отдельными позициями. Выбор состав приложений и имеющие неко-
ошибок. Developers позволит включить весь торое время на его доводку. Но зато
На этапе создания разделов мож- представленный набор средств раз- в свои руки вы получите стабильную,
но выбрать автоматическое разби- работки (PHP 5.0.4, Python 2.4.2, GCC безопасную и предсказуемую систему,
ение диска, использовать Disk Druid 3.4.3, Ruby 1.8.2, subversion 1.1.3, nasm которую просто поддерживать в акту-
или ручной (fdisk) вариант. Несмот- 0.98.39 и другие). альном состоянии.

№2, февраль 2007 61


серверная

Как навести порядок


в стойке

Даниил Никифоров
Кто из вас, имеющих в распоряжении серверную, не сталкивался с проблемой «бороды»
из проводов на лицевой стороне стойки? Раздражает, не даёт спокойно спать. Хочется навести
порядок, чтобы не было ни одного лишнего проводочка. С чего начать?

62
серверная

П
оводом написания статьи стала
долгая дискуссия о том, как же
этот порядок навести. Не полу-
чив конкретных советов и не найдя ни-
чего стоящего в Интернете, я пошёл
в серверную и начал творить.
Коротко обрисую проблему. Eсть
стойка, в которой собрано актив-
ное оборудование и кроссовые бло-
ки (далее всё будем называть блока-
ми). Каждый блок имеет хотя бы один
порт (за исключением системы охлаж-
дения и т. п.) для соединения с дру-
гим блоком. Если у вас много блоков
и у каждого много портов, то огром-
ное количество соединительных про-
водов со временем закрывают всё
в стойке, и уже непонятно, что с чем
соединено.
Для успешного решения этой про-
блемы необходимы две составляю- Рисунок 1. Пример документирования имеющихся блоков и соединений
щие:
n аккуратная укладка проводов;
n документирование всех соедине-
ний (см. рис. 1).

Начну с некоторых пояснений при-


нятой у нас маркировки, которая идёт
на рисунках.
Приняты следующие типы соеди-
нений:
n сетевые каналы – это для компью-
теров;
n телефоны – соответственно линии
для телефонов;
n внешние каналы – модемы, спут-
ники и прочее оборудование за пре-
делами стойки (кроме рабочих
мест).

Вся маркировка выполняется в пре-


делах одной стойки. Не спорю, можно
ввести единую нумерацию для всего Рисунок 2. Планирование «идеального» варианта
кампуса, но обильное количество лиш-
них символов в маркировке каждого как и у порта, куда этот канал подходит. и буквы розетки на месте (1А – пер-
порта вызывают сложности при даль- А вот куда ведёт этот канал из стойки, вое место, первая розетка). Отмечу,
нейшей работе. записано на отдельном листе (на рис. 1 что здесь упрощённая маркировка,
Все блоки в стойке помечены «KN», закладка «Внешние каналы»), состо- не включающая аббревиатур объек-
где N – порядковый номер блока, начи- ящем из двух колонок: номер порта та и номера этажа из плана розеток
ная сверху. В каждом блоке порты по- и куда ведёт. Кстати, благодаря этому в здании.
мечены цифрой по порядку. В резуль- и не требуются дополнительные уров- Теперь о цветах. Принципиально
тате каждый порт в стойке имеет но- ни в номерах. важно выделять разными цветами эле-
мер вида «KN.M» (N – блок, M – порт). Исключение составляют магистра- менты таблицы, т.к. это позволяет од-
Так как порты телефонной станции ли, соединяющие стойки. Здесь номер ним взглядом оценить что где находит-
разведены на панель в эту же стойку, состоит из номеров стоек, между кото- ся. Выбор цветов на ваше усмотрение.
то правила маркировки для телефон- рыми она проброшена, и номера жилы Главное, чтобы вы и ваши коллеги не
ных линий те же. в этой магистрали. запутались.
Внешние кана лы помечаются Маркировка рабочих мест состо- В нашем примере цвета следую-
«ВN.M». Номера блока и порта такие, ит из номера места по плану здания щие:

№2, февраль 2007 63


серверная
Перекоммутация
Сложность заключается в том, что хо-
чется перекинуть провода как-то по-
удобнее, но всё снимать и потом за-
ново подключать долго, тяжело, да и
руководство такого простоя не потер-
пит. Чтобы этого избежать, нужно со-
ставить план перекоммутации.
Смотрим рис. 2. Стоит задача
сделать перекоммутацию К3, что-
бы было наименьшее расстояние до
подключенных портов на К4. Пер-
вым действием мы под К3 делаем
ещё одну строчку, где расположим
подключения в той последователь-
ности, которая нам нужна (не объяс-
няю, смотрите по номерам портов).
Во время составления «идеального»
варианта, помечайте в исходном ви-
де те порты, которые вы уже перенес-
Рисунок 3. Составляем план переключений ли на идеальный вариант. Не удаляй-
те их, а только смените цвет, т.к. они
n оранжевый – сетевые каналы; ный разъём (магистрали и рабочие нам ещё понадобятся. В нашем слу-
n бледно-зелёный – телефоны; станции), то тремя строками (номер чае мы меняли с оранжевого на блед-
n жёлтый – внешние каналы и ма- порта на панели, что подходит сзади, но-жёлтый. Когда все порты станут
гистрали; что подключено). К примеру, второ- бледно-жёлтыми, значит, их все пе-
n бледно-жёлтый – номера портов му порту на концентраторе К3 соот- ренесли. Теперь приступаем к со-
(в пределах панели); ветствует запись «К4.1». Это значит, ставлению плана.
n белый – свободный порт. что сюда подключен провод с первого Смотрите рис. 3. Начнём с то-
порта панели «К4». Ниже идёт эта са- го, что доводить до полного отсутс-
На рис. 1 показан пример доку- мая панель. Первому порту соответс- твия свободных портов, не следу-
ментирования содержимого стой- твуют две записи «1А» и «К3.2». Пер- ет. В нашем случае их было целых 5.
ки. В начале указано наименование вая говорит о том, что сюда подве- Итак, сверху – то, что есть, снизу –
стойки. В зависимости от размера се- дено рабочее место «1А» (так оно от- то, что нужно получить. Вопрос в том,
ти, можно указывать дополнительную мечено на плане здания). Вторая за- в какой последовательности пере-
градацию (страна, город, объект, ком- пись, как и на К3, говорит о том, где ключать?
ната). Затем идут блоки. Если это ка- находится второй конец кроссового Для этого:
кое-то оборудование, то обозначает- провода. Как видно, записи о крос- 1. Берём порт, который исходно сво-
ся двумя строками (номер порта и что сировании дублируются, будьте вни- боден, а потом занят. У нас это 7, 11,
подключено). Если это коммутацион- мательны. 17 и 21.

Рисунок 4. Как убирать небольшие излишки Рисунок 5. Получившийся шлейф размещайте между двумя блоками

64
серверная

Рисунок 6. Скрепляйте провода стяжками Рисунок 7. Результаты работы

2. Смотрим, откуда нужно произвести чено к неверному оборудованию n Я предпочитаю важные прово-
переключение на выбранный порт. в другой (к примеру, вы считаете, да (типа связи офисов) пускать
У нас с 5-го. что у вас на магистрали уже висит за стойкой, дабы что-нибудь с ни-
3. Записываем в план переключение сервер, а там по-прежнему комму- ми случайно не сделать. К портам
с пятого на седьмой. татор). они выходят через зазоры.
4. Помечаем их цветом, это переме- n Своевременно вносите сделанные n Старайтесь равномерно распреде-
щение уже в плане. изменения в документацию. лять провода.
n Предупреждайте пользователей n Часто от одной панели до другой
Далее повторяем эти действия о возможных отключениях. идёт несколько проводов. Скреп-
для следующего порта. 5-й становится ляйте их стяжками, потом проще
свободным, и на него можно перемес- Как избавиться будет искать в большом вертикаль-
тить следующее соединение. Смотрим от «бороды» ном пучке (см. рис. 6).
вниз (К4.4), находим в исходном, запи- Итак, план есть. Теперь идём в сер- n К одному горизонтальному орга-
сываем, помечаем. И так далее, пока верную и начинаем наводить поря- найзеру провода могут тянуть-
цепочка не прервётся пустым портом док. Во-первых, при монтаже обору- ся с 4 сторон (лево-верх, лево-
в «идеальном» варианте. Тогда берём дования в стойку, нужно оставлять низ, право-верх, право-низ). Чтоб
следующий пустой порт и опять про- просветы (1-2 болта сверху и снизу), не было путаницы и переплетений
делываем то же самое. В результате куда можно будет убрать небольшие в проводах на органайзере, клади-
все порты должны быть закрашены, излишки провода. Разводку сзади на те провода в одной последователь-
а на листе по порядку записаны все не- коммутационные панели лучше за- ности этих сторон. То есть сначала
обходимые манипуляции. То же самое крыть крышкой, дабы потом случай- все провода со стороны лево-верх,
при перекоммутациях на нескольких но их не зацепить. Также хорошо бы потом все от лево-низ и т. д. Прово-
панелях и нескольких шкафах. ставить органайзеры через каждые да одной стороны скрепляйте стяж-
Обратите внимание! 2 блока. Всё это незначительно пов- ками. Таким образом, потом легко
n Не все порты равноценны (как в на- лияет на полезную площадь, но даст можно будет понять, как протянуть
шем случае). Для этого как раз больше возможностей для манёвров провод по органайзеру (какие про-
и нужен первый шаг, чтобы точно с проводами. вода оставить впереди, какие сза-
убедиться, что куда можно и нельзя Рекомендации на основные слу- ди), и никакой паутины и распуты-
подключать. Не воткните случайно чаи: вания впоследствии (см. рис. 7).
станцию в гигабитный канал, а сер- n Если провод чуть длиннее своего
вер в мегабитный. пути или вы соединяете близко ле- Таким образом, мы навели поря-
n При перекоммутациях через магис- жащие порты, то поместите коль- док, аккуратно уложили провода, и ра-
траль не забывайте отмечать со- цо в зазор между панелями, концы ботать с ней теперь одно удовольс-
ответствующие изменения в дру- снаружи скрепите стяжкой, чтобы твие. При этом, я думаю, мы сэконо-
гой стойке и проверять в принципе потом не искать, где какой провод мили время (по сравнению с полным
возможность этих изменений. входит и выходит. Как ни странно, отключением всех проводов), выпол-
n Опять же при магистралях жела- петли практически не цепляются няли работу планово в течение дня,
тельно друг за другом сразу делать друг за друга (см. рис. 4). а не в авральном режиме, и не вызва-
переключения в обеих стойках, да- n Если провод очень длинный, мотай- ли длительного отключения всего сег-
бы избежать того, что оборудова- те кольцом и поместите на боковую мента, т.к. одновременно было отклю-
ние в одной стойке будет подклю- сторону или за стойку (см. рис. 5). чено только одно соединение.

№2, февраль 2007 65


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

Боремся с вирусами и спамом


с помощью MPP

Сергей Яремчук
Как с минимальными финансовыми и временными затратами настроить эффективную систему
борьбы со спамом и вирусами, рассылаемыми посредством электронной почты? Попробуем
решить эту проблему с Message Processing Platform (MPP) Free Edition.

В
Интернете сегодня можно най- или Amavisd, но гораздо проще в на- ние очень просто в установке, потребу-
ти много описаний построе- стройке. При этом в MPP возмож- ется наличие в системе лишь несколь-
ния систем защиты электрон- ны установка максимального разме- ких основных компонентов:
ной почты, для реализации некото- ра проверяемых сообщений, подпись n операционная система – GNU/Linux
рых из них требуется определенный проверенных писем, фильтрация вло- приблизительно от RH 8.0 и вы-
опыт. Администраторы, хорошо зна- жений по расширению, обработка ис- ше, точно работает в Ubuntu 6.06
ющие Windows, не всегда в состоя- ключений и прочее. Сообщения, по- и Debian 3.0, FreeBSD от 4.8 и вы-
нии быстро разобраться со всеми осо- мещенные в карантин, могут хранить- ше, 5.x (ветка 4 рекомендуемая),
бенностями UNIX. Проект MPP Free ся в текстовом виде либо в базе дан- MacOS X от 10.2 и Solaris 8/9;
Edition [1] предлагает, можно сказать, ных MySQL. Веб-интерфейс, реали- n поч то вый с ер вер – Sendmail,
идеальный инструмент, позволяющий зованный с помощью модуля Webmin, Postfix, CommuniGate, QMail или
быстро развернуть систему борьбы обеспечивает настройку работы, кон- SurgeMail;
со спамом и вирусами, основанную троль в реальном времени, управле- n SpamAssassin от 3.x и ClamAV 0.8
на ClamAV и SpamAssassin, не усту- ние карантином и спамом, внесение и выше;
пающую по эффективности, напри- отправителей в черный и белый спис- n опционально для настройки через
мер, таким решениям, как MailScanner ки, просмотр журналов работы. Реше- веб-интерфейс – Webmin.

66
безопасность
Фактически MPP Free Edition является первой верси- [17:23:37] 6 [63168] [Daemon] Masking signals.
ей решения MPP, которую компания решила раздавать [17:23:37] 8 [63168] [Config] Start loading config file /usr/local/
MPP/mppd.conf
всем бесплатно. Ходят слухи о возможном распростране- [17:23:37] 8 [63168] [Config:InitializeList] [Config] insert suc-
нии под лицензией GNU GPL, но пока дальше разговоров cessful ALL DOMAINS
[17:23:37] 8 [63168] [Config:InitializeList] [debug] dump list
дело не пошло. Поддержка реализована только посредс- [17:23:37] 8 [63168] [Config:InitializeList] ALL DOMAINS
твом электронной почты, без гарантии того, что вам отве- [17:23:37] 6 [63168] [Daemon] Changing user/group.
тят. Коммерческая версия продукта MPP v3 обеспечивает [17:23:37] 6 [63168] [Daemon] Switching to daemon mode.
4289 ? Ss 0:00 /usr/lib/postfix/master
на порядок большую функциональность. Здесь возможна
совместная работа со многими коммерческими антиви- Completed setup.
русными и антиспам-решениями, фильтрацию вложений
не только по расширению, но и по имени файла и содер- Вот, собственно, и все по установке MPP. В конфигу-
жимому, SNMP-мониторинг, усовершенствованный поль- рационном файле в /etc/postfix/main.cf почтового сервера
зовательский интерфейс. Кроме того, для этой версии до- Postfix появится следующая запись:
ступен интерфейс QReview 2.0, позволяющий просматри-
вать и управлять спам-карантином, в версии Free спам-ка- # -- Added for MPP --
content_filter = smtp:localhost:10025
рантином может управлять только администратор. Поэто- # -- end --
му Free Edition подойдет больше для небольших организа-
ций. На сайте проекта сказано, что предыдущая GPL-вер- Оригинальный файл будет сохранен в /etc/postfix/
сия QReview для загрузки не доступна, хотя файл [3] спо- main.cf.mbk.
койно лежит на ftp-сервере. Сравнительная таблица про- Аналогично и master.cf будет скопирован в master.cf.mbk,
дуктов приведена в [2]. и в нем появятся следующие строки:
# -- Added for MPP --
Установка MPP localhost:10026 inet n - n - 10 smtpd
Программа устанавливает все необходимые библиотеки -o content_filter=
ClamAV, сценарии конфигурации автоматически обновля- -o local_recipient_maps=
-o relay_recipient_maps=
ют файлы сервера электронной почты. Поэтому установка -o myhostname=localhost.domain.tld
MPP очень проста. Для загрузки доступно несколько фай- -o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
лов. Так как в качестве тестовой платформы использовался -o smtpd_sender_restrictions=
дистрибутив Ubuntu 6.06 LTS, поэтому для установки MPP -o smtpd_recipient_restrictions=permit_mynetworks,reject
был выбран архив mpp‑free‑1.2-113.Linux.i386.tar.gz. Распако- -o mynetworks=127.0.0.0/8
# -- end --
вываем и запускаем скрипт ./instal.sh. Во время его работы
возможны ошибки, по окончании дается рекомендация: Все рабочие файлы MPP будут помещены в /usr/local/MPP/,
кроме того, в /etc/init.d/ появится скрипт, предназначенный
Please run /usr/local/MPP/configure.pl to automatically configure
mpp and your mail server.
для управления работой демона mppd:

Скрипт позволяет указать на используемый почтовый $ sudo /usr/local/MPP/configure.pl


сервер, а также антивирусное и антиспам-приложения, ко- Starting MPP daemon: mppd.
торые будут использованы при обработке электронной поч-
ты. Естественно, все это должно быть уже установлено. Соответствующие ссылки для его автоматической за-
грузки будут помещены в каталоги /etc/rcХ.d. Все, MPP ус-
$ sudo /usr/local/MPP/configure.pl тановлен и работает с настройками по умолчанию, и в прин-
ципе можно вообще ничего больше не трогать.
Выбираем почтовый сервер: В репозитарии Ubuntu нет пакета Webmin, поэтому его
установку необходимо произвести вручную. Пакет, собран-
Select mailserver ный для Debian, будет работать и в Ubuntu.
1) Sendmail
2) Postfix
3) CommuniGate $ wget –c http://switch.dl.sourceforge.net/sourceforge/ ↵
4) QMail webadmin/webmin_1.310_all.deb
5) SurgeMail
[default 1]: 2 Устанавливаем пакеты, необходимые для удовлетворе-
ния зависимостей:
Выбираем antivirus/antispam-движок, можно использо-
вать несколько значений через пробел, демон clamd дол- $ sudo apt-get install libauthen-pam-perl ↵
libio-pty-perl libmd5-perl
жен использовать стандартный порт 3310: $ sudo dpkg -i /media/win_e/webmin_1.310_all.deb

Select antivirus / antispam engine. Could be one or multiple


selections separated with blank По окончании процесса будет выдано следующее со-
Example: for clamav, spamassassin use: 1 3 общение.
1) clamav
2) clamd Webmin install complete. You can now login to https://grinder:10000/
3) spamassassin as root with your root password, or as any user who can use sudo
[default 1]: 2 3 to run commands as root.

№2, февраль 2007 67


безопасность
Что свидетельствует о том, что Webmin уже настро- ся /usr/local/MPP/blacklist, просто снимаем комментарий
ен и править конфигурационные файлы не придет- со строки и идем дальше.
ся. Поэтому просто вызываем веб-браузер и набираем Аналогично параметр:
https://имя_компьютера:10000/.
Работа с Webmin описана в [4], поэтому подробно о нем donot_scan_users = /usr/local/MPP/donotscanlist
говорить не будем.
Для установки модуля MPP заходим в «Webmin позволяет занести в файл адреса пользователей, сообще-
Configuration» (настройка Webmin) и переходим в «Модули ния которых на вирусы проверяться не будут. По умолчанию
Webmin». Модуль находится в архиве, хотя на сайте проек- параметр scan_domains установлен в all domains, что озна-
та MPP может быть более свежий вариант: чает, что MPP будет проверять почту всех пользователей
всех доменов. Домены можно конкретизировать, прописав
$ wget -c ftp://ftp.messagepartners.com/pub/mpp/ ↵ их через запятую:
webmin/rae-mpp.wbm.gz

И указываем на него в «Установка модуля». В слу- scan_domains = mycompany.com, test.com


чае успеха в категории «Службы» (Service) появится но-
вый пункт «RAE Internet MPP Panel». Здесь 6 вкладок: Если нужно проверять почту конкретных пользователей
«Control», «Configure», «Templates», «Monitor», «Virus/Error указанных доменов, их можно занести в scan_users. Архи-
Quarantine» и «Spam Quarantine». Дальнейшую настройку вы во вложениях по умолчанию проверяются:
работы MPP можно производить, выбрав «Configure» либо
напрямую редактируя конфигурационный файл /usr/local/ scan_archives = yes
MPP/mppd.conf.
Что делать в случае обнаружения вируса или спама,
Конфигурационный файл mppd.conf определяется значением параметра on_infection, а в слу-
Некоторые параметры удобнее редактировать все-таки че- чае невозможности удаления вируса из вложения –
рез веб-интерфейс, выбирая одно из предложенных значе- on_disinfection_failure. Здесь могут быть использованы сле-
ний или занося их в соответствующие поля. Но все пара- дующие варианты (они используются и в некоторых дру-
метры трогать не будем, обратим внимание только на не- гих параметрах):
которые из них. n quarantine – сообщение помещается в карантин без
Так, несмотря на присутствие слова virus в virus_scanner, уведомления отправителя;
сюда прописываем средство для борьбы с вирусами и спа- n discard – сообщение удаляется также без уведомле-
мом, указав одно или через через пробел несколько значе- ния;
ний из clamav, clamd и spamassassin. В email_server должно n reject – сообщение удаляется с отсылкой уведомления
стоять имя используемого почтового сервера. В моем слу- отправителю;
чае это postfix, возможны варианты: sendmail, cgp, surgemail n disinfect – производится попытка удалить вирус;
или qmail. В blacklist указываем имя файла, в который будет n delete – зараженный файл удаляется и заменяется пре-
заноситься «черный» список адресатов по одному в стро- дупреждающим сообщением.
ке, можно указывать домены. По умолчанию использует-
Все сообщения, создаваемые
при работе MPP, занесены в три
шаблонных файла alert_template_
admin.txt, alert_template_reciver.txt
и alert_sender_admin.txt, которые мож-
но отредактировать как вручную, так и
выбрав «Templates» в Webmin. Ана-
логично при включенном параметре
add_signature = yes, после сканирова-
ния в файл добавляется сигнатура –
signature_template.txt, а подключив
параметр message_header и дополни-
тельный заголовок в письмо, которые
также можно изменить по своему ус-
мотрению, показав, что администра-
тор на месте и все контролирует. За-
шифрованное сообщение по умолча-
нию проходит без проверки:

on_encrypted_message = pass

Рисунок 1. Настройка MPP через Webmin Хотя в этом случае разрешено ис-

68
безопасность
пользование тех же значений, что и
в on_infection. Максимально разре-
шенный размер вложений, которые
будет проверять MPP на наличие ви-
русов, в установках по умолчанию
равен 10 Мб. Изменить это значение
можно в max_file_size, указав чис-
ло в мегабайтах. Действие при пре-
вышении этого предела устанавли-
вается в on_max_file_size_exceeded
и может принимать значение pass
(по умолчанию), quarantine или discard.
Аналогично и max_recursion_level
с on_max_recursion_level_exceeded от-
вечает за рекурсивную проверку вло-
жений. Число 50, стоящее по умолча-
нию, мне кажется, несколько завыше-
но. Как уже говорилось во введении,
MPP может блокировать вложения
с указанными расширениями. За это
отвечает параметр block_extensions, Рисунок 2 Редактирование шаблона
в качестве значений которого через
запятую прописываются все расши- жении спама: marksubject, markheader, с помощью которого новые базы бе-
рения файлов, которые администра- forward, quarantine, discard: рутся с сайта разработчика MPP (ftp://
тор считает опасными. Реакция при об- ftp.raeinternet.com/pub/clamav), запус-
наружении такого файла описана spam_action = marksubject кая его через cron (это можно настро-
в block_extensions_action. Целый блок ить прямо из Webmin), так и вручную,
параметров alert_admin, alert_sender, И конкретизируем значение по- воспользовавшись меню «Control»
alert_receiver определяет отсылку уве- ля тема: и нажав кнопку «Virus Update».
домлений соответствующим участ- Не смотря на то что написано мно-
никам пересылки. От имени кого от- spam_marksubject = SPAM-%SUBJECT% го, MPP можно настроить за полчаса,
сылаются сообщения, указываем естественно, при условии, что все ос-
в alert_message_sender. При необходимости можно указать тальные компоненты уже готовы к ра-
Параметр quarantine_method опре- адрес, на который будет пересылать- боте. После чего она исправно будет
деляет форму хранения файлов, со- ся весь обнаруженный спам, который отсеивать вирусы и распознавать спам,
держащих вирусы или спам, в каран- можно будет использовать, например, защищая пользователей.
тине. По умолчанию такие сообщения при обучении фильтров: Успехов.
хранятся в текстовом файле:
spam_forwardaddr = ↵ 1. Сайт проек та MPP Free Edition –
%EMAILID%-spam@%DOMAIN%
quarantine_method = file http://messagepartners.com/products/
Аналогично ситуации с вирусами, mpp_free_edition.html.
Если планируется использование используя инструкцию spam_inbound_ 2. С р а в н и т е л ь н а я т а б л и ц а в е р -
для этих целей MySQL, измените его на whitelist и spam_outbound_whitelist, сий Free Edition и MPP v3 – http://
sql. Для создания необходимых баз в можно указать белый список адреса- messagepartners.com/products/
архиве имеется скрипт spam-mysql.sql. тов, входящие или исходящие сооб- compare-mpp.php.
В этом случае активируйте и следую- щения которых не будут проверяться 3. G P L в е р с и я Q R e v i e w – f t p : / /
щие параметры, установив необходи- на спам. Максимальный размер сооб- ftp.raeinternet.com/pub/mpp/
мые значения: щений, проверяемых SpamAssassin, qreview-0.6.tar.
по умолчанию равен 32 Кб, изменить 4. Яремчук С. Упрощаем себе жизнь
sql_type = mysql его можно в spam_max_scan_size. с Webmin. //«Системный администра-
sql_database = spam
sql_host = localhost После изменений параметров пе- тор», № 7, 2004 г. – C. 34-37.
sql_user = user резапускаем демон mppd. Для про- 5. Яремчук С. Roaring Penguin CanIt:
sql_password = password
верки правильности настройки рабо- ведём борьбу со спамом. //«Систем-
Далее в файле идут настройки про- ты антивируса и антиспам-подсистем ный администратор», № 7, 2006 г. –
верки почты SpamAssassin: в архиве MPP имеются файлы gtube- C. 16‑22.
eicar-test.msg и test.msg. Обновления 6. Яремчук С. Защищаем электронную
spam_filter = yes ClamAV производятся стандартны- почту средствами MailScanner. //«Сис-
ми методами, кроме того, в постав- темный администратор», № 12, 2005 г. –
Определяем реакцию при обнару- ке MPP есть скрипт clamavupdate.sh, C. 45-51.

№2, февраль 2007 69


bugtraq

Целочисленное переполнение Переполнение буфера в реализации VML


в OpenOffice в Microsoft Windows
Программа: OpenOffice версии до 2.1. Программа: Microsoft Windows 2000, Microsoft Windows XP,
Опасность: Высокая. Microsoft Windows 2003.
Описание: Целочисленное переполнение обнаружено в об- Опасность: Критическая.
работчике WMF/EMF-файлов. Удаленный пользователь мо- Описание: Целочисленное переполнение существует из-
жет с помощью специально сформированного WMF/EMF- за недостаточной проверки входных данных в библиотеке
файла вызвать переполнение динамической памяти и вы- vgx.dll в реализации Vector Markup Language (VML). Удален-
полнить произвольный код на целевой системе. ный пользователь может с помощью специально сформи-
URL производителя: www.openoffice.org. рованной веб-страницы или e-mail-сообщения вызвать пе-
Решение: Установите последнюю версию (2.1) с сайта про- реполнение динамической памяти и выполнить произволь-
изводителя. ный код на целевой системе.
URL производителя: www.microsoft.com.
Переполнение буфера при обработке Решение: Установите исправление с сайта производите-
GIF-изображений в Sun Java Runtime ля.
Environment
Программа: JDK и JRE 5.0 Update 9 и более ранние вер-
сии, SDK и JRE 1.4.2_12 и более ранние версии, SDK и JRE Несколько уязвимостей
1.3.1_18 и более ранние версии. в Cisco Secure ACS
Опасность: Высокая. Программа: Cisco Secure ACS версии до 4.1.
Описание: Уязвимость существует из-за ошибки при об- Опасность: Критическая.
работке GIF-изображений, длина которых установлена в 0. Описание: 1. Уязвимость существует из-за ошибки в служ-
Удаленный пользователь может с помощью специально бе CSAdmin при обработке HTTP GET-запросов. Удаленный
сформированного GIF-изображения, загружаемого недове- пользователь может с помощью специально сформирован-
ренным апплетом, вызвать переполнение динамической па- ного HTTP GET-запроса вызвать переполнение стека и вы-
мяти и выполнить произвольный код на целевой системе. полнить произвольный код на целевой системе.
URL производителя: www.sun.com. 2. Уязвимость существует из-за ошибки в службе
Решение: Установите исправление с сайта производите- CSRadius при обработке RADIUS Accounting-Request-паке-
ля. тов. Удаленный пользователь может вызвать переполнение
стека и выполнить произвольный код на целевой системе.
Уязвимость в механизме проверки 3. Уязвимость существует из-за ошибки в службе
орфографии в Microsoft Office CSRadius при обработке RADIUS Access-Request-пакетов.
Программа: Microsoft Office 2003 Удаленный пользователь может с помощью специально
Опасность: Высокая. сформированного RADIUS Access-Request-пакета аварий-
Описание: Уязвимость существует из-за ошибки в меха- но завершить работу службы.
низме проверки орфографии для бразильского португаль- URL производителя: www.cisco.com.
ского языка. Удаленный пользователь может с помощью Решение: Установите исправление с сайта производите-
специально сформированного документа вызвать пов- ля.
реждение памяти и выполнить произвольный код на целе-
вой системе.
URL производителя: www.microsoft.com. Несколько уязвимостей
Решение: Установите исправление с сайта производите- в браузере Opera
ля. Программа: Opera версии до 9.10.
Опасность: Критическая.
Уязвимость форматной строки Описание: 1. Уязвимость существует из-за ошибки при об-
в VLC Media Player работке JPEG-файлов, содержащих специально сформи-
Программа: VLC Media Player 0.8.6, возможно более ран- рованный DHT-маркер. Удаленный пользователь может
ние версии. вызвать переполнение динамической памяти и выполнить
Опасность: Высокая. произвольный код на целевой системе.
Описание: Уязвимость существует из-за ошибки формат- 2. Уязвимость существует в функции createSVGTransform
ной строки при обработке URL «udp://» . Удаленный поль- FromMatrix() при обработке объектов. Удаленный пользова-
зователь может с помощью специально сформированно- тель может передать некорректный объект уязвимой функ-
го веб-сайта или M3U-файла выполнить произвольный код ции и выполнить произвольный код на целевой системе.
на целевой системе. URL производителя: www.opera.com.
URL производителя: www.videolan.org/vlc. Решение: Установите последнюю версию (9.10) с сайта
Решение: Установите последнюю версию (0.8.6a) с сайта производителя.
производителя.

70
bugtraq

Уязвимость при обработке


неинициализированных указателей
Выполнение произвольного кода в Kerberos kadmind
в Microsoft Word Программа: Kerberos krb5-1.5 – krb5-1.5.1, возможно, бо-
Программа: Microsoft Office 2000. лее ранние версии.
Опасность: Критическая. Опасность: Критическая.
Описание: Уязвимость существует из-за ошибки при об- Описание: Уязвимость существует из-за ошибки при обра-
работке строк. Удаленный пользователь может с помо- ботке неинициализированных указателей когда интерфейс
щью специально сформированного документа Word вы- mechglue в реализации GSS-API вызывает определенные
звать повреждение памяти и выполнить произвольный код функции обработки ошибок. Удаленный пользователь мо-
на целевой системе. жет с помощью специально сформированного пакета вы-
Примечание: уязвимость активно эксплуатируется в на- звать отказ в обслуживании или выполнить произвольный
стоящее время. код на целевой системе.
URL производителя: www.microsoft.com. URL производителя: web.mit.edu/kerberos/www.
Решение: В настоящее время cпособов устранения уязви- Решение: Установите последнюю версию с сайта произво-
мости не существует. дителя: web.mit.edu/kerberos/advisories/2006-003-patch.txt.

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


в Microsoft Excel Множественные уязвимости
Программа: Microsoft Office 2000, Microsoft Office XP, в продуктах Oracle
Microsoft Office 2003. Программа: Oracle Database 10g, Oracle Application
Опасность: Критическая. Server 10g, Oracle E-Business Suite 11i, Oracle Enterprise
Описание: 1. Уязвимость существует из-за ошибки при об- Manager 10.x, Oracle PeopleSoft Enterprise Tools 8.x, Oracle9i
работке IMDATA-записей. Удаленный пользователь может Database Enterprise Edition, Oracle9i Database Standard
с помощью специально сформированного файла вызвать Edition, Oracle Developer Suite 10g, Oracle9i Developer Suite,
повреждение памяти и выполнить произвольный код на це- Oracle9i Application Server.
левой системе. Опасность: Критическая.
2. Уязвимость существует из-за ошибки при обработ- Описание: 1. Уязвимость существует из-за ошибки провер-
ке определенных записей. Удаленный пользователь мо- ки границ данных в ONS (Oracle Notification Service). Удален-
жет с помощью файла, содержащего специально сформи- ный пользователь может послать приложению специаль-
рованную запись, вызвать повреждение памяти и выпол- но сформированный пакет на порт 6200/TCP, вызвать пе-
нить произвольный код на целевой системе. реполнение буфера и выполнить произвольный код на це-
3. Уязвимость существует из-за ошибки при обработ- левой системе.
ке строк. Удаленный пользователь может с помощью фай- 2. Уязвимость существует из-за недостаточной обра-
ла, содержащего специально сформированную строку, вы- ботки входных данных в Oracle XML DB. Удаленный поль-
звать повреждение памяти и выполнить произвольный код зователь может с помощью специально сформированного
на целевой системе. запроса выполнить произвольный код сценария в браузере
4. Уязвимость существует из-за ошибки при обработ- жертвы в контексте безопасности уязвимого сайта.
ке Column-записей. Удаленный пользователь может с по- 3. Уязвимость существует из-за недостаточной обра-
мощью специально сформированного файла вызвать пов- ботки входных данных в пакете DBMS_AQ_INV. Удаленный
реждение памяти и выполнить произвольный код на целе- пользователь может с помощью специально сформирован-
вой системе. ного запроса выполнить произвольные SQL-команды в ба-
5. Уязвимость существует из-за ошибки проверки гра- зе данных приложения.
ниц данных в Palette записей. Удаленный пользователь мо- 4. Уязвимость существует из-за недостаточной обра-
жет с помощью файла, содержащего большое количест- ботки входных данных в EmChartBean. Удаленный пользо-
во элементов в записи Palett, вызвать переполнение ди- ватель может с помощью символов обхода каталога полу-
намической памяти и выполнить произвольный код на це- чить доступ к произвольным файлам на системе.
левой системе. URL производителя: www.oracle.com.
URL производителя: www.microsoft.com Решение: Установите исправление с сайта производите-
Решение: Установите исправление с сайта производите- ля.
ля.
Составил Александр Антипов

№2, февраль 2007 71


хобби

Open Source и Classic Games

Иван Максимов
Начало 90-х годов прошлого века ознаменовалось выпуском игровых программ, в будущем
закрепивших за собой звание «культовых». Эти игры к настоящему времени устарели,
но энтузиасты сообщества Оpen Source возродили многие из них.

О
pen Source-сообщество зна- 90-е годы прошлого столетия. Как на» Сидом Мейром (Sid Meier) на ЭВМ.
ет много историй падения ком- много было выпущено замечатель- Через некоторое время состоялся вы-
мерческих проектов и зарож- ных игр в то время – период возник- ход продолжения Civilization, породив-
дения на их основе свободных, в пос- новения новых идей и новых жан- шего многочисленные клоны (включая
ледствии завоевавших доверие мно- ров! Наверное, сложно найти челове- «Колонизацию»), но оригинальной иг-
жества пользователей. Так случилось ка, знакомого с компьютерами не по- ре не хватало очень многих вещей. С
с браузером Netscape Navigator, кото- наслышке, который бы ни улыбнулся увеличением мощностей ЭВМ графи-
рый не смог выдержать конкуренции при упоминании таких названий, как: ку удалось подтянуть, но не хватало
с аналогом от Microsoft. Но после от- Dune, Doom, Civilization, Kings Bounty, режима многопользовательской игры.
крытия исходных кодов проект полу- Transport Tycoon, Ufo, Colonization. Без- Именно по этой причине в 1995 году
чил «вторую жизнь», переродившись условно, эти игры устарели по многим стартовал проект FreeCiv, являющий-
впоследствии в знаменитый Firefox. параметрам, но их культовый статус ся, по сути, многопользовательской
Похожая судьба и у системы управле- не позволит им кануть влету. Поэтому версией «Цивилизации».
ния базами данных Interbase компании неудивительно, что энтузиасты со всех Итак, установив клиент игры, мы
Borland, которая после прекращениия концов света давно взялись за пере- увидим непритязательную графику
официальных работ над ней продол- работку и улучшение классики. Итак, и простой интерфейс, копирующие
жила своё существование под назва- в каком же состоянии эти проекты на- вторую часть «Цивилизации», но это
нием Firebird. ходятся сейчас? мнение обманчиво. Искусственный
Исследуя успешное развитие сво- интеллект компьютерных противни-
бодно распространяемых проектов, Civilization (FreeCiv ) ков очень силен, поэтому рекоменду-
среди всего многообразия ПО с от- Игру можно встретить почти в каждом ется вначале игры исследовать опции
крытым исходным кодом чаще всего дистрибутиве Linux, в любой системе игры (к примеру, лучше ввести запрет
можно встретить: программы для ра- портов/пакетов. В чем же секрет зна- на строительство городов на рассто-
боты с сетью и Интернетом, базы дан- менитой «Цивилизации»? Конечно же, янии менее пяти клеток). Перед иг-
ных, служебные утилиты и др. Сущест- в масштабе самой игры. Управление рой на официальных серверах луч-
вует еще одна область программного целой империей: научной, производс- ше потренироваться в однопользо-
обеспечения, в развитие которой сооб- твенной, военной областями затягива- вательском режиме, так как измене-
щество OpenSource внесло большой ет не на шутку. ний по сравнению с оригиналом в иг-
вклад, достигнув при этом немалых С чего все начиналось? Как мно- ре достаточно.
успехов и популярности. Это игровые гие думают с «Цивилизации» 1 на PC, Вопрос с устаревшей графикой
программы. Зайдя по ссылке [1], можно но это не совсем так. В конце 70-х – также решаем. На официальном сай-
найти тысячи свободно распространя- начале 80‑х годов появилась настоль- те FreeCiv [3] можно найти большое
емых игр (и закрытых портированных). ная игра Civilization. The board game [2]. количество патчей, один из которых,
Прежде чем мы пойдём дальше, вер- Получившая большую популярность, Freeland, значительно меняет облик
нёмся на десяток лет назад. эта игра была со временем «перенесе- игры (см. рис. 1).

72
хобби
Кроме патча на графику, на сайте
проекта находится множество других,
не менее интересных дополнений: кар-
ты островов Великобритании и Японии,
новые нации, редакторы карт, звуко-
вые эффекты и многое другое. Несмот-
ря на выход четвёртой части коммер-
ческой, полностью трехмерной «Циви-
лизации», FreeCiv выглядит очень до-
стойно: развитие игры не останавли-
вается (последняя доступная версия –
2.1.0-beta2 от 12 августа 2006 года),
постоянно обновляются уже сущест-
вующие патчи, появляются новые мо-
дули (тот же Freeland – относительно
«молодая» разработка).
Существенным плюсом является
свободная лицензия игры и, как следс- Рисунок 1. FreeCiv с патчем Freeland
твие, открытые исходные коды. По-
этому любой желающий может вне-
сти во FreeCiv свои изменения, благо,
на сайте можно найти очень интерес-
ные «рецепты». О популярности и ус-
пехе открытой «Цивилизации» можно
судить не только по количеству пат-
чей и многоязыковой поддержке (27
локализаций, включая русскую), но и
по количеству серверов поклонников
этой игры.
Подводя итоги, можно сказать,
что продолжение получилось очень яр-
ким. Энтузиастам удалось повторить
и расширить вселенную Civilization.
Учитывая то, что над FreeCiv офици-
ально работают 37 человек, – прекра-
щение развития этого Open Source-
проекта мы увидим ещё не скоро.

Сolonization (FreeCol)
Один из первых клонов «Цивилиза-
ции» – «Колонизация», созданная Рисунок 2. FreeCol
автором «оригинала» Сидом Мейе-
ром и выпущенная в 1994 году. Дейс- Для игры обязательно понадобит- лизация», но за время своего сущес-
твие игры происходит в Новом Све- ся Java от Sun Microsystems, поэтому твования приобрела немалое коли-
те (XV‑XVII века) во времена освое- зайдя на официальный сайт игры [4], чество фанатов. В Интернете до сих
ния европейскими государствами се- не забудьте пройти по ссылке [5] и ус- пор существуют сайты с обновлени-
вероамериканского континента. В иг- тановить интерпретатор языка. Итак, ями в виде карт, дополнений к ориги-
ре уменьшен масштаб (по сравнению установив игру, первое, что мы уви- нальной версии игры. Фанаты любят
с Civilization), но более проработана дим, неплохую графику. Это, конечно, именно оригинальную версию, про-
экономическая и торговая системы. не трехмерная «Цивилизация», но изо- должая рисовать карты и выпуская
Игроку доступны: четыре колониаль- метрическая карта выглядит достой- дополнения.
ные государства, десятки товаров, два но. Учитывая то, что по Интернету од- Кроме проекта FreeCol, в сети
десятка юнитов, неизведанные терри- но время ходили слухи о выходе вто- можно найти еще несколько клонов
тории с враждебно настроенными ин- рой части Сolonization, впоследствии Сolonization, но, к сожалению, раз-
дейцами и не более дружелюбными не подтвердившиеся, FreeCol вполне работка многих из них прекращена,
конкурентами. Проект FreeCol возник может сойти за «наследника» ориги- а другие слишком отклонились от идей
по тем же причинам, что и FreeCiv, – от- нала (рис. 2). оригинала.
сутствие у оригинальной версии воз- «Колонизация» получилась гораз- Из минусов FreeCol можно вы-
можности играть по сети. до менее популярной, нежели «Циви- делить лишь один: использование

№2, февраль 2007 73


хобби
«движке» было выпущено множест-
во различных игр, как коммерческих,
так и свободных. Из коммерческих
клонов стоит выделить Heretic (1994
год) и Hexen: Beyond Heretic (1995 год).
Свободно распространяемых продол-
жений Doom вышло очень много. Од-
но из них, DoomsDay (включает в се-
бя jdoom, jhexen и jheretic), можно най-
ти почти в каждой системе портов/па-
кетов.
DoomsDay – это улучшенный дви-
жок для игры Doom (Hexen и Heretic),
новые текстуры, а также возможность
игры по Интернету. На сайте проек-
та [6] можно найти описание игр, ссыл-
ки на загрузку движка, новые тексту-
ры и статистику оn-line-баталий. К со-
жалению, для запуска игр необходи-
мо наличие оригинальных *.wad-фай-
лов, но их без особых проблем можно
найти в Интернете.
Рисунок 3. jdoom Итак, скачав движок, текстуры
и оригинальные *.wad-файлы игр Doom,
Hexen и Heretic, запустим их по очере-
ди. Уровни не изменились, а вот гра-
фика и текстуры пошли «старичкам»
на пользу, разработчики достигли
больших успехов. Первое, на что об-
ращаешь внимание в jdoom, – отсутс-
твие малейшего намёка на «квад-
ратность» графики, появление рико-
шетов от пуль, а также динамичес-
кие тени. Игра настолько преобрази-
лась, что, увидев дым от ракет и раз-
ряды плазменной винтовки, некоторые
фанаты захотят пройти Doom еще не-
сколько раз. Режим сетевой игры кар-
динально отличается от оригинала,
пункт Multiplaer находится непосредс-
твенно в главном меню. Зайдя в не-
го, можно отредактировать профиль
игрока, создать игру либо же присо-
Рисунок 4. OpenTTD единиться к серверу (ранее для этих
целей служило отдельное приложе-
Java сильно замедляет работу игры от 5 декабря 2006 г. и по новым ком- ние). Как уже говорилось, список иг-
(её запуск на системе с процессором ментариям на многих форумах. ровых серверов с версиями игр (Doom,
Celeron 1.4 ГГц и 256 Мб ОЗУ длит- Doom2) можно найти на официальном
ся более 10 секунд). Также к минусам Doom (DoomsDay) сайте проекта. Стоит отметить, что все
можно отнести графику (все-таки это Doom (1993 год) – первый 3D-шутер старые чит-коды в игре (iddqd, idkfa
не FreeCiv). Но эти «недостатки» мерк- с перспективой «от первого лица», за- и др.) остались на месте (рис. 3).
нут сразу после начала игры, ориги- воевавший с момента своего появле- Эти же изменения произошли и с
нальная концепция которой затягива- ния поистине культовый статус. В игре оригинальными Hexen и Heretic. Раз-
ет со страшной силой. игроку предстоит бороться с полчища- рывов ракет в играх, конечно, нет,
В завершение обзора FreeCol дол- ми монстров, уничтожая их при помо- но при использовании «Крыльев фе-
жен заметить, что проект хоть и поте- щи различных видов оружия. никса» создается ощущение, что руки
рял многих поклонников, всё же про- Как и многие другие популярные держат ракетную установку, а не древ-
должает развиваться. Судить об этом игровые продукты, Doom получил мно- ний артефакт. Также стоит отметить,
можно по последнему релизу (0.5.3) жество продолжений и клонов. На его что текстуры объектов в jheretic про-

74
хобби
рисованы намного лучше, чем в jdoom
(объем файла с текстурами в jheretic
на 10 Мб больше).
Конечно, всеми нововведениями
в jdoom, jheretic и jhexen нельзя удивить
современного игромана. В настоящее
время 3D-шутеры давно обладают хо-
рошей графикой и физической моде-
лью. Тем не менее выглядят DoomsDay
все же на уверенную четвёрку даже
по сегодняшним меркам. Пожалуй,
стоит отметить еще одну небольшую,
но приятную особенность: для игр не-
обходимы *.wad-файлы из оригиналь-
ных игр, но подойдут и дополнитель-
ные и сетевые карты (также являющие-
ся *.wad-файлами), созданные сторон-
ними разработчиками.
Итак, небольшой объем игры
(не более 100 Мб), новый удобный ин-
терфейс и графика, регулярное об-
новление (текущий релиз датирован Рисунок 5. UFO: Alien Invasion
28 мая 2006 г.) говорят о том, что про-
ект удался и в дальнейшем будет поль-
зоваться не меньшей популярностью.

Transport Tycoon (OpenTTD)


Игра представляет собой транспорт-
ную экономическую стратегию (http://
open.ttdrussia.net). Первую версию под
названием Transport Tycoon Original
(последнюю приставку игра приоб-
рела позже) компьютерный мир уви-
дел в 1994 году. Игроку предстоит за-
ниматься перевозкой грузов на че-
тырёх видах транспорта: автомобиль-
ном, железнодорожном, морском и
воздушном. Начиная игру в 1940 го-
ду, он должен будет одолеть конку-
рентов и справиться со сложностями
построек сложных транспортных сис-
тем. Именно последний фактор явля-
ется наиболее интересной особеннос-
тью игры, так как создать эффектив-
ную, экономичную и, что не маловаж- Рисунок 6. Wargus
но, красивую транспортную линию не-
легко. Существуют фанаты игры, ко- кать ответы на вопросы типа: «Как же и относительно небольшой масштаб.
торые даже придерживаются реаль- наиболее эффективно и экономно пос- Игроки желали большего, и энтузиас-
ных правил строения железнодорож- троить обычную дорогу, а потом рядом ты OpenSource-сообщества откликну-
ных линий. Масштаб, большой выбор проложить железные пути?» лись на их просьбы.
товаров, постоянное обновление тех- К сожалению, в оригинальной вер- В 2004 году вышли первые релизы
нологий (от паровозов до электрово- сии игры было много ограничений, на- OpenTTD. Постепенно игра приобрета-
зов на монорельсах), гонка с конку- пример, на количество вагонов в со- ла новые функции, откликаясь на по-
рентами за государственные субси- ставе, платформ на вокзале и мно- желания пользователей. Карты были
дии – все это затягивало фанатов иг- гое другое. Даже появление Transport увеличены в четыре раза (с 256х256
ры. Неудивительно, что после появле- Tycoon Delux в 1995 году не особо уве- до 2048х2048 клеток), были сняты ог-
ния OpenTTD игра не только вернула личило возможности игрока. Оста- раничения на длину железнодорож-
себе старых поклонников, но и приоб- лись и другие минусы: плохая под- ных составов (и платформ), добавле-
рела новых, заставляя новичков ис- держка многопользовательской игры ны морские каналы, новые текстуры,

№2, февраль 2007 75


хобби
Итак, скачав архив с официально-
DarkOberon пульта и дирижабль (если не считать ней- го сайта проекта [8], запустим UFOAI.
DarkOberon (http://dark-oberon.sourceforge. тральных: поросенка и лодочку). Основ- Несмотря на то что в списке подде-
net) – стратегия в режиме реального време- ной режим игры – многопользователь- рживаемых языков нет русского, игра
ни, созданная по мотивам WarCraft 2. Гра- ский, но, возможно, в будущем мы увидим все же переведена процентов на 70
фически игра, на первый взгляд, напоми- и одиночный режим. Также на сайте про- (подобный неполный перевод вносит
нает первую часть WarCraft, но при ближай- екта можно посмотреть фотографии про- как дополнительное удобство, так и
шем рассмотрении можно увидеть, что все цесса изготовления всех объектов игры путаницу).
объекты – «пластилиновые». Оригиналь- (золотые шахты, леса), что дополнитель- Игровой процесс похож на ориги-
ная идея дизайна игры способствовала ее но украшает проект. нал. Всюду прослеживаются идеи пер-
распространению по Интернету. К сожа- Несмотря на недостатки, DarkOberon вого UFO: постройка базы (радары,
лению, в настоящий момент DarkOberon смотрится очень симпатично и весело. Ос- жилые помещения, лаборатории), ис-
ещё не завершена. Доступны всего че- тается надеяться, что проект не забросят следования (технологии плазмы, лазе-
тыре типа юнитов: солдат, рабочий, ката- и он будет доведен до конца. ра и т. д.), захват инопланетян, защита
граждан, производство оборудования.
создан игровой портал и многое дру- Unknown (она же X-COM: UFO Defence), Единственные отличия состоят в гра-
гое (рис. 4). вышла в 1993 году, моментально за- фике и интерфейсе игры. Старых фа-
Итак, кроме движка игры, который воевав множество поклонников. По- натов может смутить отсутствие трех-
можно скачать с официального сай- этому на волне популярности ориги- мерной карты планеты в главном ок-
та [7], нам понадобится оригиналь- нала в 1995 году вышло продолжение не игры, она заменена на свой плос-
ная версия Transport Tycoon Delux. Же- под названием X-СОМ UFO 2: Terror кий развернутый аналог. Игра в по-
лающие также могут установить но- From The Deep, в котором игроку пред- шаговом режиме полностью трехмер-
вые текстуры. Игру можно проходить стояло сразиться с инопланетянами ная, можно смело приближать камеру
в одиночку, соревнуясь с искусствен- в океанских водах. к объектам, не боясь увидеть «квад-
ным интеллектом компьютера, но на- Как уже говорилось выше, игровой ратные» пиксели. В то же время, ес-
много интереснее играть по сети. Пор- процесс разделен на игру в реальном ли игроку хочется побывать «в шку-
тал OpenTTD никогда не пустует, всег- времени, где нам предстоит строить ре» спецназовца, достаточно нажать
да можно присоединиться к группе иг- базы, закупать оборудование и воо- клавишу «V», и он получит пошаго-
роков и попытаться завоевать вирту- ружение, исследовать инопланетные вый 3D-шутер.
альный рынок. Игровой процесс ус- артефакты для их последующего ис- К сожалению, игра еще незаверше-
ложнятся тем, что в игре можно поку- пользования и перехватывать неопоз- на. Например, на данный момент от-
пать другие компании, поэтому впол- нанные летающие объекты. После кру- сутствуют воздушные бои, хотя пере-
не вероятно, что, когда вы присоеди- шения НЛО и десантирования в район хватчики и вооружение для них на ба-
нитесь к другим игрокам, вашу компа- спецназа игра переходит в пошаговый зе уже есть.
нию купят «с молотка». режим, в котором нам предстоит за- Проект быстро развивается. Год
В 2004 году было выпущено идей- хватить или уничтожить врагов. назад были доступны всего три мис-
ное продолжение TTD – Chris Sawyer’s Именно из-за многообразия про- сии и небольшой список исследований.
Locomotion (так называемый TTD2), яв- цесса игры UFO завоевала популяр- К тому же игра часто зависала. Сегод-
ляющееся вполне достойным продол- ность. В дальнейшем было выпуще- ня же игровым процессом в UFO: Alien
жение оригинала. Чем же привлека- но немало продолжений и римейков Invasion можно наслаждаться: вели-
ет новых фанатов именно OpenTTD? оригинала, однако очень часто мож- колепная графика, новый сюжет, ста-
Ответ на вопрос можно найти на мно- но было услышать от игроков одно и бильная работа программы… При этом
гих форумах поклонников этой иг- то же мнение: «Это не та UFO, кото- игра остается все тем же классическим
ры. Это простота в освоении, масш- рую мы любим и помним». В действи- UFO. Нужно признать, что энтузиасты
таб, небольшой размер дистрибутива тельности все было именно так: пос- сдержали свое слово. Проект продол-
и свободное распространение. Как и ле выхода UFO: Aftermath (2004 год) жает классическое начало оригинала
большинство коммерческих проек- многие фанаты потеряли всякую на- и может смело называться «настоя-
тов, в Locomotion «поиграли и забы- дежду на качественное продолже- щим» UFO 3 (рис. 5).
ли», тогда как OpenTTD развивается ние саги. Приблизительно в это вре-
по сей день и продолжает дальше ра- мя (2003 год) и была создана коман- Warcraft (WarGus)
довать своих пользователей. да UFOAI Team, занявшаяся проектом War Craf t п р о и з в о д с т в а B liz z ard
UFO: Alien Invasion. Entertainment – фэнтези-стратегия
UFO (UFO: Alien Invasion) Игра создана на базе движка в режиме реального времени, в кото-
UFO представляет собой комбинацию 3D‑шутера Quake II (исходные коды рой игроку дана возможность управ-
стратегий сразу двух режимов – по- которого были открыты компанией ления человеческой расой либо ор-
шаговой и реального времени. В ней idSoftware 22 декабря 2001 года), ка- дой орков. Продуманный сюжет, отлич-
игроку предстоит отразить нападе- залось бы, не созданного для данно- ная графика и новаторские идеи поз-
ния инопланетян на родную плане- го жанра. На практике все вышло по- волили игре завоевать сердца многих
ту Земля. Первая часть UFO, Enemy другому. игроков. Продолжение игры, вышед-

76
хобби
шее в декабре 1995 года, ещё боль- Сводные данные об игровых программах
ше закрепило успех оригинала. В да- Windows Linux MacOS Размер src Размер win Оригинальные файлы
леком прошлом эти игры являлись FreeCiv + + + 14 8 –
главными конкурентами сериям Dune
FreeCol + + + 8 10 –
и Command & Conqueror производс-
DoomsDay + + + 70 71 +
тва Westwood Studios, соревновав-
OpenTTD + + + 4 2 +
шейся с Blizzard за звание «законода-
тельницы мод» в жанре стратегий в ре- UFO AL + + src 200 216 –
альном времени. Кто победил, мы уже WarGus + + src 0,5 1,5 +
знаем: про Westwood, купленную гига-
нтом игровой индустрии Electronic Arts, Более высокое разрешение позволя- скольких платформ и имеют неболь-
многие забыли (хотя грядущий C&C: ет видеть лучшую картину боя, вследс- шой объем. Как видно из таблицы, иг-
Tiberium Wars – очень «лакомый кусо- твие чего управлять войсками стано- ровые программы перенесены под все
чек»), тогда как Blizzard и её детище вится значительно легче. Еще одно но- наиболее распространенные опера-
живет и процветает по сей день. вовведение коснулось игры по сети, ционные системы.
WarCraft продолжил свое эволюци- введена поддержка протокола TCP/IP Пометка src в столбце MacOS оз-
онное развитие, и теперь мы можем (в оригинальной версии игра была до- начает, что в проекте нет *.dmg-фай-
наслаждаться многопользователь- ступна только через IPX-протокол ли- лов, доступны только исходные коды.
ской игрой в ролевом проекте World бо же NULL-модем). Размер проектов округлялся в боль-
of WarCraft. Но многие фанаты не хо- Сама WarCraft 2 не изменилась: шую сторону.
тят забывать оригинал. WarCraft 2 дав- сюжетная линия та же, новых юнитов Например, движок DoomsDay «ве-
но устарела, но в неё до сих пор игра- не замечено, но в игру добавлено все сит» всего 7 Мб, но текстуры ко всем
ют как в однопользовательском ре- самое необходимое для удобства иг- играм в проекте занимают около 60 Мб.
жиме, так и по сети. Как раз для таких рока. Что и следовало ожидать, пос- В общий объем не включен размер
фанатов и было разработано допол- кольку модификацию создавали фа- оригинальных файлов игр. Также сто-
нение WarGus. наты для фанатов. ит отметить, что OpenTTD – единствен-
Как говорится на официальном WarGus, конечно, не привлечет но- ный проект с поддержкой архитекту-
сайте проекта, WarGus – это «модифи- вых игроков в мир WarCraft, для этого ры amd64.
кация Warcraft 2, созданная фанатами больше подходит официальная тре- В Интернете раньше можно было
Warcraft 2, для себе подобных». Патч тья часть с множеством официальных встретить множество высказываний
основан на базе кроссплатформенного и неофициальных дополнений, а так- по поводу того, что хороших свобод-
движка Stratagus [9], с помощью кото- же WarCraft 2: Battle.net Edition, пред- но распространяемых игр с открыты-
рого были разработаны такие проекты, назначенная для игры через Интернет. ми исходными кодами не существует,
как: Battle of Survival, World Domination, Но игроки, желающие вспомнить бы- но, пожалуй, теперь это мнение мож-
Astroseries и другие. лые времена и увидеть «новое лицо» но опровергнуть.
Зай д я н а о ф и ц и а л ьн ы й с ай т любимой игры, должны обязательно Заканчивая материал, хочется
WarGus [10], скачаем архив дополне- воспользоваться дополнением. напомнить, что мы живем не толь-
ния. Нам также понадобится ориги- ко для работы, но и, как сказал Ли-
нальная часть игры. На сайте сказано, Выводы нус Тольдвальтс, «для развлечений»
что обязательно необходима CD-вер- Оригинальные версии игр навсегда («Just for fun»).
сия Warcraft 2, хотя вполне подойдет вошли в историю как родоначальники
обычный минимальный архив без ви- игровых жанров и по праву могут на- 1. T h e L i n u x G a m e To m e – h t t p : / /
деороликов (его легко найти на многих зываться лучшими. Связано это с тем, www.happypenguin.org.
фэн-сайтах; объем ~ 30 Мб) (рис. 6). что все идеи, которые были заложены 2. Производитель настольных игр – http://
Запустив игру, можно заметить, в них, используются по сей день, и но- www.eaglegames.net.
что весь WarCraft 2 стал более инфор- вые жанры придумать трудно. Энтузи- 3. Официальный сайт freeciv – http://
мативен. Проявляется это во всем: асты со всех концов света по разным www.freeciv.org.
например, если крестьяне собирают причинам не хотели оставлять эти зна- 4. Официальный сайт freecol – http://
дерево, шкала внизу покажет игроку, менитые проекты на пыльных полках. www.freecol.org.
сколько осталось времени до полного Одни улучшали игровой интерфейс, 5. Интерпретатор языка Java от Sun
сбора. Воины также имеют подобную другие создавали полноценные про- Microsystems – http://www.java.com/en.
шкалу, однако относится она к запасу должения с новыми миссиями и сю- 6. Jdoom – http://www.doomsdayhq.com.
их жизненных сил. Во время боя на эк- жетными линиями. Находились энту- 7. Официальный сайт игры OpenTTD –
ране отображается урон, наносимый зиасты, не желавшие мириться с тем, http://www.openttd.org.
существами друг другу («отлетающие» что их любимые проекты исказили 8. Сайт UFOAI Team – http://ufo.myexp.de.
цифры). Появилась очередь построек до неузнаваемости, и бравшие «все 9. Кроссплатформенный движок Stratagus –
в производственных зданиях. Выделе- в свои руки». http://stratagus.sourceforge.net.
ние объектов ранее было ограничено Все представленные OpenSource- 10. Сайт проекта WarGus – http://wargus.
девятью юнитами, теперь же его нет. проекты существуют в версиях для не- sourceforge.net.

№2, февраль 2007 77


bugtraq

Уязвимость при обработке .rc-файлов


в Microsoft Visual Studio
Программа: Microsoft Visual Studio 6 Professional SP6,
Выполнение произвольных команд Microsoft Visual Studio 6 Enterprise SP6.
в TYPO3 Опасность: Низкая.
Программа: TYPO3 4.0.3 и более ранние версии, rtehtmlarea Описание: Уязвимость существует из-за ошибки провер-
(расширение к TYPO3) 1.4.2 и более ранние версии. ки границ данных при обработке .rc-файлов, содержа-
Опасность: Высокая. щих слишком длинную строку после текста: «1 TYPELIB
Описание: Уязвимость существует из-за недостаточной об- MOVEABLE PURE». Удаленный пользователь может с по-
работки входных данных в параметре userUid в сценарии мощью специально сформированного .rc-файла вызвать
sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-check- переполнение стека и выполнить произвольный код на це-
logic.php перед использованием их в команде aspell. Уда- левой системе.
ленный пользователь может выполнить произвольные ко- URL производителя: www.microsoft.com.
манды на системе. Для успешной эксплуатации уязвимос- Решение: В настоящее время cпособов устранения уязви-
ти опция safe_mode должна быть отключена в конфигура- мости не существует.
ционном файла PHP. Пример:
--- post request ---
POST /typo3/sysext/rtehtmlarea/htmlarea/plugins/ ↵ Множественные уязвимости
SpellChecker/spell-
check-logic.php?id=1 HTTP/1.1 в CA BrightStor ARCserve Backup
Host: www.typo3host.abc Программа: BrightStor Enterprise Backup 10.x, BrightStor
User-Agent: none
Content-Type: application/x-www-form-urlencoded ARCserve Backup 9.x, BrightStor ARCserve Backup 11.x
Content-Length: 111 (for Windows), BrightStor ARCserve Backup 11.x (for Microsoft
psell_mode=fast&to_p_dict=1&cmd=learn&userUid=test; ↵
+echo+'shell'+>+ SQL Server), BrightStor ARCserve Backup 11.x.
/tmp/shell.txt+%23&enablePersonalDicts=true Опасность: Средняя.
--- /post request ---
Описание: 1. Уязвимость существует из-за ошибки при об-
URL производителя: www.typo3.org. работке opnum 0xBF RPC-запросов в службе Tape Engine.
Решение: Установите последнюю версию (4.0.4) с сайта Удаленный пользователь может послать службе на порт
производителя. 6502/TCP специально сформированный RPC-запрос и вы-
полнить произвольный код на целевой системе.
2. Уязвимость существует из-за ошибки проверки гра-
ниц данных при обработке opnum 0x2F и opnum 0x75 RPC
запросов в службе Message Engine RPC. Удаленный поль-
зователь может послать приложению на порты 6503/TCP
Переполнение буфера и 6504/TCP специально сформированный RPC-запрос, вы-
в Microsoft Help Workshop звать переполнение буфера и выполнить произвольный код
Программа: Microsoft Help Workshop 4.03.0002, возможно, на целевой системе.
более ранние версии. 3. Уязвимость существует из-за ошибки проверки гра-
Опасность: Средняя. ниц данных при обработке 0xCF RPC-запросов в службе
Описание: 1. Уязвимость существует из-за ошибки провер- Tape Engine RPC. Удаленный пользователь может послать
ки границ данных при обработке .CNT-файлов. Удаленный приложению на порт 6503/TCP специально сформирован-
пользователь может с помощью специально сформирован- ный RPC-запрос, вызвать переполнение буфера и выпол-
ного .CNT-файла вызвать переполнение буфера и выпол- нить произвольный код на целевой системе.
нить произвольный код на целевой системе. 4. Две ошибки проверки границ данных при обработке
2. Уязвимость существует из-за ошибки проверки гра- RPC запросов обнаружены в службе Mediasrv.exe. Удален-
ниц данных при обработке .HPJ-файлов. Удаленный поль- ный пользователь может с помощью специально сформи-
зователь может с помощью специально сформированного рованного RPC-запроса вызвать переполнение стека и вы-
.HPJ-файла, содержащего слишком длинную строку в пара- полнить произвольный код на целевой системе.
метре HLP в секции OPTIONS, вызвать переполнение стека 5. Уязвимость существует из-за ошибки проверки гра-
и выполнить произвольный код на целевой системе. ниц данных в ASCORE.dll при обработке opnum 0x2F RPC
URL производителя: www.microsoft.com. запросов в службе Message Engine RPC. Удаленный поль-
Решение: В настоящее время cпособов устранения уязви- зователь может послать специально сформированный RPC-
мости не существует. запрос на порты приложения 6503/TCP и 6504/TCP, вызвать
переполнение стека и выполнить произвольный код на це-
левой системе.
URL производителя: www3.ca.com.
Решение: Установите исправление с сайта производите-
ля.

78
bugtraq

Переполнение буфера
в Apple Mac OS X slpd
Целочисленное переполнение Программа: Apple Macintosh OS X 10.4.8 (8L2127)
при обработке UFS-образов в Mac OS X на x86‑платформе.
Программа: Apple Macintosh OS X 10.4.8, возможно более Опасность: Низкая.
ранние версии. Описание: Уязвимость существует из-за ошибки провер-
Опасность: Высокая. ки границ данных в SLP-демоне (slpd) при обработке поля
Описание: Целочисленное переполнение обнаружено attr-list в регистрационном запросе. Локальный пользова-
в функции ffs_mountfs() при обработке UFS-образов. Уда- тель может вызвать переполнение буфера и аварийно за-
ленный пользователь может с помощью специально сфор- вершить работу системы или выполнить произвольный код
мированного UFS DMG-образа вызвать переполнение ди- с повышенными привилегиями.
намической памяти и выполнить произвольный код на це- URL производителя: www.apple.com/macosx.
левой системе. Решение: В настоящее время cпособов устранения уязви-
URL производителя: www.apple.com/macosx. мости не существует.
Решение: В настоящее время cпособов устранения уязви-
мости не существует.

Уязвимость при обработке HTML-кода


в браузере Safari
Программа: Safari 2.0.4, возможно, более ранние версии.
Уязвимость при обработке файловой Опасность: Низкая.
системы HFS+ в Mac OS X Описание: Уязвимость существует из-за ошибки при обра-
Программа: Apple Macintosh OS X 10.4.8 (x86). ботке комментариев в определенных тегах на HTML-страни-
Опасность: Низкая. це. Удаленный пользователь может выполнить произволь-
Описание: Уязвимость существует из-за ошибки в функ- ный код сценария в браузере жертвы в контексте безопас-
ции do_hfs_truncate() в при обработке файловой системы ности целевого сайта, если в комментарии присутствует со-
HFS+. Злоумышленник может с помощью специально сфор- ответствующий закрывающий тег (например тег title).
мированного DMG-образа, содержащего файловую систе- URL производителя: www.apple.com/macosx/features/
му HFS+ вызвать критическую ошибку ядра системы. safari.
Уязвимость может эксплуатироваться посредством бра- Решение: В настоящее время cпособов устранения уязви-
узера Safari, если включена опция «Оpening safe files after мости не существует.
downloading».
URL производителя: www.apple.com/macosx.
Решение: В настоящее время cпособов устранения уязви-
мости не существует.

Переполнение буфера при обработке


RTSP-ссылок в Apple Quicktime
Программа: Apple Quicktime 7.1.3.100.
Опасность: Высокая.
Уязвимость в shared_region_map_file_np() Описание: Уязвимость существует из-за ошибки провер-
в Apple Mac OS X ки границ данных при обработке RTSP-ссылок. Удаленный
Программа: Apple Macintosh OS X 10.4.8 (PPC), возможно, пользователь может с помощью специально сформирован-
более ранние версии. ного QTL-файла, содержащего слишком длинный параметр
Опасность: Низкая. src (более 256 байт) вызвать переполнение стека и выпол-
Описание: Уязвимость существует из-за ошибки в систем- нить произвольный код на целевой системе. Пример:
ном вызове shared_region_map_file_np(). Злоумышленник
"rtsp://[any character]:[>256 bytes]")
может установить высокое значение для mapping_count
и вызвать отказ в обслуживании системы. URL производителя: www.apple.com/quicktime.
URL производителя: www.apple.com/macosx. Решение: В настоящее время cпособов устранения уязви-
Решение: В настоящее время cпособов устранения уязви- мости не существует.
мости не существует.
Составил Александр Антипов

№2, февраль 2007 79


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

Глобальная сетевая энциклопедия

Илья Александров
Гигабайты информации. Ответ на любой вопрос. Сотни тысяч статей на всевозможные
темы. Безусловно, появление подобного ресурса было предрешено. Как вы уже догадались,
речь пойдёт о wikipedia.org.

История энциклопедии бирало самую разную информацию, ни для работы с веб-энциклопедией


Энциклопедии на правах «кладезя однако сайт был скорее развлечени- не хватало, а обычному человеку на-
знаний» занимают особое место сре- ем, чем серьезным энциклопедичес- писать туда было непросто. Пользо-
ди других книг. Пятьдесят томов «Боль- ким изданием. ватель Интернета был обязан снача-
шой советской энциклопедии». Не ус- Подобный неказистый сайт стал ла отправить текст одному из редак-
тупающая ей по объёму «Британника». вдохновением для Лоурэнса Сэнгера торов, который читал его, и в случае
Но время не стоит на месте. В истории (Lawrence «Larry» Sanger) и Джимми одобрения отправлял на утвержде-
человечества появляются новые стра- Уэйлса (Jimmy Wales), в то время ра- ние своим коллегам. Когда несколь-
ницы, ученые мужи совершают новые ботавших в американской компании ко человек признавали высокое ка-
открытия. В результате составителям Bomis. Занимая пост исполнительно- чество текста, он отсылался редакто-
бумажных энциклопедий приходит- го директора компании, Джимми вы- ру (copyeditor). Тот находил защищен-
ся постоянно перевыпускать свои из- делил деньги на финансирование про- ные авторским правом текст и рисун-
дания, дописывая или переписывая екта по созданию бесплатной онлай- ки и удалял их. И лишь после этого ста-
их содержимое. новой энциклопедии. Спустя несколь- тья наконец могла быть опубликована
Огромное количество занимаемо- ко недель был зарегистрирован домен на Nupedia.com.
го пространства и стремительно уста- Nupedia.com. Главным редактором сай- В итоге за месяцы работы было
ревающая информация – главные не- та стал Сэнгер. опубликовано всего 20 статей. Еще
достатки современных энциклопедий. По плану создателей авторами ста- около шестидесяти находилось в дора-
И если первую проблему можно ре- тей в «Нупедию» должны были стать ботке. Восемьдесят статей – маловата
шить, купив ту же «БСЭ» на DVD-дис- люди из академической и научной сре- цифра для энциклопедии. Бесперспек-
ке, то с обновлениями ситуация по-пре- ды. То есть те же люди, занимающие- тивность подобного подхода к накопле-
жнему остается неопределённой. ся написанием статей для обычных бу- нию материалов стала очевидной.
Вот здесь и приходит на помощь мажных энциклопедий. Профессорам Уэйлс и Сэнгер уже подумывали
Интернет, обла дающий огромны- университетов (в том числе и россий- закрыть «Нупедию», когда на помощь
ми объемами хранимой информации, ских) рассылались сообщения с пред- пришел их старый друг – Бен Ковиц
а также возможностью мгновенного ложением поучаствовать в проекте. (Ben Kovitz). Бен рассказал Лари о тех-
редактирования материалов в режи- Сначала все шло неплохо – команду нологии Wiki (о которой я расскажу
ме «реального времени». Первая элек- добровольцев, желающих поучаство- чуть позже), позволяющей участвовать
тронная библиотека, everything2.com, вать в проекте Nupedia, отобрать уда- в обновлении сайта любому желающе-
появилась в 1999 году. Небольшое со- лось. Но процесс обновления сайта му, минуя редакторов и администрато-
общество пользователей портала со- шел очень медленно. Ученым време- ров. Ученых, работавших над Nupedia,

80
ретроспектива
подобный подход возмутил – они счи- К ноябрю 2006 года английский
тали, что наполнение сайта непрофес- раздел «Википедии» мог похвастаться
сионалами все испортит. Кроме того, умопомрачительным количеством ста-
появлялась угроза вандализма со сто- тей – более полутора миллионов. Рос-
роны недоброжелательных пользова- сийский же сегмент имеет более скром-
телей. Посовещавшись, Уэйлс и Сэн- ные показатели – 124 000 статей.
гер вернули старый движок на Nupedia.
com, а для энциклопедии на базе тех- «Википедия» по-русски
нологии Wiki был зарегистрирован Как уже говорилось ранее, русский
сайт wikipedia.com, позже переехав- раздел «Википедии» был создан в мае
ший на домен в зоне .org. Это собы- 2001 года. Первая статья называлась
тие произошло 15 января 2001 года. «Россия», и ее содержание сводилось
Эта дата и считается днем создания к фразе «Россия – великая страна».
«Википедии». Первыми статьями про- Пару месяцев спустя какой-то остро-
екта стали материалы, перенесённые умный посетитель исправил содержа-
с nupedia.com. Все остальные статьи ние статьи на предложение «Россия – Джимми Уэйлс – создатель «Википедии»
писались уже добровольцами – обыч- родина слонов (ушастых, повышенной
ными пользователями Интернета. проходимости – см. мамонт)», причем вой информации. Благодаря подобной
В мае 2001 года «Википедия» ста- эта фраза провисела на главной стра- «рекламе» уже к концу года была на-
ла международным порталом – были нице около года и стала объектом шу- писана десятитысячная статья, и нако-
запущены разделы на русском, немец- ток пользователей Интернета. нец началось серьезное развитие рус-
ком, шведском, французском, испанс- Первым администратором русско- ского сегмента портала.
ком и других языках. го раздела стал Брайан Виббер (Brion В 2005 появились рубрики «Знае-
В 2002 году основатель wikipedia.org Vibber), русским не владевший совер- те ли вы, что…», «События дня», впер-
Ларри Сэнгер покинул своё детище. шенно. вые на русском вышли «Вики-новости».
Ларри критиковал проект за «антиэли- В 2003 году у энциклопедии нако- Летом того же года в Петербурге про-
таризм», подразумевая, что авторами нец появились первые активные авто- изошла первая wiki-встреча. Ее орга-
являются неспециалисты; обвинил его ры – Виталий Волков и Владимир Ме- низовали шесть «википедийцев», при-
в неуважении к экспертам. Примерно дейко (больше известный под ником нимающих активное участие в обнов-
в это же время прекратил свое сущес- Dr Bug). Оба получили статус «бюрок- лении энциклопедии.
твование ресурс Nupedia.com, к тому ратов» (о том, что представляют со- Наша «Википедия» является лауре-
времени окончательно растерявший бой статусы на «Википедии», мы пого- атом нескольких премий. На фестива-
свою популярность. ворим позже), что давало им дополни- ле «Интернить-2005» она была назва-
Количество статей в «Википедии» тельные возможности перед остальны- на «Сервисом года». В 2006 она по-
стремительно росло. 20 июня 2003 го- ми пользователями wikipedia.org лучила премию Рунета в номинации
да Уэйлс создает фонд «Викимедиа», К августу 2003 года суммарное ко- «Наука и образование».
организацию, занимающуюся подде- личество статей в русском сегменте И самое главное – летом 2006 го-
ржкой онлайновой энциклопедии. Фонд «Википедии» достигло пяти тысяч, од- да количество статей в русском раз-
также является создателем некоторых нако по сравнению с англоязычным ва- деле «Википедии» достигло ста ты-
родственных «Википедии» проектов. риантом эта цифра была смешной. сяч, благодаря чему он вошел в спи-
В 2004 году стартовала кампа- Примерно в это же время в одном сок самых успешных сегментов эн-
ния по сбору средств на развитие популярном компьютерном журнале циклопедии.
wikipedia.org. Начало оказалось успеш- была опубликована статья о Wikipedia,
ным, в результате чего энциклопедия вызвавшая большой приток новых Технология Wiki
по сей день продолжает существовать участников. Статья, написанная од- Говоря о «Википедии», нельзя не рас-
на выручку от пожертвований и гран- ним из администраторов русскоязыч- сказать о технологии, в честь которой,
тов. Впрочем, с финансами проблем ного раздела «Википедии», положила собственно, энциклопедия и получи-
никогда особо не было – в своё вре- начало серии публикаций об энцик- ла своё название. Главное достоинс-
мя по Сети ходил слух, что Уэйлс пот- лопедии и в других средствах массо- тво Wiki – возможность любого желаю-
ратил на раскрутку портала около по-
лумиллиона долларов. Используемое «Википедия» на бумаге получать по 50 центов. Кстати, уже сей-
ресурсом программное обеспечение, В последнее время стали всё чаще появ- час существует сервис «PediaPress». Лю-
к слову, исключительно свободно-рас- ляться предложения по изданию энцикло- бой желающий может выбрать необхо-
пространяемое: 39 серверов работают педии в бумажном варианте. Первой стра- димые статьи из англоязычной «Википе-
под управлением дистрибутива RedHat ной, осуществившей подобную задумку, дии», которые затем будут опубликованы
Linux, а движок MediaWiki (см. статью станет, скорее всего, Германия. Издатель- в виде единой книги. Печатью занимает-
«Работаем с MediaWiki» на стр. 84-91) ство «Zenodot» планирует к 2010 году вы- ся фирма «InstaBook». За каждый экзем-
написан на PHP и распространяется пустить на рынок сто томов «Википедии». пляр желающему придется выложить по-
бесплатно в виде исходных кодов. С каждой проданной книги портал будет рядка 80 евро.

№2, февраль 2007 81


ретроспектива
дены к двум вариантам: «редактиро-
вать» и «сохранить». Wiki допускает
возможность работы не только с текс-
том, но и с мультимедийными матери-
алами: графическими изображениями,
звуковыми файлами.
Любая статья сайта, базирующего-
ся на Wiki, представляет собой собс-
твенно текст в HTML- или Wiki-размет-
ке. Теги Wiki считаются более просты-
ми, чем в HTML. Например, если вы пи-
шете новый материал в Wikipedia и хо-
тите вставить ссылку на статью «Ком-
пьютеры», прописывать полный веб-
адрес статьи нет необходимости. До-
статочно просто взять название тре-
буемой статьи в двойные квадратные
скобки: [[компьютеры]], и вы получите
готовый линк. Причем «битых» ссылок
нет по определению – линк на сущест-
вующую статью будет выделен синим
Заглавная страница портала цветом, а если материал еще не напи-
сан – красным.
Wiki сейчас используется на многих
сайтах для увеличения интерактивнос-
ти, но на Wikipedia.org технология реа-
лизована наиболее полно.

Современные реалии
свободной энциклопедии
Идеология wikipedia.org – это прежде
всего бесплатность и свобода рас-
пространения информации. Основные
принципы «Википедии» закреплены
в так называемых пяти столпах:
1. «Википедия» – это энциклопедия.
Не беспорядочная свалка текстов,
не газета, не трибуна агитатора.
2. Авторы статей всегда придержи-
ваются нейтральной точки зрения.
Беспристрастность людей, напол-
няющих содержимым энциклопе-
дию, необходима для того, чтобы
Cтатья «Компьютер» прозвучали разные точки зрения,
чтобы читатель сам сделал вывод
щего добавлять свои материалы и ре- гия была создана для нужд его «пор- о предмете или событии, обсужда-
дактировать уже имеющиеся. Все из- тлендского хранилища образцов про- емом в тексте.
менения страниц постоянно сохраня- граммного кода», в котором находи- 3. Статьи «Википедии» являются сво-
ются, поэтому, если кто-нибудь удалит лись написанные им программы. Сло- бодными для использования и ре-
статью или напишет вместо нее какую- во Wiki он услышал, когда был на Га- дактирования. Все материалы эн-
нибудь гадость, вернуть прежнюю ко- вайях. На местном языке его можно циклопедии распространяются по
пию можно будет моментально. перевести как «быстро-быстро». Кста- лицензии GNU Free Documentation
Wiki – это базирующаяся на гипер- ти: этим словом на Гавайях называют License. Это означает, что каждый
текстовых ссылках среда, главное на- автобусы. может воспользоваться статьей
значение которой – хранение и струк- Технология Wiki изначально раз- из энциклопедии и исправить ее
туризация информации. Первая вер- рабатывалась в расчете на коллек- при условии, что материалы будут
сия Wiki была разработана еще в 1995 тивное взаимодействие пользовате- распространяться по той же лицен-
году программистом Уордом Каннин- лей, вследствие чего работать с движ- зии и в них будет ссылка на перво-
гемом (Ward Cunningham). Техноло- ком очень просто. Все функции све- источник.

82
ретроспектива
4. Каждый участник обязан соблю-
дать свод правил. Не оскорблять Родственные проекты Вот лишь некоторые из них:
других участников, сохранять ней- О фонде «Викимедиа», развивающем n «Абсурдопедия» (http://absurdopedia.
тральную точку зрения при работе и спонсирующем свободную энциклопе- wikia.com) – шуточная энциклопедия,
над «острыми» статьями, не пра- дию, я уже говорил. Также этот фонд под- созданная ради смеха. В ней обсужда-
вить чужую статью, если она уже держивает ряд других сайтов: ется то же, что и в «Википедии», толь-
полностью дописана и не нужда- n «Викитека» (http://ru.wikisource.org/ ко с саркастической точки зрения.
ется в дополнении. wiki) – онлайн-библиотека. Книги, ру- n «Анархопедия» (http://rus.anarchopedia.
5. Помнить о приведенных выше че- ководства. org) – энциклопедия для анархистов.
тырех правилах. Получать удо- n «Викисловарь» (http://ru.wiktionary.org/ n «Викизнание» (http://www.wikiznanie.
вольствие от работы на общее wiki) – собственно словарь. ru) – использует более свободную ли-
благо и помнить, что все опублико- n «Викиновости» (http://ru.wikinews.org/ цензию BSD. Материалы могут быть
ванные статьи сохранятся для по- wiki) – новостной интернет-портал. свободно использованы в других из-
томков. n «Викицитатник» (http://ru.wikiquote.org/ даниях, которым в свою очередь поз-
wiki) – цитаты известных писателей, волено изменить лицензию на любую
Успех Wikipedia доказал успеш- государственных деятелей, крылатые другую, например на GNU FDL. В «Ви-
ность такого подхода. Статистика эн- фразы. кизнании» допускается отклонение от
циклопедии поражает: 2,5 миллиар- n «Викисклад» (http://commons.wikimedia. нейтральной точки зрения, разрешены
да запросов в месяц и 200 языковых org/wiki/) – сайт, на котором хранятся рассуждения о чем-либо. То есть, ес-
разделов. Согласно опросам, «Вики- мультимедийные файлы, сопровожда- ли wikipedia.org основывается исклю-
педией» ежедневно пользуются 2,5 % ющие статьи на указанных выше ресур- чительно на фактах, здесь вы можете
от числа всех пользователей Интер- сах. прочитать текст вроде «Оружия четвер-
нета. той мировой войны».
В 2006 году бюджет wikipedia.org Выше перечислены все проекты, ко- n «Открытая энциклопедия» (http://
составил порядка 700 тысяч долларов. торыми занимается фонд «Викимедиа». open-site.org) – контролируется ре-
Источник дохода – фонд «Викимедиа» Но есть ресурсы, к нему отношения не име- дакторами, самостоятельно решаю-
и пожертвования пользователей. ющие, однако созданные под влиянием по- щими, публиковать статьи от авторов
Впрочем, иногда «Wikipedia» все- пулярности «Википедии». или нет.
таки подвергается нападкам со сто-
роны критиков. По их мнению, сла- Что касается ботовладельцев – Впрочем, участники не только
бым местом энциклопедии остается это участники, которые имеют воз- выясняют между собой отношения
угроза со стороны вандалов. Но дви- можность использовать специальные (без чего при огромном количестве
жок Wiki вместе с лозунгом «чинить скрипты для осуществления рутинных «википедистов» не обойтись), но и дру-
легче, чем ломать» себя полностью операций. желюбно общаются.
оправдал. Распределение участников по Для этого есть форум и специаль-
Журналисты «New-York Times» да- иерархии необходимо и для решения ные IRC-каналы. Впрочем, составите-
же провели простой эксперимент: спорных вопросов. Для этого есть не- ли энциклопедии сетевыми разгово-
они стерли несколько страниц, а в не- сколько путей. рами не ограничиваются и регулярно
которых статьях просто изменили да- Первый – голосование, которое встречаются в реальном мире.
ты. В течение часа все внесённые ими обычно проводится при утвержде- Ежегодно проводится междуна-
изменения были исправлены. нии стандарта написания. Например, родная встреча участников портала
«Фолклендские» или «Мальвинские» под названием «Викимания». На этой
Wiki-сообщество острова. Естественно, вариант, на- конференции, кроме неофициального
«Википедия» – это не только храни- бравший большее количество голосов, общения, обсуждаются текущие про-
лище информации, но и сообщест- будет утвержден. блемы портала, а также ведутся раз-
во людей, работающих над энцикло- Во время разрешений личных кон- говоры о новых идеях и разработках.
педией. На портале существует своя фликтов привлекаются администра- В 2005 году местом проведения «Ви-
иерархия. Наивысшую позицию в ней торы. кимании» стала Германия, в 2006 го-
занимают «Бюрократы». Они наделе- Например, в случаях, когда воз- ду – США.
ны правами переименовывать участ- никает спор авторов статьи на одну Регулярно проходят «Викивстре-
ников, делать их администраторами и ту же тему, посредник выбирает луч- чи» – мероприятия, на которые собира-
и ботовладельцами. В русской «Вики- ший вариант для публикации. ются участники проекта из близко рас-
педии» на данный момент существует И в совсем уж крайних случаях со- положенных населенных пунктов.
три бюрократа. зывается арбитражный комитет, со-
Администраторам позволено уда- стоящий из наиболее опытных и ува- При написании статьи были использо-
лять страницы, временно защищать жаемых «википедистов». Бюрокра- ваны материалы с портала wikipedia.org.
статьи от изменений, блокировать ак- ты и администраторы, совещаясь,
тивность других пользователей, если выносят свое решение по спорному Редактор рубрики
те нарушают правила. вопросу. Дмитрий Мороз

№2, февраль 2007 83


web

Работаем с MediaWiki
Посмотрел, Подумал, Поправил.

Три Правила при работе с wiki

Евгений Балдин

Одно из удивительных свойств жизни – самоорганизация. MediaWiki – это механизм, который


превращает старые-добрые статичные тексты в «живые», постоянно развивающиеся
хранилища информации.

84
web

П
ожалуй, вряд ли найдётся чело- MediaWiki под держивает про -
век, владеющий информацион- странства имён (namespaces). Напри-
ными технологиями, и в то же мер, все имена пользователей в русс-
время не слышавший о существова- коязычной Википедии регистрируют-
нии wiki. Wiki – это простая в освоении ся в пространстве имён «Участник:».
гипертекстовая среда. Технология поз- MediaWiki поддерживает механизм
воляет легко организовывать взаимо- категорий, что позволяет организо-
действие между людьми путём созда- вывать страницы по темам. А так как
ния «живой документации». Наиболее сами категории также являются спе-
известным и масштабным примером циально оформленными страницами,
применения wiki-технологий на сегод- то можно создавать сложные иерар-
ня, безусловно, является Википедия, хические структуры.
российский сегмент которой доступен Wiki-идею что, «Всё есть статья»
по адресу http://ru.wikipedia.org. развивает наличие механизма шаб-
Цветок подсолнуха – официаль- лонов (templates). Шаблоны – это бло- Место MediaWiki в цепочке
«информация» ↔ «Весь Мир»
ный логотип MediaWiki. Двойные квад- ки текста из специальным образом со-
ратные скобки на заднем плане сим- зданных статей, которые динамичес-
волизируют синтаксическое выраже- ки подгружаются внутри других ста-
ние для создание гиперссылки внут- тей. Шаблоны вызываются с помо-
ри Wiki. щью двойных фигурных скобок: {{имя
Говорить о wiki можно безгранично. шаблона}}. Результат вызова шаблона {{Сторонник
свободного ПО}} в русскоязычной
Сегодня речь пойдёт о движке Википе- MediaWiki позволяет пользоваться Википедии
дии – MediaWiki. множеством стандартных HTML-тегов.
MediaWiki появился благодаря не- Кроме упомянутого также имеется на- стройки таблицы стилей (stylesheets)
мецкому студенту-биохимику Мангу- бор меток для структурной разметки и клиентских JavaScript-скриптов, ис-
су Манске (Magnus Manske) специаль- текста. За подробностями о правилах полняемых при каждом просмотре.
но для замены первоначального perl- вики-разметки лучше всего обратить-
движка Википедии. В 2002 году Вики- ся к статье из русскоязычной Википе- Системные требования
педия перешла на новый движок, ко- дии «Википедия:Справка». Тра диционно д ля развёртывания
торый предоставлял дополнительную В MediaWiki встроен механизм за- MediaWiki используется так называе-
функциональность и лучшую масшта- грузки мультимедийных файлов. С по- мое LAMP-окружение:
бируемость, что положительно сказа- мощью LaTeX MediaWiki поддерживает n L – значит Linux. Несмотря на то,
лось на развитии обоих программных отображение математических формул, что для использования рекоменду-
продуктов. В 2003 году появилось на- и многое из того, что может LaTeX, на- ется Debian GNU/Linux, MediaWiki
звание движка MediaWiki и офици- чиная от изображения шахматных пар- можно запустить как и на BSD, Sun
альный логотип. Появление собс- тий и нотных записей, заканчивая хи- Solaris, Apple MacOS X, так даже и
твенного имени и логотипа означало, мическими формулами и сложными на Microsoft Windows.
что MediaWiki стал самостоятельным графами. n A – значит Apache. В качестве
и независимым от Википедии програм- Все действия с контентом записы- веб-сервера следует использо-
мным продуктом. ваются и в любой момент возможно вать Apache, хотя есть информа-
Благодаря свободной лицензии возвращение к любой из предыдущих ция, что для этой цели можно ис-
GPL, а так же существованию Ви- версий. Восстановить последнее кон- пользовать и другие веб-серверы,
кипедии, MediaWiki на текущий мо- систентное состояние документа пос- в частности IIS 6.0.
мент – одно из самых популярных ре- ле намеренной или случайной порчи n M – значит MySQL. Рекомендуемая
шений для создания гипертекстовых информации много проще, чем осу- версия MySQL 4.0, хотя можно ра-
wiki-сред. ществить эту порчу. ботать и с 4.1/5.0. Чтобы в качест-
MediaWiki поддерживает разгра- ве хранилища данных воспользо-
Возможности MediaWiki ничение пользователей на группы ваться возможностями PostgreSQL,
Ссылки внутри гипертекстовой среды и простейшие механизмы ограниче- потребуется установить версию
при использовании MediaWiki созда- ния доступа. Пользовательский интер- MediaWiki 1.8 – текущая стабильная
ются с помощью двойных квадратных фейс можно отредактировать на ле- версия. Поддерживается версия
скобок. Например, текст [[Википедия: ту. Это реализовано через редакти- PostgreSQL начиная с 8.1, требует-
Установка MediaWiki]] внутри русско- рование статей в пространстве имён ся предустановка plpgsql и tsearch2.
го сегмента Википедии представляет «MediaWiki:». Для этого пользователь Следует также учитывать, что под-
из себя ссылку на краткую одноимён- должен обладать необходимыми при- держка PostgreSQL добавлена от-
ную статью по установке MediaWiki. вилегиями. Как правило, таких пользо- носительно недавно и не оттести-
В названиях статей разрешены про- вателей называют администраторами. рована, хотя возможность замены
белы и различные знаки препинания Обычный же пользователь может MySQL более продвинутой СУБД
за некоторым исключением. поменять интерфейс с помощью на- довольно заманчива.

№2, февраль 2007 85


web
поэтому самостоятельная установка пакета сводится
к копированию исходников, взятых, например на http://
sourceforge.net/projects/wikipedia, в выбранную директо-
рию (в дальнейшем эта директория будет упоминаться
как «wikidir»). Последняя стабильная версия MediaWiki
на 1 января 2007 года – 1.8.2.

# Установка PHP - необходима версия не ниже 5-й


> sudo apt-get install php5
# Распаковка
> tar -xvzf mediawiki-1.8.2.tar.gz
# Перенос исходников в выбранную директорию
> mv mediawiki-1.8.2 "wikidir"
# Выясняем, под каким пользователем выполняется Apache
> ps aux | grep apache | cut -f1 -d' ' | sort | uniq
root
www-data

# Даём возможность Apache управлять директорией


Заглавная страница при первом обращении к MediaWiki > chown -R www_data:www_data "wikidir"
до настройки
О том, куда были перенесены исходники, следует уве-
n P – значит PHP или Perl, реже Python. Начиная с версии домить Apache. Например, положив в /etc/apache2/conf.d/
1.7 MediaWiki требует PHP версии не ниже 5 (рекомен- файл mediawiki.conf со следующим содержанием:
дуется 5.1). Если же нет возможности перейти на пятую
версию PHP с четвёртой, то придётся воспользоваться # Сопоставление физической директории и пути в URL
Alias /wiki "wikidir"
более старой версией MediaWiki – 1.6.
# Доступ по умолчанию
<Directory "wikidir">
Для просмотра с пользовательской стороны потребует- Options +FollowSymLinks
ся более-менее современный веб-браузер. AllowOverride All
order allow,deny
MediaWiki не простая система и вполне может оказать- allow from all
ся, что для небольших wiki-сайтов лучше походят другие </Directory>
wiki-решения, например, UseModWiki. Официальный сайт # доступ к некоторым директориям следует ужесточить
UseModWiki расположен по адресу http://www.usemod.com/ <Directory "wikidir"/config>
Options -FollowSymLinks
cgi-bin/wiki.pl. AllowOverride None
Cледует обратить внимание на другие CMS, если больше </Directory>
<Directory "wikidir"/images>
интересует безопасность и гибкое разграничение полномо- Options -FollowSymLinks
чий, нежели удобство в создании и наполнении сайта. AllowOverride None
</Directory>

Установка Теперь можно «обратиться» напрямую к MediaWiki. Ес-


В качестве базовой операционной системы рекоменду- ли всё устанавливается локально, то адрес обращения
ется дистрибутив Debian GNU/Linux. Установка в среде http://localhost/wiki.
MS Windows рекомендуется только для очень продвинутых Заглавная страница предлагает для начала настроить
пользователей, пошаговое руководство для которых изло- MediaWiki. После перехода к странице настройки укажи-
жено в статье Newcomers_guide_to_installing_on_Windows те название создаваемой wiki, язык интерфейса (русский
на http://meta.wikimedia.org. язык присутствует), лицензию, под которой по умолчанию
Для стабильной ветки Sarge (верно на 1 января будет публиковаться информация (очень важно в случае
2007 года) пакет mediawiki доступен только из сторон- публично открытых wiki), имя и пароль первого админис-
них apt-репозиториев, например, с Debian Backports тратора (например, так и назвать wiki), а также полити-
(http://www.backports.org). В пока ещё тестовую ветку Etch ку авторизации. Последним пунктом идёт настройка ба-
пакет mediawiki версии 1.7 включён уже по умолчанию – зы данных.
eго надо только установить. Перед тем как нажать заветную кнопочку «Install
# Установка MediaWiki MediaWiki!», надо соответствующим образом подготовить
> sudo apt-get install mediawiki1.7 mediawiki1.7-math
хранилище данных.
На текущий момент можно выбирать между MySQL
Установка пакета автоматически потребует установ- и PostgreSQL. В обоих случаях создайте пользователя,
ки PHP5. В дальнейшем, если это не оговорено особо, под которым будет работать MediaWiki, например, wikiuser
предполагается, что в качестве базы выбран дистрибу- и базу данных, куда будут складироваться данные, напри-
тив Debian GNU/Linux и вся установка идёт на полностью мер, wikidb.
доступном администратору компьютере. Ничего не за-
прещает установить MediaWiki самостоятельно, напри- MySQL
мер, для того чтобы вместо MySQL в  качестве хранилища MySQL было первым и остаётся на текущий момент основ-
воспользоваться PostgreSQL. MediaWiki написан на PHP, ным хранилищем для MediaWiki.

86
web
# Установка MySQL (рекомендуется версия старше 4.0) Поэтому для увеличения производительности PostgreSQL
> sudo apt-get install mysql-server
# Установка phpMyAdmin для администрирования MySQL необходимо соответствующим образом перенастроить.
> sudo apt-get install phpmyadmin Для возможности полнотекстового поиска (поиск до-
кумента на основании содержимого этого документа)
При установке MySQL по умолчанию пароль у супер- по страницам wiki необходимо добавить модуль tsearch2
пользователя root отсутствует. Поэтому первое, что сде- (http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/):
лайте – установите его, например, с помощью программы
phpMyAdmin. > sudo apt-get install postgresql-contrib-8.1
# Инициализация механизма полнотекстового поиска tsearch2
Если установка локальная, то для этого достаточ- # (путь до tsearch2.sql относительно директории PostgreSQL)
но обратиться в раздел «Изменить пароль» по адресу > psql -U "супер"wikidb -f contrib/tsearch2.sql
# Подсоединяемся к wikidb под суперпользователем
http://localhost/phpmyadmin. Заходя без пароля первый раз > psql -U "супер" wikidb
под пользователем root, выберите язык интерфейса. Да-
# Смотрим, какие таблицы были созданы
лее создайте пользователя wikiuser, базу wikidb и дайте wikidb=> \d
права этому пользователю на create, select, insert, update,
Список отношений
delete и lock tables в пределах базы данных wikidb. Те же Схема | Имя | Тип | Владелец
действия можно проделать с помощью утилит mysqladmin --------+--------------+---------+----------
public | pg_ts_cfg | таблица | "супер"
и mysql. public | pg_ts_cfgmap | таблица | "супер"
public | pg_ts_dict | таблица | "супер"
PostgreSQL public | pg_ts_parser | таблица | "супер"
(записей: 4)
Экспериментальная поддержка PostgreSQL появилась
в MediaWiki относительно недавно, с версии 1.7 и до сих до- # Разрешение на доступ к таблицам для wikiuser
статочно не оттестирована. Если MySQL среди свободных wikidb=> GRANT SELECT,UPDATE ON pg_ts_cfg TO wikiuser;
wikidb=> GRANT SELECT ON pg_ts_parser, pg_ts_dict, ↵
баз данных считается самой «популярной», то PostgreSQL pg_ts_cfgmap TO wikiuser;
по праву носит звание самой «продвинутой». Для нор-
мальной работы требуется установить PostgreSQL версии На момент написания статьи последняя версия MediaWiki
не ниже 8.1. При работе с базой данных лучше выполнять 1.8.2 без модификации при работе с PostgreSQL не позволя-
все необходимые действия из-под обычного пользователя. ла организовать полнотекстовый поиск по русским словам
Для этого проще всего завести в PostgreSQL пользователя (баг № 8470 на http://bugzilla.wikimedia.org). Для исправления
с именем, совпадающим с рабочей локальной учётной за- этой ошибки необходимо в файле language/Language.php
писью. Пусть для определённости это имя будет «супер»: найти функцию stripForSearch и, например, добавить вна-
чале простую проверку на базу данных:
# Установка базы данных (в разных системах по-разному)
> sudo apt-get install postgresql-8.1
# Создание учётной записи суперпользователя function stripForSearch( $string ) {
# (предварительно настраивается sudo для возможности global $wgDBtype;
# исполнения команд под пользователем postgres) if ( $wgDBtype != 'mysql' ) {
> sudo -u postgres createuser return $string;
}

Enternameofrole to add: "супер"
Shall the new role be a superuser? (y/n) y
CREATE ROLE Это уже поправлено в SVN-версии. PostgreSQL следу-
# Установка PHP-драйвера ет ставить пока только как экспериментальное хранилище,
> sudo apt-get install php5-pgsql так как упомянутая ошибка к сожалению пока не единс-
# Создание пользователя для wiki
> createuser -U "супер"-S -D -R -P -E wikiuser твенная.
Замечание: в PostgreSQL версии 8.2 входит модуль
Enter password for new role:
Введите снова:
tsearch2, который полностью поддерживает UTF-8, поэто-
CREATE ROLE му можно инициализировать базу данных командой initdb
с ключиком --locale=ru_RU.UTF‑8, что позволяет прозрач-
# Создание базы данных
> createdb -U "супер"-O wikiuser wikidb но работать с unicode-данными.
CREATE DATABASE В с ё, те п е р ь PostgreSQ L го то в д л я ус т а н о в к и
# Разрешение на использование процедурного языка plpgsql
> createlang -U "супер" plpgsql wikidb MediaWiki. Возможно, придётся подправить специфичные
для PostgreSQL параметры, которые по умолчанию соот-
Если имя учётной записи суперпользователя совпа- ветствуют стандартным установкам.
дает с именем, под которым вы работаете, то ключ -U
и имя после него можно опускать. Кроме упомянутого, Настройка
при совпадении учётных записей в системе и в базе дан- После того, как выбрано хранилище, указана база данных
ных PostgreSQL по умолчанию для локальных подсоедине- wikidb, пользователь wikiuser и пароль, можно нажать за-
ний работает доступ без пароля (механизм ident sameuser ветную кнопочку «Install MediaWiki!».
в pg_hba.conf). Если всё пройдёт нормально, то в директории «wikidir»/
Следует учитывать, что PostgreSQL сконфигурирован config будет создан файл настройки LocalSettings.php, ко-
так, чтобы можно было работать в условиях жёсткой не- торый следует переместить в родительскую директорию,
хватки ресурсов. то есть в «wikidir».

№2, февраль 2007 87


web
n $wgLogo – помещает в левом вер-
хнем углу личный логотип вмес-
то стандартного, который сам же
себя и предлагает заменить. Сле-
дует разместить в доступном мес-
те или загрузить (после разре-
шения загрузки) картинку разме-
ром 135x135 пикселей. Перемен-
ная $wgFavicon позволяет анало-
гичным образом настроить иконку
в адресной строке браузера.
n $wgEnableUploads – разрешает
(true)/запрещает (false) загружать
файлы на wiki. Если на сайте кро-
ме текста надо хранить картин-
ки, звуковые файлы, презентации,
pdf‑тексты и тому подобное, то за-
грузку следует разрешить.

При загрузке контролируется


формат файла, в частности по рас-
ширению. Чтобы отменить контроль
по расширению, приравняйте пере-
менную $wgCheckFileExtensions зна-
Cтраница настройки чению false. Можно пойти по пути раз-
решения каких-то определённых рас-
ширений.
Список разрешённых форматов
хранится в массиве $wgFileExtensions.
По умолчанию массив инициализиру-
ется следующим образом:

$wgFileExtensions = array('png', ↵
'gif', 'jpg', 'jpeg');

В противоположность списку раз-


решённых расширений есть спи-
сок запрещённых, который хранится
в $wgFileBlacklist. Значение по умол-
чанию можно посмотреть в файле
includes/DefaultSettings.php.
Переменная $wgMaxUploadSize ог-
раничивает размер загружаемого фай-
ла. По умолчанию она равна 100 Мб,
что обеспечивает все разумные пот-
ребности, если бы PHP само по себе
также не имело бы переменную, огра-
ничивающую объём загрузки. Найди-
те файл настройки php.ini и исправь-
те upload_max_filesize} до разумно-
го предела (значение по умолчанию
2 Мб). Учитывайте, что файлов может
быть несколько.
Окно phpMyAdmin В Debian искомый файл для Apache2
находится в директории /etc/php5/
Для пущей безопасности насто- LocalSettings.php, который представ- apache2/.
ятельно рекомендуется удалить ди- ляет собой набор инициализируемых Переменная $wgUploadSizeWarning
ректорию config сразу после установ- переменных. устанавливает предел на размер фай-
ки Wiki. Дальнейшая настройка будет Особый интерес заслуживают сле- ла, после которого при «закачке» вы-
частично состоять из правки файла дующие настройки: даётся предупреждение.

88
web
n $wgDefaultSkin – выбор «деко-
рации». Так как MediaWiki предо-
ставляет пользователю графичес-
кий интерфейс к редактированию
и управлению содержимого сай-
та, то очень много внимания, мож-
но сказать даже излишне много,
уделено художественной «отде-
лке» этого интерфейса. По умолча-
нию доступны четыре стандартных
варианта: «standard», «nostalgia»,
«cologneblue» и «monobook». Если
этого мало, то можно выбрать лю-
бую представленную в специальной
галерее http://meta.wikimedia.org/
wiki/Gallery_of_user_styles.

Вариантов настройки интерфейса


столько, что по этому вопросу можно
написать отдельную книгу. Лёгкость
изменения внешнего вида привела
к тому, что фактически всё, что мож-
но было в рамках этого механизма на-
строить, уже реализовано в виде гото-
вых стилей и расширений. Надо только
найти и выбрать подходящие.
При смене «декорации» по умол-
чанию очистите кэш, иначе страничка
при повторном отображении будет вы-
глядеть неправильно. Это можно сде- Wiki сразу после установки
лать с помощью добавления в конце
адресной строки пары параметр-зна-
чение [?|&]action=purge. Знак вопроса
или логическое «И» добавляется в за-
висимости от того, единственная ли
эта в адресной строке пара параметр-
значение или нет.
n $wgUseTeX – по умолчанию эта Различие возможностей у администратора и пользователя. Оба могут редактировать
возможность отключена. Есть мне- статью, обсуждать её, посмотреть историю изменений, переименовать и установить
«сторожок» на случай изменения страницы, но только администратор может удалить
ние, что большинству она не нуж- и заморозить страницу
на. Но если общение идёт не только
на русском, но и на языке матема- сии, чем 3.06 (http://caml.inria.fr), и, ес- П о д р о б н е е о  т о м , с  ч е г о н а -
тики и логики, то установка этой пе- тественно, GNU make. чать, рассказано на сайте WikiMedia
ременной в состояние true – это ре- Texvc – работает только с формула- ht tp://meta.wikimedia.org в с татье
шение. Удивительно, как много ми. Тот же автор (Tomasz Wegrzanowski) «MediaWiki_extensions».
можно объяснить с помощью фор- создал более общий продукт WikiTeX Для бэкапа необходимо сохранять
мул и насколько они компактнее ес- (http://www.wikisophia.org), который дамп базы данных и «wikidir», в кото-
тественного языка. с помощью LaTeX дополнительно к ма- рой помимо исходников MediaWiki хра-
тематике позволяет отображать гра- нятся загружаемые файлы. Не сов-
Чтобы эта возможность заработала, фы различной сложности, химические сем понятна такая логика в свете того,
необходим дистрибутив LaTeX (испол- формулы, ноты, шахматные диаграм- что файлы, так же как и тексты, мож-
няемые файлы latex, dvipng) для транс- мы и многое другое. но хранить в базе данных. Для бэкапа
ляции формул в TeX-нотации. Так же, Перечислена только малая часть базы в случае MySQL можно восполь-
если MediaWiki устанавливается из ис- из имеющихся настроек и возмож- зоваться утилитой mysqldump, которая
ходников, необходимо собрать испол- ностей. подобна давно входящей в поставку
няемый файл texvc. Для этого зайди- Вы можете сами создать нехвата- PostgreSQL программе pg_dump.
те в директорию «wikidir»/math и вы- ющий элемент разметки, графические Если по какой-то причине необхо-
полните команду «make». Для сборки элементы или более глобальное рас- димо удалить MediaWiki, то для это-
требуется OCaml более поздней вер- ширение наподобие WikiTeX. го надо удалить саму директорию

№2, февраль 2007 89


web
«wikidir» и базу данных. Удалить ба-
зу в случае MySQL можно через
phpMyAdmin, а в случае PostgreSQL
проще всего воспользоваться коман-
дой dropdb.

Использование MediaWiki
Всё, теперь можно набирать гипер-
текст. При использовании MedaWiki
настоятельно рекомендуется регис-
трироваться (ссылка «Представить-
ся системе» в правом верхнем углу).
В этом случае появляется доступ к об-
ширным индивидуальным настройкам
и возможностям.
Администраторы (как минимум
один администратор создаётся в про-
цессе настройки MediaWiki) отличают-
ся от обычных зарегистрированных
пользователей тем, что они имеют пра-
во удалять и «замораживать» (запрет
на изменение) уже имеющиеся статьи.
Вместе с возможностью блокировать
пользователей это позволяет эффек-
тивно управлять рукотворным храни-
лищем знаний.
Базовые правила разметки под-
робно изложены в статье «Википедия:
Как править статьи», представленной
Тестовая Wiki-страничка. Так выглядит результирующая страничка на российском сегменте Википедии
(http://ru.wikipedia.org).
Исчерпывающее руководс тво
пользователя можно найти в ста-
тье «Help:Editor» на сайте WikiMedia
(http://meta.wikimedia.org).
Выбрали для себя подходящие
настройки (ссылка «Мои настройки»
сверху)? Теперь можно набирать ги-
пертекст. Для начала следует поискать,
а не было ли уже набрано чего-то по-
добного – строка «Поиск» в панели на-
вигации слева.
При выборе кнопки «Перейти»
MediaWiki пытается перенаправить
на статью с набранным в строке поиска
именем. Если этого сделать не удаётся,
то статью предлагается создать.
Простая структурная разметка поз-
воляет разбивать текст на разделы:

==Гиперссылки==
* Wiki - это [[гипертекст]].
* А это [http://www.samag.ru внешняя
ссылка]

Гиперссылки – это конёк wiki. Они


позволяют легко набирать документы,
вкрапляя в них нестандартные терми-
ны без объяснений по ходу текста. Ес-
Тестовая Wiki-страничка. Так она выглядит в процессе редактирования ли статья с названием, определённым

90
web
в гиперссылке, отсутствует (ссылка
в никуда), то при переходе по ней поль-
зователю автоматически предлагает-
ся создать эту страницу.
MediaWiki позволяет ссылаться
на загруженные ранее (ссылка «За-
грузить файл» в панели навигации
слева) картинки (страницы в про-
странстве имён «Изображения») или
медиафайлы (пространство имён
«Медиа»):

==Тестирование медиа-файла==
[[Медиа:mediawiki.ps|mediawiki.ps]]
- PostScript file

==Тестирование картинок==
[[Изображение:turtle.png]]

Каждому загруженному файлу со-


ответствует собственная статья, кото-
рая кроме ссылки может содержать
описание файла и лицензию, под кото-
рой этот файл распространяется.
MediaWiki поддерживает html-по-
добные теги. Некоторые из тегов пов-
торяют стандартные теги html-размет- Так примерно выглядит «Категория»
ки, но есть и свои:

==Экранирование Wiki-разметки==
<nowiki>[[привет]] </nowiki>

==Тестирование математики==
Решение квадратного уравнение
<math>ax^2+bx+c=0</math>:

<math> x_{1,2}=\frac{-b\pm\sqrt{b^2-
4ac}}{2a}</math>

Ссылки на страницы, находящи-


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

[[Категория:Тестовые страницы]]

Ссылки на страницы «Категорий»


отображаются в самом конце статьи.
Это пространство имён предназначе-
но для создания иерархических указа-
телей. Это специальные страницы, ко-
торые кроме своего текста отображают
алфавитные списки всех статей, кото- Код шаблона {{Поправляйте}} - использует другой шаблон {{Userbox}}
рые ссылаются на них. Так как «Кате-
гории» тоже статьи, хоть и специаль- из пространства имён «Шаблон». Шаб- связи с Википедией недостатка в тех-
ные, то они могут входить в/включать лоны позволяют упростить набор слож- нической информации по этому воп-
другие «Категории». ных конструкций – что то вроде функ- росу не наблюдается. Официальный
Удобен механизм шаблонов: ций. Шаблонам также можно переда- сайт http://www.mediawiki.org, посвя-
вать внешние параметры. щённый «движку» MediaWiki, управ-
Проверка возможностей {{Поправляйте}} ляется им же. Здесь можно получить
Послесловие подробную информацию об устройстве
Двойные фигурные скобки указы- MediaWiki является свободным про- и особенностях MediaWiki и задать воп-
вают MediaWiki не необходимость за- граммным обеспечением. Благода- рос (Support Desk). Помните, что «Всё
грузить код страницы «Поправляйте» ря этому, а также из-за неразрывной есть статья!».

№2, февраль 2007 91


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

QNX/UNIX: анатомия параллелизма


Олег Цилюрик, Егор Горошко
щи, прекрасно описанные до них (IPC, боты с сигналами, вопросы синхрони-
таймеры). В основе книги – стремле- зации (приведено и сравнение наибо-
ние уделять минимум внимания тому, лее применяемых примитивов син-
о чем уже и так есть исчерпывающая хронизации: семафора и мьютекса),
литература, и принцип «черного ящи- а также организация обмена сообще-
ка», когда приводятся примеры того, ниями. Некоторые особые возможнос-
как «есть на самом деле», а не того, ти QNX (связанные с микроядром, уп-
как «должно быть». Последнее особен- равлением ресурсами и т. п.) вынесе-
но актуально из-за специфики офи- ны отдельно. Очевидно, издание ори-
циальной технической документации ентировано на высокий уровень под-
по QNX, которая не всегда однознач- готовки читателей, что подразумева-
но трактует доступность тех или иных ет их близкое знакомство с классикой,
возможностей. на которую ссылаются авторы. «Офи-
При этом авторы стараются по воз- циально» книга предназначена в пер-
можности избегать привязанности вую очередь для «разработчиков про-
к QNX и обобщить приводимые приме- граммных приложений» и лишь потом –
Книга от авторов, известных среди ры на другие UNIX-системы (FreeBSD, для «программистов».
русскоязычных пользователей и лю- NetBSD и UNIX-подобная ОС Linux).
бителей QNX, посвящена тонкостям QNX же была взята за основу, т.к. слу- n
Издательство: «Символ-Плюс»
создания программ, использующих жит в некотором смысле эталоном n
Год издания: 2006
параллельные вычисления. Авторы, в отношении реализованности стан- n
Количество страниц: 288
ссылаясь на небезызвестные труды дарта POSIX. n
ISBN: 5-93286-088-X
У. Стивенса и Р. Кертена, заранее пре- В книге рассмотрены процессы во- n
Цена: ≈ 150 руб.
дупреждают всех читателей, что не пы- обще и, естественно, более подроб- Книга предоставлена интернет-магазином
тались пересказать на новый лад ве- но – потоки, различные аспекты ра- books.ru.

Oracle. Оптимизация производительности


Кэри Миллсап, Джефф Хольт (перевод П. Шера)
нимающуюся этими вопросами, а так- анализирования причин возникнове-
же проводили обучающие курсы. Те- ния задержек.
перь их бесценный опыт в области оп- Книга разделена на несколько час-
тимизации производительности досту- тей, написанных разным языком: часть
пен в виде практического руководства, ее предназначена для руководителей,
которое может стать бесценным посо- которым доступно объясняются преиму-
бием для многочисленных админист- щества выбранного метода, а часть –
раторов БД, уставших от бесчисленных для аналитиков по производительности,
попыток понять, как выжать максимум нуждающихся в технических деталях.
из очередного набора запросов. Для тех, кто усвоит всю теоретичес-
Руководство фактически призыва- кую часть, предусмотрено и несколь-
ет забыть об используемых ранее ме- ко практических примеров. Они взя-
тодах оптимизации и призвано «пере- ты из реальной практики, достаточно
вернуть привычные представления» типичны и интересны. Каждый услов-
о том, как добиваться лучших резуль- но разбит на 5 частей: введение в про-
татов. Что характерно, судя, напри- блему, определение цели, диагностика
Авторов книги все без сомнений отно- мер, по отзывам покупателей Amazon, и лечение, результаты, мораль.
сят к ведущим специалистам мирово- ему это блестяще удается. Особая
го уровня в области оптимизации про- ценность заключается в том, что ру- n
Издательство: «Символ-Плюс»
изводительности баз данных Oracle. ководство не ограничивается описа- n
Год издания: 2006
Достаточно лишь сказать, что один нием разработанного алгоритма оп- n
Количество страниц: 464
из них в свое время стал инициато- тимизации, примером решения кон- n
ISBN: 5-93286-078-2
ром появления System Performance кретных проблем в производитель- n
Цена: ≈ 390 руб.
Group в Oracle, а позже они вместе со- ности. Оно служит и мощной основой Книга предоставлена интернет-магазином
здали самостоятельную компанию, за- для оптимизации любых систем путем books.ru.

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

Архитектура компьютера. 5-е издание


Эндрю Таненбаум
В основе книги – многоуровневое ной литературы по всем рассмотрен-
описание организации компьютера. ным вопросам.
Для начала приводятся общие све- Если говорить о главных изменени-
дения об организации компьютерных ях в пятом издании по сравнению с его
систем, истории развития архитекту- предшественником, то стоит отметить
ры, типах и семействах компьютеров. появление описания процессоров Intel
Затем следует подробное описание Pentium 4 и Sun UltraSPARC III, детали
всех выделенных Таненбаумом уров- которых анализируются во многих гла-
ней: цифровой логический (булева ал- вах. Кроме того, появилось и описание
гебра, основные цифровые логичес- микросхемы Intel 8051, распространен-
кие схемы, шины и процессоры), мик- ной в промышленности.
роархитектуры (с примерами реализа- Еще одним важным дополнением
ции, анализом производительности), стало приложение по программиро-
архитектуры набор команд (типы дан- ванию на ассемблере, что стало от-
ных и команд, форматы команд, адре- ветом на многочисленные просьбы
сация), операционной системы (вирту- преподавателей подробнее осветить
Труд Таненбаума можно отнести к клас- альная память, команды ввода-выво- эту тему.
сической компьютерной литерату- да, примеры ОС), ассемблера.
ре. Он знаком многим специалистам Отдельно вынесены параллельные n
Издательство: «Питер Пресс»
по вычислительной технике вне зависи- компьютерные архитектуры, представ- n
Год издания: 2007
мости от того, какой более узкой облас- лен как параллелизм внутри процес- n
Количество страниц: 844
ти они отдают предпочтение. И не слу- сора, так и сопроцессоры, мультипро- n
ISBN: 5-469-01274-3
чайно он снискал славу достойной ба- цессоры (UMA, NUMA, COMA), мульти- n
Цена: ≈ 703 руб.
зы для учебных курсов у преподавате- компьютеры. В отдельной главе соб- Книга предоставлена издательством «Пи-
лей из разных стран мира. ран обширный список дополнитель- тер».

Мифический человеко-месяц, или


Как создаются программные системы
Фредерик Брукс (перевод С. Маккавеева)
System/360 и сопутствующей опера- все гораздо проще традиционной тех-
ционной системы OS/360. Тогда он за- нической литературы. Но стоит отме-
метил, что в мире много программис- тить, что материал хорошо структури-
тов и менеджеров, но управляющие рован и чётко изложен.
крупными проектами по разработке В данном издании (оно было до-
программного обеспечения зачастую полнено через 20 лет после публика-
не учитывают всех особенностей обе- ции оригинального) отдельно пред-
их профессий. Кроме того, в масш- ставлены все важнейшие утвержде-
табных проектах могут возникать но- ния из первоначального труда в сжа-
вые проблемы, связанные с разделе- той форме (со свежими комментари-
нием труда. ями), а также добавлена глава с раз-
Книга – это сборник очерков, в ко- вернутыми ответами на появившуюся
Несмотря на то что впервые эта кни- торых Брукс рассказывает о своей за это время критику.
га была издана более 30 лет назад, практике, в ходе которой ему пришлось
ее содержимое не теряет актуальнос- столкнуться с рядом таких трудностей n
Издательство: «Символ-Плюс»
ти и по сей день. Она уже оказала оп- и как-то их решить. Стиль изложения n
Год издания: 2006
ределенное влияние на компьютерную необычен – это смесь мыслей и сво- n
Количество страниц: 304
индустрию и все еще популярна, а это бодных рассуждений автора, анали- n
ISBN: 5-93286-005-7
редкое явление для столь бурно расту- за предложений других специалистов, n
Цена: ≈ 250 руб.
щей растущей отрасли, как IT. описания самого процесса работы над Книга предоставлена интернет-магазином
Автор, Фредерик Брукс, руково- проектом. Благодаря этому, читается books.ru.
дил проектом по созданию леген-
дарного семейства компьютеров IBM Обзор книжных новинок подготовил Дмитрий Шурупов

№2, февраль 2007 93


подписка на 2007 год

Редакционная подписка
для физических лиц
n Вы можете оформить подписку n Вы можете оформить подписку n Журнал высылается почтой прос-
на любой российский адрес. с любого месяца на любой срок. той бандеролью только после пос-
n При заполнении квитанции обя‑ n В графе «Сумма» проставьте сумму тупления денег на расчетный счет
зательно РАЗБОРЧИВО укажи‑ за выбранное количество номеров. и копии заполненного и оплачен‑
те фамилию, имя, отчество пол‑ Стоимость одного номера журнала ного бланка, отправленной в ре‑
ностью, почтовый индекс и ад‑ 150 руб. За 11 месяцев (с февраля дакцию по факсу: (495) 628‑82‑53
рес получателя (область, город, по декабрь) – 1650 руб. НДС и поч- или на элек тронный а д рес:
улица, номер дома, номер квар‑ товые расходы включены в стои- info@samag.ru.
тиры), контактный телефон. мость.

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

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

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

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

№2 февраль 2007 95
СИСТЕМНЫЙ АДМИНИСТРАТОР
№2(51), Февраль, 2007 год

УЧРЕДИТЕЛИ
Владимир Положевец Как стать
обладателем диска,
Александр Михалев
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец

РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец
если вы не оформили
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
годовую подписку
Технический редактор
Владимир Лукин
Главный редактор электронного
приложения «Open Source» Что на диске?
Дмитрий Шурупов
Архив номеров журнала «Системный администратор» с 2002 по 2006 год, архив
Внештатные редакторы
электронного приложения «Open Source», дистрибутивы от партнёров.
Алексей Барабанов
Сергей Супрунов
Дмитрий Мороз
Аркадий Шаныгин Как приобрести?
Андрей Шетухин 1. В редакции журнала «Системный администратор» по адресу: Москва, мет-
Андрей Гуле ро «Сухаревская», Ананьевский переулок 4/2, стр. 1, в приёмной или в офи-
се 13.
РЕКЛАМНАЯ СЛУЖБА 2. На сайте on-line магазина Linuxcenter.ru.
тел./факс: (495) 628-8253
Евгения Тарабрина
reсlama@samag.ru
Сколько стоит?
Цена в редакции – 150 рублей.
Верстка и оформление
maker_up@samag.ru Цена с доставкой по России простой бандеролью – 180 рублей.
Дизайн обложки
Николай Петрочук
Клиенты компании SecurIT получат диск в подарок
По вопросам распространения Компания SecurIT проводит акцию, в рамках которой клиенты, заказавшие
обращайтесь по телефону: Zserver в любой комплектации или более 50 лицензий Zlock, получат диск
(495) 628-8253 (доб. 120) в подарок в первом квартале 2007 года. Спешите, количество подарков ог-
раничено!
107045, г. Москва,
Ананьевский переулок, дом 4/2, стр. 1
тел./факс: (495) 628-8253
Сайт журнала: www.samag.ru

ИЗДАТЕЛЬ
ЗАО «Издательский дом
«Учительская газета» Уважаемые читатели!
Отпечатано типографией Обратите внимание, что теперь оформить подписку вы можете
ГП «Московская Типография №13» не только на полугодие, но и сразу на весь год.
Тираж 15000 экз. Годовой индекс по каталогу «Роспечать» – 20780.
Интер-почта – заказ журналов по тел.(495) 500-00-60.
Журнал зарегистрирован
Подписка on-line – SetBook.ru.
в Министерстве РФ по делам печати,
телерадиовещания и средств массо-
вых коммуникаций (свидетельство Приобрести новые и старые номера журнала
ПИ № 77-12542 от 24 апреля 2002 г.). вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.

За содержание статьи ответственность


несет автор. За содержание реклам-
ных материалов ответственность не-
сет рекламодатель. Все права на опуб- Доставка почтой в любую точку России.
ликованные материалы защищены.

96

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