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

№2(27) февраль 2005

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


www.samag.ru

Системная интеграция – общие концепции


Автоматическая установка
операционной системы
и программного обеспечения
SOCKS – универсальный прокси-сервер
Строим виртуальную сеть с TINC
Создание релиза FreeBSD
IP-роуминг: вводный курс
Почтовый сервер на базе Postfix
Режем спам. Дополнительные методы
Техника оптимизации под Linux
№2(27) февраль 2005

Считаем трафик на FreeBSD:


ng_ipacct + Perl+ MySQL
оглавление

ТЕНДЕНЦИИ 2 FreeBSD tips: NAT по старинке


Сергей Супрунов
СОБЫТИЯ 3 amsand@rambler.ru 44
Всегда на связи,
РЕПОРТАЖ 4 или IP-роуминг: вводный курс
Сергей Яремчук
АДМИНИСТРИРОВАНИЕ grinder@ua.fm 46
Сага о биллинге,
Системная интеграция – или Считаем трафик на FreeBSD
комплексный подход (ng_ipacct + perl+ MySQL)
к самостоятельному Часть 1
решению проблемы
Владимир Чижиков
Роман Марков skif@owe.com.ua 50
stepan-razin@newmail.ru 6
Автоматическая установка ОС
Кто купил Corel Linux? и сопутствующего программного
Обзор возможностей настольного дистрибутива Xandros. обеспечения
Валентин Синицын Иван Коробко
val@linuxcenter.ru 12 ikorobko@prosv.ru 60
Создание релиза FreeBSD ПРОГРАММИРОВАНИЕ
Андрей Елсуков
bu7cher@yandex.ru 16 Техника оптимизации под Linux
Конструктивный Dialog Крис Касперски
kk@sendmail.ru 68
Сергей Супрунов
amsand@rambler.ru 20 Zend Studio 4.0 – новая версия,
новые возможности
Почтовый сервер на базе Postfix
Защита от вирусов и нежелательной почты минимальными Евгений Воякин
средствами. evgy@mail.ru 75
Геннадий Дмитриев HARDWARE
stranger03@mail.ru 26
Режем спам. Дополнительные методы Запись дисков CD-R/RW в Linux
Часть 4
Денис Назаров
pheonix@sysattack.com 30 Владимир Мешков
ubob@mail.ru 80
Универсальный прокси-сервер
ОБРАЗОВАНИЕ
Валентин Синицын
val@linuxcenter.ru 34
Unformat для NTFS
Строим виртуальную сеть с TINC
Крис Касперски
Сергей Яремчук kk@sendmail.ru 88
grinder@ua.fm 39
BUGTRAQ 11, 15

№2, февраль 2005 1


тенденции
Пополнение серверной линейки HP Сага о патентах на ПО в Европе
Пресс-конференция компании HP, посвященная представ- Продолжается затянувшаяся история с принятием законо-
лению новых серверных продуктов HP ProLiant на базе про- проекта о патентах на программное обеспечение в Европе.
цессоров AMD Opteron, прошла 21 февраля в Москве в оте- На OSDL Linux Summit в очередной раз эту проблему под-
ле «Балчуг». нимают видные деятели Open Source (среди них Торвальдс,
Специалистами компании была анонсирована обновлен- Белендорф и Капор), открыто критикуя инициативу ЕС. И
ная линейка процессоров AMD Opteron x52, презентованы уже 2 февраля выясняется, что директива CIID (о компью-
новые модели 2-х и 4-х процессорных серверов HP ProLiant терных разработках) будет переписана – таковы итоги за-
DL385 и DL585 на процессорах AMD, и также новые сер- седания юридического комитета Европарламента (JURI).
верные модули на базе процессоров AMD в форм-факторе Несмотря на этот успех, Мартин Финк, Linux-специалист из
блейд-серверов BL25p и BL35p. Hewlett-Packard, предостерегает всех противников патен-
Новые процессоры AMD Opteron, изготовленные по про- тов на ПО, советуя им смириться с тем, что данного шага
цессу 90 нм, модели 152, 252 и 852, были представлены Сер- все равно не избежать, и к этому надо привыкать. В сере-
геем Мелеховым, ведущим инженером по внедрению про- дине месяца при поддержке FFII в Брюсселе проходит ак-
дукции AMD. Набор привычных технологических новшеств ция протеста против принятия закона о патентах на ПО, в
в стиле «дальше, выше и быстрее», которые характеризуют которой принимает участие около 300 представителей раз-
продукцию AMD, возглавляют технологии Direct Connect, личных европейских стран. Позже Хартмут Пилч, возглав-
HiperTransport и AMD PowerNow!. Старшие модели этого ряда ляющий FFII, высказывает сомнение в том, что Европейс-
специально ориентированы на использование в многопро- кая комиссия воспользуется возможностью подготовить ка-
цессорных системах. Наиболее интересными представля- чественную замену отвергнутому законопроекту.
ются результаты применения AMD PowerNow!, которые по-
зволяют процессорам AMD существенно превосходить кон- Новости «огненного лиса»
курентные аналоги по энергосбережению. Разработчик Firefox Бен Гуджер сообщает о планах по бу-
Но, бесспорно, самое важное свойство новых изделий – дущим релизам браузера. Firefox 1.1 Alpha появится в мар-
это так называемая совместимость с двуядерными процес- те, Beta – через месяц, а выпуск финальной версии 1.1, из-
сорами (Dual-Core), выпуск которых намечен на середину начально ожидавшийся к началу весны, перенесен на июнь.
2005 года. Использование этих процессоров в новых сер- Ориентировочным временем выхода Firefox 2 остается де-
верах HP ряда DL и BL, о которых рассказали менеджеры кабрь 2005 года. Поисковая система Yahoo решила после-
соответствующих направлений компании HP Игорь Слеп- довать примеру Amazon.com и выпустила свою панель для
цов и Сергей Члек, делает эти модели очень привлекатель- Firefox, с помощью которой пользователи могут искать в
ными, поскольку позволит без аппаратных переделок про- сети, не заходя на сайт. Компания Ask Jeeves проявила за-
извести апгрейд на двуядерные процессоры AMD Opteron интересованность в возможном создании собственного бра-
и практически удвоить тем самым вычислительные мощ- узера на базе Mozilla Firefox, а также выразила готовность
ности. открыть свои технологии поиска из Ask Jeeves Desktop
Новые серверы HP ProLiant DL385 и DL585, соответствен- Search. 16 февраля Mozilla Foundation публикует анонс о
но 2U/2P и 4U/4P (для новичков: размер по вертикали/число том, что Firefox скачали уже более 25 миллионов раз, а 24
процессоров) являются очередными отлично выполненными числа сообщается о выходе Firefox 1.0.1 с исправлениями
изделиями компьютерного hi-end и вполне могут повторить (в частности, в безопасности браузера).
успех предыдущей серверной пары на процессорах Intel
(DL380 в настоящее время лидер продаж). Производителем Linux-активность Novell
гарантируется полная совместимость с широким рядом опе- Novell не перестает вести активную политику по отноше-
рационных систем и прикладных программ. нию к Linux. В начале месяца компания анонсирует бета-
Серверы BL25p и BL35p, оба двухпроцессорные, выпол- версию Novell Client для Linux, затем совместно с IBM объяв-
нены в форм-факторе «блейд». Серверы такого типа сей- ляет о намерении продвигать свой корпоративный дистри-
час фавориты внимания. Стратегия их внедрения, так на- бутив SLES на платформе Power, а позже представляет
зываемые «экосистемы», очень спорна. Но именно в этом решение на базе SUSE Linux для обеспечения сетевой бе-
классе серверов, в силу высокой интеграции, максимально зопасности – Security Manager. Но не останавливается и на
выгодно могут быть использованы свойства процессоров этом: Novell открывает 200 тысяч строк кода проекта NetMail,
AMD Opteron, пониженное тепловыделение и в недалеком на которых базируется новое серверное Open Source ПО
будущем двуядерные процессоры. И уже сейчас эти блейд- компании для работы с электронной почтой, календарями
серверы вместе с моделями DL показывают максимальную и контактами, получившее название Hula. Linux-инициати-
производительность в своем классе. вы Novell добрались и до азиатских регионов: на Тайване
Хотя, что тут удивительного! Если в Cray на основе AMD открыто два центра для сертификации дистрибутива SUSE
Opteron создают суперкомпьютеры, то применение этих про- Linux, а в Корее подписан договор с KT, по которому мест-
цессоров в серверах стандартной архитектуры вместе с вы- ный оператор сотовой связи будет заниматься продажами
сокими технологиями HP позволяет добиваться замечатель- SLES.
ных результатов.
Составил Дмитрий Шурупов
Алексей Барабанов по материалам www.nixp.ru

2
события
Форум по открытому коду в России «Open Source Forum Russia» и возможность внеконкурсного
27-29 апреля 2005 г. показа своих разработок в демозоне OpenSourceLive.
В конце апреля впервые состоится Open Source Forum Заявки на участие в конкурсе принимаются до 15 марта
Russia – крупнейшее на сегодняшний день мероприятие, 2005 года по адресу http://www.opennet.ru/konkurs. С 15 мар-
целиком посвященное технологиям разработки программ- та по 10 апреля будет проходить голосование, а уже 11 ап-
ного обеспечения с открытым исходным кодом. реля будут подведены итоги и опубликованы результаты ра-
Форум, включающий в себя конференцию и выставку, боты.
пройдет 27-29 апреля 2005 года в Москве, в гостинице «Рэ- В качестве претендентов могут выступать специалис-
диссон САС Славянская». Организаторы – ассоциация РУС- ты, участвующие в разработке программ, распространяе-
СОФТ, агентство Форт-Росс и компания Линукс Инк. мых с открытыми исходными текстами; авторы статей и пе-
Чем особенно интересно данное мероприятие? реводов документации; энтузиасты, поддерживающие па-
! Многие широко известные в мире гуру открытого кода кеты программ; эксперты, предоставляющие консультации
и главы компаний, занимающихся открытым кодом, уже в веб-форумах, новостных конференциях и почтовых рас-
подтвердили свои выступления в программе. Это Jon сылках.
maddog (Linux International), Richard Seibt (Novell), David Кроме бесплатного участия в московском форуме, по-
Axmark (MySQL), Larry Wall (Perl), Alex Pinchev (RedHat) бедители конкурса ОpenNet.ru получат комплект призов от
и другие. компании LinuxCenter. От редакции журнала «Системный
! Во время форума будет постоянно работать выставка, администратор» обладатели призовых мест получат в по-
два раздела которой будут посвящены демонстрации дарок бесплатную подписку на издание на 2005 год. Для
наиболее интересных решений (в разделе Linux City – одного из участников, не вошедшего в тройку лидеров, на
как различные предприятия и организации полностью основании решения администрации OpenNet.ru будет пре-
функционируют на Linux, и в разделе OpenSourceLive – доставлен сертификат на покупку книг на сумму 3000 руб.
лучшие приложения и решения на открытом коде, ото- Планируется, что проводимое в рамках OpenNet.ru ме-
бранные к демонстрации на конкурсной основе). роприятие получит продолжение в серии конкурсов, направ-
! Форум поддержан Министерством ИТ и связи и Мини- ленных на поддержание и стимулирование русскоязычных
стерством экономического развития и торговли. Вопро- разработчиков открытых программ.
сам использования открытого кода в государственных
структурах будет посвящен один из дней конференции. Международная специализированная
выставка-конференция
Программный комитет включает представителей все- Infosecurity Russia
мирно известных вендоров, лидеров разработки программ- 7-9 сентября 2005 г.
ного обеспечения, представителей ведущих отраслевых Выставочное объединение «Рестэк» совместно с компани-
министерств и крупнейших ИТ-ассоциаций как РУССОФТ ей Reed Exhibitions объявляют о проведении международной
и ITAA. Форум по открытому коду в России получил под- специализированной выставки-конференции Infosecurity
держку Всемирного Альянса ИТ-ассоциаций (WITSA). Russia.
Программный комитет отбирает темы и выступления для Выставка пройдет 7-9 сентября 2005 года на одной пло-
широкого обсуждения и профессиональных дискуссий: щадке с LinuxWorld Russia и StorageExpo в выставочном ком-
! управление проектами при разработке ПО с открытым плексе «Гостиный двор» (Москва, ул. Ильинка, д. 4).
кодом; В рамках выставки Infosecurity 2005 предусмотрена на-
! безопасность программных продуктов и технологий на сыщенная деловая программа, которая включает в себя кон-
базе ПО с открытым кодом; ференцию, «круглые столы», семинары и презентации для
! обучение персонала ведению разработок в среде ПО с специалистов отрасли.
открытым кодом; На выставке Infosecurity 2005 будут представлены про-
! особенности разработки и оказания коммерческих ус- дукты и решения мировых лидеров отрасли информаци-
луг по разработке ПО с открытым кодом; онной безопасности, таких как Cisco Systems, CPS, Hewlett-
! сравнение характеристик ПО с открытым кодом и зак- Packard, McAfee (Associates), Nortel, PatchLink Corporation,
рытого ПО. RedHat, SafeBoot, Sun Microsystems, Symantec, Veritas, а
также ведущих российских фирм, таких как АМТ Груп, Ди-
Подробную информацию об участии в выставке и кон- алогНаука, Информзащита, Инфосистемы Джет, Корпо-
ференции вы можете найти на сайте по адресу: http:// рация ЮНИ, Компьюлинк, Лаборатория Касперского, ЛА-
www.opensource-forum.ru. Ждем вашей регистрации на сай- НИТ, ЛанКрипто, МОО «АЗИ», Элвис Плюс, Aladdin, Digital
те или по электронной почте: info@fort-ross.ru. Security, InfoWatch, Positive Technologies, Protection
Technologies, Rainbow Technologies, SecurIT и других.
Конкурс Посетить экспозицию выставки Infosecurity 2005, а также
Стартовал первый конкурс разработчиков открытого про- послушать любой из докладов экспертов абсолютно бесплат-
граммного обеспечения, проводимый проектом OpenNet.ru но может каждый специалист по информационной безопас-
совместно с ассоциацией РУССОФТ, компанией LinuxCenter ности, предварительно зарегистрировавшийся на официаль-
и журналом «Системный администратор». Трех победителей ном веб-сайте выставки www.infosecuritymoscow.com с мар-
ждет бесплатное участие в специализированном форуме та 2005 года. Следите за обновлениями на сайте!

№2, февраль 2005 3


репортаж
Школа-cеминар
«Информационные технологии в образовании: Технологии Linux»
C 26 по 28 января на базе Московского Государственного использовать среду KDE, создавать текстовые документы,
Педагогического Университета (МПГУ) прошла школа-се- электронные таблицы, презентации и даже векторные ди-
минар «Информационные технологии в образовании: Тех- аграммы в открытом офисном пакете OpenOffice.org и ре-
нологии Linux». Организаторами мероприятия выступили дактировать растровые изображения в The GIMP.
Всемирный Распределенный Университет – World Distributed
University (WDU) и Центр компетенции Linux корпорации IBM.
Журнал «Системный администратор» выступил информа-
ционным спонсором этого события.
В работе школы приняли участие более 100 преподава-
телей информатики, студентов старших курсов, аспиран-
тов и IT-специалистов, прибывших в МПГУ со всех уголков
России и даже бывших союзных республик: Азербайджана
и Украины.

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


ившие программу практических занятий и подтвердившие
свои знания в ходе квалификационного экзамена, получи-
ли профессиональный сертификат «Пользователь Linux»,
удостоверенный печатью WDU. Кроме этого, участники се-
минара получили самозагружаемые компакт-диски (LiveCD)
со специализированной версией дистрибутива Knoppix RE,
содержащие тезисы наиболее интересных докладов, и дру-
Рабочий день семинара традиционно делился на две ча- гие полезные материалы.
сти. В первой половине дня проходили пленарные заседа-
ния и «круглые столы», затрагивающие актуальные темы:
«Технологии Linux», «Специальность ИТО», «Защита ин-
формации и информационная безопасность». С доклада-
ми на этих секциях выступали специалисты-практики, а
также приглашенные эксперты из министерств РФ.

Семинар «Технологии Linux» – первое и пока что един-


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

Живым интересом со стороны слушателей-педагогов


пользовались «истории успеха» – сообщения о примене-
нии Linux в образовательном процессе в высшей школе, а
также вопросы совместного использования Windows и Linux.
Вторая половина дня отводилась для практических за-
нятий. Вниманию участников школы были предложены две
программы, разработанные Мельниковым В.В. (Академия
наук Крыма) и Синицыным В.Е. (LinuxCenter.ru) и рассчи-
танные на разный уровень начальной подготовки. В ходе
этих занятий слушатели приобрели базовые навыки, необ- Валентин Синицын
ходимые для повседневной работы в Linux. Они научились Фото Павла Заклякова

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

СИСТЕМНАЯ ИНТЕГРАЦИЯ – КОМПЛЕКСНЫЙ


ПОДХОД К САМОСТОЯТЕЛЬНОМУ РЕШЕНИЮ
ПРОБЛЕМЫ

РОМАН МАРКОВ
«Системная интеграция». К сожалению, не все IT-специа- При этом понятие «интеграция» подразумевает реали-
листы четко понимают смысл этого выражения. Сегодня мы зацию единых механизмов взаимодействия IT-ресурсов и
попробуем разъяснить значение этого популярного в обла- пользователей, комплексные меры безопасности на уровне
сти информационных технологий термина, а также дадим всей информационной структуры предприятия, создание ад-
рекомендации по самостоятельному осуществлению этой министративной политики работы в сети, регламент функ-
задачи силами собственного IT-отдела. ционирования отделов технической поддержки, системных
Проект системной интеграции в разрезе информацион- администраторов и руководителей IT-структур.
но-технического обеспечения предприятия – это комплекс Помимо этого, важным условием для успешного внедре-
действий, направленных на автоматизацию рабочих про- ния проекта является реализация всех этапов автоматиза-
цессов и увеличение эффективности труда сотрудников при ции одной организацией (структурным подразделением),
помощи вычислительной техники, а также на повышение имеющей опыт создания и сдачи подобных проектов «под
безопасности корпоративной сети. ключ».

6
администрирование
С чего начать? реть «лишнюю пару» – дополнительный провод (или не-
Попробуем описать общие концепции такого проекта, а так- сколько – все зависит от задач), который не будет исполь-
же типичные ошибки и трудности, с которыми придется зоваться сразу, однако при необходимости легко вводится
столкнуться на различных этапах работы. Автор статьи яв- в общую схему коммутации. Это поможет в будущем избе-
ляется руководителем отдела системной интеграции IT-ком- жать проблем с потерей скорости при резком увеличении
пании и принимает прямое участие в таких проектах. Опи- количества рабочих мест в соседних зданиях/помещениях.
санные ситуации основаны на реальных событиях, проис- Телефонная сеть вообще является камнем преткновения
ходящих в процессе взаимодействия с участниками проек- при расширении компании. В случае с масштабированием
та. Как было сказано выше, «системная интеграция» – гло- компьютерной сети всегда можно выйти из положения (пусть
бальный процесс, поэтому участниками проекта в той или и ценой потери скорости передачи данных) установкой до-
иной мере являются все сотрудники фирмы. В связи с этим полнительного сетевого коммутатора в помещение, где
и появляется необходимость в создании административных сгруппировались новые рабочие места. К сожалению, со
правил для всех подразделений предприятия. Впрочем, обо стандартной телефонией такой фокус не проходит и при
всем по порядку. Опишем порядок как административных, необходимости увеличить количество телефонов в опреде-
так и технических мер. ленном помещении приходится тянуть туда новые прово-
Существуют два варианта развития проекта: да. В этом случае и можно будет использовать «лишний
! Вы хотите построить на своем предприятии всю IT-струк- провод», который был заблаговременно оставлен при пер-
туру «с нуля» и «под ключ». вичной прокладке сети. Причем задействовать витую пару,
! У вас уже есть функционирующая сетевая инфраструк- которая была запланирована под локальную сеть с некото-
тура, которую необходимо упорядочить. рой избыточностью, оказывается гораздо удобнее, так как
по стандартной витой паре можно прокинуть сразу несколь-
Как правило, первый вариант всегда проще, хотя и в ко телефонных линий.
этом случае обязательна разработка плана и концепций. В Постарайтесь при начальном монтаже максимально об-
противном случае в итоге вы получите вариант №2 и нача- легчить себе дальнейшую жизнь. Справедливость поговор-
ло новой попытки системной интеграции. Рассмотрим пер- ки «Два переезда равны одному пожару» много раз прове-
вый вариант как основу построения корпоративных систем, рена на практике, поэтому попробуйте приложить все уси-
а затем на его базе проанализируем возможные пути мо- лия, чтобы спланировать это еще на этапе проектирования
дификации уже существующей инфраструктуры. кабельных систем. Помимо этого, не стоит забывать об уже
прочно держащих позиции технологиях беспроводных се-
Кабельная система – все «с нуля» тей. В последние годы оборудование для построения бес-
Как «театр начинается с вешалки», так и любая IT-система проводных сетей наконец-то стало удовлетворять тем тре-
начинается с физических коммуникаций. Проще говоря, с бованиям, которые возникают при работе пользователей с
проводов (или беспроводных коммуникаций). Именно гра- современными сетевыми приложениями, так что их приме-
мотное проектирование с учетом дальнейшего роста ком- нение в помещениях с прямой видимостью (или с незначи-
пании, а также качественная разводка кабельных систем и тельными перекрытиями) является прекрасной альтерна-
определяет дальнейшие возможности масштабирования су- тивой проводным системам. Однако следует помнить, что
ществующей сети. стремиться построить полностью беспроводную сеть не
Старайтесь сразу строить предварительные расчеты и стоит – соединения между помещениями/этажами лучше
планы таким образом, чтобы свести все коммуникации (ло- сделать на кабельной основе.
кальная сеть и телефония) в единый центр коммутации. Как
правило, это коммутационный шкаф-стойка для установки Оборудование
в нем патч-панелей и оборудования. Именно здесь рекомен- После того, как все кабельные системы спроектированы и
дуется сконцентрировать все проводные коммуникации для построены, можно приступать к закупке нового оборудова-
их дальнейшей коммутации и распределения. Кажущиеся из- ния и модификации устаревшего. Тут следует руководство-
лишними трудозатраты по организации описанной схемы с ваться многократно описанными принципами соответствия
лихвой оправдаются дальнейшей экономией времени при ре- поставленных задач и необходимой для этого техники.
организации фирмы (переезды отделов в другие помеще- Прежде всего необходимо напомнить основную мысль, ко-
ния, добавление рабочих мест и т. п.). Статистика показыва- торую, к сожалению, очень часто игнорируют: не экономь-
ет, что в средних и крупных компаниях примерно 30% слу- те на узлах, которые являются критичными по отношению
жащих раз в год меняют свое рабочее место в связи с опи- к работоспособности всей системы. Практика показывает,
санными выше событиями. И именно по этой причине все- что возможность сэкономить хотя бы сотню долларов час-
гда необходимо планировать кабельную сеть таким образом, то приводит к тому, что закрываются глаза на обратную
чтобы количество розеток было большим, чем нужно для сторону медали – итоговую надежность системы. Как пра-
удовлетворения сегодняшнего спроса. При масштабирова- вило, руководители, принимающие решения в области фи-
нии сети такой избыток дает возможность пользователям и нансирования, не в состоянии оперировать техническими
гостям беспроблемно мигрировать внутри офиса. понятиями. Зато они прекрасно знают и понимают значи-
Всегда необходимо помнить, что и в глобальных комму- мость таких терминов, как «убытки в результате простоя
никациях (это могут быть как соединения между помеще- предприятия», «цейтнот при формировании результатов»,
ниями, так и между зданиями) рекомендуется предусмот- «налоговая и финансово-экономическая отчетность». И в

№2, февраль 2005 7


администрирование
техническом обосновании приобретения надежной техни- Ну и последнее замечание, касаемо физического пост-
ки должны бросаться в глаза не «гигагерцы и гигабайты», роения сетей. Документируйте свои действия, маркируйте
а аргументы, понятные именно этим людям. Например, коммуникации. Даже если вы не владеете профессиональ-
фраза о том, что «скорость формирования товарного отче- ными программами для проектирования и документирова-
та увеличится в 6-10 раз, а скорость формирования склад- ния информационных сетей – программу Microsoft Visio ник-
ских документов повысится в 4 раза» гораздо эффектив- то не отменял. Она представляет собой довольно неплохой
нее, нежели «время реакции дисковой системы при опера- инструмент для инженерного планирования начального
циях чтения-записи улучшается в 5 раз». Всегда помните – уровня. Маркировка кабелей и кабель-каналов – вообще
для руководства важны итоговые результаты, а не техни- обязательное действие. Помимо этого необходимо марки-
ческие подробности. Научитесь формулировать свои мыс- ровать и серверы в стойках. Когда в стойке смонтировано
ли и идеи так, чтобы они были понятны людям, принимаю- несколько серверов от одного производителя, вряд ли уда-
щим решения о финансировании проекта. Тогда вы полу- стся навскидку сказать, какой из них за что отвечает. Кре-
чите большие возможности для реализации задуманного. пите на них таблички с DNS-именем и IP-адресом.
Также немаловажным является приведение расчетов, по-
казывающих экономическую эффективность модерниза- Если что-то уже есть…
ции. Спрогнозировав возможные перемещения рабочих Если вы модернизируете уже существующую информаци-
мест сотрудников, увеличение их численности, появление онную систему, то все советы, приведенные выше, остают-
новых задач, рост рабочих информационных баз, вы смо- ся в силе. Помимо этого, при наличии старых коммуника-
жете заранее просчитать будущие затраты на необходимую ций необходимо проверить их на целостность и качество
модернизацию ресурсов, и сравнив их с возможностью сра- передачи.
зу приобрести необходимую технику, вывести экономичес- Простейший способ – посмотреть статистику передачи
кую выгоду. по сетевым интерфейсам после проведения множествен-
В частности, попытка сэкономить на серверных систе- ных операций передачи/приема данных. Если скорость пе-
мах обычно приводит либо к необходимости новой моди- редачи недостаточна, а в статистике появляются потерян-
фикации уже через полгода, либо вообще к падению опе- ные пакеты – стоит задуматься о смене кабельной систе-
рационной системы, потере рабочих данных и, соответ- мы или отдельных ее частей. Однако такой способ провер-
ственно, незапланированным простоям – от невозможнос- ки является довольно спорным и отражает действитель-
ти работы одного отдела до остановки работы всего пред- ность только при грамотной настройке приемника/передат-
приятия. чика. В противном случае, например, плохо настроенное
Если рассматривать требования к таким системам, то оче- антивирусное ПО, может отрицательно повлиять на упомя-
видна необходимость применения в серверах надежных дис- нутые характеристики, хотя сама кабельная система ока-
ковых систем в случае больших вычислительных нагрузок – жется идеальной. Гораздо лучше применять тестирование
многопроцессорных ресурсов, резервных систем электропи- кабельной системы на физическом уровне при помощи
тания и защиты от перегрузок в электрических сетях. Не стоит приборов, измеряющих такие характеристики, как сигнал/
пользоваться принципом: «система может и на IDE-диске шум, сопротивление изоляции и др. Это дорогостоящее
стоять – там никаких нагрузок нет». Сэкономив 50-100 у.е. оборудование, однако вовсе необязательно его приобре-
сейчас, ваша фирма получит неработоспособную систему тать. Для тестирования в сомнительных случаях можно об-
через год. Причем произойдет это как всегда «в самый не- ратиться к организациям, оказывающим подобные услуги.
подходящий момент». Запомните – не бывает «подходящих В любом случае при сложной кабельной разводке такое
моментов» для выхода из строя информационной системы. исследование обойдется дешевле смены всей кабельной
И именно вы несете за это ответственность. Если при об- системы. Точно так же необходимо подвергнуть тестирова-
суждении расходов вы натыкаетесь на стену непонимания и нию и ресурсы серверов, и при необходимости – рабочих
экономить на критически важных узлах принуждают люди, станций. Недостаточно просто переустановить операцион-
принимающие решения о финансировании, – не забывайте ную систему на сервере. Необходимо убедиться в том, что
принять меры для того, чтобы не оказаться крайним. В дан- нет дефектов в оборудовании – дисковой системы, памяти
ном случае рекомендуется написать на имя руководителя и т. д.
служебную записку примерно следующего содержания:
Информационная среда
Äèðåêòîðó ÎÎÎ «Ðîãà è êîïûòà» Убедившись в исправности физических коммуникаций и
Ïóïêèíó Âàñèëèþ Äîðìèäîíòîâè÷ó
îò ñèñòåìíîãî àäìèíèñòðàòîðà оборудования, следует переходить к следующему этапу –
Ôåäüêèíà Ïåòðà Èâàíîâè÷à внедрению информационной среды. На этом этапе необхо-
Ñëóæåáíàÿ çàïèñêà димо будет установить операционные системы на серверы
и рабочие станции, организовать их взаимодействие, на-
Äîâîæó äî Âàøåãî ñâåäåíèÿ, ÷òî èñïîëüçîâàíèå â ïðèîáðåòà-
åìûõ ñåðâåðàõ æåñòêèõ äèñêîâ òèïà IDE, à òàêæå îòñóòñòâèå строить программное обеспечение под конкретных пользо-
èñòî÷íèêîâ áåñïåðåáîéíîãî ïèòàíèÿ ìîùíîñòüþ íå ìåíåå 1000 вателей. Разумеется, что выбор операционных систем и
VA ìîãóò ïðèâåñòè ê íåïîëàäêàì â ðàáîòå èíôîðìàöèîííîé ñèñ-
òåìû âïëîòü äî ïîëíîãî âûõîäà èç ñòðîÿ è ïîòåðå õðàíèìûõ распределение задач должны происходить еще до того, как
äàííûõ. будет закуплено оборудование. Тут все стандартно – под-
Ïîäïèñü бор соответствующего оборудования происходит исходя из
Îçíàêîìëåí: <ïîäïèñü äèðåêòîðà> поставленных задач.

8
администрирование
Перейдем к принципам настройки серверного программ- вилам, должны отбрасываться. Причем чаще всего реко-
ного обеспечения, вопросам защиты от вторжений, а так- мендуется применять для защиты «режим молчания». Зап-
же настройке рабочих станций для взаимодействия с сер- рещающие правила систем маршрутизации при поступле-
верами и между собой. Акцентируем ваше внимание, что в нии соответствующего пакета отправляют ответ о том, что
статье не приводится инструкций по настройке конкретно- запрошенный ресурс запрещает подключение к нему. При
го программного обеспечения или оборудования, а даются соблюдении режима молчания такой пакет игнорируется,
общие рекомендации, следуя которым вы получите макси- имитируя выключенное или несуществующее устройство.
мально защищенную IT-структуру. Также не указывается Для настройки таких систем необходим специалист, хоро-
никаких предпочтений при выборе операционных систем шо представляющий работу стека протокола IP. Для боль-
для реализации проекта. Автор ни в коей мере не претен- шей надежности рекомендуется использовать аппаратные
дует на непогрешимость указанных методов, а всего лишь маршрутизаторы/межсетевые экраны. Абсолютным лиде-
делится своим опытом реализации подобных проектов. ром в этой области является компания Cisco Systems. Од-
Практика показала, что после сдачи таких сетей у заказчи- нако их продукты отличаются очень высокой стоимостью
ков не возникает необходимости полной реорганизации, а (проверенная надежность не бывает дешевой). В последнее
масштабируемость позволяет легко вводить в эксплуата- время на рынок вышли многочисленные компании, пред-
цию новые сервера, рабочие места и программное обеспе- лагающие недорогую альтернативу подобным продуктам.
чение. Практически все производители сетевого оборудования
Прежде всего необходима логическая структура, кото- имеют в ассортименте решения для построения защитных
рая будет объединять все учетные записи для пользовате- систем эконом-класса (маршрутизаторы со встроенными
лей, компьютеров и серверов в одно целое. Это «домен». пакетными фильтрами, VPN-маршрутизаторы). Наиболее
Обращаем внимание, что понятие «домен» вовсе не под- надежным окажется решение с использованием каскадно-
разумевает обязательное использование продуктов го комплекса защиты. Например, последовательного ис-
Microsoft, как многие ошибочно считают. «Домен» в пере- пользования аппаратного маршрутизатора и шлюзового
воде означает «область», «район». То есть в нашем случае сервера с работающими на нем средствами маршрутиза-
домен – это логическое объединение для централизован- ции и протоколирования.
ного управления. Домен отличается от рабочей группы тем, Следующие шаги также неразрывно связаны с досту-
что данные о всех структурных единицах, в него входящих, пом во внешний мир. Это использование антивирусных
хранятся в единой центральной базе данных, что сильно мониторов и сканеров корпоративного уровня, а также обя-
упрощает администрирование системы в целом. зательное создание внутреннего почтового сервера, отве-
Внутри домена необходимо спланировать разделение чающего за перенаправление всей электронной почты ком-
упомянутых структурных единиц на группы. Это упростит пании. Акцентируем внимание на словосочетании «корпо-
дальнейшее делегирование прав на пользование ресурса- ративный уровень». Помните, что в системе IT-безопасно-
ми. Помните, что основой построения защищенной среды сти компании не должно быть звеньев, хоть каким-то обра-
является принцип «что не разрешено, то запрещено» и ни зом зависящих от решения пользователя. Понятие «корпо-
в коем случае не наоборот! Действительно, по умолчанию ративный антивирусный монитор и сканер» означает, что
при начальном вводе систему в эксплуатацию никто (кро- это программное обеспечение настраивается и устанавли-
ме администратора, разумеется) не должен иметь доступа вается администратором системы, автоматически прове-
никуда. Абсолютно! После этого можно делегировать груп- ряет наличие обновлений, распространяется на всю сеть, а
пам и структурным единицам определенные права. Упомя- пользователь не в состоянии ни отключить, ни удалить про-
нутый и кажущийся очень простым принцип на самом деле дукт со своей рабочей станции. Такой антивирусный про-
подразумевает под собой систему глобальной безопаснос- дукт при грамотной настройке не будет спрашивать пользо-
ти. Просто необходимо научиться корректно его реализо- вателя о необходимости обновить свои базы, не станет уточ-
вывать. нять, что делать с зараженным файлом, не позволит вме-
шаться в свою работу.
Связь с внешним миром При этом корпоративная почтовая система просканиру-
и безопасность ет всю входящую и исходящую корреспонденцию еще до
Построив систему в виде локальной сети и проверив ее того, как пользователь получит возможность принять ее,
работоспособность (взаимодействие клиент-сервер, кли- отбросит зараженные письма, заблокирует подозрительные
ент-клиент, действие запретов и разрешений), приступаем и явно запрещенные вложения, проверит легитимность от-
к организации связи с внешним миром. Проще говоря, под- правителя и отсутствие его в международных черных спис-
ключаемся к сети Интернет и другим филиалам компании. ках. И только после этого доставит письмо пользователю.
Тут действует тот же универсальный принцип, о котором Как правило, на почтовые системы устанавливают антиви-
мы уже писали. Поэтому перед тем, как подключить кабель рус другого производителя, нежели используется в режи-
от внешнего мира к вашей локальной сети, необходимо убе- ме монитора внутри локальной сети. Таким образом дости-
диться в том, что на устройстве маршрутизации запрещен гается страховка от несвоевременного выхода обновлений
проход любого трафика во всех направлениях. Только пос- какого-либо из них. Неопознанное на почтовом сервере
ле этого можно аккуратно добавлять настройки, которые зараженное письмо будет поймано монитором на локаль-
будут частично разрешать прохождение необходимого тра- ной машине пользователя и наоборот. Для еще большей
фика. Любые запросы, не отвечающие разрешающим пра- надежности можно применять третий способ защиты – ска-

№2, февраль 2005 9


администрирование
нирование межсетевого трафика на промежуточном шлю- технологиями. Если к этому присовокупить то, что часто
зе. Однако стоит помнить, что нельзя использовать одно- такие люди занимают одни из ведущих или необходимых
временно несколько таких средств в едином логическом постов в компании и к их словам бездумно прислушивают-
пространстве (например, сервере или рабочей станции). ся руководители, не желая при этом проанализировать си-
Так, одновременная установка двух антивирусных монито- туацию, – процесс может быть крайне затруднен. На прак-
ров разных производителей на один компьютер когда-то тике встречались разные случаи. Например, в одной круп-
породила известную в IT-мире байку про дуэль антивиру- ной строительной фирме бухгалтер со скандалом врыва-
сов. Проверка может быть только последовательной. лась к директору и жаловалась на то, что системный адми-
Не стоит также забывать о контроле активности пользо- нистратор умышленно мешает ей работать. На самом деле
вателей в сети Интернет, ведении статистики посещаемо- администратор после внедрения домена Windows 2000 хо-
сти и отчетов по трафику интернет-ресурсов. Так, перио- тел добиться работы в единой операционной среде на всем
дически просматривая указанную статистику, можно обна- предприятии и заменить технически устаревшую операци-
ружить «нездоровую» активность в определенном направ- онную систему Windows 98 на Windows 2000, тем более что
лении и предотвратить утечку информации или распрост- ресурсы компьютера это позволяли. А бухгалтер заявила,
ранение вредоносных программ. Помните, что «вы не мо- что не будет работать в другой системе. В итоге техничес-
жете управлять тем, что не можете подсчитать». Как пра- кому специалисту было в приказном порядке запрещено
вило, при грамотной настройке дальнейшая работа адми- что-либо менять на компьютере бухгалтера. Помимо этого
нистратора сети заключается в постоянном контроле. Все- претензия заключалась в том, что «не надо мне никаких
го и вся. Осознание того, что полностью контролируешь нортонов, пусть стоит касперский». В другой организации
процесс, приносит уверенность в дальнейшей работе. И бухгалтера постоянно провоцировали сбои и ошибки в ра-
напротив – даже малое непонимание происходящего в ито- боте системы учета, так как не хотели принимать решение
ге приведет к полному падению системы. Контролируйте руководства о переходе на новую информационную систе-
свою систему и спите спокойно. И тогда бытующее мнение му бухгалтерского учета взамен старой, которая уже не
о том, что системные специалисты работают круглосуточ- соответствовала изменениям в законодательстве. Сгово-
но и не спят ночами, канет наконец-то в лету. В таком дер- рившись, они умышленно искажали результаты работы про-
ганом режиме работают те, кто не спланировал работу за- граммы. К счастью руководство оказалось более лояльным
ранее. по отношению к техническим специалистам и, уволив из
бухгалтерии двух человек, издало приказ о «содействии
Проблемы при модернизации сотрудников техническому персоналу для перехода на но-
существующих систем вую систему учета».
Перестроение уже работающей структуры также отвечает Эти случаи далеко не единичны и многим знакомы не
описанным требованиям. Однако при таком развитии со- понаслышке. К сожалению, тут два выхода: либо убедить
бытий появляются некоторые трудности. Во-первых, необ- руководство в необходимости модернизации и создания
ходимо составить подробный план перехода и проанализи- административных приказов и инструкций, либо отказать-
ровать, с какими именно трудностями можно столкнуться ся от проекта. В противном случае можно получить «час-
при реализации каждого этапа. Во-вторых, осуществить тично работающую систему», что не является приемлемым
внедрение в исключительно короткие сроки. Это, пожалуй, в любых случаях.
самое трудновыполнимое условие, однако поверьте, что при
наличии необходимых профессиональных навыков и опы- Подводя итоги
та оно осуществимо. В противном случае стоит задуматься В заключение можно сказать, что компании, решившиеся
о возможности привлечения дополнительных специалистов на реализацию проекта системной интеграции своими си-
на время проекта. Чтобы не быть голословными, скажем, лами, должны быть уверены в том, что опыт сотрудников
что полная реорганизация информационной сети компании собственного IT-отдела позволит осуществить внедрение
(замена всех кабельных систем, располагающихся в 2 зда- от начала и до конца. То есть не прекратить его, а именно
ниях, со 100 рабочими станциями и 3 серверами, довольно завершить. В противном случае может оказаться, что из-
большое количество сетевых приложений, включая уста- за отсутствия навыков в некоторых областях весь проект
ревшие DOS-программы) заняла у нас 3.5 дня. Выпавшие может претерпеть неудачу. Как следствие придется прибе-
на эти дни государственные праздники оказались как гать к помощи компании-системного интегратора, которая,
нельзя кстати, и уже в начале второй половины рабочего скорее всего, заново будет просчитывать весь процесс и
дня сотрудники приступили к своим обязанностям. В пос- потребует сменить не соответствующее требованиям обо-
ледующие 2 дня специалисты выслушивали пожелания со- рудование. Что, разумеется, приведет к дополнительным
трудников и исправляли незначительные неточности. (и часто немалым) расходам. Поэтому именно на руково-
Хотелось бы сказать еще об одной довольно серьезной дителя IT-структуры ложится основная ответственность по
проблеме, часто препятствующей успешной реализации выбору пути системной интеграции. И глобальное понима-
проекта. Это человеческий фактор. А точнее – нежелание ние этим человеком всей структуры и бизнес-процессов
определенных индивидуумов оказывать содействие специ- предприятия, а также профессионального потенциала сво-
алистам, а иногда и саботаж с их стороны. За этим стоят их подчиненных поможет в итоге принять правильное ре-
разные причины, одной из которых может быть нежелание шение, сделав процесс максимально эффективным, раци-
обучаться работе с новыми программными продуктами и ональным, а значит, и экономически выгодным.

10
bugtraq

Отказ в обслуживании при обработке Обход встроенных механизмов защиты


BGP-пакетов в Cisco IOS от переполнения буфера в куче
Программа: Cisco IOS все версии. и технологии DEP в Windows XP SP2
Опасность: Высокая. Программа: Windows XP.
Описание: Уязвимость существует во всех версиях Cisco OIS Опасность: Высокая.
при использовании Border Gateway Protocol (BGP) и устрой- Описание: Positive Technologies сообщает о возможности
ствах с включенным bgp log-neighbor-changes. Удаленный обхода встроенных механизмов защиты от переполнения
пользователь может послать устройству специально сфор- кучи и выполнения кода в области данных в Windows XP
мированный BGP-пакет, что вызовет перезагрузку систе- Service Pack 2.
мы. Большое количество таких пакетов приведет к отказу в Несколько уязвимостей обнаружено в механизме про-
обслуживании. верки маркера («cookie»), введенного для определения це-
URL производителя: http://www.cisco.com. лостности заголовка блока памяти.
Решение: Установите обновления с сайта производителя Проверочный маркер проверяется только тогда, когда
для соответствующей версии IOS. выделяется свободный блок, однако такая проверка не
выполняется при его освобождении. В результате возмож-
Отказ в обслуживании при обработке но изменить размер блока и поместить его в произвольный
IPv6-пакетов в Cisco IOS freelist.
Программа: Cisco IOS с включенным IPv6 (все версии). При работе с lookaside-списками не реализовано ника-
Опасность: Высокая. ких проверок целостности заголовка – нет даже проверки
Описание: Уязвимость обнаружена при обработке IPv6 во достоверности значения проверочного маркера. В резуль-
всех версиях Cisco IOS. Злонамеренный пользователь мо- тате этого, теоретически, появляется возможность переза-
жет с помощью специально сформированного IPv6-пакета писать до 1016 байт в любой области памяти.
вызвать перезагрузку системы. Большое количество таких Подробнее об уязвимости и практических примерах ее
пакетов приведет к отказу в обслуживании устройства. эксплуатации можно прочитать тут: http://www.securitylab.ru/
URL производителя: http://www.cisco.com. 52238.html.
Решение: Установите обновления с сайта производителя URL производителя: www.microsoft.com.
для соответствующей версии IOS или запретите использо- Решение: Способов устранения обнаруженной уязвимос-
вание IPv6-протокола. ти не существует в настоящее время. В качестве времен-
ного решения, компания Positive Technologies выпустила
Отказ в обслуживании при обработке бесплатную утилиту, которая для определенных приложе-
MPLS-пакетов в Cisco IOS ний устанавливает глобальный флаг, который будет зап-
Программа: Cisco IOS 12.1T, 12.2, 12.2T, 12.3 и 12.3T. рещать использование ассоциативных списков. Скачать
Опасность: Высокая. программу можно отсюда: http://www.ptsecurity.ru/
Описание: Уязвимость существует при обработке Multi ptmshorp.asp.
Protocol Label Switching (MPLS)-пакетов во всех версиях
Cisco IOS, которые поддерживают MPLS, даже если MPLS Множественные уязвимости
запрещено на интерфейсе. Удаленный пользователь может в PostgreSQL
послать специально сформированный пакет и вызвать пе- Программа: PostgreSQL 7.x, 8.x.
резагрузку системы. Большое количество таких пакетов Опасность: Высокая.
приведет к отказу в обслуживании. Описание: Ошибка в опции LOAD позволяет непривилеги-
URL производителя: http://www.cisco.com. рованному пользователю загрузить произвольные библио-
Решение: Установите обновления с сайта производителя теки. Удачная эксплуатация этой уязвимости может позво-
для соответствующей версии IOS. лить выполнить произвольный код с повышенными приви-
легиями. Выполнение такого кода возможно лишь на
Отказ в обслуживании в Squid Windows и UNIX ELF-системах (Linux).
при обработке WCCP-сообщений Злоумышленник может обойти ограничения на выпол-
Программа: Squid 2.5.STABLE7 и более ранние версии. нение функций и выполнить произвольные функции на си-
Опасность: Высокая. стеме.
Описание: Уязвимость существует при обработке WCCP- Неизвестная уязвимость в contrib/intagg.
сообщений. Удаленный пользователь может создать спе- Переполнение буфера при выполнении plpgsql с боль-
циально сформированное длинное WCCP-сообщение и выз- шим количеством параметров.
вать переполнение буфера в функции recvfrom(), что при- URL производителя: http://postgresql.org
ведет к аварийному завершению работы прокси-сервера. Решение: Установите обновление: http://www.master.
URL производителя: http://www.squid-cache.org. postgresql.org/download/mirrors-ftp.
Решение: Установите обновление от производителя: http://
w w w . s q u i d - c a c h e . o r g / Ve r s i o n s / v 2 / 2 . 5 / b u g s / s q u i d - Составил Александр Антипов
2.5.STABLE7-wccp_buffer_overflow.patch.

№2, февраль 2005 11


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

КТО КУПИЛ COREL LINUX?


ОБЗОР ВОЗМОЖНОСТЕЙ НАСТОЛЬНОГО ДИСТРИБУТИВА XANDROS
ВАЛЕНТИН СИНИЦЫН
Историческая справка нальную плату. Иными словами, с точки зрения домашнего
Компания Xandros была основана в мае 2001 года в Кана- пользователя, Xandros OCE оказался ничем не хуже Fedora
де с целью создания и продвижения на рынок недорогой, Core или (не побоюсь этого высказывания) оригинального
дружественной пользователю настольной операционной си- Debian, поскольку вносить изменения в код системы или за-
стемы на базе Linux, которая составила бы конкуренцию рабатывать с ее помощью деньги многие из них и не помыш-
Microsoft Windows – «Complete Linux Desktop Solution». В ляли. Удачно составленная лицензия на продукт не могла не
августе того же года компания приобрела Corel Linux OS, привлечь внимание дистрибьютеров, в частности Линукс-
некогда популярную и весьма удачную систему, оставшую- Центра (www.linuxcenter.ru), благодаря усилиям которых при-
ся в результате известных событий в истории Corel «не у обрести Xandros OCE в России стало не сложнее, чем обыч-
дел». Именно она легла в основу выпущенного некоторое ный свободный дистрибутив. Впрочем, граждане с тонким
время спустя Xandros Desktop 1.0. Будучи наследником Corel кошельком и толстым каналом всегда могут загрузить ISO-
Linux, Xandros Desktop OS ведет свою родословную от про- образ системы через сети BitTorrent.
екта Debian, разработки которого и используются по сей В момент написания данной статьи последней версией
день для поддержания кодовой базы. Таким образом, Xandros является третья, отличающаяся от своих предше-
Xandros, по сути, является коммерческой разновидностью ственниц встроенной функцией записи DVD и персональным
Debian, подобной Libranet GNU/Linux и Linspire (с последней брандмауэром. Однако в связи с ее недоступностью для боль-
системой Xandros некоторое время «жил под одной кры- шей части читателей мы решили сфокусировать свое вни-
шей» и развивался параллельно, в память о чем сохранил- мание на второй версии дистрибутива, распространяющей-
ся имущественный иск, предъявленный Linspire к Xandros ся в форме редакции OCE. О планах выпуска Open Circualtion
около года назад), а значит, он совместим с пакетами DEB, Edition для Xandros 3 компания ничего не сообщает, однако
репозитариями apt и прочими «прелестями цивилизации». можно предположить, что это все же случится, ведь свора-
В настоящий момент модельный ряд Xandros насчиты- чивать данную инициативу пока никто не собирается.
вает несколько продуктов. Это Xandros Desktop 3 Standard/
Deluxe Edition, ориентированный на домашенго пользова- Установка
теля, корпоративный рабочий стол Xandros Business Desktop Программа-инсталлятор системы является предметом гор-
OS Version 2.5 Business Edition и его разновидность Xandros дости компании Xandros, и не без оснований. Как утверж-
Desktop OS PowerTerm Edition, а также серверный дистри- дает реклама, дистрибутив можно установить в пять щелч-
бутив – Xandros Desktop Management Server. С возможнос- ков мышью. Это вполне соответствует действительности:
тями каждого из них можно ознакомиться по адресу: http:// процедура установки проходит в пять этапов. После стан-
www.xandros.com/products/products.html. дартного приветствия и ознакомления с лицензией пользо-
В том что касается бесплатных и оценочных версий, кор- вателю предлагается сделать выбор между автоматичес-
порация Xandros придерживается несколько запутанной стра- ким (Express Install) и ручным (Custom Install) режимом ус-
тегии. Долгое время они попросту отсутствовали. Однако тановки. Предпочитающие делать все «дешево и быстро»
аккурат 1 апреля 2004 года компания переменила свое мне- могут выбрать первый вариант, создать пару учетных за-
ние, неожиданно предоставив для свободной загрузки са- писей и приступить непосредственно к копированию фай-
мый дорогой (на тот момент) из своих продуктов – Xandros лов, как это обычно и происходит в других настольных дис-
Business Desktop OS Version 2.5. Было это розыгрышем или трибутивах. Однако Xandros предоставляет более богатые
нет, но спустя несколько дней Xandros, не объяснив мотивов возможности для настройки в ручном режиме. Во-первых,
своих действий, прекратила распространение ISO-образа. это менеджер разделов, вещь сама по себе не удивительная
Однако уже в середине лета компания анонсировала еще и распространенная повсеместно: от Red Hat до Slackware.
одну community-инициативу, получившую название Xandros Однако его разновидность, входящая в состав Xandros, об-
Desktop OS Version 2 Open Circulation Edition – OCE (http:// ладает рядом особенностей. Это в первую очередь встро-
www.xandros.com/products/home/desktopoc/dsk_oc_intro.html). енный навигатор по файловой системе в стиле Konqueror,
Суть ее сводилась к следующему. Из состава дистрибутива поддерживающий ext2, ext3, ReiserFS и даже NTFS. Если в
удалили коммерческие приложения, в первую очередь – эму- других случаях вам приходилось «играть в русскую рулет-
лятор CrossOver Office и офисный пакет StarOffice 7, ограни- ку», вспоминая, какой из разделов жесткого диска подле-
чили скорость записи компакт-дисков во встроенном фай- жит сносу, а какой – содержит бесценные данные, то сей-
ловом менеджере (об этом далее), лишили поддержки про- час достаточно просто нажать на кнопку и посмотреть его
фессиональных консультантов и... отпустили в свободное содержимое. Как правило, структура каталогов и имена на-
плавание. Систему было разрешено использовать в неком- ходящихся в них файлов говорят простому пользователю
мерческих целях и даже распространять, беря за это номи- (да, впрочем, и не очень простому пользователю тоже) куда

12
администрирование
больше, чем аббревиатуры типа «hda3» или словосочета- сия LILO наотрез отказалась дружить с моим ноутбуком,
ния вроде «третий основной раздел». Для уже созданных намертво зависая при загрузке. Пожалуй, этой проблемы
разделов можно назначить точку монтирования, которая вы- можно было бы избежать, если знать о ней заранее: я бы
бирается из выпадающего списка (в соответствии с нау- просто попросил программу не устанавливать свой загруз-
кой, содержащаяся на разделе файловая система – ext2, чик в MBR или вообще никуда – Xandros предоставляет и
ext3 или ReiserFS – может быть смонтирована в /, /usr/local, такую возможность.
/var или /opt). Если вы пожелаете установить Xandros на После всех описанных выше манипуляций программа
непустой раздел, инсталлятор предложит вам сохранить откроет окно «Summary». Проверьте и, если вас устраива-
имеющиеся на нем каталоги /root и /home. Естественно, это ют все введенные параметры, нажмите кнопку Finish, что-
произойдет лишь в том случае, если раздел ранее принад- бы начать копирование файлов. Инсталлятор будет держать
лежал какой-либо UNIX-системе. Среди элементов управ- вас в курсе происходящего, постоянно сообщая о своих те-
ления в окне менеджера разделов присутствует и кнопка кущих занятиях («устанавливаю базовую систему», «на-
«Add», которая, по логике вещей, должна создавать новые страиваю Samba» ) в строке статуса.
партиции, однако по не очень понятным мне причинам она
перманентно отключена. Первый запуск
Другая уникальная в разрезе рассмотренных ранее на- После того как инсталлятор закончит работу, вам будет
стольных дистрибутивов возможность Xandros – это функ- предложено перезагрузить компьютер (в вопросах подоб-
ция выбора пакетов. Начинающий администратор может ус- ного рода Xandros не скупится – соответствующие пригла-
тановить одну из заранее определенных конфигураций: шения выводятся на экран шрифтом такого размера, что
«Minimal Desktop» (минимальный набор, всего 655 Мб), разрешения 1024x768 едва хватает на 3-4 строчки текста).
«Standard Desktop» (стандартный набор – 980 Мб), Выбрав нужный пункт в загрузочном меню и подождав не-
«Complete Desktop» (полный набор, 1156 Мб) и «Custom которое время (как и все настольные дистрибутивы, Xandros
Desktop» (установка по выбору пользователя). Все доступ- тяжеловат на подъем), вы увидите менеджер входа в сис-
ные пакеты сгруппированы по категориям, а их выбор осу- тему, выглядящий на фоне своих аналогов из Linspire или
ществляется путем выставления «галочки» возле имени. Lycoris Desktop/LX несколько аскетично: выпадающее меню
Отрадно, что в этом списке присутствуют и средства раз- с именем учетной записи, поле для ввода пароля и пара
работки. Как правило, производители настольных дистри- кнопок. Как видите, ничего лишнего. После авторизации
бутивов по ряду причин предпочитают не включать столь появляется стандартный стартовый экран KDE, а затем –
мощный инструмент в базовый комплект поставки. мастер первого запуска («First Run Wizard»). Выбрав тип
Разобравшись с программным обеспечением, можно пе- мыши («левая» или «правая»), пользователь попадает на
реходить к вводу параметров сети (Static IP/DHCP, шлюз, поистине интересную вкладку: «Regional Settings» («Регио-
DNS). Здесь все вполне стандартно. Далее инсталлятор нальные настройки»). Здесь можно указать системную ло-
предложит ввести пароль администратора (Administrator), каль, язык рабочего стола, кодировку и раскладку клавиа-
он же – root. При этом в нижней части окна будут располо- туры для текущего пользователя. Для каждого из этих па-
жены две «галочки», одна из которых – «Enforce strong раметров (кроме, к сожалению, языка рабочего стола) дос-
passwords» («Требовать сильные пароли») – сейчас пред- тупны «русифицированные» варианты ответа. Лично я ос-
ставляет для нас особый интерес. Если она находится во тановился на следующем наборе: локаль – ru_RU, кодиров-
включенном состоянии, то отделаться паролем «123456», ка – KOI8-R, раскладка – Russian. После этого Xandros сра-
который, не пикнув, проглатывали Linare, Linspire и Lycoris зу же заговорил по-русски, весьма неплохо, хотя и с «ак-
Desktop/LX, уже не удастся. Второй флажок – «Make user центом». Шрифты, используемые системой для отображе-
home folders private» («Сделать домашние каталоги пользо- ния кириллицы, выглядят ничуть не хуже латинских, благо
вателей личными») – просто запрещает автоматический до- в стандартную поставку Xandros (в том числе, Xandros OCE)
ступ к домашним каталогам пользователей по сети. Завер- входит некоторое число коммерческих фонтов от Bitstream.
шив эти манипуляции, можно приступать к созданию не- Правда, моноширинный кириллический шрифт, использу-
привилегированных учетных записей. Рекомендуется сде- емый в эмуляторе терминала, почему-то странно двоится,
лать хотя бы одну из них, и использовать ее для повседнев- однако этот огрех можно считать мелочью на фоне того,
ных надобностей. При включенной опции «Enforce strong что творится с поддержкой русского языка в иных конкури-
passwords» к паролям простых пользователей предъявля- рующих продуктах (любознательного читателя мы отсыла-
ются те же требования, что и к паролю администратора. ем за подробностями к более ранним статьям данного цик-
Однако пустой пароль инсталлятор вполне устраивает. ла [1, 2, 3]). Для нормальной работы с системой следует до-
В вопросах установки дискового загрузчика Xandros так- установить язык US. English. Это можно сделать с помощью
же проявил неординарную проницательность и учтивость. контекстного меню стандартного переключателя раскладок
Инсталлятор корректно определил уже установленные на KDE, «обитающего» в системном лотке. Несмотря на несом-
компьютере операционные системы: Mandrakelinux и ненные достижения в области «лингвистики», Xandros был
Windows 2000 и добавил их в свое меню, сохранив, таким и остается иностранцем, поэтому пользоваться родным язы-
образом, время, которое я традиционно тратил на восста- ком в нем приходится с некоторой долей осторожности. Не-
новление содержимого MBR после деятельности менее которые подводные камни мы обсудим чуть позже.
аккуратных «собратьев». Правда, «покопаться с паяльни- Вслед за региональными настройками вам будет пред-
ком» все же пришлось: включенная в состав Xandros вер- ложено выбрать часовой пояс и установить принтеры (под-

№2, февраль 2005 13


администрирование
держиваются как локальные, так и сетевые, например, уп- Xandros File Manager
равляемые компьютерами на базе Windows или подключен- Файловый менеджер является еще одним козырем в колоде
ные напрямую через HP JetDirect). После ненавязчивой Xandros. Так или иначе о нем упоминают все рекламные
просьбы о регистрации Мастер первого запуска попроща- проспекты, а встроенная возможность записи CD (в версии
ется с вами, сказав напоследок, где его можно будет най- 3.0 – еще и DVD) выставляется как едва ли не главное пре-
ти, если он вдруг понадобится. Принимая во внимание час- имущество этой ОС над конкурентами. В общем, данный
тые мучения пользователей, вспоминающих, «где же было продукт вполне заслуживает пристального рассмотрения.
такое вот окошко», эта информация кажется весьма и весь-
ма нелишней.
Закрыв мастер, можно начинать знакомиться с рабочим
окружением (рис. 1). По умолчанию на каждого непривиле-
гированного пользователя автоматически заводится два
виртуальных рабочих стола: «синий» и «зеленый». В про-
цессе повседневной работы их число легко можно увели-
чить, щелкнув правой кнопкой мыши по апплету «Virtual
Desktop» в панели и выбрав пункт меню «Configure Virtual
Desktops». Простой эксперимент показывает, что столы с
номерами три и четыре имеют соответственно желтый и
фиолетовый цвета, а в дальнейшем эта закономерность
портится, и все становится одинаково темно-синим.

Ðèñóíîê 2. Îêíî Xandros File Manager ñ ìåíåäæåðîì ïðîåê-


òîâ. Ïóíêò «Removable Disc» â ñàìîì íèçó äåðåâà ñîîòâåòñòâó-
åò ïîäêëþ÷åííîìó USB-íîñèòåëþ
В основе Xandros File Manager (XFM) лежит Konqueror,
что весьма логично – это обеспечивает высокую степень
интеграции с KDE. В левой части окна XFM находится дере-
во My Linux (рис. 2), того самого аналога «Моего компьюте-
ра», который почему-то забыли поместить на рабочий стол.
Первой среди его ветвей является My Home (домашний ка-
талог), за нею следуют принтеры, сетевые ресурсы Microsoft
(компьютеры с Xandros добавляются сюда автоматически) и
NFS, разделы Windows, которые имеют привычные имена:
C,D,..., а также менеджер проектов записи CD (CD Writer) и
подключенные съемные носители. Легко заметить, что дос-
Ðèñóíîê 1. Ðàáî÷èé ñòîë íåïðèâèëåãèðîâàííîãî ïîëüçîâàòåëÿ тупа к корневой файловой системе и «посторонним» разде-
Xandros лам Linux дерево не предоставляет, однако для этого можно
В свою очередь рабочий стол администратора имеет воспользоваться адресной строкой. Введя в ней что-нибудь
красный цвет, так что разобраться, какими полномочиями вроде «/», вы увидите соответствующее запросу дерево ка-
вы обладаете в системе, не составляет труда – достаточно талогов, а в My Linux появится новый, скрытый доселе пункт:
беглого взгляда на экран. Кнопка «Пуск» в Xandros назы- «All File Systems». Видимо, разработчики не без оснований
вается «Launch», рядом с ней располагается панель быст- полагают, что рядовому пользователю шастать за предела-
рого запуска, на которой находятся пиктограммы эмулято- ми своего домашнего каталога не стоит, вот и решили пре-
ра терминала (только для root), веб-браузера, файлового достеречься от излишне любопытных. Кстати, если вы все
менеджера, встроенной справки и очистки рабочего стола. же решите полазить по дереву каталогов в одиночку, без
Крайняя правая кнопка возле системного лотка (tray) слу- помощи KDE, имейте в виду, что все «чужие» файловые си-
жит для смены пользователя («Switch user»). При ее нажа- стемы (в том числе разделы Windows и съемные носители:
тии открывается диалог, предлагающий заблокировать те- CD-ROM, USB Flash и т. д.) Xandros подключает не в /mnt,
кущую сессию и запустить X-сервер на новой консоли. Пе- как можно было бы того ожидать, а в /disks.
реключение между ними осуществляется как стандартным Как уже вскользь упоминалось выше, XFM обладает
способом (<Ctrl>+<Alt>+<Fn>, где n = 7, 8, 9), так и при по- собственными функциями для записи CD, причем, на мой
мощи все того же диалогового окна. Однако первое, что взгляд, реализует их удачнее, чем Microsoft Windows XP. В
бросается в глаза при обзоре рабочего стола, – это отсут- основе этой возможности лежит понятие проекта – т.е. на-
ствие пиктограммы «Мой компьютер», столь привычной бора файлов, предназначенных для записи на CD. Суще-
пользователям Windows. Как мы увидим ниже, сама кон- ствующие проекты хранятся в «папке» CD Writer в My Linux.
цепция «My Computer» в Xandros живет и здравствует, а Там же находятся инструменты, позволяющие создать но-
почему разработчики решили не помещать средство дос- вый проект и начать запись.
тупа к ней в привычное место – остается только догады- Чтобы добавить к проекту файл(ы) или целые катало-
ваться. ги, можно воспользоваться пунктом контекстного меню «Add

14
администрирование
to CD Prject», ссылкой «Add all to CD Project...» в окне с со- Попробуем подвести итог вышесказанному. Xandros,
держимым каталога или простым перетаскиванием (drag- несомненно, один из самых мощных игроков на рынке на-
n-drop). Опыт работы показывает, что для файлов или про- стольного Linux, а неплохая поддержка русского языка и
ектов с русскими именами применим только последний наличие бесплатной версии делает его привлекательным
метод. Очевидно, что подобным образом можно добавлять и для отечественных пользователей. Неопределенность
файлы, находящиеся в различных каталогах или даже на относительно будущего Open Circualtion Edition несколько
различных носителях. Сведения о текущем состоянии про- настораживает, однако если вы твердо решили установить
екта можно получить, щелкнув по его имени в ветви «CD Linux на своем рабочем столе, я бы посоветовал вам иметь
Writer» (рис. 2). В нижней части появившегося окна распо- Xandros в виду. При своей доступности и легкости внедре-
ложена линейка, хорошо знакомая пользователям Ahead ния он может составить достойную конкуренцию распрост-
Nero и отражающая текущий процент заполнения диска. раненным некоммерческим дистрибутивам Linux.
XFM умеет работать с rewritable-носителями (т.е. очищать В заключение цикла статей о настольном Linux я хочу
их) и может создавать аудио-CD. К сожалению, разработ- привести небольшую сводную таблицу рассмотренных нами
чики не предусмотрели поддержку мультисессионных дис- дистрибутивов, чтобы вам было легче сравнивать их меж-
ков, т.е. «записать» на диск получится, а вот «дописать» – ду собой. Предварительно необходимо сделать несколько
уже нет. замечаний. В графе «Стоимость» указан диапазон цен для
В заключение отметим, что в бесплатном Xandros OCE различных моделей продуктовой линейки. Наличие средств
максимальная скорость записи в XFM ограничена 4x (600 разработки и запуска Windows-приложений определялось
Кб/сек). по принципу: «хотя бы в одной редакции продукта в стан-
дартной комплектации». Это означает, что доступность со-
Впечатления от работы ответствующих пакетов в сетях поддержки (например, CNR
В стандартную поставку Xandros входит весьма неплохой Warehouse) в расчет не принималась. Качество поддержки
комплект программ, способный удовлетворить все нужды русского языка оценивалось по пятибалльной шкале, где 1
среднестатистического офисного служащего. Немного соответствует некоему абстрактному дистрибутиву, в прин-
удивляет отстуствие полноценного графического редакто- ципе не способному отображать ничего, кроме латиницы, а
ра, например, GIMP, однако для простых рисунков неплохо 5 – полностью русифицированной системе (ввод и вывод
подойдет и KPaint. В качестве браузера по умолчанию ис- кириллицы на экран и на печать, переведенные системные
пользуется Opera 7.5 (в версии OCE – adware), ее же пред- сообщения, интерфейс программ и т. д.).
полагается применять для работы с электронной почтой.
Ни Mozilla, ни Firefox, ни тем более Evolution в состав
Xandros, как ни странно, не входят. Вообще у разработчи-
ков наблюдается странная неприязнь к приложениям на
базе GTK. Они практически отсутствуют – за исключени-
ем, пожалуй, MP3-проигрывателя XMMS, который искусно
замаскирован под общий стиль оформления (Plastik) при
помощи соответствующей «шкурки». Архитектурно такой
подход оправдан – рабочий стол получается более интег-
рированным, однако, как ловко подметил кто-то из экспер-
тов: «И в мире GTK, и в мире Qt есть приложения, не имею-
щие аналогов». Вряд ли ориентированность на другую ин- Пока верстался номер, 14 февраля в Сети появились све-
терфейсную библиотеку стала причиной нелюбви к GIMP – дения о том, что компания Xandros выпустила в свет третью
вероятнее всего, он просто не влез на диск. Для исправле- версию Open Circulation Edition, восстановив таким образом
ния сложившейся ситуации можно использовать Xandros соответствие между бесплатной и платной версиями. В со-
Networks (http://www.xandros.com/products/home/xn/ став продукта вошли веб-браузер Mozilla Firefox, клиент элек-
xn_intro.html) – продуманную систему для установки и об- тронной почты Mozilla Thunderbird и интернет-телефон Skype.
новления пакетов, бесплатно доступную всем зарегистри- Как и его предшественник, Xandros Desktop 3 Open Circulation
рованным пользователям. Edition будет доступен для свободной загрузки через
Xandros Networks может работать как с собственным BitTorrent. Вероятно, к выходу этого номера из печати, дист-
программным репозитарием, так и с банком программ рибутив можно будет приобрести и в российских интернет-
Debian, компакт-дисками и любыми другими хранилищами, магазинах.
совместимыми с apt. Если автоматическое разрешение за-
висимостей для вас не играет принципиальной роли, с по- Литература:
мощью Xandros Networks можно установить или удалить 1. Синицын В. Заметки о Linare. – журнал «Системный
любой пакет в формате DEB и RPM. Помимо свежего ПО администратор», №11, ноябрь 2004 г.
через сеть Xandros Networks распространяются новости, 2. Синицын В. Linspire одним глазком. – журнал «Систем-
уведомления и патчи. Таким образом, эта программа пред- ный администратор», №12, декабрь 2004 г.
ставляет собой мощный инструмент для сопровождения и 3. Синицын В. Linux из Редмонда: обзор Lycoris Desktop/
управления системой, но, к сожалению, ее детальное рас- LX. – журнал «Системный администратор», №1, январь
смотрение выходит за рамки данной статьи. 2005 г.

№2, февраль 2005 15


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

СОЗДАНИЕ РЕЛИЗА FreeBSD

АНДРЕЙ ЕЛСУКОВ
В этой статье я хочу обобщить свой опыт по сборке релиза не существует, то следующие компоненты для вас не важ-
операционной системы FreeBSD. Создание релиза – не та- ны, если же нет, то идём по пунктам.
кая уж сложная задача, но достаточно длительная и при
некоторых обстоятельствах может продолжаться дольше, CVS-репозитарий
чем ей необходимо. Да и к тому же описание этого процес- Эта «свалка файлов» в архиве на данный момент у меня
са на русском языке мне найти не удалось. Надеюсь, что занимает порядка 500 Мб. Чтобы получить репозитарий –
статья поможет желающим собрать свой релиз и обойти те проще всего воспользоваться CVSup. У меня по крону раз
проблемы, с которыми столкнулся когда-то я. в сутки запускается следующая команда для обновления
репозитария:
Для чего это нужно?
Я вижу несколько причин, для чего может понадобиться со- # cvsup –g –L 2 /mnt/cvs/cvs-supfile
здать релиз ОС FreeBSD в «домашних» условиях:
! не всегда есть время, средства, возможность покупать где конфигурационный файл CVSup выглядит так:
свежий релиз системы, чтобы иметь его на CD для бо-
лее быстрой установки «свежей» системы; *default host=cvsup2.FreeBSD.org
*default base=/var/db
! хочется иметь под рукой загрузочный инсталляционный *default prefix=/mnt/cvs/ncvs
диск системы со специфическими настройками: устано- *default release=cvs
*default delete use-rel-suffix
вочный диск STABLE-ветки; диск с обновленными драй- *default compress
верами, например для RAID-контроллеров; с определен-
src-all
ным набором скомпилированных пакетов; с архивами ports-all
исходных файлов некоторых программ для компиляции doc-all
cvsroot-all
из «портов»;
! хочется всё знать и уметь. Лучше всего, если вы достанете архив репозитария, пусть
даже старый у своего знакомого или ещё где-то – сэконо-
Кто-то, возможно, предложит свои причины, для меня мите кучу времени и трафика. Поддержание репозитария
достаточно и этих. в «свежем» состоянии уже не так накладно, так что, сде-
лав один раз, использую и сейчас.
Что нам необходимо для начала?
Как это ни банально, нужна машина под управлением ОС Архивы исходных файлов для сборки портов
FreeBSD. Причём желательно, чтобы версия системы была Не пугайтесь, дистрибутивы для всех портов нам не понадо-
из той же ветки, что и версия будущего релиза (почему «же- бятся. Но и перечислять каждый порт довольно утомитель-
лательно» – расскажу позднее). Если ваша машина под- ное занятие, да и от релиза к релизу этот список может раз-
ключена к Интернету и проблемы с ценой трафика для вас личаться, поэтому я немного обобщу:

16
администрирование
! для сборки проекта документации понадобятся исход- которых может фатально сказаться на дальнейшей сборке
ные файлы для портов, список которых можно посмот- релиза, например Perl. Так что, если не хотите терять вре-
реть в файле src/release/Makefile.inc.docports; мя, лучше на первый раз закомментировать все опции в
! для создания ISO-образов дисков нужен порт ports/sys make.conf или переименовать этот файл. Возможно, наобо-
utils/cdrtools; рот, вы хотите использовать какие-то специфические оп-
! для создания полноценного miniinst-диска нужны исход- ции, например дополнительную оптимизацию, – дело ваше.
ные файлы Perl и X.org, либо XFree (в зависимости от
версии системы). Переменные окружения
Часть переменных окружения описана в мануале release(7).
В общем-то, вот и всё. Недостающие компоненты мож- Часть можно найти в make-скриптах, используемых при
но будет скачать во время сборки (если есть доступ к Инте- сборке (в папке src/release). Хочу обратить внимание на не-
ренету, то они скачаются автоматически). которые из них:
! DOC_LANG – в ней можно перечислить через пробел
Как это происходит? языки, для которых вы хотите собрать документацию,
Весь процесс сборки я условно разделил на несколько эта- например, DOC_LANG=”en_US.ISO8859-1 ru_RU.KOI8-
пов. Отчасти моя классификация перекрывает ту, что опи- R”. Если вы не укажете языки, то будут собираться все
сана в мануале release(7). Итак, по порядку. возможные, а это довольно долго.
! NOPORTREADMES – при включении в дистрибутив де-
Подготовка к сборке рева портов не будут генерироваться README.html с
Кроме вышеперечисленного я отнёс сюда следующие дей- описанием портов, что существенно ускорит процесс
ствия: сборки релиза.
! получение исходных файлов системы для будущего ре- ! RELEASENOUPDATE – если при сборке у вас возникнет
лиза; ошибка, эта переменная совместно с целью make
! выбор раздела, на котором достаточно свободного ме- rerelease освободит вас от повторного обновления ис-
ста. ходных файлов системы из CVS-репозитария.
! BUILDNAME – имя релиза. Если не зададите, то получи-
К слову сказать, для сборки релиза может понадобить- те в результате что-то подобное FreeBSD-4.11-20050131-
ся от двух до четырёх с небольшим гигабайт свободного STABLE. Ещё рекомендую задавать имя в стандартном
места. виде, как это делается в оригинальных дистрибутивах,
например 5.3-STABLE. Не нужно называть релиз своим
Сборка мира именем, если не хотите в дальнейшем иметь пробле-
Собственно, сборка мира точно такая же, как и при обнов- мы, например, при установке или обновлении портов.
лении системы, подробности – в handbook. ! MAKE_ISOS – если задать, то при завершении всех эта-
пов сборки автоматически будут созданы ISO-образы
Создание chroot-окружения дисков дистрибутива. Советую не спешить с указанием
Весь процесс сборки релиза, сразу после компиляции мира, этой переменной, создать образы никогда не поздно.
происходит в chroot-окружении. Сначала туда инсталлиру- ! hostname – это не переменная окружения, но я отнёс её
ется собранный мир, затем там происходит дальнейшая сюда. Когда вы соберёте релиз, при его установке, в
компиляция системных библиотек, ядер, портов, проекта выводе команды uname, будет фигурировать имя хос-
документации и т. п. та, на котором происходила сборка. Из эстетических
соображений на время сборки можно сменить имя хос-
Создание дистрибутива та командой hostname.
Это заключительная стадия, включает в себя компиляцию
указанных ядер, создание структуры каталогов дистрибути- «distfiles» для портов
ва, размещение архивов бинарных файлов и установочных Как я уже говорил, для сборки релиза понадобятся дистри-
скриптов, создание каталога для инсталляции с FTP, созда- бутивы некоторых портов. Если у вас уже есть скачанные
ние ISO-образов дисков. дистрибутивы, вы можете указать скриптам их местополо-
жение, и они не будут скачиваться снова. Для этого исполь-
На что следует обратить внимание? зуется переменная окружения RELEASEDISTFILES. Если вы
Рекомендую прочитать Makefile в каталоге src/release. Из него пользуетесь системой портов и в вашем дереве есть ката-
можно почерпнуть довольно много полезной информации. лог ports/distfiles, то переменную можно не определять, этот
Так же обязательно прочитать мануал release(7) и желательно каталог будет скопирован в chroot-окружение (наверное,
просмотреть все файлы, на которые он ссылается. стоит задуматься о том, сколько места он занимает).

make.conf Когда что-то пошло не так


При сборке мира используются установки из /etc/make.conf Если с машины, где происходит сборка релиза, нет прямо-
текущей системы. Рекомендую просмотреть их и подумать – го доступа к Интернету, то есть большая вероятность того,
нужны ли они вам. К примеру, некоторые настройки могут что на каком-нибудь этапе сборка прервётся с ошибкой.
запрещать сборку отдельных частей системы, отсутствие Хотя практика показывает, что они могут возникать и при

№2, февраль 2005 17


администрирование
наличии доступа в Интернет. Ошибки, препятствующие ! Какой-то определённый порт не собирается, даже если
сборке релиза, могут быть разными. Начиная от простых – выполнить предыдущие рекомендации. Некоторые пор-
нехватки каких-нибудь дистрибутивов для сборки из пор- ты во время сборки определяют версию системы и в за-
тов и заканчивая различными ошибками при компиляции. висимости от неё выбирают соответствующие парамет-
ры сборки приложения, либо по версии системы выби-
Не нужно начинать всё сначала рается, какие зависимости имеет порт. Система портов
Чтобы не начинать всё заново, расскажу, как с «минималь- определяет версию через переменные ядра. Поэтому,
ными потерями» продолжить сборку релиза. Итак, предпо- хоть сборка порта и происходит в chroot-окружении, где
ложим, что процесс сборки прервался по какой-то причине. все бинарные файлы и исходные коды от нужной вер-
Решив проблему, вы хотите продолжить сборку. Для этого сии ОС, для системы портов версия ОС будет той, в ко-
нужно указать утилите make цель «rerelease». И если нет не- торой вы собираете релиз. Это следует помнить, так как
обходимости в обновлении исходных файлов системы из ре- версия системы влияет и на выбор индексного файла, и
позитария, желательно определить переменную RELEASE на то, какой файл будет скачиваться при выполнении
NOUPDATE. make fetchindex, и какой файл будет генерироваться при
Теперь, предположим, что вы хотите повторить какой-то выполнении make index. Это ограничение можно обой-
этап сборки, например пересобрать ISO-образы системы. ти, если определить переменные OSVERSION и OSREL.
Предыдущая схема здесь не сработает. Если ISO-образы уже Формат OSVERSION можно посмотреть в переменной
были созданы, то повторного создания таким методом не ядра kern.osreldate, OSREL определяется по первым
добиться, даже если предварительно их удалить. По той про- цифрам вывода «uname -r». Подробнее всё это можно
стой причине, что при завершении этапов сборки (они опи- узнать, просмотрев скрипты в каталоге ports/Mk. Эти
саны в мануале release(7)) скриптами сохраняются «помет- переменные можно поместить в ${CHROOTDIR}/etc/
ки» об их завершении. Пометки – это обычные файлы, со- make.conf, тогда они будут использоваться при каждом
зданные командой touch. Имена файлов соответствуют на- запуске make в chroot-окружении.
званию завершившегося этапа. Файлы находятся в катало-
ге ${CHROOTDIR}/usr/obj/usr/src/release. Для того чтобы вновь Прочие ошибки
пересобрать ISO-образы, нужно удалить файл «iso.1» и уже Искать способы исправления других ошибок вам придётся,
тогда запускать make rerelease. видимо, самим. Можно попытаться обратиться в один из
списков рассылки или форум, посвящённый FreeBSD. Рас-
Не хватает дистрибутивов для установки порта скажу только об одной ошибке, не относящейся к предыду-
Если есть доступ в Интернет, то возникновение такой ошиб- щим пунктам. Я столкнулся с ней, когда попытался собрать
ки маловероятно. Если же доступа нет, то можно вручную релиз 4-й ветки, находясь в 5-й. Ошибка возникает, когда
скачать дистрибутив для установки порта с машины, где система пытается создать загрузочную область и образы
есть доступ, и поместить его в папку ${CHROOTDIR}/usr/ загрузочных дискет. В 5-й версии было убрано псевдоуст-
ports/distfiles, конечно, нужно не забывать, что некоторые ройство vn(4) и утилита vnconfig(8), их функционал перене-
дистрибутивы могут располагаться в отдельных каталогах. сён в драйвер md(4) и mdconfig(8). Да, и ещё в 5-й версии
Чтобы узнать, должен ли дистрибутив порта располагаться используется devfs.
в отдельном каталоге, нужно выполнить в каталоге порта Итак, как решить проблему по созданию релиза 4-й вер-
команду grep DIST_SUBDIR Makefile. После этого можно сии FreeBSD в окружении 5-й? Не скажу, что способ пра-
продолжить сборку, как это описано выше. вильный, но он рабочий, по пунктам:
! Нужно определить в make.conf переменные OSVERSION
Ошибки компиляции и OSREL в значение, которое они должны иметь в со-
Однозначный ответ на вопрос: что делать при ошибках ком- здаваемом релизе.
пиляции? – пожалуй, дать довольно сложно. Опять же, могу ! Собираем мир, устанавливаем его и после завершения
направить к чтению handbook, в котором есть несколько этапа release.2 прерываем сборку. Добавляем аналогич-
советов на эту тему. Приведу несколько примеров ошибок ные опции в ${CHROOTDIR}/etc/make.conf. Это необхо-
и возможных путей их решения: димо для корректной сборки портов. Продолжаем сбор-
! При сборке порта выводится ошибка о нехватке какой- ку релиза.
либо библиотеки, вместо установки её как зависимости. ! После завершения этапа release.7 сборка должна пре-
Возможно, у вас отсутствует индексный файл портов – рваться с ошибкой в скрипте doFS.sh. Теперь нужно ста-
ports/INDEX или ports/INDEX-5 (для 5-й ветки FreeBSD), тически собрать утилиту mdconfig, чтобы исключить все
ports/INDEX-6 (для 6-й ветки FreeBSD). Можно скачать ин- зависимости от разделяемых библиотек. Для этого по-
дексный файл с сайта – http://www.freebsd.org/ports/ надобятся исходные файлы текущей системы (той, в ко-
INDEX.bz2, INDEX-5.bz2 или INDEX-6.bz2. Или просто пе- торой происходит сборка релиза), переходим в каталог
рейти в ${CHROOTDIR} и собрать требуемый порт рука- src/sbin/mdconfig и запускаем команду «make -DNO
ми, устанавливая каждую зависимость, а затем продол- SHARED depend all». В каталоге obj/usr/src/sbin/mdconfig
жить сборку. Переходить в ${CHROOTDIR} нужно с по- будет статически скомпилированная утилита mdconfig.
мощью команды chroot, чтобы порты устанавливались и Копируем её в ${CHROOTDIR}/sbin/. Монтируем файло-
регистрировались в окружении той системы, релиз кото- вую систему devfs – «mount_devfs devfs ${CHROOTDIR}/
рой вы собираете. dev». Теперь можно продолжить сборку релиза.

18
администрирование
Я не проверял, будет ли этот способ работать при сбор- Перед сборкой ISO-образов в 5-й версии FreeBSD не-
ке релиза 5-й версии FreeBSD, находясь в окружении 4-й, обходимо создать пакеты xorg и perl5. Если делать всё «по
но не вижу причин, по которым сборка может не удастся. правилам», то для создания пакетов должен использовать-
Различие только в том, что собирать нужно будет не ся отдельный сервер, так как других лишних серверов у
mdconfig, а vnconfig и вместо монтирования devfs создавать меня в наличии нет, я использую этот же.
файлы устройств с помощью скрипта /dev/MAKEDEV. Технология такая:
! Создаётся каталог ${CHROOTDIR}/usr/ports/packages.
Приступим к сборке ! В chroot-окружении создаются необходимые пакеты вме-
Процесс сборки релиза опишу именно так, как делаю его я. сте со всеми зависимостями при помощи make package-
Начальные данные: recursive.
! Рабочий сервер, у которого есть доступ в Интернет, на ! По имеющимся пакетам создаётся файл INDEX.
нём находятся CVS-репозитарий и каталог distfiles с ди- ! Каталог packages копируется в ${CHROOTDIR}/R/cdrom/
стрибутивами для сборки портов. disc1/.
! Ещё один сервер, на котором я ставлю эксперименты,
он находится внутри локальной сети без доступа в Ин- По первым двум пунктам вроде бы вопросов быть не дол-
тернет. жно, а вот о создании файла INDEX расскажу подробнее.
! Доступ к CVS-репозитарию осуществляется по NFS. Я использовал для его создания свой скрипт, поэтому
! Собирать буду FreeBSD 5.3-STABLE, т.е. с CVS-тэгом не заметил, как в версии 5.3 появился скрипт src/release/
RELENG_5. scripts/mkpkgindex.sh.
Мой скрипт выглядит так:
Подготовка
#!/usr/local/bin/perl
# cd /usr/home
# mkdir release foreach(`ls All/`) {
chop;
# mount_nfs –o rdonly server:/usr/home/cvs /mnt s/\.t.z$//;
# cvs –Rd /mnt/ncvs co –Pr RELENG_5 src
# cd src/ `grep -E "^$_" ../INDEX-5 >> INDEX`;
}
# mv /etc/make.conf /etc/make.conf.old
# make –j8 buildworld
# cd release/
# vim start.sh Итак, для минимального дистрибутива нужны пакеты
perl и xorg, создаём их и копируем на «будущий» диск:
После сборки мира я создаю скрипт примерно со сле-
дующим содержанием: # mkdir /usr/home/release/usr/ports/packages
# cp mkindex.pl /usr/ports/packages
# chroot /usr/home/release
make –j8 CHROOTDIR=/usr/home/release BUILDNAME=5.3-STABLE ↵ # cd /usr/ports/lang/perl5.8 && make package-recursive
CVSROOT=/mnt/ncvs RELEASETAG=RELENG_5 ↵ # cd /usr/ports/x11/xorg && make package-recursive
DOC_LANG=”en_US.ISO8859-1 ru_RU.KOI8-R” ↵ # cd /usr/ports/x11/xorg-manpages && make package-recursive
NOPORTREADMES=yes RELEASENOUPDATE=yes release # cd /usr/ports/packages
# ./mkindex.pl
# rm mkindex.pl
-j8 –максимальное количество make-процессов, которое мо- # cp –PRv /usr/ports/packages /R/cdrom/disc1/
# exit
жет работать параллельно (сервер у меня двухпроцессор-
ный, со SCSI RAID-5); RELEASENOUPDATE – это на буду- Теперь можно создавать ISO-образы, исправляем файл
щее (чтобы не забыть), для цели «release» эта переменная start.sh, добавив переменную MAKE_ISOS=yes, и запуска-
не используется. ем start.sh. Установится порт cdrtools и создадутся два об-
NFS-каталог server:/usr/ports/distfiles можно примонтиро- раза диска.
вать сейчас в /usr/ports/distfiles или позже. На этом всё.

Сборка релиза Заключение


Теперь запускаем сборку релиза: sh start.sh. После получе- В завершение хотелось бы упомянуть о возможностях со-
ния исходных файлов системы и дерева портов из CVS здания нестандартного дистрибутива, имеющихся в сбороч-
можно прервать сборку и примонтировать distfiles: ных скриптах релиза системы.
В первую очередь это настройка sysinstall при помощи
# mount_nfs –o rdonly server:/usr/ports/distfiles ↵ конфигурационного файла install.cfg. На эту тему в Интер-
/usr/home/release/usr/ports/distfiles
# vim start.sh нете можно найти множество статей, ну и конечно же не
надо забывать про мануал sysinstall(8).
В файле start.sh исправляем цель release на rerelease и Также есть возможность применения сторонних патчей
запускаем sh start.sh. Теперь можно заняться своими дела- к исходным файлам системы во время создания релиза.
ми, но переодически посматривать за процессом сборки. Обратите внимание на переменные LOCAL_PATCHES,
Если каких-то портов не будет хватать, я запускаю на сер- PATCH_FLAGS и LOCAL_SCRIPT в мануале release(7).
вере make fetch-recursive для нужного порта и после завер- Ну и если вам необходимо что-то действительно нео-
шения снова запускаю start.sh. Когда процесс закончится, бычное, обратите внимание на сборочные скрипты таких
вы увидите надпись «make rerelease for i386 finished …». проектов, как Frenzy, FreeSBIE, LiveBSD.

№2, февраль 2005 19


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

КОНСТРУКТИВНЫЙ DIALOG

СЕРГЕЙ СУПРУНОВ
Думаю, вам приходилось сталкиваться с работой утилиты Нужно заметить, что версии этой утилиты для Linux и
dialog, входящей в состав большинства UNIX-систем (вклю- для FreeBSD несколько отличаются. Данная статья будет
чая FreeBSD и практически все дистрибутивы Linux). Для посвящена версии, входящей в состав FreeBSD по умолча-
Linux она часто используется в конфигурационных сцена- нию (конкретно – FreeBSD 5.3), а в завершение я скажу не-
риях, во FreeBSD ее можно встретить при установке неко- сколько слов об особенностях dialog в Linux.
торых приложений из коллекции портов (например, oops, Если в командной строке набрать «dialog» без парамет-
php). Она позволяет создавать простейшие диалоговые ров, то будет выведена справка по использованию утили-
окна для взаимодействия с пользователем, используя псев- ты. Нужно заметить, что богатством функций она не бле-
дографику (как в sysinstall). Конечно, для «ортодоксально- щет. Так, с ее помощью можно задать пользователю воп-
го» системного администратора любое отступление от ко- рос, требующий ответа «Да» или «Нет», отобразить содер-
мандной строки – кощунство, однако интерактивность в жимое файла или результат работы какой-нибудь коман-
ряде случаев может быть весьма полезной. ды, запросить ввод строки, предложить выбрать одну или

20
администрирование
несколько альтернатив из списка, создать меню, отобразить strerr (имеющий дескриптор 2) в файл с помощью такой кон-
список некоторых значений в виде дерева. Dialog не позво- струкции: 2> apctl.tmp. В дальнейшем сохраняем содержи-
ляет комбинировать несколько элементов в одном окне (на- мое этого файла в переменной $COMMAND и дополняем
пример, группу полей ввода), то есть если вы решите ис- полным именем утилиты apachectl. Таким образом, в пере-
пользовать его для разработки сценария настройки сете- менной $COMMAND оказывается команда, которую нужно
вых интерфейсов, то такие параметры, как IP-адрес, мас- исполнить. Теперь уточним у пользователя, действительно
ка, шлюз по умолчанию, придется запрашивать поочеред- ли он хочет выполнить эту команду, для чего используем
но в отдельных окнах. Тем не менее на базе этой утилиты еще один диалог типа «Да/Нет». Результат взаимодействия
можно строить достаточно «продвинутые» сценарии. с пользователем в данном случае можно получить из пере-
Синтаксис команды, с вашего позволения, дублировать менной $?, хранящей код возврата последней команды.
не буду. Для разминки сразу напишем сценарий, позволяю- Если была выбрана кнопка «Yes», код возврата будет 0 (ус-
щий управлять сервером Apache – запускать его, останав- пешное завершение).
ливать, выполнять «мягкий» и «жесткий» перезапуск (graceful
и restart соответственно). Обычно для этого используется
утилита apachectl, однако если Apache работает достаточно
стабильно, то ее ключи начинают забываться. Следующий
пример демонстрирует решение поставленной задачи:

Ïðèìåð 1: apctl.sh - Ñöåíàðèé óïðàâëåíèÿ ñåðâåðîì Apache

#!/bin/sh
# apctl.sh

dialog --title "Apachectl interface" \


--menu "
Äàííûé ñöåíàðèé óïðàâëÿåò ñåðâåðîì Apache.
Âûáåðèòå äåéñòâèå èç ïðåäëîæåííûõ íèæå:" 17 50 8 \
start "Çàïóñê ñåðâåðà Apache" \
stop "Îñòàíîâ ñåðâåðà Apache" \ Ðèñóíîê 1
restart "'Æåñòêèé' ïåðåçàïóñê" \
graceful "'Ìÿãêèé' ïåðåçàïóñê" \ Ну и прежде чем завершить работу, сценарий apctl.sh
status "Ñòàòóñ ñåðâåðà" \
fullstatus "Ïîäðîáíûé ñòàòóñ" \ должен удалить созданный им временный файл apctl.tmp.
configtest "Òåñò êîíôèãóðàöèîííîãî ôàéëà" \ Учитывая, что этот файл создается в том же каталоге, из
help "Âûâîä ñïðàâêè" 2> apctl.tmp
которого был вызван сценарий, вероятность, что несколь-
COMMAND=`cat apctl.tmp` ко пользователей запустят его одновременно в одной и той
COMMAND="/usr/local/sbin/apachectl $COMMAND"
же папке, достаточно низка. Тем не менее если она все же
dialog --title "Apachectl interface" \ существует, то имеет смысл имя временного файла фор-
--yesno "
ÂÍÈÌÀÍÈÅ! Áóäåò âûïîëíåíà ñëåäóþùàÿ êîìàíäà: мировать динамически, как будет показано ниже.
Перейдем к более серьезному примеру: напишем сцена-
$COMMAND
рий, позволяющий формировать файл .htaccess для управ-
Ïðîäîëæèòü?" 10 50 ления поведением сервера Apache в конкретных каталогах.
if [ $? = 0 ]; then Как вы сейчас увидите, работа эта неблагодарная, и создать
$COMMAND файл тонкой настройки вручную намного проще. Тем не ме-
fi
нее если вы выделяете своим пользователям место под до-
rm apctl.tmp машнюю страничку и предоставляете им терминальный до-
ступ к домашнему каталогу, то подобным сценарием можно
Рассмотрим подробнее, что происходит. Основная ра- несколько упростить жизнь не только хозяевам странички,
бота выполняется утилитой dialog, которой передаются па- но и службе технической поддержки. К тому же в данном
раметры для построения в данном случае диалога «Меню», примере мы встретимся почти со всеми типами диалоговых
позволяющего выбрать один из вариантов среди предло- окон, что очень хорошо для усвоения материала.
женных. Синтаксис достаточно прост. Ключ --title задает за- Чтобы не завязнуть в возможностях .htaccess и не уйти
головок окна, далее ключ --menu указывает тип диалога и от основной темы статьи, ограничимся двумя простейши-
требует следующих параметров: ми опциями: обработкой ошибки 404 «Файл не найден» (оп-
! Сопроводительный текст. ция ErrorDocument 404) и включением SSI-обработки для
! Высота окна (в символах). файлов с определенными расширениями (опция AddHandler
! Ширина окна (в символах). server-parsed).
! Количество пунктов меню. Опция ErrorDocument может принимать в качестве вто-
! Пары «Ключ» – «Пояснение» для каждого пункта меню. рого параметра (первый в нашем случае равен «404» – но-
мер обрабатываемой ошибки) либо просто текстовую стро-
В результате мы получим окно, изображенное на рис. 1. ку, которая будет использоваться в стандартной странице
Ключ выбранного пункта меню выводится в стандарт- ошибки, либо URL файла, возвращаемого пользователю
ный поток сообщений об ошибках (stderr), и, чтобы можно при запросе несуществующей страницы. Причем файл мо-
было его в дальнейшем использовать, мы перенаправляем жет располагаться как локально на этом же сервере, так и

№2, февраль 2005 21


администрирование
на другой, удаленной машине. В первом случае указывает- OFF \
ся относительный или абсолютный (от корня веб-сервера) REDIR "Ïåðåíàïðàâëåíèå íà óäàëåííûé ↵
ðåñóðñ" OFF 2> $TF
путь к файлу, во втором – полный URL ресурса, включая
протокол: ERR_MSG=`grep "MSG" $TF`
ERR_FILE=`grep "FILE" $TF`
ERR_REDIR=`grep "REDIR" $TF`
ErrorDocument 404 “Çàïðîøåííàÿ ñòðàíèöà íå ñóùåñòâóåò
ErrorDocument 404 /_srv_/error404.html QUOT=""
ErrorDocument 404 http://my.server.ru/errors/error404.htm if [ "$ERR_MSG" != "" ]; then
QUOT="\""
TEXT="
С опцией AddHandler все еще проще – она первым па- Ââåäèòå òåêñò ñîîáùåíèÿ îá îøèáêå 404:"
раметром принимает тип обработчика (в нашем случае это fi
server-parsed, говорящий, что будет обрабатываться SSI), if [ "$ERR_FILE" != "" ]; then
а далее – список расширений файлов, которые должны под- TEXT="
Ââåäèòå àáñîëþòíîå èìÿ ôàéëà (îò êîðíÿ âåá-ñåðâåðà)
падать под действие этого обработчика: èëè èìÿ îòíîñèòåëüíî òåêóùåãî êàòàëîãà:
Ïðèìåð: /errors/err404.html"
fi
AddHandler server-parsed .shtml .shtm
if [ "$ERR_REDIR" != "" ]; then
TEXT="
Как обычно, сначала приведу весь сценарий полностью: Ââåäèòå ïîëíûé URL ðåñóðñà (âêëþ÷àÿ íàèìåíîâàíèå ïðîòîêîëà):
Ïðèìåð: http://my.server.ru/errors/err404.html"
fi
Ïðèìåð 2: mkhtac.sh – Ñöåíàðèé äëÿ ñîçäàíèÿ .htaccess
#==[Dialog 3b]==
#!/bin/sh dialog --title "Make .htaccess: ErrorDocument" \
# mkhtac.sh --inputbox "$TEXT" 10 70 2> $TF
# Ñîçäàíèå âñïîìîãàòåëüíûõ ôàéëîâ ERRMSG=`cat $TF`
TF=`mktemp –t dlg` ERR2HT="ErrorDocument 404 $QUOT$ERRMSG"
TF_TREE=`mktemp –t tree` echo $ERR2HT
fi
# Çàïèñü â ôàéë äåðåâà êàòàëîãîâ
find www -type d > $TF_TREE if [ "$SSI" != "" ]; then
#==[Dialog 4a]==
# Ðåãèñòðàöèÿ îáðàáîò÷èêà ñèãíàëîâ dialog --title "Make .htaccess: SSI parse" \
trap "rm -f $TF $TF_TREE" 0 2 9 15 --checklist "
Îòìåòüòå, êàêèå ôàéëû äîëæíû
#==[Dialog 0]== îáðàáàòûâàòüñÿ ïàðñåðîì SSI:" 15 40 4 \
dialog --title "Make .htaccess: Confirmation" \ ".shtml" "ôàéëû shtml" ON \
--yesno " ".shtm" "ôàéëû shtm" ON \
Äàííûé ñöåíàðèé ïîìîæåò âàì ".html" "ôàéëû html" OFF \
ñîçäàòü ôàéë .htaccess. ".htm" "ôàéëû htm" OFF 2> $TF
Ïðîäîëæèòü?" 10 40 EXTLST=`cat $TF | tr "\"" "\0"`
SSI2HT="AddHandler server-parsed $EXTLST"
if [ $? != 0 ]; then echo $SSI2HT
exit fi
fi
# Çàïèñü ðåçóëüòàòîâ â ôàéë .htaccess
#==[Dialog 1]== HTFILE=$HTDIR/.htaccess
dialog --title "Make .htaccess: Select dir" \ touch $HTFILE
--ftree $TF_TREE "/" " [ "$ERR2HT" != "" ] && echo $ERR2HT >> $HTFILE
Óêàæèòå êàòàëîã, â êîòîðîì äîëæåí [ "$SSI2HT" != "" ] && echo $SSI2HT >> $HTFILE
áûòü ñîçäàí ôàéë .htaccess:" 19 40 10 2> $TF
#==========================[Dialog 5]==
if [ $? != 0 ]; then dialog --title "Make .htaccess: Finish" \
exit --msgbox "
fi Ðàáîòà çàâåðøåíà. Ñåé÷àñ ñîçäàííûé ôàéë
áóäåò âûâåäåí íà ýêðàí, ÷òîáû âû ìîãëè
HTDIR=`cat $TF` îçíàêîìèòüñÿ ñ ðåçóëüòàòîì.
#==[Dialog 2]== Äàëüíåéøèå èçìåíåíèÿ â ñîçäàííûé ôàéë
dialog --title "Make .htaccess: Select options" \ ìîæíî áóäåò âûïîëíèòü âðó÷íóþ." 15 50
--checklist "
Óêàæèòå îïöèè, êîòîðûå ñëåäóåò äîáàâèòü #==[Dialog 6]==
â ôîðìèðóåìûé .htaccess:" 15 50 2 \ dialog --title "Make .htaccess: Result" \
ErrorDocument "Îáðàáîòêà îøèáêè 404" OFF \ --textbox $HTFILE 15 50
AddHandler "Âêëþ÷åíèå SSI" OFF 2> $TF

if [ $? != 0 ]; then В первых строках сценарий подготавливает два времен-


exit ных файла. Они создаются утилитой mktemp с префиксами
fi
dlg и tree соответственно и по умолчанию будут размеще-
ERROR=`grep "ErrorDocument" $TF` ны в каталоге /tmp.
SSI=`grep "AddHandler" $TF`
Первый из них ($TF) служит для перехвата вывода ути-
if [ "$ERROR" != "" ]; then литы dialog, во второй ($TF_TREE) заносится результат ра-
#==[Dialog 3a]==
dialog --title "Make .htaccess: ErrorDocument" \ боты команды find, которая возвращает имена всех ката-
--radiolist " логов, найденных в папке www. Благодаря тому, что mktemp
Âûáåðèòå îäèí èç ñïîñîáîâ îáðàáîòêè îøèáêè 404:" 15 60 3 \
MSG "Òåêñòîâîå ñîîáùåíèå îá îøèáêå" ON \ создает файлы со случайными именами, можно не беспо-
FILE "Ïåðåíàïðàâëåíèå íà ëîêàëüíûé ôàéë" ↵ коиться о том, что скрипт, запущенный одним пользовате-

22
администрирование
лем, удалит временные файлы, с которыми в этот же мо- нейшем используется в следующем диалоге ([Dialog 3b]),
мент времени работает другой экземпляр сценария. поясняя пользователю, что же он должен ввести.
Командой trap регистрируем обработчик для сигналов
0 (нормальное завершение), 2 (SIGINT – прерывание, на-
пример, по Ctrl-C), 9 (SIGKILL – безусловное завершение) и
15 (SIGTERM – программное прерывание). При поступле-
нии одного из этих сигналов будет выполнена команда rm,
удаляющая созданные сценарием временные файлы.
Фрагмент сценария, помеченный как [Dialog 0], выво-
дит окно типа «Да/Нет» с вопросом о продолжении, и при
ответе «Нет» работа сценария завершается.
[Dialog 1] выводит дерево каталогов, корнем которого
является в нашем случае папка www, и пользователь мо-
жет выбрать в нем каталог, в котором следует создать файл
.htaccess. Результат представлен на рис. 2, выбор пользо-
вателя заносится в переменную $HTDIR. Ðèñóíîê 4
Значение, введенное в [Dialog 3b] (рис. 5), заносится в
переменную $ERRMSG, и вместе с именем самой опции в
переменной $ERR2HT формируется строка, которая в даль-
нейшем будет записана в файл.

Ðèñóíîê 2
[Dialog 2] (см. рис. 3) выводит список флажков (checklist),
предлагая пользователю отметить те опции, которые он
желает иметь в создаваемом файле .htaccess. Результат
выбора раскладывается по переменным $ERROR и $SSI с Ðèñóíîê 5
помощью утилиты grep. Если та или иная опция не упоми- Следующий диалог ([Dialog 4a]) предлагает пользова-
нается во временном файле, то соответствующая перемен- телю отметить типы файлов, которые будут обрабатывать-
ная останется пустой, что и используется при определении ся SSI-парсером (рис. 6). Поскольку отмеченные пункты при
последующих действий. выводе в stderr (перенаправляемый в файл) заключаются
в кавычки, то при их извлечении кавычки нужно удалить,
для чего используется утилита tr.

Ðèñóíîê 3
Так, если была выбрана опция ErrorDocument, то на эк-
ране появится диалоговое окно, изображенное на рис. 4. Ðèñóíîê 6
За его формирование отвечает вызов dialog, помеченный, После всех этих мучений наконец-то создается файл
как [Dialog 3a]. Здесь реализуется список зависимых кно- .htaccess, и в него записываются сформированные строки
пок (radiolist), позволяющий выбрать один из предложен- (если они не пустые). [Dialog 5] поздравляет пользователя
ных вариантов. В зависимости от выбора пользователя в с этим знаменательным моментом (рис. 7), а [Dialog 6] вы-
переменную $TEXT заносится сообщение, которое в даль- водит на экран полученный результат, демонстрируя рабо-

№2, февраль 2005 23


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

Ðèñóíîê 7
Вернемся к свойствам утилиты dialog. Цветовую гамму Ðèñóíîê 9
окон и некоторые другие параметры (например, отображе- Ряд параметров (цвет элементов окна, наличие тени
ние тени) можно изменить. Для этого используется конфи- и т. д.) в Linux-версии можно изменить не только в конфи-
гурационный файл, шаблон которого можно создать такой гурационном файле, но и в командной строке с помощью
командой: соответствующих ключей.
Кстати говоря, Linux-версию утилиты dialog можно ус-
$ dialog --create-rc <file> тановить и на FreeBSD. Она доступна в коллекции портов
под именем cdialog (/usr/ports/devel/cdialog).
В результате в файл <file> будет записана конфигура- Помимо консольной версии существует Xdialog, выпол-
ция по умолчанию. Полученный файл следует либо пере- няющий аналогичные функции в графической среде. В том
именовать в .dialogrc и поместить в домашнюю папку же Knoppix его работу можно наблюдать, например, при
пользователя (в результате он будет распространяться на вызове сценария настройки сети (рис. 10). А на рис. 11 еще
все диалоги, запущенные этим пользователем), либо ука- раз показан «Календарь», но уже в исполнении Xdialog.
зать к нему путь в переменной окружения DIALOGRC. Ре-
дактирование конфигурационного файла сложностей выз-
вать не должно, поскольку каждая строчка в нем достаточ-
но хорошо прокомментирована.

Ðèñóíîê 10

Ðèñóíîê 8
Ну и как было обещано – несколько слов об особеннос-
тях dialog в Linux. Так как «стационарного» Linux у меня под
рукой нет, я воспользовался LiveCD-дистрибутивом Knoppix. Ðèñóíîê 11
В отличие от FreeBSD-версии в Linux dialog имеет ряд допол- В завершение статьи отмечу также, что библиотеку,
нительных опций и возможностей. Так, с его помощью мож- лежащую в основе утилиты dialog, можно использовать и
но реализовать диалоги выбора даты (--calendar, рис. 8), непосредственно в своих программах на C/C++. Существу-
выбора файла (--fselect, рис. 9), вывести индикатор выполне- ют также интерфейсы к данной библиотеке для Perl, Python
ния процесса, именуемый в народе «термометром» (--gauge), и Ruby (их можно установить из коллекции портов: devel/
запросить ввод пароля (элемент --passwordbox), можно до- p5-Dialog, devel/py24-dialog и devel/ruby-dialogs соответствен-
бавлять в диалоговые окна дополнительные кнопки и т. д. но). Дополнительную информацию, как обычно, можно по-
Зато в нем нет «деревьев» (элементы --tree и --ftree в лучить на страницах справочного руководства man dialog(1)
FreeBSD-версии), так что рассмотренный нами пример 2 на и dialog(3).

24
bugtraq

Множественные уязвимости в AWStats Переполнение буфера в fd_set-структуре


Программа: AWStats 6.3 final и более ранние версии. во многих приложениях
Опасность: Высокая. Программа: gnugk 2.2.0, jabber 1.4.1, bnc 2.8.4, socks5 1.0r1,
Описание: Уязвимость позволяет удаленному пользовате- citadel 6.27, dante 1.1, rinetd 0.62, bld 0.3, 3proxy 0.4.
лю выполнить некоторые perl-директивы, вызвать отказ в Опасность: Высокая.
обслуживании и получить доступ к важной информации Описание: Структура fd_set на всех POSIX-совместимых
пользователей. платформах определяется как bitmask-массив с номером
Уязвимость обнаружена в плагине rawlog при обработ- сокета в качестве индекса массива. Структура fd_set ис-
ке переменных loadplugin и pluginmode. Удаленный пользо- пользуется в функции select() и нескольких специальных
ватель может выполнить произвольный perl-сценарий с при- макросах (FD_SET, FD_CLR, FD_ISSET, FD_CLEAR) для
вилегиями веб-сервера или вызвать отказ в обслуживании. работы с дескрипторами ввода/вывода. Ни FD_SET ни фун-
Пример: кция select() не контролируют, чтобы номер сокета был боль-

http://www.lan.server/cgi-bin/awstats-6.4/awstats.pl?↵ ше значения FD_SETSIZE. Удаленный пользователь может
&PluginMode=:print+getpwent перезаписать память за fd_set-структурой и выполнить про-
Удаленный пользователь может выполнить произволь- извольный код или вызвать отказ в обслуживании.
ный плагин. Уязвимость существует из-за недостаточной Решение: Установите обновления от производителей.
проверки данных перед вызовом функции require(). Пример: Источник: http://www.security.nnov.ru/advisiories/sockets.asp.
http://server/cgi-bin/awstats-6.4/awstats.pl? ↵
&loadplugin=../../../../usr/libdata/perl/5.00503/blib Php-инклудинг и XSS в SquirrelMail
Удаленный пользователь может получить доступ к важ- Программа: SquirrelMail версии до 1.4.4.
ной информации, вызвав один из отладочных сценариев. Опасность: Высокая.
Пример: Описание: Некоторые переменные в сценарии src/web
http://www.lan.server/cgi-bin/awstats-6.4/awstats.pl?debug=1 mail.php позволяют удаленному пользователю с помощью
http://www.lan.server/cgi-bin/awstats-6.4/awstats.pl?debug=2 специально сформированных параметров произвести php-
URL производителя: http://awstats.sourceforge.net. инклудинг и выполнить произвольные команды на системе
Решение: Установите обновление с сайта производителя. с привилегиями веб-сервера.
Удаленный пользователь может с помощью специаль-
Выполнение произвольного кода но сформированного URL произвести XSS-нападение и по-
в Symantec Norton Anti-Virus лучить доступ к важным данным пользователей. Уязвимость
Программа: Norton AntiVirus для Microsoft Exchange 2.1, вер- существует в сценарии src/webmail.php.
сии до build 2.18.85; Symantec Norton Antivirus 2004 для Отсутствие инициализации переменных в файле functions/
Windows и Macintosh; Symantec Norton Antivirus 9.0 для prefs.php позволяет удаленному пользователю инклудинг и
Macintosh. выполнение произвольных php-сценариев при включенной
Опасность: Высокая. опции register_globals в конфигурационном файле php.ini.
Описание: Уязвимость обнаружена в DEC2EXE при обра- URL производителя: http://www.squirrelmail.org.
ботке UPX-файлов. Удаленный пользователь может создать Решение: Установите обновление: http://www.squirrel
специальным образом UPX-файл, вызвать переполнение mail.org/download.php
буфера и выполнить произвольный код на уязвимой систе-
ме. Удаленное выполнение произвольного
URL производителя: http://www.symantec.com. кода в BrightStor ARCserve Backup
Решение: Установите обновление: http://www.symantec.com/ Программа: BrightStor ARCserve Backup версии до 11.1.
techsupp. Опасность: Высокая.
Описание: BrightStor ARCserve посылает пробные UDP-со-
Уязвимость форматной строки в ngIRCd общения на широковещательный адрес для выявления дру-
Программа: ngIRCd 0.8.2 и более ранние версии. гих BrightStor-серверов в сети. Служба Discovery слушает
Опасность: Высокая. на 41524 UDP-порту пробные запросы. Переполнение бу-
Описание: Обнаружена уязвимость форматной строки, ко- фера существует в функции recvfrom() при обработке проб-
торая позволяет удаленному пользователю выполнить про- ных UDP-пакетов. Функция получает 4096 байт, которые ко-
извольный код на уязвимой системе. пируются в буфер меньшего размера. UDP-сообщение, раз-
Уязвимость обнаружена в функции Log_Resolver() фай- мером более 1000 байт, вызовет переполнение буфера и
ла log.c. Если ngIRCd был скомпилирован с поддержкой Ident, даст возможность удаленному пользователю выполнить
syslog и DEBUG, удаленный пользователь может послать произвольный код на уязвимой системе с привилегиями
строку специально сформированных данных ident в ответ на Local SYSTEM.
ident-запрос и выполнить произвольный код на системе. URL производителя: http://supportconnectw.ca.com/public/
URL производителя: http://arthur.ath.cx/~alex/ngircd. enews/BrightStor/brigcurrent.asp.
Решение: Способов устранения уязвимости не существу- Решение: Установите обновления от производителя.
ет в настоящее время.
Составил Александр Антипов

№2, февраль 2005 25


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

ПОЧТОВЫЙ СЕРВЕР НА БАЗЕ POSTFIX


ЗАЩИТА ОТ ВИРУСОВ И НЕЖЕЛАТЕЛЬНОЙ ПОЧТЫ
МИНИМАЛЬНЫМИ СРЕДСТВАМИ

ГЕННАДИЙ ДМИТРИЕВ
В январском номере журнала за прошлый год вышла моя чтобы она выполняла функции фильтрации почты как на
статья [1], посвященная настройке почтовых фильтров на вирусы, так и на нежелательную корреспонденцию. В этой
базе MTA Sendmail. Тогда я не предполагал, что она может статье я не буду подробно описывать всю систему цели-
вызвать такой широкий интерес и привести к целому ряду ком, материалов на похожие темы предостаточно. Я лишь
публикаций на совершенно разные темы. Очень большое укажу на некоторые интересные моменты в данной связке
количество откликов со стороны читателей натолкнуло меня и покажу, какими минимальными средствами можно полу-
на мысль поделиться своими новыми изысканиями в обла- чить вполне рабочую систему. Итак, начнем.
сти системного администрирования.
Kaspersky
Немного теории Со времен выхода первой статьи [1], где я рассказывал о
Среди многочисленных систем передачи информации в связке Sendmail и Kaspersky Antivirus for FreeBSD, ничего не
глобальной сети Интернет немаловажную роль играет сис- изменилось. Однако для привязки Kaspersky Antivirus в RHEL
тема передачи электронных сообщений от одного респон- 3.0 нужно будет использовать отдельную утилиту, обеспечи-
дента к другому. Она включает в себя клиентов доставки, вающую шлюз для обмена данными между Postfix и антиви-
протоколы передачи данных и процедуры согласования русной программой. Но все по порядку.
между агентами. Один из основных агентов, отвечающий Первое, с чего мы начнем – это создадим отдельную
за доставку сообщения от одного клиента к другому, полу- группу и пользователей, от имени которых будут работать
чил название MTA (Mail Transfer Agent). На сегодняшний наши демоны. Они пригодятся нам в дальнейшем, когда
день этих агентов насчитывается уже более десяти. В дан- мы будем устанавливать и настраивать спам-фильтры.
ной статье речь пойдет об MTA Postfix.
Некоторое время назад я сменил работу, перейдя в одну # groupadd filter –g 551
# mkdir /var/spool/filter /var/spool/filter/spamd
из лучших фирм Петербурга на должность ведущего инже- # useradd -u 542 -g 551 -d /var/spool/filter/spamd ↵
нера. Системный администратор, занимавшийся управлени- -s /sbin/nologin avpclient
# useradd -u 543 -g 551 -d /nonexistent ↵
ем сетевой инфраструктурой фирмы, был очень занят серь- -s /nonexistent avpdaemon
езным проектом и меня попросили помочь в решении не- # chown avpclient:filter /var/spool/filter/spamd
# cd /var/spool/filter/avp
большой проблемы, связанной с постоянным падением по- # mkdir Bases ctl dev etc proc tmp tst usr var var/log
чтового сервера. Таким образом я получил в свои руки # chown –R avpdaemon:filter Bases ctl tmp tst var
# cd dev
связку из Red Hat Enterprise Linux (RHEL) 3.0 и как-то на- # mknod console c 0 0
строенного Postfix. При всем моем скептическом отноше- # mknod null c 2 2
нии к Linux меня в данной ситуации подогревал жуткий ин-
терес, какими минимальными средствами можно заставить Последние две команды необходимы, так как антиви-
корректно работать данную систему. При этом требовалось, русный демон будет запускаться в chroot-окружении.

26
администрирование
Покончив с деревом каталогов, берем дистрибутив BackupInfected=No
Kaspersky Antivirus for Linux Server (kavwslinux-4.0.3.1.tgz), IfDisinfImpossible=1
распаковываем: [Report]
# Òðåáóåì âåñòè ôàéë æóðíàëà
Report=Yes
# tar xzvf kavwslinux-4.0.3.1.tgz UseSysLog=No
# cd kavwslinux # Ïðîïèñûâàåì ïóòü ê ôàéëó æóðíàëà
ReportFileName=/var/log/kavscan.log
Из всего списка получившихся файлов нам понадобит- # Îòêëþ÷àåì ðàñøèðåííûå ôîðìû çàïèñè â æóðíàëå
ся: AvpUnix.ini, kavdaemon, kavscanner, kavupdater, а также ExtReport=No
RepForEachDisk=No
файл /etc/defUnix.prf. LongStrings=Yes
Перейдем к установке и настройке антивируса. Скопи- # Îòêëþ÷àåì ïîëüçîâàòåëüñêèé ôàéë æóðíàëà
UserReport=No
руем в каталог /var/spool/filter/avp перечисленные выше фай-
лы. В результате должно получиться следующее (обратите # Óñòàíàâëèâàåì ðåàêöèþ íà îáíàðóæåíèå âèðóñà: íå äåëàòü
# êîïèè ïèñåì
внимание на имя владельца подкаталогов): [ActionWithInfected]
InfectedCopy=No
# ls –all # Óñòàíàâëèâàåì ïîðÿäîê äåéñòâèé ïðè ïîäîçðåíèè íà âèðóñ:
# íå äåëàòü êîïèè ïèñåì
drwxr-xr-x 17 root wheel 4096 Фев 14 19:36 .
[ActionWithSuspicion]
drwxr-xr-x 4 root wheel 4096 Янв 15 15:17 .. SuspiciousCopy=No
-rwxr-xr-x 1 root wheel 21713 Янв 14 19:44 avcheck
-rw-r--r-- 1 root wheel 170 Янв 17 11:54 AvpUnix.ini # Óñòàíàâëèâàåì ïîðÿäîê äåéñòâèé â ñëó÷àå, åñëè íå óäàëîñü
drwxr-xr-x 2 avpdaemon filter 4096 Янв 27 13:31 Bases # ðàñïàêîâàòü ôàéë (ñ÷èòàåì åãî ïîâðåæäåííûì): íå äåëàòü
drwxr-xr-x 2 avpdaemon filter 4096 Фев 14 18:15 ctl # êîïèè ïèñåì
-rw-r--r-- 1 root wheel 1865 Янв 15 14:44 defUnix.prf [ActionWithCorrupted]
drwxr-xr-x 2 root wheel 4096 Янв 15 14:31 dev CorruptedCopy=No
drwxr-xr-x 2 root wheel 4096 Янв 15 14:44 etc
-rwxr-xr-x 1 avpdaemon filter 830742 Янв 24 2003 kavdaemon [TempFiles]
-rwxr-xr-x 1 root wheel 803771 Янв 24 2003 kavscanner # Óñòàíàâëèâàåì ïðåäåëüíûé ðàçìåð ñêàíèðóåìûõ ôàéëîâ
-rwxr-xr-x 1 root wheel 647648 Янв 24 2003 kavupdater # è îïðåäåëÿåì êàòàëîã äëÿ âðåìåííûõ ôàéëîâ
drwxr-xr-x 2 root wheel 4096 Янв 15 14:30 proc
UseMemoryFiles=Yes
LimitForMemFiles=6000
drwxr-xr-x 2 avpdaemon filter 4096 Фев 10 14:49 tmp
MemFilesMaxSize=20000
drwxr-xr-x 2 avpclient filter 4096 Фев 15 10:57 tst TempPath=/tmp
drwxr-xr-x 2 root wheel 4096 Янв 15 14:30 usr
drwxr--r-- 3 avpdaemon filter 4096 Янв 15 14:55 var [Customize]
# Îòêëþ÷àåì ïðîâåðêó íåîáõîäèìîñòè îáíîâëåíèÿ âèðóñíûõ áàç.
Перейдем к конфигурационным файлам. Ниже будут # Äàííàÿ îïöèÿ íåîáõîäèìà äëÿ ðàáîòû àíòèâèðóñíîé ïðîãðàììû
приведены лишь параметры, значения которых отличают- # áåç âìåøàòåëüñòâà àäìèíèñòðàòîðà.  ïðîòèâíîì ñëó÷àå
# îíà áóäåò ïðîñèòü îáíîâèòü áàçû êàæäûé ðàç ïðè çàãðóçêå
ся от принятых по умолчанию. UpdateCheck=No
# Îòêëþ÷àåì âñå ëèøíèå ïðåäóïðåæäåíèÿ íà êîíñîëè ñåðâåðà
OtherMessages=No
AvpUnix.ini RedundantMessage=No
DeleteAllMessage=No
[AVP32]
# Ìåíÿåì ïóòü ê îñíîâíîìó êîíôèãóðàöèîííîìó ôàéëó Основная идея состоит в том, чтобы максимально упрос-
DefaultProfile=defUnix.prf
тить ведение файлов журнала, и хранить в них только самое
[Configuration] главное: проверен такой-то файл, инфицирован или нет. К
KeysPath=.
# Ïðîïèñûâàåì ïóòü ê âèðóñíûì áàçàì îò êîðíåâîãî êàòàëîãà тем параметрам, которые я менял в этом файле, написаны
BasePath=/Bases комментарии. Остальные параметры не менялись. Как мож-
но заметить, все каталоги прописаны от корневого, в кото-
Конфигурационный файл defUnix.prf описывает дей- ром, собственно, и находится антивирусная программа. Все
ствия антивирусного сканера при обнаружении вирусов в дело в том, что дальше мы будем запускать антивирус в
теле сканируемого файла. chroot-окружении (зачем это нужно, будет объяснено чуть
позже). Приведу сценарий для запуска процедуры обнов-
defUnix.prf ления вирусных баз. Он достаточно маленький и состоит
# same section with parameters for objects из двух строчек. Этот скрипт следует прописать в crontab
[Object] для ежедневного выполнения, скажем, в час ночи.
# Óêàçûâàåì êàòàëîã, â êîòîðîì áóäåì ïðîâîäèòü ñêàíèðîâàíèå
# ôàéëà íà âèðóñû
Names=*/tst updater.sh
# Îòêëþ÷àåì ñêàíèðîâàíèå ïàìÿòè è ñåêòîðîâ ëîãè÷åñêèõ òîìîâ
Memory=No #!/bin/sh
Sectors=No /var/spool/filter/avp/kavupdater -y -kb ↵
# Óêàçûâàåì ïàðàìåòðû ñêàíèðîâàíèÿ óïàêîâàííûõ ôàéëîâ, -ui=http://downloads2.kaspersky-labs.com/updates/ ↵
# àðõèâîâ, ñàìîðàçâîðà÷èâàþùèõñÿ àðõèâîâ è òàê äàëåå -b=/var/spool/filter/avp/Bases
Packed=Yes /etc/init.d/kavd restart
Archives=Yes
SelfExtArchives=Yes
MailBases=Yes Сценарий для запуска/остановки демона антивирусной
MailPlain=Yes
Embedded=Yes программы (/etc/init.d/kavd) также необходимо несколько
# Óñòàíàâëèâàåì ðåàêöèþ íà îáíàðóæåíèå âèðóñà â òåëå ïèñüìà модифицировать. Здесь приведены лишь его части, под-
# «3» îçíà÷àåò óäàëåíèå òåëà âèðóñà áåç ïîïûòîê åãî ëå÷åíèÿ
InfectedAction=3 вергшиеся изменению. Остальное можно найти в дистри-
# Òðåáóåì íå àðõèâèðîâàòü ïèñüìî â ñëó÷àå îáíàðóæåíèÿ âèðóñà бутиве AVP.

№2, февраль 2005 27


администрирование
/etc/init.d/kavd # ñîîáùåíèé îòïðàâèòåëþ è ïîëó÷àòåëþ âèðóñíîãî ñîîáùåíèÿ
VIRUS_ALERT=
# Óêàçûâàåì êàòàëîã, â êîòîðûé óñòàíîâëåí àíòèâèðóñíûé ôèëüòð # Îòêëþ÷àåì èíôîðìàòèâíûå ñîîáùåíèÿ îòïðàâèòåëþ è ïîëó÷àòåëþ
INSTPATH=/var/spool/filter/avp INFORM_SENDER=n # no send alert
# Óêàçûâàåì êàòàëîã, â êîòîðîì áóäåì òåñòèðîâàòü ôàéëû INFORM_RCPT=n # send alert to recipients
AVPDIR="/tst"
# Óêàçûâàåì êàòàëîã äëÿ õðàíåíèÿ ñîêåòà # Óäàëÿåì ôóíêöèè attach_message() è attach_message_headers()
AVPPIPE="/ctl"
# Óêàçûâàåì ïàðàìåòðû çàïóñêà äåìîíà # Â ñåêöèè ãåíåðàöèè ïðåäóïðåæäåíèÿ àäìèíèñòðàòîðó óáèðàåì
DPARMS="-Y -MP -f=$AVPPIPE -dl -MD -I0 -o{$AVPDIR} $AVPDIR" # âûçîâ ôóíêöèè attach_message(). Òàêæå â ñëó÷àå, åñëè ìû
# íå èñïîëüçóåì èíôîðìàòèâíûå ñîîáùåíèÿ îòïðàâèòåëþ
# Ñòðîêè, ïðîâåðÿþùèå íàëè÷èå êîíôèãóðàöèîííûõ è êëþ÷åâûõ # è ïîëó÷àòåëþ âèðóñíîãî ïèñüìà, ìîæíî óäàëèòü ñåêöèè
# ôàéëîâ, ìîæíî èñêëþ÷èòü.  ñëó÷àå êîððåêòíîé íàñòðîéêè # «send alert to sender»
# ñèñòåìû îíè íå íóæíû. Äàëåå â ñåêöèè çàïóñêà äåìîíà # «alert to recipients»
# óáèðàåì ïðîâåðêó äåìîíñòðàöèîííîé âåðñèè, íàëè÷èÿ âèðóñíûõ
# áàç è êîððåêòèðóåì ñòðîêó çàïóñêà ñàìîãî äåìîíà. Ïî÷åìó С настройкой антивирусного демона закончили. Перей-
# îíà âûãëÿäèò èìåííî òàê, áóäåò îáúÿñíåíî ÷óòü ïîçæå дем к установке SpamAssassin.
start ()
{ SpamAssassin
if [ -r "$PIDFILE" ]; then
echo "$NAME is running" С фильтром на нежелательную почту все немного проще.
exit 1 Находим дистрибутив, скачиваем, распаковываем, устанав-
fi
cd $INSTPATH ливаем:
echo -n "Starting $DESC: "
daemon "/bin/env - HOME=/ /bin/nice ↵
/var/spool/filter/avp/uchroot ↵ # tar xzvf Mail-SpamAssassin-3.0.2.tar.gz
-u avpdaemon $INSTPATH /kavdaemon $DPARMS" # cd Mail-SpamAssassin-3.0.2
RETVAL=$? # make
echo # make install
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$NAME
cd $WD
} Инсталляцию можно произвести и из RPM-пакета, если
таковой имеется у вас под рукой. Обратите внимание, в 3-й
Обратите внимание на строку запуска антивирусного версии SpamAssassin некоторые параметры конфигураци-
демона: онных файлов сильно отличаются. Ниже будут приведены
тексты именно для 3-й версии и выше. Файл конфигурации
daemon "/bin/env - HOME=/ /bin/nice ↵ SpamAssassin, приведенный целиком и созданный мною
/var/spool/filter/avp/uchroot -u avpdaemon ↵
$INSTPATH /kavdaemon $DPARMS" практически с нуля, а также стартовый сценарий (/etc/init.d/
spamd), который пришлось слегка модифицировать для
Как легко видеть, мы пытаемся запустить демона в запуска демона от имени другого пользователя.
chroot-окружение с использованием неких утилит. Дело в Все необходимые каталоги были созданы нами ранее.
том, что входящий в комплект AVP шлюз kavkeeper, обес- Конфигурационный файл SpamAssassin:
печивающий связь между почтовым сервером и антивирус-
ным демоном, корректно работает лишь в случае, когда в local.cf
качестве фильтров используется только антивирус. При по- # don't use agent
пытке привязать к системе дополнительные фильтры вро- use_razor2 0
use_dcc 0
де Spamassassin образовывается некая внутренняя петля, use_pyzor 0
и почтовое сообщение постоянно крутится по кругу внутри
# check rbl
почтового сервера. Переписка с технической поддержкой skip_rbl_checks 0
лаборатории Касперского по этому поводу, к сожалению,
# autowhitelist
ничего не дала. Поэтому вместо kavkeeper мы будем ис- use_auto_whitelist 1
пользовать avcheck (http://www.corpit.ru/avcheck), написан- auto_whitelist_path /var/spool/filter/spamd/auto_whitelist
ный Михаилом Токаревым. # bayes
use_bayes 1
# cd /home/gennadiy bayes_auto_learn 0
# tar xzvf avcheck-0.8.tar.gz bayes_path /var/spool/filter/spamd/bayes
bayes_expiry_max_db_size 1500000
# cd avcheck-0.8 bayes_auto_learn_threshold_nonspam 0.1
# make
# cp avcheck /var/spool/filter/avp/ bayes_auto_learn_threshold_spam 10.0
bayes_min_ham_num 100
# cp uchroot /var/spool/filter/avp/ bayes_min_spam_num 200
# mkdir /var/spool/filter/avp/infected
# cp infected.ex2.ru /var/spool/filter/avp/infected auto_learn 0
ok_languages en ru
Вот вроде бы и все. Единственный момент связан с тем, ok_locales en ru
что я откорректировал конфигурационный файл infected.
# Spam header rewriting – clear_headers
ex2.ru таким образом, чтобы в случае обнаружения вируса rewrite_header subject ****SPAM (_SCORE_)****
администратору высылалось лишь предупреждение без required_hits 3.5
оригинального вложения. # user rules
allow_user_rules 0
infected.ex2.ru
# report options
always_add_report 1
# Îñòàâëÿåì äàííóþ ñòðî÷êó ïóñòîé, ÷òîáû íå ïîñûëàòü ëèøíèõ

28
администрирование
report_safe 0 Последние штрихи
report_charset koi8-r Кажется, все хорошо. Почта работает, вирусы отлавливает,
# dns testing спам идентифицируется. Но, как всегда, хочется большего.
dns_available no В связке Sendmail + SpamAssassin в milter (это программа,
# score options предоставляющая транспорт между MTA и почтовым фильт-
score FROM_ILLEGAL_CHARS 1.5 ром) можно было указать, на какой адрес пересылать всю
score HEAD_ILLEGAL_CHARS 1.5
score SUBJ_ILLEGAL_CHARS 1.5 нежелательную корреспонденцию. В Postfix мы воспользу-
score SUBJ_HAS_SPACES 2.5 емся стандартными средствами фильтрации по заголовкам
score NO_REAL_NAME 1.0
score PENIS_ENLARGE 3.5 письма. Однако прежде чем это делать, нам необходимо
score PENIS_ENLARGE2 3.5 проверить, чтобы наш MTA был не ниже версии 2.1. Ранние
score FROM_HAS_MIXED_NUMS 1.0
score FORGED_IMS_TAGS 0.5 версии не поддерживают инструкцию REDIRECT. Находим
score FORGED_MUA_OUTLOOK 0.5 дистрибутив для RHEL 3.0, устанавливаем:
score FORGED_OUTLOOK_TAGS 0.5
score BAYES_80 3.5 # rpm –Uvh postfix-2.1.5-4.rhel3.i386.rpm
score BAYES_90 4.0
score BAYES_99 10.0
# network whitelist
В файле main.cf добавляем строки, осуществляющие
whitelist_from localhost поиск в заголовках письма по регулярному выражению,
сохраненному в /etc/postfix/header.regexp:
В скрипте запуска демона SpamAssassin меняем одну
строку, относящуюся к стартовым параметрам демона. main.cf

header_checks=regexp:/etc/postfix/header.regexp
/etc/init.d/spamd

# Set default spamd configuration. Затем создаем файл /etc/postfix/header.regexp следую-


SPAMDOPTIONS="-d -m 5 -u avpclient -x ↵ щего содержания:
-r /var/run/spamd/spamd.pid"

Особых изменений по сравнению с настройками для header.regexp


FreeBSD здесь не наблюдается (см. [1]), поэтому подробно /^X-Spam-Flag: YES/ REDIRECT spam@company.ru
останавливаться на данном вопросе мы не будем.
Нам осталось лишь настроить фильтры на нашем по- т.е. требуем, чтобы все письма, в заголовке которых стоит
чтовом сервере. флаг «X-Spam-Flag», перенаправлялись по адресу spam@
company.ru.
Postfix Соответственно стоит позаботиться, чтобы у нас в сис-
Каких-то особых хитростей в конфигурации данного почто- теме присутствовал пользователь с именем «spam» или на
вого сервера я описывать не буду. Статей на эти темы пре- существующего пользователя была сделана ссылка (alias).
достаточно и в журнале, и в глобальной Сети. Нам инте- Таким образом, весь почтовый трафик, идентифицирован-
ресны лишь моменты, связанные с использованием настро- ный как потенциальный спам, будет перенаправлен на оп-
енных нами почтовых фильтров. ределенный адрес. Вот вроде бы и все.
Для этого в файле main.cf необходимо включить фильтр
avcheck: Итоги
В этой статье я попытался поделиться секретами настрой-
main.cf ки почтовых фильтров на базе MTA Postfix. Статей на по-
content_filter=avcheck добные темы достаточно, однако некоторые из них слиш-
ком громоздки и используют очень большое количество
И добавить фильтры в файл master.cf: связок. Другие же слишком неполны. Я попытался обой-
тись минимальными средствами, чтобы получить макси-
master.cf мальный уровень защиты. Ведь чем проще система, тем
# check mail with spamd and kaspersky легче за ней следить. Тексты конфигурационных файлов
avcheck unix - n n - 5 pipe будут опубликованы на сайте журнала и на техническом
flags=q user=avpclient argv=/usr/bin/spamc ↵
-u avpclient -e /var/spool/filter/avp/avcheck форуме «Тринити».
-i /var/spool/filter/avp/infected/infected.ex2.ru -h Ok Хочется выразить огромную благодарность Сергею Та-
-d /var/spool/filter/avp/./tst -s AVP:/var/spool/ ↵
filter/avp/ctl/AvpCtl -f ${sender} раненко, системному администратору фирмы «Тринити»,
-S :1025 -- ${recipient} за интеллектуальную поддержку.
localhost:1025 inet n - n - - smtpd -o content_filter=
Ссылки и литература:
Теперь следует перезапустить Postfix и проверить ра- 1. Дмитриев Г. Почтовый сервер с защитой от спама и
ботоспособность почтового сервера. Если он не функцио- вирусов на основе FreeBSD. – журнал «Системный ад-
нирует, проверьте права доступа к каталогам, скрипты за- министратор», №1, январь 2005 г. – 68-73 с.
пуска, конфигурационные файлы. Приведенные мною при- 2. Большое количество полезной информации вы найде-
меры взяты с реального сервера. те на форуме http://www.3nity.ru.

№2, февраль 2005 29


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

РЕЖЕМ СПАМ
ДОПОЛНИТЕЛЬНЫЕ МЕТОДЫ
Идет бабулька по подворотням, видит два парня
третьего пинают, она cпрашивает:
– За что это вы его так, сынки?
– Бабка, да это спамер!
– А ну тогда по почкам его! По почкам!

ДЕНИС НАЗАРОВ
Знакомый анекдот? А в реальной жизни вы пробовали под- ников они не набирали. Пришлось разбираться дальше.
считать количество «спама», проходящего через ваш по- Проанализировав протоколы за месяц, я пришел к выводу,
чтовый сервер? Недавний аудит одной финансовой компа- что 20 из этих 22 Гб были просто «спамом». Решено было
нии показал, что через почтовый сервер прошло больше избавлять компанию от этой назойливой почты...
22 Гб почтового трафика в месяц. Я информировал об этом
начальство и со спокойной душой решил, что аудит окон- Итак, мы имеем в наличии
чен, но я ошибся, руководство компании уверяло меня в ! OpenBSD 3.6.
том, что это просто невозможно, т.к. раньше у них был го- ! Postfix 2.1.5 (считаю этот МТА одним из лучших благо-
раздо меньший объем почтового трафика, а новых сотруд- даря гибкости настройки и возможностям).

30
администрирование
! DrWeb 4.32 (отличный антивирус, никогда не подводил, /etc/rc.conf
идеально работает с OpenBSD). spamd_flags="" # for normal use: "" and see spamd-setup(8)
spamd_grey=YES # use spamd greylisting if YES
! Пользователи: примерно 500 человек.
Влючаем spamd и указываем на то, что мы хотим ис-
Задача: Обеспечить максимальную защиту от спама и пользовать Grey Listing.
вирусов, которые вам стремятся подсунуть по электронной
почте. Crontab
0 * * * * /usr/libexec/spamd-setup

Система В crontab для root прописываем запуск утилиты spamd-


Настройка системы начинается с файла /etc/rc.conf. С вер- setup таким образом, чтобы она выполнялась в начале каж-
сии 3.3 OpenBSD имеет встроенный механизм защиты от дого часа. Данная утилита скачивает из Интернета списки
спама, называемый spamd. Именно о настройке данного с IP-адресами спамерских релеев и автоматически зано-
компонента системы мы и поговорим. Что есть spamd? Это сит их в ваш «черный список».
демон, который пропускает через себя весь почтовый по-
ток и принимает решения – отдать ли письмо на обработку /etc/spamd.conf
all:\
«реальному» МТА или же отбросить, как «спам». :spamhaus:spews1:spews2:china:korea:whitelist:blacklist:
Как работает spamd? В его распоряжении имеются 2 или
# Mirrored from
3 списка (в зависимости от того, что вы выберете в конфигу- # http://spfilter.openrbl.org/data/sbl/SBL.cidr.bz2
рационном файле) – «черный список», «белый список», «се- spamhaus:\
:black:\
рый список». Последний («серый список») может быть от- :msg="SPAM. Your address %A is in the Spamhaus Block ↵
ключен, если вам нужен более жесткий контроль над спаме- List\n\
See http://www.spamhaus.org/sbl and\
рами. Демон spamd при запуске начинает слушать порт 8025 http://www.abuse.net/sbl.phtml?IP=%A for more details":\
на интерфейсе 127.0.0.1 (переопределить порт можно, отре- :method=http:\
:file=www.openbsd.org/spamd/SBL.cidr.gz
дактировав файл /etc/services). Затем при помощи PF
(OpenBSD Packet Filter) мы перенаправляем весь трафик с # Mirrored from http://www.spews.org/spews_list_level1.txt
spews1:\
25-го порта на порт 8025. И видим следующую картину: :black:\
:msg="SPAM. Your address %A is in the spews level 1 ↵
Trying 127.0.0.1... database\n\
Connected to localhost. See http://www.spews.org/ask.cgi?x=%A for more details":\
Escape character is '^]'. :method=http:\
220 bastion ESMTP spamd IP-based SPAM blocker;Tue Feb 15 12:57:50 2005 :file=www.openbsd.org/spamd/spews_list_level1.txt.gz

С виду похоже на приветствие обычного МТА, если не # Mirrored from http://www.spews.org/spews_list_level2.txt


spews2:\
считать строчку: IP-based SPAM blocker. :black:\
Вот теперь начинается самое интересное. Возвращяем- :msg="SPAM. Your address %A is in the spews level 2 ↵
database\n\
ся к спискам. See http://www.spews.org/ask.cgi?x=%A for more details":\
! «Черный список» – думаю все понятно. IP-адреса, пе- :method=http:\
:file=www.openbsd.org/spamd/spews_list_level2.txt.gz
речисленные тут, будут вежливо отвергнуты.
! «Белый список» – IP-адреса из этого списка будут иметь # Mirrored from http://www.okean.com/chinacidr.txt
china:\
доступ к «реальному» МТА напрямую, без прохождения :black:\
спам-фильтра. Подразумевается, что в этот список вы :msg="SPAM. Your address %A appears to be from China\n\
See http://www.okean.com/asianspamblocks.html ↵
вносите те IP-адреса, в которых уверены на 99,97%. for more details":\
! Grey List – динамический список. Приходящее письмо с :method=http:\
:file=www.openbsd.org/spamd/chinacidr.txt.gz
IP-адресом, не входящее ни в «черный список», ни в «бе-
лый список», будет помечено как «grey», и отвергнуто с # Mirrored from http://www.okean.com/koreacidr.txt
korea:\
ошибкой: «450. Temporary failure. Try again later.» Полу- :black:\
чая данный ответ, удаленный хост, отправивший вам :msg="SPAM. Your address %A appears to be from Korea\n\
See http://www.okean.com/asianspamblocks.html ↵
сообщение, должен будет снова попытаться переслать for more details":\
сообщение через некоторое время. Обычно интервал :method=http:\
:file=www.openbsd.org/spamd/koreacidr.txt.gz
ожидания может быть от 10 до 30 минут. Spamd следит
за этим и, получая письмо второй раз, передает его по-
# Whitelists are done like this, and must be added
чтовой системе, занося отправителя в «белый список». # to «all» after each blacklist from which you want
Зачем все это нужно? Получив в ответ ошибку, спамер # the addresses in the whitelist removed
whitelist:\
будет настойчиво пытаться впихнуть нам свое сообще- :white:\
ние. Возможно, даже выполняя множество попыток в :file=/var/mail/whitelist.txt
течение одной минуты. Spamd считает такие попытки. blacklist:\
При превышении определенного количества хост тут же :black:\
:msg="SPAM! Go fsck anyone else!":\
попадает в «черный список». :file=/var/mail/blacklist.txt
relaydb-black:\
Чтобы окончательно понять, как это работает, присту- :black:\
пим к конфигурированию. :msg="SPAM. Your address %A is in my relaydb list.":\

№2, февраль 2005 31


администрирование
:method=exec:\ ные файлы в /var/db, а также «привязывает» себя к пакет-
:file=relaydb -4lb: ному фильтру.
relaydb-white:\
:white:\ # ps ax | grep -i spa
:method=exec:\
:file=relaydb -4lw: 3123 ?? Is 3:52.08 spamd: (pf <spamd-white> update) (spamd)
17434 ?? I 17:44.88 /usr/libexec/spamd -g
Данный файл отвечает за обработку этих самых «чер- 11229 ?? I 0:01.86 spamd: (/var/db/spamd update) (spamd)
26245 ?? Is 0:00.00 /usr/libexec/spamlogd
ных», «белых» и «серых» списков. Я перечислил основные 23886 p0 I+ 0:00.00 grep -i spa
самые крупные «черные списки» для спамеров, вы можете
их смело использовать. Отлично. Спам-фильтр, основанный на проверке IP-ад-
Переходим к настройке ваших «черных» и «белых» спис- ресов, это, конечно, хорошо и будет работать в связке с
ков. любым МТА, но мы сделаем еще лучше.
Идем дальше.
blacklist:\
:black:\
:msg="SPAM! Go fsck anyone else!":\ Postfix
:file=/var/mail/blacklist.txt Я не буду рассказывать, почему Postfix такой замечатель-
ный и гибкий, и быстрый, и мощный – просто сразу начнем
Директива msg отвечает за то сообщение, которое мы его настраивать.
будем отправлять во время сессии, в том случае если хост
находится в «черном списке». Директива file определяет /etc/postfix/main.cf
#
путь для файла со списком IP-адресов, которые автоматом # Our stuff for coniguring Postfix goes here
при загрузке попадают в «черный список». #

# cat /var/mail/blacklist.txt Запрещаем использование команды VRFY для провер-


81.213.107.93 ки наличия пользователя в системе.
212.112.102.194
81.195.250.132 disable_vrfy_command = yes
212.19.145.86

Конфигурационный файл похож и для «белого списка», Обязываем удаленный хост здороваться с нами, а не
за исключением директивы msg – она отсутствует. сразу начинать нас забрасывать почтой. Софт, разработан-
ный для рассылки спама, зачастую не умеет работать с
# cat /var/mail/whitelist.txt smtp-командой helo.
192.168.0.0/24
smtpd_helo_required = yes
Важно.
Проверяем наличие «верного» имени хоста для отпра-
all:\ вителей. Иначе отказываем отправителю.
:spamhaus:spews1:spews2:china:korea:whitelist:blacklist:

Решение принимается на основе последнего совпаде- smtpd_helo_restictions = permit_mynetworks,


reject_invalid_hostname,
ния IP-адреса и записи в списках. reject_unknown_hostname,
Все. Основная конфигурация для spamd закончена. Так reject_non_fqdn_hostname
как мы перенаправляем письма в spamd при помощи PF
(Packet Filter), то конфигурируем сам фильтр: Проверяем наличе «верного» домена у отправителя,
иначе отказываем.
/etc/pf.conf
table <spamd> persist smtpd_sender_restrictions = reject_unknown_sender_domain,
table <spamd-white> persist check_sender_access hash:/etc/postfix/reject
rdr pass inet proto tcp from <spamd> to any port ↵
smtp -> 127.0.0.1 port 8025
rdr pass inet proto tcp from !<spamd-white> to any port ↵ Если же намеренно хотим отказать отправителю – за-
smtp -> 127.0.0.1 port 8025 носим его домен в файл /etc/postfix/reject и выполняем ко-
манду:
Тем, кто читал в журнале мои предыдущие статьи о па-
кетном фильтре операционной системы OpenBSD, все бу- # postmap /etc/postfix/reject
дет понятно. Для остальных поясню – фильтр перенаправля-
ет весь трафик с 25-го порта на порт 8025. Но если трафик Утилита postmap создаст хеш из файла /etc/postfix/reject,
на 25 порт идет с IP-адреса, который находится в «белом который будет использоваться самим Postfix для отказа в
списке», то PF пропускает трафик сразу «реальному» МТА. приеме почты.
Готово. Теперь осталось запустить spamd. Проверяем наличие «верного» имени домена для полу-
Можно запустить spamd вручную, но лучше будет – пе- чателей, отказываем всем, чьё имя домена не соответству-
резагрузить сервер, т.к. при запуске spamd создает нуж- ет требованиям FQDN, или не существует вообще.

32
администрирование
smtpd_recipient_restrictions = reject_invalid_hostname, Spam Received See:
reject_non_fqdn_sender, http://www.dnsbl.sorbs.net/lookup.shtml?195.2.80.59;
reject_non_fqdn_recipient, from=<user@domain.name>
reject_unknown_sender_domain,
to=<user@ourhost.com> proto=SMTP helo=<domain.name>
reject_unknown_recipient_domain,
reject_unauth_pipelining,
permit_mynetworks, Система работает, как часы, все четко и точно. Если
reject_unauth_destination, вам не нравится, как spamd распределяет IP-адреса отпра-
reject_rbl_client relays.visi.com,
reject_rbl_client relays.ordb.org, вителей по «черному» и «белому» списку, используем ути-
reject_rbl_client list.dsbl.org, литу spamdb.
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client dnsbl.void.ru,
reject_rbl_client blackholes.mail-abuse.org, # spamdb | more
reject_rbl_client relays.mail-abuse.org,
reject_rbl_client dul.mail-abuse.org, WHITE|12.111.30.74|||1105460517|1105466496|1108576943|2|0
reject_rbl_client relays.ordb.org, WHITE|129.215.166.64|||1106681432|1106683445|1109793856|2|0
reject_rbl_client blackholes.wirehub.net, WHITE|13.16.138.21|||1105587869|1105591107|1108701528|3|0
reject_rbl_client dynablock.wirehub.net, WHITE|130.126.232.30|||1106168619|1106170545|1109281002|6|0
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client list.dsbl.org, WHITE|134.130.3.130|||1107270887|1107274487|1110384920|2|0
reject_rbl_client opm.blitzed.org, WHITE|138.220.29.7|||1105954380|1105956190|1109066641|6|0
reject_rbl_client http.dnsbl.sorbs.net,
reject_rbl_client socks.dnsbl.sorbs.net,
reject_rbl_client misc.dnsbl.sorbs.net, Данный листинг показывает ваши «белый список» и
reject_rbl_client smtp.dnsbl.sorbs.net, Grey Lists. Если вы намеренно хотите добавить в таблицу
reject_rbl_client web.dnsbl.sorbs.net,
reject_rbl_client bl.spamcop.net, хост, помеченный как White, используем параметр -a, что-
reject_rbl_client dev.null.dk, бы удалить -d:
reject_rbl_client blackholes.mail-abuse.com,
reject_rbl_client relays.mail-abuse.com,
reject_rbl_client dialups.mail-abuse.com, spamdb –a xxx.xxx.xxx.xxx
reject_rbl_client relays.ordb.org, spamdb –d xxx.xxx.xxx.xxx
reject_rbl_client list.dsbl.org,
reject_rbl_client multihop.dsbl.org, Примечание. Добавить или удалить можно только IP-
reject_rbl_client argentina.blackholes.us,
reject_rbl_client brazil.blackholes.us, адреса, помеченные как White. Для добавления IP-адреса
reject_rbl_client china.blackholes.us, в ваш «черный список» отредактируйте файл, указанный в
reject_rbl_client cn-kr.blackholes.us,
reject_rbl_client hongkong.blackholes.us, директиве file файла /etc/spamd.conf.
reject_rbl_client japan.blackholes.us, Основная настройка закончена. Остаются «рюшечки».
reject_rbl_client korea.blackholes.us,
reject_rbl_client malaysia.blackholes.us, Спам это, конечно, вредная вещь, но вирусы, трояны и про-
reject_rbl_client mexico.blackholes.us, чее может принести вам еще больше проблем. Приступим.
reject_rbl_client nigeria.blackholes.us,
reject_rbl_client singapore.blackholes.us, Берем последнюю версию DrWeb на сайте http://download.
reject_rbl_client taiwan.blackholes.us, drweb.com/unix/OpenBSD+3.6 и оттуда же фильтр для Postfix.
reject_rbl_client thailand.blackholes.us,
reject_rbl_client turkey.blackholes.us Установка DrWeb очень проста. Нужно распаковать ар-
хив и расположить файлы в системе так, как это сказано в
Строчка reject_rbl_client relays.visi.com … добавляет так readme. Также вам потребуется наличие демонстрацион-
называемую RBL-проверку. Принцип тот же, что и у spamd. ного ключа для запуска антивируса в демо-режиме. Если
Хост проверяется в «черном списке» у всех добавленных понравится работа DrWeb (а я надеюсь, так и будет), то вы
нами «reject_rbl_client», и, если будет обнаружен там, пись- можете без проблем приобрести нормальный ключ.
мо отбрасывается, как спам. Переходим к Postfix. Тут тоже все довольно просто.
После данной настройки системы и Postfix в качестве
MTA в протоколах мы можем наблюдать следующее: /etc/postfix/master.cf

# tail /var/log/daemon Заменяем строчку:


Feb 15 12:10:22 bastion spamd[17434]: 66.94.237.32: connected (1/0)
Feb 15 12:10:23 bastion spamd[17434]: 66.94.237.32: smtp inet n - n - - smtpd
disconnected after 1 seconds.
Feb 15 12:13:29 bastion spamd[17434]: 222.67.37.40:
connected (103/100), lists: china на
Feb 15 12:13:32 bastion spamd[17434]: 222.67.37.40:
disconnected after 3 seconds. lists: china
smtp inet n - n - - ↵
Feb 15 12:13:53 bastion spamd[17434]: 63.209.157.52: smtpd -o content_filter=filter:dummy
connected (1/1), lists: spamhaus
Feb 15 12:21:11 bastion spamd[17434]: 63.209.157.52:
disconnected after 438 seconds. lists: spamhaus
и добавляем в конец файла:

Из протоколов видно, какой IP-адрес и сколько раз пы- filter unix - n n - - pipe
flags=R user=drweb argv=/usr/local/drweb/drweb-postfix ↵
тался соединиться и отправить нам спам. -f ${sender} -- ${recipient}

# grep –i spam /var/log/maillog Вот, в общем-то, и все. Отличная антивирусная защита


Feb 15 01:19:34 bastion postfix/smtpd[8447]: NOQUEUE: reject:
к вашему Postfix готова.
RCPT from domain.name[195.2.80.59]: 554 Service unavailable; На сим заканчиваю, надеюсь, описанные мной способы
Client host [195.2.80.59] blocked using dnsbl.sorbs.net; помогут отбить все почки вашим спамерам.

№2, февраль 2005 33


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

УНИВЕРСАЛЬНЫЙ ПРОКСИ-СЕРВЕР
– Извини, Пух, – сказала САВА. – Тигра сжевал все
провода от почтового сервера, и почта долго никак
не приходила...
– Провода, – подумал Пух злобно. – Носки вязать из
таких проводов.
Андрей Щербаков
«9600 бод и все-все-все...»

ВАЛЕНТИН СИНИЦЫН
В этой статье мы поговорим о протоколе SOCKS1. С его по- К слову сказать, название протокола не имеет ничего об-
мощью можно решать самые разные задачи: организовы- щего с упомянутыми в эпиграфе чулочными изделиями и яв-
вать защищенный доступ к службам, расположенным за ляется простым сокращением от «SOCK-et-S» – «гнезда»,
межсетевым экраном (firewall), скрывать свой истинный IP- или, в более привычном уху компьютерного специалиста пе-
адрес во время работы с недружелюбными сетевыми ресур- реводе – «сокеты». Термин был предложен создателями в
сами или реализовать универсальный прокси-сервер, под- качестве рабочего варианта, да так и прижился. Как извест-
держивающий любые протоколы прикладного уровня (HTTP, но, сокеты лежат в основе любого API, реализующего сете-
FTP, POP3/SMTP, ICQ и т. д.). К сожалению, несмотря на всю вое взаимодействие – UNIX, Winsock и т. п. Чтобы послать
простоту и богатство возможностей SOCKS, многие систем- данные по сети, приложению достаточно просто записать их
ные администраторы недостаточно хорошо знакомы с ним и в сокет, подобно тому, как это делается при сохранении ин-
не представляют, чем он может быть полезен. Хочется наде- формации в локальном файле. И в том, и в другом случае
яться, что после прочтения данного материала незаслужен- программе не приходится заботиться о происходящем «за
но забытый протокол займет достойное место в их арсена- кулисами». Дополнение пользовательских данных служеб-
ле. Сразу же оговоримся: все последующее изложение бу- ной информацией, разбивка на сегменты с их последующей
дет относиться к пятой версии SOCKS, SOCKS5. Предыду- инкапсуляцией в датаграммы и физическая отправка осу-
щая, четвертая версия (SOCKS4), все еще имеет хождение ществляются другими частями операционной системы – сте-
в Сети, однако ее возможности ограничены. ком TCP/IP и драйверами устройств, о которых приложению

1
Socks (англ.) – носки, чулочки.

34
администрирование
ничего не известно. Такое «разделение труда» позволяет как ICMP, используемый утилитами ping и traceroute, находит-
угодно изменять процедуру доставки сообщений при усло- ся ниже транспортного уровня, а потому соксификации, к
вии, что интерфейс прикладного программирования остает- сожалению, не поддается2.
ся постоянным. Именно эта особенность и лежит в основе Прежде чем отправлять какие-либо данные, клиент дол-
идеологии SOCKS. Основная задача данного протокола – жен пройти процедуру авторизации. Для этого он создает
внедрить в «нормальный» процесс обмена данными некое- TCP-соединение с SOCKS-сервером (стандартный порт –
го посредника, называемого SOCKS-сервером или SOCKS- 1080) и отправляет по нему специальное сообщение, со-
прокси. Когда клиент (поддерживающее SOCKS приложе- держащее кодовые номера поддерживаемых методов
ние: веб-браузер Mozilla, клиент ICQ Miranda IM и др., см. аутентификации (см. таблицу 1). SOCKS-сервер выбирает
ниже) желает отправить какую-либо информацию по сети, один из них по своему усмотрению и сообщает его номер
он устанавливает соединение не с реальным адресатом, а с клиенту. Как легко видеть, аутентификация может отсут-
SOCKS-сервером, который, в свою очередь, пересылает дан- ствова