98
Роспечать – 20780, 81655 Пресса России – 87836 Интер-почта – тел. (495) 500-00-60 Так видит журнал читатель, который забыл оформить подписку: ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Так видит журнал читатель, оформивший подписку: НОВОГОДНИЕ КАНИКУЛЫ ЗАТЯНУЛИСЬ БЫСТРО РАСКУПИЛИ ТИРАЖ НЕОЖИДАННО ЗАКОНЧИЛИСЬ ДЕНЬГИ УЕХАЛ В ОТПУСК ПОСЛЕ ОТПУСКА АВРАЛ НА РАБОТЕ №5(30) май 2005 подписной индекс 81655 www.samag.ru Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl №5(30) май 2005 подписной индекс 81655 www.samag.ru Почему MS SQL медленно работает? Ищем причины Строим защищенную беспроводную сеть: WPA-Enterprise, 802.1x EAP-TLS Настраиваем UPS под Linux Как восстановить удаленные файлы под BSD Что важно знать об IP-телефонии танавливаем Symantec Antivirus 9.0 в корпоративной сети Эффективно управляем полями пользователей в AD Контролируем безопасность сети с помощью OSSIM Интервью с Ларри Уоллом – создателем языка Perl №7(44) июль 2006 №7(44) июль 2006 подписной индекс 20780 www.samag.ru Greylisting: хуже спама – только борьба со спамом! StressLinux : а втоматизируем тестирование железа Устанавливаем Systems Management Server 2003 FreeNAS: строим надежную систему хранения данных Как увеличить безопасность процессов посредством chroot и jail OpenVPN: доступ повышенной проходимости Статистика прокси-сервера Squid Интервью с легендарным Расмусом Лердорфом – создателем языка PHP

044 Системный Администратор 07 2006

Embed Size (px)

DESCRIPTION

№7(44) июль 2006 подписной индекс 20780 www.samag.ru Н Е О Ж И Д А Н Н О Б Ы С Т Р О Р А С К У П И Л И Т И Р А Ж Н О В О Г О Д Н И Е П О С Л Е О Т П У С К А А В Р А Л Н А Р А Б О Т Е №7(44) июль 2006 Почему MS SQL медленно работает? Ищем причины Почему MS SQL медленно работает? Ищем причины Настраиваем UPS под Linux

Citation preview

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

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

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

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

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

НОВОГОДНИЕ

КАНИКУЛЫ

ЗАТЯ

НУЛИСЬ

БЫСТР

О РАСКУПИЛИ

ТИРА

Ж

НЕОЖ

ИДАННО

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

ЕНЬГИ

УЕХАЛ В

ОТП

УСК

ПОСЛЕ ОТП

УСКА

АВРАЛ Н

А РАБОТЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

№7(

44)

июль

200

6

№7(44) июль 2006подписной индекс 20780www.samag.ru

Greylisting: хуже спама –только борьба со спамом!

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

Устанавливаем Systems Management Server 2003

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

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

OpenVPN: доступ повышенной проходимости

Статистика прокси-сервера Squid

Интервью с легендарным Расмусом Лердорфом – создателем языка PHP

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

1№7, июль 2006

в номере

ТЕНДЕНЦИИ5

Как работает Sendmail? Полезные подробности. Часть 3

23

Сергей Супрунов[email protected]

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

Roaring Penguin CanIt: ведём борьбу со спамом

16

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

Простое в установке, настройке и последующей экс-плуатации антиспам-решение.

ИНТЕРВЬЮ

Расмус Лердорф6

Дмитрий Горяинов[email protected]

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

ВЕБ-ПРОГРАММИРОВАНИЕ

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

Кирилл Сухов[email protected]

Что ожидается в новой версии PHP?

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

Greylisting: панацея от спама или «мыльный пузырь»?

12

Сергей Супрунов[email protected]

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

Статистика прокси-сервера Squid32

Павел Малахов[email protected]

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

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

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

Сергей Рыжиков, директор компании «Битрикс», про-тив аутсорсинга, пиратов и интернет-шантажа.

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

СЕТИ

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

Рашид Ачилов[email protected]

Запускаем и настраиваем программу BIND, регистрируем доменное имя, дожидаемся завершения тестов – и мож-но раздавать друзьям адреса [email protected]!

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

48

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

Как переносить данные с различных носителей в цен-трализованное хранилище? Как строить системы хра-нения информации в небольших организациях?

Автоматизируем тестирование железа с помощью StressLinux

42

Дмитрий Волков[email protected]

Создаем инструмент для автоматического тестирова-ния железа всех узлов локальной сети.

OpenVPN: доступ повышенной проходимости53

Алексей Коршунов[email protected]

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

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

Как увеличить безопасность процессов с помощью chroot и jail

Василий Озеров[email protected]

Каковы преимущества и недостатки сhroot и jail – двух разных способов изолировать процесс от основной файловой системы?

78

Устанавливаем и настраиваем Systems Management Server 2003

60

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

Рутинную работу по установке и обновлению ПО луч-ше доверить System Management Server.

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

84

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

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

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

Возможности технологии MS Windows SharePoint ServicesЧасть 2

64

Иван Хрипунов[email protected]

Что делать, когда требуется расширить функциональность технологии WSS и улучшить внешний вид веб-узла.

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

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

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

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

взяли?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

«Бред юзера или явь сисадмина»?Завершением программы празднования станет выход в свет второго тома книги «Бред юзера или явь сисадмина», своеобразного сборника сисадминских историй, баек, стихов, первый том которого был издан два года назад.Примечательно, что сайт http://sysadmin.mail.ru был создан в 2004 году как раз в связи с празднованием Дня сисадмина. Тогда на этом ресурсе проводили конкурс «Сисадмин тоже человек», организованный http://soft.mail.ru. Оказалось, что тема, несмотря на свою специфичность, очень востребована. Название конкурса трансформировалось в название сайта, который стал активно развиваться. День Системного Администратора – отличный повод собраться вместе на сайте или в родном городе. Пусть он пройдет так, чтобы было о чем вспомнить. До скорых встреч!

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

Полина Трояновская, руководитель проекта «Сисадмин@Mail.Ru»

Спасибо Теду Кекатосу за профессиональный праздник

Page 5: 044 Системный Администратор 07 2006
Page 6: 044 Системный Администратор 07 2006
Page 7: 044 Системный Администратор 07 2006

5№7, июль 2006

тенденции

Вышел Linux-дистрибутив Xandros 4.0Во второй половине июня был анонсирован релиз Linux-дистрибутива Xandros 4.0, нацеленного на Windows-поль-зователей.

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

Закон приняли. Поправки отклонилиКак и предсказывал «Системный администратор» в кон-це июня Госдума поставила точку в нашумевшей исто-рии с запретом зарубежного софта (№6 за 2006 год).

Проект федерального закона «Об информации, инфор-мационных технологиях и защите информации» во втором чтении поддержали 395 из 450 депутатов. И также актив-но думцы… промолчали по поводу двух поправок, касаю-щихся запрета использования зарубежных программно-тех-нических средств в стратегических отраслях и особо важ-ных объектах, а также недопустимости наличия в данных средствах недокументированных функций. Авторы попра-вок, единороссы Геннадий Гудков и Александр Хинштейн, вынесли их на отдельное голосование. Но подавляющее большинство депутатов – 382 и 386 – просто уклонились от процедуры, демонстративно проигнорировав все воз-можные позиции – «за», «против», «воздержался». «По су-ти это был саботаж, невыполнение прямых обязанностей народных избранников», – сказал «Системному админис-тратору» Дмитрий Горовцов, помощник депутата Госдумы РФ Геннадия Гудкова. Только 65 и 63 депутатов при голосо-вании за первую и вторую поправки определились со сво-ей позицией и нажали кнопку «за».

Таким образом «зеленый свет» дан и зарубежному соф-ту в России, и прославившемуся законопроекту. «В целом, – пообещал Председатель Госдумы Борис Грызлов, – мы при-мем его до конца текущей сессии».

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

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

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

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

Xandros позиционируется как удобная в использовании операционная система, призванная стать заменой Windows. Так, целевой аудиторией для Xandros в первую очередь яв-ляются корпоративные пользователи, желающие пере-вести рабочие станции с Windows NT/2000 на GNU/Linux. И поскольку интерфейс Xandros создавался с этими наме-рениями, он по возможности приближен к привычному ви-ду Windows.

Кроме того, в состав Xandros вошли различные специ-ализированные коммерческие продукты, такие как NTFS-драйверы для Linux от Paragon Software, и CrossOver Office от CodeWeavers.

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

Те, кто следит за развитием проекта, вряд ли удивил-ся этому событию. Пояснение было дано на официальном сайте FreeDOS.org: «28 июня 1994 года проект, которым стал FreeDOS, явился миру. Через 12 лет мы так и не до-стигли релиза «1.0», и нет никаких намеков на то, что это произойдет в обозримом будущем. Я сдался. Я перестал ждать «1.0». FreeDOS мертв».

Смерть проекта ознаменовалась переездом домашней страницы FreeDOS на популярный хостинг SourceForge – http://freedos.sourceforge.net.

Составил Дмитрий Шуруповпо материалам www.nixp.ru

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

6

интервью

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

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

Господин Лердорф, вы впервые в нашей стране, с чем это связано, почему именно сейчас вы приеха-ли к нам?Да, это мой первый визит, хотя я давно интересуюсь вашей страной. Я много читал и много знаю о России и хотел побывать здесь. Почему именно сей-час? Даже не знаю. Никакой особой причины тут нет. Я стараюсь посещать конференции, на которые меня пригла-шают, если есть время и возможность. Меня пригласили, была возможность приехать, и я приехал.

Вы автор-разработчик языка PHP, и в то же время один из сотрудников

Yahoo!. Есть ли здесь связь? Как вы совмещаете одно с другим?Да, несомненно, это связано. Yahoo! очень широко использует PHP, а я был его изобретателем и продолжаю много работать над его развитием. Они прос-то наняли меня для того, чтобы я по-мог им с PHP.

Господин Лердорф , вы многократно говорили, что PHP – это труд очень многих разработчиков и вы всего лишь один из первых. Какова ваша роль в развитии языка, в принятии ключевых решений сейчас?Действительно, PHP – это коллектив-ный труд, и продукт сотрудничества многих и многих людей. И хотя кто-то, как я, работает в проекте с самого на-чала, имеет больший опыт, написал больше кода, чем новые люди, такого человека, который говорит всем «да» или «нет» по поводу тех или иных ре-шений, просто не существует. И уж, ко-нечно, я не тот человек. Люди, которые пишут код, выполняют основную рабо-ту, именно они в конечном итоге выра-батывают и принимают коллективное решение о том, что включать в конеч-

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

С момента выхода PHP-3 до PHP-4 прошло довольно много времени, и визуальная разница между эти-ми версиями языка для пользова-теля весьма ощутима. Так же много времени и различий отделяют друг от друга PHP-4 и PHP5. На первый взгляд основное отличие будущей версии – исключительно во встро-енной поддержке Unicode. С точ-ки зрения конечного пользователя, эта смена версий может показаться не настолько очевидной. Что вы мо-жете сказать об этом?Смена версии происходит всякий раз, когда у нас накапливаются достаточно

Расмус Лердорф: «Вы думаете, что 11 лет назад я решил разработать язык сценариев, которым будут пользоваться во всем мире!?»

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

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

7№7, июль 2006

интервью

серьезные изменения в коде. И внед-рение поддержки Unicode относится именно к таким.

Кроме того, номер версии – это не только цифра для конечного поль-зователя. Это завершение некоторо-го этапа для людей, которые созда-ют код PHP. И мы должны это четко обозначить.

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

Дело в том, что проблеме Unicode посвящено множество внешних рас-ширений и частных решений. Теперь же мы, наконец, смогли встроить не-посредственно в PHP, и внутренние различия между 5-й и 6-й версиями очень велики. Эти изменения могут отразиться на разрабатываемых про-граммах. В рамках одной версии мы стараемся соблюсти преемственность в поведении программ. Если что-то ра-ботает у вас в версии 5.1, то оно будет работать и в версии 5.2 и в версии 5.3. Таким образом, мы добавляем новые модификации и исправления. Но все это допустимо только до тех пор, пока не происходит качественный скачок. И этот скачок – PHP-6.

PHP все время сравнивают с други-ми языками и технологиями – ASP, JSP, Python или Ruby On Rails. А ко-го вы сами видите в качестве глав-ного конкурента? На что ориенти-руетесь при выборе стратегии раз-вития языка?Наша основная цель – решение пов-седневных проблем, возникающих в Web. И мы создаем средство для ре-шения таких проблем и всегда фокуси-руемся на том, чтобы решить возник-шую проблему, а не на том, как это бу-дет укладываться в какую-нибудь кон-цепцию развития языка. Конечно, есть другие подходы, и другие инструмен-тальные средства строятся совершен-но иначе. Там люди могут проделывать массу работы для того, чтобы ответить, например, на вопрос: «Как мне решить эту задачу с помощью Python?» Пос-кольку Python – универсальный язык и с его помощью можно делать мас-

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

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

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

PHP-5 – это объектная ориентация. Это поддержка классов, использо-вание шаблонов программирова-ния, внедрение статистических ме-тодов и т. п. Вместе с тем довольно долгое время PHP был скорее про-цедурным языком. К чему больше тяготеете вы сами? К процедурно-му или объектно-ориентированно-му подходу?Я использую смесь обоих подходов. Мне нравится смешивать процедуры с объектами. Когда я думаю о чем-то как о целом объекте, я и делаю это объек-том. Разумеется, есть люди, которые стремятся сделать свой код полностью объектно-ориентированным. Но ко мне это не относится. Для меня это пример-но 50 на 50. В публичных выступлени-ях я часто использую процедуры, что-бы сохранить простоту и наглядность. Для того чтобы продемонстрировать какое-то действие, мне не нужен объ-ектный код, к тому же он будет более длинным. Объектно-ориентирован-ный слой может лежать где-то глубо-ко внутри, а поверх него будет сущес-твовать простой и понятный сценарий с процедурным кодом. Скажем так, в PHP никогда не было объектов ради самой идеи объектов. И это действи-

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

Самая распространенная для веб-проектов платформа – это UNIX + Apache. Однако в последнее время очень много разговоров о том, что такое сочетание уже не удовлетво-ряет запросам веб-проектов с боль-шим трафиком и высокой пользова-тельской посещаемостью. Возника-ют решения, построенные на осно-ве других веб-серверов с использо-ванием FastCGI. Что вы можете ска-зать по этому поводу?У нас есть поддержка FastCGI, и, дейс-твительно, не так давно мы продела-ли большой объем работ в этом на-правлении. Кроме того, нашим основ-ным принципом остается открытость. Если кто-то заинтересован в том или ином новом решении, он может при-соединиться к проекту и реализовы-вать свою идею. Но, в любом случае, мы ориентируемся на большинство на-ших пользователей. В конечном итоге большинство использует PHP под UNIX-подобными системами и веб-сервером Apache, и первоочередные изменения и исправления делаются именно для этой платформы. В качестве примера можно рассмотреть СУБД Informix. Она может работать, скажем, под управле-нием ОС Novell. Но людей, использую-щих в такой связке PHP, будет, навер-ное, трое во всем мире. Да, их сооб-щения об ошибках будут учитываться, но рассматривать их будут в послед-нюю очередь.

Поэтому приоритетной для нас по-прежнему остается платформа UNIX-Apache-PHP.

То есть у себя в Yahoo! вы остаетесь верными связке с Apache, и, несмот-ря на большую популярность и по-сещаемость, вы не ощущаете про-блем ресурсоемкости и т. п.?Я не думаю, что тут вообще есть ка-кая-либо проблема. Это работает уже много-много лет. FreeBSD и веб-сер-вер Apache – это очень простое, эф-фективное решение. И оно действи-тельно хорошо работает.

Если не секрет, какова доля PHP-разработок в Yahoo!?Сейчас в Yahoo! PHP использует-

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

8

интервью

ся, примерно в 80-90% процентах за-дач. Конечно, мы используем и C/C++ код. PHP – это верхний слой, уровень представления, уровень веб-сервера, а большая часть «тяжелой» бизнес-ло-гики написана на С++.

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

Вы приехали к нам вместе с одним из активных разработчиков ядра Ан-дреем Змиевским, и вы автор язы-ка и по-прежнему остаетесь одним из вдохновителей проекта PHP. Что мы можем ожидать в будущем? Есть ли уже сейчас какие-то планы даль-нейшего развития, новой версии?В PHP-5 мы решали проблемы раз-работки веб-сервисов, переработали поддержку XML и т. п. Слишком мно-го людей были недовольны тем, как это было решено в PHP-4, так что нам пришлось бросить все силы на то, что-бы это улучшить. И сейчас аналогич-ная ситуация породила необходимость PHP-6: очень многие пользователи ис-пытывают проблемы с использовани-ем функций mb_string и вынуждены ис-кать обходные пути решения этих про-блем. Сейчас все большее количество разработчиков стремятся сделать свои веб-проекты в полной мере интерна-циональными, с полноценной много-язычной поддержкой. В рамках PHP-5 это не так просто, как нам бы хотелось. И решение этой проблемы – главный мотив, главная цель PHP-6.

Вы спрашиваете меня, что будет в PHP-7? Какова следующая цель? Это все равно, как если бы вы спросили ме-ня: «А каким будет Web? Что произой-дет в Web в следующие три года?» Ес-ли бы я только знал! А вот, например: мы все заработаем кучу денег!

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

из них – это, маленькая лаборатория по изучению насущных проблем. И то, в чем будут заинтересованы эти лю-ди, на то и будет нацелен PHP. Потому что само PHP и есть сообщество. Не я, не Андрей Змиевский – никто отдельно! Да, мы многое делаем в проекте, и, воз-можно, поэтому наш голос звучит более авторитетно, чем голос других участ-ников. Но если завтра мы с ним сой-дем с ума и начнем нести полную чушь, мы услышим в свой адрес крепкое ру-гательство. Точно так же, как и любой другой член сообщества. Мы должны находить взаимопонимание со всеми остальными участниками. Именно со-общество в целом и возникающие пе-ред его членами задачи решают, ку-да и каким путем пойдет PHP дальше. В каком направлении пойдет Web, туда вслед за ним пойдет и PHP.

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

Вопрос, который наверняка зада-ют вам постоянно: что автор языка вкладывал в аббревиатуру PHP?В самом начале я назвал это Personal HomePage Tools. Постепенно люди со-кратили это название до PHP. В следу-ющей версии, когда я добавил обра-ботку форм, добавилось «FI» (прим.: от англ. form interpreter). Это было что-то вроде маленькой шутки, перефра-зом для TCP/IP. Чувствуете? TCP/IP и PHP/FI. Затем, когда появился PHP-3, который уже не был просто набором инструментов для домашних страни-чек и который можно было использо-вать для множества различных веб-за-дач, мы стали подумывать о смене на-звания. Но ничего удачного нам в го-лову не приходило. Кроме того, уже были люди, которые привыкли поль-зоваться сокращением PHP, и нам не хотелось их расстраивать. Так что мы просто сменили название на аб-бревиатуру. Больше не было Personal HomePage Tools, было просто PHP. Все эти выдумки по поводу «protected» или «preprocessed» – это глупость. Мы так и сказали людям: «Это просто PHP».

Расмус, в интервью в 2002 году вы сказали, что никогда не думали раз-рабатывать язык сценариев, вы де-лали свой маленький инструмен-

тарий, который постепенно вырос в какую-то библиотеку, которая бы-ла открытой для всех, и вот так, пос-тепенно, все это наросло как снеж-ный ком. Прошло уже 11 лет. Что вы можете сказать сейчас, оглядыва-ясь назад? Не жалеете ни о чем?Сожалею ли я о чем-нибудь? Нет, это было здорово! Конечно, никаких пла-нов о том, чтобы создавать целый язык у меня не было. Самый-самый первый скрипт, который я написал, был очень простым и решал простые задачи. Ког-да меня спрашивали: «Как ты это де-лаешь?» – я объяснял, что написал некий простой инструмент. И я просто давал его всем тем, кто ко мне обра-щался. Вот так это просто распростра-нялось, прямо с моей домашней стра-нички. Неужели вы думаете, что один-надцать лет назад я сел и начал обду-мывать план, вроде такого: «Так, я со-бираюсь разработать язык сценариев, которым будут пользоваться во всем мире…»? Разумеется нет! Я просто-на-просто решал те проблемы, которые передо мной возникали. Другие лю-ди говорили, что это хорошее реше-ние и также начинали его использо-вать. И вот так-то все постепенно раз-расталось и разрасталось.

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

Конечно, это было и моим увлече-нием. Мне все это очень нравилось. Но это также было и моей работой. Я был и разработчиком, и консультан-том. То, что я делал – решал возника-ющие у людей проблемы. Это было не только ради удовольствия, это были ре-альные проблемы, которые нужно было решать. Именно так все и было!

Дмитрий Горяинов

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

9№7, июль 2006

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

В начале осени прошлого года на snap.php.net стали доступ-ны версии шестой ветки пре-

процессора. Я предлагаю разобрать-ся, что в них нового и чем эта вер-сия, пока ещё прорисованная доволь-но смутно, отличается от предыдущих. В начале августа прошлого года раз-работчиками было принято решение – CVS HEAD был отделен в ветку PHP.5.1, после чего HEAD стал PHP 6.0.0. Оз-начало это одно – все нововведения отныне стали применяться для этой, шестой ветки. Оставляя за PHP пя-той версии только незначительные изменения и багфиксы. В середине августа Расмус Лендорф, основатель языка, в своём письме сообществу (http://news.php.net/php.internals/17883) высказал ряд пожеланий к шестой вер-сии, которые это сообщество приня-лось активно обсуждать. В общем-то на тот момент отличие от «пятёрки» было только одно – полноценная под-держка Unicode. Обсуждение дало ре-зультаты – на ноябрьской встрече раз-работчиков в Париже были озвучены основные возможности, которые пла-нируется воплотить в новой ветке.

В настоящее время идёт разра-ботка, не утихают споры. Но некото-рые контуры PHP 6 видны уже сегод-ня. Итак, приступим.

Отречёмся от старого мираВ первую очередь грядущая версия языка поражает не нововведения-ми, а количеством вещей, от кото-рых решено отказаться. Разработчи-ков не трудно понять. PHP завоевал мир своей простотой и доступностью, но постоянно подвергался критике за низкую безопасность и слабую защи-ту от ошибок (от ошибок программис-та, разумеется). Кроме того, во имя обратной совместимости со старыми версиями, язык тянет за собой уста-ревшие deprecated, которые были ещё уместны в PHP 3, но уже в PHP 5 ка-жутся полным анахронизмом.

Прежде всего «чистка» коснёт-ся всем изрядно поднадоевших пара-метров в конфигурации интерпрета-тора – register_globals, magic_quotes и safe_mode, – из шестой ветки они будут изъяты. В версиях языка, до 4.2, все переменные окружения по умол-

чанию инициализировались автомати-чески. Это было, конечно, удобно для разработчика, но несло в себе огром-ную угрозу безопасности приложению, так как любой злоумышленник мог под-менить значения переменных. Начиная с 4.2 параметр register_globals по умол-чанию был выключен, оставляя воз-можность обращаться к переменным окружения через глобальные масси-вы ($_GET, $_POST, $_SERVER и т. д.), но многие приложения уже были напи-саны в старом стиле, и часто недалё-кие авторы статей или книг советова-ли решить проблему, просто включив инициализацию. Теперь об этом мож-но будет забыть – и слава богу.

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

С режимом safe_mode ситуация сложнее. Директива, введённая из со-

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

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

Кирилл Сухов

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

10

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

ти момента, поясню – именно это послужило причиной сме-ны номера версии. Дело в том, что по настоящий момент при разработке приложений приходится сохранять вари-анты имён методов, функций, переменных одновременно в двух таблицах символов – Unicode и non-Unicode. Решено обеспечить поддержку Unicode на уровне сервера (а не от-дельного запроса, как было до сих пор). Соответствующие настройки будут храниться в файлах конфигурации и уйдут из поля зрения программиста.

Ранее PHP действовал как исключительно бинарный обработчик, тип байтовой строки был единственным и ис-пользовался для работы с любой информацией, что созда-вало (и создаёт) различные проблемы при работе с коди-ровками и национальными символами. В PHP 6 введёна возможность работать с типом данных «строка Unicode», реализованная посредством библиотеки ICU (International Components for Unicode). Использование ICU API позволи-ло реализовать такие возможности, как корректная сор-тировка, с использованием любого национального алфа-вита, транслитерация, расположение текста для арабско-го, иврита, хинди и тайского языков, трансформации тек-ста и многое другое.

Это касается не только обработки строк и летералов, но и кодировок HTTP-запросов скриптов и индификаторов. Ан-дрей Змиевский в своём докладе на конференции в Москве в мае этого года привёл следующий пример кода:

Вообще поддержка Unicode в PHP 6 – это довольно об-ширная тема, заслуживающая отдельной статьи.

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

Самое «вкусное» – PHP-акселератор APC, кэширу-ющий сценарии в байт-код, будет теперь включён в яд-ро. Это, на мой взгляд, самое радикальное нововведение, и именно его я буду ждать. Кроме того, в дистрибутив ре-шено включить расширения XML Reader (простой XML-пар-сер, основанный на SAX) и XML Writer (провайдер для XML API). Оба расширения, взятые из репозитария PECL, при-званы значительно облегчить работу программиста с XML-документами. Из PECL также будет добавлено расшире-ние Fileinfo.

Добавлен новый тип данных – init64, который будет со-ответствовать integer.

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

<?php

for ($i = 0; $i < 9; $i++){

ображений безопасности, устанавливает серьёзные огра-ничения на работу PHP-интерпретатора. При её включении пропадало большинство возможностей работы с файлами и каталогами (в частности затруднительно положить файл конфигурации выше директории веб-сайта, а ведь это ра-зумная мера безопасности). С другой стороны, сам по се-бе режим safe_mode был далеко не панацеей и его огра-ничения легко можно было обойти. Таким образом, он, не давая защиты, был вечной головной болью разработчиков. После его исключения исчезнет риск нарваться на хостинг с safe_mode=on. (Следует сказать, что функциональность директивы open_basedir будет сохранена.)

Что ещё? Поддержка таких древностей, как библиотеки Freetype 1 и (недоброй памяти) GD 1 также прекращается. Устраняется поддержка ASP-тегов (по сею пору <% можно после включения соответствующих настроек использовать на равнее с <?php или <?, зачем – мне непонятно).

Функция dl(), динамически подгружающая расширения PHP (и вызывающая своей некорректной работой много-численные нарекания), будет сильно ограничена в правах, а именно – останется только в SAPI. При этом каждую фун-кцию SAPI пройдется регистрировать отдельно. Честно го-воря, не жалко, так как многие разработчики склонны рас-сматривать её существование почти как нелепость.

Расширение для работы с регулярными выражениями ereg будет удалено из дистрибутива и перенесено в репози-тарий PECL. Я не думаю, что это повод для паники, так как подключить его – минутное дело, кроме того, уже в пятой версии языка рекомендуется использовать perl-compatible-регулярные выражения. Правда, разработчики пошли даль-ше и собираются перенести в PECL все расширения для ра-боты с базами данных, за исключением PDO (расширение для унифицированного доступа к базам данных, введён-ное в версии 5.1). Этот шаг, конечно, логически обоснован, но пока выглядит страшновато.

Теперь о наведении порядка в синтаксисе.Старые названия массивов (если точнее, старые массивы)

вида HTTP_*_VAR из языка удаляются. Их применение вызо-вет ошибку уровня E_CORRE_ERROR. Старый синтаксис об-ращения к строковым индексам {} будет исключён, зато поя-вится возможность получать символы от конца строки запи-сью вида [4]. Оставшийся от PHP 4 синтаксис вида $foo=& new myClass(), или function &foo, в новой версии вызовет ошибку уровня E_STRICT (хорошо, что не выше – слишком много ко-да написано в стиле ООП PHP 4). Более того, поддержка ZE1 будет вообще исключена. В объявлении полей класса конс-трукция var (использующаяся в PHP 4, но приводящая к ошиб-ке уровня E_STRICT в пятой версии языка), теперь уравне-на в правах с модификатором public. Это безусловно пос-лабление, но оно вполне укладавается в рамки «наведения порядка». Отпадает необходимость модернизации несколь-ких приложений, не списанных на PHP 4. Ну а чтобы совсем «добить» нерадивых разработчиков, сообщения об ошибках уровня E_STRICT теперь войдут в E_ALL (при переходе на пятую версию параметры были разделены).

Что новогоИзъято довольно много, что предлагается в замен? Прежде всего поддержка Unicode. Для тех, кто не осознаёт важнос-

class ....... {function ... ...... { ... }function !..$ ....) { ... }function .......... { ... }}$..... = array();[’עְיולּוחַׁשָנָה‘].....$ = new .......();

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

11№7, июль 2006

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

Foreach сможет работать с многоуровневыми масси-вами:

в операторе ?: будет допустимо опускать первый пара-метр.

В объектную модель будет добавлен новый предикат static:: static2, позволяющий управлять static во время вы-полнения. Для иллюстрации его работы привожу пример кода:

Результатом работы будет вывод «A:static2».

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

ЗаключениеВот тут хочу высказать некоторые сомнения. Когда поя-вился (скорее слово неверное, он не появился, он прояв-лялся постепенно, как чеширский кот) PHP 5, у многих бы-ли сомнения, что хостеры вовремя предоставят возмож-ность пользоваться новой версией. Эти сомнения в целом оказались напрасными – все ведущие площадки обнови-ли интерпретатор довольно быстро. Проблема оказалась совсем в другой плоскости, а именно – в головах разработ-чиков. До сих пор и повсюду многие программисты, даже имея в своём распоряжении пятую версию, пишут на ней, как на четвёртой (это ещё в лучшем случае). Придется ли ко двору PHP 6? Время покажет.

<?php

$a = array(array(1, 2), array(3, 4));foreach( $a as $k => list($a, $b)) {}?>

<?php class A { static function staticA() { self::static2(); }

static function static2() { echo "A::static2\n"; } }

class B extends A {

static function static2() { echo "B::static2\n"; } }

B::staticA();?>

if (true) { break foo; } echo "not shown";foo: echo "iteration $i\n";}?>

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

12

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

Методов борьбы со спамом за последние годы разработа-но множество – от техничес-

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

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

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

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

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

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

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

Как следствие многие спамеры просто игнорируют любые ошибки,

Greylisting: панацея от спама или «мыльный пузырь»?

Хуже спама – только борьба

со спамом.

Админская мудрость

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

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

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

13№7, июль 2006

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

в том числе и временные, продолжая отсылать сообще-ния дальше по своей базе. То есть если на первую попыт-ку соединения возвращать код 4xx, то спамер его проигно-рирует и оставит ваш сервер в покое (либо наоборот, если окажется очень настойчивым, будет непрерывно отправ-лять сообщения, не утруждая себя различными паузами). В то время как добропорядочный сервер, «выругавшись про себя», терпеливо положит письмо в очередь и чуть поз-же попытается ещё раз его отправить. На этом и основа-на фильтрация по «серым» спискам – «правильные» сер-веры будут предпринимать повторную попытку доставки спустя некоторое время (обычно это 30 минут или 1 час), а «неправильные» либо сделают повтор сразу же, либо не сделают вообще.

Пример практической реализацииЧтобы было понятнее, рассмотрим работу грейлистин-га на конкретном примере. Для Sendmail существует про-грамма milter-greylist. Её установка из портов FreeBSD тру-да не составит:

Подправьте под свои требования конфигурационный файл /usr/local/etc/mail/greylist.conf. Я рекомендую здесь изменить значение параметра greylist на более доброже-лательную по отношению к удалённым серверам циф-ру, например, на 15 минут. По умолчанию используется 1 час, что вынудит большинство серверов тщетно выпол-нять не одну, а две-три попытки отослать сообщение (а то и больше, если отправитель наивно надеется снизить латент-ность очереди и тем самым повысить качество обслужива-ния своих клиентов за счёт более частой обработки очере-ди), прежде чем ваш сервер снизойдёт до его рассмотре-ния. Впрочем, есть разумные соображения и по поводу ис-пользуемого по умолчанию значения (см. врезку «Сколь-ко можно ждать?!»), так что окончательное решение остав-ляю за вами. Также на первое время можно раскомменти-ровать строку verbose, чтобы получать более полную ин-формацию о работе фильтра.

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

Туда же не забудьте добавить обслуживаемые вашим сервером подсети, чтобы клиенты не надоедали вам пре-тензиями типа: «Я пытаюсь отправить письмо, а оно не ухо-дит» или «Я отправил почту семь минут назад, а её до сих пор не получили».

Ещё пропишите в /etc/rc.conf такую строку:

Теперь соответствующий демон будет запускаться сце-нарием /usr/local/etc/rc.d/milter-greylist.sh автоматически. Из текста этого же сценария можно узнать точный путь к со-кету, который должен использовать Sendmail для взаимо-действия с milter-greylist. Этот сокет и нужно указать в ва-шем mc-файле для настройки Sendmail:

Теперь, пересобрав конфигурационный cf-файл и пе-резапустив Sendmail, вы получите работающий «серый» фильтр. В /var/log/maillog (если не менялись настройки по умолчанию демона Syslog) вы сможете отследить то, как этот фильтр работает:

Этот фрагмент демонстрирует, что первая попытка сер-вера mail.server.ru доставить почту для пользователя user завершилась задержкой сообщения на 5 минут. Спустя час сервер повторил свою попытку, за что был награждён пра-вом находиться в «белом» списке 24 часа. Нужно сказать, что по умолчанию, чтобы попытка доставки была признана повторной, а не новой, с зафиксированными в базе долж-ны совпасть три параметра – почтовый адрес отправите-ля, адрес получателя и IP-адрес хоста-отправителя. Ис-пользование конфигурационного параметра subnetmatch позволяет понизить требования к соответствию IP-адре-са, признавая совпадающими все адреса, входящие в за-данную подсеть. Это может быть полезно в том случае, если сервер-получатель использует FallbackMX для того, чтобы разгрузить очередь основного сервера, или если используется пул SMTP-серверов (т.е. в тех случаях, ког-да повторная отправка может предприниматься с другого хоста). Есть ещё один параметр – lazyaw, – активация ко-торого приведёт к тому, что в автоматически формируе-мых «белых» списках будет учитываться только IP-адрес, а адреса получателя и отправителя приниматься во вни-мание не будут.

Продолжим рассмотрение лог-файла. Так будет выгля-деть подключение со стороны сервера, представленного в «белом» списке, т.е. в правилах acl whitelist:

Как видите, ему никаких препятствий в работе не со-здаётся. Ну и, наконец, для спамеров (к сожалению, не для всех) будет представлена только одна запись про «delayed for 00:05:00». Что и требовалось доказать.

Плюсы грейлистингаКак показывает практика, значительную долю нежелатель-ной почты действительно удаётся отсечь с помощью грей-листинга (см. врезку «Немного статистики»). При этом поч-

root# cd /usr/ports/mail/milter-greylistroot# make install

acl whitelist domain donpac.ruacl whitelist domain rostel.ruacl whitelist domain mail.ruacl whitelist domain rambler.ruacl whitelist domain yandex.ruacl whitelist domain freebsd.org

miltergreylist_enable="YES"

INPUT_MAIL_FILTER(`miltergreylist', ↵ `S=local:/var/milter-greylist/milter-greylist.sock, ↵ F=, T=S:4m;R:4m')dnl

Jun 5 10:23:52 mydomain milter-greylist: k556NpVc033684: addr 1.2.3.4 from <[email protected]> to <[email protected]> delayed for 00:05:00Jun 5 11:23:58 mydomain milter-greylist: k557Nuv5034199: addr 1.2.3.4 from <[email protected]> rcpt <[email protected]>: autowhitelisted for 24:00:00

Jun 5 07:04:50 mydomain milter-greylist: k5534nov032377: skipping greylist because sender DNS name mx17.mail.ru is whitelisted, (from=<[email protected]>, rcpt=<[email protected]>, addr=4.3.2.5)

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

14

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

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

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

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

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

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

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

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

Рассмотренный выше milter-greylist позволяет настроить синхрониза-цию между различными MX-хоста-ми (см. комментарии к опциям peer и syncaddr в конфигурационном файле, а также man greylist). Благодаря этому все настроенные таким образом поч-товые серверы будут использовать об-щую базу. То есть отправитель, обра-тившийся на резервный хост после не-удачной попытки пробиться на основ-ной, уже будет известен Backup-сер-веру, и соответственно его обработа-ют успешно.

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

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

Вас же вполне могут убедить часто приводимые доводы в защиту именно это-го значения:

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

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

Минусы грейлистингаС другой стороны, грейлистинг при всей своей идеальности обладает и ря-дом отрицательных моментов. Пре-жде всего эта технология относится к «невежливым», поскольку вынужда-ет сервер отправителя тратить свои ре-сурсы на дополнительное обслужива-ние искусственно создаваемой очере-ди. Только представьте себе, что про-изойдет с сервером типа mail.ru, если каждое исходящее сообщение он бу-дет вынужден ставить в очередь и от-сылать повторно?

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

Многие MTA используют как раз 1 час в качестве периода обработки очереди;

Этот интервал достаточен для того, чтобы рассылка спамера была обна-ружена, и его адрес попал в соответс-твующие «чёрные» списки;

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

Здесь учитывался лишь спам, источни-ки которого не попали в DNSBL-списки, ис-пользуемые на сервере (в первую очередь срабатывает блокировка по DNSBL, а затем уже выполняется проверка по greylist.db).

Конечно, это не 99%, теоретически до-стижимые для тщательно настроенного (и ре-гулярно подстраиваемого) SpamAssassin или DSPAM, но с учётом заметно более низкой нагрузки на сервер и отсутствия «сопутс-твующих» проблем выглядит эта техноло-гия весьма привлекательно. По крайней мере пока...

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

15№7, июль 2006

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

имеет полный доступ к настройке ма-шин, определённых как Backup-серве-ры для его домена.

Ещё одна проблема связана с сер-верами, на которых эксплуатирует-ся «конкурирующая» система борьбы со спамом – так называемый обрат-ный звонок (callback). Суть этого мето-да заключается в следующем: при по-лучении входящего соединения сер-вер на стадии RCPT TO приостанав-ливает сессию и имитирует рабочую сессию с сервером, указанным в ко-манде MAIL FROM. Если эта попытка из-за несуществующего адреса отпра-вителя или по другим причинам завер-шается неудачей, то и приостановлен-ное соединение разрывается без даль-нейшей обработки.

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

В нашем «наглядном пособии» – milter-greylist – эта проблема тоже из-вестна, и для её решения предусмот-рен ещё один параметр – delayedreject. При его активации milter-greylist будет возвращать ошибку 4xx не после ко-манды RCPT TO, как это предусмот-рено по умолчанию, а после получе-ния команды DATA. Это вынуждает удалённый сервер надеяться на ус-пех чуть дольше, но зато не создаёт препятствий для «обратного звон-ка», который, как правило, заверша-ется после ответа сервера на коман-ду RCPT TO.

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

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

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

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

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

1. http://greylisting.org – cайт, посвящён-ный пропаганде «серых списков».

2. http://projects.puremagic.com/greylisting – проект Эвана Харриса, автора идеи и концепции «серых списков», а также одной из практических реализаций.

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.

Не «мильтером» единым...Упомянутый здесь инструмент, milter-greylist, не единственный. Существует масса фильтров и модулей к различным MTA, есть самостоятельные (не зависящие от конкретной почтовой программы) паке-ты, такие как фильтр Spamd (см. журнал №6, 2005 г.), работающий в паре с пакет-ным фильтром pf, или упомянутый в ссыл-

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

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

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

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

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

ках в конце статьи SMTP-прокси Spey. Не-которые из этих инструментов перечис-лены на страницах специализированно-го сайта, посвящённого пропаганде грей-листинга – http://greylisting.org. Впрочем, не забывайте, что если для лечения бо-лезни существует огромный выбор раз-личных препаратов, значит, болезнь не-излечима.

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

16

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

Большие организации с соответс-твующим бюджетом и имеющие в своем штате целый IT-отдел

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

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

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

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

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

Сергей Яремчук

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

17№7, июль 2006

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

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

Возможности CanItВ основе канадской системы CanIt ле-жат известные утилиты: MIMEDefang – гибкий инструмент, предназначенный для защиты компьютерных систем от вирусов, и SpamAssassin – извест-ное средство борьбы со спамом. Кро-ме того, в состав входят скрипты, уп-рощающие установку и первичную на-стройку, дополнительные приложения и удобный веб-интерфейс, необходи-мый для дальнейшей настройки сис-темы и спам-фильтров, а также выда-чи отчетов. Для прослушивания SMTP соединений MIMEDefang использует milter интерфейс Sendmail. Поэтому почтовая система должна быть пост-роена только на Sendmail. Это не са-мый мой любимый почтовый сервер, с настройкой и безопасностью у него постоянные проблемы. Но, очевидно, здесь сыграла роль его популярность. Если у вас уже установлен другой MTA (Postfix, Exim, Qmail), то разработчики предлагают использовать Sendmail для фильтрации спама, а затем пере-давать почту основному MTA, работа-ющему на нестандартном порту. Вам не потребуется делать дополнитель-ные денежные вложения, если в сис-теме предусмотрено достаточно ресур-сов на развитие, правда, это несколь-ко усложнит систему. Но в том случае когда используется MTA, разработан-ное для отличных от UNIX-операцион-ных систем, без отдельного компью-тера уже не обойтись. Либо как вари-ант решения разработчики предлага-ют приобрести фильтрующий почто-вый прокси CanIt Appliance.

В качестве антивируса по умолча-нию применяется ClamAV, но при же-лании CanIt можно легко сконфигури-ровать с F-Risk’s F-PROT и F-PROTD, F-Secure’s FSAV, H+BEDV AntiVir, Network Associates’ uvscan, Norman Virus Control, Sophos Sweep, Symantec CarrierScan Server, Trend Micro’s vscan и Vexira Anti-Virus. Учитывая, что ви-русы часто рассылаются при помо-щи спам-технологий, они частично бу-дут отброшены антиспам-фильтром. Для определения спама использова-ны практически все популярные се-годня методы: ключевого слова, ана-

лиз заголовка, анализ формата со-общения, Байесовский статистичес-кий анализ, черные, белые и серые списки, списки известных open-proxy, DNS-верификация, SPF (sender policy framework, http://spf.pobox.com). А так-же hit-and-run, когда неизвестному пользователю отсылается сообщение о невозможности доставки и в случае его повторного отправления сообще-ние будет принято. Хотя здесь тоже имеются дополнительные настройки, позволяющие ограничить прием пов-торного сообщения только той подсе-тью, из которой письмо было отправ-лено первый раз. Система может быть сконфигурирована для фильтрации входящего, исходящего и внутренне-го почтового трафика. Можно задать правила фильтрации по MIME-типу, потенциально опасным расширениям прикрепленных файлов (в документа-ции приведено 56 таких расширений – asf, bat, chm, cmd, com, crt, dll, exe, hlp, hta, inf, scr и прочие), почтовым адре-сам получателя и отправителя, доме-ну и прочие. Вы можете задать и свои правила фильтрации.

Также несколько установленных CanIt могут образовывать единую сеть, позволяющую синхронно тренировать Байесовские фильтры, Roaring Penguin Traning Network.

Кроме GNU/Linux CanIt будет рабо-тать на Solaris, FreeBSD, Compaq Tru64 UNIX, HPUX и AIX. Отдельно хотелось

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

Архитектура и принцип работы CanItДля того чтобы немного понять прин-цип работы системы CanIt и проще бы-ло бы разобраться с настройкой, не-обходимо рассмотреть её архитекту-ру. Сообщение при помощи milter пе-редается mimedefang, который запус-кает отдельный процесс, работающий в дальнейшем с сообщением. Между ними может быть как UNIX, так и TCP-сокет. Процесс, получивший заголо-вок и тело сообщения от Sendmail, по-мещает его во временный каталог (/var/spool/MIMEDefang) и через UNIX-сокет отсылает команду mimedefang-multiplexor, который управляет пулом постоянно запущенных Perl-процес-сов, осуществляющих фильтрацию, и передает сообщение одному из них. При нехватке Perl-процессов по ко-манде multiplexor запускаются допол-нительные, а при уменьшении нагруз-ки лишние «убиваются». Чтобы избе-жать утечки памяти все процессы пе-риодически обновляются (забегая впе-ред, скажу, что это все настраивается в файле mimedefang.conf).

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

Рисунок 1. Принцип работы CanIt

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

18

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

этапе удаляются или изолируются потенциально опасные вложения и происходит проверка на вирусы. Письмо из бе-лого списка проходит дальше без проверок. Если же оно не занесено в такой список, письмо проверяется и, в слу-чае если оно не оценивается как спам, проходит дальше. Если же сообщение помечается как спам, то оно проходит еще несколько этапов. Сначала на основании хэш-функ-ции высчитывается уникальный ID, который сравнивает-ся с имеющимся в базе данных. Если ID совпадает со ста-тусом spam или not-spam, то в первом случае отправите-лю отсылается код отказа, а во втором – письмо отправ-ляется получателю. Если же соответствующий ID не най-ден, то письму присваивается статус one-shot и отправи-телю отсылается сообщение о временной невозможнос-ти доставки (такое сообщение по умолчанию не показы-вается в веб-браузере). Спамеры могут проигнорировать такое сообщение и не отправить письмо повторно, а поч-товые серверы в такой ситуации через некоторое время повторят его обязательно. Если ID уже занесен в базу дан-ных как one-shot, то его статус меняется на pending и от-правителю опять отсылается сообщение о временной не-возможности доставки. Время нахождения в статусах one-shot и pending зависит от настроек. По умолчанию если че-рез неделю one-shot не изменило статус на pending, то оно обозначается как спам.

ЛицензияНа сегодня доступны две версии продукта – CanIt Pro и CanIt Free. Вторая версия предназначена для малого бизнеса и по сравнению с первой имеет некоторые огра-ничения. Так, пользователю не разрешается модифициро-вать исходный код для своих задач (кроме, надо полагать, GPL-продуктов, входящих в состав), система будет подде-рживать не более 50 пользователей, правила всех анти-спам-фильтров может редактировать только администра-тор, пользователи будут лишены некоторых возможнос-тей, не будет доступна техническая поддержка и Roaring Penguin Training Network, нельзя использовать продукт для обслуживания третьей стороны. Для небольшой ор-ганизации такие ограничения не существенны. Кроме то-го, free-лицензия будет действительна ровно год, затем ее придется обновлять. При этом если послать запрос зара-нее, до истечения срока действия ключа, на уже исполь-зованный один раз электронный адрес, то все равно полу-чите старый ключ, даже если остальные параметры (орга-низация, операционная система) будут изменены. Поэто-му, если вам нужно несколько ключей, пользуйтесь раз-ными адресами.

Готовим систему к установке Free CanItВо время написания статьи была актуальной версия Free CanIt 3.2.0, выпущенная в феврале 2006 года, о ней и пой-дет речь. Перед получением доступа к архиву необходимо подтвердить лицензионное соглашение и заполнить данные для генерирования ключа, обязательно указав правильный электронный адрес. После чего внизу страницы набираем «I agree» и нажимаем «Generate Licence Key».

Архивы с прекомпилированными пакетами доступны для Red Hat 8.0, Red Hat 9, Fedora Core 1, Fedora Core 2,

Fedora Core 3, Red Hat Enterprise Linux 3 и Solaris 2.9 (раз-мер архивов колеблется в пределах 8,5-9,6 Мб). Для ос-тальных систем CanIt придется собирать из исходных тек-стов (архив 12,9 Мб). В этом случае ряд операций придет-ся проделать вручную, поэтому в статье будет рассмот-рен более сложный вариант. Хотя, к слову, в архиве с ис-ходными тестами в подкаталоге Packaging лежат скрипты, позволяющие собрать пакеты для Solaris 9, SuSE, Debian и RedHat.

Кроме самого CanIt, нам понадобятся установленный Sendmail с milter. В документации версия не указана, но на-чиная с 8.11/8.12 использован новый milter API, с которым сейчас работает MIMEDefang. Я использовал Sendmail вер-сии 8.13. Далее веб-сервер Apache, первый или второй, соб-ранный с поддержкой PHP 4 или 5 версий, установленная СУБД PostgreSQL от 7.3 (лучше от 8.0) и Perl не ниже 5.6, так как CanIt написан на нем. Все это уже должно быть ус-тановлено и настроено.

Небольшие подготовительные операцииСледующим шагом после распаковки архива следует про-верка и предварительная подготовка системы при помощи скрипта, находящегося в os-specific. Вся проблема состо-ит в том, что скрипты ориентированы на различные вер-сии RedHat/Fedora, других дистрибутивов вы там не най-дете. Если попробовать выполнить любой из них, получа-ется такой вот результат:

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

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

#./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

This script will check your system to ensure that all prerequisitesrequired to run CanIt are installed.

Verifying that you are running Fedora Core 1... FAILEDFedora Core not found; you are running ALT Linux Sisyphus (20050723)

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

# id smmsp

uid=112(smmsp) gid=# id smmspuid=112(smmsp) gid=58(smmsp) группы=58(smmsp)58(smmsp) группы=58(smmsp)

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

19№7, июль 2006

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

Если в системе нет пользователя smmsp, создаем. Но скорее всего это означает, что Sendmail либо не установ-лен, либо работает от имени другого пользователя.

Теперь проверяем для MIMEDefang.

Даже при относительно небольшом количестве писем, проходящих через ваш сервер, вероятно, лучшим решени-ем будет использование оперативной памяти для каталога /var/spool/MIMEDefang. Это на порядок ускорит обработку информации. Для этого в /etc/fstab необходимо внести сле-дующие строки (для 128 Мб):

Следующим шагом скрипт сохраняет старые настройки Sendmail из каталога /etc/mail в /etc/mail-canit-backup и со-здает новые конфигурационные файлы.

После этого сохраняем старые настройки и компили-руем рабочий файл.

Теперь проверяем и устанавливаем в автозагрузку все сервисы, от которых зависит работа CanIt. В различных дистрибутивах это делается по-разному, приведу пример для RedHat и SuSE.

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

Делаем символическую ссылку для третьего уровня за-

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

Для остановки при выключении и перезагрузке сис-темы.

С CanIt пока все. Проверяем настройки PostgreSQL, Apache c PHP. В конфигурационном файле PostgreSQL /var/lib/pgsql/data/pg_hba.conf локальные запросы должны быть помечены как trust. Обычно по умолчанию так и сде-лано, но проверьте, чтобы не было комментария в строке (для версий 7.3 и выше).

В более ранних версиях PostgreSQL формат несколь-ко иной.

Кроме этого, в файле postgresql.conf, который находит-ся в этом же каталоге, параметр max_fsm_pages установи-те в 500000.

Теперь Apache. Убедитесь в конфигурационном файле веб-сервера httpd.conf, что PHP подключен, а файлы, име-ющие расширение .php, рассматриваются как програм-мы на PHP.

Во многих дистрибутивах параметр max_execution_time, определяющий максимальное время выполнения каждого скрипта, в файле php.ini имеет низкое значение (обычно 30), недостаточное для нормального выполнения некоторых действий CanIt. Его рекомендуется установить в 300. Также необходимо отключить safe_mode, так как чтение файла /etc/mail/canit/db-settings невозможно в этом режиме.

Теперь запускаем PostgreSQL и Apache и переходим к следующему этапу.

Компилируем модули и устанавливаем CanItПосле всех подготовительных работ переходим непосредс-твенно к сборке модулей Perl, MIMEDefang и Sendmail 8.12

# /usr/sbin/useradd -c "Sendmail user" -r -M -d ↵ /var/spool/clientmqueue -s /bin/false smmsp

# id defang

id: defang: Такого пользователя нет

# mkdir -p /var/spool/MIMEDefang # /usr/sbin/useradd -c "MIMEDefang user" -r -M -d ↵ /var/spool/MD-Bayes defang# chmod 700 /var/spool/MIMEDefang# chown defang.defang /var/spool/MIMEDefang# mkdir -p /var/spool/MD-Bayes# chmod 700 /var/spool/MD-Bayes# chown defang.defang /var/spool/MD-Bayes# mkdir -p /var/spool/MD-Quarantine # chmod 700 /var/spool/MD-Quarantine # chown defang.defang /var/spool/MD-Quarantine

none /var/spool/MIMEDefang tmpfs mode=700,size=128M, ↵ uid=defang,gid=defang 0 0

# fgrep -v INPUT_MAIL_FILTER < | fgrep -v ↵ 'DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, ↵ Name=MTA' > /etc/mail/sendmail.mc.NEW

# cat <<'EOF' >> /etc/mail/sendmail.mc.NEWINPUT_MAIL_FILTER(`mimedefang', ↵ `S=unix:/var/spool/MIMEDefang/mimedefang.sock, ↵ F=T, T=S:15m;R:15m;E:15m')EOF

# 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

# chkconfig sendmail on# chkconfig postgresql on# chkconfig httpd on

# ln -s /etc/mail/canit/mimedefang-ctrl /etc/init.d/canit# ln -s /etc/mail/canit/ticker-ctrl /etc/init.d/canit-ticker

# ln -s /etc/init.d/canit /etc/rc3.d/S86canit# ln -s /etc/init.d/canit-ticker /etc/rc3.d/S87canit-ticker

# ln -s /etc/init.d/canit-ticker /etc/rc0.d/K13canit-ticker # ln -s /etc/init.d/canit-ticker /etc/rc1.d/K13canit-ticker # ln -s /etc/init.d/canit-ticker /etc/rc6.d/K13canit-ticker # ln -s /etc/init.d/canit /etc/rc0.d/K14canit# ln -s /etc/init.d/canit /etc/rc1.d/K14canit# ln -s /etc/init.d/canit /etc/rc6.d/K14canit

local all all trust

local all trust

LoadModule php4_module modules/libphp4.soAddModule mod_php4.cDirectoryIndex index.html index.phpAddType application/x-httpd-php .php4 .php .phtml

safe_mode = Off

# /etc/init.d/httpd start# /etc/init.d/postgresql start

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

20

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

(если он не установлен). В подкаталоге src архива пос-ле распаковки вы обнаружите 26 файлов, в том чис-ле и Sendmail 8.12.11 и 8.13.5, ClamAV 0.88, MIMEDefrag, CanIt 2.55 и остальные Perl-модули для удовлетворения зависимостей.

В общем случае для сборки всей системы необходимо дать команду./build.sh, которая сама определит, что нуж-но устанавливать.

Обратите внимание на вывод. Если соответствующий модуль уже был установлен в системе, то он пропускается. Бывает, что Perl модуль по непонятным причинам не ком-пилируется и тогда скрипт завершается с ошибкой. В этом случае просто установите его стандартным способом, на-пример, при помощи apt-get. При сборке он будет помечен как установленный, и соответствующий шаг будет пропу-щен. Также в системе на момент сборки не было пользова-теля defang, скрипт, как видите, предупредил нас об этом. В некоторых ситуациях, возможно, понадобится передать скрипту дополнительные параметры. Например, --everything позволит принудительно пересобрать все, а при использо-вании --not-sendmail или --not-clamav не будут собираться соответствующие приложения.

Теперь поступаем, как подсказывает предыдущий вы-вод, и запускаем скрипт install.sh, в качестве параметра ему необходимо передать каталог веб-сервера, куда будут ско-пированы php-скрипты. Как вариант можно все настройки указать в файле layouts/layout.default. Для CanIt лучше ис-пользовать отдельный каталог. Я указал rr, в примерах до-кументации использован canit.

Следующий шаг – инициализация базы данных. Здесь скрипт запускаем без дополнительных параметров. И пос-ледовательно отвечая на вопросы, указываем имя и пароль администратора для доступа к PostgreSQL, и пользователя, от имени которого CanIt будет работать с базой. В квадрат-ных скобках указаны параметры по умолчанию.

Данные для доступа к БД будут сохранены в файле /etc/mail/canit/db-setting, их можно впоследствии изменить вручную. Владельцем этого файла должен быть apache,

# ./init-database

Please enter the PostgreSQL super-user name [postgres]:Please enter the PostgreSQL super-user password:Please re-enter the PostgreSQL super-user password:Please enter the regular database user's name [spam]:Please enter the regular database user's PostgreSQL password:Please re-enter the regular database user's PostgreSQL password:Please enter the database name to use [spam]:Please enter the database host if not local []:

Review of your entries: Database Super-User: postgres Database Super-User Password: <Hidden> Regular database user: spam Regular database user's password: <Hidden> Database Name: spam Database Host: <Local Server>Is this information correct? (Y/N) y

Please enter the Web GUI login name of the CanIt administrator [admin]:Please enter the CanIt administrator's password:Please re-enter the CanIt administrator's password:

Review of your entry: CanIt Administrator: adminIs this information correct? (Y/N) yChecking for existing spam database... NONo spam database found; creating a fresh one.No spam database found; creating a fresh one.Detected PostgreSQL version 8.0.4Creating user postgres OKCreating database 'spam' OKCreating standard CanIt tables, sequences and indexesCreating sequences: ..... OKCreating tables: ......................................... OKCreating indexes: ......... OKGranting access on objects to postgres: ..... OKGranting access on objects to postgres: ......................................... OKDoing base CanIt variable descriptions OKDoing base CanIt data OKCreating administrator account OK

# ./install.sh --webroot=/var/www/html/rr

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 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

....Installing documentation and contributed code OKInstalling CanIt files OKInstalling Web page files OK*** Software has been installed successfully.Now, initialize the Spam database by running:

./init-database

from inside the distribution directory. NOTE: Even ifyou are upgrading from an earlier version, you must stillrun ./init-database. Your existing data will be preserved.

# id smmsp

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 build script.

Checking your system for prerequisites... OKLooks like you have Sendmail 8.13; we'll unpack 8.13Good... all source files present and accounted for.Unpacking archive: Digest-SHA1-2.00.tar OK......Substituting paths in CanIt source code... OKBuilding Digest::SHA1... ---O--Found Perl module Digest::MD5 (2.20) SKIP BUILDBuilding HTML::Tagset... OK......Found Perl module File::Spec (0.8) SKIP BUILDFound Sendmail 8.13.4 with Milter SKIP BUILDlibmilter.a not found BUILDBuilding libmilter... OKBuilding Sendmail wrapper program... OKBuilding Mail::SpamAssassin... OKBuilding CanIt perl modules... OKBuilding MIMEDefang... OKBuilding Clam AntiVirus... OK*** Software has been built successfully. You may run './install.sh'*** as root to install the software.

*** NOTE: There is no 'defang' user on this system. We strongly*** recommend creating a 'defang' user and group for MIMEDefang.

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

21№7, июль 2006

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

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

И последний этап перед установкойТеперь очередь MIMEDefang. В конфигурационном файле /etc/mail/canit/filter-settings.pl необходимо изменить значения следующих полей, выставив их в соответствии с действу-ющими настройками. Хотя это можно сделать затем и че-рез веб-интерфейс (во вкладке Setup есть три мастера), но мне удобней отредактировать один файл, чем искать на-стройки по вкладкам, с вscjrjq вероятностью что-то пропус-тить. В случае неудачи вы получите на указанные адреса отладочные сообщения, например, об отсутствии или не-возможности подключиться к базе данных. $AdminAddress – адрес электронной почты админист-

ратора CanIt$. $AdminName – имя администратора. $DaemonAddress – адрес электронной почты, куда

MIMEDefang будет отсылать свои сообщения. $TempfailIfDatabaseDown – при установке этого пара-

метра в 1, в случае невозможности просканировать со-общение (например, отсутствие PostgreSQL) в заголо-вок почтового сообщения будет добавлено предупреж-дение X-Scan-Warning: «NOT SCANNED BY CANIT».

$VirusHandlingIfDatabaseDown и $WindowsExecutables IfDatabaseDown – что делать при обнаружении вируса или с файлами, имеющими потенциально опасное рас-ширение при отсутствии связи с БД («Discard», «Reject» или «Accept»).

Более тонко изменить работу MIMEDefang можно в фай-ле mimedefang.conf.

Настройки антивирусного сканера, который будет про-верять почту, производятся в файле /etc/mail/canit/virus-scanners.pl. В него включены все поддерживаемые анти-вирусы, для подключения любого из них достаточно снять комментарий с соответствующих строк.

Учитывая, что ClamAV распространяется по лицензии GPL и к тому же входит в комплект CanIt, приведу пример для него.

Хотя возможен и второй вариант.

В каталоге /etc/mail/canit/ лежит скрипт clamav-ctrl, пред-назначенный для запуска демона clamd.

Периодически необходимо очищать базу данных от уста-ревшей информации и чистить временный каталог и каран-тин. Для этих целей служит скрипт /etc/mail/canit/canit.cron, который должен запускаться при помощи cron раз в день

от имени root. В дистрибутив также включен cron-скрипт для запуска freshclam, обновляющий антивирусные базы ClamAV.

При помощи cron запускается скрипт /etc/mail/canit/send-trapped-report.pl, задача которого – рассылать со-общения всем пользователям о том, сколько и каких присланных им писем находятся в карантине. Он тре-бует небольшого редактирования под действующую сеть, но подробно останавливаться на его работе не бу-ду. Почту, находящуюся в карантине, администратор мо-жет отправить запросившему ее пользователю при по-мощи скрипта /etc/mail/canit/unquarantine, указав в ка-честве параметра каталог карантина, в котором нахо-дится интересующее пользователя письмо (он находится в /var/spool/MD-Quarantine/).

Первый запускСчитаем, что веб-сервер, PostgreSQL и Sendmail уже запу-щены, пора сделать тоже с CanIt.

При первом запуске mimedefang-ctrl в дистрибутиве ALTLinux 3.0.4 скрипт завершил работу с такой ошибкой.

# http://www.clamav.net/$Features{'Virus:CLAMD'} = '/usr/sbin/clamd';# Внимание clamd должен работать от имени# пользователя «defang» $ClamdSock = '/var/spool/MIMEDefang/clamd.sock';

# Раскомментируйте если для проверки будет# использоваться clamscan# $Features{'Virus:CLAMAV'} = '/usr/bin/clamscan';

# ln -s /etc/mail/canit/clamav-ctrl /etc/init.d/clamd# chkconfig clamd on

# crontab -e0 6 * * * /bin/sh /etc/mail/canit/canit.cron0 6 * * * /bin/sh /etc/mail/canit/freshclam.cron

# /etc/mail/canit/ticker-ctrl start

Starting the CanIt ticker [ OK ]

Validating setup: [ OK ]Starting mimedefang-multiplexor: [ OK ]Starting mimedefang: [ OK ]

# /etc/mail/canit/mimedefang-ctrl start

# /etc/mail/canit/ticker-ctrl start

Validating setup: Can't locate DB_File.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.8.7/i386-linux /usr/local/lib/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_perl/5.8.7/CanIt/Bayes/Signature/Berkeley.pm line 9..........

Рисунок 2. Страница приветствия при первой загрузке. Обратите внимание на сообщения

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

22

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

В поставляемых в комплекте CanIt файлах не оказа-лось DB_File.pm. Проблема решилась установкой пакета perl-DBM-5.8.7-alt2.i586.rpm.

Теперь в веб-браузере набираем «http://имя_узла/rr/» и получаем доступ к графическому интерфейсу. После ре-гистрации, используя логин и пароль, указанный при ини-циализации базы данных, вам предложат ввести регист-рационный ключ, без которого CanIt работать не будет. Об-ратите внимание на сообщения на странице приветствия (рис. 2), обязательно просмотите все указанные ссылки. Первое, помеченное как warning, говорит о том, что имеют-ся замечания по настройке (рис. 3). Администратор предуп-реждается о том, что настройки PostgreSQL не оптималь-ны (такие сообщения всегда доступны в «Setup → System Check»). Последнее сообщение предлагает воспользо-ваться мастером Basic Setup Wizard для первоначальной настройки CanIt. Перейдя по ссылке, вы обнаружите пара-метры, выставленные в файле filter-settings.pl. И наконец, сообщение по середине сообщает, что свободная версия рассчитана на 50 пользователей и их необходимо занес-ти в таблицу «Valid Recipients». В версии CanIt Pro эта таб-лица используется для обозначения действующих почто-вых адресов и активируется установкой «Only accept mail for accounts in the Valid Recipients table» в «Administration →

Global Setting». Письма, приходящие на адреса, не ука-занные в этой таблице, будут сразу же отбрасываться (ад-рес postmaster согласно стандарту SMTP всегда считает-ся действительным, и письма на этот адрес будут прихо-дить в любом случае).

Здесь все просто, заносите почтовые адреса по од-ному в линии и нажимаете «Add Recipient(s)». При этом адреса можно писать полностью с указанием домена ([email protected]) или локального пользователя (user). Во вкладке «Administration → Users» можно разрешить та-кому пользователю вход через веб-интерфейс для про-смотра статистики, изменение параметров работы неко-торых фильтров. В критических ситуациях можно сбро-сить пароль любого пользователя при помощи скрипта /etc/mail/canit/reset-password.pl.

В других вкладках можно задать правила приема поч-ты для домена и отправителя (рис. 4) и еще много настро-ек. На странице Reports можно получить любые отчеты по инцидентам.

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

Отправка письма [email protected] долж-на завершиться с ошибкой, но будет выведено сообще-ние «CanIt is installed», говорящее о том, что установка прошла успешно. В /etc/mail/canit находится файл sample-spam-message, отправив который можно проверить рабо-ту спам-фильтров.

А при помощи команды ps waux | grep defang убежда-емся в запуске новых процессов, обрабатывающих сооб-щение.

Информация о работе CanIt заносится в файлы журна-лов. Успехов!

1. Сайт проекта Roaring Penguin CanIt – http://www.roaring penguin.com.

2. Сайт проекта MIMEDefang – http://www.mimedefang.org.

Рисунок 4. В настройках CanIt можно указать адреса отправителей и действия, которые будут применены при получении от них письма

Рисунок 3. Предупреждение CanIt о неоптимальной настройке PostgreSQL

$ ps waux | grep defang

$ 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 +0300HELO localhost250 notebook.net Hello notebook.net [127.0.0.1], pleased to meet you MAIL FROM:<[email protected]>554 5.7.1 CanIt is installedQUIT

defang 9326 0.0 0.2 3376 696 ? S 13:46 0:00 /usr/local/bin/mimedefang-multiplexor -p /var/spool/MIMEDefang/ticker.pid -U defang -m 2 -x 4 -r 100 -i 3600 -b 432000 -c 50 -w 0 -s /var/spool/MIMEDefang/ticker.sock -l -X 150 -P 4 -Y canit-ticker -F /etc/mail/canit/ticker-filterdefang 9327 0.0 2.2 18936 5304 ? S 13:46 0:01 /usr/bin/perl /usr/local/bin/mimedefang.pl -f /etc/mail/canit/ticker-filter-server…defang 9408 0.0 0.2 4080 592 ? S 14:00 0:00 /usr/local/bin/mimedefang -P /var/spool/MIMEDefang/mimedefang.pid -m /var/spool/MIMEDefang/mimedefang-multiplexor.sock -R 1 -z /var/spool/MIMEDefang -U defang -s -t -p /var/spool/MIMEDefang/mimedefang.sock -x CanIt (www . roaringpenguin . com)

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

23№7, июль 2006

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

Пользователи и праваСначала коснёмся общих вопросов безопасности, связанных с работой Sendmail. Как мы видели в первой час-ти статьи [1], Sendmail, обеспечива-ющий функционирование почтового сервера, выполняет несколько различ-ных задач. Рассмотрим этот процесс с точки зрения необходимых прав.

Процесс, прослушивающий 25-й порт в ожидании входящих соедине-ний, должен обладать правами root, поскольку порты до 1024-го относятся к привилегированным и не могут быть

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

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

ми пользовательских .forward-файлов (если они используются). Следователь-но, он должен обладать правами на их чтение. В то же время право на запись в .forward-файл должен иметь толь-ко его владелец, иначе этот файл бу-дет проигнорирован. Аналогично пра-ва на запись в файл aliases должны иметь только пользователи, перечис-ленные в списке доверенных (пара-метр TrustedUser).

Говоря о правах доступа, сразу скажу о том, с какими правами обра-батываются перенаправления. Если

Если хочешь, чтобы что-то было сделано хорошо, – сделай это сам.

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

Как работает Sendmail? Полезные подробности

Часть 3: Вопросы администрирования

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

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

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

24

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

.forward-файл настроен на передачу сообщения на стан-дартный вход некоторой программы (по конвейеру), то про-цесс Sendmail, выполняющий это перенаправление, полу-чит права пользователя-владельца .forward-файла. Ана-логично ссылки, содержащиеся в файлах, подключенных к базе aliases с помощью конструкции :include:, будут об-рабатываться с правами владельца соответствующего include-файла. Если его владельцем является root, то об-работка выполняется с правами пользователя, указанного в конфигурации опцией DefaultUser (в mc-файле директива define(`confDEFAULT_USER’, `имя_пользователя’), по умол-чанию используется mailnull).

В первой части статьи уже упоминалось, что по умол-чанию во FreeBSD создаются две конфигурации Sendmail – sendmail.cf для работы в режиме MTA, и submit.cf для про-цесса, выполняющего роль MDA, то есть для доставки со-общений от локальных пользователей. Сделано это для то-го, чтобы отказаться от suid-бита на пользователя root. Те-перь Sendmail обходится suid-битом на группу smmsp, что позволяет выполнять запуск процесса с правами локально-го пользователя (обратите внимание, что права на очередь clientmqueue должны принадлежать пользователю и груп-пе smmsp). Но процессы, порождаемые для обработки вне-шних соединений, по умолчанию выполняются с правами суперпользователя.

Root иль не root?Работа с правами root делает сервер MTA соблазнительной мишенью для взломщиков, поскольку, проникнув в систе-му с правами этого процесса, можно получить практичес-ки неограниченные возможности. Однако в конфигураци-онный файл Sendmail можно включить параметр, позволя-ющий настроить то, с какими правами MTA будет выпол-нять свою работу.

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

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

Во-вторых, если письмо предназначено для локальной доставки, процесс Sendmail должен быть способен вызвать программу локальной доставки (по умолчанию mail.local) с правами, достаточными для работы с почтовыми ящика-ми любых пользователей. Поскольку теперь LDA вызыва-ется процессом, не обладающим правами root, нужно ли-бо предоставить полный доступ непривилегированному пользователю к хранилищу почтовых ящиков пользовате-лей, либо установить на mail.local бит suid.

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

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

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

Вторая строка отключает использование .forward-фай-лов. Также нужно соответствующим образом изменить права на каталог очереди и на содержащиеся в нём фай-лы (если таковые имеются), а также на используемые ба-зы данных:

Далее, поскольку mail.local теперь будет вызываться не «рутовым» процессом, то придётся поставить на него suid-бит:

Иначе натолкнётесь на такую ошибку (в файле maillog):

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

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

После всех этих корректировок осталось пересобрать конфигурационный файл и перезапустить сервер:

Теперь процессы sendmail, обрабатывающие входящие соединения, будут работать с правами пользователя mailnull, в чём можно убедиться, просмотрев вывод команды ps:

define(`confRUN_AS_USER',`mailnull')dnldefine(`confFORWARD_PATH', `')dnl

root# chown -R mailnull /var/spool/mqueueroot# chown mailnull aliases aliases.db access access.db

root# chmod 4555 /usr/libexec/mail.local

May 24 17:24:31 host sm-mta[66054]: k4ODO0sN066053: to=<[email protected]>, 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

Starting: sendmail 451 4.0.0 /etc/mail/sendmail.cf: line 1670: Xclmilter: local socket name /var/run/clamav/clmilter.sock unsafe: Permission denied

root# cd /etc/mail; make install restart

serg$ ps -axouser,command | grep sendmail

root sendmail: accepting connections (sendmail)

Рисунок 1. Работа утилиты mailstats

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

25№7, июль 2006

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

Как видите, вполне можно обеспечить работу Sendmail с правами обычного пользователя. Однако это ослабит за-щиту на других участках – suid-бит на файле mail.local, до-полнительные права на запись в UNIX-сокеты внешних филь-тров и т. д. Так что подобная настройка весьма неоднознач-на. Впрочем, окончательное решение принимать вам.

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

Log-файлыПервое место, куда следует заглянуть, чтобы проконтроли-ровать работу любого сервиса, – это лог-файлы. Sendmail по умолчанию ведёт журнал своей работы в файле /var/log/maillog. Если быть точнее, то используется система Syslog, ку-да выводятся рабочие сообщения с facility «mail». Дальнейшее уже определяется настройками в /etc/syslog.conf.

Уровни сообщений задаются в опции LogLevel (в mc-файле директивой define(`confLOG_LEVEL’,̀ 9’), где 9 – уро-вень, используемый по умолчанию. Обычно используется значение от 0 (минимальное количество информации) до 10 (достаточно подробный вывод). Значения выше 10 обыч-но используются лишь для отладки. В ряде случаев может оказаться полезным уровень 12, на котором протоколиру-ются все SMTP-соединения.

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

СтатистикаПомимо лог-файлов полезной может оказаться и утилита mailstats (рис. 1). Она выводит число принятых и отправ-ленных сообщений (msgsto и msgsfr соответственно), вхо-дящий и исходящий трафик (bytes_to и bytes_from), число отклонённых сообщений (в соответствии с базой access). Последние две строки – итоги (строка T) и количество со-единений (строка C).

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

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

Состояние хостовВ процессе работы Sendmail может собирать статисти-ку доступности хостов-получателей, которую в дальней-шем можно просмотреть с помощью команды hoststat (или sendmail -bh, что то же самое). Для этого в конфигу-рационном файле укажите имя каталога (абсолютный путь или путь относительно каталога очереди), в котором будет сохраняться статистическая информация:

Cпустя некоторое время вы сможете просмотреть со-стояния хостов, к которым Sendmail обращался. Так можно получить список хостов, возвративших ошибку «Operation timed out»:

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

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

define(`confHOST_STATUS_DIRECTORY', `.hoststat')dnl

root# hoststat | grep timed

mqg.com 00:58:43 Deferred: Operation timeddila.com 00:57:28 Deferred: Operation timedhideakifan.com 00:56:12 Deferred: Operation timedmxfilter.bayou.com 00:02:33 Deferred: Operation timed

Рисунок 2. Очередь сообщений

mailnull sendmail: startup with w83-193.abo.wanadoo.fr (sendmail)mailnull sendmail: server [220.69.161.120] cmd read (sendmail)

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

26

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

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

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

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

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

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

Общие вопросы эффективностиПроизводительность работы любой программы определяется тем, на-сколько эффективно она использует доступные ей ресурсы. Условно ре-сурсы можно разделить на «дешёвые» и «дорогие». В случае с Sendmail «це-на» ресурса определяется прежде все-го затратами времени на работу с ним. Например, оперативную память мож-но отнести к дешёвым, поскольку обра-щение к ней выполняется максималь-но быстро. А, скажем, файловая сис-тема на жёстком диске относится к до-рогим ресурсам, поскольку на переме-щение головок винчестера требуется весьма ощутимое по процессорным меркам время.

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

для проверки хоста, пытающегося ус-тановить соединение, по базе access; и так далее. В итоге любые задерж-ки в работе DNS влияют и на скорость работы SMTP-сервера, вынужденного простаивать в ожидании ответов.

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

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

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

FEATURE(nocanonify)

Протокол IDENTAuthentication Server Protocol (серверный протокол аутентификации), часто именуе-мый IDENT, был разработан для идентифи-кации пользователя-владельца конкретно-го TCP-соединения. С его описанием вы можете ознакомиться в документе RFC 931 (который датирован январём 1985 года). В ответ на запрос в виде разделённых за-пятой локального (с точки зрения сервера) и удалённого портов сервер возвращает идентификационную информацию о вла-дельце данного соединения.

Служба запускается на 113-м порту (в /etc/services определён как auth).

Так может выглядеть сеанс с сервером, где IDENT поддерживается:

То есть вы вводите пару «порт сервера – порт клиента» (в примере предварительно было установлено соединение с 25-м пор-том сервера, «свой» порт можно узнать, на-пример, с помощью sockstat), и сервер воз-вращает информацию о пользователе-вла-дельце данного сокета.

В настоящее время польза от данно-го сервиса весьма сомнительная, пос-кольку возвращаемая информация мо-жет быть легко фальсифицирована. В свя-зи с этим его использование не является обязательным для работы служб Интер-нета, и потому на многих серверах под-держка этого протокола отключается. На-пример, на системах FreeBSD эта служба по умолчанию закрыта (см. /etc/inetd.conf, строки auth).

serg$ telnet smtp.nekiyhost.ru 113

Trying 1.2.3.4...Connected to mail.nekiyhost.ru.

Escape character is '^]'.25, 4997325, 49973 : USERID : UNIX : mail

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

27№7, июль 2006

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

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

Есть и более кардинальный способ:

Так в чём задержка?Дополнительной оптимизации вы достигнете, если с уста-новите более подходящие для вашего конкретного случая значения тайм-аутов соединений. Используемые по умол-чанию значения довольно велики (например, время ожи-дания ответа на команду HELO составляет 5 минут). Прав-да, учтите, что в большинстве случаев они соответству-ют принятым стандартам и рекомендациями (в частнос-ти, RFC 2821). К тому же проблемные ситуации достаточ-но редки при нормальной работе, так что снижение боль-шинства тайм-аутов (например, Timeout.quit, определяю-щий время ожидания команды QUIT) практически не ска-жется на общей производительности сервера.

Но в ряде случаев изменение тайм-аутов может оказать-ся полезным. Например, в наши дни протокол IDENT (см. врезку «Протокол IDENT»), предназначенный для иденти-фикации владельца сокета, используется редко из-за его неэффективности и недостоверности. Следовательно, нет никакого смысла ожидать результата идентификации, и можно смело устанавливать соответствующий параметр в ноль: define(`confTO_IDENT’,̀ 0’).

Некоторые из опций, отвечающих за установку различ-ных тайм-аутов, приведены в таблице 1.

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

Кто последний?Почтовая очередь оказывает в большинстве случаев на-ибольшее влияние на общую производительность серве-

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

Организация очередиОчередь сообщений организована в виде каталога в фай-ловой системе. По умолчанию используется /var/spool/mqueue (clientmqueue для процессов, вызванных локаль-ными пользователями). В ней можно найти несколько ти-пов файлов: qf* – заголовочный файл сообщения. Содержит инфор-

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

df* – в этих файлах хранятся почтовые сообщения. Со-ответствие с заголовочным файлом устанавливается по оставшейся части имени файла.

В процессе обработки создаются и другие временные файлы (например, xf*, содержащие сведения об ошибках, возникающие в процессе передачи сообщения).

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

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

где коэффициенты ClassFactor, RecipientFactor и RetryFactor задаются в файле конфигурации (в формуле указаны их имена в cf-файле) и определяют «вес» класса сообще-ния, количества получателей и числа предыдущих попы-ток доставки.

Класс определяется значением поля Precedence, а его числовое значение задаётся строками «P» в конфигураци-онном (cf) файле, например:

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

Таблица 1. Опции тайм-аутов

Опция в cf-файле Директива mc-файла Описание

Timeout.helo define(`confTO_HELO', `знач')Время ожидания команды HELO

Timeout.mail define(`confTO_MAIL', `знач')Время ожидания команды MAIL FROM:

Timeout.rcpt define(`confTO_RCPT', `знач')Время ожидания команды RCPT TO:

Timeout.quit define(`confTO_QUIT', `знач')Время ожидания команды QUIT

Таблица 2. Строки qt-файла очереди

Строка Пример Описание

T T1148293041 UNIX-время постановки сообщения в очередь

K K1148299145 UNIX-время последней обработки сообщения

N N5Количество выполненных попыток отправки сообщения

P P415878 Рассчитанный приоритет (см. ниже)

S SMAILER-DAEMON Имя отправителя

M MDeferred: Connection refused by mail.darbs.lv.

Сообщение о причине неудачной доставки в прошлый раз

H? H??To: <[email protected]> Строки заголовка сообщения

define(`confQUEUE_SORT_ORDER', `Priority')dnl

Приоритет = Размер_сообщения_в_байтах – (ClassFactor * Класс_сообщения) + (RecipientFactor * Кол-во_получателей) + (RetryFactor * Кол-во_попыток_отправки)

Pbulk=-60Pfirst-class=0Pjunk=-100Pspecial-delivery=100

FEATURE(nodns)

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

28

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

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

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

Другие виды сортировокПомимо рассмотренной выше сор-т и р о в к и п о п р и о р и те т у, о п ц и я QueueSortOrder может принимать ещё три значения – Host, Filename и Time. В первом случае очередь бу-дет обрабатываться в алфавитном порядке хостов-получателей, что поз-воляет несколько сэкономить на ус-тановке соединения, поскольку повы-шается эффективность кэша хостов (см. hoststat).

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

При установке опции в значение «Time» сортировка осуществляется в зависимости от времени нахождения сообщения в очереди.

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

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

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

queue – только в очередь. В этом режиме попытка немедленно от-править сообщение вообще не бу-дет предприниматься. MTA будет только помещать письмо в очередь. Отправка будет осуществляться уже обработчиком очереди. Мо-жет быть полезно в случае, если перед отправкой требуется уста-новить интернет-соединение (на-пример, коммутируемое).

defer – отложить доставку. Анало-гичен режиму queue, но при этом подавляются также и любые обра-щения к сети (например, запросы DNS).

Наборы очередейВместо общего каталога для всех файлов очереди в Sendmail можно ис-пользовать наборы очередей. Напри-мер, директива define(`QUEUE_DIR’, /̀var/spool/mqueue/*’) заставляет Sendmail все каталоги в mqueue рассматривать как очереди и соответственно обраба-тывать их. При этом для размещения нового письма конкретный каталог бу-

ся это опцией ForkEachJob (дирек-тива define(`confSEPARATE_PROC’) в mc-файле). Это снизит общее время обработки сообщений в очереди: по-ка одни процессы будут ожидать отве-та удалённых серверов, другие могут выполнять дисковые операции или ис-пользовать ресурсы процессора.

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

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

Режимы обработки очередиВ Sendmail предусмотрено несколько режимов обработки очереди, задавае-мых директивой define(`confDELIVERY_MODE’): background – используемый по

умолчанию режим фоновой отправ-ки. В этом случае Sendmail снача-ла получает сообщение от клиен-та, помещает его в очередь и воз-вращает клиенту ответ «250 ОК». После чего сообщение доставля-ется в фоновом режиме.

Группы очередейSendmail позволяет распределять сообще-ния по различным очередям с группиров-кой по домену получателя. Например, что-бы выделить в отдельную очередь почту для mail.ru, yandex.ru и rambler.ru, необходи-мо выполнить следующие действия:

Добавить в mc-файл строки:

Этими строками мы объявляем отде-

льную очередь для группы mails. Ключ F=f заставляет Sendmail запускать для обра-ботки этой очереди отдельный процесс (вы-полнять вызов fork).

За «приписку» конкретных сообщений к группе mails отвечает файл access:

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

FEATURE(`queuegroup')QUEUE_GROUP(`mails', ↵ `P=/var/spool/mqueue/mails, F=f')

QGRP:mail.ru mailsQGRP:yandex.ru mailsQGRP:rambler.ru mails

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

29№7, июль 2006

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

дет выбираться случайным образом, что гарантирует опре-делённую «равномерность» заполнения очередей. Есть воз-можность и более «интеллектуально» размещать различ-ные сообщения – см. врезку «Группы очередей».

Если имена каталогов в mqueue будут начинаться с qf, df, xf, то Sendmail будет использовать их для размещения соответствующих файлов. Если при этом каталоги разнес-ти по разным жёстким дискам, то можно повысить скорость обработки каждого сообщения. Причём некоторые файлы (например, xf) могут быть безболезненно размещены в па-мяти (используя tmpfs).

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

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

Если теперь процесс-обработчик очереди запустить с параметром -q5m, то очередь будет обрабатываться каж-

define(`confMIN_QUEUE_AGE', `30m')

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

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

Схема нашего «сводного сервера» представлена на рис. 3.

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

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

Ещё один вспомогательный сервер, те-перь уже для облегчения участи Smart-хос-та, – FallBack-сервер, задача которого – об-рабатывать «проблемные» сообщения, ко-торые Smart-хост не смог доставить. Благо-даря этому и на Smart-хосте очередь долж-на оставаться минимальной.

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

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

Рисунок 3. Больше серверов – хороших и разных...

Backup-сервер (на который должна ука-зывать MX-запись с меньшим приоритетом) в рассматриваемой схеме выглядит не сов-сем уместно, будучи подключенным на тот же интернет-канал. Если организация рас-полагает резервным интернет-соединени-ем, то данный сервер следует подключить именно на него. Но даже в такой схеме его использование позволит разгрузить основ-ной сервер. Для этого нужно на основном сервере установить небольшие значения тайм-аутов, а также «посильное» значение MaxDaemonChildren. В результате медлен-ные, а также «избыточные» внешние соеди-нения будут отклоняться, и их обслужива-ние возьмёт на себя Backup-сервер.

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

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

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

30

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

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

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

Речь идёт о двух опциях – QueueLA и RefuseLA (в mc-фай-ле – define(`confQUEUE_LA’, ̀ знач’) и define(`confREFUSE_LA’, `знач’) ) соответственно). Первая из них при превышении средней загрузки сервера (Load Average) сверх указанной переводит Sendmail в режим «только очередь» (queue), ког-да для входящих сообщений не предпринимаются попыт-ки доставить их немедленно, а выполняется только разме-щение в очереди.

Вторая опция даёт указание отклонять новые соедине-ния, если средняя загрузка системы превышает указанное значение. О том, что это произошло, можно узнать по за-писям «Sendmail rejecting connecting, load average too high» в /var/log/maillog.

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

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

Тем не менее рассмотрим основные приёмы, позволяю-щие добиться более быстрой работы с очередью.

Во-первых, рассмотренные выше режимы сортировки очереди позволяют несколько перераспределить нагрузку в зависимости от того, в каких ресурсах испытывается не-достаток. Так, порядок Filename несколько снижает нагруз-ку на дисковую подсистему; Host – оптимизирует исполь-зование сетевых ресурсов и т. д.

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

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

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

Нужно сделать и одно предостережение – как бы ни ка-залось заманчивым размещение очереди в оперативной па-мяти (используя tmpfs), этого не следует делать. Ведь со-общения для того и помещаются в очередь, чтобы гаранти-ровать их сохранность при неожиданных проблемах с сер-вером, вплоть до перезагрузки. Если же в вашем случае надёжностью доставки можно пренебречь (думаю, это вер-но разве что при рассылке спама), то можно отключить оп-цию SuperSafe (define(`confSAFE_QUEUE’, `False’)).

А вот размещение в tmpfs конфигурационных файлов (таких как aliases.db, access.db) может быть весьма полез-но – ведь в этом случае Sendmail не будет каждый раз об-ращаться к диску для «разрешения» псевдонима или по-иска адреса отправителя в базе access. Впрочем, в грамот-но работающей системе эти данные и так должны преиму-щественно находиться в дисковом кэше (если, конечно, не-хватка оперативной памяти не вынуждает систему снижать размер кэша до предела).

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

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

Серверы на «чёрный» деньК сожалению, время от времени любая техника даёт сбои. Чтобы смягчить последствия временной недоступнос-

Рисунок 4. Схема работы с резервным сервером

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

31№7, июль 2006

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

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

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

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

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

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

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

Впереди у нас ещё одна, последняя, тема – взаимо-действие Sendmail со сторонними программами. Например, эта программа позволяет фильтровать сообщения с помо-щью так называемых milter. Чтобы не превратить свой сер-вер в открытый релей и в то же время позволить всем ва-шим пользователям отправлять почту из любой точки мира, можно настроить smtp-аутентификацию с помощью Cyrus SASL. Об этом и поговорим.

1. Супрунов С. Как работает Sendmail. Полезные подробности. Часть 1. //Системный администратор, №5, 2006 г. – С. 12-18.

2. Супрунов С. Как работает Sendmail. Полезные подробности. Часть 2. //Системный администратор, №6, 2006 г. – С. 18-25.

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

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

В конце апреля 2006 года в Ниж-нем Новгороде прошел очеред-ной фестиваль компьютерно-

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

Победителями (по итогам голосо-вания зрителей) в номинированных конкурсах стали:

Елфимов Константин Валерь-евич: работа от творческого коллек-тива CyberPunks Unity – «Untitled» за-нявшая первое место в номинации ZX Spectrum demo.

Акимов Вадим Алексеевич: ав-тор работы LPSTOP, по праву заняв-шую первую строку в конкурсе Amiga/PC 4k intro.

Сидорук Иван Сергеевич: пред-ставитель коллектива авторов (f0x, unc и группы deMarche ) победивших в Amiga/PC 64k intro.

Шарапов Алексей Александро-вич: Out of Style III (совместная рабо-та от Storm Studios и The SandS) – пер-вое место в Amiga/PC demo.

Костик Сергей Юрьевич: человек, по праву одержавший победы в трех

конкурсах художников. Первые мес-та в ZX Spectrum GFX, Handdraw GFX, и Freestyle GFX.

Всем победителям в подарок вру-чается подписка на журнал «Систем-ный администратор» на второе по-лугодие 2006 года. Работы, пред-ставленные на фестивале, доступ-ны по адресу: http://www.scene.org/dir.php?dir=/parties/2006/dihalt06.

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

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

32

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

Рано или поздно мы (системные администраторы) хотим (или нас заставляют) установить контроль

над использованием интернет-трафи-ка. У меня пользователи периодичес-ки недоумённо осведомляются, на что истратилась их квота. Чаще всего они

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

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

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

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

Павел Малахов

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

33№7, июль 2006

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

а затем перенести файл на компьютер, где есть MS Excel, и там его просматривать. Так я и делал, пока не потребо-валось проводить более серьёзный анализ и вести ста-тистику.

Подготовительные работыРади универсальности процедуры установки программ под разные операционные системы (семейства UNIX) бу-дем устанавливать их из исходных кодов. На сайтах про-грамм указано, где можно взять уже собранные пакеты для определённых ОС. По возможности лучше использовать их, так как в этом случае пакет регистрируется в системе, что при автоматическом обновлении ОС позволит получить подробную информацию об установленном пакете, соблю-дать зависимости при установке новых пакетов и в других случаях. Примите во внимание, что при установке собран-ного пакета пути к файлам могут отличаться от указанных в статье. Для просмотра отчётов через веб-интерфейс нам понадобится веб-сервер. Отчёты будем хранить в катало-ге /var/www/html/reports.

Calamaris и LightSquid написаны на Perl, поэтому он дол-жен уже стоять в системе. Автор Calamaris рекомендует ста-вить самую последнюю версию, хотя и упоминает, что неко-торые пользователи успешно использовали его програм-му на Perl 5.001. Требования к Perl для LightSquid не при-водятся, так что от себя скажу, что на версии 5.8.7 всё ра-ботает отлично.

Squid (www.squid-cache.org), конечно, уже должен быть установлен, вести журнал в родном формате (что опреде-ляется в squid.conf опцией emulate_httpd_log off) и прово-дить ежедневную ротацию журналов, не сжимая архивы. Последнюю задачу лучше поручить программе logrotate, указав в файле /etc/logrotate.d/squid следующее:

а Squid освободить от этой обязанности, указав опцию logfile_rotate 0.

SargSarg (Squid Analysis Report Generator – генератор аналитичес-ких отчётов Squid) доступен на нескольких языках, на рус-ском – в трёх кодировках: koi-8, UTF-8, windows-1251. Сайт – sarg.sourceforge.net. Стабильная версия – 2.2.1. Объём – 376 Кб. «Понимает» журналы – Squid, Microsoft ISA, Novell Border

Manager.

Собираем стандартным способом:

Если вы используете Linux и хотите размещать конфигу-рационные файлы в /etc/sarg (по умолчанию /usr/local/sarg), в этом случае укажите соответствующую опцию:

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

В /etc/sarg/sarg.conf устанавливаем параметры:

Опцией date_format мы определяем, как будет выглядеть имя выходного файла, который состоит из форматирован-ной даты. Возможные варианты значения этой опции: e – dd/mm/yyyy – европейский формат даты; u – mm/dd/yyyy – американский формат даты (предла-

гается по умолчанию); w – yyyy.ww – год и номер недели в году.

Все необходимые настройки сделаны, запускаем:

Видим, что всё прошло успешно. Теперь отчёт можно посмотреть в браузере. Ещё несколько параметров, кото-рые могут понадобиться:

Можно отправлять отчёт по почте. Правда, в этом слу-чае не будет формироваться html-файл.

В параметре report_type можно указать, какие отчёты нас интересуют. Sarg предоставляет следующие: topsites – отображает название сайта, количество под-

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

sites_users – отображает список всех посещённых сай-тов и какие пользователи на них заходили;

users_sites – отображает список сайтов, на которые за-ходил пользователь, количество подключений к каждо-му и скаченный объём (рис. 1);

# cat /var/log/squid/access.log | grep 10.0.0.15 > ↵ /tmp/10.0.0.15.txt

/var/log/squid/access.log { daily rotate 6 copytruncate nocompress notifempty missingok}… # далее описана ротация cache.log и store.log

# ./configure

# ./configure --enable-sysconfdir='/etc/sarg'# make# make install

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

language Russian_koi8 access_log /var/log/squid/access.log.1 # вчерашний журналtitle "Squid report for proxy1" output_dir /var/www/html/reports/sargdate_format echarset Koi8-rwww_document_root /var/www/html

# sarg

SARG: Records in file: 19329, reading: 100.00%SARG: Отчет успешно сгенерирован в: /var/www/html/reports/sarg/04Jun2006-06Jun2006

# оставить в отчёте только нескольких пользователейinclude_users "petrov:ivanov:secretar" # не учитывать записи журнала, содержащие подстрокиexclude_string "подстрока1:подстрока2" # не учитывать обращения к перечисленным доменам exclude_hosts /etc/sarg/hosts.txt # сколько файлов отчётов нужно хранить в директории, # самый старый убираетсяlastlog 30 # создавать отчёт только для указанных дней недели,# воскресенью соответствует 0weekdays 1-5 #создавать отчёт только для определённых часов hours 8-18

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

34

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

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

denied – отображает список сайтов, в доступе к кото-рым было отказано;

auth_failures – отображает ошибки аутентификации; site_user_time_date – отображает для каждого пользо-

вателя дату и время всех обращений к сайту; downloads – отображает отчёт по загрузкам (download).

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

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

Calamaris 3Переводится с английского так же, как и Squid, – кальмар, головоногий моллюск. Сайт – www.Calamaris.Cord.de. Стабильная версия – 2.59. Объём – 100 Кб. «Понимает» журналы – Squid, NetCache, Inktomi Traffic

Server, Oops! proxy server, Compaq Tasksmart, Novell Internet Caching System, Netscape/iPlanet/SunONE Web Proxy Server, Cisco Content Engines.

Если не нужны графики, то достаточно одного скрип-та. Распаковываем:

Если же хочется увидеть результаты ещё и в графиках, то нужно устанавливать бета-версию 2.99.4.0 (сбоев не за-мечено) и доустановить библиотеки и модули. Подробную инструкцию можно посмотреть в [1], но и идущая с пакетом инструкция вполне понятна (правда, на английском).

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

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

Копируем calamaris в /etc/calamaris/calamaris.pl. Расшире-ние добавляем для определённости, что это скрипт на Perl.

Создаём каталог /usr/lib/perl5/calamaris (или там, где у вас находятся библиотеки perl) и копируем туда calAxestype.pm, calAxestype3d.pm, calBars3d.pm.

Копируем мануал calamaris.1 в /usr/local/man/man1/.Будем использовать скрипт (см. листинг), который поз-

волит нам создавать ежедневные, еженедельные и ежеме-сячные отчёты. Ежедневные будут храниться месяц, а еже-недельные и ежемесячные – год. Скрипт поместим в /etc/calamaris/calam_rep.sh <files/scripts/calam_rep.sh>.

# tar -xzvf /path/to/calamaris-2.59.tgz

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

$requester_report = -1;$status_report = 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';

Рисунок 1. Список сайтов, которые посетил пользователь

Рисунок 2. Активность пользователя в Интернете

#!/bin/bash# Скрипт для Calamaris 3. Создаёт отчёты по логам Squid# Использование: calam_rep.sh [today|yesterday|week|month]# Pavel Malakhov 28.03.05

CALAM_DIR='/etc/calamaris'; # Каталог программыSQUID_LOG_DIR='/var/log/squid'; # Каталог логов Squid# Корневой каталог отчётов, остальные создадутсяREP_PATH_PREFIX='/var/www/html/reports/squid';# Каталог, где будем хранить недельные кэш-файлыCACHE_DIR='/etc/calamaris/cache';# Так как отчёт делаем за вчерашний день, то название отчёта# должно это отражать. Определим для этого переменные.# Для наглядности предположим, что сегодня 1 февраля 2006,# среда, тогда вчера было 31 января, вторник# Вчерашнее число, т.е. YESTD=31YESTD=`date -d yesterday +%d`;YESTW=`date -d yesterday +%V`; # Номер недели# Для нашего примера номер недели не изменился и YESTW=5.# Номер и название месяца, т.е. YESTM=01_JanuaryYESTM=`date -d yesterday +%m_%B`;# Существует проблема с обработкой не английских букв,# если используется кодировка en_US.UTF-8.# Поэтому переназначим переменную LANG. Если используется# другая кодировка или проблем нет, то закомментируйте# нижеследующие 2 строкиLANG=en_USexport $LANG

# --- Нижеследующий код изменять не нужно ---------------# ---- [но исследование приветствуется!] ----------------# Если параметр отсутствует, то прерываем выполнение скриптаif [ "$1" = "" ]; then echo "Usage: calam_rep.sh [today|yesterday|week|month]" exit 1fi# Если каталог для отчётов не существует, то создаёмfunction checkdir { if [ ! -e "$REPPATH" ];then echo -n `date +%c` "Dir \"$REPPATH\" is absent. Creating.."; mkdir -p $REPPATH; echo "Done."; fi;}# Если каталог для кэша не существует, то создаёмif [ ! -e "$CACHE_DIR" ];then echo -n `date +%c` "Cache dir \"$CACHE_DIR\" is absent. ↵ Creating... "; mkdir -p $CACHE_DIR; echo "Done.";fi;

Page 37: 044 Системный Администратор 07 2006

35№7, июль 2006

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

Делаем этот скрипт исполняемым:

Cоздаём отчёт:

и смотрим его в браузере по адресу http://our.domain.ru/reports/calamaris/days.

Создаём журнальный файл /var/log/calam_rep.log, куда будем записывать результаты запуска скрипта по cron:

Слабое место Calamaris – статистика по пользовате-

лям и сайтам, сильная сторона – общая статистика по на-грузке на прокси-сервер. Все отчёты последовательно отображаются на одной html-странице. Некоторые отчё-ты не отображаются, если в журнале не найдены необхо-димые для него записи. Мне удалось получить 11 отчётов. Вот их описание: Summary – суммарная информация по работе прокси-

сервера (рис. 3). Incoming requests by method – входящие запросы

по методу (Get, Post и т. д.). Incoming UDP(TCP)-requests by status – входящие за-

просы по статусу (HIT, MISS, DENIED и т. д.). Outgoing requests by status – исходящие запросы

по статусу. Outgoing requests by destination – исходящие запро-

сы по месту назначения. Request-destinations by 2nd-level-domain – сгруппиро-

ванная статистика для доменов 2-го уровня, т.е. запро-сы на site1.example.com и site2.example.com суммируют-ся в статистике для домена example.com.

# chmod +x /etc/calamaris/calam_rep.sh

# ./calam_rep.sh yesterday

# touch /var/log/calam_rep.log

Рисунок 3. Cуммарная информация по работе прокси-сервера

Рисунок 4. Распределение трафика по протоколам

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 ↵ 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; fi fi 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 ;;esacecho "Done";echo `date +%c` "---Everything is done"exit 0

Page 38: 044 Системный Администратор 07 2006

36

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

Request-destinations by toplevel-domain – сгруппиро-ванная статистика для доменов 1-го уровня (ru, com, org и т. д.)

TCP-Request-protocol – распределение трафика по про-токолам (рис. 4).

Requested content-type – распределение трафика по зна-чению поля Content-type и по статусу входящих TCP-за-просов (TCP_HIT, TCP_MISS, TCP_DENIED, и т. д.)

Requested extensions – распределение трафика по рас-ширениям запрошенных файлов (gif, htm и т. д.).

Incoming UDP(TCP)-requests by host – статистика по пользователям (количество запросов, скаченный объём).

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

LightSquidПеревести название программы можно как «освещённый Squid». В каком свете нам будет представлен Squid, а точ-нее наши пользователи, можно посмотреть по адре-су http://lightsquid.sourceforge.net/demo16b/index.cgi?year= 2005&month=04. Сайт – http://lightsquid.sourceforge.net. Стабильная версия – 1.6. Объём – 45 Кб. «Понимает» журналы – Squid.

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

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

Всё содержимое каталога lightsquid-1.6-beta копируем в созданный каталог. Меняем владельца на того, кто у нас в роли httpd-пользователя (например, webmaster) и делаем скрипты исполняемыми файлами:

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

Проверяем, все ли настройки сделаны правильно:

Создаём отчёт:

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

LightSquid поддерживает как родной формат журнала Squid, так и формат httpd.

Можно объединять пользователей в группы и смотреть отчёты по группе. Для этого в файле group.cfg определяем, какой пользователь к какой группе относится:

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

# ./lightparser.pl

192.168.10.1 01 Sysadmin192.168.10.9 02 Managers192.168.10.14 02 Operators192.168.10.30 02 Operators192.168.10.74 03 Managers

Рисунок 5. Удобный интерфейс начальной страницы LightSquid

Рисунок 6. Популярные сайты. Можно сортировать по «Соединениям» и по «Байтам»

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

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

# chown -R root.webmaster /var/www/html/reports/lightsquid# cd /var/www/html/reports/lightsquid# chmod +x *.cgi# chmod +x *.pl

# пути к настроечным файлам$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$logpath ="/var/log/squid/";# какие сайты не учитывать в отчётах$skipurl = "zdd.com|192\.168\.1\.|cnn.com";# язык отчётов$lang = "ru";# определяем размер «большого файла» в 2 Мб$bigfilelimit = 2*1024*1024;# показывать отчёт о пользователях, превысивших квоту$showoversizelink = 1;# устанавливаем квоту 10 Мб (одна для всех)$perusertrafficlimit = 10*1024*1024;

# ./ check-setup.pl

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

37№7, июль 2006

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

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

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

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

Теперь в group.cfg нужно заменить все IP-адреса на сопоставленные им имена компьютеров, а в фай-ле realname.cfg сопоставить имена компьютеров с имена-ми рользователей:

Конечно, если у вас где-то ведётся свой список пользо-вателей, то лучше использовать его, написав для LightSquid небольшой скрипт по разбору этого файла.

Запуская программу, мы получаем следующие отчёты: Количество соединений и скачанных байт на день,

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

Популярные сайты (рис. 7). В этом есть возможность сортировки списка по количеству запросов либо по объ-ёму данных.

Таблица времени доступа пользователя к сайтам, то есть время его активности в Интернете.

Отчёт о «больших» скачанных файлах.

Хочется особо отметить удобный интерфейс.

Последние штрихиОсталось автоматизировать генерацию отчётов путём до-бавления в /etc/crontab соответствующих заданий:

Конечно, частота обновления отчётов остаётся на ваше усмотрение. В приведённом примере LightSquid будет под-держивать свои отчёты в актуальном состоянии, обновляя их через каждые 20 минут. Sarg будет создавать их один раз в день после ротации журналов, которую logrotate дела-

ет в полночь. А Calamaris будет запускаться с аналогичной задачей ежедневно в 00:30, раз в неделю по понедельни-кам в 00:35 и первого числа каждого месяца в 00:45. В пер-вых же числах он обновит свой журнал.

Ограничим доступ к отчётам только с определён-ных IP-адресов. Для этого создаём файл /var/www/html/reports/.htaccess:

Можно сделать доступ по паролю. Подробности по на-стройке доступа можно прочитать в [2].

Подведем итогиУ всех трёх программ есть настройки внешнего вида отчёта, графики. Все поддерживают русский язык. У каждой есть свои отличительные характеристики, заслуживающие вни-мания, и можно установить все три, но если такой возмож-ности (или желания) нет, то при выборе стоит учесть: нужны ли вам те или иные отчёты; достаточно ли у вас дискового пространства, чтобы хра-

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

цию всех желаемых отчётов. Для обработки 140 тысяч строк журнала на компьютере с процессором Pentium 4 с тактовой частотой 3 ГГц и с 1 Гб оперативной па-мяти потребовалось для всех трёх программ вместе при их последовательном запуске около 2,5 минуты.

Напоследок хочу сказать, что, поискав в Интернете от-клики по этим программам, вы обнаружите различные жа-лобы администраторов на их неудобство или даже частич-ную неработоспособность. Так, например, Sarg до сих пор останавливается на некоторых записях журнала, отказы-ваясь создавать отчёт (благо что такие записи у меня по-падаются редко). Однако все три проекта довольно актив-но развиваются и недочёты исправляются, поэтому ставь-те свежие версии программ и пользуйтесь!

1. http://pm4u.narod.ru/linux_server.htm#Calamaris3.2. Малахов П. Многоликий Apache. Размещаем несколько сай-

тов на одном веб-сервере. //Системный администратор, №12, 2005 г. – с. 63-65 (http://pm4u.narod.ru/apache.htm).

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

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

192.168.10.1 Myself192.168.10.9 Bond192.168.10.14 Bart192.168.10.30 Ivan192.168.10.74 Petrov

Myself sysadminBart Bart SimpsonIvan Ivan IvanovPetrov Petrov Semen SemenovichBond James Bond

# Генерируем отчёты прокси сервера Squid0/20 * * * * root /var/www/html/reports/lightsquid/ ↵ lightparser.pl today5 0 * * * root /usr/sbin/sarg30 0 * * * root /etc/calamaris/calam_rep.sh ↵ yesterday >> /var/log/calam_rep.log35 0 * * 6 root /etc/calamaris/calam_rep.sh ↵ week >> /var/log/calam_rep.log45 0 1 * * root /etc/calamaris/calam_rep.sh ↵ month >> /var/log/calam_rep.log

Options +IndexesOrder deny,allowDeny from allAllow from 192.168.100.11Allow from 192.168.100.17

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

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

38

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

Прошли те времена, когда загру-зочная дискета была непремен-ным атрибутом системного ад-

министратора. На смену дискетам при-шли LiveCD и загрузочные USB Flash. Выбор LiveCD для системных адми-нистраторов достаточно велик, правда, большинство дистрибутивов основа-ны на Linux (к примеру, INSERT, GRML и BackTrack). На основе же FreeBSD создано всего несколько дистрибути-вов, и почти все они ориентированы на обычного пользователя. Все, кро-ме одного.

Летом 2003 года я начал работу над проектом по созданию LiveCD-дис-трибутива для системных администра-торов на основе ОС FreeBSD. Новый дистрибутив, названный Frenzy, быс-тро стал популярным в среде русско-язычных администраторов и пользо-вателей FreeBSD. Этому способство-вала поддержка русского языка, не-большой размер, хорошая подбор-ка утилит. Версия 0.3, в которой поя-вилась поддержка сжатой файловой

системы и, как следствие, увеличи-лось количество приложений, была вы-пущена в августе 2004 года, после че-го развитие проекта приостановилось почти на два года. Благодаря помощи сообщества пользователей Frenzy ра-бота была продолжена в апреле 2006 года, и в начале мая в Интернете поя-вилась первая бета-версия Frenzy 1.0. Такой скачок номера версии связан с большими изменениями в структу-ре дистрибутива. Открытое бета-тес-тирование длилось месяц, за это вре-мя были найдены и исправлены мно-гие ошибки.

После двух месяцев активной раз-работки 5 июня вышел релиз Frenzy 1.0 (Dreamchild). Новая версия выпускает-ся в нескольких вариантах: Frenzy standard – предназначена

в первую очередь для системных администраторов. Размер дист-рибутива – 200 Мб, что позволяет уместить его на 3-дюймовый CD.

Frenzy extended – для системных администраторов и продвинутых

пользователей. Дистрибутив со-держит все программы из standard-версии, а также дополнительные приложения (в том числе просмот-рщики CHM, PDF, DjVu-форматов, эмуляторы DosBox и QEMU, муль-тимедийные проигрыватели XMMS и MPlayer). Размер дистрибутива – 250 Мб.

Frenzy lite – содержит только кон-сольные утилиты. Размер дистри-бутива – всего 50 Мб, что позво-ляет уместить его на CD-визит-ку и носить с собой в бумажнике (как я и поступил).

Немаловажным достоинством Frenzy является качественная руси-фикация системы. В отличие от мно-гих LiveCD-дистрибутивов, в которых локализации уделено мало внимания, в Frenzy поддержка русского языка присутствует изначально – проблем с ним ни в консоли, ни в графичес-кой оболочке не возникает. Кроме то-го, Frenzy отлично документирована –

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

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

Сергей Можайский

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

39№7, июль 2006

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

в ее состав входит Frenzy Handbook, описывающий основы работы с дист-рибутивом и специфичными для него программами, а также русскоязычная документация по FreeBSD (традицион-ные Handbook и FAQ). На официаль-ном сайте проекта (http://frenzy.org.ua) работает форум, где можно пообщать-ся с разработчиком и пользователями Frenzy. Также у проекта есть почтовая дискуссионная рассылка.

Дистрибутив можно свободно ска-чать (http://frenzy.org.ua/ru/releases/1.0/download.shtml) или приобрести в он-лайн-магазинах.

Начинаем работуЗ аг ру жае м с я с ко м п ак т-д и с ка . Frenzy 1.0 основана на FreeBSD 6.1-STABLE, поэтому вначале загруз-ка ничем не отличается от FreeBSD (изменен только логотип при загруз-ке), но сразу после загрузки ядра мы попадаем в меню выбора параметров загрузки (рис. 1).

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

В Frenzy 1.0 появилось два новых режима загрузки. Режим toram поз-воляет загружать Frenzy полностью в оперативную память, позволяя из-влечь компакт-диск из привода. В ре-жиме fromhdd система будет загру-жаться со сжатого образа на жестком диске (для этого папку frenzy с компакт-диска необходимо скопировать в ко-рень любого раздела на HDD), компакт-диск при этом также освободится.

Кроме того, теперь мы можем ука-зать при загрузке, что делать с разде-лами жесткого диска. В предыдущих версиях система по умолчанию пыта-лась монтировать разделы жесткого диска в режиме «только чтение», дру-гих вариантов предусмотрено не бы-ло. Теперь мы можем вообще не об-ращаться к жесткому диску (пара-метр nohdd), производить поиск раз-делов, но не монтировать их (параметр nohdmnt) или же монтировать разделы диска в режиме чтения и записи (пара-метр hdrw). Frenzy поддерживает фай-ловые системы UFS, FAT, EXT2/EXT3, NTFS, ReiserFS (последние две – толь-ко в режиме чтения).

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

учетной записью су-перпользователя, в ос-тальные можно вой-ти, используя логин root без пароля. В от-личие от стандартной FreeBSD системные сообщения не выводят-ся на первую консоль, их можно просмотреть, нажав <Alt+F12>.

Присутствует и гра-фическая система X.Org 6.9.0, в качес-тве графической оболочки использу-ется популярный оконный менеджер fluxbox. В новой версии Frenzy fluxbox настроен так, что можно перемещать и масштабировать окна, используя клавиатурные комбинации. Меню про-грамм можно вызвать, просто щелк-нув правой кнопкой мыши на рабочем столе или нажав клавишу «Windows» на клавиатуре (к чему многие при-выкли).

Меню программ в fluxbox стоит от-метить особо. В нем содержатся прак-тически все утилиты, входящие в со-став Frenzy (консольные утилиты за-пускаются в окне терминала rxvt). Кро-ме того, они рассортированы по темам, что позволяет легко найти нужную про-грамму (рис. 2).

Перечислять все программы, вхо-дящие в состав дистрибутива, можно долго – в standard-версию входит бо-лее 500 пакетов, в extended – более 600. Полный список программ, входя-

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

Набор программ для работы сетью в Frenzy весьма велик. Помимо стан-дартных утилит ping и traceroute при-сутствует полезная утилита mtr, соче-тающая в себе преимущества обеих программ. Статистику трафика, прохо-дящего через компьютер, можно пос-мотреть с помощью trafshow. Хочется отметить утилиту darkstat, выводящую статистику о проходящем трафике че-рез веб-интерфейс. Для работы с бес-проводными сетями присутствует на-бор утилит bsd-airtools и популярная утилита kismet.

Для подключения к другим компью-терам в сети можно воспользовать-ся ssh-клиентом PuTTY, терминаль-ным клиентом для Windows Terminal Services rdesktop или VNC-клиен-

Рисунок 1. Загрузочное меню Frenzy

Рисунок 2. Меню fluxbox

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

40

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

том tightvnc. Обзор сетевого окру-жения можно выполнить с помощью LinNeighborhood. Для работы с ба-зами данных есть клиенты MySQL и PostgreSQL. Есть несколько SNMP-клиентов (консольный braa и графи-ческий mbrowse) и LDAP-клиентов (консольный ldapvi, позволяющий ре-дактировать LDAP через текстовый редактор, и «иксовый» gq).

Утилита rbllookup позволит выяс-нить, внесен ли ваш IP в «черный спи-сок» на каких-либо blacklist-серверах. Для перевода форматов масок подсе-ти и их расчета пригодятся cidr, ipcalc и whatmask.

В дистрибутиве имеются утилиты для сканирования портов (естественно, не обошлось без ставшего классичес-ким сканера NMAP), получения различ-ной информации о компьютерах в се-ти – версиях ОС и установленных се-тевых служб. Не обошлось и без сниф-феров – кроме Ethereal и Ettercap, при-сутствует также стандартный tcpdump с графическим фронтэндом netdude.

Для проверки компьютеров на раз-личные уязвимости предназначена по-пулярная клиент-серверная программа nessus, о которой написаны десятки статей. Добавлю только, что в состав Frenzy входит вспомогательная ути-лита autonessus, позволяющая прово-дить сканирование компьютеров и се-тей в «пакетном» режиме без вызо-ва графического интерфейса клиента nessus. Отчет о сканировании сохраня-

ется в HTML-файле и может быть про-смотрен в любом браузере.

Проверить компьютер на наличие вирусов вы сможете с помощью анти-вирусного пакета clamav. В состав дис-трибутива входит вирусная база, ак-туальная на начало июня, поэтому пе-ред началом вирусной проверки об-новите базу утилитой freshclam. Впро-чем, в UNIX-системах намного чаще встречаются руткиты, нежели вирусы. Найти их помогут rkhunter и chkrootkit. Для удобного просмотра и анализа log-файлов, что немаловажно при анализе последствий атаки злоумышленников, в Frenzy имеются программы ccze, log_analysis, abck, logtool.

Работа с аппаратным обеспече-нием компьютера представлена це-лым рядом утилит. Информацию об

аппаратном обеспечении помогут собрать утилиты pciutils, dmidecode, udesc_dump. Для получения данных с сенсоров температуры и напряже-ния на материнской плате служат consolehm, lmmon и mbmon.

В состав дистрибутива входят ути-литы для работы с файловыми сис-темами UFS, FAT, NTFS, EXT2/EXT3, ReiserFS, XFS.

Среди утилит для работы с диском стоит отметить утилиту gpart, позво-ляющую восстановить поврежденную таблицу разделов (меня она спаса-ла неоднократно, несмотря на то, что она не всегда справляется со слож-ной разметкой диска со множеством логических разделов). Для тех же це-лей можно использовать и testdisk, ко-торый помогал мне даже в тех случа-ях, когда gpart оказывалась бессильна. Для проверки разделов жесткого дис-ка также весьма полезен будет набор утилит для восстановления файлов – fatback, fatundel, ntfsundelete. Утилиты magicrescue и foremost способны вос-станавливать файлы по известным сигнатурам даже в случае полного раз-рушения файловой системы независи-мо от ее типа.

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

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

В extended-версию Frenzy входят

Рисунок 3. Конфигурационные утилиты frconf, netconf, servconf

Запись на NTFS в FreeBSDПрактически на каждом форуме по FreeBSD появляется вопрос: «Поддерживает ли FreeBSD запись на NTFS?». Ответ на него был стандартен: «Нет, не поддерживает». Ситуация изменилась только после пор-тирования в FreeBSD популярной в Linux дистрибутивах системы FUSE (Filesystem in Userspace), позволяющую легко созда-вать драйверs для любых файловых сис-тем. Теперь после установки из портов модуля fuse и комплекта утилит ntfsprogs возможна частичная запись на NTFS (пол-ную запись драйвер linux-ntfs из состава ntfsprogs пока не поддерживает). В Frenzy такая возможность тоже имеется.

Смонтировать NTFS для записи мож-но командой:

Полностью поддерживается чтение и редактирование имеющихся файлов, частично – создание, перемещение и уда-ление каталогов и файлов. Под «частично» подразумевается, что в некоторых случаях операция проходит успешно, в некоторых – нет. Поскольку драйвер является экспери-ментальным, пользоваться возможностью записи на NTFS стоит только в случае край-ней необходимости (к примеру, для сброса пароля на установленной Windows XP с по-мощью утилиты chntpw).

ntfsmount /dev/ad0s3 /mnt/ntfs ↵ -o force

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

41№7, июль 2006

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

эмуляторы dosbox и qemu. DosBox позволяет запускать в Frenzy DOS-программы, а QEMU, являющийся свободным аналогом VMWare, позволяет запускать практически лю-бую операционную систему.

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

Настройка и установкаКроме традиционного sysinstall, в Frenzy имеется конфигу-рационный центр frconf, с помощью которого вы можете на-строить систему (рис. 3). В частности, с помощью этой ути-литы легко создать swap-файл на указанном разделе диска. Для настройки сетевых подключений предназначена утили-та netconf. С ее помощью можно настроить соединение по локальной сети, dialup-соединение, VPN-соединение (в ка-честве VPN-клиента используется mpd) и соединение через ADSL-модем. Утилита servconf предназначена для быстро-го конфигурирования и запуска различных серверов. Она позволит быстро запустить SSH-сервер, FTP-сервер, веб-сервер thttpd и сервер Samba.

Все сделанные настройки можно сохранить на диске-ту, жесткий диск или USB Flash с помощью утилиты frbk. При следующей загрузке Frenzy настройки будут восста-новлены автоматически.

Одной из самых долгожданных новинок в Frenzy 1.0 ста-ла возможность установки на жесткий диск и USB Flash. Эта возможность была добавлена по многочисленным просьбам пользователей Frenzy, которые желали видеть на своем жестком диске FreeBSD, настроенную точно так же. Процесс установки весьма прост – набираете «install2hdd» и следуете инструкциям инсталлятора. Правда, упроще-ние процесса установки привело к тому, что вся система устанавливается на один слайс, создание отдельных раз-делов для /var, /usr и т. п. не предусмотрено. Для рабочей станции это приемлемо, но для сервера такую конфигура-цию я не рекомендую.

После установки Frenzy на жесткий диск вы получите полноценную ОС FreeBSD с набором программ. Разве что исходные коды системы (src) и коллекцию портов (ports) нужно будет установить самостоятельно.

Правда, не обошлось без ложки дегтя. В установленной на жесткий диск Frenzy 1.0 после выключения питания наот-рез отказывается запускаться fsck для проверки диска. Ко-нечно, его можно запустить вручную или с LiveCD, но лучше исправить проблему сразу. Поэтому сразу после установки

редактируем файл /etc/fstab и меняем в описании точки мон-тирования корневой файловой системы нули на единицы:

Установка на USB Flash выполняется утилитой «install2flash» также просто. Утилита установки автомати-чески разбивает флешку на два раздела – один для установ-ки Frenzy (размер зависит от типа дистрибутива, 50-250 Мб), второй – для хранения данных (под него резервируется все оставшееся место).

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

Структура сборочных скриптов заметно изменилась по сравнению с предыдущими версиями. Появилась подде-ржка нескольких версий сборки – сейчас одна и та же струк-тура скриптов используется для сборки standard и extended версий как англоязычной, так и русскоязычной, достаточно лишь внести изменения в файл конфигурации. Ручное вме-шательство в процесс сборки сведено к минимуму – нуж-но положить собранные пакаджи в нужный каталог и под-править конфигурацию сборочных скриптов. Подробную информацию о работе с набором SDK можно найти в офи-циальной документации по Frenzy.

Что дальше?Естественно, развитие дистрибутива продолжается. В сле-дующей версии планируется в первую очередь включить но-вую реализацию unionfs для FreeBSD от Daichi Goto, кото-рая в настоящее время существует в виде набора патчей. Это позволит реализовать модульную структуру LiveCD (как это уже сделано в популярном чешском дистрибути-ве SLAX), что заметно упростит процесс самостоятельной сборки и модификации дистрибутива. Также планируется интегрировать tmpfs, портированную из NetBSD, которая намного выигрывает в быстродействии у mfs-реализации RAM-дисков в FreeBSD.

В недавнем обзоре на Distrowatch Frenzy был назван лучшим LiveCD-дистрибутивом на основе FreeBSD как для системных администраторов, так и для начинаю-щих пользователей. Действительно каждый может найти

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

# Device Mountpoint Fstype Options Dump Pass#/dev/ad0s1a / ufs rw 1 1

LiveCD для сисадминовКроме Frenzy, есть и другие LiveCD-дис-трибутивы, ориентированные на систем-ных администраторов. Правда, практи-чески все они основаны на том или ином дистрибутиве Linux. GRML (http://grml.org) предлагает большой набор утилит для си-садминов для восстановления системы, анализа сети и просто для работы. INSERT (http://www.inside-security.de/insert_en.html) содержит такие полезные утилиты, как ути-лита gparted для редактирования и изме-

нения размеров разделов жесткого диска, и антивирусный пакет clamav, занимая при этом всего 50 Мб. Stresslinux (http://www.stresslinux.org) предназначен специально для стресс-тестирования и мониторинга аппаратного обеспечения. И напоследок вспомним о Backtrack (http://www.remote-exploit.org/index.php/BackTrack), образо-вавшемся в результате слияния дистрибу-тивов WHAX и Auditor, который предлагает большой набор утилит для анализа безо-пасности компьютеров и сетей.

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

42

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

Бывают дефекты оборудова-ния, которые могут проявить-ся только при высоких нагруз-

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

В настоящее время существует множество утилит для тестирования железа как из Windows, так из Linux. Но необязательно, что на компьюте-рах находятся две ОС: Linux и Windows. Поэтому для тестирования удобно использовать дистрибутивы LiveCD. Но такой путь ведет к потере време-ни, если у вас много хостов, требующих тестирования. Каждый компьютер не-обходимо загружать с CD/DVD и про-гонять тесты вручную, при этом другие узлы сети будут простаивать и ждать своей очереди. Для решения пробле-мы можно использовать тестирование с загрузкой тестов через сеть по ваше-му собственному сценарию, при этом все результаты тестирования будут со-

храняться на сервере. Что мы и попы-таемся реализовать.

На сегодняшний день существует единственный специализированный для тестирования LiveCD-дистрибу-тив – StressLinux. Он работает толь-ко в режиме консоли и занимает по-рядка 50 Мб, но этого будет достаточ-но чтобы провести полноценное тести-рование. StressLinux содержит основ-ные утилиты для тестирования комп-лектующих компьютера при высоких нагрузках, утилиты для считывания информации с датчиков процессор-ной платы, а также обладает высокой гибкостью в настройках сценариев для тестирования. Вы сами сможете зада-вать сценарии тестирования, добавляя или убирая тесты. В качестве оболоч-ки в StressLinux используется busybox. Она содержит набор общих UNIX-ути-лит для работы в Linux, позаимствован-ных из GNU пакетов fileutils, shellutils и т. д. С помощью busybox можно со-здать ОС Linux, умещающуюся на од-ну дискету. Подробную информацию о проекте вы можете найти на сайте http://www.busybox.net.

Как насчет гарантии?Разработчики тестов, входящих в со-став StressLinux, сообщают: «Эти про-

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

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

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

Требования к рабочей станции – наличие сетевой карты с поддержкой PXE. Список поддерживаемых карт можно узнать здесь: (http://www.bootix.com/adapters/adapters_en.html). В ка-честве рабочей станции я буду ис-пользовать VMWare, так как это удоб-но для создания скриншотов в момен-ты загрузки системы. Тесты загру-жать в VMWare бесполезно, потому что при тестировании будет использо-ваться только та часть ресурсов, кото-рая выделена под виртуальную систе-

Автоматизируем тестирование железа с помощью StressLinux

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

Дмитрий Волков

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

43№7, июль 2006

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

default – имя сценария для загрузки по умолчанию; prompt – может принимать значения 1 или 0. Если значе-

ние 1, то перед загрузкой будет выведена строка «boot: <Имя загружаемого сценария>». Если же значение 0, то эта строка выводится только при: нажатии <Alt> или <Shift>, или при включенном CapsLock, или Scroll lock;

timeout – содержит количество секунд до начала авто-матической загрузки;

display – параметр, указывающий на файл-приветствие, будем использовать по умолчанию loader.msg:

F1 – здесь можно создать файл-help и указать все воз-можные параметры ядер;

label – это имя сценария загрузки, а сценарий может со-держать в себе 3 параметра: kernel – путь к ядру Linux или к отдельной загружа-

емой программе, например memtest; append – список параметров, передаваемых ядру; ippappend – параметр, используемый PXELinux

для указания настроек сети. Он нам не нужен, так как предполагаем, что загрузка для всех уз-лов сети общая. Параметры сети для каждого кли-ента указывает dhcp сервер. Описание всех воз-можных конфигураций файла default можно узнать (http://syslinux.zytor.com/faq.php).

Далее будем настраивать dhcp-сервер. Для этого не-обходимо установить его из вашего дистрибутива Linux, в ASP Linux это rpm – Uvh dhcp-3.0pl1-23.i386.rpm, а ес-ли же такого под рукой не имеется, тогда скачиваем его с http://ftp.isc.org/isc/dhcp. На момент написания статьи пос-ледней версией была – 3.0.4. Создаем конфигурационный файл /etc/dhcpd.conf, указав MAC-адрес одного из клиен-тов. Я буду указывать MAC-адрес VMWare. После измене-ний файл должен выглядеть так:

Надо уделить внимание опции ‘option vendor-class-identifier “PXEClient”’. Она требуется для того, чтобы dhcp передал управление серверу pxe в момент присвоения IP-адреса клиенту, а pxe в свою очередь смог отобразить меню для выбора загрузки (это меню появляется путем за-пуска бинарного файла pxelinux.0 на сетевой карте). Служ-бы dhcp и tftp можно запустить на разных узлах сети, тогда

му. Поэтому тестирование надо проводить на реальной ма-шине. А вот настройки загрузки через сеть StressLinux под VMWare проводить очень удобно, не придется бегать от сер-вера к клиенту и проверять, что же там опять не работает.

Со стороны сервера потребуется: дистрибутив StressLinux; дистрибутив Linux, функционирующий на сервере (я ис-

пользую ASP Linux 9.0); серверная часть пакетов: pxe, dhcp, tftp, nfs.

Как будет работать тестовый комплексПерезапускаем клиентскую машину и в BIOS выбираем загрузку по сети. После перезагрузки сетевая карта будет выполнять поиск DHCP-сервера. Сервер принимает за-прос и присваивает клиенту IP-адрес, pxe предлагает вы-брать загрузку: Local boot – с жесткого диска; PXELinux – появится меню для выбора загрузки одно-

го из ядер StressLinux, или загрузки отдельного теста, например теста памяти – memtest.

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

Конфигурация сервераЯ использую дистрибутив ASP Linux 9.0 на rpm-пакетах. Вам нужно использовать пакеты, входящие в состав ва-шего Linux.

Для начала скачиваем последнюю версию дистрибутива StressLinux 0.3.1 с http://www.stresslinux.org/release/stresslinux-0.3.1.pxe.tgz с поддержкой загрузки через PXE. Распаковы-ваем каталог с корневой системой StressLinux (_stresslinux) в директорию на сервере /tftpboot/X86PC/_stresslinux.

Скачиваем http://www.stresslinux.org/release/stresslinux-0.3.1.pxe_sample_configs.tgz архив с примерами конфигура-ционных файлов pxe, dhcp, tftp, nfs. Распаковываем в ката-лог /tftpboot/X86PC/pxelinux содержимое из папки pxes. Этот каталог будет использоваться для создания сценариев за-грузки рабочих станций через pxe. Каждой рабочей станции можно присвоить свой сценарий загрузки на основе её IP-ад-реса, за подробной информацией можно обратиться на сайт http://syslinux.zytor.com/pxe.php. Применим одинаковый сце-нарий загрузки для всех клиентов – default. В файл внесем изменения, указав в nfsroot адрес вашего сервера и располо-жение корневого каталога _stresslinux. Сервер имеет IP-ад-рес: 192.168.12.191. После изменений файл /tftpboot/X86PC/pxelinux/pxelinux.cfg/default будет выглядеть так:

default stressprompt 1timeout 600display loader.msgF1 loader.msg

label stress # Stresslinux kernel ../_stresslinux/boot/vmlinuz append rw video=vesafb:640x480-32@75,nomtrr,ywrap ↵ root=/dev/nfs nfsroot=192.168.12.191:/tftpboot/ ↵ X86PC/_stresslinuxip=dhcp hda=scsi hdb=scsi ↵ hdc=scsi hdd=scsi

Welcome to StressLinux Boot Server!

0fTo start the stresslinux distribution enter press ↵ <return>.07

Available boot options:

stress - Boot Stresslinux via PXE with initrd

09F1:0f Stresslinux

Subnet 192.168.12.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; default-lease-time 21600; max-lease-time 43200; host some_host{ # Указываю MAC-адрес VMWare hardware ethernet 00:0C::29:50:84:D7; fixed-adress 192.168.12.242; option vendor-class-identifier "PXEClient" }}

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

44

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

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

Перейдем к настройке предзагрузочной среды запуска – pxe. Для её установки в ASP Linux выполняю rpm –Uvh pxe-0.1-36.i386.rpm, если в вашем дистрибутиве такого пакета нет, то скачиваем с сайта http://www.kano.org.uk/projects/pxe. Изменяем конфигурационный файл /etc/pxe.conf, устано-вив 2 значения: interface – номер интерфейса на сервере, по которому

соединены сервер с клиентом; default_address – IP-адрес сервера.

Остальные параметры оставляем без изменений. Вид файла после изменений смотрите на рис. 1.

Устанавливаем tftp-server, взяв его из дистрибутива (tftp-server-0.33-1asp.i386.rpm) или с http://www.kernel.org/pub/software/network/tftp. Tftp-сервер будет использовать-ся для передачи ядра и образа ядра клиентам. Запуск его можно реализовать из-под xinetd, для этого в файле /etc/xinet.d/tftp исправить значение параметра disable с «yes» на «no» и убедиться, что в качестве рабочего каталога уста-новлен /tftpboot. А запуск из консоли можно выполнить:

Теперь подходим к финальному шагу по настройке за-грузки StressLinux – конфигурированию nfs, который будет

использоваться для доступа к корневой файловой систе-ме 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, указав строку:

Теперь запускаем программы dhcpd, pxe, tftp, nfs. Пере-загружаем клиента и выбираем загрузку по сети, в резуль-тате появится приглашение (см. рис. 2).

Выбираем PXELinux (см. рис. 3). Отображается меню StressLinux для выбора загрузочного ядра в нашем случае – это будет одно-единственное 2.6.16. Но это пока, в дальней-шем можно будет расширить список ядер и отдельных про-грамм для тестирования.

Выбираем ядро и загружаемся. Если оно загрузилось ус-пешно, тогда выводится приглашение (см. рис. 4) для вво-да логина. Вводим root без пароля.

Друг за другом появятся 2 меню для выбора раскладки клавиатуры и выбора процессорной платы соответствен-но (см. рис. 5, 6).

Если на вашей процессорной плате есть сенсоры темпе-ратуры и напряжений, то тогда во время тестирования мож-но будет наблюдать за состоянием компьютера. Вывод дан-ных реализован программой sensors из пакета lm_sensors. Список поддерживаемых процессорных плат можно узнать на http://secure.netroedge.com/~lm78/supported.html. Для по-иска требуемых модулей можно воспользоваться програм-мой sensors-detect.

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

Конфигурация нового ядраЯдро, входящее в дистрибутив StressLinux, не име-ет поддержки некоторых SCSI-контроллеров. Поэто-му можно использовать собственное ядро с подде-ржкой всего необходимого железа. При нго конфигу-рировании необходимо не забыть установить параметр CONFIG_ROOT_NFS, для того чтобы использовать корневую файловую систему nfs. Также можно добавить последнюю версию пакета lm_sensors. Для загрузки нового ядра копиру-ем его в каталог /tftpboot/X86PC/_stresslinux/boot/ и назовем vmlinuz-<номер версии ядра>. Все модули этого ядра копи-руем в /tftpboot/X86PC/_stresslinux/lib/<номер версии ядра>.

Рисунок 1. Пример конфигурационного файла pxe.conf

# in.tftpd –v –l –s /tftpboot

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

Рисунок 2. Приглашение для выбора варианта загрузки

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

45№7, июль 2006

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

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

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

Список доступных утилит для тестированияСписок основных утилит представлен в файле /tftpboot/X86PC/_stresslinux/etc/motd (см. рис. 7).

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

ров – burn-оптимизированных под разные процессоры (http://pages.sbcglobal.net/redelm);

stress – используемую в качестве инструмента для ус-тановки определенной загрузки процессора, памяти, ввода/вывода, жесткого диска (http://weather.ou.edu/%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/. Предполагаем, что компьютеров для тестирования будет много, поэтому результаты прохож-дения тестов для каждого узла будем сохранять в отдельную папку, в качестве имени папки будем использовать IP-адрес этого узла. Реализовать это можно следующим образом:

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

Перед тестированием собираем информацию об узле и сохраняем ее на сервере:

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/ ↵ X86PC/_stresslinux ip=dhcp hda=scsi hdb=scsi ↵ hdc=scsi hdd=scsi

Рисунок 3. Отображение содержимого файла loader.msg

Рисунок 4. Пример успешной загрузки ядра

Рисунок 5. Программа для ручного выбора типа клавиатуры

Рисунок 6. Программа для ручного выбора процессорной платы

#!/bin/bash

// Получаем IP-адрес узлаIP=`ifconfig|grep inet|perl -nle ↵ @ar=split(/\s+/,$_);@ar2=split(/\:/,\\$ar[2]); ↵ print \\$ar2[1]`

// Создаем каталог, если такого еще не существует if[ ! -d /home/result/$IP ]thenecho Making results dir /home/result/$IP

/bin/mkdir -p result/$IPfi// все результаты тестирования будем записывать сюдаcd /home/result/$IP

VAL=`/sbin/lsmod | grep i2c-isa`if [ x$VAL == x ]thenecho trying insert module i2c-isa

modprobe i2c-isafi

echoCollecting information

# собираем информацию о PCI-устройствах/sbin/lspci | tee lspcisleep5# собираем информацию о процессорах/usr/bin/x86info | tee x86infosleep5

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

46

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

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

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

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

Постоянное отображение состояния системы с пери-одичностью в 2 секунды можете наблюдать на /dev/tty12. Пример состояния системы во время тестирования пред-ставлен на рис. 9.

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

Дальнейшая функциональность тестирования может быть расширена добавлением других программ в составе StressLinux, и не только. Например, можно добавить обра-зы дискет загружаемых по сети для конфигурирования се-тевых карт 3com или позаимствовать некоторые DOS-ути-литы для восстановления mbr из дистрибутива Ultimate Boot CD. Дальнейшие улучшения будут зависеть только от ваших фантазий и времени, которое вы можете затратить.

Желаю успешного тестирования!

TM=20 # Таймерecho Starting 1st test | tee stress1echo Spanning 10 workers spinning on sqrt()| tee -a stress1echo waiting for $TM seconds| tee -a stress1/usr/bin/stress -v -c 10 -t $TM | tee -a stress1 &

Рисунок 7. Список программ для тестирования с кратким описанием

Рисунок 8. Пример успешного завершения теста по вычислению квадратного корня

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 fi}

Рисунок 9. Пример считывания информации с датчиков процессорной платы

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

Page 49: 044 Системный Администратор 07 2006
Page 50: 044 Системный Администратор 07 2006

48

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

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

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

Сергей Яремчук

Page 51: 044 Системный Администратор 07 2006

49№7, июль 2006

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

Сегодня на рынке существует достаточное количество пред-ложений систем хранения дан-

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

Возможности FreeNASРазработка представляет собой Open Source NAS-сервер, построенный на базе FreeBSD 6 и распространяе-мый по лицензии BSD. Отсюда и его назначение – обеспечивать неболь-шие организации и отделы надеж-ным устройством хранения информа-ции по минимальной стоимости. Раз-работкой 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 (сейчас полным ходом идет работа по подде-ржке LDAP, планируется еще NIS и Radius).

Загрузка системы возможна не только с жесткого диска, но и с USB-устройства. Например, можно исполь-зовать flash-карту, т.к. размер установ-ленной системы не превышает 17 Мб), такой вариант может быть полезен при использовании программного RAID.

Так как под него могут форматировать-ся диски полностью, нельзя использо-вать загрузочный диск как часть RAID. На сайте доступен образ, оптимизиро-ванный под VMWare. Для настройки уже установленной системы исполь-зуется веб-интерфейс. За время раз-вития с сайта SourceForge.net FreeNAS

разных версий был скачан более 85 тысяч раз.

Установка FreeNASДля установки и использования FreeNAS понадобится компьютер, как минимум, с 96 Мб оперативной па-мяти, сетевой картой и одним или бо-

Рисунок 1. Вся настройка происходит посредством удобного веб-интерфейса

Рисунок 2. В пункте «System: General setup» настраиваются основные параметры сервера

Page 52: 044 Системный Администратор 07 2006

50

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

лее жестким диском. Если планирует-ся использование RAID 5, для которо-го требуется 3 диска, а загрузка с USB невозможна, то поступите следующим образом. На период установки вместо одного из жестких дисков устанавли-вается CD-ROM, а после производит-ся обратная замена.

Размер iso-образа дистрибути-ва – 30,2 Мб, записываем его на диск и загружаемся. В процессе инициа-лизации системы будут выданы со-общения о наименовании жестких дисков (CD cd0, disk0 и т. д) и най-денных сетевых устройств. После за-грузки будут выданы установки сис-темы по умолчанию: LAN-сетевой ин-терфейс и его IP-адрес. Вся первона-чальная настройка происходит при по-мощи консоли установки – FreeNAS console setup.

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

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

Если вы планируете использо-вать только один диск в системе (для загрузки и хранения информа-ции), то выбирите 2-й пункт. В этом случае в пределах одного слайса бу-дет создано два раздела: небольшой 17 Мб для FreeNAS и остальное про-странство будет отведено под дан-ные.

Для установки потребуется ввести имя исходного привода CD-ROM и за-тем имя диска, на который будет про-изводиться установка. Программа ус-

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

После установки программа со-общила, что FreeNAS был установлен на первый раздел ad0s1 слайса. Сис-тема подсказывает, что, для того что-бы использовать созданный раздел с данными, необходимо добавить диск на странице Disks:Management и точ-ку монтирования на странице Disks:Mount point.

Запомним это. Нажимаем <Enter> для продолжения и, выбрав 5-й пункт консоли, перезагружаем систему.

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

терфейсов в меню выбираем 1-й пункт. Будет выведен список найденных ус-тройств (в том числе и fireware), акти-вированное сетевое устройство будет помечено как up.

Если в системе установлено не-сколько сетевых карт, то, кроме LAN-интерфейса (в моем случае это ed0), система запросит выбрать и Optional 1 и пр. Вместо цифры можно указать бук-ву a (т.е. auto-detection), тогда систе-ма сама попробует определить интер-фейс, нажав на <Enter>, можно перей-ти к следующему этапу.

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

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

System

General Setup

Установка имени сервера, адресов DNS-серверов, изменение пароля администратора, протокола работы WebGUI http/https, при необходимости и порта, на котором он будет работать (по умолчанию 80/443), часового пояса, данных NTP-серверов

Static routes Управление маршрутизацией

Firmware Загрузка и установка обновлений

AdvancedУстановка сгенерированных на внешних источниках SSL-ключей и сертификатов, отключение «Console menu», проверки обновлений, спикера, включение демона S.M.A.R.T и некоторые другие настройки

Interfaces LAN и пр.

Настройка сетевых интерфейсов. Здесь можно установить IP-адрес, шлюз, изменить MTU, выставить скорость интерфейса и режим работы – half/full duplex, а также Device polling, позволяющий регулировать опрос сетевых устройств

Disks

Management Управление дисками, форматирование разделов под UFS, FAT и Software RAID, инициализация iSCSI

Software RAID Создание и управление, получение информации о Software RAID

Mount Point Работа с точками монтирования

Services –

Настройка протоколов CIFS, FTP, NFS, RSYNCD, SSHD и AFP. По умолчанию все отключено, поэтому первоначально необходимо активировать протокол, установив Enable в правом верхнем углу во вкладке, соответствующей нужному протоколу

Access – Настройка локальных пользователей и групп, а также параметров доступа к Active Directory. Пункты NIS и RADIUS пока не работают

Status – Просмотр системной информации (загрузка системы, процессы), сетевых проводных и беспроводных интерфейсов, дисковых устройств

Diagnostics

Logs Просмотр файлов журналов (системных и сетевых сервисов) и настройка отправки выбранных сообщений внешнему syslog-серверу

InformationsВывод информации о дисках, дисковых разделах и свободном месте, SMART, точек монтирования, статус программного RAID, iSCSI. И сюда же поместили статус Active Directory

Ping/TracerouteВыполнение команд ping и traceroute, для чего достаточно ввести IP-адрес или имя узла. Доступно изменение ряда параметров (интерфейс, количество попыток, максимальное количество узлов)

Execute command Здесь можно вручную выполнить любую команду на сервере, результат будет выведен в браузере, поддерживается история команд. Кроме того, отсюда можно загрузить файлы с сервера и на него

ARP Table Вывод ARP-таблицы (соответствие IP- и МАС-адресов, и имени узла)

Backup/restore Сохранение и восстановление настроек системы

Factory defaults Установка первоначальных параметров (возможно и через пункт 4 – «console setup»)

Reboot systemShutdown system Перезагрузка и выключение сервера

Разделы веб-интерфейса FreeNAS

"FreeNAS console setup""*********************"1) Interfaces: assign network ports2) Set up LAN IP address3) Reset webGUI password4) Reset to factory defaults5) Reboot system6) Ping host7) Install on HD/CF/USB Key8) Shell9) PowerOff system

"FreeNAS Install""*********************"1) Install on HD, CF or USB key: Create 1 UFS partition2) Install on HD: Create 2 UFS partitions (FreeNAS and DATA)3) Return to main menu

Page 53: 044 Системный Администратор 07 2006

51№7, июль 2006

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

ко интерфейсов можно использовать только для доступа к серверу FreeNAS из разных сетей.

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

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

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

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

Настройка NAS в рабочей группеОливер Кохард, по его словам, бу-дет активно заниматься документа-цией проекта уже после релиза 1.0, сейчас на сайте доступен документ «FreeNAS Setup and User guide», ко-торый дает довольно общие поня-тия процесса (хотя почитать его сле-дует). Поэтому в завершение статьи небольшой практический пример. На-строим FreeNAS с одним диском в не-большой рабочей группе, использую-щей в качестве клиентов компьютеры с MS Windows.

После регистрации в системе не-обходимо первым делом установить имя сервера, протокол работы сменить на защищенный и поставить новый па-роль администратора, а также выбрать свой часовой пояс. Заходим в «System: General setup» и заполняем соответс-твующие поля (рис. 2). Для того чтобы изменения вступили в силу, потребует-ся перезагрузка системы, но это мож-но сделать и после выполнения следу-ющей операции.

В «Disks: Management» нажимаем на «+» и попадаем в пункт, позволя-

ющий добавить новый диск. Выбира-ем в выпадающем списке «Disk» диск, с которым будем работать (рис. 3), при необходимости устанавливаем для не-го режим работы UDMA, параметры перехода в standby, Advanced Power Management и acoustic. После чего на-жимаем «Add». Новый диск появит-ся в «Disks: Management», остальные диски добавляются аналогично. Пос-ле того как в систему будут добавлены все диски, нажимаем «Аpply changes», для подтверждения изменений и те-перь перезагружаемся.

Чтобы зайти на сервер через веб-консоль, используем уже прото-кол HTTPS, т.е. адрес выглядит так: https://192.168.0.1/, после чего прини-маем сертификат сервера.

Диски добавлены, теперь оче-редь точек монтирования. Выбираем в «Disks: Mount Point» и нажимаем «+». В выпадающем меню «Disk» (рис. 4) выбираем жесткий диск, в «Partition» – номер раздела в слайсе (первый раз-дел сейчас занят под систему, поэтому выбираем 2), в «File System» устанав-ливаем файловую систему UFS и за-

Рисунок 3. Окно добавления нового диска

Рисунок 4. Создание новой точки монтирования

Page 54: 044 Системный Администратор 07 2006

52

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

не видать. При установке «Time server» в «Yes» сервер FreeNAS может высту-пать сервером времени для клиен-тов. Закончив со всеми настройками, жмем «Save».

Теперь последний шаг – созда-ние локальных пользователей. Здесь все так же просто. Сначала необхо-димо создать хотя бы одну группу, если поступить наоборот, то это мо-жет привести к ошибкам и в тяжелой ситуации к использованию «Factory defaults». Переходим в «Access: Users: Groups», нажимаем «+» и вводим на-звание группы (например, user) и ее описание. Теперь в «Access: Users» заводим пользователя, указав имя, пароль, группу. Для отдельных поль-зователей можно разрешить до-ступ к серверу по SSH, включив «Full Shell» (администратору он разрешен по умолчанию).

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

Если сейчас набрать в строке бра-узера на клиенте \\netbios-имя\ (или \\192.168.0.1\), то после ввода имени и пароля пользователя увидим новый ресурс, в котором можно читать и со-здавать файлы.

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

Сервер FTP настроить так же легко, только у меня не получилось добиться вывода русских имен файлов, тогда как с SMB таких проблем не было.

Подводим итогиДистрибутив сам по себе интересен. В нем сочетаются небольшой размер, хорошие возможности, интерфейс, обеспечивающий удобство настройки и понятный даже новичку. Для повсед-невной работы его возможностей бо-лее чем достаточно, командную строку придется задействовать только для бо-лее тонких настроек. Как бы то ни бы-ло, FreeNAS является хорошей альтер-нативой для построения простого NAS сервера, без необходимости установки полной версии GNU/Linux или какой то из BSD-систем.

Рисунок 5. Настройка доступа к серверу для Windows-сети

Рисунок 6. Добавление локального пользователя

Рисунок 7. FTP-сервер FreeNAS не умеет отображать имена файлов в кириллице

полняем поля «Share Name» и описа-ние ресурса «Description». Далее нажи-маем «Save» и в основном окне «Apply changes».

Теперь необходимо сделать доступ-ным новый дисковый ресурс по се-ти. Переходим в «Services: CIFS», для

включения сервиса ставим галочку в Enable (рис. 5). В поле «Authentication» выбираем метод аутентификации (ано-нимный, локальный и Active Directory). Последнего сервиса в маленькой груп-пе нет, если выставить Anonymous, то доступ к серверу сможет получить любой пользователь сети. Мы же хо-тим ограничить доступ для непро-шеных гостей и поэтому выставля-ем «Local User». В полях NetBiosName и Workgroup прописываем имя серве-ра, под которым он будет виден в сети NetBios, и рабочую группу. Параметр «Dos charset» выбираем как ACSII, ина-че русских букв в именах файлов вам

Page 55: 044 Системный Администратор 07 2006

53№7, июль 2006

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

Доступ всегда и вездеОбеспечивая удалённый доступ во внутреннюю сеть компании приходит-ся учитывать множество факторов. На-пример, ситуации, когда установить со-единение между клиентом и сервером не возможно. Причина может быть про-ста – системные администраторы гос-тевой сети, из которой сотрудник ва-шей фирмы пытается произвести под-ключение, закрыли возможность всех исходящих соединений, а доступ к веб-ресурсам осуществляется через «про-зрачный» прокси-сервер. В такой си-туации установить VPN-соединение, используя стандартные решения типа pptp и IPsec, не возможно.

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

сеть. Разумеется, мобильные пользо-ватели обязаны (как правило, на уров-не корпоративного стандарта) не ста-вить опцию хранения пароля на учёт-ную запись доступа VPN, но... вы много таких пользователей видели? Мне пока не довелось ни одного. Поэтому пред-почтительно ввести дополнительные средства безопасности доступа к внут-ренней сети компании. Другими слова-ми, использовать двухфакторную ав-торизацию пользователей – програм-мным и аппаратным способом. Речь идёт о ключах eToken, которые могут использоваться для безопасного хра-нения сертификатов для шифрования и дешифрования данных или автори-зации в различных системах.

И последнее (по счёту, но не по важ-ности), что хотелось бы упомянуть – возможность получения доступа не только к файлам на серверах ком-пании, но и к другим ресурсам. Напри-

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

Как мы будем решать задачуВоспользуемся следующими програм-мными и аппаратными средствами: OpenVPN, работающим под Linux,

в качестве поставщика защищён-ного частного канала связи;

программами htc и hts для орга-низации http-тунеля через прокси-сервера;

eToken PRO от компании Alladin.

Вы можете использовать аналогич-

OpenVPN: доступ повышенной проходимости

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

Алексей Коршунов

Page 56: 044 Системный Администратор 07 2006

54

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

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

Рассмотрим каждый пункт отдельно.

OpenVPNСистема OpenVPN [1] выбрана для реализации решения не случайно. Это программное обеспечение весьма ак-тивно обновляется разработчиками. OpenVPN позволяет реализовать практически любые задачи по организации VPN-каналов.

Среди достоинств системы: поддержка большинства операционных систем – Linux,

Windows версий 2000/XP и выше, OpenBSD, FreeBSD, NetBSD, Mac OS X, Solaris;

возможность использовать все доступные OpenSSL-ме-тоды шифрования, аутентификации и сертификатов для защиты вашего частного канала;

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

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

возможность создавать безопасное подключение типа «мост» (ethernet bridges);

возможность использования как udp, так и tcp для VPN-канала.

И это далеко не полное перечисление функционала OpenVPN. Система постоянно дорабатывается, количест-во возможностей увеличивается.

Туннель http с использованием htc и htsЭто маленькие программы, одна из которых запускает-ся на сервере, а другая соответственно на клиенте. Они не нуждаются в особых настройках и запускаются прос-той командной строкой. Ниже мы рассмотрим их более подробно.

eToken-ключДля наших целей подойдёт любой аппаратный ключ, пред-назначенный для безопасного хранения цифровых серти-фикатов. eToken PRO – защищенное устройство, предна-значенное для строгой аутентификации, безопасного хра-нения секретных данных, выполнения криптографических вычислений и работы с асимметричными ключами и циф-ровыми сертификатами. USB-ключ архитектурно реализо-ван как USB-картридер с встроенной в него микросхемой (чипом) смарт-карты. Ключ выполнен в виде брелка и на-прямую подключается к USB-порту компьютера, при этом не требует для своей работы каких-либо дополнительных устройств.

Подобных аппаратных средств на рынке представлено огромное множество, и вы можете выбрать наиболее оп-тимальное для ваших целей устройство. Приятная особен-ность состоит в том, что вы один и тот же ключ может ис-пользоваться для разных задач – производить авторизацию для доступа по Wi-Fi в сеть, для установления VPN-соеди-нения и для шифрования данных на жёстком диске.

Вам потребуется только сам ключ и свободно распро-страняющаяся утилита для работы с ним.

Итак, перейдём к решению поставленной задачи.

Установка OpenVPN-сервераВоспользуемся Gentoo Linux для установки системы OpenVPN. Прежде всего убедитесь, что ядро Linux содер-жит все необходимые модули. Для этого зайдите в конфи-гуратор ядра и обратите внимание на запись, относящую-ся к TUN/TAP-драйверам.

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

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

С текущей версией ebuild система установит OpenVPN версии 2.0.6. Для использования eToken придётся пройти по дереву портов и принудительно установить более новую версию (на данный момент 2.1_beta14).

Кроме того, может потребоваться установка дополни-тельных пакетов. Поэтому я рекомендую на время установ-ки системы просто раскомментировать в /etc/make.conf оп-цию ACCEPT_KEYWORDS нужной архитектуры (в моём случае это «~x86»), позволив системе установить всё не-обходимое.

Опция SSL необходима для поддержки OpenSSL, а examples установит примеры конфигурационных файлов OpenVPN. В противном случае никаких примеров не будет и файлы настроек придётся писать, что называется, с чис-того листа.

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

И то и другое находится в директории /usr/share/openvpn. В поддиректории easy-rsa содержатся скрипты на все слу-чаи жизни, позволяющие создавать: корневой сертификат (build-ca); ключ и сертификат сервера (build-key-server); простые ключи для клиентов (build-key); ключи для клиентов, защищённые паролем (build-key-

pass); ключи PKCS для необходимой нам возможности исполь-

зовать eToken (build-key-pkcs12).

Device Drivers ---> Network device support ---> <*> Universal TUN/TAP device driver support

# USE='ssl examples' emerge openvpn

# echo net-misc/openvpn >> /etc/portage/package.keywords# USE="ssl example" emerge openvpn

Page 57: 044 Системный Администратор 07 2006

55№7, июль 2006

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

Первоначально создадим все необходимые сертифи-каты и ключи для сервера.

Последняя команда создаёт PKCS12-ключи для поль-зователя. Client1 – это имя пользователя. Команда долж-на быть выполнена для каждого предполагаемого клиен-та. Обратите внимание, что при создании ключа вы може-те защитить его дополнительно паролем.

Настройка OpenVPNКонфигурационный файл OpenVPN (называющийся по-умолчанию server.conf) снабжён подробными комментари-ями и позволяет без проблем выставить все необходимые настройки без использования какой-либо дополнительной документации.

Сначала укажем, по какому адресу и на каком порту бу-дет работать наш сервер:

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

Выберем, как будет работать наш VPN: по tcp или udp. Для этого есть соответствующая опция:

или

Так как мы собираемся сделать возможным доступ че-рез веб-прокси-сервер гостевой системы, то выберем proto tcp.

Выберите тип сетевого устройства, которое будет ис-пользоваться. dev tun0 – в случае организации обычного VPN; dev tap0 – если вы хотите использовать подключение

типа «мост».

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

В секции описания ключей напишем полный путь до на-шего ключа:

Обратите внимание, что одновременно может исполь-зоваться только либо ключ pkcs12, либо «стандартные» ca,

cert и key. Если будут выставлены пересекающиеся опции, система откажется запускаться.

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

Если вы собираетесь использовать подключение типа «мост», то потребуется другая опция (параметр server за-комментируйте, так как сервер может единовременно ра-ботать только в одном качестве):

где: первый и второй параметры – адрес и маска локальной

сетевой карты сервера; третий и четвёртый параметры – пул адресов для вы-

дачи внешним клиентам.

Опция, которую мы пропустили:

содержит имя файла, в котором будут храниться соответс-твия клиентов (по именам их ключей) и их внутренним ад-ресам, которые им выдаёт система OpenVPN.

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

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

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

Опции:

указывают, какой DNS использовать клиентам для преоб-разования имён в IP-адреса внутри нашей локальной сети, и позволять ли клиентам VPN взаимодействовать между собой. Это может быть полезно, если есть необходимость обмена файлами между двумя пользователями.

Если вам по какой-то причине нужно позволить двум независимым клиентам VPN использовать одновремен-но идентичные сертификаты – раскомментируйте опцию duplicate-cn.

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

local Х.Х.Х.Хport 443

proto tcp

proto udp

pkcs12 /etc/openvpn/easy-rsa/keys/server.p12dh /etc/openvpn/easy-rsa/keys/dh1024.pem

server 192.168.4.0 255.255.255.0

server-bridge 192.168.1.73 255.255.255.0 192.168.1.61 ↵ 192.168.1.63

ifconfig-pool-persist /etc/openvpn/ipp.txt

push "route 192.168.1.0 255.255.255.0"push "route Х.Х.Х.Х 255.255.255.255"

push "dhcp-option DNS 192.168.1.1"client-to-client

# cd /etc/openvpn/easy-rsa# source ./vars# ./clean-all# ./build-ca# ./build-key-pkcs12 --server server# ./build-dh# ./build-key-pkcs12 –-pkcs12 client1

Page 58: 044 Системный Администратор 07 2006

56

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

Настройка шлюза локальной сетиЕсли ваш сервер OpenVPN не является основным шлю-зом локальной сети – потребуется добавить маршрутиза-цию для VPN-подсети. Так как в моей сети используется Cisco 2621 в качестве основного шлюза, я добавил марш-рут на ней командой:

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

Добавление маршрута на Linux-шлюзе производится командой:

где первый адрес – это наша виртуальная подсеть, а вто-рой – адрес внутреннего интерфейса сервера OpenVPN.

Если не сделать вышеописанных действий, пакеты из ло-кальной сети не смогут найти «дорогу» до VPN-клиента.

Обеспечение доступа к внешнему ресурсу для VPN-клиентовДля того чтобы позволить VPN-клиентам попадать на наш почтовый сервер, находящийся во внешнем мире отно-сительно нашей рабочей сети, воспользуемся услугами iptables.

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

Если правила на вашем firewall настроены по принци-пу «всё запретить, нужное разрешить», то не забудьте до-бавить разрешения на пересылку пакетов с интерфей-са tun0.

Запускаем серверПришло время запустить OpenVPN-сервер и посмот-реть, что будет в журнальном файле. Обратите внимание: по умолчанию скрипт /etc/init.d/openvpn настроен на рабо-ту с конфигурационным файлом /etc/openvpn/openvpn.conf, а вовсе не server.conf, который идёт в примерах. Итак, за-пускаем наш сервер:

В журнальном файле вы должны увидите приблизитель-но следующий результат работы:

Также обратите внимание на вывод команды ifconfig, ко-торый должен показать, что в системе появилось новое се-тевое устройство tun0.

Если устройство не появилось, то внимательно просмот-рите журнал и файл конфигурации.

Не забудьте добавить сервис OpenVPN в список авто-матически запускаемых, а также сохранить новые прави-ла iptables в вашем списке.

Установка и настройка клиента OpenVPNТеперь, когда первая половина настройки нашей системы завершена, самое время приступить к установке клиент-ской части программы (клиенты Linux и Windows-систем).

Устанавливаем Linux VPN-клиентКлиент на Linux-системе может потребоваться вот в каком случае. Допустим, у вас есть удалённые интранет-серве-ры, ресурсы которых вы хотели бы использовать в своей локальной сети. Нет ничего проще! Вы просто подключае-те эти системы к VPN и пользуйтесь. Особенно это может оказаться полезным, если сервер является локальным для какой-нибудь удалённой сети.

Как и в случае с настройкой серверной системы, убеди-тесь в наличии необходимых модулей в ядре.

В Linux клиентская часть от серверной отличается толь-ко конфигурационным файлом. Этот файл значительно ко-роче и снабжён подробными комментариями.

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

Скопируем на клиентскую систему необходимые для ра-боты ключи и сертификаты:

и укажем их в конфигурационном файле

ip route 192.168.4.0 255.255.255.0 192.168.1.73

# route add -net 192.168.4.0/24 gw 192.168.1.73

# /etc/init.d/openvpn start

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 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)

Sat Jun 17 22:54:42 2006 us=295361 OpenVPN 2.0.6 i686-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jun 15 2006Sat Jun 17 22:54:42 2006 us=569088 Diffie-Hellman initialized with 1024 bit keySat 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

clientdev tunproto tcpremote openvpn.domain.ru 443

ca.crt, client1.crt, client1.key

ca /etc/openvpn/easy-rsa/keys/ca.crt

Sat Jun 17 22:54:42 2006 us=799376 TUN/TAP TX queue length set to 100Sat Jun 17 22:54:42 2006 us=799409 /sbin/ifconfig tun0 192.168.4.1 pointopoint192.168.4.2 mtu 1500Sat 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.2Sat Jun 17 22:54:42 2006 us=827291 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]Sat Jun 17 22:54:42 2006 us=912828 GID set to nobodySat Jun 17 22:54:42 2006 us=912911 UID set to nobodySat Jun 17 22:54:42 2006 us=912950 Listening for incoming TCP connection on Х.Х.Х.Х:443Sat 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:443Sat Jun 17 22:54:42 2006 us=913042 TCPv4_SERVER link remote: [undef]Sat Jun 17 22:54:42 2006 us=913072 MULTI: multi_init called, r=256 v=256Sat Jun 17 22:54:42 2006 us=913136 IFCONFIG POOL: base=192.168.4.4 size=62Sat Jun 17 22:54:42 2006 us=913348 MULTI: TCP INIT maxclients=10 maxevents=14Sat Jun 17 22:54:42 2006 us=913382 Initialization Sequence Completed

Page 59: 044 Системный Администратор 07 2006

57№7, июль 2006

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

На этом настройка клиентской системы завершена, и вы можете её использовать. Запускать можно, просто пере-именовав файл из client.conf в openvpn.conf или же коман-дной сторокой:

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

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

Не забудьте добавить сервис в список автоматически запускаемых.

Устанавливаем Windows OpenVPN-клиентOpenVPN в Windows-системе обладает графическим ин-терфейсом (GUI), что значительно упрощает работу с ним для пользователей. По адресу [2] всегда можно найти све-жую версию программы. Рекомендую хотя бы первый раз скачать полный инсталяционный пакет (на данный момент это openvpn-2.0.7-gui-1.0.3-install.exe), так как в нём содер-жатся драйвера для TUN/TAP-интерфейсов. В последс-твии можно скачивать обновления только самой програм-мы. (Application only по ссылке.)

Среди достоинств и удобств клиента можно выделить: отображение иконки программы в системном трее; свертывание окна журнала соединения сразу после ус-

тановления сессии;

просмотр журнал соединения (вызов из контекстного меню);

изменение настроек конфигурационного файла (вызов из контекстного меню);

использование OpenVPN в качестве системного сер-виса;

окно ввода пароля на цифровой сертификат для аутен-тификации на сервере;

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

изменение пароля на защищённый ключ (в том числе PKCS # 12);

настройка используемого прокси-сервера; использование настроек прокси-сервера из опций

Internet Explorer; выполнение скрипта (bat) перед и/или после соедине-

ния с сервером OpenVPN; индикация статуса соединения в системном трее.

Помните, что в версиях Windows младше 2000/XP OpenVPN-клиент работать не будет. Но думаю, в наше время такие версии операционных систем встречаются редко.

После установки клиента в меню программ появляется пункт OpenVPN с богатым выбором: ссылка на папку с конфигурационными файлами; на папку с примерами; программа формирования статического ключа; программа создания сертификата и формирования за-

проса на его подпись; программа-клиент OpenVPN; ссылки на различную документацию.

Конфигурационный файл, как и все предыдущие, снаб-жен комментариями и ничем не отличается от файла для клиента Linux-системы. Разница только в расширении фай-ла. Если в Linux оно было «conf», то в Windows – opvpn. По-этому описывать настройки смысла не имеет, можно сме-ло заимствовать их из предыдущего примера.

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

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

cert /etc/openvpn/easy-rsa/keys/client1.crtkey /etc/openvpn/easy-rsa/keys/client1.key

Sun Jun 18 20:32:02 2006 TUN/TAP device tun0 openedSun Jun 18 20:32:02 2006 /sbin/ifconfig tun0 192.168.4.30pointopoint 192.168.4.29 mtu 1500Sun Jun 18 20:32:02 2006 /sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.4.29Sun Jun 18 20:32:02 2006 /sbin/route add -net Х.Х.Х.Х netmask 255.255.255.255 gw 192.168.4.29Sun Jun 18 20:32:02 2006 /sbin/route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.4.29Sun Jun 18 20:32:02 2006 GID set to nobodySun Jun 18 20:32:02 2006 UID set to nobodySun Jun 18 20:32:02 2006 Initialization Sequence Completed

# openvpn /etc/openvpn/client.conf

Page 60: 044 Системный Администратор 07 2006

58

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

файла – ca.crt и сертификат соответствующий (по имени) данному клиенту с раширением p12.

Теперь нам необходимо импортировать сертифи-кат в имеющийся в нашем расположении Alladin eToken. Для этого скачаем (если ещё не установлено) программное обеспечение по работе с ключом RTE по ссылке [3].

После установки полученной программы в меню про-грамм появится папка eToken с единственной ссылкой на программу eToken properties (см. рис. 1).

Вставив наш ключ в USB-порт, мы увидим его в окне программы. Перейдя на иконку ключа и выбрав «Дополни-тельно», введем PIN-код для доступа к ключу. Это даст воз-можность импортировать сертификат (см. рис. 2).

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

Теперь мы можем убедиться, что сертификат известен нашей Windows-системе, а заодно узнать, как к нему будет обращаться клиент OpenVPN. Для этого проследуем в «Па-нель управления», где выберем «Свойства обозревателя». В этом окне нас интересует только вкладка «Содержание» и кнопка «Сертификаты» (см. рис. 3).

Выделим наш сертфикат и кликнем на «Просмотр», в открывшемся окне выбирем «Состав». Здесь нас ин-тересует поле «Отпечаток», которое скопируем в буфер обмена.

Полученную информацию об отпечатке сертификата внесём в конфигурационный файл нашего OpenVPN-кли-ента.

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

В случае ошибки убедитесь, что ключ вставлен в USB-порт, а предыдущие шаги выполнены верно.

После подтверждения доступа к ключу в том же окне ввода будет отображаться журнал соединения с сервером. Окно автоматически скроется, как только соединение будет успешно установлено. Вернуться к журналу всегда можно, выбрав в контекстном меню «View log». Осталось попро-бовать выполнить команду ping для какого-нибудь из ком-пьютеров удалённой локальной сети и убедиться, что всё работает правильно.

Теперь, когда всё уже настроено и работает, пора вер-нуться к ситуации, когда доступ во внешний мир ограни-чен веб-ресурсами. А для его предоставления использует-ся прозрачное проксирование.

hts и htcЭти две программки легко устанавливаются и ещё про-ще используются. Суть их работы состоит в том, что пер-вая «слушает» указанный ей порт (в нашем случае это бу-дет 80, доступ к которому есть везде) и в случае инициа-ции соединения создаёт http-тунель.

Вторая же наоборот слушает 443 порт и инициирует с удалённой htc-соединение через 80 порт.

Установка htc в Gentoo Linux на сервере выполняется простой командой:

Для Windows-систем скачать httptunnel можно со стра-ницы проекта по ссылке [4].

Использовать httptunnel весьма просто. Для запуска на сервере достаточно команды:

где указан IP-адрес и порт, на которые должен быть уста-новлен туннель в случае обращение на порт 80. Команда выполняется без какого-либо вывода на экран. О резуль-татах её выполнения можно узнать только из системного журнала (например, /var/log/messages).

Команда netstat подтверждает нам, что hts действитель-но работает и «слушает» 80-й порт.

Осталось сделать Windows-скрипт (bat) для запуска кли-ентской части httptunnel. Этот файл мы создадим в папке c:\program files\openvpn\config и назовём hts_pre.bat. А в сам файл добавим только одну строку:

Jun 18 01:47:28 admin hts[27389]: hts (httptunnel) 3.3 started with arguments:Jun 18 01:47:28 admin hts[27389]: me = htsJun 18 01:47:28 admin hts[27389]: device = (null)Jun 18 01:47:28 admin hts[27389]: port = 80Jun 18 01:47:28 admin hts[27389]: forward_port = 443Jun 18 01:47:28 admin hts[27389]: forward_host = Х.Х.Х.ХJun 18 01:47:28 admin hts[27389]: content_length = 102400Jun 18 01:47:28 admin hts[27389]: strict_content_length = 0Jun 18 01:47:28 admin hts[27389]: use_std = 0Jun 18 01:47:28 admin hts[27389]: debug_level = 0Jun 18 01:47:28 admin hts[27389]: pid_filename = (null)

cryptoapicert "THUMB:ed 38 ac 63 …" ca ca.crt

# emerge httptunnel

# hts --forward-port Х.Х.Х.Х:443 80

# netstat -napl |grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27389/hts

Рисунок 3. Список доступных сертификатов

Page 61: 044 Системный Администратор 07 2006

59№7, июль 2006

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

где: -F 443 – указывает порт, являющийся итоговым полу-

чателем; -P 192.168.1.1:3128 – IP-адрес и порт прокси-сервера

гостевой системы; X.X.X.X:80 – собственно адрес серверной части

httptunnel.

Выбор места создания и имени файла для скрип-та не случаен. Как было уже сказано выше, OpenVPN для Windows умеет выполнять bat-файлы до соедине-ния, сразу после соединения и после завершения сессии. Для этого достаточно выполнить всего два условия. Со-здать bat-файл в директории конфигурационных файлов OpenVPN и назвать файл по следующей схеме: Назвать файл xxx_pre.bat для выполнения скрипта не-

посредственно перед соединением. Назвать xxx_up.bat для выполнения сразу после уста-

новления соединения. Назвать ххх_down.bat для завершающего сессию скрип-

та.

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

Предполагаю, есть средство, позволяющее избежать «вечно открытого» окна, но с ходу я его не обнаружил

(может быть, потому что не силён в написании скриптов для Windows). Если вам способ известен – тем лучше.

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

Теперь наша система полностью настроена и готова работать в практически любых условиях. Этакий макси-мально защищённый «вседорожник» на просторах Ин-тернета!

Насколько мобильным может быть OpenVPNСистема OpenVPN позволяет использовать удалённую ло-кальную сеть практически в любых условиях. Но помимо компьютеров (в том числе и ноутбуков), как вам известно, существуют ещё более «мобильные» устройства. Я гово-рю о коммуникаторах и наладонниках (КПК). В большинс-тве из них (например, в устройствах на базе Windows Mobile или Symbian) есть либо встроенное средство установле-ния VPN-соединения, либо можно установить программное обеспечение стороннего производителя.

Однако из-за использования в системе OpenVPN TUN/TAP простые средства соединения не подойдут. И най-ти их для устройств данного класса, увы, пока не возмож-но. Изыскания в Интернете дали только информацию о ве-дущихся разработках реализации возможности использо-вания OpenVPN. (Сейчас ссылка на информацию об этом есть уже и на главной странице проекта. [5])

Правда, есть одно исключение. Если вы обладатель КПК Sharp Zaurus и давно собирались установить на него Linux, то вполне сможете использовать ваш VPN. Драйвера и не-обходимый софт для этого можно найти на просторах Ин-тернета. Он используется многими людьми. Необходимые файлы можно взять, например здесь [6].

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

1. http://openvpn.net2. http://openvpn.se/files/install_packages3. http://www.alladin.ru/support/download/category1774. http://userpages.umbc.edu/~tmoses1/hypertunnelNT.zip5. http://www.ziggurat29.com/OVPNPPCAlpha/OVPNPPCAlpha.htm6. http://users.skynet.be/isa-et-pep/pep/zaurus/feedРисунок 4. Удача и поражение

C:\httptunnel\htc.exe -F 443 -P 192.168.1.1:3128 X.X.X.X:80

Page 62: 044 Системный Администратор 07 2006

60

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

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

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

Дмитрий Щербаков

Page 63: 044 Системный Администратор 07 2006

61№7, июль 2006

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

С помощью Systems Management Server (SMS) вы сможете цент-рализованно развертывать про-

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

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

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

Официальная страничка в Интер-нете, посвященная SMS, находится по адресу: http://www.microsoft.com/smserver/default.mspx.

На данный момент готовится к вы-ходу версия SMS 2003 R2, последнее обновление – Service Pack 2.

Требования к аппаратному обеспе-чению сервера: Процессор 550 МГц и мощнее. Оперативная память 256 Мб и боль-

ше. Минимум 2 Гб свободного мес-

та на жестком диске на разделе NTFS.

Сетевая карта.

Требования к программному обес-печению: Windows 2000 Server SP4 и выше. IIS. Microsoft SQL Server 7.0 SP3 и вы-

ше, SQL Server 2000 SP3a или SQL Server 2005 (SQL Server не обя-зательно должен быть установлен на одном компьютере с SMS).

SMS 2003 поддерживает два ти-па клиентов: Legacy Client – только для Windows 98 и Advanced Client – для клиентов под управлением ОС

новлении SMS 2.0. В этом режиме для взаимодействия между компьютерами используются доменные учетные запи-си. Microsoft рекомендует выбирать ре-жим Advanced, если не требуется под-держка доменов NT 4.0 и предполага-ется работа только в домене под уп-равлением Windows 2000 или Windows 2003 Server, так как этот режим обес-печивает более высокий уровень бе-зопасности. Для взаимодействия меж-ду компьютерами используются учет-ные записи компьютеров. Для нашего примера установки выберем Advanced Security.

Перед установкой SMS 2003 жела-тельно создать SMS Service Account

Рисунок 1. Поиск ресурсов сети

не ниже Windows 2000 SP4 или Windows XP SP1.

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

Установка SMS 2003Сервер SMS может работать в двух режимах безопасности: Standard и Advanced.

Стандартный режим служит для взаимодействия с доменами NT4.0 и используется по умолчанию при об-

Рисунок 2. Назначение ролей серверу SMS

Page 64: 044 Системный Администратор 07 2006

62

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

(с правами администратора домена), который будет использоваться для ра-боты служб сервера, создания объек-тов ОС, доступа к SQL Server и для об-ращения на другие контроллеры до-мена.

SMS 2003 тесно связан с Active Directory (AD). Данные SMS хранят-ся в контейнере «System → System Management», SMS получает инфор-мацию из AD (о пользователях, ком-пьютерах).

При установке SMS 2003 предла-гает расширить схему Active Directory. Расширение схемы дает возможность, например, для Advanced Clients, обна-руживать назначенный им код сай-та, опубликованный в AD, таким же способом находить Management Point (служит для взаимодействия меж-ду Advanced Clients и SMS). Хотя SMS официально поддерживает установку на Windows 2000 Server, но при этом возникает много подводных камней. В частности, расширение схемы AD в автоматическом режиме не прохо-дит. Для этого надо давать разреше-ния вручную.

На сайте Microsoft есть документ «Active Directory Schema Modification and Publishing for Systems Management Server 2003», где описаны необходи-мые манипуляции. В случае Windows 2003 Server все происходит гораздо легче, да и управляемость его значи-тельно выше, что дает еще один повод для перехода на Windows 2003.

При помощи SMS Setup Wizard мож-

Остальные значения можно оставить по умолчанию.

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

Обнаружение ресурсов сетиДля начала найдем компьютеры в на-шей локальной сети. В консоли «SMS Administrator» найдите «Discovery Methods» («Site Database → Site Hierarchy → имя_сайта → Site Settings»). Откройте свойства «Network Discovery» и включите этот метод («Enable Network Discovery») (см. рис. 1). Тип поиска ус-тановите «Topology, client and client operating system». На вкладке «Subnets» введите информацию о вашей подсети, на вкладке «Domains» – о вашем доме-не. На вкладке «Schedule» установи-те параметры запуска поиска по рас-писанию. Далее перейдите в узел «Collections» и обновите данные группы «All Systems». Предупреждаю, что ско-рее всего результат вы быстро не по-лучите. Зависит он также и от парамет-ров запуска Network Discovery, который вы выбрали на предыдущем шаге. В от-дельных случаях бывает, что информа-ция обновляется только на следующий день. Обнаруженные учетные записи

Рисунок 3. Настройка установки клиентов методом Client Push

но установить два типа сайтов: Primary Site и Secondary Site. В Secondary Site не предусмотрено базы данных сай-та SMS, и он управляется родитель-ским Primary Site. Так как изначально у нас нет никаких сайтов SMS, присту-пим к установке Primary Site. Secondary Site не является обязательным и слу-жит для удаленных филиалов.

При установке SMS выбираем «Custom Setup». В качестве «Site Code» на экране «SMS Site Information» не-обходимо ввести первые три буквы имени вашего компьютера, например, для компьютера Windows – WIN. В по-ле «Site Name» – то же самое. Не за-будьте установить флажок «Extend the Active Directory Schema» на экра-не «SMS Active Directory Schema». Ес-ли хотите воспользоваться средства-ми удаленного администрирования, на экране «Installation Options» уста-новите флажок «Remote Tools» (хотя утилиты типа DameWare предостав-ляют намного больше возможностей).

Рисунок 4. Установка Advanced Clientшаг 1

Рисунок 5. Установка Advanced Clientшаг 2

Page 65: 044 Системный Администратор 07 2006

63№7, июль 2006

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

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

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

Установка клиентов SMS 2003Перед установкой клиентов необ-ходимо подготовить сервер SMS. Для этого запустим консоль «SMS Administrator → S i te Database → Site Hierarchy → имя_сайта → Site Settings → Site Systems». Назначим серверу роли «Management Point», «Server Locator Point», «Client Access Point» и «Distribution Point». Для это-го на соответствующих вкладках в свойствах сервера установим флаж-ки (cм. рис. 2).

Существует два вида установки клиентов: методом Client Push и руч-ная установка. Legacy Client под-держивает только ручную установ-ку. Рассмотрим установку Advanced Client методом Client Push. В консоли «SMS Administrator» находим «Client Installation Methods» («Site Database → Site Hierarchy → имя_сайта → Site Settings»). В свойствах «Client Push Installation» установим флажки «Enable Client Push Installation to assigned resources и Domain Controllers», а так-же «Enable Client Push Installation to site systems» и выберем «Advanced Client» (см. рис. 3). На вкладке «Accounts» введите информацию об учетной за-писи администратора домена.

Бывает так, что инсталляция таким методом не проходит.

Для установки клиента SMS вруч-ную потребуются права админист-ратора. Запустим программу уста-новки client.msi из сетевого каталога \\имя_сервера\SMSClient\I386. На вто-ром экране установки введите код ва-шего сайта (обычно первые три буквы имени сервера).

Для ускорения добавления клиен-та в базу SMS и для того, чтобы сра-зу же начать работать, в «Панели уп-равления» запустите аплет Systems Management и на вкладке «Actions» для «Machine Policy Evalution and Retrieval Cycle, User Policy Evalution and Retrieval Cycle» произведите операцию Initiate Action (см. рис. 6). Опять же, на-личие клиента на компьютере не быс-тро отражается в базе SMS, поэтому, для того чтобы увидеть истинное ко-личество компьютеров с установлен-ными клиентами, надо немного подож-дать или, как в случае с поиском ком-пьютеров по сети, принудительно об-новить коллекции.

На этом начальная фаза установ-ки сервера SMS, его предваритель-ная настройка и установка клиентов завершены. Далее все зависит толь-ко от желаний и требований, предъяв-ляемых к управлению сетью. В следу-ющей статье будут рассмотрены воп-росы проведения инвентаризации обо-рудования и программного обеспече-ния, централизованная установка ПО и применение Remote Tools for Client Support.

Одна из возможных причин – от-сутствие или неправильное имя об-щедоступного ресурса с клиентом SMS. Необходимо проверить каталог C:\SMS\Client (если установка прохо-дила на этот диск). Он должен быть общим с именем SMSClient. Если это не так, дайте необходимые разре-шения (достаточно read для группы Everyone).

Теперь приступим непосредствен-но к установке клиента методом Client Push. В коллекции «All Systems» вы-берем нужный компьютер (или можно установить клиента сразу на все ком-пьютеры), «All Tasks → Install Client». На втором экране выбираем «Install the SMS client», «Advanced Client», да-лее ставим галочку напротив пунк-та «Always install». Рекомендуют ос-тавлять галочку «Include only clients assigned to this site», но если сайт у вас один, нет удаленного офиса и мо-бильных клиентов, то можно ее снять, так как иногда инсталляция клиента методом Client Push в такой конфигу-рации не проходит (см. рис. 4, 5). Ус-тановка клиента происходит скрыто от пользователя. Проследить за про-цессом установки можно, просмат-ривая файл ccmsetup.log в каталоге c:\windows\system32\ccmsetup. Также в Task Manager будет присутствовать процесс ccmsetup.exe. По окончании установки в «Панели управления» по-явятся новые аплеты типа Systems Management.

Рисунок 6. Обновление политики на клиенте

Page 66: 044 Системный Администратор 07 2006

64

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

В первой части статьи [1] вы позна-комились с базовыми элемента-ми Windows SharePoint Services.

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

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

Microsoft Office FrontPage 2003С момента выхода первой версии про-граммы, которая была нацелена на ис-пользование в качестве наглядного (WYSIWYG, What You See Is What You Get) редактора HTML, во FrontPage 2003 многое изменилось. Помимо то-го, что стало удобнее редактировать HTML, XML, CSS и проч., теперь мож-но полноценно работать со службами SharePoint. А следующая версия, ко-торая выйдет в начале 2007 года, бу-

дет именоваться Microsoft SharePoint Designer 2007. Это говорит о том, что программа ориентирована исклю-чительно на работу с технологиями SharePoint.

В настоящий момент для пользо-вателей и администраторов веб-уз-лов, использующих платформу WSS, во FrontPage доступны такие возмож-ности: Дизайн. Если вы не знакомы с язы-

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

Кодирование. Изменяйте веб-стра-ницы в режиме кодирования с по-мощью профессионального редак-тора HTML, XML и CSS. Доступны функции автозавершения и провер-ки правильности кода, шаблоны по-ведения (Behaviors) и работа с эле-ментами управления ASP.NET.

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

C помощью FrontPage вы можете выполнять задачи по обслуживанию и управлению веб-узлами: Создавать веб-узлы, списки, биб-

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

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

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

Создавать и восстанавливать ре-зервные копии веб-узлов.

Каталог источников данныхПри работе с веб-узлами, основанны-ми на технологии SharePoint, FrontPage позволяет получать данные из разно-образных источников: Списков и библиотек документов

данного узла. Баз данных, совместимых с OLEDB,

например, Microsoft SQL Server. Веб-сервисов. XML-файлов.

Все используемые источники ин-

Возможности MS Windows SharePoint ServicesЧасть 2

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

Иван Хрипунов

Page 67: 044 Системный Администратор 07 2006

65№7, июль 2006

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

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

Основа для получения информации из перечисленных источников – меха-низм передачи данных (data retrieval service), одно из нововведений в WSS. Этот механизм позволяет обменивать-ся информацией между поставщиком и получателем данных по протоколу SOAP (Simple Object Access Protocol), используя XML, и является, по-сути, веб-сервисом.

Вывод информации из каталогаЧтобы отображать данные из каталога на веб-страницах, в составе WSS пос-тавляется веб-часть «Представление данных» (DataView web part). Она вы-ступает как клиент сервиса переда-чи данных, форматируя их с помощью XSLT (eXtensible Stylesheet Language for Transformations, расширяемый язык стилей для преобразований). Таб-лицы XSLT используются для описа-ния преобразований структуры доку-ментов, посредством простых набо-ров правил.

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

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

вы можете с помощью браузера или FrontPage.

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

Используем FrontPageДавайте на практике рассмотрим ра-боту с веб-узлами во FrontPage. Вер-немся к нашему телефонному спра-вочнику, расположенному по адре-су http://server01/phones/. На первой странице веб-узла, default.aspx, рас-положены две связанные между собой веб-части – одна отображает контакт-ную информацию сотрудников компа-нии, другая – их фотографии. Данные о сотрудниках и их фотографии хра-нятся в списке и библиотеке рисунков соответственно.

Откроем наш веб-узел во FrontPage: для этого запустите программу и вы-берите пункт «Открыть узел» в меню «Файл». Справа на панели представле-ны все каталоги открытого узла. Обра-тите внимание, что библиотеки файлов (в нашем случае – фотографий сотруд-ников) и списки (они находятся в ди-ректории Lists) отображаются в виде папок. Внутри каждого списка или биб-лиотеки файлов (в папке «Forms») на-ходятся вспомогательные файлы со-здания, редактирования и просмотра элемента, а также файлы веб-страниц представлений. Кроме того, в структу-ре узла присутствуют следующие слу-жебные папки:

_catalogs. Это скрытая системная папка. Отображается, если разре-шен показ скрытых файлов и папок. Эта опция устанавливается в окне параметров узла. Содержит ката-лог шаблонов списков, узлов и веб-частей.

_fpdatasources. Папка катало-га источников данных. Создается при первом обращении к каталогу во FrontPage.

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

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

Также в структуре отображаются все файлы веб-страниц.

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

Найдите файл default.aspx и от-кройте его.

Рисунок 1. Схема работы механизма передачи данных WSS

Page 68: 044 Системный Администратор 07 2006

66

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

Для позиционирования элементов на странице используется сложная структура вложенных таблиц. Нас ин-тересуют только две области, веб-зо-ны. Они расположены в центральной части страницы, называются «Left» и «Right». Используя FrontPage, вы мо-жете добавлять новые веб-зоны или изменять свойства существующих. В представленных веб-зонах находят-ся веб-части списка сотрудников и веб-часть изображения.

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

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

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

Настраиваем внешний видДавайте для начала добавим необ-ходимые для списка контактов поля – те что в данный момент отображают-ся, не несут в себе достаточной ин-формации. Удалите названия полей из заголовка таблицы. Каждый стол-бец списка отображается в данной веб-части полем. Эти поля необходимо вы-делить и удалить. Вы можете работать с любой строкой – при удалении поля из одной строки, удаляются все поля в столбце. Это происходит из-за то-го, что вы работаете непосредствен-но с шаблоном XSLT. Мы продолжим работать с табличным стилем, и нам потребуется добавить столбцы в таб-лицу по количеству полей, которые бу-дут отображаться. В режиме конструк-тора это не сложнее, чем такая же опе-рация в Microsoft Word.

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

После того как необходимые по-ля добавлены, можно приступить к их форматированию. Все поля у нас име-ют текстовый формат и отображают-ся верно, кроме поля с адресом элек-тронной почты. Это поле неплохо бы-ло бы отображать в виде гиперссылки. Выделите это поле в конструкторе и, используя меню «Данные», выберите пункт «Форматировать элемент как…». Из открывшегося меню нас интересу-ет пункт «Гиперссылка». Если вы при-меняете такое форматирование к эле-менту «Адрес электронной почты», он отображается на веб-странице в ви-де гиперссылки. Но, к сожалению, те-кущая версия FrontPage не позволяет выбрать тип ссылки (обычная, сообще-ние электронной почты, ссылка в доку-менте). В код автоматически вставля-

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

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

Раскройте группу «Списки Share Point». Здесь представлен единствен-ный созданный нами список – «Сотруд-ники». Его можно «перетащить» в нуж-ную веб-зону по аналогии с веб-час-тями или, нажав правую кнопку мы-ши, выбрать из меню пункт «Добавить представление данных». После этого будет добавлена веб-часть с данными из списка сотрудников. По умолчанию она содержит несколько основных по-лей расположенных в таблице. Так как в нашем списке было всего три запи-си, таблица содержит заголовок и три строки с данными. Стиль представле-ния элементов вы можете выбирать из десятка стандартных шаблонов – на основе таблиц, списков и других элементов HTML. Если вы знакомы с XSLT, то легко можете создать свой шаблон вывода данных, написав не-обходимый код.

Рисунок 2. Открытый веб-узел во FrontPage 2003

Page 69: 044 Системный Администратор 07 2006

67№7, июль 2006

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

ется ссылка на страницу. Такая ссылка не будет работать для отправки сообщений электронной почты, и это придет-ся исправить в коде вручную.

Если вы уже работали с языком разметки, то знаете, что для ссылок на адреса электронной почты параметр href те-га <A> должен содержать строку «mailto:[e-mail]». Выдели-те в визуальной части окна элемент с адресом и найдите в выделенном фрагменте вот такой код:

В описании XSL-атрибута href для тега <A> (строка 4) из-мените значение на «mailto:<xsl:value-of select=”@Email”/>». Теперь гиперссылка будет работать правильно – при выборе ее будет создаваться сообщение электронной почты. Вы не забываете сохранять изменения?

Данная ситуация исправлена в новой версии FrontPage – SharePoint Designer 2007. Во второй бета-версии, доступ-ной для публичного тестирования, при форматировании элемента как гиперссылки открывается стандартное окно «Выбор гиперссылки». Все остальные поля пока оставим без изменений форматирования.

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

Давайте для примера будем изменять цвет фона каждой нечетной строки на серый. Для создания правила условно-го форматирования выделите строку таблицы и на панели «Сведения о представлении данных» выберите команду «Ус-ловное форматирование». Создайте правило применения форматирования, в качестве поля укажите [номер строки] – нечетный. В окне изменения стилей («Формат» → «Грани-ца» → «Заливка» ) укажите цвет заливки – светло-серый. Если этот цвет из стандартного набора кажется темным, то, нажав «Другие цвета» в списке цветов, введите, напри-мер, значение «Hex={DF,DF,DF}».

Сортируем и группируем списокИспользуя веб-части списков вы можете сортировать, груп-пировать и фильтровать данные – эти команды располо-жены на панели инструментов. К тому же, нажав на заго-ловок столбца, вы можете отсортировать строки. А что же «Представление данных»? Вся эта функциональность при-сутствует и в этой веб-части. Откройте окно «Типы пред-ставлений» с помощью команды «Стиль» на панели «Све-дения о представлении данных». На закладке «парамет-ры» вы можете изменить следующие настройки веб-час-ти – показывать или нет панель инструментов, с помо-щью которой можно сортировать, фильтровать и группи-ровать информацию; создать ссылки в заголовках стол-

бцов для сортировки; выбрать отображение набора эле-ментов и так далее.

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

Фотографии сотрудниковПолучившийся список контактов неплохо выглядит, но, в отличие от первой версии, на странице не отображает-ся фотография.

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

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

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

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

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

Создание соединений между веб-частями такого типа доступно только во FrontPage. Выберите одно из представ-лений данных, нажмите правую кнопку и выберите «Соеди-нения веб-частей» из меню. Если данный элемент уже име-ет настроенные соединения, то вы увидите окно соединений. Здесь перечислены все соединения, любое из них вы може-те отредактировать или удалить. Мы создаем первое соеди-нение для веб-части, поэтому сразу открывается окно «Мас-тер соединения веб-частей». Не буду описывать подробно все шаги мастера, в процессе его работы даются достаточ-но подробные объяснения. Замечу лишь, что так как мы свя-зываем две веб-части, основанные на одном списке, то в ка-

<td class="ms-vb"> <a> <xsl:attribute name="href"> <xsl:value-of select="@Email"/> </xsl:attribute> <xsl:value-of select="@Email"/> </a></td>

Page 70: 044 Системный Администратор 07 2006

68

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

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

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

Что можно еще улучшить? Напри-мер, добавить в XSLT-шаблон дина-мические эффекты с помощью тегов <xsl:attribute>. Таким образом вы мо-жете описать DHTML-события OnClick, OnMouseOver и прочие. Например, ис-пользуя событие OnClick, вы сможете выводить информацию о сотруднике по щелчку в любом месте строки.

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

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

Используйте веб-сервисы, кото-рые устанавливаются вместе с WSS, и те, что доступны на внешних узлах в Интернете. Подробное описание веб-сервисов для технологий SharePoint вы можете найти на сайте MSDN – http://msdn.microsoft.com/library/en-us/spptsdk/html /soapnsMicrosoftShare PointSoapServer2_SV01043862.asp .

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

1. Хрипунов И., Черневский А. Воз-можности технологии MS Windows SharePoint Services. //Системный ад-министратор, №5, 2006 г. – C. 20-27.

2. http://www.sharepointcustomization.com – сайт, посвященный совместному ис-пользованию FrontPage и технологий SharePoint.

3. ht tp : / /www.microsof t .com / technet /prodtechnol/office/office2003/maintain/f p 0 3 wss .mspx – и с п ол ь з о в а н и е FrontPage для редактирования веб-уз-лов SharePoint.

4. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_fp2003_ta/html/odc_fpbldgxmlwebs.asp – построе-ние узлов, управляемых данными.

5. http://www.sharepointcustomization.com/resources/whitepapers.htm – сборник до-кументации.

6. ht tp://www.sharepointcustomization.com/resources/sdks.htm – Software Development Kits для FrontPage и WSS.

Все перечисленные интернет-ресур-сы представлены на английском языке. Из русскоязычных ресурсов в ближыйшее время начнет функционировать блог, пос-вященный технологиям SharePoint. Най-ти его вы сможете по адресу http://blogs.technet.com/ruswss.

Если список сотрудников достаточ-но большой, создайте еще один спи-сок, содержащий буквы алфавита. До-бавьте в список сотрудников вычисля-емое поле, в котором будет содержать-ся первая буква фамилии сотрудника. Сделать это можно, записав в поле формулу «=ЛЕВСИМВ([Фамилия];1)». Добавьте на страницу еще одну веб-часть «Представление данных» с бук-вами алфавита и соедините ее с веб-частью списка сотрудников. Вы получи-те удобную разбивку списка по алфа-виту, и ориентироваться в таком спра-вочнике будет удобнее.

Вам необходимо добавить ссылку на экспорт контактов в Outlook на стра-ницу? Воспользуйтесь возможностями протокола stssync, реализованного в WSS. Подробнее об этом вы можете про-читать на страницах библиотеки MSDN (http://msdn.microsoft.com/library/en-us/spptsdk/html/tsstsync_SV01036546.asp)

Если вам потребуется выгрузка дан-ных в Excel, создайте на странице ссыл-ку на файл запроса данных. Получить такой файл вы можете на страницах представлений списка. Достаточно най-ти ссылку «Экспорт в электронную таб-лицу». При запросе необходимо сохра-нить файл *.iqy на ваш веб-узел.

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

Рисунок 3. Результат изменений телефонного справочника

Page 71: 044 Системный Администратор 07 2006
Page 72: 044 Системный Администратор 07 2006

70

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

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

Иногда после общения с мужчиной бо-гатырского телосложения представля-ешь… маленького плачущего ребенка. А побеседовав с хрупкой невзрачной женщиной, думаешь: какое величие духа, красота души! Директор компа-нии «Битрикс» внешне – симпатичный молодой человек, которого при жела-нии с удовольствием бы взяли сни-маться в сериал про современную жизнь на роль главного героя. Но по-чему-то после интервью с Сергеем мое подсознание рисует такую картинку: крестьянское подворье, дом, службы, живность, с утра до вечера кипит ра-бота, и посреди двора Сергей Рыжи-ков – хозяин этого богатства.

IT-родословнаяМногие сегодняшние тридцатипяти-летние впервые увидели компьютер в старших классах школы. Сережа Рыжиков сразу познакомился с IBM – серьезной машиной с цветным мони-

тором. Школа была математическая, поэтому с 9 класса он изучал языки программирования – Фортран и Бей-сик. Интернета еще, естественно, не существовало. Он появился позже. «Как что-то не совсем понятное, завое-вал свое место в жизни в качестве со-ставной части коммуникационной сре-ды современного общества. Как не-льзя представить сегодня общество без телевидения, газет, так нельзя его себе сегодня представить без Интер-нета», – рассказывает Сергей. Навер-ное, у талантливого, технически под-кованного юноши не было эйфории от осознания возможностей электрон-ной почты, какая была у меня в нача-ле 90-х: вот сейчас твое письмо здесь, на экране монитора, но стоит нажать «Send» – и оно уже на другом конце планеты. Сергей Рыжиков – прагматик, он наверняка и в начале пути считал Интернет просто средством достав-ки информации. К тому же в отличие от гуманитариев, вроде меня, он учил-ся программированию в школе и ву-зе, первый компьютер собрал, будучи

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

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

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

Page 73: 044 Системный Администратор 07 2006

71№7, июль 2006

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

лицензию, открыли фирму со знако-вым именем «Битрикс», взяли кредит, издали книгу и продали ее. Выпусти-ли еще несколько книжек, и «Битрикс» №1 на этом прекратил существова-ние. В планы Сергея не входило осе-дать в Белоруссии. Минск ему очень нравился, но он понимал, что перс-пектив у бизнеса в республике немно-го. Рыжиков вернулся в Калининград, устроился на работу в один банк, по-том в другой. В итоге возглавил отдел интернет-технологий и коммуникаций платежных систем. «Я не ставил за-дачи уйти и создать бизнес. Но в 1998 году наступил кризис банковской сис-темы. Самый главный вывод, который из этого можно было сделать: бли-жайшие пять лет после кризиса банки обычно озабочены одной проблемой – выживания. Так оно и оказалось. Банки стремились просто выжить и сохранить технологический уровень. Более того, произошла очень сильная централиза-ция банковской системы. А в филиаль-ной сетке нет перспектив для развития. Развитие всегда идет из центра, а фи-лиальная сеть только осваивает тех-нологию. Понимая, к чему это может привести, перед 1999 годом я уволил-ся из банка». Впереди замаячили «Бит-рикс» №2 и сегодняшний успех.

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

С сайтом Департамента образования города Москвы http://www.educom.ru я знакома давно, он мне нравится за удобс-тво навигации и симпатичный дизайн. Кстати, сам Сергей на мои комплимен-ты отреагировал улыбкой: оказывает-ся, департамент использует не самую

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

Это сегодня Сергей Рыжиков – хо-зяин компании, которая разрабатыва-ет программные продукты для управ-ления веб-проектами и многофункци-ональные информационные системы для ведения коммерческой деятель-ности в сети Интернет. А начинали ра-ботать, между прочим, как аутсорсин-говая компания. Если опять исполь-зовать сравнение с крестьянским хо-зяйством, сначала Сергей Рыжиков и его сотрудники ходили «в батраках», нанимались то к одному, то к друго-му хозяину и выполняли работу, ка-кую попросит. А потом завели свое хозяйство и ныне выращивают свой хлеб, высадили на российских про-сторах свой «лес». Он шумит повсю-ду, где есть партнерская сеть «Бит-рикса», а это ни много, ни мало – 700 компаний. Кстати, партнеры у «Битрик-са» есть не только в России, но и за ру-бежом. На Западе с ним сотруднича-ют около 200 компаний – американс-ких, европейских, ближневосточных. Так что за развитием ситуации в Ира-не Сергей следит с особым интере-сом – ведь там у «Битрикса» эксклю-зивный партнер, который неплохо вы-полняет свои обязательства. Военные действия и выходки экстремистов на-прямую бьют по кошельку российских бизнесменов.

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

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

Сергей РыжиковВ 1994 году окончил БГУ по специальнос-ти радиофизика и электроника. В АКБ «Инвестбанк» возглавлял отдел интернет-технологий и финансовых телекоммуни-каций. С 1998 года – директор компании «Битрикс». С 2005 года активно участву-ет в организации и проведении Российс-кого Интернет-Форума. Член сообществ ISDEF и Ezhe.ru.

Page 74: 044 Системный Администратор 07 2006

72

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

ся верить, что аутсорсинговые компа-нии одновременно начнут создавать самостоятельные продукты. Это им под силу».

Вон, непрошенные гости!Мужчина, который построил крепкое хозяйство, дом, «засеял» пусть не пшеничное, но просто свое поле де-ятельности, должен уметь защитить собственность от посягательств ли-хих людей. Или поставить на ворота крепких парней, которые умеют гра-мотно наладить охрану. «Битрикс» со-трудничает с ассоциацией «Русский щит», созданной в 1997 году россий-скими правообладателями для защи-ты авторских прав разработчиков про-граммного обеспечения. Сергею Ры-жикову нравится, что «Русский щит» действует законными способами: ве-дет переговоры с интернет-площад-ками, договаривается, объясняет, до-водит вопросы до суда, если это необ-ходимо. «Щит» защищает «Битрикс» от пиратства.

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

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

Тема безопасности для Сергея – больная, потому что эта проблема клю-чевая для компании «Битрикс» и ее клиентов. Он рассказывает о других способах опорочить репутацию ком-пании. Интернет для таких дел – увы, очень удобная среда. Можно взло-мать сайт какого-нибудь уважаемого концерна, вывесить ерунду, сделать скриншот и отправить его в парочку агентств. Новость расходится мгно-венно, а концерн несет колоссальные убытки. Можно украсть информацию с сайта и шантажировать компанию – мол, опубликуем, если не выполните наши требования. Чтобы этого не слу-чилось с клиентами «Битрикса», ком-пания заказывает аудит безопасности программных продуктов в нескольких компаниях. Аудит программного про-дукта «Битрикс. Управление сайтом» провели компании Positive Technologies и «Немесис».

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

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

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

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

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

Оксана Родионова

Page 75: 044 Системный Администратор 07 2006
Page 76: 044 Системный Администратор 07 2006

74

сети

Настройка BINDПрограмма BIND очень богата на параметры конфигураци-онного файла. Даже простое их перечисление может занять не один лист. Здесь я приведу собственный рабочий кон-фигурационный файл, слегка измененный к придуманной нами задаче, которая рассматривалась в предыдущей ста-тье «Создаем зоны DNS» (№6 за 2006 г.). Полное руководс-тво по настройке BIND распространяется вместе с дистри-бутивом, а также доступно в [1].

Конфигурационный файл BIND – named.conf. Каталог /etc/namedb во FreeBSD обычно содержит этот файл, запол-ненный настройками по умолчанию, файл named.root, в ко-тором перечисляются «хорошо известные» корневые сер-вера (этот файл вы можете загрузить с [2]) и шаблон фай-ла обратной локальной зоны PROTO.localhost.rev, на осно-ве которого создается файл localhost.rev.

Настройки named.confВ качестве знака комментария используется символ «//», как в программах на С++. Допустимо также использова-ние знака «#», как в скриптах на /bin/sh. Порядок задания параметров произвольный.

Первыми идут настройки, относящиеся к системно-му журналу (syslog). BIND очень богат на опции настройки хранения информации в syslog, перенаправлять ее можно как угодно. В приведенном ниже примере создается канал передачи сообщений (channel) такой, что все сообщения на-правляются в syslog с facility local7 и severity info. После опи-сания канала задаются категории, указывающие, какие со-общения куда следует направлять. В этом случае все прос-то, все направляется в один и тот же файл, хотя ничто не по-

мешало бы нам создать несколько каналов и разбросать сообщения между ними.

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

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

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

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

Сформировать файлы, необходимые для создания собственной зоны DNS, – это еще не все. Необходимо настроить и запустить программу BIND, зарегистрировать доменное имя, дождаться завершения тестов – и можно раздавать друзьям адреса [email protected]!

Рашид Ачилов

logging { channel named_log { syslog local7; severity info; }; category default { named_log; default_debug; }; category general { named_log; default_debug; }; category unmatched {named_log; default_debug; };};

acl me-white { 212.20.5.0/24; };acl grayteeth { 10.87.1.0/24; };

view "internal" { match-clients { grayteeth; me-white;}; recursion yes;

Page 77: 044 Системный Администратор 07 2006

75№7, июль 2006

сети

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

Определяем обратную зону для 127.0.0.1. Для данной зо-ны сервер является основным (master), не отсылает изве-щения об обновлении, блокирует любые попытки обновить или запросить трансфер зоны. Если для зоны не указаны allow-query, allow-update или allow-transfer, то применяются установки представления (внешнего или внутреннего), по-падание в представление означает получение доступа. Та-ким образом, не задавая allow-transfer, мы оставляем воз-можность запустить трансфер зоны. Хотя для данной зоны это не страшно – просто бесполезная операция.

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

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

Создаем внешние зоны. Поскольку просмотр ACL идет по схеме «first win», то есть используется первое совпадение, то все клиенты, которые не могут быть отнесены к внутрен-ним, автоматически попадут во внешние, следовательно, нет необходимости в специальном описании ACL. Для за-проса от внешнего клиента сервер является нерекурсив-ным, то есть в ответе может содержаться не только положи-тельный или отрицательный результат, но и ссылка на дру-гой сервер (DNS NXDOMAIN). В нашем случае это не име-ет значения, но могло бы понадобиться, если бы мы опре-деляли подзоны (например, end.tail.krokodil.ru потребует

отдельной зоны tail.krokodil.ru, которая может администри-роваться другим человеком, и соответственно наш сервер должен отсылать клиента к серверу зоны tail.krokodil.ru).

Определяем основную зону прямого преобразования. Для этой зоны сервер является основным и полностью бло-кирует любые обновления.

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

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

Запуск и сопровождениеДля запуска named достаточно добавить

в /etc/rc.conf. По умолчанию в нынешних версиях рабо-чий каталог named делается с рассчетом на jail, и поэ-тому вынесен в /var/named, где уже созданы подкатало-ги /dev, /etc и /var, а /etc/namedb является символическим линком на /var/named/etc/namedb. Меня это не устроило, и я расположил рабочий каталог в более привычном мес-те – /etc/namedb. Для этого в /etc/rc.conf пришлось доба-вить строки:

Параметр -4 отключает поддержку Ipv6 (когда она еще будет), параметр -u bind задает сброс привилегий после запуска до пользователя bind. Последняя стро-ка нужна для /etc/rc.d/named, чтобы он не пытался со-здать /var/named/etc/namedb. Если вас устраивает рас-положение рабочего каталога по умолчанию, то доста-точно строки:

zone "." { type hint; file "named.root"; };

zone "0.0.127.IN-ADDR.ARPA" { type master; notify no; file "localhost.rev"; allow-update { none; }; allow-transfer { none; }; };

zone "krokodil.ru" { type master; file "direct-krokodil-ru.int"; allow-update { none; }; allow-query { me-white; grayteeth; }; };

zone "2.87.10.in-addr.arpa" { type master; file "zone10.rev"; allow-update { none; }; allow-query { me-white; grayteeth; }; };};

view "external" { match-clients { any; }; recursion no;

zone "krokodil.ru" { type master; file "direct-ru.ext"; allow-update { none; }; };

zone "5.20.212.in-addr.arpa" { type master; file "zone212.rev"; allow-update { none; }; };};

named_enable="YES"

named_flags="-c /etc/namedb/named.conf -4 -u bind"named_chrootdir=""

named_flags="-4 -u bind"

Page 78: 044 Системный Администратор 07 2006

76

сети

После запуска все сообщения должны направлять-ся по тем маршрутам, настройки которых были заданы в named.conf. Если это файлы системного журнала, то они должны быть созданы заранее и syslogd оповещен о про-изошедших изменениях, иначе сообщения будут пропадать. Если после запуска named он не стартует и в соответствую-щий журнал ничего не записывается, просмотрите другие журналы, например, /var/log/daemon или другой файл, в кото-рый направляются сообщения с facility daemon и severity info, а также сообщения, выводимые на консоль. Если же named успешно открыл канал передачи информации, все данные уже будут направляться в соответствии с настройками.

Перед тем как подавать заявку на регистрацию зо-ны, запустите named, убедитесь, что он работает, настро-ив на него компьютеры внутренней сети. Также вы може-те использовать команды dig, host и dnswalk для проверки работоспособности зоны. Команда dnswalk – это неболь-шой скрипт на языке 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 это делает и так, но не сохраняет копию), следует наложить патч:

Средства для тестирования зон описаны в RFC 1713. В нём упоминаются все те же host, dig и dnswalk, а также другие программы, например DDT (Domain Debug Tools). Все программы, упомянутые в RFC, можно найти на [7].

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

Network Solutions имеет менее удобный интерфейс – при регистрации он просит зарегистрировать одну пер-сону, контактные адреса которой и будут «по умолчанию» подставлены во все необходимые поля при регистрации домена. Это довольно неудобно, к тому же веб-интерфейс Network Solutions гораздо менее очевиден, чем веб-интер-фейс РУЦЕНТРа. В нем можно разобраться, но для того, чтобы, например, добавить еще одну персону и перевести на нее какие-то контакты, придется изрядно повозиться.

РУЦЕНТР начинает тестирование через 4 часа после принятия заявки при условии, что на лицевом счету доста-точно средств для ее исполнения, иначе заявка будет «пос-тавлена в очередь» и тестирование начнется через 4 часа после поступления денег. После тестирования зоны вы по-лучите информационное сообщение, в котором будет ука-зан результат тестирования. Если тестирование прошло неудачно, то в сообщении будет приведена причина ошиб-ки. Если при регистрации был указан почтовый адрес в но-вом домене (в нашем случае, например, [email protected]), то проверьте еще и работоспособность локального почто-вого сервера и тот факт, что он принимает почту для до-мена krokodil.ru, в противном случае подтверждения мож-но и не дождаться. После регистрации домена вы получи-те другое подтверждающее сообщение. Также вы получи-те отдельное сообщение, если была заказана услуга вто-ричного сервера DNS. Оплата услуг производится на год, когда срок оплаты будет подходить к концу, все регистра-торы начинают присылать сообщения с напоминаниями о том, что срок регистрации заканчивается и нужно опла-тить следующий срок.

Все регистраторы используют концепцию «персон» для установления лиц, которые отвечают за своевременное внесение изменений в информацию о своих зонах, а также получают извещения, например о том, что срок оплаты за-канчивается. «Персона» – это набор анкетных данных, со-общаемых при регистрации. Как правило, сюда входят те-лефон и адрес электронной почты. Именно по указывае-мым здесь адресам и рассылается информация. После ре-гистрации «персоне» присваивается handle (заголовок), ко-торый может быть указан на сайте регистратора в качес-тве Administrative (административного) или Technical (тех-нического) контакта.

Указанные контакты будут получать соответствующую информацию – administrative – об окончании срока оплаты и т. д., Technical – об ошибке получения свежей версии зо-ны и т. д. Кроме того, по обоим адресам будет рассылать-ся информация общего характера, например, об измене-ниях в правилах регстрации доменов. РУЦЕНТР не требу-ет регистрации «персоны» – информация о том, куда со-общать, вводится в анкете. Network Solutions в любом слу-чае создаст, как минимум, одну «персону» и пропишет ее во все необходимые места, RIPE требует создания «персо-ны» в обязательном порядке.

Даже в случае неоплаты следующего срока РУЦЕНТР не освобождает домен день в день. Сначала сервер пос-тоянно, примерно дней за 5 до окончания срока, каждый день шлет напоминания о необходимости оплатить услу-ги по продлению регистрации домена. Если же оплата так и не была внесена, то доступ к DNS-серверу блокируется, но еще месяц имя не освобождается. Если в этот момент оплатить продление регистрации, то имя не пропадает. Че-рез месяц после того, как оплата была просрочена, имя ос-вобождается и переводится в «аукцион доменов». «Аукци-он» – это нововведение РУЦЕНТРа – если вы хотите заре-гистрировать на себя какое-либо популярное доменное имя и оно вдруг становится доступным для регистрации, то оно будет разыграно на аукционе. Имя держится на аукционе год, после чего снимается.

# 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; foreach $rr (@zone) {++# Inspired by Shelton to save zone file+ $rr->print;+# To here+ if ($rr->type eq "NS") { $subdom = $rr->name; $subdom =~ tr/A-Z/a-z/;

Page 79: 044 Системный Администратор 07 2006

77№7, июль 2006

сети

WhoisWhois – вспомогательный информационный сервис, очень тесно связанный с DNS, поскольку с его помощью опреде-ляется, например, занято в настоящий момент доменное имя или свободно. Описывается он RFC 954. Задача этого сервиса – поиск информации о запрошенном имени на ука-занном сервере. Любой регистратор, как правило, предо-ставляет возможность вам воспользоваться этим сервисом, чтобы выполнить поиск информации о каком-либо домене, сети или персоне. Такой поиск выполняется неявно, когда вы указываете имя домена, которое хотите зарегистриро-вать. В зависимости от сервера, вам могут либо сообщить, что доменное имя занято, либо предложат зарегистриро-вать имя в другом TLD. Whois отображает только информа-цию, которая находится в открытом доступе. При обраще-нии к разным серверам информация может выглядеть по-разному. Например, Network Solutions вставляет в выдава-емую информацию большой рекламный заголовок.

Самый простой путь получения информации через whois – воспользоваться соответствующим сервисом, на-пример в РУЦЕНТРе [8]. Для тех же, кто предпочитает ко-мандную строку, существует команда whois. Для ее ис-пользования требуется разблокированный на брандмау-эре порт 43. Существует также простенькая X-версия ко-манды xwhois, требующая Glib.

Несмотря на то что обратиться за информацией whois можно к большому количеству регистраторов, которые пе-речислены в man whois, практическое значение для нас име-ют только некоторые из них. За информацией об именах в зонах .com, .org, .net, .edu, .biz и прочих функциональных зон – в Network Solutions [9]. Вывод будет иметь следующий вид (рекламный заголовок опущен):

За информацией об именах в зонах .ru, .su – в РУЦЕНТР [8]. Вывод будет иметь совершенно другой вид:

За информацией о регистрации сетей, обратных зон и выяснения принадлежности IP – в RIPE [3]. Вывод будет иметь следующий вид:

Несмотря на то что данная информация уже устаре-ла, она все еще присутствует в RIPE. Можно запросить ин-формацию о персоне, указав ее handle для данного серве-ра (напоминаю, что каждый регистратор имеет свои собс-твенные handles):

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

1. http://www.isc.org/index.pl?/sw/bind/arm93.2. ftp://ftp.internic.net/domain/named.root.3. http://www.ripe.net.4. http://www.ripe.net/rs/reverse/rdns-project/index.html.5. Немет Э., Снайдер Г., Сибасс С., Хейн Т.Р. UNIX: руководство сис-

темного администратора. Для профессионалов/Пер. с англ. – Спб.:Питер; К.: Издательская группа BHV, 2002. – 928 с.: ил.

6. Cricket Liu, Paul Albitz, DNS and BIND, Third Edition, 1998 (изд-во O’Reilly, ISBN 1-56592-512-2).

7. http://linuxmafia.com/pub/linux/network.8. http://www.nic.ru.9. http://www.networksolutions.com.

# whois -i freebsd.org

Registrant:The FreeBSD Project 839 S.E. 209th Ave. Gresham, OR 97030-2235 US Domain Name: FREEBSD.ORG Administrative Contact, Technical Contact: Lawrence, David G. [email protected] 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 NS1.DOWNLOADTECH.COM 209.237.247.3 NS2.DOWNLOADTECH.COM 209.237.247.2

# whois -c ru samag.ru

domain: SAMAG.RUtype: CORPORATEnserver: ns0.redline.ru.nserver: ns0.ug.ru.state: REGISTERED, DELEGATEDperson: Mikhalyov Alexander Vladimirovich

# whois -r 212.20.5.0/24

inetnum: 212.20.5.0 - 212.20.5.255netname: GRANCHdescr: Granch ltddescr: Novosibirskdescr: Pisareva str. 53descr: RU-630005country: RUadmin-c: RNA1-RIPEtech-c: RNA1-RIPEstatus: ASSIGNED PAmnt-by: AS8691-MNTmnt-by: ROSNIIROS-MNTsource: RIPE # Filtered

# whois -r RNA1-RIPE

person: Rashid N Achilovaddress: Granch Ltd.address: Pisareva str, 53address: RU-630005 Novosibirskaddress: RUSSIAphone: +7 3832 242363fax-no: +7 3832 242363e-mail: [email protected]: RNA1-RIPEsource: RIPE # Filtered

phone: +7 095 3631150fax-no: +7 095 3631150e-mail: [email protected]: RUCENTER-REG-RIPNcreated: 2002.06.21paid-till: 2006.06.21source: TC-RIPNLast updated on 2006.05.28 15:03:19 MSK/MSD

Page 80: 044 Системный Администратор 07 2006

78

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

Большинство сервисов, работаю-щих в системе, имеют возмож-ность просматривать структу-

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

ChrootChroot – операция изменения корне-вого каталога для текущего процесса и всех его потомков – поможет увели-

чить безопасность системы и протес-тировать новое ПО.

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

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

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

Для того чтобы перенести програм-му с одной системы на другую, не имея исходных кодов, достаточно перенес-ти все библиотеки, нужные для рабо-

Как увеличить безопасность процессов с помощью chroot и jail

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

Василий Озеров

Page 81: 044 Системный Администратор 07 2006

79№7, июль 2006

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

ты программы, и запустить саму программу в chroot-окру-жении. Думаю, преимущества chroot очевидны.

Отмечу недостатки chroot: Увеличивается число копий одних и тех же файлов. Возможность выйти из chroot-окружения (на некоторых

ядрах).

Первый случай я поясню на примере: мы пытаемся за-пустить в «песочнице» /bin/sh. Корнем этого процесса сде-лаем /usr/chroot/. Посмотрим, от каких библиотек зави-сит sh:

Так как для sh теперь корнем будет /usr/chroot, то биб-лиотеки должны быть расположены следующим образом (относительно реального корня): /usr/chroot/lib/*. Обратите внимание, что это не все библиотеки, которые необходимо перенести. Очевидно, что нерационально расходуется мес-то на жестком диске. Если же попытаться запустить связ-ку Apache + MySQL + PHP в chroot, то придется переносить чуть ли не больше половины всей системы. А теперь задай-те себе вопрос: а действительно ли переносить всю связ-ку так необходимо? Ведь Apache работает не от имени су-перпользователя, и главное – правильно выставить права на файлы и каталоги.

О возможности выйти из chroot я расскажу чуть позже.Вернемся к нашей теме «Как увеличить безопасность

системы с помощью chroot». Я написал небольшую про-граммку на C, которая наглядно демонстрирует работу chroot:

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

Компилируем:

После этого запустим программу без chroot-окружения и создадим, например, файл chr00t.

Проверяем наличие файла «/chr00t», как видно, такого файла не существует:

Запускаем программу:

Опять проверяем наличие файла «/chr00t», как видно, файл успешно был создан:

Очистим рабочее пространство для будущих экспери-ментов:

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

Создаем дерево каталогов. В частности, папки lib и libexec для нужных библиотек:

Переносим нашу программу в /usr/chroot:

Смотрим, с чем связана наша программа:

Копируем необходимые библиотеки:

Библиотека ld-elf.so.1 нужна для запуска бинарных фай-лов формата elf:

После того как все предварительные шаги сделаны, можно запускать нашу программу в chroot-окружение, но пе-ред этим проверим наличие файла в /usr/chroot и в /.

Следующие две команды проверяют наличие файла в /usr/chroot и в /:

# ldd /bin/sh

/bin/sh: libedit.so.5 => /lib/libedit.so.5 (0x2808c000) libncurses.so.6 => /lib/libncurses.so.6 (0x280a0000) libc.so.6 => /lib/libc.so.6 (0x280df000)

#include <errno.h>#include <stdio.h>#include <sys/types.h>

int main(void){ char line[255]=""; /* Переменная для названия файла */

chdir("/"); /* Перемещаемся в корень */ printf("Enter filename to create: "); scanf("%s", &line);

if((fopen(line,"w+") == NULL)) /* Создаем файл */ { perror("Error"); /* Выводим сообщение об ошибке */ exit(1); /* И выходим, если создать файл не удалось */ }

return 0;}

# gcc prog.c -o prog# ls -la prog

-rwxr-xr-x 1 root wheel 5533 Jun 2 00:52 prog

# ls -la /chr00t

ls: /chr00t: No such file or directory

# ./prog

Enter filename to create: chr00t

# ls -la /chr00t

-rw-r--r-- 1 root wheel 0 Jun 2 00:54 /chr00t

# rm -f /chr00t

# mkdir -p /usr/chroot/{lib,libexec}

# cp ./prog /usr/chroot/

# ldd /usr/chroot/prog

/usr/chroot/prog: libc.so.6 => /lib/libc.so.6 (0x28074000)

# cp /lib/libc.so.6 /usr/chroot/lib/

# cp /libexec/ld-elf.so.1 /usr/chroot/libexec/

# ls -la /chr00t

ls: /chr00t: No such file or directory

Page 82: 044 Системный Администратор 07 2006

80

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

Запускаем нашу программу в изолированной среде:

Проверяем наличие файла в корневом каталоге про-цесса:

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

Выход из chroot-окруженияКак я уже писал ранее, возможен обход chroot-окружения, но для этого одновременно должны выполняться два ус-ловия: Процесс должен работать под правами суперпользова-

теля. Ядро должно поддерживать вложенные chroot-вызовы.

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

Со вторым условием потруднее. Я протестировал свою программу для выхода из chroot на следующих сис-темах: FreeBSD 6.0/6.1 FreeBSD 5.4 FreeBSD 4.6

И только четвертая версия ОС FreeBSD выпустила ме-ня за пределы chroot, а следовательно, из chroot в систе-мах FreeBSD 5.x/6.x выйти невозможно, по крайней мере мне не удалось.

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

чем каталоге. Открыть временную директорию (нужно, только если

вызов chroot меняет текущую рабочую директорию). Изменить корневой каталог на временную директорию

вызовом chroot. Использую fchdir выйти из chroot-окружения (нужно,

только если вызов chroot меняет текущую рабочую ди-ректорию).

Много раз выполнить chdir(“..”) для перемещения в ре-альный корень файловой системы.

Изменить корневой каталог процесса на текущий (chroot(“.”)), то есть реальный корень.

Вот как этот алгоритм выглядит на C (этот код нужно вста-вить после строки chdir(“/”) в предыдущей программе):

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

Итак, запустим новую программу на FreeBSD 4.6.Проверяем наличие файла «/chr00t», такого файла нет:

Создаем папки для библиотек:

Компилируем программу:

Копируем необходимые библиотеки:

Запускаем программу в chroot-среде:

Проверяем наличие файла «/chr00t»:

Как хорошо видно, файл был создан не в chroot-окруже-нии, а в настоящем корневом каталоге файловой системы. Чтобы не дать выйти программе за пределы chroot-окруже-ния, следует использовать функции setuid, setgid для изме-нения EUID, EGID-процесса. Так как вызов chroot может быть вызван только суперпользователем, то программа просто не сможет сделать еще один chroot.

Тестирование ПО с помощью chrootЕсли нужно протестировать какую-нибудь программу, а под рукой нет тестового компьютера, то проще всего бу-дет создать себе изолированную систему для тестов, ис-пользуя chroot. Сразу предупреждаю: создать полноцен-ную систему с помощью chroot не получится, для этого при-меняется jail.

# ls -al /usr/chroot/chr00t

-rw-r--r-- 1 root wheel 0 Jun 2 00:56 /usr/chroot/chr00t

# ls -la /chr00t

ls: /chr00t: No such file or directory

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

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

fchdir(dir_fd); /* Частично выходим из chroot, поднимаясь на уровень вверх */close(dir_fd); /* Закрываем дескриптор директории */

for(n = 0; n < 1024; n++){ chdir(".."); /* Поднимаемся на уровень выше */}

chroot("."); /* Меняем корневой каталог процесса на настоящий */

# ls -la /chr00t

ls: /chr00t: No such file or directory

# mkdir -p /usr/chroot/usr/{lib,libexec}

# gcc break_chroot.c -o /usr/chroot/break_chroot

# cp /usr/lib/libc.so.4 /usr/chroot/usr/lib/# cp /usr/libexec/ld-elf.so.1 /usr/chroot/usr/libexec/

# chroot /usr/chroot/ /break_chroot

Enter filename to create: chr00t

# ls -la /chr00t

-rw-r--r-- 1 root wheel 0 Jun 2 00:56 /chr00t

# chroot /usr/chroot/ /prog

Enter filename to create: chr00t

ls: /usr/chroot/chr00t: No such file or directory

# ls -la /usr/chroot/chr00t

Page 83: 044 Системный Администратор 07 2006

81№7, июль 2006

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

Давайте теперь попробуем запустить sh в chroot, для тестирования ПО.

Создаем папки для упешного применения chroot для sh:

Копируем нужные бинарные файлы:

Копируем необходимые библиотеки:

Запускаем sh в chroot:

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

Мы скопировали библиотеки не только для sh, но и для остальных утилит, которыми мы будем пользоваться, на-пример ls и pwd.

Предыдущий пример использования chroot не очень удачный, так как chroot не создан для виртуализации сис-темы. Для этого используется механизм jail, который явля-ется родным для FreeBSD, следовательно, продуман jail на-много лучше, нежели chroot.

JailМеханизм jail позволяет администратору делить полноцен-ную FreeBSD-систему на маленькие подсистемы, которые называются jail (тюрьмами). В каждой такой «тюрьме» на-ходятся свои процессы, файлы, аккаунты. Благодаря этому механизму можно увеличить безопасность системы и со-здать виртуальные машины.

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

Итак, в первую очередь необходимо настроить DNS-сер-вер. Так как статья посвящена безопасности, то настройку сервера имен я здесь не описываю. Но имена машин нам понадобятся.

Давайте определимся: Домен – UNIX. Компьютер, на котором производится установка вирту-

альной машины – satdevil.unix.(172.16.0.200). Виртуальная машина – evil.unix.(172.16.0.199). DNS-сервер – dns.unix.(172.16.0.1).

Чтобы понимать, на какой машине происходит действие, приглашение командного интерпретатора будет выглядеть следующим образом: «hostname#».

Создание виртуальной машиныСоздаем директорию, где будет находиться виртуальная машина:

Собираем и устанавливаем «мир» в только что создан-ную директорию:

Теперь установите конфигурационные файлы, скрип-ты и т. д. в каталог:

Чтобы настроить нашу виртуальную машину, запустим в ней /bin/tcsh. Общий вид команды jail выглядит так:

команда указывается относительно нового корня.

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

Первым делом создаём пустой файл /etc/fstab, это нуж-но для предотвращения ошибок при загрузке системы.

Теперь настроим автозагрузку.Отключаем rpcbind, который на виртуальной машине

не нужен:

Отключаем конфигурирование интерфейсов, дабы из-бежать ошибок, связанных с ifconfig:

Включаем sshd для удаленного управления виртуаль-ной машиной:

# mkdir /usr/chroot/{bin,sbin,lib,libexec,usr}# mkdir /usr/chroot/usr/{bin,sbin,lib,libexec}

# cp /bin/* /usr/chroot/bin/# cp /sbin/* /usr/chroot/sbin/# cp /usr/sbin/* /usr/chroot/usr/sbin/# 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/# cp -r /usr/libexec/* /usr/chroot/usr/libexec/

# chroot /usr/chroot/ /bin/sh

# ls -la

total 16drwxr-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 bindrwxr-xr-x 3 0 0 1024 Jun 1 21:49 libdrwxr-xr-x 2 0 0 512 Jun 1 21:50 libexecdrwxr-xr-x 2 0 0 2560 Jun 1 21:49 sbindrwxr-xr-x 6 0 0 512 Jun 1 21:49 usr

# pwd

/

satdevil# mkdir /usr/local/evil

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

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

// jail <путь_к_новому_корню> <hostname> <ip_address> <команда>

satdevil# make distribution DESTDIR=/usr/local/evilsatdevil# jail /usr/local/evil evil 172.16.0.199 /bin/tcsh

evil# touch /etc/fstab

evil# echo rpcbind_enable="NO" > /etc/rc.conf

evil# echo network_interfaces="" >> /etc/rc.conf

evil# echo sshd_enable="YES" >> /etc/rc.conf

Page 84: 044 Системный Администратор 07 2006

82

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

Редактируем resolv.conf для нормального определения dns имен. Добавляем primary dns сервер и домен.

Создаем базу алиасов для sendmail, опять-таки чтобы избежать ошибок при запуске sendmail:

Теперь настраиваем timezone. Для Москвы это будет выглядеть так:

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

Давайте создадим нового пользователя, для удаленно-го администрирования сервера:

Зададим пароль пользователю:

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

Теперь необходимо подготовить основную систему.Прежде всего сделаем alias адреса 172.16.0.199

на адрес 172.16.0.200. rl0 – имя интерфейса с адресом 172.16.0.200:

Создаем proc filesystem, необходимую для работы яд-ра и процессов:

Jail хорошо продумана во FreeBSD, поэтому запускать мы ее будем не из командной строки, как chroot, а с помо-щью специального скрипта, расположенного в /etc/rc.d/. При запуске скрипт считывает данные из /etc/rc.conf. Все действия производим на satdevil.

Добавляем в rc.conf:

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

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

Вот и все. Мы настроили виртуальную машину. Теперь, чтобы попасть в нее, достаточно сделать следующее:

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

Если вы используете FreeBSD, то лучше использовать jail, чем chroot по нескольким причинам: Jail хорошо продуман во FreeBSD, и с его помощью,

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

Chroot возможно обойти, да и продуман он не так хоро-шо, как jail.

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

С jail тоже не следует переусердствовать: если у вас слишком много виртуальных машин, то проще парочку из них вынести на настоящие машины.

Главное – найти золотую середину.

evil# newaliases

evil# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

evil# passwd

Changing local password for rootNew Password:Retype New Password:

evil# pw useradd fr33man -s /bin/tcsh -m -d /home/fr33man/

evil# passwd fr33man

Changing local password for fr33manNew Password:Retype New Password:

evil# exit

satdevil# ifconfig rl0 inet alias 172.16.0.199/32

satdevil# mount -t procfs proc /usr/local/evil/proc

// Включаем jailjail_enable="YES"

// Список «тюрьм», находящихся на данной машине.// Если тюрьм несколько, то перечисление их идет// через пробелjail_list="evil"

// Запрещаем смену hostnam в jailjail_set_hostname_allow="NO"

// Разрешаем использовать процессам только домены// PF_LOCAL, PF_INET, PF_ROUTEjail_socket_unixiproute_only="YES"

// Далее идет описание конкретной «тюрьмы»,// в нашем случае это evil

// Задаем корневой каталогjail_evil_rootdir="/usr/local/evil/"

// Указываем имя запускаемой виртуальной машиныjail_evil_hostname="evil.unix"

// Указываем IP-адрес виртуальной машиныjail_evil_ip="172.16.0.199"

// Указываем, что именно запустить в «тюрьме».// Команда /bin/sh /etc/rc приведет к инициализации// и запуску системыjail_evil_exec="/bin/sh /etc/rc"

// Разрешаем использование файлов устройствjail_evil_devfs_enable="YES"

satdevil# /etc/rc.d/jail start

$ ssh evil.unix -l fr33man

evil# echo domain Unix > /etc/resolv.confevil# echo nameserver 172.16.0.1 >> /etc/resolv.conf

Page 85: 044 Системный Администратор 07 2006
Page 86: 044 Системный Администратор 07 2006

84

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

Мы хотели продолжать то, что делали в Apple – изменять мир(Стив Джобс)Любое творение гениального Сти-ва Джобса можно назвать уникаль-ным. Вспомните Apple. Эта компания не нуждается в саморекламе. Её про-дукция всегда считалась «электро-никой, наделённой душой». Однако Джобс – основатель не только Apple. В своё время благодаря его усилиям в свет вышли компании Pixar и NeXT. Правда, если первая известна своими мультфильмами на весь мир, то о вто-рой слышали лишь немногие, инте-ресующиеся историей вычислитель-ной техники.

Компьютеры, производившиеся NeXT Inc., можно назвать уникальными и очень редкими. Это и неудивитель-но, ведь за всю историю существова-ния компании было продано немногим более 50 тысяч компьютеров.

Ко м п ьюте р ы NeX T п р и м е н я -лись в Национальном Аэрокосмичес-ком Агентстве (говорят, что они вне-сли свою лепту в подготовку к уста-новке и работе космического телеско-па «Хаббл»), секретной военной базе «Зона 51» в штате Невада, ЦРУ и дру-гих организациях. С их помощью уп-равляли противовоздушными ракет-ными комплексами «Патриот», дела-ли расчёты для оптимальных траекто-рий большинства американских спут-

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

Превращение идеи в реальность1985 год. Компания Apple Computer. Джон Скалли, приглашённый в 1983 году Стивом Джобсом на пост управ-ляющего директора компании, посте-пенно захватил власть и стал более влиятельным человеком, чем её ос-нователь. Дабы, по его словам: «За-ставить компанию двигаться даль-

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

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

Дмитрий Мороз

Page 87: 044 Системный Администратор 07 2006

85№7, июль 2006

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

ше, что при Джобсе было невозмож-но», 10 апреля при поддержке сове-та директоров Скалли отстранил его от управления компанией. Стив Джобс всё ещё оставался членом этого со-вета, но в реальности никаких реше-ний больше принимать не мог. Про-дав часть принадлежавших ему акций на сумму 20 млн. долларов, он съездил на отдых во Францию и Италию и вер-нулся в Америку, полон сил и энергии, готовый вновь «изменить мир».

Теперь самое время перейти к рож-дению компании NeXT, идея которой пришла Джобсу… за завтраком. В на-чале сентября 1985 года Стив завтра-кал вместе с лауреатом Нобелевской премии, биохимиком Стэндфордского университета Полом Бергом. Во вре-мя трапезы учёный рассказывал Джобсу о своих исследованиях ДНК и о трудностях, с которыми сталкива-ются при этом он со своей командой. На его вопрос об использовании ком-пьютера в качестве средства для уско-рения моделирования экспериментов Берг ответил, что, к сожалению, боль-шинство университетов не распола-гают необходимыми компьютерными мощностями и соответствующим про-граммным обеспечением. «Вот тогда я и начал развивать эту идею дальше», – вспоминает Джобс. В его голове чёт-ко сформировался образ идеального компьютера для высших учебных заве-дений, способный, подобно Macintosh в 1984 году, стать новым «открыти-ем» в учебном и исследовательском процессах.

Несколькими днями позже, 13 сен-тября, он проинформировал совет ди-ректоров Apple о том, что принял ре-шение покинуть компанию и основать новую. При этом Джобс пообещал, что ни в коем случае не собирается конкурировать с Apple и что его цель – рынок образования, конкретнее – выс-ших учебных заведений. Единствен-ное, что попросил Стив, – возмож-ность взять с собой пару сотрудников Apple «низшего звена», после чего его след исчезнет навсегда. Совет дирек-торов сразу же согласился и при этом пообещал купить в будущем 10% ак-ций новой компании Джобса. На том и порешили.

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

бой, запротестовал, поскольку все они занимали довольно большие пос-ты: Даниель Левин – маркетинг-ме-неджер Apple в секторе образования, Бад Трайббл – руководитель отдела разработки программного обеспече-ния, Сьюзен Бернес – глава отделе-ния Apple по продажам на рынке США, а также Рич Пейдж и Джордж Кроу, яв-лявшиеся одними из лучших инжене-ров компании.

Впоследствии Apple подала иск против новоиспечённой NeXT Inc., мо-тивируя своё решение тем, что «лю-ди, ушедшие в новую компанию, рас-полагают секретной информацией относительно ещё не анонсирован-ных продуктов, их стоимости, а также фамилий «независимых» людей, ко-торые будут помогать Apple в рекла-ме». 17 сентября Джобс сделал ответ-ный ход – разослал копии бланка ре-гистрации новой компании (позже пе-реименованной в NeXT Computer Inc., однако в статье для краткости я буду использовать оригинальное название) во многие СМИ, а также пригласил представителей прессы в свой особ-няк в городке Вудсайд, где публич-но объявил, что ушёл из Apple и боль-ше не имеет с этой компанией ниче-го общего.

Судебный иск против NeXT Inc. про-существовал недолго. Главным обра-зом из-за того, что сама Apple боялась таким образом навредить собственно-му имиджу. Всё-таки не каждый день

компания судится со своими создате-лями. «Мне сложно объяснить, поче-му Apple с годовым оборотом более 2 млрд. долларов и персоналом бо-лее 4300 сотрудников боится шести человек в синих джинсах», – говорил по этому поводу Джобс.

Первоначально он вложил в новую компанию 7 млн. долларов личных сбе-режений. Первые 100 тыс. долларов ушли на создание логотипа NeXT Inc, над которым работал 71-летний про-фессор Йельского университета Пол Ренд, известный в Америке дизайнер и автор логотипов компаний ABC, IBM, UPS и Westinghouse. В июне 1986 он представил Стиву результат.

Изначально Джобс планировал сделать NeXT Inc. исключительно час-

Рисунок 1. Скриншот первого веб-браузера, разработанного Тимом Бернерсом-Лии

Рисунок 2. Стив Джобс возле NeXT Computer

Page 88: 044 Системный Администратор 07 2006

86

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

тной компанией, владельцами кото-рой будут её же сотрудники. Однако уже в 1987 году семь миллионов, вло-женные Джобсом, иссякли. Необходи-мость в дополнительных капиталовло-жениях заставила его искать потенци-альных инвесторов.

И опять помог случай. В ноябре 1986 года в свет вышел документаль-ный фильм «Предприниматели», в ко-тором Стив Джобс разглагольствовал о причинах, побудивших его к основа-нию NeXT, о будущем чудо-компьюте-ре, а также рынке, на который он на-целен. В этом же фильме говорилось и о дате выпуска системы – весна 1987 года, а также о цене, которая, по-пре-жнему не должна была превышать 3 тыс. долларов. Этот документальный фильм посмотрел и мультимиллионер Росс Перот, заработавший состояние продажей своей компании Electronic Data System. Компания Стива Джоб-са, а также цель, которой она доби-валась, настолько потрясли Перота, что тот сразу же позвонил основате-лю NeXT Inc. и сказал: «Если вам ког-да-нибудь понадобится инвестор, зво-ните мне».

Перот был настолько уверен в буду-щем успехе компании, что за 16% ак-ций инвестировал в NeXT Inc. 20 млн.

долл. В то время, по оценкам экспер-тов, её стоимость составляла 30 мил-лионов. Стоит отметить, что Перот до этого отказался от предложения при-обрести молодую, но амбициозную компанию Microsoft.

Благодаря ещё двум инвесторам, Стэндфордскому университету и Уни-верситету Карнеги-Мелона, оценочная стоимость компании достигла 126 млн. долларов. При этом Джобс владел 63% акций NeXT Inc. Совет директоров компании состоял всего из трёх чело-век: собственно Стива Джобса, Росса Перота и ректора Университета Кар-неги-Мелона Пэта Кресина.

Новый чудо-компьютерЕщё в начале становления NeXT Inc. в компании стартовал проект по со-зданию «идеального» компьютера для высших учебных заведений. Для это-го Джобс вместе с инженерами объ-ехали несколько университетов, что-бы узнать, что именно хотят студенты и профессора.

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

Первоначально в качестве сердца будущего компьютера инженеры NeXT планировали использовать RISC-про-цессор 88000, однако трудности ком-пании Motorola в процессе его проек-

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

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

Поскольку будущий компьютер по замыслу Джобса должен был экс-плуатироваться в университетах в ка-честве основного устройства для про-ведения различных исследований, ар-хитектура NeXT Computer (так позже была названа новая система) изна-чально предполагала наличие встро-енного цифрового сигнального про-цессора, обрабатывавшего звук и яв-лявшегося главным инструментом при проведении различного рода ис-следований и экспериментов. Кроме того, для устранения «бутылочных гор-лышек» в архитектуре компьютера ин-женерами NeXT Inc. были разработа-ны две специальные микросхемы кон-троллеров ввода/вывода, предназна-ченных для управления внутренними шинами данных. Один из чипов также содержал контроллер прерываний.

Однако главной особенностью NeXT Computer являлся магнитооп-тический (сокращённо – МО) привод, единственный в системе. В то время объём жёстких дисков едва перева-лил за несколько сотен мегабайт, к то-му же они стоили очень дорого, а опе-

Рисунок 3. NeXT Computer собственной персоной

Рисунок 4. Материнская платаNeXT Computer

Рисунок 5. Скриншот NEXTSTEP 0.8

Page 89: 044 Системный Администратор 07 2006

87№7, июль 2006

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

рационная система NEXTSTEP, о ко-торой мы поговорим позже, занима-ла 200 Мб (1987 год!). Поэтому инже-неры были вынуждены искать другой путь. Решение пришло в лице компа-нии Canon и её новой и революцион-ной разработки – магнитооптической технологии. Записывание информации в ней производится при помощи луча лазера и магнитного поля, а считыва-ние – при помощи одного только ла-зера. Благодаря большому объёму за-писываемой и хранимой информации (256 Мб) этот привод был как раз тем, что искали инженеры NeXT Inc.

Стоит отдельно поговорить и о вне-шнем виде NeXT Computer. Идеей Джобса было сделать корпус компью-тера в форме идеального куба со сто-ронами чуть больше 30 см (12 дюймов). Дизайном занималась компания Frog Design, зарекомендовавшая себя со-зданием внешнего вида оригиналь-ного Macintosh. Корпус NeXT Computer состоял из чистого магния и был пок-рашен в чёрный цвет, делая из ком-пьютера вершину дизайнерской мыс-ли, однако при этом «накручивая счёт-чик» цены, которая позже ещё сыграет с NeXT Inc. злую шутку.

Топливо для двигателяПараллельно с разработкой нового компьютера стартовала работа и над операционной системой. Первоначаль-но инженеры планировали лицензи-ровать какую-нибудь из уже сущес-твующих ОС. Решение использовать UNIX в качестве операционной систе-мы для NeXT Computer было принято самим Джобсом. «Я верю в нижеска-занное всеми косточками своего тела: в 90-х UNIX станет основной операци-онной системой каждой уважающей себя компании», – заявлял он. Однако ни SunOS, ни другие вариации UNIX, предполагавшиеся в качестве вари-антов, так и не подошли, в результате чего было принято решение разрабо-тать ОС с чистого листа.

Ядром для будущей операционной системы, названной NEXTSTEP, вы-ступило основанное на базе UNIX 4.3 микроядро Mach, разработанное в Уни-верситете Карнеги-Мелона. Его созда-тель, Ави Теваньян, позже был завер-бован Джобсом в NeXT Inc., став глав-ным руководителем команды по раз-работке NEXTSTEP.

Однако микроядро Mach не явля-лось единственной отличительной осо-бенностью этой ОС. Ещё в 1986 году NeXT Inc. начала работать с компанией Adobe над проектом Display PostScript. Джобса не удовлетворяла методи-ка, использованная в компьютерах Macintosh: информация на экране ком-пьютера отображалась с использова-нием библиотеки QuickDraw, тогда как при печати документов был задейство-ван язык описания страниц PostScript. В результате напечатанная страница зачастую имела совсем другой вид, нежели выводимая на экран. Поэтому он договорился с Adobe о том, чтобы сделать их технологию частью опера-ционной системы. Оконный менеджер

NEXTSTEP под названием Workspace Manager включал в себя интерпрета-тор Display PostScript – технологии, ос-нованной на языке описания страниц PostScript. Благодаря этому пользова-тель всегда мог быть уверен, что ин-формация, которую печатает принтер, будет в точности соответствовать вы-водимой на экран.

Следующей особенностью NEXT STEP являлась её объектная ориен-тированность. Ещё до своего ухода из Apple Джобс был впечатлён возмож-ностями стартовавшего в недрах ком-пании проекта под кодовым названи-ем «Розовый» (Pink), заключавшего-ся в создании объектно-ориентиро-ванной ОС для Macintosh (к сожале-

Рисунок 6. Компьютер NeXT Station

Рисунок 7. Компьютер NeXT Cube

Page 90: 044 Системный Администратор 07 2006

88

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

нию, эта ОС так и не увидела свет). Поэтому NEXTSTEP изначально пла-нировалась как объектно-ориентиро-ванная операционная система, в ко-торой лёгкое микроядро взаимодейс-твовало с отдельными библиотека-ми, каждая из них отвечала за опре-делённые функции ОС. Изначально в состав NEXTSTEP входили несколь-ко библиотек: Application Kit (рабо-та с приложениями), Music Kit (музы-ка), Sound Kit (звук). Позже были до-бавлены и другие библиотеки, напри-мер: 3d-Graphics Kit (работа с трёх-мерной графикой), Database Kit (базы данных) и Driver Kit (работа с драйве-рами устройств). Кстати, в середине 90-х годов прошлого столетия из NeXT Inc. в молодую тогда компанию Be Inc. ушли несколько программистов, кото-рые принесли в операционную систе-му BeOS концепцию отдельных библи-отек с названиями, похожими на тако-вые в NEXTSTEP.

В качестве основного языка про-граммирования для этой ОС был ис-пользован Objective-C, объектно-ори-ентированный вариант языка С.

Выход NeXT Computer в светШёл 1988 год. Создание нового чудо-компьютера продолжалось на протя-жении двух лет, однако до заверше-ния работ было ещё далеко. Обещание Джобса представить NeXT Computer весной 1987 года кануло в Лету.

К тому времени NeXT Inc. подписа-ла стратегическое соглашение с кор-

порацией IBM, согласно которому в бу-дущем NEXTSTEP будет перенесена на её рабочие станции. В свою очередь «Голубой гигант» вложил в компанию Джобса 60 млн. долларов.

Наконец, 12 октября 1988 года чу-до-компьютер был представлен пуб-лике. «Я, наверное, говорю от имени всех сотрудников NeXT Inc.: «Как здо-рово вернуться назад!», – начал своё выступление Стив Джобс. После трёх-часовой речи на глазах у 4500 человек Джобс продемонстрировал «новый Macintosh» – NeXT Computer.

Характеристики новинки говорили сами за себя: процессор 68030, рабо-тающий на частоте 25 МГц, математи-ческий (68882) и цифровой сигналь-ный (56001) процессоры, 8 Мб опера-тивной памяти (максимально 16 Мб), магнитооптический привод и, наконец, «оконный UNIX». Монохромный (4 от-тенка серого цвета) монитор для это-го компьютера был изготовлен на ос-нове 17-дюймовой электронно-луче-вой трубки Trinitron производства Sony и имел гигантское по тем временам разрешение – 1120 х 832 пикселей.

Вместе с NeXT Computer зрите-лям был представлен лазерный при-нтер NeXT Laser Printer, внутренне яв-лявшийся практически полной копи-ей LaserWriter II производства Apple. При разрешении 400 точек на дюйм устройство печатало до восьми стра-ниц в минуту.

Публика, присутствовавшая в Кон-цертном зале симфонического оркес-тра Сан-Франциско, была настолько поражена, что устроила Джобсу ова-цию. Реакция прессы была также оче-видна. «Это поистине великая систе-ма, которая по праву займёт почётное место на пике всех существующих ны-не компьютеров», – писали Том Томсон и Ник Берен в статье о NeXT Computer для журнала «Byte».

Однако новый компьютер имел ряд серьёзных недостатков, главным из которых являлась незаконченная операционная система NEXTSTEP, которая к моменту презентации NeXT Computer «добралась» лишь до вер-сии 0.8.

Спустя некоторое время после пре-зентации компания начала поставки ограниченного количества компьюте-ров первым клиентам, устанавливая на них бета-версию NEXTSTEP 0.9.

Но компьютер стоил значительно до-роже планируемого – 6,5 тыс. долла-ров. Если же пользователь хотел ос-настить компьютер жёстким диском (а это было просто необходимо, пос-кольку при времени реакции МО-при-вода, равном 97 мс, работа с ОС пре-вращалась в адские муки), а также принтером NeXT Laser Printer, цена всей системы зашкаливала за 10 тыс. долларов.

Американские колледжи и универ-ситеты, для которых предназначался компьютер, не спешили расставаться со столь большими суммами. Если же покупка и осуществлялась, то коли-чество приобретённых NeXT Computer не превышало и двух десятков. В ре-зультате специально построенная для изготовления NeXT Computer полно-стью автоматизированная фабрика NeXT Inc. выпускала всего 400 ком-пьютеров в месяц.

Джобс понимал, что с такими ус-пехами его компания долго не про-существует, и поэтому принял реше-ние начать продавать NeXT Computer всем желающим (изначально купить его могли только учебные учреж-дения и студенты). Для этого NeXT Inc. подписала договор с компанией Businessland, являвшейся в то время крупнейшим продавцом компьютеров на территории США. Businessland пла-нировала реализовать в первый год 10-15 тысяч систем, что в денежном эк-виваленте должно было составить око-ло 150 млн. долларов. Согласитесь, до-вольно оптимистичные прогнозы и не-малая сумма. Но базовая цена на NeXT Computer, предлагаемый Businessland, составила 9995 долларов. В результа-те к концу 1989 года компания смогла продать лишь 360 компьютеров. По-пытка выхода «в свет» закончилась провалом. Фабрика по производству NeXT Computer теперь выпускала все-го 100 систем в месяц.

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

В июне 1989 года Canon, тесно со-трудничавшая с NeXT Inc., инвести-ровала в компанию 100 млн. долл. в обмен на 16,7% акций, а также экс-

Рисунок 8. Видеоплата NeXT Dimension

Рисунок 9. Прототип дополнительной платы для NeXT Dimension для сжатия видеопотока с чипом CL550

Page 91: 044 Системный Администратор 07 2006

89№7, июль 2006

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

клюзивное право на продажи NeXT Computer в странах Азиатского конти-нента. Эта сумма подняла оценочную стоимость NeXT Inc. до гигантских 600 млн. долл. Однако в то время в компа-нии работали всего 200 сотрудников, а о доходе не могло быть и речи.

Призрачная надеждаЧто же касается новых разработок, в конце 1989 года состоялся долго-жданный выпуск версии 1.0 операци-онной системы NEXTSTEP. Главным её нововведением стало появление пакета для разработки приложений Interface Builder, являвшегося анало-гом современных сред визуального программирования.

Не стояли в сторонке и инженеры компании. В январе 1990 года в NeXT Inc. стартовал проект «Основа 9» (Warp 9), целью которого являлась пе-реработка NeXT Computer для сниже-ния цены до изначально планировав-шихся 3 тыс. долл.

Через месяц после старта «Осно-вы 9», не выдержав всё возрастающе-го напряжения внутри компании, NeXT Inc. покинули первые сотрудники. Сре-ди них был Даниель Левин – один из пятёрки первых инженеров Apple, за-вербованных Джобсом.

Сам проект, несмотря на потрачен-ные на него шесть месяцев, оправдал себя, и 18 сентября 1990 года NeXT Inc. объявила о выпуске сразу трёх новых моделей своих компьютеров, а также NEXTSTEP 2.0.

NeXT Station представляла собой результат «Основы 9»: компьютер, по своим характеристикам отличав-шийся от NeXT Computer более быс-трым процессором 68040, работаю-щим на частоте 25 МГц, возможнос-тью установки до 32 Мб ОЗУ (стандар-тно – 8 Мб), а также штатными флоппи-дисководом и жёстким диском. Мини-атюрный корпус NeXT Station, над ди-зайном которого работала Frog Design, имел размеры всего 397 х 364 х 64 мм. Правда, цена всё равно была выше планируемой – 4995 долл. Заплатив на три тысячи больше, пользователь получал NeXT Station Color, которая, кроме увеличенного до 12 Мб объёма оперативной памяти, отличалась на-личием в комплекте нового 16-дюй-мового монитора, способного отобра-жать 4096 цветов.

Отличие NeXT Cube (7995 долл.) от NeXT Station заключалось лишь в воз-можности установки до 64 Мб ОЗУ (штатно – 16 Мб), слотах расширения NeXTbus, а также возможности уста-новки видеоадаптера NeXT Dimension. Последний наделял NeXT Cube воз-можностью работать с 32-битным цве-том. Внешне же он ничем не отличал-ся от NeXT Computer.

К сожалению, трудности компа-нии Motorola с выпуском процессо-ра 68040 привели к задержке старта продаж новых компьютеров до мар-та 1991 года.

Что же касается нововведений NEXTSTEP 2.0, стоит отметить поя-вившуюся файловую систему NFS (Network File System) компании Sun Microsystems, поддержку дисководов, CD-ROM, факсов, и модемов. Кроме того, был переработан и улучшен окон-ный менеджер Workspace Manager.

После того как в 1990 году корпора-ция IBM объявила о прекращении со-трудничества с NeXT Inc. и подписании нового контракта с Apple, Росс Перот начал обвинять Джобса в пустой тра-те денег и производстве компьютеров собственными силами компании. Осо-бенно его вывели из себя результаты финансового квартала 1991 года, ког-да доход, составивший 28 млн. долла-ров, после изымания налогов и про-чих издержек превратился в чистый «ноль». На протяжении шести лет свое-го существования компания работала себе в убыток.

К концу второго квартала, несмот-ря на увеличившийся до 46 млн. дол-ларов доход, продажи NeXT Inc. упали на 50%, и разочарованный Росс Перот ушёл из компании, продав свои 16% акций. «Я не должен был давать им де-ньги. Это была самая большая ошиб-

ка в моей жизни», – говорил он тогда. В результате Джобсу пришлось вло-жить дополнительные 10 млн. долла-ров в свою компанию. Подобные вло-жения сделала и Canon, расставшись с 55 миллионами.

Однако весь мир был в неведении о трудностях NeXT Inc. Джобс разгла-гольствовал о «светлом будущем» своей компании и предпочитал вмес-то цифр о финансовом состоянии сво-ей компании говорить о будущих но-винках.

22 января 1992 года в Сан-Фран-циско NeXT Inc. организовала первую выставку NeXT World, на которой пред-ставила NEXTSTEP 3.0 и NEXTSTEP 486. Новая ОС поддерживала 7 ми-ровых языков, имела новые библио-теки для работы с 3D-графикой и ба-зами данных, а также поставлялась с полной копией пакета RanderMan компании Pixar (которую Джобс при-обрёл у LucasFilm ещё в 1986 году). ОС NEXTSTEP 486 (с выходом Pentium позже переименованная в NEXTSTEP for Intel Processors) предназнача-лась для работы с ПК и была ответом Microsoft на выпуск Windows 3.1.

NeXT Inc. также представила бо-лее дешёвые Turbo-версии своих ком-пьютеров (оснащённых процессорами 68040 с частотой 33 МГц), однако всё было напрасно.

К концу года компанию покинули женившиеся Бад Трайббл и Сьюзен Бернес, а также Рич Пейдж. Из пятёр-ки первых сотрудников NeXT Inc., за-вербованных Джобсом из Apple, остал-ся лишь Джордж Кроу.

Главная же неожиданность жда-ла Стива в середине 1992 года. Питер ван Кайленберг, нанятый им в мар-те на пост исполнительного директо-ра, предал Джобса, тайно предложив президенту Sun Скоту МакНили купить NeXT Inc., уволить Стива и отдать ему пост генерального директора. Однако честный МакНили предварительно поз-вонил Джобсу и предупредил о пред-ложении. Ван Кайленберг был с позо-ром выкинут из компании, однако ос-нователь NeXT Inc., наконец, не выдер-жал и сдался.

«Чёрный вторник»10 февраля 1993 года (впоследс-твии названный «чёрным вторни-ком») NeXT Inc. официально объяви-

Рисунок 10. Сторонними компаниями для компьютеров NeXT было выпущено несколько плат-акселераторов. На снимке – NeXT Nitro с 40 МГц процессором 68040

Page 92: 044 Системный Администратор 07 2006

90

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

ла, что из-за катастрофических убыт-ков, составивших 250 млн. долларов, прекращает производить компьюте-ры и отныне будет концентрировать-ся лишь на совершенствовании и про-движении на рынок NEXTSTEP. В свя-зи с этим компания изменила своё на-звание на NeXT Software Inc., а также сократила численность своего персо-нала с 530 до 200 человек. Автомати-зированная фабрика по производству компьютеров перешла к Canon.

В завершение этого короткого, но грустного подраздела немного ста-тистики: компания Apple потратила всего 73 дня на то, чтобы продать 50 тысяч компьютеров Macintosh. В свою очередь NeXT Inc. для реализации по-добного количества своих систем по-надобилось целых семь лет.

Планы на будущееВ дальнейшем, кроме платформы х86, NEXTSTEP была перенесена на рабочие станции Sun (архитектура SPARC) и Hewlett-Packard (архитектура PA-RISC), однако особого распростра-нения из-за своей цены (995 долларов за одну лицензию) не получила.

В 1993 году компания Microsoft пуб-лично заявила, что в скором време-ни выпустит объектно-ориентирован-ную операционную систему, получив-шую кодовое название «Каир» (Cairo). С этой ОС компания собиралась вый-ти на рынок объектно-ориентирован-ных окружений, на котором до этого

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

23 ноября 1993 года компания Sun подписала с NeXT Inc. договор, соглас-но которому объектно-ориентирован-ное окружение NEXTSTEP (но не вся ОС) будет перенесено на операцион-ную систему Solaris. В связи с этим Sun вложила в компанию 10 млн. долларов. Так стартовал проект OpenStep.

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

ядро Mach и переписать низкоуров-невые серверы для работы с Solaris. Уже 30 июня 1994 г. компания опуб-ликовала спецификации будущей OpenStep.

Однако под конец года стало из-вестно, что «Каир» от Microsoft – не бо-лее чем рекламная пустышка, пос-ле чего Sun потеряла всякий инте-рес к OpenStep и сконцентрировалась на доработке языка Java.

Тем не менее NeXT Inc. не расстро-илась и в конце 1994 года выпусти-ла готовый продукт, причём не толь-ко для Solaris, но и для операцион-ных систем Windows, HP-UX и MacOS. OpenStep сразу же нашла себе пок-лонников, в результате чего в нача-ле 1995 года при объявлении финан-совых результатов за истёкший квар-тал NeXT Inc. впервые отрапортова-ла о получении прибыли в один мил-лион долларов.

В 1995 году компания представи-ла пакет WebObjects, предназначен-ный для создания сложных динами-ческих интернет-сервисов на основе баз данных. В 1996 г. количество кли-ентов, лицензировавших WebObjects у NeXT Inc., перевалило за 275 ком-паний, среди которых фигурировали: Dell, Chrysler, Nike, и Walt Disney. Из-вестный на весь мир онлайн-магазин iTunes компании Apple построен как раз при помощи WebObjects.

Впервые за десять лет своего су-ществования компания наконец-то ста-

Рисунок 11. Скриншот OpenStep

Рисунок 12. Скриншот Rhapsody, работающий на компьютере с процессором Pentium

Page 93: 044 Системный Администратор 07 2006

91№7, июль 2006

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

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

Возвращение на родинуК середине 90-х годов прошлого столе-тия операционная система MacOS уже не являлась чем-то особенным. Да, её внешний вид и пользовательский ин-терфейс всё ещё радовали глаз, одна-ко внутри она стремительно устарева-ла. Отсутствие вытесняющей многоза-дачности, поддержки нескольких про-цессоров, а также защищённого режи-ма памяти – вот список того, чем бо-ялась хвастаться MacOS. В Apple был создан проект операционной систе-мы нового поколения под кодовым на-званием «Copland», однако безрезуль-татная разработка шла на протяжении двух с лишним лет, а после очередной выставки MacWorld в 1996 году, на ко-торой обещанная ОС так и не была вы-пущена, общественность окончатель-но потеряла веру в неё.

У Apple была возможность лицен-зировать другую операционную сис-тему (ходили слухи о Solaris от Sun и Windows NT от Microsoft), однако ком-пания выбрала другой путь – покупку ОС вместе с её владельцем.

Первоначально в качестве потен-циальной цели для покупки высту-пала Be Inc. с её операционной сис-темой BeOS, которая обладала все-ми необходимыми качествами и к то-му же прекрасно работала на компью-терах Macintosh. К сожалению, тайные переговоры с владельцем Be Inc. Жа-ном-Луи Гассе застопорились на цене, которую он затребовал за свою компа-нию. К тому же, несмотря на свою ре-волюционность, BeOS в то время бы-ла молодой чёрной лошадкой, которой ещё предстояло пройти суровую школу жизни на компьютерах обычных поль-зователей.

С другой стороны, на рынке дав-но существовала NeXT Inc., операци-онная система которой, являвшаяся

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

Ещё одна причина, перетягивав-шая канат на сторону NeXT, – вели-колепные средства разработки новых программ для этой ОС. Демонстрацию работы Interface Builder, которой заве-довал сам Стив Джобс, было сложно не назвать уникальной. В то время как владелец NeXT проводил перед соб-равшимися очередной семинар, про-граммист из его компании начинал раз-работку нового приложения. Под конец семинара Джобс демонстрировал гото-вую к работе программу.

Точка над «i» в переговорах была поставлена 20 декабря 1996 года, ког-да Apple Computer объявила о покупке NeXT Inc. за 427 млн. долларов (из ко-торых 130 млн. долларов Джобс забрал себе). Сумма впечатляет, особенно по сравнению с жалкими 120 млн., ко-торые Apple была согласна выплатить Гассе за его компанию. Однако этот отчаянный шаг был единственным лу-чиком света среди туч, постоянно сгу-щавшихся над головой Apple.

Сразу же после приобретения NeXT Inc. проект «Copland» был закрыт, а его место занял новый – «Rhapsody», бла-годаря которому OpenStep должна бы-ла стать «MacOS нового поколения». Руководство по переделке ОС взял на себя Ави Теваньян.

Первым делом были убраны все лицензированные ранее технологии, например, Display PostScript была за-менена на бесплатную Quartz. В 1997 году Apple выпустила финальную вер-сию OpenStep 4.2, а также бета-вер-сию Rhapsody, которая позже, пос-ле выхода Rhapsody DR3, была пере-именована в MacOS X. В новой ОС бы-ло принято отказаться от ядра Mach в пользу его наследника – открыто-го проекта Darwin. Кроме того, пуб-лике был представлен новый поль-зовательский интерфейс под назва-нием Aqua.

На выставке Apple Expo 2000 в Париже Apple представила публике MacOS X Public Beta, ставшую самой коммерчески успешной платной бета-версией программы. Окончательный же выпуск новой операционной систе-мы состоялся 24 марта 2001 года.

На сегодняшний день MacOS X многими названа наиболее совершен-ной операционной системой, пред-лагающей мощь UNIX вместе с про-стотой MacOS. «Ушки» NeXT, «торча-щие» за этим выражением, трудно не заметить.

1. http://www.cnet.com2. http://www.osnews.com3. http://www.wikipedia.com4. http://www.romain-moisescot.com5. http://www.wired.com6. http://www.ex.com7. http://www.alyon.org

Рисунок 13. MacOS X 10.0 – реинкарнация NEXTSTEP

Page 94: 044 Системный Администратор 07 2006

92

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

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

Сложно представить себе создание программных продуктов командой про-граммистов без удобной среды разра-ботки. Из этой книги вы узнаете о но-вом продукте от компании Micorsoft – Visual Studio 2005 Team System. В пер-вой части книги, которая носит назва-

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

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

Мир программирования. Основы современных алгоритмовДж. Макконнелл

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

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена издательством «Тех-

носфера».

«Техносфера»

2004

368

5094836-005-9

≈ 200 руб.

Знакомство с Microsoft Visual Studio 2005 Team SystemРичард Хандхаузен

ние «Знакомство с Team System», вы ознакомитесь с общим обзором Team System, а также из каких частей со-стоит эта система, team foundation server (рассмотрены компоненты и ар-хитектура), клиентские приложения team system (рассмотрены средства для руководителей проекта, архитек-торов, разработчиков и тестировщи-ков). Во второй части рассмотрен ро-левой подход к разработке ПО. Каж-дая из глав, входящая во вторую часть, рассматривает одну из ролей и функ-ции из продукта, которые предназна-чены для них. Руководитель проекта (организация команды, начало рабо-ты над новым проектом, управление). Архитекторы (роль архитектора, конс-труктор распределенных систем, логи-ческого центра данных, систем, а также развертывания). Разработчики (про-смотр рабочих элементов, управление версиями, интегрированные средства

тестирования, эффективность мето-дической разработки). Тестировщики (рабочие элементы и тестирование, уп-равление тестами, отслеживание оши-бок). Из части книги, посвященной ме-тодикам и расширяемости, вы познако-митесь с Microsoft Solutions Framework, настройками и расширениями Team System, завершением работы над про-ектом, развертывание. В приложении вы найдете справочник по конструкто-рам распределенных систем, а также на примере рассмотрите создание но-вого проекта при помощи Team System. Весь изложенный материал написан простым и доступным языком.

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена издательством «Питер».

«Питер»

2006

416

5-469-01218-2

≈ 285 руб.

Page 95: 044 Системный Администратор 07 2006

93№7, июль 2006

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

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

Среди множества книг, посвященных PL/SQL, эту отличает хотя бы то, что она является официальным авторизо-ванным изданием от Oracle. В первой части книги автор познакомит вас с на-чальными сведениями о PL/SQL, сре-дами, в которых он выполняется и раз-рабатывается (SQL *Plus, Rapid SQL, SQL Navigator, TOAD, SQL-Programmer,

Oracle 9i. Программирование на языке PL/SQLСкотт Урман

PL/SQL Developer). Этот материал будет полезен прежде всего людям, которые только начинают работать с PL/SQL. Часть, которая носит название «Ба-зовые свойства PL/SQL», представ-лена следующим материалом: осно-вы PL/SQL (лексические единицы, ти-пы, выражения и операции, управля-ющие структуры), использование SQL в PL/SQL (DML, псевдостолбцы, при-вилегии, управление транзакциями), встроенные функции SQL (числовые, дата и время, преобразования), курсо-ры (циклы выборки, переменные), об-работка ошибок (понятие исключитель-ных ситуаций, а также рекомендации по их использованию), сборные конструк-ции. Освоив третью часть книги «До-полнительные возможности PL/SQL», вы научитесь создавать и использовать процедуры, функции и модули. Не оста-лись без внимания и триггеры (освеще-ны вопросы создания и использования

триггеров, а также изменяющиеся таб-лицы). В приложении вы найдете руко-водство по работе со встроенными мо-дулями и зарезервированные слова pl/sql. Замечательное издание, которое окажется полезным как программис-там, так и администраторам DB Oracle. Нельзя не отметить, что несмотря на до-статочную сложность излагаемого ма-териала, книга легко читается, и вся ин-формация изложена в доступном виде. На прилагаемом к книге диске вы най-дете примеры из книги, а также trial-версии некоторых из упомянутых в из-дании программ.

Руководство по технологиям объединенных сетейCisco system inc

ренных тем: основы теории объеди-ненных сетей, технологии локальных сетей (Ethernet, FDDI), распределен-ные сети (рассмотрены протоколы Frame Relay, PPP, SDLC, X.25, техно-логия ISDN). Раздел «Технологии муль-тисервисного доступа» представлен материалом о беспроводных техно-логиях, а также кабельных и оптичес-ких сетях, цифровых абонентских ка-налах, VoIP, протоколах динамической транспортировки пакетов. Мосты и пе-реключатели (прозрачное соединение сетей, коммутируемые локальные се-ти и сети VLAN, MPLS, DLSw). Сетевые протоколы (IP, IPv6, NetWare, AppleTalk, DECnet). Очень подробно рассмотре-ны все основные протоколы маршру-тизации (GP, EIGRP, IGRP, NSLP, OSPF, RIP, RSVP, SMRP). Управление сетями (технологии защиты сетей, сетевые ка-

Обзор книжных новинок подготовил Александр Байрак

талоги, сетевое кеширование, удален-ный мониторинг, протокол SNMP, QoS). В конце каждой из глав находятся кон-трольные вопросы, которые помогут лучше усвоить прочитанный матери-ал. В приложении вы найдете ответы на контрольные вопросы, а также крат-кую информацию о технологиях Token Ring, Xerox Network system и Banyan VINES. Хорошая книга, которая может послужить настольным справочником для широкого круга системных и сете-вых администраторов.

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена Издательским домом

«Вильямс».

«Вильямс»

2005

1040

5-8459-0787-X

≈ 950 руб.

Издательство:

Год издания:

Количество страниц:

ISBN:

Цена:

Книга предоставлена Издательским домом

«Вильямс».

«Лори»

2006

528

5-85582-225-7

≈ 380 руб.

Page 96: 044 Системный Администратор 07 2006
Page 97: 044 Системный Администратор 07 2006

95№7, июль 2006

подписка на 2006 год

Российская Федерация Подписной индекс: годовой – 20780, полугодовой – 81655 Каталог агентства «Роспечать» Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская

доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru Подписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru

СНГ В странах СНГ подписка принимается в почтовых отделе-ниях по национальным каталогам или по списку номенк-латуры «АРЗИ»: Азербайджан – по объединенному каталогу россий-

ских изданий через предприятие по распространению

печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21) Казахстан – по каталогу «Российская Пресса» через

ОАО «Казпочта» и ЗАО «Евразия пресс» Беларусь – по каталогу изданий стран СНГ через РГО

«Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10) Узбекистан – по каталогу «Davriy nashrlar» российс-

кие издания через агентство по распространению пе-чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-киллик, 5/3, офис 33)

Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22)

Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)

Молдавия – по каталогу через ГП «Пошта Молдавей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)

по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17)

по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)

Подписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220

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

20780*

81655**

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

87836

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

* годовой** полугодовой

Page 98: 044 Системный Администратор 07 2006

96

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

УЧРЕДИТЕЛИВладимир ПоложевецАлександр Михалев

РУКОВОДИТЕЛЬ ПРОЕКТАПетр Положевец

РЕДАКЦИЯИсполнительный директорВладимир ПоложевецОтветственный секретарьНаталья Хвостова[email protected]Технический редакторВладимир ЛукинРедакторАлексей КоршуновВнештатные редакторыАлексей БарабановСергей Супрунов

РЕКЛАМНАЯ СЛУЖБАтел./факс: (495) 628-8253Евгения Тарабринаreс[email protected]

Верстка и оформление[email protected]Дизайн обложкиНиколай Петрочук

По вопросам распространенияобращайтесь по телефону:(495) 628-8253 (доб. 120)

107045, г. Москва,Ананьевский переулок, дом 4/2, стр. 1тел./факс: (495) 628-8253Сайт журнала: www.samag.ru

ИЗДАТЕЛЬЗАО «Издательский дом«Учительская газета»

Отпечатано типографиейГП «Московская Типография №13»Тираж 11000 экз.

Журнал зарегистрированв Министерстве РФ по делам печати, телерадиовещания и средств массо-вых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.).

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

ЧИТАЙТЕВ СЛЕДУЮЩЕМНОМЕРЕ:

Уважаемые читатели!

Спешите оформить подпискуна второе полугодие 2006 года!

Приобрести новые и старые номера журналавы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.

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

Маленькая телекоммуникационная революцияКрупные конференции позволяют взглянуть на казалось бы давно знако-мых людей с другой стороны. На про-шедшем в конце июня мероприятии Interop Moscow представилась возмож-ность пообщаться со многими предста-вителями ИТ-индустрии, прямым обра-зом повлиявшими на ее положение се-годня. Один из них – Марк Спенсер – благодаря своей увлеченности в от-крытом ПО и стечению обстоятельств смог совершить маленькую револю-цию в телекоммуникациях... Он пода-рил миру мощную, а главное свобод-ную, замену дорогостоящим коммер-ческим PBX – Asterisk. Марк поделил-ся мыслями об этом продукте и об от-крытом ПО вообще в интервью «Сис-темному администратору» сразу после своего выступления на Interop, завер-шившего конференцию по VoIP.

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

ный подход со стандартными старто-выми скриптами. Рассмотрим, как это сделать на примере SUSE Linux.

Аудит и дизассемблирование эксплоитовЭксплоиты, демонстрирующие нали-чие дыры (proof-of-concept), обычно распространяются в исходных текстах, однако, основной функционал заклю-чен в shell-коде, анализ которого пред-ставляет весьма нетривиальную за-дачу, требующую инженерного скла-да ума, развитой интуиции, обширных знаний и… знания специальных при-емов дизассемблирования, о которых и пойдет речь в следующем номере.

Windows Firewall: защищаем внутренние ресурсы сетиСовременные средства защиты корпо-ративных ресурсов от внешних угроз разнообразны, существуют как аппарат-ные и программные межсетевые экра-ны, так и системы обнаружения вторже-ния, разбирающие IP-пакеты до уровня приложений, а также шлюзовые антиви-русы фильтрующие определенный вид трафика. А что происходит с защитой ресурсов внутренней сети? Рассмотрим, как защищать рабочие станции с помо-щью Windows Personal Firewall.

Современный Linux сервер: виртуализируем сетевые устройстваЧасть 2