98
Роспечать – 20780, 81655 Пресса России – 87836 Интер-почта – тел. (095) 500-00-60 Так видит журнал читатель, который забыл оформить подписку: ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Так видит журнал читатель, оформивший подписку: НОВОГОДНИЕ КАНИКУЛЫ ЗАТЯНУЛИСЬ БЫСТРО РАСКУПИЛИ ТИРАЖ НЕОЖИДАННО ЗАКОНЧИЛИСЬ ДЕНЬГИ УЕХАЛ В ОТПУСК ПОСЛЕ ОТПУСКА АВРАЛ НА РАБОТЕ №5(30) май 2005 подписной индекс 81655 www.samag.ru Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl №5(30) май 2005 подписной индекс 81655 www.samag.ru Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl №12(49) декабрь 2006 №12(49) декабрь 2006 подписной индекс 20780 www.samag.ru Подробное руководство по настройке тонких клиентов на основе Thinstation и NX Как купить ПО от Microsoft? Особенности приобретения и использования OEM-версий Устанавливаем MS ISA Server 2004 Выдержит ли нагрузку ваш веб-сервер? Программы для стресс-тестов Организуем работу офисного почтового сервера на платформе Windows В поисках анонимного прокси-сервера Как надо и как не надо защищать веб-контент от кражи

049 Системный Администратор 12 2006

Embed Size (px)

DESCRIPTION

СЛЕ О ТПУСКА АВРАЛ КАНИКУЛЫ НЧИЛИСЬ ИДАННО ГОДНИЕ ДЕНЬГИ РАБО ТЕ НЕО Ж ЗАКО №12(49) декабрь 2006 НО НА БЫ ВО №5(30) май 2005 №5(30) май 2005 подписной индекс 81655 www.samag.ru подписной индекс 81655 www.samag.ru Организуем работу офисного почтового сервера на платформе Windows 40 Предвестник бури, или История первого персонального компьютера 82 Выдержит ли нагрузку ваш веб-сервер?66 ЧЕЛОВЕК НОМЕРА Романтичный хакер Крис Касперски62 В поисках анонимного прокси-сервера36 БЕЗОПАСНОСТЬ

Citation preview

Page 1: 049 Системный Администратор 12 2006

Роспечать – 20780, 81655Пресса России – 87836Интер-почта – тел. (095) 500-00-60

Так видит журнал читатель, который забыл оформить подписку:

ПОДПИШИТЕСЬ И ЧИТАЙТЕ!

Так видит журнал читатель, оформивший подписку:

НОВОГОДНИЕ

КАНИКУЛЫ

ЗАТЯ

НУЛИСЬ

БЫСТР

О РАСКУПИЛИ

ТИРА

Ж

НЕОЖ

ИДАННО

ЗАКОНЧИЛИСЬ Д

ЕНЬГИ

УЕХАЛ В

ОТП

УСК

ПОСЛЕ ОТП

УСКА

АВРАЛ Н

А РАБОТЕ

№5(30) май 2005подписной индекс 81655www.samag.ru

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

Строим защищенную беспроводную сеть:WPA-Enterprise, 802.1x EAP-TLS

Настраиваем UPS под Linux

Как восстановить удаленные файлы под BSD

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

танавливаем Symantec Antivirus 9.0в корпоративной сети

Эффективно управляем полями пользователей в AD

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

Интервью с Ларри Уоллом –создателем языка Perl

№5(30) май 2005подписной индекс 81655www.samag.ru

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

Строим защищенную беспроводную сеть:WPA-Enterprise, 802.1x EAP-TLS

Настраиваем UPS под Linux

Как восстановить удаленные файлы под BSD

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

танавливаем Symantec Antivirus 9.0в корпоративной сети

Эффективно управляем полями пользователей в AD

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

Интервью с Ларри Уоллом –создателем языка Perl

№12

(49)

дек

абрь

200

6

№12(49) декабрь 2006подписной индекс 20780www.samag.ru

Подробное руководствопо настройке тонких клиентов на основе Thinstation и NX

Как купить ПО от Microsoft?Особенности приобретения и использования OEM-версий

Устанавливаем MS ISA Server 2004

Выдержит ли нагрузку ваш веб-сервер? Программы для стресс-тестов

Организуем работу офисного почтового сервера на платформе Windows

В поисках анонимного прокси-сервера

Как надо и как не надозащищать веб-контент от кражи

Page 2: 049 Системный Администратор 12 2006
Page 3: 049 Системный Администратор 12 2006

1№12, декабрь 2006

в номере

КНИЖНАЯ ПОЛКА92

59, 81 BUGTRAQ

ТЕНДЕНЦИИ2

АДМИНИСТРИРОВАНИЕ

Устанавливаем межсетевой экран MS ISA Server 2004

4

Какова архитектура этого распространенного межсе-тевого экрана, на что обратить внимание при его уста-новке и как настроить основные службы?

Андрей Бирюков[email protected]

Как купить ПО от Microsoft?10Разбираемся в особенностях приобретения и исполь-зования OEM-версий. Дмитрий Бутянов

[email protected]

Подробное руководство по настройке тонких клиентов на основе дистрибутива Thinstation и протокола NX

16

Технология NX дает новые возможности для связи и способна оживить старые компьютеры в роли тон-ких клиентов. Евгений Бушков

[email protected]

Кластеризация + виртуализация: Linux HA + OpenVZЧасть 2: Виртуализация на практике

24

Строим систему виртуализации с виртуальными сер-верами, мигрирующими с одного узла на второй в слу-чае отказа первого. Евгений Прокопьев

[email protected]

Настраиваем шлюз в Интернет на базе FreeBSD

30

Простая в применении, нетребовательная к ресурсам FreeBSD почти идеально подходит для использования на небольших роутерах для связи с внешним миром.

Алексей Бережной[email protected]

В поисках анонимного прокси-сервера36Вопрос о безопасном серфинге по Интернету подни-мался не раз. При использовании для этой цели прок-си-сервера возникает вопрос, что лучше: искать прок-си или создать свой? Иван Максимов

[email protected]

Организуем работу офисного почтового сервера на платформе Windows

40

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

Александр Емельянов[email protected]

MeTA1: почтовый сервер на новый лад44Sendmail хоть и занимает первую строчку «хит-парада» среди открытых серверов электронной почты, но все же неуклонно теряет свои позиции. Команда разработчи-ков взялась исправить ситуацию. Сергей Супрунов

[email protected]

Делимся впечатлениями о дистрибутиве Linux XP Desktop

48

Российская компания LINUX-ONLINE выпустила об-новление к своему дистрибутиву Linux XP Desktop, на-помнив сообществу о своих оригинальных подходах к Linux-бизнесу. Дмитрий Шурупов

[email protected]

Интеграция BIND + PostgreSQL54Подробное описание метода хранения зон BIND в PostgreSQL. Сергей Алаев

[email protected]

Какие возможности появились в новой версии DeviceLock

61

Компания «Смарт Лайн Инк» отметила свое 10-летие выпуском новой версии DeviceLock 6.0, которая подде-рживает функцию теневого копирования данных.

БЕЗОПАСНОСТЬ

Михаил Брод [email protected]

Романтичный хакер Крис Касперски62

Оксана Родионова[email protected]

Компьютер – это тайна, считает популярный российс-кий специалист по системам безопасности.

ЧЕЛОВЕК НОМЕРА

Выдержит ли нагрузку ваш веб-сервер?66Обзор программ для проведения стресс-тестирова-ния.

WEB

Сергей Яремчук[email protected]

Как надо и как не надозащищать веб-контент от кражи

74

Что использовать для охраны веб-контента – одну из многих защитных систем, имеющихся на рынке, или попытаться смастерить что-то свое?

Крис Касперски[email protected]

Предвестник бури, или История первого персонального компьютера

82

Дмитрий Мороз[email protected]

РЕТРОСПЕКТИВА

Кремниевая долина превратилась в кузницу передо-вых идей в области информационных технологий. Яр-кий тому пример – исследовательский центр Xerox PARC, в котором был создан первый в мире персо-нальный компьютер.

СОДЕРЖАНИЕ ЖУРНАЛА ЗА 2006 ГОД88

Как же я безлюбимого журнала?

И у менятакая же беда

Мужики,где журнал

взяли?

Почему я до сих порэтого не сделал?!

Оформилиподписку!

Принес номерна работу,

«увели» почитать

Лучше каждомуполучать отдельныйэкземпляр журнала

Я забылподписаться!

А можно ещёуспеть?

Информацияо подпискена 95 стр.

Летим скореена почту!

Page 4: 049 Системный Администратор 12 2006

2

тенденции

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

Page 5: 049 Системный Администратор 12 2006

3№12, декабрь 2006

тенденции

29 ноября в Москве состоялась Тор-жественная Церемония вручения ежегодной Национальной Премии РФ за вклад в развитие российс-кого сегмента сети Интернет «Пре-мии Рунета 2006».

Компания «Битрикс», разработчик системы управления веб-проектами «Битрикс: Управление сайтом», – ла-уреат в номинации «Технологии и ин-новации». Сергей Рыжиков, директор ООО «Битрикс», убежден, что «Пре-мия Рунета 2006» – заслуженная на-града всей компании «Битрикс», все-го коллектива, профессиональной ко-манды. «Проведена серьезная работа над продуктом, и мы рады, что она за-вершилась таким успехом. Это важное достижение нашей компании».

В шести основных номинациях «Го-сударство и общество», «Наука и обра-зование», «Культура и массовые ком-муникации», «Наука и образование», «Экономика и бизнес», «Здоровье и от-дых», «Технологии и инновации» бы-ли объявлены по три лауреата, каж-дый из которых получил позолоченную статуэтку в виде колонны, увенчанной буквенным обозначением российско-го домена «RU».

«Премия Рунета» в номинации «Технологии и инновации» за 2006 год вручена компании «Битрикс», Intel Technologies, а также компании МТУ-Интел и проекту «Стрим-ТВ». Все-го за звание лучшего интернет-ресур-са в этой номинации боролись 40 пре-тендентов, в том числе восемь регио-нальных. В прошлом году «Премию Ру-нета» за технологии и инновации полу-чила Лаборатория Касперского.

«Битрикс: Управление сайтом» – универсальная система управления веб-проектами. Удобный и понятный интерфейс продукта позволяет эф-фективно управлять сайтом, не при-влекая специалистов по программи-рованию и html-верстке. Управлять веб-проектом, созданным на основе «Бит-рикс: Управление сайтом», не сложнее чем создавать документы в обычном текстовом редакторе.

«Битрикс: Управление сайтом» ре-шает задачи 95% веб-проектов и поз-воляет управлять информационным наполнением сайта, структурой, фору-

мами, рекламой, рассылками, распре-делять права между группами поль-зователей, анализировать статисти-ку посещений, оценивать эффектив-ность рекламных кампаний и многое другое.

Отдельного внимания заслуживает мощная система безопасности продук-та, которая обеспечивает защиту сайта от взломов и хакерских атак. Аудит бе-зопасности продукта выполнен двумя независимыми компаниями. Исполь-зование продукта «Битрикс: Управле-ние сайтом», получившего сертифи-каты «Безопасное веб-приложение», позволяет с уверенностью утверждать, что современные корпоративные сайты могут быть надежно защищены.

На основе «Битрикс: Управление сайтом» работает более 3500 веб-про-ектов, среди которых сайты Издатель-ского Дома «Компьютерра», журналов Cosmopolitan и Harper’s Bazaar, интернет-магазина компании «Эльдорадо», сайты страховой группы «НАСТА», «Ренессанс Страхование», Департамента образова-ния Москвы, Администрации Президен-та Удмуртии, Национальной Лиги Управ-ляющих и других организаций.

Компания «Битрикс» специализи-руется на разработке программных продуктов для управления веб-проек-тами и многофункциональных инфор-мационных систем для ведения ком-мерческой деятельности в сети Ин-тернет.

«Битрикс» является технологичес-ким партнером для дилерской сети, включающей более 1000 компаний, и предоставляет возможность дизайн-студиям и независимым разработчи-кам использовать продукты компании для реализации своих решений.

«Премия Рунета» – общенацио-нальная награда, призвана содейство-вать популяризации высоких техноло-гий в России, отмечает выдающиеся заслуги компаний-лидеров в области информационных технологий и элек-тронных коммуникаций, государствен-ных и общественных организаций, биз-нес-структур, а также отдельных де-ятелей, внесших значительный вклад в развитие российского сегмента сети Интернет. Учредитель «Премии Руне-та»: Федеральное агентство по печати и массовым коммуникациям.

На правах рекламы

«Битрикс» – лауреат «Премии Рунета 2006»

Вручение премии компании «Битрикс»

Page 6: 049 Системный Администратор 12 2006

4

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

Приступая к работеБыстрота передачи данных по элект-ронной почте, возможность мгновенно находить нужную информацию с помо-щью поисковых систем – все это сде-лало Интернет удобным инструмен-том, необходимым для работы. Одна-ко помимо тех удобств, которые пре-доставляют ресурсы глобальной се-ти, они могут стать и источником мас-сы угроз: атаки хакеров, вредонос-ные приложения, утечка информации, нежелательная почта. Все эти факто-ры представляют угрозу как для час-тных пользователей, так и крупных корпораций, и могут привести к зна-чительным убыткам. Для борьбы с уг-розами существует множество как ап-паратных, так и программных реше-ний. Если у вас сеть под управлением MS Windows, то вам наверняка зна-ком такой продукт, как Microsoft ISA Server 2004.

Разберемся с топологией сетиХотелось бы обратить ваше внимание на такую важную вещь, как имеюща-

яся на момент внедрения ISA топо-логия сети. В сети организации име-ются ресурсы, которые должны быть доступны как из глобальной сети, так и из локальной (например, почто-вый сервер, веб-сервер, FTP-сервер и т. д.). Возможны два варианта под-ключения.

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

В другом случае сеть организации содержит подсети, и соответствен-но серверы, доступ к которым необ-ходим как снаружи, так и изнутри, на-ходятся в одной подсети (которая так-же именуется DMZ, демилитаризован-ной зоной), а пользователи и локаль-ные ресурсы находятся в других под-сетях. При такой топологии серверы, находящиеся в DMZ, должны быть от-делены одним межсетевым экраном от Интернета и другим – от локальной сети. При этом на внешнем межсете-

вом экране должен быть реализован доступ «снаружи» к нужным ресурсам, используя терминологию ISA Server, эти ресурсы должны быть опубликова-ны. По-хорошему, эти два межсетевых экрана должны находиться на разных серверах и использовать различное программное обеспечение (например, Windows и ISA и Linux и iptables).

Однако далеко не все, особен-но небольшие компании, могут поз-волить себе использовать два серве-ра для защиты сети. Поэтому зачас-тую прибегают к более дешевому ва-рианту: использованию одного серве-ра с тремя сетевыми интерфейсами. Тогда один интерфейс «смотрит» в Ин-тернет, второй – в DMZ и третий – в ло-кальную сеть.

Далее в статье сетевой адаптер, подключенный к Интернету, я буду на-зывать WAN, интерфейс, подключен-ный к демилитаризованной зоне, – DMZ, а к локальной сети – LAN.

На рис. 1 изображены два вари-анта подключения межсетевого эк-рана. В случае «а» используются два межсетевых экрана, один подключен

Устанавливаем межсетевой экран MS ISA Server 2004

Вам предстоит внедрить в вашей компании Microsoft ISA Server 2004. Какова архитектура этого распространенного межсетевого экрана, на что обратить внимание при его установке и как настроить основные службы?

Андрей Бирюков

Page 7: 049 Системный Администратор 12 2006

5№12, декабрь 2006

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

к WAN и DMZ, а второй – к DMZ и LAN, в случае «б» – один межсетевой эк-ран, подключенный и к WAN, и к LAN, и к DMZ.

Если вы собираетесь реализовать второй вариант подключения, то обра-тите внимание на его недостатки.Пре-жде всего это общее снижение надеж-ности сети. В случае зависания или пе-резагрузки сервера ресурсы, находя-щиеся в DMZ, будут временно недо-ступны пользователям. Например, ес-ли у вас в сети один почтовый сервер и он находится в демилитаризованной зоне, то при отключении межсетевого экрана он будет недоступен, и у поль-зователей в почтовом клиенте начнут появляться сообщения об ошибке со-единения. Как следствие – поток звон-ков и жалоб системному администра-тору на неработоспособность сети.

Другой недостаток использования одного сервера – это то, что в случае его выхода из строя все то время, ко-торое вы потратите на замену, локаль-ная сеть организации будет практичес-ки неработоспособна.

И наконец, пожалуй, самый важ-ный недостаток такой топологии, в случае если злоумышленнику удас-тся проникнуть на сервер, он сможет получить доступ как в DMZ, так и ло-кальную сеть.

Я буду описывать настройки серве-ра, который подключен к WAN и DMZ, вариант топологии «а» и при необходи-мости буду делать пояснения для реа-лизации варианта «б».

Если используются два межсе-тевых экрана, то все эти недостатки частично или полностью можно уст-ранить. В случае выхода из строя од-ного из них в течение буквально не-скольких минут сеть из варианта «а» можно превратить в вариант «б», до-бавив в сервер еще одну сетевую кар-ту и произведя соответствующие из-менения в настройках. К тому же бе-зопасность сети при использовании двух межсетевых экранов повышает-ся. Например, если взломщик сумел проникнуть на сервер, подключенный к WAN и DMZ, то ему не будут доступ-ны ресурсы локальной сети.

Архитектура ISA и подготовка к установкеСуществуют две версии ISA 2004: Standard и Enterprise.

Версия Standard подходит в качес-тве решения для небольших и сред-них компаний, количество рабочих мест в которых не превышает 100-150. Основной особенностью ISA 2004 Standard Edition является то, что дан-ная редакция позволяет разворачи-вать межсетевой экран только на од-ном сервере. Другими словами, если в вашей сети не используются клас-теры и балансировка нагрузки, то нет никакого смысла покупать более доро-гую версию Enterprise Edition, так как в остальном функциональности вер-сий совпадают.

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

Также в Enterprise включена под-держка протокола CARP (Cache Array Routing Protocol). Этот протокол осу-ществляет управление поиском кэши-рованных страниц в массиве ISA се-веров. То есть когда пользователь об-ращается к какой-либо веб-странице, CARP определяет на каком ISA-серве-ре массива сохранить эти данные. За-тем, когда другой пользователь обра-щается к этой же странице, CARP об-ращается к тому серверу, на котором страница сохранена. Таким образом,

с помощью CARP осуществляется оп-тимизация кэширования данных.

В своей серии статей я ограни-чусь описанием настроек для версии Standard Edition.

С аппаратными требованиями, предъявляемыми Microsoft ISA 2004 к серверу, вы можете ознакомиться в статье [1]. Там же содержатся реко-мендации по использованию операци-онной системы, поэтому я лишь пред-лагаю сразу после установки ОС раз-вернуть все последние обновления и проследить за тем, чтобы не было ус-тановлено никаких лишних компонен-тов, так как наличие любого дополни-тельного приложения увеличивает ве-роятность успешного взлома системы. Не стоит забывать, что мы разворачи-ваем межсетевой экран, а не какой-то внутренний сервер, то есть погранич-ный узел, который первым будет «про-веряться на прочность» хакерами.

Следующий элемент архитекту-ры – таблица маршрутизации, которая должна быть настроена до установки программного обеспечения ISA. Таб-лица включает маршруты ко всем се-тям, которые не являются локальными для сетевых интерфейсов межсетево-го экрана. Эти записи в таблице мар-шрутизации необходимы, потому что у ISA может быть только один основной шлюз. Обычно основной шлюз настро-ен на сетевом интерфейсе, использу-емом для внешней сети. Поэтому, ес-

Рисунок 1. Варианты развертывания межсетевого экрана и демилитаризованной зоны

Page 8: 049 Системный Администратор 12 2006

6

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

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

ходимости уточните у вашего провай-дера адреса 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 восполь-зоваться таблицей маршрутизации,

Рисунок 2. Правило для протокола HTTP

Page 9: 049 Системный Администратор 12 2006

7№12, декабрь 2006

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

чтобы определить адреса, использу-емые для внутренней сети по умол-чанию. Поэтому важно правильно на-строить записи таблицы маршрутиза-ции, прежде чем устанавливать межсе-тевой экран. Щелкните мышью «Select Network Adapter» (выбрать сетевой адаптер). В соответствии с оговорен-ными ранее наименованиями сетевых интерфейсов, выбираем LAN. Указы-ваем необходимый диапазон IP-адре-сов. Далее нужно остановить службы ICF (Internet Connection Firewall) и RRAS (Routing and Remote Access), если они у вас используются. В противном слу-чае при установке ISA вы получите со-общение об ошибке.

Далее нажимаем «Start», по окон-чании установки межсетевого экрана ISA необходимо произвести перезаг-рузку сервера.

После установки ISA, но перед под-ключением сервера к Интернету необ-ходимо установить на него последний пакет обновлений. Для ISA Server 2004 на момент написания статьи это был Service Pack 2. Проверить наличие последних обновлений вы можете по адресу [3].

Открываем доступСразу после установки сервер ISA ра-ботает в режиме запрета всех соеди-нений, и для того чтобы организовать пользователям локальной сети доступ к ресурсам Интернета, необходимо от-крыть доступ к соответствующим эле-ментам межсетевого экрана. Вкрат-це стандартную конфигурацию мож-но представить так: Системные политики разрешают

выборочный трафик с брандмауэ-ра ISA и на него.

Запрещен весь трафик через бран-дмауэр ISA, потому что есть только одно запрещающее правило.

Между сетями VPN/VPN-Q и внут-ренней сетью установлены отноше-ния типа «маршрут».

Между внутренней сетью и внеш-ней сетью по умолчанию задано от-ношение трансляции адресов NAT.

Только администраторы могут ме-нять политику брандмауэра ISA.

Теперь нам необходимо разрешить доступ пользователей локальной сети к ресурсам Интернет. Многие систем-ные администраторы открывают до-ступ из внутренней сети в Интернет по всем портам, мотивируя это тем, что не хотят заниматься «тонкой на-стройкой», открывая конкретные пор-ты конкретным пользователям. Одна-ко это пагубная практика во всех от-ношениях.

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

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

И в-третьих, хорошим тоном явля-ется наличие корпоративной политики безопасности, построенной по принци-пу: все, что не разрешено, то запреще-но. Закрытие портов является неотъ-емлемой частью такой политики.

Итак, будем открывать доступ пользователей только к определен-

ным портам. Как правило, протоколы, с помощью которых допускается взаи-модействие с внешней сетью, ограни-чиваются следующими: SMTP, HTTP, HTTPS, DNS, FTP, ICQ, ICMP, SSH, Telnet (последние два протокола нуж-ны, как правило, только администра-торам). Для того чтобы создать пра-вило доступа, выберите в консоли ад-министрирования ISA раздел «Firewall policy», затем в меню «Action» выби-раем «New → Access Rule». В появив-шемся окне указываем наименова-ние правила, далее определяем, какое это правило, запрещающее или раз-решающее, в нашем случае выбира-ем «Allow», в следующем окне необ-ходимо указать протоколы, к которым будет применяться данное правило. Соответственно выбираем, например HTTP, затем указываем источники, в нашем случае это будет сеть Internal (LAN), а в качестве точки назначения External (WAN).

Затем укажите пользователей, ко-торым будет разрешен выход в Интер-нет, при этом аутентификацию можно осуществлять посредствам RADIUS-сервера и локальной базы пользова-телей. В результате выполнения всех этих действий получаем правило до-ступа для протокола HTTP. Аналогич-ным образом создаются правила для всех остальных протоколов, за исклю-чением двух последних (SSH и Telnet), которые, как уже упоминалось ра-нее, нужны только администраторам. Для того чтобы создать правило до-ступа только для определенных хос-тов, необходимо при назначении ис-точника указать не подсеть (Network), как это делалось в предыдущем при-мере, а отдельный узел (Computer), ко-торым пользуется администратор.

Публикуем ресурсыИтак, все необходимые обновления ус-тановлены, межсетевой экран подклю-чен к глобальной сети и теперь нужно открыть доступ к ресурсам, находя-щимся в DMZ или LAN из внешней се-ти WAN. В терминологии ISA эта опе-рация называется «публикацией ре-сурса». Прежде всего определим-ся, что именно нам необходимо пуб-ликовать. Как правило, в сети орга-низации размещаются почтовый сер-вер, сервер FTP, а также ресурсы, до-ступ к которым осуществляется пос-

Что делать, если в сети активно применяется какое-либо критичное для работы клиент-серверное приложение, использующее для соединения нестандартные порты?У многих, особенно начинающих, адми-нистраторов может возникнуть такой воп-рос. Конечно, можно попробовать поис-кать документацию по данному продукту или же воспользоваться сетевым мони-тором (сниффером). Однако есть более

быстрый и удобный способ. Все обраще-ния к закрытым портам можно отслежи-вать средствами ISA, для этого нужно от-крыть закладку «Logging», фильтр можно использовать стандартный или же настро-ить на журналирование пакетов, удовлет-воряющих определенным критериям, на-пример, по IP-адресу или типу пакетов. Далее включаем журналирование «Start Logging». Получив нужную информацию, открываем порты для необходимого ви-да трафика.

Page 10: 049 Системный Администратор 12 2006

8

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

редством шифрования SSL (например, Outlook Web Access). Несмотря на то что для размещения веб-сайта компа-нии сейчас, как правило, используют-ся ресурсы провайдера, во многих се-тях для доступа к некоторым локаль-ным ресурсам используется HTTP, по-этому мы рассмотрим публикацию веб-сервера в качестве примера.

Обратите внимание на то, что веб-публикацию иногда называют «ревер-сивным представительством» (reverse proxy). Это означает, что, когда публи-куется веб-ресурс, фильтр прокси меж-сетевого экрана ISA всегда перехваты-вает запрос и затем представляет его опубликованным с помощью правила публикации веб-сервера. Механизм реверсивного проксирования также широко используется различными ан-тивирусными системами, которые ин-тегрируют свои фильтры в ISA Server, таким образом осуществляя проверку входящих запросов на наличие вредо-носного кода.

Еще одно удобное средство публи-каций ресурсов в ISA – предваритель-ная аутентификация соединений, ус-танавливаемых с опубликованными веб-ресурсами. То есть можно зара-нее проверить подлинность пользова-теля на межсетевом экране. Предвари-тельная аутентификация не позволяет атакующим и злоумышленникам при-менять неаутентифицированные со-единения для использования извест-ных и неизвестных слабых мест в веб-серверах и приложениях.

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

веб-ресурсы, для углубленного изуче-ния используйте источники [2, 3].

Настраиваем публикацию веб-ресурсов по протоколу, отличному от SSLДля того чтобы произвести публика-цию, нужно в консоли администриро-вания выбрать раздел «Firewall Policy,» а затем в закладке «Tasks» указать «Publish a Web Server». Затем указыва-ем имя правила публикации, на стра-нице «Select Rule Action» выбираем «Allow», после этого определяем веб-сайт для публикации. Для этого запол-няем поля открывшегося окна (рис. 3), здесь вы наверняка обратите внимание на переключатель «Forward the original host header instead of the actual one (specified above)» (пересылать исход-ный заголовок хоста вместо фактичес-кого, заданного ранее). Данное свойс-тво определяет, пересылать ли на опуб-ликованный веб-сервер действитель-ный заголовок хоста в запросе, отрав-ленный внешним клиентом. Это важно, если на одном веб-сервере содержит-ся несколько веб-сайтов и они исполь-зуют разные заголовки хостов.

Далее следует страница «Public Name Details» (параметры общедо-ступного имени), на которой опреде-ляется, какие домены или IP-адреса будут применять пользователи для со-единения с опубликованным веб-сай-том с помощью правила публикации. Здесь не рекомендуется разрешать принимать запросы к любому имени домена «Any Domain Name», так как в таком случае узел становится потен-циально уязвим для различных атак,

так как все обраще-ния на опубликован-ный порт будут пе-редаваться веб-сер-веру, в таком случае могут быть отправ-лены запросы, содер-жащие вредоносный код. Поэтому реко-мендуется в этом ок-не определить, к ка-ким доменам разре-шено принимать за-просы. В поле «Path» можно указать, к ка-ким каталогам нуж-но разрешить доступ на данном веб-сайте.

В следующем окне необходимо оп-ределить веб-приемник «Web Listener», то есть сетевой объект, применяемый в правилах публикации веб-серверов. Веб-приемник ожидает (прослушива-ет) входящие подключения к заданно-му порту в интерфейсе или на выбран-ном IP-адресе. В случае нашей топо-логии указываем интерфейс WAN. За-тем в свойствах приемника указываем порт, который должен прослушивать-ся, как правило, это порт 80.

В окне «User Sets» определяется, нужна ли аутентификация для досту-па к веб-серверу. В нашем случае ау-тентификация не требуется, то есть вы-бираем «All Users». В результате рабо-ты мастера мы получаем новое прави-ло доступа к веб-ресурсу.

Сохраняем результатВсе настройки ISA можно сохра-нить в зашифрованном XML-файле. Для этого выполните действия: в ме-ню «File» выберите опцию «Tasks», да-лее «Export», укажите в разделе «ISA Server export options» использова-ние шифрования «Export confidential information» и «Export user permission settings» для экспортирования прав до-ступа. Затем указываем используемый пароль, и зашифрованный документ го-тов. Такой способ также очень удобен в ситуации, когда требуется на другом межсетевом экране развернуть полно-стью идентичные настройки, например, при организации VPN-соединения меж-ду несколькими офисами. В таком слу-чае настройки экспортируйте в зашиф-рованный XML-файл и отправьте адми-нистратору другого офиса по электрон-ной почте, где он сможет импортиро-вать настройки на свой сервер.

В следующем номереИз второй статьи, посвященной ISA-серверу, вы узнаете, как подключить удаленные офисы через VPN, а также рассмотрим тему публикации веб-ре-сурсов с помощью SSL.

1. http://www.microsoft.com/technet/isa/2004/plan/bestpractices.mspx – требо-вания к аппартной части

2. Шиндер Т. Шиндер Д. ISA Server 2004.3. ht tp : / /www.microsof t .com / technet /

downloads / isa /2004 /serv icepacks /default.mspx – пакеты обновлений для ISA Server 2004.Рисунок 3. Публикация веб-ресурса

Page 11: 049 Системный Администратор 12 2006
Page 12: 049 Системный Администратор 12 2006

10

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

Как купить ПО от Microsoft? Особенности приобретения

и использования OEM-версий

«Зачем это надо?» – с кривой усмешкой ответят многие, когда речь заходит о необходимости использования лицензионного программного обеспечения. Сейчас ведь можно купить практически любой софт «на лотках» совсем дешево! И он почти как настоящий! Чего еще желать сисадмину?

Дмитрий Бутянов

Page 13: 049 Системный Администратор 12 2006

11№12, декабрь 2006

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

Но вот стоит только поработать какое-то время с таким «лотош-ным» товаром, и начинает сис-

админ вздыхать, долгими взглядами буравя потолок и проклиная на все ла-ды тех, кто ему этот самый диск под-сунул. Вроде и делаешь всё правиль-но, и люди умные на форумах советы дельные дают, но ведь живет систе-ма по своим, непонятным людям за-конам. И номера откалывает такие, что даже бывалые, не один гигабайт съевшие специалисты разводят рука-ми и ничего, кроме переустановки, ре-комендовать не могут. Так, может, де-ло не в вас, а в том софте, который вы почти даром заполучили и на котором отныне ваша фирма работает?

Не секрет, что пираты при изготов-лении своей… хм… продукции вно-сят в дистрибутив подчас значитель-ные изменения, выбрасывая из него, как минимум, библиотеки драйверов и прочие малозначащие для них ве-щи. Какие мучения потом будет ис-пытывать админ, их мало волнует. Это на их прибыли не скажется. Вдо-бавок система обрастает «Резетами» и прочим малоаппетитным софтом, заставляющим этого убогого калеку хоть как-то работать. В итоге получа-ем массу проблем, за решением кото-рых и проводим большую часть свое-го времени, вместо того чтобы делом заниматься.

В чьих руках побывала система до того, как попасть на лоток пира-та, зачастую не знают и сами пираты. Что эти неизвестные бойцы пиратского фронта с этой системой сделали, и по-чему теперь на одном DVD помещается пара сотен программ, тоже объяснить не могут. Насколько вся эта конструк-ция жизнеспособна, может показать жизнь, иными словами – они продают вам за ваши же деньги ваши же про-блемы. Вам это нужно?

И некорректно работающим соф-том дело не ограничится. Законода-тельство Российской Федерации в об-ласти охраны авторских прав (борьбы с пиратством) за несколько лет претер-пело значительные изменения, и сей-час строится на базе международных стандартов в этой сфере. При опре-деленных условиях, пиратский софт в офисе компании может стать и уго-ловным преступлением. А что это мо-жет сделать с вашей анкетой и воз-

можностями трудоустройства, може-те представить сами.

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

Купить лицензионное програм-мное обеспечение сейчас по силам почти любой компании, даже неболь-шой. Кстати, можно ведь не покупать, а брать в аренду (мало кто об этом знает). Стало интересно? Читайте дальше.

Бытует мнение, что приобретение лицензионного софта мало отличает-ся от покупки, например, чайника – от-дал деньги, получил товар, пользуйся, как хочешь. На самом деле это не сов-сем так. Купив то или иное програм-мное обеспечение, вы покупаете пра-во его использования. Иными слова-ми – производитель разрешает вам использовать свой продукт, но на сво-их условиях. Эти условия оговарива-ются в Лицензионном соглашении, и обязательны для соблюдения. Обя-зательны! Несоблюдение этих требо-ваний и является пиратством. Так что учтите – пиратом можно стать и по не-знанию.

Каковы особенности приобретения и использования?Приобрести программное обеспече-ние Microsoft можно разными способа-ми. Во всех случаях оно сопровожда-ется лицензионным соглашением, ли-бо в электронной форме, либо в печат-ном виде. Обратите внимание, что ус-ловия использования программного обеспечения зависят не только от са-мого продукта, но также от способа, ко-торым оно приобретено. То есть один и тот же продукт, приобретенный раз-ными способами, можно будет исполь-зовать по-разному.

Перечислю виды лицензий и спо-собы их приобретения: Лицензия FPP (Full Packaged

Product – коробочная). Коробочные продукты предназначены для инди-видуальных клиентов и домашних офисов. В ряде случаев коробоч-

ную версию можно покупать для ус-тановки в офисах компаний, но мой вам совет – сначала проконсульти-руйтесь с реселлером.

Лицензия OEM – предназначена для поставщиков вычислительной техники.

Л и ц е н з и и , п о с т а в л я е м ы е по программам корпоративно-го лицензирования – предна-значены для организаций любо-го размера. В стоимость лицен-зий уже включены скидки за объ-ем заказа.

Существуют специальные про-граммы лицензирования продук-тов для компаний ASP – Application Service Providers, предоставляю-щих услуги доступа к приложениям Microsoft третьим лицам. Например: хостинг баз данных SQL Server, хос-тинг почтовых серверов Exchange Server. SPLA – Service Provider License Agreement. В некоторых случаях мож-но загрузить продукт через Интернет. Остановимся на трех самых популяр-ных вариантах: коробки, OEM-лицен-зии, программы корпоративного ли-цензирования.

Коробка – красиво, но дороговатоСамым простым (и дорогим) способом приобретения программного продук-та является покупка коробки (FPP). Покупая коробочную версию, вы по-лучаете в комплекте: Лицензионное соглашение (часто только в элект-ронном виде), оригинальный носи-тель с элементами защиты от подде-лки, Руководство пользователя (час-то только в электронном виде), упа-ковку с Сертификатом подлинности (COA). Для подтверждения подлин-ности приобретенного программно-го обеспечения вы должны хранить весь комплект поставки полностью плюс документы, подтверждающие покупку. Купить софт в виде коробоч-ной версии можно далеко не весь, не-которые продукты таким образом не распространяются. Как правило, это продукты, ориентированные на кор-поративного пользователя, например, Microsoft Office Pro Enterprise Edition купить в коробке нельзя. Право ис-пользования коробочного продукта является бессрочным, т.е. вы може-

Page 14: 049 Системный Администратор 12 2006

12

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

те им пользоваться всю свою жизнь. Кроме того, такой продукт чаще все-го может быть установлен на двух ПК (право установки на переносной ком-пьютер). Более подробно о прави-лах использования коробочной вер-сии продукта вы сможете прочитать в документации, которая прилагается к поставке. Я же хочу подробнее ос-тановиться на способах покупки, ко-торыми чаще всего пользуются кор-поративные заказчики.

OEM – просто и сердитоПо сравнению с коробкой, приобрес-ти OEM-версию программного продук-та вы можете гораздо дешевле. В ви-де OEM-версий распространяются не все продукты – только Windows XP Home & Pro, Office 2003, Windows Server, Small Business Server. Формаль-но OEM-версии продукта предназна-чены для поставщиков (сборщиков) компьютерной техники и должны рас-пространяться только вместе с их про-дукцией. Иными словами, OEM-вер-сии продуктов не предназначены для распространения конечным поль-зователям отдельно от компьютер-ной техники. Срок действия лицензии в OEM-поставке равен сроку исполь-зования компьютера. Обратите вни-

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

Как легализовать операционную систему?Предположим, решение переходить на ли-цензионное программное обеспечение принято. Но тут нас ждет еще один под-водный камень. Ведь софт-то уже стоит, работает! Пиратский, краденый, какой-ни-какой, а требующий перестановки и все-го, что из этого будет следовать. Иными словами, временного паралича компании и на пятнадцать лет постаревшего сисад-мина. Какие тут есть варианты? Если речь идет о Windows XP Professional, то для ле-гализации операционной системы на та-ких компьютерах можно приобрести спе-циальную версию операционной систе-мы под названием «Get Genuine Kit для Windows XP Professional». В состав Get Genuine Kit входят те же компоненты – сертификат подлинности (COA), дистри-бутив с продуктом, лицензионное согла-шение с конечным пользователем (EULA). Как и обычные OEM-версии, эта операци-онная система привязана к ПК, на кото-рый впервые была установлена, и не мо-

жет быть перенесена на другой ПК. Основ-ные отличия Get Genuine Kit от обычных OEM-лицензий Windows XP Professional описаны ниже: Get Genuine Ki t для Windows XP

Professional предназначена для ком-пьютеров с установленной ранее пи-ратской, поддельной или нелицензи-онной операционной системой и не мо-жет поставляться в комплекте с новы-ми компьютерами.

Техническая поддержка Get Genuine Kit для Windows XP Professional предостав-ляется Microsoft.

Полная установка операционной систе-мы (установка на чистый диск) не явля-ется обязательной – возможна переус-тановка с сохранением данных или об-новление ключа продукта.

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

Page 15: 049 Системный Администратор 12 2006

13№12, декабрь 2006

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

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

щиты в виде двух отверстий, одно из которых имеет форму эллипса, а другое – форму логотипа «летя-щих окон» Windows. Внешний слой ламината в пределах этих отвер-стий отсутствует, таким образом становятся видны отдельные во-локна бумажной структуры.

Металлизированная нить, внедрен-ная в структуру наклейки, имеет цветовые переходы, которые ста-новятся видны под углом.

Наклейка COA содержит микро-текст – элемент защиты в виде тек-ста, который становится читаемым только под увеличительным стек-лом.

Новая наклейка COA не имеет ла-минированного покрытия.

Если сертификат подлинности от-сутствует, то вы не имеете законной лицензии на использование програм-много обеспечения Microsoft. Серти-фикат подлинности не является ли-цензией на программное обеспече-ние – это наглядное средство, помо-гающее установить подлинность ис-пользуемого программного обеспече-ния Microsoft.

Существуют сертификаты подлин-ности для прикладных программ (на-пример, Microsoft Office). Они прикреп-лены к документации конечного поль-зователя и не являются наклейками. Они должны передаваться вам вмес-те с документацией. Прикреплять та-кой сертификат к компьютеру не тре-буется.

А можно и так!Теперь о втором варианте приобрете-ния OEM-версий, а именно, о их по-купке отдельно от компьютеров. На-верняка вы, если внимательно чита-ете эту статью, удивитесь. Действи-тельно, я уже писал о том, что эти

версии не предназначены для конеч-ных потребителей. Но в условиях рас-пространения OEM есть одна замеча-тельная фраза: «за исключением тех случаев, когда конечный потребитель сам выступает в роли сборщика сис-тем». Тут же я скажу о том, что само понятие «Сборщик систем» у Microsoft очень растяжимое – под него попада-ют не только те, кто занимается не-посредственно сборкой компьютер-ной техники, но и лица (юридичес-кие или физические), занимающи-еся установкой программного обес-печения на уже приобретенные ра-нее компьютеры. Таким образом, вы

можете совершенно спокойно при-обрести ОЕМ-версию продукта от-дельно от компьютера (он у вас уже есть), и выполнить установку. Одно важное замечание: в этом случае вы будете считаться не конечным поль-зователем, а сборщиком систем. Со-ответственно, вы попадаете под тре-бования Лицензионного соглашения сборщика систем, которое наклее-но на коробке. Это соглашение всту-пает в силу в момент вскрытия ко-робки. Лицензия Microsoft для сбор-щика систем (OEM System Builder License) относится к типу «Break-the-seal agreement», которые вступают

Так выглядит коробка с OEM-версией

Page 16: 049 Системный Администратор 12 2006

14

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

в действие при вскрытии упаковки – вы вскрываете упаковку и тем са-мым принимаете на себя условия ли-цензионного соглашения. Это про-стая процедура, лишенная бюрокра-тизации. Вам не требуется подписы-вать каких-либо дополнительных до-кументов, чтобы иметь право на рас-пространение OEM-версий в качес-тве сборщика систем (такой способ принятия соглашения призван обес-печить максимально широкий канал продаж, т.к. заменяет собой подпи-сание документов). И отсюда следу-ет два важных замечания – вы долж-ны купить невскрытую коробку; кроме того, вскрытую коробку вы уже не смо-жете вернуть. Кроме того, програм-мные продукты, которые вы доста-нете из открытой OEM-упаковки, вы обязаны будете установить на ком-пьютеры конечных пользователей – дальнейшее распространение соф-та из этой коробки какими-то други-ми способами, кроме как в предуста-новленном виде, запрещено (исклю-чение: серверное программное обес-печение).

Выполняем процедуру активацииВсе OEM-версии продукта требуют вы-полнения процедуры активации. На-чиная с Microsoft Office XP и Microsoft Windows XP в состав ряда програм-мных продуктов Microsoft включает-ся специальная технология – Microsoft Product Activation. Эта технология пред-назначена для защиты от компью-терного пиратства – как корпорации Microsoft, так и ее клиентов, помогая

им убедиться в том, что они получи-ли именно то, за что заплатили: под-линный и лицензированный програм-мный продукт высокого качества. Тех-нология активации продуктов предна-значена прежде всего для того, чтобы противодействовать такому виду на-рушений, как копирование ПО конеч-ными пользователями – когда с одно-го подлинного информационного но-сителя пользователи устанавливают программный продукт на большее ко-личество компьютеров, чем это разре-шают условия лицензионного соглаше-ния. По оценкам экспертов, около по-ловины ущерба, наносимого компью-терным пиратством экономике раз-личных стран мира, приходится имен-но на этот вид нарушений.

Технология Mic rosof t Produc t Activation призвана исключить возмож-ность использования копий продуктов в случае отсутствия у пользователя ли-цензионного соглашения с правообла-дателем на право использования дан-ного программного продукта.

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

При этом число установок и активаций на одном и том же персональном ком-пьютере не ограничивается.

Процесс активации начинается после того как программный продукт установлен на компьютер пользова-теля. Для того чтобы установить и за-тем активизировать программный про-дукт на конкретном ПК, пользователь должен иметь: диск с дистрибутивом программно-

го продукта; ключ продукта.

Ключ продукта представляет со-бой 25-символьный номер, разбитый на группы по 5 символов и имеющий следующий формат: ХХХХХ-ХХХХХ-ХХХХХ-ХХХХХ-ХХХХХ, где Х – одна из цифр от 0 до 9 или одна из букв ла-тинского алфавита от A до Z.

Ключ продукта необходим для вы-полнения установки программного продукта на компьютер пользователя; выполнения активации установленно-го программного продукта на конкрет-ном ПК. Без введения ключа установка продукта на компьютер невозможна.

Существуют следующие два типа ключей: ключ для однократной уста-новки и активации (тип А) – использу-ется для установки коробочного про-дукта на один ПК (если в лицензион-ном соглашении для конкретного про-дукта и вида поставки не оговорено иное). Ключи этого типа предназна-чены для установки и активации про-дукта, лицензия на который допуска-ет его использование только одним пользователем (коробочный продукт или OEM-версия продукта).

Ключ для многократной установ-ки и активации (тип B) используется для установки продукта, приобретен-ного в рамках программы корпора-тивного лицензирования. Ключи это-го типа предназначены для покупате-лей лицензий по различным програм-мам корпоративного лицензирования и могут быть использованы для много-кратной установки продукта (в зависи-мости от емкости ключа).

При использовании этих ключей не нужно выполнять процедуру акти-вации с каждого компьютера. Ключ продукта, который необходим для ус-тановки ОЕМ-версии продукта, указы-вается на наклейке Сертификата под-линности.

Как не стать пиратом, используя OEM-версии продуктов?Или, другими словами, какими обязан-ностями и правами вы обладаете? На-иболее частым нарушением использо-вания OEM-версии является превыше-ние допустимого числа установок. За-помните – одну OEM-версию можно уста-новить только на один компьютер. После установки она становится неотделимой частью самого компьютера. Срок жизни OEM-версии равен сроку жизни самого компьютера. Переносить эту ОЕМ-вер-сию на другой компьютер нельзя. Опера-ционная система не может быть перене-

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

Page 17: 049 Системный Администратор 12 2006

15№12, декабрь 2006

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

Сам процесс активации предель-но прост. При запуске неактивирован-ного продукта на экране появляется окно мастера активации. Сама акти-вация может быть выполнена или че-рез Интернет, или по телефону. Если вы в мастере выбираете активацию через Интернет, то после ввода клю-ча всё проходит автоматически. Если вы выбираете активацию по телефо-ну, то вам необходимо будет выбрать страну, после чего вы увидите номер телефона. Звоните по этому номеру, вам отвечает робот. Переводите теле-фон в тоновый режим, далее следуе-те указаниям робота. Довольно быс-тро. Если вам надо выполнить боль-шое количество установок OEM-вер-сий, то вы можете провести процеду-ру автоматической активации.

Указания по этой процедуре можно найти здесь: http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/wpadepl.mspx.

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

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

Через Интернет активировать про-дукт не удастся, придется звонить и объяснять оператору ситуацию. Да-лее – как получится: или сразу сбро-сят счетчик активаций, или (что чаще) могут попросить вас выслать по поч-те или факсу документ, подтверждаю-щий факт ремонта.

Software Assurance поможет сэкономитьИ еще одна вещь, о которой важ-но знать. После покупки OEM-вер-сий серверных продуктов и Windows Professional, а также OEM-версий Office Small Business 2003 или Office Professional 2003, в течение 90 дней после приобретения продукта вы мо-

жете купить такую замечательную вещь, как Software Assurance. Купить можно сроком на два или три года, с возможностью дальнейшего про-дления хоть до бесконечности. В те-чение этого срока вы будете бесплат-но получать все новые версии того OEM-продукта, к которому вы офор-мили Software Assurance.

Если вы сейчас купите 2003-вер-сии серверов, офисов и т. п., и купи-те к ним Software Assurance, то вы уже очень скоро, зимой, получите Vista, Office 2007 … так сказать, несколько дешевле, чем они стоят. Стоимость Software Assurance составляет от 25% до 29% от стоимости лицензии про-дукта в год – сами можете подсчитать экономию.

Помимо прямой прибыли эта про-грамма даст вам вагон бонусов, что

перечислять их в рамках этой статьи очень даже сложно. Отправлю-ка я вас на сайт http://www.microsoft.com/rus/licensing/volume/softwareassurance/advantagesoverview.mspx, а если инте-ресно будет, то напишу про Software Assurance отдельно в следующей статье.

Последний абзац – и ни слова о це-не! Вы абсолютно правы, никакой ин-формации о ценах в этой статье не бу-дет. Немного терпения – в следующий раз я проведу сравнительный анализ стоимости легального программно-го обеспечения для организации ма-лого и среднего размера. Сколько бу-дет стоить приобретение лицензионно-го программного обеспечения в виде OEM, а также по различным програм-мам корпоративного лицензирования.

Так что не прощаюсь!

Сохранится ли лицензия на OEM-версию, если необходимо провести апгрейд или ремонт существующих компьютеров?Лицензия привязывается к компьютеру, а мы его апгрейдить начинаем, т.е. меня-ем исходные железки! В Microsoft посту-пили просто: выделен один компонент, ко-торый однозначно определяет тот самый исходный компьютер. Думаю, что вы уже догадались, какой. Правильно – материн-ская плата. Общее правило таково, что вы можете обновлять и заменять практически все, кроме материнской платы, при этом со-храняя исходную лицензию Windows. Если

вы обновляете или заменяете материнскую плату и при этом замена не связана с уст-ранением обнаруженного дефекта, то та-кой компьютер требует новой лицензии на операционную систему, поскольку, за-менив материнскую плату, вы фактически создали «новый» компьютер. Если вы за-меняете дефектную материнскую плату, то новая лицензия на операционную сис-тему не требуется. Если вы передаете мо-дернизированный компьютер новому поль-зователю – лицензия на ПО, носитель, сер-тификат подлинности COA и руководства пользователя должны быть переданы все вместе новому пользователю.

Хранить вечно!

Page 18: 049 Системный Администратор 12 2006

16

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

Прежде чем перейти непосредс-твенно к описанию NX, перечис-лю некоторые тенденции, ко-

торые сегодня становятся очевидны-ми для многих крупных компаний на-шей страны:1. Компьютерная техника дешеве-

ет и становится более доступной, чем раньше. При этом её произво-дительность удваивается каждые 1,5-2 года согласно закону Мура. Это приводит к накоплению техни-ки, не выработавшей свой ресурс, но уже устаревшей.

2. Разработанные на предприятиях силами программистов отделов АСУ в перестроечные годы клиент-серверные приложения еще ра-ботают на старой технике, но уже не соответствуют требованиям времени.

3. Современные программное обес-печение и операционные системы не заставить работать на компью-терах с процессорами прежних по-колений (i386, i486 и т. д.).

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

Очевидно противоречие между вторым и третьим пунктами: необхо-димо или найти способ, позволяющий эффективно задействовать старую технику для выполнения современных задач, или отказаться от этой техни-ки. Если имеется достаточно средств, то выбор понятен. Но что делать, если

средств нет или нет возможности спи-сать такую технику, да и просто выки-дывать жалко? И как решать не менее острую проблему «лицензионной чис-тоты» используемых программ, о кото-рой говорится в четвертом пункте?

На помощь приходят терминаль-ные технологии, которые позволяют за-действовать старые компьютеры, а так-же частично снять вопросы «лицензи-онной чистоты», если применять реше-ния на базе продуктов Open Source.

В журнале уже публиковалось не-сколько статей по работе с дистрибу-тивом Thinstation [1, 2]. В этой статье я расскажу об особенностях настройки и опыте эксплуатации на своем пред-приятии тонких клиентов на базе дис-трибутива Thinstation и технологии NX, разработанной фирмой Nomachine.

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

Подробное руководство по настройке тонких клиентовНа основе дистрибутива Thinstation и протокола NX

Технология NX, разработанная фирмой Nomachine, дает новые возможности для связи и способна оживить старые компьютеры в роли тонких клиентов.

Евгений Бушков

Page 19: 049 Системный Администратор 12 2006

17№12, декабрь 2006

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

статьях. Коротко перечислю действия по настройке клиента: редактируем

~/thinstation/build.conf и создаем образ, запустив скрипт ~/thinstation/build. Го-товый файл образа ~/thinstation/boot-images/etherboot/thinstation.nbi копируем на TFTFP-сервер. Добавляем в файл на-стройки dhcp.conf DHCP-сервера запись о MAC-адресе сетевой платы тонкого клиента. В каталоге TFTP-сервера со-здаем файл с настройками для данного MAC-адреса и(или) редактируем файл thinstation.conf.network. Настройки мо-ей рабочей системы можно посмотреть в листинге раздела «Настройка и созда-ние образа Thinstation» и на рис. 1.

Для того чтобы добавить в образ пакет VNC-клиента, раскомментиру-ем строчку «#package vncviewer» в кон-фигурационном файле ~/thinstation/build.conf. Если каталог tftp-серве-ра находится в /tftpboot (как это у ме-ня), то отредактируйте файл /tftpboot/thinstation.conf.network таким образом, чтобы в нем появились строчки:

IP-адрес 10.10.10.10 замените на адрес вашего VNC-сервера.

Теперь проверим собранный с но-вым параметром образ в работе: вклю-чаем тонкого клиента, дожидаемся за-грузки и запуска образа Thinstation, подключаемся к VNC-серверу. Обра-тите внимание на то, что переключе-ние раскладок происходит с помощью клавиши «правый Alt». Собственно, ви-новат здесь не VNC-клиент, а файл Thinstation из пакета поддержки кирил-лицы keymaps-ru. Чтобы долго не во-зиться с поисками решения пробле-мы, я сгенерировал xkb-файл в на-строенной системе SUSE-10.0 следу-ющим образом:

Утилита xkbcomp конвертирует опи-сание XKB-раскладки в один из фор-матов. В первой команде генерируется дамп текущей раскладки из источника, в качестве которого выступает X-дисп-лей «:0». Вторая команда компилирует полученный файл в понятный для сис-темы двоичный вид. Заменяем исход-ный файл своим:

вестные и популярные из них – это RDP от Microsoft и ICA от Citrix. Оба прото-кола используются серверами на ба-зе ОС MS Windows. Меня же интересо-вала возможность использовать тон-кие клиенты с серверами на базе Linux. В качестве основы для тонкого клиен-та почти сразу был выбран небольшой дистрибутив, этакий Linux-конструк-тор, Thinstation – как наиболее стабиль-но развивающийся и популярный в на-шей стране и за рубежом. А вот с вы-бором протокола, который бы отвечал за общение с сервером, пришлось по-возиться и поэкспериментировать. Пе-речислю основные критерии, по кото-рым выбирался протокол. Во-первых, нам хотелось использовать как можно более широкий диапазон старых ком-пьютеров, имеющих процессоры начи-ная с i486, с минимальным объемом па-мяти, такой техники у нас предостаточ-но. Во-вторых, отметались коммерчес-кие продукты: мы не хотели нести до-полнительные расходы. В-третьих, не-обходимы хорошая поддержка русско-го языка и кириллицы, а также наличие привычного для пользователей спосо-ба переключения между раскладками – комбинации клавиш <CTRL+SHIFT>. В-четвертых, в рамках локальной сети нам необязательна поддержка шифра-ции, но важны сжатие и минимизация сетевого трафика.

Поиск решенияВ первую очередь я обратил внимание на VNC как наиболее распространен-ный и имеющийся в любом дистрибу-тиве Linux, а также являющийся лег-ким в настройке продуктом. Когда не-обходимо подключиться к удаленно-му рабочему столу Linux-сервера с ра-бочей станции Windows или того же Linux, то первое, что приходит в голо-ву, это VNC. Скачайте последнюю вер-сию дистрибутива Thinstation [3], за-тем распакуйте полученный архивный файл в домашнем каталоге. Будем счи-тать, что путь к дистрибутиву выгля-дит так: ~/thinstation. Файл, отвечаю-щий за параметры сборки, находится здесь: ~/thinstation/build.conf. Он име-ет подробные комментарии. О его на-стройке, а также о том, как заставить образ Thinstation загружаться при по-мощи сетевой карты с бутовой микро-схемой, я подробно рассказывать не бу-ду, об этом уже писалось в указанных

После сборки образа получаем нормальное переключение раскладок по <CTRL+SHIFT>. Вот только работа-ет VNC-клиент недопустимо медленно. На компьютерах с процессором ниже P-200 начинается этакое «слайд-шоу», когда любое действие на удаленном рабочем столе сопровождается нето-ропливой прорисовкой этих изменений на экране монитора тонкого клиента. Существует множество VNC-решений, использующих схожие методы кодиро-вания данных при передаче, все исполь-зуют протокол Remote FrameBuffer (RFB). Различаются они количеством функций, параметрами кодирования данных, а также числом поддерживаемых плат-форм. Например, RealVNC [4] подде-рживает сервер и клиент для Windows, UNIX, Microsoft PocketPC и Mac OS X, TightVNC [5] включает сервер и клиент для Windows и UNIX, VNC for DOS [6] – клиент для DOS, UltraVNC [7] – сервер и клиент для Windows, OSXvnc [8] – сер-вер и клиент для Mac OS X. Я протести-ровал RealVNC и TightVNC: второй про-дукт (и сервер, и клиент) субъективно немного быстрее, но оба создают эф-фект «слайд-шоу» на слабых компью-терах. Придется попробовать что-ни-будь другое в качестве протокола свя-зи между клиентом и сервером. VNC пока оставим в покое, позже придется к нему еще вернуться. Вот здесь я об-ратился к NX.

Поддержка Nomachine NX-клиента впервые появилась в Thinstation вер-сии 2.1 в 2005 году, а последней на те-кущий момент является 2.2, она и бу-дет подразумеваться далее. Для сбор-ки образа с пакетом NX раньше был необходим прямой доступ в Интернет, в последних версиях Thinstation поя-вилась возможность указывать путь к файлу префиксом «file://». Исполь-зуемый и поддерживаемый дистрибу-тивом Nomachine NX клиент до сих пор имеет версию 1.5.x, хотя уже прошло достаточно времени с момента появ-ления новой версии NX 2.0. В файле конфигурации build.conf раскомменти-руем строку «package nx», также в кон-це файла найдем строку «param nxurl»: укажем путь к заранее скачанному файлу, либо оставим как есть(нужен доступ в Интернет). Полученный сге-

xkbcomp :0 ru.xkbxkbcomp -xkm ru.xkb ru.xkm

cp -f ru.xkm ~/thinstation ↵ /packages/keymaps-ru ↵ /x-common/lib/kmaps/xkb

SESSION_0_TYPE=vncviewerSESSION_0_TITLE="VNC"SESSION_0_VNCVIEWER_SERVER= ↵ 10.10.10.10:5901

Page 20: 049 Системный Администратор 12 2006

18

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

шел. Теперь пришло время познако-миться с технологией NX поближе.

Обзор и краткое описание Nomachine NXАрхитектура NX – это набор Open Source-технологий и коммерческих средств, призванных обеспечить лег-кость и распределенность сетевых вы-числений. Он состоит из серверного ПО, позволяющего любому UNIX-ком-пьютеру стать терминальным серве-ром, и клиентов для широкого набо-ра платформ и ОС. Nomachine выбра-ла в качестве основы для архитектуры NX известную и широко используемую систему X-Window, на которой основа-ны GUI Linux и других ОС UNIX.

Большинство имеющихся сетевых решений не было разработано в ка-честве основного средства для досту-па пользователей к рабочему столу. Та-кие протоколы как RDP и VNC являют-ся много более простыми, чем X (и по-этому хорошо подходящими для тонких клиентов), но их простота не компенси-рует недостатка эффективности и фун-кциональности. Например, эти протоко-лы используют для прорисовки удален-ного экрана передачу больших объемов данных изображений. Хотя RDP и яв-ляется более эффективным протоко-лом, чем RFB (протокол, используемый VNC), он был изначально разработан не для ежедневного использования уст-ройствами сети, а лишь в качестве рас-ширения для ОС. X-Window – это графи-ческая подсистема (а не расширение

нерированный образ копируем в ка-талог tftp-сервера, туда же копируем файл thinstation.conf.sample из корня дистрибутива, переименовываем его в thinstation.conf.network и правим: ищем на предмет #SESSION_0_TYPE=NX и редактируем строчки, относящие-ся к этой сессии (здесь с номером 0), внося нужные параметры.

Включаем тонкого клиента и за-гружаем созданным образом, прове-ряем быстродействие. Прогресс нали-цо: «слайд-шоу» прекращается на ПК с процессором P-100, P-120 и выше. Это не то, чего бы нам хотелось полу-чить в результате, так что ПК с процес-сорами i486 задействовать здесь не удастся. Такие ПК мы назвали «супер-тонкими» клиентами и определили их для работы с ДОС-программами, ис-пользуя связку FreeDOS и sshdos со стороны клиента и Dosemu со сторо-ны Linux-сервера. В этой статье я о них рассказывать не буду. Тем не менее это хороший результат, посмотрим на тре-бования к железу со стороны разработ-чиков Thinstation и NX-клиента: первые рекомендуют i486-процессор и 16 Мб памяти, вторые – процессор с часто-той от 400 Мгц и памятью 128 Мб. Ми-нимально необходимой конфигураци-ей для работы тонкого клиента с паке-том NX эмпирически определим про-цессор P-120 и объем оперативной па-мяти 32 Мб. Я протестировал и некото-рые другие клиенты, в частности, XRDP, VNC for DOS, но по той или иной причи-не реальной альтернативы NX я не на-

ОС), и 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-тра-фика, который использует знако-мый по прокси-серверам термин «попаданий в кэш». Этот механизм сокращает сетевой трафик при пе-редаче одних и тех же блоков дан-

Рисунок 1. Взаимосвязь компонентов NX

Page 21: 049 Системный Администратор 12 2006

19№12, декабрь 2006

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

NX Desktop – RDP-клиент, который транслирует RDP-трафик в NX-про-токол.

Nomachine открыла исходные ко-ды большинства своих наработок и библиотек, их можно скачать всем желающим с [11]. Сборки от самой Nomachine для всех клиентов доступ-ны бесплатно, также есть различные варианты сборок NX-серверов, пос-тавляемые за определенную плату: годовая подписка на NX Enterprise Server с неограниченным количест-вом пользователей и числом процес-соров 1-2 стоит 1494$, наиболее пол-ное решение с балансировкой нагруз-ки и управлением узлов на базе NX Advanced Server обойдется в 3494$. Кроме того, имеется вариант NX Free Edition, который можно скачать бес-платно, но имеет ограничение на ко-личество одновременных соедине-ний и пользователей, равное двум, так что если есть желание администриро-вать Linux-сервер из дома с помощью обычного аналогового модема, то луч-ше, безопаснее и проще этого реше-ния не найти. Отмечу также наличие клиентских версий NX Client Desktop Edition для PlayStation 2 (при исполь-зовании Linux Kit), а также NX Client Embedded Edition для Sharp Zaurus 5xxx и HP/Compaq iPAQ. Их можно так-же скачать бесплатно [12]. Так что, ес-ли вы в командировке, а с собой толь-ко КПК, ничего не мешает подклю-

ных, а при изменении этих блоков данных потока вычисляет и пере-дает только их разницу.

До NX не было надежного спосо-ба подавления избыточного тра-фика X-протокола на дальних ли-ниях связи. NX может это делать, транслируя X-трафик на удален-ном конце(от приложения к nxagent) в трафик протокола NX.

Все три метода совокупно позволя-ют достичь 70-кратного улучшения ра-боты с удаленным X GUI при исполь-зовании наибольшего уровня сжатия на линиях связи с низкой пропускной способностью и большой задержкой (в настройках клиента NX «modem» со-ответствует максимальному сжатию, а «lan» – отсутствию сжатия). На рис. 1 под цифрой 2 показана взаимосвязь компонентов NX: на модулях NX Proxy осуществляется компрессия/деком-прессия и кэширование, между ними проходит трафик по NX-протоколу, тре-бования к качеству линий связи мини-мальны, заявляется о возможности ра-боты вплоть до скорости 9600 бит/сек.

Подобно трансляции X-трафика посредством nxagent, имеется другой агент (“nxviewer”), который трансли-рует RFB/VNC-трафик в протокол NX. Это улучшает эффективность соеди-нений до 10 раз по сравнению с рабо-той обычного vncviewer, связывающе-го локальный X-дисплей с удаленным сервером VNC. В этом мы убедимся.

На рис. 1 под цифрой 3 показа-на возможность одновременной ра-боты разных агентов NX, RDP, VNC. При этом NX-агенты эффективно транслируют чужеродные протоколы в свой собственный и далее переда-ют трафик через NX Proxy. NX Proxy – этот компонент как раз

и отвечает за компрессию/деком-прессию: в клиентском режиме кодирует запросы от X-клиентов и декодирует ответы от X-сервера, в серверном – наоборот.

NX Agent – термин «агент» исполь-зуется для описания компонента, которому передается сформиро-ванное изображение перед пере-дачей в сеть через прокси.

NX Viewer – модифицированный Nomachine обычный VNC-клиент, транслирующий VNC/RFB-трафик в NX-протокол.

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

Сборка и запуск NXВ свою очередь, на основе открытых исходников сообщество разработало версию серверной части NX под на-званием FreeNX, а также KNX – клиент для соединения с сервером из под X. FreeNX – это набор shell-скриптов, ко-торые вместе с открытыми библио-теками от NX формируют серверную часть (backend).

Вначале работы с NX в качестве сервера мною использовался ПК с ОС SUSE 10.0. В составе дистрибутива уже шла сборка FreeNX, но, во-первых, она имела более чем годовую давность, а, во-вторых, столкнувшись с первыми трудностями при работе, я решил, что пора собрать серверную часть из ис-ходников самому. Рассказывать бу-ду о сборке из исходников версии 1.5 как наиболее проверенной временем, а потом уточню, какие имеются особен-ности для сборки версии 2.0(2.1).

В настоящий момент на сайте Nomachine выложены исходники вер-сии NX 2.0, эта версия является реко-мендуемой фирмой, а на исходники версии 1.5 там же имеется специаль-ная ссылка. Качаем последние версии следующих тарболов со странички [11]: nx-X11, nxagent, nxcomp, nxcompext, nxdesktop (если нужна поддержка RDP), nxproxy, nxscripts, nxviewer (если нужна поддержка VNC). nx-X11 – это версия

Рисунок 2. NX-сессия KDE в режиме рабочего стола из Windows XP

Page 22: 049 Системный Администратор 12 2006

20

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

4.3 Xfree86, которая имеет модифицированные Nomachine X-библиотеки. Часть исходников будет распаковываться пря-мо в дерево nx-X11, поэтому развернем его в первую оче-редь, очередность распаковки остальных тарболов неважна, главное, чтобы они все распаковывались в одном катало-ге. Туда же качаем и распаковываем скрипты FreeNX с ад-реса [13]. Еще понадобятся два патча, качаем их отсюда [14, 15]. Каталог нашей сборки примет следующий вид: freenx-0.4.4 nx-X11 nxcomp nxcompext nxdesktop

Для сборки понадобятся следующие пакеты (их мож-но установить из вашего дистрибутива Linux): libjpeg-devel, libpng-devel, openssl-devel, netcat, expect. Описание сборки можно найти также здесь [16].

В конфигурационном файле находим следующую строч-ку и раскомментируем ее:

Там же можно на первое время включить возможность ведения лога:

Теперь можно установить клиент Nomachine NX на любой компьютер Linux (можно использовать и KNX) или Windows и проверить работу NX-сервера. C сервером можно рабо-тать как в режиме приложений, так и в режиме удаленно-го рабочего стола.

Настройка и создание образа ThinstationОт серверной части NX теперь перейдем к созданию об-раза Thinstation. Сам дистрибутив можно скачать здесь [3]. При сборке образа будем стараться максимально умень-шить количество модулей и пакетов, все лишнее выкидыва-ем. Поскольку у многих компьютеров, выбранных в качест-

# Накладываем NX patchpatch -p0 < NX-lfs_hint.diff# Собираем X – самая длительная часть, может занять # до часа времениpushd nx-X11 make Worldpopd# nxproxypushd nxproxy ./configure --prefix=/srv/NX makepopd# Сборка RFB-агентаpushd nxviewer xmkmf -a cp -a /usr/X11R6/lib/libXp.so* ../nx-X11/exports/lib/ make 2> /dev/nullpopd# Сборка RDP-агентаpushd nxdesktop ./configure --prefix=/srv/NX --sharedir=/srv/NX/share makepopd# Вся серверная часть будет находиться в каталоге /srv/NX,# создаем некоторые из подкаталоговmkdir -p /srv/NX/binmkdir -p /srv/NX/libmkdir -p /srv/NX/man/man1mkdir -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/libinstall -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_PATHexec /srv/NX/lib/$NXCOMMAND ${1+"$@"}EOF# И устанавливаем его:install -m 755 nxagent /srv/NX/bin# Устанавливаем библиотеки сжатия и проксиcp -a nxcomp/libXcomp.so.* /srv/NX/libcp -a nxcompext/libXcompext.so.* /srv/NX/libinstall -m 755 nxproxy/nxproxy /srv/NX/libln -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/binpopd# Установка RDP-агента

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/usrpopd# Установка скриптовcp -r nxscripts /srv/NX/share/doc# установка FreeNXmkdir -p /srv/NX/etcmkdir -p /srv/NX/varmkdir -p /srv/NX/var/dbmkdir -p /srv/NX/homemkdir -p /srv/NX/home/nxpushd freenx-0.4.4# Накладываем патч freenx, в основном здесь правятся пути# на соответствие /srv/NXpatch -p0 < ../freenx-lfs_hint.diffcp -a nxnode /srv/NX/bincp -a nxserver /srv/NX/bincp -a nxsetup /srv/NX/bincp -a nxkeygen /srv/NX/bincp -a nxnode-login /srv/NX/bincp -a nxloadconfig /srv/NX/bincp -a nxclient /srv/NX/bincp -a nxprint /srv/NX/bininstall -m 755 node.conf.sample /srv/NX/etcpopd# Добавляем пользователя и группу nxgroupadd -g 77 nxuseradd -c 'FreeNX user' -d /srv/NX/home/nx -g nx -s /bin/

bash -u 77 nxchown -R root.root /srv/NXchown -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# Должен быть примерно такой ответ:

# Устанавливаем конфигурационный файл freenx:mv /srv/NX/etc/node.conf.sample /srv/NX/etc/node.conf

NX> 100 NXSERVER - Version 1.4.0-44 OS (GPL)NX> 110 NX Server is runningNX> 999 Bye

ENABLE_1_5_0_BACKEND="1"

NX_LOG_LEVEL=6

nxproxy nxscripts nxviewer freenx-lfs_hint.diff NX-lfs_hint.diff

Page 23: 049 Системный Администратор 12 2006

21№12, декабрь 2006

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

ве тонких клиентов, железо и перифе-рия будут отличаться, то отдельные па-кеты хотелось бы вынести за рамки об-щего для всех образа. Такая возмож-ность у Thinstation есть: pkg означает собрать как отдельный подгружаемый пакет с расширением pkg, package оз-начает включение в общий образ. Па-кеты lprng, sshd, samba-server и другие однозначно собираем как подгружае-мые. Можно все пакеты с X-драйвера-ми видеокарт указать как pkg, но тогда при сборке образа появятся несколько дополнительных пакетов, которые надо будет подгружать всем, и в результате общий размер подгружаемых данных будет больше. Поступим проще: один из видеодрайверов, наиболее часто ис-пользуемый, а именно S3, укажем как package, остальные – pkg. Модули то-же можно выносить за пределы ядра, но пока эта возможность работала некорректно, к тому же места в составе ядра они занимают совсем немного. Ниже представлен мой файл конфигурации build.conf:

Если будете использовать печать на принтер, подклю-ченный к тонкому клиенту с помощью lprng, необходимо вне-сти небольшую модификацию в файл thinstation/packages/lprng/etc/init.d/lprng. Для этого замените строчку:

на

Добавление локальной фильтрации избавило меня от проблемы «лесенки» при печати. Кроме того, я создал следующий скрипт для проверки работы печати ~/thinstation/packages/base/bin/my:

Когда непонятно, что именно не работает, можно выпол-нить этот скрипт на консоли тонкого клиента: /bin/my.

Чтобы при подключении клиента NX к серверу каждый раз не появлялось окошко с предупреждением о незнакомом хосте, создадим в корне Thinstation файл known_hosts:

В качестве «nxserver_ip» надо указать IP-адрес NX-сер-вера. Таким образом клиент будет знать о цифровом отпе-чатке rsa-ключа NX-сервера при аутентификации.

После успешного выполнения build копируем thinstation/boot-images/etherboot/thinstation.nbi и thinstation.nbi.zpxe, а также все pkg-файлы из thinstation/boot-images/pkg-packages в каталог /tftpboot на tftp-сервер. У меня создаю-щийся файл thinstation.nbi.zpxe не заработал, в таком случае по адресу [17] можно скачать файл BootPXE535.zip, в этом архиве есть универсальный загрузчик loader-native.zpxe, с ним все должно работать.

Конфигурационные файлы Thinstation достаточно хоро-шо откомментированы, но вот сам процесс настройки и пос-ледовательность действий не всегда очевидны, так что не-которые трудности, с которыми мне пришлось столкнуться, и тонкости я все-таки упомяну.

На рис. 3 показаны основные действия по включению тонкого клиента в работу. Сначала добавляем информацию о MAC-адресе сетевой карты в dhcpd.conf. Не забудьте ука-

module serialmodule intel-agpmodule via-agpmodule 8139toomodule floppymodule vfatmodule supermountpkg xorg6-atipkg xorg6-i810pkg xorg6-nvpackage xorg6-s3pkg xorg6-s3virgepkg xorg6-sispkg xorg6-tridentpackage keymaps-rupackage nx pkg lprngpkg sshdpkg samba-serverparam rootpasswd pleasechangemeparam xorgvncpasswd pleasechangemeparam bootlogo falseparam bootresolution 800x600param defaultconfig thinstation.conf.buildtimeparam basename thinstationparam basepath .param knownhosts ./known_hostsparam localpkgs trueparam fulllocales falseparam bootverbosity 3param nxurl file://home/zhen/sources/nx/bin ↵ /nxclient-1.5.0-141.i386.tar.gz

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

#!/bin/shecho PRINTER TEST to /dev/printers/0 1>&2for i in 1 2 3 4 5 6 7 8 9;doecho PRINTER /dev/printers/0 $i > /dev/printers/0;doneecho -e \\r\\f > /dev/printers/0exit 0;

ssh-keyscan -t rsa nxserver_ip>>~/thinstation/known_hosts

Рисунок 3. Файлы настроек тонких клиентов Thinstation

echo "$PRINTER_X_NAME:lp=$PRINTER_X_DEVICE:wd= ↵ $PRINTER_X_DRIVER:br=$PRINTER_X_OPTIONS:if=/bin/lpf: ↵ lf=/var/log/spooler.log:sh:sf" >> /etc/printcap

Page 24: 049 Системный Администратор 12 2006

22

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

зать настройки в описании подсети, связанные с tftp, они за-даются директивами «next-server» и «option root-path». У ме-ня сервисы tftp и dhcp находятся на одном сервере FreeBSD, это облегчает их настройку. Все файлы настроек располага-ются в /tftpboot. Потом в файле thinstation.hosts прописываем по-порядку: произвольное имя хоста (лучше, чтоб оно вклю-чало информацию о размещении терминала), MAC-адрес, группы, членом которых терминал является, в конце строки можно поместить комментарии за знаком «#», например:

Здесь по порядку: имя хоста, в моем случае состоит из номера отдела и инвентарного номера, далее MAC, и да-лее перечисление названий файлов конфигураций, кото-рый будут использованы этим хостом.

Далее создаем файл настроек thinstation.conf-MAC, я ис-пользую в названии MAC-адрес, хотя можно использовать IP-адрес или имя из thinstation.hosts. Заметьте, что здесь в имени файла MAC-адрес использует только заглавные бук-вы. Группы описываются в файлах с названием thinstation.conf.group-ИМЯГРУППЫ. В файле thinstation.conf-MAC на-ходятся те настройки, которые касаются только этого тер-минала, и не включены в другие группы. Например, все об-щие настройки монитора описаны в файле thinstation.conf.group-monitor, а один параметр «SCREEN_VERTREFRESH» вынесен в файл thinstation.conf-MAC. Это связано с тем, что используются разные мониторы, и можно изменить на-стройку кадровой частоты экрана, этот и другие парамет-ры можно настраивать для каждого терминала или для всех сразу. То же касается настройки мышки. По умолча-нию настройка выполнена для PS/2-мыши. Если исполь-зуется мышка, подключенная к порту COM1, то указы-ваются два параметра «MOUSE_PROTOCOL=Microsoft» и «MOUSE_DEVICE=/dev/ttyS0», если к порту COM2, то во втором параметре указывается /dev/ttyS1.

Общий для всех файл конфигурации /tftpboot/thinstation.conf.network у меня почти пустой. Вся информация из него вынесена в отдельные файлы групповых настроек, на кото-рые есть ссылки в thinstation.hosts. Так как используются два терминальных сервера c разными версиями NX и каждый клиент использует только свой сервер, то конфигурации вы-несены в отдельные текстовые файлы (NX и TUX1C), кроме

того, используются разные образы Thinstation. Также не забы-вайте, что названия файлов thinstation.nbi и thinstation.nbi.zpxe взаимосвязаны: если в dhcpd.conf указана строчка:

то будет использован образ thinstation.nbi, в моем случае образов несколько, соответственно и записи в dhcpd.conf для каждого терминала разные.

Отличия сборки NX2В нашей системе используются два NX-сервера. На одном работает NX, собранный из исходников версий 1.5, для рабо-ты с ним используются клиенты 1.5.x. На другом работает NX версии 2.0. Расскажу, в чем отличия работы и сборки этой версии. На сервере установлены 64-битные Opteron, исполь-зуется система SLES 10.0 x86_64. Так вот собрать на этом сервере NX так, как это было в случае с NX 1.5 на 32-бит-ной системе, у меня не получилось, даже когда я пробовал явно указать сборку для 32-битной системы:

Видимо, это особенности 64-разрядной системы и ее библиотек. Несколько позже на сайте Nomachine я нашел за-метку [18], в которой сказано, что исходные тексты NX раз-работаны для 32-битных систем, но их можно использовать и в 64-битных системах. Поскольку у меня еще есть компью-тер с установленной SLED 10.0 x86 и версии всех библио-тек, ядра и программ точно такие же, как у SLES, то я решил собрать NX на нем, а потом перенести каталог с результа-том сборки обычным копированием на 64-разрядную сис-тему. Так и сделал: все заработало как ни в чем не быва-ло. Качаем файлы с теми же названиями, что и при сборке версии 1.5, только с суффиксами 2.0 (или 2.1). Всё компи-лируется точно так же, как и в случае с NX 1.5, за некоторы-ми исключениями: во-первых, я не стал накладывать патч NX-lfs_hint.diff, во-вторых, появилась новая версия скриптов FreeNX 0.5, поддерживающая новый NX 2.0, её можно за-брать здесь [19], в-третьих, файл freenx-lfs_hint.diff, который вносит изменения в файл nxloadconfig из FreeNX 0.4, не под-ходит к новой версии FreeNX, его нужно отредактировать. Вот вывод команды diff, показывающий разницу между ори-гинальным и отредактированным файлом nxloadconfig:

make World BOOTSTRAPCFLAGS="-m32"

thinstation.nbi.zpxe";

Рисунок 4. NX-сессия в режиме приложения (1С)

otd146_57158 00e04d08d710 smb_flop_hard TUX1C ↵ monitor #very important PC

--- 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)" # Where can different nx components be found-NX_DIR=/usr+NX_DIR=/srv/NX PATH_BIN=$NX_DIR/bin # if you change that, be sure to also change the public keys PATH_LIB=$NX_DIR/lib-NX_ETC_DIR=/etc/nxserver-NX_SESS_DIR=/var/lib/nxserver/db-NX_HOME_DIR=/var/lib/nxserver/home+NX_ETC_DIR=$NX_DIR/etc+NX_SESS_DIR=$NX_DIR/var/db+NX_HOME_DIR=$NX_DIR/home/nx # Advanced users ONLY AGENT_LIBRARY_PATH="" #Calculated@@ -265,7 +265,7 @@ [ -z "$AGENT_LIBRARY_PATH" ] && AGENT_LIBRARY_PATH=$PATH_LIB

Page 25: 049 Системный Администратор 12 2006

23№12, декабрь 2006

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

Nxloadconfig надо отредактировать до выполнения ко-манды /srv/NX/bin/nxsetup. В конфигурационном файле /srv/NX/etc/node.conf раскомментируйте строчку:

Теперь посмотрим, что надо изменить в дистрибутиве Thinstation (последняя версия сейчас 2.2) для поддержки NX 2.0 со стороны клиента. На момент написания статьи поддерживался только клиент версии 1.5. Забираем с ад-реса [20] NX client, не требующий поддержки библиотек XFT, в виде tar.gz-архива (на данный момент это nxclient-2.1.0-9.i386.tar.gz), распаковываем его в домашнем каталоге, ко-пируем файлы и создаём недостающие ссылки.

После этих действий пакет NX считается установлен-ным в дереве пакетов Thinstation, теперь собираем об-раз, выполнив build, и копируем на tftp-сервер. Ну вот, об-раз готов и помещен в каталог tftp-сервера, но это еще не все. Оказывается NX-клиент новой версии на тонком клиенте по-другому интерпретирует настройки из файлов thinstation.conf.group-TUX1C(NX). После некоторого выясне-ния оказалось, что файл с настройками NX-сессии должен создаться в корне файловой системы тонкого клиента. При-шлось сделать небольшой патч для Thinstation, идею я под-смотрел на одном форуме:

Данный кусок кода надо вставить в конец файла ~/thinstation/packages/nx/etc/init.d/nx.init перед последней командой «exit 0». После этого надо пересобрать образ Thinstation. Вот, теперь NX-сессия на тонком клиенте запус-кается так, как и задумано. В целом новая версия работа-ет более стабильно, управление сессиями происходит бо-лее корректно плюс в свежих исходниках обновлены алго-ритмы компрессии, исправлены некоторые ошибки. Ранее для очистки и закрытия незавершенных сессий и процес-сов приходилось обращаться к помощи cron:

Удобно и то, что клиент NX 2.1 работает с серверами обеих версий.

В следующем номере читайте продолжение статьи, в ко-торой я расскажу об особенностях эксплуатации, дополни-тельных настройках NX и Thinstation, а также предложу ре-шения некоторых возможных проблем.

1. Борисов А. Тонкий клиент – шаг к мэйнфреймам? //Систем-ный администратор, №11, ноябрь 2005 г. – С. 32-38.

2. Маркелов А. Использование бездисковых Linux-станций с за-грузкой по сети. //Системный администратор, № 11, ноябрь 2004 г. – С. 12-14.

3. h t t p : / / so u rc e fo rg e .n e t / p ro j e c t / s h ow f i l e s .p hp?g ro 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 : / / so u rc e fo rg e .n e t / p ro j e c t / s h ow f i l e s .p hp?g ro 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.

ENABLE_2_0_0_BACKEND="1"

#!/bin/shtar -xzf nxclient-2.1.0-9.i386.tar.gzcp ~/NX/bin/* ~/thinstation/packages/nx/usr/NX/bincp -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.0cp ~/NX/share/keys/server.id_dsa.key ↵ ~/thinstation/packages/nx/usr/NX/share/keyscp ~/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-клиента# из стандартного места в корень

ls $HOME/.nx/config/.>nxsessionsif [ -s nxsessions ] ; then (cat nxsessions ) | while read filename ; do probe=${filename%*.nxs} if [ "$filename" != "$probe" ] then cp $HOME/.nx/config/$filename /$probe fi donefirm nxsessions

1 0 * * * root /srv/NX/bin/nxserver –cleanup

[ -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.0version 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.0version 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\""

Page 26: 049 Системный Администратор 12 2006

24

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

ядре и userspace-инструменты, пред-ставленные пакетами vzctl и vzquota:

Для других дистрибутивов Linux яд-ро с поддержкой OpenVZ в виде бинар-ных пакетов или исходного кода мож-но загрузить отсюда – http://openvz.org/download/kernel. В документе http://wiki.openvz.org/Quick_installation опи-

Строим контейнер для виртуальных серверов и кластеризуем егоПриступим к установке выбран-ной нами системы виртуализации – OpenVZ. Она представляет собой на-бор патчей к стандартному ядру Linux и userspace-инструменты для управле-ния. В ALT Linux Sisyphus ядро с подде-ржкой OpenVZ собрано отдельно, поэ-тому его необходимо установить в до-полнение к существующему ядру, уста-новить модуль поддержки DRBD в этом

сана процедура установки ядра на Fedora Core, Red Hat Enterprise Linux и CentOS.

После установки нового ядра про-верьте конфигурацию загрузчика и удостоверьтесь в том, что после пе-резапуска будет загружено ovz-ядро. Если это не так, то вам придётся пред-принять для загрузки требуемого ядра необходимые действия. Например, ес-ли в качестве загрузчика использует-ся lilo, то его конфигурационный файл может выглядеть так:

Кластеризация + виртуализация: Linux HA + OpenVZЧасть 2: Виртуализация на практике

В первой части статьи (в №11 за 2005 г.) мы построили отказоустойчивый кластер с общим дисковым пространством, состоящий из двух узлов: m1 и m2. Теперь нам необходимо построить систему виртуализации с виртуальными серверами, мигрирующими с узла m1 на m2 в случае отказа первого.

Евгений Прокопьев

[root@m1 ~]# apt-get install ↵ kernel-image-ovz-smp ↵ kernel-modules-drbd-ovz-smp ↵ vzctl vzquota

Page 27: 049 Системный Администратор 12 2006

25№12, декабрь 2006

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

При этом /boot/vmlinuz и /boot/initrd.img должны ссылать-ся на образ ядра и образ initrd соответственно:

Также с помощью «chkconfig --list» удостоверьтесь, что сервис vz не будет запущен после перезагрузки и за-тем перезагрузится.

После перезагрузки переместите файлы OpenVZ в ка-талог /d0, куда уже должно быть смонтировано устройс-тво /dev/drbd0, а на старом месте создать символические ссылки:

После остановки сервиса heartbeat на узле m1 и мон-тирования drbd-устройства на узле m2 на нем необходимо аналогичным образом удалить каталоги OpenVZ и создать вместо них ссылки на /d0/vz. После того как OpenVZ перене-сен на drbd-раздел, необходимо указать сервису heartbeat, что сервис vz должен работать на узле m1, для чего отре-дактировать файл /etc/ha.d/haresources на обоих узлах:

После рестарта heartbeat на обоих узлах необходимо смоделировать отказ узла m1 и убедиться в том, что сер-вис vz запускается на узле m2.

Строим первый виртуальный серверТеперь мы можем забыть о том, что OpenVZ работает в кластере, и конфигурировать его, опираясь на ориги-

нальную документацию с http://openvz.org/documentation и выжимку из нее, ориентированную на ALT Linux и до-ступную здесь – http://www.freesource.info/wiki/AltLinux/Dokumentacija/OpenVZ.

Существуют уже готовые шаблоны виртуальных сер-веров, построенных на основе некоторых общедоступных дистрибутивов Linux: CentOS, Debian, Fedora Core, Gentoo, Mandriva, openSUSE. Коммерческие RHEL и SUSE SLES в этом списке отсутствуют. Отсутствует и ALT Linux, хо-тя ссылки на шаблоны ALT Linux содержатся в приведен-ной выше ссылке на ALT-ориентированную документацию. Но мы построим шаблон для виртуального сервера на ос-нове ALT Linux самостоятельно.

Штатным для OpenVZ средством построения шаблонов является утилита vzpkg. Она использует yum в качестве вы-сокоуровневого средства управления пакетами (поддержку apt обещают чуть позже) и поэтому не может быть исполь-зована в тех случаях, когда дистрибутив, на основе кото-рого строится шаблон, не имеет yum-репозиториев. Впро-чем, поскольку шаблон – это всего лишь архив корня уже установленной системы в виде tar.gz, изготовить его мож-но любыми подручными средствами, например, из систе-мы, работающей на физическом сервере.

В случае ALT Linux в качестве такого подручного средс-тва удобнее всего использовать spt. Если spt уже установ-лен (его удобнее держать на выделенном физическом ли-бо виртуальном сборочном сервере), то можно использо-вать содержимое каталога /usr/share/spt/profile-ovz/ как при-мер для создания образа, который затем послужит нам шаблоном для создания виртуального сервера. Нет ника-ких препятствий к тому, чтобы использовать этот образец как есть, но мне показалось более правильным скопиро-вать его в ~/ovz и изменить список пакетов в шаблоне, от-редактировав файл ~/ovz/packages/main так:

Также мне показалось разумным изменить конфигу-рацию apt по умолчанию, чтобы сразу иметь возможность устанавливать пакеты из моего локального репозитория. Для этого я создал файл ~/ovz/postinstall/setup.d/01apt c та-ким содержимым:

boot=/dev/hdamap=/boot/mapdefault=linuximage=/boot/vmlinuz label=linux root=/dev/hda2 initrd=/boot/initrd.img read-only

[root@m1 ~]# ls -l /boot/

total 6892-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-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-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.imglrwxrwxrwx 1 root root 30 Oct 10 23:34 initrd-smp.img -> initrd-2.6.16-ovz-smp-alt7.imglrwxrwxrwx 1 root root 32 Oct 9 23:54 initrd-up.img -> initrd-2.6.16-std26-up-alt10.imglrwxrwxrwx 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 maplrwxrwxrwx 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-alt10lrwxrwxrwx 1 root root 27 Oct 10 23:34 vmlinuz-smp -> vmlinuz-2.6.16-ovz-smp-alt7lrwxrwxrwx 1 root root 29 Oct 9 23:54 vmlinuz-up -> vmlinuz-2.6.16-std26-up-alt10

[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 ↵ /d0/vz/etc/sysconfig[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

m1.mydomain.com drbddisk ↵ Filesystem::/dev/drbd0::/d0::ext3 vz

basesystempasswdaptapt-conf-sisyphusetcnetglibcsysklogdmcopenssh-serveropenssh-clients

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 classicrpm-src [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus i586 classicrpm [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus noarch classicrpm-src [alt] ftp://192.168.46.1/distrib/linux/ ↵ alt-linux-sisyphus noarch classic

END

Page 28: 049 Системный Администратор 12 2006

26

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

Затем я выполнил команду:

и получил файл ~/ovz/out/altlinux, который можно использо-вать как шаблон виртуального сервера для OpenVZ.

Теперь файл ~/ovz/out/altlinux необходимо скопировать на ведущий узел кластера с именем /var/lib/vz/template/cache/altlinux-sisyphus.tar.gz и выполнить следующее:

Таким образом, мы создали виртуальный сервер, зада-ли для него имя, указали, что он должен загружаться при старте OpenVZ, и присвоили ему FQDN. Везде мы исполь-зовали ключ --save, чтобы сохранить внесенные изменения после перезапуска виртуального сервера.

Далее необходимо пробросить физический интерфейс eth1, который мы оставили незадействованным на этапе конфигурирования узлов кластера, в виртуальный сервер, чтобы сделать его доступным извне:

Теперь можно запустить виртуальный сервер, войти в него, сконфигурировать сетевой интерфейс eth1 и про-верить доступность физических серверов из виртуально-го и наоборот:

Команды внутри виртуального сервера можно также выполнять с помощью vzctl exec, не переключаясь в кон-соль через vzctl enter:

Для сохранения сетевых настроек после перезагруз-ки в ALT Linux есть 2 механизма конфигурирования се-ти: net-scripts, унаследованный от Mandrake и Red Hat, и свой собственный etcnet, о котором много написано на http://etcnet.org и http://wiki.sisyphus.ru/admin/etcnet.

Второй способ значительно удобнее и функциональ-нее, также он был указан при генерации шаблона, поэто-му нам ничего другого не остается, кроме как настроить именно его:

spt -v --noiso --image-type=tgz --maketty ~/ovz/

Краткий обзор важнейших технологий SisyphusSpt (ht tp://wiki.sisyphus.ru /devel /spt) – это инструмент, позволяющий из репози-тория Sisyphus создать готовый к загруз-ке экземпляр системы в виде: Live-CD. Инсталляционного диска, который

является частным случаем Live-CD отличаетс я от него только тем, что включает в себя alterator (http://wiki.sisyphus.ru/Alterator) – штатный конфигуратор системы, построеной на основе Sisyphus.

Архива корневой файловой системы для использования в качестве вирту-ального сервера в какой-либо систе-ме виртуализации или для установки на диск физического компьютера.

[root@m1 ~]# vzctl create 101 ↵ --ostemplate altlinux-sisyphus --config vps.basic

Creating VE private area: /var/lib/vz/private/101Performing postcreate actionsVE private area was created[root@m1 ~]# vzctl set 101 --name router --saveName router assignedSaved parameters for VE 101[root@m1 ~]# vzctl set router --onboot yes --saveSaved parameters for VE 101[root@m1 ~]# vzctl set router --hostname router.mydomain.com --saveSet hostname: router.mydomain.comSaved parameters for VE 101

Тонкого клиента для загрузки по сети посредством PXE.

Механизм работы spt сводится к уста-новке пакетов, определенных пользова-телем (и всех зависимых от них) в chroot, и выполнению ряда скриптов, также опре-деленных пользователем.

Sp t а к т и в н о и с п ол ь зуе т hashe r (http://www.freesource.info/wiki/ALTLinux/Dokumentacija/Hasher), который в общем случае является механизмом помещения в chroot запускаемой программы и установ-ки туда же всех пакетов, от которых эта про-грамма зависит. По этой причине чаще все-го hasher используется при сборке пакетов для того, чтобы гарантировать постоянс-тво среды, в которой происходит сборка, и, соответственно, воспроизводимость ре-

зультатов. В этом качестве 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 set router --netdev_add eth1 --save

Saved parameters for VE 101

[root@m1 ~]# vzctl start router

Starting VE ...VE is mountedSetting CPU units: 1000Set hostname: router.mydomain.comVE start in progress...[root@m1 ~]# vzctl enter routerentered 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.1PING 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 0msrtt min/avg/max/mdev = 5.376/5.376/5.376/0.000 ms

[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

[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

Page 29: 049 Системный Администратор 12 2006

27№12, декабрь 2006

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

Сообщения «Operation not permitted» связаны с огра-ничениями для виртуального сервера, определенными по умолчанию, и в нашем случае на функционировании сети отрицательно не сказываются. Можно закомментировать соответствующие строки в файле /etc/net/sysctl.conf, что-бы эти сообщения больше не появлялись.

Созданный нами виртуальный сервер будет использо-вать сетевой интерфейс eth1 того узла, на котором он в дан-ный момент работает, поэтому в случае отказа узла m1 сер-вер переместится на узел m2 и будет доступен там по то-му же самому адресу. Можно смоделировать эту ситуацию и увидеть с внешнего физического сервера следующее:

Строим виртуальную сетьВ большинстве случаев на одном физическом сервере раз-мещают несколько виртуальных серверов, при этом необ-ходимо каким-то образом обеспечить доступность серви-сов, работающих на виртуальных серверах, другим физи-ческим машинам. Пробрасывать каждому виртуальному серверу по физическому интерфейсу накладно, да и не-удобно. Часто хочется спрятать все виртуальные серверы за одним маршрутизатором/брандмауэром. Посмотрим, ка-кие средства для этого предлагает OpenVZ. Он предлагает 2 типа виртуальных сетевых интерфейсов: venet – соединения точка-точка между физическим сер-

вером и виртуальным, которые создаются автоматичес-ки для каждого виртуального сервера и конфигурируют-ся c помощью vzctl. Они не имеют MAC-адресов, не подде-рживают броадкасты (broadcast), на них не работают сниф-феры и средства учета трафика, использующие libicap (на-пример, tcpdump), на них нельзя строить бриджи.

veth – соединения точка-точка между физическим сер-вером и виртуальным, которые нужно создавать и кон-фигурировать вручную средствами того дистрибутива Linux, который работает на физическом и виртуальном сервере. Они лишены недостатков venet (которые мож-но рассматривать и как достоинства с точки зрения бе-зопасности и эффективности) и выглядят как полноцен-ные ethernet-интерфейсы.

Если в качестве маршрутизатора/брандмауэра для до-ступа к виртуальным серверам использовать физический сервер, стоит, несомненно, предпочесть venet. Поскольку та-кая конфигурация более распространена, то и venet-интер-фейсы используются чаще. Однако чем сложнее конфигу-рация маршрутизатора/брандмауэра, тем больше основа-ний появляется для вынесения его в отдельный виртуаль-ный сервер, чтобы не перегружать физический сервер лиш-ними задачами и лишним ПО. В нашем случае дополнитель-ным поводом стало желание иметь один и тот же адрес вир-туального сервера, доступный извне, независимо от адре-са узла кластера, на котором он в данный момент работает. Эта конфигурация в некоторых случаях может оказаться еще более сложной, если, например, на проброшенном физичес-ком интерфейсе организовать поддержку IEEE 802.1Q VLAN, чтобы принять несколько vlan, но с точки зрения настройки OpenVZ эта конфигурация не будет ничем отличаться от то-го, что было рассмотрено выше – разница будет только в на-стройке проброшенного сетевого интерфейса. Более важ-ным является то, что если использовать в качестве маршру-тизатора/брандмауэра виртуальный сервер, более удобным будет построить виртуальную сеть на veth-интерфейсах. Вы-глядеть это будет так, как показано на рисунке.

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

Создаем и запускаем виртуальные сервера:

Computing interface groups: ... 3 interfaces foundProcessing /etc/net/vlantab: empty.Stopping group 1/realphys (1 interfaces) Stopping eth1: ..OKStopping group 0/virtual (2 interfaces) Stopping lo: .OK Stopping venet0: .OKerror: setting key "net.ipv4.icmp_echo_ignore_broadcasts": Operation not permittederror: setting key "net.ipv4.tcp_syncookies": Operation not permittederror: setting key "net.ipv4.tcp_timestamps": Operation not permittedComputing interface groups: ... 3 interfaces foundStarting group 0/virtual (2 interfaces) Starting lo: ....OK Starting venet0: ......OKStarting group 1/realphys (1 interfaces) Starting eth1: ......OKProcessing /etc/net/vlantab: empty.

$ 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 178149msrtt min/avg/max/mdev = 0.298/193.970/1702.783/397.285 ms, pipe 3

[root@m1 ~]# vzctl create 102 ↵ --ostemplate altlinux-sisyphus --config vps.basic

Creating VE private area: /var/lib/vz/private/102Performing postcreate actionsVE private area was created

[root@m1 ~]# vzctl set 102 --name mail --save

Name ve1 assignedSaved 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

Виртуальная сеть

Page 30: 049 Системный Администратор 12 2006

28

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

Создаем и конфигурируем veth-интерфейсы внутри вир-туальных серверов:

Имена интерфейсов и их MAC-адреса мы придумываем сами, поэтому необходимо, чтобы последние не пересека-лись с существующими. Объединяем концы veth-интерфей-сов со стороны физического сервера в бридж:

Проверяем работоспособность внутренней виртуаль-ной сети:

Теперь на виртуальных серверах описываем маршрут во внешнюю физическую сеть:

На виртуальном маршрутизаторе включаем пересылку пакетов между физической и виртуальной сетями:

Теперь если на машине из физической сети 192.168.46.0/24 описать маршрут в сеть 192.168.199.0/24 (или настроить NAT на виртуальном маршрутизаторе), мы получим то, чего и добивались:

Желательно, чтобы все описанные выше настройки со-хранялись при перезапуске виртуальных серверов, сервиса vz и ведущего узла кластера. С настройками виртуальных серверов проще всего – их можно сохранить в etcnet:

Для автоматического добавления конца veth-интерфей-сов со стороны физического сервера в бридж при старте соответствующего виртуального сервера потребуется ис-

[root@m1 ~]# vzctl start mail

Starting VE ...VE is mountedAdding IP address(es): 192.168.199.2Setting CPU units: 1000Set hostname: mail.mydomain.comVE start in progress...

[root@m1 ~]# vzctl create 103 ↵ --ostemplate altlinux-sisyphus --config vps.basic

Creating VE private area: /var/lib/vz/private/103Performing postcreate actionsVE private area was created

[root@m1 ~]# vzctl set 103 --name dbms --save

Name ve2 assignedSaved 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 mountedAdding IP address(es): 192.168.199.3Setting CPU units: 1000Set hostname: dbms.mydomain.comVE start in progress...

[root@m1 ~]# vzctl set router ↵ --veth_add veth1,00:12:34:56:78:9A,eth0, ↵ 00:12:34:56:78:9B --save

Processing veth devicesSaved 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 devicesSaved 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 devicesSaved 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

[root@m1 ~]# ip link set veth1 up[root@m1 ~]# ip link set veth2 up[root@m1 ~]# ip link set veth3 up[root@m1 ~]# brctl addbr br0[root@m1 ~]# brctl addif br0 veth1[root@m1 ~]# brctl addif br0 veth2[root@m1 ~]# brctl addif br0 veth3[root@m1 ~]# ip link set 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 ip route ↵ add 192.168.0.0/16 via 192.168.199.1[root@m1 ~]# vzctl exec dbms ip route ↵ add 192.168.0.0/16 via 192.168.199.1

[root@m1 ~]# vzctl exec router sysctl -w ↵ net.ipv4.ip_forward=1

[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

[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

Page 31: 049 Системный Администратор 12 2006

29№12, декабрь 2006

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

править скрипт /usr/sbin/vznetcfg, добавив в конец функ-ции init_veth() строку (сделать это нужно на двух узлах кластера):

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

Наконец, бридж тоже нужно создать, и сделать это не-обходимо еще до старта всех виртуальных серверов. Луч-ше всего добавить его создание в конфигурацию etcnet на обоих узлах кластера:

Есть одна неприятная деталь. В конфигурацию виртуаль-ных серверов мы добавили маршрут в сеть 192.168.0.0/16, но во многих случаях нам потребуется добавить туда мар-шрут по умолчанию. Сделать этого мы не сможем, так как такой маршрут, созданный OpenVZ заранее для собствен-ных нужд, уже есть:

Он создается и автоматически привязывается к ин-терфейсу venet0. Ни эта довольно навязчивая автомати-ка, ни venet-интерфейсы вообще нам сейчас не нужны, мы используем только veth. Поэтому чтобы такого не про-исходило, потребуется исправить скрипт, занимающий-ся конфигурированием сетевых интерфейсов виртуаль-ного сервера. В случае ALT Linux Sisyphus – это скрипт /etc/vz/dists/scripts/etcnet-add_ip.sh. В нем нам нужно моди-фицировать функцию add_ip() таким образом, чтобы она выполнялась только при наличии присвоенного venet-ин-терфейсу адреса:

Затем в виртуальных серверах необходимо удалить из etcnet настройки интерфейса venet0:

Теперь можно перезапустить сервис vz – в конфигура-ции виртуальных серверов останутся только те маршруты, которые мы указали явно.

Таким образом, мы добились того, чего хотели: в штат-ном режиме виртуальные серверы mail и dbms работают на узле m1, а в случае его отказа автоматически переезжа-ют на узел m2, при этом с точки зрения внешнего наблюда-теля из физической сети 192.168.46.0/24 наблюдается лишь кратковременный перерыв в обслуживании:

Что дальшеИтак, мы выполнили базовую настройку двухузлового клас-тера, подняли систему виртуализации OpenVZ, кластери-зовали ее, а затем настроили несколько виртуальных сер-веров, виртуальную сеть между ними и связали ее с внеш-ней физической сетью. При этом мы показали преимущес-тва такого способа построения систем как с точки зрения надежности, так и с точки зрения снижения затрат на обо-рудование и его обслуживание. Теперь можно углубляться в детали: садиться и вдумчиво читать OpenVZ Users Guide – http://download.openvz.org/doc/OpenVZ-Users-Guide.pdf (пе-ревод этого руководства доступен на http://www.opennet.ru/docs/RUS/virtuozzo).

Для полноценного использования OpenVZ нам потре-буется настроить: Квоты на процессорное время для виртуальных серверов. Квоты потребления системных ресурсов виртуальными

серверами (количество процессов, количество сокетов, объем виртуальной памяти, различных буферов и т. д.).

Дисковые квоты. Доступ к физическим устройствам и файловым системам

физического сервера, если в этом есть необходимость.

Все перечисленное очень подробно описано в докумен-тации. После более тщательной настройки OpenVZ можно переходить к настройке самих виртуальных серверов.

1. http://linux-ha.org2. http://drbd.org3. http://openvz.org4. http://altlinux.ru5. http://sisyphus.ru6. http://freesource.info

brctl addif br0 ${dev}

[root@m1 ~]# mkdir /etc/net/ifaces/br0[root@m1 ~]# echo TYPE=bri > /etc/net/ifaces/br0/options

[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

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}

[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

$ 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 178149msrtt min/avg/max/mdev = 0.298/193.970/1702.783/397.285 ms, pipe 3

Page 32: 049 Системный Администратор 12 2006

30

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

Нам понадобится Аппаратное обеспечение. Что-

бы вывести внутреннюю сеть в Ин-тернет, достаточно компьютера Pentium III 600 МГц, 256 Мб RAM, 10 Гб HDD, 2 сетевые карты. Конфи-гурация взята с запасом, для пол-ноценной работы сети малого офи-са (около 50 пользователей) впол-не хватило бы Pentium II 400 МГц, c 128 Мб RAM. Но в дальнейшем мо-жет возникнуть желание установить на этот же шлюз, к примеру, прокси-сервер, лучше выбрать конфигура-цию более высокого уровня.

Операционная система: FreeBSD 5.5 или 6.1.

Дополнительно: из-за того, что данный компьютер подлежит не-прерывному использованию, реко-мендую доставить внутрь корпуса дополнительные вентиляторы что-бы обеспечить принудительное на-гнетание/отток воздуха для охлаж-дения. Практически все современ-ные корпусы ATX позволяют сде-лать это.

Поскольку все необходимые моду-ли включены в состав операционной

системы, больше нам ничего не пот-ребуется.

Настройка сетевых интерфейсовБудем считать, что уже имеется ком-пьютер подходящей конфигурации с установленной нужной версией FreeBSD.

Необходимо уточнить имена ин-терфейсов сетевых карт, под которы-ми их распознает операционная сис-тема.

Настраиваем шлюз в Интернет на базе FreeBSD

Использование FreeBSD на небольших роутерах для связи с внешним миром уже давно перестало быть чем-то выдающимся. Эта простая в использовании, нетребовательная к ресурсам и обслуживанию операционная система почти идеально подходит для решения подобных задач.

Алексей Бережной

# ifconfig

Page 33: 049 Системный Администратор 12 2006

31№12, декабрь 2006

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

Должно появиться что-то подобное:

В компьютере установлены две сетевые карты 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:

В нем находим соответствующие строчки:

Таким образом, интерфейс 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. Для администраторов, пока незнакомых с редакто-ром, могу порекомендовать замечательную статью Макси-

ма Мошкова http://www.lib.ru/unixhelp/vi.txt и http://www.lib.ru/unixhelp/vibegin.txt.

Настройки сетевых интерфейсов во FreeBSD хранятся в файле /etc/rc.conf. Открываем его на редактирование:

И добавляем следующие строки:

После чего перезагружаем компьютер:

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

После загрузки проверяем:

Вывод команды ifconfig:

Файл rc.conf, на мой взгляд, можно назвать ключевым файлом конфигурации. Очень большое число параметров, используемых системой, задается в виде соответствующих переменных в этом файле. В том числе настройки сетевых интерфейсов, файервола и NAT, используемых нами.

Настройка шлюзаМы будем использовать «родной» для FreeBSD файервол IPFW. Для этого мы должны внести некоторые изменения в ядро системы. Если возникли дополнительные вопросы по перекомпиляции ядра, советую прочитать дополнитель-ный материал: http://freebsd.org.ru/how-to/kernelconfig.html.

Заметьте, что нужно использовать исходные тексты ядра для соответствующей архитектуры. Поскольку ар-

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: activexl0: 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: activeplip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500lo0: 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

# more /usr/src/sys/i386/conf/ GENERIC

device rl # RealTek 8129/8139…device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# 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

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: activexl0: 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: activeplip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500lo0: 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

Page 34: 049 Системный Администратор 12 2006

32

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

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

Исходники ядра по умолчанию лежат в каталоге /usr/src/sys/i386/conf. Соответственно переходим в данный каталог:

Как правило, изменяют файл GENERIC, содержащий оп-ции ядра, устанавливаемого по умолчанию. Для этого де-лаем копию данного файла:

Открываем на редактирование новый файл ourkernel:

и добавляем следующие опции:

После сделанных изменений можно приступать к пере-компиляции ядра.

Выполняем команды:

Перегружаемся:

Если после перезагрузки сервер работает нормально, приступаем к настройке файервола.

Для организации работы файервола используются сле-дующие переменные, добавляемые при необходимости в файл rc.conf.

Разрешает или запрещает использование файервола:

Имя и местоположение файла, отвечающего за иници-ализацию файервола.

Файл rc.firewall не рекомендуется редактировать. Вмес-то этого лучше воспользоваться соответствующей пере-менной firewall_type или более простым способом, описы-ваемым ниже.

При установке данного правила в «YES» подавляется вывод на дисплей:

Разрешить/запретить ведение лога событий:

Тип настройки файервола:

по умолчанию FreeBSD использует правила из файла /etc/rc.firewall.

В нем есть несколько готовых шаблонов: open – файервол разрешает прохождение всех паке-

тов. client – рекомендуется для защиты только этого компью-

тера. То есть файервол настроен как стандартный кли-ентский компьютер. Он разрешает все исходящие со-единения и запрещает все входящие соединения, кро-ме соединений по 25 порту.

simple – предполагается для настроек простых шлю-зов и т. д. То есть в качестве простейшего файерво-ла, защищающего внутреннюю сеть от проникновения извне. Мы будем настраивать более гибкую систему правил, поэтому данный шаблон нами не использует-ся не будет.

closed – Разрешается трафик через локальный интер-фейс lo0. Прохождение остального трафика определя-ется правилом по умолчанию. Как правило, это запрет любого доступа, исключая внутренний интерфейс lo0 (попросту говоря, разрешен только доступ «к самому себе»)

UNKNOWN – запретить загрузку файервольных правил из конфигурационного скрипта по умолчанию. Файер-вол никак не настраивается. Будет он пропускать тра-фик или нет, зависит от конфигурации ядра системы. Используется по умолчанию.

Эту же переменную в значении «filename» – «имя_фай-ла» – можно использовать для задания собственного кон-фигурационного файла для файервола.

Например:

будет загружать настройки из созданного файла /etc/rc.firewall.newconfig.

«firewall_flags=””» – служит для передачи дополнитель-ных аргументов при использовании firewall_type со значе-нием filename.

Наша задача состоит в том, чтобы создать систему, от-вечающую следующим критериям:

# cd /usr/src/sys/i386/conf

# cp GENERIC 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

# Set to YES to enable firewall functionalityfirewall_enable="NO"

# Which script to run to set up the firewallfirewall_script="/etc/rc.firewall"

firewall_quiet="NO"

firewall_logging="NO"

firewall_type="UNKNOWN"

firewall_type="/etc/rc.firewall.newconfig"

Page 35: 049 Системный Администратор 12 2006

33№12, декабрь 2006

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

Простота администрирования. Возможность модификации «на лету», незаметно

для пользователей. Поэтому такие операции, как раз-рыв соединений и тем более перезагрузка для нас не-желательны.

Гарантия того, что наша система будет работать на боль-шинстве машин.

В нашем примере скрипта все компьютеры локальной сети делятся на две условные группы: одна группа при-вилегированная – это те, кому разрешен доступ в Интер-нет, используя наиболее употребительные сервисы, та-кие как: 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.

Вот наш пример скрипта:

Создаем и редактируем скрипт rc.firewall.local.inet для работы с привилегированной группой адресов:

# vi rc.firewall.run

#!/bin/shextip="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

/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 add 55010 allow tcp from any to any 1024-65534/sbin/ipfw add 55020 allow tcp from any 1024-65534 to any/sbin/ipfw add 55030 allow tcp from any 1024-65534 to any/sbin/ipfw add 55040 allow tcp from any to any 1024-65534/sbin/ipfw add 55050 allow udp from any to any 1024-65534/sbin/ipfw add 55060 allow udp from any 1024-65534 to any/sbin/ipfw add 55070 allow udp from any 1024-65534 to any/sbin/ipfw add 55080 allow udp from any to any 1024-65534# Deny all/sbin/ipfw add 65534 deny ip from any to any

# vi /etc/ rc.firewall.local.inet

#!/bin/shintnet="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 ↵

Page 36: 049 Системный Администратор 12 2006

34

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

В скрипте для изменения состава привилегирован-ной группы необходимо отредактировать переменную privgroup, добавив/удалив в ней номер хоста в локаль-ной подсети.

Например, чтобы добавить два компьютера с IP-ад-ресами 192.168.9.33 и 192.168.9.45, нужно записать «privgroup={31-33,45}».

Использовать правила типа «/sbin/ipfw delete NNNNN» при старте системы, когда такого правила не было – не-множко некрасиво. При попытке удалить несуществую-щее правило система выдает на консоль сообщение сле-дующего вида:

При этом система продолжает нормально работать.Если все делать строго, то нужно создавать два скрипта:

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

Поскольку основная цель – создать простую в админис-трировании систему, то данной проблемой в нашем случае можно пренебречь.

Зато теперь мы можем после внесения соответствую-щих изменений просто перезапустить скрипт для привиле-гированной группы.

Также мы можем вносить изменения и перезапускать скрипт rc.firewall.run, хотя, по замыслу, это нам придется делать гораздо реже, чем в случае со скриптом привели-гированной группы.

Поскольку мы написали свой собственный скрипт, об-нуляющий существующие правила и запускающий альтер-нативную конфигурацию файервола, нужно подумать, как его запустить.

Во FreeBSD есть замечательный механизм запуска поль-зовательских программ: файл rc.local. По умолчанию он от-сутствует в системе.

Раз мы уже создаем данный файл, добавим в него ко-манду запуска демона natd, который отвечает за подде-ржку NAT.

Демон natd запускается из файла rc.conf. (Опять этот файл, поистине он играет ключевую роль для всей систе-мы FreeBSD в целом!)

Механизм запуска этого файла из rc.conf выполняется посредством следующих переменных:

Но в этом случае мы будем использовать вызов демо-на natd посредством rc.local. Команда:

автоматически создает файл /etc/rc.local и открывает его на редактирование.

Добавляем в него следующие строки:

Перезагружаемся и проверяем доступ к нужным ресур-сам Интернета с компьютера из локальной сети.

1. Эви Немет, Гарт Снайдер, Скотт Сибасс, Трент Р.Хейн. UNIX. Руководство системного администратора. «BHV», «Питер», 2004 г.

2. Алексей Федорчук, Алексей Торн. FreeBSD. Установка, на-стройка, использование. BHV, 2003 г.

3. Филипп Торчинский. Практическое пособие администратора UNIX. «Символ», 2003 г.

# /bin/sh rc.firewall.run

# -- путь к самому файлу natdnatd_program="/sbin/natd"# Разрешить NAT (если firewall_enable == YES)natd_enable="YES"# Внешний интерфейс или IPaddress для использованияnatd_interface=""# Дополнительный флаги запуска natdnatd_flags=""

# vi /etc/rc.local

# Команда запуска natd/sbin/natd -n rl0 # где «-n rl0» — имя интерфейса, на котором запускается NAT## И запускаем наш скрипт для установки правил для файервола:/bin/sh /etc/rc.firewall.run

ipfw: rule 13031: setsockopt(IP_FW_DEL): Invalid argument

# /bin/sh rc.firewall.local.inet

${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}

Page 37: 049 Системный Администратор 12 2006
Page 38: 049 Системный Администратор 12 2006

36

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

В поисках анонимного прокси-сервера

Иван Максимов

Вопрос о безопасном серфинге по Интернету поднимался не раз. При использовании для этой цели прокси-сервера возникает вопрос, что лучше: искать прокси или создать свой? Если искать – как быстрее? А если создавать – как проще?

Page 39: 049 Системный Администратор 12 2006

37№12, декабрь 2006

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

Зачастую возникает задача анонимно посетить не-обходимый ресурс в локальной или глобальной се-ти. Цели могут быть разные, первое и самое распро-

страненное в работе системного администратора – это тес-тирование только что настроенной системы авторизации сервера. Второе – анонимно ответить подозрительному человеку по электронной почте, через веб-интерфейс сво-ей почтовой системы. Третье, выполнить просьбу началь-ства, скрытно посетить сайт конкурирующей фирмы. Чет-вертое – просто быть уверенным, что, заходя в чат, IRC-ка-нал или форум, нас не распознают.

Ситуации бывают абсолютно разные, возникают они не каждый день, но все же бывают. Что тогда делать? Ис-кать по Интернету прокси-лист? Но чаще всего в нем 90% недействующих ссылок. Просить друга администратора дать доступ по ssh-протоколу, и, воспользовавшись lynx или links из консоли, посетить необходимый ресурс? Вы-ход есть всегда, но хорошо иметь под рукой необходимые средства для анонимной работы.

О прокси-серверахВопрос о безопасном серфинге по Интернету поднимался не раз. Существует множество методов скрыть свой реаль-ный IP-адрес. Рассмотрим известную вам тему – как скрыть свой реальный IP-адрес с помощью прокси-сервера.

Самое простое решение – это прокси c веб-интерфей-сом (например [1]). Заходим на страницу и в появившем-ся окне вводим необходимый URL. Метод самый простой, не требуюет даже перенастраивать браузер, но очень час-то подобные сервисы, чтобы существовать, зарабатыва-ют на рекламе, которую показывают нам. Кроме простоты использования, данные веб-прокси имеют еще один плюс – они долговечны.

Но и минусы очевиды: реклама, невысокая скорость, от-сутствие гибкости настроек и смены IP-адреса. Что ж, са-мое легкое – не значит самое хорошее.

В Интернете можно найти сотни списков http-прок-си, от простых кэширующих до анонимных с поддержкой шифрования, антивирусной проверкой и «чистыми» лога-ми. Последние, как правило, пользуются большой популяр-ностью, но они не бесплатны. Если необходимо, можно ку-пить пару таких прокси, благо цена на обслуживание в ме-сяц у них колеблется от 1 до 50 долларов, хотя если прок-си стоит более 20-30 условных единиц – это не более чем попытка его владельца заработать большие деньги. Что ж, хороший прокси иметь под рукой всегда полезно, но не вся-кий готов платить деньги, да и анонимность тоже под воп-росом (неизвестно где этот прокси расположен).

Последний и, на мой взгляд, самый эффективный прок-си – это root shell. Имея под рукой собственный сервер на Linux/BSD, мы можем делать с ним очень многое: вы-брать саму программу прокси (Squid, oops! и другие), до-бавить антивирус, отрегулировать кэш и выстроить каскад. При этом все зависит только от нас: обновление антивиру-са и прокси-сервера, настройка цепочки прокси.

Тема настройки шлюзов и прокси-серверов под ОС Linux/BSD очень хорошо освещена в Интернете, поэтому не бу-дем ее касаться. Рассмотрим два первых вопроса: автома-тизация процесса поиска, выбора, проверки прокси и со-

здание собственного cgi прокси-сервера, проанализиру-ем плюсы и минусы.

В поисках анонимных проксиЗадав в форме поиска Google ключевую фразу «proxy list», будет выведено «...примерно 45.900.00 для proxy list». Как обработать подобную информацию? Конечно же, столь-ко листов не нужно. У многих есть 5-6 закладок на люби-мые страницы, где каждый день появляются обновленные списки, но выборка и проверка прокси занимает немалое время, попробуем автоматизировать данную задачу стан-дартными средствами ОС Linux/BSD.

Независимо от того, есть ли у нас страницы-«фавори-ты» с прокси-серверами или нет, нам понадобятся прокси-листы, после сбора их необходимо отсортировать, удалить дубликаты и проверить. Итак, приступим:

Рассмотрим скрипт подробнее. В файл site.list мы са-мостоятельно заносим «любимые» ресурсы с прокси-лис-тами (или только что найденные). Например (имена ресур-сов вымышлены):

#!/bin/bash# Переменная счетчикn=1echo "Всего ресурсов "`wc -l ./site.list`while [ 1 ]do# Текстовым редактором sed построчно читаем файл site.list # и заносим значение в переменную f1=`sed -n ''$n'p' ./sity.list`# Если переменная пуста, что означает конец файла – # выходим из циклаif [ "$f1" = "" ]; thenecho "Список обработан"exit 1fi# Для наглядности выводим каждый раз номер строки # и название ресурса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# Счетчик увеличивается на 1let "n += 1"done# Количество прокси-серверов до удаления дубликатовecho "Всего найдено"`wc -l proxy.list`cat proxy.list | sort | uniq > proxy.list# Количество прокси-серверов после удаления дубликатовecho "После сортировки осталось"`wc -l proxy.list`

http://www.proxy.com

Веб-интерфейс CGIProxy

Page 40: 049 Системный Администратор 12 2006

38

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

Желательно занести более 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.

Все, в конечном файле мы получим «чистый» список прокси-серверов, ос-

или нет, был получен не конечный ре-зультат. Поэтому предлагаю вам рас-смотреть решение с использованием cgi-прокси.

Работаем с CGIProxyС самого начала было ясно, что для стабильности необходимо иметь свой собственный прокси-сервер, но что если свободного доступа на удален-ном ресурсе по протоколу ssh нет? Да и конфигурировать удаленно прок-си-сервер не всегда бывает удобно. Для подобных задач и существуют cgi-прокси. Их главное удобство: лег-кость установки и конфигурирования, небольшой размер, возможность рабо-тать удаленно по протоколу http (если более ничего нет).

Рассмотрим ниже один из cgi-прок-си-серверов, написанный на языке Perl – CGIProxy [3].

Итак, закачав скрипт, присту-пим к его установке. Как и любой cgi-скрипт, его достаточно просто помес-тить в cgi-bin директорию веб-серве-ра, и все готово к работе (см. рисунок). Главное – не забудьте проверить путь к интерпретатору языка perl, по умол-чанию значение равно #!/usr/bin/perl.

Из пользовательских опций доступ-ны лишь 5: Remove all cookies – удалять все

cookie. Remove all scripts – удалять все

скрипты. Remove ads – удаление баннеров. Hide referrer information – скрытие

информации о переходе. Show URL entry form – отобра-

жение/скрытие формы CGIProxy на посещаемых сайтах.

Подробнее об опциях расска-жу немного позже. Как настраивать скрипт?

Конфиг урирование CGIProxy не должно вызвать затруднений, ведь это простой скрипт, написан-ный на Perl. Даже если язык вам пло-хо знаком, открыв файл любым текс-товым редактором, вы увидите в пер-вой части скрипта все 50 параметров (которые являются не чем иным, как переменными) и богатую справку по ним с примерами.

Итак, пользовательские опции (см. рисунок) доступны как адми-нистратору, так и пользователю. Ес-

талось их проверить на работоспособ-ность. В Интернете можно найти мно-жество программ, проверяющих по-добные списки, но в основном эти про-граммы под ОС Windows и не бесплат-ны (чаще пробные версии весьма ог-раниченны).

Заметьте, что тестировать прокси-серверы со своей машины очень неэ-ффективно, так как мы будем ограни-чены пропускной способностью кана-ла. Чтобы не зависеть от сторонних разработчиков, Windows и пропускной способности нашего канала, восполь-зуемся одним из многих on-line-прок-си-чекером [2].

Итак, в итоге мы получили список рабочих прокси-серверов... или нет? Было упомянуто, что файл с сайтами по возможности должен содержать более 20-30 ресурсов. Это связано с тем, что многие ресурсы дублируют-ся по своему содержанию. В моем при-мере было обработано 32 сайта, най-дено 1532 прокси-сервера, из них пос-ле удаления дубликатов осталось 325, после проверки on-line-чекером было найдено рабочих 15, из них закрылись через 5 минут 4, остальные – в течение часа. Возможно, этот метод и резуль-таты кому-то и подойдут, так как вре-мя работы скрипта и чекера достаточ-но мало (около 7 минут), можно допол-нительно автоматизировать переда-чу списка на on-line-чекер (тем же са-мым curl, с помощью опций -F или -d), но зависеть от удачи и ждать, повезет

Коротко о CGIProxyCGIProxy представляет собой сетевую службу, позволяющую клиентам выполнять запросы к ресурсам сети, скрывая реаль-ные сведения клиента (или проще говоря – анонимный прокси-сервер).

Первый релиз скрипта был выпущен 13 августа 1998 г. Проект постоянно раз-вивается, дорабатывается, исправляются ошибки, вводятся новые функции. Послед-няя доступная версия (на момент написа-ния статьи) 2.1beta15 от 26 октября 2006 го-да, размер скрипта 455 Кб.

Данный cgi-proxy является http, ftp-прок-си, может работать по протоколу SSL, до-ступны средства авторизации, имеет 50 внутренних опций, которые позволя-ют конфигурировать: cookie (сохранение, просмотр, удаление), обработку скрип-тов (полное их исключение из страниц, фильтр), листы доступа (доступны как

«белые», так и «черные» списки по доме-нам или IP-адресам), фильтры баннеров (опять же обычные списки) и другие по-лезные опции.

Системные требования у скрипта очень скромные: веб-сервер и интерпретатор языка Perl (версии выше 5.6.1). Замечу, что CGIProxy является nph-скриптом (Non-Parsed Header). Данные скрипты полностью формируют http-заголовок, и веб-сервер не обрабатывает выданные этими скриптами данные, а передает результат браузеру без изменений. Для некоторых веб-серверов указание в начале имени файла «nph-» обя-зательно, будьте внимательны.

Также напомню, что для работы по про-токолу ssl необходимо, чтобы на сервере были установлены библиотека OpenSSL и модуль Net::SSLeay (их легко найти в пор-тах/пакетах всех современных Linux/BSD-систем).

http://www.proxy-list.com/list1.htmlhttp://www.proxy-list.com/list2.htmlhttp://www.proxy-list.com/listN.html

Page 41: 049 Системный Администратор 12 2006

39№12, декабрь 2006

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

ли скрипт будет использоваться не-сколькими лицами, рекомендуется уб-рать данные параметры для посетите-лей (опция «$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 будет очень проста.

Несмотря на то что разработчики предупреждают нас о том, что следует

вопросов на сайте 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 Proxy Checker.

3. http://jmarshall.com/tools/cgiproxy – офи-циальный сайт проекта CGIProxy.

4. ht tp: / /proxydetect.com – проверка на анонимность.

5. http://cgiirc.sourceforge.net – официаль-ный сайт проекта CGI:IRC.

отключать обработку скриптов (так как только в этом случае будет гаратиро-вана анонимность), после посещения 5-7 ресурсов проверяющие на ано-нимность пользователя мне так и не удалось увидеть свой IP, точные дан-ные о ОС и браузере. Проверить «се-бя» на анонимность можно, к примеру, по ссылке [4].

Итак, в итоге все же был получен стабильный прокси-сервер, легкий в установке, простой и гибкий в конфи-гурировании. CGIProxy за свою просто-ту и в то же время за богатство возмож-ностей часто используется на «анони-майзерах», и если внимательно при-глядеться на сайт по ссылке [1], мы уви-дим слегка измененный cgiproxy.

Из минусов можно выделить: про-блемы при работе скрипта с веб-сер-вером IIS от компании Microsoft (на сай-те проекта описаны возможные про-блемы и их решения) и все же сущес-твующую затрудненность конфигури-рования. Как вы уже, наверное, заме-тили, по описанию сложно сориенти-роваться: «где-то наверху», «в ниж-ний части скрипта», к сожалению, ког-да проект был «молодым», скрипт был небольшим, размером 260 Кб (пос-ледняя stable-версия 2.0.1 от 19 но-ября 2002 г.), и разобраться в файле не составляло труда, тогда как разыс-кать нужные опции, параметры, текс-товые поля в файле размером 450 Кб уже сложнее и без использования по-исковых средств текстового редактора найти необходимые параметры слож-но. Возможно, также у кого-то из вас возникнут затруднения с поиском хос-тинга, поддерживающего Perl, но обра-тившись в раздел часто задаваемых

CGI:IRCРассказывая о распространенных cgi-скриптах, нельзя не упомянуть о еще одном знаменитом скрипте, написанном на Perl – CGI:IRC [5]. Именно этот скрипт обеспе-чивает работу многим известным ресур-сам («шлюзам в IRC»). Последняя доступ-ная версия на сайте проекта 0.5.9 от 6 ию-ня 2006 года. Этот скрипт, как и CGIProxy, является nph-скриптом, поэтому требо-вания у них примерно одинаковые, за ис-ключением версии Perl, для cgi:irc необ-ходима версия 5.0.4 или выше. Програм-ма в отличие от cgi-прокси-сервера состо-ит не из одного скрипта, а из 3 основных

(client-perl.cgi, irc.cgi и nph-irc.cgi) и вспо-могательных каталогов (в них содержатся картинки, звуки, модули), поэтому, перено-ся скрипт на веб-сервер, будьте вниматель-ны. Для настройки скрипта отредактируйте файл cgiirc.config (или возьмите его полную версию cgiirc.config.full, но это не столь не-обходимо), замечу, что при всем разнооб-разии опций назначение их понятно с пер-вого взгляда (default_port, default_server и другие), благодаря чему настройка не вызывает трудностей. Очень жаль, что в CGIProxy конфигурационный файл также отдельно не вынесен, так было бы намного удобней.

Page 42: 049 Системный Администратор 12 2006

40

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

В век информационных техноло-гий ни для кого не будет открове-нием тот факт, что большинство

организаций в процессе работы поль-

зуются электронной почтой. Цели и за-дачи могут быть разные, но основная причина ее использования – просто-та и скорость передачи информации.

Географическое расстояние не име-ет значения. Задержки при передаче письма обычной почтой и общее вре-мя его доставки никогда не сравнят-

Организуем работу офисного почтового сервера на платформе Windows

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

Александр Емельянов

Page 43: 049 Системный Администратор 12 2006

41№12, декабрь 2006

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

ся со временем доставки электронно-го сообщения. Решений для организа-ции электронного документооборота с «внешним» миром и внутри компа-нии существует множество. В их чис-ле почтовые серверы крупных корпо-раций, а также всевозможные проек-ты для сегмента SMB (средний и ма-лый бизнес). Ну и, наконец, не стоит за-бывать про огромное количество бес-платных почтовых сервисов в Интер-нете. Отбросим гигантов (они способ-ны сами о себе позаботиться) из рас-смотрения и направим свой взор на не-большие компании. Попробуем ра-зобраться, что могут себе позволить в этом плане компании среднего клас-са, а также организации, находящиеся в стадии становления.

«Здесь все уже давно решено и прекрасно работает без финансовых затрат», – скажете вы, кивая в сторо-ну Open Source-продуктов, таких как, например, Sendmail. Спорить не ста-ну. Но, предположим, что есть сеть гипотетической организации, работа-ющая под управлением ОС Windows, и в штате нет ни одного сотрудника, знающего принципы работы *nix-сис-тем, а уж тем более Sendmail. Конеч-но, это не панацея, и для Windows есть почтовые серверы, однако все они не бесплатны и требуют тщательно-го подхода для установки и настрой-ки. Можно также сослаться на нали-чие в Интернете бесплатных почто-вых серверов, здесь достаточно завес-ти речь о престиже компании, а также о качестве доставки через них элект-ронных сообщений, и этот вариант от-падет сам собой. Сегодня мы рассмот-рим недорогой способ организации и настройки почтового домена вашего предприятия.

Предварительная подготовкаЗадача ясна. Для ее решения нам пот-ребуется следующее: Зарегистрировать виртуальный

почтовый домен у интернет-про-вайдера. Пусть наш домен называ-ется @company.ru. Свободно ли вы-бранное доменное имя, можно за-ранее проверить с помощью серви-са whois на www.nic.ru.

Завести на сервере провайде-ра почтовый ящик. Например, [email protected].

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

Рисунок 1. Схема взаимодействия компонентов Office Mail Server

Page 44: 049 Системный Администратор 12 2006

42

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

Всю работу по реализации транс-порта «Internet – [email protected]» и обратно обеспечивает провайдер, на-ша же дальнейшая задача – корректно организовать поток почтовых сообще-ний к конечному пользователю и от не-го. Получение и отправка сообщений локального почтового домена выпол-няется POP3- и SMTP-клиентами. Со-общение, не прошедшее фильтр спа-ма при работе POP3-клиента, может либо быть оставлено на сервере про-вайдера, либо удалено без его загруз-ки с сервера. Экономия входящего тра-фика налицо.

Клиентские приложения взаимо-действуют с POP3- и SMTP-сервера-ми для получения и отправки своих сообщений. Будет ли разрешено под-ключение клиента к серверу, контро-лируется фильтром IP-адресов. Рас-пределением входящей почты по ящи-кам пользователей занимается встро-енный сортировщик. Правила его ра-боты следующие: если письмо адресовано пользо-

вателю нашего почтового домена и такой пользователь существует, положить письмо в его ящик (со-хранить в архиве – опционально);

если письмо адресовано пользо-вателю нашего почтового домена и такого пользователя не сущест-вует, положить письмо в ящик пос-тмастеру (сохранить в архиве – оп-ционально);

если письмо адресовано пользова-телю не нашего почтового домена, переслать его адресату, используя внешний, указанный в конфигура-ции, SMTP-сервер. Правила не пре-тендуют на полноту описания, по-чему – читайте дальше.

Особняком в этой схеме стоят хра-нилище данных и веб-сервер. По сути своей, хранилище – это папка maildrop в корневой директории OMS, в которой временно либо постоянно хранятся все проходящие через OMS сообщения. С помощью веб-сервера клиенты мо-гут поменять пароль доступа к своему почтовому ящику, а также посмотреть список зарегистрированных на серве-ре пользователей.

Установка и первоначальное конфигурирование OMSРаспаковываем скачанный архив в удобное место на диске. Процесс на-стройки может выполняться через ин-туитивно понятный графический ин-терфейс либо посредством внесения изменений в конфигурационный файл oms.cfg. Мы рассмотрим первый из них. В распакованной папке находятся два запускающих сервер файла: oms.exe, который нужен для запуска OMS в ка-честве службы, и oms_view.exe, слу-жащий для настройки и диагности-ки работы.

Итак, запускаем файл oms_view.exe. Окно управления содержит log-viewer, с помощью которого можно отсле-дить возникающие в процессе рабо-ты служб ошибки как в режиме online, так и выбрав старые log-файлы. Здесь же можно настроить варианты ра-боты OMS, указать папку для хране-ния log-файлов и вносить изменения в конфигурацию. Для настройки за-ходим «Tools → OMS Сonfiguration» (см. рис. 2). Отмечу, что OMS изна-чально имеет базовую конфигурацию для пробного старта, поэтому будет лучше, если вы остановите сервер до внесения своих изменений, а затем на-строенный OMS запустите как служ-бу. Далее в процессе работы для того, чтобы внесенные изменения вступили в силу, следует их сохранить и переза-пустить сервер.

Рассмотрим подробнее настройки конфигуратора.

General. Настраиваются следую-щие параметры: имя локального почтового домена

(все, что после @); количество суточных log-файлов,

которые будет хранить сервер (ста-рые удаляются);

адрес, через который будет осу-ществляться переадресация POP3-клиентом сообщений, не предна-значенных пользователям локаль-ного домена; как правило, на то, что указано в данном случае в по-ле Отправитель (from:), надеяться не приходится; большинство SMTP-серверов требуют наличия валид-ного адреса отправителя и не при-мут к пересылке такие сообщения; в нашем случае можно указать имя [email protected];

локальный пользователь, который будет получать все письма, прохо-дящие через OMS (архив), его мож-но не указывать, если архивация почтового потока не нужна.

Здесь же указывается, нужно ли бу-дет пересылать письма для пользова-телей, не входящих в локальный почто-вый домен, через реальный SMTP-сер-вер. Для этого нужно установить галоч-ку напротив «Relay messages to external user in local domain».

Users. Указываются имя пользова-теля, пароль, псевдоним (alias), крат-кое описание и размер почтового ящи-

Рисунок 2. С помощью графического интерфейса можно без труда настроить конфигурацию почтового сервера, а также следить за корректной работой служб

Page 45: 049 Системный Администратор 12 2006

43№12, декабрь 2006

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

ка. Указанный псевдоним автомати-чески прописывается 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: (кому) подстрока будет содержаться в адре-се пользователя нашего почтового до-мена. Нетрудно предположить, что ни одного сообщения из вне этот пользо-ватель не получит.

Вообще фильтр спама вкупе с сор-тировщиком играют серьезную роль

в защите локальной сети от «заразы», которая может содержаться в почто-вом сообщении, так как все сообще-ния, не предназначенные пользова-телям вашего домена, но прошедшие спам-фильтр, будут переправлять-ся в ящик постмастеру. Это, конечно, в идеале, если какой-нибудь из поль-зователей вашего почтового домена не засветился у спамеров, иначе ему придется поменять адрес электрон-ной почты.

SMTP server. Здесь нужно указать порт и тайм-аут подключения к SMTP-серверу, максимальный допустимый размер сообщения, которое может пройти через этот SMTP-сервер, мак-симальное количество сессий, а так-же выбрать фильтр IP-адресов, для ко-торых будет разрешен либо запрещен доступ к серверу. Отметив галочкой «Enable connections from all IPs, but …», вы тем самым запретите отправку поч-ты для компьютеров, указанных в спис-ке BAN выбранного фильтра IP-адре-сов, позволив получать и отправлять почту в рамках локального почтово-го домена.

Список параметров для настрой-ки POP3- и веб-серверов одинаков. Нужно выбрать порт и тайм-аут под-ключения, максимальное количество сессий, а также необходимый фильтр IP-адресов.

SMTP client. Обеспечивает транс-порт почты от SMTP-сервера OMS в Интернет. Поэтому здесь необходи-мо указать имя SMTP-сервера провай-дера, например, smtp.provider.ru, порт и тайм-аут подключения к этому серве-ру, имя пользователя и пароль для ав-торизации на сервере, а также распи-сание, по которому SMTP-клиент бу-дет запускаться.

POP3 client. Таких клиентов в от-личие от SMTP-клиентов может быть несколько.

Определяемые параметры: имя POP3-сервера провайдера; порт и тайм-аут подключения;

имя пользователя и пароль, при ис-пользовании APOP-аутентифика-ции пароль отправляется на сер-вер не открытым текстом, а переда-ется хэш пароля и случайной стро-ки, но такой метод поддерживают не все серверы;

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

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

максимально допустимый размер входящего сообщения, если сооб-щение превышает этот размер, ска-чивается только заголовок, а те-ло заменяется сообщением OMS, по умолчанию значение равно 0, что означает отсутствие ограничений;

количество сообщений, после за-грузки которых необходимо за-пускать сессию клиента зано-во, этот параметр полезно указы-вать при наличии некачественно-го соединения, по умолчанию – 0 (все скачивается за одну сессию).

Запуск в работуВ конечном итоге мы получили на-строенный почтовый сервер. Запуск его в качестве службы произведем ко-мандой «\oms.exe /install». После это-го в корневом каталоге OMS будет со-здан файл oms.cfg.dump, который бу-дет указывать, какая конфигурация используется для работы.

Построенная нами схема доступ-на в понимании, проста в настройке и обеспечивает достаточный уровень безопасности (особенно если у про-вайдера стоит мощный фильтр спа-ма). Стоит отметить, что это не единс-твенный способ применения Office Mail Server. Все зависит от полета фантазии, светлой головы и «прямых» рук того, кто собирается его использовать.

Page 46: 049 Системный Администратор 12 2006

44

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

Зачем нужен «ещё один» Sendmail?Основным недостатком «старичка» Sendmail, который сразу же упоминает-ся, как только речь заходит о сравнении различных почтовых серверов, являет-ся его монолитная архитектура. Разме-щение всего функционала в одном дво-ичном файле, безусловно, тянет за со-бой целую массу проблем: и не слиш-ком эффективное расходование ресур-сов; и неустойчивость системы в целом, когда ошибка в одном компоненте мо-жет привести к полной неработоспособ-ности сервера; и сложность разработ-ки... Также редко кто забывает о «дыря-вом» прошлом этого пакета, по инерции интерполируя это и на настоящее, и да-же на будущее. Ну а сложность настрой-ки – это вообще притча во языцех, хотя типовая настройка Sendmail уже очень давно занимает лишь десяток-другой простых и, что называется, интуитив-но понятных строк в mc-файле.

Можно долго спорить о том, на-сколько серьёзны эти недостатки (и не-достатки ли это вообще), но понятно одно – «имидж» Sendmail на данный момент не слишком хорош, особен-но среди начинающих системных ад-министраторов, и как бы разработчи-ки ни старались улучшать этот пакет, на него всё равно смотрят искоса.

Необходимость избавиться от этой «кармы» ощущают, видимо, и сами разработчики Sendmail, и в результа-те они во главе с Клаусом Асманом ре-шили пойти на «реинкарнацию» – со-здание практически с нуля нового па-кета, на новых принципах, учитывая предыдущий опыт и стремясь испра-вить проблемы, присущие нынешним версиям Sendmail.

Таким образом, на свет появился Sendmail X, недавно переименованный в MeTA1. В качестве основных требо-ваний к разрабатываемой системе де-кларируются: полная поддержка RFC2821 и ряда

расширяющих стандартов; надёжность, исключающая потерю

сообщений; гибкость, позволяющая заменять

различные компоненты системы, наращивать функциональность и т. д. без необходимости перестра-ивать весь пакет;

масштабируемость, т.е. способ-ность наращивать производитель-ность (почти) пропорционально увеличению вычислительной мощ-ности оборудования;

расширяемость; удобство сопровождения, выра-

жающееся в соблюдении опре-делённых стандартов кодирования, что позволит сторонним разработ-чикам без труда разобраться в ис-ходных текстах и при необходимос-ти внести в них те или иные изме-нения;

портируемость, т.е. возможность без существенных модификаций переносить пакет на различные программные и аппаратные плат-формы.

А что внутри?MeTA1 объявлен как агент пере-дачи сообщений (message transfer agent, MTA). Как сказано на домаш-ней странице «родительского» про-екта (http://www.sendmail.org/sm-X), Sendmail X нацелен на то, чтобы стать эффективным и безопасным почто-вым шлюзом. Смена названия на эту

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

Ос новное отличие MeTA1 от Sendmail – его модульность. Подоб-но Postfix и Qmail, этот пакет состоит из нескольких взаимодействующих компонентов, каждый из которых ре-шает свою отдельную задачу и работа-ет с правами своего пользователя.

Это повышает устойчивость пакета к ошибкам в той или иной подсистеме, а также поднимает общий уровень бе-зопасности пакета – за счёт разграни-чения прав доступа взлом одной под-системы не оказывает столь сильно-го влияния на сервер в целом. При-чём нужно заметить, что все програм-мы, кроме MCP, реализованы с подде-ржкой многопоточности.

На рисунке представлена струк-турная схема MeTA1. Входящие сооб-щения обрабатываются программой smtps (SMTP-сервер), в задачи кото-рой входит приём входящих сообще-ний и их помещение в очередь. Взаи-модействующий с SMTP-сервером, мо-дуль SMAR (address resolver) выполня-ет «прогон» адресов получателя и от-правителя по базам access, aliases, mailertable и т. д. В его же юрисдик-цию входит и реализация «грейлис-тинга», о которой чуть подробнее чи-тайте дальше.

Очередь представляет собой не-сколько хранилищ. Содержимое пи-сем, включая информацию заголов-ков, помещается на диск в так назы-ваемое хранилище контента (CDB);

MeTA1: почтовый сервер на новый лад

Мы уже привыкли к «великолепной четвёрке» – Sendmail, Postfix, Exim, qmail – на рынке открытых серверов электронной почты. Sendmail хоть и занимает первую строчку «хит-парада», всё же неуклонно теряет свои позиции. Но команда разработчиков, похоже, не собирается так просто сдаваться...

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

Page 47: 049 Системный Администратор 12 2006

45№12, декабрь 2006

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

информация конверта входящих сооб-щений (передаваемая в командах MAIL и RCPT в процессе SMTP-диалога) по-падает во входящую очередь, разме-щаемую в оперативной памяти (IQDB), и дублируется на диск в так называе-мое «резервное» хранилище (IBDB). Управляет очередью программа qmgr (менеджер очереди).

Если сообщение должно быть пере-дано удалённому получателю, то дан-ные его конверта перемещаются в ак-тивную очередь (AQ), которая периоди-чески обрабатывается планировщиком менеджера QMGR. Когда планировщик принимает решение об отправке дан-ного сообщения, его содержимое из CDB вместе с «конвертной» информа-цией передаётся SMTP-клиенту (про-грамма smtpc). Если отправка завер-шается успешно, информация конвер-та передаётся в IBDB для протоколиро-вания, а само сообщение из CDB уда-ляется. В случае ошибки сообщение (точнее, конверт плюс некоторая слу-жебная информация) переносится на диск в очередь отложенных сообще-ний (DEFEDB), и попытки повторной отправки предпринимаются позже – как только сообщение «отлежится» в DEFEDB определённое время, плани-ровщик вновь переносит его в AQ.

Координацией работы всех моду-лей занимается менеджер MCP, кото-рый, собственно, и превращает всю эту россыпь отдельных программ в еди-ное целое.

На данный момент в пакет MeTA1 не включены агенты локальной до-ставки (LDA) и submission-агент (MSA). Но для построения полнофункциональ-ной системы, способной взаимодейс-твовать с локальными пользователя-ми, необходимый функционал можно обеспечить сторонними программа-ми, совместимыми с Sendmail. Напри-мер, в качестве LDA вполне можно ис-пользовать procmail (в каталоге contrib архива исходных текстов MeTA1 мож-но найти пару патчей для эффективной работы по протоколу LMTP).

Для обработки исходящих сообще-ний требуется либо клиент, умеющий работать непосредственно по прото-колу SMTP, либо сторонняя MSA-про-грамма (например, в этой роли может работать Sendmail; можно найти и от-дельные программы на эту роль, такие как mini_sendmail).

Второе заметное изменение – формат конфигурационного файла. Он стал «Си-подобным» (популярный ныне XML-синтаксис Асмана, видимо, не вдохновил), и в нём для каждой под-системы задаётся своя «подконфигу-рация». Все настройки сосредоточены в файле /etc/meta1/meta1.conf. В нём можно задать глобальные парамет-ры (такие, как имена коммуникацион-ных сокетов для взаимодействия час-тей системы) и секции параметров от-дельных модулей. Например, так за-даётся конфигурация SMTP-сервера по умолчанию:

Здесь задаются параметры прото-колирования работы модуля (первые два параметра), номер группы для до-ступа к CDB, информация о прослу-шиваемом сокете, имя пользователя, путь к «бинарнику», параметры, с ко-

торыми он будет запускаться... Пожа-луй, это понятнее и удобнее в работе, чем различные «фичи» и «опции» при-вычного нам mc-файла.

Таким же образом задаются на-стройки для остальных модулей: smtpc, qmgr, smar... По умолчанию устанавли-вается вполне работоспособная кон-фигурация; подробности по тем или иным параметрам вы всегда сможете найти в README-файле.

Кстати, MeTA1 позволяет очень просто запустить несколько однотип-ных модулей с различными парамет-рами, для чего достаточно задать не-сколько «именованных» секций для со-ответствующего модуля:

Например, таким образом можно организовать работу сервера на раз-личных портах (в «дефолтном» фай-ле конфигурации показан пример за-пуска двух экземпляров сервера – один как MTA на 25-м порту, другой – на порту 587).

Отмечу ещё некоторые новшес-тва. Например, MeTA1 намного про-ще заставить работать в chroot-окру-жении. Хотя если учесть, что с пра-вами суперпользователя теперь ра-ботает лишь mcp, прослушивающий

Структура MeTA1

smtps { log_level = 11; log { facility=mail; ↵ ident="smtps"; } CDB_gid = 262; wait_for_server = 4; listen_socket { type=inet; ↵ port = 25; } start_action = pass; pass_fd_socket = smtps/smtpsfd; user = smxs; path = "/usr/local/libexec/smtps"; arguments = "smtps -f ↵ /etc/meta1/meta1.conf";}

Версии MeTA1Sendmail X 0.0.0.0 увидел свет 30 октяб-ря 2005 года. Буква «X», видимо, наме-кала на то, что этот пакет вполне может со временем стать версией Sendmail 9 или Sendmail 10, в зависимости от готов-

ности... В конце 2006 года ветвь 1.0 бы-ла выделена в «отдельное производс-тво», получив наименование MeTA1. На мо-мент написания статьи текущей была вер-сия 1.0.PreAlpha12.0, вышедшая 11 ноября 2006 года. Сайт проекта – www.meta1.org.

smtps SERV1 { ... }smtps SERV2 { ... }

Page 48: 049 Системный Администратор 12 2006

46

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

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 технологии противостояния спаму.

Лучше один раз попробовать...Посмотрим на практике, что же из себя представляет MeTA1 – на примере версии 1.0.PreAlpha12.0. Очевидно, что на данном этапе разработки речь не идёт ни о преком-пилированных пакетах, ни даже о присутствии этой про-граммы в коллекции портов. Так что единственный способ «пощупать» это творение Клауса Асмана – сборка из ис-ходных текстов.

Несмотря на раннюю версию, ни-каких проблем ни с компиляцией, ни с установкой не возникло – ин-сталляция прошла безошибочно и на FreeBSD 6.1, и на моей домашней Ubuntu 6.06. Единственный момент, о котором нужно не забыть, – это то, что вам предстоит вручную сформи-ровать требуемую «инфраструктуру», в частности, создать учётные записи необходимых для работы пользовате-

лей и соответствующие группы.Используйте для этого принятые в вашей системе инс-

трументы; результат должен быть таким:

Если в вашей системе есть утилита getent, то для досту-па к информации, хранящейся в административных базах, правильней будет использовать её.

После этого основные операции установки выполняют-ся стандартным образом: распаковка архива с исходника-ми, переход в полученный каталог, конфигурация (сцена-рию configure, как обычно, можно передать ряд парамет-ров, влияющих на поддержку тех или иных функций, та-ких как SASL или BDB; подробности см. в документации), сборка, инсталляция. Но, поскольку мы имеем дело с до-статочно ранней версией, после сборки рекомендуется вы-полнить тесты:

В файле README указывается на некоторые «типич-ные» ошибки. Например, одна из них – t-hostname – воз-никает, когда не удаётся определить полное имя хоста (full qualified host name, FQHN). Если вы тестируете MeTA1 на машине, которой не требуется такое имя, то чтобы не по-лучать ошибку, просто внесите в /etc/hosts что-нибудь по-хожее на FQHN:

После этого все тесты должны пройти нормально (у меня время от времени проскакивала ошибка t-dns-1, но на неё можно не обращать особого внимания – она лишь гово-рит о том, что некоторые DNS-запросы не «уложились» в отведённые для них по умолчанию интервалы времени). Теперь осталось завершить установку:

$ make check

127.0.0.1 localhost toshiba toshiba.notebook.my

$ sudo make install

# grep smx /etc/passwd

meta1s:*:260:260:meta1 SMTPS:/nonexistent:/sbin/nologinmeta1q:*:261:261:meta1 QMGR:/nonexistent:/sbin/nologinmeta1c:*:262:262:meta1 SMTPC:/nonexistent:/sbin/nologinmeta1m:*:263:263:meta1 misc:/nonexistent:/sbin/nologinmeta1:*:264:264:meta1 other:/nonexistent:/sbin/nologin

# grep smx /etc/group

meta1s:*:260:meta1q:*:261:meta1c:*:262:meta1smeta1m:*:263:meta1s,meta1qmeta1:*:264:

ДокументацияМетод «научного тыка», безусловно, один из самых популярных и порой да-же весьма эффективен, но всё же луч-ше иметь под рукой официальное руко-водство. Man-страницы помогут быст-ро окинуть взглядом основные ключи за-пуска той или иной программы, входящей в пакет. В дистрибутиве их 7: meta1(8),

meta1.conf(5), mcp(8), qmgr(8), smar(8), smtpc(8) и smtps(8). Но всё же основ-ным источником информации на данный момент остаётся файл README. В дис-трибутиве он поставляется в самых раз-личных форматах – txt, pdf, html, tex и т. п. Найти его (наряду с др-угими документа-ми) можно на домашней странице проек-та – www.meta1.org.

Page 49: 049 Системный Администратор 12 2006

47№12, декабрь 2006

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

По умолчанию все конфигурационные файлы будут со-средоточены в каталоге /etc/meta1. Если вам доводилось работать с Sendmail, то из «старых знакомых» сразу пос-ле инсталляции вы встретите здесь лишь файл псевдони-мов – aliases. Остальное – access, mailertable и т. д. – при не-обходимости придётся создавать вручную. Для быстрого и лёгкого создания хэш-таблиц для этих файлов предус-мотрен Makefile, то есть после внесения изменений доста-точно лишь выполнить команду make.

Все необходимые для работы каталоги (в частнос-ти, очередь, которая будет размещена по умолчанию в /var/spool/meta1) должны быть созданы автоматически в процессе инсталляции. Так что уже можно попробовать запустить сервер.

Стартовый скрипт размещается по умолчанию в доволь-но непривычном месте – в /var/spool/meta1, там же, где и оче-редь. Называется он mcp.sh и принимает в качестве пара-метра команды start, stop и restart. Им и воспользуемся:

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

Убедиться в том, всё ли запустилось, можно, просмот-рев список запущенных процессов:

Как видите, с правами root исполняется только «дис-петчер» mcp (другие модули вы и не сможете запустить от имени суперпользователя). Но ему по-другому и нельзя – он должен иметь достаточные права для работы на приви-легированном порту. Ключ -l указывает на то, что работа сервера будет протоколироваться (по умолчанию исполь-зуется syslog); -p сообщает имя pid-файла (опять-таки раз-мещаемое в /var/spool/meta1; хотя может так и удобнее, ког-да всё, относящееся к работе почтового сервера, сосредо-точено в одном месте). Последним параметром передаёт-ся полный путь к основному конфигурационному файлу. При желании эти ключи можно изменить непосредственно в mcp.sh (никто не мешает вам создать свой сценарий за-пуска или даже вызывать программу mcp вручную).

Остальные программы пакета работают с правами своего отдельного пользователя. Они запускаются моду-лем mcp, так что вам об этом беспокоиться не нужно. Пе-редаваемые параметры при необходимости можно подпра-вить в meta1.conf.

Если что-то пойдёт не так, то первым делом загляните в лог-файлы. Поскольку MeTA1 по умолчанию протоколи-рует свою работу, используя syslog, то имена и состав лог-файлов будут определяться настройками в /etc/syslog.conf. В Ubuntu это четыре файла в /var/log (хотя фактически три, поскольку mail.info и mail.log дублируют друг друга, что, ес-

тественно, всегда можно подправить в конфигурацион-ном файле):

Одна из наиболее вероятных причин проблем с запус-ком (обычно о ней свидетельствуют массовые записи типа «Permission denied») – ошибки в создании учётных записей нужных пользователей и групп. Например, это может быть вызвано неверно установленным UID или отсутствием нуж-ного пользователя в «чужой» группе (например, meta1s дол-жен входить помимо своей группы meta1s также и в груп-пы meta1m и meta1c). Наличие пользователей, кстати гово-ря, можно проверить с помощью входящего в дистрибутив скрипта misc/sm.check.sh:

Правда, он не проверяет вхождение пользователей в нужные группы, так что об этом вам придётся позабо-титься самостоятельно. Если придётся подправлять пра-ва доступа к уже созданным файлам и каталогам, сверь-тесь с файлом README, где подробно расписано, что ко-му должно принадлежать и с какими правами.

Нужно заметить, что MeTA1 более строго относится к стандартам. Например, во время SMTP-сеанса такой воль-ности, как «mail from: [email protected]» он не допустит, руг-нувшись про «501 5.1.7 Bad sender’s mailbox address syntax». Адрес должен непременно быть в виде <[email protected]>, причём пробел между двоеточием и открывающей угло-вой скобкой не допускается.

Для адреса отправителя (точнее, для его доменной час-ти) выполняется разрешение имени, и в случае неудачи ад-рес не принимается. Для адреса получателя такая провер-ка не выполняется.

В остальном типичный SMTP-сеанс с сервером будет выглядеть как обычно, не считая того, что текстовые пояс-нения даются, скорее, в порядке соблюдения формальнос-тей, а не для того, чтобы действительно что-то пояснить то-му странному пользователю, который надумает поработать с SMTP-сервером через telnet.

Ждём релизаИтак, на данный момент MeTA1, несмотря на очень скром-ный номер версии и альфа-статус, уже выглядит весьма достойно. Во время небольшого тестирования каких-либо ошибок и сбоев выявлено не было. Хотя на «боевой» сер-вер я пока что ставить этот пакет повременю.

Задумка разработчиков понятна – опираясь на собс-твенный опыт и опыт конкурирующих SMTP-серверов, воб-рать в пакет всё самое лучшее и, по возможности, исклю-чить любые недостатки. Пока что промежуточный результат выглядит неплохо. Что получится в итоге – увидим. Я лич-но с нетерпением жду первого релиза.

# cd /var/spool/meta1# ./mcp.sh start

# ps axouser,command | egrep "mcp|qmgr|smtp|smar"

root /usr/local/sbin/mcp -l -p mcp.pid /etc/meta1/meta1.confmeta1m smar -f /etc/meta1/meta1.confmeta1q qmgr -f /etc/meta1/meta1.confmeta1c smtpc -f /etc/meta1/meta1.confmeta1s smtps -f /etc/meta1/meta1.conf

$ cd /var/log$ ls -l mail.*

-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

$ cd meta1-1.0.PreAlpha12.0/misc$ ls -l mail.*

./sm.check.sh: pre-installation check successful

Page 50: 049 Системный Администратор 12 2006

48

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

Идеологический вызовLinux XP Desktop – тот случай, когда прежде чем приступить к непосредс-твенному описанию дистрибутива (пусть разработчики Linux XP и не хо-тят называть свой продукт «дистрибу-тивом», а предпочитают позициониро-вать его как «готовое решение», я счи-таю более чем уместным именно такое общепринятое определение), предла-гаю разобраться с тем, как смотрят на мир свободного и открытого про-граммного обеспечения авторы проек-та. Идеология, которой придерживают-ся в LINUX-ONLINE, идет вразрез мно-гим широко принятым в сообществе представлениям о таких ключевых ве-щах, как GNU GPL, Linux и Open Source. Дебютируя, компания получила много критики в свой адрес, однако от ради-кальных взглядов не отказалась.

Для того чтобы понять, чем было вызвано возмущение сообщества, до-статочно бегло ознакомиться с «Мани-фестом Linux XP Desktop» [1], где ав-торы легко и непринужденно крити-куют привычные аспекты FOSS, кото-

рые им видятся неудобными для мар-кетинга. В частности, в манифесте за-является, что для десктопов «UNIX-way мертв, а Windows-way победил», «пов-семестная доступность исходных ко-дов непродуктивно умножает число программ и раздробляет Linux-сооб-щество» и «в Linux необходима силь-ная коммерческая составляющая».

Многие, наверное, полагали, что из-за такой смелой идеологии, способной довести до состояния гневного кипе-ния мозг любого в той или иной мере фанатичного члена FOSS-сообщест-ва, проект вскоре самостоятельно ка-нет в Лету. По принципу «нечего ру-бить сук, на котором сидишь». Одна-ко практика (пока?) показывает обрат-ное: Linux XP Desktop здравствует, раз-вивается и активно внедряется (при-чем, что еще удивительнее, не только на территории России).

В общем, невзирая на предсказу-емую реакцию со стороны всех, кто убежден в необходимости строгого следования распространенным в со-обществе принципам («free as in free

speech», UNIX-way и т. п.), разработ-чикам удалось добиться своего. Бро-сив идеологический вызов сторонни-кам Свободных идей, компания со-здала конкурентоспособное реше-ние на базе GNU/Linux и проприетар-ных разработок. Разумеется, со своей спецификой, своей аудиторией и сво-ими целями, но от этого проект только выигрывает на фоне множества одно-образных и бесперспективных люби-тельских дистрибутивов, продолжаю-щих плодиться неразумными темпа-ми. А вот насколько получится таким образом приблизиться к «потрясаю-щим результатам», заявленным в ма-нифесте, покажет время. Мы же пос-мотрим на то, что есть сейчас.

Общее о дистрибутивеLinux XP Desk top основывается на Fedora Core, что, как гласит над-пись на коробке, гарантирует «полную совместимость с мировым лидером – Red Hat Linux». Хотя и заявлена сов-местимость с Fedora Core 4 и 5, вер-сии входящего в состав дистрибутива

Делимся впечатлениями о дистрибутиве Linux XP Desktop

Минувшей осенью российская компания LINUX-ONLINE выпустила обновление к своему Linux-дистрибутиву Linux XP Desktop – 2006 SR2, напомнив сообществу о своих оригинальных подходах к Linux-бизнесу.

Дмитрий Шурупов

Page 51: 049 Системный Администратор 12 2006

49№12, декабрь 2006

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

программного обеспечения зачастую соответствуют FC3. Например, в ка-честве графической среды по умол-чанию используется не совсем акту-альная на сегодняшний день версия GNOME – 2.8.0.

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

Linux XP распространяется в не-скольких редакциях: Start Edition (1 ус-тановочный CD с Linux XP Desktop), Professional (5 CD, помимо устано-вочного это «Additional Software», «GamePack», «Developer Studio», «HomeMedia»), Ultra (2 DVD со множес-твом дополнительных пакетов из раз-личных общедоступных репозитариев Fedora Core).

Базовый образ Linux XP можно скачать [2], а коробку с редакцией Professional купить, например, в Линукс-Центре [3] или в магазине ИДДК [4].

Загрузка и установкаПервая загрузка с установочного ком-пакт-диска приветствовала меня вов-се не красочной и дружелюбной за-ставкой GRUB, как логично было бы ожидать... А позиционированным не самым лучшим образом на экра-не приглашением «boot:» с фрагмен-том белого фона. И, собственно, все – как пользоваться какими-либо допол-нительными опциями и есть ли они во-обще, не узнать. Впрочем, не такая уж это и помеха: банальное нажатие на <Enter> инициализировало процесс установки.

Стартовавший инсталлятор встре-тил уже дружелюбно, «на уровне». Он представляет собой полностью ру-сифицированную версию Anaconda, которая давно служит верой и прав-дой дистрибутивам Red Hat и ее про-изводным.

Используется Anaconda или нет, а установка среднестатистической GNU/Linux-системы (особенно если ее не классифицируют как «ОС для про-фессионалов») давно перестала быть

сложной задачей даже для новичков, и Linux XP это в очередной раз под-тверждает.

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

Система как она естьПосле перезагрузки, последовавшей за последним этапом инсталляции, система встретила уже более адек-ватным GRUB (небольшое смещение видимой части экрана пропадало при нажатии любой клавиши для вызо-ва меню, а фон приобрел фирменный оттенок синего). Удивило, что загруз-ка системы осуществлялась в консоль-ном режиме: следуя идеологии, зало-женной в Linux XP, это, по-моему, не-логично: зачем пользователю смотреть на такое обилие «странной» информа-ции? Да, основная часть сообщений переведена на русский язык, но во-первых, не все, а во-вторых, очевидно, целевой аудитории привычнее было бы наблюдать за процессом в графичес-ком режиме (например, как это сейчас происходит в Ubuntu Linux).

Стартовал gdm, не спросив ни ло-гина, ни пароля, и вскоре взору пред-стал... вообще-то, конечно, GNOME, но своим внешним видом не просто на-

поминающий Windows XP, а тщательно стилизованный под привычный поль-зователям продукции Microsoft интер-фейс. Выражается это и в стандартной теме, и в иконках «Компьютер», «До-машний каталог» и «Корзина» на ра-бочем столе, и особенно до боли зна-комой кнопкой «Start» на панели в ниж-нем левом углу. Причем меню, вызы-ваемое этим «Пуском», тоже было пе-реработано с тем, чтобы вызвать на-именьший конфуз у не подготовлен-ного к любым новшествам человека, впервые запустившего не Windows. Все иконки и соответствующие эле-менты не должны вызвать удивления у тех, кто привык, что в самом низу обязательно располагается вариант с функцией завершения работы, чуть выше – последние открытые докумен-ты, затем выполнение произвольных команд из консоли, поиск по файлам и так далее.

Принцип упрощения и «подведе-ния под привычное» затронул и многие другие аспекты системы – собствен-но, это и есть «изюминка» дистрибу-тива. «Подведения», например, удос-тоились и системные апплеты в трее, такие как сетевые подключения и на-стройка звука, в которых при вызо-ве конфигурации вызываются утили-ты, внешне полностью напоминаю-щие аналоги в Windows, но оставаясь при этом вполне «линуксовыми». Инте-ресный получился гибрид, но главное – достойно функционирующий.

Стандартный рабочий стол Linux XP Desktop

Page 52: 049 Системный Администратор 12 2006

50

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

Работа в системе осуществляет-ся с правами суперпользователя root, для которого даже не нужно вводить пароль при загрузке системы. Несом-ненно, это повергнет в шок заботя-щихся о безопасности линуксоидов. Однако это прямое и логичное следс-твие заявленного подхода разработ-чиков к созданию своего Linux-продук-та: десктоп-пользователю нужна сис-тема, которая «просто работает». По-лучается, что и развитый многополь-зовательский режим, обеспечивае-мый на уровне ядра ОС, по-хорошему тоже не нужен...

Хоть в последнее время GNU/Linux-системы и достаточно успешны в под-держке различной аппаратуры, отде-льно отмечу, что у меня никаких про-блем с железом не возникло. В част-ности, установленная система воспро-изводила звук, позволяла без задерж-ки смотреть видео и играть в трехмер-ные игры. К этому стоит добавить, что аналогично «из коробки» проинстал-лировались наиболее часто использу-емые кодеки (аудио и видео).

Панель управленияПовод познакомиться с панелью уп-равления у меня появился быстро: первый видимый недостаток – это не-красивые русские шрифты по умолча-нию, а в памятке пользователю, при-лагающейся к коробке, сообщалось, что эта проблема решается обновле-нием системы.

В трее и в меню «Star t» мож-но легко найти «Панель управления Linux XP». То, что я увидел после его запуска, вновь напомнило мне об ана-логичной панели в известной опера-ционной системе, но нельзя сказать, что удивило или расстроило. Наобо-рот, зрелище предстало ожидаемое и на первый взгляд впечатляющее – «все как там».

Все разбито на 6 главных катего-рий: внешний вид, оборудование, сеть, язык и стандарты, пользователи, при-ложения. В каждой из них собраны все подходящие утилиты: как сторонние

вроде gnome-pilot для «обмена с КПК Palm» в разделе «Оборудование» и system-config-network для «настрой-ки сети» в разделе «Сеть», так и собс-твенные вроде «активации» и «добав-ления и обновления программ» в сек-ции «Приложения». Несмотря на ка-жущийся сумбур в плане совершен-но разнородных приложений (родные от проекта GNOME, конфигураторы от Red Hat, свои разработки на Java), надо признать, что если при рабо-те со всем этим, может, и не захлес-тывает всепоглощающее чувство це-лостности системы администрирова-ния, то во всяком случае не возника-ет неприязни или чувства неудобства. Конечно, есть что доработать и усо-вершенствовать, но все не так плохо, как можно было ожидать.

Обновление системы проходит просто и быстро. Уже упомянутый мас-тер установки/обновления программ первым шагом предлагает выбрать, что будет устанавливаться: дополни-тельное ПО или обновления компо-нентов системы. Соответственно, пос-ле выбора второго варианта и двук-ратного нажатия на «Далее», ожида-ния закачки и установки необходимого ПО проблема со шрифтами решилась. Правда, немного расстроило требова-ние перезагрузить компьютер для то-го, чтобы обновление возымело дейс-твие (ведь рестарта X-сервера долж-но хватать?). Этот момент напомнил о том, что, как бы кто ни старался, по-

Панель управления Linux XP

Приложения для работы со звуком в Linux XP

Page 53: 049 Системный Администратор 12 2006

51№12, декабрь 2006

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

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

Пакеты для такого обновления системы берутся с родного сервера Linux XP, и возможности указать аль-тернативные репозитарии я не уви-дел. Хотя в конфигурации yum (/etc/yum.repos.d/lxp.repo) заданы пути к зеркалам с обновлениями к Fedora Core (кстати, версии 3).

Программное обеспечениеВероятно, следуя своему манифесту («... конечному пользователю не нуж-но несколько десятков «почти работа-ющих» программ, ему нужна одна, но работающая на 100% ...»), разработ-чики постарались оставить в Linux XP Desktop только самые необходимые пользователю настольного ПК и са-мые зрелые на их взгляд программы. Впрочем, вопрос, насколько карди-нально это решение отличает их от ав-торов многих других десктоп-ориенти-рованных 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; интересно, что принцип «одной рабо-тающей программы» почему-то не был распространен на напрямую конкури-рующие видеоплейеры), TV-плейер tvtimer, аудиоплейер Rhythmbox, ра-диоплейер GQradio, программа аудио-записи gnome-sound-recorder, проигры-ватель аудиодисков gnome-cd. Для ра-боты с графикой есть просмотрщик gThumb, утилита для работы с фото-камерами gtkam, традиционный ре-дактор GIMP.

Из офисного ПО в однодисковой версии Linux XP есть лишь редактор диаграмм Dia. Сюда же можно отнести словари StarDict и стандартный gnome-

dictionary. Интернет-приложения стан-дартны: веб-браузер Mozilla Firefox, почтовый клиент Evolution, клиент об-мена сообщениями Gaim, ПО для ви-деоконференций GnomeMeeting, IRC-клиент X-Chat, терминальный клиент Terminal Server Client (GUI-надстрой-ка над rdesktop и vncviewer) и p2p-кли-ент aMule.

О т к р ы т ы й о ф и с н ы й п а к е т OpenOffice.org я качать не решился и без проблем установил со второго CD («Additional Software»). Там нахо-дится русифицированная вторая вер-сия OOo в сборке от Инфра-Ресурс.

Инсталляция программ с родных до-полнительных дисков проводится эле-ментарно: после того, как CD вставлен в привод, необходимо на нем найти каталог с нужным пакетом и (как пра-вило) запустить файл setup.jar. Тогда появляется меню выбора нужной ло-кализации, а последующая установ-ка заключается в 2-кратном нажатии на кнопку «Далее» и опциональной возможности добавления «ярлыков».

Из прочих дополнительных про-граммных пакетов на дисках выделю драйверы для видеокарт от NVIDIA и ATI, Crossover (коммерческое ПО

Интернет-ПО в поставке Linux XP

Установка OpenOffice.org с компакт-диска

Page 54: 049 Системный Администратор 12 2006

52

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

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

Похожий момент возник в процес-се установки 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: / /www.l inux-onl ine.ru /desktop /download.php.

3. Linux XP Pro в ЛинуксЦентре – http://www.linuxcenter.ru/goods/1313.html.

4. Linux XP Pro в магазине ИДДК – http://shop.iddk.ru/cdrom/62055.html.

OpenOffice.org в работе

Page 55: 049 Системный Администратор 12 2006
Page 56: 049 Системный Администратор 12 2006

54

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

ПрелюдияСегодня подробно рассматрим хране-ние зон BIND в PostgreSQL. Этот метод хранения зон позволяет динамически добавлять зоны и записи в них, а так-же обновлять содержимое зон.

В качестве внешнего хранилища можно также использовать MySQL, OpenLDAP, BerkeleyDB, ODBC, который предоставляет хранить зоны в любой СУБД, и т. д.

Основными достоинствами мето-дов хранения являются:

Возможность обновлять содержи-мое зон без перезапуска.

Экономия оперативной памя-ти (при запуске named считывает все зоны из файлов, при большом количестве зон и записей в них это занимает достаточно много оперативной памяти и времени).

Более высокое быстродействие по сравнению с хранением зон в файлах (результаты тестов мож-но посмотреть на http://bind-dlz.sourceforge.net/perf_tests.html).

Существует две реализации драй-веров для хранения зон во внешних хранилищах – DLZ и SDB.

DLZ-драйверы не входят в стан-дартный набор исходных текстов BIND. Они более гибкие в настройке и подде-рживают широкий набор внешних хра-нилищ. Техническую документацию по настройке DLZ-драйверов вы можете найти на http://bind-dlz.sourceforge.net.

SDB-драйверы входят в стандарт-ный набор исходных текстов BIND и со-держат инструменты для автоматизи-

Интеграция BIND + PostgreSQL

Многие провайдеры используют BIND в качестве DNS-сервера. Но иногда возникают проблемы с добавлением зон и записей в них, и это приводит к перезапуску сервера, что крайне нежелательно из-за возможных ошибок при обработке клиентских DNS-запросов. Чтобы предотвратить перезапуск DNS-сервера BIND, целесообразно использовать внешние хранилища (MySQL, OpenLDAP, PostgreSQL и т. д.).

Сергей Алаев

Page 57: 049 Системный Администратор 12 2006

55№12, декабрь 2006

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

рованной интеграции зон из файлов в базу данных. К недо-статкам такого способа хранения зон можно отнести под-держку только master-зон.

Рассмотрим обе реализации. В Fedora Core Linux есть rpm-пакет bind-sdb с поддержкой необходимых драйверов SDB. Сначала рассмотрим метод интеграции с помощью драйвера SDB. К сожалению, во FreeBSD нет интегриро-ванного порта BIND с поддержкой SDB PostgreSQL, поэто-му устанавливать будем из исходных текстов.

Установка PostgreSQLИтак, приступим.

Собираем PostgreSQL из портов:

Создадим каталог для размещения баз данных с пра-вами на pgsql:

Зададим параметры запуска PostgreSQL в rc.conf, ко-торые будут использоваться при инициализации класте-ра баз данных:

Инициализируем кластер баз данных:

Далее правим главный конфигурационный файл, где указываем IP, на котором будет работать сервер:

Для версии 7.x необходимо указать:

Для запуска PostgreSQL выполните команду:

Установка и настройка BIND на использование SDB-драйвераПриступаем к установке BIND. Устанавливаем порты gettext и libiconv из раздела devel общего дерева портов, которые необходимы для нормальной компиляции BIND.

Закачиваем и распаковываем исходные тексты:

Драйвер SDB находится в contrib/sdb/pgsql. Для успеш-ной компиляции BIND с поддержкой этого драйвера необ-ходимо включить его исходный код в исходный код серве-ра named.

Для компиляции драйвера также будут необходимы биб-лиотеки и файлы заголовков PostgreSQL, поэтому надо бу-дет уточнить в pgsqldb.c их точное месторасположение от-носительно общих путей расположения библиотек и заго-ловков(/usr/local/lib, /usr/local/include). Общие пути располо-жения задаются позже с помощью патча.

Правим pgsqldb.c:

Для добавления драйвера скачиваем скрипт и патч в корневое дерево исходных текстов и выполняем его с по-мощью скрипта (патч и скрипт смотрите в разделе «Исход-ный код» на сайте журнала http://www.samag.ru):

Приступаем к компиляции и установке сервера:

Приступаем к настройке сервера.Рассмотрим простую конфигурацию сервера:

Разрешаем передачу зон для 192.168.7.2, т.к. с этого ад-реса будем тестировать наш DNS-сервер.

Строка «database “pgsql bind zone_192_168_7 127.0.0.1 bind 123456”;» определяет параметры хранения зоны в PostgreSQL в следующем порядке:

# cd /usr/ports/databases/postgresql80-server# make && make install

# cd /var/db# mkdir pgsql# chmod 700 pgsql && chown pgsql:pgsql pgsql

# mcedit /etc/rc.conf

postgresql_enable=”YES”postgresql_user=”pgsql”postgresql_data=”/var/db/pgsql”

# /usr/local/etc/rc.d/010.pgsql.sh initdb

# mcedit /var/db/pgsql/postgresql.conf

listen_addresses=’localhost’

tcpip_socket = truevirtual_host = ‘127.0.0.1’

# /usr/local/etc/rc.d/010.pgsql.sh start

# 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

# mcedit contrib/sdb/pgsql/pgsqldb.c

// Заменяем строку «# include <pgsql/libpq-fe.h>» на #include <libpq-fe.h>// Заменяем строку «# include “pgsqldb.h”» на# include “named/pgsqldb.h”

# ./add_pgsqldb.sh

# ./configure --prefix=/usr/local && make && make install

# 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; }; };

Page 58: 049 Системный Администратор 12 2006

56

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

bind – имя базы данных; zone_192_168_7 – имя таблицы, где хранится содержи-

мое зоны; 127.0.0.1 – IP-адрес, на котором слушает сервер

PostgreSQL; bind – имя пользователя для соединения к серверу

PostgreSQL; 123456 – пароль для пользователя BIND.

Приступаем к созданию баз данных:

Cоздаём пользователя bind:

Cоздадим базу данных для хранения зон:

Скомпилируем утилиту для автоматического добавле-ния зоны из файла в базу:

Допустим, у нас имеется файл зоны example.net следу-ющего содержания:

Для добавления воспользуемся утилитой zonetodb. Для соединения с базой данных она использует в качест-ве значений имени пользователя, хоста значения перемен-ных PGHOST, PGUSER. Название таблицы и базы данных указывается при использовании утилиты.

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

Задаём имена хоста и пользователя:

где первый параметр – это название зоны (заканчивает-ся обязательно точкой), второй – имя файла содержимо-го зоны, третий – база данных, четвёртый – имя таблицы, где хранится содержимое зоны.

Утилита сама создаст таблицу и добавит содержимое зоны автоматически (см. рис. 1).

Добавим зону обратного просмотра.

# psql –h 192.168.7.1 -d template1 -U pgsql

template1=# CREATE USER bind WITH SYSID 100 PASSWORD '123456'

NOCREATEDB NOCREATEUSER;

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

# export PGHOST=127.0.0.1# export PGUSER=bind# /usr/local/bin/zonetodb example.net. ↵ example.net.hosts bind zone_example_net

Рисунок 1. Добавление зоны из файла в базу данных

# mcedit 192.168.7.rev

$ttl 384007.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

Рисунок 2. Тестирование SBD-драйвера

# mcedit /etc/namedb/example.net.hosts

$ttl 38400example.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.1freebsd.example.net. IN A ↵ 192.168.7.1boss.example.net. IN A ↵ 192.168.7.2semen.example.net. IN A ↵ 192.168.7.3ignat.example.net. IN A ↵ 192.168.7.4www.example.net. IN CNAME ↵ freebsd.example.net.example.net. IN MX ↵ 50 freebsd.example.net.example.net. IN MX ↵ 100 boss.example.net.

Page 59: 049 Системный Администратор 12 2006

57№12, декабрь 2006

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

Настраиваем параметры запуска BIND:

Также необходимо настроить приоритеты загрузки, т.к. по умолчанию во время загрузки системы BIND запус-кается до PostgreSQL, что приведёт к ошибке, т.к. при запус-ке он будет устанавливать соединения к PostgreSQL. Пра-вим стартовый скрипт PostgreSQL:

Данные комментарии используются для определения порядка запуска стартовых скриптов во время загрузки сис-темы. Рассмотрим назначение данных ключевых слов: # PROVIDE: – задает имя сервиса, предоставляемого

этим файлом. # REQUIRE: – список сервисов, необходимых этому сер-

вису. Этот файл будет запущен после указанных серви-сов.

# BEFORE: – список сервисов, зависящих от этого сер-виса. Этот файл будет запущен до указанных серви-сов.

# KEYWORD: – FreeBSD или NetBSD. Используется для функций, зависящих от версии *BSD.

За более подробной информацией обращайтесь к спра-вочному руководству FreeBSD. Запускаем BIND:

Тестируем наш сервер с помощью утилиты nslookup (см. рис. 2).

Установка и настройка BIND на использование DLZ-драйвераРассмотрим использование драйвера DLZ.

Собираем BIND из портов:

В окне конфигурации отмечаем нужный нам PostgreSQL (см. рис. 3).

Приступаем к конфигурированию BIND.

Обратите внимание, при создании конфигурацион-ного файла в настройках DLZ-драйвера очень важен по-рядок строк, т.к. сервер считывает SQL-запросы в спе-циальном порядке и в этом же порядке определяет, ка-кой SQL-запрос использовать при обработке клиентских DNS-запросов.

Создадим базу данных и таблицу для хранения зон:

Создаём пользователя 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”

# mcedit /usr/local/etc/rc.d/010.pgsql.sh

# PROVIDE: postgresql# REQUIRE: NETWORKING SERVERS# KEYWORD: FreeBSD shutdown# BEFORE:

# /etc/rc.d/named start

# cd /usr/ports/dns/bind9-dlz# make clean && make && make install

# 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;

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%'}";};

# psql –h 192.168.7.1 -d template1 -U pgsql

template1=# CREATE USER bind WITH SYSID 100 PASSWORD '123456'

NOCREATEDB NOCREATEUSER;

template1=# CREATE DATABASE bind WITH OWNER = bind;

template1=# \c bindbind =# 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;

Page 60: 049 Системный Администратор 12 2006

58

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

Создадим индексы для поиска по полям host, type, zone:

Создадим таблицу для хранения разрешений на полу-чение содержимого зоны:

Приступаем к добавлению зон. В качестве примера бу-дем использовать те же зоны, что и при описании SDB-драй-вера.

Рассмотрим зону прямого просмотра.Добавим SOA-запись:

Добавим NS-запись:

Добавим A-записи:

Добавим CNAME-запись:

Добавим MX-записи:

Рассмотрим зону обратного просмотра.Добавим SOA-запись:

Добавим NS-запись:

Добавим PTR-записи:

Разрешим клиенту 192.168.7.2 (с него мы будем тести-ровать сервер) получать содержимое данных зон:

Параметры запуска и приоритеты загрузки задаём ана-логично первому примеру.

Приступаем к тестированию BIND. Запускаем BIND:

Тестируем наш сервер с помощью утилиты nslookup (см. рис. 4). На этом всё. Удачи.

bind =# CREATE TABLE xfr_table( "zone" text, client text) WITH OIDS;

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);

bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', '@','NS','freebsd.example.net.')

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');

bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('example.net', ↵ 'www','CNAME','freebsd.example.net.');

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.');

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);

bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa', '@','NS', ↵ 'freebsd.example.net.');

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");

Рисунок 4. Тестирование DLZ-драйвера

bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa ', ↵ '1','PTR','freebsd.example.net.');bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa ', ↵ '2','PTR','boss.example.net.');bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa ', ↵ '3','PTR','semen.example.net.');bind =# INSERT INTO dns_records("zone", host, "type", data) ↵ VALUES ('7.168.192.in-addr.arpa ', ↵ '4','PTR','ignat.example.net.');

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');

# /etc/rc.d/named start

Рисунок 3. Конфигурация DLZ-драйвера

Page 61: 049 Системный Администратор 12 2006

59№12, декабрь 2006

bugtraq

Переполнение буфера в PHPПрограмма: PHP 4.0.x, PHP 4.1.x, PHP 4.2.x, PHP 4.3.x, PHP 4.4.x, PHP 5.0.x, PHP 5.1.x.Опасность: Критическая.Описание: Уязвимость существует из-за ошибки проверки границ данных в функциях htmlentities() и htmlspecialchars(). злоумышленник может передать специально сформирован-ные данные PHP-приложению, использующему уязвимые функции, вызвать переполнение буфера и выполнить про-извольный код на целевой системе.

Уязвимость позволяет перезаписать до 7 символов, внедряя некорректные UTF-8 символы в строку, которая будет обработана уязвимыми функциями. Символы огра-ничены 0x00, 0xc0-0xfd.URL производителя: www.php.net.Решение: Уязвимость устранена в последней версии PHP – 5.2.0.

Выполнение произвольного кода в Microsoft Visual Studio WMI Object Broker ActiveX-компонентеПрограмма: Microsoft Visual Studio 2005.Опасность: Критическая.Описание: Уязвимость существует из-за неизвестной ошиб-ки в WMI Object Broker ActiveX-компоненте (WmiScriptUtils.dll). Злоумышленник может выполнить произвольный код на це-левой системе с помощью специально сформированного веб-сайта, открытого в Internet Explorer.Примечание: уязвимость активно эксплуатируется в на-стоящее время.URL производителя: www.microsoft.com.Решение: В настоящее время способов устранения уяз-вимости не существует. В качестве временного решения производитель рекомендует установить kill-bit на уязви-мый ActiveX-компонент.

Выполнение произвольного кода в Microsoft XMLHTTP ActiveX-компонентеПрограмма: Microsoft Core XML Services (MSXML) 4.0.Опасность: Критическая.Описание: Уязвимость существует из-за некорректной обработки HTTP-запроса в функции setRequestHeader() в XMLHTTP 4.0 ActiveX-компоненте. Удаленный пользо-ватель может с помощью специально сформированной веб-страницы выполнить произвольный код на целевой системе.Примечание: уязвимость активно эксплуатируется в на-стоящее время.URL производителя: www.microsoft.com.Решение: В настоящее время способов устранения уяз-вимости не существует. В качестве временного решения производитель рекомендует установить kill-bit на уязви-мый ActiveX-компонент.

Несколько уязвимостей в Mozilla Firefox и Mozilla SeaMonkeyПрограмма: Mozilla Firefox версии до 1.5.0.8, SeaMonkey версии до 1.0.6.Опасность: Критическая.Описание: 1. Библиотека Network Security Services (NSS) содержит неполноценное исправление уязвимости про-верки RSA-подписи.

2. Уязвимость существует из-за ошибки при обработке Script-объектов. Злоумышленник может выполнить произ-вольный JavaScript-байткод в браузере жертвы путем из-менения уже запущенных Script-объектов.

3. Обнаружены несколько ошибок в механизме расклад-ки и ошибки повреждения памяти в механизме JavaScript. Удаленный пользователь может аварийно завершить ра-боту браузера или выполнить произвольный код на целе-вой системе.

4. Уязвимость существует из-за неизвестной ошибки в XML.prototype.hasOwnProperty. Удаленный пользователь может выполнить произвольный код на целевой системе.URL производителя: www.mozilla.org.Решение: Установите последнюю версию с сайта произ-водителя.

Переполнение буфера в Essentia Web ServerПрограмма: Essentia Web Server 2.15, возможно более ран-ние версии.Опасность: Высокая.Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке HTTP-запросов. Удаленный пользователь может с помощью специально сформирован-ного GET или POST-запроса, длиной более 6000 байт, вы-звать переполнение стека и выполнить произвольный код на целевой системе.URL производителя : www.essencomp.com/newsite /products.asp.Решение: Установите последнюю версию с сайта произ-водителя.

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

Несколько уязвимостей в Mozilla ThunderbirdПрограмма: Mozilla Thunderbird версии до 1.5.0.8Опасность: Высокая.Описание: Обнаруженные уязвимости позволяют удален-ному пользователю произвести XSS-нападение, получить доступ к важным данным, вызвать отказ в обслуживании и скомпрометировать целевую систему.URL производителя: www.mozilla.org.Решение: Установите последнюю версию (1.5.0.8) с сай-та производителя.

Page 62: 049 Системный Администратор 12 2006
Page 63: 049 Системный Администратор 12 2006

61№12, декабрь 2006

на правах рекламы

К своему юбилею российская ком-пания «Смарт Лайн Инк» по-дошла с новой версией свое-

го основного продукта – программы DeviceLock.

Существуя с 1996 года, DeviceLock завоевал популярность как за рубе-жом, так и в нашей стране и сегодня является признанным мировым лиде-ром в области контроля доступа к пе-риферийным устройствам. За 10 лет клиентами «Смарт Лайн Инк» стали более 50000 компаний, DeviceLock ус-тановлен на более чем 2 миллионах компьютеров.

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

Для чего нужно теневое копирование?Наличие журнала аудита позволя-ет администратору отслеживать все действия пользователя, в том числе и по копированию файлов. Но вот са-ми оригинальные файлы пользова-тель после копирования на носитель, будь то FDD, CD/DVD-диск, USB-флеш или другое устройство, подключа-емое к последовательному или па-раллельному портам, мог уничтожить или просто переименовать. Админис-тратор уже не мог проверить, была ли информация разрешена для копиро-вания или нет. При теневом копирова-нии все файлы и данные сохраняются на SQL-сервере в базе, недоступной для пользователя, но администратор может получить к ним доступ и про-анализировать.

Ядром системы по-прежнему яв-

ляется агент, устанавливаемый на каждый контролируемый компьютер. Для удаленного управления агентами и DeviceLock-сервером предлагается набор консолей управления, в том чис-ле консоль для управления групповы-ми политиками домена Windows, с по-мощью которых можно осуществлять наиболее эффективное развертыва-ние и управление DeviceLock.

В DeviceLock 6.0 появился но-вый дополнительный компонент – DeviceLock Enterprise Server, исполь-зуемый для централизованного сбо-ра и хранения данных теневого копи-рования. Для его работы необходимо наличие сервера MS SQL, на котором будет храниться собираемая инфор-мация. В большой сети, где имеется мощный SQL-сервер, возможна уста-новка нескольких серверов DeviceLock, подключаемых к одному SQL-серве-ру. Можно использовать несколько SQL-серверов для распределения на-грузки по сети.

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

В качестве дополнительного пара-метра предусмотрена установка огра-ничения на наполнение раздела, вы-деляемого под локальное хранение данных теневого копирования, в про-центах от свободного места на диске. В этом случае при достижении пре-дельных цифр копирование данных в этот раздел прекращается. Можно запретить любое копирование данных

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

Авторизация носителей информацииТеперь о второй новинке программы – авторизации носителей информации. Авторизованные носители формиру-ют так называемый белый список ме-диа-носителей. Этот список позволя-ет идентифицировать, к примеру, оп-ределенный CD/DVD-диск на осно-ве записанных на него данных и раз-решить его использование, даже ес-ли сам CD/DVD-привод заблокирован. Изменение данных на носителе при-водит к изменению его уникального идентификатора, и, следовательно, этот носитель уже не будет распоз-нан как разрешенный (авторизован-ный). Разрешив пользователю доступ к такому носителю, вы предоставляете ему возможность чтения данных даже в том случае, если устройства для не-го недоступны.

Из других изменений можно отме-тить изменение интерфейса – стал бо-лее удобным. Упростился процесс ус-тановки программы. Впрочем, о воз-можностях программы собственное мнение лучше всего формировать при тестировании продукта. А для это-го можно использовать бесплатную 30-дневную пробную версию, доступ-ную на сайте компании «Смарт Лайн Инк»(www.smartline.ru).

«Смарт Лайн Инк» отметила свое 10-летие выпуском новой версии DeviceLock 6.0, которая поддерживает функцию теневого копирования данных.

Какие возможности появились в новой версии DeviceLock?

Михаил Брод

Page 64: 049 Системный Администратор 12 2006

62

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

Можно ли рассматривать чело-веческую личность под мик-роскопом, как ученый рас-

сматривает красные кровяные тель-ца или какую-нибудь инфузорию-ту-фельку? Несолидно как-то, на пер-вый взгляд. Но, с другой стороны, раз-ве не складывается наше представ-ление о человеке из фрагментов, ос-колков? Мы выясняем, как он отно-

сится к миру, к профессии, к родным, к самому себе в конце концов. И дела-ем выводы… Говоря о друзьях и зна-комых, разве не выделяем мы какие-то качества в них особо? Например: «У Лены характер не сахар, зато друг она отличный». А целиком и полно-стью принимаем, пожалуй, только са-мых близких – своих родителей и сво-их детей.

Из чего складывается личность программиста, да и вообще, можно ли наделить личностными характе-ристиками представителя профессии? Мне кажется, представителя такой профессии можно. А кого взять в ка-честве предмета исследования, у меня тоже не вызывает сомнения – постоян-ного автора нашего журнала, челове-ка, статьи которого вы читаете с удо-

Компьютер – это тайна, считает популярный российский специалист по системам безопасности.

Page 65: 049 Системный Администратор 12 2006

63№12, декабрь 2006

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

вольствием. Предлагаю поближе поз-накомится с Крисом Касперски!

Почему-то если у Криса берут интер-вью, то сразу спрашивают: а как ваше настоящее имя? Меня этот вопрос ин-тересовал меньше всего, но я все-та-ки вежливо поинтересовалась в на-чале нашей беседы, не будет ли ему удобнее говорить, если он предста-вится. Мой собеседник так же вежли-во, но твердо заметил, что те, кому на-до, знают его настоящее имя. Я согла-силась… Ну какая разница, буду на-зывать я его Мишей, Федей или Кри-сом? Ведь это не поможет мне понять, какой он человек.

А что поможет? Обычно исследо-вание человеческой души начина-ют с детства. Ну тут все как в книж-ках про гениев. Очень рано Крис за-интересовался электроникой, ре-шил, что будет электронщиком. Па-ял приемники, ковырялся в них – ин-тересно было… Встреча с компьюте-ром перевернула все планы. Причем произошла она где-то классе в пя-том. Вундеркинд? Сам Касперски так не считает:

– Я смотрю, у многих моих знако-мых дети в шесть лет «прогу» уже уме-ют компилировать. Прогресс... Я же на-чал тогда, когда появились доступные компьютеры. Мой первый компьютер – «Правец 8D» был совершенно несов-местим ни с «синклерами», ни с «бэ-кашками», имевшими хождение в на-роде, и кучей программного обеспе-чения. У меня же не было ничего, кро-ме платы с несколькими микросхема-ми, и, чтобы вдохнуть в них жизнь, тре-бовалось научиться программировать, это затянуло неожиданно.

Однако после школы Крис пошел учиться на радиофизика. Высшее об-разование – яркая страница его био-графии. Успешно поступив в Таганрог-ский радиотехнический институт и про-учившись там три месяца, Крис понял, что он и вуз – вещи несовместимые:

– Я человек неорганизованный, а там много обязаловки. Допустим, математика мне дается с трудом. Мне бы посидеть над какой-то темой неде-льку, я бы понял. Но нет, нужно идти вместе со всеми… И мне оставалось только зубрить. Я понял, что с таким темпом совладать не смогу. А многое,

что давали, мне вообще не было нуж-но. А просто так зубрить, чтобы сда-вать, мне не хотелось. Ушел, но на сле-дующий год родители уговорили снова поступать – мол, нельзя ведь без об-разования остаться. Поступил еще раз, но история повторилась. И в третий раз поступил, и опять не выдержал.

Жалеет ли Крис об отсутствии вы-сшего образования? С одной стороны, он понимает:

– Теоретически хороший институт дает базу. Пообщавшись с настоящи-ми гениями, профессионалами, начи-наешь понимать, чем отличается са-моучка от того, кого действительно научили.

Но диплом Крису как-то и не пона-добился в жизни, не по корочке о нем судят работодатели. Да и не в конк-ретном вузе дело. Проблема в том, что Касперски пато-логически не прини-мает идею зубреж-ки. А во время недол-гой учебы в Таганро-ге у Криса сложилось стойкое впечатление, что вузовские преподаватели главным образом требуют продемонстрировать, сколько у тебя в голове формальных знаний из учебника. А кому эти знания нужны, зачем, какие ты сделал из них выводы, не важно…

– Почему я в первый раз ушел? Потому что был такой преподава-тель, который программы типа «При-вет, как тебя зовут?» писал, постоян-но сверяясь с конспектом. Все гадали, что с ним будет, если конспект отоб-рать. Он спрашивал у меня: когда об-разовалась фирма IBM, когда родил-ся Билл Гейтс? Я отвечал: «Не пом-ню». А он: «Это надо знать!» И ставил не «пять», а «три». Не нравится – иди в деканат. Но это означало, что надо ругаться постоянно…

Можно поспорить, начать горячо доказывать, что не все профессора та-кие, что стереотип – страшная штука… Но, согласитесь, и Криса понять мож-но. Бог с ним, с высшим образовани-ем. Самородок…

Сегодня Крис Касперски – автор двух десятков книг, переведенных на инос-транные языки. Его постоянно пригла-шают посотрудничать различные спе-

циализированные журналы. Он вы-ступает на страницах «Системного администратора», и настолько удачно, что наши читатели в конце концов ста-ли требовать на форуме: расскажите о Касперски! Например, как он пишет? Рассказываем. Вернее, пусть расска-зывает он сам:

– Последние месяца три у ме-ня такой темп – один день на статью. За один день успеваю статью написать, отредактировать, подготовить картин-ки. Компоную материал для следую-щей статьи, после чего падаю замер-тво на клавиатуру. Утром просыпа-юсь и начинаю быстро строчить вто-рую статью. А еще впереди третья, четвертая, пятая, до бесконечности… А вообще я на статью трачу дня два. Но если серьезная тема, бывает, не-деля требуется.

– А что вам нужно, чтобы написать хорошую статью? Вдохновение?

– Не столько вдохновение, сколько материал. Допустим, для «Системного администратора» я писал много статей по файловым системам: NTFS, ext2/3fs, USF. Сначала их исследовал, а потом обобщал в виде статьи. Обычно статье предшествует исследование. Мне нра-вится писать о том, в чем я разбира-юсь, тут я могу принести людям поль-зу. Но иногда приходится рассказывать о том, с чем я не работал. И я вникаю, собираю материал, обобщаю, прове-ряю, откидываю ошибки, заблуждения других авторов. Типа реферата полу-чается... Я так писать не люблю, если не могу исследовать тему. Допустим, если речь идет о серверах, которых у меня нет. Любимые темы – дисассем-блирование, отладка, защита, взлом. Это мое. Я этим занимаюсь и могу эту тему развить, потому что сам не раз это делал. Имею опыт.

– Самая интересная для вас тема – безопасность?

– Грубо говоря, хакерство. Мне инте-ресно заглянуть «под капот» програм-мы, защиты. Тут нетривиальное мыш-ление требуется.

– Вас привлекает тайна?

Page 66: 049 Системный Администратор 12 2006

64

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

– Возможность пойти нехоженым путем. Допустим, программу бухуче-та написать оригинально невозмож-но. Ее писали сто раз, есть платеж-ки, формы, привычный пользователь-ский интерфейс. А если хочешь что-то защитить, нет общепринятых подхо-дов, нужно идти своим путем. Или ког-да исследуешь защиту какой-то про-граммы, пытаешься выяснить, сколь-ко там проверок. Интересно. Смот-ришь систему защиты даже не ра-ди того, чтобы взломать и бесплат-но пользоваться программой, а что-бы себя проверить, выиграть в состя-зании с машиной. Она меня перехит-рит или я ее?

– Вы начали работать на компьюте-рах, потому что было интересно. А как менялось отношение к информацион-ным технологиям в течение жизни?

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

– Как вы считаете, какие качества нужны человеку, который решил посвятить жизнь IT?

– Во-первых, програм-мист – это инженер, а инже-нерная профессия – это учет рисков, это умение просчи-тывать, при каких условиях конструкция откажет, когда надо делать дополнитель-ные подпорки, а когда нет. Надо все предусмотреть, и не просто больше метал-ла вбухать, а сделать краси-во… Поэтому хороших про-граммистов не очень мно-го. Нужно иметь инженер-ное мышление и математи-ческое отчасти. Плюс нужна усидчивость. Приходится чи-тать много документации, на

английском языке, постоянно работать над собой. Человек, который не вкла-дывает в работу все, что имеет, про-граммистом вряд ли станет. Не бывает так: человек выучился в университете, поступил на работу и может програм-мировать. За пять лет все поменялось полностью, и те операционные систе-мы, которые он студентом изучал в ву-зе, ушли в прошлое. И значит, умерли старые знания, стали не нужны. То есть программист – человек, который пос-тоянно готов к самообучению. С дру-гой стороны, все программисты в зна-чительной степени обладают качест-вами аутистов, то есть людей, которые стараются не контактировать с окружа-ющими, им интересен только их внут-ренний мир и дело, которому они пос-вятили жизнь. Я говорю о программис-тах, которые делают хорошие програм-мы. Их мало и никогда много не будет, как хороших инженеров.

Портрет «идеального программиста» Крис нарисовал не впервые. Как-то он уже писал на эту тему целую статью. Статья вызвала возмущение, шквал критики. Не мне судить, насколько верна оценка, данная программис-том от их собрата по профессии. Мо-гу только сказать, что сам Крис в пол-ной мере соответствует нарисован-ной им картинке. Он одиночка, может двадцать четыре часа в сутки сидеть за компьютером, не любит компании

и непросто сходится с людьми. В от-личие от многих он честно признает-ся в своих «нелюдимых» качествах, принимает свою природу как данность и бороться с ней не пытается. Иног-да одиночество наводит на грустные мысли (кого из нас они не посещали?): «Хотя я написал кучу книг, взломал ку-чу программ, а защитил еще больше, но фактически я ничего не сделал – де-рево не посадил, сына не вырастил...». Иногда – на философские: «Даже ког-да для других день, я сосредоточен в глубоком колодце своего одиночест-ва, куда редко проникает свет. Забрал-ся в свой внутренний мир и теперь уже не могу выбраться оттуда. Ни веревки, ни лестницы внутри колодца нет, а из-вне о существовании этого самого ко-лодца никто даже и не догадывает-ся, потому что на самом деле никако-го колодца нет, есть только сознание, включающее в себя и колодец, и ве-ревку, и лестницу, и чувство глубоко-го одиночества. Здесь, на глубине, воз-можно быть честным и откровенным, но удается это далеко не всем. Как же это сложно – признаться себе в том, что ты чувствуешь и знаешь, прекра-тить искать оправдания, а просто при-нять свою истинную сущность!».

Одиночество – расплата за право быть свободным, жить так, как нра-вится, как хочется. А награда? Уме-ние видеть в профессии не ремесло, а искусство:

– Хакерство – своего рода искус-ство. Чем отличается искусство от ре-месла? Допустим, два ремесленника сделали два одинаковых горшка. И это просто горшки, ни больше ни меньше. А искусство – это умение выразить се-бя, свою точку зрения на мир. Поэто-му хакер ломает программы каждый раз немножко по-разному. Еще боль-ший простор для самовыражения да-ет разработка защитных механизмов. И еще – если занимаешься делом, ко-торое тебе по душе, видишь в нем то, что другой никогда не увидит:

– Компьютер – это магия. Как он ра-ботает, совершенно непонятно. Не во всем можно разобраться. Многие ве-щи поражают.

Умение удивляться – редкая спо-собность, присущая в основном детям. Похоже, Крис, свободный от обязалов-ки и стереотипов, не разучился радо-ваться и удивляться красоте, даже став

Когда-то Крис мечтал стать электронщиком

Page 67: 049 Системный Администратор 12 2006

65№12, декабрь 2006

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

взрослым. Одно из его увлечений – ас-трономия. Есть телескоп, не слишком мощный, но позволяет находить звез-ды, туманности, вычитанные в катало-гах. Когда видишь далекое скопление звезд не на фотографии в Интернете, а живьем, – дух захватывает.

– Понимаешь, какие мы маленькие, наши проблемы тоже и какой космос большой.

– Новую звезду не открыли? – спра-шиваю.

– Нет. Научных задач я себе не став-лю.

Еще Крис любит фотографировать: листья, пейзажи, речки, капли росы на дереве. Охотится за туманами:

– Мы на холме живем, спускаешься, а там низина, такие туманы классные.

Недавно Касперски купил себе пленочный Canon. Новый аппарат ра-дует, если бы не одно «но»:

– Что меня бесит – вспышку в руч-ном режиме нельзя принудительно включить. Она сама включается, ес-ли считает, что это необходимо. Когда снимаю человека против света и ис-пользую вспышку, получается очень хороший мягкий снимок. А, допустим, когда снимаю один лист против неба, вспышка не включится, как я ни ста-раюсь. Ручной режим есть, но не все функции в нем доступны.

А вы хотите, чтобы человек, для ко-торого свобода – жизненный принцип, подчинился фотоаппарату?

Беседуя с человеком, который «соба-ку съел» на теме безопасности, греш-но не спросить у него:

– Как вы считаете, каким будет дальнейшее развитие систем IT-бе-зопасности?

– Microsoft хочет, чтобы их програм-мное обеспечение поставили на атом-ный реактор. Это будет начало конца. Они уже пытались внедриться к воен-ным. Однажды был такой случай, ког-да то ли на крейсер, то ли на авиано-сец, где стояла NT, приехало высокое начальство посмотреть, как все это хо-рошо работает. И NT вдруг упала, крей-сер на время перезагрузки был неко-торое время полностью безоружен – слеп, глух и нем. И снова сбой! Дол-го разбирались, оказалось, виноват драйвер звуковой карты. И при этом самой звуковой карты у крейсера

не было. Высокое начальство не по-няло, зачем операционной системе нужен драйвер звуковой карты, если этой карты нет вообще. Это же крей-сер, а не в игрушка типа DOOM со зву-ками. Поэтому они отказались от услуг Microsoft. Теперь Microsoft хочет окку-пировать атомные реакторы и вооб-ще энергосистемы. А если ее поста-вят там, это означает, что толковый ха-кер сможет отключить электростанцию (хотя бы ради забавы). Это катастро-фа! Медицинские, остальные учреж-дения будут без света. Очень опасно. В медицину проникает Windows. Мож-но наблюдать в супермаркете: стоит касса, управляемая программой, на-писанной на Delphi, и «вращающая-ся» под Windows. Периодически вис-нет, сразу очередь собирается боль-шая. Магазину реальные убытки.

– Как быть?– Есть куча других систем, которые

очень просты и поэтому не «падают». Чем система проще, тем легче грамот-но спроектировать и протестировать. Microsoft же гонится за сверхприбылью, Люди, принимающие решения о внед-рении того или иного продукта, думают только о том, чтобы заработать деньги. Поэтому мы имеем такую неприятную ситуацию. Взять хотя бы проблему ви-русов. Сколько пользователей от них страдает! Потому что используют ды-рявый IE, который Microsoft в погоне за новыми функциями никак не может

довести до ума. Конкурирующий с ним FireFox, задавшийся целью «догнать и перегнать», содержит ошибок чуть меньше, но все равно остается небе-зопасным. А вот Opera или Lynx нико-го перегнать не стремятся. Предель-но вылизанный код, минимум ошибок, максимум функциональности. И, что самое забавное, Opera служит источ-ником вдохновения для своих же собс-твенных конкурентов, самые главные «вкусности» IE и FireFox позаимство-ваны именно оттуда.

– А что же все-таки делать бедному пользователю?

– Есть системы резервирования данных, DVD, стриммеры и другие но-сители. Главное – не лениться и не хра-нить критически важную информацию в единственном экземпляре. Поль-зователь должен быть грамотным. Windows – очень небезопасная вещь. Многие с этим сталкиваются, когда теряют данные. Хакерская атака или случайный сбой системы многим сто-ил потери бизнеса.

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

Оксана Родионова,

фото из архива Криса Касперски

Некомпьютерные увлечения Криса – астрономия и фотография

Page 68: 049 Системный Администратор 12 2006

66

web

Сдавая веб-сервер в эксплуата-цию, следует быть уверенным, что он выдержит планируемую

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

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

и программные средства и оценить их поведение под нагрузкой. В этой ситуации на помощь приходят специ-альные инструменты, которые иде-ально было бы использовать, перед тем как сайт будет сделан доступным в Интернете. Они смогут дать качест-венно-количественную оценку работы

Выдержит ли нагрузку ваш веб-сервер?Обзор программ для стресс-тестирования

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

Сергей Яремчук

Page 69: 049 Системный Администратор 12 2006

67№12, декабрь 2006

web

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

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

Различают три варианта тестиро-вания: Нагрузочное (Load-testing) – оп-

ределяется работоспособность системы при некоторой строго за-данной (планируемой, рабочей) на-грузке.

Тест на устойчивость (Stress) – применяется для проверки пара-метров системы в анормальных и экстремальных условиях, во вре-мя тестирования производится по-пытка нарушить работу системы. Позволяет определить минималь-но необходимые величины систем-ных ресурсов для работы приложе-ния, оценить предельные возмож-ности системы и факторы, ограни-чивающие эти возможности. Так-же определяется способность сис-темы к сохранению целостности данных в аварийных ситуациях.

Те с т п р о и з в о д и т е л ь н о с т и (Performance) – комплексная про-верка, включающая предыдущие две, предназначенная для оценки всех показателей системы.

Во время тестирования имити-руется одновременная работа не-скольких сотен или тысяч посетите-лей. Для большей правдивости каж-дый из пользователей может «ходить» по сайту по индивидуальному сцена-рию и параметрам. Также в процес-се тестирования можно имитировать кратковременные пики нагрузки, ког-да количество посетителей скачкооб-разно увеличивается, что очень акту-ально для сайтов с неравномерным размером аудитории (например, но-востных ресурсов).

Чтобы полноценно провести тести-рование, необходимо знать:

сколько посетителей планируется принимать в среднем, в пиковой на-грузке, время пиковой нагрузки;

могут ли несколько пользовате-лей иметь один и тот же IP-адрес и/или логин/пароль;

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

Рисунок 1. Выбор типа теста в WAPT

Рисунок 2. Создание профиля будущего теста

Page 70: 049 Системный Администратор 12 2006

68

web

наличие динамических страниц и страниц, изменяемых в течение определенного периода, и как час-то это происходит;

задействуется ли электронная поч-та, например для подтверждения полномочий пользователя;

какая еще дополнительная инфор-мация используется для проверки статуса пользователя (cookies);

требуется ли подтверждение пол-номочий пользователя сторонней организацией или удаленным сер-вером (например, номер кредитной карты) и будет ли представлена ин-формация для тестирования;

доступная пропускная способность канала, средний его расход на од-ного пользователя;

может ли работа нескольких поль-зователей вызывать коллизию (на-пример, торги);

используется ли защищенное HTTPS (SSL/TLS) -соединение, в каких случаях;

используются ли Java-аплеты, пото-ковое медиа, специальные плаги-ны, что требуется с клиентской сто-роны для их поддержки (JavaScript, VBScript, ActiveX);

используется ли кэширование страниц;

плановые технические мероприя-тия, которые могут повлиять на ра-боту сервера и время их проведе-ния (синхронизация, архивирова-ние и пр.).

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

Теперь, когда план действий готов, переходим к рассмотрению утилит, ко-торые помогут его воплотить.

WAPT 4.0Одна из самых простых в использова-нии и в то же время функциональных программ обзора. Для проведения про-стого теста даже не потребовалось за-глядывать в документацию, интерфейс прост и понятен, хотя и не локализо-ван. Как вариант можно использовать командную строку. Работает под уп-равлением MS Windows 98/Me/2000/XP/2003. WAPT позволяет испытать устойчивость веб-сайта и других при-ложений, использующих веб-интер-фейс, к реальным нагрузкам. Разра-батывается новосибирской компани-ей SoftLogica LLC. Для проверки WAPT может создавать множество виртуаль-ных пользователей в одном сценарии, каждый из них может иметь индиви-дуальный IP-адрес, идентификацион-ные параметры, скорость соединения. Поддерживаются Windows (NTLM), ба-зовая аутентификация и постоянные

Рисунок 3. Проводим тест

Рисунок 4. Окно Script Modeler

Page 71: 049 Системный Администратор 12 2006

69№12, декабрь 2006

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

пенчатое увеличение с указанием ми-нимального и максимального числа и временного интервала, выставить таймер проведения теста. На следую-щем шаге выставляется время между кликами (think time), скорость соедине-ния, указать диапазон IP-адресов (IP Spoofing), который будет использован виртуальными пользователями. Нажа-тие на «IP Adress List» позволит соста-вить список таких адресов. Также вы-ставляется http-параметр User-Agent и включается эмуляция прокси. Если требуется, чтобы виртуальные поль-зователи имели индивидуальные на-стройки на следующем шаге масте-ра, для каждого необходимо создать свой профиль, нажав «New» или за-грузив сохраненный. В последующем окне программы необходимо будет вы-ставить параметры в каждом из таких профилей.

После нажатия на кнопку «Готово» сценарий сохраняется. Это мы подго-товили параметры теста. Для указа-ния объекта тестирования необходи-мо создать профиль «New → Profile» и заполнить все параметры на обеих вкладках (см. рис.2). Здесь же опять, только уже индивидуально, доступны для редактирования некоторые пара-метры, задаваемые раннее с помощью мастера. Также указывается загрузка рисунков виртуальным пользователем, параметры аутентификации, исполь-зование Cookies и другие.

На вкладке «Recorder» указыва-ем адрес сайта, доступность кото-

рого можно тут же проверить, нажав «Go». Одновременно последует запрос на запуск Recorder, который будет от-слеживать посещенные страницы и за-писывать URL (они будут выводиться в панели слева). И когда вся инфор-мация собрана, нажимаем «Run Test». Подробные отчеты в форме графи-ка выводятся по ходу проведения тес-та, по окончании будет сформирова-на и html-страница. В результате мож-но получить информацию по време-ни ответа сервера с возрастанием на-грузки, количеству переданных и при-нятых байт, как в общем, так и в рас-чете на одного пользователя, количес-тве ошибок.

Рисунок 5. Результаты теста OpenSTA

Рисунок 6. Создание сценария тестирования

Page 72: 049 Системный Администратор 12 2006

70

web

WAPT распространяется под ком-мерческой лицензией, стоимость од-ной установки 350 у.е., с сайта проек-та вы можете получить работающую без ограничений в течение 30-дней тестовую версию.

OpenSTAOpen Systems Testing Architecture – это больше чем приложение для тес-

тирования, это открытая архитекту-ра, проектируемая вокруг открытых стандартов, в частности 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). Использование филь-тров (время теста, время ответа сер-

Рисунок 7. Отчет Web Application Stress Tool

Рисунок 8. Настройка Thread Groups в Apache JMeter

Page 73: 049 Системный Администратор 12 2006

71№12, декабрь 2006

web

вера, код ответа, размер, виртуальный пользователь или адрес, URL) позво-ляет отобрать необходимые резуль-таты. Возможен экспорт результата в CSV-файл (например, для последую-щей обработки в Excel). OpenSTA мощ-ный инструмент, обладающий всеми необходимыми функциями, но требую-щий некоторой подготовки как самого тестирующего, так и дополнительных временных затрат при проведении кон-кретного теста. К тому же возможнос-ти по выводу отчетов его несколько ограничены. В Интернете можно най-ти скрипты и плагины [1, 2], помога-ющие при анализе информации. На-пример, BView, доступный на домаш-нем сайте проекта, помогает отлажи-вать сценарии.

Microsoft Web Application Stress ToolБесплатный продукт компании Microsoft, работающий только в среде Windows и предназначенный для стресс-тестов веб-сервисов. Имеется и более совре-менная и также бесплатная разработ-ка Web Capacity Analysis Tool, пред-ставляющая собой комплексный про-дукт для работы с IIS, предназначен-ная в том числе и для тестов произво-дительности. Сценарий тестирования может быть создан вручную или запи-сан с помощью веб-браузера и затем отредактирован. После выбора вари-анта создания сценария (см. рис. 6) запускается простой мастер, который поможет сохранить параметры. Для каждого запроса фиксируется запра-шиваемый URL, время между запро-сами (delay), cookies и заголовки. Пос-ле записи скрипта в «Setting» выстав-ляется уровень нагрузки (stress level), который регулируется путем зада-ния количества нитей, осуществляю-щих запросы к серверу. Параметром «stress multiplier» задается число соке-тов на нить. Число виртуальных поль-зователей в Web Application Stress Tool рассчитывается как произведение чис-ла нитей на число сокетов, открытых каждой из нитей. Далее задается об-щее время теста, задержки между запросами (может быть использова-но случайное число), ширина полосы и прочие параметры. Создание макси-мальной нагрузки осуществляется пу-тем задания нулевого интервала ожи-дания между запросами.

По окончании теста выводится от-чет в текстовой форме (см. рис. 7), в котором можно получить информа-цию по следующим вопросам: число обрабатываемых запросов

в единицу времени; среднее время задержки между за-

просом и получением данных; скорость передачи данных на сер-

вер и с сервера, количество оши-бок.

Отчет можно экспортировать в CSV-файл. Никаких возможностей по ста-тистической обработке не предусмот-рено, то есть с его помощью можно только оценить работу при определен-ных условиях. Среди возможностей Web Application Stress Tool: аутентификация виртуальных поль-

зователей и пользовательских се-ансов;

работа по протоколу SSL; возможность создания групп URL

с заданием относительной доли за-просов для каждой группы.

Возможно использование несколь-ких централизованно управляемых клиентских машин для тестирования веб-сервера.

Apache JMeterApache JMeter представляет собой Java-приложение с открытым кодом, предназначенное для нагрузочно-го тестирования не только веб-при-

ложений и их отдельных компонен-тов (скрипты, сервлеты, Java-объек-ты и др.), но также FTP-серверов, баз данных (с использованием драйвера JDBC) и сети. Функциональность рас-ширяется с помощью плагинов. Под-держка SSL возможна при наличии библиотеки JSSE (Java Secure Sockets Extension), которая входит в стандарт-ную поставку JDK1.4 и выше. Возмож-на работа как с использованием гра-фического интерфейса, так и в коман-дной строке. Предусмотрены механиз-мы авторизации виртуальных пользо-вателей, поддерживаются пользова-тельские сеансы, шаблоны, кэширо-вание и последующий offline-анализ результатов теста, функции позволя-ют сформировать следующий запрос, основываясь на информации ответа

Рисунок 9. Вывод результата Aggregate Graph

Рисунок 10. Подсказка в NeoLoad

Page 74: 049 Системный Администратор 12 2006

72

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

Некоторые параметры, чтобы не вводить их каждый раз, можно со-хранить в файле 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 файл). Поддержива-

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, пот-ребляет большое коли-чество системных ре-сурсов

Высокая стоимость

Сводная таблица

$ bin/jmeter -H proxy.server ↵ -P 8000 -u username ↵ -a password

Page 75: 049 Системный Администратор 12 2006

73№12, декабрь 2006

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) сохра-

Рисунок 11. Вывод результата теста в NeoLoad

няются отдельно. Для получения ре-зультата требуется пройти три шага: Design – настройка проекта, здесь

три вкладки. В «Repository» указы-ваются веб-страницы и парамет-ры запросов, в «Virtual User» созда-ются виртуальные пользователи и указывается, какие из веб-стра-ниц они должны посетить, и усло-вия, которые выбираются в левой вкладке в «Actions», проверяется доступ пользователя к выбранным страницам. В «Populations» – зада-ния каждой из групп пользовате-лей. В «Actions» могут быть выбра-ны следующие действия: Delay (установка задержки); Loop (повтор запроса); While (цикл); If...Then...Else (условие); Container и Random Container

(групповые действия); Try...Catch (обработка ошибок); Stop virtual user (остановка вир-

туального пользователя). Runtime – указываются парамет-

ры теста, проводится тест. Здесь же в отдельных вкладках по ходу проведения теста выводится ста-тистика.

Results – отвечает за вывод раз-личной статистики (см. рис. 11) в виде таблиц и графиков.

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

раметру. Проект затем можно сохра-нить для повторного использования.

ВыводТесты, как правило, проводятся не один раз, и после устранения недостатков хотелось бы сравнить результат с пре-дыдущим. К сожалению, среди пред-ставленных продуктов такая возмож-ность есть только у NeoLoad. Еще один подобный инструмент Web Performance Suite [3], также позволяет сравнить ре-зультаты тестов, в обзор не попал по-тому, что не удалось провести полно-ценный тест (вероятно, из-за ограниче-ний trial-версии). Также следует обра-тить внимание на LoadRuner, 10-днев-ную тестовую версию которого раз-мером в 300 Мб можно скачать с сай-та проекта [4]. Используя утилиты на-грузочного тестирования, вы сможете получить информацию о работе веб-сервиса и, приняв необходимые меры по устранению выявленных недостат-ков, гарантировать требуемую произ-водительность.

1. Скрипты к OpenSTA – ht tp: / /www.trickytools.com/php/opensta.php.

2. Д о к у м е н т «A n a l y z i n g O p e n S TA Performance Results» – http://www.goldb.org/docs/opensta_log_analysis.pdf.

3. Сайт проекта Web Performance Suite – http://www.webperformanceinc.com.

4. Сайт проекта LoadRuner – http://www.mercury.com/us/products/performance-center/loadrunner.

Page 76: 049 Системный Администратор 12 2006

74

web

Защищать или не защищатьСпецифика защиты веб-контента (под которым мы будем понимать всю совокупность текстового и графичес-кого содержимого вместе с особен-ностями оформления) антагонистич-на по своей природе. С одной стороны, мы стремимся передать информацию

посетителю, а с другой – очень силь-но не хотим, чтобы он получил эту ин-формацию в любом виде, пригодном для дальнейшего осмысления и обра-ботки. Как говорится, что в Сеть по-пало, то пропало. В этом и есть сущ-ность Сети. Любая полезная инфор-мация мгновенно распространяется по сотням тысяч узлов, и в мире нет си-

лы, способной это предотвратить. Ес-ли вы хотите чем-то поделиться с ми-ром – делитесь! Одна искорка не сде-лает мир теплее или светлее, но… си-деть в кромешной темноте и ничего не делать – еще глупее.

Но это все была лирика, которой сыт не будешь. А у кого-то уже жена, и дети растут. Все это хозяйство требу-

Как надо и как не надо защищать веб-контент от кражи

Для охраны веб-контента можно использовать одну из многих защитных систем, имеющихся на рынке (но большинство из них давно поломано), или попытаться смастерить что-то свое, переоткрывая колесо и наступая на грабли, сопутствующие с подводными рифами. Как надо и как не надо защищать веб-контент от гнусных посягательств?

Крис Касперски

Page 77: 049 Системный Администратор 12 2006

75№12, декабрь 2006

web

ет денег, и, чтобы их заработать, приходится охранять свой креатив от желающих обогатиться за чужой счет. Но всег-да ли нужно защищаться? Например, сайтам, ненавязчиво рекламирующим бытовую и офисную технику (фотоаппара-ты, мобильные телефоны) и живущим преимущество за счет спонсоров и рекламы, защита идет только во вред. Если кто-то хочет скопировать рекламную статью, описание или до-кументацию на новый смартфон – пусть копирует! Он ведь не зря копирует, а с расчетом где-то разместить! Пусть да-же на своем сайте, в журнале, книжке. Чем больше людей узнают о товаре, тем круче взметнется кривая продаж!

Тем не менее существует большая группа людей, счи-тающих, что любое несанкционированное копирование ин-формации – это прямая упущенная выгода и без защиты сайт оставлять нельзя. Посетителям демонстрируются фо-тографии или электронные тексты, но за возможность со-хранить их на диск/распечатать/вставить в свой реферат необходимо заплатить. А платить, естественно, никто не хо-чет (или хочет, но не может ввиду неразвитости систем оп-латы). Вот и приходится защищать. При всей порочности этой методики и моем отвращении к ней однажды я ока-зался замешан в проектировании такой защиты. А для это-го потребовалось проанализировать весь комплекс техни-ческих средств, имеющихся на рынке, намотать на ус чужие ошибки, отобрать лучшие решения, добавить свои собс-твенные идеи и соединить все это воедино.

Что именно мы собираемся защищатьСовременные сайты далеко ушли от своих прародителей, и, собственно, самого HTML-кода «в чистом виде» в них практически не осталось. Основную статью расходов ны-не составляют разработка графического дизайна, проек-тирование PHP-движка (естественно, PHP приведен лишь в качестве примера, зная CGI, движок можно написать и на Си), ну и, наконец, «набивка» сайта живым содержимым – текстами статей, фотографиями и т. д.

Дизайн – единственное, что нельзя защитить, поскольку расположение графических элементов и организация до-ступа к ним – это идея в чистом виде, выпадающая из поля зрения авторского и патентного прав (рис. 1). Но вот гра-фические элементы, слагающие дизайн, защитить можно (хоть и сложно) (рис. 2).

PHP-движок в защите не нуждается, поскольку правиль-но настроенный веб-сервер никогда не отдает програм-мные модули, а всего лишь возвращает результат их рабо-ты, представляющий собой веб-страничку, сгенерирован-ную на лету, благодаря чему потребность в защите самого HTML-кода практически полностью отпадает. Теоретичес-ки веб-мастер может запрограммировать хитрый JavaScript, внедряемый в страницу в «чистом виде», однако что мешает ему реализовать весь «стратегический» код на серверной стороне? Конечно, какая-то часть кода неизбежно должна присутствовать и на клиентской стороне для обеспечения надлежащего уровня интерактивности (ниспадающие ме-ню, всплывающие подсказки…), но все это уже давно на-писано и претендовать на уникальность в этой «отрасли» по меньшей мере странно.

В защите нуждается не дизайн и не PHP/JS-код, а имен-но само содержимое сайта во всей его текстовой и графи-

ческой совокупности, ведь посещаемость (в долговремен-ной перспективе) определяется именно содержимым, не-прикосновенности которого угрожает: сохранение HTML на диск; копирование фрагментов текста в буфер обмена; сохранение изображений правой кнопкой мыши; «телепортеры» – программы, сохраняющие весь сайт

целиком (или его часть) для off-line просмотра или со-здания «пиратского» зеркала.

Однако прежде чем приступать к защите, неплохо бы рассмотреть ситуацию не только с технической, но и с эко-номической точки зрения. Никакая защита не достается бесплатно, даже если взять готовый некоммерческий про-тектор, то следует сразу же приготовить себя к тому, что за-шифрованные страницы (если в защите использовалось шифрование) окажутся незамеченными поисковыми ро-ботами, конфликты защиты с не IE-браузерами (а разрабо-тать неконфликтную защиту очень трудно). Короче, мы те-ряем пользователей, и если очень постараться, то можно добиться, что на сайт вообще никто не зайдет. Спрашива-

Рисунок 1. Дизайн сайта – единственное, что нельзя защитить

Рисунок 2. …а вот графические элементы дизайна защитить можно!

Page 78: 049 Системный Администратор 12 2006

76

web

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

Самое главное, что опытных пользователей никакая защита не остановит. Одно дело, если человек хочет пе-ретащить картинку на свой рабочий стол или пополнить домашнюю библиотеку. Тогда действительно есть шанс, что в процессе ковыряния защиты его желание упадет ни-же нуля и он просто махнет рукой и займется чем-то бо-лее прибыльным или интересным. А вот если копирова-ние сайта преследует коммерческую выгоду, превышаю-щую стоимость взлома, он будет скопирован. Кто-то при-влекает к этой работе хакеров, кто-то голодных (и бес-правных!) студентов, сравнительно быстро «перебиваю-щих» сайт вручную.

То есть мысль следующая: по сравнению с защитой про-граммного обеспечения защита веб-контента более беспо-лезна и менее надежна, потому что есть общий алгоритм ее взлома, связанный с разумной стоимостью, которая в разы ниже, чем для программного обеспечения, так как не тре-бует квалифицированной рабочей силы.

Как не нужно защищать текст и картинкиКоличество веб-мастеров, пользующихся «грязными» за-щитными приемами, просто поражает. Эти приемы достав-ляют множество неудобств легальным пользователям и ло-маются за несколько секунд даже без напряжения мозго-вых извилин.

Самым распространенным методом защиты копирова-ния картинок и грабежа текста был и остается JavaScript, перехватывающий click и возвращающий false если event.button == 2.

В простейшем случае исходный текст этой «защиты» выглядит так:

А вот результат его работы: выделяем текст мы-шью, щелкаем правой кнопкой мыши и вместо привыч-ного контекстного меню видим грозное диалоговое окно (см. рис. 3).

Если же после выделения текста не трогать мышь, а на-жать <CTRL-Ins>, <CTRL-C> или обратиться к пункту «Ко-пировать» в меню «Правка», то, несмотря ни на какие за-щиты, текст и даже изображение будут успешно скопиро-ваны в буфер обмена, откуда их (естественно, по разде-льности) можно вставить в текстовый и графический ре-дакторы соответственно.

Кстати, если в последних версиях IE подвести к кар-тинке мышь и некоторое время ее не двигать, возникнет панель инструментов с изображением «дискетки», со-храняющей изображение несмотря ни на какие скрипты (см. рис. 4).

Хорошо, давайте усилим защиту и напишем скрипт, за-прещающий не только контекстное меню, но еще и выде-ление текста, причем не только мышью, но и по комбина-

ции <CTRL-A>, соответствующей пункту меню «Правка → Выделить все»:

Рисунок 3. Защита перехватывает нажатие правой кнопки мыши и вместо контекстного меню выводит диалоговое окно с лаконичным сообщением «this operation isn't allowed»

Рисунок 4. Обход защиты «правой кнопки» путем наведения мышиного курсора в угол сохраняемой картинки в последних версиях IE

Листинг 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>

<BODY>

Page 79: 049 Системный Администратор 12 2006

77№12, декабрь 2006

web

Проверка показывает, что мышь действительно «от-дыхает», пункты «Выделить», «Копировать» и «Вставить» заблокированы, а «Выделить все» хоть и не заблокиро-вано, но не работает, как и контекстное меню, вызывае-мое по <SHIFT-F10> или клавишей, расположенной слева от правой кнопки <CTRL> (см. рис. 5).

Однако торжествовать победу еще рано. Во-первых, панель инструментов, возникающая при наведении мы-шью на картинку, по-прежнему исправно работает, а во-вторых, пользователь может отключить JavaScript, воз-вращая своему любимому браузеру всю его функциональ-ность (см. рис .6).

Раз наша защита построена на скриптах, необхо-димо проектировать страницу так, чтобы без скриптов она отображалась не полностью или вообще не отобра-жалась совсем. Проще всего использовать конструкцию «<script>document.write("text");</script>», конкретное вопло-щение которой может выглядеть, например, так:

Ниже показан внешний вид защищенной странички с отключенными JavaScript (естественно, вывод предуп-реждения о необходимости включения скриптов лишним не будет и совсем не помешает, а то ведь некоторые мо-гут и не догадаться, что тут что-то предполагается уви-деть) (см. рис. 7).

Ладно, с текстом мы более или менее разобрались. А как быть с картинками? Некоторые разрезают одну картинку на множество мелких частей, наивно полагая, что пользователю будет лень сохранить пару десятков фрагментов, а затем подгонять их в текстовом редакторе. Но… тут выясняется, что: особенности формата jpg приводят к тому, что края раз-

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

браузеры очень плохо справляются со склейкой карти-нок и очень часто возникают «артефакты» в виде пус-тых линий или наложений картинок друг на друга (осо-бенно если пользователь смотрит страничку с нестан-дартными настройками браузера типа разрешения, мас-штаба и т. д.);

клавиша <print screen> делает грабеж картинки прос-тым и приятным.

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

Сложнее бороться с сохранением страницы на диск. Некоторые браузеры содержат ошибки, приводящие к не-возможности сохранения при нарушении структуры HTML,

Листинг 2. Исходный код Java-скрипта, блокирующего не только правую кнопку мыши, но еще и выделение текста всеми доступными способами

<SCRIPT LANGUAGE="JavaScript"> document.ondragstart = ops; document.onselectstart = ops; document.oncontextmenu = ops; function ops() { return false; } </SCRIPT>

Рисунок 5. Заблокированные пункты меню «Вырезать», «Копировать» и «Вставить» в IE, «Выделить все» хоть и не заблокировано, но все равно не работает

Рисунок 6. Обход защиты путем отключения скриптов — правая кнопка сразу же восстанавливает свою работоспособность

Листинг 3. Вывод содержимого сайта через скрипты и, как следствие, препятствующий их отключению

<script>document.write ("Данный перевод (ввиду нехватки времени) является чисто техническим с рядом литературных огрехов, которые у меня не хватило времени исправить. Нумерация статей с оригиналом может не совпадать. Все комментарии в фигурных скобках – это замечания переводчика");</script>

Рисунок 7. Внешний вид защищенной странички с отключенными скриптами (исчез ранее присутствующий текст, см. рис. 6)

Page 80: 049 Системный Администратор 12 2006

78

web

при этом сама страница отображается вполне нормаль-но, но… никаких гарантий, что остальные браузеры пове-дут себя точно так же, у нас нет. Зато вполне оправдывает себя прием «разрезания» текстового содержимого на ку-сочки по 1-2 Кб. Читать страницу (в интерактивном режи-ме) вполне возможно, и даже нельзя сказать, чтобы сильно затруднительно (хотя постоянно нажимать на ссылку «Да-лее», конечно, быстро надоедает), а вот собрать из всех сохраненных страничек исходную статью – это же сколько труда нужно затратить!

Кстати, если по каким-то причинам страница не сохра-няется на диск, можно открыть ее в MS Word и сохранить на диск либо как html, либо как doc. Вместе с картинками, таблицами и другими элементами. Если же это не получа-ется и Word с грохотом падает, имеет смысл попытаться выделить наиболее значимую часть страницы и вставить ее в Word через буфер обмена. В 99% случаев это сраба-тывает!

Сложная защита с простым взломомБороться с грабежом веб-контента традиционными средс-твами совершенно бесперспективно. А что если… отобра-жать текстовое содержимое в графическом виде? Идея сов-

сем не так уж и безумна, как кажется. Ведь преобразование текста в графику необязательно осуществлять на сервер-ной стороне! Это можно поручить и JavaScript (или ActiveX-модулю, если это IE).

На сервере мы имеем PHP-модуль, шифрующий текст и передающий его клиенту. Браузер клиента «скармли-вает» его JavaScript/ActiveX-модулю и тот в окончатель-ном виде выводит его на экран. Для чтения разрешения вполне достаточно, а вот для OCR уже маловато, да и ко-му придет в голову пропускать веб-страницы через OCR одну за другой?

Конечно, назвать это защитой можно только с большой натяжкой, поскольку вместе с зашифрованным текстом кли-енту передается и сам ключ, следовательно, разобравшись в алгоритме шифрования (изучив код сценария JavaScript), хакер без труда напишет программу, расшифровывающую текст, но не превращающую его в графику.

Естественно, на медленных компьютерах такой скрипт будет очень сильно тормозить и по сложности своей реали-зации он вплотную приближается к самому браузеру или… к Adobe c ее PDF, в последние версии которого добавлена возможность эффективной работы по Сети со всем буке-том атрибутов запретов – невозможность выделения текс-та/печати, запрет сохранения на диск и т. д. Зачем же изоб-ретать велосипед, когда можно купить готовый? Увы, гото-вый страдает целым рядом врожденных пороков. Как и лю-бая серийная защита, Adobe поломан еще много лет на-зад и никакие ухищрения не позволят ему противостоять армии хакеров уже хотя бы в силу того факта, что хакеров много, а он один. Напротив, ковырять JavaScript, создан-ный на «коленках» веб-дизайнером Васей, скорее всего никто не будет.

К тому же реализовывать полноценный rendering-engine в скрипте совершенно необязательно. Достаточно ограни-читься одним лишь текстом. Для усложнения взлома мож-но преобразовывать в графику некоторое количество сим-волов еще на сервере (например, 6 или 9%, чтобы несиль-но замедлять время загрузки страницы), тогда без OCR уже не обойтись.

Популярный FineReader с таким разрешением уже не справляется, но с ним великолепно работает слегка пе-ределанный SubRip (кстати говоря, распространяемый со-вершенно бесплатно). Идея заключается в следующем: графический файл разбивается на символы (алгоритм вы-деления символов, даже наложенных на сложные и мало-контрастные текстуры, давно отработан), затем изобра-жение показывается пользователю, который должен ввес-ти соответствующий ему символ (или даже несколько сим-волов, если во входном тексте несколько букв слипаются в сплошное «месиво»). Для каждого символа создается би-товая матрица, и в дальнейшем это изображение распоз-нается автоматически. То есть программа как бы самообу-чается в процессе работы и обращается к пользователю все реже и реже. Поскольку возможных начертаний одно-го и того же символа существует не так уж и много (естес-твенно, в контексте распознаваемой страницы, а не «на-чертаний вообще»), а самих символов и того меньше, обу-чение занимает совсем немного времени, и на выходе по-лучается довольно качественно распознанный текст, пусть

Рисунок 8. Внешний вид программы SubRip, обладающий способностью качественно распознавать текст с предельно низким разрешением (вообще-то он используется для «грабежа» субтитров с DVD, но при желании его можно приспособить и для работы и с другими видами графических текстов)

Рисунок 9. Сохранение целого сайта на жесткий диск с помощью программы Teleport Pro

Page 81: 049 Системный Администратор 12 2006

79№12, декабрь 2006

web

не без ошибок, но все же пригодный для последующей ра-боты с ним (см. рис .8).

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

Защита от телепортеровБольшинство веб-мастеров очень не любят, когда пользо-ватели выкачивают весь сайт целиком, а потом спокойно почитывает его в off-line или прожигают на болванки, сбы-ваемые в ближайших ларьках.

Существует множество программ, предназначенных для автоматического скачивания и обладающих весьма продвинутой системой фильтров, способных качать только то, что нужно, и не качать одни и те же страницы несколь-ко раз подряд. Тем не менее их достаточно просто обма-нуть (см. рис .9).

Первое, что приходит в голову, – это запрашивать под-тверждение при скачивании каждого файла в виде графи-ческой картинки с искаженными символами, которые тре-буется ввести (см. рис. 10). Конечно, это утомляет чест-ных посетителей, но зато делает «телепортирование» сай-та практически невозможным. Можно выводить картинку на экран, перекладывая задачу распознавания на плечи человека, и если таких людей будет много, то копирование займет вполне разумное время. При желании можно даже привлечь аудиторию с какого-нибудь порнографического сайта с гиперпосещаемостью, если, конечно, «телепорти-рование» стоит того.

Другой механизм предполагает генерацию случайных аплинков, что приводит к «зацикливанию» телепортера.

Если веб-содержимое генерируется PHP (а в большинстве случаев это так), совсем несложно сделать, чтобы ссылка на предыдущую страницу (или «home page») каждый раз ге-нерировалась случайным образом и «телепортер», обна-ружив, что такой ссылки еще нет в его базе, повторял за-грузку «home» несчетное количество раз. Чуть-чуть усовер-шенствовав алгоритм, можно добавить и случайную гене-рацию даунлинков.

Самый простой пример: каждый линк представляет ссылку на скрипт с параметром, идентифицирующим эту ссылку. Идентификатор состоит из двух частей, первая часть – случайным образом генерируемый ключ, которой расшифровывает (по XOR) вторую часть. Этот механизм, несмотря на всю его простоту, не позволяет «телепорте-ру» отличать ссылки на уже скачанные страницы от тех, что еще предстоит скачать. Теоретически (!) «телепортер» может анализировать содержимое скачанных страниц, вы-деляя среди них дубли, но что это ему дает?! Качать-то все равно придется… в бесконечном цикле!

Пара слов о поиске украденногоКак ни защищай свое имущество, его все равно уведут, и веб-содержание начнет расползаться по Сети. Это не-возможно предотвратить, но найти грабителей – в общем-то пустяковое дело. Например, наложить на каждую фото-графию свой логотип. Прием распространенный, но очень глупый и проблемы не решающий. Логотип, расположен-ный в незначащей части изображения (где-нибудь в углу) элементарно вырезается. А если расположить его посере-дине да еще выбрать размер покрупнее, на такую фотогра-фию никому смотреть не захочется!

Готовые защитные продукты 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 не борется, изоб-ражения не режет, сохранению стра-ницы не препятствует, но блокиру-ет правую кнопку мыши, контекстное меню, выделение текста и печать: ht tp: / /www.mtopsof t.com/download/enchp.zip.

Внимание: Не стоит путать шифрование, исполь-

зуемое этими программами, с шифро-ванием, описанным в статье: зашифро-ванное содержимое расшифровывает-ся и выводится в браузер в текстовом виде и потому может быть сохранено на диск универсальной программой, представляющей собой обыкновенное расширение для браузера и считываю-щей содержимое окна через API-функ-ции в обход пользовательского интер-фейса. Такую программу (для каж-дого браузера) достаточно написать

всего один раз, и она будет работать как часы. Напротив, описанный меха-низм шифрования с переводом текста в графику не допускает универсально-го взлома, требуя к себе индивидуаль-ного подхода!

Зашифрованное содержимое (неваж-но каким путем) недоступно поиско-вым роботам, что крайне негативно отражается на посещаемости, поэто-му шифрование имеет смысл исполь-зовать только для создания «закрытых клубов» и «тайных сообществ», в ко-торые попасть можно только по «при-глашению», а простой человек с улицы их навряд ли найдет.

Шифрование также позволяет обхо-дить разнообразные adult-фильтры, блокирующие доступ к контенту оп-ределенного содержимого (к которо-му относятся не только порноресур-сы, но и некоторые политические сай-ты), впрочем, для этих целей сущест-вуют и другие, гораздо более продви-нутые методики (например, VPN-тун-нели или https-proxy сервера).

Page 82: 049 Системный Администратор 12 2006

80

web

От «визуальных» логотипов лучше сразу же отказаться, а использовать водяные знаки, цифровые подписи, скрываемые в изображении метода-ми стеганографии. Тогда, обнаружив «позаимствованный» материал на чу-жом сайте, по крайней мере, можно бу-дет доказать факт кражи. Весь вопрос в том: как найти того, кто украл? Если незадачливый похититель недодумает-ся переименовать фотографию, с вы-сокой степенью вероятности она будет найдена Google или другим поискови-ком. Аналогичным образом осущест-вляется и поиск похищенных текстов, причем тексты ищутся еще быстрее и легче. Можно попробовать выделить уникальную фразу, взятую в кавычки (многие именно так и поступают), одна-ко в этом случае Google зачастую вы-дает негативный результат (что неод-нократно проверено на практике), по-этому лучше выделить из своего текс-та несколько уникальных слов (комби-нация которых в других текстах прак-тически не встречается) и попробовать найти их, не используя кавычек. Заме-чено, что Google плохо находит те сло-ва, которые встречаются только на од-ном конкретном сайте (например, Ка-питан Кракрыпырзззклллл), и кирил-лические слова, содержащие в себе цифры или спецсимволы. В общем, по-иск – дело тонкое, но тот, кто ищет, тот всегда найдет!

Кстати, некоторые стеганографи-ческие алгоритмы (и утилиты, их ре-ализующие) переживают различные

контент, но все с тем же неизменным (не)успехом! Если цифровое содержи-мое можно просмотреть (прослушать), то, очевидно, его можно и скопировать! Единственная надежда – на аппарат-ную защиту, вживленную непосредс-твенно в «железо», но аппаратная за-щита наших дней сводится все к той же программе, упрятанной в микро-программную прошивку (которую мож-но перешить), да и уровень техничес-кого развития уже позволяет созда-вать копирующие устройства само-стоятельно.

Прежде чем вкладывать деньги, время, средства в защиту веб-контен-та, следует хорошо подумать: какие убытки это принесет и не превысят ли они «упущенную выгоду» от плагиа-торов и пиратов. Практически все ви-ды защиты, упомянутые в статье, ба-зируются на JavaScript, а это значит, что мы теряем пользователей, отклю-чающих JS по соображениям безопас-ности, а так же всех тех, кто пользуется браузерами, в которых JS не было еще с рождения (к таким браузерам, в час-тности, относится мой любимый Lynx). Про совместимость различных реа-лизаций лучше вообще не говорить, и тут приходится тестировать не толь-ко весь зоопарк имеющихся браузеров, но и различные версии каждого брау-зера! А это уже серьезно. Это требует создания тестовой лаборатории и су-щественных расходов. Так что вопрос: защищать или не защищать – остает-ся открытым.

трансформации изображения и да-же полиграфическую печать (естес-твенно, не отечественного качества). С другой стороны, практически все современные печатающие устройс-тва оснащены специальными защи-тами от несанкционированного тира-жирования банкнот и других ценных бумаг. Хакеры давно разгадали алго-ритм, по которому принтер отличает банкноту от всего остального. Не вда-ваясь в технические подробности, до-статочно отметить, что там использу-ется многоуровневая защита, в том числе основанная и на практически не-различимых (глазу) малоконтрастных окружностей и желтых точках на свет-лом фоне. В Сети имеется множество утилит, позволяющих обходить защи-ту, просто вырезая эти метки из изоб-ражения, но… их можно применять и в мирных целях – вносить в свою фотографию эти метки, после чего ни-какой принтер не станет их печатать! К сожалению, в силу своей изначаль-ной криминальной ориентации дан-ные утилиты постоянно меняют адре-са, и дать постоянный URL невозмож-но. Остается только засесть за Google и искать, искать, искать…

Философское заключениеПотребность в охране веб-контента на-зрела уже давно, но адекватных ме-тодик защиты до сих пор предложе-но не было. И дело тут совсем не в от-крытости формата HTML. Защищать пытаются и eBook, и аудио/видео-

Page 83: 049 Системный Администратор 12 2006

81№12, декабрь 2006

bugtraq

Несколько уязвимостей в PowerDNS RecursorПрограмма: PowerDNS Recursor 3.1.3 и более ранние вер-сии.Опасность: Высокая.Описание: 1. Уязвимость существует из-за ошибки под-счета длины при обработке TCP DNS-запросов. Удален-ный пользователь может с помощью специально сформи-рованного пакета выполнить произвольный код на целе-вой системе.

2. Уязвимость существует из-за ошибки при обработке CNAME-записей. Удаленный пользователь может аварий-но завершить работу приложения.URL производителя: www.powerdns.com.Решение: Установите последнюю версию (3.1.4) с сайта производителя.

Переполнение буфера в 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.Решение: Установите исправление с сайта производите-ля.

Небезопасные методы в 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 /sof tware /radius /radius.html.Решение: Установите последнюю версию (1.4) с сайта про-изводителя.

Обход ограничений безопасности в 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.Решение: В настоящее время способов устранения уязви-мости не существует.

Page 84: 049 Системный Администратор 12 2006

82

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

Создавая «архитектуру информации»Название этому разделу было да-но неспроста. Как раз Architecture of Information являлась целью, стояв-шей перед первыми учёными иссле-довательского центра Xerox Palo Alto Research Center (Xerox PARC). За свою почти 36-летнюю историю он принёс миру множество открытий в области волоконно-оптической и лазерной фи-зики, интегральной микросхемотехни-ки, систем автоматизированного про-ектирования, а также искусственного интеллекта.

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

Своим появлением на свет Xerox PARC обязана одному-единственно-

му исследователю, чьё имя, к сожа-лению, осталось неизвестным. Этот человек, нанятый высшим руководс-твом Xerox для планирования даль-нейшей стратегии её развития, по-рекомендовал компании создать тех-нологический центр для проведения исследований в области цифровых технологий. По его словам, анало-говые разработки в будущем станут морально и технически устаревшими, и для всей индустрии копировальной техники, которой «кормилась» Xerox, может наступить кризис. Единствен-ный правильный выход состоял в объ-единении копира и цифровых техно-логий с интегрированными офисны-ми системами. Идея была принята «на ура», и 1 июля 1970 года состоя-лось открытие нового исследователь-ского центра.

Сразу после этого Xerox PARC на-чала набирать «рекрутов». В основ-ном это были молодые учёные – вы-пускники высших учебных заведе-

ний. Среди них стоит отметить груп-пу бывших студентов Стэндфордско-го Исследовательского Института (Stanford Research Institute, SRI) во гла-ве с Дугласом Энгельбартом (Douglas Engelbart).

На протяжении 1960-х годов Эн-гельбарт со своими коллегами созда-ли так называемую «Диалоговую Сис-тему» (On-Line System, NLS). Она бы-ла разработана на основе технологии, позднее названной «гипертекстом» (Hypertext). NLS – интерактивная сис-тема для работы с текстовой и графи-ческой информацией – предоставля-ла следующие возможности: телекон-ференции, электронную почту, редак-тор по обработке текстов, гипертек-стовые ссылки, а также конфигури-рование пользователем своего рабо-чего места. Инновационные возмож-ности Диалоговой Системы потребо-вали создания для неё новых инстру-ментов. Среди них были манипуля-тор «мышь», многооконная система

Предвестник бури, или История первого персонального компьютера

Кремниевая долина ещё в середине прошлого века превратилась в «кузницу передовых идей» в области информационных технологий. Яркий тому пример: исследовательский центр Xerox PARC, в котором, наряду с ксероксом и лазерным принтером, в 1973-м году был создан первый в мире персональный компьютер.

Дмитрий Мороз

Наилучший путь предугадать будущее – изобрести его

Алан Кей

Page 85: 049 Системный Администратор 12 2006

83№12, декабрь 2006

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

ввода/вывода данных, система помо-щи в режиме on-line, а также органич-ность и простота всего пользователь-ского интерфейса.

Ещё один человек, имя которого стоит упомянуть – Алан Кей (Alan Kay). До своего появления в Xerox PARC он занимался разработкой SmallTalk – первого в мире объектно-ориенти-рованного языка программирования. Кроме того, «перу» Кея принадлежит концепт первого портативного компью-тера Dynabook.

Приглашённого в новый исследо-вательский центр Кея сразу же опреде-лили в команду, ответственную за NLS. Для облегчения их работы Xerox в 1971 году лицензировала у SRI манипуля-тор «мышь».

Со временем концепт Диалоговой Системы приобрел более или менее законченный и целостный вид, в ре-зультате чего встал вопрос о вопло-щении этих идей в едином аппаратно-программном комплексе.

Начав работать в Xerox PARC, Кей не забыл о своей разработке – ком-пьютере Dynabook. Первоначально его просьба создать несколько де-сятков подобных машин, которые бы служили подспорьем в его исследо-ваниях, была отклонена. Однако сама идея портативного компьютера пон-равилась Батлеру Лампсону (Butler Lampson), одному из главных учёных и менеджеров Xerox PARC. В декабре 1972 года в очередной из своих памя-ток он написал для руководства Xerox «манифест», в котором попросил выде-лить денежные средства на разработ-ку и производство «персональных ком-пьютеров» под названием Alto, за ос-нову которых была бы взята разработ-ка Алана Кея под названием Dynabook. Персональный компьютер в предыду-щем предложении был написан в ка-вычках неспроста, ведь исторически памятка Лампсона – первое упомина-ние термина.

Однако концепция портативного компьютера, являвшегося, по замыс-лу Кея, хранилищем всей необходимой его владельцу информацией и сред-ством для её обработки, была замене-на более практичной настольной сис-темой. Её разработкой первоначально занимался Чак Такер (Chuck Thacker), на помощь которому со временем при-шли ещё несколько человек.

Что касается технической стороны Alto, основные его характеристики бы-ли описаны ещё в памятке Лампсона.

Первый в миреПерсональный компьютер Xerox Alto, представленный в 1973 году, состоял из четырёх основных частей: систем-ного блока, растрового дисплея, кла-виатуры и трёхкнопочного манипуля-тора «мышь». Согласитесь, это те же составляющие, которыми может «пох-вастаться» любой ПК.

Система обладала 128 Кб ОЗУ (рас-ширяемыми до 256 Кб), а также съём-ными жёсткими дисками объёмом 2,5 Мб (дисковод магнитных дисков, со-зданный IBM в 1971 году, во время про-ектирования Alto ещё не был доступен). В качестве устройства отображения ин-формации был использован 12,8-дюй-мовый растровый чёрно-белый дисп-лей с разрешением 606x808 точек, в от-личие от всех современных «ландшаф-тных» экранов, имевший «портретную» ориентацию. В завершение компьютер имел «на борту» встроенный сетевой адаптер стандарта Ethernet, разработ-ка которого велась в недрах центра па-раллельно с работами над Alto.

Инновационной разработкой ин-женеров PARC стал 16-битный микро-процессор Alto, использовавший от-дельные микропрограммы для выпол-нения большинства функций ввода/выво-да вместо их аппарат-ной реализации. Яд-ро процессора могло одновременно выпол-нять до 16 различных задач, одной из ко-торых являлась не-посредственно обра-ботка основного на-бора инструкций МП. Остальные задачи процессора отвеча-ли за функции рабо-

ты с системой: вывод информации на экран, обновление содержимого оперативной памяти, работу с диско-выми накопителями, сетевой подсис-темой и другим функциями ввода/вы-вода. Несмотря на такую «многоза-дачность», пользователь мог управ-лять всего одной задачей, причём она всегда имела наименьший приоритет. Такой подход позволял, в случае надо-бности, моментально выделить допол-нительную процессорную мощность для управления другими задачами. Производительность МП Alto состав-ляла около 0,4 MIPS (миллионов инс-трукций в секунду).

Ещё одно новшество первого ПК – использование в качестве контролле-ра растрового экрана «буфера кадра» (frame buffer), хранящего в себе инфор-мацию, выводимую на экран. Создан-ный инженером Диком Шаупом (Dick Shoup), буфер кадра Alto представлял собой простой 16-разрядный регистр сдвига, управлявшийся одной из мик-ропрограмм центрального процессора системы. ЦП в этом случае использо-вался для выборки обновлённых дан-ных, которые необходимо вывести на дисплей из оперативной памяти в этот регистр. Специально для хранения ви-деоданных в ОЗУ было зарезервиро-вано 50 Кб адресного пространства. Использование буфера кадра позво-

Преждевременно почивший AltogetherВ своё время программист Эрик Смит (Eric Smith) взялся за написание эмулятора Xerox Alto под названием Altogether. К со-жалению, до стабильно работающей вер-сии дело не дошло: по состоянию на 26 ок-тября 2003 года (дата последнего обнов-

ления странички эмулятора) детище Сми-та эмулировало процессор компьютера, а также видеоподсистему. Незаконченны-ми остались дисковая и сетевая подсисте-мы, без которых Altogether был бесполез-ным. Исходные тексты программы можно найти на сайте Altogether: http://altogether.brouhaha.com.

Один из корпусов Xerox PARC

Page 86: 049 Системный Администратор 12 2006

84

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

лило значительно ускорить вывод гра-фической информации на экран Alto. Кстати, десять лет спустя, в 1983 го-ду, Шауп был награждён премией Эм-ми (Emmy) за своё изобретение. Не-смотря на то что первооткрывателем в этой области является лаборатория Bell Labs, создавшая 3-битный буфер кадра в 1969 году, разработка Дика Шаупа считается первой, нашедшей практическое применение в компью-терных системах.

Воплощение Диалоговой СистемыОперационная система AltoOS бы-ла написана на языке программиро-вания BCPL, очень похожем на язык Си. Поскольку адресное пространство компьютера было ограниченным, про-граммисты Xerox PARC разработа-ли специальный метод, названный «Junta». Он использовался для запре-щения доступа программам, написан-ным на BCPL, к загрузке в ОЗУ не ис-

пользуемых в данный момент компо-нент операционной системы. Если же в будущем в них возникала потребность, они могли быть активированы с помо-щью метода «Counterjunta».

Программа, выполнявшаяся по-верх операционной системы, называ-лась Alto Executive. Она являлась мно-гооконным файловым менеджером и позволяла пользователю произво-дить различные манипуляции с файла-ми, а также запускать программы.

Alto имела очень гибкую файло-вую систему. Файлы могли иметь на-звания длиной вплоть до 31 символа (1973 год!). Кроме того, после набора имени сохранялся регистр букв. В даль-нейшем, при необходимости найти файл с названием, скажем, «Рабочий-График» поисковый механизм AltoOS не обращал внимания на регистр, в ре-зультате чего ему было всё равно, как именно пользователь наберёт иско-мое имя файла: «РабочийГрафик», «РАБОЧИЙГРАФИК», или «рабочий-график».

Все файлы, хранившиеся на жёс-тком диске Alto, были разделены на страницы. Каждая из них содержа-ла: маленький заголовок, описывав-ший текущую страницу; путь к файлу, которому она принадлежала; а так-же места расположения предыдущих и следующих страниц этого же файла. В результате такой структуры файло-вая система первого в мире ПК была практически неразрушима. Встроен-ная в AltoOS утилита Scavenger могла автоматически восстанавливать пов-реждённую файловую систему.

За работу AltoOS с локальной сетью отвечали две программы: NetExecutive

и 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. Вне-шне она напоминала современные графические профессиональные па-

Делу время, потехе часНесмотря на то что Alto была создана в ка-честве компьютера, нацеленного на реше-ние серьёзных задач, хитрые программис-ты не преминули использовать ПК для собс-твенных развлечений. В результате специ-ально для AltoOS были написаны две иг-ры: Pinball и Trek. Первая, как не трудно до-гадаться, представляла собой «пинбол», а вторая – многопользовательскую разно-видность игры Space Invenders с кораблями, внешний вид которых был позаимствован из вселенной «Звёздный путь» (Star Trek).

Кроме того, на Alto была перенесе-на ещё одна игра – Maze War, являющая-ся первой в мире многопользовательской

игрой с видом «от первого лица» и псевдо трёхмерной графикой. Суть её заключа-лась в блуждании по лабиринту и отстре-ливании «колобков», управлявшихся дру-гими пользователями.

Уникальная особенность Trek и Maze War заключалась в том, что игрок мог при-соединяться к игре, а также выйти из неё в любую минуту. Поскольку все Alto могли одновременно «читать» один и тот же пакет (блок информации в Ethernet), игра никогда не работала на каком-либо одном, коорди-нирующем остальные, компьютере. Вместо этого она запускалась независимо на каж-дом ПК, что позволяло играть в неё одно-временно десяткам пользователей.

Xerox Alto

Page 87: 049 Системный Администратор 12 2006

85№12, декабрь 2006

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

кеты: интерфейс Draw состоял из не-скольких окон, каждое из которых бы-ло предназначено для команд опре-делённой группы. Окно, расположен-ное слева, содержало различные ви-ды кистей, верхнее окно было пред-назначено для ввода дополнитель-ных текстовых команд, а также выво-да системных сообщений программы. В центре располагалось основное ок-но – непосредственно «холст». Пользо-ватель мог рисовать линии произволь-ной длины и ширины. Кривая создава-лась путём указания нескольких точек, по которым Draw вычисляла траекто-рию отрезков и рисовала её, либо же удержанием мышкой точки на прямой и «перетягиванием» её в сторону ис-кривления линии. Нарисованный в ре-зультате объект мог быть продублиро-ван, развёрнут в необходимую сторо-ну, растянут или сжат. Причём все эти операции выполнялись либо движени-ем мыши, либо набором легко запоми-нающихся команд.

И ещё чуть-чуть о первом ПКСпециально для работы с Alto в недрах Xerox PARC было создано несколько дополнительных устройств: телевизи-онная камера, символьный принтер ти-па «ромашка», а также адаптер парал-лельного порта. Кроме того, к этому ПК могли быть подключены дополнитель-ные съёмные жёсткие диски, превра-щавшие компьютер в файловый сер-вер. Кстати, несколько Alto в локальной сети исследовательского центра Xerox выполняли именно эту функцию.

Всего в Xerox PARC была изготов-лена тысяча компьютеров Alto, кото-рые, будучи объединёнными в еди-ную сеть, использовались инженера-ми лабораторий центра. Ещё 500 сис-тем нашли своё пристанище в универ-ситетских кампусах и правительствен-ных офисах. До коммерческой реали-зации этого компьютера дело, однако, не дошло. Зацикленная на своём ос-новном бизнесе по производству ко-пировальной и офисной техники, Xerox не хотела рисковать большими сума-ми и вкладывать их в популяризацию персональных ЭВМ.

Впрочем, с появлением первых массовых компьютеров, таких как Altair 8800 и Apple II, а также возникшим ин-тересом к ним со стороны обычных по-

купателей, компания осознала о своем промахе. В результате средства от про-даж разработок в области персональ-ных компьютеров Xerox собралась по-лучать при помощи новой модели ПК – рабочей станции Xerox 8010 (позже по-лучившей название Xerox STAR), выпу-щенной 27 апреля 1981 года.

«Звёздный» компьютерПроектирование Xerox STAR велось с 1974 года. Именно этот компьютер должен был воплотить все идеи Диа-логовой Системы, разработанные Эн-гельбартом со товарищи. Поэтому его аппаратная часть создавалась лишь после окончания работ над програм-мой, которая и диктовала свои «ус-ловия».

Кстати, Xerox STAR не являлся раз-работкой, созданной в недрах PARC. Специально для продвижения «офис-ных систем» (к которым руководство компании относило персональные компьютеры) было создано отдельное подразделение, получившее назва-ние Systems Development Department (SDD). SDD имела два филиала: один располагался на территории PARC в Пало Альто (занимался операци-онной системой и языками програм-мирования), а другой – в городке Эль Сегундо, находившемся неподалёку от Лос-Анджелеса (разработка аппа-ратной части STAR, а также пользо-вательских программ). Для того что-бы оба офиса имели постоянную связь друг с другом, между ними была орга-

низована «локальная» сеть, в резуль-тате чего сотрудники смогли общать-ся между собой посредством элект-ронной почты, а также обменивать-ся файлами.

Широкой общественности Xerox STAR был представлен спустя це-лых семь лет разработки – в апреле 1981 года. Спецификации компьютера были следующими: 512 Кб ОЗУ (из ко-торых 100 Кб отводилось для хранения данных буфера кадра), жёсткий диск объёмом 10, 29 или 40 Мб, 8-дюймовый дисковод, 17-дюймовый монитор с тра-диционной «ландшафтной» ориента-цией и разрешением 1024x808, а так-же новый сетевой адаптер с повышен-

Распечатанный скриншот игры Maze War

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

Page 88: 049 Системный Администратор 12 2006

86

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

ной до 10 Мбит/с (у предшественника – 3 Мбит/с) скоростью передачи инфор-мации. Мышь для нового компьютера была уже двухкнопочной.

Старый центральный процессор Alto в STAR работать не мог из-за воз-росших требований нового програм-много обеспечения к производитель-ности компьютера. Кроме того, теперь он должен был понимать язык Mesa, на котором было написано подавля-ющее большинство программ для но-вого ПК. Поэтому инженерами Xerox PARC был разработан новый чип, ра-ботавший в три раза быстрее свое-го предшественника, установленно-го в Alto.

Программные наработкиНовая операционная система STAROS была написана на Mesa и значительно отличалась от своей предшественницы.

Основу ОС составлял «Рабочий стол» (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. Как не трудно дога-

Xerox STAR

Интерфейс Xerox STAR

Page 89: 049 Системный Администратор 12 2006

87№12, декабрь 2006

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

даться, InterPress лёг в основу их язы-ка Postscript.

ПоражениеНесмотря на передовые аппаратные и программные разработки, заложен-ные в Xerox STAR, этот компьютер не сумел «найти своего покупателя», проиграв войну PC корпорации IBM и Macintosh от Apple. Причин здесь не-сколько, причём кроются они как раз в его «уникальности»:

Аппаратные недостатки. Про-граммное обеспечение STAR, раз-работанное для людей, не знакомых с компьютерной грамотой, было очень требовательным к аппаратному обес-печению. В результате скорость ра-боты Xerox STAR была приемлемой, но не более того. Инженеры центра были настолько одержимы идеей раз-работать идеальную систему, что в ре-зультате количество новшеств в ней оказалось гораздо больше необхо-димого на то время. Как и в случае с Apple, инженеров PARC никто не ог-раничивал и не диктовал свои условия. В результате Xerox STAR для исполь-зования всех её возможностей требо-валось наличие локальной сети с под-ключенными к ней другими аналогич-ными компьютерами, лазерные при-нтеры, а также комнаты, забитые раз-личной электроникой. IBM PC, наобо-рот, был «компьютером в себе»: отлич-но работал в одиночку, да к тому же не «брезговал» более дешёвыми матрич-ными и струйными принтерами. Инже-неры Xerox STAR считали, что разра-ботанное ими программное обеспече-ние будет единственно нужным просто-му пользователю, поэтому этот ПК пре-вратился в «закрытую» систему, под-робное описание аппаратной части ко-торой публично не оглашалось.

Программные недостатки. Из-начально STAR позиционировался как компьютер для менеджеров и ру-ководителей, однако инженеры, раз-рабатывавшие систему, были предо-ставлены сами себе и не учли всех потребностей потенциальных поль-зователей. Хотя BravoX, как тексто-вый редактор, по своим возможностям был вне конкуренции, тот же редактор электронных таблиц на STAR отсутс-твовал, в результате чего о выполне-нии всего спектра офисных задач ре-чи быть не могло. Поскольку Xerox

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

Организацион-ные промахи. Глав-ный же недостаток был не техническим, а организационным. Xerox создала про-дукт, который не мог-ла продать. Отдел продаж SDD не имел никакого опыта реа-лизации компьютерных систем, пос-кольку единственными, с чем они име-ли дело всё это время, были принтеры и копиры. К тому же цена Xerox STAR (16 595 долларов) была приблизитель-но в пять раз выше стоимости ПК кон-курентов. И последнее: менеджерам компании не объяснили, каким обра-зом использование ПК от Xerox может улучшить производительность труда потенциальных покупателей. Семи-нар, посвящённый STAR, позже дока-зал, что ни отдел продаж SDD, ни да-же некоторые разработчики до конца не могли оценить всех преимуществ выполнения офисных задач на этом компьютере.

В результате SDD смогла продать всего несколько десятков тысяч Xerox STAR. В дальнейшем был разработан его преемник, Xerox 6085 (называв-шийся также ViewPoint). Однако кроме 19-дюймового монитора, 40 Мб жёстко-го диска и обновлённого программного обеспечения похвастаться какими-ли-бо кардинальными изменениями он не мог. Количество проданных ViewPoint было ещё меньше и составило около пяти тысяч систем.

Пример для остальныхИсторию с посещением Стивом Джоб-сом лабораторий Xerox PARC, думаю,

знают все. Одному из основателей Apple хватило, по его словам, всего 10 минут, чтобы оценить весь скрытый потенциал STAR. Если выход в свет компьютера Lisa ещё не был событи-ем из ряда вон выходящим вследс-твие его сверхвысокой цены, то появ-ление легендарного Macintosh в 1984 году спровоцировало эффект «разо-рвавшейся бомбы». На тяжёлых тру-дах инженеров Xerox PARC инвесто-ры Apple заработали сотни милли-онов долларов.

Что же касается разработчиков Alto и STAR – им досталась лишь «скром-ная» премия ACM Software Systems Award, присуждённая PARC в 1984 году за вклад в развитие вычисли-тельной техники. А мир тем време-нем во всю приспосабливался к по-явлению и всё более широкому рас-пространению компьютеров IBM PC и Apple Macintosh, коренным образом изменивших его и сделавших смеш-ной и нелепый в прошлом веке лозунг «Персональный компьютер в каждый дом!» реальностью.

1. http://www.parc.com.2. http://www.guidebookgallery.org.3. http://www.digibarn.com.4. http://members.tripod.com.5. http://www.wikipedia.org.

Скриншот текстового редактора BravoX

Page 90: 049 Системный Администратор 12 2006

88

содержание журнала за 2006 год

АДМИНИСТРИРОВАНИЕ №

Arch Linux: руководство к быстрому старту Валентин Синицын №5

Box Backup – горячие резервные копии Алексей Коршунов №5

FreeDOS – новый взгляд на старые вещи Иван Максимов №2

FreeNAS: строим надежную систему хранения данных

Сергей Яремчук №7

Greylisting: панацея от спама или «мыльный пузырь»?

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

Linux-VServer Дмитрий Столяров №10

Lotus Notes на Windows 2K/XP в *NIX-домене Мыкола Буряк №8

MeTA1: почтовый сервер на новый лад Сергей Супрунов №12

Microsoft Operations Manager 2005: управляем сетью

Андрей Бирюков №10

MikroTik – Router OS Сергей Яремчук №3

MS Windows XP SP3, или Много шума из ничего

Алексей Барабанов №11

OpenPKG: кроссплатформенная система пакетов

Андрей Коврин №3

OpenVPN: доступ повышенной проходимости

Алексей Коршунов №7

ProFTPD: мастер своего дела Сергей Супрунов №2

Roaring Penguin CanIt: ведём борьбу со спамом

Сергей Яремчук №7

Автоматизируем процесс установки обновлений

с PatchQuest 4 Сергей Яремчук №11

Автоматизируем тестирование железа

с помощью StressLinux Дмитрий Волков №7

Автоматизируем установку

программного обеспечения в сети Андрей Бирюков №4

Биллинг на FreeBSD: пишем сами, используя PHP, trafd

и MySQL Александр Чагадаев №8

В поисках анонимного прокси-сервера Иван Максимов №12

Возможности технологии MS Windows SharePoint Services

Иван Хрипунов, Артем Черневский №5

Возможности технологии MS Windows SharePoint Services.

Часть 2 Иван Хрипунов №7

Вы всё ещё не используете WMI? Часть 1 Константин Леонтьев №1

Вы всё ещё не используете WMI? Часть 2: пишем сценарии

Константин Леонтьев №2

Делаем резервное копирование конфигураций

активного сетевого оборудования Андрей Бирюков №1

Делимся впечатлениями о дистрибутиве Linux XP Desktop

Дмитрий Шурупов №12

Знакомимся с Gentoo. Часть 1: установка системы

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

Знакомимся с Gentoo. Часть 2: базовые настройки

и работа с Portage Сергей Супрунов №4

Интеграция BIND + PostgreSQL Сергей Алаев №12

Как купить ПО от Microsoft? Особенности приобретения

и использования OEM-версий Дмитрий Бутянов №12

Как обеспечить необходимое быстродействие систем

«1С: Предприятие» Роман Марков №10

Как работает Sendmail? Полезные подробности

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

Как работает Sendmail? Полезные подробности. Часть 2

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

Как работает Sendmail? Полезные подробности. Часть 3

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

Как работает Sendmail? Полезные подробности.

Часть 4: взаимодействие со сторонними программами

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

Как собирать сетевую статистику Андрей Бирюков №10

Как устроена файловая система JFS Андрей Пешеходов №8

Как устроена файловая система reiser4 Андрей Пешеходов №4

Кириллизация в Linux Алексей Барабанов №3

Кластеризация + виртуализация: Linux HA + OpenVZ.

Часть 1: кластеризация на практике Евгений Прокопьев №11

Кластеризация + виртуализация: Linux HA + OpenVZ.

Часть 2: Виртуализация на практике Евгений Прокопьев №12

На что способен дистрибутив SystemRescueCd Linux

Иван Максимов №11

Настраиваем шлюз в Интернет на базе FreeBSD

Алексей Бережной №12

Обзор дистрибутива Ubuntu 6.06 Сергей Супрунов №8

Обзор систем резервного копирования Сергей Яремчук №9

Организуем работу офисного почтового сервера

на платформе Windows Александр Емельянов №12

Отказоустойчивый кластер с минимальным бюджетом

Сергей Довганюк №5

Переключи драйвер NTFS в режим read-write Антон Ананич №6

Подробное руководство по настройке тонких клиентов

на основе дистрибутива Thinstation и протокола NX

Евгений Бушков №12

Полезные советы: Apache Сергей Супрунов №9

Полезные советы: FreeBSD Сергей Супрунов №9

Полезные советы: PostgreSQL Сергей Супрунов №11

Почтовый сервер на основе реляционной СУБД.

Оцените преимущества! Евгений Прокопьев №1

Проводим инвентаризацию сети средствами SMS 2003

Дмитрий Щербаков №8

Разрабатываем пакет управления для МОМ Андрей Бирюков №11

Семь веб-интерфейсов к электронной почте.

Выберите лучший! Сергей Супрунов №9

Собираем собственную ОС на базе Linux Илья Александров №3

Современный Linux-сервер: виртуализируем

сетевые устройства Алексей Барабанов №6

Современный Linux-сервер: виртуализируем

сетевые устройства. Часть 2 Алексей Барабанов №8

Современный Linux-сервер: как планировать

дисковые ресурсы Алексей Барабанов №1

Современный Linux-сервер: как планировать

дисковые ресурсы. Часть 2 Алексей Барабанов №2

Создаем адресную книгу на базе OpenLDAP Сергей Алаев №10

Создаём кластер для PostgreSQL Андрей Тренин №1

Создаем порт для FreeBSD своими руками.

Часть 1: основные возможности Рашид Ачилов №3

Создаем порт для FreeBSD своими руками.

Часть 2: расширенные возможности Рашид Ачилов №4

Статистика прокси-сервера Squid Павел Малахов №7

Строим мультидоменный почтовый сервер с защитой

от вирусов и спама Павел Семенец №1

Узнай секреты WMI: события и провайдеры.

Часть 1: дополнительные возможности Константин Леонтьев №3

Узнай секреты WMI: события и провайдеры.

Часть 2 Константин Леонтьев №5

Упаковщики исполняемых файлов в Linux/BSD

Крис Касперски №9

Page 91: 049 Системный Администратор 12 2006

89№12, декабрь 2006

содержание журнала за 2006 год

БЕЗОПАСНОСТЬ №

ПРОГРАММИРОВАНИЕ №

FreeBSD jail: зона строгого режима Сергей Супрунов №11

Kerberos и электронная почта Михаил Кондрин №11

Windows Firewall: защищаем внутренние ресурсы сети

Андрей Бирюков №8

Zlock: контролируйте доступ к USB-устройствам

Андрей Гущин №9

Zserver Suite: защищаем корпоративные хранилища данных

Алексей Шелестов №3

Аудит и дизассемблирование эксплоитов Крис Касперски №8

Внутренние IT-угрозы в банке превосходят по значимости

все остальные Анна Верхось №11

Выявление угроз информационной безопасности

внутри компании Никита Дуров №11

Генная инженерия на службе распаковки PE-файлов

Крис Касперски №5

Защитить ваш компьютер поможет Browser Sentinel

Сергей Яремчук №10

Защищаем PHP-приложения с помощью Suhosin

Сергей Яремчук №11

Защищаем Windows-системы с помощью CORE FORCE

Сергей Яремчук №1

Защищаем корпоративную почту с SecExMail Gate

Сергей Яремчук №10

Защищаемся от malware с помощью BufferZone

Сергей Яремчук №9

Используем средства библиотеки OpenSSL

для криптографической защиты данных Владимир Мешков №4

Используем средства библиотеки OpenSSL

для криптографической защиты данных. Часть 2

Владимир Мешков №5

Исследуем сетевую безопасность посредством

Linux Netwosix Сергей Яремчук №2

Как настроить библиотеку SASL для совместной работы

c Kerberos Михаил Кондрин №10

Как обнаружить malware-программы?

Универсальный метод Крис Касперски №9

Как повысить безопасность веб-приложений Сергей Яремчук №2

Как увеличить безопасность процессов

с помощью chroot и jail Василий Озеров №7

Какие возможности появились в новой версии DeviceLock

Михаил Брод №12

Можно ли защититься от переполнения буферов?

Крис Касперски №2

Настраиваем DrWeb Enterprise Suite Антон Борисов №8

Настраиваем безопасный роутер на базе FreeBSD

Василий Озеров №6

Настраиваем эффективную систему сетевой защиты Zorp

Сергей Яремчук №5

Ошибки синхронизации открывают большие возможности

для хакеров. Каковы механизмы защиты? Крис Касперски №11

Пишем систему динамической защиты ресурсов в сети

Андрей Бирюков №6

Полезные советы: Bacula Сергей Яремчук №11

Работаем с NTLM-авторизацией Apache

в домене MS Windows 2003 Владимир Василькин №11

Растущая угроза: руткиты Win32 Артем Баранов №10

Расширяем возможности MailScanner Сергей Яремчук №1

Создаем VPN с помощью SSL-Explorer Сергей Яремчук №4

Судьба shell-кода на системах с неисполняемым стеком

Крис Касперски №1

Техника снятия дампа с защищенных приложений

Крис Касперски №6

Чем уникальна общественная система

предотвращения атак Prevx1 Сергей Яремчук №2

Замыкания в Perl Алексей Мичурин №2

Многоядерные процессоры и проблемы,

ими порождаемые, в ОС семейства NT Крис Касперски №10

Переходим от VBScript к ASP и ASP.NET:

Безопасность и синтаксис Иван Коробко №1

Переходим от VBScript к ASP и ASP.NET: Часть2

Иван Коробко №3

Практикум Python: обрабатываем входящую

электронную почту Сергей Супрунов №2

Работаем с PDF из Perl Валентин Синицын №3

Развиваем модуль DBI Алексей Мичурин №9

Чего ждать от Perl 6 Андрей Шитов №11

Управляем инсталляторами Иван Коробко №4

Устанавливаем и настраиваем

Systems Management Server 2003 Андрей Бирюков №7

Устанавливаем межсетевой экран MS ISA Server 2004

Андрей Бирюков №12

Централизованно меняем пароли локального

системного администратора Иван Коробко №6

Шесть дней одного года Роман Коновалов №4

Шлюз аутентификации пользователей NuFW

Сергей Яремчук №3

Штопаем дыры в Ilohamail Сергей Супрунов №1

Экономьте время на администрировании Active Directory

Сергей Яремчук №10

ВЕБ-ПРОГРАММИРОВАНИЕ №

Заглянем в будущее PHP 6 Кирилл Сухов №7

Ajax: новый канал общения клиента и сервера Алексей Мичурин №9

Возможности поискового движка DataparkSearch

Иван Максимов №5

Выдержит ли нагрузку ваш веб-сервер?

Обзор программ для стресс-тестирования Сергей Яремчук №12

Как надо и как не надо защищать веб-контент от кражи

Крис Касперски №12

Контролируем доступ к веб-сервису с помощью DACS

Сергей Яремчук №8

Тестируем движки поисковых машин Иван Максимов №8

Технология AJAX: как насчет безопасности? Сергей Яремчук №6

Устанавливаем DACS Сергей Яремчук №9

WEB №

HARDWARE №

Волшебство с паяльником в руках Крис Касперски №6

Page 92: 049 Системный Администратор 12 2006

90

содержание журнала за 2006 год

Linux в школе? Сергей Яремчук №6

Python – в школу! Сергей Супрунов №10

Дистрибутив Edubuntu: специально для школ Сергей Яремчук №6

Первый раз в Linux-класс! Андрей Маркелов №6

Полезные советы: Python Сергей Супрунов №10

ОБРАЗОВАНИЕ №

АНАЛИТИКА №

Быть или не быть зарубежному софту в России?

Ольга Максимович №6

ИНТЕРВЬЮ №

Free Software Foundation переходит на технологию LinuxBIOS

Антон Борисов №2

ЧЕЛОВЕК НОМЕРА №

Виртуальные радости и открытия Максима Чиркова

Оксана Родионова №11

Волшебник из страны… Воз Оксана Родионова №8

Герой нашего времени, или Попытка развенчания мифов

Оксана Родионова №4

Головоломка, ведущая по жизни Игоря Данилова

Оксана Родионова №10

Один в поле – воин! Оксана Родионова №7

Оппонент мистера Гейтса Оксана Родионова №6

Пират виртуального мира Оксана Родионова №9

Прихоти судьбы. Биография IT-просветителя

Оксана Родионова №5

Романтичный хакер Крис Касперски Оксана Родионова №12

IMHO №

Open Source взглядом оптимиста Алексей Барабанов №10

В поисках профессиональной этики сисадминов

Алексей Барабанов №9

Как зарабатывают на Open Source Крис Касперски №10

Куда приведет Open Source? Сергей Супрунов №10

Лицензию? Вам какую? Сергей Супрунов №5

Перспективы профессии. Автопортрет Алексей Барабанов №4

Электронная почта как источник повышенной опасности

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

ХОББИ №

Коллекция «Почему?» Анна Николаева №3

ДОКУМЕНТАЦИЯ №

Документация – экономия времени или его бесполезная трата?

Алексей Коршунов №3

Техническая документация: серверы и сети Алексей Коршунов №4

История компьютерных вирусов Илья Александров №11

История компьютеров «Амига». Часть вторая: 1995-2006

Сергей Зуев №3

История компьютеров «Амига». Часть первая: 1982-1994

Сергей Зуев №2

Надежда умирает последней: история компании SGI

Дмитрий Мороз №4

Надежда умирает последней: история компании SGI. Часть 2

Дмитрий Мороз №5

Надежда умирает последней: история компании SGI. Часть 3

Дмитрий Мороз №6

Попытка изменить мир: хроники компании NeXT

Дмитрий Мороз №7

Предвестник бури, или История первого

персонального компьютера Дмитрий Мороз №12

Сеть друзей: история Fidonet Илья Александров №8

Сломленная, но не сдавшаяся:

история операционной системы BeOS. Часть 2

Дмитрий Мороз №1

Суровая правда, скрытая за «розовыми очками»:

история компании Transmeta Дмитрий Мороз №9

Суровая правда, скрытая за «розовыми очками»:

история компании Transmeta. Часть 2 Дмитрий Мороз №10

РЕТРОСПЕКТИВА №

Доставку гарантируем: качество обслуживания

в пакетных сетях Сергей Сикорский №2

Интернет «от Москвы до самых до окраин» Роман Ерин №3

Какова цена анонимности в Сети Андрей Погребенник №2

Малоизвестные подробности работы NAT Ильяс Кулиев №1

Подключаемся к Интернету через спутник Антон Борисов №2

Собираем беспроводной роутер 802.11g на базе ОС Linux

Михаил Платов №4

Создаем зоны DNS Рашид Ачилов №6

Управляем зонами DNS Рашид Ачилов №7

Управляем сетевым оборудованием

с помощью протокола SNMP Андрей Бирюков №3

СЕТИ № Linux-десктопы должны быть привлекательными

Дмитрий Шурупов №11

Марк Спенсер: «Это Asterisk привлекает пользователей

к Linux, а не наоборот» Дмитрий Шурупов №8

Расмус Лердорф: «Вы думаете, что 11 лет назад я решил

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

во всем мире!?» Дмитрий Горяинов №7

№1(38) январь 2006подписной индекс 20780www.samag.ru

Вы всё ещё не используете WMI?

Современный Linux-сервер: как планировать дисковые ресурсы

Малоизвестные подробности работы NAT

Резервное копированиеконфигураций активного сетевого оборудования

Штопаем дыры в Ilohamail

Почтовый сервер на основе реляционной СУБДОцените преимущества!

Создаём кластер для PostgreSQL

Защищаем Windows-системы с помощью CORE FORCE

№2(39) февраль 2006подписной индекс 20780www.samag.ru

Подключаемся к Интернету через спутник

Чем уникальна Prevx1 –общественная система предотвращения атак

Можно ли защититься от переполнения буферов?

Как повысить безопасность веб-приложений

Доставку гарантируем:качество обслуживания в пакетных сетях

ProFTPD: мастер своего дела

Практикум Python: обрабатываем входящую электронную почту

Какова цена анонимности в Сети

№3(40) март 2006подписной индекс 20780www.samag.ru

Узнай секреты WMI: события и провайдеры

Кириллизация в Linux

Знакомимся с Gentoo:установка системы

Создаем порт для FreeBSD своими руками

Zserver Suite: защищаем корпоративные хранилища данных

Управляем сетевым оборудованием с помощью протокола SNMP

Работаем с PDF из Perl

Документация – экономия времени или его бесполезная трата?

№4(41) апрель 2006подписной индекс 20780www.samag.ru

Соберите собственныйбеспроводной роутер 802.11gна ОС Linux

Как устроенафайловая система reiser4

Три способа автоматизироватьустановку ПО в сети

Управляем инсталляторами

Используем OpenSSLдля криптографической защиты данных

Создаем VPN с помощью SSL-Explorer

Техническая документация: серверы и сети

Профессиональный прогноз:что ждет сисадминов?

№5(42) май 2006подписной индекс 20780www.samag.ru

Самый подробный материал о программе Sendmail в истории IT-журналистики!

Настраиваем эффективную систему сетевой защиты Zorp

Windows SharePoint Services:разбираем на практикевозможности технологии

Box Backup: узнайте всё о горячих резервных копиях!

Лицензию? Вам какую?

Как построить отказоустойчивый кластер с минимальным бюджетом

Обзор дистрибутива Arch Linux

Генная инженерия на службе распаковки PE-файлов

№6(43) июнь 2006подписной индекс 20780www.samag.ru

Быть или не быть зарубежному софту в России?

Современный Linux-сервер: виртуализируем сеть

Создаем зоны DNS

Технология AJAX: как насчет безопасности?

Переключи драйвер NTFS в режим read-write

Настраиваем безопасный роутер на базе FreeBSD

Пишем систему динамической защиты ресурсов в сети

Первый раз в Linux-класс!

Оппонент мистера Гейтса

№7(44) июль 2006подписной индекс 20780www.samag.ru

Greylisting: хуже спама –только борьба со спамом!

StressLinux: автоматизируем тестирование железа

Устанавливаем Systems Management Server 2003

FreeNAS: строим надежнуюсистему хранения данных

Как увеличить безопасность процессов посредством chroot и jail

OpenVPN: доступ повышенной проходимости

Статистика прокси-сервера Squid

Интервью с легендарным Расмусом Лердорфом – создателем языка PHP

№8(45) август 2006подписной индекс 20780www.samag.ru

Windows Firewall: защищаем внутренние ресурсы сети

Биллинг на FreeBSD: пишем сами

Проводим инвентаризацию сети средствами SMS 2003

Как устроена файловая система JFS

Тестируем движки поисковых машин

Настраиваем DrWeb Enterprise Suite

Аудит и дизассемблирование эксплоитов

Интервью с cоздателем Asterisk

№9(46) сентябрь 2006подписной индекс 20780www.samag.ru

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

Zlock: контролируйте доступ к USB-устройствам

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

Как обнаружитьmalware-программы?

Ajax: новый каналобщения клиента и сервера

Развиваем модуль DBI

В поисках профессиональнойэтики сисадминов

Кевин Митник защищает компанииот былых коллег

№10(47) октябрь 2006подписной индекс 20780www.samag.ru

Как обеспечить необходимое быстродействие систем «1С: Предприятие»

Microsoft Operations Manager:управляем сетью

Linux-VServer: настраиваем виртуальные серверы

Создаем адресную книгу на базе OpenLDAP

Как настроить библиотеку SASL для совместной работы c Kerberos

Растущая угроза: руткиты Win32

Как зарабатывают на Open Source

Головоломка, ведущая по жизни Игоря Данилова

№11(48) ноябрь 2006подписной индекс 20780www.samag.ru

MS Windows XP SP3, или Много шума из ничего

Разрабатываем пакет управления для МОМ 2005

Кластеризация + виртуализация: Linux HA + OpenVZ

На что способен дистрибутив SystemRescueCd Linux

Безопасность в FreeBSD: разбираемся в тонкостях применения jail

Работаем с NTLM-авторизацией Apacheв домене MS Windows 2003

Чего ждать от Perl 6

Интервью с создателем популярного ресурса OpenNET

№12(49) декабрь 2006подписной индекс 20780www.samag.ru

Подробное руководствопо настройке тонких клиентов на основе Thinstation и NX

Как купить ПО от Microsoft?Особенности приобретения и использования OEM-версий

Устанавливаем MS ISA Server 2004

Выдержит ли нагрузку ваш веб-сервер? Программы для стресс-тестов

Организуем работу офисного почтового сервера на платформе Windows

В поисках анонимного прокси-сервера

Как надо и как не надозащищать веб-контент от кражи

Page 93: 049 Системный Администратор 12 2006
Page 94: 049 Системный Администратор 12 2006

92

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

Открывающее книгу предисловие Зи-ва Сураски, который наравне с пер-вым автором этого справочника яв-ляется одним из основателей компа-нии Zend, занимающейся поддержкой PHP, впечатляет: «каждый програм-мист, интересующийся расширенны-ми возможностями PHP 5, должен ее иметь».

Руководство по администрированию UNIX-подобных систем от нашего со-отечественника, не признающего бы-тующего в массах мнения, что «Linux – это не UNIX». По книге можно позна-комиться с UNIX фактически с нуля. Но отмечу, что некоторые базовые ас-пекты освещены с недостаточной точ-ностью, а это существенно неприятный

UNIX. Практическое пособие администратора UNIX, 2-е изданиеФилипп Торчинский

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

PHP 5. Профессиональное программированиеЭнди Гутманс, Стиг Баккен, Дерик Ретанс(перевод А. Киселева)

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

В самостоятельные главы также вынесены базовые расширения к PHP, обработка различных ошибок и рабо-та с XML. Примеры взаимодействия с базами данных не ограничивают-ся MySQL – представлены и SQLite,

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена интернет-магазином

books.ru.

«Символ-Плюс»

2005

400

5-93286-084-7

≈ 150 руб.

и PEAR DB. Стоит отметить обшир-ное описание возможностей библио-теки PEAR и ее компонентов. Послед-ние разделы призваны удовлетворить потребности еще более взыскатель-ной публики: в них рассмотрены воп-росы миграции на PHP 5 c PHP 4 (тре-тья версия разумно забыта как арха-изм), повышения производительности (оптимизация, проектирование, тес-тирование, профилирование...), раз-работки расширений для PHP и при-ложений для консольного примене-ния (CLI).

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена интернет-магазином

books.ru.

«Символ-Плюс»

2006

704

5-93286-083-9

≈ 390 руб.

Page 95: 049 Системный Администратор 12 2006

93№12, декабрь 2006

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

Сборник рецептов «PHP Cookbook» предназначен в первую очередь для тех, кто уже программирует на PHP. Тем, кто PHP еще не знает, авторы ре-комендуют прочитать эту книгу вто-рой после классической «Programming PHP». А после ознакомления с книгой, будучи давним обладателем и пок-лонником аналога такого сборника

Технологию AJAX по привычке мно-гие и сейчас называют сенсацион-но новым и перспективным подходом к построению веб-приложений, ко-торый вот-вот только собирается на-чать свой триумфальный марш по про-странству WWW. Однако уже очевид-но, что AJAX – это не ближайшее бу-дущее, а актуальное настоящее. Са-

для Perl («Perl Cookbook»), могу толь-ко полностью согласиться с такой не-скромной позицией. Потому что эта книга – кладезь полезных практичес-ких рекомендаций о том, как решить разнообразные задачи.

Важно понимать, что такой подход отнюдь не обязательно снижает инте-рес к представляемой информации, ог-раничивая ее узкими рамками конкрет-ных проблем. Рассматриваемые при-меры помогают лучше понять технику PHP-программирования и послужат от-личной базой для решения бесчислен-ного множества других задач, интере-сующих именно вас.

Среди рассматриваемых тем, для которых даны готовые решения: ра-бота с символами, строками и числа-ми, шаблонами (Smarty, парсинг фай-лов конфигурации, анализ логов), мас-сивами и функциями, классами и объ-ектами, файлами (в том числе архи-

AJAX и PHP: разработка динамических веб-приложенийКристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михай Бусика (перевод А. Киселева)

PHP. Сборник рецептовДэвид Скляр, Адам Трахтенберг

мое время учиться создавать веб-при-ложения на AJAX в самой популярной связке с PHP, и эта книга станет отлич-ным помощником в таком начинании.

В вводной части авторы, объяснив суть технологии, сразу демонстриру-ют элементарный пример ее реали-зации с подробными комментария-ми о том, что и для чего использует-ся и как это всё работает. В подобном изложении во многом следуют и даль-нейшие главы: базовые и самые не-обходимые аспекты применения AJAX раскрываются на основе многочис-ленных листингов кода с предвари-тельным описанием задачи, коммен-тариями к приведенной реализации и полезными сведениями «Что про-исходит внутри?».

В книге рассказывается о работе со структурой XML и данными из СУБД MySQL, обработке HTML-форм (про-

верка вводимой пользователем ин-формации), функциях автоматичес-кого дополнения (так называемых подсказках, т.е. когда скрипт «помо-гает» с вводом данных, предлагая возможные варианты), взаимодейс-твии с drag-n-drop (для перетаскива-ния различных элементов на страни-цы), примере создания чата, постро-ении диаграмм (в SVG), поддержке расширяемого языка таблиц стилей для преобразований XSLT и возмож-ностях чтения RSS-лент (с примене-нием XSLT и SimpleXML).

вами) и каталогами (представлен да-же пример простого поиска по сай-ту), обработка данных из HTML-форм. Естественно, широко раскрыто взаи-модействие с Web (причем не только с языком разметки HTML и протоколом HTTP, но и такими интернет-сервиса-ми, как почта, Usenet, FTP, LDAP, DNS). Отдельно вынесены главы по XML (с DOM, SAX, XSLT и SOAP), регуляр-ным выражениям, аспектам безопас-ности (пароли, шифрование, SSL, GPG для почты), графике, функциониро-ванию PHP-приложений в командной строке, локализации, а также PEAR.

Обзор книжных новинок подготовил Дмитрий Шурупов

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена интернет-магазином

books.ru.

«Символ-Плюс»

2006

336

5-93286-077-4

≈ 250 руб.

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена интернет-магазином

books.ru.

«Символ-Плюс»

2006

672

5-93286-059-6

≈ 390 руб.

Page 96: 049 Системный Администратор 12 2006

94

подписка на 2007 год

Редакционная подписка для физических лиц Подписку Вы можете оформить

на любой российский адрес. При заполнении разборчиво укажи-

те фамилию, имя, отчество полно-стью, почтовый индекс и адрес по-лучателя, контактный телефон.

Оформите годовую подписку и получите в подарок DVD-диск с архивом всех вышедших номеров с 2002 года. Диск будет вложен в январьский юбилейный выпуск журнала

Подписку можно оформить с любо-го месяца на любой срок.

В графе «Сумма» проставьте сум-му за выбранное количество номе-ров. Стоимость одного номера жур-нала 150 руб. За год – 1800 руб.НДС и почтовые расходы включе-ны в стоимость.

Копию заполненного и оплаченно-го бланка отправьте в редакцию по факсу: (495) 628-8253 или на элек-тронный адрес: [email protected]

Журнал высылается почтой прос-той бандеролью только после поступления денег на расчетный счет.

Page 97: 049 Системный Администратор 12 2006

95№12 декабрь 2006

подписка на 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

по каталогу агентства«ПрессаРоссии»

* годовой** полугодовой

Page 98: 049 Системный Администратор 12 2006

96

СИСТЕМНЫЙ АДМИНИСТРАТОР№12(49), Декабрь, 2006 год

УЧРЕДИТЕЛИВладимир ПоложевецАлександр Михалев

РУКОВОДИТЕЛЬ ПРОЕКТАПетр Положевец

РЕДАКЦИЯИсполнительный директорВладимир ПоложевецОтветственный секретарьНаталья Хвостова[email protected]Технический редакторВладимир ЛукинРедакторАлексей КоршуновВнештатные редакторыАлексей БарабановСергей СупруновВалентин Синицын

РЕКЛАМНАЯ СЛУЖБАтел./факс: (495) 628-8253Евгения Тарабринаreс[email protected]

Верстка и оформление[email protected]

Дизайн обложкиНиколай Петрочук

По вопросам распространенияобращайтесь по телефону:(495) 628-8253 (доб. 120)

107045, г. Москва,Ананьевский переулок, дом 4/2, стр. 1тел./факс: (495) 628-8253Сайт журнала: www.samag.ru

ИЗДАТЕЛЬЗАО «Издательский дом«Учительская газета»

Отпечатано типографиейГП «Московская Типография №13»Тираж 11000 экз.

Журнал зарегистрированв Министерстве РФ по делам печати, телерадиовещания и средств массо-вых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.).

За содержание статьи ответственность несет автор. За содержание реклам-ных материалов ответственность не-сет рекламодатель. Все права на опуб-ликованные материалы защищены.

ЧИТАЙТЕВ СЛЕДУЮЩЕМНОМЕРЕ:

Уважаемые читатели!

Обратите внимание, что теперь оформить подписку вы можете не только на полугодие, но и сразу на весь год.

Годовой индекс по каталогу «Роспечать» – 20780.Интер-почта – заказ журналов по тел.(495) 500-00-60.

Подписка on-line – SetBook.ru.

Приобрести новые и старые номера журналавы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.

Доставка почтой в любую точку России.

Настраиваем удаленный доступ к сети с помощью MS ISA 2004Предположим, у нас имеется некото-рое веб-приложение, например, сис-тема заказов on-line. Необходимо ор-ганизовать защищенный доступ к это-му ресурсу с помощью SSL. Также со-трудники компании ездят в команди-ровки и иногда работают из дома, по-этому им необходимо предоставить доступ по VPN. А еще у компании есть филиал и его сотрудникам также тре-буется доступ в локальную сеть. О ре-шении всех этих задач читайте в сле-дующем выпуске журнала.

FreeBSD в домене Windows: дополнительные возможностиПравильное подключение FreeBSD в до-мен Windows дает возможность рабо-тать с Active Directory для проверки па-ролей, членства в группах и т. д. Но это только часть того, для чего FreeBSD мо-жет использовать данную информацию. Элементарный доступ к компьютеру че-рез Microsoft Management Console, эф-фективная раздача прав доступа для пользователей домена, автоматичес-кое создание каталогов пользовате-лей – вот некоторые из них.

Размещение пользовательских бюджетов в LDAPПосле установки Linux-системы часто возникает потребность перейти к хра-нению информации о пользователях в LDAP. Обычно этот шаг связывает-ся или с построением почтового сер-вера, или с созданием PDC на основе Samba. Стандартные средства рабо-ты с пользовательскими настройками в таком случае остаются без внимания. Но есть возможность после установки минимальной Linux-системы настроить пользовательский LDAP-репозиторий и заставить практически все службы работать с пользователями «из LDAP» как с локальными.

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