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

№1(50) январь 2007

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


www.samag.ru

Как быстро и эффективно

№1(50) январь 2007


провести учет компьютерной
техники
Разбираемся в корпоративных
программах лицензирования
Microsoft
FreeBSD в домене Windows:
еще больше возможностей
Какова в действии система
резервирования AMANDA
ISA 2004: настраиваем
удаленный доступ к сети
Пользовательские
бюджеты в LDAP
Противодействуем
руткитам режима ядра
Чего ждать
от удаленной работы?
Так видит журнал читатель, который забыл оформить подписку:
№5(30) май 2005
подписной индекс 81655

СЬ
www.samag.ru

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

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

WPA-Enterprise, 802.1x EAP-TLS


НУ

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

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

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

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

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

СТ
Эффективно управляем
полями пользователей в AD

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

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


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

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

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО ЕО
АВ СЛ
Л

Л
ХА

ЗА Н
ПО
УЕ

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


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

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


Ищем причины
Строим защищенную беспроводную сеть:
WPA-Enterprise, 802.1x EAP-TLS
Настраиваем UPS под Linux
Как восстановить
удаленные файлы под BSD
Что важно знать об IP-телефонии
танавливаем Symantec Antivirus 9.0
в корпоративной сети
Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети
с помощью OSSIM
Интервью с Ларри Уоллом –
создателем языка Perl

ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (095) 500-00-60
в номере
РЕПОРТАЖ 52 Устанавливаем и обновляем программное
обеспечение в системе FreeBSD
4 «Платформа 2007» – будущее, которое Полезные советы для начинающих.
нам обещает Microsoft Гаспар Чилингаров
Итоги восьмой ежегодной конференции. nm@web.am
Алексей Барабанов
alekseybb@mail.ru 56 Unionfs в FreeBSD: разбираемся
в текущей реализации
7 ТЕНДЕНЦИИ Термин «файловая система» охватывает гораздо боль-
ше, чем способ организации данных на физическом но-
АДМИНИСТРИРОВАНИЕ сителе. «Многослойность» подсистемы работы с фай-
лами не только повышает гибкость, но и предоставляет
8 Как купить ПО от Microsoft? множество интересных возможностей. Один из приме-
Часть 2. Разбираемся в корпоративных ров такого «промежуточного уровня» – unionfs.
программах лицензирования Сергей Супрунов
Не надо думать, кто корпоративные лицензии на софт – amsand@rambler.ru
это удел суперкорпораций. Воспользоваться системой
лицензирования вполне может и ваша компания, если 62 FreeBSD в домене Windows:
в ней есть хотя бы три компьютера. дополнительные возможности
Дмитрий Бутянов Правильное подключение FreeBSD в домен Windows
for.mail.only@gmail.com позволит работать с Active Directory для проверки па-
ролей, членства в группах и т. д. Но это только некото-
14 Reporting Services: составляем отчеты рая часть того, для чего FreeBSD может использовать
Ваш начальник требует отчета о трафике и итоги инвен- данную информацию. Рашид Ачилов
таризации сети? Бухгалтерия умоляет помочь с отчетом achilov-rn@askd.ru
в Excel? А вы можете предоставить тольком аловразу-
мительный текстовый файл? Узнайте о современных ЧЕЛОВЕК НОМЕРА
технологиях разработки отчетов. Павел Купцов
brosku@mail.ru 70 Снаряд – броня
В этом соперничестве Алексей Раевский на стороне бро-
20 Как быстро и эффективно провести учет ни. Пользователям повезло. Оксана Родионова
компьютерной техники rodion@dol.ru
Используем программный комплекс CheckCfg + Sklad.
Алексей Бережной БЕЗОПАСНОСТЬ
beralex2@mail.ru
74 Руткиты режима ядра: алгоритмы
26 Настраиваем удаленный доступ к сети работы и защита
с помощью MS ISA 2004 Случалось ли вам замечать, что в системе «живет» пос-
Возможность доступа к необходимым бизнес-ресурсам торонний процесс, но ни диспетчер задач, ни другие
из любой точки мира – одно из условий успешной рабо- программы не могут его показать? Может быть, про-
ты компании. Но это не должно быть в ущерб безопас- цесс скрывается и от них? Каковы методики скрытия
ности. Рассмотрим реализацию технологий удаленно- в режиме ядра? Артем Баранов
го доступа с помощью Microsoft ISA 2004. artembaranov@yandex.ru
Андрей Бирюков
mex_inet@rambler.ru IMHO
32 Подробное руководство по настройке 80 Чего ждать от удаленной работы?
тонких клиентов на основе дистрибутива Описывая сложную систему взаимоотношений соискате-
Thinstation и протокола NX. Часть 2 лей и работодателей, мы показываем лишь один из мно-
Особенности эксплуатации, дополнительные настрой- гих путей выживания в этом мире. Крис Касперски
ки NX и Thinstation. Евгений Бушков kk@sendmail.ru
protectorat@mail.ru
РЕТРОСПЕКТИВА
36 Размещаем пользовательские бюджеты
в LDAP. Часть 1 90 Прошлое операционных систем
Тема имеет столько способов реализации, сколько ав- семейства BSD
торов. Но типичные ошибки повторяются от раза к ра- ОС семейства BSD признаны компьютерным сообщест-
зу. Попробуем построить среду для хранения пользова- вом и получили статус идеального программного обес-
тельских бюджетов в LDAP оптимальным образом. печения для серверов. А знакомы ли вы с историей ле-
Алексей Барабанов гендарной системы? Илья Александров
alekseybb@mail.ru ilya_al@rambler.ru

44 Какова в действии система 19, 51, 61, 89 BUGTRAQ


резервирования AMANDA
AMANDA считается одной из лучших среди бесплат- Подарочный DVD-диск с библиотекой всех номеров жур-
ных систем резервного копирования. Но от ее исполь- нала с 2002 по 2006 год вложен в январский выпуск всем
зования удерживает мнимая сложность в настройках
и то, что она работает только с ленточными накопите-
читателям, которые оформили подписку на весь 2007 год.
лями. Докажем всю необоснованность таких заблуж-
дений. Сергей Яремчук Как стать обладателем диска, если вы не оформили годо-
grinder@ua.fm вую подписку, читайте на сайте журнала www.samag.ru

№1, январь 2007 1


50 Рад от имени ALT Linu
темный Админи

им наз
стр
лейного номера. Журна
ван
ато

ием ,
выпусков – наш общий юбилей!
Сисадмины, спасибо, что Вы с нами!

x поздравить «Сис-
р» с выпуском юби-
л с самого начала,
взя лся за трудную
На ш и от но ш
«С ис те мн ый
можно охарак
тнерство с пе
статочно прол
журнала, чтоб
на иб ол ее по
ен ия с жу рн
ад ми ни ст ра
теризовать ка
рвого взгляда.
истать один но
ы понять, что
ал ом
то р»
к пар-
До -
мер
это
уже сво ле зн ое из да
оку ю про фессиона ль- для IT- специа ни е
задачу держать выс листов на русс
пла нку и на про тяж ении пятидесяти языке, содерж
ащее максим
ком
ную
вень выдержать. кой информа альное количе
номеров сумел этот уро ый авто- ции. При этом ство прак тиче
ала яркий и профессиона льн и формат ее из и ак туальнос с-
Редакция сформиров т сво е лиц о для каж дого ложения выш
е
ть информаци
и,
й соз дае ца нашей комп вс яких похвал.
рский коллек тив, которы дом номере ании и от себя Я хочу от ли-
нь приятно, что в каж редакции с до лично поздра
нового номера. Мне оче алы по сво бод ным про - стижением оч
ередной верш
вить коллек ти
в
ют мат ери всегда остава
достойное место занима сси она льн ом исп ользо- ться на гребне
волны интере
ины и пожела
ть
о профе редливых чита
граммам. Это материалы тые «религиозные вой- телей, как сист
емные админи
са таких прив
е-
гра мм , а не пус чи вам, высоки
вании свободных про и много но- х тира жей, ло страторы. Уда-
талантливых авторов вых рекламод ял ьн ых читателей
ны». Желаю вам новых лей . ателей ! и сговорчи-
ательных читате
вых вдумчивых и требов
Алексей Смирнов, Алексей
Ген ера льн ый дир ектор ALT Linux Генера льный Раевский,
дире
компании Se ктор
curIT
От лица компании Softline
я рада возможнос-
ти поздравить коллек тив
нии журнала «Систем-
а компа ный администратор» с
От лиц и ж ур нала выходом в свет юби-
r.R u лейного пятидесятого
Linuxcente но номера ! 50 – тот ру-
at я се рд еч беж, который поз вол
LinuxForm ш их д ру- яет под вес ти проме-
яю на жуточные итоги и сде
позд равл А д- лать выводы об ус-
ис темного пешнос ти проекта. «Си
зей из «С с вы пу с- стемный Админис-
ора» тратор» – отличный при
минис трат го , 5 0 -г о мер востребованного
е й н о нального издания, пол профессио-
ко м ю б и л при- учившего высокое при
ам очень номера ди читателей. Желаем знание сре -
номера ! Н к ваш реснее от вам процветания, дальне
юдать, ка снее и инте том же ческих успехов, новых йших твор-
ятно набл е ин те ре ат ь в профессиона льных иде
л ст ановится
вс
ел ае м продолж ного развития! й и динамич-
ж ур на ей ду ш и ж чи в!
ко
и мы от вс ше подпис
к номеру вс е бо ль ше и боль
бетать олов,
ду хе и прио Павел Фр
ор Наталья Вьюникова
ый директ заместитель директора,
Генера льнinuxcenter.RU
L по PR компании Softlin
компании e

Поздравляем журнал «Систем-


От лица комп ный администратор»! Новых до-
ании «Фаматек стижений, тиражей, щедрых рек-
дравить реда » хочу поз-
кцию журнал ламодателей, активных подпис-
ный админист а «Систем-
ратор» с выхо чиков. За недолгое время сотруд-
юбилейного, пя дом в свет
тидесятого по ничества мы успели оценить по-
мера. За врем счет у но -
я своего сущес тенциал журнала. Смело могу ут-
журнал успел твования
завоевать попу верждать, что «Системный ад-
у профессион лярность
алов в сфере министратор» – команда профессионалов, которую ждет
всегда внимат IT, которые
ельно следят успех!
ме нными те нд за совре-
енциями в ми
ких технологий ре вы со -
. Индустрия IT Сергей Рыжиков,
ходит масса ин растет и разв
тересных собы ивается, прои Директор компании «Битрикс»
тратор» никогд тий, и «Систе с-
а не остается мный админи
вационных ре в стороне от ос с-
шений, предст вещения инно
рубежных ры авленных на -
нках. российских и
за-
От всей души ным
желаю редакц равить с юбилей
администрато
р» еще больш
ии журнала «С
истемный Мне хочется позд чи тат ел ей.
рнал и его
ных материал
ов, та лантливы
е содержател
ьных и интере 50 -м выпуском жу , оп ер ативная,
с- тер иа лы
ших професси
ональных и тв
х авторов, а
также да льне Объективные ма ация
орческих успе й- полезная информ
хов». качественная и ал у доверие
во ев ать жу рн
позволили за ко -
елей. Желаю всей у–
Дмитрий Кура
шев, и уважение читат х усп ех ов , а самому журнал
Генера ль творчески
компании «Ф ный директор манде журнала
аматек Россия ветания.
» да льнейшего проц
Сергей Вахонин,.
Line Inc
IT-директор Smart
доска почета

ПОЗДРАВЛЯЕМ ПОБЕДИТЕЛЕЙ!
Подведены итоги авторского конкурса 2006
Номинации 2. Статья, написанная на тему, придуманную автором
1. За лучшую серию материалов и одобренную редакцией.
2. За лучшую новую авторскую тему 3. Аналитическая статья может быть написана на тему,
3. За лучшую аналитическую статью предложенную автором или же на тему, заказанную ре-
дакцией.
Кто участвовал
Участие приняли все авторы, опубликовавшие свои ста- Кто судьи
тьи в журнале «Системный администратор» в течение В состав жюри вошли сотрудники редакции.
2006 года.
Денежные призы
О номинациях  1 место – 30 000 рублей
1. Серией материалов считается блок из не менее чем  2 место – 20 000 рублей
двух статей. Тема серии – по собственному выбору ав-  3 место – 10 000 рублей
тора или же по выбору редакции.

Победители в номинации «За лучшую Победители в номинации «За лучшую


серию материалов»: новую авторскую тему»:
1 место (30 000 руб.) за серию статей 1 место (30 000 руб.) за статью «Подроб-
«Как работает Sendmail? Полезные под- ное руководство по настройке тонких кли-
робности» получает Сергей Супрунов, ентов на основе дистрибутива Thinstation
инженер-программист Константиновской и протокола NX» получает Евгений Буш-
группы развития и эксплуатации програм- ков, ведущий программист «Корпорации
мно-технических средств Усть-Донецкого «Аксион».
ЛТЦ Морозовского УЭС Ростовского фи-
лиала ОАО «Южная Телекоммуникацион- 2 место (20 000 руб.) за статью «Клас-
ная Компания». теризация + виртуализация: Linux HA +
OpenVZ» получает Евгений Прокопьев,
2 место (20 000 руб.) за серию статей инженер-программист Южной Телеком-
«Современный Linux-сервер» получает муникационной Компании.
Алексей Барабанов, специалист по об-
служиванию и эксплуатации информаци-
онных ресурсов, предприниматель, редак- 3 место (10 000 руб.) за статью «Выдер-
тор нашего журнала. жит ли нагрузку ваш веб-сервер? Обзор
программ для стресс-тестирования» по-
2 место (20 000 руб.) за серию статей лучает Сергей Яремчук, инженер груп-
«Вы всё ещё не используете WMI?», «Уз- пы автоматизации одной из правительс-
най секреты WMI» получает Константин твенных организаций Украины.
Леонтьев, консультант в области инфра-
структурных проектов российского пред- 3 место (10 000 руб.) за статью «На что
ставительства компании Microsoft. способен дистрибутив SystemRescueCd
Linux» получает Иван Максимов, cистем-
3 место (10 000 руб.) за серию статей «Су- ный администратор компании «КСАНФ».
ровая правда, скрытая за «розовыми оч-
ками»: история компании Transmeta» полу-
чает Дмитрий Мороз, студент последне-
го курса Житомирского Государственного Номинация «За лучшую аналитическую статью» была сня-
Технологического Университета, журна- та с конкурса – среди авторов не нашлось желающих по-
лист в изданиях «MacUP/RE», «Телефон», бороться за эту премию.
«Inflight Review», «3DNews».

№1, январь 2007 3


репортаж

«Платформа 2007» – будущее, которое


нам обещает Microsoft

Восьмая ежегодная конференция Microsoft успешно прошла в Москве 13-14 декабря 2006 года.
На ней было зарегистрировано почти 3 тысячи участников, что в полтора раза больше,
чем в прошлом году.

А
удитория – все потребители про- Вы не ослышались. Все десктопы и но- думаться, то точно так же не получит-
дукции и участники бизнес-про- утбуки, в которых менее 1 Гб памяти, ся запустить в автоматическом режи-
цесса Microsoft. Центральное и скромные видеоадаптеры с видео- ме unattended-установку программно-
событие – презентация Windows Vista, памятью менее 64 Мб после выхода го обеспечения от третьего произво-
Office 2007 и Exchange Server 2007. Нет Windows Vista непременно обесценят- дителя в формате не msi.
смысла педантично повторять стро- ся. Этим объясняется осеннее удешев- Да и вообще, новая система пол-
ки стандартного прессрелиза. Скажу ление и распродажа бюджетных моде- ностью ориентирована на развертыва-
лишь самое важное на мой взгляд. лей от всех ведущих производителей, ние из образов, то есть очень не дру-
Windows Vista получилась? Это по- таких как HP, например. жественна к разработкам производи-
кажет рынок. Но одно несомненно – В третьих, новая платформа заста- телей, не входящим в сферу притяже-
она состоялась! Теперь уже точно мож- вит и системных администраторов ра- ния Microsoft. Для драйверов это бы-
но определить, что день грядущий нам ботать по-новому. Теперь даже при- ло заявлено прямо, а для приклад-
готовит. Компьютерному рынку пред- вилегированного пользователя обя- ного ПО косвенным образом тоже ус-
стоят большие перемены. жут работать в режиме с пониженны- тановлен режим вытеснения чужа-
Во-первых, под новую платформу ми правами, и лишь на время выпол- ков. Должно быть совершенно ясно,
обещано выпустить новую линейку нения административной функции что переход на Vista может оказаться
продуктов, это значит, появится мно- ему будет передаваться нужный уро- просто разорительным даже для не-
го новых программ, а старые выйдут вень прав, по подтверждению с кон- маленьких компаний. Осознавая это,
из употребления. соли. Ну и правильно, а то привыкли в Microsoft особенное внимание уде-
Во-вторых, под новую платформу… отправлять почту из Outlook с права- ляют вопросам миграции на новую
будут выпущены новые компьютеры! ми суперпользователя. Хотя, если за- платформу. Для планирования пере-

4
репортаж
хода на Windows Vista даже разрабо-
тан специальный инструментарий –
Microsoft Application Compatibility Toolkit.
Он по сути является средством инвен-
таризации (кстати, бесплатным), поз-
воляющим выяснить степень совмес-
тимости существующего оборудова-
ния и ПО с требованиями новой опе-
рационной системы.
Наметился также прогресс в раз-
витии Office. Теперь эта прикладная
система на платформе Vista может ис-
пользовать возможности многоядер-
ных процессоров вне зависимости
от стандартного планировщика ядра.
Но самые неожиданные результаты бы-
ли продемонстрированы в ходе расска- Участники пресс-конференции
за о продукте под названием SoftGrid.
Эта система позволяет виртуализовать прессы, в то время как резервирова- это событие, которое стоит посетить
среду выполнения прикладной про- лись места на лабораторных, был за- каждому вне зависимости от отноше-
граммы так, что становится возмож- нят на пресс-конференции и упустил ния к MS Windows и бизнесу Microsoft.
ным портировать ее вместе с необходи- возможность записаться. Лаборатор- Во многом это не столько официальное
мыми компонентами на любой хост для ные работы были расписаны желаю- мероприятие, это почти клуб с систе-
исполнения. Нечто вроде prelink, соб- щими на два дня вперед еще до нача- мой скидок членам клуба! Среди посе-
ранного в пакет. Преимущество в том, ла самого форума! «Платформа» про- тителей можно было встретить все воз-
что такая компонента исполняется без исходила в СК «Олимпийский». Центр расты – от тинейджеров до тех, «кому
установки в хостовую систему и в слу- спортивной арены был выделен под вы- за сорок». Очень много представитель-
чае атаки не повреждает ее, так как су- ставку, трибуны размечены под залы ниц прекрасного пола, гораздо больше,
ществует в изолированной виртуаль- для докладов. Вечером первого дня чем на аналогичных мероприятиях, на-
ной среде. Неожиданный эффект со- для уставших организовали развле- пример, линуксовой направленности.
стоит в том, что приложение, виртуали- кательную программу, куда была при- На докладах царила дружественная
зованное подобным образом, не может глашена группа «Несчастный Случай», атмосфера. Все (без преувеличения
защищаться привязкой к параметрам а для неудовлетворенных – «круглые все) докладчики от Microsoft свободно
системы запуска, так как все они вир- столы» с участием очень известных ориентировались в предметах, держа-
туальные. То есть, внедрение такого персон в отечественном информаци- ли внимание аудитории и даже успева-
подхода заставит пересмотреть многие онном бизнесе. ли разыгрывать маленькие презенты
традиционные решения в области кон- Теперь попробую выразить свои среди слушателей (от мышек до X-Box).
троля за соблюдением лицензий на ПО. личные впечатления. «Платформа» – Организаторы настойчиво интересова-
Хотя неуклонно внедряемая виртуали- лись мнением гостей об уровне всех
зация так или иначе заставит это сде- мероприятий. Не знаю, какое вопло-
лать. Все это и многие другие специ- щение получит широко разрекламиро-
альные вопросы были рассмотрены ванный слоган «People-Ready» в биз-
в докладах конференции. нес-реалиях, но на «Платформе» все
«Платформа 2007» длилась 2 дня. свидетельствовало в пользу подобно-
Это и много, так как приходилось ра- го отношения. Всего лишь за сданные
ботать по настоящему: доклады – анкеты с отзывами-оценками разных
это не только шутки ведущих и репли- аспектов данного события организа-
ки из зала, и одновременно это очень торы пообещали каждому посетителю
мало. Иногда даже катастрофичес- по комплекту из Windows Vista и Office
ки недостаточно. Например, был за- 2007 в личное пользование сразу пос-
менен единственный доклад на тему ле их выхода на рынок. Посмотрите
Virtual Server. К докладчикам в пере- на стоимость участия в конференции,
рывах очень трудно пробиться, так как подумайте немного и сделайте выводы,
вопросы не прекращаются и желающие что следующая «Платформа» не долж-
спросить стоят стеной. Кроме лекцион- на пройти без вас.
ной формы, были предложены лабо-
раторные работы (например, настрой- Текст Алексея Барабанова.
ка брандмауэра в Windows Vista). Увы, Выступление Жана-Филиппа Куртуа Фотографии предоставлены
(Jean-Philippe Courtois), президента компанией Microsoft
я, прибывший туда как представитель Microsoft International Keynote

№1, январь 2007 5


тенденции
Firefox продолжает набирать от независимых поставщиков (ISV) в среде операционных
популярность систем на базе Linux и управления такими пакетами. Пер-
Исследователи из французской фирмы Xiti Monitor обна- вой целью LSB Packaging стало создание API для пакет-
родовали новую статистику по использованию веб-бра- ных систем Linux с тем, чтобы ISV смогли «прозрачно» ра-
узеров в Европе. По этим данным, популярность Firefox ботать с ними, не задумываясь о внутреннем устройстве
среди веб-пользователей выросла с апреля текущего го- самих систем (таких, как RPM). Как пишет в своем блоге
да почти на 4 процента, благодаря чему она теперь со- Ян Мердок (Ian Murdock), основатель проекта Debian GNU/
ставляет 23,2% (тогда его доля среди всех браузеров ог- Linux, главный технолог Free Standards Group и глава всей
раничивалась отметкой в 19,4%). Среди стран, в которых рабочей группы Linux Standard Base: «Мотив к этому есть
Firefox пользуется наибольшим (в процентном отношении) у всех: дистрибутивы получат больше приложений, которые
спросом, – Словения (40,5%), Финляндия (39,3%), Польша сделают платформу более привлекательной; у ISV снизят-
(33,6%), Германия (33%), Хорватия (32,8%), Эстония (31,5%) ся затраты, что повысит их экономический интерес к Linux-
и Венгрия (31,1%). версиям ПО и потенциально откроет новые рынки».

Организация FSF начинает кампанию Один из авторов Mandrake начал


против Vista новый проект
Организация свободного программного обеспечения Free Гаэль Дюваль (Gael Duval), один из основателей и бывший
Software Foundation (FSF) запустила кампанию, направ- разработчик популярного Linux-дистрибутива Mandriva (ра-
ленную против новой операционной системы от Microsoft – нее известного как Mandrake), представил первый пробный
Windows Vista. Ключевая цель новой инициативы сторон- релиз своего нового продукта – Ulteo Linux (под кодовым
ников свободного ПО – предупредить всех о вреде, кото- названием «Sirius»). Дистрибутив Ulteo Linux базируется
рый наносит Windows Vista, и рассказать о существующих на разработках родственных проектов Debian GNU/Linux
альтернативах из мира свободного программного обес- и Ubuntu Linux. Первая тестовая версия основана на Linux-
печения, которые (в отличие от нового продукта Microsoft) ядре 2.6.15, использует графическую среду KDE 3.5.2 по
«уважают права пользователей на безопасность и конфи- умолчанию. За обновлениями системы следит демон UGD
денциальность». (Ulteo General Daemon), который, регулярно подключаясь
Питер Браун (Peter Brown), исполнительный дирек- к серверам Ulteo, автоматически проверяет, доступны ли
тор FSF, так прокомментировал начавшуюся кампанию: какие-либо обновления.
«Microsoft начинает крупнейший из когда-либо имевших
место запуск продукта, а ее маркетинговые средства бу- Составил Дмитрий Шурупов
по материалам www.nixp.ru
дут потрачены на то, чтобы всеми силами ввести в заблуж-
дение СМИ и пользовательское сообщество о целях Vista.
Наша кампания ответит на важные вопросы. Как вы може-
те освободить себя и свою компанию? Можете ли вы вооб-
ще быть свободными от Microsoft? Как и в нашей кампании,
направленной против DRM (Digital Restrictions Management),
мы хотим продемонстрировать, что технологи могут быть
социальными активистами, потому что мы знаем о вреде,
который причинит Vista».
В частности, сообщается, что открытый для инициати-
вы блог BadVista.org будет уделять особое внимание опас-
ностям от так называемого Treacherous Computing в Vista
(пародия на официальное название «Trusted Computing»,
«доверенные, надежные вычисления», которую можно пе-
ревести как «ненадежные, предательские вычисления»).
Суть их заключается в том, что Vista превратит компью-
теры, управляемые пользователями, в машины «Большо-
го брата», где за каждым действием пользователя следят,
а ему не остается иного выбора.

В FSG/LSB создана рабочая группа


по Linux-пакетам
В рамках проекта стандартизации дистрибутивов, основан-
ных на Linux-ядре, Linux Standard Base (LSB), была созда-
на рабочая группа, которая займется проблемами работы
со сторонними пакетами программного обеспечения в сис-
теме. Рабочая группа LSB Packaging появилась как следс-
твие проведенного саммита FSG Packaging Summit, посвя-
щенного вопросам установки программного обеспечения

№1, январь 2007 7


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

Как купить ПО от Microsoft?


Часть 2. Разбираемся в корпоративных программах
лицензирования

Дмитрий Бутянов
Не надо думать, кто корпоративные лицензии на софт – это удел суперкорпораций,
при упоминании которых люди поджимают губы и понимающе кивают. Воспользоваться системой
лицензирования вполне может и ваша компания, если в ней есть хотя бы три компьютера.

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

У
программ корпоративного лицен- тем большую скидку
зирования есть входной порог, получите.
но какой! Всего пять лицензий, Лицензии, приоб-
причем любых, и вы уже там и поль- ретенные по програм-
зуетесь всеми благами и прелестя- ме корпоративного
ми, которые могут на вас посыпаться. лицензирования, пре-
А пять лицензий вы купите, если захо- доставляют больше
тите купить легальный софт для трех прав, чем коробоч-
компьютеров. ная лицензия (FPP)
Одним из основных преимуществ или OEM-лицензия.
программ корпоративного лицензи- Лицензия, приобре-
рования Microsoft является возмож- тенная по програм-
ность выбора. Вы можете выбирать, ме корпоративного
как тратить деньги и что на них при- лицензирования, мо-
обретать. жет п е р е н о с и т ь с я
Самих программ несколько, они от одного компьюте-
различаются по ценам, способам оп- ра к другому (за ис- Рисунок 1. Соотношение клиентских и серверных лицензий
латы, а также по правилам использо- ключением операци-
вания приобретенных программных онных систем). на штука). Клиентская лицензия – ус-
продуктов. Для образовательных уч- Но прежде чем начать рассказ о са- тановить клиентский компьютер (од-
реждений существует специальная мих программах, давайте познакомим- на штука).
программа лицензирования, которая ся с основными принципами лицензи- Если осилите статью до конца,
отличается очень низкими ценами рования. Советую устроиться поудоб- то узнаете про вариант установки не-
и очень широкими правами использо- нее, налить чаю-кофе (а то, о чем вы скольких серверов по одной лицензии.
вания продуктов. подумали, лучше придержать до кон- Читайте-читайте.
Корпоративное лицензионное со- ца статьи), и приготовиться к поглоще- Таким образом, установленное
глашение позволяет отделить собс- нию нового материала. программное обеспечение, например
твенно лицензию от второстепенных Лицензия является подтверждени- сервер Windows Server 2003, требует
услуг: носителей (для установки про- ем легальности происхождения про- наличия серверной лицензии, а для
граммного обеспечения), документа- граммного продукта при условии соб- клиентских рабочих станций, на ко-
ции и упаковки, что позволяет форми- людения правил его использования. торых установлена клиентская опе-
ровать цену строго с учетом ваших пот- В подавляющем большинстве случа- рационная система Windows XP Pro,
ребностей и размера заказа. ев лицензия является юридическим также требуется лицензия, но кли-
Часть цены программного продук- понятием. Иными словами лицензия – ентская. Отдельно сервер и отдельно
та составляют упаковка, документа- это документ. Сам программный про- клиент не составляет сеть. Разуме-
ция и носители (дискеты или компакт- дукт можно использовать практичес- ется, клиентские компьютеры долж-
диски). Покупая продукты по програм- ки как угодно, в нем не встроено ника- ны иметь доступ к серверному про-
мам корпоративного лицензирования, ких технологических барьеров. Только граммному обеспечению. Чтобы це-
вы будете платить только за лицензи- в некоторых продуктах лицензия со- ны на серверное программное обес-
онные права. провождается программным ограни- печение были пропорциональны ко-
В некоторых программах корпора- чением, например, Terminal Services личеству обращений к нему, на эти
тивного лицензирования носители для или SBS. обращения также необходимо при-
установки продукта предоставляются Однако если вы будете использо- обретать лицензии, которые называ-
бесплатно, в некоторых их надо поку- вать софт с нарушением ограничений, ются клиентскими лицензиями на до-
пать отдельно, но по себестоимости изложенных в Правилах использова- ступ, или CAL (Client Access Licenses).
(порядка 20 $). ния продуктов и Лицензии, то станете Чем больше сеть – тем больше обра-
Один носитель может быть исполь- пиратом. Почитайте статью «Как ку- щений к серверу – тем дороже полу-
зован в качестве эталона для уста- пить ПО от Microsoft? Особенности чится сервер, т.к. за обращения надо
новки на все ПК вашей организации, приобретения и использования OEM- платить (см. рис. 1) . И наоборот, в не-
что позволит вам не только сократить версий» в №12 номере за 2006 г., в ней больших сетях, где количество обра-
расходы на приобретение, но и устра- описаны последствия. щений невелико, итоговая стоимость
нить сложности, связанные с развер- сервера будет ниже.
тыванием продукта на ряде ПК в ор- Основные типы лицензий Серверы, которые поставляются
ганизации. Поскольку сети, которые мы лицензи- в виде коробочного продукта, вклю-
Уже при покупке 5 лицензий вы по- руем, строятся на основе клиент-сер- чают пять или более клиентских ли-
лучите значительную скидку по срав- верной технологии, модель лицензи- цензий. Серверы, пред лагаемые
нению со стоимостью приобретения рования состоит из серверных и кли- по программам корпоративного ли-
тех же продуктов в виде коробки, и чем ентских лицензий. Серверная лицен- цензирования, не сопровождаются
большее количество лицензий купите, зия дает право установить сервер (од- клиентскими лицензиями; клиент-

№1, январь 2007 9


администрирование
ентских машин также IIS, если пользователи при этом не ав-
подключаются и к са- торизуются.
мой серверной опе- Лицензии клиентского доступа
рационной системе, делятся на две большие группы –
а это требует приоб- это «Лицензии на устройство» (Device
ретения еще 10 ли- CAL) и «Лицензии на пользователя»
цензий к лиентско - (User CAL).
го доступа Microsoft Первая – Device CAL – лицензиру-
Windows Server 2003 ет доступ устройства; при этом за этим
CAL. устройством может работать любой
Обратите вни- пользователь. Если в вашей сети за од-
мание – тип клиент- ним компьютером работают несколь-
ской лицензии опре- ко пользователей, например, посмен-
деляется сервером, но, то эта лицензия для вас.
а не клиентом. В дан- Вторая – User CAL – лицензиру-
ном примере все кли- ет доступ пользователя с любого воз-
ентские лицензии бу- можного устройства. Этот тип наибо-
дут клиентскими ли- лее выгоден и удобен в администри-
цензиями на доступ ровании там, где много мобильных со-
к SQL Server незави- трудников, которым необходим доступ
симо от того, какой к корпоративной сети с произвольных
клиент используется устройств, или сотрудников, использу-
на рабочих станциях, ющих несколько устройств для доступа
Рисунок 2. Пример лицензирования SQL Server которые обращают- к сети независимо от способа доступа
ся к серверу. (по локальной сети, VPN или каким-то
ские лицензии вам нужно будет за- Если, в нашем примере, доступ иным способом).
казать отдельно. к серверу осуществляется при помощи Если говорить в двух словах, то бе-
Клиентская лицензия на доступ – сетевых терминалов (т.н. «тонких кли- рите те лицензии, которых понадо-
это предоставление права осущест- ентов) или даже специальных перенос- бится меньше: если людей больше,
влять доступ или использовать сер- ных устройств, то тогда для каждого чем компьютеров, то берите лицензии
верное программное обеспечение. из этих устройств также должна быть «на устройство», а если компьютеров
Клиентские лицензии на доступ (CAL) приобретена клиентская лицензия больше, чем людей, то берите лицен-
нематериальны, и это часто вызывает на доступ к SQL Server (см. рис. 3). зии «на пользователя». Стоят эти ли-
путаницу и трудности. Наличие терминальных служб, цензии одинаково, так что надо прос-
Давайте рассмотрим конкретный а также программных или аппарат- то выбрать, какая именно вам нужна
пример: предположим, у нас имеется ных мультиплексоров не избавляют с точки зрения затрат или удобства
сеть из десяти клиентских компьюте- от необходимости приобретения ли- контроля их использования.
ров Windows XP Professional, а также цензий. Например, если установлен
сервер Microsoft SQL Server 2005, ус- терминальный сервер с установлен- Лицензии «на процессор»
тановленный на базе Windows Server ным Microsoft Office, которым пользу- В модели лицензирования c исполь-
2003 (см. рис. 2). ются 20 человек, то потребуется при- зованием серверных/клиентских ли-
Серверные лицензии: одна на обрести 20 лицензий на Office. Даже цензий серверная лицензия относит-
Windows Server, одна на SQL Server. с учетом того, что на самом деле все ся к физическому серверу, независимо
Это даст право поставить серверную пользователи работают с одной копи- от того, насколько мощный этот сервер.
часть. ей продукта. Пропорциональность цены лицензии
Клиентские лицензии: Windows XP Версия CAL должна быть не ни- (т.е., лицензия на большую сеть стоит
Pro в виде OEM, например. же версии сервера, к которому осу- дороже, чем лицензия на малую сеть)
Теперь надо соединить всё это ществляется доступ, т.е. для доступа достигается необходимостью приоб-
в сеть, обеспечив клиентские ком- к Windows Server 2003 нужна Windows ретать клиентские лицензии на до-
пьютеры возможностью пользования Server 2003 CAL. Но эта же лицензия ступ для каждого клиента. Такая мо-
серверным программным обеспече- на клиентский доступ может исполь- дель может быть сложна в примене-
нием. Для этого нужно купить лицен- зоваться для подключения к Windows нии. Для большинства серверных при-
зии на клиентский доступ. Server 2000, так как ее версия в этом ложений (например, SQL Server) пре-
В нашем примере десять клиент- случае будет не ниже версии сервера. дусмотрена простая альтернатива –
ских машин подключаются к серве- СAL не включена ни в одну из настоль- приобретение вместо этого лицензии
ру Microsoft SQL (причем протоколы ных операционных систем. «на процессор».
и пр. значения не имеют), т.е. требу- Не требует лицензирования ано- Процессорные лицензии дороже,
ется 10 лицензий клиентского досту- нимный доступ к ресурсам, например, чем обычные серверные лицензии,
па Microsoft SQL CAL. Эти же 10 кли- не лицензируется доступ к серверам но зато при этом не требуются кли-

10
администрирование
ентские лицензии на доступ к серве-
ру. В модели лицензирования «на про- Скидки для филиалов го представительства Microsoft. Если у ва-
цессор» на каждый процессор серве- и аффилированных лиц шей компании на территории РФ есть фи-
ра необходимо приобрести лицензию. Если у вашей компании есть аффилиро- лиалы, которые не являются отдельными
Для сравнения, обычная серверная ванные лица cо степенью участия 50%, юридическими лицами, то можно разме-
лицензия предоставляет право на ис- тo по программе Open License этим аф- щать общий заказ на покупку ПО. Все это
пользование всего сервера целиком, филированным лицам можно предоста- позволит вам организовать централизо-
при этом пропорциональность дости- вить возможность размещать заказы с ис- ванную систему закупки ПО для филиа-
гается применением модели сервер- пользованием достигнутого уровня скид- лов компании и некоторой категории аф-
ных/клиентских лицензий. Пропор- ки для свершения сколь угодно малых за- филированных лиц и добиться при этом бо-
циональность достигается и моделью купок (не менее одной штуки), но только лее высокого уровня скидки.
лицензирования «на процессор», пос- на территории ответственности московско-
кольку для сетей с большим количес-
твом клиентов будет использоваться ся процессорная лицензия на сервер- веров также имеет свои особенности
сервер с большим количеством про- ный продукт. как по видам лицензий, так и по прави-
цессоров. лам использования продуктов. В рам-
При расширении сети может воз- Лицензирование ках статьи трудно охватить всё, так как
никнуть необходимость увеличить ко- бизнес-партнеров… существует достаточно много вариан-
личество процессоров для обслужи- и просто хороших тов. Тем не менее общие принципы ос-
вания большего количества клиен- клиентов таются неизменными.
тов. При этом в модели лицензирова- Еще одна проблема возникает тогда,
ния «на процессор» при добавлении когда к серверному программному А вот и программы…
процессора вы должны приобрести обеспечению подключаются внешние Как я уже говорил, вариантов приобре-
дополнительную лицензию «на про- пользователи, число которых трудно тения программного обеспечения до-
цессор», а не дополнительные кли- или невозможно определить. Эту про- статочно много, и вы можете выбирать
ентские лицензии на доступ к сер- блему можно решить путем покуп- подходящий вам вариант. Каждая про-
веру при каждом добавлении кли- ки лицензии «на процессор», однако грамма имеет свои особенности, на ко-
ента. Лицензии «на процессор» до- не все продукты могут лицензировать- торых можно будет сыграть в стремле-
ступны для большинства серверов ся по такой схеме. Выходом может быть нии сократить итоговую стоимость ПО.
приложений Майкрософт, например покупка лицензии «External Connector». Чтобы вам было четко понятно, как эти
для Microsoft SQL Server (важное ис- Эта лицензия позволяет подключиться программы согласуются между со-
ключение – для Microsoft Exchange к серверному ПО любому количеству бой, они представлены в виде схемы
и Microsoft Windows Server лицензий внешних пользователей, заменяя для (см. рис. 4).
«на процессор» не существует). них клиентские лицензии на доступ. На схеме программы корпоратив-
И еще одно важное замечание: Понятие «внешний пользователь» оп- ного лицензирования рассматривают-
в модели лицензирования «на процес- ределяется совершенно четко. Это ли- ся с двух точек зрения.
сор» платить надо только за те процес- цо, которое не является: По вертикали представлены про-
соры, на которых выполняется дан-  сотрудником вашей компании граммы лицензирования в зависимос-
ный продукт. на полной ставке, сотрудником ти от размера компании – покупате-
Например, если вы имеете че- на неполной ставке или времен- ля. Эти компании разбиты на два сег-
тырехпроцессорный блок, на кото- ным сотрудником; мента: малые и средние предприятия,
ром работает SQL Server, использу-  лицом из числа временного пер- к которым относятся компании от 5 до
ющий только один процессор из че- сонала, работающего по агент- 500 ПК, и большие компании, более
тырех, то и лицензию «на процессор» ским соглашени-
вам нужно купить только одну. Много- ям, или незави-
ядерность не учитывается. Один про- симым подрядчи-
цессор – одна лицензия. А сколько ком, работающим
ядер там внутри – не волнует совер- у вас по заданию;
шенно. При этом если на одном сер-  вашим клиентом,
вере вы установите несколько копий которому вы пре-
серверного программного обеспече- доставляете ус-
ния, которые используют одни и те же луги по хос тин-
процессоры сервера, нет необходи- гу с использова-
мости приобретать отдельную лицен- нием Серверной
зию для каждой копии серверного про- программы.
дукта. Кроме того, вы можете устанав-
ливать и использовать любое количес- Еще хочется ска-
тво копий серверного продукта на лю- зать, что лицензиро-
бом процессоре, для которого имеет- вание отдельных сер- Рисунок 3. Лицензирование при мультиплексировании

№1, январь 2007 11


администрирование
(лицензий) одного или нескольких про-
Как переоформить лицензию  Письмо-запрос от заказчика – компа- граммных продуктов Microsoft. Лицен-
Open License, если ваша компания нии, на которую выписана лицензия. зия является бессрочной, т.е. приобре-
меняет свое название или адрес?  Подтверждение согласия с условия- тенными программными продуктами
Если ваша компании приобрела продук- ми Лицензионного соглашения Open можно будет пользоваться в течение
ты по Open License, меняет свое название License со стороны организации, кото- неограниченного срока. При этом в те-
или адрес и желает переоформить лицен- рой лицензия передается. чение двух лет после размещения пер-
зию, то необходимо сделать следующее:  Ксерокопию передаваемой лицензии. вого заказа вы сможете пользовать-
 Направить запрос на переоформление ся полученной корпоративной скид-
лицензии в связи с изменением назва- Инфоцентр Microsoft проверяет пра- кой при размещении следующих сколь
ния (адреса) своему реселлеру. Необ- вомерность передачи лицензии. В том угодно мелких заказов (минимальный
ходимо сообщить Authorization Number случае, если передача возможна, Инфо- объем дополнительного заказа 1 шту-
и License Number. центр отправляет заказчику подтвержде- ка), но ценовой защиты нет – вы бу-
 Microsoft выпишет дополнительный ние. Заказчик возвращает исходную ли- дете дозаказывать продукты с гаран-
документ с указанием нового наиме- цензию своему реселлеру вместе с копи- тированной скидкой, но по текуще-
нования (адреса) заказчика. Этот до- ей письма-запроса и подтверждения Ин- му прайс-листу. В рамках программы
кумент будет содержать водяной знак фоцентра. предлагается широкий спектр продук-
«Недействительно без исходной лицен- Microsoft изготавливает новую лицен- тов для бизнеса – операционные сис-
зии». Новый заказ размещать не нужно. зию. Новая лицензия будет отличаться темы, настольные приложения, сер-
Сроки соглашения Open License, набор от старой только названием и реквизита- верные продукты, средства разработ-
продуктов и номер лицензии остаются ми заказчика. Набор продуктов, номер ли- ки. Для операционных систем предла-
без изменений. Какая-либо дополни- цензии, период сопровождения сохранят- гается только лицензия на обновле-
тельная оплата не производится. ся без изменений. ние Windows XP Pro Upgrade, исход-
 Если по каким-либо причинам заказ- На передачу лицензии наложены сле- ная лицензия может быть приобрете-
чику неудобно хранить два документа, дующие ограничения: на вами в виде коробочной или OEM-
то для переоформления можно исполь-  Должны быть переданы все лицензи- версии. Это очень-очень важно запом-
зовать процедуру передачи лицензии. онные сертификаты (отдельные лицен- нить! Настольные операционки в рам-
зии), полученные под одним и тем же ках программ корпоративного лицен-
Процедура передачи лицензии позво- авторизационным номером, и все пра- зирования продаются только как об-
ляет передать продукты, купленные по про- ва на размещение дополнительных за- новления существующих уже легаль-
граммам корпоративного лицензирования, казов по этому номеру. ных систем! Так что если вам надо их
другому юридическому лицу. Для выполне-  Если речь идет о лицензии на опера- приобрести/легализовать, то бери-
ния процедуры необходимо предоставить ционные системы, то такая лицензия те или ОЕМ, или пакеты легализации.
письменный запрос в адрес Инфоцентра может быть передана только как часть А если вы купили, например, компью-
Microsoft, включающий: программно-аппаратного комплекса. теры с предустановленной легальной
Windows XP Home, то тогда вы сможе-
250 ПК. Обратите внимание, что эти же программа Open License. Посколь- те прикупить Windows XP Pro Update
категории перекрываются. Для каж- ку единовременная оплата всей стои- по программе корпоративного лицен-
дого из этих сегментов предусмотре- мости программного обеспечения тре- зирования.
на своя программа корпоративного бует существенных затрат и отвлече- В рамках программы Open License
лицензирования, а программа Open ния ресурсов от других сфер бизнеса Microsoft предлагает в качестве опции
License подходит как небольшим орга- (что может быть неудобно для ваше- подписку на обновление – Software
низациям, так и крупным предприяти- го предприятия), Microsoft ввел про- Assurance. Если при размещении
ям. Кроме того, крупные предприятия граммы периодической оплаты ли- заказа на лицензии на програм -
иногда пользуются программой кор- цензии. Фактически это означает воз- мный продукт вы оплачиваете так-
поративного лицензирования, пред- можность приобрести ПО с трехлетней же Software Assurance, то получаете
назначенной для малого и среднего рассрочкой или вообще ничего не по- право использовать все новые вер-
бизнеса, например в случаях, когда им купать, а брать софт в аренду на три сии этого продукта, которые будут вы-
требуется сравнительно немного ли- года с правом последующего продле- пущены в течение двух лет. При этом
цензий. По горизонтали представле- ния аренды или выкупа. Преимущес- вы полностью контролируете ваши
ны программы лицензирования в за- тва очевидны: кардинальное умень- затраты на обновление ПО на два го-
висимости от типа лицензии и мето- шение административных накладных да вперед: лицензии на новые версии
да оплаты. расходов и распределение платежей уже оплачены, остается только приоб-
Модель лицензирования с едино- во времени. рести дистрибутив ($20) для установ-
временной оплатой требует приобре- ки продукта. Например, если в нача-
тения лицензии до установки. На этом Microsoft Open License ле года компания приобрела Microsoft
подходе основаны лицензии для пос- Программа Open License предназна- Office 2003 в комплекте с Software
тавщиков вычислительной техники чена для тех, кому необходимо при- Assurance, то новый Office 2007 полу-
(OEM), коробочные лицензии, а так- обрести небольшое количество копий чит бесплатно. Преимущества очевид-

12
администрирование
ны – новый и более дорогой продукт
можно получить, заплатив 50% сто-
имости старого продукта (стоимость
Software Assurance всегда считает-
ся как процент от стоимости текуще-
го продукта и составляет от 25 до 28
процентов в год). Кроме того, в рам-
ках Software Assurance предлагаются
дополнительные преимущества, та-
кие как обучение, доступ к ресурсам
TechNet и др.
У Software Assurance есть и допол-
нительные бонусы – например, появ-
ляется право установить дополнитель-
ный сервер холодного резервирования
для целей аварийного восстановления.
Количество дополнительных «холод-
ных» серверов должно быть не боль-
ше, чем количество купленных лицен- Рисунок 4. Общая структура систем лицензирования коммерческих организаций
зий Software Assurance для этих сер-
верных продуктов. OEM требуют активации продукта. бочной и ОЕМ-лицензиями. Посмотри-
Принять раешение по приобрете- При покупке программного обеспече- те таблицу: приведен расчет стоимос-
нии Software Assurance вам придется ния через механизм корпоративных ти лицензий для компании из 30 кли-
сразу. Потом докупить эту опцию к уже лицензий вам не потребуется активи- ентских мест и одного сервера, при
приобретенному программному обес- ровать свои продукты, т.к. вы приобре- условии покупки всего программного
печению нельзя! тете специальные носители, не требу- обеспечения.
После покупки вы получите лицен- ющие активации. Типичное решение может состо-
зионный сертификат (бумажный), ко- Для некоторых продуктов, однако, ять из одного сервера Microsoft SBS,
торый является подтверждением прав требуется ключ многократной уста- 30 копий Microsoft Office SBE, 30 ко-
на использование ПО. новки. Ключи можно получить на веб- пий Windows XP Pro, а также лицен-
В лицензионном сертификате узле eOpen или в лицензионном сер- зий – одной серверной (покупается
содержится авторизационный но- тификате. вместе с сервером) и 30 клиентских
мер Open License (Master Agreement Основные продукты, требующие SBS User CAL (из которых 5 приобре-
Number), который действует 2 года. ключа многократной установки: Office таются вместе с сервером SBS, а еще
Он определяет: Family, Windows XP Pro, Windows 25 покупаются двумя блоками по 20
 срок действия Software Assurance; Server. Для Windows XP Pro и Windows и 5 штук.).
 срок действия подписки MSDN/ Server 2003 предлагаются отдельные Конечно, покупка ОЕМ-поставки
TechNet; ключи для установки 32- и 64-битной будет выгодней, но эта выгода – си-
 период времени, в течение которо- версий. юминутная.
го клиент может размещать допол- После совершения покупки на ваш Обратите внимание – если вы ку-
нительные заказы любого разме- адрес электронной почты придет пись- пите Software Assurance в дополнение
ра, которые будут обрабатываться мо – приглашение на портал корпора- к ОЕМ-версии сервера, это увеличит
с тем же уровнем цен, что и перво- тивных клиентов Microsoft, который на- его начальную стоимость на 50%.
начальный заказ. зывается eOpen. При покупке ОЕМ вы не сможете
Чтобы попасть внутрь, нужно будет переносить программное обеспече-
Носители (компакт-диски и DVD- завести .NET Passport. ние с одного компьютера на другой,
диски) и комплекты документации до- На этом портале вы сможете про- а при участии в программе корпора-
ступны по отдельности и заказываются смотреть ключи продуктов, необходи- тивного лицензирования – сможете.
через дистрибуторов. Обратите внима- мые для инсталляций, увидеть все воз- Использование Open License дает
ние, что одного только исходного ком- можные бонусы, доступные вам как вам выигрыш в долгосрочной перс-
пакт-диска никогда не будет достаточ- покупателю Software Assurance, про- пективе, делая ваш бизнес более про-
но для работы с программным обес- честь о новых маркетинговых акци- зрачным, а ваш сон более крепким.
печением: должны быть приобретены ях Microsoft. На Open License свет корпора-
также лицензии. тивных программ не сошелся. Есть
Как упоминалось в статье «Как Варианты покупки: еще более интересные предложе-
купить ПО от Microsoft? Особенности стоимость и возможности ния как по ценам, так и по возмож-
приобретения и использования OEM- С тоимос ть пок упки программно - ностям.
версий» в №12 номере за 2006 г., ко- го обеспечения по программе Open Но об этом – в следующей статье.
робочная лицензия (FPP) и лицензия License находится где-то между коро- Удачи!

№1, январь 2007 13


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

Reporting Services: составляем отчеты

Павел Купцов
Ваш начальник требует отчета о трафике? Об итогах инвентаризации сети? Бухгалтерия
умоляет помочь с отчетом в Excel? А вы можете предоставить только маловразумительный
текстовый файл и рассуждаете о приобретении ERP-системы? Тогда, возможно, вы ещё
не знаете о современных технологиях разработки отчетов.

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

В
о многих организациях широ-
ко применяется MS SQL Server.
Сегодня он может использо-
ваться вместе с такими приложени-
ями, как 1C, SharePoint Portal Server,
WSUS, всевозможными корпоратив-
ными приложениями (Symantec Backup
Exec, продукты Surf Control, Citrix, SAP
BO), в собственных разработках ком-
пании, для сайта компании и т. п., вы
можете и дальше продолжит этот спи- Рисунок 1. Вид главной страницы веб-узла службы RS
сок для себя. Об удобствах использо-
вания этой базы данных можно гово- тельскими интерфейсами, что поз- сваиваются имена соответственно
рить долго, пока дело не дойдет до со- воляет создавать каталоги, источни- reportserver и reportservertempdb.
ставления удобочитаемых отчетов. ки данных, учетные записи пользо- Когда все необходимые компонен-
Конечно, программист всегда смо- вателей и предоставлять пользовате- ты установлены – можно приступать
жет открыть Query Analyzer и выпол- лям права. к установке RS. Добавлю, что в про-
нить заготовленный запрос, для то- Компоненты 1 и 2 должны сто- цессе установки инсталлятор про-
го чтобы получить интересующую его ять на одном компьютере, в то время верит все необходимые компонен-
информацию, но что делать рядовым как 3 и 4 компоненты могут быть уста- ты, и в случае если какого-то из них
пользователям, желающим получить новлены где угодно. не будет обнаружено, выдаст предуп-
доступ к информации из базы данных? Во время установки Reporting реждение. Когда вы будете устанавли-
На помощь приходит служба Reporting Services (далее RS) нужно будет вы- вать RS на сервер, то инсталлятор не
Services. брать, где будет установлена БД сер- найдет 4-ый компонент (если конечно
Служба составления отчетов SQL вера отчетов. вы не ведете разработку на сервере),
Server 2000, выпущенная в янва- Для этого вы ука-
ре 2004 года, вероятно, стала одним жите:
из самых широко используемых ком-  сервер SQL;
понентов.  пользователя
Почти всем организациям прихо- с соответствую-
дится создавать отчеты на основе дан- щими привилеги-
ных, и с помощью Reporting Services ями (для создания
компания Microsoft заполнила этот про- новых БД);
бел в инструментарии.  имя БД (можно ос-
тавить по умолча-
Установка нию).
Для того чтобы установить службу
Reporting Services, необходимо: Инсталлятор, про-
1. Windows Server 2003, Windows XP верив введенные дан-
или Windows 2000 с самыми пос- ные, создаст необхо- Рисунок 2. Создание нового проекта в VS
ледними пакетами обновлений. димые БД на указан-
2. Microsoft IIS, так как Reporting ном вами SQL-сер-
Services запускаются как веб-служ- вере.
бы XML (плюс должен быть уста- Сл у ж б ы R S и с -
новлен ASP.NET). пользуют две базы
3. SQL Server 2000 или 2005 в ре- данных SQL-серве-
дакции Standard, Enterprise или ра д ля вну тренне -
Developer (Reporting Services не- го хранения экземп-
совместимы с более ранними вер- ляра сервера отче-
сиями SQL Server). тов: одну для хране-
4. Разработчикам отчетов требуется ния данных, а другую
среда Visual Studio.NET 2003 или в качестве временно-
2005, которая управляет компо- го хранилища.
нентом Reporting Services Report Эти базы данных
Designer. создаются одновре-
менно и связывают-
Администраторов, которые не раз- ся по имени.
рабатывают отчеты, Reporting Services По умолчанию
обеспечивают различными пользова- базам данных при- Рисунок 3. Определение источника данных для проекта

№1, январь 2007 15


администрирование
Созданные отчеты можно просмат- зу данных. Параметры соединения
ривать с помощью веб-соединения задаются по нажатию кнопки «Edit»
или как часть приложения Microsoft (см. рис .4).
Windows или портала SharePoint. Ес- В окне свойства связи с данными
ли на сервере, куда вы устанавливаете нас интересует вкладка «Подключе-
RS, уже развернута служба SharePoint, ние». Здесь можно задать располо-
то потребуется дополнительная на- жение сервера SQL, имя пользова-
стройка IIS, подробности будут сооб- теля/пароль и выбрать базу данных
щены инсталлятором в процессе ус- для отчета.
тановки. Для наших примеров будем ис-
Думаю, что с установкой службы пользовать тестовую базу данных
RS вы справитесь. Примерную картину Northwind, которая создается на сер-
после установки смотрите на рис. 1. вере MSSQL в процессе его установ-
О функционале этой страницы ки. Структуру этой базы я не буду опи-
я скажу позже. Перейдем к самому ин- сывать, при желании, изучить структу-
тересному – созданию отчетов. ру этой базы, вы сможете самостоя-
тельно. Название сервера баз данных
Рисунок 4. Окно редактирования
свойств подключения Первый отчет в наших примерах будет CTX (у вас
Итак, установка службы на сервер это может быть localhost или любое
это сообщение можно смело игнориро- прошла удачно, добавление шабло- другое), в зависимости от того, где вы
вать. Для того чтобы в Visual Studio (да- на для разработки отчетов в VS вы- будете устанавливать службу RS.
лее VS) появились шаблоны для созда- полнено. Теперь можно приступать Для примеров можете использовать
ния отчетов – необходимо запустить к написанию первого отчета. Запус- тот же SQL-сервер, где установили RS
установку RS на компьютере для раз- каем VS и открываем новый проект или любой другой в вашей сети, глав-
работки отчетов, инсталлятор устано- (см. рис 2.). ное – наличие на нем базы Northwind.
вит только шаблоны, и они станут до- Новый шаблон, который добавился Никаких особых настроек для этой БД
ступны при создании проектов в VS. в VS, называется Business Intelligence делать не требуется.
Project. Запустить со- Следующий шаг определяет строку
здание этого проекта запроса. По нажатию на кнопку «Edit»
можно в двух режи- вызывается редактор Query Builder,
мах, в режиме мас- хотя мне кажется это лишнее, запрос
тера и в обычном ре- можно просто вставить в окно масте-
жиме. ра (см. рис. 5).
Для первого от- Для первого отчета используем та-
чета запустим созда- кой запрос:
ние проекта в режи-
ме «мастера» (Report SELECT OrderID AS 'Номер заказа', ↵
OrderDate AS 'Дата заказа', ↵
Project Wizard). Пе- RequiredDate AS ↵
ред запуском мас- 'Дата исполнения', ↵
Freight AS 'Стоимость'
тера можно выбрать FROM Orders
Рисунок 5. Строка запроса SQL, определяющая выборку WHERE CustomerID =
данных для отчета название для отчета
(SELECT CustomerID
(это будет название FROM Customers
папки проекта), и его WHERE CompanyName LIKE ↵
'Familia%')
расположение.
Первый шаг «мас- Названия полей можно определять
тера» предлагает нам через псевдонимы (ключевое слово
выбрать название для AS), если не делается выборка * (ALL),
ис точника д анных в последнем случае мастер сам назна-
(это может быть лю- чит псевдонимы для полей.
бое название), и па- В следующем шаге мастера выбе-
раметры соединения рите тип отчета Tabular (табличный).
(см. рис .3). Тип отчета Matrix (матричный) исполь-
И с т о ч н и к д а н - зуется для отчетов с перекрестными
ных можно сделать ссылками, о нем мы не будем говорить
общим (Shared), это в нашей статье.
удобно, когда в про- Шаг Design the Table определяет,
екте несколько ви- какие поля запроса будут доступны
дов отчетов исполь- для просмотра в отчете, каким обра-
Рисунок 6. Выбор группировки полей в отчете зуют одну и ту же ба- зом они будут группироваться.

16
администрирование
Поле Page определяет назва- ный отчет. Сейчас
ние страницы отчета, и в этом случае же мы лишь немно-
на каждой странице отчета будет оче- го подкорректируем
редной результат выборки. ширину столбцов (это
Поле Group определяет поля запро- выполняется прос-
са, по которым осуществляется груп- тым перетаскивани-
пировка значений. ем «мышкой» границ
Поле Details определяет поля за- полей, как в Excel),
проса, которые будут выводится в от- и о т ф о р м а т и р у -
чете (см. рис. 6). ем свойства полей
Следующий шаг определяет: с датой и стоимос-
 внешний вид таблицы; тью. Для этого клик-
 возможность раскрывающихся нем правой кнопкой Рисунок 7. Выбор формата ячейки
списков (Enable drilldown), полезная «мыши» в соответс-
опция в случае большого количест- твующих полях и перейдем на пункт
ва сгруппированных данных; «Properties» (свойства). Откроется ок-
 возможность расчета промежуточ- но, в котором можно задать формат
ных итогов (Include subtotals). для данной ячейки (см. рис. 7).
После того как мы отформатиро-
Последнюю опцию лучше выстав- вали вывод, изменили размеры стол-
лять вручную, так как мастер расстав- бцов и ячеек, немного можно добавить
ляет формулы для промежуточных оформления и получится отчет, кото-
итогов автоматически для всех по- рый можно показать начальству, впро-
лей, содержащих цифры, что некор- чем, не очень строгому (см. рис. 8).
Рисунок 8. Предпросмотр готового
ректно (зачем нам складывать номе- отчета в VS
ра заказов?). Второй отчет
Последний шаг, который мы выпол- Теперь, когда базовые понятия опреде- Теперь переходим на вк ла дк у
ним, будет – определение внешнего ви- лены, можно разработать отчет слож- «Layout», и кликнем правой кнопкой
да отчета. Здесь уже все зависит от ва- ней и с большим функционалом. Плюс мыши на поле ниже нашей табли-
ших цветовых и стилистических пред- к этому рассмотрим публикацию отче- цы (см. рис. 10). Переходим в пункт
почтений. На выбор дается пять вари- та на сервере RS. «Report Parameters». В открывшем-
антов оформления. После этого шага Если при создании проекта в «мас- ся окне – вы увидите уже определен-
нажмем в «мастере» кнопку «Finish» тере» вы пометили источник данных ный параметр Company. Как видите,
(пропустим шаг публикации отчета на как общий, то в окне Solution Explorer VS обработал наш запрос, и перемен-
сервере RS). Теперь назовем наш от- у вас должна быть картинка примерно ные с префиксом @ автоматически за-
чет «Информация о заказах» и, пос- как на рис. 9. считал как параметры, передающие-
тавив галочку в «Preview report», наж- Кликнем, правой кнопкой мыши ся в запрос. В окне Report Parameters,
мем «Finish». на папке Reports и выберем пункт можно опреде-
Как видите, отчет у нас получился «Add New Report». Откроется привыч- лить несколь-
слишком простой, но не спешите с вы- ный «мастер», но мы уже можем ис- ко полез ных
водами. Красоту и удобочитаемость пользовать «Общий» источник дан- с в о й с т в д л я
только предстоит настроить. Описы- ных. Проходим все шаги «мастера» п е р е м е н н о й.
вать все возможности разработки от- точно так же как и для первого от- Здесь мы уже
четов в среде VS не хватит и книги, по- чета, только изменим немного стро- о п р е д е л я е м
этому я кратко опишу то, что нам пот- ку запроса: тип перемен-
ребуется в первую очередь. ной, значение
Работать с отчетом нам предстоит SELECT OrderID AS 'Номер заказа', ↵ по умолчанию,
OrderDate AS 'Дата заказа', ↵
в основном в трех вкладках, это: RequiredDate AS ↵ список доступ-
 Preview – для просмотра отчета. 'Дата исполнения', ↵ ных значений,
Freight AS 'Стоимость'
 Layout – д ля редак тирования FROM Orders псевдоним для Рисунок 9.
WHERE CustomerID = Добавление нового
свойств таблицы и внешнего вида запроса поль- отчета в проект
(SELECT CustomerID
отчета. FROM Customers зователю и т. п.
 Data – для редактирования тела за- WHERE CompanyName LIKE ↵ (см. рис. 11).
@Company+'%')
проса и источника данных. Немного
Те, кто знаком с Transact SQL, сра- о т ф о р м а т и -
В поле Layout находится наиболь- зу же заметят ошибку в запросе. Пе- руем таблицу
шее количество полезных для нас на- ременная @Company не объявлена отчета, и пе -
строек. Их я опишу подробнее позже, и не типизирована. Но это особенность рейдем к фи- Рисунок 10.
Доступ к списку
когда мы будем создавать более слож- работы с VS и службой RS. на льной с та- параметров отчета

№1, январь 2007 17


администрирование
вим галочку «Hide in
list view» (не отобра-
жать в списке), что-
бы она не отобража-
лась в обычном пред-
ставлении на веб-уз-
ле (см. рис. 12).
Вернувшись
на узел, мы не уви-
дим созданную на-
Рисунок 12. Создание папки
ми папку, до тех пор, на веб-узле RS
пока не нажмем на
кнопку «Show Details» (см. рис. 13).
(подробно). Перей- Для отчета с параметром (вто-
Рисунок 11. Редактирование свойств переменной дем в папку Data и на- рой отчет) будет доступна опция
жмем кнопку «New «Parameters», в которой можно перео-
дии создания отчета – размещение его Data Source» (новый источник данных). пределить некоторые значения. Каж-
на сервере с RS. Откроется окно для создания источни- дому отчету можно установить лимит
ка данных. В поле Name, Description на выполнение, и разграничить до-
Публикация отчета можно вводить произвольные данные, ступ к нему по пользователям из Active
Публиковать отчет на сервере можно отметим пункт «Hide in list view и Enable Directory.
двумя способами: data source», тип соединения выбира- В свойствах доступно еще несколь-
 Из VS (публикуется весь проект). ем SQL Server. ко опций, с ними я думаю, вы разбере-
 Через веб-интерфейс RS. Данные в поле Connection String тесь сами.
имеют следующий формат. Теперь можно запускать отчеты
Я рассмотрю второй способ, так как на выполнение, по вкладке «View»
он дает большее понимание процесса data source=CTX; ↵ (см. рис. 14).
initial catalog=Northwind
публикации, чем непрозрачные дейст- Сформированный отчет можно эк-
вия VS. где: спортировать в 7 форматов, в их чис-
Для размещения отчета, мы долж-  data source – Net-BIOS-имя серве- ле Excel, PDF, XML, html и т. п.
ны через браузер зайти на страни- ра MS SQL (это может быть как IP-
цу RS. На этой странице есть меню адрес, так полное доменное имя Резюме
для операций с отчетами, источни- сервера); Отчеты – важная составляющая функ-
ками данных, и некоторой настрой-  initial catalog – имя нашей БД ционала любой базы данных. Удобный
ки веб-узла. Первое, что я посовето- на сервере. инструмент для их разработки должен
вал бы сделать, – разместить в отде- иметь, как минимум, 3 качества:
льной папке Источник данных. Для это- Указываем имя пользователя и па-  Позволять пользователю выбирать
го создаем папку Data. При этом ста- роль для доступа к БД и жмем «ОК». параметры для запроса.
Теперь можно загру-  Уметь разграничивать доступ к раз-
зить оба наших от- личным отчетам.
чета.  Экспортировать в различные фай-
Для загрузки от- ловые форматы результаты запро-
ч е то в и с п ол ь зуе м са.
пункт «Upload File»
(з а г ру з к а ф а й л а) . Всеми этими свойствами система
Из нашего проекта обладает.
мы должны загрузить Минусы этой системы очевидны:
файлы с расширени- высокая стоимость. Использование ре-
Рисунок 13. Назначение источника данных для отчета ем rdl. После загруз- шений на основе Open Source гораздо
ки файлов, перей- дешевле для внедрения и использова-
дем в свойства од- ния, но лично мне неизвестны подоб-
ного из загруженных ные Open Source-проекты, учитывая,
отчетов. что мы рассмотрели лишь вершину ай-
На вкладке «Data сберга этой технологии.
source» (ис точник
данных) нужно ука- 1. http://msdn2.microsoft.com/ru-ru/library/
зать созданный нами ms166344.aspx.
ранее источник дан- 2. ht t p : / / c it fo r um.r u / d at ab ase / m s sql /
Рисунок 14. Так выглядит отчет, размещенный на сервере RS ных и нажать «Apply» reporting_services.

18
bugtraq

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


в Microsoft Visual Studio WMI Object
Broker ActiveX-компоненте
Программа: Microsoft Visual Studio 2005. Множественные уязвимости
Опасность: Критическая. в Mozilla Firefox
Описание: Уязвимость существует из-за неизвестной ошиб- Программа: Mozilla Firefox версии до 1.5.0.9 и 2.0.0.1.
ки в WMI Object Broker ActiveX-компоненте (WmiScriptUtils.dll). Опасность: Критическая.
Злоумышленник может выполнить произвольный код на це- Описание: 1. Обнаружены различные ошибки в механиз-
левой системе с помощью специально сформированного мах раскладки и JavaScript. Удаленный пользователь мо-
веб-сайта, открытого в Internet Explorer. жет с помощью специально сформированной веб-страни-
URL производителя: www.microsoft.com. цы вызвать повреждение памяти и потенциально выпол-
Решение: Установите исправление с сайта производи- нить произвольный код на целевой системе.
теля. 2. Уязвимость существует из-за ошибки при умень-
шении работы точности процессоров с плавающей точ-
кой на Windows-системе при загрузке плагина, создающе-
Переполнение буфера при обработке го Direct3D-устройство. Злоумышленник может заставить
PE-файлов в BitDefender функцию js_dtoa() потребить все доступные ресурсы на сис-
Программа: BitDefender Internet Security 9.x, BitDefender теме и вызвать отказ в обслуживании.
for MS ISA Server, BitDefender for MS Exchange 5.5 1.x, 3. Уязвимость существует из-за ошибки проверки гра-
BitDefender for MS Exchange 2003 1.x, BitDefender for MS ниц данных во время установки курсора в Windows bitmap
Exchange 2000 1.x, BitDefender Antivirus Standard 9.x, с использованием CSS-свойства курсора. Удаленный поль-
BitDefender Antivirus Standard 8.x, BitDefender Antivirus зователь может вызвать переполнение динамической памя-
Professional Plus 8.x, BitDefender Mail Protection for Small ти и выполнить произвольный код на целевой системе.
Business 1.x. 4. Обнаружена ошибка в JavaScript функции watch(). Уда-
Опасность: Критическая. ленный пользователь может выполнить произвольный код
Описание: Уязвимость существует из-за целочисленно- на целевой системе.
го переполнения при обработке определенных PE-фай- 5. Уязвимость существует в LiveConnect, которая позво-
лов. Удаленный пользователь может с помощью специаль- ляет уже освобожденному объекту быть использованным
но сформированного PE-файла вызвать переполнение ди- еще раз. Удаленный пользователь может выполнить про-
намической памяти и выполнить произвольный код на це- извольный код на целевой системе.
левой системе. 6. Уязвимость существует из-за ошибки при обработке
URL производителя: www.bitdefender.com. атрибута src в теге IMG, загруженном во фрейме. Удаленный
Решение: Установите последнюю версию с сайта произ- пользователь может изменить атрибут на «javascript: URI»
водителя. и выполнить произвольный javascript-сценарий в браузере
жертвы в контексте безопасности сайта.
7. Ошибка повреждения памяти обнаружена при об-
Несколько уязвимостей в антивирусе работке SVG. Удаленный пользователь может выполнить
NOD32 произвольный код путем присоединения SVG-коммента-
Программа: NOD32 for Domino 2.x, NOD32 for DOS 1.x, NOD32 рия DOM-узла от одного документа к другому типу доку-
for FreeBSD 1.x, NOD32 for Linux 1.x, NOD32 for MS Exchange мента (например, HTML).
Server 0.x, NOD32 for NetBSD 1.x, NOD32 for Novell Netware 8. Свойство «Feed Preview» в Firefox 2.0 может позволить
Server 1.x, NOD32 for OpenBSD 1.x, NOD32 for Windows 95/ злоумышленнику получить доступ к потенциально важным
98/ME 2.x, NOD32 for Windows NT/2000/XP/2003 2.x. данным при получении иконки агрегатора новостей.
Опасность: Критическая. 9. Регрессия прототипа Function в Firefox 2.0 может поз-
Описание: 1. Целочисленное переполнение при обработ- волить злоумышленнику выполнить произвольный код сце-
ке DOC-файлов позволяет переполнить динамический бу- нария в браузере жертвы в контексте безопасности уязви-
фер через специально обработанный DOC-файл и выпол- мого сайта.
нить произвольный на целевой системе. URL производителя: www.mozilla.org.
2. Ошибка деления на нуль при обработке CHM-файлов Решение: Установите последнюю версию (1.5.0.9 или
позволяет вызвать отказ в обслуживании через специаль- 2.0.0.1) с сайта производителя.
но обработанный CHM-файл. Уязвимость была обнаруже-
на 24 августа и устранена 8 сентября через механизм авто- Составил Александр Антипов
обновления без соответствующего уведомления.
URL производителя: www.eset.com.
Решение: Установите NOD32 1.1743 или более высокую
версию.

№1, январь 2007 19


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

Как быстро и эффективно провести учет


компьютерной техники

Алексей Бережной
Программный комплекс CheckCfg + Sklad позволит вам организовать учет аппаратного
и программного обеспечения, построить необходимые отчеты, и при этом получить
дополнительные возможности для анализа состояния компьютерной техники
и администрирования сети.

Т
ак или иначе, вам приходится стал- таревшего и вышедшего из строя обо- новлении, отслеживании изменений
киваться с задачей учета компью- рудования, планировать закупку тех- в конфигурации оборудования. Хо-
терной техники в вашей компа- ники и программных лицензий, быст- рошо, если в сети 10-20 компьюте-
нии. Решить эту проблему можно по- рее выполнять работы по обслужива- ров. Гораздо хуже обстоит дело, ес-
разному. нию заявок, поступающих от пользо- ли имеется крупная сеть свыше 500
Вариант первый – не учитывать вателей в отдел IT. компьютеров. В этом случае отсле-
совсем. При кажущейся простоте ре- Вариант второй – использовать дить все производимые изменения
шения это чревато проблемами в даль- для учета средства офисных при- затруднительно.
нейшем. Во-первых, рано или поздно ложений. Например, вести таблицу Несколько лучше обстоят дела, ког-
придется отчитываться за имеющие- в MS Excel или другом табличном ре- да вместо табличного редактора ис-
ся в наличии материальные ценности. дакторе. Плюсы: тривиальное реше- пользуется программа на базе попу-
Во-вторых, владение актуальной ин- ние, требующее только навыков в ис- лярной системы управления базами
формацией об используемом аппарат- пользовании табличного редактора. данных, например 1С. В этом случае
ном и программном обеспечении поз- Минусы: необходимость вводить все значительно облегчен поиск данных,
воляет вовремя выполнять замену ус- данные вручную, трудности при об- производится проверка дублирова-

20
администрирование
ния записей, имеются средства пост-
роения различных отчетов. Но в целом Основные возможности  Применение гибкой конфигурации уче-
эта система не избавлена от главного совместного использования та компьютерной техники вашей орга-
недостатка – необходимости вручную программ CheckCfg и Sklad низации.
собирать информацию.  Сбор данных об аппаратной и програм-  Занесение информации о ремонтах
И, наконец, третий вариант – вос- мной конфигурации. и модернизациях.
пользоваться программой для авто-  Автоматическое занесение полученной  Генерация отчетов.
матического сбора информации об информации в базу данных.  Приятные мелочи, полезные для сис-
аппаратной конфигурации компьюте-  Легкость настройки программы и ре- темного администратора.
ров с последующим занесением в ба- дактирования данных.
зу данных. Этот вариант имеет следу-
ющие преимущества: сбор конфигура- У нас в сети имеется компьютер в результате проверки CheckCfg. В на-
ции производится автоматически и тре- Comp1 с папкой для общего доступа шем случае c:\programs\checkcfg\date.
бует лишь небольшого редактирования Program. Программа CheckCfg распо-
в дальнейшем. Хранение информации ложена в этой папке. Таким образом, Создаем структуру
в формате базы данных значительно путь к программе CheckCfg: \\comp1\ компании
облегчает последующее построение programs\checkcfg. Настроим автома- Перед первым запуском программы
отчетов. Автоматическое обновление тический запуск программы на ком- вас поприветствуют и вежливо побла-
информации о конфигурациях компью- пьютерах клиентов. Способов для это- годарят за ее использование. После
теров позволяет повысить оператив- го существует масса: добавить ярлык этого вам предложат создать пример
ность при работе с базой данных. в «Автозагрузку» (StartUp), помес- структуры на базе некоего абстракт-
Сегодня речь пойдет о программном тить соответствующий ключ в реестр ного предприятия. Лучше согласить-
комплексе CheckCfg + Sklad. Автор этих или организовать запуск стартового ся на этот шаг, чтобы у вас перед гла-
программ – Андрей Татуков. Офици- скрипта через GPO. При каждом стар- зами был понятный образец. А ненуж-
альный сайт: http://checkcfg.narod.ru/ те компьютеров программа CheckCfg ные элементы всегда можно удалить.
index.htm. будет обновлять файлы c результата- Мы же будем использовать получившу-
ми работы. Найти их можно в катало- юся структуру в качестве примера для
Идеология использования ге \\comp1\programs\checkcfg\date. Ка- иллюстрации работы программы.
Программа CheckCfg анализирует кон- талог будет создан при первом запус- Наконец, мы добрались до пер-
фигурацию компьютера и записывает ке программы CheckCfg. По умолча- воначального окна программы Sklad
полученную информацию в файл. нию эти файлы носят названия, соот- (см. рис. 1).
Sklad при запуске автоматичес- ветствующие MAC-адресам сетевых Окно программы напоминает окно
ки обрабатывает файлы, созданные карт компьютеров. Мы предполагаем, обычной MMC-консоли Windows. Точно
CheckCfg, и помещает найденную ин- что программа Sklad будет запускать- так же вверху мы видим меню програм-
формацию в свою базу данных. После ся с компьютера Comp1. Поэтому боль- мы, справа – дерево объектов (контей-
чего можно формировать отчеты. шинство путей настроек будет указа- неров), слева – информацию о выбран-
Что сразу немного не понравилось – но в виде c:\programs\checkcfg. В слу- ном объекте. Внизу находится панель
для запуска программы Sklad_2.exe чае, если предполагается иная конфи- инструментов, позволяющая нам со-
требуется установить Borland Database гурация сети, в настройках програм- хранить сделанные изменения, найти
Engine (BDE). Хотя это не проблема, по- мы должны быть указаны соответс- нужный объект в дереве, вставить но-
тому что установочный вариант с инс- твующие пути. вый объект в соответствующий контей-
трукцией выложен на сайте программы Распакуем программу Sklad в ката- нер. Манипулировать объектами мож-
по адресу: http://checkcfg.narod.ru/soft/ лог c:\programs\Sklad. Остается только но при помощи мыши или используя
bde_all.zip. Нужно только скачать и рас- прописать пути к файлам, созданным пункт меню «Навигация».
паковать этот архив в каталог Windows
и запустить файл install.bat.

Устанавливаем
программы
Теперь рассмотрим работу програм-
много комплекса более подробно
на примере.
Мы настроим программы CheckCfg
и Sklad для дальнейшей работы, со-
здадим шаблон некой организации
и на его основе рассмотрим проце-
дуры занесения информации в базу
данных, ее редактирование и созда-
ние отчетов. Рисунок 1. Окно первого запуска программы Sklad

№1, январь 2007 21


администрирование
ев особой роли не играют, поэтому ос-
тавляю этот шаг на ваше усмотрение.
Всё, данные внесены, теперь мо-
жем приступить к распределению
компьютеров по ответственным со-
трудникам.
В примере мы по большей части ис-
пользуем мышь. Хотя то же самое мож-
но выполнить, используя меню «Нави-
гация». В этом меню есть все необхо-
димое для управления объектами. Те-
перь нужно привязать учитываемую
Рисунок 2. Распределенная техника технику к определенным сотрудникам.
Тут есть один нюанс. Если вы просто
перетащите мышкой значок контей-
нера компьютера на учетную едини-
цу сотрудника, программа предложит
нам поместить соответствующий ком-
Рисунок 3. Окно просмотра журнала пьютер перед контейнером.
Избежать этого можно, создав внут-
Благодаря созданию примера что мы должны указать путь к файлу ри контейнера сотрудника хотя бы один
структуры предприятия у нас не пустое checkcfg.ini. В этом окне в правом вер- объект вручную. Поэтому мы пойдем на
окно, а уже созданные подразделения: хнем углу щелкаем мышкой на кноп- небольшую хитрость: сначала созда-
«Дирекция» и «Бухгалтерия», содер- ке «Настроить» и в новом окне вво- дим внутри контейнеров пользователей
жащие соответствующие контейнеры дим путь к файлу checkcfg.ini, создан- объекты типа «Примечание», а потом
пользователей: Иванов Иван Иванович ному программой CheckCfg, в нашем уже будем перетаскивать на них кон-
и Петров Петр Петрович с Сидоровым случае – c:\programs\checkcfg. Клик- тейнеры компьютеров. Почему имен-
Сидором Сидоровичем соответствен- нем мышкой на кнопке с изображе- но «Примечание»? Мы могли бы сразу
но. Также на нижней панели есть кноп- нием собачки и возвращаемся в окно создать что-то более полезное, напри-
ка удаления и checkbox для разреше- «Настройки CheckCfg». После указания мер объект типа «Монитор». Пока речь
ния автосохранения. Последняя кноп- пути к файлу checkcfg.ini у нас в поле идет о рабочих станциях, это выглядит
ка с изображением собачки на нижней «Каталог для выходных данных» появи- логичным. Но если понадобится учиты-
панели означает выход из програм- лось соответствующее значение. вать серверное оборудование и т. п., мо-
мы. (Пользователям программы нужно Нам остается только закачать дан- ниторов, принтеров и другого перифе-
привыкнуть, что рисунок собачки озна- ные, получившиеся после работы рийного оборудования, в данном слу-
чает то же самое, что и «Выход».) CheckCfg, в программу Sklad. Для этого чае может и не быть. Нажимаем правой
Объекты, внутри которых могут выбираем меню «File → Обновить дан- кнопкой мыши на контейнере соответс-
располагаться другие объекты, мы бу- ные… → Всего предприятия». Здесь твующего пользователя, выбираем из
дем также называть контейнерами или нам снова необходимо выбрать путь меню пункт «Добавить». Из появивше-
организационными единицами. нахождения файлов с результатами гося окна выбираем объект «Примеч.».
Добавлять организационные еди- работы программы CheckCfg. Щелкаем Нажимаем кнопку «Добавить». Теперь
ницы в виде отделов и сотрудников, мышкой на верхнюю кнопочку с изобра- объект «сотрудник» с именем «Иванов
а также компьютеры, мониторы и дру- жением открытой папки. В появившем- Иван Иванович» превратился в полно-
гие объекты можно, используя ме- ся окне выбора выбираем путь к фай- ценный контейнер, и в него можно по-
ню «Навигация → Добавить» или на- лам, созданным программой CheckCfg. местить другие объекты и контейнеры,
жав правую клавишу мыши, выбрать Потом нажимаем мышкой на кнопку например, объект компьютер.
из появившегося меню соответствую- «< Добавить». И после всего активизи- Перетаскиваем мышкой на объект
щий пункт. Но для иллюстрации рабо- руем процесс закачки файлов, нажав «Примечание» значок компьютера. По-
ты программы нам вполне хватит и по- на кнопку «Пуск» в данном окне. является окно с вопросом, например:
лучившейся структуры. Далее программа попросит под- «Переместить Computer1 перед << Текст
твердить возможность создать ката- Примечания >>». Подобные манипуля-
Заносим информацию лог sklad.tmp для хранения времен- ции необходимо провести над всеми
в базу данных ных файлов. (Честно говоря, я не ви- контейнерами пользователей. В ито-
Теперь нам нужно занести в базу жу причин, из-за которых мы должны ге должно получиться что-то похожее
данных существующие конфигура- отказаться.) на окно, изображенное на рис. 2.
ции компьютеров. Для этого нужно После экспорта данных програм- Теперь необходимо заполнить поля
из меню «File» выбрать пункт «Нас- ма предложит автоматически распре- с информацией об устройствах, стоя-
тройки → Настройки CheckCfg». По- делить неучтенные компьютеры. Пос- щих на учете. Выбираем соответствую-
является окно с напоминанием того, ледствия выбора в большинстве случа- щий объект в правой части окна и, на-

22
администрирование
жав в левой части окна вкладку «До-
полнительно», заполняем следующие
поля: «Модель», «Заводской номер»,
«Дата прихода», «Стоимость», «Пос-
тавщик», «Накладная №», «Гарантия
до», «Инв. №», «Пломба №», «№ поме-
щения», «№ раб. места», «Должность»,
«Телефон» (если необходимо), «ФИО
мат. отв.» (Фамилия Имя Отчество ма-
териально ответственного лица).
Следует отметить, программа Sklad
не так уж проста, как кажется. Боль-
шинство действий, производимых
в программе, регистрируются в жур-
нале. Просмотреть журнал можно, вы-
брав пункт меню «Навигация → Про-
смотреть журнал».
Пример выполненных перемеще-
ний, занесенных в журнал, приведен Рисунок 4. Свод компьютерной техники по предприятию. Окно сохранения в различных
на рис. 3. форматах

Формируем отчеты
После занесения информации в базу
данных мы можем начать строить от-
четы. Отмечу, что помимо просмотра
все отчеты можно сохранять в форма-
тах: RTF, формате с разделителями
для импорта в Excel и в обычном тек-
стовом файле. Рисунок 5. Образец инвентаризационной ведомости
Первое, что нас интересует, это
статистика о том, какое оборудование бенно когда пользователи имеют воз- выбираем нужный компьютер, по-
и программное обеспечение использу- можность самостоятельно устанавли- том меню «Отчеты → Паспорт ком-
ется на предприятии. вать программное обеспечение на свои пьютера». Выводится длинный пере-
Для этого существует меню «От- компьютеры. Помимо перечня офици- чень технических характеристик все-
четы → Своды», далее из подменю ально купленных версий программно- го, что установлено, в том числе нас-
со списком сводов выбираем пункт го обеспечения и других полезных для тройки SMTP и POP3-протоколов поч-
«Свод по предприятию». Это общий администратора и бухгалтера вещей тового клиента и многое другое. Пре-
перечень оборудования, использую- можно получить информацию о том, красный способ держать «руку на пуль-
щегося на предприятии. Внешний вид чем пользователи занимаются на своих се», контролируя вверенные сетевые и
получившегося документа смотрите компьютерах, и сделать соответствую- локальные ресурсы.
на рис. 4. Чтобы сохранить получен- щие выводы. Как, например, из спис- И наконец, теперь переходим
ные результаты, нужно нажать мыш- ка установленных программ видно, что к главному. Ведомость инвентариза-
кой кнопочку с изображением диске- кое-кто из пользователей не прочь по- ции. Выбираем «Отчеты → Инвентари-
ты внизу окна. играть в игры на служебном компьюте- зация… → Инвентаризационная ведо-
Пункт «Свод по отделу» формиру- ре. Чтобы узнать, у кого установлена та мость». Появится окно с возможностью
ет аналогичный свод в рамках одно- или иная программа, необходимо на- выбора характеристик, по которым бу-
го подразделения. Для выбора соот- жать на изображение крестика рядом дет проводиться инвентаризация. От-
ветствующего отдела нужно выбрать с ее названием. мечаем необходимые пункты, которые
мышкой нужное подразделение в де- Еще очень полезная функция – мы хотим увидеть в инвентарной ведо-
реве объектов. «Уч е т н а я к а р т о ч к а т ех н ич е с к и х мости. Определяем формат вывода:
Следующий документ, который нам средств». Для того чтобы напечатать файл, совместимый с Excel или DBF.
не менее интересен – «Свод по вла- учетную карточку, необходимо пред- Поскольку формировать ведомость
дельцам». Любому системному адми- варительно выделить интересующий будем в Excel, выбираем соответству-
нистратору хотя бы раз в год необходи- компьютер. Потом выбираем пункт ющий пункт. Нажимаем мышкой кно-
мо знать, какое оборудование исполь- меню «Отчеты → Учетная карточка». почку «Сформировать». Появится ок-
зуется конкретным пользователем. Теперь можно распечатать карточку но с предложением выбрать имя сохра-
И еще один полезный для сис- и вручить пользователю под роспись. няемого файла.
темных администраторов пункт меню Функция «Паспорт компьютера» Вводим нужное нам имя файла
«Своды → Свод по программам». Осо- вызывается аналогичным образом – и получаем текстовый файл, пригод-

№1, январь 2007 23


администрирование
министратору сети → Hosts») форми-
рует нормальный рабочий файл Hosts,
вполне пригодный к использованию
(напомним, что этот файл использо-
вался в сетях TCP/IP до изобретения
служб DNS и используется по сей день
в малых сетях, не имеющих собствен-
ного DNS-сервера).
Пример файла hosts:

# Local hosts
192.168.9.31 COMP1
192.168.9.32 COMP2
192.168.9.33 COMP3
Рисунок 6. Журнал ремонтов

ный для открытия в Excel. Образец Для этого выбираем меню «Отчеты → Еще очень полезная функция –
файла смотрите на рис. 5. Журналы → Ремонты». Получившийся формирование файла с перечнем имен
С такой ведомостью и в бухгалте- отчет можно увидеть на рис. 6. компьютеров и соответствующими
рии показаться не стыдно. Аналогичным образом поступаем MAC и IP-адресами. Вызывается эта
и в случае учета модернизаций. Выде- функция через меню «Отчеты → Адми-
Учет ремонтов, ляем необходимый объект, в данном нистратору сети → MAC and IP-addr».
модернизаций и инспекций случае снова Computer2. Выбираем Пример формируемого файла
Помимо учета установленного обо- вкладку «Дополнительно». Внизу, в ок- mac_ip.txt:
рудования по факту программа Sklad не ввода дополнительной информации
умеет вести учет ремонтов, модерни- выделяем пункт «Модернизации». Ана- # MAC IP Host
0006298FC845 192.168.9.31 COMP1
заций, а также выводить статистику логичным образом, как и в случае с вво- 000A5E6416D2 192.168.9.32 COMP2
о проведенных инспекциях. Для ил- дом информации о ремонтах, добав- 00C026AC48DB 192.168.9.33 COMP3
люстрации этого создадим записи ляем новую запись в журнал модерни-
о ремонте и модернизации одного ком- заций. Заполняем необходимые поля: Очень удобная вещь, особенно
пьютера. Потом введем информацию «Модернизируемый блок», «Описание при настройке DHCP-сервера.
о проведенной инспекции. И построим работ по модернизации», «Стоимость И последняя функция Static IP. Вы-
соответствующие отчеты. работ», «Кем проводились работы». зывается через меню «Отчеты → Ад-
Раскрываем учетную единицу «со- Теперь пробуем построить отчет. Вы- министратору сети → Static IP». На мой
трудник» «Петров Петр Петрович» бираем меню «Отчеты → Журналы → взгляд, не очень нужна, ибо практичес-
в подразделении «Бухгалтерия». Выби- Модернизации». Внешний вид отчета ки дублирует функцию mac_ip.txt. Вид
раем объект Computer2. В правой сто- очень похож на отчет о ремонтах. формируемого файла staticip.txt при-
роне окна выбираем вкладку «Допол- Ввод информации об инспекции веден ниже:
нительно». Внизу окна есть поля для производится полностью аналогично
ввода дополнительной информации. вводу информации о ремонтах и мо- # Static IP-address
192.168.9.31 COMP1 0006298FC845
Отмечаем пункт «Ремонты» и нажима- дернизациях. Выделяем компьютер, 192.168.9.32 COMP2 000A5E6416D2
ем кнопочку «Добавить» внизу окна или добавляем запись, заполняем необ- 192.168.9.33 COMP3 00C026AC48DB
выбираем пункт меню «Навигация → ходимые поля, в этом случае с инспек-
Добавить». Программа задаст вопрос циями: «Проинспектирован», «Место-
«Создать новую запись в журнале Ре- нахождение», «Владелец». В простом Резюме
монты?» После утвердительного отве- случае, аналогичном нашему в поле Мы рассмотрели большой объем функ-
та создается запись с соответствую- «Маркер» введем дату проведения ин- ций, предоставляемых программным
щим порядковым номером и текущей спекции. Для организаций, в которых комплексом CheckCfg + Sklad. Для спе-
датой. Изменить номер и дату можно, учет компьютеров поставлен не в при- циалистов IT-подразделений появи-
повторно щелкнув мышкой на имени мер строже, рекомендуется посетить лась возможность сэкономить массу
записи. После этого введем необходи- соответствующий раздел на сайте ав- времени, воспользовавшись этим про-
мые значения в поля «Ремонтирующая тора программы. граммным комплексом. Только пред-
организация», «Характер неисправнос- ставьте себе, что всё проделанное при-
ти», «Стоимость ремонта», «Дата полу- Приятные мелочи шлось бы делать по старинке, вручную
чения из ремонта» и нажимаем кнопоч- для системного занося данные о компьютерах в элект-
ку «Записать». Аналогичную операцию администратора ронную таблицу.
проделаем, перейдя на объект Monitor Стоит обратить ваше внимание на не- Хочется выразить искреннюю благо-
в организационной единице «сотруд- сколько забавных, на мой взгляд, дарность Андрею Татукову за этот велико-
ник» «Иванов Иван Иванович» в под- функций подменю «Администратору лепный программный комплекс, который
разделении «Дирекция». Все, теперь сети» из меню «Отчеты». Одна из них позволяет оптимизировать учет компью-
можем построить отчет о ремонтах. «Hosts» (вызывается «Отчеты → Ад- терной техники.

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

Настраиваем удаленный доступ к сети


с помощью MS ISA 2004

Андрей Бирюков
Возможность доступа к необходимым бизнес-ресурсам из любой точки мира – одно из условий
успешной работы компании. Но это не должно быть в ущерб безопасности. Рассмотрим
реализацию технологий удаленного доступа с помощью MS ISA 2004.

Ставим задачу сурсу с помощью SSL. Также сотруд- сети. В отличие от публикации обыч-
В предыдущей статье [1] мы разобра- ники компании ездят в командировку ных веб-ресурсов, не использующих
лись с основными моментами раз- и иногда работают из дома, поэтому SSL, здесь существует ряд характер-
вертывания межсетевого экрана ISA им необходимо предоставить доступ ных особенностей, о которых читай-
Server 2004 при подключении к Ин- по VPN. А еще у компании есть фили- те дальше. Можно публиковать защи-
тернету, предоставили доступ в Ин- ал, сотрудникам которого также тре- щенные веб-серверы, используя пра-
тернет из локальной сети. Теперь на- буется доступ в локальную сеть цен- вила публикации веб-серверов по про-
стало время организовать удаленный трального офиса. Приступим к реше- токолу SSL. Публикация защищенных
доступ к локальным ресурсам. нию всех этих задач. серверов требует немного больше
Предположим, у нас есть некото- предварительной работы, поскольку
рое веб-приложение, например, сис- Защищаем веб-трафик нужно получить сертификат веб-сай-
тема заказов on-line. Нужно организо- Итак, нам необходимо организовать та для публикуемого ресурса, связать
вать защищенный доступ к этому ре- защищенный доступ к веб-ресурсам этот сертификат с сайтом на опубли-

26
администрирование
кованном веб-сервере и затем связать ся без них. Однако на самом деле все (FQDN) веб-сайта, на который выпи-
этот сертификат с сервером ISA, что- не так уж и сложно. сывается сертификат. Для выполнения
бы последний мог выдать себя за этот Служба Сertificate Server входит этой задачи нужно установить серти-
веб-сервер. Это позволяет ISA обес- в состав Microsoft Windows Server 2003, фикат веб-сайта на сервере ISA. Пер-
печивать высокую степень защиты и при необходимости ее всегда можно вый шаг – экспорт сертификата с сай-
для веб-сайтов, опубликованных с по- установить. При установке Microsoft та защищенного веб-сервера. [3]
мощью правил публикации ресурсов Certificate Server (Сервер сертифика- Когда экспортируете сертификат,
по протоколу SSL. ции Microsoft) может быть выбрана од- убедитесь, что включен приватный
Далее мы обсудим следующие мо- на из четырех ролей: ключ. Одна из самых распространен-
менты:  Enterprise Root CA (корпоративный ных причин отказа в работе правил
 сопряжение протокола SSL (SSL корневой центр сертификации). публикации веб-серверов – экспорт
Bridging);  Enterprise Subordinate CA (корпо- сертификата веб-сайта без его при-
 импорт сертификатов веб-сай- ративный подчиненный центр сер- ватного ключа.
тов в хранилище сертификатов тификации). Затем сертификат веб-сайта им-
(certificate store) на машине бранд-  Standalone Root CA (автономный портируется в хранилище сертифика-
мауэра ISA; корневой центр сертификации). тов на сервере ISA.
 запрашивание сертификатов веб-  Standalone Subordinate CA (авто- Сразу после импортирования сер-
сайтов, чтобы брандмауэр пред- номный подчиненный центр серти- тификата веб-сайта в это хранилище
ставлял защищенные веб-сайты; фикации). сертификатов он становится доступ-
 создание правил публикации веб- ным для связывания с веб-приемни-
серверов по протоколу SSL. Корневой и подчиненный цент- ком. Необходимо помнить, что, если
ры сертификации предприятия могут нельзя связать сертификат с веб-при-
Начнем с сопряжения протокола быть установлены только на серве- емником, значит сертификат импорти-
SSL – это свойство ISA, позволяющее рах-членах службы каталогов Active рован некорректно.
ему выполнять на прикладном уровне Directory. В контексте статьи предпо-
проверку состояния SSL-соединений. лагается, что мы используем Active Запрос сертификата
Дело в том, что традиционные межсе- Directory, и соответственно можем ис- пользователя
тевые экраны с отслеживающей соеди- пользовать Enterprise CA, поэтому при- После импорта сертификата необхо-
нения фильтрацией (например, аппа- менение Standalone CA далее не рас- димо сконфигурировать межсетевой
ратные решения) не могут выполнять сматривается. экран для представления сертифика-
проверку прикладного уровня SSL-со- Если вы не знакомы со средства- та пользователям веб-сайта, которые
единений, проходящих через них. ми администрирования центров сер- этого требуют. В нашем случае именно
Межсетевой экран ISA поддержи- тификации, описание процесса выпис- такой сайт. Для того чтобы сконфигу-
вает два метода SSL-сопряжения: ки и создания сертификата вы можете рировать межсетевой экран для пред-
 сопряжение SSL-c-SSL (SSL to SSL найти в источниках [2, 3]. ставления сертификата пользовате-
bridging); лям, необходимо сначала запросить
 сопряжение SSL-c-HTTP (SSL to Импорт сертификатов сертификат для учетной записи сер-
HTTP bridging). веб-сайтов в хранилище виса Firewall.
сертификатов на сервере Так как нельзя воспользоваться ос-
Сопряжение SSL-c-SSL обеспе- ISA насткой Certificates (Сертификаты) кон-
чивает защищенное SSL-соединение Межсетевой экран ISA должен быть соли ММС для запроса сертификата
от начала до конца. Сопряжение SSL способен выдать себя за опубли- учетной записи, воспользуемся воз-
c HTTP гарантирует защищенное со- кованный веб-сер-
единение между веб-клиентом и экра- вер и идентифи-
ном ISA, а затем разрешает пересыл- цировать себя на
ку открытого текста между ISA и опуб- удаленном клиенте
ликованным веб-сервером. как опубликован-
ный с ервер. Д ру-
Основы сертификации гими словами, ISA
Зачастую, упоминания центров сер- становится посред-
тификации (ЦС) (Certificate Authorities) ником при созда-
и инфраструктуры открытого ключа нии защищенного
(PKI, Public Key Infrastructure) доста- соединения между
точно, чтобы многие администраторы удаленным клиен-
отказались даже от обсуждения SSL- том и веб-сервером.
протокола. Причиной этому является Ключевым компо-
то, что многие системные админис- нентом такой ими-
траторы плохо знакомы с этими тех- тации служит пол-
нологиями и предпочитают обходить- ное доменное имя Рисунок 1. Редактирование системных политик

№1, январь 2007 27


администрирование
Далее на страни- те узел Firewall Policy, затем выбери-
це «Welcome» щелк- те вкладку «Tasks», далее «Publish
ните кнопкой мыши a Secure Web Server» (опубликовать
на ссылку «Request защищенный веб-сервер). После это-
a certificate». Затем го вам предстоит ответить на вопро-
в ы б и р а е м « U s e r сы мастера установки. Здесь почти
Certificate». Устанав- все действия аналогичны публика-
ливаем сертификат, ции веб-ресурса без использования
нажав «Install this SSL, описанного в [1]. Какие отличия?
certificate» (рис. 2). На странице Publishing Mode есть два
После установ- переключателя: SSL Bridging и SSL
ки сертификат не- Tunneling (рис. 3).
обходимо экспор- Сопряжение (bridging), которое
тировать, для этого в некоторых источниках именуется
Рисунок 2. Редактирование системных политик в разделе браузе- SSL-проксированием, более безопас-
ра «Internet options» ное, так как обеспечивает защищенное
можностью импортировать пользова- зайдите на вкладку «Content», далее от начала до конца (end-to-end) шифро-
тельский сертификат, применяя веб- «Certificates». Выбрав isafirewall, на- ванное соединение, в то же время, раз-
сайт регистрации. Чтобы запросить жмите кнопку «Export». Экспорт не- решая ISA выполнять как отслеживаю-
сертификат для брандмауэра ISA с веб- обходимо осуществлять вместе с сек- щую состояние соединений фильтра-
сайта регистрации, мы должны снача- ретным ключом, указав «Export Private цию (аналогично традиционным меж-
ла создать учетную запись пользова- Key». После этого, указав пароль сетевым экранам), так и отслеживаю-
теля для сервера ISA. Создайте учет- для файла сертификата, мы получа- щую состояние соединения проверку
ную запись пользователя с именем ем необходимый файл. на уровне приложений. То есть полу-
isafirewall в службе каталогов Active Обратите внимание: полученный ченный пакет сначала расшифровы-
Directory до выполнения следующих файл нужно хранить в безопасном вается, затем проверяется на уровне
процедур. месте, так как он может быть исполь- приложений и потом снова зашифро-
Далее необходимо выполнить сле- зован для получения несанкциониро- вывается и отправляется на хост-по-
дующие шаги, чтобы запросить сер- ванного доступа к ресурсам сети. лучатель. Такая проверка позволяет
тификат для учетной записи сервиса Наконец, приступаем к завершаю- на уровне приложений просмотреть
Firewall. Для этого откройте консоль щему этапу подготовки к публикации содержимое каждого пакета и удос-
администрирования ISA, на вклад- веб-ресурса по протоколу SSL, им- товериться в том, что он не содержит
ке «Tasks» выберите «Show System портируем сертификат в учетную за- неавторизованных подключений. По-
Policy Rules». В списке «System Policy пись сервиса Firewall. Для этого от- этому для решения нашей задачи не-
Rules» щелкните правой кнопкой мы- кройте новую консоль MMC, выбери- обходимо выбрать именно этот режим
ши «Allow all HTTP traffic from ISA Server те в меню «File» опцию «Addr/Remove публикации.
to all networks (for CRL downloads)» Snap-in», далее оснастка Certificates. Что же касается SSL-туннелирова-
и левой кнопкой мыши команду «Edit После подключения оснастки выби- ния, то в этом режиме ISA не может
System Policy». Тем самым мы разре- райте параметр «Services account». За- осуществлять контроль за проходящим
шили весь HTTP-трафик от брандма- тем – сервис Microsoft Firewall из спис- через него контентом. Поэтому старай-
уэра ISA ко всем сетям, для загрузок ка Service account. тесь не использовать тунеллирование
списков сертификатов пользователей. Теперь сертификат связан с учет- до тех пор, пока не потребуется опуб-
Нажмем кнопку «Apply» для сохране- ной записью сервиса Firewall. Возмож- ликовать приложения, не совместимые
ния изменений и обновления полити- но, возникнет необходимость блокиро- с веб-прокси HTTP 1.1.
ки брандмауэра. Затем применим но- вать правило системной политики, со- Подробнее о SSL-bridging и SSL-
вую конфигурацию, нажав «Apply New зданное нами ранее, чтобы нечаянно tunneling можно прочесть в статье [4].
Configuration» (рис. 1). не воспользоваться обозревателем На странице Bridging Mode (режим
Мы сконфигурировали межсете- на межсетевом экране ISA. сопряжения) есть три переключателя:
вой экран для предоставления серти-  Secure connection to clients (защи-
фиката пользователя. Теперь необхо- Создание правила щенное соединение с клиентами);
димо получить сертификат. Для этого публикации веб-сервера  Secure connection to Web server
откройте браузер на сервере ISA и вве- по протоколу SSL (защищенное соединение с веб-
дите http://<certificateserver>/certsrv, Итак, утомительные манипуляции с ус- сервером);
где certificateserver – имя или IP-ад- тановкой сертификатов завершены,  Secure connection to clients and
рес ЦС предприятия в корпоративной теперь можно создать правило публи- Web server (защищенное соедине-
сети. В диалоговом окне «Connect to» кации веб-сервера, защищенного про- ние с клиентами и веб-сервером).
введите верительные данные учетной токолом SSL.
записи isafirewall и щелкните мышью Делается это следующим образом. Вариант Secure connection to clients
кнопку «ОК». В консоли администрирования открой- устанавливает соединение как сопря-

28
администрирование
жение SSL c HTTP. Он защищает со- Перед настройкой… шлюзами, также ISA 2004 позволяет
единение веб-клиента с ISA, но раз- Я опишу настройку обоих вариантов использовать плохо защищенное со-
решает передачу незащищенного от- использования VPN. Но перед тем единение с применением туннельного
крытого текста между экраном и опуб- как начать описание настройки, не- режима протокола IPSec для подключе-
ликованным веб-сервером. обходимо обсудить несколько воп- ния к VPN-шлюзам сторонних фирм.
Вариант Secure connection to Web росов. Прежде всего нужно постоян- Тут необходимо сделать неболь-
server позволит выполнить сопряже- но помнить о том, что удаленный до- шую оговорку, туннельный режим про-
ние HTTP c SSL. Соединение меж- ступ всегда является наиболее уяз- токола IPSec поддерживается толь-
ду веб-клиентом и межсетевым эк- вимым в защите корпоративной сети ко для VPN-соединений конфигура-
раном устанавливается по протоко- от внешних вторжений. Поэтому надо ции узел-узел.
лу HTTP, а соединение между серве- ограничивать доступ пользователей, Клиент-серверные VPN-соедине-
ром ISA и веб-сервером – по прото- подключенных через VPN к локаль- ния удаленного доступа, тем не менее,
колу SSL. ной сети, предоставляя только необ- используют только протоколы РРТР
Вариант Secure connection to clients ходимые для работы сервисы. В час- или L2TP/IPSec. Туннельный режим
and Web server наиболее защищен- тности, для соединений клиент-сер- протокола IPSec уязвим для несколь-
ный и предпочтительный. Он разре- вер, если пользователь, удаленно под- ких хорошо известных атак, а прото-
шает сопряжение SSL c SSL, в кото- ключившийся к локальной сети, явля- кол L2TP/IPSec требует более стро-
ром и соединение веб-клиента с ISA, ется, к примеру, сотрудником бухгал- гой аутентификации и не подвержен
и соединение между ISA и опублико- терии, то ему должен быть доступен этим атакам.
ванным веб-сервером защищаются только сервер бухгалтерии, если ме- Таким образом, если есть выбор, го-
протоколом SSL. В нашем случае на- неджер, то только сервер отдела про- раздо лучше применять набор прото-
иболее предпочтительным будет тре- даж и так далее. Аналогично и для со- колов L2TP/IPSec для VPN-соединений
тий вариант. единений узел-узел, филиалам и уда- конфигурации узел в узел.
После завершения работы мастера ленным офисам должны быть доступ-
остается только применить изменения, ны только те ресурсы, которые им не- Аутентификация
и веб-ресурс будет опубликован через обходимы в работе, не более. Еще один аспект, также связанный
защищенное соединение. с безопасностью, это аутентификация,
Выбор протокола используемая в VPN-соединениях.
Основы VPN Следующий аспект – это протокол, ис- В межсетевом экране ISA Server
Теперь приступим к организации уда- пользуемый для VPN-соединения. 2004, когда создаются VPN-соедине-
ленного доступа к ресурсам локальной Для соединения узел-узел мож- ния удаленного доступа и межшлюзо-
сети с помощью VPN. но использовать PPTP и L2TP/IPSEC, вые VPN-соединения, можно исполь-
Одно из главных преимуществ но большинство разработанных сто- зовать секретные ключи (pre-shared
применения VPN-соединения по срав- ронними фирмами VPN-шлюзов не под- keys) для аутентификации. Все маши-
нению с клиент-серверным веб-при- держивают протоколы PPTP и L2TP/ ны VPN-клиентов, на которых выполня-
ложением заключается в том, что IPSec для межшлюзовых VPN-каналов. ется обновленное программное обес-
VPN-пользователи, находящиеся да- Вместо этого они требуют применения печение VPN-клиента для протокола
леко от локальной сети, могут полу- туннельного режима протокола IPSec L2TP/IPSec, могут использовать сек-
чить доступ ко всем ресурсам корпо- для VPN-соединения. Межсетевой эк- ретный ключ для создания соедине-
ративной сети. Программное обеспе- ран ISA 2004 в отличие от предыдущей ния удаленного доступа VPN-клиента
чение VPN-клиента встроено во все версии ISA 2000 поддерживает тун- по протоколу L2TP/IPSec с ISA 2004/
современные операционные системы нельный режим про-
Windows. VPN-пользователю не нуж- токола IPSec, таким
ны никакие специальные програм- образом позволяя
мные средства для подключения к лю- создавать VPN-со-
бому из этих сервисов и нет необхо- единения узел-узел
димости создавать специальные при- м еж д у VPN - ш л ю -
ложения прокси, разрешающие ва- зом ISA и шлюзом
шим пользователям подсоединяться стороннего произ-
к этим ресурсам. водителя. Кроме то-
Существует два вида VPN-соеди- го, что вы можете
нений: клиент-сервер и узел-узел. применять прото -
Первый вариант позволяет под- кол РРТР или прото-
ключать удаленную рабочую станцию кол L2TP/IPSec с вы-
к сети с помощью защищенного со- соким уровнем за-
единения. щиты для создания
Второй вариант позволяет соеди- каналов типа узел
нять сети через защищенный тун- в узел между дву-
нель. мя ISA Server/VPN- Рисунок 3. Публикация защищенного веб-ресурса

№1, январь 2007 29


администрирование
в первой части этой статьи [1], поэтому то для подтверждения подлинности
в примерах настроек, приведенных да- можно использовать RADIUS-аутенти-
лее, не будем рассматривать исполь- фикацию или локальные группы поль-
зование PKI. Подробнее об этом спо- зователей.
собе вы можете прочитать в [5]. На вкладке «Protocols» устанавли-
Другим возможным вариантом ваем «Enable РРТР». Тем самым со-
реализации VPN является использо- единение будет осуществляться с по-
вание протокола PPTP, для которо- мощью PPTP. Затем включаем «User
го не требуется ни PKI, ни pre-shared Mapping» и флажок «When username
key. Об этом методе и пойдет речь does not contain a domain, use this
далее. domain», указав имя домена. Эта опция
Приступая к реализации, прежде полезна в случаях, когда было введено
всего определимся с вариантами раз- только имя пользователя, без домена.
вертывания VPN. Будем организо- Далее необходимо применить из-
вывать сначала доступ по VPN в ло- менения. Теперь на вкладке «Tasks»
Рисунок 4. Разрешаем доступ клиентам
по VPN кальную сеть организации для уда- щелкните кнопкой мыши с трок у
ленных клиентов, а затем реализу- «Select Access Networks». В диалого-
VPN-сервером. ем соединение узел-узел для филиа- вом окне «Virtual Private Networks (VPN)
VPN-шлюзы ОС Windows 2000 ла компании. Properties» выберите вкладку «Access
и Windows Server 2003 также можно Networks».
настроить для применения секрет- Клиент-сервер Обратите внимание на то, что уста-
ного ключа и установки соединений Первым делом при организации VPN- новлен флажок «External» (внешняя).
узел в узел. подключения клиентов необходимо Это означает, что внешний интерфейс
Секретные ключи являются попу- в консоли администрирования ISA вы- ожидает входящие соединения от VPN-
лярным средством аутентификации. брать меню «Tasks» (задачи) и затем клиентов.
Их преимущество – простота первона- «Enable VPN Client Access». Затем не-
чальной настройки, так как достаточ- обходимо применить изменения, на- Настройка IP-адресации
но лишь распространить ключ между жав «Apply New Configuration». Это важный шаг, в случае невер-
участниками соединения. ной настройки проблемы с доступом
Однако имеется и ряд недостат- Настройка VPN-сервера для VPN-клиентов обеспечены. Вы-
ков. Например, при использовании На вкладке «Tasks» выбираем «Configure бираем вкладку «Address Assignment»,
в соединениях клиент-сервер, в слу- VPN Client Access», далее на вклад- в раскрывающемся списке указыва-
чае изменения ключа на сервере, не- ке «General» в диалоговом окне «VPN ем «Use the following network to obtain
обходимо будет вручную внести из- Clients Properties» измените значение DHCP, DNS and WINS services» элемент
менения на всех клиентах, в против- параметра «Maximum number of VPN «Internal». Затем выбираем вклад-
ном случае установка соединения бу- clients allowed» с 5 на 10 (рис. 4). ку «Authentication» (аутентификация)
дет невозможна. Версия Standard Edition брандмау- Должен быть установлен только фла-
Другим средством аутентификации эра ISA поддерживает до 1000 парал- жок «Microsoft encrypted authentication
является использование инфраструк- лельных VPN-соединений. version 2 (MS-CHAPv2)».
туры открытого ключа PKI (Public Key Да лее добавляем группы, вы- Необходимо применить настрой-
Infrastructure). Технология использует брав вкладку «Group» и нажав кноп- ки, нажав «Apply», и перегрузить сер-
сертификаты, о которых уже шла речь ку «Add». В диалоговом окне «Select вер ISA. После перезагрузки ISA полу-
Groups» нажимаем чит блок IP-адресов от DHCP-сервера
кнопку «Locations», во внутренней сети.
указываем домен,
потом ну жно ука- Доступ для VPN-клиентов
зать группу пользо- Создается как стандартное правило
вателей, которым доступа, где в качестве исходящих
б у д е т р а з р е ш е н протоколов указываются All Outbound
удаленный доступ. protocols, а в качестве источника в пра-
В общем случае это виле доступа – VPN Clients.
может быть группа Настройка доступа по VPN на кли-
Domain Users. ентской машине производится с помо-
Обращаю ваше щью стандартного мастера Windows.
внимание на то, что
сервер ISA должен Узел-узел
быть членом доме- Итак, мы организовали доступ уда-
на. Если он не на- ленным сотрудникам, и теперь оста-
Рисунок 5. Создаем сеть «узел-узел» ходится в домене, лось предоставить доступ к ресур-

30
администрирование
сам локальной сети удаленному офи- VPN-клиентам. Для этого в закладке Обычная причина сбоев VPN-со-
су. Для этого мы воспользуемся со- «VPN-Clients» указываем «Enable VPN единений заключается в том, что сер-
единением с использованием PPTP Client Access». веры ISA не могут получить адрес
(Point-to-Point Tunneling Protocol). от DHCP-сервера и нет адресов, от-
Шаг 4. Создайте в центральном веденных для пула статических ад-
Шаг 1. Сконфигурируйте офисе учетную запись ресов. В этой ситуации ISA назна-
межсетевой экран ISA VPN-шлюз чает VPN-клиентам и шлюзам IP-ад-
в центральном офисе Для этого необходимо, чтобы у учет- реса в диапазоне автосети (APIPA,
Для этого в консоли администриро- ной записи пользователя было то же 169.254.0.0/16).
вания ISA 2004 открываем раздел имя, что и у интерфейса вызова по тре- Если обоим концам туннеля на-
«Virtual Private Networks», в заклад- бованию. То есть необходимо создать значены адреса из этого диапазона,
ке «Tasks → Add Remote Site Network». локальную учетную запись на серве- интерфейсы вызова по требованию
Далее с помощью мастера создания ре ISA, имя которой будет совпадать обеих машин размещаются в одной
новой сети указываем настройки уда- с именем интерфейса. В свойствах и той же сети, что вызывает сбой в ли-
ленной сети. этой учетной записи нужно разрешить нии связи конфигурации узел в узел,
Обращаю ваше внимание на то, доступ Dial-In. так как при этом пакеты не могут опре-
что имя, данное при настройке масте- делить маршрут к узлу назначения.
ра, затем будет использоваться для со- Шаг 5. Сконфигурируйте
единения по требованию. межсетевой экран ISA Завершая разговор
На странице «VPN» выбираем в филиале Итак, мы рассмотрели возможнос-
протокол PPTP. Далее на странице Для этого необходимо повторить те же ти межсетевого экрана ISA 2004, поз-
«Remote Site Gateway» укажите IP-ад- шаги, что и для центрального офиса, воляющие обеспечить удаленный до-
рес удаленного межсетевого экрана, с той лишь разницей, что начинать на- ступ к ресурсам локальной сети. Те-
также вы можете использовать пол- до с создания сети удаленного офиса перь вы можете обеспечить защищен-
ное доменное имя FQDN. на брандмауэре филиала. ный доступ по SSL к веб-ресурсам ло-
Затем разрешим из локальной се- кальной сети, а также по VPN ко всем
ти инициировать соединения с уда- Шаг 6. Создайте сетевое необходимым сетевым службам. На-
ленным офисом «Local site can initiate правило в филиале пример, с помощью описанных в ста-
connections to remote site using these Здесь действия будут аналогичны про- тье функций сервера ISA можно орга-
credentials» и укажем учетную запись, изведенным при настройке правил низовать удаленный доступ пользо-
которая будет использоваться для ау- для центрального офиса, только сеть- вателей к почте через веб-интерфейс.
тентификации на удаленном межсете- источник и сеть-назначения меняют- А после создания доступа по VPN со-
вом экране. В завершение настройки ся местами. трудники филиалов смогут без лиш-
укажите диапазон IP-адресов, которые них затрат времени работать с доку-
используются в удаленной сети. Шаг 7. Создайте правила ментами, находящимися в централь-
доступа в филиале ном офисе компании.
Шаг 2. Создайте сетевое Это правило также аналогично создан- В следующей статье вы узнаете
правило в центральном офисе ному ранее для центрального офиса. о тонкой настройке различных компо-
В административной консоли откры- нентов ISA 2004, что позволит сущес-
ваем узел «Confiuration → Networks». Шаг 8. Создайте в филиале твенно оптимизировать работу межсе-
На панели «Details» выбираем вклад- учетную запись VPN-шлюза тевого экрана и сети в целом.
ку «Tasks». Далее создаем новое сете- Прежде всего создаем учетную запись
вое правило. Затем с помощью масте- пользователя, которую VPN-шлюз цен- 1. Бирюков А. Устанавливаем межсете-
ра производим стандартные настрой- трального офиса сможет использовать вой экран Microsoft ISA Server 2004.
ки, при этом в качестве сети назначе- для аутентификации при установке со- //«Системный администратор», №12,
ния указываем сеть удаленного офи- единения. Имя также должно совпа- 2006 г. – С. 4-8.
са. На странице «Network Relationship» дать с именем интерфейса. 2. Развертывание PKI на Windows 2003
выбираем вариант «Route». Прави- и XP – http://www.microsoft.com/technet/
ло создано. Шаг 9. Активизируйте каналы prodtechnol/winxppro/plan/pkienh.mspx.
типа узел в узел 3. П о с т р о е н и е R o o t C A – h t t p : / /
Шаг 3. Создайте правила Для активизации соединения необхо- www.microsoft.com/technet/security/
доступа в центральном офисе димо с рабочей станции, находящей- prodtech/windowsserver2003/
Запускаем в разделе Firewall policy ся в удаленном офисе, попытаться про- build_ent_root_ca.mspx.
мастер создания нового правила до- пинговать узел в сети главного офиса. 4. SSL Bridging and Tunneling. Описание
ступа. Далее стандартный процесс со- Если соединение конфигурации узел и сравнение – http://www.microsoft.com/
здания правила, в качестве сети на- в узел заканчивается неудачей, убе- technet/isa/2004/help/cmt_authpass.
значения также указываем удаленный дитесь, что вы правильно определи- mspx?mfr=true.
офис. После завершения работы мас- ли назначения допустимых IP-адресов 5. Ос новной ресурс по PKI – ht tp://
тера необходимо предоставить доступ для VPN-клиентов и шлюзов. www.microsoft.com/PKI.

№1, январь 2007 31


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

Подробное руководство
по настройке тонких клиентов
На основе дистрибутива Thinstation
и протокола NX
Часть 2

Евгений Бушков
В №12 за 2006 г. вы прочтёте о том, как собрать серверную часть NX и настроить дистрибутив
Thinstation для работы с ней. Сегодня разберёмся каковы особенности эксплуатации,
дополнительные настройки NX и Thinstation и как решать встречающиеся проблемы.

32
администрирование
Доработка функционального окна VNC
При использовании VNC управление сеансом по умолча-
нию осуществляется клавишей <F8>. В нашей компании
пользователи используют dosemu c Dos Navigator, в нем ак-
тивно используется эта клавиша. Чтоб избежать конфлик-
та, я подправил в исходниках файл /nx_build_dir/nxviewer/
nxviewer/argsresources.c. Укажу, какие строчки я отредак-
тировал:

#<Key>F8: ShowPopup()\\n\
<Key>F12: ShowPopup()\\n\

#"*popupButtonCount: 6",
"*popupButtonCount: 2",

#"*popup*button1.label: Dismiss popup",


"*popup*button1.label: Close",

#"*popup*button2.label: Quit viewer",


"*popup*button2.label: Send F12",

#<Btn1Down>,<Btn1Up>: Quit()",
<Btn1Down>,<Btn1Up>: SendRFBEvent(key,F12) HidePopup()",

Таким образом, функция вызова меню VNC переназна-


чается c <F8> на <F12>, вместо 6 доступных в меню строк Рисунок 1. Настройки VNC-сессии NX-клиента
осталось только 2: закрыть меню при случайном нажатии
«Close» и послать код <F12>, если вдруг встретилась та- Настройки VNC-сессии NX-клиента вы можете посмот-
кая функциональная клавиша. Если вы не используете реть на рис. 1.
VNC-агента nxviewer, то вам это не пригодится.
Проблема с кириллицей
Проблема связки NX, Thinstation, Встретилась еще одна проблема с кириллицей: при рабо-
Firefox те в обычном режиме NX неправильно переключаются рас-
Почему я стал использовать nxviewer? Сам по себе NX ра- кладки (VNC это не касается, там все работает): в зависи-
ботает замечательно и в режиме приложений, и в режи- мости от указанной кодировки отображаются либо толь-
ме работы с удаленным рабочим столом. Но вот что вы- ко русские клавиши, либо только английские. Если у вас
яснилось: при работе в Firefox на внутреннем сайте на- встретилась такая проблема, то включите в скрипт запус-
шей компании встречаются страницы, необходимые для ка приложения следующую строчку:
работы, размером от 400 Кб и больше. Во время вывода
таких страничек на экран изображение останавливает- xterm -e setxkbmap -rules xorg -model pc105 ↵
-layout "us,ru" -variant ",winkeys" ↵
ся, и тонкий клиент перестает отвечать на запросы («ве- -option "grp:ctrl_shift_toggle,grp_led:scroll"
шается»).
Что я только не делал: менял сочетания версий Firefox, Например, у меня для запуска программы 1С под эму-
Thinstation, NX, менял настройки Firefox в строке «about: лятором WINE применяется sh-скрипт /usr/bin/1c, в ко-
config», задавал вопросы в форумах. Ничего не помогло, тором используются некоторые проверки, подключает-
большие странички от 400 Кб вызывают проблему. Причем ся нужный шрифт, вносятся изменения в реестр с помо-
эти же страницы нормально отображаются в Opera, но это щью reg-файла (для указания названий и путей баз 1С),
противоречит нашей ориентации на открытый Firefox. Со- и перед запуском самого 1С выполняется указанная вы-
здалось ощущение, что это связано с особенностями движ- ше строчка. При запуске сессии удаленного стола можно
ка данного браузера. также выполнить эту строчку в стартовых скриптах до-
Тогда пришлось перейти к использованию RVB/VNC- машнего каталога (~/.profile или ~/.bashrc) или системы
сессий в NX: на NX-сервере в настройках сервиса xinetd (/etc/bash.bashrc.local).
включается VNC-сервер. В первой части статьи (см. №12 Тогда всё должно наладиться.
за 2006 г.) на рисунке 3 показаны файлы настроек сес-
сий NX и TUX1C. В итоге там, где нужен Firefox, я исполь- Использование дисковых устройств
зую VNC-сессии в NX, во всех остальных случаях – обыч- тонких клиентов
ный режим NX. Еще одна тонкость. Если пользователям необходимо об-
Основным недостатком использования VNC являет- ращаться к дискетам или локальному диску с разделом
ся необходимость дважды вводить пароль: в окошке при- FAT16 (32) на своих тонких клиентах, то придется разо-
глашения NX-клиента, а потом при авторизации с помо- браться с Samba. Для этого добавляем в файл build.conf
щью оконного менеджера, например KDE, при соединении (см. №12 за 2006 г.) модули floppy, fvat, supermount и пакет
с VNC-сервером. Но на скорости работы это почти не отра- samba-server.
жается, так что все сказанное об NX справедливо и для сес- В первой части статьи (см. №12 за 2006 г.) на рисунке 3
сий VNC под NX. показано содержимое файла thinstation.conf.group-smb_hard,

№1, январь 2007 33


администрирование
echo "X-SuSE-translate=true" >> ↵
~/Desktop/Harddisk.desktop
else
rm -f ~/Desktop/Harddisk.desktop

# testing for floppy existence
floppy=`smbclient -NL $ip 2>/dev/null|grep floppy`
if [ "$floppy" != "" ]
then
echo "[Desktop Entry]" > ~/Desktop/"Floppy Disk";
echo "Encoding=UTF-8" >> ~/Desktop/"Floppy Disk";
echo "Icon=3floppy_mount" >> ~/Desktop/"Floppy Disk";
echo "Name=Floppy Disk" >> ~/Desktop/"Floppy Disk";
echo "Name[ru]=Floppy Disk" >> ↵
~/Desktop/"Floppy Disk";
echo "OnlyShowIn=KDE;" >> ~/Desktop/"Floppy Disk";
echo "Open=false" >> ~/Desktop/"Floppy Disk";
echo "Type=Link" >> ~/Desktop/"Floppy Disk";
echo "URL=smb://$ip/floppy" >> ~/Desktop/"Floppy Disk";
echo "X-KDE-KonqSidebarModule=konqsidebar_tree" >> ↵
~/Desktop/"Floppy Disk";
echo "X-KDE-TreeModule=Directory" >> ↵
~/Desktop/"Floppy Disk";
echo "X-SuSE-translate=true" >> ↵
Рисунок 2. Обычная работа на тонком клиенте ~/Desktop/"Floppy Disk";
else
rm -f ~/Desktop/"Floppy Disk";
в нем два последних параметра указывают: нет поддержки fi
жесткого диска, но есть поддержка флоппи-диска. Таких fi

групп у меня несколько с различными сочетаниями значе-
ний параметров – в зависимости от необходимости в нуж- Единственное, что вы захотите здесь поменять, – это
ных устройствах. На этом же рисунке также показано со- в строчке с sudo изменить «grep 10\\.» в соответствии с на-
держимое файла thinstation.conf-MAC, в нем видно, что до- стройками вашей сети. То есть если сеть 192.168.10.0/255,
бавлена подгрузка пакетов samba-base и samba-server. то это будет «grep 192\\.», у меня используется сеть 10/8.
Теперь нужно создать ярлычки на рабочем столе поль- Я думаю, идея вам понятна. Теперь ярлычки на рабочем сто-
зователей в KDE. При этом если на тонком клиенте уст- ле будут появляться только тогда, когда на тонком клиенте
ройства нет, то и ярлычка этого устройства быть не долж- имеются соответствующие ярлыкам устройства.
но. Проверка осуществляется командой smbclient, а IP-ад- И еще добавлю замечание по поводу памяти: 32 Мб
рес клиента выясняется с помощью nxserver (я не настаи- на тонком клиенте хватает на то, чтобы кроме ядра
ваю, что это единственный способ). Thinstation (в котором уже имеется NX-клиент) работали па-
Для возможности запуска nxserver в файл /etc/sudoers кеты sshd и lprng, но не хватает на поддержку Samba, же-
добавляем строку: лательно ставить немного больше памяти, хотя бы 40 Мб,
этого хватит на всё.
ALL ALL = NOPASSWD: /srv/NX/bin/nxserver --list*, ↵
!/srv/NX/bin/nxserver [!-]*
Примеры использования NX
То есть пользователям разрешается только пролис- в режиме приложений
тать текущие NX-сессии. Далее пришлось написать В нашей системе производится перевод системы 1С
на shell небольшой код, который нужно добавить в файл на терминальный сервер с Linux и эмулятором WINE. Од-
/etc/bash.bashrc.local: на база уже переведена, и с ней работают сотрудники на-
шей компании. Вот, что выяснилось. При работе на тон-
# We test floppy and HD existing by requesting samba server ком клиенте у каждого пользователя имеется ярлычок
# on thin client
name=`whoami` на уже упомянутый скрипт /usr/bin/1c, его можно запус-
if [ "$name" != nx ] && [ "$name" != "root" ] кать столько раз, сколько нужно открыть копий приложе-
then
ip=$(/usr/bin/sudo /srv/NX/bin/nxserver --list $name|\ ния 1С (для работы с разными базами). Из Windows по-
grep 10\\.|tail -n 1|awk '{print $3}') лучается запустить только одну NX-сессию приложения
if [ "$ip" != "" ]
then 1С. При повторном запуске текущая сессия прерывается
# testing for harddisk existence и восстанавливается в новом окне, то есть используется
harddisk=`smbclient -NL $ip 2>/dev/null|grep harddisk`
if [ "$harddisk" != "" ] режим FreeNX «session resume» – возобновление прерван-
then ной сессии. Пришлось использовать запуск в режиме при-
echo "[Desktop Entry]" > ~/Desktop/Harddisk.desktop
echo "Encoding=UTF-8" >> ~/Desktop/Harddisk.desktop ложения NX удаленного рабочего стола Wmaker (он зани-
echo "Icon=HD" >> ~/Desktop/Harddisk.desktop мает гораздо меньше памяти, чем KDE), а в нем уже мож-
echo "Name=Harddisk" >> ~/Desktop/Harddisk.desktop
echo "Name[ru]=Harddisk" >> ~/Desktop/Harddisk.desktop но работать с 1С, как на тонких клиентах (можно открыть
echo "OnlyShowIn=KDE;" >> ~/Desktop/Harddisk.desktop несколько копий 1С).
echo "Open=false" >> ~/Desktop/Harddisk.desktop
echo "Type=Link" >> ~/Desktop/Harddisk.desktop Еще один случай. Мы принимали попытку перевести
echo "URL=smb://$ip/harddisk" >> ↵ другую базу 1С (ее используют более 200 сотрудников)
~/Desktop/Harddisk.desktop
echo "X-KDE-KonqSidebarModule=konqsidebar_tree" >> ↵ на тот же терминальный сервер. Сервер Proliant DL-385
~/Desktop/Harddisk.desktop c двумя Opteron был полностью загружен: при пиковой
echo "X-KDE-TreeModule=Directory" >> ↵
~/Desktop/Harddisk.desktop нагрузке в системе насчитывалось 150 процессов 1CV7.

34
администрирование
exe, далее пользователи уже не мог-
ли зайти на сервер: на NX-клиенте при
соединении с сервером секунд через
45 срабатывал тайм-аут, хотя спус-
тя секунды пользовательские про-
цессы на сервере нормально запус-
кались. Я оставил сообщение на сай-
те Nomachine с предложением доба-
вить возможность настройки тайм-ау-
та на клиенте NX, там зарегистриро-
вали Feature Request, но мне это уже
было не нужно: пришлось придумы-
вать другой вариант перехода, в рам-
ках заданной темы об этом рассказы-
вать не буду.
Еще один пример. На компьютере
с памятью 64 Мб проблемно исполь-
зовать OpenOffice 2.0: слишком много
памяти он потребляет. На помощь при-
ходит клиент NX, работающий в режи-
ме приложений, при этом использует-
ся память сервера, которой, как прави-
ло, много больше, чем у клиента. При- Рисунок 3. NX-сессия Wmaker в режиме приложения
меры можно продолжать.
но пропускной способности 10 Мбит, никак не отразится на работе других
Несколько слов однако начальная загрузка образа пользователей.
о производительности NX Thinstation (у меня образ чуть меньше В заключение скажу, что в августе
Я упоминал о двух NX-серверах для 9 Мб) ускорится, если использовать 2006 года на прошедшей в Сан-Фран-
описания отличий в работе двух вер- сеть 100 Мбит. Если тонкие клиенты циско выставке «LinuxWorld» фир-
сий NX, хотя на самом деле их в на- в филиале связаны с терминальным ма Nomachine получила награду жур-
шей сети три. В настоящий момент сервером xDSL-модемами (или ины- нала «LinuxJournal» за свой продукт
в нашей системе используется около ми низкоскоростными соединения- NX Server 2.0 «BEST INTEGRATION
50 тонких клиентов Thinstation, число ми), то лучше предусмотреть нали- SOLUTION» (за лучшее интеграцион-
которых постоянно растет. Кроме того, чие tftp-сервера на территории само- ное решение) [21].
часть работников запускают NX-клиент го филиала: это позволит не прокачи- В целом у NX видятся неплохие
из Windows для работы с приложения- вать каждый раз образ через узкий перспективы, сообщество Open Source
ми, в частности с 1С. канал связи, а брать его с локально- тоже не дремлет. Так что если реши-
Хорошо проявил себя протокол NX. го сервера. тесь использовать его у себя, то не по-
Например, при временном пропада- Могу лишь добавить, что процес- жалеете.
нии связи соединение не сбрасыва- сы NX на сервере занимают немно- И удачи!
ется, а осуществляется попытка его го памяти и оказывают незначитель- P.S. Некоторые из описанных про-
восстановления. Когда на тонком кли- ную нагрузку на процессор(ы) отно- блем, возможно, будут уже решены
енте возрастает нагрузка процессо- сительно других приложений. Мне ка- на момент выхода журнала, присо-
ра, вывод на экран немного замедля- жется, что протокол NX уже коррект- единяйтесь к обсуждению статьи на
ется. Забавно наблюдать, как во вре- но сравнивать не с протоколом RFB, форуме журнала http://www.samag.ru/
мя загрузки рабочего стола KDE ани- используемым VNC, а с протоколом forum.
мированная эмблема системы SUSE ICA от Citrix (хотя они и используют-
временно «замирает», а спустя мгно- ся в разных системах): протоколы 1. Д и с т р и бу т и в Thinstation – ht tp: / /
вения возобновляет его отображение примерно схожи по производитель- s o u rc efo r g e.n et / p ro j e c t / s h ow f i l e s .
с удвоенной скоростью. ности и эффективности, вот только php?group_id = 80408 &package_
Я писал ранее о корректной работе NX обойдется гораздо дешевле, если id=82039.
в NX компьютера c процессором P-120, не бесплатно. Кроме того, если гово- 2. Сайт Nomachine – http://www.nomachine.
но, конечно, чем больше частота про- рить о надежности, вспомните, что бы- com.
цессора, тем более плавно происходит вает, когда виснет один из основных 3. http://www.ssc.com/node/20.
отображение информации (особенно сервисов Citrix на сервере Windows? 4. Бушков Е. Подробное руководство по
графические эффекты KDE) на экра- Это сразу «ощутят» все пользователи настройке тонких клиентов на основе
не тонкого клиента. Citrix. В Linux с NX для каждого поль- дистрибутива Thinstation и протокола
При использовании тонких кли- зователя запускаются отдельные про- NX. //Системный администратор, №12,
ентов в локальной сети достаточ- цессы NX, и падение любого из них 2006 г. – C. 16-23.

№1, январь 2007 35


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

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

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

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

С
читается, что в данном вопросе уже нет ничего не-
ясного. Счет вариантов настройки, предлагаемых,
например, на www.opennet.ru, давно уже идет на де-
сятки. Все авторы торопливо пробегают базовые элементы
установок сервера и клиента и с триумфом подают «глав-
ное блюдо» – настройку приложений для работы с LDAP.
Но, хотя приложения меняются, но именно основные на-
стройки, копируемые авторами друг у друга, содержат спор-
ные решения, которые никто и не пытается совершенство-
вать. Не говоря уже о том, что в базовых настройках на-
до выдержать тот минимум управляющих директив, кото-
рый ни на йоту не уменьшит безопасность системы, осно-
ванной на LDAP, и одновременно не будет содержать ка-
ких-либо излишеств. Структура дерева LDAP
Рассмотрим все это подробнее.
В качестве рабочей среды выберем openSUSE 10.1 дит под контролем традиционной файловой системы АиА,
и 10.2, и будем использовать все пакеты, в них включен- то настройки подобной службы должны удовлетворять ря-
ные. Например, под LDAP далее станем понимать реали- ду требований.
зацию OpenLDAP, поставляемую в указанных дистрибу- Во-первых, LDAP должен хранить всю необходимую ин-
тивах, а именно openldap2-2.3.19-18.10 для openSUSE 10.1 формацию о бюджетах, которая используется в системе
и openldap2-2.3.27-25 для openSUSE 10.2. и в процессах аутентификации и авторизации. Это значит,
Если вы не имеете возможности или желания мигриро- что все поля файловой базы бюджетов следует повторить
вать в SUSE, тем не менее можете воспользоваться опи- и в LDAP как минимум.
санием, потому что во всех современных дистрибутивах Во-вторых, функциональное расширение LDAP долж-
LDAP настраивается примерно одинаково с учетом попра- но предоставляться системным службам прозрачным об-
вок на состав утилит. разом. То есть после подключения LDAP ранее определен-
Для сравнения предлагаю вам обратиться к одному ные бюджеты останутся действующими и к ним добавятся
из самых светлых документов на эту тему [1]. Светлых по- новые, размещенные в LDAP. И все подсистемы, исполь-
тому, что это руководство принадлежит к тому небольшо- зующие службы АиА, не заметив подмены, будут получать
му числу работ, где видно, что авторы очень хорошо пони- информацию о бюджетах, как хранимых в LDAP, так и раз-
мают, о чем идет речь. Но и их мы тоже немножечко по хо- мещенных в файловой базе аутентификации.
ду изложения поправим. В-третьих, использование LDAP не должно привести
Определим исходное состояние. Предположим, что уже ни к снижению надежности, ни к снижению безопасности.
выполнена базовая установка openSUSE. В качестве ау- Иначе говоря, если по какой-нибудь причине произойдет от-
тентификационной базы используются стандартные фай- каз системы АиА в той её части, что обеспечивается за счет
лы с парольными хешами, что собственно является единс- LDAP, то файловая система АиА должна работать, как и пре-
твенно возможным решением при инсталляции изолиро- жде, и тем самым обеспечить аварийный режим для вос-
ванной системы. становления функциональности в полном объеме.
И вот с этого места начнем работу. И, в-четвертых, подключение LDAP не должно привес-
ти к изменению процедуры работы с пользовательскими
Зачем нужен LDAP бюджетами. То есть, в управлении такой композитной ба-
Или, точнее, без чего он не нужен! Это не праздный воп- зой бюджетов будут задействованы стандартные утилиты,
рос. Многие понимают LDAP как дополнительное хранили- предназначенные для работы с обычными бюджетами, раз-
ще бюджетов виртуальных пользователей. Часто этим ув- мещенными в файловой базе АиА.
лекаются разработчики почтовых серверов. В какой-то сте- Только соблюдение всех перечисленных условий поз-
пени это верно. LDAP – это, в сущности, простая база дан- волит утверждать, что подключение LDAP может привес-
ных весьма причудливого формата. Но в рассматриваемом ти к расширению функциональности, увеличению масшта-
случае предполагается в ней хранить бюджеты пользовате- бируемости и всем прочим 24 удовольствиям, приписыва-
лей. Так в чем преимущество перед традиционной средой емым этому подходу. В противном случае, LDAP так и ос-
хранения учетных записей? В скорости? Нет! танется чужеродным элементом, обслуживающим сиюми-
Первое преимущество в том, что в такой базе можно нутный каприз системного администратора, решившегося
разместить дополнительную информацию, связанную с те- на малообоснованную авантюру.
ми же пользовательскими бюджетами. Например, такая ин- Теперь, после того как известны и отправная точка,
формация необходима для работы Samba. и цель работы, можно приступить к настройке серверной
И второе преимущество – так как LDAP является се- части.
тевым сервисом, то с его помощью можно создать масш-
табируемую среду аутентификации и авторизации (далее Установка сервера OpenLDAP
АиА) пользователей. Но так как LDAP сам по себе не мо- На этом этапе надо убедиться, что все необходимые для ра-
жет функционировать, поскольку даже его запуск происхо- боты пакеты установлены в систему.

№1, январь 2007 37


администрирование
Это можно сделать следующим образом: И, наконец, поместим в базу поля, требуемые для ра-
боты samba3 – samba3.schema, так как далее это поз-
# L="" ; \ волит с помощью smbldap-tools провести инициализа-
P="openldap2 openldap2-client samba-client samba ↵
smbldap-tool perl-ldap nss_ldap pam_ldap" ; \ цию базы.
for i in $P ; \ Конечно же, все подключенные схемы должны быть
do rpm -qa | grep $i || L="$L $i" ; done ; \
[ -z "$L" ] || echo yast2 -i $L доступны в момент старта сервера, например, размеще-
ны в /etc/openldap/schema или в другом месте, что, ко-
Если что-то не будет найдено, то запустится YaST для ус- нечно же, должно быть отражено в файле конфигура-
тановки недостающих пакетов и тех, что связаны с ними ции сервера.
зависимостями. На данном этапе надо принять соглашение о корне ис-
К сожалению, на доступном сейчас openSUSE GM 10.2 пользуемой базы. Так называемый суффикс. Поскольку ба-
нет пока smbldap-tools, и это пакет придется заимствовать за LDAP имеет древовидную структуру, то все размещен-
из дистрибутива openSUSE версии 10.1 и доставить орто- ные внутри её объекты будут размещаться ниже по дере-
доксальным способом «rpm -ivh ...». ву LDAP, и их отличительные имена будут включать путь
Все команды, приведенные в статье, специально адап- от объекта до корня последовательно и завершаться са-
тированы так, чтобы было удобно их использовать для ав- мим корнем, как суффиксом (см. рисунок).
томатического построения среды хранения бюджетов Корень может иметь совершенно произвольное назва-
в LDAP. Команды и скрипты параметризованы, и все пе- ние. Но надо хоть приблизительно прогнозировать даль-
ременные вынесены в начало текстов, то есть все подго- нейшую судьбу создаваемой базы и учитывать окружение,
товлено для объединения их в единый сценарий. Вы сами в котором будут использоваться данные, которые неизбеж-
можете построить таковой на основе предлагаемых ма- но в такой базе станут скапливаться.
териалов. Практически верным следует считать правило выбирать
Итак, понадобятся openldap2 и его клиент, библиотеки в качестве корня искусственно придуманное имя внутренне-
и модули для настройки работы системной АиА на основе го домена. Единственно, это имя должно быть уникальным
LDAP – nss_ldap, pam_ldap, и samba3 вместе с парой до- внутри локальной системы и не иметь аналогов за ее пре-
полнительных пакетов, которые упростят настройку самой делами примерно так же, как и всякий внутренний домен
базы LDAP и обеспечат дальнейшую интеграцию с samba. DNS не должен пересекаться с внешними, чтобы не мас-
Perl-ldap необходим для smbldap-tools. кировать их.Например, очень удобно выбрать для постро-
Бывает так, что ситуация имеет прямо противополож- ения корня имя «office.localnet». Тогда суффиксом будет
ный характер, то есть уже есть и как-то работает LDAP с на- «dc=office,dc=localnet». Некоторыми источниками, особенно
стройками, которые следует изменить. Тогда надо остано- описывающими настройку ActiveDirectory, куда LDAP входит
вить процесс slapd и удалить старую базу из /var/lib/ldap: как составная часть, предлагается использовать в качес-
тве суффикса реальный домен Интернета, например поч-
# rcldap stop товый – kontora.ru. Это совершенно не верно. Внутренняя
# I=/var/lib/ldap ; \
for i in $(ls -1 $I | grep -v ^DB_CONFIG) ; \ среда, определяемая значением корня, должна быть ис-
do rm -f $I/$i ; done кусственно изолированной от внешней, а все пути транс-
ляции прямо указываться и контролироваться. Такое пост-
Кстати, то же самое можно сделать, если что-то не пон- роение исключит случайности и строго ограничит контак-
равится после установки, выполненной по рекомендациям ты, что увеличит безопасность внутренней системы. Ника-
настоящей статьи. ких проблем с приемом почты или с резолвингом доменных
Теперь все готово к настройке. Все используемые сер- имен в таком случае не возникнет. Напротив, предотвратит
вером конфигурационные файлы лежат в /etc/openldap. случайное их пересечение, которое может создать трудно
Здесь самое время вспомнить о первом требовании устраняемые ошибки.
к хранилищу бюджетов. Используемая в АиА база дан- Для разграничения доступа к полям базы LDAP ис-
ных должна содержать все необходимые для работы поля. пользуются специально заданные правила. Эти правила,
То есть надо в перечне включаемых схем указать те, что со- так же как и права доступа к файлам традиционной сис-
держат требуемые структуры. темы АиА, таким как /etc/passwd, /etc/shadow и другим, за-
Прежде всего, core.schema и cosine.schema – это ми- щищают данные от неправомерного доступа. При этом та-
нимум-миниморум для работы LDAP, на определения этих кая система подразумевает, что определение прав проис-
схем ссылаются практически все остальные ходит по принадлежности запроса определенному поль-
Далее rfc2307bis.schema, которая, собственно, содер- зователю. То есть сначала пользователь пройдет этап ау-
жит определения для класса posixAccount, содержаще- тентификации, и тогда его запрос будет должным обра-
го эквиваленты всем используемым в стандартной АиА зом авторизован.
полям. Эта схема пришла на смену ранее используемой Но тут заключена логическая проблема. Поскольку
nis.schema. сама система LDAP предназначена для использования
Затем то, что позволит добавить дополнительные дан- в механизме АиА, то на начальном этапе, пока база пус-
ные к определениям бюджетов – inetorgperson.schema. та, ни одно заданное правило ограничения доступа не мо-
Немного полезного для работы почтового сервера – жет быть выполнено в принципе. И поэтому для «раскру-
misc.schema. чивания» базы LDAP на этапе инициализации использу-

38
администрирование
ется так называемый rootdn – псевдопользователь, кото- #
# ACL's definitions
рый имеет абсолютный доступ ко всем полям и всем запи- access to attrs=userPassword,userPKCS12
сям базы вне зависимости от настроек ограничений досту- by self write
by dn="$ADMINDN" write
па. Существование этого пользователя «вшито» в бинар- by * auth
ные файлы. Его учетную запись не надо специально со-
access to attrs=shadowLastChange
здавать в базе и его нельзя запретить. Но так как сущес- by self write
твование подобного абсолютного пользователя являет- by dn="$ADMINDN" write
by * read
ся прямым нарушением иерархии разграничения доступа,
то есть единственная возможность заблокировать его ра- access to *
by dn="$ADMINDN" write
боту – не указывать его отличительное имя и пароль, чтобы by self write
сервер LDAP не смог провести аутентификацию, если даже by * read
такой запрос поступит. Но на начальном этапе без rootdn defaultaccess read
практически не обойтись и пусть его отличительное имя #
# BD's definitions
будет «cn=ldaproot,dc=office,dc=localnet». database bdb
Поскольку после завершения инициализации rootdn бу- suffix "$SUFFIX"
checkpoint 1024 5
дет заблокирован, то для регулярной работы надо предус- cachesize 10000
мотреть специальные LDAP-бюджеты. Эти бюджеты будут rootdn "$ROOTDN"
rootpw $T
использоваться лишь для организации работы подсистем, directory /var/lib/ldap
запрашивающих данные из базы LDAP, в рамках выделен- #
# Indices to maintain
ных для них полномочий. Например, предусмотрим спе- index objectClass eq
циального искусственного пользователя, от имени кото- index cn pres,sub,eq
index sn pres,sub,eq
рого могут работать утилиты АиА ldapadmin c отличитель- index uid pres,sub,eq
ным именем «cn=ldapadmin,dc=office,dc=localnet», которо- index displayName pres,sub,eq
index uidNumber eq
му дадим права читать и изменять все поля базы, включая index gidNumber eq
парольные хеши. index memberUid eq
index sambaSID eq
Если нужно организовать для какой-то иной подсисте- index sambaPrimaryGroupSID eq
мы особый доступ, например позволить службе DHCP бес- index sambaDomainName eq
index default sub
препятственно модифицировать отведенную ей часть ба- EOT
зы LDAP, то точно так же, как и для АиА, надо будет заре-
гистрировать особого пользователя и дать ему соответс- Приведенные выше команды создадут конфигурацион-
твующие права. ный файл нужного содержания. После чего можно попро-
Остальные элементы конфигурационного файла сер- бовать запустить сам сервер.
вера LDAP можно взять из шаблона, поставляемого с па- В openSUSE стартовый скрипт использует парамет-
кетом. Парольные фразы на данном этапе не имеют значе- ры из файла /etc/sysconfig/openldap. Настроим их так, что-
ния. Их можно принять самыми простыми и мнемоничны- бы сервер LDAP прослушивал лишь внутренний петлевой
ми. Пароль rootdn в самом ближайшем времени будет за- интерфейс lo:
блокирован, а пароль ldapadmin ничто не помешает в даль-
нейшем сменить «на ходу». В итоге должно получиться что- # LDAPSERVER=127.0.0.1 ; \
LDAPPORT=389 ; \
то вроде следующего: LDAPINT="$LDAPSERVER:$LDAPPORT" ; \
I=/etc/sysconfig/openldap ; \
sed "/^OPENLDAP_LDAP_INTERFACES/c\
# SUFFIX="dc=office,dc=localnet" ; \ OPENLDAP_LDAP_INTERFACES=\"$LDAPINT\"" $I >$I.$$.tmp ; \
LDAPROOT="ldaproot" ; \ mv $I.$$.tmp $I
ROOTDN="cn=$LDAPROOT,$SUFFIX" ; \
ROOTPW="secret" ; \
LDAPADMIN="ldapadmin" ; \
ADMINDN="cn=$LDAPADMIN,$SUFFIX" ; \ Такая настройка позволит не заниматься сейчас обес-
ADMINPW="admin" ; \ печением шифрования трафика обмена данными с LDAP,
SCHEMA='{SSHA}' ; \
T=$(slappasswd -s $ROOTPW -h $SCHEMA) ; \ так как это связано с множеством других служб и такими
cat >/etc/openldap/slapd.conf<<EOT вопросами, как создание локального Центра Сертифика-
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema ции, что совершенно не укладывается в тематику статьи.
include /etc/openldap/schema/inetorgperson.schema После настройки /etc/sysconfig/openldap проверим пра-
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/misc.schema вильность настроек, запустив сервер:
include /etc/openldap/schema/samba3.schema
# # rcldap start
schemacheck on # LDAPSERVER=127.0.0.1 ; \
# LDAPPORT=389 ; \
pidfile /var/run/slapd/slapd.pid LDAPINT="$LDAPSERVER:$LDAPPORT" ; \
argsfile /var/run/slapd/slapd.args netstat -apn | grep "LISTEN.*slapd" | \
replogfile /var/lib/ldap/replica.log grep $LDAPINT >/dev/null 2>&1 || echo «увы, не работает!»
loglevel 0
#
allow bind_v2 Если печальное сообщение не последовало, то можно
#
# Load dynamic backend modules: включать сервер LDAP в режим автоматического запуска
modulepath /usr/lib/openldap/modules «chkconfig --add ldap».

№1, январь 2007 39


администрирование
В противном случае надо закомментировать строч- Названия контейнеров можно изменять произвольным
ку «loglevel 0», произвести перезапуск LDAP и пос- образом, но так как они являются результатом соглаше-
мотреть, что является причиной неудачи в протоколе ния разработчиков, то лучше следовать предложенному
/var/log/messages. После исправления ошибок следует сно- и, например, регистрировать учетные записи пользовате-
ва вернуть параметр loglevel, так как в противном случае лей в «ou=Peolple».
протоколы системы будут просто забиваться огромным чис- Конфигурацию нашего клиента создадим следующим
лом сообщений от сервера LDAP, участвующем в каждом образом:
процессе аутентификации.
Если уровень протоколирования по умолчанию не поз- # LDAPSERVER=127.0.0.1 ; \
LDAPPORT=389 ; \
волит выяснить проблему, то следует его повысить и обра- LDAPINT="$LDAPSERVER:$LDAPPORT" ; \
титься к руководству по OpenLDAP. Но, как уже ранее бы- SUFFIX="dc=office,dc=localnet" ; \
cat <<EOT >/etc/ldap.conf
ло сказано, вся последовательность описываемых дейс- host $LDAPINT
твий чрезвычайно проста, полностью соответствует доку- base $SUFFIX
#
ментации, автоматизирована и проверена на ряде сервер- # Don't try forever if the LDAP server is not reacheable
ных установок. bind_policy soft
# RFC2307bis naming contexts
Иначе говоря, ищите опечатки! nss_base_passwd ou=People,$SUFFIX?one
nss_base_shadow ou=People,$SUFFIX?one
nss_base_group ou=Group,$SUFFIX?one
Настройка клиента nss_base_hosts ou=Hosts,$SUFFIX?one
Теперь, когда в системе есть доступный LDAP-сервер, мож- nss_base_services ou=Services,$SUFFIX?one
nss_base_networks ou=Networks,$SUFFIX?one
но приступить к настройке клиентской части. nss_base_protocols ou=Protocols,$SUFFIX?one
Клиентом будут пользоваться все программы, которым nss_base_rpc ou=Rpc,$SUFFIX?one
nss_base_ethers ou=Ethers,$SUFFIX?one
понадобится информация из базы, хранимой в LDAP. Имен- nss_base_netmasks ou=Networks,$SUFFIX?one
но на этом принципе основано свойство масштабирования. nss_base_bootparams ou=Ethers,$SUFFIX?one
nss_base_aliases ou=Aliases,$SUFFIX?one
Хотя тогда уже, скорее всего, придется изменить адрес, про- nss_base_netgroup ou=Netgroup,$SUFFIX?one
слушиваемый сервером LDAP. # attribute/objectclass mapping
# Syntax:
В нашем же случае важно подчеркнуть, что подстанов- nss_map_attribute rfc2307attribute ↵
ка клиента производится прозрачным образом за счет ис- mapped_attribute
nss_map_objectclass rfc2307objectclass ↵
пользования библиотек, специально созданных для подоб- mapped_objectclass
ной работы. Это позволяет для каждого отдельного хос- #
ldap_version 3
та настроить клиент на запросы к некоторому, возможно, ssl no
и не локальному, LDAP-серверу так, что все остальные под- #
# pam
системы этого хоста, запрашивая информацию через ука- pam_password exop
занные библиотеки, будут получать данные из LDAP-сер- pam_filter objectclass=posixAccount
pam_login_attribute uid
вера в том числе. Конечно, важно, чтобы это были широ- pam_member_attribute memberUid
ко используемые библиотеки, а не подсистемы некоторо- EOT
го приложения.
В качестве подобных ключевых библиотек, которые на- Обращаю внимание – никаких паролей в этом файле
страиваются на получение данных из LDAP, очень выгод- не содержится! Всякое упоминание в этом файле специ-
но применять nss и pam. Две эти подсистемы практичес- альных пользователей и их паролей свидетельствует о не-
ки на 100% позволяют воспользоваться преимуществами верной настройке ограничений доступа в LDAP. Часто из-
LDAP, совершенно не изменяя другие аутентификацион- за невозможности работать c установленными правами
ные подсистемы, входящие в целевые пакеты, например на объекты базы LDAP от имени обычных пользователей
в courier-imap. Иначе говоря, именно nss и pam далее и бу- прибегают к использованию или специального пользова-
дут настраиваться. теля с полными правами на всю базу, или, что еще хуже,
В openSUSE библиотеки nss и pam читают свои настрой- просто заставляют клиента соединяться с LDAP-сервером
ки из одного и того же файла /etc/ldap.conf. Что очевид- как rootdn, все это лишь от нежелания разобраться в сущ-
но, так как они фактически предоставляют информацию ности происходящего.
одним и тем же программам на разных этапах их работы. Для того чтобы заставить систему обращаться к LDAP
Путь к этому файлу «зашит» в самих библиотеках. Можно в поиске идентификационных данных, настроим службу nss.
проверить его точное значение в системах, где эта истина Эта служба управляется с помощью своего конфигураци-
не очевидна, например для nss: онного файла /etc/nsswitch.conf, в котором задаются пути
поиска информации в системе.
# strings $(rpm -ql nss_ldap | grep lib) | grep ldap.conf После установки там по всем запросам обычно ука-
зан поиск в файловых базах. Надо его немножечко под-
Как и конфигурационный файл сервера, файл настро- править:
ек клиента также имеет шаблон, которым можно восполь-
зоваться. Ключевыми значениями являются адрес серве- # cat <<EOT >$/etc/nsswitch.conf.tmp
passwd: compat
ра и суффикс базы LDAP. Все остальные строчки заимству- shadow: files
ются из стандартного шаблона. group: compat

40
администрирование
services: files ldap метр use_ldap для pam_unix2 с помощью этой утилиты не
netgroup: files ldap
aliases: files ldap подставить никак. То есть можно предположить, что в са-
passwd_compat: ldap мом ближайшем будущем этот ключ пропадет и в самом
group_compat: ldap
EOT pam_unix2. Иначе говоря, в SUSE, начиная с версии 10.2,
# grep -v "^\(#\|$\|passwd\|shadow\|group\| ↵ для работы с LDAP предполагается использовать тради-
services\|netgroup\|aliases\)" \
/etc/nsswitch.conf >>/etc/nsswitch.conf.tmp ционный для остальных дистрибутивов pam_ldap. К сожа-
# mv /etc/nsswitch.conf.tmp /etc/nsswitch.conf лению, как и многое в SUSE, это решение не получило гра-
мотного технологического воплощения. Да и вопрос, зачем
Вот теперь во всех актуальных для нас путях указано тогда нужен pam_unix2, если есть опять же традиционный
искать еще и в LDAP, а для passwd и group назначен спе- pam_unix, остается открытым.
циальный совместимый режим, в котором также добавлен Итак, для openSUSE 10.1 исправляем настройки
путь поиска в LDAP. pam_unix2 и тем самым решаем все проблемы:
Здесь очень важно, что поиск shadow остался толь-
ко в файловой базе. Это верно, тут нет ошибки. Так как # cat <<EOT >/etc/security/pam_unix2.conf
auth: use_ldap
shadow это не просто база, это совершенно конкретный account: use_ldap
алгоритм хранения хешей. И подменять его на LDAP не password: use_ldap
session: none
следует. Тем более не надо делать такого «винегрета» – EOT
shadow: tcb ldap files nisplus nis, как указано в [1]. Пусть все
парольные хеши, что доставляются из shadow, останутся Для openSUSE 10.2 можно применить такой же «сило-
оригинальными. Pam сможет и так воспользоваться хеша- вой» вариант и просто дописать в каждую строку вызова
ми из LDAP, а применение nss для доступа к хешам заста- pam_unix2 параметр use_ldap :
вит использовать самые простейшие из криптоалгоритмов.
Подробнее об этом в [2]. #!/bin/sh
for i in /etc/pam.d/common-* ; do
Здесь же подчеркнем, что обязательное существова- [ -L $i ] || {
ние локальных учетных записей необходимо для обеспече- echo $i | grep -v backup$ >/dev/null && {
grep "pam_unix2" $i >/dev/null && {
ния аварийного режима работы. Надо быть уверенным, что sed '/pam_unix2/s/$/use_ldap/' $i >$i.$$.tmp
всегда есть активная учетная запись администратора, вос- mv $i.$$.tmp $i
}
пользовавшись которой, можно вмешаться в работу систе- }
мы в экстренном случае. }
done
На этапе проверки механизмов функционирования nss
следует отключить кэширование запросов «rcnscd stop». Можно еще выполнить «pam-config -a --ldap» и получить
Это позволит проверять работу системы сразу же после конфигурацию, которая будет почти работоспособной. И да-
ее модификации. В штатном режиме Name Service Cache же воспользоваться такой настройкой ..., если, точнее, ког-
Daemon будет работать как следует. да будут исправлены описки в pam-config. А пока прибегнем
Последнее, что осталось в настройке АиА, – переклю- к описанному выше способу с использованием параметра
чить pam в режим работы с LDAP. В openSUSE применяет- use_ldap, так как нашей целью является создание нужной
ся исключительно оригинальный механизм подключения конфигурации оптимальным путем, а не бесконечное ис-
LDAP в pam. Вместо традиционного указания порядка и пре- правление ошибок разработчиков. Обладатели дистрибу-
имущества использования разных источников АиА-инфор- тивов, отличных от openSUSE, могут взять вариант настро-
мации применяется композитный модуль pam_unix2, кото- ек pam из [1], опять же с поправкой на особенности вклю-
рый имеет собственный конфигурационный файл. То есть ченных в дистрибуцию утилит.
вместо настройки общих системных файлов в /etc/pam.d Осталось добавить специальные разделители в те фай-
используется /etc/security/pam_unix2.conf. ловые базы, которые, как было указано выше, работают
Кроме неявной политики указания очередности поис- в режиме совместимости (compat):
ка, что очень подробно критикуется в [2], такой подход со-
здает еще и лишнюю точку настройки. Самое смешное, # grep "^+:::" /etc/passwd >/dev/null || ↵
echo "+::::::" >>/etc/passwd
что вплоть до релиза 10.1 pam_unix2 искал свой собствен- # grep "^+:::" /etc/group >/dev/null || ↵
ный файл настроек, а вот, начиная с openSUSE 10.2, он уже echo "+:::" >>/etc/group
его не ищет, а снова принимает параметры из традицион-
ных файлов /etc/pam.d. Но для управления ими теперь стала Все, теперь настройка клиента завершена.
применяться утилита pam-config, которая согласно каким-то
своим, прописанным в ее бинарном коде, правилам создает Инициализация базы LDAP
конфигурационные файлы для подсистемы pam. Как уже было сказано ранее, в этом процессе нам поможет
Но и тут не без юмора: эта утилита, которую написал пакет smbldap-tools. Безусловно, можно обойтись и без не-
тот же автор, что и pam_unix2 – Thorsten Kukuk, поддержи- го. Но так мы сократим работу за счет автоматизации час-
вает pam_unix2.conf, несмотря на то, что сам pam_unix2 ти операций.
уже не имеет этого конфигурационного файла. Изучение Пакет smbldap-tools представляет собой набор про-
исходного текста позволяет узнать, что лишь с целью об- грамм, которые помогают манипулировать учетными запи-
ратной совместимости. Откровением будет то, что пара- сями, размещенными в LDAP. Все эти программы исполь-

№1, январь 2007 41


администрирование
зуют единый конфигурационный файл /etc/smbldap-tools/ ADMINPW="admin" ; \
cat >/etc/smbldap-tools/smbldap_bind.conf <<EOT
smbldap.conf, который надо перед началом работы отре- slaveDN="$ADMINDN"
дактировать или создать заново, что в данном случае про- slavePw="$ADMINPW"
masterDN="$ADMINDN"
ще. Параметры, важные в настройке, определяют сетевой masterPw="$ADMINPW"
адрес, на котором доступен сервер LDAP, суффикс базы EOT
и некоторые параметры, специфичные для PDC, который
можно организовать в случае необходимости с помощью Все параметры, использованные в скрипте, как и ра-
samba3 и той базы LDAP, что будет проинициализирована. нее, перечислены в самом начале. Они должны совпадать
Кроме уже ранее обсуждавшихся параметров добавились: с ранее использованными и меняться в случае их модифи-
имя домена NT, имя сервера, почтовый домен (кстати, опять кации. Кстати сказать, это единственное место, где пароль
же не имеющий никакого отношения к реально получаемой администратора LDAP указывается в открытом виде. И это
почте) и так называемый SID, который используется в пос- неизбежность. Фактически это чрезвычайно ослабляет за-
троении учетных номеров домена NT. Если далее не пла- щищенность PDC, построенного на основе samba3. В нашем
нируется использовать samba на этом хосте, то все пере- случае использование smbldap-tools носит вспомогательный
численные параметры можно назначить достаточно произ- характер. И более того, можно обойтись без этого пакета,
вольно. Итак, сделаем это: но тогда надо будет написать собственную программу ини-
циализации LDAP и собственную программу, устанавлива-
# NT4DOM="Office" ; \ ющую парольные хеши, размещенные в LDAP, от суперполь-
LDAPSERVER=127.0.0.1 ; \
LDAPPORT=389 ; \ зователя. То есть отказ от smbldap-tools противоречит ос-
SUFFIX="dc=office,dc=localnet" ; \ новному принципу системного администрирования – мак-
NBTNAME="SERVER" ; \
MAILDOM="office.localnet" ; \ симально использовать уже созданные средства. Опираясь
LOCALSID=$(net getlocalsid | awk 'BEGIN{FS="is: "} ↵ на smbldap-tools, можно быть всегда уверенным, что разра-
{print $2}') ; \
cat >/etc/smbldap-tools/smbldap.conf <<EOT ботчики этого пакета правильно модифицируют свои про-
# main граммы для работы со следующей версией LDAP и samba,
SID="$LOCALSID"
sambaDomain="$NT4DOM" так что нам останется лишь исправить мелкие ошибки.
# ldap Но если не планируется использовать из smbldal-tools ни-
slaveLDAP="$LDAPSERVER"
slavePort="$LDAPPORT" чего, кроме утилиты smbldap-populate, то /etc/smbldap-tools/
masterLDAP="$LDAPSERVER" smbldap_bind.conf можно и не настраивать. Или настроить
masterPort="$LDAPPORT"
ldapTLS="0" непосредственно перед вызовом, а потом удалить.
#verify="require" Теперь можно воспользоваться инструментарием
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.pem" smbldap-tools для создания ldiff, которым далее проиници-
clientkey="/etc/smbldap-tools/smbldap-tools.key" ализируем базу LDAP:
suffix="$SUFFIX"
usersdn="ou=People,\${suffix}"
computersdn="ou=Hosts,\${suffix}" # I=/tmp/tmp.ldif ; \
groupsdn="ou=Group,\${suffix}" smbldap-populate -e $I -a Administrator -k 0 -m 0 ↵
idmapdn="ou=Idmap,\${suffix}" -u 2000 -g 2000 ; \
sambaUnixIdPooldn="sambaDomainName=$NT4DOM,\${suffix}" sed '/^#/s/#//' $I | sed '/^objectClass: posixGroup/i\
scope="sub" objectClass: nisNetgroup' >init.ldiff ; \
hash_encrypt="SSHA" rm -f $I
# accounts
userLoginShell="/bin/false"
userHome="/home/%U" Все в полученном файле хорошо, кроме того, что ряд
userHomeDirectoryMode="700" записей закомментирован – поправим, уберем коммента-
userGecos="Office User"
defaultUserGid="513" рий, да еще забыт очень важный для создания групп класс
defaultComputerGid="515" nisNetgroup – поправим, добавим. Полученный файл со-
skeletonDir="/etc/skel"
defaultMaxPasswordAge="99" храним. Если что-то еще не устраивает, его можно отре-
# samba дактировать вручную. Рекомендую его обязательно про-
userSmbHome="\\\\$NBTNAME\\homes\%U"
userProfile="\\\\$NBTNAME\\profiles\%U" смотреть и сравнить с тем, что предлагается в [1]. Можно
userHomeDrive="H:" сказать так, в [1] минимальный вариант, а тот, что создает
userScript="%U.cmd"
mailDomain="$MAILDOM" smbldap-populate – предпочтительный.
# misc Вот самый важный момент, после которого номиналь-
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd" но LDAP начинает работать – загрузка базы:
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd" # SUFFIX="dc=office,dc=localnet" ; \
EOT LDAPROOT="ldaproot" ; \
ROOTDN="cn=$LDAPROOT,$SUFFIX" ; \
И после настройки конфигурации smbldap-tools доба- ROOTPW="secret" ; \
ldapmodify -v -a -D "$ROOTDN" -H ldap://localhost ↵
вим к ней еще один маленький файлик, в котором укажем -x -w $ROOTPW -f init.ldiff
учетные данные, с которыми утилиты из пакета smbldap-
tools будут обращаться к LDAP: Таким образом, база проинициализирована, корне-
вой объект LDAP, соответствующий выбранному суффик-
# SUFFIX="dc=office,dc=localnet" ; \ су «dc=office,dc=localnet», создан, и можно приступить к её
LDAPADMIN="ldapadmin" ; \
ADMINDN="cn=$LDAPADMIN,$SUFFIX" ; \ наполнению.

42
администрирование
Первым делом добавим учетную запись служебного #!/bin/bash
пользователя – администратора LDAP: SUFFIX="dc=office,dc=localnet"
LDAPADMIN="ldapadmin"
# SUFFIX="dc=office,dc=localnet" ; \ ADMINDN="cn=$LDAPADMIN,$SUFFIX"
LDAPROOT="ldaproot" ; \ ADMINPW="admin"
ROOTDN="cn=$LDAPROOT,$SUFFIX" ; \
ROOTPW="secret" ; \ cat /etc/group | grep -v ^+ | awk -F: '{print $1, $3}' | ↵
LDAPADMIN="ldapadmin" ; \ while read GNAME GID ; do
ADMINDN="cn=$LDAPADMIN,$SUFFIX" ; \ cat <<EOT
ADMINPW="admin" ; \ dn: cn=$GNAME,ou=Group,$SUFFIX
SCHEMA='{SSHA}' ; \ objectClass: posixGroup
cat <<EOT | ldapmodify -v -a -D "$ROOTDN" ↵ objectClass: nisNetgroup
-H ldap://localhost -x -w $ROOTPW objectClass: top
dn: $ADMINDN cn: $GNAME
cn: $LDAPADMIN gidNumber: $GID
sn: $LDAPADMIN description: Unix group "$GNAME"
objectClass: person userPassword: {crypt}x
objectClass: top -- пустая строка --
description: LDAP Administrator stuff EOT
userPassword: $(slappasswd -s $ADMINPW -h $SCHEMA) done | ldapmodify -v -a -D "$ADMINDN" ↵
EOT -H ldap://localhost -x -w $ADMINPW

После добавления бюджета «cn=ldapadmin,dc=office, Все группы, кроме «users», добавятся без ошибок,
dc=localnet» можно использовать его отличительное имя а ошибка добавления «users» не должна привести в заме-
для дальнейшей модификации базы LDAP и, значит, встро- шательство, так как это очевидно, поскольку она уже со-
енный бюджет rootdn более не понадобится, и его отличи- здана как «Users».
тельное имя и пароль можно безбоязненно удалить из кон- Состояние базы LDAP можно посмотреть с помощью
фигурационного файла: утилиты slapcat или через интерфейс консольного кли-
ента:
# I=/etc/openldap/slapd.conf ; \
grep -v "root\(dn\|pw\)" $I >$I.tmp ; \ # SUFFIX="dc=office,dc=localnet" ; \
mv $I.tmp $I LDAPADMIN="ldapadmin" ; \
ADMINDN="cn=$LDAPADMIN,$SUFFIX" ; \
И перезапустить сам LDAP-сервер «rcldap restart» для то- ADMINPW="admin" ; \
ldapsearch -LLL -w "$ADMINPW" -D "$ADMINDN" \
го, чтобы изменения вступили в силу. Ну вот, теперь систе- -v -H ldap://localhost -x -b "$SUFFIX" ↵
ма АиА, использующая LDAP для хранения бюджетов поль- "(objectClass=*)" >dump.ldiff
зователей, практически полностью готова к работе. Прак-
тически, да не совсем. Проверяется работа LDAP с помощью утилиты getent.
Здесь уже возникают соображения совсем не триви- Эта программа позволяет вывести содержимое любой сис-
ального характера и свойственные, скорее всего, лишь темной базы из nsswitch.conf так, как она «видится» систе-
для среды openSUSE. Дело в том, что создание пользова- ме. В базах passwd и group должны присутствовать объек-
тельских бюджетов сопровождается регистрацией в соот- ты, размещенные в LDAP.
ветствующих группах. При использовании smbldap-tools Например, проверим group:
пользовательские бюджеты будут размещаться в группах,
характерных для samba окружения. А при использовании # strings $(rpm -ql nss_ldap | grep lib) | grep ldap.conf
«useradd ...» будут использоваться те параметры, которые video:x:33:alekseybb
записаны в /etc/default/useradd: video:*:33:

# cat /etc/default/useradd Первая строка из файловой базы, а вторая из LDAP.


GROUP=100
HOME=/home Иначе говоря, работает!
INACTIVE=-1 Таким образом, все составные части системы аутен-
EXPIRE=
SHELL=/bin/bash тификации и авторизации подготовлены для использова-
SKEL=/etc/skel ния LDAP в качестве хранилища учетных записей. В сле-
GROUPS=video,dialout
CREATE_MAIL_SPOOL=no дующей части статьи будет проведена детальная провер-
ка этой схемы, выявлены ее недостатки и указаны преиму-
То есть, согласно этим настройкам, каждый пользова- щества. Пытливые читатели могут, не дожидаясь следую-
тель будет регистрироваться в группах video и dialout. Мож- щего номера, испробовать все, здесь описанное, в работе.
но, конечно, их модифицировать, но тогда надо забыть Приведенные выше скрипты не будут подвергаться пере-
о принципе прозрачности представления сервиса LDAP, делке в ходе дальнейшего обсуждения. А вот впечатления
не говоря уже о том, что это может создать трудности, пос- от их использования можно сравнить с теми, что послужи-
кольку на принадлежности к группам строится традицион- ли материалом для второй части статьи.
ная иерархия прав в UNIX. Значит, указанные группы не-
обходимо тоже разместить в базе LDAP. Чтобы не созда- 1. Настройка OpenLDAP и его клиентов – http://www.freesource.info/
вать проблем на будущее, проще ВСЕ группы продублиро- wiki/ALTLinux/Dokumentacija/OpenLDAP?v=1845.
вать в LDAP. Воспользуемся для этого вот таким простень- 2. Барабанов А. LDAP и Все-Все-Все. Черновик версии 2 – http://
ким скриптом: www.barabanov.ru/arts/LDAPremarks-draft-2.pdf.

№1, январь 2007 43


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

Какова в действии система


резервирования AMANDA

Сергей Яремчук
Система резервирования информации AMANDA считается одной из лучших среди
бесплатных. Но многих удерживают от ее использования два фактора: мнимая сложность
в настройках и то, что она работает только с ленточными накопителями. Попробуем доказать
необоснованность таких заблуждений.

П
роект AMANDA, или Advanced файловой системе вы получите что- дания на резервирование. В задании
Maryland Automatic Network Disk то вроде: указывается: источник данных, распо-
Archiver, стартовал в 1992 го- ложение клиента, отвечающего за со-
/dev/hda5: Bad magic number in super-block
ду в департаменте компьютерных тех- while opening filesystem
здание резервной копии, а также па-
нологий университета Maryland США, раметры создания резервной копии.
под руководством Джеймса да Силь- При работе с XFS dump в AMANDA Клиент может быть установлен на од-
ва (James da Silva), когда потребовал- подменяется другой утилитой – xfsdump, ном компьютере с сервером либо на
ся инструмент для резервирования ин- работающей в паре с xfsrestore. А вот всех компьютерах, которым требует-
формации с многочисленных клиент- файлы с ReiserFS можно резервиро- ся архивация. В первом случае для
ских систем на единственный сервер. вать с помощью GNU-tar, к тому же tar доступа к компьютерам используют-
Постепенно проект утратил поддержку различает метки времени и при архи- ся все доступные методы аутентифи-
в родных стенах, и исходные тексты вировании позволяет исключить отде- кации: Kerberos 4/5, OpenSSH, rsh, па-
были перемещены на Sourceforge [2]. льные файлы и каталоги. роль Samba. В последней версии доба-
В настоящее время AMANDA разра- Есть еще одна особенность, dump вились еще два: bsdtcp и bsdudp.
батывается многими добровольцами, может архивировать разделы без их Во втором случае на клиенте созда-
и хотя не заявлена лицензия GNU GPL, предварительного монтирования, ра- ется специальный файл .amandahosts,
любой желающий может модифициро- ботает dump быстрее tar, но копию «жи- в котором записаны системы, которые
вать код по своему усмотрению, рас- вой» системы с его помощью созда- могут к нему обращаться за данными.
пространять и продавать, при условии вать рискованно. А вот если создает- Клиент ожидает подключение сервера
что авторство будет сохранено. ся копия с tar, то такой раздел должен на 10080 UDP-порту или 10081/tcp, ес-
быть предварительно смонтирован. ли используется Kerberos – kamanda,
Основные характеристики Последние версии AMANDA могут слушая его посредством inetd/xinetd.
AMANDA является удобной надстрой- создавать резервные копии инфор- Если аутентификационная информа-
кой к стандартным UNIX-программам мации с компьютеров под управлени- ция его удовлетворяет, то для переда-
dump/restore, GNU tar и некоторым дру- ем Windows посредством Samba либо чи данных открывается новое соедине-
гим. Поэтому ее основные характерис- с помощью клиента, компилированно- ние. При этом используется свой про-
тики следует рассматривать исходя из го под cygwin.Сравнить основные воз- токол, работающий поверх UDP или
возможностей базовых утилит. Ведь можности AMANDA с другими систе- TCP. Все настройки параметров резер-
dump понимает только файловые сис- мами резервного копирования вы мо- вирования производятся на сервере.
темы ext2/3, с ReiserFS, Reiser4 и XFS жете в статье [3]. Хотя в последней на момент написания
он не дружит. AMANDA работает по клиент-сер- статьи версии AMANDA 2.5.1 появился
При попытке выполнить резерви- верной схеме. На сервере запускает- и необязательный клиентский конфи-
рование с помощью dump на такой ся команда amdump с указанием за- гурационный файл amanda-client.conf,

44
администрирование
но основное его назначение – безопасное восстановление  ./configure--prefix=/usr --bindir=/usr/sbin--mandir=/usr/
информации с помощью утилиты amrecover. share/man --libexecdir=/usr/lib/amanda--enable-shared
AMANDA поддерживает шифрование информации --sysconfdir=/etc --localstatedir=/var/lib --with-debugging=
как на клиенте, так и на сервере, для этих целей использу- /var/log/amanda;
ется несимметричный GPG или симметричный amcrypt-ал-  --with-gnutar-listdir=/var/lib/amanda/gnutar-lists – распо-
горитм. Гибко реализовано сжатие информации, это можно ложение файла, в который заносится информация
произвести как на клиенте, так и на сервере. Если сжимать для GNU-tar, на клиентском компьютере;
информацию на клиенте, это уменьшит нагрузку на сеть, ес-  --with-index-server=localhost – сервер хранения индек-
ли на сервере, то снизит нагрузку на маломощную машину сов;
клиента. Резервирование можно настроить в пределах од-  --with-user=backup --with-group=backup – пользователь
ной конфигурации, но если на сервере имеются несколько и группа, от имени которых будет работать AMANDA;
устройств архивации, необходимо использовать несколько  --with-bsd-security – активация rsh/rlogin;
независимых конфигураций. Посредством AMANDA мож-  --with-amandahosts – использование специального фай-
но реализовать полное или инкрементное резервирова- ла .amandahosts вместо .rhosts или /etc/hosts.equiv;
ние информации.  --with-smbclient=/usr/bin/smbclient – расположение
AMANDA изначально построена и оптимизирована файла smbclient, также возможно понадобится опция
для работы с ленточными накопителями, но путем неслож- --with-samba-user для указания пользователя Samba;
ных манипуляций можно в качестве источника хранения ис-  --with-tcpportrange=50000,50100 --with-udpportrange=
пользовать раздел жесткого диска, CD/DVD и Zip или раздел 840,860 – привязка TCP- и UDP-портов в пределах ука-
Samba. Причем раздел диска может быть размечен на не- занных значений, по умолчанию ограничений нет.
сколько частей, имитирующих несколько лент.
Процессом резервирования можно руководить вручную, Кроме того, возможны параметры --with-client-only
хотя обычно его запускают с помощью cron. Результат опе- (--without-server) для построения только клиентской системы
рации будет записан в журнал, также возможно и отправ- или --with-server-only (--without-client) – только серверного.
ление итогового e-mail сообщения. Если в качестве транспорта или аутентификации пла-
нируется использовать защищенные протоколы, то до-
Устанавливаем AMANDA бавьте параметры--with-krb4-security, --with-krb5-security,
Настроить AMANDA для работы со стриммером просто, --with-rsh-security, --with-ssh-security, --with-bsdtcp-security
но в небольших и средних организациях не всегда есть или --with-bsdudp-security.
средства, да и необходимость в покупке дорогого устройства. После конфигурирования стандартная установка.
Лучше использовать жесткий диск или копировать информа- Для работы CDRW-Taper понадобится Perl, пакет cdrtools,
цию на CD/DVD-диски. Вот этим мы и займемся. Я исполь- и если вы планируете использовать DVD-диски, то и dvd+rw-
зовал дистрибутив KUbuntu 6.06 LTS. Вы возразите, что это tools, а также для отправки отчетов по электронной поч-
дистрибутив для настольного применения, но именно в про- те и SMTP-сервер. В качестве последнего вы можете ис-
цессе настройки AMANDA в KUbuntu пришлось столкнуться пользовать Sendmail, QMail или Postfix. CDRW-Taper явля-
с ситуацией, которой не было в других дистрибутивах. ется Perl-скриптом.
Исходные тексты AMANDA и прекомпилированные па- Вся установка производится вручную. Сначала пере-
кеты для Red Hat Enterprise Linux 3.0/4.0, Fedora Core 3/4/5, именовываем файл taper, находящийся в каталоге, на ко-
SUSE Linux и Enterprise Server 10 и клиент для Windows мож- торый указывает переменная libexecdir. То есть в случае
но получить с [5]. В репозитарии Ubuntu также есть паке- с KUbuntu /usr/lib/amanda/ на taper.orig:
ты AMANDA, но на момент написания статьи это была бо-
лее ранняя версия 2.4.5p1. Также в репозитарии имеется $ sudo /usr/lib/amanda/taper /usr/lib/amanda/taper.orig
и еще один компонент будущей системы архивирования
CDRW-Taper [4], который представляет собой замену стан- Затем в этот же каталог необходимо поместить Perl-
дартному компоненту AMANDA – taper, делая возможным скрипт taper, а также файл taperlib.pm, а amlabel-cdrw – в ка-
запись резервных копий вместо ленты на носители СD-RW, талог, в котором находится файл из комплекта AMANDA
DVD+R/W или DVD-R/W. В документации AMANDA описа- amlabel. В нашем случае это /usr/sbin. В документации ска-
но, как использовать вместо ленты жесткий диск, но CDRW- зано, что следует заглянуть внутрь taperlib.pm и amlabel-cdrw
Taper также с этим справляется на отлично, к тому же при его и убедиться, все ли переменные соответствуют системно-
использовании не требуется никаких особых манипуляций. му окружению. В случае с Kubuntu ничего изменять не при-
Все это можно установить одной командой^ шлось. Единственное проверьте, чтобы каталог, в котором
лежит taperlib.pm, был виден в переменной Perl @INC. Пе-
$ sudo apt-get update ред установкой добавьте пользователя и группу, от имени
$ sudo apt-get install amanda-server cdrw-taper
которых будет работать AMANDA. Этот пользователь дол-
И если планируется резервировать информацию и сервера, жен также быть включенным в группу disk.
а также Samba-ресурсов, то добавляем и amanda-client.
Если планируется установка с исходных текстов, то в об- Файлы настроек AMANDA
щем случае никаких параметров задавать не надо, deb-па- Основной файл настроек называется amanda.conf, в нем
кет сервера AMANDA собран с такими параметрами: содержатся настройки задания. AMANDA будет его искать

№1, январь 2007 45


администрирование
в каталоге --sysconfdir=/etc, то есть /etc/amanda. В этом #tpchanger "no-changer"
# Интересная опция, позволяющая подменить или изменить
случае команду для резервирования amdump, да и осталь- # настройки ленточного накопителя (tape changer).
ные можно будет запускать без каких-либо дополнитель- # В каталоге /vat/lib/amanda/ доступно 13 обработчиков,
# например, chg-disk позволяет вместо ленты писать
ных параметров. Считается хорошим тоном для каждо- # на жесткий диск, но нам он сейчас не нужен.
го задания на резервирование создавать свой подката-
# Далее параметры идут специфично для CDRW-Taper
лог в /etc/amanda.
В Debian и дистрибутивах, от него произошедших, tapedev "/media/cdrom0"
# Механизм выбора ленты, но в нашем случае это каталог,
по умолчанию создается подкаталог /etc/amanda/DailySet1, # куда монтируется CD/DVD-устройство, совпадающий с /etc/fstab
содержащий примеры конфигурационных файлов. Его я
rawtapedev "/dev/hdc:0,0,0"
и буду использовать в примере. # Указывает на реальный файл устройства, в случае
Каждый подкаталог хранит настройки отдельного зада- # с CDRW-Taper, плюс номер устройства в понимании cdrecord,
# т.е. cdrecord -scanbus
ния, то есть в том случае, если у вас два стриммера, созда-
ются два каталога с настройками и так далее. К команде tapetype DVD
# Тип устройства, его описание дается в отдельной
в этом случае добавляется название каталога. Кроме не- # секции файла
го, в этом же каталоге находится файл disklist, в котором
labelstr "^local[0-9]*$"
указываются ресурсы, которые должны резервироваться # Регулярное выражение, соответствующее меткам, которыми
при выполнении этого задания, и файл tapelist с информа- # будут помечаться диски/ленты, т.е. в этом случае
# возможно 11 меток/дисков вида local, local0 – local9.
цией о лентах. Последний файл необходимо создать, за- # Обратите внимание, что в метке не допускаются пробелы,
полняется он автоматически или с помощью утилит amlabel # табуляция и некоторые другие символы
и amlabel-cdrw. diskdir "/var/cache/cdrw-taper "
# Каталог, куда будут складываться резервируемые копии файлов
$ sudo touch /etc/amanda/daily/tapelist
$ sudo chown backup:backup /etc/amanda/daily/tapelist disksize 10 GB
# Сколько места можно использовать в diskdir,
# лучше когда в него помещается вся информация dumpcycle,
# тогда резервные файлы можно будет хранить и там,
Конфигурационный файл amanda.conf # не удаляя
Рассмотрим пример файла /etc/amanda/DailySet1/amanda.conf infofile "/var/lib/amanda/DailySet1/curinfo"
применительно к использованию CDRW-Taper. # База имен файлов

logfile "/var/log/amanda/DailySet1/log"
org "DailySet1" # Журналы
# Название организации будет использовано в отчете,
# будет видно в поле «Subject:», поэтому есть смысл indexdir "/var/lib/amanda/DailySet1/index"
# проставить имя задания # Индексные файлы
mailto "grinder" # tapetypes
# Пользователь или адрес, куда будет отправлено # Устройства хранения информации, описывается скорость,
# e-mail-сообщение # размер блока и объем
dumpuser "backup" define tapetype HP-DAT {
# Пользователь, от имени которого будет выполняться задание comment "DAT tape drives"
length 1900 mbytes
inparallel 4 filemark 100 kbytes
# Максимальное количество параллельно резервируемых ресурсов, speed 500 kbytes
# максимальное число 63 может быть увеличено в параметре }
# MAX_DUMPERS в server-src/driverio.h
# Для DVD в документации ничего не сказано,
netusage 600 # я записал так
# Максимальная сетевая загрузка в Кбайт в сек.
define tapetype DVD {
dumpcycle 1 weeks comment "DVD-RW"
# Количество дней, через которое производится полное length 4700 mbytes
# резервирование, по умолчанию 10 дней, если установить speed 1385 kbytes
# в 0, то полное резервирование будет производиться }
# при каждом запуске

runspercycle 5
# Необязательный параметр показывает количество запусков Описания dumptype в amanda.conf
# amdump в одном dumpcycle, ведь в выходные программу
# резервирования запускать не обязательно Дальше в файле идут описания типов резервирования, ко-
торые будут использоваться в файле disklist. Каждое опи-
tapecycle 9 tapes
# Общее число лент, используемых при резервировании, сание может содержать до 23 параметров.
# в нашем случае это DVD-диски. На каждый день dumpcycle Привожу часть из них, чтобы показать некоторые воз-
# минимум один диск + резерв, чтобы не перекрывались
# до следующего полного копирования можности AMANDA:
bumpsize 20 MB
 auth – аутентификация по умолчанию bsd, возможны
# Минимальный порог для перехода на следующий инкрементный krb4, krb5 и ssh.
# уровень (по умолчанию 10 Мб), взамен возможно использование  comment – комментарий.
# bumppercent для указания размера в процентах
 comprate – степень сжатия, отдельно для полно-
bumpdays 1 го и для инкрементного. По умолчанию «comprate
# Позволяет устранить избыточность, минимальное количество
# дней для перехода на следующий инкрементный уровень, 0.50, 0.50», если второй цифры нет, то используется
# значение по умолчанию 2 дня первая.

46
администрирование
 compress – конкретизируются параметры сжатия. На- Например:
звания говорят сами за себя. Например, по умолчанию
используется client fast, есть none, server server best client1 //client1/backupc comp-user-tar
amandaserver //windows1/C$ comp-user-tar
и другие. amandaserver /home comp-user-tar
 program – программа для создания копии, dump по умол-
чанию, возможно GNUTAR. За создание архива ресурса //client1/backupc отвечает
 encrypt – шифрование файлов: none (умолчание), client, компьютер client1, именно к нему будет отправлен запрос
server. при запуске amdump. Архивирование //windows1/C$ и /home
 kencrypt – шифрование потока. будет производить сам сервер, поэтому на нем также дол-
 vexclude – список шаблонов файлов, которые не будут жен быть установлен клиент AMANDA.
резервироваться. Учтите, что такая запись работать не будет:
 index – создание индекса файлов.
 strategy – стратегия создания дампа: amandaserver /dev/hda5 comp-user-tar
 standard – первая версия полная, последующие ин-
крементные; Ошибка в журнале описана так:
 nofull – всегда изменения; sendsize[5573]: time 0.151: /bin/tar: hda9: Cannot chdir: No such
 noinc – всегда полный; file or directory
 skip – пропуск; sendsize[5573]: time 0.152: /bin/tar: Error is not recoverable:
exiting now
 incronly – только инкрементное, но в отличие от nofull
полная копия при первом запуске не создается. Описание типа comp-user-tar предполагает использова-
ние tar, а он работает только со смонтированными ресурса-
Названия заготовок также говорят сами за себя. ми. Замените на comp-user, который подразумевает dump,
или укажите вместо файла устройства /dev/hda5 точку мон-
define dumptype always-full { тирования. Для описания параметров доступа к Samba-ре-
comment "Full dump of this filesystem always"
options no-compress сурсам используется файл /etc/amandapass. В нем должно
priority high содержаться описание системы, пароль и опционально мо-
dumpcycle 0
maxcycle 0 жет быть указана рабочая группа. Примерно так:
}

define dumptype comp-user-tar { //windows1/C$ p@ssw0rd WORKGROUP


program "GNUTAR"
comment "partitions dumped with tar"
options compress-fast, index, exclude-list ↵ При стандартной (bsd) аутентификации доступа к UNIX-
"/etc/amanda/exclude.gtar" системам применяется файл amandahosts, который являет-
priority medium
} ся аналогом .rhosts только для AMANDA. По умолчанию этот
файл должен находиться в домашнем каталоге пользователя
define dumptype comp-user {
comment "Non-root partitions on reasonably fast machines" backup – ~backup/.amandahosts. Но в большинстве дистрибу-
options compress-fast тивов каталог пользователя AMANDA не создается, поэтому
priority medium
} можно использовать /etc/amandahosts. Он состоит из строк,
описывающих узлы и пользователя, который имеет к ним до-
ступ, с версии 2.5.1 добавился и третий параметр – имя сер-
Настройка ресурсов для архивирования виса. Так, на клиенте этот файл будет выглядеть так:
Ресурсы для архивирования описываются в другом файле –
disklist. Каждая запись состоит из трех полей. В первом по- amandaserver backup amdump
ле – имя узла, отвечающего за создание архива, причем
рекомендовано применение полного имени. Если архиви- На сервере:
руется ресурс Samba, то здесь указывают узел, на котором
установлен клиент AMANDA, работающий с smbclient. Ес- client1 backup amindexd amidxtaped
amandaserver backup amdump
ли это локальная система, также необходимо использовать # это для работы клиента на этом же узле
реальное имя системы, отличное от localhost.
Во втором поле – архивируемый ресурс, здесь может Если использовать в последнем примере вместо име-
использоваться имя раздела диска (hda3), имя устройс- ни узла localhost.
тва (/dev/hda3), но лучше использовать имена каталогов
файловой системы (/home), так как при переконфигура- localhost backup amdump
ции диска не потребуется изменение настроек AMANDA
и с tar проблем не будет. В случае сетевого UNIX/Samba То клиент, запущенный на этом же компьютере, работать
ресурса следует использовать схему //имя_системы/ре- откажется, а в журнале появится такая запись:
сурс – //host1/C$.
И последнее поле – тип архивирования, взятый с amanda. amandad: time 0.003: bsd security: remote host localhost user
backup local user backup
conf, его название должно быть правильным, иначе вы по- amandad: time 0.029: check failed: [access as backup not allowed
лучите ошибку. from backup@localhost] amandahostsauth failed

№1, январь 2007 47


администрирование
Владельцем файлов amandahosts и amandapass должен Настройка CDRW-Taper
быть пользователь backup, права доступа устанавливают- Серверы уже работают и могут выполнять свою функцию,
ся как 0600 или лучше 0400. остался CDRW-Taper. Его конфигурационный файл назы-
вается /etc/cdrw-taper.conf, хотя можно обойтись и без не-
Настройка сетевых сервисов го, указав все настройки непосредственно в taperlib.pm
Теперь осталось настроить сетевые сервисы. В первую оче- и amlabel-cdrw. Но это неправильно.
редь убеждаемся, что в файле /etc/services они записаны.
# Местонахождение конфигурационных файлов AMANDA
$CONFIG_ROOT = "/etc/amanda";
amanda 10080/udp # Каталог, в котором создаются промежуточные файлы:
amandaidx 10082/tcp # diskdir в amanda.conf
amidxtape 10083/tcp $DUMP_DIR = "/var/cache/cdrw-taper";
# 1 – удалять или 0 – оставлять промежуточные файлы
Далее необходимо настроить работу демонов, от- # после записи на CD/DVD-диск
$DELETE_DIRS = 0;
вечающих за архивирование, через xinetd. На клиенте
это amandad, на сервере настраивается запуск демонов # При 1 использование не перезаписываемого диска CD/DVD-R
$WRITE_NON_ERASABLE = 0;
amindexd, amidxtaped, отвечающих за создание индексов
и работу с устройствами хранения. Для восстановления ин- # Устройство CD/DVD-RW
# $CD_DEVICE_RE = "/dev/s(cd|g)\\d+:?.*";
формации потребуется и работа amandad на сервере. За- # $CD_DEVICE_RE = "^/dev/(ide|scsi)/host\\d/bus\\ ↵
носим в файл /etc/xinetd либо в отдельные файлы в катало- d/target\\d/lun\\d/(cd|generic):";
$CD_DEVICE_RE = "/dev/hdc";
ге /etc/xinet.d/ информацию о сервисах. Здесь также, начи- # Размер блока
ная с версии 2.5.1, есть изменения, направленные на уси- $BLOCKSIZE = 2048;
# Блоков в устройстве
ление безопасности. # (650MB CDRW: 650 MB = 650 * 1024k / 2k = 332800)
Так, на клиенте файл должен иметь примерно такой #$MEDIABLOCKS = 332800;
# (700MB CD-RW: 700 MB = 700 * 1024k / 2k = 358400)
вид: $MEDIABLOCKS = 358400;
# Blocks per media (DVD+RW: 4700 MB = 4700 * 1000 * ↵
1000 / 2k = 2294921)
service amanda $MEDIABLOCKS = 2294921;
{
only_from = amandaserver # добавилось в 2.5.1 # Названия исполняемых файлов
socket_type = dgram $MOUNT = "mount";
protocol = udp $UMOUNT = "umount";
wait = yes $CDRECORD = "cdrecord";
user = backup $MKISOFS = "mkisofs";
group = backup $SENDMAIL = "/usr/sbin/sendmail";
groups = yes $GROWISOFS = "growisofs";
server = /usr/lib/amanda/amandad $DVDRWMEDIAINFO = "dvd+rw-mediainfo";
server_args = -auth=bsd amdump # Указание, что все загружено успешно
disable = no 1;
}
Создаем каталог для промежуточных файлов /var/cache/
На сервере параметр server_args должен дополнительно cdrw-taper.
включать amindexd amidxtaped, а only_from – описания всех
клиентов. Привожу пример для bsdtcp аутентификации. $ sudo mkdir /var/cache/cdrw-taper
$ sudo chown backup:backup /var/cache/cdrw-taper

service amanda
{
only_from = client1 client2 amandaserver Как проверить настройки
socket_type = stream В комплекте AMANDA идет несколько утилит, позволяющих
protocol = tcp
wait = no проверить настройки и работу отдельных компонентов. На-
user = amandabackup пример, запуск amcheck без параметров позволит прове-
group = disk
groups = yes рить настройки сервера и доступность клиентских систем,
server = /usr/lib/amanda/amandad а также ресурсов на них. Выполняться они должны от име-
server_args = -auth=bsdtcp amdump amindexd amidxtaped
disable = no ни пользователя backup.
}
$ sudo su backup -c "amcheck DailySet1"
Кстати, при установке с помощью пакетов был создан Amanda Tape Server Host Check
конфигурационный файл для inetd с необходимыми запи- -----------------------------
Holding disk /var/cache/cdrw-taper: 10952816 kB disk space
сями. Полный комплект. Но при попытке заставить перечи- available, that's plenty
тать xinetd свои конфигурационные файлы «/etc/init.d/xinetd ERROR: /media/cdrom0: Permission denied
reload» выяснилось, что хотя в системе автоматически со- (expecting a new tape)
NOTE: skipping tape-writable test
зданы все полагающиеся каталоги и файлы как для xinetd, Server check took 0.004 seconds
так и inetd, но они сами в системе не установлены. Стран-
но, что при построении зависимостей об этом не позабо- Amanda Backup Client Hosts Check
--------------------------------
тились. Поэтому в Ubuntu xinetd необходимо проверить его ERROR: grinder: [Can't open exclude file '/etc/amanda/exclude.gtar':
наличие и при отсутствии – установить. No such file or directory]
С AMANDA закончили. Client check: 1 host checked in 0.148 seconds, 1 problem found

48
администрирование
Первая ошибка «ERROR: /media/cdrom0: Permission $ sudo /usr/sbin/amlabel-cdrw DailySet1 local1
denied» – результат адаптации AMANDA и ее утилит под WARNING: /dev/hdc already carries isofs!
работу со стриммерами. Поэтому с СD/DVD-дисками неко- About to execute 'mkisofs -J -R -pad -quiet /tmp/amlabel-cdrw.6763
торые тесты не проходят. На нее внимание можно не обра- | builtin_dd of=/dev/hdc obs=32k seek=0'
/dev/hdc: "Current Write Speed" is 2.5x1385KBps.
щать, система работала нормально, хотя ошибка постоянно builtin_dd: 192*2KB out @ average 0.0x1385KBps
выдавалась. Файл /etc/amanda/exclude.gtar описан в прави- /dev/hdc: flushing cache
/dev/hdc: stopping de-icing
ле архивирования. Даже если не планируется его исполь- /dev/hdc: writing lead-out
зование, лучше его создать пустым, иначе в журналах она /dev/hdc: reloading tray
будет фигурировать постоянно. Запись «Holding disk» гово-
рит о доступном месте в каталоге (разделе), в который бу- На диске сейчас записан единственный файл AMANDA_
дут складываться промежуточные файлы. LABEL, содержащий строку local1. Повторяем эту операцию
После редактирования файлов конфигурации следу- со всеми 9 дисками, меняя метку. Вся информация о дис-
ет проверять права доступа, например, такая ошибка го- ках будет заноситься в файл tapelist. После первого диска
ворит о том, что процесс не может получить доступ к фай- запись будет такая:
лу для записи:
00000000 local1 reuse
ERROR: tape list /etc/amanda/DailySet1/tapelist: not writable
Первое задание желательно запустить вручную и оце-
Полезная утилита amadmin обладает еще большими нить результат и работу всех компонентов.
возможностями. С ее помощью вы сможете проверить на-
стройки, руководить выполнением заданий и резервиро- $ sudo su backup -c "amdump DailySet1"
ванием отдельных ресурсов, принудительно устанавливать
уровень архивирования, устанавливать ленты и проверять После запуска этой команды в каталоге /var/cache/
следующую по списку ленту, просматривать выполненные cdrw-taper должен появиться подкаталог local1 с такой
задания, импортировать и экспортировать базу с других структурой файлов внутри:
серверов AMANDA. Вот так можно вывести все настройки,
в том числе и используемые по умолчанию. $ sudo ls -al /var/cache/cdrw-taper/local1
total 138260
$ sudo su backup -c " amadmin DailySet1 disklist" drwx------ 2 backup backup 2048 2006-11-30 22:12 .
drwxr-xr-x 7 root root 192 2006-10-28 19:23 ..
line 18: -rw------- 1 backup backup 7 2006-11-30 22:12 AMANDA_LABEL
-rw------- 1 backup backup 141575082 2006-11-30 22:12 grinder.hda9.0.dump.gz
host grinder: -rw------- 1 backup backup 191 2006-11-30 22:12 grinder.hda9.0.info
interface default
disk /media/other:
program "GNUTAR" Последовательно будут появляться и другие подкатало-
exclude list "/etc/amanda/exclude.gtar"
priority 1
ги, но опять же всплыл еще один нюанс Ubuntu. Несмотря
dumpcycle 28 на то что dump упоминается в AMANDA как основная ути-
maxdumps 1 лита, она также не была включена в зависимости и не ус-
maxpromoteday 10000
bumpsize 15360 танавливается вместе с AMANDA. Результат такой:
bumpdays 1
bumpmult 4.000000 sendsize[12307]: time 0.006: running "/sbin/dump 0Ssf 1048576 - /dev/hda9"
strategy STANDARD sendsize[12307]: time 0.010: exec /sbin/dump failed or no dump program
estimate CLIENT available: No such file or directory
compress CLIENT FAST sendsize: time 0.010: pid 12309 finish time Thu Nov 30 21:16:59 2006
comprate 0.50 0.50 sendsize[12307]: time 0.011: running /usr/lib/amanda/killpgrp
auth BSD
kencrypt NO Пришлось отдельно устанавливать и dump.
holdingdisk YES
record YES
index YES $ sudo apt-get install dump
skip-incr NO
skip-full NO
По окончании создания архива, создается iso-об-
раз, который автоматически записывается на DVD-диск.
Первое задание Если объем архива превышает для установленного
Перед первым архивированием необходимо разметить DVD- в $MEDIABLOCKS типа дисков, будет создан следующий
диски в количестве, равном tapecycle. В AMANDA для этих подкаталог. И так далее. Даже если при предыдущем ар-
целей используется утилита amlabel, но она CD-диски раз- хивировании не был занят весь объем, то для следующе-
мечать не умеет. В CDRW-Taper для разметки есть своя го задания будет задействован диск уже с другой меткой.
утилита amlabel-cdrw. В качестве параметра она принима- Текущий затребуется для перезаписи, только когда прой-
ет название задания и метки соответствующей labelstr. Ес- дет полный круг. Может возникнуть ситуация, когда тре-
ли попробовать другую метку, получите: буется перезаписать архив на болванку вручную. Сделать
это просто. Например, так можно повторно записать архи-
$ sudo /usr/sbin/amlabel-cdrw DailySet1 metka вы с метками local1 и local2.
taper: ERROR: Label metka does not match labelstring
"^local[0-9]*$". $ sudo /usr/lib/amanda/taper DailySet1 -flush local1 local2

№1, январь 2007 49


администрирование
taper: pid 15001 executable taper version cdrw-taper-0.4 Trying disk / ...
… Trying disk rootfs ...
Flushed local1. Can't determine disk and mount point from $CWD '/home/grinder'
Done.
amrecover> sethost localhost
# Выбираем узел, данные с которого собираемся восстанавливать
Обратите внимание, диски должны вставляться в такой
же последовательности, как при вызове команды. Иначе 501 Host localhost is not in your disklist.
вы получите ошибку. Trying host localhost ...
501 Host localhost is not in your disklist.
Trying host grinder ...
$ sudo /usr/lib/amanda/taper DailySet1 -flush local local1 200 Dump host set to grinder.

taper: pid 14954 executable taper version cdrw-taper-0.3 # Записи localhost нет в disklist, но amrecover разобрался
ERROR taper label on media in /dev/hdc:0,0,0 is not local amrecover> setdisk /home
Cannot load media with label local!
200 Disk set to /home.
Когда задание выполнено успешно, автоматизируем
его запуск через cron. # Выбираем восстанавливаемый раздел с узла. Если перейти
# каталог, занесенный в disklist перед запуском amrecover,
# «cd /home», то раздел будет выбран автоматически
$ sudo crontab -u backup -e amrecover> ls
0 10 * * 1-5 /usr/sbin/amcheck -m DailySet1
45 0 * * 2-6 /usr/sbin/amdump DailySet1 2006-12-02 .
2006-12-02 test_file

# Смотрим, что есть


Восстановление информации amrecover> add test_file
Для восстановления информации служит утилита amrecover,
Added / add test_file
с ее помощью можно восстанавливать как отдельные фай-
лы, так и целые разделы. По характеру работы amrecover на- # Добавляем файл в список восстановления, чтобы добавить
поминает консольный ftp-клиент. Восстанавливать инфор- # все, ставим точку восстанавливаем
amrecover> extract
мацию может только пользователь с правами администра-
тора, для которого в файле amandahostsauth также должна Extracting files from holding disk on host localhost.
существовать запись. Иначе: The following files are needed: /var/cache/cdrw-taper/
20061202142102/grinder._media_other.0

$ sudo amrecover Restoring files into directory /home


Continue [?/Y/n]? y
Password:
AMRECOVER Version 2.4.5p1. Contacting server on localhost ... Extracting from file /var/cache/cdrw-taper/20061202142102/grinder._
220 grinder AMANDA index server (2.4.5p1) ready. media_other.0
500 Access not allowed: [access as backup not allowed from ./ test_file
root@localhost] amandahostsauth failed
amrecover> quit
При попытке зайти с правами backup, получим 200 Good bye.
«amrecover must be run by root». Добавляем следующую стро-
ку в файл /etc/ amandahostsauth: В данном случае файл был найден на жестком диске,
иначе вас попросят вставить CD/DVD с нужной меткой.
amandaserver root amindexd amidxtaped
Итог
Но для восстановления можно использовать запись Как видите – AMANDA мощный и гибкий инструмент, кото-
с localhost: рый позволит вам выполнить любую задачу по резервиро-
ванию важной информации. Поддержка разных платформ
localhost root amindexd amidxtaped только добавляет ему преимуществ. Также отмечу отлич-
ную документацию, из которой вы подробно узнаете о ра-
Предположим, необходимо восстановить один из фай- боте всех компонентов AMANDA. Кстати, в файле using.txt
лов, ранее находящихся в каталоге /home. По назначению найдете и главу из книги Джона Джексона (John R. Jackson)
используемых команд будут даны комментарии, они выде- «UNIX Backup and Recovery», которая посвящена AMANDA
ленны курсивом. (http://www.backupcentral.com/amanda.html).

$ sudo amrecover DailySet1 1. Сайт проекта AMANDA – http://www.amanda.org.


AMRECOVER Version 2.4.5p1. Contacting server on localhost ... 2. Страница на Sourceforge – http://sourceforge.net/projects/
220 grinder AMANDA index server (2.5.1p1) ready. amanda.
200 Access OK
Setting restore date to today (2006-12-07) 3. Яремчук С. Обзор систем резервного копирования. //Систем-
200 Working date set to 2006-12-07. ный администратор, № 9, 2006 г. – 22-29 с.
Scanning /var/cache/cdrw-taper...
20061202142102: found Amanda directory.
4. Сайт проекта Amanda CDRW-Taper – http://www.tivano.de/
# Это были найдены резервные файлы не удаленные с диска software/amanda.
200 Config set to DailySet1. 5. Страница для закачки исходных текстов и прекомпилирован-
200 Dump host set to grinder.
ных пакетов – http://www.zmanda.com/downloads.html.

50
bugtraq

Множественные уязвимости
в Novell NetMail NMAP/IMAP Множественные уязвимости
Программа: Novell NetMail 3.5.2, возможно, более ранние в Sun Java JRE
версии. Программа: Sun Java JDK 1.5.x, Sun Java JRE 1.5.x / 5.x,
Опасность: Критическая. Sun Java JRE 1.4.x, Sun Java JRE 1.3.x, Sun Java SDK 1.4.x.
Описание: 1. Уязвимость существует из-за ошибки про- Sun Java SDK 1.3.x.
верки границ данных в службе NMAP (Network Messaging Опасность: Высокая.
Application Protocol) при обработке STOR-команд. Удален- Описание: 1. Две ошибки обнаружены в Java Runtime
ный пользователь может с помощью слишком длинного Environment, которые могут позволить недоверенному ап-
аргумента команды вызвать переполнение буфера и вы- плету прочитать и записать данные на систему или выпол-
полнить произвольный код на целевой системе. Для удач- нить произвольные приложения.
ной эксплуатации уязвимости требуется наличие валид- 2. Две ошибки, относящиеся к сериализации в Java
ной учетной записи. Runtime Environment, могут позволить недоверенному ап-
2. Уязвимость существует из-за ошибки проверки плету повысить свои привилегии.
границ данных в службе IMAP при обработке команды URL производителя: www.sun.com.
SUBSCRIBE. Удаленный пользователь может вызвать пе- Решение: Установите исправление с сайта производи-
реполнение буфера и выполнить произвольный код на це- теля.
левой системе.
3. Неизвестная ошибка обнаружена в службе IMAP. Уда-
ленный авторизованный пользователь может вызвать от- Переполнение буфера в службе POP
каз в обслуживании службы. в MailEnable
4. Уязвимость существует из-за ошибки проверки гра- Программа: MailEnable Professional 2.35, возможно, более
ниц данных в службе IMAP. Удаленный пользователь может ранние версии; MailEnable Enterprise 2.35, возможно, бо-
вызвать переполнение динамической памяти и выполнить лее ранние версии.
произвольный код на целевой системе. Опасность: Высокая.
5. Уязвимость существует из-за ошибки проверки гра- Описание: Уязвимость существует из-за ошибки провер-
ниц данных при обработке команды APPEND в службе IMAP. ки границ данных в службе POP при обработке аргументов
Удаленный авторизованный пользователь может с помо- команды PASS. Удаленный пользователь может с помощью
щью слишком длинного аргумента команды вызвать пе- слишком длиной строки вызвать переполнение стека и вы-
реполнение стека и выполнить произвольный код на це- полнить произвольный код на целевой системе.
левой системе. URL производителя: www.mailenable.com.
URL производителя: www.novell.com/products/netmail. Решение: Установите исправление с сайта производи-
Решение: Установите исправление с сайта производи- теля.
теля.

Уязвимость при обработке SIT- Переполнение буфера в службе SNMP


и CPIO-архивов в Sophos Anti-Virus в Microsoft Windows
Программа: Sophos Anti-Virus for Windows 6.x, Sophos Anti- Программа: Microsoft Windows Server 2003 Enterprise Edition,
Virus 3.x, Sophos Anti-Virus 4.x, Sophos Anti-Virus 5.x. Microsoft Windows Server 2003 Datacenter Edition, Microsoft
Опасность: Высокая. Windows XP Professional, Microsoft Windows XP Home
Описание: 1. Уязвимость существует из-за ошибки про- Edition, Microsoft Windows 2000 Server, Microsoft Windows
верки границ данных в veex.dll при обработке CPIO-архи- 2000 Professional, Microsoft Windows 2000 Datacenter Server,
вов. Удаленный пользователь может с помощью специаль- Microsoft Windows 2000 Advanced Server, Microsoft Windows
но сформированного CPIO-архива, содержащего слиш- Server 2003 Standard Edition, Microsoft Windows Server 2003
ком длинное не терминированное имя файла, вызвать пе- Web Edition.
реполнение стека и выполнить произвольный код на целе- Опасность: Высокая.
вой системе. Описание: Уязвимость существует из-за ошибки провер-
2. Уязвимость существует из-за ошибки проверки гра- ки границ данных в службе SNMP. Удаленный пользова-
ниц данных в veex.dll при обработке SIT-архивов. Удален- тель может с помощью специально сформированного со-
ный пользователь может с помощью специально сфор- общения вызвать переполнение буфера и выполнить про-
мированного SIT-архива, содержащего слишком длинное извольный код на целевой системе.
не терминированное имя файла, вызвать переполнение ди- URL производителя: www.microsoft.com.
намической памяти и выполнить произвольный код на це- Решение: Установите исправление с сайта производи-
левой системе. теля.
URL производителя: www.sophos.com/products/software/
antivirus. Составил Александр Антипов
Решение: Установите исправление с сайта производи-
теля.

№1, январь 2007 51


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

Устанавливаем и обновляем программное


обеспечение в системе FreeBSD
Что такое пакет? Версии пакетов и портов знак подчеркивания и число – это по-
Что такое порт? Вы можете думать о пакетах как о кон- казывает на версию изменения порта,
В ОС FreeBSD существует два механиз- кретной версии программы, а о порте – т.е. если версия программного обес-
ма для установки программного обеспе- как об описании, как создать версию печения не изменилась, а в порт были
чения – пакеты и порты. Пакеты – зара- пакета. Через некоторое время порт внесены изменения, чтобы обеспечить
нее скомпилированные файлы с бинар- может быть обновлен и он уже будет лучшую интеграцию данного ПО в сис-
ными файлами. Они не требуют ком- генерировать пакет с другим номером тему FreeBSD (lynx-2.8.5_2 – текстовый
пиляции из исходных файлов и более версии. То есть mysql51-server – это на- браузер lynx версии 2.8.5, в порт кото-
просты в установке. Пакеты неудобны звание порта с версией сервера MySQL рого 2 раза вносились изменения). Ког-
только тем, что скомпилированы с коп- 5.1.x, а пакет mysql-server-5.1.12 – это да меняется (повышается) версия про-
ределённым набором опций по умолча- уже скомпилированные бинарные фай- граммного обеспечения, версия порта
нию, под конкретную платформу, а вам лы сервера MySQL версии 5.1.12 . Иног- сбрасывается и не пишется до перво-
для конкретной задачи нужны допол- да после номера версии добавляется го обновления порта.
нительные опции. Порты предоставля-
ют автоматизированный механизм для
установки программ из исходных фай- Как установить пакет? Если пакета нет на диске или вы хо-
лов – начиная с получения (скачивания) Для установки пакетов можно ис- тите получить последнюю версию па-
исходных файлов, изменения исходных пользовать команду sysinstall (меню кета, то можно попробовать команду:
файлов для успешной компиляции про- «Configure», подменю «Packages»), од-
pkg_add -rv имя_порта
граммы для системы FreeBSD и меха- нако это не даст вам навыков по ус-
низм инсталляции/деинсталляции ПО. тановке пакетов вручную. Из коман- Скажем, для установки веб-сер-
дной строки пакеты устанавливаются вера Apache версии 1.3.x можно на-
при помощи команды pkg_add. Наибо- брать команду:
Какое программное лее часто используемые пакеты пос-
pkg_add -rv apache13
обеспечение готово тавляются на самом диске FreeBSD
для использования? в директории packages. Для их ус- которая обратится к серверу FreeBSD
Посмотреть список программного тановки достаточно смонтрировать и сама скачает пакет, подходящий
обеспечения, перенесенного на сис- CD-диск (команда «mount /cdrom») для вашей версии FreeBSD, во времен-
тему FreeBSD, вы можете по адресу и выполнить команду: ную директорию и установит его. Если
http://www.freebsd.org/ports. Вы суме- pkg_add /cdrom/packages/All/ ↵ пакет для своей работы требует допол-
ете узнать также точное название па- имя_пакета-версия.tgz нительные библиотеки или другие па-
кета, который вас интересует. Если вы не знаете точного имени кеты, то команда «pkg_add» скачает
и версии пакета, то его можно узнать и их тоже. После установки все вре-
при помощи команды: менные файлы удаляются.
Удаление установленного ПО ls /cdrom/packages/All/имя_пакета*
Команда:
Для удаления установленного ПО не-
pkg_add -K -rv apache13
обходимо использовать команду: Если вы скачали пакет из сети,
то он устанавливается аналогично: не только скачает и установит порт,
pkg_delete имя_пакета
но и сохранит скачанный файл пакета
pkg_add имя_файла
которая корректно удалит установ- в текущей директории.
ленные пакетом файлы. Пакеты, ус-
тановленные как зависимости, уда-
лены не будут. Сохранение pkg_create -b имя_пакета-версия
установленных пакетов создаст в текущей директории пакет,
Если вы установили программное который можно устанавливать при по-
Какой пакет установил обеспечение из пакетов или при по- мощи команды «pkg_add». Это особен-
данный файл? мощи портов, то вы можете всегда со- но удобно, когда вы сконфигурирова-
Узнать, какой пакет установил данный здать пакет для переноса ПО на дру- ли ПО, установленное из портов для
файл, можно при помощи команды: гую систему или для удобства установ- своих задач, и хотите создать пакет,
ки в следующий раз. который можно использовать в даль-
pkg_info -W абсолютное_имя_файла
Команда: нейшем.

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

Обновление портов cvsup/standard-supfile


PORTSSUPFILE=/usr/share/examples/ ↵
Просмотр списка при помощи системы cvsup/ports-supfile
установленных пакетов CVSup
Для просмотра можно использовать Для использования системы CVSup Если у вас FreeBSD версии 6.0 или
команду «pkg_info», которая выводит необходимо добавить несколько строк ниже, то у вас должна быть строка:
название пакета, версию и короткое в файл /etc/make.conf (пример при-
SUP=/usr/local/bin/cvsup
описание. Другой способ – просто пос-
веденной конфигурации есть в фай-
мотреть список пакетов: ле /usr/share/examples/etc/make.conf). вместо указанной:
Эти строчки в /etc/make.conf конфигу-
ls /var/db/pkg SUP=/usr/bin/csup
рируют обновление коллекции портов
В директории /var/db/pkg команды через протокол CVSup, который пере- и для обновления портов вам необходи-
pkg* хранят базу всех установленных дает только изменения, произошед- мо поставить пакет cvsup при помощи:
пакетов. Посмотреть детальную ин- шие в коллекции портов, что сущес-
pkg_add -rv cvsup-without-gui
формацию по одному пакету можно твенно меньше, чем скачивание пол-
при помощи команды: ной коллекции. Вам потребуется либо После того как вы добавили эти стро-
прямое соединение с Интернетом, ли- ки в /etc/make.conf, необходимо перей-
pkg_info имя_пакета
бо с трансляцией адресов (NAT). Про- ти в директорию /usr/ports и запустить
скажем: токол CVSup не может работать через команду:
HTTP-прокси.
pkg_info xorg-6.9.0 make update
SUP_UPDATE=YES
SUP=/usr/bin/csup После успешного завершения у вас
SUPFLAGS=-g -L 2 -z
SUPHOST=cvsup.uk.FreeBSD.org будет коллекция портов с последними
SUPFILE=/usr/share/examples/ ↵ обновлениями.
Работа с портами
Коллекция всех портов находится
в директории /usr/ports. Если у вас Автоматизация установки обновит сам интерпретатор php и все
она не установлена, то вы можете ус- и обновления портов его установленные расширения.
тановить ее при помощи команды Для автоматизации процесса установ- Именно для этого случая нам бы-
sysinstall (меню «Configure», подме- ки и обновления портов вам потребу- ло нужно сохранить конфигурацию
ню «Distributions», пункт меню «ports»). ется пакет portupgrade. при помощи «make config» или за-
Другие способы – скачать всю коллек- Его можно установить либо из пор- писывая ее в файл /etc/make.conf.
цию портов одним файлом, так же как та /usr/ports/sysutils/portupgrade, либо Portupgrade сам скачает новые вер-
и при обновлениях, или воспользо- при помощи команды: сии исходных файлов, сконфигури-
ваться утилитой portsnap. рует их с теми опциями, которые бы-
pkg_add -rv portupgrade
ли запомнены, сделает резервную ко-
Для обновления ПО сперва нужно пию старого пакета, удалит старую
обновить коллекцию портов (как это версию пакета, установит новую. Ес-
Обновление коллекции делать, описано выше). После это- ли этот процесс завершился успешно,
портов го вы можете инсталлировать и об- то копия старого пакета будет удалена,
Коллекцию портов необходимо обнов- новлять порты при помощи следую- если нет, то portupgrade установит ее
лять время от времени, если вы хоти- щих команд: обратно. Порты в FreeBSD разрабаты-
те отслеживать последние версии про- portinstall имя_порта
ваются так, чтобы при удалении порта
грамм, доступные для системы FreeBSD. не затрагивать файлы конфигурации.
В частности, это нужно для получения скачать исходные файлы, скомпилиро- Таким образом, ваши старые файлы
обновлений, связанных с безопаснос- вать, установить данный порт и очис- конфигурации останутся неизменны-
тью ПО, – в новых версиях программ тить рабочую директорию. ми. Иногда это может привести к про-
бывают исправлены ошибки. Есть не- блемам, и файлы конфигурации нужно
portupgrade имя_порта
сколько способов обновить коллекцию исправлять для совместимости с новой
портов – скачать полностью новую кол- обновить порт по последней версии. версией установленного ПО.
лекцию портов (на страничке http://www. При этом не нужно указывать версию
portupgrade -R 'имя_порта'
freebsd.org/ru/ports линк «Сгрузите gzip- установленного пакета, а нужно прос-
архив») и распаковать в директорию то указать имя порта, скажем: обновит не только порт, но и его зави-
/usr/ports. Это самый простой способ, симости, которые необходимы для его
portupgrade 'имя_порта*'
но и самый требовательный к трафи- работы.
ку – каждый раз вы будете скачивать обновить все порты начинающиеся
portupgrade -a
файл размером где-то в 35 Мб. с данного префикса, скажем:
обновит все установленные в систе-
portupgrade 'php5*'
ме пакеты.

№1, январь 2007 53


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

Установки ПО make -DWITHOUT_X11=YES Обновление портов


при помощи портов то есть при помощи флага -Dимя_ при помощи portsnap
Для установки порта необходимо пе- опции= значение. Если вы хоти- Если у вас система FreeBSD 6.0 и вы-
рейти в его директорию (скажем, те сохранить эти опции, чтоб они ше или 5.5 и выше, то в базовой сис-
«cd /usr/ports/lang/php4» – для уста- использовались в дальнейшем теме есть утилита portsnap, кото-
новки языка PHP). Имя порта можно при обновлениях, откройте файл рая облегчает обновление коллек-
узнать на сайте http://www.freebsd.org/ /etc/make.conf и допишите их туда ции портов. В первый раз команда
ports либо перейти в директорию /usr/ в виде опция=значение (т.е., ска- «portsnap fetch» скачивает сжатую вер-
ports (командой «cd /usr/ports») и дать жем, WITHOUT_X11=YES). Эти оп- сию коллекции портов и сохраняет ее
команду: ции будут применяться при компи- в /var/db/portsnap. В последующие ра-
ляции всех портов. зы команда «portsnap fetch» скачивает
make search key=ключевое_слово
 make all – то же самое, что и коман- сжатые обновления для этого файла,
Например: да make без аргументов. что использует существенно меньший
make search key=licq
 make install – устанавливает ском- трафик, чем полное скачивание кол-
пилированный порт. лекции портов и даже обновление при
для поиска всех портов, связанных  make clean – очищает директорию помощи CVSup. Если у вас нет распа-
с ICQ клиентом licq. порта от рабочих файлов. кованной коллекции портов в /usr/ports,
Возможные операции для компи-  make distclean – аналогично make то ее можно создать при помощи ко-
ляции порта (должны выполнятся в ди- clean, но также стирает скачанные манды «portsnap extract». Для обновле-
ректории порта – то есть /usr/ports/lang/ исходные файлы. ния распакованной коллекции портов,
php4 в нашем случае):  make deinstall – удаляет инсталли- после того как portsnap скачал сжа-
 make config – запускает конфигу- рованную версию порта. тые изменения, используется коман-
ратор, если данный порт имеет диа-  make package – создает пакет да «portsnap update».
логовый текстовый интерфейс кон- для данной версии ПО. Эта коман- То есть в первый раз вы должны вы-
фигурации. Выбранная конфигура- да подразумевает, что ПО установ- полнить команды:
ция будет использована и в даль- лено на жестком диске, в против-
portsnap fetch; portsnap extract
нейшем при обновлении данного ном случае она выполняет «make
порта. install», после чего создает пакет. а в последующие разы:
 make fetch – только скачивает не-
portsnap fetch; portsnap update
обходимые файлы, но не компили- На стадии компиляции и установ-
рует порт. Исходные файлы пор- ки порт может автоматически уста- Можно указать командам «portsnap
тов скачиваются в директорию новить другие порты, необходимые extract» и «portsnap update», чтоб они
/usr/ports/distfiles. для его работы. работали не со всей коллекцией пор-
 make – скачивает и компилирует Разные опции команды make мож- тов, а только с ее частью. Так:
порт. Если порт имеет опции, кото- но комбинировать друг с другом,
portsnap update databases/mysql
рые могут быть указаны в коман- т.е. «make install clean» приведет к ска-
дной строке, он сообщит об этом чиванию исходных текстов, компиля- обновит только порты в директории
до начала процесса компиляции. ции, установке порта и очистке дирек- databases, имя которых начинается
В командной строке опции зада- тории порта от рабочих файлов. на mysql.
ются как:

Другие команды удалить старые исходные файлы пор- или сразу удалить несколько портов
для работы с портами тов. из системы (по шаблону).
pkg_which имя_файла portsclean -DD pkg_deinstall -r имя_порта

покажет пакет, который установил удалить все исходные файлы пор- удалить порт и все порты, которые
на файловую систему данный файл. тов, которые не установлены в дан- требуют его в качестве зависимости
ный момент. (dependency).
portsclean
pkg_version pkg_deinstall -R имя_порта
позволяет почистить /usr/ports от ста-
рых рабочих директорий, устаревших после обновления коллекции портов удалить порт и все порты, которые
исходных файлов и т. д. показывает, какие имеются более но- он требует в качестве зависимости
вые версии и требуются обновления. (dependency).
portsclean -C
pkg_deinstall 'имя_порта'
очистить рабочие директории. // или Гаспар Чилингаров
pkg_deinstall 'имя_porta*'
portsclean -D
позволяет удалить порт из системы

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

Unionfs во FreeBSD:
разбираемся в текущей
реализации

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

56
администрирование
Про гибкость, vnode на файловой системе nullfs. Она позво-
и файловые системы ляет монтировать каталог как «обыч-
Как известно, на «физическом» уров- ную» файловую систему (в частнос-
не файлы в файловой системе ОС се- ти, задавать опции монтирования, та-
мейства UNIX определяются так назы- кие как «ro»). С точки зрения рассмот-
ваемыми индексными узлами (inode), ренной выше схемы, nullfs реализу-
которые хранят информацию об этих ется очень просто – это должен быть,
файлах. В первоначальных реализа- по сути, просто «прозрачный» слой
циях операционных систем файловые vnode. То есть запросы на поиск объ-
объекты, с которыми работала сис- екта должны прозрачно передавать-
Рисунок 1. Работа файловой системы
тема, непосредственно сопоставля- ся на нижележащий уровень, ответы nullfs
лись с inode. также «транзитом» следовать обрат-
Со временем потребность в более но (см. рис. 1). вать на удаление файла или каталога
гибком подходе, который позволил бы В принципе, можно сказать, что всё, из «общей» папки? Можно ли исполь-
не переписывать каждый раз полови- что делает nullfs, – это предоставля- зовать в качестве одного из каталогов
ну операционной системы, чтобы на- ет доступ к «чистой» файловой систе- то, что смонтировано только для чте-
учить её работать с очередной фай- ме через дополнительную точку мон- ния (например, файловую иерархию
ловой системой, породила промежу- тирования. на CD-диске)? И в каком из каталогов
точный уровень между ядром операци- физически создавать новые файлы?
онной системы и физическим разме- Unionfs: теория Посмотрим, как это задумано на дан-
щением данных на носителе – интер- Файловая система unionfs разраба- ный момент во FreeBSD.
фейс vnode. То есть операционная сис- тывалась как средство объединения В реализации FreeBSD unionfs «на-
тема стала «общаться» с интерфей- различных файловых систем в единое кладывает» один каталог на другой,
сом vnode, который уже, в свою оче- пространство имён, чтобы они воспри- руководствуясь следующими принци-
редь, преобразовывал запросы при- нимались как одно целое. пами:
менительно к конкретной реализации Работа unionfs заключается в том,  один из каталогов становится ката-
файловой системы. что она определённым образом накла- логом верхнего уровня (в дальней-
Следующим шагом стали так на- дывает один каталог на другой, делая шем для краткости я буду называть
зываемые наращиваемые файловые возможным одновременное использо- его просто «верхним»), второй –
системы. Интерфейс vnode достаточ- вание файлов и подкаталогов как в од- каталогом нижнего уровня («ниж-
но гибок, чтобы позволить разме- ном, так и в другом. То есть, в отли- ним»);
щать несколько уровней vnode один чие от других ФС, unionfs не перекры-  пользователю объекты каталогов
над другим. В этом случае при полу- вает при монтировании старые объ- доступны «сверху вниз», т.е. если
чении запроса на выполнение той екты, размещаемые в каталоге, объ- запрошенный объект есть в «вер-
или иной операции с файловой сис- явленном как точка монтирования, хнем» каталоге, возвращается он,
темой, верхний уровень vnode может а осуществляет объединение этих ка- независимо от наличия объекта
либо выполнить этот запрос сам, ес- талогов. с таким именем в «нижнем» ката-
ли располагает необходимой инфор- Очевидно, здесь есть масса ню- логе; иначе возвращается объект
мацией, либо передать его на ниже- ансов. Что произойдёт, если в обоих «нижнего» каталога; если запро-
лежащий уровень (без изменений объединяемых каталогах есть файлы шенного объекта нет ни там, ни там,
или предварительно модифициро- или подкаталоги с одинаковыми име- возвращается ошибка «Нет такого
вав). Следующий уровень vnode пос- нами? Как unionfs должна реагиро- файла или каталога» (см. рис. 2);
тупает аналогичным образом, и так
до тех пор, пока запрос не будет удов-
летворён, либо пока не будет возвра-
щена ошибка «Операция не поддер-
живается».
Во FreeBSD концепция наращива-
емых файловых систем поддержива-
ется достаточно широко, что позволя-
ет помимо «традиционных» ФС реали-
зовать целый ряд довольно полезных
и эффективных «виртуальных» файло-
вых систем, таких как unionfs.

Небольшое отступление
про nullfs
Прежде чем переходить к основной
теме статьи, коротко остановимся Рисунок 2. Объединение двух каталогов в union-систему

№1, январь 2007 57


администрирование
этот файл удалит? Согласно изложен- щиеся в одноимённом каталоге ниж-
ному выше, при запросе f3 пользовате- него уровня. Чтобы этого избежать,
лю должен быть возвращён «нижний» unionfs должна обрабатывать такие
файл. Но тогда получается нестыков- воссозданные каталоги особым обра-
ка со здравым смыслом – ведь поль- зом – без передачи запросов на ниж-
зователь только что этот файл удалил, ние уровни. То есть они должны вести
и было бы нелогично увидеть его сно- себя так, как при обычном монтиро-
ва! Точнее, даже не «его», а, вполне вании, когда верхний слой полностью
вероятно, совершенно другой файл, перекрывает объекты нижележащего
просто с таким же именем. (см. рис. 4). Посмотрим, как это реа-
Этот случай unionfs должна обра- лизовано на практике (если вообще
батывать особым образом – в «верх- реализовано).
нем» каталоге создаётся особый эле-
Рисунок 3. Удаление файла, имя
которого есть в обоих каталогах мент-заглушка (называемый элемен- Монтирование unionfs
том whiteout), и как только он будет най- во FreeBSD
 рабочим каталогом является «вер- ден по запросу на поиск объекта, сра- Во FreeBSD монтирование файловой
хний», то есть все действия пользо- зу возвращается ошибка «Нет такого системы unionfs выполняется с помо-
вателя по изменению данных отра- файла или каталога», без обращений щью утилиты mount_unionfs (если вам
жаются только на каталоге верхне- к нижележащим уровням. Если файл это кажется удобнее, можно использо-
го уровня, не влияя на содержимое с данным именем в дальнейшем будет вать mount -t unionfs). Параметров не-
«нижнего» каталога. создан, то он заменит собой элемент много – помимо «-o», позволяющего
whiteout, и уже он будет перекрывать задавать стандартные опции монти-
Последний пункт означает, что все файл, размещённый на нижнем уров- рования, есть ещё два ключа:
каталоги, кроме каталога верхнего не (см. рис. 3).  -r – заставляет при монтировании
уровня, фактически можно рассмат- Кстати, поскольку модификация полностью скрыть объекты нижне-
ривать как подключенные «только «нижнего» каталога не допускается, го уровня, в результате чего пове-
для чтения». Однако для пользователя то при попытке удалить файл, физи- дение unionfs становится идентично
это остаётся незаметным: при попытке чески размещающийся там (напри- работе файловой системы nullfs;
редактировать файл из «нижнего» ка- мер, f2 на рис. 2) вместо физического  -b – инвертирует верхний и ниж-
талога он копируется в «верхний», пе- удаления должен создаваться элемент ний уровни таким образом, что ви-
рекрывая оригинальный файл (так на- whiteout в «верхнем» каталоге, чтобы димая пользователю точка монти-
зываемое «копирование при записи»). перекрыть этот файл. рования становится верхним уров-
В результате пользователь может бе- Ещё более интересный случай – нем, т.е. рабочим каталогом.
зограничений работать с этим файлом, удаление и последующее восстанов-
в то время как в первоначальном месте ление каталога, имя которого присутс- Например:
он остаётся неизменным (см. на рис. 2 твует на обоих уровнях. С удалением
файл f5). всё просто – так же, как и для файла, # mount_unionfs /usr/home/src ↵
/usr/src
Здесь выплывают два интерес- достаточно в «верхнем» каталоге со- # mount -t unionfs -b ↵
ных момента. Допустим, файл f3 есть здать элемент whiteout. Но вот если /usr/home/src /usr/src
в обоих каталогах. Пользователь будет каталог после этого создать, то в нём
видеть «верхний». А если пользователь сразу станут доступны файлы, храня- Первая команда смонтирует ка-
талог /usr/home/src поверх /usr/src,
и всё это будет доступно пользова-
телю в точке монтирования /usr/src,
причём рабочим каталогом (катало-
гом верхнего уровня, в котором бу-
дут происходить все изменения) бу-
дет /usr/home/src.
Вторая команда отличается от пер-
вой ключом -b, так что результирую-
щий каталог будет смонтирован в /usr/
home/src, который и станет «верхним».
То есть ключ -b фактически изменяет
точку монтирования.
Если монтирование не выполняет-
ся, завершаясь ошибкой «Operation not
supported by device», то первое, в чём
следует убедиться, – это в том, что под-
Рисунок 4. Удаление и последующее восстановление каталога гружается модуль unionfs.ko:

58
администрирование
$ kldstat Наконец, unionfs бу-
Id Refs Address Size Name
дет крайне полезна для Unionfs в Linux
1 4 0xc0400000 3aef60 kernel построения jail-систем. В операционной системе Linux
. . . . В Solaris «зоны» исполь- реализация unionfs также доступ-
n 1 0xc2a3b000 9000 unionfs.ko
зуют похожую техноло- на и, похоже, является более зре-
При желании поддержку unionfs можно собрать и в ядре, гию – при создании зо- лой и устойчивой. Хотя на стра-
для чего нужно добавить в конфигурационный файл ядра ны она наследует файлы ничке в Wikipedia и говорится,
следующую строку (см. /usr/src/sys/conf/NOTES): основной системы, но ес- что «UnionFS в Linux, в общем,
ли какой-то из них изме- не рекомендуется для промыш-
options UNIONFS #Union filesystem няется, то эти изменения ленного использования».
отражаются только внут- В Ubuntu 6.10 (ядро 2.6.17) её
По умолчанию, учитывая неустойчивость нынешней ре- ри данной зоны. Это поз- поддержка «из коробки» отсутс-
ализации, поддержка этой ФС в ядро не включается. воляет значительно эко- твует, но может быть установлена
номить дис ковое про - из репозитариев в виде пакетов
Применение на практике странство, выделяя его union-source и union-utils.
Итак, что такое unionfs и как она работает (или, по край- лишь «по требованию»,
ней мере, должна работать), мы разобрались. Возникает что особенно заметно, если выполняется построение мно-
вопрос: а зачем она вообще нужна? Первое, что приходит жества однотипных зон. Так же и с jail – создавая вирту-
в голову, – монтирование пользовательского каталога по- альную среду, например, для хостинга или тестирования
верх точки монтирования CD-диска. Раз нижний слой всё ПО, можно не копировать в неё полностью все системные
равно неизменяем, то доступность CD только для чтения файлы, а использовать каталоги основной системы, поверх
никакой роли в данном случае не сыграет. Зато монтиро- которых монтировать пользовательские каталоги в unionfs
вание доступного на запись каталога верхнего уровня поз- (фрагмент /etc/fstab):
волит, например, выполнять сборку и установку программ
/bin /var/jails/outers/bin unionfs 0 0
или системы «прямо с CD» – все временные файлы будут /sbin /var/jails/outers/sbin unionfs 0 0
создаваться в пользовательском каталоге: /lib /var/jails/outers/lib unionfs 0 0
/libexec /var/jails/outers/libexec unionfs 0 0
/usr /var/jails/outers/usr unionfs 0 0
# mount_unionfs /usr/home/cdrom /mnt/cdrom
В результате пользователь без дополнительных за-
Теперь в каталоге /mnt/cdrom можно выполнять любые трат дискового пространства получит себе систему, кото-
изменения файлов – на самом деле они будут выполнять- рую сможет менять как ему заблагорассудится – без угро-
ся в /usr/home/cdrom. Кстати, так можно не только обходить зы для целостности основной системы.
явный запрет на запись, но и избегать записи там, где она
нежелательна. Например, примонтировав пользователь- Немного практики
ский каталог поверх каталога с исходниками, можно сме- Осталось посмотреть, правда ли, что unionfs сегодня нахо-
ло экспериментировать с наложением патчей и сборкой, не дится во FreeBSD в таком плачевном состоянии, как об этом
боясь испортить «оригинал» или замусорить дерево исход- все говорят? Для эксперимента заготовим два каталога
ных кодов временными файлами. следующего содержания:
Можно зайти ещё дальше – использовать в качестве ка-
талога верхнего уровня файловую систему, размещаемую # ls -l md1
в памяти (во FreeBSD она реализуется с помощью mdmfs). total 8
В результате и скорость работы должна возрасти, и «му- -rw-r--r-- 1 root wheel 6 22 дек 09:53 file1
-rw-r--r-- 1 root wheel 6 22 дек 09:53 file2
сор» за собой убирать вручную не придётся. Главное, что- -rw-r--r-- 1 root wheel 6 22 дек 09:55 file5
бы выделение памяти под md-раздел было не в ущерб до- drwxr-xr-x 2 root wheel 512 22 дек 09:54 subdir
ступной для операций сборки: # ls -l md2

# mount_mfs -s 50m md /tmp/md1 total 2


# mount_unionfs /tmp/md1 /usr/ports/www/apache22 -rw-r--r-- 1 root wheel 0 22 дек 09:54 file1
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2
Ещё один близкий по духу пример: использование -rw-r--r-- 1 root wheel 0 22 дек 09:54 file3
drwxr-xr-x 2 root wheel 512 22 дек 09:54 subdir
unionfs для целей обучения. Понятно, что если в универ-
ситете каждого студента пускать «админить» реальную # ls -l md1/subdir
систему, то довольно часто придётся заниматься аварий- total 0
но-восстановительными мероприятиями. Решений у этой -rw-r--r-- 1 root wheel 6 22 дек 09:58 file1
проблемы много – и LiveCD, и заранее сохранённые «об- # ls -l md2/subdir
разы» системы, с которых можно легко восстановить ис-
total 0
ходное состояние. Здесь же можно применить и unionfs – -rw-r--r-- 1 root wheel 0 22 дек 09:54 file2
примонтировать пользовательский каталог поверх реаль-
ного /etc, сохранив тем самым первозданную чистоту ори- Файлы с одинаковыми именами будем различать по раз-
гинального каталога. меру – в каталоге md1 они занимают 6 байтов, в md2 – ну-

№1, январь 2007 59


администрирование
левой длины. Выполним монтирование в точку md1 (рабо- пытку удалить md1/subdir, так что посмотреть на практике
чим каталогом при этом станем md2): на самые интересные моменты, связанные с функциони-
рованием unionfs, не получилось. Грустно...
# mount_unionfs /tmp/md2 /tmp/md1
# ls -l /tmp/md2 # vi md1/file5
total 2
md1/file5: 1 строк, 11 символов.
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file1
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2 # ls -l md1
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file3
drwxr-xr-x 2 root wheel 512 22 дек 09:54 subdir total 6
-rw-r--r-- 1 root wheel 0 22 дек 10:21 file2
# ls -l /tmp/md1 -rw-r--r-- 1 root wheel 0 22 дек 09:54 file3
-rw-r--r-- 1 root wheel 11 22 дек 09:55 file5
total 4
drwxr-xr-x 4 root wheel 512 22 дек 10:17 subdir
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file1
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2 # umount md1
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file3 # ls -l md1
-rw-r--r-- 1 root wheel 6 22 дек 09:55 file5
drwxr-xr-x 4 root wheel 512 22 дек 09:54 subdir total 8
-rw-r--r-- 1 root wheel 6 22 дек 09:53 file1
# ls -l md2/subdir -rw-r--r-- 1 root wheel 6 22 дек 09:53 file2
-rw-r--r-- 1 root wheel 6 22 дек 09:55 file5
total 0
drwxr-xr-x 2 root wheel 512 22 дек 09:54 subdir
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2
# ls -l md2
# ls -l md1/subdir
total 4
total 2 -rw-r--r-- 1 root wheel 0 22 дек 10:21 file2
-rw-r--r-- 1 root wheel 6 22 дек 09:58 file1 -rw-r--r-- 1 root wheel 0 22 дек 09:54 file3
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2 -rw-r--r-- 1 root wheel 11 22 дек 10:25 file5
drwxr-xr-x 2 root wheel 512 22 дек 10:17 subdir
Именно так и должно быть – md2 мы видим в неизмен-
ном виде, а в md1 перемешались файлы обоих каталогов, Ну, по крайней мере, редактирование файла прошло
причём, несмотря на то что точкой монтирования стала должным образом – в md2 была создана копия файла file5,
md1, в первую очередь там доступны файлы из md2 (нуле- а md1/file5 остался в неприкосновенном виде.
вой длины). Попробуем удалить файл:
С надеждой на лучшее...
# rm md2/file1 Как видите, unionfs – весьма полезная и удобная во многих
# ls -l md1
случаях система. И всё бы было хорошо, если бы не край-
total 6
-rw-r--r-- 1 root wheel 6 22 дек 09:53 file1 не неустойчивая реализация на данный момент и не «про-
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2 белы» с удалением файлов (получается, что whiteout либо
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file3
-rw-r--r-- 1 root wheel 6 22 дек 09:55 file5
не реализован вообще, либо работает неправильно). Ак-
drwxr-xr-x 4 root wheel 512 22 дек 09:54 subdir тивное использование unionfs слишком часто приводит
к «падениям» всей системы, да и сами разработчики чес-
# ls -l md2
тно предупреждают на man-странице большими буквами:
total 2 «ЭТОТ ТИП ФАЙЛОВОЙ СИСТЕМЫ ПОКА ЕЩЁ ПОДДЕР-
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file3 ЖИВАЕТСЯ НЕ ПОЛНОСТЬЮ (ЧИТАЙ: ОН НЕ РАБОТАЕТ),
drwxr-xr-x 2 root wheel 512 22 дек 09:54 subdir И ЕГО ИСПОЛЬЗОВАНИЕ НА САМОМ ДЕЛЕ МОЖЕТ УНИЧ-
# rm md1/file2
ТОЖИТЬ ДАННЫЕ НА ВАШЕЙ СИСТЕМЕ. ИСПОЛЬЗУЙТЕ
ЕГО НА СВОЙ СТРАХ И РИСК».
rm: md1/file2: Operation not supported
В общем, несмотря на очень большой потенциал этой
# rm md1/file1 технологии, нынешняя реализация с трудом годится даже
# ls -l md1
для лабораторных исследований, не говоря уже про экс-
total 4 плуатацию на промышленных серверах.
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file2
-rw-r--r-- 1 root wheel 0 22 дек 09:54 file3 Серьёзные проблемы в нынешней unionfs привели к то-
-rw-r--r-- 1 root wheel 6 22 дек 09:55 file5 му, что японский разработчик Daichi Goto (http://people.
drwxr-xr-x 4 root wheel 512 22 дек 09:54 subdir
freebsd.org/~daichi) взялся писать с нуля новую реализа-
Ну вот – удаление напрямую из md2 (в обход unionfs) прохо- цию. На его домашней странице сообщается, что 2 декабря
дит без ошибок, и в md1 вместо него становится видно другой 2006 года его патч был включён в текущее дерево FreeBSD
file1 (собственно, unionfs и не должна блокировать непосредс- 7-CURRENT, так что будем надеяться, что рано или поздно
твенный доступ к md2, так что данное поведение нужно при- мы получим-таки в своё распоряжение надёжную, устойчи-
знать нормальным, хотя это и может привести к некоторому вую и эффективную unionfs.
замешательству). Удаление из md1 файла, который физи-
чески же в md1 и размещается, тоже проходит без эксцес- 1. http://people.freebsd.org/~daichi/unionfs – страница, посвящён-
сов. А вот попытка удалить file2, принадлежащий каталогу ная новой реализации unionfs во FreeBSD.
md2, из точки монтирования md1 заканчивается неудачей – 2. http://www.unionfs.org – сайт, на котором собрана информация
«Операция не поддерживается». Та же судьба постигла и по- по реализации unionfs для систем Linux.

60
bugtraq

Переполнение буфера в xine-lib Переполнение буфера в Microsoft


Программа: xine-lib версии до 1.1.3. Outlook Express
Опасность: Высокая. Программа: Microsoft Outlook Express 5.5, 6.
Описание: 1. Уязвимость существует из-за ошиб - Опасность: Высокая.
ки проверки границ данных в функции real_parse_sdp() Описание: Уязвимость существует из-за ошибки проверки
в src/input/libreal/real.c. Злоумышленник может заставить границ данных при обработке Windows Address Book (.wab)
обманом пользователя подключиться к злонамеренному файлов. Удаленный пользователь может с помощью спе-
серверу, вызвать переполнение буфера и выполнить про- циально сформированного WAB-файла вызвать перепол-
извольный код на целевой системе. нение буфера и выполнить произвольный код на целевой
2. Переполнение буфера обнаружено в библиотеке системе.
libmms. URL производителя: www.microsoft.com.
URL производителя: www.xinehq.de. Решение: Установите исправление с сайта производи-
Решение: Установите последнюю версию (1.1.3) с сайта теля.
производителя.
Переполнение буфера в службе IMAP
Уязвимость состояния операции в MailEnable
в Intel 2200BG W29N51.SYS-драйвере Программа: MailEnable Professional 1.6-1.84, 2.0-2.35,
Программа: Intel Wireless LAN Driver 9.0.3.9, возможно бо- MailEnable Enterprise Edition 1.1-1.41, 2.0-2.35.
лее ранние версии. Опасность: Высокая.
Опасность: Средняя. Описание: Уязвимость существует из-за ошибки провер-
Описание: Уязвимость состояния операции обнаружена ки границ данных в службе IMAP. Удаленный пользователь
в драйвере W29N51.SYS при обработке большого количес- может с помощью специально сформированной последо-
тва beacon-фреймов. Удаленный пользователь может с по- вательности команд и данных вызвать переполнение стека
мощью специально сформированных beacon-фреймов пе- и выполнить произвольный код на целевой системе.
резаписать определенные структуры памяти ядра и выпол- URL производителя: www.mailenable.com.
нить произвольный код на целевой системе. Решение: Установите исправление с сайта производи-
URL производителя: www.intel.com. теля.
Решение: В настоящее время способов устранения уязви-
мости не существует. Переполнение буфера в AOL CDDBControl
ActiveX-компоненте
Множественные уязвимости в Symantec Программа: AOL 9.0 Security Edition revision 4156.910, AOL
Veritas Netbackup 8.0 revision 4129.230, America Online 7.0 revision 4114.563.
Программа: VERITAS Netbackup Advanced Client 6.x, VERITAS Опасность: Высокая.
NetBackup Advanced Client 5.x, VERITAS NetBackup Server 6.x, Описание: Уязвимость существует из-за ошибки проверки
VERITAS NetBackup Server 5.x, VERITAS NetBackup Enterprise границ данных в CDDBControlAOL.CDDBAOLControl ActiveX-
Server 6.x, VERITAS NetBackup Enterprise Server 5.x. компоненте (cddbcontrol.dll) при обработке первого аргумен-
Опасность: Средняя. та, передаваемого функции SetClientInfo(). Удаленный поль-
Описание: 1. Уязвимость существует из-за логической зователь может передать уязвимой функции сроку, длиной
ошибки в службе Netbackup (bpcd.exe). Злоумышленник более 256 байт, вызвать переполнение стека и выполнить
может заставить службу выполнить произвольные коман- произвольный код на целевой системе.
ды на системе. URL производителя: www.aol.com.
2. Уязвимость существует из-за ошибки проверки гра- Решение: Обновление автоматически доступно для поль-
ниц данных в службе Netbackup (bpcd.exe) при обработке зователей AOL 9.x.
длинных запросов. Удаленный пользователь может с по-
мощью запроса, содержащего специально сформирован- Повреждение памяти в GnuPG
ное поле длины, вызвать переполнение стека и выполнить Программа: GnuPG / gpg версии до 1.4.6 и 2.0.2.
произвольный код на целевой системе. Опасность: Высокая.
3. Уязвимость существует из-за ошибки проверки гра- Описание: Уязвимость существует из-за ошибки при де-
ниц данных в службе Netbackup (bpcd.exe) при обработке шифровке злонамеренных OpenPGP-сообщений. Удален-
CONNECT_OPTIONS-запросов. Удаленный пользователь ный пользователь может с помощью специально сформиро-
может с помощью специально сформированного запроса ваного OpenPGP-сообщения вызвать повреждение памяти
вызвать переполнение стека и выполнить произвольный и выполнить произвольный код на целевой системе.
код на целевой системе. URL производителя: www.gnupg.org.
URL производителя: www.symantec.com. Решение: Установите последнюю версию с сайта произ-
Решение: Установите исправление с сайта производи- водителя.
теля.
Составил Александр Антипов

№1, январь 2007 61


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

FreeBSD в домене Windows: дополнительные


возможности

Рашид Ачилов
Правильное подключение FreeBSD в домен Windows дает возможность работать
с Active Directory для проверки паролей, членства в группах и т. д. Но это лишь
некоторая часть того, для чего FreeBSD может использовать данную информацию.

Ваш компьютер может Кроме того, были решены следую-  Автоматическое монтирова -
больше щие вопросы: ние сетевых ресурсов SMBFS
В журнале №3 за 2005 г. была опуб-  Первая регистрация в системе. «как в Windows». Здесь пробле-
ликована статья «FreeBSD в домене В прошлой статье была указана ма заключается в очень скром-
Microsoft Windows», где рассказывалось проблема: если новый пользова- ной поддержке SMBFS во FreeBSD.
о том, как отказаться от регистрации тель добавлен через средства до- По сути дела, после внесения в ос-
локальных пользователей и использо- мена Microsoft Windows, то для него новную систему порта net/smbfs
вать пользователей, предоставляемых не создается домашнего каталога ничего не изменилось, хотя с тех
доменом Microsoft Windows. На тот мо- и автоматическое подключение ре- пор прошло много времени.
мент это было действительно достиже- сурса может не сработать. Эта про- Но для FreeBSD team время слов-
нием – отпала необходимость отслежи- блема была решена – для создания но остановилось. В настоящий
вать создание новых пользователей домашних каталогов для пользо- момент задача автомонтирова-
и создавать аналогичные учетные за- вателей, регистрирующихся впер- ния решается скриптами из пор-
писи на файловом сервере, что значи- вые с консоли (с использованием та sysutils/mountsmb2, вызывае-
тельно облегчило работу. На момент на- pam_winbind), был найден и дора- мыми из логин-скрипта, но меня
писания той статьи существовали неко- ботан модуль pam_mkhomedir. Пос- они не устраивают, поэтому ве-
торые нерешенные проблемы, над кото- кольку автор модуля не проявил дется работа над PAM-модулем,
рыми я работал все это время, да и про- никакого желания внести предло- который бы монтировал ресурсы
ект Samba не стоял на месте. Результа- женный ему патч, то этот модуль, во время входа в систему, исполь-
том нашей постоянной совместной ра- переименованный в pam_mkhome, зуя с mountsmb2 один файл описа-
боты стало то, что подключение в домен с наложенным патчем был отправ- ния монтируемых ресурсов.
Windows можно использовать для зна- лен в дерево портов и скоро дол-
чительно больших целей, чем простая жен там появиться. Для пользова- В статье для тестирования всюду
авторизация в домене, а именно: телей, которые будут пользовать- использовалась Microsoft Windows 2003
 Элементарный доступ к компью- ся только сетевыми ресурсами, бы- Server Enterprise Edition и FreeBSD 6.1
теру через Microsoft Management ло разработано два скрипта, кото- с Samba 3.0.24с. Чтобы избежать не-
Console. рые автоматически создают до- которой терминологической путани-
 Раздача прав на файлы и каталоги машний (или любой другой) ката- цы, всюду «домен» и «имя домена»
с использованием имен пользова- лог для пользователя, если данный обозначают не DNS-домен, а домен
телей и групп из домена Windows. каталог отсутствует. Windows (pre-Windows 2000).

62
администрирование
Подключаемся к домену Windows [realms]
DOMAIN.RU = {
«по-настоящему» kdc = win-dc.domain.ru
Подключение FreeBSD к домену Windows так, как оно бы- kpasswd_server = win-dc.domain.ru
admin_server = win-dc.domain.ru
ло описано в предыдущей статье, представляет FreeBSD }
для Windows как Windows NT. Простой и надежный способ,
[logging]
обладающий тем не менее множеством недостатков, на- default = SYSLOG:INFO:LOCAL1
иболее крупный из которых – отсутствие поддержки про-
[domain_realm]
токола NTLMv2, что делает контроллер домена весьма уяз- .domain.ru = DOMAIN.RU
вимым к подбору паролей пользователей. Поэтому пер- domain.ru = DOMAIN.RU
вым делом был решен вопрос с подключением к домену
Active Directory так, как это делает настоящая Windows – Здесь мы исходим из предположения, что имя Active
с использованием службы Kerberos. Для реализации это- Directory – domain.ru, имя домена NT – DOMAIN_INC, кон-
го необходимо, чтобы Samba была собрана со следующи- троллер домена установлен на компьютере с именем
ми параметрами: win-dc.domain.ru.
Разберем приведенный пример поподробнее.
# make WITH_ADS=yes WITH_LDAP=yes  Секция [libdefaults] – default_realm указывает имя
<другие параметры, если необходимо>
подсекции в секции [realms], указывающей, где раз-
При этом проводится автоматическое обнаружение про- мещены основные сервисы. Имя подсекции в секции
граммы Kerberos (MIT или Heimdal), и, если она отсутствует, [realms] должно в точности совпадать с написанием.
вставляется соответствующая зависимость в порт. dns_lookup_kdc задает необходимость искать располо-
После сборки Samba каких-либо особых настроек де- жение сервисов в DNS, используя записи SRV. Этот па-
лать не надо, за исключением: раметр следует устанавливать в yes, если на FreeBSD
в /etc/resolv.conf указан DNS, работающий на контрол-
security = ads лере домена. Теоретически сервер Active Directory мо-
жет использовать внешний DNS-сервер, практически
Это настроит программы пакета Samba на роль члена до- же приходится в любом случае (даже если он не будет
мена Active Directory. использоваться) запускать DNS-сервер на контроллере
домена, потому что иначе могут возникнуть проблемы
realm = domain.ru с добавлением в домен рабочих станций Windows 2000.
Следует иметь в виду, что начиная с версии 3.0.23d
Это задает realm, к которому будет относиться данный в пакете Samba обещана поддержка записей типа SRV,
компьютер. Параметр следует установить в значение, тех же самых, которые использует Windows для поиска
равное имени Active Directory, к которой будем подклю- контроллеров домена, поэтому рекомендуется в файл
чаться. /etc/resolv.conf вписывать какой-нибудь последней
строчкой адрес DNS-сервера AD.
workgroup = DOMAIN_INC  Секция [realms]– делится на подсекции, каждая из ко-
торых описывает один realm. Необходимыми парамет-
Проверьте, что значение параметра workgroup соответству- рами каждой подсекции являются записи, указываю-
ет значению имени домена (pre-Windows 2000). Пример, при- щие на расположение сервисов kdc (контроллер доме-
веденный выше, выбран не случайно – имя Active Directory на), kpasswd и kadmin. Для Active Directory это, как пра-
и имя домена имеют разные области применения и совер- вило, один и тот же компьютер.
шенно не обязаны быть одинаковыми.  Секция [logging] – необязательная секция, указываю-
В документации к пакету Samba рекомендуется также щая настройки системы регистрации сообщений. Под-
явно установить параметр: робное описание смотрите в man krb5.conf.
 Секция [domain_realm] – устанавливает соответствие
client use spnego = yes между DNS-именами и realms. Приведенные две строч-
ки – минимально необходимые для работы, они указыва-
если версия Windows – 2003. Этот параметр задает исполь- ют, что все компьютеры из домена domain.ru и собствен-
зование описанного в RFC 2478 протокола согласования но компьютер domain.ru относится к realm DOMAIN.RU.
механизмов аутентификации.
Перед запуском Samba необходимо создать конфигу- После создания файла /etc/krb5.conf надо получить би-
рационный файл системы Kerberos /etc/krb5.conf. Его фор- лет администратора домена с помощью команды kinit:
мат достаточно подробно описан в man krb5.conf, поэтому
я приведу только готовый рабочий пример с необходимы- # kinit administrator@DOMAIN.RU
ми комментариями. administrator@DOMAIN.RU's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week
[libdefaults]
default_realm = DOMAIN.RU
dns_lookup_kdc = yes Приведенный ответ является нормальным. После ус-
пешного завершения команды в каталоге /tmp должен по-

№1, январь 2007 63


администрирование
 В g e n c aс h c e.tdb и щ е тс я з а п и с ь SA F/ D O M A I N /
DOMAIN.RU.
 В gencache.tdb ищется запись NBT/DOMAIN.RU#1c.
 Выполняется поиск DC через DNS посредством поиска
записи SRV _ldap._tcp.dc._msdcs.DOMAIN.RU.
 Выполняется поиск DC в соответствии с параметром
name resolv order.

Если ни один из этапов поиска не позволил найти,


как минимум, 1 DC, фиксируется ошибка.
На этом «настоящее» подключение к домену Windows
закончено. Проверить правильность подключения можно
в любое время командой:

# net ads testjoin


Join is OK

Если вместо этой надписи увидите «Join is not valid», под-


Рисунок 1. Обьект «Компьютер», представляющий FreeBSD в AD ключение к домену по каким-либо причинам невозможно.
Подробнее о том, что можно сделать в таком случае, сказа-
явиться файл krb5cc_0. Ошибки (а их больше, чем хоте- но в разделе «Возможные ошибки и их устранение».
лось бы) описаны в разделе «Возможные ошибки и их ус- И вот теперь можно включать NTLMv2 (рис. 2).
транение». Кроме этого, в конфигурационном файле smb.conf нуж-
Проверить, что получен билет администратора домена но отключить NTLMv1, установив параметр:
и им можно пользоваться, вы можете командой klist:
ntlm auth = no
# klist
Credentials cache: FILE:/tmp/krb5cc_0 и LM, если он все еще включен (шифровка LM очень сла-
Principal: administrator@DOMAIN.RU бая и может быть легко взломана):
Issued Expires Principal
Nov 27 16:25:29 Nov 28 02:25:29 krbtgt/DOMAIN.RU@DOMAIN.RU lanman auth = no

После получения билета администратора домена мож- Убедиться в том, что используется именно NTLMv2,
но к этому домену подключаться: можно, включив отладку в Samba на уровень 5. Сделать
это для одного пользователя проще через дополнитель-
# net ads join -U administrator -w domain.ru ный файл конфигурации, который обычно подключает-
administrator's password: ся в самом конце конфигурационного файла smb.conf та-
Using short domain name -- DOMAIN_INC ком образом:
Joined 'VMFREE' to realm 'DOMAIN.RU'
include = /usr/local/samba/conf/smb.conf.%U
Здесь в параметре -U задается имя доменного пользова-
теля с правами администратора домена (от его имени бу- то есть при загрузке конфигурационного файла обработ-
дет создан обьект «Компьютер»), в параметре -w – имя чиком сеанса для пользователя administrator будет вклю-
Active Directory или имя домена. Имя Active Directory мож- чен файл с именем smb.conf.administrator. Он содержит все-
но задавать только в том случае, если в /etc/resolv.conf го две строки:
есть запись, указывающая на DNS, работающий на одном
из контроллеров Windows-домена, и в /etc/krb5.conf указа- [global]
log level = 5
но dns_lookup_kdc=yes, в противном случае следует указы-
вать имя домена (pre-Windows 2000 с точки зрения Windows- После этого в файле log.administrator можно найти сре-
администраторов). Указанный здесь ответ является пра- ди прочего большого количества отладочной информации
вильным, после этого в Active Directory должен появиться следующие строчки:
соответствующий обьект. Указание имени домена являет-
[2006/10/15 00:27:20, 3] libsmb/ntlmssp.c:ntlmssp_server_auth(672)
ся более надежным и реже приводит к ошибкам, хотя вклю- Got user=[Administrator] domain=[DOMAIN] workstation=[CITYCAT] len1=24 len2=24
[2006/10/15 00:27:20, 5] auth/auth_ntlmssp.c:auth_ntlmssp_set_challenge(66)
чение в домен должно проходить как в том, так и в другом auth_context challenge set by NTLMSSP callback (NTLM2
случае (рис. 1).
Помните, что Samba при подключении к домену выпол-
няет поиск DC для заданного домена следующим образом Используем MMC
(если запись найдена, поиск прекращается, используются Возможность использования MMC для управления Samba,
найденные данные): работающей на UNIX, была настоящей маленькой револю-

64
администрирование
цией. Теперь администратор домена Windows может выпол-
нять из привычной ему оболочки некоторый набор доступ-
ных операций по управлению сервером. Несмотря на пока
еще очень скромный набор средств – на текущий момент
все возможности управления исчерпываются запуском
и остановом сервисов, само появление такой возможнос-
ти вызывает бурный энтузиазм, и я нисколько не сомнева-
юсь в том, что вскоре их станет больше (рис. 3).
Для того чтобы задействовать возможность запус-
ка и останова сервисов, необходимо создать подкаталог
svcctl в каталоге, указанном в параметре libdir при сборке
Samba (по умочанию /usr/local/samba), и поместить в этот
каталог символические линки на все стартовые скрипты
тех сервисов, управление которыми вы хотите вынести на
MMC. Эти скрипты должны поддерживать параметры start
и stop для соответственно запуска и остановки сервиса.
Во все файлы скриптов должна в виде комментария быть
Рисунок 2. Редактирование групповой политики
добавлена строка: для включения NTLMv2

# Description: Описание сервиса, как оно будет отображаться Net sam – это недокументированная часть команды net,
предназначенная для непосредственного манипулирова-
Если этого не сделать, во все сервисы, которые не отно- ния данными о локальных и встроенных группах, храня-
сятся к самому пакету Samba, будет подставлено «External щихся в файле group_mapping.tdb. Эта команда не рабо-
Unix Service». Также в конфигурационном файле smb.conf тает с базой пользователей, подключаемой через passdb
следует указать список скриптов, которые будут вынесены backend. Зато у нее есть встроенная справка, достаточная
в MMC. Список задается параметром: для работы с ней:

svcctl list = cups apache mysql ssh2 # net sam


net sam createbuiltingroup Create a new BUILTIN group
Список должен совпадать с именами символических net sam createlocalgroup Create a new local group
net sam mapunixgroup Map a unix group to a domain group
линков (которые вовсе не обязательно совпадают с име- net sam addmem Add a member to a group
нами файлов, на которые они указывают). Если описание net sam delmem Delete a member from a group
net sam listmem List group members
сервиса добавляется уже после того, как был хотя бы один net sam list List users, groups and local groups
раз указан параметр svcctl list, то, для того чтобы запомнить net sam show Show details of a SAM entry
новое (или изменить старое) описание, необходимо уда- net sam set Set details of a SAM account
net sam provision Provision a clean User Database
лить файл registry.tdb из каталога, указанного параметром
lockdir при сборке Samba (рис. 4).
Что еще можно сделать через MMC? Можно управлять Использование учетных записей домена
локальными пользователями и группами, но ограничен- для назначения прав на локальные
но – почему-то создать пользователя или группу не уда- файлы
лось, можно только редактировать свойства, добавлять Пожалуй, это наиболее ценная возможность winbind, одной
пользователей в группы, удалять группы и пользователей. из программ, составляющих пакет программ Samba.
Для создания локальных пользователей следует исполь- Что имеется в виду под использованием учетных запи-
зовать smbpasswd: сей домена? UNIX имел возможность назначить каждому
файлу только одного владельца, одну группу владельцев
# smbpasswd -a ftp и права «для всех прочих». Для корпоративных файл-сер-
New SMB password: веров, где зачастую на файлы назначаются довольно-таки
Retype new SMB password: причудливые права, этого было явно недостаточно, и, что-
Added user ftp. бы выйти из положения, приходилось включать пользова-
теля в большое количество групп и, достигая ограничения
При этом, если используется passdb backend = tdbsam в 16 групп (максимальное число групп, в которые может вхо-
(а он используется по умолчанию), пользователь должен дить пользователь), объяснять пользователям невозмож-
существовать в системе. ность установить запрошенные права какими-нибудь при-
Для создания локальных групп следует использовать думанными «требованиями Windows».
net sam: С появлением поддержки ACL в файловых систе-
мах FreeBSD все переменилось. Теперь на каждый файл
# net sam createlocalgroup moretest или каталог можно назначить сколько угодно владельцев,
Created local group moretest with RID 1002 групп владельцев и т. д. Все это управляется командами
getfacl/setfacl с консоли, у которой только один недоста-

№1, январь 2007 65


администрирование
Пример более сложный, который
показывает использование доменных
групп, содержащих пробелы в назва-
нии, пользователей домена и локаль-
ных пользователей.
Применяя дополнительные средс-
тва управления доступом в smb.conf
(директивы inherit- и force-) будьте
особенно внимательны – директи-
вы inherit permissions, inherit owner
и inherit acls ведут к наследованию
соответственно прав, вла дельца
и ACL-записей от родительского ка-
Рисунок 3. Консоль MMC после подключения к FreeBSD талога, а директивы force user, force
group и т. д. – к их принудительному
заданию. При этом происходит сле-
дующее.
При задании force user изменяет-
ся значение макроса %u. Если он ис-
пользуется для формирования пути
к сетевому ресурсу, то можно неожи-
данно обнаружить, что создалась но-
Рисунок 4. Управление сервисами через консоль MMC на FreeBSD вая папка.Например, при использова-
нии сетевого ресурса:
ток – она не позволяет делать рекурсивные назначения.
Поскольку система «знает» пользователей и группы доме- [backup]
comment = There are backup shares for each user
на, то их соответственно можно использовать для назна- path = /usr/share/dmbackup/%u
чения прав в команде setfacl, а также в конфигурационном
файле smb.conf. Приведу несколько примеров (все приме- если для пользователя administrator добавить в файл smb.
ры взяты из рабочего файла, в котором подправлены толь- conf.administrator строку:
ко названия групп):
force user = oneuser
[myshare1]
comment = This is a comment
path = /var/ftp/pub/quality то при подключении к ресурсу backup пользователь окажет-
write list = %D+user1,%D+user2, root ся в каталоге /usr/share/dmbackup/oneuser, а вовсе не в ка-
талоге /usr/share/dmbackup/administrator.
Наиболее простой пример, в котором доступ по записи Задание force mode влияет на значение «прав по умол-
предоставляется двум пользователям домена user1 и user2, чанию». Например, задание в smb.conf.administrator:
а также локальному пользователю root. Макрос %D, ис-
пользуемый в конфигурационных файлах пакета Samba, [backup]
force create mode = 0666
принимает значение имени домена (параметра workgroup
из smb.conf), символ «+» – это тот символ, который был за- при правах по умолчанию на каталог:
дан параметром winbind separator. Если в параметре winbind
drwx------ 3 root wheel 512 15 Oct 22:59 root/
separatror был указан другой символ, следует использо-
вать его. Также можно использовать макрос %w. В итоге привело к появлению следующих прав на каталог:
строка %D+user1 превратится в DOMAIN_INC+user1. Ка-
drwxrwx---+ 3 root wheel 512 15 Oct 22:59 root/
ким образом система «разберется», где локальный поль-
зователь, а где доменный? По наличию в строке символа К сожалению, изменять права на файлы или каталоги,
«+» (или любого другого, заданного параметром winbind добавлять или удалять ACL через «Properties» до сих пор
separator) – без него пользователь считается локальным, невозможно – ошибок при этом не выдается, но и ничего
с ним – часть до символа считается именем домена, пос- не делается. Кроме того, ограничение на 16 групп тоже ос-
ле – именем пользователя. Домен можно указывать и на- талось и даже стало еще хуже – ведь теперь локальные
прямую, и совсем не обязательно это должен быть тот же группы объединяются с доменными. Зато каждый поль-
домен, что и в параметре workgroup. зователь может входить в различные локальные группы
на различных компьютерах, и на файлы, каталоги и ре-
[myshare2] сурсы в smb.conf и персональных конфигурационных фай-
comment = More comments were here
path = /usr/local/share/assembly лах можно назначать отдельные права для пользователей,
write list = @"Group one", @"Group two", root и таких прав может быть сколь угодно много.
valid users = %D+user1, %D+user2, root, @"Group one", ↵
@"Group two", OTHERDOM_AIN+user3

66
администрирование
Автоматическое создание каталогов FreeBSD 6.1-RELEASE (VmFree) #1: Mon Oct 9 02:29:51 NOVST 2006
> pwd
для новых пользователей /usr/home/testip
Одна из серьезных проблем корпоративных файл-серве-
ров под управлением FreeBSD – необходимость вручную
создавать домашние или иные каталоги для сотрудников, Первое обращение по сети (Microsoft Network)
вновь принимаемых на работу. В небольших организациях, Спрос на регистрацию с консоли не очень-то велик. Пока
как правило, это делается вручную, но если компания круп- еще не очень много организаций, где в качестве рабочих
ная, это становится неприемлемым. В предыдущий раз этот станций стоят Linux- и FreeBSD-машины. Более интересный
вопрос оставался нерешенным, но сейчас я с удовольстви- вариант – автоматическое создание домашнего и других
ем предложу вам его решение. В этом поможет PAM, кото- каталогов при первом обращении по сети Microsoft Network.
рый, как известно, может все или почти все, что относится Поскольку Samba не предусматривает такой возможности
к вопросам регистрации в системе. (пока, по крайней мере), мною был разработан скрипт, ко-
торый, выполняясь от пользователя root, создает домашние
Первая регистрация с консоли и любые другие каталоги при первом подключении к ним.
При первой регистрации с консоли пользователь должен Делается это использованием парамера root preexec:
до запуска шелла получить домашний каталог и набор стан-
дартных стартовых файлов, в противном случае в качест- root preexec = csh -c '/usr/local/sbin/checkuserhome ↵
%u %D %U'
ве домашнего каталога он получит каталог /:
Указанный скрипт можно скачать с [1] в виде архива
login as: testip
SSH server: PAM authentication checkhomes-0.90.1.tar.bz2.
Using keyboard-interactive authentication. Скрипт checkuserhome используется для создания до-
Password:
sshd2[4267]: WARNING: Could not chdir to home directory /usr/home/testip: машних каталогов в ресурсе [homes], скрипт checkbackdir
No such file or directory используется для создания персональных каталогов в про-
Last login: Thu Oct 26 2006 23:24:26 +0700 from shelton.net
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 извольном ресурсе.
The Regents of the University of California. All rights reserved. Для установки скриптов их необходимо настроить на те-
FreeBSD 6.1-RELEASE (VmFree) #1: Mon Oct 9 02:29:51 NOVST 2006 кущий конфигурационный файл Samba, для этого распа-
> pwd
/
куйте архив в какой-нибудь каталог и запустите:

В портах существует модуль pam_mkhomedir (security/ # configure –prefix=/usr/local


pam_mkhomedir). Но он не работает. Точнее, он работает,
но не так, как надо. Проверка наличия домашнего катало- Вместо /usr/local вы можете указать любой другой ка-
га выполняется в категории Session management. Логичес- талог, где расположены каталог sbin и программа smbd.
ки это так, только на практике имеется такой побочный эф- Configure проверит наличие ${prefix}/sbin/smbd и наличие
фект, что первый раз пользователь все равно регистрирует- конфигурационного файла, расположение которого было
ся так, как если бы у него не было домашнего каталога, по- указано при сборке пакета Samba. При отсутствии фай-
тому что сначала запускается шелл, описанный для пользо- лов smbd в ${prefix}/sbin или smb.conf configure завершает-
вателя в /etc/master.passwd, а уже потом выполняются сер- ся с соответствующей диагностикой.
висы из секции Session management. Эта ситуация была ис- Затем настройте параметры в файле checkhomes.conf,
правлена переносом проверки наличия домашнего катало- если это необходимо.
га в категорию Account management, и теперь создание до-  Параметр skel задает расположение каталога «скеле-
машнего каталога происходит действительно при первой тов» – шаблонов конфигурационных файлов, копируе-
регистрации в системе. Скачать доработанную версию мо- мых в домашние каталоги пользователей. Использует-
дуля, который называется pam_mkhome, можно с [1]. Для за- ся при генерации checkuserhome.
пуска добавьте в файл сервиса (/etc/pam.d/system для ре-  Параметр dbackup задает расположение корневого ка-
гистрации с консоли, /etc/pam.d/ssh для SSH-сессий и т. д.) талога ресурса, в котором будут создаваться подката-
следующую строку: логи. Используется при генерации checkbackdir.
 Параметры sysdirs и bdirs используются для зада-
account required pam_mkhome.so mode=0700 ния списка подкаталогов, которые должны быть со-
зданы в каталоге, создаваемом checkuserhome или
Дополнительно можно указать параметры skel=<каталог>, checkbackdir соответственно.
который задает название каталога, в котором лежат «скеле-  Параметры sysmode и bmode соответственно задают
ты» типовых конфигурационных файлов и debug, который права доступа, устанавливаемые на эти каталоги.
включает отладку. Теперь все работает как надо:
Если не нужно создавать никаких подкаталогов,
login as: testip
SSH server: PAM authentication нужно установить sysdirs (bdirs) равным пустой строке
Using keyboard-interactive authentication. (sysdirs=””).
Password:
Last login: Thu Oct 26 2006 23:48:44 +0700 from shelton.net После настройки checkhomes.conf запустите:
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
# make

№1, январь 2007 67


администрирование
для генерации скриптов; сан в документации, и вставить в .cshrc строку, вызываю-
щую монтирование всех описанных ресурсов. Естествен-
# make single но, каталоги, куда будут монтироваться ресурсы, должны
заранее существовать. Монтирование выполняется после-
для установки скрипта checkuserhome; довательным вызовом mount_smbfs для всех перечислен-
ных ресурсов.
# make double Настроить mountsmb2 не очень просто, но это связано
не с недоработками скрипта, а исключительно со скром-
для установки cкрипта checkbackdir. ной, очень скромной реализацией SMB/CIFS во FreeBSD –
Для чего используются эти скрипты? Checkuserhome скриптами, кроме того, что уже сделано, сделать больше
проверяет наличие каталога, описанного в ресурсе [homes] нельзя.
для текущего пользователя, для чего скрипту и передают- В настоящий момент ведутся работы по PAM-модулю, ко-
ся макросы %u, %D и %U, представляющие соответствен- торый бы выполнял подобную задачу. Существующие мо-
но имя пользователя текущего сервиса, имя домена (зна- дули, известные мне, удалены из портов в связи с их старо-
чение параметра workgroup=) и имя пользователя в теку- стью и заброшенностью. Позиция же FreeBSD Team по от-
щей сессии. ношению к SMB/CIFS все больше напоминает буддистских
Разница между %u и %U здесь проявляется в том, что обезьянок – «не вижу зла, не слышу зла, не делаю зла» –
первый макрос расширяется в имя пользователя после собственная, давно заброшенная реализация SMBFS (про-
проверки по файлу подстановок users.map, а второй мак- грамма монтирования), и никакого желания взаимодейс-
рос расширяется в имя пользователя ДО подстановки. Ра- твовать с Samba Team. Подобное снобистское невнима-
зумеется, заметной она будет только, если пользователь ние к взаимодействию с Microsoft Network ничуть не спо-
описан в файле users.map, например, пусть в нем содер- собствует повышению престижа FreeBSD – трудно найти
жится такая строчка: сеть, где бы не использовалась Microsoft Network, и игно-
рировать ее – значит сознательно ограничивать распро-
root=DOMAIN_INC+administrator странение системы.
root=DOMAIN_INC+moreadmin

Для пользователей administrator и moreadmin будут со- Возможные ошибки и их устранение


зданы различные домашние каталоги. Если необходимо, Для ошибок здесь поистине гигантский простор. Начнем
чтобы все пользователи, которые соответствуют локаль- мы с возможных ошибок при подключении в домен «по-
ной учетной записи root, использовали один и тот же ката- настоящему».
лог, то в строке вызова, приведенной выше, заменить пос- Пожалуй, самая нелепая ошибка:
ледний параметр с %U на %u.
Checkbackdir используется для создания персонального # kinit administrator@DOMAIN.RU
каталога в произвольном ресурсе. Запускается добавлени- Exception: krb_error 0 Could not load configuration file
/usr/local/jdk1.4.2/jre/lib/security/krb5.conf
ем в параметры ресурса в файле smb.conf, строчки: (No such file or directory) No error
KrbException: Could not load configuration file
root preexec = csh -c '/usr/local/sbin/checkbackdir ↵ /usr/local/jdk1.4.2/jre/lib/security/krb5.conf
%u %D %U' (No such file or directory)
at sun.security.krb5.Config.<init>(DashoA6275:139)
at sun.security.krb5.Config.getInstance(DashoA6275:72)
Значения макросов, передаваемых скрипту, те же самые. at sun.security.krb5.internal.tools.Kinit.<init>(DashoA6275:135)
Возможно, в будущем это будет интегрировано непос- at sun.security.krb5.internal.tools.Kinit.main(DashoA6275:104)

редственно в сам проект Samba.


В первый раз она просто повергает в немое изумление.
Автоматическое монтирование А на самом деле все очень просто – на компьютере установ-
сетевых ресурсов Microsoft Windows лена виртуальная машина Java, и в ней тоже есть програм-
при регистрации ма kinit. И если в настройках /usr/local/bin окажется впере-
Пожалуй, это самая печальная тема. Печальна она тем, ди /usr/bin, вы именно такую картину и увидите.
что к ней напрочь отсутствует хоть какой-либо интерес. Мо-
жет быть, конечно, уже в Windows и не модно монтировать # kinit administrator@DOMAIN.RU
сетевые ресурсы, чтобы использовать однобуквенное сим- administrator@DOMAIN.RU's Password:
волическое имя для обращения к ним, но мне все равно хо- kinit: krb5_get_init_creds: unable to reach any KDC in realm DOMAIN.RU

телось добиться того, чтобы зарегистрировался в системе –


и все нужные сетевые ресурсы подключены. Сначала мной Такая ошибка может возникнуть, если неверно указан KDC,
был разработан скрипт mountsmb, написанный на tcsh, по- компьютер недоступен, там не запущен сервис или пра-
том он был переписан на sh и назван mountsmb2. В насто- вила файерволла запрещают доступ к указанному ком-
ящее время он присутствует в портах (sysutils/mountsmb2). пьютеру.
Скрипт снабжен небольшой документацией, в которой опи-
сано, как его установить и настроить. По сути дела, там все # /usr/bin/kinit administrator@domain.ru
сводится к тому, чтобы настроить /etc/nsmb.conf, создать administrator@domain.ru's Password:
в домашнем каталоге файл .mssmbrc, формат которого опи- kinit: krb5_get_init_creds: unable to reach any KDC in realm domain.ru

68
администрирование
Имя для Kerberos должно набираться с учетом регистра!
Данный пример показывает, что DOMAIN.RU и domain.ru –
это разные вещи.

# net ads join -U administrator -w domain.ru

administrator's password:
[2006/10/29 00:49:58, 0] utils/net_ads.c:ads_startup(281)
ads_connect: Operations error
Рисунок 5. Пример правильного и неправильного описания
сервиса по-русски
Указывать имя Active Directory вместо имени домена
(pre-Windows 2000) можно только в том случае, если Samba в KOI8-R, а не в кодировке Windows. На рис. 5 видны два
способна найти DC с помощью DNS-запроса. Это может примера описаний – первое было набрано в KOI8-R, вто-
быть обеспечено либо указанием в /erc/resolv.conf адреса рое – в CP-1251.
DC (на котором обязательно должен работать DNS, даже Новое наименование добавьте в файл services /
если он никем не используется), либо внесением в любой services_db.c и пересоберите пакет Samba. Например, до-
DNS соответствующих записей. Если и после этого подклю- бавим наименование для сервиса INN:
чение не проходит, проверьте секцию [domain_realm] фай- --- services_db.c.old Sun Oct 15 03:04:58 2006
ла /etc/krb5.conf – записи: +++ services_db.c Sun Oct 29 23:14:35 2006
@@ -80,6 +80,7 @@
"file transferring" },
.domain.ru = DOMAIN.RU { "ssh2", NULL, "SSH Secure Shell",
domain.ru = DOMAIN.RU "Provides service for secure connection for remote administration" },
{ "sshd", NULL, "SSH Secure Shell",
"Provides service for secure connection for remote administration" },
должны обязательно присутствовать там. + { "inn", NULL, "InterNetwork News Server", NULL },
{ NULL, NULL, NULL, NULL }
};
# net ads join -U administrator -w domain.ru

administrator's password: При назначении прав на ресурсы с использованием


Using short domain name -- DOMAIN_INC ACL в файловой системе, а также доменных учетных за-
Failed to set servicePrincipalNames. Please ensure that
the DNS domain of this server matches the AD domain,
писей, наследования и принудительного переопределе-
Or rejoin with using Domain Admin credentials. ния (force-параметров) будьте очень внимательны – конс-
Disabled account for 'VMFREE' in realm 'DOMAIN.RU' трукция %D+administrator задает доменного пользователя,
в то время как просто administrator – локального, наследо-
Возможны два варианта – либо, действительно, полное вание (inherit-параметры) задает права на файл или ката-
имя компьютера, используемое для формирования при- лог, равными родительскому каталогу, тогда как force-па-
нципала HOST/computer.domain.tld, не совпадает с именем раметры их переопределяют. Особенно внимательно нуж-
Active Directory, либо используется Samba 3.0.23c, в кото- но быть к параметру force user – при его использовании все
рой из-за ошибки такое сообщение может выдаваться да- действия выполняются от форсированного имени, в том
же при правильной настройке. Разрешение полного имени числе подстановка макросов %u и %U.
компьютера производится только через /etc/hosts, в нем не В настройке автосоздания каталогов при первой
участвуют ни /etc/nsswitch.conf, ни gethostbyaddr(). Имя, раз- консольной регистрации ошибиться негде, если только
решенное таким образом, будет отображаться в свойствах pam_mkhome вообще получает управление. Для этого мо-
обьекта «Компьютер». Проверьте, как именуется компьютер дуль должен быть указан как required в секции account по-
в /etc/hosts, и обновите версию Samba до 3.0.23d. В качес- литики pam для сервиса. Для отладки pam можно исполь-
тве обходного пути могу посоветовать подключаться к до- зовать программу pamtester (security/pamtester).
мену не через ads, а через MS-RPC: В настройке автосоздания каталогов при первом под-
ключении к сетевому ресурсу все ошибки диагностируют-
# net rpc join -U administrator -w DOMAIN_INC ся включением отладки в строке шебанга скрипта. Вывод
Password: скрипта checkhomes пойдет на консоль, а checkuserhome –
Joined domain DOMAIN_INC. в файл лога Samba. Все ошибки могут быть связаны ско-
рее всего с неверными параметрами, передаваемыми
Обратите внимание, что здесь может быть использова- из Samba. Также следует проверить наличие и доступ-
на только форма pre-Windows 2000 имени домена. При под- ность GNU awk, и не вызывается ли BSD awk вместо него.
ключении таким способом будет невозможно использовать При всей их внешней схожести скрипты для GNU awk мо-
MMC для подключения к компьютеру. гут не работать в BSD awk и наоборот.
При работе через MMC ошибиться практически негде. Удачи!
Не потому, что все работает как часы, а потому, что как раз
мало что работает и просто нет места для ошибки. Единс- 1. http://www.askd.ru/~shelton/newstore – упоминаемые в статье
твенное, что может вызвать недоумение, – это наименова- скрипты и патчи, а также доработанная версия модуля pam_
ние и описание сервисов. Для добавления нового или из- mkhomedir, который называется pam_mkhome.
менения старого описания удалите registry.tdb. Описание 2. Кондрин М. Развертываем Heimdal Kerberos. //«Системный ад-
можно набирать по-русски, но при этом текст должен быть министратор», №7, 2005 г. – С. 20-25.

№1, январь 2007 69


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

Снаряд – броня
В этом соперничестве Алексей Раевский на стороне брони. Пользователям повезло.
телеграфной азбуки. Когда я был ра-
диолюбителем, начал входить в моду
телетайп. Тогда это были механичес-
кие аппараты, внешне похожие на пе-
чатные машинки, подключенные к ра-
диостанции».
Но все изменил один важный исто-
рический факт – в нашу жизнь нача-
ли активно входить компьютеры, тог-
да еще большие, непохожие на совре-
менные PC. Ребята, увлеченные новей-
шими технологиями, искали игровые
клубы, изучали «Агаты» и БК. Алек-
сею повезло – в 8-м классе на олим-
пиаде по информатике в Московском
университете он столкнулся с самой
современной техникой: «Первый тур
был теоретический, надо было на бу-
маге что-то запрограммировать. По-
том те, кто хорошо запрограммиро-
вали, выходили в полуфинал, прак-
тический тур. Там был класс IBM PC,
именно в нем состоялось мое первое
знакомство с интегрированной сре-
дой Turbo Pascal. Я помню, что вместо
того, чтобы решать задачу, я экспери-
ментировал со средой, в которой бы-
ли встроенные компилятор и отладчик.
По сравнению с БК-0010, где загрузка
была с магнитофонных кассет, это бы-
ла просто фантастика».

А
может быть жизнь – это сказка? щение по-советски бесплатного круж- Первый звонок судьбы прозвенел.
Цепь чудесных превращений. ка моделирования и ему подобных, Пока очень тихо и неуверенно. Вряд ли
Главное – вовремя понять, что радиолюбительство наверняка пов- пятнадцатилетний подросток осознал,
лягушка – царевна, в клубочке – путе- торилось бы… Тем более, что радио что чудо в его жизни уже произошло.
водная нить, а смерть Кащея – на кон- школьник Алеша Раевский изучал до- Все было прозаично. Восьмиклассник
це иглы, и нигде больше… Алексей Ра- вольно серьезно: «Там есть несколь- Алексей поехал в физико-математи-
евский нашел свое место под солнцем, ко направлений. Во-первых, констру- ческую школу №542 при МИФИ на день
а фирма «СекьюрИТ» – свой сегмент ирование. Спаять, включить, и чтобы открытых дверей. Походил, понрави-
на рынке IT. этот самодельный приемник не зады- лось. И неизвестно что больше – фи-
мился, а заработал. Во-вторых, скоро- зическая и химическая лаборатории
Когда компьютеры были стная радиотелеграфия, прием радио- или два хорошо оборудованных вычис-
большими… грамм азбукой Морзе на слух, запись лительных класса. Где-то полгода про-
Банальная мысль, повторяющаяся стенографией и передача ключом. Это учившись в спецшколе, Алексей Раев-
из биографии в биографию, из очер- официальный спорт, соревнования по ский понял, что его будущее обязатель-
ка в очерк: все начинается с детства. нему проходят, он и сейчас существует, но будет связано с компьютерами. Ко-
Но идея верная! Очень многое зависит несмотря на развитие Интернета. Со- локола судьбы зазвенели громче.
от того, что в нас заложили в детстве, ревнования проходят так: сидишь в ра- Выбирая вуз, наш герой немного
в какое время мы появились на свет. диоклассе с наушниками, тебе пере- поколебался. Ему предложили пос-
Родись Алексей Раевский на пять лет дают радиограмму, ты ее записыва- тупать в Физтех (Московский физико-
раньше, кто знает, какую профессию ешь, сдаешь, судья смотрит: ошибся технический институт) по сокращенной
он выбрал, кем бы стал. Интерес к то- или нет и кто быстрее сделал. В-треть- программе, сдавать вместо пяти все-
карным станкам на уроках труда, посе- их, работа в эфире, с использованием го два вступительных экзамена. Од-

70
человек номера
нако сработала инерция, выпускные ти инженера-математика, который вы- крадут базы данных и продают потом
экзамены по окончании физико-ма- брал IT-сферу и постепенно укреплял на дисках для всеобщего пользова-
тематической школы засчитывались в ней свои позиции. Однако я не ус- ния. Просто у нас к этому относятся…
в качестве вступительных в Московс- таю удивляться вполне житейским чу- как к неизбежному злу. Виновных, ко-
кий государственный инженерно-фи- десам: как жизнь протягивает ниточ- нечно, ищут, но профилактикой зани-
зический институт (технический уни- ку от легкого интереса к той или иной маются вяло. А почему за рубежом
верситет). сфере к серьезному любопытству, же- о таких случаях громко говорят и ста-
Однако выбор вуза уже не имел ланию исследовать ее ближе и нако- раются не допустить? Потому что за-
значения. Потому что выбор своего нец к воплощению мечты – ты стано- коны строгие и обычно выполняются.
Дела был предрешен. вишься активным строителем выбран- «У них если происходит такой инци-
ной тобой сферы, ее надеждой и опо- дент, – объясняет Алексей, – по зако-
Просто инженер рой. Спасибо судьбе или собствен- ну компания должна объявить о про-
Скоро сказка сказывается, да не ско- ной интуиции, но в 2001 году Алексей паже. Пропал ноутбук – во-первых,
ро дело делается. От интереса к сис- Раевский становится учредителем на своем сайте опубликуйте, какие
темам защиты программного обес- ЗАО «СекьюрИТ» (ударение на пос- у вас там были данные. Если потерян
печения от копирования до созда- леднюю гласную, так называют свою носитель с данными о клиентах, каж-
ния собственной фирмы было дале- фирму ее создатели), с 2003 года яв- дого необходимо в обязательном по-
ко… Но интерес этот оказался стой- ляется генеральным директором ком- рядке известить. Ладно, если ноутбук
ким, и на первых порах – хакерским, пании. За первые два года существо- сгорел, его переехала машина, он уто-
то есть Алексей Раевский взламывал вания были разработаны системы за- нул в реке. А если попал в руки зло-
эти самые защиты. Однако он был щиты информации на рабочих станци- умышленников? В нем адреса, имена,
хакером в первоначальном, практи- ях и серверах. номера счетов…».
чески первобытном значении этого И опять – чудо это? Раевский, ко- Я спрашиваю Алексея: «А в нашей
слова – исследовал проблему, нахо- нечно, на это бы ответил улыбкой. стране фирмы озабочены безопаснос-
дил уязвимости. Современные хаке- Алексей считает, что он ничего осо- тью?» – «У нас еще далеко до озабо-
ры, считает генеральный директор бенного не делает, всего-навсего зани- ченности. Мы в самом начале пути. Хо-
ЗАО «СекьюрИТ», – это чаще всего мается инженерной работой, которая тя наиболее продвинутые российские
подростки, которые вместо того, что- по диплому «прописана»: берет идею, фирмы заинтересованы в защите».
бы писать всякую ерунду на стенах воплощает ее во что-то материальное, Конечно, у нас и масштабы потерь
в подъезде, включают компьютеры кладет в коробку, рекламирует про- от воровства важных сведений пока
и хулиганят в сети, самоутверждаясь дукт на рынке и продает. «Это как ав- не велики. Зарубежные компании по-
таким современным способом. Но их томобиль сделать. Все узлы в ней из- рой фиксируют астрономические циф-
деятельность не похожа на открытие вестны. Двигатель изобрели, коробку, ры убытков. «Представьте, у Ситибан-
или искусство. «Как правило, это ис- тормоза, но «Ауди» сделала машину, ка пропало несколько лент, на них бы-
пользование набора каких-то извест- назвала «Ауди А6», покрасила в кра- ли данные о трех миллионах клиентов
ных технологий для атаки на конкрет- сивый цвет, назначила цену. С техни- с номерами счетов и остальными дан-
ные сайты. У меня есть инструмента- ческой, идеологической точки зрения ными. Каждому клиенту надо пись-
рий, к которому я не имею никакого системы безопасного хранения дан- мо послать, уведомить его… Даже ес-
отношения – молоток, отвертка, и я ных достаточно просты, в них нет осо- ли банк «дружит» с почтовой служ-
должен этими инструментами что-то бых изобретений, за них не дают Но- бой США, все равно это в копеечку
расковырять…». Логично, что изучив белевских премий. Но это важно прак- влетит. Кроме этого, они предложили
уязвимости, Алексей перешел к со- тически, ведь эти системы защищают всем бесплатный кредитный монито-
зданию собственных систем защиты. данные, которые хранятся на жестких ринг. В принципе, это услуга платная.
Новый сказочный поворот в его жиз- дисках, магнитных лентах, дисках CD Но обычно банки, которые допускают
ни назревал. Судьба подбрасывала на случай, если носитель попадет в чу- такие утечки, предлагают ее жертвам
знаки. Вот Алексей Викторович Ра- жие руки. До нас никто на этом не кон- бесплатно. Ведь если средства пропа-
евский, будучи еще студентом, ста- центрировался, не делал производс- дут со счетов, будет еще хуже…».
новится внештатным экспертом, тес- тво и продажу этих систем основным Между прочим, средства защи-
тирующим стойкость систем защит бизнесом». ты на Западе не так хороши, как те,
производства российских и зарубеж- Однако Раевский и его коллеги де- что предлагает российская фирма
ных компаний. Вот уже сам участву- лают нечто более важное: они фор- «СекьюрИТ». За рубежом защита та-
ет в разработке систем для защиты мируют в России рынок информаци- кого типа предлагается в основном ап-
программного обеспечения от несан- онной безопасности от внутренних уг- паратная. Алексей Раевский со това-
кционированного копирования и сис- роз, который создается очень медлен- рищи делает программные средства.
тем защиты информации от несанк- но во многом из-за беспечности руко- Это дешевле, удобнее.
ционированного доступа, в частности, водителей мелких и крупных компа- Кто-то может сказать: но ведь
Secret Disk и Secret Disk Server… ний. Почему-то считается, что утечка фирмы, у которых есть секреты, мо-
Конечно, можно не увидеть ниче- информации – исключительно запад- гут просто-напросто установить стро-
го сказочного в обычной деятельнос- ная проблема. Это не так. У нас тоже гую слежку за своими сотрудниками,

№1, январь 2007 71


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

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

Руткиты режима ядра:


алгоритмы работы и защита

Артем Баранов
Случалось ли вам замечать, что в системе «живет» посторонний процесс. Но ни диспетчер
задач, ни другие программы не могут его показать. Может быть, процесс скрывается и от них?
Каковы методики скрытия в режиме ядра?

В
последнее время в мире NT полу- же описаны утилиты, с использовани- Руткиты, относящиеся к первому
чает все большее распростране- ем которых можно выявлять скрытые типу, заставляют поток, вызвавший
ние технология руткитов. По су- руткитами объекты. системный сервис, отработать код
ти, руткит (rootkit) представляет собой руткита. Когда код руткита получает
технологию, предназначение которой Классификация управление, он вызывает настоящий
скрывать что-либо. Под технологией Для скрытия в системе каких-либо объ- системный сервис по указателю, от-
руткитов обычно понимают программу, ектов руткиты либо перехватывают сис- фильтровывает данные и возвраща-
которая «документированно» или нет темные сервисы ядра, аналогично тому, ет результат.
использует перехват API-вызовов для как это делают руткиты пользователь- Второй тип руткитов менее заме-
фильтрации возвращаемых результа- ского режима для DLL, либо модифи- тен, т.к. код руткита напрямую не вы-
тов системных функций. В предыдущей цируют структуры данных ядра. В соот- полняется. Руткит модифицирует одну
статье (см. №10 за 2006 г.) давалась ветствии с таким подходом руткиты де- (или несколько) структур данных яд-
вводная информация, а также были рас- лятся на две следующие группы: ра. Таким образом заставляя систем-
смотрены алгоритмы работы руткитов  модифицирующие путь выполне- ную функцию работать с ложным объ-
пользовательского режима. В данной ния потока (modify execution path); ектом (или очередью объектов). Та-
статье внимание уделено алгоритмам  модифицирующие объекты ядра кие руткиты воздействуют на работу
работы руткитов режима ядра. (directly kernel object manipulation, ядра косвенно.
Напомню, что руткиты режима яд- DKOM). Рассмотрим каждый из методов бо-
ра функционируют на нулевом кольце лее подробно.
и имеют полный доступ к области па- Первые реализуются с использо-
мяти ядра NT, со всеми вытекающими ванием следующих методов: Перехват функций
отсюда последствиями.  перехват функций через SSDT (таб- через SSDT
Например, руткит может модифи- лица диспетчеризации системных Если руткиту нужно перехватить ин-
цировать структуры данных Windows сервисов); терфейс ядра через таблицу диспет-
и тем самым скорректировать пове-  перехват прерываний; черизации, он просто модифицирует
дение ядра для достижения задан-  изменение первых машинных ко- указатель в этой таблице на свой об-
ных целей: маскировка файлов, про- манд перехватываемой функции работчик, сохранив перед этим указа-
цессов, сетевых соединений. В статье на jmp; тель на предыдущий.
описываются техники, используемые  изменение указателей в объектах Для исключения путанницы, свя-
в современных руткитах режима яд- ядра, например KTHREAD.pService занной с терминологией, приведены
ра, включая fu и Shadow Walker. Так- DescriptorTable. структуры SST и SSDT.

74
безопасность
typedef struct _SERVICE_DESCRIPTOR_TABLE
{
SYSTEM_SERVICE_TABLE ntoskrnl;
SYSTEM_SERVICE_TABLE win32k;
SYSTEM_SERVICE_TABLE Table3;
SYSTEM_SERVICE_TABLE Table4;
} SERVICE_DESCRIPTOR_TABLE,

typedef struct _SYSTEM_SERVICE_TABLE


{
PNTPROC ServiceTable
PDWORD CounterTable;
DWORD ServiceLimit;
PBYTE ArgumentTable;
} SYSTEM_SERVICE_TABLE;

На рис. 1 показано нормальное выполнение системного


сервиса WriteFile, а на рис. 2 выполнение того же сервиса,
но руткит уже заменил указатель в SSDT на свою функцию.
Таким образом, руткит может контролировать выполнение
системного сервиса, отфильтровывая «ненужные» данные.
Рисунок 1. Нормальный поток выполнения кода, вызвавшего
Перехват прерываний WriteFile
Иногда руткиту приходится перехватывать прерывания или
исключения, подменяя адреса в таблице диспетчеризации
прерываний (IDT). Это может быть сделано, например, для
скрытия своего присутствия, или руткиту необходимо знать,
что произошло какое-то событие в системе. При этом пре-
рывания можно также перехватить методом замены первых
байт функции на команду jmp (описан ниже). Для наглядной
демонстрации на рис. 3 показаны IDT и функции ядра, обра-
батывающие прерывания до того, как на них воздействовал
руткит, а на рис. 4 показано, как руткит перехватывает ис-
ключения #GP (General Protection) и #PF (Page Fault). Видно,
что #PF перехватывается через IDT, а #GP – путем записи
команды безусловного перехода в начало обработчика.

Изменение первых слов перехватываемой


функции на jmp
Руткит может перехватить вызов функции, не только подме-
Рисунок 2. Поток выполнения кода, вызвавшего WriteFile
няя адреса в SSDT. Достаточно затереть первые пять байт из переписанной SSDT, что приводит к активации руткита
перехватываемой функции на jmp на функцию руткита, со-
хранив перед этим оригинальные байты. Когда будет необ- скриптор для обслуживания USER и GDI сервисов – win32k.
ходим вызов, восстанавливать эти байты и передавать уп- На рис. 6 видно, что руткит скопировал старую SDT, подме-
равление оригинальной функции. Обычно руткит записы- нил указатели в SSDT и записал указатель на новую табли-
вает первым байтом опкод ближнего jmp – E9, а в последу- цу дескрипторов в KTHREAD.
ющих четырех байтах смещение от начала следующей инс-
трукции до целевой функции (функции руткита). Модификация объектов ядра
На сегодняшний день существуют руткиты, которые скры-
Изменение указателя вают процессы с использованием модификации систем-
KTHREAD.pServiceDescriptorTable ной очереди объектов ядра. Яркий представитель – fu.
Когда поток вызывает системный сервис, ядро нахо- Суть этого подхода в следующем. В NT 5.x процессы, ко-
дит необходимую SDT (их две KeServiceDescriptorTable, торые работают на данный момент в системе, увязываются
KeServiceDescriptorTableShadow), обращаясь к струк- в одном двунаправленном списке. Fu просто переставляет
туре KTHREAD. KTHREAD является частью более об- указатели соседних объектов скрываемого процесса. Та-
щей структуры ETHREAD, которая представляет поток ким образом, когда ядро проходится по списку, то не видит
в ядре. Руткит может скопировать старую SDT (включая этот процесс. На рис. 7 представлена системная очередь,
SSDT), подменить в SSDT указатели на свои обработчики а на рис. 8 видно, что руткит скрыл второй процесс.
и в KTHREAD.pServiceDescriptorTable записать новый адрес Каким образом руткит определяет адрес системной оче-
на вновь созданный дескриптор. Ниже на рис. 5 показаны реди? Ответов на этот вопрос несколько:
два потока. Первый еще не вызывал USER или GDI-сер-  через экспортируемую переменную ядра PsActive-
вис, и его pServiceDescriptorTable указывает на сервисы, ко- ProcessHead; вычитая соответствующее смещение
торые обслуживает ntoskrnl. PServiceDescriptorTable второ- (0x88 в Windows XP), руткит определяет первый эле-
го потока указывает на таблицу дескрипторов, включая де- мент очереди (всегда процесс System);

№1, январь 2007 75


безопасность
не участвуют в перерас-  когда произойдет ошибка страни-
пределении процессор- цы (при ее чтении) в связи с тем,
ного времени, и ядру без что PTE помечен как недействи-
разницы – осуществлять тельный, руткит должен опреде-
переключение контекста лить, является ли страница той, ко-
на поток того же процес- торую необходимо скрыть; если да,
са или на поток другого то каким-то образом заменить дан-
процесса. Все дело в том, ные на странице;
что существуют еще оче-  если происходит выполнение на
реди планировщика (дис- странице кода руткита, просто сде-
петчера потоков), кото- лать PTE действительным и дать
Рисунок 3. Таблица дескрипторов прерываний рые он использует для процессору таким образом доступ
не зараженной системы осуществления операций, к странице.
связанных с планирова-
нием. Таких очередей Но каким образом можно опреде-
три: KiDispatcherReady лить, читает процессор данные из па-
ListHeader – очередь го- мяти или выполняет? Авторы руткита
товых к исполнению по- предлагают следующий прием. Если
токов, KiWaitInListHead, адрес в регистре CR2 (в этот управля-
KiWaitOutListHead – две ющий регистр помещается линейный
очереди потоков, кото- адрес, вызвавший ошибку страницы)
рые пока не планируют- совпадает с сохраненным в стеке ад-
ся, т.е. ждут какого-то со- ресом возврата (напомним, что ошиб-
бытия (например, завер- ка в отличие от ловушки возвращает
шение операции ввода- управление инструкции, которая вы-
Рисунок 4. Таблица дескрипторов прерываний, вывода). На самом деле звала ошибку), то процессор выполня-
руткит перехватил Page Fault и General Protection
первая очередь являет- ет код на странице, в противном случае
 через регистр fs; при переключении ся таблицей из 32 элементов, каждый выполняется операция чтения.
в привилегированный режим ядро из которых адресует очередь для кон- Но как возвратить потоку ложные
помещает в регистр fs другой се- кретного приоритета потока. данные, когда тот пытается прочитать
лектор, в результате fs будет адре- код руткита? Разработчики Shadow
соваться к структуре данных KPCR – Shadow Walker Walker и здесь нашли элегантное ре-
Processor Control Region (описы- Shadow Walker является руткитом, кото- шение. Все дело в том, что в процес-
вает процессор в ядре); в KPCR рый предназначен для скрытия fu в сис- сорах типа x86 для быстрого преобра-
содержится указатель на струк- теме. Делает он это достаточно неор- зования адресов используется специ-
туру KPRCB – Processor Control динарным способом. Во всяком случае альный процессно-зависимый буфер
Block, которая содержит указатель до Shadow Walker такой способ не при- преобразования адресов (Translate
на ETHREAD потока, выполняюще- менял ни один руткит. Сам fu работа- Lookaside Buffer, TLB). Записи TLB хра-
гося в данный момент на процессо- ет в режиме ядра и предназначен для нят соответствия между номерами вир-
ре (член CurrentThread); определив скрытия процессов, добавления приви- туальных страниц (Virtual Page Number,
адрес ETHREAD, руткит, исполь- легий в маркер и прочее. Но несмотря VPN) и соответствующими номерами
зуя соответствующее поле, находит на предоставляемые богатые возмож- фреймов страниц (Page Frame Number,
указатель на EPROCESS, которому ности, его можно обнаружить простым PFN). На самом деле в x386 существует
принадлежит поток; этот подход ис- сигнатурным поиском в области памя- несколько TLB, ITLB для кэширования
пользует fu; ти ядра, со всеми вытекающими отсю- проекций инструкций и DTLB для кэши-
 через функцию IoGetCurrentProcess, да последствиями. Противостоять сиг- рования проекций данных. В синхрони-
которая возвращает указатель натурному поиску, а тем более в памяти зированном виде ITLB и DTLB содер-
на EPROCESS процесса, который достаточно сложно, если не применять жат одинаковые элементы кэширова-
активен в данный момент. стандартные методы (например, поли- ния страниц кода и данных, см. рис. 9.
морфизм). А fu его не применяет. Нужно После того, как руткит изменит вхожде-
Такая техника вводит многих людей было придумать такой метод, при кото- ние в TLB буферы не будут находиться
в замешательство. Они думают, что ес- ром код может получать доступ к стра- в синхронном состоянии. В итоге поток,
ли такой процесс удалить из очереди, нице памяти при ее чтении и модифи- читающий данные, получит в использо-
то он не сможет выполняться, т.к. систе- цировать ее данные. В Shadow Walker вание «левую» страницу, что и демонс-
ма не будет его учитывать. Но все дело заложен следующий алгоритм: трируется на рис. 10.
в том, что распределение процессор-  сделать страницы кода fu в памя- Когда процессору необходимо счи-
ного времени в Windows NT осущест- ти недействительными, т.е. сбро- тать данные со страницы, он обращает-
вляется между исполняемыми сущ- сить первый бит – Valid в аппарат- ся к DTLB, если необходимо, выполнит
ностями – потоками. Процессы вообще ном PTE; код к ITLB. В результате рассинхрони-

76
безопасность
зации работы буферов преобразования адресов при чтении
процессор видит одну страницу, а при записи – другую.
Привить руткиту стелс-алгоритм также можно следую-
щим методом. В процедуре инициализации драйвера вы-
деляем регион памяти (например, в резидентном пуле).
Затем копируем туда функцию, которая будет осущест-
влять перехват сервиса. Устанавливаем атрибут страниц
со скопированным кодом на «чтение». Переписываем ука-
затель в KiServiceTable на скопированную функцию. Затем
необходимо, чтобы ядро выгрузило драйвер. Этого мож-
но достичь, если процедура DriverEntry вернет отличное
от STATUS_SUCCESS значение.

Противодействие руткитам режима ядра Рисунок 5. В структурах ETHREAD, указатель на таблицу SDT,
Рассмотрим программы, предназначенные для выявления указывает на SDT ядра
руткитов, и алгоритмы их работы.

Klister
Автор Joanna Rutkowska (http://invisiblethings.org/tools/
klister-0.4.zip). Эта программа предназначена для выявления
скрытых процессов. Для этого она использует списки пото-
ков планировщика (KiDispatcherReadyListHead, KiWaitOutList
Head, KiWaitInListHead). Как уже упоминалось, эти списки ука-
зывают на структуры ETHREAD, с помощью которых испол-
нительная система представляет потоки в системе. А каж-
дая из структур содержит член, указывающий на EPROCESS
процесса, к которому принадлежит поток. Проходясь по этим
спискам, klister собирает всю информацию по процессам
и выводит ее пользователю. Соответственно, для выявле-
ния скрытого процесса нужно сравнить результаты, полу-
ченные с помощью klister, и те, которые отображает диспет-
чер задач. Klister состоит из драйвера режима ядра, прини-
мающего запросы от программы пользовательского режи-
ма, – второй компонент klister. Драйвер и собирает всю ста-
тистику. К сожалению, символы KiDispatcherReady ListHead,
KiWaitOutListHead, KiWaitInListHead не являются экспортиру-
Рисунок 6. В структурах ETHREAD указатель на таблицу SDT,
емыми, поэтому в klister еще на этапе компиляции были за- указывает на SDT руткита
шиты адреса списка потоков планировщика. В дистрибути-
ве с klister поставляются еще две программы: idt и sdt. Пер-
вая позволяет узнать адреса обработчиков прерываний и ис-
ключений, а вторая позволяет просмотреть таблицу дескрип-
торов системных сервисов.

BlackLight
Автор F-secure (http://www.f-secure.com/exclude/blacklight/
Рисунок 7. Очередь процессов, выполняющихся в системе
blbeta.exe). Программа предназначена для выявления скры-
тых процессов, файлов и каталогов. Для выявления процес-
сов используется метод, получивший название PID Bruteforce
(PIDB). Заключается он в следующем: для всевозмож-
ных значений PID (от 0x0 до 0x4E1C) вызывается функция
OpenProcess, если процесс существует, то BlackLight фик-
сирует его в своем списке. Затем создается снимок про-
цессов (CreateToolhelp32Snapshot) и оба списка сравнива-
ются. Если происходит несовпадение по какому-либо про- Рисунок 8. Модифицированная руткитом очередь процессов
цессу, значит, он скрыт.
в борьбе с руткитами. RootkitRevealer не занимается по-
RootkitRevealer иском скрытых процессов. Вместо этого он сосредото-
Автор Sysinternals (http://download.sysinternals.com/Files/ чен на поиске скрытых разделов реестра, файлов и папок.
RootkitRevealer.zip). Еще одно средство, которое поможет RootkitRevealer осуществляет техники выявления руткитов

№1, январь 2007 77


безопасность
RAIDE
Авторы James Butler, Peter Silberman (http://www.rootkit.com/
vault/petersilberman/RAIDE_Beta_1.zip). Эта программа пре-
доставляет следующие возможности: обнаружение скры-
тых процессов восстановление SSDT, восстановление пер-
вых байт функции. Также RAIDE позволяет сделать скрытый
процесс видимым. Восстановление адресов в SSDT RAIDE
осуществляет, считывая KeServiceDescriptorTable из файла
ntoskrnl.exe на диске и определяя указатель на SSDT, све-
ряет соответствующие указатели в таблице SSDT в памяти
и на диске. Аналогичным образом она восстанавливает пов-
режденную руткитом функцию, т. е. функцию, первые байты
Рисунок 9. Два буфера TLB, для кэширования проекций кода которой руткит переписал на команду перехода. Программа
и данных в синхронизированном состоянии считывает первые три инструкции функции с файла на диске
и переписывает их в соответствующее место в памяти.

Заключение
Руткиты режима ядра используют недокументированные
возможности Windows NT, что не обеспечивает им перено-
симости на разных версиях NT. Microsoft не документиру-
ет устройство объектов ядра, т.к. оно меняется от версии
к версии. Поэтому определения этих структур нельзя найти
в DDK. Но при разработке руткита или средства его обнару-
жения можно опираться на определения структур, показан-
ных Windbg (команда dt). Кроме того, Windbg предоставляет
возможности ручного определения на предмет заражения
системы. Например, можно продизассемблировать первые
Рисунок 10. Два буфера TLB для кэширования проекций кода
и данных в рассинхронизированном состоянии байты функции (u), а затем посмотреть, не стоит ли в пер-
вых же байтах команда jmp. Аналогично можно проверить,
не перехвачена ли функция в SSDT. Для этого нужно посмот-
реть адреса в SSDT, например, командой dd KiServiceTable,
а затем для адреса, указанного там, вывести идентифика-
тор командой ln. Если для адреса выводится идентифика-
тор, значит, функция не перехвачена, в противном случае
есть подозрение, что это адрес функции руткита.
Рисунок 11. RootkitRevealer обнаружил «невидимые»
разделы реестра, скрытые руткитом HackerDefender Несмотря на весьма широкий выбор программ по вы-
явлению руткитов, лишь некоторые из них могут сказать,
сканированием кустов реестра на низком (RAW) уровне, каким именно руткитом заражена система. В основном же
т.е. анализируя реестр без характерных API-вызовов, а за- эти средства узкоспециализированны и базируются толь-
тем используя Win32 API, и сравнивает полученные резуль- ко на определенных техниках выявления. Стоит также от-
таты. Аналогично RootkitRevealer выявляет и скрытые пап- метить, что техники, реализованные в тех или иных средс-
ки. Вначале сканирует раздел с использованием метадан- твах, также не гарантированно могут обнаружить, напри-
ных файловой системы, а затем с использованием Win32 мер, скрываемый процесс. Так, IceSword и BlackLight не мо-
API также сравнивает полученные результаты и выводит гут обнаружить руткит FuTo, который скрывает процессы
соответствующие скрытые объекты. На рис. 11 показано, таким образом, что те функции API, на которые опирают-
что RootkitRevealer выявил разделы, которые скрыл из поль- ся эти средства, работают с ложными данными, которые
зовательского режима HackerDefender. руткит уже модифицировал. А средства выявления рутки-
тов, опирающиеся только на сигнатурный поиск в памяти,
VICE не смогут обнаружить Shadow Walker. Для выявления рут-
Авторы James Butler, Gregory Hoglund (http://www.rootkit.com/ китов режима ядра нужен комплексный подход к анализу
vault/fuzen_op/vice.zip). VICE также является программой работы системы. Например, для выявления Shadow Walker
для обнаружения руткитов. Его основная задача – обнаруже- прежде чем запускать сигнатурное сканирование в памяти,
ние руткитов, модифицирующих путь выполнения (как в поль- нужно посмотреть правильный ли адрес указан в IDT для об-
зовательском режиме, так и в режиме ядра). После нажатия работчика ошибки страницы. Пока полнофункциональных
на кнопку сканирования в окне VICE начнет проверять систе- средств, которые объединили бы все техники обнаружения,
му на наличие руткитов. Процессы, на которые воздействует нет. Возможно, это обуславливается тем, что сама техни-
руткит, показаны в списке. Рядом с названиями процессов ка реализации DKOM используется с недавнего времени.
располагаются иконки, каждая из которых показывает, каким Да и изощренные техники скрытия кода в памяти, применя-
именно способом был заражен процесс руткитом. емые в Shadow Walker, до этого не использовались.

78
IMHO

Чего ждать от удаленной работы?

Крис Касперски
Чужой опыт редко бывает полезным, особенно если он касается такого индивидуального
аспекта, как поиск работы. У каждого из нас свои сильные и слабые стороны, свои цели
и свои средства их достижения. Описывая сложную систему взаимоотношений соискателей
с работодателями, я ни за что не агитирую и ни к чему не призываю. Просто… показываю один
из многих путей выживания в этом мире.

П
оиск работы – это всегда ком- временно. Чтобы впоследствии не жа- тину огромные, и когда другие гово-
промисс между размером за- леть о бесцельно прожитых годах, ра- рят о растущей безработице, у нас на-
работка и величиной интереса ботать следует из удовольствия, пол- блюдается устойчивый кадровый кри-
к ней. Только не путайте деньги с воз- ностью (или частично) отождествляя зис. Везде полным-полно незанятых
можностями, которые они предостав- собственное «Я» с тем, что это «Я» мест, а специалистов на всех не хва-
ляют. Деление жизни на «время рабо- делает, воспринимая деньги как не- тает. Зарабатывать > $1000 для про-
ты» и «время отдыха» делает человека что само собой разумеющееся. А де- граммиста средней руки – вполне ре-
и бедным, и глубоко несчастным одно- ньги в IT-индустрии вращаются воис- ально, правда, и вкалывать придет-

80
IMHO
ся так, что… окружающий мир пере- нее зная, что оно неправильное (не- деле очень легко, особенно если од-
станет существовать и в сознании ос- оптимальное) – это же какая сила во- ним из условий является его развитие
танется только клавиатура и монитор. ли (или безразличное наплевательс- и поддержка).
Естественно, москвичи и жители дру- тво) требуется! Не говоря уже о том,
гих крупных городов находятся в бо- чтобы являться в офис строго по рас- Виды удаленной работы
лее выигрышном положении, чем жи- писанию, вступая в сложную связь «Свободный программист» тради-
тели периферии, а в Штатах даже юни- с коллегами, начальством и попадая ционно ассоциируется с «шаровар-
оры получают на порядок (двоичный) под слепую власть политических ре- щиком». Профессия в наше время
большие суммы. шений руководства. Только крупные крайне распространенная, а потому
Кто-то, соблазнившись открыва- фирмы могут позволить отдельным не сильно привлекательная с коммер-
ющимися перспективами (причем, (наиболее талантливым) сотрудникам ческой точки зрения. Рынок насыщен
не только финансовыми), перебира- реализовать свой творческий потен- до предела, и нащупать незанятую ни-
ется из родной глубинки в столичные циал, не требуя от них моментально- шу очень трудно, особенно если речь
округа или даже пересекает океан, на- го «выхлопа». Во всех остальных слу- идет о продуктах массового потреб-
деясь встретить на той стороне веч- чаях работа становится синонимом ления. С одной стороны, поджимают
но голубое небо, пальму и белый па- слова «несвобода», превращая чело- компании-гиганты, с другой – откры-
роход (не «Титаник»). Что ж, каждый века в унифицированный зубец боль- тые проекты, созданные на голом эн-
выбирает свой путь сам, но сущест- шого колеса, которое в свою очередь тузиазме и распространяемые на бес-
вует тысяча мотивов, чтобы никуда является лишь малой частью огромно- платной основе.
не уезжать, а жить там, где ты родил- го механизма. Но даже имея на руках конкурен-
ся. Интернет дает уникальную возмож- Это вовсе не призыв к «револю- тоспособный продукт, львиную долю
ность удаленной работы из любой, да- ции». Это просто такая экономичес- времени придется тратить на техни-
же самой глухой и отдаленной дерев- кая модель. Популярная, но не единс- ческую поддержку, документирова-
ни. А что? Свежий воздух, экологи- твенная. Возможность выбора уже ние, разборки с платежами и не пла-
чески чистые продукты, частный дом, есть, только далеко не каждый стре- тежами, устранение конфликтов с но-
не идущий ни в какое сравнение с тес- мится выбраться из клетки на свобо- вым и старым железом и ОС. На твор-
ными городскими квартирами… Впро- ду, поскольку свобода требует ответс- чество остаются лишь жалкие урыв-
чем, дело даже не в деревне, а в об- твенности и умения постоять за се- ки, и вместо удовольствия работа ста-
разе жизни. Удаленная работа поль- бя и свое право оставаться свобод- нет приносить одно сплошное разоча-
зуется популярностью и в Москве, из- ным и впредь. Вместо регулярной за- рование. К тому же всегда существует
бавляя творчески настроенных людей рплаты – нестабильные доходы из се- риск, что проект провалится, а созда-
от необходимости каждое утро таскать рии «то густо, то пусто». Вместо пос- ние (и раскрутка) нового за один день
свое «тело» в офис, и расширяет гра- тупательного продвижения по карь- не делается. Сразу же возникает воп-
ницы охотничьих «владений» до раз- ерной лестнице – хаотичное броунов- рос – как дальше жить? А без еды дол-
меров Земли. ское движение, где понятие «статуса» го жить не получится, увы! Так что не-
отсутствует как класс. обходимо заблаговременно позабо-
За и против Удаленная работа – это не райс- титься о создании неприкосновенно-
Ассоциация с «охотой» возник ла кие кущи, и агитировать за нее могут го запаса, в который входят не толь-
не случайно. В отличие от «firm job», только те, кто зарабатывает на жизнь ко деньги, но еще и интеллектуаль-
удаленная работа зачастую вообще агитацией. Прежде чем покидать клет- ные ценности (типа программ, библи-
не имеет никакого юридического ста- ку и отправляться в первобытные отек и прочих ингредиен-
туса, превращая нас в хищников, бе- джунгли, следует, по крайней тов, готовых к немед-
гающих по просторам Интернета в по- мере, совершить несколько ленной продаже).
исках добычи. А хищника, как извест- предварительных выла- А вот другой
но, ноги кормят. Сейчас, по прошест- зок, убедившись, что, во- п у т ь – в м е с то
вии десяти лет, проведенных на «воль- первых, офисная жизнь того чтобы со-
ных хлебах», я оглядываюсь назад вас действительно тяго- здавать
и думаю: «Какое же это счастье иметь тит и, во-вторых, вы уже весь
стабильную работу, на которую мож- нашли альтернативный
но прийти и… тупо делать то, что тебе источник дохода, запаса
скажут (или… не делать, если не ска- которого хватит на до-
жут). Где думают за тебя, решают за те- статочно продолжитель-
бя, и креатив не является основой вы- ное время, позволяющее
живания». спокойно осваиваться в но-
Но нет! Это все-таки не для ме- вом мире, не хватаясь за пер-
ня! Есть люди, которые в любой си- вый попавшийся заказ (кото-
туации привыкли полагаться только рый зачастую является и пос-
на самих себя. И я – один из них. Вы- ледним, ведь «увязнуть» в одном-
полнять чужое распоряжение, зара- единственном проекте и в самом

№1, январь 2007 81


IMHO
тущие потребности их владель- вать с девушками, окончившими двух-
цев, но… только без перехо- месячные курсы по С# и знающие язык
да на Windows (поскольку, исключительно на уровне синтаксиса,
во-первых, Windows не яв- а там где есть толпа, создающая оче-
ляется системой реального редь, нечего надеяться на достойную
времени, а, во-вторых, стои- зарплату).
мость перехода слишком ве- Удаленное сотрудничество много-
лика, особенно если он вклю- кратно расширяет ареал поиска ра-
чает в себя реинжиниринг спе- боты. В конечном счете намного вы-
ц иа ли з ир о в анны х ко н тр олл е - годнее искать возможность примене-
ров (например, управляющих про- ния уже существующих знаний и на-
изводственными процессами или выков, чем заниматься непрерывным
телеметрией),вставляемых в ISA-слот самообразованием. Чтение компью-
и слыхом не слышавших ни про ка- терных (и околокомпьютерных) книг
кую PCI). и журналов вызывает устойчивое ощу-
Программистский рынок де- щение, что мир сошел с ума, и милли-
лает ставку на молодых специа- оны леммингов мигрируют на новые
листов, осваивающих новейшие платформы задолго до их появления.
продукт языки, методы разработки, библи- Но при живом общении с реальными
целиком, отеки и прочие «инновации», сменя- разработчиками, выпускающими ре-
лучше со- ющие друг друга каждые несколько альные продукты (а не утилиты, напи-
средоточить- лет. Но с каждым годом переучивать- санные одним щелчком мыши) все ста-
ся на том, что вам действительно ин- ся становится все сложнее и сложнее. новится на свои места. Основной про-
тересно, и работать в одном или не- Возникает естественное желание, ух- граммистский костяк стоит на трех ки-
скольких узких направлениях – опти- ватиться за какой-то один отдельно тах (одним из которых является Си)
мизация, разработка защитных ме- взятый язык, например, Си, и писать и не собирается с них сходить.
ханизмов, дизассемблирование, по- программы лишь на нем одном. Это Проблема России в том, что круп-
иск ошибок и т. д. Большинство мел- увиличивает уровень профессиона- ные программные комплексы у нас
ких компаний (и программистских кол- лизма и улучшает качество кодиро- уже давно не создаются (немного-
лективов) не могут позволить себе де- вания (с одной стороны), но создает численные успешные проекты типа
ржать в штате кучу узких специалис- практически непреодолимые препятс- FineReader не в счет), а мелкие утили-
тов, большую часть времени которые твия при поиске работы, на которую ты можно писать на чем угодно, хоть
все равно окажутся незадействован- требуются люди «владеющие» Си++, на DELPHI, хоть на С#. Им неведомо
ными. Можно, конечно, поручить за- C# и прочими модными словечками. бремя совместимости, они совершен-
щиту программы своему самому «про- И пускай опытный Си-программист но не знают, каково сопровождать ги-
двинутому» сотруднику или восполь- выполнит поставленную задачу в де- габайты кода, первые строки которо-
зоваться одним из широко разрекла- сять рад быстрее и в сто раз эффек- го были заложены еще в начале де-
мированных протекторов (вот только тивнее, чем студент, прослушивший вяностых и по которым можно про-
каким именно?), но не лучше ли обра- курс лекций по Си++, но так и не оси- слеживать эволюцию развития про-
титься к независимому специалисту, ливший парадигмы процедурного про- цессоров, языков программирования,
«окучивающему» исключительно эту граммирования, от чего исходные тек- компиляторов и операционных сис-
тему и знающему о ней если не все, сты пестрят глобальными переменны- тем. Переписывать все это хозяйство
то гораздо больше самого «продви- ми и массивами, передаваемыми по на С# никто не будет хотя бы уже по-
нутого» из широкопрофильных про- значению, а не указателю. Главное, тому, что к моменту завершения столь
граммистов. что он позиционирует себя как Си++ грандиозного процесса о C#, быть мо-
Особенно это актуально для пред- программиста! жет, никто и не вспомнит, т.к. появят-
ставителей редких (или вымирающих) Конечно, это несколько утриро- ся новые языки. Кстати говоря, слухи
специальностей. Представим себе че- ванный пример, и такие «специалис- о смерти Фортрана (и других древних
ловека, уверенно программирующе- ты» в большинстве случаев отсеи- реликтов) сильно преувеличены. Су-
го на ассемблере в реальном режи- ваются еще на собеседовании, но… ществует огромное количество кода
ме и знающего все закоулки MS-DOS, факт остается фактом. Подавляющее и множество библиотек. Выпускают-
но испытывающего устойчивое от- большинство программистских контор ся компиляторы, оптимизированные
вращение к Windows. Найти работу при наборе персонала руководствует- под современные процессоры и т. д.
по своему профилю в родном городе ся шаблонными стереотипами. Даже и т. п. А это значит, что специалисты
и примыкающим к нему окрестнос- посредственный программист, иду- по языку по-прежнему остаются вос-
тям крайне маловероятно, но! по все- щий в авангарде прогресса, с высо- требованными (пусть и не в таких ко-
му миру работает огромное количест- кой степенью вероятности найдет се- личествах, как десять-двадцать лет
во машин с MS-DOS, которые требует- бе работу в любой точке мира (прав- тому назад).
ся обслуживать и удовлетворять рас- да, при этом ему придется конкуриро- В практическом плане это значит,

82
IMHO
что если вы собираетесь сотрудничать Сразу два совета (многократно про- ходного кода и готов заняться его оп-
с отечественными компаниями, то с ве- веренных и перепроверенных на лич- тимизацией под конкретный процес-
роятностью, близкой к единице, в спи- ном опыте). сор (в аппаратных видеоплеерах они,
сок обязательных требований к канди- Если компания не практикует уда- как -правило, достаточно маломощ-
дату попадет .NET. Практически нигде ленного сотрудничества по тем или ные). Отсюда следует важный вывод:
вы не встретите объявлений, о розыс- иным причинам, не стоит ломиться совершенно необязательно быть ак-
ке «чистых» Си-программистов, знато- в закрытые двери – все равно не про- тивным участником Open Source-про-
ков процессора, ассемблера и других ломишь. Это может быть и «бзик» ру- екта, достаточно просто в нем разби-
«доисторических» языков. За рубежом ководства, и принятый уклад органи- раться хотя бы в общих чертах и, ес-
картина иная. зации труда, и специфика, обусловлен- тественно, присутствовать в списке
Во-первых, здесь создается мно- ная родом деятельности. Далеко не все developers (иначе, вас просто не смо-
жество встраиваемых устройств с мик- можно передать через Интернет: доку- гут найти!).
ропроцессорами (причем, «микро» менты, полученные самой компанией
в прямом смысле слова), для програм- под подписку о неразглашении (также Как надо и как не надо
мирования которых используется либо известном под аббревиатурой – NDA), составлять резюме
чистый ассемблер, либо смесь ассемб- финансовые данные, обрабатывае- О резюме скажу предельно корот-
лера с Си. Во-вторых, даже в мире PC, мые программой (которые также не- ко. Составлял их я мало. Читал еще
сплошь и рядом встречаются высокоп- льзя передавать на сторону и которые меньше, поэтому основной опыт, ко-
роизводительные библиотеки (или гра- очень сложно «правдоподобно» смо- торый я приобрел, – это опыт отрица-
фические движки), написанные на Си делировать), не говоря уже о контрол- ния. То есть, теперь я знаю путь, куда
(или на Си++ в стиле Си), с ассемблер- лерах и прочем аппаратном обеспече- ходить не надо, но куда идут толпа-
ными вставками. нии. Опять-таки, удаленный сотрудник ми мои коллеги, глядя на которых, так
Количество проектов, использую- может внедрить в программу заклад- и хочется прибить к столбу табличку:
щих более половины возможностей, ку, практически ничем не рискуя, пос- «Осторожно! Грабли!».
предоставляемых языком Си++, ис- кольку компании (даже сильной и мо- Резюме – это сплошной офици-
числяется единицами, и большинс- гучей) будет очень трудно до него до- оз. Это прокрустово ложе, пытающее-
тво из них находятся на грани прова- тянуться. К тому же возникают опре- ся загнать векторную величину (коей
ла. Программисты в авральном поряд- деленные финансовые и юридические и является интеллект) в безликий ска-
ке переписывают код, возвращаясь сложности при заключении контракта ляр. Возьмем, к примеру, Петю, участ-
к истокам: проще! быстрее! надежнее! и переводе денег. А зачем бухгалтерии вовавшего в десяти проектах, все де-
Только ведь на собеседовании не ска- лишняя головная боль? Если вам ска- сять из которых завершились полным
жешь: ознакомившись с Си++ и попы- жут «нет», то это «нет». провалом (потому что Петя, переоце-
тавшись применить его на практике, Совет номер два: Open Source-про- нив свои возможности, полез совсем
я убедился, что подавляющая часть екты (даже те из них, что распростра- не в ту степь, получив вместе с кра-
предоставляемых им возможностей няются по лицензии BSD, не требую- хом бесценный опыт по его преодо-
мне совершенно ни к чему и не упро- щей отчислений в случае коммерчес- лению), и Васю, успешно поддержи-
щает, а усложняет кодирование, ресур- кого применения) бесплатны только вающего три проекта и не имеюще-
соемкость, сопровождение и отладку. для «народа», а всем остальным при- го никакого представления о сущес-
Естественно, это не проблемы отрас- ходится платить. Взять хотя бы кодек твовании тех проблем, которые Пе-
ли, а проблемы HR, которые совершен- XviD, поддерживаемый практически тя чует за версту и обходит на фор-
но не разбираются в технологиях про- всеми современными автономными саже задолго до их появления на го-
граммирования и больше верят рекла- видеоплеерами. Что де- ризонте. Не знаю, как вы, а вот
ме, чем специалистам. шевле: скачать исход- я с Васей в горы не по-
Другими словами, если в окрест- ные тексты и засу- шел, но… при об-
ностях вашего обитания найти рабо- нуть их в плеер сво- работке резюме
ту по специальности никак не удает- ими силами или на- секретарем, да-
ся, почему бы не попробовать посот- нять на более-менее леким от програм-
рудничать с зарубежными компания- постоянную работу мирования, Вася по-
ми через Интернет? одного из учас- лучает сто очков, а Пе-
тников проек- тя… идет в горы.
О компаниях та? Причем Другая проблема –
Компании бывают разные – одни это необя - честность. Точнее, ее
не приемлют удаленного сотрудни- з а т е л ь н о отсутствие у некото-
чества в принципе (это корпоративная должен быть рых из нас. Доволь-
политика у них такая, и не нам ее ме- ведущий раз- но часто спрашивают –
нять), для других же – это норма. Не- работчик. По- можно ли врать в резю-
которые на 90% из удаленных сотруд- дойдет любой, ме? Не с моральной точ-
ников и состоят (в особенности это ха- кто разобрался ки зрения, а вообще? Ну
рактерно для Open Source-проектов). в структуре ис- это как сказать… Перечень

№1, январь 2007 83


IMHO
большого количества языков, Ч т о ж е к а с а е т с я не пытайтесь посмотреть, что будет,
средств разработки, библи- умышленного завы- если кликнуть мышью по «вакансиям»
отек и операционных сис- шения опыта, то я на фирменном сайте и предложить им
тем, с которыми канди- скажу так – врать свое тело (вместе с мозгами) в обмен
дат якобы умеет рабо- не с тои т, а вот на пачку вечнозеленых. Последствия
тать, обычно дальше кор- приврать сам Билл могут быть весьма неблагоприятные
зины не идет. Иногда, прав- Гейтс велел, только (особенно если указан контактный те-
да, могут дернуть на собесе- главное – не заврать- лефон). Привяжутся – не отстанешь,
дование – посмотреть: что это ся, а то может очень а если скажешь, что пошутил, и уст-
за зверь такой, но надеять- легко получиться, раиваться совершенно не собирался, –
ся на это не стоит. Если вы что ваш опыт ра- в будущем может сильно аукнуться.
действительно знаете весь боты с языком Ведь мир, как известно, тесен.
спектр языков и операци- на несколько лет Короче, подытожив сказанное, ре-
онных систем, лучше соста- превысит время зюме мы отметаем как тупиковый ва-
вить несколько независимых существование са- риант.
резюме, пользуясь тем заме- мого языка (прав-
чательным фактом, что русские да, тут всегда можно Стратегия поиска работы
имена на английский манер можно пи- выкрутиться, сославшись В жизни каждого программиста рано
сать слегка по-разному. Это сущест- на то, что вы начинали с самых пер- или поздно наступает такой момент,
венно увеличивает вероятность быть вых альфа-версий, не анонсированных когда не ты ищешь работу, а она те-
замеченным. ни в каких пресс-релизах и доступных бя, что порождает совершено неведо-
Опыт работы с языком – весьма только по предварительной подписке – мую дотоле проблему: как тактично от-
провокационный вопрос. Я никогда навряд ли работодатель захочет про- казать клиенту, одновременно с этим
не понимал, что он в действительнос- верить этот факт, тем более что прове- не потеряв его. Не отказывать нельзя,
ти означает и от чего предполагается рить его весьма затруднительно). иначе многолетние наслоения заказов
вести отсчет: с момента первой отком- Самое неприятное, что, заполняя прогнутся под собственной тяжестью,
пилированной программы типа «hello, резюме, мы предоставляет массу све- возбуждая бурную тектоническую ак-
world!», с момента овладения язы- дений о себе, при этом не имея никакой тивность заказчиков и окончательный
ком без поминутного подглядывания (или практически никакой) информа- съезд крыши исполнителя с глубоким
в учебник/MSDN, с момента постиже- ции о работодателе. Особенно если ре- нервным истощением, граничащим
ния стандарта и преодоления барьера зюме отправляется в кадровое агент- с высадкой на территорию психиатри-
переносимости (т.е. умения писать про- ство (или вывешивается на сайт), а не ческой лечебницы. Какое же это счас-
граммы, которые компилируются и ра- вручается конкретному работодателю тье – иметь непрекращающийся по-
ботают не только на машине их созда- персонально. Часто приходится стал- ток заказов, но какая же это пытка –
теля), или же… с момента осознания киваться с такой картиной. Составля- осознавать, что он не закончится ни-
того факта, что проверка корректнос- ешь резюме, сидишь, ждешь, и вдруг когда и выкроить недельку-другую от-
ти указателей зачастую (но не всегда!) звонок: «Мы рассмотрели ваше ре- дыха удастся разве что в иной жизни.
несет больше вреда, чем пользы? В ре- зюме, все хорошо, вы нам подходите, Правда, когда ты молод, полон энергии
зультате мы получаем «вилку» в деся- мы вас берем!». Кто это «мы»?! Смот- и сил, об этом не задумываешься и ни-
ток лет, а то и больше. ришь… а там фирмочка размером чуть чего кроме перспективы не замечаешь.
Любой кандидат может написать, больше собачьей конуры и совершен- А перспектива, как известно, – штука
что имеет гигантский опыт работы но непрофильная (например, я ука- коварная. Параллельные рельсы схо-
с Си++ и что он начинал программи- зывал в резюме: x86-ассемблер, Си, дятся в точке на горизонте, но по мере
ровать на нем еще тогда, когда Си++ а они клепают сайты на PHP). Такое продвижения вперед эта точка все уда-
был всего лишь front-end к Си. Естес- впечатление, что они берут всех, ко- ляется, удаляется и удаляется…
твенно, подобная наглая ложь немед- го только удастся загрести, а из ре- Отсюда – при выборе работе пред-
ленно выявляется на собеседовании зюме читают только контактный ад- почтение следует отдавать краткос-
(а, может, это и не ложь вовсе! Просто рес/телефон. рочным проектам, не влекующим
человек так программирует, некоторые По моим наблюдениям (которые, за собой хвост всевозможных обя-
русские в Америке и по тридцать лет возможно, окажутся и неверны), нор- зательств (типа поддержки, сопро-
живут, а знают английский хуже само- мальные фирмы резюме не читают, вождения и т. д.). Такие проекты мо-
учки, прошедшего двухмесячный курс а набирают сотрудников по другим ка- гут приносить немалый доход внача-
по методу Ильи Франка). Так что поня- налам, вербуя известных (или подаю- ле, но требовать огромных (и практи-
тие «опыта работы с языком» приме- щих надежды) специалистов из конку- чески неоплачиваемых) усилий в кон-
нимо только к людям со средними спо- рирующих компаний или программис- це. Вести несколько проектов одно-
собностями, и если ваши способнос- тов-одиночек. Также я бы хотел предо- временно – тяжелое испытание. Они
ти отличаются от таковых, рекомен- стеречь от заполнения резюме просто затягивают словно болото и не отпус-
дуется сделать перерасчет в ту или «по приколу». Если вы не собираетесь кают, а все попытки вырваться обычно
иную сторону. устраиваться в такую-то компанию, только усугубляют и без того незавид-

84
IMHO
ное положение. Удовольствие от рабо- учитель, вот только доверять им сле- работчиками. Быть может, они и при-
ты исчезает, времени на «поковырять- дует с большой осторожностью. Типич- мут вас в свой клан..
ся» в новых языках/библиотеках/осях ный случай: «Когда я узнал о конструк- Другой способ заявить о себе –
нет и не предвидится. Кругозор сокра- ции Х, я стал применять ее везде, где это форумы, блоги и прочие электрон-
щается в точку, стремительно коллап- только можно, в результате чего пои- ные (а еще лучше – бумажные) пуб-
сирующую в черную дыру, откуда еще мел столько проблем, что решил на- ликации. Форумы, естественно, анг-
никому не удавалось выбраться. всегда отказаться от Х, но через не- лоязычные, причем достаточно серь-
Гораздо лучше работать по принци- сколько лет, я все-таки пришел к вы- езные. Общие правила поведения –
пу: «получил ТЗ, въехал в тему, сдал воду, что X – хорошая штука, если при- в полемику не встревать, не пытаться
проект, забыл». Конечно, в этом случае менять ее с умом». показаться слишком умным, не лезть
работать придется еще больше, но за- Лучший способ научиться програм- в те дебри, в которых не разбираешь-
то работа будет разнообразной, и прак- мировать – дополнить чтение учебни- ся, отвечать обстоятельно и по делу.
тически всегда можно выбрать время ков разбором чужих исходных текстов, Естественно, все это требует време-
для отдыха или своих собственных не- пытаясь ответить на вопрос: почему ни, не гарантируя никакого эффекта.
коммерческих проектов. они написаны именно так, а не иначе? Блоги в этом отношении намного бо-
«Американская мечта», описанная А как бы это написали вы? Естествен- лее предпочтительнее. Выбираем блог
во многих книжках по «шароварос- но, это должны быть достойные исход- продвинутого программиста и начина-
троению», как некий никому не извес- ные тексты, а не сочинения кота Мур- ем постить, но только ни в коем слу-
тный программист, написал одну про- зика, который начал программировать, чае не отзывы на статьи, а уж тем бо-
грамму (угробив на это свой отпуск), раньше, чем писать. Где брать достой- лее – сообщения об ошибках. Еще не-
а потом до конца жизни ничего не де- ные исходные тексты? Ну это, в общем- известно, что это за человек и как он
лал, только пил пиво и вносил незна- то, не вопрос. Существует куча Open отреагирует на критику (не важно –
чительные изменения в код – это кра- Source-проектов, по одному виду кото- конструктивную или нет). Лучше все-
сивый миф, но не более того. Конк- рых можно судить об их качестве.. го – делиться своими идеями, допол-
ретных примеров таких программ нет Естественно, программисты не без- няющими статью или пытаться вызы-
и не будет! Компьютерная индустрия грешны, и, роясь в исходных текстах, вать автора на обсуждение некоторых
слишком быстро развивается, вынуж- мы наверняка найдем ошибки или технических проблем, которое перехо-
дая переписывать значительные кус- просто неэффективные фрагменты дит либо в перепалку, либо в очеред-
ки кода каждые несколько лет просто кода, которые так и просятся, чтобы ной заказ.
для сохранения совместимости с су- их переписали. Отправляя исправлен- Заводить свой собственный блог
ществующим окружением, не говоря ные версии разработчикам, мы скорее стоит только в случае избытка свобод-
уже о том, что требования к продук- всего получим приглашение вступить ного времени, поскольку моменталь-
там (и в особенности, к их интерфей- в их ряды и подписаться на закрытую ной отдачи он все равно не принесет,
сам) неуклонно ужесточаются, а ес- рассылку. Как правило, большинство а поддерживать его в «живом» состо-
ли популярный продукт стоит на мес- остальных участников проекта уже ра- янии быстро надоест и из развлечения
те и не развивается, его тут же обхо- ботает в других компаниях (или даже превратится в пытку. Огромную отда-
дят конкуренты. возглавляет свои), поэтому знакомс- чу приносит издание книг за рубежом.
Но это что касается профессиона- тво с ними будет весьма не лишним. Заказы сыплются как из Рога Изоби-
лов. А как быть новичкам? Они любой Дело тут даже не в заказах (которых лия, даже если сама книга практичес-
работе рады! И в этом-то и заключа- может и не быть). Это отличный канал ки не продается (а она и не будет про-
ется их главная ошибка. Каждый вы- для получения документации и раз- даваться, если рассчитана на специа-
полненный заказ на раннем этапе раз- ных программ, распространя- листов, коих единицы. Напротив, бой-
вития должен работать на ваш авто- емых либо за деньги (слиш- ко раскупаемая книга, ориентиро-
ритет, чтобы его было не стыдно упо- ком большие для начинаю- ванная на массовую аудиторию,
мянуть при поиске всех последующих. щих программистов), ли- не принесет ни-
Причем выбирать заказы следует на бо же только через NDA, чего, кроме
пределе своих возможностей или да- но… из чисто дружеских гонорара,
же чуть-чуть выше их. побуждений, зарубеж- да и тот
Во-первых, сложные заказы – это ные коллеги охотно делят- н а -
престижно, во-вторых, «повторение ся этим добром с остальными,
пройденного» (т. е. написание простых особенно если живут под ло-
программ) отнимает время, но не дает зунгом «информация должна
никакого нового опыта взамен. А для принадлежать миру». То же са-
успешного «старта» важно за мини- мое (только в меньшей степени)
мальное время освоить максимум тех- относится и к закрытым проектам.
нологий, причем, «освоить» не в смыс- Если у вас есть идеи по улучшению
ле «прочитать учебник», а в обязатель- продукта, а еще лучше – написан-
ном порядке опробовать все это на ный плагин (или модифицированная вряд
практике. Книги, бесспорно, отличный DLL/EXE), попробуйте списаться с раз- ли оку-

№1, январь 2007 85


IMHO
ять RAID. Проблемы, создаваемые А вот без навыка быстрого пись-
этим RAID, их совершенно ма (придется туго, поскольку писать
не волнуют (они ведь придется много. Впрочем, язык легче
не знают, что ту же всего осваивается в процессе обще-
с а м у ю н а д еж- ния, так что заблаговременно учить
ность можно его «вхолостую» без конкретного при-
обеспечить ложения означает понапрасну терять
и другим пу- время.
тем), а вос- Языки программирования, про-
становление цессоры и операционные системы –
RAID (в случае это по выбору. Главное – не бояться
краха) все равно ответить «нет», «не знаю», «это мы
поручат не «экспер- не изучали». Нормальные компании
ту», а технику в робе охотнее берут человека, способно-
пит время, потраченное на написа- с куда более скромной зарплатой. го обучаться, чем энциклопедичес-
ние). Но зато этот техник знает кучу фай- кий словарь. Ни в коем случае не сто-
Еще большую отдачу дает выступ- ловых систем, множество физичес- ит врать, утверждая, что вы знаете то,
ление на зарубежных конференциях. ких интерфейсов и переставляет чи- чего вы не знаете, поскольку элемен-
Предложения о сотрудничестве начи- пы с закрытыми глазами, да так, что тарная проверка поставит вас в тупик,
нают поступать чуть ли не сразу пос- следы пайки видны только в лупу (а то и у работодателя сложится впечатле-
ле схождения с подиума. Ну тут я су- и не видны совсем). ние, что и все остальное вы знаете точ-
жу уже не по своему опыту, т.к. сам ни- Все очень просто. Одни люди стре- но так же, то есть никак.
когда ни накаких конференциях не был мятся к знаниям, другие же тем вре- Важное замечание на счет ООП.
и бывать не собираюсь. менем делают карьеру. Но не сто- Есть два типа людей. Одни счита-
Достаточно многие форумы име- ит думать, что сделать карьеру лег- ют, что парадигма программирования
ют «коммерческий» раздел, публику- ко. Тут определенный тип личности (равно как и Господь Бог) должна быть
ющий предложения о работе. При от- нужен, каким-то седьмым, восьмым, одна на всех, другие же рассматривают
сутствии заказов стоит залезть туда девятым чувством угадывающим, ко- ООП не как венец эволюции, а рядовой,
и посмотреть на «раздачу». Не всег- му следует льстить, а кого – топить. да к тому же весьма специфичный инс-
да, но достаточно часто таким путем Но все это лирика. Пора перейти к су- трумент с ограниченной областью при-
можно «выловить» хороших клиен- ровым реалиям. менения. Поэтому, если вам ближе по
тов, с которыми потом завязывает- Знание английского разговорного душе процедурное программирование
ся продолжительное и весьма плодо- без словаря при сотрудничестве с за- в духе старого доброго Си, так об этом
творное сотрудничество, однако поиск рубежными компаниями в общем-то и говорите. Отказать в приеме на ра-
на форумах – это крайняя мера, к ко- необязательно, но очень, очень же- боту могут, но на костре во всяком слу-
торой я когда-либо прибегал. Во-пер- лательно. чае не сожгут.
вых, большая аудитория создает кон- По фильмам (с оригинальной зву-
куренцию, ощутимо сбивающую цену, ковой дорожкой и субтитрами) за два- Трудоустройство
а, во-вторых, большинство предложе- три месяца язык осваивается до впол- Удаленное сотрудничество часто
ний – провокация или мошенничество не приемлемого уровня и легко рас- не подкрепляется никакими бумага-
чистой воды. познается на слух. Богатый словарный ми, ограничиваясь устной договорен-
запас для разговорной речи не пона- ностью, поэтому вас могут элементар-
Требования к кандидату добится. Напротив, по моим наблюде- но «кинуть», ничего не заплатив, но за-
Программы, окружающие нас, написа- ниям, он только мешает. Важно не ко- ранее настраиваться на это не надо.
ны такими же людьми, как и мы (мно- личество слов, которые ты знаешь, Прием на работу или раздача зака-
гие из которых только учатся про- а умение выразить свои мысли те- зов происходит достаточно буднично
граммированию), и если вы не умее- ми словами, которые сейчас крутят- и без юридической волокиты. Но это –
те превращать байты в золото, ничего ся в голове. За произношение волно- в идеале.
страшного в этом нет. В конечном сче- ваться не надо. Я неоднократно слы- Многие фирмы не успокоятся, по-
те главное – это умение преподнести шал, как американцы (причем весь- ка не увидят того, кого они нанима-
себя, а программистские способнос- ма коренные и респектабельные) про- ют живьем, или не услышат его по те-
ти с уровнем зарплаты связаны очень износят «Core» как «Корэ», а «Work» лефону.
слабо. В IT-индустрии сплошь и ря- как «Ворк». Не знаю, то ли они умыш- Для зарубежных компаний зво-
дом можно встретить людей, получа- ленно коверкают слова на манер на- нок обязателен (с российскими не
ющих свыше 100 000$, разъезжающих шего «удава», то ли действительно пробовал) (звонок, естественно, оп-
на «Феррари», одевающихся в пиджа- американская почва позволяет се- лачивается за их счет). Еще могут
ки индивидуального покроя с бэджи- бе подобные вольности с английским попросить переслать какую-то за-
ком «эксперт», но при этом знающие языком, но факт остается фактом – гадочную сигнатуру в pdf с догово-
только одно: на сервере должен сто- вас поймут! ром. Так вот, эта «сигнатура» по-на-

86
IMHO
шему будет роспись. Расписываемся с ним расходы) в 100% случаях опла- иностранцев в смятение и ужас, и они
на бумаге, прогоняем ее через сканер чивает компания, которая вас нани- приводят тысячи доводов, почему руб-
и вставляем в pdf любой утилитой, ко- мает. Поездку в российское предста- левый сбербанковский счет это бэд.
торая только есть под рукой. Маразм, вительно, как правило, приходится оп- Но если твердо стоять на своем, то…
конечно. Ведь так можно подделать лачивать самостоятельно, но если упе- куда они денутся. Переведут. Правда,
любой документ, но против чужих реться, то можно не ехать, а, позвонив могут содрать до 10% в качестве мо-
нравов не попрешь. по телефону, попробовать договорить- ральной компенсации, но это уже рас-
Так же могут потребовать пере- ся как человек с человеком. Во всяком плата за удобство. Жителям больших
слать паспорт по факсу (у меня тре- случае у меня это получалось (с неко- городов, возможно, удобнее всего по-
бовали только один раз, но я отка- торого времени я стал тяжел на подъ- лучать деньги на кредитную карто-
зал, в пылу спора мне сначала в рез- ем и уже давно никуда не езжу, а рань- чку. Ну тут я не знаю. У нас всего один
кой форме отказали, но на следую- ше довольно много мотался по России, «банкомат», да и тот находится в слег-
щий день мы пришли к компромиссу: останавливаясь в номерах «люкс», оп- ка разобранном состоянии.
я не посылаю паспорт, а они не гово- лачиваемых, естественно, фирмой.
рят мне тех слов, которые я не могу эх… молодость… но потом все это на- Как избежать обмана
здесь напечатать). доело). Начнем с грустного. Полностью за-
Договоры (если таковые все-таки страховаться от обманов и невыплат
составляются) не передаются по фак- Финансовые вопросы при удаленной работе практически
су практически никогда. Вместо этого Неразвитость отечественных платеж- невозможно. Ни имя компании, ни на-
они печатаются на лазерном принте- ных систем создает значительные про- личие договора – это еще не гарант.
ре в двух-трех экземплярах, после че- блемы при регулярном переводе денег Меня обманывали и крупные, и мел-
го вы расписываетесь на каждой стра- из зарубежных стран в Россию. Лично кие компании всеми способами какие
нице и отправляете договор по почте, меня механизм перевода волновал только есть. Самый распространен-
а через некоторое время ловите ваш меньше всего. Поговорив со знающим ный вариант – это когда вам говорят,
экземпляр с подписью работодателя человеком, я выяснил, что наибольшей что вот сейчас вы получите совсем
и печатью. Прекрасное средство лич- популярностью пользуются два пути: немножко, чтобы не умереть с голо-
ной гигиены, надо сказать! открытие валютного счета в коммер- ду, а потом пойдут отчисления от про-
Да! На счет гигиены. Если кто ду- ческом или сбербанке и чеки, пере- даж продукта, объем которых прокон-
мает, что договор перед подписью сылаемые по почте. Чеки идут от не- тролировать практически невозмож-
нужно показать юристу, то он здоро- скольких месяцев до полугода, причем но, а даже если было бы и возможно –
во ошибается, поскольку договор в 9 банки их то принимают, то отвергают что с того? Деньги-то ведь все равно
из 10 случаев типовой и каким бы то без объяснения причин (хорошо, если не заплатят.
ни было изменениям не подлежит. не обвиняют в попытке подделки или Менее распространенный, но го-
В тексте договора может быть все мошенничестве), а регулярные пере- раздо более гадкий способ – най-
что угодно. Любая нелепица. Вплоть воды на валютный счет вызывают по- ти в вашей программе пару мелких
до передачи компании прав собствен- дозрения у всех спецслужб, которые ошибок и поднять вселенский вопль,
ности на вашего домашнего кота Мур- только есть в нашей стране. И не толь- что из-за них компания понесла огром-
зика. Но попытки исключить подоб- ко налоговой (с налоговой как раз про- ные убытки и теперь имеет все осно-
ные пункты из договора ни к чему (хо- ще всего: заплатил налоги – и спи спо- вания для подачи на вас в суд (брех-
рошему) не приводят, поскольку че- койно). Экс-КГБ может запросто пожа- ня, конечно, но что мы можем сказать
ловек, отправляющий текст догово- ловать с визитом и поинтересоваться: в ответ?), поэтому ни о каких выпла-
ра вам на подпись, обычно не упол- а вы случайно не Родину на секреты тах речь вообще не идет. Как вариант,
номочен менять этот самый договор продаете? Может, вы шпион? А вы точ- компания может постоянно вносить
ни на бит. но доступа к секретной значительные изменения в ТЗ, давая
С другой стороны, договор – это информации не име- минимум времени на их реали-
для юристов. Реальный расклад за- ете? Ну это вы го- зацию, а за всякую
дается устной договоренностью. Да- ворите, что не име- задержку – штра-
же если в договоре черным по бело- ете, а если прове- фовать.
му написано, что вы не имеете права рить? Вдруг какой-
использовать компоненты разрабо- то секрет просочил-
танного вами продукта в других про- ся в Интернет (ведь
ектах, вы можете делать это, догово- у вас есть Интернет,
рившись с фирмой по-хорошему. И ес- правда?), а вы его
ли не сильно наглеть, на договор мож- того. В смысле взя-
но вообще не смотреть. ли и продали.
В особо «ответственных» случаях На дежнее вс его
потребуется вылет за рубеж или в рос- перевод на рублевый
сийское представительство компании. сбербанковский счет,
Зарубежный перелет (и все связанные упоминание о котором приводит

№1, январь 2007 87


IMHO
плане наиболее честные, поскольку ются, но… лично меня это не сильно
если они будут «кидать» программис- волнует, поскольку заказов и так вы-
тов направо-налево, об этом быстро ше крыши… надо же как-то эту кры-
узнают все остальные и тут же разо- шу расчищать…
рвут партнерские отношения. Мел-
ким компаниям это не грозит, пос- Заключение
кольку им нечего терять. Они просто Удаленная работа – это реально!
закроются и тут же откроются вновь Это хороший способ совместить при-
под новым именем. Крупные компа- ятное с полезным и заработать деньги,
нии, которые правят балом, могут вы- не выходя из дома. Кстати, «дом» –
творять все, что им вздумается, в том это ключевой момент. Далеко не каж-
числе и не оплачивать разработку дому понравится подобное (и к тому же
продукта. Монополисты… К та- добровольное) «затворничество». Ес-
ким и на бульдозере не подъ- ли одиночество вас угнетает – ходите
едешь! в офис, работая среди людей! Или….
Вот почему сотруд- совмещайте оба вида работы сразу,
ничество с новой (для если, конечно, «корпоративный устав»
Та к ч то вас) компанией следует это позволяет. Компании, в которых
к концу ра- начинать с небольших про- мне довелось работать, крайне рев-
боты будет непо- ектов и только потом, убедив- ностно относились к интеллектуаль-
нятно, кто кому платить должен. А мо- шись в ее честности, переходить к по- ной собственности и считали, что все
гут просто взять программу, сказать настоящему серьезным вещам, ра- написанное программистом в рабочее
«спасибо» и… ничего не заплатить. бота над которыми может занять не- время принадлежит им, и если про-
На первых порах (пока ни имени, сколько лет. граммист продает свой труд на сторону,
ни опыта сотрудничества еще нет), Что же касается меня, то с непро- он должен платить «мзду». Что ж! Впол-
остается надеяться только на удачу веренными заказчиками я работаю не логично! Именно поэтому я там боль-
и проявлять максимум осмотритель- либо из спортивного интереса, ли- ше не работаю, а… сотрудничаю с ни-
ности в выборе партнеров. Как прави- бо при 100% предоплате. Естествен- ми через Интернет! На гораздо более
ло, компании среднего звена в этом но, не все заказчики на это соглаша- выгодных (для меня) условиях.

88
bugtraq

Переполнение буфера в Clam AntiVirus


Программа: Clam AntiVirus (clamav) версии до 0.88.7.
Опасность: Средняя. Уязвимость при обработке POST-запросов
Описание: Переполнение стека обнаружено при сканиро- в Microsoft Project Server
вании сообщений с глубоко разветвленным multipart-кон- Программа: Microsoft Project Server 2003, возможно, дру-
тентом. Удаленный пользователь может с помощью специ- гие версии.
ально сформированного e-mail-сообщения вызвать отказ Опасность: Низкая.
в обслуживании приложения. Описание: Уязвимость существует из-за ошибки при об-
URL производителя: www.clamav.net. работке POST-запросов в сценарии projectserver/logon/
Решение: Установите последнюю версию (0.88.7) с сайта pdsrequest.asp. Удаленный пользователь может получить
производителя. имя пользователя и пароль к учетной записи MSProjectUser.
Пример:
POST http://SERVER/projectserver/logon/pdsrequest.asp HTTP/1.0
Переполнение буфера в ядре Linux Accept: */*
Accept-Language: en-nz
Программа: Linux Kernel версии до 2.4.33.5, Linux Kernel Pragma: no-cache
2.6.x. Host: SERVER
Content-length: 87
Опасность: Низкая. Proxy-Connection: Keep-Alive
Описание: Уязвимость существует из-за ошибки провер- Cookie: PjSessionID=<valid cookie>
ки границ данных при обработке входных CAPI-сообщений <Request>
в файле net/bluetooth/cmtp/capi.c. Злоумышленник может <GetInitializationData>
<Release>1</Release>
перезаписать определенные структуры данных ядра и вы- </GetInitializationData>
звать отказ в обслуживании. </Request>
URL производителя: www.kernel.org. <Reply>
Решение: Установите последнюю версию (2.4.33.5) с сай- <HRESULT>0</HRESULT>
<STATUS>0</STATUS>
та производителя. Для ядра версий 2.6.x рекомендуется от- <UserName>theuser</UserName>
ключить поддержку bluetooth. <GetInitializationData>
<GetLoginInformation>
<DBType>0</DBType>
<DVR>{SQLServer}</DVR>
<DB>ProjectServer</DB>
Множественные уязвимости в Microsoft <SVR>SERVER</SVR>
Internet Explorer <ResGlobalID>1</ResGlobalID>
<ResGlobalName>resglobal</ResGlobalName>
Программа: Microsoft Internet Explorer 5.01, 6.x <UserName>MSProjectUser</UserName> <----
Опасность: Высокая. <Password>sekretpass</Password> <----
<UserNTAccount>SERVER\USER</UserNTAccount>
Описание: 1. Повреждение памяти обнаружено при обра- </GetLoginInformation>
ботке определенных DHTML-функций, вызывающих некор- </Reply>
ректно созданные элементы. Удаленный пользователь мо- URL производителя: www.microsoft.com.
жет с помощью специально сформированной веб-страницы Решение: В настоящее время способов устранения уязви-
выполнить произвольный код на целевой системе. мости не существует.
2. Уязвимость существует при обработке «drag and drop»-
операций. Удаленный пользователь может с помощью спе-
циально сформированной страницы получить содержимое Двойное освобождение памяти
папки TIF (Temporary Internet Files). в Microsoft Windows CSRSS
3. Уязвимость существует из-за ошибки при обработке Программа: Microsoft Windows 2000, Microsoft Windows XP,
тегов OBJECT. Удаленный пользователь может с помощью Microsoft Windows 2003.
специально сформированной веб-страницы получить дан- Опасность: Низкая.
ные о пути к каталогу TIF (Temporary Internet Files) и запо- Описание: Уязвимость существует из-за ошибки двойного
лучить его содержимое. освобождения памяти при обработке HardError-сообщений
4. Уязвимость существует из-за ошибки при обработке в библиотеке WINSRV.DLL. Локальный пользователь мо-
исключений ошибок в сценариях. Злоумышленник может жет выполнить произвольный код на системе в контексте
с помощью веб-страницы, содержащей специально сфор- процесса CSRSS с привилегиями учетной записи SYSTEM
мированный JavaScript-код и вызывающей одновременно путем установки специально сформированных парамет-
определенные типы ошибок, выполнить произвольный код ров для функции MessageBox() (строка должна начинать-
на целевой системе. ся с последовательности символов «\??\»).
URL производителя: www.microsoft.com. URL производителя: www.microsoft.com.
Решение: Установите исправление с сайта производи- Решение: В настоящее время способов устранения уязви-
теля. мости не существует.

№1, январь 2007 89


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

Прошлое операционных систем


семейства BSD Кто-то назовет BSD старой операционной
системой. Но те из нас, кто работает над ней,
видят ее скорее системой со зрелым кодом.

Мэтт Дилан, разработчик FreeBSD

Илья Александров
Операционные системы семейства BSD признаны всем компьютерным сообществом
и получили статус идеального программного обеспечения для серверов. Кто-то из вас
использует эту ОС на домашнем компьютере. А знакомы ли вы с историей легендарной
системы?

Университет Беркли (The University of California, Berkeley). дня. Все остальное время на нем рабо-
Как известно, все работающие под уп- Для новой операционной системы был тала более популярная в то время ОС
равлением UNIX компьютеры отсчиты- даже куплен компьютер PDP-11/45 ком- RSTS (кто сейчас вспомнит названия
вают системное время с даты 1970.01.01. пании DEC, что для 1973 года было не- некогда перспективных проектов?).
Конечно же, UNIX не была создана кон- позволительной роскошью. Из-за постоянно возрастающей
кретно в этот день, однако именно эту Как правило, UNIX в университе- потребности студентов в дополни-
дату принято считать днем её рождения. тах устанавливал лично Кен Томпсон, тельном машинном времени в 1975 го-
А значит, и днем рождения BSD, кото- однако в Беркли студенты справились ду в университете появился еще один
рая является прямым потомком дети- с этой задачей собственными силами. компьютер от DEC. На нем была инс-
ща Кена Томпсона (Kenneth Thompson) Правда, к помощи разработчиков всё- таллирована System V6, являвшаяся
и Денниса Ритчи (Dennis Ritchie). таки пришлось прибегнуть – во время в то время самой совершенной вер-
В начале 70-х годов о профессио- своей работы система регулярно дава- сией UNIX. Новый компьютер обеспе-
нальном применении UNIX речь ещё ла сбои. Отладка ошибок велась Томп- чивал студентов-программистов необ-
не шла, и компания AT&T, в которой соном удалённо посредством подклю- ходимыми ресурсами для разработки
была создана эта ОС, бесплатно рас- чения компьютера университета через собственных проектов.
пространяла её по университетам, модем к телефонной сети. Несмотря
чтобы её изучали студенты. Дискета на сотрудничество университета с ком- Появление BSD
с UNIX не миновала и знаменитый Ка- панией AT&T, UNIX функционировала В 1976 году в университете уже был
лифорнийский университет в Беркли на компьютере лишь с 8 до 16 часов целый ряд компьютеров, работавших

90
ретроспектива
под управлением UNIX. При всем ува-
жении к этой блестящей ОС надо отме- Лицензия BSD а также использовать код для написания
тить, что ей еще не доставало многих Кратко суть BSD-лицензии можно сфор- своих программ.
функций, необходимых пользователю. мулировать следующим образом:
Заниматься доработкой никто не хотел,  Операционная система и все входя- Говоря проще, программы по этой ли-
пока над системой не начали корпеть щие в комплект дистрибутива про- цензии можно использовать бесплатно
два аспиранта – Уильям (Билл) Джой граммы защищены авторским пра- и делать с ее исходным кодом все, что ду-
(William (Bill) Joy) и Чак Хэйли (Chak вом. При распространении ПО, ис- ше заблагорассудится. Согласитесь, бо-
Haylee). Поначалу они работали с ком- пользующего код Калифорнийско- лее свободную лицензию найти трудно.
пилятором языка Pascal, приспосабли- го университета, копирайт должен BSD-лицензия очень похожа на ли-
вая его для обучения студентов. Затем быть обязательно сохранен в исход- цензию GPL, однако у неё есть одно важ-
Джой, разочаровавшись в стандар- ных текстах. ное отличие. Все программы, лицензиро-
тном текстовом редакторе UNIX, на-  Нельзя ограничивать права пользова- ванные как GPL, обязаны сопровождать-
писал собственный, получивший имя телей своей программы путем скры- ся исходным кодом. В случае же исполь-
«ex».Этот редактор в измененном и до- тия исходного кода или каким-либо зования BSD возможно распространение
работанном варианте до сих пор вхо- другим образом. ПО в бинарных файлах. Кроме того, все
дит в состав FreeBSD.  Любой пользователь, работающий программы, разработанные при помо-
В определенный момент друзья с программой, которая распространя- щи GPL-лицензированных утилит, также
поняли, что с постоянным «латанием ется по лицензии BSD, может изучать автоматически попадают под действие
дыр» UNIX далеко не уедешь, и ре- и модифицировать исходный код, этой лицензии.
шили создать собственный дистри-
бутив. Под их предводительством не- новых систем по работе с виртуаль- (Rob Gurwitz), Кирк Маккусик (Kirk
большая группа разработчиков, со- ной памятью. McKusick) написали для ядра BSD реа-
стоявшая в основном из студентов, лизацию стека TCP/IP, а также создали
объединились в Группу по Исследова- Сетевая ОС несколько важнейших утилит для свя-
нию Компьютерных Систем (Computer В начале 1980-х Министерство оборо- зи и удаленного управления компьюте-
System Research Group, CSRG). Пер- ны США столкнулось со сложной про- ром: rsh и rlogin.
вая версия их дистрибутива, вышед- блемой. Парк компьютеров в их сети Эти нововведения сделали новую
шего в 1977 году, включала в себя вы- ARPAnet устарел, в результате чего на- версию ОС сверхпопулярной. BSD 4.1
шеупомянутый компилятор, среду раз- зрела необходимость в их замене. Од- (изначально релиз планировалось на-
работки Pascal, а также текстовый ре- нако при этом необходимо было пере- звать 5BSD, но в AT&T беспокоились,
дактор. Кроме того, в ней были ис- носить программное обеспечение на что пользователь может перепутать
правлены ошибки, имевшиеся на тот новую архитектуру, что требовало пол- проект Беркли с её System V) явно бы-
момент в UNIX. Дистрибутив получил ного переписывания важнейших час- ла лучше любой другой UNIX-системы
название Berkley Software Distribution. тей кода. Для поддержания работоспо- того времени.
Сокращенно – известная вам аббре- собности сети была необходима опе- Весной 1982-го Билл Джой объявил
виатура BSD. рационная система, успешно работа- о прекращении работы над проектом
Впоследствии для него была напи- ющая на самых разных типах компью- и своём уходе. «Отец» ОС перешел ра-
сана новая система ввода, улучшена теров. Альтернативу UNIX, которая, как ботать в Sun Microsystems, где его жда-
совместимость между терминалами, известно, работает практически на лю- ла SunOS. Без него работа застопори-
а также проведено тестирование сис- бых электротехнических приборах, лась, и следующий релиз BSD вышел
темы в нескольких университетах. придумать было сложно. Военные об- лишь в 1986 году. После того как ком-
В это же время Билл Джой занял- ратили внимание на только что вышед- пьютеры VAX в конце 80-х стали стре-
ся написанием текстового редакто- шую 3BSD и подписали с Калифорний- мительно устаревать как в моральном,
ра, использующего все возможности ским университетом контракт. так и техническом плане, разработчи-
BSD. Новый редактор получил назва- Получившие финансирование про- ки BSD доработали ОС для её более
ние visual editor (сокращённо – vi). Его граммисты наконец-то смогли сосре- лёгкого переноса на другие платфор-
доработанная версия, которой пользу- доточиться на своей работе по-на- мы. Первой ласточкой стала новая
ются по сей день, называется VIM и ог- стоящему. Для поддержки новых ём- архитектура Power 6/32 от компании
ромным количеством пользователей ких жестких дисков была создана но- Computer Consoles Incorporated. И хо-
операционных систем считается луч- вая файловая система. FFS (Fast File тя ей не суждено было стать массовой,
шим текстовым редактором. System) отличалась от других повы- полученный в результате опыт позво-
В конце 1979 года состоялся выход шенной надежностью и скоростью ко- лил разработчикам в дальнейшем со-
новой версии операционной системы – пирования файлов. Но, конечно, глав- здать версии BSD для самых различ-
2BSD. Тогда же был произведён пере- ные нововведения касались работы ных платформ.
нос этой ОС со старых PDP-11 на ком- с сетью. Уже в восьмидесятые было Вообще можно выделить две вет-
пьютеры VAX. К тому времени BSD ясно, что будущего у операционной ки развития UNIX. Первая, основанная
была единственной системой, пол- системы без нормальной поддержки на System V, дала жизнь таким систе-
ностью реализовавшей возможности сетевых протоколов нет. Роб Гурвиц мам, как HP-UX, Solaris, AIX. Главная

№1, январь 2007 91


ретроспектива
разработчики Patchkit – Нейт Виль-
Символ BSD деленный вид программ под UNIX, выпол- ямс (Nate Williams), Род Граймс (Rod
Символом операционной системы FreeBSD няющих свою работу незаметно для глаз Grimes), Джордан Хаббард (Jordan
является демон (а не чертенок, как многие пользователя. Hubbard). Товарищи посовещались
его ошибочно называют) по имени Beastie. Придумал и нарисовал Beastie Кирк и решили взяться за полную перера-
Происхождение его объясняется очень Маккусик, однако за прошедшее время ботку ОС. В результате история BSD
просто: он не demon, а daemon – именно так различными энтузиастами было нарисо- получила новый толчок своего разви-
в греческой мифологии называли добрых вано огромное количество различных ва- тия, имя которому – FreeBSD.
духов. «Демонами» также называют опре- риаций на тему этого символа.
FreeBSD
их особенность – коммерческая ос- тив, который включал бы в себя лишь Постепенно доработка 386/BSD нача-
нова, а также принадлежность одной реализацию сетевого стека да самые ла превращаться в нечто большее, не-
определённой компании. Вторая вет- необходимые утилиты. жели постоянное исправление оши-
ка – различные вариации BSD с от- Этот программный пакет получил бок. К проекту присоединились еще
крытым исходным кодом и свободным название Networking Release 1 (NR1). два разработчика – Джулиан Элишер
распространением: FreeBSD, NetBSD Для системы была разработана спе- (Julian Elischer) и Дэвид Гринмен (David
и OpenBSD. Существует, конечно же, циальная лицензия, разрешавшая ис- Greenman). Дэвид, кстати, придумал
ещё и Linux, однако о ней в этой ста- пользовать её исходный код в любых имя новой системе – FreeBSD.
тье мы говорить не будем. целях при условии сохранения в нём Для более широкого распростране-
авторских прав Калифорнийского уни- ния новой системы Джордан Хаббард
386 BSD верситета. Несмотря на то что учебное обратился в компанию Walnut Creek
Разработчики BSD были правы, когда заведение просило за одну DAT-карт- CD-ROM, известную своим содействи-
сделали ставку на сетевые возмож- ридж с NR1 1000 долларов, любой че- ем свободно распространяемому ПО.
ности системы. В конце 80-х годов про- ловек мог бесплатно и полностью ле- В начале 90-х годов прошлого столе-
шлого столетия этот «пункт» оказал- гально скопировать дистрибутив у то- тия Walnut Creek распространяла CD-
ся особенно востребованным, и BSD го, кто уже приобрёл кассету с ПО. Од- дистрибутивы Linux, в частности, ле-
начала быстро находить себе новых нако буквально сразу же некоторые гендарный Slackware. Сотрудники ком-
пользователей. Программисты, разра- приверженцы Open Source выложили пании не только занялись тиражирова-
батывавшие ПО с открытым исходным дистрибутив для свободного скачива- нием дисков с FreeBSD, но и предоста-
кодом, к тому времени уже объедини- ния на анонимных ftp-серверах, благо- вили разработчикам мощный компью-
лись в единое Open Source-сообщест- даря чему сразу несколько сотен ком- тер с доступом в Интернет.
во, в результате чего другие компании паний получили в своё распоряже- Первая версия системы, FreeBSD 1.0,
и разработчики также захотели вос- ние бесплатные средства для работы была доступна как на CD-ROM, так и для
пользоваться реализацией протокола с TCP/IP-протоколом. бесплатного скачивания с ftp-серверов.
TCP/IP для реализации собственных Переносом BSD на стремительно ОС базировалась на NR2, дополненной
сетевых продуктов, базировавшихся набиравшую популярность платформу частями кода из 386/BSD и утилитами
на данном стеке. Однако BSD хоть и IBM-совместимых компьютеров занял- из Free Software Foundation. С момента
являлась самостоятельной системой, ся Билл Джолитц (Bill Jolitz). Переписав своего появления новый проект начал
во многом опиралась на код, унасле- основные компоненты следующей вер- пользоваться невероятным успехом,
дованный еще от UNIX компании AT&T. сии Networking Release под номером 2, и уже через несколько месяцев была
Так что коммерческое использование он создал 386/BSD – первую открытую анонсирована FreeBSD 1.1.
BSD без покупки лицензии у этой ком- систему для архитектуры PC. Однако в этот момент произошёл
пании было невозможным. Эта ОС, по мнению общественнос- весьма досадный инцидент, грозивший
Стоит отметить, что сетевые компо- ти, отличалась нестабильностью и тре- перерасти в катастофу. Как вы помни-
ненты ОС были написаны программис- бовала серьезной доработки. Но дело те, исходный код операционный систе-
тами без использования коммерческо- было не в недостатке знаний у Джо- мы UNIX принадлежал AT&T. В 1994 го-
го ПО, вследствие чего под лицензию литца, а в нехватке свободного време- ду компания Novell, занявшаяся покуп-
AT&T не попадали. И тогда Калифор- ни. К счастью, благодаря тому, что 386/ кой прав на различное ПО (например,
нийский университет принял реше- BSD находилась на ftp-серверах, она DR-DOS с WordPerfect), выкупила пра-
ние создать миниатюрный дистрибу- быстро попала в руки многих програм- ва и на UNIX. Сразу после этого она по-
мистов, которые взялись за улучшение дала в суд на Калифорнийский универ-
системы. Созданный независимыми ситет, обвинив его в незаконном рас-
разработчиками пакет Patchkit устра- пространении дистрибутива NR2, ба-
нял основные недостатки ОС, а также зировавшегося на коде, принадлежав-
добавлял в неё новые возможности. шем Novell. В результате долгого су-
К 1993 году Билл Джолиц боль- дебного разбирательства университет
ше не смог продолжать работать над был вынужден изъять из ОС все чужие
386/BSD и отошел от дел. Координа- фрагменты кода. А эти фрагменты яв-
Рисунок 1. Символ FreeBSD торами по развитию проекта стали лялись основой системы, самой важ-

92
ретроспектива
ной её частью. В результате была выпу-
щена новая версия операционной сис- Сообщество OpenBSD дущее, пьют пиво, отдыхают. Также они
темы, 4.4BSD-Lite, состоявшая исклю- Разработчики OpenBSD – не только хоро- проводят компьютерные конкурсы и со-
чительно из свободного кода. Однако шие программисты, но еще и очень инте- здают рисунки для фирменных футбо-
из-за отсутствия многих важных ком- ресные люди; вдобавок ко всему – твор- лок встречи.
понентов NR2 система 4.4BSD-Lite об- чески настроенные. О рисунках разговор отдельный – на об-
ладала массой ограничений, вследс- Ежегодно они собираются в одном ложке каждого нового релиза OpenBSD
твие чего стала большим разочарова- из городов в Канаде или в США на мероп- красуется картинка (рис. 2) с довольно за-
нием для поклонников BSD. риятие, именуемое «hackathons». Програм- мысловатым сюжетом. Нарисована она, ес-
На помощь пришла группа про- мисты общаются, делятся планами на бу- тественно, самими разработчиками.
граммистов из лагеря FreeBSD. Они
решили переписать недостающие ком- тированной на разработчиков, а также форменность все же не оправдалась.
поненты, практически заново воссо- продвинутых пользователей системы. Миром правит PC, да и на компьютерах
здав прежнюю операционную систе- Apple поклонников NetBSD не видно…
му. Над вторым рождением NR2 в об- NetBSD
разе новой версии FreeBSD работал NetBSD – результат деятельности OpenBSD
весь мир: сочувствующие BSD про- большой группы программистов, счи- Проект OpenBSD своим существова-
граммисты вносили свой посильный тающих своей главной целью сделать нием обязан Тео Де Раадту (Theo de
вклад в разработку нового кода. Впос- систему максимально аппаратно не- Raadt). Этот человек был одним из тех,
ледствии подобный способ разработ- зависимой. В 1993 году, когда они взя- кто стоял у истоков NetBSD. Но, от-
ки блестяще реализовал Линус Тор- лись за работу, эта идея как раз стано- личаясь суровым нравом, Тео в 1995
вальдс (Linus Torvalds), когда в рабо- вилась актуальной. году поссорился с товарищами и на-
те над его ядром Linux приняло учас- Операционная система была осно- чал работать над собственным проек-
тие большое количество программис- вана на различных свободно-распро- том. Основывался Тео на все той же
тов со всего земного шара. страняемых программных компонен- BSD4.4-Lite. Кроме самостоятельных
Реинкарнация системы заняла око- тах, главным образом – на дистрибу- компонентов, OpenBSD по мере свое-
ло года. Еще пара месяцев ушла на ус- тиве 4.4BSD-Lite, являвшейся прароди- го развития включала в себя разра-
транение шероховатостей в версии ОС тельницей FreeBSD. Работа над систе- ботки из лагерей FreeBSD и NetBSD.
для платформы x86. В январе 1995 го- мой стартовала в январе 1993-го, и уже В первые годы своего существования
да пользователи заполучили в свои ру- к апрелю была выпущена первая вер- OpenBSD была больше всего похожа
ки дистрибутив FreeBSD 2.0. В июне сия. Функционировала NetBSD тог- именно на NetBSD, отличаясь от неё
вышел доработанный и дополненный да только под i386. Чуть позже ОС пе- лишь некоторыми дополнительными
релиз под номером 2.0.5. ренесли на архитектуры Commodore функциями.
В дальнейшем ОС изменялась Amiga, Sun Sparc и Apple Macintosh. Главным козырем системы стала
«на глазах»: жесточайший монито- В сентябре 1995-го была создана её высокая защищённость, о которой
ринг ядра, постоянные (каждые 3-5 организация NetBSD Foundation, коор- уже слагают легенды. OpenBSD из-
месяцев) обновления. Рассказывать динировавшая дальнейшее развитие вестна как самая «неприступная» ОС,
о том, какие нововведения появились проекта. Сегодня NetBSD продолжа- и ошибки, связанные с безопаснос-
во FreeBSD с изменением ее версий, ет развиваться согласно изначальной тью, разработчики устраняют мгновен-
я не буду. Для этого существует об- концепции – возможности работать но. «Бесплатная. Функциональная. Бе-
ширный файл с описанием изменений на максимально широком круге аппа- зопасная» (Free. Functional. Security) –
(change-log), доступный в Интернете. ратных платформ. Новые релизы сис- вот девиз OpenBSD, подчеркивающий
Упомяну лишь, что с 1996 года на- темы включают в себя поддержку DEC ее главные достоинства. В рамках это-
чал применяться новый принцип на- VAX и Alpha, Motorola PowerPC и др. го проекта были созданы файервол
звания версий системы. Все только что Список платформ, на которых NetBSD Packet Filter, который считается самым
вышедшие новые версии ОС называ- чувствует себя комфортно, исчисляет- безопасным среди программ такого
ются Release. В ветке STABLE, ориен- ся сотнями. Установить ОС можно да- рода, а также наиболее популярная ре-
тированной на рядовых пользователей, же на игровую консоль. ализация протокола SSH – OpenSSH.
исправляются ошибки и иногда добав- Однако, несмотря на то что разра- Также разработчики OpenBSD с осо-
ляются некоторые изменения. Все же ботчики NetBSD пишут свой код в рам- бенной тщательностью следят за до-
кардинально новые задумки реализу- ках POSIX, статус системы, соответс- кументацией к системе и категори-
ются в рамках ветки CURRENT, ориен- твующей этим стандартам, она вряд чески возражают против не свобод-
ли получит. За стандартизацию нужно ных программ.
заплатить, а разработчики и так счита- Что ж, у операционных систем се-
ют, что их ОС является самой лучшей мейства BSD долгая и славная ис-
из свободно распространяемых. Впол- тория. Будем надеяться, что их ждет
не объяснимая и понятная позиция про- не менее достойное будущее!
граммиста по отношению к своему тру-
Рисунок 2. Обложка последнего релиза
OpenBSD ду. Вот только ставка на мультиплат- Редактор Дмитрий Мороз

№1, январь 2007 93


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

Как стать обладателем диска,


если вы не оформили годовую
подписку, читайте на сайте журнала
www.samag.ru
Редакционная подписка  Вы можно оформить подписку с лю-  Копию заполненного и оплаченно-
для физических лиц бого месяца на любой срок. го бланка отправьте в редакцию по
 Вы можете оформить подписку  В графе «Сумма» проставьте сум- факсу: (495) 628-8253 или на элек-
на любой российский адрес. му за выбранное количество номе- тронный адрес: info@samag.ru
 При заполнении квитанции разборчи- ров. Стоимость одного номера жур-  Журнал высылается почтой прос-
во укажите фамилию, имя, отчество нала 150 руб. За год – 1800 руб. той бандеролью только после
полностью, почтовый индекс и адрес НДС и почтовые расходы включе- поступления денег на расчетный
получателя, контактный телефон. ны в стоимость. счет.

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

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

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

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

№1 январь 2007 95
СИСТЕМНЫЙ АДМИНИСТРАТОР
№1(50), Январь, 2007 год

УЧРЕДИТЕЛИ
ЧИТАЙТЕ
Владимир Положевец
Александр Михалев В СЛЕДУЮЩЕМ
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец
НОМЕРЕ:
РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец Принципы построения популярные программы сжатия (та-
Ответственный секретарь доменов Active Directory кие, как DivX, XviD) имеют множес-
Наталья Хвостова Многие системные администраторы тво настроек, предоставляя огром-
sekretar@samag.ru по сей день используют старые и по- ное количество рычагов управления,
Технический редактор тому, по их мнению, надежные принци- но не объясняют, как ими пользовать-
Владимир Лукин пы логического построения сети. Речь, ся. Как совместить минимальную по-
Редактор конечно же, идет о рабочих группах. терю качества с максимальной степе-
Алексей Коршунов
И хотя решения на базе Active Directory нью сжатия, читайте в следующем вы-
Внештатные редакторы
давно перешли в разряд консерватив- пуске журнала.
Алексей Барабанов
Сергей Супрунов ных, зачастую во многих организациях
Дмитрий Мороз с большим парком компьютеров мож- Мониторинг нагрузки
Крис Касперски но увидеть, как системный админис- операционной системы
тратор бегает от одного пользовате- Solaris
РЕКЛАМНАЯ СЛУЖБА ля к другому, пытаясь корректно раз- После установки нового сервера, как
тел./факс: (495) 628-8253 дать им права или настроить учетную правило, проводятся измерения ис-
Евгения Тарабрина запись. Переход на домены Windows ходной рабочей нагрузки. Впоследс-
reсlama@samag.ru не спасет вас полностью от проблем, твии необходимо вести периодические
возникающих на местах пользовате- измерения использования ресурсов
Верстка и оформление
лей, но позволит сэкономить огром- системы: оперативной памяти, под-
maker_up@samag.ru
ное количество времени и сил, а так- системы дискового ввода-выовда, се-
Дизайн обложки же повысить контроль за безопаснос- ти и центрального процессора, чтобы
Николай Петрочук тью локальной сети. выявлять «узкие места», препятству-
ющие производительной работе сис-
По вопросам распространения Профессиональная темы. Предлагаемая методика извес-
обращайтесь по телефону: компрессия видео тна давно и в целом применима к лю-
(495) 628-8253 (доб. 120) Потребность в сжатии видео растет бому компьютеру, под управлением
с каждым днем. Источнико