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

№5(66) май 2008

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


www.samag.ru

Управляем объектами
в Active Directory

№5(66) май 2008


Терминальные службы
в Windows Server 2008

Сколько стоит переход


на легальный софт?

SharePoint в качестве
платформы документооборота

Как подружить
GDI-принтер и Linux

Используем систему
мониторинга сети OpenNMS

Фильтруем спам в EXIM


с помощью SpamProbe

Изучаем теневое копирование

Бессистемные заметки
о поиске работы за рубежом
Реклама

Реклама
в номере
3 ТЕНДЕНЦИИ ЧЕЛОВЕК НОМЕРА
АДМИНИСТРИРОВАНИЕ Открытия Николая Новожилова
Интервью с директором Академии корпоративных сис-
4 Управляем объектами в Active Directory тем.
Часть 1 Оксана Родионова
Управление объектами в Active Directory осуществляет-
ся с помощью соответствующих мастеров. Какие поля БЕЗОПАСНОСТЬ
при этом изменяются в каталоге Active Directory – пок-
рыто тайной. 58 Правда об идентификаторах
Иван Коробко безопасности
Как разобраться в идентификаторах безопасности.
10 Сколько стоит переход Иван Коробко
на легальный софт?
Многие организации продолжают эксплуатировать пи- 64 Новые возможности Heimdal –
ратское программное обеспечение на своих компью- объединение открытых ключей
терах, зачастую не совсем представляя, что их ждет и Kerberos
при проверке органами контроля. Попробуем ответить Проект Heimdal-Kerberos позволяет объединить возмож-
на вопрос: сколько стоит спокойный сон руководителя ности инфраструктуры публичных ключей и Kerberos
и системного администратора? в рамках единой регистрационной системы. Об этом,
Александр Емельянов а также о других новинках программного пакета будет
сегодня рассказано.
12 Терминальные службы Михаил Кондрин
в Windows Server 2008
Служба терминалов в Windows Server 2008 позволит 70 Изучаем теневое копирование
решить ряд проблем, связанных с работой приложе- Теневое копирование файлов, записываемых на вне-
ний, требующих одновременного доступа множества шние носители, стало практически обязательным инс-
пользователей. трументом в арсенале корпоративных хранителей сек-
Андрей Бирюков ретов. Разберемся в особенностях реализации и рабо-
ты этой технологии.
18 SharePoint в качестве платформы Роман Васильев
документооборота
Работаем с workflow в WSS 3.0 и MOSS 2007. WEB
Нелли Садретдинова
74 XML-native DB. XQuery
28 Устанавливаем и настраиваем систему В прошлом номере описывалась разработка Институ-
мониторинга сети OpenNMS та cистемного программирования XML-native DB Sedna.
Когда количество активного оборудования в сети не- Для доступа в XML-ориентированных базах данных кон-
уклонно растет, а контролировать работоспособность сорциумом W3C рекомендован язык XQuery. Он явля-
и качество предоставляемых сервисов становится ется такой же неотъемлемой частью XML-native базы
все сложнее, на помощь приходит система мониторин- данных, как SQL в реляционных СУБД.
га сети OpenNMS. Александр Календарев
Андрей Семенов
ИЗ ЛИЧНОГО ОПЫТА
36 Медиация Linux и GDI-принтера
Решаем проблему печати на GDI-принтеры в ОС Linux. 80 Бессистемные заметки о поиске работы
Павел Закляков за рубежом
Многие люди (особенно IT-специалисты) хотят уехать
42 Как запустить «САМО-Тур» для Windows отсюда, но не знают, как найти хорошую работу за ру-
под Linux бежом. Автор, имея более чем десятилетний опыт уда-
Экономим, запуская программный комплекс «САМО- ленной работы, наконец-то нашел компанию своей меч-
Тур» на платформе Linux, что изначально не поддержи- ты, стоящую того, чтобы оторваться от кресла и сме-
валось разработчиком. нить Северный Кавказ на Сан-Франциско. Хотите и вы
Сергей Барановский найти работу своей мечты?
Крис Касперски
50 Фильтруем спам в EXIM с помощью
SpamProbe РЕТРОСПЕКТИВА
Устанавливаем и настраиваем SpamProbe.
Павел Литвинов 88 Хакеры: история субкультуры
Часть 2
АДМИНИСТРИРОВАНИЕ «1С» Технологии развивались. Хакеры старой школы, с монс-
трообразными ЭВМ и безумно дорогим машинным вре-
53 Хитрости и тонкости работы, менем оставались в прошлом. Компьютеры станови-
позволяющие экономить время лись доступней, а хакерами стали называть совсем
В версии 8.х «1С:Предприятие» появилось много ново- других, нежели раньше, людей.
го и отличного от версии 7.7, поэтому часто возникают Илья Александров
самые неожиданные вопросы.
Андрей Луконькин 92 КНИЖНАЯ ПОЛКА
17, 91, 94 BUGTRAQ

№5, май 2008 


Реклама
тенденции
Qt не стоит на месте мация о том, что к организации Gentoo Foundation вернул-
Последний весенний месяц подарил немало интересных ся ее официальный статус: «Если вас интересует юриди-
новостей, связанных с Qt, популярным открытым фрейм- ческое состояние Gentoo, можете расслабиться, поскольку
ворком для разработки межплатформенных приложений на прошлой неделе в штате Нью-Мексико было объявлено
с графическим пользовательским интерфейсом. о том, что Gentoo Foundation Inc вновь начинает функцио-
В начале мая стало известно о выпуске финальной вер- нировать и получает право заниматься бизнесом». Орга-
сии этого продукта норвежской компании Trolltech – Qt 4.4. низация Gentoo Foundation является ответственной за ин-
Главный акцент в релизе был сделан на взаимодействие теллектуальную собственность проекта Gentoo (авторские
с Web и мобильными устройствами. Среди ключевых нов- права, товарные знаки) и финансы (решает, на что будут
шеств: интеграция с Open Source-движком WebKit, лежа- тратиться деньги).
щем в основе веб-браузера Safari, появление поддержки Впрочем, одновременно проявилось и другое событие:
ОС Windows CE и мультимедийного фреймворка Phonon Брайан Остергаард (Bryan Ostergaard), бывший разработ-
(он используется в KDE 4.0), улучшенная поддержка XML чик Gentoo, представил новый Linux-дистрибутив, получив-
(в том числе, XQuery и XPath), появление API для многопо- ший название Exherbo.
точных приложений (Concurrency Framework). Как уточнил автор, работа над проектом ведется уже не-
Вскоре стало известно о том, что в лабораториях сколько месяцев, а идея его создания пришла вследствие
Trolltech созрел новый проект, нацеленный на интеграцию опыта, полученного за годы участия в проекте Gentoo. Сре-
с конкурирующим Open Source-решением GTK+. Экспери- ди основных отличий от своего идеологического вдохнови-
ментальная разработка QGtkStyle призвана предоставить теля отмечаются новый формат пакетов (схожий с Gentoo
приложениям, основанным на Qt 4, возможности интегри- ebuild) и некоторые проекты вроде измененной системы
роваться в такие графические окружения на базе GTK+, инициализации (init system).
как GNOME и Xfce. При этом QGtkStyle не пытается прос- На данный момент не существует образов для установ-
то «имитировать» GTK-стили – в ней напрямую использу- ки системы, однако дерево пакетов открыто для всех жела-
ется движок тем GTK+. ющих. Впрочем, разработчики строго не рекомендуют да-
19 мая в блоге «Getting Started with OpenMoko» появи- же помышлять о сколь-нибудь серьезном использовании
лось сообщение о том, что энтузиасты, занимающиеся раз- Exherbo на данной стадии.
работкой программной Open Source-платформы на базе
Linux для мобильных устройств и созданием первого пол- Подготовил Дмитрий Шурупов
по материалам www.nixp.ru
ностью свободного смартфона Neo, объявили о переходе
на Qtopia. Раньше основные приложения для платформы
Openmoko разрабатывались на основе GTK+, а отныне бы-
ло принято решение воспользоваться мобильной платфор-
мой Qtopia, основанной на Qt.

VIA открыла 16 тысяч строк кода


под лицензией GPL
8 мая из публикации информационного веб-сайта Phoronix
стало известно, что компания VIA обнародовала более
16 тысяч строк кода из framebuffer-драйвера для Linux под
лицензией GNU GPLv2.
Представители VIA еще в апреле на мероприятии Linux
Foundation Austin Summit говорили, что планируют на-
чать Open Source-инициативу, подобную той, что недав-
но запустила AMD (RadeonHD). И вот VIA объявила о вы-
пуске значительного массива кода, относящегося к ус-
тройству framebuffer в Linux-ядре. Драйвер поддержи-
вает VIA Unichrome CLE266, K400, K800, PM800, CN700,
CX700, K8M890, P4M890, P4M900 и VX800, а ответствен-
ным за него назначен сотрудник компании Джозеф Чан
(Joseph Chan).
Как отметили авторы Phoronix, на первый взгляд исход-
ный код представился им «довольно хорошим».

Gentoo: не все так гладко?


Все последнее время имя проекта Linux-дистрибутива
Gentoo в СМИ и блогах возникало преимущественно в свя-
зи с критикой его организационной составляющей и непо-
нятной ситуации в менеджменте.
19 мая на официальном сайте Gentoo появилась инфор-

№5, май 2008 


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

Управляем объектами
в Active Directory
Часть 1

Иван Коробко
Управление объектами в Active Directory осуществляется с помощью соответствующих
мастеров. Какие поля при этом изменяются в каталоге Active Directory – покрыто тайной.

В
нутренняя структура каталога ность, перерыть множество источни- например Top, другие строго иденти-
Active Directory гораздо сложнее, ков. Не проще ли, как говорят, поста- фицируют объект. Избыточность зна-
чем кажется на первый взгляд. вить все точки над «i»? чений необходима для совместимос-
Всем известно, что управление объ- ти доменов, построенных на основе
ектами в Active Directory осуществля- Типы объектов Windows 2К и Windows NT.
ется с помощью графической оболоч- в Active Directory При составлении поисковых за-
ки, встроенного мастера или с помо- Каталог Active Directory поддерживает просов в качестве фильтра исполь-
щью сценария. Существует множест- 8 основных типов объектов (см. табли- зуют только индивидуальные значе-
во литературы, в которой рассказано, цу 1), каждый из которых описывается ния массива objectClass для однознач-
как написать сценарий, создающий набором свойств. Часть из них повто- ной идентификации. Значения многих
учетную запись пользователя, пропи- ряется, часть – индивидуальна. С дру- элементов объектов разных типов пе-
сана пошаговая работа мастера. Одна- гой стороны значения некоторых полей ресекаются.
ко мне не удалось найти статью, в ко- можно просмотреть и изменить с по- Механизм поиска объектов рас-
торой четко была бы описана взаимо- мощью встроенного в Active Directory смотрим после того, как вы получите
связь полей мастера и полей объекта мастера, а часть – только с помощью представление об объектной модели
Active Directory. специализированного программного Active Directory.
Создание каждого сценария для обеспечения или сценария.
начинающего программиста или сис- Тип объекта определяется набором Параметры объектов
темного администратора – это бит- параметров, которые хранятся в Active в Active Directory
ва. Чтобы ее выиграть, необходимо Directory в массиве objectClass. Неко- Все параметры объектов можно раз-
проявить смекалку и сообразитель- торые значения присутствуют везде, делить на три группы:


администрирование
n Явно задаваемые. Значения этих Таблица 1. Взаимосвязь типов объектов Active Directory и значений параметра
objectClass
параметров напрямую задаются
системным администратором. Са- Комментарий Тип объекта Значение objectClass Фрагмент поискового
запроса
мый яркий пример – имя объекта.
n Неявно определяемые. Эти пара- Учетная запись компьютера Computer Top
Person
objectClass=’Computer’

метры администратор задает заву- OrganizationalPerson


алированно. К ним относятся тип User
Computer
и местоположение объекта.
Контакт, используется в почтовых Contact Top objectClass=’Contact’
n Скрытые объекты. Эти объекты приложениях Person
создаются или изменяются систе- OrganizationalPerson
Contact
мой. С помощью сценария или мас-
Группа безопасности Group Top objectClass=’Group’
тера их, как правило, невозможно Group
изменить. К таким параметрам от-
Учетная запись пользователя, InetOrgPerson Top objectClass=’InetOrgPerson’
носятся SID и GUID объекта, время не совместимая с доменами Windows 2k Person
создания объекта. OrganizationalPerson
User
InetOrgPerson
Объектная модель Папка дерева каталогов Active Directory OU top objectClass=’organizationalUnit’
Active Directory organizationalUnit
Не так давно на сайте Microsoft появи- Опубликованный в Active Directory Printer Top objectClass=’PrintQueue’
сетевой принтер Leaf
лось описание полей Active Directory ConnectionPoint
(http://msdn2.microsoft.com/en-us/library/ PrintQueue
ms675090(VS.85).aspx). Опубликованная в Active Directory Shared Folder Top objectClass=’Volume’
Описание сделано в стиле Microsoft, сетевая папка Leaf
ConnectionPoint
т.е. использовать эту информацию Volume
по принципу «как есть» невозможно. Учетная запись пользователя, User Top objectClass=’user’ and not
В ней приведена вся схема катало- совместимая с доменами Windows NT Person objectClass=’computer’
OrganizationalPerson
га в ужасно сокращенном виде, без User
примеров.
Чтобы посмотреть «начинку» объек- Рассмотрим подробнее каждое лит читателю понять взаимосвязь по-
та, рекомендуется использовать утили- из этих действий на примере рабо- лей Active в каталоге Directory и по-
ту (см. рис. 1), недавно созданную со- ты мастера. Начнем с учетной записи лей в мастере. Сначала рассмотрим
трудниками Microsoft – Active Directory пользователя. основные принципы создания учет-
Explorer 1.01 (http://technet.microsoft. ной записи.
com/en-us/sysinternals/bb963907.aspx), Учетная запись
однако она не так удобна в использо- пользователя Создание учетной
вании, как хотелось бы. Рассмотрим процесс создания учет- записи пользователя.
Существует более удачный вари- ной записи пользователя с помощью Основные принципы
ант – утилита Softerra LDAP Browser мастера и программным способом. Со- Для инициализации процесса созда-
(http://www.ldapbrowser.com), о кото- поставление этих двух методов позво- ния учетной записи необходимо запус-
рой я неоднократно упоминал ранее
в своих статьях. Безусловно, эта ути-
лита удобнее, но несколько сложнее
в использовании.

Управление объектами
в Active Directory
Рассмотрим процессы управления
объектами с точки зрения взаимосвя-
зей стандартных инструментов, при-
лагаемых Microsoft, и объектной мо-
дели LDAP.
Из ранее перечисленных объектов
чаще всего используются следующие:
учетная запись пользователя, группа
безопасности и папка.
С объектами в Active Directory можно
проделывать следующие манипуляции:
создавать, читать, изменять (если воз-
можно), удалять и, наконец, искать. Рисунок 1. Внешний вид программы Active Directory Explorer 1.01

№5, май 2008 


администрирование
димо указать фамилию, имя и отчест-
во пользователя. Необязательно зада-
вать все три параметра: достаточно за-
дать один из них. Полное имя (поле 4)
формируется на основе Ф.И.О., задан-
ных с помощью первых трех полей. Его
значение формируется автоматичес-
ки, однако администратор может из-
менить его на любое другое. Первые
четыре параметра могут быть позже
изменены (см. рис. 3). Для этого не-
обходимо войти в свойства пользова-
теля во вкладку «General» (отобража-
ется по умолчанию).
Вторая группа параметров – имя
пользователя в сети и дополнитель-
Рисунок 2. Создание учетной записи пользователя ное имя, требуемое для связи доме-
нов, построенных на основе Windows
NT и Windows 2K. В Active Directory им
соответствуют параметры userPrincipal
Name и sAMAccountname. Каждое
из этих имен состоит из двух частей:
имени пользователя и текущего доме-
на. Имя текущего домена определяет-
ся автоматически и не может быть из-
менено. В таблице 2 приведено опи-
сание полей, задействованных на пер-
вом шаге работы мастера.
На втором этапе работы мастера
администратор задает пароль поль-
зователя, длина которого определя-
ется доменной политикой безопаснос-
ти «Minimum Password Length», распо-
ложенной в «Computer Configuration →
Windows Settings → Security Settings →
Account Policies → Password Policy» ос-
настки групповых политик. Опреде-
ляется политика безопасности учет-
Рисунок 3. Работа мастера «Создание учетной записи пользователя». Шаг 1 ной записи.
На рис. 4 показано, какими пара-
тить соответствующий мастер в ММС- Работа мастера состоит из трех метрами Active Directory может управ-
оснастке Active Directory. Для этого ус- частей. Рассмотрим последовательно лять системный администратор на
тановите курсор на папку, в которой каждую из них. этапе создания учетной записи поль-
будет создана учетная запись, и, выз- Во время создания учетной записи зователя.
вав контекстное меню папки, выберите пользователя на первом шаге необхо- К этим параметрам относятся:
в нем пункт «New → User» (см. рис. 2).
Выполнив эти действия, системный Таблица 2. Параметры учетной записи пользователя. Шаг 1
администратор неявным образом оп- Параметр мастера Поле в Active Тип данных Вкладка в свойствах Описание
ределил местоположение учетной за- Directory объекта USER

писи будущего пользователя, а имен- First name firstName String General Имя сотрудника
но часть параметра distinguishedName: Initials Initials String General Инициалы (до 6 символов)
CN=User,DC=msk, DC=ru и тип объек- Last name Sn String General Фамилия сотрудника
та – параметра objectClass. Full name displayName String General Полное имя сотрудника
Замечение: если папка являет- (формируется на основе
первых трех полей)
ся встроенной, то ее имя определяет-
ся параметром CN. Все остальные па- User logon name userPrincipalName String Account Имя регистрации
пользователя в сети
раметры идентифицируются парамет-
User logon name sAMAccountname String Account Имя регистрации
ром OU (Organizational Unit), например (pre-Windows 2000) пользователя в сети для
OU=Test,CN=User,DC=msk, DC=ru. учетных записей Windows NT


администрирование
n setPassword. Значение этого обя-
зательного параметра – пароль,
хранящийся в зашифрованном
виде в Active Directory. С помощью
сценария его можно только запи-
сать. Считать существующее не
представляется возможным: оно
зашифровано.
n pwdLastSet. Значением параметра
pwdLastSet управляют с помощью
«User must change password at next
logon» (см. рис. 4). По умолчанию
принимает значение 0.
n userAccountControl. Оставшиеся
три параметра («User cannot change
password», «Password never expires»
и «Account is disabled») формиру-
ют в сумме значение параметра
userAccountControl. По умолчанию
userAccountControl=513 (стандарт- Рисунок 4. Работа мастера «Создание учетной записи пользователя». Шаг 2
ная учетная запись пользователя).

Все перечисленные параметры,


кроме setPassword, можно изменить
во вкладке «Account» учетной записи
пользователя.
После завершения второго шага
работы мастера перейдем к третьему –
завершающему этапу, на котором осу-
ществляется проверка ранее задан-
ных параметров (см. рис. 5). В диало-
говом окне приводится следующая ин-
формация:
n местоположение пользователя Рисунок 5. Работа мастера «Создание учетной записи пользователя». Шаг 3
в Active Directory;
n отображаемое имя пользователя в Таблица 3. Исходные данные для создания учетной записи пользователя
сети; Поля мастера Значение Комментарий
n имя пользователя для регистрации Create In MSK\Users Встроенная в корневой каталог домена папка Users
в сети; Шаг 1
n параметры безопасности, которые First name Petrov Фамилия
устанавливаются на втором шаге
Initials V Инициал
работы мастера.
Last name Ivan Отчество
Full name Petrov, Ivan Отображаемое имя
На этом этапе невозможно напря-
мую изменить какие-либо данные. User logon name IPetrov Имя для входа в сеть

Для корректировки параметров необ- User logon name (pre-Windows 2000) Petrov Имя для входа в сеть (для совместимости с Windows NT
доменами)
ходимо вернуться на шаг или два ша-
Шаг 2
га назад (см. рис. 5).
Password, Confirm password 123456789 Пароль

Создание учетной записи User must change password at next logon Да Пользователь должен изменить пароль после первого
пользователя. Работа мастера входа в сеть

Создадим учетную запись пользовате- User cannot change password Нет Пользователь не может изменить пароль

ля с помощью мастера. Исходные дан- Password never expires Нет Действие пароля неограниченно
ные приведены в таблице 3. Account is disabled Нет Учетная запись выключена
Рассмотрим пошагово создание
учетной записи. чение» таблицы 3. Обратите внимание, Имя пользователя для регистрации
В появившемся диалоговом окне что после заполнения первых трех по- в сети задается системным админист-
заполните поля в соответствии с дан- лей при переходе на четвертое оно за- ратором. На основе введенных данных
ными, приведенными в колонке «Зна- полняется автоматически (см. рис. 6). автоматически создается имя для под-

№5, май 2008 


администрирование
дущем разделе. В таблице 4 приведены параметры и со-
ответствующие им значения, которые необходимо задать
в Active Directory.
Сценарий работает по следующему алгоритму: снача-
ла определяется имя текущего домена с помощью обраще-
ния к виртуальному объекту RootDSE и трансформируется
с помощью функции DetectDNSName в короткое имя домена.
В сценарии используется составное и сокращенное имя до-
мена. Составное имя домена участвует в формировании пу-
ти к создаваемому объекту, сокращенное – для назначения
имени объекта, совместимого с доменами Windows NT.
Далее создается объект с помощью функции Create.
В качестве ее параметров задается имя объекта и его тип.
Задаются значения параметров с помощью функции Put и их
запись в каталог Active Directory с помощью метода SetInfo.

Листинг 1. Создание учетной записи пользователя


Рисунок 6. Работа мастера. Шаг 1
set RootDSE = GetObject("LDAP://RootDSE")
держки доверительных отношений с доменом Windows NT, Domain = rootDSE.Get("defaultNamingContext")
Set objUsers = GetObject("LDAP://CN=Users," & Domain)
которое может быть изменено. Set objNewUser = objUsers.Create("user", "cn=Ivan\, Petrov")
На втором шаге необходимо ввести пароль и подтвер-
objNewUser.Put "sAMAccountName", "IPetrov"
дить его. По назначению пароля существуют следующие objNewUser.Put "sn", "Petrov"
рекомендации: objNewUser.Put "givenName", "Ivan"
objNewUser.Put "Initials", "V"
n пароли чувствительны к регистру символов; objNewUser.Put "userPrincipalName", "IPetrov@" & ↵
n используйте цифры в паролях; DetectDNSName(Domain)
objNewUser.SetInfo
n рекомендуемая длина пароля – не менее 7 символов; objNewUser.AccountDisabled=False
n в пароле не использовать символы «/\|:;,+*?<>; objNewUser.SetPassword("1234567890")
objNewUser.SetInfo
n не используйте в пароле имя учетной записи пользова-
теля; Function DetectDNSName(Domain)
' Определение DNS-имени домена
n не используйте очевидных паролей, вроде 0123456789. LDAPArray = Split(Domain,",")
For Each el In LDAPArray
DNSName = DNSName + right(el,Len(el)-3) + "."
Контроль за выполнением некоторых из перечисленных Next
требований может быть возложен на доменные групповые DetectDNSName = left(DNSName, Len(DNSName)-1)
End Function
политики. Остальные четыре параметра безопасности ос-
тавим без изменений (см. рис. 7). В приведенном сценарии есть несколько особенностей,
На последнем, завершающем этапе, осуществляется на которые необходимо обратить внимание:
контроль установленных параметров (см. рис. 8). n Для того чтобы в имени учетной записи (поле CN) при-
сутствовала запятая, необходимо при присвоении зна-
Программное создание учетной записи чения перед запятой поставить косую черту (\): «cn=Ivan\,
пользователя Petrov». В противном случае интерпретатор VBScript вы-
Во время создания учетной записи пользователя програм- даст сообщение об ошибке (см. рис. 10).
мным способом (VBScript), как при работе мастера, долж- n Значение параметра userPrincipalName содержит суф-
ны быть обязательно заданы несколько параметров. В лис- фикс, в данном случае @msk.ru. Им является DNS-
тинге 1 приведен сценарий, позволяющий создать учетную имя текущего домена. В сценарии присутствует функ-
запись пользователя. Результат действия сценария иден- ция DetectDNSName, которая преобразует LDAP-имя
тичен работе мастера, который был рассмотрен в преды- в DNS‑имя.
n Значение свойства AccountDisabled
не может быть изменено, пока объ-
ект не существует, поэтому ме-
тод SetInfo в скрипте используется
дважды.

В результате работы мастера или


рассмотренного сценария в Active
Directory создается учетная запись
пользователя. Уверен, что все адми-
нистраторы сети видели ее в стандар-
тной оснастке Active Directory, однако
Рисунок 7. Работа мастера. Шаг 2 Рисунок 8. Работа мастера. Шаг 3 мало кто видел, как на самом деле вы-


администрирование
глядит самая обыкновенная учетная
запись пользователя, созданная обыч-
ным мастером. На рис. 9 представле-
ны все поля созданной учетной записи.
Как видно, одни атрибуты были зада-
ны напрямую, другие – косвенным об-
разом, третьи были созданы системой
автоматически. О том, какие бывают
атрибуты, как считывать их значения,
речь пойдет в следующей статье.

Создание объектов.
Общий случай
После подробного рассмотрения про-
цесса создания учетной записи поль-
зователя, пришло время подвести
своеобразный итог и создать шаблон
(см. листинг 2), позволяющий созда-
вать учетные записи объектов различ-
ного типа. Для создания какого-либо
объекта необходимо задать минимум
три параметра и еще несколько пара-
метров, присущих объекту данного ти-
па. К обязательным параметрам отно- Рисунок 9. Параметры учетной записи пользователя, созданной с помощью мастера
сят путь к объекту, его имя и тип.
на. С помощью функции GetObject() получают доступ к пап-
Листинг 2. Шаблон создания объектов в Active Directory ке, в которой будет создан объект. На четвертой строке с по-
set RootDSE = GetObject("LDAP://RootDSE") мощью функции Create(), имеющей два параметра, созда-
Domain = rootDSE.Get("defaultNamingContext") ется объект. Первый параметр функции – тип создаваемо-
Set objs = GetObject("LDAP:// " + ПУТЬ К ПАПКЕ + " & Domain)
Set obj = objs.Create("ТИП ОБЪЕКА", "ИМЯ ОБЪЕКТА") го объекта, второй – его имя в домене. Далее, с помощью
функции Put(), осуществляется присваивание значений ха-
obj.Put "ПОЛЕ ТИПА СТРОКА В ACTIVE DIRECTORY", "ЗНАЧЕНИЕ"
obj.Put "ПОЛЕ ТИПА МАССИВ В ACTIVE DIRECTORY", ↵ рактерным параметрам. И, наконец, запись присвоенных
Array("ЗНАЧЕНИЕ1", "ЗНАЧЕНИЕ2", "ЗНАЧЕНИЕ3"…) данных в каталог с помощью функции SetInfo().
obj.SetInfo Обратите внимание на последние две строки шаблона.
В них осуществляется присваивание значений параметру,
В первых двух строках шаблона с помощью виртуально- который имеет строковый тип данных, и массиву из строк.
го объекта RootDSE определяют LDAP-имя текущего доме- При задании значений массиву обязательно используется
Таблица 4. Параметры сценария для создания учетной записи ключевое слово Array, с помощью которого объявляют и сра-
пользователя зу же определяют значения элементов массива. На основе
Параметр Комментарий созданного шаблона приведу примеры создания учетной
cn=Ivan\, Petrov Отображаемое имя
записи группы (см. листинг 3) и папки (см. листинг 4).
sAMAccountName = IPetrov Имя в сети для совместимости с доменами
Windows NT
Листинг 3. Создание учетной записи группы безопасности

Sn = Petrov Фамилия set RootDSE = GetObject("LDAP://RootDSE")


Domain = rootDSE.Get("defaultNamingContext")
givenName = Ivan Имя Set objGroups = GetObject("LDAP:// CN=Test,CN=Groups," & ↵
Domain)
Initials = V Инициалы
Set objGrous = objGroups.Create("group", "cn=Print Manage")
userPrincipalName = IPetrov@msk.ru Имя в сети домена Windows 2K
objGroup.Put "sAMAccountName", "Print Manage"
SetPassword=123456789 Назначаемый пароль objGroup.SetInfo
pwdLastSet=0 Изменить пароль при следующем входе в сеть
distinguishedName = CN=Ivan\, Путь к создаваемой учетной записи Листинг 4. Создание учетной записи папки
Petrov,CN=Users,DC=msk,DC=ru
set RootDSE = GetObject("LDAP://RootDSE")
Domain = rootDSE.Get("defaultNamingContext")
Set objOUs= GetObject("LDAP://CN=Users," & Domain)
Set objOU = objOUs.Create("organizationalUnit", "ou=Test")
objOU.SetInfo

В следующий раз будет подробно рассмотрена методи-


ка чтения различных параметров учетной записи пользо-
Рисунок 10. VBScript. Ошибка работы сценария вателя, различных типов данных.

№5, май 2008 


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

Сколько стоит переход


на легальный софт?
Александр Емельянов
Многие организации до сих пор продолжают эксплуатировать пиратское программное
обеспечение на своих компьютерах, зачастую не совсем представляя, что ждет их
при проверке органами контроля. Многие закрывают на это глаза, надеясь на наше
национальное «авось». Попробуем ответить на вопрос: сколько же стоит спокойный сон
руководителя и системного администратора?

И
менно эти два человека зачас- Исходя из этих данных будет фор- та является задачей не из легких, по-
тую оказываются ответчиками мироваться приблизительный список этому проще всего обратиться за кон-
за использование нелегаль- необходимого для полноценного функ- сультацией к проверенному квалифи-
ного софта в коммерческих интере- ционирования IT-среды предприятия цированному специалисту. При подго-
сах фирмы. Что и кому из них грозит, программного обеспечения. Предпо- товке статьи рассчитать цены мне по-
не раз обсуждалось в рунете на мно- ложим для ровного счета, что коли- могли специалисты интернет-магази-
гочисленных форумах, блогах, а также чество сотрудников предприятия равно на программного обеспечения SoftKey
в авторских статьях. Я не буду останав- 100. Также допустим, что организация (www.sofkey.ru). Замечу, что при едино-
ливаться на этом вопросе и предполо- имеет 4 сервера и 100 рабочих мест. временной покупке всего софта у это-
жу, что в компании уже принято реше- Что же касается сервисов, предостав- го поставщика клиент переходит на бо-
ние о покупке легального программно- ляемых серверами компании, пред- лее низкий уровень цен (уровень С)
го обеспечения. ставим следующую «картину»: 2 кон- на продукты компании Microsoft, поэто-
троллера домена, 1 почтовый сервер, му далее стоимость ПО данной компа-
Что нам нужно? 1 сервер баз данных, 1 терминальный нии будет представлена на уровне С.
Практически в любой компании IT-ин- сервер, 1 сервер SharePoint, 1 файр-
фраструктура состоит из рабочих мест вол/прокси-сервер, 1 сервер обновле- Базовое серверное ПО
пользователей, а также серверных сис- ний Microsoft. Дополнительно положим, Нам понадобится приобрести 4 сер-
тем, каждая из которых предоставляет что 30 сотрудников работают на серве- верных лицензии Windows Server 2008,
тот или иной сервис. Попросту говоря, ре терминалов, 40 сотрудников рабо- 1 диск с дистрибутивом ОС, 100 кли-
все используемое программное обес- тают с сервером баз данных. Понят- ентских лицензий на подключение к
печение можно разбить на две части – но, что не в каждой компании исполь- серверу и 30 лицензий на подключение
клиентское и серверное. Тот и другой зуются все эти сервисы сразу, однако к серверу терминалов. Здесь и далее
софт, в свою очередь, можно условно такая схема поможет шире раскрыть цены указаны в долларах США, расчет
подразделить на категории: тему статьи. производится в рублях по курсу Цент-
n базовый, без которого работа ли- робанка на день оплаты.
бо не возможна, либо будет силь- Подсчитываем стоимость n Windows Server Standard 2008
но затруднена (сюда отнесем опе- серверного ПО Russian OLP C – 4х847=3388.
рационные системы и набор офис- Наиболее удобным и чаще выбирае- n Windows Server Standard 2008
ных программ); мым вариантом лицензирования сер- (дистрибутив) – 1х39,2=39,2.
n дополнительный для пользова- верных решений на данный момент яв- n Windows Server CAL 2008 Russian
тельских мест (это антивирусные ляется лицензирование по программе OLP NL User CAL (клиентские ли-
пакеты, архиваторы, программы Open License. Данный вид лицензиро- цензии) – 100х35=3500.
для записи на CD/DVD, програм- вания подразумевает единовремен- n Windows Terminal Services CAL
мы для распознавания текста и др.), ную покупку пожизненных полноцен- 2008 Russian OLP C Device CAL
дополнительный софт для серве- ных лицензий. В этом случае лицензи- (лицензия на терминальное под-
ров (сервер баз данных, почтовый руются серверы и клиентский доступ к ключение) – 30х93,8=2814.
сервер, файрволы/прокси-серверы, ним (при использовании терминальной n Итого – 9741,2.
программы для резервного копиро- службы в дополнение к клиентским
вания данных и т. д.); подключениям покупаются терминаль- Дополнительное серверное ПО
n специфичный для рода деятель- ные), также покупается дистрибутив Рассчитываем стоимость почтового
ности организации (пакеты для серверного ПО для установки. сервера Microsoft Exchange Server 2007.
обработки графики, верстки, про- Выбор программы лицензирова- Лицензируется сервер плюс каждый
ектирования и т. п.). ния даже для грамотного IT-специалис- почтовый аккаунт. Пусть каждый со-

10
администрирование
трудник имеет свой почтовый адрес, n Office SharePoint Server 2007 Security Base 1 year – 85 034,56 руб.
отсюда получаем следующий расчет: Russian OLP C – 1х5159=5159. Рабочие станции, серверы и почтовые
n Exchange Server 2007 OLP C – n Office SharePoint Server 2007 DVD системы: Kaspersky EnterpriseSpace
1х814,8=814,8. For Std (дистрибутив) – 1х39,2=39,2. Security Base 1 year – 145 773,68 руб.
n Exchange Server 2007 CD (дистри- n Office SharePoint CAL 2007 Russian
бутив) – 1х39,2=39,2. OLP C Device CAL (клиентские ли- Подводим итоги
n Exchange Standard CAL 2007 Sngl цензии) – 100х109,2=10920. Общая стоимость базового ПО для на-
Lang OLP C Device CAL (клиент- n Итого – 16118,2. шей организации будет равна 9741,2
ские лицензии) – 100х78,4=7840. (серверные ОС) + 25200 (клиентские
n Итого – 8694. Сервер обновлений WSUS являет- ОС) + 35179,2 (MS Office) = 70120,4.
ся бесплатным решением Microsoft. К этой сумме будет добавляться стои-
Сервер баз данных MS SQL Server Программа для резервного копи- мость различных сервисов в зави-
2005 можно лицензировать двумя спо- рования данных – Acronis True Image симости от потребностей компании,
собами: Echo Server для Windows – 840,05. а также дополнительное и специаль-
n сервер + клиент; ное клиентское ПО, помноженное
n серверные лицензии на процессор Подсчитываем стоимость на его необходимое количество.
(количество клиентских подключе- клиентского ПО Видно, что список софта для при-
ний не ограничивается). Оценим стоимость клиентского ПО. обретения не маленький. Тем более,
если вы являетесь корпоративным
Рассчитаем стоимость обоих вари- Базовое клиентское ПО клиентом, представляющим несколь-
антов и сравним их. Пусть у нас сервер Выбор пал на Windows Vista. На дан- ко организаций-плательщиков, входя-
с одним процессором, привожу срав- ный момент доступен только один ва- щих в группу предприятий, заказ ПО
нительные подсчеты для обоих вари- риант приобретения – коробочные вер- и оформление документов грозит стать
антов лицензирования. сии: Windows Vista Business Russian целой эпопеей. В этом случае обслу-
Вариант 1: DVD – 252,00. Для 100 рабочих стан- живание в режиме «одного окна», ре-
n SQL Server Standard 2005 Win32 ций общая стоимость будет составлять ализованное компанией SoftKey, по-
Russian OLP C – 1х1031,8=1031,8. 100x252=25200. может вам сократить временные рас-
n SQL Server Standard 2005 Win32 CD/ Переходим к MS Office 2007. ходы на покупку ПО: заказ на коробоч-
DVD (дистрибутив) – 1х39,2=39,2. n Office 2007 Russian OLP NL – 351,4 ные и электронные версии продуктов
n SQL CAL 2005 Russian OLP C (лицензия). оформляется в режиме онлайн, систе-
Device CAL (клиентские лицензии) – n Office 2007 Win32 Russian Disk Kit ма сохраняет ранее введенные клиен-
40х189=7560. MVL CD – 39,2 (дистрибутив). том данные и позволяет в дальнейшем
n Итого – 8631. выбирать нужные реквизиты платель-
Для 100 рабочих мест – 351,4x100+ щика и адрес его доставки.
Вариант 2: 39,2= 35179,2. Доступность в каталоге SoftKey
n SQL Server Standard 2005 Win32 электронных версий продуктов также
Russian OLP C 1 Proc – 1х6690,6= Дополнительное клиентское ПО позволяет ускорить процесс покупки.
6690,6. Рассмотрим список наиболее часто ис- После оплаты вы получите по e-mail
n SQL Server Standard 2005 Win32 CD/ пользуемого софта на рабочих станци- ссылку для скачивания дистрибутива
DVD (дистрибутив) – 1х39,2=39,2. ях пользователей (конечно, он не пре- программы и лицензионный ключ.
n Итого – 6729,8. тендует на полноту): Да, и еще, из приятных моментов:
n архиватор WinRAR – 9,44 за ли- партнерство SoftKey с бонусной систе-
Видно, что в нашем случае дешев- цензию; мой Много.ру означает, что если при за-
ле будет выбрать программу лицензи- n программа для записи дисков CD/ казе программного обеспечения ввести
рования на процессор. DVD Nero 8 Site License – 49,82; номер карты Много.ру, на аккаунт поку-
Сервер ISA Server (файрвол/прокси- n ABBYY FineReader 9.0 Professional пателя будут начислены бонусы, за ко-
сервер) лицензируется по количеству Edition – 159,99; торые потом можно получить призы.
процессоров (будем считать, что име- n Adobe Photoshop CS3 10.0 FULL
ется только 1 процессор на сервере). RU TLP for Windows – 878; Заключение
n ISA Server Std Ed 2006 Russian n Adobe Photoshop CS3 10.0 DVD RU Хотелось бы отметить, что процесс
OLP C 1 Proc – 1х1510,6=1510,6. for Windows – 35; лицензирования компании – дело на-
n ISA Server Std Ed 2006 Russian n CorelDRAW Graphics Suite X4 – сколько дорогое, настолько и нужное.
Disk Kit MVL CD (дистрибутив) – 451,9. При грамотном подходе затраты на при-
1х39,2=39,2. обретение лицензионного софта можно
n Итого – 1549,8. Защита от Лаборатории Касперс- снизить, потому что зачастую компании-
кого, лицензии на 104 узла (по общему дистрибьюторы проводят специальные
Сервер Office SharePoint лицензи- количеству серверов и рабочих стан- акции, а также делают неплохие скид-
руется по схеме: сервер плюс клиент- ций для нашей гипотетической орга- ки для «хороших» клиентов.
ские лицензии на доступ. низации): Kaspersky BusinessSpace На правах рекламы

№5, май 2008 11


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

Терминальные службы
в Windows Server 2008

Андрей Бирюков
Приложения, требующие одновременного доступа множества пользователей, всегда были
головной болью системных администраторов. Служба терминалов в Windows Server 2008
позволит решить ряд проблем, связанных с работой таких приложений.

С
лу жбы уда ленного дост упа достаточно приобрести один мощный инфраструктуры виртуальной частной
к приложениям являются не- терминальный сервер, и требования сети (VPN).
отъемлемой частью любой сов- к клиентским рабочим станциям су- Также имеется возможность ис-
ременной операционной системы. щественно снижаются, потому что ос- пользования протокола HTTPS для до-
В семействе Windows Server служба новные вычислительные нагрузки бе- ступа к службам терминалов без не-
терминалов появилась еще в версии рет на себя сервер. обходимости настройки на стороне
NT 4.0, а в недавно вышедшей версии клиента.
Windows Server 2008 реализация цент- Что нового Комплексная модель безопаснос-
рализованного доступа к приложени- Рассмотрим более подробно, о каких ти TS Gateway позволяет админист-
ям получила существенное развитие новых функциях идет речь. Прежде раторам контролировать доступ к оп-
за счет новых функций и систем. всего, это возможность работы с уда- ределенным ресурсам в сети. В част-
ленными приложениями служб терми- ности, возможно ограничение дос-
Зачем нужны налов. Теперь пользователи могут за- тупа пользователей только к опре-
службы терминалов пускать удаленные приложения на сво- деленным серверам и рабочим стан-
Для начала хочу немного рассказать, ем рабочем столе наряду с обычны- циям, а не ко всей сети предприятия,
зачем нужны терминальные сервисы. ми локальными приложениями. (Тем, как это происходит в случае исполь-
Например, возможность существенно кто знаком с аналогичными решени- зования подключений к виртуальной
сэкономить административные ресур- ями от Citrix, думаю, такая технология частной сети.
сы, так как гораздо проще установить понравится.) Для этого необходим кли- Еще данная технология позволяет
приложение на одном сервере и пре- ент подключения к удаленному рабо- подключаться пользователям к сер-
доставить к нему клиентский доступ, чему столу версии 6.0. Данный клиент верам терминалов и удаленным рабо-
чем разворачивать это же приложение встроен в Windows Server 2008 и Vista, чим станциям через межсетевые эк-
на каждой клиентской рабочей стан- для XP и 2003 версии клиенты доступ- раны и преобразователи сетевых ад-
ции. Это особенно полезно для уста- ны для бесплатной загрузки. ресов (NAT).
ревших программ и приложений, ко- Другим нововведением является Еще одной новой возможностью
торые не поддерживают клиент-сер- шлюз службы терминалов (TS Gateway), является веб-клиент служб термина-
верную архитектуру, однако до сих пор который позволяет получить безопас- лов (TS Web Access), который позволя-
довольно активно используются в ор- ный доступ к службам терминалов ет осуществлять работу с удаленным
ганизациях. и общим рабочим столам из-за пре- столом пользователя через веб-интер-
Другая причина – это возможность делов межсетевого экрана предприя- фейс. С помощью веб-клиента служб
сэкономить на оборудовании, так как тия без необходимости развертывания терминалов пользователи могут полу-

12
администрирование
чить список доступных приложений че-
рез веб-узел. Выглядит это примерно
следующим образом.
Когда пользователь запускает одно
из удаленных приложений, для этого
пользователя автоматически создает-
ся сеанс служб терминалов на сервере
под управлением Windows Server 2008,
также для пользователя в этом интер-
фейсе доступно централизованное ме-
ню, в котором отображаются все до-
ступные удаленные приложения. Что-
бы запустить удаленное приложение,
достаточно выбрать нужную програм-
му в меню.
Как видно, использование веб-кли-
ента служб терминалов позволяет сни-
зить затраты на администрирование,
так как отпадает необходимость в ад-
министрировании отдельных экземп-
ляров используемых приложений. Рисунок 1. Список ролей сервера
И, наконец, это возможность еди-
ного входа (также известная Single
Sign On), технология, улучшающая вза-
имодействие с пользователями, из-
бавляя от необходимости многократно
вводить свои учетные данные.

Установка
Обсудив в теории новые возмож-
ности службы терминалов Windows
Server 2008, рассмотрим этот функци-
онал на практике.
Прежде всего, установка. Надо ска-
зать, что процесс установки немно-
го изменился по сравнению с терми-
нальными службами в предыдущих
версиях Windows Server. Для того что-
бы развернуть терминальные служ-
бы, необходимо добавить соответс-
твующую роль в списке ролей серве-
ра (см. рис. 1).
Выбираем «Terminal Services». Да- Рисунок 2. Выбор метода аутентификации
лее указываем необходимые служ-
бы терминального сервера, которые буется, рабочие станции с любыми вер- только 120 дней, после чего вы сможе-
должны быть установлены. Обратите сиями терминальных клиентов могут те только устанавливать не более двух
внимание, что для функционирования подключаться. Данная функция поз- административных сессий.
некоторых из них требуется включение воляет увеличить защищенность тер- На следующем этапе требуется
сервера в домен Active Directory. минального сервера, так как предыду- указать группы пользователей, кото-
Затем нужно определиться с мето- щие версии клиентов содержат мно- рым разрешен доступ к данному тер-
дом аутентификации (см. рис. 2). В слу- жество уязвимостей, и отказ от их ис- минальному серверу. Затем идут на-
чае если вы выбрали вариант «Require пользования существенно повысит за- стройки, требующиеся для работы
Network Level Authentication», только ра- щищенность. по протоколу HTTPS. В частности, не-
бочие станции, на которых установле- На следующем этапе нужно оп- обходимо указать сертификат, кото-
ны совместимые версии операцион- ределиться с режимом лицензирова- рый будет использоваться для созда-
ной системы и терминального клиента, ния. Делать это при установке необя- ния SSL-соединения (см. рис. 3). Дан-
смогут устанавливать удаленные сес- зательно, можно доустановить потом, ный сертификат можно экспортиро-
сии с данным сервером. В случае ес- главное не забыть, что без лицензий вать из файла.
ли Network Level Authentication не тре- терминальный сервер будет работать Такой способ рекомендуется для

№5, май 2008 13


администрирование
Для этого необходимо открыть кон-
соль Server Manager, затем Terminal
Services. В этом разделе можно про-
смотреть суммарную статистику по со-
бытиям, связанным со службой терми-
налов, при этом можно использовать
различные фильтры для поиска новых
интересующих событий. Следует от-
метить, что это новшество теперь до-
бавлено во все компоненты Windows
Server 2008.
Также здесь можно наблюдать, ка-
кие системные службы запущены, ка-
кие роли сервера установлены, и еще
здесь Windows 2008 предлагает неко-
торые рекомендации по настройке тер-
минальных сервисов.
Теперь посмотрим, какие настрой-
ки доступны для компонентов терми-
нальных сервисов.
Рисунок 3. Настройки SSL Прежде всего это TS RemoteApp
Manager. Здесь можно настроить,
какие приложения будут доступны
для работы через службы термина-
лов, при этом их можно будет запус-
кать с локальной машины пользова-
теля. Для того чтобы это сделать, не-
обходимо добавить нужную программу
в список RemoteApp Programs. В качес-
тве примера мы выполним необходи-
мые действия.
В роли приложения, которое нуж-
но сделать доступным для локаль-
ных пользователей, будет выступать
консоль администрирования серве-
ра TS Licensing Service. Выбираем оп-
цию «Add RemoteApp Programs». Да-
лее в списке отмечаем «TS Licensing
Manager». Работа мастера завершена,
теперь нам необходимо сделать прило-
жение доступным с рабочей станции
Рисунок 4. Управление групповыми политиками пользователя.
Для этого нам надо сначала опре-
крупных сетей, где используется свой шлюза терминальных служб. По умол- делиться, каким способом мы хотим
центр сертификации (Certification чанию разрешено подключение толь- распространить доступ к данному при-
Authority), так как таким образом можно ко для группы Administrators. В качест- ложению на рабочие станции. Возмож-
обеспечить довольно высокую степень ве способов авторизации помимо тра- ны два варианта: создание RDP-фай-
защиты терминальной сессии. диционного ввода пароля можно также ла и использование пакета Windows
Другой способ – это использование использовать Smart Card. Также мож- Installer. Мы рассмотрим оба вариан-
самоподписанного (Self Signed) серти- но определить, к каким именно терми- та. Первый вариант удобен для исполь-
фиката, правда, данный способ реко- нальным серверам могут подключать- зования в небольших сетях, тогда как
мендуется только для небольших орга- ся пользователи. второй лучше использовать в крупных
низаций или в тестовых целях. На этом установка служб терми- корпоративных сетях, где с помощью
Далее нам предлагается создать нальных сервисов в Windows Server групповых политик распространять
так называемую Authorization Policy 2008 завершается. приложение на рабочие станции.
для TS Gateway, то есть политику ав- Создадим RDP-файл. Для это-
торизации, которая определяет, ка- Настройка го сначала выберите нужное прило-
ким группам пользователей можно Теперь приступим к настройке создан- жение в списке программ в нижней
осуществлять подключение к серверу ного терминального сервера. части окна, в разделе «RemoteApp

14
администрирование
Programs». Затем выберите опцию лыки для доступа к приложению: на ра- как раньше. Сама консоль Group Policy
«Create .rdp file». В открывшемся ок- бочем столе или в папке Start. Также Management также существенно из-
не мастера необходимо указать путь можно ассоциировать расширения, менилась. Теперь здесь доступны на-
к каталогу, в котором будет хранить- используемые данным приложением, стройки для леса, доменов, входящих
ся создаваемый файл, затем можно с другими файлами на рабочей стан- в данный лес. Также из этой консоли
изменить адрес сервера и порт, кото- ции пользователя. можно управлять политиками для до-
рые будут использоваться для досту- менов, контроллеров доменов. Еще
па к приложению через службу терми- Развертывание настроек одно полезное средство, появившее-
налов. Также можно сменить настрой- с помощью GPO ся в новой консоли, – это Group Policy
ки TS Gateway, например изменить сер- Итак, созданные .rdp- и .msi-файлы Modeling. Это средство, позволяющее
вер, используемый по умолчанию, или можно различными способами помес- смоделировать последствия примене-
отключить использование TS Gateway. тить на рабочие станции пользовате- ния групповых политик к определенно-
И, наконец, можно настроить исполь- лей. В качестве примера я разверну му объекту, может быть очень полезно
зование сертификатов для установки .msi-файлы с помощью групповых по- в случае, если используется несколько
защищенных соединений. В резуль- литик Windows Server 2008. Итак, у нас политик и множество объектов.
тате работы мастера в каталоге С:\ имеется домен terminal.mylocal, в ко- Однако я несколько отвлекся опи-
Program Files\Packaged Programs со- тором требуется для группы компью- санием работы с групповыми полити-
здается новый файл, который можно теров TestUsers развернуть .msi-файл ками, вернемся к службам термина-
разместить на рабочей станции поль- для доступа к приложению через служ- лов. Для выполнения поставленной
зователя для доступа к удаленному бу терминалов. задачи необходимо открыть раздел
приложению. Следует сразу заметить, что нас- «Forest», выбрать «Domains» и ука-
Теперь создадим пакет Windows тройка групповых политик в Windows зать имя домена (в данном случае это
Installer. Здесь настройки будут ана- Server 2008 несколько отличается от на- terminal.mylocal), затем «Group Policy
логичные: путь к создаваемому фай- строек в предыдущих версиях Windows Objects, TestUsers» (групповая полити-
лу, настройки терминального серве- Server. Прежде всего, теперь раздел ка, которая будет применена к маши-
ра, настройки TS Gateway и настрой- «Group Policy Management» доступен нам тестовой группы). После выпол-
ки сертификатов. В следующем окне в виде отдельной закладки, не через нения этих действий нажмите правую
вы можете выбрать, где создавать яр- «Active Directory Users And Computers», кнопку мыши и выберите «Edit». В от-

№5, май 2008 15


администрирование
При на жатии на значок конк-
ретного сервера вы можете полу-
чить информацию о его текущей за-
грузке, количестве подк лючений,
применяемых политиках и так да-
лее. Собственно, используемых по
умолчанию политик авторизации
две: Connection Authorization Policies
и Resource Authorization Policies.
Первая используется для настрой-
ки пользователей, которым разреше-
но соединение с сервером TS Gateway.
Здесь определяются, в частности, спо-
соб аутентификации (пароль и/или
смарт-карта), а также группы пользова-
телей, которым разрешен доступ. Еще
здесь можно определить перенаправ-
ление устройств, подключенных к тер-
минальному серверу. То есть пользова-
телям может быть разрешено подклю-
Рисунок 5. Управление TS Gateway чение принтеров, серийных портов, ус-
тройств Plug and Play, драйверов уст-
крывшемся окне нажимаем «Computer лык, после нажатия на который за- ройств и буфера обмена.
Configuration». пустится мастер RemoteApp, кото- Вторая политика определяет ра-
Как известно, приложение можно рый после авторизации пользова- бочие станции, которым разрешено
либо опубликовать, привязав к полити- теля запустит на локальной машине подключаться к серверу TS Gateway.
кам пользователя (User Configuration), приложение  терминального сервера. Здесь также можно определить груп-
или же установить, привязав к по- Следует также отметить, что при необ- пы пользователей, которые могут под-
л и т и к а м ко м п ью те р а (C o mp ute r ходимости удаленное приложение мо- ключаться к удаленным серверам че-
Configuration). Выполним второе дейст- жет быть доступно через Web Access. рез TS Gateway. Что касается управле-
вие. Для этого в разделе «Policies» Также можно разрешить использовать ния доступом к терминальному шлю-
указываем «Software Settings» и за- аргументы командной строки. зу для рабочих станций, то тут можно
тем «Software Installation». Нажав пра- воспользоваться двумя способами:
вую кнопку мыши, выбираем «New Шлюзы терминального указать уже созданную Active Directory
Package». С помощью мастера выби- доступа Security Group или использовать су-
раем нужный файл, затем «Assigned». Теперь поговорим более подробно ществующую TS Gateway Managed
Теперь групповая политика может при- о другой интересной службе, входящей Computer Group. По умолчанию поль-
меняться к рабочим станциям. в состав терминальных сервисов. Это зователи могут подключаться к любо-
После применения групповой по- TS Gateway Manager. Как я уже упоми- му ресурсу.
литики у пользователей появится яр- нал выше, TS Gateway предназначен Сетевые порты, используемые
для подключения к различным тер- для установки терминальной сессии,
минальным серверам через единый также можно менять при необходимос-
шлюз. Думаю, удобства такого подхо- ти. По умолчанию используется стан-
да очевидны. Пользователям не на- дартный порт 3389.
до путаться среди множества различ-
ных терминальных серверов, достаточ- Заключение
но сохранить настройки для доступа На этом я завершаю свой рассказ
к единому шлюзу, с помощью которо- о службах терминального доступа
го уже подключаться к нужному прило- в Windows Server 2008. Как видно, в но-
жению. Администраторам не надо на- вой операционной системе в эти служ-
страивать политики доступа на мно- бы также добавилось много новых воз-
жестве серверов, достаточно настро- можностей, что позволит администра-
ить на шлюзе. торам оптимизировать работу пользо-
Рассмотрим более подробно на- вателей с удаленными приложениями
стройку TS Gateway. Для этого нам не- с помощью служб терминалов.
обходимо открыть консоль TS Gateway
Manager. В основном окне можно на- 1. ht tp: // w w w.mic rosof t.c om / windows
блюдать сервера, доступные для уп- server2008/en/us/default.aspx – страни-
Рисунок 6. Управление доступом
для рабочих станций равления (см. рис. 5). ца, посвященная Windows Server 2008.

16
bugtraq

Выполнение произвольного кода в IBM Множественные уязвимости в PHP


Lotus Expeditor Программа: PHP-версии до 5.2.6.
Программа: IBM Lotus Expeditor 6.1 для Windows. Опасность: Средняя.
Опасность: Высокая. Описание: 1. Уязвимость существует из-за неизвестной
Описание: Уязвимость существует из-за того, что прило- ошибки в FastCGI SAPI. Удаленный пользователь может
жение регистрирует на системе URI обработчик «cai», ко- вызвать переполнение стека.
торый позволяет выполнение rcplauncher.exe с произволь- 2. Уязвимость существует из-за неизвестной ошибки
ными аргументами командной строки. Удаленный поль- в функциях escapeshellcmd() и escapeshellarg() при обработ-
зователь может с помощью специально сформированно- ке неполных многобайтных символов. Удаленный пользо-
го аргумента «-launcher» выполнить произвольные коман- ватель может обойти ограничения безопасности директив
ды в системе. safe_mode_exec_dir и disable_functions и потенциально вы-
URL производителя: www-306.ibm.com/software/lotus/ полнить произвольные команды на системе.
products/expeditor. 3. Уязвимость существует из-за ошибки в механиз-
Решение: Установите исправление с сайта производителя. ме трансляции пути в файле cgi_main.c. Удаленный поль-
зователь может выполнить произвольный код на целевой
системе.
Раскрытие данных в Sun Java System 4. Уязвимость существует из-за ошибки в cURL. Зло-
Application Server и Web Server умышленник может обойти ограничения директивы safe_
Программа: Sun Java System Application Server версии mode.
до 7.0.0 2004Q2 R6; Sun Java System Web Server версии до 6.1 5. Уязвимость существует из-за ошибки проверки гра-
SP8; Sun Java System Web Server версии до 7.0 Update 1. ниц данных в PCRE. Удаленный пользователь может вы-
Опасность: Средняя. звать отказ в обслуживании или скомпрометировать це-
Описание: Уязвимость существует из-за неизвестной левую систему.
ошибки, которая позволяет удаленному пользователю про- URL производителя: www.php.net.
смотреть исходный код JSP-файлов. Подробности уязви- Решение: Установите последнюю версию 5.2.6 с сайта
мости не сообщаются. производителя.
URL производителя: www.sun.com.
Решение: Установите исправление с сайта производителя.
Уязвимость в службе печати
в Sun Solaris
Множественные уязвимости в rdesktop Программа: Sun Solaris 8, 9, 10.
Программа: rdesktop 1.5.0, возможно, более ранние вер- Опасность: Высокая.
сии. Описание: Уязвимость существует из-за неизвестной
Опасность: Средняя. ошибки в службе печати. Удаленный пользователь мо-
Описание: 1. Уязвимости существуют из-за потери значи- жет вызвать отказ в обслуживании и выполнить произ-
мости целочисленных при обработке RDP-запросов в функ- вольный код на целевой системе с привилегиями пользо-
ции iso_recv_msg(). Удаленный пользователь может с помо- вателя root.
щью специально сформированного RDP-запроса вызвать URL производителя: www.sun.com.
переполнение динамической памяти и выполнить произ- Решение: Установите исправление с сайта производителя.
вольный код на целевой системе с привилегиями пользо-
вателя, запустившего rdesktop.
2. Уязвимость существует из-за ошибки в коде, обра- Несколько уязвимостей в ядре Linux
батывающем перенаправляющие RDP-запросы в функ- Программа: Linux kernel 2.6.25.2 и более ранние версии.
ции process_redirect_pdu(). Удаленный пользователь мо- Опасность: Средняя.
жет с помощью специально сформированного RDP-запро- Описание: 1. Уязвимость существует из-за отсутствия про-
са вызвать переполнение буфера и выполнить произволь- верки прав доступа в функции sys_utimensat(). Локальный
ный код на целевой системе. пользователь может вызвать отказ в обслуживании.
3. Уязвимость существует из-за ошибки при обработ- 2. Уязвимость существует из-за утечки памяти в функ-
ке знаковых целочисленных в функции channel_process(). ции «ipip6_rcv()», входящей в состав тоннельного драйвера
Удаленный пользователь может вызвать переполнение ди- IPv6 over IPv4 (SIP). Удаленный пользователь может с помо-
намической памяти и выполнить произвольный код на це- щью специально сформированного сетевого пакета потре-
левой системе. бить все доступные системные ресурсы.
Для успешной эксплуатации уязвимостей злоумышлен- URL производителя: www.kernel.org.
ник должен обманом заставить пользователя подключить- Решение: Установите последнюю версию ядра 2.6.25.3
ся к специально сформированному RDP-серверу. с сайта производителя.
URL производителя: www.rdesktop.org.
Решение: Установите исправление с сайта производителя. Составил Александр Антипов

№5, май 2008 17


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

SharePoint в качестве платформы


документооборота
Работаем с workflow в WSS 3.0 и MOSS 2007

Нелли Садретдинова
Одна из самых долгожданных возможностей Windows SharePoint Services 3.0 (WSS 3.0)
и Microsoft Office SharePoint Server 2007 (MOSS 2007) – поддержка рабочих процессов
(workflow). Что представляют из себя эти возможности и действительно ли новый функционал
превращает SharePoint в полноценную платформу для документооборота?

Особенности рабочих n сбор подписей; ваться задачи, или указать, что будет
процессов в SharePoint n утверждение; создан новый список задач.
Рабочие процессы в SharePoint привя- n утверждение ликвидации; Каждый стандартный рабочий
заны к спискам или библиотекам до- n три этапа. процесс предполагает собственные
кумента. Запускаться они могут ав- настройки. Процесс «Сбор отзывов»
томатически при создании или изме- Смысл первых четырех процес- включает указанные на рис. 3.
нении элемента, или могут быть запу- сов очевиден из их названия. Поясню, Дополнительно можно указать ад-
щены пользователем вручную из кон- что означает «три этапа». Для запуска рес для отправки копий отзыва прочим
текстного меню элемента списка или такого процесса необходимо, чтобы пользователям и ряд параметров за-
документа библиотеки. Если напи- у библиотеки документов или списка вершения рабочего процесса.
сать собственный обработчик событий, было свойство типа «Выбор» как ми- При запуске процесса может пот-
то можно запускать процесс и по дру- нимум с тремя вариантами выбора, на- ребоваться заполнение дополнитель-
гим событиям. пример, «Планируется», «Утверждает- ных параметров. Например, форму как
Общие настройки рабочих процес- ся» и «Завершено». При запуске про- на рис. 4 нужно заполнить при запус-
сов определяются на сайте централь- цесса значение свойства равно перво- ке процесса «Сбор отзывов».
ного администрирования. Здесь мож- му варианту, т.е. «Планируется». Пос- Не буду останавливаться на типо-
но указать, разрешено ли создание ра- ле завершения первой задачи процес- вых процессах, работа с которыми ин-
бочих процессов для данного веб-при- са пользователем (например, завер- туитивно понятна. Расскажу подроб-
ложения, разрешить ли отправку доку- шения работы над документом) зна- нее о процессе сбора подписей, запус-
ментов внешним пользователям, изве- чение поля «Состояние» меняется на тить который можно только из клиент-
щать ли пользователей, не имеющих второй вариант – «Утверждается», пос- ских приложений Microsoft Office 2007.
доступа к узлу, о назначении им задач ле завершения второй задачи (напри- Допустим, имеется библиотека до-
рабочего процесса. По умолчанию соз- мер, утверждения документа руково- кументов, к которой добавлен стан-
дание рабочих процессов разрешено. дителем) это поле получает последнее дартный процесс «Сбор подписей».
значение – «Завершено» и процесс за- Чтобы запустить процесс, необходи-
Создание рабочих вершается (см. рис. 1). мо открыть документ из библиотеки
процессов Создать стандартный рабочий в MS Word 2007. На вкладке «Встав-
Какие инструменты предоставляет процесс можно из раздела «Парамет- ка» нужно выбрать «Строка подписи →
SharePoint для создания рабочих про- ры → Параметры рабочих процессов» Строка подписи Microsoft Office».
цессов? списка или библиотеки документов Появится форма настройки под-
Во-первых, в составе SharePoint (см. рис. 2). писи, которую необходимо заполнить
уже имеются пять готовых шаблонов Стандартные рабочие процессы (см. рис. 5).
рабочих процессов, запустить и на- предполагают создание задач для Затем можно запустить процесс
строить которые можно посредством участвующих в процессе пользовате- из общего меню Word (см. рис. 6).
веб-интерфейса. Это: лей. При создании процесса можно вы- После выбора процесса «Сбор под-
n сбор отзывов; брать список, в котором будут созда- писей» появится форма, где нужно ука-

18
администрирование
зать, кто должен подписать документ
(см. рис. 7).
Чтобы подтвердить подставленное
по умолчанию из предыдущей формы
значение, нужно нажать кнопку с га-
лочкой справа от поля. После этого
станет активной кнопка «Начать».
В результате запуска рабочего про-
цесса будет создана задача по сбору
подписи в соответствующем списке за-
дач (см. рис. 8).
Обратите внимание, что так как
в настройках сервера запрещено соз-
дание задач для внешних участников,
задача будет автоматически перена-
правлена внутреннему пользователю.
Форма подробной информации
о задаче включает возможности деле-
гирования задачи другому пользовате-
лю или ее отмены (см. рис. 9).
Подписать документ можно, от- Рисунок 1. Настройка трехэтапного рабочего процесса
крыв документ в MS Word. При этом
будет выдано предупреждение, что
для проверки подлинности подписи
другими лицами необходимо получить
цифровое удостоверение от партне-
ров Microsoft. Если такой необходимос-
ти нет, можно создать свою цифровую
подпись. Вот так будет выглядеть гото-
вая подпись (см. рис. 10).

Создание рабочих
процессов с помощью
SharePoint Designer
Создавать простые рабочие процессы
без написания кода можно с помощью
редактора Microsoft Office SharePoint
Designer [2]. Для этого необходимо
открыть в редакторе узел SharePoint
и выбрать пункт меню «Файл → Соз-
дать → Рабочий процесс».
Откроется мастер создания рабо-
чих процессов. На первом шаге необ- Рисунок 2. Добавление рабочего процесса
ходимо выбрать список или библиоте-
ку, к которой будет привязан процесс, n проверка, находится ли дата созда- Обращаю отдельное внимание на
указать способы его запуска. Мож- ния элемента в определенном про- полезное действие «Записать в жур-
но также задать список переменных межутке времени; нал», которое позволяет хотя бы ми-
(см. рис. 11). n проверка, кем был изменен эле- нимально отлаживать процессы, от-
После чего можно приступить краз- мент; слеживая значения переменных в жур-
работке процесса. Он может включать n проверка, кем был создан эле- нале.
один или несколько шагов. На каждом мент. У процессов, созданных с помощью
шаге можно выполнять одно или не- SharePoint Designer, есть ряд сущест-
сколько действий при каких-либо за- По умолчанию в SharePoint Designer венных недостатков:
данных условиях. Такими условиями имеется 22 возможных действия: от- n процесс может работать только
могут быть: правка сообщения по почте, назна- с тем списком (библиотекой), к ко-
n проверка значения переменной; чение задачи, установка значения торому он привязан;
n проверка, находится ли дата изме- свойства текущего элемента, присво- n нет функционала для реализации
нения элемента в определенном ение значения переменной и другие циклов/обработки коллекций зна-
промежутке времени; (см. рис. 12). чений;

№5, май 2008 19


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

Рисунок 3. Настройка рабочего процесса «Сбор отзывов»

n процессы нельзя отлаживать (за ис- Для этого можно написать собс- ты с workflow в Visual Studio необходимо
ключением явной записи значений твенные действия (Custom Activity). предварительно скачать и установить
переменных в журнале); В такое действие, например, можно по- WWF Visual Studio Extensions [5].
n нет интеграции с InfoPath/возмож- местить запрос к другому списку, и та- Чтобы создать Custom Activity
ности разработки собственных ким образом обойти одно из ограниче- для SharePoint, нужно указать в спис-
форм. ний SharePoint Designer. ке ссылок (References) библиоте-
ки Microsoft.Sharepoint.dll и Microsoft.
Впрочем, можно расширить функ- Создание Custom Activity Sharepoint.WorkflowActions.dll (нахо-
циональность процессов, создавае- Создать собственное действие можно дятся в папке «%PROGRAMFILES%\
мых в SharePoint Designer. с помощью MS Visual Studio. Для рабо- Common Files\Microsoft Shared\Web
Server Extensions\12\ISAPI\»).
Примеры Custom Activity можно
найти в Enterprise Content Management
Starter Kit for 2007 Office System (ECM
Starter Kit), который можно скачать на
сайте Microsoft в составе MOSS SDK[1].
Для разработки собственных дейст-
вий в Visual Studio необходимо соз-
дать проект типа Workflow Activity
Library (библиотека действий), для
каждого действия описать необходи-
мые свойства (входные и выходные
параметры) и, наконец, переопреде-
лить метод «Execute(ActivityExecution
Context executionContext)», в котором
и выполняется действие.
Пример простейшего действия, ко-
торое получает электронный адрес
Рисунок 4. Запуск рабочего процесса «Сбор отзывов» пользователя по его логину:

20
администрирование
using System; //Переопределяем метод, в котором выполняется
using System.ComponentModel; //само действие
using System.ComponentModel.Design; protected override ActivityExecutionStatus ↵
using System.Collections; Execute(ActivityExecutionContext ↵
using System.Drawing; executionContext) {
using System.Workflow.ComponentModel; SPWeb web = this.__Context.Web;
using System.Workflow.ComponentModel.Design; SPUser user;
using System.Workflow.ComponentModel.Compiler; if (Login != "") {
using System.Workflow.ComponentModel.Serialization; user = web.AllUsers[Login];
using System.Workflow.Runtime; if (user != null) {
using System.Workflow.Activities; Email = user.Email;
using System.Workflow.Activities.Rules; }
using Microsoft.SharePoint; }
using Microsoft.SharePoint.WorkflowActions; return base.Execute(executionContext);
}
namespace MyActivities }
{ }
public partial class getEmail: SequenceActivity
{ Dll, содержащую библиотеку действий, необходимо под-
public getEmail() {
InitializeComponent(); писать ключом strongnamekey (это также можно сделать
} с помощью Visual Studio, в меню «Свойства проекта», вклад-
//Описываем свойство __Context, в нем хранится
//информация о веб-приложении, из которого было ка «Signing») и скопировать в Global Assembly Cache (GAC)
//вызвано действие (папка «%SYSTEMDRIVE%:/windows/assembly») на серве-
public static DependencyProperty ↵
__ContextProperty = System.Workflow. ↵ ре SharePoint.
ComponentModel.DependencyProperty.Register ↵ Новую библиотеку с действиями необходимо указать в
("__Context", typeof(WorkflowContext), ↵
typeof(getEmail)); файле web.config для того веб-приложения, где эти действия
[Description("Context")] понадобятся. В секцию «<System.Workflow.ComponentModel.
[ValidationOption(ValidationOption.Required)]
[Browsable(true)] WorkflowCompiler>» нужно добавить следующую строку:
[DesignerSerializationVisibility ↵
(DesignerSerializationVisibility.Visible)] <authorizedType Assembly=" MyActivities, Version=1.0.0.0, ↵
public WorkflowContext __Context { Culture=neutral, PublicKeyToken= e5a54ffdbc212e2a ↵
get { " Namespace="MyActivities" ↵
return ((WorkflowContext)(base.GetValue ↵ TypeName="*" Authorized="True" />
(getEmail.__ContextProperty)));
}
set {
base.SetValue(getEmail.__ContextProperty, ↵ Наконец, чтобы SharePoint Designer показывал описание
value); действия и поля для ввода/вывода параметров, действие
}
} необходимо описать в специальном файле с расширением
//Описываем свойство, в котором будет храниться .ACTIONS, который нужно сохранить «%PROGRAMFILES%\
//логин пользователя
public static DependencyProperty ↵ Common Files\Microsoft Shared\web server extensions\12\
LoginProperty = System.Workflow. TEMPLATE\[LCID]\Workflow», где [LCID] – языковой идентифи-
ComponentModel.DependencyProperty.Register ↵
("Login", typeof(string), typeof(getEmail)); катор, для русского языка это 1049, для английского – 1033.
[Description("Login")] Например, файл .ACTIONS для вышеприведенного
[ValidationOption(ValidationOption.Required)]
[Browsable(true)] действия будет выглядеть так:
[DesignerSerializationVisibility ↵
(DesignerSerializationVisibility.Visible)] <?xml version="1.0" encoding="utf-8" ?>
public string Login { <WorkflowInfo>
get { <Actions Sequential="then" Parallel="and">
return ((string)(base.GetValue ↵ <Action Name="Получить email по логину пользователя"
(getEmail.LoginProperty))); ClassName="MyActivities.getEmail"
} Assembly="MyActivities, Version=1.0.0.0, ↵
set { Culture=neutral, PublicKeyToken=e5a54ffdbc212e2a"
base.SetValue(getEmail.LoginProperty, ↵ AppliesTo="all"
value); Category="Custom Actions">
} <RuleDesigner Sentence="Получить по %1 его %2">
} <FieldBind Field="Login" ↵
//Описываем свойство, в котором будет храниться Text="логину сотрудника" Id="1" ↵
//электронный адрес пользователя DesignerType="TextArea" />
public static DependencyProperty ↵ <FieldBind Field="Email" Text="email" ↵
EmailProperty = System.Workflow. ↵ Id="2" DesignerType= ↵
ComponentModel.DependencyProperty.Register ↵ "ParameterNames" />
("Email", typeof(string), typeof(getEmail)); </RuleDesigner>
[Description("Email")] <Parameters>
[Category("Email")] <Parameter Name="__Context" ↵
[Browsable(true)] Type="Microsoft.SharePoint. ↵
[DesignerSerializationVisibility ↵ WorkflowActions.WorkflowContext" ↵
(DesignerSerializationVisibility.Visible)] Direction="In" />
public string Email { <Parameter Name="Login" ↵
get { Type="System.String, ↵
return ((string)(base.GetValue ↵ mscorlib" Direction="In" />
(getEmail.EmailProperty))); <Parameter Name="Email" ↵
} Type="System.String, ↵
set { mscorlib" Direction="Out" />
base.SetValue(getEmail.EmailProperty, ↵ </Parameters>
value); </Action>
} </Actions>
} </WorkflowInfo>

№5, май 2008 21


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

Рисунок 5. Настройка подписи


в MS Office

Рисунок 7. Запуск рабочего процесса «Сбор подписей» из MS Word

Рисунок 8. Задачи рабочего процесса

Рисунок 6. Пункт меню


«Рабочие процессы» в MS Word

Рисунок 10. Готовая подпись


в документе MS Word Рисунок 9. Форма работы с задачей по сбору подписи

DesignerType указывает редактору, n Operator Создание рабочих


как отображать поле для ввода/вывода n ParameterNames процессов с помощью
параметра. Возможны следующие ва- n Person Visual Studio
рианты значения поля DesignerType: n SinglePerson Более сложные рабочие процессы,
n ChooseDocLibItem n StringBuilder в том числе с обращением к внешним
n ChooseListItem n Survey данным и системам, можно разрабо-
n CreateListItem n TextArea тать с помощью Visual Studio. WSS 3.0
n Date n UpdateListItem работает с .Net Framework 3.0 и поддер-
n Dropdown n WritableFieldNames живает технологию Windows Workflow
n Email Foundation (WWF).
n Integer После перезагрузки IIS действие Процессы WWF бывают двух ви-
n FieldNames будет доступно в редакторе процессов дов – последовательные (sequential)
n ListNames SharePoint Designer (см. рис. 13). и типа «конечный автомат» (state

22
администрирование
ки Visual Studio, автоматически
сгенерировать соответствующий
C#‑класс;
n включить этот класс в проект с ра-
бочим процессом.

Опубликовать готовый рабочий


процесс на сервере можно с помощью
feature (возможность) – описать ин-
формацию о рабочем процессе в xml-
файлах специального формата, кото-
рые необходимо разместить в дирек-
тории «%PROGRAMFILES%\Common
Files\Microsof t Shared\web ser ver
extensions\12\TEMPLATE\FEATURES\
[Название feature]». После этого воз-
можность установливается и активи-
руется с помощью специальных ко-
манд утилиты stsadm. Подробное ру-
Рисунок 11. Создание рабочего процесса в MS SharePoint Designer ководство по использованию возмож-
ностей можно найти в MSDN [4] или
machine). Пример последовательного n для корректировки параметров в MOSS SDK [1].
процесса – рабочий процесс, создан- и состояния, когда процесс уже ра- В отличие от процессов, разрабо-
ный с помощью SharePoint Designer, ботает; танных с помощью SharePoint Designer,
когда шаги выполняются по очере- n для взаимодействия с пользова- процессы W WF можно запускать
ди, пока последнее действие не за- телем, когда ему требуется выпол- из любой библиотеки документов или
вершится. нить задачу в рамках рабочего про- списка, точно так же, как и стандарт-
«Конечный автомат» представля- цесса. ные процессы.
ет собой набор состояний, переходов С помощью Visual Studio мож-
и действий. В результате определен- Для разработки форм можно вос- но также отлаживать рабочие про-
ного события может происходить пе- пользоваться редактором Microsoft цессы – устанавливать брейкпойнты,
реход от одного состояния к друго- Office InfoPath, однако для интегра- просматривать переменные. Для от-
му, в процессе перехода выполняют- ции workflow с формами InfoPath не- ладки рабочего процесса необходи-
ся некоторые действия. Переход в ко- обходима корпоративная лицензия мо запустить Visual Studio на серве-
нечное состояние означает заверше- SharePoint (Enterprise Edition). Чтобы ре, установить необходимые брейк-
ние процесса. рабочий процесс мог получить инфор- пойнты и выбрать пункт меню «Attach
ECM Starter Kit включает шаблоны мацию из формы, необходимо создать to process…». Далее нужно установить
рабочих процессов, а также примеры соответствующий класс с описанием галочки «Show processes from all users»
готовых рабочих процессов – как пос- данных. Это можно сделать следую- и «Show processes in all sessions» и вы-
ледовательных, так и типа «конечный щим образом: брать процесс «w3wp.exe» (если та-
автомат». n сохранить из InfoPath для этой фор- ких процессов несколько, то выбрать
В Visual Studio после установки мы файл со схемой .xsd; все). Если такого процесса в списке
WWF Visual Studio Extensions появля- n с помощью утилиты xsd.exe, кото- нет, откройте в браузере один из сай-
ется специальная палитра компонен- рая доступна из командной стро- тов, который использует соответству-
тов для работы с Workflow. Общую схе-
му процесса можно строить с помощью
визуального редактора (см. рис. 14).
Но даже для разработки простого
процесса WWF в Visual Studio потре-
буется написание кода и ряд действий
по настройке, поэтому в рамках ста-
тьи я не буду рассматривать эту зада-
чу подробно. Руководство для разра-
ботчика вы можете найти в MSDN [3]
или в MOSS SDK [1].
В рабочих процессах можно ис-
пользовать три вида форм:
n для запуска процесса и установки
первоначальных параметров; Рисунок 12. Создание шагов рабочего процесса в MS SharePoint Designer

№5, май 2008 23


администрирование
Во-вторых, инструменты разра-
ботки процессов все еще оставляют
желать лучшего. Хотя WWF и предо-
ставляет достаточно мощные возмож-
ности для разработки процессов, од-
нако при этом требуется участие вы-
сококвалифицированных програм-
мистов, к чему готовы далеко не все
организации. Простой инструмент –
SharePoint Designer – предоставляет
лишь весьма ограниченные возмож-
ности и не позволяет отобразить про-
цесс графически.
Логичным представляется исполь-
зование некоторой внешней платфор-
мы для поддержки workflow, которая
хорошо интегрируется с SharePoint, ис-
пользуя все его преимущества.
Рисунок 13. Готовое действие (Custom Activity) в MS SharePoint Designer Одним из таких вариантов может
быть Microsoft Biztalk Server. Его внед-
ющее приложение SharePoint, и обно- Во-первых, в SharePoint нет средств ряют в тех случаях, когда помимо
вите список процессов. полноценного мониторинга запущен- human workflow (т.е. процессов с учас-
Отладку процессов не рекоменду- ных процессов. Невозможно просмот- тием людей) требуется сложное меж-
ется проводить на рабочем сервере, реть в едином списке все запущенные системное взаимодействие, например,
т.к. это может существенно отразить- на сервере процессы, невозможно про- в биллинговых системах.
ся на его быстродействии. смотреть, на каком шаге находится те- Однако Biztalk Server – мощная
кущий процесс (если только записывать и дорогая платформа, использова-
Мониторинг процессов явным образом в журнал информацию ние которой не всегда оправдано. Бо-
Просмотреть состояние рабочего про- о завершении каждого действия), и тем лее подходящие и более экономич-
цесса можно из списка (библиотеки более увидеть это на схеме процесса. ные решения можно найти у сторон-
документов), где процесс был создан. Да и сами схемы процессов доступны них производителей или партнеров
В представлении данных рядом с до- только программистам, у которых уста- Microsoft. Например, российский про-
кументом, к которому привязан про- новлен Visual Studio. Отсутствуют сред- граммный продукт Docsvision (http://
цесс, появляется колонка с названи- ства поиска процессов, информирова- docsvision.com) включает как собствен-
ем процесса, в которой отображается ния администратора об ошибках, пост- ные средства разработки процессов,
его состояние – «В ходе выполнения», роения сквозной отчетности по процес- так и поддержку WWF, а дополнитель-
«Завершен» или «Ошибка». сам из нескольких списков. ный шлюз обеспечит взаимодействие
Если нажать на состояние процес-
са, можно просмотреть подробную ин-
формацию о его состоянии и журнал
процесса (см. рис. 15, 16).
В свойствах списка/библиотеки,
в разделе «Параметры рабочих про-
цессов» доступны отчеты в формате
xslx по рабочим процессам в данном
списке/библиотеке: отчет о длитель-
ности работы и отчет об отменах
и ошибках. Это отчеты представляют
собой сводную таблицу на основе жур-
нала процессов.

Платформы для работы
с workflow, интегрируемые
с SharePoint
И все-таки в качестве платформы
для реализации сложных систем до-
кументооборота с множеством процес-
сов SharePoint на данном этапе остав-
ляет желать лучшего. Рисунок 14. Работа с workflow в Visual Studio

24
администрирование
с SharePoint. Свои решения для орга-
низации workflow, интегрированные
с SharePoint, предлагают также мно-
гие западные разработчики, напри-
мер: Captaris (http://www.captaris.com),
Skelta (http://www.skelta.com), K2 (http://
www.k2workflow.com), Nintex (http://
www.nintex.com) и др.

Заключение
Стандартные процессы SharePoint мо-
гут покрыть лишь минимальные пот-
ребности документооборота в неболь-
шой компании. Редактор SharePoint
Designer, особенно при участии про- Рисунок 15. Состояние всех процессов, относящихся к документу
граммиста для разработки Custom
Activity, существенно расширяет воз- та со многими рабочими процессами, 2. Microsoft Office SharePoint Designer –
можности создания рабочих процес- то стоит задуматься, использовать ли h t t p: //o f f i c e . m i c r o s o f t .c o m /e n - u s /
сов, и с его помощью можно автомати- SharePoint или предпочесть иную плат- sharepointdesigner/default.aspx.
зировать ряд типовых задач по работе форму. Причем если в организации 3. MSDN Developer Introduction to Workflows
с документами. Однако если требуют- для других целей SharePoint уже ак- for Windows SharePoint Services 3.0
ся более сложные процессы, включаю- тивно применяется, то имеет смысл and SharePoint Server 2007 – http://
щие взаимодействие с внешними сис- использовать платформу с возмож- msdn2.microsoft.com/en-us/librar y/
темами, необходима разработка WWF ностью интеграции с SharePoint, бла- ms406057.aspx.
с помощью Visual Studio и квалифици- го производители предлагают непло- 4. MSDN. Working with features – http://
рованных программистов. хой выбор вариантов. msdn2.microsoft.com/en-us/librar y/
Таким образом, если workflow ис- ms460318.aspx.
пользуется в небольшом объеме и для 1. Enterprise Content Management Starter 5. V i s u a l S t u d i o 2 0 0 5 e x t e n s i o n s
построения несложных процессов, Kit for 2007 Office System – доступен for .NET Framework 3.0 (Windows
то возможностей самого SharePoint в составе SharePoint Server 2007 SDK – Wo r k f l ow Fo u n d at i o n) – h t t p: //
для поддержки рабочих процессов мо- http://www.microsoft.com/downloads/ w w w.mi c rosof t .c o m /d ownl oad s /
жет оказаться достаточно. details.aspx?FamilyID=6d94e307-67d9- d e t a i l s . a s px ?Fa m i l y I D = 5 d 614 0 9 e -
Если же требуется пос троить 41ac - b 2d 6 - 0 074 d 6 28 6 fa 9& D i s p l ay 1f a 3 - 4 8 c f - 8 0 2 3 - e 8 f 3 8 e7 0 9 b a 6 &
сложную систему документооборо- Lang=en. DisplayLang=en.

Рисунок 16. Подробная информация о текущем процессе «Три этапа»

№5, май 2008 25


г р а т ь
а в ы и
шанс с п ар т н
е р а ми
ые

Три
с т н о о т о р
с о вм е и з о в, к
р» хп р
трато ыш а ни с ыгр
а д м и в р о з
8 го да.
те м ный у ч а с ти е и и 200
Сис я ть л уго д
а л « п р и н п о
Журн т Вас в тор о м
гл а ш а е
ь с я в о  
те м ный
пр и т «Си с
п р о води л а х
буду
т
г р ы шах: в ж ур на 0 8 года.
в р оз ы е к о ды
о д и е 20
a m a g.ru
у ч ас тия ц и а льны ое полуг а w w w.s
Д ля и т е с пе з а в тор ж у р на л
О тыщ р а тор» а с а йте а л о в.
 ни с т е сь н ». ж ур н
д м и у й т р и з и з
а егистрир и н с кий П йте коды
ар дм ру
 З зделе «А но активи
ра
в ледовате
ль р и зов:
о с р ы ш а п
те к оды
 П 3 р о з ыг т и в и руй
о д и тьс я А З »: ак д.
п р о в
р и з « Р
0 0 8 го
е ко ды
т за 2 т
Буде н с к ий П 8 , 9 т и в и руй
А дми л о в №7, В А »: ак год.
 у р н а и з « Д 2 0 0 8 коды
з ж П р з а уй те ода.
и с к и й 1 1, 12 в и р 0 8 г
А д мин о в № 10,
И »: ак т и о д и е 20
 у р на л и з «ТР е п олуг
з ж йП р тор о
и с к и з а в
А д м и н ур на ло в
 с е хж
з в
и
Приз
нск ий
ми
Ад РАЗ»
П р из «
м и н с к ий атор
Ад н и к
К о мму к ур с ы

б н ы е р од ук ты с е р в ер ы
че еп е
 У граммны ыделенны
ро в
 П туальные
ир
 В В А»
« Д
й П р из
нс к и
А д м и
н и к атор
К о мму к ур с ы

б н ы е р од ук ты с е р в ер ы
че еп е
 У граммны ыделенны
ро в
 П туальные
ир
 В РИ»
з «Т
к и й При
нс
Адми тбук
оу ы
 Н бные курс родукты
У че м н ы еп
 г р ам
р о
 П
т ся...
чинае
ко на
о ль
Все т

Более подробную информацию о сроках и правилах проведения розыгрышей призов смотрите на сайте журнала – www.samag.ru
администрирование

Устанавливаем и настраиваем
систему мониторинга сети
OpenNMS

Андрей Семенов
Когда количество активного оборудования и серверов в сети неуклонно растет,
а контролировать работоспособность и качество предоставляемых сервисов становится все
сложнее, на помощь приходит система мониторинга сети OpenNMS.

Кратко о системе чения (Open Source). Кроме обычной нической поддержки 24х7 и обучения
мониторинга OpenNMS для Open Source-проектов поддержки персонала.
OpenNMS [1] – система мониторинга сообществом пользователей, произво- Данная система реа лизована
сетевой инфраструктуры уровня пред- дитель предоставляет многоуровневое на Java, поэтому появляется такое по-
приятия, распространяемая по моде- коммерческое сопровождение продук- ложительное качество, как кроссплат-
ли свободного программного обеспе- та: от внедрения до обеспечения тех- форменность.

28
администрирование
Поддерживаются ОС: фейс написан на Java/JSP, а для компиляции JSP в сервлет
n Linux: необходим компилятор Java, который отсутствует в JRE.
 Debian Etch и Lenny (x86 и x86_64);
 Red Hat Enterprise Linux/CentOS (3, 4 и 5; x86 Установка JDK
и x86_64); Java Development Kit (JDK) можно скачать с сайта компа-
 Fedora Core (версии с 2 по 8, x86 и x86_64); нии Sun [3] либо установить с помощью yum из репозито-
 Mandriva 2007 и 2008; рия Tigro [5].
 SuSE (9 и 10). Если данный репозиторий у вас не подключен, то мож-
n Solaris 8, 9, и 10 (SPARC и x86); но установить его через RPM-менеджер:
n Mac OS X (10.4+, PowerPC и x86);
n Windows 2000, XP, 2003 (Vista и Server 2008 не тестиро- rpm -ihv http://mirror.yandex.ru/fedora/tigro/8/i386/ ↵
tigro-release-8-1.i386.rpm
вались).
После установки репозитория можно воспользовать-
Теоретически OpenNMS может запуститься на любой ся yum:
платформе, поддерживающей Java SDK 1.4 и выше. Также
к положительным качествам можно отнести модульность yum install jdk
системы и возможность развертывания частей системы
на раздельных серверах (СУБД, демоны сбора статистики Хочу упомянуть об одном неприятном моменте: после
и веб-интерфейс могут быть разнесены). Конечно, можно установки JDK в Fedora 8 необходимо выполнить ряд допол-
добавить и ложку дегтя: за Java-реализацию, обеспечив- нительных шагов, чтобы заставить работать виртуальную
шую кроссплатформенность, пришлось заплатить увели- машину. Дело в том, что при попытке запуска любого Java-
чением потребления ресурсов. приложения выдается ошибка следующего вида:
Система OpenNMS отвечает за мониторинг функцио-
java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed
нирующих в сетевой инфраструктуре сервисов, таких как
Web, DNS, DHCP, сервисы СУБД (Oracle, MSSQL, PostgreSQL Проблема всем давно известная (попробуйте поискать
и др.), однако информация о состоянии сетевых устройств в Google строку с ошибкой) [6] и решается в Fedora 8 сле-
также доступна. дующим образом:
В системе упрощены способы добавления новых сете-
вых устройств для мониторинга, и общий принцип работы sed -i 's/XINERAMA/FAKEEXTN/g' /usr/java/jdk1.6.0_05/ ↵
jre/lib/i386/xawt/libmawt.so
основан на автоматическом обнаружении (discovery) сете-
вых устройств. Обнаружение состоит из двух частей – оп- Возможно, ваш путь к файлу libmawt.so будет отличать-
ределение интерфейсов (IP-адресов) и определение функ- ся от приведенного выше.
ционирующих на этих интерфейсах сервисов. Определение
интерфейсов осуществляется на основе протокола ICMP Установка PostgreSQL
(Ping), а определение сервисов – с помощью сборщиков Если у вас еще не установлен PostgreSQL [4], то установим
(collectors). На данный момент существует несколько сбор- с помошью yum:
щиков, но далее мы подробно рассмотрим сбор статисти-
ки, основанный на протоколе SNMP. yum install postgresql-server
Основной единицей мониторинга системы является ин-
терфейс (interface), который уникально определяется на ос- Теперь выполним начальную инициализацию:
нове IP-адреса. Сервисы (services) привязаны к интерфей-
сам, а интерфейсы, расположенные на одном устройстве, /sbin/service postgresql initdb
группируются в узел (node).
Что ж, давайте не будем упускать шанс оценить качест- Далее необходимо задать базовые настройки серве-
во системы и удобство работы с ней самостоятельно, не по- ра. Для этого нужно отредактировать файлы pg_hba.conf
лагаясь на рекламные строчки и чужие мнения. Присту- и postgresql.conf, находящиеся в /var/lib/pgsql/dat.
пим к установке. Правим файл pg_hba.conf:

Установка в дистрибутиве Fedora 8 Linux local all all trust


host all all 127.0.0.1/32 trust
Перед началом установки хотелось бы предупредить вас host all all ::1/128 trust
о некоторых тонкостях. Во-первых, для текущей версии
OpenNMS 1.5.90 сервер PostgreSQL [4] ветки 8.3.Х не под- Файл postgresql.conf:
держивается, так что устанавливать будем сервер ветки 8.2.
Во-вторых, начиная с версии OpenNMS 1.3.6 в составе дис- listen_addresses = 'localhost'
трибутива отсутствует библиотека jicmp, которую необхо-
димо будет загрузить отдельно [2]. Еще раз напомню, что это тестовая установка и конфи-
Также для работы системы нам понадобится JDK [3]. гурационные файлы очень упрощены, проблемы безопас-
Уточню, что необходима именно версия JDK (Java Developer ности полностью игнорируются и доступ к серверу БД ни-
Kit), а не JRE (Java Runtime Environment), так как веб-интер- как не защищен.

№5, май 2008 29


администрирование
Запускаем сервер: Должны быть найдены библиотеки jicmp и jrrd. Если что-
то пошло не так, то можно явно задать пути поиска:
/sbin/service postgresql start
./install -disU -l /usr/lib/jni:/usr/lib
и переходим к следующему шагу.
Также не забываем, что если мы устанавливаем базу дан-
Установка OpenNMS ных OpenNMS на свежую инсталляцию СУБД PostgreSQL,
Есть несколько веток программы для установки: stable, то пароль пользователя postgres пока пустой. Если же у вас
development и nightly snapshot, причем разработчикам ре- уже был установлен сервер PostgreSQL, то вам могут по-
комендуется использовать ветку development. На момент надобиться опциональные аргументы для скрипта инстал-
написания статьи была доступна версия 1.5.90. ляции:
Для установки можно скачать установочный jar-файл,
но проще будет установить дополнительный репозиторий -A,--admin-password <arg>
// Пароль администратора сервера postgres
OpenNMS для yum: // (по умолчанию: '')

rpm -Uvh http://yum.opennms.org/repofiles/ ↵ -a,--admin-username <arg>


// Имя администратора сервера postgres
// (по умолчанию: 'postgres')
opennms-repo-unstable-fc8.noarch.rpm

Данной командой мы установили репозиторий yum -c,--clean-database


для development-ветки OpenNMS. Теперь необходимо ус- // Очистить существующую базу при создании
тановить пакет opennms с помошью yum: -D,--database-url <arg>
// JDBC УРЛ базы данных (по умолчанию:
// jdbc:postgresql://localhost:5432/)
yum install opennms
-P,--database-name <arg>
// Имя базы данных PostgreSQL (по умолчанию: opennms)
Дополнительно необходимо установить пакеты jrrd (оп-
ционально вместо rrd), jicmp и iplike: -p,--password <arg>
// Пароль для базы данных opennms
// (по умолчанию: 'opennms')
yum install jrrd
yum install jicmp -u,--username <arg>
yum install iplike // Имя пользователя БД opennms (по умолчанию: 'opennms')

По умолчанию устанавливается веб-интерфейс Список всех возможных атрибутов можно просмот-


opennms-webapp-jetty для встроенного в OpenNMS контей- реть, набрав:
нера сервлетов Jetty, но есть также версия веб-интерфейса
для Tomcat и называется opennms-webapp-standalone. ./install -help
После успешной установки необходимо запустить
скрипт поиска установленной виртуальной машины Java: После успешной начальной установки и конфигурации
можно запускать OpenNMS:
cd /opt/opennms/bin
./runjava -s ./opennms start
Если по какой-то причине скрипт отработает некоррект-
но (например, вы установили JDK по нестандартному пути), Теперь набираем в браузере строку http://127.0.0.1:8980/
либо у вас установлено несколько разных JDK и вы хотите opennms/ и вводим имя пользователя «admin» и пароль
указать скрипту конкретную, то можно задать явный путь: «admin».

./runjava -S /usr/java/jdk1.6.0_5/bin/java Установка в Windows XP


Установка для Windows [7] не должна вызвать каких-либо
Теперь можно запускать скрипт начальной конфигу- затруднений и сводится к запуску файла opennms-installer-
рации: 1.5.90.jar и следованию указаниям графического установ-
щика, поэтому подробно описывать процесс не имеет смыс-
./install -dis ла. Перед установкой необходимо предварительно инстал-
лировать JDK не ниже 5 версии [3] и PostgreSQL ветки 8.2
Итак, если мы ничего не упустили, то скрипт отработа- (8.3 не поддерживается)[4]. Также отдельно устанавлива-
ет без ошибок. После завершения установочного скрипта ется библиотека jicmp [2], и путь к ней должен содержать-
не забываем посмотреть, все ли прошло хорошо: ся в переменной окружения PATH.

- searching for jicmp: Описание сетевой инфраструктуры


- trying to load /usr/lib/libjicmp.so: OK
- searching for jrrd: для мониторинга
- trying to load /usr/lib/libjrrd.so: OK Для более наглядного описания системы представим се-
- checking database version... 8.2 бе, что мы настраиваем ее для мониторинга корпоратив-
................................................................ ной сети предприятия с головным офисом и небольшой се-

30
администрирование
тью филиалов. Каждый из филиалов
объединен с головным офисом в еди-
ную сеть (см. рис. 1).
Пусть адресное пространство кор-
поративной сети будет задано следу-
ющим образом:
n 10.10.10.0/24 – а д ресное про -
странство головного офиса, выде-
ленное для серверов, маршрутиза-
торов, коммутаторов, сетевых при-
нтеров и т. п.;
n 10.10.11.0/ 24 – а д рес ное про -
странство головного офиса для ра-
бочих станций пользователей;
n 10.10.12 .0/24 – а д ресное про -
странство офиса №1;
n 10.10.13.0/24 – а д ресное про -
странство офиса №2;
n 10.10.14.0/24 – а д ресное про - Рисунок 1. Общая схема сети организации с удаленными офисами
странство офиса №3.
n packets-per-second – количество генерируемых ICMP-па-
Наша сеть состоит из достаточного количества марш- кетов в секунду. Не стоит указывать слишком большое
рутизаторов (например Cisco 2800 серии в головном офи- число, если задержки в вашей сети велики.
се и маршрутизаторов попроще – Cisco серий 2600, 1800 n initial-sleep-time – время перед стартом процесса обнару-
и т. п.). На маршрутизаторах настроены SNMP-агенты раз- жения (в миллисекундах, значение по умолчанию – 5 ми-
личных версий, включая третью. Кроме того, имеются также нут). Задержка необходима для полного старта системы,
серверы, среди которых терминальные, серверы баз дан- перед тем как начнут генерироваться события (events).
ных, почтовые и т. п., на многих из которых также установ- n restart-sleep-time – время после окончания процесса
лены SNMP-агенты (например, с помощью Net-SNMP). обнаружения, через которое процесс будет повторно
запущен (в миллисекундах, значение по умолчанию –
Настройка диапазонов сетевого 24 часа).
обнаружения (Discovery) n timeout – время ожидания ответа от обнаруживаемого
Параметры обнаружения устройств описываются в файле IP-адреса.
discovery-cofiguration.xml. Уточню, что все конфигурацион- n retries – количество попыток обнаружения, если с пер-
ные файлы хранятся в каталоге openNMS-install-path\etc, вой попытки ничего не обнаружено.
где openNMS-install-path – путь установки OpenNMS. Ниже
представлен пример файла discovery-cofiguration.xml для на- Глобальные атрибуты можно переопределить внутри
шего варианта сетевой инфраструктуры: вложенных в тег <discovery-configuration> тегов.
n Тег <specific> – указывает определенный IP-адрес,
<discovery-configuration threads="1" packets-per-second="1" включенных в процесс обнаружения.
initial-sleep-time="30000"
restart-sleep-time="86400000" n Тег <include-range> – указывает диапазон IP-адресов,
retries="3" timeout="800"> включенных в процесс обнаружения.
<include-range retries="2" timeout="1500"> n Тег <exclude-range> – указывает диапазон IP-адресов,
<begin>10.10.10.1</begin> исключенных из процесса обнаружения.
<end>10.10.14.254</end>
</include-range> n Тег <include-url> – определяет файл со списком вклю-
<exclude-range> ченных в процесс обнаружения IP-адресов, один IP-ад-
<begin>10.10.11.1</begin>
<end>10.10.11.254</end> рес в каждой строке.
</exclude-range>
<specific>10.10.11.1</specific>
<include-url>file:/opt/OpenNMS/etc/moreip.txt ↵ Все вложенные теги необязательны, но возможно также
</include-url> их множественное добавление. Так, можно задать несколь-
</discovery-configuration>
ко диапазонов с помощью <include-range>, определить не-
Согласно приведенному файлу, будет осуществлять- сколько тегов <specific> и <include-url>.
ся опрос (посылаться ICMP ping) диапазона адресов Итак, при запуске системы OpenNMS по истечении вре-
10.10.10.0/24, 10.10.12.0/24, 10.10.13.0/24 и 10.10.14.0/24, а так- мени initial-sleep-time запускается процесс обнаружения ин-
же одиночного IP-адреса 10.10.11.1 и списка IP-адресов, ука- терфейсов. Если получен ответ на ICMP-запрос, то для об-
занных в файле /opt/OpenNMS/etc/moreip.txt. наруженного интерфейса регистрируется событие (event)
Опишем некоторые глобальные атрибуты по умолчанию, newSuspect, на основе которого в дальнейшем будет осу-
задаваемые в теге <discovery-configuration>: ществлена попытка обнаружения сервисов, функциониру-
n threads – количество потоков для опроса. ющих на данном интерфейсе. А что делать, если ICMP-за-

№5, май 2008 31


администрирование
просы блокируются сетевым экраном? Для таких случа- Далее в конфигурационном файле идет описание сер-
ев существует альтернативный метод для регистрации со- висов (protocols). Определение сервисов основано на уста-
бытий newSuspect. В подкаталоге bin установленной сис- новлении TCP-подключения на определенный порт, но есть
темы openNMS находится Perl-скрипт send-event.pl, кото- также специальные классы для некоторых сервисов. Спи-
рый можно использовать для самостоятельной регистра- сок сервисов, поддерживаемых «из коробки» можно про-
ции данного события: смотреть в конфигурационном файле (возможно также
добавление дополнительных сервисов с помощью тега
/opt/opennms/bin/send-event.pl --interface ip-address ↵ <protocol-plugin>).
uei.opennms.org/internal/discovery/newSuspect
При обработке события newEvent, в случае, если IP-ад-
где «ip-address» – нужный IP-адрес. рес определен как «managed» демон capsd начинает ска-
Посмотреть на ход процесса обнаружения можно, загля- нирование сервисов в порядке их следования в конфигура-
нув в файл discovery.log, находящийся в подкаталоге logs ционном файле. Первым в конфигурационном файле ука-
установленной системы openNMS. зан протокол ICMP:

Настройка процесса обнаружения <protocol-plugin protocol="ICMP"


class-name="org.opennms.netmgt.capsd.IcmpPlugin"
сервисов (Capabilities daemon) scan="on" user-defined="false">
После того как зарегистрированы события newSuspect <property key="timeout" value="2000"/>
<property key="retry" value="2"/>
для обнаруженных интерфейсов, приходит время рабо- </protocol-plugin>
ты демона capsd (capabilities daemon). Его задачей являет-
ся распознавание всех функционирующих на интерфейсе Описание каждого сервиса заключено внутри тега
сервисов. Рассмотрим пример конфигурационного файла <protocol-plugin>. Данный тег содержит следующие атри-
capsd-configuration.xml. Конфигурация файла позволяет буты:
очень гибко управлять ходом процесса обнаружения сер- n protocol – название сервиса;
висов. В первых строчках определяются глобальные пара- n class-name – определяет класс, который будет исполь-
метры функционирования сервиса: зоваться для сканирования сервиса;
n scan – признак включения сканирования данного серви-
<capsd-configuration rescan-frequency="86400000" са («on» – сканирование сервиса включено, «off» – сер-
initial-sleep-time="300000"
management-policy="managed" вис не будет сканироваться);
max-suspect-thread-pool-size="6" n user-defined – добавление новых сервисов возможно
max-rescan-thread-pool-size="3"
abort-protocol-scans-if-no-route="false"> через веб-интерфейс. В таком случае атрибут примет
значение «true».
где:
n rescan-frequency – время, через которое происходит В каждом сервисе можно указывать дополнительные
повторное сканирование интерфейса на предмет об- параметры, определяемые через значения key и value внут-
наружения сервисов. ри тега <property>. Кроме того, применительно к каждому
n initial-sleep-time – время задержки после запуска сервису можно применять дополнительный тег <protocol-
openNMS перед началом сканирования сервисов. configuration>, в котором можно описывать группы IP-ад-
n management-policy – контролирует процесс сканиро- ресов, исключенные (или включенные) из сканирования.
вания сервисов. Если установлен в «managed» – то все Например:
события newSuspect будут обработаны, если же пара-
метр установлен в значение «unmanaged», то все собы- <protocol-plugin protocol="SNMP" class-name= ↵
"org.opennms.netmgt.capsd.plugins.SnmpPlugin"
тия newSuspect будут проигнорированы, и сканирование scan="on" user-defined="false">
не произойдет. Параметр можно переопределить в те-
<protocol-configuration scan="off" user-defined="false">
ге <protocol-configuration>, о котором будет рассказано <range begin="10.10.12.1" end="10.10.14.254"/>
дальше. <property key="timeout" value="4000"/>
<property key="retry" value="3"/>
n max-suspect-thread-pool-size – количество одновре- </protocol-configuration>
менных потоков сканирования при первоначальном об- <protocol-configuration scan="on" user-defined="false">
<specific>10.10.11.1</specific>
ходе адресов. Увеличение значения ускоряет сканиро- </protocol-configuration>
вание ценой потребляемых ресурсов.
<property key="timeout" value="2000" />
n max-rescan-thread-pool-size – количество создаваемых <property key="retry" value="1" />
потоков на интерфейсах с уже обнаруженными серви- </protocol-plugin>
сами при повторном сканировании.
n abort-protocol-scans-if-no-route – если параметр вы- В приведенном выше примере мы переопределили
ставлен в «false», то попытки сканирования сервисов группу адресов (10.10.12.1 -10.10.14.254), для которых опре-
при получении сообщения «no route to host» продолжат- деление сервиса SNMP будет отключено, и добавили ад-
ся, так как это сообщение может быть в некоторых слу- рес 10.10.11.1, для которого наличие сервиса будет опреде-
чаях вызвано наличием межсетевого экрана. Если па- ляться. Также можно переопределить общие для всех на-
раметр примет значение «true», то сканирование интер- стройки обнаружения, заданные в головном теге <capsd-
фейса будет остановлено. configuration> с помощью тега <ip-management>:

32
администрирование
<ip-management policy="managed"> заданного времени. Узнать, успевает ли демон опросить
<range begin="10.10.10.1" end="10.10.14.254"/>
<include-url>file:/opt/OpenNMS/etc/include</include-url> все устройства и сервисы, можно, заглянув в файл logs/
</ip-management> daemon/poller.log. В файле нужно найти строку, содержа-
щую максимальное значение параметра alive:
где значение атрибута policy может принимать значение
2008-05-15 17:01:16,201 DEBUG [PollerScheduler-40 Pool]
«managed» и «unmanaged». RunnableConsumerThreadPool$SizingFifoQueue:
Данные настройки действуют на все указанные в capsd- adjust: started fiber PollerScheduler-40 Pool-fiber21
ratio = 1.0476191, alive = 21
configuration сервисы, если только диапазон адресов для ка-
кого-либо сервиса (в нашем случае – SNMP) не переопре- Если значение параметра alive+1 (так как есть еще ро-
делен c помощью тега <protocol-configuration>. дительский поток) близко к значению параметра threads,
Необходимо заметить, что если в процессе обна- то есть смысл увеличить количество потоков опроса.
ружения (discovery) интерфейс по каким-то причинам Параметр serviceUnresponsiveEnabled определяет, какое
не был определен, и не было зарегистрировано событие событие будет генерироваться в случае кратковременного
newSuspect, демон capsd для такого интерфейса не будет сбоя – «выход из строя» (outage) или только «сервис не от-
запущен, даже если указать IP-адрес в файле конфигу- вечает» (unresponsive).
рации capsd явно. Чтобы не генерировать событие «выход из строя»
при кратковременной недоступности, нужно выставить этот
Настройка периодичности опросов параметр в «true».
(polling) Тег <node-outage> определяет поведение в случае не-
После сбора информации об узлах, интерфейсах и функ- доступности всех интерфейсов на узле.
ционирующих на них сервисах приходит время мониторин- Если во время опроса какой-либо сервис на интерфей-
га. Информация о состоянии сервисов, интерфейсов и уз- се не отвечает, генерируется событие NodeLostService, ес-
лов собирается двумя основными способами. ли все сервисы на интерфейсе не отвечают, то генериру-
Первый способ основан на периодических опросах ется событие InterfaceDown. Если параметру status при-
(polling). Процессы-мониторы подключаются к ресурсу своено значение «on», то в случае недоступности всех
и производят простой тест, чтобы определить текущее со- интерфейсов узла не генерируется множество событий
стояние ресурса. Если ресурс недоступен – генерируется NodeLostService и InterfaceDown, а лишь одно событие –
определенное событие. NodeDown. Во время недоступности узла, в случае, если
Настройка периодичности опросов описывается в фай- с помощью тега <critical-service> определен критический
ле poller-configuration.xml. Для удобства введено понятие па- сервис (в нашем случае ICMP), будет опрашиваться толь-
кета (package) сервисов. В файле можно описать несколько ко критический сервис. После того как критический сервис
пакетов, в каждом из которых можно указать собственную будет восстановлен, начнут опрашиваться все остальные
периодичность опросов, а также определить уникальное сервисы. Если тег <critical-service> не задан, то опрос всех
подмножество опрашиваемых сервисов. Кроме того, в каж- сервисов определяется параметром pollAllIfNoCriticalServ
дом пакете можно задавать собственную модель действий iceDefined. Если данное свойство имеет значение «false»,
при недоступности сервиса. Период опроса в случае недо- то будет опрашиваться только первый сервис в пакете, ина-
ступности сервиса меняется динамически и может гибко на- че – все. Для удобства создадим на основе уже готового
страиваться. Также для каждого пакета можно задать вре- пакета exmaple1 пакет ICMP-PKG и поместим туда единст-
мя простоя, когда не будет производиться опрос сервисов. венный сервис ICMP, так как хотим опрашивать устройс-
Глобально периоды простоя для всех пакетов можно задать тва по данному протоколу чаще, чем, например, собирать
в файле poll-outages.xml. статистику по SNMP:
Данные опросов собираются с помощью библиотеки
jrrd – Java-реализации всем известной RRD (Round Robin <package name="ICMP-PKG">
<filter>IPADDR != '0.0.0.0'</filter>
Database). <include-range begin="1.1.1.1" ↵
Рассмотрим файл poller-configuration.xml: end="254.254.254.254" />
<rrd step="60">
<rra>RRA:AVERAGE:0.5:1:89280</rra>
<poller-configuration threads="30" <rra>RRA:AVERAGE:0.5:60:8784</rra>
serviceUnresponsiveEnabled="false" <rra>RRA:AVERAGE:0.5:1440:366</rra>
nextOutageId="SELECT nextval('outageNxtId')" ↵ <rra>RRA:MAX:0.5:1440:366</rra>
xmlrpc="false"> <rra>RRA:MIN:0.5:1440:366</rra>
<node-outage status="on" ↵ </rrd>
pollAllIfNoCriticalServiceDefined="true"> <service name="ICMP" interval="30000"
<critical-service name="ICMP" /> user-defined="false" status="on">
</node-outage> <parameter key="retry" value="2" />
<parameter key="timeout" value="3000" />
Параметр threads определяет максимальное количест- <parameter key="rrd-repository"
value="D:/PROGRA~1/OpenNMS/share/rrd/response" />
во потоков для опроса. Варьируется в зависимости от ко- <parameter key="rrd-base-name" value="icmp" />
личества опрашиваемых устройств и мощности сервера. <parameter key="ds-name" value="icmp" />
</service>
Будьте внимательны с данным параметром, при большом <downtime interval="20000" begin="0" end="300000"/>
количестве опрашиваемых устройств может потребовать- <!-- 20s, 0, 5m -->
<downtime interval="120000" begin="300000" ↵
ся увеличить количество потоков для опроса, так как де- end="3600000"/>
мон может не успеть опросить все устройства в течение <!-- 2m, 5m, 1h -->

№5, май 2008 33


администрирование
<downtime interval="300000" begin="3600000" ↵ использования нескольких коллекторов, мы остановим-
end="432000000"/>
<!-- 5m, 1h, 5d --> ся подробнее на сборе статистики с помощью опросов
<downtime begin="432000000" delete="true" /> SNMP-агентов.
<!-- anything after 5 days delete -->
</package>
Настройка сбора статистики
Обратите внимание на тег <filter>. Внутри пакета он мо- по протоколу SNMP
жет быть задан в единственном числе. В теге можно за- При настройках по умолчанию в OpenNMS 1.5.90 для сбо-
дать фильтрацию IP-адресов по маскам. Например, так: ра статистики на основе коллекторов используется прото-
<filter>IPADDR = '10.*.*.*'</filter> – будут опрашиваться лишь кол SNMP версии 1 и 2(с). Однако существует также воз-
адреса 10.0.0.0/8. Также можно задавать диапазоны адре- можность использовать протокол SNMP-версии 3. Для ак-
сов с помощью уже известного тега <include-range>, внутри тивации возможности сбора информации по SNMPv3 необ-
которого задан диапазон IP-адресов для опроса. Напомню, ходимо использовать библиотеку SNMP4J [1], поддержива-
что опрашиваться будут лишь сервисы на интерфейсах, най- ющую протокол SNMPv3 (по умолчанию используется биб-
денных в процессе обнаружения. То есть сервисов на ин- лиотека JoeSNMP). Однако для большинства случаев до-
терфейсе может быть найдено множество, однако сбор ста- статочно SNMPv1 и SNMPv2. Для активации SNMPv3 не-
тистики будет происходить лишь по сервисам, указанным обходимо раскомментировать строчку:
в пакетах файла poller-configuration. Внутри пакета с помо-
щью тега <service> может быть определено несколько сер- org.opennms.snmp.strategyClass= ↵
org.opennms.netmgt.snmp.snmp4j.Snmp4JStrategy
висов (в нашем пакете только сервис ICMP). Рассмотрим
атрибуты и вложенные теги тега <service>: в файле opennms.properties и поставить символ коммента-
Атрибут status может принимать значения «on» – статис- рия перед строчкой с JoeSNMP.
тика собирается и «off» – сбор статистики отключен. Теперь следует возвратиться к файлу capsd-configuration.
В тегах <parameter> с помощью атрибутов key и value за- xml и добавить для удобства новый сервис с названием
даются дополнительные параметры, среди которых следует SNMPv3 (название может быть любым, удобным вам). В бу-
обратить внимание на параметр rrd-repository, в котором за- дущем это поможет отличать узлы с обнаруженными SNMP-
дается путь для хранения данных опросов. Учтите, что этот агентами разных версий:
параметр связан с параметром rrd.base.dir в файле opennms.
properties. Не забывайте об этом, если будете переносить <protocol-plugin protocol="SNMPv3"
class-name="org.opennms.netmgt.capsd.SnmpPlugin"
конфигурационные файлы с сервера на сервер. scan="on" user-defined="false">
В тегах <downtime> описывается поведение опроса сер- <property key="force version" value="SNMPv3"/>
<property key="timeout" value="2000"/>
виса в случае его недоступности: <property key="retry" value="3"/>
n Атрибут interval – задает периодичность опроса при </protocol-plugin>
недоступности;
n Атрибут begin – время начала заданного периода оп- Также необходимо добавить сервис с таким же именем
роса миллисекундах; в файл poller-configuration.xml, если этого не сделать, сер-
n Атрибут end – время с окончания заданного периода вис определится, но опрашиваться не будет. Здесь есть од-
опроса в миллисекундах. на тонкость – если не указывать конкретную версию про-
токола и вообще исключить строчку <property key="force
То есть в строке: version" value="SNMPv3"/> (как это сделано в конфигура-
ции по умолчанию), то будут найдены SNMP-агенты вер-
interval="20000" begin="0" end="300000"/> сий, указанных в файле snmp-config.xml.
При сканировании сервиса SNMP демон capsd обра-
указано, что в случае недоступности сервиса произво- щается за дополнительной информацией в файл snmp-
дить опрос каждые 20 секунд, начиная с нулевой секунды config.xml:
и по достижении 5 минут времени недоступности. Начи-
ная с пяти минут недоступности сервиса можно увеличить <?xml version="1.0"?>
<snmp-config port="161" retry="3" timeout="1500"
интервал опроса до 2 минут, таким образом уменьшив на- read-community="public" write-community="private">
грузку на вычислительные ресурсы: <definition version="v3" security-name="myname"
auth-protocol="MD5" auth-passphrase="yourmd5pass">
<specific>10.10.10.1</specific>
<downtime interval="120000" begin="300000" end="3600000"/> <specific>10.10.11.1</specific>
</definition>
<definition version="v1" read-community="charoday">
а после недоступности сервиса в течение часа увеличить <specific>10.10.14.1</specific>
</definition>
интервал опроса еще больше. </snmp-config
Тег <rrd>, в котором задаются параметры сбора и хра- >
нения данных, заслуживает более пристального изучения
и будет рассмотрен позже. В файле находится дополнительная информация для оп-
Второй способ сбора статистики основан на коллек- роса SNMP-агентов.
торах (collectors). Он немного сложнее в настройке, но мо- Корневой тег файла называется <snmp-config> и содер-
жет дать больше информации. Существует возможность жит следующие атрибуты:

34
администрирование
n port – порт, через который идет об-
ращение к SNMP-агенту;
n retry – количество попыток подклю-
чения к SNMP-агенту;
n timeout – время ожидания ответа
от агента;
n read-community – строка для дос-
тупа на чтение к SNMP-агенту;
n write-community – строка для дос-
тупа на запись к SNMP-агенту;
n version – версия SNMP-протоко-
ла.

Можно переопределить атрибу-


ты, указанные в корневом теге, опи-
сав внутри него тег <definition>. В на-
шем случае в первом вложенном теге
<definition> мы переопределили вер-
сию протокола SNMP. Внутри этого те-
га также можно определять диапазоны
IP-адресов с помощью тегов <include-
range>, <specific> и <exclude-range>. Рисунок 2. Главная страница веб-интерфейса
Д л я о п р е д е л е н и я п р о т о ко л а
SNMPv3 существуют дополнительные атрибуты: или для Windows:
n security-name – имя для аутентификации;
n auth-protocol – протокол шифрования пароля аутенти- opennms.bat start
фикации (SHA или MD5);
n auth-passphrase – пароль аутентификации (шифрует- Через некоторое время после запуска в списке узлов
ся MD5 или SHA); появятся первые обнаруженные устройства с найденны-
n privacy-protocol – протокол шифрования данных ми интерфейсами и сервисами. Это уже работающая сис-
(DES); тема. Через веб-интерфейс мы можем получать инфор-
n privacy-passphrase – пароль шифрования данных. мацию о событиях, таких как доступность сервисов и ус-
тройств, просматривать графики загрузки каналов связи
Протокол SNMPv3 поддерживает три типа аутентифи- и ряд других, уже внесенных в типовую конфигурацию гра-
кации: noAuthNoPriv, authNoPriv и authPriv. фиков. На рис. 2 показана основная страница веб-интер-
Если указать все атрибуты – получим тип authPriv (са- фейса OpenNMS.
мый защищенный тип: шифруются данные авторизации и Однако многие вопросы дополнительной настройки ос-
все передаваемые данные). тались неосвещенными, например, настройка уведомлений
Если не указывать атрибуты privacy-protocol и privacy- о событиях на e-mail, кастомизация веб-интерфейса, отве-
passphrase, то получим тип authNoPriv, когда в защищен- чающая требованиям вашей сети, тонкая настройка хра-
ном виде передаются лишь аутентификационные данные, нимых в базах RRD данных, а также настройка парамет-
остальные данные не шифруются. ров отображения графиков и создание отчетов о состоя-
Если указать только атрибут security-name, то получим нии сервисов и устройств. Подробнее изучим данные воп-
самый незащищенный тип noAuthNoPriv. росы в следующей статье.
Подробнее о модели безопасности SNMPv3 (User-Based
Security Model – USM и VACM – View-based Access-Control 1. http://www.opennms.org – сайт OpenNMS.
Model) можно найти в RFC3414 и RFC3415. 2. http://sourceforge.net/project/showfiles.php?group_id=4141&
Обратите внимание, что библиотека SNMP4J [8] ревнос- package_id=240236 – ссылка для загрузки библиотеки jicmp.
тно относится к соблюдению стандартов, согласно которым 3. http://java.sun.com/javase/6/ – ссылка для загрузки JDK6.
auth-passphrase должен быть не менее 8 символов, то же ка- 4. http://www.postgresql.org – СУБД PostgreSQL.
сается и privacy-passphrase. Поэтому не советую испытывать 5. http://tigro.info – блог Tigro со ссылками на репозитории Fedora.
судьбу коротким паролем. Подробнее о настройке SNMPv3 6. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6532373 –
на оборудовании фирмы Cisco можно узнать из [9]. описание ошибки запуска JVM.
7. http://www.opennms.org/index.php/GUI_Installer#Microsoft_
Что дальше? Windows_XP – пошаговая установка в Windows XP.
После осуществления всех приведенных выше настроек 8. http://snmp4j.org – сайт библиотеки snmp4j.
можно запустить openNMS: 9. http://www.cisco.com/en/US/docs/ios/12_0t/12_0t3/feature/guide/
Snmp3.html – настройка SNMPv3 агента на маршрутизаторах
./opennms start Cisco.

№5, май 2008 35


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

Медиация Linux и GDI-принтера

Павел Закляков
На что только не идёт капитализм ради получения сверхприбыли. Так, производители GDI-
принтеров реализуют свои упрощённые продукты массовым покупателям дешевле, ожидая,
что последние не будут подключать свои принтеры к ОС Linux, а будут покупать лицензии
на коммерческие ОС. Как видим, скупой платит дважды, поэтому лучше вообще не покупать
дешёвые GDI-принтеры. Но что делать, когда это не скупость, а бедность? Тогда на помощь
приходит наша изобретательность.

О
братился ко мне знакомый зался GDI-принтером, а большая часть «выбирайте на любой вкус и цвет». Ча-
с просьбой помочь, настро- не понимающих в технике сотрудников ще всего все эти принтеры подклю-
ить принтер в Linux. «Нашёл уже сроднилась с ОС Linux, из‑под ко- чаются к компьютеру, который подго-
чем удивить», – подумал я. Положил торой принтер упорно отказывался тавливает и отправляет информацию
в сумку ноутбук с Linux, сладенькое печатать. для печати. С этого момента и начи-
к чаю и поехал на выходных разби- наются все тонкости.
раться с проблемой. По приезду ока- GDI-принтеры Несмотря на то что за захват, пере-
залось не всё так просто. Я думал, Немного теории. Любой принтер – это мещение носителя, нанесение изобра-
что в офисах должны жить сетевые устройство, которое может наносить жения или перемещение печатающей
принтеры, подключённые к локаль- на бумагу или другой носитель (плён- головки отвечают различные механиз-
ной сети, а не к отдельному компью- ка, компакт-диск и др.) изображение мы, состоящие из роликов, моторчиков,
теру. (Я даже домой подумывал се- или текст. Принтеры бывают самые шестерёнок и др., всеми этими частя-
бе такой прикупить, так как частень- разные. Не секрет, что в кондитерс- ми управляет некоторое центральное
ко раздражает совместное использо- ком деле существуют пищевые прин- устройство, которое мы назовём про-
вание печатающего устройства вмес- теры фирмы Modecor со съедобными цессором или контроллером принте-
те с родственниками, а покупать два чернилами, которые могут печатать ра. Пользователю всё равно, как эти
принтера – расточительство.) Но, как тексты и фотографии на вафельных части взаимодействуют между собой,
выяснилось, я ошибался. У нас вез- или сахарных пластинах. Существу- ему важен результат. Поэтому с целью
де экономят и, если можно купить что- ют принтеры, печатающие реклам- удобства и унификации принтеров их
то подешевле, то жди подвоха. Новый ные плакаты, наклейки в супермар- контроллеры должны понимать какой-
принтер, который предстояло настро- кетах, заполняющие паспорта, биле- либо язык описания команд, форми-
ить для совместной печати в сети, ока- ты, платёжки и сберкнижки. В общем, рующих задание для печати. Подоб-

36
администрирование
ных языков существует великое мно-
жество: ESC/P-последовательнос- Что такое медиация Медиация – это когда обе стороны
ти, Postscript, PCL, HPGL, Lineprinter, Термин «медиация» относительно молодой не отступают от своих принципов, а согла-
Xerox XES/UDK и др. Наиболее рас- и был заимствован из сферы бизнеса. Мно- шаются идти на переговоры с привлече-
пространёнными являются первые три. гие компании сталкиваются с тем, что года- нием нейтрального посредника – медиа-
Они же практически всегда поддержи- ми не могут решить проблемы с конкурен- тора. Не вдаваясь в тонкости всего этого
ваются современными ОС. Большинс- тами, а то и коллегами. Ни одна из фирм процесса, можно отметить, что на «запа-
тво принтеров делают совместимыми не намерена уступать другой, а повлиять де» больше половины дел, разрешаемых
с этими языками. Казалось бы, всё на ситуацию никто не может, обе сторо- через медиацию, оставляют довольными
очень удобно и хорошо, но прогресс ны недовольны и терпят убытки. «Демок- обе стороны.
не стоит на месте. ратический путь» – использовать судеб- В этой статье я постараюсь выступить
Проблема перехода на новое бы- ную систему безнадёжно устарел, невы- в роли медиатора, решив проблему печати
ла и раньше, вернёмся в 90-е годы годен, долог и редко оставляет в выгоде из под ОС Linux на GDI-принтеры.
прошлого века. У большинства бы- обе стороны.
ли матричные принтеры, «знающие»
только об ESC/P-последовательнос- Так и поступили производители, ни люди, а настраивать операционные
тях, а лазерные и струйные были уде- создавая технологию GDI-принте- системы пришлось мне. Большинству
лом немногих в силу их высокой сто- ра. GDI – это Graphic Device Interface – администраторов наверняка эта исто-
имости, но со временем ситуация на- не что иное, как библиотека функций рия покажется знакомой.
чала меняться. Пользователи стали ОС Windows для осуществления выво-
печатать всё больше графики. Разре- да информации на графические пери- Медиация
шения, а значит и качество, докумен- ферийные устройства, такие как дисп- Не всё так плохо, если бы не наша
тов росли. леи или принтеры. Вместе с этой биб- изобретательность!
В переходный момент появления лиотекой в связке работает драйвер Существуют две проблемы:
языков Postscript и PCL для поддержа- принтера. n GDI-принтеры не совместимы
ния обратной совместимости со ста- Всё бы хорошо, только производи- с другими принтерами;
рыми программами многие лазерные тели принтеров в погоне за дешевиз- n Linux не имеет драйверов под боль-
и струйные принтеры умели эмулиро- ной упустили из виду другие опера- шинство GDI-принтеров.
вать матричные принтеры, а некото- ционные системы, как ОС Linux, и за-
рые умеют делать это и сейчас. С од- были предоставить для них свои драй- Один из путей решения – написать
ной стороны, это хорошо и удобно веры. Предполагаю, что тут не обош- свой драйвер принтера. Подобные по-
всем, но, с другой, это означает допол- лось без влияния производителей пытки для некоторых принтеров Canon,
нительные накладные расходы. Windows. Lexmark, Samsung были реализованы
Например, если на лазерный прин- Так как специфический внутренний в проектах [5-8]. Наиболее информа-
тер, эмулирующий матричный, отпра- формат данных GDI-принтеров не был тивной и полезной статьёй по созда-
вить на печать слово «мама», то он стандартизирован, то у каждого произ- нию собственного драйвера мне пока-
должен получить меньше десятка байт водителя принтеров он свой и каждо- залась статья [7]. Но как быть тем, кто
(4 байта текста плюс несколько слу- му принтеру нужен свой драйвер. Да- не силён в программировании и его
жебных) и напечатать слово. При этом же в такой непростой ситуации драйве- принтер не вошёл в «список счастлив-
принтер, получив 4 байта текста, дол- ры под Linux не понадобились бы, если чиков» выше? Для них остаётся два
жен найти «у себя» таблицу шрифтов фирмы удосужились предоставить ин- пути: первый – проверить, возмож-
и понять, как та или иная буква выгля- формацию о своих протоколах. Уверен, но ли купить опциональный PCL или
дит. То есть это дополнительная память что десяток-другой энтузиастов реши- Postcript-аппаратный модуль у произ-
и вычислительные ресурсы. Когда же ли бы проблему менее чем за неде- водителя принтера, т.е. сделать прин-
мы печатаем изображение, например лю. Но протокол каждого производи- тер совместимым. К сожалению, боль-
того же слова «мама», то оно целиком теля это «know-how» – запатентован- шая часть GDI-принтеров не имеет та-
формируется на компьютере и посыла- ная технология, поэтому они не спешат кой функции и принтер, рассматрива-
ется на принтер. С точки зрения поль- делиться информацией с Open Source- емый в статье (Sharp AR153), также
зователя разницы нет, картинка одина- сообществом. не имеет. Поэтому мне и всем осталь-
ковая в обоих случаях, но с точки зре- Вместе с тем, большинство поль- ным, «невезучим» читателям придёт-
ния технологии и экономии есть. зователей не знакомы с тонкостями ся воспользоваться вторым путём –
Обратная совместимость сейчас технологии печати и не задумываются медиацией.
не очень важна, а если изображение о совместимости. Обидно, но именно Как подру жить GDI-принтер
текста может формировать компью- они, массовые покупатели, не разбира- и Linux? Подобных решений много,
тер, то зачем держать аналогичный ющиеся в деталях, чаще всего опреде- например [9]. Важнее разобраться
блок в принтере? Не проще ли сделать ляют ход истории, развитие принтеров, в том, что мы понимаем под словом
принтер без этого блока, будет навер- операционных систем и многого дру- «подружить». Вышеописанная статья
няка надёжнее, т.к. меньше деталей гого, покупая то, что подешевле. Так и не показалась мне интересной, так как
и точно дешевле? в моём случае – принтер покупали од- не решает поставленной задачи. Под-

№5, май 2008 37


администрирование
Настройка программ на стороне
Windows
Для удобства разобьём процесс на две части: установку
и настройку.

Установка
C адреса [3] переходим в раздел «Download» и скачива-
ем архив redmon17.zip, распаковываем и запускаем файл
setup.exe. Программа установки RedMon «спрашивает»,
действительно ли мы хотим установить программу. Отве-
чаем ей: «Да». Установка проходит быстро, после чего вы-
водится окно завершения процедуры установки.
С адреса [4] переходим в раздел «Windows» и скачи-
ваем архив gs862w32.exe (в нашем случае использова-
лась 32‑битная версия) и запускаем его. Скачанный файл –
Рисунок 1. Диалоговое окно установки GPL Ghostscript это самораспаковывающийся архив. Нажимаем кнопку
«Setup», после чего на экране появляется небольшое окно,
ключить принтер к порту компьютера, получать данные по где бежит индикатор прогресса распаковки.
сети и отправлять их на порт принтера не предоставляет- По завершению процесса распаковки появляется диа-
ся сложным. логовое окно с уточнениями, куда ставить программу и где
Поэтому в качестве основы для медиации было выбра- создавать ярлыки (cм. рис. 1).
но решение, описанное в [2], где решается именно пробле- Оставляем указанные значения без изменений (т.е. про-
ма печати из‑под Linux. ОС Linux выступает в роли клиента, грамма будет установлена в директорию «C:\Program Files\
а медиатором оказались две программы: – Redirection Port gs») и нажимаем кнопку «Install». Появляется окно, отобра-
Monitor [3] и Ghostscript [4], запускаемые на Windows. жающее log-файл процесса установки, после чего установ-
Печать происходит по следующей схеме: компьютер ка GPL Ghostscript завершена.
под управлением ОС Linux отправляет документ в фор-
мате PostScript по сети на печать компьютеру с Windows. Настройка
Программа RedMon перехватывает сообщение и отправ- Программы установлены, теперь необходимо их настроить.
ляет его на вход программы Ghostscript, которая, исполь- Создаём текстовый файл winprinter.rsp с помощью блокно-
зуя штатный драйвер принтера под Windows, печатает со- та или <Shift> + <F4> в Far. Сохраняя имя «winprinter.rsp»
общение от своего имени. в блокноте, возьмите его в кавычки, иначе у вас получит-
Конечно, ситуация не позволяет при наличии GDI-при- ся «winprinter.rsp.txt».
нтеров полностью мигрировать офисам на Linux, отказав-
шись от коммерческих лицензий, зато предложенное ре- -I"C:\Program Files\gs\gs8.62\lib"; ↵
"C:\ProgramFiles\gs\gs8.62\fonts"
шение позволяет сократить число Windows-машин до од- -sDEVICE=mswinpr2
ной и тем самым значительно сэкономить средства. Вполне -dNOPAUSE
-dSAFER
возможно, что вышеописанные программы кому-то в буду- -sPAPERSIZE=a4
щем удастся запустить под эмулятором wine, если послед- -sOutputFile="\\spool\SHARP AR-153E N"
ний будет более полно реализовывать эмуляцию библио-
тек Windows и поддержку драйверов, тогда от использова- Если у вас версия Ghostscript 8.62, и путь установки вы
ния Windows можно будет отказаться вовсе. не меняли, то первую строчку править не нужно. В послед-

Рисунок 2. Выбор способа подключения принтера Рисунок 3. Выбор порта подключения принтера

38
администрирование
ней строчке «SHARP AR-153E N» – имя вашего GDI-прин-
тера, скопированное из его свойств. Учтите, лучше скопи-
ровать и вставить, т.к. важно правильное написание с учё-
том пробелов и регистра. Если совершить ошибку, то это
выльется в то, что программа Ghostscript каждый раз при
печати будет выдавать окно и спрашивать: «На какой прин-
тер печатать?».
Добавляем новый виртуальный принтер. Для этого на-
жимаем: «Пуск → Настройка → Принтеры → Установка
принтера». У вас запустится «Мастер установки принтеров»,
где нажимаем кнопку «Далее». В следующем окне выби-
раем «Локальный принтер», галочку «Автоматическое оп-
ределение ...» снимаем (cм. рис. 2).
Нажимаем «Далее», в появившемся окне выбираем
«Создать новый порт», в типе порта указываем «Redirection
port» (cм. рис. 3). Рисунок 4. Настройка параметров порта «RPT1:»
Нажимаем «Далее», появляется окошко с именем пор-
та, где оставляем без изменений «RPT1:».
После переходим к окну выбора принтера. Пред-
лагаю установить любой PostScript-принтер, например
«HP LaserJet 6P/6MP PostScript», т.к. большинство Linux-дис-
трибутивов умеет беспроблемно с ними работать.
Замечание: наиболее ленивые пользователи могут най-
ти какой-нибудь PostScript-принтер на букву «А», т.к. он бу-
дет в начале списка, я же предпочитаю проверенную мо-
дель HP.
Нажимаем «Далее», и в следующем окне придумыва-
ем имя нашему виртуальному принтеру. Имя может быть
любым, но удобнее взять имя настоящего принтера, допи-
сав к нему буквы PS, означающие, что этот (пусть и вир-
Рисунок 5. Проверяем правильность настройки печатью
туальный) принтер может печатать в формате PostScript. на виртуальный принтер
В нашем примере имя будет «SHARP153PS». «Использо-
вать этот принтер по умолчанию...» – выбираем «Нет», т.к. «Browse». Обратите внимание, что существуют два фай-
«по умолчанию» пусть используется настоящий принтер, ла: gswin32c.exe и gswin32.exe. Нам нужен первый, т.к. он
а не виртуальный. работает из командной строки. В поле «Arguments for this
Нажимаем «Далее», после чего открываем общий дос- program are:» заносим имя созданного нами ранее файла
туп к виртуальному принтеру из сети и придумываем ему «winprinter.rsp» c полным путём и необходимыми ключами:
имя. Удобнее всего имя оставить тем же «SHARP153PS».
Нажимаем «Далее», появляется окно с полями «Размеще- @"C:\Program Files\gs\winprinter.rsp" –
ние» и «Комментарий». Заполните эти поля на ваше усмот-
рение и нажмите кнопку «Далее». Появляется окно с вопро- Имя файла взято в кавычки, перед ним записана «соба-
сом о печати пробной страницы. Отвечаем «Нет», т.к. наш ка», а после имени через пробел стоит дефис. Для «Output»
виртуальный принтер ещё не настроен. Нажимаем «Да- выбираем «Copy temporary file to printer». В поле «Printer»
лее». Появляется окно завершения работы мастера уста- выбираем настоящий принтер – «SHARP AR-153E N». В по-
новки принтеров. ле «Run» выбираем «Hidden». Shut down delay – оставляем
Нажимаем «Готово». В течение нескольких секунд ко- значение 300 секунд. Ставим галочки «Print errors» и «Run
пируются необходимые файлы. as User». Заполнение завершено (cм. рис. 4).
После чего в списке принтеров («Пуск → Настройка → Нажимаем «OК», чтобы сохранить введённые нами
Принтеры») появится новый принтер, но он ещё не настро- значения.
ен. Для настройки мы нажимаем правой кнопкой мыши На этом этапе настройка «виртуального» принтера
на значке принтера, после чего выскакивает меню, где мы на стороне Windows завершена. Чтобы убедиться в пра-
выбираем пункт «Свойства». вильности настроек, открываем любой текстовый доку-
В появившемся окне выбираем вкладку «Порты», где на- мент или какое-нибудь приложение, откуда осуществля-
ходим порт «RPT1:», после чего нажимаем кнопку «Нас- ем печать на «виртуальный» принтер. Выскакивает стан-
тройка порта...». дартное окно настроек печати, где мы видим, что прин-
Заполняем поля появившегося окна «RPT1: Properties». тер подключён к порту RPT1: и его тип HP Laser Jet 6P/6MP
В поле «Redirect this port to the program» заносим имя про- PostScript (cм. рис. 5).
граммы «C:\Program Files\gs\gs8.62\bin\gswin32c.exe». Если всё было настроено правильно, ваш настоящий
Удобнее всего это сделать с помощью мыши и кнопки принтер зашумит и выдаст ожидаемый документ через не-

№5, май 2008 39


администрирование
Windows, т.к. это другая тема, также в тестовой сети было
всего два компьютера без подключения к Интернету. По-
этому я не использовал пароли, а в качестве имени был
взят «Администратор».
Далее нажимаем кнопку «Проверить». В случае работы
сети мы должны увидеть окно «Проверено».
После этого нажимаем кнопку «Далее» и выбираем
принтер из базы данных. Фирма – HP.
Нажимаем «Далее», выбираем модель «Laserjet 6P/MP»
и единственный драйвер «foomatic-db-ppds/HP/HP_Laserjet_
6MP.ppd.gz».
Нажимаем кнопку «Далее» и заполняем название прин-
тера – как он будет виден для приложений Linux. «Описа-
ние» и «размещение» заполняете по своему усмотрению
Рисунок 6. Настройка адреса подключения для сетевого (cм. рис. 7).
принтера в Linux
После чего нажимаем кнопку «Далее» и видим конечное
окно установки принтера, где нажимаем «Применить».
Запускаем какое-нибудь приложение под Linux и прове-
ряем печать. Если все настройки были выполнены правиль-
но, то результат не заставит себя долго ждать.
Описанное решение было реализовано на операцион-
ных системах Windows 2000 и Linux Fedora 8.

Заключение
Предлагаемое решение проблемы должно работать
для большинства GDI-принтеров. Надеюсь, что в буду-
щем от данного решения и использования Windows-маши-
ны в качестве посредника можно будет отказаться, т.к. ли-
бо производители принтеров начнут уважать Linux-сооб-
щество и будут выпускать драйверы под Linux, либо эмуля-
Рисунок 7. Выбор названия для принтера в Linux тор wine сможет поддержать описанное решение на Linux,
либо ваш принтер окажется в списке счастливчиков, для
сколько секунд, при этом на экране компьютера не должно которых энтузиасты предложат альтернативный драйвер.
выскакивать никаких окон. Если желаемый результат не по- Все три пути имеют шансы быть реализованными, посмот-
лучен – проверьте наличие бумаги, правильность подклю- рим, что случится раньше.
чения и работы настоящего принтера, а также все преды- Удачи!
дущие настройки.
1. М е д и а ц и я – h t t p: // w w w. g a a p . r u / b i b l i o / m a n a g e m e n t /
Настройка принтера в Linux curp/059.asp.
На предыдущем этапе мы убедились: в работоспособности 2. Рецепт «приготовления» Win-принтера для печати из Linux –
нового виртуального принтера теперь осталось малое – на- http://www.nixp.ru/articles/win_printing_in_linux.
строить рабочие станции Linux и проверить печать с них. 3. RedMon – Redirection Port Monitor – http://pages.cs.wisc.edu/
Для этого нажимаем в меню «Система → Администри- ~ghost/redmon/index.htm.
рование → Печать». 4. Ghostscript, Ghostview and GSview – http://pages.cs.wisc.edu/
Далее, так как мы работаем в X от обычного пользова- ~ghost.
теля, а настраивать принтеры привилегия администратора, 5. CAPT – Linux driver for GDI printers (winprinters) – http://
дополнительным окном будет запрошен пароль root. Вво- www.opennet.ru/prog/info/2601.shtml.
дим пароль и нажимаем «OK». 6. CAPT Linux driver – http://www.boichat.ch/nicolas/capt /
В появившемся окне «Настройка принтера» нажимаем index.html.
на значок «Новый принтер», после чего в следующем окне 7. GDI printers under Linux – http://members.tripod.com/rpragana/
выбираем тип подключения «Windows Printer via SAMBA», gdiprinters.html.
а в поле адреса принтера указываем IP-адрес Windows-ма- 8. Установка GDI-принтера Lexmark Z23/33 в Debian – http://
шины и после знака «/» сетевое имя виртуального принте- www.opennet.ru/base/sys/lexmark_print_install.txt.html.
ра из наших прошлых настроек. В моём примере это бу- 9. CUPS – принт-сервер и GDI-принтер – http://www.linuxcenter.ru/
дет «192.168.2.3/SHARP153PS». После заносим имя и па- lib/articles/soft/cups_gdi.phtml.
роль учетной записи, с которой мы будем подключаться 10. Теоретические основы печати в системе Windows – http://
к Windows-машине (cм. рис. 6). www.morepc.ru/net/print/windows_printing.html.
Мы не рассматривали разграничение доступа и ау- 11. Сайт, посвящённый вопросам печати под Linux – http://
тентификацию пользователей принтера на компьютере www.linuxprinting.org.

40
Реклама
администрирование

Как запустить «САМО-Тур»


для Windows под Linux
«...без собственного войска (программистов. – Прим. автора)
государство непрочно – более того, оно всецело зависит
от прихотей фортуны...»

Николо Макиавелли, Государь, 1532

Сергей Барановский
Туристический бизнес отличается от любого другого, офисного. Сегодняшняя его проблема –
это отсутствие программ, автоматизирующих офисную деятельность в полной мере.
Речь не идёт об альтернативных Open Source-продуктах, т.к. их просто нет. Проблема в том,
что даже коммерческие и специализированные продукты, как «САМО-Тур» и «Мастер‑Тур»,
не дотягивают по своим возможностям до уровня потребностей туроператоров. Статья
рассказывает о том, как можно сэкономить, запустив один из коммерческих продуктов
на платформе Linux, что изначально не поддерживалось разработчиком. Тот, кто не кормит
свою армию программистов-разработчиков, кормит чужую!

П
оддержка туристических услуг Не секрет, что большинство из нас чи деньги – типичное представление
техническими решениями часто хотели бы отдыхать с комфортом, по работы турфирм обывателем. Но это
отстаёт от существующих пот- разумным ценам, но кто из нас заду- как надводная часть айсберга, за ко-
ребностей туроператоров, что приво- мывается, какая часть денег, оплачен- торой кроется очень много внутренней
дит к повышению издержек и сказы- ных за путёвку, идёт непосредственно работы, скрытой от потребителей.
вается на конечном потребителе. Уго- на отдых, а какая покрывает издержки Распечатать путёвку – означает
дить всем операторам и создать уни- производства? иметь какой-либо текстовый редак-
версальный продукт невозможно, как Кажется, что работа менеджеров тор. Связаться с гостиницей – значит
нельзя создать один универсальный проста: расскажи красиво туристу использовать электронную почту или
автомобиль, подходящий всем. о продукте, оформи документы, полу- факс. Забронировать билеты – исполь-

42
администрирование
зовать бразуер и on-line-сервис. Хранить данные о клиен- под Windows. Работающий САМО-сервер, дистрибутив Linux
те – использовать специфическую базу данных. Fedora release 8 (Werewolf) для i386-платформы. Подключе-
Уважающая себя фирма будет работать «в белую», а это ние к Интернету или все упоминаемые и устанавливаемые
означает, что все технические решения будут выполнены дополнительно пакеты. Средства разработки приложений,
без нарушений авторских прав и будут поддержаны либо компилятор gcc и сопутствующие пакеты не нужны.
купленными коммерческими лицензиями сторонних фирм,
либо GPL-подобными, либо у фирмы будет собственный Начало установки
штат программистов. Что из этого дешевле сейчас и выгод- Предполагаем, что установка Linux Fedora 8 (i386) про-
нее в перспективе? Можно установить OpenOffice и другие шла успешно. Сверить версию ядра можно, запустив ко-
продукты на базе Linux, они удовлетворят больше полови- манду «uname ‑a», которая должна выдать следующий ре-
ны потребностей всех турфирм и сэкономят значительно зультат:
средств, но как быть крупным фирмам, где без автомати-
Linux new02 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007
зации производства нельзя, где в день могут проходить со- i686 i686 i386 GNU/Linux
тни и тысячи заявок. Простым хранением текстовых фай-
лов или таблиц с ценами не обойдёшься. Нужны специаль-
ные программные продукты, которых просто нет! Как и нет Отключение yum-updatesd
стандартов в этой сфере. Обычно после установки демон yum-updatesd стоит в ав-
Разные фирмы находят разные решения этой пробле- тозапуске и отвечает за проверку и установку обновле-
мы и в силу конкуренции не спешат делиться своими сек- ний к системе. Вещь полезная, но нам она не очень нужна,
ретами друг с другом. т.к., во-первых, это будет лишний трафик, представьте, ес-
На сегодня можно выделить два больших программных ли сотня-другая компьютеров начнет для обновления ска-
продукта, старающихся занять рынок обслуживания туро- чивать одни и те же пакеты (хотя тут на усмотрение адми-
ператоров, – это «Мастер-Тур» [1] и «САМО-Тур» [3]. Обе нистратора), а, во-вторых, обновления могут помешать за-
программы присутствуют на рынке несколько лет и дале- пуску нужных нам команд ниже по тексту, т.к. yum и yum-
ки от совершенства. updatesd не могут работать одновременно.
Первая пишется на C, вторая – на Delphi, и ни одна Если этот шаг пропустить, то вполне возможна ситуация,
не предназначена для использования под Linux, по край- что при запуске команды «yum install что-то» вы получите:
ней мере такое мнение можно услышать на официальных Existing lock /var/run/yum.pid: another copy is running as pid 3592.
форумах [2, 4]. На мой взгляд, обе фирмы, выпускающие Another app is currently holding the yum lock; waiting for it to exit...
эти продукты, «вырыли себе большую яму» и оказались за- Another app is currently holding the yum lock; waiting for it to exit...
Another app is currently holding the yum lock; waiting for it to exit...
ложниками своих решений. Рынок требует продуктов под ...
Exiting on user cancel.
Linux. Переписать большое количество кода можно, но для
этого необходимы дополнительные программисты, которых Отключить запуск можно двумя путями:
и так в этих фирмах не хватает. А привлечение сторонней Первый – остановить службу yum-updatesd командой:
помощи, как в GPL-продуктах, невозможно, т.к. код закры-
тый. Включение поддержки одного лишь экспорта данных # service yum-updatesd stop
в продукты OpenOffice из «САМО-Тур» заняло почти год,
и, предполагаю, было реализовано только после того, как или
было «простимулировано» потребностями одного крупно-
го клиента, т.к. до этого они отказывались делать поддерж- # /etc/rc.d/init.d/yum-updatesd stop
ку OpenOffice в своих продуктах.
Других продуктов подобного уровня или их аналогов После чего вы увидите:
сегодня нет.
Останавливается yum-updatesd: [ OK ]
Турфирмам выкручивают руки, им надо работать сей-
час, а не держать штат программистов или ждать несколь- Это поможет до следующей перезагрузки или смены
ко лет завершённой реализации под Linux. Вот и получа- уровня запуска.
ется, выгоднее купить сотню-другую лицензий для импорт- Второй – убрать эту службу из автозапуска вообще, что-
ной коммерческой закрытой операционной системы и от- бы после перезагрузки ситуация не повторялась. Проще
работать сезон-другой, окупив затраты за счёт туристов, всего это сделать командой:
т.е. нас с вами, нежели ждать появления на рынке подхо-
дящего продукта, позволяющего снизить цены. Грустно, # chkconfig yum-updatesd off
но, в то же время наш народ очень изобретателен в плане
«как не платить», поэтому снизить цены на конечные про- которая «молча» выполнится, удалив соответствующие
дукты законным путём можно и оставить деньги в нашей файлы запуска из директорий /etc/rc.d/rd?.d.
стране тоже!
Полезные приложения
Требования и настройка прокси
Для перевода клиентов «САМО-Тур» под Linux потребу- Для комфортной работы и успешной настройки нам пона-
ется лицензионная и работающая версия «САМО-Тура» добятся дополнительные пакеты.

№5, май 2008 43


администрирование
Комфорт – чувство относительное, поэтому ряд команд ...
и пакетов можно не ставить, заменив их другими. Опытные mc
unrar
i386
i386
1:4.6.1a-50.20070604cvs.fc8 updates
3.7.8-1.lvn8 livna
2.1 M
102 k
пользователи сами поймут, где это можно сделать, всем ос- ...
Is this ok [y/N]: y
тальным будет проще следовать всем пунктам. Downloading Packages:
(1/2): unrar-3.7.8-1.lvn8 100% |=========================| 102 kB 00:00
Если в вашей фирме Интернет работает не как «проход- (2/2): mc-4.6.1a-50.20070 100% |=========================| 2.1 MB 00:00
ной двор», а ведётся учёт и контроль соединений, то, ско- warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>"
рее всего, это делается через прокси. Для того чтобы не пи- from /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
сать лишние ключи к программам wget, yum и другим, про- Is this ok [y/N]: y
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID a109b1ec
ще задать прокси через переменную окружения, выпол- Importing GPG key 0xA109B1EC "Livna.org rpms <rpm-key@livna.org>"
from /etc/pki/rpm-gpg/RPM-GPG-KEY-livna
нив команду: Is this ok [y/N]: y
...
export http_proxy=http://user:password@192.168.0.1:3128 Installed: mc.i386 1:4.6.1a-50.20070604cvs.fc8 unrar.i386 0:3.7.8-1.lvn8
Complete!

от имени пользователя, под которым будет выполняться


запуск программ. Установка FreeTDS и Wine
Если ваш прокси настроен на работу без аутентифика- Далее ставим пакеты, непосредственно необходимые
ции, то можно написать: для работы. Это Wine [7] – эмулятор, позволяющий запус-
кать программы, написанные для Windows. И FreeTDS [6] –
export http_proxy=http://192.168.0.1:3128 программа, позволяющая UNIX и Linux-приложениям рабо-
тать с MS SQL-сервером. Так как «САМО-Тур» имеет кли-
Запись можно сократить даже до: ент-серверную архитектуру, то клиентам понадобится под-
ключаться к серверу.
export http_proxy=192.168.0.1:3128 Ранее эти пакеты приходилось ставить вручную, ска-
чивая исходные коды и компилируя их, но сейчас ситуа-
но опытным путём установлено, что это работает не со все- ция изменилась, и готовые rpm-пакеты прекрасно уста-
ми программами. навливаются. Изменился лишь путь расположения файлов
По завершении работы следует не забыть «почистить» по умолчанию. Интересную статью по настройке FreeTDS
переменные окружения и .bash_history, т.к. в них будет со- в UNIX вы можете найти по адресу [8]. Раньше установка
держаться пароль в открытом виде. В конце статьи мы вер- происходила более сложно, но в процессе написания ста-
нёмся к этому вопросу. тьи выяснилось, что жизнь становится проще, и в нашем
Также во внутреннем пакетном фильтре, используя ко- случае это плюс.
манду iptables, следует не забыть создать правила, раз- Установку обоих пакетов вместе с необходимыми зави-
решающие исходящие подключения и сопутствующие им симыми пакетами можно запустить командой:
обратные пакеты. По умолчанию, после установки, все ис-
ходящие соединения разрешены, поэтому не должно быть # yum install freetds wine
проблем.
Те же, кто внесет правку в правила пакетного фильтра, После чего будет предложено установить пакеты и от-
без труда напишут разрешающие правила в обе цепочки носящиеся к ним зависимости:
для исходящих TCP-соединений по портам 80, 3128, 1433
...
и не забудут про пакеты, идущие к DNS-серверу и обрат- Installing:
но, в случае его использования. freetds
wine
i386
i386
0.64-7.fc8
0.9.58-1.fc8
fedora
updates
869 k
20 k
Первое, что нам нужно для упрощения жизни, – это под-
Installing for dependencies:
ключить репозитарий livna [5], чтобы после устанавливать jack-audio-connection-kit i386 0.103.0-5.fc8 updates 139 k
libfreebob i386 1.0.3-1.fc7 fedora 154 k
из него необходимые пакеты одной строчкой, а не ставить unixODBC i386 2.2.12-5.fc8 updates 954 k
компиляторы, средства разработки и пр. Для этого скачи- wine-capi i386 0.9.58-1.fc8 updates 25 k
wine-cms i386 0.9.58-1.fc8 updates 40 k
ваем пакет livna-release-8.rpm: wine-core i386 0.9.58-1.fc8 updates 10 M
wine-esd i386 0.9.58-1.fc8 updates 35 k
wine-jack i386 0.9.58-1.fc8 updates 37 k
wget http://rpm.livna.org/livna-release-8.rpm wine-ldap i386 0.9.58-1.fc8 updates 87 k
wine-nas i386 0.9.58-1.fc8 updates 23 k
wine-tools i386 0.9.58-1.fc8 updates 628 k
После устанавливаем его: wine-twain i386 0.9.58-1.fc8 updates 46 k
...

# rpm -ihv livna-release-8.rpm По окончании установки вы должны увидеть:


предупреждение: livna-release-8.rpm:
Installed: freetds.i386 0:0.64-7.fc8 wine.i386 0:0.9.58-1.fc8
Заголовок V3 DSA signature: NOKEY, key ID a109b1ec
Dependency Installed: jack-audio-connection-kit.i386 0:0.103.0-5.fc8
Подготовка... ############################## [100%] libfreebob.i386 0:1.0.3-1.fc7 unixODBC.i386 0:2.2.12-5.fc8
1:livna-release ############################## [100%] wine-capi.i386 0:0.9.58-1.fc8 wine-cms.i386 0:0.9.58-1.fc8
wine-core.i386 0:0.9.58-1.fc8 wine-esd.i386 0:0.9.58-1.fc8
Затем ставим пакеты mc и unrar, отвечая «y». wine-jack.i386 0:0.9.58-1.fc8 wine-ldap.i386 0:0.9.58-1.fc8
wine-nas.i386 0:0.9.58-1.fc8 wine-tools.i386 0:0.9.58-1.fc8
wine-twain.i386 0:0.9.58-1.fc8
# yum install mc unrar Complete!

44
администрирование
После установки появится файл /etc/freetds.conf, куда мы
прописываем сервер, с которым будем работать (адрес, порт,
протокол, кодировку), добавлением следующих строк:

[Server80]
host = 192.168.0.2
port = 1433
tds version = 8.0
client charset=WINDOWS-1251

где Server80 – имя сервера, по которому с ним будет об-


щаться ODBC. Строчка «client charset=WINDOWS-1251» нуж-
Рисунок 1. Окно создания кнопки запуска
на для того, чтобы русские буквы правильно передавались (ярлыка на «Рабочем столе»)
в запросах, иначе вы увидите вместо списка пользовате-
лей на входе в «САМО-Тур» абракадабру. То есть для работы с системой вы создаете учетную запись
обычного пользователя и под ним запускаете Х, браузеры,
Настройка unixODBC «САМО-Тур» под эмулятором и другие программы.
Если вы были внимательны, то заметили, что у нас при ус- Чтобы отделить возможные ошибки на этом этапе от тех,
тановке wine оказался зависимым, и был установлен пакет что могут быть совершены в будущем, и не ломать голову,
unixODBC-2.2.12-5.fc8. почему нет связи с сервером, не обязательно, но можно
Далее необходимо настроить базу данных Server80 че- проверить работу с базой данных от имени обычного поль-
рез unixODBC, чтобы её «видел» wine и тем самым «виде- зователя командой:
ли» и все приложения, запущенные под ним. Для этого со-
здаём два файла, имя и размещение которых не критич- isql -v labirint user pass
ны. В дальнейшем мы к ним обратимся. Для удобства име-
на файлов совпадают с указанными в [8]. где labirint – имя базы из файла tds.datasource.template, а user
Файл tds.driver.template: и pass – логин и пароль, заведённые на сервере. В случае
успеха вы должны увидеть приглашение базы данных:
[FreeTDS]
Description=FreeTDS for MSSQL +--------------------------------+
Driver=/usr/lib/libtdsodbc.so.0 | Connected! |
| |
Файл tds.datasource.template: | sql-statement |
| help [tablename] |
| quit |
[labirint] | |
Driver=FreeTDS +--------------------------------+
Description=Labirint database SQL>
Trace=No
Servername=Server80
Database=labirint Если же соединение по какой-то причине не было уста-
новлено, то вы увидите ошибку вроде этой:
После чего мы выполняем с правами администратора
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
установку драйвера: [37000][unixODBC][FreeTDS][SQL Server]Login failed for user 'wintour'.
[28000][unixODBC][FreeTDS][SQL Server]Login incorrect.
[ISQL]ERROR: Could not SQLConnect
# odbcinst -i -d -f tds.driver.template
Замечание: обратите внимание, если вы запускали
В результате получим: команду выше, то переданные ей через командную стро-
ку логин и пароль сохранились в открытом виде в файле
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
.bash_history.

Далее с правами пользователя(!) устанавливаем базу, Работа под wine


которая будет работать через драйвер, установленный ад- После установки эмулятора необходимо его запустить, что-
министратором (root) для всех: бы в домашней директории запускающего его пользовате-
ля была создана директория .wine, в которой будет нахо-
$ odbcinst -i -s -f tds.datasource.template диться эмулируемый диск C: и др. файлы. Можно создать
эти директории вручную, но наиболее простой способ за-
Команда выполняется «молча». пустить wine, передав ему в качестве параметра имя лю-
С этого момента можно считать, что установка эмуля- бого несуществующего файла, например 123.
тора закончена и все последующие настройки следует вы-
полнять из-под него. wine 123
Замечание: часть команд, как и установка эмулятора,
проходит с правами администратора (root), а все последу- после этого вы получите сообщение об ошибке:
ющие запуски приложений и пр. с целью повышения безо- wine: could not load L"C:\\windows\\system32\\123.exe":
пасности выполняются с правами обычных пользователей. Module not found

№5, май 2008 45


администрирование
Но мы и так знаем, что такого фай-
ла нет, зато после мы сможем взять
программу «САМО-Тур» с работаю-
щей Windows‑машины и скопировать
в директорию: «/home/домашняя_ди-
ректория_пользователя/.wine/drive_c/
Program Files/WinTour».
Практика показала, что под эму-
лятором это наиболее простой и быс-
трый путь, чем установка и настройка
из дистрибутива.
После копирования программы,
с помощью правой кнопки мыши, со-
здаём на рабочем столе ярлык (кноп-
ку запуска) (см. рис. 1).
В поле «Команда» с помощью кноп-
ки «Посмотреть...» находим файл.
Учтите, что директории и файлы,
имена которых начинаются с точки, как
«.wine», отображаться не будут. Для то-
го чтобы их увидеть, надо нажать пра-
вую кнопку мыши и включить показ
Рисунок 2. Включение опции «Показывать скрытые файлы» (имена которых начинаются
скрытых файлов (см. рис. 2). с точки)
Или руками прописываем:
В результате выполнения команды узнаём, что файл
"/home/домашняя_директория_пользователя/.wine/drive_c/ ↵ был скачан с другого адреса: http://files.jrsoftware.org/misc/
Program Files/WinTour/Wintour.exe"
bdeinst.cab и его размер 3 663 697 (3.5M) байт.
Далее дописываем слева от этой команды wine и соз- Следующий этап – это распаковка архива. Для этой
дание переменной WINEPREFIX: цели нам понадобится команда cabextract. В установке
по умолчанию её нет, поэтому найти её можно тут: http://
env WINEPREFIX="/home/labirint/.wine" wine "/home/ ↵ www.cabextract.org.uk, а скачать, распаковать, скомпили-
домашняя_директория_пользователя/.wine/ ↵
drive_c/Program Files/WinTour/Wintour.exe" ровать и поставить командами:

Часто работает и без указания переменной префик- wget http://www.cabextract.org.uk/cabextract-1.2.tar.gz


tar -zxvf cabextract-1.2.tar.gz -C /progi
са пути: cd /progi/cabextract-1.2
./configure
wine "/home/домашняя_директория_пользователя/.wine/ ↵ make
drive_c/Program Files/WinTour/Wintour.exe" #make install

Если необходимо, то меняем значок на иконке, за- но, т.к. это требует средств разработки и компилятора, ко-
писываем имя и комментарий, после чего программа торые у нас не установлены, и вообще, это команда нам
«САМО‑Тур» готова к запуску. нужна всего лишь один раз, чтобы достать из архива файл
BdeInst.dll, то, как в анекдоте про муравья, который, глядя
Запуск «САМО-Тур» на железнодорожный рельс, произнёс фразу: «Умный в го-
Запускаем программу щелчком по иконке и видим ошиб-
ки (см. рис. 3, 4).
Как видим, программа запускается, но с базой работать
не хочет. Так как это приложение Delphi, то для нормальной
работы ей требуется наличие BDE (Borland Database Engine),
что недвусмысленно указано во второй ошибке, к установ-
ке которого мы и переходим.
Рисунок 3. Ошибка подключения к SQL-серверу
Установка BDE
Забегая немного вперёд, cкажу, что для установки нам ну-
жен файл BdeInst.dll, так, что если он у вас есть, то можете
пропустить несколько абзацев. Если же у вас нет этого фай-
ла, то вы найдёте его внутри cab-архива bdeinst.cab.
Скачиваем файл следующей командой:

wget http://www.jrsoftware.org/download.php/bdeinst.cab
Рисунок 4. Ошибка инициализации BDE

46
администрирование
В результате, у нас должен по- После быстро пробегает индика-
лучиться файл BdeInst.dll размера тор прогресса, и все окошки исчеза-
3 853 824 байт от 27.01.2000. ют. Лишь в консоли, откуда осущест-
Отступление. Кстати, а вы знаете, влялся запуск установки, можно уви-
чем умный человек отличается от муд- деть сообщение о том, что библиотека
рого? Умный – знает, как выйти из лю- BdeInst.dll была успешно установлена
Рисунок 5. Окно с выбором пути бой ситуации, например, распаковать и зарегистрирована.
установки BDE файл, установив компиляторы, архи-
Successfully registered DLL BdeInst.dll
ваторы, библиотеки и пр., потратив
полдня. А мудрый – знает, как не по- Следующий этап не обязательный,
пасть в эту ситуацию, он, скорее все- но мы можем проверить, видит ли BDE
го, распакует файл на другой Windows- нашу базу, для чего запускаем от обыч-
машине. ного пользователя:
Рисунок 6. Предупреждение о нехватке Имея нужную библиотеку, регист-
свободного места рируем её в wine-эмуляторе, выполнив wine "c:/Program Files/ ↵
Common Files/Borland Shared/ ↵
следующую команду от имени обычно- BDE/BDEADMIN.EXE"
го пользователя:
В результате, мы увидим окно BDE
wine c:/windows/system32/ ↵ Administrator (см. рис. 8).
regsvr32.exe BdeInst.dll
Если мы заходим посмотреть па-
после чего на экране «бежит» инди- раметры базы, то мы можем нажать
катор прогресса и выскакивает окош- на «+» слева от её имени, после чего
Рисунок 7. Подтверждение создания
директории ко с вопросом, куда ставить Borland выскочит окно ввода логина и пароля
Database Engine (см. рис. 5). (см. рис. 9).
ру не пойдёт, умный гору обойдёт», мы Оставляем по умолчанию: «C:\ Теперь, когда мы убедились, что
воспользуемся установкой через yum, Program Files\Common Files\Borland BDE Administrator видит базу, можно
запустив команду: Shared\BDE», а в Linux это будет: ещё раз переходить к запуску «САМО-
«/home/домашняя_директория_поль- Тура». Щёлкаем по ранее созданной
# yum install cabextract зователя/.wine/drive_c/Program Files/ иконке и видимо окошко (см. рис. 11).
... Common Files/Borland Shared/BDE». Ждём пару секунд, и появляет-
Installed: cabextract.i386 0:1.1-7.fc8 Нажимаем «OK» и видим ошибку ся привычное окно входа в систему
Complete
(см. рис. 10).
о нехватке места (см. рис. 6). Програм-
После этого извлекаем из архива ма же не знает, что мы её безбожно ду- Набираем имя для входа и па-
нужный файл: рачим, поэтому нажимаем «yes». роль, и мы в программе. Выбираем
Если же вы сомневаетесь, то про- в меню справочники, заявки и можем
$ cabextract bdeinst.cab верить свободное место в Linux мож- полноценно работать с программой
bdeinst.cab: WARNING; possible 4536 extra но командой df, запомнить легко, со- (см. рис. 12).
bytes at end of file. кращение от слов disk free.
Extracting cabinet: bdeinst.cab
extracting BdeInst.dll Далее, выскакивает вопрос о со- Дополнительно
All done, no errors. здании директории, т.к. её нет, мы со- Так как ядро – важная часть любой сис-
глашаемся (см. рис. 7). темы, то для более стабильной и безо-

Рисунок 9. Окно ввода логина и пароля


для подключения к базе данных

Рисунок 8. Окно BDE Administrator Рисунок 10. Окно выхода в программу

№5, май 2008 47


администрирование
...
Installed: kernel.i686 0:2.6.24.5-85.fc8
Complete!

Выполняем перезагрузку, проверяем версию:

uname -a
Linux New1 2.6.24.5-85.fc8 #1 SMP Sat Apr 19 12:39:34 EDT 2008
i686 i686 i386 GNU/Linux

Проверяем работу «САМО-Тур», изменений в работе


не должно быть.
Переходим к следующему пункту.
Рисунок 11. Окно, появляющееся после запуска программы
«САМО-Тур» Вопросы безопасности
Если помните, то в самом начале мы прописывали прок-
пасной работы лучше обновить его до последней доступ- си сервер в переменных окружения, а также могли запус-
ной или, просто, более свежей версии. тить программу isql, передав ей логин и пароль в команд-
Без фанатизма и компилирования это можно сделать ной строке.
командой: Чтобы эта информация никому не досталась – удаляем
файлы /root/.bash_history и .bash_history в домашней ди-
# yum update kernel ректории пользователя, от которого мы работали. Удалять
файлы целиком совсем не обязательно, достаточно найти
Видим, что ядро установилось: в них нужные строчки и затереть их, т.к. история команд

Рисунок 12. Снимок экрана, сделанный во время работы программы «САМО-Тур» под Linux

48
администрирование
может быть очень полезной вещью для забывчивых поль-
зователей и администратора.
Так как мы перезагрузились, то переменная окружения
http_proxy у нас не сохранилась, если же вы этого не дела-
ли, то посмотреть установленные переменные можно ко-
мандой set, а удалить переменную с помощью unset.

О «глюках» в «САМО-Туре», или


Ложка дёгтя
Несмотря на то что программа запускается и стабильно ра-
ботает, типичную русскую ситуацию «обработать напиль-
ником до принятия нужной формы» никто не отменял. Есть
несколько проблем.
Первая проблема состоит в том, что программа из-
начально была «заточена» под использование Microsoft
Office, а её разработчики так увлеклись «интегрировани-
ем» своего продукта в чужеродный, что не заметили из-
менившихся потребностей рынка и в спешке были вы-
нуждены адаптировать «САМО-Тур» к OpenOffice. После
чего в версии под Windows у каждого пользователя в на-
стройках появилась долгожданная возможность выбора
(см. рис. 13).
Для того чтобы «САМО-Тур» под wine увидел OpenOffice
Рисунок 13. Окно настройки профиля пользователя
в Linux, пришлось смириться, что wine-0.9.58-1.fc8 ещё не го- с возможностью выбора параметров экспорта в OpenOffice
тов предоставлять такую интеграцию и поставить ещё од-
ну windows-версию OpenOffice под эмулятором. Надо ска-
зать, что для OpenOffice это вообще не проблема, уста-
новка проходит несколькими щелчками мыши, запуском
одной команды:

wine OOo_2.4.0_Win32Intel_install_ru_infra.exe Рисунок 14. Окно ошибки «Variant does not reference
an automation object», возникающей при попытке экспорта
данных в Open OfficeCalc под эмулятором wine
К сожалению, код экспорта из программы «САМО-
Тур» в самой программе встречается несколько раз, и все Также следует отметить, что миграция пользователей
эти места корректно переписывать у разработчиков в нашей фирме проходит довольно легко, т.к. набор ис-
«САМО-Тура» нет желания, поэтому зачастую можно уви- пользуемых менеджерами программ практически кросп-
деть ошибку «Variant does not reference an automation object» латформенный: Mozilla Firefox, Thunderbird, Sunbird, а те-
(см. рис. 14). перь и «САМО-Тур».
Что в этом случае делать, не знаю, т.к. разработчики Обсудить возникающие вопросы всегда можно на фо-
«САМО-Тура» помогать отказываются. Предполагаю, что руме http://www.samag.ru/forum.
побороть это можно и другим путём, с помощью wine, ес-
ли в последнем появится поддержка «родного» Open Office 1. Страница продукта «Мастер-Тур» – http://www.megatec.ru/
под эмулятором. ?m=60.
2. Тема форума о портировании «Мастер-Тура» под Linux –
Заключение http://crmportal.megatec.ru/Default.aspx?tabid=53&forumid=
Запуск «САМО-Тура» под Linux – это большое достижение 6&threadid=254&scope=posts.
на рынке туроператоров. Это последний камень преткнове- 3. Страница продукта «САМО-Тур» – http://samo.ru/index.php?
ния при переходе на ОС Linux, т.к. для всех других пользо- module=products&showitem=2.
вательских приложений давно существуют не менее фун- 4. Тема форума о портировании «САМО-Тура» под Linux –
кциональные аналоги. http://forum.samo.ru/index.php?s=e9056965fd0ea9773dfc20aa2
Также это большое достижение для моей фирмы в воп- bd1ac84&showtopic=4051.
росе экономии и перевода всего программного обеспече- 5. Репозитарий rpm.livna.org, содержащий дополнительные па-
ния на Open Source. кеты для Fedora Linux – http://rpm.livna.org/rlowiki.
Перед Новым годом нам пришлось закупить с десяток 6. Проект FreeTDS, способ обращения из под UNIX и Linux к сер-
новых ноутбуков, которые мы вынуждены были приобрес- верам MS SQL – http://freetds.org.
ти с установленной ОС Windows Vista, т.е. заплатить за неё, 7. Эмулятор Wine HQ – http://www.winehq.org.
а после стереть и не использовать. Очень жаль, что про- 8. Руководство по ODBC и MyODBC, а также пример исполь-
изводители не предоставляют широкий выбор ноутбуков зования FreeTDS – http://www.citforum.ru/database/mysql/odbc/
без ОС. unixodbc.shtml.

№5, май 2008 49


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

Фильтруем спам в Exim с помощью


SpamProbe

Павел Литвинов
Основой почтового сервера в нашей организации был Exim. Он отлично справлялся со своей
задачей, при том что работал на достаточно слабом компьютере. Но через какое-то время
количество нежелательной почты (спама) в организации возросло до такой степени, что это
стало серьезной проблемой. И эту проблему надо было как-то решать.

Выбираем подходящий тирования (не автообучаемый), да и (токена) со списками в базе, и на ос-


антиспам-фильтр не хотелось устанавливать на и так новании этого вычисляется оценка.
Стандартными средствами Exim отсе- загруженный компьютер базу данных Оценка эта колеблется в диапазоне
ивалось большое количество спама, MySQL, которая была необходима от 0 до 1, где значение 0 означает от-
но не все. Посему было решено «при- для полноценной работы DSPAM. В об- сутствие признаков спама, 1 – полную
крутить» к нему какой-нибудь анти- щем, и этот вариант мне не подошел. уверенность в том, что это спам.
спам-фильтр. Сказано – сделано. Не- Начался второй этап поиска. Про- По своей сути SpamProbe является
долгие поиски в Интернете определи- сматривая порты на момент ключево- маленькой программой, дающей оцен-
ли два основных претендента: го слова «SPAM», мне на глаза попал- ку письму с определенной долей веро-
n SpamAssassin; ся SpamProbe. Что сразу понравилось, ятности. Она даже не имеет конфигу-
n DSPAM. программка была написана на C++, рационного файла, хотя, как мы уви-
была маленькой, шустрой в работе дим дальше, эта особенность не по-
Первый хоть и был «раскручен», об- и не требовала установки базы дан- мешает нам создать на его основе
ладал, на мой взгляд, одним, но весо- ных, в отличие от DSPAM. К тому же спам-фильтр не только не уступаю-
мым недостатком. Учитывая, что эта алгоритм работы программы постро- щий, но даже превосходящий в неко-
программа была написана на Perl, она ен на основе математической теоремы торых моментах спам-фильтры, упо-
сильно нагружала сервер при боль- Байеса. А ведь именно этот метод ста- мянутые мной выше.
шом количестве входящей почты. тистической фильтрации является на-
А если взять в расчет то, что на поч- иболее удачным и используется прак- Приступаем к установке
товом сервере еще работал антиви- тически всеми спам-фильтрами, в том и настройке
рус ClamAV, который и без того сла- числе и упомянутыми ранее. Установку программы производим, как
бую машинку буквально вводил в сту- Метод Байеса подразумевает ис- всегда, из портов:
пор при анализе писем с вложенными пользование статистической, оценоч-
файлами, было решено не использо- ной базы, разделенной на две части, # cd /usr/ports/mail/spamprobe
# make -s install clean
вать этот вариант. одна из которых содержит черный спи-
Второй мне понравился больше, сок слов, а другая – белый. При анали- После установки создаем базу, где
но я не смог в нем найти «белый спи- зе письма подсчитывается количество SpamProbe будет хранить базу данных
сок» с возможностью ручного редак- совпадений каждого отдельного слова токенов (слов или словосочетаний, ко-

50
администрирование
торые с определенной долей вероятности могут присутство-
# Путь к базе, где SpamProb хранит токены
вать в письме, содержащем или не содержащем спам): dbdir=/var/lib/spamprobe

# spamprobe -d /var/lib/spamprobe create-db # Полный путь к программе SpamProbe


path_spamprobe=/usr/local/bin/spamprobe

# Находим полный путь к нашему письму.


где /var/lib/spamprobe – путь к папке базы данных. # Если бы не опция " split_spool_directory = true "
Изучение документации на предмет сопряжения # в конфигурационном файле Exim он бы соответствовал
# переменной ‘$spooldir/$1-D’
SpamProbe и Exim в виде одного-единственного файла path_file=`/usr/bin/find $spooldir -name $1-D -print`
README.txt не дало ровным счетом ничего. Продолжи-
echo "$2" > $spooldir/$1-M
тельные поиски в Интернете вывели на блог, где был опи- sed '1 s/.*//' $path_file >> $spooldir/$1-M
сан один из способов, который я, в свою очередь, с неко- $path_spamprobe -8 -d $dbdir score $spooldir/$1-M
rm $spooldir/$1-M
торыми доработками и комментариями предлагаю ваше- exit 0
му вниманию.
В конфигурационный файл Exim добавляем следую- После этого можно сказать, что основная часть рабо-
щие строки: ты выполнена, но не будем торопиться. Проверить рабо-
ту фильтра просто, для этого необходимо пропустить пару
system_filter = /usr/local/etc/spamprobe/exim.filter писем через ваш сервер и посмотреть сначала лог-файл,
# system_filter_user = mailnull
# system_filter_group = mail а потом – появился ли в исходном тексте письма заголо-
вок следующего вида:
#########################################################
# ACL CONFIGURATION #
X-SpamProbe: GOOD 0.9999999 a1c5e42b21f4e60f55596ca70ae48e7f
# Specifies access control lists for incoming SMTP mail #
#########################################################
где GOOD – говорит о том, что ваше письмо с вероятностью
Проблема в том, что я так и не смог заставить полно- 0,9999999 не является спамом. Набор из 32 букв и цифр –
ценно работать системный фильтр не от привилегирован- уникальный идентификатор письма.
ного пользователя (root). Еще один момент. Пока вы не начнете обучать SpamProbe,
Комментарии приведены только для того, чтобы вы мог- все письма будут промаркированы как GOOD.
ли сориентироваться, в какое именно место конфигурацион- Если все прошло удачно, приступаем к следующе-
ного файла Exim вставлять ссылку на системный фильтр. му этапу. Настроим в Exim обработку промаркирован-
Теперь создаем непосредственно сам файл системно- ных SpamProbe писем. Для этого в секцию ROUTERS
го фильтра /usr/local/etc/spamprobe/exim.filter: CONFIGURATION добавим следующее:

# Exim filter #########################################################


# Ни в коем случае не удаляйте верхнюю строку # ROUTERS CONFIGURATION #
# Specifies how addresses are handled #
# Путь к лог-файлу begin routers
logfile /var/log/exim/spam-filter.log
# SpamProbe start #############
# Указываем максимальный размер письма, которое будет SP_spam_router:
# подвержено анализу (Кб). driver = accept
# Число взял из конфигурационного файла DSPAM domains = +local_domains
add 307200 to n0 local_part_prefix = spam
transport = SP_spam_transport
# Проверяем письмо только один раз, даже если Exim
# с первого раза его не сможет доставить. SP_no-spam_router:
# Нечего плодить заголовки X-SpamProbe: driver = accept
if first_delivery domains = +local_domains
then local_part_prefix = no-spam
if $message_size is above $n0 transport = SP_no-spam_transport
then # SpamProbe end ###############
# Если не нужно вести лог-файл, закомментируйте строку
# ниже dnslookup:
logwrite "SPAM FILTER: Размер письма от $return_path ↵ driver = dnslookup
превышает $n0 Kb ; Письмо не будет проходить проверку" domains = ! +local_domains
else transport = remote_smtp
headers add "X-SpamProbe: ↵ ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
${run {/usr/local/etc/spamprobe/msgscore.sh ↵ no_more
${message_id} ${quote:${message_headers}}} ↵
{$value} {expansion failed} }" # SpamProbe start #############
# Если не нужно вести лог-файл, закомментируйте строку SP_check_router:
# ниже driver = accept
logwrite "SPAM FILTER: Письмо от $return_path ↵ domains = +local_domains
успешно прошло проверку; $value" local_parts = lsearch;/usr/local/etc/spamprobe/users
endif condition = ${if and {{match{$h_X-SpamProbe:}{SPAM}} ↵
endif {!match_address{$sender_address} ↵
{lsearch;/usr/local/etc/spamprobe/whitelist}}}}
transport = SP_check_transport
И наконец скрипт msgscore.sh: no_more
# SpamProbe end ###############
#!/bin/sh

# Путь к месту, где почта хранится до момента доставки Здесь очень важно соблюсти последовательность
spooldir=/var/spool/exim/input при добавлении новых роутеров.

№5, май 2008 51


администрирование
Пожалуй, стоит разъяснить некоторые строки кода. log_output = true
return_path_add
Роутеры SP_spam_router и SP_no-spam_router необходи- # headers_remove = X-SpamProbe
мы для обучения нашего спам-фильтра. «Не ошибается тот,
SP_spam_transport:
кто ничего не делает» – гласит пословица, так и в нашем driver = pipe
случае. Если фильтр допустил ошибку и вместо того, чтобы command = "/usr/local/bin/spamprobe ↵
–d /var/lib/spamprobe spam"
пометить письмо как SPAM, пометил его GOOD, перешли- return_path_add = false
те это письмо как вложение на адрес spam@(ваш домен), return_fail_output = true
log_output = true
и вы увидите, что в следующий раз это письмо будет про- user = mailnull
маркировано правильно. Аналогично поступаем в обрат- group = mail
ной ситуации, но пересылать письмо теперь будем на ад- SP_no-spam_transport:
рес no-spam@(ваш домен). driver = pipe
command = "/usr/local/bin/spamprobe ↵
Роутер SP_check_router собственно выполняет провер- –d /var/lib/spamprobe good"
ку и дает оценку письму путем добавления в тело заголов- return_path_add = false
return_fail_output = true
ка X-SpamProbe: log_output = true
user = mailnull
local_parts = lsearch;/usr/local/etc/spamprobe/users group = mail
# SpamProbe end #############

Определяет список пользователей, для которых будет В этом разделе последовательность при добавле-
работать спам-фильтр. В моем случае не требовалось филь- нии не имеет такого значения, как в разделе ROUTERS
тровать письма абсолютно всех пользователей, это обус- CONFIGURATION.
лавливалось личными предпочтениями каждого. Поэтому Как мы можем наблюдать, письма, отмеченные
было принято решение создать специальный файл, содер- как SPAM, отправляются в папку .INBOX.Spam. В моем
жащий имена тех пользователей, кому это действительно случае с помощью программы deliver из пакета dovecot.
было необходимо. Причем у каждого пользователя существует своя папка
Синтаксис файла users такой: .INBOX.Spam, поэтому в случае ошибки спам-фильтра поль-
зователь всегда может заглянуть в нее и поискать пропав-
# Список пользователей, письма которых анализируются шее письмо.
# антиспамом
admin Хочу отметить, что мною приведен пример, который яв-
maxim ляется базовым, но ни в коем случае не окончательным.
hostmaster
oleg Если у вас есть желание, то не поленитесь, прочитайте до-
gl_sten кументацию по Exim (http://www.exim.org) (перевод можно
найти по адресу http://www.lissyara.su/?id=1200). Вам впол-
Примечание: никаких регулярных выражений, только не по силам будет добавить, а может, и улучшить вышео-
точное соответствие. писанный способ фильтрации спама.
Теперь по поводу строки: Ну и напоследок несколько полезных скриптов:
Первый – для обучения spamprobe в ручном режиме:
condition = ${if and {{match{$h_X-SpamProbe:}{SPAM}} ↵
{!match_address{$sender_address} ↵
{lsearch;/usr/local/etc/spamprobe/whitelist}}}} #!/bin/bash

spamprobe -d /var/lib/spamprobe spam ./spam/*


с первым условием, я думаю, все понятно, а второе условие – spamprobe -d /var/lib/spamprobe good ./nonspam/*
это своеобразная попытка сделать белый список адресов,
почта с которых априори не является спамом. Синтаксис Этот скрипт вам, возможно, понадобится на начальном
файла whitelist аналогичен синтаксису файла users: этапе работы спам-фильтра.
И второй для cron:
# Список адресов, которым можно доверять,
# и не анализировать почту, приходящую от них 0 3 * * * * root find /var/mail/*/*/.INBOX.Spam/new/* ↵
murzilka@ukr.net -ctime +30 -exec rm -f {} \;
meren@mail.ru
office@predpriyatie.com
info@rambler.ku Этот скрипт проверяет все папки .INBOX.Spam у всех
пользователей на наличие в них писем старше 30 дней
А в секции TRANSPORTS CONFIGURATION непосредс- и удаляет их.
твенно сам транспорт: Вот, пожалуй, и все.

######################################################### P.S.: Хочу выразить благодарность:


# TRANSPORTS CONFIGURATION #
n Михаилу Позднякову за статью «Фильтрация СПА-
# SpamProbe start ############# Ма с помощью SpamProbe» – http://www.ru-clc.org/
SP_check_transport:
driver = pipe node/102.
command = "/usr/local/libexec/dovecot/deliver ↵ n Виталию Захарову за статью «DSPAM extension to exim» –
-d $local_part@$domain -m INBOX.Spam"
user = mailnull http://www.lissyara.su/?id=1301.
group = mail n Алексею Кеда за проект www.lissyara.su.

52
администрирование «1С»

Хитрости и тонкости работы,


позволяющие экономить время

Андрей Луконькин
В версии 8.х «1С:Предприятие» появилось много нового и отличного от версии 7.7, поэтому
возникают самые неожиданные вопросы. Вот несколько подобных вопросов, которые часто
задают на форумах как новички, так и старожилы.

При преобразовании числа из 4 мер, параметр «Группировка» устано- кнопку «М+» (или сочетание клавиш
цифр в строку количество символов вить в «0»). <Shift + <Num> + <+>). При этом встро-
в строке равно 5. Почему? Для получения строкового пред- енный калькулятор «1С:Предприятие»
В стандартных региональных настрой- ставления года следует не получать просуммирует все выделенные значе-
ках для русского языка при приведе- числовое значение года, а использо- ния и сохранит в своей памяти. Для то-
нии числа к строке между группами вать функцию «Формат». Например: го чтобы увидеть получившийся итог,
разрядов чисел вставляется нераз- нужно открыть этот калькулятор (на па-
рывный пробел (Символы.НПП, код Строка1 = Формат(ТекущаяДата(), ↵ нели управления или с помощью соче-
"ДФ=yyyy");
символа – 160). тания клавиш <Ctrl> + <F2>) и в поле
Например: «М=» будет видна интересующая нас
Как быстро посчитать итог по сум- сумма, равная итоговой по всем отоб-
Год = 2003; мам документов в журнале за вы- ражаемым в журнале документам.
Строка1 = Строка(Число1);
бранный интервал?
В результате выполнения неболь- Конечно, настоящий программист на- Как получить модуль числа?
шого кода получаем результат: пишет отчет. Но есть и стандартный ва- Среди стандартных функций работы
риант решения, который по силам аб- с числами нет функции получения мо-
Строка1 = "2 003"
солютно всем. дуля числа. Поэтому приходится обхо-
То есть длина строки – 5 символов, В открытом журнале документов диться тем, что имеется в наличии.
включая неразрывный пробел. (или форме списка документа опре- Используя функцию «Макс», нахо-
Чтобы преобразовать число к стро- деленного вида) нужно нажать пра- дим максимум положительного и отри-
ке без вставки символа-разделителя вую кнопку мыши для вызова контекст- цательного значений переменной:
групп (неразрывного пробела), нужно ного меню и выбрать пункт «Вывести
применить функцию «Формат» с пара- список». Весь представленный на эк- Мод = Макс(А, -А);
метром ЧГ=0: ране журнал документов получится
в виде табличного документа. Важ- С помощью этой же функции мож-
Строка1 = Формат(Число1,"ЧГ=0"); но, чтобы там присутствовала колон- но производить замену отрицательных
ка «Сумма», итог по которой мы и хо- значений на ноль:
Чтобы изменить преобразование тим узнать. Колонку «Сумма» выде-
чисел к строке по умолчанию, нужно ляем мышкой или с помощью клави- Неотр = Макс(А, 0);
для информационной базы устано- атуры (кто как привык), затем навер-
вить региональные настройки (напри- ху на панели инструментов нажимаем На этом все. Удачи!

№5, май 2008 53


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

Открытия Николая Новожилова

Педагог, который не учит, руководитель, который не отдает приказы, отец, который


не навязывает детям свою точку зрения. Это все о нем.

М
не нравится писать про учи- Дар управленца тов! «Мы учим системных админист-
телей. Знаете почему? Эти В 2006 году Николай Леонидович Но- раторов, программистов, они повы-
люди, может быть, из-за того, вожилов попал на Кубок Москвы по уп- шают свою квалификацию, – расска-
что постоянно общаются с детьми, са- равленческой борьбе и открыл для се- зывает Николай Леонидович. – Че-
ми начинают немного по-детски смот- бя мир управленческих поединков. рез некоторое время становятся на-
реть на мир. Не все, конечно, но луч- Вскоре Николай Новожилов получил чальниками, возвращаются: «А мы не
шие перенимают исключительно ребя- лицензию Таллиннской школы менед- умеем управлять... Как заставить ра-
чье качество характера – умение каж- жеров Владимира Константиновича ботать подчиненных?» Многие из тех,
дый день делать открытие. Даже если Тарасова и теперь сам преподает ис- кто учится у нас управленческой борь-
оно состоит всего лишь в увиденной кусство управленческой борьбы, про- бе, – это наши выпускники. Начальни-
впервые радуге... Как ни странно, кан- водит тренировочные управленческие ки отделов приходят учиться, руково-
дидат наук, директор Академии кор- поединки, циклы семинаров по управ- дители IT-компаний. Причем проходят
поративных систем Николай Новожи- ленческому искусству. Слушатели Ака- длительные тренировочные поедин-
лов, взрослый, солидный человек, то- демии корпоративных систем совсем ки, регулярно тренируются, получают
же умеет делать открытия! И это очень не против нового увлечения директо- обратную связь». Интересуюсь: «Нуж-
ему помогает и в профессиональной ра академии, образовательная про- но постоянно тренироваться, чтобы
деятельности, и в семейной жизни. грамма «Искусство управленческой не потерять форму?» – «Я бы не ска-
Не верите? Сейчас убедитесь… борьбы» востребована на сто процен- зал «нужно», я бы сказал – «хочется».

54
человек номера
Причем заметно, что с течением вре-
мени люди меняются. У нас есть один
активный участник, который работает
в IT-компании руководителем проек-
та. Первоначально, когда он выступал
в управленческих поединках, он очень
жестко отстаивал свою позицию, ни
шагу назад, входил в жесткий конф-
ликт. С течением времени манера из-
менилась, он стал играть с противни-
ком, уходить в сторону».
Вообще-то Николай начинал про-
фессиональную деятельность в ка-
честве научного сотрудника в Инсти-
туте радиотехники и электроники Ака-
демии наук СССР. И кандидатскую за-
щитил на тему, весьма далекую от уп-
равления, информационных техноло-
гий, – по организации вычислитель-
ных процессов. В 25 лет Новожилов,
по его собственному признанию, по-
нял, что его возможности роста в этой
области исчерпаны, и в 30 лет ушел
в компьютерный бизнес, чтобы за-
явить о себе достаточно громко и яр-
ко на постах руководителя различ-
ных компаний, в том числе «Радома»,
учебного центра СофтЛайн. Станов-
ление Николая Новожилова как руко-
водителя шло успешно. «Через какое- жешь». «На следующий день, – говорит В судейской коллегии три секто-
то время пришло понимание, что уп- знакомая, – я иду по коридору и вижу – ра. Первый – нанимающиеся на рабо-
равление – это долгосрочный процесс. бумажка валяется. Я кидаюсь к теле- ту, они смотрят за диалогом двух сто-
На нижнем уровне надо просто управ- фону, звоню в хозяйственную часть, го- рон, выбирают, к кому бы из них пошли
лять людьми, чтобы они понимали, ка- ворю: «Уберите срочно!» Сколько лет на работу и голосуют. Вторая судейс-
кие у них функции, а на верхнем уровне я потом там работала, реакция у всех кая коллегия решает, кого из двоих они
ты должен становиться учителем, вос- была абсолютно одинаковая. Все сле- бы отправили на переговоры. Не обя-
питателем». Что дала Николаю Леони- дили за порядком». Он воспитал всех зательно того, кто выиграл. И третья
довичу школа Тарасова? Понимание, за два часа. Он мог прочитать лек- коллегия выбирает, кому бы они до-
что управление – это не рациональ- цию, воздействовать на рациональ- верили собственность. Разные колле-
ный процесс, когда все идет по зара- ном уровне, и вряд ли бы это сработа- гии голосуют по-разному. Чаще все-
нее придуманному плану. Новожилов ло. Это особый дар – совершить пос- го собственники за одного, нанима-
вспоминает: «Ученица Тарасова при- тупок, который потом будет управлять ющиеся – за другого. Один сильный,
вела из своей жизни такой пример. другими людьми. Это технология. Во- всех подавляет, собственник ему до-
Она работала в большом многофунк- обще, управленец – очень тяжелая верил, но работать у него очень слож-
циональном бизнес-центре. И в какой- профессия…» но. Обратная связь дается на несколь-
то момент руководитель этого бизнес- Поединки по управленческой борь- ких уровнях. Первый – это восприятие.
центра собирал топ-менеджеров и го- бе для Николая Новожилова больше, Второй – как ты понимаешь ситуацию,
ворит: «У нас в компании беда про- чем захватывающее зрелище, больше, за что борешься: за конкретную выго-
изошла». 18 человек прилетели на со- чем часть бизнеса. Это важная часть ду или власть? Третий уровень связан
вещание: «Что произошло?» – «Я под- жизни. Он и рассказывает о них с лю- с ценностями и убеждениями. В этих
хожу к лифту, и там, где клавиши на- бовью, подробно, интересно: поединках человек проявляет себя
жимать, жирное пятно». Он поднимает «Огромный зал. Больше 100 чело- очень ярко. Многие люди сами себя ог-
финансового директора: «Вы видели? век зрителей и участников, судейс- раничивают, а на деле они могут сде-
Как вы отреагировали, как вы к этому кая коллегия. Свет юпитеров. Диало- лать гораздо больше и претендовать
относитесь?» Два часа он по очереди ги двух управленцев, которые пыта- на гораздо большее».
беседовал с каждым. Все время пы- ются выяснить, кто из них самый-са-
тался встать человек, который отвеча- мый. Причем главное даже не выиг- Семь Я
ет за хозяйственную службу. Руководи- рать поединок, а воздействовать на ок- Может быть, это и не открытие. А по-
тель говорил: «Ты сиди, ты потом ска- ружающих. моему – самое настоящее и самое

№5, май 2008 55


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

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

№5, май 2008 57


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

Правда об идентификаторах
безопасности

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

В
настоящее время в Windows пов- фикаторов безопасности: GUID, SID, ятность генерации двух совпадаю-
сюду используются идентифи- UUID (CLSID). щих ключей ничтожно мала. GUID –
каторы безопасности: в правах это частная реализация (компани-
доступа, в реестре, в Active Directory. Виды идентификаторов ей Microsoft) стандарта, имеющего
Понимать, откуда берутся эти иден- безопасности название Universally Unique Identifier
тификационные номера, очень важ- n GUID (Globally Unique Identifier) – (UUID).
но, поскольку это значительно облег- представляет собой уникальный n SID (Security Identifier) – уникаль-
чит жизнь как системным админист- 128-битный идентификатор. Его ная бинарная структура данных пе-
раторам, так и специалистам систем- главная особенность – уникаль- ременной длины, однозначно иден-
ной поддержки. ность. Общее количество уни- тифицирующая объект: учетную за-
В Windows широко используется кальных ключей настолько вели- пись пользователя, группы, домена,
несколько видов различных иденти- ко (2128 или 3,4028x10 38), что веро- компьютера и т. д.

58
безопасность
n U U I D ( U n i v e r s a l l y U n i q u e Таблица 1. Структура GUID Таблица 2. Расшифровка значения первого байта
последнего блока GUID
Identifier) – это стандарт иденти- Бит Байт Часть Количество
фикации, используемый в созда- символов в блоке Значение Описание

нии программного обеспечения, 32 4 1 8 0 NCS Совместимость с Networking Computing


System
стандартизированный Фондом сво- 16 2 2 4
10 Стандарт
бодного программного обеспече- 16 2 3 4
ния (FSF). UUID описан в RFC1422 110 Microsoft COM. Сюда также относится очень
64 8 4 4 важный GUID – unknown-устройства
«A Universally Unique IDentifier (UUID)
12 111 Зарезервировано
URN Namespace».

Рассмотрим каждый тип идентифи-


каторов безопасности подробнее.

Идентификатор Рисунок 1. GUID в Active Directory


безопасности GUID
GUID нашел широкое применение является ли он стандартным или сге- Значение SID в бинарном виде хранит-
в Active Directory. Совместно с другим нерирован каким-либо программным ся в параметре ObjectSID.
идентификатором безопасности, о ко- обеспечением. Подводя итог, перечис-
тором речь пойдет позже (SID), он од- лим особенности глобального иденти- Особенности SID
нозначно определяет объект. фикатора (GUID): Идентификатор имеет несколько очень
При создании новой учетной запи- n генерируемое значение GUID уни- важных особенностей:
си пользователя или группы в Active кально во всем мире;
Directory новому объекту присваива- n идентификатор не изменяется Таблица 3. Версии GUID
ется уникальный в глобальном мас- на протяжении всего времени су- Версия Описание
штабе идентификатор (GUID) не толь- ществования объекта. 1 GUID созданный на основе временного
штампа (time based GUID)
ко в домене, но и во всем мире. Кроме
объектов-пользователей и объектов- Генерация GUID 2 DCE Security version (with POSIX UIDs)

групп, GUID есть у всех объектов, со- Для генерации GUID можно воспользо- 3 GUID основанный на имени (MD5 hash)
здающихся в Active Directory. Значение ваться либо одним из on-line-генерато- 4 Произвольный GUID
GUID хранится в бинарном виде в па- ров в Сети, либо встроенной в Windows 5 GUID основанный на имени(SHA-1 hash)
раметре ObjectGUID (см. рис. 1). стандартной библиотекой с помощью
Таблица 4. Расшифровка значений
сценариев (см. листинг 1). параметра «уровень идентификации» SID
Структура GUID Идентификатор Значение
GUID – это 16-байтный (128-битный) Листинг 1. Генерация GUID (V‑Script)
SECURITY_NULL_SID_AUTHORITY 0
идентификатор, описанный в стандар- Set TypeLib = ↵
CreateObject("Scriptlet.TypeLib") SECURITY_WORLD_SID_AUTHORITY 1
те «A Universally Unique IDentifier (UUID)
wscript.Echo TypeLib.Guid SECURITY_LOCAL_SID_AUTHORITY 2
URN Namespace» (RFC 1422). Условно Set TypeLib = Nothing
идентификатор разбивают на 4 части SECURITY_CREATOR_SID_AUTHORITY 3

(см. таблицу 1), а при записи в тесто- SECURITY_NON_UNIQUE_AUTHORITY 4


вом виде последнюю часть разбивают Идентификатор SECURITY_NT_AUTHORITY 5
дополнительно еще на две. Это дела- безопасности SID
ется для упрощения определения типа Этот идентификатор широко известен
идентификатора: первый байт послед- не только опытным системным адми-
него, 64-битного раздела (в текстовомнистраторам и специалистам систем-
виде это как раз 4 символа) определя-ной поддержки, но и обычным пользо-
вателям, настраивающим доступ к пап-
ет тип GUID (см. таблицу 2). В тексто-
вом виде GUID записывается следу- ке между двумя компьютерами. Открыв
ющим образом: d50b151a-02c0-4dd0- вкладку «Безопасность» свойств обыч-
a59e-f1fb61614d6b. ной папки (см. рис. 2), пользователь ви-
дит объекты: группы и пользователи,
Определение типа GUID которым назначен индивидуальный на-
В настоящее время существует 5 вер- бор прав. На самом деле там указаны
сий GUID (см. таблицу 3). Номер вер- SID, а для упрощения восприятия отоб-
сии GUID – первое число третьей ражаются понятные всем имена объек-
части GUID: c9802770-e0af-11dc-95ff- тов. SID имеет сложную структуру, ко-
0016368d1a02. Как видно из табли- торая будет рассмотрена позже.
цы 3 – этот GUID сгенерирован на ос- SID присваивается пользователю
нове временного штампа. Зная тип при создании учетной записи поль-
Рисунок 2. Параметры безопасности
идентификатора, легко определить, зователя или группы в Active Directory. объекта

№5, май 2008 59


безопасность
При взаимодействии между объектами в Active Directory
и Windows идентификация объектов осуществляется с по-
мощью SID.
При переименовании объекта идентификатор безопас-
ности остается прежним. При создании объекта ему при-
сваивается новый SID.
Таким образом, если созданная доменная учетная за-
пись пользователя User1 переименована в User2, то с точ-
ки зрения Active Directory у объекта изменено только свойс-
тво, поскольку SID остался неизменным.
Если же пользователь был удален, а затем создан зано-
Рисунок 3. Структура SID во с тем же именем, то с точки зрения Active Directory поя-
вился новый объект. Старый безвозвратно удален.
n Каждый объект (группа безопасности или пользователь) Если же учетная запись была удалена, а затем восста-
имеет персональный идентификатор. новлена из резервной копии Active Directory, то SID учет-
n Изменить SID объекта в пределах одного домена невоз- ной записи пользователя после восстановления будет
можно. При переходе в другой домен пользователь по- прежним
лучает дополнительный SID.
n Идентификаторы удаленных объектов никогда более Структура SID
не используются. SID состоит из нескольких частей (см. рис. 3). Выражение
n SID в учетных записях домена или Windows одни и те же, SID можно записать формулой:
вне зависимости от версии продукта (см. таблицу 6).
n Если контроллер домена по какой-либо причине недо- S-R-X-Y1-Y2-…-Yn-1-Yn (1)
ступен, то имя объекта не подставляется и отобража-
ется его SID. Второй причиной, по которой может отоб- Каждая из букв несет в себе смысловую нагрузку:
ражаться, – некорректное удаление объекта. n S – идентифицирует SID. Идентификатор всегда начи-
нается с этой буквы.
Таблица 5. Поэтапное преобразование SID n R – указывает на версию структуры
Бинарный вид Канонический Положение Комментарий идентификатора. Поскольку SID ни-
(строковый) вид в бинарной записи
когда не может быть изменен, этот
01 S-1 1-й байт (1 байт) К идентификатору добавляется признак
SID – S
параметр всегда равен 1.
n X – показывает наивысший уровень
05 5 разделов (5=0x5) 2-й байт (1 байт) Не участвует в формуле SID.
Несет информационную нагрузку идентификации, которым обладает
о количестве идентификационных групп созданный объект. Значение это-
00 00 00 00 00 05 05 (0x00000005) 3-8 байты (6 байт) Смотри таблицу 6. Расшифровка го параметра варьируется от 0 до 5
значений параметра «уровень
идентификации» SID (см. таблицу 4). Например, пара-
15 00 00 00 21 (0x00000015) 9-12 байты (4 байта) Перед преобразованием из 16‑ричной
метр Х в SID любой группы безо-
системы записывают байты в обратном пасности или учетной записи поль-
2C 8F EC FB 4226584364 (0xFBEC8F2C) 13-16 байты (4 байта) порядке
зователя в домене имеет значение
E5 F2 48 01 21557989 (0x0148F2E5) 17-20 байты (4 байта)
5, а группа EveryOne (все) – 0.
35 A6 99 55 1436132917 (0x5599A635) 21-24 байты (4 байта) n Y1-Y2-Yn-1 – идентификатор доме-
26 1B 00 00 6950 (0x00001B26) 25-28 байты (4 байта) на.
n Yn – относительный идентифика-
тор (RID, relative IDs), который пока-
зывает порядковый номер объекта
с момента создания Active Directory.
Для встроенных объектов зарезер-
вирован диапазон RID от 0 до 999.
Например, для администратора –
500, для гостя – 501. Первой учет-
ной записи, созданной в любой ло-
кальной системе или домене NT/2k,
присваивается RID 1000, а каждо-
му последующему объекту – сле-
дующий за ним порядковый номер
(1001, 1002, 1003 и т. д.), причем при
удалении объекта его номер уже ни-
когда не используется при создании
Рисунок 4. SID в Active Directory новых объектов.

60
безопасность
Чтение SID из Active Directory
В Active Directory SID хранится в пе-
ременной objectSID как массив, со-
стоящий из бинарных элементов
(см. рис. 1). Размер любого SID в Active
Directory – 28 байт. Рассмотрим про-
цесс преобразования бинарной записи Рисунок 5. Определение SID пользователя с помощью утилиты GetSID.exe
идентификатора безопасности в тра-
диционный (строковый) вид. лены нестандартным образом (выделенны красным цве-
В бинарной форме идентификатор безопасности мож- том и подчеркнуты). Остальная информация разделе-
но записать в общем виде так: на на группы по 4 байта (выделенны фиолетовым цветом
и подчеркнуты)). В формуле составления идентификато-
A-B-C-Z1-Z2-…-Zn-1-Zn (2) ра не участвует.
В следующих 6 байтах (48 битах) хранится значение на-
Рассмотрим преобразование идентификатора безо- ивысшего уровня идентификации.
пасности из бинарного вида в строку на примере домен-
ной учетной записи TEST (см. рис. 4). 01 05 00 00 00 00 00 05 15 00 00 00 2C 8F EC FB
Каждый элемент массива – это 1 байт или 8 бит. E5 F2 48 01 35 A6 99 55 26 1B 00 00 (4)
Для преобразования идентификатор (формула 3) разбива-
ют на группы по 4 байта. Исключение составляют первые Преобразование осуществляется по следующему прин-
8 байт. Они разбиваются на три группы: первые две по бай- ципу. Каждая группа перезаписывается с конца в шестнад-
ту, последняя – 6 байт. Такое разбиение обусловлено фор- цатеричной форме (формула 5).
матом традиционной формы записи (формула 1).
S — 0x1 — 0x5 — 0 x 00 00 00 00 00 05 —
0 x 00 00 00 15 — 0 x FB EC 8F 2C — 0 x
01 05 00 00 00 00 00 05 15 00 00 00 2C 8F EC FB 01 48 F2 E5 — 0 x 55 99 A6 35 — 0 x 00 00 1B 26 (5)
E5 F2 48 01 35 A6 99 55 26 1B 00 00 (3)

В первом байте (см. таблицу 4) хранится версия струк- Перед записью добавляют символ S, свидетельствую-
туры идентификатора. В формуле 1 это параметр R, в фор- щий о том, что это идентификатор безопасности. А 2-й байт
муле 2 – A. Как уже отмечалось ранее, он всегда равен 1. исключают, поскольку он несет информационную нагрузку.
Во втором байте (см. таблицу 5) хранится количест- Далее полученные числа преобразуются из 16-ричной сис-
во групп по 4 байта, которые следуют за первыми тре- темы исчисления в 10-ричную (формула 6). На этом преоб-
мя группами (формула 4, в ней первые 8 байт, распреде- разование закончено.
Таблица 6. Широко известные идентификаторы

SID Объект Комментарий


S-1-1-0 Everyone Группа, в которую входят все пользователи, даже анонимные пользователи и гости. Принадлежность контролируется ОС
S-1-3-0 Creator Owner Замещающий элемент в наследуемой записи управления доступом (ACE). При наследовании ACE система замещает этот SID
идентификатором SID создателя объекта
S-1-5-18 Local System Учетная запись службы, используемая операционной системой
S-1-5-domain-501 Guest Учетная запись для лиц, не имеющих индивидуальной учетной записи. Для данной учетной записи пароль не требуется.
По умолчанию учетная запись Guest отключена
S-1-5-domain-512 Domain Admins Глобальная группа, членам которой разрешено управлять доменом. По умолчанию группа Domain Admins является членом
группы Administrators на всех компьютерах, входящих в домен, включая контроллеры доменов. Группа Domain Admins
по умолчанию является владельцем любого объекта, созданного любым членом группы
S-1-5-domain-513 Domain Users Глобальная группа, в которую по умолчанию входят все учетные записи домена. При создании учетной записи в домене
она по умолчанию добавляется в эту группу
S-1-5-domain-515 Domain Computers Глобальная группа, в которую входят все клиенты и серверы, входящие в домен
S-1-5-root domain-519 Enterprise Admins Универсальная группа в домене с основным режимом; глобальная группа в домене со смешанным режимом. Данной группе
разрешено вносить изменения на уровне леса в Active Directory, например добавлять дочерний домен. По умолчанию
единственным членом группы является учетная запись Administrators для корневого домена леса
S-1-5-32-544 Administrators Встроенная группа. После первоначальной установки операционной системы единственным членом этой группы является учетная
запись Administrators. Когда компьютер присоединяется к домену, группа Domain Admins добавляется к группе Administrators.
Когда сервер становится контроллером домена, группа Enterprise Admins также добавляется к группе Administrators
S-1-5-32-545 Users Встроенная группа. После первоначальной установки операционной системы единственным членом этой группы является группа
«Прошедшие проверку». Когда компьютер присоединяется к домену, группа Domain Users добавляется к группе Users на этом
компьютере
S-1-5-32-546 Guests Встроенная группа. По умолчанию единственным членом группы является учетная запись Guest. Группа Guests предоставляет
возможность пользователям периодически или однократно входить в систему с ограниченными правами встроенной
в компьютер учетной записи Guest
S-1-5-32-547 Power Users Встроенная группа. По умолчанию в этой группе нет членов. Членам группы Power Users разрешено создавать локальных
пользователей и группы; изменять и удалять созданные ими учетные записи; удалять пользователей из групп Power Users,
Users и Guests. Также членам группы Power Users разрешается устанавливать программы; создавать, удалять локальные
принтеры и управлять ими; создавать и удалять общие файловые ресурсы

№5, май 2008 61


безопасность
S — 1 — 5 — 21 — 4226584364 — 21557989 — Таблица 7. Некоторые стандартизованные UUID
1436132917 — 6950 (6)
UUID Объект
{4e1-3957-11d2-a40b-0c5020524153} Administrative Tools
Определение SID пользователя {85bbd92o-42a0-1o69-a2e4-08002b30309d} Briefcase
с помощью утилиты GetSID
{21ec2o2o-3aea-1o69-a2dd-08002b30309d} Control Panel
Чтобы узнать SID пользователя, можно воспользоваться
утилитой GetSID, входящей в состав Windows 2000 Resource {d20ea4e1-3957-11d2-a40b-0c5020524152} Fonts

Kit Tools. Утилиту можно загрузить с сайта Microsoft: http:// {ff393560-c2a7-11cf-bff4-444553540000} History
download.microsoft.com/download/win2000platform/Getsid/1.0/ {00020d75-0000-0000-c000-000000000046} Inbox
NT5/EN-US/getsid.exe. В первую очередь GetID.exe предна- {00028b00-0000-0000-c000-000000000046} Microsoft Network
значена для сравнения SID разных пользователей, однако {20d04fe0-3aea-1069-a2d8-08002b30309d} My Computer
она может с успехом использоваться для получения SID кон-
{450d8fba-ad25-11d0-98a8-0800361b1103} My Documents
кретного пользователя. После завершения работы масте-
{208d2c60-3aea-1069-a2d7-08002b30309d} My Network Places
ра утилиту и сопутствующую документацию можно найти
{1f4de370-d627-11d1-ba4f-00a0c91eedba} Network Computers
в каталоге C:\Program Files\Resource Kit.
Утилита GetSID.exe запускается из командной строки {7007acc7-3202-11d1-aad2-00805fc1270e} Network Connections
и имеет следующий синтаксис: {2227a280-3aea-1069-a2de-08002b30309d} Printers and Faxes
{7be9d83c-a729-4d97-b5a7-1b7313c39e0a} Programs Folder
GetSID.exe \\server1 account \\server2 account
{645ff040-5081-101b-9f08-00aa002f954e} Recycle Bin
{e211b736-43fd-11d1-9efb-0000f8757fcd} Scanners and Cameras
Для определения SID рекомендуется задать две одина-
{d6277990-4c6a-11cf-8d87-00aa0060f5bf} Scheduled Tasks
ковые пары параметров: сервер и имя учетной записи в се-
{48e7caab-b918-4e58-a94d-505519c795dc} Start Menu Folder
ти. Если необходимо определить SID доменной учетной за-
писи, то в качестве сервера необходимо указать либо имя {7bd29e00-76c1-11cf-9dd0-00a0c9034933} Temporary Internet Files

контроллера домена, либо имя домена в сокращенной фор- {bdeadf00-c265-11d0-bced-00a0c90ab50f} Web Folders
ме. Например, необходимо определить SID пользователя
test в домене MSK. Для этого выполним команду: мых в данном компьютере, можно найти в реестре в ветви
HKEY_CLASSES_ROOT\CLSID (см. рис. 6).
GetSID.exe \\MSK test \\MSK test Каждая UUID-папка имеет внутреннюю структуру, в ко-
торой находятся параметры, определяющие местоположе-
В результате выполнения этой команды на экран будет ние объекта, контекстное меню, значок объекта и другие
выведено сообщение, показанное на рис. 5. свойства. В таблице 7 приведены стандартизованные UUID
объектов, которые во всех версиях Windows одинаковы.
Широко известные идентификаторы SID
Под хорошо известными SID понимают группу идентифи- Генерация UUID
каторов безопасности, идентифицирующую общих пользо- При создании какого-либо приложения с помощью Microsoft
вателей и общие группы безопасности. Их значения одина- Visual Studio .NET, GUID объектов формируется автомати-
ковы во всех операционных системах. чески. Если необходимо сгенерировать идентификаторы
явным образом воспользовавшись одним из оn-line гене-
Идентификатор безопасности UUID раторов: http://www.famkruithof.net/uuid/uuidgen.
Универсальный уникальный идентификатор активно ис-
пользуется для создания программного обеспечения. Все Заключение
объекты Windows имеют свой уникальный идентифика- В заключение хочется сказать: несмотря на то, что пред-
тор – UUID. Перечень всех идентификаторов, используе- ложенные знания не являются самыми необходимыми, они
важны. Понимание процесса образо-
вания SID и других идентификаторов
безопасности поможет решить мно-
жество проблем, возникающих в про-
цессе эксплуатирования сети. Мно-
гие «чудеса» станут вполне объясни-
мыми.

1. КВ 288900 «How To Use Visual Basic


to Construct a Well-Known SID».
2. RFC 4122 «A Universally Unique IDentifier
(UUID) URN Namespace».
3. CLSID List. Windows Class Identifiers –
http://www.autohotkey.com/docs/misc/
Рисунок 6. Папка CLSID CLSID-List.htm.

62
Реклама
безопасность

Новые возможности Heimdal


Объединение открытых ключей и Kerberos

Михаил Кондрин

Проект Heimdal-Kerberos, в прошлом году отметивший 10-летний юбилей выпуском «круглой»


версии 1.0 и переездом на новый сайт, позволяет объединить возможности инфраструктуры
публичных ключей (Public Key Infrastructure – PKI) и Kerberos в рамках единой регистрационной
системы. Об этом, а также других новинках этого программного пакета будет сегодня
рассказано.

64
безопасность
Центральное ча проверяется тем, что обеим сторо- например, в виде полей subject (субъ-
правительство, или нам удалось установить сетевой об- ект) и issuer (гарант) сертификатов, ко-
Групповая солидарность? мен, который они при желании могут торые представляют по своему форма-
Прежде чем заняться практической шифровать, используя все тот же сес- ту типичный Distinguished Name (DN),
демонстрацией новых возможностей сионный ключ. хорошо известный сетевым админис-
Heimdal-Kerberos, хотелось бы напом- Относительная слабость симмет- траторам, знакомым с LDAP.
нить историю возникновения Kerberos ричных шифровальных алгоритмов Главным достоинством PKI являет-
и систем PKI, в частности стандар- компенсируется тем, что все паро- ся использование более сильных (хо-
та X.509, используемого в том чис- ли, пересылаемые по сети, коротко- тя одновременно и более требователь-
ле и в таком популярном и известном живущие, и срок их действия истека- ных к вычислительным ресурсам) алго-
в мире Linux продукте, как OpenSSL. ет, прежде чем их бы удалось сломать ритмов несимметричного шифрования,
Эта история поможет понять досто- злоумышленнику. что позволяет иметь более долгоживу-
инства и недостатки каждого из ре- Авторы Kerberos не особо заботи- щие сертификаты и ключи.
шений. лись о масштабируемости своего про- Подробнее с форматом сертифика-
Протокол Kerberos и идея публич- токола, поскольку их целью являлись тов можно познакомиться из многочис-
ных ключей, представленная в прото- университетские сети с большим чис- ленных руководств по OpenSSL/SSL/
коле X.509, появились почти одновре- лом не слишком мощных компьюте- TLS, например из статей [2, 3].
менно в середине 80-х годов, и оба ров (поскольку в эти сети входили В то же самое время большинс-
пытались решить одну и ту же зада- и компьютеры студенческих кампусов), тво недостатков X.509 (в первую оче-
чу обеспечения сетевой безопаснос- но все же не сопоставимых по раз- редь претензия на универсальность –
ти. Под сетевой безопасностью нужно меру с сетями масштаба целой стра- «один инструмент на все случаи жиз-
понимать не только шифрование пере- ны. Но по мере развития этого прото- ни») связаны именно с тем, что стан-
дачи данных и дистанционной провер- кола (переходу от версии Kerberos 4 дарт X.500 никогда не был реализо-
ки паролей, но и возможность как сер- к Kerberos 5) происходило одновре- ван в полном объёме. (Несмотря на
веру, так и клиенту удостовериться менно и добавление в него дополни- свою утопичность, идея глобальной
в идентичности друг друга. Оба про- тельной функциональности, позволя- информационной службы имеет пра-
екта решали эту проблему примерно ющей с помощью трастов объединять во на существование. В конце концов
одинаковым способом – введением несколько секторов (realms) Kerberos существует же глобальная система
третьей trusted-стороны, авторитету в общую сеть. доменных имён, и кто знает, если бы
которой доверяли бы обе стороны се- История PKI шла совсем иным стек протоколов OSI не был бы вытес-
тевого взаимодействия. путём. Хотя постепенно она эволюцио- нен стеком TCP, может быть, и стан-
На этом их сходство заканчивалось. нировала примерно к тому же, чем сей- дарт X.500 получил бы практическое
Kerberos возник всё же несколько ра- час является Kerberos, но изначально воплощение.)
нее и идеологически он был постро- она задумывалась как глобальная цен- Подробное обсуждение недостат-
ен более просто. Использование ал- трализованная система. X.509 возник ков PKI можно найти в статье Петера
горитма симметричного шифрования, как стандарт OSI, организации, кото- Гутмана [4], а также в наборе слайдов
когда третья сторона (KDC – контрол- рая первой попыталась стандартизо- его же авторства [5] с более язвитель-
лер сервера Kerberos) владеет пароля- вать сетевые протоколы (ей же при- ной, но одновременно более смеш-
ми как клиента, так и сервера, поэтому надлежит стандарт на знаменитый ной критикой PKI (эта подборка, кста-
может обеспечить обе стороны общим 8‑уровневый стек сетевых протоколов ти, цитируется в английской Википе-
ключом, пригодным как для идентифи- OSI, в настоящее время вытесненный дии в статье [6]). Читать слайды до-
кации друг друга, так и для шифрова- более простым TCP). вольно трудно, но если вы восстано-
ния пересылаемых данных, позволяет В частности, X.509 возник как стан- вите канву его аргументов, используя
более экономно использовать вычис- дарт аутентификации и авторизации статью [4], то пара часов непрерывно-
лительные ресурсы. для доступа к X.500 (Directory Access го смеха вам гарантирована.
В то же время протокол работал Protocоl/DAP), интересного проекта, В самом деле, единственным усло-
в онлайновом режиме – выпуск сес- но тоже в настоящее время вытес- вием, позволяющим клиенту и серве-
сионных ключей (билетиков, tickets) ненного своим более лёгким потом- ру удостовериться в идентичности друг
всегда выполняется сервером KDC ком – LDAP. Х.500 предполагал созда- друга, – это наличие ключей, сертифи-
и по специальному протоколу пере- ние глобального каталога, где иден- цированных (подписанных) третьей
сылается клиенту. Не вдаваясь в под- тичность двух узлов каталога удосто- стороной. Но вне привязки к глобаль-
робности (которые, однако, можно най- верялась бы специальными сертифи- ному иерархическому дереву возни-
ти в статье [1]), идентичность клиента катами, «подписанными» Certification кают естественные вопросы – «Кто та-
и сервера удостоверяется тем, что им Authority (CA), привязанной к узлу, ко- кая это третья сторона и чью идентич-
удалось расшифровать сессионный торый является для них, во-первых, об- ность она сертифицирует?». То есть
ключ, который получен от KDC, буду- щим предком, а во-вторых, доверенной в рамках директории DAP сертифи-
чи зашифрованным паролями клиен- третьей стороной. кат X.509 имеет прозрачный смысл –
та (пользователя) и сервера. А успеш- Собственно, отголоски этой идеи это средство авторизации доступа
ность расшифровки сессионного клю- до сих пор наблюдаются в OpenSSL, к какому-то из узлов каталога, а иерар-

№5, май 2008 65


безопасность
Семантика же этого ключа опре-
деляется уже внутренней политикой
организации, т.е., например, привяз-
ка ключа и CA может осуществлять-
ся к внутреннему LDAP-каталогу ор-
ганизации.
В этом смысле интересно реше-
ние, предложенное Heimdal, – привяз-
ка ключей к принципалам Kerberos,
а Certification Authority к KDC. В этом
случае проблема аннулирования клю-
чей решается простыми средствами –
ликвидацией соответствующего прин-
ципала. То есть сертификат (или же
smart-card) в данном случае высту-
пает в роли ключа, который открыва-
ет пользователю доступ к супербиле-
ту (TGT), а дальнейшее обеспечение
сетевой безопасности решается уже
средствами Kerberos.
Собственно, это техническое реше-
ние мы и будем рассматривать в этой
статье.

Закладка «Your Certificates» в Mozilla Firefox hxtool


Установка и конфигурирование секто-
хия CA естественным образом следует ния Verisign (фактически монополист ра Kerberos описаны в статье [7]. Луч-
из иерархии самого каталога. В отсут- на рынке цифровых сертификатов) мо- ше всего брать последнюю версию
ствие же глобального каталога поля жет продать вам последовательность Heimdal-Kerberos с их нового узла [8],
subject и issuer никакого смысла не не- бит, но она не может забрать у вас эти или же использовать пакет, уже име-
сут, а выдумывание смешных и фан- данные, если срок их действия истёк ющийся в вашем дистрибутиве (но-
тастических значений для этих полей или у вас их украли злоумышленники. мер версии должен быть больше 0.8).
уже превратилось в особый жанр ком- В самом деле, стандарт регламентиру- Так же как и в статье [7], предполага-
пьютерного фольклора. ет только ведение чёрных списков CRL ется, что сектор Kebreros называет-
С сертификацией ситуация точ- (certificate revocation list), поэтому если ся MYREALM.RU, а контроллер секто-
но такая же – внутри организации ис- вы обратитесь в компанию с просьбой ра расположен на компьютере с име-
пользуются или самоподписанные сер- аннулировать утерянный вами серти- нем kdc.myrealm.ru. Теперь можно при-
тификаты, или же (при необходимос- фикат, то она, конечно же, внесёт этот ступать к изготовлению PKI-сертифи-
ти выйти во внешний мир) покупают- сертификат в CRL. катов.
ся подписанные сертификаты у спе- Однако это не гарантирует, что ка- Как вы уже поняли из предыдущих
циализированных компаний, которые кой-нибудь из сетевых сервисов бу- аргументов, нас интересуют только са-
являются своего рода нотариальными дет консультироваться с этим списком, моподписанные сертификаты, которые
конторами цифрового мира. когда он получит от клиента украден- предполагается использовать исклю-
Но, во-первых, удовольствие это ный у вас сертификат. Даже при усло- чительно внутри сетевой структуры ор-
не из дешёвых, подписанный сертифи- вии добросовестности поставщика се- ганизации. Их можно изготовить с по-
кат считается одним из самых дорогих тевых услуг у злоумышленника есть мощью консольной утилиты openssl
последовательностей битов (компания большой временной интервал, преж- (можно посмотреть, как это сделано
Thawte, которая принесла миллиарды де чем запрос на аннулирование будет в пакете heimdal, с помощью скрипта
Марку Шаттлворту, просила за 2 Кб обработан, CRL пополнен, а пополнен- lib/hx509/data/gen-req.sh в исходниках
сертификат для веб‑сервера сроком ный CRL дойдёт до сетевого постав- Heimdal). Но для решения поставлен-
на год до 160 долларов), а во-вторых, щика. Не говоря уже о том, что сверка ной нами задачи проще использовать
у компании, его подписавшей, нет тех- сервером каждого полученного серти- аналогичную утилиту hxtool, реализо-
нических средств гарантировать его фиката с многомиллионным «чёрным» ванную средствами Heimdal.
достоверность (в отличие от обычных списком выглядит устрашающей опе- OpenSSL строилась с расчётом
нотариусов, у которых такое средство рацией. на использование сертификатов, под-
есть – суд). Таким образом, всё что нам нужно писанных внешним центром сертифи-
Это вытекает из другого основно- от PKI – это ключ («Bring me the keys of кации, поэтому, скажем, операция из-
го недостатка X.509 – это стандарт, Alfredo Garcia!», как это сформулиро- готовления своего сертификата рас-
а не протокол. Именно поэтому компа- вано в статье [4]). падается на три этапа:

66
безопасность
n изготовление частного ключа; Есть определённые соглашения по расширениям, при-
n оформление запроса на подпись сертификата (кото- писываемым сертификатам различного типа. Расшире-
рый может быть адресован внешней доверенной ком- ние .pem означает, что сертификат закодирован в фор-
пании); мате Base64, и как правило состоит из двух частей, вклю-
n подписывание сертификата. чающих в себя приватный ключ и собственно сертифи-
кат. Файлы с расширением .crt содержат только сертифи-
Понятно, что все эти сложности не нужны, если вы со- кат с публичным ключом, но без приватного, а .key – толь-
бираетесь изготовлять самоподписанные сертификаты. ко приватный ключ без сертификата. Кроме того, встреча-
Как, например, изготовление своего CA: ются ещё .csr (Certificate Signing Request), но в данной ста-
тье они не используются.
hxtool issue-certificate \ Например, для создания защищённых страниц на веб-
--self-signed \
--issue-ca \ сервере Apache вам понадобится cгенерировать серти-
--subject="CN=CA,DC=myrealm,DC=ru" \ фикаты для сервера и клиента, одновременно подписав
--lifetime=10years \
--generate-key=rsa \ их c помощью приватного CA-ключа:
--certificate=FILE:ca.pem
hxtool issue-certificate \
--subject="CN=www.myrealm.ru,DC=myrealm,DC=ru" \
Справку по программе hxtool и её командам можно полу- --type="https-server" \
чить с помощью «hxtool help» и «hxtool <command> -help». --hostname="www.myrealm.ru" \
--generate-key=rsa \
В данном случае выдаётся самоподписанный сертифи- --ca-certificate=FILE:ca.pem \
кат Certificate Authority сроком на 10 лет, выданный пользо- --certificate=FILE:https.pem
вателю с DN CN=CA,DC=myrealm,DC=ru c использованием hxtool issue-certificate \
алгоритма шифрования RSA. --subject="CN=www.myrealm.ru,DC=myrealm,DC=ru" \
--type="https-client" \
Минимальную информацию о сертификате можно по- --generate-key=rsa \
лучить с помощью команды: --ca-certificate=FILE:ca.pem \
--certificate=FILE:https-client.pem

#hxtool print FILE:ca.pem Чтобы сервер заработал, необходимо будет перемес-


cert: 0 тить ключи https.pem и ca.crt подальше от посторонних глаз,
private key: yes но так, чтобы httpd-сервер мог найти их, и отредактировать
issuer: "CN=CA,DC=myrealm,DC=ru"
subject: "CN=CA,DC=myrealm,DC=ru"
конфигурационный файл /etc/httpd/extra/httpd-ssl.conf, ука-
serial: 2460E08A177846F035AE02841F995F341D0E4557 зав там их расположение:
keyusage: cRLSign, keyCertSign, keyEncipherment, digitalSignature
SSLCertificateFile "/etc/httpd/ssl/https.pem"
SSLCertificateChainFile "/etc/httpd/ssl/ca.crt"
Если открыть сертификат с помощью текстового ре- SSLCACertificateFile "/etc/httpd/ssl/ca.crt"
дактора, легко заметить, что он состоит из двух Base64-
encoded-частей: Затем можно будет импортировать в браузер CA-серти-
n собственно сертификата; фикат, что позволяет избавиться от надоедливых вопросов
n приватного ключа. о неизвестной идентичности защищенного узла.
Для Firefox это делается выбором пункта меню «Edit →
Из‑за наличия в cертификате этого ключа его нуж- Prefernces», затем в диалоге настроек выбором заклад-
но хранить, как Кащееву смерть, поскольку если он по- ки «Advanced → Encryption», а затем уже в следующем
падёт в руки злоумышленникам, то ничего хорошего вас диалоговом окне с помощью кнопки «Import» на закладке
не ждёт. Так что лучше всего создать каталог рядом с ба- «Authorities» осуществляется загрузка файла сертификата.
зами Heimdal: /var/heimdal/secure, ограничив к нему дос- Такая процедура позволяет устанавливать шифрованное
туп, насколько это возможно, и поместить его туда. Все соединение (https) между сервером и клиентом.
дальнейшие сертификаты будут генерироваться с помо- Клиентский сертификат требуется, если сервер содер-
щью этого файла. жит страницы, специальным образом защищенные с помо-
Чтобы клиент и сервер могли удостовериться в иден- щью директив вида:
тичности друг друга, оба они должны иметь копию серти-
фиката СA, который, однако, уже сгенерирован и закоди- <Directory /var/www/StrongerSSL>
SSLVerifyClient require
рован в первой секции сертификата. Так что этот сертифи- SSLVerifyDepth 1
кат нужно или вырезать из файла и сохранить с помощью </Directory>
текстового редактора в отдельном файле или же восполь-
зоваться командой: Для доступа к таким страницам браузерам нужно предъ-
явить клиентский сертификат, наподобие того, что был на-
openssl x509 -in ca.pem -text > ca.crt ми создан ранее. Однако не всё так просто.
Большинство браузеров требуют, чтобы сертифика-
Файл можно будет выдавать по мере надобности служ- ты этого типа были в бинарном PKCS12-формате и защи-
бам и пользователям, заинтересованным в подключении щены с помощью пароля, что делает их хранение на дис-
к вашему PKI. ке более безопасным. Хотя утилита hxtool поддерживает

№5, май 2008 67


безопасность
и этот формат, но не вполне, поскольку ею нельзя зашиф- chmod -R 600 /home/mike/secure
ровать сертификат. Поэтому придётся прибегнуть к ко-
манде openssl: Собственно, после этого можно приступать к конфигу-
рированию Heimdal, что включает в себя правку двух фай-
openssl pkcs12 -export \ лов – /etc/krb5.conf, ответственного за настройку клиент-
-in https-client.pem \
-name HTTPS-Client \ ской библиотеки и приложений, и /var/heimdal/kdc.conf, ко-
-out https-client.p12 торый отвечает за работу сервера KDC.
Начнём с последнего, где необходимо поправить сек-
В процессе выполнения команда попросит вас ввести цию [kdc], указав там расположение приватного ключа kdc
и подтвердить пароль, который потом будет использован и сертификата CA:
при импорте сертификата https-client.p12 в браузер. Дела-
ется это в том же диалоговом окне, что и выше, но только [kdc]
enable-pkinit=yes
в этот раз кнопка «Import» будет располагаться на заклад- pkinit_identity = FILE:/var/heimdal/secure/kdc.pem
ке «Your Certificates» (см. рисунок). pkinit_anchors=FILE:/etc/ssl/ca.crt
Можно сравнить, как та же процедура осуществляется
средствами только команды openssl в статье [3] или в из- Сертификат CA должен быть доступен и клиентской
вестном mini-howto [9]. Как видите, использование hxtool части Kerberos, поэтому его лучше выложить в общедо-
существенно сокращает дистанцию. Таким образом, если ступный каталог (убедившись предварительно, что из фай-
не выдвигать слишком высоких требований, типа защищён- ла удалена секция приватного ключа) и отредактировать
ных паролем сертификатов и ключей, или использования /etc/krb5.conf
алгоритма DSA для шифрования, то утилиты hxtool доста-
точно, чтобы управлять PKI предприятия. [appdefaults]
pkinit_anchors = FILE:/etc/ssl/ca.crt
[kinit]
pkinit MYREALM.RU = {
pkinit_anchors = FILE:/etc/ssl/ca.crt
Как вы могли заметить, пока речь не шла о Kerberos. Объ- }
единение PKI и Kerberos обычно обозначают термином pkinit
(это слово можно расшифровать как public key init), что поз- Кроме того, можно создать дополнительный файл
воляет получать доступ к сектору Kerberos с помощью отк- /var/heimdal/pki-mapping, где хранится таблица соответс-
рытых ключей, smart-card, биометрических средств и др. твий между принципалами Kerberos и субъектами (поле
Следует иметь в виду, однако, что стандарт в наcтоящее subject) PKI-сертификатов. На самом деле в данном слу-
время не устоялся, и возможно будет меняться в будущем. чае эта таблица нам не нужна, поскольку соответству-
Спецификации на него находятся в разработке у Kerberos ющий принципал записан в поле subjectAltName выдан-
Working Group [10]. ных нами сертификатов благодаря использованию клю-
Посмотрим, как можно организовать такой доступ с по- ча --pkinit-principal при их создании. В этом можно легко
мощью нашего самодельного Certification Authority. Напо- убедиться:
добие того как в предыдущей части это было продела-
но для httpd-сервера и клиента, cгенерируем сертификат #hxtool print FILE:ca.pem
для KDC, точнее сервиса, ответственного за выдачу супер- private key: yes
билетов, и для любого принципала из базы Heimdal: issuer: "CN=CA,DC=myrealm,DC=ru"
subject: "UID=mike,DC=myrealm,DC=ru"
serial: 51DBAEA05A82924AAA2DFFEE173B922872AA7E48
keyusage: keyEncipherment, digitalSignature
hxtool issue-certificate \ subject name: UID=mike,DC=myrealm,DC=ru
--type="pkinit-kdc" \
--pk-init-principal="krbtgt/MYREALM.RU@MYREALM.RU" \ issuer name: CN=CA,DC=myrealm,DC=ru
--subject="uid=kdc,DC=myrealm,DC=ru" \ Validity:
--generate-key=rsa \ notBefore 2008-04-11 20:29:22
--ca-certificate=FILE:ca.pem \ notAfter 2009-04-12 20:29:22
--certificate=FILE:kdc.pem checking extention: keyUsage
hxtool issue-certificate \ checking extention: extKeyUsage
--type="pkinit-client" \ checking extention: subjectAltName
--pk-init-principal="mike@MYREALM.RU" \ subjectAltName otherName pk-init: mike@MYREALM.RU
--subject="uid=mike,DC=myrealm,DC=ru" \ checking extention: authorityKeyIdentifier
--generate-key=rsa \ authority key id: B53226CCEA74AC84A4F88624E09D77EC270FEA15
--ca-certificate=FILE:ca.pem \ checking extention: subjectKeyIdentifier
--certificate=FILE:mike.pem
subject key id: 9F096F50AC6000E11AB82E075A3434FC951B7069
Поскольку все сгенерированные файлы содержат при- checking extention: basicConstraints
ватные ключи, то не стоит их разбрасывать где попало. is NOT a CA
Ключ kdc.pem прячем в уже имеющейся директории /var/ Not a CA nor PROXY and doesn't haveCRL Dist Point
heimdal/secure, а mike.pem выдаём пользователю, соот-
ветствующему принципалу mike@MYREALM.RU, и строго Но файл /var/heimdal/pki-mapping может оказаться по-
предупреждаем его, чтобы он спрятал этот ключ в своём лезным для «нестандартных» сертификатов. (Хотя что тут
домашнем каталоге (например, в подкаталоге /home/mike/ считать стандартом?) Его формат выглядит примерно так
secure) и никому его не показывал: (обратите внимание на обратный порядок полей в DN):

68
безопасность
mike@MUREALM.RU:DC=ru,DC=myrealm,UID=mike После чего сертификат на жёстком диске стирается,
и в дальнейшем доступ к компьютеру разрешается только
Теперь осталось только перезапустить KDC, чтобы поль- пользователям, которые правильно указали имя принципа-
зователь mike мог получать свой супербилет командой: ла, находящегося в базе Heimdal, и предъявили на флешке
соответствующий сертификат.
#kinit \color{red}--pk-user=FILE:mike.pem ↵ Хотя возможности pkinit ещё не задействованы в про-
\color{black} mike
#klist -v грамму login из состава Heimdal, но эту задачу можно ре-
Credentials cache: FILE:/tmp/krb5cc_P23967
шить либо с помощью PAM-модуля pam-krb5 [12], либо
Principal: mike@MYREALM.RU в тестовых целях можно обойтись простым bash-скрип-
Cache version: 4 том login.sh:
Server: krbtgt/MYREALM.RU@MYREALM.RU
Client: mike@MYREALM.RU #!/usr/bin/bash
Ticket etype: des3-cbc-sha1, kvno 1 echo -n "Insert pem-certificate and hit enter when ready!"
Ticket length: 364 read
Auth time: Apr 16 13:00:29 2008 /usr/bin/kinit -C FILE:/dev/sda1 $2 && \
/usr/bin/kgetcred host/$(hostname -f) && \
End time: Apr 17 13:00:29 2008
/usr/bin/login -f $2
Ticket flags: forwardable, initial, pre-authenticated
Addresses: addressless
который запускается из /etc/inittab, сконфигурированного
Heimdal также позволяет использовать сертификаты следующим образом:
в формате PKCS11 – одного из стандартов, получившего
распространение при работе со smart-card. Его практи- ...
c1:1235:respawn:/sbin/agetty -l ↵
ческое применение зависит от оборудования для чтения /usr/local/bin/login.sh 38400 tty6 linux
пластиковых карт, установленного на вашем компьюте- c2:1235:respawn:/sbin/agetty -l ↵
/usr/local/bin/login.sh 38400 tty6 linux
ре, но в демонстрационных целях можно поэксперимен- ...
тировать с программным модулем soft-pkcs11, разрабо-
танным одним из основных авторов Heimdal – Лав Эрнк- Этот скрипт просит пользователя вставить сменный но-
вист Острандом [11]. ситель в usb-slot, после чего запускает kinit. При безоши-
В данном случае модуль позволяет более длинным бочном получении супербилет он пытается получить билет
путём добраться до того же самого сертификата. В пос- для доступа к рабочей станции, как к принципалу host/<имя
ледних версиях Heimdal (выше 1.0) этот модуль входит в со- компьютера> (хотя это не обязательно, но именно таким об-
став Heimdal в виде библиотеки libhx509.so, так что можно разом работает стандартный Kerberized login), а после этого
поэкспериментировать с ним, не устанавливая дополни- уже запускается программа login из пакета Heimdal в «поль-
тельных библиотек. Конфигурация модуля осуществляет- зователь-уже-зарегистрирован» режиме (ключ -f в вызове
ся с помощью rc-файла, на который указывает перемен- login). Дёшево, но сердито!
ная окружения SOFTPKCS11RC. Таким образом, новые версии Heimdal позволяют объ-
Для наших целей этот файл должен выглядеть таким единить сильные криптографические алгоритмы, исполь-
образом (заметьте, что разделителем полей является та- зуемые в инфраструктуре публичных ключей, и гибкость
буляция!): настроек Kerberos для контроля доступа к сетевым ресур-
сам.
certificate Certificate Mike ↵
FILE:/home/mike/secure/mike.pem
1. Кондрин М. Изучаем принципы работы Heimdal Kerberos. //Сис-
То есть в нем указано расположение на жёстком диске темный Администратор, №6, 2005 г. – С. 56-59.
pem-сертификата. После этого запуск: 2. Стахов В. Теория и практика OpenSSL. //Системный Админист-
ратор, №1, 2003 г. – С. 17-26.
kinit \color{red}--pk-user=PKCS11:libhx509.so ↵ 3. Стахов В. Практика OpenSSL. //Системный Администратор,
\color{black} mike
№2, 2003 г. – С. 32-36.
позволяет получить супербилет. Понятно, что это имеет 4. Peter Gutman. PKI: It’s Not Dead, Just Resting. Computer, 35(8),
смысл в тестовых целях, в реальных «полевых» условиях 41‑49, 2002 – http://www.cs.auckland.ac.nz/ pgut001/pubs/
вместо динамической библиотеки необходимо указать мо- notdead.pdf.
дуль, который управляет устройством для считывания ин- 5. Peter Gutman. Everything you never wanted to know about pki but
формации со smart-card, установленного в компьютере. were forced to find out. – http://www.cs.auckland.ac.nz/ pgut001/
В качестве более или менее практического примера pubs/pkitutorial.pdf.
применения этих возможностей Heimdal попробуем от- 6. http://en.wikipedia.org/wiki/Public_key_infrastructure.
крыть доступ к некоей рабочей станции под управлением 7. Кондрин М. Развертываем Heimdal Kerberos. //Системный Ад-
Linux только для обладателей pem-сертификатов, запи- министратор, №7, 2005 г. – С. 20-25
санных на сменный носитель (USB флешку). То есть сер- 8. http://www.h5l.org/dist/src/heimdal-1.1.tar.gz.
тификат сбрасывается на неформатированный usb-носи- 9. http://www.vanemery.com/Linux/Apache/apache-SSL.html.
тель обычной командой cat: 10. http://www.ietf.org/html.charters/krb-wg-charter.html.
11. http://people.su.se/ lha/soft-pkcs11.
cat mike.pem > /dev/usb/sda1 12. http://www.eyrie.org/ eagle/software/pam-krb5.

№5, май 2008 69


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

Изучаем теневое
копирование

Роман Васильев
Теневое копирование файлов, записываемых на внешние носители, стало практически
обязательным инструментом в арсенале корпоративных хранителей секретов. Разберемся
в особенностях реализации и работы этой технологии.

IT
-отделы и службы безопас- хранения данных, например, флешки, ватель может стать причиной утечки
ности современных предпри- MP3-плееры, цифровые камеры и т. д. существенных объемов конфиденци-
ятий уже хорошо знают, ка- Если в организации отсутствует какой- альной информации. Именно поэто-
кую опасность для конфиденциаль- либо контроль использования этих ус- му программные продукты, реализу-
ных данных представляют портатив- тройств, с их помощью нелояльный ющие контроль использования таких
ные USB-устройства с возможностью или просто невнимательный пользо- устройств в масштабах предприятия,

70
безопасность
стали обязательным средством в ар- Таблица 1. Измерение времени копирования файлов
сенале борьбы за сохранение конфи- Без теневого копирования DeviceLock Zlock
денциальности информации. Один большой файл 125 c. 150 c. (+20 %) 175 c. (+40%)
На сегодняшний день известно Множество маленьких файлов 760 c. 880 c. (+15 %) 935 c. (+23 %)
множество программных продуктов,
которые реализуют не только базовый мации, это создаст повышенную на- n русскоязычный интерфейс;
функционал по разграничению досту- грузку на сеть. n документация на русском языке.
па, но и дополнительные возможнос- Во-вторых, для того чтобы анали-
ти, такие как журналирование и мони- зировать всю эту информацию, нужно Очевидно, что для средних и круп-
торинг действий пользователей, цен- большое количество людей или какие- ных компаний, для которых наиболее
трализованное администрирование, либо интеллектуальные автоматизиро- актуальна защита от утечек инфор-
управление через групповые полити- ванные средства, при том что задача мации через внешние устройства, не-
ки Active Directory и т. д. В число этих их поиска, закупки, настройки и интег- выполнение перечисленных условий
возможностей у большинства продук- рации с системой разграничения дос- делает внедрение системы довольно
тов включено так называемое «тене- тупа далеко не тривиальна. рискованным.
вое копирование». Данная функция В связи с этим более оправданным Приведенные ниже тесты прово-
при условии разрешенного доступа может быть выборочное использова- дились на ноутбуке IBM ThinkPad T43p
к внешнему носителю на запись обес- ние теневого копирования на компью- с процессором Pentium M 1.8 МГц и 1 Гб
печивает копирование всей информа- терах отдельных сотрудников. Прин- RAM, операционная система Windows
ции, которую пользователь записывает цип выбора таких сотрудников может XP SP2. В качестве внешнего носителя
на внешний носитель, сначала на ло- быть различным, например, для новых использовалась флешка Transcend JF
кальный жесткий диск, а потом пере- сотрудников во время испытательного V60 с файловой системой FAT32.
нос ее на сервер для последующего срока, для сотрудников, в отношении
анализа. Это может быть очень удоб- которых имеются какие-либо подозре- Копируем файлы
но в случае, если по каким-либо при- ния, для каждого сотрудника одну не- Наиболее распространенная операция
чинам сотруднику необходимо иметь делю в году и т. д. с внешними носителями – копирова-
возможность записывать информацию Итак, попробуем разобраться, ние файлов с жесткого диска ПК или
на внешний носитель, поскольку поз- что представляет собой теневое ко- из сети. Проведем два теста: копиро-
воляет провести расследование воз- пирование с технической точки зре- вание большого файла (418 Мб) и мно-
можного инцидента и сохранить конт- ния и как оно на самом деле рабо- жества маленьких файлов (1 072 фай-
роль над ситуацией. тает на примере двух продуктов: ла общим размером 393 Мб) на флеш-
Данная функция реализована DeviceLock 6.3 (Build 14161) от ком- накопитель. Без теневого копирова-
во многих современных продуктах, на- пании SmartLine Inc. и Zlock 2.0.1.597 ния время записи составило соответ-
пример, Safend от одноименной компа- от компании SecurIT. ственно 125 и 760 секунд. Теневое ко-
нии, Sanctuary Device Control компании Выбор для сравнения этих продук- пирование Zlock увеличило время за-
Lumension, Smartline DeviceLock и Zlock тов был обусловлен тем, что именно писи большого файла до 175 секунд
компании SecurIT. они в наибольшей степени представ- (на 40%) и множества маленьких фай-
Принцип работы теневого копиро- лены на российском рынке, тогда как лов до 935 секунд (на 23%). DeviceLock
вания довольно прост: при записи фай- другие упомянутые системы при всех показал немного лучшие результаты –
лов на внешний носитель копия запи- их достоинствах не имеют какого-либо 150 (+20%) секунд для крупного файла
сываемых данных вместе с дополни- одного, а чаще всего нескольких из пе- и 880 (+15%) секунд для набора мелких
тельной информацией (имя пользова- речисленных ниже атрибутов: файлов (см. таблицу 1).
теля, приложение, дата, время) сохра- n представительство на территории Н о н а м н е о бхо д и м о о ц е н и т ь
няется на жестком диске компьютера РФ; не только скорость записи данных,
и в дальнейшем переносится на сер- n наличие технической поддержки но и корректность работы теневого ко-
вер. Затем сотрудник службы безопас- на территории РФ; пирования. При копировании неболь-
ности может обратиться к базе данных
теневых копий и просмотреть подозри-
тельные файлы.
Очевидно, что использование
данной функции имеет ряд ограни-
чений, поскольку массовое внедре-
ние этой функции в крупной органи-
зации с большим числом пользова-
телей может создать существенные
проблемы.
Во-первых, если все пользовате-
ли будут копировать на внешние но-
Рисунок 1. В консоли DeviceLock сохраненный файл «Секретный документ.doc»
сители большое количество инфор- отображается как «~WRD0002.tmp»

№5, май 2008 71


безопасность
Windows. В случае с большим файлом
Закон суров, но он закон роля информации по крайней мере не был при теневом копировании DeviceLock
Следует обратить внимание на один важ- негласным. Для этого, во-первых, надо в локальном хранилище обнаружи-
ный момент, про который часто забывают. приказом руководителя предприятия при- лась теневая копия размером всего
В настоящее время Законом РФ «Об опера- нять регламент использования корпора- лишь 30 Мб, а это 7% от общего объ-
тивно-розыскной деятельности» всем, кро- тивных средств обработки и передачи ин- ема файла. А что, если не пользовать-
ме специально уполномоченных организа- формации (телефон, компьютер, сети пе- ся процедурой завершения Windows,
ций, запрещается негласное получение ин- редачи данных и т. д.), который должен за- а нажать RESET сразу после оконча-
формации с использованием специальных прещать их использование для обработ- ния записи на носитель? Рассмотрим
технических средств (ст. 6). При этом в ка- ки личной информации. Во-вторых, на- это в конце статьи, а пока продолжим
честве негласного получения информа- до включить в этот регламент положение изучать работу теневого копирования
ции может иметься в виду не только конт- о том, что компания имеет право прослуши- в штатных ситуациях.
роль телефонных переговоров сотрудников вать, просматривать, архивировать и ана-
и их электронной почты, но и рассматрива- лизировать всю информацию, которая хра- Работа приложений
емый в данной статье контроль файлов, ко- нится, передается и обрабатывается с ис- В качестве набора тестовых приложе-
пируемых на внешние носители. Это озна- пользованием корпоративных средств. На- ний был взят широко распространен-
чает, что руководитель предприятия и/или конец, необходимо у каждого сотрудни- ный пакет MS Office 2003. Для каждо-
другие должностные лица, пытаясь обеспе- ка получить письменное подтверждение о го приложения из списка было прове-
чить свои законные права по обеспечению том, что он знаком с этим регламентом и дено два теста: сохранение документа
конфиденциальности информации, могут согласен с ним. Как известно, незнание за- на флешку с помощью команды «Со-
сами стать нарушителями закона и близ- кона не освобождает от ответственности, хранить как» и модификация сущес-
ко познакомиться со статьей 138 Уголов- поэтому, чтобы не иметь лишних неприят- твующего файла на носителе.
ного кодекса, которая запрещает наруше- ностей и не оказаться крайним, надо все
ние тайны переписки, телефонных разго- эти вопросы задать руководителю компа- Word
воров и иных сообщений граждан. нии или своему начальнику, желательно Как при создании нового файла, так
Для того чтобы этого не произошло, необ- также в письменном виде, и настоять на и при модификации имеющегося до-
ходимо, чтобы процесс получения и конт- их разрешении. кумента с именем «Секретный доку-
мент.doc», при просмотре теневых ко-
ших файлов в теневой копии все фиксируется корректно, а пий в консоли DeviceLock отображались файлы с именем
с файлом в 418 Мб поджидал сюрприз. Итак, в локальном вида «~WRD0002.tmp» (см. рис. 1), в то время как в кон-
каталоге Zlock теневая копия этого файла появилась сра- соли Zlock имена документов отображались корректно
зу же при начале копирования, и ее размер увеличивался (см. рис. 2).
одновременно с процессом записи на накопитель. В случае
с DeviceLock такого не произошло. Даже после окончания Excel
записи на флешку система продолжала активно работать с У DeviceLock ситуация с Excel не сильно отличается от Word:
жестким диском, и копия полностью сформировалась толь- теневые копии с именем вроде «FBAD1000» могут сущес-
ко через 135 секунд после окончания записи. твенно затруднить анализ журнала теневого копирования.
Теперь представим, что потенциальный злоумышленник При этом в некоторых случаях вместо приложения Excel
сохранит данные на внешний носитель и сразу после это- в журнале теневого копирования был зафиксирован про-
го выключит компьютер, используя процедуру завершения цесс explorer (проводник Windows). С Zlock подобных проб-
лем не наблюдалось.

PowerPoint
Правка находящегося на USB-флешке файла с презента-
цией PowerPoint отобразилась в DeviceLock как изменение
файла ppt1d.tmp, что не соответствует действительности.
У Zlock все в порядке.

Access
Создание базы данных на носителе отображается в обо-
их продуктах, но при изменении БД у DeviceLock возник-
ли серьезные проблемы. Дело в том, что правка каких-ли-
бо таблиц и последующее сохранение документа не фик-
сируется вовсе! В теневых копиях фигурирует только файл
с расширением .ldb – это служебный файл Access. Изме-
ненный mdb-файл, пусть даже с каким-нибудь другим наз-
ванием, в DeviceLock отсутствует. Zlock корректно обраба-
тывает данную ситуацию и корректно фиксирует измене-
Рисунок 2. Консоль Zlock корректно отображает имя
сохраненного файла ния в обоих файлах.

72
безопасность
Outlook Таблица 2. Объем данных, записываемых в теневую копию
Похоже, что Outlook работает ана- Вид испытания Расположение файла DeviceLock Zlock
логично Access: при добавлении пи- RESET в процессе записи файл на флешке 10 207 232 байт 12 828 672 байт
сем в pst-хранилища происходит мо- файла размером 18 Мб
теневая копия отсутствует 12 845 056 байт (100,1% от
дификация только части файла. В та- объема записанного файла)
кой ситуации DeviceLock, в отличие RESET сразу после записи файл на флешке записан полностью записан полностью
от Zlock, теневые копии .pst-файлов маленького файла (1Мб)
теневая копия отсутствует записана полностью
не сохраняет.
RESET сразу после записи файл на флешке записан полностью записан полностью
большого файла (60 Мб)
теневая копия 3 276 800 байт записана полностью
Следует отметить, что сохранение (5,2% от объема файла)
файлов из Блокнота Windows (Notepad)
фиксируется обеими системами кор- нажатие RESET. После перезагруз- Выводы
ректно, отображается правильное имя ки скопированный файл побитно Реализация теневого копирования
файла и сохраняется все его содержи- сравнивался с оригиналом – утили- в DeviceLock обладает рядом сущест-
мое. Очевидно, что проблема с име- той fc.exe, для того чтобы убедить- венных недостатков, которые не толь-
нами файлов возникает у DeviceLock ся, что файл скопировался полно- ко затрудняют анализ деятельности
в связи с некорректной обработкой стью. пользователей службой безопаснос-
функции переименования, поскольку 3. Аналогично п. 2, но копировался ти, но и могут привести к записи дан-
известно, что приложения MS Office файл размером 60 Мб. ных на носитель в обход функции те-
при редактировании создают времен- невого копирования.
ные файлы с такими «неудобовари- Копирование выполнялось про- В первую очередь, имеются в ви-
мыми» именами, а потом их переиме- водником Windows. Результаты тестов ду некорректная обработка операций
новывают. приведены в таблице 2. с файлами, отображаемыми в память
Проблема же с Access и Outlook бо- Как видно из результатов, осо- (memory-mapped files), и запись тене-
лее серьезна. Дело в том, что эти при- бенности реализации теневого копи- вой копии в локальное хранилище пос-
ложения работают с файлами с помо- рования в системе DeviceLock могут ле копирования данных.
щью функций их отображения в па- стать причиной утечки данных. Путем С другой стороны, DeviceLock поз-
мять (memory-mapped files), и, судя несложных манипуляций с кнопкой воляет вести теневое копирование
по результатам теста, данные функ- RESET злоумышленник может «вы- записываемых данных на другие ус-
ции DeviceLock также не обрабатыва- нести» приличные объемы конфиден- тройства – порты ввода/вывода, КПК
ет или обрабатывает некорректно. Та- циальной информации в обход тенево- и CD/DVD-приводы. Кроме того, сис-
ким образом, любое приложение, кото- го копирования, и служба безопаснос- тема позволяет фиксировать прямую
рое сохраняет данные с использовани- ти об этом может только догадываться. запись на диск.
ем этой технологии, позволяет «обма- Эта особенность может быть связана Что касается Zlock, то, несмотря
нуть» теневое копирование DeviceLock, с не очень удачным проектированием на более позднее появление тенево-
что может быть использовано потенци- системы – формирование теневой ко- го копирования, разработчики смог-
альным нарушителем. пии осуществляет системная служба, ли реализовать эту функциональность
выступая в качестве дополнительно- гораздо надежней, но с рядом ограни-
Надежность теневого го звена, что приводит к созданию ко- чений, кроме уже упомянутого паде-
копирования пии после записи данных на внешний ния производительности. В частнос-
Изучение механизма теневого копи- носитель. ти, в теневых копиях Zlock не фикси-
рования навело на мысль прервать В Zlock теневое копирование осу- руется прямая запись на диск. Конеч-
работу Windows нажатием на кноп- ществляет драйвер, благодаря чему но, она может быть выполнена только
ку RESET как во время копирования, можно реализовать превентивное те- какими-либо специальными утилитами
так и сразу после окончания записи невое копирование – запись теневой для работы с диском и только пользо-
на носитель и посмотреть, что записа- копии производится до записи дан- вателем с администраторскими приви-
лось на флешку и что при этом сохра- ных на внешний носитель. Если обра- легиями, а, как известно, защищаться
нилось в теневой копии. тить внимание на результаты первого от такого пользователя не имеет смыс-
В рамках данного теста были про- теста, то видно, что в теневую копию ла, поскольку он и так может отклю-
ведены следующие испытания: Zlock записалось больше информации, чить любую систему, но всегда хочет-
1. Копирование файла размером чем успело скопироваться на флешку. ся стремиться к идеалу.
18 Мб на флешку. Во время копи- Правда, разработчикам Zlock удалось В заключение хотелось бы выра-
рования, когда по индикатору про- добиться более высокой надежнос- зить надежду, что данная статья ста-
гресса было скопировано порядка ти ценой снижения скорости копиро- нет источником дополнительной ин-
60-70% файла, нажатие RESET. вания данных на отслеживаемые уст- формации для потенциальных пользо-
2. Копирование файла размером 1 Мб ройства, что может быть критично для вателей теневого копирования и помо-
на флешку. Сразу после копиро- организаций, в которых сотрудники ин- жет сэкономить время и усилия на эта-
вания, когда светодиодный инди- тенсивно работают с внешними носи- пе выбора решения.
катор флешки переставал мигать, телями данных. Удачи!

№5, май 2008 73


web

XML-native DB. XQuery

Александр Календарев
В прошлом номере был разговор про XML-native DB, в частности описывалась разработка Института
системного программирования XML-native DB Sedna. Для доступа в XML‑ориентированных базах
данных консорциумом W3C рекомендован язык XQuery. Он является такой же неотъемлемой частью
XML-native базы данных, как SQL в реляционных СУБД.

XQuery. Hемного истории (Paul Cotton). А группа XPath впослед- n XQuery and XPath Functions and
Недавно группа XML консорциума ствии вошла в состав рабочей группы Operators;
W3C отпраздновала свое десятиле- XSL (http://www.w3.org/Style/XSL). n XQuery Formal Semantics;
тие. Вскоре, после выхода первой спе- Первые требования спецификации n XML Query Requirements;
цификации XML, появилась потреб- модели данных (Data Model) XQuery вы- n XML Query Use Cases;
ность в организации хранения инфор- шли в январе 2000 года, а уже в 2001 n XSLT and XQuery Serialization;
мации в формате XML, и соответствен- году опубликовывается проект специ- n XML Syntax for XQuery (XQueryX);
но появилась потребность в разработ- фикации описания языка XQuery. n XQ u e r y a n d X P a t h F u l l -Te x t
ке алгоритмов и методов ее извлече- 3 ноября 2005 года XQuery 1.0 Requirements;
ния. Поэтому было предложено разра- п о л у ч и л с т а т ус W3 C C a n d i d ate n XQuery and XPath Full-Text Use
батывать «язык запросов», и уже в сен- Recommendation, а 23 января 2007 Cases.
тябре 1998 года появился проект спе- год а XQ uer y 1.0, од н о в р е м е н н о
цификации XQL (XML Query Language, с XSLT 2.0 и XPath 2.0, получил ста- Сам язык запросов XQuery не был
http://www.w3.org/TR/NOTE-xml-ql) – тус официальной рекомендации (W3C бы так интересен, если бы не появи-
языка запросов для XML. Данная ра- Recommendation). лись его практические реализации.
бота шла параллельно с работой груп- В настoящее время ведутся рабо- На примере Senda мы и рассмотрим,
пы XPath, которая занималась разра- ты по развитию этого стандарта, с до- как осуществляется работа с NXD.
боткой спецификации XPath – языка бавлением выражений полнотексто-
позиционирования XML-узлов (http:// вого поиска и для внесения измене- XQuery. Основные понятия
www.w3.org/TR/xpath) В связи с тем ний в XML-документы и базы данных В основе XQuery лежит Xpath 2.0.
что разработка обеих групп пересека- (XQuery Update), а также для проце- Но с другой стороны, XQuery расширя-
лась, группа XQL была расформиро- дурных операций. ет абстракцию формирования данных
вана, а сама спецификация XQL была Группой XQuery консорциума W3C с помощью FLWOR-выражений. Акро-
признана неудачной. подготовлены следующие специфи- ним «выражения FLWOR» был назван
В августе 1999 года была сформи- кации: по первым буквам операторов:
рована группа XQuery в составе 39 че- n XML Path Language (XPath) 2.0; n for – связывает одну или более пере-
ловек под руководством Пауля Коттона n XQuery and XPath Data Model; менных, создавая набор кортежей;

74
web
n let – связывает переменные с результатом вычисления Использовав запрос из примера 2, с помощью операто-
выражения; ров FLWOR его можно преобразовать в следующий вид:
n where – осуществляет фильтрацию кортежей по задан-
ному условию; Пример 4. Использование выражений FLWOR
n order by – отвечает за сортировку; for $reg in doc("auction")/site/regions/*
n return – отвечает за создание выходного выражения where $reg/name()='asia'
return $reg/item
для данного кортежа.
В примерах 3 и 4 используется оператор for, синтак-
XQuery вводит понятие «последовательность». После- сис которого интуитивно понятен и очень похож на опера-
довательность – это список, содержащий множество объ- тор цикла в процедурных языках.
ектов или включающий в себя одну или несколько иных Как упоминалось ранее, XQuery так же, как и XSLT, поз-
последовательностей. воляет осуществлять преобразования результата запроса,
Каждый объект может представлять либо узел, либо например, чтобы оформить результат примера 1 в следу-
атомарное значение. ющий XML-документ:
Под списком узлов понимается множество узлов, вы-
<region>africa</region>
бранных по имени, типу или иному критерию. В отли- <region>asia</region>
чие от представления XML DOM-модели, модель данных <region>australia</region>
в XQuery представлена в виде дерева узлов. Допускаются <region>europe</region>
<region>namerica</region>
следующие типы узлов: документ, элемент, атрибут, текст, <region>samerica</region>
пространство имен, команда обработки (process-instruction)
и комментарий. Каждый узел считается уникальным, даже Для этого в выражении return необходимо составить
если узлы идентичны. шаблон выходного выражения:
Узлы можно выбрать по Xpath-выражению, например,
для выбора всех названий регионов демонстрационной БД <region>{$reg/name()}</region>
аукцион применима следующая конструкция:
где выражение, заключенное в фигурные скобки {}, вычис-
Пример 1. Простое использование XPath ляется и осуществляется подстановка. В результате полу-
doc("auction")/site/regions/*/name() чится следующий запрос:

В результате мы получим следующий список: Пример 5. Использование конструктора выражений

for $reg in doc("auction")/site/regions/*


africa,asia,australia,europe,namerica,samerica return <region>{$reg/name()}</region>
Использование этого Xpath-выражения аналогично ис-
пользованию простого оператора: Пусть нам необходимо результат запроса из примера 5
заключить в теги <regions>{результат}</regions>, тогда дан-
SELECT * FROM TABLE ное преобразование должно принять следующий вид:

Можно средствами Xpath наложить фильтр, напри- Пример 6. Более расширенное использование конструктора
выражений
мер, выбрать все элементы <item>, которые входят в ре-
гион «asia»: for $reg in doc("auction")/site/regions
return
<regions>
Пример 2. Усложненное использование XPath {
for $r in $reg/*
doc("auction")/site/regions/*[ name()='asia']/item return <region>{$r/name()}</region>
}
</regions>
Аналогом фильтра в SQL является конструкция WHERE
в операторе SELECT, т.е. аналогичное SQL-выражение: Как вы видите, с помощью XQuery можно формировать
структуру XML-документа и производить практически лю-
SELECT * FROM TABLE regions WHERE name='asia' бую трансформацию выходного документа, наподобие то-
го, как это делается в XSLT. Сам SQL в отличие от XQuery
Синтаксис XQuery в своем арсенале имеет выраже- формирует только набор строк.
ния FLWOR. Так, пример 1 можно преобразовать следу-
ющим образом: Упорядочивание выборки
Рассмотрим более сложный пример:
Пример 3. Использование выражений FLWOR
Пример 7. Выборка и упорядочивание
for $reg in doc("auction")/site/regions/*
return $reg/name() for $reg in doc("auction")/site/regions/*
return
<region name="{$reg/name()}">
Мы преобразовали запрос, но при этом сами результа- {
ты выполнения запроса изменяться не будут. for $loc in $reg/item

№5, май 2008 75


web
order by $loc/location Результат:
return <item location="{$loc/location}" ↵
id="{$loc/@id}"/>
} <country name="United States">
</region> <person> <name>Huei Demke</name> </person>
<person> <name>Daishiro Juric</name> </person>
В примере 7 осуществляется выборка всех лотов по ре- . . .
</country>
гионам и упорядочивание лотов по расположению лота (зна- <country name="Cook Islands">
чение тега <location>, выражение «order by $loc/location»). <person> <name>Shooichi Oerlemans</name> </person>
Как вы уже догадались, аналогом в SQL является конс- </country>
<country name="Greenland">
трукция ORDER BY в операторе SELECT. <person> <name>Nestoras Gausemeier</name> </person>
Результат выполнения примера 7: </country>

<region name="africa">
<item location="United States" id="item0"/> Конечно, SQL-конструкция:
</region>
<region name="asia"> SELECT name, country FROM table GROUP BY country
<item location="Denmark" id="item2"/>
<item location="United States" id="item1"/>
</region> выглядит наглядней, но XQuery более гибкий при построе-
<region name="australia">
<item location="United States" id="item4"/>
нии структур данных.
<item location="Uzbekistan" id="item3"/>
</region>
. . .
Пересечения и выборки
XQuery не был бы полным языком, если бы с его помощью
нельзя было бы делать объединения и пересечения мно-
Группировка жеств. Пусть нам необходимо выбрать имена всех участ-
На следующем примере рассмотрим группировку. Выведем ников и сгруппировать их по открытым аукционам. По сути,
всех участников аукциона и страну их проживания: это запрос «SELECT INNER JOIN …». Например, данный за-
прос выдает только ссылки на имена участников:
Пример 8. Группировка
Пример 10. Выборка по одному множеству
let $person := doc("auction")/site/people/person
let $auc := doc("auction")/site/open_auctions
for $p in $person for $a in $auc/open_auction
return <person country="{$p/address/country}" ↵ return
>{$p/name/text()}</person> <auction >{
for $p in $a/bidder/personref/@person
return <person>{$p}</person>
Первое, на что хочется обратить внимание в приме- }</auction>
ре 8,  – это использование последовательности, т.е. присво-
ение оператором let переменной $person некой последова- И результат этого запроса необходимо пересечь с за-
тельности узлов, значение которой определяется Xpath-вы- просом:
ражением: «(doc("auction")/site/people/person)».
Далее, для того чтобы сгруппировать всех участни- let $person := doc("auction")/site/people/person
ков по странам проживания, необходимо выделить после-
довательность, которая содержит узлы с именем назва- В итоге получаем запрос:
ния стран:
Пример 11. Пересечение выборок
let $country := distinct-values($person/address/country) let $auc := doc("auction")/site/open_auctions
let $person := doc("auction")/site/people/person
for $a in $auc/open_auction
Для того чтобы пропустить одноименные узлы, исполь- return
зуется функция distinct-values(). <auction id="{$a/@id}">{
for $p in $person[@id = $a/bidder/personref/@person]
Если сравнивать с SQL, то данное выражение анало- return <person>{$p/name/text()}</person>
гично оператору «SELECT DISTINCT …». }
</auction>
Далее все очень просто: проходимся оператором for
по всем странам и выбираем имена тех person, которые Красным цветом выделены изменения. В данном запросе
проживают в данных странах: связывающей конструкцией WHERE, аналога SQL, являет-
ся Xpath-выражение:
Пример 9. Группировка
$person[@id=$a/bidder/personref/@person]
let $person := doc("auction")/site/people/person
let $country := distinct-values($person/address/country)
for $c in $country return
<country name="{$c}"> Хотелось бы отметить необходимость использования
{ for $p in $person[address/country=$c ] функции text() в возвращаемом выражении: $p/name/text().
return
<person>{$p/name}</person> Функция text() возвращает значение текстового узла name.
} В противном случае мы получили бы значение всего узла,
</country>
включая обрамляющие теги:

76
web
<person><name>Huei Demke</name></person> языке, состоит из объявления и тела. Для примера опре-
делим функцию inc(), которая увеличивает значение счет-
Функцию text() можно заменить на функцию data(), ко- чика на 1:
торую необходимо уже применять ко всему Xpath-выраже-
нию: data($p/name). Пример 14. Объявление функции
Результаты выполнения нашего запроса (см. при- declare function math:increment($num as xs:decimal) ↵
мер 11): as xs:decimal {
$num + 1
};
<auction id="open_auction0">
<person>Huei Demke</person>
<person>Laurian Grass</person> Следует отметить, что входные и выходные парамет-
. . . ры у функций должны быть типизированы. Допускают-
</auction>
ся как стандартные типы, определенные спецификацией
<auction id="open_auction1">
<person>Jamaludin Kleiser</person> XML Scheme:
<person>Eliana Ruemmler</person> n xs:string
. . .
</auction> n xs:integer
<auction>. . .</auction> n xs:decimal
n xs:float
Из набора FLWOR-выражений было рассмотрено все, n xs:date
кроме выражения IF. Данному выражению трудно найти n xs:QName
аналог в SQL-запросах, хотя его можно сравнить с опера- n xs:anyURI
тором IF, используемым в хранимых процедурах, но с бо-
лее ограниченными возможностями. Так и простые типы:
Пусть нам необходимо выбрать стоимость лотов из всех n element
аукционов, присвоив каждому лоту признак-attribute, в за- n node
висимости от цены – small для лотов меньше $30 и normal n attribute
для всех остальных лотов.
Простейшее решение продемонстрировано в приме- XQuery также еще позволяет определять пользователь-
ре 12: ский тип:

Пример 12. Выборка с условием define type user {


attribute id of xs:ID
let $price := doc("auction")/site/closed_auctions/ ↵ element rating ?
closed_auction/price }
for $p in $price
return
if ( $p < 30 ) then Необходимо отметить, что имя функции должно иметь ра-
<lot type="small" >{data($p)}</lot>
else нее определенный префикс пространства имен (namespace
<lot type="normal" >{data($p)}</lot> prefix). Под пространством имен понимается идентифициру-
емая с помощью ссылки URI (RFC2396) коллекция имен, ис-
Результат выполнения запроса: пользуемых в XML-документах для обозначения типов эле-
ментов и именования атрибутов. В данном случае с помо-
<lot type="normal">62.07</lot>
<lot type="normal">61.60</lot> щью uri будет идентифицироваться набор имен, определя-
<lot type="small">19.59</lot> емых пользователем функций. W3С рекомендовано, чтобы
<lot type="small">9.41</lot>
<lot type="small">21.75</lot>
использовался уникальный домен разработчика, например
http://mycompany.ru/xquery/fn. Определяется пространство
В отличие от своих собратьев XSLT и SQL XQuery, бла- имен выражением:
годаря включению FLWOR-выражений, более приближен
к процедурному языку, и он проще в понимании. Еще боль- declare namespace fn="http://nycompany.ru/Sedna/fn";
ше его приближает наличие в нем функций. Вызов функ-
ции состоит из списка выражений, разделенных запятыми, В случае если пространство имен не объявлено, то дол-
которые являются аргументами функции. В примере 13 жен быть объявлен локальный префикс: local:increment().
показывается обращение к встроенной функции concat() – Спецификация XQuery не определяет операторы изме-
склеивание строк: нения данных в XML-документах. Однако любая БД долж-
на не только извлекать данные из хранилища, но и иметь
Пример 13. Использование встроенных функций возможность манипулировать ими. В DML (Data Manipulation
let $name := doc("auction")/site/regions/*/name() Language), являющимся подмножеством SQL, существу-
for $n in $name ют операторы: INSERT. UPDATE и DELETE, выполняющие
return concat( $n, " is region tag")
функции вставка/изменение/удаление. XML-DB-консорци-
Однако XQuery не был бы мощным средством, если бы ум выступил с инициативой XUpdate и предложил свой син-
не имел функций, определяемых пользователем. Каждая таксис. Данный синтаксис очень похож на синтаксис опе-
пользовательская функция, как и в любом процедурном раторов DML.

№5, май 2008 77


web
Например, для добавления данных необходимо выпол- Каждый бренд – множество моделей, каждая из кото-
нить следующий запрос: рых описывается тегом item:

Пример 15. Выражение Update. Вставка узла <item id="34521" name="TWNtt" category="12”>
<description>описание модели</description>
UPDATE </item>
insert <person id="person25">
<name>John Smith</name>
<phone>223-322-223-322</phone> Тег <item > имеет атрибут category, который ссылает-
<creditcard>3454 3656 2344 6767</creditcard> ся на элемент каталога (на рисунке это изображено крас-
</person>
into document("auction")/site/people ной стрелкой). По каждой модели есть набор предложе-
ний от разных магазинов. Каждое предложение описыва-
А для удаления этих же данных необходимо выпол- ется тегом:
нить запрос:
<offer price="12500" shop_id="12" ↵
url="http://texnoshock.ru/12343" />
Пример 16. Выражение Update. Удаление узла

UPDATE Для выбора всех товаров данной категории достаточно


delete document("auction")/site/people/ ↵ сделать следующий запрос:
person[name/text()="John Smith"]

Можно выполнить запрос на замену некоторых узлов: Пример 18. Запрос на выборку товаров по всей категории
«пылесосы»

Пример 17. Выражение Update. Замена узла let $catalog := doc("catalog")/category[@name = "пылесосы"]
let $goods := doc("goods")/brand/item
UPDATE replace
$g in document("auction")/site/people/ ↵ for $g in $goods
person[@id="person25"]/name with where $catalog/@id = $g/@category
<name>Ivanov Ivan</name> return $g

В нашем примере конструкция WHERE осущест-


XQuery. Ближе к практике вляет связывание элементов документов doc("catalog")
В одном веб-проекте, который представляет собой интер- и doc("goods") наподобие конструкции WHERE при «джои-
нет-каталог, необходимо собрать информацию с нескольких не» таблиц в SQL. Для поиска конкретного товара по назва-
XML-источников и опубликовать ее на веб-сайте. Сбором нию достаточно выполнить следующий запрос:
информации занимается программа-загрузчик XML-доку-
ментов, которая вызывается по расписанию. Далее на ос- Пример 19. Запрос на выборку товаров по имени товара
нове собранных документов строится обобщенный XML-до- let $goods := doc("items2")/goods/brand/item
кумент. Пусть обобщенная информация имеет следующую for $g in $goods
where @name="TWNtt"
структуру (см. рисунок). return $
Синим цветом на рисунке изображен иерархический
каталог товаров, который определен тегами: Иногда при поиске мы не знаем точного имени, а зна-
ем только часть, тогда можно использовать встроенные
<category id="12" name="пылесосы" … > строковые функции: fn:contains, fn:start-with, fn:ends-with,
fn:substring-before, fn:substring-after:
Зеленым цветом представлена иерархия товаров, рас-
пределенная по брендам. Пример 20. Запрос на выборку товаров по части имени:
Например, товар «пылесос THOMAS TWNtt». Пылесос let $goods := doc("items2")/goods/brand/item
относится к элементу каталога: «Бытовая техника – пыле- for $g in $goods
where fn:contains( $g/@name ,"S80" )
сосы», имеет бренд – марку производителя – THOMAS и яв- return $g
ляется моделью TWNtt. Тег бренда будет:
В заключение хочется отметить, что определенные тех-
<brand id="23" name="THOMAS" > нологии надо использовать строго по назначению, для чего
они разрабатывались. Если в проекте большая часть дан-
ных обрабатывается в XML-формате, то и использование
специально адаптированных под XML средств даст поло-
жительный эффект.

XQuery и WEB
В последнее время хоть и растет популярность исполь-
зования XML-технологий, но в ближайшее время массо-
вого использования XML-native DB в WEB, на мой взгляд,
не предвидится. Как говорится, нет спроса – нет и предло-
жения. Соответственно хостеры и не спешат устанавли-
Cтруктура обобщенной информации вать XML DB.

78
web
Существуют отдельные проекты, которые используют Используются расширения файлов .xqy и .xquery, задан-
XML-native DB, и число таких проектов постепенно рас- ные по умолчанию. Для обработки этих файлов необходи-
тет. Авторы проекта Sedna реализовали поисковую систе- мо в htppd.conf добавить следующие строки:
му WikiXMLDB (http://wikixmldb.dyndns.org), которая вклю-
чает 24 Гб информации, собранной в Википедии (http:// LoadModule sedna_module modules/mod_sedna.so
LoadModule apreq_module modules/mod_apreq.so
en.wikipedia.org). Поиск информации осуществляется до- AddHandler sedna-handler .xqy .xquery
вольно-таки быстро. В данном проекте использован ин-
декс full-text. В .xqy-файле пишется запрос, результаты которого от-
Авторы проекта Sedna для использования построения даются сервером веб-клиенту. Раз есть исходный запрос,
индекса full-text используют внешний коммерческий компо- то должны быть и параметры запроса. Они передаются как
нент dt_search (http://www.dtsearch.com). В ближайшем бу- тело POST-запроса. Например:
дущем авторы проекта обещают внедрить внутренний ме-
ханизм построения индекса full-text. <data><person id=”1”>Alexandre</person></data>
Использование Sedna в качестве хранилища инфор-
мации целесообразно в случае работы с XML-документа- Эти данные доступны в теле запроса как элементы до-
ми. Например, в таких проектах, которые интенсивно об- кумента request_parameters:
мениваются XML-документами или SOAP-сообщениями.
Один проект закачивает и обрабатывает из разных источ- let $id = document("request_parameters")/data/person/@id;
let $name = document("request_parameters")/ ↵
ников 600-700 XML-сообщений. В другом известном мне data/person/text();
проекте сделан импорт базы данных «1С» – склад в элек-
тронный магазин в XML-формате. Но такие проекты – ско- Пара слов о доступе. Sedna – это полноценная БД с раз-
рее всего исключение, вернее сказать, попытки освоить деленным доступом. Все данные соединения содержат-
новые технологии. ся в следующих HTTP-переменных (могут быть как GET,
Если зашел разговор о технологиях, то, сравнивая так и POST):
с наиболее популярной РСБД MySQL, можно сказать, что n se_url – URL на котором запущена Sedna;
по скорости выбора данных Sedna соизмерима с MySQL n se_db – имя БД;
и даже на некоторых запросах обгоняет его. Чтобы быть n se_login – login;
более объективным, необходимо добавить, что при тести- n se_password – пароль.
ровании не учитывалась загрузка системы, т.е. тестирова-
ние проходило на «чистой» машине. Не знаю, из каких принципов исходили разработчики,
Надо отметить, что нет методики сравнения XML BD но, на мой взгляд, это является не совсем правильным с точ-
и реляционных БД, поэтому для сравнения были загруже- ки зрения защиты веб-приложений. Эти данные необходи-
ны в MySQL и Sedna одни и те же данные. Сравнивалась мо прописать либо в конфигурационном файле httpd.conf,
скорость извлечения однотипных данных. либо в тексте xqy-программы.
Скорость выборки данных во многом зависит от пра- Один их вариантов использования Sedna – это форми-
вильной организации структуры данных. Надо отметить, рование SOAP-ответа для веб-служб или формирование не-
что простое копирование структуры таблиц РСБД здесь посредственно HTML для дальнейшей публикации данных
не подходит и это отдельная тема для статьи. Однако Sedna в WEB, например, с использованием mod_sedna.
имеет небольшой недостаток. Это относительно значитель- Чего не хватает в проекте Sedna, так это хорошего инс-
ное время, необходимое на первоначальную загрузку дан- трумента профилирования. При построении и оптимиза-
ных (команда LOAD). Данный недостаток отсекает часть ции запросов можно полагаться только на свою интуицию
проектов, в использовании которых необходимо оператив- и здравый смысл. Нет инструмента определения, как быс-
но в реальном времени вводить большие объемы XML-дан- тро исполнилась та или иная часть запроса, какие индек-
ных и сразу же их обрабатывать. сы были задействованы, каково значение промежуточных
Если сравнивать проекты, то в MySQL хорошо задейс- переменных.
твованы механизмы кэширования запросов. И если первый Остается надеяться, что разработчики будут постоянно
запрос выполняется относительно медленно, то все после- совершенствовать свой продукт и в скором времени дове-
дующие – довольно-таки быстро. Однако механизм кэши- дут его до конкурентоспособного состояния.
рования эффективен, если спектр запросов узок. В Sedna
кэширование результатов запроса или его части реализо- 1. Официальный сайт проекта Sedna – http://modis.ispras.ru/sedna/
вано менее эффективно. Поэтому при сравнении времени index.htm.
исполнения выборок одних и тех же запросов результаты 2. Sedna Programmer’s Guide. Документация, входящая в дист-
разные, в зависимости от загрузки серверов в данное вре- рибутив.
мя другими запросами. 3. Консорциум W3C. XQuery – http://www.w3.org/TR/xquery.
Раз затронута тема WEB, то необходимо упомянуть, что 4. XQuery в Википедии – http://ru.wikipedia.org/wiki/XQuery.
разработчиками проекта был написан модуль mod_sedna 5. XQuery tutorial – http://www.w3schools.com/xquery/default.asp.
для веб-сервера Apache 2.0. Данный модуль позволяет ис- 6. XUpdate – http://xmldb-org.sourceforge.net/xupdate/xupdate-
пользовать Sedna не только как хранилище, но и как мо- wd.html.
дуль обработки логики. 7. Говард Кац. XQuery от экспертов. Кудиц-образ. М. 2005 г.

№5, май 2008 79


из личного опыта

Бессистемные заметки
о поиске работы за рубежом
ton-rai-plai-dee
(bad beginning good ending)

Тайская пословица

Крис Касперски
Многие люди (особенно IT-специалисты) хотят уехать отсюда, но не знают, как найти хорошую
работу за рубежом. Автор, имея более чем десятилетний опыт удаленной работы, наконец-то
нашел компанию своей мечты, стоящую того, чтобы оторвать свой хвост от кресла и сменить
Северный Кавказ на Сан-Франциско. Хотите и вы найти работу своей мечты?

…Как все начиналось редь следует изучать?». Начнем с то- им скажут. Кодер – это не программист.
Обычно, на программистских форумах го, что язык – это вообще-то средство Это как писарь и писатель, и если пи-
в разделе «О работе» постоянно за- выражения мысли и применительно сатель говорит «сократить период пос-
даются одни и те же вопросы: «Какие к программированию, с одним только тинга», то писарь так и пишет, а ведь
языки/технологии наиболее востребо- знанием языка на работу берут толь- мог бы слегка оптимизировать текст,
ваны здесь и там?», «Что в первую оче- ко кодеров, которые тупо кодят то, что заменив его на «пишите почаще».

80
из личного опыта
Программист должен знать не толь- кто приврал в резюме? А к тому момен- Узких специалистов всегда не-
ко язык, но и определенную предмет- ту, когда у вас действительно появится много (и чем уже предметная область,
ную область, решая поставленные за- опыт работы с C#, весьма велика ве- тем их меньше), и стандартные рыноч-
дачи, за каждой из которых стоит если роятность, что мода на него схлынет, ные отношения здесь не работают, ибо
не научное исследование, то по край- Microsoft забросит .NET (кстати говоря, рынок подразумевает наличие спроса
ней мере инновация. Конечно, от ря- разные версии которой уже страдают и предложения. А какой спрос на тех,
дового программиста не стоит ждать хронической несовместимостью) и C# кто знает дизассемблер? Даже назва-
существенного улучшения «движка» станет чем-то вроде MFC. ния для такой профессии не придума-
программы распознавания речи или Это не значит, что учить C# не нуж- но. Кадровые агентства не рассыла-
машинного перевода. Этим занима- но. Почему же? Учите себе на здоро- ют резюме об их найме, фирмы не от-
ются научные работники, результата- вье. Только вероятность найти работу крывают вакансий. Компания Secunia
ми которых и «кормятся» программис- выше юниора (особенно за рубежом) (secunia.com) на своем сайте прямо так
ты, ну а кодерам программисты пере- достаточно невелика, хотя юниором и пишет, что вакансий нет, но мы всег-
дают уже четко сформулированные за- можно устроиться в любой момент про- да рады рассмотреть предложения
дачи, реализация которых не требует странства-времени: от столицы до уез- от специалистов (http://secunia.com/
специфических познаний. Достаточ- дного городка. И с возможностью ка- hardcore_disassembler_and_reverse_
но разбираться во всем зоопарке гото- рьерного роста. engineer).
вых библиотек и помнить, какую из них Сравнительно большое число лю- И вот неожиданно выяснилось,
и когда следует применить. дей проскакивает эту стадию, изучая что одной крупной корпорации, имею-
Вот, скажите, какие банальные язык дома или параллельно с другой щей десятки филиалов в Европе, Азии
мысли автор высказывает. Это же всем работой, создавая программы, кото- и даже на Украине, требуется чело-
и так известно! Хм, но ведь на фору- рые реально нужны им самим. А зна- век, умеющий писать скрипты, плаги-
мах прежде всего спрашивают о язы- ние языка (не важно какого) в совокуп- ны и процессорные модули для IDA-Pro,
ках, что изначально загоняет челове- ности с определенной предметной об- то есть как раз то, что у меня получает-
ка в рамки кодера, а «там» наши коде- ластью – это уже программист, но ни- ся лучше всего. А фирме (имя которой
ры никому не нужды и гораздо более как не кодер. Программисты – доволь- вы наверняка знаете, хотя из сообра-
востребованы индусы с азиатами, по- но ценный продукт, подобный винам жений конфиденциальности пусть это
тому что едят мало, кодят много (хоть с многолетней выдержкой, и здесь уже будет, хм, ну, например, «Acme Corp»)
и криво), неприхотливы и т. д. Причем можно рассчитывать на индивидуаль- легче (и дешевле) перетащить готово-
при реорганизации фирмы (а реорга- ный подход, существенно упрощаю- го специалиста из России в Сан-Фран-
низации там не редкость), кодеры (осо- щий процедуру трудоустройства. Рас- циско, чем «вырастить» (то есть обу-
бенно иноземные) «вылетают» в пер- познать программиста можно с перво- чить) своего собственного.
вую очередь. Потом, правда, к фирме го взгляда: перечень языков програм- В процессе разбирательств с ин-
приходит понимание, что кодить все- мирования у него идет в самом конце тервью, резюме, визами, трансфера-
таки надо, и она вновь открывает ку- резюме и часто огранивается одним- ми и прочей бюрократической суетой
чу вакансий, но… как только индусы двумя языками, хотя программист мо- пришлось в срочном порядке приобре-
вместе с азиатами (и небольшим ко- жет более или менее сносно изъяс- тать новый жизненный опыт, которым
личеством «счастливчиков» из России) няться на добром десятке из них (на- очень хочется поделиться с читателя-
съедают весь бюджет, они снова воз- пример, я указал всего лишь C и x86- ми. И хотя статья носит спорный ха-
вращаются в родные пенаты. ассемблер, поскольку я слишком хоро- рактер, затрагивающий извечные те-
Более того, позиционируя себя, на- шо знаю C++, чтобы понять, что в дейс- мы «священных войн», она и задумы-
пример, как C#-кодера, вы вынуждены твительно я его не знаю). Зато список валась такой!
конкурировать с толпой юниоров, ед- предметных областей стоит на первом
ва осиливших книжку «C# for dummies» месте, и потенциальный наниматель Высшее образование –
и соорудивших из кучи готовых компо- сразу видит, с кем он имеет дело. с ним или без него?
нентов какое-то подобие чего-то как бы Так уж сложилось, что автор этих Прежде чем погружаться в пучину дис-
работающего. А сказать, что вы крутой строк обладает довольно редкой про- куссий и философских рассуждений,
кодер, имеющий более чем десятилет- фессией, если не сказать «экзотич- не имеющих отношения к реальности
ний опыт работы с C#, вы не можете, по- ной». У меня хорошо получается ди- и лежащих в той же плоскости, в кото-
тому как платформе .NET еще нет деся- зассемблировать программы, реконс- рой находятся диспуты о соотношении
ти лет, а если говорить об опыте (рабо- труируя исходный алгоритм, чуть хуже бога и церкви, скажу сразу: с опытом
ты), то из этого срока необходимо вы- выходит с разработкой защитных ме- работы свыше пяти лет и хотя бы па-
бросить несколько лет, ушедших на обу- ханизмов, но определенные наработки рой-тройкой коммерчески успешных
чение (чтение книг, стандартов, написа- в этой области все-таки есть, хотя ком- проектов диплом не спрашивают, а ес-
ние первых неработающих программ). мерчески успешных проектов (реаль- ли и спрашивают, то только потому, что
Скажите – пять лет и вам поверят но внедренных и действующих) сов- есть такой путь в резюме, но о резюме
с большой натяжкой. Три года звучат сем немного. Казалось бы, на что тут мы еще поговорим.
намного более реалистично, но сколь- можно претендовать?! Тем не менее на Высшее образование (при всех
ко еще таких же, как вы? И сколько тех, хлеб с маслом хватает. его достоинствах и недостатках) – это

№5, май 2008 81


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

82
из личного опыта
документ, обеспечивающий возмож- «H‑1B classification applies to persons Таблица 1. TOP10 High-Tech-компаний
и количество H-1B виз, полученных
ность въезда в страну (для отдыха или in a specialty occupation which requires ими в 2006 году (по данным
работы), но не дающий никаких гаран- the theoretical and practical application http://en.wikipedia.org/wiki/H-1B)
тий. Грубо говоря, если у вас есть ви- of a body of highly specialized knowledge Компания Количество виз H-1B
за, то ваша кандидатура будет рас- requiring completion of a specific course полученных в 2006 году

смотрена и в случае положительного of higher education»), то кодеры отпада- Microsoft 3117


решения соответствующих организа- ют сразу. Никакая компания не станет IBM 1130
ций (во всех странах они разные) дан выписывать их в штаты – проще пору- Oracle Corporation 1022
«зеленый» свет. чить эту работу азиатам или индусам, Cisco 828
Некоторые страны (например, Ма- на территории стран которых постро-
Intel 828
лайзия) не требуют получения ви- ено множество техноцентров.
Motorola 760
зы (выдают ее автоматом на грани- Кстати говоря, запрос на выдачу
Qualcomm 533
це) для непродолжительного отды- визы H-1B оформляет работодатель.
ха и вспоминают о ней только при по- Самостоятельно подать прошение на- Yahoo 347

пытке трудоустройства. Впрочем, про- нимаемый работник не может. Сле- Hewlett-Packard 333
цедура выдачи виз упрощена до пре- довательно, работодателя необходи- Google 328
дела (достаточно иметь заграничный мо искать, находясь в России или лю-
паспорт и не быть носителем зараз- бой другой стране с облегченным ви- трудоустройству в обмен на опреде-
ных заболеваний), лимиты, если та- зовым режимом. И этот работодатель ленный процент от зарплаты (иногда
ковые и обозначены, обычно никогда должен быть настолько заинтересован очень даже значительный). Для мно-
не выжимаются досуха, а срок оформ- в вашей персоне, чтобы заняться нуд- гих программистов – это практически
ления виз позволяет паковать чемода- ной юридической волокитой. единственный путь, однако… минусов
ны прямо сейчас. В самом деле снача- И чем же этих буржуев можно за- у него столько, что тут не статью нуж-
ла летим в Малайзию как туристы, там интересовать? Либо теми знаниями/ но писать, а целую монографию, так
решаем все вопросы с работодателем, навыками, в которых они нуждают- что вдаваться в подробности мы не бу-
после чего оформляем рабочую визу ся и, будучи не в состоянии удовлет- дем. Зачем нагонять негатив, когда его
(для получения которой, впрочем, при- ворить свою нужду на месте, согла- и без того хватает?!
дется временно вернуться в свою род- шаются принять специалиста из Рос- Вторым (и основным) недостатком
ную страну). сии, а иногда не просто соглашают- виз H-1B являются жестокие квоты, ог-
Но вот США – совсем другое дело. ся, но и предлагают любые условия. раничивающие число желающих, при-
С визами там полный кошмар. Хотя их Но чаще всего интерес обусловлива- чем за последние два года число же-
тоже можно понять. Открой границы – ется экономическим фактором. Рус- лающих превысило квоты в первый
и на следующий день на одного амери- скому программисту можно практи- же день подачи заявлений (по тради-
канца будет приходиться по меньшей чески ничего не платить, выжимая из ции начинающийся с 1 апреля, в день
мере сотня чужестранцев. Количество него все соки, заставляя человека ра- смеха), и потому пришлось проводить
желающих работать на звездно-поло- ботать буквально на износ, подрывая лотерею. Кому-то повезло, а кому-то
сатый флаг с каждым годом все рас- здоровье, так что после трех лет ра- нет. И хотя есть надежды на измене-
тет, а вот квоты на визы не увеличива- боты он с полным психическим и фи- ние ситуации, на данный момент въезд
ются. Кстати, о визах. зическим истощением, расшатанны- в США по визе H-1B совершенно бес-
Самая популярная виза – H-1B, вы- ми нервами становится отработан- перспективен, т.к. независимо от мо-
даваемая носителям специальных зна- ным жмыхом и выдворяется в Россию, мента подачи прошения на выдачу ви-
ний (например, программистам) с пра- где вместо поиска работы ищет сана- зы придется ждать 1 апреля, а потом
вом работы в США на срок до трех лет торий. Есть ли смысл «валить» в Шта- (если счастливый билет выпал кому-
(с возможностью продления до шести). ты только затем, чтобы отдать им все, то другому) держать вакансию откры-
Желательным (но не обязательным!) что ты имеешь, не получив ничего вза- той целый год без всякой гарантии,
требованием является наличие выс- мен?! Хорошую работу и здесь мож- что «не повезло в первый раз – пове-
шего образования, соответствующе- но найти… зет в другой». И какой же работода-
го как минимум степени бакалавра. Ес- Итак, первая большая проблема тель будет держать вакансию все это
ли же высшего образования нет, при- виз H-1B – необходимость подтверж- время? Ну Secunia (и подобные ей), мо-
дется доказывать наличие знаний тем дения своих навыков и поиски рабо- жет, и будут, т.к. все равно официально
или иным образом (например, участи- тодателя, заинтересованного в них. открытых вакансий у них нет и они ло-
ем в известных проектах). Кстати, на- Кажется, при отсутствии знаний де- вят всех специалистов, попавших в по-
ши дипломы (даже «международного» ло – труба, но при большом желании ле зрения, но какой специалист (а мы
образца) все равно необходимо заве- поработать на дядю Сэма можно от- говорим о специалистах) будет коро-
рять, так что отсутствие «корочки» – правиться в бодишоп (body-shop – до- тать годы в ожидании визы?! Амери-
не преграда. словно «магазин тел»), но не чтобы со- ка это, конечно, круто, но кушать хо-
Естественно, коль скоро речь вершить покупку, а… продать самого чется даже по ночам. Ладно, устраи-
зашла о «специа льных знаниях» себя. В рабство. Владелец бодишопа ваемся на временную работу в Рос-
(цитирую официальный документ: берет на себя все заботы по вашему сии (или другой стране, где с визами

№5, май 2008 83


из личного опыта
Таблица 2. TOP10 учебных заведений чить грин-карту, которую дают далеко Из двух вариантов, приемлемых
и количество виз H-1B, полученных
ими в 2006 году (по данным не всем, или же выиграть «настоящую» для меня (O-1 и L-1B), последний выгля-
http://en.wikipedia.org/wiki/H-1B) визу H-1B в очередной лотерее, устро- дит намного более соблазнительным.
ившись в коммерческую фирму. Фирма имеет филиал в Азии, к которой
Заведение Количество виз H-1B,
полученных в 2006 году Второй (нечестный) путь обхода. автор этих строк весьма неравнодушен
University of Michigan 437 Устраиваемся на удаленную работу. и совсем не против, выражаясь образ-
University of Illinois 434
Формально устраиваемся, чтобы фир- ным языком, «потусоваться» там неко-
ма могла объяснить, за что вам платят торое время, расширив сознание свое-
University of Pennsylvania 432
зарплату, а реально вы будете рабо- го жизненного опыта и получив массу
Johns Hopkins University 432
School of Medicine тать по туристической визе, которая впечатлений. С другой стороны, иссле-
University of Maryland 404
не запрещает находиться на террито- довательский центр находится в Сан-
рии коммерческих фирм. А находиться Франциско, и компания весьма заин-
Columbia University 355
там все равно придется, поскольку да- тересована в моем скорейшем появ-
Yale University 316
леко не всю работу можно выполнить лении. Как говорится, время – деньги,
Harvard University 308 удаленно. Выносить исходные тексты а в азиатском филиале для меня заня-
Stanford University 279 за пределы фирмы – да кто это раз- тие все равно не найти…
University of Pittsburgh 275 решит?! Конечно, работа по туристи- Впрочем, решением обозначенных
ческой визе – махинация, граничащая вопросов главным образом занимает-
все не так жестоко) и… надолго зави- с нарушением закона, но все-таки ос- ся наниматель, а нанимаемому остает-
саем там, ибо, как говорят философы: тающаяся в его рамках. Естественно, ся только ждать (с правом настаивать
ничто так не постоянно, как времен- крупные фирмы в такие игры не игра- на том или другом варианте, но вот бу-
ное. Проработав год-другой на одном ют, а мелкие (испытывающие острую дет ли его голос принят во внимание
месте, так уж захочется вновь играть нужду в опытных сотрудниках) могут или нет – сложно сказать).
в лотерею?! разориться прежде, чем успеют рас- Информацию об остальных визах
Впрочем, ограничение на квоту платиться, или банально «кинут», пос- можно почерпнуть с официального
можно обойти двумя путями. Первое кольку судиться вы все равно не смо- сайта: http://travel.state.gov/visa/temp/
(самое честное). Устроиться в органи- жете, а у них нет репутации, которую types/types_1271.html.
зацию, на которую квоты не распро- можно запятнать.
страняются и к которым главным об- Кроме визы H-1B еще есть визы Табель о рангах,
разом относятся научно-исследова- O‑1, предназначенные для людей, об- или Цветовая
тельские институты и некоммерческие ладающих экстраординарными спо- дифференциация штанов
организации. Касательно институтов – собностями. Нобелевские лауреаты, Слово «программист» в качестве ука-
туда, понятное дело, берут в основном например, или звезды мировой эст- зателя профессии прижилось толь-
научных сотрудников различных степе- рады. Или… писатели. В самом деле, ко в русском языке. В цивилизован-
ней «тяжести», и простые программис- имея признанные публикации в специ- ном мире принято указывать, кто есть
ты (особенно без диплома) могут уст- ализированных областях, вполне ре- кто и чем он собирается заниматься.
роиться разве через прочные дружес- ально претендовать на получение ви- В грубом приближении «программист-
кие или родственные связи. зы O-1. О квотах (в силу ограниченного ские» должности укладываются в сле-
Некоммерческих организаций количества экстраординарных людей) дующую лестницу: Intern/Trainee →
в США столько, что… а скольким тут, понятное дело, речь не идет. Junior Engineer → Engineer → Senior
из них требуются программисты?! Да- А еще варианты есть?! Если вы Enginee → Expert/Architect.
же если организация не занимается не играете в азартные игры и не обла- Что конкретно она означает?
разработкой очередного клона Linux, даете мировой известностью, самый На вершине находятся эксперты (час-
то ей явно требуется кто-то, кто мо- простой путь – трансфер в США по ви- то независимые) и архитекторы. Экс-
жет «нарисовать» сайт, а современ- зе L-1B, выдаваемой тем, кто за пос- перт – понятие растяжимое. Это может
ные сайты, как известно, представляют ледние три года отработал по мень- быть, например, «гуру по C++», знаю-
собой грандиозные сооружения и лег- шей мере 365 дней в филиале фир- щий все его особенности, консульти-
че нанять «русского туземца», чем по- мы, имеющей штаб-квартиру в США, рующий сотрудников и составляющий
купать готовый «темплейт», выклады- или же материнской фирме, имеющей рекомендации по стилю программиро-
вая за него чемодан денег, а потом еще дочернее подразделение в штатах. По- вания, которых должны придерживать-
один – за «заточку» сайта под профиль нятное дело, что для программистов ся кодеры и программисты. Эксперт
фирмы. Но некоммерческая организа- первый вариант наиболее предпочти- не просто владеет языком. Он превос-
ция потому и называется некоммер- телен. Сейчас, в эпоху рассвета аут- ходно знает Стандарт и все (или боль-
ческой (non-profit, т.е. не приносящей сортинга, практически каждая более шинство) нестандартные расширения
прибыли), что балансирует на грани или менее крупная фирма имеет сеть и особенности реализации тех или
самоокупаемости, что естественным филиалов в Азии, Индии (т.е. стра- иных языковых возможностей в кон-
образом отражается на уровне за- нах с облеченным визовым режимом). кретных компиляторах, что позволя-
рплат, а сменить место работы нель- Отдельные филиалы есть в России ет ему оградить программистов от ис-
зя. Для этого необходимо либо полу- и на Украине. пользования потенциально опасных

84
из личного опыта
конструкций, превратно понимаемых то на камне, и тут все зависит от спе- строгая субординация и необходимо
некоторыми компиляторами или во- цифики конкретной фирмы, но в об- пройти всю эту лестницу от начала
обще никак не понимаемых. щем случае, работа Engineer предпо- до конца, ничем не обоснованы.
Архитектор проектирует весь про- лагает меньшую ответственность и на- Во-первых, как уже говорилось,
ект или какую-то его часть. Например, дежду на получение четко формали- иностранных специалистов (именно
если фирма разрабатывает брандма- зованной задачи, впрочем, без углуб- специалистов, а не дешевую рабочую
уэр, то тут нужны, как минимум, один ления в технические детали, которые силу) нанимают на должность от Senior
архитектор и три эксперта – первый Engineer должен решать сам (на то он Engineer и выше. Во-вторых, если че-
знает все сетевые протоколы, второй – и инженер), т.е. Engineer находится на- ловек от природы кодер (кодит с оше-
все типы удаленных атак, третий – все- много ближе к кодеру, чем к програм- ломляющей скоростью и при этом без
возможные локальные атаки на бран- мисту и во многих случаях действи- ошибок, но не может решить задачу,
дмауэр со стороны зловредных прило- тельно является кодером. пока ему не скажешь, как), то на долж-
жений. Естественно, все три эксперта Junior Engineer и особенно Intern/ ности Senior Engineer ему просто нече-
(вместе с архитектором) могут соче- Trainee – однозначно не программист- го делать.
таться в одном лице, но такое быва- ские должности, это чистые кодеры. А вот архитектор или эксперт по бе-
ет редко и не слишком-то приветству- Иногда приходится слышать, что, де- зопасности может вообще не уметь
ется, поскольку локальные и удален- скать, Junior Engineer – «инженер с программировать и программу «hello,
ные атаки слишком различны по сво- испытательным сроком». Ничего по- world» писать в обнимку со справоч-
ей природе. добного! Испытательный срок, конеч- ником. Но кого это волнует?! Эти лю-
Понятное дело, что архитекторы – но, никто не отменял, но если вас бе- ди решают совсем другие пробле-
это выдающиеся конструкторы, име- рут как Senior Engineer, то и испыты- мы. Далеко не все кодеры становят-
ющие богатый практический опыт вать будут соответствующим обра- ся инженерами, и карьерный рост тут
и до 35 лет соваться на эту должность… зом. А на должность юниора иностран- ни при чем. У каждой профессии за-
только людей смешить. Хотя фор- ца могут взять только разве что из со- пах особый, и должности всякие важ-
мальных ограничений по возрасту нет, страдания к русскому народу, при уст- ны и нужны!
и в небольших фирмах архитектором ройстве через бодишоп или из-за хро-
может быть и 25-летний юнец. С экс- нической нехватки кадров. Все три слу- Резюме, интервью
пертами в этом смысле все намного чая указывают на отвратительный ме- и все‑все‑все
проще, поскольку, в отличие от архи- неджмент, и потому пользоваться ими Прежде чем писать свое резюме, ра-
текторов, им достаточно владеть уз- категорически не рекомендуется. Слу- зумно почитать чужие, которые в наши
кой предметной областью, но владеть хи, что в больших компаниях очень дни можно встретить на любом сайте
ей очень хорошо.
Senior Engineer – это тот же архи- Таблица 3. TOP20 компаний и количество полученных виз L-1B в 2006 году
(по данным http://en.wikipedia.org/wiki/L-1_visa)
тектор только рангом пониже. Ему да-
ют задачу без объяснения, как ее ре- Компания Штаб-квартира Основной Количество полученных
шать. Естественно, «решать» не как дочерний филиал виз L‑1 в 2006 году

в институте. Тут можно не только спра- Tata Mumbai, India India 4887
вочники, библиотеки сторонних разра- Cognizant Technology Solutions New Jersey India 3520
ботчиков, но и целые институты под- IBM Armonk, New York USA 1237
ключить. Теоретически. А практичес- Satyam Hyderabad, India India 950
ки, имеются такие понятия, как бюд-
Wipro Bangalore, India India 839
жет и запрет на использование чужих
Hindustan Computers Ltd. (HCL) Noida, India India 511
продуктов, которые проще и надежнее
Deloitte & Touche LLP New York, New York USA 512
написать самостоятельнее, чем купить.
В принципе, большинство работодате- Patni Computer Systems Mumbai, India India 440

лей, ищущих программистов за пре- Intel Corporation Santa Clara, California USA 394
делами своей страны, ищут именно Kanbay Chicago, Pune, Hyderabad, India 329
and Chennai
Senior Engineer, экспертов и архитекто-
ров. Простых Engineer хватает в Индии, Honeywell International Morristown, New Jersey USA 320

Азии, да и на местах их немало. То есть, Hewlett Packard Palo Alto, California USA 316
если вас спросят, на что вы претендуе- Infosys Bangalore, India India 294
те, называйте по меньшей мере Senior Accenture Hamilton, Bermuda ??? 291
Engineer, впрочем, могут и не спросить, Caritor San Ramon, California India 231
а все решить за вас, по итогам собесе-
Schlumberger Technology Corp Netherlands Antilles? 214
дования/интервью.
Oracle Corporation Redwood Shores, California USA 176
Если же работодатель предлагает
Syntel Troy, Michigan India 171
должность простого Engineer, то это ни-
чего не значит! Различие между прос- PricewaterhouseCoopers New York, New York USA 168

тым Engineer и Senior Engineer не выби- Microsoft Redmond, Washington USA 169

№5, май 2008 85


из личного опыта
зе «I was born» (естественно, в резю-
Здесь Русь, здесь русским данием «ничего не делать». Зарплата вы- ме такое вообще не встречается, а сра-
духом пахнет! плачивалась регулярно, но недолго – че- зу указывается возраст, – если его хо-
Мне дают зарплату за то, что хожу
рез пару месяцев человек слег в больни- чется указать).
на работу.  Если еще и работаю, то премию. цу с нервным расстройством. Оплачива- Другие странные личности авто-
(c) Юрий Никитин ли ли ему больничный и должны ли были, ритетно заявляют, что американцы
И какой русский человек не любит обсуж- по японским законам – этого я не знаю. – не любят слова «to participate» и, де-
дать законы, которые он не читал, читать не Прим. ред.) скать, лучший вариант перевода «при-
собирается, но совершенно уверен, что за- Конечно, если фирма выплачивает со- нимал участие [в проекте]» это «to take
коны написаны так, как ему это кажется, труднику минимальный оклад плюс про- /to have/part in smth». Интересно, с че-
исходя из логики, здравого смысла и веры цент от продаж, то теоретически у него со- го бы это американцам не любить
в справедливость. Между тем купить КЗоТ здается мотивация работать хорошо и ко- «participate», если его можно встретить
(или взять электронную версию в Интерне- дить с утра до полуночи, потому как – не бу- даже в титрах американских фильмов –
те) однозначно стоит, потому как, почитав дет продукта, не будет продаж, не будет в смысле «при участии студии такой-
обозначенный документ, стандарты на язы- и денег, но практически такая схема рабо- то». Другой вопрос, что понятие «при-
ки программирования (написанные на бур- тает только в небольших фирмах, а по ме- нимал участие» слишком растяжимое.
жуйском языке) можно прямиком отправ- ре роста штатов дает сбой, ибо оценить Автор этих строк вполне может сказать,
лять в топку – за ненадобностью. вклад каждого сотрудника в общее де- что принимал участие в огромном ко-
Краткий ликбез. Уволить человека, ло, назначив ему соответствующий про- личестве проектов, включая Windows.
знающего законы и умеющего отстаивать цент, нереально сложно, да и плевал он И это правда. Была у меня переписка
свои права, намного дороже, чем терпеть на фирму и на этот процент. Маленький с одним парнем из Microsoft, в кото-
его присутствие на работе и платить за- винтик большой машины никак не влияет рой мы обсуждали загрузчик PE‑фай-
рплату (вместе с премией) за имитацию на объемы продаж. Какая разница, сколь- лов и его глюки, часть из которых бы-
бурной деятельности или даже за отсутс- ко строк кода он напишет за день и сколь- ла найдена им, часть – мной, в резуль-
твие таковой. Если не брать в расчет уп- ко багов уйдет в релиз?! Успех всего ме- тате чего составленный общими уси-
равленческий персонал, то рядовые коде- роприятия в целом зависит в первую оче- лиями баг-репорт был передан в нуж-
ры вообще ни за что не отвечают. Вот и пус- редь от бригады маркетинга, везения и ре- ный отдел, а мне в качестве награ-
кай кодят как умеют, а работает ли про- акции конкурентов. ды возвращен крохотный участок ис-
грамма или нет – за это у руководства го- Другими словами, в России есть реаль- ходного кода, где исправлена одна из
лова болит. Штрафовать за ошибки в коде ная возможность ходить на работу только ошибок и упомянуто мое имя, точнее,
или срыв плана КЗоТ не позволяет. Мож- затем, чтобы слушать музыку (в наушни- ник. Ну и в чем моя заслуга? Ошибки
но, правда, лишить премии, но! Это необхо- ках, конечно) и лениво водить пальцами в Windows обнаруживаются регулярно.
димо обосновать с учетом кучи подзакон- по клавиатуре. И получать за это зарпла- Особенно много их вылавливают раз-
ных актов. Кодер всегда может сослать- ту. Пусть только попробуют не платить или работчики линкеров, упаковщиков ис-
ся на плохое руководство, отсутствие чет- (страшно сказать) выгнать с работы. Им же полняемых файлов, создатели вирусов
кой постановки задачи и т. д. А знаете ли самим дороже выйдет. и т. д. Дает ли это им право/чувство со-
вы, что за увольнение беременной жен- А вот «свалив» за рубеж, там… ага! причастности? Естественно, нет. И по-
щины в Уголовном кодексе предусмот- Правильно! Там наш КЗоТ отдыхает, тому слова «принимал участие» в ка-
рена специальная статья? Руководители и приходится работать, вкалывая по пол- кую форму их ни облеки – это просто
фирм до сих пор на свободе только пото- ной программе, кодируя за троих, а полу- информационный мусор. Если прини-
му, что большинство наших граждан зако- чая за одного без всякой правовой под- мал – конкретизируй!
нов не читали, а свои права отставить в су- держки со стороны государства, позво- Личные местоимения. Английский
де не приучены. О господи, ну где же их лившего вам приехать в «их» страну толь- ими вообще грешит, и начинающие пе-
манеры? (Зачем увольнять человека, ког- ко затем, чтобы улучшить положение сво- реводчики макула… простите, лите-
да можно создать ему такие условия, что- их рабочих и бизнесменов, а потому наде- ратуры рождают перлы типа «он вы-
бы он ушел «по собственному»? Известен яться, что «там» вас ждет райская жизнь, тащил из своего кармана…». Ага, бы-
случай с японским концерном, который, право, не стоит, а то с разочарования мож- ло бы очень странно, если бы он что-то
получив от суда требование восстановить но и с моста сигануть, до конца жизни рас- вытащил из чужого. Но в английском
уволенного на работе, взял и посадил его плачиваясь с бригадой спасателей и вра- личные местоимения играют пример-
в будку у входа на завод со служебным за- чей из «скорой помощи». но ту же роль, что синонимы в русском
языке – когда не знаем, как правиль-
по трудоустройству. Там же обычно ле- га, изобилие которого в английском но пишется такое-то слово, использу-
жат и статьи, написанные, по всей ви- языке действительно выглядит проти- ем синоним. В английском же артик-
димости, теми, кто только и занимает- воестественно и напрягает читателя, ли представляют проблему не только
ся, что пишет резюме, но так и не мо- которому легче отправить такое ре- для тех, кто знает его со словарем, но и
жет написать то единственное, что дой- зюме в корзину, чем насиловать моз- для самих носителей языка, и потому,
дет до цели и подействует. ги. Однако не стоит бросаться и в дру- чтобы не напрягать корректора, лучше
Кто-то настоятельно рекомендует гую крайность. Попробуйте избавить- избавиться от них, используя личные
отказаться от страдательного зало- ся от страдательного залога во фра- местоимения, которые в контексте ан-

86
из личного опыта
глийского языка смотрятся вполне ес- мог быть успех, когда длинная колон- тать человек, чтобы решить, каким об-
тественно, а вот обилие «Я» в резюме ка «education» со списком кучи учеб- разом его выгоднее всего использо-
раздражает. Вот на этот случай и су- ных заведений и курсов по сертифика- вать. Лично мне (как уже говорилось
ществуют редуцированные (т.е. сокра- ции ужалась до лаконичного «have no выше) предложили писать скрипты/
щенные) формы и вместо «I have more one». (Кстати, несмотря на успех при- плагины для IDA-Pro, что не требует
than 15 years of software engineering and ложения, едва ли я бы стал рекомендо- глубоких знаний C++ и прочих техно-
reverse engineering experience…» пи- вать такой способ другим. Читать-пи- логий программирования, зато требу-
шите просто «Over 15 years of software сать же вас научили, и, судя по всему, ет знания самой IDA-Pro. И как раз та-
engineering…», а вместо «I was working неплохо. Вот и пишите честно: средняя ких специалистов фирме и не хватает.
for…» просто «Working for», поскольку школа номер №1 с. Малая родина, зо- А по Java, высшей математике и крип-
было бы странно, если бы вы в своем лотая медаль. – Прим. ред.) тографии у них уже имеется полностью
резюме описывали кого-то еще. Каково же было мое удивление, укомплектованный штат, свободных
И самый главный совет. Не пишите когда Senior Recruiter возвратил мне вакансий нет и в обозримом будущем
резюме! Обычно работодатели на сай- существенно переработанный вари- не предвидится. Так что попытка пре-
тах в разделе «Careers» и в постах на ант резюме, полностью переформа- тендовать на владение высшей мате-
специализированных форумах дают тированный и уже не содержащий ни- матикой никак бы не изменила статус-
контактный адрес Senior Recruiter или каких ссылок ни на образование, ни кво (все равно мне предложили бы
другого лица, отвечающего за подбор на что другое, чего у меня нет, и пе- обслуживать IDA-Pro), зато первая же
кадров. Senior Recruiter – это человек, речисляющий только то, что есть. Го- проверка моих «знаний» математики
а не машина, и потому первое письмо ворит, что вот слегка (это он называ- вылилась бы в вопрос «а IDA-Pro вы
можно писать в форме, не имеющей с ет слегка!) исправленный и улучшен- тоже так хорошо знаете?!»
резюме ничего общего. Вот только пу- ный вариант, высланный вам на одоб- И вот телефонное интервью. Про-
гать его не надо. В смысле говорить, рение и утверждение. Мораль: не за- блема в том, что я как Му-Му. Все по-
что вы из России. У меня, например, это нимайтесь чепухой и предоставьте пи- нимаю, но ничего не говорю. Английс-
прозвучало в десятом по счету пись- сать резюме профессионалам. В конце кий со слуха – это у меня без проблем.
ме, когда моей персоной уже заинте- концов это их работа, они умеют ее де- Фильмы без перевода, интернет-ра-
ресовались, но при всей тактичности лать и делают намного лучше тех, кто дио – все это давно пройденный этап.
делового человека Senior Recruiter так пишет резюме от случая к случаю или Но одно дело – знать, как произносят-
и не смог скрыть своей растеряннос- не пишет вообще. ся слова, и совсем другое – уметь их
ти и еще письма три переспрашивал: Но самое интересное впереди. На- произносить. Мы общались с полчаса,
а точно ли из России? Это не шутка?! чали меня спрашивать за языки. А вот обсуждая самые различные и неожи-
Но вообще-то я не лукавил. Письма от- с языками у меня еще хуже, чем с об- данные аспекты: от форматов CD/DVD
правлял со своего домашнего почтово- разованием. Сказал, что знаю только и отличий MPEG-1/MPEG-2/MPEG-4,
го сервера с доменным именем, окан- C и x86-asm (хотя на самом деле, более до виртуальных машин, обфускаторов,
чивающимся на .ru, плюс мой английс- или менее сносно изъясняюсь на C++, особенностей написания драйверов
кий. До сих пор удивляюсь, как он при- Delphi, Perl, начал учить Python и C# под Windows, Linux, BSD и т. д. Свое-
нял меня за американца. А еще кто-то и уже вовсю программирую на них, но… го собеседника я понимал без проб-
говорит, что моим английским только одно дело программировать, исполь- лем, но вот он меня (как выяснилось
пионеров пугать. зуя некоторое подмножество освоен- из дальнейшей переписки), не то что-
Ладно, не в этом дело. Перепис- ных языковых возможностей, а дру- бы совсем не понимал… скорее просто
ка, конечно, хорошее дело, но долж- гое – знать весь язык целиком). Были догадывался, разбирая только отдель-
но быть и резюме. А как его писать?! и другие вопросы, на которые прихо- ные слова и ключевые термины.
Честно говорю Senior Recruiter, что, вы, дилось отвечать: нет, не знаю, не стал- Вывод: не стоит бояться, что вас не
наверное, будете смеяться, но резюме кивался, первый раз слышу, ой, а это поймут или «приговорят» за плохой ан-
никогда не писал и даже не представ- мне реально не по зубам. глийский без суда и следствия (хуже
ляю, как оно должно выглядеть. Про- И что же – по результатам собеседо- своего разговорного английского я ни-
шу дать образец. Дает! Читаю… Серд- вания мне назначают интервью по те- чего представить не могу). Если в че-
це ойкает. Не то! Резюме на 90% состо- лефону с конкретным специалистом, ловеке заинтересованы – все будет ОК.
ит из перечисления предыдущих мест причем довольно крупным специалис- К тому же, как выяснилось, интервью
работы, всяких наград и призов еще том, если даже не сказать широко из- проводится вовсе не для проверки зна-
со времен школьных олимпиад. Мне же вестным (кстати, заочно мы были зна- ний, и оно совсем не похоже на экза-
особо и похвастаться нечем, особенно комы – я исследовал его разработки, мен. Вопросов по существу так и не за-
с учетом того, что большинство проек- а он читал мои книги). Разве не логич- дали, позже объяснив это тем, что го-
тов проходили под NDA, включающим но, что после ~90% негативных отве- раздо важнее определить, как себя ве-
в себя запрет на разглашение самого тов меня следовало похоронить, зако- дет собеседник – погружается ли в глу-
факта проведения такого проекта дан- пав в землю на три метра. Так ведь нет! бокую задумчивость, начинает ли ле-
ной фирмой. В общем, тупик. Напи- Вопросы задавались вовсе не для то- петать: нам такое не задавали, мы та-
сал свой вариант и отослал безо вся- го, чтобы «завалить», а просто выяс- кое не проходили или же не позволяет
кой надежды на успех. Да и какой там нить области, в которых может рабо- застать себя врасплох.

№5, май 2008 87


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

Хакеры: история субкультуры


Часть вторая

Илья Александров
Технологии развивались. Хакеры старой школы с монстрообразными ЭВМ и безумно дорогим
машинным временем оставались в прошлом. Компьютеры становились доступнее, а хакерами
стали называть совсем других, нежели раньше, людей…

Восьмидесятые. днем. Взлом был обнаружен сотруд- Holland). Члены «Хаоса» заявляли,
Электронные журналы никами компании только спустя не- что занимаются изучением компьютер-
и хакерские группы сколько дней. ной безопасности ради знаний и кри-
1981 год. Хакер «Captain Zap», в миру Начинается эпоха зарождения тиковали тех, кто взламывает систе-
известный как Иан Мерфи (Ian Murphy), групп компьютерных энтузиастов, ха- мы во вред пользователям.
взламывает компьютерную сеть теле- керских команд. Одной из самых из- В сети Техасского университета
фонной компании AT&T. Теперь звон- вестных стала немецкая «Computer появляется первая (или якобы пер-
ки днем тарифицируются как ночные, Club Chaos», которую основал про- вая) вредоносная программа, вирус.
а разговоры ночью оплачиваются как граммист из Гамбурга Ву Холланд (Wau К катастрофе систему он не приводил,

88
ретроспектива
лишь отвлекал пользователя тексто- мен Symbolics.com как предвестник были признаны виновными за взлом
вым сообщением, выводившимся в ко- интернет-бума. компьютерных систем государствен-
мандной строке. Первые вирусы и уголовные про- ных компаний. Следствие утверждало,
1982 год. Шестеро американских цессы. что полученные данные хакеры прода-
несовершеннолетних компьютерщи- 1986 год. После нашумевших взло- вали сотрудникам КГБ СССР. Обвине-
ков, обозначив себя «группой 414», мов к хакерам перестали относиться ние базировалась на показаниях Ган-
взламывают несколько десятков ком- просто как к компьютерным хулига- са Хьюбнера (Hans Huebner), члена ха-
пьютерных сетей. В том числе в уни- нам, теперь они преступники. В США керской группировки, признавшегося
верситете Беркли, в научных лабора- выходит «Закон о мошенничестве с ис- в содеянном.
ториях и медицинских центрах. Ника- пользованием компьютеров», предус- Знаменитая операция американс-
кого вреда они не нанесли, но факт матривающий наказание за электрон- ких спецслужб «Sundevil». Операция
проникновения получил огласку, и сло- ные взломы. была направлена на выявление ха-
во «хакер» впервые появилось на пер- Первая вирусная эпидемия. Пора- керских сообществ. В итоге были изъ-
вых полосах газет. До уголовных пре- жающий загрузочные секторы дискет яты несколько десятков компьютеров,
следований за взломы сетей было вирус «The Brain» распространился закрыты хакерские доски объявле-
еще далеко. по всему миру. Его создали два про- ний, многие арестованы. Некоторые
Ричард Столлман (Richard Stallman) граммиста из Пакистана в исследова- известные компьютерные взломщики
начинает разработку одной из версий тельских целях. Вирус изменял метки прекратили свою деятельность. В от-
операционной системы UNIX. дискет на «(с) Brain. вет на этот рейд была создана право-
1983 год. Год запомнился выходом 1987 год. Первый сбор хакеров в защитная организация, занимающа-
на экраны кинокартины «Wargames». оффлайне. Мероприятие «SummerCon» яся делами в области компьютерных
Фильм рассказывал о юном вундер- посетило около двадцати специалис- преступлений.
кинде, легко обходящем защиту любых тов. Вошедшая в историю фрикерс-
компьютерных систем. По сюжету пос- Набирает рост движение крэке- кая выходка Кевина Поулсена (Kevin
ле одного из его взломов едва не на- ров – взломщиков лицензионного про- Paulsen) и Рона Остина (Ron Austin). Они
чался военный конфликт с использо- граммного обеспечения. Появляется получили контроль над АТС и поучас-
ванием ядерного оружия. Фильм вы- электронный журнал «Decoder». твовали в радиоконкурсе. Сто второ-
звал рост интереса молодежи к ком- 1988 год. Первый приговор. Герберт му дозвонившемуся обещали новень-
пьютерным технологиям. Зин (Herbet Xeen) приговорен к 9 ме- кий автомобиль «Porshe». Естественно,
1984 год . Энд рю Таненебаум сяцам лишения свободы за взлом сто вторым оказался Кевин. Афера рас-
(Andrew Tanenbaum) выпускает пер- компьютеров Министерства оборо- крылась, Поулсена ждал суд.
вую версию ОС Minix, которая впос- ны США.
ледствии окажет огромное влияние на Арманд Мур (Armand Moore) полу- Эпоха Интернета
развитие свободного ПО. чает доступ к компьютерной систе- 1991 год. Линус Торвальдс (Linus
Эммануил Гольдштейн (Emmanuel ме банка Чикаго. Попытка перевести Torvalds) выпускает первую версию
Goldstein) основывает электронный ха- на свой счет в Швейцарии 70 милли- Linux.
керский журнал «2600». Фрикинг, безо- онов долларов закончилась плачевно – Тим Бернерс-Ли (Tim Berners-Lee)
пасность, программирование. «2600» деньги остались в банке, а Мур отпра- начинает разработку гипертекстового
будет лучшим хакерским электронным вился в тюрьму. Интернета – World Wide Web.
изданием. Эпидемия «червя Моррисона». Со- Фил Циммерман (Phil Zimmerman)
В этом году объявлено о созда- зданный по ошибке программиста, представляет публики PGP – самый
нии еще двух хакерских группиро- червь временно приостановил рабо- совершенный криптографический инс-
вок – «Legion of doom» и «Cult of dead ту ARPAnet. трумент для защиты данных.
cow». «Legion» стала самой легендар- 1989 год. Основана хакерская груп- 1992 год. Появление первых конс-
ной и многочисленной хакерской груп- па «Masters of Deception», бросившая трукторов вирусов VCL и PS-MPC. Те-
пой восьмидесятых, а «Cult of…» про- вызов «Legion of Doom». Хакеры обеих перь вредоносный код мог создать лю-
славились созданием многочисленных команд совершают ряд громких взло- бой школьник.
security-программ, самой известной мов, выясняя, кто сильнее. Борьба ин- 1993 год. На свет появляется
из которых стала программа удаленно- теллекта закончилась предсказуемо – Mosaic 1.0, выпущенный центром разра-
го администрирования «Back Orifice». активисты «MoD» были арестованы. ботки для суперкомпьютеров. Первый
1985 год. Выходит «Phrack». Еще The Mentor публикует во «Phrack» веб-браузер, прародитель NetScape.
один электронный журнал по безо- так называемый Манифест Хакера. Па- П а т р и к Ф о л к е р д и н г ( Pa t r i c k
пасности. Как принято говорить, «must фосный документ пропитан хакерской Volkerding) создает свой дистрибутив
read» для администратора. этикой и юношеским романтизмом, но, Linux – Slackware. На основе кода 386
Microsoft завершает эпоху DOS как бы там ни было, «манифест» полу- BSD-разработчики пишут первую вер-
и выпускает релиз Windows 1.0. Пока чает большую известность. сию FreeBSD.
это все тот же DOS, но с графическим 1990 год. Громкий процесс в Гер- Проходит конференция специа-
интерфейсом. мании. Питер Карл (Peter Karl), Маркус листов в области компьютерной безо-
Первый зарегистрированный до- Хесс (Markus Hess), Карл Кох (Karl Cox) пасности DefCon. С тех пор она про-

№5, май 2008 89


ретроспектива
водится ежегодно и считается самой ки пользователей были засыпаны ты- Microsoft – хакеры продолжают исполь-
авторитетной среди хакеров и анти- сячами однообразных писем. зовать набирающую популярность тех-
хакеров. Появляется первый вирус для нологию DDOS-атак.
1994 год. Дело Кевина Митника Linux – Linux.Bliss. Еще одна вирусная эпидемия, они
(Kevin Mitnick). Кевин прославился сна- Ян Голдберг (Ian Goldberg) лома- теперь идут одна за другой. На этот раз
чала взломом телефонных, а потом ет 40-битный security-код компании электронная зараза носила имя извес-
и компьютерных сетей. Вопреки рас- RSA Data Security. Слово «криптогра- тной теннисистки Анны Курниковой.
пространенному мнению, компьютер- фия» становится модным, а в защиту Процесс против российского про-
ным гением Кевин не был – чаще все- информации инвестируются все боль- граммиста Дмитрия Склярова. Он вы-
го при взломах он использовал чело- шие деньги. ехал в Америку по приглашению, что-
веческий фактор, так называемую со- Хакер Fyodar пишет утилиту NMAP, бы выступить с лекцией об уязвимос-
циальную инженерию. В поимке Кеви- сканер уязвимостей. Программа стала ти защиты электронных книг в форма-
на Митника большую роль сыграл япон- культовой и даже засветилась в филь- те PDF. Склярова арестовали по иску
ский эксперт Цутому Шимомура, ком- ме «Матрица». компании Adobe. Дело вызвало огром-
пьютеры которого также подверглись 1998 год. Хакеров начинают нака- ный резонанс, тюрьмы программисту
взлому. Митник получил 5 лет, но стал зывать в Китае. Наказание за взлом избежать удалось, хотя все свои ра-
самым известным хакером в истории. сети банка – смертная казнь. боты в области изучения безопаснос-
Владимир Левин взламывает ком- В правительстве США обсуждают- ти формата PDF Скляров был вынуж-
пьютерную сеть «City-банк». Хакер ся проблемы компьютерной безопас- ден прекратить.
снял со счетов то ли 400000 долла- ности. В качестве экспертов выступали 2002-2003 годы. Российский сег-
ров, то ли и вовсе 10 миллионов – раз- члены хакерской группы The L0pht. мент Интернета задохнулся от спа-
ные источники называли разную циф- Используя ошибку в ОС Solaris, мерской атаки. Практически каждый
ру. Счета Левина замораживают, а са- израильский хакер Эхуд Таненбаум русский пользователь, имеющий ящик
мого хакера арестовывают в Лондо- (Echud Tanenbaum) проникает в ком- электронной почты, получил письмо
не при попытке обналичить украден- пьютерную сеть Пентагона. Дело по- от центра обучения американскому ан-
ные деньги. лучает огласку, а Эхуд – 6 месяцев глийскому, который становится просто
1995 год. Последняя эпоха фри- тюрьмы. притчей во языцех.
керов. Команда «Phonemasters» про- 1999 год . Йон Йохансен (Jon Вирусные эпидемии становят-
водит ряд взломов сетей AT&T, Bell, Johansen) из Норвегии разрабатыва- ся частью интернет-жизни. SoBig,
British Telecom и других. Несколько не- ет программу DeCSS, взламывающую MSBlast…
дель работа телефонных сетей в ря- защиту лицензионных DVD-дисков. Украден и выложен в свободный
де регионов была затруднена. За де- Эпидемия вируса Melissa. Макрови- доступ в Сеть исходный код компью-
ло взялось ФБР, и лидер группы полу- рус для MS-Word. После своего попа- терной игры Half-Life 2.
чил 5 лет тюрьмы. дания на компьютер он самостоятель-
Тео Де Раадт (Theo De Raadt) вы- но рассылал себя по первым пятидеся- Эпилог
ходит из числа разработчиков NetBSD ти e-mail, найденным в адресной кни- Хакерство – это уже субкультура.
и начинает свой проект. Он делает са- ге Outlook Express. Ущерб от вируса Со своей историей, со своими леген-
мую безопасную систему всех времен составил несколько десятков милли- дами и героями.
и народов – OpenBSD. онов долларов США. Его автор – Дэвид Когда-то это были просто фанатич-
Ха ке р К р и с Л э м п р ех т (C h r i s Смит (David Smith), 31-летний програм- ные студенты технических институтов,
Lamprecht) становится первым в ис- мист из Нью-Джерси, был осужден чья жизнь вертелась вокруг монитора
тории человеком, которому запреще- на 10 лет лишения свободы и штраф и клавиатуры. Потом, в век информа-
но пользоваться Интернетом. Крис за- в 400000 долларов. ционных технологий, с легкой руки таб-
нимался проникновением в сети част- лоидов хакерами назвали взломщиков
ных компаний и продажей украденной Новейшее время компьютерных сетей. Про них снима-
информации. 2000 год. Шестнадцатилетний ха- ли фильмы, писали книжки, слово «ха-
Компьютерному сообществу пред- кер из Канады, известный под ни- кер» стало модным и наделенным ка-
ставлен сверхбезопасный прото - ком Masterboy, устраивает DDOS-ата- ким-то мистическим смыслом. Что же,
кол передачи данных SSH (Secure ку на крупнейшие ресурсы Сети. Сре- пусть читатель сам решает, кто такие
Shell). А на прилавках появляется ди жертв оказались Amazon.com хакеры.
Windows 95… и CNN.com. Многочисленные запросы А они, в свою очередь, дальше бу-
19 9 6 год . Пе р в ы й в и рус д л я с целой сети компьютеров, подчинен- дут писать свою историю. Историю ха-
Windows 95 – он назывался Boza. Ко- ных хакеру с помощью троянского ко- керства.
личество вирусов в этот год выраста- ня, вывели серверы из строя.
ет в разы, а ленты безопасности пере- Запущен исследовательский про- При подготовке статьи использова-
полнены сообщениями о уязвимостях ект Honeynet Лэнса Спитцнера (Lance лись материалы с сайтов:
новой ОС от Microsoft. Spitzner), который стал одним из самых n En.wikipedia.org
1997 год. Хакерская атака на кли- авторитетных security-центров. n Bugtraq.ru
ентов провайдера America Online. Ящи- 2001 год. Два дня не доступен сайт n Viruslist.com

90
bugtraq

Переполнение буфера Обход ограничений безопасности


в Red Hat Directory Server в Gentoo Linux
Программа: Red Hat Directory Server 7.x, 8.x. Программа: Gentoo Linux 1.x.
Опасность: Средняя. Опасность: Средняя.
Описание: Уязвимость существует из-за ошибки провер- Описание: Уязвимость существует из-за того, что сцена-
ки границ данных в обработчике регулярных выражений. рий /etc/conf.d/firebird устанавливает переменную окруже-
Удаленный пользователь может с помощью специально ния ISC_PASSWORD при запуске Firebird. Удаленный поль-
сформированного регулярного выражения в LDAP-поиске зователь может, не указывая учетные данные, подключить-
вызвать переполнение буфера и выполнить произвольный ся к СУБД с привилегиями SYSDBA.
код на целевой системе. URL производителя: www.gentoo.org.
URL производителя: www.redhat.com/en_us/USA/home/ Решение: Установите исправление с сайта производителя.
solutions/directoryserver.
Решение: Установите исправление с сайта производителя. Обход ограничений безопасности
в IBM WebSphere Application Server
Уязвимость в реализации TCP/IP Программа: IBM WebSphere Application Server 5.0.2.
в Sun Solaris Опасность: Средняя.
Программа: Sun Solaris 8, 9, 10. Описание: Уязвимость существует из-за неизвестной
Опасность: Средняя. ошибки в Java-плагине. Удаленный пользователь может
Описание: Уязвимость существует из-за ошибки в реали- с помощью специально сформированного недоверенного
зации протокола TCP/IP. Удаленный пользователь может апплета повысить свои привилегии на системе.
произвести TCP SYN Flood-атаку и потребить все доступ- URL производителя: www.ibm.com.
ные ресурсы процессора на системе. Для успешной эксплу- Решение: Установите исправление APAR PK65161 с сай-
атации уязвимости ndd(1M) tunable «tcp_conn_req_max_q0» та производителя.
должен быть установлен в значение выше 1024.
URL производителя: www.sun.com. Несколько уязвимостей
Решение: Установите исправление с сайта производителя. в Microsoft Malware Protection Engine
Программа: Microsoft Antigen 9.x; Microsoft Diagnostics and
Обход аутентификации Recovery Toolset 6.x; Microsoft Forefront Client Security 1.x;
в Oracle Application Server Microsoft Forefront Security for Exchange Server; Microsoft
Программа: Oracle Application Server 10g, возможно, дру- Forefront Security for SharePoint; Microsoft Windows Defender;
гие версии. Microsoft Windows Live OneCare.
Опасность: Средняя. Опасность: Средняя.
Описание: Уязвимость существует из-за того, что зло- Описание: 1. Уязвимость существует из-за неизвестной
умышленник может обойти basic аутентификацию в Oracle ошибки при обработке PE-файлов в Malware Protection
Application Server Portal с помощью специально сформиро- Engine (MsMpEng.exe/mpengine.dll). Удаленный пользователь
ванного идентификатора сессии в файле куки, который может с помощью специально сформированного файла вы-
устанавливается при доступе к /pls/portal/%0A. Удаленный звать отказ в обслуживании и перезапустить приложение.
пользователь может получить доступ к содержимому /dav_ 2. Уязвимость существует из-за ошибки при обработке
portal/portal/. PE-файлов в Malware Protection Engine. Удаленный пользо-
URL производителя: www.oracle.com/appserver. ватель может с помощью PE-файла, содержащего специ-
Решение: В настоящее время способов устранения уязви- ально сформированный размер заголовка, занять все до-
мости не существует. ступное дисковое пространство в системе и вызвать отказ
в обслуживании.
Утечка памяти в Cisco Catalyst Content URL производителя: www.microsoft.com.
Switching Module Решение: Установите исправление с сайта производителя.
Программа: CSM 4.2(3), 4.2(3a), 4.2(4), 4.2(5), 4.2(6), 4.2(7)
и 4.2(8); CSM-S 2.1(2), 2.1(3), 2.1(4), 2.1(5), 2.1(6) и 2.1(7). Обход ограничений безопасности
Опасность: Средняя. в Debian Linux и Ubuntu
Описание: Уязвимость существует из-за утечки памяти при Программа: Debian Linux 4.0; Ubuntu 7.04 (Feisty); Ubuntu
обработке TCP-сегментов, содержащих определенные TCP- 7.10 (Gutsy); Ubuntu 8.04 LTS (Hardy).
флаги. Удаленный пользователь может с помощью специ- Опасность: Средняя.
ально сформированного TCP-пакета вызвать отказ в об- Описание: Уязвимость существует из-за того, что OpenSSL
служивании. Для удачной эксплуатации уязвимости на CSM использует предсказуемый генератор случайных чисел
или CSM-S должна быть сконфигурирована балансировка при создании ключей. Удаленный пользователь может по-
нагрузки на 7-м уровне. лучить доступ к зашифрованным данным.
URL производителя: www.cisco.com. Решение: Установите исправление с сайта производителя.
Решение: Установите последнюю версию CSM версии 4.2.9
или CSM-S версии 2.1.8 с сайта производителя. Составил Александр Антипов

№5, май 2008 91


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

Настройка Windows Vista.


Учебный курс Microsoft
Йен Маклин, Орин Томас
ствует в качестве одной из возмож- и устранение возникающих при этом
ных опций при получении сертифика- проблем, контроль учетных записей
ции Microsoft Certified IT Professional пользователей, настройку средств
(MCITP): Enterprise Administrator и не- безопасности компьютера при работе
которых других. обозревателя Internet Explorer 7+, на-
Издание подготовлено стандарт- стройку сетевых подключений, конфи-
но для учебников данной серии. Главы гурирование брандмауэра и парамет-
разбиты на отдельные занятия, каж- ров удаленной поддержки, настрой-
дая глава завершается лабораторны- ку коммуникационных программ, пос-
ми работами. тавляемых с Windows Vista, факса, ме-
К книге прилагается CD, на кото- диаприложений, поддержку и оптими-
ром традиционно присутствуют элек- зация Windows Vista, настройку обнов-
тронная версия книги (на английском лений и защиту данных, настройку мо-
языке) и пробный экзамен, содержа- бильных устройств, работу с планшет-
Перед вами официальное учебное щий около трех сотен демонстраци- ными компьютерами.
пособие для самоподготовки к сер- онных вопросов .
тификационному экзамену Microsoft Книга построена на основе тем, n
Издательство: «Русская Редакция»
70-620 «Настройка Microsoft Windows входящих в экзамен, и включает в се- n
Год издания: 2008
Vista». И если вы собрались полу- бя: установку Windows Vista, мигра- n
Количество страниц: 768
чать сертификат Microsoft Certified цию данных и обновление предыду- n
ISBN: 978-5-7502-0350-5
Technology Specialist (MCTS): Windows щих версий, диагностику и изменение n
Цена: ≈ 529 руб.
Vista, Configuration, то эта книга – для настроек системы после ее установки, Книга предоставлена интернет-магазином
вас. Данный экзамен также присут- настройку доступа к Интернету, поиск Books.Ru.

Eclipse: Платформа Web‑инструментов.


Разработка Web-приложений
на языке Java
Нейси Дей, Лоренс Мандел, Артур Райман
языке Java. Авторы предполагают нали- приложений. В третьей части рассмат-
чие у читателя богатого опыта програм- ривается расширение платформы веб-
мирования с использованием Java и не- инструментов: добавление новых сер-
которого знакомства с Eclipse. веров, поддержка новых типов файлов,
Издание состоит из четырех частей. создание расширений WSDL, настрой-
Начинается книга с краткого изложе- ка метода определения местонахож-
ния истории проекта Eclipse Web Tools дения ресурсов. В последней, четвер-
Platform. Далее рассказывается о струк- той части рассмотрены планы проекта
туре и архитектуре проекта WTP, при- на будущее и другие веб-инструменты
водится краткий обзор возможностей на основе Eclipse. Книга описывает вер-
WTP и порядок настройки рабочей сре- сию WTP 1.5.2, так что часть описан-
ды. Во второй части книги авторы уже ных планов наверняка уже реализова-
Eclipse Web Tools Platform (WTP) – это рассказывают о разработке веб-прило- на в текущих версиях проекта.
платформа, используемая в своих инс- жений. Затронуты такие вопросы, как
трументах разработки корпоративных архитектура веб-приложения и принци- n
Издательство: «Кудиц-Пресс»
и веб-приложений такими компаниями пы его проектирования, организация n
Год издания: 2008
как: BEA, IBM, CodeGear, JBoss (теперь проекта разработки. Отдельные гла- n
Количество страниц: 688
уже Red Hat Inc.), SAP и многими други- вы посвящены уровню представления, n
ISBN: 978-5-91136-051-1
ми. Появление книги на русском языке уровню логики бизнес-процессов, уров- n
Цена: ≈ 621 руб.
несомненно, давно ожидаемое событие ню долговременного хранения данных, К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
для разработчиков веб-приложений на веб-сервисам и процессу тестирования «Кудиц‑Пресс».

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

Postfix. Подробное руководство


Ральф Гильдебрандт, Патрик Кеттер
ветов и решений, кристаллизующих ную книгу можно смело рекомендовать
опыт авторов, являющихся активны- всем системным администраторам,
ми и хорошо известными в сообщес- использующим описываемый весьма
тве Postfix фигурами. Книгу отлича- распространенный почтовый сервер,
ет простой и понятный стиль изложе- или тем, кто еще только собирается
ния. Основные темы, затронутые в из- на него переходить. Хотелось бы отме-
дании: архитектура почтового серве- тить, что несмотря на то, что большая
ра Postfix; подготовка окружения и ус- часть материала актуальна, не забы-
тановка сервера; начальная настрой- вайте про документацию и при изуче-
ка и запуск почтового сервера для од- нии Postfix не ограничивайтесь только
ного домена; настройка и использова- чтением книги. Ведь с момента появ-
ние ограничений на передачу сообще- ления этой книги до выхода ее перево-
ний; работа со встроенными фильтра- да прошло более трех лет. Тем не ме-
ми содержимого; настройка и работа нее это, возможно, самая лучшая из су-
с внешними фильтрами содержимого; ществующих книг о почтовом сервере
создание почтового шлюза; настрой- Postfix, и выход этой книги на русском
«Подробное руководство» действи- ка почтового сервера для несколь- языке – отличное событие.
тельно весьма подробно. На пяти со- ких доменов; SMTP-аутентификация;
тнях страниц, шаг за шагом авторы использование протокола TLS; рабо- n Издательство: «Символ-Плюс»
рассматривают все типичные ситуа- та с Postfix в chroot-окружении; парал- n Год издания: 2008
ции, с которыми на практике может лелизм удаленных клиентов и огра- n Количество страниц: 512
столкнуться системный администра- ничение частоты запросов; настройка n ISBN: 978-5-93286-109-7
тор почтового сервера. В книге поми- производительности; устранение не- n Цена: ≈ 495 руб.
мо достаточного объема теории при- исправностей в конфигурации Postfix; Книга предоставлена интернет-магазином
ведено множество практических со- интеграция с OpenLDAP и MySQL. Дан- Books.Ru.

WPF: Windows Presentation Foundation


в .NET 3.0 для профессионалов
Мэтью Мак-Дональд
статочно сложный материал. Windows нами и классическими элементами уп-
Presentation Foundation (WPF) – это равления, страницами и навигацией,
полностью новая система графичес- работа со стилями и шаблонами эле-
кого отображения для Windows, ис- ментов управления, списками, деревь-
пользующая вместо библиотек User32 ями, панелями инструментов и меню.
и GDI/GDI+ библиотеку DirectX. На- Подробно рассмотрены работа с до-
сколько сложен предмет, настолько кументами, печатью, анимацией, зву-
и велика книга. Почти тысяча страниц ком и видео. Отдельные главы отве-
разбита на двадцать шесть глав. Если дены трехмерной графике, пользова-
читатель только начинает знакомство тельским элементам в WPF, взаимо-
с WPF, то оптимальным будет после- действию с Windows Forms и развер-
довательное чтение, хотя в дальней- тыванию при помощи инсталяционной
шем книгу можно использовать и как модели ClickOne.
справочник.
Вашему вниманию представляется В книге описана архитектура WPF n
Издательство: «Вильямс»
книга одного из ведущих специалис- и основы DirectX, изначально разрабо- n
Год издания: 2008
тов в области технологий .Net и, кро- танного для создания игр, язык XAML n
Количество страниц: 992
ме того, весьма плодовитого писате- (Extensible Application Markup Language), n
ISBN: 978-5-8459-1344-9
ля, на чьем счету уже несколько книг, предназначенный для определения n
Цена: ≈ 921 руб.
посвященных .Net, и множество жур- пользовательских интерфейсов, мо- К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
нальных публикаций. Будучи препода- дель приложений в WPF, работа с ок- «Вильямс».
вателем, Мэтью Мак-Дональд умело
и доходчиво доносит до читателя до- Обзор книжных новинок подготовил Андрей Маркелов

№5, май 2008 93


bugtraq

Множественные уязвимости Множественные уязвимости


в Cisco Unified Communications Manager в Symantec Altiris Deployment Solution
Программа: Cisco Unified Communications Manager версии Программа: Symantec Altiris Deployment Solution версии
4.1, 4.2, 4.3, 5.x и 6.x. до 6.9.176.
Опасность: Средняя. Опасность: Средняя.
Описание: 1. Уязвимость существует из-за ошибки в служ- Описание: 1. Уязвимость существует из-за недостаточ-
бе Certificate Trust List (CTL) Provider. Удаленный пользова- ной обработки входных данных в некоторых параметрах
тель может отправить специально сформированный пакет в axengine.exe. Удаленный пользователь может выполнить
на порт 2444/TCP и потребить большое количество сис- произвольные SQL-команды в базе данных приложения
темных ресурсов. и скомпрометировать целевую систему.
2. Уязвимость существует из-за ошибки в CTL Provider. 2. Уязвимость существует из-за неизвестной ошибки,
Удаленный пользователь может отправить специально которая позволяет запросить и получить без аутентифи-
сформированный пакет на порт 2444/TCP и использовать кации зашифрованные личные данные Altiris Deployment
все доступные ресурсы в системе. Уязвимости подверже- Solution-домена.
ны версии 5.x и 6.x. 3. Уязвимость существует из-за неизвестной ошибки,
3. Уязвимость существует из-за ошибки в Certificate которая позволяет получить доступ к привилегированной
Authority Proxy Function (CAPF). Удаленный пользователь мо- командной строке посредством пользовательского интер-
жет отправить специально сформированный пакет на порт фейса в Altiris Deployment Solution Agent.
3804/TCP и вызвать отказ в обслуживании. Уязвимости под- 4. Уязвимость существует из-за неизвестной ошибки,
вержены версии 4.1, 4.2 и 4.3. которая позволяет получить доступ к командной строке
4. Уязвимость существует из-за ошибки при обработ- с привилегиями другого пользователя посредством GUI-
ке SIP JOIN-сообщений. Удаленный пользователь с по- элемента (tooltip).
мощью специально сформированного SIP JOIN-сообще- 5. Некоторые ключи реестра создаются с некоррект-
ния может произвести DoS-атаку. Уязвимости подверже- ными привилегиями. Злоумышленник может изменить или
ны версии 5.x и 6.x. удалить эти ключи.
5. Уязвимость существует из-за ошибок при обработ- 6. Уязвимость существует из-за некорректных привиле-
ке SIP INVITE-сообщений. Удаленный пользователь может гий на доступ к файлам в установочной директории прило-
с помощью специально сформированного SIP INVITE-сооб- жения. Локальный пользователь может перезаписать фай-
щения вызвать отказ в обслуживании. Уязвимость обнару- лы и выполнить произвольный код на системе с привиле-
жена в версиях 4.1, 4.2, 4.3, 5.x и 6.x. гиями администратора.
6. Уязвимость существует из-за ошибки в SNMP Trap URL производителя: www.symantec.com.
Agent. Удаленный пользователь может отправить специ- Решение: Установите последнюю версию 6.9.176 с сайта
ально сформированный UDP-пакет на порт 61441/UDP и вы- производителя.
звать отказ в обслуживании. Уязвимости подвержены вер-
сии 4.1, 4.2, 4.3, 5.x и 6.x. Множественные уязвимости
URL производителя: www.cisco.com. в CA ARCserve Backup
Решение: Установите исправление с сайта производителя. Программа: CA ARCserve Backup r11.5 (formerly BrightStor
ARCserve Backup r11.5); CA ARCserve Backup r11.1 (formerly
BrightStor ARCserve Backup r11.1); CA ARCserve Backup
Переполнение буфера в Novell Client r11.0 (formerly BrightStor ARCserve Backup r11.0); CA Server
Программа: Novell Client for Windows NT/2000/XP 4.91 SP4, Protection Suite r2; CA Business Protection Suite r2; CA Business
возможно, другие версии. Protection Suite for Microsoft Small Business Server Standard
Опасность: Низкая. Edition r2; CA Business Protection Suite for Microsoft Small
Описание: Уязвимость существует из-за ошибки провер- Business Server Premium Edition r2.
ки границ данных в LOGINW32.DLL (4.19.6.0) при обработ- Опасность: Средняя.
ке имен пользователей и eDirectory «Context» строк в окне Описание: 1. Уязвимость существует из-за ошибки провер-
входа в систему в Novell Client. Локальный пользователь ки входных данных в службе журналирования (caloggerd).
может с помощью слишком длинного имени пользовате- Удаленный пользователь может с помощью символов обхо-
ля или eDirectory «Context» строки, нажав на ссылку «Did да каталога добавить произвольные данные в произволь-
you forget your password?», вызвать переполнение стека и ные файлы на системе.
выполнить произвольный код на системе в контексте про- 2. Уязвимость существует из-за ошибок проверки гра-
цесса winlogon.exe. ниц данных в xdr функциях (например, xdr_rwsstring()) . Уда-
URL производителя: www.novell.com/products/clients/ ленный пользователь может вызвать переполнение стека
windows/xp2000/overview.html. и выполнить произвольный код на целевой системе.
Решение: В настоящее время способов устранения уязви- URL производителя: www.ca.com.
мости не существует. Решение: Установите исправление с сайта производителя.

Составил Александр Антипов

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

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

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

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

№5, май 2008 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№5(66), Май, 2008 год

УЧРЕДИТЕЛИ
Частные лица
Вышел DVD-диск с архивом
РЕДАКЦИЯ
Генеральный директор
номеров журнала за 2007 год
Владимир Положевец
Ответственный секретарь Что на диске?  tcpdump 3.9.8;
Наталья Хвостова n Архив 12-ти номеров журнала «Системный ад-  NeTAMS 3.4.1rc1;
sekretar@samag.ru министратор» за 2007 год.  IPStat 0.9.7.2;
Технический редактор n Архив всех выпусков электронного приложе-  Linux kernel 2.6.24.1;
Владимир Лукин
ния «Open Source» за 2007 год.  BIND 9.4.2 (+ win32);
Главный редактор n Программные продукты от партнеров журна-  OpenSSL 0.9.8g;
электронного приложения ла (триальные версии):  OpenSSH 4.7p1;
«Open Source»  Kerio MailServer 6.5;  Samba 3.0.28;
Дмитрий Шурупов  Kaspersky® Internet Security 7.0;  Squid Web Proxy Cache 2.6.STABLE18;
 Антивирус Касперского ® 7.0;  CUPS 1.3.6;
Внештатные редакторы  Система контроля доступа Zlock 2.0;  Clam AntiVirus 0.92.1 (+ Clamwin 0.92);
Алексей Барабанов
Кирилл Сухов  Прокси-сервер UserGate 4.2;  Webmin 1.400;
Андрей Бирюков  Handy Backup 5.8;  Bacula 2.2.8;
Сергей Яремчук  Paragon Drive Backup 8.51 Enterprise Server  Amanda 2.5.2p1;
Валентин Синицын Edition; n Пользовательское ПО:
Олег Щербаков  Network Inventory 1.6.0;  OpenOffice.org 2.3.1 (LinuxIntel, Win32Intel);
Иван Хрипунов  FastReport Server 1.0.10 demo;  Mozilla Firefox 2.0.0.12 (Linux, win32);
 ABBYY Lingvo 12;  Mozilla Thunderbird 2.0.0.12 (Linux, win32);
РЕКЛАМНАЯ СЛУЖБА
тел./факс: (495) 628-8253  WinRar 3.71;  Mozilla Seamonkey (Linux, win32);
Евгения Тарабрина (доб. 119)  Linux-дистрибутив Mandriva One 2008;  Mozilla Sunbird 0.7 (Linux, win32);
reсlama@samag.ru  Linbox Rescue Server 20070703.  Pidgin 2.4.0 (+ win32);
n Серверы/сети/администрирование:  SIM IM 0.9.4.3 (+ win32);
Верстка и оформление  FreeBSD 7.0-RELEASE;  X-Chat 2.8.4 (+ 2.8.5e win32);
maker_up@samag.ru  Apache HTTP Server 2.2.8 (+ win32);  aMule 2.1.3 (+ win32);
 nginx 0.6.26, 0.5.35;  GIMP 2.4.5 (+ 2.4.4 win32);
Дизайн обложки
Дмитрий Репин  lighttpd 1.4.18;  MPlayer 1.0rc2 (+ win32);
Николай Петрочук  ProFTPD 1.3.1;  VLC media player 0.8.6e (+ win32);
 PureFTPd 1.0.21;  WINE 0.9.56;
По вопросам распространения  vsftpd 2.0.6;  DOSBox 0.72 (+ win32);
обращайтесь по телефону:  Sendmail 8.14.2;  DOSEMU 1.4.0;
Светлана Зобова  Postfix 2.5.1, 2.6-20080221 (experimental);  Midnight Commander 4.6.1;
(495) 628-8253 (доб. 121)  Courier Mail Server 0.58.0;  Vim 7.1 (+ gvim71);
107045, г. Москва,  Exim 4.69;  7-Zip 457 (+ win32);
Ананьевский переулок, дом 4/2, стр. 1  SpamAssassin 3.2.4;  GnuPG 2.0.8 (+ w32cli 1.4.8).
тел./факс: (495) 628-8253  DSPAM 3.8.0;
Сайт журнала: www.samag.ru  Policy Daemon 1.82; Как получить диск в подарок?
 SquirrelMail 1.4.13; n Клиенты компании SecurIT, заказавшие Zserver
ИЗДАТЕЛЬ  RoundCube 0.1-rc2; в любой комплектации или более 50 лицензий
ООО «С 13»  MySQL 5.0.51a (+ win32); Zlock, получат диск в подарок.
Отпечатано типографией
ГП «Московская Типография №13»  PostgreSQL 8.3.0 (+ win32);
Тираж 17000 экз.  Firebird 2.0.3.12981 (+ win32); Где можно приобрести диск?
 SQLite 3.5.6 (+ win32); n В редакции ж урна ла «Сис темный а дми-
Журнал зарегистрирован в Министерстве РФ  Perl 5.10.0; нистратор» по адресу: г. Москва, Ананьев-
по делам печати, телерадиовещания и средств  PHP: 5.2.5 (+ win32); ский переулок 4/2, стр. 1, в офисе 13 (мет-
массовых коммуникаций (свидетельство ПИ №  Python 2.5.2 (+ win32); ро «Сухаревская»).
77-12542 от 24 апреля 2002 г.).
 Ruby 1.8.6-p111, 1.9.0-1; n В online-магазине Linuxcenter.ru.
За содержание статьи ответственность несет
 Nmap 4.53 (+ win32); n Для обитателей и посетителей Савеловско-
автор. Мнение редакции может не совпадать  Ettercap 0.7.3.tar.gz (+ win32); го рынка, диск можно купить в точке торговли
с мнением автора. За содержание рекламных  Ethereal 0.99.0 (+ win32); печатными изданиями у главного входа.
материалов ответственность несет рекламо-  Snort 2.8.0.2;
датель. Все права на опубликованные мате-  MRTG 2.16.1; Сколько стоит?
риалы защищены.  NuFW 2.2.9; Цена – 150 рублей.

96