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

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

№5(30) май 2005


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

СЬ
www.samag.ru

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

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

WPA-Enterprise, 802.1x EAP-TLS


НУ

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

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

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

№7(44) июль 2006

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

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

С
подписной индекс 20780
полями пользователей в AD

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

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


создателем языка Perl
www.samag.ru

Greylisting: хуже спама –

№7(44) июль 2006


И
только борьба со спамом!

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

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО НЕО
АВ СЛ
Л

StressLinux: автоматизируем
Л
ХА

ПО
УЕ

ЗА
тестирование железа
Устанавливаем Systems
Так видит журнал читатель, оформивший подписку: Management Server 2003
№5(30) май 2005

FreeNAS: строим надежную


подписной индекс 81655
www.samag.ru

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


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

систему хранения данных


Настраиваем UPS под Linux
Как восстановить
удаленные файлы под BSD
Что важно знать об IP-телефонии
танавливаем Symantec Antivirus 9.0
в корпоративной сети
Эффективно управляем
полями пользователей в AD

Как увеличить безопасность


Контролируем безопасность сети
с помощью OSSIM
Интервью с Ларри Уоллом –
создателем языка Perl

процессов посредством
chroot и jail
OpenVPN: доступ
повышенной проходимости
Статистика прокси-сервера
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Squid
Интервью с легендарным
Роспечать – 20780, 81655 Расмусом Лердорфом –
Пресса России – 87836 создателем языка PHP
Интер-почта – тел. (495) 500-00-60
в номере
5 ТЕНДЕНЦИИ 53 OpenVPN: доступ повышенной проходимости
Своевременный доступ к информации, хранящей-
ИНТЕРВЬЮ ся внутри корпоративной сети компании, порой ста-
новится решающим фактором успешной работы со-
6 Расмус Лердорф трудников. И иногда предоставить доступ оказывает-
Вы думаете, что 11 лет назад я решил разработать ся не так-то просто. Алексей Коршунов
язык сценариев, которым будут пользоваться во всем akeeper@samag.ru
мире!? Дмитрий Горяинов
dg@webclub.ru 60 Устанавливаем и настраиваем Systems
Management Server 2003
ВЕБ-ПРОГРАММИРОВАНИЕ Рутинную работу по установке и обновлению ПО луч-
ше доверить System Management Server.
9 Заглянем в будущее PHP 6 Андрей Бирюков
Что ожидается в новой версии PHP? mex_inet@rambler.ru
Кирилл Сухов
geol@altertech.ru 64 Возможности технологии
MS Windows SharePoint Services
АДМИНИСТРИРОВАНИЕ Часть 2
Что делать, когда требуется расширить функциональность
12 Greylisting: панацея от спама технологии WSS и улучшить внешний вид веб-узла.
или «мыльный пузырь»? Иван Хрипунов
Попытки покончить со спамом похожи на попытки до- i-ivank@microsoft.com
стичь горизонта – чем быстрее мы к нему движемся,
тем быстрее он отдаляется. Сергей Супрунов ЧЕЛОВЕК НОМЕРА
amsand@rambler.ru
70 Один в поле – воин!
16 Roaring Penguin CanIt: ведём борьбу Сергей Рыжиков, директор компании «Битрикс», про-
со спамом тив аутсорсинга, пиратов и интернет-шантажа.
Простое в установке, настройке и последующей экс- Оксана Родионова
плуатации антиспам-решение. Сергей Яремчук rodion@dol.ru
grinder@ua.fm
СЕТИ
23 Как работает Sendmail?
Полезные подробности. Часть 3 74 Управляем зонами DNS
Если почтовый сервер перестал справляться с нагруз- Запускаем и настраиваем программу BIND, регистрируем
кой, не спешите покупать «железо» помощнее. Воз- доменное имя, дожидаемся завершения тестов – и мож-
можно, возможно всё решится грамотной настрой- но раздавать друзьям адреса mymail@shortdomain.com!
кой Sendmail. Сергей Супрунов Рашид Ачилов
amsand@rambler.ru shelton@granch.ru

32 Статистика прокси-сервера Squid БЕЗОПАСНОСТЬ


Журнальные файлы Squid даже для небольших пред-
приятий могут быть очень объёмны. Для ведения статис- 78 Как увеличить безопасность процессов
тики или учёта нужны вспомогательные программы. с помощью chroot и jail
Павел Малахов Каковы преимущества и недостатки сhroot и jail – двух
24pm@mail.ru разных способов изолировать процесс от основной
файловой системы? Василий Озеров
42 Автоматизируем тестирование железа fr33man@fr33man.ru
с помощью StressLinux
Создаем инструмент для автоматического тестирова- РЕТРОСПЕКТИВА
ния железа всех узлов локальной сети.
Дмитрий Волков 84 Попытка изменить мир: хроники
volkov_d@nikiet.ru компании NeXT
Слухи об этой компании перестали циркулировать сра-
48 FreeNAS: строим надежную систему зу же после её исчезновения. Тем не менее, наследие,
хранения данных оставленное NeXT, очень внушительно и не должно
Как переносить данные с различных носителей в цен- быть забыто. Дмитрий Мороз
трализованное хранилище? Как строить системы хра- akuji@list.ru
нения информации в небольших организациях?
Сергей Яремчук 92 КНИЖНАЯ ПОЛКА
grinder@ua.fm

Летим скорее
Лучше каждому Информация
Оформили на почту!
получать отдельный о подписке
подписку! экземпляр журнала на 94 стр.
Принес номер
Мужики, Почему я до сих пор на работу, И у меня А можно ещё Как же я без
Я забыл
где журнал этого не сделал?! «увели» почитать такая же беда успеть? любимого журнала?
подписаться!
взяли?

№7, июль 2006 1


Спасибо Теду Кекатосу за профессиональный праздник
28 июля сисадмины всей страны будут отмечать
Многие системные администраторы День системного администратора.
говорят, что им сложно вырваться В свой профессиональный праздник вы можете выйти
в отпуск и вволю отдохнуть, что работа на улицы с мышами и клавиатурами, чтобы устроить
держит в офисе и конца ей не видно. Мы своеобразный флеш-моб и заявить миру о своем
думаем, именно поэтому День сисадмина существовании.
празднуют летом. Он, словно маленький Придумал праздник 6 лет назад американский системный
отпуск, украшает собой даже самые администратор Тед Кекатос. С тех пор последняя пятница
горячие трудовые будни. июля считается священным днем, когда сисадмины, веб-
Поздравляем всех с наступающим мастера и другие ИТ-специалисты могут после рабочего
праздником и желаем отличного дня вдоволь повеселиться вместе, пожелать друг другу
настроения, побед в конкурсах, веселых профессиональных успехов и побольше толковых
встреч с друзьями и коллегами! пользователей.
Пусть День сисадмина-2006 станет Координационный центр по празднованию этого дня
для вас настоящим праздником! сосредоточен на сайте «Сисадмин тоже человек»
(http://sysadmin.mail.ru), одном из ресурсов для сисадминов.
Полина Трояновская, руководитель Организаторы сайта продумали для вас целую программу
проекта «Сисадмин@Mail.Ru» празднования.
На сайте создан новый раздел, в котором каждый из вас
может найти коллег из своего города, чтобы в шумной,
веселой компании отметить праздник. Кроме этого, на сайте вы можете воспользоваться системой поиска
коллег со схожими интересами.

Сисадмины попадут в книгу рекордов!


Уже запущен конкурс сисадминских рекордов — профессиональных, личных, серьезных
и шуточных. Самые громкие и самые оригинальные достижения составят «Сисадминскую книгу
рекордов», причем оценивать «взлеты» будут сами посетители сайта. Авторов лучших рекордов
наградят сувенирной продукцией, подарочными сертификатами интернет-магазина
Daripodarki.ru, сертификатами на обучение в Учебном Центре Softline, призами от спонсоров
и организаторов, подпиской на журнал «Системный администратор». Кроме этого, на сайте
можно будет выиграть футболку с надписью «Сисадмин тоже человек» и эпатировать ею
прохожих.
Готовьтесь к конкурсу репортажей о том, как вы отметили свой профессиональный день.
Вы сможете размещать на сайте интересные отчеты и забавные фото. Авторы лучших
материалов получат призы.

«Бред юзера или явь сисадмина»?


Завершением программы празднования станет выход в свет второго тома книги «Бред
юзера или явь сисадмина», своеобразного сборника сисадминских историй, баек,
стихов, первый том которого был издан два года назад.
Примечательно, что сайт http://sysadmin.mail.ru был создан в 2004 году как раз в связи
с празднованием Дня сисадмина. Тогда на этом ресурсе проводили конкурс «Сисадмин
тоже человек», организованный http://soft.mail.ru. Оказалось, что тема, несмотря
на свою специфичность, очень востребована. Название конкурса трансформировалось
в название сайта, который стал активно развиваться.
День Системного Администратора – отличный повод собраться вместе на сайте
или в родном городе. Пусть он пройдет так, чтобы было о чем вспомнить.
До скорых встреч!
тенденции
Закон приняли. Поправки отклонили Xandros позиционируется как удобная в использовании
Как и предсказывал «Системный администратор» в кон- операционная система, призванная стать заменой Windows.
це июня Госдума поставила точку в нашумевшей исто- Так, целевой аудиторией для Xandros в первую очередь яв-
рии с запретом зарубежного софта (№6 за 2006 год). ляются корпоративные пользователи, желающие пере-
Проект федерального закона «Об информации, инфор- вести рабочие станции с Windows NT/2000 на GNU/Linux.
мационных технологиях и защите информации» во втором И поскольку интерфейс Xandros создавался с этими наме-
чтении поддержали 395 из 450 депутатов. И также актив- рениями, он по возможности приближен к привычному ви-
но думцы… промолчали по поводу двух поправок, касаю- ду Windows.
щихся запрета использования зарубежных программно-тех- Кроме того, в состав Xandros вошли различные специ-
нических средств в стратегических отраслях и особо важ- ализированные коммерческие продукты, такие как NTFS-
ных объектах, а также недопустимости наличия в данных драйверы для Linux от Paragon Software, и CrossOver Office
средствах недокументированных функций. Авторы попра- от CodeWeavers.
вок, единороссы Геннадий Гудков и Александр Хинштейн,
вынесли их на отдельное голосование. Но подавляющее Проект FreeDOS официально закрыт
большинство депутатов – 382 и 386 – просто уклонились 28 июня было официально объявлено о том, что проект
от процедуры, демонстративно проигнорировав все воз- свободной реализации DOS прекращает свое существо-
можные позиции – «за», «против», «воздержался». «По су- вание.
ти это был саботаж, невыполнение прямых обязанностей Те, кто следит за развитием проекта, вряд ли удивил-
народных избранников», – сказал «Системному админис- ся этому событию. Пояснение было дано на официальном
тратору» Дмитрий Горовцов, помощник депутата Госдумы сайте FreeDOS.org: «28 июня 1994 года проект, которым
РФ Геннадия Гудкова. Только 65 и 63 депутатов при голосо- стал FreeDOS, явился миру. Через 12 лет мы так и не до-
вании за первую и вторую поправки определились со сво- стигли релиза «1.0», и нет никаких намеков на то, что это
ей позицией и нажали кнопку «за». произойдет в обозримом будущем. Я сдался. Я перестал
Таким образом «зеленый свет» дан и зарубежному соф- ждать «1.0». FreeDOS мертв».
ту в России, и прославившемуся законопроекту. «В целом, – Смерть проекта ознаменовалась переездом домашней
пообещал Председатель Госдумы Борис Грызлов, – мы при- страницы FreeDOS на популярный хостинг SourceForge –
мем его до конца текущей сессии». http://freedos.sourceforge.net.
В чем же состоит суть будущего закона? Здесь впер-
вые появился термин «Интернет» и особо оговаривает- Составил Дмитрий Шурупов
ся создание условий для вхождения России в мировое по материалам www.nixp.ru
информационное пространство, развитие и эффектив-
ное использование информационно-телекоммуникаци-
онных сетей.
Современное состояние электронного документирова-
ния информации также нашло отражение в новой редак-
ции закона. Электронный документ и электронно-цифро-
вая подпись введены в правовое поле и будут признаваться
равнозначными в гражданско-правовых отношениях собс-
твенноручной подписи и обмену документами.
Согласно новой редакции закона в основу принципов
регулирования информационных отношений легли консти-
туционные права россиян на информацию, неприкосновен-
ность частной жизни и равноправие языков народов, про-
живающих на территории России. Теперь государствен-
ные органы и органы местного самоуправления будут обя-
заны обеспечить доступ к своей информации как на рус-
ском языке, так и на государственном языке соответству-
ющей республики Российской Федерации.

Ольга Максимович

Вышел Linux-дистрибутив Xandros 4.0


Во второй половине июня был анонсирован релиз Linux-
дистрибутива Xandros 4.0, нацеленного на Windows-поль-
зователей.
Xandros 4.0 по традиции основан на Debian GNU/Linux
(на последней стабильной версии – 3.1) и содержит специ-
фичные для соответствия Linux Standard Base (LSB) поп-
равки, созданные в рамках Linux-альянса DCC.

№7, июль 2006 5


интервью

Расмус Лердорф: «Вы думаете, что 11 лет назад я решил


разработать язык сценариев, которым будут пользоваться
во всем мире!?»

В этом году Расмус Лердорф,


изобретатель одного
из самых популярных
языков веб-сценариев,
приехал в Москву вместе
с разработчиком ядра PHP
Андреем Змиевским,
чтобы принять участие
в V Международной
конференции «Современные
технологии эффективной
разработки веб-приложений
с использованием PHP».

П
ризнаюсь, я с некоторым трепе- Yahoo!. Есть ли здесь связь? Как вы ный продукт. Подчас это бывает очень
том ждал этой встречи: человек, совмещаете одно с другим? нелегко. Мы помногу раз возвращаем-
который одиннадцать лет назад Да, несомненно, это связано. Yahoo! ся к обсуждению одного и того же. Спо-
изобрел язык, на котором сейчас пи- очень широко использует PHP, а я был рим, убеждаем друг друга. Это очень
шут миллионы людей во всем мире, – его изобретателем и продолжаю много живой процесс. Но я не говорю реша-
это живая легенда. Но вместо этакого работать над его развитием. Они прос- ющего слова. Я не был таким челове-
умудренного опытом и преисполненно- то наняли меня для того, чтобы я по- ком все эти годы и не являюсь им те-
го сознанием собственной значимос- мог им с PHP. перь. Я часть группы, часть сообщест-
ти мэтра мне посчастливилось побесе- ва, которое принимает решение. PHP –
довать с очень общительным и откры- Господин Лердорф , вы многократно это большой коллективный проект, ко-
тым человеком. говорили, что PHP – это труд очень торый я не смог бы сделать в одиноч-
многих разработчиков и вы всего ку, без помощи других людей.
Господин Лердорф, вы впервые лишь один из первых. Какова ваша
в нашей стране, с чем это связано, роль в развитии языка, в принятии С момента выхода PHP-3 до PHP-4
почему именно сейчас вы приеха- ключевых решений сейчас? прошло довольно много времени,
ли к нам? Действительно, PHP – это коллектив- и визуальная разница между эти-
Да, это мой первый визит, хотя я давно ный труд, и продукт сотрудничества ми версиями языка для пользова-
интересуюсь вашей страной. Я много многих и многих людей. И хотя кто-то, теля весьма ощутима. Так же много
читал и много знаю о России и хотел как я, работает в проекте с самого на- времени и различий отделяют друг
побывать здесь. Почему именно сей- чала, имеет больший опыт, написал от друга PHP-4 и PHP5. На первый
час? Даже не знаю. Никакой особой больше кода, чем новые люди, такого взгляд основное отличие будущей
причины тут нет. Я стараюсь посещать человека, который говорит всем «да» версии – исключительно во встро-
конференции, на которые меня пригла- или «нет» по поводу тех или иных ре- енной поддержке Unicode. С точ-
шают, если есть время и возможность. шений, просто не существует. И уж, ко- ки зрения конечного пользователя,
Меня пригласили, была возможность нечно, я не тот человек. Люди, которые эта смена версий может показаться
приехать, и я приехал. пишут код, выполняют основную рабо- не настолько очевидной. Что вы мо-
ту, именно они в конечном итоге выра- жете сказать об этом?
Вы автор-разработчик языка PHP, батывают и принимают коллективное Смена версии происходит всякий раз,
и в то же время один из сотрудников решение о том, что включать в конеч- когда у нас накапливаются достаточно

6
интервью
серьезные изменения в коде. И внед- су различных вещей, в нем зачастую тельно отражает мой собственный под-
рение поддержки Unicode относится не так просто найти односложный от- ход. Можно даже назвать PHP проце-
именно к таким. вет на конкретную задачу. дурным языком с объектами.
Кроме того, номер версии – это Это общая проблема универсаль-
не только цифра для конечного поль- ных языков. Поэтому я не вижу с их Самая распространенная для веб-
зователя. Это завершение некоторо- стороны прямой конкуренции. Есть лю- проектов платформа – это UNIX +
го этапа для людей, которые созда- ди, которые любят PHP и которые лю- Apache. Однако в последнее время
ют код PHP. И мы должны это четко бят путь понятных и простых PHP-ре- очень много разговоров о том, что
обозначить. шений для веб-задач. И они вряд ли такое сочетание уже не удовлетво-
Да, различия между третьей и чет- получат его в других языках. Я люблю ряет запросам веб-проектов с боль-
вертой или четвертой и пятой вер- PHP именно за понятность. шим трафиком и высокой пользова-
сиями на первый взгляд более на- То есть наше внимание всегда со- тельской посещаемостью. Возника-
глядны, чем те которые мы планиру- средоточено собственно на Web и воз- ют решения, построенные на осно-
ем для PHP-6. Но в действительнос- никающих в нем типовых задачах. Ко- ве других веб-серверов с использо-
ти они грандиозны. Мы проделали нечно, вы можете делать с помощью ванием FastCGI. Что вы можете ска-
очень большую и качественную работу PHP и другие вещи, но для нас, как раз- зать по этому поводу?
для всех тех, кто использует PHP. работчиков, первоочередной целью У нас есть поддержка FastCGI, и, дейс-
Дело в том, что проблеме Unicode остается именно эта. И такой подход твительно, не так давно мы продела-
посвящено множество внешних рас- несомненно привлекает к нам нашего ли большой объем работ в этом на-
ширений и частных решений. Теперь пользователя. Не думаю, что мы его правлении. Кроме того, нашим основ-
же мы, наконец, смогли встроить не- потеряем. Так что в действительности ным принципом остается открытость.
посредственно в PHP, и внутренние я не очень забочусь о сравнении наше- Если кто-то заинтересован в том или
различия между 5-й и 6-й версиями го развития с другими языками и инс- ином новом решении, он может при-
очень велики. Эти изменения могут трументальными средствами. Не ду- соединиться к проекту и реализовы-
отразиться на разрабатываемых про- маю, что они могут предложить что-то вать свою идею. Но, в любом случае,
граммах. В рамках одной версии мы существенно проще и эффективнее, мы ориентируемся на большинство на-
стараемся соблюсти преемственность чем то, что мы делаем в PHP. ших пользователей. В конечном итоге
в поведении программ. Если что-то ра- большинство использует PHP под UNIX-
ботает у вас в версии 5.1, то оно будет PHP-5 – это объектная ориентация. подобными системами и веб-сервером
работать и в версии 5.2 и в версии 5.3. Это поддержка классов, использо- Apache, и первоочередные изменения
Таким образом, мы добавляем новые вание шаблонов программирова- и исправления делаются именно для
модификации и исправления. Но все ния, внедрение статистических ме- этой платформы. В качестве примера
это допустимо только до тех пор, пока тодов и т. п. Вместе с тем довольно можно рассмотреть СУБД Informix. Она
не происходит качественный скачок. долгое время PHP был скорее про- может работать, скажем, под управле-
И этот скачок – PHP-6. цедурным языком. К чему больше нием ОС Novell. Но людей, использую-
тяготеете вы сами? К процедурно- щих в такой связке PHP, будет, навер-
PHP все время сравнивают с други- му или объектно-ориентированно- ное, трое во всем мире. Да, их сооб-
ми языками и технологиями – ASP, му подходу? щения об ошибках будут учитываться,
JSP, Python или Ruby On Rails. А ко- Я использую смесь обоих подходов. но рассматривать их будут в послед-
го вы сами видите в качестве глав- Мне нравится смешивать процедуры с нюю очередь.
ного конкурента? На что ориенти- объектами. Когда я думаю о чем-то как Поэтому приоритетной для нас по-
руетесь при выборе стратегии раз- о целом объекте, я и делаю это объек- прежнему остается платформа UNIX-
вития языка? том. Разумеется, есть люди, которые Apache-PHP.
Наша основная цель – решение пов- стремятся сделать свой код полностью
седневных проблем, возникающих объектно-ориентированным. Но ко мне То есть у себя в Yahoo! вы остаетесь
в Web. И мы создаем средство для ре- это не относится. Для меня это пример- верными связке с Apache, и, несмот-
шения таких проблем и всегда фокуси- но 50 на 50. В публичных выступлени- ря на большую популярность и по-
руемся на том, чтобы решить возник- ях я часто использую процедуры, что- сещаемость, вы не ощущаете про-
шую проблему, а не на том, как это бу- бы сохранить простоту и наглядность. блем ресурсоемкости и т. п.?
дет укладываться в какую-нибудь кон- Для того чтобы продемонстрировать Я не думаю, что тут вообще есть ка-
цепцию развития языка. Конечно, есть какое-то действие, мне не нужен объ- кая-либо проблема. Это работает уже
другие подходы, и другие инструмен- ектный код, к тому же он будет более много-много лет. FreeBSD и веб-сер-
тальные средства строятся совершен- длинным. Объектно-ориентирован- вер Apache – это очень простое, эф-
но иначе. Там люди могут проделывать ный слой может лежать где-то глубо- фективное решение. И оно действи-
массу работы для того, чтобы ответить, ко внутри, а поверх него будет сущес- тельно хорошо работает.
например, на вопрос: «Как мне решить твовать простой и понятный сценарий
эту задачу с помощью Python?» Пос- с процедурным кодом. Скажем так, Если не секрет, какова доля PHP-
кольку Python – универсальный язык в PHP никогда не было объектов ради разработок в Yahoo!?
и с его помощью можно делать мас- самой идеи объектов. И это действи- Сейчас в Yahoo! PHP использует-

№7, июль 2006 7


интервью
ся, примерно в 80-90% процентах за- из них – это, маленькая лаборатория тарий, который постепенно вырос
дач. Конечно, мы используем и C/C++ по изучению насущных проблем. И то, в какую-то библиотеку, которая бы-
код. PHP – это верхний слой, уровень в чем будут заинтересованы эти лю- ла открытой для всех, и вот так, пос-
представления, уровень веб-сервера, ди, на то и будет нацелен PHP. Потому тепенно, все это наросло как снеж-
а большая часть «тяжелой» бизнес-ло- что само PHP и есть сообщество. Не я, ный ком. Прошло уже 11 лет. Что вы
гики написана на С++. не Андрей Змиевский – никто отдельно! можете сказать сейчас, оглядыва-
Вместе с тем нельзя говорить, что Да, мы многое делаем в проекте, и, воз- ясь назад? Не жалеете ни о чем?
Yahoo! везде и всюду использует ис- можно, поэтому наш голос звучит более Сожалею ли я о чем-нибудь? Нет, это
ключительно PHP. Скорее так – почти авторитетно, чем голос других участ- было здорово! Конечно, никаких пла-
в каждой задаче мы используем PHP ников. Но если завтра мы с ним сой- нов о том, чтобы создавать целый язык
на верхнем уровне, на входе и большое дем с ума и начнем нести полную чушь, у меня не было. Самый-самый первый
количество внутренних процессов, на- мы услышим в свой адрес крепкое ру- скрипт, который я написал, был очень
писанных на С++ под этим слоем. гательство. Точно так же, как и любой простым и решал простые задачи. Ког-
другой член сообщества. Мы должны да меня спрашивали: «Как ты это де-
Вы приехали к нам вместе с одним находить взаимопонимание со всеми лаешь?» – я объяснял, что написал
из активных разработчиков ядра Ан- остальными участниками. Именно со- некий простой инструмент. И я просто
дреем Змиевским, и вы автор язы- общество в целом и возникающие пе- давал его всем тем, кто ко мне обра-
ка и по-прежнему остаетесь одним ред его членами задачи решают, ку- щался. Вот так это просто распростра-
из вдохновителей проекта PHP. Что да и каким путем пойдет PHP дальше. нялось, прямо с моей домашней стра-
мы можем ожидать в будущем? Есть В каком направлении пойдет Web, туда нички. Неужели вы думаете, что один-
ли уже сейчас какие-то планы даль- вслед за ним пойдет и PHP. надцать лет назад я сел и начал обду-
нейшего развития, новой версии? Я не провидец. Конечно, я хотел бы мывать план, вроде такого: «Так, я со-
В PHP-5 мы решали проблемы раз- знать, что будет интересовать людей бираюсь разработать язык сценариев,
работки веб-сервисов, переработали хотя бы в ближайшие три года, но я которым будут пользоваться во всем
поддержку XML и т. п. Слишком мно- не знаю. Я могу только догадываться. мире…»? Разумеется нет! Я просто-на-
го людей были недовольны тем, как просто решал те проблемы, которые
это было решено в PHP-4, так что нам Вопрос, который наверняка зада- передо мной возникали. Другие лю-
пришлось бросить все силы на то, что- ют вам постоянно: что автор языка ди говорили, что это хорошее реше-
бы это улучшить. И сейчас аналогич- вкладывал в аббревиатуру PHP? ние и также начинали его использо-
ная ситуация породила необходимость В самом начале я назвал это Personal вать. И вот так-то все постепенно раз-
PHP-6: очень многие пользователи ис- HomePage Tools. Постепенно люди со- расталось и разрасталось.
пытывают проблемы с использовани- кратили это название до PHP. В следу-
ем функций mb_string и вынуждены ис- ющей версии, когда я добавил обра- Перефразируя слова Линуса Тор-
кать обходные пути решения этих про- ботку форм, добавилось «FI» (прим.: вальда, можно ли сказать, что все
блем. Сейчас все большее количество от англ. form interpreter). Это было что- это было ради удовольствия?
разработчиков стремятся сделать свои то вроде маленькой шутки, перефра- Я бы не стал говорить, что все это бы-
веб-проекты в полной мере интерна- зом для TCP/IP. Чувствуете? TCP/IP ло «просто ради удовольствия». Люди
циональными, с полноценной много- и PHP/FI. Затем, когда появился PHP-3, нанимали меня для того, чтобы решать
язычной поддержкой. В рамках PHP-5 который уже не был просто набором вполне конкретные задачи. При этом
это не так просто, как нам бы хотелось. инструментов для домашних страни- я видел, что довольно часто они об-
И решение этой проблемы – главный чек и который можно было использо- ращаются ко мне с одними и теми же
мотив, главная цель PHP-6. вать для множества различных веб-за- проблемами. Постепенно у меня на-
Вы спрашиваете меня, что будет дач, мы стали подумывать о смене на- копился свой, готовый инструмента-
в PHP-7? Какова следующая цель? Это звания. Но ничего удачного нам в го- рий для их решения. Это получает-
все равно, как если бы вы спросили ме- лову не приходило. Кроме того, уже ся, как песенка для рекламы: «У ме-
ня: «А каким будет Web? Что произой- были люди, которые привыкли поль- ня есть мое чудесное средство, детка.
дет в Web в следующие три года?» Ес- зоваться сокращением PHP, и нам Бац-бац! И я решу им все твои пробле-
ли бы я только знал! А вот, например: не хотелось их расстраивать. Так что мы!» – что-то типа такого.
мы все заработаем кучу денег! мы просто сменили название на аб- Конечно, это было и моим увлече-
Я не знаю точно, в каком направле- бревиатуру. Больше не было Personal нием. Мне все это очень нравилось.
нии будет развиваться Web. Думаю, он HomePage Tools, было просто PHP. Все Но это также было и моей работой.
станет более интерактивным, но какая эти выдумки по поводу «protected» или Я был и разработчиком, и консультан-
именно технология будет при этом до- «preprocessed» – это глупость. Мы так том. То, что я делал – решал возника-
минирующей? Этого я не знаю. Но ка- и сказали людям: «Это просто PHP». ющие у людей проблемы. Это было не
кой бы она ни была, PHP будет под- только ради удовольствия, это были ре-
держивать эту технологию, потому Расмус, в интервью в 2002 году вы альные проблемы, которые нужно было
что двигается и развивается вместе сказали, что никогда не думали раз- решать. Именно так все и было!
со своим сообществом и это сообщес- рабатывать язык сценариев, вы де-
тво – тысячи и тысячи людей. И каждый лали свой маленький инструмен- Дмитрий Горяинов

8
веб-программирование

Заглянем в будущее

Кирилл Сухов
Смена версий у популярных программных продуктов, как правило, предполагает радикальные
изменения в технологии или идиологии его использования. MySQL, PHP, Perl, PostgreSQL…
и PHP тут совсем не исключение – в четвёртой версии было с нуля переписано ядро,
в пятой появилась новая объектная модель.

В
начале осени прошлого года В настоящее время идёт разра- чанию инициализировались автомати-
на snap.php.net стали доступ- ботка, не утихают споры. Но некото- чески. Это было, конечно, удобно для
ны версии шестой ветки пре- рые контуры PHP 6 видны уже сегод- разработчика, но несло в себе огром-
процессора. Я предлагаю разобрать- ня. Итак, приступим. ную угрозу безопасности приложению,
ся, что в них нового и чем эта вер- так как любой злоумышленник мог под-
сия, пока ещё прорисованная доволь- Отречёмся менить значения переменных. Начиная
но смутно, отличается от предыдущих. от старого мира с 4.2 параметр register_globals по умол-
В начале августа прошлого года раз- В первую очередь грядущая версия чанию был выключен, оставляя воз-
работчиками было принято решение – языка поражает не нововведения- можность обращаться к переменным
CVS HEAD был отделен в ветку PHP.5.1, ми, а количеством вещей, от кото- окружения через глобальные масси-
после чего HEAD стал PHP 6.0.0. Оз- рых решено отказаться. Разработчи- вы ($_GET, $_POST, $_SERVER и т. д.),
начало это одно – все нововведения ков не трудно понять. PHP завоевал но многие приложения уже были напи-
отныне стали применяться для этой, мир своей простотой и доступностью, саны в старом стиле, и часто недалё-
шестой ветки. Оставляя за PHP пя- но постоянно подвергался критике за кие авторы статей или книг советова-
той версии только незначительные низкую безопасность и слабую защи- ли решить проблему, просто включив
изменения и багфиксы. В середине ту от ошибок (от ошибок программис- инициализацию. Теперь об этом мож-
августа Расмус Лендорф, основатель та, разумеется). Кроме того, во имя но будет забыть – и слава богу.
языка, в своём письме сообществу обратной совместимости со старыми Дирек тивы magic _quotes _ gpc
(http://news.php.net/php.internals/17883) версиями, язык тянет за собой уста- и magic_quotes_runtime отвечают за ав-
высказал ряд пожеланий к шестой вер- ревшие deprecated, которые были ещё томатическое экранирование некото-
сии, которые это сообщество приня- уместны в PHP 3, но уже в PHP 5 ка- рых спецсимволов. Они были разра-
лось активно обсуждать. В общем-то жутся полным анахронизмом. ботаны для повышения безопаснос-
на тот момент отличие от «пятёрки» Прежде всего «чистка» коснёт- ти, но на деле их использование со-
было только одно – полноценная под- ся всем изрядно поднадоевших пара- здавало программисту дополнитель-
держка Unicode. Обсуждение дало ре- метров в конфигурации интерпрета- ные неудобства. Положение осложня-
зультаты – на ноябрьской встрече раз- тора – register_globals, magic_quotes лось тем, что эти опции любили вклю-
работчиков в Париже были озвучены и safe_mode, – из шестой ветки они чать хостеры.
основные возможности, которые пла- будут изъяты. В версиях языка, до 4.2, С режимом safe_mode ситуация
нируется воплотить в новой ветке. все переменные окружения по умол- сложнее. Директива, введённая из со-

№7, июль 2006 9


веб-программирование
ображений безопасности, устанавливает серьёзные огра- ти момента, поясню – именно это послужило причиной сме-
ничения на работу PHP-интерпретатора. При её включении ны номера версии. Дело в том, что по настоящий момент
пропадало большинство возможностей работы с файлами при разработке приложений приходится сохранять вари-
и каталогами (в частности затруднительно положить файл анты имён методов, функций, переменных одновременно
конфигурации выше директории веб-сайта, а ведь это ра- в двух таблицах символов – Unicode и non-Unicode. Решено
зумная мера безопасности). С другой стороны, сам по се- обеспечить поддержку Unicode на уровне сервера (а не от-
бе режим safe_mode был далеко не панацеей и его огра- дельного запроса, как было до сих пор). Соответствующие
ничения легко можно было обойти. Таким образом, он, не настройки будут храниться в файлах конфигурации и уйдут
давая защиты, был вечной головной болью разработчиков. из поля зрения программиста.
После его исключения исчезнет риск нарваться на хостинг Ранее PHP действовал как исключительно бинарный
с safe_mode=on. (Следует сказать, что функциональность обработчик, тип байтовой строки был единственным и ис-
директивы open_basedir будет сохранена.) пользовался для работы с любой информацией, что созда-
Что ещё? Поддержка таких древностей, как библиотеки вало (и создаёт) различные проблемы при работе с коди-
Freetype 1 и (недоброй памяти) GD 1 также прекращается. ровками и национальными символами. В PHP 6 введёна
Устраняется поддержка ASP-тегов (по сею пору <% можно возможность работать с типом данных «строка Unicode»,
после включения соответствующих настроек использовать реализованная посредством библиотеки ICU (International
на равнее с <?php или <?, зачем – мне непонятно). Components for Unicode). Использование ICU API позволи-
Функция dl(), динамически подгружающая расширения ло реализовать такие возможности, как корректная сор-
PHP (и вызывающая своей некорректной работой много- тировка, с использованием любого национального алфа-
численные нарекания), будет сильно ограничена в правах, вита, транслитерация, расположение текста для арабско-
а именно – останется только в SAPI. При этом каждую фун- го, иврита, хинди и тайского языков, трансформации тек-
кцию SAPI пройдется регистрировать отдельно. Честно го- ста и многое другое.
воря, не жалко, так как многие разработчики склонны рас- Это касается не только обработки строк и летералов, но
сматривать её существование почти как нелепость. и кодировок HTTP-запросов скриптов и индификаторов. Ан-
Расширение для работы с регулярными выражениями дрей Змиевский в своём докладе на конференции в Москве
ereg будет удалено из дистрибутива и перенесено в репози- в мае этого года привёл следующий пример кода:
тарий PECL. Я не думаю, что это повод для паники, так как
подключить его – минутное дело, кроме того, уже в пятой class ....... {
function ... ...... { ... }
версии языка рекомендуется использовать perl-compatible- function !..$ ....) { ... }
регулярные выражения. Правда, разработчики пошли даль- function .......... { ... }
}
ше и собираются перенести в PECL все расширения для ра- $..... = array();
боты с базами данных, за исключением PDO (расширение $.....[‘‫עְיולוּחַשׁנָָה‬’] = new .......();
для унифицированного доступа к базам данных, введён-
ное в версии 5.1). Этот шаг, конечно, логически обоснован, Вообще поддержка Unicode в PHP 6 – это довольно об-
но пока выглядит страшновато. ширная тема, заслуживающая отдельной статьи.
Теперь о наведении порядка в синтаксисе. Не знаю, как относиться к следующей новости, но от-
Старые названия массивов (если точнее, старые массивы) ныне гарантированна полная поддержка FastCGI, причём
вида HTTP_*_VAR из языка удаляются. Их применение вызо- данная технология будет включена по умолчанию (без воз-
вет ошибку уровня E_CORRE_ERROR. Старый синтаксис об- можности отключения) для CGI SAPI.
ращения к строковым индексам {} будет исключён, зато поя- Самое «вкусное» – PHP-акселератор APC, кэширу-
вится возможность получать символы от конца строки запи- ющий сценарии в байт-код, будет теперь включён в яд-
сью вида [4]. Оставшийся от PHP 4 синтаксис вида $foo=& new ро. Это, на мой взгляд, самое радикальное нововведение,
myClass(), или function &foo, в новой версии вызовет ошибку и именно его я буду ждать. Кроме того, в дистрибутив ре-
уровня E_STRICT (хорошо, что не выше – слишком много ко- шено включить расширения XML Reader (простой XML-пар-
да написано в стиле ООП PHP 4). Более того, поддержка ZE1 сер, основанный на SAX) и XML Writer (провайдер для XML
будет вообще исключена. В объявлении полей класса конс- API). Оба расширения, взятые из репозитария PECL, при-
трукция var (использующаяся в PHP 4, но приводящая к ошиб- званы значительно облегчить работу программиста с XML-
ке уровня E_STRICT в пятой версии языка), теперь уравне- документами. Из PECL также будет добавлено расшире-
на в правах с модификатором public. Это безусловно пос- ние Fileinfo.
лабление, но оно вполне укладавается в рамки «наведения Добавлен новый тип данных – init64, который будет со-
порядка». Отпадает необходимость модернизации несколь- ответствовать integer.
ких приложений, не списанных на PHP 4. Ну а чтобы совсем Ну и по мелочи: оператору break можно будет задавать
«добить» нерадивых разработчиков, сообщения об ошибках метку, на которую будет перенесено выполнение програм-
уровня E_STRICT теперь войдут в E_ALL (при переходе на мы после прерывания, станут возможны конструкции вро-
пятую версию параметры были разделены). де следующей:

Что нового <?php


Изъято довольно много, что предлагается в замен? Прежде for ($i = 0; $i < 9; $i++)
всего поддержка Unicode. Для тех, кто не осознаёт важнос- {

10
веб-программирование
if (true) { static function static2() {
break foo; echo "B::static2\n";
} }
echo "not shown"; }
foo:
echo "iteration $i\n"; B::staticA();
} ?>
?>

Foreach сможет работать с многоуровневыми масси- Результатом работы будет вывод «A:static2».
вами:
Чего не будет
<?php Чего точно не будет, так это типизации переменных. По мне-
$a = array(array(1, 2), array(3, 4)); нию разработчиков. Это противоречит духу языка. Впрочем,
foreach( $a as $k => list($a, $b)) { есть идеи по поводу возможности типизации возвращаемых
}
?> значений, но они пока не проработаны. Про пространство
имён пока тоже речи нет, правда, есть слабая надежда, что
в операторе ?: будет допустимо опускать первый пара- в будущем его поддержка всё же появится.
метр.
В объектную модель будет добавлен новый предикат Заключение
static:: static2, позволяющий управлять static во время вы- Вот тут хочу высказать некоторые сомнения. Когда поя-
полнения. Для иллюстрации его работы привожу пример вился (скорее слово неверное, он не появился, он прояв-
кода: лялся постепенно, как чеширский кот) PHP 5, у многих бы-
ли сомнения, что хостеры вовремя предоставят возмож-
<?php ность пользоваться новой версией. Эти сомнения в целом
class A {
static function staticA() { оказались напрасными – все ведущие площадки обнови-
self::static2(); ли интерпретатор довольно быстро. Проблема оказалась
}
совсем в другой плоскости, а именно – в головах разработ-
static function static2() { чиков. До сих пор и повсюду многие программисты, даже
echo "A::static2\n";
} имея в своём распоряжении пятую версию, пишут на ней,
} как на четвёртой (это ещё в лучшем случае). Придется ли
class B extends A { ко двору PHP 6? Время покажет.

№7, июль 2006 11


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

Greylisting: панацея от спама


или «мыльный пузырь»?

борьба
м а – тольскооспамом.
Хуже спа
я мудрость
Админска

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

М
етодов борьбы со спамом у него сил, чтобы справиться с одной получатели уже не существуют, а то и
за последние годы разработа- из серьёзнейших проблем современ- вовсе не существовали, дисковое про-
но множество – от техничес- ного Интернета? странство для такой очереди и ресурс-
ких, таких как «чёрные списки», Байе- ные затраты на её обработку будут не-
совые классификаторы, комплекс- Идея «серых списков» оправданно высоки. Конечно, в слу-
ный анализ заголовков, до юридичес- Суть работы грейлистинга основана чае «лобовой атаки», когда все адре-
ких, когда за рассылку спама предус- на предположении, что спамеры, осу- са указываются в одном письме, такой
матриваются всё более жестокие на- ществляя рассылку, далеко не всегда проблемы не возникнет. Но посколь-
казания вплоть до уголовной ответс- выполняют предусмотренные прото- ку подобная рассылка – слишком лёг-
твенности. колом SMTP требования. В частности, кая добыча для различных фильтров,
Один из этих методов, получив- этот протокол требует, чтобы при полу- то спамеры всё чаще вносят в рассы-
ший название «greylisting», или «се- чении ответа с кодом 4xx, означающим лаемые сообщения случайные фраг-
рых списков», в последнее время при- временную проблему на сервере-полу- менты. А это уже будет означать от-
обретает всё большую популярность. чателе, сообщение помещалось в оче- дельное сообщение на каждого полу-
Для удобства восприятия, я буду ис- редь отправителя, и спустя некоторое чателя. Безусловно, можно модифи-
пользовать транслитерированный тер- время предпринимались повторные цировать программу рассылки, чтобы
мин «грейлистинг». попытки выполнить доставку. она не вела очередь, а просто поме-
На различных форумах всё чаще Очевидно, что для спамеров вы- чала проблемные адреса и выполня-
даётся совет настроить фильтрацию полнение этого требования обойдёт- ла на них повторную отправку, но в лю-
по «серым спискам» чуть ли не как ся слишком дорого в плане затрачи- бом случае для спамера это означает
окончательное решение любых про- ваемых ресурсов потребуется вести дополнительные трудозатраты.
блем со спамом. Но так ли хорош этот очередь сообщений, а учитывая, что Как следствие многие спамеры
метод на самом деле и достаточно ли в базах адресов, как правило, многие просто игнорируют любые ошибки,

12
администрирование
в том числе и временные, продолжая отсылать сообще- Теперь соответствующий демон будет запускаться сце-
ния дальше по своей базе. То есть если на первую попыт- нарием /usr/local/etc/rc.d/milter-greylist.sh автоматически.
ку соединения возвращать код 4xx, то спамер его проигно- Из текста этого же сценария можно узнать точный путь к со-
рирует и оставит ваш сервер в покое (либо наоборот, если кету, который должен использовать Sendmail для взаимо-
окажется очень настойчивым, будет непрерывно отправ- действия с milter-greylist. Этот сокет и нужно указать в ва-
лять сообщения, не утруждая себя различными паузами). шем mc-файле для настройки Sendmail:
В то время как добропорядочный сервер, «выругавшись
про себя», терпеливо положит письмо в очередь и чуть поз- INPUT_MAIL_FILTER(`miltergreylist', ↵
`S=local:/var/milter-greylist/milter-greylist.sock, ↵
же попытается ещё раз его отправить. На этом и основа- F=, T=S:4m;R:4m')dnl
на фильтрация по «серым» спискам – «правильные» сер-
веры будут предпринимать повторную попытку доставки Теперь, пересобрав конфигурационный cf-файл и пе-
спустя некоторое время (обычно это 30 минут или 1 час), резапустив Sendmail, вы получите работающий «серый»
а «неправильные» либо сделают повтор сразу же, либо не фильтр. В /var/log/maillog (если не менялись настройки
сделают вообще. по умолчанию демона Syslog) вы сможете отследить то,
как этот фильтр работает:
Пример практической реализации
Jun 5 10:23:52 mydomain milter-greylist: k556NpVc033684:
Чтобы было понятнее, рассмотрим работу грейлистин- addr 1.2.3.4 from <user@mail.server.ru> to <user@mydomain.ru>
га на конкретном примере. Для Sendmail существует про- delayed for 00:05:00
грамма milter-greylist. Её установка из портов FreeBSD тру- Jun 5 11:23:58 mydomain milter-greylist: k557Nuv5034199:
addr 1.2.3.4 from <user@mail.server.ru> rcpt <user@mydomain.ru>:
да не составит: autowhitelisted for 24:00:00

root# cd /usr/ports/mail/milter-greylist Этот фрагмент демонстрирует, что первая попытка сер-


root# make install
вера mail.server.ru доставить почту для пользователя user
Подправьте под свои требования конфигурационный завершилась задержкой сообщения на 5 минут. Спустя час
файл /usr/local/etc/mail/greylist.conf. Я рекомендую здесь сервер повторил свою попытку, за что был награждён пра-
изменить значение параметра greylist на более доброже- вом находиться в «белом» списке 24 часа. Нужно сказать,
лательную по отношению к удалённым серверам циф- что по умолчанию, чтобы попытка доставки была признана
ру, например, на 15 минут. По умолчанию используется повторной, а не новой, с зафиксированными в базе долж-
1 час, что вынудит большинство серверов тщетно выпол- ны совпасть три параметра – почтовый адрес отправите-
нять не одну, а две-три попытки отослать сообщение (а то и ля, адрес получателя и IP-адрес хоста-отправителя. Ис-
больше, если отправитель наивно надеется снизить латент- пользование конфигурационного параметра subnetmatch
ность очереди и тем самым повысить качество обслужива- позволяет понизить требования к соответствию IP-адре-
ния своих клиентов за счёт более частой обработки очере- са, признавая совпадающими все адреса, входящие в за-
ди), прежде чем ваш сервер снизойдёт до его рассмотре- данную подсеть. Это может быть полезно в том случае,
ния. Впрочем, есть разумные соображения и по поводу ис- если сервер-получатель использует FallbackMX для того,
пользуемого по умолчанию значения (см. врезку «Сколь- чтобы разгрузить очередь основного сервера, или если
ко можно ждать?!»), так что окончательное решение остав- используется пул SMTP-серверов (т.е. в тех случаях, ког-
ляю за вами. Также на первое время можно раскомменти- да повторная отправка может предприниматься с другого
ровать строку verbose, чтобы получать более полную ин- хоста). Есть ещё один параметр – lazyaw, – активация ко-
формацию о работе фильтра. торого приведёт к тому, что в автоматически формируе-
Ну и полезным будет дополнить представленный в кон- мых «белых» списках будет учитываться только IP-адрес,
фигурационном файле список «белых» адресов теми сер- а адреса получателя и отправителя приниматься во вни-
верами, с которых вы регулярно получаете «легальную» мание не будут.
корреспонденцию. Это опять-таки некоторый «акт мило- Продолжим рассмотрение лог-файла. Так будет выгля-
сердия» по отношению к отправителям: деть подключение со стороны сервера, представленного
в «белом» списке, т.е. в правилах acl whitelist:
acl whitelist domain donpac.ru
acl whitelist domain rostel.ru Jun 5 07:04:50 mydomain milter-greylist: k5534nov032377:
acl whitelist domain mail.ru skipping greylist because sender DNS name mx17.mail.ru
acl whitelist domain rambler.ru is whitelisted, (from=<gluck@mail.subscribe.ru>,
acl whitelist domain yandex.ru rcpt=<terra@mydomain.ru>, addr=4.3.2.5)
acl whitelist domain freebsd.org
Как видите, ему никаких препятствий в работе не со-
Туда же не забудьте добавить обслуживаемые вашим здаётся. Ну и, наконец, для спамеров (к сожалению,
сервером подсети, чтобы клиенты не надоедали вам пре- не для всех) будет представлена только одна запись
тензиями типа: «Я пытаюсь отправить письмо, а оно не ухо- про «delayed for 00:05:00». Что и требовалось доказать.
дит» или «Я отправил почту семь минут назад, а её до сих
пор не получили». Плюсы грейлистинга
Ещё пропишите в /etc/rc.conf такую строку: Как показывает практика, значительную долю нежелатель-
ной почты действительно удаётся отсечь с помощью грей-
miltergreylist_enable="YES" листинга (см. врезку «Немного статистики»). При этом поч-

№7, июль 2006 13


администрирование
жена на его плечи (в смысле на дис-
Сколько можно ждать?!  Многие MTA используют как раз 1 час ковую подсистему). И кстати говоря,
По умолчанию для задержки сообщений в качестве периода обработки очереди; ваш Backup-сервер наверняка будет
рекомендуется использовать значение,  Этот интервал достаточен для того, скрупулёзно придерживаться прото-
равное 1 часу. Мне оно кажется слиш- чтобы рассылка спамера была обна- кола, так что любой спамер, додумав-
ком «невежливым», и потому я рекомен- ружена, и его адрес попал в соответс- шийся использовать резервную MX-за-
дую его снизить. Впрочем, это лишь моё твующие «чёрные» списки; пись, может быть уверен, что его сооб-
мнение.  Большинство пользователей впол- щение будет доставлено.
Вас же вполне могут убедить часто не могут подождать 1 час в ожидании Если же резервный сервер занес-
приводимые доводы в защиту именно это- письма, и такая задержка во многих ти в «белый» список, то нагрузка на не-
го значения: случаях останется незамеченной. го, конечно же, значительно снизится.
Но вот сам он станет прекрасным спо-
товый трафик может ощутимо снизить- ставляются администратору или по- собом гарантированно доставить вам
ся, поскольку в отличие от различных мещаются в общедоступный каран- любое сообщение (впрочем, он его
статистических и сигнатурных анали- тин), то грейлистинг не нарушает ни в любом случае доставит, как было по-
заторов предварительный приём спа- того ни другого, работая строго в со- казано выше).
мерского сообщения не осуществля- ответствии с техническими требова- То есть, чтобы грейлистинг рабо-
ется. ниями. Поскольку любой сервер мо- тал, все Backup-серверы тоже должны
В то же время грейлистинг прак- жет при тех или иных обстоятельствах использовать эту технологию. А сле-
тически полностью исключает лож- вернуть временную ошибку, то ничего довательно, нагрузка на отправителя
ные срабатывания, когда добропоря- криминального в этом нет. возрастёт ещё больше, поскольку он
дочное письмо блокируется фильтром будет не только держать сообщение
и не попадает к адресату. Исключе- Минусы грейлистинга в очереди, но и безнадёжно «ломить-
ние может составить разве что случай, С другой стороны, грейлистинг при ся» на несколько хостов, вместо того
когда почтовый сервер отправителя всей своей идеальности обладает и ря- чтобы «успокоиться» после одной не-
по тем или иным причинам не впол- дом отрицательных моментов. Пре- удачной попытки.
не следует установленным стандар- жде всего эта технология относится Рассмотренный выше milter-greylist
там. Но это, как говорится, не наши к «невежливым», поскольку вынужда- позволяет настроить синхрониза-
проблемы. ет сервер отправителя тратить свои ре- цию между различными MX-хоста-
Также отмечу сравнительную не- сурсы на дополнительное обслужива- ми (см. комментарии к опциям peer
требовательность к ресурсам вашего ние искусственно создаваемой очере- и syncaddr в конфигурационном файле,
сервера. Конечно, всё не так просто, ди. Только представьте себе, что про- а также man greylist). Благодаря этому
как в случае «чёрных» списков на ос- изойдет с сервером типа mail.ru, если все настроенные таким образом поч-
нове DNS, но по сравнению с тем же каждое исходящее сообщение он бу- товые серверы будут использовать об-
SpamAssassin грейлистинг может счи- дет вынужден ставить в очередь и от- щую базу. То есть отправитель, обра-
таться очень простым и незатратным сылать повторно? тившийся на резервный хост после не-
методом, поскольку требует анализа Далее отправитель, получив вре- удачной попытки пробиться на основ-
только конверта сообщения и веде- менную ошибку, скорее всего попыта- ной, уже будет известен Backup-сер-
ния несложной базы, в которой будут ется отправить сообщение на резер- веру, и соответственно его обработа-
фиксироваться состояния «триплетов» вный сервер для вашего домена. Ес- ют успешно.
(IP-адрес, почтовый адрес отправите- ли Backup-сервер (т.е. хост с менее Правда, опять-таки сработает это
ля, почтовый адрес получателя) – за- приоритетной MX-записью) у вас есть лишь в том случае, если повторная
несён ли этот триплет в «белый» спи- и он не включён в ваш «белый» спи- попытка будет выполняться не сразу,
сок, была ли в недалёком прошлом сок, то львиная доля нагрузки по об- а спустя некоторое время. Ну и к со-
попытка доставить такое же сообще- служиванию очереди будет перело- жалению, не каждый администратор
ние и т. д.
Ну и ещё можно отметить «юри- Немного статистики Здесь учитывался лишь спам, источни-
дическую» чистоту этого метода. Ес- Испытания milter-greylist на небольшом, ки которого не попали в DNSBL-списки, ис-
ли блокирование почты на основа- но очень «боевом» почтовом сервере по- пользуемые на сервере (в первую очередь
нии DNSBL может вступить в проти- казали, что пользователи стали получать срабатывает блокировка по DNSBL, а затем
воречие с обязательством провайде- спама примерно в десять раз меньше, уже выполняется проверка по greylist.db).
ра обеспечивать надёжную и беспе- чем до внедрения этой системы (при том, Конечно, это не 99%, теоретически до-
ребойную работу обслуживаемой се- что для обслуживания домена использу- стижимые для тщательно настроенного (и ре-
ти, а различные анализаторы при из- ется неподконтрольный мне Backup-сервер гулярно подстраиваемого) SpamAssassin или
вестной сноровке можно рассматри- без грейлистинга). Показатели по вирусам DSPAM, но с учётом заметно более низкой
вать как покушение на конституцион- ещё лучше – их число снизилось примерно нагрузки на сервер и отсутствия «сопутс-
ное право пользователей на тайну их в 30 раз (как правило, они автоматически твующих» проблем выглядит эта техноло-
личной жизни (особенно если копии рассылаются вирусами же, которые менее гия весьма привлекательно. По крайней
сообщений, признанных спамом, до- сообразительны, чем живые спамеры). мере пока...

14
администрирование
имеет полный доступ к настройке ма-
шин, определённых как Backup-серве- Не «мильтером» единым... ках в конце статьи SMTP-прокси Spey. Не-
ры для его домена. Упомяну тый здесь инструмент, milter- которые из этих инструментов перечис-
Ещё одна проблема связана с сер- greylist, не единственный. Существует лены на страницах специализированно-
верами, на которых эксплуатирует- масса фильтров и модулей к различным го сайта, посвящённого пропаганде грей-
ся «конкурирующая» система борьбы MTA, есть самостоятельные (не зависящие листинга – http://greylisting.org. Впрочем,
со спамом – так называемый обрат- от конкретной почтовой программы) паке- не забывайте, что если для лечения бо-
ный звонок (callback). Суть этого мето- ты, такие как фильтр Spamd (см. журнал лезни существует огромный выбор раз-
да заключается в следующем: при по- №6, 2005 г.), работающий в паре с пакет- личных препаратов, значит, болезнь не-
лучении входящего соединения сер- ным фильтром pf, или упомянутый в ссыл- излечима.
вер на стадии RCPT TO приостанав-
ливает сессию и имитирует рабочую ше серверов станут использовать «се- Поэтому не стоит возлагать такие
сессию с сервером, указанным в ко- рые» списки в своей практике, тем ме- надежды на использование «серых»
манде MAIL FROM. Если эта попытка нее эффективной и более проблемной списков. И уж конечно же, не нужно
из-за несуществующего адреса отпра- для законопослушных отправителей всюду пропагандировать эту техно-
вителя или по другим причинам завер- станет эта технология. логию – чем меньше людей о ней зна-
шается неудачей, то и приостановлен- Так, по мере распространения грей- ют, тем больше преимуществ она при-
ное соединение разрывается без даль- листинга всё больше ресурсов будет несёт лично вам.
нейшей обработки. тратиться на доставку почты. Хорошо,
Нетрудно догадаться, что если если ваши пользователи имеют огра- Ложка мёда
вы будете использовать грейлистинг, ниченный и регулярный список адре- Ну и немножко оптимизма напоследок.
то у вас наверняка возникнут про- сатов, большая часть которых будет Да, сам по себе грейлистинг эффекти-
блемы с отправкой почты на серверы, постоянно присутствовать в «белом» вен лишь в небольших дозах. Но в тан-
где настроен callback: в ответ на ваше списке, не влияя на эффективность деме с такими методами, как сигнатур-
подключение удалённый сервер попы- работы. А если нет? ные анализаторы или «чёрные» спис-
тается установить с вами «встречное» Не исключено, что крупные поч- ки на основе DNS, он может оказать-
соединение, а вы его отправите «поп- товые провайдеры будут вынуждены ся весьма полезен. Ведь он вынужда-
робовать немного позже». Кому от это- устанавливать специальные Fallback- ет спамеров делать задержку в своей
го будет хуже – неизвестно. серверы исключительно для обслу- рассылке, необходимую для того, что-
В нашем «наглядном пособии» – живания «серой» почты, что естес- бы обнаружить столь странную актив-
milter-greylist – эта проблема тоже из- твенно приведёт к удорожанию ус- ность и занести их адреса или сигна-
вестна, и для её решения предусмот- луг или снижению их качества (впро- туры сообщений в соответствующие
рен ещё один параметр – delayedreject. чем, о каком качестве может ид- базы. А дальше, как говорится, де-
При его активации milter-greylist будет ти речь, если каждое новое письмо ло техники.
возвращать ошибку 4xx не после ко- в среднем будет задерживаться ми- Так что будем надеяться, что когда-
манды RCPT TO, как это предусмот- нут на сорок). нибудь в наших почтовых ящиках бу-
рено по умолчанию, а после получе- Конечно, можно возразить, что дут «оседать» только действительно
ния команды DATA. Это вынуждает «своя рубашка ближе к телу» и что до- нужные нам письма.
удалённый сервер надеяться на ус- полнительные затраты на грейлис-
пех чуть дольше, но зато не создаёт тинг с лихвой компенсируются зна- 1. http://greylisting.org – cайт, посвящён-
препятствий для «обратного звон- чительным снижением спам-трафи- ный пропаганде «серых списков».
ка», который, как правило, заверша- ка и нагрузки на оборудование, им со- 2. http://projects.puremagic.com/greylisting –
ется после ответа сервера на коман- здаваемой. Только вот действительно проект Эвана Харриса, автора идеи
ду RCPT TO. ли это снижение будет столь уж зна- и концепции «серых списков», а также
Ну и кто знает, как будут реагиро- чительным? одной из практических реализаций.
вать на ошибку 4хх службы «легаль- Ведь что требуется от спамера, 3. http://www.eserv.ru/GreyListing – cтра-
ной» рассылки. Для них тоже не до- чтобы с лёгкостью обойти грейлис- ница компании «ЕТАЙП», посвящён-
ставит удовольствия по полдня возить- тинг? Всего-навсего через час про- ная технологии «greylisting».
ся с обработкой задержанных по тем вести повторную рассылку с теми же 4. http://ru.wikipedia.org/wiki/Greylisting –
или иным причинам сообщений. параметрами... И дальше пожинать Wikipedia о «серых списках».
плоды попадания в «белый» список. 5. h t t p s : / / h d c . t a m u . e d u / r e f e r e n c e /
Прогнозы на будущее Даже не нужно ничего менять в про- documentation/?section_id=586 – FAQ
Можно сделать вывод, что грейлистинг граммах рассылки. Так что как толь- по вопросам грейлистинга на сайте Те-
при всех своих недостатках на данный ко грейлистинг станет серьёзной по- хасского A&M University.
момент – вполне эффективная тех- мехой для спамеров, он, как это ни 6. http://hcpnet.free.fr/milter-greylist – домаш-
нология. Но её эффективность опре- странно прозвучит, вообще потеряет няя страничка проекта milter-greylist.
деляется исключительно низкой рас- свою актуальность, лишившись боль- 7. http://spey.sourceforge.net – SMTP-
пространённостью. Звучит парадок- шинства преимуществ, но сохранив прокси с под держкой технологии
сально, но это так и есть – чем боль- все недостатки. greylisting.

№7, июль 2006 15


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

Roaring Penguin CanIt


Ведём борьбу со спамом

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

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

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

Возможности CanIt
В основе канадской системы CanIt ле-
жат известные утилиты: MIMEDefang –
гибкий инструмент, предназначенный
для защиты компьютерных систем
от вирусов, и SpamAssassin – извест-
ное средство борьбы со спамом. Кро-
ме того, в состав входят скрипты, уп-
рощающие установку и первичную на-
стройку, дополнительные приложения
и удобный веб-интерфейс, необходи-
мый для дальнейшей настройки сис-
темы и спам-фильтров, а также выда-
чи отчетов. Для прослушивания SMTP
соединений MIMEDefang использует
milter интерфейс Sendmail. Поэтому
почтовая система должна быть пост-
роена только на Sendmail. Это не са- Рисунок 1. Принцип работы CanIt
мый мой любимый почтовый сервер,
с настройкой и безопасностью у него лиз заголовка, анализ формата со- бы отметить хорошую документацию
постоянные проблемы. Но, очевидно, общения, Байесовский статистичес- проекта, часть которой поставляется
здесь сыграла роль его популярность. кий анализ, черные, белые и серые вместе с дистрибутивом.
Если у вас уже установлен другой MTA списки, списки известных open-proxy,
(Postfix, Exim, Qmail), то разработчики DNS-верификация, SPF (sender policy Архитектура и принцип
предлагают использовать Sendmail framework, http://spf.pobox.com). А так- работы CanIt
для фильтрации спама, а затем пере- же hit-and-run, когда неизвестному Для того чтобы немного понять прин-
давать почту основному MTA, работа- пользователю отсылается сообщение цип работы системы CanIt и проще бы-
ющему на нестандартном порту. Вам о невозможности доставки и в случае ло бы разобраться с настройкой, не-
не потребуется делать дополнитель- его повторного отправления сообще- обходимо рассмотреть её архитекту-
ные денежные вложения, если в сис- ние будет принято. Хотя здесь тоже ру. Сообщение при помощи milter пе-
теме предусмотрено достаточно ресур- имеются дополнительные настройки, редается mimedefang, который запус-
сов на развитие, правда, это несколь- позволяющие ограничить прием пов- кает отдельный процесс, работающий
ко усложнит систему. Но в том случае торного сообщения только той подсе- в дальнейшем с сообщением. Между
когда используется MTA, разработан- тью, из которой письмо было отправ- ними может быть как UNIX, так и TCP-
ное для отличных от UNIX-операцион- лено первый раз. Система может быть сокет. Процесс, получивший заголо-
ных систем, без отдельного компью- сконфигурирована для фильтрации вок и тело сообщения от Sendmail, по-
тера уже не обойтись. Либо как вари- входящего, исходящего и внутренне- мещает его во временный каталог
ант решения разработчики предлага- го почтового трафика. Можно задать (/var/spool/MIMEDefang) и через UNIX-
ют приобрести фильтрующий почто- правила фильтрации по MIME-типу, сокет отсылает команду mimedefang-
вый прокси CanIt Appliance. потенциально опасным расширениям multiplexor, который управляет пулом
В качестве антивируса по умолча- прикрепленных файлов (в документа- постоянно запущенных Perl-процес-
нию применяется ClamAV, но при же- ции приведено 56 таких расширений – сов, осуществляющих фильтрацию,
лании CanIt можно легко сконфигури- asf, bat, chm, cmd, com, crt, dll, exe, hlp, и передает сообщение одному из них.
ровать с F-Risk’s F-PROT и F-PROTD, hta, inf, scr и прочие), почтовым адре- При нехватке Perl-процессов по ко-
F-Secure’s FSAV, H + BEDV AntiVir, сам получателя и отправителя, доме- манде multiplexor запускаются допол-
Network Associates’ uvscan, Norman ну и прочие. Вы можете задать и свои нительные, а при уменьшении нагруз-
Virus Control, Sophos Sweep, Symantec правила фильтрации. ки лишние «убиваются». Чтобы избе-
CarrierScan Server, Trend Micro’s vscan Также несколько установленных жать утечки памяти все процессы пе-
и Vexira Anti-Virus. Учитывая, что ви- CanIt могут образовывать единую сеть, риодически обновляются (забегая впе-
русы часто рассылаются при помо- позволяющую синхронно тренировать ред, скажу, что это все настраивается
щи спам-технологий, они частично бу- Байесовские фильтры, Roaring Penguin в файле mimedefang.conf).
дут отброшены антиспам-фильтром. Traning Network. Если SMTP-соединение либо от-
Для определения спама использова- Кроме GNU/Linux CanIt будет рабо- правитель сообщения принадлежат
ны практически все популярные се- тать на Solaris, FreeBSD, Compaq Tru64 к любому из черных списков, сооб-
годня методы: ключевого слова, ана- UNIX, HPUX и AIX. Отдельно хотелось щение отвергается. На следующем

№7, июль 2006 17


администрирование
этапе удаляются или изолируются потенциально опасные Fedora Core 3, Red Hat Enterprise Linux 3 и Solaris 2.9 (раз-
вложения и происходит проверка на вирусы. Письмо из бе- мер архивов колеблется в пределах 8,5-9,6 Мб). Для ос-
лого списка проходит дальше без проверок. Если же оно тальных систем CanIt придется собирать из исходных тек-
не занесено в такой список, письмо проверяется и, в слу- стов (архив 12,9 Мб). В этом случае ряд операций придет-
чае если оно не оценивается как спам, проходит дальше. ся проделать вручную, поэтому в статье будет рассмот-
Если же сообщение помечается как спам, то оно проходит рен более сложный вариант. Хотя, к слову, в архиве с ис-
еще несколько этапов. Сначала на основании хэш-функ- ходными тестами в подкаталоге Packaging лежат скрипты,
ции высчитывается уникальный ID, который сравнивает- позволяющие собрать пакеты для Solaris 9, SuSE, Debian
ся с имеющимся в базе данных. Если ID совпадает со ста- и RedHat.
тусом spam или not-spam, то в первом случае отправите- Кроме самого CanIt, нам понадобятся установленный
лю отсылается код отказа, а во втором – письмо отправ- Sendmail с milter. В документации версия не указана, но на-
ляется получателю. Если же соответствующий ID не най- чиная с 8.11/8.12 использован новый milter API, с которым
ден, то письму присваивается статус one-shot и отправи- сейчас работает MIMEDefang. Я использовал Sendmail вер-
телю отсылается сообщение о временной невозможнос- сии 8.13. Далее веб-сервер Apache, первый или второй, соб-
ти доставки (такое сообщение по умолчанию не показы- ранный с поддержкой PHP 4 или 5 версий, установленная
вается в веб-браузере). Спамеры могут проигнорировать СУБД PostgreSQL от 7.3 (лучше от 8.0) и Perl не ниже 5.6,
такое сообщение и не отправить письмо повторно, а поч- так как CanIt написан на нем. Все это уже должно быть ус-
товые серверы в такой ситуации через некоторое время тановлено и настроено.
повторят его обязательно. Если ID уже занесен в базу дан-
ных как one-shot, то его статус меняется на pending и от- Небольшие подготовительные операции
правителю опять отсылается сообщение о временной не- Следующим шагом после распаковки архива следует про-
возможности доставки. Время нахождения в статусах one- верка и предварительная подготовка системы при помощи
shot и pending зависит от настроек. По умолчанию если че- скрипта, находящегося в os-specific. Вся проблема состо-
рез неделю one-shot не изменило статус на pending, то оно ит в том, что скрипты ориентированы на различные вер-
обозначается как спам. сии RedHat/Fedora, других дистрибутивов вы там не най-
дете. Если попробовать выполнить любой из них, получа-
Лицензия ется такой вот результат:
На сегодня доступны две версии продукта – CanIt Pro
и CanIt Free. Вторая версия предназначена для малого #./os-specific/fedora-core-1/prepare-system
бизнеса и по сравнению с первой имеет некоторые огра- R O A R I N G P E N G U I N S O F T W A R E I N C .
ничения. Так, пользователю не разрешается модифициро- ---------------------------------------------------------

вать исходный код для своих задач (кроме, надо полагать, Welcome to the CanIt preparation script for Fedora Core 1
GPL-продуктов, входящих в состав), система будет подде-
This script will check your system to ensure that all prerequisites
рживать не более 50 пользователей, правила всех анти- required to run CanIt are installed.
спам-фильтров может редактировать только администра-
Verifying that you are running Fedora Core 1... FAILED
тор, пользователи будут лишены некоторых возможнос- Fedora Core not found; you are running ALT Linux Sisyphus (20050723)
тей, не будет доступна техническая поддержка и Roaring
Penguin Training Network, нельзя использовать продукт Чтобы не пропустить какое-то из обязательных действий,
для обслуживания третьей стороны. Для небольшой ор- я рекомендую вам изменить любой из этих скриптов. Обя-
ганизации такие ограничения не существенны. Кроме то- зательно закомментируйте функцию проверки версии сис-
го, free-лицензия будет действительна ровно год, затем ее темы check_release и, возможно, функцию проверки нали-
придется обновлять. При этом если послать запрос зара- чия установленных пакетов, требуемых для удовлетворе-
нее, до истечения срока действия ключа, на уже исполь- ния зависимостей check_rpms. Если посмотреть на работу
зованный один раз электронный адрес, то все равно полу- функции, отвечающей за проверку наличия установленных
чите старый ключ, даже если остальные параметры (орга- пакетов, то можно получить этот список:
низация, операционная система) будут изменены. Поэто-
му, если вам нужно несколько ключей, пользуйтесь раз- db4 db4-devel perl httpd postgresql-devel postgresql
postgresql-libs postgresql-server php php-pgsql php-imap sendmail
ными адресами. sendmail-devel sendmail-cf gcc make glibc-devel m4 binutils libgcc

Готовим систему к установке Free CanIt В некоторых системах, в том числе и основанных
Во время написания статьи была актуальной версия Free на rpm-пакетах, названия могут немного отличаться. Просто
CanIt 3.2.0, выпущенная в феврале 2006 года, о ней и пой- проверьте, что у вас уже установлено. Далее скрипт прове-
дет речь. Перед получением доступа к архиву необходимо ряет наличие в системе необходимых пользователей и ка-
подтвердить лицензионное соглашение и заполнить данные талогов для работы и, если требуется, создает их. Снача-
для генерирования ключа, обязательно указав правильный ла пользователь для Sendmail.
электронный адрес. После чего внизу страницы набираем
«I agree» и нажимаем «Generate Licence Key». # id smmsp
Архивы с прекомпилированными пакетами доступны uid=112(smmsp) gid=# id smmsp
uid=112(smmsp) gid=58(smmsp) группы=58(smmsp)58(smmsp) группы=58(smmsp)
для Red Hat 8.0, Red Hat 9, Fedora Core 1, Fedora Core 2,

18
администрирование
Если в системе нет пользователя smmsp, создаем. пуска системы, если нужен запуск на остальных уровнях,
Но скорее всего это означает, что Sendmail либо не установ- укажите другой конечный каталог.
лен, либо работает от имени другого пользователя.
# ln -s /etc/init.d/canit /etc/rc3.d/S86canit
# /usr/sbin/useradd -c "Sendmail user" -r -M -d ↵ # ln -s /etc/init.d/canit-ticker /etc/rc3.d/S87canit-ticker
/var/spool/clientmqueue -s /bin/false smmsp
Для остановки при выключении и перезагрузке сис-
Теперь проверяем для MIMEDefang. темы.

# id defang # ln -s /etc/init.d/canit-ticker /etc/rc0.d/K13canit-ticker


# ln -s /etc/init.d/canit-ticker /etc/rc1.d/K13canit-ticker
id: defang: Такого пользователя нет # ln -s /etc/init.d/canit-ticker /etc/rc6.d/K13canit-ticker
# ln -s /etc/init.d/canit /etc/rc0.d/K14canit
# mkdir -p /var/spool/MIMEDefang # ln -s /etc/init.d/canit /etc/rc1.d/K14canit
# /usr/sbin/useradd -c "MIMEDefang user" -r -M -d ↵ # ln -s /etc/init.d/canit /etc/rc6.d/K14canit
/var/spool/MD-Bayes defang
# chmod 700 /var/spool/MIMEDefang
# chown defang.defang /var/spool/MIMEDefang С CanIt пока все. Проверяем настройки PostgreSQL,
# mkdir -p /var/spool/MD-Bayes Apache c PHP. В конфигурационном файле PostgreSQL
# chmod 700 /var/spool/MD-Bayes
# chown defang.defang /var/spool/MD-Bayes /var/lib/pgsql/data/pg_hba.conf локальные запросы должны
# mkdir -p /var/spool/MD-Quarantine быть помечены как trust. Обычно по умолчанию так и сде-
# chmod 700 /var/spool/MD-Quarantine
# chown defang.defang /var/spool/MD-Quarantine лано, но проверьте, чтобы не было комментария в строке
(для версий 7.3 и выше).
Даже при относительно небольшом количестве писем,
проходящих через ваш сервер, вероятно, лучшим решени- local all all trust
ем будет использование оперативной памяти для каталога
/var/spool/MIMEDefang. Это на порядок ускорит обработку В более ранних версиях PostgreSQL формат несколь-
информации. Для этого в /etc/fstab необходимо внести сле- ко иной.
дующие строки (для 128 Мб):
local all trust
none /var/spool/MIMEDefang tmpfs mode=700,size=128M, ↵
uid=defang,gid=defang 0 0
Кроме этого, в файле postgresql.conf, который находит-
Следующим шагом скрипт сохраняет старые настройки ся в этом же каталоге, параметр max_fsm_pages установи-
Sendmail из каталога /etc/mail в /etc/mail-canit-backup и со- те в 500000.
здает новые конфигурационные файлы. Теперь Apache. Убедитесь в конфигурационном файле
веб-сервера httpd.conf, что PHP подключен, а файлы, име-
# fgrep -v INPUT_MAIL_FILTER < | fgrep -v ↵ ющие расширение .php, рассматриваются как програм-
'DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, ↵
Name=MTA' > /etc/mail/sendmail.mc.NEW мы на PHP.
# cat <<'EOF' >> /etc/mail/sendmail.mc.NEW
INPUT_MAIL_FILTER(`mimedefang', ↵ LoadModule php4_module modules/libphp4.so
`S=unix:/var/spool/MIMEDefang/mimedefang.sock, ↵ AddModule mod_php4.c
F=T, T=S:15m;R:15m;E:15m') DirectoryIndex index.html index.php
EOF AddType application/x-httpd-php .php4 .php .phtml

После этого сохраняем старые настройки и компили- Во многих дистрибутивах параметр max_execution_time,
руем рабочий файл. определяющий максимальное время выполнения каждого
скрипта, в файле php.ini имеет низкое значение (обычно 30),
# mv -f /etc/mail/sendmail.mc /etc/mail/sendmail.mc.ORIG недостаточное для нормального выполнения некоторых
# mv -f /etc/mail/sendmail.mc.NEW /etc/mail/sendmail.mc
# make -C /etc/mail действий CanIt. Его рекомендуется установить в 300. Также
необходимо отключить safe_mode, так как чтение файла
Теперь проверяем и устанавливаем в автозагрузку все /etc/mail/canit/db-settings невозможно в этом режиме.
сервисы, от которых зависит работа CanIt. В различных
дистрибутивах это делается по-разному, приведу пример safe_mode = Off
для RedHat и SuSE.
Теперь запускаем PostgreSQL и Apache и переходим
# chkconfig sendmail on к следующему этапу.
# chkconfig postgresql on
# chkconfig httpd on
# /etc/init.d/httpd start
# /etc/init.d/postgresql start
Для сервисов CanIt устанавливаем запуск с большим
номером, чем у предыдущих.
Компилируем модули
# ln -s /etc/mail/canit/mimedefang-ctrl /etc/init.d/canit и устанавливаем CanIt
# ln -s /etc/mail/canit/ticker-ctrl /etc/init.d/canit-ticker
После всех подготовительных работ переходим непосредс-
Делаем символическую ссылку для третьего уровня за- твенно к сборке модулей Perl, MIMEDefang и Sendmail 8.12

№7, июль 2006 19


администрирование
(если он не установлен). В подкаталоге src архива пос- # ./install.sh --webroot=/var/www/html/rr
ле распаковки вы обнаружите 26 файлов, в том чис- R O A R I N G P E N G U I N S O F T W A R E I N C .
---------------------------------------------------------
ле и Sendmail 8.12.11 и 8.13.5, ClamAV 0.88, MIMEDefrag,
CanIt 2.55 и остальные Perl-модули для удовлетворения Welcome to the CanIt installation script.

зависимостей. Using layout file /home/sergej/work/rr/soft/canit-distro-3.2.0/layouts/layout.default


. /home/sergej/work/rr/soft/canit-distro-3.2.0/layouts... OK
В общем случае для сборки всей системы необходимо
....
дать команду./build.sh, которая сама определит, что нуж- Installing documentation and contributed code OK
но устанавливать. Installing CanIt files OK
Installing Web page files OK
*** Software has been installed successfully.
Now, initialize the Spam database by running:
# id smmsp
./init-database
R O A R I N G P E N G U I N S O F T W A R E I N C .
--------------------------------------------------------- from inside the distribution directory. NOTE: Even if
you are upgrading from an earlier version, you must still
Welcome to the CanIt build script. run ./init-database. Your existing data will be preserved.

Checking your system for prerequisites...


OK Следующий шаг – инициализация базы данных. Здесь
Looks like you have Sendmail 8.13; we'll unpack 8.13 скрипт запускаем без дополнительных параметров. И пос-
Good... all source files present and accounted for.
Unpacking archive: Digest-SHA1-2.00.tar OK ледовательно отвечая на вопросы, указываем имя и пароль
...... администратора для доступа к PostgreSQL, и пользователя,
Substituting paths in CanIt source code... OK
Building Digest::SHA1... от имени которого CanIt будет работать с базой. В квадрат-
---O-- ных скобках указаны параметры по умолчанию.
Found Perl module Digest::MD5 (2.20) SKIP
BUILD
Building HTML::Tagset... # ./init-database
OK
...... Please enter the PostgreSQL super-user name [postgres]:
Found Perl module File::Spec (0.8) Please enter the PostgreSQL super-user password:
SKIP BUILD Please re-enter the PostgreSQL super-user password:
Found Sendmail 8.13.4 with Milter Please enter the regular database user's name [spam]:
SKIP BUILD Please enter the regular database user's PostgreSQL password:
libmilter.a not found Please re-enter the regular database user's PostgreSQL password:
BUILD Please enter the database name to use [spam]:
Building libmilter... Please enter the database host if not local []:
OK
Building Sendmail wrapper program... OK Review of your entries:
Building Mail::SpamAssassin... OK Database Super-User: postgres
Building CanIt perl modules... OK Database Super-User Password: <Hidden>
Building MIMEDefang...
Regular database user: spam
OK
Regular database user's password: <Hidden>
Building Clam AntiVirus...
OK Database Name: spam
*** Software has been built successfully. You may run './install.sh' Database Host: <Local Server>
*** as root to install the software. Is this information correct? (Y/N) y

*** NOTE: There is no 'defang' user on this system. We strongly Please enter the Web GUI login name of the CanIt administrator
*** recommend creating a 'defang' user and group for MIMEDefang. [admin]:
Please enter the CanIt administrator's password:
Please re-enter the CanIt administrator's password:
Обратите внимание на вывод. Если соответствующий
Review of your entry:
модуль уже был установлен в системе, то он пропускается. CanIt Administrator: admin
Бывает, что Perl модуль по непонятным причинам не ком- Is this information correct? (Y/N) y
пилируется и тогда скрипт завершается с ошибкой. В этом Checking for existing spam database... NO
No spam database found; creating a fresh one.
случае просто установите его стандартным способом, на- No spam database found; creating a fresh one.
пример, при помощи apt-get. При сборке он будет помечен Detected PostgreSQL version 8.0.4
Creating user postgres OK
как установленный, и соответствующий шаг будет пропу- Creating database 'spam' OK
щен. Также в системе на момент сборки не было пользова- Creating standard CanIt tables, sequences and indexes
теля defang, скрипт, как видите, предупредил нас об этом. Creating sequences:
..... OK
В некоторых ситуациях, возможно, понадобится передать Creating tables:
скрипту дополнительные параметры. Например, --everything ......................................... OK
Creating indexes:
позволит принудительно пересобрать все, а при использо- ......... OK
вании --not-sendmail или --not-clamav не будут собираться Granting access on objects to postgres:
соответствующие приложения. ..... OK
Granting access on objects to postgres:
Теперь поступаем, как подсказывает предыдущий вы- ......................................... OK
вод, и запускаем скрипт install.sh, в качестве параметра ему Doing base CanIt variable descriptions OK
Doing base CanIt data OK
необходимо передать каталог веб-сервера, куда будут ско- Creating administrator account OK
пированы php-скрипты. Как вариант можно все настройки
указать в файле layouts/layout.default. Для CanIt лучше ис- Данные для доступа к БД будут сохранены в файле
пользовать отдельный каталог. Я указал rr, в примерах до- /etc/mail/canit/db-setting, их можно впоследствии изменить
кументации использован canit. вручную. Владельцем этого файла должен быть apache,

20
администрирование
группа defang права доступа 0640, на каталог и подкатало-
ги /etc/mail/canit соответственно root:root и 0755.

И последний этап перед установкой


Теперь очередь MIMEDefang. В конфигурационном файле
/etc/mail/canit/filter-settings.pl необходимо изменить значения
следующих полей, выставив их в соответствии с действу-
ющими настройками. Хотя это можно сделать затем и че-
рез веб-интерфейс (во вкладке Setup есть три мастера), но
мне удобней отредактировать один файл, чем искать на-
стройки по вкладкам, с вscjrjq вероятностью что-то пропус-
тить. В случае неудачи вы получите на указанные адреса
отладочные сообщения, например, об отсутствии или не-
возможности подключиться к базе данных.
 $AdminAddress – адрес электронной почты админист- Рисунок 2. Страница приветствия при первой загрузке.
ратора CanIt$. Обратите внимание на сообщения
 $AdminName – имя администратора.
 $DaemonAddress – адрес электронной почты, куда от имени root. В дистрибутив также включен cron-скрипт
MIMEDefang будет отсылать свои сообщения. для запуска freshclam, обновляющий антивирусные базы
 $TempfailIfDatabaseDown – при установке этого пара- ClamAV.
метра в 1, в случае невозможности просканировать со-
общение (например, отсутствие PostgreSQL) в заголо- # crontab -e
0 6 * * * /bin/sh /etc/mail/canit/canit.cron
вок почтового сообщения будет добавлено предупреж- 0 6 * * * /bin/sh /etc/mail/canit/freshclam.cron
дение X-Scan-Warning: «NOT SCANNED BY CANIT».
 $VirusHandlingIfDatabaseDown и $WindowsExecutables При помощи cron запускается скрипт /etc/mail/canit/
IfDatabaseDown – что делать при обнаружении вируса send-trapped-report.pl, задача которого – рассылать со-
или с файлами, имеющими потенциально опасное рас- общения всем пользователям о том, сколько и каких
ширение при отсутствии связи с БД («Discard», «Reject» присланных им писем находятся в карантине. Он тре-
или «Accept»). бует небольшого редактирования под действующую
сеть, но подробно останавливаться на его работе не бу-
Более тонко изменить работу MIMEDefang можно в фай- ду. Почту, находящуюся в карантине, администратор мо-
ле mimedefang.conf. жет отправить запросившему ее пользователю при по-
Настройки антивирусного сканера, который будет про- мощи скрипта /etc/mail/canit/unquarantine, указав в ка-
верять почту, производятся в файле /etc/mail/canit/virus- честве параметра каталог карантина, в котором нахо-
scanners.pl. В него включены все поддерживаемые анти- дится интересующее пользователя письмо (он находится
вирусы, для подключения любого из них достаточно снять в /var/spool/MD-Quarantine/).
комментарий с соответствующих строк.
Учитывая, что ClamAV распространяется по лицензии Первый запуск
GPL и к тому же входит в комплект CanIt, приведу пример Считаем, что веб-сервер, PostgreSQL и Sendmail уже запу-
для него. щены, пора сделать тоже с CanIt.

# http://www.clamav.net/ # /etc/mail/canit/ticker-ctrl start


$Features{'Virus:CLAMD'} = '/usr/sbin/clamd';
# Внимание clamd должен работать от имени Starting the CanIt ticker [ OK ]
# пользователя «defang»
$ClamdSock = '/var/spool/MIMEDefang/clamd.sock'; # /etc/mail/canit/mimedefang-ctrl start

Хотя возможен и второй вариант. Validating setup: [ OK ]


Starting mimedefang-multiplexor: [ OK ]
# Раскомментируйте если для проверки будет Starting mimedefang: [ OK ]
# использоваться clamscan
# $Features{'Virus:CLAMAV'} = '/usr/bin/clamscan'; При первом запуске mimedefang-ctrl в дистрибутиве
ALTLinux 3.0.4 скрипт завершил работу с такой ошибкой.
В каталоге /etc/mail/canit/ лежит скрипт clamav-ctrl, пред-
назначенный для запуска демона clamd. # /etc/mail/canit/ticker-ctrl start
Validating setup: Can't locate DB_File.pm in @INC (@INC contains:
# ln -s /etc/mail/canit/clamav-ctrl /etc/init.d/clamd /usr/local/lib/perl5/site_perl/5.8.7/i386-linux /usr/local/lib/
# chkconfig clamd on perl5/site_perl/5.8.7 /etc/perl5 /usr/lib/perl5/i386-linux /usr/
lib/perl5 /usr/local/lib/perl5/site_perl /usr/lib/perl5/vendor_
Периодически необходимо очищать базу данных от уста- perl/i386-linux /usr/lib/perl5/vendor_perl .) at /usr/local/lib/
perl5/site_perl/5.8.7/CanIt/Bayes/Signature/Berkeley.pm line 9.
ревшей информации и чистить временный каталог и каран- BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_
тин. Для этих целей служит скрипт /etc/mail/canit/canit.cron, perl/5.8.7/CanIt/Bayes/Signature/Berkeley.pm line 9.
который должен запускаться при помощи cron раз в день .........

№7, июль 2006 21


администрирование
Global Setting». Письма, приходящие на адреса, не ука-
занные в этой таблице, будут сразу же отбрасываться (ад-
рес postmaster согласно стандарту SMTP всегда считает-
ся действительным, и письма на этот адрес будут прихо-
дить в любом случае).
Здесь все просто, заносите почтовые адреса по од-
ному в линии и нажимаете «Add Recipient(s)». При этом
адреса можно писать полностью с указанием домена
(user@domain.net) или локального пользователя (user).
Во вкладке «Administration → Users» можно разрешить та-
кому пользователю вход через веб-интерфейс для про-
смотра статистики, изменение параметров работы неко-
торых фильтров. В критических ситуациях можно сбро-
сить пароль любого пользователя при помощи скрипта
/etc/mail/canit/reset-password.pl.
Рисунок 3. Предупреждение CanIt о неоптимальной настройке В других вкладках можно задать правила приема поч-
PostgreSQL
ты для домена и отправителя (рис. 4) и еще много настро-
ек. На странице Reports можно получить любые отчеты
по инцидентам.

Проверяем
Корректность установки CanIt можно проверить при помо-
щи telnet.

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 notebook.net ESMTP Sendmail 8.13.4/8.13.4; Thu, 25 May 2006 14:05:05 +0300
HELO localhost
250 notebook.net Hello notebook.net [127.0.0.1], pleased to meet you
MAIL FROM:<canit-probe@roaringpenguin.com>
554 5.7.1 CanIt is installed
QUIT

Рисунок 4. В настройках CanIt можно указать адреса Отправка письма canit-probe@roaringpenguin.com долж-
отправителей и действия, которые будут применены
при получении от них письма на завершиться с ошибкой, но будет выведено сообще-
ние «CanIt is installed», говорящее о том, что установка
В поставляемых в комплекте CanIt файлах не оказа- прошла успешно. В /etc/mail/canit находится файл sample-
лось DB_File.pm. Проблема решилась установкой пакета spam-message, отправив который можно проверить рабо-
perl-DBM-5.8.7-alt2.i586.rpm. ту спам-фильтров.
Теперь в веб-браузере набираем «http://имя_узла/rr/» А при помощи команды ps waux | grep defang убежда-
и получаем доступ к графическому интерфейсу. После ре- емся в запуске новых процессов, обрабатывающих сооб-
гистрации, используя логин и пароль, указанный при ини- щение.
циализации базы данных, вам предложат ввести регист-
рационный ключ, без которого CanIt работать не будет. Об- $ ps waux | grep defang
ратите внимание на сообщения на странице приветствия defang 9326 0.0 0.2 3376 696 ? S 13:46 0:00
/usr/local/bin/mimedefang-multiplexor -p /var/spool/MIMEDefang/ticker.pid
(рис. 2), обязательно просмотите все указанные ссылки. -U defang -m 2 -x 4 -r 100 -i 3600 -b 432000 -c 50 -w 0 -s
Первое, помеченное как warning, говорит о том, что имеют- /var/spool/MIMEDefang/ticker.sock -l -X 150 -P 4 -Y canit-ticker -F
/etc/mail/canit/ticker-filter
ся замечания по настройке (рис. 3). Администратор предуп- defang 9327 0.0 2.2 18936 5304 ? S 13:46 0:01
реждается о том, что настройки PostgreSQL не оптималь- /usr/bin/perl /usr/local/bin/mimedefang.pl -f /etc/mail/canit/ticker-filter
-server
ны (такие сообщения всегда доступны в «Setup → System …
defang 9408 0.0 0.2 4080 592 ? S 14:00 0:00
Check»). Последнее сообщение предлагает воспользо- /usr/local/bin/mimedefang -P /var/spool/MIMEDefang/mimedefang.pid -m
ваться мастером Basic Setup Wizard для первоначальной /var/spool/MIMEDefang/mimedefang-multiplexor.sock -R 1 -z
/var/spool/MIMEDefang -U defang -s -t -p
настройки CanIt. Перейдя по ссылке, вы обнаружите пара- /var/spool/MIMEDefang/mimedefang.sock -x CanIt (www . roaringpenguin . com)
метры, выставленные в файле filter-settings.pl. И наконец,
сообщение по середине сообщает, что свободная версия Информация о работе CanIt заносится в файлы журна-
рассчитана на 50 пользователей и их необходимо занес- лов. Успехов!
ти в таблицу «Valid Recipients». В версии CanIt Pro эта таб-
лица используется для обозначения действующих почто- 1. Сайт проекта Roaring Penguin CanIt – http://www.roaring
вых адресов и активируется установкой «Only accept mail penguin.com.
for accounts in the Valid Recipients table» в «Administration → 2. Сайт проекта MIMEDefang – http://www.mimedefang.org.

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

Как работает Sendmail?


Полезные подробности
Часть 3: Вопросы администрирования

Если хочешь, чтобы что-то было


сделано хорошо, – сделай это сам.

Народная мудрость

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

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


Сначала коснёмся общих вопросов щими обычным пользователям. (если они используются). Следователь-
безопасности, связанных с работой Дочерний процесс, порождаемый но, он должен обладать правами на их
Sendmail. Как мы видели в первой час- для обработки входящего соедине- чтение. В то же время право на запись
ти статьи [1], Sendmail, обеспечива- ния, должен иметь право на запись со- в .forward-файл должен иметь толь-
ющий функционирование почтового общений в каталог очереди и на чте- ко его владелец, иначе этот файл бу-
сервера, выполняет несколько различ- ние конфигурационных баз, таких как дет проигнорирован. Аналогично пра-
ных задач. Рассмотрим этот процесс aliases.db. Причём в Sendmail реали- ва на запись в файл aliases должны
с точки зрения необходимых прав. зован некоторый защитный механизм, иметь только пользователи, перечис-
Процесс, прослушивающий 25-й позволяющий снизить возможность ленные в списке доверенных (пара-
порт в ожидании входящих соедине- проблем неправильной настройки. метр TrustedUser).
ний, должен обладать правами root, В частности, принимая решение о до- Говоря о правах доступа, сразу
поскольку порты до 1024-го относятся ставке сообщения, Sendmail руководс- скажу о том, с какими правами обра-
к привилегированным и не могут быть твуется файлом псевдонимов и данны- батываются перенаправления. Если

№7, июль 2006 23


администрирование
.forward-файл настроен на передачу сообщения на стан-
дартный вход некоторой программы (по конвейеру), то про-
цесс Sendmail, выполняющий это перенаправление, полу-
чит права пользователя-владельца .forward-файла. Ана-
логично ссылки, содержащиеся в файлах, подключенных
к базе aliases с помощью конструкции :include:, будут об-
рабатываться с правами владельца соответствующего Рисунок 1. Работа утилиты mailstats
include-файла. Если его владельцем является root, то об-
работка выполняется с правами пользователя, указанного где не практикуется предоставлять пользователям shell-до-
в конфигурации опцией DefaultUser (в mc-файле директива ступ в свои домашние каталоги и право создавать .forward-
define(`confDEFAULT_USER’, `имя_пользователя’), по умол- файлы, подобное ограничение может иметь смысл. Поэ-
чанию используется mailnull). тому приведу здесь последовательность действий, позво-
В первой части статьи уже упоминалось, что по умол- ляющую этого добиться. Во-первых, добавьте такие стро-
чанию во FreeBSD создаются две конфигурации Sendmail – ки в mc-файл:
sendmail.cf для работы в режиме MTA, и submit.cf для про-
цесса, выполняющего роль MDA, то есть для доставки со- define(`confRUN_AS_USER',`mailnull')dnl
define(`confFORWARD_PATH', `')dnl
общений от локальных пользователей. Сделано это для то-
го, чтобы отказаться от suid-бита на пользователя root. Те- Вторая строка отключает использование .forward-фай-
перь Sendmail обходится suid-битом на группу smmsp, что лов. Также нужно соответствующим образом изменить
позволяет выполнять запуск процесса с правами локально- права на каталог очереди и на содержащиеся в нём фай-
го пользователя (обратите внимание, что права на очередь лы (если таковые имеются), а также на используемые ба-
clientmqueue должны принадлежать пользователю и груп- зы данных:
пе smmsp). Но процессы, порождаемые для обработки вне-
шних соединений, по умолчанию выполняются с правами root# chown -R mailnull /var/spool/mqueue
root# chown mailnull aliases aliases.db access access.db
суперпользователя.
Далее, поскольку mail.local теперь будет вызываться
Root иль не root? не «рутовым» процессом, то придётся поставить на него
Работа с правами root делает сервер MTA соблазнительной suid-бит:
мишенью для взломщиков, поскольку, проникнув в систе-
му с правами этого процесса, можно получить практичес- root# chmod 4555 /usr/libexec/mail.local
ки неограниченные возможности. Однако в конфигураци-
онный файл Sendmail можно включить параметр, позволя- Иначе натолкнётесь на такую ошибку (в файле maillog):
ющий настроить то, с какими правами MTA будет выпол- May 24 17:24:31 host sm-mta[66054]: k4ODO0sN066053:
нять свою работу. to=<user@server.ru>, delay=00:00:31, xdelay=00:00:31,
В частности, чтобы порождаемые основным процессом mailer=local, pri=65423, relay=local, dsn=4.3.0, stat=Deferred:
451 4.3.0 lockmailbox /var/mail/user failed; error code 75
дочерние, выполняющие обработку конкретных соедине-
ний, исполнялись от имени непривилегированного пользо- Если у вас есть подключаемые фильтры (например,
вателя, используется опция RunAsUser. Но для этого требу- clmilter, обеспечивающий работу антивируса ClamAV),
ется решить несколько проблем. то нужно будет также позаботиться о необходимых правах
Во-первых, чтобы разместить сообщение в очере- при обращении к этим программам. Например, попытка за-
ди, пользователь, с правами которого будет запущен пуска «по умолчанию» обернётся сообщением об ошибке:
процесс, должен иметь возможность создавать новые
файлы в соответствующем каталоге (по умолчанию – Starting: sendmail 451 4.0.0 /etc/mail/sendmail.cf: line 1670:
Xclmilter: local socket name /var/run/clamav/clmilter.sock unsafe:
/var/spool/mqueue). Permission denied
Во-вторых, если письмо предназначено для локальной
доставки, процесс Sendmail должен быть способен вызвать Чтобы его избежать, нужно позволить пользователю,
программу локальной доставки (по умолчанию mail.local) с правами которого работает Sendmail, осуществлять за-
с правами, достаточными для работы с почтовыми ящика- пись в указанный сокет.
ми любых пользователей. Поскольку теперь LDA вызыва- После всех этих корректировок осталось пересобрать
ется процессом, не обладающим правами root, нужно ли- конфигурационный файл и перезапустить сервер:
бо предоставить полный доступ непривилегированному
пользователю к хранилищу почтовых ящиков пользовате- root# cd /etc/mail; make install restart
лей, либо установить на mail.local бит suid.
В-третьих, этот процесс не сможет использовать дан- Теперь процессы sendmail, обрабатывающие входящие
ные в пользовательских .forward-файлах, либо должен быть соединения, будут работать с правами пользователя mailnull,
обеспечен доступ на чтение к этим файлам. в чём можно убедиться, просмотрев вывод команды ps:
То есть приходится учитывать целый ряд дополнитель-
ных ограничений, и в итоге безопасность может оказать- serg$ ps -axouser,command | grep sendmail
ся, наоборот, ослабленной. Впрочем, на почтовых шлюзах, root sendmail: accepting connections (sendmail)

24
администрирование
mailnull sendmail: startup with w83-193.abo.wanadoo.fr (sendmail) Статистика
mailnull sendmail: server [220.69.161.120] cmd read (sendmail)
Помимо лог-файлов полезной может оказаться и утилита
Как видите, вполне можно обеспечить работу Sendmail mailstats (рис. 1). Она выводит число принятых и отправ-
с правами обычного пользователя. Однако это ослабит за- ленных сообщений (msgsto и msgsfr соответственно), вхо-
щиту на других участках – suid-бит на файле mail.local, до- дящий и исходящий трафик (bytes_to и bytes_from), число
полнительные права на запись в UNIX-сокеты внешних филь- отклонённых сообщений (в соответствии с базой access).
тров и т. д. Так что подобная настройка весьма неоднознач- Последние две строки – итоги (строка T) и количество со-
на. Впрочем, окончательное решение принимать вам. единений (строка C).
Для автоматической обработки может быть полезен
Собираем информацию запуск с ключом -P, когда не выполняется дополнительное
Прежде чем перейти к вопросам повышения производи- форматирование:
тельности почтового сервера, пару слов скажу о средствах
мониторинга его работы. Ведь чтобы оценить эффект от из- root# mailstats -P
менения, необходимо получить некоторые количественные 1148036405 1148543708
показатели «до» и «после», которые и будут сравниваться. 0 0 0 301 434 0 0 0 prog
1 0 0 43 506 0 0 0 *file*
Да и вообще, регулярный мониторинг работы сервера лиш- 3 862 51985 2495 129910 24 0 0 local
ним никогда не будет. 5 2938 134398 578 50810 513 0 0 esmtp
T 3800 186383 3417 181660 537 0 0
C 16764 720 8149
Log-файлы
Первое место, куда следует заглянуть, чтобы проконтроли- Запуск с ключом -p (обратите внимание на регистр сим-
ровать работу любого сервиса, – это лог-файлы. Sendmail вола) выводит аналогичную информацию, одновременно
по умолчанию ведёт журнал своей работы в файле /var/log/ очищая накопленную статистику. Этим можно воспользо-
maillog. Если быть точнее, то используется система Syslog, ку- ваться, например, для автоматической ежедневной, еже-
да выводятся рабочие сообщения с facility «mail». Дальнейшее недельной или ежемесячной (в зависимости от нагруз-
уже определяется настройками в /etc/syslog.conf. ки и требуемой оперативности) обработки статистичес-
Уровни сообщений задаются в опции LogLevel (в mc- ких данных.
файле директивой define(`confLOG_LEVEL’,`9’), где 9 – уро-
вень, используемый по умолчанию. Обычно используется Состояние хостов
значение от 0 (минимальное количество информации) до 10 В процессе работы Sendmail может собирать статисти-
(достаточно подробный вывод). Значения выше 10 обыч- ку доступности хостов-получателей, которую в дальней-
но используются лишь для отладки. В ряде случаев может шем можно просмотреть с помощью команды hoststat
оказаться полезным уровень 12, на котором протоколиру- (или sendmail -bh, что то же самое). Для этого в конфигу-
ются все SMTP-соединения. рационном файле укажите имя каталога (абсолютный путь
Не забывайте, что ведение лог-файлов создаёт до- или путь относительно каталога очереди), в котором будет
полнительную нагрузку на дисковую подсистему. На за- сохраняться статистическая информация:
груженных серверах, по возможности, выносите каталог
с лог-файлами на отдельный жёсткий диск либо исполь- define(`confHOST_STATUS_DIRECTORY', `.hoststat')dnl
зуйте способность Syslog отправлять сообщения по сети
на удалённый хост. Cпустя некоторое время вы сможете просмотреть со-
стояния хостов, к которым Sendmail обращался. Так можно
получить список хостов, возвративших ошибку «Operation
timed out»:

root# hoststat | grep timed


mqg.com 00:58:43 Deferred: Operation timed
dila.com 00:57:28 Deferred: Operation timed
hideakifan.com 00:56:12 Deferred: Operation timed
mxfilter.bayou.com 00:02:33 Deferred: Operation timed

Здесь выводится три столбца – имя домена в первом, его


состояние в третьем, и между ними – сколько времени про-
шло с момента определения этого состояния. Sendmail ис-
пользует эту информацию, чтобы не пытаться установить
соединение с сервером, который пару минут назад был
недоступен (период, в течение которого состояние хос-
та считается достоверным, определяется опцией Timeout.
hoststatus (define(`confTO_HOSTSTATUS’) в mc-файле),
по умолчанию используется значение 30 минут). Однако
и системный администратор может получить здесь полез-
Рисунок 2. Очередь сообщений ную информацию.

№7, июль 2006 25


администрирование
Состояние очереди
Пожалуй, можно считать, что от эф- Протокол IDENT Escape character is '^]'.
фективности обработки почтовой оче- Authentication Server Protocol (серверный 25, 49973
25, 49973 : USERID : UNIX : mail
реди во многом зависит качество ра- протокол аутентификации), часто именуе-
боты всего сервера, поскольку именно мый IDENT, был разработан для идентифи- То есть вы вводите пару «порт сервера –
она создаёт основную нагрузку на дис- кации пользователя-владельца конкретно- порт клиента» (в примере предварительно
ковую подсистему. В то же время оче- го TCP-соединения. С его описанием вы было установлено соединение с 25-м пор-
редь – один из основных показателей можете ознакомиться в документе RFC 931 том сервера, «свой» порт можно узнать, на-
этого самого качества. Ведь в неё по- (который датирован январём 1985 года). пример, с помощью sockstat), и сервер воз-
падают сообщения, которые из-за ка- В ответ на запрос в виде разделённых за- вращает информацию о пользователе-вла-
ких-то проблем не удалось отправить пятой локального (с точки зрения сервера) дельце данного сокета.
сразу (в нормальном режиме работы и удалённого портов сервер возвращает В настоящее время польза от данно-
сообщение в очередь, конечно же, по- идентификационную информацию о вла- го сервиса весьма сомнительная, пос-
падает, но ненадолго). И чем больше дельце данного соединения. кольку возвращаемая информация мо-
сообщений в очереди, тем больше про- Служба запускается на 113-м порту жет быть легко фальсифицирована. В свя-
блем, которые требуют внимания. (в /etc/services определён как auth). зи с этим его использование не является
Состав очереди может быть про- Так может выглядеть сеанс с сервером, обязательным для работы служб Интер-
смотрен с помощью команды mailq где IDENT поддерживается: нета, и потому на многих серверах под-
(см. рис. 2). Выводимая информация держка этого протокола отключается. На-
позволяет узнать, сколько сообщений serg$ telnet smtp.nekiyhost.ru 113 пример, на системах FreeBSD эта служба
находится в данный момент в очереди, Trying 1.2.3.4... по умолчанию закрыта (см. /etc/inetd.conf,
когда они туда попали, от кого и к ко- Connected to mail.nekiyhost.ru. строки auth).
му направляются. Почти всегда в оче-
реди можно обнаружить несколько со- соб повысить пропускную способность для проверки хоста, пытающегося ус-
общений от MAILER-DAEMON для ка- сети – максимально снизить «наклад- тановить соединение, по базе access;
ких-нибудь загадочных получателей в ные» расходы, такие как DNS-запросы. и так далее. В итоге любые задерж-
экзотических доменах – скорее всего, Впрочем, некоторые другие параметры ки в работе DNS влияют и на скорость
это сообщения об ошибке, сформиро- (например, значения тайм-аутов) также работы SMTP-сервера, вынужденного
ванные на письма, отправленные спа- могут повысить производительность. простаивать в ожидании ответов.
мерами. Об этом и поговорим чуть подробнее. Поэтому рекомендуется запус-
Но сперва нужно заметить, что кать DNS-сервер (в идеале – кэширу-
Общие вопросы по умолчанию конфигурация Sendmail ющий, обслуживающий только запро-
эффективности имеет достаточно разумные парамет- сы почтового сервера) на той же маши-
Производительность работы любой ры, так что если загрузка вашего сер- не, на которой работает сервер SMTP.
программы определяется тем, на- вера не подходит вплотную к макси- В случае высокой загруженности поч-
сколько эффективно она использует мальным возможностям «железа», тового сервера DNS можно вынести
доступные ей ресурсы. Условно ре- то, скорее всего, дополнительная на- на отдельный компьютер, но в любом
сурсы можно разделить на «дешёвые» стройка либо не обеспечит сколько- случае критичным остаётся возмож-
и «дорогие». В случае с Sendmail «це- нибудь заметного эффекта, либо бу- ность организовать быстрое и макси-
на» ресурса определяется прежде все- дет связана с необоснованной поте- мально надёжное соединение. Благо-
го затратами времени на работу с ним. рей функциональности. Поэтому пре- даря этому можно будет значитель-
Например, оперативную память мож- жде чем приступать к изменению кон- но снизить задержки при обращении
но отнести к дешёвым, поскольку обра- фигурации, вспомните «золотое пра- к DNS-серверу, что в свою очередь
щение к ней выполняется максималь- вило» системного администратора: позволит обслуживать большее число
но быстро. А, скажем, файловая сис- «Не сломалось – не чини!». запросов в единицу времени.
тема на жёстком диске относится к до- В ряде случаев, например, при ра-
рогим ресурсам, поскольку на переме- Вездесущий DNS боте через низкоскоростное соедине-
щение головок винчестера требуется Как известно, неправильно настро- ние, для повышения производитель-
весьма ощутимое по процессорным енные или нестабильно работающие ности почтового сервера можно со-
меркам время. серверы DNS являются источниками кратить до минимума использование
Таким образом, в первом приближе- очень многих проблем в работе других DNS, например, отключив канониза-
нии основной задачей повышения эф- служб. Электронная почта – не исклю- цию адресов:
фективности можно считать задачу ми- чение, и её устойчивая работа также
нимизации обращений к диску. Однако во многом зависит от качества рабо- FEATURE(nocanonify)
зачастую «узким местом» становится ты DNS-сервера. Ведь в процессе об-
и сетевое подключение. Естественно, работки сообщений выполняется боль- Но, поскольку в данном случае
письма должны приниматься и отправ- шое число DNS-запросов: разрешение адреса не будут преобразовывать-
ляться (для этого, собственно, сервер имён доменов отправителя и получате- ся к стандартному виду, при таких на-
и существует), поэтому основной спо- ля; обратное разрешение IP-адресов стройках сервер должен работать в со-

26
администрирование
Таблица 1. Опции тайм-аутов ра. Поэтому чуть подробнее рассмотрим вопросы, связан-
Опция в cf-файле Директива mc-файла Описание ные с ней.
Время ожидания команды
Timeout.helo define(`confTO_HELO', `знач')
HELO Организация очереди
Timeout.mail define(`confTO_MAIL', `знач')
Время ожидания команды Очередь сообщений организована в виде каталога в фай-
MAIL FROM: ловой системе. По умолчанию используется /var/spool/
Timeout.rcpt define(`confTO_RCPT', `знач')
Время ожидания команды mqueue (clientmqueue для процессов, вызванных локаль-
RCPT TO:
ными пользователями). В ней можно найти несколько ти-
Время ожидания команды
Timeout.quit define(`confTO_QUIT', `знач')
QUIT пов файлов:
 qf* – заголовочный файл сообщения. Содержит инфор-
Таблица 2. Строки qt-файла очереди мацию, предназначенную для доставки и обработки со-
Строка Пример Описание общения (заголовок), а также некоторую служебную ин-
T T1148293041 UNIX-время постановки сообщения в очередь формацию, используемую программой обработки оче-
K K1148299145 UNIX-время последней обработки сообщения
реди (приоритет, время размещения в очереди). Значе-
ния некоторых строк представлены в таблице 2.
Количество выполненных попыток отправки
N N5
сообщения  df* – в этих файлах хранятся почтовые сообщения. Со-
P P415878 Рассчитанный приоритет (см. ниже) ответствие с заголовочным файлом устанавливается
по оставшейся части имени файла.
S SMAILER-DAEMON Имя отправителя
MDeferred: Connection Сообщение о причине неудачной доставки
M
refused by mail.darbs.lv. в прошлый раз В процессе обработки создаются и другие временные
H? H??To: <info@job.lv> Строки заголовка сообщения
файлы (например, xf*, содержащие сведения об ошибках,
возникающие в процессе передачи сообщения).
трудничестве со Smart-хостом, который будет выполнять все
необходимые корректировки. В противном случае возмож- Приоритеты
ны проблемы при доставке ваших сообщений. Для сообщений, поставленных в очередь, можно назна-
Есть и более кардинальный способ: чать различные приоритеты. Это достигается с помощью
следующей конфигурационной директивы (используется
FEATURE(nodns) по умолчанию):

define(`confQUEUE_SORT_ORDER', `Priority')dnl
Так в чём задержка?
Дополнительной оптимизации вы достигнете, если с уста- Чем большее значение получает сообщение, тем позже оно
новите более подходящие для вашего конкретного случая будет обрабатываться. Рассчитывается значение приори-
значения тайм-аутов соединений. Используемые по умол- тета таким образом:
чанию значения довольно велики (например, время ожи-
дания ответа на команду HELO составляет 5 минут). Прав- Приоритет = Размер_сообщения_в_байтах –
(ClassFactor * Класс_сообщения) +
да, учтите, что в большинстве случаев они соответству- (RecipientFactor * Кол-во_получателей) +
ют принятым стандартам и рекомендациями (в частнос- (RetryFactor * Кол-во_попыток_отправки)
ти, RFC 2821). К тому же проблемные ситуации достаточ-
но редки при нормальной работе, так что снижение боль- где коэффициенты ClassFactor, RecipientFactor и RetryFactor
шинства тайм-аутов (например, Timeout.quit, определяю- задаются в файле конфигурации (в формуле указаны их
щий время ожидания команды QUIT) практически не ска- имена в cf-файле) и определяют «вес» класса сообще-
жется на общей производительности сервера. ния, количества получателей и числа предыдущих попы-
Но в ряде случаев изменение тайм-аутов может оказать- ток доставки.
ся полезным. Например, в наши дни протокол IDENT (см. Класс определяется значением поля Precedence, а его
врезку «Протокол IDENT»), предназначенный для иденти- числовое значение задаётся строками «P» в конфигураци-
фикации владельца сокета, используется редко из-за его онном (cf) файле, например:
неэффективности и недостоверности. Следовательно, нет
никакого смысла ожидать результата идентификации, и Pbulk=-60
Pfirst-class=0
можно смело устанавливать соответствующий параметр в Pjunk=-100
ноль: define(`confTO_IDENT’,`0’). Pspecial-delivery=100
Некоторые из опций, отвечающих за установку различ-
ных тайм-аутов, приведены в таблице 1. Таким образом, в первую очередь будут отправляться
Есть ещё группа тайм-аутов, отвечающих за работу поч- небольшие сообщения, имеющие минимальное число полу-
товой очереди, о них мы поговорим в следующем разделе. чателей и наибольший класс, и которые не имеют «тяжёлой
кармы» безуспешных попыток доставки в прошлом. Но на
Кто последний? практике механизм приоритетов не очень сильно влияет на
Почтовая очередь оказывает в большинстве случаев на- общую работу сервера. Конечно, более быстрая доставка
ибольшее влияние на общую производительность серве- небольших сообщений способствует «разгрузке» очереди,

№7, июль 2006 27


администрирование
не позволяя ей чрезмерно вырасти за
то время, пока будет выполняться об- Группы очередей льную очередь для группы mails. Ключ F=f
работка мегабайтного послания. Но, с Sendmail позволяет распределять сообще- заставляет Sendmail запускать для обра-
другой стороны, отправитель письма, ния по различным очередям с группиров- ботки этой очереди отдельный процесс (вы-
имеющего достаточно большой объ- кой по домену получателя. Например, что- полнять вызов fork).
ём, тоже вправе рассчитывать на его бы выделить в отдельную очередь почту За «приписку» конкретных сообщений
своевременную доставку. Тем более для mail.ru, yandex.ru и rambler.ru, необходи- к группе mails отвечает файл access:
что на выстраивание сообщений со- мо выполнить следующие действия: QGRP:mail.ru mails
гласно приоритету требуются допол- Добавить в mc-файл строки: QGRP:yandex.ru mails
QGRP:rambler.ru mails
нительные ресурсы. FEATURE(`queuegroup')
Можно сделать вывод, что исполь- QUEUE_GROUP(`mails', ↵ Теперь почта для указанных доменов
`P=/var/spool/mqueue/mails, F=f')
зование приоритетов может быть по- будет размещаться в собственной оче-
лезно разве что на сильно загружен- Этими строками мы объявляем отде- реди.
ных серверах, имеющих неравномер-
ную загрузку (что даст гарантию от- ся это опцией ForkEachJob (дирек-  interactive – интерактивный режим.
правки больших сообщений в пери- тива define(`confSEPARATE_PROC’) Sendmail сразу пытается доставить
од «затишья») при отсутствии жёст- в mc-файле). Это снизит общее время сообщение, не разрывая соедине-
ких требований по срокам доставки обработки сообщений в очереди: по- ние с отправителем. Если достав-
корреспонденции. ка одни процессы будут ожидать отве- ка выполняется успешно, отправи-
та удалённых серверов, другие могут тель получает ответ «250 OK» и от-
Другие виды сортировок выполнять дисковые операции или ис- соединяется. В очередь письмо по-
Помимо рассмотренной выше сор- пользовать ресурсы процессора. мещается только в том случае, ес-
т и р о в к и п о п р и о р и т е т у, о п ц и я Но, как и у любой медали, здесь ли его не удаётся доставить сразу.
QueueSortOrder может принимать есть оборотная сторона: большое чис- В данном режиме, особенно если
ещё три значения – Host, Filename ло одновременно работающих процес- основная масса получаемых сооб-
и Time. В первом случае очередь бу- сов создаёт дополнительные «непро- щений предназначена для локаль-
дет обрабатываться в алфавитном изводственные» затраты на переклю- ной доставки, существенно снижает-
порядке хостов-получателей, что поз- чение процессов и обслуживание се- ся нагрузка на дисковую подсистему.
воляет несколько сэкономить на ус- тевых соединений. К тому же при па- Но при этом отправитель вынужден
тановке соединения, поскольку повы- раллельной работе процессы sendmail удерживать соединение всё то вре-
шается эффективность кэша хостов не смогут воспользоваться кэшем со- мя, пока будет предприниматься пер-
(см. hoststat). стояния хостов (hoststat). В этот кэш вая попытка доставить сообщение.
Во втором случае очередь будет при последовательной обработке  queue – только в очередь. В этом
обрабатываться в порядке размеще- очереди заносится информация о не- режиме попытка немедленно от-
ния файлов в каталоге, что снизит на- доступных хостах, и попытки отпра- править сообщение вообще не бу-
грузку на файловую систему, посколь- вить другие сообщения на эти хосты дет предприниматься. MTA будет
ку не требуется предварительно считы- не предпринимаются. только помещать письмо в очередь.
вать файлы для определения приори- В случае же параллельной обра- Отправка будет осуществляться
тетов/хостов. ботки каждый процесс самостоятель- уже обработчиком очереди. Мо-
При установке опции в значение но проверяет работоспособность хос- жет быть полезно в случае, если
«Time» сортировка осуществляется в та получателя, так что при недоступ- перед отправкой требуется уста-
зависимости от времени нахождения ности одного из удалённых серверов новить интернет-соединение (на-
сообщения в очереди. будут предприниматься попытки до- пример, коммутируемое).
Есть ещё вид сортировки – Random. ставки каждого адресованного ему  defer – отложить доставку. Анало-
В этом случае перед обработкой оче- сообщения. гичен режиму queue, но при этом
реди список файлов в каталоге будет подавляются также и любые обра-
перемешиваться случайным образом. Режимы обработки очереди щения к сети (например, запросы
Благодаря этому достигаются преиму- В Sendmail предусмотрено несколько DNS).
щества метода Filename и снижается режимов обработки очереди, задавае-
вероятность того, что несколько одно- мых директивой define(`confDELIVERY_ Наборы очередей
временно запущенных процессов бу- MODE’): Вместо общего каталога для всех
дут пытаться отправить одно и то же  background – используемый по файлов очереди в Sendmail можно ис-
сообщение. умолчанию режим фоновой отправ- пользовать наборы очередей. Напри-
ки. В этом случае Sendmail снача- мер, директива define(`QUEUE_DIR’,
Ветвления ла получает сообщение от клиен- `/var/spool/mqueue/*’) заставляет Sendmail
Sendmail позволяет организовать па- та, помещает его в очередь и воз- все каталоги в mqueue рассматривать
раллельную обработку очереди, ког- вращает клиенту ответ «250 ОК». как очереди и соответственно обраба-
да для каждого сообщения вызы- После чего сообщение доставля- тывать их. При этом для размещения
вается свой процесс. Определяет- ется в фоновом режиме. нового письма конкретный каталог бу-

28
администрирование
дет выбираться случайным образом, что гарантирует опре- «За выслугу лет»
делённую «равномерность» заполнения очередей. Есть воз- Ещё одним полезным параметром является MinQueueAge.
можность и более «интеллектуально» размещать различ- С его помощью можно указать, сколько сообщение долж-
ные сообщения – см. врезку «Группы очередей». но «отлежаться» в очереди, прежде чем будет предпринята
Если имена каталогов в mqueue будут начинаться с qf, следующая попытка доставить его. Такая странная на пер-
df, xf, то Sendmail будет использовать их для размещения вый взгляд опция позволяет повысить время отклика оче-
соответствующих файлов. Если при этом каталоги разнес- реди, установив сравнительно небольшой интервал её об-
ти по разным жёстким дискам, то можно повысить скорость работки (например, 5 минут), но без слишком частых попы-
обработки каждого сообщения. Причём некоторые файлы ток отправить «застрявшее» сообщение. Сделать это мож-
(например, xf) могут быть безболезненно размещены в па- но следующим образом:
мяти (используя tmpfs).
Помимо снижения количества сообщений в отдельных define(`confMIN_QUEUE_AGE', `30m')
каталогах, наборы очередей позволяют осуществлять па-
раллельную обработку нескольких очередей, что положи- Если теперь процесс-обработчик очереди запустить
тельно сказывается на производительности. с параметром -q5m, то очередь будет обрабатываться каж-

«Русский экстрим» Backup-сервер (на который должна ука- ет один недостаток: этот сервер ничего не
Для иллюстрации предлагаю вам рассмот- зывать MX-запись с меньшим приоритетом) будет знать о существовании конкретных
реть один практический пример. Имеется в рассматриваемой схеме выглядит не сов- пользователей, следовательно, он будет
почтовый сервер, который уже не справ- сем уместно, будучи подключенным на тот принимать всю почту, адресованную на
ляется с навалившейся на него нагрузкой, же интернет-канал. Если организация рас- обслуживаемый домен, вместо того что-
а денег на новый нет. Зато есть несколь- полагает резервным интернет-соединени- бы отклонять сообщения для несущест-
ко «слабеньких» машин, которые можно ем, то данный сервер следует подключить вующих пользователей ещё на стадии ко-
использовать. именно на него. Но даже в такой схеме его манды RCPT TO.
Один из вариантов решения – орга- использование позволит разгрузить основ- Мы рассмотрели, скажем так, «пре-
низовать «распределённый» почтовый ной сервер. Для этого нужно на основном дельный» случай. На практике можно ва-
сервер за счёт «разделения труда», ког- сервере установить небольшие значения рьировать его в весьма широких пределах
да несколько вспомогательных серве- тайм-аутов, а также «посильное» значение в зависимости от наличия «лишних» ком-
ров принимают на себя часть нагрузки MaxDaemonChildren. В результате медлен- пьютеров. Например, можно объединять на
основного. ные, а также «избыточные» внешние соеди- одной машине ряд задач (FallBack-сервер
Схема нашего «сводного сервера» нения будут отклоняться, и их обслужива- и Backup-сервер вполне уживутся на одном
представлена на рис. 3. ние возьмёт на себя Backup-сервер. компьютере, особенно если он будет под-
Основной сервер занимается взаи- Есть ещё один приём балансировки на- ключён на резервный интернет-канал) ли-
модействием с клиентами – принимает грузки. Заключается он в том, что если до- бо часть задач возлагать не на выделен-
от них сообщения для отправки, размеща- мен имеет несколько MX-записей с одина- ный сервер, а на уже имеющийся (напри-
ет входящую корреспонденцию по почто- ковым приоритетом, то для работы долж- мер, принт-сервер в локальной сети), если
вым ящикам пользователей, и т. д. То есть на выбираться случайным образом одна его ресурсы и режим безопасности позво-
делает то, что и любой почтовый сервер. из них, что обеспечивает равномерность ляют это сделать, и т. д. И конечно же, обя-
Но, чтобы ему было проще, предусмотрено распределения нагрузки между несколь- зательным является только основной сер-
несколько вспомогательных серверов. кими хостами. вер, все остальные – «опциональны».
Сервер, обозначенный на схеме как Для Backup-сер-
Smart-хост, берёт на себя заботу о достав- вера можно указать
ке исходящих сообщений. Поскольку он более приоритетную
имеет надёжную связь с основным серве- M X- з а п и с ь, ч то б ы
ром, то задержки при передаче ему почты вся вход ящая поч-
будут незначительными. Благодаря этому та поступала в пер-
затраты ресурсов основного сервера на от- вую очередь на него.
правку сократятся, поскольку никаких про- При этом основной
блем, способных вызвать чрезмерное раз- сервер сможет полу-
растание очереди, возникнуть не должно чать почту от Backup-
(не считая, конечно, выхода из строя са- сервера с меньшими
мого Smart-хоста). издержками благо-
Ещё один вспомогательный сервер, те- даря более быстро-
перь уже для облегчения участи Smart-хос- му и надёжному со-
та, – FallBack-сервер, задача которого – об- единению. Но имей-
рабатывать «проблемные» сообщения, ко- те в виду, что исполь-
торые Smart-хост не смог доставить. Благо- зование отдельного
даря этому и на Smart-хосте очередь долж- сервера для входя-
на оставаться минимальной. щих соединений име- Рисунок 3. Больше серверов – хороших и разных...

№7, июль 2006 29


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

Ограничения по загрузке
Механизм обработки очереди в Sendmail предусматривает
ещё один метод предотвращения перегрузки сервера. Сра-
зу нужно заметить, что это не средство оптимизации рабо-
ты Sendmail, а своего рода «аварийный клапан», и если он
срабатывает достаточно регулярно – значит, нужно что-то
делать для повышения производительности.
Речь идёт о двух опциях – QueueLA и RefuseLA (в mc-фай-
ле – define(`confQUEUE_LA’, `знач’) и define(`confREFUSE_LA’,
`знач’) ) соответственно). Первая из них при превышении
средней загрузки сервера (Load Average) сверх указанной
Рисунок 4. Схема работы с резервным сервером
переводит Sendmail в режим «только очередь» (queue), ког-
да для входящих сообщений не предпринимаются попыт- набор очередей, разнеся различные каталоги по несколь-
ки доставить их немедленно, а выполняется только разме- ким дискам, то можно достичь ещё более высоких показа-
щение в очереди. телей скорости работы.
Вторая опция даёт указание отклонять новые соедине- Нужно сделать и одно предостережение – как бы ни ка-
ния, если средняя загрузка системы превышает указанное залось заманчивым размещение очереди в оперативной па-
значение. О том, что это произошло, можно узнать по за- мяти (используя tmpfs), этого не следует делать. Ведь со-
писям «Sendmail rejecting connecting, load average too high» общения для того и помещаются в очередь, чтобы гаранти-
в /var/log/maillog. ровать их сохранность при неожиданных проблемах с сер-
вером, вплоть до перезагрузки. Если же в вашем случае
Оптимизация очереди надёжностью доставки можно пренебречь (думаю, это вер-
Основная проблема, связанная с очередью, – это её чрез- но разве что при рассылке спама), то можно отключить оп-
мерное разрастание. Когда по тем или иным причинам (про- цию SuperSafe (define(`confSAFE_QUEUE’, `False’)).
блемы при доставке или поступление новых сообщений А вот размещение в tmpfs конфигурационных файлов
с большей скоростью, чем сервер может обработать) в ка- (таких как aliases.db, access.db) может быть весьма полез-
талоге очереди скапливается большое число файлов, сис- но – ведь в этом случае Sendmail не будет каждый раз об-
тема начинает тратить слишком много времени на их пред- ращаться к диску для «разрешения» псевдонима или по-
варительную обработку (поиск, чтение, расчёт порядка об- иска адреса отправителя в базе access. Впрочем, в грамот-
работки согласно приоритету и т. д.). но работающей системе эти данные и так должны преиму-
Если проблема носит регулярный характер, то более щественно находиться в дисковом кэше (если, конечно, не-
эффективным, по-видимому, будет устранение её причины хватка оперативной памяти не вынуждает систему снижать
(«узкий» интернет-канал, недостаточно быстрый процессор, размер кэша до предела).
спам-рассылки со стороны ваших клиентов). Учитывая пос-
тоянно возрастающие объёмы пересылаемой корреспон- Методы «авральной» работы
денции, попытки выиграть несколько процентов произво- И всё же порой случается, что очередь заполняется неимо-
дительности за счёт оптимизации работы с очередью (воз- верным количеством сообщений. Например, причиной по-
можно, ценой снижения функциональности или надёжнос- добного может явиться прерывание соединения с Интерне-
ти) могут рассматриваться лишь как временная мера. том на несколько часов. Пока канал будут «поднимать», не-
Тем не менее рассмотрим основные приёмы, позволяю- терпеливые пользователи накидают уйму писем, которые
щие добиться более быстрой работы с очередью. после восстановления соединения могут вызвать резкий
Во-первых, рассмотренные выше режимы сортировки всплеск нагрузки на сервер. Если учесть, что в это же время
очереди позволяют несколько перераспределить нагрузку на ваш MTA обрушится масса внешних соединений (удалён-
в зависимости от того, в каких ресурсах испытывается не- ные серверы ведь тоже накапливали всё это время письма,
достаток. Так, порядок Filename несколько снижает нагруз- адресованные вам, и теперь поспешат от них избавиться),
ку на дисковую подсистему; Host – оптимизирует исполь- то ситуация может стать близкой к катастрофической.
зование сетевых ресурсов и т. д. Наиболее простым и почти что «стандартным» спосо-
Во-вторых, подумайте над тем, чтобы вместо одной оче- бом решения подобных проблем можно считать перенос на-
реди использовать наборы. Меньшее число файлов в конк- копившихся файлов очереди в отдельный каталог с после-
ретном каталоге позволит более быстро и с меньшими за- дующей его обработкой «вручную». Это позволяет макси-
тратами выполнять поиск нужного файла. мально быстро вернуть сервер в «штатный» режим.
В-третьих, на сильно загруженных серверах имеет
смысл вынести каталог очереди на отдельный жёсткий Серверы на «чёрный» день
диск или даже на RAID-массив, с тем чтобы максимально К сожалению, время от времени любая техника даёт сбои.
повысить скорость доступа к файлам. Если использовать Чтобы смягчить последствия временной недоступнос-

30
администрирование
Для решения этой проблемы предусматривается так назы-
ваемый FallBack-сервер. Так, если основной сервер содер-
жит в своей конфигурации такую строку:

define(`confFALLBACK_MX', `адрес_сервера')

то при возникновении проблем с отправкой сообщения оно


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

Рисунок 5. Схема работы с FallBack-сервером


Продолжение следует…
ти вашего сервера или интернет-соединения, сохранив Итак, Sendmail предоставляет достаточно широкие возмож-
для удалённых пользователей возможность по-прежнему ности по гибкой настройке работы для повышения эффек-
отправлять вам почту, можно предусмотреть резервный тивности, надёжности и безопасности. В большинстве слу-
почтовый сервер. чаев дополнительная настройка сервера выглядит излиш-
Почтовый сервер, выполняющий роль резервного, дол- ней, но в условиях дефицита ресурсов некоторая оптими-
жен быть настроен на обработку почты, поступающей для зация может оказаться весьма полезной.
другого домена. Ну и естественно, на него должна указы- Впереди у нас ещё одна, последняя, тема – взаимо-
вать MX-запись для обслуживаемого домена, имеющая низ- действие Sendmail со сторонними программами. Например,
ший приоритет. В этом случае при невозможности доста- эта программа позволяет фильтровать сообщения с помо-
вить почту на основной сервер будет использоваться ре- щью так называемых milter. Чтобы не превратить свой сер-
зервный (см. рис. 4). вер в открытый релей и в то же время позволить всем ва-
Иногда полезно предусмотреть и «обходной манёвр» шим пользователям отправлять почту из любой точки мира,
для обратной проблемы – когда ваш сервер не может от- можно настроить smtp-аутентификацию с помощью Cyrus
править почту удалённому. По умолчанию в этом случае SASL. Об этом и поговорим.
вся отправляемая корреспонденция должна оставаться
в очереди, и периодически должны предприниматься по- 1. Супрунов С. Как работает Sendmail. Полезные подробности.
пытки её доставить. Однако в результате очередь сообще- Часть 1. //Системный администратор, №5, 2006 г. – С. 12-18.
ний может оказаться перегруженной, и почтовый сервер бу- 2. Супрунов С. Как работает Sendmail. Полезные подробности.
дет тратить слишком много времени на её обслуживание. Часть 2. //Системный администратор, №6, 2006 г. – С. 18-25.

Итоги фестиваля DiHalt 2006


В
конце апреля 2006 года в Ниж- Сидорук Иван Сергеевич: пред- конкурсах художников. Первые мес-
нем Новгороде прошел очеред- ставитель коллектива авторов (f0x, та в ZX Spectrum GFX, Handdraw GFX,
ной фестиваль компьютерно- unc и группы deMarche ) победивших и Freestyle GFX.
го искусства DiHalt 2006. Лучшие про- в Amiga/PC 64k intro. Всем победителям в подарок вру-
граммисты, художники и музыканты Шарапов Алексей Александро- чается подписка на журнал «Систем-
выставляли свои работы на суд зри- вич: Out of Style III (совместная рабо- ный администратор» на второе по-
телей. та от Storm Studios и The SandS) – пер- лугодие 2006 года. Работы, пред-
Победителями (по итогам голосо- вое место в Amiga/PC demo. ставленные на фестивале, доступ-
вания зрителей) в номинированных Костик Сергей Юрьевич: человек, ны по адресу: http://www.scene.org/
конкурсах стали: по праву одержавший победы в трех dir.php?dir=/parties/2006/dihalt06.
Елфимов Константин Валерь-
евич: работа от творческого коллек-
тива CyberPunks Unity – «Untitled» за-
нявшая первое место в номинации
ZX Spectrum demo.
Акимов Вадим Алексеевич: ав-
тор работы LPSTOP, по праву заняв-
шую первую строку в конкурсе Amiga/
PC 4k intro.

№7, июль 2006 31


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

Ведём статистику
прокси-сервера Squid

Павел Малахов
Журнальные файлы прокси-сервера Squid даже для небольших предприятий могут быть
очень объёмны. Разбирать их вручную малоэффективно, а вести статистику или учёт просто
невозможно. Для этого существуют вспомогательные программы.

Р
ано или поздно мы (системные не глядя скачали какое-нибудь обнов- сколько раз сталкиваться со злонаме-
администраторы) хотим (или нас ление, но бывают случаи, от них не за- ренными самообновляющимися стра-
заставляют) установить контроль висящие. Например, не отвечал сер- ницами. Ясность частично можно вне-
над использованием интернет-трафи- вер mail.ru, а его агенты, пытаясь ус- сти и штатными средствами, исполь-
ка. У меня пользователи периодичес- тановить с ним связь, «съедали» у не- зуя команды cat и grep. Например, сде-
ки недоумённо осведомляются, на что которых пользователей большую часть лать выборку из журнала для конкрет-
истратилась их квота. Чаще всего они их скромной квоты. Приходилось не- ного IP-адреса командой:

32
администрирование
# cat /var/log/squid/access.log | grep 10.0.0.15 > ↵ Если вы используете Linux и хотите размещать конфигу-
/tmp/10.0.0.15.txt
рационные файлы в /etc/sarg (по умолчанию /usr/local/sarg),
а затем перенести файл на компьютер, где есть MS Excel, в этом случае укажите соответствующую опцию:
и там его просматривать. Так я и делал, пока не потребо-
валось проводить более серьёзный анализ и вести ста- # ./configure --enable-sysconfdir='/etc/sarg'
# make
тистику. # make install

Подготовительные работы Создаём каталог, где будем хранить отчёты:


Ради универсальности процедуры установки программ
под разные операционные системы (семейства UNIX) бу- # mkdir -p /var/www/html/reports/
дем устанавливать их из исходных кодов. На сайтах про-
грамм указано, где можно взять уже собранные пакеты для В /etc/sarg/sarg.conf устанавливаем параметры:
определённых ОС. По возможности лучше использовать
их, так как в этом случае пакет регистрируется в системе, language Russian_koi8
access_log /var/log/squid/access.log.1 # вчерашний журнал
что при автоматическом обновлении ОС позволит получить title "Squid report for proxy1"
подробную информацию об установленном пакете, соблю- output_dir /var/www/html/reports/sarg
date_format e
дать зависимости при установке новых пакетов и в других charset Koi8-r
случаях. Примите во внимание, что при установке собран- www_document_root /var/www/html
ного пакета пути к файлам могут отличаться от указанных
в статье. Для просмотра отчётов через веб-интерфейс нам Опцией date_format мы определяем, как будет выглядеть
понадобится веб-сервер. Отчёты будем хранить в катало- имя выходного файла, который состоит из форматирован-
ге /var/www/html/reports. ной даты. Возможные варианты значения этой опции:
Calamaris и LightSquid написаны на Perl, поэтому он дол-  e – dd/mm/yyyy – европейский формат даты;
жен уже стоять в системе. Автор Calamaris рекомендует ста-  u – mm/dd/yyyy – американский формат даты (предла-
вить самую последнюю версию, хотя и упоминает, что неко- гается по умолчанию);
торые пользователи успешно использовали его програм-  w – yyyy.ww – год и номер недели в году.
му на Perl 5.001. Требования к Perl для LightSquid не при-
водятся, так что от себя скажу, что на версии 5.8.7 всё ра- Все необходимые настройки сделаны, запускаем:
ботает отлично.
Squid (www.squid-cache.org), конечно, уже должен быть # sarg
установлен, вести журнал в родном формате (что опреде- SARG: Records in file: 19329, reading: 100.00%
ляется в squid.conf опцией emulate_httpd_log off) и прово- SARG: Отчет успешно сгенерирован в: /var/www/html/reports/sarg/
04Jun2006-06Jun2006
дить ежедневную ротацию журналов, не сжимая архивы.
Последнюю задачу лучше поручить программе logrotate, Видим, что всё прошло успешно. Теперь отчёт можно
указав в файле /etc/logrotate.d/squid следующее: посмотреть в браузере. Ещё несколько параметров, кото-
рые могут понадобиться:
/var/log/squid/access.log {
daily
rotate 6 # оставить в отчёте только нескольких пользователей
copytruncate include_users "petrov:ivanov:secretar"
nocompress # не учитывать записи журнала, содержащие подстроки
notifempty exclude_string "подстрока1:подстрока2"
missingok # не учитывать обращения к перечисленным доменам
} exclude_hosts /etc/sarg/hosts.txt
… # далее описана ротация cache.log и store.log # сколько файлов отчётов нужно хранить в директории,
# самый старый убирается
lastlog 30
а Squid освободить от этой обязанности, указав опцию # создавать отчёт только для указанных дней недели,
# воскресенью соответствует 0
logfile_rotate 0. weekdays 1-5
#создавать отчёт только для определённых часов
hours 8-18
Sarg
Sarg (Squid Analysis Report Generator – генератор аналитичес- Можно отправлять отчёт по почте. Правда, в этом слу-
ких отчётов Squid) доступен на нескольких языках, на рус- чае не будет формироваться html-файл.
ском – в трёх кодировках: koi-8, UTF-8, windows-1251. В параметре report_type можно указать, какие отчёты
 Сайт – sarg.sourceforge.net. нас интересуют. Sarg предоставляет следующие:
 Стабильная версия – 2.2.1.  topsites – отображает название сайта, количество под-
 Объём – 376 Кб. ключений к нему, количество взятых с него байт и об-
 «Понимает» журналы – Squid, Microsoft ISA, Novell Border щее время соединений;
Manager.  sites_users – отображает список всех посещённых сай-
тов и какие пользователи на них заходили;
Собираем стандартным способом:  users_sites – отображает список сайтов, на которые за-
ходил пользователь, количество подключений к каждо-
# ./configure му и скаченный объём (рис. 1);

№7, июль 2006 33


администрирование
Создаём каталоги для самого Calamaris и для создава-
емых им отчётов:

# mkdir -p /etc/calamaris /var/www/html/reports/calamaris

Копируем calamaris.conf в /etc/calamaris/ и редактируем:

$requester_report = -1;
$status_report = 1;
Рисунок 1. Список сайтов, которые посетил пользователь $type_report = -1;
$hostname = 'lookup';
$output_format = 'html,graph';
$output_path = '/var/www/html/reports/calamaris';
$output_file = 'index.html';
$show_reports = '0,2,5,6,8,10,11,13,14';

Копируем calamaris в /etc/calamaris/calamaris.pl. Расшире-


ние добавляем для определённости, что это скрипт на Perl.
Создаём каталог /usr/lib/perl5/calamaris (или там, где у вас
находятся библиотеки perl) и копируем туда calAxestype.pm,
calAxestype3d.pm, calBars3d.pm.
Рисунок 2. Активность пользователя в Интернете
Копируем мануал calamaris.1 в /usr/local/man/man1/.
 date_time – отображает таблицу интенсивности исполь- Будем использовать скрипт (см. листинг), который поз-
зования прокси-сервера пользователем в часах и днях волит нам создавать ежедневные, еженедельные и ежеме-
(рис. 2); сячные отчёты. Ежедневные будут храниться месяц, а еже-
 denied – отображает список сайтов, в доступе к кото- недельные и ежемесячные – год. Скрипт поместим в /etc/
рым было отказано; calamaris/calam_rep.sh <files/scripts/calam_rep.sh>.
 auth_failures – отображает ошибки аутентификации;
 site_user_time_date – отображает для каждого пользо- #!/bin/bash
# Скрипт для Calamaris 3. Создаёт отчёты по логам Squid
вателя дату и время всех обращений к сайту; # Использование: calam_rep.sh [today|yesterday|week|month]
 downloads – отображает отчёт по загрузкам (download). # Pavel Malakhov 28.03.05
Какие файлы отнести к этой категории, определяем CALAM_DIR='/etc/calamaris'; # Каталог программы
в параметре donwload_suffix. Например, можно указать SQUID_LOG_DIR='/var/log/squid'; # Каталог логов Squid
# Корневой каталог отчётов, остальные создадутся
расширения аудио-файлов и узнать, кто, когда и отку- REP_PATH_PREFIX='/var/www/html/reports/squid';
да скачивал музыку. # Каталог, где будем хранить недельные кэш-файлы
CACHE_DIR='/etc/calamaris/cache';
# Так как отчёт делаем за вчерашний день, то название отчёта
Sarg также может обрабатывать журналы DansGuardian # должно это отражать. Определим для этого переменные.
# Для наглядности предположим, что сегодня 1 февраля 2006,
и SquidGuard – сторонних программ, написанных для Squid # среда, тогда вчера было 31 января, вторник
и ограничивающих доступ к сайтам на основании различ- # Вчерашнее число, т.е. YESTD=31
YESTD=`date -d yesterday +%d`;
ных правил (по URL, по содержимому сайта и т. д.). YESTW=`date -d yesterday +%V`; # Номер недели
# Для нашего примера номер недели не изменился и YESTW=5.
# Номер и название месяца, т.е. YESTM=01_January
Calamaris 3 YESTM=`date -d yesterday +%m_%B`;
Переводится с английского так же, как и Squid, – кальмар, # Существует проблема с обработкой не английских букв,
# если используется кодировка en_US.UTF-8.
головоногий моллюск. # Поэтому переназначим переменную LANG. Если используется
 Сайт – www.Calamaris.Cord.de. # другая кодировка или проблем нет, то закомментируйте
# нижеследующие 2 строки
 Стабильная версия – 2.59. LANG=en_US
 Объём – 100 Кб. export $LANG
 «Понимает» журналы – Squid, NetCache, Inktomi Traffic # --- Нижеследующий код изменять не нужно ---------------
Server, Oops! proxy server, Compaq Tasksmart, Novell # ---- [но исследование приветствуется!] ----------------
# Если параметр отсутствует, то прерываем выполнение скрипта
Internet Caching System, Netscape/iPlanet/SunONE Web if [ "$1" = "" ]; then
Proxy Server, Cisco Content Engines. echo "Usage: calam_rep.sh [today|yesterday|week|month]"
exit 1

Если не нужны графики, то достаточно одного скрип- # Если каталог для отчётов не существует, то создаём
function checkdir {
та. Распаковываем: if [ ! -e "$REPPATH" ];then
echo -n `date +%c` "Dir \"$REPPATH\" is absent. Creating..";
# tar -xzvf /path/to/calamaris-2.59.tgz mkdir -p $REPPATH;
echo "Done.";
fi;
}
Если же хочется увидеть результаты ещё и в графиках, # Если каталог для кэша не существует, то создаём
то нужно устанавливать бета-версию 2.99.4.0 (сбоев не за- if [ ! -e "$CACHE_DIR" ];then
echo -n `date +%c` "Cache dir \"$CACHE_DIR\" is absent. ↵
мечено) и доустановить библиотеки и модули. Подробную Creating... ";
инструкцию можно посмотреть в [1], но и идущая с пакетом mkdir -p $CACHE_DIR;
echo "Done.";
инструкция вполне понятна (правда, на английском). fi;

34
администрирование
case "$1" in
"today" )
REPPATH=$REP_PATH_PREFIX'/today';
checkdir;
cd $CALAM_DIR;
echo -n `date +%c` "Processing data for today... ";
cat $SQUID_LOG_DIR/access.log | ./calamaris.pl ↵
--config-file ./calamaris.conf --output-path
$REPPATH;
;;
"yesterday" )
REPPATH=$REP_PATH_PREFIX'/days/'$YESTD;
checkdir;
cd $CALAM_DIR;
echo -n `date +%c` "Processing data for yesterday... ";
cat $SQUID_LOG_DIR/access.log.0 | ./calamaris.pl ↵
--config-file ./calamaris.conf --output-path $REPPATH ↵
--cache-output-file $CACHE_DIR/day.$YESTD;
;;
"week" )
REPPATH=$REP_PATH_PREFIX'/weeks/'$YESTW;
checkdir;
cd $SQUID_LOG_DIR;
echo -n `date +%c` "Processing data for week... ";
cat access.log.6 access.log.5 access.log.4 access.log.3 ↵ Рисунок 3. Cуммарная информация по работе прокси-сервера
access.log.2 access.log.1 access.log.0 |
$CALAM_DIR/calamaris.pl --config-file
$CALAM_DIR/calamaris.conf --output-path $REPPATH ↵
--cache-output-file $CACHE_DIR/week.$YESTW;
;;
"month" )
REPPATH=$REP_PATH_PREFIX'/months/'$YESTM;
checkdir;
cd $CACHE_DIR;
CACHEFILES="";
for ((i=1; i<=31; i++)); do
FILE='day.'$i;
if [ -e "$FILE" ]; then
if ["$CACHEFILES" = ""]; then
CACHEFILES=$FILE;
else
CACHEFILES=$CACHEFILES':'$FILE;


done
echo 'files to process '$CACHEFILES;
echo -n `date +%c` "Processing data for month... ";
$CALAM_DIR/calamaris.pl --config-file
$CALAM_DIR/calamaris.conf --cache-input-file $CACHEFILES ↵
--no-input --output-path $REPPATH;
echo "Done";
# Очищаем кэш в начале месяца.
# Удаляем только записи для дней, для недель оставляем
DD=`date +%d`;
if [ "$DD" = "01" ]; then
echo -n `date +%c` "Cleaning up cache dir... ";
rm -f $CACHE_DIR/day.*;
fi Рисунок 4. Распределение трафика по протоколам
;; лям и сайтам, сильная сторона – общая статистика по на-
esac
echo "Done"; грузке на прокси-сервер. Все отчёты последовательно
echo `date +%c` "---Everything is done" отображаются на одной html-странице. Некоторые отчё-
exit 0
ты не отображаются, если в журнале не найдены необхо-
Делаем этот скрипт исполняемым: димые для него записи. Мне удалось получить 11 отчётов.
Вот их описание:
# chmod +x /etc/calamaris/calam_rep.sh  Summary – суммарная информация по работе прокси-
сервера (рис. 3).
Cоздаём отчёт:  Incoming requests by method – входящие запросы
по методу (Get, Post и т. д.).
# ./calam_rep.sh yesterday  Incoming UDP(TCP)-requests by status – входящие за-
просы по статусу (HIT, MISS, DENIED и т. д.).
и смотрим его в браузере по адресу http://our.domain.ru/  Outgoing requests by status – исходящие запросы
reports/calamaris/days. по статусу.
Создаём журнальный файл /var/log/calam_rep.log, куда  Outgoing requests by destination – исходящие запро-
будем записывать результаты запуска скрипта по cron: сы по месту назначения.
 Request-destinations by 2nd-level-domain – сгруппиро-
# touch /var/log/calam_rep.log ванная статистика для доменов 2-го уровня, т.е. запро-
сы на site1.example.com и site2.example.com суммируют-
Слабое место Calamaris – статистика по пользовате- ся в статистике для домена example.com.

№7, июль 2006 35


администрирование
Берём последнюю версию с lightsquid.sourceforge.net
и распаковываем:

# tar -zxvf ./lightsquid-1.6-beta.tgz

Создаём каталог, где будем хранить отчёты:

# mkdir -p /var/www/html/reports/lightsquid

Всё содержимое каталога lightsquid-1.6-beta копируем


в созданный каталог. Меняем владельца на того, кто у нас
в роли httpd-пользователя (например, webmaster) и делаем
скрипты исполняемыми файлами:
Рисунок 5. Удобный интерфейс начальной страницы LightSquid
# chown -R root.webmaster /var/www/html/reports/lightsquid
# cd /var/www/html/reports/lightsquid
# chmod +x *.cgi
# chmod +x *.pl

В конфигурационном файле lightsquid.cfg меняем зна-


чения переменных:

# пути к настроечным файлам


$tplpath ="/var/www/html/reports/lightsquid/tpl";
$langpath ="/var/www/html/reports/lightsquid/lang";
$reportpath ="/var/www/html/reports/lightsquid/report";
$ip2namepath ="/var/www/html/reports/lightsquid/ip2name";
# путь к журналам Squid
Рисунок 6. Популярные сайты. Можно сортировать $logpath ="/var/log/squid/";
по «Соединениям» и по «Байтам» # какие сайты не учитывать в отчётах
$skipurl = "zdd.com|192\.168\.1\.|cnn.com";
 Request-destinations by toplevel-domain – сгруппиро- # язык отчётов
$lang = "ru";
ванная статистика для доменов 1-го уровня (ru, com, org # определяем размер «большого файла» в 2 Мб
и т. д.) $bigfilelimit = 2*1024*1024;
# показывать отчёт о пользователях, превысивших квоту
 TCP-Request-protocol – распределение трафика по про- $showoversizelink = 1;
токолам (рис. 4). # устанавливаем квоту 10 Мб (одна для всех)
$perusertrafficlimit = 10*1024*1024;
 Requested content-type – распределение трафика по зна-
чению поля Content-type и по статусу входящих TCP-за- Проверяем, все ли настройки сделаны правильно:
просов (TCP_HIT, TCP_MISS, TCP_DENIED, и т. д.)
 Requested extensions – распределение трафика по рас- # ./ check-setup.pl
ширениям запрошенных файлов (gif, htm и т. д.).
 Incoming UDP(TCP)-requests by host – статистика Создаём отчёт:
по пользователям (количество запросов, скаченный
объём). # ./lightparser.pl

Если Calamaris будет не единственным обработчиком Проверим в браузере, что мы получили. Начальная стра-
журналов Squid, то я бы не ставил поддержку графики ница отчёта должна быть, как на рис. 5.
(от них практической пользы нет) и не выводил статисти- LightSquid поддерживает как родной формат журнала
ку по пользователям (другие программы это делают и пол- Squid, так и формат httpd.
нее, и красивее). В таком облегчённом варианте он ставит- Можно объединять пользователей в группы и смотреть
ся быстро, и генерируемые им отчёты в будущем будут за- отчёты по группе. Для этого в файле group.cfg определяем,
нимать меньше места. какой пользователь к какой группе относится:

LightSquid 192.168.10.1 01 Sysadmin


192.168.10.9 02 Managers
Перевести название программы можно как «освещённый 192.168.10.14 02 Operators
Squid». В каком свете нам будет представлен Squid, а точ- 192.168.10.30 02 Operators
192.168.10.74 03 Managers
нее наши пользователи, можно посмотреть по адре-
су http://lightsquid.sourceforge.net/demo16b/index.cgi?year= Можно вместо IP-адресов выводить имя компьютера
2005&month=04. и каждому имени компьютера сопоставить реальное имя
 Сайт – http://lightsquid.sourceforge.net. пользователя. Для первой цели автор программы предла-
 Стабильная версия – 1.6. гает либо использовать DNS, либо подставлять из спис-
 Объём – 45 Кб. ка. Скрипты, обрабатывающие файлы списков, находятся
 «Понимает» журналы – Squid. в подкаталоге ip2name. Можно написать свой, но нам сей-

36
администрирование
час достаточно использовать имеющийся. Для того чтобы
получить отчёт, как на рис. 6, определяем в lightsquid.cfg
следующие параметры:

$ip2name = "list";
$showgrouplink = 1;
$userealname = 1;

В ./ip2name/ip2name.list меняем значение переменной:

sub StartUser() {
my $ipfile = "/var/www/html/reports/lightsquid/users.txt";

и создаём указанный файл следующего содержания:

192.168.10.1 Myself Рисунок 7. Группировка пользователей в LightSquid


192.168.10.9 Bond
192.168.10.14 Bart ет в полночь. А Calamaris будет запускаться с аналогичной
192.168.10.30 Ivan задачей ежедневно в 00:30, раз в неделю по понедельни-
192.168.10.74 Petrov
кам в 00:35 и первого числа каждого месяца в 00:45. В пер-
Теперь в group.cfg нужно заменить все IP-адреса вых же числах он обновит свой журнал.
на сопоставленные им имена компьютеров, а в фай- Ограничим доступ к отчётам только с определён-
ле realname.cfg сопоставить имена компьютеров с имена- ных IP-адресов. Для этого создаём файл /var/www/html/
ми рользователей: reports/.htaccess:

Myself sysadmin Options +Indexes


Bart Bart Simpson Order deny,allow
Ivan Ivan Ivanov Deny from all
Petrov Petrov Semen Semenovich Allow from 192.168.100.11
Bond James Bond Allow from 192.168.100.17

Конечно, если у вас где-то ведётся свой список пользо- Можно сделать доступ по паролю. Подробности по на-
вателей, то лучше использовать его, написав для LightSquid стройке доступа можно прочитать в [2].
небольшой скрипт по разбору этого файла.
Запуская программу, мы получаем следующие отчёты: Подведем итоги
 Количество соединений и скачанных байт на день, У всех трёх программ есть настройки внешнего вида отчёта,
на месяц и на год по каждому пользователю, для груп- графики. Все поддерживают русский язык. У каждой есть
пы и для прокси-сервера в целом. свои отличительные характеристики, заслуживающие вни-
 Популярные сайты (рис. 7). В этом есть возможность мания, и можно установить все три, но если такой возмож-
сортировки списка по количеству запросов либо по объ- ности (или желания) нет, то при выборе стоит учесть:
ёму данных.  нужны ли вам те или иные отчёты;
 Таблица времени доступа пользователя к сайтам,  достаточно ли у вас дискового пространства, чтобы хра-
то есть время его активности в Интернете. нить все желаемые отчёты;
 Отчёт о «больших» скачанных файлах.  позволяет ли нагрузка на процессор добавить генера-
цию всех желаемых отчётов. Для обработки 140 тысяч
Хочется особо отметить удобный интерфейс. строк журнала на компьютере с процессором Pentium 4
с тактовой частотой 3 ГГц и с 1 Гб оперативной па-
Последние штрихи мяти потребовалось для всех трёх программ вместе
Осталось автоматизировать генерацию отчётов путём до- при их последовательном запуске около 2,5 минуты.
бавления в /etc/crontab соответствующих заданий:
Напоследок хочу сказать, что, поискав в Интернете от-
# Генерируем отчёты прокси сервера Squid клики по этим программам, вы обнаружите различные жа-
0/20 * * * * root /var/www/html/reports/lightsquid/ ↵
lightparser.pl today лобы администраторов на их неудобство или даже частич-
5 0 * * * root /usr/sbin/sarg ную неработоспособность. Так, например, Sarg до сих пор
30 0 * * * root /etc/calamaris/calam_rep.sh ↵
yesterday >> /var/log/calam_rep.log останавливается на некоторых записях журнала, отказы-
35 0 * * 6 root /etc/calamaris/calam_rep.sh ↵ ваясь создавать отчёт (благо что такие записи у меня по-
week >> /var/log/calam_rep.log
45 0 1 * * root /etc/calamaris/calam_rep.sh ↵ падаются редко). Однако все три проекта довольно актив-
month >> /var/log/calam_rep.log но развиваются и недочёты исправляются, поэтому ставь-
те свежие версии программ и пользуйтесь!
Конечно, частота обновления отчётов остаётся на ваше
усмотрение. В приведённом примере LightSquid будет под- 1. http://pm4u.narod.ru/linux_server.htm#Calamaris3.
держивать свои отчёты в актуальном состоянии, обновляя 2. Малахов П. Многоликий Apache. Размещаем несколько сай-
их через каждые 20 минут. Sarg будет создавать их один тов на одном веб-сервере. //Системный администратор, №12,
раз в день после ротации журналов, которую logrotate дела- 2005 г. – с. 63-65 (http://pm4u.narod.ru/apache.htm).

№7, июль 2006 37


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

Frenzy 1.0 – дитя мечты

Сергей Можайский
После почти двухлетнего перерыва вышла новая версия популярного русскоязычного
LiveCD-дистрибутива Frenzy. Факт смены номера версии с 0.3 до 1.0 говорит о многом,
да и информация о релизе с описанием нововведений вас впечатлит.

П
рошли те времена, когда загру- системы и, как следствие, увеличи- пользователей. Дистрибутив со-
зочная дискета была непремен- лось количество приложений, была вы- держит все программы из standard-
ным атрибутом системного ад- пущена в августе 2004 года, после че- версии, а также дополнительные
министратора. На смену дискетам при- го развитие проекта приостановилось приложения (в том числе просмот-
шли LiveCD и загрузочные USB Flash. почти на два года. Благодаря помощи рщики CHM, PDF, DjVu-форматов,
Выбор LiveCD для системных адми- сообщества пользователей Frenzy ра- эмуляторы DosBox и QEMU, муль-
нистраторов достаточно велик, правда, бота была продолжена в апреле 2006 тимедийные проигрыватели XMMS
большинство дистрибутивов основа- года, и в начале мая в Интернете поя- и MPlayer). Размер дистрибутива –
ны на Linux (к примеру, INSERT, GRML вилась первая бета-версия Frenzy 1.0. 250 Мб.
и BackTrack). На основе же FreeBSD Такой скачок номера версии связан  Frenzy lite – содержит только кон-
создано всего несколько дистрибути- с большими изменениями в структу- сольные утилиты. Размер дистри-
вов, и почти все они ориентированы ре дистрибутива. Открытое бета-тес- бутива – всего 50 Мб, что позво-
на обычного пользователя. Все, кро- тирование длилось месяц, за это вре- ляет уместить его на CD-визит-
ме одного. мя были найдены и исправлены мно- ку и носить с собой в бумажнике
Летом 2003 года я начал работу гие ошибки. (как я и поступил).
над проектом по созданию LiveCD-дис- После двух месяцев активной раз-
трибутива для системных администра- работки 5 июня вышел релиз Frenzy 1.0 Немалова жным достоинством
торов на основе ОС FreeBSD. Новый (Dreamchild). Новая версия выпускает- Frenzy является качественная руси-
дистрибутив, названный Frenzy, быс- ся в нескольких вариантах: фикация системы. В отличие от мно-
тро стал популярным в среде русско-  Frenzy standard – предназначена гих LiveCD-дистрибутивов, в которых
язычных администраторов и пользо- в первую очередь для системных локализации уделено мало внимания,
вателей FreeBSD. Этому способство- администраторов. Размер дист- в Frenzy поддержка русского языка
вала поддержка русского языка, не- рибутива – 200 Мб, что позволяет присутствует изначально – проблем
большой размер, хорошая подбор- уместить его на 3-дюймовый CD. с ним ни в консоли, ни в графичес-
ка утилит. Версия 0.3, в которой поя-  Frenzy extended – для системных кой оболочке не возникает. Кроме то-
вилась поддержка сжатой файловой администраторов и продвинутых го, Frenzy отлично документирована –

38
администрирование
в ее состав входит Frenzy Handbook, учетной записью су-
описывающий основы работы с дист- перпользователя, в ос-
рибутивом и специфичными для него тальные можно вой-
программами, а также русскоязычная ти, используя логин
документация по FreeBSD (традицион- root без пароля. В от-
ные Handbook и FAQ). На официаль- личие от стандартной
ном сайте проекта (http://frenzy.org.ua) FreeBSD системные
работает форум, где можно пообщать- сообщения не выводят-
ся с разработчиком и пользователями ся на первую консоль,
Frenzy. Также у проекта есть почтовая их можно просмотреть,
дискуссионная рассылка. нажав <Alt+F12>.
Рисунок 1. Загрузочное меню Frenzy
Дистрибутив можно свободно ска- Присутствует и гра-
чать (http://frenzy.org.ua/ru/releases/1.0/ фическая система X.Org 6.9.0, в качес- щих в состав Frenzy, вы можете найти
download.shtml) или приобрести в он- тве графической оболочки использу- в документации по системе или на сай-
лайн-магазинах. ется популярный оконный менеджер те проекта. Мы же рассмотрим только
fluxbox. В новой версии Frenzy fluxbox некоторые программы, представля-
Начинаем работу настроен так, что можно перемещать ющие интерес для системных адми-
З а г р у ж а е м с я с к о м п а к т- д и с к а . и масштабировать окна, используя нистраторов.
Frenzy 1.0 основана на FreeBSD 6.1- клавиатурные комбинации. Меню про- Набор программ для работы сетью
STABLE, поэтому вначале загруз- грамм можно вызвать, просто щелк- в Frenzy весьма велик. Помимо стан-
ка ничем не отличается от FreeBSD нув правой кнопкой мыши на рабочем дартных утилит ping и traceroute при-
(изменен только логотип при загруз- столе или нажав клавишу «Windows» сутствует полезная утилита mtr, соче-
ке), но сразу после загрузки ядра мы на клавиатуре (к чему многие при- тающая в себе преимущества обеих
попадаем в меню выбора параметров выкли). программ. Статистику трафика, прохо-
загрузки (рис. 1). Меню программ в fluxbox стоит от- дящего через компьютер, можно пос-
Мы можем выбрать язык систе- метить особо. В нем содержатся прак- мотреть с помощью trafshow. Хочется
мы, указать размер диска в оператив- тически все утилиты, входящие в со- отметить утилиту darkstat, выводящую
ной памяти. став Frenzy (консольные утилиты за- статистику о проходящем трафике че-
В Frenzy 1.0 появилось два новых пускаются в окне терминала rxvt). Кро- рез веб-интерфейс. Для работы с бес-
режима загрузки. Режим toram поз- ме того, они рассортированы по темам, проводными сетями присутствует на-
воляет загружать Frenzy полностью что позволяет легко найти нужную про- бор утилит bsd-airtools и популярная
в оперативную память, позволяя из- грамму (рис. 2). утилита kismet.
влечь компакт-диск из привода. В ре- Перечислять все программы, вхо- Для подключения к другим компью-
жиме fromhdd система будет загру- дящие в состав дистрибутива, можно терам в сети можно воспользовать-
жаться со сжатого образа на жестком долго – в standard-версию входит бо- ся ssh-клиентом PuTTY, терминаль-
диске (для этого папку frenzy с компакт- лее 500 пакетов, в extended – более ным клиентом для Windows Terminal
диска необходимо скопировать в ко- 600. Полный список программ, входя- Services rdesktop или VNC-клиен-
рень любого раздела на HDD), компакт-
диск при этом также освободится.
Кроме того, теперь мы можем ука-
зать при загрузке, что делать с разде-
лами жесткого диска. В предыдущих
версиях система по умолчанию пыта-
лась монтировать разделы жесткого
диска в режиме «только чтение», дру-
гих вариантов предусмотрено не бы-
ло. Теперь мы можем вообще не об-
ращаться к жесткому диску (пара-
метр nohdd), производить поиск раз-
делов, но не монтировать их (параметр
nohdmnt) или же монтировать разделы
диска в режиме чтения и записи (пара-
метр hdrw). Frenzy поддерживает фай-
ловые системы UFS, FAT, EXT2/EXT3,
NTFS, ReiserFS (последние две – толь-
ко в режиме чтения).
После загрузки мы попадаем в кон-
сольный режим. На первой консоли ав-
томатически производится вход под Рисунок 2. Меню fluxbox

№7, июль 2006 39


администрирование
аппаратном обеспечении помогут
собрать утилиты pciutils, dmidecode,
udesc_dump. Для получения данных
с сенсоров температуры и напряже-
ния на материнской плате служат
consolehm, lmmon и mbmon.
В состав дистрибутива входят ути-
литы для работы с файловыми сис-
темами UFS, FAT, NTFS, EXT2/EXT3,
ReiserFS, XFS.
Среди утилит для работы с диском
стоит отметить утилиту gpart, позво-
ляющую восстановить поврежденную
таблицу разделов (меня она спаса-
ла неоднократно, несмотря на то, что
она не всегда справляется со слож-
ной разметкой диска со множеством
логических разделов). Для тех же це-
лей можно использовать и testdisk, ко-
торый помогал мне даже в тех случа-
ях, когда gpart оказывалась бессильна.
Рисунок 3. Конфигурационные утилиты frconf, netconf, servconf
Для проверки разделов жесткого дис-
том tightvnc. Обзор сетевого окру- ется в HTML-файле и может быть про- ка также весьма полезен будет набор
жения можно выполнить с помощью смотрен в любом браузере. утилит для восстановления файлов –
LinNeighborhood. Для работы с ба- Проверить компьютер на наличие fatback, fatundel, ntfsundelete. Утилиты
зами данных есть клиенты MySQL вирусов вы сможете с помощью анти- magicrescue и foremost способны вос-
и PostgreSQL. Есть несколько SNMP- вирусного пакета clamav. В состав дис- станавливать файлы по известным
клиентов (консольный braa и графи- трибутива входит вирусная база, ак- сигнатурам даже в случае полного раз-
ческий mbrowse) и LDAP-клиентов туальная на начало июня, поэтому пе- рушения файловой системы независи-
(консольный ldapvi, позволяющий ре- ред началом вирусной проверки об- мо от ее типа.
дактировать LDAP через текстовый новите базу утилитой freshclam. Впро- На диске присутствует большая
редактор, и «иксовый» gq). чем, в UNIX-системах намного чаще коллекция бенчмарков д ля оцен-
Утилита rbllookup позволит выяс- встречаются руткиты, нежели вирусы. ки производительности процессора,
нить, внесен ли ваш IP в «черный спи- Найти их помогут rkhunter и chkrootkit. файловой системы, сети и компьюте-
сок» на каких-либо blacklist-серверах. Для удобного просмотра и анализа log- ра в целом.
Для перевода форматов масок подсе- файлов, что немаловажно при анализе В новом релизе появилась так-
ти и их расчета пригодятся cidr, ipcalc последствий атаки злоумышленников, же утилита для стресс-тестирования
и whatmask. в Frenzy имеются программы ccze, log_ stresstest, позволяющая оценить, на-
В дистрибутиве имеются утилиты analysis, abck, logtool. сколько подходит существующая ап-
для сканирования портов (естественно, Работа с аппаратным обеспече- паратная конфигурация для работы
не обошлось без ставшего классичес- нием компьютера представлена це- в качестве интернет-сервера.
ким сканера NMAP), получения различ- лым рядом утилит. Информацию об В extended-версию Frenzy входят
ной информации о компьютерах в се-
ти – версиях ОС и установленных се- Запись на NTFS в FreeBSD Смонтировать NTFS для записи мож-
тевых служб. Не обошлось и без сниф- Практически на каждом форуме по FreeBSD но командой:
феров – кроме Ethereal и Ettercap, при- появляется вопрос: «Поддерживает ли ntfsmount /dev/ad0s3 /mnt/ntfs ↵
сутствует также стандартный tcpdump FreeBSD запись на NTFS?». Ответ на него -o force
с графическим фронтэндом netdude. был стандартен: «Нет, не поддерживает». Полностью поддерживается чтение
Для проверки компьютеров на раз- Ситуация изменилась только после пор- и редактирование имеющихся файлов,
личные уязвимости предназначена по- тирования в FreeBSD популярной в Linux частично – создание, перемещение и уда-
пулярная клиент-серверная программа дистрибутивах системы FUSE (Filesystem ление каталогов и файлов. Под «частично»
nessus, о которой написаны десятки in Userspace), позволяющую легко созда- подразумевается, что в некоторых случаях
статей. Добавлю только, что в состав вать драйверs для любых файловых сис- операция проходит успешно, в некоторых –
Frenzy входит вспомогательная ути- тем. Теперь после установки из портов нет. Поскольку драйвер является экспери-
лита autonessus, позволяющая прово- модуля fuse и комплекта утилит ntfsprogs ментальным, пользоваться возможностью
дить сканирование компьютеров и се- возможна частичная запись на NTFS (пол- записи на NTFS стоит только в случае край-
тей в «пакетном» режиме без вызо- ную запись драйвер linux-ntfs из состава ней необходимости (к примеру, для сброса
ва графического интерфейса клиента ntfsprogs пока не поддерживает). В Frenzy пароля на установленной Windows XP с по-
nessus. Отчет о сканировании сохраня- такая возможность тоже имеется. мощью утилиты chntpw).

40
администрирование
эмуляторы dosbox и qemu. DosBox позволяет запускать в редактируем файл /etc/fstab и меняем в описании точки мон-
Frenzy DOS-программы, а QEMU, являющийся свободным тирования корневой файловой системы нули на единицы:
аналогом VMWare, позволяет запускать практически лю-
бую операционную систему. # Device Mountpoint Fstype Options Dump Pass#
/dev/ad0s1a / ufs rw 1 1
В целом можно сказать, что набор программ покры-
вает практически все потребности системного админис- Установка на USB Flash выполняется у тилитой
тратора. «install2flash» также просто. Утилита установки автомати-
чески разбивает флешку на два раздела – один для установ-
Настройка и установка ки Frenzy (размер зависит от типа дистрибутива, 50-250 Мб),
Кроме традиционного sysinstall, в Frenzy имеется конфигу- второй – для хранения данных (под него резервируется все
рационный центр frconf, с помощью которого вы можете на- оставшееся место).
строить систему (рис. 3). В частности, с помощью этой ути-
литы легко создать swap-файл на указанном разделе диска. Frenzy SDK
Для настройки сетевых подключений предназначена утили- Кроме ISO-образов, в сети доступен и комплект Frenzy SDK,
та netconf. С ее помощью можно настроить соединение по предназначенный для самостоятельной сборки собствен-
локальной сети, dialup-соединение, VPN-соединение (в ка- ного дистрибутива Frenzy. В его состав входят сборочные
честве VPN-клиента используется mpd) и соединение через скрипты, архивы исходных кодов FreeBSD и дерева портов,
ADSL-модем. Утилита servconf предназначена для быстро- пакаджи и исходные коды для всех программ из Frenzy.
го конфигурирования и запуска различных серверов. Она Структура сборочных скриптов заметно изменилась
позволит быстро запустить SSH-сервер, FTP-сервер, веб- по сравнению с предыдущими версиями. Появилась подде-
сервер thttpd и сервер Samba. ржка нескольких версий сборки – сейчас одна и та же струк-
Все сделанные настройки можно сохранить на диске- тура скриптов используется для сборки standard и extended
ту, жесткий диск или USB Flash с помощью утилиты frbk. версий как англоязычной, так и русскоязычной, достаточно
При следующей загрузке Frenzy настройки будут восста- лишь внести изменения в файл конфигурации. Ручное вме-
новлены автоматически. шательство в процесс сборки сведено к минимуму – нуж-
Одной из самых долгожданных новинок в Frenzy 1.0 ста- но положить собранные пакаджи в нужный каталог и под-
ла возможность установки на жесткий диск и USB Flash. править конфигурацию сборочных скриптов. Подробную
Эта возможность была добавлена по многочисленным информацию о работе с набором SDK можно найти в офи-
просьбам пользователей Frenzy, которые желали видеть циальной документации по Frenzy.
на своем жестком диске FreeBSD, настроенную точно так же.
Процесс установки весьма прост – набираете «install2hdd» Что дальше?
и следуете инструкциям инсталлятора. Правда, упроще- Естественно, развитие дистрибутива продолжается. В сле-
ние процесса установки привело к тому, что вся система дующей версии планируется в первую очередь включить но-
устанавливается на один слайс, создание отдельных раз- вую реализацию unionfs для FreeBSD от Daichi Goto, кото-
делов для /var, /usr и т. п. не предусмотрено. Для рабочей рая в настоящее время существует в виде набора патчей.
станции это приемлемо, но для сервера такую конфигура- Это позволит реализовать модульную структуру LiveCD
цию я не рекомендую. (как это уже сделано в популярном чешском дистрибути-
После установки Frenzy на жесткий диск вы получите ве SLAX), что заметно упростит процесс самостоятельной
полноценную ОС FreeBSD с набором программ. Разве что сборки и модификации дистрибутива. Также планируется
исходные коды системы (src) и коллекцию портов (ports) интегрировать tmpfs, портированную из NetBSD, которая
нужно будет установить самостоятельно. намного выигрывает в быстродействии у mfs-реализации
Правда, не обошлось без ложки дегтя. В установленной RAM-дисков в FreeBSD.
на жесткий диск Frenzy 1.0 после выключения питания наот- В недавнем обзоре на Distrowatch Frenzy был назван
рез отказывается запускаться fsck для проверки диска. Ко- лучшим LiveCD-дистрибутивом на основе FreeBSD как
нечно, его можно запустить вручную или с LiveCD, но лучше для системных администраторов, так и для начинаю-
исправить проблему сразу. Поэтому сразу после установки щих пользователей. Действительно каждый может найти
в этом дистрибутиве что-то полезное
LiveCD для сисадминов нения размеров разделов жесткого диска, и интересное. Новички могут начать
Кроме Frenzy, есть и другие LiveCD-дис- и антивирусный пакет clamav, занимая при знакомство с FreeBSD именно с это-
трибутивы, ориентированные на систем- этом всего 50 Мб. Stresslinux (http://www. го дистрибутива, не устанавливая ОС
ных администраторов. Правда, практи- stresslinux.org) предназначен специально на жесткий диск. Продвинутые поль-
чески все они основаны на том или ином для стресс-тестирования и мониторинга зователи найдут множество полезных
дистрибутиве Linux. GRML (http://grml.org) аппаратного обеспечения. И напоследок программ. Ну а системные админист-
предлагает большой набор утилит для си- вспомним о Backtrack (http://www.remote- раторы, для которых и разрабатывал-
садминов для восстановления системы, exploit.org/index.php/BackTrack), образо- ся дистрибутив, не раз воспользуют-
анализа сети и просто для работы. INSERT вавшемся в результате слияния дистрибу- ся Frenzy в своей повседневной рабо-
(http://www.inside-security.de/insert_en.html) тивов WHAX и Auditor, который предлагает те. Лично меня Frenzy выручала неод-
содержит такие полезные утилиты, как ути- большой набор утилит для анализа безо- нократно, надеюсь, что и вам она то-
лита gparted для редактирования и изме- пасности компьютеров и сетей. же пригодится.

№7, июль 2006 41


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

Автоматизируем тестирование железа


с помощью StressLinux

Дмитрий Волков
На основе компьютера с ОС Linux и StressLinux можно создать инструмент
для автоматического тестирования железа всех узлов локальной сети.

Б
ывают дефек ты оборудова- храняться на сервере. Что мы и попы- граммы разработаны для создания вы-
ния, которые могут проявить- таемся реализовать. сокой нагрузки процессоров, поэто-
ся только при высоких нагруз- На сегодняшний день существует му неохлаждаемые, разогнанные или
ках, в этом случае поможет дистри- единственный специализированный по другой причине «непрочные» (weak)
бутив Linux, который может использо- для тестирования LiveCD-дистрибу- системы при прохождении тестирова-
вать ресурсы ваших комплектующих тив – StressLinux. Он работает толь- ния могут вызвать потерю данных (пов-
на 100%. В первую очередь тестиро- ко в режиме консоли и занимает по- реждение файловой системы), также
вание будет полезно для компьюте- рядка 50 Мб, но этого будет достаточ- есть вероятность нанести поврежде-
ров, на которых возлагаются задачи, но чтобы провести полноценное тести- ния компонентам микросхем».
требующие большой загрузки процес- рование. StressLinux содержит основ- Поэтому если ваше железо еще
сора. Такие компьютеры должны рабо- ные утилиты для тестирования комп- на гарантии, можете проводить тесты,
тать 24 часа в сутки и не давать сбоев. лектующих компьютера при высоких а если нет, то использовать тестирова-
Поэтому их как следует нужно прове- нагрузках, утилиты для считывания ние вы будете на свой страх и риск.
рить на прочность. информации с датчиков процессор-
В настоящее время существует ной платы, а также обладает высокой Конфигурация тестового
множество утилит для тестирования гибкостью в настройках сценариев для комплекса
железа как из Windows, так из Linux. тестирования. Вы сами сможете зада- Комплекс для тестирования будет со-
Но необязательно, что на компьюте- вать сценарии тестирования, добавляя стоять из сервера и одной рабочей
рах находятся две ОС: Linux и Windows. или убирая тесты. В качестве оболоч- станции, соединенных в одну сеть.
Поэтому для тестирования удобно ки в StressLinux используется busybox. Требования к рабочей станции –
использовать дистрибутивы LiveCD. Она содержит набор общих UNIX-ути- наличие сетевой карты с поддержкой
Но такой путь ведет к потере време- лит для работы в Linux, позаимствован- PXE. Список поддерживаемых карт
ни, если у вас много хостов, требующих ных из GNU пакетов fileutils, shellutils можно узнать здесь: (http://www.bootix.
тестирования. Каждый компьютер не- и т. д. С помощью busybox можно со- com/adapters/adapters_en.html). В ка-
обходимо загружать с CD/DVD и про- здать ОС Linux, умещающуюся на од- честве рабочей станции я буду ис-
гонять тесты вручную, при этом другие ну дискету. Подробную информацию пользовать VMWare, так как это удоб-
узлы сети будут простаивать и ждать о проекте вы можете найти на сайте но для создания скриншотов в момен-
своей очереди. Для решения пробле- http://www.busybox.net. ты загрузки системы. Тесты загру-
мы можно использовать тестирование жать в VMWare бесполезно, потому
с загрузкой тестов через сеть по ваше- Как насчет гарантии? что при тестировании будет использо-
му собственному сценарию, при этом Разработчики тестов, входящих в со- ваться только та часть ресурсов, кото-
все результаты тестирования будут со- став StressLinux, сообщают: «Эти про- рая выделена под виртуальную систе-

42
администрирование
му. Поэтому тестирование надо проводить на реальной ма-  default – имя сценария для загрузки по умолчанию;
шине. А вот настройки загрузки через сеть StressLinux под  prompt – может принимать значения 1 или 0. Если значе-
VMWare проводить очень удобно, не придется бегать от сер- ние 1, то перед загрузкой будет выведена строка «boot:
вера к клиенту и проверять, что же там опять не работает. <Имя загружаемого сценария>». Если же значение 0,
Со стороны сервера потребуется: то эта строка выводится только при: нажатии <Alt> или
 дистрибутив StressLinux; <Shift>, или при включенном CapsLock, или Scroll lock;
 дистрибутив Linux, функционирующий на сервере (я ис-  timeout – содержит количество секунд до начала авто-
пользую ASP Linux 9.0); матической загрузки;
 серверная часть пакетов: pxe, dhcp, tftp, nfs.  display – параметр, указывающий на файл-приветствие,
будем использовать по умолчанию loader.msg:
Как будет работать тестовый комплекс
Перезапускаем клиентскую машину и в BIOS выбираем Welcome to StressLinux Boot Server!
загрузку по сети. После перезагрузки сетевая карта будет 0fTo start the stresslinux distribution enter press ↵
выполнять поиск DHCP-сервера. Сервер принимает за- <return>.07
прос и присваивает клиенту IP-адрес, pxe предлагает вы- Available boot options:
брать загрузку:
stress - Boot Stresslinux via PXE with initrd
 Local boot – с жесткого диска;
 PXELinux – появится меню для выбора загрузки одно- 09F1:0f Stresslinux
го из ядер StressLinux, или загрузки отдельного теста,
например теста памяти – memtest.  F1 – здесь можно создать файл-help и указать все воз-
можные параметры ядер;
При выборе ядра происходит передача его по протоко-  label – это имя сценария загрузки, а сценарий может со-
лу tftp с последующей загрузкой корневой файловой сис- держать в себе 3 параметра:
темы nfs, находящейся на сервере. Выполняется тестиро-  kernel – путь к ядру Linux или к отдельной загружа-
вание в автоматическом режиме, а результаты записыва- емой программе, например memtest;
ются в текстовые файлы на сервере.  append – список параметров, передаваемых ядру;
 ippappend – параметр, используемый PXELinux
Конфигурация сервера для указания настроек сети. Он нам не нужен,
Я использую дистрибутив ASP Linux 9.0 на rpm-пакетах. так как предполагаем, что загрузка для всех уз-
Вам нужно использовать пакеты, входящие в состав ва- лов сети общая. Параметры сети для каждого кли-
шего Linux. ента указывает dhcp сервер. Описание всех воз-
Для начала скачиваем последнюю версию дистрибутива можных конфигураций файла default можно узнать
StressLinux 0.3.1 с http://www.stresslinux.org/release/stresslinux- (http://syslinux.zytor.com/faq.php).
0.3.1.pxe.tgz с поддержкой загрузки через PXE. Распаковы-
ваем каталог с корневой системой StressLinux (_stresslinux) Далее будем настраивать dhcp-сервер. Для этого не-
в директорию на сервере /tftpboot/X86PC/_stresslinux. обходимо установить его из вашего дистрибутива Linux,
Скачиваем http://www.stresslinux.org/release/stresslinux- в ASP Linux это rpm – Uvh dhcp-3.0pl1-23.i386.rpm, а ес-
0.3.1.pxe_sample_configs.tgz архив с примерами конфигура- ли же такого под рукой не имеется, тогда скачиваем его
ционных файлов pxe, dhcp, tftp, nfs. Распаковываем в ката- с http://ftp.isc.org/isc/dhcp. На момент написания статьи пос-
лог /tftpboot/X86PC/pxelinux содержимое из папки pxes. Этот ледней версией была – 3.0.4. Создаем конфигурационный
каталог будет использоваться для создания сценариев за- файл /etc/dhcpd.conf, указав MAC-адрес одного из клиен-
грузки рабочих станций через pxe. Каждой рабочей станции тов. Я буду указывать MAC-адрес VMWare. После измене-
можно присвоить свой сценарий загрузки на основе её IP-ад- ний файл должен выглядеть так:
реса, за подробной информацией можно обратиться на сайт
http://syslinux.zytor.com/pxe.php. Применим одинаковый сце- Subnet 192.168.12.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
нарий загрузки для всех клиентов – default. В файл внесем default-lease-time 21600;
изменения, указав в nfsroot адрес вашего сервера и располо- max-lease-time 43200;
host some_host{
жение корневого каталога _stresslinux. Сервер имеет IP-ад- # Указываю MAC-адрес VMWare
рес: 192.168.12.191. После изменений файл /tftpboot/X86PC/ hardware ethernet 00:0C::29:50:84:D7;
fixed-adress 192.168.12.242;
pxelinux/pxelinux.cfg/default будет выглядеть так: option vendor-class-identifier "PXEClient"
}
}
default stress
prompt 1
timeout 600 Надо уделить внимание опции ‘option vendor-class-
display loader.msg identifier “PXEClient”’. Она требуется для того, чтобы dhcp
F1 loader.msg
передал управление серверу pxe в момент присвоения
label stress # Stresslinux IP-адреса клиенту, а pxe в свою очередь смог отобразить
kernel ../_stresslinux/boot/vmlinuz
append rw video=vesafb:640x480-32@75,nomtrr,ywrap ↵ меню для выбора загрузки (это меню появляется путем за-
root=/dev/nfs nfsroot=192.168.12.191:/tftpboot/ ↵ пуска бинарного файла pxelinux.0 на сетевой карте). Служ-
X86PC/_stresslinuxip=dhcp hda=scsi hdb=scsi ↵
hdc=scsi hdd=scsi бы dhcp и tftp можно запустить на разных узлах сети, тогда

№7, июль 2006 43


администрирование
использоваться для доступа к корневой файловой систе-
ме StressLinux загружаемыми станциями.
Устанавливаем nfs-utils, в ASP Linux выполнив rpm –
Uvh nfs-utils-1.0.1-2.9.i386.rpm), иначе скачиваем с ресурса
http://prdownload.sourceforge.net/nfs). Все настройки nfs сво-
дятся к конфигурации трех файлов:
 /etc/exports – указывает каталоги, доступные через
nfs;
 /etc/hosts.allow и /etc/hosts.deny – файлы управления
доступом к серверу.

Переходим непосредственно к конфигурации nfs-сер-


вера – файлу /etc/exports. Более подробно о настройках
nfs можно узнать на http://nfs.sourceforge.net/nfs-howto. От-
кроем доступ к каталогу /tftpboot/X86PC/_stresslinux на чте-
ние и запись для всех узлов сети 192.168.12.0/24, указав
строку:

/tftpboot/X86PC/_stresslinux 192.168.12.0/255.255.255.0 ↵
(rw,insecure,sync,no_root_squash)

Рисунок 1. Пример конфигурационного файла pxe.conf Теперь запускаем программы dhcpd, pxe, tftp, nfs. Пере-
загружаем клиента и выбираем загрузку по сети, в резуль-
тате появится приглашение (см. рис. 2).
Выбираем PXELinux (см. рис. 3). Отображается меню
StressLinux для выбора загрузочного ядра в нашем случае –
это будет одно-единственное 2.6.16. Но это пока, в дальней-
шем можно будет расширить список ядер и отдельных про-
грамм для тестирования.
Рисунок 2. Приглашение для выбора варианта загрузки Выбираем ядро и загружаемся. Если оно загрузилось ус-
пешно, тогда выводится приглашение (см. рис. 4) для вво-
необходимо добавить в конфигурационный файл параметр да логина. Вводим root без пароля.
next-server, указывающий на имя или IP-адрес tftp-серве- Друг за другом появятся 2 меню для выбора раскладки
ра. Мы же будем использовать один хост, поэтому этот па- клавиатуры и выбора процессорной платы соответствен-
раметр не указываем. но (см. рис. 5, 6).
Перейдем к настройке предзагрузочной среды запуска – Если на вашей процессорной плате есть сенсоры темпе-
pxe. Для её установки в ASP Linux выполняю rpm –Uvh pxe- ратуры и напряжений, то тогда во время тестирования мож-
0.1-36.i386.rpm, если в вашем дистрибутиве такого пакета но будет наблюдать за состоянием компьютера. Вывод дан-
нет, то скачиваем с сайта http://www.kano.org.uk/projects/pxe. ных реализован программой sensors из пакета lm_sensors.
Изменяем конфигурационный файл /etc/pxe.conf, устано- Список поддерживаемых процессорных плат можно узнать
вив 2 значения: на http://secure.netroedge.com/~lm78/supported.html. Для по-
 interface – номер интерфейса на сервере, по которому иска требуемых модулей можно воспользоваться програм-
соединены сервер с клиентом; мой sensors-detect.
 default_address – IP-адрес сервера. В этой версии StressLinux используется ядро 2.6.16. Ес-
ли вас устраивает это ядро, тогда следующий пункт мож-
Остальные параметры оставляем без изменений. Вид но пропустить, если же нет, тогда перейдем к настройке
файла после изменений смотрите на рис. 1. собственного ядра.
Устанавливаем tftp-server, взяв его из дистрибутива
(tftp-server-0.33-1asp.i386.rpm) или с http://www.kernel.org/ Конфигурация нового ядра
pub/software/network/tftp. Tftp-сервер будет использовать- Ядро, входящее в дистрибутив StressLinux, не име-
ся для передачи ядра и образа ядра клиентам. Запуск ет поддержки некоторых SCSI-контроллеров. Поэто-
его можно реализовать из-под xinetd, для этого в файле му можно использовать собственное ядро с подде-
/etc/xinet.d/tftp исправить значение параметра disable с «yes» ржкой всего необходимого железа. При нго конфигу-
на «no» и убедиться, что в качестве рабочего каталога уста- рировании необходимо не забыть установить параметр
новлен /tftpboot. А запуск из консоли можно выполнить: CONFIG_ROOT_NFS, для того чтобы использовать корневую
файловую систему nfs. Также можно добавить последнюю
# in.tftpd –v –l –s /tftpboot версию пакета lm_sensors. Для загрузки нового ядра копиру-
ем его в каталог /tftpboot/X86PC/_stresslinux/boot/ и назовем
Теперь подходим к финальному шагу по настройке за- vmlinuz-<номер версии ядра>. Все модули этого ядра копи-
грузки StressLinux – конфигурированию nfs, который будет руем в /tftpboot/X86PC/_stresslinux/lib/<номер версии ядра>.

44
администрирование
Добавляем следующие строки в файл /tftpboot/X86PC/
pxelinux/pxelinux.cfg/default:

label my # Stresslinux (my kernel)


kernel ../_stresslinux/boot/vmlinuz-<номер версии ядра>
append initrd= rw video=vesafb:640x480-32@75,nomtrr,ywrap ↵
root=/dev/nfs nfsroot=192.168.12.191:/tftpboot/ ↵ Рисунок 3. Отображение содержимого файла loader.msg
X86PC/_stresslinux ip=dhcp hda=scsi hdb=scsi ↵
hdc=scsi hdd=scsi

Не забываем добавить пункт в файл loader.msg. Пере-


запускаем клиента и выбираем созданное ядро.
Рисунок 4. Пример успешной загрузки ядра
Список доступных утилит
для тестирования
Список основных утилит представлен в файле /tftpboot/
X86PC/_stresslinux/etc/motd (см. рис. 7).
В файле указаны доступные программы для тестирова-
ния, но этот список можно расширить путем простого до-
бавления их в корневую файловую систему StressLinux на
сервере. В стандартном наборе имеем:
 серию программ для высокой загрузки процессо-
ров – burn-оптимизированных под разные процессоры
(http://pages.sbcglobal.net/redelm);
 stress – используемую в качестве инструмента для ус-
тановки определенной загрузки процессора, памяти,
ввода/вывода, жесткого диска (http://weather.ou.edu/
Рисунок 5. Программа для ручного выбора типа клавиатуры
%7Eapw/projects/stress);
 netio – для тестирования производительности сети;
 smartctl – для тестирования устройств с поддержкой
S.M.A.R.T.;
 lshw – для сбора информации обо всей системе;
 x86info – информация о процессорах;
 программы мониторинга – hddtemp, sensors.

Сценарии тестирования
Для создания сценария достаточно создать скрипт на bash
или другом языке программирования и указать его выпол-
нение в файле /tftpboot/X86PC/_stresslinux/etc/bash.bashrc.
Создадим сценарий – test.sh и разместим его в /tftpboot/
X86PC/_stresslinux/etc/init.d/. Предполагаем, что компьютеров
для тестирования будет много, поэтому результаты прохож- Рисунок 6. Программа для ручного выбора процессорной платы
дения тестов для каждого узла будем сохранять в отдельную
папку, в качестве имени папки будем использовать IP-адрес VAL=`/sbin/lsmod | grep i2c-isa`
if [
этого узла. Реализовать это можно следующим образом: x$VAL
==
#!/bin/bash x
]
// Получаем IP-адрес узла then
IP=`ifconfig|grep inet|perl -nle ↵ echo
@ar=split(/\s+/,$_);@ar2=split(/\:/,\\$ar[2]); ↵ trying insert module i2c-isa
print \\$ar2[1]`
modprobe i2c-isa
// Создаем каталог, если такого еще не существует fi
if[ ! -d /home/result/$IP ]
then Перед тестированием собираем информацию об узле
echo
Making results dir /home/result/$IP и сохраняем ее на сервере:
/bin/mkdir -p result/$IP echo
fi Collecting information
// все результаты тестирования будем записывать сюда
cd /home/result/$IP # собираем информацию о PCI-устройствах
/sbin/lspci | tee lspci
Далее загружаем модули для вывода информации, мо- sleep5
дули для вашей процессорной платы можно определить # собираем информацию о процессорах
/usr/bin/x86info | tee x86info
с помощью скрипта detect-sensors. sleep5

№7, июль 2006 45


администрирование
# собираем расширенную информацию о системе
/usr/bin/lshw | tee lshw
sleep5

Программа tee выдает результаты на экран и одновре-


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

TM=20 # Таймер
echo
Starting 1st test
| tee stress1
echo
Spanning 10 workers spinning on sqrt()
| tee -a stress1
Рисунок 7. Список программ для тестирования с кратким echo
описанием waiting for $TM seconds
| tee -a stress1
/usr/bin/stress -v -c 10 -t $TM | tee -a stress1 &

Запускаем stress с порождением 10 процессов на пе-


риод, указанный в переменной $TM, равной 20 секундам.
Результаты сохраняем в файл stress1. Пример успешно-
го завершения теста приведен на рис. 8. В результате ви-
дим, что все 10 процессов запустились и завершились ус-
пешно, тест был проведен в течение 20 секунд. Если вы
загрузили модули для считывания информации с датчи-
ков, то после каждого теста можно использовать функ-
цию, которая будет отображать состояние системы с ин-
тервалом в 1 секунду.

sens "Spanning 10 workers spinning on sqrt() stress1" "$TM"


SENSORS=`/usr/bin/sensors | grep 'No sensors found'`
sens()
{
if [ "x$SENSORS" == "x" ]
then
for((i=1;i<=$2;i++))
do
/usr/bin/clear
/usr/bin/sensors
echo "Time limit $2 s"
echo "seconds $i $1"
sleep1
done

}

Постоянное отображение состояния системы с пери-


одичностью в 2 секунды можете наблюдать на /dev/tty12.
Пример состояния системы во время тестирования пред-
ставлен на рис. 9.
Рисунок 8. Пример успешного завершения теста по вычислению
квадратного корня
Напутствие
На этом базовую настройку автоматического тестирова-
ния можно считать законченной, но это совсем не значит,
что ничего больше сделать нельзя.
Дальнейшая функциональность тестирования может
быть расширена добавлением других программ в составе
StressLinux, и не только. Например, можно добавить обра-
зы дискет загружаемых по сети для конфигурирования се-
тевых карт 3com или позаимствовать некоторые DOS-ути-
литы для восстановления mbr из дистрибутива Ultimate Boot
CD. Дальнейшие улучшения будут зависеть только от ваших
фантазий и времени, которое вы можете затратить.
Рисунок 9. Пример считывания информации с датчиков
процессорной платы Желаю успешного тестирования!

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

FreeNAS: строим надежную


систему хранения данных

Сергей Яремчук
Объемы информации постоянно растут, повышаются требования к её безопасности,
доступности, актуальности. Возникают вопросы как переносить разрозненные данные
с различных носителей в централизованные хранилища? Как построить системы хранения
информации даже в небольших организациях?

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

С
егодня на рынке существует
достаточное количество пред-
ложений систем хранения дан-
ных, отличающихся возможностями,
архитектурой и ценой. Решения на ба-
зе Windows Storage Server или Cisco
Storage Networking требуют опреде-
ленной подготовки администраторов,
да и не всегда могут подойти по цене.
Можно попытаться решить проблему
при помощи любой из свободных опе-
рационных систем, но придётся затра-
тить много времени на развертывание
и поддержку. Есть ещё вариант – ис-
пользовать специальную разработку
FreeNAS (http://www.freenas.org).

Возможности FreeNAS
Разработка представляет собой Open
Source NAS-сервер, построенный
на базе FreeBSD 6 и распространяе-
мый по лицензии BSD. Отсюда и его
назначение – обеспечивать неболь-
шие организации и отделы надеж- Рисунок 1. Вся настройка происходит посредством удобного веб-интерфейса
ным устройством хранения информа-
ции по минимальной стоимости. Раз-
работкой FreeNAS занимается в сво-
бодное время Оливер Кохард (Olivier
Cochard). Судя по релизам, делает он
это весьма активно, так как за 5 ме-
сяцев 2006 года уже было 11 предре-
лизов.
Текущая на момент написания ста-
тьи версия 0.66 обеспечивает подде-
ржку:
 сетевых файловых протоколов
CIFS, FTP, NFS, SSH, RSYNC и AFP
(для компьютеров Apple);
 жестких дисков ATA/SATA, SCSI,
USB и Firewire;
 файловые системы UFS, FAT32,
EXT2/EXT3, NTFS (только чтение);
 программного RAID 0, 1 и 5;
 аппаратных RAID и сетевых карт,
поддерживаемые FreeBSD 6 (вклю-
чая беспроводные);
 аутентификации локальной и до-
мена Microsoft (сейчас полным
ходом идет работа по под де -
Рисунок 2. В пункте «System: General setup» настраиваются основные параметры
ржке LDAP, планируется еще NIS сервера
и Radius).
Так как под него могут форматировать- разных версий был скачан более 85
З а г ру з к а с и с т е м ы в о з м ож н а ся диски полностью, нельзя использо- тысяч раз.
не только с жесткого диска, но и с USB- вать загрузочный диск как часть RAID.
устройства. Например, можно исполь- На сайте доступен образ, оптимизиро- Установка FreeNAS
зовать flash-карту, т.к. размер установ- ванный под VMWare. Для настройки Д ля ус тановки и ис поль зования
ленной системы не превышает 17 Мб), уже установленной системы исполь- FreeNAS понадобится компьютер,
такой вариант может быть полезен при зуется веб-интерфейс. За время раз- как минимум, с 96 Мб оперативной па-
использовании программного RAID. вития с сайта SourceForge.net FreeNAS мяти, сетевой картой и одним или бо-

№7, июль 2006 49


администрирование
лее жестким диском. Если планирует- тановки покажет все найденные в сис- терфейсов в меню выбираем 1-й пункт.
ся использование RAID 5, для которо- теме устройства, и вам потребуется Будет выведен список найденных ус-
го требуется 3 диска, а загрузка с USB только выбрать и ввести необходи- тройств (в том числе и fireware), акти-
невозможна, то поступите следующим мое название. В моем случае это бы- вированное сетевое устройство будет
образом. На период установки вместо ли acd0 и ad0 соответственно. помечено как up.
одного из жестких дисков устанавли- После установки программа со- Если в системе установлено не-
вается CD-ROM, а после производит- общила, что FreeNAS был установлен сколько сетевых карт, то, кроме LAN-
ся обратная замена. на первый раздел ad0s1 слайса. Сис- интерфейса (в моем случае это ed0),
Размер iso-образа дистрибути- тема подсказывает, что, для того что- система запросит выбрать и Optional 1
ва – 30,2 Мб, записываем его на диск бы использовать созданный раздел и пр. Вместо цифры можно указать бук-
и загружаемся. В процессе инициа- с данными, необходимо добавить диск ву a (т.е. auto-detection), тогда систе-
лизации системы будут выданы со- на странице Disks:Management и точ- ма сама попробует определить интер-
общения о наименовании жестких ку монтирования на странице Disks: фейс, нажав на <Enter>, можно перей-
дисков (CD cd0, disk0 и т. д) и най- Mount point. ти к следующему этапу.
денных сетевых устройств. После за- Запомним это. Нажимаем <Enter> Д ля справки, сервер FreeNAT
грузки будут выданы установки сис- для продолжения и, выбрав 5-й пункт не поддерживает маршрутизацию
темы по умолчанию: LAN-сетевой ин- консоли, перезагружаем систему. между интерфейсами, поэтому пере-
терфейс и его IP-адрес. Вся первона- Теперь загружаемся уже с жестко- дача данных из одной сети в другую
чальная настройка происходит при по- го диска и для настройки сетевых ин- через сервер невозможна. Несколь-
мощи консоли установки – FreeNAS
console setup. Разделы веб-интерфейса FreeNAS

"FreeNAS console setup" Раздел Подразделы Назначение и осуществляемые настройки


"*********************" Установка имени сервера, адресов DNS-серверов, изменение пароля
1) Interfaces: assign network ports администратора, протокола работы WebGUI http/https, при необходимости
2) Set up LAN IP address General Setup
и порта, на котором он будет работать (по умолчанию 80/443), часового пояса,
3) Reset webGUI password данных NTP-серверов
4) Reset to factory defaults
Static routes Управление маршрутизацией
5) Reboot system System
6) Ping host Firmware Загрузка и установка обновлений
7) Install on HD/CF/USB Key
8) Shell Установка сгенерированных на внешних источниках SSL-ключей
9) PowerOff system Advanced и сертификатов, отключение «Console menu», проверки обновлений, спикера,
включение демона S.M.A.R.T и некоторые другие настройки
На первом этапе необходимо ус- Настройка сетевых интерфейсов. Здесь можно установить IP-адрес,
тановить систему на жесткий диск шлюз, изменить MTU, выставить скорость интерфейса и режим работы –
Interfaces LAN и пр.
half/full duplex, а также Device polling, позволяющий регулировать опрос сетевых
(вс е д анные буду т уничтожены). устройств
Для этого нажимаем 7 и попадаем Управление дисками, форматирование разделов под UFS, FAT и Software RAID,
Management
в меню настройки: инициализация iSCSI
Disks
Software RAID Создание и управление, получение информации о Software RAID
"FreeNAS Install"
Mount Point Работа с точками монтирования
"*********************"
1) Install on HD, CF or USB key: Create 1 Настройка протоколов CIFS, FTP, NFS, RSYNCD, SSHD и AFP. По умолчанию
UFS partition все отключено, поэтому первоначально необходимо активировать протокол,
Services –
2) Install on HD: Create 2 UFS partitions установив Enable в правом верхнем углу во вкладке, соответствующей нужному
(FreeNAS and DATA) протоколу
3) Return to main menu Настройка локальных пользователей и групп, а также параметров доступа
Access –
к Active Directory. Пункты NIS и RADIUS пока не работают
Выбор 1-го пункта позволит уста- Просмотр системной информации (загрузка системы, процессы), сетевых
Status –
новить FreeNAS на жесткий диск, ко- проводных и беспроводных интерфейсов, дисковых устройств

торый может быть использован толь- Logs


Просмотр файлов журналов (системных и сетевых сервисов) и настройка
отправки выбранных сообщений внешнему syslog-серверу
ко для загрузки.
Вывод информации о дисках, дисковых разделах и свободном месте, SMART,
Если вы планируете использо- Informations точек монтирования, статус программного RAID, iSCSI. И сюда же поместили
вать только один диск в системе статус Active Directory
(для загрузки и хранения информа- Выполнение команд ping и traceroute, для чего достаточно ввести IP-адрес
ции), то выбирите 2-й пункт. В этом Ping/Traceroute или имя узла. Доступно изменение ряда параметров (интерфейс, количество
попыток, максимальное количество узлов)
случае в пределах одного слайса бу-
Здесь можно вручную выполнить любую команду на сервере, результат будет
дет создано два раздела: небольшой Diagnostics
Execute command выведен в браузере, поддерживается история команд. Кроме того, отсюда
17 Мб для FreeNAS и остальное про- можно загрузить файлы с сервера и на него
странство будет отведено под дан- ARP Table Вывод ARP-таблицы (соответствие IP- и МАС-адресов, и имени узла)
ные. Backup/restore Сохранение и восстановление настроек системы
Для установки потребуется ввести Установка первоначальных параметров (возможно и через пункт 4 –
Factory defaults
имя исходного привода CD-ROM и за- «console setup»)
тем имя диска, на который будет про- Reboot system
Перезагрузка и выключение сервера
изводиться установка. Программа ус- Shutdown system

50
администрирование
ко интерфейсов можно использовать
только для доступа к серверу FreeNAS
из разных сетей.
После перезагрузки в пункте 2 уста-
навливаем для LAN IP-адрес (как при-
мер, 192.168.0.1) и сетевую маску (как
обычно, 255.255.255.0 или в CIDR но-
тации – 24). Дополнительные интер-
фейсы настраиваются исключитель-
но при помощи веб-браузера.
Воспользовавшись пунктом 6, мож-
но попробовать пропинговать любой
узел в сети. Если все нормально, мо-
нитор, клавиатуру и прочие лишние ус-
тройства можно отключить и в даль-
нейшем работать удаленно, через веб-
интерфейс.

Веб-интерфейс FreeNAS
В строке веб-браузера набираем
http://192.168.0.1. Для регистрации ис-
пользуем пользователя admin и пароль Рисунок 3. Окно добавления нового диска
freenas (его можно сбросить при помо-
щи 3-го пункта).
Как видите из рис. 1, через веб-ин-
терфейс доступно семь разделов на-
строек. Чтобы легче было ориентиро-
ваться, все основные параметры све-
дены в таблицу.

Настройка NAS
в рабочей группе
Оливер Кохард, по его словам, бу-
дет активно заниматься документа-
цией проекта уже после релиза 1.0,
сейчас на сайте доступен документ
«FreeNAS Setup and User guide», ко-
торый дает довольно общие поня-
тия процесса (хотя почитать его сле-
дует). Поэтому в завершение статьи
небольшой практический пример. На-
строим FreeNAS с одним диском в не-
большой рабочей группе, использую-
щей в качестве клиентов компьютеры Рисунок 4. Создание новой точки монтирования
с MS Windows.
После регистрации в системе не- ющий добавить новый диск. Выбира- Чтобы зайти на сервер через
обходимо первым делом установить ем в выпадающем списке «Disk» диск, веб-консоль, используем уже прото-
имя сервера, протокол работы сменить с которым будем работать (рис. 3), при кол HTTPS, т.е. адрес выглядит так:
на защищенный и поставить новый па- необходимости устанавливаем для не- https://192.168.0.1/, после чего прини-
роль администратора, а также выбрать го режим работы UDMA, параметры маем сертификат сервера.
свой часовой пояс. Заходим в «System: перехода в standby, Advanced Power Диски добавлены, теперь оче-
General setup» и заполняем соответс- Management и acoustic. После чего на- редь точек монтирования. Выбираем
твующие поля (рис. 2). Для того чтобы жимаем «Add». Новый диск появит- в «Disks: Mount Point» и нажимаем «+».
изменения вступили в силу, потребует- ся в «Disks: Management», остальные В выпадающем меню «Disk» (рис. 4)
ся перезагрузка системы, но это мож- диски добавляются аналогично. Пос- выбираем жесткий диск, в «Partition» –
но сделать и после выполнения следу- ле того как в систему будут добавлены номер раздела в слайсе (первый раз-
ющей операции. все диски, нажимаем «Аpply changes», дел сейчас занят под систему, поэтому
В «Disks: Management» нажимаем для подтверждения изменений и те- выбираем 2), в «File System» устанав-
на «+» и попадаем в пункт, позволя- перь перезагружаемся. ливаем файловую систему UFS и за-

№7, июль 2006 51


администрирование
не видать. При установке «Time server»
в «Yes» сервер FreeNAS может высту-
пать сервером времени для клиен-
тов. Закончив со всеми настройками,
жмем «Save».
Теперь последний шаг – созда-
ние локальных пользователей. Здесь
все так же просто. Сначала необхо-
димо создать хотя бы одну группу,
если поступить наоборот, то это мо-
жет привести к ошибкам и в тяжелой
ситуации к использованию «Factory
defaults». Переходим в «Access: Users:
Groups», нажимаем «+» и вводим на-
звание группы (например, user) и ее
описание. Теперь в «Access: Users»
заводим пользователя, указав имя,
пароль, группу. Для отдельных поль-
зователей можно разрешить до -
ступ к серверу по SSH, включив «Full
Рисунок 5. Настройка доступа к серверу для Windows-сети Shell» (администратору он разрешен
по умолчанию).
В будущих версиях планируется
указывать и сетевой интерфейс, с ко-
торого смогут регистрироваться поль-
зователи.
Если сейчас набрать в строке бра-
узера на клиенте \\netbios-имя\ (или
\\192.168.0.1\), то после ввода имени
и пароля пользователя увидим новый
ресурс, в котором можно читать и со-
здавать файлы.
К сожалению, при использовании
для аутентификации локальных поль-
зователей FreeNAS не позволяет тон-
ко ограничить доступ пользователей
к имеющимся ресурсам, все легитим-
ные пользователи получат одинаковый
доступ ко всем папкам.
Сервер FTP настроить так же легко,
только у меня не получилось добиться
Рисунок 6. Добавление локального пользователя вывода русских имен файлов, тогда
как с SMB таких проблем не было.
включения сервиса ставим галочку
в Enable (рис. 5). В поле «Authentication» Подводим итоги
выбираем метод аутентификации (ано- Дистрибутив сам по себе интересен.
нимный, локальный и Active Directory). В нем сочетаются небольшой размер,
Последнего сервиса в маленькой груп- хорошие возможности, интерфейс,
пе нет, если выставить Anonymous, обеспечивающий удобство настройки
Рисунок 7. FTP-сервер FreeNAS то доступ к серверу сможет получить и понятный даже новичку. Для повсед-
не умеет отображать имена файлов любой пользователь сети. Мы же хо- невной работы его возможностей бо-
в кириллице
тим ограничить доступ для непро- лее чем достаточно, командную строку
полняем поля «Share Name» и описа- шеных гостей и поэтому выставля- придется задействовать только для бо-
ние ресурса «Description». Далее нажи- ем «Local User». В полях NetBiosName лее тонких настроек. Как бы то ни бы-
маем «Save» и в основном окне «Apply и Workgroup прописываем имя серве- ло, FreeNAS является хорошей альтер-
changes». ра, под которым он будет виден в сети нативой для построения простого NAS
Теперь необходимо сделать доступ- NetBios, и рабочую группу. Параметр сервера, без необходимости установки
ным новый дисковый ресурс по се- «Dos charset» выбираем как ACSII, ина- полной версии GNU/Linux или какой то
ти. Переходим в «Services: CIFS», для че русских букв в именах файлов вам из BSD-систем.

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

OpenVPN: доступ повышенной


проходимости

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

Доступ всегда и везде сеть. Разумеется, мобильные пользо- мер, к почтовому серверу (во многих
Обеспечивая удалённый доступ во ватели обязаны (как правило, на уров- компаниях использование внешних со-
внутреннюю сеть компании приходит- не корпоративного стандарта) не ста- единений по POP3, IMAP и SMTP-про-
ся учитывать множество факторов. На- вить опцию хранения пароля на учёт- токолам запрещено). Проблема может
пример, ситуации, когда установить со- ную запись доступа VPN, но... вы много заключаться в том, что почтовый сер-
единение между клиентом и сервером таких пользователей видели? Мне пока вер находится, например, вне локаль-
не возможно. Причина может быть про- не довелось ни одного. Поэтому пред- ной сети компании. Существует ком-
ста – системные администраторы гос- почтительно ввести дополнительные плексное решение всех обозначен-
тевой сети, из которой сотрудник ва- средства безопасности доступа к внут- ных проблем.
шей фирмы пытается произвести под- ренней сети компании. Другими слова-
ключение, закрыли возможность всех ми, использовать двухфакторную ав- Как мы будем
исходящих соединений, а доступ к веб- торизацию пользователей – програм- решать задачу
ресурсам осуществляется через «про- мным и аппаратным способом. Речь Воспользуемся следующими програм-
зрачный» прокси-сервер. В такой си- идёт о ключах eToken, которые могут мными и аппаратными средствами:
туации установить VPN-соединение, использоваться для безопасного хра-  OpenVPN, работающим под Linux,
используя стандартные решения типа нения сертификатов для шифрования в качестве поставщика защищён-
pptp и IPsec, не возможно. и дешифрования данных или автори- ного частного канала связи;
Второй большой неприятностью зации в различных системах.  программами htc и hts для орга-
для любого мобильного пользовате- И последнее (по счёту, но не по важ- низации http-тунеля через прокси-
ля может оказаться банальная потеря ности), что хотелось бы упомянуть – сервера;
(или кража) ноутбука. Излишне объяс- возможность получения дост упа  eToken PRO от компании Alladin.
нять, чем обернётся для компании до- не только к файлам на серверах ком-
ступ чужого человека в корпоративную пании, но и к другим ресурсам. Напри- Вы можете использовать аналогич-

№7, июль 2006 53


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

OpenVPN Установка OpenVPN-сервера


Система OpenVPN [1] выбрана для реализации решения Воспользуемся Gentoo Linux для установки системы
не случайно. Это программное обеспечение весьма ак- OpenVPN. Прежде всего убедитесь, что ядро Linux содер-
тивно обновляется разработчиками. OpenVPN позволяет жит все необходимые модули. Для этого зайдите в конфи-
реализовать практически любые задачи по организации гуратор ядра и обратите внимание на запись, относящую-
VPN-каналов. ся к TUN/TAP-драйверам.
Среди достоинств системы:
Device Drivers --->
 поддержка большинства операционных систем – Linux, Network device support --->
Windows версий 2000/XP и выше, OpenBSD, FreeBSD, <*> Universal TUN/TAP device driver support
NetBSD, Mac OS X, Solaris;
 возможность использовать все доступные OpenSSL-ме- Если поддержка установлена, то всё в порядке, и мож-
тоды шифрования, аутентификации и сертификатов для но продолжать. Если нет – установите необходимое значе-
защиты вашего частного канала; ние и перекомпилируйте ядро вашей системы.
 возможность создавать целые фермы серверов с ба- Если вы не планируете в дальнейшем использовать ап-
лансировкой нагрузки тысяч входящих VPN-соедине- паратные ключи для двухфакторной аутентификации, то ус-
ний; тановка самой системы OpenVPN крайне проста и выпол-
 использование статического ключа для шифрования няется одной командой.
или систему открытых ключей;
 возможность создавать безопасное подключение типа # USE='ssl examples' emerge openvpn
«мост» (ethernet bridges);
 возможность использования как udp, так и tcp для С текущей версией ebuild система установит OpenVPN
VPN-канала. версии 2.0.6. Для использования eToken придётся пройти
по дереву портов и принудительно установить более новую
версию (на данный момент 2.1_beta14).
И это далеко не полное перечисление функционала
OpenVPN. Система постоянно дорабатывается, количест- # echo net-misc/openvpn >> /etc/portage/package.keywords
# USE="ssl example" emerge openvpn
во возможностей увеличивается.
Кроме того, может потребоваться установка дополни-
Туннель http с использованием htc и hts тельных пакетов. Поэтому я рекомендую на время установ-
Это маленькие программы, одна из которых запускает- ки системы просто раскомментировать в /etc/make.conf оп-
ся на сервере, а другая соответственно на клиенте. Они цию ACCEPT_KEYWORDS нужной архитектуры (в моём
не нуждаются в особых настройках и запускаются прос- случае это «~x86»), позволив системе установить всё не-
той командной строкой. Ниже мы рассмотрим их более обходимое.
подробно. Опция SSL необходима для поддержки OpenSSL,
а examples установит примеры конфигурационных файлов
eToken-ключ OpenVPN. В противном случае никаких примеров не будет
Для наших целей подойдёт любой аппаратный ключ, пред- и файлы настроек придётся писать, что называется, с чис-
назначенный для безопасного хранения цифровых серти- того листа.
фикатов. eToken PRO – защищенное устройство, предна-
значенное для строгой аутентификации, безопасного хра- Создание ключей сервера
нения секретных данных, выполнения криптографических и клиентов
вычислений и работы с асимметричными ключами и циф- После того как скомпилируется система, потребуется
ровыми сертификатами. USB-ключ архитектурно реализо- (для удобства) скопировать примеры конфигурационных
ван как USB-картридер с встроенной в него микросхемой файлов и скрипты для формирования ключей и сертифи-
(чипом) смарт-карты. Ключ выполнен в виде брелка и на- катов в /etc/openvpn.
прямую подключается к USB-порту компьютера, при этом И то и другое находится в директории /usr/share/openvpn.
не требует для своей работы каких-либо дополнительных В поддиректории easy-rsa содержатся скрипты на все слу-
устройств. чаи жизни, позволяющие создавать:
Подобных аппаратных средств на рынке представлено  корневой сертификат (build-ca);
огромное множество, и вы можете выбрать наиболее оп-  ключ и сертификат сервера (build-key-server);
тимальное для ваших целей устройство. Приятная особен-  простые ключи для клиентов (build-key);
ность состоит в том, что вы один и тот же ключ может ис-  ключи для клиентов, защищённые паролем (build-key-
пользоваться для разных задач – производить авторизацию pass);
для доступа по Wi-Fi в сеть, для установления VPN-соеди-  ключи PKCS для необходимой нам возможности исполь-
нения и для шифрования данных на жёстком диске. зовать eToken (build-key-pkcs12).

54
администрирование
Первоначально создадим все необходимые сертифи- cert и key. Если будут выставлены пересекающиеся опции,
каты и ключи для сервера. система откажется запускаться.
Если вы решили использовать обычный VPN, укажи-
# cd /etc/openvpn/easy-rsa те адресное пространство, в котором он будет работать
# source ./vars
# ./clean-all и из которого будет назначать адреса клиентам.
# ./build-ca
# ./build-key-pkcs12 --server server server 192.168.4.0 255.255.255.0
# ./build-dh
# ./build-key-pkcs12 –-pkcs12 client1
Если вы собираетесь использовать подключение типа
Последняя команда создаёт PKCS12-ключи для поль- «мост», то потребуется другая опция (параметр server за-
зователя. Client1 – это имя пользователя. Команда долж- комментируйте, так как сервер может единовременно ра-
на быть выполнена для каждого предполагаемого клиен- ботать только в одном качестве):
та. Обратите внимание, что при создании ключа вы може-
те защитить его дополнительно паролем. server-bridge 192.168.1.73 255.255.255.0 192.168.1.61 ↵
192.168.1.63

Настройка OpenVPN где:


Конфигурационный файл OpenVPN (называющийся по-  первый и второй параметры – адрес и маска локальной
умолчанию server.conf) снабжён подробными комментари- сетевой карты сервера;
ями и позволяет без проблем выставить все необходимые  третий и четвёртый параметры – пул адресов для вы-
настройки без использования какой-либо дополнительной дачи внешним клиентам.
документации.
Сначала укажем, по какому адресу и на каком порту бу- Опция, которую мы пропустили:
дет работать наш сервер:
ifconfig-pool-persist /etc/openvpn/ipp.txt
local Х.Х.Х.Х
port 443
содержит имя файла, в котором будут храниться соответс-
Выбор порта не случаен, почему, я поясню позже, когда твия клиентов (по именам их ключей) и их внутренним ад-
будем настраивать клиентскую и серверную часть http-тун- ресам, которые им выдаёт система OpenVPN.
неля. Следующие важные опции указывают, какие адресные
Выберем, как будет работать наш VPN: по tcp или udp. пространства будут доступны для клиентов и при подключе-
Для этого есть соответствующая опция: нии автоматически добавятся в таблицу маршрутизации.

proto tcp push "route 192.168.1.0 255.255.255.0"


push "route Х.Х.Х.Х 255.255.255.255"

или Первая опция добавляет возможность использовать


нашу локальную сеть, а вторая добавляет один внешний
proto udp адрес, на котором находится наш почтовый сервер, куда
клиенты также должны иметь доступ при любых обстоя-
Так как мы собираемся сделать возможным доступ че- тельствах.
рез веб-прокси-сервер гостевой системы, то выберем Большинство опций, которые следуют дальше, необхо-
proto tcp. димы для реализации возможностей, выходящих за рам-
Выберите тип сетевого устройства, которое будет ис- ки данного материала.
пользоваться. Опции:
 dev tun0 – в случае организации обычного VPN;
 dev tap0 – если вы хотите использовать подключение push "dhcp-option DNS 192.168.1.1"
client-to-client
типа «мост».
указывают, какой DNS использовать клиентам для преоб-
Используя второй вариант, помните о необходимос- разования имён в IP-адреса внутри нашей локальной сети,
ти достаточного пула свободных сетевых адресов в ва- и позволять ли клиентам VPN взаимодействовать между
шей локальной сети, которые будут время от времени собой. Это может быть полезно, если есть необходимость
заниматься удалёнными пользователями при подключе- обмена файлами между двумя пользователями.
нии по VPN. Если вам по какой-то причине нужно позволить двум
В секции описания ключей напишем полный путь до на- независимым клиентам VPN использовать одновремен-
шего ключа: но идентичные сертификаты – раскомментируйте опцию
duplicate-cn.
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12 Последнее, на что сейчас стоит обратить внимание,
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
это название файла и путь к нему, куда OpenVPN будет пи-
Обратите внимание, что одновременно может исполь- сать свой журнальный файл, а также на количество допус-
зоваться только либо ключ pkcs12, либо «стандартные» ca, тимых пользователей системы одновременно.

№7, июль 2006 55


администрирование
Настройка шлюза локальной сети Sat Jun 17 22:54:42 2006 us=799376
Sat Jun 17 22:54:42 2006 us=799409
TUN/TAP TX queue length set to 100
/sbin/ifconfig tun0 192.168.4.1 pointopoint
Если ваш сервер OpenVPN не является основным шлю- 192.168.4.2 mtu 1500
Sat Jun 17 22:54:42 2006 us=824310 /sbin/route add -net 192.168.4.0 netmask
зом локальной сети – потребуется добавить маршрутиза- 255.255.255.0 gw 192.168.4.2
Sat Jun 17 22:54:42 2006 us=827291 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135
цию для VPN-подсети. Так как в моей сети используется ET:0 EL:0 AF:3/1 ]
Sat Jun 17 22:54:42 2006 us=912828 GID set to nobody
Cisco 2621 в качестве основного шлюза, я добавил марш- Sat Jun 17 22:54:42 2006 us=912911 UID set to nobody
рут на ней командой: Sat Jun 17 22:54:42 2006 us=912950 Listening for incoming TCP connection on Х.Х.Х.Х:443
Sat Jun 17 22:54:42 2006 us=913000 Socket Buffers: R=[87380->131072] S=[16384->131072]
Sat Jun 17 22:54:42 2006 us=913028 TCPv4_SERVER link local (bound): X.X.X.X:443
Sat Jun 17 22:54:42 2006 us=913042 TCPv4_SERVER link remote: [undef]
ip route 192.168.4.0 255.255.255.0 192.168.1.73 Sat Jun 17 22:54:42 2006 us=913072 MULTI: multi_init called, r=256 v=256
Sat Jun 17 22:54:42 2006 us=913136 IFCONFIG POOL: base=192.168.4.4 size=62
Sat Jun 17 22:54:42 2006 us=913348 MULTI: TCP INIT maxclients=10 maxevents=14
Sat Jun 17 22:54:42 2006 us=913382 Initialization Sequence Completed
где первый и второй параметр – адрес и маска виртуаль-
ной подсети, а последний – адрес внутреннего интерфей- Также обратите внимание на вывод команды ifconfig, ко-
са OpenVPN-сервера. (Не забывайте включать интерак- торый должен показать, что в системе появилось новое се-
тивный режимана Cisco перед вводом команды, а также тевое устройство tun0.
записи изменений в память устройства после добавления tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
маршрута.) inet addr:192.168.4.1 P-t-P:192.168.4.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
Добавление маршрута на Linux-шлюзе производится RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
командой: collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# route add -net 192.168.4.0/24 gw 192.168.1.73 Если устройство не появилось, то внимательно просмот-
рите журнал и файл конфигурации.
где первый адрес – это наша виртуальная подсеть, а вто- Не забудьте добавить сервис OpenVPN в список авто-
рой – адрес внутреннего интерфейса сервера OpenVPN. матически запускаемых, а также сохранить новые прави-
Если не сделать вышеописанных действий, пакеты из ло- ла iptables в вашем списке.
кальной сети не смогут найти «дорогу» до VPN-клиента.
Установка и настройка клиента OpenVPN
Обеспечение доступа к внешнему ресурсу Теперь, когда первая половина настройки нашей системы
для VPN-клиентов завершена, самое время приступить к установке клиент-
Для того чтобы позволить VPN-клиентам попадать на наш ской части программы (клиенты Linux и Windows-систем).
почтовый сервер, находящийся во внешнем мире отно-
сительно нашей рабочей сети, воспользуемся услугами Устанавливаем Linux VPN-клиент
iptables. Клиент на Linux-системе может потребоваться вот в каком
Создавая правило, я не стал указывать допустимые пор- случае. Допустим, у вас есть удалённые интранет-серве-
ты соединения по той простой причине, что на внешнем сер- ры, ресурсы которых вы хотели бы использовать в своей
вере помимо почтового сервиса находятся и другие серви- локальной сети. Нет ничего проще! Вы просто подключае-
сы, работающие на нестандартных портах, которые часто те эти системы к VPN и пользуйтесь. Особенно это может
закрыты в гостевых системах для соединения. Вы можете оказаться полезным, если сервер является локальным для
указать, какие порты будут доступны для соединений кли- какой-нибудь удалённой сети.
ентам VPN. Как и в случае с настройкой серверной системы, убеди-
Если правила на вашем firewall настроены по принци- тесь в наличии необходимых модулей в ядре.
пу «всё запретить, нужное разрешить», то не забудьте до- В Linux клиентская часть от серверной отличается толь-
бавить разрешения на пересылку пакетов с интерфей- ко конфигурационным файлом. Этот файл значительно ко-
са tun0. роче и снабжён подробными комментариями.
Первые же параметры указывают сервису OpenVPN,
Запускаем сервер что в системе он является клиентом. Какое сетевое устройс-
Пришло время запустить OpenVPN-сервер и посмот- тво и протокол используются, а также, какой IP-адрес у сер-
реть, что будет в журнальном файле. Обратите внимание: вера и какой порт используется сервисом OpenVPN.
по умолчанию скрипт /etc/init.d/openvpn настроен на рабо-
ту с конфигурационным файлом /etc/openvpn/openvpn.conf, client
dev tun
а вовсе не server.conf, который идёт в примерах. Итак, за- proto tcp
пускаем наш сервер: remote openvpn.domain.ru 443

# /etc/init.d/openvpn start Скопируем на клиентскую систему необходимые для ра-


боты ключи и сертификаты:
В журнальном файле вы должны увидите приблизитель-
но следующий результат работы: ca.crt, client1.crt, client1.key

Sat Jun 17 22:54:42 2006 us=295361 OpenVPN 2.0.6 i686-pc-linux-gnu [SSL] [LZO] [EPOLL]
built on Jun 15 2006
Sat Jun 17 22:54:42 2006 us=569088 Diffie-Hellman initialized with 1024 bit key
и укажем их в конфигурационном файле
Sat Jun 17 22:54:42 2006 us=798824 TLS-Auth MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0
EL:0 ]
Sat Jun 17 22:54:42 2006 us=799346 TUN/TAP device tun0 opened
ca /etc/openvpn/easy-rsa/keys/ca.crt

56
администрирование
cert /etc/openvpn/easy-rsa/keys/client1.crt  просмотр журнал соединения (вызов из контекстного
key /etc/openvpn/easy-rsa/keys/client1.key
меню);
На этом настройка клиентской системы завершена, и вы  изменение настроек конфигурационного файла (вызов
можете её использовать. Запускать можно, просто пере- из контекстного меню);
именовав файл из client.conf в openvpn.conf или же коман-  использование OpenVPN в качестве системного сер-
дной сторокой: виса;
 окно ввода пароля на цифровой сертификат для аутен-
# openvpn /etc/openvpn/client.conf тификации на сервере;
 дополнительная защита программы на операцию со-
Первый раз я рекомендовал бы запустить из коман- единения (свой собственный пароль);
дной строки. Так как протокол будет выводиться непос-  изменение пароля на защищённый ключ (в том числе
редственно на экран, это поможет убедиться, что всё PKCS # 12);
в порядке.  настройка используемого прокси-сервера;
Если всё прошло нормально, то в окончание вывода бу-  использование настроек прокси-сервера из опций
дет приблизительно следующим: Internet Explorer;
 выполнение скрипта (bat) перед и/или после соедине-
Sun Jun 18 20:32:02 2006 TUN/TAP device tun0 opened
Sun Jun 18 20:32:02 2006 /sbin/ifconfig tun0 192.168.4.30
ния с сервером OpenVPN;
pointopoint 192.168.4.29 mtu 1500  индикация статуса соединения в системном трее.
Sun Jun 18 20:32:02 2006 /sbin/route add -net 192.168.1.0
netmask 255.255.255.0 gw 192.168.4.29
Sun Jun 18 20:32:02 2006 /sbin/route add -net Х.Х.Х.Х netmask Помните, что в версиях Windows младше 2000/XP
255.255.255.255 gw 192.168.4.29 OpenVPN-клиент работать не будет. Но думаю, в наше время
Sun Jun 18 20:32:02 2006 /sbin/route add -net 192.168.4.0
netmask 255.255.255.0 gw 192.168.4.29
такие версии операционных систем встречаются редко.
Sun Jun 18 20:32:02 2006 GID set to nobody После установки клиента в меню программ появляется
Sun Jun 18 20:32:02 2006 UID set to nobody пункт OpenVPN с богатым выбором:
Sun Jun 18 20:32:02 2006 Initialization Sequence Completed
 ссылка на папку с конфигурационными файлами;
Не забудьте добавить сервис в список автоматически  на папку с примерами;
запускаемых.  программа формирования статического ключа;
 программа создания сертификата и формирования за-
Устанавливаем Windows OpenVPN-клиент проса на его подпись;
OpenVPN в Windows-системе обладает графическим ин-  программа-клиент OpenVPN;
терфейсом (GUI), что значительно упрощает работу с ним  ссылки на различную документацию.
для пользователей. По адресу [2] всегда можно найти све-
жую версию программы. Рекомендую хотя бы первый раз Конфигурационный файл, как и все предыдущие, снаб-
скачать полный инсталяционный пакет (на данный момент жен комментариями и ничем не отличается от файла для
это openvpn-2.0.7-gui-1.0.3-install.exe), так как в нём содер- клиента Linux-системы. Разница только в расширении фай-
жатся драйвера для TUN/TAP-интерфейсов. В последс- ла. Если в Linux оно было «conf», то в Windows – opvpn. По-
твии можно скачивать обновления только самой програм- этому описывать настройки смысла не имеет, можно сме-
мы. (Application only по ссылке.) ло заимствовать их из предыдущего примера.
Среди достоинств и удобств клиента можно выделить: Остановимся только на описании ключей и сертифика-
 отображение иконки программы в системном трее; тов. Как вы помните, мы решили использовать двухфактор-
 свертывание окна журнала соединения сразу после ус- ную аутентификацию мобильных пользователей. Для этого
тановления сессии; скопируем на клиентскую систему с серверной только два

Рисунок 1. Программа для работы с ключом Рисунок 2. Окно импорта сертификата

№7, июль 2006 57


администрирование
файла – ca.crt и сертификат соответствующий (по имени)
данному клиенту с раширением p12.
Теперь нам необходимо импортировать сертифи-
кат в имеющийся в нашем расположении Alladin eToken.
Для этого скачаем (если ещё не установлено) программное
обеспечение по работе с ключом RTE по ссылке [3].
После установки полученной программы в меню про-
грамм появится папка eToken с единственной ссылкой
на программу eToken properties (см. рис. 1).
Вставив наш ключ в USB-порт, мы увидим его в окне
программы. Перейдя на иконку ключа и выбрав «Дополни-
тельно», введем PIN-код для доступа к ключу. Это даст воз-
можность импортировать сертификат (см. рис. 2).
Если при создании сертификата на сервере был исполь-
зован пароль (сразу после его подписывания), то здесь нас
попросят ввести его еще раз и можете распоряжаться дан-
ным сертификатом.
Теперь мы можем убедиться, что сертификат известен
нашей Windows-системе, а заодно узнать, как к нему будет
обращаться клиент OpenVPN. Для этого проследуем в «Па- Рисунок 3. Список доступных сертификатов
нель управления», где выберем «Свойства обозревателя». Вторая же наоборот слушает 443 порт и инициирует
В этом окне нас интересует только вкладка «Содержание» с удалённой htc-соединение через 80 порт.
и кнопка «Сертификаты» (см. рис. 3). Установка htc в Gentoo Linux на сервере выполняется
Выделим наш сертфикат и кликнем на «Просмотр», простой командой:
в открывшемся окне выбирем «Состав». Здесь нас ин-
тересует поле «Отпечаток», которое скопируем в буфер # emerge httptunnel
обмена.
Полученную информацию об отпечатке сертификата Для Windows-систем скачать httptunnel можно со стра-
внесём в конфигурационный файл нашего OpenVPN-кли- ницы проекта по ссылке [4].
ента. Использовать httptunnel весьма просто. Для запуска
на сервере достаточно команды:
cryptoapicert "THUMB:ed 38 ac 63 …"
ca ca.crt
# hts --forward-port Х.Х.Х.Х:443 80
Теперь, когда первоначальное конфигурирование кли-
ента завершено, пришло время опробовать его в действии. где указан IP-адрес и порт, на которые должен быть уста-
Для этого достаточно в контекстном меню выбрать коннект. новлен туннель в случае обращение на порт 80. Команда
Если обращение к eToken прошло корректно, появится окно выполняется без какого-либо вывода на экран. О резуль-
ввода PIN-кода для доступа к ключу (см. рис. 4). татах её выполнения можно узнать только из системного
В случае ошибки убедитесь, что ключ вставлен в USB- журнала (например, /var/log/messages).
порт, а предыдущие шаги выполнены верно.
Jun 18 01:47:28 admin hts[27389]: hts (httptunnel) 3.3 started
После подтверждения доступа к ключу в том же окне with arguments:
ввода будет отображаться журнал соединения с сервером. Jun 18 01:47:28 admin hts[27389]: me = hts
Окно автоматически скроется, как только соединение будет Jun 18 01:47:28 admin hts[27389]: device = (null)
Jun 18 01:47:28 admin hts[27389]: port = 80
успешно установлено. Вернуться к журналу всегда можно, Jun 18 01:47:28 admin hts[27389]: forward_port = 443
выбрав в контекстном меню «View log». Осталось попро- Jun 18 01:47:28 admin hts[27389]: forward_host = Х.Х.Х.Х
Jun 18 01:47:28 admin hts[27389]: content_length = 102400
бовать выполнить команду ping для какого-нибудь из ком- Jun 18 01:47:28 admin hts[27389]: strict_content_length = 0
пьютеров удалённой локальной сети и убедиться, что всё Jun 18 01:47:28 admin hts[27389]: use_std = 0
работает правильно. Jun 18 01:47:28 admin hts[27389]: debug_level = 0
Jun 18 01:47:28 admin hts[27389]: pid_filename = (null)
Теперь, когда всё уже настроено и работает, пора вер-
нуться к ситуации, когда доступ во внешний мир ограни- Команда netstat подтверждает нам, что hts действитель-
чен веб-ресурсами. А для его предоставления использует- но работает и «слушает» 80-й порт.
ся прозрачное проксирование.
# netstat -napl |grep 80
hts и htc tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27389/hts
Эти две программки легко устанавливаются и ещё про-
ще используются. Суть их работы состоит в том, что пер- Осталось сделать Windows-скрипт (bat) для запуска кли-
вая «слушает» указанный ей порт (в нашем случае это бу- ентской части httptunnel. Этот файл мы создадим в папке
дет 80, доступ к которому есть везде) и в случае инициа- c:\program files\openvpn\config и назовём hts_pre.bat. А в сам
ции соединения создаёт http-тунель. файл добавим только одну строку:

58
администрирование
C:\httptunnel\htc.exe -F 443 -P 192.168.1.1:3128 X.X.X.X:80 (может быть, потому что не силён в написании скриптов
для Windows). Если вам способ известен – тем лучше.
где: Как вы заметили, для установления туннеля нам потре-
 -F 443 – указывает порт, являющийся итоговым полу- бовалось знать IP-адрес и порт, на которых работает прокси-
чателем; сервер гостевой системы. Эта информация, конечно, не на-
 -P 192.168.1.1:3128 – IP-адрес и порт прокси-сервера писана крупным шрифтом при входе в здание, но тем не ме-
гостевой системы; нее (обычно) легко узнаётся у системного администратора.
 X.X.X.X:80 – собственно адрес серверной части Случаев, когда сисадмин отказывался сообщать парамет-
httptunnel. ры прокси, мне (возможно, пока) не известны.
Теперь наша система полностью настроена и готова
Выбор места создания и имени файла для скрип- работать в практически любых условиях. Этакий макси-
та не случаен. Как было уже сказано выше, OpenVPN мально защищённый «вседорожник» на просторах Ин-
для Windows умеет выполнять bat-файлы до соедине- тернета!
ния, сразу после соединения и после завершения сессии.
Для этого достаточно выполнить всего два условия. Со- Насколько мобильным может быть
здать bat-файл в директории конфигурационных файлов OpenVPN
OpenVPN и назвать файл по следующей схеме: Система OpenVPN позволяет использовать удалённую ло-
 Назвать файл xxx_pre.bat для выполнения скрипта не- кальную сеть практически в любых условиях. Но помимо
посредственно перед соединением. компьютеров (в том числе и ноутбуков), как вам известно,
 Назвать xxx_up.bat для выполнения сразу после уста- существуют ещё более «мобильные» устройства. Я гово-
новления соединения. рю о коммуникаторах и наладонниках (КПК). В большинс-
 Назвать ххх_down.bat для завершающего сессию скрип- тве из них (например, в устройствах на базе Windows Mobile
та. или Symbian) есть либо встроенное средство установле-
ния VPN-соединения, либо можно установить программное
Нас интересует первый тип скрипта. К слову сказать, обеспечение стороннего производителя.
выполнив команду из нашего bat-файла, система не за- Однако из-за использования в системе OpenVPN
кроет окно, и это придётся сделать вручную. Это не оста- TUN/TAP простые средства соединения не подойдут. И най-
новит наш туннель, но избавит от лишнего открытого ок- ти их для устройств данного класса, увы, пока не возмож-
на на рабочем столе. но. Изыскания в Интернете дали только информацию о ве-
Предполагаю, есть средство, позволяющее избежать дущихся разработках реализации возможности использо-
«вечно открытого» окна, но с ходу я его не обнаружил вания OpenVPN. (Сейчас ссылка на информацию об этом
есть уже и на главной странице проекта. [5])
Правда, есть одно исключение. Если вы обладатель КПК
Sharp Zaurus и давно собирались установить на него Linux,
то вполне сможете использовать ваш VPN. Драйвера и не-
обходимый софт для этого можно найти на просторах Ин-
тернета. Он используется многими людьми. Необходимые
файлы можно взять, например здесь [6].

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

1. http://openvpn.net
2. http://openvpn.se/files/install_packages
3. http://www.alladin.ru/support/download/category177
4. http://userpages.umbc.edu/~tmoses1/hypertunnelNT.zip
5. http://www.ziggurat29.com/OVPNPPCAlpha/OVPNPPCAlpha.htm
Рисунок 4. Удача и поражение 6. http://users.skynet.be/isa-et-pep/pep/zaurus/feed

№7, июль 2006 59


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

Установка и настройка
Systems Management Server 2003

Дмитрий Щербаков
Системному администратору приходится устанавливать и обновлять программное обеспечение,
проводить инвентаризацию. Эту рутинную работу лучше доверить System Management Server 2003.

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

С
помощью Systems Management
Server (SMS) вы сможете цент-
рализованно развертывать про-
граммное обеспечение, своевремен-
но обновлять прикладные програм-
мы и операционные системы семейс-
тва Windows, а также собирать инфор-
мацию об аппаратном и программном
обеспечении компьютеров сети, уда-
ленно управлять ПК.
Средствами SMS 2003 можно со-
ставлять разнообразные отчеты об
имеющемся парке вычислительной
техники, причем выборка производит-
ся из десятков параметров, которые
вы можете компоновать по собствен-
ному усмотрению. Приятно, что есть
возможность фильтрации по тому или
иному признаку, например, по уста-
новленной ОС. Рисунок 1. Поиск ресурсов сети
Хочется заметить, немного забе-
гая вперед, что, так как сведения об
имеющемся оборудовании и ПО хра-
нятся в базе SQL-сервера, они до-
ступны и при выключенном удален-
ном компьютере и есть возможность
отслеживать изменения в конфигура-
ции машин.
Официальная страничка в Интер-
нете, посвященная SMS, находится
по адресу: http://www.microsoft.com/
smserver/default.mspx.
На данный момент готовится к вы-
ходу версия SMS 2003 R2, последнее
обновление – Service Pack 2.
Требования к аппаратному обеспе-
чению сервера:
 Процессор 550 МГц и мощнее.
 Оперативная память 256 Мб и боль-
ше.
 Минимум 2 Гб свободного мес- Рисунок 2. Назначение ролей серверу SMS
та на жестком диске на разделе
NTFS. н е н и же Windows 20 0 0 S P4 и л и новлении SMS 2.0. В этом режиме для
 Сетевая карта. Windows XP SP1. взаимодействия между компьютерами
Прежде чем перейти непосредс- используются доменные учетные запи-
Требования к программному обес- твенно к установке SMS 2003, добав- си. Microsoft рекомендует выбирать ре-
печению: лю, что использование SMS целесо- жим Advanced, если не требуется под-
 Windows 2000 Server SP4 и выше. образно в больших сетях (от 100 ком- держка доменов NT 4.0 и предполага-
 IIS. пьютеров) либо в распределенных се- ется работа только в домене под уп-
 Microsoft SQL Server 7.0 SP3 и вы- тях, где расстояние между объекта- равлением Windows 2000 или Windows
ше, SQL Server 2000 SP3a или ми велико. 2003 Server, так как этот режим обес-
SQL Server 2005 (SQL Server не обя- печивает более высокий уровень бе-
зательно должен быть установлен Установка SMS 2003 зопасности. Для взаимодействия меж-
на одном компьютере с SMS). Сервер SMS может работать в двух ду компьютерами используются учет-
режимах безопасности: Standard ные записи компьютеров. Для нашего
SMS 2003 поддерживает два ти- и Advanced. примера установки выберем Advanced
па клиентов: Legacy Client – только Стандартный режим служит для Security.
для Windows 98 и Advanced Client – взаимодействия с доменами NT4.0 Перед установкой SMS 2003 жела-
для клиентов под управлением ОС и используется по умолчанию при об- тельно создать SMS Service Account

№7, июль 2006 61


администрирование
Остальные значения можно оставить
по умолчанию.
Итак, установка завершена. Но это,
как вы догадались, самая легкая часть.
Самое главное при настройке SMS –
это терпение, терпение и еще раз тер-
пение. Нельзя сказать, что SMS такой
уж тяжеловесный и требующий много
ресурсов продукт, но он очень нето-
ропливый. Так что сразу хочу предуп-
редить: не ждите результатов мгновен-
но. Пройдет не одна минута, а порой
это может быть и час, пока вы увидите
результат. Это не означает, что вы что-
то сделали неправильно, но многих это
смущает, и на этом этапе им приходит-
ся отказаться от использования SMS.
Поэтому главный инструмент отслежи-
вания работы сервера – логи.
Рисунок 3. Настройка установки клиентов методом Client Push
Обнаружение ресурсов
(с правами администратора домена), но установить два типа сайтов: Primary сети
который будет использоваться для ра- Site и Secondary Site. В Secondary Site Для начала найдем компьютеры в на-
боты служб сервера, создания объек- не предусмотрено базы данных сай- шей локальной сети. В консоли «SMS
тов ОС, доступа к SQL Server и для об- та SMS, и он управляется родитель- Administrator» найдите «Discovery
ращения на другие контроллеры до- ским Primary Site. Так как изначально Methods» («Site Database → Site
мена. у нас нет никаких сайтов SMS, присту- Hierarchy → имя_сайта → Site Settings»).
SMS 2003 тесно связан с Active пим к установке Primary Site. Secondary Откройте свойства «Network Discovery»
Directory (AD). Данные SMS хранят- Site не является обязательным и слу- и включите этот метод («Enable Network
ся в контейнере «System → System жит для удаленных филиалов. Discovery») (см. рис. 1). Тип поиска ус-
Management», SMS получает инфор- При установке SMS выбираем тановите «Topology, client and client
мацию из AD (о пользователях, ком- «Custom Setup». В качестве «Site Code» operating system». На вкладке «Subnets»
пьютерах). на экране «SMS Site Information» не- введите информацию о вашей подсети,
При установке SMS 2003 предла- обходимо ввести первые три буквы на вкладке «Domains» – о вашем доме-
гает расширить схему Active Directory. имени вашего компьютера, например, не. На вкладке «Schedule» установи-
Расширение схемы дает возможность, для компьютера Windows – WIN. В по- те параметры запуска поиска по рас-
например, для Advanced Clients, обна- ле «Site Name» – то же самое. Не за- писанию. Далее перейдите в узел
руживать назначенный им код сай- будьте установить флажок «Extend «Collections» и обновите данные группы
та, опубликованный в AD, таким же the Active Directory Schema» на экра- «All Systems». Предупреждаю, что ско-
способом находить Management Point не «SMS Active Directory Schema». Ес- рее всего результат вы быстро не по-
(служит для взаимодействия меж- ли хотите воспользоваться средства- лучите. Зависит он также и от парамет-
ду Advanced Clients и SMS). Хотя SMS ми удаленного администрирования, ров запуска Network Discovery, который
официально поддерживает установку на экране «Installation Options» уста- вы выбрали на предыдущем шаге. В от-
на Windows 2000 Server, но при этом новите флажок «Remote Tools» (хотя дельных случаях бывает, что информа-
возникает много подводных камней. утилиты типа DameWare предостав- ция обновляется только на следующий
В частности, расширение схемы AD ляют намного больше возможностей). день. Обнаруженные учетные записи
в автоматическом режиме не прохо-
дит. Для этого надо давать разреше-
ния вручную.
На сайте Microsoft есть документ
«Active Directory Schema Modification
and Publishing for Systems Management
Server 2003», где описаны необходи-
мые манипуляции. В случае Windows
2003 Server все происходит гораздо
легче, да и управляемость его значи-
тельно выше, что дает еще один повод
для перехода на Windows 2003. Рисунок 4. Установка Advanced Client Рисунок 5. Установка Advanced Client
При помощи SMS Setup Wizard мож- шаг 1 шаг 2

62
администрирование
компьютеров помещаются в соответс-
твующую коллекцию (по умолчанию –
идет разделение по типу ОС). Потом
вы можете для удобства работы сами
создать свою коллекцию.
Для обнаружения учетных запи-
сей пользователей в знакомом уже
«Discovery Methods» находим пункт
«Windows User Account Discovery». До-
бавим домен и на вкладке «Polling
Schedule» установим флажок «Run
discovery as soon as possible». То же
самое надо проделать для «Active
Directory User Discovery». Аналогично
происходит обнаружение учетных за-
писей групп – пункты «Active Directory
System Group Discovery» и «Windows
User Group Discovery». Результаты
поиска пользователей помещаются
в коллекцию All Users, а групп – в All
User Group. Учетные записи пользо- Рисунок 6. Обновление политики на клиенте
вателей и групп зачастую обнаружива-
ются быстрее компьютеров, но с ними Одна из возможных причин – от- Для установки клиента SMS вруч-
также возможны проблемы. сутствие или неправильное имя об- ную потребуются права админист-
щедоступного ресурса с клиентом ратора. Запустим программу уста-
Установка клиентов SMS. Необходимо проверить каталог новки client.msi из сетевого каталога
SMS 2003 C:\SMS\Client (если установка прохо- \\имя_сервера\SMSClient\I386. На вто-
Перед установкой клиентов необ- дила на этот диск). Он должен быть ром экране установки введите код ва-
ходимо подготовить сервер SMS. общим с именем SMSClient. Если это шего сайта (обычно первые три буквы
Для этого запустим консоль «SMS не так, дайте необходимые разре- имени сервера).
Administrator → Site Database → шения (достаточно read для группы Для ускорения добавления клиен-
Site Hierarchy → имя_сайта → Site Everyone). та в базу SMS и для того, чтобы сра-
Settings → Site Systems». Назначим Теперь приступим непосредствен- зу же начать работать, в «Панели уп-
серверу роли «Management Point», но к установке клиента методом Client равления» запустите аплет Systems
«Server Locator Point», «Client Access Push. В коллекции «All Systems» вы- Management и на вкладке «Actions»
Point» и «Distribution Point». Для это- берем нужный компьютер (или можно для «Machine Policy Evalution and
го на соответствующих вк ладках установить клиента сразу на все ком- Retrieval Cycle, User Policy Evalution and
в свойствах сервера установим флаж- пьютеры), «All Tasks → Install Client». Retrieval Cycle» произведите операцию
ки (cм. рис. 2). На втором экране выбираем «Install Initiate Action (см. рис. 6). Опять же, на-
Существует два вида установки the SMS client», «Advanced Client», да- личие клиента на компьютере не быс-
клиентов: методом Client Push и руч- лее ставим галочку напротив пунк- тро отражается в базе SMS, поэтому,
ная установка. Legacy Client под- та «Always install». Рекомендуют ос- для того чтобы увидеть истинное ко-
держивает только ручную установ- тавлять галочку «Include only clients личество компьютеров с установлен-
ку. Рассмотрим установку Advanced assigned to this site», но если сайт у вас ными клиентами, надо немного подож-
Client методом Client Push. В консоли один, нет удаленного офиса и мо- дать или, как в случае с поиском ком-
«SMS Administrator» находим «Client бильных клиентов, то можно ее снять, пьютеров по сети, принудительно об-
Installation Methods» («Site Database → так как иногда инсталляция клиента новить коллекции.
Site Hierarchy → имя_сайта → Site методом Client Push в такой конфигу- На этом начальная фаза установ-
Settings»). В свойствах «Client Push рации не проходит (см. рис. 4, 5). Ус- ки сервера SMS, его предваритель-
Installation» установим флажки «Enable тановка клиента происходит скрыто ная настройка и установка клиентов
Client Push Installation to assigned от пользователя. Проследить за про- завершены. Далее все зависит толь-
resources и Domain Controllers», а так- цессом установки можно, просмат- ко от желаний и требований, предъяв-
же «Enable Client Push Installation to site ривая файл ccmsetup.log в каталоге ляемых к управлению сетью. В следу-
systems» и выберем «Advanced Client» c:\windows\system32\ccmsetup. Также ющей статье будут рассмотрены воп-
(см. рис. 3). На вкладке «Accounts» в Task Manager будет присутствовать росы проведения инвентаризации обо-
введите информацию об учетной за- процесс ccmsetup.exe. По окончании рудования и программного обеспече-
писи администратора домена. установки в «Панели управления» по- ния, централизованная установка ПО
Бывает так, что инсталляция таким явятся новые аплеты типа Systems и применение Remote Tools for Client
методом не проходит. Management. Support.

№7, июль 2006 63


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

Возможности MS Windows SharePoint Services


Часть 2

Иван Хрипунов
Windows SharePoint Services предоставляет удобный и простой интерфейс, с помощью
которого вы можете создавать и изменять веб-страницы. А если требуется расширить
функциональность этой технологии и улучшить внешний вид веб-узла?

В
первой части статьи [1] вы позна- дет именоваться Microsoft SharePoint C помощью FrontPage вы можете
комились с базовыми элемента- Designer 2007. Это говорит о том, выполнять задачи по обслуживанию
ми Windows SharePoint Services. что программа ориентирована исклю- и управлению веб-узлами:
В качестве иллюстрации возможнос- чительно на работу с технологиями  Создавать веб-узлы, списки, биб-
тей технологии мы создали веб-узел SharePoint. лиотеки документов, страницы веб-
телефонного справочника, содержа- В настоящий момент для пользо- частей, используя мастера и шаб-
щий сведения о сотрудниках компа- вателей и администраторов веб-уз- лоны.
нии, а также их фотографии. Все из- лов, использующих платформу WSS,  Изменять основные параметры
менения на веб-узле проводились с по- во FrontPage доступны такие возмож- веб-узлов, списков, библиотек до-
мощью обозревателя Internet Explorer. ности: кументов. В том числе добавлять
Эта функциональность WSS позволя-  Дизайн. Если вы не знакомы с язы- и редактировать столбцы в спис-
ет решать большинство задач по пре- ком разметки HTML или не хотите ках и библиотеках. Появляется воз-
доставлению информации. работать с кодом, вы можете изме- можность изменить URL веб-узла,
Со временем вам, возможно, пот- нять веб-страницы в режиме конс- используя окно свойств.
ребуются более гибкие настройки труктора (WYSIWYG). Добавляйте  Изменять служебные файлы спис-
и расширенная функциональность. На- слои, динамические эффекты и па- ков и библиотек документов, ко-
пример, вывести данные в формате, нели навигации – это улучшит вне- торые позволяют добавлять, ре-
отличном от стандартного, или изме- шней вид веб-узлов WSS. дактировать и просмотривать эле-
нить расположение элементов на стра-  Кодирование. Изменяйте веб-стра- менты.
нице. В этом случае вам на помощь ницы в режиме кодирования с по-  Создавать и восстанавливать ре-
придет редактор, совместимый с тех- мощью профессионального редак- зервные копии веб-узлов.
нологиями SharePoint. тора HTML, XML и CSS. Доступны
функции автозавершения и провер- Каталог источников
Microsoft Office ки правильности кода, шаблоны по- данных
FrontPage 2003 ведения (Behaviors) и работа с эле- При работе с веб-узлами, основанны-
С момента выхода первой версии про- ментами управления ASP.NET. ми на технологии SharePoint, FrontPage
граммы, которая была нацелена на ис-  Расширение функциональности. позволяет получать данные из разно-
пользование в качестве наглядного Вы можете работать с информаци- образных источников:
(WYSIWYG, What You See Is What You ей из различных источников, созда-  Списков и библиотек документов
Get) редактора HTML, во FrontPage вая веб-узлы, управляемые данны- данного узла.
2003 многое изменилось. Помимо то- ми. Создавайте и изменяйте цвето-  Баз данных, совместимых с OLEDB,
го, что стало удобнее редактировать вые схемы с помощью встроенного например, Microsoft SQL Server.
HTML, XML, CSS и проч., теперь мож- редактора. Анализируйте статис-  Веб-сервисов.
но полноценно работать со службами тику использования веб-узла WSS  XML-файлов.
SharePoint. А следующая версия, ко- в различных разрезах при помощи
торая выйдет в начале 2007 года, бу- представления «Отчеты». Все используемые источники ин-

64
администрирование
формации текущего веб-узла хранят-
ся в так называемом каталоге дан-
ных. Физически этот каталог пред-
ставлен в иерархии узла папкой, обыч-
но _fpdatasources, где хранятся файлы
в формате XML с описаниями подклю-
чений. Эта папка создается при пер-
вом обращении к каталогу источни-
ков данных во FrontPage. Вы може-
те добавлять каталоги других узлов
и таким образом отображать данные
списков, библиотек документов и т. д.,
расположенных за пределами теку- Рисунок 1. Схема работы механизма передачи данных WSS
щего узла.
Основа для получения информации вы можете с помощью браузера или  _catalogs. Это скрытая системная
из перечисленных источников – меха- FrontPage. папка. Отображается, если разре-
низм передачи данных (data retrieval Стандартные веб-части списков шен показ скрытых файлов и папок.
service), одно из нововведений в WSS. и библиотек документов вы можете Эта опция устанавливается в окне
Этот механизм позволяет обменивать- трансформировать в «Представление параметров узла. Содержит ката-
ся информацией между поставщиком данных» во FrontPage с помощью ко- лог шаблонов списков, узлов и веб-
и получателем данных по протоколу манды «Преобразовать в XSLT-пред- частей.
SOAP (Simple Object Access Protocol), ставление данных». При этом сохра-  _fpdatasources. Папка катало-
используя XML, и является, по-сути, няется идентичный исходной веб-час- га источников данных. Создается
веб-сервисом. ти внешний вид и функциональность, при первом обращении к каталогу
а также вам доступны средства, при- во FrontPage.
Вывод информации менимые к веб-части «Представле-  _private. Это специальный скры-
из каталога ние данных». тый каталог FrontPage, не видимый
Чтобы отображать данные из каталога в обозревателе. Его можно исполь-
на веб-страницах, в составе WSS пос- Используем FrontPage зовать, например, для хранения ин-
тавляется веб-часть «Представление Давайте на практике рассмотрим ра- формации, собранной с помощью
данных» (DataView web part). Она вы- боту с веб-узлами во FrontPage. Вер- форм.
ступает как клиент сервиса переда- немся к нашему телефонному спра-  Images. Пустая папка для изобра-
чи данных, форматируя их с помощью вочнику, расположенному по адре- жений, которые могут быть исполь-
XSLT (eXtensible Stylesheet Language су http://server01/phones/. На первой зованы при дизайне веб-страницы.
for Transformations, расширяемый язык странице веб-узла, default.aspx, рас-
стилей для преобразований). Таб- положены две связанные между собой Также в структуре отображаются
лицы XSLT используются для описа- веб-части – одна отображает контакт- все файлы веб-страниц.
ния преобразований структуры доку- ную информацию сотрудников компа- При изменении файлов вы може-
ментов, посредством простых набо- нии, другая – их фотографии. Данные те выбирать представление, которое
ров правил. о сотрудниках и их фотографии хра- больше вам подходит. Это может быть
FronPage – одна из первых про- нятся в списке и библиотеке рисунков представление «Конструктор», позво-
грамм, предоставляющих возмож- соответственно. ляющее редактировать страницу в ви-
ность наглядного редактирования Откроем наш веб-узел во FrontPage: зуальном редакторе, или представле-
XSLT. Это означает, что вы можете ре- для этого запустите программу и вы- ние «Код», для работы непосредствен-
дактировать стили XSLT, не обладая берите пункт «Открыть узел» в меню но над кодом веб-страницы. Одним
глубокими знаниями о них. С другой «Файл». Справа на панели представле- из удобных является представление
стороны, если вы не новичок в работе ны все каталоги открытого узла. Обра- «С разделением», которое комбиниру-
с XSLT, вы можете использовать ре- тите внимание, что библиотеки файлов ет вышеуказанные представления так,
дактор кода FrontPage для самостоя- (в нашем случае – фотографий сотруд- что вам доступны и изменение кода,
тельного создания необходимых пре- ников) и списки (они находятся в ди- и визуальный редактор. При этом обе
образований. ректории Lists) отображаются в виде части окна синхронизируются, то есть
Веб-часть «Представление дан- папок. Внутри каждого списка или биб- если вы добавили в таблицу код для
ных» поддерживает все свойства, лиотеки файлов (в папке «Forms») на- создания нового столбца, это измене-
присущие этому элементу WSS, – из- ходятся вспомогательные файлы со- ние будет отражено в визуальной час-
менение параметров, персонализа- здания, редактирования и просмотра ти. А если вы выделите в визуальной
ция, соединения с другими веб-час- элемента, а также файлы веб-страниц части любой элемент, он будет подсве-
тями. Для добавления на веб-страни- представлений. Кроме того, в структу- чен в области кода.
цы данная веб-часть доступна только ре узла присутствуют следующие слу- Найдите файл default.aspx и от-
из FrontPage. Изменять ее настройки жебные папки: кройте его.

№7, июль 2006 65


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

Настраиваем внешний вид


Давайте для начала добавим необ-
ходимые для списка контактов поля –
те что в данный момент отображают-
ся, не несут в себе достаточной ин-
формации. Удалите названия полей
из заголовка таблицы. Каждый стол-
бец списка отображается в данной веб-
части полем. Эти поля необходимо вы-
делить и удалить. Вы можете работать
с любой строкой – при удалении поля
из одной строки, удаляются все поля
в столбце. Это происходит из-за то-
Рисунок 2. Открытый веб-узел во FrontPage 2003 го, что вы работаете непосредствен-
но с шаблоном XSLT. Мы продолжим
Для позиционирования элементов но вы можете добавлять сюда каталоги работать с табличным стилем, и нам
на странице используется сложная источников данных других узлов с по- потребуется добавить столбцы в таб-
структура вложенных таблиц. Нас ин- мощью команды «Управление катало- лицу по количеству полей, которые бу-
тересуют только две области, веб-зо- гом», которая находится в нижней час- дут отображаться. В режиме конструк-
ны. Они расположены в центральной ти панели задач. тора это не сложнее, чем такая же опе-
части страницы, называются «Left» Подключения данных для списков рация в Microsoft Word.
и «Right». Используя FrontPage, вы мо- и библиотек SharePoint формируются Добавить поля в таблицу вы може-
жете добавлять новые веб-зоны или автоматически при создании этих эле- те, просто «перетащив» их в нужные ко-
изменять свойства существующих. ментов на веб-узле. Для всех осталь- лонки с панели «Сведения о представ-
В представленных веб-зонах находят- ных типов источников данных вы долж- лении данных». Давайте добавим сле-
ся веб-части списка сотрудников и веб- ны добавлять подключения вручную, дующие столбцы: «Фамилия», «Имя»,
часть изображения. с помощью команды «Добавить в ка- «Отдел», «Рабочий телефон», «Сото-
Для нашего примера они нам не по- талог», которая расположена в каж- вый телефон», «Адрес электронной
надобятся, удалите их со страницы, ос- дой группе источников данных. почты». Не забудьте, что самая первая
вободив место для добавления новых Раскройте группу «Списки Share строка таблицы – это заголовок, поэто-
элементов. В визуальной части окна Point». Здесь представлен единствен- му внесите сюда названия полей.
достаточно выделить веб-часть и на- ный созданный нами список – «Сотруд- После того как необходимые по-
жать на клавиатуре кнопку «Delete». ники». Его можно «перетащить» в нуж- ля добавлены, можно приступить к их
ную веб-зону по аналогии с веб-час- форматированию. Все поля у нас име-
Добавляем представление тями или, нажав правую кнопку мы- ют текстовый формат и отображают-
данных ши, выбрать из меню пункт «Добавить ся верно, кроме поля с адресом элек-
Перед вставкой веб-части выделите представление данных». После этого тронной почты. Это поле неплохо бы-
веб-зону, в которую она добавляется. будет добавлена веб-часть с данными ло бы отображать в виде гиперссылки.
Если добавить веб-часть на веб-стра- из списка сотрудников. По умолчанию Выделите это поле в конструкторе и,
ницу за пределы веб-зоны, она не будет она содержит несколько основных по- используя меню «Данные», выберите
доступна для изменения в обозревате- лей расположенных в таблице. Так как пункт «Форматировать элемент как…».
ле. Выделите левую веб-зону, кликнув в нашем списке было всего три запи- Из открывшегося меню нас интересу-
на ее названии, и в меню «Данные» вы- си, таблица содержит заголовок и три ет пункт «Гиперссылка». Если вы при-
берите пункт «Вставить представление строки с данными. Стиль представле- меняете такое форматирование к эле-
данных». В правой части окна, на пане- ния элементов вы можете выбирать менту «Адрес электронной почты», он
ли области задач открывается каталог из десятка стандартных шаблонов – отображается на веб-странице в ви-
источников данных, где перечислены на основе таблиц, списков и других де гиперссылки. Но, к сожалению, те-
все имеющиеся поставщики, сгруппи- элементов HTML. Если вы знакомы кущая версия FrontPage не позволяет
рованные по типам и месту расположе- с XSLT, то легко можете создать свой выбрать тип ссылки (обычная, сообще-
ния. Изначально в качестве места рас- шаблон вывода данных, написав не- ние электронной почты, ссылка в доку-
положения указан текущий веб-узел, обходимый код. менте). В код автоматически вставля-

66
администрирование
ется ссылка на страницу. Такая ссылка не будет работать бцов для сортировки; выбрать отображение набора эле-
для отправки сообщений электронной почты, и это придет- ментов и так далее.
ся исправить в коде вручную. Для нашего примера можно включить параметр для сор-
Если вы уже работали с языком разметки, то знаете, что тировки данных по заголовкам столбцов.
для ссылок на адреса электронной почты параметр href те-
га <A> должен содержать строку «mailto:[e-mail]». Выдели- Фотографии сотрудников
те в визуальной части окна элемент с адресом и найдите Получившийся список контактов неплохо выглядит, но,
в выделенном фрагменте вот такой код: в отличие от первой версии, на странице не отображает-
ся фотография.
<td class="ms-vb"> Вы можете поступить уже известным вам способом [1] –
<a>
<xsl:attribute name="href"> соединить веб-часть представления данных с веб-частью
<xsl:value-of select="@Email"/> изображения, используя в качестве адреса фотографии
</xsl:attribute>
<xsl:value-of select="@Email"/> поле «Фото». Отличительная особенность «Представления
</a> данных» от веб-части списка в том, что создавать соедине-
</td>
ния можно по любым полям, вне зависимости, показаны они
В описании XSL-атрибута href для тега <A> (строка 4) из- на странице или нет. Единственное условие – поле списка
мените значение на «mailto:<xsl:value-of select=”@Email”/>». должно быть указано в запросе данных. Еще одна замеча-
Теперь гиперссылка будет работать правильно – при выборе тельная возможность «Представления данных» – настройка
ее будет создаваться сообщение электронной почты. Вы не отправки первой строки всем присоединенным веб-частям.
забываете сохранять изменения? На практике это означает, что при начальном отображении
Данная ситуация исправлена в новой версии FrontPage – страницы во всех связанных веб-частях будет отображать-
SharePoint Designer 2007. Во второй бета-версии, доступ- ся информация. Изменить эту настройку вы можете в окне
ной для публичного тестирования, при форматировании изменения параметров веб-части, в разделе «Разное».
элемента как гиперссылки открывается стандартное окно Но раз уж мы ведем речь о «Представлении данных», сде-
«Выбор гиперссылки». Все остальные поля пока оставим лаем вывод фотографий с помощью именно этой веб-части.
без изменений форматирования. Повторите описанные выше шаги по добавлению пред-
ставления данных списка «Сотрудники» на страницу, но в веб-
Используем условное форматирование зону «Right», расположенную в правой части страницы. Уда-
Можно немного оживить наш список – добавить условное лите всю информацию, оставив пустую таблицу, состоящую
форматирование. С помощью этой опции FrontPage вы мо- из одного столбца. Оставьте в таблице строку заголовка, а од-
жете, например, изменять форматирование (цвета, шрифт, ну из строк, содержащих данные, разбейте на 7 строк. Пос-
отображение) в зависимости от выполнения какого-либо ус- ледние пять строк разделите на две колонки. Теперь «пере-
ловия. С веб-частью списка сделать это нельзя, а вот для тащите» поля списка в полученный макет, введите названия
«Представления данных» это не сложно. и отформатируйте текст. Первые две строки – это поля «Фо-
Давайте для примера будем изменять цвет фона каждой то» и «Полное имя».
нечетной строки на серый. Для создания правила условно- Элемент, содержащий путь к фотографии сотрудника,
го форматирования выделите строку таблицы и на панели отформатируйте как рисунок. Нажмите правую кнопку мы-
«Сведения о представлении данных» выберите команду «Ус- ши и из меню «Отформатировать элемент как» выберите
ловное форматирование». Создайте правило применения «Рисунок». На рис. 3 показано, что у вас должно получить-
форматирования, в качестве поля укажите [номер строки] – ся. Не забывайте сохранять страницу.
нечетный. В окне изменения стилей («Формат» → «Грани-
ца» → «Заливка» ) укажите цвет заливки – светло-серый. Соединение веб-частей
Если этот цвет из стандартного набора кажется темным, Мы сделали вывод дополнительной информации о сотруд-
то, нажав «Другие цвета» в списке цветов, введите, напри- нике на одной странице – вместе с фотографией теперь до-
мер, значение «Hex={DF,DF,DF}». ступны все необходимые поля. Осталось лишь связать спи-
сок сотрудников с созданным информационным блоком, на-
Сортируем и группируем список зовем его «Сотрудник – подробно».
Используя веб-части списков вы можете сортировать, груп- Создание соединений между веб-частями такого типа
пировать и фильтровать данные – эти команды располо- доступно только во FrontPage. Выберите одно из представ-
жены на панели инструментов. К тому же, нажав на заго- лений данных, нажмите правую кнопку и выберите «Соеди-
ловок столбца, вы можете отсортировать строки. А что же нения веб-частей» из меню. Если данный элемент уже име-
«Представление данных»? Вся эта функциональность при- ет настроенные соединения, то вы увидите окно соединений.
сутствует и в этой веб-части. Откройте окно «Типы пред- Здесь перечислены все соединения, любое из них вы може-
ставлений» с помощью команды «Стиль» на панели «Све- те отредактировать или удалить. Мы создаем первое соеди-
дения о представлении данных». На закладке «парамет- нение для веб-части, поэтому сразу открывается окно «Мас-
ры» вы можете изменить следующие настройки веб-час- тер соединения веб-частей». Не буду описывать подробно
ти – показывать или нет панель инструментов, с помо- все шаги мастера, в процессе его работы даются достаточ-
щью которой можно сортировать, фильтровать и группи- но подробные объяснения. Замечу лишь, что так как мы свя-
ровать информацию; создать ссылки в заголовках стол- зываем две веб-части, основанные на одном списке, то в ка-

№7, июль 2006 67


администрирование
бой момент можете преобразовать эту
веб-часть в полностью настраиваемое
XSLT-представление.

А как же остальные
источники данных?
Все действия, описанные в статье, вы
можете применять для данных, полу-
ченных из других поддерживаемых ис-
точников. Отличаться будет только за-
прос данных.
Используйте веб-сервисы, кото-
рые устанавливаются вместе с WSS,
и те, что доступны на внешних узлах
в Интернете. Подробное описание веб-
сервисов для технологий SharePoint
вы можете найти на сайте MSDN –
http://msdn.microsoft.com/library/en-us/
spptsdk /html/soapnsMicrosoftShare
PointSoapServer2_SV01043862.asp .
Выгружайте на веб-узлы файлы
Рисунок 3. Результат изменений телефонного справочника в формате xml и выводите информацию
из них на страницах веб-сайтов. Таким
честве связующего стоит использовать Если список сотрудников достаточ- образом вы можете публиковать, на-
поле «Идентификатор». Хотелось обра- но большой, создайте еще один спи- пример, курсы валют в удобном для вас
тить ваше внимание на предпоследний сок, содержащий буквы алфавита. До- формате. То же самое вы можете сде-
шаг мастера. На этом этапе вам пред- бавьте в список сотрудников вычисля- лать и с потоками в формате RSS.
лагается выбрать поле веб-части источ- емое поле, в котором будет содержать-
ника, на котором будет создана ссылка ся первая буква фамилии сотрудника. 1. Хрипунов И., Черневский А. Воз-
для связи, и указать, какие поля будут Сделать это можно, записав в поле можности технологии MS Windows
участвовать в обозначении выделенно- формулу «=ЛЕВСИМВ([Фамилия];1)». SharePoint Services. //Системный ад-
го элемента. Выделенный элемент вы- Добавьте на страницу еще одну веб- министратор, №5, 2006 г. – C. 20-27.
деляется полужирным написанием. Вы- часть «Представление данных» с бук- 2. http://www.sharepointcustomization.com –
берите в качестве поля со ссылкой и по- вами алфавита и соедините ее с веб- сайт, посвященный совместному ис-
ля обозначения столбец «Фамилия» на- частью списка сотрудников. Вы получи- пользованию FrontPage и технологий
шего списка. Теперь сохраните страницу те удобную разбивку списка по алфа- SharePoint.
и откройте веб-узел в обозревателе. виту, и ориентироваться в таком спра- 3. ht tp : / / w w w.mic rosof t .c om / tec hnet /
вочнике будет удобнее. prodtechnol/office/office2003/maintain/
Полезные мелочи Вам необходимо добавить ссылку fp03wss.mspx – использование
Посмотрите на получившуюся страни- на экспорт контактов в Outlook на стра- FrontPage для редактирования веб-уз-
цу – фактически она ничем не отлича- ницу? Воспользуйтесь возможностями лов SharePoint.
ется от первой версии, созданной с ис- протокола stssync, реализованного в 4. http://msdn.microsoft.com/library/default.
пользованием стандартных веб-частей WSS. Подробнее об этом вы можете про- asp?url=/library/en-us/odc_fp2003_ta/
списков и изображений. Но получивший- читать на страницах библиотеки MSDN html/odc_fpbldgxmlwebs.asp – построе-
ся справочник содержит на одной веб- (http://msdn.microsoft.com/library/en-us/ ние узлов, управляемых данными.
странице всю информацию о сотрудни- spptsdk/html/tsstsync_SV01036546.asp) 5. http://www.sharepointcustomization.com/
ке, позволяет более гибко настраивать Если вам потребуется выгрузка дан- resources/whitepapers.htm – сборник до-
внешний вид. Несмотря на то что на раз- ных в Excel, создайте на странице ссыл- кументации.
работку такой страницы уходит больше ку на файл запроса данных. Получить 6. http://www.sharepointcustomization.
времени, результат того стоит. такой файл вы можете на страницах com/resources/sdks.htm – Software
Что можно еще улучшить? Напри- представлений списка. Достаточно най- Development Kits для FrontPage и WSS.
мер, добавить в XSLT-шаблон дина- ти ссылку «Экспорт в электронную таб-
мические эффекты с помощью тегов лицу». При запросе необходимо сохра- Все перечисленные интернет-ресур-
<xsl:attribute>. Таким образом вы мо- нить файл *.iqy на ваш веб-узел. сы представлены на английском языке.
жете описать DHTML-события OnClick, И помните о том, что если при ра- Из русскоязычных ресурсов в ближыйшее
OnMouseOver и прочие. Например, ис- боте с «Представлением данных» вам время начнет функционировать блог, пос-
пользуя событие OnClick, вы сможете не хватает функциональности, кото- вященный технологиям SharePoint. Най-
выводить информацию о сотруднике рая присутствует в стандартной веб- ти его вы сможете по адресу http://blogs.
по щелчку в любом месте строки. части списка или библиотеки, вы в лю- technet.com/ruswss.

68
человек номера

Один в поле – воин!

Директор компании «Битрикс» против аутсорсинга, пиратов и интернет-шантажа.

О
браз человека, который мы ри- тором. Школа была математическая, студентом. А когда знаешь, как изнут-
суем, вспоминая о нем, – вещь поэтому с 9 класса он изучал языки ри устроено чудо техники, трудно счи-
часто весьма неожиданная. программирования – Фортран и Бей- тать его чудом… Сергей закончил Бе-
Иногда после общения с мужчиной бо- сик. Интернета еще, естественно, лорусский государственный универси-
гатырского телосложения представля- не существовало. Он появился позже. тет в 1994 году по специальности «Ра-
ешь… маленького плачущего ребенка. «Как что-то не совсем понятное, завое- диофизика и электроника, математи-
А побеседовав с хрупкой невзрачной вал свое место в жизни в качестве со- ческие машины» и благодарен своим
женщиной, думаешь: какое величие ставной части коммуникационной сре- преподавателям: «В Минске у нас был
духа, красота души! Директор компа- ды современного общества. Как не- очень сильный преподавательский со-
нии «Битрикс» внешне – симпатичный льзя представить сегодня общество став именно по программированию.
молодой человек, которого при жела- без телевидения, газет, так нельзя его Это было действительно мастерство:
нии с удовольствием бы взяли сни- себе сегодня представить без Интер- с помощью очень ограниченных в ре-
маться в сериал про современную нета», – рассказывает Сергей. Навер- сурсах машин программировать очень
жизнь на роль главного героя. Но по- ное, у талантливого, технически под- сложные задачи. Алгоритмически они
чему-то после интервью с Сергеем мое кованного юноши не было эйфории часто достигали больших результа-
подсознание рисует такую картинку: от осознания возможностей электрон- тов». Правда, в некоторых вопросах
крестьянское подворье, дом, службы, ной почты, какая была у меня в нача- преподаватели были осведомлены
живность, с утра до вечера кипит ра- ле 90-х: вот сейчас твое письмо здесь, меньше, чем их продвинутые студен-
бота, и посреди двора Сергей Рыжи- на экране монитора, но стоит нажать ты. Преподаватели опирались на учеб-
ков – хозяин этого богатства. «Send» – и оно уже на другом конце ник, и на лекции порой звучало «кон-
планеты. Сергей Рыжиков – прагматик, фиксус» вместо «конфиксис». А сту-
IT-родословная он наверняка и в начале пути считал денты исходили из практики. И здесь
Многие сегодняшние тридцатипяти- Интернет просто средством достав- у них была явная «фора». На 4-м кур-
летние впервые увидели компьютер ки информации. К тому же в отличие се Сергей с однокурсниками написа-
в старших классах школы. Сережа от гуманитариев, вроде меня, он учил- ли книгу на 400 страниц «Програм-
Рыжиков сразу познакомился с IBM – ся программированию в школе и ву- мирование микропроцессоров X-86
серьезной машиной с цветным мони- зе, первый компьютер собрал, будучи Pentium…». На пятом курсе получили

70
человек номера
лицензию, открыли фирму со знако- свежую версию программного продук-
вым именем «Битрикс», взяли кредит, та, потому что в отдел, отвечающий Сергей Рыжиков
издали книгу и продали ее. Выпусти- за состояние веб-страницы образова- В 1994 году окончил БГУ по специальнос-
ли еще несколько книжек, и «Битрикс» тельного ведомства столицы, пришли ти радиофизика и электроника. В АКБ
№1 на этом прекратил существова- новые люди и у них руки пока не до- «Инвестбанк» возглавлял отдел интернет-
ние. В планы Сергея не входило осе- шли до обновлений. История типичная, технологий и финансовых телекоммуни-
дать в Белоруссии. Минск ему очень так бывает часто. каций. С 1998 года – директор компании
нравился, но он понимал, что перс- Это сегодня Сергей Рыжиков – хо- «Битрикс». С 2005 года активно участву-
пектив у бизнеса в республике немно- зяин компании, которая разрабатыва- ет в организации и проведении Российс-
го. Рыжиков вернулся в Калининград, ет программные продукты для управ- кого Интернет-Форума. Член сообществ
устроился на работу в один банк, по- ления веб-проектами и многофункци- ISDEF и Ezhe.ru.
том в другой. В итоге возглавил отдел ональные информационные системы
интернет-технологий и коммуникаций для ведения коммерческой деятель- стал убеждать, что нужно делать про-
платежных систем. «Я не ставил за- ности в сети Интернет. А начинали ра- дукты. У меня это не получилось. И мы
дачи уйти и создать бизнес. Но в 1998 ботать, между прочим, как аутсорсин- пришли к необходимости заняться са-
году наступил кризис банковской сис- говая компания. Если опять исполь- мостоятельной деятельностью». Ар-
темы. Самый главный вывод, который зовать сравнение с крестьянским хо- гументы Сергея трудно оспорить хо-
из этого можно было сделать: бли- зяйством, сначала Сергей Рыжиков тя бы потому, что сегодня на россий-
жайшие пять лет после кризиса банки и его сотрудники ходили «в батраках», ском рынке преобладает аутсорсинг
обычно озабочены одной проблемой – нанимались то к одному, то к друго- отдельных задач или ресурсов. Отсю-
выживания. Так оно и оказалось. Банки му хозяину и выполняли работу, ка- да низкая экономическая эффектив-
стремились просто выжить и сохранить кую попросит. А потом завели свое ность контрактов с фирмами-аутсор-
технологический уровень. Более того, хозяйство и ныне выращивают свой серами. Аналитики находят в системе
произошла очень сильная централиза- хлеб, высадили на российских про- немало других «подводных камней»,
ция банковской системы. А в филиаль- сторах свой «лес». Он шумит повсю- но надеются, что их удастся преодо-
ной сетке нет перспектив для развития. ду, где есть партнерская сеть «Бит- леть со временем. Для усовершенс-
Развитие всегда идет из центра, а фи- рикса», а это ни много, ни мало – 700 твования этой организационной схе-
лиальная сеть только осваивает тех- компаний. Кстати, партнеры у «Битрик- мы предлагаются разные варианты –
нологию. Понимая, к чему это может са» есть не только в России, но и за ру- диверсификация аутсорсинга, дубли-
привести, перед 1999 годом я уволил- бежом. На Западе с ним сотруднича- рование важнейших участков, введе-
ся из банка». Впереди замаячили «Бит- ют около 200 компаний – американс- ние большого числа компаний-подряд-
рикс» №2 и сегодняшний успех. ких, европейских, ближневосточных. чиков и т. п. Сергей, как человек побы-
Так что за развитием ситуации в Ира- вавший в шкуре аутсорсера, не видит
Свой лес не Сергей следит с особым интере- и особых перспектив этого направле-
«Битрикс» на сегодня – стремительно сом – ведь там у «Битрикса» эксклю- ния бизнеса: «Чтобы увеличить доход-
развивающаяся компания, словно бо- зивный партнер, который неплохо вы- ность, рентабельность, есть две стра-
гатое хозяйство, выстроенное своими полняет свои обязательства. Военные тегии: либо нанимать больше людей,
руками. Сергей Рыжиков и его коллеги действия и выходки экстремистов на- чтобы, условно говоря, было больше
работают на средний и малый бизнес, прямую бьют по кошельку российских станков, либо увеличивать стоимость
а это совсем не простые покупатели. бизнесменов. цены часа. У каждого из этих факто-
Они хотят получать не просто качест- Популярный ныне в России аутсор- ров есть свои недостатки. Увеличение
венные продукты, но еще и не слиш- синг, который, по оценкам некоторых числа людей – это риски, постоянная
ком дорогие. Программными продукта- экспертов, набирает обороты быстрее, зависимость от контрактов. Идея, ко-
ми «Битрикс: Арендуемые магазины», чем на Западе, Сергей считает вред- торую я провожу, – нужно продавать
«Битрикс: Инфопортал», «Битрикс: Уп- ным для экономики государства биз- продукт. Это важно для России в це-
равление сайтом» пользуются госу- несом: «Потому что это другая форма лом и для каждой компании в частнос-
дарственные и образовательные уч- продажи человеческих ресурсов. С од- ти. Создание продуктов – это специфи-
реждения, крупные предприятия и ор- ной стороны, мы продаем нефть. А так ческий, отдельный бизнес. Он отлича-
ганизации. На «Битрикс. Управление мы продаем рабочее время. С вами ра- ется от почасовой продажи, вообще
сайтом» сегодня работают и готовятся зорвали контракт – у вас ничего не ос- от продажи и создания услуг. Это пол-
к выпуску более 2500 различных веб- талось, вам нечего продавать. Вы за- ный цикл: нужно определить сегмент
проектов. Цифра немаленькая! висимы от того, что у вас есть в конт- рынка, функции, которыми должен об-
С сайтом Департамента образования ракте. Интеллектуальные права все- ладать продукт, чтобы быть востребо-
города Москвы http://www.educom.ru я го созданного принадлежат заказчи- ванным, выпустить его своевременно,
знакома давно, он мне нравится за удобс- ку. Вы не владеете этим, вы не созда- правильно донести до потенциально-
тво навигации и симпатичный дизайн. ли продукт, ничего не сделали. То есть го потребителя, окупить, организовать
Кстати, сам Сергей на мои комплимен- завершен контракт – в истории ниче- смену версий, производство, докумен-
ты отреагировал улыбкой: оказывает- го не осталось. Еще работая аутсорсе- тирование, техподдержку... Длинный
ся, департамент использует не самую ром, я наших американских партнеров цикл, но это правильно. Очень хочет-

№7, июль 2006 71


человек номера
ся верить, что аутсорсинговые компа- из самых распространенных спосо- Простые планы
нии одновременно начнут создавать бов компрометации. Мы даже при- Настоящий хозяин всегда думает о бу-
самостоятельные продукты. Это им няли решение отказаться от участия дущем – своей семье, своих детях, сво-
под силу». в форумах, сообществах за предела- ем деле. У Сергея Рыжикова две оча-
ми нашего сайта. Готовы отвечать на ровательные дочки, старшей девять,
Вон, непрошенные гости! все вопросы, вступать в любые дис- младшей два с половиной года. Ко-
Мужчина, который построил крепкое куссии, но у себя. На внешних фору- нечно, первая мысль и главная забо-
хозяйство, дом, «засеял» пусть не мах и ресурсах, как показала практи- та – о них.
пшеничное, но просто свое поле де- ка, мы имеем дело не с клиентами, не Что же касается развития инфор-
ятельности, должен уметь защитить с потребителями, а с мелким раздра- мационных технологий, перспективы
собственность от посягательств ли- женным недовольством. Кстати, это директор компании «Битрикс» опре-
хих людей. Или поставить на ворота еще самый безобидный вариант. На- деляет такие: «Растущие сегменты,
крепких парней, которые умеют гра- много серьезнее специально подготов- спрос со стороны бизнеса или част-
мотно наладить охрану. «Битрикс» со- ленные и даже профинансированные ных лиц на определенные решения
трудничает с ассоциацией «Русский мероприятия. Появляются люди, кото- или продукты, возможность предста-
щит», созданной в 1997 году россий- рые пишут порочащие статьи и прода- вить эти продукты».
скими правообладателями для защи- ют ее тем, кого они считают нашими «А для частных лиц, обычных лю-
ты авторских прав разработчиков про- конкурентами. Они не понимают, что дей, которые пользуются Word и элек-
граммного обеспечения. Сергею Ры- мы все общаемся между собой. Мне тронной почтой, которым не нужны
жикову нравится, что «Русский щит» знакомый говорит: «Ко мне тут при- сложные знания из области програм-
действует законными способами: ве- шли, статью про вас продают, купить – мирования, что ожидает их?» – упор-
дет переговоры с интернет-площад- не купить?». но допытываюсь я у Сергея. Для ме-
ками, договаривается, объясняет, до- Тема безопасности для Сергея – ня это важный вопрос. Рыжиков, ка-
водит вопросы до суда, если это необ- больная, потому что эта проблема клю- жется, готов к ответу: «Все стремит-
ходимо. «Щит» защищает «Битрикс» чевая для компании «Битрикс» и ее ся к тому, чтобы стать максимально
от пиратства. клиентов. Он рассказывает о других простым и управляемым. Интерес-
Сложнее уберечься от посяга- способах опорочить репутацию ком- ное направление, которое появилось
тельств на репутацию и от недос- пании. Интернет для таких дел – увы, недавно, – медиацентры. Компьютер,
товерной информации. Сергей ве- очень удобная среда. Можно взло- подключенный к телевизору, объеди-
рит, что лучшая оборона – нападение, мать сайт какого-нибудь уважаемого няет в себе пишущий DVD, телеви-
то есть результаты, успешные проекты. концерна, вывесить ерунду, сделать зор, FM-радио, кабельное телевиде-
И не потому, что не в состоянии оце- скриншот и отправить его в парочку ние. Можно записать телепрограмму,
нить реальную опасность. Наоборот, он агентств. Новость расходится мгно- выйти в Интернет, получить электрон-
очень хорошо понимает, что его ком- венно, а концерн несет колоссальные ную почту, просмотреть фотографии.
пания вышла на такой уровень, когда убытки. Можно украсть информацию Сегодня мы спокойно пользуемся те-
некоторые «коллеги» считают – нуж- с сайта и шантажировать компанию – лефонным аппаратом, хотя не знаем,
но уничтожить успешного конкурента, мол, опубликуем, если не выполните как он устроен. Точно так же не бу-
и в этой борьбе все методы хороши. наши требования. Чтобы этого не слу- дем задаваться вопросом, как рабо-
«Мы часто сталкиваемся с недобросо- чилось с клиентами «Битрикса», ком- тает Интернет. Это знают специалис-
вестной конкуренцией. Человек может пания заказывает аудит безопасности ты. Они привели провод в дом, под-
представиться в качестве сотрудника программных продуктов в нескольких ключили, и люди работают или играют
какой-то компании и заявить на фору- компаниях. Аудит программного про- в той среде, которую им выдали. Есть
ме наших клиентов, что «его» компа- дукта «Битрикс. Управление сайтом» банальное, прагматичное использо-
ния жутко недовольна нашим продук- провели компании Positive Technologies вание технологии, которое дают ком-
том. Однажды эта информация попа- и «Немесис». муникации».
ла мне на глаза, совершенно случай- Сергей Рыжиков настроен опти- Мне хорошо, соседям хорошо, всем
но. Я очень хорошо знаком с дирек- мистично: «Я знаю уголовные дела, хорошо – психология человека, кото-
тором якобы недовольной компании, которые были доведены до суда в ре- рый занимается своим делом на сво-
тут же набрал его телефон и спросил: зультате того, что компания шантажи- ем поле. В какой-то отрезок нашей ис-
«Тут на одном форуме выступил ваш ровалась под предлогом распростра- тории хозяйства «кулаков» – какое на-
сотрудник. Ты знаешь этого челове- нения какой-то информации. И это да- звание для них придумали! – просто
ка, он правда у вас работает?» – «Нет, же не единичные случаи. Самая боль- уничтожали вместе с людьми. Дай бог,
никогда не работал». – «А у тебя есть шая проблема – поимка шантажиста. сегодня настоящие хозяева станут ос-
какие-то претензии к нам?» – «Нет, все У преступника зачастую складывается новой государства. В том числе хозяе-
отлично работает!» И тогда мы обрати- ощущение, что в Интернете можно де- ва огромной сферы современного об-
лись к администратору форума. Вы- лать все совершенно анонимно, а че- щества под названием «информаци-
яснилось, что «критикующий» – даже ловека поймать нельзя. Но есть спе- онные технологии».
модератор этого форума и что у него циалисты, которые легко делают все
просто есть на нас «зуб»… Это один тайное явным». Оксана Родионова

72
сети

Управляем зонами DNS

Рашид Ачилов
Сформировать файлы, необходимые для создания собственной зоны DNS, – это еще не все.
Необходимо настроить и запустить программу BIND, зарегистрировать доменное имя,
дождаться завершения тестов – и можно раздавать друзьям адреса mymail@shortdomain.com!

Настройка BIND мешало бы нам создать несколько каналов и разбросать


Программа BIND очень богата на параметры конфигураци- сообщения между ними.
онного файла. Даже простое их перечисление может занять
не один лист. Здесь я приведу собственный рабочий кон- logging {
channel named_log {
фигурационный файл, слегка измененный к придуманной syslog local7;
нами задаче, которая рассматривалась в предыдущей ста- severity info;
};
тье «Создаем зоны DNS» (№6 за 2006 г.). Полное руководс- category default { named_log; default_debug; };
тво по настройке BIND распространяется вместе с дистри- category general { named_log; default_debug; };
category unmatched {named_log; default_debug; };
бутивом, а также доступно в [1]. };
Конфигурационный файл BIND – named.conf. Каталог
/etc/namedb во FreeBSD обычно содержит этот файл, запол- После настроек системного журнала идут настройки,
ненный настройками по умолчанию, файл named.root, в ко- управляющие контролем доступа. Они нам понадобятся,
тором перечисляются «хорошо известные» корневые сер- чтобы разделить клиентов, запрашивающих информацию,
вера (этот файл вы можете загрузить с [2]) и шаблон фай- и указать, кто какие зоны будет просматривать.
ла обратной локальной зоны PROTO.localhost.rev, на осно-
ве которого создается файл localhost.rev. acl me-white { 212.20.5.0/24; };
acl grayteeth { 10.87.1.0/24; };

Настройки named.conf Клиенты, обращающиеся с адресов, удовлетворяю-


В качестве знака комментария используется символ «//», щих этим ACL, будут считаться «внутренними» и получать
как в программах на С++. Допустимо также использова- доступ к «внутренней» зоне. Все прочие же клиенты будут
ние знака «#», как в скриптах на /bin/sh. Порядок задания считаться «внешними» и получать доступ только к «вне-
параметров произвольный. шней» зоне.
Первыми идут настройки, относящиеся к системно- Создаем внутренние зоны. Для начала определим,
му журналу (syslog). BIND очень богат на опции настройки кто имеет право получать данные из внутренних зон и то,
хранения информации в syslog, перенаправлять ее можно что для запроса от внутреннего клиента сервер являет-
как угодно. В приведенном ниже примере создается канал ся рекурсивным, то есть не будет в ответ отдавать ссылки
передачи сообщений (channel) такой, что все сообщения на- на другие сервера (DNS NXDOMAIN), а обязан вернуть от-
правляются в syslog с facility local7 и severity info. После опи- вет на запрос – успешный или неуспешный.
сания канала задаются категории, указывающие, какие со-
общения куда следует направлять. В этом случае все прос- view "internal" {
match-clients { grayteeth; me-white;};
то, все направляется в один и тот же файл, хотя ничто не по- recursion yes;

74
сети
Определяем специальную зону «подсказок». Эта зона отдельной зоны tail.krokodil.ru, которая может администри-
содержит список «хорошо известных» серверов, с которых роваться другим человеком, и соответственно наш сервер
начинается поиск адреса, если его еще нет в кэше. Факти- должен отсылать клиента к серверу зоны tail.krokodil.ru).
чески, мы описываем весь Интернет этой зоной.
view "external" {
match-clients { any; };
zone "." { recursion no;
type hint;
file "named.root";
}; Определяем основную зону прямого преобразования.
Для этой зоны сервер является основным и полностью бло-
Определяем обратную зону для 127.0.0.1. Для данной зо- кирует любые обновления.
ны сервер является основным (master), не отсылает изве-
щения об обновлении, блокирует любые попытки обновить zone "krokodil.ru" {
type master;
или запросить трансфер зоны. Если для зоны не указаны file "direct-ru.ext";
allow-query, allow-update или allow-transfer, то применяются allow-update { none; };
};
установки представления (внешнего или внутреннего), по-
падание в представление означает получение доступа. Та- Определяем основную зону обратного преобразования.
ким образом, не задавая allow-transfer, мы оставляем воз- Для этой зоны сервер является основным и полностью бло-
можность запустить трансфер зоны. Хотя для данной зоны кирует любые обновления. Определение этой зоны не нуж-
это не страшно – просто бесполезная операция. но, если провайдер предоставляет блок адресов размером
менее сети класса С.
zone "0.0.127.IN-ADDR.ARPA" {
type master; zone "5.20.212.in-addr.arpa" {
notify no; type master;
file "localhost.rev"; file "zone212.rev";
allow-update { none; }; allow-update { none; };
allow-transfer { none; }; };
}; };

Определяем основную зону прямого преобразования. Здесь мы рассмотрели только основные параметры
Для этой зоны сервер является основным, блокирует любые для описания зон. Множество других параметров – опции
попытки обновления зоны, разрешает запрос из зоны толь- настройки клиентской части («резолвера»), настройки ка-
ко клиентам, удовлетворяющим перечисленным ACL. нала управления RNDC – остались в стороне, поскольку
они непосредственно не связаны с настройкой зон, хотя
zone "krokodil.ru" { достаточно существенны для работы локальных программ
type master;
file "direct-krokodil-ru.int"; и сопровождения.
allow-update { none; };
allow-query { me-white; grayteeth; };
}; Запуск и сопровождение
Для запуска named достаточно добавить
Определяем основную зону обратного преобразования
и завершаем внутреннюю часть. Для этой зоны сервер яв- named_enable="YES"
ляется основным, блокирует любые попытки обновления
зоны, разрешает запрос из зоны только клиентам, удов- в /etc/rc.conf. По умолчанию в нынешних версиях рабо-
летворяющим перечисленным ACL. чий каталог named делается с рассчетом на jail, и поэ-
тому вынесен в /var/named, где уже созданы подкатало-
zone "2.87.10.in-addr.arpa" { ги /dev, /etc и /var, а /etc/namedb является символическим
type master;
file "zone10.rev"; линком на /var/named/etc/namedb. Меня это не устроило,
allow-update { none; }; и я расположил рабочий каталог в более привычном мес-
allow-query { me-white; grayteeth; };
}; те – /etc/namedb. Для этого в /etc/rc.conf пришлось доба-
}; вить строки:

Создаем внешние зоны. Поскольку просмотр ACL идет named_flags="-c /etc/namedb/named.conf -4 -u bind"
named_chrootdir=""
по схеме «first win», то есть используется первое совпадение,
то все клиенты, которые не могут быть отнесены к внутрен- Параметр -4 отключает поддержку Ipv6 (когда она
ним, автоматически попадут во внешние, следовательно, еще будет), параметр -u bind задает сброс привилегий
нет необходимости в специальном описании ACL. Для за- после запуска до пользователя bind. Последняя стро-
проса от внешнего клиента сервер является нерекурсив- ка нужна для /etc/rc.d/named, чтобы он не пытался со-
ным, то есть в ответе может содержаться не только положи- здать /var/named/etc/namedb. Если вас устраивает рас-
тельный или отрицательный результат, но и ссылка на дру- положение рабочего каталога по умолчанию, то доста-
гой сервер (DNS NXDOMAIN). В нашем случае это не име- точно строки:
ет значения, но могло бы понадобиться, если бы мы опре-
деляли подзоны (например, end.tail.krokodil.ru потребует named_flags="-4 -u bind"

№7, июль 2006 75


сети
После запуска все сообщения должны направлять- РУЦЕНТР начинает тестирование через 4 часа после
ся по тем маршрутам, настройки которых были заданы принятия заявки при условии, что на лицевом счету доста-
в named.conf. Если это файлы системного журнала, то они точно средств для ее исполнения, иначе заявка будет «пос-
должны быть созданы заранее и syslogd оповещен о про- тавлена в очередь» и тестирование начнется через 4 часа
изошедших изменениях, иначе сообщения будут пропадать. после поступления денег. После тестирования зоны вы по-
Если после запуска named он не стартует и в соответствую- лучите информационное сообщение, в котором будет ука-
щий журнал ничего не записывается, просмотрите другие зан результат тестирования. Если тестирование прошло
журналы, например, /var/log/daemon или другой файл, в кото- неудачно, то в сообщении будет приведена причина ошиб-
рый направляются сообщения с facility daemon и severity info, ки. Если при регистрации был указан почтовый адрес в но-
а также сообщения, выводимые на консоль. Если же named вом домене (в нашем случае, например, admin@krokodil.ru),
успешно открыл канал передачи информации, все данные то проверьте еще и работоспособность локального почто-
уже будут направляться в соответствии с настройками. вого сервера и тот факт, что он принимает почту для до-
Перед тем как подавать заявку на регистрацию зо- мена krokodil.ru, в противном случае подтверждения мож-
ны, запустите named, убедитесь, что он работает, настро- но и не дождаться. После регистрации домена вы получи-
ив на него компьютеры внутренней сети. Также вы може- те другое подтверждающее сообщение. Также вы получи-
те использовать команды dig, host и dnswalk для проверки те отдельное сообщение, если была заказана услуга вто-
работоспособности зоны. Команда dnswalk – это неболь- ричного сервера DNS. Оплата услуг производится на год,
шой скрипт на языке Perl, который с помощью несложной когда срок оплаты будет подходить к концу, все регистра-
модификации можно превратить в средство для закач- торы начинают присылать сообщения с напоминаниями
ки полных зон. Устанавливается он из ports/dns/dnswalk о том, что срок регистрации заканчивается и нужно опла-
и требует достаточно большого количества разнооб- тить следующий срок.
разных дополнительных модулей – p5-Digest-HMAC-1.01, Все регистраторы используют концепцию «персон»
p5-Digest-SHA1-2.11, p5-Net-DNS-0.57, p5-Net-IP-1.24. Для то- для установления лиц, которые отвечают за своевременное
го чтобы закачивать зоны (на самом деле dnswalk это делает внесение изменений в информацию о своих зонах, а также
и так, но не сохраняет копию), следует наложить патч: получают извещения, например о том, что срок оплаты за-
канчивается. «Персона» – это набор анкетных данных, со-
# diff -ub dnswalk.old dnswalk общаемых при регистрации. Как правило, сюда входят те-
--- dnswalk.old Fri May 12 18:47:16 2006
+++ dnswalk Mon Apr 24 19:55:00 2006 лефон и адрес электронной почты. Именно по указывае-
@@ -93,6 +93,11 @@ мым здесь адресам и рассылается информация. После ре-
}
@subdoms=undef; гистрации «персоне» присваивается handle (заголовок), ко-
foreach $rr (@zone) { торый может быть указан на сайте регистратора в качес-
+
+# Inspired by Shelton to save zone file тве Administrative (административного) или Technical (тех-
+ $rr->print; нического) контакта.
+# To here
+ Указанные контакты будут получать соответствующую
if ($rr->type eq "NS") { информацию – administrative – об окончании срока оплаты
$subdom = $rr->name;
$subdom =~ tr/A-Z/a-z/; и т. д., Technical – об ошибке получения свежей версии зо-
ны и т. д. Кроме того, по обоим адресам будет рассылать-
Средства для тестирования зон описаны в RFC 1713. ся информация общего характера, например, об измене-
В нём упоминаются все те же host, dig и dnswalk, а также ниях в правилах регстрации доменов. РУЦЕНТР не требу-
другие программы, например DDT (Domain Debug Tools). ет регистрации «персоны» – информация о том, куда со-
Все программы, упомянутые в RFC, можно найти на [7]. общать, вводится в анкете. Network Solutions в любом слу-
После того, как сервер заработает, можно подавать за- чае создаст, как минимум, одну «персону» и пропишет ее
явку регистратору. При регистрации в РУЦЕНТРе нужно бу- во все необходимые места, RIPE требует создания «персо-
дет заполнить форму, в которой указать реквизиты органи- ны» в обязательном порядке.
зации и контактные адреса. Все поля, информация из кото- Даже в случае неоплаты следующего срока РУЦЕНТР
рых будет в открытом доступе, имеют специальную помет- не освобождает домен день в день. Сначала сервер пос-
ку. Внимательно читайте подсказки веб-интерфейса, пре- тоянно, примерно дней за 5 до окончания срока, каждый
доставляемые РУЦЕНТРом, – не все поля можно изменять день шлет напоминания о необходимости оплатить услу-
через веб-интерфейс! Впрочем, те поля, которые изменить ги по продлению регистрации домена. Если же оплата так
нельзя, и не имеют в нем возможностей для замены. и не была внесена, то доступ к DNS-серверу блокируется,
Network Solutions имеет менее удобный интерфейс – но еще месяц имя не освобождается. Если в этот момент
при регистрации он просит зарегистрировать одну пер- оплатить продление регистрации, то имя не пропадает. Че-
сону, контактные адреса которой и будут «по умолчанию» рез месяц после того, как оплата была просрочена, имя ос-
подставлены во все необходимые поля при регистрации вобождается и переводится в «аукцион доменов». «Аукци-
домена. Это довольно неудобно, к тому же веб-интерфейс он» – это нововведение РУЦЕНТРа – если вы хотите заре-
Network Solutions гораздо менее очевиден, чем веб-интер- гистрировать на себя какое-либо популярное доменное имя
фейс РУЦЕНТРа. В нем можно разобраться, но для того, и оно вдруг становится доступным для регистрации, то оно
чтобы, например, добавить еще одну персону и перевести будет разыграно на аукционе. Имя держится на аукционе
на нее какие-то контакты, придется изрядно повозиться. год, после чего снимается.

76
сети
Whois phone: +7 095 3631150
Whois – вспомогательный информационный сервис, очень fax-no: +7 095 3631150
e-mail: mihalev@land.ru
тесно связанный с DNS, поскольку с его помощью опреде- registrar: RUCENTER-REG-RIPN
ляется, например, занято в настоящий момент доменное created: 2002.06.21
paid-till: 2006.06.21
имя или свободно. Описывается он RFC 954. Задача этого source: TC-RIPN
сервиса – поиск информации о запрошенном имени на ука- Last updated on 2006.05.28 15:03:19 MSK/MSD
занном сервере. Любой регистратор, как правило, предо-
ставляет возможность вам воспользоваться этим сервисом, За информацией о регистрации сетей, обратных зон
чтобы выполнить поиск информации о каком-либо домене, и выяснения принадлежности IP – в RIPE [3]. Вывод будет
сети или персоне. Такой поиск выполняется неявно, когда иметь следующий вид:
вы указываете имя домена, которое хотите зарегистриро-
вать. В зависимости от сервера, вам могут либо сообщить, # whois -r 212.20.5.0/24
что доменное имя занято, либо предложат зарегистриро- inetnum: 212.20.5.0 - 212.20.5.255
вать имя в другом TLD. Whois отображает только информа- netname: GRANCH
descr: Granch ltd
цию, которая находится в открытом доступе. При обраще- descr: Novosibirsk
нии к разным серверам информация может выглядеть по- descr: Pisareva str. 53
разному. Например, Network Solutions вставляет в выдава- descr: RU-630005
country: RU
емую информацию большой рекламный заголовок. admin-c: RNA1-RIPE
Самый простой путь получения информации через tech-c: RNA1-RIPE
status: ASSIGNED PA
whois – воспользоваться соответствующим сервисом, на-
mnt-by: AS8691-MNT
пример в РУЦЕНТРе [8]. Для тех же, кто предпочитает ко- mnt-by: ROSNIIROS-MNT
мандную строку, существует команда whois. Для ее ис- source: RIPE # Filtered
пользования требуется разблокированный на брандмау-
эре порт 43. Существует также простенькая X-версия ко- Несмотря на то что данная информация уже устаре-
манды xwhois, требующая Glib. ла, она все еще присутствует в RIPE. Можно запросить ин-
Несмотря на то что обратиться за информацией whois формацию о персоне, указав ее handle для данного серве-
можно к большому количеству регистраторов, которые пе- ра (напоминаю, что каждый регистратор имеет свои собс-
речислены в man whois, практическое значение для нас име- твенные handles):
ют только некоторые из них. За информацией об именах
в зонах .com, .org, .net, .edu, .biz и прочих функциональных # whois -r RNA1-RIPE
зон – в Network Solutions [9]. Вывод будет иметь следующий person: Rashid N Achilov
вид (рекламный заголовок опущен): address: Granch Ltd.
address: Pisareva str, 53
address: RU-630005 Novosibirsk
# whois -i freebsd.org
address: RUSSIA
Registrant: phone: +7 3832 242363
The FreeBSD Project fax-no: +7 3832 242363
839 S.E. 209th Ave. e-mail: shelton@granch.nsk.su
Gresham, OR 97030-2235 nic-hdl: RNA1-RIPE
US source: RIPE # Filtered
Domain Name: FREEBSD.ORG
Administrative Contact, Technical Contact:
Lawrence, David G. dg@dglawrence.com DNS считается одной из самых сложных тем при организа-
TriGamma Robotics Corp. ции сети. И это вовсе неспроста – для понимания его ра-
839 SE 209th Ave.
Gresham, OR 97030-2235 боты требуется многое. Хотя такая относительно простая
US задача, как создание небольшой зоны, содержащей толь-
503 660 0199
ко ссылки на внешний веб- и почтовый серверы, вполне по
Record expires on 20-Sep-2006.
Record created on 15-May-2002. силам большинству администраторов. Надеюсь, что прочи-
Database last updated on 28-May-2006 07:14:10 EDT. тав эту статью, вы тоже сможете ее решить.
Domain servers in listed order:
NS0.FREEBSD.ORG 216.136.204.126
NS1.IAFRICA.COM 196.7.0.139 1. http://www.isc.org/index.pl?/sw/bind/arm93.
NS1.DOWNLOADTECH.COM 209.237.247.3 2. ftp://ftp.internic.net/domain/named.root.
NS2.DOWNLOADTECH.COM 209.237.247.2
3. http://www.ripe.net.
За информацией об именах в зонах .ru, .su – в РУЦЕНТР 4. http://www.ripe.net/rs/reverse/rdns-project/index.html.
[8]. Вывод будет иметь совершенно другой вид: 5. Немет Э., Снайдер Г., Сибасс С., Хейн Т.Р. UNIX: руководство сис-
темного администратора. Для профессионалов/Пер. с англ. –
# whois -c ru samag.ru Спб.:Питер; К.: Издательская группа BHV, 2002. – 928 с.: ил.
domain: SAMAG.RU 6. Cricket Liu, Paul Albitz, DNS and BIND, Third Edition, 1998 (изд-
type: CORPORATE во O’Reilly, ISBN 1-56592-512-2).
nserver: ns0.redline.ru.
nserver: ns0.ug.ru. 7. http://linuxmafia.com/pub/linux/network.
state: REGISTERED, DELEGATED 8. http://www.nic.ru.
person: Mikhalyov Alexander Vladimirovich
9. http://www.networksolutions.com.

№7, июль 2006 77


безопасность

Как увеличить безопасность процессов


с помощью chroot и jail

Василий Озеров
Chroot и Jail – два разных способа изолировать процесс от основной файловой системы.
Где и когда их использовать? Каковы их преимущества и недостатки?

Б
ольшинство сервисов, работаю- чить безопасность системы и протес- ный ущерб от взломанного сервиса,
щих в системе, имеют возмож- тировать новое ПО. следует изолировать его от основной
ность просматривать структу- При увеличении безопасности про- системы, используя chroot. Тогда сер-
ру всей файловой системы сервера. цесса принципиальное значение име- вис будет иметь доступ только к той
Это не всегда безопасно для информа- ют свойства процесса, а именно: с ка- части файловой системы, в которой
ции, хранящейся на сервере. Для того кими привилегиями он работает. Если он «заперт».
чтобы не допустить кражу секретной процесс был запущен от имени обыч- Используя chroot для тестирования
информации, были придуманы спо- ного пользователя, то все проблемы ПО, вы можете не бояться за основ-
собы, позволяющие изолировать про- с безопасностью решаются грамотной ную систему, ведь процесс не может
цесс: chroot и jail. установкой прав на файлы и катало- получить к ней доступ, не говоря уже
ги. Процесс, запущенный от имени су- об удалении важных файлов.
Chroot перпользователя, имеет абсолютные Для того чтобы перенести програм-
Chroot – операция изменения корне- привилегии в системе, благодаря ко- му с одной системы на другую, не имея
вого каталога для текущего процесса торым может выполнять любые дейст- исходных кодов, достаточно перенес-
и всех его потомков – поможет увели- вия. Для того чтобы снизить возмож- ти все библиотеки, нужные для рабо-

78
безопасность
ты программы, и запустить саму программу в chroot-окру- После этого запустим программу без chroot-окружения
жении. Думаю, преимущества chroot очевидны. и создадим, например, файл chr00t.
Отмечу недостатки chroot: Проверяем наличие файла «/chr00t», как видно, такого
 Увеличивается число копий одних и тех же файлов. файла не существует:
 Возможность выйти из chroot-окружения (на некоторых
ядрах). # ls -la /chr00t
ls: /chr00t: No such file or directory
Первый случай я поясню на примере: мы пытаемся за-
пустить в «песочнице» /bin/sh. Корнем этого процесса сде- Запускаем программу:
лаем /usr/chroot/. Посмотрим, от каких библиотек зави-
сит sh: # ./prog
Enter filename to create: chr00t
# ldd /bin/sh
/bin/sh: Опять проверяем наличие файла «/chr00t», как видно,
libedit.so.5 => /lib/libedit.so.5 (0x2808c000) файл успешно был создан:
libncurses.so.6 => /lib/libncurses.so.6 (0x280a0000)
libc.so.6 => /lib/libc.so.6 (0x280df000)
# ls -la /chr00t
Так как для sh теперь корнем будет /usr/chroot, то биб- -rw-r--r-- 1 root wheel 0 Jun 2 00:54 /chr00t
лиотеки должны быть расположены следующим образом
(относительно реального корня): /usr/chroot/lib/*. Обратите Очистим рабочее пространство для будущих экспери-
внимание, что это не все библиотеки, которые необходимо ментов:
перенести. Очевидно, что нерационально расходуется мес-
то на жестком диске. Если же попытаться запустить связ- # rm -f /chr00t
ку Apache + MySQL + PHP в chroot, то придется переносить
чуть ли не больше половины всей системы. А теперь задай- Теперь запустим нашу программу в chroot-среде, но для
те себе вопрос: а действительно ли переносить всю связ- этого предварительно необходимо создать нужное нам де-
ку так необходимо? Ведь Apache работает не от имени су- рево каталогов и перенести туда соответствующие файлы.
перпользователя, и главное – правильно выставить права Создаем дерево каталогов. В частности, папки lib
на файлы и каталоги. и libexec для нужных библиотек:
О возможности выйти из chroot я расскажу чуть позже.
Вернемся к нашей теме «Как увеличить безопасность # mkdir -p /usr/chroot/{lib,libexec}
системы с помощью chroot». Я написал небольшую про-
граммку на C, которая наглядно демонстрирует работу Переносим нашу программу в /usr/chroot:
chroot:
# cp ./prog /usr/chroot/
#include <errno.h>
#include <stdio.h>
#include <sys/types.h> Смотрим, с чем связана наша программа:
int main(void)
{ # ldd /usr/chroot/prog
char line[255]=""; /* Переменная для названия файла */ /usr/chroot/prog:
chdir("/");/* Перемещаемся в корень */ libc.so.6 => /lib/libc.so.6 (0x28074000)
printf("Enter filename to create: ");
scanf("%s", &line);
Копируем необходимые библиотеки:
if((fopen(line,"w+") == NULL)) /* Создаем файл */
{
perror("Error"); /* Выводим сообщение об ошибке */ # cp /lib/libc.so.6 /usr/chroot/lib/
exit(1); /* И выходим, если создать файл
не удалось */
} Библиотека ld-elf.so.1 нужна для запуска бинарных фай-
лов формата elf:
return 0;
}
# cp /libexec/ld-elf.so.1 /usr/chroot/libexec/
Как вы видите из кода, первым делом мы перемеща-
емся в кореневой каталог файловой системы, а потом уже После того как все предварительные шаги сделаны,
там создаем файл. Теперь посмотрим, как будет работать можно запускать нашу программу в chroot-окружение, но пе-
программа в chroot-кружении и без него. ред этим проверим наличие файла в /usr/chroot и в /.
Компилируем: Следующие две команды проверяют наличие файла
в /usr/chroot и в /:
# gcc prog.c -o prog
# ls -la prog
# ls -la /chr00t
-rwxr-xr-x 1 root wheel 5533 Jun 2 00:52 prog ls: /chr00t: No such file or directory

№7, июль 2006 79


безопасность
# ls -la /usr/chroot/chr00t Вот как этот алгоритм выглядит на C (этот код нужно вста-
ls: /usr/chroot/chr00t: No such file or directory вить после строки chdir(“/”) в предыдущей программе):

Запускаем нашу программу в изолированной среде: mkdir("tmp", 0755); /* Создаем временную директорию */
dir_fd = open(".", O_RDONLY); /* Открываем текущую директорию */

# chroot /usr/chroot/ /prog chroot("tmp"); /* Меняем корневую директорию для процесса*/


Enter filename to create: chr00t fchdir(dir_fd); /* Частично выходим из chroot, поднимаясь
на уровень вверх */
close(dir_fd); /* Закрываем дескриптор директории */
Проверяем наличие файла в корневом каталоге про-
цесса: for(n = 0; n < 1024; n++)
{
chdir(".."); /* Поднимаемся на уровень выше */
# ls -al /usr/chroot/chr00t }
-rw-r--r-- 1 root wheel 0 Jun 2 00:56 /usr/chroot/chr00t chroot("."); /* Меняем корневой каталог процесса на настоящий */

# ls -la /chr00t
Код достаточно прокомментирован, поэтому разобрать-
ls: /chr00t: No such file or directory ся в нем не составит труда.
Итак, запустим новую программу на FreeBSD 4.6.
Как видите, файл успешно создался не в настоящем Проверяем наличие файла «/chr00t», такого файла нет:
корне системы, а в корневом каталоге для данного процес-
са. На этом примере прекрасно видно, что процесс, «поса- # ls -la /chr00t
женный в песочницу», не имеет доступа ко всей файловой ls: /chr00t: No such file or directory
системе, а только к /usr/chroot/.
Создаем папки для библиотек:
Выход из chroot-окружения
Как я уже писал ранее, возможен обход chroot-окружения, # mkdir -p /usr/chroot/usr/{lib,libexec}
но для этого одновременно должны выполняться два ус-
ловия: Компилируем программу:
 Процесс должен работать под правами суперпользова-
теля. # gcc break_chroot.c -o /usr/chroot/break_chroot
 Ядро должно поддерживать вложенные chroot-вызовы.
Копируем необходимые библиотеки:
Запускаем нашу программу под правами суперпользо-
вателя, поэтому одно из условий уже соблюдается. # cp /usr/lib/libc.so.4 /usr/chroot/usr/lib/
# cp /usr/libexec/ld-elf.so.1 /usr/chroot/usr/libexec/
Со вторым условием потруднее. Я протестировал
свою программу для выхода из chroot на следующих сис- Запускаем программу в chroot-среде:
темах:
 FreeBSD 6.0/6.1 # chroot /usr/chroot/ /break_chroot
 FreeBSD 5.4 Enter filename to create: chr00t
 FreeBSD 4.6
Проверяем наличие файла «/chr00t»:
И только четвертая версия ОС FreeBSD выпустила ме-
ня за пределы chroot, а следовательно, из chroot в систе- # ls -la /chr00t
мах FreeBSD 5.x/6.x выйти невозможно, по крайней мере -rw-r--r-- 1 root wheel 0 Jun 2 00:56 /chr00t
мне не удалось.
Но я все же расскажу о выходе из «песочницы». Для это- Как хорошо видно, файл был создан не в chroot-окруже-
го процессу необходимо выполнить следующие действия: нии, а в настоящем корневом каталоге файловой системы.
 Создать временную(tmp) директорию в текущем рабо- Чтобы не дать выйти программе за пределы chroot-окруже-
чем каталоге. ния, следует использовать функции setuid, setgid для изме-
 Открыть временную директорию (нужно, только если нения EUID, EGID-процесса. Так как вызов chroot может быть
вызов chroot меняет текущую рабочую директорию). вызван только суперпользователем, то программа просто
 Изменить корневой каталог на временную директорию не сможет сделать еще один chroot.
вызовом chroot.
 Использую fchdir выйти из chroot-окружения (нужно, Тестирование ПО с помощью chroot
только если вызов chroot меняет текущую рабочую ди- Если нужно протестировать какую-нибудь программу,
ректорию). а под рукой нет тестового компьютера, то проще всего бу-
 Много раз выполнить chdir(“..”) для перемещения в ре- дет создать себе изолированную систему для тестов, ис-
альный корень файловой системы. пользуя chroot. Сразу предупреждаю: создать полноцен-
 Изменить корневой каталог процесса на текущий ную систему с помощью chroot не получится, для этого при-
(chroot(“.”)), то есть реальный корень. меняется jail.

80
безопасность
Давайте теперь попробуем запустить sh в chroot, для Давайте определимся:
тестирования ПО.  Домен – UNIX.
Создаем папки для упешного применения chroot для sh:  Компьютер, на котором производится установка вирту-
альной машины – satdevil.unix.(172.16.0.200).
# mkdir /usr/chroot/{bin,sbin,lib,libexec,usr}  Виртуальная машина – evil.unix.(172.16.0.199).
# mkdir /usr/chroot/usr/{bin,sbin,lib,libexec}
 DNS-сервер – dns.unix.(172.16.0.1).
Копируем нужные бинарные файлы:
Чтобы понимать, на какой машине происходит действие,
# cp /bin/* /usr/chroot/bin/ приглашение командного интерпретатора будет выглядеть
# cp /sbin/* /usr/chroot/sbin/
# cp /usr/sbin/* /usr/chroot/usr/sbin/ следующим образом: «hostname#».
# cp /usr/bin/* /usr/chroot/usr/bin/
Создание виртуальной машины
Копируем необходимые библиотеки: Создаем директорию, где будет находиться виртуальная
машина:
# cp -r /lib/* /usr/chroot/lib/
# cp /libexec/* /usr/chroot/libexec/
# cp -r /usr/lib/* /usr/chroot/usr/lib/ satdevil# mkdir /usr/local/evil
# cp -r /usr/libexec/* /usr/chroot/usr/libexec/
Собираем и устанавливаем «мир» в только что создан-
Запускаем sh в chroot: ную директорию:

# chroot /usr/chroot/ /bin/sh satdevil# cd /usr/src


satdevil# make world DESTDIR=/usr/local/evil

Теперь посмотрим, что у нас в корне. Из вывода ls пре- Теперь установите конфигурационные файлы, скрип-
красно видно, что настоящий корень – /usr/chroot. ты и т. д. в каталог:

# ls -la satdevil# make distribution DESTDIR=/usr/local/evil


total 16
drwxr-xr-x 7 0 0 512 Jun 1 21:49 . Чтобы настроить нашу виртуальную машину, запустим
drwxr-xr-x 7 0 0 512 Jun 1 21:49 ..
drwxr-xr-x 2 0 0 1024 Jun 1 21:49 bin в ней /bin/tcsh. Общий вид команды jail выглядит так:
drwxr-xr-x 3 0 0 1024 Jun 1 21:49 lib
drwxr-xr-x 2 0 0 512 Jun 1 21:50 libexec // jail <путь_к_новому_корню> <hostname> <ip_address> <команда>
drwxr-xr-x 2 0 0 2560 Jun 1 21:49 sbin
drwxr-xr-x 6 0 0 512 Jun 1 21:49 usr
команда указывается относительно нового корня.
# pwd
/ satdevil# jail
make /usr/local/evil
distribution DESTDIR=/usr/local/evil
evil 172.16.0.199 /bin/tcsh

Мы скопировали библиотеки не только для sh, но и для Теперь мы находимся в нашей новой системе. Для на-
остальных утилит, которыми мы будем пользоваться, на- стройки можно воспользоваться sysinstall, но я буду исполь-
пример ls и pwd. зовать командный режим, а не графический.
Предыдущий пример использования chroot не очень Первым делом создаём пустой файл /etc/fstab, это нуж-
удачный, так как chroot не создан для виртуализации сис- но для предотвращения ошибок при загрузке системы.
темы. Для этого используется механизм jail, который явля-
ется родным для FreeBSD, следовательно, продуман jail на- evil# touch /etc/fstab
много лучше, нежели chroot.
Теперь настроим автозагрузку.
Jail Отключаем rpcbind, который на виртуальной машине
Механизм jail позволяет администратору делить полноцен- не нужен:
ную FreeBSD-систему на маленькие подсистемы, которые
называются jail (тюрьмами). В каждой такой «тюрьме» на- evil# echo rpcbind_enable="NO" > /etc/rc.conf
ходятся свои процессы, файлы, аккаунты. Благодаря этому
механизму можно увеличить безопасность системы и со- Отключаем конфигурирование интерфейсов, дабы из-
здать виртуальные машины. бежать ошибок, связанных с ifconfig:
Я бы не хотел повторяться, рассматривая примеры, ко-
торые были применены к chroot, поэтому сейчас я расскажу evil# echo network_interfaces="" >> /etc/rc.conf
о том, как создать виртуальную машину с помощью jail.
Итак, в первую очередь необходимо настроить DNS-сер- Включаем sshd для удаленного управления виртуаль-
вер. Так как статья посвящена безопасности, то настройку ной машиной:
сервера имен я здесь не описываю. Но имена машин нам
понадобятся. evil# echo sshd_enable="YES" >> /etc/rc.conf

№7, июль 2006 81


безопасность
Редактируем resolv.conf для нормального определения // Включаем jail
jail_enable="YES"
dns имен. Добавляем primary dns сервер и домен.
// Список «тюрьм», находящихся на данной машине.
evil# echo domain Unix > /etc/resolv.conf // Если тюрьм несколько, то перечисление их идет
evil# echo nameserver 172.16.0.1 >> /etc/resolv.conf // через пробел
jail_list="evil"
Создаем базу алиасов для sendmail, опять-таки чтобы // Запрещаем смену hostnam в jail
избежать ошибок при запуске sendmail: jail_set_hostname_allow="NO"

// Разрешаем использовать процессам только домены


evil# newaliases // PF_LOCAL, PF_INET, PF_ROUTE
jail_socket_unixiproute_only="YES"

Теперь настраиваем timezone. Для Москвы это будет // Далее идет описание конкретной «тюрьмы»,
// в нашем случае это evil
выглядеть так:
// Задаем корневой каталог
evil# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime jail_evil_rootdir="/usr/local/evil/"
// Указываем имя запускаемой виртуальной машины
jail_evil_hostname="evil.unix"
Задаем пароль суперпользователю в виртуальной ма-
шине. Напоминаю, что root в виртуальной системе и root // Указываем IP-адрес виртуальной машины
jail_evil_ip="172.16.0.199"
на основной системе – два совершенно разных пользова-
теля, никаким образом не зависящих друг от друга. // Указываем, что именно запустить в «тюрьме».
// Команда /bin/sh /etc/rc приведет к инициализации
// и запуску системы
evil# passwd jail_evil_exec="/bin/sh /etc/rc"
Changing local password for root // Разрешаем использование файлов устройств
New Password: jail_evil_devfs_enable="YES"
Retype New Password:

После редактирования осталось только запустить jail.


Давайте создадим нового пользователя, для удаленно- Делается это командой:
го администрирования сервера:
satdevil# /etc/rc.d/jail start
evil# pw useradd fr33man -s /bin/tcsh -m -d /home/fr33man/
При первом запуске придется немного подождать, что-
Зададим пароль пользователю: бы создались все необходимые файлы и запустились не-
обходимые сервисы.
evil# passwd fr33man Вот и все. Мы настроили виртуальную машину. Теперь,
Changing local password for fr33man чтобы попасть в нее, достаточно сделать следующее:
New Password:
Retype New Password: $ ssh evil.unix -l fr33man

Выходим из виртуальной машины:


Гланое – найти золотую середину
evil# exit Jail можно использовать как и для разделения основной
системы на несколько маленьких, так и для увеличения бе-
Теперь необходимо подготовить основную систему. зопасности путем помещения заведомо опасных процес-
Прежде всего сделаем alias адреса 172.16.0.199 сов в «тюрьму».
на адрес 172.16.0.200. rl0 – имя интерфейса с адресом Если вы используете FreeBSD, то лучше использовать
172.16.0.200: jail, чем chroot по нескольким причинам:
 Jail хорошо продуман во FreeBSD, и с его помощью,
satdevil# ifconfig rl0 inet alias 172.16.0.199/32 вы сможете решить любую задачу по изоляции процес-
са, вплоть до виртуализации системы.
Создаем proc filesystem, необходимую для работы яд-  Chroot возможно обойти, да и продуман он не так хоро-
ра и процессов: шо, как jail.

satdevil# mount -t procfs proc /usr/local/evil/proc Также не забывайте и о превосходной системе прав
в UNIX, которая позволяет решить практически любую про-
Jail хорошо продумана во FreeBSD, поэтому запускать блему, связанную с безопасностью. Тем более если процесс
мы ее будем не из командной строки, как chroot, а с помо- не работает от имени суперпользователя.
щью специального скрипта, расположенного в /etc/rc.d/. С jail тоже не следует переусердствовать: если у вас
При запуске скрипт считывает данные из /etc/rc.conf. Все слишком много виртуальных машин, то проще парочку
действия производим на satdevil. из них вынести на настоящие машины.
Добавляем в rc.conf: Главное – найти золотую середину.

82
ретроспектива

Попытка изменить мир:


хроники компании NeXT

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

Мы хотели продолжать Компьютеры, производившиеся ников начала – середины 90-х годов


то, что делали в Apple – NeXT Inc., можно назвать уникальными прошлого столетия, а также обрабаты-
изменять мир и очень редкими. Это и неудивитель- вали метеорологические данные и со-
(Стив Джобс) но, ведь за всю историю существова- ставляли прогноз погоды. Компьютер-
Любое творение гениального Сти- ния компании было продано немногим ные игры Doom и Quake, а также пер-
ва Джобса можно назвать уникаль- более 50 тысяч компьютеров. вый веб-браузер были созданы на этой
ным. Вспомните Apple. Эта компания Ко м п ь ю т е р ы N eX T п р и м е н я - платформе.
не нуждается в саморекламе. Её про- лись в Национальном Аэрокосмичес-
дукция всегда считалась «электро- ком Агентстве (говорят, что они вне- Превращение идеи
никой, наделённой душой». Однако сли свою лепту в подготовку к уста- в реальность
Джобс – основатель не только Apple. новке и работе космического телеско- 1985 год. Компания Apple Computer.
В своё время благодаря его усилиям па «Хаббл»), секретной военной базе Джон Скалли, приглашённый в 1983
в свет вышли компании Pixar и NeXT. «Зона 51» в штате Невада, ЦРУ и дру- году Стивом Джобсом на пост управ-
Правда, если первая известна своими гих организациях. С их помощью уп- ляющего директора компании, посте-
мультфильмами на весь мир, то о вто- равляли противовоздушными ракет- пенно захватил власть и стал более
рой слышали лишь немногие, инте- ными комплексами «Патриот», дела- влиятельным человеком, чем её ос-
ресующиеся историей вычислитель- ли расчёты для оптимальных траекто- нователь. Дабы, по его словам: «За-
ной техники. рий большинства американских спут- ставить компанию двигаться даль-

84
ретроспектива
ше, что при Джобсе было невозмож-
но», 10 апреля при поддержке сове-
та директоров Скалли отстранил его
от управления компанией. Стив Джобс
всё ещё оставался членом этого со-
вета, но в реальности никаких реше-
ний больше принимать не мог. Про-
дав часть принадлежавших ему акций
на сумму 20 млн. долларов, он съездил
на отдых во Францию и Италию и вер-
нулся в Америку, полон сил и энергии,
готовый вновь «изменить мир».
Теперь самое время перейти к рож-
дению компании NeXT, идея которой
пришла Джобсу… за завтраком. В на-
чале сентября 1985 года Стив завтра-
кал вместе с лауреатом Нобелевской
премии, биохимиком Стэндфордского
университета Полом Бергом. Во вре-
мя трапезы учёный рассказывал
Джобсу о своих исследованиях ДНК Рисунок 1. Скриншот первого веб-браузера, разработанного Тимом Бернерсом-Лии
и о трудностях, с которыми сталкива-
ются при этом он со своей командой. бой, запротестовал, поскольку все компания судится со своими создате-
На его вопрос об использовании ком- они занимали довольно большие пос- лями. «Мне сложно объяснить, поче-
пьютера в качестве средства для уско- ты: Даниель Левин – маркетинг-ме- му Apple с годовым оборотом более
рения моделирования экспериментов неджер Apple в секторе образования, 2 млрд. долларов и персоналом бо-
Берг ответил, что, к сожалению, боль- Бад Трайббл – руководитель отдела лее 4300 сотрудников боится шести
шинство университетов не распола- разработки программного обеспече- человек в синих джинсах», – говорил
гают необходимыми компьютерными ния, Сьюзен Бернес – глава отделе- по этому поводу Джобс.
мощностями и соответствующим про- ния Apple по продажам на рынке США, Первоначально он вложил в новую
граммным обеспечением. «Вот тогда я а также Рич Пейдж и Джордж Кроу, яв- компанию 7 млн. долларов личных сбе-
и начал развивать эту идею дальше», – лявшиеся одними из лучших инжене- режений. Первые 100 тыс. долларов
вспоминает Джобс. В его голове чёт- ров компании. ушли на создание логотипа NeXT Inc,
ко сформировался образ идеального Впоследствии Apple подала иск над которым работал 71-летний про-
компьютера для высших учебных заве- против новоиспечённой NeXT Inc., мо- фессор Йельского университета Пол
дений, способный, подобно Macintosh тивируя своё решение тем, что «лю- Ренд, известный в Америке дизайнер
в 1984 году, стать новым «открыти- ди, ушедшие в новую компанию, рас- и автор логотипов компаний ABC, IBM,
ем» в учебном и исследовательском полагают секретной информацией UPS и Westinghouse. В июне 1986 он
процессах. относительно ещё не анонсирован- представил Стиву результат.
Несколькими днями позже, 13 сен- ных продуктов, их стоимости, а также Изначально Джобс планировал
тября, он проинформировал совет ди- фамилий «независимых» людей, ко- сделать NeXT Inc. исключительно час-
ректоров Apple о том, что принял ре- торые будут помогать Apple в рекла-
шение покинуть компанию и основать ме». 17 сентября Джобс сделал ответ-
новую. При этом Джобс пообещал, ный ход – разослал копии бланка ре-
что ни в коем случае не собирается гистрации новой компании (позже пе-
конкурировать с Apple и что его цель – реименованной в NeXT Computer Inc.,
рынок образования, конкретнее – выс- однако в статье для краткости я буду
ших учебных заведений. Единствен- использовать оригинальное название)
ное, что попросил Стив, – возмож- во многие СМИ, а также пригласил
ность взять с собой пару сотрудников представителей прессы в свой особ-
Apple «низшего звена», после чего его няк в городке Вудсайд, где публич-
след исчезнет навсегда. Совет дирек- но объявил, что ушёл из Apple и боль-
торов сразу же согласился и при этом ше не имеет с этой компанией ниче-
пообещал купить в будущем 10% ак- го общего.
ций новой компании Джобса. На том Судебный иск против NeXT Inc. про-
и порешили. существовал недолго. Главным обра-
Однако уже на следующий день зом из-за того, что сама Apple боялась
Скалли, увидев фамилии пяти чело- таким образом навредить собственно-
Рисунок 2. Стив Джобс возле
век, которых Джобс хотел увести с со- му имиджу. Всё-таки не каждый день NeXT Computer

№7, июль 2006 85


ретроспектива
долл. В то время, по оценкам экспер- тирования отодвинули срок появления
тов, её стоимость составляла 30 мил- чипа на несколько лет.
лионов. Стоит отметить, что Перот до Поэтому было решено идти по пу-
этого отказался от предложения при- ти наименьшего сопротивления и ис-
обрести молодую, но амбициозную пользовать широко распространённый
компанию Microsoft. процессор Motorola 68030, который в то
Благодаря ещё двум инвесторам, время являлся сердцем компьютеров
Стэндфордскому университету и Уни- Macintosh, а также первых моделей ра-
верситету Карнеги-Мелона, оценочная бочих станций Sun Microsystems.
стоимость компании достигла 126 млн. Поскольку будущий компьютер
Рисунок 3. NeXT Computer собственной
персоной долларов. При этом Джобс владел по замыслу Джобса должен был экс-
63% акций NeXT Inc. Совет директоров плуатироваться в университетах в ка-
компании состоял всего из трёх чело- честве основного устройства для про-
век: собственно Стива Джобса, Росса ведения различных исследований, ар-
Перота и ректора Университета Кар- хитектура NeXT Computer (так позже
неги-Мелона Пэта Кресина. была названа новая система) изна-
чально предполагала наличие встро-
Новый чудо-компьютер енного цифрового сигнального про-
Ещё в начале становления NeXT Inc. цессора, обрабатывавшего звук и яв-
в компании стартовал проект по со- лявшегося главным инструментом
зданию «идеального» компьютера для при проведении различного рода ис-
высших учебных заведений. Для это- следований и экспериментов. Кроме
го Джобс вместе с инженерами объ- того, для устранения «бутылочных гор-
ехали несколько университетов, что- лышек» в архитектуре компьютера ин-
бы узнать, что именно хотят студенты женерами NeXT Inc. были разработа-
Рисунок 4. Материнская плата
NeXT Computer и профессора. ны две специальные микросхемы кон-
Основным критерием, кроме высо- троллеров ввода/вывода, предназна-
тной компанией, владельцами кото- кой производительности и расширяе- ченных для управления внутренними
рой будут её же сотрудники. Однако мости, являлась цена: будущий ком- шинами данных. Один из чипов также
уже в 1987 году семь миллионов, вло- пьютер не должен был стоить больше содержал контроллер прерываний.
женные Джобсом, иссякли. Необходи- 3 тыс. долларов. Ориентиры были по- Однако главной особенностью
мость в дополнительных капиталовло- лучены, и работа закипела. NeXT Computer являлся магнитооп-
жениях заставила его искать потенци- Первоначально в качестве сердца тический (сокращённо – МО) привод,
альных инвесторов. будущего компьютера инженеры NeXT единственный в системе. В то время
И опять помог случай. В ноябре планировали использовать RISC-про- объём жёстких дисков едва перева-
1986 года в свет вышел документаль- цессор 88000, однако трудности ком- лил за несколько сотен мегабайт, к то-
ный фильм «Предприниматели», в ко- пании Motorola в процессе его проек- му же они стоили очень дорого, а опе-
тором Стив Джобс разглагольствовал
о причинах, побудивших его к основа-
нию NeXT, о будущем чудо-компьюте-
ре, а также рынке, на который он на-
целен. В этом же фильме говорилось
и о дате выпуска системы – весна 1987
года, а также о цене, которая, по-пре-
жнему не должна была превышать 3
тыс. долларов. Этот документальный
фильм посмотрел и мультимиллионер
Росс Перот, заработавший состояние
продажей своей компании Electronic
Data System. Компания Стива Джоб-
са, а также цель, которой она доби-
валась, настолько потрясли Перота,
что тот сразу же позвонил основате-
лю NeXT Inc. и сказал: «Если вам ког-
да-нибудь понадобится инвестор, зво-
ните мне».
Перот был настолько уверен в буду-
щем успехе компании, что за 16% ак-
ций инвестировал в NeXT Inc. 20 млн. Рисунок 5. Скриншот NEXTSTEP 0.8

86
ретроспектива
рационная система NEXTSTEP, о ко-
торой мы поговорим позже, занима-
ла 200 Мб (1987 год!). Поэтому инже-
неры были вынуждены искать другой
путь. Решение пришло в лице компа-
нии Canon и её новой и революцион-
ной разработки – магнитооптической
технологии. Записывание информации
в ней производится при помощи луча
лазера и магнитного поля, а считыва-
ние – при помощи одного только ла-
зера. Благодаря большому объёму за-
писываемой и хранимой информации
(256 Мб) этот привод был как раз тем,
что искали инженеры NeXT Inc.
Стоит отдельно поговорить и о вне-
шнем виде NeXT Computer. Идеей
Джобса было сделать корпус компью-
тера в форме идеального куба со сто-
Рисунок 6. Компьютер NeXT Station
ронами чуть больше 30 см (12 дюймов).
Дизайном занималась компания Frog
Design, зарекомендовавшая себя со-
зданием внешнего вида оригиналь-
ного Macintosh. Корпус NeXT Computer
состоял из чистого магния и был пок-
рашен в чёрный цвет, делая из ком-
пьютера вершину дизайнерской мыс-
ли, однако при этом «накручивая счёт-
чик» цены, которая позже ещё сыграет
с NeXT Inc. злую шутку.

Топливо для двигателя


Параллельно с разработкой нового
компьютера стартовала работа и над
операционной системой. Первоначаль-
но инженеры планировали лицензи-
ровать какую-нибудь из уже сущес-
твующих ОС. Решение использовать
UNIX в качестве операционной систе-
мы для NeXT Computer было принято Рисунок 7. Компьютер NeXT Cube
самим Джобсом. «Я верю в нижеска-
занное всеми косточками своего тела: Однако микроядро Mach не явля- NEXTSTEP под названием Workspace
в 90-х UNIX станет основной операци- лось единственной отличительной осо- Manager включал в себя интерпрета-
онной системой каждой уважающей бенностью этой ОС. Ещё в 1986 году тор Display PostScript – технологии, ос-
себя компании», – заявлял он. Однако NeXT Inc. начала работать с компанией нованной на языке описания страниц
ни SunOS, ни другие вариации UNIX, Adobe над проектом Display PostScript. PostScript. Благодаря этому пользова-
предполагавшиеся в качестве вари- Джобса не удовлетворяла методи- тель всегда мог быть уверен, что ин-
антов, так и не подошли, в результате ка, использованная в компьютерах формация, которую печатает принтер,
чего было принято решение разрабо- Macintosh: информация на экране ком- будет в точности соответствовать вы-
тать ОС с чистого листа. пьютера отображалась с использова- водимой на экран.
Ядром для будущей операционной нием библиотеки QuickDraw, тогда как Следующей особенностью NEXT
системы, названной NEXTSTEP, вы- при печати документов был задейство- STEP являлась её объектная ориен-
ступило основанное на базе UNIX 4.3 ван язык описания страниц PostScript. тированность. Ещё до своего ухода из
микроядро Mach, разработанное в Уни- В результате напечатанная страница Apple Джобс был впечатлён возмож-
верситете Карнеги-Мелона. Его созда- зачастую имела совсем другой вид, ностями стартовавшего в недрах ком-
тель, Ави Теваньян, позже был завер- нежели выводимая на экран. Поэтому пании проекта под кодовым названи-
бован Джобсом в NeXT Inc., став глав- он договорился с Adobe о том, чтобы ем «Розовый» (Pink), заключавшего-
ным руководителем команды по раз- сделать их технологию частью опера- ся в создании объектно-ориентиро-
работке NEXTSTEP. ционной системы. Оконный менеджер ванной ОС для Macintosh (к сожале-

№7, июль 2006 87


ретроспектива
порацией IBM, согласно которому в бу- Но компьютер стоил значительно до-
дущем NEXTSTEP будет перенесена на роже планируемого – 6,5 тыс. долла-
её рабочие станции. В свою очередь ров. Если же пользователь хотел ос-
«Голубой гигант» вложил в компанию настить компьютер жёстким диском
Джобса 60 млн. долларов. (а это было просто необходимо, пос-
Рисунок 8. Видеоплата NeXT Dimension
Наконец, 12 октября 1988 года чу- кольку при времени реакции МО-при-
до-компьютер был представлен пуб- вода, равном 97 мс, работа с ОС пре-
лике. «Я, наверное, говорю от имени вращалась в адские муки), а также
всех сотрудников NeXT Inc.: «Как здо- принтером NeXT Laser Printer, цена
рово вернуться назад!», – начал своё всей системы зашкаливала за 10 тыс.
выступление Стив Джобс. После трёх- долларов.
часовой речи на глазах у 4500 человек Американские колледжи и универ-
Джобс продемонстрировал «новый ситеты, для которых предназначался
Macintosh» – NeXT Computer. компьютер, не спешили расставаться
Характеристики новинки говорили со столь большими суммами. Если же
сами за себя: процессор 68030, рабо- покупка и осуществлялась, то коли-
тающий на частоте 25 МГц, математи- чество приобретённых NeXT Computer
Рисунок 9. Прототип дополнительной ческий (68882) и цифровой сигналь- не превышало и двух десятков. В ре-
платы для NeXT Dimension для сжатия
видеопотока с чипом CL550 ный (56001) процессоры, 8 Мб опера- зультате специально построенная для
тивной памяти (максимально 16 Мб), изготовления NeXT Computer полно-
нию, эта ОС так и не увидела свет). магнитооптический привод и, наконец, стью автоматизированная фабрика
Поэтому NEXTSTEP изначально пла- «оконный UNIX». Монохромный (4 от- NeXT Inc. выпускала всего 400 ком-
нировалась как объектно-ориентиро- тенка серого цвета) монитор для это- пьютеров в месяц.
ванная операционная система, в ко- го компьютера был изготовлен на ос- Джобс понимал, что с такими ус-
торой лёгкое микроядро взаимодейс- нове 17-дюймовой электронно-луче- пехами его компания долго не про-
твовало с отдельными библиотека- вой трубки Trinitron производства Sony существует, и поэтому принял реше-
ми, каждая из них отвечала за опре- и имел гигантское по тем временам ние начать продавать NeXT Computer
делённые функции ОС. Изначально разрешение – 1120 х 832 пикселей. всем желающим (изначально купить
в состав NEXTSTEP входили несколь- Вместе с NeXT Computer зрите- его могли только учебные учреж-
ко библиотек: Application Kit (рабо- лям был представлен лазерный при- дения и студенты). Для этого NeXT
та с приложениями), Music Kit (музы- нтер NeXT Laser Printer, внутренне яв- Inc. подписала договор с компанией
ка), Sound Kit (звук). Позже были до- лявшийся практически полной копи- Businessland, являвшейся в то время
бавлены и другие библиотеки, напри- ей LaserWriter II производства Apple. крупнейшим продавцом компьютеров
мер: 3d-Graphics Kit (работа с трёх- При разрешении 400 точек на дюйм на территории США. Businessland пла-
мерной графикой), Database Kit (базы устройство печатало до восьми стра- нировала реализовать в первый год
данных) и Driver Kit (работа с драйве- ниц в минуту. 10-15 тысяч систем, что в денежном эк-
рами устройств). Кстати, в середине Публика, присутствовавшая в Кон- виваленте должно было составить око-
90-х годов прошлого столетия из NeXT цертном зале симфонического оркес- ло 150 млн. долларов. Согласитесь, до-
Inc. в молодую тогда компанию Be Inc. тра Сан-Франциско, была настолько вольно оптимистичные прогнозы и не-
ушли несколько программистов, кото- поражена, что устроила Джобсу ова- малая сумма. Но базовая цена на NeXT
рые принесли в операционную систе- цию. Реакция прессы была также оче- Computer, предлагаемый Businessland,
му BeOS концепцию отдельных библи- видна. «Это поистине великая систе- составила 9995 долларов. В результа-
отек с названиями, похожими на тако- ма, которая по праву займёт почётное те к концу 1989 года компания смогла
вые в NEXTSTEP. место на пике всех существующих ны- продать лишь 360 компьютеров. По-
В качестве основного языка про- не компьютеров», – писали Том Томсон пытка выхода «в свет» закончилась
граммирования для этой ОС был ис- и Ник Берен в статье о NeXT Computer провалом. Фабрика по производству
пользован Objective-C, объектно-ори- для журнала «Byte». NeXT Computer теперь выпускала все-
ентированный вариант языка С. Однако новый компьютер имел го 100 систем в месяц.
ряд серьёзных недостатков, главным NeXT Inc. спасал лишь тот факт, что
Выход NeXT Computer из которых являлась незаконченная она являлась частной компанией, по-
в свет операционная система NEXTSTEP, этому имела право не разглашать ре-
Шёл 1988 год. Создание нового чудо- которая к моменту презентации NeXT зультаты своей финансовой деятель-
компьютера продолжалось на протя- Computer «добралась» лишь до вер- ности. В итоге лишь немногие знали,
жении двух лет, однако до заверше- сии 0.8. в сколь плачевной ситуации она пре-
ния работ было ещё далеко. Обещание Спустя некоторое время после пре- бывала.
Джобса представить NeXT Computer зентации компания начала поставки В июне 1989 года Canon, тесно со-
весной 1987 года кануло в Лету. ограниченного количества компьюте- трудничавшая с NeXT Inc., инвести-
К тому времени NeXT Inc. подписа- ров первым клиентам, устанавливая ровала в компанию 100 млн. долл.
ла стратегическое соглашение с кор- на них бета-версию NEXTSTEP 0.9. в обмен на 16,7% акций, а также экс-

88
ретроспектива
клюзивное право на продажи NeXT Отличие NeXT Cube (7995 долл.) от ка в моей жизни», – говорил он тогда.
Computer в странах Азиатского конти- NeXT Station заключалось лишь в воз- В результате Джобсу пришлось вло-
нента. Эта сумма подняла оценочную можности установки до 64 Мб ОЗУ жить дополнительные 10 млн. долла-
стоимость NeXT Inc. до гигантских 600 (штатно – 16 Мб), слотах расширения ров в свою компанию. Подобные вло-
млн. долл. Однако в то время в компа- NeXTbus, а также возможности уста- жения сделала и Canon, расставшись
нии работали всего 200 сотрудников, новки видеоадаптера NeXT Dimension. с 55 миллионами.
а о доходе не могло быть и речи. Последний наделял NeXT Cube воз- Однако весь мир был в неведении
можностью работать с 32-битным цве- о трудностях NeXT Inc. Джобс разгла-
Призрачная надежда том. Внешне же он ничем не отличал- гольствовал о «светлом будущем»
Что же касается новых разработок, ся от NeXT Computer. своей компании и предпочитал вмес-
в конце 1989 года состоялся долго- К сожалению, трудности компа- то цифр о финансовом состоянии сво-
жданный выпуск версии 1.0 операци- нии Motorola с выпуском процессо- ей компании говорить о будущих но-
онной системы NEXTSTEP. Главным ра 68040 привели к задержке старта винках.
её нововведением стало появление продаж новых компьютеров до мар- 22 января 1992 года в Сан-Фран-
пакета для разработки приложений та 1991 года. циско NeXT Inc. организовала первую
Interface Builder, являвшегося анало- Что же касается нововведений выставку NeXT World, на которой пред-
гом современных сред визуального NEXTSTEP 2.0, стоит отметить поя- ставила NEXTSTEP 3.0 и NEXTSTEP
программирования. вившуюся файловую систему NFS 486. Новая ОС поддерживала 7 ми-
Не стояли в сторонке и инженеры (Network File System) компании Sun ровых языков, имела новые библио-
компании. В январе 1990 года в NeXT Microsystems, поддержку дисководов, теки для работы с 3D-графикой и ба-
Inc. стартовал проект «Основа 9» CD-ROM, факсов, и модемов. Кроме зами данных, а также поставлялась
(Warp 9), целью которого являлась пе- того, был переработан и улучшен окон- с полной копией пакета RanderMan
реработка NeXT Computer для сниже- ный менеджер Workspace Manager. компании Pixar (которую Джобс при-
ния цены до изначально планировав- После того как в 1990 году корпора- обрёл у LucasFilm ещё в 1986 году).
шихся 3 тыс. долл. ция IBM объявила о прекращении со- ОС NEXTSTEP 486 (с выходом Pentium
Через месяц после старта «Осно- трудничества с NeXT Inc. и подписании позже переименованная в NEXTSTEP
вы 9», не выдержав всё возрастающе- нового контракта с Apple, Росс Перот for Intel Processors) предназнача-
го напряжения внутри компании, NeXT начал обвинять Джобса в пустой тра- лась для работы с ПК и была ответом
Inc. покинули первые сотрудники. Сре- те денег и производстве компьютеров Microsoft на выпуск Windows 3.1.
ди них был Даниель Левин – один из собственными силами компании. Осо- NeXT Inc. также представила бо-
пятёрки первых инженеров Apple, за- бенно его вывели из себя результаты лее дешёвые Turbo-версии своих ком-
вербованных Джобсом. финансового квартала 1991 года, ког- пьютеров (оснащённых процессорами
Сам проект, несмотря на потрачен- да доход, составивший 28 млн. долла- 68040 с частотой 33 МГц), однако всё
ные на него шесть месяцев, оправдал ров, после изымания налогов и про- было напрасно.
себя, и 18 сентября 1990 года NeXT Inc. чих издержек превратился в чистый К концу года компанию покинули
объявила о выпуске сразу трёх новых «ноль». На протяжении шести лет свое- женившиеся Бад Трайббл и Сьюзен
моделей своих компьютеров, а также го существования компания работала Бернес, а также Рич Пейдж. Из пятёр-
NEXTSTEP 2.0. себе в убыток. ки первых сотрудников NeXT Inc., за-
NeXT Station представляла собой К концу второго квартала, несмот- вербованных Джобсом из Apple, остал-
результат «Основы 9»: компьютер, ря на увеличившийся до 46 млн. дол- ся лишь Джордж Кроу.
по своим характеристикам отличав- ларов доход, продажи NeXT Inc. упали Главная же неожиданность жда-
шийся от NeXT Computer более быс- на 50%, и разочарованный Росс Перот ла Стива в середине 1992 года. Питер
трым процессором 68040, работаю- ушёл из компании, продав свои 16% ван Кайленберг, нанятый им в мар-
щим на частоте 25 МГц, возможнос- акций. «Я не должен был давать им де- те на пост исполнительного директо-
тью установки до 32 Мб ОЗУ (стандар- ньги. Это была самая большая ошиб- ра, предал Джобса, тайно предложив
тно – 8 Мб), а также штатными флоппи- президенту Sun Скоту МакНили купить
дисководом и жёстким диском. Мини- NeXT Inc., уволить Стива и отдать ему
атюрный корпус NeXT Station, над ди- пост генерального директора. Однако
зайном которого работала Frog Design, честный МакНили предварительно поз-
имел размеры всего 397 х 364 х 64 мм. вонил Джобсу и предупредил о пред-
Правда, цена всё равно была выше ложении. Ван Кайленберг был с позо-
планируемой – 4995 долл. Заплатив ром выкинут из компании, однако ос-
на три тысячи больше, пользователь нователь NeXT Inc., наконец, не выдер-
получал NeXT Station Color, которая, жал и сдался.
кроме увеличенного до 12 Мб объёма
оперативной памяти, отличалась на- Рисунок 10. Сторонними компаниями
«Чёрный вторник»
личием в комплекте нового 16-дюй- для компьютеров NeXT было выпущено 10 февраля 1993 года (впоследс-
мового монитора, способного отобра- несколько плат-акселераторов. твии названный «чёрным вторни-
На снимке – NeXT Nitro с 40 МГц
жать 4096 цветов. процессором 68040 ком») NeXT Inc. официально объяви-

№7, июль 2006 89


ретроспектива
ядро Mach и переписать низкоуров-
невые серверы для работы с Solaris.
Уже 30 июня 1994 г. компания опуб-
ликовала спецификации будущей
OpenStep.
Однако под конец года стало из-
вестно, что «Каир» от Microsoft – не бо-
лее чем рекламная пустышка, пос-
ле чего Sun потеряла всякий инте-
рес к OpenStep и сконцентрировалась
на доработке языка Java.
Тем не менее NeXT Inc. не расстро-
илась и в конце 1994 года выпусти-
ла готовый продукт, причём не толь-
ко для Solaris, но и для операцион-
ных систем Windows, HP-UX и MacOS.
OpenStep сразу же нашла себе пок-
лонников, в результате чего в нача-
ле 1995 года при объявлении финан-
совых результатов за истёкший квар-
Рисунок 11. Скриншот OpenStep тал NeXT Inc. впервые отрапортова-
ла о получении прибыли в один мил-
ла, что из-за катастрофических убыт- правила бал компания Sun. Послед- лион долларов.
ков, составивших 250 млн. долларов, няя была обеспокоена возможностью В 1995 году компания представи-
прекращает производить компьюте- возникновения нового серьёзного со- ла пакет WebObjects, предназначен-
ры и отныне будет концентрировать- перника. ный для создания сложных динами-
ся лишь на совершенствовании и про- 23 ноября 1993 года компания Sun ческих интернет-сервисов на основе
движении на рынок NEXTSTEP. В свя- подписала с NeXT Inc. договор, соглас- баз данных. В 1996 г. количество кли-
зи с этим компания изменила своё на- но которому объектно-ориентирован- ентов, лицензировавших WebObjects
звание на NeXT Software Inc., а также ное окружение NEXTSTEP (но не вся у NeXT Inc., перевалило за 275 ком-
сократила численность своего персо- ОС) будет перенесено на операцион- паний, среди которых фигурировали:
нала с 530 до 200 человек. Автомати- ную систему Solaris. В связи с этим Sun Dell, Chrysler, Nike, и Walt Disney. Из-
зированная фабрика по производству вложила в компанию 10 млн. долларов. вестный на весь мир онлайн-магазин
компьютеров перешла к Canon. Так стартовал проект OpenStep. iTunes компании Apple построен как
В завершение этого короткого, По большему счёту, всё, что необ- раз при помощи WebObjects.
но грустного подраздела немного ста- ходимо было сделать программистам Впервые за десять лет своего су-
тистики: компания Apple потратила NeXT Inc., – убрать из системы микро- ществования компания наконец-то ста-
всего 73 дня на то, чтобы продать 50
тысяч компьютеров Macintosh. В свою
очередь NeXT Inc. для реализации по-
добного количества своих систем по-
надобилось целых семь лет.

Планы на будущее
В дальнейшем, кроме платформы
х86, NEXTSTEP была перенесена
на рабочие станции Sun (архитектура
SPARC) и Hewlett-Packard (архитектура
PA-RISC), однако особого распростра-
нения из-за своей цены (995 долларов
за одну лицензию) не получила.
В 1993 году компания Microsoft пуб-
лично заявила, что в скором време-
ни выпустит объектно-ориентирован-
ную операционную систему, получив-
шую кодовое название «Каир» (Cairo).
С этой ОС компания собиралась вый-
ти на рынок объектно-ориентирован-
ных окружений, на котором до этого Рисунок 12. Скриншот Rhapsody, работающий на компьютере с процессором Pentium

90
ретроспектива
новилась на ноги. Однако, как извес-
тно, за небольшими, но потенциаль-
но успешными компаниями часто на-
блюдают их более зрелые конкурен-
ты. Нередко большая рыба для укреп-
ления собственных сил и авторитета
поглощает более мелких представи-
телей своего вида. То же случилось
и с NeXT Inc: Джобс даже не подозре-
вал, что Apple, с которой он порвал вся-
кие отношения, выберет его компанию
для покупки.

Возвращение на родину
К середине 90-х годов прошлого столе-
тия операционная система MacOS уже
не являлась чем-то особенным. Да, её
внешний вид и пользовательский ин-
терфейс всё ещё радовали глаз, одна-
ко внутри она стремительно устарева-
ла. Отсутствие вытесняющей многоза-
Рисунок 13. MacOS X 10.0 – реинкарнация NEXTSTEP
дачности, поддержки нескольких про-
цессоров, а также защищённого режи- не менее революционной, уже заслу- Первым делом были убраны все
ма памяти – вот список того, чем бо- жила место под солнцем среди раз- лицензированные ранее технологии,
ялась хвастаться MacOS. В Apple был личных исследовательских организа- например, Display PostScript была за-
создан проект операционной систе- ций, военных структур и финансовых менена на бесплатную Quartz. В 1997
мы нового поколения под кодовым на- учреждений. году Apple выпустила финальную вер-
званием «Copland», однако безрезуль- Ещё одна причина, перетягивав- сию OpenStep 4.2, а также бета-вер-
татная разработка шла на протяжении шая канат на сторону NeXT, – вели- сию Rhapsody, которая позже, пос-
двух с лишним лет, а после очередной колепные средства разработки новых ле выхода Rhapsody DR3, была пере-
выставки MacWorld в 1996 году, на ко- программ для этой ОС. Демонстрацию именована в MacOS X. В новой ОС бы-
торой обещанная ОС так и не была вы- работы Interface Builder, которой заве- ло принято отказаться от ядра Mach
пущена, общественность окончатель- довал сам Стив Джобс, было сложно в пользу его наследника – открыто-
но потеряла веру в неё. не назвать уникальной. В то время как го проекта Darwin. Кроме того, пуб-
У Apple была возможность лицен- владелец NeXT проводил перед соб- лике был представлен новый поль-
зировать другую операционную сис- равшимися очередной семинар, про- зовательский интерфейс под назва-
тему (ходили слухи о Solaris от Sun граммист из его компании начинал раз- нием Aqua.
и Windows NT от Microsoft), однако ком- работку нового приложения. Под конец На выставке Apple Expo 2000
пания выбрала другой путь – покупку семинара Джобс демонстрировал гото- в Париже Apple представила публике
ОС вместе с её владельцем. вую к работе программу. MacOS X Public Beta, ставшую самой
Первоначально в качестве потен- Точка над «i» в переговорах была коммерчески успешной платной бета-
циальной цели для покупки высту- поставлена 20 декабря 1996 года, ког- версией программы. Окончательный
пала Be Inc. с её операционной сис- да Apple Computer объявила о покупке же выпуск новой операционной систе-
темой BeOS, которая обладала все- NeXT Inc. за 427 млн. долларов (из ко- мы состоялся 24 марта 2001 года.
ми необходимыми качествами и к то- торых 130 млн. долларов Джобс забрал На сегодняшний день MacOS X
му же прекрасно работала на компью- себе). Сумма впечатляет, особенно многими названа наиболее совершен-
терах Macintosh. К сожалению, тайные по сравнению с жалкими 120 млн., ко- ной операционной системой, пред-
переговоры с владельцем Be Inc. Жа- торые Apple была согласна выплатить лагающей мощь UNIX вместе с про-
ном-Луи Гассе застопорились на цене, Гассе за его компанию. Однако этот стотой MacOS. «Ушки» NeXT, «торча-
которую он затребовал за свою компа- отчаянный шаг был единственным лу- щие» за этим выражением, трудно не
нию. К тому же, несмотря на свою ре- чиком света среди туч, постоянно сгу- заметить.
волюционность, BeOS в то время бы- щавшихся над головой Apple.
ла молодой чёрной лошадкой, которой Сразу же после приобретения NeXT 1. http://www.cnet.com
ещё предстояло пройти суровую школу Inc. проект «Copland» был закрыт, а его 2. http://www.osnews.com
жизни на компьютерах обычных поль- место занял новый – «Rhapsody», бла- 3. http://www.wikipedia.com
зователей. годаря которому OpenStep должна бы- 4. http://www.romain-moisescot.com
С другой стороны, на рынке дав- ла стать «MacOS нового поколения». 5. http://www.wired.com
но существовала NeXT Inc., операци- Руководство по переделке ОС взял 6. http://www.ex.com
онная система которой, являвшаяся на себя Ави Теваньян. 7. http://www.alyon.org

№7, июль 2006 91


книжная полка

Знакомство с Microsoft Visual


Studio 2005 Team System
Ричард Хандхаузен
ние «Знакомство с Team System», вы тестирования, эффективность мето-
ознакомитесь с общим обзором Team дической разработки). Тестировщики
System, а также из каких частей со- (рабочие элементы и тестирование, уп-
стоит эта система, team foundation равление тестами, отслеживание оши-
server (рассмотрены компоненты и ар- бок). Из части книги, посвященной ме-
хитектура), клиентские приложения тодикам и расширяемости, вы познако-
team system (рассмотрены средства митесь с Microsoft Solutions Framework,
для руководителей проекта, архитек- настройками и расширениями Team
торов, разработчиков и тестировщи- System, завершением работы над про-
ков). Во второй части рассмотрен ро- ектом, развертывание. В приложении
левой подход к разработке ПО. Каж- вы найдете справочник по конструкто-
дая из глав, входящая во вторую часть, рам распределенных систем, а также
рассматривает одну из ролей и функ- на примере рассмотрите создание но-
ции из продукта, которые предназна- вого проекта при помощи Team System.
чены для них. Руководитель проекта Весь изложенный материал написан
(организация команды, начало рабо- простым и доступным языком.
Сложно представить себе создание ты над новым проектом, управление).
программных продуктов командой про- Архитекторы (роль архитектора, конс-  Издательство: «Питер»
граммистов без удобной среды разра- труктор распределенных систем, логи-  Год издания: 2006
ботки. Из этой книги вы узнаете о но- ческого центра данных, систем, а также  Количество страниц: 416
вом продукте от компании Micorsoft – развертывания). Разработчики (про-  ISBN: 5-469-01218-2
Visual Studio 2005 Team System. В пер- смотр рабочих элементов, управление  Цена: ≈ 285 руб.
вой части книги, которая носит назва- версиями, интегрированные средства Книга предоставлена издательством «Питер».

Мир программирования.
Основы современных алгоритмов
Дж. Макконнелл
математическими сведениями. В пос- стых параллельных операциях, а так-
ледующем каждая из глав посвящена же о основных алгоритмах сортиров-
одному из классов алгоритмов. Сре- ки и поиска. Достаточно подробно рас-
ди рассмотренных алгоритмов поиска сказано о недетерминированных ал-
и выборки: последовательный и дво- горитмах. Из приложения вы узнае-
ичный поиск. Алгоритмы сортировки: те о случайных и псевдослучайных
пузырьковая, корневая, пирамидаль- числах, элементах теории алгорит-
ная, сортировка Шелла. Не остались мов, оценки трудоемкости. В завер-
без внимания и сортировка вставка- шении каждой из глав, вашему вни-
ми, слиянием, а также быстрая сор- манию будут предложены упражнения
тировка. Численные алгоритмы: вы- для самоконтроля усвоения материа-
числения значений многочленов, ум- ла. Ответы на все задания вы найде-
ножение матриц, решение линейных те в приложении. Замечательная кни-
Ни для кого не секрет, что от правиль- уравнений. га, которую можно порекомендовать
ности выбора алгоритма для реше- Рассмотрены алгоритмы срав- программистам.
ния той или иной задачи зачастую за- нения с образом. Алгоритмы на гра-
висит успешность реализации проек- фах: основные понятия теории гра-  Издательство: «Техносфера»
та. В этой книге автор рассматрива- фов, структуры и данные для пред-  Год издания: 2004
ет практически все наиболее извест- ставления графов, алгоритмы обхода  Количество страниц: 368
ные алгоритмы для разного рода за- в глубину и по уровням, а также поис-  ISBN: 5094836-005-9
дач. В первой главе вы познакомитесь ка кратчайшего пути. Из главы «Па-  Цена: ≈ 200 руб.
с основами анализа алгоритмов ине- раллельные алгоритмы» вы узнаете Книга предоставлена издательством «Тех-
обходимыми для дальнейшей работы о параллелизме, модели PRAM, про- носфера».

92
книжная полка

Oracle 9i. Программирование на языке


PL/SQL
Скотт Урман
PL/SQL Developer). Этот материал будет триггеров, а также изменяющиеся таб-
полезен прежде всего людям, которые лицы). В приложении вы найдете руко-
только начинают работать с PL/SQL. водство по работе со встроенными мо-
Часть, которая носит название «Ба- дулями и зарезервированные слова pl/
зовые свойства PL/SQL», представ- sql. Замечательное издание, которое
лена следующим материалом: осно- окажется полезным как программис-
вы PL/SQL (лексические единицы, ти- там, так и администраторам DB Oracle.
пы, выражения и операции, управля- Нельзя не отметить, что несмотря на до-
ющие структуры), использование SQL статочную сложность излагаемого ма-
в PL/SQL (DML, псевдостолбцы, при- териала, книга легко читается, и вся ин-
вилегии, управление транзакциями), формация изложена в доступном виде.
встроенные функции SQL (числовые, На прилагаемом к книге диске вы най-
дата и время, преобразования), курсо- дете примеры из книги, а также trial-
ры (циклы выборки, переменные), об- версии некоторых из упомянутых в из-
Среди множества книг, посвященных работка ошибок (понятие исключитель- дании программ.
PL/SQL, эту отличает хотя бы то, что ных ситуаций, а также рекомендации по
она является официальным авторизо- их использованию), сборные конструк-  Издательство: «Лори»
ванным изданием от Oracle. В первой ции. Освоив третью часть книги «До-  Год издания: 2006
части книги автор познакомит вас с на- полнительные возможности PL/SQL»,  Количество страниц: 528
чальными сведениями о PL/SQL, сре- вы научитесь создавать и использовать  ISBN: 5-85582-225-7
дами, в которых он выполняется и раз- процедуры, функции и модули. Не оста-  Цена: ≈ 380 руб.
рабатывается (SQL *Plus, Rapid SQL, лись без внимания и триггеры (освеще- Книга предоставлена Издательским домом
SQL Navigator, TOAD, SQL-Programmer, ны вопросы создания и использования «Вильямс».

Руководство по технологиям
объединенных сетей
Cisco system inc
ренных тем: основы теории объеди- талоги, сетевое кеширование, удален-
ненных сетей, технологии локальных ный мониторинг, протокол SNMP, QoS).
сетей (Ethernet, FDDI), распределен- В конце каждой из глав находятся кон-
ные сети (рассмотрены протоколы трольные вопросы, которые помогут
Frame Relay, PPP, SDLC, X.25, техно- лучше усвоить прочитанный матери-
логия ISDN). Раздел «Технологии муль- ал. В приложении вы найдете ответы
тисервисного доступа» представлен на контрольные вопросы, а также крат-
материалом о беспроводных техно- кую информацию о технологиях Token
логиях, а также кабельных и оптичес- Ring, Xerox Network system и Banyan
ких сетях, цифровых абонентских ка- VINES. Хорошая книга, которая может
налах, VoIP, протоколах динамической послужить настольным справочником
транспортировки пакетов. Мосты и пе- для широкого круга системных и сете-
реключатели (прозрачное соединение вых администраторов.
Эта книга – четверное издание фун- сетей, коммутируемые локальные се-
даментального труда, посвященного ти и сети VLAN, MPLS, DLSw). Сетевые  Издательство: «Вильямс»
современным сетевым технологиям. протоколы (IP, IPv6, NetWare, AppleTalk,  Год издания: 2005
В этой книге, носящей статус спра- DECnet). Очень подробно рассмотре-  Количество страниц: 1040
вочного издания, освещены факти- ны все основные протоколы маршру-  ISBN: 5-8459-0787-X
чески все сетевые протоколы и тех- тизации (GP, EIGRP, IGRP, NSLP, OSPF,  Цена: ≈ 950 руб.
нологии, используемые в настоящее RIP, RSVP, SMRP). Управление сетями Книга предоставлена Издательским домом
время. Нельзя не отметить, что кни- (технологии защиты сетей, сетевые ка- «Вильямс».
га грамотно структурирована и удач-
но поделена на части. Среди рассмот- Обзор книжных новинок подготовил Александр Байрак

№7, июль 2006 93


подписка на 2006 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
 Подписной индекс: годовой – 20780, полугодовой – 81655  Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
 Подписной индекс: 87836  Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом»  Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
 Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве  Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru  Грузия – по списку номенклатуры «АРЗИ» через АО
 Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru  Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»:  Подписка для Украины:
 Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220

Подписные
индексы:

20780*
81655**
по каталогу
агентства
«Роспечать»

87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой

№7, июль 2006 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№7(44), Июль, 2006 год

УЧРЕДИТЕЛИ
ЧИТАЙТЕ
Владимир Положевец
Александр Михалев В СЛЕДУЮЩЕМ
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец
НОМЕРЕ:
РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец Маленькая ный подход со стандартными старто-
Ответственный секретарь телекоммуникационная выми скриптами. Рассмотрим, как это
Наталья Хвостова революция сделать на примере SUSE Linux.
sekretar@samag.ru Крупные конференции позволяют
Технический редактор взглянуть на казалось бы давно знако- Аудит
Владимир Лукин мых людей с другой стороны. На про- и дизассемблирование
Редактор шедшем в конце июня мероприятии эксплоитов
Алексей Коршунов
Interop Moscow представилась возмож- Эксплоиты, демонстрирующие нали-
Внештатные редакторы
ность пообщаться со многими предста- чие дыры (proof-of-concept), обычно
Алексей Барабанов
Сергей Супрунов вителями ИТ-индустрии, прямым обра- распространяются в исходных текстах,
зом повлиявшими на ее положение се- однако, основной функционал заклю-
РЕКЛАМНАЯ СЛУЖБА годня. Один из них – Марк Спенсер – чен в shell-коде, анализ которого пред-
тел./факс: (495) 628-8253 благодаря своей увлеченности в от- ставляет весьма нетривиальную за-
Евгения Тарабрина крытом ПО и стечению обстоятельств дачу, требующую инженерного скла-
reсlama@samag.ru смог совершить маленькую револю- да ума, развитой интуиции, обширных
цию в телекоммуникациях... Он пода- знаний и… знания специальных при-
Верстка и оформление рил миру мощную, а главное свобод- емов дизассемблирования, о которых
maker_up@samag.ru ную, замену дорогостоящим коммер- и пойдет речь в следующем номере.
Дизайн обложки
ческим PBX – Asterisk. Марк поделил-
Николай Петрочук
ся мыслями об этом продукте и об от- Windows Firewall:
По вопросам распространения крытом ПО вообще в интервью «Сис- защищаем внутренние
обращайтесь по телефону: темному администратору» сразу после ресурсы сети
(495) 628-8253 (доб. 120) своего выступления на Interop, завер- Современные средства защиты корпо-
шившего конференцию по VoIP. ративных ресурсов от внешних угроз
107045, г. Москва, разнообразны, существуют как аппарат-
Ананьевский переулок, дом 4/2, стр. 1 Современный Linux ные и программные межсетевые экра-
тел./факс: (495) 628-8253 сервер: виртуализируем ны, так и системы обнаружения вторже-
Сайт журнала: www.samag.ru сетевые устройства ния, разбирающие IP-пакеты до уровня
ИЗДАТЕЛЬ
Часть 2 приложений, а также шлюзовые антиви-
Перевод сетевых интерфейсов в кате- русы фильтрующие определенный вид
ЗАО «Издательский дом
горию виртуальных не выйдет за рам- трафика. А что происходит с защитой
«Учительская газета»
ки занимательного эксперимента ресурсов внутренней сети? Рассмотрим,
Отпечатано типографией без четкого практического алгорит- как защищать рабочие станции с помо-
ГП «Московская Типография №13» ма, который позволяет сочетать дан- щью Windows Personal Firewall.
Тираж 11000 экз.

Журнал зарегистрирован Уважаемые читатели!


в Министерстве РФ по делам печати,
телерадиовещания и средств массо- Спешите оформить подписку
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.).
на второе полугодие 2006 года!
Приобрести новые и старые номера журнала
За содержание статьи ответственность
несет автор. За содержание рекламно- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
го объявления ответственность несет
рекламодатель. Все права на опубли-
кованные материалы защищены.

Доставка почтой в любую точку России.

96