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

№9(46) сентябрь 2006

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


www.samag.ru

№9(46) сентябрь 2006


Семь веб-интерфейсов
к электронной почте
Выберите лучший!
Zlock: контролируйте доступ
к USB-устройствам
Обзор систем
резервного копирования
Как обнаружить
malware-программы?
Ajax: новый канал
общения клиента и сервера
Развиваем модуль DBI
В поисках профессиональной
этики сисадминов
Кевин Митник
защищает компании
от былых коллег
Так видит журнал читатель, который забыл оформить подписку:
№5(30) май 2005
подписной индекс 81655

СЬ
www.samag.ru

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

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

WPA-Enterprise, 802.1x EAP-TLS


НУ

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

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

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

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

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

С
полями пользователей в AD

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

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


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

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

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО НЕО
АВ СЛ
Л

Л
ХА

ПО
УЕ

ЗА
Так видит журнал читатель, оформивший подписку:
№5(30) май 2005
подписной индекс 81655
www.samag.ru

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


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

ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (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

Открыта подписка на 2007 год. Спешите оформить!


№9, сентябрь 2006 1
26.09–29.09 2006 г. в Москве на ВВЦ в павильоне № 69
состоится 17-я ежегодная выставка информационных
Softool 2006
технологий SOFTOOL. Выставка включена в планы
официальных мероприятий Федерального агентства
по информационным технологиям, Правительства
Москвы, Российской Академии наук. Поддержку
выставке оказывает Министерство экономического
развития и торговли РФ. Организатор выставки –
компания ИТ-ЭКСПО.

В Организационный комитет выставки входят


руководители Федеральных органов власти,
действительные члены и члены-корреспонденты
Российской Академии наук, представители
научно-технической общественности. Председателем
Оргкомитета выставки является видный ученый,
академик РАН, член Президиума РАН Ю.В. Гуляев.

Площадь выставки составляет 8,5 тысяч кв. м., количество


участников более 300. Количество посетителей более
48 тысяч.

SofTool отражает состояние российского рынка


программных продуктов, предоставляет уникальную
возможность посетителям ознакомиться в полном
объеме со всеми аспектами отрасли информационных
технологий: подготовкой специалистов; разработкой
новых методов и решений; предложениями рынка
в области консалтинга и управления; опытом внедрения
в производство.

Ежегодно около трехсот ИТ-компаний представляют


на выставке SofTool новейшие разработки практически
для всех отраслей экономики, начиная с бухгалтерских
программ, заканчивая сложнейшими компьютерными
системами.

В рамках SofTool’а проводится выставка САПР’экспо.


Это расширенная экспозиция компаний, занимающих
лидирующие позиции на мировом рынке систем
автоматизации проектирования. С прошлого года
спонсором САПР’экспо является компания AUTODESK.

3-й год подряд на выставке выделена экспозиция


LinuxLand, на которой представлены ведущие мировые
и российские Linux-компании. В рамках LinuxLand
внимание посетителей привлекут международная
конференция и ряд мастер-классов по всему спектру
Linux-решений. Организатор LinuxLand – компания
LinuxCenter.

В этом году впервые организован объединенный


стенд Российской Академии наук, который представит
достижения российских ученых из специализированных
НИИ РАН.

Итогами выставки ежегодно становятся многочисленные


контракты, широкий обмен опытом,
а также новые плодотворные идеи, которые реально
содействуют подъему российской экономики
и дальнейшему развитию отечественной компьютерной
индустрии.
LinuxLand 2006 Компании ИТ-Экспо и Линуксцентр приглашают
вас принять участие в выставке информационных
Компании ИТ-Экспо и Линуксцентр приглашают Вас посетить выставку- технологий SofTool’2006 (26-29 сентября 2006 года),
конференцию LinuxLand, которая пройдет в рамках SofTool-2006. На где планируется собрать ведущие российские
LinuxLand представлен весь спектр доступных в России Linux-решений. В
течение всей выставки будут проходить мастер-классы с демонстрацией Linux-компании в одном секторе выставочной площади
практической работы Linux-технологий. 26 сентября приглашаем Вас на LinuxLand.
конференцию “ИТО-2006: Технологии Linux и Open Source” .
LinuxLand – единственное мероприятие,
Ждем Вас на LinuxLand !
где Linux-компании получат возможность представить
свои продукты конечным пользователям
и корпоративным клиентам одновременно.
Организатор

LinuxLand будет местом, в котором соберутся


поставщики Linux и различных решений для этой ОС:
Mandriva, IBM, Novell, R-Style, HP, Oracle, ASPLinux,
Linux-Online (разработчик Linux XP), НПО "Сеть"
(разработчик MOPSLinux), Bitrix, ПРОМТ, Etersoft
Платиновый спонсор

и Linuxcenter.ru, журнал Linux Format, образовательный


центр Lynx Education Center и другие. Помимо
выставочных стендов, на экспозиции традиционно
будет расположена демо-зона, где посетители LinuxLand
смогут вживую познакомиться с предлагаемыми
продуктами.
Золотой спонсор

В этом году в рамках LinuxLand состоится


международная конференция "ИТО-2006: Технологии
Linux и Open Source", первый день будет посвящен
обсуждению программ ЮНЕСКО внедрения
Open Source в образование, докладам и презентациям
Серебряный спонсор

лидеров Linux-индустрии и Linux-образования.


В остальные дни пройдут мастер-классы и тренинги
по технологиям Linux и Open Source.

Участники конференции получают кейсы


со сборниками трудов, учебными пособиями
и дистрибутивами Linux и Open Source.
26 сентября - 29 сентября 2006 года Москва, ВВЦ, павильон №69

Для получения материалов необходима регистрация.

Программа конференции

26.09. Технологии Linux и Open Source – лекции, доклады


Linux и Open Source в образовании – доклады
27.09. Технологии Linux – презентации, мастер-классы
Технологии Open Source – презентации, тренинги
28.09. Тренинги технологий Linux – мастер-классы
29.09 Вручение Сертификатов ЮНЕСКО / WDU
28.09. Тренинги технологий Linux - мастер-классы
27.09. Технологии Linux - презентации, мастер-классы
26.09. мастер-классы IBM
Стенд D16, зал мастер-классов LinuxLand
26.09. Технологии Linux и Open Source в образовании
Большой конференц зал
ИТО-2006: Технологии Linux и Open Source

Тренинги Open Source – лекции, тренинги


29.09 Вручение Сертификатов ЮНЕСКО / WDU

Зарегистрироваться для участия в конференции


в качестве слушателя можно по адресу:
PCnews.ru, Lenta.ru, Linuxcenter.ru, Linux.ru, LinuxRSP.ru, OpenNet.ru
журнал “Системный администратор”, IXBT.ru, 3DNews.ru,
издательство “Открытые системы”, издательство “СК Пресс”,

http://www.linuxland.ru/conf.phtml
Информационная поддержка

Регистрация докладчиков производится на сайте МПГУ


по адресу: http://linux.mpgu.ru/registration.shtml

Приглашаем вас принять участие в выставке


LinuxLand / SofTool’2006

Контакты:
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,
множество других улучшений, исправлений и дополнений.

OpenOffice.org портирован на OpenBSD


Стало известно о запуске популярного свободного офис-
ного пакета OpenOffice.org в среде открытой операцион-
ной системы OpenBSD. В первой версии порта пока дейс-
твуют ограничения (так, например, нет Java, из-за чего от-
сутствует поддержка некоторого импорта/экспорта и дру-
гих функций). OOo в OpenBSD работает на архитектурах
386 и amd64. На данный момент пакет распространяется
в несобранном виде (сообщается, что его компиляция за-
нимает порядка 6 часов).

Lenovo начинает поставку


Linux-ноутбуков
Компании Novell и Lenovo заключили договор, по которому от-
ныне будет предустанавливаться дистрибутив первой (SUSE
Linux) на ноутбуки последней (ThinkPad T60p). Об этом ста-
ло известно на прошедшей конференции LinuxWorld в Сан-
Франциско. Из множества редакций SUSE Linux для ноут-
буков Lenovo была выбрана корпоративная десктоп-версия
SLED 10. По словам представителей Lenovo, эти компьюте-
ры предназначены для инженеров и других продвинутых
пользователей, заинтересованных в получении мобильной

№9, сентябрь 2006 5


репортаж

Берегись, «мышь» полетела!

На Первом Всероссийском слете сисадмины вышли из Интернета, чтобы посидеть у костра.

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

6
репортаж
– Хорошая идея! По какому по-
воду собираться, не важно. Просто Подведены итоги конкурсов! ния Дня Сисадмина-2006 на сайте http://
на природу выехать, лапшички сва- Накануне Дня Сисадмина-2006 на сисад- sysadmin.mail.ru проходил конкурс сисад-
рить на костре. минском сайте был проведен конкурс «Сис- минских репортажей. Сисадмины из раз-
админские рекорды». Каждый сисадмин ных регионов рассказывали о том, как они
Глюк №2: мог предоставить на суд пользователей встретили праздник. Победителями стали
Девушка-сисадмин сайта свой рекорд – личный или профес- три системных администратора, которые
На другом конце поляны расположи- синальный. Победители определялись го- по-разному, но очень увлеченно описали
лась Вологда. Подхожу. Теперь уже лосованием. свой отдых на Первом Всероссийском слё-
не я, а меня спрашивают: Главные призы получили Дмитрий Лу- те Сисадминов: Голыженков Алексей, Бе-
– А вы системный администратор? говой – за рекорд о самом большом числе лякова Светлана и Бринько Сергей.
С глубоким изумлением отвечаю, способов передачи данных, Наталья Бак- Все победители получают в качестве
что нет. Ребята огорчены: ланова с зажигательным списком ежеднев- подарка уникальные сисадминские фут-
– А мы уже думали, что встретили! ных рекордов и побед в их организации болки, пакет лицензионного ПО от мага-
По легенде, бывают девушки – систем- и Сергей Заворыкин, описавший рекорд зина Allsoft.ru, обучение в Учебном Цент-
ные администраторы. по самым частым пересадкам. ре Softline и подписку на журнал «Систем-
– И здесь есть? В течение 10 дней после празднова- ный администратор».
– Говорят, вчера была, танцевала
хорошо. ку, до нашей команды заглушки не сни- кера бутылки, висящие на веревочке.
– А системные администраторы хо- мать! Они находятся здесь для безо- Увлеклась зрелищем.
рошо танцуют? пасности, чтобы случайно не сделать – Вы его жена? – раздалось сбоку.
– А чего нет! выстрел. Самое главное – не снимать Ну чем не театр абсурда? Я не жена
– А о чем здесь разговоры идут? – маску во время игры. Если увидите ко- сисадмина, я не сисадминка! А кто я?..
интересуюсь. го-то без маски, по этим людям стре- Не помню.
– О работе… и обо всем осталь- лять не надо. Если гражданский появ-
ном. ляется на поле, опять-таки не стреля- Глюк №3:
– Зачем о работе? ем. У каждого свои дела могут быть Бурные аплодисменты
– Сисадмины – такие люди, что где в этом лесу... Из задумчивости меня вывел звонкий
угодно будут о работе говорить. Организаторы игры помогли на- голос, усиленный динамиками, напом-
Потом я все-таки увидела девуш- деть маски бойцам и на прощание нивший, что это все же турслет адми-
ку сисадмина из Учкудука и поняла, спросили: нистраторов, а не второй сон Веры
что это не миф, а правда. Девушка – Здоровые все? Никому плохо Павловны:
была обаятельна и весела – она пони- не станет? – Все, кто приехал, подойдите
мала, какая роль ей досталась. Гово- Нервно отсмеявшись, мужчины уш- в штаб. Штаб – это синяя палатка. Там
рят, на поляне можно было найти да- ли в лес играть в войнушку. бегает и ждет вас Полкошки, у которой
же несколько системных администра- А я осталась наблюдать, как сисад- вы зарегистрируетесь. Там же вы мо-
торов женского пола – этакий слет си- мин из Вологды расстреливает из мар- жете приобрести футболочки и банда-
садминок.
Однако развлечения на слете были
явно рассчитаны на мужчин. Вот пейнт-
бол, например, – типично мужское за-
нятие. Все серьезно – оружие, маски,
инструктаж…
– Сейчас будем играть в пейнтбол.
Две команды по пять человек, одна
с одной, другая с другой стороны. Цель
игры – захватить флаг и принести его
на базу противника. Как только флаг
принесли, игра закончена. Флаг нахо-
дится в центре. Задача игроков – от-
стоять свой флаг.
Комментарий участника игры:
Убей его, пока он не убил тебя.
– Бойцы, смотрите! Будете играть
такими маркерами, – инструктор пока-
зал оружие. – Сюда насыпаются шары,
здесь находится воздух, отсюда выле-
тает шарик. На маркере находится за-
глушка. До выхода на игровую площад- География слета

№9, сентябрь 2006 7


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

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

Семь веб-интерфейсов
к электронной почте
Выберите лучший!

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

Требования мобильности и доступности электронной почты в любых условиях


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

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

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


Мы рассмотрели основные характеристи- и в этих условиях. путём усреднения субъективных мнений
ки наиболее популярных из существующих автора и «независимых экспертов», завер-
веб-интерфейсов к почтовым системам, Претенденты на звание лучшего бованных из числа сотрудников редакции
чтобы выбрать наилучший из них. В обзоре принимали участие только сво- журнала. Мнение автора имело определяю-
бодные системы, доступные в коллекции щий вес. Для каждого пакета внимание об-
На чем проводилось тестирование портов: ращалось на следующие особенности:
Для тестирования использовалась машина,  Ilohamail  RoundCube  Возможность работы по протоколам
работающая под управлением операцион-  UebiMiau  ISMail POP3 и IMAP.
ной системы FreeBSD 6.1. Версии остально-  OpenWebMail  NoCC  Возможность и удобство работы с вло-
го программного обеспечения, которое ис-  SquirrelMail жениями.
пользовалось для тестирования:  Возможность поиска и сортировки со-
 Apache 1.3.36 Установка выполнялась исключитель- общений.
 Sendmail 8.13.6 но из портов в конфигурации, заданной  Качество русификации и корректность
 Popa3d 1.0.2_1 по умолчанию. Замечу, что многие из рас- работы с различными кодировками.
 Dovecot 1.0 rc2 смотренных пакетов доступны и для дру-  Наличие «сервисных» функций (таких
 PHP 4.4.2 гих систем, в частности, для Linux. Все, как адресная книга и т. д.).
 Perl 5.8.8 за исключением OpenWebMail, разработа-  Наличие дополнительных возможнос-
 PostgreSQL 8.1.3 ны на «чистом» PHP, так что проблем с пе- тей (работа по защищённому протоко-
реносимостью быть не должно. Представ- лу, использование СУБД и т. д.).
Указанные версии не следует рассмат- ленные здесь веб-интерфейсы рассматри-  Наличие и качество документации.
ривать как какие-то зависимости – боль- вались как с точки зрения администрато-  Требования к клиенту (поддержка
шинство тестируемых пакетов хорошо ра- ра (простота и понятность установки и пер- JavaScript и т. п.).
ботают с любыми SMTP/POP3/IMAP-сер- воначальной настройки, вопросы безопас-
верами, в том числе и удалёнными. Про- ности), так и с точки зрения пользователя Также обязательно проверялась «ис-
верка на Linux-машине с установленным (функциональные возможности, удобство, тория безопас нос ти» рас с матривае -
Apache 2.0.55 и PHP 5.1.2 (для пакетов, внешний вид). Оценка качественных ха- мых интерфейсов по базе данных сайта
разработанных на этом языке) показала рактеристик, таких как удобство и привле- www.securitylab.ru.

Слово – претендентам ментированы достаточно хорошо и работа пакета предель-


Приступим к «смотру» основных претендентов. Обратите но прозрачна, сложно представить, что какие-то проблемы
внимание на пункт «Демо-версия» – по этому адресу вы могут возникнуть.
сможете попробовать тот или иной пакет в действии. Ну и, Настройка выполняется путём редактирования фай-
конечно же, представлены снимки экранов. лов conf/login.inc и conf/conf.inc, а также других inc-фай-
Итак, знакомьтесь! лов (если потребуется что-то нестандартное). Как мини-
мум, нужно указать параметры SMTP-сервера, которые
Ilohamail будут использоваться для отправки сообщений. Также на-
 Тестируемая версия: ilohamail-0.8.13_1. стоятельно рекомендуется в параметре $default_host жёс-
 Порт: /usr/ports/mail/ilohamail. тко ограничить список POP3- и IMAP-серверов, с которы-
 Язык разработки: PHP. ми пользователям будет позволено работать.
 Официальный сайт: http://ilohamail.org. Взаимодействие с почтовыми системами осуществляет-
 Демо-версия: http://ilohamail.org/main.php?page=demo. ся по протоколам SMTP и POP3/IMAP (используются функ-
ции собственной разработки), то есть пакет совершенно
Пакет уже рассматривался на страницах журнала автономен и никак не зависит от версий и режимов рабо-
(№1 за 2006 г.). Установка не вызывает никаких сложностей – ты ваших серверов входящей и исходящей почты. Ilohamail
все необходимые для работы файлы помещаются по умол- вполне может быть запущен на отдельном хосте, хотя в це-
чанию в каталог /usr/local/www/ilohamail. Для начала рабо- лях минимизации сетевого трафика рекомендуется всё же
ты этот каталог нужно либо перенести в дерево вашего веб- устанавливать его на той же машине, где работает ваш
сайта, при необходимости переименовав его, либо создать POP3/IMAP-сервер. (Естественно, эта рекомендация боль-
на него ссылку в конфигурации Apache, например, так: ше подходит для небольших серверов с умеренной загруз-
кой. Для систем, работающих на пределе своих возможнос-
Alias /mail/ /usr/local/www/ilohamail/ тей, размещение здесь же сервера Apache может оказаться
не самой лучшей идеей.) Имеется поддержка SSL.
Документация, представленная на сайте, не слишком По умолчанию пакет позволяет пользователю самостоя-
подробная (просто перечислены имеющиеся функции), тельно указывать сервер входящих сообщений и протокол,
зато есть почтовый список рассылки и форум, где в слу- по которому будет выполняться работа. Это хорошая воз-
чае проблем можно будет получить ответ на свой вопрос. можность, если вы создаёте универсальный сервер, поз-
Правда, учитывая, что конфигурационные файлы проком- воляющий вашим клиентам работать со своими почтовы-

№9, сентябрь 2006 11


администрирование
сутствии cookies пакет в состоянии ис-
пользовать другие способы поддержа-
ния сессии).
Из уязвимостей упоминаются лишь
возможность получения доступа к кон-
фигурации и пользовательским дан-
ным (о чём мы упоминали) и недоста-
точная обработка входных данных, поз-
воляющая выполнить XSS-нападение.
Обе уязвимости датированы 18.04.2005
года со степенью угрозы «низкая».
В общем и целом пакет произвёл
очень хорошее впечатление своей про-
стотой, понятностью и нетребователь-
Рисунок 1. IlohaMail настолько просто выполнен, что будет работать даже в links ностью. Думаю, он будет неплохим вы-
ми ящиками, где бы те ни были зарегистрированы. То есть бором для систем, где «ехать» важнее, чем «шашечки».
можно сказать, что Ilohamail – это веб-аналог обычного поч-
тового клиента. UebiMiau
Однако такая «вольность» таит в себе определённые  Тестируемая версия: uebimiau-2.7.10.
проблемы безопасности, и потому я рекомендую всё же за-  Порт: /usr/ports/mail/uebimiau.
ранее указать список допустимых серверов.  Язык разработки: PHP.
Вся пользовательская информация (индивидуальные  Официальный сайт: http://www.uebimiau.org.
настройки, отправленные сообщения, список контактов)  Демо-версия: http://uebimiau.org/demo.php.
размещается по умолчанию в каталоге data. Поскольку
некоторая небрежность с расширениями файлов и отсутс- Пакет UebiMiau во многом напоминает Ilohamail. По умол-
твием индексов может привести к неавторизованному до- чанию также создаётся каталог в /usr/local/www, который
ступу к конфиденциальным данным, настоятельно реко- нужно либо перенести в дерево веб-сайта, либо сконфигу-
мендуется этот каталог перенести за пределы дерева веб- рировать как псевдоним. Также желательно вынести ката-
сайта, благо такая возможность предусмотрена в файле лог database за пределы каталога, доступного веб-серверу.
конфигурации. Настройки выполняются правкой файла inc/config.php.
Ilohamail переведён на десятки языков, среди которых Документация на сайте находится в стадии разработ-
есть и русский (поддержка языков реализована через под- ки, так что надеяться приходится только на комментарии
ключение соответствующих inc-файлов). Русификация вы- в конфигурационных файлах. Впрочем, они предельно по-
полнена на очень хорошем уровне, не считая нескольких нятны, так что сложностей с пониманием работы пакета
опечаток в интерфейсе. Сообщения в различной кодиров- возникнуть не должно.
ке Ilohamail отображает корректно, разве что «споткнулся» Поддерживается работа как по IMAP, так и по POP3 (мо-
об UTF-8 в имени отправителя. жет использоваться прямое обращение к sendmail, php-фун-
Достаточно аскетичный и в то же время удобный интер- кция mail() либо работа по протоколу SMTP с любым удалён-
фейс позволяет легко ориентироваться в возможностях па- ным сервером), но в настройках можно задать только один
кета. Помимо естественной возможности отправлять поч- из этих протоколов. SSL не поддерживается. Права само-
ту и просматривать входящую (если в php.ini не запрещена стоятельно указывать сервер пользователи также не полу-
загрузка файлов параметром «file_uploads = Off», то и с от- чают – подключаться можно только к серверам, явно ука-
правкой вложений никаких сложностей не возникнет), к ва- занным в конфигурации (массив $mail_servers[] в файле
шим услугам календарь (правда, без возможности делать inc/config.php).
какие-то заметки), список контактов, за-
кладки (здесь вы можете хранить инте-
ресные вам интернет-ссылки).
Самостоятельно пользователь мо-
жет изменить кодировку, язык, часовой
пояс, правила сортировки, некоторые
цвета интерфейса. Поддержка браузе-
ром JavaScript не требуется, хотя его ис-
пользование позволит получить некото-
рые дополнительные удобства.
Не является обязательной также
и поддержка cookies-файлов (автори-
зация, как и в большинстве рассмотрен-
ных пакетов, обеспечивается механиз-
мом сессий языка PHP, так что при от- Рисунок 2. Всё бы было хорошо, если бы кодировка не сломалась...

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), «завязан» на учётные записи и требует, в частности, что-

№9, сентябрь 2006 13


администрирование
мирующие о наступлении того или ино-
го события, например, получении ново-
го сообщения.
Использование JavaScript не обяза-
тельно, но вот для поддержания сеанса
работы поддержка cookies обязательно
должна быть включена.
Нужно заметить, что, по сравне-
нию с «легковесами», разработанными
на PHP, OpenWebMail заметно приторма-
живает, задумываясь на секунду-другую,
прежде чем обновить экран. В принци-
пе ожидать иного от «чистого» CGI-ин-
терфейса и не приходится, а для работы
в mod_perl пакет не предназначен (в пер-
вую очередь из-за «бинарных» вставок).
Отдавая должное огромной работе, про-
деланной разработчиками, следует ска-
зать, что пакет OpenWebMail – очень
Рисунок 5. В SquirrelMail можно найти и довольно гармоничные темы
мощное и эффективное решение, осо-
бы каждый пользователь имел реально существующий до- бенно если веб-интерфейс является для вас и ваших кли-
машний каталог), то для ряда операций используются дво- ентов основным способом работы с электронной почтой.
ичные файлы с установленным suid-битом, то есть рабо- Но, с другой стороны, невысокая скорость работы и потен-
та выполняется фактически с правами пользователя root. циальные проблемы с безопасностью делают его не слиш-
С одной стороны, размещение данных в домашних катало- ком пригодным для работы в «большом Интернете».
гах гарантирует, что они не будут доступны другим пользо-
вателям, а также позволяет реализовать ряд интересных SquirrelMail
сервисных функций, таких как «веб-диск» (об этом – чуть  Тестируемая версия: squirrelmail-1.4.7.
позже). Если учесть, что за OpenWebMail тянется довольно  Порт: /usr/ports/mail/squirrelmail.
длинный шлейф уязвимостей (я насчитал восемь, но, к чес-  Язык разработки: PHP.
ти разработчиков, замечу, что они, по большей части, оха-  Официальный сайт: http://www.squirrelmail.org.
рактеризованы как имеющие низкую степень опасности),  Демо-версия: не обнаружена.
то всё это вместе отнюдь не добавляет спокойствия и уве-
ренности в завтрашнем дне вашего сервера. Как и в случае большинства рассмотренных здесь па-
Пользовательский интерфейс прямо с экрана авториза- кетов, всё, что требуется для работы, при инсталляции по-
ции поразил стильностью и качеством проработки деталей. мещается в /usr/local/www/squirrelmail. Здесь же, в катало-
Русский язык был выставлен автоматически, без необхо- ге config, можно найти файл конфигурации, где нужно бу-
димости что-либо править (при желании, в настройках вы дет указать параметры SMTP- и IMAP-серверов.
сможете выбрать другой из множества доступных). В насто- В поставке имеется и Perl-скрипт под именем conf.pl,
ящее время переведено примерно 90% надписей (в част- который поможет вам выполнить настройку интерактивно
ности, эта радость пока не постигла адресную книгу). Авто-
матическое распознавание кодировки сообщения выполня-
ется на уровне – все тестовые сообщения были отображе-
ны правильно, включая отправителя, тему и само сообще-
ние. Правда, OpenWebMail споткнулся (как и все остальные,
впрочем) на кириллическом имени вложения (отправлялся
созданный в Windows файл с именем «тест.txt»).
Пиктограммы панели инструментов достаточно удобны
в работе, не загромождая экран и позволяя интуитивно ори-
ентироваться в доступных функциях. Хотя их маленький раз-
мер для утомлённого годами терминальной работы админс-
кого глаза показался поначалу не слишком комфортным.
Помимо функций работы с электронной почтой к вашим
услугам – адресная книга, календарь, где можно отмечать
важные события, фильтр входящих сообщений, расширен-
ная форма поиска, веб-диск, с помощью которого вы сможе-
те хранить на сервере свои файлы, без необходимости при-
бегать к услугам FTP-сервера и даже интерфейс ssh-тер-
минала. Также реализованы всплывающие окна, инфор- Рисунок 6. Интерактивная конфигурация – к вашим услугам

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.

№9, сентябрь 2006 15


администрирование
ки «Отправить» в форме создания но-
вого сообщения, может сбить с толку –
не сразу догадываешься, что для отправ-
ки сообщения нужно щёлкнуть на пиктог-
рамму, больше похожую на изображе-
ние принтера. Так же не совсем привыч-
но, что, например, для просмотра какого-
то сообщения открывать его нужно двой-
ным, а не одинарным щелчком.
Поддержка различных кодировок
выполнена на высоком уровне («зюки»
вместо имени вложения мы уже не рас-
сматриваем – эту проверку не прошёл
ни один из кандидатов). Из дополнитель-
ных функций – лишь список контактов.
Информацию об известных уязви-
мостях обнаружить не удалось, так что
если вы фанат самых продвинутых тех-
Рисунок 9. Эх, если бы не загромождённость поля «От» да лишнее поле «Кому»... нологий или хотите доставить своим
Если что-то будет работать не так, то первое место, ку- пользователям эстетическое удовольствие от прикоснове-
да следует обратиться за разъяснениями, – лог-файлы ния к столь тонко проработанному дизайну, то RoundCube
в roundcube/logs. Первая ошибка, с которой мне пришлось будет для вас хорошим выбором – задачу «кубатуры кру-
столкнуться, – это сообщение, что отсутствует функция га» разработчики решили превосходно.
session_start(). Для её устранения пришлось в php.ini уста-
новить следующий параметр: ISMail
 Тестируемая версия: ismail-2.0.
; Initialize session on request startup  Порт: /usr/ports/www/ismail.
session.auto_start = 1
 Язык разработки: PHP.
Кстати сказать, ещё одна переменная – register_globals,  Официальный сайт: http://www.insidesystems.net/
которая раньше также создавала много проблем, для рас- projects/project.php?projectid=4.
сматриваемых пакетов не критична, так что можно вполне  Демо-версия: не обнаружена.
оставить значение по умолчанию (обычно по соображени-
ям безопасности это «Off»). Для хранения пользовательской информации может ис-
Для нормальной работы обязательно требуется доступ- пользоваться domxml (по умолчанию), MySQL или PostgreSQL.
ный IMAP-сервер – работа по POP3, похоже, не поддержива- Примеры настройки на работу с той или иной базой данных
ется. Для работы с IMAP-серверами может использоваться можно найти в /usr/local/share/examples/ismail. Кстати, рас-
либо функция mail(), либо код, разработанный для Ilohamail. ширение PHP – domxml как зависимость почему-то не уста-
Поддержка безопасных SSL-соединений реализована. новилось, так что пришлось доустанавливать его вручную
В общем, установка и настройка особых сложностей из порта php4-extensions.
не вызовут, хотя некоторые тонкие моменты можно было бы и Документация на сайте довольно удобна, для сообще-
более подробно осветить в документации, представленной на ний об ошибках (Bug Reports) предусмотрено использова-
сайте. К слову, документация оформлена в виде wiki, что все- ние электронной почты.
ляет надежду на её быстрое наполнение.
Пользователю для полноценной работы
потребуется браузер, в полном объёме
поддерживающий CSS2, XHTML, объек-
тную модель JavaScript и XMLHttpRequest.
Впрочем, это умеют практически все сов-
ременные браузеры. Также обязательной
является и поддержка cookies.
Среди переводов есть и русский язык.
Включить его можно в настройках. Там
же доступны вкладки для работы с пап-
ками и своим профилем. Интерфейс
очень интересный. Особенно поразили
полупрозрачные диагностические со-
общения, выводимые поверх основной
страницы. Некоторая непривычность ин-
терфейса, в частности, отсутствие кноп- Рисунок 10. А это уже другая тема. Тоже, впрочем, неплохо

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
и править локали. Ну а я с грустью констатирую, что мне
«взять Измаил» сходу не удалось, а к длительной осаде
Пришлось в указанном файле заменить строчку: я сейчас не предрасположен.

$addedentry = $AddressBook->AddEntry ↵ NoCC


($headerinfo->(ISDecode(fromaddress));
 Тестируемая версия: nocc-1.2.
на:  Порт: /usr/ports/mail/nocc.
 Язык разработки: PHP.
$addedentry = $AddressBook->AddEntry ↵  Официальный сайт: http://nocc.sourceforge.net.
(ISDecode($headerinfo->fromaddress);
 Демо-версия: не обнаружена.

№9, сентябрь 2006 17


администрирование
Сравниваем веб-интерфейсы к электронной почте
Веб-интерфейс Ilohamail UebiMiau OpenWebMail SquirrelMail RoundCube ISMail NoCC
Версия 0.8.13_1 2.7.10 2.52_1 1.4.7 0.1 2.0 1.2
Поддержка POP3 + + n/a**** - - + +
Поддержка IMAP + + n/a**** + + + +
Метод отправки* SMTP SMTP собственная SMTP SMTP MSA SMTP
Поддержка SSL + - n/a - + - +
Автораспознавание кодировки +/- ***** - + +/- ***** +/- ***** - +
Работа с вложениями + + + + + + +
Русский интерфейс 4 4 4,5 5 4,5 1 4
Темы интерфейса + +
Обязательная поддержка JavaScript нет да нет нет да да нет
Функция поиска сообщений - + + + - - -
Функция сортировки + + + + + + +
Внешние фильтры - - + - - - -
Адресная книга + + + + + + -
Календарь + - + - - - -
Прочие сервисные функции веб-диск, ssh-терминал плагины
Количество уязвимостей 2 3 8 22 - - 2
Простота установки и настройки** 4,5 5 5 5 4 1 5
Удобство работы*** 4,5 4 4 5 5 4 3,5
Внешний вид*** 3,5 3,5 4 4,5 5 3,5 3,5
Примечания:
* SMTP – отправка сообщений по протоколу SMTP; MSA – использование почтового агента напрямую (например, sendmail); собственная – собственная
реализация функции отправки.
** простота установки и настройки дана как интегральный субъективный показатель (от 1 до 5), учитывающий «прозрачность» пакета, комментарии
в конфигурационных файлах, качество документации, а также необходимость «доводки напильником».
*** усреднённая оценка удобства и внешнего вида указана как средняя оценка (от 1 до 5), присвоенная интерфейсу редакцией.
**** OpenWebMail работает напрямую с хранилищами, автоматически определяя их тип.
***** отметка «+/-» означает, что пакет не смог корректно отобразить Unicode в поле «Отправитель».

Установка выполняется в /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
полезные советы

Не нагружайте Apache лишней работой


Если вы не предоставляете своим клиентам услуги хос-
тинга с возможностью самостоятельно вносить изменения
в .htaccess и если вам не требуется «на лету» менять пара-
метры каких-либо каталогов – отключите вообще исполь- Не обижайте клиентов
зование этих файлов с помощью директивы AllowOverride Предположим, у вас есть каталог http://yourdomain.ru/project/.
None. Вы же не хотите потерять клиентов, которые будут пытать-
Любые специфические для каталога настройки мож- ся по ошибке зайти в каталог proect? Конечно, можно на-
но указать в соответствующей секции <Directory>. Конеч- писать красивую и грамотную «страницу 404», которая бу-
но, в этом случае после каждого изменения конфигура- дет возвращаться клиенту в ответ на запрос несуществу-
ции придётся перезапускать веб-сервер, но это, как прави- ющего ресурса и всё ему объяснять. Но проблема в том,
ло, лучше, чем заставлять Apache при обработке каждого что «клиент всегда прав», и он обижается, если ему ска-
запроса просматривать каждый каталог от корня файло- зать, что он ошибся. Для домашней странички это не кри-
вой системы (даже не сайта!!!) до текущего файла в поис- тично, но для интернет-магазина обиженный клиент – на-
ках файла .htaccess. стоящая трагедия.
А если вы «додумались» задать для этих файлов сра- Apache позволяет очень легко решить эту проблему:
зу несколько имён (с помощью директивы AccessFileName), просто создайте псевдоним для часто «ошибаемого» ад-
то работы у Apache прибавится пропорционально числу воз- реса:
можных вариантов. Никогда так не делайте, если в этом нет
Alias /proect/ /usr/local/www/htdocs/project/
абсолютной необходимости. И даже если есть – всё равно
не делайте. Не забывайте только, что первым параметром указыва-
Примечание: если для какого-то каталога вам всё-та- ется путь от корня веб-сайта, а вторым – от корня файло-
ки нужен .htaccess-файл, разрешите его обработку только вой системы. Ещё один вариант решения задачи – создать
для этого каталога – в секции <Directory>: символьную ссылку (см. также предыдущий совет, касаю-
щийся символьных ссылок).
AllowOverride None
<Directory /specclient> Но Apache был бы не Apache, если бы не предложил ещё
AllowOverride All более элегантное решение – модуль mod_speling. (Одна «l» –
</Directory>
это не опечатка! Вопреки всем правилам английской грам-
матики название модуля пишется именно так). Здесь всё
просто: убедитесь, что этот модуль подключается, и вне-
сите небольшую корректировку в конфигурацию, добавив
Внимательней относитесь к ссылкам в секции, которые должны охватываться действием этого
Ещё один способ упростить жизнь серверу Apache – разрешить модуля, одну директиву:
символьные ссылки директивой Options+FollowSymLinks. Да-
Checkspelling on
да, именно разрешить! Дело в том, что если они запреще-
ны, то при обработке каждого запроса Apache должен будет На этот раз нужны обе буквы «l». Теперь Apache, по-
проверить каждый подкаталог в пути и сам файл на пред- лучив запрос несуществующего ресурса, самостоятель-
мет того, не является ли он символьной ссылкой. Если же но попытается найти среди имеющихся наиболее похожий
ссылки разрешены, то веб-сервер будет просто открывать и вернёт его клиенту. Правда, проверяется расхождение
запрошенный файл, не задумываясь о его природе. всего на один символ в элементе (под элементом здесь
Естественно, нельзя забывать здесь об аспекте безо- понимается имя файла или имя любого каталога в пути
пасности – если кто-то ещё, кроме вас, имеет право созда- к файлу; т.е. mod_speling сможет распознать ошибку типа
вать файлы в корневом каталоге веб-сервера, то кто зна- nevs/totay/inex.html, но споткнётся на news/tudey/index.html),
ет, какие ссылки там могут появиться? но в большинстве случаев это позволит отдать клиенту то,
Нужно предостеречь, что попытка решить проблемы что он хочет. Даже если он и сам не до конца понимает, че-
безопасности с помощью опции SymLinksIfOwnerMatch, го же хочет...
которая позволяет Apache обрабатывать ссылку только
в том случае, если она принадлежит тому же пользовате- Сергей Супрунов
лю, который является владельцем самого файла, добавит
для Apache даже больше работы, чем при полностью за-
прещённых ссылках. Ведь мало того что придётся прове-
рять, ссылка это или нет, так нужно будет ещё и владель-
цев контролировать! В общем, пользуйтесь этими возмож-
ностями с умом и осторожностью.

№9, сентябрь 2006 21


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

Обзор систем резервного копирования

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

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, Удобный планировщик календар-
бой желающий может модифициро- а на клиентских машинах устанавли- ного типа позволяет выполнить все не-
вать код по своему усмотрению, рас- ваются программы-клиенты. Эти ком- обходимые операции: полную, инкре-

№9, сентябрь 2006 23


администрирование
Дополнительно хочется отметить
наличие большого числа дополнитель-
ных программ и утилит, например, мо-
дуля к Webmin (http://sourceforge.net/
projects/afbackup-webmin) и скрипта
remote-afbackup, позволяющего запус-
кать операцию создания резервной ко-
пии удаленно.

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
администрирование
Свободная характеристика систем резервного копирования

Название Версия Сайт Лицензия Платформы Работа по расписанию

Solaris, OpenBSD, FreeBSD, Ultrix, HP/UX,


http://www.amanda.org, IRIX, Linux, Digital UNIX, SCO, AIX, Mac OS X,
AMANDA 2.5.1b1 Cвободная cron
http://sourceforge.net/projects/amanda возможна работа в Windows посредством
cygwin

Сервер – Linux, Solaris, SGI, AIX, HP-UX,


SCO, Tru64, Irix. Клиенты – дополнительно Внутренний
Arkeia 5.3.12 http://www.arkeia.com Коммерческая
Windows 2000/XP/2003, Windows 95/98, Novell, планировщик
VMS, ICL, MacOSX, Open/Net/FreeBSD

Сервер – Linux, AIX, IRIX, FreeBSD, Digital Cron на клиенте


Afbackup 3.4 http://sourceforge.net/projects/afbackup GNU GPL Unix (OSF1), Solaris и HP-UX. Клиенты или дистанционно
протестированы на SunOS и OpenBSD с сервера

Backupninja 0.9.3 http://dev.riseup.net/backupninja GNU GPL POSIX-системы, Linux cron

Сервер и клиент – Solaris, Linux, FreeBSD,


http://www.bacula.org, Tru64, MacOS X. Есть клиенты и консоль Внутренний
Bacula 1.38.11 GNU GPL
http://sourceforge.net/projects/bacula для Windows (NT, 2000, XP, 2003, 98/Me), планировщик
OpenBSD, Irix

Сервер *BSD, Linux, Solaris, MacOS X.


Внутренний
BackupPC 3.0.0beta http://backuppc.sourceforge.net GNU GPL Архивирование плюс Windows
планировщик
(NT, 2000, XP, 2003, 98/Me)

Backup
0.7.4 http://www.backup-manager.org GNU GPL GNU/Linux cron
Manager

Open/Net/FreeBSD,Linux, Solaris. Плюс клиент Внутренний


Box Backup 0.10 http://www.fluffy.co.uk/boxbackup BSD
Windows/cygwin планировщик или cron

Сервер Linux, MacOS X, Solaris, IRIX.


Клиенты – плюс Free/OpenBSD, SCO Внутренний
BRU Server 1.2.0 http://www.tolisgroup.com Коммерческая
OpenServer/UnixWare, AIX, UnixWare и все планировщик
Windows от 98 до 2003

Duplicity 0.4.2 http://www.nongnu.org/duplicity GNU GPL Linux и другие POSIX-системы cron

Команда 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
каталогах

POSIX-системы, Linux или Mac OS X, есть


rdiff-backup 1.0.4 http://www.nongnu.org/rdiff-backup GNU GPL сron
материал по использованию на Windows

Сервер, устройства хранения и клиенты


доступны практически для всех весрий UNIX,
Time Внутренний
4.0 http://www.atempo.com Коммерческая Linux, MAC OS и Windows. Есть модули для
Navigator планировщик
Oracle, Microsoft Exchange/SQL/Sharepoint,
Lotus, Sybase, Informix, DB2, SAP
Официально поддерживаются только
http://www.initzero.it/portal/en/ GNU/Linux Red Hat и Fedora Core, но
synbak 1.0.6 GNU GPL сron
products/opensource/synbak/overview возможна работа и с другими UNIX/Linux
системами, использующими UTF-8
Предназначен
Mondo для интерактивной
2.09 http://www.mondorescue.org GNU GPL Linux
Rescue работы, но возможно
использование cron

Hdup2 2.0.14 http://miek.nl/projects/hdup2/hdup.html GNU GPL Linux и другие POSIX-системы cron

Внутренний
Hydra 0.3.1 http://www.cprogrammer.org/trac/hydra GNU GPL UNIX-подобные
планировщик

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

Защищенность Защищенное Стратегия


Аутентификация Стратегия архивирования Компрессия данных
копии соединение восстановления
Клиент/сервер,
Kerberos 4/5, amcrypt/GPG. Полное
Полное/выборочное/
OpenSSH, Возможно OpenSSL Инкрементное Клиент/сервер
другая система
rsh, пароль добавление другого Выборочное
алгоритма
Полное
Логин/пароль Нет, данные Полное/выборочное/
Инкрементное
(передается Клиент шифруются перед Есть другая система/
Дифференциальное
в открытом виде) передачей клонирование
Выборочное
Полное
Клиент, Инкрементное Полное/выборочное/
DES OpenSSL
MD5-сигнатура OpenSSL Выборочное На стороне клиента другая система/
(128 бит)
файла Сохранение «сырых» клонирование
разделов
Полное
Пароль, OpenSSH, GnuPG Полное/выборочное/
OpenSSH или rsh Инкрементное gzip
rsh (с помощью duplicity) другая система
Выборочное
Полное
Пароль CRAM-MD5, Нет, только SHA1 Возможно соединение
Инкрементное Полное/выборочное/
ключи OpenSSH, или MD5-сигнатура через SSH-тунель Клиент gzip
Дифференциальное другая система
OpenSSL файла или OpenSSL
Выборочное
Нет, MD5 сигнатура Полное
Пароль, OpenSSH, используется Инкрементное Полное/выборочное/
OpenSSH или rsh Сервер gzip/bzip2
rsh только для быстрого Частичное другая система
поиска Выборочное
GnuPG Полное
Пароль, OpenSSH,
(только архивов tar, OpenSSH или rsh Инкрементное gzip/bzip2/zip Только резервирование
rsh
tar.gz, tar.bz2) Выборочное
Клиент – AES
Полное
Сертификаты для данных Полное/выборочное/
TLS/SSL Инкрементное Средствами OpenSSL
OpenSSL и Blowfish другая система
Выборочное
для метаданных
Полное
Инкрементное
Полное/выборочное/
Пароль, возможна Данные шифруются Дифференциальное
Клиент Есть другая система/
работа через ssh перед передачей Выборочное
клонирование
Сохранение «сырых»
разделов
Полное
OpenSSH, данные Инкрементное
Пароль, ssh, ftp GnuPG шифруются перед Выборочное gzip Полное/выборочное
передачей Не поддерживает жестких
ссылок

Нет, данные
Полное
GPG-ключ GnuPG шифруются перед Нет Полное/выборочное
Инкрементное
передачей

Полное Сервер, возможности


Полное/выборочное/
Пароль, OpenSSH Нет OpenSSH Инкрементное ssh и опционально
другая система
Выборочное gzip

Клиент, кроме
Есть, кроме того Полное
Пароль, Active того информация Полное/выборочное/
данные шифруются Инкрементное Есть
Directory подписывается другая система
перед передачей Выборочное
хэшем

Полное
Полное/выборочное/
Пароль Нет OpenSSH Инкрементное gzip/bzip2
другая система
Выборочное

Полное Полное/выборочное/
Локальный
Нет Нет Сохранение «сырых» gzip/bzip2 другая система/
пользователь
разделов клонирование

Полное
Данные шифруются Полное/выборочное/
Пароль mcrypt или GnuPG Инкрементное gzip/bzip2/lzop
перед передачей другая система
Выборочное
Полное Полное/выборочное/
Пароль Нет Нет bzip
Только каталоги другая система

№9, сентябрь 2006 27


администрирование
пользователям и предприятиям, с до- зы данных. Кроме BRU Server TOLIS веряет данные в каталоге ~/.dibs/
вольно гибкой лицензией (например, Group представляет еще целый ряд autoBackup, и если будут изменивши-
дополнительные серверы рассматри- продуктов предназначенных для ре- еся файлы, то они будут скопированы
ваются как клиенты). Работает по кли- зервирования информации. на удаленный компьютер. Все катало-
ент-серверной схеме и включает три ги, информацию в которых необходи-
составляющих: сервер, клиент и кон- Duplicity мо резервировать, должны содержать
соль управления. Систему отличает Несмотря на небольшой размер, здесь символические ссылки.
возможность проверки правильнос- duplicity является довольно мощной Для поиска подходящих для хране-
ти записанных данных на ленту дан- системой резервного копирования ин- ния резервных копий систем исполь-
ных без связи с клиентом. Данные мо- формации. Его использование позво- зуется специальный сервис. При на-
гут быть записаны напрямую на стри- ляет резервировать информацию с ло- стройке своего сервиса может указы-
мер, либо использовано промежуточ- кальной системы, хотя его легко мож- ваться дисковая квота, при превыше-
ное хранение на диске. Последнее поз- но заставить получать информацию нии которой прием файлов прекра-
воляет затем более компактно распо- с удаленных систем по ssh. Представ- щается.
ложить на одном носителе информа- ляет собой набор скриптов, написан- Сервис может быть настроен в ак-
цию с одного компьютера, параллель- ных на языке Python. Данные могут тивном и пассивном режиме, который
но резервировать данные с нескольких быть сохранены как в другом разделе, используется в том случае, когда ком-
клиентов, при наличии одного стри- так и на удаленную систему. Подде- пьютер находится за межсетевым эк-
мера и проверять правильность запи- рживаются ftp-серверы, ssh/scp, rsync. раном.
си на ленту. Использование librsync позволяет ко-
Также стоит отметить возможность пировать только изменившиеся дан- rdiff-backup
восстановления части информации ные. Для работы требует наличия rdiff- Весьма популярная разработка Стен-
при ошибках считывания с ленты или backup о котором пойдет речь ниже. фордского университета, относитель-
диска. Информация может быть вос- По умолчанию вся информация шиф- но недавно изменившая прописку.
становлена не только в целевую, но руется с помощью GnuPG. За 5 лет было выпущено более 60 ре-
и в другую систему или каталог. Фир- лизов. Представляет собой скрипт, на-
менная технология QFA (Quick File DIBS писанный на Python. Позволяет произ-
Access) позволяет быстро получить Distributed Internet Backup System – водить резервное копирование одно-
доступ к данным на ленте. Управле- весьма интересная система, написан- го каталога в другой. Конечный ката-
ние может осуществляться не только ная на Python, «выпадает» из общего лог содержит копию исходного катало-
через графическую консоль, но есть плана. Суть ее работы состоит в том, га, плюс в отдельном каталоге хранят-
и командная строка, поддерживаю- что создается сеть участников, кото- ся все описания различий копий в diff-
щая скрипты. рые обмениваются между собой дан- формате, поэтому возможно восста-
Возможно выполнение на клиен- ными, то есть работает такая сеть на- новление давно утерянных файлов и их
те pre и post-скриптов, позволяющая, подобие Р2Р вроде Napster, Gnutella, версий. Невероятно прост в использо-
например, заморозить состояние ба- Kazaa. Вся информация перед пере- вании. Возможно совместное исполь-
дачей шифруется с зование с SSH, позволяющее произво-
помощью GnuGPG, дить безопасное копирование.
поэтому пользова- Функциональность и удобство rdiff-
тель на другом ком- backup могут добавить интерфейсы,
пьютере не сможет разработанные под него. Так, в насто-
при всем своем же- ящее время известны веб-интерфей-
лании ее прочесть. сы rdiffWeb (http://www.rdiffweb.org), на-
По с ет и п е р е д а - писанный на Python, и rdiff-backup-web
ются только изме- (http://rdiffbackupweb.sourceforge.net),
нившиеся файлы. предс тавляющий собой скрипты
Для повышения на- на PHP. Последний хотя и находится
дежности исполь- в состоянии альфы, но его уже можно
зуется код Рида- рекомендовать к применению. И раз-
Соломона. работанный в рамках Google Summer
Система DIBS of Code 2005 pyBackPack (http://projects.
очень проста в ус- sucs.org/projects/pybackpack), исполь-
тановке и настрой- зующий GTK+ библиотеки. К сожале-
ке. После первона- нию, ни один из них не локализован.
чальной настрой-
ки демон, рабо- Synbak
тающий на систе- Основную цель, которую пытались до-
мах, через опреде- стичь разработчики этого проекта, –
Рисунок 4. Один из веб-интерфейсов к rdiff-backup ленное время про- объединение нескольких методов со-

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.

№9, сентябрь 2006 29


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

Упаковщики исполняемых
файлов в 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 ; передаем управление расшифрован. коду

№9, сентябрь 2006 31


администрирование
Листинг 2. Быстрая расшифровка elf-файла в отладчике gdb указывать на оригинальную точку входа (в настоящий мо-
; определяем точку входа в файл мент зашифрованную!), в результате чего IDA Pro показы-
root@5[elf_crypt]#objdump -f elfcrypt-demo вает нечто совершенно бессмысленное:
elfcrypt-demo: формат файла elf32-i386
архитектура: i386, флаги 0x00000112: Листинг 3. Нет, это не хитрый антиотладочный код,
EXEC_P, HAS_SYMS, D_PAGED это просто оригинальная точка входа в программу,
начальный адрес 0x080495dc
еще не расшифрованная расшифровщиком

root@5[elf_crypt]# gdb elfcrypt-demo .text:080482C0 _start proc near


; ставим точку останова на точку входа .text:080482C0 8C EE mov esi, gs
(gdb) b *0x80495DC .text:080482C2 92 xchg eax, edx
.text:080482C3 80 5C 80 28 F9 sbb byte ptr ↵
Breakpoint 1 at 0x80495dc [eax+eax*4+28h], 0F9h
.text:080482C8 ED in eax, dx
; пускаем программу .text:080482C9 57 push edi
(gdb) r .text:080482CA 9E sahf
.text:080482CB 61 popa
Starting program: /home/elf_crypt/elfcrypt-demo .text:080482CC AD lodsd
.text:080482CD 87 C8 xchg ecx, eax
; сработала точка останова .text:080482CF 01 D5 add ebp, edx
.text:080482D1 B3 4F mov bl, 4Fh
Breakpoint 1, 0x080495dc in ?? () .text:080482D3 0D B5 52 9A 61 or eax, 619A52B5h
.text:080482D8 2D 80 C8 01 55 sub eax, 5501C880h
; говорим отображать команды Ассемблера ; Trap to Debugger
(gdb) display/i $pc .text:080482DD CC int 3
.text:080482DE 33 F6 xor esi, esi
1: x/i $pc 0x80495dc: jmp 0x80495e0 .text:080482E0 42 inc edx
.text:080482E1 F7 5C 99 E8 neg dword ptr ↵
; начинаем трассировать программу [ecx+ebx*4-18h]
(gdb) si .text:080482E1 _start endp

0x080495e0 in ?? () Кстати говоря, если установить точку останова на _start


; продолжаем трассировать и дать отладчику немного поработать, мы попадем в са-
мое начало расшифрованной программы, после чего ее
1: x/i $pc 0x80495e0: pusha
... будет можно анализировать в обычным режиме или снять
0x080495f7 in ?? () дамп. Только это должна быть именно аппаратная (коман-
; видим цикл да «hbreak _start» в gdb), а не программная («b _start») точ-
ка останова, иначе все рухнет (программная точка внед-
1: x/i $pc 0x80495f7: loop 0x80495f3
ряет в расшифровываемую программу код CCh, который
; ставим точку останова за его концом после расшифровки превращается совсем не в то, что бы-
(gdb) b *0x80495F9
ло до нее).
Breakpoint 2 at 0x80495f9 Это очевидный просчет создателя шифратора. Вот если
; запускаем программу «вживую» бы он перенаправил _start в какое-нибудь интересное мес-
(gdb) c то, вот тогда бы хакерам пришлось попыхтеть, а так… «за-
щита» снимается в считанные секунды безо всякого тру-
Continuing.
да, однако представляет интерес посмотреть, как выгля-
; точка останова достигнута
дит код расшифровщика в IDA Pro, точка входа в который,
Breakpoint 2, 0x080495f9 in ?? () как мы помним, равна 80495DCh:
; программа расшифрована!
Листинг 4. Дизассемблерный листинг расшифровщика,
1: x/i $pc 0x80495f9: popf внедряемого ELFCrypt в файл (как он выглядит в IDA Pro)

extern:80495DC 7F 01 00 00 extrn puts@@GLIBC_2_0:near


extern:80495E0 FA 00 00 00 extrn ↵
__libc_start_main@@GLIBC_2_0:near
; CODE XREF: .plt:_puts↑j
extern:80495E4 7F 01 00 00 extrn puts:near
; DATA XREF: .got:off_80495CC↑o
extern:80495E4
extern:80495E8 FA 00 00 00 extrn ↵
__libc_start_main:near
; CODE XREF: ___libc_start_main↑j
extern:80495E8
; DATA XREF: .got:off_80495D0↑o
extern:80495E8
; weak
extern:80495EC 00 extrn _Jv_RegisterClasses
; weak
extern:80495F0 00 extrn __gmon_start__
; DATA XREF: .got:080495D4↑o
extern:80495F0

Что за чертовщина?! Каким образом расшифровщик


может существовать в extern, когда здесь прямым текстом
Рисунок 1. Домашняя страница создания JunkCode –
создателя шифровщика ELFCrypt прописаны фактические адреса динамически загружаемых

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

; IDA Pro корректно отобразила plt-переходник, вызывающий


; функцию, указатель на которую расположен в двойном слове
; по адресу 80495D0h
#.got:080495D0 E8 95 04 08 off_80495D0 dd offset __libc_start_main
1: x/i $pc 0x80482b6 <_init+62>: push $0x8
1: x/i $pc 0x80482bb <_init+67>: jmp 0x8048290 <_init+24>

; а вот тут уже начались расхождения...


; IDA Pro уверяет, что здесь расположено смещение функции
; __libc_start_main, в то время как отладчик показывает,
; что здесь находится специальный код push 08h/jmp 8048290h.
; Посмотрим, что покажет IDA Pro по адресу 8048290h
# .plt:08048290 ?? ?? ?? ?? ?? ?? dd 4 dup(?)
1: x/i $pc 0x8048290 <_init+24>: pushl 0x80495c4
1: x/i $pc 0x8048296 <_init+30>: jmp *0x80495c8
Рисунок 2. Выбор альтернативного метода загрузки elf-файлов
; парад различий продолжается! IDA Pro вообще не показывает в IDA Pro

№9, сентябрь 2006 33


администрирование
0xbffffb00: 0x08048390

; судя по адресу это так и есть

; проверяем наше предположение


(gdb) disassemble 0x80482e1
Dump of assembler code for function _start:
0x080482c0 <_start+0>: xor %ebp,%ebp
0x080482c2 <_start+2>: pop %esi
0x080482c3 <_start+3>: mov %esp,%ecx
0x080482c5 <_start+5>: and $0xfffffff0,%esp
0x080482c8 <_start+8>: push %eax
0x080482c9 <_start+9>: push %esp
0x080482ca <_start+10>: push %edx
0x080482cb <_start+11>: push $0x8048410
0x080482d0 <_start+16>: push $0x80483b0
0x080482d5 <_start+21>: push %ecx
0x080482d6 <_start+22>: push %esi
0x080482d7 <_start+23>: push $0x8048390
0x080482dc <_start+28>: call 0x80482b0 <_init+56>
0x080482e1 <_start+33>: hlt
End of assembler dump.

Рисунок 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

; загружаем программу в отладчик Естественно, чтобы написать скрипт, необходимо


root@5[elf_crypt]# gdb elfcrypt-demo
; ставим brkpnt на _dl_map_object_deps знать, откуда и докуда шифровать, а также ключ шифров-
(gdb) hbreak *0x4000BBD0 ки, для чего необходимо проанализировать алгоритм рас-
Hardware assisted breakpoint 1 at 0x4000bbd0 шифровщика (см. листинг 1).
Кстати говоря, IDA Pro не обновляет модифицируемый
; запускаем программу
(gdb) r код в окне дизассемблера (точнее обновляет, но делает
это как-то странно), поэтому нам необходимо нажать <U>,
Breakpoint 1, 0x4000bbd0 in _dl_map_object_deps () from /lib/ld-linux.so.2
разрушая ранее дизассемблированные инструкции в по-
; первое всплытие установленной точки останова ток байт, а затем <C> для превращения их в дизассемб-
; сейчас будем проверять - «наше» ли оно или нет
лерный код.
; смотрим стек Другой способ противодействия упаковщикам заклю-
(gdb) x $esp+8
чается в подключении (attach) к уже запущенному процес-
0xbffffa6c: 0x40100498
су (задолго после того, как упаковщик все уже распако-
; адрес указывает на libc.so.6 вал). В gdb за это делается так: «gdb --pid=<PID>», где PID –
; это «левое» всплытие, идем дальше идентификатор исследуемого процесса, который мож-
(gdb) c
но узнать с помощью команды «ps -a». Однако это не са-
Continuing. мый лучший путь, поскольку мы вторгаемся в программу
Breakpoint 1, 0x4000bbd0 in _dl_map_object_deps () from /lib/ld-linux.so.2 уже после инициализации кучи структур данных и снятый
дамп может оказаться неработоспособным. К тому же из-
; второе всплытие установленной точки останова
; проверяем - «наше» ли оно или нет за игр с extern и несоответствия _start реальной точке вхо-
да, существующие UNIX-дамперы не могут реконструиро-
; должен быть ret из call main
(gdb) x $esp+8 вать elf-файл, получая Segmentation fault. Правда, можно
воспользоваться утилитой PD (более подробно она рас-
0xbffffafc: 0x080482e1
сматривается в разделе, посвященном упаковщику UPX),
; судя по адресу, это возможно так и есть указав «волшебный» ключик -l, предписывающий не тро-
; должен быть указатель на main гать секцию .got, тогда Segmentation fault станет вызывать
(gdb) x $esp+0xC сдампленный файл, но зато он будет полностью расшиф-

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А
вратиться в пытку.
Если же снимать дамп необязательно и достаточно Файл запускается так же, как и раньше, но