Так видит журнал читатель, который забыл оформить подписку:
КА
БЫ С
ТР О ТИ РАС РА КУ Ж ПИ
НИ НО К У ВО ЛЫ ГО ЗА ДНИ ТЯ Е НУ ЛИ
ЛИ
СЬ
№5(30) май 2005 подписной индекс 81655 www.samag.ru
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети
№3(52) март 2007 подписной индекс 20780 www.samag.ru
Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM
Так видит журнал читатель, оформивший подписку: №5(30) май 2005
№3(52) март 2007
КО НЕО НЧ ЖИ ИЛ ДА ИС НН ЬД О ЕН ЬГ И ЗА
ПО АВ СЛ РА Е О Л НА ТПУ РА СКА БО ТЕ
УЕ ХА Л
ВО
ТП УС К
Интервью с Ларри Уоллом – создателем языка Perl
Как построить сетевую инфраструктуру на основе VMware Server Составит ли VirtualBox конкуренцию VMware? Система контроля версий RCS на службе сисадмина
подписной индекс 81655 www.samag.ru
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD
Как арендовать или купить в рассрочку ПО от Microsoft
Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl
Создаём VPN с ViPNet Используйте преимущества файловой системы ZFS в Solaris Большие гонки веб-серверов
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Роспечать – 20780, 81655 Пресса России – 87836 Интер-почта – тел. (495) 500-00-60
Устанавливаем eGroupware Решаем типичные проблемы безопасности домашних сетей
в номере 3 ТЕНДЕНЦИИ АДМИНИСТРИРОВАНИЕ 6 Как купить ПО от Microsoft? Часть 3. Приобретаем в рассрочку
Три программы лицензирования – Open Value Non Company-Wide, Open Value Company-Wide и Open Value Subscription – являются, пожалуй, самыми интересными способами покупки программного обеспечения для корпоративных клиентов. Дмитрий Бутянов for.mail.only@gmail.com
12 Создаём VPN с ViPNet
Технологии создания VPN, заложенные в продуктах и решениях ViPNet, позволяют организовать безопасный обмен защищенной информацией как в локальных, так и в глобальных сетях, независимо от способа и места подключения компьютеров и типа выделяемого им IP-адреса. Сергей Яремчук grinder@ua.fm
14 Строим сетевую инфраструктуру на основе VMware Server
Современные требования к IT-структуре – быстрая переносимость сервисов с одного сервера на другой, упрощение резервного копирования, безопасность и делегируемость полномочий – порой не являются простыми для системного администратора. На помощь приходит VMware Server. Алексей Бережной beralex2@mail.ru
20 VirtualBox – виртуализация под GPL
15 января 2007 года вполне может войти в историю свободного ПО как день, когда у VMware Workstation впервые появился достойный открытый аналог. Насколько полной вышла эта аналогия? Валентин Синицын val@linuxcenter.ru
24 Система контроля версий RCS на службе сисадмина
Отслеживание настроек операционной системы обычно не является сложной задачей. Но иногда бывает трудно вспомнить, какие изменения вносились несколько месяцев назад на том или ином сервере, и зачем это было сделано. Сергей Супрунов amsand@rambler.ru
28 Используйте преимущества файловой системы ZFS в Solaris
В летнем релизе 6/06 Solaris 10 появилась поддержка новой файловой системы ZFS. Почему понадобилось изобретать новую файловую систему вместо привычной ufs, и чем она интересна? Алексей Коробкин korobkin@src.samsung.ru
36 Устанавливаем eGroupware
Обзор программного пакета eGroupware, предназначенного для обеспечения совместной работы групп пользователей и автоматизации бизнес-процессов. Сергей Яремчук grinder@ua.fm
42 KolibriOS: дайте ей шанс полетать на вашем компьютере
В феврале 2007 г. новость о релизе KolibriOS 0.65 облетела весь Интернет. Еще бы: первая ОС на Ассемблере, поддерживающая чтение разделов NTFS. Сергей Кузьмин kuzmin_serg@list.ru
№3, март 2007
46 Корпоративный MAIL RELAY-сервис. E-mail + UNIX + Exchange
Ваша почтовая система основана на MS Exchange, и вы опасаетесь подключать его напрямую в Интернет? Требуется большая гибкость в маршрутизации и фильтрации почты? UNIX-сервер и Sendmail с правильной настройкой избавят от головной боли и дадут мощные инструменты для работы с почтой. Яков Коваленко jsn@inbox.ru
ЧЕЛОВЕК НОМЕРА 52 Советы Джона Чемберса
Президент и главный управляющий Cisco Systems учится на чужих и своих ошибках. А молодые топ-менеджеры изучают его биографию. Оксана Родионова rodion@dol.ru
WEB 56 Большие гонки веб-серверов
Сравнительное тестирование веб-серверов. (Действительно для серверов класса SOHO под управлением ОС FreeBSD.) Сергей Супрунов amsand@rambler.ru
БЕЗОПАСНОСТЬ 68 Решаем типичные проблемы безопасности домашних сетей
Домашние сети объединили вначале соседей, а позже – тысячи пользователей районов. Какие трудности возникают при работе в домашних сетях и как их преодолевать? Иван Максимов ivan_maksimov@inbox.ru
74 Auditor Collection: проверяем безопасность вашей сети
Воспользуйтесь дистрибутивом Linux, специально собранным для поиска уязвимостей в сети. Андрей Бирюков mex_inet@rambler.ru
ПРОГРАММИРОВАНИЕ 80 Ruby: язык завтрашнего дня
Сегодня очень трудно не заметить ажиотаж вокруг языка программирования Ruby. Владимир Овсянников geniyz@gmail.com
84 Обзор Ruby on Rails
Благодаря удивительной гибкости языка программирования Ruby, создавая приложения на «Рельсах», трудно заметить, где заканчивается Ruby и начинается Rails. Владимир Овсянников geniyz@gmail.com
РЕТРОСПЕКТИВА 86 Google: история лучшей поисковой системы
Многие скептически называют Интернет большой свалкой информации. Но достаточно набрать в адресной строке браузера www.google.com, чтобы понять абсурдность таких высказываний. Илья Александров ilya_al@rambler.ru
92 КНИЖНАЯ ПОЛКА 27, 35, 91 BUGTRAQ
VI международная конференция «Современные технологии эффективной разработки веб-приложений с использованием PHP» Москва, 24-25 Мая 2007
Международный клуб разработчиков PHPCLUB приглашает Вас принять участие в PHPCONF 2007 – ежегодной международной конференции веб-разработчиков, которая состоится 24-25 мая 2007 года в Москве. Мероприятие будет проводиться уже в шестой раз. Тематика конференции охватывает широкий круг вопросов веб-программирования: Применение PHP в веб-разработке: приёмы, методы и парадигмы программирования в PHP, полезные модули и библиотеки, интеграция с Ajax. Эффективное создание приложений: фреймворки, гибкие методологии, экстремальное программирование, ТDD-методики. PHP и корпоративные информационные системы: разработка систем масштаба предприятия, интеграция корпоративных ИС. Будущее PHP: основные направления развития, PHP6, мультиязычные приложения, Unicode, применение в условиях Web 2.0. Внимание на конференции будет уделено таким темам как: Практика разработки корпоративных веб-приложений 2007. Аспектно-ориентированное программирование(AOP) в PHP. Nginx – архитектура самого быстрого веб-сервера. PHP/MapScript и MapServer. Публикация картографических данных с помощью PHP в WEB. PHP & Flash PHP & Flash, новая альтернатива для создания Rich Internet Applications (Flex Stress Testing Framework, модульное тестирование – FlexUnit, связка Flex и JavaScript). XForms – новое поколение веб-форм WAP (WAP 1.1, WAP 2.0, I-mode, Usability WAP сайтов, личный опыт). Exposing Hidden PHP Secrets / How PHP Ticks (PHP Internals) – как работает PHP внутри. Веб-службы снаружи и изнутри. Технические и маркетинговые аспекты поисковой оптимизации сайтов. Практика независимой WEB-разработки (freelance). Достоинства применения служб LDAP на предприятии. Обработка метаданных и цифровое подписывание HTML-форм. Управление зависимостями в программном коде. Формат PHPCONF 2007 включает серию мастер-классов в течение трех дней и 2-х дневную конференцию. Мероприятия будут проходить в течение недели с 21 по 25 мая. Аудиторию конференции составят более 200 представителей крупных и средних предприятий России и СНГ: профессиональные веб-разработчики и фрилансеры, руководители IT-отделов, руководители проектов, директора по развитию, а также разработчики, повышающие свою квалификацию. Профессиональный состав участников PHPCONF традиционно обеспечивается благодаря высокому уровню знаний и опыта докладчиков, выступающих на конференции. Местом проведения PHPCONF 2007 выбран «Телеком-холл» – крупный конференц-центр, расположенный в самом сердце российского Интернета в здании знаменитого дата-центра и узла обмена трафиком ММТС-9. Символично, что многие участники конференции будут получать и обмениваться новыми знаниями в области веб-программирования всего в нескольких метрах от серверов дата-центра М9, на которых эти знания будут воплощаться в реальные проекты. В ближайшее время на сайте конференции www.phpconf.ru будет выложена официальная программа проведения и открыта регистрация участников. Будем рады Вас видеть в составе делегатов конференции!
Организаторы:
тенденции Создан новый Open Source-союз: Open Solutions Alliance
что часть связанных с Debian продаж связана с малым и средним бизнесом и государственными заказчиками.
Некоммерческий консорциум Open Solutions Alliance (OSA) займется популяризацией бизнес-решений на базе Dell готовит компьютеры с Linux Open Source. К своим основным целям, определенным еще Уже через несколько дней после запуска компанией Dell в конце прошлого года, OSA относит подготовку и продви- инициативы Ideastorm стало ясно, что потребители хотят жение нормативов для взаимодействия приложений, со- Open Source. Цель проекта Dell Ideastorm заключалась в том, здание «метасообщества» пользователей, разработчиков чтобы узнать у своих клиентов, что они больше всего хотят и системных интеграторов (не имеющего единую лидирую- увидеть в новых компьютерных системах. На специально сощую компанию, а состоящего из множества бизнес-струк- зданном для этого сайте (www.dellideastorm.com) пользоватур, заинтересованных в достижении общего результата), тели могли выдвигать свои идеи и голосовать за уже предустранение барьеров к пониманию выгод открытых реше- ставленные. Первые места в рейтинге вскоре оккупировали предложения сторонников движения за ПО с открытым ний для деловых клиентов. Сформированный в феврале альянс уже начал рабо- кодом. Так, например, первую строчку с большим отрывом тать с системными интеграторами, опирающимися на про- заняла идея предварительно устанавливать 3 популярных граммное обеспечение с открытым кодом, Open Source-со- бесплатных Linux-дистрибутива (Ubuntu, Fedora, OpenSUSE) обществом и бизнес-пользователями. Среди основателей с возможностью выбора любого из них при загрузке компьюOSA такие компании, как Centric CRM, Hyperic, Jaspersoft, тера. Среди других Open Source-предложений можно выOpenbravo и SpikeSource. делить лаптоп с ОС GNU/Linux, предустановленные на новых машинах программные пакеты OpenOffice.org и Mozilla Firefox. В Dell оперативно отреагировали на просьбы потБазовой платформой Linspire станет Ubuntu Linux ребителей и вскоре выпустили пресс-релиз, где сообщили Две компании – Canonical Ltd, спонсирующая Ubuntu Linux, о том, что уже ведутся переговоры с компанией Novell по и Linspire Inc. – объявили о достижении технологического со- сертификации корпоративных клиентских продуктов для трудничества. Базовой системой для дистрибутива Linspire SUSE Linux. Кроме того, было объявлено, что Dell работа(и его бесплатной, поддерживаемой сообществом, редак- ет с другими Linux-дистрибьюторами, оценивает возможции Freespire) станет Ubuntu – вместо Debian GNU/Linux, ность дополнительных сертификаций собственных продуккак это было раньше. Несмотря на то что разработки самого тов с их решениями. проекта Ubuntu основываются на Debian, в Linspire считают, Составил Дмитрий Шурупов что эта миграция позволит достичь ускоренного цикла разпо материалам www.nixp.ru работки и большего удобства использования ОС. «Ubuntu – наиболее успешный на сегодня поддерживаемый сообществом Linux-проект, – пояснил Кевин Кармони (Kevin Carmony), исполнительный директор Linspire. – Проделан фантастический объем работы по созданию как сообщества, так и утилит для удобства его использования. Это и стало значительными доводами в пользу нашего сотрудничества с Canonical и миграции на Ubuntu как базовую платформу для наших Linux-решений для настольных ПК».
HP заработала 25 млн. долларов на Debian GNU/Linux Компания Hewlett-Packard сообщила о первых успехах ее проекта по оказанию услуг поддержки для Debian GNU/Linux. Летом минувшего года HP анонсировала свои планы по поддержке бесплатного и создаваемого сообществом дистрибутива, лишь в декабре начались продажи пакетов с соответствующими услугами, но первые результаты уже впечатляют. Данные за 2006 финансовый год отдела продаж подразделения HP EMEA (Европа, Средний Восток и Африка) показали, что Debian GNU/Linux принес компании прибыль в 25 миллионов долларов. Такая цифра впечатлила даже самих представителей HP: «Я был изрядно удивлен, когда узнал об этом», – поделился своими впечатлениями Джеффри Уэйд (Jeffrey Wade), менеджер HP по маркетингу Open Source и Linux во всем мире. Уэйд не стал разглашать подробности о том, что же конкретно позволило добиться такого дохода, но сообщил,
№3, март 2007
тенденции
«1С» и «Битрикс» обязуются любить друг друга 3 марта 2007 года фирма «1С» и компания «Битрикс» провели в Москве пресс-конференцию, посвященную созданию совместного предприятия «1С-Битрикс». На полуторачасовой официальной части мероприятия выступали и отвечали на вопросы журналистов руководители обеих сторон: Борис Нуралиев и Сергей Рыжиков.
В
докладе, посвященном своей Такая схема вызвала множество ников, то уже в текущем году это чисфирме, Борис Нуралиев заме- вопросов со стороны прессы, но оба ло должно вырасти до 2500. Пусть партил, что многолетний опыт рабо- докладчика подчеркнули, что нахо- тнерская сеть «Битрикс» и не «сольетты привел «1С» к мнению, что проек- дят ее наиболее эффективной, и про- ся» с оной у «1С», альянс, несомненты по созданию совместных и дочер- демонстрировали уверенность в пра- но, способствует процветанию данноних предприятий, как правило, позво- вильности этого выбора. Возглавил го направления. ляют добиться более быстрого роста, «1С-Битрикс» Сергей Рыжиков, котоНуралиев в свою очередь, комменчем варианты вроде полного поглоще- рый также останется и директором тируя «массовую партнерскую сеть» и общую бизнес-модель «1С», выразил ния одной компанией других. Вместе ООО «Битрикс». с тем он подчеркнул, что «интернетиЦель альянса – создание новых намерение добиться с новым предпризация – это влияние времени». Все это и продвижение уже существующих ин- ятием успеха, аналогичного другим изможно отнести на счет общих мотивов тернет-разработок «Битрикс» на тер- вестным проектам его фирмы: для формирования совместного пред- ритории стран СНГ и Балтии (опера«Ранее эта модель позволила нам приятия «1С-Битрикс». циями в регионах США, где также раз- добиться отличных результатов на таВ новорожденном предприятии вивается бизнес Рыжикова, продол- ких направлениях, как «1С:Предприравное (50/50) долевое участие «1С» жит заниматься «Битрикс»). Участ- ятие» или «1С:Мультимедиа», и сови «Битрикс». ники «1С-Битрикс» логично раздели- местное предприятие «1С-Битрикс» ли обязанности, которые в целом све- дает возможность применить этот подлись к следующей модели: сотрудни- ход в области Интернета». ки «Битрикс» отвечают за технологиНасколько успешным окажется ческую часть и будут продолжать за- «1С‑Битрикс», покажет время. Однако, ниматься непосредственно разработ- исходя из субъективной оценки прокой, а «1С», являясь заметным экспер- изошедшего с учетом нынешней рытом в области маркетинга и продаж, ночной ситуации и уровня услуг и пропоможет с распространением продук- дуктов, предоставляемых обеими комтов нового предприятия. паниями, осмелюсь предположить, В частности, Рыжиков сообщил что перспективы проекта, как минио росте партнерской сети «Битрикс» мум, внушают доверие. (причем таком бурном, что буквально Дмитрий Шурупов, «не успевают подписывать бумаги»): фотографии предоставлены если сейчас количество ее представиСергей Рыжиков расказывет о бурном компанией «Битрикс» телей насчитывает около 1200 участросте партнерской сети
администрирование
Как купить ПО от Microsoft? Часть 3. Приобретаем в рассрочку
Дмитрий Бутянов Как водится, самое вкусное я оставил напоследок. Три программы лицензирования – Open Value Non Company-Wide, Open Value Company-Wide и Open Value Subscription – на мой взгляд, самые интересные способы покупки программного обеспечения для корпоративных клиентов. Это касается как условий приобретения, так и цены. Да и дополнительные бонусы, которые вы получите, сбрасывать со счетов не стоит.
Утром – стулья, вечером – деньги
использованы компаниями, но они же обладают рядом недостатков, которые Думаю, что вы уже читали две преды‑ всё-таки не стоит скрывать. К основ‑ дущие части статьи (в №12 за 2006 г. ным недостаткам относятся ограни‑ и в №1 за 2007 г.), ну а если не чита‑ ченный набор прав по использованию ли – ай‑ай‑ай! Срочно исправляйтесь. программ, высокая цена и сложность Изложенные в них варианты покупки учёта. Помимо этого есть и еще одно программного обеспечения могут быть важное соображение – эти программы
работают по принципу «утром деньги – вечером стулья». Так что при покуп‑ ке программного обеспечения вашей компании придется вложить в сделку сразу всю необходимую сумму, а это может вызвать ненужный стресс у ше‑ фа и повышенное потребление вало‑ кордина финансовым директором. Де‑
администрирование нежные средства-то из оборота изыма‑ ются. Чтобы смягчить этот финансо‑ вый удар, Microsoft и предлагает про‑ граммы лицензирования с возможнос‑ тью рассрочки. Вы берете нужное про‑ граммное обеспечение, а платить бу‑ дете в течение трех лет, равными доля‑ ми. Или – вообще ничего не покупаете, а берете нужный софт в аренду. Усло‑ вия участия в программах демократич‑ ны, однако есть темные места, на кото‑ рые я постараюсь пролить свет. Начну с «Важного заявления». По программам корпоративного лицензирования нельзя купить операционную систему персонального компьютера. Никак. Без вариан‑ тов! Только OEM с новыми компью‑ терами или при их сборке, либо коро‑ бочная версия, либо GGK (Get Genuine Kit – специальная версия для легали‑ зации, см. статью в №12 за 2006 г.) для Windows XP. В прайс-листах про‑ грамм корпоративного лицензирова‑ ния вы тем не менее можете увидеть строки, содержащие слова наподобие «Windows Vista Business», но не спе‑ шите удивляться, а читайте строчку дальше – там обязательно будет сто‑ ять слово «Upgrade». Это означает вер‑ сию операционной системы, предна‑ значенную для обновления существу‑ ющей ОС. А вот существующая опе‑ рационная система должна быть ле‑ гальной, и ее можно купить только как OEM или коробку. Список опера‑ ционных систем, которые можно ис‑ пользовать с Windows Vista Business Upgrade, ограничен – Windows XP Pro, Windows Vista Ultimate, Windows 2000 Pro, Windows 98. Нельзя использовать Windows XP Home, Windows Vista Home Basic/Premium. Так что не ошибитесь при покупке новых ПК! Программные продук ты, кото‑ рые вы будете покупать по програм‑ мам корпоративного лицензирования с рассрочкой платежей, делятся на ба‑ зовые и дополнительные. К базовым продуктам относят‑ ся: Windows Vista Business Upgrade, Microsoft Office 2007 Professional Plus, Core CAL Suite (состоит из Windows CAL, Exchange Standard CAL, SMS CML, Office SharePoint Standard CAL). Эти продукты все вместе составляют Professional Desktop Platform. Набор базовых продуктов Windows Vista Business Upgrade, Microsoft Office
№3, март 2007
Рисунок 1. Размер ежегодных платежей за Office Professional в программах корпоративного лицензирования
2007 Small Business Edition, Windows Small Business Server CAL составляет Small Business Platform. Смысл покупки Core CAL Suite со‑ стоит в экономии средств: если поку‑ пать клиентские лицензии, входящие в набор, по отдельности, то получит‑ ся дороже.
Свободный выбор Начну с программы Microsoft Open Value Non Company-Wide (Non Company Wide означает, что вам не нужно по‑ купать программное обеспечение для всех персональных компьютеров ва‑ шей компании). Эта программа пре‑ дусматривает возможность рассроч‑ ки платежей на срок до трех лет. Что‑ бы стать участником программы, нуж‑ но преодолеть входной порог – 5 лю‑ бых лицензий. Это немного, фактичес‑ ки любая компания может войти в эту программу. Лицензии, которые вы при‑ обретете по этой программе, являются постоянными, то есть вы можете поль‑ зоваться ими неограниченное время. Опция Software Assurance является не‑ отъемлемой частью покупки, и вы не можете от нее отказаться. Таким обра‑ зом, вы в течение трех лет будете по‑ лучать новые версии приобретенных продуктов и иметь на них право ис‑ пользования. Причем право это оста‑ нется у вас и после окончания дейст‑ вия соглашения – если продукт был вы‑ пущен в течение срока его действия.
К примеру, если вы в 2007 году купили по этой программе Office Professional Plus 2007, то вы получаете право на все новые версии Office Professional Plus, которые выйдут до 2010 года, и можете пользоваться этими верси‑ ями неограниченное время и после окончания срока действия соглаше‑ ния. Но если вы в 2010 году не про‑ длите эту подписку на следующие три года, то новые версии Office, вышед‑ шие после 2010 года, вы использовать уже не сможете. Я не могу указывать вам, как и что покупать, но продление подписки – это хороший способ быть все время Up‑To‑Date, а с учетом роста цен на программные продукты – и са‑ мый экономичный. Более подробно Software Assurance обсуждалась в пре‑ дыдущей статье (№1 за 2007 г.). Еще одним хорошим свойством этой, а также всех описанных в данной статье программ является то, что за‑ купки в рамках этих программ корпо‑ ративного лицензирования может де‑ лать и само предприятие, и его аффи‑ лированные лица (юридические ли‑ ца со степенью участия более 50%). Так что если у вашей компании есть аффилированные «дочки», то можно купить софт сразу на всех. При офор‑ млении сделки можно указать спи‑ сок аффилированных предприятий или выбрать опцию «предприятие, все аффилированные лица предпри‑ ятия, включая те, которые будут со‑
администрирование Изменения в правилах продаж продуктов Microsoft Со времени выхода первой статьи об осо‑ бенностях приобретения OEM-лицензий (№12 за 2006 г.) компания Microsoft изме‑ нила правила продаж OEM-версий про‑ граммных продуктов. С конца 2006 го‑ да продажи OEM-версий конечным поль‑ зователям разрешена только в том слу‑ чае, если конечный пользователь соби‑ рает свой компьютер самостоятельно. Ес‑ ли конечный пользователь уже обладает собранным компьютером, то он не может воспользоваться OEM-версией програм‑ много продукта. Таким образом, для це‑ лей легализации вы можете использовать либо коробочные версии продуктов, либо, для Windows XP Professional, приобретать Get Genuine Kit. П р о д а ж а O E M - в е р с и й M i c r o s of t Office 2007 также претерпела изменения. При поставке этого продукта в составе соб‑ ранного ПК вы бесплатно получаете пре‑ дустановленную версию Office 2007, поль‑
зоваться которой можно будет 60 дней. В течение этого срока продукт можно ак‑ тивировать, для чего требуется приобрес‑ ти ключ продукта. Таким образом, вы мо‑ жете стать владельцем OEM-версии про‑ граммного продукта, но у вас не будет дис‑ ка с дистрибутивом. Вместо диска состав‑ ляющей лицензии является купленный ва‑ ми ключ в виде DVD-бокса. Носитель мож‑ но приобрести за отдельную плату. Новая программа продажи Microsoft Office 2007 получила название Office Ready. Изменились правила продажи Windows Vista Business Upgrade – версии операци‑ онной системы, приобретаемой по про‑ граммам корпоративного лицензирова‑ ния. Использование Windows Vista Upgrade возможно с Windows XP Professional или Windows 2000 Professional. Приобретение комбинации Windows XP Home + Windows Vista Upgrade возможно только в том слу‑ чае, если Windows Vista Business Upgrade приобретается в виде коробочного про‑ дукта.
зданы в течение срока действия со‑ жете реселлеру, так что проверяйте глашения». Иными словами, вы мо‑ его регулярно. Соглашение надо под‑ жете купить программное обеспече‑ писать в электронной или бумажной ние даже для тех предприятий, кото‑ форме. Для этого само соглашение вы рые еще не созданы. Естественно, воз‑ можете распечатать. (Внимание! За‑ никнет вопрос – каким образом потом ходить на сайт надо только по ссылке можно распределить купленный софт в письме! Прочитайте это вслух пять по этим «дочкам», если заказ оформ‑ раз!) Подписанное вами соглашение лялся на головное предприятие? Рас‑ будет передано в Microsoft, а вы полу‑ пределение делается внутренним при‑ чите письмо, подтверждающее согла‑ казом – шаблона приказа не сущест‑ сие Microsoft заключить соглашение – вует, но там надо будет четко указать, Acceptance Letter, а также подтверж‑ что и кому передается. дение заказа, включающее выбран‑ По программе Open Value Non ный вами набор продуктов, количест‑ Company-Wide вы можете приобрес‑ во и срок использования. ти любые необходимые вам продукты. Соглашение, письмо о согласии При этом вы получаете право исполь‑ заключить соглашение, подтвержде‑ зовать любую языковую версию про‑ ние заказа и подтверждение плате‑ дукта при условии, что она не доро‑ жа служат подтверждением лицензи‑ же купленной версии. Таким образом онных прав в течение срока действия вы, например, можете использовать соглашения. Microsoft Office 2007 Russian при покуп‑ Также вы бесплатно получаете ком‑ ке Microsoft Office 2007 English. Техно‑ плект дистрибутивов на двух выбран‑ логия заключения сделки проста: об‑ ных языках для всех продуктов, ко‑ ращайтесь в компанию, занимающую‑ торые лицензировали при подписа‑ ся продажами программного обеспе‑ нии соглашения или добавили в тече‑ чения (реселлеру). В ходе оформления ние действия соглашения (так назы‑ сделки (внутреннюю «кухню» я опи‑ ваемый Welcome Kit). Вам также будут сывать не буду), вы получите ссыл‑ высылаться новые версии продуктов ку на веб-узел Microsoft eAgreements, и их обновления, выпускаемые в пе‑ на котором получите доступ к тексту риод действия соглашения. соглашения. Письмо придет на адрес По окончании соглашения вы по‑ электронной почты, который вы ука‑ лучаете постоянную лицензию на те‑
кущие на момент окончания соглаше‑ ния версии лицензированных продук‑ тов. Каждое соглашение имеет свой номер, который необходимо помнить. Количество соглашений на организа‑ цию может быть любым. В течение действия соглашения вы можете докупать необходимые ли‑ цензии в любом наборе и количест‑ ве. Оплата производится в течение месяца с момента установки продук‑ та. При расчете стоимости будет учи‑ тываться, в течение какого време‑ ни вы фактически использовали пра‑ во Software Assurance (если вы доку‑ пите продукт во второй или третий год действия соглашения, стоимость Software Assurance будет пропорцио‑ нально снижаться). Однако это сни‑ жение будет идти с округлением до го‑ да в большую сторону, то есть нельзя внести платеж за полтора года, или год и три месяца – только за целое число лет. Разумеется, делать дополнитель‑ ные закупки наиболее выгодно в го‑ довщину соглашения. Не забудьте, что при этих закупках вы должны со‑ общить реселлеру номер своего согла‑ шения или открыть новое соглашение с отдельным номером. Не теряйте свой логин/пароль входа на на веб-узел Microsoft eAgreements! На этом узле вы найдете все ключи, необходимые для установки продук‑ тов, а также сможете скачать дист‑ рибутивы. Кроме того, на этом сай‑ те вы сможете управлять бонусами Software Assurance. Обратите на это внимание – чтобы воспользовать‑ ся дополнительными преимущест‑ вами Software Assurance, вам нуж‑ но их включить на сайте. Например, так вы сможете получить Windows Vista Enterprise как бонус при покуп‑ ке Windows Vista Business Upgrade + Software Assurance.
Отбеливатель для всей семьи Программа Open Value Company-Wide является подвидом программы Open Value, но по сравнению с предыдущей она обладает важными особенностя‑ ми. Входной порог в программу – 5 ПК. Обратите внимание, не 5 лицен‑ зий, а 5 ПК! Главное, что необходимо знать, – в этой программе обязательная стан‑ дартизация. Стандартизация – это обя‑
администрирование зательное приобретение продуктов для всех персональных компьютеров организации. Помните, я писал в на‑ чале статьи про базовые продукты (платформы)? Тут как раз и использу‑ ются эти понятия. Дело в том, что по требованиям программы Open Value Company-Wide вы будете должны ли‑ цензировать хотя бы один из базовых продуктов для всех ПК организации. Необязательно все. Но если вы ли‑ цензируете сразу платформу, то по‑ лучите дополнительные скидки. Ес‑ ли вы лицензируете базовый продукт для всех ПК в организации, то може‑ те получить скидку до 40% на продукт, в зависимости от продукта. Если быть Рисунок 2. Итоговая стоимость приобретения Office Professional в восьмилетней точным, то за стандартизацию опера‑ перспективе ционной системы – 40% скидки, Office – от 10% до 28%, Core CAL Suite – 23%. Если же вы к тому же берете Плат‑ форму (Professional Desktop Platform или Small Business Platform), то полу‑ чите еще 15% скидки «за платформу» на продукты, в нее входящие. Естественно, возникает вопрос: а какие именно компьютеры должны включаться в соглашение? Под стан‑ дартизацию попадают персональные компьютеры, аппаратные возможности которых позволяют запустить продукт. Не включаются в соглашение серве‑ ры, компьютеры со встроенными опе‑ рационными системами типа Windows Embedded, а также компьютеры, на ко‑ торых используется узкоспециализи‑ Рисунок 3. Влияние скидок программ корпоративного лицензирования на стоимость рованное программное обеспечение. Office Professional Последний пункт всё время вызыва‑ ет много вопросов, и готового рецеп‑ ценам. Поскольку базовые продукты всего парка ПК – тем самым вы сра‑ та нет – посоветуйтесь с реселлером, в рамках этого соглашения должны по‑ зу покупаете «оптовое» лицензирова‑ купаться для всех компьютеров орга‑ ние для всей компании. Главное – это его опыт поможет. Если вы лицензируете на все пер‑ низации, то приобретать эти базовые вовремя докупать нужное количес‑ сональные компьютеры не платформу, продукты для новых ПК обязательно. тво лицензий при росте парка ком‑ а только один из базовых продуктов, Уменьшить количество компьютеров пьютеров или при установке серве‑ то другие базовые продукты вы можете нельзя – что куплено, то куплено. Об‑ ров. Делать это нужно в течение ме‑ покупать в любых количествах, однако ратите внимание, что под стандартиза‑ сяца после установки программного скидки «за платформу» и «за стандар‑ цию попадают и те персональные ком‑ обеспечения. Попробую подвести промежуточ‑ тизацию» можно получить только при пьютеры, на которых уже стоит легаль‑ оформлении соглашения. Цена на ба‑ ная версия продукта (например, ком‑ ные итоги. Преимуществами программ зовые продукты фиксируется в момент пьютер был куплен вместе с ней). До‑ подписания соглашения, таким обра‑ полнительные продукты можно поку‑ Microsoft Open Value (Company-Wide зом вы пользуетесь трехлетней защи‑ пать в любых количествах, по текущим Non и Company-Wide) является воз‑ той от повышения цены. Если в течение ценам. Последующие платежи будут можность уменьшения единовремен‑ срока действия соглашения количест‑ производиться исходя из цены покуп‑ ных затрат на приобретение програм‑ во компьютеров в вашей организации ки и не будут пересчитываться по те‑ много обеспечения: оплата произ‑ водится в виде ежегодных платежей, увеличивается, то вы должны покупать кущим прайс-листам. Данная программа является не‑ а это позволит решить проблему не‑ базовые продукты, по которым была выполнена стандартизация, для при‑ плохим инструментом легализации, хватки оборотных средств. Так как обретаемых ПК, причем по «старым» так как предполагает лицензирование в эти программы входит опция Software
№3, март 2007
администрирование
Рисунок 4. График прихода электронных уведомлений в программах Open Value (* расторжение соглашения только при отсутствии платежа)
Assurance, то вы автоматически полу‑ чаете право использовать самые пос‑ ледние версии программных продук‑ тов Microsoft, которые будут выпуще‑ ны в течение трех лет действия со‑ глашения, а также предыдущие вер‑ сии, так как право Downgrade ник‑ то не отменял. Также у вас появляет‑ ся возможность контролировать рас‑ ходы на приобретение программно‑ го обеспечения в случае лицензиро‑ вания всего парка ПК – стоимость ли‑ цензий на базовые продукты в расчете на один ПК остается постоянной в те‑ чение всего срока действия соглаше‑ ния, а автоматическое включение оп‑ ции Software Assurance позволяет за‑ страховаться от возможного повыше‑ ния цен в связи с выходом новых вер‑ сий. Риск нелицензионного исполь‑ зования программного обеспечения снижается, так как у вас есть право использовать лицензированные про‑ дукты на любых компьютерах в орга‑ низации, включая новые ПК, добав‑ ленные в течение действия соглаше‑ ния, при условии оплаты в течение ме‑ сяца с момента установки.
Если не хочется покупать Это тоже возможно – не покупать про‑ граммное обеспечение и тем не менее пользоваться легальными продукта‑ ми. Для этого вам нужно арендовать ПО у Microsoft, воспользовавшись про‑ граммой Open Value Subscription.
10
Входной порог в программу – 5 ПК. В рамках программы Open Value Subscription вам предлагается вре‑ менная лицензия – срок ее действия ограничен сроком действия соглаше‑ ния. Вам необходимо ежегодно оплачи‑ вать свое право использовать любые новые порядковые и языковые (в зави‑ симости от выбранного языкового на‑ бора) версии лицензированных про‑ дуктов. Поскольку лицензия ограниче‑ на во времени, размер ежегодных пла‑ тежей существенно ниже, чем при за‑ купке постоянных лицензий. Кроме то‑ го, временная лицензия освобождает вас от ограничений, связанных с еже‑ годной оплатой постоянных лицензий, которую необходимо вносить незави‑ симо от имеющихся финансовых воз‑ можностей. По условиям программы Open Value Subscription лицензии закупа‑ ются для всех ПК в организации. Пра‑ во использования лицензированных продуктов распространяется и на все ПК, добавляемые в течение года. Вы можете немедленно начинать исполь‑ зование лицензированного програм‑ много обеспечения на новых компью‑ терах, при этом оплата будет произво‑ диться только в следующую годовщи‑ ну соглашения. Таким образом, вы за‑ щищены от риска нелицензионного ис‑ пользования ПО. На практике это оз‑ начает следующее: компания Microsoft выдает вам своего рода индульген‑
цию, согласно которой все ваши пер‑ сональные компьютеры являются но‑ сителями подлинных версий базовых продуктов, сколько бы их ни было (но не менее 5 штук). Предположим, в ва‑ шей организации 30 ПК. Вы заключа‑ ете это соглашение, лицензируя од‑ ну из двух Платформ. Таким образом, все ваши персональные компьютеры становятся носителями лицензион‑ ных версий программных продуктов, входящих в Платформу. Не забудь‑ те про «Важное заявление»! На поку‑ паемых компьютерах должна стоять, как минимум, лицензионная Windows XP Pro, так как в «Платформу» вхо‑ дит только Upgrade-вариант Windows Vista! Если через месяц число ваших персональных компьютеров увеличит‑ ся еще на 30 штук, то они тоже попа‑ дают под действие этого соглашения автоматически. Но – важное отличие от других программ! – вам не надо пла‑ тить за них в течение месяца. Вы пла‑ тите за ваш парк ПК только раз в год, по фактическому количеству ПК на мо‑ мент годовщины соглашения. Еще од‑ ним важнейшим отличием програм‑ мы Microsoft Open Value Subscription от других программ корпоративного лицензирования является то, что ко‑ личество компьютеров, за которое вы платите в годовщину соглашения, мо‑ жет уменьшаться (запишите это куданибудь. Может уменьшаться!). Напри‑ мер, в первый год вы лицензировали 100 персональных машин. Через год волею судеб у вас вместо 100 ПК ос‑ талось 30. Нет проблем – вы платите за тридцать. Это становится возмож‑ ным, потому что вы ничего не поку‑ паете – вы просто платите за год ис‑ пользования продуктов Microsoft в ор‑ ганизации. Чтобы войти в эту программу, нуж‑ но соблюсти ряд требований. Неслож‑ ных, не пугайтесь, нормы ГТО сдавать не надо будет. Программа подразуме‑ вает «Стандартизацию» в том виде, в каком я ее уже описывал. То есть один из базовых продуктов лицензиру‑ ется на весь парк ПК, и это обязатель‑ но. Естественно, вы получите скидку «за стандартизацию». Если вы вклю‑ чите в соглашение набор базовых про‑ дуктов, составляющий «Платформу», то вы также получите скидку «за плат‑ форму». Купить базовый продукт в про‑ извольном количестве нельзя. Иными
администрирование словами, вы можете купить базовый продукт либо для всех персональных компьютеров («Стандартизация»), ли‑ бо вы не можете купить этот базовый продукт. Набор базовых продуктов оп‑ ределяется при подписании соглаше‑ ния и не может быть изменен в тече‑ ние срока его действия. Цена на базовые продукты фик‑ сируется в расчете на один ПК в мо‑ мент подписания соглашения и не мо‑ жет быть изменена в течение срока его действия (три года). Дополнитель‑ ные продукты можно покупать в лю‑ бых количествах, правило Стандар‑ тизации на них не распространяется. Рисунок 5. Возможность изменения парка Платить за дополнительный продукт надо в течение месяца после его ус‑ вать продукты дальше. Поскольку ли‑ тановки. Цена на дополнительный про‑ цензия временная, то вы теряете пра‑ дукт фиксируется в момент его первого во использования этих продуктов и приобретения, и последующие закупки вам необходимо их удалить. Удале‑ этого же продукта будут производить‑ ние оформляется документально (об‑ ся по той же цене. Если приобретае‑ ратитесь в Информцентр Microsoft, вам те продукт не в годовщину соглаше‑ там подскажут, какой документ должен ния, то вы всё равно заплатите за год, быть оформлен). Второй вариант – продление со‑ пропорционального пересчета плате‑ жей не будет. Поэтому заказывать до‑ глашения на три года. Все как и рань‑ полнительные продукты имеет смысл ше, но продление будет по текущему прайс-листу. в годовщину соглашения. Третий вариант – выкуп. В качестве Правило «Стандартизации» рас‑ пространяется на все ПК, включая и те, выкупа вы платите 1.75 годового пла‑ на которых уже есть легальный про‑ тежа + плата за лицензии, добавлен‑ дукт. Но тут Microsoft дает вам следу‑ ные в течение последнего года. И вре‑ ющую скидку – Up-To-Date. Например, менная лицензия превращается в пос‑ у вас уже есть 30 ПК с Windows Vista тоянную. Business, которая является легаль‑ ной. Вы хотите приобрести Windows Проблема выбора Vista Business Upgrade, чтобы ли‑ Я постарался коротко «пробежаться» цензировать машины с Windows XP по основным понятиям корпоративно‑ Professional в количестве 50 штук. го лицензирования продуктов Microsoft. По правилам Open Value Subscription, Шесть программ, девять схем лицен‑ вы должны лицензировать Windows зирования… что же выбрать? Что касается коробочных продук‑ Vista Business Upgrade на все ПК ор‑ ганизации, т.е. на 80 штук. Но Microsoft тов, то этот вариант поставки самый даст вам скидку 50% на первый годо‑ дорогой. Он рассчитан на частных вой платеж за 30 машин с уже легаль‑ потребителей, так что рассматривать ной ОС. То есть в первый год вы запла‑ его как вариант корпоративного ли‑ тите за 50 ПК по полной, а за 30 ПК – цензирования не будем. Второй ва‑ со скидкой 50%. Дальнейшие платежи риант – OEM. Незаменим при покупке операционных систем настольных ПК, будут идти без скидок. «А что будет через три года?» – так как по другим программам лицен‑ спросите вы и будете правы. Согла‑ зирования вы можете приобрести толь‑ шение-то длится ровно три года, а ли‑ ко варианты Upgrade к уже купленной цензии временные. И тут перед ва‑ легальной ОС. Так что OEM – это хо‑ ми открываются три варианта разви‑ роший вариант покупки операцион‑ ной системы для пользовательских ПК. тия событий. Первый вариант можно назвать Что касается остального программно‑ «Всем спасибо, все свободны». Это го обеспечения, то здесь я вам реко‑ значит, что вы не хотите использо‑ мендую присмотреться к корпоратив‑
№3, март 2007
ПК в программе Open Value Subscription
ным программам с рассрочкой плате‑ жей. И опять – выбор программы бу‑ дет зависеть от ваших целей. Если ва‑ ша цель заключается в минимизации ежегодных платежей и вы не рассмат‑ риваете долгосрочные финансовые ас‑ пекты сделки, то вам подойдет Open Value Subscription (см. рис 1). Если проводить сравнительный анализ, затрат на программное обес‑ печение в перспективе 8 лет и более, то самым дешевым вариантом покуп‑ ки будет покупка по Open License без Software Assurance, но тогда вам при‑ дется в дальнейшем покупать новые версии продуктов. Если рассматривать программы лицензирования с рассроч‑ кой, то в перспективе 8 лет стоимость продуктов Open Value и Open Value Subscription сравняются, и подписка станет более дорогой (см. рис 2). Конечно, очень хотелось бы дать некий готовый рецепт покупки. Но всё решает конкретная ситуация. Пос‑ мотрите на рис. 3. Цена на Office Professional Plus может измениться от 640 $ до 143 $ из-за влияния ски‑ док, которые предоставляют разные программы лицензирования. Это боль‑ шая разница, но надо взвесить все со‑ ставляющие покупки. В ряде случаев на разные продукты нужно открывать разные соглашения. Что-то покупать по Open License, что-то по Open Value. Не стесняйтесь спрашивать и терзать вашего реселлера, получите у не‑ го итоговые таблицы цен продуктов в случае использования разных про‑ грамм лицензирования. Не забывайте о скидках. Хороший вариант вы всегда сможете найти. Удачи!
11
администрирование
Создаём VPN с ViPNet Сегодня все чаще приходится сталкиваться с настройкой безопасного удаленного доступа к корпоративным ресурсам для сотрудников, использующих различные способы подключения. От выбора инструмента для решения этой задачи часто зависит защищенность, надежность, удобство администрирования и использования ресурсов сети.
В
тых IP‑пакетов, проходящих через ин- Структура сети ViPNet терфейс, выходящий в открытую сеть Доступны три решения, позволяющие вроде Интернета. Для внутренних ин- организовать виртуальную сеть: ViPNet терфейсов могут быть использованы CUSTOM, ViPNet OFFICE и ViPNet более мягкие правила, разрешающие TUNNEL. Первое позволяет созданезашифрованные соединения опре- вать произвольные сети неограниченделенных типов. Реализован также ного масштаба и объединять в едиконтроль приложений, при обнаруже- ную защищенную виртуальную сеть нии сетевой активности того или ино- произвольное число локальных сетей го приложения пользователю будет вы- и рабочих станций. В качестве продан запрос на разрешение соединения граммы управления VPN-сетью в редля этого приложения. Обработка па- шении ViPNet CUSTOM используеткетов до того, как они будут переданы ся программа ViPNet Администратор. на транспортный уровень, позволяет Её облегченная версия ViPNet Менедобеспечить защиту IP-трафика любо- жер, применяемая в решении ViPNet го приложения, не нарушая привычно- OFFICE, позволяет легко создавать го порядка работы пользователя. Поэ- и изменять структуру защищенной сетому установка ViPNet поверх сущест- ти небольшого или среднего размера вующих решений не влияет на работу несколькими движениями мыши. Сасети и может быть выполнена без из- мое простое решение – ViPNet TUNNEL. менения настроек и структуры сущес- Оно предназначено для защиты соедитвующей сети. нения только между сетями, связанныПроект ViPNet Некоторые сторонние бизнес-при- ми друг с другом через Интернет. Технологии создания VPN, заложенные ложения (MS NetMeeting, VoxPhone, в продуктах и решениях ViPNet, разра- I n t e r n e t P h o n e, C o m p a q I n s i g h t VipNet Менеджер батываемых российской компанией Ин- Manager) могут быть вызваны ViPNet. Помимо конфигурирования сети и нафотекс (http://www.infotecs.ru), позволя- С абонентом, выбранным из окна стройки различных вариантов взаимоют организовать безопасный обмен за- VPN-клиента, соединение будет уста- действия, задачей ViPNet Менеджера щищенной информацией как в локаль- новлено автоматически. Весь трафик является формирование и обновление ных, так и в глобальных сетях незави- при этом принудительно шифруется. наборов ключей, паролей пользоватесимо от способа (модем, xDSL, ISDN, Кроме того, в составе ViPNet – целый лей и администраторов, требующихGPRS, Ethernet, WiFi и прочие), мес- набор необходимых в повседневной ра- ся при установке и работе узлов сета подключения компьютеров и типа боте защищенных бизнес-приложений, ти ViPNet, отслеживание возможных выделяемого им IP-адреса (см. рису- за которые не нужно платить дополни- конфликтов, отзыв старых или скомпнок). Обеспечивается работа из-за ус- тельно: защищенная служба обмена рометированных сертификатов электройств, реализующих трансляцию се- сообщениями, почтовая служба «Де- тронно-цифровой подписи. тевых адресов (NAT). Одна из главных ловая почта», файловый обмен и вебВиртуальная сеть ViPNet строится особенностей – возможность созда- ссылка, позволяющая получить до- путем установки на компьютеры одния зашифрованного соединения меж- ступ к корпоративным информацион- ного из двух вариантов программного ду клиентскими компьютерами напря- ным ресурсам, построенным на осно- обеспечения: ViPNet Координатора или ве веб-технологий. Для отправки фай- ViPNet Клиента. ViPNet Клиент – самый мую, минуя центральный узел. Дополнительно входящие в со- ла или письма адресату можно исполь- нижний элемент в иерархии, обеспечистав ViPNet межсетевой экран и сис- зовать контекстное меню Проводника. вает защиту и включение в VPN отдетема обнаружения атак обеспечиваПродукт коммерческий, cтоимость льных компьютеров, в терминологии ют фильтрацию неразрешенного тра- лицензии зависит от количества внут- ViPNet – Абонентских Пунктов (АП). фика и блокирование большинства из- ренних интерфейсов и внутренних В качестве последних могут выстувестных видов атак. Например, можно IP-адресов клиентов, а также версии пать как рабочие станции пользователей, так и серверы. Применяемое при запретить прохождение всех откры- продукта. случае подк лючения к кор поративным р е су р с ам уд аленных клиентов для защиты информации применяются виртуальные частные сети (VPN), но большинство сегодняшних решений концентрируются на защите трафика между удаленным пользователем и локальной сетью или между сетями. При таком решении удаленные пользователи для обмена информацией между собой вынуждены использовать ресурсы центральной сети, что не всегда рационально, так как ведет к увеличению необоснованной нагрузки на сеть и повышению стоимости решения. И когда число удаленных и мобильных пользователей начинает превышать некоторый предел, начинаешь задумываться о правильности выбранного инструмента.
12
на правах рекламы этом программное обеспечение выполняет функции сетевого экрана, шифрования трафика, а также сервисные функции, о которых говорилось раннее. Поэтому при установке на компьютер одного из компонентов ViPNet использовать другой персональный брандмауэр не нужно. Координатор – это Клиент с дополнительными возможностями. Компьютер с установленным ViPNet Координатором используется на границах разделения локальных сетей, обеспечивая включение в сеть VPN компьютеров, находящихся в этих сетях, и выполняя функции межсетевого экрана. Варианты соединения Клиентов и Координаторов задаются при построении VPN-сети с помощью ViPNet Менеджера. При установке предлагается выбрать один из трех вариантов: n связать все сетевые узлы – все узлы сети ViPNet будут связаны между собой; n связать все абонентские пункты каждого Координатора – АП, привязанные к «своему» Координатору, могут иметь связи только с Координатором и другими АП своего координатора; n связать каждый абонентский пункт со своим Координатором – каждый АП будет иметь связь только со своим Координатором. Координаторы всегда будут иметь связи между собой. В дальнейшем можно более гибко распределить возможности АП и Координаторов по созданию защищенных туннелей, перенося клиентов к другому Координатору, создавая и удаляя узлы, задавая связи вплоть до соединений компьютер-компьютер. Компьютеры, на которых по тем или иным причинам невозможна установка клиентской части, могут быть защищены на маршруте Координатор-Координатор, а при наличии в конечной точке необходимого ПО и до нее. Сервер IP-адресов, входящий в состав Координатора, хранит информацию о текущем состоянии других узлов и их текущих IP‑адресах. Наличие таких данных позволяет любому другому компьютеру быстро найти нужный узел. Все программное обеспечение ViPNet вы можете установить на компьютеры под управлением ОС Windows 2000/ XP/2003, для Координатора – и под ОС Linux.
Шифрование в сети ViPNet В решениях VPN традиционно используется один из двух методов шифрования. Асимметричные алгоритмы популярны в первую очередь благодаря удобству при распределении ключей, но надежность асимметричных ключей в отличие от симметричных до сих пор никем строго не доказана. Недостатком последних является необходимость в первоначальной безопасной передаче ключей корреспондентскому компьютеру. Разработчики ViPNet попытались взять лучшее, что есть у обеих технологий, и максимально уменьшить имеющиеся недостатки, и в ViPNet используется ключевая структура, в которой объединены оба принципа распределения ключей. Базовой составляющей является подсистема централизованного управления симметричной ключевой структурой, обеспечивающая высокий уровень безопасности функционирования сети. Система открытого распределения ключей – дополнительная и функционирует под защитой сим-
№3, март 2007
Структура сети VipNet
метричной ключевой структуры, в связи с чем присущие ей проблемы безопасности становятся неактуальными. Криптографическое ядро системы ViPNet по умолчанию использует алгоритм с длиной ключа 256 бит. Но есть и другие алгоритмы, которые могут быть свободно выбраны самим пользователем. Длина открытого ключа для асимметричной ключевой системы равна 1024 бит (ГОСТ Р 34.10‑2001). Технологии ViPNet в составе продукта ViPNet Custom прошли сертификацию в ФСБ и ФСТЭК и используются крупными заказчиками, среди которых Российские железные дороги, Пенсионный фонд РФ и другие. Первичные ключевые наборы для каждого сетевого узла генерируются при установке ViPNet Менеджера. При установке ПО на клиентские компьютеры или на Координаторы необходимио скопировать соответствующий файл с ключевым набором на сменный носитель, ввести пароль и указать на местонахождение этого файла. Пароли пользователя формируются автоматически на основе оригинального механизма парольных фраз, облегчающих запоминание паролей. При наличии схемы будущей сети установка и настройка ViPNet OFFICE (TUNNEL) очень проста. Первым устанавливается Менеджер, а затем Клиенты и Координаторы. При установке Менеджера создается структура будущей сети, которую затем можно будет скорректировать. Система будет работать сразу после установки в настройках по умолчанию. При создании сложной разветвленной виртуальной сети VPN, в которой защищенность циркулирующей информации стоит на первом месте, стоит присмотреться к программным продуктам ViPNet. В них сочетаются все необходимые функции по защите информации и управлению доступом к различным сетевым ресурсам. Набор защищенных бизнес-приложений делает их использование для конечного пользователя еще более удобным и понятным.
Сергей Яремчук
13
администрирование
Строим сетевую инфраструктуру на основе VMware Server
Алексей Бережной Современные требования к IT-структуре, особенно такие, как быстрая переносимость сервисов с одного сервера на другой, упрощение резервного копирования, компактность, а также безопасность и делегируемость полномочий, порой не являются простыми для системного администратора. На помощь приходит VMware Server. 14
администрирование
В
данной статье пойдет речь об интересной методике, когда часть серверов размещается на виртуальных машинах. В класси‑ ческом представлении при построе‑ нии IT‑структуры каждому серверу вы‑ деляется отдельный компьютер. Иног‑ да в целях экономии затрат на обору‑ дование некоторые приложения раз‑ мещают на одном сервере, что быва‑ ет не всегда оправдано с точки зрения обеспечения безопасности и отказоус‑ тойчивости. Довольно часто встречаю‑ щийся пример подобной «экономии» – размещение на файловом сервере контроллера домена Active Directory. Но на сегодняшний день системы вир‑ туализации достигли такого уровня, когда имеет смысл отойти от класси‑ ческой схемы и разместить соответс‑ твующие серверы и приложения на от‑ дельных виртуальных машинах в со‑ ставе одного физического сервера.
Преимущество метода
Рисунок 1. Окно выбора интерфейса для создания «моста» виртуальной машины
В случае размещения на одном
n Упрощается процесс резервно- физическом и множестве виртуаль‑ го копирования и восстановления из резервной копии в связи с тем, что серверы служб получают независимость от железа, на кото‑ ром работают. n На одном физическом компьютере можно разместить несовместимые между собой приложения. Достаточно лишь выделить каждому из них свой виртуальный сервер. n На одном компьютере возможно использование серверов под управлением различных операционных систем, например, Windows и FreeBSD. n Виртуальные машины можно легко перемещать между физическими серверами. Особенно эта возможность полезна при модерни‑ зации аппаратной части системы, а также для лучшего распределения нагрузки на физические серверы. n Накладные расходы на поддержание аппаратного обеспечения виртуальной машины как таковые отсутствуют. Не нужно ме‑ нять кулеры на процессорах, ремон‑ тировать вышедший из строя блок питания и т. д. и т. п. С другой сторо‑ ны, повышается требовательность к аппаратным ресурсам (см. раздел «Минусы метода»).
№3, март 2007
n Значительно упрощается про-
цесс делегирования полномочий. ных серверов различных операцион‑ Можно передать права на адми‑ ных систем и приложений мы выигры‑ нистрирование виртуальным сер‑ ваем следующее: вером доверенному лицу, не пере‑ живая о пересечении полномочий n Оборудование для системы запри управлении процессами, раз‑ нимает меньше места в стойке. Зачем устанавливать в стойку 3-4 мещенными на других серверах. маломощных сервера, если вмес‑ то них можно установить один сер‑ Минусы метода вер, который будет выполнять те же В случае если виртуальные серве‑ самые функции. Особенно это кри‑ ры размещаются на платформе фи‑ тично, если оборудование разме‑ зического сервера под управлением щается на арендуемой площадке Windows, возникает необходимость провайдера, или не хватает места покупки соответствующего количес‑ в стойке. Для виртуальных машин, тва дополнительных лицензий, ведь размещенных на одном сервере, с точки зрения лицензионной поли‑ требуется меньше портов на KVM- тики нет разницы, на каком сервере switch (Keyboard-Video-Mouse). устанавливается продукт – програм‑ n Добавляются дополнительные мном или виртуальном. Правда, этих возможноcти администрирова- затрат удается избежать, если исполь‑ ния. Например, появляется воз‑ зовать VMware на базе Linux. Кро‑ можность при зависании прило‑ ме того, при увеличении числа вирту‑ жения не только перезапустить альных серверов на одном физичес‑ нужный процесс, а перезагрузить ком сервере относительные затраты виртуальный сервер целиком, не на «лишние» лицензии уменьшаются влияя на работу приложений, раз‑ пропорционально количеству вирту‑ мещенных на других виртуальных альных серверов. В целом, описание разнообраз‑ серверах. n Улучшается система безопас- ных аспектов лицензирования выхо‑ ности. Даже при успешном несан‑ дит за рамки данной статьи. Всем, ко‑ кционированном проникновении по го заинтересует данный вопрос, реко‑ сети на один виртуальный сервер, мендую прочесть цикл статей Дмитрия другие виртуальные серверы оста‑ Бутянова «Как купить ПО от Microsoft?» в журнале «Системный администра‑ ются нетронутыми.
15
администрирование цию: AMD Athlon 2600+, 1 Гб RAM, HDD UDMA133, 100 Мб/с LAN. Несмотря на то что оборудование весьма скром‑ ное, оно прекрасно справится с постав‑ ленной тестовой задачей. Кроме того, мы будем использовать другой компьютер в качестве рабочей станции, вводимой в домен. Так как конфигурация этой машины не игра‑ ет существенной роли, ее лучше опус‑ тить. Отметим только, что на данном компьютере будет установлена вер‑ сия Windows XP Pro. Я специально не буду касаться всех деталей установки. О програм‑ мных продуктах Windows 2003 Server и VMware написано достаточно много статей и книг, чтобы еще раз подроб‑ но описывать все аспекты установки и настройки в этой статье.
Рисунок 2. Виртуальный интерфейс находится в нерабочем состоянии вследствие того, что физический интерфейс, используемый в качестве bridge, также не подключен
тор», выпуски: №12 за 2006 г. №1 за 2007 г. и в этом номере на стр. 6-11. Второй минус – снижение быстро‑ действия при использовании системы виртуальных машин на VMware Server. В частности это касается объема опе‑ ративной памяти, скорости обмена дисковой подсистемы и т. д. Но раз‑ витие аппаратной части компьютер‑ ной техники происходит достаточно ин‑ тенсивно (вспоминаем законы Мура), и поэтому деньги, потраченные на по‑ купку дополнительных модулей памя‑ ти или более быстрого RAID-контрол‑ лера уже не кажутся баснословными затратами на фоне повышения отка‑ зоустойчивости, безопасности и дру‑ гих важных характеристик.
После чего проимитируем сбой и восстановим наши виртуальные ма‑ шины с контроллером домена и серве‑ ром FreeBSD из резервной копии и поп‑ робуем зарегистрироваться на конт‑ роллере домена с рабочей станции. Компьютер, на котором будет ус‑ танавливаться система виртуальных машин, имеет следующую конфигура‑
Установка необходимого ПО Скачаем с сайта http://www.vmware.com свежую версию VMware Server. Потом необходимо зарегистрироваться. Пос‑ ле чего необходимо заполнить форму по адресу http://register.vmware.com/ content/registration.html, чтобы получить серийный номер. Установим на тестовый компьютер Windows 2003 Server. В данном слу‑ чае устанавливаем Standard Edition, но система VMware будет неплохо рабо‑
Описание примера Поскольку утверждения, не подкреп‑ ленные практикой, недорогого стоят, то нужно провести некий показатель‑ ный эксперимент, чтобы показать всю простоту данного решения. Мы запус‑ тим систему виртуальных машин на од‑ ном компьютере и разместим различ‑ ные операционные системы: Windows 2003 Server и FreeBSD на виртуальных серверах. На виртуальной Windowsмашине разместим контроллер доме‑ на Active Directory. Потом установим на другую машину FreeBSD и настро‑ им на ней сетевой интерфейс.
16
Рисунок 3. Виртуальный компьютер в качестве контроллера домена с запущенной оснасткой «Active Directory Users and Computers»
администрирование тать на любой другой версии Windows 2003 Server. После установки операционной системы и необходимых драйверов устанавливаем VMware Server. Уста‑ новка данного программного продук‑ та практически ничем не отличается от других.
Создание виртуальной машины Windows 2003 Server После установки операционной сис‑ темы и VMware Server создаем вирту‑ альную машину Windows 2003 Server Standard Edition. В окне «Network Type» нужно установить переключатель на «Use bridged networking». Теперь внимание, важная деталь. Если на компьютере несколько сете‑ вых интерфейсов, то после создания виртуальной машины необходимо ука‑ зать, какой именно интерфейс нуж‑ но использовать в качестве «моста» для виртуальной машины (см. рис. 1). Устанавливаем соответствующую операционную систему. В качестве ус‑ тановочного CD-ROM можно использо‑ вать физическое устройство, а мож‑ но выбрать ISO-образ диска (который предварительно нужно создать). Настраиваем и тестируем наше виртуальное «оборудование», в част‑ ности – сетевой интерфейс. Мы будем использовать для всех компьютеров IP-адреса одной подсети, поэтому при правильных настройках можно прове‑ рить при помощи команды ping доступ к виртуальной машине с реального ин‑ терфейса и наоборот. Одно маленькое замечание – ес‑ ли сетевой интерфейс не подключен к сети (проще говоря, находится в со‑ стоянии down), то и виртуальный сете‑ вой интерфейс тоже не будет работать. В этом случае вы получите соответс‑ твующее сообщение (см. рис. 2).
Создание контроллера домена Active Directory на базе виртуальной машины После установки на виртуальную ма‑ шину Windows 2003 Server поднима‑ ем на ней контроллер домена Active Directory. Процедура эта ничем не отли‑ чается от обычной стандартной проце‑ дуры установки контроллера на физи‑ ческом компьютере (см. рис. 3).
№3, март 2007
Рисунок 4. Настройки автостарта виртуальной машины
Рисунок 5. Настройка интерфейса посредством программы sysinstall в окне виртуальной машины FreeBSD
Теперь осталось ввести в получен‑ ный тестовый домен рабочую станцию. Как видите, (см. рис. 3) данный экспе‑ римент удался, и рабочая станция бла‑ гополучно стала членом домена. Теперь необходимо установить не‑ обходимые параметры, чтобы вирту‑ альная машина с нашим контроллером домена автоматически запускалась при старте системы на физическом
сервере. Иначе мы рискуем при несан‑ кционированной перезагрузке серве‑ ра, например, при сбое электропита‑ ния, оставить сеть без данного конт‑ роллера домена. Для этого в окне настроек вир‑ туальной машины «Virtual Machine settings» во вкладке «Options» уста‑ новим параметры автоматического запуска: «On host start up → Power on
17
администрирование
Рисунок 6. Сообщение об измененном идентификаторе с предложением выполнить необходимые действия
virtual machine» и «On host shutdown → Power off virtual machine» (см. рис. 4). Кроме этого, необходимо просле‑ дить, чтобы службы VMware Server за‑ пускались автоматически.
Создание и установка виртуальной машины FreeBSD Ну здесь все просто. Как обычно, вна‑ чале создаем виртуальную маши‑ ну. Примечательно, что при создании виртуальной машины соответствую‑ щий пункт меню нужно искать в ок‑ не «Select a Guest Operation System», переставив переключатель в положе‑ ние «Other». После создания виртуальной ма‑ шины устанавливаем на нее соответс‑ твующую OS. Совет: в данном случае особенно актуально использовать для вирту‑ альной машины в качестве CD_ROM ISO-образ первого диска, скачанного с сайта http://www.freebsd.org. Во-пер‑ вых, потому что не нужно записывать инсталляционный диск из данного об‑ раза, а во-вторых, система так уста‑ навливается быстрее. Создав виртуальную машину и ус‑ тановив на ней операционную систему, мы настроим сетевой интерфейс. Пос‑ ле этого мы будем считать свою зада‑ чу выполненной.
18
В дальнейшем на этом компьютере можно будет создать, к примеру, поч‑ товый сервер (см. рис. 5). Теперь осталось установить пара‑ метры автоматического запуска вир‑ туальной машины аналогично описан‑ ным для виртуальной машины с конт‑ роллером домена.
Искусственный крах и восстановление из резервной копии И вот начинается самое интересное. Мы уничтожим наш созданный сер‑ вер вместе с виртуальной машиной – контроллером домена. После чего перестановим операционную систе‑ му и VMware Server, восстановим из резервной копии нашу виртуальную машину и попытаемся зарегистриро‑ ваться на контроллере домена с ра‑ бочей станции, принадлежащей это‑ му домену. Примечательно, что резервную ко‑ пию виртуальной машины можно со‑ здать, запустив на физическом сер‑ вере программу ntbackup или при по‑ мощи любого другого инструмента ре‑ зервного копирования. В качестве метода «уничтожения» сервера я просто отформатировал диск C. После этого вновь переставил Windows 2003 Server и VMware Server. Для «чистоты» эксперимента я вос‑
становил виртуальные машины в дру‑ гую папку. После восстановления из резерв‑ ной копии и попытки открыть восста‑ новленную виртуальную машину я по‑ лучил сообщение, говорящее о том, что у виртуальной машины изменил‑ ся уникальный идентификатор и пред‑ ложение создать новый или сохранить старый идентификатор. Я выбрал «со‑ хранить старый» – Keep (см. рис. 6). Вновь запущенная система про‑ должила отлично работать. Я спокой‑ но зарегистрировался в Active Directory с рабочей станции и получил доступ ко всем ресурсам, в том числе к пап‑ кам, расположенным на виртуальном сервере. Время восстановления 10 Гб вир‑ туального раздела заняло 33 минуты. Для ситуации, когда подразумевает‑ ся полный выход контроллера доме‑ на Active Directory из строя, это не са‑ мый плохой вариант. При этом следу‑ ет учесть, что данная процедура вос‑ становления виртуального сервера с контроллером домена требует гораз‑ до более скромной квалификации сис‑ темного администратора (достаточно лишь обладать основными навыками работы с VMware), чем при восстанов‑ лении контроллера домена стандарт‑ ными средствами. Как видим, все реализуется не прос‑ то, а очень просто. Кто хоть раз восста‑ навливал контроллер домена из резер‑ вной копии на абсолютно новом физи‑ ческом сервере классическими средс‑ твами Microsoft (особенно после вы‑ хода из строя старого), тот знает, на‑ сколько это серьезная задача.
Заключение Как видите из приведенных примеров, система виртуальных машин прекрас‑ но подходит для создания элементов сетевой инфраструктуры. Особенно это актуально для серверов, критич‑ ных к процедурам восстановления из резервной копии и переходу на но‑ вую аппаратную конфигурацию, на‑ пример, контроллеры домена, серве‑ ры на базе систем UNIX и т. п. Самое лучшее – это прочесть до‑ кументацию от производителя, раз‑ мещенную на http://www.vmware.com/ support/pubs. Здесь вы найдете много интересного, в том числе и выходяще‑ го за рамки данной статьи.
администрирование
VirtualBox – виртуализация под GPL
Валентин Синицын 15 января 2007 года вполне может войти в историю свободного ПО как день, когда у VMware Workstation впервые появился достойный открытый аналог. Насколько полной вышла эта аналогия? Попробуем разобраться.
С
итуацию, сложившуюся к на- тактику – демпинг. Приобретенный и офисных пакетов, был асимметричстоящему моменту на рынке у сторонней фирмы и доработанный ным, но стратегически правильным. средств виртуализации, иначе самой компанией Microsoft Virtual PC «Бесплатный как пиво» VMware Player как гонкой не назовешь. А началось был не просто дешев – он вообще ни- быстро стал стандартом де-факто для все с того, что на территорию, практи- чего не стоил. Ответ VMware, которая распространения appliances – обрачески безраздельно принадлежавшую по понятным причинам не могла ком- зов дисковых накопителей с предусVMware, Inc. вторглась вездесущая пенсировать затраты на производс- тановленными и настроенными систекорпорация Microsoft, использовав тво одноименной линейки продуктов мами: серверами, средствами разрас успехом опробованную на Netscape за счет продаж операционных систем ботки и др. [7]. Несмотря на отведен-
20
администрирование ную ему роль проигрывателя, VMware Player мог худо-бедно использоваться как замена Workstation – дескрипторы виртуальных машин и дисковые образы легко генерировались при помощи сервисов вроде www.easyvmx.com. В то время, пока гиганты активно боролись за место под солнцем, мир свободного ПО неспешно строил «флот» пара-виртуализаторов, флагманом которого стал Xen [1]. И хотя появление технологий аппаратной виртуализации (Intel VT и AMD SVM) позволило запускать в домене Xen немодифицированные версии Windows XP, свободных полных вирт уализаторов наподобие VMware или Parallels Workstation по-прежнему не существовало. Ситуация изменилась 15 января VirtualBox задействует сразу два окна: 2007 года. В этот день немецкая комгостевой системы пания InnoTek (имеющая, судя по информации на сайте, офисы и в Рос- Выбор между ними определяется как сии) объявила о выпуске VirtualBox техническими требованиями, предъOpen Source Edition (OSE) – инстру- являемыми вами к виртуализатору, мента полной виртуализации для плат- так и условиями, в которых его предформы x86, распространяющегося по полагается использовать. Распролицензии GPL [2]. Спустя еще три не- странение VirtualBox регулируется усдели, 6 февраля, был открыт QEMU ловиями VirtualBox Personal Use and Accelerator Module – kqemu, «позволяю- Evaluation License (PUEL), согласно кощий PC-эмулятору QEMU выполняться торой вы можете бесплатно использозначительно быстрее при эмуляции PC вать программу в оценочных и личных на x86-хосте» [4]. Впрочем, я не скло- целях. В последнем случае не исклюнен считать, что сейчас в мире Open чается и коммерческое использование, Source существует два полных вир- и установка на нескольких компьютетуализатора, ибо VirtualBox и QEMU рах – важно, чтобы с копией програмподходят к решению проблемы с про- мы работали только вы и никто друтивоположных концов: VirtualBox – гой, поэтому администратору, желаюэто в первую очередь виртуализатор щему установить VirtualBox в рамках с динамической трансляцией и прочи- целой организации, придется обрами «прелестями», переключающий- титься в InnoTek и обсудить приобреся в режим эмуляции только в случае тение коммерческой лицензии (интекрайней необходимости, тогда как ресно, что о ее стоимости ничего не соQEMU – это эмулятор, имеющий не- общается – вероятно, она будет опреобязательный модуль полной вирту- деляться индивидуально). VirtualBox ализации. Оба варианта имеют свои OSE свободен от подобных юридичесплюсы и минусы, но сейчас мы сфоку- ких ограничений, но зато более ограничен в техническом смысле: он не сосируемся на VirtualBox. держит сервера удаленного доступа к рабочему столу гостевой системы, VirtualBox не поддерживает USB и разделяемых для пользователя Для начала посмотрим на VirtualBox папок (Shared Folders, виртуальных усглазами человека, который собирает- тройств, выглядящих в гостевой сисся использовать его для обеспечения теме как обычный каталог и позволяпараллельной работы нескольких ОС. ющих обмениваться файлами с хостВ разделе Downloads на сайте проек- системой) и не включает в себя инита [2] предлагаются к загрузке две ре- циатора iSCSI – хотя разработчики дакции: закрытая VirtualBox и уже упо- не исключают, что со временем неминавшаяся открытая VirtualBox OSE. которые из этих функций могут поя-
№3, март 2007
одно – основное, второе – «дисплей»
виться и в редакции OSE. Таким образом, обмен данными с внешним миром из VirtualBox OSE затруднен, но возможен (например, через общий сетевой ресурс). Зато OSE-редакция уже вошла в репозитории некоторых дистрибутивов, а нидерландская группа пользователей Linux даже выпустила специализированный LiveCD/USB с предустановленным и настроенным VirtualBox OSE – MCNLive «VirtualCity» – на базе Mandriva Linux [5]. Перейдем к установке программы. В качестве хост-систем VirtualBox поддерживает Windows (2000 SP3+/XP/ Server 2003) и Linux 2.4 или 2.6 (в настоящее время ведется работа над версией для Mac OS X). Для платформ Microsoft продукт распространяется в формате MSI, пользователи Linux могут выбирать между deb-пакетами для Ubuntu 6.06-6.10/Debian 3.1-4.0 (вот она, популярность – раньше сторонние поставщики старались выпустить в первую очередь RPM для Red Hat/SUSE; правда, в версии 1.3.6, вышедшей во время подготовки статьи к печати, таки добавился RPM для openSUSE 10.2) и универсальным установщиком в виде сценария sh. Все вышесказанное не касается редакции OSE, которая распространяется только в исходных текстах (а до версии 1.3.4 была доступна только через SVN). Неприятным фактом является также невозможность работы любой из редакций VirtualBox в 64‑битном окружении
21
администрирование
Диалог настроек виртуальной машины в VirtualBox обширен, но кое-что все равно приходится делать из консоли
(и, как следствие, с 64-битными «гостевыми» ОС), но есть надежда, что это препятствие будет в скором времени устранено. Установка, как правило, не вызывает затруднений. Пользователям Linux рекомендуется иметь исходные тексты ядра, чтобы не возникало проблем со сборкой модулей. VirtualBox официально поддерживает Debian GNU/Linux и Ubuntu, Fedora Core и RHEL, SUSE Linux, а также Gentoo. Если вы используете другой дистрибутив, вам придется вручную позаботиться о том, чтобы модуль vboxdrv автоматически загружался при старте системы. Необходимо также добавить пользователя, от имени которого вы работаете в системе, в группу vboxusers. После этого следует выйти из системы и зарегистрироваться повторно или перезагрузиться. Основной пользовательский интерфейс VirtualBox построен с использованием библиотеки Qt и запускается (что неудивительно) командой VirtualBox. Помимо этого, можно использовать упрощенную версию – VBoxSDL. Для управления параметрами виртуальной машины используется как GUI, так и всеобъемлющая утилита командной строки VBoxManage, предоставляющая доступ даже к тем настройкам, для которых еще не готов графический конфигуратор (самый яркий пример – разделяемые папки, способ подключить один из каталогов хост-системы в виде диска гостевой системы). Все эти инструменты подробно описаны в руководстве пользователя, которое поставляется в формате PDF вместе с VirtualBox. Помимо увесистого руководства, дистрибутив VirtualBox включает в себя ISO-образ с расширениями VirtualBox Guest Additions, повышающими степень интеграции гостевой и хост-системы. В настоящее время Guest Additions доступны для Windows и для Linux, а в число их функций входит: автоматический «захват» курсора мыши (при его помещении курсора в окно), поддержка нестандартных видеорежимов, синхронизация времени с хост-системой, те са-
22
мые «разделяемые папки» и автовход для «гостей» семейства Windows. Внимательный читатель может возразить, что автовход (autologon) прекрасно поддерживается всеми современными ОС безо всяких сторонних модулей. В данном случае имеет место «конфликт терминов»: под автовходом (Automated Windows Guest Logons) в VirtualBox Guest Additions понимается не регистрация без запроса пароля, а автоматическое использование в гостевой системе реквизитов (имени пользователя, пароля и имени домена), предоставленных хост-системой – см. раздел 8.2 в руководстве пользователя VirtualBox. Установка данных расширений выглядит как инсталляция дополнительного ПО и драйверов в гостевой системе. При этом, если «гость» не относится к числу официально поддерживаемых (это особенно актуально для Linux, где круг «одобренных» дистрибутивов ограничен Fedora Core/RHEL, SUSE и Ubuntu), вам может опять же потребоваться обеспечить загрузку соответствующих драйверов гостевой ОС вручную. Какое «оборудование» предоставляет VirtualBox в распоряжение гостевой системы? Ниже приведен вывод утилиты lscpi из состава Slackware Linux 11, запущенного в VirtualBox 1.3.4 под управлением Windows XP: 00:00.0 00:01.0 00:01.1 00:02.0 00:03.0 00:04.0 00:05.0 00:06.0 00:07.0
Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] VGA compatible controller: Unknown device 80ee:beef Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 30) System peripheral: Unknown device 80ee:cafe Multimedia audio controller: Intel Corporation 82801AA AC’97 Audio (rev 01) USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
Весь набор переферии неплохо поддерживается «из коробки» всеми популярными ОС – кроме Windows Vista, для которой необходимо загрузить драйвер сетевой карты AMD PCNet32 с сайта производителя. Таким образом, VirtualBox успешно справляется с «джентльменским минимумом» эмулируемых устройств: жестким диском (используется собственный формат VDI, включающий в себя образы фиксированного размера и динамически растущие по мере необходимости; образы VMware/VMDK пока не поддерживаются), дисководом и приводом CD-ROM, в роли которых может выступать как реальное устройство, так и файл-образ, VESA-совместимой видеокартой (используется модифицированный LGPL VGA BIOS, разработанный проектом Bochs), AC-97‑совместимой звуковой платой (вывод звука в хост-системе может осуществляться через ALSA/OSS, Windows Multimedia или Nullдрайвер), сетевой картой и пр. Работа с сетью в VirtualBox возможна в двух режимах: NAT (гостевая ОС оказывается как бы за маршрутизатором с трансляцией адресов, IP-адрес назначается встроенным в VirtualBox DHCP-сервером) и Host (сетевой интерфейс «гостя» добавляется в хост-систему как еще одна сетевая карта). Отдельного упоминания заслуживает встроенный в VirtualBox VRDP-сервер. С его помощью можно легко получить доступ к виртуальной машине, запущенной на другом физическом компьютере. Используемый им протокол VRDP (VirtualBox Remote Desktop Protocol) обратно-совместим с Microsoft RDP и отличается в основном возможностью сетевого доступа к USB-устройствам. При этом VRDP-
администрирование сервер можно запустить даже на компьютере, вообще не имеющем X, Qt, SDL и прочих зависимостей графического интерфейса VirtualBox. Для этого используется «безголовый» (headless) сервер VBoxVRDP, весь вывод которого доступен только по сети, но не на локальном компьютере (конечно, за исключением случаев, когда VRDP-сервер и VRDP-клиент общаются по сети, будучи фактически запущенными на одной и той же машине).
VirtualBox для хакера
VirtualBox – «за» и «против» Попробуйте VirtualBox, если: n Вам часто приходится создавать виртуальные машины самостоятельно. n Вы часто изменяете параметры виртуальных машин, с которыми работаете. n Поддержка 64-битных операционных систем не является для вас критичной. n Вы четко следуете генеральной линии Фонда Свободного ПО и не хотите дер-
Как уже отмечалось, VirtualBox – чем InnoTek понадобился такой тяжеэто не только средство виртуализа- ловес, как Mozilla? Все дело в компоции, но и открытый проект, в кото- нентной среде – XPCOM – и нежелании ром, при желании, можно поучаство- разработчиков Mozilla разбивать свой вать. Список «вакансий», то есть за- код на независимые пакеты. VirtualBox имеет глубоко прорабодач, хорошо подходящих для сторонних разработчиков, находится по ад- танную модульную архитектуру, реаресу: http://www.virtualbox.org/wiki/ лизуемые средствами Microsoft COM (в Windows) или XPCOM (в Linux). УпоSuggestions_for_Contributions [6]. Несколько слов о юридической сто- мянутые выше пользовательские инроне вопроса. Поскольку VirtualBox терфейсы от VBoxManage до VirtualBox фактически использует двойное ли- являются просто COM-клиентами, цензирование, перед включением раз- а основной функционал программы работанного вами патча в основное де- реализован в виде inproc-сервера рево исходного кода необходимо под- VBoxVMM.dll в Windows или VBoxVMM. писать специальное соглашение, пере- so в Linux. Набор экспортируемых им дающее InnoTek права на его исполь- интерфейсов (коих существует велизование в коммерческой версии. Аль- кое множество) является основной тернативный вариант – выпустить код частью VirtualBox SDK, а их подробное описание также входит в дистрипо лицензии MIT. Рассмотрим VirtualBox с точки зре- бутив VirtualBox. SDK (вместе с примения программиста. Проект активно рами его использования) можно найпользуется другими открытыми раз- ти в каталоге $VBOXINSTALLDIR/sdk. работками, в первую очередь QEMU Для читателей, знакомых с технолои Mozilla. Следует особенно подчер- гией XPCOM, отмечу, что ее реализакнуть, что VirtualBox не базируется ция в VirtualBox не содержит привязки на QEMU в том смысле, что не являет- к языкам программирования сценарися его расширенной/доработанной вер- ев вроде Pyhton или JavaScript, поэтому сией. «Сердце» программы – монитор C++ остается единственно возможным виртуальных машин – авторская раз- выбором. Изменится ли эта ситуация работка компании InnoTek. Из QEMU же в будущем, пока сказать сложно. Модульная архитектура и ясные инбыл позаимствован эмулятор, который выполняет код, почему-либо не под- терфейсы VirtualBox позволяют расдающийся динамической трансляции ширять программу, не особенно заду(например, приложения, работающие мываясь о тонкостях процесса виртув реальном режиме). Такой режим ра- ализации, а открытая природа проекботы, естественно, является «крайней та позволяет надеяться на появление мерой» – программа стремится выпол- подобных расширений в не самом отнять инструкции на реальном процес- даленном будущем. Особенно интересными выглядят «мосты» между соре всюду, где это возможно. Использование QEMU не вызыва- VirtualBox Main API и D-BUS или Mono. ет вопросов – в конце концов львиная доля средств виртуализации так или Заключение иначе применяет libqemu для эмуля- Мы рассмотрели VirtualBox как снации различного оборудования. Но за- ружи, так и изнутри, но один важный
№3, март 2007
жать в своей системе проприетарный код. VirtualBox вряд ли будет для вас наилучшим решением, если: n Большая часть виртуальных машин, с которыми вам приходится рабо тать, – это готовые appliances в формате VMware Player. n Вы активно используете 64-битные системы, или ваша основная рабочая ОС является 64-битной.
вопрос – качество продукта – так и остался неосвещенным. С сожалением должен констатировать, что именно он не дает поставить программе твердую пятерку. Несмотря на общее хорошее впечатление и разумную скорость работы (я сознательно не привожу каких-либо численных характеристик, ибо сравнительное тестирование производительности различных виртуализаторов – задача сложная и неблагодарная), VirtualBox несколько «сыроват». Иногда оказывается невозможным выполнить простое действие, например, изменить разрешение экрана гостевой ОС стандартными средствами X Window System. Я не хочу сказать, что VirtualBox в своей нынешней форме непригоден к промышленному применению, но будьте готовы к сюрпризам. Проект динамично развивается – в версии 1.3.4, вышедшей спустя месяц после первого общедоступного релиза – 1.3.2, было исправлено около 800 ошибок и недочетов, поэтому можно ожидать, что через некоторое время все основные шероховатости будут устранены. Не забывайте только высылать отчеты об ошибках разработчикам! 1. XenSource – www.xensource.com. 2. VirtualBox – www.virtualbox.org. 3. QEMU – http://fabrice.bellard.free.fr/ qemu. 4. QEMU Accelerator User Documentation – ht t p: // fa b r i c e.b e l l a r d.f re e.f r/q e m u / kqemu‑doc.html. 5. MCNLive – http://www.mcnlive.org. 6. Список задач для сторонних участников – http://www.virtualbox.org/wiki/ Suggestions_for_Contributions. 7. Virtual Appliance Marketplace – http:// www.vmware.com/vmtn/appliances.
23
администрирование
Система контроля версий RCS на службе сисадмина
Сергей Супрунов Отслеживание настроек операционной системы, особенно если речь идёт о «типовых» конфигурациях, обычно не является сложной задачей. Но иногда бывает трудно вспомнить, какие изменения вносились несколько месяцев назад на том или ином сервере, и зачем это было сделано. 24
администрирование
П
ри разработке документации или работе с исходными кодами различных программ проблема отслеживания версий ощущается довольно отчётливо, и потому для её решения существует масса инструментов – CVS, Subversion и тому подобные. Они позволяют управлять доступом к хранилищу кода (репозитарию), в том числе и удалённым пользователям, отслеживать любые изменения, автоматически вести учёт ветвей и версий... Но для «частных» задач эти средства порой оказываются слишком громоздки, и там удобнее использовать одну из простейших систем контроля версий – RCS. Системный администратор может приспособить её и для повышения удобства своей работы. Например, если регистрировать изменения в конфигурацию системы с её помощью, то RCS позволяет: n отслеживать все внесённые изменения; n обеспечивать «контролируемый» доступ нескольким пользователям к настройкам; n сопровождать каждую модификацию пояснениями; n при необходимости «откатываться» на любую из предыдущих версий. Рассмотрим пример использования RCS во FreeBSD, где эта система контроля версий включена в базовую систему.
Типовая задача В качестве примера приведём использование RCS для сопровождения файла конфигурации ядра (для конкретики пусть это будет /usr/src/sys/i386/conf/MICRO). Прежде всего в каталоге с конфигурационными файлами создаём подкаталог RCS. Этот шаг не является обязательным, но без такого каталога файлы-хранилища версий (с именем вида <имя_файла>,v) будут создаваться в рабочем каталоге, что, на мой взгляд, не слишком удобно. А так они будут автоматически перемещаться в подкаталог RCS. (Кстати, так проще выполнять и резервное копирование – достаточно сохранить целиком каталог RCS.) Теперь выполняем следующую команду: # ci -u MICRO RCS/MICRO,v <-- MICRO enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! >> My kernel configuration. >> . initial revision: 1.1 done
В ответ на приглашение «>>» вводим назначение файла и завершаем его строкой с единственным символом «.», чтобы отметить окончание ввода. Текущее состояние файла MICRO будет занесено в RCS/MICRO,v под номером версии 1.1. Ключ -u необходим, чтобы оригинальный файл не удалялся после занесения в RCS. (Вообще-то для инициализации хранилища существует специальный ключ -i, но, на мой взгляд, в большинстве случаев вполне можно обойтись и без него). Теперь, если взглянуть на права доступа к файлу MICRO, можно увидеть, что он доступен только для чтения – с точки зрения безопасности приобретение не слишком существен-
№3, март 2007
ное, но, по крайней мере, vi предупредит вас, если вы попытаетесь внести в него изменения напрямую, в обход RCS. Старайтесь избегать соблазна проигнорировать это предупреждение и сохранить файл по команде «:w!». Как же теперь модифицировать этот файл? Для начала полезно убедиться, что никто не изменил наш MICRO вручную и что он соответствует версии, находящейся в хранилище версий: # rcsdiff -u MICRO =================== RCS file: RCS/MICRO,v retrieving revision 1.1 diff -u -r1.1 MICRO
Отсутствие информации о различиях – хороший знак. В противном случае все внесённые напрямую изменения будут потеряны при извлечении ранее сохранённой версии. Строго говоря, для файлов конфигурации ядра, во избежание путаницы, лучше не оставлять в каталоге рабочую копию (то есть выполнять команду ci без ключа -u). В этом случае единственно возможным способом работы с конфигурацией ядра будет её извлечение из хранилища версий. Но поскольку RCS также может быть полезна и для системных настроек, например, для отслеживания изменений в /etc/rc.conf или /etc/crontab, а эти файлы, очевидно, для нормальной работы системы должны присутствовать всегда, то я описываю здесь наиболее общий случай. Далее выполняем команду «извлечения последней версии»: # co -l MICRO RCS/MICRO,v --> MICRO revision 1.1 (locked) done
Файл MICRO теперь получит право на запись, и его можно редактировать, как обычно. Нужно только не забывать про ключ -l, именно он даёт право записи, одновременно блокируя версию в хранилище, чтобы в это же время никто другой не мог тоже открыть его на запись. Без ключа файл будет извлекаться с правами «только для чтения», что для работы с конфигурацией не слишком полезно. А вот после внесения изменений и начинают проявляться преимущества использования системы контроля версий. После того как необходимые изменения внесены, мы должны загрузить новую версию обратно в хранилище: # ci -u MICRO RCS/MICRO,v <-- MICRO new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> change ident, disable IPFILTER. >> . done
Ключ -u по-прежнему необходим, чтобы сохранить оригинальную версию, которую будет использовать в своей работе операционная система (с поправкой на тот случай, когда рабочая копия файла не является жизненно необходимой). Вместо описания файла теперь нас просят ввести
25
администрирование комментарий к сделанным изменениям (в данном случае я подправил строку ident и убрал поддержку IPFILTER). Номер версии, как видите, поменялся на 1.2. Теперь можно просмотреть лог изменений:
Для этого нужных пользователей требуется занести в так называемый access list хранилища, что выполняется такой командой: # rcs -aserg MICRO
root# rlog MICRO RCS file: RCS/MICRO,v Working file: MICRO head: 1.2 . . . <здесь кое-что сокращено> . . . total revisions: 2; selected revisions: 2 description: My kernel configuration. - --------------------------revision 1.2 date: 2007/02/22 05:19:24; author: serg; state: Exp; lines: +3 -3 change ident, disable IPFILTER. - --------------------------revision 1.1 date: 2007/02/22 05:03:59; author: serg; state: Exp; Initial revision - ---------------------------
RCS file: RCS/MICRO,v done
В файле-хранилище появится запись в разделе access log: $ rlog MICRO RCS file: RCS/MICRO,v Working file: MICRO head: 1.2 branch: locks: strict access list: serg . . . <дальше пропущено> . . .
Теперь пользователю serg тоже можно открывать рабоОбратите внимание, что в авторах изменений указы- чий файл на запись, но при этом нужно учитывать ряд огвается имя пользователя, вошедшего в систему, даже ес- раничений и особенностей: ли само редактирование выполняется с правами root пос- n пользователь должен иметь права на уровне файловой ле выполнения команды su. Это позволяет отслеживать, системы для изменения каталога RCS (если он есть) кто именно вносил изменения, если администрированием и рабочего каталога; сервера занимаются несколько человек. n при извлечении рабочей копии из хранилища владельЕсли нужно посмотреть, что именно менялось межцем копии станет текущий пользователь (именно для ду версиями 1.1 и 1.2, можно выполнить следующую коэтого и нужно право записи в рабочий каталог); манду: n при фиксации модифицированной версии владельцем хранилища станет текущий пользователь (и поэтому # rcsdiff -r1.1 -r1.2 MICRO нужны права на модификацию и каталога RCS). = ======================= RCS file: RCS/MICRO,v retrieving revision 1.1 retrieving revision 1.2 diff -r1.1 -r1.2 5c5 < ident MIKRO --> ident MICRO 61,62c61,62 < options IPFILTER < options IPFILTER_LOG --> #options IPFILTER > #options IPFILTER_LOG
Ну и, наконец, если текущая версия оказалась не подходящей, можно загрузить одну из предыдущих (последняя версия из хранилища всегда может быть восстановлена): # co -r1.1 MICRO RCS/MICRO,v --> MICRO revision 1.1 done
Как видите, всё очень просто и удобно, если, конечно, не забывать заносить все изменения в хранилище.
Замечание про права доступа
Таким образом, если политика безопасности не допускает такое «плавание» прав владения конфигурационными файлами, то лучше избегать использования списков доступа на уровне RCS. Кроме того, следует учитывать эту особенность и в том случае, когда программа требует конкретного владельца для своих конфигурационных файлов. Тут придётся либо выполнять редактирование от имени этого пользователя (предварительно выполнив команду su), либо вручную менять владельца после внесения изменений. (Возможно, вы решите, что для таких файлов проще вообще отказаться от использования RCS.) Также имейте в виду такую особенность: поскольку владельцем хранилища становится последний пользователь, внёсший туда изменения, а владельцу разрешена запись, даже если он не входит в access list, то простое исключение пользователя из списка доступа (командой rcs -e<имя_пользователя>) может не оказать должного действия. Так что не забывайте проверять также и то, кто в данный момент является владельцем файла-хранилища.
Это ещё не всё...
Возможности RCS этим не исчерпываются, так что если RCS по умолчанию открывает рабочий файл на запись толь- вам понадобится что-то ещё, обратитесь к документации ко пользователю-владельцу хранилища и суперпользова- (прежде всего man-страницам) – не исключено, что необтелю. Однако есть возможность разрешить модификацию ходимая вам функция системой RCS поддерживается. Наотслеживаемых файлов и другим пользователям без необ- чать лучше всего с man rcsintro, ну и дальше согласно секходимости предоставлять им пароль root. ции «See Also».
26
bugtraq Уязвимость при обработке UPX-файлов в Kaspersky Anti-Virus Программа: Kaspersky Anti-Virus 6.0.1.411 for Windows и 5.5‑10 for Linux Опасность: Средняя. Описание: Уязвимость существует из-за ошибки при обработке UPX-файлов, содержащих отрицательные значения смещений. Злоумышленник может с помощью специально сформированного UPX-файла использовать все доступные ресурсы на системе и вызвать отказ в обслуживании. URL производителя: www.kaspersky.com. Решение: Установите исправление с помощью автоматического обновления.
Переполнение буфера в службе IMAP в MailEnable
Переполнение буфера в Mozilla Firefox Программа: Mozilla Firefox версии до 1.5.0.10; Mozilla Firefox версии до 2.0.0.2; SeaMonkey версии до 1.0.8. Опасность: Критическая. Описание: Уязвимость существует из-за ошибки дизайна при обработке специально сформированных SSLv2-сообщений сервера. Злоумышленник, контролирующий вебсервер, может послать целевому пользователю сертификат с публичным ключом, которого недостаточно для шифрования «Master Secret», вызвать переполнение динамической памяти и выполнить произвольный код на целевой системе. URL производителя: www.mozilla.org. Решение: Установите последнюю версию с сайта производителя.
Несколько уязвимостей
Программа: MailEnable Professional 2.37, возможно более в Microsoft Internet Explorer ранние версии. Программа: Microsoft Internet Explorer 5.01; Microsoft Internet Опасность: Средняя. Explorer 6.x; Microsoft Internet Explorer 7.x. Описание: Уязвимость существует из-за ошибки проверки Опасность: Критическая. границ данных в службе IMAP при обработке аргументов, Описание: 1. Уязвимость существует из-за ошибки при передаваемых команде APPEND. Удаленный пользователь инициализации COM-объектов Imjpcksid.dll и Imjpskdic.dll, может с помощью специально сформированной команды не предназначенных для инициализации в Internet Explorer. (длиной более 128 байт) вызвать переполнение стека и вы- Удаленный пользователь может вызвать повреждение паполнить произвольный код на целевой системе. мяти и выполнить произвольный код на целевой системе. URL производителя: www.mailenable.com. 2. Уязвимость существует из-за ошибки при инициалиРешение: В настоящее время способов устранения уязви- зации COM-объектов Msb1fren.dll, Htmlmm.ocx и Blnmgrps.dll, мости не существует. не предназначенных для инициализации в Internet Explorer. Удаленный пользователь может вызвать повреждение паПереполнение буфера в Apache Tomcat мяти и выполнить произвольный код на целевой системе. Программа: Apache Tomcat 5.5.20; Apache Tomcat 4.1.34; 3. Уязвимость существует из-за ошибки при обработке Apache Tomcat JK Web Server Connector 1.2.19 и 1.2.20. ответов FTP-сервера. Удаленный пользователь, контролиОпасность: Высокая. рующий FTP-сервер, может с помощью специально сфорОписание: Уязвимость существует из-за ошибки провер- мированного ответа вызвать повреждение памяти и выполки границ данных в функции map_uri_to_worker() в библи- нить произвольный код на целевой системе. отеке mod_jk.so. Удаленный пользователь может с помо- URL производителя: www.microsoft.com. щью слишком длинного URL-запроса (более 4,095 байт) Решение: Установите исправление с сайта производитевызвать переполнение стека и выполнить произвольный ля. код на целевой системе. URL производителя: tomcat.apache.org. Уязвимость при обработке сообщений Решение: Установите последнюю версию (1.2.21) с сайта в Symantec Mail Security for SMTP производителя. Программа: Symantec Mail Security for SMTP 5.0 for Windows, возможно более ранние версии. Переполнение буфера Опасность: Критическая. в DCE/RPC‑препроцессоре в Snort Описание: Уязвимость существует из-за ошибки при обраПрограмма: Snort 2.6.1, 2.6.1.1, 2.6.1.2 и 2.7.0 beta 1. ботке определенных сообщений. Удаленный пользователь Опасность: Критическая. может с помощью специально сформированного сообщеОписание: Уязвимость существует из-за ошибки проверки ния вызвать отказ в обслуживании или выполнить произграниц данных в DCE/RPC препроцессоре при реассембли- вольный код на целевой системе. ровании SMB Write AndX запросов. Удаленный пользова- URL производителя: www.symantec.com/enterprise/products/ тель может с помощью специально сформированного па- overview.jsp?pcid=1008&pvid=845_1. кета вызвать переполнение стека и выполнить произволь- Решение: Установите исправление (Patch 175) с сайта проный код на целевой системе. изводителя. URL производителя: www.snort.org Составил Александр Антипов Решение: Установите последнюю версию (2.6.1.3) с сайта производителя.
№3, март 2007
27
администрирование
Используйте преимущества файловой системы ZFS в Solaris
Алексей Коробкин В летнем релизе 6/06 ОС Solaris версии 10 появилась поддержка новой файловой системы ZFS. Это интересное нововведение, и оно не менее значительно, нежели зоны или система самодиагностики DTrace. Почему понадобилось изобретать новую файловую систему вместо привычной ufs и чем она интересна?
Управление дисками Когда администратор сервера подключает новое хранилище, он действует примерно так: при помощи встроенного в хранилище менеджера дисков формирует один или несколько аппаратных RAID-массивов, полученные дисковые тома разбивает на разделы fdisk, а разделы затем размечает под файловые системы с помощью
28
newfs, mkfs и прочих. Если админис- планирования, запустив для этого три тратор, следуя современным тенден- программы, качество одной из них зациям [2], решил построить програм- частую зависит только от поставщика мный, а не аппаратный RAID-массив, хранилища. то он должен воспользоваться ещё Инженеры Sun попытались упроси менеджером дисков операционной тить эту работу. Созданная ими ZFS системы. Иными словами, процесс не объединяет в себе все три слоя управвыглядит слишком простым: нужно со- ления хранилищами. Новизна подховершить три действия, требующие по- да в том, что верхний слой – файловышенного внимания и тщательного вая система – знает, на каком масси-
администрирование ве она работает. В чем здесь преимущество? Например, зная размер файлов, которые она туда пишет, ZFS может создавать полоски (stripes) переменной длины на массивах RAID-0 и RAID‑5, обеспечивая таким образом высокую скорость работы и повышенную отказоустойчивость. ZFS высчитывает контрольные суммы для файлов, а не блоков данных, избавляясь от возможной ошибки обычных RAIDмассивов, когда блок с правильной суммой бывает записан не туда, куда надо. Кроме того, ZFS – транзакционная, а не журналируемая файловая система. Она использует методику копирования при записи (copy on write), и в случае, например, сбоя питания транзакция либо завершается, либо игнорируется. При этом файловая система всегда остается в исправном состоянии. Подключенные к серверу новые диски ZFS может начать использовать сразу же. По аналогии с оперативной памятью, если мы добавили в сервер память, нет необходимости что-то делать – операционная система автоматически её распознает и задействует. Ограничений объёма практически нет: ZFS – 128-битная файловая система, и её полное название звучит как Zettabyte File System. Она может хранить 128 квадриллионов зетабайт данных. Предполагается, что мы всегда объединяем все доступные серверу хранилища и диски в единый массив ZFS, а внутри него строим столько файловых систем, сколько нужно. Такой массив носит название пул (pool). Конфигурация пула может быть самой разнообразной, варианты вы сейчас посмотрите на примерах. Пул файловых систем ZFS можно создать либо на пустых дисках, либо на слайсах (slice) ufs, либо на отдельных файлах большого размера. Естественно, в последнем случае надежность и скорость будут зависеть от свойств основной файловой системы. Сначала попробуем на одном диске: # zpool create zoopark c1t1d0
Пул zoopark займёт весь диск c1t1d0 целиком, а команда zpool автоматически создаст внутри него готовую новую файловую систему и примонтирует её к /zoopark. Вот статус системы: # zpool status zoopark pool: zoopark state: ONLINE scrub: none requested config: NAME zoopark c1t1d0
STATE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0
Один диск – это не очень интересно. Построим новый пул zerkalo3 на основе тройного зеркала, то есть RAID-1 на трех дисках: # zpool create zerkalo3 mirror c1t1d0 c1t2d0 c1t3d0 # zpool status pool: zerkalo3 state: ONLINE
№3, март 2007
scrub: none requested config: NAME zerkalo3 mirror c1t1d0 c1t2d0 c1t3d0
STATE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
В больших хранилищах редко встретишь зеркала: алгоритм контроля четности и избыточности данных RAID-5 более популярен. В реализации ZFS ему соответствуют сразу два алгоритма, RAIDZ и RAIDZ2. Первый, RAIDZ, рекомендуется для получения максимального объема массива. Второй, RAIDZ2, использует алгоритм двойной четности и потому существенно более отказоустойчив. Если при создании массива конкретный алгоритм не указан, массивы собираются в RAID-0. Всего ZFS поддерживает четыре конфигурации RAID: RAID-0, RAID-1, RAIDZ и RAIDZ2. Отличие RAIDZ и RAIDZ2 от алгоритмов RAID-4, RAID-5 и подобных состоит в исправлении некоторых фундаментальных ошибок этих алгоритмов. В частности, согласно [1], так называемый сбой при записи RAID-5 может появиться, когда питание массива было прервано в момент записи полоски данных. Тогда подсчитанная четность массива и реальная четность данных оказываются рассинхронизированы, и восстановление данных по чётности приводит к их порче. В ZFS эта ошибка устранена благодаря тому, что файловая система и менеджер дисков объединены в одно целое. Полоса переменного размера записывается в один проход, и сбой при записи не нарушает чётности всего остального массива. Транзакционность файловой системы помогает обеспечить постоянную целостность данных, а связь файловой системы с информацией о массиве даёт возможность правильно рассчитывать длину полосок. Построим RAIDZ на нескольких дисках: # zpool create veer raidz c1t1d0 c1t2d0 c1t3d0 c1t4d0 # zpool status veer pool: veer state: ONLINE scrub: none requested config: NAME veer raidz1 c1t1d0 c1t2d0 c1t3d0 c1t4d0
STATE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Если у вас много дисков, Sun рекомендует разбивать их на группы от трех до девяти для повышения производительности. Обратите внимание на повторяющееся ключевое слово raidz2 в списке: # zpool create kombi raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0 ↵ raidz2 c1t5d0 c1t6d0 c1t8d0 c1t9d0 # zpool status pool: kombi state: ONLINE scrub: none requested
29
администрирование А затем и создать массив:
config: NAME kombi raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0 raidz2 c1t5d0 c1t6d0 c1t8d0 c1t9d0
STATE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# zpool create lusterko mirror c1t1d0 c1t2d0 ↵ mirror c1t3d0 c1t4d0 mirror c1t5d0 c1t6d0 ↵ mirror c1t8d0 c1t9d0 spare c1t10d0 c1t11d0 # zpool status pool: lusterko state: ONLINE scrub: none requested config: NAME lusterko mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 mirror c1t5d0 c1t6d0 mirror c1t8d0 c1t9d0 spares c1t10d0 c1t11d0
Таким образом, у нас два массива RAIDZ2 объединены в пул. Обратите внимание: данные в таких конфигурациях динамически распределяются по всем массивам пула, не подчиняясь каким-либо строгим алгоритмам. Это значит, что, например, создать зеркало из двух RAIDZ нельзя. Зато можно добавлять в существующий пул любое количество новых дисков, и Solaris будет постепенно раскладывать данные по всем массивам. Добавим еще один набор дисков в пул kombi:
STATE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AVAIL AVAIL
# zpool add kombi raidz2 c1t10d0 c1t11d0 c1t12d0 c1t15d0 # zpool status
Веб-интерфейс
pool: kombi state: ONLINE scrub: none requested config: NAME kombi raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0 raidz2 c1t5d0 c1t6d0 c1t8d0 c1t9d0 raidz2 c1t10d0 c1t11d0 c1t12d0 c1t15d0
STATE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Впрочем, иногда хочется отдохнуть от командной строки и воспользоваться графическими инструментами. У ZFS есть веб-интерфейс, его можно запустить при помощи команды: # /usr/sbin/smcwebconsole start
Адрес интерфейса https://имя_сервера:6789/zfs. По умолчанию использовать этот интерфейс может только суперпользователь, root. Чтобы делегировать полномочия другому пользователю, нужно воспользоваться системой ролевого управления доступом – RBAC (Role-Based Access Control). Подробней про роли и профили безопасности в Solaris можно почитать в официальном руководстве [4]. Управление массивами определено ролями ZFS Storage Management и ZFS File System Management. Можно, наприКак видите, гибкость и простота настройки массивов не- мер, создать специального пользователя zfsadmin и дать вероятные, при том что ошибиться практически невозмож- ему эти роли. но. Впрочем, перед выполнением команды можно заранее # useradd -P 'ZFS Storage Management', ↵ посмотреть, что именно будет выполнено (ключ -n):
# zpool create -n lusterko mirror c1t1d0 c1t2d0 ↵ mirror c1t3d0 c1t4d0 mirror c1t5d0 c1t6d0 ↵ mirror c1t8d0 c1t9d0 spare c1t10d0 c1t11d0 would create 'lusterko' with the following layout: lusterko mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 mirror c1t5d0 c1t6d0 mirror c1t8d0 c1t9d0
30
'ZFS File System Management' zfsadmin
Теперь пользователь zfsadmin может управлять файловыми системами и пулами ZFS как из веб-интерфейса, так и из командной строки. А вот добавлять диски и удалять их из пула у него не получится: на это требуется весь спектр привилегий супер-пользователя.
Обработка ошибок Вернемся к командной строке и посмотрим, как ZFS работает с ошибками и перемещениями дисков. С перемещениями всё просто: как и в большинстве менеджеров дисков и файловых систем, каждому элементу массива сопоставлен уникальный номер ID, по которому система может идентифицировать любой свой диск и каждую часть массива. Так что если диски были переставлены местами или подклю-
администрирование чены к другому контроллеру, ZFS автоматически определит это и соберет все массивы в правильном порядке. Перейдём к ошибкам. Что делать, если массив был ненароком уничтожен? Если после уничтожения никакие другие массивы не создавались, то диски находятся в прежнем состоянии и массив можно воскресить. Сначала смотрим список уничтоженных или отключенных массивов: # zpool import -D pool: id: state: action:
config:
rombik 90651616518883316 ONLINE (DESTROYED) The pool can be imported using its name or numeric identifier. The pool was destroyed, but can be imported using the '-Df' flags. rombik raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0
ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
Файловая система
Solaris не только показывает, в каком состоянии находится массив, но и пишет понятный комментарий о возможных действиях по его восстановлению. # zpool import -D -f rombik # zpool status pool: rombik state: ONLINE scrub: none requested config: NAME rombik raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0
STATE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE
READ WRITE CKSUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Что происходит, когда выходит из строя диск? # zpool status pool: rombik state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-D3 scrub: none requested config: NAME rombik raidz2 c1t1d0 c1t2d0 c1t3d0 c1t4d0
STATE READ WRITE CKSUM DEGRADED 0 0 0 DEGRADED 0 0 0 ONLINE 0 0 0 UNAVAIL 0 0 0 cannot open ONLINE 0 0 0 ONLINE 0 0 0
errors: No known data errors
Мы видим, что пул rombik отмечен как degraded, напротив соответствующего диска указана причина ошиб-
№3, март 2007
ки, а в свойствах пула появилось подробное описание проблемы и даже ссылка на более актуальную документацию онлайн. Сообщение «No known data errors» означает, что нет ошибок, непосредственно связанных с порчей данных, поскольку доступных дисков достаточно для восстановления утерянной информации. Столбцы READ, WRITE и CHECKSUM указывают количество ошибок при чтении, записи и подсчёте контрольных сумм. При обнаружении таких ошибок ZFS проверяет целостность затронутого файла и исправляет файл целиком, а не только испорченный блок данных. Команды fsck для ZFS не существует в силу транзакционности файловых операций. Для поиска плохих секторов используется команда zpool scrub, которая выполняет поблочную проверку файлов и их контрольных сумм в фоновом режиме и с самым низким приоритетом. Таким образом, сервер с файловой системой ZFS останавливать на обслуживание нет необходимости, все его файловые системы всегда доступны.
До сих пор для работы с ZFS мы использовали только одну команду, zpool. На самом деле команд в комплекте ZFS целых две. Вторая, zfs, работает с файловыми системами внутри пула, и именно здесь лежит одно из фундаментальных отличий ZFS от других средств управления хранилищами. Пул хранит в себе неограниченное количество файловых систем, отличающихся друг от друга только указанными администратором свойствами: именем, объёмом, точкой монтирования, сжатием, наследованием привилегий, родительской файловой системой и прочими. Файловая система внутри пула никак не привязана к физическому или логическому устройству – только к самому пулу. Администратор не должен думать о том, как именно располагаются его данные на физических дисках. Ему достаточно создать пул устройств, как мы это делали выше, построить внутри него нужное количество файловых систем и работать непосредственно с ними. Исследуем работу файловых систем внутри пула на примерах: # zpool create zoo raidz c1t1d0 c1t2d0 c1t3d0 c1t4d0 # zfs list zoo NAME zoo
USED AVAIL REFER MOUNTPOINT 124K 23.4G 36.7K /zoo
При создании пула в нём сразу же создается файловая система zoo и подключается к каталогу /zoo. Обратите внимание, что в /etc/vfstab ничего писать не надо – файловые объекты ZFS по умолчанию монтируются автоматически. Как при создании пула, так и при создании файловой системы, и при загрузке Solaris, управляет этим процессом бинарный файл /etc/zfs/zpool.cache. Создадим файловые системы animals и fish внутри zoo: # zfs create zoo/animals # zfs create zoo/fish
31
администрирование Что получилось?
Посмотрим, какие еще есть свойства у файловых систем ZFS:
# zfs list NAME zoo zoo/animals zoo/fish
USED 214K 36.7K 36.7K
AVAIL 23.4G 23.4G 23.4G
REFER 39.6K 36.7K 36.7K
MOUNTPOINT /zoo /zoo/animals /zoo/fish
То, что мы сейчас сделали, очень сильно отличается от обычной работы с файловыми системами. Мы ничего не форматировали, мы не указывали размер, физический диск или точку монтирования. Мы просто создали в пуле zoo две дополнительные файловые системы, и моментально можем начинать работать с ними. Все необходимые параметры мы можем задать потом или пронаследовать из вышестоящей файловой системы. Например, изменим параметр compression (сжатие) файловой системы zoo/fish. # zfs set compression=on zoo/fish # zfs get compression zoo/fish NAME zoo/fish
PROPERTY compression
VALUE on
SOURCE local
Поле Source указывает, откуда взято значение параметра. До изменения в этом поле стояло ключевое слово default, «по умолчанию». Теперь там local – параметр указан непосредственно для данной файловой системы. Если мы создадим внутри zoo/fish файловую систему shark, то параметр compression пронаследуется от fish: # zfs create zoo/fish/shark # zfs get compression zoo/fish/shark NAME PROPERTY VALUE SOURCE zoo/fish/shark compression on inherited from zoo/fish
# zfs get all zoo/fish NAME zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish zoo/fish
PROPERTY type creation used available referenced compressratio mounted quota reservation recordsize mountpoint sharenfs checksum compression atime devices exec setuid readonly zoned snapdir aclmode aclinherit
VALUE SOURCE filesystem Tue Jan 23 18:50 54.4M 4.95G 25.5K 1.00x yes 5G local none default 128K default /zoo/fish default off default on default on local on default on default on default on default off default off default hidden default groupmask default secure default
Параметры, у которых поле Source пустое – только для чтения. К ним можно обращаться, чтобы узнать текущее состояние системы. Например, занятое место на файловой системе: # zfs get -H used zoo/fish zoo/fish used
54.4M
-
Ключ -H убирает заголовок результата, чтобы можно было легко передать данные скрипту. Поля used, available, и quote относятся к размеру самой файловой системы, а referenced – к размеру данных, занятых служебной ин# zfs get quota zoo/fish формацией. Интересное поле reservation дает возможность зарезервировать свободное пространство для файловой NAME PROPERTY VALUE SOURCE zoo/fish quota none default системы, чтобы никакие другие файловые системы на него не претендовали и считали занятым. Свойство mountpoint Уменьшим доступное zoo/fish пространство до пяти ги- указывает, к какой папке подключена файловая система. габайт: Мы не обязаны сохранять иерархию, предлагаемую по умолчанию, и можем монтировать файловые системы куда угод# zfs set quota=5gb zoo/fish но. Например, перенесём zoo/fish в /mnt:
Чтобы указать размер файловой системы, мы используем свойство quota:
Список файловых систем теперь выглядит так (ключ -r перебирает все вложенные файловые системы): # zfs list -r zoo NAME zoo zoo/animals zoo/fish zoo/fish/shark
USED 261K 36.7K 74.8K 36.7K
AVAIL 23.4G 23.4G 5.00G 5.00G
REFER 39.6K 36.7K 38.2K 36.7K
MOUNTPOINT /zoo /zoo/animals /zoo/fish /zoo/fish/shark
Как видите, вместе с размером файловой системы fish сократился и размер системы fish/shark. Понятно, что если бы мы таким образом создавали домашние каталоги пользователей, мы могли бы просто и легко на лету менять доступное им свободное пространство, включать компрессию данных и многое другое.
32
# zfs set mountpoint=/mnt/fish zoo/fish # zfs list -r zoo NAME zoo zoo/animals zoo/fish zoo/fish/shark
USED 174K 24.5K 50K 24.5K
AVAIL 7.81G 7.81G 5.00G 5.00G
REFER 25.5K 24.5K 25.5K 24.5K
MOUNTPOINT /zoo /zoo/animals /mnt/fish /mnt/fish/shark
Как видите, вложенные файловые системы унаследовали точку монтирования. А если mountpoint указать как none, файловая система никуда подключена не будет.
ZFS и зоны Если вы хотите подключить файловую систему внутрь зоны, то точка монтирования должна быть указана как legacy, а само подключение делается так:
администрирование # zfs set mountpoint=legacy zoo/fish # zonecfg -z aquarium zonecfg:aquarium> add fs zonecfg:aquarium:fs> set type=zfs zonecfg:aquarium:fs> set special=zoo/fish zonecfg:aquarium:fs> set dir=/export/home/fish zonecfg:aquarium:fs> end
Вы можете столкнуться с ошибкой установки, если подключите файловую систему на этапе создания зоны (Bug 6449301, пока не исправлен), поэтому подключение следует делать уже после того как зона установлена. В указанной конфигурации администратор зоны не может управлять файловой системой zoo/fish. Полный контроль над файловой системой делегируется иначе: # zonecfg -z aquarium zonecfg:aquarium> add dataset zonecfg:aquarium:dataset> set name=zoo/fish zonecfg:aquarium:dataset> end
Назначение полей в строке прав доступа к файлу Значение
Описание
1
Порядковый номер строки в списке, используется в командах для обращения к конкретной строке
owner@
Имя пользователя или группы, к которому относятся перечисленные в строке права. В данном случае указано ключевое слово (знак @ указывает на это), а не конкретное имя. Owner – это владелец файла
read_data/../../
Список прав доступа
allow
Одно из двух ключевых слов, allow или deny. Определяет, доступ разрешён или запрещён, соответственно
Вернемся в глобальную зону и посмотрим, на что влияют остальные параметры файловой системы.
NFS v4 и списки контроля доступа Если вы включите параметр sharenfs, файловая система автоматически станет доступна по NFS, при этом /etc/dfs/ dfstab редактировать не надо. # zfs set sharenfs=on zoo/fish # share
Вот результат: # zlogin aquarium
-
[Connected to zone 'aquarium' pts/1]
# zpool list NAME zoo
SIZE 31.8G
USED 353K
AVAIL CAP HEALTH 31.7G 0% ONLINE
ALTROOT -
# zfs list -r NAME zoo zoo/fish
USED AVAIL REFER MOUNTPOINT 260K 23.4G 38.2K /zoo 74.8K 5.00G 38.2K legacy
Внутри зоны мы видим пул zoo и делегированную файловую систему. Другие файловые системы мы не видим, и сами новую систему вне делегированной создать не можем: # zfs create zoo/crocodile cannot create 'zoo/crocodile': permission denied
# zfs create zoo/fish/salmon # zfs list -r NAME zoo zoo/fish zoo/fish/salmon
USED 260K 74.8K 36.7K
AVAIL 23.4G 5.00G 5.00G
/mnt/fish rw "" /mnt/fish/shark rw
""
Зачем так сделано? Как вы уже успели заметить, файловые системы ZFS очень гибкие и легкие, и постоянно следить, куда именно переместилась та или иная система, неудобно. А всякий раз соответственно редактировать dfstab было бы просто мукой. Поэтому вы один раз указываете, какие файловые системы должны быть доступны по сети, делаете с ними что хотите, а они тем не менее остаются доступны. Обеспечение безопасности осуществляется списками контроля доступа. Вместо списков POSIX-draft ACL, которые можно использовать на ufs, файловая система ZFS поддерживает новые списки стандарта NFS v4, формат которых похож на списки NTFS. Управление осуществляется обычными командами chmod, chown и ls; никаких getfacl и setfacl для ZFS не существует. По умолчанию все файлы имеют упрощенный список прав доступа: # touch /zoo/animals/snake # ls -v /zoo/animals/snake
REFER 38.2K 38.2K 36.7K
MOUNTPOINT /zoo legacy legacy
-rw-r--r-- 1 root root 0 Feb 1 13:12 /zoo/animals/snake 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data /write_xattr/write_attributes/write_acl /write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr /execute/write_attributes /write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes /read_acl/synchronize:allow
Есть еще одно интересное применение ZFS для работы с зонами – клонирование файловых систем. Клонирование – это по сути то же самое, что и всем хорошо знакомые мгновенные снимки, snapshots. При клонировании файловой системы её клон не занимает места на диске – он начинает поглощать пространство только тогда, когда данСписок читается сверху вниз, двоеточие служит разденые клона и оригинала начинают различаться. Занимаелителем полей. Каждая строка определяет либо то, что явмое клоном место в точности равно этой разнице. А теперь предположим, что у нас есть уже настроенная но разрешено, либо то, что явно запрещено, неявных зназона, все файлы которой расположены на ZFS. Если мы хо- чений быть не может. Разберем строку номер 1 (cм. таблицу): тим настроить очень похожую зону, то можно при её создании указать, что файловую систему зоны следует клониро1:owner@:read_data/write_data/append_data вать с уже имеющейся. Экономия пространства на диске, /write_xattr/write_attributes/write_acl /write_owner:allow времени и сил администратора налицо!
№3, март 2007
33
администрирование и сохранить данные на ленту, не мешая работать приложениям сервера. Кроме того, можно откатить состояние файловой системы ко времени создания любого снимка, обеспечив таким образом скоростное восстановление информации. Откатываются только изменившиеся блоки данных. Наверное, единственным интересным отличием снимков ZFS является возможность их пересылки из одной файловой системы в другую (команды zfs send/receive). Такую функциональность можно использовать для репликации файловых систем, быстрого восстановления или резервного копирования на удаленный сервер.
Недостатки Веб-интерфейс управления файловой системой ZFS
Попробуем для примера добавить права нашему пользователю: # chmod A+user:korobkin:read_data/write_data:allow snake # ls -v /zoo/animals/snake -rw-r--r--+ 1 root root 0 Feb 6 18:01 /zoo/animals/snake 0:user:korobkin:read_data/write_data:allow 1:owner@:execute:deny 2:owner@:read_data/write_data/append_data /write_xattr/write_attributes /write_acl/write_owner:allow 3:group@:write_data/append_data/execute:deny 4:group@:read_data:allow 5:everyone@:write_data/append_data /write_xattr/execute/write_attributes /write_acl/write_owner:deny 6:everyone@:read_data/read_xattr /read_attributes/read_acl/synchronize:allow
Я использую команду ls -v для подробного просмотра прав доступа к файлу. В повседневной работе это не очень удобно, проще использовать сокращенное отображение: # ls -V /zoo/animals/snake -rw-r--r--+ 1 root root 0 Feb 6 18:01 /zoo/animals/snake user:korobkin:rw------------:------:allow owner@:--x-----------:------:deny owner@:rw-p---A-W-Co-:------:allow group@:-wxp----------:------:deny group@:r-------------:------:allow everyone@:-wxp---A-W-Co-:------:deny everyone@:r-----a-R-c--s:------:allow
Полный синтаксис назначения прав доступа с примерами лучше всего посмотреть в руководстве [1].
Резервное копирование Как и в большинстве современных файловых систем, в ZFS реализованы мгновенные снимки, snapshots. Ничего нового про них рассказать не получится: снимок делается командой zfs snapshot, к нему можно получить доступ на чтение
34
Первая же мысль, которая приходит после изучения всех достоинств новой файловой системы, – перевести все сервера целиком на ZFS. Увы, не получится. Чтобы загрузчик нашел при старте ядро Solaris, он должен уметь читать ZFS, а стандартный GRUB этого не умеет. Впрочем, если выделить небольшой кусочек диска под каталог /boot на ufs, то можно обеспечить загрузку микроядра, которое сделает остальную работу. Можно даже реализовать альтернативную загрузку в безопасном режиме, с подключением корня и других файловых систем стандартно в каталог /a, как это описано в [3]. К другим недостаткам относится повышение требований к объему оперативной памяти сервера. Для обеспечения высокой производительности Sun советует иметь не менее одного гигабайта оперативной памяти на серверах, использующих ZFS.
Выводы Новая файловая система, безусловно, заслуживает самого пристального внимания системных администраторов. Высокая производительность, надежность, масштабируемость, удобство в управлении и множество новых свойств, которых Solaris так не хватало раньше, теперь полностью и совершенно бесплатно доступны каждому. Современные серверs с их необъятными и почти неуправляемыми хранилищами, высокой нагрузкой и требованиями к постоянной доступности отныне можно оснастить ZFS и отвлечься на более интересные задачи, не беспокоясь о сохранности корпоративной информации. Удачи. 1. Solaris ZFS Administration Guide – http://docs.sun.com/app/docs/ doc/819-5461. 2. Jeff Garzik. Linux: Why Software RAID? – http://linux.yyz.us/whysoftware-raid.html. 3. Doug Scott, ZFS Root on Solaris (Part 1, 2, 3) – http://solaristhings. blogspot.com/2006/06/zfs-root-on-solaris.html. 4. System Administration Guide: Security Services – http://docs.sun. com/app/docs/doc/816-4557.
bugtraq Уязвимость состояния операции в Sun Solaris Программа: Sun Solaris 8, 9, 10. Опасность: Низкая. Описание: Уязвимость состояния операции обнаружена при удалении директорий с помощью команды rm(1). Злоумышленник может создать специально сформированную иерархию директорий, которая приведет к удалению произвольных файлов и директорий на системе, когда привилегированный пользователь будет удалять эту директорию. URL производителя: www.sun.com. Решение: Установите исправление с сайта производителя.
Множественные уязвимости в PHP Программа: PHP 5.1.x; PHP 5.2.x. Опасность: Средняя. Описание: 1. Злоумышленник может обойти защитные механизмы safe_mode и open_basedir посредством расширения сессии. 2. Некоторые ошибки могут привести к повреждению стека в реализации сессий. 3. Переполнения стека обнаружены в расширениях zip, imap и sqlite. 4. Уязвимость существует из-за ошибки проверки границ данных в фильтрах потоков. Удаленный пользователь может вызвать переполнение буфера. 5. Переполнение буфера обнаружено в функции str_replace(). 6. Уязвимость в расширении wddx может позволить злоумышленнику получить доступ к важным данным на системе. 7. Уязвимость форматной строки обнаружена в функции *print() на 64-битных системах. 8. Ошибки проверки границ данных обнаружены в функциях mail(), ibase_add_user(), ibase_delete_user() и ibase_modify_user(). Удаленный пользователь может вызвать переполнение буфера. 9. Уязвимость форматной строки обнаружена в функции odbc_result_all(). URL производителя: www.php.net. Решение: Установите последнюю версию (5.2.1) с сайта производителя.
Уязвимость при обработке NTLM‑аутентификации в MailEnable Программа: MailEnable Enterprise Edition 2.x; MailEnable Professional 2.x. Опасность: Средняя. О п и с а н и е : Уя з в и м о с т ь с у щ е с т в у е т в ф у н к ц и и NTLM_UnPack_Type3() (MENTLM.DLL) при обработке данных NTLM аутентификации. Удаленный пользователь может с помощью специально сформированной последовательности команд и данных аварийно завершить работу IMAP- или POP3-службы. URL производителя: www.mailenable.com. Решение: Установите последнюю версию (2.351 или выше) с сайта производителя.
№3, март 2007
Переполнение буфера в uTorrent Программа: uTorrent 1.6 build 474, возможно более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке .torrent-файлов. Удаленный пользователь может с помощью специально сформированного .torrent-файла, содержащего слишком длинную строку (более 4800 байт) в опции «announce» вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.utorrent.com. Решение: В настоящее время способов устранения уязвимости не существует.
Уязвимость в Microsoft MDAC ADODB.Connection ActiveX-компоненте Программа: Microsoft Windows 2000; Microsoft Windows XP; Microsoft Windows 2003; Microsoft Data Access Components (MDAC) 2.x. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки в ADODB.Connection ActiveX-компоненте при обработке метода Execute(). Удаленный пользователь может с помощью специально сформированной веб-страницы выполнить произвольный код на целевой системе с привилегиями пользователя, запустившего браузер. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.
Несколько уязвимостей в Cisco IOS IPS Программа: Cisco IOS 12.3, 12.4. Опасность: Средняя. Описание: 1. Уязвимость существует из-за ошибки при обработке регулярных выражений в Intrusion Prevention System (IPS). Удаленный пользователь может с помощью специально сформированных фрагментированных IP-пакетов обойти правила IPS и произвести атаку. 2. Уязвимость существует из-за ошибки в механизме ATOMIC.TCP. Удаленный пользователь может вызвать отказ в обслуживании устройства. URL производителя: www.cisco.com. Решение: Установите исправление с сайта производителя.
Обход аутентификации в Sun Solaris Программа: Sun Solaris 10. Опасность: Средняя. Описание: Уязвимость существует из-за ошибки в демоне in.telnetd при вызове приложения login. Удаленный пользователь может обойти процесс аутентификации путем добавления к валидному имени опции -f. URL производителя: www.sun.com. Решение: В настоящее время способов устранения уязвимости не существует. В качестве временного решения рекомендуется отключить службу telnet.
Составил Александр Антипов
35
администрирование ляются компоненты XAMPP – Apache, PHP, MySQL [7], почтовый сервер можно использовать внешний, хотя встречаются и ограничения. И, как правило, сервер коллективной работы без проблем может быть запущен на компьютере под управлением Windows, Linux/UNIX, *BSD и Solaris. Учитывая, что некоторые решения, несмотря на кажущуюся на первый взгляд простоту, установить не так-то и легко, процесс выбора нужной системы для коллективной работы упрощен наличием демонстрационных версий, к которым любой желающий может получить доступ. Их можно найти как на сайтах проекта, так и специализированных ресурсах [1]. Хотя в большинстве случаев предоставляется доступ к консоли администратора. Как будет выглядеть система с точки зрения обыкновенного пользователя, на которого ориентирован сервис, ясно не всегда. Хотя это и существенно экономит время, да и нервы тоже, позволяя на ранНеобходимость в системах автоматизации коллективной нем этапе отсеять часть продуктов, не работы очевидна, и такие приложения востребованы. подходящих под начальные условия. Особенно остро их нехватка ощущается в сфере малого Итак, задача настроить сервер коллективной работы, обеспечивающий и среднего бизнеса, которому установка Microsoft Exchange доступ к ресурсам, кроме веб-интерили Lotus Domino не только не по карману, но и часто фейса, и с помощью стандартных утинеоправдана. Существует целый ряд проектов с открытыми лит, имеющий локализованный интерисходными текстами, которые могут заменить фейс. Обеспечивающий максимальпроприетарные продукты. ное удобство пользователей и руководителей, в том числе и за счет расшиКакие бывают Evolution, Mozilla ThunderBird, Mozilla ренной функциональности, вроде доGroupware‑серверы Sunbird, Kontact, Outlook и другие, ступа к файлам, управления проектаOpen Source-решения для автоматиза- что обеспечивает большую гибкость ми, работу с документами и CMS. ции групповой работы строятся на от- и удобство. Поэтому перед внедрениПри поиске были рассмотрены слекрытых технологиях и стандартах, ем приложения для коллективной ра- дующие проекты. в числе которых SMTP, POP3/POP3S, боты следует остановиться на решениIMAP/IMAPS, LDAP, LS/SSL, S/MIME, ях, обеспечивающих требуемую функ- TUTOS VCard, iCalendar и другие. Основой циональность. Кроме основных функ- Старожил TUTOS (http://www.tutos. служат веб-технологии, как правило, ций, присущих таким системам (рабо- org). Этот проект развивается с 1997 для их работы необходим веб-сервер та с почтой, календарь, планировщик года, поэтому период становления с поддержкой PHP. заданий, записная книжка), могут быть и «детских болезней» уже можно счиOpen Source‑решения на Java и другие возможности – форумы, чаты, тать пройденным. Его отличает просвстречаются реже. Для ускорения об- WiKi, системы управления контентом, той, не перегруженный, но примитивработки данных такие системы тре- просмотр комиксов и прочее. Естест- ный по сегодняшним меркам интербуют наличия БД, например MySQL/ венно, приложение должно быть лока- фейс, хотя его можно облагородить PostgreSQL, в которой будут хранить- лизовано и максимально дружелюбно с помощью тем. Интересно, что язык ся настройки и другая информация. Та- к пользователю. Использование веб интерфейса определяется автоматикой подход очень удобен, так как от- дает еще одно преимущество – в ка- чески по настройкам браузера, что хопадает необходимость в специализи- честве базовой платформы можно ис- рошо заметно при посещении демонсрованном клиентском программном пользовать любую операционную сис- трационной страницы, хотя его можно обеспечении, достаточно обычного тему, на которой может быть установ- указать и вручную. Это весьма развивеб-браузера. лен базовый комплект. А это веб-сер- тая система, направленная в первую Хотя некоторые проекты позволяют вер с поддержкой PHP и СУБД. В боль- очередь на оптимизацию работы с происпользовать и клиентские программы шинстве случаев рекомендуемыми яв- ектами. Предусмотрена гибкая систе-
Устанавливаем eGroupware
Сергей Яремчук
36
администрирование ма управления пользователями, которые могут быть сопоставлены по отделам, группам, департаментам и их роли (менеджер, разработчик и прочее). Еще одним достоинством TUTOS является быстрота работы. В настоящее время разрабатываются приложения для синхронизации для рабочих сред KDE и Gnome, Java-сервлеты, планируется разработка механизмов синхронизации со сторонними приложениями. Но это в будущем.
PHProjekt PHProjekt (http://www.phprojekt.com) неплохая система управления коллективной работой, имеющая модульную структуру. Легко адаптируемая под любые требования. Базовый комплект включает: компоненты группового календаря, управления проектами, учета времени, менеджер контактов, работу с электронной почтой, форум и некоторые другие. Поддерживается просмотр и печать документов в pdf, xml, csv, xls, rtf, doc, html, отправка SMS и факсов. Остальное (WiKi, WAP и прочее) реализовано с помощью модулей. PHProjekt поддерживает самое большое количество СУБД – 9. Интерфейс переведен более чем на 35 языков, в списке которых есть русский. По умолчанию поддерживается работа с кодировкой СP1251, но, скачав дополнение, можно установить любую из доступных. Хотя в документации все подробно расписано, установить PHProjekt бывает не так просто. Результирующий конфигурационный файл не появляется, а сам скрипт безнадежно виснет. Причем разработчики считают это вполне нормальным явлением, так как советуют повторить все сначала. PHProjekt полностью ориентирован на использование веб. Возможен экспорт и импорт адресных книг, но только путем создания промежуточных файлов.
к информации можно получить с помоScalix Community Edition Весьма неплохая разработка Scalix щью внешних приложений наподобие Community Edition (http://www.scalix.com). Microsoft Outlook, Novell Evolution и неПредставляет собой бесплатную вер- которых беспроводных устройств. Совсию коммерческого продукта, в кото- местима с MS Exchange и легко интегрой количество привилегированных рируется в Active Directory. В числе разпользователей ограничено 25, стан- работчиков есть выходцы из постсодартных можно заводить сколько угод- ветского пространства, поэтому с лоно. Разработка основана на лицензи- кализацией проблем нет. Программа рованном HP OpenMail и обеспечива- установки имеет графический интерет пользователей доступом к элект- фейс и будет понятна даже новичку. ронной почте, календарю и некото- Официально поддерживается Red Hat рым другим, стандартным для серве- Enterprise Linux 3.0/4.0, Fedora Core 5*, ров групповой работы возможностям. SUSE Linux Enterprise Server 9.0/10.0, Пользователям и администратору пре- SUSE Linux Open Source Software (OSS) доставлен удобный веб-интерфейс, ос- 10.1*, для которых можно скачать гонованный на AJAX. Кроме того, доступ товые пакеты. В остальных дистрибу-
Рисунок 1. Результат работы скрипта, проверяющего готовность системы
Tikiwiki По этой же причине не подошел и неплохой проект Tikiwiki (http://tikiwiki.org), хотя и назначение его иное. Как сказано на сайте, это wiki-based Content Management System (CMS), с помощью которого можно создавать целые порталы, а затем уже следуют средства коллективной работы и прочие возможности, коих у Tikiwiki предостаточно. Поддерживается и русский язык.
№3, март 2007
Рисунок 2. Окно создания конфигурационного файла header.inc.php
37
администрирование ступ к электронную почте, управление документами и проектами, планирование ресурсов, синхронизацию с Palm, Kontact, Novell Evolution. Доступен коммерческий модуль расширения для Outlook. Работает как в Linux, так и в Windows. В CVS-версии никаких средств локализации веб-интерфейса я не нашел, хотя есть список рассылки для русскоязычных пользователей.
Возможности eGroupware
Рисунок 3. Окно установок eGroupware
Рисунок 4. Задание основных настроек
тивах установку можно производить из исходных текстов.
Open-Xchange Community Edition Open-Xchange Community Edition (http:// www.open-xchange.com) также представляет собой свободную версию коммерческого продукта, не имеющую некоторой функциональности. В частности, удобного интерфейса администратора, простоты в установке и настройке. Это полноценный сервер групповой работы, обеспечивающий работу с почтой, календарь, список контактов и задачи управления (форум, база знаний, совместная работа с документами, управление проектами),
38
способный заменить Exchange Server. Поддерживается и синхронизация с KDE Kontact. Работа с устройствами, работающими по стандарту SyncML, а также Outlook и Outlook Express, реализована в коммерческой версии. Работа версии Community заявлена в 30 дистрибутивах Linux, а коммерческая – только SUSE и RedHat. Интерфейс локализован.
OpenGroupware.org O p e n G r o u p w a r e.o r g ( h t t p: // w w w. opengroupware.org) подробно описан в [4], базовая функциональность осталась прежней. OGo обеспечивает управление контактами, групповой календарь, управление заданиями, до-
eGroupware [2] – программный пакет, предназначенный для обеспечения совместной работы групп пользователей и автоматизации бизнес-процессов. Основу eGroupware API составляет код – phpGroupWare, часть его разработчиков также перешла в новый проект. Задачей своего проекта они видели не механическое соединение модулей, а создание единого информационного пространства, максимально удобного для конечного пользователя, в котором он сможет выполнять всю повседневную работу. Идеология проекта использует принципы FSF, поэтому в качестве лицензии выбрана GNU GPL. Хотя и не исключена поддержка модулей, разрабатываемых по лицензии BSD. Результатом явилась система коллективной работы, изначально обеспечивающая большую функциональность по отношению к остальным подобным проектам. Основные средства коллективной работы: n Календарь – поддерживает планирование времени для пользователей, групп и контактов. n Адресная книга – для управления контактами и связи с другими приложениями eGroupware, реализованы экспорт и импорт в/из LDIF, CSV и VCard и управление через LDAP или SQL. n Почтовый клиент (FelaMiMail) – один из клиентов электронной почты, поддерживающий протокол IMAP, обеспечивается сортировка, удаление сообщения, занесение отправителя в адресную книгу и прочие возможности. n InfoLog – представляет собой замену спискам ToDo, заметкам, спискам звонков и систему управления взаимодействием с клиентами (CRM), тесно взаимодействующую с остальными компонентами eGroupware.
администрирование Дополнительных средств на порядок больше. Это менеджер проектов, система управления ресурсами и их планированием, файловый менеджер и ftp-клиент, система управления контентом (SiteMgr) и WiKi (клон WikkiTikkiTavi), чат, а также средства разработки, администрирования и многое другое. Помимо FelaMiMail в eGroupware включен еще один почтовый клиент AngleMail (http://www.anglemail.org), поддерживающий POP3/IMAP. Всего 48 приложений. Плюс еще несколько приложений находятся в стадии разработки. Недостаток функциональности – тяжеловесность eGroupware по сравнению с остальными приложениями, рассмотренными выше. Ведь только в базовом варианте содержится около 20 тысяч Рисунок 5. Редактирование доступных приложений файлов размером 70 Мб. Ко всем функциям можно получить доступ через веб-ин- eGroupWare» [6], здесь же находятся готовые скрипты к этотерфейс, который полностью или частично переведен на 25 му документу. Дистрибутив eGroupware располагается в двух пакетах: языков (есть русский и украинский языки). Поддерживается синхронизация информации с Kontact, Evolution, Outlook, базовом, обязательном для установки, и contrib, в который Apple iCal, КПК и мобильными телефонами. Аутентифика- входят все дополнительные модули. В последнем находятся ция пользователей возможна с использованием внутрен- почтовый и ftp-клиенты, форум, средства создания резервных архивов, чат и некоторые другие полезные дополнения. ней базы, LDAP или средствами ActiveDirectory. Еще один плюс при выборе eGroupware – наличие сай- Я бы советовал использовать оба архива, затем в процеста русскоязычных пользователей eGroupware [3], на кото- се настроек или эксплуатации лишние приложения можно ром хоть и маловато информации, зато работает форум. легко удалить или отключить. Для установки необходимо архивы распаковать в рабоЗдесь же можно взять файл для лучшей локализации инчий каталог веб-сервера: терфейса. Для установки и работы eGroupware понадобятся: ком$ cd /var/www пьютер под управлением Windows от 95, Linux, MacOS X $ sudo tar xjvf eGroupWare-1.2.106-2.tar.bz2 или другой POSIX-совместимой системы, с установлен$ sudo tar xjvf eGroupWare-contrib-1.2.106-2.tar.bz2 ным веб-сервером Apache, Roxen или IIS (рекомендован Затем устанавливаем необходимые права доступа Apache 2), PHP от 4.3 (рекомендован 5.x) и база данных MySQL, Postgres, MaxDB, MSSQL (рекомендован MySQL 4.1 для файлов и каталогов. Сначала изменяем владельца или 5.0) и сервер LDAP. Частично поддерживается и Oracle. вновь созданных файлов на пользователя, от имени котоДля отправки почтовых сообщений понадобится любой рого работает веб-сервер: SMTP-сервер (Postfix), и для работы FelaMiMail – сервер $ sudo cat /etc/apache2/apache2.conf | grep User Courier-IMAP, Cyrus-IMAP, UW-IMAP или MS Exchange. User www-data Для тех, кто не знает, как все это настроить, разработ$ sudo chown -R www-data:www-data /var/www/egroupware чики рекомендуют воспользоваться XAMPP [7]. Для файлов задаем право на чтение, для каталогов – чтение и исполнение: Устанавливаем eGroupware Тестовая установка производилась на Ubuntu 6.06, с уста$ sudo find egroupware -type d -exec chmod 550 {} \; новленным Apache 2.0.55, PHP 5.1.6 с Suhosin 0.9.5, как опи$ sudo find egroupware -type f -exec chmod 440 {} \; сано в [5], скомпилированный с минимальными опциями. Веб-сервер должен иметь возможность записи в подНедостающие модули PHP при необходимости будут установлены из репозитария, а также MySQL 5.0.22 и IMAP каталог fudforum: Cyrus 2.2. Для упрощения будем считать, что все компонен$ sudo chmod -R 660 /var/www/egroupware/fudforum ты уже настроены и работают. В репозитарии Ubuntu доступна пока версия 1.0. Хотя актуальной на момент напиДобавим в apache2.conf такие строки: сания статьи была уже 1.2.106, ее установку и будем рассматривать в дальнейшем. При этом доступен пререлиз <Directory /var/www/egroupware> для разработчиков – 1.3.015 (1.4 beta1). Перед установкой <Files ~ "\.(inc.php|tpl)$"> советую ознакомиться с файлом «How to install and secure Order allow,deny
№3, март 2007
39
администрирование Deny from all </Files> </Directory>
с базой данных, выбрать ее тип, а также имя пользователя БД и имя пользователя для изменения настроек (по умолчанию используется). После чего нажмите на «Скачать» или Теперь перезапускаем веб-сервер, в браузере набираем «View», чтобы сгенерировать файл. Файл будет создан в каhttp://имя_узла/egroupware/setup/ и попадаем в программу талоге /tmp, и под обыкновенным пользователем на место установки. Сначала в выпадающем списке выберите язык, поместить его не получится. Можно поступить так. после чего для тестирования системных установок и нали$ sudo cp -v /tmp/header.inc.php /var/www/egroupware/ чия всех пакетов нажмите «Run installation test». Через некоторое время скрипт выдаст результат (см. рис. 1). В идеаль`/tmp/header.inc.php' -> `/var/www/egroupware/header.inc.php ном варианте все тесты за исключением проверяющих рабо$ sudo chown -R www-data:www-data ↵ ту баз данных (ведь для работы будет использована только /var/www/egroupware/header.inc.php одна) должны быть отмечены зеленым цветом. Все помеченные красным крестиком относятся к критическим ошибкам, Для дальнейших настроек необходимо зайти веб-браувлияющим на работу eGroupware, они должны быть устра- зером на страницу http://localhost/egroupware/login.php. Этот нены полностью. Отмеченные желтыми модулями означа- момент в документации описан непонятно. Теоретически ют, что некоторая функциональность не будет доступна. Это все необходимые базы данных должны быть созданы автонекритично, но лучше тоже с ними разобраться. К ошибкам матически, в моем же случае было получено сообщение: даны подсказки, помогающие быстро устранить проблему. Fatal Error: It appears that you have not created the database Чтобы некоторые изменения вступили в силу, потребуется tables for eGroupWare. Click here to run setup. перезапуск компонентов: веб-сервера, MySQL. В тестовой системе, чтобы привести все в соответсИ возврат на предыдущую позицию, и так по кругу. Притвие с требованиями, необходимо было выполнить следу- шлось все создавать вручную. ющие действия. $ mysqladmin -u root -p create egroupware Установить значения параметра «memory_limit = 16M» $ mysql -u root -p (можно больше) и «mbstring.func_overload = 7» в файле Enter password: /etc/php5/apache2/php.ini. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 to server version: 5.0.22-Debian_0ubuntu6.06.2-log Установить модули php для работы с выбранной базой Type 'help;' or '\h' for help. Type '\c' to clear the buffer. данных, модуль для поддержки библиотек GD и IMAP: $ sudo apt-cache search php | grep mysql $ sudo apt-get install php5-mysql php5-mysqli ↵ php5-gd php5-imap
Далее потребовалось установить модуль PEAR::Log из PEAR (PHP Extension and Application Repository). Сначала устанавливаем основной пакет для работы с PEAR: $ sudo apt-get install pear
а затем и сам Log: $ sudo pear install Log WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update Did not download optional dependencies: pear/DB, pear/MDB2, use --alldeps to download automatically pear/Log can optionally use package “pear/DB” (version >= 1.3) pear/Log can optionally use package “pear/MDB2” (version >= 2.0.0RC1) downloading Log-1.9.10.tar ... Starting to download Log-1.9.10.tar (-1 bytes) ......................done: 227,840 bytes install ok: channel://pear.php.net/Log-1.9.10
После решения всех проблем выберите повторную проверку или нажатием на «Continue to the Header Admin» переходите к следующему этапу. Результатом его работы должен стать файл header.inc.php, содержащий основные настройки. В появившемся окне (см. рис. 2) будет выдан анализ настроек, в Setting необходимо уточнить или заполнить основные значения: имя пользователя и пароль для доступа к header-файлу, адреса интерфейсов, на которых будет принимать соединения eGroupware, параметры соединения
40
mysql> grant all on egroupware. * to admin@localhost identified by "admin"; Query OK, 0 rows affected (0.21 sec)
Теперь повторяем попытку. В появившемся окне можно зарегистрироваться в двух позициях. Если воспользоваться полем Header Admin Login, вернемся к меню создания header. inc.php. Для продолжения настройки необходимо зарегистрироваться в окне Setup/Config Admin Login, где ввести пользователя, указанного в поле Configuration User.
Последние настройки Теперь осталось пройти еще шесть шагов, часть которых, возможно, будет выполнена автоматически (см. рис. 3). Для начала нажимаем кнопку «Install application Mysql database», будет произведено создание необходимых полей в базе данных и установка всех приложений, которые будут найдены в каталогах. Второй шаг – создание настроек. В появившемся окне необходимо уточнить или заполнить значение каталогов для хранения временных файлов, каталогов для пользовательских файлов, WebDAV, настройки http, ftp и параметры прокси-сервера, установки SMTP/POP/IMAP и LDAP, Active Directory (если нужно), настроить авторизацию и учетные записи, в том числе и включение анонимного пользователя (см. рис. 4). После внесения всех изменений нажимаем «Save». При первом запуске у меня появилось сообщение: Step 2 - Configuration* not completed* Your files directory '/var/lib/egroupware/default/ files' does not exist** Your backup directory '/var/lib/egroupware/default/backup' does not exist** Missing or uncomplete mailserver configuration*
администрирование
Рисунок 6. Окно администрирования eGroupware
Рисунок 7. Редактирование учетной записи пользователя
Устраняем: $ $ $ $ $
sudo sudo sudo sudo sudo
mkdir mkdir mkdir mkdir chown
/var/lib/egroupware/ /var/lib/egroupware/default/ /var/lib/egroupware/default/backup /var/lib/egroupware/default/files -R www-data:www-data /var/lib/egroupware
Третьим шагом настройки является создание учетной записи администратора, нажимаем кнопку «Create admin account». В появившемся окне заполняем данные пользователя, который будет обладать правами администратора, вводим пароль, установив флажок в «Create demo accounts» можно также автоматически еще и создать трех демонстрационных пользователей: demo/guest, demo2/guest and demo3/guest. Шаг четвертый «Language Management» нажимаем кнопку «Manage Languages» и в окне выбираем языки интерфейса, нажимаем «Install» и переходим к выбо-
№3, март 2007
ру приложений «Advanced Application Management». Здесь поступаем аналогично, нажимаем кнопку «Manage Applications», в таблице два основных столбца (см. рис. 5). В первом указаны установленные приложения, их версии и краткое описание, а во втором – действие над выбранным приложением – Install, Upgrade, Resolve и Remove. Сейчас можно удалить лишнее, установив флажок в Remove и нажав «Save», для выхода из меню нажимаем «Cancel». Последний, шестой шаг «DB backup and restore» позволяет сохранить резервную копию настроек (немедленно или установить расписание) и восстановить их при необходимости. По окончании настроек выбираем в меню «Back to user login», регистрируемся как пользователь-администратор. Рабочее окружение обычного пользователя будет выглядеть аналогично, только не будет кнопки «Админ». Нажав на которую можно: изменить настройки сервера, создать/удалить/редактировать учетные записи пользователей и групп, просмотреть журнал работы, изменить сообщение на главной странице и прочее (см. рис. 6). При редак тировании/создании учетных записей указываются: персональные данные пользователя (см. рис. 7), срок действия пароля, приложения, с которыми он может работать, принадлежность к группам. Аналогично и приложения: их можно удалить, отключить, изменить расположение в меню. На этом установк у сервера eGroupware можно считать завершенной. Осталось проверить работоспособность всех компонентов, завести пользователей и распределить их по группам. 1. Сайт предлагающий демоверсии Open Source-продуктов различных категорий: CMS, Groupware, WiKi, форумы, интернетмагазины и другие – http://demo.opensourcecms.com. 2. Сайт проекта eGroupware – http://www.eGroupware.org. 3. Сайт русскоязычных пользователей eGroupware – http:// eGroupware.ru. 4. Яремчук С. OpenGroupware.org, или последний кирпич в стене. //Журнал «Системный администратор», №10, 2004 г. – С. 12‑16. 5. Яремчук С. Защита PHP-приложений с Suhosin. //Журнал «Системный администратор», №11, 2006 г. – C. 74-77. 6. Проект «eGW install and security howto» – http://sourceforge.net/ projects/egwsec. 7. Проект XAMPP – http://www.apachefriends.org.
41
администрирование
KolibriOS: дайте ей шанс полетать на вашем компьютере
Сергей Кузьмин В середине февраля 2007 года новость о релизе KolibriOS 0.65 облетела весь Интернет. Еще бы: первая операционная система на Ассемблере, поддерживающая чтение разделов NTFS. У прочитавших эту новость сразу возникли вопросы: «Как появилась эта операционная система?», «Кто ее разрабатывает?», «Как ее установить?», «Что она предлагает пользователю и программисту?», «Каково ее будущее?»
Как появилась KolibriOS? ку для DOS. Ему хотелось, чтобы ти... В последних версиях велась рабоЭто ответвление (fork) некогда очень его программы на Паскале выпол- та над загрузчиком исполняемых файпопулярной в России 32-битной опера- нялись в многозадачном защищен- лов формата ELF, но наступил миллеционной системы MenuetOS. MenuetOS ном режиме и имели оконный графи- ниум, и программисты всего мира набыла искусственно разведена на две ческий интерфейс. Оболочка назы- чали говорить о Java, XML, скриптоветки: открытую для 32‑битных про- валась MultiRun Program for IBM-PC. вых языках и прочих технологиях. Вилцессоров и закрытую для 64‑битных. Программа обрастала возможностя- ле понял, что его 16-битная ОС устаЭтого искусственного разделения нет ми и со временем превратилась в са- рела и требуется что-то менять. С друв KolibriOS, которая работает на 32- модостаточную операционную систему гой стороны, ему не нравилось меди 64-битных процессорах. KolibriOS (DOS уже не требовался), которая за- ленное выполнение программ, напираспространяется согласно лицензии пускалась с дискеты. Называлась эта санных на интерпретируемых языках, GPL, как и Menuet32. операционная система MrOS (http:// наличие прослоек между программой Даже в кратком описании истории web.archive.org/web/20010810054655/ и железом. Он решил написать самое KolibriOS нельзя не упомянуть пред- www.cc.jyu.fi/~villemt/mr.html), а объем быстрое ядро в мире, и единственным шествовавшие ее появлению собы- ее исходных текстов на Паскале со- подходящим языком для этого оказалтия. ставлял 25 тысяч строк. В дистрибутив ся Ассемблер. Такое радикальное изВо второй половине 1990-х го- входили три десятка программ типа ча- менение курса вызвало недоумение дов финский студент Вилле Турь- сов, проигрывателя AudioCD, игр, син- у его соратника по MrOS. Ян-Микаэль янмаа писал графическую оболоч- тезатора пианино, регулятора громкос- Брюммер начал проект UNIX-подоб42
администрирование ной TabOS (http://www.tabos.org), хотя в дальнейшем он написал немного кода и для MenuetOS. Через несколько месяцев был выпущен релиз MenuetOS 0.01. Название было придумано еще во времена MrOS, но Вилле приберег его для новой ОС. Оно произошло от слов «Menu» и «Menuet», поскольку использование ОС должно быть простым (как работа с меню программ) и веселым занятием (как танец). В то время она разрабатывалась с помощью Ассемблера Nasm, и ее интерфейс был похож на интерфейс оригинальной MrOS. Например, некоторые части интерфейса MrOS (иконка готической буквы M и рисунок розы на экране завершения работы) использовались в MenuetOS несколько лет. Сообщество разработчиков MenuetOS было очень маленьким до 5 сентября 2001 года, когда было опубликовано интервью на сайте OSNews (http://www.osnews.com/ story.php?news_id=93). Операционная система с графическим интерфейсом, написанная на Ассемблере и помещающаяся на дискету, – подобного мир не видел с начала 1990-х годов (PC/GEOS, http://en.wikipedia.org/wiki/ GEOS_(16-bit_operating_system)). Люди загружали эту ОС, разносили весть о ней по форумам, создавали посвященные ей сайты. Отметим, что российские сайты были сделаны буквально через неделю после интервью. События 11 сентября 2001 года отвлекли внимание от MenuetOS, но развитие продолжалось. MenuetOS была еще сырым проектом, и в ней многого недоставало. К Вилле стали присоединяться разработчики. В начале 2002 года был портирован Ассемблер FASM, и стало возможным компилировать ядро и программы прямо в MenuetOS, что ускорило процесс разработки. Затем Майк Хиббет начал разработку сетевого стека и ряда сетевых программ, благодаря другим программистам появилась поддержка форматов bmp, jpeg, wav, доступ к шине PCI. В 2003 году в компьютерных изд аниях вышли обзорные с татьи о MenuetOS, которые привлекли к ней большое внимание в СНГ. Начался Menuet-бум, и сайт русскоязычного сообщества (http://menuet.narod.ru) занял одно из лидирующих мест по по-
№3, март 2007
MrOS – предыдущая разработка В. Турьянмаа
сещаемости среди сайтов операционных систем Рунета. Администратор сайта отмечал, что за год этого бума он получил 9588 писем и сайт посетили около 50 тысяч человек. Началась активная русификация MenuetOS, появлялись исправленные и новые программы. Появление российского дистрибутива стало неизбежным (отметим, что в 2001-2002 годах уже были российские сборки MenuetOS, которые расширяли ее возможности, но те исправления не были приняты в официальный дистрибутив). В июле 2003 года вышел немецкий дистрибутив Gershi. Через некоторое время он был немного обновлен и частично переведен на русский язык Ростиславом «Sniper» Окуловым. Эта переведенная версия не понравилась Ивану Поддубному, и он выложил свой собственный дистрибутив, назвав его Menuet RE#1 (RE – Russian Edition). Развитие этого дистрибутива заложило основы взаимодействия внутри сообщества пользователей и программистов СНГ. Было выпущено еще несколько релизов, но часть изменений и ряд новых программ были отвергнуты Вилле. Весной 2004 года Иван Поддубный заканчивал школу и поступал в университет. Из-за этого образовался перерыв со времени выпуска RE#6, и Марат Закиянов «Mario79» выпустил Kolibri 1, который включал в себя ис-
правления для драйвера FAT32. Название Kolibri было предложено Станиславом «VaStaNi» Валыйских, потому что ОС на Ассемблере должна быть компактной и быстрой. Через некоторое время были выпущены RE#7 и Kolibri 2, включающие в себя драйвер FAT16, автоматическое определение размера ОЗУ, поддержку gif. Летом 2004 года Ярослав Пельчар портировал Doom, Quake и несколько других игр с помощью своих наработок (С library). Вилле передал руководство Майку Хиббетту в июле 2004 года, мотивируя это занятостью из-за переезда в Париж. Что-то у него не заладилось с переездом, и в сентябре он начал писать ядро новой ОС – Menuet64. Русскоязычное сообщество узнало об этом только в ноябре. Осенью 2004 года Иван Поддубный выпустил 3 беты дистрибутива RE#8, которые включили в себя новую подсистему отрисовки GUI и плеер wav-файлов для материнских плат со встроенным звуком. В это время Майк Хиббет оказался слишком занят на работе и вернул руководство Вилле в конце декабря. Весной 2005 года Иван Поддубный выложил ядро, размер которого был уменьшен на 20% по сравнению с официальным при большей функциональности. Это ядро легло в основу дистрибутивов Kolibri 3 и Kolibri 3 SE, представивших улучшенный интерфейс поль-
43
администрирование драйверов и динамических библиотек, поддержкой DMA для жестких дисков и формата музыкальных файлов mp3. В последний на текущий момент релиз 0.65 включена поддержка файловой системы NTFS (только чтение и запуск программ), нестандартных курсоров мыши и изменения в нескольких десятках программ.
Кто ее разрабатывает?
KolibriOS в работе: игра «Гробница фараона», файловый менеджер KFM, программа для снятия скриншотов
зователя (минимизацию окон и модифицированная панель задач), расширение набора системных функций и поддержку формата rtf. В это время встал вопрос о лидере проекта. Вилле был занят развитием Menuet64 и не мог выпускать дистрибутивы, поэтому он предложил Ярослава Пельчара на роль лидера. После споров по ряду вопросов (почему Си‑программист становится лидером ОС на Ассемблере, почему разработчики из русскоязычного сообщества не могут претендовать на роль лидера) он был утвержден форумом. Все возлагали на него большие надежды после выпущенного им релиза 0.79pre1 и проведенного конкурса по написанию новых игр. Но он перешел в сообщество операционной системы Syllable через несколько месяцев. Выпущенный в июне дистрибутив Kolibri 4 принес автоматическое определение мыши и дисков/разделов ЖД, а также новый загрузочный экран, позволяющий выбирать частоту вертикальной развертки монитора. В июне 2005 года вышла Menuet64 0.01, и Вилле дал понять, что развитие этой ОС должно быть основной целью не только для него, но и для всего сообщества (хотя в то время 64-битных компьютеров ни у кого кроме него не было). Исходные тексты Menuet64 были закрыты, поэтому ведущих программистов сообщества Menuet32 она
44
В настоящий момент KolibriOS развивается благодаря усилиям трех десятков человек, среди которых есть представители Белоруссии, Бельгии, Германии, Казахстана, Молдавии, России, Узбекистана, Украины, Эстонии и ряда других стран. Примерно треть из нашей команды разработчиков участвовала в разработке оригинальной MenuetOS. С версии 0.60 сборкой дистрибутива занимается Евгений Гречников «Diamond». В июле 2006 года был открыт сайт http://kolibrios.org (администратор сайта – Михаил Семеняко «mike.dld»). Форум для русскоязычных пользователей находится на http://meos.sysbin.com.
не привлекла. Была продолжена работа над дистрибутивом Kolibri. Развитие Kolibri раздражало Вилле, и он поругался с нашей командой, что привело к разрыву отношений. Выход очередной версии Kolibri в октябре 2005 года стал знаковым: Как ее установить? поддержка FAT12 и менеджмент па- Для установки подойдет любой компьюмяти, улучшенный драйвер RAM-диска тер класса Pentium, 16 Мб ОЗУ и видеи новая семантика обращения к жес- окарта с поддержкой VESA. Для работким дискам. Различие между ядром ты ОС ее образ должен быть загружен Kolibri и MenuetOS достигло 50% – при- в память (в так называемый RAM-диск). знак того, что родилась новая опера- Запакованный в архив образ формационная система! Эта версия получи- та img вместе с документацией можла название KolibriOS 0.50 в знак со- но скачать на сайте http://kolibrios.org. хранения преемственности от дистри- Пользователям Windows может понабутива Kolibri. добиться программа WinImage для упИзменения в версиях 0.52 и 0.53 равления файлами внутри образа (накасались улучшения загрузочного эк- пример, обновления ядра и добавлерана, вывода шрифтов на экран, об- ния новых программ) – ее можно скаработки мыши, графического интер- чать на http://winimage.com. Сущестфейса ОС. Появилась поддержка MIDI- вует множество вариантов загрузки: файлов. с винчестера (FAT- или NTFS-раздел), В версии 0.58 были серьезные из- с дискеты, с компакт-диска, с flash-наменения в работе с жесткими дисками копителя. Подробности настройки за(в том числе поддержка длинных имен грузочных устройств изложены в дофайлов), появилась поддержка файло- кументации к ОС (файл install.txt). Таквой системы CDFS и стандарта управ- же можно запускать KolibriOS в виртуления питанием APM. альных машинах типа Bochs, Qemu, В версию 0.60 были включены улуч- VMWare. шения работы в некоторых графичесВо время загрузки появится синий ких режимах, в работе с мышью и жес- экран, где указываются некоторые наткими дисками, в ней также появилась стройки типа разрешения экрана. Изподдержка вывода ASCIIZ-строк. мените значения параметров (если наВыход KolibriOS 0.63 был связан стройки по умолчанию не устраивают) с внедрением поддержки внешних и продолжайте загрузку.
администрирование После загрузки появится рабочий стол. Для быстрого доступа к настройкам интерфейса можно использовать контекстное меню, появляющееся по щелчку правой кнопкой мыши на рабочем столе. Для настройки устройств раскрывайте главное меню: «Меню → Система → Настройка → Настройка устройств». Можно просто щелкнуть курсором по букве S на панели задач для вызова программы «Настройка устройств» (Setup). Настройка устройств заключается в конфигурации некоторых параметров работы, касающихся звуковой карты, раскладки клавиатуры и т. п. Для работы в KolibriOS важно знать, как выглядят пути к файлам. Путь к файлу b.bmp на первом разделе первого по индексу жесткого диска выглядит так: /hd0/1/b.bmp, на компактдиске – /cd1/1/b.bmp, на дискете – /fd/1/ b.bmp, а на RAM-диске – /rd/1/b.bmp.
Что KolibriOS предлагает пользователю и программисту?
рисунки. KolibriOS оснащена отличным скринсейвером. По какой-то непонятной причине для MenuetOS и KolibriOS больше всего разрабатывалось файловых менеджеров (не менее 7 программ). Сейчас наиболее часто обновляются менеджеры KFAR (аналог FAR) и KFM (аналог Total Commander). В скором времени KFAR будет поддерживать распаковку архивов в форматах zip и 7z. Есть несколько десятков игр (тетрис, арканоид, «15», сапер, шашки, сокобан и др.), в том числе портированные версии Doom и Quake. Многие игры можно запускать в портированных DOSBox и ScummVM. Существует несколько программ для идентификации, мониторинга состояния, тестирования компьютерного железа (процессора, материнской платы и других устройств). Хотя сетевой стек пока еще дорабатывается (ведутся работы над поддержкой обработки прерываний от сетевых карт), но сетевых программ уже написано несколько десятков. Есть даже две научные программы – таблица Менделеева и программа для мессбауэровской спектроскопии. Разработчик может писать библиотеки, драйверы и программы не только на Ассемблере, но и на языках высокого уровня типа С++, С, C--, Modula, Паскаль, Форт. Инструкции по использованию некоторых компиляторов языков высокого уровня есть в статье http://diamondz.land.ru/hll/hll.htm. Есть компрессоры исполняемых файлов, hex-редакторы и средства отладки. Есть эмуляторы для запуска программ Kolibri/Menuet32 в Windows, что ускоряет процесс разработки.
Для KolibriOS разработано более 250 программ. Конечно, это немного в сравнении с ОС, разработка которых началась еще в 80-90-х годах (Windows, Linux, BeOS, *BSD), но отсутствие программ как раз привлекает разработчиков, выступая в качестве хорошей возможности опробовать свои силы. Благодаря портированному DOSBox возможно запускать еще тысячи программ, написанных для DOS. Оф и с н ы х п р о г р а м м н е м н о го, но текстовый редактор TINYPAD является продвинутым (многодокументный интерфейс, смена кодировки, подсветка синтаксиса, нумерация строк, компиляция исходных текстов прямо из редактора) в сравнении с аналогами из любых других ОС. Также есть воз- Каково ее будущее? можность просмотра файлов формата Летом (2007 года) планируется переrtf в программе RTFREAD. Естественно, писать ядро и программы для ускореесть календарь, калькулятор и англо- ния работы на 64-разрядных процесрусский словарь. Можно просматри- сорах. Это изменение приведет к невать архивы в форматах zip, tar.gz. возможности запускать программы Для любителей мультимедийных Menuet32 в KolibriOS, но мы мало что развлечений есть возможность про- теряем, поскольку Menuet32 практисмотра графических файлов форма- чески не развивается. тов bmp, gif, jpeg, png и 3ds, прослуУже положено начало единой бибшивания музыкальных файлов фор- лиотеке элементов графического инматов mid, mp3, wav и обычных аудио- терфейса, что ускорит разработку дисков. Редактор графики ANIMAGE новых программ и их функциональпозволяет создавать и редактировать ность. В планах разработчиков: под-
№3, март 2007
держка шрифтов TrueType; улучшение мультимедийных, офисных и сетевых программ; портирование компилятора языка Cи (уже есть наработки по Tiny C Compiler и Open Watcom); расширение функциональности в работе с файловыми системами; создание системного буфера обмена; поддержка USB и SMP.
Заключение Несомненными преимуществами KolibriOS перед многими другими операционными системами на дискете являются: большое количество программ, возможности обращения к внешним дисковым накопителям и сохранения результатов работы, высокое быстродействие, настраиваемый и приятный интерфейс, открытость исходных текстов. Ее можно рекомендовать программистам, желающим попробовать свои силы в создании ОС или изучении Ассемблера. Наличие эмулятора DOS и набор интересных игр могут привлечь внимание детей, обучающихся использованию компьютера. Вместе с тем она достаточно функциональна и может использоваться для замены Windows в ряде задач. Одна из американских компаний уже несколько лет использует MenuetOS и KolibriOS на своих компьютерах. Поскольку KolibriOS разрабатывается в основном разработчиками из СНГ и распространяется бесплатно, то проблем с ознакомлением с ОС и установлением контактов c сообществом у заинтересовавшихся не будет. 1. О ф и ц и а л ь н ы й с а й т – h t t p : / / kolibrios.org. 2. Форум русскоязычных разработчиков – http://meos.sysbin.com. 3. Форум зарубежных разработчиков – http://meos32.7.forumer.com. 4. С татья об ус тановке на flash- накопитель – http://www.kolibri.hut1.ru/ load_usb.htm. 5. Обзор С. Кузьмина (2004 год) – http:// comprice.ru/pop/2004-50.phtml. 6. Обзор М. Закиянова (2005 год) – http:// kolibri.hut1.ru/info.htm. 7. Ис тория MenuetOS от С. Кузьмина и А. Халявина (2005 год) – http:// coolthemes.narod.ru/history2.html. 8. О ф и ц и а л ь н ы й с а й т M e n u e t 3 2 и Menuet64 – http://menuetos.net.
45
администрирование
Корпоративный MAIL RELAY-сервис E-mail + UNIX + Exchange
Яков Коваленко Ваша почтовая система основана на MS Exchange, и вы опасаетесь подключать его напрямую в Интернет? Или вам требуется большая гибкость в маршрутизации и фильтрации почты, чего не может обеспечить упомянутый продукт? Так или иначе – UNIX‑сервер и Sendmail с правильной настройкой избавят вас от головной боли и дадут мощные инструменты для работы с почтой.
В
российских компаниях в больш и н с т в е с л у ч ае в гл а в н ы м почтовым сервером является MS Exchange. Я не буду говорить ни плохих, ни хороших слов в его адрес, возьмем за данность, что он доминирует. Как известно, продукты от MS часто подвергаются нападениям и становятся жертвами взломов, если они выставлены напрямую в Интернет. В связи с этим позиции UNIX-систем выглядят более чем привлекательно, и крупные компании стараются сделать front‑end именно из UNIX-систем.
Как это реализуется? Схема очень проста. Exchange-сервер устанавливается в изолированной от внешнего Интернета локаль-
46
ной сети. Обычно Exchange устанав- Exim или другому MTA. Sendmail явливают на Высоконадежный Кластер, ляется на сегодняшний день одним во избежание простоев из-за аппа- из наиболее популярных агентов ператных сбоев. Поток почты поступает редачи сообщений в UNIX-подобных на Exchange через MX-серверы (Mail операционных системах. Кроме того, Exchangers, от названия DNS-записи, многие авторитетные люди признауказывающей, какому серверу следует ют его наиболее надежным и универпередавать почту), которые находятся сальным MTA из доступных в настояпод управлением UNIX-систем, не важ- щее время. но каких, Solaris, Linux, FreeBSD. Я соMX-серверы устанавливаются либо ветую ставить 3 MX-сервера для сред- в DMZ, либо одним сетевым интерфейней нагрузки в 20 000 – 50 000 сооб- сом подключены к Интернету, а другим – в приватную сеть. Так или инащений в день. Сломать UNIX-сервер в общем че, у сервера должно быть соединение случае сложнее, чем Windows-сервер, с Интернетом и с приватной сетью. при должном администрировании задача взломщика усложняется в разы. Конфигурирование В описываемом случае на UNIX- Sendmail сервере работает MTA Sendmail, хотя В нашем конфигурационном файле общие принципы применимы к Postfix, sendmail.mc прописываем строку:
администрирование FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
В файле mailertable прописываем домен или домены, почту для которых мы принимаем, и адрес сервера, куда мы переправляем почту. mydomain.ru smtp8:[XXX.XXX.XXX.XXX] mydomain.com smtp8:[XXX.XXX.XXX.XXX]
На место XXX.XXX.XXX.XXX требуется поставить IP-адрес Exchange-сервера, тогда весь поток почты будет передаваться на него. В access-файле нужно прописать: To:mydomain.ru RELAY To:mydomain.com RELAY XXX.XXX.XXX.XXX RELAY
На место XXX.XXX.XXX.XXX требуется поставить IP-адрес Exchange-сервера, тогда мы сможем принимать и пересылать почту от него. После всех этих манипуляций нужно пересобрать sendmail.cf, access и mailertable. Это можно сделать либо отдельно для каждого файла, как инструкции к Sendmail, а можно создать в директории, где эти файлы расположены (в данном случае /etc/mail), Makefile с содержанием: POSSIBLE && POSSIBLE && POSSIBLE && POSSIBLE && CFFILES
+= $(shell test -f bitdomain echo bitdomain.db) += $(shell test -f uudomain echo uudomain.db) += $(shell test -f genericstable echo genericstable.db) += $(shell test -f userdb echo userdb.db) = sendmail.cf submit.cf
↵ ↵ ↵ ↵
all: ${CFFILES} ${POSSIBLE} virtusertable.db access.db ↵ domaintable.db mailertable.db userdb.db : userdb @makemap btree $@ < $< %.db : % @makemap hash $@ < $< %.cf : %.mc @if test -f /usr/share/sendmail-cf/m4/cf.m4; then \ mv -f $@ $@.bak; \ m4 $< > $@; \ fi; clean: rm -f *.db *~
(взято с RHEL, во FreeBSD есть аналогичный метод). Тогда можно будет дать команду make и перезапустить Sendmail. Все, сервер принимает почту для наших доменов и пересылает ее Exchange-серверу. Указанные операции необходимо проделать на всех MX-серверах. На Exchange нужно указать UNIX-серверы в качестве смарт-хостов для пересылки почты. Как это конкретно делается – несложно найти в руководстве к Exchange. Теперь много работы перекладывается на UNIX-серверы. Например, можно на этапе приема проверять почту в авторитетных DNSBL, фильтровать на вирусы и спам. Теперь, даже если Exchange-сервер выйдет из строя, почта будет накапливаться на MX-сервере и, как только проблема решится, он передаст ее по назначению. Ну и самое главное – наша почтовая система защищена и производительна, в Интернет смотрят только UNIX-серверы, и даже
№3, март 2007
если один из них выйдет из строя – никто (надеюсь, кроме системного администратора) этого не заметит, так как рабочие MX-серверы примут на себя часть нагрузки от вышедшего из строя сервера.
Проблемы с мусорным трафиком Сразу встает следующий вопрос – «Если почтовые ящики не хранятся локально на UNIX-сервере, то это значит, что Sendmail не знает, какой адрес существует, а какой нет, и будет принимать все письма с адресом, содержащим наш домен. Как быть с мусорным спам-трафиком, который отправляется зачастую на несуществующие адреса и вообще с бессмысленным набором символов?». Действительно, спамеры так и делают – отправляют письмо на совершенно немыслимые адреса в нашем домене, например eokrjglskjg@mydomain.com. Или, например, некоторые сотрудники уволились, а почта им идет. Если бы отправляющий сервер соединялся непосредственно с Exchange-сервером, то Exchange сказал бы, что не знает такого адресата и почту не примет. А в нашем случае ему приходится отвечать на попытки отправить почту на несуществующие адреса уже нашим MX-серверам, которые приняли эту почту, потратили на нее трафик и, самое обидное, в большинстве случаев они не смогут отправить уведомление о недоставке, так как отправитель тоже, скорее всего, вымышленный. Доля таких писем составляет порядка 75%, что в масштабе больших предприятий выливается в очень солидные затраты на интернет-трафик. Проведя многие часы в поисках, я так и не нашел готового удобоваримого способа решить эту проблему. Но выход есть! С помощью Perl можно написать Milter, – программу фильтрации почты на этапе SMTP-сессии. Сразу хочу сказать, что я не такой хороший программист на Perl, как этого хотелось бы, но написанный мной скрипт замечательно работает на загруженных серверах и экономит до 60-75% почтового трафика. Итак, схема работы сервиса. Perl-скрипт принимает от Sendmail содержание RCPT TO, что является адресом получателя. Через модуль Net::Telnet генерирует telnet-сессию, через которую опрашивает Exchange-сервер на предмет наличия или отсутствия адреса. На основании полученного ответа или пропускает письмо, или отказывает в приеме. Для более производительной работы и для того чтобы по каждому письму не беспокоить Exchange-сервер, создается база существующих адресов, куда заносятся на сутки нормальные адреса и по их поводу Exchange уже не опрашивается. Просто и логично. Для этого потребуется – сам Perl, модули Sendmail::Milter и Net::Telnet. Sendmail должен быть собран с libmilter. В последних версиях это делается по умолчанию. Устанавливать модули для Perl удобнее всего так: perl -MCPAN -e shell
Если вы делаете это в первый раз, скрипт задаст кучу вопросов. Ответов по умолчанию, в общем случае, должно хватить, хотя возможны варианты. Когда появится приглашение cpan, введите: install Net::Telnet
47
администрирование Аналогично с Sendmail::Milter. Для установки Sendmail::Milter файл Makefile.pl требует наличия исходных кодов Sendmail. Если вы собирали из них, то проблем возникнуть не должно, но если у вас rpm или pkg, то потребуется несколько дополнительных телодвижений. Установите devel-пакет Sendmail. Запустите скрипт:
use use use use my
#!/bin/sh SRC_DIR=/usr/local/src/sendmail mkdir -p ${SRC_DIR}/include cp `rpm -ql sendmail-devel | grep '\.h$’` ↵ ${SRC_DIR}/include/ mkdir -p ${SRC_DIR}/libmilter cp `rpm -ql sendmail-devel | grep '/lib’` ↵ ${SRC_DIR}/libmilter/ cd /root/.cpan/build/Sendmail-Milter-* perl Makefile.PL ${SRC_DIR}/ ${SRC_DIR}/
Скрипт будет работать на RedHat-совместимых дистрибутивах Linux. Чтобы он заработал на других UNIX-подобных операционных системах, нужно найти аналог команды «rpm -ql» (вывести листинг файлов, относящихся к пакету). Например, в Solaris нужно с помощью утилит grep и awk отфильтровать файл /var/sadm/install/contents. Далее в /root/.cpan/build/Sendmail-Milter-* дайте последовательно команды: make make test make install
Должно заработать. Итак, если установлены все необходимые модули, можно настраивать и запускать Perl-Milter. Потребуется: 1. Добавить в sendmail.mc описание Milter. 2. Создать сам скрипт /usr/local/milters/mxcheck/mxcheck.pl. 3. Создать init-скрипт /etc/init.d/mxcheck. 4. Пересобрать sendmail.cf. 5. Перезапустить sendmail. 6. Запустить mxcheck. В sendmail.mc добавляем: INPUT_MAIL_FILTER(`mxcheck', ↵ `S=local:/var/run/mxcheck.socket') define(`confINPUT_MAIL_FILTERS’,`mxcheck’)
Я не могу точно сказать, есть ли очередность мильтеров, но лучше поставить mxcheck до остальных мильтеров, если они у вас есть. Создаем скрипты и настраиваем их. Листинг скрипта mxcheck.pl с комментариями: #!/usr/bin/perl # # Любой продукт можно бесконечно оптимизировать и развивать. # Скрипт должен послужить только отправной точкой. # Здесь описаны лишь основные моменты, но они работают. # Готовый продукт вы должны написать для себя сами. # # # Определяем переменные и модули # use Sendmail::Milter;
48
Net::Telnet (); Socket; AnyDBM_File; strict; ( $uncheck, $scriptname, $sendmail_cf, $error_code, $reply, $exchangeip, $debug, $time, $basedir, %validsbase, $validsbase, $TTL, $rcpt_to, $line, $smtp, $msg, $IP, $enh_error_code );
# # Директория, в которую кладется база # $basedir = "/etc/mail"; # # Название кэш-базы # $validsbase = "validmails"; # # Имя скрипта для поиска коннект-информации в sendmail.cf # $scriptname = "mxcheck"; # # Местоположение конфигурационного файла Sendmail # $sendmail_cf = "$basedir/sendmail.cf"; # # Адрес Exchange-сервера, у которого мы будем спрашивать # существование адресов # $exchangeip = "10.1.0.10"; # # Адрес или подсеть, которая считается «своей», и почта # от которой не проверяется # $uncheck = "10.1"; # # Режим отладки. Если поставить 1 – будет выдавать # на STDOUT отладочные сообщения # $debug = 0; # # Время жизни адреса в кэш-базе. Секунды # $TTL = 86400; # # # # #
Определяем, какие SMTP-запросы нам нужно принять и обработать в скрипте. Здесь мы используем только адрес получателя и информацию о подключении, хотя можно использовать и другие. Почитайте мануал, очень интересно my %mx_callbacks = ( 'connect' => 'envrcpt' =>
\&connect_callback, \&callback_rcptto,
); # # Инициализируем Milter # BEGIN: { @AnyDBM_File::ISA = qw(DB_File); my($conn) = Sendmail::Milter::auto_getconn ↵ ("mxcheck", "$sendmail_cf"); print "Found connection info for milter: $conn\n"; if ($conn =~ /^local:(.+)$/) { my $unix_socket = $1; if (-e $unix_socket) { print "Attempting to unlink UNIX socket '$conn'\n";
администрирование if (unlink($unix_socket) == 0) { print "failed\n"; exit(); } print "successful\n"; }
return SMFIS_CONTINUE; if ($debug == 1) { print "Cannot open base \n"; } } if ($validsbase{$rcpt_to} ) { if ($debug == 1) { print "$rcpt_to FOUND in base \n"; }
} if (not Sendmail::Milter::auto_setconn ↵ ("$scriptname", "$sendmail_cf")) { print "Failed to detect connection information\n"; } elsif (not Sendmail::Milter::register ↵ ("$scriptname", \%mx_callbacks, SMFI_CURR_ACTS)) { print "Failed to register callbacks for milter\n"; } else { print "Starting Sendmail::Milter ↵ $Sendmail::Milter::VERSION engine\n";
if (Sendmail::Milter::main()) { print "Successful exit from the Sendmail::Milter \n"; } else { print "Unsuccessful exit from the Sendmail::Milter \n"; } } }
# # Похоже, что есть. Посмотрим TTL # $valid = ($time - $validsbase{$rcpt_to}); if ( $valid < $TTL) { if ($debug == 1) { print "$rcpt_to ALIVE TTL is ". ($valid - $TTL) ." time left - ". (($valid - $TTL) / 3600) ." hours \n"; } # # Есть и TTL не истек. Пропускаем # return SMFIS_CONTINUE; } else { delete $validsbase{$rcpt_to}; # # Есть, но TTL истек, удаляем из базы и продолжаем проверку # if ($debug == 1) { print "$rcpt_to DEAD. erasing \n"; } }
# # Получение информации о подключении # sub connect_callback { my $ctx = shift; my $hostname = shift; my $sockaddr_in = shift; my ($port, $iaddr); if ($debug == 1) { print "connect:\n"; print " + hostname: ‘$hostname’\n"; } # # Если к нам подключился сервер из доверенной подсети – # никаких проверок # if (defined $sockaddr_in) { ($port, $iaddr) = sockaddr_in($sockaddr_in); $IP = inet_ntoa($iaddr); if ($IP =~ /^$uncheck/) { if ($debug == 1) { print "$IP in ALLOWED list.\n"; } return SMFIS_ACCEPT; } if ($debug == 1) { print " port: '$port'\n"; print " iaddr: '" . inet_ntoa($iaddr) . "'\n"; } } return SMFIS_CONTINUE; } # ## Проверка адреса в Exchange # sub callback_rcptto { # # Получаем информацию об адресате # my $time=time(); my $ctx = shift; my $rcpt_to = shift; $rcpt_to = lc($rcpt_to); $rcpt_to =~ s/\s*\<(.+?)\>\s*/$1/; my($href) = $ctx->getpriv(); $ctx->setpriv($href); # # Посмотрим, есть ли этот адрес в кэш-базе # unless (dbmopen(%validsbase,"$basedir/$validsbase",0600)) {
№3, март 2007
} dbmclose(%validsbase); # # Если адрес не найден в кэш-базе или TTL истек – # проверяем на Exchange # if ($debug == 1) { print "Go to exch \n"; } # # Запускаем подпрограмму проверки на Exchange # &check_exch($rcpt_to); $line =~ s/[\r\n]+$//; # # Возвращен ответ, начинающийся на 550, это означает, # что нет такого адреса # if ($line =~ /^550/) { $error_code = '554'; $enh_error_code = '5.1.1'; $reply = 'Unroutable address'; $ctx->setreply($error_code, $enh_error_code, $reply); # # Пишем сообщение и отказываем в приеме # return SMFIS_REJECT; } # # Возвращен ответ, начинающийся на 250, это означает, # что такой адрес есть # elsif ($line =~ /^250/) { $reply = $rcpt_to; $ctx->setreply('250', '2.1.5', $reply); # # Сохраняем его в кэш-базе на сутки # unless (dbmopen(%validsbase,"$basedir/$validsbase",0600)) { return SMFIS_CONTINUE; if ($debug == 1) { print "Cannot open basefile \n"; } } $validsbase{$rcpt_to} = $time; dbmclose(%validsbase); # # Принимаем почту # return SMFIS_CONTINUE; } # # Если ни то и ни другое – все равно принять, # на всякий случай # else { return SMFIS_CONTINUE; } } # # Проверка на Exchange #
49
администрирование sub check_exch { my($rcpt_to) = @_; if ($debug == 1) { print "connecting to ↵ $exchangeip as $rcpt_to \n"; } # # Устанавливаем Telnet-соединение с Exchange-сервером # $smtp = new Net::Telnet (Telnetmode => 0); $smtp->open(Host => $exchangeip, ↵ Port => 25, Errmode => "return"); if ($debug == 1) { print "Processing ↵ Telnet... please wait - $smtp \n"; } # # Обрабатываем возможные ошибки # $msg = $smtp->errmsg; if ($debug == 1) { print "Debug info - $msg \n"; } # # Если ошибка подключения – принимаем почту, # на всякий случай # if ($msg) { if ($msg =~ /^problem/) { $line = 250; if ($debug == 1) { print "connecting ↵ to $exchangeip falled \n"; } return $line; exit; } else { $line = 250; if ($debug == 1) { print "Unknown error ↵ with Telnet session \n"; } return $line; exit; } } # # Получаем первое SMTP-сообщение от сервера # $line = $smtp->getline; if ($debug == 1) { print "$line \n"; } # # Отправляем HELO # $smtp->print("HELO mail.mydomain.ru"); $line = $smtp->getline; if ($debug == 1) { print "$line \n"; } # # Отправляем MAIL FROM:<> # $smtp->print("MAIL FROM:<>"); $line = $smtp->getline; if ($debug == 1) { print "$line \n"; } # # Отправляем RCPT TO с адресом получателя # $smtp->print("RCPT TO:<$rcpt_to>"); $line = $smtp->getline; if ($debug == 1) { print "$line \n"; } # # Отправляем QUIT # $smtp->print("QUIT"); # # Возвращаем результат – ответ сервера # return $line; }
В общем случае этого скрипта должно хватить. Но если вам необходимо делать много исключений – придется кое-что изменить. Но это уже тема программирования на Perl, которая выходит за рамки этой статьи. С помощью Milter с почтой можно делать почти все, что угодно. Листинг init-скрипта: #!/bin/sh # Source function library.
50
. /etc/rc.d/init.d/functions RETVAL=0 milter_path="/usr/local/milters/mxcheck" milter_name="mxcheck.pl" start() { # Start daemons. echo -n "Starting $milter_name: " $milter_path/$milter_name & sleep 2 RETVAL=$? echo return $RETVAL } stop() { # Stop daemons. echo -n "Shutdowning $milter_name: " killproc $milter_name RETVAL=$? echo PID=`ps axwu | grep $milter_name | ↵ grep perl | gawk '{print $2}'` if [ ! -z "${PID}" ]; then kill ${PID} 2>/dev/null sleep 1 fi return $RETVAL } # See how we were called case "$1" in start) start RETVAL=$? ;; stop) stop RETVAL=$? ;; restart) stop sleep 2 start RETVAL=$? ;; status) status $milter_name RETVAL=$? ;; *) echo "Usage: $0 { start | stop | restart | status }" exit 1 esac exit $RETVAL
Пересобираем sendmail.cf: cd /etc/mail make
Перезапускаем сервисы: /etc/init.d/sendmail restart /etc/init.d/mxcheck start
Если все настроено правильно и все запустилось – поздравляю, у вас правильная система, которая еще и трафик экономит.
Благодарности Огромное спасибо Виктору Устюгову aka Сorvax за советы и помощь в борьбе со спамом на relay-серверах. Большое спасибо моим коллегам по работе Григорьеву Игорю Григорьевичу и Королеву Игорю Александровичу за помощь в Perl и UNIX.
человек номера
Советы Джона Чемберса Президент и главный управляющий Cisco Systems учится на чужих и своих ошибках. А молодые топ‑менеджеры изучают его биографию.
Никогда не сдавайся У Джона Чемберса, ныне всесильного руководителя Cisco, немало наград. Их названия звучат довольно высокопарно – человек, получивший «Достижение жизни» от Смитсоновского института, «Достойный лидер промышленности», или «Самый сильный человек в Сети» от Network World, может собой гордиться. У Джона причин гордиться больше, чем у кого-либо другого. В детстве ему поставили диагноз «дислексия» и готовы были признать необучаемым. Однако у парня оказался сильный характер, да и с родителями повезло. Не только потому, что Чемберс-старший был высокооплачиваемым акушером-гинекологом, которому сам губернатор штата Западная Вирджиния доверил принять всех своих детей. Не только потому, что мама была хорошим психологом. И даже не потому, что первые бизнес-уроки мальчик получил в собственном ресторане Чемберсов в Чарльстоне. Важнее всего, что в семье царили лад и согласие. Родители во всем поддерживали своего сына и активно помога- жинии и с тем же упорством, с каким ну и он сам – тезки) отсчитываетли ему справиться с болезнью – наня- штудировал школьные предметы, про- ся с 1976 года. В начале пути опять ли специалиста по обучению чтению шел вузовский курс, получил степень не обошлось без проблем, связанЛорин Андерсен-Уолтерс. Джон не об- по юриспруденции. Но Джон не был ных с неприятием политики руководсманул ожиданий папы и мамы, он при- книжным червем. Наоборот, любил тва компании, как это было в IBM, лежно учился в школе. Лорен вспоми- компании и командные виды спор- где, вспоминает Чемберс, «я научилнает: «У него был ко всему очень оп- та, например, баскетбол. Даже тен- ся, чего не надо делать. Было видно, тимистичный подход. Он просто не со- нис предпочитал парный. Закончив что менеджмент все дальше и дальше бирался проигрывать. Недавно я слы- вуз, Джон интуитивно почувствовал, отходит от покупателя, а менеджеры шала его выступление по телевиде- что «доктор права» останется лишь утверждают, что лучше знают, что понию и поняла, что он остался таким красивыми буквами перед его фами- купателю нужно». Были проблемы, свяже оптимистом». Она права. Извест- лией. Не по душе ему эта сфера… Рас- занные с появлением нового босса но, что своих служащих мистер Чем- страиваться? Как бы не так! Чемберс в компании Wang Laboratories, где Джон берс любит приветствовать забавной отправился в Индиану, опять поступил Чемберс дослужился до исполнительфразой: «Веселитесь?». в университет и стал магистром дело- ного вице-президента, но был вынужден уйти, так как уважаемый им наОднако вернемся к детству и юнос- вого администрирования. ти. Закончив школу, Чемберс постуРабочий ста ж Д жона-младше- чальник, основатель фирмы Ан Ванг, пил в университет Западной Вирд- го (отец топ-менеджера, а также сын, умер, а его сын Фрэд не смог, получив
52
человек номера бразды правления, удержать компанию в лидерах. Wang Laboratories упорно производила дорогие офисные компьютеры, в то время как все остальные двигались к персональным. Акции компании резко подешевели. Уволив пять тысяч работников, Чемберс и сам подал в отставку…
Двигайся вперед и с прибылью Судьба продолжала испытывать Джона Чемберса даже когда он, казалось бы, достиг своей «бухты», стал деловым лидером огромного интернет-ориентированного бизнеса и идейным лидером интернет-экономики. У него не просто покупали продукцию фирмы Cisco. Люди приняли его философию, взгляд на современный мир. Бизнесмены, покупатели, целые правительства поверили руководителю крупнейшей IT-компании, что новые технологии помогут им работать быстрее, эффективнее и с удовольствием. В марте 2000 года активы Cisco достигли 555 млрд. долларов, на короткий срок сделав ее самой ценной компанией в мире! Но тот же 2000 год стал роковым для Cisco. Неожиданный экономический спад в сфере информационных технологий привел к тому, что легендарный рост продаж компании практически остановился. 8 500 работников, т.е. более 17% от общего числа персонала, были уволены. Огромные складские запасы добавили 3,4 млрд. долларов в непроизводительные расходы, приводя к тяжелейшим, ранее неслыханным квартальным убыткам. Инвесторы отреагировали снижением биржевой котировки Cisco более чем на 50% за первые три с половиной месяца 2001 года, выбив ее из десятки американских компаний с наивысшей рыночной стоимостью. В этой ситуации Джон Чемберс не только не пал духом, но сумел извлечь уроки, выработать своего рода «курс борьбы с неприятностями». В самый разгар бед, назначив себе самому символическую зарплату в один доллар, он умудрился дать уверенное интервью Fast Company, в котором спокойно предсказал: «Вы будете писать статью через 6 или 12 месяцев – когда произойдет очередной поворот экономики, – о том, как Cisco справи-
№3, март 2007
Выступления Джона Чемберса не только чему-то учат, но и вдохновляют на свершения!
лась с кризисом в своем классичес- и привлекаете сотни, тысячи парком стиле и снова вырвалась вперед. тнеров к сотрудничеству с вами. Мы сделали это и в 1991-м, и в 1994‑м, Как это у вас получается? и в 1997-м, и мы надеемся сделать это Нужно рисковать. Это необходимое кав 2000‑2001-м». чество. Мы очень внимательно прислуВот небольшие фрагменты того па- шиваемся к нашим клиентам, и, если мятного интервью в июне 2001 года. видим, что они хотят нечто, еще отсутствующее на рынке, реагируем. В идеЗаголовки полны плохими новостя- але мы предпочитаем передвигаться ми. При таком состоянии экономи- к новым рынкам вместе с партнерами ки что все же может вызвать энту- по «экологической нише». Но очень зиазм? часто нам приходится сильно опереОтличный вопрос. Я уже давно понял, жать рынок. А партнеры не всегда хочто мир надо воспринимать таким, ка- тят рисковать. Поэтому мы часто самоков он есть, а не таким, каким ты хо- стоятельно разрабатываем новый прочешь, чтобы он был. Так вырабаты- дукт для рынка в полной уверенности, вается характер. Опыт поучительный что через какое-то время мы передаи не слишком приятный. Но в высшей дим его производство партнерам, котостепени важный для построения вели- рые будут вести массовое производских компаний. тво эффективнее, чем мы, и с меньшиНужно перейти от погони за рос- ми издержками. том абсолютного дохода к обеспеПрекрасный пример – наш интерчению прибыльности капиталовло- нет-телефон. Сейчас мы производим жений, как кратко-, так и долгосроч- его сами, но это временно. Мы начали ных. Я оцениваю свою команду по то- с нуля в прошлом году, а теперь продаму, насколько хорошо они добивают- ем по 2000 штук в день. Мы дали толся прибыльной части рынка, а не по чок рынку и обеспечили надежность количеству сделок. Важно, сколько нового продукта, что очень важно потребители будут тратить и как по- для потребителей. Но была еще одна лучить наибольшую часть этих трат. причина такой стратегии – наши парВ этом больше смысла, чем в стена- тнеры были не в состоянии двигаться ниях типа: «Ах, в этом году мы растем так быстро, как мы этого хотели. не так быстро, как в прошлом, разве это не ужасно?!» Можете ли вы, входя в новый многообещающий рынок, нести убытки Трудности в разгаре, но вы тем не ме- или иметь нулевую прибыль? нее считаете, что даже в этих усло- Нет. Это одна из вещей, которую нужвиях можно развиваться, да еще но знать: всегда фокусируйтесь на при-
53
человек номера
«Пусть изначально прибыль будет не очень высокой, упорно добивайтесь её роста»
быльных вложениях. Когда вы входите на новый рынок, то, по определению, начальная прибыль не будет высокой, но вы должны добиваться роста прибыли. Большая ошибка – гоняться за увеличением доли рынка, а не за разумной прибыльностью.
Помни о человеческом факторе Джон Чемберс всегда был «консерватором». Попав в Силиконовую Долину в 1990 году, он сразу выделился своим внешним видом – аккуратный костюм, хорошие манеры, в то время как вокруг него были полусумасшедшие программисты в джинсах и футболках, которые готовы были ночевать на рабочем месте, лишь бы не расставаться с компьютером. А Чемберс думал не столько о продуктах, которые производила Cisco, сколько о людях, на которых работала компания. И о людях, которые работали в компании. Именно при Чемберсе Cisco начала поиск талантов для технологического бизнеса. Он воплотил в жизнь специальную программу рекрутирования. Хотя к середине 90-х у Cisco была репутация фирмы, где работать престижно и интересно, в ней не ждали, когда кандидаты придут сами. Рекрутеры выискивали способных молодых людей повсюду, даже на частных вечеринках. Была создана веб-страница, которая подбирала каждому соискателю своего собственного «друга» в Cisco – человека, который лич-
54
но позвонит соискателю и расскажет ему о своем опыте работы в компании. Кстати, за такие консультации сотрудники Cisco получали премии. Более тысячи служащих воспользовались этой программой. Руководящий стиль Джона Чемберса весьма необычен: он разделяет обязанности своих менеджеров методом, который условно называется «Разделяй и расти». Вот как сам руководитель Cisco описывает этот метод: «Чем успешнее действует группа, тем больше оснований для ее разделения. Это позволяет сфокусироваться на покупателе. Группа фокусируется на достижении цели. Если ваш стиль – отношения «верх-низ» и централизация, у вас будет полная эффективность, но ограниченный рост. Если же вы хотите роста в столь же многих областях, как и мы, вам не обойтись без делегирования полномочий отдельным сотрудникам. У нас сеть и специализированная база данных, которые позволяют это осуществить». И еще один важный «штрих». Чемберс знает, что обязательно нужны превентивные меры, необходимо заранее подготовить людей к нарушениям деловых циклов. Ведь может случится не только потрясение экономики, как в 2000 году, но спад в результате перехода от одного поколения продукции к другому, радикальных изменений во взглядах потребителя на добавленную стоимость… «Мы постоянно ищем точку поворота – в лучшую или худшую
сторону – и спрашиваем себя: как же нам приспособиться? Мы учимся смотреть на такие ситуации не как на проблему, а как на возможности оторваться от всех остальных. На самом деле вы получаете большую долю рынка в трудные времена. Этому вы должны помочь научиться всей вашей команде, особенно новым менеджерам. Даже некоторые «старички» забывают, каково это. Нужно указывать направление вашей команде, заставлять ее впрягаться и тянуть в этом направлении. Быть лидером – это внушать людям уверенность и в то же время заставлять их шевелиться, понимать, что скорость – единственный реальный шанс реально получить свою долю рынка». Когда читаешь эти строки, понимаешь, что в Джоне Чемберсе «умер» преподаватель. Не зря Cisco в 1997 году учредила Сетевую академию для обучения молодых людей компьютерному конструированию. Не зря пару лет назад компания предоставила на 18 млн долларов услуг и оборудования 57 образовательным учреждениям США. Cisco поддерживает такие молодежные программы, как «Интернет-школы», «Киберярмарка», «Виртуальная школа»… Хороший отец – у Джона Чемберса уже взрослые сын и дочь, хороший муж – всю жизнь от женат на Илейн Пратер, с которой познакомился еще в колледже, руководитель Cisco никогда не скрывал, что семья для него – самое важное. А деньги – «не основной мотив в жизни». Но разве можно быть хорошим отцом и мужем, если нет финансовой базы? Так что Cisco еще наверняка достигнет новых высот, ввяжется в новые авантюры, связанные с новинками IT-индустрии. И заработает не один миллион долларов. Пока у руля Джон Чемберс, оптимист и счастливчик. 1. http://www.thehinduimages.com/hindu/ mySearch.do?command=hotlink&search String=JOHN%20T%20CHAMBERS. 2. http://www.cisco.com. 3. h t t p: //s c o b l e i z e r. c o m / 2 0 0 7/ 01/ 0 9 / a‑chat‑with-john-chambers-ciscos-ceo. 4. ht tp: //newsroom.cisco.com /dlls / tln / exec_team/chambers/content.html.
Оксана Родионова
web
Большие гонки веб-серверов
Сергей Супрунов Современная жизнь немыслима без Интернета, а Интернету необходимы веб-серверы. Смутное подозрение, что Apache – далеко не единственный HTTP-сервер в мире, подтолкнуло меня на проведение небольшого исследования в этой области. 56
web Как отбирались претенденты Подручной тестовой платформой была операционная система FreeBSD, поэтому в кандидаты на «обозрение» попали только приложения, присутствующие в коллекции Портов. По «make search» в различных комбинациях в каталоге /usr/ports/www были выявлены 30 пакетов, претендующих на звание веб-сервера.
Таблица 1. Apache 1.3 Тест
1000/1
1000/10
1000/100
«Малый статик»
4.508
4.631
4.440
«Большой статик»
110.960
112.864
116.917
«Чистый CGI»
192.214
185.192
201.035
Ошибки, %
Производительность, страниц / сек
1-й этап Первым этапом был «конкурс документов» – просматривались заявленные сайты претендентов на предмет их существования и хоть какого-то развития за последние несколько лет. Учитывалась также актуальность версии, представленной в Портах. В результате отсеялись 7 серверов (AOLServer, caudium, dhttpd, fhttpd, lws, roxen и tclhttpd), как не подающие признаков жизни либо давно не обновлявшиеся в коллекции Портов. Для веб-сервера micro_httpd (его версия в Портах тоже сильно устарела) в порядке исключения, учитывая его мизерный размер, было принято решение провести тестирование свежей версии, собранной вручную из исходников (при условии, что сборка пройдёт успешно). Таким образом, до следующего этапа добралось 23 приложения. Замечание: поскольку Apache 1.3 и Apache 2.2 значительно отличаются друг от друга, то они в обзоре рассматривались как разные веб-серверы; ветку 2.0, как промежуточный продукт, было решено не рассматривать.
2-й этап После отсева «по документам» претендентов ждало следующее испытание – установка в систему. Для удобства тестирования при инсталляции были нарушены традиции размещения вновь устанавливаемого ПО в каталог /usr/local, и для всех пакетов в качестве префикса указывался /usr/ local/<имя_веб-сервера>. Все пакеты устанавливались из коллекции Портов с параметрами по умолчанию, то есть установка выполнялась таким образом: # cd /usr/ports/www/<имя_веб-сервера> # make depends # make install PREFIX=/usr/local/<имя_веб-сервера>
Вторая строка (make depends без указания префикса) используется, чтобы пакеты зависимостей раскладывались по традиционным местам, где их будут потом искать другие программы, а не устанавливались в каталог конкретного сервера в соответствии с префиксом. Время сборки указывалось без учёта зависимостей. Этот этап успешно преодолели все претенденты.
Производительность
Ошибки Время, мин
Рисунок 1. Apache 1.3
Учитывая большое число претендентов, при тестировании учитывался заявленный функционал, обращалось внимание на такие субъективные моменты, как удобство настройки и качество документации, и «на сладкое» запускались четыре теста производительности. Во-первых, проверялась работа с маленьким (3 Кб) и большим (1,1 Мб) статическими документами и с тестовым CGI-скриптом из поставки Boa (для серверов, поддерживающих данную функциональность). Выполнялись эти тесты утилитой ab, устанавливаемой с сервером Apache 1.3, запускаемой на этой же машине (что ещё раз подчёркивает ориентированность обзора на класс SOHO, где веб-сервер редко является единственным приложением и зачастую вынужден делить ресурсы системы с другими службами). Каждый из тестов запускался с уровнем конкуренции, т.е. числом параллельных запросов, равным 1 (1000/1), 10 (1000/10) и 100 (1000/100). Таблица 2. Apache 2.2 Тест
1000/1
1000/10
1000/100
«Малый статик»
5.853
5.099
5.938
«Большой статик»
70.111
61.319
63.730
«Чистый CGI»
191.266
190.438
216.518
Ошибки, %
Производительность, страниц / сек
Производительность
Как проводилось тестирование Тестирование выполнялось на машине Celeron 433 МГц/ 192 Мб/40 Гб IDE под управлением FreeBSD 6.2 в среде jail. Поэтому результаты испытаний следует трактовать применительно к использованию на серверах класса SOHO – на высокопроизводительном многопроцессорном оборудовании они могут отличаться от полученных.
№3, март 2007
Ошибки Время, мин
Рисунок 2. Apache 2.2
57
web Таблица 3. Boa
Таблица 5. Cherokee
Тест
1000/1
1000/10
1000/100
Тест
1000/1
1000/10
1000/100
«Малый статик»
3.477
3.659
4.810
«Малый статик»
4.152
3.867
5.337
«Большой статик»
118.954
150.626
171.727
«Большой статик»
79.329
79.768
89.333
«Чистый CGI»
200.179
181.118
189.799
«Чистый CGI»
188.196
205.812
211.706
Ошибки, %
Производительность, страниц / сек
Ошибки, %
Производительность, страниц / сек
Производительность
Производительность
Ошибки
Ошибки Время, мин
Рисунок 3. Boa
Для четвёртого теста использовалась утилита WART 4.0 (спасибо Сергею Яремчуку за прекрасный обзор в №12 за 2006 год), работающая на отдельном компьютере P4‑2,4 ГГц/384 Mб/40 Гб IDE под управлением Windows XP, соединённая с сервером по локальной сети на скорости 10 Мбит/с («сторонняя» нагрузка на сеть во время выполнения тестов была пренебрежимо мала). Тест включал в себя запрос трёх статических документов (два по 3 Кб и один – 12 Кб) на протяжении 2 минут при 20 одновременно работающих «пользователях». Показанные графики получены именно ею. Хотя некоторые серверы (например, Apache 1.3, Apache 2.2, nginx) допускают тонкую подстройку производительности, способную повлиять на результаты тестирования, в обзоре использовались настройки по умолчанию. Для Apache 2.2 и nginx «вне конкурса» была проверена Таблица 4. bozohttpd Тест
1000/1
1000/10
1000/100
«Малый статик»
15.153
16.481
21.325
«Большой статик»
109.578
116.953
129.675
«Чистый CGI»
184.605
197.998
220.072
Ошибки, %
Производительность, страниц / сек
Производительность
Время, мин
Рисунок 4. bozohttpd
работа с максимальным числом процессов выше устанавливаемого по умолчанию.
Переходим к обзору Итак, настало время поближе познакомиться с претендентами на звание самого шустрого, умелого и весёлого!
Apache 1.3
n Версия: 1.3.37. n Путь в дереве портов: www/apache13. n Размер архива: 2603 Кб (от 27.07.2006). n Сайт разработчика: http://httpd.apache.org.
Про Apache, думаю, слышал каждый – это самый распространённый веб-сервер, широко используемый на различных задачах от «тестовой» инсталляции на домашней машине для отладки разрабатываемых PHP-сценариев до самых посещаемых порталов, ежесекундно отправляющих в Интернет гигабайты информации. Любят Apache прежде всего за его устойчивость, гибкость, функциональность и хорошую документированность. Настройка не самая простая (хотя о какой простоте может идти речь при такой функциональности?), но благодаря хорошей документации и широкой поддержке сообщества это обычно не является проблемой. В WART-тесте после небольшой «раскачки» была продемонстрирована скорость обработки запросов на уровне 44 страницы в секунду при загрузке процессора примерно на 60% (см. рис. 1 и таблицу 1). Вывод: тесты показали очень высокую устойчивость к нагрузкам – число одновременных запросов практически не влияло на общее время выполнения тестов. Ошибок не наблюдалось. Производительность – одна из самых высоких.
Apache 2.2
Ошибки
58
Время, мин
Рисунок 5. Cherokee
n Версия: 2.2.4. n Путь в дереве портов: www/apache22.
web n Размер архива: 4814 Кб (от 06.01.2007). n Сайт разработчика: http://httpd.apache.org.
Таблица 7. fnord
Вторая версия Apache. Основное отличие от версии 1.3 – переход к «многопоточной» архитектуре, когда один процесс может одновременно обслуживать несколько запросов. На редкость долгая сборка – 34 минуты. Разбираться не стал (собралось, и ладно), но неприятный осадок остался. В конфигурации нужно не забыть открыть (в секции <Directory />) доступ как минимум с хоста, откуда выполняется тестирование – по умолчанию там стоит «Deny from all». Единственный веб-сервер, загнавший при выполнении тестов значение «Load average» аж до 110. Для FreeBSD это ощутимо. В WART-тесте, тоже после «раскачки», достиг 37 запросов в секунду, нагружая процессор на 40-45% (см. рис. 2 и таблицу 2). Увеличив в конфигурации максимальное число процессов, можно поднять это значение до 42-43 запросов при загрузке процессора порядка 60%. На ab-тестах, учитывая полную загрузку процессора, такая подстройка не оказывала заметного влияния. Вывод: эта версия также продемонстрировала устойчивость к нагрузкам (при 10 конкурирующих запросах даже наблюдается рост производительности). По сравнению с Apache 1.3 заметно улучшилась работа с большими файлами, в остальном производительность несколько снизилась. Дополнительной подстройкой применительно к конкретной системе эти результаты могут быть ещё несколько улучшены (равно как и ухудшены), однако это уже тема для отдельной статьи.
Boa
n Версия: 0.94.14.r20,1. n Путь в дереве портов: www/boa. n Размер архива: 163 Кб (от 10.06.2004). n Сайт разработчика: http://www.boa.org. Таблица 6. DFileServer Тест
1000/1
1000/10
1000/100
«Малый статик»
3.865
4.317
4.925
«Большой статик»
114.217
132.927
146.794
«Чистый CGI»
–
–
–
Ошибки, %
Производительность, страниц / сек
Производительность
Тест
1000/1
1000/10
1000/100
«Малый статик»
28.186
29.694
31.925
«Большой статик»
134.794
133.879
141.688
«Чистый CGI»
–
–
–
Таблица 8. gatling Тест
1000/1
1000/10
1000/100
«Малый статик»
3.147
2.736
3.349
«Большой статик»
78.647
52.225
58.582
«Чистый CGI»
–
–
–
Ошибки, %
Производительность, страниц / сек
Производительность
Ошибки Время, мин
Рисунок 7. gatling
Основной конфигурационный файл boa.conf (пример можно найти в share/examples/boa/boa.conf) прокомментирован весьма щедро, многие директивы очень похожи на аналогичные в конфигурации Apache. Для начала работы нужно, как обычно, проверить настройки директив DocumentRoot – остальное можно принять по умолчанию. Две проблемы при первой попытке запуска заключались в отсутствии файла mime.types в каталоге etc и отсутствии же прописанного в конфигурации log-файла /var/log/boa/error_log. После создания пустых файлов с соответствующими именами boa успокоился и стал запускаться. Хотя для полноценного функционирования mime-типов нужный файл придётся где-то позаимствовать (например, в поставке того же Apache). WART показал среднюю производительность 35 страниц в секунду, с нагрузкой на процессор в районе 28-45% (см. рис. 3 и таблицу 3). Вывод: на малых статических файлах обходит Apache 1.3 почти на 25%, ненамного отставая на других тестах. С ростом числа параллельных запросов производительность падает.
bozohttpd
n Версия: 20060517. n Путь в дереве портов: www/bozohttpd. n Размер архива: 32 Кб (от 18.05.2006). n Са йт раз ра б отч и ка: ht tp://w w w.eterna.com.au / bozohttpd.
Ошибки Время, мин
Рисунок 6. DFileServer
№3, март 2007
Сервер позиционируется как маленький и безопасный. Скромный размер, быстрая сборка, отсутствие даже кон-
59
web Таблица 9. hiawatha
Таблица 11. lighttpd
Тест
1000/1
1000/10
1000/100
Тест
1000/1
1000/10
1000/100
«Малый статик»
6.365
5.744
8.514
«Малый статик»
3.679
3.504
4.350
«Большой статик»
113.61
118.895
174.232
«Большой статик»
73.566
81.525
85.519
«Чистый CGI»
183.590
192.081
209.090
«Чистый CGI»
?
?
218.448
Производительность, страниц / сек
Ошибки, %
Производительность, страниц / сек
Производительность Производительность
Ошибки Время, мин
Рисунок 8. hiawatha
Время, мин
Рисунок 10. lighttpd
фигурационного файла – все опции задаются в командной строке: wwwtest# libexec/bozohttpd -b -c /var/cgi-bin ↵ -i 10.161.193.253 -I 80 -U www /var/www
В эти 32 килобайта поместилась поддержка HTTP/1.1, CGI, userdir, автоиндекса, виртуального хостинга. Однако WART-тест показал не самые впечатляющие результаты (24-27 запросов в секунду), а вот процессор при этом нагружался до 90-100% (см. рис. 4 и таблицу 4). Вывод: что-то страшное на небольших файлах (видимо, высока стоимость создания нового процесса). Также заметно «проседание» под нагрузкой. Для больших файлов и CGI не так плохо, но и до рекорда ещё ой как далеко.
Cherokee
n Версия: 0.5.6 (от 14.12.2006). Таблица 10. Hydra Тест
1000/1
1000/10
1000/100
«Малый статик»
4.108
4.020
5.127
«Большой статик»
101.538
110.578
139.080
«Чистый CGI»
201.234
223.744
241.509
Ошибки, %
Производительность, страниц / сек
Производительность
n Путь в дереве портов: www/cherokee. n Размер архива: 1359 Кб. n Сайт разработчика: http://cherokee-project.com. Заявлен как быстрый, гибкий и простой в настройке вебсервер с поддержкой FastCGI, PHP, CGI, TLS/SSL, виртуального хостинга, аутентификации. Конфигурационный файл Cherokee выдержан в «классических тонах», т.е. если вам доводилось работать с каким-нибудь веб-сервером (можно даже попытаться угадать, с каким именно), то смысл большинства директив будет понятен без комментариев. Пожалуй, единственное, что может сбить с толку, – это что здесь вся работа строится на принципах виртуального хостинга, и даже для запуска одного-единственного сайта вы должны настроить виртуальный хост default (etc/cherokee/sites-enabled/default). Именно здесь задаются такие параметры, как «DocumentRoot» и секция «Directory /cgi-bin». Команда запуска: «sbin/cherokee -b». Дочерние процессы не создаются. Основной процесс, занимая в памяти около 4,5 Мб, на WART-тесте нагружал процессор всего на 25‑30%, отдавая страницы примерно со скоростью 25 штук в секунду (см. рис. 5 и таблицу 5). Вывод: несмотря на «проседание» при большом числе одновременных запросов, по скорости составляет серьёзную конкуренцию обоим «Апачам» при заметно меньшей нагрузке на процессор.
DFileServer
n Версия: 1.1.3. n Путь в дереве портов: www/dfileserver. n Размер архива: 22 Кб (от 30.10.2005). n Сайт разработчика: не обнаружен.
Ошибки Время, мин
Рисунок 9. Hydra
60
Странный проект. Первое, что бросилось в глаза – отсутствие какой-либо документации, инсталлируемой вместе с сервером.
web Попытка запустить «в лоб» приводила лишь к старту на 2000-м порту в текущем каталоге. Как выяснилось из скудной документации, которую можно найти в исходниках, порт указывается в параметре -port, а рабочим каталогом станет текущий. Так что запуск выполнялся таким образом: wwwtest# cd /var/www wwwtest# /usr/local/dfileserver/bin/dfileserver -port 80 &
В среднем 27 страниц в секунду при загрузке процессора от 30 до 80%. Пару раз на WART-тесте отмечалось падение производительности до нуля (см. рис. 6 и таблицу 6). Вывод: неплохие скоростные показатели (CGI сервером не поддерживается). Учитывая небольшой размер и простоту, вполне может сгодиться для быстрого запуска чего-нибудь статического. Например, чтобы с любого компьютера в сети можно было читать html-документацию к Apache.
fnord
n Версия: 1.10. n Путь в дереве портов: www/fnord. n Размер архива: 32 Кб (от 28.09.2005). n Сайт разработчика: http://www.fefe.de/fnord.
Ещё один «малыш» с поддержкой CGI. Сервер предполагает запуск либо с использованием tcpserver, либо с помощью inetd. Для тестирования я использовал второй способ запуска, так что в /etc/inetd.conf была добавлена строка:
Таблица 12. mathopd Тест
1000/1
1000/10
1000/100
«Малый статик»
3.101
2.944
3.201
«Большой статик»
64.388
73.955
60.612
«Чистый CGI»
209.350
224.391
232.714
Ошибки, %
Производительность, страниц / сек
Производительность
Ошибки Время, мин
Рисунок 11. mathopd
ты в chroot-окружении, SSL, виртуального хостинга. Кроме того, gatling является также и FTP-сервером. Рабочие опции задаются в командной строке (-n отменяет вывод на консоль информации о работе сервера): wwwtest# sbin/gatling -n -u www -c /var/www &
Несмотря на упоминание на сайте поддержки CGI, заставить работать её не удалось. Кстати, на man-странице нет упоминания параметра -C (в котором указывается http stream tcp nowait root ↵ регулярное выражение, по которому будет определяться, /usr/local/fnord/bin/fnord fnord /var/www является ли файл cgi-сценарием), так что будем считать, Для проведения тестирования в переменной inetd_flags что на сайте просто пошутили... Хотя не исключаю, что и я были увеличены значения максимального числа соеди- что-то не так понял. 24-26 страниц в секунду при загрузке процессора на уровнений и скорости поступления запросов (по умолчанию разрешено не более 60 запросов в минуту с одного не 20-25% делает gatling неплохим претендентом на часть ресурсов слабеньких машин (см. рис. 7 и таблицу 8). IP‑адреса). Поддерживается виртуальный хостинг, реализованТаблица 13. micro_httpd ный с привязкой к имени запрошенного хоста. Т.е. при укаТест 1000/1 1000/10 1000/100 зании рабочего каталога /var/www и поступлении запро«Малый статик» 30.898 31.951 33.459 са http://localhost/test.html будет искаться файл /var/www/ «Большой статик» 180.177 189.469 215.069 localhost:80/test.html. WART-тест почему-то не пошёл. Загрузка процессора «Чистый CGI» – – – доходила до 100%, но WART сообщал о том, что обрабоОшибки, % Производительность, страниц / сек тано 0 запросов при 0% ошибок. В то же время с обычного браузера запросы выполнялись нормально. Видимо, какоето несогласование формата заголовков (см. таблицу 7). Вывод: что ещё можно было ожидать от запуска через inetd? Но зато в «демонах» постоянно не болтается... Производительность
gatling
n Версия: 0.8. n Путь в дереве портов: www/gatling. n Размер архива: 60 Кб (от 20.05.2005). n Сайт разработчика: http://www.fefe.de/gatling. Ошибки
Ещё одно детище разработчиков fnord, на этот раз «демонизированное». Заявлена поддержка автоиндекса, рабо-
№3, март 2007
Время, мин
Рисунок 12. micro_httpd
61
web Таблица 14. mini_httpd Тест
1000/1
1000/10
1000/100
«Малый статик»
13.903
14.100
16.505
«Большой статик»
69.209
68.941
64.830
«Чистый CGI»
186.052
202.774
228.614
Ошибки, %
Производительность, страниц / сек
Производительность
n Размер архива: 275 Кб (от 21.06.2006). n Сайт разработчика: http://hydra.hellug.gr. Высокопроизводительный (по определению разработчиков) многопоточный сервер. Использует фиксированный пул заранее созданных потоков, каждый из которых за счёт мультиплексирования способен обрабатывать несколько запросов одновременно. Поддержка виртуального хостинга, HTTP/1.1, CGI, SSL. В «прародителях» значится рассмотренный выше Boa. В конфигурационном файле (несколько громоздком, но понятном) была раскомментирована поддержка CGI по типу: AddType application/x-httpd-cgi cgi
Для работы с большими файлами нужно увеличить значение параметра MaxFileSizeCache. Время, мин Один процесс размером 3,6 Мб загружал на WART-тесте Рисунок 13. mini_httpd процессор в пределах 30-43%, показав производительность Вывод: серьёзная заявка на рекорд, особенно при 10 од- до 39 страниц в секунду (см. рис. 9 и таблицу 10). новременных запросах, однако 5 ошибок в тестах 1000/100 Вывод: ошибки при CGI-запросах и некоторый «пронесколько портят впечатление. Также осталась непонятной вал» при большом числе конкурентных запросов немноситуация с CGI. го портят впечатление, оставленное шикарным результатом WART-теста. Ошибки
hiawatha
n Версия: 5.3. n Путь в дереве портов: www/hiawatha. n Размер архива: 180 Кб. n Сайт разработчика: http://hiawatha.leisink.org.
Основной особенностью этого сервера заявлена безопасность. Apache на официальном сайте назван «большой жирной коровой», хотя, забегая вперёд, скажу, что такая самонадеянность разработчиков выглядит несколько беспочвенной. Конфигурация располагается в etc/hiawatha, основной файл – httpd.conf. Для работы с CGI-сценариями на Perl нужно раскомментировать обработчик: CGIhandler = /usr/bin/perl:cgi
Причём cgi-скрипт не должен содержать строки «#!» – почему-то на ней возникала ошибка. Для каждого языка сценариев нужно прописывать свой обработчик. Плавающая в пределах 30-50% загрузка процессора на WART-тесте при 30 страницах – не самый лучший результат. Даже в сравнении с «большой жирной коровой» (см. рис. 8 и таблицу 9). Вывод: в общей сложности 40 ошибок (а это почти 0,5% от общего числа запросов) заставляет относиться к серверу с настороженностью. «Провал» в режиме 1000/100 на статических запросах также опускает этот сервер в область слабонагруженных применений.
lighttpd
n Версия: 1.4.13. n Путь в дереве портов: www/lighttpd. n Размер архива: 779 Кб (от 29.01.2007). n Сайт разработчика: http://www.lighttpd.net.
Функционально очень развитый веб-сервер, сохранивший легковесность и простоту работы. Первое, на что натыкаешься в конфигурационном файле (etc/lighttpd.conf) – на список модулей, которые можно подгружать при старте сервера. Среди них – mod_rewrite, Таблица 15. monkey Тест
1000/1
1000/10
1000/100
«Малый статик»
5.618
5.577
9.351
«Большой статик»
129.180
134.481
241.984
«Чистый CGI»
191.860
190.631
207.245
Ошибки, %
Ошибки
Hydra
n Версия: 0.1.8. n Путь в дереве портов: www/hydra.
62
Производительность, страниц / сек
Производительность Время, мин
Рисунок 14. monkey
web mod_redirect, mod_auth, mod_userdir, mod_cgi, mod_fastcgi, mod_proxy, mod_compress... До Apache, пожалуй, не дотягивает, но данный набор с лихвой удовлетворит потребности подавляющего большинства пользователей. Формат директив в etc/lighttpd.conf выглядит немного «нестандартно»: server.document-root cgi.assign
Таблица 17. pserv Тест
1000/1
1000/10
1000/100
«Малый статик»
13.702
13.008
15.004
«Большой статик»
135.663
156.336
150.127
«Чистый CGI»
208.115
220.721
183.227
= "/var/www" = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" )
В тесте WART достиг производительности 29 стр. в секунду, нагрузка на процессор при этом составляла 28‑33% (см. рис. 10 и таблицу 11). Вывод: cтатические тесты – выше всяких похвал. Нужно также открыть mod_cgi. При такой схеме в скриптах не должно быть строки «#!». Можно указать «'.cgi' => ''» – 1000 запросов на CGI-тестах почему-то оказались серверу тогда CGI будет работать традиционно, запуская интерпре- не по силам (странно, что в одной из попыток удалось-таки получить значение в режиме 1000/100). татор, указанный в строке «#!». К сожалению, ни в том, ни в другом режиме, несмотря на «игры» с различными server.*-опциями, полноценно mathopd протестировать обработку CGI-страниц не удалось – спус- n Версия: 1.5p5. тя 200-300 запросов сервер без объявления ошибок пе- n Путь в дереве портов: www/mathopd. n Размер архива: 57 Кб (от 23.03.2005). реставал отвечать на запросы ab, нагрузка на процессор n Сайт разработчика: http://www.mathopd.org. полностью падала. Тест завершался с сообщением «Server timed out». (При ограничении числа запросов до 100 были Надеюсь, вам ещё не надоели «очень маленькие и прополучены результаты 17,2 сек., 18,4 сек. и 35,3 сек. соотизводительные» веб-серверы с поддержкой CGI? Вот вам ветственно.) очередной представитель плеяды. Таблица 16. nginx В конфигурации сразу подстраиваем значения в секТест 1000/1 1000/10 1000/100 ции Tuning, влияющие на максимальную нагрузку. Попут«Малый статик» 3.284 3.280 3.843 но можно подправить пути к pid- и log-файлам, поставить «Большой статик» 70.949 64.262 58.345 «User www» вместо daemon – здесь многое нестандартно, по крайней мере, для FreeBSD. Поддерживается cgi, php «Чистый CGI» – – – (в секциях Specials и Externals соответственно), виртуальОшибки, % Производительность, страниц / сек ный хостинг, userdir, redirect. На WART-тесте показал в среднем 32 страницы в сеПроизводительность кунду при 30%-ной загрузке процессора. Однако размер процесса mathopd – 197 Мб! – заставил усомниться в своём зрении и пару раз перезапустить top (см. рис. 11 и таблицу 12)... Вывод: низкая скорость обработки CGI-запросов с лихвой компенсируется отличными показателями при работе со статической нагрузкой.
micro_httpd Ошибки Время, мин
Рисунок 15. nginx
micro_httpd.
Ошибки, %
Производительность, страниц / сек
Производительность
Ошибки Время, мин
Рисунок 16. ginx при 10 процессах
№3, март 2007
n Версия: 12dec2005. n Размер архива: 5 Кб (от 13.12.2005). n Сайт разработчика: http://www.acme.com/software/
Ну что тут можно сказать? Много в 200 строк кода не затолкаешь. Тем не менее есть автоиндекс, поддержка MIMEтипов (правда, в исходный код зашитая) и даже какие-то зачатки редиректа. Из исходников собирается единственный двоичный файл, который следует запускать через inetd, указав в качестве параметра рабочий каталог сайта (как и в случае fnord). WART-тест не порадовал – 20 страниц в секунду при 100%‑ной загрузке процессора (см. рис. 12 и таблицу 13). Вывод: хотел было написать, что «мал, да удал», но нет... С такими скоростными показателями он имеет смысл разве что для изучения – в двухстах строках трудно заблу-
63
web Таблица 18. shttpd Тест
1000/1
1000/10
1000/100
«Малый статик»
5.743
5.271
7.046
«Большой статик»
144.175
226.484
219.082
«Чистый CGI»
183.127
189.647
185.757
Ошибки, %
Вместо указания ключей можно параметры внести в конфигурационный файл (см. man mini_httpd). Запуск по умолчанию выполняется из каталога вебсервера:
Производительность, страниц / сек
Производительность
Ошибки Время, мин
Рисунок 17. shttpd
Интересная особенность – интерпретатор Perl для CGI-сценариев запускается со значением nice, равным 10, то есть все, кому не лень, будут его вытеснять. 37-38 страниц в секунду на WART-тесте (с редкими провалами до 30) сопровождаются нагрузкой на уровне 72-100%. Поэтому на локальных ab-тестах силёнок, видимо, и не хватило (см. рис. 13 и таблицу 14). Вывод: очень хорошие показатели на больших файлах (с ростом числа одновременных запросов даже наблюдается рост производительности), но на небольших файлах и CGI-запросах не впечатляет. На CGI-тесте при 1000/100 соединений проскочило 8 ошибок.
monkey
диться. Ну или в том случае, когда вам приходится беречь каждый килобайт дискового пространства.
mini_httpd
n Версия: 1.19. n Путь в дереве портов: www/mini_httpd. n Размер архива: 41 Кб (от 29.06.2005). n Сайт разработчика: http://www.acme.com/software/ mini_httpd.
Старший брат ранее рассмотренного micro_httpd, уже с поддержкой CGI, автоиндексом и некоторыми другими возможностями «больших мальчиков». Предварительно нужно подправить пути в конфигурационном файле sbin/ mini_httpd_wrapper и добавить шаблон для CGI-сценариев: /usr/local/mini_httpd/sbin/mini_httpd -D -c '**.cgi' Таблица 19. thttpd Тест
1000/1
1000/10
1000/100
«Малый статик»
3.739
3.179
3.473
«Большой статик»
64.832
56.909
54.067
«Чистый CGI»
186.802
195.754
233.423
Ошибки, %
wwwtest# cd /var/www wwwtest# /usr/local/mini_httpd/sbin/mini_httpd_wrapper &
Производительность, страниц / сек
Производительность
n Версия: 0.9.1. n Путь в дереве портов: www/monkey. n Размер архива: 82 Кб (от 13.04.2005). n Сайт разработчика: http://monkeyd.sourceforge.net.
Написан на «чистом C», с поддержкой CGI и PHP, userdir, виртуального хостинга. Есть встроенная поддержка добавления к каждой веб-странице «шапки» и «подвала» (header и footer). В etc/monkey/ вы найдёте щедро прокомментированные конфигурационные файлы. Для тестирования были выставлены с запасом тайм-ауты и максимальное число клиентов. Параметр DocumentRoot здесь именуется Server_root. Запуск/останов выполняются скриптом sbin/banana (а чем ещё можно заставить мартышку что-то делать?). При первой попытке запуска ругнулся на невозможность открыть файл monkey.mime (который вообще никуда не установился и о котором скудная документация упорно умалчивает). Пришлось его вручную перекидывать из установочного каталога conf/monkey.mime. 40-50% загрузки в WART-тесте позволяли первые 15-30 секунд работать с производительностью порядка 30 запросов в секунду, после чего сервер «падал». Хотя на локальных тестах его устойчивость была чуть выше (см. рис. 14 и таблицу 15). Вывод: резкий провал в режиме 1000/100 и огромное число ошибок (в среднем по 150 на 1000 запросов) плюс аварийные завершения работы в CGI-тестах смещают этот сервер на роль слабозагруженного «поставщика» чисто статических файлов. Да и то не самого быстрого.
nginx
n Версия: 0.5.10. n Путь в дереве портов: www/nginx. n Размер архива: 444 Кб (от 25.01.2007). n Сайт разработчика: http://sysoev.ru/nginx.
Ошибки Время, мин
Рисунок 18. thttpd
64
Результат работы нашего соотечественника Игоря Сы-
web соева. Неплохой функционал, поддержка FastCGI, SSL, свыше десятка различных модулей делают его хорошим выбором. Особую известность nginx получил как веб-акселератор. Поддержки «чистого CGI» в нём я не нашёл (есть встроенный интерпретатор Perl, но его использование было бы несправедливым по отношению к другим рассматриваемым серверам), поэтому CGI-тест для него не выполнялся. Непривычный, но удобный в работе «Си-подобный» формат конфигурационного файла. Например, так задаётся корневой каталог:
Таблица 21. xitami Тест
1000/1
1000/10
1000/100
«Малый статик»
7.603
7.413
11.648
«Большой статик»
242.929
236.415
243.825
«Чистый CGI»
238.035
207.032
188.908
Ошибки, %
Производительность, страниц / сек
Производительность
location / { root /var/www; index index.html index.htm; }
Работает в рамках одного процесса (точнее, в конфигурации можно задать число «детей», но я решил все серверы тестировать с настройками по умолчанию, изменяя лишь некоторые ограничения да корневой каталог сайта). При одном из самых низких показателей загрузки процессора – 20-25% – на WART-тесте продемонстрировал средний результат в районе 25 запросов в секунду (см. рис. 15 и таблицу 16). Справедливости ради отмечу, что с выставлением в конфигурации параметра «worker_processes» на уровне 10 вместо используемого по умолчанию значения 1 достигается производительность 46 запросов в секунду при загрузке процессора на уровне 50% (см. рис. 16). Однако мы договорились не углубляться в тонкую настройку. Вывод: одни из лучших показателей производительности на «статике». Вкупе со множеством других функций – хороший претендент на замену Apache для решения типовых задач.
pserv
n Версия: 3.3. n Путь в дереве портов: www/pserv.
Время, мин
Рисунок 20. xitami
n Размер архива: 102 Кб (от 16.05.2005). n Сайт разработчика: http://sourceforge.net/projects/ pserv. В основу этого сервера положена идея портируемости (хотя на Windows она не распространилась). Конфигурация после громоздких «больших» серверов – как бальзам на душу. Буквально 10 строк. Для выполнения нагрузочных тестов нужно увеличить там значения тайм-аутов (однако чрезмерное увеличение uSecTimeout приводит к ошибкам «setsockopt: : Numerical argument out of domain», а недостаточное значение приводит к ошибкам тестов при большой параллельности). К сожалению, способа запустить pserv как демон я не нашёл, поэтому пришлось избавляться от отладочных сообщений путём перенаправления их в /dev/null: AddType application/x-httpd-cgi cgi
Таблица 20. wyvern Тест
1000/1
1000/10
1000/100
«Малый статик»
4.558
4.793
6.329
«Большой статик»
120.369
124.180
168.180
«Чистый CGI»
329.094
fail
fail
Ошибки, %
Ошибки
Производительность, страниц / сек
Производительность
На WART-тесте нагрузка на процессор «плавала» в районе 70-100%, но при этом получить какой-нибудь результат, как и в случае с fnord, не удалось – отчёты упорно выдавали одни нули и на HTTP/1.1, и на HTTP/1.0 (см. таблицу 17). Вывод: снижение времени теста в режиме 1000/100 «Большого статика» и CGI-теста обусловлено появлением 997 и 282 ошибок соответственно – такая нагрузка, похоже, серверу не по силам.
shttpd
n Версия: 1.35. n Путь в дереве портов: www/shttpd. n Размер архива: 47 Кб (от 07.04.2006). n Сайт разработчика: http://shttpd.sourceforge.net.
Ошибки Время, мин
Рисунок 19. wyvern
№3, март 2007
Поддерживает SSI, CGI, SSL, виртуальные домены, userdir, ограничения скорости. Позиционируется прежде всего как простой и не требующий установки веб-сервер для целей тестирования для систем Windows, однако
65
web n Размер архива: 129 Кб (от 29.06.2005). n Сайт разработчика: http://www.acme.com/software/
Таблица 22. xshttpd Тест
1000/1
1000/10
1000/100
«Малый статик»
9.474
8.967
9.096
«Большой статик»
126.493
127.753
141.032
«Чистый CGI»
265.402
194.916
176.747
Ошибки, %
thttpd.
Производительность, страниц / сек
Производительность
Ошибки Время, мин
Рисунок 21. xshttpd
и в UNIX чувствует себя не хуже. Запускается из командной строки: wwwtest# bin/shttpd -d /var/www -c cgi -p 80 -u www &
Процессор на WART-тесте он нагрузил почти на две трети (55-70%), выдав близкое к рекорду значение производительности – 44 страницы в секунду. Правда, на локальных тестах «запаса прочности» не хватило (см. рис. 17 и таблицу 18). Вывод: неплохая скорость обслуживания CGI-запросов при средних показателях на «статике». Но для веб-разработчиков может оказаться весьма удобным.
thttpd
wyvern
n Версия: 2.1.2. n Путь в дереве портов: www/wyvern. n Размер архива: 415 Кб. n Сайт разработчика: http://www.MysticWALL.COM/ software/wyvern/index.html.
Очень порадовала документация на японском на страничке, открывающейся по умолчанию, – несколько секунд провёл в созерцании иероглифов. Вся конфигурация – в /conf. Прокомментирован конфиг хорошо, похож на httpd.conf сервера Apache. Есть семь уровней безопасности с разными ограничениями, userdir, автоиндекс, поддержка символических ссылок, CGI, модули, виртуальный хостинг... Выглядит неплохо. Чтобы работала поддержка CGI с переменными окружения, нужно раскомментировать следующие модули: Module modules/mod_env.so Module modules/mod_cgi.so
n Версия: 2.25b. n Путь в дереве портов: www/thttpd. Таблица 23. zerowait_httpd Тест
1000/1
1000/10
1000/100
«Малый статик»
2.983
3.868
3.713
«Большой статик»
66.278
56.912
50.554
«Чистый CGI»
–
–
–
Ошибки, %
Простой шестистрочный конфигурационный файл, а также возможность задавать все опции в командной строке... Поддержка CGI и HTTP/1.1. Как и его братья (mini_httpd и micro_httpd), делает что-то непотребное с русским текстом в UTF-8. Зато на WART – абсолютный рекорд в 49 страниц в секунду при загрузке процессора на уровне 39-51% (см. рис. 18 и таблицу 19). Вывод: хорош на статике, но CGI обрабатывает не слишком быстро. К тому же, было отмечено 11 ошибок в режиме 1000/100 CGI-теста. Тем не менее именно этот сервер предпочитают разработчики встроенных систем (например, многих ADSL-модемов).
Производительность, страниц / сек
В среднем 45 запросов в секунду в WART-тесте при загрузке процессора до 59%. Но проскакивали ошибки. На CGI-тесте произошло что-то страшное (см. рис. 19 и таблицу 20)... Вывод: 218 ошибок на «большом статике» в режиме 1000/100. Плюс к этому самая медленная обработка CGI «по одному» и паталогическая неспособность обслуживать CGI-запросы параллельно.
xitami
n Версия: 2.5c2. n Путь в дереве портов: www/xitami. n Размер архива: 1815 Кб (от 22.07.2004). n Сайт разработчика: http://www.xitami.com.
Производительность
Ошибки Время, мин
Рисунок 22. zerowait_httpd
66
Пожалуй, самый невзрачный веб-сервер: не маленький, не быстрый, не слишком функциональный, не особенно документированный... Процессор загрузил не сильно, показав не ахти какую производительность на WART-тесте (см. рис. 19 и таблицу 20)... Я затрудняюсь сказать, почему его следовало бы использовать.
web Таблица 24. Сводная таблица Размер дистрибутива
Время сборки/ установки
Т1*
Т2*
Т3*
T4*
%*
Размер процесса в памяти
Поддержка FastCGI и/или PHP
Поддержка виртуального хостинга
Поддержка «автоиндексации» каталога
Apache 13
2,6 Мб
5м
4,6
112,9
185,2
44
60
2,6 Мб
+
+
+
Apache 22
4,8 Мб
34 м
5,1
61,3
190,4
37
45
6,4 Мб
+
+
+
Boa
163 Кб
2м
3,7
150,6
181,1
35
37
1,4 Мб
–
+
+
bozohttpd
32 Кб
20 с
16,5
117,0
198,0
25
99
2,5 Мб
–
+
+
Cherokee
1,3 Мб
3м
3,9
79,8
205,8
25
30
4,5 Мб
+
+
+
DFileServer
22 Кб
2м
4,3
132,9
–
27
70
2,3 Мб
–
–
+
fnord
32 Кб
30 с
29,7
133,9
–
?
?
1,3 Мб
–
+
+
gatling
60 Кб
30 с
2,7
52,2
?
25
23
1,5 Мб
–
+
+
hiawatha
180 Кб
2м
5,7
118,9
192,1
30
40
6,3 Мб
+
+
–
Hydra
275 Кб
3м
4,0
110,6
223,7
39
37
3,6 Мб
–
+
+
lighttpd
779 Кб
10 м
3,5
81,5
?
29
31
2,9 Мб
+
+
+
mathopd
57 Кб
20 с
2,9
74,0
224,4
32
30
197 Мб
+
+
–
micro_httpd
5 Кб
5с
32,0
189,5
–
20
99
1,2 Мб
–
–
+
mini_httpd
41 Кб
20 с
14,1
68,9
202,8
38
90
2,6 Мб
–
–
+
monkey
82 Кб
25 с
5,6
134,5
190,6
?
?
4,8 Мб
+
+
+
nginx
444 Кб
3м
3,3
64,3
–
25
23
2,2 Мб
+
+
–
pserv
102 Кб
1м
13,0
156,3
220,7
?
?
1,3 Мб
–
–
+
shttpd
47 Кб
20 с
5,3
226,5
189,6
44
65
1,6 Мб
–
–
+
wyvern
415 Кб
3м
4,8
124,2
fail
45
59
2,7 Мб
–
+
+
xitami
1,8 Мб
5м
7,4
236,4
207,0
24
36
5,2 Мб
–
+
–
xshttpd
203 Кб
2м
9,0
127,8
194,9
33
60
2,8 Мб
–
+
–
zerowait_httpd
97 Кб
1м
3,9
56,9
–
35
35
1,8 Мб
–
–
–
Вывод: медленный, плюс ошибки во всех тестах в режиме 1000/100 (видимо, сервер борется с нагрузкой, отбрасывая «лишние» запросы).
xshttpd
n Версия: 3.3.g01_1. n Путь в дереве портов: www/xshttpd. n Размер архива: 203 Кб (от 06.11.2005). n Сайт разработчика: http://www.stack.nl/xs-httpd.
На домашней странице на чистейшем русском сообщается, что этот сервер предназначен для быстрой и незатратной с точки зрения ресурсов выдачи статического контента и годится, таким образом, для развёртывания статических сайтов и на роль веб-акселератора. На WART-тесте при загрузке 25-40% отдавал страницы со скоростью около 35 штук в секунду. На локальных тестах был просто блестящ (см. рис. 21 и таблицу 22). Вывод: что ж, имя своё этот сервер получил не зря. Особенно впечатляет рост производительности с ростом нагрузки.
Как заявлено на сайте, не просто маленький и быстрый, а маленький и быстрый! Есть поддержка CGI, сжатия. При старте запускает указанное в конфигурации число Подведение итогов процессов, которые в дальнейшем за всё и «отдуваются». Что же, если говорить о работе со статическими файлаПри компиляции можно включить опцию «Persistent Perl», ми, то у Apache много конкурентов, делающих это быстно я её не тестировал. рее и экономнее по отношению к ресурсам. Это и Cherokee, При загрузке процессора на 52-71% показал произ- и gatling, и hydra, и mathopd (несмотря на ужасающий разводительность 30-35 страниц в секунду, хотя на «локаль- мер процесса), и nginx, и thttpd, и zerowait_httpd. Если треных» тестах производительности был слаб (см. рис. 20 буется хотя бы базовая поддержка CGI, число конкурени таблицу 21). тов несколько снижается, но альтернативы по-прежнеВывод: не обольщайтесь снижением времени выполне- му есть. ния CGI-тестов с ростом нагрузки – это результат 106 ошиПонятно, что от веб-сервера требуется не только скобок. Также ошибки были и на «большом статике» в режи- рость. Функциональность и работа с динамическим конме 1000/100. тентом в наши дни приобретают всё большее значение. Впрочем, работа с FastCGI, PHP и т. д. заслуживает отдеzerowait-httpd льного обзора. n Версия: 0.7p. А на сегодня нашу работу будем считать завершённой. n Путь в дереве портов: www/zerowait-httpd. Основные характеристики рассмотренных веб-серверов n Размер архива: 97 Кб (от 18.11.2006). вынесены в сводную таблицу (cм. таблицу 24). n Сайт разработчика: http://www.0w.ru/httpd. Удачных вам выборов!
№3, март 2007
67
безопасность
Решаем типичные проблемы безопасности домашних сетей
Иван Максимов Компьютеры уже давно прочно вошли в жизнь простых пользователей, как и доступ в Интернет. Домашние сети объединили вначале соседей, а позже – тысячи пользователей районов. Какие трудности возникают при работе в домашних сетях?
О домашних сетях
кальных ресурсов большого количесДомашние сети получили широкое тва программного обеспечения, музыраспространение в конце 90-х годов ки и фильмов. Позже домашние сети в связи со снижением цен на сетевое «взрослели», появлялись медиапортаоборудование и привлекательностью лы с радио- и телевизионными передаидеи высокоскоростного обмена дан- чами, игровыми серверами и другими ными. Вначале это были небольшие развлекательными службами. локальные сети, созданные чаще всеВ настоящее время многие дого компьютерщиками-любителями или машние сети больше похожи на MAN соседями по этажу. Позже идея «опу- (Metropolitan Area Network), так как, тывания» дома сетью привлекла и про- объединив десятки тысяч людей с разстых пользователей. Связано это было ных концов города, они вышли из рас тем, что большинство людей пользо- мок «любительских». На данный мовались только dial-up-доступом в гло- мент подобных сетей только в Санктбальную сеть. Доступ по локальной се- Петербурге и Москве официально соти открывал простым пользователям тни [1, 2], неофициально их гораздо новые возможности: общение по се- больше. ти, совместные игры, загрузка с лоПредоставляя все больше и боль-
68
ше услуг, в домашних сетях возникли и проблемы, аналогичные проблемам глобальной сети Интернет: вирусы, несанкционированный доступ и другие неприятные моменты. Вопрос о безопасности становился все более и более острым...
Проблемы безопасности Администраторы домашних сетей отреагировали вполне адекватно на возникшие проблемы, открывались зеркала Windows Update, рассылались предупреждения с просьбой установки антивирусов и firewall. Трафик с ресурсов SUS (Microsoft Software Update Services) и WUS (Microsoft Windows Update Services) не учиты-
безопасность вался, зараженные машины отключались, но проблемы все равно оста- Сетевые порты, службы вались, с чем же это связано? Чаще и некоторые уязвимости всего администратор компании, от- ОС Windows ветственный за корпоративную сеть, n 135 порт TCP/UDP – Microsoft Remoute Procedure Call (ошибки, связанные имеет постоянный контакт и «рычаги» с переполнением буфера, например – воздействия на пользователей. Тогда ms03-043); как в домашних сетях администратор n 139 порт TCP – NetBios (ошибки на 139 видит своих пользователей зачастую порту связаны с доступом в систему только один раз – в момент прокладки через NULL сессию и доступом к сетекабеля, и никаких серьезных средств вым ресурсам, например – ms03-026, влияния на них не имеет, пользователи ms03‑39); предоставлены сами себе. Усугубляет ситуацию и то, что пользователи само- n 445 порт TCP – Microsoft-DS (множественные уязвимости связанные стоятельно ухудшают положение, так как им предоставлена свобода действий – установка любого программно- условий эксплуатации сети, аудит сети) го обеспечения, операционных систем и финансовые (закупка современного и желание обмена информацией меж- оборудования). В домашних сетях адду «соседями» методом простого от- министратор может максимум отклюкрытия доступа к своей машине. Про- чить пользователя, возможно, не изблема безопасности очень похожа на за его злых умыслов, а по его безаластандартную, когда пользователь под- берности или ошибки. Хотя, возможключен к глобальной сети, но усугубля- но, хорошая разъяснительная работа ется многими социальными фактора- с пользователем в лице начальника ми. Например, в Интернете уже слож- отдела и страх перед потерей рабочено попросить незнакомого человека го места заставит пользователя переоткрыть доступ к своему компьютеру, смотреть свои действия. Конечно, есть тогда как в домашних сетях пользова- правоохранительные органы, которые тели доверяют соседям из своего райо- очень даже могут повлиять на пользона и с удовольствием откроют доступ к вателей домашней сети, но прибегать своему компьютеру (благополучно за- к таким методам, скажем, по отношебыв потом закрыть его). Администра- нию к своему соседу, который в пятниторы в этой ситуации ничего не могут цу поздно вечером пришел домой в неподелать. Запрещать пользователям трезвом состоянии и «побуянил» в сеобмениваться информацией (блоки- ти, когда администратор спал, – неруя порты соответствующих сетевых этично. Да и правоохранительные орслужб) означает вероятность потерять ганы не отреагируют на просьбу одклиентов, так как подключиться к Ин- ного жильца дома, что его сосед, бутернету они могут и у любого провай- дучи в нетрезвом состоянии (но находера, а вот получить доступ к огромно- дясь в своей квартире и ведя себя тиму количеству данных на высокой ско- хо), рассылал поздно ночью сообщерости за небольшую плату они могут ния нецензурного характера по внутреннему чату. Согласитесь, подобные только в локальной сети. Итак, можно выделить две про- ситуации не могут возникнуть, скаблемы, связанные с безопасностью жем, в офисе, тогда как дома – достадомашних сетей: социальные и тех- точно часто. нические.
Социальные В корпоративных сетях существуют специальные отделы (зачастую состоящие из одного-единственного администратора, но не это главное), которые отвечают за безопасность сети, они имеют средства повлиять на положение в сети: административные (предупреждения, объяснительные работы, взыскания), технические (ужесточение
№3, март 2007
Технические и финансовые
Технические и финансовые проблемы тоже очень своеобразно проявляются в домашних сетях. С финансовыми проблемами все ясно, администратор домашней сети часто не имеет средств на покупку специального оборудования (например, элементарно, коммутаторов вместо дешевых пятидолларовых концентраторов). Технически возможность ограничения и защиты поль-
с переполнением буфера ms05 - 039, ms05‑043, ms06-040). По статистике, наиболее эксплуатируемым портом для получения несанкционированного доступа к ОС семейства windows NT является TCP-порт 445. Посмотреть статистику по используемым злоумышленниками и вредоносными программами к сетевым службам можно, например, на сайте www.viruslist.ru: «Интернет-атаки 2005 года [3]», «Kaspersky Securit y Bulletin 20 0 6. Интернет-атаки» [4].
зователей, конечно, есть, но, скажем, заблокировав возможность соединения клиентов по SMB-протоколу (некоторые не останавливаются на этом, блокируя и HTTP-, FTP-соединения, а позже «заодно» снижая скорость передачи данных внутри сети), теряют клиентов сети. Это не имеет значения, если сеть выросла до масштабов небольшого провайдера и отсутствуют конкуренты, но чаще всего, «перегнув» с безопасностью, сеть умирает. Итак, разобравшись, можно заметить, что проблемы в основном социального характера, но попытаемся проанализировать и решить некоторые из них технически.
Анализ сети На примере одной средней домашней сети (приблизительно из 200 пользователей) попробуем выявить ее наиболее слабые места. Для начала просмотрим ее SMB-ресурсы. Набрав команду: smbtree -N
в любой Linux /BSD - системе рас смотрим дерево SMB-ресурсов сети (см. рис. 1). Как можно заметить, большинство пользователей доверяют друг другу и открывают доступ к своим машинам. Чем это грозит обычным пользователям? Простое открытие SMB-ресурса только для чтения не столь опасно, но если учесть количество найденных уязвимостей в сетевых службах ОС Windows, использующих порты 135, 139, 137, 445, становится понятно, почему корпорация Microsoft в недалеком прошлом очень активно на-
69
безопасность # Сообщаем браузеру, что данный тип документа text/html # в кодировке koi8-r $tmp_f="/tmp/$$.txt"; # Создаем временный файл $smb=`smbtree -N 2>/dev/null | grep "[\\]" > $tmp_f`; # Выполним команду smbtree для создания дерева SMB-ресурсов # и командой grep отфильтруем содержимое вывода, # результат запишем во временный файл open (LIST,$tmp_f); while (<LIST>) { print $_; # Вывод содержимого временного файла print "<p>"; } close (LIST);
Рисунок 1. Сетевое окружение по протоколу SMB (некоторые уникальные имена машин убраны или переименованы)
вязывала firewall своей собственной разработки (Windows firewall теперь встроен во все современные ОС от данной корпорации), хотя бы для того, чтобы на начальном этапе эксплуатации ОС пользователи были защищены. Но открывая мастером сетевую папку, ОС запускает соответствующие службы, которые открывают необходимые для работы порты, добавляя в firewall нужные исключения, что сводит на нет начальную блокировку firewall. Проанализировав несколько пользовательских машин сканером nmap, не было обнаружено ничего удивительного, полный набор стандартных сетевых служб открыт, а углубившись далее, было выяснено, что пользователи, естественно, не обновляли свои ОС – многие классические уязвимости присутствовали. Можно, конечно, во многом обвинить администраторов данной сети, установка WUS или SUS могла бы решить частично проблему, но загрузка всех патчей и сервис паков от Windows 98 до Windows XP (объемом приблизительно с 10 Гб) все же затруднительна. Есть еще она проблема, как убедить пользователей в необходимости обновлять свои системы? Именно последним вопросом мы и займемся.
Портал безопасности Итак, проведя небольшой анализ сети, были выявлены некоторые проблемы безопасности. Попробуем привлечь внимание пользователей, доведя до их сведения соответствующую информацию. Наиболее простым решением будет создание веб-страницы, на которой будут опубликованы обнаруженные уязвимости, рекомендации по их устранению и другие дополнительные возможности. Для реализации данной задачи нам понадобится любая Linux/BSD-система, веб-сервер Apache, антивирус ClamAV, сканер безопасности nmap и интерпретатор языка Perl. Для начала создадим все необходимые скрипты, а позже, собрав всех их воедино, создадим макет будущего веб-сайта. Первое, создадим скрипт, отображающий сетевое окружение по протоколу SMB (адреса машин и открытые на них ресурсы), воспользовавшись упомянутой выше утилитой smbtree из пакета Samba. #!/usr/bin/perl -w # Путь к интерпретатору языка Perl print "Content-Type: text/html; charset=koi8-r\n\n";
70
Рассмотрим скрипт подробнее. Выполняется команда smbtree, ключ -N означает, что программа будет работать, не запрашивая пароль у пользователя для доступа к сетевым ресурсам (фактически доступ к удаленным машинам, используя гостевой вход). Командой grep отфильтруем вывод команды по маске двух символов «\\», далее поток перенаправим не на экран, а в файл «139». Далее построчно читаем созданный файл и выводим строки на экран, после каждой напечатанной строки добавляем тэг «<p>» (для более удобного отображения). Возможно, кто-то спросит, почему бы нам вывод команды smbtree сразу не поместить в переменную $smb и выводить ее на экран, используя подобную конструкцию <pre>$smb</pre>? (тэг «pre» выведет содержимое переменно SMB без форматирования). Выводя информацию подобным способом, мы не сможем контролировать выходную информацию, используя средства Perl, в будущем можно будет добавить необходимые средства форматирования текста (например, можно создать таблицу или выделить из списка машину клиента). HTML-код вызова данного скрипта будет выглядеть так: <a href="/cgi-bin/smbscan.cgi" target="main">SMB scan</a>
Одной из популярных функций порталов, посвященных антивирусам, является on-line-проверка файлов на вредоносные программы. Создадим подобную функцию, используя свободный антивирус ClamAV. #!/usr/bin/perl -w print "Content-Type: text/html; charset=koi8-r\n\n"; use CGI; # Используем cgi для получения данных с html-формы $f=new CGI; $tmp_f="/tmp/$$"; $fn = $f->param('Fl'); # Получаем путь к локальному файлу (указанный в форме) $fn=~ s/.*[\/\\](.*)/$1/; # Получаем имя файла, «отсекая» локальный путь (вида c:\xxx) $fl_h = $f->upload('Fl'); # Используя метод upload, получаем указатель на временный # файл, созданного CGI.pm open (FILE,">$tmp_f"); # Создаем пустой файл while (<$fl_h>) { print FILE; } close (FILE); $vir=`clamscan $tmp_f | grep $tmp_f`; # Проверка файла антивирусом Clam $vir=~s/^.*[\\\:]//; print "$fn $vir"; # Вывод результатов
безопасность Рассмотрим работу скрипта. Из полученной формы сохраним файл в директорию tmp. Проверим его антивирусом ClamAV и, так же как и в предыдущем скрипте, выведем пользователю только необходимую информацию, фильтруя вывод утилитой grep (будет показано только имя файла и название вируса, если он заражен). Вся лишняя информация, такая как путь до локального файла и другие описания, будет «отсечена». HTML-код формы для загрузки и проверки файла на вирус будет выглядеть таким образом: <form action="/cgi-bin/upload.cgi" target="main" ↵ ENCTYPE="multipart/form-data" method=post> <p><input TYPE="file" NAME="Fl" size="5"> <input TYPE="submit" VALUE="Upload!"> </p> </form>
Другой популярной функцией на всевозможных вебресурсах разработчиков антивирусных программ (и порталах, посвященных безопасности сети) является статистика сетевой вирусной активности. Создадим подобную функцию и на нашем веб-портале. Статистику будут составлять пришедшие по протоколу SMB на нашу машину вирусы. Для этого предварительно необходимо создать открытый на запись (для любых пользователей) SMBресурс с именем «С» и созданными папками «Windows» и «Program Files» внутри ресурса (для полноты иллюзии Windows-машины можно создать еще более точное дерево каталогов). Необходимо также будет создать связку Samba + ClamAV для фильтрации вирусов на лету. Прочитать, как это сделать, можно в статье «Все ли возможности ClamAV вы используете?» [5]. Таким образом, мы получим простейшую ловушку для вирусов. Для получения данных о вирусах и времени их появления раскомментируем два параметра в файле конфигурации антивируса ClamAV (/etc/clamd.conf). Первый, включающий журналирование событий clamd и указание директории журнала: # Uncomment this option to enable logging. # LogFile must be writable for the user running daemon. # A full path is required. # Default: disabled LogFile /tmp/clamd.log
Второй, для ведения в журнале записей о времени происходящих событий clamd: # Log time with each message. # Default: disabled LogTime
Сам скрипт вывода статистики выглядит так: #!/usr/bin/perl -w print "Content-Type: text/html; charset=koi8-r\n\n"; $searchword="FOUND"; # Переменная с ключевым словом open (LIST,"/tmp/clamd.log"); while (<LIST>) { if (/\Q$searchword/i) # Если в данной строке есть совпадения с ключевым словом, # то выводим эту строку на экран { print $_; }
№3, март 2007
print "<p>"; } close (LIST);
Скрипт читает из файла статистики антивируса ClamAV подготовленные данные и выводит на экран строки, содержащие в себе пометку found (файлы, в которых были найдены вирусы). Фактически скрипт выполняет элементарную команду: cat /tmp/clamd.log | grep FOUND
HTML-код вызова скрипта: <a href="/cgi-bin/ack_vir.cgi" ↵ target="main">Вирусная активность</a>
Еще одной полезной функций нашего «web security»-ресурса будет возможность сканировать клиента программой nmap. #!/usr/bin/perl –w print "Content-Type: text/html; charset=koi8-r\n\n"; $str = $ENV{'REMOTE_ADDR'}; # Записываем переменную среды окружения REMOTE_ADDR # в переменную $str $tmp_f="/tmp/$$"; $scan=`nmap -sT $str > $tmp_f`; # Сканируем tcp порты удаленной машины, результат запишем # во временный файл open (LIST,$tmp_f); while (<LIST>) { print $_; print "<p>"; } close (LIST);
Скрипт, используя переменную среды окружения REMOTE_ADDR, передает ее в качестве параметра IP-адреса клиента сканеру nmap. Производится сканирование только TCP-портов, для полного сканирования программе nmap необходимы права суперпользователя, если это нужно, воспользуйтесь пакетом sudo. Результат работы выводим на экран. Последняя функция, которая понадобится на нашем портале, это установка поискового движка DataParkSearch, но так как мы уже рассматривали движок DataparkSearch в статьях [6, 7], не будем касаться вопросов его установки. Поисковая машина по локальным ресурсам домашней сети должна дополнительно привлечь пользователей к данному ресурсу и, конечно, выполнять свои главные функции – помогать пользователям искать необходимую информацию в домашней сети. Создав простой макет сайта и добавив соответствующие описание, «верстаем» страницу (см. рис. 2).
Анализ работы портала безопасности Главная цель данного сайта – донести до пользователей информацию о потенциальных опасностях, подстерегающих их при работе в домашней и глобальной сети. Конечно, простым пользователям безразлично, как выглядит сетевое окружение, как и вирусная активность в сети, и тем более состояние портов на локальной машине. Портал, несомненно, заинтересует продвинутых пользователей, так как именно на данную аудиторию он и рассчитан. Как выяснилось позже, после запуска портала, из всех функ-
71
безопасность ций пользователям больше всего понся плохо зашифрованные пароли dial-upравилось «нормальное сетевое окру- Ловушки для вирусов жение» и возможность искать инфор- Создание ловушек для вирусов на основе сессий). Обращение к данному файлу либо мацию в домашней сети «как в Интер- ложного ресурса, открытого по протоколу журналировалось, либо (ради шутки) в ненете». Данный портал, конечно, не па- SMB, получило широкое распространение го записывали множество нецензурных вынацея от IT-безграмотности пользова- во времена Windows 9X. Ловушки созда- сказываний в адрес хакера. Данный вид лотелей, но на простые вещи, такие как вались путем создания сетевого ресурса вушек получил название «рыбалка». Почезабытые открытые ресурсы, обновле- «C» на FDD-дискете с созданными на ней му для данных целей использовался FDDние антивируса и т. д., он должен об- директориями «Windows» и «Program Files». привод, а не другой логический диск? Опять Дополнительно для любителей бесплатного же ради шутки, так как при обращении по ратить внимание. Итак, главная цель достигнута – dial-up-доступа в Интернет в папке Windows сети к подобному ресурсу флоппи-дископростое любопытство привлекает создавался файл <Имя_пользователя>.pwd вод «издает» характерные звуки, которые пользователей узнать, что происхо- (именно в подобных pwd‑файлах содержат- получили название «поклевка». дит в сети, и как следствие этого любопытства – пересмотр своих действий са лучше отказываться от использова- торый при ближайшем рассмотрении ния консольных команд. также работает с сокетом). относительно личных машин. Просмотр SBM-ресурсов можно С другой стороны, любой энтузиаст сможет создать подобный сайт, полностью реализовать на Perl мето- Итоги так как можно заметить, что состоит дом простого перебора IP-адресов пу- Возможно, в будущем, через полгодаон из элементарных скриптов, кото- тем обращения к 139 порту (что, прав- год, вы вернетесь к порталу, когда бурые базируются на консольных коман- да, займет значительное время, не- дут учтены пожелания пользователей дах Linux/BSD и используют в качестве жели программа smbtree, работаю- домашней сети, создан хороший дизайн и произведен «тюнинг» веб-сай«клея» Perl, подчеркивая в очередной щая 2‑4 сек.). Также можно воспользоваться ути- та. Из полезных функций, которые мораз знаменитую пословицу: UNIX – это дружественная система (но вот друзей литой smb2www [8], которая входит гут быть полезны в будущем, стоит сов большинство систем портов/паке- здать: HTTP/FTP-сканер ресурсов сети, она тщательно выбирает). Сам портал, возможно, в будущем тов и обладает богатым функциона- отображение любимой многими перенеобходимо будет улучшать. Несмотря лом, хорошим графическим интер- менной среды окружения x‑user‑agent, на то что скрипты могут быть написаны фейсом, хотя в то же время достаточ- сканер скрытно установленных проксисерверов, счетчики. Но все это технина любом языке (достаточно изменить но громоздкая. Проверку на вирусы с помощью ческие аспекты, главное, будут накоппуть в начале скрипта к соответствующему интерпретатору, например #!/ антивируса ClamAV также можно ре- лены статистические данные поведеbin/bash, или использовать бинарные ализовать по-иному, либо через сокет ния пользователей, но, а пока на этом файлы), считается, что в целях повы- (см. параметр LocalSocket в clamd.conf), все. Удачной работы! шения общей безопасности веб-ресур- либо используя модуль с сайта [9] (ко-
Рисунок 2. Портал безопасности локальной сети
72
1. http://grinkod.spb.ru – домашние сети Санкт-Петербурга. 2. http://www.mosnet.ru – домашние сети Москвы. 3. h t t p : / / w w w . v i r u s l i s t . c o m / r u / analysis?pubid=179379988 – интернетатаки 2005 года. 4. h t t p : / / w w w . v i r u s l i s t . c o m / r u / analysis?pubid=204007527 – Kaspersky Security Bulletin 2006. Интернет-атаки. 5. Авраменко А. Все ли возможности ClamAV вы используете? //Системный администратор, №9, 2005 г. – С. 52-55. 6. Максимов И. Возможности поискового движка DataparkSearch. //Системный администратор, №5, 2006 г. – С. 80-84. 7. Максимов И. Тестируем движки поисковых машин. //Системный администратор, №8, 2006 г. – С. 80-85. 8. http://de.samba.org/samba/ftp/smb2www – сетевой ресурс программы smb2www. 9. http://www.fpsn.net/products&product=File:: Scan::ClamAV – официальная страница модуля File::Scan::ClamAV.
безопасность
Auditor Collection: проверяем безопасность вашей сети
Андрей Бирюков Каждый системный администратор – хозяин сети компании, но иногда сеть может захватить кто-то другой. Для того чтобы этого не произошло, необходимо заботиться о безопасности корпоративных ресурсов.
Цель и средства Во многих компаниях системные администраторы слишком заняты решением текущих задач технической поддержки и не уделяют должного внимания защите сети и информационных ресурсов. Но такое положение дел рано или поздно приводит к очень серьезным проблемам: вирусным эпидемиям, большому объему нежелательной почты, утечке информации, сбоям и т. д. Современная сетевая инфраструктура даже в небольших компаниях может состоять из оборудования и программного обеспечения разных производителей, использующих множество протоколов и форматов хранения данных. Для того чтобы сеть была хорошо защищена от угроз и посягательств, администратор должен хорошо знать, как работает оборудование и ПО в его сети, а также уметь обнаруживать и устранять уязвимости в системе безопасности. Но учитывая раз-
74
нообразие используемых устройств и приложений, задача поиска уязвимостей становится отнюдь не тривиальной. Нужно найти и настроить множество сканеров уязвимостей и анализаторов, с помощью которых осуществляется поиск «лазеек для хакеров». Теперь несколько слов об инструменте, который мы будем использовать для решения поставленных задач. Для поиска уязвимостей в сети можно воспользоваться специально собранным для этих целей дистрибутивом Linux с нехитрым названием Auditor Collection. Я полагаю, этот дистрибутив будет полезен как специалистам по сетевой безопасности, так и системным администраторам, решившим произвести аудит своей сети. В статье я расскажу об этом бесплатном продукте, опишу инструменты для анализа безопасности, которые, как в хорошем швейцарском ноже, собраны в Linux Auditor [6]. А также рассмотрим,
как лучше закрыть обнаруженные уязвимости в системе безопасности.
Запуск и начало работы Auditor Collection собран на основе Knoppix и, следовательно, позволяет осуществлять загрузку образа операционной системы с компакт-диска, не требуя установки на жесткий диск. Хотя при желании Auditor можно развернуть в качестве постоянной операционной системы на жестком диске. Для проведения полноценного аудита я бы рекомендовал по возможности использовать ноутбук. Это позволит достичь мобильности при проверки физически разделенных сегментов сети, а также позволит протестировать беспроводные точки доступа как на охраняемой территории вашего офиса, так и, что важно, за ее пределами. В состав дистрибутива входит набор драйверов, так что проблем с определением оборудования, в частнос-
безопасность ти, адаптеров беспроводного доступа и модемов у меня не возникло. Отмечу также, что дистрибутив не требователен к ресурсам и 128 Мб оперативной памяти ему достаточно. После загрузки к вашим услугам оконный интерфейс KDE. Выбрав значок с буквой «К» в левом нижнем углу, и затем, обратившись к разделу Auditor, вы получите список средств, которые можно использовать для проверки.
Узнаем больше о системе Начнем с первого пункта «Footprinting» – это процесс сбора информации об интересующей сети. Утилиты, собранные в данном разделе, в той или иной степени преследуют цель получения различными способами информации об удаленном узле или сети (см. рис. 1). Прежде чем приступить к описанию этих утилит, поясню, чем Footprinting может быть полезен Рисунок 1. Список утилит системному администратору при аудите своей же сети. Во-первых, с помощью этих утилит можно узнать, ка- домена. Если вам удалось получить копию зоны с того IP, кую информацию о вашей сети может получить потенциаль- которому это не разрешено (а разрешено пересылать зоный взломщик. Конечно, некоторая информация является ны только secondary DNS-серверам), то значит, ваш DNSоткрытой, и скрыть ее у вас не получится (например, на ко- сервер настроен некорректно с точки зрения безопасносго зарегистрировано доменное имя корпоративного сайта, ти. Также с помощью dnswalk можно находить ошибки в наверсия ПО, «зашитая» в сетевое оборудование). Во‑вторых, стройках DNS. В следующем примере в зоне делегируется если вы подвергнетесь атаке со стороны злоумышленни- поддомен zone.webserver.ru, для которого не удается найков, то неплохо бы принять меры, чтобы в будущем пресе- ти авторитативных серверов. Подробнее о DNS можно прокать подобные попытки взлома. И наконец, в‑третьих, не- честь в статье [2]. которые из утилит для Footprinting могут оказаться полезauditor# dnswalk -r webserver.ru. ны при поиске неисправностей (например, различные варианты Traceroute). Checking webserver.ru. Getting zone transfer of webserver.ru. from ns.webserver.ru...done. Теперь я расскажу про утилиты, входящие в группу SOA=ns.webserver.ru contact=paul.webserver.ru Footprinting. Утилиты подгруппы WhoIs помимо стандартBAD: webserver.ru NS ns. webserver.ru: CNAME (to webserver.ru) BAD: webserver.ru NS ns4.nic.ru: unknown host ных функций по сбору информации о том или ином хосWARN: user1. webserver.ru CNAME user. webserver.ru: CNAME те позволяют использовать для сбора информации нуж(to host. webserver.ru) BAD: zone. webserver.ru NS ns. webserver.ru: CNAME (to webserver.ru) ный WhoIs-сервер. Также есть возможность работать чеChecking zone. webserver.ru рез GUI‑интерфейс. Подробнее о работе протокола WhoIs BAD: SOA record not found for zone. webserver.ru BAD: zone. webserver.ru has NO authoritative nameservers! можно узнать из документа RFC 3912 (WHOIS Protocol BAD: All zone transfer attempts of zone. webserver.ru failed! Specification) [1]. Следующий инструмент сбора информа0 failures, 6 warnings, 6 errors. ции о сети – Traceroute. Здесь также подобраны утилиты, обладающие расширенным функционалом по сравнению Среди других утилит этой подгруппы хотелось обрас обычной командой traceroute. Например, в программе есть возможность применять для сбора информации о маршруте тить внимание на NSTX. Это уже не совсем инструмент не только протокол ICMP, но и протокол TCP, использующий для Footprinting, а скорее средство вторжения, но автодля соединения различные порты. Это может быть полез- ры Linux Auditor почему-то поместили NSTX именно в эту но, когда необходимо узнать маршрут до узла, если ICMP- группу. Утилита позволяет организовать туннелирование трафик закрыт. Вот небольшой пример использования дан- IP-трафика поверх DNS. Этот способ проникновения быной утилиты: на рис. 2 получаем маршрут из нашей сети вает эффективен, когда в вашей сети закрыт доступ в Индо yandex.ru при закрытом протоколе ICMP. А для любите- тернет по всем портам, кроме 53 (DNS). Так что, если в вашей сети имеются сегменты с такими ограничениями (налей работать с оконным интерфейсом также есть GUI. пример, гостевой доступ у провайдера доступа в Интернет), то рекомендую провести проверку с помощью NSTX. Вот DNS: больше чем служба Далее идет подгруппа утилит DNS Lookup. Здесь основным что для этого нужно. Возьмем машину, находящуюся в огинструментом для сбора информации является доменная раниченном сегменте, загрузимся с диска Auditor. Это буслужба имен. Утилита DNSwalk позволяет произвести по- дет наш клиент. Для начала запускаем псевдоинтерфейс иск ошибок в описании зон и некорректное делегирование. с нужным IP‑адресом: Например, вы можете попробовать с помощью этой утилиifconfig tun0 10.0.0.1 up ты осуществить пересылку зоны DNS для корпоративного
№3, март 2007
75
безопасность
Рисунок 2. Traceroute через TCP
Примечание: если для теста вы используете описываемый дистрибутив Auditor Linux, то никаких проблем возникнуть не должно. Но если используется другой дистрибутив, то могут потребоваться средства для создания псевдоинтерфейса Ethertap. Для этого нам нужны модули ядра, которые можно подгрузить следующим образом: insmod netlink_dev insmod ethertap
Затем создаем файл устройства: mknod /dev/tun0 c 36 16
Теперь берем еще одну машину, находящуюся за пределами ограниченного сегмента, также грузимся с диска Auditor. На ней также запускам псевдоинтерфейс, по аналогии с описанным выше. Осталось запустить наш nstxd на обоих сторонах. Сначала на серверной запускаем фальшивый сервер имён: nstxcd zone.server.com
Потом на клиентской: nstxd zone.server.com 123.45.67.89
Для практической работы надо иметь в своем распоряжении зарегистрированный DNS, на котором создать короткоживущую зону и прописать удаленный компьютер как NS для данной зоны. Кратко поясню, как все это работает. Происходит инкапсуляция данных
76
в DNS-запрос, и наши данные передаются серверу DNS, к которому мы имеем доступ. DNS провайдера обращается к нашему серверу, отвечающему за зону zone.server.com, а тот передаёт всю информацию на фальшивый сервер имён, который и возвращает нужный ответ по тому же маршруту назад. Несмотря на кажущуюся сложность в реализации DNS, туннелинг является эффективным методом обхода защиты сети. Наиболее эффективным средством для борьбы с этим видом взлома, на мой взгляд, является внедрение системы обнаружения вторжения (IDS), например SNORT (www.snort.org). Следующим подразделом является HTTP/HTTPS. Здесь можно найти несколько браузеров, большинство должны быть знакомы опытным администраторам UNIX-систем, поэтому подробно останавливаться на этом не буду.
Все об оборудовании Если в вашей сети используется активное сетевое оборудование (маршрутизаторы, коммутаторы, принт-серверы и т. д.), то утилиты для работы с SNMP вам могут пригодиться. Прежде всего это MIB-браузер, с помощью которого можно подключиться к оборудованию (см. рис. 3). Тут обратите внимание на то, что многие производители и поставщики оборудования по умолчанию включают службу SNMP. В качестве примера можете попробовать подключиться к одному из своих устройств по протоколу SNMP, указав в качестве зна-
чения community – public. Вполне вероятно, что вам удастся получить данные в режиме Read Only. Но если какие-либо значения доступны для записи, тогда примите меры по защите устройства. Как правило, наилучшим решением является запрет на запись по SNMP и закрытие доступа по 161 порту для всех сетей, которым данный протокол не требуется. Подробнее об SNMP и его использовании можно прочитать в источнике [3]. Следующим инструментом является LDAP-браузер, который позволяет осуществлять навигацию по дереву LDAP. Например, по дереву Active Directory. С помощью этой утилиты можно без труда определить, какие ресурсы дерева доступны для той или иной учетной записи. Далее идут утилиты для работы с SMB. С их помощью можно просканировать сеть на предмет наличия общедоступных ресурсов. Имеются как консольные, так и графические утилиты. И завершают группу Footprinting средства определения операционной системы OS Detection. Например, на рис. 4 изображен отчет, сделанный утилитой Nmap Front End. Средством борьбы с OS Detection является закрытие дост упа к узлу по протоколу ICMP из всех подсетей, кроме административной подсети (Management VLAN). Более подробно о способах определения операционной системы, а также о борьбе с footprinting можно прочесть в источнике [7]. Итак, подведем итог, что же мы собрали с помощью Footprinting, чьи «отпечатки ног»? По итогам выполненных действий можно составить таблицу, содержащую IP-адрес устройства, его операционную систему, функциональные обязанности и т. д. Для администратора в этой таблице может и не будет ничего нового, но он увидит сеть глазами хакера, то есть какую информацию взломщик сможет получить, применив данные утилиты. Наличие информации об операционных системах позволяет начать поиск уязвимостей, так что эти сведения важны. Постарайтесь скрыть сведения об операционной системе своего почтового сервера, маршрутизатора, веб‑сервера и других устройств, подключенных к публичной сети. Это усложнит
безопасность взломщикам проникновение к ресурсам вашей сети.
Сканеры: ищем уязвимости Следующим, не менее важным инструментом при проведении нашего аудита являются сканеры, объединенные в группу Scanners. Эта группа в свою очередь разделена на подгруппы: сканеры безопасности, уязвимости для приложений и оборудования, сетевые сканеры и другие. Описывать по отдельности каждую из утилит нет смысла. На основании тех сведений, которые были получены в результате Footprinting, просканируйте свои ресурсы на предмет уязвимостей. Например, если у вас есть веб-сервер, то можно воспользоваться утилитами из подгруппы Web Server Scanner, лучшим из которых, на мой взгляд, является сканер Nikto. Аналогично можно проверить активное сетевое оборудование и другие ресурсы.
Анализируем трафик Еще одним полезным средством аудита, входящим в состав дистрибутива Linux Auditor, является набор сетевых анализаторов, входящих в группу Analyzer. Сбор информации о проходящем по сети трафике является неотъемлемой частью аудита. В данную группу входят анализаторы, предназначенные как для перехвата всего
Рисунок 3. MIB-браузер
сетевого трафика, так и для перехва- затором, обсудим то, где лучше разта данных, передаваемых определен- местить машину с запущенным снифными приложениями (например, клиен- фером. Для того чтобы аудит был натом ICQ, веб-браузером или почтовым иболее эффективен, необходимо, чтоклиентом). Также полезной может ока- бы через данную машину проходил заться утилита DSniff, которая перехва- весь трафик сети. В простейшем слутывает только пароли, передаваемые чае можно воспользоваться конценпо сети. Оставьте ее на несколько ми- тратором (хабом) или включить даннут включенной, и вы сможете опре- ную машину «в разрыв», но для крупделить, насколько часто по вашей се- ных сетей это не самые лучшие решети передаются учетные данные в неза- ния. Гораздо более эффективно это шифрованном виде. можно сделать, если активное сетеОпределившись с сетевым анали- вое оборудование, используемое в сети, поддерживает технологию SPAN (Switched Port Analyzer). Она позволяет осуществлять мониторинг трафика, проходящего через коммутатор. Более подробно про технологию SPAN можно прочесть в [4].
Подмена как инструмент взлома
Рисунок 4. Утилита Nmap Front End
№3, март 2007
Следующая группа утилит, которую авторы Auditor Linux включили в свой дистрибутив, – это Spoofing. Спуфингом именуется вид удаленных атак, связанных с подменой адреса источника. Например, IP Spoofing – подмена IP-адреса определенной машины. Это позволяет злоумышленнику либо скрыть источник атаки (используется в атаках типа «отказ в обслуживании»), либо извлечь какую-либо пользу из доверительных связей двух машин. Для злоумышленника базовый принцип атаки заключается в фальсифика-
77
безопасность ции собственных IP-пакетов (например, с помощью таких traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.227 (10.0.0.227) 1.712 ms 1.465 ms 1.501 ms программ, как hping2 или nemesis из группы Spoofing), в ко2 10.0.0.1 (10.0.0.1) 2.238 ms 2.121 ms 2.169 ms торых изменяется среди прочего IP-адрес источника. Атака IP Spoofing часто называется «слепой подменой» (Blind Теперь злоумышленник может прослушивать трафик Spoofing). Это связано с тем, что ответы на фальсифициро- между машинами 10.0.0.171 и 10.0.0.1. Для того чтобы приванные пакеты не могут прийти машине атакующего, ведь веденный пример заработал, не забудьте на машине предбыл изменен исходящий адрес. Но порой это и не нужно, на- полагаемого злоумышленника активировать маршрутизапример, для протоколов, не требующих подтверждения. цию через 10.0.0.227. Рассмотрим то, как можно воспользоваться утилитаНа резонный вопрос, как от подобных атак защититьми для спуфинга. Вот пример утилиты для осуществления ся, могу предложить реализовать безопасность на втором ARP-spoofing (ARP-redirect), то есть перенаправления се- уровне – протокол 802.1х. тевого трафика с одного или нескольких узлов на машину злоумышленника. Атака ARP Spoofing используется в ло- Аудит беспроводного доступа кальной сети, построенной на коммутаторах. С ее помо- Далее идут две группы утилит, посвященных беспроводщью можно перенаправить поток Ethernet-фреймов на дру- ному доступу. Первая из них – это набор утилит для рабогие порты в соответствии с MAC-адресом. После чего зло- ты с Bluetooth. В связи с развитием мобильных технологий умышленник может перехватывать все пакеты на своем данный адаптер устанавливается на многие модели мопорту. Таким образом, атака ARP Spoofing позволяет пере- бильных телефонов и карманных компьютеров. И очень хватывать трафик машин, расположенных на разных пор- часто владелец не предпринимает никаких мер по защитах коммутатора. Поясним на практике. те своего мобильного устройства от проникновений через Пусть у нас есть машина-жертва с адресом 10.0.0.171, Bluetooth-адаптер. Так что если у вас на машине имеется ее шлюз – 10.0.0.1, машина злоумышленника имеет ад- Bluetooth, то рекомендую вам проверить вашу сеть с поморес 10.0.0.227. Результат выполнения команды traceroute щью сканера и в случае обнаружения устройств произвесперед атакой: ти проверку на наличие уязвимостей. Вторая группа утилит – это набор утилит для работы [root@user -> ~]$ traceroute 10.0.0.1 с Wireless – беспроводными точками доступа. Эта технология используется повсеместно, поэтому на вопросах беtraceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.1 (10.0.0.1) 1.218 ms 1.061 ms 0.849 ms зопасности остановимся подробнее. Еще до запуска какихлибо утилит аудита произведите следующие действия. ARP-кэш машины: Отключите отправку SSID (если вы не являетесь провайдером беспроводного доступа к Интернету, то незачем всем [root@user -> ~]$ arp сообщать о существовании своей беспроводной сети). Поэкспериментируйте с мощностью сигнала за предеAddress HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:b0:c2:88:de:65 C eth0 лами вашего офиса. Настройте мощность излучения сво10.0.0.227 ether 00:00:86:35:c9:3f C eth0 их радиоточек так, чтобы уверенный прием был только там, где это необходимо, а за пределами охраняемой территоЗлоумышленник запускает программу ARPSpoof рии лучше чтобы приема не было вообще. (Audit → Spoofing → Address Resolution Protocol): Если у вас небольшое число клиентских устройств, то лучше всего составить список MAC-адресов устройств, [root@hacker -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1 которым разрешен доступ. На клиентских устройствах отключите использование 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f соединений компьютер-компьютер (ad-hoc). … И наконец, самое главное, это шифрование трафика. Прежде всего ни в коем случае не используйте WEP. Посылаемые пакеты – это ARP-ответы, изменяющие кэш При современных вычислительных мощностях для того машины 10.0.0.171. Они несут информацию, что с адресом чтобы обеспечить конфиденциальность данных, зашиф10.0.0.1 теперь ассоциирован MAC-адрес 00:00:86:35:c9:3f. рованных WEP, вам потребуется менять ключ шифроваТеперь ARP-кэш машины 10.0.0.171 выглядит так: ния каждые 10 минут. Как вы понимаете, это практически невозможно. Наилучшим решением является использова[root@user~]$ arp ние WPA. Если у вас большая сеть, то лучше всего развернуть WPA-EAP, использующий уже упоминавшийся ранее Address HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:00:86:35:c9:3f C eth0 протокол аутентификации 802.1x. Вообще о безопасности 10.0.0.227 ether 00:00:86:35:c9:3f C eth0 беспроводных сетей лучше всего прочитать труды «классика» – [5]. Чтобы убедиться, что весь трафик теперь проходит чеИз утилит, входящих в состав Linux Auditor, предназнарез машину 10.0.0.227, еще раз запустите traceroute к шлю- ченных для проверки безопасности беспроводных соедизу 10.0.0.1: нений, хотелось бы отметить Kismet. Это набор утилит, позволяющих осуществлять сканирование и анализ беспро[root@user]$ traceroute 10.0.0.1 водной сети.
78
безопасность Стойкость паролей Вот мы медленно, но верно подходим к концу нашего аудита сети. Подведем промежуточный итог. Была собрана информация о существующих устройствах и приложениях, проверены возможности несанкционированного выхода в Интернет, в обход межсетевых экранов, и устойчивость сети к атакам типа spoofing. Проверили также беспроводной доступ в сеть. Но один очень важный фактор безопасности сети остался не освещенным – это человеческий фактор. Я не собираюсь пускаться в пространные размышления на тему социальной инженерии, но упомяну о том, что большинство утечек информации происходит по неосторожности или злому умыслу со стороны самих сотрудников компании. Здесь немаловажным фактором является то, как сам сотрудник хранит корпоративные секреты. Про бумажки с паролями, которые приклеивают к мониторам, уже упоминалось неоднократно, но даже тщательно скрываемый пароль может оказаться не таким уж большим секретом, если он, например, является каким-то осмысленным набором символов (слово или фраза, дата рождения и т. д.). Вот тут нам и пригодятся утилиты из следующих двух разделов Bruteforce и Password Cracker. В разделе Bruteforce собраны утилиты, которые позволяют осуществлять подбор паролей. «Слепой» перебор всех возможных вариантов может занять долгое время, но нам это и не нужно. Определитесь со сложностью пароля и проверьте только те варианты, которые не удовлетворяют этому уровню сложности. Можно проверять на предмет соответствия списку известных паролей, которые также имеются в этом разделе. Кстати, там есть словари для разных языков, в том числе и для русского. Так что любителям использовать в качестве паролей русские слова в английской раскладке стоит призадуматься. Например, с помощью утилиты HydraGTK можно произвести проверку паролей ко многим распространенным службам: серверу POP3, ICQ, HTTP Proxy и других. Утилита имеет как оконный интерфейс, так и консольный вариант. Также в этой группе имеется документ, содержащий заводские настройки по умолчанию для оборудования
№3, март 2007
и программного обеспечения. Утилиты раздела Password Cracker имеют схожий функционал, только предназначены для аудита файлов с паролями. Для проверки надежности паролей вашей сети, вам прежде всего пригодится утилита John The Ripper, хорошо извесный взломщик паролей. Применив утилиту для расшифровки samфайлов (в которых хранятся пароли Windows), Рисунок 5. Утилита Hydra можно легко узнать у кого из пользователей простые пароли, нуть еще о некоторых полезных функлегко подвергаемые взлому. циях. Если вы хотите установить дисСобираем улики трибутив на жесткий диск, зайдите Следующий раздел – это Forensics в раздел «System» и далее «Auditor HD (можно перевести как «следственные installer». Также в разделе Applications средства»). Утилиты из этого раздела можно найти утилиту для получения пригодятся вам в случае, если есть по- Screenshots (снимков экрана), иногда дозрение, что в вашу сеть кто-то про- бывает полезно. ник, либо действует шпион. С помоИтак, в итоге мы собрали сведещью утилиты Autospy можно отслежи- ния о версии прошивки оборудования, вать все обращения к ресурсам серве- трафике, беспроводных сетях, паролях. ра, выясняя таким образом, кто и за- Надеюсь, что методы проверки безочем пытается получить доступ. Также пасности сетевых ресурсов, описанв данной группе имеется несколько ные в этой статье, оказались полезны утилит для восстановления удаленных для вас, и ваша сеть стала более защифайлов. Эти утилиты могут оказаться щенной и устойчивой к взломам. полезными не только при расследоваУдачи. нии инцидентов, связанных с безопасностью, но и при банальном восстанов- 1. Описание протокола WhoIs – http:// лении случайно удаленных данных. tools.ietf.org/html/rfc3912.
Горшочки с медом И наконец, последняя группа утилит – Honeypot (буквальный перевод – приманка). Технология Honeypot – ресурс безопасности, назначение которого состоит в том, чтобы стать приманкой. Это означает, что независимо от того, какую структуру имеет средство Honeypot, цель состоит в том, чтобы данный ресурс был исследован, атакован и использован злоумышленником. Так что, если вас интересуют, к примеру, методы взлома сервера Microsoft IIS, то можете воспользоваться соответствующей утилитой IISimulator.
Подводим итоги Завершая повествование о Linux Auditor Collection, хотелось бы упомя-
2. Система доменных имен – http:// zeus.sai.msu.ru:70 0 0/ internet /dns / khramtsov/25.shtml. 3. Бирюков А. Управляем сетевым оборудованием с помощью протокола SNMP. //Системный администратор, №3, 2006 г. – C. 64-69. 4. Описание и конфигурирование SPAN – http://cisco.com/en/US/products/hw/ switches/ps708/products_configuration_ guide_chapter09186a008007f323.html# wp1019961. 5. Крис Касперски. Насколько неуязвима ваша беспроводная сеть? – http://www.samag.ru/cgi-bin/go.pl?q= articles;n=06.2005;a=12. 6. Сайт проекта Linux Auditor Collection – http://www.remote-exploit.org. 7. Методика определения ОС – http:// insecure.org/nmap/osdetect.
79
программирование
Ruby – язык завтрашнего дня
Владимир Овсянников Сегодня очень трудно не заметить ажиотаж вокруг языка программирования Ruby и фреймворка Ruby on Rails.
R
uby (в переводе с англ. – ру- недавно – в 2004 году, с появлением бин) был задуман в 1993 году Ruby on Rails. японцем Йукихиро Мацумото (Yukihiro Matsumoto), известным как Что же такое Ruby? Matz. Фанатик объектно-ориентиро- Ruby – интерпретируемый язык прованного программирования, он решил граммирования, поддерживающий создать более объектный язык, нежели много разных парадигм, в первую очеPython и более мощный, чем Perl. редь объектную. Обладает автоматиПервая публичная версия Ruby вы- ческим «сборщиком мусора» и строгой шла в 1995 году. Постоянно нараста- динамической типизацией, поддержила его популярность – ведь раз напи- вает многопоточность (*nix и независисав хотя бы одну программу на Ruby, мая от ОС). писать на другом языке уже невозможно. Достоинства Ruby Но действительный прорыв в его n Объектом является абсолютно распространении произошёл совсем всё (имя класса – тоже объект).
80
Как и в языке SmallTalk, понятие «примитивный тип» отсутствует (5 – объект класса Fixnum, 'ruby' – объект класса String, ... ). Даже части кода представлены тоже в виде объекта. n Простой и последовательный синтаксис. Если вы хорошо говорите, читаете, пишете на английском, то для вас программа на Ruby – великолепная проза. Об этом хорошо изложено в книге «Why's (Poignant) Guide to Ruby» (http:// poignantguide.net/ruby). n Переменные не нужно объявлять, они не типизированы. Это касается и атрибутов класса.
программирование n Поддержка основных принципов ООП (классы, методы, полиморфизм, инкапсуляция, примеси, методы-одиночки и т. д.). n Блоки/Итераторы. Обычно эти понятия ассоциируются с языком программирования Python, однако Ruby ничем не уступает ему, а благодаря удивительной гибкости языка использование блоков стало более удобным. n Неограниченный диапазон значений целых чисел. К сожалению, только целых. n Обработка и перехват исключений. В этом плане язык схож с Java. n Абсолютно всё возвращает значения. Методы, циклы, блоки и условные операторы if, unless, ?: возвращают последнее высчитанное значение, а условия and и or возвращают элемент, эквивалентный true, или первый элемент. Благодаря этому можно переменную приравнять, допустим, к циклу или конструкции case! Это удобно. n Мощная поддержка правил (регулярных выражений). Заимствована у Perl с адаптацией под объектную парадигму. Ruby – скриптовый язык, хотя имеется средство упаковки в .exe-файл для Win32 (http://exerb.sourceforge.jp), но при упаковке теряются некоторые преимущества программ, написанных на Ruby, такие как неограниченный диапазон целых чисел, кросплатформенность и некоторые другие.
Иерархия базовых классов Ruby
n Задание низкоуровневых струк- ся на втором этапе установки выбрать тур данных не представляется возможным.
Установка
n Linux – большинство дистрибутивов уже распространяется с Ruby. Но если вы не являетесь обладателем оного либо хотите поставить более свежую версию, то взять исходные коды всегда можно с сайта http://www.ruby-lang.org/ en/downloads. n Windows – на сайте http://www.rubylang.org/en/downloads можно взять Ruby One-Click Installer – самый простой способ поставить Ruby на Windows. n MacOS – установить Ruby, используя MacPorts (http://www.macports.org), можно командой: %port install ruby
Недостатки Ruby
n Скорость. Ruby действительно
При установке Ruby ставится irb медленный, на что сам автор язы- (Interactive Ruby), именно им и бука ответил следующим вопросом: дем пользоваться, запускается в кон«Вам платят за результат, который соли командой irb. (При установке достигнут в срок или за качество, на Windows, используя Ruby One-Click которое достигнуто с опозданием?» Installer, автоматически в переменТакже хочется отметить, что Java ную PATH добавляется директорий также очень медленный, но тем с бинарными кодами ruby.) Irb – интерактивный интерпретатор выражене менее им пользуются. n Интерпретируемый язык. Это ний Ruby, считываемых со стандартпроблема для тех, кто пишет ком- ного ввода. Для удобного и системонезависимерческое ПО. Исходный код нельзя утаить даже в готовой прог- мого управления модулями/плагинами рамме – это действительно проб- используется свой собственный формат пакетов (аналог rpm, deb, tgz, tbz, лема. n Невозможность управлять неко- msi, ...) – rubygems. При использоваторыми процессами, например нии Ruby One-Click Installer rubygems можно установить сразу (предлагаетвыделением памяти.
№3, март 2007
необходимые компоненты, в том числе и rubygems), а вот для обладателей не Windows придется скачивать rubygems из Интернета и устанавливать отдельно. Установить модуль, например vcard (для работы с форматами vCard и iCalendar), можно командой: # gem install vcard -y --remote
При этом модуль будет скачан из Интернета c соблюдением всех зависимостей (вам не стоит тратить время на поиски недостающих пакетов) и установлен на вашей машине. Подробнее о gem вы можете узнать, выполнив команду: # gem --help
Типы данных Как вы уже знаете, в Ruby всё – объекты тех или иных классов. Базовые классы: n Fixnum (целые числа, меньше 231); n Bignum (целые числа, больше 231); n Float (дроби); n String (строки); n Array (индексные массивы); n Hash (ассоциативные массивы); n NilClass (nil/null); n TrueClass (истина); n FalseClass (ложь). Ruby автоматически приводит к к лассу Numeric (в зависимости от значения – Float, Fixnum или Bignum) все объекты следующего вида: n 2 – целое число; n -3 – отрицательное целое число;
81
программирование n 4.5 – число с плавающей точкой; n 067 – восьмеричное число; n 0b11 – двоичное число; n 0xF0F0 – шестнадцатеричное число. К классу String приводятся все объекты, записанные в апострофах или кавычках. Разница между этими двумя типами записи такая же, как в PHP, – в строках в кавычках происходит автозамена эскейп-последовательностей на соответствующие коды и записи вида #{объект} на значение объекта. В Ruby есть два предопределённых объекта для обозначения логических значений («да»/«нет») – true (класс TrueClass) и false (класс FalseCalss). Внимание: пустая строка, ноль, пустой массив… в логических операторах не являются аналогом false, его аналогом является только nil (класс NilClass), остальное – true. Запись вида [el1, el2, el3] воспринимается как массив (индексный),а {'A'=>1, 'B'=>2, 'C'=>3} – как ассоциативный массив. Так что следующие строки кода взаимозаменяемы: arr1 = Array.new arr2 = [] hash1 = Hash.new hash2 = {}
Не hello word! Начнём сразу с более интересных вещей, нежели вывод на экран тривиальной фразы. Метод class есть у всех объектов, и возвращает он класс объекта. Введите «1.class» и нажмите <Enter>. Irb выведет: => Fixnum
значит, 1 – объект класса Fixnum, а вот, написав «(2**99).class», результат будет другой, т.к. целые числа более 231 являются объектами другого класса (** – возведение в степень). Теперь напишем ещё более интересный пример: 1.class.class => Class
Это значит, что класс Fixnum является объектом класса Class, который в свою очередь тоже объект класса Class.
Методы и атрибуты
n Переменные класса с @@, за которыми следует строчная буква или знак подчёркивания.
n Глобальные переменные со знаком «доллар» ($), за которым следует строчная буква или знак подчёркивания.
n Имена методов также именуются со строчной буквы или знака подчёркивания. В Ruby можно создать методы с именами, например attr= и attr, которые будут вызываться: obj.attr = 5 var = obj.attr
А благодаря акцессорам (attr_accessor, attr_reader и attr_writer) отпадает необходимость написания большинства методов для доступа к атрибутам объектов. class MyFirstClass # создаём класс с именем MyFirstClass attr_reader :first # заменится на def first; @first; end attr_writer :second # заменится на def first=(v); # @first = v; end attr_accessor :tre # attr_reader + attr_writer def initialize(attrs) # конструктор @first = attrs[:first] @second = attrs[:second] @tre = attrs[:tre] @end_attr = attrs[:end] end def end=(oth) # метод end = будет приравнивать # @end_attr половине аргумента @end_attr = oth/2.to_f # .to_f – принудительное # приведение к Float end def end # метод end будет возвращать квадрат @end_attr @end_attr**2 # методы возвращают последнее вычисленное # значение или аргумент return end end obj = MyFirstClass.new(:first=>'FIRST', :second=>2, ↵ :tre=>'ТРИ', :end=>5) obj.first # => FIRST obj.first = 'ПЕРВЫЙ' # => ОШИБКА: метод first=() не определён obj.second = 'ДВА' # => ДВА obj.second # => ОШИБКА: метод second() не определён obj.tre = obj.tre*3 # => ТРИТРИТРИ obj.end # => 25 obj.end = 11 # => 11 obj.end # => 30.25
Блоки Блок – одна из главных особенностей Ruby, умение ими пользоваться – ключ к очень коротким, понятным и много делающим программам. Думаю, вы не раз забывали закрыть открытый файл, очистить выделенную память, закрыть соединение с сервером... Теперь это не проблема:
Когда я программировал на C/C++, порой часто переписывал часть кода, которая обычно была связана с неприFile.open('/tmp/tempfile', 'w') do |tmp| язнью использования глобальных переменных. Я в конtmp.write 'Bla-bla-bla' це концов запутывался, какие переменные у меня локальend ные, какие глобальные, а какие – атрибуты класса. В Ruby это не проблема: Блок – анонимный метод. Он захватывает переменn Все имена классов и модулей должны начинаться с боль- ные окружающей среды. В примере тело блока ограничено do end, которые, кстати, могут быть заменены на { }. шой латинской буквы. n Локальная переменная называется просто с маленькой В качестве аргумента блоку передаётся объект класса File. буквы или знака подчёркивания. После выхода из блока этой переменной не будет – она лоn Все переменные объекта (они же атрибуты) со знака @, кальная для блока. за которым следует строчная буква или знак подчёркиБлок сам откроет, а главное, закроет файл при необвания. ходимости.
82
программирование Итераторы Это те же блоки, но заточенные на работу с перечисляемыми объектами (объект является перечисляемым, если у него есть метод succ, возвращающий следующий элемент). То, что в древности люди делали циклами, теперь делают итераторы. Самое главное – что их много и каждый делает своё дело. Для того чтобы вывести на экран все элементы массива, например, на C, нужно написать: for(i=0; arr[i]; i++){ printf("%d\n", arr[i]) }
На Ruby это выглядит приятнее: arr.each{|el| puts el}
А вот как найти все числа массива, которые делятся на 3 без остатка: rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].find_all ↵ {|el| (el%3).zero?} puts rez
На экране появятся числа 3, 6, 9, 12, 15, 21, 30 – всё верно. Увеличить все элементы в два раза: rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].map{|el| el*2}
Разделить массив на две части: в одном собрать все элементы больше 12, а в другом – остальные: rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].partition ↵ {|el| el>12}
В rez[0] – 15, 17, 21, 22, 25, 30; а в rez[1] – 3, 4, 5, 6, 7, 8, 9, 11, 12 Преимущества итераторов перед циклами очевидны: они проходят по каждому элементу единожды. В отличие от циклов у них нет счётчика, который можно подкручивать. Их много, и каждый делает своё дело.
Индексы Ну что за программа без массивов? Думаю, таких нет. Так вот, как, например, выбрать из массива три последних элемента? Не знаю, как это делаете вы, а я – так: a = [1,2,3,4,5,6,7,8,9,0] a[-3..-1]
# => [8, 9, 0]
Да, отрицательные индексы! Очень удобно. str = 'String' str[1] str[1].chr
# => 116 # => 't'
Квадратные скобки у строк возвращают коды символов, а не сами символы. Для преобразования кодов в символы используется метод chr. А квадратные скобки у чисел возвращают значения соответствующих битов.
№3, март 2007
print 5[0], 5[1], 5[2] # => 101
Вывод на экран Для вывода на экран есть три метода: puts, print и p. У каждого класса имеются методы to_s и inspect (они наследуются от класса Object). Методы puts и print выводят возвращаемое методом to_s значение, разница лишь в том, что puts после вывода очередного аргумента ставит перевод строки, а print нет. Метод p выводит значение метода inspect и используется для отладки. Методы to_s и inspect должны возвращать именно строку. Метод to_s класса Integer (целые числа) может принимать в качестве аргумента целое число – основание системы счисления. 5.to_s(2) 8.to_s(7) 59.to_s(27) 100.to_s(36)
# # # #
=> => => =>
'101' '11' '25' '2s'
Следует не забывать, что to_s возвращает строку, т.е. 5.to_s(2)*2 вернёт не 10, и даже не 1010, а '101101'. Хотелось бы отметить, что Ruby уже во многих школах преподают вместо Basic. Также его преподают и в университетах в целях изучения ООП (даже на специальностях, не связанных с информационными технологиями). Всё это потому, что Ruby – самый лёгкий язык программирования. Скорость написания программ, их компактность и, что немаловажно, их читаемость поражают воображение. Под читаемостью понимается возможность разобраться в исходном коде другому программисту без комментариев. Несмотря на сравнительно недавний бум Ruby, для него уже написано огромное количество модулей на все случаи жизни. А благодаря автоматическому сборщику мусора и удобному API крайне легко использовать для нужд Ruby библиотеки, написанные на C. И напоследок: n Существует и развивается интерпретатор Ruby для Symbian (http://developer.symbian.com/main/tools/ opensrc/ruby/index.jsp). n Разработчики JRuby уже работают на компанию SUN Microsystems. n По данным http://www.tiobe.com за март 2007 г., Ruby – на 10-м месте по распространённости среди языков программирования. Ruby – язык завтрашнего для. Учите, дерзайте и развивайте! 1. Скачать Ruby и множество библиотек к нему можно с сайтов – http://www.ruby-lang.org и http://www.rubyforge.com. 2. Больше о Ruby можно узнать на http://ru.wikibooks.org/wiki/Ruby и http://ruby-doc.org. 3. Programming Ruby. The Pragmatic Programmer's Guide – http:// pragmaticprogrammer.com. Русскоязычной литературы пока нет, но издательство «Питер» планирует переводить эту книгу. 4. Интересные скринкасты – http://showmedo.com/videos/series? name=rubyRailsOriginalCastsSeries и http://showmedo.com/ videos/video?name=rubyGrosenbachDeprec&fromSeriesID=48.
83
программирование
Обзор Ruby on Rails
Владимир Овсянников Благодаря удивительной гибкости языка программирования Ruby при создании приложения на «Рельсах» трудно заметить, где заканчивается Ruby и начинается Rails.
R
uby on Rails – фреймворк для создания «изящных» веб-приложений, использующих СУБД, написанный на Ruby. Реализует принципы MVC (модель – представление – контроллер). Ruby on Rails не писался специально в качестве фреймворка. Он был «выделен» из удачно работающего приложения Basecamp. Для установки Ruby on Rails необходимо в командной строке набрать: # gem install rails -y
Ruby on Rails – это набор интегрированных друг в друга модулей Ruby: n actionmailer;
84
n actionwebservice; n activesupport; n actionpack; n activerecord; n rails.
Actionmailer Помогает значительно упростить работу с почтой. Используя этот модуль можно с лёгкостью отправлять и читать электронные письма. Для отправки можно использовать Sendmail или удалённый SMTP-сервер. Есть возможность работать как с простыми письмами, так и с письмами в формате HTML, составными (maltipart) и письмами с вложениями.
Activerecord Ассоциирует объекты с базой данных. Позволяет работать с таблицами СУБД не как с набором строк, а как с конкретными объектами. Увольнение сотрудника сводится не к удалению определённого кортежа из одной таблицы и добавлению кортежа в другую, а к вызову метода «dismiss!» (уволить) объекта, соответствующего определённому сотруднику. Activerecord позволяет уйти от написания громоздких условий и циклов. Например, чтобы объяснить, что пароль должен содержать от четырёх до десяти символов и совпадать с подтверждением, а в случае нарушения
программирование условий выдавать пояснения, нужно написать следующее: class User < ActiveRecord::Base validates_confirmation_of :password, ↵ :message=>'Пароли не совпадают' validates_length_of:password, :in=>4..10, ↵ :too_long=>'Пароль слишком длинный', ↵ :too_short=>'Пароль слишком короткий', :on=>:create end
Actionpack Включает в себя реализацию контроллера MVC (средства для обработки запроса, инициализации модели и передачи данных в шаблоны) и реализацию представления MVC (средства предоставления информации пользователю). Реализована поддержка генерации (x)HTML, XML, JavaScript, шаблонов, разбиения разметки на составляющие. Поставляется с JavaScript-библиотеками Prototype.js и script.aculo.us, а также неплохим набором помощников для удобной работы с ними. Это позволяет писать мощные AJAX-приложения легко и просто.
Actionwebservice Необходим для создания приложений, использующих вебсервисы. Позволяет писать как клиентские, так и серверные части приложений. С помощью этого модуля можно реализовать сервер WS лишь SOAP/XMLrpc-ориентированный, однако, в RoR 1.2 уже поддерживается «из коробки» и RESTfull WS, но уже на уровне Actionpack.
Activesupport Расширяет возможности стандартных классов Ruby и некоторых классов предыдущих модулей. К примеру, у класса Numeric появляются методы minutes, day, week... что позволяет удобно работать с датами: (10.weeks + 1.day – 4.minutes).ago
А данные в массиве легко разбить на группы, например, по три элемента в каждой: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].in_groups_of(3){|el| p el} => [1, 2, 3] => [4, 5, 6] => [7, 8, 9] => [10, nil, nil]
Rails Это модуль, который интегрирует все предыдущие. При создании RoR-проекта командой: rails <имя директории>
Будет создано следующее дерево директорий: /app/ В принципе именно в этой директории находится приложение controllers/ Контроллеры models/ Модели views/ Представления helpers/ Методы-помощники /config/ Файлы настроек /log/ Файлы журнализации /tmp/ Файлы сессий, кеш /script/ rails-скрипты генерации/удаления/тестирования/...
№3, март 2007
/db/ migrate/ /public/ /test/ /vendor/ plugins/
Файлы миграции Корень (index.html, изображения, Java-скрипты) Плагины
В Ruby on Rails практически ничего не надо настраивать. Единственное, что нужно указать, – параметры доступа к данным (СУБД, хост, имя пользователя/пароль... ). Благодаря гибкости Ruby Activerecord позволяет работать с таблицами без какой-либо предварительной обработки. Даже не нужно указывать имена таблиц! Если имя модели User, значит, она организовывает работу с таблицей users, Person – peoples. Вместо настроек – договорённость – модель – единственное число от имени таблицы (подразумевается, что таблицы всегда во множественном, но если это не так, то это не проблема – в определении модели можно указать имя таблицы).
The End К Rails очень многие относятся неравнодушно. Например, на официальном сайте IBM выложено множество статей и документации по этому фреймворку, и причины, по которым вместо Java лучше использовать RoR или использовать их вместе. А Sun Microsystems усиленно принялась за разработку JRuby, и в первую очередь именно из-за Rails. Также имеется несколько реализаций компиляторов Rubyпрограмм в объектный код .net, и многие видят в этом попытки запуска Rails в .NET-среде. Сейчас модно ассоциировать интерес к Ruby и Ruby on Rails с признанием поражения Java на рынке языков программирования для Web. Но так это или не так (я склонен считать, что именно так), Ruby on Rails достоин изучения. Приверженцы Javа утверждают, что аппаратура дешевле, нежели программисты или ПО, чем оправдывают медлительность и требовательность к ресурсам этого языка программирования. В таком случае не стоит обращать внимание на медленность Ruby, которая, безусловно, сказывается на Ruby on Rails, а при использовании Mongrel (mongrel.rubyforge.org) их медлительность практически не ощущается. И ещё: n Ruby on Rails-приложения можно запустить на Sun Java System Web Server 7.0. n Ruby on Rails – на первом месте в «The Top Five Technologies You Need to Know About in '07» (http:// computerworld.com/action/article.do?command=viewArticle Basic&articleId=9011969&intsrc=hm_ts_head). Ruby on Rails достоин того, чтобы его изучали и использовали. 1. Подробно о схеме-паттерне MVC – http://heim.ifi.uio.no/~trygver/ themes/mvc/mvc-index.html и http://st-www.cs.uiuc.edu/users/ smarch/st-docs/mvc.html. 2. Официальный сайт Rails – www.rubyonrails.com 3. Документация – www.api.rubyonrails.com. 4. Больше о Ruby on Rails можно узнать, посетив группу на http:// groups.google.com/group/ror2ru. 5. Agile Web Development with Rails – http://books.pragprog.com/ titles/rails2.
85
ретроспектива
Google: история лучшей поисковой системы
Илья Александров Многие скептически называют Интернет большой свалкой информации. Но достаточно набрать в адресной строке браузера www.google.com, чтобы понять абсурдность таких высказываний. 86
ретроспектива
G
oogol (гугол) – термин математический, обозначающий число, равное десяти в сотой степени. Впервые его употребил в своих научных работах Эдвард Краснер (Edward Krasner), а имя термину придумал его девятилетний племянник Милтон (Milton). Но в подавляющем большинстве знают об этом лишь выпускники технических университетов. У всех же остальных, когда они слышат слово «Google», ассоциации возникают исключительно с электронной поисковой системой.
Отцы-основатели Один из создателей Google, Сергей Брин, родился в Москве, в 1973 году. Дед Сергея был преподавателем математики в МЭИ, отец работал учитеЛэрри Пэйдж (слева) и Сергей Брин лем в школе. В 1979 году семья Брина переехала из Советского Сою- был известен по всей Америке. Час- на какие из них содержится больше за в США, пользуясь американской то рассказывают легенду о том, как всего ссылок. Брин и Пэйдж исходипрограммой эмиграции для евреев, в юности Лэрри собрал модель струй- ли из того, что наиболее полезными проживающих на территории России. ного принтера из набора конструкто- для пользователя будут сайты, ссылОтец Сергея продолжал преподавать – ра Lego. Его мать преподавала про- ки на которые в Сети наиболее частеперь уже в университете штата Мэ- граммирование в Мичиганском уни- ты. После анализа содержимого Интернета результаты поиска выстраириленд (Maryland). Мать, тоже матема- верситете. После окончания университета вались в списке иерархически. Место тик, устроилась на работу в NASA. Уже в детс тве Сер гей поз на- Пэйдж поступил в Стэнфорд, где и каждого сайта в этой иерархии завикомился с компьютерами. Первой встретился с Брином. Очевидцы ут- село не только от того, насколько часего вычислительной машиной стал верждают, что при первой встрече они то он цитировался на других ресурсах, Commodore 64, за которой он прово- очень сильно невзлюбили друг друга: но и от качества ссылок. То есть ссылка с более популярного сайта в иерардил массу времени. Даже домашнее спорили, ругались… Как бы там ни было, очень скоро хии котировалась больше, чем с сайзадание часто выполнялось на комСергей и Лэрри стали лучшими дру- та, который пользовался меньшей успьютере. После школы Сергей поступил зьями. Но вряд ли они догадывались, пешностью. Эффективность данного алгоритв университет, где преподавал его во что выльется их дружба. ма поиска была очень высока. Брин отец. Закончил его досрочно и подаже опубликовал на эту тему нелучил престижную премию NSGF. BackRub – предвестник сколько материалов в ряде американВо многом благодаря данному фак- Google ту Сергей смог продолжить образо- Уже в то время Сергей был автором ских научных журналов. Сервер был установлен прямо вание в Стэнфордском университе- ряда интересных программ, например, те. Это учебное заведение примеча- конвертера из формата TeX в HTML. в общежитии, в комнате Пэйджа. Унительно тем, что талантливые студен- Брином был создан сайт, где разме- верситет помогал своим студентам, ты могут сразу получить кандидатс- щались рецензии на кинофильмы, но Лэрри и Сергею все равно прикую степень, «перешагнув» через сте- но больше всего волновали молодо- шлось потратить немало собственго человека системы поиска данных. ных средств, поскольку для работы пень магистра. В 1995 году Сергей жил в Кремни- Вместе с Пэйджем они вступили в ра- системы требовалось большее колиевой долине (там, собственно, Стэн- бочую группу Стэнфордского универ- чество жестких дисков общим объфордский университет и находится), ситета под руководством доцента ка- емом в терабайт, которые обошлись и являлся магистром математичес- федры информационных технологий. им в 15 тыс. долларов. К началу 1996 года проект, используПока сервер использовался лишь ких наук. Лэрри Пэйджу (Larry Page) сам Бог ющий инновационные возможности для поиска информации в локальной велел стать компьютерщиком. Как и поиска данных в Интернете, был поч- сети университета, но позже он стал в случае с Брином, он родился в семье ти завершен. Сервер получил назва- доступен всем пользователям Интернета по адресу google.stanford.edu. математиков. Его отец, Карл Пэйдж ние BackRub. BackRub обрабатывал содержаБета-версия поисковой машины (Carl Page), профессор компьютерных наук, как заядлый компьютерщик ние различных ресурсов, выявляя, была запущена на университетском
№3, март 2007
87
ретроспектива сервере в 1998 году. Тогда же окон- ятельно развивать ресурс, попутно чательно утвердилось и название – продолжая искать инвесторов. «Google», произошедшее из немного переигранного слова googol, о кото- «Гаражный» этап ром говорилось в начале статьи. истории Отныне Брин и Пэйдж читали лек- Энди Бехтольшайм (Andy Bechtolsheim), ции в университете на свою люби- од ин из отцов - ос нователей Sun мую тему – о технологиях поиска ин- Microsystems, не зря считается чеформации. ловеком дальновидным. Он заинтеОднако в отношении Google де- ресовался поисковой системой и выла шли у них не столь хорошо. Руко- разил желание стать её спонсором. водство университета было совсем Когда Лэрри и Сергей встретились не в восторге от того, что работа по- с Брином, он очень спешил. Мельком исковой системы отнимала почти во- взглянув на демо-версию Google, он семьдесят процентов от всего тра- просто спросил: «На чье имя выпифика учебного заведения. Тогда дру- сывать чек?» зья решили запатентовать свою техТаким образом, друзья получили нологию и продать ее какой-нибудь в своё распоряжение первые сто тыкомпании. сяч долларов, часть из которых сраОдним из первых, к кому они об- зу ушла на покупку доменного имератились, стал Джордж Белл (George ни google.com. Брин взял академиBell). В то время он возглавлял компа- ческий отпуск, и они с Пэйджем уению Excite, занимавшуюся почтовыми хали из Стэнфорда, прихватив с сосистемами. Джордж скептически от- бой в команду Крейга Сильверштейнесся к Google, заверив, что на поиске на (Creig Silverstein). Крейг стал перденег не заработаешь. К слову, Excite вым нанятым сотрудником новоисв скором будущем обанкротилась. печённой Google Inc. Сегодня он заТогда Сергей встретился с Дэви- нимает пост технического директодом Фило (David Filo), создателем ра компании. Yahoo. Дэвид отказался покупать Офис Google был открыт в МенGoogle, но поисковая система ему ло-Парке, штат Калифорния. Первопонравилась. Он посоветовал и даль- начально в качестве него выступал ше работать над проектом. обычный… гараж. Однако гараж был Отчаявшись продать свою разра- очень комфортным: в нём была мойботку, Брин и Пэйдж решили самосто- ка, сушилка и даже джакузи! Нашлось
Заглавная страница Google.ru
88
в нём и место для парковки автомобиля Крейга. Но, как бы там ни было, уже тогда поисковая система, всё ещё проходившая бета-тестирование, обрабатывала по 10 тысяч запросов в день. О Google появились статьи в прессе, причем в крупнейших изданиях вроде USA Today. В конце 1998 года Google вошёл в список ста лучших сайтов Интернета. В том же году Sequoia Capital инвестировала в проект 25 миллионов долларов. В совет директоров компании, состоявший тогда лишь из Брина, Сильверштейна и Пэйджа, вошёл Джон Дёрр (Jhon Derr), до этого работавший в Amazon.com. Штат сотрудников постоянно пополнялся, в гараже уже не было свободного места. Да и стол д ля игры в настольный теннис, за которым проходили собрания директоров, явно не соответствовал растущему статусу компании. Требовалось переезжать в более солидный офис. А посещаемость Google тем временем достигла трёх миллионов поисковых запросов в день.
1999-2000 годы Новую штаб-квартиру компании решено было разместить в городе Маунтин-Вью. Гаражные будни остались в прошлом, офис теперь располагался в прекрасном здании в центре города. Он даже получил специальное название – Googleplex. В 1999 году отладка программной части сервера была закончена, и Google заработал в нормальном режиме. В качестве поисковой службы этот сервер выбрали America On-Line и NetScape. Клиентами компании также стали популярнейший ресурс Италии Virgilio и британский сетевой справочник Virgin Net. Журнал Time включил Google в десятку лучших кибернетических технологий. В июне 2000 года поисковая система официально стала крупнейшим ресурсом такого рода в сети, проиндексировав более миллиарда вебстраниц. Появились доходы от клиентов, пользующихся Google на своих сайтах. Портал Yahoo объявил о более активном сотрудничестве с поисковой системой. Со временем разработкой Бри-
ретроспектива на и Пэйджа начали пользоваться жители Китая и Японии. На рубеже тысячелетий сайт стал лауреатом Webby Award, получив награду «Народный выбор» за технические достижения. Речь победителей, произнесенная Сергеем и Лэрри, состояла из пяти слов: «Мы любим вас, пользователи Google!» Компания начала, наконец, приносить доход. Во многом это было связано с эффективной рекламной политикой: специально для рекламодателей была запущена программа AdWords. Смысл её заключался в том, что реклама ни в коем случае не должна мешать пользователю. На странице с результатами поиска отображаются лишь те рекламные объявления, которые имеют непосредственное отношение к искомой информации. Появился модуль, позволяющий вести поиск непосредственно из окна браузера. Сегодня подобной возможностью обладают практически все браузеры, однако в то время она была диковинкой. В 2000 году Google вышла на мобильный рынок. Отныне искать информацию в Интернете могли и обладатели мобильных телефонов, поддерживающих WAP.
2001 год В феврале 2001 года Google приобрела Deja.com – крупнейший архив сообщений сети UseNet. Началась работа по созданию улучшенного архива системы сообщений. В итоге было проиндексировано порядка пятисот миллионов сообщений, доработан интерфейс и введена нормальная система поиска. Позже к архиву UseNet добавился и еще один архив сети – FidoNET. Оценить результат работы можно, зайдя на groups.google.com. Для превращения Google в коммерчески успешный интернет-проект на должность исполнительного директора был приглашен Эрик Шмидт (Eric Schmidt), до этого занимавший руководящие посты в Novell и Sun. Прибыль компании неук лонно росла, увеличивалось и количество пользователей ресурса. Соглашение с Lycos Korea улучшило позиции Google в азиатском секторе се-
№3, март 2007
Группы новостей на groups.google.ru
ти, а договор с Universo Online спо- длежавшую Blogger.com. Этот ресурс собствовал получению статуса глав- является одним из самых популярной поисковой системы в Латинской ных среди «блоггеров». Таким обраАмерике. Кроме того, появилась воз- зом, Google показал, что сферы влиможность поиска на 26 языках мира яния компании в Интернете не ограпомимо английского. ничиваются одними лишь поисковыИз интерес ных проек тов с то - ми системами. ит отметить Google Zeitgeist. Сервер на протяжении года анализировал те- 2004 год матику запросов, после чего были оз- В начале года появился новый сервучены самые популярные темы, вол- вис – «местный поиск». Благодаря ему нующие пользователей. человек может, например, найти магазин одежды в окрестностях своего до2002-2003 годы ма или посмотреть список существуВ это время состоялось открытие раз- ющих в городе пиццерий. дела labs.google.com. На этом раздеПервого апреля Google Inc. объле программисты компании выкла- явила о создании собственной почтодывали новые разработки для бета- вой службы под названием Gmail, кототестирования. Пользователи смог- рая выделяла для каждого почтового ли удовлетворить свое любопытс- ящика гигабайт дискового пространство, а разработчики получили мас- тва. Оказалось, это вовсе не шутка, и вскоре сервис gmail.com действису отзывов. В сентябре была запущена служ- тельно заработал. Помимо гигабайта ба «Новости Google», автоматически места на сервере, он отличался развыбирающая сообщения с лучших но- витой системой поиска и серьезным востных порталов и объединяющая их подходом к регистрации адреса. Чтов единые блоки. бы получить почтовый ящик, требоваВ декабре появилас ь слу жба лось попросить инвайт-код у человеFroogle, осуществляющая поиск по ин- ка, уже зарегистрированного на Gmail. тернет-магазинам. Благодаря ей поль- Однако на этом компания не останозователь может сравнить цены и ко- вилась. личество товаров определенного тиВ июне была приобретена Picasa па на разных сайтах. Inc., что позволило запустить ресурс В 2003 году Google Inc. приобре- picasa.google.com, специализируюла компанию Pyra Labs, ранее прина- щийся на хранении графических фай-
89
ретроспектива Философия Google Десять лозунгов, определяющих философию компании (по материалам google.ru): 1. Сосредоточь все внимание на пользователе, а остальное приложится. 2. Лучше делать что-то одно, но делать это очень и очень хорошо. 3. Быстро – лучше, чем медленно. 4. Демократия в Интернете есть.
5. Не нужно сидеть за компьютером, чтобы получить ответ. 6. Деньги можно заработать честным путем. 7. Новая информация существует всегда. 8. Для поиска информации нет границ. 9. Можно быть серьезным и без костюма с галстуком. 10. Пределов совершенству нет.
лов пользователей. Picasa стал одним ставляющую услуги хостинга владельиз самых популярных хранилищ циф- цам цифровых видеокамер. ровых фотографий в Интернете. В это время была также создана Но Google не забывает и о новых программа Google Desktop Search: откадрах. Для набора программистов ныне Google может искать не только был проведен конкурс Code Jam, в хо- информацию в Интернете, но и файлы де которого пятьдесят наиболее та- на жестком диске пользователя. Кролантливых программистов стали со- ме того, существует специальная вертрудниками компании. сия для локальных сетей, а для удобсА к сентябрю Google мог «похвас- тва ипользования программа локалитаться» языковыми версиями уже зована на многие языки мира. для ста стран мира, включая, кроме Чувствуя веяние времени, Google всего прочего, ряд стран Африки. Inc. отк р ыла с обс твенный блог: В декабре была запущена про- в Google Blog публикуется информаграмма Google Print, целью которой ция о продуктах компании, записи ее является создание онлайновой биб- сотрудников. лиотеки. Книги из личных хранилищ Но одним из наиболее успешных американских университетов, Нью- проектов стали карты Google, благоЙоркской и других публичных библи- даря которым любой пользователь Инотек были отсканированы и выложены тернета может получить подробную в свободный доступ в Интернет. карту местности Эта идея позже эвоВ этом же году мировое сообщес- люционировала в Google Earth. Технотво, наконец-то, по-достоинству оце- логия позволяет посмотреть, что твонило труд основателей Google. Лэр- рится в любой точке земного шара. ри Пэйдж стал членом Национальной Благодаря использованию современакадемии инженерных наук (National ных спутниковых технологий можно academy of engineering sciences), в деталях разглядеть даже какую-ниа вместе с Сергеем Брином они были будь деревню в российской глубинке. награждены премией Маркони. Этой В 2005 году был также разрабопремией в свое время был награж- тан новый важный продукт – Google ден, скажем, Тим Бернерс-Ли (Tim Talk, являющийся голосовым аналоBerners-Lee) – один из создателей гом ICQ. «Глобальной паутины» (World Wide Web, WWW). Google сегодня Говоря о Google, нельзя не рассказать 2005-2006 годы об атмосфере внутри компании. В последние годы Google начал проЛюбой сотрудник может в любой являть активный интерес к онлайно- момент воспользоваться автоматами вому видео, вследствие чего и был со- с кофе или с кока-колой. В офис разрездан портал Google Video. Изначаль- шено приходить с детьми и даже с доно он содержал лишь записи телеви- машними животными. На стенах комзионных передач, однако впоследс- пании висят нарисованные карандатвии на нём стали появляться люби- шами рисунки. В коридорах тут и там тельские видеоролики. встречаются воздушные шарики осВ 2006 году Google укрепила ус- новных цветов компании, висят мишепех в этом секторе рынка, купив ни для игры в дартс. Шеф-повар комyoutube.com – самую популярную служ- пании раньше готовил для популярбу хранения видео в Интернете, предо- ных рок-групп.
90
Одно время вместо стульев в компании использовались большие шары для спортивной гимнастики. Двадцать процентов рабочего времени выделяется сотрудникам для самообразования. Кто-то совершенствует свои знания, кто-то пишет научные статьи. Внутри Google Inc. царит очень дружественная, почти семейная обстановка. Но требования к новым сотрудникам более чем высоки. Из первых ста двадцати служащих двадцать имели докторскую степень! В 2003 году акции Google вышли на фондовый рынок. Чтобы избежать влияния сторонних компаний на свой бизнес, в продаже находятся лишь акции, не дающие их обладателю право голоса. Другой тип акций, позволяющих влиять на политику компании, был распространён среди основателей и первых сотрудников Google. Но даже с этими ограничениями появление ценных бумаг Google Inc. на фондовой бирже вызвало огромный ажиотаж, благодаря которому Брин и Пэйдж сегодня – миллиардеры и фигуранты списка наиболее богатых людей планеты по версии журнала Forbes. Сегодня Google однозначно является лучшей поисковой систе мой в Интернете. По некоторым подсчетам, его трафик составляет 80% от всего трафика, вырабатываемого поисковыми системами. В английском языке уже появился неологизм «to google» (существует он и на русском: «гуглить»), внесенный в несколько словарей. Компания продолжает расти и развиваться, ежедневно предоставляя пользователям сети Интернет самую качественную поисковую систему, а также сопутствующие ей услуги. 1. http://www.google.ru/intl/ru/about.html. 2. http://en.wikipedia.org/wiki/Google. 3. h t t p : / / g o o g l e . b l o g s p a c e . c o m / archives/000621. 4. h t t p : / / w w w . w o r k - a t - h o m e - n e t guides.com/ar ticles/histor y- ofgoogle.html.
Редактор рубрики Дмитрий Мороз
bugtraq Уязвимость при обработке длинных URL в SpamAssassin
Обход ограничений безопасности в Mozilla Firefox
Программа: SpamAssassin версии до 3.1.8.. Опасность: Средняя. Описание: Уязвимость существует из-за неизвестной ошибки при обработке длинных URL в сообщении. Удаленный пользователь может с помощью специально сформированного сообщения аварийно завершить работу приложения. URL производителя: spamassassin.apache.org. Решение: Установите последнюю версию (3.1.8) с сайта производителя.
Программа: Mozilla Firefox 2.0.0.1 и более ранние версии; Mozilla Firefox 1.5.0.9 и более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки обработки записи данных, содержащих NULL-терминированные строки, в DOM-свойство location.hostname. Удаленный пользователь может с помощью специально сформированной вебстраницы управлять файлами куки для произвольных доменов. Пример эксплуатации уязвимости доступен по адресу: http://lcamtuf.dione.cc/ffhostname.html. URL производителя: www.mozilla.org. Решение: В настоящее время способов устранения уязвимости не существует.
Переполнение буфера в VicFTPS Программа: VicFTPS 3.9, возможно более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке информации, передаваемой серверу. Удаленный пользователь может послать серверу слишком длинную строку (более 320 байт), вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: vicftps.50webs.com. Решение: Установите последнюю версию (5.0) с сайта производителя.
Несколько уязвимостей в ClamAV
Программа: Clam AntiVirus (clamav) версии до 0.90. Опасность: Средняя. Описание: 1. Уязвимость существует из-за недостаточной проверки входных данных в параметре «id» при обработке MIME-заголовков перед созданием локальных файлов. Удаленный пользователь может с помощью специально сформированного сообщения, содержащего символы обхода каталога, перезаписать файл сигнатур антивируса и отключить обнаружение злонамеренного ПО на системе. Множественные уязвимости 2. Утечка дескрипторов файла существует при обрав Cisco PIX и ASA ботке CAB-файлов, содержащих длину записи, равную 0 Программа: Cisco PIX 6.x; Cisco PIX 7.x; Cisco Adaptive в заголовке файла. Удаленный пользователь может посSecurity Appliance (ASA) 7.x. лать специально сформированный CAB-архив антивируОпасность: Средняя. су и запретить всем пользователям отправлять легитимОписание: 1. Уязвимость существует из-за ошибки при рас- ные архивы. ширенной проверке HTTP-трафика. Удаленный пользо- URL производителя: www.clamav.net. ватель может с помощью специально сформированно- Решение: Установите последнюю версию (0.90) с сайта го HTTP‑запроса аварийно завершить работу устройства. производителя. Для успешной эксплуатации уязвимости должна быть включена расширенная проверка HTTP. Несколько уязвимостей в Cisco Firewall 2. Уязвимость существует из-за ошибки при проверке Services Module SIP-пакетов. Удаленный пользователь может с помощью Программа: Cisco Firewall Services Module (FWSM) 2.x. специально сформированного SIP-пакета аварийно за- Опасность: Средняя. вершить работу устройства. Для успешной эксплуатации Описание: 1. Уязвимость существует из-за ошибки при проуязвимости должна быть включена проверка SIP-пакетов верке SIP-пакетов. Удаленный пользователь может послать (по умолчанию отключена). специально сформированный SIP-пакет и вызвать пере3. Уязвимость существует из-за ошибки при проверке загрузку устройства. Для успешной эксплуатации уязвиTCP-протоколов. Удаленный пользователь может с помо- мости опция «SIP fixup» должна быть включена (значение щью специально сформированных пакетов вызвать отказ по умолчанию). в обслуживании устройства. Для успешной эксплуатации 2. Уязвимость существует из-за ошибки при обработке уязвимости должна быть включена проверка TCP-прото- списков доступа (Access Control Lists), использующих групколов (FTP или HTTP). пы объектов. Некорректное применение административ4. Уязвимость существует из-за ошибки в методе аутен- ным пользователем списков доступа может привести к тому, тификации «LOCAL». Злоумышленник может получить при- что ACE (Access Control Entries) будут пропущены или учтевилегии уровня 15 и полностью изменить конфигурацию уст- ны не в том порядке, что может позволить злоумышленниройства. Для успешной эксплуатации уязвимости злоумыш- ку обойти некоторые ограничения безопасности. ленник должен успешно пройти аутентификацию и должен URL производителя: www.cisco.com. иметь привилегии уровня 0 в локальной базе данных. Решение: Установите исправление 2.3(4.12) или 3.1(3.24) с сайта производителя. URL производителя: www.cisco.com. Решение: Установите исправление с сайта производитеСоставил Александр Антипов ля.
№3, март 2007
91
книжная полка
UNIX. Справочник Арнольд Роббинс (перевод М. Н. Аницкого)
Вышло уже четвертое издание справочника, но на русском языке оно доступно впервые. Позиционируется как настольная книга для пользователей UNIX-подобных систем. Этому способствует содержимое и структура справочника: он построен таким образом, что затрагивает важные моменты, общие для различных
ОС, основанных на UNIX или совместимых с ними. Формально книга охватывает 3 операционные системы: Sun Solaris 10 (как классическая разновидность UNIX), Fedora Core 3 (как яркий представитель популярной ОС, не являющейся прямым потомком UNIX, но «близкой по духу»), Mac OS X 10.4. Однако ими справочник не ограничивается, например, в главе про управление пакетами рассказано и про систему apt проекта Debian GNU/Linux. Основная часть материала подается как подходящая для всех этих и многих других программных платформ, а специфические особенности каждой оговариваются отдельно. Первая часть справочника и составляет его фундамент – в нем собрана основа для работы в командной строке UNIX-систем. Это и подробные описания огромного числа стандартных утилит, и информация по командным интерпретаторам bash, ksh, tcsh,
и вопросы менеджмента программного обеспечения (RPM, yum, up2date, dpkg/apt, Fink для Mac OS X, pkgadd/ pkgadm/... для Solaris). Вторая часть посвящена обработке текста: текстовым редакторам (emacs, vi/vim, ex) и специализированным утилитам (sed, awk). Третья – разработке программного обеспечения в среде UNIX (рассматриваются различные аспекты: контроль версий с RCS/CVS/Subversion, автоматизация сборки с GNU make, отладка с GDB, создание документации). А четвертая часть содержит дополнительные материалы, среди которых наибольшую ценность представляет «Библиография».
n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:
«КУДИЦ-ПРЕСС» 2007 864 5-91136-031-4 ≈ 651 руб. Книга предоставлена издательством «КУДИЦОБРАЗ» .
Архитектура вычислительных систем и компьютерных сетей Анатолий Степанов
Книга представляет собой учебное пособие, рекомендованное Минобрнауки для студентов вузов, и соответствует государственным требованиям по специальности «математическое обеспечение и администрирование информационных систем». Хорошо это или плохо, каждый решает сам, но некоторую специфику определенно накладывает.
92
Структура логична и традицион- ек микропроцессоров. В ряду последна для соответствующих курсов в ву- них не забыты и отечественные разразах, разбивает все содержимое на три ботки: помимо информации об «истобольшие части: введение в архитекту- рическом» семействе БЭСМ есть данру компьютера, непосредственно архи- ные и об «Эльбрусе». тектура, компьютерные сети. Во ввеВ третьей части представлена обдении можно найти базовые понятия щая теория о линиях связи, классифии общие принципы функционирова- кации и топологии сетей, рассказано о сетевом оборудовании, вкратце осния компьютера. После этого приведена история вещены основные сетевые технолоразвития архитектуры и подробнос- гии, описана модель OSI. ти о ее современном устройстве (мноВсе главы оканчиваются контгопрограммный режим, многоуровне- рольными вопросами и упражнениявая организация памяти, функциони- ми для проверки и закрепления полурование оперативной памяти и кэша, ченного материала. типы внешней памяти, шины, различИздательство: «Питер Пресс» ные архитектуры процессоров, пери- n n Год издания: 2007 ферийные устройства). Завершается Количество страниц: 509 вторая часть способами оценки произ- n ISBN: 978-5-469-01451-5 водительности, классификацией архи- n Цена: ≈ 390 руб. тектур (отдельно вынесены параллель- n ные и неклассические) и обзором ак- К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м туальных на сегодняшний день лине- «Питер».
книжная полка
Oracle. Основы стоимостной оптимизации Джонатан Льюис
Стоимостная оптимизация – дело понастоящему тонкое. Хотя бы потому, что на этом поприще существенную роль играет множество факторов, что уследить за всеми бывает катастрофически сложно. И автор книги, будучи известным специалистом в рассматриваемой области, еще в вводной главе скромно предупреждает,
что «за всю свою жизнь работал только с несколькими сотнями баз данных», в то время как «возможны миллионы особенностей комбинаций конфигураций и распределений данных, вносящих отличия». Поэтому 100% эффективных рецептов решения всех специфичных проблем не представляется реальным. Но это не повод отчаиваться – книга изобилует готовыми к использованию примерами, которые способствуют пониманию того, как работает стоимостный оптимизатор и почему он может работать не так, как этого хотите вы. Для приводимых тестовых сценариев рекомендуется использовать Oracle 10g, однако в тексте зачастую приводятся замечания и про более ранние релизы этой СУБД (8i и 9i). В книге расмотрены такие аспекты, как табличное сканирование, се-
лективность и кардинальность, фактор кластеризации, частотные и сбалансированные по высоте гистограммы, битовые индексы, различные соединения (вложенные циклы, хэширование, сортировка, слияние). Затронута и отладочная трассировка с помощью файла 10053, помогающего узнать, чем же занимается оптимизатор при расчете значений кардинальности и стоимости. В приложениях вы найдете расширенную информацию о проблемах, которые могут возникнуть при переходе с одной версии Oracle на другую.
n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:
«Питер Пресс» 2007 528 978-5-469-01309-9 ≈ 455 руб. К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м «Питер».
Linux: азбука ядра Клаудия Зальзберг Родригез, Гордон Фишер, Стивен Смолски (перевод И. В. Легостаева)
Книга из серии «Программисты – программистам». Причем узкоспециализированные программисты в обоих случаях. Конечно, прочитать про устройство ядра своей любимой операционной системы с открытым кодом может захотеть и обычный пользователь Linux, но значимая часть информации такова, что вряд ли окажется для него полезной. А вот программисты будут рады: авторы разложили по полочкам всю структуру Linux-ядра и предлагают чи-
№3, март 2007
тателям глубокое понимание функционирования различных аспектов системы, и причем, делают это в интересной форме – с помощью подхода «сверху вниз»: по возможности сначала приводятся примеры выполнения различных процессов в пользовательском пространстве, а уже потом, шаг за шагом, «опускаясь» до более низкого уровня, демонстрируется работа ядра. Начинается книга с истории, обзора дистрибутивов GNU/Linux, устройства ОС и ее ядра. Затем приводятся основные конструкции Linux-программирования, примеры «общения» с ядром, раскрывается работа с процессами и управление памятью, взаимодействие с подсистемой ввода-вывода, файловой системой (разумеется, особое внимание уделено VFS). Рассказывается также о планировщике,
процессе загрузки, сборке Linux-ядра. Подробно описана процедура добавления собственного кода в состав ядра операционной системы. К слову, важно учитывать тот факт, что издание не ограничивается Linux на платформе x86, но и содержит множество примеров для PowerPC. При всех плюсах выделю отрицательный момент: за время изучения книги удалось неоднократно встретиться с досадными опечатками и целым рядом спорных мелочей в правописании.
n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:
«КУДИЦ-ПРЕСС» 2007 584 978-5-91136-017-7 ≈ 584 руб. Книга предоставлена издательством «КУДИЦОБРАЗ» .
Обзор книжных новинок подготовил Дмитрий Шурупов
93
подписка на 2007 год
Редакционная подписка для физических лиц n Вы можете оформить подписку
n Вы можете оформить подписку
n Журнал высылается почтой прос-
на любой российский адрес. n При заполнении квитанции обя‑ зательно РАЗБОРЧИВО укажи‑ те фамилию, имя, отчество пол‑ ностью, почтовый индекс и ад‑ рес получателя (область, город, улица, номер дома, номер квар‑ тиры), контактный телефон.
с любого месяца на любой срок. n В графе «Сумма» проставьте сумму за выбранное количество номеров. Стоимость одного номера журнала 150 руб. За 10 месяцев (с марта по декабрь) – 1500 руб. НДС и почтовые расходы включены в стоимость.
той бандеролью только после поступления денег на расчетный счет и копии заполненного и оплачен‑ ного бланка, отправленной в ре‑ дакцию по факсу: (495) 628‑82‑53 или на элек тронный а д рес: info@samag.ru.
94
подписка на 2007 год Российская Федерация
n Подписной индекс: годовой – 20780, полугодовой – 81655
Каталог агентства «Роспечать» n Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» n Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru n Подписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru
СНГ В странах СНГ подписка принимается в почтовых отделениях по национальным каталогам или по списку номенклатуры «АРЗИ»: n Азербайджан – по объединенному каталогу российских изданий через предприятие по распространению
печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
n Казахстан – по каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»
n Беларусь – по каталогу изданий стран СНГ через РГО «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
n Узбекистан – по каталогу «Davriy nashrlar» российские издания через агентство по распространению печати «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик, 5/3, офис 33) n Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Давида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22) n Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42) n Молдавия – по каталогу через ГП «Пошта Молдовей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17) по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) n Подписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220
Подписные индексы:
20780* 81655** по каталогу агентства «Роспечать»
87836 по каталогу агентства «Пресса России» *
годовой полугодовой
**
№3, март 2007
95
СИСТЕМНЫЙ АДМИНИСТРАТОР №3(52), Март, 2007 год УЧРЕДИТЕЛИ Владимир Положевец Александр Михалев РУКОВОДИТЕЛЬ ПРОЕКТА Петр Положевец РЕДАКЦИЯ Исполнительный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Главный редактор электронного приложения «Open Source» Дмитрий Шурупов Внештатные редакторы Алексей Барабанов Сергей Супрунов Дмитрий Мороз Владимир Василькин Андрей Бешков РЕКЛАМНАЯ СЛУЖБА тел./факс: (495) 628-8253 Евгения Тарабрина reсlama@samag.ru Верстка и оформление maker_up@samag.ru Дизайн обложки Николай Петрочук По вопросам распространения обращайтесь по телефону: (495) 628-8253 (доб. 120) 107045, г. Москва, Ананьевский переулок, дом 4/2, стр. 1 тел./факс: (495) 628-8253 Сайт журнала: www.samag.ru ИЗДАТЕЛЬ ЗАО «Издательский дом «Учительская газета» Отпечатано типографией ГП «Московская Типография №13» Тираж 15000 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.). За содержание статьи ответственность несет автор. За содержание рекламных материалов ответственность несет рекламодатель. Все права на опубликованные материалы защищены.
96
Читайте в следующем номере: Борьба с утечками информации через USB/Ethernet-порты
прочие. Соответственно и задачу можно решить разными способами и инструментами. В следующем номере журнала подробно рассмотрим один из них – проект Cacti.
Воздвигая все новые и новые системы защиты, многие системные администраторы даже и не подозревают, что враги находятся не только снару- Администрирование жи, но еще и изнутри корпоративной пользователей в домене сети. Это обычные сотрудники, копи- Active Directory рующие конфиденциальные файлы Одной из важнейших задач админисчерез USB\Ethernet-порты и вынося- тратора является управление локальщие их за пределы охраняемого пери- ными и доменными учетными запиметра. В следующем выпуске журна- сями: аудит, квотирование и разграла обсудим возможные каналы утеч- ничение прав пользователей в завики информации и покажем, как защи- симости от их потребностей, а тактиться от них, используя только штат- же политики компании. Посмотрим, ные средства операционной системы что может предложить в этом плане семейства Windows NT. Active Directory.
Мониторинг ресурсов с Cacti
Gnuplot. Графики заказывали?
По мере увеличения размеров се- Уже более двадцати лет gnuplot исти все более актуальным становится пользуется для визуализации данвопрос обеспечения ее бесперебой- ных. Это профессиональный инструной работы, своевременное нахож- мент, так как создавался под нуждение проблемных участков. Добить- ды учёных и ровно по той же причися его решения можно только прово- не gnuplot поразительно эффектидя постоянный мониторинг. Сущест- вен. Gnuplot не может думать за вас, вует большое количество Open Source- но ему не сложно объяснить, что вам систем мониторинга: Nagios, базирую- нужно. Трансформация данных в гращийся на нем Oreon; MRTG, RRDtool, фики – то, что у gnuplot получается небольшой Cricket, Zabbix, NetMRG и лучше всех.
Уважаемые читатели! Обратите внимание, что оформить подписку вы можете не только на полугодие, но и сразу на весь год. Годовой индекс по каталогу «Роспечать» – 20780. Интер-почта – заказ журналов по тел.(495) 500-00-60. Подписка on-line – SetBook.ru. Приобрести новые и старые номера журнала вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
Доставка почтой в любую точку России.