Так видит журнал читатель, который забыл оформить подписку:
БЫ
СТ РО ТИ РАС РА КУ Ж ПИ
КА НИ НО КУ ВО ЛЫ ГО ЗА ДНИ ТЯ Е НУ ЛИ
ЛИ
СЬ
№5(30) май 2005 подписной индекс 81655 www.samag.ru
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети
№12(49) декабрь 2006 подписной индекс 20780 www.samag.ru
Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM
Так видит журнал читатель, оформивший подписку: №5(30) май 2005 подписной индекс 81655 www.samag.ru
Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD
№12(49) декабрь 2006
ЗА Н КО ЕО НЧ ЖИ ИЛ ДА ИС НН ЬД О ЕН ЬГ И
ПО АВ СЛ РА Е О Л НА ТПУ РА СКА БО ТЕ
УЕ
ХА Л
ВО
ТП УС
К
Интервью с Ларри Уоллом – создателем языка Perl
Подробное руководство по настройке тонких клиентов на основе Thinstation и NX Как купить ПО от Microsoft? Особенности приобретения и использования OEM-версий Устанавливаем MS ISA Server 2004
Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl
Выдержит ли нагрузку ваш веб-сервер? Программы для стресс-тестов Организуем работу офисного почтового сервера на платформе Windows
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
В поисках анонимного прокси-сервера
Роспечать – 20780, 81655 Пресса России – 87836 Интер-почта – тел. (095) 500-00-60
Как надо и как не надо защищать веб-контент от кражи
в номере 2 ТЕНДЕНЦИИ
48 Делимся впечатлениями о дистрибутиве Linux XP Desktop
АДМИНИСТРИРОВАНИЕ 4 Устанавливаем межсетевой экран MS ISA Server 2004
Какова архитектура этого распространенного межсетевого экрана, на что обратить внимание при его установке и как настроить основные службы? Андрей Бирюков mex_inet@rambler.ru
10 Как купить ПО от Microsoft?
Разбираемся в особенностях приобретения и использования OEM-версий. Дмитрий Бутянов for.mail.only@gmail.com
16 Подробное руководство по настройке тонких клиентов на основе дистрибутива Thinstation и протокола NX
Технология NX дает новые возможности для связи и способна оживить старые компьютеры в роли тонких клиентов. Евгений Бушков protectorat@mail.ru
24 Кластеризация + виртуализация: Linux HA + OpenVZ Часть 2: Виртуализация на практике
Строим систему виртуализации с виртуальными серверами, мигрирующими с одного узла на второй в случае отказа первого. Евгений Прокопьев eugene.prokopiev@gmail.com
30 Настраиваем шлюз в Интернет на базе FreeBSD
Российская компания LINUX-ONLINE выпустила обновление к своему дистрибутиву Linux XP Desktop, напомнив сообществу о своих оригинальных подходах к Linux-бизнесу. Дмитрий Шурупов osa@samag.ru
54 Интеграция BIND + PostgreSQL
Подробное описание метода хранения зон BIND в PostgreSQL. Сергей Алаев alaev777@mail.ru
БЕЗОПАСНОСТЬ 61 Какие возможности появились в новой версии DeviceLock
Компания «Смарт Лайн Инк» отметила свое 10-летие выпуском новой версии DeviceLock 6.0, которая поддерживает функцию теневого копирования данных. Михаил Брод sales@smartline.ru
ЧЕЛОВЕК НОМЕРА 62 Романтичный хакер Крис Касперски
Компьютер – это тайна, считает популярный российский специалист по системам безопасности. Оксана Родионова rodion@dol.ru
WEB 66 Выдержит ли нагрузку ваш веб-сервер?
Простая в применении, нетребовательная к ресурсам FreeBSD почти идеально подходит для использования на небольших роутерах для связи с внешним миром. Алексей Бережной beralex2@mail.ru
36 В поисках анонимного прокси-сервера
Вопрос о безопасном серфинге по Интернету поднимался не раз. При использовании для этой цели прокси-сервера возникает вопрос, что лучше: искать прокси или создать свой? Иван Максимов ivan_maksimov@inbox.ru
Обзор программ для проведения стресс-тестирования. Сергей Яремчук grinder@ua.fm
74 Как надо и как не надо защищать веб-контент от кражи
Что использовать для охраны веб-контента – одну из многих защитных систем, имеющихся на рынке, или попытаться смастерить что-то свое? Крис Касперски kk@sendmail.ru
РЕТРОСПЕКТИВА
40 Организуем работу офисного почтового сервера на платформе Windows
82 Предвестник бури, или История первого персонального компьютера
44 MeTA1: почтовый сервер на новый лад
88 СОДЕРЖАНИЕ ЖУРНАЛА ЗА 2006 ГОД
Если бесплатные сервисы не устраивают вас скоростью и качеством доставки писем, а на эффективные дорогостоящие решения не выделяется средств, воспользуйтесь предложенной в статье альтернативой. Александр Емельянов numb13@mail.ru
Sendmail хоть и занимает первую строчку «хит-парада» среди открытых серверов электронной почты, но все же неуклонно теряет свои позиции. Команда разработчиков взялась исправить ситуацию. Сергей Супрунов amsand@rambler.ru Оформили подписку!
Мужики, где журнал взяли?
Почему я до сих пор этого не сделал?!
№12, декабрь 2006
Летим скорее на почту!
Я забыл подписаться!
Кремниевая долина превратилась в кузницу передовых идей в области информационных технологий. Яркий тому пример – исследовательский центр Xerox PARC, в котором был создан первый в мире персональный компьютер. Дмитрий Мороз akuji@list.ru
92 КНИЖНАЯ ПОЛКА 59, 81
BUGTRAQ Информация о подписке на 95 стр.
Лучше каждому получать отдельный экземпляр журнала
Принес номер на работу, «увели» почитать
И у меня такая же беда
А можно ещё успеть?
Как же я без любимого журнала?
1
тенденции Microsoft и Novell заключили договор В начале ноября компании Microsoft и Novell объявили о сотрудничестве, что, несомненно, стало главным событием последнего времени и вызвало массовое обсуждение. Компаниями был принят целый ряд соглашений по созданию, продвижению и поддержке новых решений для лучшего взаимодействия их продукции, а также по предоставлению взаимной защиты клиентам от проблем с патентами. Все соглашения будут действительны по крайней мере до 2012 года и позиционируются как новая веха в этапе развития возможностей взаимодействия между операционными системами семейств Windows и Linux. «Microsoft и Novell предоставляют клиентам возможность получить выгоду от продуктов каждой из компаний, что важно в их корпоративной инфраструктуре. Мы уверены, что наши деловые и патентные соглашения позволят предоставить высочайший уровень взаимодействия и уверенности в том, что обе компании поддержат эти решения», – заявил Рон Овсепян (Ron Hovsepian), президент и исполнительный директор Novell. Позже были обнародованы подробности о заключенной сделке: «Финансовые обязательства Microsoft, представленные как часть соглашения, значительны, – заявил Овсепян. – Это поможет ускорить продвижение Linux в сферах корпоративных заказчиков и государственных учреждений и широко расширить возможности Linux и Open Source. Это хорошо для Novell, но хорошо и для сообщества, потому что поспособствует распространению Linux и Open Source, повысит спрос на Linux-основанные решения». Стало известно, Microsoft авансом выплатит Novell 240
миллионов долларов за сертификаты по подписке на SUSE Linux Enterprise Server. Microsoft получит право использовать, перепродавать и распространять подписки по условиям договора, позволяя заказчику покупать одно- или многолетнюю подписку на обновления и техническую поддержку от Novell. В ближайшие 5 лет корпорация Microsoft потратит 60 млн. долларов на продвижение решений виртуализации на базе Linux и Windows и еще 34 миллиона долларов – на раскрутку совместного решения с Novell. Кроме того, Microsoft согласилась в течение ближайших трех лет не подписывать подобных соглашений по продвижению решений виртуализации с Linux и Windows с любыми другими Linux-поставщиками. Сотрудничество по совместной защите клиентов от патентных исков выразится в том, что Microsoft выплатит авансом Novell суммарно 108 млн. долларов, а Novell – как минимум 40 миллионов на протяжении ближайших 5 лет в зависимости от доходов с Open Platform Solutions и Open Enterprise Server. Разработчики Samba выразили свое негативное отношение к этой сделке, а Скотт Хэнди (Scott Handy) из IBM, напротив, заявил, что в его компании рады слышать о любых шагах по улучшению взаимодействия между Windows и Linux.
Sun официально открыла Java Компания Sun Microsystems сдержала обещание и в середине ноября официально объявила об открытии «ключевых Java-реализаций». К продуктам, исходный код которых был открыт, относятся Java Platform Standard Edition (Java SE), Java Platform Micro Edition (Java ME), Java Platform Enterprise Edition (Java EE). Все они отныне опубликованы под лицензией на свободное программное обеспечение GNU GPLv2. Ранее Java EE распространялась как Open Source-проект под лицензией CDDL в рамках Project Glassfish. Подробности о долгожданном событии с комментариями от таких видных деятелей, как Ричард Столлман (Richard Stallman) и Тим О'Рейли (Tim O'Reilly) опубликованы на http://www.sun.com/software/opensource/java.
Бирмингэм отказался от массового перехода на Linux Совет английского города Бирмингэм отказался от своего проекта по переводу настольных ПК на программное обеспечение с открытым кодом на базе Linux. Оказалось, что обновление до Windows XP – не такое дорогое, как предполагалось. Ожидалось, что городской совет Бирмингэма установит GNU/Linux на 1500 персональных компьютеров в библиотеках, однако дело ограничилось лишь 200 ПК. Это событие породило в СМИ информацию о том, что корпорация Microsoft во избежание потери такого клиента предложила представителям Бирмингэма особые скидки. Однако Ник МакГрат (Nick McGrath), возглавляющий стратегию по платформам в Microsoft, опроверг эти слухи.
Составил Дмитрий Шурупов по материалам www.nixp.ru
2
тенденции
«Битрикс» – лауреат «Премии Рунета 2006» 29 ноября в Москве состоялась Торжественная Церемония вручения ежегодной Национальной Премии РФ за вклад в развитие российского сегмента сети Интернет «Премии Рунета 2006». Компания «Битрикс», разработчик системы управления веб-проектами «Битрикс: Управление сайтом», – лауреат в номинации «Технологии и инновации». Сергей Рыжиков, директор ООО «Битрикс», убежден, что «Премия Рунета 2006» – заслуженная награда всей компании «Битрикс», всего коллектива, профессиональной команды. «Проведена серьезная работа над продуктом, и мы рады, что она завершилась таким успехом. Это важное достижение нашей компании». В шести основных номинациях «Государство и общество», «Наука и образование», «Культура и массовые коммуникации», «Наука и образование», «Экономика и бизнес», «Здоровье и отдых», «Технологии и инновации» были объявлены по три лауреата, кажВручение премии компании «Битрикс» дый из которых получил позолоченную статуэтку в виде колонны, увенчанной мами, рекламой, рассылками, распребуквенным обозначением российско- делять права между группами пользователей, анализировать статистиго домена «RU». «Премия Рунета» в номинации ку посещений, оценивать эффектив«Технологии и инновации» за 2006 ность рекламных кампаний и многое год вручена компании «Битрикс», другое. Отдельного внимания заслуживает Intel Technologies, а также компании МТУ-Интел и проекту «Стрим-ТВ». Все- мощная система безопасности продукго за звание лучшего интернет-ресур- та, которая обеспечивает защиту сайта са в этой номинации боролись 40 пре- от взломов и хакерских атак. Аудит бетендентов, в том числе восемь регио- зопасности продукта выполнен двумя нальных. В прошлом году «Премию Ру- независимыми компаниями. Испольнета» за технологии и инновации полу- зование продукта «Битрикс: Управление сайтом», получившего сертифичила Лаборатория Касперского. «Битрикс: Управление сайтом» – каты «Безопасное веб-приложение», универсальная система управления позволяет с уверенностью утверждать, веб-проектами. Удобный и понятный что современные корпоративные сайты интерфейс продукта позволяет эф- могут быть надежно защищены. На основе «Битрикс: Управление фективно управлять сайтом, не привлекая специалистов по программи- сайтом» работает более 3500 веб-пророванию и html-верстке. Управлять веб- ектов, среди которых сайты Издательпроектом, созданным на основе «Бит- ского Дома «Компьютерра», журналов рикс: Управление сайтом», не сложнее Cosmopolitan и Harper’s Bazaar, интернетчем создавать документы в обычном магазина компании «Эльдорадо», сайты страховой группы «НАСТА», «Ренессанс текстовом редакторе. «Битрикс: Управление сайтом» ре- Страхование», Департамента образовашает задачи 95% веб-проектов и поз- ния Москвы, Администрации Президенволяет управлять информационным та Удмуртии, Национальной Лиги Управнаполнением сайта, структурой, фору- ляющих и других организаций.
№12, декабрь 2006
Компания «Битрикс» специализируется на разработке программных продуктов для управления веб-проектами и многофункциональных информационных систем для ведения коммерческой деятельности в сети Интернет. «Битрикс» является технологическим партнером для дилерской сети, включающей более 1000 компаний, и предоставляет возможность дизайнстудиям и независимым разработчикам использовать продукты компании для реализации своих решений. «Премия Рунета» – общенациональная награда, призвана содействовать популяризации высоких технологий в России, отмечает выдающиеся заслуги компаний-лидеров в области информационных технологий и электронных коммуникаций, государственных и общественных организаций, бизнес-структур, а также отдельных деятелей, внесших значительный вклад в развитие российского сегмента сети Интернет. Учредитель «Премии Рунета»: Федеральное агентство по печати и массовым коммуникациям. На правах рекламы
3
администрирование
Устанавливаем межсетевой экран MS ISA Server 2004
Андрей Бирюков Вам предстоит внедрить в вашей компании Microsoft ISA Server 2004. Какова архитектура этого распространенного межсетевого экрана, на что обратить внимание при его установке и как настроить основные службы?
Приступая к работе Быстрота передачи данных по электронной почте, возможность мгновенно находить нужную информацию с помощью поисковых систем – все это сделало Интернет удобным инструментом, необходимым для работы. Однако помимо тех удобств, которые предоставляют ресурсы глобальной сети, они могут стать и источником массы угроз: атаки хакеров, вредоносные приложения, утечка информации, нежелательная почта. Все эти факторы представляют угрозу как для частных пользователей, так и крупных корпораций, и могут привести к значительным убыткам. Для борьбы с угрозами существует множество как аппаратных, так и программных решений. Если у вас сеть под управлением MS Windows, то вам наверняка знаком такой продукт, как Microsoft ISA Server 2004.
Разберемся с топологией сети Хотелось бы обратить ваше внимание на такую важную вещь, как имеюща-
4
яся на момент внедрения ISA топо- вом экране должен быть реализован логия сети. В сети организации име- доступ «снаружи» к нужным ресурсам, ются ресурсы, которые должны быть используя терминологию ISA Server, доступны как из глобальной сети, эти ресурсы должны быть опубликоватак и из локальной (например, почто- ны. По-хорошему, эти два межсетевых вый сервер, веб-сервер, FTP-сервер экрана должны находиться на разных и т. д.). Возможны два варианта под- серверах и использовать различное программное обеспечение (например, ключения. В одном случае и рабочие стан- Windows и ISA и Linux и iptables). Однако далеко не все, особенции, и серверы находятся в одном сегменте сети. Такой вариант встречает- но небольшие компании, могут позся в небольших организациях, где ко- волить себе использовать два сервеличество рабочих станций не превос- ра для защиты сети. Поэтому зачасходит 20 машин, а серверов зачастую тую прибегают к более дешевому ване больше двух. рианту: использованию одного сервеВ другом случае сеть организации ра с тремя сетевыми интерфейсами. содержит подсети, и соответствен- Тогда один интерфейс «смотрит» в Инно серверы, доступ к которым необ- тернет, второй – в DMZ и третий – в лоходим как снаружи, так и изнутри, на- кальную сеть. Далее в статье сетевой адаптер, ходятся в одной подсети (которая также именуется DMZ, демилитаризован- подключенный к Интернету, я буду наной зоной), а пользователи и локаль- зывать WAN, интерфейс, подключенные ресурсы находятся в других под- ный к демилитаризованной зоне, – сетях. При такой топологии серверы, DMZ, а к локальной сети – LAN. На рис. 1 изображены два варинаходящиеся в DMZ, должны быть отделены одним межсетевым экраном анта подключения межсетевого экот Интернета и другим – от локальной рана. В случае «а» используются два сети. При этом на внешнем межсете- межсетевых экрана, один подключен
администрирование к WAN и DMZ, а второй – к DMZ и LAN, в случае «б» – один межсетевой экран, подключенный и к WAN, и к LAN, и к DMZ. Если вы собираетесь реализовать второй вариант подключения, то обратите внимание на его недостатки.Прежде всего это общее снижение надежности сети. В случае зависания или перезагрузки сервера ресурсы, находящиеся в DMZ, будут временно недоступны пользователям. Например, если у вас в сети один почтовый сервер и он находится в демилитаризованной зоне, то при отключении межсетевого экрана он будет недоступен, и у пользователей в почтовом клиенте начнут появляться сообщения об ошибке соединения. Как следствие – поток звонков и жалоб системному администратору на неработоспособность сети. Другой недостаток использования одного сервера – это то, что в случае его выхода из строя все то время, которое вы потратите на замену, локальная сеть организации будет практически неработоспособна. И наконец, пожалуй, самый важный недостаток такой топологии, в случае если злоумышленнику удастся проникнуть на сервер, он сможет получить доступ как в DMZ, так и локальную сеть. Я буду описывать настройки сервера, который подключен к WAN и DMZ, вариант топологии «а» и при необходимости буду делать пояснения для реализации варианта «б». Если используются два межсетевых экрана, то все эти недостатки частично или полностью можно устранить. В случае выхода из строя одного из них в течение буквально нескольких минут сеть из варианта «а» можно превратить в вариант «б», добавив в сервер еще одну сетевую карту и произведя соответствующие изменения в настройках. К тому же безопасность сети при использовании двух межсетевых экранов повышается. Например, если взломщик сумел проникнуть на сервер, подключенный к WAN и DMZ, то ему не будут доступны ресурсы локальной сети.
Архитектура ISA и подготовка к установке Существуют две версии ISA 2004: Standard и Enterprise.
№12, декабрь 2006
Рисунок 1. Варианты развертывания межсетевого экрана и демилитаризованной зоны
Версия Standard подходит в качес- с помощью CARP осуществляется оптве решения для небольших и сред- тимизация кэширования данных. В своей серии статей я ограниних компаний, количество рабочих мест в которых не превышает 100-150. чусь описанием настроек для версии Основной особенностью ISA 2004 Standard Edition. Standard Edition является то, что данС аппаратными требованиями, ная редакция позволяет разворачи- предъявляемыми Microsoft ISA 2004 вать межсетевой экран только на од- к серверу, вы можете ознакомиться ном сервере. Другими словами, если в статье [1]. Там же содержатся реков вашей сети не используются клас- мендации по использованию операцитеры и балансировка нагрузки, то нет онной системы, поэтому я лишь предникакого смысла покупать более доро- лагаю сразу после установки ОС разгую версию Enterprise Edition, так как вернуть все последние обновления в остальном функциональности вер- и проследить за тем, чтобы не было уссий совпадают. тановлено никаких лишних компоненВерсия Enterprise ориентирована тов, так как наличие любого дополнина большие сети, в которых для обес- тельного приложения увеличивает вепечения быстрого и бесперебойно- роятность успешного взлома системы. го доступа в Интернет и предостав- Не стоит забывать, что мы разворачиления других сервисов необходима ваем межсетевой экран, а не какой-то балансировка нагрузки, централизо- внутренний сервер, то есть пограничванное управление и хранение кон- ный узел, который первым будет «профигураций. веряться на прочность» хакерами. Также в Enterprise включена подСледующий элемент архитектудержка протокола CARP (Cache Array ры – таблица маршрутизации, которая Routing Protocol). Этот протокол осу- должна быть настроена до установки ществляет управление поиском кэши- программного обеспечения ISA. Таброванных страниц в массиве ISA се- лица включает маршруты ко всем северов. То есть когда пользователь об- тям, которые не являются локальными ращается к какой-либо веб-странице, для сетевых интерфейсов межсетевоCARP определяет на каком ISA-серве- го экрана. Эти записи в таблице марре массива сохранить эти данные. За- шрутизации необходимы, потому что тем, когда другой пользователь обра- у ISA может быть только один основной щается к этой же странице, CARP об- шлюз. Обычно основной шлюз настроращается к тому серверу, на котором ен на сетевом интерфейсе, использустраница сохранена. Таким образом, емом для внешней сети. Поэтому, ес-
5
администрирование
Рисунок 2. Правило для протокола HTTP
ли имеется внутренняя сеть или другая сеть, содержащая несколько дочерних сетей, например DMZ, нужно настроить записи в таблице маршрутизации так, чтобы ISA мог взаимодействовать с компьютерами и другими устройствами в соответствующих подсетях. То есть для варианта с использованием трех сетевых карт необходимо будет прописать маршруты DMZ – LAN, DMZ – WAN. Маршрут WAN – LAN обязательно определять, так как у нас будет указан шлюз по умолчанию в настройках сетевой карты WAN. Для указания маршрутов можно использовать консоль RRAS (Routing and Remote Access Service, служба маршрутизации и удаленного доступа) или команды ROUTE и netsh в командной строке для добавления записи в таблицу маршрутизации. После настройки маршрутизации необходимо правильно разместить DNS-сервер. Так как в случае неправильной настройки ISA первым ресурсом, на котором это отразится, будет служба DNS. В большинстве организаций, использующих ISA, есть один или несколько внутренних DNS-серверов. Хотя бы один из них должен быть настроен на разрешение имен внутренних хостов и хостов в Интернете, а межсетевой экран ISA должен быть настроен на использование этого DNS-сервера. Если имеется DNS-сервер во внутренней сети, то не следует настраивать интерфейсы межсетевого экрана на использование внешнего DNS-сервера. Это может привести к замедлению трансляции имен или даже к ошибкам. Продумайте заранее и при необ-
6
ходимости уточните у вашего провайдера адреса DNS-серверов. Наконец, последний подготовительный элемент, это настройка сетевых интерфейсов. Тут следуйте нескольким рекомендациям от Microsoft: Шлюз по умолчанию, предоставленный ISP, нужно указывать только на внешнем интерфейсе WAN, на внутреннем LAN его указывать не нужно. На внутреннем интерфейсе LAN необходимо указать адрес внутреннего DNS-сервера, на интерфейсе WAN ничего указывать не нужно. Аналогично и для WINS-сервера. Вопреки рекомендациям Microsoft данную службу очень часто используют для разрешения имен многие программные продукты. Клиент сетей Microsoft на внутреннем интерфейсе должен быть включен, на внешнем – выключен. Эти рекомендации помогут вам избежать часто встречающихся ошибок при настройке межсетевых экранов.
Установка по требованию Возможно несколько режимов установки Microsoft ISA Server 2004: ручная, автоматизированная, ручная с помощью терминального клиента. Для случаев, когда производится установка нескольких серверов, предусмотрена автоматизированная установка. Для этого необходимо внести соответствующие изменения в файл msisaund.ini. Подробно о таком типе установки вы можете прочесть в источнике [2].
Еще одно удобное средство – возможность установки ISA с помощью терминального клиента. После завершения установки правило системной политики настраивается так, чтобы соединения по протоколу RDP (Remote Desktop Protocol, протокол удаленного рабочего стола) были разрешены только с IP-адреса компьютера, который был подключен в процессе установки программного обеспечения ISA. Это отличается от стандартной настройки системной политики при установке программного обеспечения межсетевого экрана с консоли, когда любой хост во внутренней сети может инициировать RDP-соединение с внутренним (LAN) интерфейсом ISA. Для того чтобы начать установку ISA, необходимо запустить файл isaautorun.exe. Затем после подтверждения согласия с лицензионным соглашением и введения регистрационных данных вам предлагается выбрать режим установки, выбираем Custom. Настоятельно не рекомендуется выбирать тип установки Complete, так как в таком случае будут установлены все службы, в том числе и те, которые вам не нужны. Наличие лишних сервисов на шлюзовом сервере снижает общую защищенность сети. Поэтому не ставьте на шлюзовой сервер никаких лишних приложений. На следующем этапе установки ISA необходимо указать Internal Network, внутреннюю сеть, содержащую доверяемые сетевые службы, с которыми должен взаимодействовать межсетевой экран. Примерами таких служб являются контроллеры домена Active Directory, DNS и DHCP-серверы, серверы терминалов и рабочие станции управления. Определите адреса, входящие во внутреннюю сеть по умолчанию. Можно вручную ввести адреса, которые будут входить во внутреннюю сеть, указав первый и последний адрес диапазона адресов внутренней сети в текстовых полях «From» (от) и «То» (кому) и щелкнув кнопку «Add» (добавить). Но лучше настроить внутреннюю сеть по умолчанию, используя вариант «Select Network Adapter» (выбрать сетевой адаптер). Это позволяет программе установки ISA воспользоваться таблицей маршрутизации,
администрирование чтобы определить адреса, использу- Между сетями VPN/VPN-Q и внут- ным портам. Как правило, протоколы, емые для внутренней сети по умолренней сетью установлены отноше- с помощью которых допускается взаичанию. Поэтому важно правильно нания типа «маршрут». модействие с внешней сетью, огранистроить записи таблицы маршрутиза- Между внутренней сетью и внеш- чиваются следующими: SMTP, HTTP, ции, прежде чем устанавливать межсеней сетью по умолчанию задано от- HTTPS, DNS, FTP, ICQ, ICMP, SSH, тевой экран. Щелкните мышью «Select ношение трансляции адресов NAT. Telnet (последние два протокола нужNetwork Adapter» (выбрать сетевой Только администраторы могут ме- ны, как правило, только администраадаптер). В соответствии с оговореннять политику брандмауэра ISA. торам). Для того чтобы создать праными ранее наименованиями сетевых вило доступа, выберите в консоли адТеперь нам необходимо разрешить министрирования ISA раздел «Firewall интерфейсов, выбираем LAN. Указываем необходимый диапазон IP-адре- доступ пользователей локальной сети policy», затем в меню «Action» выбисов. Далее нужно остановить службы к ресурсам Интернет. Многие систем- раем «New → Access Rule». В появивICF (Internet Connection Firewall) и RRAS ные администраторы открывают до- шемся окне указываем наименова(Routing and Remote Access), если они ступ из внутренней сети в Интернет ние правила, далее определяем, какое у вас используются. В противном слу- по всем портам, мотивируя это тем, это правило, запрещающее или разчае при установке ISA вы получите со- что не хотят заниматься «тонкой на- решающее, в нашем случае выбираобщение об ошибке. стройкой», открывая конкретные пор- ем «Allow», в следующем окне необДалее нажимаем «Start», по окон- ты конкретным пользователям. Одна- ходимо указать протоколы, к которым чании установки межсетевого экрана ко это пагубная практика во всех от- будет применяться данное правило. Соответственно выбираем, например ISA необходимо произвести перезаг- ношениях. Во-первых, вредоносное програм- HTTP, затем указываем источники, рузку сервера. После установки ISA, но перед под- мное обеспечение, в частности, «тро- в нашем случае это будет сеть Internal ключением сервера к Интернету необ- янские кони» используют для соедине- (LAN), а в качестве точки назначения ходимо установить на него последний ния с «хозяином» нестандартные пор- External (WAN). Затем укажите пользователей, копакет обновлений. Для ISA Server 2004 ты. Поэтому межсетевой экран может на момент написания статьи это был стать преградой для несанкциониро- торым будет разрешен выход в ИнтерService Pack 2. Проверить наличие ванного проникновения в сеть, в слу- нет, при этом аутентификацию можно последних обновлений вы можете по чае если антивирусы не смогли опре- осуществлять посредствам RADIUSадресу [3]. сервера и локальной базы пользоваделить вредоносный код. Во-вторых, наличие доступа по телей. В результате выполнения всех всем портам позволит пользователям этих действий получаем правило доОткрываем доступ Сразу после установки сервер ISA ра- сети беспрепятственно применять кли- ступа для протокола HTTP. Аналогичботает в режиме запрета всех соеди- ентов различных пиринговых сетей, ным образом создаются правила для нений, и для того чтобы организовать что не слишком благоприятно сказы- всех остальных протоколов, за исклюпользователям локальной сети доступ вается на использовании корпоратив- чением двух последних (SSH и Telnet), к ресурсам Интернета, необходимо от- ного канала доступа в Интернет, а так- которые, как уже упоминалось ракрыть доступ к соответствующим эле- же на производительности труда со- нее, нужны только администраторам. Для того чтобы создать правило доментам межсетевого экрана. Вкрат- трудников. И в-третьих, хорошим тоном явля- ступа только для определенных хосце стандартную конфигурацию можно представить так: ется наличие корпоративной политики тов, необходимо при назначении ис Системные политики разрешают безопасности, построенной по принци- точника указать не подсеть (Network), выборочный трафик с брандмауэ- пу: все, что не разрешено, то запреще- как это делалось в предыдущем прира ISA и на него. но. Закрытие портов является неотъ- мере, а отдельный узел (Computer), которым пользуется администратор. Запрещен весь трафик через бран- емлемой частью такой политики. Итак, будем открывать доступ дмауэр ISA, потому что есть только пользователей только к определен- Публикуем ресурсы одно запрещающее правило. Итак, все необходимые обновления усЧто делать, если в сети активно быстрый и удобный способ. Все обраще- тановлены, межсетевой экран подклюприменяется какое-либо ния к закрытым портам можно отслежи- чен к глобальной сети и теперь нужно критичное для работы вать средствами ISA, для этого нужно от- открыть доступ к ресурсам, находякрыть закладку «Logging», фильтр можно щимся в DMZ или LAN из внешней секлиент-серверное приложение, использующее для соединения использовать стандартный или же настро- ти WAN. В терминологии ISA эта опеить на журналирование пакетов, удовлет- рация называется «публикацией ренестандартные порты? У многих, особенно начинающих, адми- воряющих определенным критериям, на- сурса». Прежде всего определимнистраторов может возникнуть такой воп- пример, по IP-адресу или типу пакетов. ся, что именно нам необходимо пуброс. Конечно, можно попробовать поис- Далее включаем журналирование «Start ликовать. Как правило, в сети оргакать документацию по данному продукту Logging». Получив нужную информацию, низации размещаются почтовый серили же воспользоваться сетевым мони- открываем порты для необходимого ви- вер, сервер FTP, а также ресурсы, дотором (сниффером). Однако есть более да трафика. ступ к которым осуществляется пос-
№12, декабрь 2006
7
администрирование В следующем окне необходимо опредством шифрования SSL (например, веб-ресурсы, для углубленного изучеOutlook Web Access). Несмотря на то ния используйте источники [2, 3]. ределить веб-приемник «Web Listener», что для размещения веб-сайта компато есть сетевой объект, применяемый в правилах публикации веб-серверов. нии сейчас, как правило, используют- Настраиваем публикацию ся ресурсы провайдера, во многих се- веб-ресурсов по протоколу, Веб-приемник ожидает (прослушиватях для доступа к некоторым локаль- отличному от SSL ет) входящие подключения к заданноным ресурсам используется HTTP, по- Для того чтобы произвести публика- му порту в интерфейсе или на выбранэтому мы рассмотрим публикацию веб- цию, нужно в консоли администриро- ном IP-адресе. В случае нашей топосервера в качестве примера. вания выбрать раздел «Firewall Policy,» логии указываем интерфейс WAN. ЗаОбратите внимание на то, что веб- а затем в закладке «Tasks» указать тем в свойствах приемника указываем публикацию иногда называют «ревер- «Publish a Web Server». Затем указыва- порт, который должен прослушиватьсивным представительством» (reverse ем имя правила публикации, на стра- ся, как правило, это порт 80. proxy). Это означает, что, когда публи- нице «Select Rule Action» выбираем В окне «User Sets» определяется, куется веб-ресурс, фильтр прокси меж- «Allow», после этого определяем веб- нужна ли аутентификация для достусетевого экрана ISA всегда перехваты- сайт для публикации. Для этого запол- па к веб-серверу. В нашем случае аувает запрос и затем представляет его няем поля открывшегося окна (рис. 3), тентификация не требуется, то есть выопубликованным с помощью правила здесь вы наверняка обратите внимание бираем «All Users». В результате рабопубликации веб-сервера. Механизм на переключатель «Forward the original ты мастера мы получаем новое правиреверсивного проксирования также host header instead of the actual one ло доступа к веб-ресурсу. широко используется различными ан- (specified above)» (пересылать исходтивирусными системами, которые ин- ный заголовок хоста вместо фактичес- Сохраняем результат тегрируют свои фильтры в ISA Server, кого, заданного ранее). Данное свойс- Все настройки ISA можно сохратаким образом осуществляя проверку тво определяет, пересылать ли на опуб- нить в зашифрованном XML-файле. входящих запросов на наличие вредо- ликованный веб-сервер действитель- Для этого выполните действия: в меносного кода. ный заголовок хоста в запросе, отрав- ню «File» выберите опцию «Tasks», даЕще одно удобное средство публи- ленный внешним клиентом. Это важно, лее «Export», укажите в разделе «ISA каций ресурсов в ISA – предваритель- если на одном веб-сервере содержит- Server export options» использованая аутентификация соединений, ус- ся несколько веб-сайтов и они исполь- ние шифрования «Export confidential information» и «Export user permission танавливаемых с опубликованными зуют разные заголовки хостов. веб-ресурсами. То есть можно зараДалее следует страница «Public settings» для экспортирования прав донее проверить подлинность пользова- Name Details» (параметры общедо- ступа. Затем указываем используемый теля на межсетевом экране. Предвари- ступного имени), на которой опреде- пароль, и зашифрованный документ готельная аутентификация не позволяет ляется, какие домены или IP-адреса тов. Такой способ также очень удобен атакующим и злоумышленникам при- будут применять пользователи для со- в ситуации, когда требуется на другом менять неаутентифицированные со- единения с опубликованным веб-сай- межсетевом экране развернуть полноединения для использования извест- том с помощью правила публикации. стью идентичные настройки, например, ных и неизвестных слабых мест в веб- Здесь не рекомендуется разрешать при организации VPN-соединения межпринимать запросы к любому имени ду несколькими офисами. В таком слусерверах и приложениях. Существует также множество дру- домена «Any Domain Name», так как чае настройки экспортируйте в зашифгих функций и фильтров, которые поз- в таком случае узел становится потен- рованный XML-файл и отправьте адмиволяют опубликовывать различные циально уязвим для различных атак, нистратору другого офиса по электронтак как все обраще- ной почте, где он сможет импортирония на опубликован- вать настройки на свой сервер. ный порт будут передаваться веб-сер- В следующем номере веру, в таком случае Из второй статьи, посвященной ISAмогут быть отправ- серверу, вы узнаете, как подключить лены запросы, содер- удаленные офисы через VPN, а также жащие вредоносный рассмотрим тему публикации веб-рекод. Поэтому реко- сурсов с помощью SSL. мендуется в этом окне определить, к ка- 1. http://www.microsoft.com/technet/isa/ ким доменам разре2004/plan/bestpractices.mspx – требошено принимать завания к аппартной части просы. В поле «Path» 2. Шиндер Т. Шиндер Д. ISA Server 2004. можно указать, к ка- 3. ht tp : / / w w w.mic rosof t .c om / tec hnet / ким каталогам нужdownloads / isa / 20 0 4 /ser vicepacks / но разрешить доступ default.mspx – пакеты обновлений для на данном веб-сайте. ISA Server 2004. Рисунок 3. Публикация веб-ресурса
8
администрирование
Как купить ПО от Microsoft? Особенности приобретения и использования OEM-версий
Дмитрий Бутянов «Зачем это надо?» – с кривой усмешкой ответят многие, когда речь заходит о необходимости использования лицензионного программного обеспечения. Сейчас ведь можно купить практически любой софт «на лотках» совсем дешево! И он почти как настоящий! Чего еще желать сисадмину?
10
администрирование
Н
о вот стоит только поработать можностями трудоустройства, можекакое-то время с таким «лотош- те представить сами. Бытует мнение, что легальное проным» товаром, и начинает сисадмин вздыхать, долгими взглядами граммное обеспечение является набуравя потолок и проклиная на все ла- столько дорогим, что у компаний просды тех, кто ему этот самый диск под- то нет выбора – они разорятся на посунул. Вроде и делаешь всё правиль- купке. Как правило, такое мнение разно, и люди умные на форумах советы деляют люди, не знающие его стоимосдельные дают, но ведь живет систе- ти. Не верите – спросите у них. Полума по своим, непонятным людям за- чите ответ «Очень дорого». Но ничего конам. И номера откалывает такие, конкретного. Купить лицензионное програмчто даже бывалые, не один гигабайт съевшие специалисты разводят рука- мное обеспечение сейчас по силам ми и ничего, кроме переустановки, ре- почти любой компании, даже неболькомендовать не могут. Так, может, де- шой. Кстати, можно ведь не покупать, ло не в вас, а в том софте, который вы а брать в аренду (мало кто об этом почти даром заполучили и на котором знает). Стало интересно? Читайте дальше. отныне ваша фирма работает? Бытует мнение, что приобретение Не секрет, что пираты при изготовлении своей… хм… продукции вно- лицензионного софта мало отличаетсят в дистрибутив подчас значитель- ся от покупки, например, чайника – отные изменения, выбрасывая из него, дал деньги, получил товар, пользуйся, как минимум, библиотеки драйверов как хочешь. На самом деле это не сови прочие малозначащие для них ве- сем так. Купив то или иное програмщи. Какие мучения потом будет ис- мное обеспечение, вы покупаете прапытывать админ, их мало волнует. во его использования. Иными словаЭто на их прибыли не скажется. Вдо- ми – производитель разрешает вам бавок система обрастает «Резетами» использовать свой продукт, но на свои прочим малоаппетитным софтом, их условиях. Эти условия оговаривазаставляющим этого убогого калеку ются в Лицензионном соглашении, хоть как-то работать. В итоге получа- и обязательны для соблюдения. Обяем массу проблем, за решением кото- зательны! Несоблюдение этих треборых и проводим большую часть свое- ваний и является пиратством. Так что го времени, вместо того чтобы делом учтите – пиратом можно стать и по незаниматься. знанию. В чьих руках побывала система до того, как попасть на лоток пира- Каковы особенности та, зачастую не знают и сами пираты. приобретения Что эти неизвестные бойцы пиратского и использования? фронта с этой системой сделали, и по- Приобрести программное обеспечечему теперь на одном DVD помещается ние Microsoft можно разными способапара сотен программ, тоже объяснить ми. Во всех случаях оно сопровождане могут. Насколько вся эта конструк- ется лицензионным соглашением, лиция жизнеспособна, может показать бо в электронной форме, либо в печатжизнь, иными словами – они продают ном виде. Обратите внимание, что усвам за ваши же деньги ваши же про- ловия использования программного обеспечения зависят не только от саблемы. Вам это нужно? И некорректно работающим соф- мого продукта, но также от способа, котом дело не ограничится. Законода- торым оно приобретено. То есть один тельство Российской Федерации в об- и тот же продукт, приобретенный разласти охраны авторских прав (борьбы ными способами, можно будет испольс пиратством) за несколько лет претер- зовать по-разному. Перечислю виды лицензий и спопело значительные изменения, и сейчас строится на базе международных собы их приобретения: стандартов в этой сфере. При опре- Лицензия FPP (Full Packaged деленных условиях, пиратский софт Product – коробочная). Коробочные в офисе компании может стать и угопродукты предназначены для индиловным преступлением. А что это мовидуальных клиентов и домашних офисов. В ряде случаев коробочжет сделать с вашей анкетой и воз-
№12, декабрь 2006
ную версию можно покупать для установки в офисах компаний, но мой вам совет – сначала проконсультируйтесь с реселлером. Лицензия OEM – предназначена для поставщиков вычислительной техники. Лицензии, поставляемые по программам корпоративного лицензирования – предназначены для организаций любого размера. В стоимость лицензий уже включены скидки за объем заказа. Существуют специальные программы лицензирования продуктов для компаний ASP – Application Ser vice Providers, предоставляю щих услуги доступа к приложениям Microsoft третьим лицам. Например: хостинг баз данных SQL Server, хостинг почтовых серверов Exchange Server. SPLA – Service Provider License Agreement. В некоторых случаях можно загрузить продукт через Интернет. Остановимся на трех самых популярных вариантах: коробки, OEM-лицензии, программы корпоративного лицензирования.
Коробка – красиво, но дороговато Самым простым (и дорогим) способом приобретения программного продукта является покупка коробки (FPP). Покупая коробочную версию, вы получаете в комплекте: Лицензионное соглашение (часто только в электронном виде), оригинальный носитель с элементами защиты от подделки, Руководство пользователя (часто только в электронном виде), упаковку с Сертификатом подлинности (COA). Для подтверждения подлинности приобретенного программного обеспечения вы должны хранить весь комплект поставки полностью плюс документы, подтверждающие покупку. Купить софт в виде коробочной версии можно далеко не весь, некоторые продукты таким образом не распространяются. Как правило, это продукты, ориентированные на корпоративного пользователя, например, Microsoft Office Pro Enterprise Edition купить в коробке нельзя. Право использования коробочного продукта является бессрочным, т.е. вы може-
11
администрирование Как легализовать операционную систему? Предположим, решение переходить на лицензионное программное обеспечение принято. Но тут нас ждет еще один подводный камень. Ведь софт-то уже стоит, работает! Пиратский, краденый, какой-никакой, а требующий перестановки и всего, что из этого будет следовать. Иными словами, временного паралича компании и на пятнадцать лет постаревшего сисадмина. Какие тут есть варианты? Если речь идет о Windows XP Professional, то для легализации операционной системы на таких компьютерах можно приобрести специальную версию операционной системы под названием «Get Genuine Kit для Windows XP Professional». В состав Get Genuine Kit входят те же компоненты – сертификат подлинности (COA), дистрибутив с продуктом, лицензионное соглашение с конечным пользователем (EULA). Как и обычные OEM-версии, эта операционная система привязана к ПК, на который впервые была установлена, и не мо-
те им пользоваться всю свою жизнь. Кроме того, такой продукт чаще всего может быть установлен на двух ПК (право установки на переносной компьютер). Более подробно о правилах использования коробочной версии продукта вы сможете прочитать в документации, которая прилагается к поставке. Я же хочу подробнее остановиться на способах покупки, которыми чаще всего пользуются корпоративные заказчики.
OEM – просто и сердито По сравнению с коробкой, приобрести OEM-версию программного продукта вы можете гораздо дешевле. В виде OEM-версий распространяются не все продукты – только Windows XP Home & Pro, Office 2003, Windows Server, Small Business Server. Формально OEM-версии продукта предназначены для поставщиков (сборщиков) компьютерной техники и должны распространяться только вместе с их продукцией. Иными словами, OEM-версии продуктов не предназначены для распространения конечным пользователям отдельно от компьютерной техники. Срок действия лицензии в OEM-поставке равен сроку использования компьютера. Обратите вни-
12
жет быть перенесена на другой ПК. Основные отличия Get Genuine Kit от обычных OEM-лицензий Windows XP Professional описаны ниже: G et G enuine K it д л я Windows XP Professional предназначена для компьютеров с установленной ранее пиратской, поддельной или нелицензионной операционной системой и не может поставляться в комплекте с новыми компьютерами. Техническая поддержка Get Genuine Kit для Windows XP Professional предоставляется Microsoft. Полная установка операционной системы (установка на чистый диск) не является обязательной – возможна переустановка с сохранением данных или обновление ключа продукта. Если говорить о других программных продуктах, то такого набора по ним нет. Кроме того, некоего трейд-ина тоже нет, и стоимость старого легального софта вам не будет засчитана.
мание: отсутствуют версии обновления, нет специальных академических цен для учебных заведений. Что такое версия обновления? Это диск типа «Windows XP Pro Upgrade», предназначенный не для установки на пустой компьютер, а для обновления другой операционной системы, например, Windows XP Home Edition, до уровня Windows XP Pro. ОЕМ-версия в исходной поставке выглядит как картонная коробка, без красивой полиграфии. На коробке обязательно наклеено Лицензионное соглашение Сборщика систем. Количество дисков внутри коробки (а значит, и количество приобретенных продуктов) может быть один, три или тридцать. Причем серверное программное обеспечение всегда идет в упаковках по одной штуке, а тридцать штук дисков может быть только для Windows XP. Каждый экземпляр продукта из коробки состоит из носителя с голограммой, сертификата подлинности COA, Лицензионного соглашения конечного пользователя (в электронном виде), печатного руководства пользователя (редко). Подтверждение лицензионности продукта состоит из всего комплекта плюс документов на покупку.
Как OEM-версия может попасть в вашу компанию? Во-первых, вы можете приобрести компьютер с уже предустановленной версией. Во-вторых, вы можете купить OEM-версию как таковую, отдельно от компьютера. Сначала о первом способе. Если вы покупаете компьютер с уже установленной OEM-версией, то посмотрите на абзац выше! Подтвердить подлинность этой версии вы сможете, только имея на руках весь комплект: диск с голограммой («родной»), наклейка СОА, документация, если была, – это всё должно быть у вас вместе с новыми компьютерами. Требуйте этого у поставщиков обязательно. Исключение из правила одно. Оно касается крупных производителей компьютеров, так называемых Direct OEM. Это компании, которые подписали прямой договор с Microsoft, и имеющие документальное подтверждение своего статуса Direct OEM. Для крупных производителей компьютеров (Direct OEM) существует три возможности: Процедуры восстановления с блокировкой BIOS позволяют крупным изготовителям компьютеров создавать компакт-диски с операционной системой и драйверами устройств для восстановления заводских установок. Компакт-диск маркирован производителем ПК, он привязывается к конкретному компьютеру, что препятствует нарушению авторских прав. Крупные производители компьютеров мог у т так же размещать средства восстановления системы на жестком диске – обычно в отдельном разделе жесткого диска. Иногда крупные производители компьютеров не поставляют каких-либо носителей со средствами восстановления системы. Тем не менее они обязаны в случае необходимости предоставлять средства восстановления программного обеспечения по запросам заказчиков. Кроме компакт-диска, поставщики вычислительной техники могут также размещать на жестком диске дополнительную копию Windows, сконфигурированную по требованиям конкретного заказчика.
администрирование COA – это элемент защиты от подделки, который помогает конечным пользователям отличать легальные копии от нелегальных. Это наклейка, которая должна быть наклеена на корпус компьютера на видном месте. Она не может распространяться отдельно от всего остального комплекта и сама по себе еще не является гарантией того, что копия является легальной. Наклейка COA имеет элемент защиты в виде двух отверстий, одно из которых имеет форму эллипса, а другое – форму логотипа «летящих окон» Windows. Внешний слой ламината в пределах этих отверстий отсутствует, таким образом становятся видны отдельные волокна бумажной структуры. Металлизированная нить, внедренная в структуру наклейки, имеет цветовые переходы, которые становятся видны под углом. Наклейка COA содержит микротекст – элемент защиты в виде текста, который становится читаемым только под увеличительным стеклом. Новая наклейка COA не имеет ламинированного покрытия. Если сертификат подлинности отсутствует, то вы не имеете законной лицензии на использование программного обеспечения Microsoft. Сертификат подлинности не является лицензией на программное обеспечение – это наглядное средство, помогающее установить подлинность используемого программного обеспечения Microsoft. Существуют сертификаты подлинности для прикладных программ (например, Microsoft Office). Они прикреплены к документации конечного пользователя и не являются наклейками. Они должны передаваться вам вместе с документацией. Прикреплять такой сертификат к компьютеру не требуется.
А можно и так! Теперь о втором варианте приобретения OEM-версий, а именно, о их покупке отдельно от компьютеров. Наверняка вы, если внимательно читаете эту статью, удивитесь. Действительно, я уже писал о том, что эти
№12, декабрь 2006
Так выглядит коробка с OEM-версией
версии не предназначены для конечных потребителей. Но в условиях распространения OEM есть одна замечательная фраза: «за исключением тех случаев, когда конечный потребитель сам выступает в роли сборщика систем». Тут же я скажу о том, что само понятие «Сборщик систем» у Microsoft очень растяжимое – под него попадают не только те, кто занимается непосредственно сборкой компьютерной техники, но и лица (юридические или физические), занимающиеся установкой программного обеспечения на уже приобретенные ранее компьютеры. Таким образом, вы
можете совершенно спокойно приобрести ОЕМ-версию продукта отдельно от компьютера (он у вас уже есть), и выполнить установку. Одно важное замечание: в этом случае вы будете считаться не конечным пользователем, а сборщиком систем. Соответственно, вы попадаете под требования Лицензионного соглашения сборщика систем, которое наклеено на коробке. Это соглашение вступает в силу в момент вскрытия коробки. Лицензия Microsoft для сборщика систем (OEM System Builder License) относится к типу «Break-theseal agreement», которые вступают
13
администрирование Как не стать пиратом, используя OEM-версии продуктов? Или, другими словами, какими обязанностями и правами вы обладаете? Наиболее частым нарушением использования OEM-версии является превышение допустимого числа установок. Запомните – одну OEM-версию можно установить только на один компьютер. После установки она становится неотделимой частью самого компьютера. Срок жизни OEM-версии равен сроку жизни самого компьютера. Переносить эту ОЕМ-версию на другой компьютер нельзя. Операционная система не может быть перене-
сена на новый или другой ПК. Весь компьютер, однако, может быть передан новому пользователю вместе с лицензионными правами на установленное на нем программное обеспечение, т.е. при условии, что новому пользователю будут переданы все составляющие OEM-лицензии: носитель с голограммой, сертификат подлинности, документация. Рекомендуется также передать оригиналы платежных документов – счета или квитанции, подтверждающие покупку OEM первоначальным пользователем. При этом первоначальный пользователь не должен оставлять у себя каких-либо копий программного продукта.
в действие при вскрытии упаковки – им убедиться в том, что они получивы вскрываете упаковку и тем са- ли именно то, за что заплатили: подмым принимаете на себя условия ли- линный и лицензированный програмцензионного соглашения. Это про- мный продукт высокого качества. Техстая процедура, лишенная бюрокра- нология активации продуктов преднатизации. Вам не требуется подписы- значена прежде всего для того, чтобы вать каких-либо дополнительных до- противодействовать такому виду накументов, чтобы иметь право на рас- рушений, как копирование ПО конечпространение OEM-версий в качес- ными пользователями – когда с однотве сборщика систем (такой способ го подлинного информационного нопринятия соглашения призван обес- сителя пользователи устанавливают печить максимально широкий канал программный продукт на большее копродаж, т.к. заменяет собой подпи- личество компьютеров, чем это разресание документов). И отсюда следу- шают условия лицензионного соглашеет два важных замечания – вы долж- ния. По оценкам экспертов, около поны купить невскрытую коробку; кроме ловины ущерба, наносимого компьютого, вскрытую коробку вы уже не смо- терным пиратством экономике разжете вернуть. Кроме того, програм- личных стран мира, приходится именмные продукты, которые вы доста- но на этот вид нарушений. Тех н ол о г и я M i c ro s of t Pro d u c t нете из открытой OEM-упаковки, вы обязаны будете установить на ком- Activation призвана исключить возможпьютеры конечных пользователей – ность использования копий продуктов дальнейшее распространение соф- в случае отсутствия у пользователя лита из этой коробки какими-то други- цензионного соглашения с правооблами способами, кроме как в предуста- дателем на право использования данновленном виде, запрещено (исклю- ного программного продукта. В случае если лицензионное сочение: серверное программное обеспечение). глашение разрешает установить и использовать программный продукт только на одном персональном комВыполняем процедуру активации пьютере, установка этого же продукта Все OEM-версии продукта требуют вы- на другие персональные компьютеры полнения процедуры активации. На- приводит к нарушению условий лиценчиная с Microsoft Office XP и Microsoft зионного соглашения, а также к наруWindows XP в состав ряда програм- шению законодательства РФ о защите мных продуктов Microsoft включает- авторских прав. Технология активации ся специальная технология – Microsoft позволяет технически ограничить чисProduct Activation. Эта технология пред- ло используемых рабочих копий проназначена для защиты от компью- дукта и исключить установку одной терного пиратства – как корпорации лицензионной копии на неограниченMicrosoft, так и ее клиентов, помогая ное число персональных компьютеров.
14
При этом число установок и активаций на одном и том же персональном компьютере не ограничивается. Процесс активации начинается после того как программный продукт установлен на компьютер пользователя. Для того чтобы установить и затем активизировать программный продукт на конкретном ПК, пользователь должен иметь: диск с дистрибутивом программного продукта; ключ продукта. Ключ продукта представляет собой 25-символьный номер, разбитый на группы по 5 символов и имеющий следующий формат: ХХХХХ-ХХХХХХХХХХ-ХХХХХ-ХХХХХ, где Х – одна из цифр от 0 до 9 или одна из букв латинского алфавита от A до Z. Ключ продукта необходим для выполнения установки программного продукта на компьютер пользователя; выполнения активации установленного программного продукта на конкретном ПК. Без введения ключа установка продукта на компьютер невозможна. Существуют следующие два типа ключей: ключ для однократной установки и активации (тип А) – используется для установки коробочного продукта на один ПК (если в лицензионном соглашении для конкретного продукта и вида поставки не оговорено иное). Ключи этого типа предназначены для установки и активации продукта, лицензия на который допускает его использование только одним пользователем (коробочный продукт или OEM-версия продукта). Ключ для многократной установки и активации (тип B) используется для установки продукта, приобретенного в рамках программы корпоративного лицензирования. Ключи этого типа предназначены для покупателей лицензий по различным программам корпоративного лицензирования и могут быть использованы для многократной установки продукта (в зависимости от емкости ключа). При использовании этих ключей не нужно выполнять процедуру активации с каждого компьютера. Ключ продукта, который необходим для установки ОЕМ-версии продукта, указывается на наклейке Сертификата подлинности.
администрирование Сам процесс активации предельно прост. При запуске неактивирован- Сохранится ли лицензия ного продукта на экране появляется на OEM-версию, если необходимо окно мастера активации. Сама акти- провести апгрейд или ремонт вация может быть выполнена или че- существующих компьютеров? рез Интернет, или по телефону. Если Лицензия привязывается к компьютеру, вы в мастере выбираете активацию а мы его апгрейдить начинаем, т.е. менячерез Интернет, то после ввода клю- ем исходные железки! В Microsoft постуча всё проходит автоматически. Если пили просто: выделен один компонент, ковы выбираете активацию по телефо- торый однозначно определяет тот самый ну, то вам необходимо будет выбрать исходный компьютер. Думаю, что вы уже страну, после чего вы увидите номер догадались, какой. Правильно – материнтелефона. Звоните по этому номеру, ская плата. Общее правило таково, что вы вам отвечает робот. Переводите теле- можете обновлять и заменять практически фон в тоновый режим, далее следуе- все, кроме материнской платы, при этом соте указаниям робота. Довольно быс- храняя исходную лицензию Windows. Если тро. Если вам надо выполнить большое количество установок OEM-вер- жете купить такую замечательную сий, то вы можете провести процеду- вещь, как Software Assurance. Купить можно сроком на два или три года, ру автоматической активации. Указания по этой процедуре можно с возможностью дальнейшего пронайти здесь: http://www.microsoft.com/ дления хоть до бесконечности. В теtechnet/prodtechnol/winxppro/deploy/ чение этого срока вы будете бесплатно получать все новые версии того wpadepl.mspx. При проведении апгрейда систе- OEM-продукта, к которому вы оформа может попросить вас заново ее мили Software Assurance. Если вы сейчас купите 2003-верактивировать, это бывает тогда, когда компьютер подвергается обновле- сии серверов, офисов и т. п., и купинию, при котором меняется большое те к ним Software Assurance, то вы уже количество аппаратных компонентов очень скоро, зимой, получите Vista, (как правило, более трех). Но посколь- Office 2007 … так сказать, несколько ку при этом замена материнской платы дешевле, чем они стоят. Стоимость не производилась, продукт позволит Software Assurance составляет от 25% себя активировать. Другое дело, если до 29% от стоимости лицензии продукта в год – сами можете подсчитать была заменена материнская плата. Напомню, что согласно Условиям экономию. Помимо прямой прибыли эта происпользования, сохранение лицензии возможно только в том случае, грамма даст вам вагон бонусов, что если эта замена была связана с устранением дефекта самой материнской платы. Через Интернет активировать продукт не удастся, придется звонить и объяснять оператору ситуацию. Далее – как получится: или сразу сбросят счетчик активаций, или (что чаще) могут попросить вас выслать по почте или факсу документ, подтверждающий факт ремонта.
вы обновляете или заменяете материнскую плату и при этом замена не связана с устранением обнаруженного дефекта, то такой компьютер требует новой лицензии на операционную систему, поскольку, заменив материнскую плату, вы фактически создали «новый» компьютер. Если вы заменяете дефектную материнскую плату, то новая лицензия на операционную систему не требуется. Если вы передаете модернизированный компьютер новому пользователю – лицензия на ПО, носитель, сертификат подлинности COA и руководства пользователя должны быть переданы все вместе новому пользователю.
перечислять их в рамках этой статьи очень даже сложно. Отправлю-ка я вас на сайт http://www.microsoft.com/ rus/licensing/volume/softwareassurance/ advantagesoverview.mspx, а если интересно будет, то напишу про Software Assurance отдельно в следующей статье. Последний абзац – и ни слова о цене! Вы абсолютно правы, никакой информации о ценах в этой статье не будет. Немного терпения – в следующий раз я проведу сравнительный анализ стоимости легального программного обеспечения для организации малого и среднего размера. Сколько будет стоить приобретение лицензионного программного обеспечения в виде OEM, а также по различным программам корпоративного лицензирования. Так что не прощаюсь!
Software Assurance поможет сэкономить И еще одна вещь, о которой важно знать. После покупки OEM-версий серверных продуктов и Windows Professional, а также OEM-версий Office Small Business 2003 или Office Professional 2003, в течение 90 дней после приобретения продукта вы мо-
№12, декабрь 2006
Хранить вечно!
15
администрирование
Подробное руководство по настройке тонких клиентов На основе дистрибутива Thinstation и протокола NX
Евгений Бушков Технология NX, разработанная фирмой Nomachine, дает новые возможности для связи и способна оживить старые компьютеры в роли тонких клиентов.
П
режде чем перейти непосредственно к описанию NX, перечислю некоторые тенденции, которые сегодня становятся очевидными для многих крупных компаний нашей страны: 1. Компьютерная техника дешевеет и становится более доступной, чем раньше. При этом её производительность удваивается каждые 1,5-2 года согласно закону Мура. Это приводит к накоплению техники, не выработавшей свой ресурс, но уже устаревшей. 2. Разработанные на предприятиях силами программистов отделов АСУ в перестроечные годы клиентсерверные приложения еще работают на старой технике, но уже не соответствуют требованиям времени. 3. Современные программное обеспечение и операционные системы не заставить работать на компьютерах с процессорами прежних поколений (i386, i486 и т. д.).
16
4. Не секрет, что во многих организациях нашей страны с давних времен незаконно используются многие программы и ОС, которые сотрудники устанавливали по своей инициативе. Вначале это рассматривалось как само собой разумеющееся обстоятельство, потом оправдывалось финансовым положением. Сейчас, когда наша страна вступает в ВТО, правительство вынуждено такую ситуацию спешно исправлять, в связи с этим усилилось давление на предприятия со стороны внутренних органов с требованием отказаться от незаконно используемых ПО и ОС. Очевидно противоречие между вторым и третьим пунктами: необходимо или найти способ, позволяющий эффективно задействовать старую технику для выполнения современных задач, или отказаться от этой техники. Если имеется достаточно средств, то выбор понятен. Но что делать, если
средств нет или нет возможности списать такую технику, да и просто выкидывать жалко? И как решать не менее острую проблему «лицензионной чистоты» используемых программ, о которой говорится в четвертом пункте? На помощь приходят терминальные технологии, которые позволяют задействовать старые компьютеры, а также частично снять вопросы «лицензионной чистоты», если применять решения на базе продуктов Open Source. В журнале уже публиковалось несколько статей по работе с дистрибутивом Thinstation [1, 2]. В этой статье я расскажу об особенностях настройки и опыте эксплуатации на своем предприятии тонких клиентов на базе дистрибутива Thinstation и технологии NX, разработанной фирмой Nomachine. До недавнего времени в мире терминальной связи было мало известно удачных сетевых протоколов высокого уровня, способных эффективно сжимать и шифровать трафик между тонким клиентом и сервером. Наиболее из-
администрирование cp -f ru.xkm ~/thinstation ↵ вестные и популярные из них – это RDP статьях. Коротко перечислю действия /packages/keymaps-ru ↵ от Microsoft и ICA от Citrix. Оба прото- по настройке клиента: редактируем /x-common/lib/kmaps/xkb кола используются серверами на ба- ~/thinstation/build.conf и создаем образ, После сборки образа получаем зе ОС MS Windows. Меня же интересо- запустив скрипт ~/thinstation/build. Говала возможность использовать тон- товый файл образа ~/thinstation/boot- нормальное переключение раскладок кие клиенты с серверами на базе Linux. images/etherboot/thinstation.nbi копируем по <CTRL+SHIFT>. Вот только работаВ качестве основы для тонкого клиен- на TFTFP-сервер. Добавляем в файл на- ет VNC-клиент недопустимо медленно. та почти сразу был выбран небольшой стройки dhcp.conf DHCP-сервера запись На компьютерах с процессором ниже дистрибутив, этакий Linux-конструк- о MAC-адресе сетевой платы тонкого P-200 начинается этакое «слайд-шоу», тор, Thinstation – как наиболее стабиль- клиента. В каталоге TFTP-сервера со- когда любое действие на удаленном но развивающийся и популярный в на- здаем файл с настройками для данного рабочем столе сопровождается нетошей стране и за рубежом. А вот с вы- MAC-адреса и(или) редактируем файл ропливой прорисовкой этих изменений бором протокола, который бы отвечал thinstation.conf.network. Настройки мо- на экране монитора тонкого клиента. за общение с сервером, пришлось по- ей рабочей системы можно посмотреть Существует множество VNC-решений, возиться и поэкспериментировать. Пе- в листинге раздела «Настройка и созда- использующих схожие методы кодироречислю основные критерии, по кото- ние образа Thinstation» и на рис. 1. вания данных при передаче, все испольрым выбирался протокол. Во-первых, Для того чтобы добавить в образ зуют протокол Remote FrameBuffer (RFB). нам хотелось использовать как можно пакет VNC-клиента, раскомментиру- Различаются они количеством функций, более широкий диапазон старых ком- ем строчку «#package vncviewer» в кон- параметрами кодирования данных, пьютеров, имеющих процессоры начи- фигурационном файле ~/thinstation/ а также числом поддерживаемых платная с i486, с минимальным объемом па- build.conf. Если каталог tftp-серве- форм. Например, RealVNC [4] поддемяти, такой техники у нас предостаточ- ра находится в /tftpboot (как это у ме- рживает сервер и клиент для Windows, но. Во-вторых, отметались коммерчес- ня), то отредактируйте файл /tftpboot/ UNIX, Microsoft PocketPC и Mac OS X, кие продукты: мы не хотели нести до- thinstation.conf.network таким образом, TightVNC [5] включает сервер и клиент для Windows и UNIX, VNC for DOS [6] – полнительные расходы. В-третьих, не- чтобы в нем появились строчки: клиент для DOS, UltraVNC [7] – сервер обходимы хорошая поддержка русскоSESSION_0_TYPE=vncviewer и клиент для Windows, OSXvnc [8] – серго языка и кириллицы, а также наличие SESSION_0_TITLE="VNC" привычного для пользователей спосовер и клиент для Mac OS X. Я протестиSESSION_0_VNCVIEWER_SERVER= ↵ 10.10.10.10:5901 ба переключения между раскладками – ровал RealVNC и TightVNC: второй прокомбинации клавиш <CTRL+SHIFT>. дукт (и сервер, и клиент) субъективно В-четвертых, в рамках локальной сети IP-адрес 10.10.10.10 замените на адрес немного быстрее, но оба создают эфнам необязательна поддержка шифра- вашего VNC-сервера. фект «слайд-шоу» на слабых компьюТеперь проверим собранный с но- терах. Придется попробовать что-ниции, но важны сжатие и минимизация сетевого трафика. вым параметром образ в работе: вклю- будь другое в качестве протокола свячаем тонкого клиента, дожидаемся за- зи между клиентом и сервером. VNC грузки и запуска образа Thinstation, пока оставим в покое, позже придется Поиск решения В первую очередь я обратил внимание подключаемся к VNC-серверу. Обра- к нему еще вернуться. Вот здесь я обна VNC как наиболее распространен- тите внимание на то, что переключе- ратился к NX. Поддержка Nomachine NX-клиента ный и имеющийся в любом дистрибу- ние раскладок происходит с помощью тиве Linux, а также являющийся лег- клавиши «правый Alt». Собственно, ви- впервые появилась в Thinstation верким в настройке продуктом. Когда не- новат здесь не VNC-клиент, а файл сии 2.1 в 2005 году, а последней на теобходимо подключиться к удаленно- Thinstation из пакета поддержки кирил- кущий момент является 2.2, она и буму рабочему столу Linux-сервера с ра- лицы keymaps-ru. Чтобы долго не во- дет подразумеваться далее. Для сборбочей станции Windows или того же зиться с поисками решения пробле- ки образа с пакетом NX раньше был Linux, то первое, что приходит в голо- мы, я сгенерировал xkb-файл в на- необходим прямой доступ в Интернет, ву, это VNC. Скачайте последнюю вер- строенной системе SUSE-10.0 следу- в последних версиях Thinstation поясию дистрибутива Thinstation [3], за- ющим образом: вилась возможность указывать путь к файлу префиксом «file://». Испольтем распакуйте полученный архивный xkbcomp :0 ru.xkb файл в домашнем каталоге. Будем счизуемый и поддерживаемый дистрибуxkbcomp -xkm ru.xkb ru.xkm тать, что путь к дистрибутиву выглятивом Nomachine NX клиент до сих пор дит так: ~/thinstation. Файл, отвечаюУтилита xkbcomp конвертирует опи- имеет версию 1.5.x, хотя уже прошло щий за параметры сборки, находится сание XKB-раскладки в один из фор- достаточно времени с момента появздесь: ~/thinstation/build.conf. Он име- матов. В первой команде генерируется ления новой версии NX 2.0. В файле ет подробные комментарии. О его на- дамп текущей раскладки из источника, конфигурации build.conf раскомментистройке, а также о том, как заставить в качестве которого выступает X-дисп- руем строку «package nx», также в конобраз Thinstation загружаться при по- лей «:0». Вторая команда компилирует це файла найдем строку «param nxurl»: мощи сетевой карты с бутовой микро- полученный файл в понятный для сис- укажем путь к заранее скачанному схемой, я подробно рассказывать не бу- темы двоичный вид. Заменяем исход- файлу, либо оставим как есть(нужен доступ в Интернет). Полученный сгеду, об этом уже писалось в указанных ный файл своим:
№12, декабрь 2006
17
администрирование
Рисунок 1. Взаимосвязь компонентов NX
нерированный образ копируем в ка- шел. Теперь пришло время познакоталог tftp-сервера, туда же копируем миться с технологией NX поближе. файл thinstation.conf.sample из корня дистрибутива, переименовываем его Обзор и краткое описание в thinstation.conf.network и правим: ищем Nomachine NX на предмет #SESSION_0_TYPE=NX Архитектура NX – это набор Open и редактируем строчки, относящие- Source-технологий и коммерческих ся к этой сессии (здесь с номером 0), средств, призванных обеспечить легвнося нужные параметры. кость и распределенность сетевых выВключаем тонкого клиента и за- числений. Он состоит из серверного гружаем созданным образом, прове- ПО, позволяющего любому UNIX-комряем быстродействие. Прогресс нали- пьютеру стать терминальным сервецо: «слайд-шоу» прекращается на ПК ром, и клиентов для широкого набос процессором P-100, P-120 и выше. ра платформ и ОС. Nomachine выбраЭто не то, чего бы нам хотелось полу- ла в качестве основы для архитектуры чить в результате, так что ПК с процес- NX известную и широко используемую сорами i486 задействовать здесь не систему X-Window, на которой основаудастся. Такие ПК мы назвали «супер- ны GUI Linux и других ОС UNIX. Большинство имеющихся сетевых тонкими» клиентами и определили их для работы с ДОС-программами, ис- решений не было разработано в капользуя связку FreeDOS и sshdos со честве основного средства для достустороны клиента и Dosemu со сторо- па пользователей к рабочему столу. Таны Linux-сервера. В этой статье я о них кие протоколы как RDP и VNC являютрассказывать не буду. Тем не менее это ся много более простыми, чем X (и похороший результат, посмотрим на тре- этому хорошо подходящими для тонких бования к железу со стороны разработ- клиентов), но их простота не компенсичиков Thinstation и NX-клиента: первые рует недостатка эффективности и фунрекомендуют i486-процессор и 16 Мб кциональности. Например, эти протокопамяти, вторые – процессор с часто- лы используют для прорисовки удалентой от 400 Мгц и памятью 128 Мб. Ми- ного экрана передачу больших объемов нимально необходимой конфигураци- данных изображений. Хотя RDP и явей для работы тонкого клиента с паке- ляется более эффективным протокотом NX эмпирически определим про- лом, чем RFB (протокол, используемый цессор P-120 и объем оперативной па- VNC), он был изначально разработан не мяти 32 Мб. Я протестировал и некото- для ежедневного использования устрые другие клиенты, в частности, XRDP, ройствами сети, а лишь в качестве расVNC for DOS, но по той или иной причи- ширения для ОС. X-Window – это графине реальной альтернативы NX я не на- ческая подсистема (а не расширение
18
ОС), и X-приложения взаимодействуют с ней, используя X-протокол, поэтому ОС не имеет специального уровня, отвечающего за трансляцию обновлений экрана в сетевой протокол. Основными недостатками сетей с X-терминалами являются избыточность и задержки в передаче графических данных X-протокола. Со времени появления X-Window рабочий стол пользователя оброс всевозможными графическими элементами и эффектами, которые увеличили требования к сетям передачи данных. На рис. 1 под цифрой 1 показана традиционная работа по протоколу X: сжатия нет, требования к пропускной способности и задержкам сети критичны. Напомню, что в идеологии X-Window X-сервер работает на терминале, а на терминальном сервере – X-клиент, который шлет запросы X-серверу терминала [9]. В простейшем случае можно запускать приложения с графическим выводом с помощью параметра -X команды ssh, например, «ssh -X me@server firefox». Можно добавить параметр -С для компрессии(используется библиотека ZLIB). Также можно оптимизировать скорость взаимодействия узлов, увеличивая пропускную способность сети. Но существует предел, выше которого увеличение пропускной способности перестанет влиять на скорость этого взаимодействия. Причиной тому – интенсивный обмен запросами/ответами современных X-приложений. NX использует три основных метода ускорения работы приложений: сжатие, кэширование и подавление избыточного трафика X-протокола. В основе идеи разностной компрессии лежит проект Differential X Protocol Compressor (DXPC) [10], созданный в 1995 году, там уже упоминаются термины клиентского и серверного прокси. Nomachine подхватила идею и разработала свой собственный продукт. Заявляется о 10-кратном превосходстве NX над стандартной библиотекой ZLIB. Nomachine также разработала умный механизм кэширования X-трафика, который использует знакомый по прокси-серверам термин «попаданий в кэш». Этот механизм сокращает сетевой трафик при передаче одних и тех же блоков дан-
администрирование ных, а при изменении этих блоков данных потока вычисляет и передает только их разницу. До NX не было надежного способа подавления избыточного трафика X-протокола на дальних линиях связи. NX может это делать, транслируя X-трафик на удаленном конце(от приложения к nxagent) в трафик протокола NX. Все три метода совокупно позволяют достичь 70-кратного улучшения работы с удаленным X GUI при использовании наибольшего уровня сжатия на линиях связи с низкой пропускной способностью и большой задержкой (в настройках клиента NX «modem» соответствует максимальному сжатию, а «lan» – отсутствию сжатия). На рис. 1 под цифрой 2 показана взаимосвязь Рисунок 2. NX-сессия KDE в режиме рабочего стола из Windows XP компонентов NX: на модулях NX Proxy осуществляется компрессия/деком- NX Desktop – RDP-клиент, который читься и работать удаленно на своем транслирует RDP-трафик в NX-про- Linux-сервере. прессия и кэширование, между ними токол. проходит трафик по NX-протоколу, треСборка и запуск NX бования к качеству линий связи миниNomachine открыла исходные ко- В свою очередь, на основе открытых мальны, заявляется о возможности работы вплоть до скорости 9600 бит/сек. ды большинства своих наработок исходников сообщество разработало Подобно трансляции X-трафика и библиотек, их можно скачать всем версию серверной части NX под напосредством nxagent, имеется другой желающим с [11]. Сборки от самой званием FreeNX, а также KNX – клиент агент (“nxviewer”), который трансли- Nomachine для всех клиентов доступ- для соединения с сервером из под X. рует RFB/VNC-трафик в протокол NX. ны бесплатно, также есть различные FreeNX – это набор shell-скриптов, коЭто улучшает эффективность соеди- варианты сборок NX-серверов, пос- торые вместе с открытыми библионений до 10 раз по сравнению с рабо- тавляемые за определенную плату: теками от NX формируют серверную той обычного vncviewer, связывающе- годовая подписка на NX Enterprise часть (backend). Вначале работы с NX в качестве го локальный X-дисплей с удаленным Server с неограниченным количеством пользователей и числом процес- сервера мною использовался ПК с ОС сервером VNC. В этом мы убедимся. На рис. 1 под цифрой 3 показа- соров 1-2 стоит 1494$, наиболее пол- SUSE 10.0. В составе дистрибутива уже на возможность одновременной ра- ное решение с балансировкой нагруз- шла сборка FreeNX, но, во-первых, она боты разных агентов NX, RDP, VNC. ки и управлением узлов на базе NX имела более чем годовую давность, При этом NX-агенты эффективно Advanced Server обойдется в 3494$. а, во-вторых, столкнувшись с первыми транслируют чужеродные протоколы Кроме того, имеется вариант NX Free трудностями при работе, я решил, что в свой собственный и далее переда- Edition, который можно скачать бес- пора собрать серверную часть из исплатно, но имеет ограничение на ко- ходников самому. Рассказывать буют трафик через NX Proxy. NX Proxy – этот компонент как раз личество одновременных соедине- ду о сборке из исходников версии 1.5 и отвечает за компрессию/деком- ний и пользователей, равное двум, так как наиболее проверенной временем, прессию: в клиентском режиме что если есть желание администриро- а потом уточню, какие имеются особенкодирует запросы от X-клиентов вать Linux-сервер из дома с помощью ности для сборки версии 2.0(2.1). В настоящий момент на сайте и декодирует ответы от X-сервера, обычного аналогового модема, то лучше, безопаснее и проще этого реше- Nomachine выложены исходники верв серверном – наоборот. NX Agent – термин «агент» исполь- ния не найти. Отмечу также наличие сии NX 2.0, эта версия является рекозуется для описания компонента, клиентских версий NX Client Desktop мендуемой фирмой, а на исходники которому передается сформиро- Edition для PlayStation 2 (при исполь- версии 1.5 там же имеется специальванное изображение перед пере- зовании Linux Kit), а также NX Client ная ссылка. Качаем последние версии Embedded Edition для Sharp Zaurus следующих тарболов со странички [11]: дачей в сеть через прокси. NX Viewer – модифицированный 5xxx и HP/Compaq iPAQ. Их можно так- nx-X11, nxagent, nxcomp, nxcompext, Nomachine обычный VNC-клиент, же скачать бесплатно [12]. Так что, ес- nxdesktop (если нужна поддержка RDP), транслирующий VNC/RFB-трафик ли вы в командировке, а с собой толь- nxproxy, nxscripts, nxviewer (если нужна ко КПК, ничего не мешает подклю- поддержка VNC). nx-X11 – это версия в NX-протокол.
№12, декабрь 2006
19
администрирование 4.3 Xfree86, которая имеет модифицированные Nomachine X-библиотеки. Часть исходников будет распаковываться прямо в дерево nx-X11, поэтому развернем его в первую очередь, очередность распаковки остальных тарболов неважна, главное, чтобы они все распаковывались в одном каталоге. Туда же качаем и распаковываем скрипты FreeNX с адреса [13]. Еще понадобятся два патча, качаем их отсюда [14, 15]. Каталог нашей сборки примет следующий вид: freenx-0.4.4 nxproxy nx-X11 nxscripts nxcomp nxviewer nxcompext freenx-lfs_hint.diff nxdesktop NX-lfs_hint.diff Для сборки понадобятся следующие пакеты (их можно установить из вашего дистрибутива Linux): libjpeg-devel, libpng-devel, openssl-devel, netcat, expect. Описание сборки можно найти также здесь [16]. # Накладываем NX patch patch -p0 < NX-lfs_hint.diff # Собираем X – самая длительная часть, может занять # до часа времени pushd nx-X11 make World popd # nxproxy pushd nxproxy ./configure --prefix=/srv/NX make popd # Сборка RFB-агента pushd nxviewer xmkmf -a cp -a /usr/X11R6/lib/libXp.so* ../nx-X11/exports/lib/ make 2> /dev/null popd # Сборка RDP-агента pushd nxdesktop ./configure --prefix=/srv/NX --sharedir=/srv/NX/share make popd # Вся серверная часть будет находиться в каталоге /srv/NX, # создаем некоторые из подкаталогов mkdir -p /srv/NX/bin mkdir -p /srv/NX/lib mkdir -p /srv/NX/man/man1 mkdir -p /srv/NX/share/doc # Инсталлируем собранные библиотеки и агенты cp -a nx-X11/lib/X11/libX11.so.* ↵ nx-X11/lib/Xext/libXext.so.* ↵ nx-X11/lib/Xrender/libXrender.so.* /srv/NX/lib install -m 755 nx-X11/programs/Xserver/nxagent /srv/NX/lib # Создаем скрипт nxagent, который будет управлять # всеми программами cat > nxagent << "EOF" #!/bin/sh NXCOMMAND=$(basename $0) export LD_LIBRARY_PATH=/srv/NX/lib:$LD_LIBRARY_PATH exec /srv/NX/lib/$NXCOMMAND ${1+"$@"} EOF # И устанавливаем его: install -m 755 nxagent /srv/NX/bin # Устанавливаем библиотеки сжатия и прокси cp -a nxcomp/libXcomp.so.* /srv/NX/lib cp -a nxcompext/libXcompext.so.* /srv/NX/lib install -m 755 nxproxy/nxproxy /srv/NX/lib ln -snf nxagent /srv/NX/bin/nxproxy # Установка RFB-агента pushd nxviewer make install DESTDIR=/srv/NX mv /srv/NX/usr/X11R6/bin/nxviewer /srv/NX/lib ln -snf nxagent /srv/NX/bin/nxviewer chmod 755 /srv/NX/bin/nxviewer mv /srv/NX/usr/X11R6/bin/nxpasswd /srv/NX/bin popd # Установка RDP-агента
20
pushd nxdesktop make install mv /srv/NX/bin/nxdesktop /srv/NX/lib ln -snf nxagent /srv/NX/bin/nxdesktop chmod 755 /srv/NX/bin/nxdesktop rm -rf /srv/NX/usr popd # Установка скриптов cp -r nxscripts /srv/NX/share/doc # установка FreeNX mkdir -p /srv/NX/etc mkdir -p /srv/NX/var mkdir -p /srv/NX/var/db mkdir -p /srv/NX/home mkdir -p /srv/NX/home/nx pushd freenx-0.4.4 # Накладываем патч freenx, в основном здесь правятся пути # на соответствие /srv/NX patch -p0 < ../freenx-lfs_hint.diff cp -a nxnode /srv/NX/bin cp -a nxserver /srv/NX/bin cp -a nxsetup /srv/NX/bin cp -a nxkeygen /srv/NX/bin cp -a nxnode-login /srv/NX/bin cp -a nxloadconfig /srv/NX/bin cp -a nxclient /srv/NX/bin cp -a nxprint /srv/NX/bin install -m 755 node.conf.sample /srv/NX/etc popd # Добавляем пользователя и группу nx groupadd -g 77 nx useradd -c 'FreeNX user' -d /srv/NX/home/nx -g nx -s /bin/ bash -u 77 nx chown -R root.root /srv/NX chown -R nx.nx /srv/NX/home/nx # Далее важный момент, прежде чем запускать, ознакомьтесь # с параметрами запуска команды: /srv/NX/bin/nxsetup –help. # Если хотите использовать аутентификацию пользователей # с помощью ключей, уберите параметр –setup-nomachine-key. # Для работы с тонкими клиентами можно ничего не менять /srv/NX/bin/nxsetup --install --uid 77 --gid 77 ↵ --setup-nomachine-key # Проверяем, работает ли сервер NX: /srv/NX/bin/nxserver --status # Должен быть примерно такой ответ: NX> 100 NXSERVER - Version 1.4.0-44 OS (GPL) NX> 110 NX Server is running NX> 999 Bye
# Устанавливаем конфигурационный файл freenx: mv /srv/NX/etc/node.conf.sample /srv/NX/etc/node.conf
В конфигурационном файле находим следующую строчку и раскомментируем ее: ENABLE_1_5_0_BACKEND="1"
Там же можно на первое время включить возможность ведения лога: NX_LOG_LEVEL=6
Теперь можно установить клиент Nomachine NX на любой компьютер Linux (можно использовать и KNX) или Windows и проверить работу NX-сервера. C сервером можно работать как в режиме приложений, так и в режиме удаленного рабочего стола.
Настройка и создание образа Thinstation От серверной части NX теперь перейдем к созданию образа Thinstation. Сам дистрибутив можно скачать здесь [3]. При сборке образа будем стараться максимально уменьшить количество модулей и пакетов, все лишнее выкидываем. Поскольку у многих компьютеров, выбранных в качест-
администрирование ве тонких клиентов, железо и периферия будут отличаться, то отдельные пакеты хотелось бы вынести за рамки общего для всех образа. Такая возможность у Thinstation есть: pkg означает собрать как отдельный подгружаемый пакет с расширением pkg, package означает включение в общий образ. Пакеты lprng, sshd, samba-server и другие однозначно собираем как подгружаемые. Можно все пакеты с X-драйверами видеокарт указать как pkg, но тогда при сборке образа появятся несколько дополнительных пакетов, которые надо будет подгружать всем, и в результате общий размер подгружаемых данных будет больше. Поступим проще: один из видеодрайверов, наиболее часто используемый, а именно S3, укажем как package, остальные – pkg. Модули тоРисунок 3. Файлы настроек тонких клиентов Thinstation же можно выносить за пределы ядра, Добавление локальной фильтрации избавило меня но пока эта возможность работала некорректно, к тому же места в составе ядра они занимают совсем немного. Ниже от проблемы «лесенки» при печати. Кроме того, я создал следующий скрипт для проверки работы печати ~/thinstation/ представлен мой файл конфигурации build.conf: packages/base/bin/my: module serial module intel-agp module via-agp module 8139too module floppy module vfat module supermount pkg xorg6-ati pkg xorg6-i810 pkg xorg6-nv package xorg6-s3 pkg xorg6-s3virge pkg xorg6-sis pkg xorg6-trident package keymaps-ru package nx pkg lprng pkg sshd pkg samba-server param rootpasswd pleasechangeme param xorgvncpasswd pleasechangeme param bootlogo false param bootresolution 800x600 param defaultconfig thinstation.conf.buildtime param basename thinstation param basepath . param knownhosts ./known_hosts param localpkgs true param fulllocales false param bootverbosity 3 param nxurl file://home/zhen/sources/nx/bin ↵ /nxclient-1.5.0-141.i386.tar.gz
#!/bin/sh echo PRINTER TEST to /dev/printers/0 1>&2 for i in 1 2 3 4 5 6 7 8 9; do echo PRINTER /dev/printers/0 $i > /dev/printers/0; done echo -e \\r\\f > /dev/printers/0 exit 0;
Когда непонятно, что именно не работает, можно выполнить этот скрипт на консоли тонкого клиента: /bin/my. Чтобы при подключении клиента NX к серверу каждый раз не появлялось окошко с предупреждением о незнакомом хосте, создадим в корне Thinstation файл known_hosts: ssh-keyscan -t rsa nxserver_ip>>~/thinstation/known_hosts
В качестве «nxserver_ip» надо указать IP-адрес NX-сервера. Таким образом клиент будет знать о цифровом отпечатке rsa-ключа NX-сервера при аутентификации. После успешного выполнения build копируем thinstation/ boot-images/etherboot/thinstation.nbi и thinstation.nbi.zpxe, а также все pkg-файлы из thinstation/boot-images/pkgpackages в каталог /tftpboot на tftp-сервер. У меня создаюЕсли будете использовать печать на принтер, подклю- щийся файл thinstation.nbi.zpxe не заработал, в таком случае ченный к тонкому клиенту с помощью lprng, необходимо вне- по адресу [17] можно скачать файл BootPXE535.zip, в этом сти небольшую модификацию в файл thinstation/packages/ архиве есть универсальный загрузчик loader-native.zpxe, с ним все должно работать. lprng/etc/init.d/lprng. Для этого замените строчку: Конфигурационные файлы Thinstation достаточно хороecho "$PRINTER_X_NAME:lp=$PRINTER_X_DEVICE:wd= ↵ шо откомментированы, но вот сам процесс настройки и пос$PRINTER_X_DRIVER:br=$PRINTER_X_OPTIONS: ↵ ледовательность действий не всегда очевидны, так что неlf=/var/log/spooler.log:sh:sf" >> /etc/printcap которые трудности, с которыми мне пришлось столкнуться, и тонкости я все-таки упомяну. на На рис. 3 показаны основные действия по включению echo "$PRINTER_X_NAME:lp=$PRINTER_X_DEVICE:wd= ↵ тонкого клиента в работу. Сначала добавляем информацию $PRINTER_X_DRIVER:br=$PRINTER_X_OPTIONS:if=/bin/lpf: ↵ о MAC-адресе сетевой карты в dhcpd.conf. Не забудьте укаlf=/var/log/spooler.log:sh:sf" >> /etc/printcap
№12, декабрь 2006
21
администрирование того, используются разные образы Thinstation. Также не забывайте, что названия файлов thinstation.nbi и thinstation.nbi.zpxe взаимосвязаны: если в dhcpd.conf указана строчка: thinstation.nbi.zpxe";
то будет использован образ thinstation.nbi, в моем случае образов несколько, соответственно и записи в dhcpd.conf для каждого терминала разные.
Отличия сборки NX2
Рисунок 4. NX-сессия в режиме приложения (1С)
зать настройки в описании подсети, связанные с tftp, они задаются директивами «next-server» и «option root-path». У меня сервисы tftp и dhcp находятся на одном сервере FreeBSD, это облегчает их настройку. Все файлы настроек располагаются в /tftpboot. Потом в файле thinstation.hosts прописываем по-порядку: произвольное имя хоста (лучше, чтоб оно включало информацию о размещении терминала), MAC-адрес, группы, членом которых терминал является, в конце строки можно поместить комментарии за знаком «#», например:
В нашей системе используются два NX-сервера. На одном работает NX, собранный из исходников версий 1.5, для работы с ним используются клиенты 1.5.x. На другом работает NX версии 2.0. Расскажу, в чем отличия работы и сборки этой версии. На сервере установлены 64-битные Opteron, используется система SLES 10.0 x86_64. Так вот собрать на этом сервере NX так, как это было в случае с NX 1.5 на 32-битной системе, у меня не получилось, даже когда я пробовал явно указать сборку для 32-битной системы: make World BOOTSTRAPCFLAGS="-m32"
Видимо, это особенности 64-разрядной системы и ее библиотек. Несколько позже на сайте Nomachine я нашел заметку [18], в которой сказано, что исходные тексты NX разotd146_57158 00e04d08d710 smb_flop_hard TUX1C ↵ работаны для 32-битных систем, но их можно использовать monitor #very important PC и в 64-битных системах. Поскольку у меня еще есть компьюЗдесь по порядку: имя хоста, в моем случае состоит тер с установленной SLED 10.0 x86 и версии всех библиоиз номера отдела и инвентарного номера, далее MAC, и да- тек, ядра и программ точно такие же, как у SLES, то я решил лее перечисление названий файлов конфигураций, кото- собрать NX на нем, а потом перенести каталог с результарый будут использованы этим хостом. том сборки обычным копированием на 64-разрядную сисДалее создаем файл настроек thinstation.conf-MAC, я ис- тему. Так и сделал: все заработало как ни в чем не бывапользую в названии MAC-адрес, хотя можно использовать ло. Качаем файлы с теми же названиями, что и при сборке IP-адрес или имя из thinstation.hosts. Заметьте, что здесь в версии 1.5, только с суффиксами 2.0 (или 2.1). Всё компиимени файла MAC-адрес использует только заглавные бук- лируется точно так же, как и в случае с NX 1.5, за некоторывы. Группы описываются в файлах с названием thinstation. ми исключениями: во-первых, я не стал накладывать патч conf.group-ИМЯГРУППЫ. В файле thinstation.conf-MAC на- NX-lfs_hint.diff, во-вторых, появилась новая версия скриптов ходятся те настройки, которые касаются только этого тер- FreeNX 0.5, поддерживающая новый NX 2.0, её можно заминала, и не включены в другие группы. Например, все об- брать здесь [19], в-третьих, файл freenx-lfs_hint.diff, который щие настройки монитора описаны в файле thinstation.conf. вносит изменения в файл nxloadconfig из FreeNX 0.4, не подgroup-monitor, а один параметр «SCREEN_VERTREFRESH» ходит к новой версии FreeNX, его нужно отредактировать. вынесен в файл thinstation.conf-MAC. Это связано с тем, Вот вывод команды diff, показывающий разницу между оричто используются разные мониторы, и можно изменить на- гинальным и отредактированным файлом nxloadconfig: стройку кадровой частоты экрана, этот и другие парамет--- nxloadconf_orig 2006-07-01 22:03:39.000000000 +0500 ры можно настраивать для каждого терминала или для +++ nxloadconfig 2006-10-16 12:32:19.000000000 +0500 @@ -56,12 +56,12 @@ всех сразу. То же касается настройки мышки. По умолчаNX_LICENSE="OS (GPL)" нию настройка выполнена для PS/2-мыши. Если исполь# Where can different nx components be found зуется мышка, подключенная к порту COM1, то указы-NX_DIR=/usr ваются два параметра «MOUSE_PROTOCOL=Microsoft» +NX_DIR=/srv/NX PATH_BIN=$NX_DIR/bin # if you change that, be sure to also и «MOUSE_DEVICE=/dev/ttyS0», если к порту COM2, change the public keys PATH_LIB=$NX_DIR/lib то во втором параметре указывается /dev/ttyS1. -NX_ETC_DIR=/etc/nxserver Общий для всех файл конфигурации /tftpboot/thinstation. -NX_SESS_DIR=/var/lib/nxserver/db -NX_HOME_DIR=/var/lib/nxserver/home conf.network у меня почти пустой. Вся информация из него +NX_ETC_DIR=$NX_DIR/etc вынесена в отдельные файлы групповых настроек, на кото+NX_SESS_DIR=$NX_DIR/var/db +NX_HOME_DIR=$NX_DIR/home/nx рые есть ссылки в thinstation.hosts. Так как используются два терминальных сервера c разными версиями NX и каждый # Advanced users ONLY AGENT_LIBRARY_PATH="" #Calculated клиент использует только свой сервер, то конфигурации вы@@ -265,7 +265,7 @@ [ -z "$AGENT_LIBRARY_PATH" ] && AGENT_LIBRARY_PATH=$PATH_LIB несены в отдельные текстовые файлы (NX и TUX1C), кроме
22
администрирование [ -z "$PROXY_LIBRARY_PATH" ] && PROXY_LIBRARY_PATH=$PATH_LIB [ -z "$APPLICATION_LIBRARY_PATH" ] && APPLICATION_LIBRARY_PATH=$PATH_LIB -[ -z "$APPLICATION_LIBRARY_PRELOAD" ] && APPLICATION_LIBRARY_ PRELOAD="$APPLICATION_LIBRARY_PATH/libX11.so.6.2:$APPLICATION_LIBRARY_ PATH/libXext.so.6.4:$APPLICATION_LIBRARY_PATH/libXcomp.so.1:$APPLICATION_ LIBRARY_PATH/libXcompext.so.1:$APPLICATION_LIBRARY_PATH/libXrender.so.1.2" +[ -z "$APPLICATION_LIBRARY_PRELOAD" ] && APPLICATION_LIBRARY_ PRELOAD="$APPLICATION_LIBRARY_PATH/libX11.so.6.2:$APPLICATION_ LIBRARY_PATH/libXext.so.6.4:$APPLICATION_LIBRARY_PATH/libXcomp. so.2.1.0:$APPLICATION_LIBRARY_PATH/libXcompext.so.2.1.0:$APPLICATION_ LIBRARY_PATH/libXrender.so.1.2" [ -z "$KDE_PRINTRC" -a -n "$KDEHOME" ] && KDE_PRINTRC="$KDEHOME/share/ config/kdeprintrc" [ -z "$KDE_PRINTRC" -a -z "$KDEHOME" ] && KDE_PRINTRC="$HOME/.kde/share/ config/kdeprintrc" @@ -511,8 +511,8 @@ [ -z $(echo "$ENABLE_ROOTLESS_MODE" | egrep "^[0|1]$") ] && \ ERROR="yes" && echo "Error: Invalid value \"ENABLE_ ROOTLESS_MODE=$ENABLE_ROOTLESS_MODE\"" [ -z "$(strings $PATH_BIN/nxagent | grep 'NXAGENT - Version 1.5.0')" ] && \ ERROR="yes" && echo "Error: Could not find 1.5.0 version string in nxagent. NX 1.5.0 backend is needed for this version of FreeNX." +# [ -z "$(strings $PATH_BIN/nxagent | grep 'NXAGENT - Version 1.5.0')" ] && \ +# ERROR="yes" && echo "Error: Could not find 1.5.0 version string in nxagent. NX 1.5.0 backend is needed for this version of FreeNX." [ -z $(echo "$ENABLE_USESSION" | egrep "^[0|1]$") ] && \ ERROR="yes" && echo "Error: Invalid value \"ENABLE_ USESSION=$ENABLE_USESSION\""
Nxloadconfig надо отредактировать до выполнения команды /srv/NX/bin/nxsetup. В конфигурационном файле /srv/NX/etc/node.conf раскомментируйте строчку: ENABLE_2_0_0_BACKEND="1"
Теперь посмотрим, что надо изменить в дистрибутиве Thinstation (последняя версия сейчас 2.2) для поддержки NX 2.0 со стороны клиента. На момент написания статьи поддерживался только клиент версии 1.5. Забираем с адреса [20] NX client, не требующий поддержки библиотек XFT, в виде tar.gz-архива (на данный момент это nxclient-2.1.0-9. i386.tar.gz), распаковываем его в домашнем каталоге, копируем файлы и создаём недостающие ссылки. #!/bin/sh tar -xzf nxclient-2.1.0-9.i386.tar.gz cp ~/NX/bin/* ~/thinstation/packages/nx/usr/NX/bin cp -fl ~/NX/lib/libXcomp.so.* ↵ ~/thinstation/packages/nx/usr/NX/lib/ ln -sf libXcomp.so.2.1.0 ↵ ~/thinstation/packages/nx/usr/NX/lib/libXcomp.so.1.5.0 cp ~/NX/share/keys/server.id_dsa.key ↵ ~/thinstation/packages/nx/usr/NX/share/keys cp ~/NX/share/keyboards ↵ ~/thinstation/packages/nx/usr/NX/share/ cp -R ~/NX/share/images ↵ ~/thinstation/packages/nx/usr/NX/share/ touch ~/thinstation/packages/nx/build/installed
После этих действий пакет NX считается установленным в дереве пакетов Thinstation, теперь собираем образ, выполнив build, и копируем на tftp-сервер. Ну вот, образ готов и помещен в каталог tftp-сервера, но это еще не все. Оказывается NX-клиент новой версии на тонком клиенте по-другому интерпретирует настройки из файлов thinstation.conf.group-TUX1C(NX). После некоторого выяснения оказалось, что файл с настройками NX-сессии должен создаться в корне файловой системы тонкого клиента. Пришлось сделать небольшой патч для Thinstation, идею я подсмотрел на одном форуме:
№12, декабрь 2006
# Патч просто копирует файл(ы) настроек NX-клиента # из стандартного места в корень ls $HOME/.nx/config/.>nxsessions if [ -s nxsessions ] ; then (cat nxsessions ) | while read filename ; do probe=${filename%*.nxs} if [ "$filename" != "$probe" ] then cp $HOME/.nx/config/$filename /$probe fi done fi rm nxsessions
Данный кусок кода надо вставить в конец файла ~/thinstation/packages/nx/etc/init.d/nx.init перед последней командой «exit 0». После этого надо пересобрать образ Thinstation. Вот, теперь NX-сессия на тонком клиенте запускается так, как и задумано. В целом новая версия работает более стабильно, управление сессиями происходит более корректно плюс в свежих исходниках обновлены алгоритмы компрессии, исправлены некоторые ошибки. Ранее для очистки и закрытия незавершенных сессий и процессов приходилось обращаться к помощи cron: 1 0 * * *
root
/srv/NX/bin/nxserver –cleanup
Удобно и то, что клиент NX 2.1 работает с серверами обеих версий. В следующем номере читайте продолжение статьи, в которой я расскажу об особенностях эксплуатации, дополнительных настройках NX и Thinstation, а также предложу решения некоторых возможных проблем. 1. Борисов А. Тонкий клиент – шаг к мэйнфреймам? //Системный администратор, №11, ноябрь 2005 г. – С. 32-38. 2. Маркелов А. Использование бездисковых Linux-станций с загрузкой по сети. //Системный администратор, № 11, ноябрь 2004 г. – С. 12-14. 3. h t t p : / / s o u r c e f o r g e . n e t / p r o j e c t / s h o w f i l e s . p h p ? g r o u p _ id=80408&package_id=82039. 4. http://www.realvnc.com. 5. http://www.tightvnc.com. 6. http://www.complang.tuwien.ac.at/nino/dosvnc.html. 7. http://ultravnc.sourceforge.net. 8. http://www.redstonesoftware.com/products/vine/server/vineosx/ index.html. 9. http://en.wikipedia.org/wiki/X_Window_System. 10. http://www.vigor.nu/dxpc. 11. http://www.nomachine.com/sources.php. 12. http://www.nomachine.com/experimental-products.php. 13. http://debian.tu-bs.de/knoppix/nx/freenx-0.4.4.tar.gz. 14. http://www.linuxfromscratch.org/hints/downloads/attachments/ freenx/NX-lfs_hint.diff. 15. http://www.linuxfromscratch.org/hints/downloads/attachments/ freenx/freenx-lfs_hint.diff. 16. http://www.novell.com/coolsolutions/feature/16247.html. 17. h t t p : / / s o u r c e f o r g e . n e t / p r o j e c t / s h o w f i l e s . p h p ? g r o u p _ id=80408&package_id=97496&release_id=200769. 18. http://www.nomachine.com/ar/view.php?ar_id=AR02C00154. 19. http://prdownload.berlios.de/freenx/freenx-0.5.0.tar.gz. 20. http://www.nomachine.com/download-package.php?Prod_Id=26.
23
администрирование
Кластеризация + виртуализация: Linux HA + OpenVZ Часть 2: Виртуализация на практике
Евгений Прокопьев В первой части статьи (в №11 за 2005 г.) мы построили отказоустойчивый кластер с общим дисковым пространством, состоящий из двух узлов: m1 и m2. Теперь нам необходимо построить систему виртуализации с виртуальными серверами, мигрирующими с узла m1 на m2 в случае отказа первого.
Строим контейнер для виртуальных серверов и кластеризуем его Пр и с т у п и м к ус тан о в ке в ы бран ной нами системы виртуализации – OpenVZ. Она представляет собой набор патчей к стандартному ядру Linux и userspace-инструменты для управления. В ALT Linux Sisyphus ядро с поддержкой OpenVZ собрано отдельно, поэтому его необходимо установить в дополнение к существующему ядру, установить модуль поддержки DRBD в этом
24
ядре и userspace-инструменты, представленные пакетами vzctl и vzquota: [root@m1 ~]# apt-get install ↵ kernel-image-ovz-smp ↵ kernel-modules-drbd-ovz-smp ↵ vzctl vzquota
Для других дистрибутивов Linux ядро с поддержкой OpenVZ в виде бинарных пакетов или исходного кода можно загрузить отсюда – http://openvz.org/ download/kernel. В документе http:// wiki.openvz.org/Quick_installation опи-
с ана пр о цедура ус тано вк и яд ра на Fedora Core, Red Hat Enterprise Linux и CentOS. После установки нового ядра проверьте конфигурацию загрузчика и удостоверьтесь в том, что после перезапуска будет загружено ovz-ядро. Если это не так, то вам придётся предпринять для загрузки требуемого ядра необходимые действия. Например, если в качестве загрузчика используется lilo, то его конфигурационный файл может выглядеть так:
администрирование boot=/dev/hda map=/boot/map default=linux image=/boot/vmlinuz label=linux root=/dev/hda2 initrd=/boot/initrd.img read-only
нальную документацию с http://openvz.org/documentation и выжимку из нее, ориентированную на ALT Linux и доступную здесь – http://www.freesource.info/wiki/AltLinux/ Dokumentacija/OpenVZ. Существуют уже готовые шаблоны виртуальных серверов, построенных на основе некоторых общедоступных При этом /boot/vmlinuz и /boot/initrd.img должны ссылать- дистрибутивов Linux: CentOS, Debian, Fedora Core, Gentoo, Mandriva, openSUSE. Коммерческие RHEL и SUSE SLES ся на образ ядра и образ initrd соответственно: в этом списке отсутствуют. Отсутствует и ALT Linux, хо[root@m1 ~]# ls -l /boot/ тя ссылки на шаблоны ALT Linux содержатся в приведенtotal 6892 ной выше ссылке на ALT-ориентированную документацию. -rw-r--r-- 1 root root 755493 Sep 22 22:45 System.map-2.6.16-ovz-smp-alt7 -rw-r--r-- 1 root root 686841 Oct 9 23:54 System.map-2.6.16-std26-up-alt10 Но мы построим шаблон для виртуального сервера на ос-rw-r--r-- 1 root root 512 Oct 9 23:54 boot.0300 -rw-r--r-- 1 root root 512 Oct 9 23:54 boot.0800 нове ALT Linux самостоятельно. -rw-r--r-- 1 root root 65929 Sep 22 22:39 config-2.6.16-ovz-smp-alt7 -rw-r--r-- 1 root root 66100 Oct 9 23:54 config-2.6.16-std26-up-alt10 Штатным для OpenVZ средством построения шаблонов -rw------- 1 root root 321240 Oct 10 23:34 initrd-2.6.16-ovz-smp-alt7.img -rw------- 1 root root 204992 Oct 9 23:54 initrd-2.6.16-std26-up-alt10.img является утилита vzpkg. Она использует yum в качестве выlrwxrwxrwx 1 root root 30 Oct 10 23:34 initrd-smp.img -> initrd-2.6.16-ovz-smp-alt7.img lrwxrwxrwx 1 root root 32 Oct 9 23:54 initrd-up.img -> initrd-2.6.16-std26-up-alt10.img сокоуровневого средства управления пакетами (поддержку lrwxrwxrwx 1 root root 30 Oct 10 23:34 initrd.img -> initrd-2.6.16-ovz-smp-alt7.img -rw------- 1 root root 31744 Oct 10 23:38 map apt обещают чуть позже) и поэтому не может быть испольlrwxrwxrwx 1 root root 27 Oct 10 23:34 vmlinuz -> vmlinuz-2.6.16-ovz-smp-alt7 -rw-r--r-- 1 root root 1246789 Sep 22 22:45 vmlinuz-2.6.16-ovz-smp-alt7 зована в тех случаях, когда дистрибутив, на основе кото-rw-r--r-- 1 root root 1132834 Oct 9 23:54 vmlinuz-2.6.16-std26-up-alt10 lrwxrwxrwx 1 root root 27 Oct 10 23:34 vmlinuz-smp -> vmlinuz-2.6.16-ovz-smp-alt7 рого строится шаблон, не имеет yum-репозиториев. Впроlrwxrwxrwx 1 root root 29 Oct 9 23:54 vmlinuz-up -> vmlinuz-2.6.16-std26-up-alt10 чем, поскольку шаблон – это всего лишь архив корня уже Также с помощью «chkconfig --list» удостоверьтесь, установленной системы в виде tar.gz, изготовить его можчто сервис vz не будет запущен после перезагрузки и за- но любыми подручными средствами, например, из систетем перезагрузится. мы, работающей на физическом сервере. После перезагрузки переместите файлы OpenVZ в каВ случае ALT Linux в качестве такого подручного средсталог /d0, куда уже должно быть смонтировано устройс- тва удобнее всего использовать spt. Если spt уже установтво /dev/drbd0, а на старом месте создать символические лен (его удобнее держать на выделенном физическом лиссылки: бо виртуальном сборочном сервере), то можно использовать содержимое каталога /usr/share/spt/profile-ovz/ как при[root@m1 ~]# mkdir /d0/vz мер для создания образа, который затем послужит нам [root@m1 ~]# mkdir /d0/vz/etc шаблоном для создания виртуального сервера. Нет ника[root@m1 ~]# mkdir /d0/vz/etc/sysconfig [root@m1 ~]# mkdir /d0/vz/var ких препятствий к тому, чтобы использовать этот образец [root@m1 ~]# mkdir /d0/vz/var/lib как есть, но мне показалось более правильным скопиро[root@m1 ~]# cp -r /etc/vz /d0/vz/etc [root@m1 ~]# cp -r /etc/sysconfig/vz-scripts ↵ вать его в ~/ovz и изменить список пакетов в шаблоне, от/d0/vz/etc/sysconfig редактировав файл ~/ovz/packages/main так: [root@m1 ~]# cp -r /var/lib/vz /d0/vz/var/lib [root@m1 ~]# cp -r /var/lib/vzquota /d0/vz/var/lib [root@m1 ~]# rm -rf /etc/vz [root@m1 ~]# rm -rf /etc/sysconfig/vz-scripts [root@m1 ~]# rm -rf /var/lib/vz [root@m1 ~]# rm -rf /var/lib/vzquota [root@m1 ~]# ln -s /d0/vz/etc/vz /etc/vz [root@m1 ~]# ln -s /d0/vz/etc/sysconfig/vz-scripts ↵ /etc/sysconfig/vz-scripts [root@m1 ~]# ln -s /d0/vz/var/lib/vz /var/lib/vz [root@m1 ~]# ln -s /d0/vz/var/lib/vzquota ↵ /var/lib/vzquota
После остановки сервиса heartbeat на узле m1 и монтирования drbd-устройства на узле m2 на нем необходимо аналогичным образом удалить каталоги OpenVZ и создать вместо них ссылки на /d0/vz. После того как OpenVZ перенесен на drbd-раздел, необходимо указать сервису heartbeat, что сервис vz должен работать на узле m1, для чего отредактировать файл /etc/ha.d/haresources на обоих узлах: m1.mydomain.com drbddisk ↵ Filesystem::/dev/drbd0::/d0::ext3 vz
После рестарта heartbeat на обоих узлах необходимо смоделировать отказ узла m1 и убедиться в том, что сервис vz запускается на узле m2.
Строим первый виртуальный сервер Теперь мы можем забыть о том, что OpenVZ работает в кластере, и конфигурировать его, опираясь на ориги-
№12, декабрь 2006
basesystem passwd apt apt-conf-sisyphus etcnet glibc sysklogd mc openssh-server openssh-clients
Также мне показалось разумным изменить конфигурацию apt по умолчанию, чтобы сразу иметь возможность устанавливать пакеты из моего локального репозитория. Для этого я создал файл ~/ovz/postinstall/setup.d/01apt c таким содержимым: cat >> /etc/apt/sources.list.d/sisyphus.local.list <<END # Local Sisyphus rpm [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus i586 classic rpm-src [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus i586 classic rpm [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus noarch classic rpm-src [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus noarch classic END
25
администрирование Краткий обзор важнейших технологий Sisyphus Spt (http://wiki.sisyphus.ru /devel /spt) – это инструмент, позволяющий из репозитория Sisyphus создать готовый к загрузке экземпляр системы в виде: Live-CD. Инсталляционного диска, который является частным случаем Live-CD отличается от него только тем, что включает в себя alterator (http:// wiki.sisyphus.ru/Alterator) – штатный конфигуратор системы, построеной на основе Sisyphus. Архива корневой файловой системы для использования в качестве виртуального сервера в какой-либо системе виртуализации или для установки на диск физического компьютера.
Тонкого клиента для загрузки по сети посредством PXE. Механизм работы spt сводится к установке пакетов, определенных пользователем (и всех зависимых от них) в chroot, и выполнению ряда скриптов, также определенных пользователем. Spt ак тивно использует hasher (http://www.freesource.info/wiki/ALTLinux/ Dokumentacija/Hasher), который в общем случае является механизмом помещения в chroot запускаемой программы и установки туда же всех пакетов, от которых эта программа зависит. По этой причине чаще всего hasher используется при сборке пакетов для того, чтобы гарантировать постоянство среды, в которой происходит сборка, и, соответственно, воспроизводимость ре-
Затем я выполнил команду: spt -v --noiso --image-type=tgz --maketty ~/ovz/
и получил файл ~/ovz/out/altlinux, который можно использовать как шаблон виртуального сервера для OpenVZ. Теперь файл ~/ovz/out/altlinux необходимо скопировать на ведущий узел кластера с именем /var/lib/vz/template/ cache/altlinux-sisyphus.tar.gz и выполнить следующее: [root@m1 ~]# vzctl create 101 ↵ --ostemplate altlinux-sisyphus --config vps.basic Creating VE private area: /var/lib/vz/private/101 Performing postcreate actions VE private area was created [root@m1 ~]# vzctl set 101 --name router --save Name router assigned Saved parameters for VE 101 [root@m1 ~]# vzctl set router --onboot yes --save Saved parameters for VE 101 [root@m1 ~]# vzctl set router --hostname router.mydomain.com --save Set hostname: router.mydomain.com Saved parameters for VE 101
Таким образом, мы создали виртуальный сервер, задали для него имя, указали, что он должен загружаться при старте OpenVZ, и присвоили ему FQDN. Везде мы использовали ключ --save, чтобы сохранить внесенные изменения после перезапуска виртуального сервера. Далее необходимо пробросить физический интерфейс eth1, который мы оставили незадействованным на этапе конфигурирования узлов кластера, в виртуальный сервер, чтобы сделать его доступным извне: [root@m1 ~]# vzctl set router --netdev_add eth1 --save Saved parameters for VE 101
Теперь можно запустить виртуальный сервер, войти в него, сконфигурировать сетевой интерфейс eth1 и проверить доступность физических серверов из виртуального и наоборот:
26
зультатов. В этом качестве hasher используют как члены ALT Linux Team для подготовки своих пакетов, так и Incominger (http://wiki.sisyphus.ru/devel/Incoming) – робот, занимающийся приемом новых пакетов в репозиторий. В настоящее время пакеты поступают в Incoming в виде SRPM, однако многими разработчиками уже используется технология GEAR (http://wiki.sisyphus.ru/devel/ git), позволяющая хранить исходный код пакетов в системе контроля версий GIT (http://git.or.cz), первоначально разработанной Линусом Торвальдсом специально для совместной работы над ядром Linux. В самом ближайшем будущем планируется сделать поступление пакетов из GIT-репозиториев напрямую в Incoming более приоритетным, а от SRPMS со временем отказаться.
[root@m1 ~]# vzctl start router Starting VE ... VE is mounted Setting CPU units: 1000 Set hostname: router.mydomain.com VE start in progress... [root@m1 ~]# vzctl enter router entered into VE 101 [root@router /]# ip address add 192.168.46.200/24 dev eth1 [root@router /]# ip link set eth1 up [root@router /]# ping 192.168.46.1 PING 192.168.46.1 (192.168.46.1) 56(84) bytes of data. 64 bytes from 192.168.46.1: icmp_seq=1 ttl=64 time=5.37 ms --- 192.168.46.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 5.376/5.376/5.376/0.000 ms
Команды внутри виртуального сервера можно также выполнять с помощью vzctl exec, не переключаясь в консоль через vzctl enter: [root@m1 ~]# vzctl exec router ping 192.168.46.1 PING 192.168.46.1 (192.168.46.1) 56(84) bytes of data. 64 bytes from 192.168.46.1: icmp_seq=1 ttl=64 time=6.34 ms
Для сохранения сетевых настроек после перезагрузки в ALT Linux есть 2 механизма конфигурирования сети: net-scripts, унаследованный от Mandrake и Red Hat, и свой собственный etcnet, о котором много написано на http://etcnet.org и http://wiki.sisyphus.ru/admin/etcnet. Второй способ значительно удобнее и функциональнее, также он был указан при генерации шаблона, поэтому нам ничего другого не остается, кроме как настроить именно его: [root@router /]# mkdir /etc/net/ifaces/eth1 [root@router /]# echo 192.168.46.200/24 > ↵ /etc/net/ifaces/eth1/ipv4address [root@router /]# echo default via 192.168.46.1 dev eth1 > ↵ /etc/net/ifaces/eth1/ipv4route [root@router /]# echo "BOOTPROTO=static > ONBOOT=yes > TYPE=eth" > /etc/net/ifaces/eth1/options [root@router /]# service network restart
администрирование Computing interface groups: ... 3 interfaces found Processing /etc/net/vlantab: empty. Stopping group 1/realphys (1 interfaces) Stopping eth1: ..OK Stopping group 0/virtual (2 interfaces) Stopping lo: .OK Stopping venet0: .OK error: setting key "net.ipv4.icmp_echo_ignore_broadcasts": Operation not permitted error: setting key "net.ipv4.tcp_syncookies": Operation not permitted error: setting key "net.ipv4.tcp_timestamps": Operation not permitted Computing interface groups: ... 3 interfaces found Starting group 0/virtual (2 interfaces) Starting lo: ....OK Starting venet0: ......OK Starting group 1/realphys (1 interfaces) Starting eth1: ......OK Processing /etc/net/vlantab: empty.
Сообщения «Operation not permitted» связаны с ограничениями для виртуального сервера, определенными по умолчанию, и в нашем случае на функционировании сети отрицательно не сказываются. Можно закомментировать соответствующие строки в файле /etc/net/sysctl.conf, чтобы эти сообщения больше не появлялись. Созданный нами виртуальный сервер будет использовать сетевой интерфейс eth1 того узла, на котором он в данный момент работает, поэтому в случае отказа узла m1 сервер переместится на узел m2 и будет доступен там по тому же самому адресу. Можно смоделировать эту ситуацию и увидеть с внешнего физического сервера следующее: $ ping 192.168.46.200 PING 192.168.46.200 (192.168.46.200) 56(84) bytes of data. 64 bytes from 192.168.46.200: icmp_seq=1 ttl=64 time=0.549 ms ... From 192.168.46.1 icmp_seq=83 Destination Host Unreachable ... 64 bytes from 192.168.46.200: icmp_seq=179 ttl=64 time=1.05 ms --- 192.168.46.200 ping statistics --179 packets transmitted, 25 received, +93 errors, 86% packet loss, time 178149ms rtt min/avg/max/mdev = 0.298/193.970/1702.783/397.285 ms, pipe 3
Строим виртуальную сеть В большинстве случаев на одном физическом сервере размещают несколько виртуальных серверов, при этом необходимо каким-то образом обеспечить доступность сервисов, работающих на виртуальных серверах, другим физическим машинам. Пробрасывать каждому виртуальному серверу по физическому интерфейсу накладно, да и неудобно. Часто хочется спрятать все виртуальные серверы за одним маршрутизатором/брандмауэром. Посмотрим, какие средства для этого предлагает OpenVZ. Он предлагает 2 типа виртуальных сетевых интерфейсов: venet – соединения точка-точка между физическим сервером и виртуальным, которые создаются автоматически для каждого виртуального сервера и конфигурируются c помощью vzctl. Они не имеют MAC-адресов, не поддерживают броадкасты (broadcast), на них не работают снифферы и средства учета трафика, использующие libicap (например, tcpdump), на них нельзя строить бриджи. veth – соединения точка-точка между физическим сервером и виртуальным, которые нужно создавать и конфигурировать вручную средствами того дистрибутива Linux, который работает на физическом и виртуальном сервере. Они лишены недостатков venet (которые можно рассматривать и как достоинства с точки зрения безопасности и эффективности) и выглядят как полноценные ethernet-интерфейсы.
№12, декабрь 2006
Виртуальная сеть
Если в качестве маршрутизатора/брандмауэра для доступа к виртуальным серверам использовать физический сервер, стоит, несомненно, предпочесть venet. Поскольку такая конфигурация более распространена, то и venet-интерфейсы используются чаще. Однако чем сложнее конфигурация маршрутизатора/брандмауэра, тем больше оснований появляется для вынесения его в отдельный виртуальный сервер, чтобы не перегружать физический сервер лишними задачами и лишним ПО. В нашем случае дополнительным поводом стало желание иметь один и тот же адрес виртуального сервера, доступный извне, независимо от адреса узла кластера, на котором он в данный момент работает. Эта конфигурация в некоторых случаях может оказаться еще более сложной, если, например, на проброшенном физическом интерфейсе организовать поддержку IEEE 802.1Q VLAN, чтобы принять несколько vlan, но с точки зрения настройки OpenVZ эта конфигурация не будет ничем отличаться от того, что было рассмотрено выше – разница будет только в настройке проброшенного сетевого интерфейса. Более важным является то, что если использовать в качестве маршрутизатора/брандмауэра виртуальный сервер, более удобным будет построить виртуальную сеть на veth-интерфейсах. Выглядеть это будет так, как показано на рисунке. Итак, для каждого виртуального сервера мы создаем veth-интерфейс, а концы этих интерфейсов со стороны физического сервера объединяем в бридж – в результате получается аналог хаба, в который включены все виртуальные сервера. Один из них уже имеет проброшенный в него физический интерфейс – этот виртуальный сервер и будет играть роль маршрутизатора/брандмауэра. Создаем и запускаем виртуальные сервера: [root@m1 ~]# vzctl create 102 ↵ --ostemplate altlinux-sisyphus --config vps.basic Creating VE private area: /var/lib/vz/private/102 Performing postcreate actions VE private area was created
[root@m1 ~]# vzctl set 102 --name mail --save Name ve1 assigned Saved parameters for VE 102
[root@m1 ~]# vzctl set mail --onboot yes --save Saved parameters for VE 102
[root@m1 ~]# vzctl set mail ↵ --hostname mail.mydomain.com --save Saved parameters for VE 102
27
администрирование [root@m1 ~]# vzctl start mail Starting VE ... VE is mounted Adding IP address(es): 192.168.199.2 Setting CPU units: 1000 Set hostname: mail.mydomain.com VE start in progress...
[root@m1 ~]# vzctl create 103 ↵ --ostemplate altlinux-sisyphus --config vps.basic Creating VE private area: /var/lib/vz/private/103 Performing postcreate actions VE private area was created
[root@m1 ~]# vzctl set 103 --name dbms --save Name ve2 assigned Saved parameters for VE 103
[root@m1 ~]# vzctl set dbms --onboot yes --save Saved parameters for VE 103
[root@m1 ~]# vzctl set dbms ↵ --hostname dbms.mydomain.com --save Saved parameters for VE 103
[root@m1 ~]# vzctl start dbms Starting VE ... VE is mounted Adding IP address(es): 192.168.199.3 Setting CPU units: 1000 Set hostname: dbms.mydomain.com VE start in progress...
Создаем и конфигурируем veth-интерфейсы внутри виртуальных серверов: [root@m1 ~]# vzctl set router ↵ --veth_add veth1,00:12:34:56:78:9A,eth0, ↵ 00:12:34:56:78:9B --save Processing veth devices Saved parameters for VE 101
[root@m1 ~]# vzctl exec router ip address ↵ add 192.168.199.1/24 dev eth0 [root@m1 ~]# vzctl exec router ip link set eth0 up [root@m1 ~]# vzctl set mail ↵ --veth_add veth2,00:12:34:56:78:9C,eth0, ↵ 00:12:34:56:78:9D --save Processing veth devices Saved parameters for VE 102
[root@m1 ~]# vzctl exec mail ip address ↵ add 192.168.199.2/24 dev eth0 [root@m1 ~]# vzctl exec mail ip link set eth0 up [root@m1 ~]# vzctl set dbms ↵ --veth_add veth3,00:12:34:56:78:9E,eth0, ↵ 00:12:34:56:78:9F --save Processing veth devices Saved parameters for VE 103
[root@m1 ~]# vzctl exec dbms ip address ↵ add 192.168.199.3/24 dev eth0 [root@m1 ~]# vzctl exec dbms ip link set eth0 up
Имена интерфейсов и их MAC-адреса мы придумываем сами, поэтому необходимо, чтобы последние не пересекались с существующими. Объединяем концы veth-интерфейсов со стороны физического сервера в бридж:
28
[root@m1 [root@m1 [root@m1 [root@m1 [root@m1 [root@m1 [root@m1 [root@m1
~]# ~]# ~]# ~]# ~]# ~]# ~]# ~]#
ip link set ip link set ip link set brctl addbr brctl addif brctl addif brctl addif ip link set
veth1 up veth2 up veth3 up br0 br0 veth1 br0 veth2 br0 veth3 br0 up
Проверяем работоспособность внутренней виртуальной сети: [root@m1 ~]# vzctl exec router ping 192.168.199.2 PING 192.168.199.2 (192.168.199.2) 56(84) bytes of data. 64 bytes from 192.168.199.2: icmp_seq=1 ttl=64 time=15.9 ms
[root@m1 ~]# vzctl exec router ping 192.168.199.3 PING 192.168.199.3 (192.168.199.3) 56(84) bytes of data. 64 bytes from 192.168.199.3: icmp_seq=1 ttl=64 time=3.71 ms
Теперь на виртуальных серверах описываем маршрут во внешнюю физическую сеть: [root@m1 ~]# vzctl exec mail add 192.168.0.0/16 via [root@m1 ~]# vzctl exec dbms add 192.168.0.0/16 via
ip route ↵ 192.168.199.1 ip route ↵ 192.168.199.1
На виртуальном маршрутизаторе включаем пересылку пакетов между физической и виртуальной сетями: [root@m1 ~]# vzctl exec router sysctl -w ↵ net.ipv4.ip_forward=1
Теперь если на машине из физической сети 192.168.46.0/24 описать маршрут в сеть 192.168.199.0/24 (или настроить NAT на виртуальном маршрутизаторе), мы получим то, чего и добивались: [root@m1 ~]# vzctl exec mail ping 192.168.46.1 PING 192.168.46.1 (192.168.46.1) 56(84) bytes of data. 64 bytes from 192.168.46.1: icmp_seq=1 ttl=63 time=0.982 ms
Желательно, чтобы все описанные выше настройки сохранялись при перезапуске виртуальных серверов, сервиса vz и ведущего узла кластера. С настройками виртуальных серверов проще всего – их можно сохранить в etcnet: [root@m1 ~]# vzctl enter mail [root@mail /]# mkdir /etc/net/ifaces/eth0 [root@mail /]# echo 192.168.199.2/24 > ↵ /etc/net/ifaces/eth0/ipv4address [root@mail /]# echo 192.168.0.0/16 via 192.168.199.1 ↵ dev eth0 > /etc/net/ifaces/eth0/ipv4route [root@mail /]# echo "BOOTPROTO=static > ONBOOT=yes > TYPE=eth" > /etc/net/ifaces/eth0/options [root@m1 ~]# vzctl enter dbms [root@dbms /]# mkdir /etc/net/ifaces/eth0 [root@dbms /]# echo 192.168.199.3/24 > ↵ /etc/net/ifaces/eth0/ipv4address [root@dbms /]# echo 192.168.0.0/16 via 192.168.199.1 ↵ dev eth0 > /etc/net/ifaces/eth0/ipv4route [root@dbms /]# echo "BOOTPROTO=static > ONBOOT=yes > TYPE=eth" > /etc/net/ifaces/eth0/options
Для автоматического добавления конца veth-интерфейсов со стороны физического сервера в бридж при старте соответствующего виртуального сервера потребуется ис-
администрирование править скрипт /usr/sbin/vznetcfg, добавив в конец функции init_veth() строку (сделать это нужно на двух узлах кластера):
Затем в виртуальных серверах необходимо удалить из etcnet настройки интерфейса venet0: [root@m1 ~]# vzctl exec router rm -rf /etc/net/ifaces/venet0 [root@m1 ~]# vzctl exec mail rm -rf /etc/net/ifaces/venet0 [root@m1 ~]# vzctl exec dbms rm -rf /etc/net/ifaces/venet0
brctl addif br0 ${dev}
В будущем разработчики OpenVZ обещают доработать этот скрипт, чтобы подобного рода измения можно было описывать в конфигурационном файле. Наконец, бридж тоже нужно создать, и сделать это необходимо еще до старта всех виртуальных серверов. Лучше всего добавить его создание в конфигурацию etcnet на обоих узлах кластера: [root@m1 ~]# mkdir /etc/net/ifaces/br0 [root@m1 ~]# echo TYPE=bri > /etc/net/ifaces/br0/options
Есть одна неприятная деталь. В конфигурацию виртуальных серверов мы добавили маршрут в сеть 192.168.0.0/16, но во многих случаях нам потребуется добавить туда маршрут по умолчанию. Сделать этого мы не сможем, так как такой маршрут, созданный OpenVZ заранее для собственных нужд, уже есть: [root@m1 ~]# vzctl exec mail ip route 192.168.199.0/24 dev eth0 proto kernel scope link src 192.168.199.2 192.0.2.0/24 dev venet0 scope host 192.168.0.0/16 via 192.168.199.1 dev eth0 default via 192.0.2.1 dev venet0
Он создается и автоматически привязывается к интерфейсу venet0. Ни эта довольно навязчивая автоматика, ни venet-интерфейсы вообще нам сейчас не нужны, мы используем только veth. Поэтому чтобы такого не происходило, потребуется исправить скрипт, занимающийся конфигурированием сетевых интерфейсов виртуального сервера. В случае ALT Linux Sisyphus – это скрипт /etc/vz/dists/scripts/etcnet-add_ip.sh. В нем нам нужно модифицировать функцию add_ip() таким образом, чтобы она выполнялась только при наличии присвоенного venet-интерфейсу адреса: add_ip() { local i ip if [ -n "$IP_ADDR" ]; then if [ "$VE_STATE" = "starting" ]; then setup_network fi backup_configs "$IPDELALL" i=0 for ip in ${IP_ADDR}; do i="$(find_unused_alias "$((i+1))")" create_alias "$ip" "$i" done move_configs if [ "$VE_STATE" = "running" ]; then # synchronyze config files & interfaces ifdown "$VENET_DEV" ifup "$VENET_DEV" fi }
fi
№12, декабрь 2006
Теперь можно перезапустить сервис vz – в конфигурации виртуальных серверов останутся только те маршруты, которые мы указали явно. Таким образом, мы добились того, чего хотели: в штатном режиме виртуальные серверы mail и dbms работают на узле m1, а в случае его отказа автоматически переезжают на узел m2, при этом с точки зрения внешнего наблюдателя из физической сети 192.168.46.0/24 наблюдается лишь кратковременный перерыв в обслуживании: $ ping 192.168.199.2 PING 192.168.199.2 (192.168.199.2) 56(84) bytes of data. 64 bytes from 192.168.199.2: icmp_seq=1 ttl=64 time=0.549 ms ... From 192.168.46.1 icmp_seq=83 Destination Host Unreachable ... From 192.168.46.200 icmp_seq=83 Destination Host Unreachable ... 64 bytes from 192.168.199.2: icmp_seq=179 ttl=64 time=1.05 ms --- 192.168.46.200 ping statistics --179 packets transmitted, 25 received, +93 errors, 86% packet loss, time 178149ms rtt min/avg/max/mdev = 0.298/193.970/1702.783/397.285 ms, pipe 3
Что дальше Итак, мы выполнили базовую настройку двухузлового кластера, подняли систему виртуализации OpenVZ, кластеризовали ее, а затем настроили несколько виртуальных серверов, виртуальную сеть между ними и связали ее с внешней физической сетью. При этом мы показали преимущества такого способа построения систем как с точки зрения надежности, так и с точки зрения снижения затрат на оборудование и его обслуживание. Теперь можно углубляться в детали: садиться и вдумчиво читать OpenVZ Users Guide – http://download.openvz.org/doc/OpenVZ-Users-Guide.pdf (перевод этого руководства доступен на http://www.opennet.ru/ docs/RUS/virtuozzo). Для полноценного использования OpenVZ нам потребуется настроить: Квоты на процессорное время для виртуальных серверов. Квоты потребления системных ресурсов виртуальными серверами (количество процессов, количество сокетов, объем виртуальной памяти, различных буферов и т. д.). Дисковые квоты. Доступ к физическим устройствам и файловым системам физического сервера, если в этом есть необходимость. Все перечисленное очень подробно описано в документации. После более тщательной настройки OpenVZ можно переходить к настройке самих виртуальных серверов. 1. 2. 3. 4. 5. 6.
http://linux-ha.org http://drbd.org http://openvz.org http://altlinux.ru http://sisyphus.ru http://freesource.info
29
администрирование
Настраиваем шлюз в Интернет на базе FreeBSD
Алексей Бережной Использование FreeBSD на небольших роутерах для связи с внешним миром уже давно перестало быть чем-то выдающимся. Эта простая в использовании, нетребовательная к ресурсам и обслуживанию операционная система почти идеально подходит для решения подобных задач.
Нам понадобится
Аппаратное обеспечение. Что-
Операционная система: FreeBSD 5.5 или 6.1. Дополнительно: из-за того, что данный компьютер подлежит непрерывному использованию, рекомендую доставить внутрь корпуса дополнительные вентиляторы чтобы обеспечить принудительное нагнетание/отток воздуха для охлаждения. Практически все современные корпусы ATX позволяют сделать это.
бы вывести внутреннюю сеть в Интернет, достаточно компьютера Pentium III 600 МГц, 256 Мб RAM, 10 Гб HDD, 2 сетевые карты. Конфигурация взята с запасом, для полноценной работы сети малого офиса (около 50 пользователей) вполне хватило бы Pentium II 400 МГц, c 128 Мб RAM. Но в дальнейшем может возникнуть желание установить на этот же шлюз, к примеру, проксисервер, лучше выбрать конфигураПоскольку все необходимые модуцию более высокого уровня. ли включены в состав операционной
30
системы, больше нам ничего не потребуется.
Настройка сетевых интерфейсов Будем считать, что уже имеется компьютер подходящей конфигурации с установленной нужной версией FreeBSD. Необходимо уточнить имена интерфейсов сетевых карт, под которыми их распознает операционная система. # ifconfig
администрирование Должно появиться что-то подобное: rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=8<VLAN_MTU> ether 00:xx:xx:xx:xx:xx media: Ethernet autoselect (100baseTX <full-duplex>) status: active xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=9<RXCSUM,VLAN_MTU> ether 00:zz:zz:zz:zz:zz media: Ethernet autoselect (100baseTX <full-duplex>) status: active plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet 127.0.0.1 netmask 0xff000000
В компьютере установлены две сетевые карты c именами интерфейсов rl0 и xl0. В нашем случае интерфейс rl0 будет «смотреть» во внешний мир, а xl0 – во внутреннюю сеть. IP- адрес внутреннего интерфейса: 192.168.9.2 , маска подсети 255.255.255.0, имя интерфейса xl0; IP-адрес внешнего интерфейса 83.xxx.xxx.xxx, маска подсети 255.255.255.224, имя интерфейса rl0. Уточнить, сетевым картам каких производителей соответствуют те или иные сетевые адреса, можно, заглянув в файл GENERIC в каталоге /usr/src/sys/i386/conf: # more /usr/src/sys/i386/conf/ GENERIC
В нем находим соответствующие строчки: device … device
rl
# RealTek 8129/8139
xl
# 3Com 3c90x (``Boomerang'', ``Cyclone'')
Таким образом, интерфейс rl0 соответствует сетевой карте RealTek 8129/8139 и ее аналогам. Сетевой интерфейс xl0 соответствует сетевой карте 3Com. Отдельно стоит упомянуть о файле GENERIC. Это файл конфигурации ядра, устанавливаемого по умолчанию при инсталляции FreeBSD. Он организован так, чтобы система могла поддерживать большинство наиболее используемых устройств, в том числе и указанные сетевые карты. Очень часто дальнейшие модификации ядра строятся на модифицированной копии этого файла. В данном случае, мы именно так и поступим: Шлюз провайдера – по умолчанию 83.xxx.xxx.1. В сети присутствуют компьютеры пользователей – 192.168.9.31, 192.168.9.32. Наш домен (условно) – ourdomain.ru. Имя хоста (компьютера) – ourhost.ourdomain.ru. Выполняем настройку сетевых карт. Можно использовать утилиту sysinstall (/stand/sysinstall для FreeBSD 5.5 и /usr/sbin/sysinstall для FreeBSD 6.1) Но поскольку нам известны все необходимые параметры, то для упрощения процесса и экономии времени мы будем задавать параметры путем редактирования соответствующих конфигурационных файлов. Для редактирования будем использовать текстовый редактор vi, присутствующий практически в любой системе UNIX. Для администраторов, пока незнакомых с редактором, могу порекомендовать замечательную статью Макси-
№12, декабрь 2006
ма Мошкова http://www.lib.ru/unixhelp/vi.txt и http://www.lib.ru/ unixhelp/vibegin.txt. Настройки сетевых интерфейсов во FreeBSD хранятся в файле /etc/rc.conf. Открываем его на редактирование: # vi /etc/rc.conf
И добавляем следующие строки: # Задаем внутренний интерфейс ifconfig_xl0="inet 192.168.9.2 netmask 255.255.255.0" # Задаем внешний интерфейс ifconfig_rl0="inet 83.xxx.xxx.xxx netmask 255.255.255.224" # Задаем шлюз провайдера по умолчанию defaultrouter="83.xxx.xxx.1" # Имя хоста hostname="ourhost.ourdomain.ru" # Указываем, что сервер будет работать как маршрутизатор gateway_enable="YES"
После чего перезагружаем компьютер: # reboot
В данный момент компьютер можно было и не перезагружать. Но мы хотим достоверно убедиться, что наши интерфейсы установлены корректно и работают, поэтому я все же рекомендую перезагрузиться. После загрузки проверяем: # ifconfig
Вывод команды ifconfig: rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=8<VLAN_MTU> inet6 fe80::215:58ff:fe3e:8fb1%rl0 prefixlen 64 scopeid 0x1 inet 83.xxx.xxx.xxx netmask 0xffffffe0 broadcast 83.xxx.xxx. yyy ether 00:xx:xx:xx:xx:xx media: Ethernet autoselect (100baseTX <full-duplex>) status: active xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=9<RXCSUM,VLAN_MTU> inet6 fe80::20a:5eff:fe62:ade2%xl0 prefixlen 64 scopeid 0x2 inet 192.168.9.2 netmask 0xffffff00 broadcast 192.168.9.255 ether 00:zz:zz:zz:zz:zz media: Ethernet autoselect (100baseTX <full-duplex>) status: active plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet 127.0.0.1 netmask 0xff000000
Файл rc.conf, на мой взгляд, можно назвать ключевым файлом конфигурации. Очень большое число параметров, используемых системой, задается в виде соответствующих переменных в этом файле. В том числе настройки сетевых интерфейсов, файервола и NAT, используемых нами.
Настройка шлюза Мы будем использовать «родной» для FreeBSD файервол IPFW. Для этого мы должны внести некоторые изменения в ядро системы. Если возникли дополнительные вопросы по перекомпиляции ядра, советую прочитать дополнительный материал: http://freebsd.org.ru/how-to/kernelconfig.html. Заметьте, что нужно использовать исходные тексты ядра для соответствующей архитектуры. Поскольку ар-
31
администрирование хитектура нашего компьютера базируется на платформе i386, то и ядро должно быть скомпилировано в соответствии с платформой. Для владельцев компьютеров других платформ я рекомендую обратиться к соответствующей литературе. Исходники ядра по умолчанию лежат в каталоге /usr/src/sys/i386/conf. Соответственно переходим в данный каталог: # cd /usr/src/sys/i386/conf
Как правило, изменяют файл GENERIC, содержащий опции ядра, устанавливаемого по умолчанию. Для этого делаем копию данного файла: # cp GENERIC ourkernel
Открываем на редактирование новый файл ourkernel: # vi ourkernel
и добавляем следующие опции: #
# #
options IPFIREWALL #firewall options IPFIREWALL_VERBOSE ↵ #enable logging to syslogd(8) options IPFIREWALL_FORWARD ↵ #enable transparent proxy support options IPFIREWALL_VERBOSE_LIMIT=100 #limit verbosity options IPFIREWALL_DEFAULT_TO_ACCEPT ↵ #allow everything by default options DUMMYNET options IPDIVERT #divert sockets
После сделанных изменений можно приступать к перекомпиляции ядра. Выполняем команды: # # # # #
config ourkernel cd /usr/src/sys/i386/compile/ourkernel make depend make make install
Перегружаемся: # reboot
Если после перезагрузки сервер работает нормально, приступаем к настройке файервола. Для организации работы файервола используются следующие переменные, добавляемые при необходимости в файл rc.conf. Разрешает или запрещает использование файервола: # Set to YES to enable firewall functionality firewall_enable="NO"
Имя и местоположение файла, отвечающего за инициализацию файервола. # Which script to run to set up the firewall firewall_script="/etc/rc.firewall"
32
Файл rc.firewall не рекомендуется редактировать. Вместо этого лучше воспользоваться соответствующей переменной firewall_type или более простым способом, описываемым ниже. При установке данного правила в «YES» подавляется вывод на дисплей: firewall_quiet="NO"
Разрешить/запретить ведение лога событий: firewall_logging="NO"
Тип настройки файервола: firewall_type="UNKNOWN"
по умолчанию FreeBSD использует правила из файла /etc/rc.firewall. В нем есть несколько готовых шаблонов: open – файервол разрешает прохождение всех пакетов. client – рекомендуется для защиты только этого компьютера. То есть файервол настроен как стандартный клиентский компьютер. Он разрешает все исходящие соединения и запрещает все входящие соединения, кроме соединений по 25 порту. simple – предполагается для настроек простых шлюзов и т. д. То есть в качестве простейшего файервола, защищающего внутреннюю сеть от проникновения извне. Мы будем настраивать более гибкую систему правил, поэтому данный шаблон нами не используется не будет. closed – Разрешается трафик через локальный интерфейс lo0. Прохождение остального трафика определяется правилом по умолчанию. Как правило, это запрет любого доступа, исключая внутренний интерфейс lo0 (попросту говоря, разрешен только доступ «к самому себе») UNKNOWN – запретить загрузку файервольных правил из конфигурационного скрипта по умолчанию. Файервол никак не настраивается. Будет он пропускать трафик или нет, зависит от конфигурации ядра системы. Используется по умолчанию. Эту же переменную в значении «filename» – «имя_файла» – можно использовать для задания собственного конфигурационного файла для файервола. Например: firewall_type="/etc/rc.firewall.newconfig"
будет загружать настройки из созданного файла /etc/ rc.firewall.newconfig. «firewall_flags=””» – служит для передачи дополнительных аргументов при использовании firewall_type со значением filename. Наша задача состоит в том, чтобы создать систему, отвечающую следующим критериям:
администрирование Простота администрирования. Возможность модификации «на лету», незаметно для пользователей. Поэтому такие операции, как разрыв соединений и тем более перезагрузка для нас нежелательны. Гарантия того, что наша система будет работать на большинстве машин. В нашем примере скрипта все компьютеры локальной сети делятся на две условные группы: одна группа привилегированная – это те, кому разрешен доступ в Интернет, используя наиболее употребительные сервисы, такие как: HTTP – порт 80; HTTPS – порт 443; FTP – порты 20, 21 и от 1025 до 65535; SMTP-протокол для пересылки почты – порт 25; POP3-протокол для приема сообщений – порт 110. Есть и другая группа, компьютерам из которой разрешен доступ только к внешнему корпоративному серверу c IP-адресом 83.xxx.xxx.2 (только протоколы SMTP и POP3). Мы должны добиться, чтобы можно было изменять привилегированную группу, что называется, «на лету», по возможности не разрывая установленных соединений. Для этого мы из нашего скрипта вызываем дополнительный скрипт rc.firewall.local.inet. Достаточно отредактировать и перезапустить этот дополнительный скрипт, не затрагивая всех остальных настроек файервола. Дополнительно мы должны предусмотреть ситуацию, когда меняются параметры сети, такие как IP-адрес шлюза провайдера. Для этого мы будем использовать в скрипте локальные переменные. Например, при изменении шлюза по умолчанию достаточно изменить значение переменной intgateway и перезапустить скрипт rc.firewall.run. Вот наш пример скрипта:
/sbin/ipfw add 12960 deny tcp from ${intnet} ↵ to any 20,21,80,443 /sbin/ipfw add 12970 deny tcp from any 20,21,80,443 ↵ to ${intnet} /sbin/ipfw add 12980 deny udp from ${intnet} to any 20,21 /sbin/ipfw add 12990 deny udp from any 20,21 to ${intnet} # # /sbin/ipfw add 13000 allow tcp from ${intnet} ↵ to ${mailserver} 25,110 /sbin/ipfw add 13010 allow tcp from ${mailserver} 25,110 ↵ to ${intnet} # /sbin/ipfw /sbin/ipfw /sbin/ipfw /sbin/ipfw /sbin/ipfw /sbin/ipfw /sbin/ipfw /sbin/ipfw # Deny all /sbin/ipfw
add add add add add add add add
55010 55020 55030 55040 55050 55060 55070 55080
allow allow allow allow allow allow allow allow
tcp tcp tcp tcp udp udp udp udp
from from from from from from from from
any any any any any any any any
to any 1024-65534 1024-65534 to any 1024-65534 to any to any 1024-65534 to any 1024-65534 1024-65534 to any 1024-65534 to any to any 1024-65534
add 65534 deny ip from any to any
Создаем и редактируем скрипт rc.firewall.local.inet для работы с привилегированной группой адресов: # vi /etc/ rc.firewall.local.inet #!/bin/sh intnet="192.168.9.0/24" privgroup={31,32} # /sbin/ipfw delete 12310 /sbin/ipfw delete 12320 /sbin/ipfw delete 12330 /sbin/ipfw delete 12340 # /sbin/ipfw add 12310 allow tcp from ↵
# vi rc.firewall.run #!/bin/sh extip="83.xxx.xxx.xxx" intip="192.168.9.2" intnet="192.168.9.0/24" mailserver="83.xxx.xxx.2" intgateway="83.xxx.xxx.1" # /sbin/ipfw -f flush & # /sbin/ipfw add 180 divert natd ip from ${intnet} ↵ to any out xmit fxp0 /sbin/ipfw add 190 divert natd ip from any to ${extip} # ICMP /sbin/ipfw add 500 allow icmp from any to any # SSH /sbin/ipfw add 10000 allow tcp from any to any 22 /sbin/ipfw add 10010 allow tcp from any 22 to any # DNS /sbin/ipfw add 11000 allow tcp from any to any 53 /sbin/ipfw add 11010 allow tcp from any 53 to any /sbin/ipfw add 11020 allow udp from any to any 53 /sbin/ipfw add 11030 allow udp from any 53 to any # Web FTP /sbin/ipfw add 12000 allow tcp from me to any 20,21,80,443 /sbin/ipfw add 12010 allow tcp from any 20,21,80,443 to me /sbin/ipfw add 12020 allow udp from me to any 20,21 /sbin/ipfw add 12030 allow udp from any 20,21 to me # # Script for the privilege group /bin/sh /etc/rc.firewall.local.inet # Deny other computer of LAN
№12, декабрь 2006
33
администрирование ${intnet}${privgroup} to any 20,21,80,443,1025-65535 /sbin/ipfw add 12320 allow tcp from ↵ any 20,21,80,443,1025-65535 to ${intnet}${privgroup} /sbin/ipfw add 12330 allow udp from ↵ ${intnet}${privgroup} to any 20,21,1025-65535 /sbin/ipfw add 12340 allow udp from ↵ any 20,21,1025-65535 to ${intnet}${privgroup}
В скрипте для изменения состава привилегированной группы необходимо отредактировать переменную privgroup, добавив/удалив в ней номер хоста в локальной подсети. Например, чтобы добавить два компьютера с IP-адресами 192.168.9.33 и 192.168.9.45, нужно записать «privgroup={31-33,45}». Использовать правила типа «/sbin/ipfw delete NNNNN» при старте системы, когда такого правила не было – немножко некрасиво. При попытке удалить несуществующее правило система выдает на консоль сообщение следующего вида: ipfw: rule 13031: setsockopt(IP_FW_DEL): Invalid argument
При этом система продолжает нормально работать. Если все делать строго, то нужно создавать два скрипта: один запускать при старте, второй – при изменениях на ходу. Но тогда нужно будет вносить соответствующие изменения в оба скрипта. Поскольку основная цель – создать простую в администрировании систему, то данной проблемой в нашем случае можно пренебречь.
Зато теперь мы можем после внесения соответствующих изменений просто перезапустить скрипт для привилегированной группы. # /bin/sh rc.firewall.local.inet
Также мы можем вносить изменения и перезапускать скрипт rc.firewall.run, хотя, по замыслу, это нам придется делать гораздо реже, чем в случае со скриптом привелигированной группы. # /bin/sh rc.firewall.run
Поскольку мы написали свой собственный скрипт, обнуляющий существующие правила и запускающий альтернативную конфигурацию файервола, нужно подумать, как его запустить. Во FreeBSD есть замечательный механизм запуска пользовательских программ: файл rc.local. По умолчанию он отсутствует в системе. Раз мы уже создаем данный файл, добавим в него команду запуска демона natd, который отвечает за поддержку NAT. Демон natd запускается из файла rc.conf. (Опять этот файл, поистине он играет ключевую роль для всей системы FreeBSD в целом!) Механизм запуска этого файла из rc.conf выполняется посредством следующих переменных: # -- путь к самому файлу natd natd_program="/sbin/natd" # Разрешить NAT (если firewall_enable == YES) natd_enable="YES" # Внешний интерфейс или IPaddress для использования natd_interface="" # Дополнительный флаги запуска natd natd_flags=""
Но в этом случае мы будем использовать вызов демона natd посредством rc.local. Команда: # vi /etc/rc.local
автоматически создает файл /etc/rc.local и открывает его на редактирование. Добавляем в него следующие строки: # Команда запуска natd /sbin/natd -n rl0 # где «-n rl0» — имя интерфейса, на котором запускается NAT # # И запускаем наш скрипт для установки правил для файервола: /bin/sh /etc/rc.firewall.run
Перезагружаемся и проверяем доступ к нужным ресурсам Интернета с компьютера из локальной сети. 1. Эви Немет, Гарт Снайдер, Скотт Сибасс, Трент Р.Хейн. UNIX. Руководство системного администратора. «BHV», «Питер», 2004 г. 2. Алексей Федорчук, Алексей Торн. FreeBSD. Установка, настройка, использование. BHV, 2003 г. 3. Филипп Торчинский. Практическое пособие администратора UNIX. «Символ», 2003 г.
34
администрирование
В поисках анонимного прокси-сервера
Иван Максимов Вопрос о безопасном серфинге по Интернету поднимался не раз. При использовании для этой цели прокси-сервера возникает вопрос, что лучше: искать прокси или создать свой? Если искать – как быстрее? А если создавать – как проще?
36
администрирование
З
ачастую возникает задача анонимно посетить необходимый ресурс в локальной или глобальной сети. Цели могут быть разные, первое и самое распространенное в работе системного администратора – это тестирование только что настроенной системы авторизации сервера. Второе – анонимно ответить подозрительному человеку по электронной почте, через веб-интерфейс своей почтовой системы. Третье, выполнить просьбу начальства, скрытно посетить сайт конкурирующей фирмы. Четвертое – просто быть уверенным, что, заходя в чат, IRC-канал или форум, нас не распознают. Ситуации бывают абсолютно разные, возникают они не каждый день, но все же бывают. Что тогда делать? Искать по Интернету прокси-лист? Но чаще всего в нем 90% недействующих ссылок. Просить друга администратора дать доступ по ssh-протоколу, и, воспользовавшись lynx или links из консоли, посетить необходимый ресурс? Выход есть всегда, но хорошо иметь под рукой необходимые средства для анонимной работы.
О прокси-серверах Вопрос о безопасном серфинге по Интернету поднимался не раз. Существует множество методов скрыть свой реальный IP-адрес. Рассмотрим известную вам тему – как скрыть свой реальный IP-адрес с помощью прокси-сервера. Самое простое решение – это прокси c веб-интерфейсом (например [1]). Заходим на страницу и в появившемся окне вводим необходимый URL. Метод самый простой, не требуюет даже перенастраивать браузер, но очень часто подобные сервисы, чтобы существовать, зарабатывают на рекламе, которую показывают нам. Кроме простоты использования, данные веб-прокси имеют еще один плюс – они долговечны. Но и минусы очевиды: реклама, невысокая скорость, отсутствие гибкости настроек и смены IP-адреса. Что ж, самое легкое – не значит самое хорошее. В Интернете можно найти сотни списков http-прокси, от простых кэширующих до анонимных с поддержкой шифрования, антивирусной проверкой и «чистыми» логами. Последние, как правило, пользуются большой популярностью, но они не бесплатны. Если необходимо, можно купить пару таких прокси, благо цена на обслуживание в месяц у них колеблется от 1 до 50 долларов, хотя если прокси стоит более 20-30 условных единиц – это не более чем попытка его владельца заработать большие деньги. Что ж, хороший прокси иметь под рукой всегда полезно, но не всякий готов платить деньги, да и анонимность тоже под вопросом (неизвестно где этот прокси расположен). Последний и, на мой взгляд, самый эффективный прокси – это root shell. Имея под рукой собственный сервер на Linux/BSD, мы можем делать с ним очень многое: выбрать саму программу прокси (Squid, oops! и другие), добавить антивирус, отрегулировать кэш и выстроить каскад. При этом все зависит только от нас: обновление антивируса и прокси-сервера, настройка цепочки прокси. Тема настройки шлюзов и прокси-серверов под ОС Linux/ BSD очень хорошо освещена в Интернете, поэтому не будем ее касаться. Рассмотрим два первых вопроса: автоматизация процесса поиска, выбора, проверки прокси и со-
№12, декабрь 2006
Веб-интерфейс CGIProxy
здание собственного cgi прокси-сервера, проанализируем плюсы и минусы.
В поисках анонимных прокси Задав в форме поиска Google ключевую фразу «proxy list», будет выведено «...примерно 45.900.00 для proxy list». Как обработать подобную информацию? Конечно же, столько листов не нужно. У многих есть 5-6 закладок на любимые страницы, где каждый день появляются обновленные списки, но выборка и проверка прокси занимает немалое время, попробуем автоматизировать данную задачу стандартными средствами ОС Linux/BSD. Независимо от того, есть ли у нас страницы-«фавориты» с прокси-серверами или нет, нам понадобятся проксилисты, после сбора их необходимо отсортировать, удалить дубликаты и проверить. Итак, приступим: #!/bin/bash # Переменная счетчик n=1 echo "Всего ресурсов "`wc -l ./site.list` while [ 1 ] do # Текстовым редактором sed построчно читаем файл site.list # и заносим значение в переменную f1=`sed -n ''$n'p' ./sity.list` # Если переменная пуста, что означает конец файла – # выходим из цикла if [ "$f1" = "" ]; then echo "Список обработан" exit 1 fi # Для наглядности выводим каждый раз номер строки # и название ресурса echo "$n $f1" # Считываем информацию с ресурса curl $f1 --user-agent "Mozilla/4.0 (compatible; ↵ MSIE 6.0; Windows NT 5.1)" | ↵ grep -o "[0-9.]\+[0-9.]\+[0-9.]\+:[0-9]\+" >> ↵ proxy.list # Счетчик увеличивается на 1 let "n += 1" done # Количество прокси-серверов до удаления дубликатов echo "Всего найдено"`wc -l proxy.list` cat proxy.list | sort | uniq > proxy.list # Количество прокси-серверов после удаления дубликатов echo "После сортировки осталось"`wc -l proxy.list`
Рассмотрим скрипт подробнее. В файл site.list мы самостоятельно заносим «любимые» ресурсы с прокси-листами (или только что найденные). Например (имена ресурсов вымышлены): http://www.proxy.com
37
администрирование http://www.proxy-list.com/list1.html http://www.proxy-list.com/list2.html http://www.proxy-list.com/listN.html
Желательно занести более 20-30 ресурсов. Утилитой wc подсчитаем строки в файле site.list и выведем их количество для наглядности. Текстовым редактором построчно читаем файл, и утилитой curl выбираем из html-страниц адреса прокси-серверов. При посещении ресурсов лучше задействовать параметр --user-agent, так как некоторые ресурсы не удастся посетить не представившись каким-нибудь популярным браузером. В скрипте приведен пример идентификации браузера Internet Explorer из Windows XP, но это необязательно, например, идентификация Firefox из ОС семейства Linux будет выглядеть так: «Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.7) Gecko/ 20060909 Firefox/1.5.0.7». Утилитой grep сделаем выборку необходимой информации со страницы. Заметьте, что можно сделать выборку и короче, например, так: «[0-9.]\+:[0-9]\+». Но, к сожалению, на страницах может быть много иной, подходящей под данную маску информации (например, «время жизни» прокси), тогда в финальном файле вы увидите много лишних данных. На последнем этапе найдите и удалите дубликаты прокси-серверов в файле proxy.list, с помощью стандартных команд sort и uniq. Все, в конечном файле мы получим «чистый» список прокси-серверов, ос-
Коротко о CGIProxy CGIProxy представляет собой сетевую службу, позволяющую клиентам выполнять запросы к ресурсам сети, скрывая реальные сведения клиента (или проще говоря – анонимный прокси-сервер). Первый релиз скрипта был выпущен 13 августа 1998 г. Проект постоянно развивается, дорабатывается, исправляются ошибки, вводятся новые функции. Последняя доступная версия (на момент написания статьи) 2.1beta15 от 26 октября 2006 года, размер скрипта 455 Кб. Данный cgi-proxy является http, ftp-прокси, может работать по протоколу SSL, доступны средства авторизации, имеет 50 внутренних опций, которые позволяют конфигурировать: cookie (сохранение, просмотр, удаление), обработку скриптов (полное их исключение из страниц, фильтр), листы доступа (доступны как
38
талось их проверить на работоспособ- или нет, был получен не конечный реность. В Интернете можно найти мно- зультат. Поэтому предлагаю вам расжество программ, проверяющих по- смотреть решение с использованием добные списки, но в основном эти про- cgi-прокси. граммы под ОС Windows и не бесплатны (чаще пробные версии весьма ог- Работаем с CGIProxy раниченны). С самого начала было ясно, что для Заметьте, что тестировать прокси- стабильности необходимо иметь свой серверы со своей машины очень неэ- собственный прокси-сервер, но что ффективно, так как мы будем ограни- если свободного доступа на удаленчены пропускной способностью кана- ном ресурсе по протоколу ssh нет? ла. Чтобы не зависеть от сторонних Да и конфигурировать удаленно прокразработчиков, Windows и пропускной си-сервер не всегда бывает удобно. способности нашего канала, восполь- Для подобных задач и существуют зуемся одним из многих on-line-прок- cgi-прокси. Их главное удобство: легси-чекером [2]. кость установки и конфигурирования, Итак, в итоге мы получили список небольшой размер, возможность раборабочих прокси-серверов... или нет? тать удаленно по протоколу http (если Было упомянуто, что файл с сайтами более ничего нет). по возможности должен содержать Рассмотрим ниже один из cgi-прокболее 20-30 ресурсов. Это связано си-серверов, написанный на языке с тем, что многие ресурсы дублируют- Perl – CGIProxy [3]. Итак, закачав скрипт, прист уся по своему содержанию. В моем примере было обработано 32 сайта, най- пим к его установке. Как и любой cgiдено 1532 прокси-сервера, из них пос- скрипт, его достаточно просто помесле удаления дубликатов осталось 325, тить в cgi-bin директорию веб-сервепосле проверки on-line-чекером было ра, и все готово к работе (см. рисунок). найдено рабочих 15, из них закрылись Главное – не забудьте проверить путь через 5 минут 4, остальные – в течение к интерпретатору языка perl, по умолчаса. Возможно, этот метод и резуль- чанию значение равно #!/usr/bin/perl. Из пользовательских опций доступтаты кому-то и подойдут, так как время работы скрипта и чекера достаточ- ны лишь 5: но мало (около 7 минут), можно допол- Remove all cookies – удалять все нительно автоматизировать передаcookie. чу списка на on-line-чекер (тем же са- Remove all scripts – удалять все мым curl, с помощью опций -F или -d), скрипты. но зависеть от удачи и ждать, повезет Remove ads – удаление баннеров. Hide referrer information – скрытие «белые», так и «черные» списки по домеинформации о переходе. нам или IP-адресам), фильтры баннеров Show URL entry form – отобра(опять же обычные списки) и другие пожение/скрытие формы CGIProxy лезные опции. на посещаемых сайтах. Системные требования у скрипта очень скромные: веб-сервер и интерпретатор языка Perl (версии выше 5.6.1). Замечу, что CGIProxy является nph-скриптом (NonParsed Header). Данные скрипты полностью формируют http-заголовок, и веб-сервер не обрабатывает выданные этими скриптами данные, а передает результат браузеру без изменений. Для некоторых веб-серверов указание в начале имени файла «nph-» обязательно, будьте внимательны. Также напомню, что для работы по протоколу ssl необходимо, чтобы на сервере были установлены библиотека OpenSSL и модуль Net::SSLeay (их легко найти в портах/пакетах всех современных Linux/BSDсистем).
Под робнее об опциях расскажу немного позже. Как настраивать скрипт? Ко н ф и г у р и р о в а н и е C G I Prox y не должно вызвать затруднений, ведь это простой скрипт, написанный на Perl. Даже если язык вам плохо знаком, открыв файл любым текстовым редактором, вы увидите в первой части скрипта все 50 параметров (которые являются не чем иным, как переменными) и богатую справку по ним с примерами. Итак, пользовательские опции (см. рисунок) доступны как администратору, так и пользователю. Ес-
администрирование ли скрипт будет использоваться несколькими лицами, рекомендуется убрать данные параметры для посетителей (опция «$ALLOW_USER_CONFIG») по соображениям безопасности. Связано это с тем, что, если пользователь отключит опцию «Remove all scripts», анонимность серфинга уже будет не гарантирована (о чем нас предупреждают на сайте разработчиков) и второй параметр «Hide referrer information» скрывает от посещаемого сайта данные, откуда «мы пришли», если открыть данную опцию, директива HTTP_REFERER в заголовках честно выдаст информацию о наших переходах. Дополнительно для анонимности стоит раскомментировать опцию «$USER_AGENT», так как она отвечает за идентификацию нашей системы. По умолчанию значение равно: «Mozilla/4.05 [en] (X11; I; Linux 2.0.34 i586)», рекомендуется выставить чтото более распространенное и новое. Примеры браузера FireFox на ОС семейства Linux и Internet Explorer на Windows XP были выше, но если хочется экзотики, можно представиться браузером Camino из MacOS X, запись users-agent тогда будет иметь вид: «Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/ 20060911 Camino/1.0.3». Перечисленных изменений для безопасного серфинга достаточно. Изменения в скрипте можно сохранить и хранить его локально, а в необходимый момент выгрузить на хост. Можно использовать CGIProxy и в каскаде, но это не очень удобно. Настройка скрипта достаточно гибкая, множество списков доступа к ресурсам и баннерным сетям позволяет при желании достичь максимальной производительности. Например, для экономии трафика можно включить замену gif-изображения на пустой пиксель 1*1 (параметр $RETURN_EMPTY_GIF). Редактировать текст приглашения и другие сообщения прокси-сервера, как не трудно догадаться, можно прямо в скрипте. Блок сообщений находится в нижней части скрипта, поэтому при необходимости локализация CGIProxy будет очень проста. Несмотря на то что разработчики предупреждают нас о том, что следует
№12, декабрь 2006
CGI:IRC Рассказывая о распространенных cgiскриптах, нельзя не упомянуть о еще одном знаменитом скрипте, написанном на Perl – CGI:IRC [5]. Именно этот скрипт обеспечивает работу многим известным ресурсам («шлюзам в IRC»). Последняя доступная версия на сайте проекта 0.5.9 от 6 июня 2006 года. Этот скрипт, как и CGIProxy, является nph-скриптом, поэтому требования у них примерно одинаковые, за исключением версии Perl, для cgi:irc необходима версия 5.0.4 или выше. Программа в отличие от cgi-прокси-сервера состоит не из одного скрипта, а из 3 основных
отключать обработку скриптов (так как только в этом случае будет гаратирована анонимность), после посещения 5-7 ресурсов проверяющие на анонимность пользователя мне так и не удалось увидеть свой IP, точные данные о ОС и браузере. Проверить «себя» на анонимность можно, к примеру, по ссылке [4]. Итак, в итоге все же был получен стабильный прокси-сервер, легкий в установке, простой и гибкий в конфигурировании. CGIProxy за свою простоту и в то же время за богатство возможностей часто используется на «анонимайзерах», и если внимательно приглядеться на сайт по ссылке [1], мы увидим слегка измененный cgiproxy. Из минусов можно выделить: проблемы при работе скрипта с веб-сервером IIS от компании Microsoft (на сайте проекта описаны возможные проблемы и их решения) и все же существующую затрудненность конфигурирования. Как вы уже, наверное, заметили, по описанию сложно сориентироваться: «где-то наверху», «в нижний части скрипта», к сожалению, когда проект был «молодым», скрипт был небольшим, размером 260 Кб (последняя stable-версия 2.0.1 от 19 ноября 2002 г.), и разобраться в файле не составляло труда, тогда как разыскать нужные опции, параметры, текстовые поля в файле размером 450 Кб уже сложнее и без использования поисковых средств текстового редактора найти необходимые параметры сложно. Возможно, также у кого-то из вас возникнут затруднения с поиском хостинга, поддерживающего Perl, но обратившись в раздел часто задаваемых
(client-perl.cgi, irc.cgi и nph-irc.cgi) и вспомогательных каталогов (в них содержатся картинки, звуки, модули), поэтому, перенося скрипт на веб-сервер, будьте внимательны. Для настройки скрипта отредактируйте файл cgiirc.config (или возьмите его полную версию cgiirc.config.full, но это не столь необходимо), замечу, что при всем разнообразии опций назначение их понятно с первого взгляда (default_port, default_server и другие), благодаря чему настройка не вызывает трудностей. Очень жаль, что в CGIProxy конфигурационный файл также отдельно не вынесен, так было бы намного удобней.
вопросов на сайте CGIProxy, вы можете найти список ресурсов, предоставляющих место под сайт с интерпретатором языка Perl.
Выводы Если выбирать между стабильным и нестабильным решением, стоит опираться, конечно, на первый вариант (с личным cgi-прокси), но исключать вторую возможность (поиска) нельзя. Иметь root shell где-нибудь в Европе с установленным прокси-сервером, конечно, еще намного удобнее, но такая возможность доступна не всегда. Найти простой хостинг, даже без доменного имени, SQL и почтовых серверов, но с интерпретатором языка Perl намного проще. CGIProxy можно с легкостью закрыть, открыть, иметь в запасе 2-3 штуки или просто хранить как запасной вариант, так как у большинства системных администраторов есть доступ к корпоративным страницам, которые легко можно использовать в тестовых целях. В различных ситуациях могут быть различные решения, главное, чтобы всегда был выбор. Удачной работы! 1. http://www.anonymizer.ru – сайт Российского проекта «Anonymizer.Ru – стерильно». 2. http://www.checker.freeproxy.ru/checker – один из Российских Online Prox y Checker. 3. http://jmarshall.com/tools/cgiproxy – официальный сайт проекта CGIProxy. 4. http://prox ydetect.com – проверка на анонимность. 5. http://cgiirc.sourceforge.net – официальный сайт проекта CGI:IRC.
39
администрирование
Организуем работу офисного почтового сервера на платформе Windows
Александр Емельянов Ваше предприятие постоянно набирает обороты, а ваш бизнес всецело зависит от потока электронной почты. Бесплатные сервисы вас не устраивают скоростью и качеством доставки писем, замучил лавинный поток спама, а на эффективные дорогостоящие решения не всегда хватает средств. Не спешите расстраиваться, альтернатива есть.
В
век информационных технологий ни для кого не будет откровением тот факт, что большинство организаций в процессе работы поль-
40
зуются электронной почтой. Цели и задачи могут быть разные, но основная причина ее использования – простота и скорость передачи информации.
Географическое расстояние не имеет значения. Задержки при передаче письма обычной почтой и общее время его доставки никогда не сравнят-
администрирование ся со временем доставки электронного сообщения. Решений для организации электронного документооборота с «внешним» миром и внутри компании существует множество. В их числе почтовые серверы крупных корпораций, а также всевозможные проекты для сегмента SMB (средний и малый бизнес). Ну и, наконец, не стоит забывать про огромное количество бесплатных почтовых сервисов в Интернете. Отбросим гигантов (они способны сами о себе позаботиться) из рассмотрения и направим свой взор на небольшие компании. Попробуем разобраться, что могут себе позволить в этом плане компании среднего класса, а также организации, находящиеся в стадии становления. «Здесь все уже давно решено и прекрасно работает без финансовых затрат», – скажете вы, кивая в сторону Open Source-продуктов, таких как, например, Sendmail. Спорить не стану. Но, предположим, что есть сеть гипотетической организации, работающая под управлением ОС Windows, и в штате нет ни одного сотрудника, знающего принципы работы *nix-систем, а уж тем более Sendmail. Конечно, это не панацея, и для Windows есть почтовые серверы, однако все они не бесплатны и требуют тщательного подхода для установки и настройки. Можно также сослаться на наличие в Интернете бесплатных почтовых серверов, здесь достаточно завести речь о престиже компании, а также о качестве доставки через них электронных сообщений, и этот вариант отпадет сам собой. Сегодня мы рассмотрим недорогой способ организации и настройки почтового домена вашего предприятия.
Предварительная подготовка Задача ясна. Для ее решения нам потребуется следующее: Зарегистрировать виртуальный почтовый домен у интернет-провайдера. Пусть наш домен называется @company.ru. Свободно ли выбранное доменное имя, можно заранее проверить с помощью сервиса whois на www.nic.ru. Завести на сервере провайдера почтовый ящик. Например, company@provider.ru.
№12, декабрь 2006
Рисунок 1. Схема взаимодействия компонентов Office Mail Server
Ус тановить в лока льной сети
почтовый сервер, работающий под Windows, и настроить его. Настроить клиентов в локальной сети для отправки/получения электронных сообщений через этот почтовый сервер. В качестве локального почтового сервера будем использовать Office Mail Server. Он бесплатен, стабилен и невероятно функционален, для его настройки достаточно базовых знаний о принципах работы по протоколам POP3 и SMTP. Стоимость такого решения не выходит за пределы 40-50 USD (не считая ежегодных 20 USD провайдеру за продление регистрации доменного имени и ежемесячных минимальных отчислений за поддержку домена). Основные плюсы такого подхода: нет необходимости выхода пользователей локальной сети в Интернет для проверки электронной почты; не нужно организовывать DMZ и, как следствие, заниматься защитой почтового сервера от внешних угроз. К недостаткам же можно отнести англоязычный интерфейс, отсутствие поддержки протокола IMAP, а также отсутствие возможности подключения к серверу из Интернета, то есть в случае, когда какой-нибудь пользо-
ватель локальной сети работает с ноутбуком, все приходящие для него сообщения, к примеру, на время командировки придется пересылать на бесплатный почтовый ящик. OMS v. 0.8.10 работает на базе Windows 2000/XP/2003 Server (более старые версии – на Windows 95/98/Me) и содержит в себе POP3- и SMTP-серверы, POP3- и SMTP-клиенты, веб-сервер, а также мощный сортировщик, фильтр спама, фильтр IP-адресов клиентов и планировщик сеансов связи. Что касается минимальных требований аппаратной части, то для обработки соединений, скажем, 50 пользователей сети достаточно будет иметь машину на Intel Pentium III с тактовой частотой 500 МГц и запасом оперативной памяти 256 Мб. Объем жесткого диска выбирается прямо пропорционально количеству сообщений, которые будут храниться на самом сервере (к примеру, у меня архив за полгода использования вырос на 2 Гб). Распространяется OMS в zip-архиве, скачать его вы можете адресу http:// www.classcom.by/oms.
Схема взаимодействия компонентов Механизм работы построенной схемы представлен на рис. 1. Сплошными линиями показан поток сообщений, прерывистыми – запросы на установление соединения и организацию транспорта.
41
администрирование
Рисунок 2. С помощью графического интерфейса можно без труда настроить конфигурацию почтового сервера, а также следить за корректной работой служб
Всю работу по реализации транс- если письмо адресовано пользовапорта «Internet – company@provider.ru» телю не нашего почтового домена, и обратно обеспечивает провайдер, напереслать его адресату, используя внешний, указанный в конфигураша же дальнейшая задача – корректно организовать поток почтовых сообщеции, SMTP-сервер. Правила не прений к конечному пользователю и от нетендуют на полноту описания, пого. Получение и отправка сообщений чему – читайте дальше. локального почтового домена выполОсобняком в этой схеме стоят храняется POP3- и SMTP-клиентами. Сообщение, не прошедшее фильтр спа- нилище данных и веб-сервер. По сути ма при работе POP3-клиента, может своей, хранилище – это папка maildrop либо быть оставлено на сервере про- в корневой директории OMS, в которой вайдера, либо удалено без его загруз- временно либо постоянно хранятся все ки с сервера. Экономия входящего тра- проходящие через OMS сообщения. С помощью веб-сервера клиенты мофика налицо. Клиентские приложения взаимо- гут поменять пароль доступа к своему действуют с POP3- и SMTP-сервера- почтовому ящику, а также посмотреть ми для получения и отправки своих список зарегистрированных на сервесообщений. Будет ли разрешено под- ре пользователей. ключение клиента к серверу, контролируется фильтром IP-адресов. Рас- Установка пределением входящей почты по ящи- и первоначальное кам пользователей занимается встро- конфигурирование OMS енный сортировщик. Правила его ра- Распаковываем скачанный архив боты следующие: в удобное место на диске. Процесс на если письмо адресовано пользо- стройки может выполняться через инвателю нашего почтового домена туитивно понятный графический ини такой пользователь существует, терфейс либо посредством внесения положить письмо в его ящик (со- изменений в конфигурационный файл oms.cfg. Мы рассмотрим первый из них. хранить в архиве – опционально); если письмо адресовано пользо- В распакованной папке находятся два вателю нашего почтового домена запускающих сервер файла: oms.exe, и такого пользователя не сущест- который нужен для запуска OMS в кавует, положить письмо в ящик пос- честве службы, и oms_view.exe, слутмастеру (сохранить в архиве – оп- жащий для настройки и диагностиционально); ки работы.
42
Итак, запускаем файл oms_view.exe. Окно управления содержит log-viewer, с помощью которого можно отследить возникающие в процессе работы служб ошибки как в режиме online, так и выбрав старые log-файлы. Здесь же можно настроить варианты работы OMS, указать папку для хранения log-файлов и вносить изменения в конфигурацию. Для настройки заходим «Tools → OMS Сonfiguration» (см. рис. 2). Отмечу, что OMS изначально имеет базовую конфигурацию для пробного старта, поэтому будет лучше, если вы остановите сервер до внесения своих изменений, а затем настроенный OMS запустите как службу. Далее в процессе работы для того, чтобы внесенные изменения вступили в силу, следует их сохранить и перезапустить сервер. Рассмотрим подробнее настройки конфигуратора. General. Настраиваются следующие параметры: имя локального почтового домена (все, что после @); количество суточных log-файлов, которые будет хранить сервер (старые удаляются); адрес, через который будет осуществляться переадресация POP3клиентом сообщений, не предназначенных пользователям локального домена; как правило, на то, что указано в данном случае в поле Отправитель (from:), надеяться не приходится; большинство SMTPсерверов требуют наличия валидного адреса отправителя и не примут к пересылке такие сообщения; в нашем случае можно указать имя company@provider.ru; локальный пользователь, который будет получать все письма, проходящие через OMS (архив), его можно не указывать, если архивация почтового потока не нужна. Здесь же указывается, нужно ли будет пересылать письма для пользователей, не входящих в локальный почтовый домен, через реальный SMTP-сервер. Для этого нужно установить галочку напротив «Relay messages to external user in local domain». Users. Указываются имя пользователя, пароль, псевдоним (alias), краткое описание и размер почтового ящи-
администрирование ка. Указанный псевдоним автоматически прописывается SMTP-клиентом вместо локального адреса пользователя. Для ввода пароля используйте латинские символы и цифры. Schedules. В этом меню настраиваются расписания для запуска POP3и SMTP-клиентов. IP filters. Здесь настраиваются IP-адреса компьютеров или целых подсетей, которым будет разрешен или запрещен доступ к POP3-, SMTPи веб-серверам. По умолчанию настроены разрешающие фильтры для зарезервированных IP-адресов, используемых в локальных сетях. В нашем случае здесь можно ничего не менять. Доступ к серверам запрещается в секции BAN внесением IP-адреса компьютера или целой подсети (для одного компьютера используется маска 255.255.255.255). Sorter rules. Сортировщик писем применяется при настройке POP3-клиента OMS. Основное правило его работы следующее: если поле сообщения (например, to или from) содержит указанную подстроку, то переправить это письмо адресату такому-то. Сортировщиков может быть несколько, также как и POP3-клиентов, поэтому для каждого POP3-клиента можно назначить своего сортировщика. В OMS также имеется возможность использовать внешний сортировщик писем. Директорию, в которой он находится, а также дополнительные параметры можно указать в настройках POP3-клиента. Spam filters. Процесс настройки фильтра сродни настройке правил сортировщика: если поле почтового сообщения содержит указанную подстроку, то удалить сообщение с сервера, не загружая, либо оставить на сервере. Защита входящего почтового трафика от спама – это непрерывный процесс. Здесь нужна особая внимательность и скрупулезность, чтобы не навредить себе же самому. Потому как может возникнуть ситуация, когда указанная в поле, например, to: (кому) подстрока будет содержаться в адресе пользователя нашего почтового домена. Нетрудно предположить, что ни одного сообщения из вне этот пользователь не получит. Вообще фильтр спама вкупе с сортировщиком играют серьезную роль
№12, декабрь 2006
в защите локальной сети от «заразы», имя пользователя и пароль, при искоторая может содержаться в почтопользовании APOP-аутентификавом сообщении, так как все сообщеции пароль отправляется на серния, не предназначенные пользовавер не открытым текстом, а передателям вашего домена, но прошедшие ется хэш пароля и случайной строспам-фильтр, будут переправлятьки, но такой метод поддерживают не все серверы; ся в ящик постмастеру. Это, конечно, в идеале, если какой-нибудь из поль- расписание для запуска клиента; зователей вашего почтового домена используемый фильтр спама; не засветился у спамеров, иначе ему используемый сортировщик, рядом придется поменять адрес электронуказывается список адресов польной почты. зователей, которым будет доставSMTP server. Здесь нужно указать лено сообщение, не переправленпорт и тайм-аут подключения к SMTPное правилами сортировщика, ессерверу, максимальный допустимый ли не указан ни один адрес, оно перазмер сообщения, которое может реправляется постмастеру; пройти через этот SMTP-сервер, мак- максимально допустимый размер симальное количество сессий, а таквходящего сообщения, если сообже выбрать фильтр IP-адресов, для кощение превышает этот размер, скаторых будет разрешен либо запрещен чивается только заголовок, а тедоступ к серверу. Отметив галочкой ло заменяется сообщением OMS, «Enable connections from all IPs, but …», по умолчанию значение равно 0, что означает отсутствие ограничений; вы тем самым запретите отправку почты для компьютеров, указанных в спис- количество сообщений, после заке BAN выбранного фильтра IP-адрегрузки которых необходимо засов, позволив получать и отправлять пускать сессию к лиента занопочту в рамках локального почтовово, этот параметр полезно указыго домена. вать при наличии некачественноСписок параметров для настройго соединения, по умолчанию – 0 (все скачивается за одну сессию). ки POP3- и веб-серверов одинаков. Нужно выбрать порт и тайм-аут подключения, максимальное количество Запуск в работу сессий, а также необходимый фильтр В конечном итоге мы получили наIP-адресов. строенный почтовый сервер. Запуск SMTP client. Обеспечивает транс- его в качестве службы произведем копорт почты от SMTP-сервера OMS мандой «\oms.exe /install». После этов Интернет. Поэтому здесь необходи- го в корневом каталоге OMS будет сомо указать имя SMTP-сервера провай- здан файл oms.cfg.dump, который будера, например, smtp.provider.ru, порт дет указывать, какая конфигурация и тайм-аут подключения к этому серве- используется для работы. Построенная нами схема доступру, имя пользователя и пароль для авторизации на сервере, а также распи- на в понимании, проста в настройке сание, по которому SMTP-клиент бу- и обеспечивает достаточный уровень безопасности (особенно если у продет запускаться. POP3 client. Таких клиентов в от- вайдера стоит мощный фильтр спаличие от SMTP-клиентов может быть ма). Стоит отметить, что это не единснесколько. твенный способ применения Office Mail Определяемые параметры: Server. Все зависит от полета фантазии, светлой головы и «прямых» рук того, имя POP3-сервера провайдера; кто собирается его использовать. порт и тайм-аут подключения;
43
администрирование
MeTA1: почтовый сервер на новый лад Сергей Супрунов Мы уже привыкли к «великолепной четвёрке» – Sendmail, Postfix, Exim, qmail – на рынке открытых серверов электронной почты. Sendmail хоть и занимает первую строчку «хит-парада», всё же неуклонно теряет свои позиции. Но команда разработчиков, похоже, не собирается так просто сдаваться...
Зачем нужен «ещё один» Sendmail? Основным недостатком «старичка» Sendmail, который сразу же упоминается, как только речь заходит о сравнении различных почтовых серверов, является его монолитная архитектура. Размещение всего функционала в одном двоичном файле, безусловно, тянет за собой целую массу проблем: и не слишком эффективное расходование ресурсов; и неустойчивость системы в целом, когда ошибка в одном компоненте может привести к полной неработоспособности сервера; и сложность разработки... Также редко кто забывает о «дырявом» прошлом этого пакета, по инерции интерполируя это и на настоящее, и даже на будущее. Ну а сложность настройки – это вообще притча во языцех, хотя типовая настройка Sendmail уже очень давно занимает лишь десяток-другой простых и, что называется, интуитивно понятных строк в mc-файле. Можно долго спорить о том, насколько серьёзны эти недостатки (и недостатки ли это вообще), но понятно одно – «имидж» Sendmail на данный момент не слишком хорош, особенно среди начинающих системных администраторов, и как бы разработчики ни старались улучшать этот пакет, на него всё равно смотрят искоса. Необходимость избавиться от этой «кармы» ощущают, видимо, и сами разработчики Sendmail, и в результате они во главе с Клаусом Асманом решили пойти на «реинкарнацию» – создание практически с нуля нового пакета, на новых принципах, учитывая предыдущий опыт и стремясь исправить проблемы, присущие нынешним версиям Sendmail.
44
Таким образом, на свет появился основополагающую цель не повлияSendmail X, недавно переименованный ла, так что сказанное выше справедв MeTA1. В качестве основных требо- ливо и для MeTA1. На данный момент ваний к разрабатываемой системе де- он не поддерживает функции модикларируются: фикации сообщений, однако для буду полная поддержка RFC2821 и ряда щих версий такая возможность не исрасширяющих стандартов; ключается. О с н о в н о е о тл и ч и е M eTA1 о т надёжность, исключающая потерю Sendmail – его модульность. Подобсообщений; гибкость, позволяющая заменять но Postfix и Qmail, этот пакет состоит различные компоненты системы, из нескольких взаимодействующих наращивать функциональность компонентов, каждый из которых реи т. д. без необходимости перестра- шает свою отдельную задачу и работаивать весь пакет; ет с правами своего пользователя. Это повышает устойчивость пакета масштабируемость, т.е. способность наращивать производитель- к ошибкам в той или иной подсистеме, ность (почти) пропорционально а также поднимает общий уровень беувеличению вычислительной мощ- зопасности пакета – за счёт разграниности оборудования; чения прав доступа взлом одной подсистемы не оказывает столь сильно расширяемость; удобство сопровождения, выра- го влияния на сервер в целом. Прижающееся в соблюдении опре- чём нужно заметить, что все програмделённых стандартов кодирования, мы, кроме MCP, реализованы с поддечто позволит сторонним разработ- ржкой многопоточности. На рисунке представлена струкчикам без труда разобраться в исходных текстах и при необходимос- турная схема MeTA1. Входящие сообти внести в них те или иные изме- щения обрабатываются программой smtps (SMTP-сервер), в задачи котонения; портируемость, т.е. возможность рой входит приём входящих сообщебез существенных модификаций ний и их помещение в очередь. Взаипереносить пакет на различные модействующий с SMTP-сервером, мопрограммные и аппаратные плат- дуль SMAR (address resolver) выполняформы. ет «прогон» адресов получателя и отправителя по базам access, aliases, mailertable и т. д. В его же юрисдикА что внутри? MeTA1 объявлен как агент пере - цию входит и реализация «грейлисдачи сообщений (message transfer тинга», о которой чуть подробнее чиagent, MTA). Как сказано на домаш- тайте дальше. Очередь представляет собой неней странице «родительского» проекта (http://www.sendmail.org/sm-X), сколько хранилищ. Содержимое пиSendmail X нацелен на то, чтобы стать сем, включая информацию заголовэффективным и безопасным почто- ков, помещается на диск в так назывым шлюзом. Смена названия на эту ваемое хранилище контента (CDB);
администрирование информация конверта входящих сообщений (передаваемая в командах MAIL и RCPT в процессе SMTP-диалога) попадает во входящую очередь, размещаемую в оперативной памяти (IQDB), и дублируется на диск в так называемое «резервное» хранилище (IBDB). Управляет очередью программа qmgr (менеджер очереди). Если сообщение должно быть передано удалённому получателю, то данные его конверта перемещаются в активную очередь (AQ), которая периодически обрабатывается планировщиком менеджера QMGR. Когда планировщик принимает решение об отправке данного сообщения, его содержимое из CDB вместе с «конвертной» информаСтруктура MeTA1 цией передаётся SMTP-клиенту (проВторое заметное изменение – торыми он будет запускаться... Пожаграмма smtpc). Если отправка завершается успешно, информация конвер- формат конфигурационного файла. луй, это понятнее и удобнее в работе, та передаётся в IBDB для протоколиро- Он стал «Си-подобным» (популярный чем различные «фичи» и «опции» привания, а само сообщение из CDB уда- ныне XML-синтаксис Асмана, видимо, вычного нам mc-файла. Таким же образом задаются наляется. В случае ошибки сообщение не вдохновил), и в нём для каждой под(точнее, конверт плюс некоторая слу- системы задаётся своя «подконфигу- стройки для остальных модулей: smtpc, жебная информация) переносится на рация». Все настройки сосредоточены qmgr, smar... По умолчанию устанавлидиск в очередь отложенных сообще- в файле /etc/meta1/meta1.conf. В нём вается вполне работоспособная конний (DEFEDB), и попытки повторной можно задать глобальные парамет- фигурация; подробности по тем или отправки предпринимаются позже – ры (такие, как имена коммуникацион- иным параметрам вы всегда сможете как только сообщение «отлежится» ных сокетов для взаимодействия час- найти в README-файле. Кстати, MeTA1 позволяет очень в DEFEDB определённое время, плани- тей системы) и секции параметров отдельных модулей. Например, так за- просто запустить несколько однотипровщик вновь переносит его в AQ. Координацией работы всех моду- даётся конфигурация SMTP-сервера ных модулей с различными параметрами, для чего достаточно задать нелей занимается менеджер MCP, кото- по умолчанию: сколько «именованных» секций для сорый, собственно, и превращает всю эту smtps { ответствующего модуля: россыпь отдельных программ в едиlog_level = 11; ное целое. log { facility=mail; ↵ ident="smtps"; } smtps SERV1 { ... } На данный момент в пакет MeTA1 CDB_gid = 262; smtps SERV2 { ... } не включены агенты локальной доwait_for_server = 4; listen_socket { type=inet; ↵ Например, таким образом можно ставки (LDA) и submission-агент (MSA). port = 25; } организовать работу сервера на разНо для построения полнофункциональstart_action = pass; pass_fd_socket = smtps/smtpsfd; личных портах (в «дефолтном» файной системы, способной взаимодейсuser = smxs; ле конфигурации показан пример затвовать с локальными пользователяpath = "/usr/local/libexec/smtps"; arguments = "smtps -f ↵ пуска двух экземпляров сервера – ми, необходимый функционал можно /etc/meta1/meta1.conf"; один как MTA на 25-м порту, другой – обеспечить сторонними программа} на порту 587). ми, совместимыми с Sendmail. НаприОтмечу ещё некоторые новшесЗдесь задаются параметры протомер, в качестве LDA вполне можно использовать procmail (в каталоге contrib колирования работы модуля (первые тва. Например, MeTA1 намного проархива исходных текстов MeTA1 мож- два параметра), номер группы для до- ще заставить работать в chroot-окруно найти пару патчей для эффективной ступа к CDB, информация о прослу- жении. Хотя если учесть, что с прашиваемом сокете, имя пользователя, вами суперпользователя теперь раработы по протоколу LMTP). Для обработки исходящих сообще- путь к «бинарнику», параметры, с ко- ботает лишь mcp, прослушивающий ний требуется либо клиент, умеющий ности... В конце 2006 года ветвь 1.0 быработать непосредственно по прото- Версии MeTA1 колу SMTP, либо сторонняя MSA-про- Sendmail X 0.0.0.0 увидел свет 30 октяб- ла выделена в «отдельное производсграмма (например, в этой роли может ря 2005 года. Буква «X», видимо, наме- тво», получив наименование MeTA1. На моработать Sendmail; можно найти и от- кала на то, что этот пакет вполне может мент написания статьи текущей была вердельные программы на эту роль, такие со временем стать версией Sendmail 9 сия 1.0.PreAlpha12.0, вышедшая 11 ноября или Sendmail 10, в зависимости от готов- 2006 года. Сайт проекта – www.meta1.org. как mini_sendmail).
№12, декабрь 2006
45
администрирование Документация Метод «научного тыка», безусловно, один из самых популярных и порой даже весьма эффективен, но всё же лучше иметь под рукой официальное руководство. Man-страницы помогут быстро окинуть взглядом основные ключи запуска той или иной программы, входящей в пакет. В дистрибутиве их 7: meta1(8),
Несмотря на раннюю версию, никаких проблем ни с компиляцией, ни с установкой не возникло – инсталляция прошла безошибочно и на FreeBSD 6.1, и на моей домашней Ubuntu 6.06. Единственный момент, о котором нужно не забыть, – это то, что вам предстоит вручную сформировать требуемую «инфраструктуру», в частности, создать учётные записи необходимых для работы пользователей и соответствующие группы. Используйте для этого принятые в вашей системе инструменты; результат должен быть таким:
meta1.conf(5), mcp(8), qmgr(8), smar(8), smtpc(8) и smtps(8). Но всё же основным источником информации на данный момент остаётся файл README. В дистрибутиве он поставляется в самых различных форматах – txt, pdf, html, tex и т. п. Найти его (наряду с др-угими документами) можно на домашней странице проекта – www.meta1.org.
25-й порт (он относится к привилегированным), это кажется несколько излишним, но в ряде случаев может оказаться полезным. В MeTA1 появилась «родная» поддержка TLS и SASL. По умолчанию эти функции включены при сборке, но при желании вы можете их и отключить. Сохранилась концепция почтовых фильтров (milter), здесь они именуются policy milters (pmilters). К услугам сторонних разработчиков – всесторонний API, позволяющий воспользоваться всеми функциями фильтров. В дистрибутиве в каталоге contrib можно найти несколько примеров milter, в том числе и для работы со SpamAssassin. По сравнению с Sendmail, в MeTA1 расширились средства борьбы со спамом. В частности, появилась встроенная поддержка технологии «серых списков» (greylisting) – раньше она реализовывалась с помощью программ сторонних производителей, таких как milter-greylist. Правда, нужно заметить, что сделана она несколько «лениво» – вместо триплетов «IP-адрес/отправитель/получатель» учитывается только IP-адрес, который может иметь один из трёх статусов: unknown – если он ранее не встречался или его «срок годности» истёк; greylisted – если соединение с этого IP-адреса было отклонено с временной ошибкой и фильтр ждёт повторного соединения через определённый интервал времени; whitelisted – если повторная отправка с данного адреса была выполнена спустя требуемое время. Настройки грейлистинга задаются в конфигурации модуля SMAR (помимо различных временных интервалов здесь можно задать и IP-маску, позволяющую считать «совпадающими» все IP-адреса, входящие в заданную подсеть). Кстати говоря, здесь же, в секции smar, задаются и параметры DNSBL – более привычной для администраторов Sendmail технологии противостояния спаму.
Лучше один раз попробовать...
# grep smx /etc/passwd meta1s:*:260:260:meta1 SMTPS:/nonexistent:/sbin/nologin meta1q:*:261:261:meta1 QMGR:/nonexistent:/sbin/nologin meta1c:*:262:262:meta1 SMTPC:/nonexistent:/sbin/nologin meta1m:*:263:263:meta1 misc:/nonexistent:/sbin/nologin meta1:*:264:264:meta1 other:/nonexistent:/sbin/nologin
# grep smx /etc/group meta1s:*:260: meta1q:*:261: meta1c:*:262:meta1s meta1m:*:263:meta1s,meta1q meta1:*:264:
Если в вашей системе есть утилита getent, то для доступа к информации, хранящейся в административных базах, правильней будет использовать её. После этого основные операции установки выполняются стандартным образом: распаковка архива с исходниками, переход в полученный каталог, конфигурация (сценарию configure, как обычно, можно передать ряд параметров, влияющих на поддержку тех или иных функций, таких как SASL или BDB; подробности см. в документации), сборка, инсталляция. Но, поскольку мы имеем дело с достаточно ранней версией, после сборки рекомендуется выполнить тесты: $ make check
В файле README указывается на некоторые «типичные» ошибки. Например, одна из них – t-hostname – возникает, когда не удаётся определить полное имя хоста (full qualified host name, FQHN). Если вы тестируете MeTA1 на машине, которой не требуется такое имя, то чтобы не получать ошибку, просто внесите в /etc/hosts что-нибудь похожее на FQHN: 127.0.0.1 localhost toshiba toshiba.notebook.my
После этого все тесты должны пройти нормально (у меня Посмотрим на практике, что же из себя представляет время от времени проскакивала ошибка t-dns-1, но на неё MeTA1 – на примере версии 1.0.PreAlpha12.0. Очевидно, можно не обращать особого внимания – она лишь говочто на данном этапе разработки речь не идёт ни о преком- рит о том, что некоторые DNS-запросы не «уложились» пилированных пакетах, ни даже о присутствии этой про- в отведённые для них по умолчанию интервалы времени). граммы в коллекции портов. Так что единственный способ Теперь осталось завершить установку: «пощупать» это творение Клауса Асмана – сборка из ис$ sudo make install ходных текстов.
46
администрирование По умолчанию все конфигурационные файлы будут со- тественно, всегда можно подправить в конфигурационсредоточены в каталоге /etc/meta1. Если вам доводилось ном файле): работать с Sendmail, то из «старых знакомых» сразу пос$ cd /var/log ле инсталляции вы встретите здесь лишь файл псевдони$ ls -l mail.* мов – aliases. Остальное – access, mailertable и т. д. – при не-rw-r--r-- 1 root root 2480 2006-11-16 21:13 mail.err обходимости придётся создавать вручную. Для быстрого -rw-r--r-- 1 root root 6237 2006-11-17 20:30 mail.info -rw-r--r-- 1 root root 6237 2006-11-17 20:30 mail.log и лёгкого создания хэш-таблиц для этих файлов предус-rw-r--r-- 1 root root 3105 2006-11-16 21:13 mail.warn мотрен Makefile, то есть после внесения изменений достаОдна из наиболее вероятных причин проблем с запусточно лишь выполнить команду make. Все необходимые для работы каталоги (в частнос- ком (обычно о ней свидетельствуют массовые записи типа ти, очередь, которая будет размещена по умолчанию «Permission denied») – ошибки в создании учётных записей в /var/spool/meta1) должны быть созданы автоматически нужных пользователей и групп. Например, это может быть в процессе инсталляции. Так что уже можно попробовать вызвано неверно установленным UID или отсутствием нужзапустить сервер. ного пользователя в «чужой» группе (например, meta1s долСтартовый скрипт размещается по умолчанию в доволь- жен входить помимо своей группы meta1s также и в групно непривычном месте – в /var/spool/meta1, там же, где и оче- пы meta1m и meta1c). Наличие пользователей, кстати говоредь. Называется он mcp.sh и принимает в качестве пара- ря, можно проверить с помощью входящего в дистрибутив скрипта misc/sm.check.sh: метра команды start, stop и restart. Им и воспользуемся: # cd /var/spool/meta1 # ./mcp.sh start
Никаких сообщений о результате этой операции вы на консоль не получите, и лишь обнадёживающий шелест головок жёсткого диска подскажет вам, что ваша команда принята к исполнению. Убедиться в том, всё ли запустилось, можно, просмотрев список запущенных процессов:
$ cd meta1-1.0.PreAlpha12.0/misc $ ls -l mail.* ./sm.check.sh: pre-installation check successful
Правда, он не проверяет вхождение пользователей в нужные группы, так что об этом вам придётся позаботиться самостоятельно. Если придётся подправлять права доступа к уже созданным файлам и каталогам, сверьтесь с файлом README, где подробно расписано, что ко# ps axouser,command | egrep "mcp|qmgr|smtp|smar" му должно принадлежать и с какими правами. Нужно заметить, что MeTA1 более строго относится root /usr/local/sbin/mcp -l -p mcp.pid /etc/meta1/meta1.conf meta1m smar -f /etc/meta1/meta1.conf к стандартам. Например, во время SMTP-сеанса такой вольmeta1q qmgr -f /etc/meta1/meta1.conf ности, как «mail from: user@server.ru» он не допустит, ругmeta1c smtpc -f /etc/meta1/meta1.conf meta1s smtps -f /etc/meta1/meta1.conf нувшись про «501 5.1.7 Bad sender’s mailbox address syntax». Адрес должен непременно быть в виде <user@server.ru>, Как видите, с правами root исполняется только «дис- причём пробел между двоеточием и открывающей углопетчер» mcp (другие модули вы и не сможете запустить вой скобкой не допускается. от имени суперпользователя). Но ему по-другому и нельзя – Для адреса отправителя (точнее, для его доменной часон должен иметь достаточные права для работы на приви- ти) выполняется разрешение имени, и в случае неудачи адлегированном порту. Ключ -l указывает на то, что работа рес не принимается. Для адреса получателя такая проверсервера будет протоколироваться (по умолчанию исполь- ка не выполняется. В остальном типичный SMTP-сеанс с сервером будет зуется syslog); -p сообщает имя pid-файла (опять-таки размещаемое в /var/spool/meta1; хотя может так и удобнее, ког- выглядеть как обычно, не считая того, что текстовые поясда всё, относящееся к работе почтового сервера, сосредо- нения даются, скорее, в порядке соблюдения формальносточено в одном месте). Последним параметром передаёт- тей, а не для того, чтобы действительно что-то пояснить тося полный путь к основному конфигурационному файлу. му странному пользователю, который надумает поработать При желании эти ключи можно изменить непосредственно с SMTP-сервером через telnet. в mcp.sh (никто не мешает вам создать свой сценарий запуска или даже вызывать программу mcp вручную). Ждём релиза Остальные программы пакета работают с правами Итак, на данный момент MeTA1, несмотря на очень скромсвоего отдельного пользователя. Они запускаются моду- ный номер версии и альфа-статус, уже выглядит весьма лем mcp, так что вам об этом беспокоиться не нужно. Пе- достойно. Во время небольшого тестирования каких-либо редаваемые параметры при необходимости можно подпра- ошибок и сбоев выявлено не было. Хотя на «боевой» сервить в meta1.conf. вер я пока что ставить этот пакет повременю. Если что-то пойдёт не так, то первым делом загляните Задумка разработчиков понятна – опираясь на собсв лог-файлы. Поскольку MeTA1 по умолчанию протоколи- твенный опыт и опыт конкурирующих SMTP-серверов, вобрует свою работу, используя syslog, то имена и состав лог- рать в пакет всё самое лучшее и, по возможности, исклюфайлов будут определяться настройками в /etc/syslog.conf. чить любые недостатки. Пока что промежуточный результат В Ubuntu это четыре файла в /var/log (хотя фактически три, выглядит неплохо. Что получится в итоге – увидим. Я личпоскольку mail.info и mail.log дублируют друг друга, что, ес- но с нетерпением жду первого релиза.
№12, декабрь 2006
47
администрирование
Делимся впечатлениями о дистрибутиве Linux XP Desktop
Дмитрий Шурупов Минувшей осенью российская компания LINUX-ONLINE выпустила обновление к своему Linux-дистрибутиву Linux XP Desktop – 2006 SR2, напомнив сообществу о своих оригинальных подходах к Linux-бизнесу.
Идеологический вызов рые им видятся неудобными для мар- speech», UNIX-way и т. п.), разработLinux XP Desktop – тот случай, когда кетинга. В частности, в манифесте за- чикам удалось добиться своего. Бропрежде чем приступить к непосредс- является, что для десктопов «UNIX-way сив идеологический вызов стороннитвенному описанию дистрибутива мертв, а Windows-way победил», «пов- кам Свободных идей, компания со(пусть разработчики Linux XP и не хо- семестная доступность исходных ко- здала конкурентоспособное решетят называть свой продукт «дистрибу- дов непродуктивно умножает число ние на базе GNU/Linux и проприетартивом», а предпочитают позициониро- программ и раздробляет Linux-сооб- ных разработок. Разумеется, со своей вать его как «готовое решение», я счи- щество» и «в Linux необходима силь- спецификой, своей аудиторией и свотаю более чем уместным именно такое ная коммерческая составляющая». ими целями, но от этого проект только общепринятое определение), предлаМногие, наверное, полагали, что из- выигрывает на фоне множества одногаю разобраться с тем, как смотрят за такой смелой идеологии, способной образных и бесперспективных любина мир свободного и открытого про- довести до состояния гневного кипе- тельских дистрибутивов, продолжаюграммного обеспечения авторы проек- ния мозг любого в той или иной мере щих плодиться неразумными темпата. Идеология, которой придерживают- фанатичного члена FOSS-сообщест- ми. А вот насколько получится таким ся в LINUX-ONLINE, идет вразрез мно- ва, проект вскоре самостоятельно ка- образом приблизиться к «потрясаюгим широко принятым в сообществе нет в Лету. По принципу «нечего ру- щим результатам», заявленным в мапредставлениям о таких ключевых ве- бить сук, на котором сидишь». Одна- нифесте, покажет время. Мы же посщах, как GNU GPL, Linux и Open Source. ко практика (пока?) показывает обрат- мотрим на то, что есть сейчас. Дебютируя, компания получила много ное: Linux XP Desktop здравствует, разкритики в свой адрес, однако от ради- вивается и активно внедряется (при- Общее о дистрибутиве кальных взглядов не отказалась. чем, что еще удивительнее, не только Linux XP D esk top о с н о в ы в ае тс я Для того чтобы понять, чем было на территории России). на Fedora Core, что, как гласит надвызвано возмущение сообщества, доВ общем, невзирая на предсказу- пись на коробке, гарантирует «полную статочно бегло ознакомиться с «Мани- емую реакцию со стороны всех, кто совместимость с мировым лидером – фестом Linux XP Desktop» [1], где ав- убежден в необходимости строгого Red Hat Linux». Хотя и заявлена совторы легко и непринужденно крити- следования распространенным в со- местимость с Fedora Core 4 и 5, веркуют привычные аспекты FOSS, кото- обществе принципам («free as in free сии входящего в состав дистрибутива 48
администрирование программного обеспечения зачастую соответствуют FC3. Например, в качестве графической среды по умолчанию используется не совсем актуальная на сегодняшний день версия GNOME – 2.8.0. При этом дистрибутив является коммерческим продуктом и продается вместе с уникальным серийным номером. Регистрацию копии рекомендуется проводить следующим после установки шагом, и это требует наличия доступа в Интернет (хотя и необязательно для машины, на которую ставится система: операцию можно выполнить с любого компьютера через сайт разработчиков). Linux XP распространяется в нескольких редакциях: Start Edition (1 установочный CD с Linux XP Desktop), Professional (5 CD, помимо устаноСтандартный рабочий стол Linux XP Desktop вочного это «Additional Software», «GamePack», «Developer Studio», сложной задачей даже для новичков, поминающий Windows XP, а тщательно «HomeMedia»), Ultra (2 DVD со множес- и Linux XP это в очередной раз под- стилизованный под привычный пользователям продукции Microsoft интертвом дополнительных пакетов из раз- тверждает. Стоит отметить подробные описа- фейс. Выражается это и в стандартной личных общедоступных репозитариев ния происходящего на русском (с ре- теме, и в иконках «Компьютер», «ДоFedora Core). Базовый образ Linux XP можно комендациями, что и как делать), со- машний каталог» и «Корзина» на раскачать [2], а коробку с редакцией провождающие каждый шаг установ- бочем столе, и особенно до боли знаProfessional купить, например, в Линукс- ки, а также полную предрасположен- комой кнопкой «Start» на панели в нижность к русскоязычным пользовате- нем левом углу. Причем меню, вызыЦентре [3] или в магазине ИДДК [4]. лям в плане настроек по умолчанию ваемое этим «Пуском», тоже было пе(что логично). реработано с тем, чтобы вызвать наЗагрузка и установка именьший конфуз у не подготовленПервая загрузка с установочного комного к любым новшествам человека, пакт-диска приветствовала меня вов- Система как она есть се не красочной и дружелюбной за- После перезагрузки, последовавшей впервые запустившего не Windows. ставкой GRUB, как логично было бы за последним этапом инсталляции, Все иконки и соответствующие элеожидать... А позиционированным система встретила уже более адек- менты не должны вызвать удивления не самым лучшим образом на экра- ватным GRUB (небольшое смещение у тех, кто привык, что в самом низу не приглашением «boot:» с фрагмен- видимой части экрана пропадало при обязательно располагается вариант том белого фона. И, собственно, все – нажатии любой клавиши для вызо- с функцией завершения работы, чуть как пользоваться какими-либо допол- ва меню, а фон приобрел фирменный выше – последние открытые докуменнительными опциями и есть ли они во- оттенок синего). Удивило, что загруз- ты, затем выполнение произвольных обще, не узнать. Впрочем, не такая ка системы осуществлялась в консоль- команд из консоли, поиск по файлам уж это и помеха: банальное нажатие ном режиме: следуя идеологии, зало- и так далее. Принцип упрощения и «подведена <Enter> инициализировало процесс женной в Linux XP, это, по-моему, нелогично: зачем пользователю смотреть ния под привычное» затронул и многие установки. Стартовавший инсталлятор встре- на такое обилие «странной» информа- другие аспекты системы – собствентил уже дружелюбно, «на уровне». ции? Да, основная часть сообщений но, это и есть «изюминка» дистрибуОн представляет собой полностью ру- переведена на русский язык, но во- тива. «Подведения», например, удоссифицированную версию Anaconda, первых, не все, а во-вторых, очевидно, тоились и системные апплеты в трее, которая давно служит верой и прав- целевой аудитории привычнее было бы такие как сетевые подключения и надой дистрибутивам Red Hat и ее про- наблюдать за процессом в графичес- стройка звука, в которых при вызоком режиме (например, как это сейчас ве конфигурации вызываются утилиизводным. ты, внешне полностью напоминаюИспользуется Anaconda или нет, происходит в Ubuntu Linux). Стартовал gdm, не спросив ни ло- щие аналоги в Windows, но оставаясь а установка среднестатистической GNU/Linux-системы (особенно если ее гина, ни пароля, и вскоре взору пред- при этом вполне «линуксовыми». Интене классифицируют как «ОС для про- стал... вообще-то, конечно, GNOME, ресный получился гибрид, но главное – фессионалов») давно перестала быть но своим внешним видом не просто на- достойно функционирующий.
№12, декабрь 2006
49
администрирование
Панель управления Linux XP
В трее и в меню «Star t» можРабота в системе осуществляется с правами суперпользователя root, но легко найти «Панель управления для которого даже не нужно вводить Linux XP». То, что я увидел после его пароль при загрузке системы. Несом- запуска, вновь напомнило мне об ананенно, это повергнет в шок заботя- логичной панели в известной операщихся о безопасности линуксоидов. ционной системе, но нельзя сказать, Однако это прямое и логичное следс- что удивило или расстроило. Наоботвие заявленного подхода разработ- рот, зрелище предстало ожидаемое чиков к созданию своего Linux-продук- и на первый взгляд впечатляющее – та: десктоп-пользователю нужна сис- «все как там». Все разбито на 6 главных категотема, которая «просто работает». Получается, что и развитый многополь- рий: внешний вид, оборудование, сеть, зовательский режим, обеспечивае- язык и стандарты, пользователи, примый на уровне ядра ОС, по-хорошему ложения. В каждой из них собраны все тоже не нужен... подходящие утилиты: как сторонние Хоть в последнее время GNU/Linuxсистемы и достаточно успешны в поддержке различной аппаратуры, отдельно отмечу, что у меня никаких проблем с железом не возникло. В частности, установленная система воспроизводила звук, позволяла без задержки смотреть видео и играть в трехмерные игры. К этому стоит добавить, что аналогично «из коробки» проинсталлировались наиболее часто используемые кодеки (аудио и видео).
вроде gnome-pilot для «обмена с КПК Palm» в разделе «Оборудование» и system-config-network для «настройки сети» в разделе «Сеть», так и собственные вроде «активации» и «добавления и обновления программ» в секции «Приложения». Несмотря на кажущийся сумбур в плане совершенно разнородных приложений (родные от проекта GNOME, конфигураторы от Red Hat, свои разработки на Java), надо признать, что если при работе со всем этим, может, и не захлестывает всепоглощающее чувство целостности системы администрирования, то во всяком случае не возникает неприязни или чувства неудобства. Конечно, есть что доработать и усовершенствовать, но все не так плохо, как можно было ожидать. Обновление системы проходит просто и быстро. Уже упомянутый мастер установки/обновления программ первым шагом предлагает выбрать, что будет устанавливаться: дополнительное ПО или обновления компонентов системы. Соответственно, после выбора второго варианта и двукратного нажатия на «Далее», ожидания закачки и установки необходимого ПО проблема со шрифтами решилась. Правда, немного расстроило требование перезагрузить компьютер для того, чтобы обновление возымело действие (ведь рестарта X-сервера должно хватать?). Этот момент напомнил о том, что, как бы кто ни старался, по-
Панель управления Повод познакомиться с панелью управления у меня появился быстро: первый видимый недостаток – это некрасивые русские шрифты по умолчанию, а в памятке пользователю, прилагающейся к коробке, сообщалось, что эта проблема решается обновлением системы.
50
Приложения для работы со звуком в Linux XP
администрирование мимо лучших черт у любого проекта можно перенять и не самые сильные его стороны. Просто не надо слишком увлекаться... Пакеты для такого обновления системы берутся с родного сервера Linux XP, и возможности указать альтернативные репозитарии я не увидел. Хотя в конфигурации yum (/etc/ yum.repos.d/lxp.repo) заданы пути к зеркалам с обновлениями к Fedora Core (кстати, версии 3).
Программное обеспечение Вероятно, следуя своему манифесту («... конечному пользователю не нужно несколько десятков «почти работающих» программ, ему нужна одна, но работающая на 100% ...»), разработчики постарались оставить в Linux XP Desktop только самые необходимые Интернет-ПО в поставке Linux XP пользователю настольного ПК и самые зрелые на их взгляд программы. Впрочем, вопрос, насколько кардинально это решение отличает их от авторов многих других десктоп-ориентированных Linux-дистрибутивов, оставлю в стороне. Linux XP Desktop 2006 SR2 базируется на Linux-ядре 2.6.15 (в этом он соответствует Fedora Core 5). С упомянутой средой GNOME 2.8 в минимальную поставку дистрибутива входят: традиционный системный браузер Nautilus (2.8.1), 2-панельный файловый менеджер GNOME Commander и набор стандартных утилит вроде менеджера архивов File-roller, калькулятора Gcalctool и PDF-просмотрщика Gpdf. Представлены такие мультимедийные приложения, как видеопроигрыватели Totem (стандартный для GNOME, на базе Xine) и MPayer (вместе с GUI; Установка OpenOffice.org с компакт-диска интересно, что принцип «одной работающей программы» почему-то не был dictionary. Интернет-приложения станраспространен на напрямую конкури- дартны: веб-браузер Mozilla Firefox, рующие видеоплейеры), TV-плейер почтовый клиент Evolution, клиент обtvtimer, аудиоплейер Rhythmbox, ра- мена сообщениями Gaim, ПО для видиоплейер GQradio, программа аудио- деоконференций GnomeMeeting, IRCзаписи gnome-sound-recorder, проигры- клиент X-Chat, терминальный клиент ватель аудиодисков gnome-cd. Для ра- Terminal Server Client (GUI-надстройботы с графикой есть просмотрщик ка над rdesktop и vncviewer) и p2p-клиgThumb, утилита для работы с фото- ент aMule. Открытый офисный пакет камерами gtkam, традиционный реOpenOffice.org я качать не решился дактор GIMP. Из офисного ПО в однодисковой и без проблем установил со второго версии Linux XP есть лишь редактор CD («Additional Software»). Там находиаграмм Dia. Сюда же можно отнести дится русифицированная вторая версловари StarDict и стандартный gnome- сия OOo в сборке от Инфра-Ресурс.
№12, декабрь 2006
Инсталляция программ с родных дополнительных дисков проводится элементарно: после того, как CD вставлен в привод, необходимо на нем найти каталог с нужным пакетом и (как правило) запустить файл setup.jar. Тогда появляется меню выбора нужной локализации, а последующая установка заключается в 2-кратном нажатии на кнопку «Далее» и опциональной возможности добавления «ярлыков». Из прочих дополнительных программных пакетов на дисках выделю драйверы для видеокарт от NVIDIA и ATI, Crossover (коммерческое ПО
51
администрирование фейса: в нескольких местах я заметил очевидные опечатки.
Выводы
OpenOffice.org в работе
для запуска офисных Windows-приложений в Linux-среде), а для разработчиков – популярную IDE Eclipse, JBoss и Apache Tomcat. Среди игр на диске «GamePack»: 3D-шу тер «Cube» и демо-версия «Unreal Tournament 2004», клон «Колонизации» FreeCol, трехмерная стратегия реального времени «glest», пошаговая стратегия «Battle for Wesnoth», автосимулятор «TORCS», свободный римейк классической «Scorched Earth» – «Scorched 3D». В общем, вполне добротный набор, где каждый сможет найти себе что-нибудь подходящее, если заскучает во время работы в системе.
Мелочи Разработчики Linux XP явно не разделяют позиции своих многочисленных коллег из мира Open Source (как, впрочем, и многих других «миров»...) и, в частности, считают нормальным, что пользователь постоянно работает с правами root. Причем вне зависимости от того, какие полномочия ему действительно необходимы для выполнения тех или иных задач. И во время работы с системой мне довелось неоднократно наблюдать вызванные этим противоречием нюансы. Например, попытка первой загрузки из меню IRC-клиента X-Chat приводит к выводу сообщения о том, что запускать данное приложение из-под суперпользователя, цитирую, «глупо».
52
Похожий момент возник в процессе установки Linux XP. На одной из последних стадий инсталлятор просит ввести пароль root, а в это самое время справка слева разумно сообщает о том, что работать в системе с правами суперпользователя нехорошо. Рекомендуется создать дополнительный аккаунт, который и сделать основным, а уже из-под него выполнять необходимые команды через sudo. Однако, если обычно инсталляторы после таких заявлений следующим шагом предлагают создать нового (обычного) пользователя, тут подобных предложений не поступало. Налицо яркие примеры того, что вызвало бурную реакцию сообщества. Если опытные пользователи вряд ли согласятся продолжительное время работать в такой системе, то новые могут не понять истинного происхождения «подводных камней» (самые очевидные – серьезные проблемы в безопасности), инициированных «прагматичным подходом» производителя. Более глобальные негативные последствия таковы, что некоторые после подобного «тест-драйва» с Linux XP, вероятно, не пожелают обращаться к Linux-системам и в дальнейшем. А это печально и расходится даже с долгосрочными целями самих авторов проекта. Кроме того, отмечу, что команде разработчиков не помешает дополнительная проверка локализации интер-
Честно говоря, берясь за обзор Linux XP, я ожидал увидеть менее зрелый продукт, что вкупе с громкими заявлениями производителей ставило под сомнение серьезность всего проекта. Однако знакомство с системой показало, что «не все так плохо в датском королевстве». Даже несмотря на то что про Linux XP относительно мало говорят в кругах нашего Open Source-сообщества, система определенно имеет право на жизнь и перспективы дальнейшего развития. А развиваться, безусловно, есть куда. Потому что хоть функционирование системы «в общих чертах» (т.е. на уровне того пользовательского подхода, на который авторы ее ориентировали) и порадовало, недочетов в проработке различных компонентов определенно хватает. А если сюда добавить и серьезные недостатки, вызванные этим самым подходом, и, «до кучи», вечное «совершенству нет предела», то работы еще очень много. Linux XP Desktop – это система, созданная на основе спорных принципов и отсутствия преемственности UNIX-way, стремящаяся, вобрав в себя многолетний опыт разработок в области ОС от Microsoft (как антипод этому самому UNIX-way), предстать наиболее простым и удобным решением для пользователей настольных ПК, не желающих знать о внутреннем устройстве и подстраивать все под себя на уровне исходного кода. Она вряд ли придется по душе кому-то из любителей GNU/Linux-систем «старой закалки», но потому и не предназначена для них. Однако насколько хорошо ее будут воспринимать начинающие пользователи Linux, сказать с полной определенностью тоже нельзя. 1. Манифест Linux XP Desktop – http:// www.linux-online.ru/about/articles/detail. php?ID=897. 2. Страница для скачивания Linux XP – ht tp://w w w.linux- online.ru /desk top / download.php. 3. Linux XP Pro в ЛинуксЦентре – http:// www.linuxcenter.ru/goods/1313.html. 4. Linux XP Pro в магазине ИДДК – http:// shop.iddk.ru/cdrom/62055.html.
администрирование
Интеграция BIND + PostgreSQL
Сергей Алаев Многие провайдеры используют BIND в качестве DNS-сервера. Но иногда возникают проблемы с добавлением зон и записей в них, и это приводит к перезапуску сервера, что крайне нежелательно из-за возможных ошибок при обработке клиентских DNS-запросов. Чтобы предотвратить перезапуск DNS-сервера BIND, целесообразно использовать внешние хранилища (MySQL, OpenLDAP, PostgreSQL и т. д.).
Прелюдия
Возможность обновлять содержи-
Сегодня подробно рассматрим хранение зон BIND в PostgreSQL. Этот метод хранения зон позволяет динамически добавлять зоны и записи в них, а также обновлять содержимое зон. В качестве внешнего хранилища можно также использовать MySQL, OpenLDAP, BerkeleyDB, ODBC, который предоставляет хранить зоны в любой СУБД, и т. д. Основными достоинствами методов хранения являются:
мое зон без перезапуска. Эко но мия о п еративной памя ти (при запуске named считывает все зоны из файлов, при большом количестве зон и записей в них это занимает достаточно много оперативной памяти и времени). Более высокое быстродействие по сравнению с хранением зон в файлах (результаты тестов можно посмотреть на http://bind-dlz. sourceforge.net/perf_tests.html).
54
Существует две реализации драйверов для хранения зон во внешних хранилищах – DLZ и SDB. DLZ-драйверы не входят в стандартный набор исходных текстов BIND. Они более гибкие в настройке и поддерживают широкий набор внешних хранилищ. Техническую документацию по настройке DLZ-драйверов вы можете найти на http://bind-dlz.sourceforge.net. SDB-драйверы входят в стандартный набор исходных текстов BIND и содержат инструменты для автоматизи-
администрирование рованной интеграции зон из файлов в базу данных. К недостаткам такого способа хранения зон можно отнести поддержку только master-зон. Рассмотрим обе реализации. В Fedora Core Linux есть rpm-пакет bind-sdb с поддержкой необходимых драйверов SDB. Сначала рассмотрим метод интеграции с помощью драйвера SDB. К сожалению, во FreeBSD нет интегрированного порта BIND с поддержкой SDB PostgreSQL, поэтому устанавливать будем из исходных текстов.
Установка PostgreSQL Итак, приступим. Собираем PostgreSQL из портов: # cd /usr/ports/databases/postgresql80-server # make && make install
Создадим каталог для размещения баз данных с правами на pgsql: # cd /var/db # mkdir pgsql # chmod 700 pgsql && chown pgsql:pgsql pgsql
Зададим параметры запуска PostgreSQL в rc.conf, которые будут использоваться при инициализации кластера баз данных:
Драйвер SDB находится в contrib/sdb/pgsql. Для успешной компиляции BIND с поддержкой этого драйвера необходимо включить его исходный код в исходный код сервера named. Для компиляции драйвера также будут необходимы библиотеки и файлы заголовков PostgreSQL, поэтому надо будет уточнить в pgsqldb.c их точное месторасположение относительно общих путей расположения библиотек и заголовков(/usr/local/lib, /usr/local/include). Общие пути расположения задаются позже с помощью патча. Правим pgsqldb.c: # mcedit contrib/sdb/pgsql/pgsqldb.c // Заменяем строку «# include <pgsql/libpq-fe.h>» на #include <libpq-fe.h> // Заменяем строку «# include “pgsqldb.h”» на # include “named/pgsqldb.h”
Для добавления драйвера скачиваем скрипт и патч в корневое дерево исходных текстов и выполняем его с помощью скрипта (патч и скрипт смотрите в разделе «Исходный код» на сайте журнала http://www.samag.ru): # ./add_pgsqldb.sh
Приступаем к компиляции и установке сервера:
# mcedit /etc/rc.conf
# ./configure --prefix=/usr/local && make && make install
postgresql_enable=”YES” postgresql_user=”pgsql” postgresql_data=”/var/db/pgsql”
Приступаем к настройке сервера. Рассмотрим простую конфигурацию сервера:
Инициализируем кластер баз данных: # /usr/local/etc/rc.d/010.pgsql.sh initdb
Далее правим главный конфигурационный файл, где указываем IP, на котором будет работать сервер: # mcedit /var/db/pgsql/postgresql.conf listen_addresses=’localhost’
Для версии 7.x необходимо указать: tcpip_socket = true virtual_host = ‘127.0.0.1’
Для запуска PostgreSQL выполните команду: # /usr/local/etc/rc.d/010.pgsql.sh start
Установка и настройка BIND на использование SDB-драйвера Приступаем к установке BIND. Устанавливаем порты gettext и libiconv из раздела devel общего дерева портов, которые необходимы для нормальной компиляции BIND. Закачиваем и распаковываем исходные тексты: # # # #
mkdir /usr/local/src cd /usr/local/src/ fetch ftp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz cd bind-9.3.2
№12, декабрь 2006
# mcedit /etc/namedb/named.conf options { directory "/etc/namedb"; pid-file "/var/run/named/pid"; }; key rndc-key { algorithm hmac-md5; secret "X4JdLjgWj2acEqQ2gyKhPw=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } ↵ keys { rndc-key; }; }; zone "example.net" { type master; database "pgsql bind zone_example_net 127.0.0.1 ↵ bind 123456"; allow-transfer { 192.168.7.2; }; }; zone "7.168.192.in-addr.arpa" { type master; database "pgsql bind zone_192_168_7 127.0.0.1 ↵ bind 123456"; allow-transfer { 192.168.7.2; }; };
Разрешаем передачу зон для 192.168.7.2, т.к. с этого адреса будем тестировать наш DNS-сервер. Строка «database “pgsql bind zone_192_168_7 127.0.0.1 bind 123456”;» определяет параметры хранения зоны в PostgreSQL в следующем порядке:
55
администрирование # mcedit /etc/namedb/example.net.hosts
Рисунок 1. Добавление зоны из файла в базу данных
Рисунок 2. Тестирование SBD-драйвера
bind – имя базы данных; zone_192_168_7 – имя таблицы, где хранится содержимое зоны;
127.0.0.1 – IP-адрес, на котором слушает сервер PostgreSQL;
bind – имя пользователя для соединения к серверу
$ttl 38400 example.net. IN SOA freebsd.example.net. bsdadmin3.mail.ru ( 1161450241 10800 3600 604800 38400 ) example.net. IN NS freebsd.example.net. example.net. IN A 192.168.7.1 freebsd.example.net. IN A 192.168.7.1 boss.example.net. IN A 192.168.7.2 semen.example.net. IN A 192.168.7.3 ignat.example.net. IN A 192.168.7.4 www.example.net. IN CNAME freebsd.example.net. example.net. IN MX 50 freebsd.example.net. example.net. IN MX 100 boss.example.net.
↵
↵ ↵ ↵ ↵ ↵ ↵ ↵ ↵ ↵
Для добавления воспользуемся утилитой zonetodb. Для соединения с базой данных она использует в качестве значений имени пользователя, хоста значения переменных PGHOST, PGUSER. Название таблицы и базы данных указывается при использовании утилиты. Пароль указывать в этом случае необязательно, т.к. настройка PostgreSQL по умолчанию разрешает из консоли соединяться с базой данных на правах суперпользователя без указания пароля. Задаём имена хоста и пользователя: # export PGHOST=127.0.0.1 # export PGUSER=bind # /usr/local/bin/zonetodb example.net. ↵ example.net.hosts bind zone_example_net
PostgreSQL;
123456 – пароль для пользователя BIND. Приступаем к созданию баз данных: # psql –h 192.168.7.1 -d template1 -U pgsql
Cоздаём пользователя bind: template1=# CREATE USER bind WITH SYSID 100 PASSWORD '123456' NOCREATEDB NOCREATEUSER;
Cоздадим базу данных для хранения зон: template1=# CREATE DATABASE bind WITH OWNER = bind;
Скомпилируем утилиту для автоматического добавления зоны из файла в базу: # cd /usr/local/src/bind-9.3.2/contrib/sdb/pgsql # gcc -g `isc-config.sh --cflags isc dns` -c zonetodb.c # gcc -g -o zonetodb zonetodb.o `isc-config.sh ↵ --libs isc dns` -lpq # cp zonetodb /usr/local/bin/zonetodb
Допустим, у нас имеется файл зоны example.net следующего содержания:
56
где первый параметр – это название зоны (заканчивается обязательно точкой), второй – имя файла содержимого зоны, третий – база данных, четвёртый – имя таблицы, где хранится содержимое зоны. Утилита сама создаст таблицу и добавит содержимое зоны автоматически (см. рис. 1). Добавим зону обратного просмотра. # mcedit 192.168.7.rev $ttl 38400 7.168.192.in-addr.arpa. IN ↵ SOA freebsd.example.net. bsdadmin3.mail.ru ( 1161450262 10800 3600 604800 38400 ) ↵ 7.168.192.in-addr.arpa. IN NS freebsd.example.net. ↵ 1.7.168.192.in-addr.arpa. IN PTR freebsd.example.net. ↵ 2.7.168.192.in-addr.arpa. IN PTR boss.example.net. 3.7.168.192.in-addr.arpa. IN ↵ PTR semen.example.net. ↵ 4.7.168.192.in-addr.arpa. IN PTR ignat.example.net. # /usr/local/bin/zonetodb 7.168.192.in-addr.arpa. ↵ 192.168.7.rev bind zone_192_168_7
администрирование Настраиваем параметры запуска BIND: # mcedit /etc/rc.conf named_enable=”YES” named_program=”/usr/local/sbin/named” named_chroot_dir=”/var/named” named_flags=”-u bind –c /etc/namedb/named.conf”
Также необходимо настроить приоритеты загрузки, т.к. по умолчанию во время загрузки системы BIND запускается до PostgreSQL, что приведёт к ошибке, т.к. при запуске он будет устанавливать соединения к PostgreSQL. Правим стартовый скрипт PostgreSQL: # mcedit /usr/local/etc/rc.d/010.pgsql.sh # # # #
PROVIDE: postgresql REQUIRE: NETWORKING SERVERS KEYWORD: FreeBSD shutdown BEFORE:
Данные комментарии используются для определения порядка запуска стартовых скриптов во время загрузки системы. Рассмотрим назначение данных ключевых слов: # PROVIDE: – задает имя сервиса, предоставляемого этим файлом. # REQUIRE: – список сервисов, необходимых этому сервису. Этот файл будет запущен после указанных сервисов. # BEFORE: – список сервисов, зависящих от этого сервиса. Этот файл будет запущен до указанных сервисов. # KEYWORD: – FreeBSD или NetBSD. Используется для функций, зависящих от версии *BSD. За более подробной информацией обращайтесь к справочному руководству FreeBSD. Запускаем BIND: # /etc/rc.d/named start
Тестируем наш сервер с помощью утилиты nslookup (см. рис. 2).
Установка и настройка BIND на использование DLZ-драйвера Рассмотрим использование драйвера DLZ. Собираем BIND из портов: # cd /usr/ports/dns/bind9-dlz # make clean && make && make install
В окне конфигурации отмечаем нужный нам PostgreSQL (см. рис. 3). Приступаем к конфигурированию BIND. # mcedit /etc/namedb/named.conf options { directory "/etc/namedb"; pid-file "/var/run/named.pid"; listen-on { 192.168.7.1; }; }; key rndc-key { algorithm hmac-md5;
№12, декабрь 2006
secret "3lyE4327kU/qr6C/THQflg=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } ↵ keys { rndc-key; }; }; dlz "postgres zone" { database "postgres 1 // Определяем параметры подключения к базе данных {host=192.168.7.1 port=5432 dbname=bind ↵ user=bind password=123456} // Определяем запрос для поиска зоны в таблице dns_records. // Все зоны будут храниться в этой таблице. // Вместо переменной %zone% во время обработки // DNS-запроса подставляется название требуемой зоны {select zone from dns_records where zone = '%zone%'} // Определяем запрос для поиска записи в таблице. // Данный запрос используется, например, для обработки // запросов на получение имени по IP-адресу и наоборот. // Вместо переменной %record% вставляется название записи // (DNS имя или IP адрес). {select ttl, type, mx_priority, case ↵ when lower(type)='txt' then '\"' || data || '\"' ↵ when lower(type)='soa' then data || ' ' || ↵ resp_person || ' ' || serial || ' ' || ↵ refresh || ' ' || retry || ' ' || expire || ' ' || ↵ minimum else data end from dns_records where ↵ zone = '%zone%' and host = '%record%'} {} // Определяем запрос для получения содержимого всей зоны {select ttl, type, host, mx_priority, case when ↵ lower(type)='txt' then '\"' || data || '\"' ↵ else data end, resp_person, serial, refresh, ↵ retry, expire, minimum from dns_records ↵ where zone = '%zone%'} // Формируем запрос для получения адресов клиентов, // которым разрешено получать содержимое зоны {select zone from xfr_table where zone = '%zone%' ↵ and client = '%client%'}"; };
Обратите внимание, при создании конфигурационного файла в настройках DLZ-драйвера очень важен порядок строк, т.к. сервер считывает SQL-запросы в специальном порядке и в этом же порядке определяет, какой SQL-запрос использовать при обработке клиентских DNS-запросов. Создадим базу данных и таблицу для хранения зон: # psql –h 192.168.7.1 -d template1 -U pgsql
Создаём пользователя bind: template1=# CREATE USER bind WITH SYSID 100 PASSWORD '123456' NOCREATEDB NOCREATEUSER;
Создаём базу данных для хранения зон: template1=# CREATE DATABASE bind WITH OWNER = bind;
Создаём таблицу: template1=# \c bind bind =# CREATE TABLE dns_records ( "zone" text, host text ttl int8, "type" text, mx_priority text, data text, resp_person text, serial int8, refresh int8, retry int8, expire int8, minimum int8 ) WITH OIDS;
57
администрирование bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', '@','A','192.168.7.1'); bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', 'freebsd','A','192.168.7.1'); bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', 'boss','A','192.168.7.2'); bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', 'semen','A','192.168.7.3'); bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', 'ignat','A','192.168.7.4');
Добавим CNAME-запись: Рисунок 3. Конфигурация DLZ-драйвера
bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', ↵ 'www','CNAME','freebsd.example.net.');
Добавим MX-записи: bind =# INSERT INTO dns_records("zone", host, "type", ↵ mx_priority, data) VALUES ('example.net', ↵ 'example.net','MX',50,'freebsd.example.net.'); bind =# INSERT INTO dns_records("zone", host, "type", ↵ mx_priority, data) VALUES ('example.net', ↵ 'example.net','MX',100,'boss.example.net.');
Рассмотрим зону обратного просмотра. Добавим SOA-запись: Рисунок 4. Тестирование DLZ-драйвера
Создадим индексы для поиска по полям host, type, zone: bind =# CREATE INDEX host_index ON dns_records USING btree (host); bind =# CREATE INDEX type_index ON dns_records USING btree ("type"); bind =# CREATE INDEX zone_index ON dns_records USING btree ("zone");
Создадим таблицу для хранения разрешений на получение содержимого зоны: bind =# CREATE TABLE xfr_table ( "zone" text, client text ) WITH OIDS;
Приступаем к добавлению зон. В качестве примера будем использовать те же зоны, что и при описании SDB-драйвера. Рассмотрим зону прямого просмотра. Добавим SOA-запись: bind =# INSERT INTO dns_records("zone", host, ttl, ↵ "type", data, resp_person, serial, refresh, retry, ↵ expire, minimum) VALUES ('example.net', '@',38400, ↵ 'SOA','freebsd.example.net.','bsdadmin3.mail.ru.', ↵ 1161450241,10800,3600,604800,38400);
Добавим NS-запись: bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', '@','NS','freebsd.example.net.')
Добавим A-записи:
58
bind =# INSERT INTO dns_records("zone", host, ttl, ↵ "type", data, resp_person, serial, refresh, ↵ retry, expire, minimum) ↵ VALUES ('7.168.192.in-addr.arpa', '@',38400, ↵ 'SOA','freebsd.example.net.','bsdadmin3.mail.ru.', ↵ 1161450262,10800,3600,604800,38400);
Добавим NS-запись: bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa', '@','NS', ↵ 'freebsd.example.net.');
Добавим PTR-записи: bind =# INSERT INTO dns_records("zone", host, VALUES ('7.168.192.in-addr.arpa ', ↵ '1','PTR','freebsd.example.net.'); bind =# INSERT INTO dns_records("zone", host, VALUES ('7.168.192.in-addr.arpa ', ↵ '2','PTR','boss.example.net.'); bind =# INSERT INTO dns_records("zone", host, VALUES ('7.168.192.in-addr.arpa ', ↵ '3','PTR','semen.example.net.'); bind =# INSERT INTO dns_records("zone", host, VALUES ('7.168.192.in-addr.arpa ', ↵ '4','PTR','ignat.example.net.');
"type", data) ↵ "type", data) ↵ "type", data) ↵ "type", data) ↵
Разрешим клиенту 192.168.7.2 (с него мы будем тестировать сервер) получать содержимое данных зон: bind =# INSERT INTO xfr_table ↵ VALUES ('example.net', '192.168.7.2'); bind =# INSERT INTO xfr_table ↵ VALUES ('7.168.192.in-addr.arpa', '192.168.7.2');
Параметры запуска и приоритеты загрузки задаём аналогично первому примеру. Приступаем к тестированию BIND. Запускаем BIND: # /etc/rc.d/named start
Тестируем наш сервер с помощью утилиты nslookup (см. рис. 4). На этом всё. Удачи.
bugtraq Переполнение буфера в PHP
Несколько уязвимостей в Mozilla Firefox и Mozilla SeaMonkey
Программа: PHP 4.0.x, PHP 4.1.x, PHP 4.2.x, PHP 4.3.x, Программа: Mozilla Firefox версии до 1.5.0.8, SeaMonkey PHP 4.4.x, PHP 5.0.x, PHP 5.1.x. версии до 1.0.6. Опасность: Критическая. Опасность: Критическая. Описание: Уязвимость существует из-за ошибки проверки Описание: 1. Библиотека Network Security Services (NSS) границ данных в функциях htmlentities() и htmlspecialchars(). содержит неполноценное исправление уязвимости прозлоумышленник может передать специально сформирован- верки RSA-подписи. 2. Уязвимость существует из-за ошибки при обработке ные данные PHP-приложению, использующему уязвимые функции, вызвать переполнение буфера и выполнить про- Script-объектов. Злоумышленник может выполнить произизвольный код на целевой системе. вольный JavaScript-байткод в браузере жертвы путем изУязвимость позволяет перезаписать до 7 символов, менения уже запущенных Script-объектов. внедряя некорректные UTF-8 символы в строку, которая 3. Обнаружены несколько ошибок в механизме раскладбудет обработана уязвимыми функциями. Символы огра- ки и ошибки повреждения памяти в механизме JavaScript. Удаленный пользователь может аварийно завершить раничены 0x00, 0xc0-0xfd. URL производителя: www.php.net. боту браузера или выполнить произвольный код на целеРешение: Уязвимость устранена в последней версии PHP – вой системе. 5.2.0. 4. Уязвимость существует из-за неизвестной ошибки в XML.prototype.hasOwnProperty. Удаленный пользователь может выполнить произвольный код на целевой системе. URL производителя: www.mozilla.org. Выполнение произвольного Решение: Установите последнюю версию с сайта произкода в Microsoft Visual Studio WMI Object Broker ActiveX-компоненте водителя. Программа: Microsoft Visual Studio 2005. Опасность: Критическая. Описание: Уязвимость существует из-за неизвестной ошиб- Несколько уязвимостей ки в WMI Object Broker ActiveX-компоненте (WmiScriptUtils.dll). в Mozilla Thunderbird Злоумышленник может выполнить произвольный код на це- Программа: Mozilla Thunderbird версии до 1.5.0.8 левой системе с помощью специально сформированного Опасность: Высокая. веб-сайта, открытого в Internet Explorer. Описание: Обнаруженные уязвимости позволяют удаленПримечание: уязвимость активно эксплуатируется в на- ному пользователю произвести XSS-нападение, получить доступ к важным данным, вызвать отказ в обслуживании стоящее время. и скомпрометировать целевую систему. URL производителя: www.microsoft.com. Решение: В настоящее время способов устранения уяз- URL производителя: www.mozilla.org. вимости не существует. В качестве временного решения Решение: Установите последнюю версию (1.5.0.8) с сайпроизводитель рекомендует установить kill-bit на уязви- та производителя. мый ActiveX-компонент.
Переполнение буфера в Essentia Web Server Выполнение произвольного кода в Microsoft XMLHTTP ActiveX-компоненте Программа: Essentia Web Server 2.15, возможно более ранПрограмма: Microsoft Core XML Services (MSXML) 4.0. Опасность: Критическая. Описание: Уязвимость существует из-за некорректной обработки HTTP-запроса в функции setRequestHeader() в XMLHTTP 4.0 ActiveX-компоненте. Удаленный пользователь может с помощью специально сформированной веб-страницы выполнить произвольный код на целевой системе. Примечание: уязвимость активно эксплуатируется в настоящее время. URL производителя: www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует. В качестве временного решения производитель рекомендует установить kill-bit на уязвимый ActiveX-компонент.
№12, декабрь 2006
ние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке HTTP-запросов. Удаленный пользователь может с помощью специально сформированного GET или POST-запроса, длиной более 6000 байт, вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.essencomp.com /newsite / products.asp. Решение: Установите последнюю версию с сайта производителя.
Составил Александр Антипов
59
на правах рекламы
Какие возможности появились в новой версии DeviceLock?
Михаил Брод
«Смарт Лайн Инк» отметила свое 10-летие выпуском новой версии DeviceLock 6.0, которая поддерживает функцию теневого копирования данных.
К
своему юбилею российская компания «Смарт Лайн Инк» подошла с новой версией своего основного продукта – программы DeviceLock. Существуя с 1996 года, DeviceLock завоевал популярность как за рубежом, так и в нашей стране и сегодня является признанным мировым лидером в области контроля доступа к периферийным устройствам. За 10 лет клиентами «Смарт Лайн Инк» стали более 50000 компаний, DeviceLock установлен на более чем 2 миллионах компьютеров. Основные новые возможности продукта – значительное расширение функций аудита по использованию устройств и включение в него мощной системы теневого копирования, а также новая возможность авторизации не только устройств, но и носителей информации на основе данных, находящихся на них.
Для чего нужно теневое копирование? Наличие журнала аудита позволяет администратору отслеживать все действия пользователя, в том числе и по копированию файлов. Но вот сами оригинальные файлы пользователь после копирования на носитель, будь то FDD, CD/DVD-диск, USB-флеш или другое устройство, подключаемое к последовательному или параллельному портам, мог уничтожить или просто переименовать. Администратор уже не мог проверить, была ли информация разрешена для копирования или нет. При теневом копировании все файлы и данные сохраняются на SQL-сервере в базе, недоступной для пользователя, но администратор может получить к ним доступ и проанализировать. Ядром системы по-прежнему яв-
№12, декабрь 2006
ляется агент, устанавливаемый на на контролируемые устройства, ескаждый контролируемый компьютер. ли теневое копирование невозможно Для удаленного управления агентами в силу заполнения определенного объи DeviceLock-сервером предлагается ема на локальном диске. При возникнабор консолей управления, в том чис- новении такой ситуации лишь адмиле консоль для управления групповы- нистратор может очистить хранилище, ми политиками домена Windows, с по- тем самым разрешив дальнейшее комощью которых можно осуществлять пирование данных. Можно разрешить наиболее эффективное развертыва- автоматическое удаление старых файние и управление DeviceLock. лов, помещенных в это хранилище. В DeviceLock 6.0 появился новый дополнительный компонент – Авторизация носителей DeviceLock Enterprise Server, исполь- информации зуемый для централизованного сбо- Теперь о второй новинке программы – ра и хранения данных теневого копи- авторизации носителей информации. рования. Для его работы необходимо Авторизованные носители формируналичие сервера MS SQL, на котором ют так называемый белый список мебудет храниться собираемая инфор- диа-носителей. Этот список позволямация. В большой сети, где имеется ет идентифицировать, к примеру, опмощный SQL-сервер, возможна уста- ределенный CD/DVD-диск на осноновка нескольких серверов DeviceLock, ве записанных на него данных и разподключаемых к одному SQL-серве- решить его использование, даже есру. Можно использовать несколько ли сам CD/DVD-привод заблокирован. SQL-серверов для распределения на- Изменение данных на носителе пригрузки по сети. водит к изменению его уникального В базовой конфигурации DeviceLock идентификатора, и, следовательно, предполагается, что данные на локаль- этот носитель уже не будет распозном компьютере получает и кэширует нан как разрешенный (авторизованлокально агент, и с определенной пе- ный). Разрешив пользователю доступ риодичностью копирует их на сервер. к такому носителю, вы предоставляете После успешного завершения копи- ему возможность чтения данных даже рования локальная копия сохранен- в том случае, если устройства для неных данных удаляется. Время выгрузки го недоступны. данных на сервер определяется по алИз других изменений можно отмегоритму, в котором учитывается время тить изменение интерфейса – стал бопоявления данных для закачки, нагруз- лее удобным. Упростился процесс уска на сеть и на сервер. тановки программы. Впрочем, о возВ качестве дополнительного пара- можностях программы собственное метра предусмотрена установка огра- мнение лучше всего формировать ничения на наполнение раздела, вы- при тестировании продукта. А для этоделяемого под локальное хранение го можно использовать бесплатную данных теневого копирования, в про- 30-дневную пробную версию, доступцентах от свободного места на диске. ную на сайте компании «Смарт Лайн В этом случае при достижении пре- Инк»(www.smartline.ru). дельных цифр копирование данных в этот раздел прекращается. Можно запретить любое копирование данных
61
человек номера
Компьютер – это тайна, считает популярный российский специалист по системам безопасности.
М
ожно ли рассматривать чело- сится к миру, к профессии, к родным, Из чего складывается личность веческую личность под мик- к самому себе в конце концов. И дела- программиста, да и вообще, можно роскопом, как ученый рас- ем выводы… Говоря о друзьях и зна- ли наделить личностными характесматривает красные кровяные тель- комых, разве не выделяем мы какие- ристиками представителя профессии? ца или какую-нибудь инфузорию-ту- то качества в них особо? Например: Мне кажется, представителя такой фельку? Несолидно как-то, на пер- «У Лены характер не сахар, зато друг профессии можно. А кого взять в кавый взгляд. Но, с другой стороны, раз- она отличный». А целиком и полно- честве предмета исследования, у меня ве не складывается наше представ- стью принимаем, пожалуй, только са- тоже не вызывает сомнения – постоянление о человеке из фрагментов, ос- мых близких – своих родителей и сво- ного автора нашего журнала, человеколков? Мы выясняем, как он отно- их детей. ка, статьи которого вы читаете с удо-
62
человек номера вольствием. Предлагаю поближе поз- что давали, мне вообще не было нужнакомится с Крисом Касперски! но. А просто так зубрить, чтобы сдавать, мне не хотелось. Ушел, но на следующий год родители уговорили снова Почему-то если у Криса берут интер- поступать – мол, нельзя ведь без обвью, то сразу спрашивают: а как ваше разования остаться. Поступил еще раз, настоящее имя? Меня этот вопрос ин- но история повторилась. И в третий раз тересовал меньше всего, но я все-та- поступил, и опять не выдержал. Жалеет ли Крис об отсутствии выки вежливо поинтересовалась в начале нашей беседы, не будет ли ему сшего образования? С одной стороны, удобнее говорить, если он предста- он понимает: – Теоретически хороший институт вится. Мой собеседник так же вежливо, но твердо заметил, что те, кому на- дает базу. Пообщавшись с настоящидо, знают его настоящее имя. Я согла- ми гениями, профессионалами, начисилась… Ну какая разница, буду на- наешь понимать, чем отличается сазывать я его Мишей, Федей или Кри- моучка от того, кого действительно сом? Ведь это не поможет мне понять, научили. Но диплом Крису как-то и не понакакой он человек. А что поможет? Обычно исследо- добился в жизни, не по корочке о нем вание человеческой души начина- судят работодатели. Да и не в конкют с детства. Ну тут все как в книж- ретном вузе дело. Проблема в том, ках про гениев. Очень рано Крис за- что Касперски патоинтересовался элек троникой, ре- логически не принишил, что будет электронщиком. Па- мает идею зубрежял приемники, ковырялся в них – ин- ки. А во время недолтересно было… Встреча с компьюте- гой учебы в Таганрором перевернула все планы. Причем ге у Криса сложилось произошла она где-то классе в пя- стойкое впечатление, том. Вундеркинд? Сам Касперски так что вузовские преподаватели главным образом требуют продемонстрировать, не считает: – Я смотрю, у многих моих знако- сколько у тебя в голове формальных мых дети в шесть лет «прогу» уже уме- знаний из учебника. А кому эти знания ют компилировать. Прогресс... Я же на- нужны, зачем, какие ты сделал из них чал тогда, когда появились доступные выводы, не важно… – Почему я в первый раз ушел? компьютеры. Мой первый компьютер – «Правец 8D» был совершенно несов- Потому что был такой преподаваместим ни с «синклерами», ни с «бэ- тель, который программы типа «Прикашками», имевшими хождение в на- вет, как тебя зовут?» писал, постоянроде, и кучей программного обеспе- но сверяясь с конспектом. Все гадали, чения. У меня же не было ничего, кро- что с ним будет, если конспект отобме платы с несколькими микросхема- рать. Он спрашивал у меня: когда обми, и, чтобы вдохнуть в них жизнь, тре- разовалась фирма IBM, когда родилбовалось научиться программировать, ся Билл Гейтс? Я отвечал: «Не помэто затянуло неожиданно. ню». А он: «Это надо знать!» И ставил Однако после школы Крис пошел не «пять», а «три». Не нравится – иди учиться на радиофизика. Высшее об- в деканат. Но это означало, что надо разование – яркая страница его био- ругаться постоянно… Можно поспорить, начать горячо графии. Успешно поступив в Таганрогский радиотехнический институт и про- доказывать, что не все профессора таучившись там три месяца, Крис понял, кие, что стереотип – страшная штука… что он и вуз – вещи несовместимые: Но, согласитесь, и Криса понять мож– Я человек неорганизованный, но. Бог с ним, с высшим образованиа там много обязаловки. Допустим, ем. Самородок… математика мне дается с трудом. Мне бы посидеть над какой-то темой недельку, я бы понял. Но нет, нужно идти Сегодня Крис Касперски – автор двух вместе со всеми… И мне оставалось десятков книг, переведенных на иностолько зубрить. Я понял, что с таким транные языки. Его постоянно приглатемпом совладать не смогу. А многое, шают посотрудничать различные спе-
№12, декабрь 2006
циализированные журналы. Он выступает на страницах «Системного администратора», и настолько удачно, что наши читатели в конце концов стали требовать на форуме: расскажите о Касперски! Например, как он пишет? Рассказываем. Вернее, пусть рассказывает он сам: – Последние месяца три у меня такой темп – один день на статью. За один день успеваю статью написать, отредактировать, подготовить картинки. Компоную материал для следующей статьи, после чего падаю замертво на клавиатуру. Утром просыпаюсь и начинаю быстро строчить вторую статью. А еще впереди третья, четвертая, пятая, до бесконечности… А вообще я на статью трачу дня два. Но если серьезная тема, бывает, неделя требуется.
– А что вам нужно, чтобы написать хорошую статью? Вдохновение? – Не столько вдохновение, сколько материал. Допустим, для «Системного администратора» я писал много статей по файловым системам: NTFS, ext2/3fs, USF. Сначала их исследовал, а потом обобщал в виде статьи. Обычно статье предшествует исследование. Мне нравится писать о том, в чем я разбираюсь, тут я могу принести людям пользу. Но иногда приходится рассказывать о том, с чем я не работал. И я вникаю, собираю материал, обобщаю, проверяю, откидываю ошибки, заблуждения других авторов. Типа реферата получается... Я так писать не люблю, если не могу исследовать тему. Допустим, если речь идет о серверах, которых у меня нет. Любимые темы – дисассемблирование, отладка, защита, взлом. Это мое. Я этим занимаюсь и могу эту тему развить, потому что сам не раз это делал. Имею опыт. – Самая интересная для вас тема – безопасность? – Грубо говоря, хакерство. Мне интересно заглянуть «под капот» программы, защиты. Тут нетривиальное мышление требуется. – Вас привлекает тайна?
63
человек номера – Как вы считаете, какие качества нужны человеку, который решил посвятить жизнь IT? – Во-первых, программист – это инженер, а инженерная профессия – это учет рисков, это умение просчитывать, при каких условиях конструкция откажет, когда надо делать дополнительные подпорки, а когда нет. Надо все предусмотреть, и не просто больше металла вбухать, а сделать красиво… Поэтому хороших программистов не очень много. Нужно иметь инженерное мышление и математическое отчасти. Плюс нужна усидчивость. Приходится чиКогда-то Крис мечтал стать электронщиком тать много документации, на – Возможность пойти нехоженым английском языке, постоянно работать путем. Допустим, программу бухуче- над собой. Человек, который не вклата написать оригинально невозмож- дывает в работу все, что имеет, проно. Ее писали сто раз, есть платеж- граммистом вряд ли станет. Не бывает ки, формы, привычный пользователь- так: человек выучился в университете, ский интерфейс. А если хочешь что-то поступил на работу и может програмзащитить, нет общепринятых подхо- мировать. За пять лет все поменялось дов, нужно идти своим путем. Или ког- полностью, и те операционные систеда исследуешь защиту какой-то про- мы, которые он студентом изучал в вуграммы, пытаешься выяснить, сколь- зе, ушли в прошлое. И значит, умерли ко там проверок. Интересно. Смот- старые знания, стали не нужны. То есть ришь систему защиты даже не ра- программист – человек, который посди того, чтобы взломать и бесплат- тоянно готов к самообучению. С друно пользоваться программой, а что- гой стороны, все программисты в знабы себя проверить, выиграть в состя- чительной степени обладают качестзании с машиной. Она меня перехит- вами аутистов, то есть людей, которые рит или я ее? стараются не контактировать с окружа– Вы начали работать на компьюте- ющими, им интересен только их внутрах, потому что было интересно. А как ренний мир и дело, которому они посменялось отношение к информацион- вятили жизнь. Я говорю о программисным технологиям в течение жизни? тах, которые делают хорошие програм– Да, сначала был восторг, кото- мы. Их мало и никогда много не будет, рый постепенно начал стихать. Рань- как хороших инженеров. ше компьютеры менялись медленно. Я знал о них все. А сейчас – слишком быстро. Если мне что-то нужно, я иду Портрет «идеального программиста» в магазин и спрашиваю: что нового Крис нарисовал не впервые. Как-то он есть? Мне неинтересно читать о новых уже писал на эту тему целую статью. железяках. Если ими торгуют, то про- Статья вызвала возмущение, шквал давец сам расскажет, если не торгу- критики. Не мне судить, насколько ют, то зачем об этом читать? Раньше верна оценка, данная программиспроцессор расковырял, что-то о нем том от их собрата по профессии. Моузнал – и эти знания можно долго ис- гу только сказать, что сам Крис в полпользовать, потому что парк компью- ной мере соответствует нарисовантеров не обновлялся годами. А теперь ной им картинке. Он одиночка, может все быстро меняется, и смысл деталь- двадцать четыре часа в сутки сидеть ных раскопок теряется. за компьютером, не любит компании
64
и непросто сходится с людьми. В отличие от многих он честно признается в своих «нелюдимых» качествах, принимает свою природу как данность и бороться с ней не пытается. Иногда одиночество наводит на грустные мысли (кого из нас они не посещали?): «Хотя я написал кучу книг, взломал кучу программ, а защитил еще больше, но фактически я ничего не сделал – дерево не посадил, сына не вырастил...». Иногда – на философские: «Даже когда для других день, я сосредоточен в глубоком колодце своего одиночества, куда редко проникает свет. Забрался в свой внутренний мир и теперь уже не могу выбраться оттуда. Ни веревки, ни лестницы внутри колодца нет, а извне о существовании этого самого колодца никто даже и не догадывается, потому что на самом деле никакого колодца нет, есть только сознание, включающее в себя и колодец, и веревку, и лестницу, и чувство глубокого одиночества. Здесь, на глубине, возможно быть честным и откровенным, но удается это далеко не всем. Как же это сложно – признаться себе в том, что ты чувствуешь и знаешь, прекратить искать оправдания, а просто принять свою истинную сущность!». Одиночество – расплата за право быть свободным, жить так, как нравится, как хочется. А награда? Умение видеть в профессии не ремесло, а искусство: – Хакерство – своего рода искусство. Чем отличается искусство от ремесла? Допустим, два ремесленника сделали два одинаковых горшка. И это просто горшки, ни больше ни меньше. А искусство – это умение выразить себя, свою точку зрения на мир. Поэтому хакер ломает программы каждый раз немножко по-разному. Еще больший простор для самовыражения дает разработка защитных механизмов. И еще – если занимаешься делом, которое тебе по душе, видишь в нем то, что другой никогда не увидит: – Компьютер – это магия. Как он работает, совершенно непонятно. Не во всем можно разобраться. Многие вещи поражают. Умение удивляться – редкая способность, присущая в основном детям. Похоже, Крис, свободный от обязаловки и стереотипов, не разучился радоваться и удивляться красоте, даже став
человек номера взрослым. Одно из его увлечений – астрономия. Есть телескоп, не слишком мощный, но позволяет находить звезды, туманности, вычитанные в каталогах. Когда видишь далекое скопление звезд не на фотографии в Интернете, а живьем, – дух захватывает. – Понимаешь, какие мы маленькие, наши проблемы тоже и какой космос большой. – Новую звезду не открыли? – спрашиваю. – Нет. Научных задач я себе не ставлю. Еще Крис любит фотографировать: листья, пейзажи, речки, капли росы на дереве. Охотится за туманами: – Мы на холме живем, спускаешься, а там низина, такие туманы классные. Недавно Касперски купил себе пленочный Canon. Новый аппарат радует, если бы не одно «но»: – Что меня бесит – вспышку в ручном режиме нельзя принудительно включить. Она сама включается, если считает, что это необходимо. Когда снимаю человека против света и использую вспышку, получается очень хороший мягкий снимок. А, допустим, когда снимаю один лист против неба, вспышка не включится, как я ни стараюсь. Ручной режим есть, но не все функции в нем доступны. А вы хотите, чтобы человек, для которого свобода – жизненный принцип, подчинился фотоаппарату?
Беседуя с человеком, который «собаку съел» на теме безопасности, грешно не спросить у него: – Как вы считаете, каким будет дальнейшее развитие систем IT-безопасности? – Microsoft хочет, чтобы их программное обеспечение поставили на атомный реактор. Это будет начало конца. Они уже пытались внедриться к военным. Однажды был такой случай, когда то ли на крейсер, то ли на авианосец, где стояла NT, приехало высокое начальство посмотреть, как все это хорошо работает. И NT вдруг упала, крейсер на время перезагрузки был некоторое время полностью безоружен – слеп, глух и нем. И снова сбой! Долго разбирались, оказалось, виноват драйвер звуковой карты. И при этом самой звуковой карты у крейсера
№12, декабрь 2006
Некомпьютерные увлечения Криса – астрономия и фотография
не было. Высокое начальство не по- довести до ума. Конкурирующий с ним няло, зачем операционной системе FireFox, задавшийся целью «догнать нужен драйвер звуковой карты, если и перегнать», содержит ошибок чуть этой карты нет вообще. Это же крей- меньше, но все равно остается небесер, а не в игрушка типа DOOM со зву- зопасным. А вот Opera или Lynx никоками. Поэтому они отказались от услуг го перегнать не стремятся. ПредельMicrosoft. Теперь Microsoft хочет окку- но вылизанный код, минимум ошибок, пировать атомные реакторы и вооб- максимум функциональности. И, что ще энергосистемы. А если ее поста- самое забавное, Opera служит источвят там, это означает, что толковый ха- ником вдохновения для своих же собскер сможет отключить электростанцию твенных конкурентов, самые главные (хотя бы ради забавы). Это катастро- «вкусности» IE и FireFox позаимствофа! Медицинские, остальные учреж- ваны именно оттуда. – А что же все-таки делать бедному дения будут без света. Очень опасно. В медицину проникает Windows. Мож- пользователю? – Есть системы резервирования но наблюдать в супермаркете: стоит касса, управляемая программой, на- данных, DVD, стриммеры и другие нописанной на Delphi, и «вращающая- сители. Главное – не лениться и не храся» под Windows. Периодически вис- нить критически важную информацию нет, сразу очередь собирается боль- в единственном экземпляре. Польшая. Магазину реальные убытки. зователь должен быть грамотным. – Как быть? Windows – очень небезопасная вещь. – Есть куча других систем, которые Многие с этим сталкиваются, когда очень просты и поэтому не «падают». теряют данные. Хакерская атака или Чем система проще, тем легче грамот- случайный сбой системы многим стоно спроектировать и протестировать. ил потери бизнеса. Microsoft же гонится за сверхприбылью, Одиночка, романтик, хакер или рыЛюди, принимающие решения о внед- царь на белом коне, защищающий нас рении того или иного продукта, думают от каверз виртуального мира, – какая только о том, чтобы заработать деньги. разница? Личность, интересная тем, кто Поэтому мы имеем такую неприятную смеет быть свободным. Вот потому мы ситуацию. Взять хотя бы проблему ви- с удовольствием читаем статьи Криса русов. Сколько пользователей от них Касперски. Приятного чтения! страдает! Потому что используют дыОксана Родионова, рявый IE, который Microsoft в погоне фото из архива Криса Касперски за новыми функциями никак не может
65
web
Выдержит ли нагрузку ваш веб-сервер? Обзор программ для стресс-тестирования
Сергей Яремчук Сегодня организации включают использование веб-приложений в деловую стратегию, понимая, что только Интернет дает возможность клиентам из разных точек мира получать постоянный доступ к информации в любое время суток. Очень важно, чтобы веб-сервер был всегда работоспособен и доступен вне зависимости от нагрузки.
С
давая веб-сервер в эксплуата- вера, можно оценить, только создав цию, следует быть уверенным, условия, приближенные к реальным. что он выдержит планируемую Можно, конечно, рискнуть, запустив нагрузку. Неправильную настрой- сервис в работу, но репутацию, а знаку приложений, участвующих в со- чит, и клиентов потерять легко, а восздании веб-контента, недостаточную становить гораздо сложнее. Чтобы измощность системы и остальные фак- бежать этого, необходимо первонаторы, влияющие на работу веб-сер- чально проверить свои технические
66
и программные средства и оценить их поведение под нагрузкой. В этой ситуации на помощь приходят специальные инструменты, которые идеально было бы использовать, перед тем как сайт будет сделан доступным в Интернете. Они смогут дать качественно-количественную оценку работы
web веб-узла в целом и отдельных компонентов. Результатом может быть максимальное число пользователей, которые могут одновременно получить доступ к веб-узлу, число запросов обрабатываемых приложением или время ответа сервера. Основываясь на результате, веб-мастер (да, и сетевой администратор, ведь в работе сервера участвуют и другие компоненты сети, маршрутизаторы, межсетевой экран, кэширующий и прокси-сервер, база данных и пр.) смогут заранее выявить узкие места, возникающие изза несбалансированной работы компонентов, и исправить ситуацию, перед тем как включать систему в полноценную работу.
Построение плана тестирования Любая работа требует предварительной подготовки. При неправильно сформулированной задаче могут получиться результаты, которые, возможно, не полностью будут отражать реальное положение дел. Исходя из предполагаемой нагрузки веб-сервера необходимо определить критерии испытания, что будет считаться как успех, а что как неприемлемая работа (время ответа, загрузка сервера). Различают три варианта тестирования: Нагрузочное (Load-testing) – определяется работоспособность системы при некоторой строго заданной (планируемой, рабочей) нагрузке. Тест на устойчивость (Stress) – применяется для проверки параметров системы в анормальных и экстремальных условиях, во время тестирования производится попытка нарушить работу системы. Позволяет определить минимально необходимые величины системных ресурсов для работы приложения, оценить предельные возможности системы и факторы, ограничивающие эти возможности. Также определяется способность системы к сохранению целостности данных в аварийных ситуациях. Те с т п р о и з в о д и т е л ь н о с т и (Performance) – комплексная проверка, включающая предыдущие две, предназначенная для оценки всех показателей системы.
№12, декабрь 2006
Рисунок 1. Выбор типа теста в WAPT
Рисунок 2. Создание профиля будущего теста
Во время тестирования имитируется одновременная работа нескольких сотен или тысяч посетителей. Для большей правдивости каждый из пользователей может «ходить» по сайту по индивидуальному сценарию и параметрам. Также в процессе тестирования можно имитировать кратковременные пики нагрузки, когда количество посетителей скачкообразно увеличивается, что очень актуально для сайтов с неравномерным размером аудитории (например, новостных ресурсов). Чтобы полноценно провести тестирование, необходимо знать:
сколько посетителей планируется принимать в среднем, в пиковой нагрузке, время пиковой нагрузки; могут ли несколько пользователей иметь один и тот же IP-адрес и/или логин/пароль; среднее количество страниц, просматриваемых одним пользователем, есть ли различия в поведении между зарегистрированными и анонимными пользователями, количественно соотношение между такими пользователями, наиболее посещаемые страницы и время нахождения пользователя на узле;
67
web плановые технические мероприятия, которые могут повлиять на работу сервера и время их проведения (синхронизация, архивирование и пр.). От всех этих параметров может в итоге зависеть конечный результат. После анализа ситауции, возможно, потребуется дополнительное время на проведение тестирования, которое также не забудьте предусмотреть в плане. Необязательно все проверки включать в один тест, можно разбить сначала задачу на подзадачи. Например, проверка базовой системы (серверы: веб, приложений, базы данных) и проверка отдельных модулей (сервлеты, скрипты и пр., например, проверка аутентификации при большом количестве пользователей). В результате при тестировании могут получиться графики трех видов: линейный, нелинейный и насыщение. В первом случае при возрастании нагрузки время отклика (т.е. обработки) остается постоянным. При дальнейшем увеличении нагрузки время отклика увеличивается (почти линейно), и наконец наступает ситуация, подобная DOS-атаке, когда время отклика увеличивается неограниченно. Теперь, когда план действий готов, переходим к рассмотрению утилит, которые помогут его воплотить.
Рисунок 3. Проводим тест
WAPT 4.0
Рисунок 4. Окно Script Modeler
наличие динамических страниц
доступная пропускная способность
и страниц, изменяемых в течение определенного периода, и как часто это происходит; задействуется ли электронная почта, например для подтверждения полномочий пользователя; какая еще дополнительная информация используется для проверки статуса пользователя (cookies); требуется ли подтверждение полномочий пользователя сторонней организацией или удаленным сервером (например, номер кредитной карты) и будет ли представлена информация для тестирования;
канала, средний его расход на одного пользователя; может ли работа нескольких пользователей вызывать коллизию (например, торги); используется ли защищенное HTTPS (SSL / TLS) -соединение, в каких случаях; используются ли Java-аплеты, потоковое медиа, специальные плагины, что требуется с клиентской стороны для их поддержки (JavaScript, VBScript, ActiveX); используется ли кэширование страниц;
68
Одна из самых простых в использовании и в то же время функциональных программ обзора. Для проведения простого теста даже не потребовалось заглядывать в документацию, интерфейс прост и понятен, хотя и не локализован. Как вариант можно использовать командную строку. Работает под управлением MS Windows 98/Me/2000/ XP/2003. WAPT позволяет испытать устойчивость веб-сайта и других приложений, использующих веб-интерфейс, к реальным нагрузкам. Разрабатывается новосибирской компанией SoftLogica LLC. Для проверки WAPT может создавать множество виртуальных пользователей в одном сценарии, каждый из них может иметь индивидуальный IP-адрес, идентификационные параметры, скорость соединения. Поддерживаются Windows (NTLM), базовая аутентификация и постоянные
web и сессионные (persistent и session) cookies. Сценарий позволяет изменять задержки между запросами и динамически генерировать некоторые испытательные параметры, максимально имитируя, таким образом, поведение реальных пользователей. В запрос могут быть подставлены различные варианты http-заголовка, в настроках возможно указать кодировку страниц. Параметры (как статические, так и маска) User-Agent, X-Forwarded-For, IP address, указываются в настройках сценария. Значения параметров запроса могут быть рассчитаны несколькими способами, в том числе определены ответом сервера на предыдущий запрос, в том числе используя некоторые локальные переменные и функции. Сценарий поведения каждого виртуального пользователя включает три регулируемых стадии: начальную (Initial), основную (Mail) и заключительную (Final). Поддерживается работа по защищенному протоколу HTTPS (SSL/TLS) (версии SSL 2.0/3.0) и все типы прокси-серверов (HTTP, HTTPS, SOCKS4, SOCKS5). Созданные сценарии, сохраняемые в файле XML-формата, можно использовать повторно. Кроме стандартных Performance и Stress, в списке присутствуют: Smoke – краткий тест, предназначенный для определения готовности приложения к работе вообще, например, есть ли смысл тестировать дальше, если сервер думает минуту. Capacity – тест для определения максимального количества посетителей; Endurance – тестирование под средней нагрузкой, в течение долгого периода времени. Для проведения простого теста после установки WAPT и настройки основных параметров с помощью Setting Wizard (настройка прокси, версий HTTP и SSL, времени ответа, используемых по умолчанию). Необходимо выбрать «New → Scenario», в результате запустится мастер создания теста. На его первом шаге указывается тип теста (см. рис. 1) и далее в каждом окне заполняем параметры будущего теста. Здесь можно указать фиксированное количество виртуальных пользователей, либо сту-
№12, декабрь 2006
Рисунок 5. Результаты теста OpenSTA
пенчатое увеличение с указанием ми- рого можно тут же проверить, нажав нимального и максимального числа «Go». Одновременно последует запрос и временного интервала, выставить на запуск Recorder, который будет оттаймер проведения теста. На следую- слеживать посещенные страницы и защем шаге выставляется время между писывать URL (они будут выводиться кликами (think time), скорость соедине- в панели слева). И когда вся инфорния, указать диапазон IP-адресов (IP мация собрана, нажимаем «Run Test». Spoofing), который будет использован Подробные отчеты в форме графивиртуальными пользователями. Нажа- ка выводятся по ходу проведения тестие на «IP Adress List» позволит соста- та, по окончании будет сформировавить список таких адресов. Также вы- на и html-страница. В результате можставляется http-параметр User-Agent но получить информацию по времеи включается эмуляция прокси. Если ни ответа сервера с возрастанием натребуется, чтобы виртуальные поль- грузки, количеству переданных и призователи имели индивидуальные на- нятых байт, как в общем, так и в расстройки на следующем шаге масте- чете на одного пользователя, количесра, для каждого необходимо создать тве ошибок. свой профиль, нажав «New» или загрузив сохраненный. В последующем окне программы необходимо будет выставить параметры в каждом из таких профилей. После нажатия на кнопку «Готово» сценарий сохраняется. Это мы подготовили параметры теста. Для указания объекта тестирования необходимо создать профиль «New → Profile» и заполнить все параметры на обеих вкладках (см. рис.2). Здесь же опять, только уже индивидуально, доступны для редактирования некоторые параметры, задаваемые раннее с помощью мастера. Также указывается загрузка рисунков виртуальным пользователем, параметры аутентификации, использование Cookies и другие. На вкладке «Recorder» указываРисунок 6. Создание сценария тестирования ем адрес сайта, доступность кото-
69
web
Рисунок 7. Отчет Web Application Stress Tool
Рисунок 8. Настройка Thread Groups в Apache JMeter
WAPT распространяется под коммерческой лицензией, стоимость одной установки 350 у.е., с сайта проекта вы можете получить работающую без ограничений в течение 30-дней тестовую версию.
OpenSTA Open Systems Testing Architecture – это больше чем приложение для тес-
70
тирования, это открытая архитектура, проектируемая вокруг открытых стандартов, в частности CORBA. Проект создан в 2001 году группой компаний CYRANO, которая поддерживала коммерческую версию продукта, но CYRANO распалась, и статус OpenSTA находится в подвешенном состоянии, так как на наследие CYRANO претендует несколько компаний.
В настоящее время OpenSTA распространяется как приложение, с открытым кодом под лицензией GNU GPL, работает в Windows NT 4.0SP5/ 2000/XP. Текущий инструментарий позволяет провести нагрузочное испытание http/https-сервисов, хотя его архитектура способна на большее. OpenSTA позволяет создавать тестовые сценарии на специализированном языке SCL (Script Control Language). Для упрощения создания и редактирования сценариев используется специальный инструмент Script Modeler (см. рис.4). После его запуска необходимо выбрать «Tools → Canonicalize URL», далее запустится веб-браузер, и все посещенные URL будут сохранены в скрипт. Все параметры запроса поддаются редактированию (скрипт, кстати, сам по себе интересен для понимания работы http), возможна подстановка переменных. Структура теста, заголовки, html будет выводиться во вкладках в панели слева. Тесты удобно объединять в наборы. Настройки прокси задаются в самом скрипте, поэтому при выполнении задания можно использовать несколько прокси. Реализована возможность организации распределенного тестирования, что повышает реалистичность тестов и может понадобиться в том случае, когда с одного компьютера не получается полностью нагрузить мощный сервер. Каждая из машин такой системы может выполнять свою группу заданий. В этом случае одна из машин (repository host) осуществляет сбор и хранение результатов. После установки на каждой тестирующей системе запускается сервер имен OpenSTA name server, работа которого обязательна. Поддерживается аутентификация пользователей и установление соединений по протоколу SSL. Параметры работы нагружаемой системы во время проведения теста можно контролировать с помощью SNMP и средств Windows NT. Для этого достаточно выбрать «Collector → New Collector» и указать источник. Результаты тестирования, включающие времена откликов, количество переданных в секунду байт, коды ответа для каждого запроса, количество ошибок, выводятся в виде таблиц и графиков (см. рис. 5). Использование фильтров (время теста, время ответа сер-
web вера, код ответа, размер, виртуальный пользователь или адрес, URL) позволяет отобрать необходимые результаты. Возможен экспорт результата в CSV-файл (например, для последующей обработки в Excel). OpenSTA мощный инструмент, обладающий всеми необходимыми функциями, но требующий некоторой подготовки как самого тестирующего, так и дополнительных временных затрат при проведении конкретного теста. К тому же возможности по выводу отчетов его несколько ограничены. В Интернете можно найти скрипты и плагины [1, 2], помогающие при анализе информации. Например, BView, доступный на домашнем сайте проекта, помогает отлаживать сценарии.
Microsoft Web Application Stress Tool
Рисунок 9. Вывод результата Aggregate Graph
По окончании теста выводится от- ложений и их отдельных компоненБесплатный продукт компании Microsoft, работающий только в среде Windows чет в текстовой форме (см. рис. 7), тов (скрипты, сервлеты, Java-объеки предназначенный для стресс-тестов в котором можно получить информа- ты и др.), но также FTP-серверов, баз данных (с использованием драйвера веб-сервисов. Имеется и более совре- цию по следующим вопросам: менная и также бесплатная разработ- число обрабатываемых запросов JDBC) и сети. Функциональность расв единицу времени; ширяется с помощью плагинов. Подка Web Capacity Analysis Tool, представляющая собой комплексный про- среднее время задержки между за- держка SSL возможна при наличии библиотеки JSSE (Java Secure Sockets просом и получением данных; дукт для работы с IIS, предназначенная в том числе и для тестов произво- скорость передачи данных на сер- Extension), которая входит в стандартвер и с сервера, количество оши- ную поставку JDK1.4 и выше. Возмождительности. Сценарий тестирования бок. на работа как с использованием граможет быть создан вручную или запифического интерфейса, так и в комансан с помощью веб-браузера и затем Отчет можно экспортировать в CSV- дной строке. Предусмотрены механизотредактирован. После выбора варианта создания сценария (см. рис. 6) файл. Никаких возможностей по ста- мы авторизации виртуальных пользозапускается простой мастер, который тистической обработке не предусмот- вателей, поддерживаются пользовапоможет сохранить параметры. Для рено, то есть с его помощью можно тельские сеансы, шаблоны, кэширокаждого запроса фиксируется запра- только оценить работу при определен- вание и последующий offline-анализ шиваемый URL, время между запро- ных условиях. Среди возможностей результатов теста, функции позволяют сформировать следующий запрос, сами (delay), cookies и заголовки. Пос- Web Application Stress Tool: ле записи скрипта в «Setting» выстав- аутентификация виртуальных поль- основываясь на информации ответа зователей и пользовательских селяется уровень нагрузки (stress level), ансов; который регулируется путем задания количества нитей, осуществляю- работа по протоколу SSL; возможность создания групп URL щих запросы к серверу. Параметром с заданием относительной доли за«stress multiplier» задается число сокепросов для каждой группы. тов на нить. Число виртуальных пользователей в Web Application Stress Tool Возможно использование нескольрассчитывается как произведение числа нитей на число сокетов, открытых ких централизованно управляемых каждой из нитей. Далее задается об- клиентских машин для тестирования щее время теста, задержки между веб-сервера. запросами (может быть использовано случайное число), ширина полосы Apache JMeter и прочие параметры. Создание макси- Apache JMeter представляет собой мальной нагрузки осуществляется пу- Java-приложение с открытым кодом, тем задания нулевого интервала ожи- предназначенное для нагрузочноРисунок 10. Подсказка в NeoLoad го тестирования не только веб-придания между запросами.
№12, декабрь 2006
71
web на предыдущий. При наличии пакета JavaMail отчеты по проведенному тесту могут быть отправлены по электронной почте. Так же как и OpenSTA, JMeter позволяет проводить распределенные тесты. В этом случае один из компьютеров является сервером (bin/jmeter-server.bat), который управляет клиентами и собирает итоговую информацию. Использование Java подразумевает кроссплатформенность, JMeter нормально работает в UNIX (Solaris, Linux и пр.), Windows 98/NT/2000/XP и OpenVMS Alpha 7.3+. Для работы достаточно запустить в консоли файл jmeter.bat (Windows) или jmeter (UNIX). JMeter имеет встроенный проксисервер, который предназначен для записи сессий. Если тестирование производится через внешний прокси, то его параметры необходимо указать при запуске программы. $ bin/jmeter -H proxy.server ↵ -P 8000 -u username ↵ -a password
Некоторые параметры, чтобы не вводить их каждый раз, можно сохранить в файле system.properties. Перед началом тестирования необходимо составить тестовый план, описы-
вающий серию заданий, которые необходимо выполнить Jmeter. Он должен содержать одну или несколько групп потоков (Thread Groups) и другие элементы: Логические контроллеры (Logic conrollers). Типовые контроллеры (Sample generating controllers). Слушатели (Listeners). Таймеры (Timers). Соответствия (Assertions). Конфиг урационные элементы (Configuration elements). Первым делом добавляем группу потоков («Edit → Add → Thread Group»). В ее настройках (см. рис. 8) указываем название, количество запускаемых потоков, то есть виртуальных пользователей (Number of threads), время задержки между запуском потоков (Ramp-Up Period), количество циклов выполнения задания (Loop Count), здесь же возможность выполнения задания по расписанию (Sheduler). Далее, щелкая в созданную группу, необходимо добавить образец запроса (Sampler), выбрав его из списка. Для нагрузочного тестирования или проверки работоспособности сервера достаточно выбрать HTTP Request («Add → Sampler → HTTP Request»). Здесь указываем назва-
ние, IP-адрес и порт веб-сервера, протокол, метод передачи данных (GET, POST), параметры переадресации, передачу файлов на сервер. Вывод результата осуществляется с помощью Listeners. Их в списке 14, каждый выводит результат по-своему. Например, Aggregate Graph выводит суммарные результаты теста в виде таблицы и графика (см. рис. 9).
Инструмент тестирования NeoLoad Еще одна система, позволяющая провести нагрузочное тестирование вебприложений, написанная на Java, работает на компьютерах, работающих под управлением Windows NT/2000/XP, Linux, Solaris SPARC (7+). Но, учитывая, что в отчете можно получить подробную информацию по каждому загруженному файлу, NeoLoad весьма удобен для оценки работы отдельных компонентов (J2EE, NET, AJAX, SOAP, PHP, ASP, CGI, Flash, аплетов и пр.). Возможна установка времени задержки между запросами (thinktime) глобально и индивидуально для каждой страницы. Тестирование проводится как с использованием весьма удобной графической оболочки, так и с помощью командной строки (используя заранее подготовленный XML файл). Поддержива-
Сводная таблица
Сайт Тип поддерживаемой ОС Вид лицензии
Достоинства
Недостатки
72
WAPT 4.0
OpenSTA 1.4.3
Microsoft Web Application Stress Tool
Apache JMeter 2.2
NeoLoad 2.0.3
http://www.loadtestingtool.com
http://www.opensta.org, http://opensta.sf.net
http://support.microsoft.com/ kb/231282/en-us
http://jakarta.apache.org/ jmeter
http://www.neotys.com
Windows 98/Me/2000/XP/2003
Windows NT 4.0SP5/ 2000/XP
Windows
UNIX (Solaris, Linux и пр.), Windows 98/NT/ 2000/XP, OpenVMS Alpha 7.3+
Windows NT/2000/XP, Linux, Solaris SPARC (7+)
Коммерческая, 350 $
GNU GPL
Freeware
Apache License
Коммерческая, от 776 €
Понятный интерфейс, несколько видов тестов, динамическая подстановка параметров теста, индивидуальные настройки теста, IP Spoofing, мониторинг результата в реальном времени
Доступность исходных текстов, использование во время теста нескольких прокси, удобный редактор скриптов, автоматическая работа с cookies, возможность распределенного тестирования
Простой мастер создания тестов, работа с cookies, регулировка нагрузки по разным URL, бесплатно
Кроссплатформенность, тестирование ftp, баз данных, отдельных компонентов, загрузка файлов на сервер, распределенные тесты
Кроссплатформенность, тестирование отдельных компонентов, работа с виртуальными пользователями, удачные отчеты, наличие плагинов расширяющих функциональность, обработка ответа сервера, сравнение результатов
Нельзя сравнить результаты разных тестов
Необходимо время на освоение и подготовку теста, отчеты несколько не удобны, нет IP Spoofing
Неудобно рассчитывать число виртуальных пользователей, невозможность индивидуальной настройки виртуальных пользователей, очень простой отчет, нет IP Spoofing
Требуется некоторое время на освоение, нет IP Spoofing, потребляет большое количество системных ресурсов
Высокая стоимость
web ет работу с зашифрованным протоколом HTTPS (SSL/TLS), работу с HTTP и HTTPS прокси, basic веб-аутентификацию и cookies. Работает с Windows NTLM-аутентификацией, автоматически определяя во время записи сценария и затем проигрывает во время теста. Для работы с различными профилями для регистрации пользователей могут быть использованы переменные. При проведении теста можно задействовать дополнительные мониторы, использующие SNMP, WebLogic, WebSphere, RSTAT и Windows, Linux, Solaris, с помощью которых можно контролировать загрузку системы (процессора, памяти). Позволяет проводить распределенные тесты. Один из компьютеров является контролером, на остальные устанавливаются генераторы нагрузки (loadGenerator). Контролер распределяет нагрузку между loadGenerator и собирает статистику. Очень удобно реализована работа с виртуальными пользователями. Пользователи имеют индивидуальные настройки, затем они объединяются в Populations (должна быть создана как минимум одна Populations), в Populations можно задать общее поведение (например, 40% пользователей популяции посещают динамические ресурсы, 20% читают новости). Виртуальные пользователи могут иметь индивидуальный IP-адрес, полосу и использовать свой сценарий теста. Сценарий будущего теста создать очень просто. Запускаем приложение (при первом запуске потребуется ввести регистрационный ключ, 30дневная версия после регистрации будет отправлена по почте), выбираем «New Project», вводим название проекта. После этого будет показана небольшая подсказка по поводу дальнейших действий (см. рис. 10), нажатие «Start Recording» запустит веб-браузер, все перемещения с его помощью будут записаны. По окончанию нажимаем «Stop Recording» или закрываем браузер. Запускается мастер, который поможет создать виртуальных пользователей и произведет автоматический поиск динамических параметров в записанных страницах, выставит среднее значение thinktime. Компоненты страницы (HTML, images, CSS) сохра-
№12, декабрь 2006
Рисунок 11. Вывод результата теста в NeoLoad
няются отдельно. Для получения ре- раметру. Проект затем можно сохразультата требуется пройти три шага: нить для повторного использования. Design – настройка проекта, здесь три вкладки. В «Repository» указы- Вывод ваются веб-страницы и парамет- Тесты, как правило, проводятся не один ры запросов, в «Virtual User» созда- раз, и после устранения недостатков ются виртуальные пользователи хотелось бы сравнить результат с преи указывается, какие из веб-стра- дыдущим. К сожалению, среди предниц они должны посетить, и усло- ставленных продуктов такая возможвия, которые выбираются в левой ность есть только у NeoLoad. Еще один вкладке в «Actions», проверяется подобный инструмент Web Performance доступ пользователя к выбранным Suite [3], также позволяет сравнить рестраницам. В «Populations» – зада- зультаты тестов, в обзор не попал пония каждой из групп пользовате- тому, что не удалось провести полнолей. В «Actions» могут быть выбра- ценный тест (вероятно, из-за ограничены следующие действия: ний trial-версии). Также следует обратить внимание на LoadRuner, 10-днев Delay (установка задержки); ную тестовую версию которого раз Loop (повтор запроса); мером в 300 Мб можно скачать с сай While (цикл); та проекта [4]. Используя утилиты на If...Then...Else (условие); Container и Random Container грузочного тестирования, вы сможете получить информацию о работе веб(групповые действия); Try...Catch (обработка ошибок); сервиса и, приняв необходимые меры Stop virtual user (остановка вир- по устранению выявленных недостаттуального пользователя). ков, гарантировать требуемую произ Runtime – указываются парамет- водительность. ры теста, проводится тест. Здесь же в отдельных вкладках по ходу 1. Скрипты к OpenSTA – http://www. проведения теста выводится стаtrickytools.com/php/opensta.php. тистика. 2. Д о к у м е н т « A n a l y z i n g O p e n S TA Results – отвечает за вывод разPerformance Results» – http://www.goldb. личной статистики (см. рис. 11) org/docs/opensta_log_analysis.pdf. в виде таблиц и графиков. 3. Сайт проекта Web Performance Suite – Причем, кроме общих значений, можно, используя систему фильтров, отобрать информацию по любому па-
http://www.webperformanceinc.com. 4. Сайт проекта LoadRuner – http://www. mercury.com/us/products/performancecenter/loadrunner.
73
web
Как надо и как не надо защищать веб-контент от кражи
Крис Касперски Для охраны веб-контента можно использовать одну из многих защитных систем, имеющихся на рынке (но большинство из них давно поломано), или попытаться смастерить что-то свое, переоткрывая колесо и наступая на грабли, сопутствующие с подводными рифами. Как надо и как не надо защищать веб-контент от гнусных посягательств?
Защищать или не защищать Специфика защиты веб-контента (под которым мы будем понимать всю совокупность текстового и графического содержимого вместе с особенностями оформления) антагонистична по своей природе. С одной стороны, мы стремимся передать информацию
74
посетителю, а с другой – очень сильно не хотим, чтобы он получил эту информацию в любом виде, пригодном для дальнейшего осмысления и обработки. Как говорится, что в Сеть попало, то пропало. В этом и есть сущность Сети. Любая полезная информация мгновенно распространяется по сотням тысяч узлов, и в мире нет си-
лы, способной это предотвратить. Если вы хотите чем-то поделиться с миром – делитесь! Одна искорка не сделает мир теплее или светлее, но… сидеть в кромешной темноте и ничего не делать – еще глупее. Но это все была лирика, которой сыт не будешь. А у кого-то уже жена, и дети растут. Все это хозяйство требу-
web ет денег, и, чтобы их заработать, приходится охранять свой креатив от желающих обогатиться за чужой счет. Но всегда ли нужно защищаться? Например, сайтам, ненавязчиво рекламирующим бытовую и офисную технику (фотоаппараты, мобильные телефоны) и живущим преимущество за счет спонсоров и рекламы, защита идет только во вред. Если ктото хочет скопировать рекламную статью, описание или документацию на новый смартфон – пусть копирует! Он ведь не зря копирует, а с расчетом где-то разместить! Пусть даже на своем сайте, в журнале, книжке. Чем больше людей узнают о товаре, тем круче взметнется кривая продаж! Тем не менее существует большая группа людей, считающих, что любое несанкционированное копирование информации – это прямая упущенная выгода и без защиты сайт оставлять нельзя. Посетителям демонстрируются фотографии или электронные тексты, но за возможность сохранить их на диск/распечатать/вставить в свой реферат необходимо заплатить. А платить, естественно, никто не хочет (или хочет, но не может ввиду неразвитости систем оплаты). Вот и приходится защищать. При всей порочности этой методики и моем отвращении к ней однажды я оказался замешан в проектировании такой защиты. А для этого потребовалось проанализировать весь комплекс технических средств, имеющихся на рынке, намотать на ус чужие ошибки, отобрать лучшие решения, добавить свои собственные идеи и соединить все это воедино.
Рисунок 1. Дизайн сайта – единственное, что нельзя защитить
Что именно мы собираемся защищать Современные сайты далеко ушли от своих прародителей, и, собственно, самого HTML-кода «в чистом виде» в них практически не осталось. Основную статью расходов ныне составляют разработка графического дизайна, проектирование PHP-движка (естественно, PHP приведен лишь в качестве примера, зная CGI, движок можно написать и на Си), ну и, наконец, «набивка» сайта живым содержимым – текстами статей, фотографиями и т. д. Рисунок 2. …а вот графические элементы дизайна Дизайн – единственное, что нельзя защитить, поскольку защитить можно! расположение графических элементов и организация доступа к ним – это идея в чистом виде, выпадающая из поля ческой совокупности, ведь посещаемость (в долговремензрения авторского и патентного прав (рис. 1). Но вот гра- ной перспективе) определяется именно содержимым, нефические элементы, слагающие дизайн, защитить можно прикосновенности которого угрожает: сохранение HTML на диск; (хоть и сложно) (рис. 2). PHP-движок в защите не нуждается, поскольку правиль- копирование фрагментов текста в буфер обмена; но настроенный веб-сервер никогда не отдает програм- сохранение изображений правой кнопкой мыши; мные модули, а всего лишь возвращает результат их рабо- «телепортеры» – программы, сохраняющие весь сайт целиком (или его часть) для off-line просмотра или соты, представляющий собой веб-страничку, сгенерированздания «пиратского» зеркала. ную на лету, благодаря чему потребность в защите самого HTML-кода практически полностью отпадает. ТеоретичесОднако прежде чем приступать к защите, неплохо бы ки веб-мастер может запрограммировать хитрый JavaScript, внедряемый в страницу в «чистом виде», однако что мешает рассмотреть ситуацию не только с технической, но и с экоему реализовать весь «стратегический» код на серверной номической точки зрения. Никакая защита не достается стороне? Конечно, какая-то часть кода неизбежно должна бесплатно, даже если взять готовый некоммерческий проприсутствовать и на клиентской стороне для обеспечения тектор, то следует сразу же приготовить себя к тому, что занадлежащего уровня интерактивности (ниспадающие ме- шифрованные страницы (если в защите использовалось ню, всплывающие подсказки…), но все это уже давно на- шифрование) окажутся незамеченными поисковыми рописано и претендовать на уникальность в этой «отрасли» ботами, конфликты защиты с не IE-браузерами (а разработать неконфликтную защиту очень трудно). Короче, мы тепо меньшей мере странно. В защите нуждается не дизайн и не PHP/JS-код, а имен- ряем пользователей, и если очень постараться, то можно но само содержимое сайта во всей его текстовой и графи- добиться, что на сайт вообще никто не зайдет. Спрашива-
№12, декабрь 2006
75
web ется, а для чего тогда его вообще делать?! Кроме того, никакая защита не обходится без оверхида (т.е. накладных расходов), выражающихся в увеличении размеров страницы и, как следствие, увеличение нагрузки на сервер и дополнительный трафик. А вот это уже прямой убыток (особенно на сайтах с высокой посещаемостью). Самое главное, что опытных пользователей никакая защита не остановит. Одно дело, если человек хочет перетащить картинку на свой рабочий стол или пополнить домашнюю библиотеку. Тогда действительно есть шанс, что в процессе ковыряния защиты его желание упадет ниже нуля и он просто махнет рукой и займется чем-то более прибыльным или интересным. А вот если копирование сайта преследует коммерческую выгоду, превышающую стоимость взлома, он будет скопирован. Кто-то привлекает к этой работе хакеров, кто-то голодных (и бесправных!) студентов, сравнительно быстро «перебивающих» сайт вручную.
То есть мысль следующая: по сравнению с защитой программного обеспечения защита веб-контента более бесполезна и менее надежна, потому что есть общий алгоритм ее взлома, связанный с разумной стоимостью, которая в разы ниже, чем для программного обеспечения, так как не требует квалифицированной рабочей силы.
Как не нужно защищать текст и картинки Количество веб-мастеров, пользующихся «грязными» защитными приемами, просто поражает. Эти приемы доставляют множество неудобств легальным пользователям и ломаются за несколько секунд даже без напряжения мозговых извилин. Самым распространенным методом защиты копирования картинок и грабежа текста был и остается JavaScript, перехватывающий click и возвращающий false если event.button == 2. В простейшем случае исходный текст этой «защиты» выглядит так: Листинг 1. Листинг Java-скрипта, блокирующий правую кнопку мыши <HEAD> <SCRIPT language=JavaScript> function click(x) { if (document.all) { if (event.button == 2) { alert("this operation isn't allowed"); return false; } } } document.onmousedown=click; </SCRIPT> </HEAD>
Рисунок 3. Защита перехватывает нажатие правой кнопки мыши и вместо контекстного меню выводит диалоговое окно с лаконичным сообщением «this operation isn't allowed»
Рисунок 4. Обход защиты «правой кнопки» путем наведения мышиного курсора в угол сохраняемой картинки в последних версиях IE
76
<BODY>
А вот результат его работы: выделяем текст мышью, щелкаем правой кнопкой мыши и вместо привычного контекстного меню видим грозное диалоговое окно (см. рис. 3). Если же после выделения текста не трогать мышь, а нажать <CTRL-Ins>, <CTRL-C> или обратиться к пункту «Копировать» в меню «Правка», то, несмотря ни на какие защиты, текст и даже изображение будут успешно скопированы в буфер обмена, откуда их (естественно, по раздельности) можно вставить в текстовый и графический редакторы соответственно. Кстати, если в последних версиях IE подвести к картинке мышь и некоторое время ее не двигать, возникнет панель инструментов с изображением «дискетки», сохраняющей изображение несмотря ни на какие скрипты (см. рис. 4). Хорошо, давайте усилим защиту и напишем скрипт, запрещающий не только контекстное меню, но еще и выделение текста, причем не только мышью, но и по комбинаВыделить все»:
web Листинг 2. Исходный код Java-скрипта, блокирующего не только правую кнопку мыши, но еще и выделение текста всеми доступными способами <SCRIPT LANGUAGE="JavaScript"> document.ondragstart = ops; document.onselectstart = ops; document.oncontextmenu = ops; function ops() { return false; }
Рисунок 5. Заблокированные пункты меню «Вырезать», «Копировать» и «Вставить» в IE, «Выделить все» хоть и не заблокировано, но все равно не работает
</SCRIPT>
Проверка показывает, что мышь действительно «отдыхает», пункты «Выделить», «Копировать» и «Вставить» заблокированы, а «Выделить все» хоть и не заблокировано, но не работает, как и контекстное меню, вызываемое по <SHIFT-F10> или клавишей, расположенной слева от правой кнопки <CTRL> (см. рис. 5). Однако торжествовать победу еще рано. Во-первых, панель инструментов, возникающая при наведении мышью на картинку, по-прежнему исправно работает, а вовторых, пользователь может отключить JavaScript, возвращая своему любимому браузеру всю его функциональность (см. рис .6). Раз наша защита построена на скриптах, необходимо проектировать страницу так, чтобы без скриптов она отображалась не полностью или вообще не отображалась совсем. Проще всего использовать конструкцию «<script>document.write("text");</script>», конкретное воплощение которой может выглядеть, например, так:
Рисунок 6. Обход защиты путем отключения скриптов — правая кнопка сразу же восстанавливает свою работоспособность
Листинг 3. Вывод содержимого сайта через скрипты и, как следствие, препятствующий их отключению <script>document.write ("Данный перевод (ввиду нехватки времени) является чисто техническим с рядом литературных огрехов, которые у меня не хватило времени исправить. Нумерация статей с оригиналом может не совпадать. Все комментарии в фигурных скобках – это замечания переводчика");</script>
Ниже показан внешний вид защищенной странички с отключенными JavaScript (естественно, вывод предупреждения о необходимости включения скриптов лишним не будет и совсем не помешает, а то ведь некоторые могут и не догадаться, что тут что-то предполагается увидеть) (см. рис. 7). Ладно, с текстом мы более или менее разобрались. А как быть с картинками? Некоторые разрезают одну картинку на множество мелких частей, наивно полагая, что пользователю будет лень сохранить пару десятков фрагментов, а затем подгонять их в текстовом редакторе. Но… тут выясняется, что: особенности формата jpg приводят к тому, что края разрезанной картинки уже не стыкуются и приходится либо уменьшать степень сжатия, либо переходить на png, но и то, и другое ведет к росту трафика и замедлению загрузки; браузеры очень плохо справляются со склейкой картинок и очень часто возникают «артефакты» в виде пустых линий или наложений картинок друг на друга (особенно если пользователь смотрит страничку с нестандартными настройками браузера типа разрешения, масштаба и т. д.);
№12, декабрь 2006
Рисунок 7. Внешний вид защищенной странички с отключенными скриптами (исчез ранее присутствующий текст, см. рис. 6)
клавиша <print screen> делает грабеж картинки простым и приятным. Так же не стоит использовать картинки в виде флешизображений. Их уже научились сохранять даже начинающие пользователи, а многие менеджеры закачек делают это автоматически. Сложнее бороться с сохранением страницы на диск. Некоторые браузеры содержат ошибки, приводящие к невозможности сохранения при нарушении структуры HTML,
77
web
Рисунок 8. Внешний вид программы SubRip, обладающий способностью качественно распознавать текст с предельно низким разрешением (вообще-то он используется для «грабежа» субтитров с DVD, но при желании его можно приспособить и для работы и с другими видами графических текстов)
Рисунок 9. Сохранение целого сайта на жесткий диск с помощью программы Teleport Pro
при этом сама страница отображается вполне нормально, но… никаких гарантий, что остальные браузеры поведут себя точно так же, у нас нет. Зато вполне оправдывает себя прием «разрезания» текстового содержимого на кусочки по 1-2 Кб. Читать страницу (в интерактивном режиме) вполне возможно, и даже нельзя сказать, чтобы сильно затруднительно (хотя постоянно нажимать на ссылку «Далее», конечно, быстро надоедает), а вот собрать из всех сохраненных страничек исходную статью – это же сколько труда нужно затратить! Кстати, если по каким-то причинам страница не сохраняется на диск, можно открыть ее в MS Word и сохранить на диск либо как html, либо как doc. Вместе с картинками, таблицами и другими элементами. Если же это не получается и Word с грохотом падает, имеет смысл попытаться выделить наиболее значимую часть страницы и вставить ее в Word через буфер обмена. В 99% случаев это срабатывает!
Сложная защита с простым взломом Бороться с грабежом веб-контента традиционными средствами совершенно бесперспективно. А что если… отображать текстовое содержимое в графическом виде? Идея сов-
78
сем не так уж и безумна, как кажется. Ведь преобразование текста в графику необязательно осуществлять на серверной стороне! Это можно поручить и JavaScript (или ActiveXмодулю, если это IE). На сервере мы имеем PHP-модуль, шифрующий текст и передающий его клиенту. Браузер клиента «скармливает» его JavaScript/ActiveX-модулю и тот в окончательном виде выводит его на экран. Для чтения разрешения вполне достаточно, а вот для OCR уже маловато, да и кому придет в голову пропускать веб-страницы через OCR одну за другой? Конечно, назвать это защитой можно только с большой натяжкой, поскольку вместе с зашифрованным текстом клиенту передается и сам ключ, следовательно, разобравшись в алгоритме шифрования (изучив код сценария JavaScript), хакер без труда напишет программу, расшифровывающую текст, но не превращающую его в графику. Естественно, на медленных компьютерах такой скрипт будет очень сильно тормозить и по сложности своей реализации он вплотную приближается к самому браузеру или… к Adobe c ее PDF, в последние версии которого добавлена возможность эффективной работы по Сети со всем букетом атрибутов запретов – невозможность выделения текста/печати, запрет сохранения на диск и т. д. Зачем же изобретать велосипед, когда можно купить готовый? Увы, готовый страдает целым рядом врожденных пороков. Как и любая серийная защита, Adobe поломан еще много лет назад и никакие ухищрения не позволят ему противостоять армии хакеров уже хотя бы в силу того факта, что хакеров много, а он один. Напротив, ковырять JavaScript, созданный на «коленках» веб-дизайнером Васей, скорее всего никто не будет. К тому же реализовывать полноценный rendering-engine в скрипте совершенно необязательно. Достаточно ограничиться одним лишь текстом. Для усложнения взлома можно преобразовывать в графику некоторое количество символов еще на сервере (например, 6 или 9%, чтобы несильно замедлять время загрузки страницы), тогда без OCR уже не обойтись. Популярный FineReader с таким разрешением уже не справляется, но с ним великолепно работает слегка переделанный SubRip (кстати говоря, распространяемый совершенно бесплатно). Идея заключается в следующем: графический файл разбивается на символы (алгоритм выделения символов, даже наложенных на сложные и малоконтрастные текстуры, давно отработан), затем изображение показывается пользователю, который должен ввести соответствующий ему символ (или даже несколько символов, если во входном тексте несколько букв слипаются в сплошное «месиво»). Для каждого символа создается битовая матрица, и в дальнейшем это изображение распознается автоматически. То есть программа как бы самообучается в процессе работы и обращается к пользователю все реже и реже. Поскольку возможных начертаний одного и того же символа существует не так уж и много (естественно, в контексте распознаваемой страницы, а не «начертаний вообще»), а самих символов и того меньше, обучение занимает совсем немного времени, и на выходе получается довольно качественно распознанный текст, пусть
web Готовые защитные продукты HTML Protector – обладает способностью выборочно шифровать HTML-содержимое (Java/VBScript, e-mail-адреса против mail-грабберов, линки, текст, изображения), борется с Teleport и подобными ему программами, позволяет запрещать off-line-просмотр, выделение текста, сохранение изображений и печать; при необходимости разрезает изображения на кусочки и/или накладывает на них водяные знаки, конвертирует их в swf, а также препятствует отображению страницы во фрейме чужого сайта или копированию его фрагментов, поддерживает IE, FireFox и Opera: http://antssoft.fileburst.com/ htmlprotector.zip. HTML Power – шифрует всю HTML-страницу целиком или только ее часть, борется с Teleport и подобными ему программами, препятствует сохранению страницы на диск, картинки не режет, водяные знаки не накладывает, но зато умеет блокировать правую кнопку мыши, выделение текста, сохранение
изображений и вывод на печать: http:// www.pullsoft.com/htmlpower.zip. Encrypt HTML Pro – шифрует всю HTML-страницу целиком или только ее часть, с Teleport не борется, изображения не режет, сохранению страницы не препятствует, но блокирует правую кнопку мыши, контекстное меню, выделение текста и печать: http://www.mtopsoft.com /download / enchp.zip. Внимание:
Не стоит путать шифрование, используемое этими программами, с шифрованием, описанным в статье: зашифрованное содержимое расшифровывается и выводится в браузер в текстовом виде и потому может быть сохранено на диск универсальной программой, представляющей собой обыкновенное расширение для браузера и считывающей содержимое окна через API-функции в обход пользовательского интерфейса. Такую программу (для каждого браузера) достаточно написать
не без ошибок, но все же пригодный для последующей работы с ним (см. рис .8). Таким образом, взломать предложенную защиту все-таки возможно, но… для этого нужно быть хакером, а «потуги» обычных пользователей она выдержит вполне успешно.
Защита от телепортеров Большинство веб-мастеров очень не любят, когда пользователи выкачивают весь сайт целиком, а потом спокойно почитывает его в off-line или прожигают на болванки, сбываемые в ближайших ларьках. Существует множество программ, предназначенных для автоматического скачивания и обладающих весьма продвинутой системой фильтров, способных качать только то, что нужно, и не качать одни и те же страницы несколько раз подряд. Тем не менее их достаточно просто обмануть (см. рис .9). Первое, что приходит в голову, – это запрашивать подтверждение при скачивании каждого файла в виде графической картинки с искаженными символами, которые требуется ввести (см. рис. 10). Конечно, это утомляет честных посетителей, но зато делает «телепортирование» сайта практически невозможным. Можно выводить картинку на экран, перекладывая задачу распознавания на плечи человека, и если таких людей будет много, то копирование займет вполне разумное время. При желании можно даже привлечь аудиторию с какого-нибудь порнографического сайта с гиперпосещаемостью, если, конечно, «телепортирование» стоит того. Другой механизм предполагает генерацию случайных аплинков, что приводит к «зацикливанию» телепортера.
№12, декабрь 2006
всего один раз, и она будет работать как часы. Напротив, описанный механизм шифрования с переводом текста в графику не допускает универсального взлома, требуя к себе индивидуального подхода! Зашифрованное содержимое (неважно каким путем) недоступно поисковым роботам, что крайне негативно отражается на посещаемости, поэтому шифрование имеет смысл использовать только для создания «закрытых клубов» и «тайных сообществ», в которые попасть можно только по «приглашению», а простой человек с улицы их навряд ли найдет. Шифрование также позволяет обходить разнообразные adult-фильтры, блокирующие доступ к контенту определенного содержимого (к которому относятся не только порноресурсы, но и некоторые политические сайты), впрочем, для этих целей существуют и другие, гораздо более продвинутые методики (например, VPN-туннели или https-proxy сервера).
Если веб-содержимое генерируется PHP (а в большинстве случаев это так), совсем несложно сделать, чтобы ссылка на предыдущую страницу (или «home page») каждый раз генерировалась случайным образом и «телепортер», обнаружив, что такой ссылки еще нет в его базе, повторял загрузку «home» несчетное количество раз. Чуть-чуть усовершенствовав алгоритм, можно добавить и случайную генерацию даунлинков. Самый простой пример: каждый линк представляет ссылку на скрипт с параметром, идентифицирующим эту ссылку. Идентификатор состоит из двух частей, первая часть – случайным образом генерируемый ключ, которой расшифровывает (по XOR) вторую часть. Этот механизм, несмотря на всю его простоту, не позволяет «телепортеру» отличать ссылки на уже скачанные страницы от тех, что еще предстоит скачать. Теоретически (!) «телепортер» может анализировать содержимое скачанных страниц, выделяя среди них дубли, но что это ему дает?! Качать-то все равно придется… в бесконечном цикле!
Пара слов о поиске украденного Как ни защищай свое имущество, его все равно уведут, и веб-содержание начнет расползаться по Сети. Это невозможно предотвратить, но найти грабителей – в общемто пустяковое дело. Например, наложить на каждую фотографию свой логотип. Прием распространенный, но очень глупый и проблемы не решающий. Логотип, расположенный в незначащей части изображения (где-нибудь в углу) элементарно вырезается. А если расположить его посередине да еще выбрать размер покрупнее, на такую фотографию никому смотреть не захочется!
79
web От «визуальных» логотипов лучше трансформации изображения и да- контент, но все с тем же неизменным сразу же отказаться, а использовать же полиграфическую печать (естес- (не)успехом! Если цифровое содерживодяные знаки, цифровые подписи, твенно, не отечественного качества). мое можно просмотреть (прослушать), скрываемые в изображении метода- С другой стороны, практически все то, очевидно, его можно и скопировать! ми стеганографии. Тогда, обнаружив современные печатающие устройс- Единственная надежда – на аппарат«позаимствованный» материал на чу- тва оснащены специальными защи- ную защиту, вживленную непосредсжом сайте, по крайней мере, можно бу- тами от несанкционированного тира- твенно в «железо», но аппаратная задет доказать факт кражи. Весь вопрос жирования банкнот и других ценных щита наших дней сводится все к той в том: как найти того, кто украл? Если бумаг. Хакеры давно разгадали алго- же программе, упрятанной в микронезадачливый похититель недодумает- ритм, по которому принтер отличает программную прошивку (которую можся переименовать фотографию, с вы- банкноту от всего остального. Не вда- но перешить), да и уровень техничессокой степенью вероятности она будет ваясь в технические подробности, до- кого развития уже позволяет созданайдена Google или другим поискови- статочно отметить, что там использу- вать копирующие устройства самоком. Аналогичным образом осущест- ется многоуровневая защита, в том стоятельно. Прежде чем вкладывать деньги, вляется и поиск похищенных текстов, числе основанная и на практически непричем тексты ищутся еще быстрее и различимых (глазу) малоконтрастных время, средства в защиту веб-контенлегче. Можно попробовать выделить окружностей и желтых точках на свет- та, следует хорошо подумать: какие уникальную фразу, взятую в кавычки лом фоне. В Сети имеется множество убытки это принесет и не превысят ли (многие именно так и поступают), одна- утилит, позволяющих обходить защи- они «упущенную выгоду» от плагиако в этом случае Google зачастую вы- ту, просто вырезая эти метки из изоб- торов и пиратов. Практически все видает негативный результат (что неод- ражения, но… их можно применять ды защиты, упомянутые в статье, банократно проверено на практике), по- и в мирных целях – вносить в свою зируются на JavaScript, а это значит, этому лучше выделить из своего текс- фотографию эти метки, после чего ни- что мы теряем пользователей, отклюта несколько уникальных слов (комби- какой принтер не станет их печатать! чающих JS по соображениям безопаснация которых в других текстах прак- К сожалению, в силу своей изначаль- ности, а так же всех тех, кто пользуется тически не встречается) и попробовать ной криминальной ориентации дан- браузерами, в которых JS не было еще найти их, не используя кавычек. Заме- ные утилиты постоянно меняют адре- с рождения (к таким браузерам, в часчено, что Google плохо находит те сло- са, и дать постоянный URL невозмож- тности, относится мой любимый Lynx). ва, которые встречаются только на од- но. Остается только засесть за Google Про совместимость различных реаном конкретном сайте (например, Ка- и искать, искать, искать… лизаций лучше вообще не говорить, и тут приходится тестировать не тольпитан Кракрыпырзззклллл), и кириллические слова, содержащие в себе Философское заключение ко весь зоопарк имеющихся браузеров, цифры или спецсимволы. В общем, по- Потребность в охране веб-контента на- но и различные версии каждого брауиск – дело тонкое, но тот, кто ищет, тот зрела уже давно, но адекватных ме- зера! А это уже серьезно. Это требует всегда найдет! тодик защиты до сих пор предложе- создания тестовой лаборатории и суКстати, некоторые стеганографи- но не было. И дело тут совсем не в от- щественных расходов. Так что вопрос: ческие алгоритмы (и утилиты, их ре- крытости формата HTML. Защищать защищать или не защищать – остаетализующие) переживают различные пытаются и eBook, и аудио/видео- ся открытым.
80
bugtraq Несколько уязвимостей в PowerDNS Recursor Программа: PowerDNS Recursor 3.1.3 и более ранние версии. Опасность: Высокая. Описание: 1. Уязвимость существует из-за ошибки подсчета длины при обработке TCP DNS-запросов. Удаленный пользователь может с помощью специально сформированного пакета выполнить произвольный код на целевой системе. 2. Уязвимость существует из-за ошибки при обработке CNAME-записей. Удаленный пользователь может аварийно завершить работу приложения. URL производителя: www.powerdns.com. Решение: Установите последнюю версию (3.1.4) с сайта производителя.
Небезопасные методы в WinZip FileView ActiveX-компоненте Программа: WinZip 10.0 версии до Build 7245. Опасность: Высокая. Описание: Уязвимость существует из-за наличия нескольких небезопасных методов в FileView ActiveX-компоненте (WZFILEVIEW.FileViewCtrl.61). Удаленный пользователь может с помощью специально сформированной веб-страницы выполнить произвольный код на целевой системе. URL производителя: www.winzip.com. Решение: Установите последнюю версию с сайта производителя.
Переполнение буфера в ProFTPD Программа: ProFTPD 1.3.0 и более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за недостаточной обработки входных данных в функции sreplace() в файле src/ support.c. Удаленный авторизованный пользователь может вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.proftpd.org. Решение: Установите последнюю версию (1.3.0a) с сайта производителя.
Уязвимость форматной строки в GNU Radius Программа: GNU Radius 1.3 и более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки форматной строки в функции sqllog(). Удаленный пользователь может послать приложению специально сформированную строку и выполнить произвольный код на целевой системе. Для успешной эксплуатации уязвимости GNU Radius должен быть собран с поддержкой SQL, и SQL-эккаунтинг должен быть разрешен. URL производителя: www.gnu.org /software /radius / radius.html. Решение: Установите последнюю версию (1.4) с сайта производителя.
№12, декабрь 2006
Переполнение буфера в Microsoft Windows Agent ActiveX-компоненте Программа: Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Home Edition, Microsoft Windows XP Professional, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Web Edition. Опасность: Высокая. Описание: Уязвимость существует из-за неизвестной ошибки в Microsoft Agent ActiveX-компоненте при обработке .ACF-файлов. Удаленный пользователь может с помощью специально сформированного .ACF-файла вызвать переполнение буфера и выполнить произвольный код на целевой системе. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.
Переполнение буфера в службе IMAP в MailEnable Программа: MailEnable Enterprise Edition 1.x, MailEnable Enterprise Edition 2.x, MailEnable Professional 2.x, MailEnable Professional 1.x. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки при обработке некорректных команд или данных в службе IMAP. Удаленный пользователь может с помощью специально сформированной команды вызвать переполнение буфера и выполнить произвольный код на целевой системе. URL производителя: www.mailenable.com. Решение: Установите исправление с сайта производителя.
Обход ограничений безопасности в GNU tar Программа: GNU tar 1.15.1 и 1.16, возможно более ранние версии. Опасность: Средняя. Описание: Уязвимость существует из-за того, что функция extract_archive() в файле extract.c и функция extract_mangle() в файле mangle.c обрабатывает тип записи GNUTYPE_NAMES, содержащий символическую ссылку. Удаленный пользователь может с помощью специально сформированного архива перезаписать произвольные файлы на целевой системе. URL производителя: www.gnu.org/software/tar. Решение: В настоящее время способов устранения уязвимости не существует.
81
ретроспектива
Предвестник бури, или История первого персонального компьютера Наилучший путь предугадать будущее – изобрести его Алан Кей
Дмитрий Мороз Кремниевая долина ещё в середине прошлого века превратилась в «кузницу передовых идей» в области информационных технологий. Яркий тому пример: исследовательский центр Xerox PARC, в котором, наряду с ксероксом и лазерным принтером, в 1973-м году был создан первый в мире персональный компьютер.
Создавая «архитектуру информации» Название этому разделу было дано неспроста. Как раз Architecture of Information являлась целью, стоявшей перед первыми учёными исследовательского центра Xerox Palo Alto Research Center (Xerox PARC). За свою почти 36-летнюю историю он принёс миру множество открытий в области волоконно-оптической и лазерной физики, интегральной микросхемотехники, систем автоматизированного проектирования, а также искусственного интеллекта. Не остались в стороне и компьютерные технологии. В недрах центра работали над языками программирования, системами и сетями передачи информации, операционными системами, графическими пользовательскими интерфейсами, издательскими системами и т. д. Своим появлением на свет Xerox PARC обязана одному-единственно-
82
му исследователю, чьё имя, к сожа- ний. Среди них стоит отметить груплению, осталось неизвестным. Этот пу бывших студентов Стэндфордскочеловек, нанятый высшим руководс- го Исследовательского Института твом Xerox для планирования даль- (Stanford Research Institute, SRI) во гланейшей стратегии её развития, по- ве с Дугласом Энгельбартом (Douglas рекомендовал компании создать тех- Engelbart). На протяжении 1960-х годов Эннологический центр для проведения исследований в области цифровых гельбарт со своими коллегами создатехнологий. По его словам, анало- ли так называемую «Диалоговую Сисговые разработки в будущем станут тему» (On-Line System, NLS). Она быморально и технически устаревшими, ла разработана на основе технологии, и для всей индустрии копировальной позднее названной «гипертекстом» техники, которой «кормилась» Xerox, (Hypertext). NLS – интерактивная сисможет наступить кризис. Единствен- тема для работы с текстовой и графиный правильный выход состоял в объ- ческой информацией – предоставляединении копира и цифровых техно- ла следующие возможности: телеконлогий с интегрированными офисны- ференции, электронную почту, редакми системами. Идея была принята тор по обработке текстов, гипертек«на ура», и 1 июля 1970 года состоя- стовые ссылки, а также конфигурилось открытие нового исследователь- рование пользователем своего рабоского центра. чего места. Инновационные возможСразу после этого Xerox PARC на- ности Диалоговой Системы потребочала набирать «рекрутов». В основ- вали создания для неё новых инструном это были молодые учёные – вы- ментов. Среди них были манипуляпускники высших учебных заведе- тор «мышь», многооконная система
ретроспектива ввода/вывода данных, система помоления странички эмулятора) детище Смищи в режиме on-line, а также органич- Преждевременно почивший та эмулировало процессор компьютера, ность и простота всего пользователь- Altogether В своё время программист Эрик Смит (Eric а также видеоподсистему. Незаконченныского интерфейса. Ещё один человек, имя которого Smith) взялся за написание эмулятора ми остались дисковая и сетевая подсистестоит упомянуть – Алан Кей (Alan Kay). Xerox Alto под названием Altogether. К со- мы, без которых Altogether был бесполезДо своего появления в Xerox PARC жалению, до стабильно работающей вер- ным. Исходные тексты программы можно он занимался разработкой SmallTalk – сии дело не дошло: по состоянию на 26 ок- найти на сайте Altogether: http://altogether. первого в мире объектно-ориенти- тября 2003 года (дата последнего обнов- brouhaha.com. рованного языка программирования. Что касается технической стороны ты с системой: вывод информации Кроме того, «перу» Кея принадлежит концепт первого портативного компью- Alto, основные его характеристики бы- на экран, обновление содержимого ли описаны ещё в памятке Лампсона. оперативной памяти, работу с дискотера Dynabook. выми накопителями, сетевой подсисПриглашённого в новый исследотемой и другим функциями ввода/вывательский центр Кея сразу же опреде- Первый в мире лили в команду, ответственную за NLS. Персональный компьютер Xerox Alto, вода. Несмотря на такую «многозаДля облегчения их работы Xerox в 1971 представленный в 1973 году, состоял дачность», пользователь мог управгоду лицензировала у SRI манипуля- из четырёх основных частей: систем- лять всего одной задачей, причём она ного блока, растрового дисплея, кла- всегда имела наименьший приоритет. тор «мышь». Со временем концепт Диалоговой виатуры и трёхкнопочного манипуля- Такой подход позволял, в случае надоСистемы приобрел более или менее тора «мышь». Согласитесь, это те же бности, моментально выделить доползаконченный и целостный вид, в ре- составляющие, которыми может «пох- нительную процессорную мощность для управления другими задачами. зультате чего встал вопрос о вопло- вастаться» любой ПК. Система обладала 128 Кб ОЗУ (рас- Производительность МП Alto составщении этих идей в едином аппаратноширяемыми до 256 Кб), а также съём- ляла около 0,4 MIPS (миллионов инспрограммном комплексе. Начав работать в Xerox PARC, Кей ными жёсткими дисками объёмом трукций в секунду). Ещё одно новшество первого ПК – не забыл о своей разработке – ком- 2,5 Мб (дисковод магнитных дисков, сопьютере Dynabook. Первоначально зданный IBM в 1971 году, во время про- использование в качестве контроллеего просьба создать несколько де- ектирования Alto ещё не был доступен). ра растрового экрана «буфера кадра» сятков подобных машин, которые бы В качестве устройства отображения ин- (frame buffer), хранящего в себе инфорслужили подспорьем в его исследо- формации был использован 12,8-дюй- мацию, выводимую на экран. Созданваниях, была отклонена. Однако сама мовый растровый чёрно-белый дисп- ный инженером Диком Шаупом (Dick идея портативного компьютера пон- лей с разрешением 606x808 точек, в от- Shoup), буфер кадра Alto представлял равилась Батлеру Лампсону (Butler личие от всех современных «ландшаф- собой простой 16-разрядный регистр Lampson), одному из главных учёных тных» экранов, имевший «портретную» сдвига, управлявшийся одной из мики менеджеров Xerox PARC. В декабре ориентацию. В завершение компьютер ропрограмм центрального процессора 1972 года в очередной из своих памя- имел «на борту» встроенный сетевой системы. ЦП в этом случае использоток он написал для руководства Xerox адаптер стандарта Ethernet, разработ- вался для выборки обновлённых дан«манифест», в котором попросил выде- ка которого велась в недрах центра па- ных, которые необходимо вывести на дисплей из оперативной памяти в этот лить денежные средства на разработ- раллельно с работами над Alto. Инновационной разработкой ин- регистр. Специально для хранения вику и производство «персональных компьютеров» под названием Alto, за ос- женеров PARC стал 16-битный микро- деоданных в ОЗУ было зарезервиронову которых была бы взята разработ- процессор Alto, использовавший от- вано 50 Кб адресного пространства. ка Алана Кея под названием Dynabook. дельные микропрограммы для выпол- Использование буфера кадра позвоПерсональный компьютер в предыду- нения большинства щем предложении был написан в ка- функций ввода/вывовычках неспроста, ведь исторически да вместо их аппаратпамятка Лампсона – первое упомина- ной реализации. Ядро процессора могло ние термина. Однако концепция портативного одновременно выполкомпьютера, являвшегося, по замыс- нять до 16 различных лу Кея, хранилищем всей необходимой задач, одной из коего владельцу информацией и сред- торых являлась неством для её обработки, была замене- посредственно обрана более практичной настольной сис- ботка основного натемой. Её разработкой первоначально бора инструкций МП. занимался Чак Такер (Chuck Thacker), Остальные задачи на помощь которому со временем при- процессора отвечаОдин из корпусов Xerox PARC ли за функции рабошли ещё несколько человек.
№12, декабрь 2006
83
ретроспектива
Xerox Alto
лило значительно ускорить вывод графической информации на экран Alto. Кстати, десять лет спустя, в 1983 году, Шауп был награждён премией Эмми (Emmy) за своё изобретение. Несмотря на то что первооткрывателем в этой области является лаборатория Bell Labs, создавшая 3-битный буфер кадра в 1969 году, разработка Дика Шаупа считается первой, нашедшей практическое применение в компьютерных системах.
Воплощение Диалоговой Системы Операционная система AltoOS была написана на языке программирования BCPL, очень похожем на язык Си. Поскольку адресное пространство компьютера было ограниченным, программисты Xerox PARC разработали специальный метод, названный «Junta». Он использовался для запрещения доступа программам, написанным на BCPL, к загрузке в ОЗУ не ис-
Делу время, потехе час Несмотря на то что Alto была создана в качестве компьютера, нацеленного на решение серьёзных задач, хитрые программисты не преминули использовать ПК для собственных развлечений. В результате специально для AltoOS были написаны две игры: Pinball и Trek. Первая, как не трудно догадаться, представляла собой «пинбол», а вторая – многопользовательскую разновидность игры Space Invenders с кораблями, внешний вид которых был позаимствован из вселенной «Звёздный путь» (Star Trek). Кроме того, на Alto была перенесена ещё одна игра – Maze War, являющаяся первой в мире многопользовательской
84
пользуемых в данный момент компонент операционной системы. Если же в будущем в них возникала потребность, они могли быть активированы с помощью метода «Counterjunta». Программа, выполнявшаяся поверх операционной системы, называлась Alto Executive. Она являлась многооконным файловым менеджером и позволяла пользователю производить различные манипуляции с файлами, а также запускать программы. Alto имела очень гибкую файловую систему. Файлы могли иметь названия длиной вплоть до 31 символа (1973 год!). Кроме того, после набора имени сохранялся регистр букв. В дальнейшем, при необходимости найти файл с названием, скажем, «РабочийГрафик» поисковый механизм AltoOS не обращал внимания на регистр, в результате чего ему было всё равно, как именно пользователь наберёт искомое имя файла: «РабочийГрафик», «РАБОЧИЙГРАФИК», или «рабочийграфик». Все файлы, хранившиеся на жёстком диске Alto, были разделены на страницы. Каждая из них содержала: маленький заголовок, описывавший текущую страницу; путь к файлу, которому она принадлежала; а также места расположения предыдущих и следующих страниц этого же файла. В результате такой структуры файловая система первого в мире ПК была практически неразрушима. Встроенная в AltoOS утилита Scavenger могла автоматически восстанавливать повреждённую файловую систему. За работу AltoOS с локальной сетью отвечали две программы: NetExecutive игрой с видом «от первого лица» и псевдо трёхмерной графикой. Суть её заключалась в блуждании по лабиринту и отстреливании «колобков», управлявшихся другими пользователями. Уникальная особенность Trek и Maze War заключалась в том, что игрок мог присоединяться к игре, а также выйти из неё в любую минуту. Поскольку все Alto могли одновременно «читать» один и тот же пакет (блок информации в Ethernet), игра никогда не работала на каком-либо одном, координирующем остальные, компьютере. Вместо этого она запускалась независимо на каждом ПК, что позволяло играть в неё одновременно десяткам пользователей.
и FTP (не путать с одноимённым протоколом). Первая программа была очень похожа на Alto Executive и отвечала за загрузку программ не с жёсткого диска компьютера, а из сети. В результате большие по объёму программы могли храниться на файловом сервере, откуда их мог запускать любой пользователь Alto, причём лишь тогда, когда они ему понадобятся. Скорость передачи данных по сети в данном случае составляла приблизительно 800 Кбит/с. FTP не могла запускать программы с других компьютеров и была предназначена для выполнения операций с файлами в сети. Первоначально всё программное обеспечение для AltoOS было написано на BCPL, однако позже вместо него стал использоваться похожий на Pascal объектно-ориентированный язык Mesa. После своей разработки Alto стала основным «полигоном» для дальнейшего совершенствования языка SmallTalk. Кстати, первоначально предполагалось, что операционная система Alto будет написана именно на нём. Ещё один язык программирования, получивший распространение на этом ПК – Lisp, использовавшийся для решения задач в области искусственного интеллекта. Специально для Alto программистами Xerox PARC Чарльзом Симонием (Charles Simonyi) и Батлером Лампсоном был разработан текстовый редактор под названием Bravo, использовавший принцип WYSIWYG («What You See Is What You Get»). Суть его заключается в том, что отображаемая на экране страница будет в точности соответствовать своему распечатанному аналогу. Bravo поддерживал изменение размера текста, а также его начертания (жирный, курсив, подчёркнутый). В распоряжении пользователя имелось несколько сотен различных шрифтов. Кроме того, Bravo был наделён функцией отмены предыдущей команды (Undo), которая могла быть выполнена неограниченное количество раз вплоть до возврата содержимого текстового документа в исходное состояние. Для рисования имелась отдельная программа под названием Draw. Внешне она напоминала современные графические профессиональные па-
ретроспектива кеты: интерфейс Draw состоял из нескольких окон, каждое из которых было предназначено для команд определённой группы. Окно, расположенное слева, содержало различные виды кистей, верхнее окно было предназначено для ввода дополнительных текстовых команд, а также вывода системных сообщений программы. В центре располагалось основное окно – непосредственно «холст». Пользователь мог рисовать линии произвольной длины и ширины. Кривая создавалась путём указания нескольких точек, по которым Draw вычисляла траекторию отрезков и рисовала её, либо же удержанием мышкой точки на прямой и «перетягиванием» её в сторону искривления линии. Нарисованный в результате объект мог быть продублирован, развёрнут в необходимую сторону, растянут или сжат. Причём все эти операции выполнялись либо движением мыши, либо набором легко запоминающихся команд.
И ещё чуть-чуть о первом ПК Специально для работы с Alto в недрах Xerox PARC было создано несколько дополнительных устройств: телевизионная камера, символьный принтер типа «ромашка», а также адаптер параллельного порта. Кроме того, к этому ПК могли быть подключены дополнительные съёмные жёсткие диски, превращавшие компьютер в файловый сервер. Кстати, несколько Alto в локальной сети исследовательского центра Xerox выполняли именно эту функцию. Всего в Xerox PARC была изготовлена тысяча компьютеров Alto, которые, будучи объединёнными в единую сеть, использовались инженерами лабораторий центра. Ещё 500 систем нашли своё пристанище в университетских кампусах и правительственных офисах. До коммерческой реализации этого компьютера дело, однако, не дошло. Зацикленная на своём основном бизнесе по производству копировальной и офисной техники, Xerox не хотела рисковать большими сумами и вкладывать их в популяризацию персональных ЭВМ. Впрочем, с появлением первых массовых компьютеров, таких как Altair 8800 и Apple II, а также возникшим интересом к ним со стороны обычных по-
№12, декабрь 2006
Единственный наследник Несмотря на коммерческий провал STAR, его графический интерфейс настолько понравился руководству Xerox, что было принято решение развивать идею дальше. Созданая специально для этого компания Elixir Technologies занялась переносом графической оболочки Xerox STAR на IBM PC. Специалист по компьютерным пользовательским интерфейсам Xerox Эд Риган (Ed Regan) помог руководителю группы Elixir Брюсу Дэмеру (Bruce Damer) и его команде перенести все элементы внешнего вида STAROS в новую графическую оболочку под названием Elixir Desktop, работавшую в качестве «надстройки» над MS-DOS. В основу Elixir Desktop, написанной с использованием компилятора Turbo C
фирмы Borland, был положен графический менеджер GEM компании Digital Research (которую, кстати, также основали выходцы из PARC). Новая оболочка работала на обычных компьютерах IBM PC AT, правда, требовала мониторы компании Sigma Designs с SVGA-разрешением. Elixir Desktop превращала простой персональный компьютер в графическую станцию, которая могла быть использована для создания и подготовки документов к последующей их распечатке на комплексах печати Xerox и других производителей. Кроме того, именно Elixir Desktop считается первой полноценной графической оболочкой для архитектуры х86, вышедшей на год раньше Windows 3.0. Во многих крупных компаниях Elixir Desktop используется по сей день.
купателей, компания осознала о своем промахе. В результате средства от продаж разработок в области персональных компьютеров Xerox собралась получать при помощи новой модели ПК – рабочей станции Xerox 8010 (позже получившей название Xerox STAR), выпущенной 27 апреля 1981 года.
низована «локальная» сеть, в результате чего сотрудники смогли общаться между собой посредством электронной почты, а также обмениваться файлами. Широкой общественности Xerox STAR был представлен спустя целых семь лет разработки – в апреле 1981 года. Спецификации компьютера были следующими: 512 Кб ОЗУ (из ко«Звёздный» компьютер Проектирование Xerox STAR велось торых 100 Кб отводилось для хранения с 1974 года. Именно этот компьютер данных буфера кадра), жёсткий диск должен был воплотить все идеи Диа- объёмом 10, 29 или 40 Мб, 8-дюймовый логовой Системы, разработанные Эн- дисковод, 17-дюймовый монитор с трагельбартом со товарищи. Поэтому его диционной «ландшафтной» ориентааппаратная часть создавалась лишь цией и разрешением 1024x808, а такпосле окончания работ над програм- же новый сетевой адаптер с повышенмой, которая и диктовала свои «условия». Кстати, Xerox STAR не являлся разработкой, созданной в недрах PARC. Специально для продвижения «офисных систем» (к которым руководство компании относило персональные компьютеры) было создано отдельное подразделение, получившее название Systems Development Department (SDD). SDD имела два филиала: один располагался на территории PARC в Пало Альто (занимался операционной системой и языками программирования), а другой – в городке Эль Сегундо, находившемся неподалёку от Лос-Анджелеса (разработка аппаратной части STAR, а также пользовательских программ). Для того чтобы оба офиса имели постоянную связь Распечатанный скриншот игры Maze War друг с другом, между ними была орга-
85
ретроспектива
Xerox STAR
ной до 10 Мбит/с (у предшественника – 3 Мбит/с) скоростью передачи информации. Мышь для нового компьютера была уже двухкнопочной. Старый центральный процессор Alto в STAR работать не мог из-за возросших требований нового программного обеспечения к производительности компьютера. Кроме того, теперь он должен был понимать язык Mesa, на котором было написано подавляющее большинство программ для нового ПК. Поэтому инженерами Xerox PARC был разработан новый чип, работавший в три раза быстрее своего предшественника, установленного в Alto.
Программные наработки Новая операционная система STAROS была написана на Mesa и значительно отличалась от своей предшественницы.
Интерфейс Xerox STAR
86
Основу ОС составлял «Рабочий стол» (Desktop; вот откуда пошло это словосочетание), разделённый на 1-дюймовые квадраты. На рабочем столе размещались иконки, представлявшие собой ярлыки для запуска различных программ, а также «прямые ссылки» на директории с файлами, размещённые на жёстком диске. Иконки могли находиться в любой части «Рабочего стола». Всего их могло быть 154 штуки, причём пользователь был волен создавать свои собственные. Встроенный файловый менеджер мог отображать данные различными способами – от простого списка документов до многоуровневой иерархии каталогов со своими подкаталогами. Пользователь мог простым нажатием и удержанием мыши (всем известная концепция «Перетащи и Брось» – Drag & Drop) переместить объект с «Рабочего стола» в какую-нибудь папку, записать на дискету, распечатать его или же переслать по электронной почте. На рабочем столе STAROS одновременно могло быть открыто до шести окон, причём, в отличие от AltoOS, они не перекрывали друг друга, а также «Рабочий стол». Окна можно было располагать на нём различными способами. STAROS имела определённый набор основных команд, которые использовались в операционной системе: пе-
реместить, копировать, удалить, показать свойства, скопировать свойства, повторить и т. д. В разных случаях (например, программах) эти команды выполняли одни и те же функции, благодаря чему пользователь обучался работе на STAR значительно быстрее. Остаётся отметить, что в STAROS была реализована некая форма многозадачности, благодаря которой пользователь, например, мог набрать текстовый документ, а затем сразу же, не закрывая редактор, переслать его по сети с помощью клиента электронной почты. Одним словом, в STAROS были заложены практически все базовые функции и возможности операционных систем, которыми мы пользуемся по сегодняшний день. Теперь кратко рассмотрим новые программы, поставлявшиеся вместе со STAR в комплекте. Все они являлись результатами разработок, проводившихся на Alto. Многие были написаны с использованием языка SmallTalk, хотя основным всё же являлся Mesa. Дальнейшее развитие получил текстовый редактор Bravo в новой версии, названной BravoX. Отныне пользователь мог набирать и распечатывать тексты на любом языке мира. Двухбайтовая кодировка символов, использовавшаяся в STAROS, позже была доработана и превратилась в Unicode. Пользователь мог писать математические формулы с помощью встроенного редактора и затем вставлять их в текст. Спустя некоторое время разработчики BravoX покинули Xerox PARC и ушли в другие компании, которые затем выпустили свои собственные текстовые редакторы – Word (Microsoft) и LisaWrite (Apple). Что касается программ для работы с графикой, кроме Draw со STAR поставлялся редактор Sil. Для работы с растровой графикой использовались программы Markup и Flyer. Специально для печати документов со STAR на лазерном принтере (впервые разработанном в PARC в 1973-76 годах) был предназначен язык описания страниц под названием Press (позже переименованный в InterPress). Со временем некоторые его разработчики ушли из исследовательского центра и основали собственную фирму, названную Adobe. Как не трудно дога-
ретроспектива даться, InterPress лёг в основу их языка Postscript.
Поражение Несмотря на передовые аппаратные и программные разработки, заложенные в Xerox STAR, этот компьютер не сумел «найти своего покупателя», проиграв войну PC корпорации IBM и Macintosh от Apple. Причин здесь несколько, причём кроются они как раз в его «уникальности»: Аппаратные недостатки. Программное обеспечение STAR, разработанное для людей, не знакомых с компьютерной грамотой, было очень требовательным к аппаратному обеспечению. В результате скорость работы Xerox STAR была приемлемой, но не более того. Инженеры центра были настолько одержимы идеей разработать идеальную систему, что в результате количество новшеств в ней оказалось гораздо больше необходимого на то время. Как и в случае с Apple, инженеров PARC никто не ограничивал и не диктовал свои условия. В результате Xerox STAR для использования всех её возможностей требовалось наличие локальной сети с подключенными к ней другими аналогичными компьютерами, лазерные принтеры, а также комнаты, забитые различной электроникой. IBM PC, наоборот, был «компьютером в себе»: отлично работал в одиночку, да к тому же не «брезговал» более дешёвыми матричными и струйными принтерами. Инженеры Xerox STAR считали, что разработанное ими программное обеспечение будет единственно нужным простому пользователю, поэтому этот ПК превратился в «закрытую» систему, подробное описание аппаратной части которой публично не оглашалось. Программные недостатки. Изначально STAR позиционировался как компьютер для менеджеров и руководителей, однако инженеры, разрабатывавшие систему, были предоставлены сами себе и не учли всех потребностей потенциальных пользователей. Хотя BravoX, как текстовый редактор, по своим возможностям был вне конкуренции, тот же редактор электронных таблиц на STAR отсутствовал, в результате чего о выполнении всего спектра офисных задач речи быть не могло. Поскольку Xerox
№12, декабрь 2006
STAR был компьютером с «закрытой» архитектурой, никакая другая компания не могла написать или перенести свои программы на него. Ещё один недостаток зак люча лся в опережении компьютером «своего времени»: ма ло к то понима л весь потенциал программного обеспечения, поставлявшегося с этим ПК. Ор ганизац ион ные промахи. Главный же недостаток был не техническим, а организационным. Xerox создала продукт, который не могла продать. Отдел продаж SDD не имел Скриншот текстового редактора BravoX никакого опыта реализации компьютерных систем, пос- знают все. Одному из основателей кольку единственными, с чем они име- Apple хватило, по его словам, всего ли дело всё это время, были принтеры 10 минут, чтобы оценить весь скрытый и копиры. К тому же цена Xerox STAR потенциал STAR. Если выход в свет (16 595 долларов) была приблизитель- компьютера Lisa ещё не был событино в пять раз выше стоимости ПК кон- ем из ряда вон выходящим вследскурентов. И последнее: менеджерам твие его сверхвысокой цены, то появкомпании не объяснили, каким обра- ление легендарного Macintosh в 1984 зом использование ПК от Xerox может году спровоцировало эффект «разоулучшить производительность труда рвавшейся бомбы». На тяжёлых трупотенциальных покупателей. Семи- дах инженеров Xerox PARC инвестонар, посвящённый STAR, позже дока- ры Apple заработали сотни миллизал, что ни отдел продаж SDD, ни да- онов долларов. Что же касается разработчиков Alto же некоторые разработчики до конца не могли оценить всех преимуществ и STAR – им досталась лишь «скромвыполнения офисных задач на этом ная» премия ACM Software Systems Award, присуждённая PARC в 1984 компьютере. В результате SDD смогла продать году за вклад в развитие вычисливсего несколько десятков тысяч Xerox тельной техники. А мир тем времеSTAR. В дальнейшем был разработан нем во всю приспосабливался к поего преемник, Xerox 6085 (называв- явлению и всё более широкому расшийся также ViewPoint). Однако кроме пространению компьютеров IBM PC 19-дюймового монитора, 40 Мб жёстко- и Apple Macintosh, коренным образом го диска и обновлённого программного изменивших его и сделавших смешобеспечения похвастаться какими-ли- ной и нелепый в прошлом веке лозунг бо кардинальными изменениями он не «Персональный компьютер в каждый мог. Количество проданных ViewPoint дом!» реальностью. было ещё меньше и составило около 1. http://www.parc.com. пяти тысяч систем.
Пример для остальных Историю с посещением Стивом Джобсом лабораторий Xerox PARC, думаю,
2. 3. 4. 5.
http://www.guidebookgallery.org. http://www.digibarn.com. http://members.tripod.com. http://www.wikipedia.org.
87
содержание журнала за 2006 год АДМИНИСТРИРОВАНИЕ
№
Как работает Sendmail? Полезные подробности. Часть 4: взаимодействие со сторонними программами
Arch Linux: руководство к быстрому старту Валентин Синицын
№5
Сергей Супрунов
№8
Box Backup – горячие резервные копии Алексей Коршунов
№5
Как собирать сетевую статистику Андрей Бирюков
№10
FreeDOS – новый взгляд на старые вещи Иван Максимов
№2
Как устроена файловая система JFS Андрей Пешеходов
№8
FreeNAS: строим надежную систему хранения данных
Как устроена файловая система reiser4 Андрей Пешеходов
№4
№7
Кириллизация в Linux Алексей Барабанов
№3
Сергей Супрунов
№7
Часть 1: кластеризация на практике Евгений Прокопьев
Linux-VServer Дмитрий Столяров
№10
Кластеризация + виртуализация: Linux HA + OpenVZ.
Lotus Notes на Windows 2K/XP в *NIX-домене Мыкола Буряк
№8
Часть 2: Виртуализация на практике Евгений Прокопьев
MeTA1: почтовый сервер на новый лад Сергей Супрунов
№12
На что способен дистрибутив SystemRescueCd Linux
Андрей Бирюков
№10
Настраиваем шлюз в Интернет на базе FreeBSD
MikroTik – Router OS Сергей Яремчук
№3
Сергей Яремчук Greylisting: панацея от спама или «мыльный пузырь»?
Кластеризация + виртуализация: Linux HA + OpenVZ.
Microsoft Operations Manager 2005: управляем сетью
Иван Максимов
MS Windows XP SP3, или Много шума из ничего Алексей Барабанов
№11
OpenPKG: кроссплатформенная система пакетов Андрей Коврин
Алексей Бережной
№11 №12 №11 №12
Обзор дистрибутива Ubuntu 6.06 Сергей Супрунов
№8
Обзор систем резервного копирования Сергей Яремчук
№9
Организуем работу офисного почтового сервера №3
OpenVPN: доступ повышенной проходимости
на платформе Windows Александр Емельянов
№12
Отказоустойчивый кластер с минимальным бюджетом
Алексей Коршунов
№7
Сергей Довганюк
№5
ProFTPD: мастер своего дела Сергей Супрунов
№2
Переключи драйвер NTFS в режим read-write Антон Ананич
№6
Roaring Penguin CanIt: ведём борьбу со спамом Сергей Яремчук
Подробное руководство по настройке тонких клиентов №7
на основе дистрибутива Thinstation и протокола NX Евгений Бушков
№12
№11
Полезные советы: Apache Сергей Супрунов
№9
Полезные советы: FreeBSD Сергей Супрунов
№9
Полезные советы: PostgreSQL Сергей Супрунов
№11
Автоматизируем процесс установки обновлений с PatchQuest 4 Сергей Яремчук Автоматизируем тестирование железа с помощью StressLinux Дмитрий Волков
№7
Автоматизируем установку программного обеспечения в сети Андрей Бирюков
Почтовый сервер на основе реляционной СУБД. №4
Биллинг на FreeBSD: пишем сами, используя PHP, trafd
Оцените преимущества! Евгений Прокопьев
№1
Проводим инвентаризацию сети средствами SMS 2003
и MySQL Александр Чагадаев
№8
Дмитрий Щербаков
№8
В поисках анонимного прокси-сервера Иван Максимов
№12
Разрабатываем пакет управления для МОМ Андрей Бирюков
№11
Возможности технологии MS Windows SharePoint Services Иван Хрипунов, Артем Черневский
Семь веб-интерфейсов к электронной почте. №5
Возможности технологии MS Windows SharePoint Services.
Выберите лучший! Сергей Супрунов
№9
Собираем собственную ОС на базе Linux Илья Александров
№3
Часть 2 Иван Хрипунов
№7
Современный Linux-сервер: виртуализируем
Вы всё ещё не используете WMI? Часть 1 Константин Леонтьев
№1
сетевые устройства Алексей Барабанов
Вы всё ещё не используете WMI? Часть 2: пишем сценарии Константин Леонтьев
№2
Делаем резервное копирование конфигураций активного сетевого оборудования Андрей Бирюков
№1 №12 №3
Знакомимся с Gentoo. Часть 2: базовые настройки
дисковые ресурсы Алексей Барабанов дисковые ресурсы. Часть 2 Алексей Барабанов
№2 №10
Создаём кластер для PostgreSQL Андрей Тренин
№1
Создаем порт для FreeBSD своими руками.
и работа с Portage Сергей Супрунов
№4
Часть 1: основные возможности Рашид Ачилов
№12
Создаем порт для FreeBSD своими руками.
Как купить ПО от Microsoft? Особенности приобретения №12
Как обеспечить необходимое быстродействие систем «1С: Предприятие» Роман Марков
№5
88
№4
Статистика прокси-сервера Squid Павел Малахов
№7
от вирусов и спама Павел Семенец
№1
Часть 1: дополнительные возможности Константин Леонтьев
№3
Узнай секреты WMI: события и провайдеры. №6
Как работает Sendmail? Полезные подробности. Часть 3 Сергей Супрунов
Часть 2: расширенные возможности Рашид Ачилов
Узнай секреты WMI: события и провайдеры.
Как работает Sendmail? Полезные подробности. Часть 2 Сергей Супрунов
№3
Строим мультидоменный почтовый сервер с защитой №10
Как работает Sendmail? Полезные подробности Сергей Супрунов
№1
Создаем адресную книгу на базе OpenLDAP Сергей Алаев
Интеграция BIND + PostgreSQL Сергей Алаев и использования OEM-версий Дмитрий Бутянов
№8
Современный Linux-сервер: как планировать
Знакомимся с Gentoo. Часть 1: установка системы Сергей Супрунов
сетевые устройства. Часть 2 Алексей Барабанов Современный Linux-сервер: как планировать
Делимся впечатлениями о дистрибутиве Linux XP Desktop Дмитрий Шурупов
№6
Современный Linux-сервер: виртуализируем
Часть 2 Константин Леонтьев
№5
Упаковщики исполняемых файлов в Linux/BSD №7
Крис Касперски
№9
содержание журнала за 2006 год Управляем инсталляторами Иван Коробко
№4
Устанавливаем и настраиваем Systems Management Server 2003 Андрей Бирюков
№8
Настраиваем безопасный роутер на базе FreeBSD №7
Устанавливаем межсетевой экран MS ISA Server 2004 Андрей Бирюков
Настраиваем DrWeb Enterprise Suite Антон Борисов Василий Озеров
№6
Настраиваем эффективную систему сетевой защиты Zorp №12
Централизованно меняем пароли локального
Сергей Яремчук
№5
Ошибки синхронизации открывают большие возможности
системного администратора Иван Коробко
№6
для хакеров. Каковы механизмы защиты? Крис Касперски
Шесть дней одного года Роман Коновалов
№4
Пишем систему динамической защиты ресурсов в сети Андрей Бирюков
№6
Сергей Яремчук
№3
Полезные советы: Bacula Сергей Яремчук
№11
Штопаем дыры в Ilohamail Сергей Супрунов
№1
Работаем с NTLM-авторизацией Apache
Шлюз аутентификации пользователей NuFW
Экономьте время на администрировании Active Directory Сергей Яремчук
БЕЗОПАСНОСТЬ
№10
№
в домене MS Windows 2003 Владимир Василькин
№11
Растущая угроза: руткиты Win32 Артем Баранов
№10
Расширяем возможности MailScanner Сергей Яремчук
№1
Создаем VPN с помощью SSL-Explorer Сергей Яремчук
№4
Судьба shell-кода на системах с неисполняемым стеком
FreeBSD jail: зона строгого режима Сергей Супрунов
№11
Крис Касперски
Kerberos и электронная почта Михаил Кондрин
№11
Техника снятия дампа с защищенных приложений
№8
Чем уникальна общественная система
Windows Firewall: защищаем внутренние ресурсы сети Андрей Бирюков
Крис Касперски предотвращения атак Prevx1 Сергей Яремчук
Zlock: контролируйте доступ к USB-устройствам Андрей Гущин Zserver Suite: защищаем корпоративные хранилища данных №3
Аудит и дизассемблирование эксплоитов Крис Касперски
№8 №11 №11 №5 №10
Защищаем PHP-приложения с помощью Suhosin №11
Защищаем Windows-системы с помощью CORE FORCE Сергей Яремчук
№10
№4
№5
Иван Коробко
№3
электронную почту Сергей Супрунов
№2
Работаем с PDF из Perl Валентин Синицын
№3
Развиваем модуль DBI Алексей Мичурин
№9
Чего ждать от Perl 6 Андрей Шитов
№11
ВЕБ-ПРОГРАММИРОВАНИЕ
№ №7
WEB
№
Иван Максимов
№5
Выдержит ли нагрузку ваш веб-сервер?
Исследуем сетевую безопасность посредством №2
Обзор программ для стресс-тестирования Сергей Яремчук
№12
Как надо и как не надо защищать веб-контент от кражи
Как настроить библиотеку SASL для совместной работы c Kerberos Михаил Кондрин
№1
Возможности поискового движка DataparkSearch
для криптографической защиты данных. Часть 2
Linux Netwosix Сергей Яремчук
Безопасность и синтаксис Иван Коробко
Ajax: новый канал общения клиента и сервера Алексей Мичурин №9
Используем средства библиотеки OpenSSL Владимир Мешков
№10
№9
Используем средства библиотеки OpenSSL для криптографической защиты данных Владимир Мешков
ими порождаемые, в ОС семейства NT Крис Касперски
Заглянем в будущее PHP 6 Кирилл Сухов
Защищаемся от malware с помощью BufferZone Сергей Яремчук
№2
№1
Защищаем корпоративную почту с SecExMail Gate Сергей Яремчук
Замыкания в Perl Алексей Мичурин
№
Практикум Python: обрабатываем входящую
Защитить ваш компьютер поможет Browser Sentinel
Сергей Яремчук
ПРОГРАММИРОВАНИЕ
Переходим от VBScript к ASP и ASP.NET: Часть2
Генная инженерия на службе распаковки PE-файлов
Сергей Яремчук
№2
Переходим от VBScript к ASP и ASP.NET:
Выявление угроз информационной безопасности
Крис Касперски
№6
Многоядерные процессоры и проблемы,
Внутренние IT-угрозы в банке превосходят по значимости
внутри компании Никита Дуров
№1
№9
Алексей Шелестов
все остальные Анна Верхось
№11
№10
Крис Касперски
№12
Контролируем доступ к веб-сервису с помощью DACS
Как обнаружить malware-программы? Универсальный метод Крис Касперски
№9
Сергей Яремчук
Как повысить безопасность веб-приложений Сергей Яремчук
№2
Тестируем движки поисковых машин Иван Максимов
№8
Технология AJAX: как насчет безопасности? Сергей Яремчук
№6
Устанавливаем DACS Сергей Яремчук
№9
Как увеличить безопасность процессов с помощью chroot и jail Василий Озеров
№7
№8
Какие возможности появились в новой версии DeviceLock Михаил Брод
№12
Можно ли защититься от переполнения буферов? Крис Касперски
№12, декабрь 2006
№2
HARDWARE Волшебство с паяльником в руках Крис Касперски
№ №6
89
содержание журнала за 2006 год СЕТИ
№
Linux-десктопы должны быть привлекательными Дмитрий Шурупов
№11
Марк Спенсер: «Это Asterisk привлекает пользователей
Доставку гарантируем: качество обслуживания в пакетных сетях Сергей Сикорский
№2
к Linux, а не наоборот» Дмитрий Шурупов
Интернет «от Москвы до самых до окраин» Роман Ерин
№3
Расмус Лердорф: «Вы думаете, что 11 лет назад я решил
Какова цена анонимности в Сети Андрей Погребенник
№2
разработать язык сценариев, которым будут пользоваться
Малоизвестные подробности работы NAT Ильяс Кулиев
№1
во всем мире!?» Дмитрий Горяинов
Подключаемся к Интернету через спутник Антон Борисов
№2
Собираем беспроводной роутер 802.11g на базе ОС Linux Михаил Платов
№4
№8
№7
АНАЛИТИКА
№
Создаем зоны DNS Рашид Ачилов
№6
Быть или не быть зарубежному софту в России?
Управляем зонами DNS Рашид Ачилов
№7
Ольга Максимович
№6
Управляем сетевым оборудованием с помощью протокола SNMP Андрей Бирюков
ОБРАЗОВАНИЕ
№3
ЧЕЛОВЕК НОМЕРА
№
№
Виртуальные радости и открытия Максима Чиркова Оксана Родионова
№11
Linux в школе? Сергей Яремчук
№6
Волшебник из страны… Воз Оксана Родионова
№8
Python – в школу! Сергей Супрунов
№10
Герой нашего времени, или Попытка развенчания мифов
Дистрибутив Edubuntu: специально для школ Сергей Яремчук
№6
Оксана Родионова
Первый раз в Linux-класс! Андрей Маркелов
№6
Головоломка, ведущая по жизни Игоря Данилова
Полезные советы: Python Сергей Супрунов
№10
ДОКУМЕНТАЦИЯ
№
Документация – экономия времени или его бесполезная трата?
№4
Оксана Родионова
№10
Один в поле – воин! Оксана Родионова
№7
Оппонент мистера Гейтса Оксана Родионова
№6
Пират виртуального мира Оксана Родионова
№9
Прихоти судьбы. Биография IT-просветителя
Алексей Коршунов
№3
Оксана Родионова
№5
Техническая документация: серверы и сети Алексей Коршунов
№4
Романтичный хакер Крис Касперски Оксана Родионова
№12
РЕТРОСПЕКТИВА История компьютерных вирусов Илья Александров
№ №11
История компьютеров «Амига». Часть вторая: 1995-2006 Сергей Зуев
№3 №2
Надежда умирает последней: история компании SGI Дмитрий Мороз
№4
Надежда умирает последней: история компании SGI. Часть 2 Дмитрий Мороз
№
Open Source взглядом оптимиста Алексей Барабанов
№10
В поисках профессиональной этики сисадминов
История компьютеров «Амига». Часть первая: 1982-1994 Сергей Зуев
IMHO
Алексей Барабанов
№9
Как зарабатывают на Open Source Крис Касперски
№10
Куда приведет Open Source? Сергей Супрунов
№10
Лицензию? Вам какую? Сергей Супрунов
№5
Перспективы профессии. Автопортрет Алексей Барабанов
№4
Электронная почта как источник повышенной опасности №5
Сергей Супрунов
№1
№6
ХОББИ
№
Надежда умирает последней: история компании SGI. Часть 3 Дмитрий Мороз Попытка изменить мир: хроники компании NeXT Дмитрий Мороз
№7
Коллекция «Почему?» Анна Николаева
№3
Предвестник бури, или История первого персонального компьютера Дмитрий Мороз
№12
Сеть друзей: история Fidonet Илья Александров
№8
Сломленная, но не сдавшаяся:
Вы всё ещё не используете WMI?
история операционной системы BeOS. Часть 2 Дмитрий Мороз
№1
Суровая правда, скрытая за «розовыми очками»: история компании Transmeta Дмитрий Мороз
№9
Суровая правда, скрытая за «розовыми очками»: история компании Transmeta. Часть 2 Дмитрий Мороз
ИНТЕРВЬЮ
№10
№
Free Software Foundation переходит на технологию LinuxBIOS Антон Борисов
90
№1(38) январь 2006 подписной индекс 20780 www.samag.ru
№2
№4(41) апрель 2006 подписной индекс 20780 www.samag.ru
Соберите собственный беспроводной роутер 802.11g на ОС Linux
№12(49) декабрь 2006 подписной индекс 20780 www.samag.ru
Подробное руководство по настройке тонких клиентов Современный Linux-сервер: №7(44) июль 2006 на основе Thinstation и NX подписной индекс 20780 как планировать www.samag.ru Семь веб-интерфейсов №3(40) март 2006 дисковые ресурсы Как купить ПО от Microsoft? подписной индекс 20780 Как устроена к электронной почте www.samag.ru Особенности приобретения файловая система reiser4 Greylisting: хуже спамаВыберите – лучший! Малоизвестные подробности и использования OEM-версий только борьба со спамом! Узнай секреты WMI: №5(42) май автоматизировать 2006 работы NAT Три способа события и провайдеры Zlock: контролируйте доступ подписной индекс 20780 Устанавливаем установку ПО в сети StressLinux: автоматизируем www.samag.ru к USB-устройствам Резервное копирование MS ISA Server 2004 тестирование железа Кириллизация в Linux конфигураций активного Управляем инсталляторами Обзор систем №10(47) октябрь 2006 сетевого оборудованияЗнакомимся с Gentoo: Самый подробный материал Выдержит ли нагрузку Устанавливаем Systemsрезервного подписной индекс 20780 копирования о программе Sendmail OpenSSL №6(43) июнь 2006 №8(45) август 2006 №2(39) февраль 2006 www.samag.ru №11(48) ноябрь ваш 2006 веб-сервер? Management Server 2003 установка системыИспользуем подписной индекс 20780 подписной индекс 20780 подписной индексв20780 Штопаем дыры Ilohamail истории IT-журналистики! для вкриптографической подписной индекс 20780 Программы для стресс-тестов Как обнаружить www.samag.ru www.samag.ru www.samag.ru Как обеспечить www.samag.ru защиты данных FreeNAS: строим надежную Создаем порт для FreeBSD malware-программы? Почтовый сервер к Интернету необходимое быстродействие Настраиваем эффективнуюсистему хранения данных Подключаемся своими руками MS WindowsОрганизуем XP SP3, работу на основе реляционной СУБД Windows Firewall: систем «1С: Предприятие» или не быть систему защиты Zorp Создаем VPNсетевой сБыть помощью через спутник офисного почтового сервера Ajax: новый канал или Много шума из ничего Оцените преимущества!Zserver Suite: защищаем защищаем внутренние России? SSL-Explorer зарубежному софту Как вувеличить безопасность на платформе Windows общения клиента и сервера Microsoft Operations Manager: Windows SharePoint Services: Чем уникальна Prevx1 – ресурсы сети процессов посредством хранилища корпоративные Разрабатываем пакет Создаём кластер система сетью Современный разбираем на практике Linux-сервер: Техническая документация: общественная поисках анонимного chroot и jail Развиваемуправляем модуль DBI данных управленияВдля МОМ 2005 дляпредотвращения PostgreSQL возможности технологии сеть Биллинг на FreeBSD: серверы и сетивиртуализируем атак настраиваемпрокси-сервера OpenVPN:пишем доступсами В поискахLinux-VServer: профессиональной Управляем сетевым Кластеризация + Защищаем Windows-системы виртуальные серверы зоны Box Backup:Создаем узнайте всё DNS прогноз: Можно ли защититься Как надо и как не надо повышенной проходимости этики сисадминов оборудованием Профессиональный виртуализация: с помощью CORE FORCE Проводим инвентаризацию о горячих резервных копиях! что ждет от переполнения буферов? защищать веб-контент с помощью протокола SNMP сисадминов? Linux книгу HA + OpenVZ Создаем адресную Технология AJAX: сетипрокси-сервера средствами SMSМитник 2003 Статистика Кевин от кражи базе OpenLDAP безопасности? Вамнасчет какую? Как повысить безопасность Squid Как устроена защищаетнакомпании Работаем с PDF из Perl Лицензию?как На что способен дистрибутив веб-приложений от былых коллег Linux настроитьSystemRescueCd библиотеку Переключи драйвер NTFS Как построить файловая система JFS Как Интервью с легендарным Документация – экономия SASL для совместной работы в режимкластер read-write отказоустойчивый Доставку гарантируем: Расмусом Лердорфом – времени или его бесполезная Безопасность в FreeBSD: Тестируем c Kerberos с минимальным бюджетом качество обслуживания создателем языка PHP трата? разбираемся в тонкостях Настраиваем безопасный движки поисковых машин в пакетных сетях применения jail Растущая угроза: роутер наArch базеLinux FreeBSD Обзор дистрибутива Настраиваем руткиты Win32 ProFTPD: мастер своего дела Работаем с NTLMПишем систему Генная инженерия на службе DrWeb Enterprise Suite авторизацией Apache Как зарабатывают распаковкидинамической PE-файлов защиты Практикум Python: Аудит и дизассемблирование на Open Sourceв домене MS Windows 2003 ресурсов в сети обрабатываем входящую эксплоитов электронную почту ждать от Perl 6 Головоломка, Чего ведущая Первый раз в Linux-класс! Интервью по жизни Игоря Данилова Какова цена анонимности Интервью с создателем Оппонент мистера Гейтсас cоздателем Asterisk в Сети популярного ресурса OpenNET №9(46) сентябрь 2006 подписной индекс 20780 www.samag.ru
книжная полка
UNIX. Практическое пособие администратора UNIX, 2-е издание Филипп Торчинский
Руководство по администрированию UNIX-подобных систем от нашего соотечественника, не признающего бытующего в массах мнения, что «Linux – это не UNIX». По книге можно познакомиться с UNIX фактически с нуля. Но отмечу, что некоторые базовые аспекты освещены с недостаточной точностью, а это существенно неприятный
момент для начинающих делать свои первые UNIX-шаги. В книге есть все – от сжатой истории UNIX, советов по установке и общей теории по функционированию системы и поддержке сети до практики по инсталляции и настройке различных сервисов на конкретных примерах. Это и резервное копирование (dump, restore), настройки сети вообще (ifconfig, route, DNS, DHCP, inetd, NAT, ipfw...), и почта (Sendmail, Postfix), борьба с вирусами (Anomy sanitizer, ClamAV), и веб-сервер (конечно, Apache с привязками для Perl и PHP), и proxy-сервер/http-cache (Squid), и СУБД (MySQL), и аутентификация через PAM, и Samba, и сервис печати, правда, почему-то незаслуженно забыт CUPS, и даже несколько страниц о графической среде X-Window. Кроме того, рассказано о таких неотъемлемых составляющих работы системного администратора, как
работа с файлами (в том числе о редакторе vi и базовых утилитах grep, tr, sed), дано описание командных процессоров с примерами составления простых скриптов, мониторинг системы. По уверениям автора, «эта книга рассчитана прежде всего на российского системного администратора», однако за исключением главы, посвященной русификации UNIX, и аналогичных подразделов в главах по установке системы и по X-Window никаких кардинальных отличий от подобных книг зарубежных авторов в этом отношении я не нашел.
Издательство: «Символ-Плюс» Год издания: 2005 Количество страниц: 400 ISBN: 5-93286-084-7 Цена: ≈ 150 руб. Книга предоставлена интернет-магазином books.ru.
PHP 5. Профессиональное программирование Энди Гутманс, Стиг Баккен, Дерик Ретанс (перевод А. Киселева)
Открывающее книгу предисловие Зива Сураски, который наравне с первым автором этого справочника является одним из основателей компании Zend, занимающейся поддержкой PHP, впечатляет: «каждый программист, интересующийся расширенными возможностями PHP 5, должен ее иметь».
92
Первая глава знакомит читателей с ключевыми новшествами в PHP 5, последующая – с основами программирования на этом языке, а уже начиная с третьей предстает развернутое описание более продвинутых возможностей. Так, например, значительное внимание уделяется объектноориентированному программированию, работе с объектами и шаблонами. Из раздела по созданию веб-приложений вместо привычного затянутого разжевывания элементарных понятий можно почерпнуть более полезную информацию вроде обеспечения безопасности скриптов. В самостоятельные главы также вынесены базовые расширения к PHP, обработка различных ошибок и работа с XML. Примеры взаимодействия с базами данных не ограничиваются MySQL – представлены и SQLite,
и PEAR DB. Стоит отметить обширное описание возможностей библиотеки PEAR и ее компонентов. Последние разделы призваны удовлетворить потребности еще более взыскательной публики: в них рассмотрены вопросы миграции на PHP 5 c PHP 4 (третья версия разумно забыта как архаизм), повышения производительности (оптимизация, проектирование, тестирование, профилирование...), разработки расширений для PHP и приложений для консольного применения (CLI).
Издательство: «Символ-Плюс» Год издания: 2006 Количество страниц: 704 ISBN: 5-93286-083-9 Цена: ≈ 390 руб. Книга предоставлена интернет-магазином books.ru.
книжная полка
AJAX и PHP: разработка динамических веб-приложений Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михай Бусика (перевод А. Киселева)
Технологию AJAX по привычке многие и сейчас называют сенсационно новым и перспективным подходом к построению веб-приложений, который вот-вот только собирается начать свой триумфальный марш по пространству WWW. Однако уже очевидно, что AJAX – это не ближайшее будущее, а актуальное настоящее. Са-
мое время учиться создавать веб-при- верка вводимой пользователем инложения на AJAX в самой популярной формации), функциях автоматичессвязке с PHP, и эта книга станет отлич- кого дополнения (так называемых ным помощником в таком начинании. подсказках, т.е. когда скрипт «помоВ вводной части авторы, объяснив гает» с вводом данных, предлагая суть технологии, сразу демонстриру- возможные варианты), взаимодейсют элементарный пример ее реали- твии с drag-n-drop (для перетаскивазации с подробными комментария- ния различных элементов на страними о том, что и для чего использует- цы), примере создания чата, построся и как это всё работает. В подобном ении диаграмм (в SVG), поддержке изложении во многом следуют и даль- расширяемого языка таблиц стилей нейшие главы: базовые и самые не- для преобразований XSLT и возможобходимые аспекты применения AJAX ностях чтения RSS-лент (с применераскрываются на основе многочис- нием XSLT и SimpleXML). ленных листингов кода с предварительным описанием задачи, коммен- Издательство: «Символ-Плюс» тариями к приведенной реализации Год издания: 2006 и полезными сведениями «Что про- Количество страниц: 336 исходит внутри?». ISBN: 5-93286-077-4 В книге рассказывается о работе Цена: ≈ 250 руб. со структурой XML и данными из СУБД Книга предоставлена интернет-магазином MySQL, обработке HTML-форм (про- books.ru.
PHP. Сборник рецептов Дэвид Скляр, Адам Трахтенберг
Сборник рецептов «PHP Cookbook» предназначен в первую очередь для тех, кто уже программирует на PHP. Тем, кто PHP еще не знает, авторы рекомендуют прочитать эту книгу второй после классической «Programming PHP». А после ознакомления с книгой, будучи давним обладателем и поклонником аналога такого сборника
№12, декабрь 2006
для Perl («Perl Cookbook»), могу только полностью согласиться с такой нескромной позицией. Потому что эта книга – кладезь полезных практических рекомендаций о том, как решить разнообразные задачи. Важно понимать, что такой подход отнюдь не обязательно снижает интерес к представляемой информации, ограничивая ее узкими рамками конкретных проблем. Рассматриваемые примеры помогают лучше понять технику PHP-программирования и послужат отличной базой для решения бесчисленного множества других задач, интересующих именно вас. Среди рассматриваемых тем, для которых даны готовые решения: работа с символами, строками и числами, шаблонами (Smarty, парсинг файлов конфигурации, анализ логов), массивами и функциями, классами и объектами, файлами (в том числе архи-
вами) и каталогами (представлен даже пример простого поиска по сайту), обработка данных из HTML-форм. Естественно, широко раскрыто взаимодействие с Web (причем не только с языком разметки HTML и протоколом HTTP, но и такими интернет-сервисами, как почта, Usenet, FTP, LDAP, DNS). Отдельно вынесены главы по XML (с DOM, SAX, XSLT и SOAP), регулярным выражениям, аспектам безопасности (пароли, шифрование, SSL, GPG для почты), графике, функционированию PHP-приложений в командной строке, локализации, а также PEAR.
Издательство: «Символ-Плюс» Год издания: 2006 Количество страниц: 672 ISBN: 5-93286-059-6 Цена: ≈ 390 руб. Книга предоставлена интернет-магазином books.ru.
Обзор книжных новинок подготовил Дмитрий Шурупов
93
подписка на 2007 год
Оформите годовую подписку и получите в подарок DVD-диск с архивом всех вышедших номеров с 2002 года. Диск будет вложен в январьский юбилейный выпуск журнала Редакционная подписка для физических лиц
Подписку Вы можете оформить на любой российский адрес.
При заполнении разборчиво укажите фамилию, имя, отчество полностью, почтовый индекс и адрес получателя, контактный телефон.
94
Подписку можно оформить с любо-
Копию заполненного и оплаченно-
го месяца на любой срок. В графе «Сумма» проставьте сумму за выбранное количество номеров. Стоимость одного номера журнала 150 руб. За год – 1800 руб. НДС и почтовые расходы включены в стоимость.
го бланка отправьте в редакцию по факсу: (495) 628-8253 или на электронный адрес: info@samag.ru Журнал высылается почтой простой бандеролью только после поступления денег на расчетный счет.
подписка на 2007 год Российская Федерация
Подписной индекс: годовой – 20780, полугодовой – 81655 Каталог агентства «Роспечать»
Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru Подписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru
СНГ В странах СНГ подписка принимается в почтовых отделениях по национальным каталогам или по списку номенклатуры «АРЗИ»: Азербайджан – по объединенному каталогу российских изданий через предприятие по распространению
печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
Казахстан – по каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»
Беларусь – по каталогу изданий стран СНГ через РГО «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Узбекистан – по каталогу «Davriy nashrlar» российские издания через агентство по распространению печати «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик, 5/3, офис 33) Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Давида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22) Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42) Молдавия – по каталогу через ГП «Пошта Молдовей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17) по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) Подписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220
Подписные индексы:
20780* 81655** по каталогу агентства «Роспечать»
87836 по каталогу агентства «Пресса России» * **
№12 декабрь 2006
годовой полугодовой
95
СИСТЕМНЫЙ АДМИНИСТРАТОР №12(49), Декабрь, 2006 год УЧРЕДИТЕЛИ Владимир Положевец Александр Михалев РУКОВОДИТЕЛЬ ПРОЕКТА Петр Положевец РЕДАКЦИЯ Исполнительный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Редактор Алексей Коршунов Внештатные редакторы Алексей Барабанов Сергей Супрунов Валентин Синицын РЕКЛАМНАЯ СЛУЖБА тел./факс: (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» Тираж 11000 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.). За содержание статьи ответственность несет автор. За содержание рекламных материалов ответственность несет рекламодатель. Все права на опубликованные материалы защищены.
ЧИТАЙТЕ В СЛЕДУЮЩЕМ НОМЕРЕ: Настраиваем удаленный доступ к сети с помощью MS ISA 2004
Размещение пользовательских бюджетов в LDAP
Предположим, у нас имеется некоторое веб-приложение, например, система заказов on-line. Необходимо организовать защищенный доступ к этому ресурсу с помощью SSL. Также сотрудники компании ездят в командировки и иногда работают из дома, поэтому им необходимо предоставить доступ по VPN. А еще у компании есть филиал и его сотрудникам также требуется доступ в локальную сеть. О решении всех этих задач читайте в следующем выпуске журнала.
После установки Linux-системы часто возникает потребность перейти к хранению информации о пользователях в LDAP. Обычно этот шаг связывается или с построением почтового сервера, или с созданием PDC на основе Samba. Стандартные средства работы с пользовательскими настройками в таком случае остаются без внимания. Но есть возможность после установки минимальной Linux-системы настроить пользовательский LDAP-репозиторий и заставить практически все службы работать с пользователями «из LDAP» как с локальными.
FreeBSD в домене Windows: дополнительные возможности Правильное подключение FreeBSD в домен Windows дает возможность работать с Active Directory для проверки паролей, членства в группах и т. д. Но это только часть того, для чего FreeBSD может использовать данную информацию. Элементарный доступ к компьютеру через Microsoft Management Console, эффективная раздача прав доступа для пользователей домена, автоматическое создание каталогов пользователей – вот некоторые из них.
Как быстро и эффективно провести учет компьютерной техники на предприятии Статья будет посвящена решению проблемы учета компьютерной техники. Не секрет, что этот вопрос порой вызывает головную боль у системных администраторов и руководителей IT-отдела. Мы расскажем, как автоматизировать этот процесс, легко подготовить нужные отчеты и получить в свое распоряжение несколько дополнительных возможностей по мониторингу сети.
Уважаемые читатели! Обратите внимание, что теперь оформить подписку вы можете не только на полугодие, но и сразу на весь год. Годовой индекс по каталогу «Роспечать» – 20780. Интер-почта – заказ журналов по тел.(495) 500-00-60. Подписка on-line – SetBook.ru. Приобрести новые и старые номера журнала вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
Доставка почтой в любую точку России.
96