СЬ
www.samag.ru
ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е
Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО
О
танавливаем Symantec Antivirus 9.0
НИ НО
ТР
в корпоративной сети
Эффективно управляем
С
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО НЕО
АВ СЛ
Л
Л
ХА
ПО
УЕ
ЗА
Так видит журнал читатель, оформивший подписку:
№5(30) май 2005
подписной индекс 81655
www.samag.ru
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (495) 500-00-60
в номере
5 ТЕНДЕНЦИИ 48 Как обнаружить malware-программы?
Универсальный метод.
РЕПОРТАЖ Крис Касперски
kk@sendmail.ru
6 Берегись, «мышь» полетела!
Состоялся Первый Всероссийский слет сисадминов. ЧЕЛОВЕК НОМЕРА
Репортаж с места событий.
Оксана Родионова 56 Пират виртуального мира
rodion@dol.ru «Перевоспитавшийся» хакер Кевин Митник решает
новые головоломки. Теперь он защищает компании
от былых коллег.
АДМИНИСТРИРОВАНИЕ Оксана Родионова
rodion@dol.ru
10 Семь веб-интерфейсов к электронной
почте. Выберите лучший! WEB
Требования мобильности и доступности электронной
почты в любых условиях делают использование про- 60 Ajax: новый канал общения клиента
токолов POP3/IMAP не всегда удобным. На помощь и сервера
приходят системы, обеспечивающие веб-интерфейс После того, как Ajax взяли на вооружение такие веб-ги-
к почтовым ящикам. ганты, как google и gmail, технологией стали интересо-
Сергей Супрунов ваться все: от руководителей крупных проектов до на-
amsand@rambler.ru чинающих веб-мастеров. Алексей Мичурин
alexey@michurin.com.ru
20 Полезные советы: FreeBSD
Сергей Супрунов 66 Устанавливаем DACS
amsand@rambler.ru Установим систему контроля доступа к веб-ресурсам
DACS в минимальной конфигурации, а заодно посмот-
21 Полезные советы: Apache рим на нее в работе. Сергей Яремчук
Сергей Супрунов grinder@ua.fm
amsand@rambler.ru
ПРОГРАММИРОВАНИЕ
22 Обзор систем резервного копирования
Не секрет, что информационные ресурсы любой ком- 72 Развиваем модуль DBI
пании представляют ценность. В сборе, анализе и ис- DBI, Perl-модуль для взаимодействия с базами данных,
пользовании информации задействованы практически используется в доброй половине всех существующих
все сотрудники. Но как ее тяжело добыть, так же лег- Perl-программ. Как его усовершенствовать?
ко ее подчас потерять. Алексей Мичурин
Сергей Яремчук alexey@michurin.com.ru
grinder@ua.fm
IMHO
30 Упаковщики исполняемых файлов
в Linux/BSD 78 В поисках профессиональной этики
Коммерческие продукты с закрытым кодом зачастую сисадминов
распространяются в упакованном виде, что препятс- В Интернете и печатных изданиях встречаются разные
твует анализу, снижает производительность и ухудша- представления о принципах системного администриро-
ет совместимость с UNIX-клонами. Как можно освобо- вания. Попробуем найти в этих вариантах общие черты
диться от упаковщиков? и определить направление совершенствования.
Крис Касперски Алексей Барабанов
kk@sendmail.ru alekseybb@mail.ru
БЕЗОПАСНОСТЬ РЕТРОСПЕКТИВА
40 Zlock: контролируйте доступ 86 Суровая правда, скрытая за «розовыми
к USB-устройствам очками»: история компании Transmeta
У конкурентов оказалась база данных ваших клиен- Компания Transmeta принесла практически совершен-
тов? Сотрудники используют рабочее место для об- ные процессоры в массы, но собственноручно допу-
работки и записи гигабайт личных фотографий с циф- щенные ошибки, жестокая конкуренция и приверед-
ровой камеры на CD? Без надежной системы контро- ливые пользователи не позволили ей завоевать мес-
ля доступа к мобильным устройствам вряд удастся из- то под солнцем. Дмитрий Мороз
бежать подобное. akuji@list.ru
Андрей Гущин
info@securit.ru КНИЖНАЯ ПОЛКА
44 Защищаемся от malware с помощью 92 Обзор книжных новинок
BufferZone Александр Байрак
Обзор проекта BufferZone. x01mer@pisem.net
Сергей Яремчук
grinder@ua.fm 59, 91, 94 BUGTRAQ
Программа конференции
http://www.linuxland.ru/conf.phtml
Информационная поддержка
Контакты:
e-mail: info@linuxcenter.ru
Телефон: (812) 929-09-07
тенденции
IBM не считает OpenSolaris рабочей станции под управлением GNU/Linux. Вместе с тем
проектом Open Source Lenovo будет предоставлять техническую поддержку по Linux
По мнению представителей IBM, проект OpenSolaris нельзя для своих лаптопов – это касается драйверов и технологий
по-настоящему отнести к Open Source, потому что его автор, ThinkVantage. Одной из причин, открывших перспективы по-
компания Sun Microsystems, не желает делиться управлени- лученному союзу, как считает Билл Йори (Bill Iori), ответс-
ем OpenSolaris со сторонними разработчиками. твенный за ThinkPad T Series в Lenovo, является тот факт,
«Sun держит все за огненной стеной. Сообщество не мо- что Linux-ядро теперь обладает лучшей поддержкой таких
жет ничего увидеть, – заявил Дэн Фрай (Dan Frye), вице-пре- используемых в ноутбуках технологий, как спящий режим.
зидент из IBM, ответственный за технологический Linux-центр
в компании, на LinuxWorld Conference and Expo. – Это только HP предоставит поддержку
видимость. Куча маркетинга и никакого сообщества». для Debian GNU/Linux
Фрай отметил, что если Sun хочет превратить OpenSolaris Компания Hewlett-Packard решила расширить круг GNU/
в настоящий продукт сообщества, необходимо перенести Linux-дистрибутивов, по которым она предоставляет тех-
все обсуждение проекта в публичные форумы, чтобы все ническую поддержку, добавив к продукции Red Hat и Novell
желающие видели, что происходит. разрабатываемый сообществом Debian GNU/Linux. Как по-
Джим Грисанзо (Jim Grisanzio) из Sun ответил на эти яснил Джеффри Вейд (Jeffrey Wade), менеджер по мировым
заявления непониманием, почему IBM атакует сообщест- продажам в Open Source и Linux-подразделении HP, у ком-
во OpenSolaris, заметив, что Sun 16 раз представляла ре- пании большое число заказчиков, заинтересованных в ра-
лизы ПО с открытым кодом, а с момента запуска проекта боте с Debian на серверах HP. HP будет оказывать услуги
(что произошло чуть более года назад) сторонними разра- по установке и настройке некоммерческого дистрибути-
ботчиками было внесено 116 добавлений. ва на протяжении времени поддержки серверов. Несмот-
ря на это известие, Red Hat и Novell останутся ключевыми
NetBSD 3.1 готовится к выходу мировыми Linux-партнерами HP. Кроме того, HP не будет
Команда разработчиков свободной ОС NetBSD в рассылке продвигать Debian, и заказчикам придется самостоятель-
netbsd-announce обнародовала план выпуска следующего но скачивать эту систему со всем нужным ПО. HP не наме-
стабильного релиза – 3.1. В соответствии с опубликованной рена формально сертифицировать Debian для своих серве-
информацией первый кандидат в релиз (NetBSD 3.1_RC1) ров, предоставлять для этого дистрибутива предложения
появился 21 августа, второй (3.1_RC2) – через две недели, от таких своих партнеров, как BEA Systems и Oracle.
4 сентября. Финальный релиз 3.1 запланирован на 18 сен-
тября (если не возникнет никаких серьезных проблем с вы- Составил Дмитрий Шурупов
по материалам www.nixp.ru
пущенными RC – в противном случае будет представлен
еще один кандидат в релиз, а релиз отложат еще на 2 не-
дели). В NetBSD 3.1 по сравнению с предыдущим релизом –
3.0 – представлены такие новшества, как поддержка domU
для Xen 3, значительные улучшения в стабильности LFS,
множество других улучшений, исправлений и дополнений.
Я
думала, что еду на турслет. Ну и ре. А эти подозрительные товарищи… зами налить воду ковшиком из ба-
что, что системных администра- бросаются «мышками»! И клавиатура- ка в бутылку. Девушка Лена успешно
торов? Да пусть даже бухгалте- ми. Это они так проверяют, кто дальше с заданием справилась. Народ вокруг
ров! Туристы они и в Африке туристы. кинет. Хм, а ведь не так просто, оказы- ее бурно поддерживал. Но мне все-та-
Но все оказалось совсем не так прос- вается, забросить «мыша» в неболь- ки не верится, что это сисадмины. Иду
то… А поляна под Калугой, где прохо- шой огороженный квадрат. Похоже, по- к палаткам знакомиться. Вот компания,
дят слеты людей всевозможных про- бедители долго тренировались. Инте- играющая в преферанс. Не хочется ме-
фессий, оказалась заколдованным ресно, на ком? Надеюсь, не на своих шать, но что делать…
местом, настоящим Зазеркальем. юзерах… Они вообще любят кидать- – Вы системные администраторы?
ся чем ни попадя на этом слете, как я – Не все. Вот двое.
Глюк №1: погляжу. Вот еще одна игра: предла- – А как отличить системного адми-
Сисадмин-футболист гается пройти по маршруту, попутно нистратора от обычного человека?
Кто эти люди, играющие в футбол и во- выполняя задания. Число ходов ука- – Это сложно, если без компьюте-
лейбол? Нет, не может быть, чтобы это зывает огромный деревянный кубик. ра. Но если люди играют в преферанс –
были сисадмины! Они ведь никогда Алле-ап, бросили! Сколько? Два оч- верный признак!
не расстаются с «мышками» и не отры- ка. Пропускаете ход. Сколько? Одно. – А вы откуда?
ваются от экранов мониторов, их паль- Опять пропускаете. Сколько? Три оч- – Из Ярославля.
цы непрерывно бегают по клавиату- ка! Вам задание: с завязанными гла- – Как вам идея собраться здесь?
6
репортаж
– Хорошая идея! По какому по-
воду собираться, не важно. Просто Подведены итоги конкурсов! ния Дня Сисадмина-2006 на сайте http://
на природу выехать, лапшички сва- Накануне Дня Сисадмина-2006 на сисад- sysadmin.mail.ru проходил конкурс сисад-
рить на костре. минском сайте был проведен конкурс «Сис- минских репортажей. Сисадмины из раз-
админские рекорды». Каждый сисадмин ных регионов рассказывали о том, как они
Глюк №2: мог предоставить на суд пользователей встретили праздник. Победителями стали
Девушка-сисадмин сайта свой рекорд – личный или профес- три системных администратора, которые
На другом конце поляны расположи- синальный. Победители определялись го- по-разному, но очень увлеченно описали
лась Вологда. Подхожу. Теперь уже лосованием. свой отдых на Первом Всероссийском слё-
не я, а меня спрашивают: Главные призы получили Дмитрий Лу- те Сисадминов: Голыженков Алексей, Бе-
– А вы системный администратор? говой – за рекорд о самом большом числе лякова Светлана и Бринько Сергей.
С глубоким изумлением отвечаю, способов передачи данных, Наталья Бак- Все победители получают в качестве
что нет. Ребята огорчены: ланова с зажигательным списком ежеднев- подарка уникальные сисадминские фут-
– А мы уже думали, что встретили! ных рекордов и побед в их организации болки, пакет лицензионного ПО от мага-
По легенде, бывают девушки – систем- и Сергей Заворыкин, описавший рекорд зина Allsoft.ru, обучение в Учебном Цент-
ные администраторы. по самым частым пересадкам. ре Softline и подписку на журнал «Систем-
– И здесь есть? В течение 10 дней после празднова- ный администратор».
– Говорят, вчера была, танцевала
хорошо. ку, до нашей команды заглушки не сни- кера бутылки, висящие на веревочке.
– А системные администраторы хо- мать! Они находятся здесь для безо- Увлеклась зрелищем.
рошо танцуют? пасности, чтобы случайно не сделать – Вы его жена? – раздалось сбоку.
– А чего нет! выстрел. Самое главное – не снимать Ну чем не театр абсурда? Я не жена
– А о чем здесь разговоры идут? – маску во время игры. Если увидите ко- сисадмина, я не сисадминка! А кто я?..
интересуюсь. го-то без маски, по этим людям стре- Не помню.
– О работе… и обо всем осталь- лять не надо. Если гражданский появ-
ном. ляется на поле, опять-таки не стреля- Глюк №3:
– Зачем о работе? ем. У каждого свои дела могут быть Бурные аплодисменты
– Сисадмины – такие люди, что где в этом лесу... Из задумчивости меня вывел звонкий
угодно будут о работе говорить. Организаторы игры помогли на- голос, усиленный динамиками, напом-
Потом я все-таки увидела девуш- деть маски бойцам и на прощание нивший, что это все же турслет адми-
ку сисадмина из Учкудука и поняла, спросили: нистраторов, а не второй сон Веры
что это не миф, а правда. Девушка – Здоровые все? Никому плохо Павловны:
была обаятельна и весела – она пони- не станет? – Все, кто приехал, подойдите
мала, какая роль ей досталась. Гово- Нервно отсмеявшись, мужчины уш- в штаб. Штаб – это синяя палатка. Там
рят, на поляне можно было найти да- ли в лес играть в войнушку. бегает и ждет вас Полкошки, у которой
же несколько системных администра- А я осталась наблюдать, как сисад- вы зарегистрируетесь. Там же вы мо-
торов женского пола – этакий слет си- мин из Вологды расстреливает из мар- жете приобрести футболочки и банда-
садминок.
Однако развлечения на слете были
явно рассчитаны на мужчин. Вот пейнт-
бол, например, – типично мужское за-
нятие. Все серьезно – оружие, маски,
инструктаж…
– Сейчас будем играть в пейнтбол.
Две команды по пять человек, одна
с одной, другая с другой стороны. Цель
игры – захватить флаг и принести его
на базу противника. Как только флаг
принесли, игра закончена. Флаг нахо-
дится в центре. Задача игроков – от-
стоять свой флаг.
Комментарий участника игры:
Убей его, пока он не убил тебя.
– Бойцы, смотрите! Будете играть
такими маркерами, – инструктор пока-
зал оружие. – Сюда насыпаются шары,
здесь находится воздух, отсюда выле-
тает шарик. На маркере находится за-
глушка. До выхода на игровую площад- География слета
8
администрирование
Семь веб-интерфейсов
к электронной почте
Выберите лучший!
Сергей Супрунов
10
администрирование
12
администрирование
Хранение пользовательских дан-
ных, как и в случае с Ilohamail, осущест-
вляется в текстовых файлах, размеща-
емых в каталоге database, так что ника-
ких особых прав доступа для этого ката-
лога не требуется, и вся работа ведётся
исключительно с правами пользователя,
от имени которого работает Apache.
Есть возможность выбрать язык ин-
терфейса из очень большого числа ва-
риантов. Русский среди них присутству-
ет, и к качеству перевода никаких на-
реканий нет. Правда, впечатление не-
сколько подпортила некорректная рабо-
та с кодировкой входящих сообщений –
UebiMiau не сумел правильно выбрать
Рисунок 3. Здесь есть почти всё, о чём только можно мечтать
кодировку даже для сообщения, которое
через него же и отправлялось.
Интерфейс организован очень удоб-
но и интуитивно понятен. При первом
входе в систему вас переправят на стра-
ницу настроек. При желании можно из-
менить часовой пояс, режимы управле-
ния корзиной (куда будут помещаться
удаляемые сообщения), задать личную
подпись. Из дополнительных возмож-
ностей – работа с папками, поиск (по от-
правителю, теме, телу сообщения), ад-
ресная книга.
Поддержка браузером скриптов на
JavaScript обязательна – иначе не будет
работать даже меню. Также обязательна
и поддержка cookies (хотя в настройках
это требование можно отключить, тог-
да UebiMiau будет использовать другие
способы поддержания сессий).
Проблем с безопасностью зарегис-
трировано три, все помечены низким Рисунок 4. Веб-диск позволит вам копаться в своём домашнем каталоге, даже если
злой админ не открыл FTP-доступ
уровнем опасности. Последняя из них
(межсайтовый скриптинг) датирована 3 июля этого года. фильтрацию спама (за это отвечает SpamAssassin), прове-
Несмотря на предельную простоту и не столь большое рять правописание (подключается ispell) и так далее.
число функций, этот веб-интерфейс будет прекрасным вы- Установка выполняется по умолчанию в /usr/local/www/
бором в том случае, если вам просто нужно обеспечить cgi-bin/openwebmail. Для начала работы нужно указывать
«запасный выход» для некоторых своих клиентов (или да- в адресной строке полный путь к файлу: mysite.ru/cgi-bin/
же только для себя), чтобы иметь возможность просмот- openwebmail/openwebmail.pl. В принципе можно попробо-
реть свою почту из любого интернет-кафе. Впрочем, не- вать сделать более «красивый» путь с помощью псевдони-
корректная работа с кодировками может несколько под- мов, но в процессе работы особой необходимости в этом
портить впечатление. не возникает.
Все конфигурационные файлы размещаются здесь же,
OpenWebMail в каталоге cgi-bin/openwebmail/etc. Доступ к ним регулиру-
Тестируемая версия: openwebmail-2.52_1. ется с помощью прав на исполнение, так что особое внима-
Порт: /usr/ports/mail/openwebmail. ние нужно уделять грамотной настройке доступа к cgi-ката-
Язык разработки: Perl. логу (в частности, нельзя допускать, чтобы он был доступен
Официальный сайт: http://turtle.ee.ncku.edu.tw/ в корне веб-сайта по прямой ссылке, в обход ScriptAlias). До-
openwebmail. кументация на сайте включает файлы README, FAQ и дру-
Демо-версия: http://www.postman.net. гие, которые в ряде случаев могут оказаться полезны.
Поскольку пользовательские данные OpenWebMail хра-
При установке можно задать ряд параметров, в том чис- нит в домашних каталогах пользователей (то есть пакет
ле подключить проверку на вирусы (с помощью ClamAV), «завязан» на учётные записи и требует, в частности, что-
14
администрирование
(запускается он из командной строки).
Если вам доводилось заниматься на-
стройкой различного сетевого обору-
дования, то интерфейс покажется вам
знакомым (см. рис. 6).
Документация на сайте весьма под-
робная, коротко, но ясно описывающая
буквально каждый шаг. Есть большое
число дополнений, которые можно ус-
тановить из коллекции портов (напри-
мер, вы можете автоматически добав-
лять к каждому письму «нижний колон-
титул» с помощью плагина squirrelmail-
email_footer-plugin или выполнять с по-
Рисунок 7. Наверное, именно так и должно выглядеть совершенство
мощью squirrelmail-login_auth-plugin ав-
томатическую HTTP-аутентификацию).
Язык по умолчанию предлагается
английский, но может быть переопре-
делён в настройках («Options → Display
Preferences»), где среди множества
представленных вы наверняка найдё-
те тот, который вам нужен. Русский там,
естественно, присутствует. Качество пе-
ревода никаких нареканий не вызвало,
«белых пятен» также в ходе тестирова-
ния не обнаружилось.
Там же, в настройках, помимо всего
прочего, можно изменить и цветовую
гамму интерфейса. Выбор заложенных
в поставку тем огромен – от приятных
и гармоничных (например, Bluesome),
до режущих глаз ядовито-зелёных.
Впрочем, на вкус и цвет, как известно,
товарищей нет.
Обрадовало наличие подробной
справочной информации, доступной
здесь же, через веб-интерфейс. Так что
особо непонятливых пользователей, ко- Рисунок 8. Крепость так и не сдалась...
торые умудрятся заблудиться в столь по-
нятном и простом интерфейсе, можно будет отсылать к ней, именно то оформление, которое сделает приятным даже
а не «куда-нибудь подальше». получение письма от начальства, что срочно нужно подго-
Отправка-чтение работают «на ура», включая вложения товить отчёт, срок сдачи – «вчера»...
(за исключением русских имён файлов) и автораспознава-
ние кодировки. Из «сервисных функций» – адресная кни- RoundCube
га, работа с папками, поиск и справка. Ряд дополнитель- Тестируемая версия: roundcube-0.1.20060518.
ный функций можно установить из плагинов. Порт: /usr/ports/mail/roundcube.
А вот что касается безопасности, то первое, что прихо- Язык разработки: PHP.
дит в голову при просмотре списка уязвимостей, это сло- Официальный сайт: http://www.roundcube.net.
во «решето»... 22 штуки, включая «средние» и «критичес- Демо-версия: http://demo.roundcube.net.
кие», позволяющие получить доступ к системной инфор-
мации и даже выполнение произвольного кода с правами Для хранения пользовательских данных использует
веб-сервера – это уже не шутки. Правда, последнее вре- СУБД – при инсталляции предлагается на выбор MySQL
мя «поток уязвимостей» несколько стабилизировался, так или PostgreSQL. После сборки размещается в /usr/local/
что можно надеяться, что сейчас использование пакета не www/roundcube.
представляет такой уж серьёзной опасности. Перед началом работы требуется сформировать нуж-
Так что, если «паранойя» – не ваш диагноз, то SquirrelMail ную базу данных и настроить параметры подключения к ней
обеспечит вашим пользователям удобный и прекрасно ло- в конфигурации (файл config/db.inc.php). Прочие настрой-
кализованный веб-интерфейс для работы с электронной ки, такие как параметры почтовых серверов, указываются
почтой, к тому же позволяющий выбрать из множества тем в config/main.inc.php.
16
администрирование
Установка выполняется в /usr/local/www/data/ismail, После этого форма стала открываться. Кнопки «Отпра-
так что если data в вашем случае является символьной вить» и здесь нет (видимо, разработчики решили во всём
ссылкой на корень веб-сайта, то будьте готовы к тому, следовать интерфейсу «оффлайновых» клиентов), так что
что ISMail сразу станет доступен вашим пользователям. пришлось предварительно поводить мышкой по иконкам,
Так же, как и для RoundCube, необходимо в php.ini раз- разбираясь, что же они означают.
решить автоматическую инициализацию сессий: Если вы не большой поклонник коричневого, то внешний
вид можно подправить в include/istheme.conf.
; Initialize session on request startup С языком – хуже. Среди настроек русский не отыскал-
session.auto_start = 1
ся. Тем не менее определённую надежду вселило нали-
Конфигурационные файлы размещаются в каталоге чие каталога locale, где можно найти mo- и po-файлы для
include. Для того чтобы веб-интерфейс заработал, нужно пе- итальянского, чешского, датского и английского, но поче-
реименовать файлы ismail.conf.sample и istheme.conf.sample му-то выбор любого из этих языков в настройках на языке
в ismail.conf и istheme.conf соответственно. Ну и, естествен- интерфейса никак не отражался. Разве что «зюки» стано-
но, внести в них необходимые изменения. В частности, обя- вились другими. Создание «по образу и подобию» катало-
зательно нужно прописать секцию своего домена (пример га с русской локалью (пришлось повспоминать азы gettext)
того, как это сделать, можно посмотреть в секции default). не привело к появлению родного языка среди доступных.
И не забудьте убрать секцию example.net, иначе она тоже Пришлось править исходники.
будет предлагаться на выбор при входе в систему. В частности, русский язык был добавлен в список до-
Для отправки сообщения вы должны задать переменную ступных в массив $defaultsettings["locale"]["values"] (файл
mailprogram в конфигурационном файле, которая бы указы- include/globals.php). Но на переключение языка интерфейса
вала на вашу локальную программу отправки почты. В нем эта опция упорно влиять не желала. Так что, не мудрствуя
по умолчанию есть примеры для использования sendmail лукаво, в include/globals.php был жёстко прописан для ва-
и exim. Если через /bin/sendmail, то и постфикс имеет такой рианта по умолчанию «ru_RU», и там же (строка 204) явно
враппер – конкретно используется команда: указана кодировка, так как из файла локалей её разработ-
чики решили не вытаскивать, ограничившись жёсткой при-
/usr/libexec/sendmail/sendmail -oi -t вязкой к iso-8859-2:
но, поскольку эта команда задаётся прямо в конфигура- function PageHeader($echo=1, $frame=0) {
$header = "";
ционном файле, то в принципе можно указать любой вы- if ($_SESSION["locale"] == "ru_RU") {
зов, лишь бы он поддерживал нужный режим работы. Из- $header = "<?xml version=\"1.0\" ↵
encoding=\"koi8-r\"?>\n";
менил предыдущее предложение... Использовать любой } else {
SMTP-сервер вы не сможете. $header = "<?xml version=\"1.0\" ↵
encoding=\"iso-8859-1\"?>\n";
Интерфейс буквально поразил своей красотой в стиле }
Ubuntu. Но ещё больше «поразил» нечитаемыми символами,
выводимыми вместо русских букв в именах отправителей и Вся эта «хирургия» позволила наконец-то увидеть рус-
темах сообщений. Удручила и невнятная панель инструмен- ские надписи в элементах интерфейса, и koi8-r стал отоб-
тов, о назначении иконок на которой можно узнать, только ражаться нормально и в сообщениях.
подведя к ней мышку (возможно, со временем, когда работа А вот письмам в других кодировках так и не повезло –
дойдёт до автоматизма, это будет и удобно, что ничего лиш- они по-прежнему сохранили свою «нечитаемость». Похо-
него, но при первом знакомстве с таким интерфейсом просто же, пакет не предусматривает, что у кого-то может быть
теряешься). Зато по расположению фреймов очень напоми- несколько кодовых таблиц и что все их хорошо бы обраба-
нает привычные многим «оффлайновые» почтовые клиен- тывать по-своему.
ты типа Outlook Express, что можно считать довольно хоро- Из дополнительных функций – лишь адресная книга,
шим начинанием (особенно это поможет низкоквалифици- так что даже если абстрагироваться от проблем с коди-
рованным пользователям). Для работы требуются JavaScript ровками, пакет всё равно оставляет чувство какой-то не-
и поддержка cookies. При попытке открыть форму редакти- доработанности.
рования нового сообщения меня встретил чистый экран. По- Небольшим утешением можно считать отсутствие из-
искав в логах, я обнаружил сообщение об ошибке: вестных уязвимостей. Тем не менее ISMail можно пореко-
мендовать разве что любителям копаться в исходниках
[error] PHP Parse error: syntax error, unexpected ';'
in /var/www/webmailtesting/ismail/sendmail.php on line 167
и править локали. Ну а я с грустью констатирую, что мне
«взять Измаил» сходу не удалось, а к длительной осаде
Пришлось в указанном файле заменить строчку: я сейчас не предрасположен.
Установка выполняется в /usr/local/www/nocc. Перед на- на это, пакет вполне можно считать достаточно неплохим
чалом работы следует внести нужные изменения в конфи- выбором для использования на промышленных серверах,
гурационный файл (conf.php), к слову, очень подробно про- особенно если вы не планируете баловать своих пользова-
комментированный. Обязательно нужно установить зна- телей различными «излишествами».
чение переменной $tmpdir. Пришлось также доустановить
из php4-extensions расширение Iconv (как зависимость оно Подводим итоги
не установилось). Не забывайте перезапускать Apache пос- Для того чтобы было проще охватить сразу все рассмат-
ле добавления расширений. риваемые пакеты, наиболее важные особенности сведе-
В отличие от RoundCube и ISMail, здесь для нормальной ны в таблицу.
работы, наоборот, нужно отключить автоматическую ини- Довольно сложно вынести вердикт, что «этот пакет
циализацию сессий: хорош, а этот плох». За исключением ISMail, который
так и не удалось заставить полноценно работать, не гово-
; Initialize session on request startup ря уже о работе «из коробки» (впрочем, никто поддержку
session.auto_start = 0
русского языка здесь и не обещал), каждый из оставшихся
В противном случае получите ошибку «Невозможно вправе претендовать на вашу благосклонность.
подключиться к серверу». Cookies для поддержания сес- Если вам нужно лёгкое и нетребовательное реше-
сии не требуются. Имеется поддержка SSL. ние, то хорошими кандидатами являются Ilohamail, NoCC
Русский язык был предложен по умолчанию. или UebiMiau (последний – если для вас не слишком кри-
Интерфейс довольно милый (хотя и несколько гро- тична корректная работа с различными кодировками).
моздкий), с корректным отображением кириллицы. Ни- Для «гурманов» прекрасным выбором будет блистательный
чего лишнего (даже настроек, не говоря уже об адресных RoundCube (если не обращать внимания на не очень бога-
книгах и т. д.). Есть по умолчанию три цветовые темы (вы- тый фунционал). Если вам нужна непревзойдённая функ-
брать одну из них можно при входе, на экране ввода логи- циональность, даже ценой снижения безопасности сервера,
на и пароля). то обратите внимание на OpenWebMail или SquirrelMail.
Уязвимостей было обнаружено две (последняя из них В общем, выбирать есть из чего, и окончательное ре-
в феврале этого года – с уровнем «средний»). Несмотря шение мы оставляем за вами.
18
полезные советы FreeBSD
Как не «проморгать» нужную строку жмёте <Enter>, если удалить – вводите <d> и потом <Enter>.
Вы, думаю, помните, сколько всего выводится на экран Понятно, что если какой-то из удаляемых пакетов «держит»
при сборке ядра или какого-нибудь большого пакета. Пос- другие в качестве зависимости, то эти другие сами станут
тоянно наблюдать за выводом довольно скучно, а экранный «листовыми». Поскольку запускать «pkg_cutleaves -x» рекур-
буфер не всегда позволяет «отмотать» вывод до интересу- сивно, пока не останутся только нужные пакеты, – не самое
ющего вас момента. Можно, конечно, перенаправить вывод весёлое занятие, разработчики предусмотрели ещё один
в файл и потом изучать его сколько угодно, но в этом слу- ключ: -R. Команда «pkg_cutleaves -R» работает аналогично
чае вы теряете возможность «мониторить» процесс в ре- приведённому выше, за тем исключением, что если в сис-
жиме реального времени. Проблема легко решается с по- теме есть пакеты, от которых зависит только удаляемый,
мощью утилиты script: то они будут удалены автоматически и рекурсивно, без до-
полнительных вопросов. Как обычно в таких случаях, на-
# script /var/log/build.log
стоятельно рекомендую ознакомиться с man pkg_cutleaves
Script started, output file is /var/log/build.log и внимательно отвечать на каждый вопрос программы.
# make buildworld
<. . . отображение процесса сборки . . .>
О пользе обратных кавычек
# exit Свойство оболочки исполнять выражение в обратных ка-
exit
вычках (`команда`) и подставлять результат в исполняемую
Script done, output file is /var/log/build.log командную строку, предоставляет широчайшие возможнос-
ти для автоматизации. Например, следующая команда вы-
То есть вы всё видите на экране, но при этом весь вывод, ведет на экран конфигурационный файл текущего ядра, не-
равно как и ввод, дублируются в указанном файле. Глав- зависимо от платформы и имени этого файла:
ное, чтобы места на диске хватило. Только не забывайте,
$ cat /usr/src/sys/`uname -p`/conf/`uname -i`
что в этот же файл попадут и управляющие символы, так что
этот метод не слишком подходит для «логирования» интен- Ещё один пример:
сивной интерактивной работы, особенно если вам часто
$ touch arch`date "+%Y-%m-%d"`
приходится использовать Backspace.
В итоге вы получите файл с именем вида arch2006-07-21,
зависящим от даты исполнения команды. При необходимос-
Удалите из системы всё лишнее ти можно создавать и вложенные конструкции, например:
При интенсивной работе с пакетами программ в систе-
$ echo a`echo b\`echo c\\\`echo d\\\`c\`b`a
ме со временем накапливается много лишнего, например,
пакеты, которые устанавливались как зависимости к уже abcdcba
удалённым или обновлённым приложениям. Для их удале-
ния в «полуавтоматическом» режиме служит очень удоб- Обратите внимание на то, как приходится экранировать
ная утилита: pkg_cutleaves (установить её можно из пор- служебные символы для того, чтобы они «срабатывали»
тов: sysutils/pkg_cutleaves). Поскольку она использует воз- на нужном уровне вложенности (сам слэш тоже нуждает-
можности portupgrade, то эта программа также должна быть ся в экранировании, поэтому на «уровне d» мы вынуждены
у вас установлена. Если говорить точнее, то pkg_cutleaves использовать целых три символа «\»). Наибольшую пользу
работает с так называемыми листовыми пакетами, т.е. с та- обратные кавычки приносят при использовании в скриптах,
кими, которые не являются зависимостями для других, ус- автоматизирующих те или иные действия.
тановленных в системе. Например, команда «pkg_cutleaves
-lc» выведет (с краткими комментариями) список паке-
тов-кандидатов на удаление, среди которых будут и bash, Обновляйте коллекцию портов
без которой вы жить не можете, и какой-нибудь gmake, кото- без усилий
рый был нужен для установки приложения, уже давно «по- В FreeBSD 6.x появилась удобная утилита для обновления
чившего в бозе». Поэтому её работа в любом случае тре- портов: portsnap. Теперь не обязательно устанавливать и на-
бует вашего пристального внимания: страивать cvsup, обновление дерева очень легко выполня-
ется системными средствами:
# /usr/local/sbin/pkg_cutleaves -x
# portsnap fetch && portsnap update
Package 1 of 38:
autoconf-2.59_2 - Automatically <...> Un*x platforms (2.59)
autoconf-2.59_2 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort?
При первом запуске между этими командами понадобит-
** Keeping autoconf-2.59_2. ся ещё одна: «portsnap extract». Для автоматического скачи-
вания обновлений (например, по расписанию cron) вместо
Package 2 of 38:
bash-2.05b.007_5 - The GNU Bourne Again Shell portsnap fetch следует использовать portsnap cron.
bash-2.05b.007_5 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort?
Сергей Супрунов
И так по всем пакетам: если хотите оставить – просто
20
полезные советы
Сергей Яремчук
Не секрет, что информационные ресурсы любой компании представляют ценность. В сборе,
анализе и использовании информации задействованы практически все сотрудники. Но как ее
тяжело добыть, так же легко ее подчас потерять.
22
администрирование
С
амым распространенным спо- пространять и продавать при условии,
собом сохранения информа- что авторство будет сохранено.
ции в любой ситуации является AMANDA является надстройкой к
ее дублирование. Резервная копия, со- стандартным программам dump/restore,
храненная на другом источнике, стри- GNU tar и многим другим.
мере, жестком диске, DVD/CD, в слу- Построен по клиент-серверной схе-
чае выхода из строя основной систе- ме, причем клиент может быть уста-
мы позволит восстановить необходи- новлен на одном компьютере с сер-
мое практически с нуля. вером либо клиенты могут быть уста-
Решение задачи построения сис- новлены на всех компьютерах, кото-
тем резервного копирования и хране- рым требуется архивация.
ния данных зависит от инфраструкту- Для передачи информации исполь-
ры предприятия, ценности информа- зуется свой протокол, работающий по-
ции и требований к степени готовнос- верх UDP или TCP. Последние версии
ти такой системы. AMANDA могут взаимодействовать
Рисунок 1. Менеджер управления Arkeia
Поэтому, несмотря на кажущуюся с компьютерами Windows посредством
простоту, выбрать необходимое реше- SAMBA, либо как вариант можно ис- поненты написаны на Java и доступны
ние удается не сразу. Схожие на пер- пользовать клиента, скомпилирован- для большого числа платформ. Лока-
вый взгляд проекты не сразу раскры- ного под cygwin. лизованного интерфейса, к сожале-
вают все свои возможности, и, что- Поддерживается шифрование ин- нию, нет. Клиент в принципе не привя-
бы их выявить, иногда приходится ус- формации как на клиенте, так и на сер- зан к конкретному серверу, можно раз-
танавливать систему и пробовать ее вере, для этих целей используется не- вернуть несколько серверов и для ре-
в работе. Учитывая, что в каждой кон- симметричный GPG и симметричный зервирования выбрать любой из до-
кретной ситуации (сервер, небольшая amcrypt-алгоритм, хотя легко можно ступных, если администратор разре-
сеть, гетерогенная сеть и пр.) необхо- добавить и любой другой. Аналогично шил к нему доступ.
димо персонально подходить к реше- можно настроить и сжатие данных. Ес- Пользователи могут быть раз-
нию задачи копирования, решено бы- ли сжимать информацию на клиенте, делены на роли (ADMINISTRATOR,
ло протестировать ряд проектов, ре- это уменьшит нагрузку на сеть, если OPERATOR, USER) со своими права-
зультат в виде 17 систем различно- на сервере, то снизит нагрузку на мало- ми в системе.
го назначения представлен в итого- мощную машину клиента. При наличии Разработаны также дополнитель-
вой таблице. нескольких средств архивации на од- ные модули, позволяющие резерви-
Системные требования участни- ном сервере можно использовать не- ровать данные отдельных приложений
ков тестирования существенно раз- сколько независимых конфигураций. без их остановки.
нятся, так, если для работы сервера AMANDA оптимизирована для ра- В настоящее время доступны такие
afbackup подойдет компьютер пяти- боты со стримерами, но никто не за- модули для Lotus, Open-Xchange, LDAP,
летней давности, то для Time Navigator прещает использовать CD и DVD. MS Exchange, и баз данных Oracle,
и Arkeia Network Backup они на поря- Процессом резервирования можно mySQL, PostgreSQL, DB2, и MS SQL
док выше. руководить как вручную, так и запус- Server.
К сожалению, объемы статьи не поз- кать при помощи cron. Стоит также отметить и функцию
воляют включить в итог все существую- Disaster Recovery, появившуюся в про-
щие решения. Но главная цель статьи – Arkeia дуктах Arkeia начиная с версии 5.3.12.
не показать победителя, а помочь со- Компания выпускает два продук- С ее помощью можно восстановить
риентироваться при выборе и опреде- та – Arkeia Network Backup и Arkeia данные на компьютере под управлени-
литься с критериями. Smart Backup. Первый предназначен ем Linux или Windows всего за несколь-
для больших и средних сетей, второй – ко шагов, даже если исходный компью-
AMANDA для небольших растущих сетей, отли- тер потерян или вышел из строя.
Проект AMANDA (Advanced Maryland чаются ценой. Так, Smart Backup для Поддерживается протокол NDMP
Automatic Network Disk Archiver), нача- пользователей Linux бесплатен и ог- версии 3, позволяющий управлять дан-
тый в 1998 году в департаменте ком- раничен 50 Гб архивируемой инфор- ными на носителях. Его применение
пьютерных технологий университе- мации. Стоимость лицензии Network дает выигрыш по времени в операциях
та Maryland США, постепенно утра- Backup может колебаться от 3 000 резервирования и восстановления.
тил поддержку в родных стенах, и ис- до 15 000 у.е. Возможно несколько вариантов
ходные тексты были перемещены Построен по клиент-серверной дублирования резервной информации:
на Sourceforge. схеме. Имеются перекомпилирован- восстановление с переадресацией
В настоящее время разрабатыва- ные пакеты для большинства систем. данных, выполнение команд до и пос-
ется многими добровольцами, и, хотя Для управления процессом архиви- ле резервирования.
не заявлена лицензия GNU GPL, лю- рования используется Arkeia Manager, Удобный планировщик календар-
бой желающий может модифициро- а на клиентских машинах устанавли- ного типа позволяет выполнить все не-
вать код по своему усмотрению, рас- ваются программы-клиенты. Эти ком- обходимые операции: полную, инкре-
Bacula
Модульная архитектура этого мощно-
го средства для создания, управления
и восстановления информации поз-
воляет использовать его как в малых,
так и больших сетях. Работает по кли-
ент-серверной схеме. Относительно
прост в настройках и обладает боль-
шим количеством продвинутых воз-
можностей, позволяющих с легкостью
находить и восстанавливать утрачен-
ные или поврежденные файлы. Воз-
можно, указать индивидуальные па-
раметры для различных типов фай-
лов. Например, текстовые сжимать,
а архивы, исполняемые файлы пере-
давать без сжатия.
Центральным элементом Bacula
является Director, который отвечает
за хранение и запуск заданий, ведение
Рисунок 2. Bеб-интерфейс управления BackupPC журнала. Для хранения журналов ар-
хивных копий используется база дан-
ментную, дифференциальную копии, Чтобы знать, какие файлы уже бы- ных. В настоящее время поддержива-
восстановление и прочее. ли резервированы, клиент ведет спе- ются PostgreSQL, MySQL или SQLite,
Общее впечатление портит толь- циальный список, удаление которого хотя, если нет проблем с лицензиро-
ко передача логина/пароля в откры- приведет к тому, что повторно будет ванием, можно использовать еще око-
том виде, что при возможностях Arkeia произведено полное резервирование. ло 10 других СУБД.
может привести к утечке информации, Аналогично, так как резервная копия На компьютерах клиентов устанав-
ведь восстановить файл можно в про- привязана к имени узла, при его из- ливается File Daemon, который соби-
извольное место в сети. менении будет создана полная копия. рает данные для архивирования. Уп-
Для уменьшения нагрузки на сеть фай- равление осуществляется посредс-
Afbackup лы сжимаются индивидуально на сто- твом Bacula Console. Последние два
Построен по клиент-серверной схеме. роне клиента. компонента существуют для различ-
Сервер отвечает за работу с различ- Сервер может работать в одном ных платформ, что позволяет без про-
ными устройствами хранения инфор- из двух режимов: однопоточном, под- блем использовать Bacula в гетероген-
мации, отслеживает их состояние, ко- ходящем для полного резервирования, ных сетях.
личество. Все остальное лежит на кли- и многопоточном, для инкрементного. Также стоит отметить весьма удач-
енте. Клиент знает, какие файлы, ката- В последнем случае для каждого со- ный планировщик и систему приорите-
логи подлежат резервированию, на ка- единения открывается новый порт. та выполнения заданий.
кую кассету на стримере должна быть Все используемые кассеты получа-
записана информация. ют специальную метку, к которой при- BackupPC
На стороне клиента задействуют- вязывается записанная информация, Высокопроизводительное решение
ся три утилиты. Утилита afclient отве- поэтому желательно эту метку нанес- уровня предприятия, позволяющее
чает за связь с сервером и осущест- ти на коробку, чтобы не путать. Для ра- резервировать данные компьютеров,
вляет распаковку и упаковку файлов, боты с одним клиентом может быть на- работающих под управлением UNIX/
afrestore – за восстановление инфор- строено несколько серверов. Предус- Linux, MacOS X и Windows разных вер-
мации, а afclient выполняет контро- мотрено дублирование архива. сий. Прост в настройке и поддержке.
лирующие и управляющие функции. Восстановлением информации мо- Не требует клиентского ПО.
Для последних двух утилит имеются жет руководить как пользователь, так и Для резервирования данных
фронт-енды xafrestore и xclientconfig. централизованно администратор. Windows-систем, используется про-
24
администрирование
токол smb (или rsync работающий че- Для верифика-
рез cygwin), UNIX и Linux – rsync или tar ции записанной ин-
(над ssh/rsh/nfs). формации исполь-
Для экономии ресурсов одинако- зуется MD5, опцио-
вые файлы с одного и даже несколь- нально архив мож-
ких компьютеров загружаются только но зашифровать
один раз, затем для привязки к конк- с помощью GnuPG.
ретной системе используются жест-
кие ссылки, если на одной из систем Backupninja
такой файл изменился, то он будет пе- Большинство сво-
резаписан. бодных скриптов
Для управления процессом резер- и программ пред-
вирования и восстановления инфор- назначенных для
мации, просмотра журналов и файлов создания резерв-
в архиве, настройки, используется веб- ных копий имеют
интерфейс (т.е. придется ставить еще неудобный файл
и веб-сервер), который, к сожалению конфигурации или
не локализован. Выбранный для вос- вообще обходятся Рисунок 3. Мультиплатформенный интерфейс к Box Backup - Boxi
становления файл может быть скопи- без такового. Це-
рован на любой ресурс. лью проекта backupninja как раз и яв- клиента bbackupd, задача которого
Следует также отметить поддержку ляется повышение удобства при ис- контролировать изменения и загру-
резервирования систем, подключаю- пользовании таких программ, путем жать их на сервер и bbackupquery, инс-
щихся к сети периодически без пос- создания набора конфигурационных трумента, предназначенного для со-
тоянного IP-адреса и работающих че- файлов расположенных в etc/backup.d/, здания запросов и восстановления
рез медленные каналы. Резервирова- имеющих единую, простую и понят- информации.
ния можно настроить как персонально, ную структуру. И попутно объедине- Особое внимание уделено воп-
так и указать параметры, зависящие ние возможностей нескольких про- росам безопасности данных. Так, со-
от операционной системы клиента. Оп- грамм. Псевдографическая консоль единение между клиентом и серве-
ределить различные задачи для пол- ninjahelper упрощает создание конфи- ром по умолчанию происходит по за-
ных и инкрементных копий. Если ин- гурационных файлов и кроме того вы- шифрованному каналу, для генериро-
формация с компьютера некоторое дает подсказки по проведению некото- вания и управления ключей, необходи-
время не резервировалась, то поль- рых операций. мых при аутентификации, в комплекте
зователю будет послано предупреж- Поддерживается создание копий имеются скрипты. Кроме того, резер-
дение посредством электронной поч- с удаленных ресурсов (посредством вируемые файлы на клиенте шифру-
ты. Работает с архивами, созданными rdiff-backup), создание зашифрован- ются при помощи AES, а метаданные
AMANDA (т.е. практически может слу- ных GnuPG-образов (duplicity), резер- Blowfish. Поэтому даже если сервер
жить к нему интерфейсом). вирование Linux-Vserver, баз данных компрометирован, данные все равно
MySQL и РostgreSQL, содержимого остаются в безопасности. Резервиро-
Backup Manager 0.7.4 OpenLDAP, SVN-репозитариев, выда- вание происходит в режиме «snapshot».
Представляет собой инструмент, уп- ча информации по системе и аппарат- После первого копирования в дальней-
рощающий процесс создания резер- ному составу. Информация по работе шем для обновления резервной копии
вных копий, как полных, так и инкре- может отправляться на указанный поч- используется rsync, поэтому в дальней-
ментных. Для восстановления инфор- товый адрес. шем трафик может быть относительно
мации Backup Manager не использу- небольшой. Старые версии не заменя-
ется. Но зато с его помощью очень Box Backup ются новыми, а удаляются только когда
просто организовать копирование ло- Система резервирования Box Backup остется мало свободного места.
кальных каталогов, баз данных MySQL принадлежит к так называемым on-line. По умолчанию в комплекте идут
и SVN-репозитариев в архивы несколь- Разработчики считают, что в некото- только утилиты командной строки,
ких видов, на CD/DVD-диски, а также рых случаях дешевле вместо одно- но отдельно разработан графический
на удаленные ресурсы. го весьма дорогого стримера приоб- клиент Boxi (http://boxi.sourceforge.net),
В качестве протоколов последних рести обычный сервер с нескольки- использующий мультиплатформенную
поддерживаются FTP, SSH, RSYNC ми дисками. У такой системы есть од- библиотеку wxWidgets. С его помощью
и Amazon S3 (Simple Storage Service, но, но очень ценное достоинство: все довольно просто настроить опции ко-
http://aws.amazon.com). Кроме то- данные пользователю доступны по пирования и восстановления файлов.
го, есть возможность выполнения первому требованию, ведь все хра-
pre и post-скриптов, что позволяет, нится на сервере, и нет необходимос- BRU Server
например, автоматически монтиро- ти в смене кассет. Построен по клиент- Простая в установке и использова-
вать и размонтировать SMB, NFS- серверной схеме. И состоит из трех нии система, подходящая для созда-
ресурсы. элементов: сервера bbstored, бэкап- ния резервных копий индивидуальным
№9, сентябрь 2006 25
администрирование
Свободная характеристика систем резервного копирования
Backup
0.7.4 http://www.backup-manager.org GNU GPL GNU/Linux cron
Manager
Команда auto_check,
http://web.mit.edu/~emin/www/
сохраняющая данные
DIBS 0.9.2 source_code/dibs/index.html, GNU GPL Linux и другие POSIX-системы, Windows
в определенных
http://dibs.sourceforge.net
каталогах
Внутренний
Hydra 0.3.1 http://www.cprogrammer.org/trac/hydra GNU GPL UNIX-подобные
планировщик
26
администрирование
Нет, данные
Полное
GPG-ключ GnuPG шифруются перед Нет Полное/выборочное
Инкрементное
передачей
Клиент, кроме
Есть, кроме того Полное
Пароль, Active того информация Полное/выборочное/
данные шифруются Инкрементное Есть
Directory подписывается другая система
перед передачей Выборочное
хэшем
Полное
Полное/выборочное/
Пароль Нет OpenSSH Инкрементное gzip/bzip2
другая система
Выборочное
Полное Полное/выборочное/
Локальный
Нет Нет Сохранение «сырых» gzip/bzip2 другая система/
пользователь
разделов клонирование
Полное
Данные шифруются Полное/выборочное/
Пароль mcrypt или GnuPG Инкрементное gzip/bzip2/lzop
перед передачей другая система
Выборочное
Полное Полное/выборочное/
Пароль Нет Нет bzip
Только каталоги другая система
28
администрирование
здания резервных копий. Как и боль- тов, то он имеет специальную струк- зервирования. Всю работу выполняет
шинство проектов synbak является туру Security and Compliance Manager сервер, результат сохраняется в ката-
удобным интерфейсом для существу- (SCM), управляющую ключами и сер- лог ftp-сервера. К сожалению, Hydra
ющих программ. Используется простой тификатами. Вся информация разби- умеет создавать только полные копии
и понятный файл конфигурации. Под- та на классы, к которым используют- и только локальных каталогов, если
держивается создание резервных ко- ся разные правила защиты, это позво- нужны инкрементные и дифференци-
пий, в том числе и с удаленных ресур- ляет более гибко использовать ресур- альные, то этот проект не для вас. Ка-
сов с использованием rsync (ssh, rsync, сы без ущерба безопасности. Для кон- талоги можно копировать ежедневно,
SMB/CIFS), баз данных MySQL и Oracle, троля безопасности ведутся журна- еженедельно или ежемесячно.
каталогов LDAP, на архивы tar (tar, tar. лы аудита, в которых заносится вся Файл конфигурации не использует-
gz и tar.bz2), стримеры и CDR/CD-RW/ информация о деятельности поль- ся, вместо этого все введенные адми-
DVR/DVD-RW. Ресурсы cifs/smb при не- зователя. Система генерации отче- нистратором параметры сохраняются
обходимости могут быть монтированы тов ReporterTM, собирающая данные в файл /var/lib/hydra/targets_dump.
и размонтированы автоматически. Ло- со всех ресурсов, позволит получить В комплекте с системой поставля-
кальные базы MySQL могут быть со- практически всю необходимую при ад- ется как клиент командной строки, поз-
хранены в разных архивах, удаленные министрировании информацию, опре- воляющий управлять процессом уда-
только в одном архиве. Любой удален- делить слабые места и выработать оп- ленно, так и графический PyQT-кли-
ный ресурс может быть указан в стан- тимальную стратегию резервного ко- ент. Клиенты могут использоваться
дарте URI, то есть протокол://пользо- пирования. для администрирования процессов ре-
ватель:пароль@узел/рeсурс. Система зервного копирования на любом сер-
отчетов также стоит внимания, подде- Mondo Rescue вере Hydra в сети, для доступа исполь-
рживается вывод на консоль, отправ- Представляет собой набор утилит, ус- зуется пароль, хеш которого сохраня-
ка электронной почты, RSS-сообще- танавливающихся в систему, либо за- ется в ~/.hydra, позволяя в последую-
ний, а также генерация html-файла. гружаемых с CD. Он предназначен для щем не вводить его при подключении
При этом synbak имеет модульную ар- создания резервной копии любой ло- к серверу.
хитектуру, позволяющую легко адапти- кальной области системы и записи их
ровать для любой другой задачи, до- затем на CD/DVD, стример, жесткий Hdup2
бавлен как новый метод резервирова- диск или NFS-сетевой ресурс. В слу- Небольшая по размеру, простая в на-
ния, так и любые формы отчетов. чае краха можно будет очень легко стройках, но в то же время доволь-
восстановить, и в том числе и с ну- но мощная утилита резервного копи-
Time Navigator ля, не только сохраненную информа- рования. Поддерживаются все при-
Очень мощная, легко расширяемая цию, но и систему. Поэтому Mondo мо- сущие большинству подобных ути-
коммерческая разработка компании жет пригодиться не только в аварий- лит возможности: include/exclude спи-
Atempo, предназначенная в первую ных случаях, но и при переразбиении сок, резервирования с удаленных ис-
очередь для больших предприятий, ра- дискового пространства или, напри- точников, шифрование архива. Кроме
ботающих в гетерогенной среде. Адми- мер, при переходе на RAID. того, возможно разбиение резервной
нистрация упрощена благодаря проду- Также этот пакет весьма удобен для копии на файлы установленного раз-
манному унифицированному интер- клонирования системы на несколько мера, для того чтобы записать их за-
фейсу, позволяющему без проблем компьютеров с одинаковой конфигура- тем на CD/DVD-диск, отдельные под-
управлять несколькими серверами. цией. Для создания ежедневных резер- каталоги можно исключить при помо-
При этом хранение информации про- вных копий он не удобен. Mondo Rescue щи .nobackup-файлов.
зрачно для пользователя, хотя копии поддерживает почти все файловые
различного назначения могут хранить- системы, о которых знает ядро Linux Как видите, выбирать есть из че-
ся на разных ресурсах с разным време- ext2/3, JFS, XFS, ReiserFS, VFAT, а так- го, и я надеюсь, статья поможет вам
нем доступа (месяц – стример, день – же LVM и RAID. Возможность клониро- в этом. Успехов.
диск и пр.). Поддерживается работа вания позволяет использовать Mondo
с протоколом NDMP. Rescue и для резервирования не-Linux 1. Яремчук С. Cпасем пингвина: Mindi
Применение Virtual Library System файловых систем, например NTFS. Linux и Mondo Rescue.//«Системный ад-
(VLS) позволяет эмулировать стример В работе помогает понятная curses- министратор», № 2, 2004 г. – С. 14-17.
на жестком диске. Вся информация пе- консоль, позволяющая руководить 2. Маркелов А. Linux на страже Windows.
ред передачей шифруется, кроме то- процессом сохранения и восстанов- Обзор и установка системы резервного
го, возможно создание защищенных ления информации. Кстати, Mondo копирования BackupPC.//«Системный
туннелей, для проверки оригиналь- Rescue используют такие компании, администратор», № 9, 2004 г. – С. 2-7.
ности создается хеш. После передачи как Siemens, HP, IBM, NASA. 3. Гринько А. Архивируем данные с помо-
на сервер данные повторно проверя- щью Bacula.//«Системный администра-
ются путем сравнения хэшей, вырабо- Hydra Backup System тор», № 4, 2005 г. – С. 42-47.
танных клиентом и сервером. Так как Клиент-серверная система, в которой 4. Коршунов А. Box Backup – горячие ре-
Time Navigator предназначен для ра- клиент используется администрато- зервные копии.//«Системный админис-
боты с большим количеством клиен- ром для настройки параметров ре- тратор», № 5, 2006 г. – С. 6-11.
Упаковщики исполняемых
файлов в Linux/BSD
Крис Касперски
Большинство UNIX-программ распространяются в исходных текстах, но количество
коммерческих продуктов с закрытым кодом неуклонно растет. Зачастую они распространяются
в упакованном виде, что не только препятствует анализу, но снижает производительность
и ухудшает совместимость с UNIX-клонами. Покажем на примере ELFCrypt, UPX, Burneye и Shiva,
как можно освободиться от упаковщиков.
В
Windows упаковщики исполня- ках уже есть (и многие коммерческие и погубило. На всех Linux/BSD-сис-
емых файлов получили очень фирмы хотели бы выпустить закрытые темах, до которых я только смог до-
б ол ь ш о е р а с п р о с т р а н е н и е порты своих продуктов под UNIX, ос- тянуться, Shiva падает с сообщением
и сформировали обширную рыноч- новательно их защитив), но рынок про- «Segmentation fault». Какое же это счас-
ную нишу, переваривающую огром- текторов еще не успел сформировать- тье Windows-программистам иметь од-
ные деньги, питающие целые фирмы ся, а потому разработкой упаковщиков ну, ну пусть две (с учетом 9x) ОС, прак-
и привлекающие высококвалифици- занимается от силы десяток энтузиас- тически полностью совместимые меж-
рованных специалистов, создающих тов, повторяющих трюки времен ран- ду собой даже на уровне недокументи-
нехилые защитные механизмы, борь- ней молодости MS-DOS, и только Shiva рованных возможностей!
ба с которыми требует консолидации попытался предпринять качественный Создание надежной защиты, запус-
всего хакерского сообщества. рывок вперед, вплотную приблизив- кающейся более чем на одной версии
Под UNIX ситуация обстоит прибли- шись к протектору Software Passport Linux, – практически безнадежное де-
зительно так: потребность в упаковщи- (бывший Armadillo), однако, это его ло, а если вспомнить про BSD и экс-
30
администрирование
Упаковщики ма уже не может «выкинуть» принадлежа- полностью утратила смысл и стала толь-
и производительность щие ему страницы, ведь возможности пов- ко вредить (она хорошо работала в эпоху
При запуске файла с дискеты или CD-ROM торно загрузить их с диска уже нет и при- господства MS-DOS, но те времена дав-
упаковка действительно ускоряет загрузку, ходится заниматься вытеснением в swap. но прошли). Теперь упаковывать (а точ-
поскольку физически передается сущест- При однократном запуске программы это нее, зашифровывать) файл стоит только
венно меньший объем данных, а скорость еще не так заметно, но многократный за- ради того, чтобы затруднить его анализ,
этих устройств несопоставима со скоро- пуск упакованного файла приводит к су- да и то… стоит ли? Хакеры все равно взло-
стью процессора, поэтому временем рас- щественному замедлению загрузки (ведь, мают (ни один из существующих протекто-
паковки можно полностью пренебречь и по- вместо того, чтобы обратиться к уже загру- ров не избежал этой участи), а вот у легаль-
лученный выигрыш численно равен степе- женным страницам, операционной системе ных пользователей снижается производи-
ни упаковки. приходится заниматься распаковкой каж- тельность и появляются проблемы совмес-
При запуске с жесткого диска все про- дый раз). По той же причине растут потреб- тимости, тем более, что будущее все рав-
исходит с точностью до наоборот. Неупако- ности в оперативной памяти – несколько но за открытым программным обеспече-
ванный elf проецируется непосредственно экземпляров упакованной программы не нием. Как показывает практика, по мере
в оперативную память и в swap вытесня- могут совместно использовать общие стра- взросления любая отрасль неизбежно при-
ются только модифицированные страни- ницы физической памяти. В довершение ходит к открытым стандартам – взять хотя
цы секции данных. При запуске несколь- ко всему большинство упаковщиков тре- бы автомобилестроение или электрони-
ких экземпляров неупакованного elf-фай- буют дополнительной памяти для склады- ку. Лет тридцать назад японцы (в то вре-
ла выделения новых страниц физической вания промежуточных результатов распа- мя лидеры в этой области) закладывали
памяти практически не происходит, вместо ковки. На утилитах, запускаемых огромное в свои радиоприемники/магнитофоны ам-
этого операционная система просто отоб- количество раз (например, make), разница пулы с кислотой, чтобы при вскрытии кор-
ражает на адресное пространство процес- между упакованным и неупакованным фай- пуса все разъедало. Чуть позже для этой
са ранее загруженные страницы. лом просто колоссальна! же цели стали применять эпоксидную смо-
Если же файл упаковать, то при запус- Отсюда вывод: с появлением жест- лу, а сейчас… принципиальные схемы раз-
ке он модифицирует всю свою проекцию ких дисков и многозадачных операцион- даются всем сервисным центрам или отда-
целиком, а это значит, что при нехватке ных систем со страничной организаци- ются под чисто формальное соглашение
физической памяти операционная систе- ей памяти упаковка исполняемых файлов о неразглашении.
периментальные ядра типа Hurd, то к программированию Достаточно просто установить точку сразу же за кон-
можно даже не приступать. В то же время, слабость защит- цом расшифровщика (в данном случае она расположена по
ных механизмов компенсируется отсутствием достойного адресу 80495F9h), после чего в нашем распоряжении ока-
хакерского инструментария, поэтому даже простейшая за- жется расшифрованный elf, с которого можно снять дамп.
щита представляет собой большую проблему, превращая В случае с gdb последовательность команд будет выгля-
распаковку программ в довольно нетривиальную задачу! деть приблизительно так (см. листинг 2).
Но мы ее решим! Начиная с самых простых упаковщиков Кстати говоря, последние версии IDA Pro, портирован-
и приобретая в сражении тактические навыки и необходи- ные под Linux, содержат интерактивный отладчик в стиле
мый инструментарий, в конечном счете, мы сможем сра- Turbo-Debugger, работающий через prtace() и позволяющий
зиться с кем угодно! делать такие вещи прямо в дизассемблере! Но специально
на этот случай JunkCode подложил хакерам большую сви-
ELF-Crypt нью, сбивающую IDA Pro с толку.
Простейший шифровщик (не упаковщик!) elf-файлов, со- Изменив точку входа в elf-файл (entrypoint) путем пере-
зданный индийским студентом по прозвищу JunkCode направления ее на тело своего расшифровщика, он «забыл»
(junkcode@yahoo.com) и распространяющийся в исходных тек- скорректировать символьную метку _start, продолжающую
стах: http://www.infogreg.com/
source-code/public-domain/ Листинг 1. Дизассемблерный листинг расшифровщика, внедряемого ELFCrypt в файл
(как он выглядит в hiew)
elfcrypt-v1.0.html.
Он шифрует кодовую :entrypoint
.080495DC: EB02 jmps .0080495E0 ; переходим на расшифровщик
секцию (которой, как пра- .080495DE: 06 push es ; \ мусор, оставленный...
вило, является секция .text) .080495DF: C6 ??? ; / ...транслятором ассемблера
.080495E0: 60 pushad ; сохраняем все регистры в стеке
и встраивает в elf-файл кро- .080495E1: 9C pushfd ; сохраняем флаги в стеке
хотный расшифровщик, .080495E2: BEC0820408 mov esi, 0080482C0 ; начало расшифровываемого фрагмента
.080495E7: 8BFE mov edi, esi ; EDI := EDI (расшифровка на месте)
возвращающий ее в ис- .080495E9: B978000000 mov ecx, 000000078 ; количество двойных слов для расшифровки
ходный вид. Не содержит .080495EE: BBBD03CC09 mov ebx, 009CC03BD ; ключ расшифровки
.080495F3: AD lodsd ; читаем очередной двойное слово <-----+
никаких антиотладочных .080495F4: 33C3 xor eax,ebx ; расшифровываем через xor |
приемов и замечательно .080495F6: AB stosd ; записываем результат на место |
.080495F7: E2FA loop .0080495F3 ; мотаем цикл -------------------------+
распаковывается любым .080495F9: 9D popfd ; восстанавливаем флаги из стека
отладчиком, в том числе .080495FA: 61 popad ; восстанавливаем все регистры
.080495FB: BDC0820408 mov ebp, 0080482C0 ; адрес оригинальной точки входа (OEP)
и gdb/ald (см. листинг 1). .08049600: FFE5 jmp ebp ; передаем управление расшифрован. коду
32
администрирование
функций! Но тот факт, что файл все-таки работает, убеж- ; ничего! Отладчик же показывает код, засылающий в стек
; смещение первого (считая от нуля) элемента таблицы .got
дает нас, что да – может! Просто IDA Pro в попытке «эму- ; и передающего управление по адресу, записанному во втором
ляции» загрузки elf-файла помещает в extern то, чего там ; элементе таблицы .got. Как следует из спецификации
; elf-формата, первые три элемента секции .got зарезервированы
на стадии загрузки файла еще нет. ; для служебных целей и вторая из них хранит адрес функции
Здесь мы подходим к одной из самых любопытных ; _dl_map_object_deps, которая, получив в качестве аргумента
; адрес начала .got, читает его содержимое
особенностей строения elf-файлов. В отличие от Windows, ; (а содержатся там ссылки на библиотечные функции)
где заполнение extern происходит на стадии загрузки ; и заполняет extern фактическими адресами
файла в память, в UNIX это делает стартовый код, при- 0x4000bbd0 in _dl_map_object_deps () from /lib/ld-linux.so.2
чем делает он это очень хитрым способом. Ниже пока- 1: x/i $pc 0x4000bbd0 <_dl_map_object_deps+4384>: push %eax
зан протокол трассировки программы под отладчиком ; ага! Вот эта функция, расположенная на моей машине
с моими комментариями, отмеченными знаком «;» и со- ; по адресу 4000BBD0h, принадлежащему библиотеке libc.so.6
; (на других машинах этот адрес может быть иным)
держимым дизассемблерного листинга IDA Pro, отме- ; она-то и выполняет всю работу по инициализации extern,
ченным знаком «#». Как говорится – сравните и почувс- ; в котором находится наш расшифровщик, уже расшифровавший
; программу, а затем вызывает __libc_start_main,
твуйте разницу! ; так что загрузка динамической библиотеки происходит
Для облегчения понимания возьмем незашифрованную ; совершенно прозрачно
программу, необработанную ELFCrypt:
Вот такая, оказывается, она IDA Pro! Чтобы скрыть код
Листинг 5. Протокол отладки, иллюстрирующий ход от глаз исследователя, достаточно разместить его в extern.
динамической загрузки
Для вирусов, червей и прочего malware это очень даже акту-
; устанавливаем точку останова на начало стартового кода ально (особенно в свете того факта, что IDA Pro уже давно
(gdb) b _start
стала дизассемблером де-факто). На самом деле, IDA Pro
Breakpoint 1 at 0x80482c0: file ../sysdeps/i386/elf/start.S, line 47. (а точнее, elf-загрузчик) тут совсем не причем, «просто мы
; запускаем программу на выполнение не умеем его готовить» . Чтобы все заработало правильно,
(gdb) r необходимо при загрузке файла взвести флажок «Manual
Breakpoint 1, _start () at ../sysdeps/i386/elf/start.S:47 Load» и в появившемся диалоговом окне «Loading options»
выбрать «Force using of PHT instead of SHT» (см. рис. 2).
; ок, мы в точке входа. Смотрим на extern
(gdb) x 0x80495DC Теперь и точка входа отображается нормально и файл
можно расшифровать прямо встроенным в IDA Pro расшиф-
# extern:80495DC 7F 01 00 00 extern puts@@GLIBC_2_0:near
0x80495dc: 0x00000000 ровщиком (см. рис. 3), после чего продолжить дизассемб-
лирование или снять готовый дамп.
; IDA Pro нас уверяет, что extern содержит адрес 0000017Fh,
; но в действительности область extern на момент запуска Тот факт, что функция _dl_map_object_deps() вызыва-
; файла девственно чиста и забита нулями ется из стартового кода, дает в наши руки универсальный
#.text:080482C0 _start proc near способ распаковки elf-файлов, упакованных практически
#.text:080482C0 31 ED xor ebp, ebp любым упаковщиком, за исключением тех случаев, когда
1: x/i $pc 0x80482c0 <_start>: xor %ebp,%ebp
файл слинкован со всеми используемыми библиотеками
; незначащие машинные инструкции пропущены статическим образом (то есть действует по принципу «все
#.text:080482D7 68 90 83 04 08 push offset main свое всегда ношу с собой»), но такие файлы встречают-
1: x/i $pc 0x80482d7 <_start+23>: push $0x8048390
#.text:080482DC E8 CF FF FF FF call ___libc_start_main
ся достаточно редко. Если только упаковщик не сопротив-
1: x/i $pc 0x80482dc <_start+28>: call 0x80482b0 <_init+56> ляется отладчику, достаточно всего лишь установить точ-
ку останова на _dl_map_object_deps() и... дождаться, ког-
; но вот стартовый код вызывает библиотечную функцию
; ___libc_start_main, поскольку компилятор еще не знает да она сработает. Тут же в стеке по адресу [ESP+08h] бу-
; ее фактического адреса, он вставляет переходник к секции дет адрес возврата из CALL __libc_start_main, а по адресу
; .plt, содержащей переходники к секции .got,
; заполняемой динамическим загрузчиком
#.plt:080482B0 ___libc_start_main proc near
#.plt:080482B0 FF 25 D0 95 04 08 jmp ds:off_80495D0
1: x/i $pc 0x80482b0 <_init+56>: jmp *0x80495d0
Рисунок 3. Расшифровка файла непосредственно в IDA Pro ; дизассемблер показывает типичный стартовый код,
; значит, приложение уже распаковано!
[ESP+0Ch] указатель непосредственно на саму main. Ес-
ли, конечно, нам повезет… Проблемы начинаются с того, Как вариант, изучив код распаковщика, можно напи-
что gdb с большой неохотой устанавливает точки остано- сать скрипт для IDA Pro, выполняющий распаковку само-
ва на shared-функции и потому точка останова обязатель- стоятельно. Это хорошо работает с несложными расшиф-
но должна быть аппаратной, причем срабатывать она мо- ровщиками/распаковщиками, и в данном случае листинг
жет несколько раз. Левые, срабатывая, распознаются лег- укладывается всего в несколько строк:
ко. Если по [ESP+08h] и [ESP+0Ch] лежит совсем не то, что
ожидалось (а это легко определить по диапазону адресов), Листинг 7. Скрипт для IDA Pro, расшифровывающий программу
пропускаем текущее срабатывание точки останова и про- auto a,x;
должаем выполнение программы командой «c». for(a=0x80482C0;a<0x8048338;)
{
Примерный сеанс работы с отладчиком может выгля- x=Dword(a);
деть так: x = x ^ 0x9CC03BD;
PatchDword(a,x);
a = a + 4;
Листинг 6. Распаковка программы путем установки точки }
останова на _dl_map_object_deps
34
администрирование
рован, что (теоретически) должно существенно упростить Листинг 10. Затертая сигнатура
дизассемблирование, но практически из-за отсутствия сим- 000013B390: 92 24 FF 00 55 50 58 21 │ 0D 0C 08 07 8F F1 E8 8C Т$ 6669♪♀◘•ПёшМ
вольных имен библиотечных функций анализ рискует пре- 000013B3A0: 05 97 B4 63 8C 6F 43 00 │ 19 EC 0D 00 00 41 52 00 ♣Ч┤cМoC ↓ь♪ AR
000013B3B0: 49 14 00 37 80 00 00 00 │ I 7А
вратиться в пытку.
Если же снимать дамп необязательно и достаточно Файл запускается так же, как и раньше, но теперь UPX
просто «посмотреть», что делает упакованная программа, наотрез отказывается его распаковывать:
можно использовать утилиту ltrace, сеанс работы с кото-
рой показан ниже. Как видно, ELFCrypt совсем не пытает- Листинг 11. Встроенный распаковщик UPX не смог распаковать
файл с затертой сигнатурой
ся ей противостоять.
root@5[upx-2.01-i386_linux]# ./upx -d elinks
Листинг 8. Результат работы ltrace Ultimate Packer for eXecutables
Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006
__libc_start_main(0x80483c4, 1, 0xbffffb34, 0x8048410, 0x8048470 <unfinished ...> UPX 2.01 Markus Oberhumer, Laszlo Molnar & John Reiser Jun 06th 2006
printf(0xbffffac0, 0x40017a50, 0xbffffad8, 0x804842b, 0x6c6c6568) = 13
hello, world! File size Ratio Format Name
gets(0xbffffac0, 0x40017a50, 0xbffffad8, 0x804842b, 0x6c6c6568) = 0xbffffac0 -------------------- ------ ----------- -----------
+++ exited (status 192) +++ upx: elinks_2: NotPackedException: not packed by UPX
Unpacked 0 files.
36
администрирование
LOAD:05371A0D mov ebp, esp Листинг 15. Фрагмент файла, упакованного протектором Burneye
; увеличиваем секретную переменную
LOAD:05371A0F inc anti_debug .05371035: FF3508103705 push d,[05371008]
LOAD:05371A15 leave .0537103B: 9C pushfd
.0537103C: 60 pushad
LOAD:05371A16 retn ; выходим из обработчика .0537103D: 8B0D00103705 mov ecx,[05371000]
.05371043: E93A000000 jmp .005371082 ---↓ (1)
Программа устанавливает свой собственный обработ-
чик (в приведенном выше листинге он обозначен как anti_ После запуска упакованного файла на диске автома-
handler), ожидающий прихода сигналов типа SIGTRAP, а за- тически образуется распакованный ./burnout, который уже
тем вызывает прерывание INT 03h. При нормальном разви- не привязывается к машине и который можно свободно от-
тии событий управление получает anti_handler, увеличиваю- лаживать или дизассемблировать в свое удовольствие.
щий значение переменной anti_debug, которая тут же про- Выгрузка резидентного модуля из памяти осуществля-
веряется со своим первоначальным значением. При рабо- ется командой «rmmod burndump», но не спешите с ним
те под отладчиком сигнал SIGTRAP «поглощается» отлад- расставаться! Слегка доработав исходный текст, мы смо-
чиком, и anti_handler управления не получает. жем распаковывать и другие протекторы (когда они появят-
Основная проблема протектора в том, что переменная ся), а не только один лишь Burneye. Дампер уровня ядра –
anti_debug проверяется в одном-единственном месте, один- это вещь! Это настоящее оружие, с которым очень трудно
единственный раз! Чтобы обойти защиту, можно либо за- справиться на прикладном уровне! (Впрочем, Burneye с лег-
писать в переменную anti_debug любое значение, отличное костью снимается и PD). Короче, победу над Burneye мож-
от нуля, либо трассировать программу вплоть до достиже- но считать полной и окончательной.
ния INT 03h, после чего «вручную» изменить значение ре-
гистра $pc на anti_debug и спокойно продолжить отладку. Shiva
Так же можно заменить инструкцию «cmp anti_debug, 0» Весьма амбициозный протектор, созданный двумя гуру Neel
на «cmp anti_debug, 1» (но это только в том случае, если Mehta и Shaun Clowes (Email: shiva@securereality.com.au)
в программе нет проверки целостности собственного ко- и представленный ими на конференции Black Hat, прохо-
да). Короче, вариантов много, но все они требуют участия дившей в Азии в 2003 году.
человека, что напрягает.
Когда борьба с Byrneye всех хакеров окончательно до-
стала, некто по имени ByteRage (byterage@yahoo.com) на-
писал автоматический распаковщик – burneye unwrapper,
по обыкновению бесплатно распространяемый в исходных
текстах. Впрочем, называть «исходными текстами» крошеч-
ную C-программу, представляющую собой загружаемый мо-
дуль ядра, можно только с большой натяжкой.
К ач а е м h t t p : / / b y t e r a g e . h a c k a h o l i c . o r g / s o u r c e /
burndump.c, компилируем своим любимым компилятором
«gcc c burndump.c» (на некоторых системах необходимо яв-
но указать включаемые файлы «gcc c I/usr/src/linux/include
burndump.c») и загружаем внутрь ядра «insmod burndump»
(естественно, для этого необходимо иметь права root). Те-
перь burndump будет сидеть резидентно в памяти и перехва-
тывать системный вызов brk(), который нужен упаковщику
для расширения сегментов elf-файла в памяти. К момен- Рисунок 6. Обход антиотладочного приема в отладчике,
интегрированном в IDA Pro
ту вызова этой функции файл уже распакован – остается
только снять с него дамп и записать на диск. Чтобы не пи-
сать все подряд, необходимо как-то отождествить упаков-
щик. В burndump за это отвечает следующая малопонят-
ная конструкция:
codeptr = current->mm->start_code + 1;
/* caller == burneye ??? */
if ((codeptr >> 16) == 0x0537)
printk("<1> 7350 signature 0x0537 found!\n");
38
администрирование
ванных блоках инструкции PUSH, JMP и CALL на INT 03h Основные характеристики наиболее популярных UNIX-упаковщиков
(неблагоприятные для хакеров свойства затемнены)
и эмулирует их выполнение. Все очень просто. Shiva держит
в памяти специальную таблицу с адресами замещенных Характеристика ELF-Crypt UPX Byrneye Shiva
инструкций, и если TRAP по выполнению INT 03 приходит anti-debug нет нет да да
по одному из этих адресов – задействуется механизм эму- anti-dissembler есть нет да да
ляции. В практическом плане это означает, что даже рас-
anti-ltrace нет да да да
шифровав все зашифрованные блоки, мы все равно не смо-
allow to attach да да да нет
жем избавиться от Siva RTL (среды исполнения) и будем
вынуждены «тащить» протектор за собой, если, конечно, anti «procdump» да нет нет да
не декодируем эту таблицу адресов и не восстановим «ук- интерфейс libc syscall syscall syscall
раденные» команды. содержит распаковщик нет да нет нет
Для противодействия дизассемблеру Shiva генери- взломан да да да да
рует большое количество полиморфного кода и постоян-
но совершает прыжки в середину инструкций, что ужас- ки, упаковщики исполняемых файлов, возможно, начнут
но напрягает. играть существенную роль, но пока же они годятся раз-
Короче говоря, Shiva – это кривая калька с Armadillo ве что для забавы и… подготовки к схватке с по-насто-
и к тому же неработающая. В то время как под Windows ящему серьезным противником.
протектор Armadillo уже давно не является чудом инже- Хакерские утилиты под UNIX уже пишутся, и к тому
нерной мысли, ситуация в мире UNIX напоминает СССР моменту, когда защитные механизмы выйдут на арену,
в эпоху «персональных компьютеров коллективного ис- разработчики с удивлением обнаружат, что ситуация
пользования». уже совсем не та, что пару лет назад, и теперь им про-
тивостоят не пионеры, ковыряющие внутренности UNIX
Заключение в свободное время от основных дел, а хорошо подго-
Через несколько лет, когда рынок закрытого програм- товленные специалисты, которых никаким протектором
много обеспечения под UNIX достигнет критической точ- не напугаешь.
Андрей Гущин
Вы в очередной раз не можете понять, откуда у конкурентов база данных ваших клиентов?
Или кто из сотрудников периодически использует рабочее место для перекачки, обработки
и записи гигабайтов личных фотографий с цифровой камеры на CD? Без надежной системы
контроля доступа к мобильным устройствам вряд ли удастся избежать подобных ситуаций.
Что мы имеем сегодня? изменениями политик в данном случае и работы защищенных от копирова-
Проблема контроля над нелегальной затруднительно. ния коммерческих программ. Возмож-
миграцией данных за пределы орга- ность ведения журнала операций чте-
низации с использованием перенос- Есть ли варианты? ния-записи позволяет создать систе-
ных устройств (flash-накопители, пе- Несколько месяцев назад компания му безопасности, основанную не толь-
реносные HDD, PCMCIA-карты, КПК SecurIT (http://www.securit.ru), разработ-
ко на превентивном предотвращении
и пр.) давно актуальна для многих ком- чик популярных систем защиты инфор- доступа, но и на анализе тех операций,
паний. Но до сих пор ее решение сво- мации при ее хранении на дисках и лен- которые должны выполняться по долгу
дится к созданию нетривиальных поли- тах, анонсировала новый продукт – службы. Таким образом, в ситуациях,
тик безопасности. Однако такие реше- систему Zlock, основное назначение когда из-за специфики работы нельзя
ния, во-первых, сложны и нестандар- которой – разграничение прав поль- полностью запретить запись информа-
тны, во-вторых – в большинстве реа- зователей на использование внешних ции на переносные носители (напри-
лизаций не позволяют проводить цент- устройств, например USB-flash-дисков мер, IT-компании), созданная система
рализованный аудит событий, связан- и пр. В статье речь пойдет о последней безопасности будет вести журнал всех
ных с копированием данных на съем- версии продукта – Zlock 1.2. операций и шанс найти источник утеч-
ные устройства. Помимо этого, при со- Для каждого типа устройств Zlock ки все равно останется.
здании жесткой политики безопаснос- предполагает возможность гибкой на-
ти системному администратору бывает стройки прав доступа на основе спис- Тестируем Zlock
трудно решить проблему предоставле- ков контроля доступа (ACL). Для каж- Протестировать этот продукт было
ния выборочного доступа к таким уст- дого физического или логического ус- весьма интересно, поскольку имен-
ройствам, а уж про прямые и нагляд- тройства и для каждого пользователя но такие решения редко используют-
ные разрешения типа ACL – вообще или группы пользователей из Active ся в большинстве сетей, хотя мысли
говорить не приходится. Directory можно разрешить либо пол- о возможности подобного контроля на-
Как итог – большинство систем- ный доступ, либо чтение, либо вообще верняка возникали у каждого систем-
ных администраторов либо смирилось доступ запретить. Подключаемые уст- ного администратора. Однако при вы-
с проблемой утечки информации через ройства могут идентифицироваться по боре любых систем корпоративного
мобильные устройства, либо скрупу- любым признакам, таким как класс ус- уровня для внедрения в своей локаль-
лезно пытаются создавать политики тройства, код производителя, код уст- ной сети, а также в сетях наших клиен-
безопасности, способные решить за- ройства, серийный номер и т. д. Это да- тов (я работаю в IT-фирме и любое рас-
дачу предотвращения доступа к таким ет возможность назначать разные пра- сматриваемое решение «примеряется»
устройствам. Себя я отношу к первой ва доступа к устройствам одного клас- на потенциальную возможность реали-
категории, так как управлять сетью са, например, запретить использова- зовать это у заказчиков) основным кри-
IT-компании и пытаться запретить ко- ние USB-flash-дисков, но при этом раз- терием, помимо самого функционала,
пировать что-либо на съемные носи- решить использование USB-ключей для нас является эта самая «корпора-
тели почти невозможно, а управление для аутентификации пользователей тивная направленность» продукта.
40
безопасность
Главными предполагаемыми пре-
имуществами системы, наряду с ос- Продукт: Zlock. Централизованная установка и уп-
новными функциональными харак- Производитель: SecurIT. равление.
теристиками, должны быть простота Сайт производителя: www.securit.ru. Мониторинг клиентских рабочих
внедрения и интуитивная понятность Назначение: контроль доступа к вне- станций для оперативного реагиро-
действий по ее настройке и конфигу- шним устройствам в масштабе пред- вания на попытки несанкциониро-
рированию. приятия. ванного отключения или изменения
После изучения руководства ад- Основные возможности: настроек клиентского модуля Zlock.
министратора я приступил к установ- Управление доступом к устройс- Запись событий в локальный или
ке на сервер управляющей консоли твам на базе политик доступа. централизованный журнал в фор-
и клиентской части программы. Про- Идентификация устройств по 16 матах TXT, XML и EventLog.
цесс инсталляции прошел успешно. признакам. Встроенные средства анализа ло-
Правда, после установки вручную при- Ведение каталога устройств. гов.
шлось обновить драйверы ключа за-
щиты – по указанию «найти автома- «получения навыков администрирова- равления также необходимо подклю-
тически» ключ стал работать штат- ния» путем постоянной беготни между чить. Думаю, что авторы программы
но. Никаких конфликтов с двумя со- компьютерами пользователей, а посе- прислушаются к таким «косметичес-
седними HASP-ключами от систем му предпочитают использовать такие ким» замечаниям и в следующей вер-
1С:Предприятие не произошло. Пер- технологии, которые позволяют вооб- сии поправят это. Хотя про следующую
вая же проверка на соответствие мо- ще не покидать своего кабинета для версию я напишу отдельно.
им задачам («Помощь → О програм- решения любых системно-админис- Учитывая, что при установке кли-
ме») показала, что я стал обладате- тративных задач (понятно, что физи- ентской части автоматически бу-
лем версии системы на 10 пользовате- ческие поломки устраняют специалис- дут приняты определенные настрой-
лей. Продолжать установку я не стал, ты технического отдела). ки «по умолчанию», разумно создать
так как сеть нашей компании включа- Выяснилось, что возможностей их заранее и сохранить в виде файла
ет в себя около 150 рабочих мест. Свя- для удаленной установки клиентской default.zcfg в папку, откуда будет про-
завшись с техническим отделом разра- части у Zlock как минимум две: при по- изводиться установка. Данную пап-
ботчика, я пояснил, что для полноцен- мощи стандартного распространения ку предоставим в общий доступ для
ного тестирования потребуется внед- установочного msi-файла политиками возможности установки программы
рить систему во всей работоспособ- AD и с использованием службы уда- с наследованием настроек по сети,
ной локальной сети, а не на искусст- ленной установки, имеющейся в кон- чем всегда смогут воспользоваться
венном полигоне из 10 рабочих стан- соли управления. Эта служба, кстати, специалисты технического отдела, ко-
ций, после чего количество лицензий позволяет таким образом запустить торые подключают пользователям но-
увеличили до 150. на клиентском компьютере любой ус- вые рабочие станции, а также прово-
Апгрейд был произведен удаленно, тановочный дистрибутив любого дру- дят профилактические работы с ними
по системе «запрос-ответ», с инструк- гого продукта. То есть вместе с ос- (например, переустановка ОС). Это то-
цией, как добавить полученные лицен- новным продуктом вы заодно получи- же понравилось, так как направлено
зии в ключ защиты, что является не- те приятную «добавку», упрощающую на реализацию той самой «корпора-
сомненным преимуществом при мас- удаленную установку программ на ра- тивности продукта» и освобождения
штабировании сети компании, так как бочие станции в локальной сети. главного специалиста от необходимос-
не придется останавливать работу После тестовой проверки на не- ти постоянного вмешательства в рабо-
всей системы, отсылать разработчи- скольких рабочих станциях и убежде- ту helpdesk-специалистов.
ку старый ключ защиты и ждать но- ния в том, что продукт не валит сразу Для своей сети я сразу воспользо-
вый, как бы оперативно не работали систему в BSOD, следующим тестом вался общепринятым принципом пос-
службы почтовой доставки. «права на жизнь» стала попытка уста- троения практически любых систем
новить клиентскую часть на все ком- защиты: «что не разрешено – то за-
Инсталлируем везде. пьютеры локальной сети. Процесс уда- прещено» и в политике по умолчанию
Автоматически ленной установки, на мой взгляд, слег- запретил запись на все съемные но-
Итак, установив консоль управления, ка усложнен необходимостью сначала сители для всех пользователей, кро-
я попробовал разобраться в том, ка- создать службу удаленного управле- ме Администраторов Домена. При со-
кие же возможности она представля- ния, затем «подключиться» к группе здании такой политики безопасности
ет мне как системному администрато- компьютеров и только затем запустить «по умолчанию» очень внимательно
ру и какими функциями я смогу при ее групповую инсталляцию. На самом де- отнеситесь к разрешениям на локаль-
помощи манипулировать. Первый и са- ле проще было бы эти 3 шага объеди- ные жесткие диски (Zlock позволяет за-
мый главный вопрос, который навер- нить в одном действии: «Установить блокировать доступ и к ним). Если вы
няка волнует многих из вас, – имеет- программу», так как логично предпо- случайно создадите неверную полити-
ся ли возможность дистанционной ус- ложить, что если вы хотите что-то уда- ку и запретите любой доступ к дискам
тановки клиентской части. Сисадми- ленно установить на клиентский ком- с ОС – то компьютеры просто не загру-
ны давно не являются энтузиастами пьютер, то и программу удаленного уп- зятся. Также не забывайте про обяза-
42
безопасность
ров доступ в сеть. Однако такие тон- прос содержит всю информацию об ус- Последний вариант, очевидно, лучше,
кости выходят за рамки статьи, посвя- тройстве, включая производителя, мо- поскольку у пользователя отсутству-
щенной Zlock. дель, серийный номер и т. д., а систе- ет даже гипотетическая возможность
ма Zlock позволяет создавать любые внесения в него изменений. В журнал
Как это работает политики на основании этих данных. записываются события подключения
на практике? Таким образом мы получаем возмож- и отключения устройств, как разре-
Теперь посмотрим, как это все выгля- ность предоставить право записи кон- шенных, так и запрещенных. Кроме
дит в работе. Напоминаю, что создан- кретному пользователю на указанное этого, для отдельных устройств можно
ная мной политика доступа позволяет устройство, при необходимости ве- установить запись в журнал всех опе-
пользователям производить чтение дя журнал всех файловых операций раций с файлами – создание, чтение,
со всех съемных устройств и запреща- (см. рис. 4). запись, переименование и удаление.
ет запись на них. Сотрудник отдела об- Таким образом процесс создания
служивания приходит в офис для того, дополнительных разрешающих по- Анализ журнала
чтобы сдать отчеты и записать зада- литик облегчен для администрато- В принципе для анализа логов сущест-
ния на диск. При подключении съем- ра до предела и сводится к принципу вует множество различных средств,
ного устройства система ограничива- Check&Click, что, несомненно, радует. и включать такое средство в продукт
ет доступ и выдает соответствующее особого смысла нет. Тем не менее
предупреждение (см. рис. 3). Что еще? в состав Zlock входит консоль отче-
Сотрудник считывает с него при- Очевидно, «закон 80-20» справедлив тов, которая реализует все необходи-
несенную информацию, после чего и для Zlock, поэтому в данной статье мые функции. Встроенный конструк-
безуспешно пытается записать по- удалось подробно рассмотреть толь- тор запросов, просмотр информации
лученные от руководителя задания. ко 20% возможностей продукта, кото- из нескольких файлов в одном окне
При необходимости получить доступ рые, тем не менее, должны удовлет- и сохранение результатов запросов
он либо связывается с администра- ворить 80% клиентов. Для того что- в табличном формате HTML – в качес-
тором по телефону, либо формиру- бы соблюсти историческую справед- тве базового функционала этого впол-
ет автоматический запрос при помо- ливость, приведем краткий обзор не- не хватает.
щи Zlock Tray Applet с указанием уст- охваченных возможностей.
ройства, к которому он хотел бы полу- Чего ожидать в будущем?
чить доступ, называет свою учетную Мониторинг Возвращаясь к обещанному анонсу но-
запись и мотивирует необходимость Данная функция обеспечивает пери- вой версии, могу сказать, что в неофи-
такого доступа. одический опрос клиентских рабочих циальной беседе с одним из разработ-
Администратор, получив такой за- станций на предмет несанкциониро- чиков эта тема обсуждалась с непод-
прос, принимает решение о предостав- ванного отключения или изменения дельным интересом, так как именно
лении/не предоставлении такого до- настроек клиентских модулей Zlock. в ней планируется ввести полноцен-
ступа и при положительном решении Для уведомления компетентных лиц ное понятие «сервер Zlock», который
изменяет политику для данной рабо- о такой «неавторизованной» актив- полностью возьмет на себя все взаи-
чей станции. При этом созданный за- ности пользователей может приме- модействия с клиентами. В настоящий
няться как запись информации о со- момент централизованное управление
бытии в журнал, так и любое дейс- осуществляется при помощи консоли
твие, выполняемое с помощью скрип- Zlock. Введение сервера упразднит не-
тов VBscript или Jscript, например, от- обходимость описанного выше после-
правка сообщения по электронной поч- довательного подключения к каждому
Рисунок 3. Предупреждение те, SMS и т. д. Это может стать сущест- клиенту и сделает еще более удобным
об ограничении доступа венным подспорьем в деле выявления распространение настроек. Сервер
особо талантливых и любознательных будет осуществлять централизован-
сотрудников и своевременного направ- ное управление клиентскими частя-
ления их способностей в более продук- ми – мониторинг, применение политик
тивное русло. и конфигураций, а также все осталь-
ные функции, необходимые для пол-
Журналирование ноценного администрирования систе-
О возможности ведения журнала мы. Если все это окажется полноцен-
уже шла речь, однако стоит написать но реализованным, то продукт станет
об этом более подробно, посколь- еще более удобным помощником для
ку анализ логов – один из основных, системного администратора. Хотя уже
а иногда и единственный инструмент сейчас Zlock успешно внедрен в нашей
для выявления инсайдеров. Журнал компании и стабильно работает на 150
может вестись в формате TXT, XML рабочих станциях.
и Windows EventLog, как на локальной
Рисунок 4. Создание политики
на основании запроса пользователя рабочей станции, так и на сервере. На правах рекламы
Защищаемся от malware
с помощью BufferZone
Сергей Яремчук
Борьба с злонамеренными программами является частью обязанностей администратора.
Но, учитывая, что ежедневно обнаруживается около 50 новых вирусов и других подобных
программ, это становится непростым делом.
44
безопасность
О
бнаружить попытку внедрения тя такой подход и позволяет обнару-
практически любой злонаме- жить и остановить практически лю-
ренной программы можно тре- бую угрозу, тем не менее многим про-
мя способами: опираясь на базу зна- граммам требуется доступ в систем-
ний, пытаясь предугадать действия ную область, возможность записи и из-
и контролируя работу и целостность менения файлов. Распознать вред-
системы. ные действия подчас довольно слож-
Сегодня самым популярным явля- но, поэтому всегда есть вероятность
ется первый, самый простой в реали- ошибки, как запрет легального дейст-
зации вариант, заключающийся в том, вия, так и, наоборот, разрешение не-
что на основе известного вируса со- правильного. Пользователю придется
здается его описание (сигнатура), ко- выбирать между максимальной защи-
торое заносится в базу. Проблем здесь той, а значит, постоянными запросами,
несколько. Неизвестные вирусы та- либо меньшей защитой, с возможнос-
ким способом обнаружить невозмож- тью спокойно работать. Поэтому такие
но, а занесение новой сигнатуры тре- «песочницы» должны использоваться
бует некоторого времени (по данным в паре с антивирусом. Рисунок 1. Главное окно программы
лаборатории Касперского, от 30 ми- Из всего сказанного можно сделать
нут до полутора часов). Но очень час- вывод, что всегда приходится выби- И, наоборот, доверенные процессы мо-
то пользователи игнорируют обновле- рать между удобством и уровнем безо- гут видеть все ресурсы (принцип про-
ния. Некоторые обновляют антивирус- пасности, а беззаботный или невнима- зрачности) или не иметь доступа к та-
ную базу раз в неделю, другие раз ме- тельный пользователь может свести на ким ресурсам.
сяц, не говоря о том, что на некоторых нет все старания по защите сети. Любая доверенная программа мо-
компьютерах часто антивирус вообще В журнале уже рассказывалось жет изменить статус в том случае, ког-
не установлен. о различных решениях, позволяю- да работает с недоверенным источни-
Изучая действия различных ти- щих защитить компьютер без исполь- ком. Например, при помощи MS Word
пов malware (термин malware про- зования антивируса CORE FORCE [2] пользователь открывает документ, по-
изошел от слов malicious и software. и Prevx1 [3], сегодня познакомим- лученный через Интернет. Таким об-
Под malware понимают все програм- ся еще с одним из них. разом, ненадежные программы всег-
мы, которые могут нанести какой-ли- да создают недоверенные ресурсы,
бо ущерб, включая вирусы, троян- Подход BufferZone а надежный процесс всегда произво-
цы, сетевых и почтовых червей, а так- Разработчики израильской компании дит доверенный ресурс.
же рекламное (adware) и шпионское Trustware Inc., образованной в 2003 го- Надежный процесс может полу-
(spyware) программное обеспечение.) ду, предлагают иной подход, позволя- чить доступ к непроверенному ресур-
можно попытаться описать их при по- ющий активно защищать операцион- су, полученному результату система
мощи правил. Если программа нару- ную систему Windows против злона- защиты также не будет доверять. Если
шит одно из правил, то ее можно счи- меренного программного обеспече- файл, либо реестр изменен доверен-
тать подозрительной. У злоумышлен- ния и компьютерных атак. Без каж- ной программой, то программа, поме-
ника всегда будет возможность изу- додневных обновлений, с максималь- ченная как недоверенная, увидит это
чить работу такой системы защиты ной защитой при минимальном учас- изменение. А если наоборот? Недо-
и вероятно найдется вариант, позво- тии пользователя. веренная программа, работая с копи-
ляющий ее обойти. К тому же под опи- Суть технологии Virtualization, ис- ей, будет уверена, что изменила тре-
сание могут попасть и некоторые ле- пользуемой в продукте, имеющем на- буемый ресурс, остальных это измене-
гальные программы, пользователь бу- звание BufferZone, заключается в том, ние не коснется.
дет сбит с толку и может принять не- что непроверенная программа поме- Таким образом любой троянец, да-
верное решение, блокирующее рабо- щается в виртуальную среду, наподо- же проникнув в систему, не сможет
ту легальной утилиты. бие sanbox. Но с некоторым отличием. полноценно работать, так как вся ин-
Немного другой подход реализуют Такие программы могут видеть файлы формация о его автозагрузке будет на-
различные механизмы, опирающиеся на жестком диске, но не могут их изме- ходиться в подставном ресурсе.
на регистрацию аномалий, но, к сожа- нить. Если же программе потребуется Кроме того, дисплей и клавиатура
лению, сегодня это в большинстве сво- изменение, например параметра реес- для доверенных и недоверенных про-
ем лишь теоретические разработки. тра, то в виртуальном пространстве бу- цессов как бы разделены, поэтому да-
В стороне стоят системы, зада- дет создана копия и программа будет же если троянцу и удастся в последую-
ча которых ограничение деятельнос- в дальнейшем работать с ней, не тро- щем запуститься, то считать с них ин-
ти не доверенных программ. Запус- гая оригинал. формацию он не сможет.
кая программу в ограниченной среде Для того чтобы избежать утечки ин-
«песочнице» (sandbox) они позволяют формации, непроверенные программы Варианты BufferZone
предохранить систему от подозритель- могут вообще не иметь доступа к оп- В настоящее время доступны четыре
ных или неразрешенных действий. Хо- ределенным (confidential) ресурсам. варианта продукта: Home, Corporate,
46
безопасность
зователем как confidential, дополнитель- Таблица сравнения версий программы BufferZone
но маркируются замком, а forbidden – Возможности версии Free Home Laptop CSP Server Corporate
запрещающим знаком (см. рис. 3). Эле- Защита от вирусов, червей и троянов из Интернета + + + + + +
менты экранного интерфейса, запу- Защита от вирусов, червей и троянов из внешнего
щенные в BufferZone, также получают – + + + + +
источника (дискета, компакт-диск, USB-устройства)
красную окантовку по контуру окна. Защита файлов, регистра, выполняющихся
+ + + + + +
В контекстном меню, вызываемом прикладных программ и объектов Windows
Крис Касперски
В Windows постоянно обнаруживаются новые дыры, через которые лезет malware,
создающая новые процессы или внедряющаяся в уже существующие. Предлагаем вам
универсальный метод обнаружения malware, основанный на определении подлинного
стартового адреса потока, чего другие приложения (включая могучий отладчик soft-ice)
делать не в состоянии.
А
нтивирусы, брандмауэры и про- написанные индивидуально для каж- но творить все что угодно, в том числе
чие системы защиты хорошо дой конкретной атаки, а потому су- и принимать/отправлять пакеты в об-
справляются с вирусами и чер- ществующие в единственном экземп- ход брандмауэра.
вями, но в борьбе с malware они бес- ляре. При условии, что они не распоз- Тем не менее обнаружить присутс-
сильны. Чтобы не утонуть в термино- наются эвристическим анализатором твие malware на компьютере все-таки
логической путанице, здесь и далее (а обмануть эвристический анализа- возможно. Я проанализировал мно-
по тексту, под malware-программами тор очень легко), антивирус ни за что жество зловредных программ и об-
будут подразумеваться программы, не поймает их, поскольку таких сигна- наружил их слабые места, выдающие
скрытно проникающие на удаленный тур еще нет в его базе, да и откуда бы факт внедрения с головой.
компьютер и устанавливающие там они там взялись?!
back-door или ворующие секретную Персональный брандмауэр тоже Как malware внедряется
информацию. не слишком надежная защита. Мно- в компьютер
В первую очередь нас будут инте- жество дыр дают злоумышленнику Наиболее примитивные экземпля-
ресовать malware-программы, не спо- привилегии SYSTEM (что повыше ад- ры malware-программ создают но-
собные к размножению и зачастую министратора будет), с которыми мож- вый процесс, который вниматель-
48
безопасность
ный пользователь легко обнаружит
в «диспетчере задач». Конечно, для
этого необходимо знать, какие процес-
сы присутствуют в «стерильной» сис-
теме и где располагаются их файлы.
В частности, explorer.exe, расположен-
ный не в WINNT, а в WINNT\System32,
это уже никакой не explorer, а самая
настоящая malware-программа!
Впрочем, «диспетчер задач» край-
не уязвимая штука, и malware-програм-
мы без труда скрывают свое присутс-
твие от его взора. То же самое отно-
сится к FAR, Process Explorer, tlist и дру-
Рисунок 1. Зловредный процесс sysrtl замаскировал свое присутствие
гим системным утилитам, основанным от «диспетчера задач», но не смог справиться с soft-ice
на недокументированной API-функции
NtQuerySystemInformation(), экспорти- получив идентификатор процес- дача решается «серединным» вы-
руемой динамической библиотекой са-жертвы (что можно сделать, на- зовом API-функции OpenProcress()
NTDLL.DLL и потому очень легко пе- пример, через семейство процедур путем передачи управления по сме-
рехватываемой с прикладного уровня, TOOLHELP32), malware-програм- щению 24h от ее начала и расшиф-
без обращения к ядру и даже без ад- ма «скармливает» его API-функ- ровкой идентификатора операцией
министраторских привилегий. ции OpenProcess(), возвращающей XOR со специальным «магическим»
Отладчик soft-ice – единственный дескриптор процесса (или ошибку, словом;
известный мне инструмент, не исполь- если у malware-программы недо- добытый дескриптор потока переда-
зующий NtQuerySystemInformation() статочно прав); ется API-функции SuspendThread(),
и разбирающий структуры ядра «вруч- возвращенный дескриптор про- останавливающей его выполне-
ную». Спрятаться от него на порядок цесса передается API-функции ние;
сложнее, и в «живой природе» такие VirtualAllocEx(), выделяющей в ад- содержимое контекста останов-
malware-программы пока не замечены ресном пространстве процесса-жер- ленного потока читается API-фун-
(а лабораторные экземпляры нежиз- твы блок памяти требуемых разме- кцией GetThreadContext() с флагом
неспособны и могут обманывать толь- ров с атрибутами PAGE_READWRITE CONTEXT_CONTROL, в результате
ко известные им версии отладчика), или PAGE_READ (но тогда все опе- чего в структуре CONTEXT оказы-
так что на soft-ice вполне можно поло- ративные данные придется хранить вается значение регистра EIP, ука-
житься. Для просмотра списка процес- в стеке); зывающего на текущую машинную
сов достаточно дать команду «PROC» поверх выделенного блока ко- инструкцию;
и проанализировать результат. пируется зловредный код (кото- запомнив полученный EIP, malware-
Кстати, malware-программы, скры- рый должен быть полностью пе- программа тут же корректирует его
вающиеся от «диспетчера задач», не- ремещаемым, т.е. сохранять свою с таким расчетом, чтобы он указы-
медленно выдают свое присутствие работоспособность независимо вал на точку входа в ранее скопиро-
путем сличения «показаний» soft-ice от базового адреса загрузки), что ванный зловредный код, и вызыва-
с «диспетчером задач». Один из таких осуществляется API-функцией ет API-функцию SetThreadContext(),
случаев продемонстрирован на рис. 1. WriteProcessMemory(), которую на- чтобы изменения EIP вступили в си-
Смотрите, soft-ice отображает процесс личие атрибута PAGE_READ ничуть лу, после чего «размораживает»
sysrtl, но в «диспетчере задач» он… не смущает, поскольку она нали- остановленный поток посредством
отсутствует! Следовательно, это ли- чие атрибута PAGE_WRITE никак ResumeThread();
бо malware-программа, либо какой- не проверяет; во избежание утечки ресурсов де-
нибудь хитроумный защитный меха- с помощью все тех же процедур скрипторы процесса и потока за-
низм, построенный по root-kit-техноло- TOOLHELP32 malware-программа крываются – больше они не по-
гии. В общем – нехорошая программа, находит главный поток процесса, надобятся (хотя далеко не всякая
от которой можно ждать все что угод- получает его идентификатор, кото- malware-программа заботится о та-
но и желательно избавиться как мож- рый тут же преобразует в дескрип- ких мелочах);
но быстрее! тор. В Windows 2000 (и ее благо- получив управление, зловредный
Д ля до с ти же ния наи больш ей родных потомках) это осуществля- код создает новый поток вызовом
скрытности malware-программа долж- ется API-функцией OpenThread(), CreateThread() и восстанавливает
на не создавать новый процесс, а внед- а в более ранних версиях прихо- исходное значение регистра EIP.
ряться в один из уже существующих, дилось прибегать к вызову недоку-
что она с успехом и делает. Класси- ментированной native-API-функции Примечание: до появления процес-
ческий алгоритм внедрения реализу- NtOpenThread(), экспортируемой соров, поддерживающих биты NX/XD,
ется так: библиотекой NTDLL.DLL. Под 9x за- предотвращающих выполнение кода в
50
безопасность
эффектом такого алгоритма становится
автоматическая генерация псевдослу-
чайных имен (если, конечно, malware-
программа не будет использовать пер-
вую попавшуюся ASCIIZ-строку).
Обобщив сказанное, мы получаем
следующий план:
выбрав идентификатор процес-
са-жертвы, malware-программа
«скармливает» его API-функции
OpenProcess(), возвращающей де-
скриптор процесса (или ошибку, ес-
ли у malware-программы недостаточ-
но прав);
определив базовый адрес загруз-
ки NTDLL.DLL или KERNEL32.DLL,
malware-программа ищет подходя-
щую ASCIIZ-строку, переименовы-
вая свою, заранее созданную, дина-
мическую библиотеку;
определив а дрес API-функ-
Рисунок 4. Определение стартового адреса потока с помощью отладчика OllyDbg
ции LoadLibrar yA / LoadLibrar yW,
malware -программа перед ает его API - функции LoadLibraryA()/LoadLibraryW() – этот поток создан malware-
CreateRemoteThread() вместе с указателем на имя биб- программой или чем-то сильно на нее похожим. Вот тут-
лиотеки, которую необходимо загрузить внутрь целево- то и начинается самое интересное! Ни soft-ice, ни process
го процесса; explorer Марка Руссиновича определять стартовые адре-
дескриптор процесса и дескриптор удаленного пото- са не умеют (хоть и пытаются). Они очень часто ошибают-
ка, возвращенный CreateRemoteThread(), закрываются, ся, особенно при работе с потоками, созданными malware-
а зловредный код, расположенный в DllMain(), делает программами.
все что ему вздумается. Давайте напишем «макетную» программку, создаю-
щую поток тем же самым методом, что и malware-програм-
Вот три основных алгоритма внедрения в атакуемый мы, и попробуем обнаружить факт «вторжения» при помо-
процесс, которыми пользуется порядка 90% всех malware- щи подручных утилит. Предельно упрощенный исходный
программ. текст «макетника» выглядит так:
52
безопасность
type : MEM_IMAGE ти говоря, считывать контекст можно и без остановки пото-
[0051FFF0h: 00000000 00401000 00000999 00000000] ка. На Windows 2000 (и ее потомках) это делается так (более
--thr------------------------------------------------
th32ThreadID : 5C8h ранние версии требуют использования native-API-функции
th32OwnerProcessID : 578h NtOpenThread() и, поскольку доля таких систем сравнитель-
…
handle : 3D8h
ного невелика, здесь они не рассматриваются):
ESP : 0062FFB4h
start address : 00520000h Листинг 4. Фрагмент кода, считывающего значение ESP
point to args : 00000666h потока с идентификатором thr.th32ThreadID
type : MEM_PRIVATE
[0062FFF0h: 00000000 00520000 00000666 00000000] HANDLE ht;
CONTEXT context;
context.ContextFlags = CONTEXT_CONTROL;
Первые два потока находятся внутри блоков MEM_IMAGE,
// преобразуем идентификатор потока в дескриптор
и ни у одного из них стартовые адреса не совпадают с адре- ht = OpenThread(THREAD_GET_CONTEXT, 0, thr.th32ThreadID);
сами функций LoadLibraryA()/LoadLibraryW(), следовательно,
// считываем регистровый контекст
это «честные» потоки, созданные легальным путем. А вот GetThreadContext(ht,&context);
третий поток лежит внутри региона MEM_PRIVATE, выде-
// закрываем дескриптор
ленного API-функцией VirtualAlloc(). Значит, это «нечест- CloseHandle(ht);
ный» поток, и мы не бьем тревогу только потому, что сами
же его и создали. Заметим, что API-функция OpenThread() не входит
Теперь, как было обещано, обсудим технические детали. ни в заголовочные файлы, ни в библиотеку KERNEL32.LIB,
Прежде всего нам потребуется получить список потоков, поставляемую вместе с компилятором Microsoft Visual C++
имеющихся в системе. Это можно сделать как документиро- 6.0, поэтому, необходимо либо скачать свежий Platform SDK
ванными средствами через TOOLHELP32, так и недокумен- (а это очень-очень много мегабайт), либо загружать ее ди-
тированной native-API-функций NtQuerySystemInformation(), намически через GetProcAddress(), либо преобразовать
на которой TOOLHELP32, собственно говоря, и осно- KERNEL32.DLL в KERNEL32.LIB (линкер unilink от Юрия Ха-
ван. Конечно, если она перехвачена malware-программой, рона это сделает автоматически).
мы никогда не увидим зловредных потоков, но техника Зная идентификатор процесса, владеющий данным по-
обнаружения/снятия перехвата – это тема отдельной ста- током (thr.th32OwnerProcessID), мы можем открыть его API-
тьи, пока же придется ограничиться тем, что есть (на вся- функцией OpenProcerss(), получив доступ к его адресному
кий случай сравните показания TOOLHELP32 c командой пространству (если, конечно, у нас на это есть права). Откры-
«THREAD» отладчика soft-ice, вдруг обнаружатся какие-то вать мы будем с флагами PROCESS_QUERY_INFORMATION
различия). (просмотр виртуальной памяти) и PROCESS_VM_READ
Короче, список потоков в простейшем случае получа- (чтение содержимого виртуальной памяти).
ется так: Следующий шаг – определение дна пользовательско-
го стека. Передав API-функции VirtualQueryEx() значение
Листинг 3. Фрагмент кода, ответственный за перечисление ESP, полученное из регистрового контекста, мы узнаем
всех имеющихся потоков
базовый адрес выделенного блока (mbi.BaseAddress) и его
#include <stdio.h> размер в байтах (mbi.RegionSize). Путем алгебраического
#include <windows.h>
#include <tlhelp32.h> сложения базового адреса с его длиной мы получим ука-
затель на первый байт памяти, лежащий за концом стека.
print_thr(THREADENTRY32 thr)
{ Отступив на несколько двойных слов назад (например, на
printf("cntUsage : %Xh\n",thr.cntUsage); четыре), нам остается только прочитать его содержимое
printf("th32ThreadID : %Xh\n",thr.th32ThreadID);
printf("th32OwnerProcessID : ↵ API-функцией ReadProcessMemory().
%Xh\n",thr.th32OwnerProcessID);
printf("tpBasePri : %Xh\n",thr.tpBasePri); Листинг 5. Фрагмент кода, определяющий положение
printf("tpDeltaPri : %Xh\n",thr.tpDeltaPri); дна стека и считывающий байт GET_FZ с его конца
printf("dwFlags : %Xh\n",thr.dwFlags); (в которых хранится стартовый адрес потока)
}
#define GET_FZ 4 // на сколько двойных слов отступать
main() DWORD buf[GET_FZ];
{ DWORD x; HANDLE hp;
HANDLE h; THREADENTRY32 thr; int a; MEMORY_BASIC_INFORMATION mbi;
// создаем «слепок» потоков // открываем процесс, владеющий данным потоком
h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); hp = OpenProcess(PROCESS_VM_READ| ↵
PROCESS_QUERY_INFORMATION,0,thr.th32OwnerProcessID);
// перебираем все потоки один за другим
thr.dwSize = sizeof(THREADENTRY32); ↵ // определяем параметры блока памяти, на который
a = Thread32First(h, &thr); // указывает регистр ESP
if (a && print_thr(thr)) ↵ VirtualQueryEx(hp, (void*)context.Esp, &mbi, sizeof(mbi));
while(Thread32Next(h, &thr)) print_thr(thr);
} // вычисляем положение дна стека
x = (DWORD) mbi.BaseAddress + mbi.RegionSize;
Теперь нам необходимо прочесть контекст каждого // читаем GET_FZ слов со дна стека в буфер buf
из потоков, получив значение регистра ESP, указывающего ReadProcessMemory(hp,(char*)x-GET_FZ*sizeof(DWORD), ↵
buf,GET_FZ*sizeof(DWORD),&a);
куда-то внутрь стека (конкретно куда, не суть важно). Кста-
54
человек номера
К
огда-нибудь историю жизни Ке- гим Сильвером или капитаном Воро- ства и от прочих правоохранительных
вина Митника превратят в ки- бьем. Такой необыкновенный случай органов США. Я работал в Денвере
носценарий. Не знаю, как назо- представился участникам конгресса в юридической компании под именем
вут фильм, но жанр будет, конечно, де- Interop Moscow, который этим летом Эрик Вайс. Почему Эрик Вайс? Пото-
тектив. Что-то вроде «Пиратов Кариб- впервые прошел в России. Его выступ- му что это реальное имя Гарри Гудини.
ского моря». Только вместо «сундука ление слушали затаив дыхание и за- Мой друг занимался телефонами «Мо-
мертвеца» – промышленные секреты держали дорогого московского гостя торола», и я как хакер хотел узнать, что
и счета в банках, а вместо каравелл на целый час. А мне к тому же повез- там за технология. Я решил, что это
под черными парусами – сверхмощ- ло взять у знаменитого хакера неболь- очень передовая технология. Это бы-
ные компьютеры с выходом в глобаль- шое интервью. ло 15 лет назад, не забывайте. Однаж-
ную Сеть. Хакеры – герои нашего вре- ды я пораньше ушел из офиса и поз-
мени, овеянные романтикой не мень- Милый лжец вонил в «Моторолу» по телефону бес-
ше, чем морские разбойники прошло- На лекцию господин Митник вышел платной информации. Я сказал: «При-
го. Увидеть живьем Кевина Митника – так, как выходит к публике актер, уве- вет, я Эрик. Мне нужен менеджер про-
все равно что пообщаться с одноно- ренный в своей популярности. Кстати, екта по продаже сотовых телефонов».
56
человек номера
Мне ответили: «Этим занимается та- считают: со мной это не случится, я не шей же компании и хочет создать ва-
кой-то отдел в Иллинойсе». Я попро- такой дурак, чтобы выдавать пароль! шу учетную запись! Бойтесь, вы полу-
сил: «Дайте мне телефон этого отде- Я не буду пристегиваться в машине, чили по электронной почте сообщение
ла». Позвонил туда, опять объяснил: потому что я хороший водитель. Ава- с приложением якобы от Windows, вам
«Я Эрик, мне нужен менеджер проек- рии случается только с другими!». предлагается это приложение устано-
та по распространению мобильных те- вить. Как только ваши данные входят
лефонов». Меня отфутболивали к раз- Добрый советчик в систему, вы уже раскрыли свои ко-
ным сотрудникам раз восемь и в кон- Собственно, лекции Кевин Митник чи- ординаты! Бойтесь и такой «шутки»:
це концов направили к нужному чело- тает с одной целью – предупредить лю- «Вы можете также получить е-mail с ги-
веку. Но менеджер оказалась в отпуске, дей об опасности и вооружить знания- перссылкой на сайт какой-то компании,
мне вежливо рассказали: «Она вернет- ми против мошенников. Звучит стран- в услугах которой, как известно хакеру,
ся через две недели, но если вы хотите, но, ведь мы знаем, что сам лектор не- вы нуждаетесь. Стоит нажать на ссы-
чтобы вам помогли, звоните Алише». давно был «в стане врага». Но с другой лочку – и специальная программа свя-
Конечно, я позвонил Алише! И сказал: стороны, все логично: никто не станет зывает вас с атакующим».
«Я Эрик из Департамента по распро- сомневаться в компетентности главы Вот какой мудрый совет дает Ке-
странению телефонов. Такая-то уеха- Mitnick Security Consulting. вин Митник бизнесменам, которые хо-
ла в отпуск?» – «Да, уехала». «Какая Похоже, Кевина просто шокирует тят избежать взлома: «Я бы рекомен-
жалость! Прежде чем уезжать, она мне доверчивость его сограждан: «Как ду- довал следующее. Компании по-раз-
должна была выслать код источника». – маете, сколько людей согласились от- ному разрабатывают свою политику
«И как, выслала?» – «Нет, она мне ни- дать свой пароль после телефонно- безопасности. Одни создают ее с по-
чего не выслала, может быть, вы мне го звонка якобы от Налоговой служ- мощью своих сотрудников, другие на-
поможете?» – «Да, а какая версия нуж- бы США? 25 из ста. На рождество сис- нимают кого-то со стороны. Во втором
на?» – «Я говорю: давайте новую вер- темные администраторы, пользовате- случае есть опасность, что у людей не
сию». «Хорошо, сейчас гляну в систе- ли, сотрудники компании выдали свои будет мотивации следовать правилам.
му». Я помог Алише разобраться с сис- пароли за мелкие сувениры. Из 10 че- Если же сотрудники компании будут
темой, дал ей свой IP-адрес и сказал: ловек семь отдали свои пароли. Вы мо- сами разрабатывать правила безопас-
«Попытайтесь связаться с ним». Она жете создавать систему безопаснос- ности, то они начнут более тщательно
связалась два или три раза, но что-то ти, и ничего не помогает. Люди сов- их выполнять. Они будут думать так:
не срабатывало. Алиша забеспокои- сем не чувствуют опасности! Социаль- «Раз я участвовал в этом деле, то дол-
лась: «Эрик, здесь что-то с безопаснос- ная инженерия проще, чем несанкци- жен это как-то применять в своей рабо-
тью. Я сейчас поговорю с нашим совет- онированные попытки доступа. Обыч- те». Таким образом, вы сможете изме-
ником по безопасности». Она выясни- но преступник находит кого-то из ком- нить вашу корпоративную культуру и
ла, что надо использовать определен- пании, побуждает его войти в систе- мотивировать ваш персонал. Подумай-
ный прокси-сервер. Я сказал: «Хоро- му и проникает туда же вслед за об- те об этом. Это ведь важно для вашей
шо, давайте». И прежде чем я дошел манутым сотрудником. И хакер поч- компании, правда? Если вы наказы-
до дома, у меня уже был на компьютере ти ничем не рискует, он даже не пла- ваете своих сотрудников за невыпол-
код исходника и все остальное, просто тит за связь. Глупость и доверчивость – нение правил, это, конечно, тоже спо-
благодаря тому, что я сделал несколько качества, которыми страдают многие соб, но это не так показательно. Нуж-
звонков. Как видите, достаточно найти сотрудники компаний. Социальный ин- но, чтобы люди видели, что их работа
человека, у которого есть информация, женеринг – это самая большая пробле- приносит реальную пользу. И тогда ре-
и раскрутить его». ма в нашем гиперпространстве. Необ- зультат будет намного лучше».
К чести Кевина Митника, он тут же ходимы какие-то технологии, которые
признался, что и сам бывает обманут. защищают все звенья цепи». Этичный хакер
Последний такой случай произошел Митник рассказал о наиболее рас- Мне почему-то казалось, что Митник
с ним буквально накануне лекции, ког- пространенных способах атаки и даже не захочет давать мне интервью. Вот
да хакер возвращался из Петербурга, продемонстрировал опыт с сотовым те- если бы со мной был оператор с каме-
где тоже читал лекцию в рамках свое- лефоном. Оказывается, наши мобиль- рой… Но он посмотрел мне в глаза, ми-
го нынешнего визита в Россию. Ке- ники совершенно беззащитны перед нуту поразмышлял и сказал, что пого-
вин и его сотрудница наняли носиль- настоящим специалистом своего де- ворит, вот только минут пять побеседу-
щика, чтобы перенести вещи. У поез- ла. Похоже, американские власти были ет по телефону. Пять минут преврати-
да парень сгрузил чемоданы и подбе- правы, когда не позволяли Кевину Мит- лись в час, но неважно, потому что вот
жал к иностранцу с вопросом: «Где де- нику в тюрьме пользоваться даже не- он, Кевин Митник, и я задаю ему пер-
ньги?». Митник спросил: «Вам еще не винным лэптопом без модемной связи. вый вопрос:
заплатили?» – «Нет». Носильщик по- А если разрешали поработать на ком- – Почему вы выбрали эту профес-
лучил свои 500 рублей, исчез. И тут пьютере, сразу его уничтожали. сию?
же выяснилось, что коллега Митника Разнообразные виды социальной – Я начал изучать эту сферу мно-
уже заплатила пройдохе такую же сум- инженерии – конек Митника. Он приво- го лет назад в качестве фрикера (те-
му». Вот потому знаменитый америка- дит примеры один за другим. Бойтесь, лефонного хулигана. – О.Р.) и хакера.
нец и повторяет назидательно: «Люди если вам звонит якобы сотрудник ва- Я действовал в одиночку, мне было ин-
тересно совершенствовать свою тех- определять наличие слабых мест рожными… Неосторожными! Люди
нику, воруя различные секреты, взла- в системе компьютерной безопаснос- не глупы, они беспечны.
мывая барьеры безопасности. Сей- ти. Да, это образ мышления. – Наш мир опасен – войны, конф-
час мне, как профессионалу в этой об- – Хакер – это человек, который лю- ликты, терроризм и тому подобное.
ласти, нравится помогать моим клиен- бит риск, опасность? И сфера IT – лишь отражение того,
там из сферы бизнеса, университетам, – Да, взлом – это риск, это своего что происходит в обществе. Это зер-
правительственным организациям за- рода приключение, и опасность вполне кало, вы не находите?
щищать себя от компьютерного взло- реальна. Это – добровольное принятие – Ну, в чем-то да…Что-то вроде по-
ма, потому что я действительно специ- вызова, здесь есть интрига… Да. ля боя, где надо отстреливаться. Здесь
алист, я знаю, как используются техно- – Что вам нравится в этом деле – тоже нет никаких правил. Это как «Ди-
логии взлома, как работают взломщи- уход от скучной действительности?.. кий Дикий Запад» в американской ис-
ки. Между прочим, многие люди, рабо- – Ну да, конечно! Это волнующе, тории… Это опасная работа, это опас-
тающие сегодня в области компьютер- интересно и развлекательно... Одна- ная сфера деятельности, где вы долж-
ной безопасности, по своей сути яв- ко в последнее время хакерство имеет ны защищать себя, чтобы не стать
ляются «этичными хакерами», то есть тенденцию становиться все более уг- жертвой.
используют свои «преступные» навы- рожающим для общества. Кстати, не- – Так, может быть, людям не на-
ки, чтобы зарабатывать деньги впол- давно я был в Боготе, это Колумбия, до пользоваться Интернетом, вообще
не честным способом, который одоб- и зашел на пару минут в магазин, тор- компьютерами, раз это так опасно?
ряет общество. гующий компьютерами. Там я увидел – Я так не думаю. Вы знаете, масса
– Как вы думаете, чтобы стать спе- эту женщину (Митник показал на мо- людей на рубеже 21 века не делали по-
циалистом по информационным техно- ниторе своего лэптопа фотографию), купок – потому что боялись. Феномен
логиям, нужно иметь какие-то особые у которой на шее была вот эта штука. Миллениума, знаете ли… Я не боюсь,
черты характера, таланты? Вот вам и представление людей о бе- поскольку я человек квалифицирован-
– Да нет, особый характер не тре- зопасности. Знаете, что это такое? ный и знаю как справиться с компью-
буется, ведь существует масса различ- – Нет. терными мошенниками. И могу другим
ных отраслей компьютерной безопас- – Это телефон, на дисплее которого предложить мою помощь…
ности – дизайн, инфраструктура, оцен- высвечивается пароль доступа в тече- Я открыла рот, чтобы задать следу-
ка надежности систем безопасности. ние 60 секунд. Любой может его уви- ющий вопрос. Но у Кевина заверещал
Востребованы самые различные на- деть и узнать пароль, ведь телефон ви- телефон. «СМСка пришла, – виновато
выки в конкретных вопросах. Если вы сит у нее на шее и дисплей прекрасно сообщил он мне. – Вы простите, но мне
любите компьютеры, то сами приоб- всем виден. Ну, не глупо ли? надо идти». И ушел со свежим номе-
ретаете различные навыки, повыша- – Да уж… Это опасно. ром «Системного администратора»
ете свою квалификацию. – Разумеется. Как можно выжить под мышкой. Вдруг пригодится?
– Так требуется талант или навы- в этом мире при таком легкомыслен-
ки? ном отношении? Оксана Родионова,
– И то и другое. При этом хакинг – – Вы считаете людей глупыми? фотографии предоставленны
организаторами Interop Moscow
это образ мышления, это способность – Нет, просто недостаточно осто-
58
bugtraq
Алексей Мичурин
Разговоры о новой веб-технологии Ajax начались в кругах специалистов примерно год назад,
хотя ждали её уже давно. А после того, как Ajax взяли на вооружение такие веб-гиганты,
как google и gmail, технологией стали интересоваться практически все: от руководителей
крупных проектов до начинающих веб-мастеров.
М
ожно ли описать целую техно- DOM (Document Object Model) – Это в корне меняет дело. DHTML
логию в журнальной статье? формальное представление HTML- способен «оживить» страницу, но он
Наверно, нет. Но нам повез- или XML-документа, позволяющее может оперировать только с теми дан-
ло, ведь... управлять его элементами: созда- ными, которые были загружены вмес-
вать, удалять, изменять свойства. те со страницей. Ajax позволяет раз-
...Ajax – это не технология JavaScript – язык – двигатель пер- работчику обратиться к серверу, по-
Удивлены? Давайте разберёмся, из че- вых двух технологий. лучить новые данные и, пользуясь
го же складывается Ajax. уже существующими возможностями
Это смесь технологий, которые уже Знакомое сочетание? Конечно! DHTML, интерпретировать эти данные
всем хорошо знакомы: Это пресловутый DHTML. Ajax допол- и изменить страницу. При этом пере-
CSS (Cascading Style Sheets) – на- няет DHTML всего одной возможнос- загрузки страницы не происходит, но-
бор средств для описания внешне- тью – обращаться к серверу по HTTP вые данные «подкачиваются» на уже
го вида HTML-конструкций. и обрабатывать полученный запрос. открытую страницу.
60
web
Эту новую возможность должно отражать и само на- Результат разбора ответа:<br>
время: <b id='time'>null</b><br>
звание Ajax – сокращение от Asynchronous JavaScript строка запроса: <b id='qstring'>null</b><br>
and XML. x-квадрат: <b id='xsq'>null</b>
</form>
Описать CSS, DOM и JavaScript в одной статье, ко- </body>
нечно, невозможно, но вот рассмотреть то, что отлича- </html>
ет DHTML от Ajax, вполне реально. Этим мы и займёмся.
Для рассмотрения предлагаю конкретный пример. Это статическая HTML-страница, которую я назвал
незамысловато – index.html. Как видите, она почти пол-
Ajax-приложение ностью состоит из JavaScript-кода. Это и не удивительно,
Давайте рассмотрим приложение, которое вычисляет квад- ведь мы создаём не просто HTML-страницу, а Ajax-при-
раты целых чисел, а заодно выводит дополнительную от- ложение.
ладочную информацию. Сразу после загрузки страницы Небольшая HTML-составляющая кода не блещет ника-
пользователь увидит следующее (см. рис. 1). кими изысками. Все элементы, которые будут изменять-
После того, как он введёт число и нажмёт на кнопку, ся, я выделил жирным шрифтом (тег <b>) и назначил им
страница будет скорректирована (без перезагрузки) и при- уникальные идентификаторы, по которым буду на них ссы-
мет следующий вид (см. рис. 2). латься. Для наглядности, сразу после загрузки страницы
Давайте посмотрим на код «с высоты птичьего полё- (до выполнения Ajax-запросов) все динамические элемен-
та». Он складывается из двух составляющих: клиентской, ты заполнены строками «null». Это видно на рис. 1.
загружаемой в браузер, и серверной, обрабатывающей
Ajax-запросы. Ajax-запросами, для краткости, я буду назы- На стороне сервера
вать запросы, сгенерированные средствами Ajax. Конечно, На стороне сервера я предлагаю разместить PHP-сцена-
с точки зрения сервера, это обычные HTTP-запросы. рий следующего содержания:
62
web
Можно задать обработчик, не создавая именованной function unclose(r) {
r.onreadystatechange = function() {};
функции: }
64
web
с использования кнопки «назад», за- кументов, и от которых теперь требу- А то, что Ajax используется в крупней-
канчивая возможностью создания за- ется стать средами выполнения прило- ших веб-проектах, сулит этой «техно-
кладки, но и делает в принципе невоз- жений. Косметическими улучшениями логии» большое будущее.
можным индексацию документов поис- здесь не отделаться.
ковыми системами или даже элемен- Кроме того, Ajax базируется на тех- 1. Прежде всего, мне хотелось бы отме-
тарный обмен ссылками, когда друг нологиях, которые не предназначались тить MDC (Mozilla Developers Center) –
«кидает» другу ссылку по «аське». (Ко- для решения тех задач, на которые он http://developer.mozilla.org/en/docs/
нечно, пока ни один поисковик не в со- направлен. Поэтому Ajax порождает AJAX. Информации там не очень мно-
стоянии выполнить Ajax-код и правиль- массу неоднозначностей и противо- го, но она очень качественная. Нет ни-
но проиндексировать ресурс.) В деле речий. Например, как должен реаги- каких недомолвок, не лоббируются ин-
разрушения соответствия URL-доку- ровать браузер, если вместо обычно- тересы какого-либо одного производи-
мент Ajax продвинулся гораздо даль- го HTML-содержимого в страницу будет теля браузеров, язык очень прост и по-
ше, чем фреймы, о вреде которых уже встраиваться новый JavaScript-код? нятен.
много написано. Все эти противоречия порождаются 2. Большой «развал» ссылок на раз-
Ну и, конечно, нельзя обойти вни- той путаницей между данными и уп- личные ресурсы для Ajax-разработ-
манием пресловутую несовместимость равляющим кодом, о которой я говорил чиков можно найти здесь – http://
браузеров. В этой статье мы видели её в самом начале. Думаю, и браузеры, www.maxkiesler.com/index.php/weblog/
только в одном месте, но это во мно- и технологии должны полностью пе- comments/451.
гом от того, что мы практически не ис- реродиться, чтобы возможности Ajax 3. Спецификацию метода XMLHttpRequest
пользовали DOM, реализация которо- стали универсальными и безопасны- можно найти тут – http://www.w3.org/TR/
го в разных браузерах весьма и весь- ми. Сейчас мы наблюдаем первых лас- 2006/WD-XMLHttpRequest-20060405.
ма различна. Причём, добиться уров- точек, которые возвещают о грядущих 4. Русский перевод описания протокола
ня совместимости, необходимого для больших переменах в Web. HTTP (RFC 2068) можно найти здесь –
использования Ajax, будет не прос- Одним словом, строить сайты http://www.lib.ru/WEBMASTER/rfc2068.
то. Не только потому, что это просто на Ajax, наверно, преждевременно, 5. Кроме того, «Системный Администра-
сложно технически, но ещё и потому, однако его вполне уместно использо- тор» уже публиковал две статьи об Ajax
что придётся пересмотреть основные вать в тех ситуациях, где качество ин- (№12 за 2005 г. и №6 за 2006 г.), где так
механизмы браузеров – программ, ко- дексирования и комфортность нави- же приводились интересные ссылки
торые создавались для просмотра до- гации не так важны, как интерфейс. по этой теме.
Устанавливаем DACS
Сергей Яремчук
Настройка DACS, системы контроля доступа к веб-ресурсам, – дело не простое.
Поэтому разберем, как установить ее в минимальной конфигурации, а заодно посмотрим
на нее в работе.
С
о времени публикования первой ваться и этими пакетами. Это позво- библиотека OpenSSL, разработ-
части статьи [1] ничего не из- лит сосредоточиться больше на изу- чики рекомендуют 0.9.8b, хотя и
менилось. Текущей версией чении функциональности, чем на на- с 0.9.8а проблем не было.
по-прежнему является 1.4.13а. Про- стройке. Мы же не ищем легких путей библиотека синтаксического
ект придерживается строгих правил, и будем устанавливать DACS с исход- анализа XML Expat, рекомендуе-
распространяя только исходные тек- ных текстов. мой версией является 2.0.
сты DACS, и рекомендует полностью
пересобрать всю систему с их помо- Компоненты, необходимые Кроме того, в зависимости от тре-
щью. Прекомпилированные пакеты для работы DACS буемой функциональности вам могут
удалось найти только на сайте про- Для установки, кроме самого DACS, понадобиться и другие пакеты, уста-
екта OMSE [2]. Хотя здесь доступ- понадобятся исходные тексты либо за- новка которых опциональна. Так, ес-
на версия DACS 1.4.11, собранная головочные devel-пакеты: ли планируется сохранение конфигу-
для Debian 3.1 и Fedora Core 4, кото- веб-сервер Apache, рекоменду- рации в базе данных, то потребуется
рые шли в качестве приложения к ста- емыми версиями являются 2.0.58 Berkeley DB, gdbm или ndbm. Для вклю-
тье «DACS: Nur für Mitglieder» в немец- или 2.2.2, с последней DACS начал чения NTLM понадобится пакет Samba,
ком журнале для IT-профессиона- работать с 1.4.13а, и еще не до кон- а возможность работы с LDAP или
лов IX (http://www.heise.de/ix). Версии ца протестирован, поэтому, впол- Active Directory реализуется посредс-
1.4.11 и 1.4.13а имеют отличия, но если не вероятно, возникнут проблемы твом пакета OpenLDAP. Но при первой
цель – знакомство с системой DACS, при установке и работе (по крайней настройке лучше всего ограничиться
то первоначально можно воспользо- мере, у меня они были). только базовым набором, постепенно
66
web
разобравшись с настройками, уже можно установить пол- Все настройки SSL по умолчанию описываются
нофункциональную систему. в секции:
И копируем сертификат и ключ на свое место Кстати, теперь можно получить помощь по компиляции
mod_auth_dacs, вызвав make help. Модуль mod_auth_dacs
# cp gw-ca.crt /opt/apache2/conf/server.crt можно построить с тремя возможными параметрами, до-
# cp gw-ca.key /opt/apache2/conf/server.key
бавляющими информацию о DACS в строку ответа серве-
[Wed Jun 14 10:33:00 2006] [notice] Apache/2.0.58 (Unix) # install -g apache2 -m 0640 ↵
mod_ssl/2.0.58 OpenSSL/0.9.8a mod_auth_dacs/1.4.13a configured -- /opt/dacs/federations/site.conf-std ↵
resuming normal operations /opt/dacs/federations/site.conf
Еще для проверки работы с SSL в комплекте DACS име- Файл хорошо комментирован, многие параметры понят-
ется утилита sslclient, позволяющая подсоединиться к веб- ны, поэтому трогать его не будем. На время тестирования
ресурсу по SSL и получить необходимую информацию. можно отключить SSL, установив директиву SECURE_MODE
в off, но в рабочей системе, естественно, она должна быть
# /opt/dacs/bin/sslclient testserver.net:443 включена.
68
web
Обратите внимание на каталоги, в которых должны хра- <Jurisdiction uri="testdacs.net">
JURISDICTION_NAME "FIRST"
ниться настройки, они описаны как: </Jurisdiction>
${Conf::FEDERATIONS_ROOT}/${Conf::FEDERATION_DOMAIN}/ ↵ </Configuration>
${Conf::JURISDICTION_NAME}
В примере адрес федерации и юрисдикции совпадает,
То есть в нашем случае полный путь должен быть такой – разделение идет на уровне ресурсов. Как вариант можно
/opt/dacs/federations/testdacs.net/FIRST/. разделять на юрисдикции при помощи разных доменов,
Создадим файл dacs.conf для федерации. например first.testdacs.net. Чтобы не создавать множество
конфигурационных файлов, создадим для FIRST/dacs.conf
# install -g apache2 -m 0660 /dev/null ↵ символическую ссылку:
/opt/dacs/federations/dacs.conf
шей юрисдикции.
Параметры понятны. Обратите внимание на установ-
<groups xmlns="http://dss.ca/dacs/v1.4"> ленное по умолчанию время жизни credentials, которое со-
<group_definition jurisdiction="FIRST" name="jurisdictions"
mod_date="Tue, 26-Jun-2006 12:00:00 GMT" type="public"> ставляет 43200 секунд – 12 часов, и на отключенную про-
<group_member jurisdiction="FIRST" name="DACS" type="meta" верку IP-адреса в credentials.
alt_name="My First Test Jurisdiction"
dacs_url="http://testdacs.net:8080/cgi-bin/dacs"
authenticates="yes" prompts="no"/> Создаем ключи
</group_definition>
</groups> Для создания ключей используется утилита mkkey. Ключи
необходимо сгенерировать для федерации и каждой юрис-
А в /opt/dacs/federations/dacs.conf данные о федерации дикции. Во избежание компрометации в дальнейшем лучше
и юрисдикции. поручить эту процедуру cron, который будет менять ключи
в наименее загруженное время (с учетом жизни credentials,
<Configuration xmlns="http://dss.ca/dacs/v1.4.13а"> чтобы никто не возмущался).
<Default>
FEDERATION_DOMAIN "testdacs.net" # install -g apache2 -m 0660 /dev/null ↵
FEDERATION_NAME "DACSTEST" /opt/dacs/federations/testdacs.net/federation_keyfile
LOG_LEVEL "info" # /opt/dacs/bin/mkkey -u testdacs.net -q ↵
</Default> /opt/dacs/federations/testdacs.net/federation_keyfile
70
web
Рисунок 1. HTML-форма для регистрации пользователей DACS Рисунок 2. Вид страницы при успешной регистрации
Посмотрим, что получилось. Например, такая запись при наличии самого файла:
Если заглянуть внутрь cookie, то можно увидеть только Или, например, когда DACS не нашел описание ресур-
имя пользователя в формате DACS, остальная информа- са (требуется testdacs.net).
ция зашифрована. При помощи утилиты cookie расшифру-
[Thu Jul 27 18:43:32 2006] [error] [8459,1,-]
ем полученный credentials.
[dacs_version:"conf"] Could not find config in
"/opt/dacs/federations/dacs.conf" using service URI
# /opt/dacs/bin/cookie -u testdacs.net -decrypt < cookie http://localhost:8080/cgi-bin/dacs/dacs_version
federation='DACSTEST'
DACS username='FIRST:sergej'
ip_address=''
Вместо заключения
roles='' Несмотря на то что DACS уже установлен и работает, что-
expires_secs='1154148374' бы окончательно в нем разобраться, потребуется провес-
auth_style='generated'
valid_for='acs'
ти не один эксперимент, меняя параметры и отслеживая
version='1.4' реакцию системы. Здесь открываются большие просторы
для творчества. Следует добавить еще юрисдикций, хотя
В файле acl-prenv.0 изменим user("any") на user("auth"). бы одну федерацию, передать между ними пользователя,
Если параметр изменяется в конфигурационном файле поэкспериментировать с revocations list, несколькими поль-
Apache, то для того чтобы он вступил в силу, требуется пе- зователями, ролями. Только так можно будет ощутить мощь
резапуск веб-сервера. При правке файлов DACS измене- и гибкость этой системы. Успехов.
ния будут актуальны уже при следующем запросе, поэтому
перезапускать ничего не надо. Попробуем теперь получить 1. Яремчук С. Контролируем доступ к веб-сервису с помощью
доступ к prenv без регистрации, авторизовавшись в систе- DACS.//Системный администратор, № 8, 2006 г. – C. 74-78.
ме. В последнем случае credential делает свое дело, и мы 2. Сай т пр о ек та OMSE – ht tp: //w w w.omse.de /download /
получаем доступ к требуемому ресурсу. download-dacs-ix-07-2006.shtml.en.
3. Сайт DACS – http://dacs.dss.ca.
Загляни в журнал 4. Сайт проекта Apache – http://httpd.apache.org.
При настройках, описанных в статье, DACS будет вести 5. Сайт OpenSSL – http://www.openssl.org.
четыре файла журнала, которые расположены в каталоге 6. Сайт Expat – http://expat.sourceforge.net.
/opt/dacs/logs. Три файла описывают все события, а файл, 7. Базы данных, которые могут использоваться с DACS – Berkeley
имя которого начинается с FIRST и далее текущая дата, DB: http://dev.sleepycat.com/downloads/latestreleases.html; gdbm
поможет разобраться с происшедшим в конкретной юрис- (она может компилироваться в режиме совместимости с ndbm):
дикции. В режиме отладки выдается большое количество ftp://ftp.gnu.org/gnu/gdbm.
информации, которая при внимательном анализе поможет 8. Сайт проекта Samba – http://www.samba.org.
разобраться с проблемой. 9. Сайт проекта OpenLDAP - http://www.openldap.org.
Алексей Мичурин
DBI – это Perl-модуль для взаимодействия с базами данных. Наверно, я не сильно ошибусь,
если скажу, что он используется в доброй половине всех существующих Perl-программ. Можно
ли его усовершенствовать или адаптировать, пользуясь его объектно-ориентированной
природой? Конечно!
72
программирование
П
окопаться во внутреннем устройстве модуля DBI ин- тва имён и две директивы package, оформлено ли это одни
тересно по двум причинам. Во-первых, он весьма по- файлом или двумя, пакетами или модулями.
пулярен и используется в проектах самого разного Так оно и есть.
масштаба. Вам, я думаю, знакома ситуация: крупный про- В недрах модуля DBI существуют два разных класса
ект развивался на MySQL 4.0, и, когда было накоплено не- (пакета или модуля; в терминах Perl это практически од-
мало кода, MySQL 4.0 сменили на 4.1. В этом случае сра- но и тоже). Первый – класс соединений – DBI::db, второй –
зу возникают проблемы с кодировками. Наиболее универ- класс запросов – DBI::st. То есть когда вы инициируете но-
сальное решение – выставлять кодировку после каждого вое соединение:
вызова connect, но это может потребовать скорректировать
код многих сценариев. my $dbh=DBI->connect(...);
Аналогичная ситуация возникает, когда с одной базой
работают комплексы программ, разработанные из расчё- вы порождаете объект класса DBI::db (а не класса DBI, как
та на разные установки времени; например, одна програм- можно было бы подумать). Аналогично, когда вы констру-
ма предполагает, что системные часы идут по Гринвичу, ируете новый дескриптор запроса:
а другая – по московскому времени. Тогда выставить еди-
ное время для базы не представляется возможным и каж- my $sth=$dbh->prepare('select ...');
дый клиент должен выставлять локальную переменную
time_zone. Как и в предыдущем, в этом случае есть два вы получаете объект класса DBI::st. Причём обратите вни-
выхода: первый – «перелопатить» весь код; второй – на- мание, метод prepare, который мы только что вызвали
писать модуль, наследующий все свойства DBI, но с неко- и который является конструктором для объектов класса
торыми коррективами. DBI::st, принадлежит объекту класса DBI::db. Методы де-
У каждого из этих подходов есть свои плюсы и ми- скрипторов запросов, соответственно, принадлежат объ-
нусы, выбор во многом зависит от конкретной ситуации, ектам класса DBI::st.
но для крупных проектов второй подход реализуется го- Таким образом, DBI – это не один, а два тесно связан-
раздо проще и быстрее, чем первый. ных класса, что незаметно для прикладного программис-
Кроме того, объектно-ориентированный подход более та, но при детальном рассмотрении оказывается вполне
универсален и позволяет решать не только эти, но и мно- логично.
гие другие задачи.
Вторая причина, по которой обратиться к модулю DBI бу- Пустой модуль, наследующий от DBI
дет весьма интересно, – это нетривиальность самого моду- Теперь становится понятно, как унаследовать методы мо-
ля. Как мы скоро увидим, чтобы унаследовать методы это- дуля DBI. Вот развёрнутый пример, простой и понятный,
го модуля, совсем недостаточно строчки: как букварь:
74
программирование
1: use strict; Наиболее полезным примером мне представляется метод
2: @DBIru::ISA = qw(DBI);
3: @DBIru::st::ISA = qw(DBI::st); ping. Конечно, модуль DBD::mysql поддерживает метод ping,
4: но если вы мигрируете на другую базу данных, то можете
5: package DBIru::db;
6: @DBIru::db::ISA = qw(DBI::db); не обнаружить метода ping в соответствующем DBD-драй-
7: sub connected { вере. (Особенно этим грешат драйверы для работы с фай-
8: my ($dbh, $src, $login, $passwd, $attr)=@_;
9: $dbh->do('SET CHARACTER SET koi8r'); лами.) Модуль DBI содержит только «пустышку», которая
10: } всегда возвращает «0 but true». Вместе с тем если вы ис-
11:
12: 1; пользовали собственный метод ping, то не почувствуете
смены DBD-модуля.
Как и следовало ожидать, метод connected принадле- Вот текст модуля DBIping.pm:
жит к пространству имён DBIru::db, так как он является ме-
тодом дескриптора соединения. Ничего экзотического он 1: use strict;
2: @DBIping::ISA = qw(DBI);
не делает, просто устанавливает кодировку. 3: @DBIping::st::ISA = qw(DBI::st);
Здесь же можно выставить часовой пояс: 4:
5: package DBIping::db;
6: @DBIping::db::ISA = qw(DBI::db);
$dbh->do(q|SET time_zone='+04:00'|); 7: sub ping {
8: my ($dbh)=@_;
9: my $r=0;
10: eval {
11: local $SIG{__DIE__} = sub { return (0); };
Другие способы инициализации соединения 12: local $SIG{__WARN__} = sub { return (0); };
Тема инициализации соединения представляется мне на- 13: $r=$dbh->do('select 1');
14: };
столько важной, что я просто не могу обойти вниманием 15: return ($@)?0:$r;
другие способы настройки соединения, не относящиеся 16: }
17: 1;
к созданию дочерних модулей. Установить кодировку мож-
но, используя конфигурационный файл. Метод ping, как и положено, проверяет, не было ли по-
Сперва создаём файл следующего содержания: теряно соединение с базой. Для этого он пытается сделать
элементарный запрос к базе и анализирует результат. Ко-
[dbi_options] нечно, многие базы данных имеют в своём API самостоя-
default-character-set=koi8r
тельный метод ping, но наш ping сможет работать практи-
Допустим, мы назвали его /home/etc/my.cfg. чески с любой базой данных.
Теперь при создании соединения мы должны указать Если вы используете модуль DBIping вместо DBI, то мо-
модулю DBI (а он передаст эту информацию драйверу жете навсегда забыть о проблемах с методом ping.
DBD::mysql), что при соединении следует обратить внима-
ние на настроечный файл: Другие методы соединения
Отмечу, что к методам соединения относятся не только
$db=DBI->connect('DBI:mysql:test;'. connect, disconnect, rollback, begin_work, но и prepare, и do,
'mysql_read_default_file=/home/etc/my.cfg;'.
'mysql_read_default_group=dbi_options', и даже last_insert_id, selectrow_array, которые, на первый
'root', ''); взгляд, работают с данными и интуитивно могут быть от-
несены к методам запроса.
Имя файла указывается в параметре mysql_read_default_file, Не стоит обманываться, смотрите в корень – на объект,
а секция файла, которую надо прочитать, – в параметре для которого вызывается метод.
mysql_read_default_group. Конечно, это работает только
для MySQL, подход, которому посвящена статья, гораздо Наследование методов запросов
более универсален, но создать конфигурационный файл Аналогично можно переопределить или добавить методы
всё-таки несколько проще, чем модуль-наследник. запроса. Я не буду приводить примеры этих действий. Да-
К сожалению, выставить часовой пояс таким образом не вайте теперь подправим существующий метод – execute.
получится. Если вы являетесь единственным пользовате-
лем базы данных (или другим пользователям безразлично, Модернизация метода execute
какое время возвращают SQL-функции типа NOW()), то зо- Я предлагаю заставить метод execute протоколировать все
ну можно выставить глобально: запросы. Зачем это может понадобиться? Например, вы
поддерживаете большой проект. Со временем ресурс на-
mysql> SET GLOBAL time_zone = '+04:00'; бирает популярность, нагрузка на базу данных возрастает,
и вы замечаете, что сервер начинает «задыхаться». При-
Но чаще всего это решение не подходит, так как раз- чину установить бывает трудно, так как все запросы доста-
ный софт, использующий один сервер, требует разных на- точно легки, просто их много. В таком случае бывает очень
строек временной зоны. полезно собрать статистику по запросам за недельку и про-
анализировать их: какие запросы выполняются чаще, не на-
Метод ping (страхующее замещение метода) до ли где-то создать индексы... Из такой статистики порой
Итак, мы попробовали переопределять методы DBI. Давай- можно узнать самые неожиданные вещи и не раз восклик-
те теперь попробуем создать собственный новый метод. нуть «Эврика!».
76
программирование
5: package DBImd5::db; 4:
6: @DBImd5::db::ISA = qw(DBI::db); 5: package DBIautodef::st;
7: sub md5 { 6: @DBIautodef::st::ISA = qw(DBI::st);
8: my ($db, $table)=@_; 7: sub fetchrow_array {
9: my $sql='CHECKSUM TABLE '. 8: my $st=shift;
10: $db->quote_identifier($table); 9: return map {defined($_)?$_:'N/A'} ↵
11: my $st=$db->prepare($sql); $st->SUPER::fetchrow_array();
12: $st->execute(); 10: }
13: my (undef, $md5)=$st->fetchrow_array(); 11: 1;
14: $st->finish();
15: return $md5;
16: } Ничего, требующего дополнительных комментариев,
17: 1; в этом коде нет. Мы корректно наследуем методы из DBI,
DBI::db и DBI::st; в пространстве имён DBIautodef::st создаём
Если вместо DBI использовать этот модуль, то в вашем метод fetchrow_array.
распоряжении окажется ещё один метод соединения: В нашем методе fetchrow_array мы вызываем оригиналь-
ный fetchrow_array, используя префикс SUPER. Результат
$dbh->md5(имя_таблицы); обрабатываем и возвращаем.
В определённых условиях тот метод может быть очень
который будет возвращать контрольную сумму всех дан- полезен. Одной только заменой DBI на DBIautodef вы из-
ных таблицы. Чтобы код не потерял наглядность, я не стал бавитесь от всех неопределённых значений, возвращае-
проверять в нём ошибки, ограничившись только самыми мых запросами. Если вы выбираете данные для отчётов,
важными и необходимыми процедурами. Я имею в виду наш модуль может весьма и весьма облегчить вашу рабо-
вызов функции quote_identifier. Ни в коем случае не под- ту. Но у него есть и важные недостатки.
ставляйте в SQL-запрос имя таблицы «как есть». Это сразу Во-первых, не станет ли подобное поведение метода
создаст большую брешь в безопасности. Остальные про- fetchrow_array помехой? Надеюсь, вы всё хорошо проду-
верки не так принципиальны, и читатель может добавить мали?
их сам – по вкусу. Во-вторых, а как поведут себя методы fetchrow_arrayref
Чем же плох этот метод? Ответ может показаться фи- и fetchrow_hashref? А многочисленные методы selectrow_array,
лософским, но весь мой опыт показывает, что за этой фи- selectall_arrayref и их близнецы? Документация DBI не го-
лософией стоит железный прикладной смысл. ворит ничего определённого о том, какой из этих мето-
Дело в том, что модуль DBI реализует определённую дов является «основным». Это может зависеть от конк-
абстракцию. Он, как известно, передаёт запросы серверу ретного DBD-драйвера, и здесь надо быть предельно ос-
и получает данные. Обратите внимание: он не формирует торожным.
запросы, он их только передаёт. Конечно, эта абстракция В-третьих (и, на мой взгляд, это наиболее важно), наш
соблюдена не совсем строго, не все методы одинаково хо- метод снова нарушает логику DBI, ведь DBI не производит
роши для разных запросов и наоборот. Но в данном случае никаких манипуляций с данными, он их просто передаёт.
мы нарушили концепцию. Не лучше ли в данном случае сделать одну-единственную
Не менее важно и то, что DBI задумывался как интер- функцию, избавляющую вас от неопределённых значе-
фейс, не зависящий от конкретной СУБД. Мы же, добавив ний? Этот вопрос не риторический, ответ зависит от конк-
метод md5, прочно привязались не только к конкретной ретных обстоятельств. Если вы выберете более «правиль-
базе данных, но и к конкретной её версии. Если учитывать ный» подход и создадите простую функцию, то вам придёт-
тот факт, что мы никому не навязываем наш модуль и не ся скорректировать весь код, включив эту функцию вез-
позиционируем его как универсальный, то наше «преступ- де, где это необходимо. А если код писали не вы? А те, кто
ление» не будет казаться столь уж большим, но концепция его писали, уже уволились и забыли вообще, как это напи-
всё равно оказывается попрана. сано? Тогда, возможно, лучше попрать свои религиозные
Я вовсе не утверждаю, что наш метод md5 не применим чувства и грубо наступить на горло идеалам, заложенным
или вреден. Если посмотреть на него непредвзято, то он в архитектуру DBI.
ничем не хуже, скажем, метода last_insert_id(). Но, следуя
по этому пути, надо быть предельно осторожным. Если вы Заключение
разрушите абстракцию модуля DBI, то он во многом утра- DBI не случайно написан объектно-ориентированным. Его
тит свою ценность. Возможно, методы и функции, проти- конструкторы разделены на продуманные компоненты,
воречащие философии DBI, лучше выносить в другие мо- которые делают его ещё более гибким при наследовании.
дули? Нужно взвесить все «за» и «против», прежде чем на- Всё это открывает перед разработчиком бескрайние про-
чать кодировать. сторы для совершенствования DBI, что может существен-
но облегчить разработку и/или перенос и адаптацию уже
Замена NULL-значений на лету существующего кода.
Давайте переопределим метод fetchrow_array так, чтобы Но прежде чем вы начнёте улучшать DBI, обязательно
он автоматически заменял все неопределённые значения сделайте две вещи: ещё раз внимательно прочитайте доку-
на строку «N/A». ментацию – возможно, то, что вам нужно, уже реализовано;
и взвесьте все «за» и «против», ведь DBI является фунда-
1: use strict; ментом многих программ, и малейшие неточности в фун-
2: @DBIautodef::ISA = qw(DBI);
3: @DBIautodef::db::ISA = qw(DBI::db); даменте могут покривить всё здание.
Алексей Барабанов
В Интернете и печатных изданиях можно встретить множество документов, описывающих
разнообразные представления о принципах системного администрирования. Попробуем найти
в этих вариантах общие черты и определить направление совершенствования.
Ф
ормирование профессии сис- пов задумывался любой автор, добро- на данную тему [2], отслеживая изме-
темного администратора тес- совестно подходящий к процессу опи- нение среды и спроса, но разделы, пос-
но связано с созданием общих сания системного администрирования. вященные «вечным вопросам», почти
представлений о принципах деятель- Например, широко известно «толко- не менялись и путешествовали из из-
ности сисадминов. Такие принципы, вание от Эви Немет». В нашей стра- дания в издание. Поэтому оказалось,
безусловно, должны опираться на тех- не познакомились с ним по перево- что принципы деятельности сисадмина
нологические особенности профессии, ду второго издания руководства сис- Linux, согласно изданию 2002 года [3],
но создавать стойкую и непротиворе- темного администратора [1] от группы буквально повторяют морали от 1995
чивую систему этических норм, неза- авторов под предводительством это- года [1]. Быть может, авторы нашли то
висимую от уровня развития техноло- го специалиста. И хотя далее Эви Не- самое, что уже более не совершенс-
гии. О необходимости таких принци- мет опубликовала много литературы твуется? Предполагаю, что нет! Эви
78
IMHO
Немет и компания были проповедни- сиональной этики, начиная с книг Эви ми (всем известный конверт с паро-
ками подчинения деятельности сисад- Немет и завершая другими публикаци- лем суперпользователя) дает доста-
минов корпоративной политике. А при- ями, и поставлю задачи, не нашедшие точно ясную картину ошеломленного
знаком зрелости профессии является отражения в указанных работах. человека, который только-только разо-
создание независимой системы про- брался с проблемами и спешит поде-
фессиональных норм. Например, та- Примитивная литься своими рецептами. Особо тро-
ких, что регламентируют деятельность корпоративная этика гательно упоминание авторов о том,
адвокатов, врачей и даже бухгалтеров Вопросы общего характера в трудах как «машины другого факультета ин-
в развитых странах! Эви Немет и команды рассматрива- фицировали весь университетский го-
Когда пытаются рассмотреть дан- ются в самом начале, как «основные родок». Вот проблема-то! К чести ав-
ную проблему, то, как правило, рас- задачи системного администратора», торов, они не повторили этот же при-
суждают со стороны некой абсолют- и ими же завершаются книги упомя- мер в версии [3]. Вообще в [3] практи-
ной и абстрактной правды или соци- нутого «сиквела», это глава «Страте- чески нет примеров из университетс-
ального заказа. Например, чтобы ав- гия и политика». Иногда заголовки ва- кой практики. Хотя, быть может, дело
томобиль доехал из точки А в точку рьируются, но общая схема повторяет- в элементарном взрослении и смене
В с оптимальной скоростью, рассмат- ся с педантичностью плана школьного места работы.
ривают, сколько надо залить бензи- сочинения: введение в профессию, ос- Но даже на таком примитивном ма-
на, как надо «давить» акселератор, новной блок «технических аргументов» териале Эви Немет сотоварищи сдела-
какого качества должно быть дорож- и заключительное напутствие. ли ряд очень важных замечаний, кото-
ное покрытие, и никто, подчеркиваю, – Учитывая хронологию и некоторые рые нельзя не процитировать и про-
никто! – не пытается рассмотреть дан- положения этих материалов, отнесу их комментировать:
ную проблему с точки зрения «само- к начальному этапу осмысления про- ...Вы ...захотите стать штатным
го» автомобиля. А «ему» лучше во- фессиональной этики. Даже «основ- администратором. ...проблем с по-
обще никуда не ездить, а стоять чис- ные задачи» представляют собой прос- иском работы у вас не будет. Но от-
теньким в гараже. Так и с системным то набор абстрактных пожеланий рабо- ношения с коллегами и руководс-
администрированием, все вариан- тодателя. Вроде того, что бы вы хотели твом ... обязательно обострятся.
ты рекомендаций созданы явно с по- от сисадмина, но стеснялись это поп- [1, 1.6]
дачи заказчиков. Причем трансфор- росить. Авторы постоянно сбиваются Это фактическое признание, что си-
мация произошла незаметно. Нача- на бытовые примеры и случаи из уни- садмин является участником обычного
лось все с книжек, подобных пресло- верситетской практики самозаявлен- сервисного антагонизма. В версии [3]
вутой серии «библий» от Эви Немет. ных админов. И временами откровен- оно отсутствует, так как там уже декла-
Затем идеи сортировки сисадминов но признаются, что описывают предмет рируется подчинение сисадмина кор-
по методам ведения работы на «бан- с позиции новичка: «Вы можете обна- поративной политике, а внутри корпо-
дитов», «фашистов» и «идиотов» про- ружить, что системное администриро- рации антагонизм неприемлем, так как
никли в массовое сознание [3]. И за- вание вам нравится, и захотите стать там царит «тимбилдинг» (team building –
вершилось все вполне официаль- штатным администратором.» [1, раз- методика сплочения коллектива).
ным бойскаутским катехизисом [5] дел 1.6]. Забавно, что и к публикации Ответственное лицо должно
от Red Hat Inc., претендующим на ис- семью годами позже [3, раздел 1.9] ав- иметь диктаторские полномочия.
тину в последней инстанции. Но пред- торы снова в нерешительности и бук- [1, 32.2]
ставители профессиональной группы вально слово в слово повторяют совет. Конечно, это в адрес сисадмина
тоже имеют свои интересы и тоже мо- За семь лет можно бы и определиться в период ликвидации проблемы. В поз-
гут нуждаться в защите. Этот вопрос с выбором профессии! дней версии [3] снова отсутствует. Ну
также должен регулироваться про- Итак, рассмотрим, как специалис- какая диктатура может быть в устояв-
зрачным образом. тами под руководством Эви Немет по- шейся корпоративной иерархии?
Получается, что и требования об- нимаются принципы деятельности сис- Вышестоящее руководство часто
щества к представителям профессии, темных администраторов. Буду исхо- не имеет ни малейшего представле-
и претензии самих профессионалов дить из того, что вы имеете возмож- ния о том, чем занимаются систем-
должны получить некоторое формаль- ность ознакомиться с подлинника- ные администраторы. [1, 32.8]
ное выражение и закрепление в виде ми [2], и здесь стану отмечать только Данное положение в [3] еще более
соглашения. Со стороны общества та- важные, с моей точки зрения, или при- усугублено. Раздел «Как руководить
кое закрепление создается признани- мечательные положения. руководителями» стал короче, но на-
ем норм поведения профессиональной Прежде всего авторы используют полнился конкретными замечаниями
группы и поддержкой этих норм, выра- эмпирические и экспертные правила. и выводами. Например, в число непо-
женной законодательно. Самые сильные аргументы: «Мы бесе- нятливых руководителей добавлены
Конечно, в рамках одной журналь- довали с видными деятелями в облас- «менеджеры нетехнического звена».
ной статьи невозможно решить эти ти системного администрирования...» Удваивайте или утраивайте вре-
вопросы. Здесь лишь попытаюсь оп- и «Мы знаем одну фирму...». Но в це- мя, которое, на ваш взгляд, по-
ределить направления формирова- лом оперирование интуитивно понят- надобится для решения ... задач.
ния такой системы норм или профес- ными истинами и бытовыми рецепта- [1, 32.8]
80
IMHO
изводственные ситуации. Каждый вые квоты. Пытается уволить пок- дом последней версии можно ознако-
действует в силу собственных убеж- лонников игры в xtrek.» Правилам миться в [6]. Наиболее старый из раз-
дений и привычек. По замыслу ав- работы в сети Эви Немет посвяща- мещенных в Сети оригиналов мож-
тора, ни один не добивается успеха. ет в [3] целый раздел. Нет нужды но найти по адресу [7] и определить,
На этом и построен комизм положе- повторять, что использование се- что они слабо эволюционируют. Ко-
ния. То есть тут должен содержаться ти для игр они не предусматрива- нечно, можно предположить, что мне-
определенный юмор. Но, увы, не всег- ют. ние специалистов Red Hat Inc. являет
да именно тот, что планировал автор. Ситуация 6. «Глупые» вопросы собой наиболее свежий и, значит, на-
И возможно, при детальном рассмот- пользователей. Технический бан- иболее верный взгляд на обсуждае-
рении в этом замечательном произве- дит просто издевается над чайни- мый предмет. Но на деле это не так.
дении оказывается еще более основа- ками. Маньяк ведет себя как иди- Требования не только много раз про-
ний для смеха. от из ситуации 5. Идиот увлекает- дублированы, но и часто противоре-
Несмотря на желание автора вы- ся панибратством. И снова админ- чат одно другому. Общее впечатление
смеять методы администратора-фа- фашист делает практически то, таково, что авторы стремились не ос-
шиста, наряду с остальными, очень что может привести к успеху: «Бло- тавить сисадмину никаких шансов ук-
часто именно его действия происхо- кирует вход пользователя в систе- лониться от выполнения придуманных
дят в рамках ожидаемого, и именно му, пока тот не представит веские ими обязательств. Далее буду по-по-
они оказываются более успешными, доказательства своей квалифика- рядку анализировать каждое утверж-
чем действия остальных. Рассмотрим ции». Эви Немет в [3, раздел 29.2] дение «Философии системного адми-
выборочно несколько типовых ситуа- предлагает не допускать к работе нистрирования» от Red Hat Inc.
ций из [5]. пользователей, пока они не согла- 1. Автоматизировать все, что
Ситуация 1. Нехватка дискового сятся с правилами использования. можно. Естественно, не нужно пони-
пространства. Технический бан- Если предполагается осознанное мать буквально. Безусловно, не в си-
дит погружается в пучину исследо- согласие, то оно подразумевает на- лах сисадмина автоматизировать все.
ваний и прогнозов. Маньяк прос- личие квалификации, достаточной Но даже с такой поправкой – «усту-
то удаляет самые большие файлы. для понимания и применения пра- пайте старикам, помогайте женщи-
Идиот самые большие файлы пы- вил. нам» – данное правило не приемле-
тается упаковать. А вот админ-фа- Ситуация 7. Установка новой опе- мо. И оговорка, мол, поищите снача-
шист: «Активно пользуется квоти- рационной системы. Техничес- ла решение в Интернете, тоже ниче-
рованием диска.» Автор пытается кий бандит ведет себя как типич- го не меняет. Это правило фактичес-
передернуть ситуацию: «Не допус- ный пользователь Gentoo. Маньяк ки призывает системного админист-
кает никаких исключений, чем пол- просто всех выкидывает из систе- ратора заняться несвойственной ему
ностью останавливает деятельность мы. Идиот копирует дистрибутив- работой в стиле «технического бан-
разработчиков». То есть в этом слу- ный диск в ядро. А админ-фашист: дита» Стефана Зелински [5]. Заду-
чае разработчики настолько слабо- «В первую очередь изучает законо- маемся, чем же должен заниматься
умны, что не реагируют на сообще- дательные акты против производи- сисадмин и кто он такой вообще? Во-
ния операционной системы. Воз- теля, поставляющего программное первых, сисадмин – это нанятый со-
можно, ситуация взята из практи- обеспечение с ошибками». Ну раз- трудник, а во-вторых, он должен об-
ки. (Ситуации 2 и 3 пропустим.) ве это не разумно? служивать эксплуатационный цикл
Ситуация 4. Авария загрузочно- информационных систем (далее ИС),
го диска. Технический бандит со- Раскроем карты, как же Стефан Зе- и не более! Создание новых сущнос-
вершает чудеса и восстанавливает лински определил типаж администра- тей или объектов своей работы не вхо-
все сам. Маньяк сводит все к скан- тора-фашиста – «Обычно законченный дит в его задачу. Даже самое первое
далу. Идиот не замечает ничего. тунеядец, вынужденный занимать- обоснование «любое задание, возни-
А вот админ-фашист: «Начинает ся администрированием системы». кающее более одного раза» надо счи-
расследование аварии...» То есть Очень мило! Это так типично для си- тать вздорным! В работе системного
делает то, что и требуется. Кстати, садмина. Ведь недаром лень счита- администратора не возникает ника-
предложения в [3] наиболее близ- ется добродетелью системного адми- ких заданий. Вся его работа подчине-
ки действиям администратора-фа- нистратора. Похоже, Стефан Зелинс- на и полностью обусловлена возмож-
шиста. ки попал прямо «в яблочко», совсем ностями программного обеспечения
Ситуация 5. Слабая производи- не целясь. Он умудрился указать са- и аппаратуры. Что значит, далее ци-
тельность сети. Технический бан- мый правильный стиль поведения си- тирую из [6], «возникло более одного
дит опять занимается какой-то са- садмина! Хотел посмеяться, но вмес- раза» и, чуть далее, «проверка сво-
модеятельной модификацией. Ма- то этого научил! бодного дискового пространства»?
ньяк просто размыкает кабели. Это откровенный бред! Или в эксплу-
Идиот делает нечто непотребное. Изощренная атируемой ИС предусмотрена дан-
А вот админ-фашист снова на вы- корпоративная этика ная отчетность, или нет. Не может ру-
соте: «Звонит в Беркли и АТ&Т, при- Но, безусловно, всех превзошли гу- ководство вдруг поставить такую за-
ставая к ним, как установить сете- ру из Red Hat Inc. С русским перево- дачу. И не может сам системный ад-
82
IMHO
нибратствующего «маньяка» из заме- шали инструкции, прочли документа- вышать свои полномочия или тракто-
ток Зелински), а именно в том смыс- цию, то непонимание может иметь ис- вать свои обязанности расширитель-
ле, как это рекомендует Эви Немет. точник только в неформальном аспек- но. Общечеловеческое правило «мож-
Информируйте руководство о том, те. Тут мудрецы из Red Hat Inc. впер- но все, что не запрещено» в произ-
что собираетесь делать, что делае- вые затрагивают этику. Они извиня- водстве не работает. Ну ясно же, если
те и что сделали. Для чего? Дословно ются, что употребляют вообще такой за каждое действие заказчик должен
из [3, 29.6]: «...если необходимо соб- термин, как «пользователи», но сра- платить, то перечень действий уже за-
рать аргументы в пользу найма до- зу вслед за этим, ничтоже сумняшись, ранее описан и согласован сторонами.
полнительного персонала или покупки именуют их «ключевым звеном успеш- Но далее еще забавнее: «Это не озна-
нового оборудования.», и, чуть далее, ного администрирования». Здорово, чает, что вы должны относиться к со-
«он (документ. – А.Б.) может стать се- да! Не люди, а звенья. Но я приветс- трудникам как к злоумышленникам».
рьезным оружием в ежедневных раз- твую такую откровенность. Итак, все- Хм! Тогда не понятно, кто может угро-
борках.». Замечаете, как изменился таки админ-фашист и здесь «рулит»! жать безопасности не подключенных
контекст работы сисадмина от описан- 6. Знать свое дело. Вот это са- к Интернету систем. Наверное, «зеле-
ного в работах Эви Немет до того, что мое противоречивое место катехизи- ные человечки»? Но потом изощрен-
существует в грезах инженеров из Red са от Red Hat Inc. Вы, наверное, поду- ные авторы из Red Hat Inc. начинают
Hat Inc. Задумайтесь, что вам ближе? мали: составил документацию, расска- уже прямо противоречить своим же
4. Знать свои ресурсы. Вот сно- зал ее наизусть, повторно инвентари- рекомендациям.
ва элемент внушения. Если, следуя зировал ресурсы, подружился с поль- 7.1. Риски социальной инжене-
рекомендации выше, все задокумен- зователями и их семьями, да еще при рии. Здесь совершенно однозначно
тировано и даже, как предложено да- этом можно решить, что производил рекомендуется относиться ко всем
лее, несколько раз произнесено вслух все эти действия неосознанно, без зна- пользователям как к потенциальным
публично, то что еще нужно? Быть мо- ния, что делает! Бред, конечно! Да и нарушителям. Что, в общем-то, пра-
жет, продекламировать перед сном? не о работе сисадмина здесь вооб- вильно и логично. Но чуть далее все
Или, возможно, этап документирова- ще. Вы же прочли заголовок раздела: выворачивается наизнанку. Сначала
ния, по логике Red Hat Inc., может про- «Изощренная корпоративная этика». странное: «На самом деле... у вас во-
изводиться в ситуации, когда предмет Цитирую по [6, раздел 6]: «Вы должны обще не будет полномочий вырабаты-
работы сисадмина и собственно объ- понимать, чем занимается ваша орга- вать правила, не говоря уже о том, что-
ект документирования ему известен низация». Во как! Правда, далее они бы обязывать их выполнять.» Теперь
не полностью? Ну а финальное закли- пытаются выкручиваться: «Это можно понятно, зачем надо познакомиться
нание вообще трудно понять: «Отсутс- свести к одному вопросу: каково назна- с пользователями поближе? Чтобы уп-
твие «ситуационной осведомленнос- чение систем, которые вы администри- рашивать их в приватной обстановке!
ти» в отношении доступных ресурсов руете?». А, спрашивается, чем отлича- Ну а потом все в точности, как у Сте-
часто хуже, чем полное отсутствие ос- ются письма с контрактами на постав- фана Зелински в сценарии действий
ведомленности». «Покрутил» это, как ку памперсов от переписки риэлторов? «идиота» в [4] ситуация 6: «Публикуй-
конфетку, ничего не понял! Быть мо- Вероятно, как в известном анекдоте: те ссылки на статьи по вопросам бе-
жет так: «полное отсутствие осведом- пишите письма прописью – они быст- зопасности в вашей внутренней поч-
ленности заведомо лучше, чем отсутс- рее дойдут по назначению. Завершает- товой рассылке». Тем, кто примет эту
твие осведомленности в конкретной ся все репликой в стиле Дзен: «Вы об- глупость за «чистую монету», рекомен-
ситуации»? Очень напоминает пове- наружите, что ваши повседневные ре- дую сразу представить, как сообще-
дение «идиота» в описании Стефана шения стали лучше». То есть для вас ние формата BagTrack получит дирек-
Зелински. Неужели в Red Hat Inc. хо- это станет полной неожиданностью. тор его предприятия. Хотя, быть может,
тели именно такого? Прямо-таки корпоративная терапия! я не прав. Тут, скорее, предлагаются
5. Знать своих пользователей. За- 7. Безопасность не может быть действия в стиле «технического бан-
гадочное требование. Если сисадмин второстепенной задачей. Начина- дита», когда упомянутый персонаж по-
знает свои ресурсы, все задокумен- ется, как в анамнезе параноика: «Вне мещал советы в практически нечитае-
тировал и все начитал каждому поль- зависимости от того, что вы думае- мые источники, так как, я уверен, эти
зователю, то неужели можно предпо- те о среде, в которой работают ваши письма пользователями станут выки-
ложить, что он еще не познакомился системы, вы не можете считать ее бе- дываться «в корзину» без прочтения.
с каждым из них? А! Быть может, на- зопасной. Даже автономные системы, 8. Планировать. Снова, как в анек-
до узнать их приватные данные? Же- не подключенные к Интернету, могут доте: «Мужик, ты ведь не за гриба-
ны, дети, домашние любимцы... Веро- быть в опасности». Прочитав это, я на- ми в лес ходишь?», то есть речь опять
ятно, именно так, поскольку подчер- чинаю понимать, откуда у сисадминов не о планировании в технологичес-
кивается: «как вы сможете понять, ка- развивается та самая болезнь, что опи- ком смысле. Это очередной гипно-
кие системные ресурсы нужны пользо- сала еще Эви Немет в своих трудах блок. Его полезная нагрузка нуле-
вателям, не понимая самих пользова- и заметила, что в результате ее си- вая. Ну разве можно всерьез прини-
телей?» Задумаемся, в каком случае садмины склонны считать все ресурсы мать такие рекомендации, как требо-
возможна ситуация непонимания поль- своей собственностью [1, 32.9]. Сисад- вание экстраполировать заявления ру-
зователей? Если пользователи услы- мин ни в коем случае не должен пре- ководства: «Сказанное вскользь ... за-
84
IMHO
лужит отправной точкой для создания врачи, и адвокаты, и служители культа. ресурсам их предприятий, предохра-
профессиональной этики и соответс- Но максимальное сходство наблюдает- няет сисадминов от проблем!
твующего закона, ее защищающего. ся с профессией аудиторов. Это тоже В заключение приведу пример
Первое, на что можно обратить вни- молодая профессия, и она тоже име- из собственной практики. Один мой
мание, это замеченные еще Эви Немет ет дело как с приватной, так и с про- уважаемый заказчик, не желая де-
чрезвычайные полномочия сисадми- изводственной информацией. И вот ржать электронные сообщения на об-
нов [1, раздел 32.2] в отношении всех как решается вопрос в данном случае. щем сервере, забирает их не по про-
информационных ресурсов [3, раздел В Федеральном законе об аудиторс- токолу IMAP, а по протоколу POP3.
29.2]. Припомним еще и фразочку из [1, кой деятельности присутствует гла- При этом все сообщения, проходящие
раздел 32.14] о том, что резервная ко- ва 8 «Аудиторская тайна» [8]. Эта гла- через почтовый сервер, всегда дуб-
пия фактически взламывает любую ва полностью устанавливает обязан- лируются в специальный пул перед
защиту. Причем данное соображение ности и ответственность аудиторов пе- фильтрацией на вирусы и спам. И хо-
имеет значимость как в отношении ред клиентами-доверителями. Указан- тя я в договор обслуживания неизмен-
компаний, так и в отношении частных ная норма закона служит в поддержку но вношу пункт, обязывающий меня
пользователей. Человек в своей пов- соответствующих принципов из Кодек- исключить работу на возможных кон-
седневной жизни все более становится са этики аудиторов России, а именно курентов, но все-таки снимает беспо-
зависимым от компьютеров. Они дав- понятия о конфиденциальности и свя- койство только вера в правоту утверж-
но стали нормой в почти каждой го- занных с ним обязательствах [9]. дения Эви Немет на счет неисправи-
родской квартире. Они давно проник- Таким образом, кодекс этики сис- мой неграмотности заказчиков!
ли в телефоны, фотоаппараты, плейе- темных администраторов, поддержан-
ры DVD и даже в стиральные машины. ный законодательно, должен защитить 1. Evi Nemeth, Garth Snyder, Scott Seebass,
Все эти устройства, сопровождая де- интересы клиентов и обеспечить га- Trent R. Hein. UNIX System Andministration
ятельность человека, неизбежно на- рантию прав сисадминов, в силу об- Handbook. Prentice Hall PRT, 1995. Пе-
капливают информацию о тех сторо- стоятельств оказавшихся причастны- ревод на русский: «UNIX: руководство
нах жизни, которые принято считать ми к деловым интересам и правовым системного администратора», BHV,
личными. конфликтам их клиентов. 1997.
Если сейчас комплекс мероприя- Но это лишь час ть проблемы 2. Книги Эви Немет на сайте Ozon.ru –
тий по изъятию информации начина- и часть возможных преимуществ. http://www.ozon.ru /context/detail /id /
ется с обесточивания мест размеще- Здесь снова сделаю лирическое от- 336421.
ния компьютеров, продолжается бло- ступление. В нашей стране государс- 3. Evi Nemeth, Garth Snyder, Trent R. Hein.
кированием комнат и завершается твенные мужи издавна озабочены па- Linux Andministration Handbook. Prentice
непосредственной выемкой систем- дением престижа правоохранитель- Hall PRT, 2002. Перевод на русский:
ных блоков, то лишь потому, что за- ных органов. А проблема решается «Руководство администратора Linux»,
интересованные органы еще не дога- просто! Надо выработать этический Издательский дом «Вильямс», 2003.
дались, что к данной процедуре мож- кодекс соответствующих служб и за- 4. Stephan Zielinski. KNOW YOUR UNIX
но привлечь системных администра- крепить его законодательно. Что слу- SYSTEM ADMINISTRATOR – A FIELD
торов, которые по закону не могут от- чается при нарушении этики врачом GUIDE. 1992. – http://stephan-zielinski.
казаться (как свидетели) и произвес- или адвокатом в культурной стра- com/static/sysad.txt.
ти выемку данных в фоновом режиме, не? Провинившийся не только не- 5. «Об администрировании UNIX» – http://
используя служебный доступ систем- сет ответственность в рамках закона, www.sensi.org/~alec/unix/d_admin.html.
ного администратора. Ставшие таки- но и изгоняется из самой профессио- 6. «Философия системного администри-
ми привычными попытки спрятать сер- нальной среды. А у нас – нет! Таким рования» от Red Hat, Inc. в переводе
вер вместе со всей IT-группой в подвал, путем формируется не только уважи- И.Песина – http://old.linux.kiev.ua:8080/
в филиал, да хоть под лестницу, даже тельное отношение к профессиональ- ~ipesin/translations/rh-phy/ch-philosophy.
отправить сисадмина в отпуск вместе ной этике, но и к самим представите- html , оригинал.
с главным бухгалтером на время про- лям данных профессий, чего у нас так- 7. Red Hat Enterprise Linux 3: Introduction
верки, пусть вас не вводят в заблуж- же не наблюдается. Какую еще выго- to System Administration. Chapter 1. The
дение: сисадмины уязвимы! ду получают в этом случае профессии, Philosophy of System Administration –
Получается, что системные адми- обладающие подобным строгим ко- http://www.redhat.com/docs/manuals/
нистраторы рискуют подвергнуться дексом поведения? Они гарантируют- enterprise/RHEL-3-Manual/admin-guide/
давлению как со стороны государс- ся от случайных стихийных конкурен- ch-philosophy.html.
тва, так и со стороны работодате- тов и становятся участниками культур- 8. Федеральный закон от 7 августа 2001 г.
ля. Вспомните рассуждения Эви Не- ного рынка. Ибо в противном случае №119-ФЗ Об аудиторской деятельнос-
мет об ответственности сисадминов лишь недогадливость клиентов, ко- ти. Статья 8. Аудиторская тайна – http://
[3, раздел 29.3]. торые по замечанию наблюдательной www.ckat.ru/normdoc/zau/zaus8.htm.
Это не надуманная ситуация. В по- Эви Немет [1, раздел 32.8] совершен- 9. Кодекс этики аудиторов России. IV. Фун-
добное положение попадают все, но не понимают, какую власть над ни- даментальные принципы. 16.5. Конфи-
кто в силу специфики работы прони- ми может иметь человек, обладающий денциальность – http://www.docaudit.ru/
кает за границы частной жизни. Это и доступом ко всем информационным documents/kodeks/4.
Дмитрий Мороз
Компания Transmeta принесла практически совершенные процессоры в массы, однако
собственноручно допущенные ошибки, жестокая конкуренция и привередливые пользователи
не позволили ей завоевать место под солнцем.
Пятилетняя конспирация на рынке компаний, выпускающих про- строго засекречены. Лишь с анонсом
В 2000 году в средствах массовой ин- цессоры. До этого момента Transmeta первого продукта компании стали из-
формации стали активно циркулиро- была мало кому известна, поскольку вестны некоторые подробности по по-
вать слухи о появлении нового игрока все ее внутренние разработки были воду её деятельности.
86
ретроспектива
Для начала стоит сказать пару слов придумал для неё простое и лаконич-
о Дэвиде Дитцеле (David Ditzel) – одном ное название – «ПО для морфинга ко-
из основателей компании. Талантли- да» (Code Morfing Software). Благодаря
вый инженер, Дитцел успел поработать этому инженеры смогли добиться по-
и в AT&T Bell Laboratories, где он воз- лучения первых денежных вливаний
главлял группу, создавшую микропро- в свою компанию, которые произве-
цессор CRISP, первый RISC-чипа AT&T, ли: инвестиционная компания Walden
и в Sun Microsystems, где ему довелось Venture Capital; Пол Аллен (Paul Allen),
руководить лабораторией SPARC Labs, один из основателей Microsoft; а так-
а также занимать пост технического же скандально известный финансист
директора подразделения, занимав- Джордж Сорос (George Soros). Теперь
шегося микроэлектроникой. Впервые ничто не мешало Дитцелу, ставшему
же он стал известен в 1980 году как генеральным директором Transmeta,
один из авторов публикации «К вопро- начать вербовку талантливых кадров.
су о компьютере с сокращённым набо- В поисках инженеров он посе-
ром команд» (The Case for the Reduced тил университеты Беркли, Стэнфор-
Instruction Set Computer), в которой да, Вашингтона, а также Масачусетса.
впервые была упомянута аббревиа- Кроме молодых, в компанию набира-
тура «RISC». лись и «ветераны» – из компаний Sun, Дэвид Дитцел
Вернёмся в 1994 год, время его Silicon Graphics и Hewlett-Packard. Од-
пребывания в Sun. В то время Дит- нако от добровольцев из Intel Дитцел ное. Количество патентов, регистри-
цел вместе со своим коллегой, Ко- сразу отказывался, ссылаясь на жела- руемых компанией, непрерывно рос-
лином Хантером (Colin Hunter), экс- ние сохранять полнейшую секретность ло, к тому же масла в огонь подлила
периментировали с техникой бинар- разработки, а также избегать возмож- новость о найме на работу создателя
ной трансляции в попытке улучшить ного возникновения в будущем судеб- ядра Linux Линуса Торвальдса (Linus
работу ОС Windows на рабочих стан- ных исков по вопросам интеллектуаль- Torvalds). Теперь, по словам генераль-
циях Sun. Если кратко, то «бинарная ной собственности. ного директора Transmeta, под кры-
трансляция» представляет собой про- Со временем Transmeta обзаве- лом компании были собраны лучшие
граммный «слой», являющийся пос- лась собственным офисом в горо- специалисты по динамической ком-
редником между внутренней логи- де Санта-Клара, Калифорния, неда- пиляции.
кой процессора и операционной сис- леко от штаб-квартиры Intel. Имен- В мае 1998 года партнёр Transmeta,
темой. Он «на лету» превращает x86- но здесь трудились 240 набранных корпорация IBM, прислала ей первые
код во внутреннюю систему команд сотрудников компании. Правда, уз- изготовленные образцы процессора,
процессора, тем самым позволяя ему нать, над чем именно, в то время бы- и уже через несколько дней инжене-
выполнять программы, написанные ло невозможно. «Они соблюдают боль- ры добились его более или менее ста-
для «тандема» Wintel. Благодаря ис- шую секретность, – говорил анали- бильной работы. «То, что он вообще за-
пользованию «бинарной трансляции» тик Dataquest Натан Бруквуд (Nathan работал, – просто чудо», – говорил ин-
архитектура чипа может быть значи- Brookwood). – На протяжении года ник- женер компании Скот Дрейвис (Scott
тельно упрощена. то из них не проронил ни слова о про- Draves). «К сожалению, процессор ра-
К сожалению, руководители Sun делываемой работе». Кстати, именно ботал очень медленно. Одно только его
не были заинтересованы в радикаль- предположения Бруквуда относитель- включение занимало 30 минут време-
ном изменении дизайна своих процес- но создаваемого в недрах Transmeta ни. Что же касается производительнос-
соров семейства SPARC, поэтому оба «процессора, отдалённо совместимо- ти, чип работал в сотни раз медленнее
инженера, прихватив с собой коллег го с архитектурой х86», высказанные нормального процессора Pentium».
«по цеху» Боба Смелика (Bob Cmelik) им ещё в 1998 году, оказались наибо- К счастью, постоянная работа над
и Дуга Лэирда (Doug Laird), покинули лее точными. ошибками позволила с каждой новой
компанию, решив основать свою. Вот слова независимого разработ- ревизией процессора получать всё
Transmeta была зарегистрирована чика Джона Вартона (John Wharton): более быстрые и стабильно работа-
в апреле 1995 года. Основная миссия – «В то время я знал Дитцела уже 15 лет, ющие чипы. Теперь инженеры могли
разработка процессоров со сверх- и тем не менее я не имел ни малейше- сконцентрироваться на главной пос-
длинным командным словом (VLIW – го понятия, чем они занимаются. Я не- тавленной перед ними задаче – энер-
Very Long Instruction Word). Для того однократно спрашивал Дейва, однако гопотреблении. Для этого 10 сотрудни-
чтобы позволить компании развивать- он лишь улыбался и говорил, что рас- ков Transmeta отделились от осталь-
ся дальше, Дитцел и Лэирд возложи- скажет мне, только если я подпишу со- ных и основали группу, занявшуюся
ли на себя обязанности по поиску ин- глашение о неразглашении». разработкой технологии энергосбере-
вестиций. К середине 1995 года, дабы Несмотря на желание Дитцела со- жения процессора, впоследствии полу-
более доходчиво объяснять потенци- хранять всё в тайне, общественность чившей название LongRun. Созданная
альным инвесторам перспективы би- уже в 1997 году стала догадываться, за девять месяцев, она позволила чи-
нарной трансляции команд, Смелик что Transmeta готовит нечто незауряд- пу Transmeta ещё на стадии проекти-
88
ретроспектива
те эти показатели с таковыми для про- на его рыночное продвижение. Вот
цессора Pentium III Mobile: 106 кв. мм с этим как раз у Transmeta были боль-
и 44 млн. транзисторов. Однако ин- шие проблемы.
женеры Transmeta не остановились
на простом уменьшении процессо- Выход в открытый мир
ра и пошли ещё дальше, оснастив Во время представления Crusoe в ян-
Crusoe технологией энергосбереже- варе 2000 года Дитцел объявил, что
ния (LongRun). на данный момент компания ещё
В отличие от схожей технологии не нашла потенциальных клиентов.
SpeedStep корпорации Intel того пери- На протяжении последующих шес-
ода, LongRun позволяла процессору ти месяцев результат не стал лучше: Процессор Crusoe TM5600
в зависимости от загрузки изменять в списке появились компания S3, на-
тактовую частоту, а также напряжение мерившаяся производить различные го полугодия 2000 года составила нич-
питания на лету (причём без участия Интернет-устройства (Internet Apliance) тожные 358 тыс. долларов.
в этом операционной системы). Про- типа веб-планшетов, а также Quanta, Во время создания Crusoe компа-
цессор Crusoe, работающий на часто- занимавшаяся производством ноут- ния существовала за счёт многомил-
те 700 МГц, в зависимости от нагрузки буков. Однако расплывчатые пресс- лионных инвестиций, которые пос-
мог уменьшать этот параметр вплоть релизы – единственное, чем они кор- ле выхода процессора в свет прекра-
до 200 МГц. Напряжение питания в мили общественность на протяжении тились. Последние 88 млн. долларов
этом случае уменьшалось со штат- нескольких месяцев. Transmeta получила в июле. Теперь же
ных 1,6 В до 1,1 В. В этом режиме чип, Кроме отсутствия клиентов многих она должна была кормить 313 человек
по словам Transmeta, потреблял менее волновала скорость работы Crusoe. своего персонала самостоятельно. Вы-
1 Вт энергии, а в режиме «сна» – нич- Из-за необходимости эмулировать ход компании на фондовую биржу че-
тожные 0,08 Вт. архитектуру х86 производительность рез выпуск акций был запланирован
Напоследок стоит также отметить, процессора должна была быть ниже на 7 ноября. Общественность ожида-
что в Crusoe были встроены: контрол- конкурентов от Intel и AMD. Однако ла, что цены на акции Transmeta сра-
лер оперативной памяти типов SDRAM Transmeta предпочитала обходиться зу же поднимутся до заоблачных вы-
и DDR SDRAM, а также шинный интер- без демонстрации реальной скоро- сот, однако…
фейс PCI для взаимодействия с мик- сти работы своего детища, что мно- За неделю до этого корпорация
росхемой южного моста чипсета и ви- гих вводило в недоумение. «Каждый IBM, производившая Crusoe на своих
деоадаптером. По замыслу разработ- человек, которому удаётся погово- производственных мощностях и обе-
чиков интеграция этих комонентов рить с Дэйвом (Дитцелом), спраши- щавшая со временем выпустить мо-
в процессор должна была снизить ко- вает его о клиентах Transmeta. Но ни- дель ноутбука ThinkPad 240 на этом
нечную стоимость готовой системы, какого ответа он не даёт, – говорил процессоре, публично заявила о своём
уменьшить её размеры, а также энер- аналитик микропроцессорного рын- решении отказаться от его использо-
гопотребление. ка Линли Гвиннеп (Linley Gwennap). – вания. Ещё одна компания, Compaq,
На бумаге новоиспечённый про- К тому же компания до сих пор пуб- объявила о своих планах не исполь-
цессор выглядел довольно непло- лично не продемонстрировала про- зовать Crusoe, поскольку она «не на-
хо и оправдывал вложенные в него изводительность своего процессора. шла в нём больших преимуществ по
многомиллионные инвестиции (если Если бы Crusoe был настолько хорош, сравнению с продукцией конкурентов».
быть точным, за пять лет на создание насколько о нём говорят, Transmeta За день до выхода на торги за одну ак-
Crusoe было потрачено 119 млн. дол- уже бы давно разослала его обозре- цию компании брокеры собирались от-
ларов). Созданный компанией пакет вателям по всему миру. В большинс- давать не больше 18 долларов.
для тестирования скорости работы тве случаев, когда какая-нибудь ком- Однако 7 ноября её стоимость со-
Crusoe под названием Mobile Platform пания не отвечает на эти вопросы, она ставила 21 доллар. Почему так полу-
Benchmark, однако, демонстрировал что-то скрывает». чилось? Дело в том, что как раз в это
не голую производительность, а лишь Молчание было прервано в июле время в Интернете стали активно рас-
её соотношение к энергопотребле- 2000 года, когда Transmeta объявила пространяться слухи о заключении до-
нию. Конечно же, собственный чип о подписании контракта с Gateway на говора между Microsoft и Transmeta,
Transmeta был в этом тесте на высоте: поставку процессоров для проводных согласно которому последняя будет
при частоте 533 МГц ТМ5400 шёл прак- и беспроводных веб-планшетов (кста- разрабатывать аппаратную платфор-
тически вровень с 500 МГц Pentium III, ти, тех самых, которые она демонстри- му для новой операционной систе-
оставляя его далеко позади по коли- ровала в день презентации Crusoe), мы (которая позже получит название
честву потребляемой энергии и теп- рекламой и продажей которых бу- Windows for TabletPC), и многие бро-
ловыделению. дет заниматься America Online (AOL). керы воодушевились этой новостью.
В общем, всё было бы хорошо. Это была первая хорошая новость К счастью для компании, 13 млн. вы-
Но создание нового продукта – лишь для Дитцела и компании, поскольку пущенных акций позволили ей полу-
половина дела. Не меньше, а зачас- клиенты им нужны были больше возду- чить дополнительные 273 млн. долла-
тую гораздо больше труда уходит ха: прибыль компании в течение перво- ров для продолжения своего существо-
90
bugtraq
92
книжная полка
94
подписка на 2007 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
Подписной индекс: годовой – 20780, полугодовой – 81655 Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
Подписной индекс: 87836 Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru Грузия – по списку номенклатуры «АРЗИ» через АО
Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»: Подписка для Украины:
Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
№9 сентябрь 2006 95
СИСТЕМНЫЙ АДМИНИСТРАТОР
№9(46), Сентябрь, 2006 год
УЧРЕДИТЕЛИ
ЧИТАЙТЕ
Владимир Положевец
Александр Михалев В СЛЕДУЮЩЕМ
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец
НОМЕРЕ:
РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец Технологии терминального лю»: чудо-процессор Crusoe не оправ-
Ответственный секретарь доступа на службе систем дал возложенных надежд, прибыль
Наталья Хвостова «1С: Предприятие» от его продаж была ничтожно мала,
sekretar@samag.ru В последние годы технологии терми- да к тому же конкуренты не дрема-
Технический редактор нального доступа к Windows-прило- ли. Transmeta ничего не оставалось,
Владимир Лукин жениям пользуются неимоверной по- как бороться за своё выживание, пред-
Редактор пулярностью. В нашей стране основ- лагая свою продукцию по более низкой
Алексей Коршунов
ную нишу занимает применение терми- цене, в то же время разрабатывая но-
Внештатные редакторы
нального доступа для компенсации не- вый чип, который должен был вывес-
Алексей Барабанов
Сергей Супрунов достатков скорости обработки инфор- ти её из кризиса.
Валентин Синицын мации наиболее популярной системой
учета – 1С: Предприятие. Именно уз- Различные способы сбора
РЕКЛАМНАЯ СЛУЖБА кие места реализации обработки дан- сетевой статистики
тел./факс: (495) 628-8253 ных в этой системе (а именно – нера- Наличие сведений о сетевой статисти-
Евгения Тарабрина циональные процедуры чтения-записи ке может оказаться весьма полезным,
reсlama@samag.ru записей из БД по сети) привели к необ- поскольку позволяет оценить состоя-
ходимости решения проблемы ускоре- ние сети и запланировать ее модифи-
Верстка и оформление ния системы в целом. кацию если необходимо, а также вов-
maker_up@samag.ru
ремя заметить возникновение проблем.
Дизайн обложки
Николай Петрочук
Python – в школу! Предлагаем вам несколько способов
Современная жизнь без компьютеров сбора сетевой статистики и примене-
По вопросам распространения уже немыслима, и чтобы чувствовать ния полученных данных на практике.
обращайтесь по телефону: себя в этом мире достаточно уверенно,
(495) 628-8253 (доб. 120) понимание того, как эти «ящики» рабо- Многоядерные процессоры
тают, просто необходимо. И заклады- и проблемы,
107045, г. Москва, вать это понимание нужно на самых ими порождаемые
Ананьевский переулок, дом 4/2, стр. 1 ранних этапах образования, начиная Многоядерные и Hyper-Threading-про-
тел./факс: (495) 628-8253 со средней школы. цессоры не только увеличивают произ-
Сайт журнала: www.samag.ru водительность, но и порождают много-
ИЗДАТЕЛЬ
История компании численные проблемы – некоторые при-
ЗАО «Издательский дом
Transmeta. Часть 2 ложения (драйверы) начинают работать
«Учительская газета» Ах, как хотелось Transmeta «прыгнуть нестабильно, выбрасывая критические
выше собственной головы»… К сожа- ошибки или обрушивая систему в голу-
Отпечатано типографией лению, суровая реальность быстро бой экран смерти. В чем причина такого
ГП «Московская Типография №13» «спустила» компанию с «небес на зем- поведения и как его избежать?
Тираж 11000 экз.
Уважаемые читатели!
Журнал зарегистрирован
в Министерстве РФ по делам печати, Обратите внимание, что теперь оформить подписку вы можете
телерадиовещания и средств массо- не только на полугодие, но и сразу на весь год.
вых коммуникаций (свидетельство
Годовой индекс по каталогу «Роспечать» – 20780.
ПИ № 77-12542 от 24 апреля 2002 г.).
Интер-почта – заказ журналов по тел.(495) 500-00-60.
За содержание статьи ответственность Подписка on-line – SetBook.ru.
несет автор. За содержание рекламно-
го объявления ответственность несет Приобрести новые и старые номера журнала
рекламодатель. Все права на опубли- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
кованные материалы защищены.
96