Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
СЬ
www.samag.ru
ЛИ
Почему MS SQL медленно работает?
ЛИ Ищем причины
ТЯ Е
Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
КУ ВО
РО
танавливаем Symantec Antivirus 9.0
НИ НО
в корпоративной сети
СТ
Эффективно управляем
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО ЕО
АВ СЛ
Л
Л
ХА
ЗА Н
ПО
УЕ
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (095) 500-00-60
оглавление
3 ТЕНДЕНЦИИ СЕТИ
АДМИНИСТРИРОВАНИЕ 48 Малоизвестные подробности работы NAT
NAT, поистине, спасение для системного администра-
4 Вы всё ещё не используете WMI? тора, когда нужно быстро подключить к Интернету ло-
Часть 1 кальную сеть. Но всё ли вы о нём знаете?
Основы, необходимые для эффективного использова- Ильяс Кулиев
ния технологии Windows Management Instrumentation, ilia@kuliev.org
и набор рецептов по ее применению в реальных ус-
ловиях. БЕЗОПАСНОСТЬ
Константин Леонтьев
klеоnt@miсrоsоft.соm 54 Защищаем Windows-системы с помощью
CORE FORCE
12 Делаем резервное копирование CORE FORCE – яркий пример того, как можно защи-
конфигураций активного сетевого тить систему, не зная ничего об угрозе.
оборудования Сергей Яремчук
Пример сценария для резервного копирования, напи- grinder@ua.fm
санный на языке Perl.
Андрей Бирюков 60 Расширяем возможности MailScanner
mex_inet@rambler.ru Обзор дополнительных программ, позволяющих про-
смотреть статистику работы системы защиты элект-
16 Современный Linux-сервер: ронной почты. Сергей Яремчук
как планировать дисковые ресурсы grinder@ua.fm
Можно заниматься математическим предсказанием
увеличения объема информации в сети, а выгоднее 66 Судьба shell-кода на системах
использовать технологии хранения, которые позволят с неисполняемым стеком
вам оперативно масштабировать дисковое пространс- Отчаявшись справиться со своими же ошибками, ком-
тво и резервировать данные. пания Microsoft совместно с Intel и AMD реализова-
Алексей Барабанов ла технологию DEP, призванную покончить с удален-
alekseybb@mail.ru ными атаками, но этого не произошло и защиту уда-
лось обойти. Крис Касперски
22 Почтовый сервер на основе реляционной kk@sendmail.ru
СУБД. Оцените преимущества!
Используем DBMail – малоизвестный, но очень эффек-
тивный инструмент для построения сложных и масш- ПРОГРАММИРОВАНИЕ
табируемых почтовых систем, позволяющий приме-
нять реляционные СУБД в качестве серверного хра- 76 Переходим от VBScript к ASP и ASP.NET:
нилища почтовых сообщений вместо традиционных Безопасность и синтаксис
текстовых. Некоторые скрипты на VBScript настолько усложняют-
Евгений Прокопьев ся, что их трудно использовать без графического ин-
eugene_prokopiev@mail.ru терфейса. Оптимальное решение – создать веб-при-
ложение на ASP, ASP.NET.
32 Штопаем дыры в Ilohamail Иван Коробко
Доступ к электронной почте через веб-интерфейс обес- ikorobko@prosv.ru
печивает дополнительные удобства. Но мы не всег-
да задумываемся о потенциальных проблемах бе- IMHO
зопасности, а ведь даже такой безобидный пакет,
как Ilohamail, имеет несколько неприятных дыр. 82 Электронная почта как источник
Сергей Супрунов повышенной опасности
amsand@rambler.ru Не многие задумываются о том, к каким последствиям
может привести небрежное отношение к своему поч-
35 Строим мультидоменный почтовый товому ящику. Сергей Супрунов
сервер с защитой от вирусов и спама amsand@rambler.ru
Система полностью построена на свободном про-
граммном обеспечении: Exim + MySQL + TLS + AUTH + РЕТРОСПЕКТИВА
Courier-Imap + DSPAM + SquirrelMail + ClamAV.
Павел Семенец 84 Сломленная, но не сдавшаяся:
darkman@rusgate.org история операционной системы BeOS
Часть 2
44 Создаём кластер для PostgreSQL Дмитрий Мороз
Мощная СУБД, способная легко конкурировать с таки- akuji@list.ru
ми гигантами, как Oracle и MS SQL. Но, к сожалению,
в ней отсутствует возможность репликации. Что делать, 92 КНИЖНАЯ ПОЛКА
если такая опция необходима?
Андрей Тренин
my_zone@mail.ru 53, 65, 85 BUGTRAQ
Çâîíèòå, äîãîâîðèìñÿ!
;-)
тенденции
Вышла NetBSD 3.0 Основная цель русского сайта – работа над локализа-
В конце 2005-го года состоялся релиз новой версии по- цией vtiger CRM (уже сейчас можно скачать версию 0.82 ба-
пулярной операционной системы с открытым кодом – зовой русской локализации для vtigerCRM 4.2 в кодировке
NetBSD 3.0. UTF-8) и поддержка русскоязычных пользователей.
Среди ключевых отличий между NetBSD 2.0 и 3.0 мож-
но выделить: Covalent поддержала Geronimo
работа ОС на платформе iyonix; Компания Covalent, специализирующаяся на программном
порт xen начал поддержку Xen 2.0; обеспечении с открытым кодом, объявила о начале под-
поддержка технологии Enhanced SpeedStep Technology держки Geronimo – свободного сервера Java-приложений
(в i386); от организации Apache.
добавлено устройство ptm(4); Covalent уже распространяет серверное программное
программный watchdog timer – swwdog(4); обеспечение с открытым кодом, предназначенное для ра-
интеграция OpenBSD PF (Packet Filter) как альтернатив- боты как с главным продуктом Apache – одноименным веб-
ного фильтра пакетов; сервером, так и другими его свободными разработками,
появление псевдотерминальной файловой системы среди которых сервер приложений Apache Tomcat и сер-
ptyfs; вер веб-сервисов Apache Axis. Компания продает услуги
поддержка больших файлов (более 2 Гб) в ext2fs; по технической поддержке на базе подписки.
появление PAM; обновления в программном обеспече- По словам Марка Брюера (Mark Brewer), исполнитель-
нии. ного директора (CEO) Covalent, компания приняла реше-
ние расширить поддержку на Apache Geronimo в связи
OpenSUSE установили на 750 тысяч ПК с растущим спросом со стороны своих корпоративных за-
Представители компании Novell сообщили о первых успе- казчиков.
хах инициативы OpenSUSE.org: за первые 6 месяцев своего «Компании на протяжении определенного времени рас-
существования зафиксировано более 750 тысяч инсталля- сматривали различные пути ухода с серверного ПО с за-
ций бесплатной версии Linux-дистрибутива на ПК. крытым кодом. Мы заметили огромное количество людей,
Запуск веб-сайта проекта OpenSUSE состоялся в авгус- оставивших Weblogic от BEA Systems и WebSphere от IBM
те 2005 года. Тогда на выставке LinuxWorld в Сан-Францис- и мигрировавших на Tomcat», – пояснил Брюер.
ко и была официально анонсирована сама инициатива.
OpenSUSE предоставляет бесплатный доступ к свобод- Составил Дмитрий Шурупов
ным сборкам и Linux-релизам от Novell. Благодаря сообщес- по материалам www.nixp.ru
тву Open Source и разработчикам создается основа, в том
числе и для корпоративных продуктов компании.
Microsoft TechNet:
Bob Wells, Dean Tsaltas, Ethan Wilansky и Greg Stemp
http://www.microsoft.com/technet/scriptcenter/tools/wmimatic.mspx
Константин Леонтьев
4
администрирование
Для кого предназначается эта статья?
Вероятнее всего, вы уже немного знакомы с WMI на практи-
ке и используете некоторые готовые сценарии WMI для ре-
шения повседневных задач. Но, согласитесь, что эффек-
тивное использование технологии начинается только тог-
да, когда вы понимаете ее архитектуру и четко представ-
ляете весь спектр возможностей, которые эта технология
может вам предоставить.
Основная моя цель – кратко изложить основы, необхо-
димые для эффективного использования вами этой техно-
логии и представить вам набор рецептов по ее примене-
нию в реальных условиях.
Вы получите практический навык работы со всеми ос-
новными средствами WMI, выполнив несколько простых,
но весьма полезных упражнений. Я предполагаю, что вы не-
много знакомы с программированием на VBScript и с азами
языка SQL, а также имеете общее представление об объ-
ектно-ориентированном программировании. Обратите вни- Рисунок 1. Архитектура WMI
мание на готовые примеры кода, которые помогут вам в ва-
шей работе. этих процедур оформляется, как WMI Provider – специаль-
ная библиотека, являющаяся мостом между любым прило-
Что такое WMI? жением и ядром службы WMI.
Формально: аббревиатура WMI – это Windows Management Таким образом, WMI – это открытая унифицированная
Instrumentation (инструментарий управления Windows). библиотека (репозиторий) однотипных интерфейсов досту-
Из этого названия понятно, для чего создана и применяет- па к параметрам, настройки и свойствам различных сис-
ся эта технология. Стоит лишь добавить, что она давно пе- тем и их компонентов.
решагнула рамки управления только операционной систе- Архитектура WMI представлена на рис. 1.
мой Windows и позволяет контролировать множество дру- Многие производители программного и аппаратного
гих совместимых с ней приложений. обеспечения ведут разработку ПО в соответствии со стан-
По своей сути WMI – это расширенная и адаптирован- дартом WBEM. Как следствие, это ПО совместимо и с WMI,
ная компанией Microsoft реализация стандарта WBEM а значит, может управляться через единый и удобный ин-
(Web-Based Enterprise Management компании DMTF Inc [1]). терфейс.
В основе WBEM лежит идея создания универсального ин-
терфейса мониторинга и управления к различным систе- Классы, объекты, свойства и методы
мам и компонентам распределенной информационной сре- Поскольку WMI построена по объектно-ориентирован-
ды предприятия с использованием объектно-ориентирован- ному принципу, то все данные об операционной системе,
ной идеологии и широко распространенных веб-техноло- ее свойствах, управляемых приложениях и обнаружен-
гий представления информации: протоколов XML и HTTP. ном оборудовании представлены в виде объектов. Каж-
Стандарт WBEM является правопреемником стандарта DMI дый тип объекта описан классом, в состав которого входят
(Desktop Management Interface). свойства и методы. Определения классов описаны в MOF-
В основе структуры представления данных в стандарте файлах, а объекты этих классов с заполненными свойс-
WBEM лежит CIM (Common Information Model – модель ин- твами и доступными методами при их вызове возвраща-
формации общего типа), реализующая объектно-ориен- ются WMI-провайдерами. Управляет созданием и удале-
тированный подход к представлению компонентов систем нием объектов, а также вызовом их методов служба CIM
как классов со своим набором свойств и методов, а также Object Manager.
принципов наследования. Получается, что если мы хотим управлять настройками
Основное средство для описания новых элементов мо- сетевого адаптера, то мы должны запросить у CIM Object
дели CIM – это синтаксис языка Managed Object Format Manager экземпляр объекта нужного нам сетевого адап-
(MOF), который является текстовым и легко понятным че- тера (забегая вперед, скажу, что этот объект принадле-
ловеку. Таким образом, любое приложение или драйвер жит классу Win32_NetworkAdapterConfiguration) и вызвать
в операционной системе, которая поддерживает стандарт нужные нам методы. В частности, для того чтобы обновить
WBEM, может добавить к системной модели CIM свой на- аренду адреса на DHCP сервере, достаточно вызвать ме-
бор классов. Такое расширение модели CIM позволяет лег- тод RenewDHCPLease экземпляра объекта Win32_Network
ко интегрировать в единую систему мониторинга и управ- AdapterConfiguration.
ления все новые и новые приложения. Для этой интегра-
ции приложение должно лишь зарегистрировать свои клас- Обзор средств работы с WMI
сы в существующей модели CIM и обеспечить стандартные для администратора
вызовы встроенных процедур для создания объектов этих Начнем фактическое знакомство с WMI с обзора ути-
классов и наполнения их свойствами и методами. Набор лит, которые позволяют вам работать с WMI на ОС се-
мейства Windows. Условно разделим mofcomp.exe – компилятор MOF- Tweakomatic Utility – у тилита
этот набор утилит на поставляемые файлов. Служит для расширения в формате Hyper Text Application
с операционной системой по умол- репозитория WMI и тонких опера- (HTA). Содержит множество на-
чанию и набор утилит, которые пот- ций с библиотекой классов WMI, строек системы, обычно доступных
ребуется скачивать с сайта компа- а также для «ремонта» нарушен- через утилиты-твикеры (например,
нии Microsoft. ного репозитория. Windows XP Power Toys TweakUI),
К первой категории относятся сле- для которых позволяет сгенериро-
дующие утилиты: Ко второй категории средств для вать WMI-скрипты для их автомати-
wmimgmt.msc – оснастка консоли работы с WMI, которые требуется до- ческой настройки. Весьма полезна
MMC, позволяющая в целом управ- полнительно устанавливать, отно- при разработке сценариев автома-
лять самой системой WMI на вы- сится: тизированной установки и настрой-
бранном компьютере. WMI Code Creator 1.0 – очень удоб- ки [5].
Winmgmt.exe – консольная ути- ная и полезная утилита для созда-
лита управления WMI. Выполняет ния готовых сценариев WMI. Под- Все утилиты, относящиеся ко вто-
аналогичные действия, что и кон- держивает языки Visual Basic Script, рой категории, можно бесплатно
соль MMC wmimgmt.msc. Кроме то- C# и Visual Basic .NET [2]. скачать с сайта компании Microsoft
го, является исполняемым файлом WMI Administrative Tools – комп- по ссылкам, перечисленным в кон-
сервиса WMI в системе. Для запус- лект средств в составе: WMI CIM це статьи. Полезно будет так же посе-
ка из консоли используется с опци- Studio, WMI Event Registration, WMI тить раздел загрузки средств работы
ей /exe (winmgmt.exe /exe). Event Viewer и WMI Object Browser). со скриптами [6] и общий раздел за-
Wbemtest.exe – графическая ути- Удобная среда разработки и тес- грузки средств работы с WMI [7].
лита для интерак тивной рабо- тирования WMI-классов и мето- Для того чтобы рассмотреть воз-
ты с WMI. Удобна для тестирова- дов [3]. можности и особенности всех средств
ния классов и методов, просмотра Scriptomatic 2.0 – мастер в фор- работы с WMI, которые перечисле-
свойств и т. п. мате Hyper Text Application (HTA). ны выше, не хватит и целого журна-
Wmic.exe – консольная утилита для Удобна д ля создания готовых ла, поэтому мы кратко остановимся
вызова объектов и методов WMI сценариев и на различных скрип- на некоторых из них, на мой взгляд,
(WMI Console) – присутствует толь- товых яз ыка х. Под держив ает наиболее полезных и (или) наибо-
ко в Windows XP и Windows Server Visual Basic Script, Perl, Java Script лее употребимых. Собственно, к та-
2003. и Python [4]. ким я отношу следующие утилиты:
6
администрирование
WBEMTEST, WMIC, WMI Administrative ке экземпляров операционных сис-
Tools и довольно новую, но весьма по- тем. В открывшемся окне свойств эк-
лезную и удачную утилиту WMI Code земпляра операционной системы най-
Creator 1.0. ти свойство («Property») с названием
Надо отметить, что существуют «Name», как это показано на рис. 7.
и другие утилиты и средства рабо- И дважды кликнуть по нему кур-
ты с WMI, в том числе разработанные сором мыши. В открывшемся окне ре-
не компанией Microsoft, однако формат дактора свойств, которое, показано
статьи не позволяет нам на них оста- на рис. 8, скопировать отображаемое
навливаться сколько-нибудь подроб- значение в буфер обмена. Оно приго-
но. Об одном из этих средств я считаю дится нам в дальнейшем.
своим долгом хотя бы упомянуть в этой Далее закройте все окна, кроме Рисунок 8. Окно со значением свойства
Name экземпляра объекта класса
статье – это ADSI Scriptomatic [8], поз- основного окна программы wbemtest. Win32_OperatingSystem
воляющее создавать скрипты для уп- В блокноте отредактируйте строку из
равления службой каталогов Microsoft буфера обмена следующем образом:
Active Directory. Заключите строку в кавычки.
Все примеры в этой статье про- До первых кавычек добавьте сле-
тестированы на операционной систе- дующий текст: «Win32_Operating-
ме Windows XP Service Pack 2, одна- System.Name=».
ко должны также корректно работать Замените все одинарные обратные Рисунок 9. Окно вызова метода
и на более ранних версиях OS Windows слеши на двойные. для экземпляра объекта класса
Win32_OperatingSystem утилиты WBEMTEST
вплоть до Windows 2000. Если вам пот-
ребуется использовать WMI на более В итоге у вас должна получиться
ранних версиях ОС Windows, то вам примерно следующая строка (в зави-
необходимо будет установить WMI симости от версии ОС и логического
Core Components 1.5 [9] и последнюю диска, куда она установлена):
версию Windows Scripting Host [10, 11]
на эти ОС. Win32_OperatingSystem.Name= ↵
"Microsoft Windows XP ↵
Professional|C:\\WINDOWS|\\ ↵
Знакомимся с утилитой Device\\Harddisk0\\Partition1"
WBEMTEST
Для того чтобы прямо сейчас посмот- Теперь давайте выполним следую-
реть, какой набор классов определен щее упражнение с утилитой wbemtest.
в репозитории WMI на вашем персо- В уже открытом окне утилиты wbemtest
нальном компьютере, достаточно за- нажмем кнопку «Execute Method…»
пустить утилиту wbemtest.exe и уста- и в окошко «GetObjectPath» вста-
новить флажок «Enable All Privileges», вим строку, которую мы подготови-
как показано на рис. 2. ли в блокноте. В появившемся окне
Далее нажать кнопку «Connect…», (см. рис. 9) вызова метода экземпля- Рисунок 10. Окно подключение
к пространству имен WMI с явным
в поле пространства имен вписать root\ ра объекта выберем метод Reboot и на- указанием имени сервера
CIMv2, как это показано на рис. 3, и на- жмем кнопку «Execute!».
жать кнопку «Connect». Поздравляю, вы только что отпра- нее! Для подключения к удаленной ма-
Затем нажмите кнопку «Enum вили свою операционную систему в пе- шине в окне подключения достаточно
Classes…», выберите «Recursive», не резагрузку, используя WMI. Если вы в поле Name Space указать строку ви-
заполняйте поле суперкласса и на- вдруг получили вместо перезагруз- да \\<computername>\root\CIMv2 и ука-
жмите «Ok». В результате вы получи- ки сообщение об ошибке 0x80041062 зать учетные данные пользователя,
те список классов, определенный в ва- «Privilege not held», то это означает, что обладающего необходимыми права-
шем репозитории WMI, в пространстве вы забыли установить опцию «Enable ми (например, Administrator). Пример
имен CIMv2. Найдите среди всех класс All Privileges» до подключения к репо- этого показан на рис. 10.
с названием Win32_OperatingSystem зиторию WMI. Не пробуйте подключаться к ло-
(CIM_OperatingSystem), как это пока- Теперь в довершение следует ска- кальной машине, на которой запра-
зано на рис. 6. зать (пока ваш Windows перезагру- шиваются объекты и методы WMI (на-
Дважды щелкнув курсором мы- жается), что при подключении к про- пример, на той, на которой сейчас вы-
ши по классу Win32_OperatingSystem, странству имен WMI вы можете под- полняется утилита wbemtest), исполь-
посмотреть его свойства. Пример того, ключаться не только на локальной зуя отличные от текущих учетные дан-
как это выглядит, показан на рис. 5. машине, но и как следует из обзора ные – все равно это у вас не получит-
Далее нажать кнопку «Instances» WMI к любой удаленной. Главное, об- ся. Это специальная защита для повы-
и в открывшемся окне дважды щелк- ладать на той машине необходимы- шения локальной безопасности WMI,
нуть курсором мыши по строке в спис- ми правами. Но об этих правах позд- но о ней мы поговорим позже.
wmic process list brief | find "cmd.exe" Что за конструкция where и как еще ее можно исполь-
8
администрирование
зовать, мы разберем чуть позже в разделе «Язык запро-
сов WQL».
Для того чтобы подключиться к репозиторию WMI
на другом компьютере и выполнять все те же действия,
при условии, что наша учетная запись обладает достаточ-
ными правами, нам всего лишь нужно немного модифи-
цировать нашу командную строку. Теперь наши команды
должны выглядеть примерно так:
CSPRODUCT
Computer system product information
Win32_ComputerSystemProduct SELECT * FROM Win32_LogicalDisk ↵
from SMBIOS WHERE FileSystem IS NULL
SELECT * FROM Win32_LogicalDisk ↵
DATAFILE DataFile Management CIM_DataFile
WHERE FileSystem IS NOT NULL
DCOMAPP DCOM Application management WIN32_DCOMApplication SELECT * FROM Win32_LogicalDisk ↵
WHERE FileSystem = "NTFS"
DESKTOP User’s Desktop management WIN32_DESKTOP SELECT * FROM Win32_DiskDrive ↵
WHERE Partitions < 2 ↵
DESKTOPMONITOR Desktop Monitor management WIN32_DESKTOPMONITOR OR SectorsPerTrack > 100
DEVICEMEMORYADDRESS Device memory addresses management Win32_DeviceMemoryAddress SELECT * FROM Win32_LogicalDisk ↵
WHERE (Name = "C:" OR ↵
DISKDRIVE Physical disk drive management Win32_DiskDrive Name = "D:") AND FreeSpace > ↵
2000000 AND FileSystem = "NTFS"
DISKQUOTA Disk space usage for NTFS volumes Win32_DiskQuota SELECT * FROM Win32_NTLogEvent ↵
Direct memory access (DMA) channel WHERE Logfile = 'Application'
DMACHANNEL
management
Win32_DMAChannel SELECT * FROM Meta_Class ↵
WHERE __Class LIKE %Win32%
ENVIRONMENT System environment settings management Win32_Environment SELECT * FROM __InstanceCreationEvent ↵
WHERE TargetInstance ISA ↵
FSDIR Filesystem directory entry management Win32_Directory "Win32_NTLogEvent" GROUP ↵
GROUP Group account management Win32_Group WITHIN 600 BY
TargetInstance.SourceName HAVING ↵
IDECONTROLLER IDE Controller management Win32_IDEController NumberOfEvents > 25
IRQ Interrupt request line (IRQ) management Win32_IRQResource
Вы можете поупражняться в запро-
Providesaccess to the jobs scheduled using
JOB
the schedule service
Win32_ScheduledJob сах WMI с помощью уже хорошо извес-
тной вам утилиты WBEMTEST, нажав
Management of system services that define
LOADORDER Win32_LoadOrderGroup кнопку «Query» в ее главном окне.
execution dependencies
LOGICALDISK Local storage device management Win32_LogicalDisk Теперь вспомните утилиту команд-
LOGON LOGON Sessions Win32_LogonSession
ной строки WMIC, функции которой мы
разбирали немного выше. В ее синтак-
MEMCACHE Cache memory management WIN32_CACHEMEMORY
сисе также могут использоваться WQL-
System memory management
MEMLOGICAL
(configuration layout and availability of memory)
Win32_LogicalMemoryConfiguration запросы для удобства работы с набо-
Computer system’s physical memory
рами объектов одного класса. Чтобы
MEMPHYSICAL Win32_PhysicalMemoryArray использовать уже имеющиеся и про-
management
NETCLIENT Network Client management WIN32_NetworkClient веренные WQL-запросы (большинство
Network login information (of a particular user)
из них удобнее всего проверять утили-
NETLOGIN Win32_NetworkLoginProfile
management той WBEMTEST), из командной строки
Protocols (and their network characteristics) достаточно отбросить у WQL-запроса
NETPROTOCOL Win32_NetworkProtocol
management первую часть: «select * from». Затем за-
NETUSE Active network connection management Win32_NetworkConnection менить имя класса на его алиас (псев-
NIC Network Interface Controller (NIC) management Win32_NetworkAdapter доним) из таблицы 1 и при необходи-
NICCONFIG Network adapter management Win32_NetworkAdapterConfiguration мости добавить после запроса вызов
NTDOMAIN NT Domain management Win32_NTDomain метода, формат вывода списка или за-
NTEVENT Entries in the NT Event Log Win32_NTLogEvent
прос свойства объекта. Примеры того,
что при этом получается, я уже приво-
NTEVENTLOG NT eventlog file management Win32_NTEventlogFile
дил выше.
Management of common adapter devices built
ONBOARDDEVICE
into the motherboard (system board)
Win32_OnBoardDevice Если же среди псевдонимов в таб-
OS Installed Operating System/s management Win32_OperatingSystem
лице 1 нет нужного вам класса, то есть
два пути решения. Первый – добавить
PAGEFILE Virtual memory file swapping management Win32_PageFileUsage
новый псевдоним для нового класса.
PAGEFILESET Page file settings management Win32_PageFileSetting
Этот путь хорош, если с этим классом
Management of partitioned areas of a physical из WMIC вы будете работать только
PARTITION Win32_DiskPartition
disk
на этом компьютере. Если же вы хоти-
PORT I/O port management Win32_PortResource
те использовать команду wmic на раз-
PORTCONNECTOR Physical connection ports management Win32_PortConnector
ных компьютерах, в том числе и на тех,
PRINTER Printer device management Win32_Printer на которых такой алиас вы не опреде-
10
администрирование
ляли, то можно воспользоваться вто- Таблица 1. Список псевдонимов утилиты WMIC и соответствие их классам WMI (продолжение)
рым способом. Второй способ позво- Псевдоним Описание Имя клсса WMI
ляет явно использовать настоящее PRINTERCONFIG Printer device configuration management Win32_PrinterConfiguration
имя класса WMI при обращении к не- PRINTJOB Print job management Win32_PrintJob
му с помощью WMIC. Для этого исполь-
PROCESS Process management Win32_Process
зуйте следующий синтаксис:
PRODUCT Installation package task management Win32_Product
wmic path Win32_LogicalDisk ↵ QFE Quick Fix Engineering Win32_QuickFixEngineering
WHERE FileSystem='NTFS' ↵
get /value QUOTASETTING Setting information for disk quotas on a volume Win32_QuotaSetting
Information that will be gathered from memory
RECOVEROS Win32_OSRecoveryConfiguration
when the operating system fails
На этом хочу прервать изложение пер- SCSICONTROLLER SCSI Controller management Win32_SCSIController
вой части и, предваряя выход очеред- SERVER Server information management Win32_PerfRawData_PerfNet_Server
ного номера, журнала сообщить вам, SERVICE Service application management Win32_Service
краткое содержание следующей час- SHARE Shared resource management Win32_Share
ти статьи. Management of theelements of a software
SOFTWAREELEMENT Win32_SoftwareElement
Мы обсудим написание сценари- product installed on a system
ев с использованием WMI и WSH. Бу- Management of software product subsets
SOFTWAREFEATURE Win32_SoftwareFeature
дут разобраны особенности исполь- of SoftwareElement
зования WMI в скриптах, из тех, кото- SOUNDDEV Sound Device management WIN32_SoundDevice
рые обычно вызывают наибольшие за- Management of commands that run automatically
STARTUP Win32_StartupCommand
труднения у людей, начинающих рабо- when users log onto the computer system
тать с этой технологией. К таким темам SYSACCOUNT System account management Win32_SystemAccount
я отношу: построение moniker string, ис- SYSDRIVER
Management of the system driver for a base
Win32_SystemDriver
service
пользование различных пространств
имен WMI, связка WMI и COM, исполь- SYSTEMENCLOSURE Physical system enclosure management Win32_SystemEnclosure
Андрей Бирюков
Конфигурации активного сетевого оборудования, также как и данные, используемые
различными приложениями, нуждаются в резервном копировании. Предлагаем вам пример
сценария для резервного копирования, написанный на языке Perl.
Н
а сегодняшний день резервное гонезависимая память маршрутизато- Для решения поставленной задачи мы
копирование данных стало не- ров и коммутаторов более устойчива воспользуемся небольшим сценари-
отъемлемой частью ежеднев- к сбоям в энергосети и что вполне до- ем на языке Perl, который будет запус-
ных задач, выполняемых системны- статочно, скажем, раз в месяц делать каться по расписанию, удаленно под-
ми администраторами. И это неудиви- вручную копию рабочей конфигура- ключаться к каждому маршрутизато-
тельно, так как убытки, которые ком- ции своего оборудования и сохранять ру или коммутатору по протоколу Telnet
пания может понести в случае потери ее на TFTP-сервер [1]. или SSH и копировать рабочую конфи-
данных или вынужденного простоя, Однако в случае динамически из- гурацию на TFTP-сервер. Для примера
зачастую намного больше стоимости меняющейся конфигурации сети такой в статье будут использоваться коман-
оборудования, используемого для хра- подход будет, мягко говоря, не слиш- ды Cisco IOS, хотя ничто не мешает вам
нения данных. Существует масса раз- ком хорош. Например, на маршрути- использовать активное сетевое обору-
личных программных продуктов, поз- заторах телекоммуникационной компа- дование других фирм, предварительно
воляющих осуществлять автомати- нии, где настройки интерфейсов, ста- настроив на нем удаленный доступ че-
ческое резервное копирование дан- тические маршруты или access-list мо- рез Telnet или SSH.
ных практически в любом формате, гут меняться ежедневно. Осуществлять
от «снимка» состояния операционной резервное копирование вручную в та- Реализация
системы до бэкапа баз данных. Одна- кой сети очень сложно, особенно если Итак, приступим к программной реали-
ко все многообразие применимо лишь количество маршрутизаторов и ком- зации. В качестве операционной сис-
к программным решениям. С аппарат- мутаторов больше пяти. В такой ситу- темы используется FreeBSD, хотя с тем
ными решениями, в частности, с ак- ации нам необходимо осуществлять же успехом можно все описанное да-
тивным сетевым оборудованием, де- ежедневное, автоматическое резерв- лее реализовать и на Linux-клонах. За
ло обстоит немного сложнее. Конеч- ное копирование рабочих конфигура- основу нашего сценария, используе-
но, многие могут возразить, что энер- ций активного сетевого оборудования. мого для выполнения удаленных ко-
12
администрирование
манд, возьмем пример кода с сайта CPAN.org [2]. Данный
ресурс содержит массу примеров кода на языке Perl и бу-
дет весьма полезен при написании собственных сценариев.
Если на вашем сервере нет модуля Telnet.pm, то его мож-
но скачать по адресу http://search.cpan.org/CPAN/authors/
id/J/JR/JROGERS/Net-Telnet-3.03.tar.gz и установить в со-
ответствии с находящейся в архиве инструкцией. При от-
сутствии данного модуля вы просто получите сообщение
об ошибке при выполнении сценария. Сценарий, устанав-
ливающий соединение по протоколу Telnet, выглядит сле-
дующим образом:
14
администрирование
Современный Linux-сервер:
как планировать дисковые ресурсы
Алексей Барабанов
От того, насколько правильно будет учтен и cпрогнозирован рост данных, размещенных
на создаваемом сервере, зависит в самом прямом смысле срок «жизни» самого сервера!
Но можно не заниматься математическим предсказанием увеличения объема информации
в сети, а использовать технологии хранения, допускающие оперативное масштабирование
и резервирование.
Б
ольшинство из представленных «страдания молодого Вертера», ес- вое понятно, второе обосную. Посколь-
далее положений и рекоменда- ли каждый дистрибутив, и SuSE в том ку все, что далее описывается, отно-
ций прошли многолетнюю про- числе, предлагает в процессе установ- сится к области профессиональной
верку практикой. Но тем не менее ки выполнить автоматическое разби- деятельности, то всякая работа име-
не надо все изложенное считать же- ение? Как определить критерии оцен- ет денежный эквивалент, и экономия
сткой схемой. Это всего лишь одно ки правильности решения о типе и спо- средств принимается одним из глав-
из мнений. Воспринимите статью как собе обустройства дисковых ресурсов ных критериев любой профессиональ-
попытку упорядочить подход и поиск сервера? Определим нашу цель так: ной деятельности. Так и здесь. Модер-
общих путей решения проблемы пла- правильным будет такой способ, ко- низация производится не из-за вдруг
нирования дисковых ресурсов. И зада- торый в дальнейшем цикле эксплуа- возникшей тяги системного админис-
ча эта, ранее в эпоху магнитных дисков тации сервера позволит без привле- тратора к новизне, а потому что в ста-
типа RK для PDP-11 решаемая всегда чения избыточных ресурсов провес- рой версии или на старом оборудова-
очень просто и однозначно, а сейчас – ти как комплекс работ по повыше- нии сервер далее работать не может.
уже с привлечением всего разнообра- нию отказоустойчивости, по увеличе- То есть несоответствие стало столь
зия современных технологий, далее нию емкости, так и, наконец, провес- существенным, что решено потратить
будет лишь эволюционировать в слож- ти модернизацию операционной сис- средства на модернизацию. Ну а если
ности и многообразии подходов. Поэ- темы или миграцию сервера на иное так, то существенные изменения поз-
тому эпитет «современный» в назва- оборудование. Это, так сказать, про- воляют считать сервер после модер-
нии надо читать как соответствующий грамма-максимум. Совсем не обяза- низации уже другим и соответствен-
настоящему уровню развития. Выбе- тельно, что все это предстоит. В моей но этому начать отсчет нового цикла,
рем для работы универсальный дист- практике много таких серверов, кото- тем более что и операционная систе-
рибутив, например, SuSE Linux 10.0 вы- рые работают до полного износа обо- ма, и оборудование сервера сами по
пуска конца 2005 года, который и при- рудования (более 5 лет) без каких-ли- себе имеют жизненный цикл, который
мем за эталон современности. Далее бо модернизаций. Но целью выбора оп- нецелесообразно превышать.
рассмотрим, что нам сейчас предлага- тимальной структуры дисковой систе- Во-вторых, зачем нужно увеличе-
ется и какой сложности выбор предсто- мы поставим именно удовлетворение ние отказоустойчивости? Почему при
ит сделать каждому при создании но- перечисленных критериев. Проком- вводе сервера в строй это не счита-
вого сервера. ментируем их. ли необходимым, а вот со временем
Во-первых, что такое цикл эксплу- вдруг озаботились? Будем считать,
Постановка задачи атации сервера. Будем считать тако- что с увеличением срока эксплуата-
Прежде всего зададимся вопросом, вым срок от введения сервера в строй ции возрастает объем внутренних дан-
в чем цель действий, производимых до его демонтажа, или до модерниза- ных сервера и тем самым увеличива-
в процессе разметки дисковых ус- ции (upgrade) операционной системы ется его информационная и абсолют-
тройств. Нужны ли вообще все эти или аппаратного обеспечения. Пер- ная ценность.
16
администрирование
В-третьих, после вышесказанного совершенно очевид-
но, что возрастание внутренних данных приводит к необхо-
димости увеличения емкости хранения рано или поздно.
И, в-четвертых, модернизация сервера или его мигра-
ция на иное оборудование является неотвратимой законо-
мерностью, если только компания-заказчик, где сервер ра-
ботает, не предполагает разориться вместе с завершением
эксплуатации сервера. Поэтому задумываться о том, какой
ценой будет производиться модернизация, надо сразу при
«закладке» сервера.
Перечислив положительные качества, не забудем упо-
мянуть и отрицательные – те, что обозначены в формули-
ровке как «избыточные ресурсы». Избыточным будем счи-
тать все, что привлекается лишь для совершения самой опе-
рации увеличения, улучшения или модернизации. Напри-
мер, если для увеличения дискового пространства потре- Рисунок 1. Схема иерархии уровней представления дисковых
данных
буется не только подключить новый диск, но еще и придет-
ся выкинуть старый, то такой нескомпенсированный обмен DRB/iSCSI – сетевой диск по соответствующей техно-
надо считать «избыточным ресурсом». Также избыточны- логии;
ми будем считать все траты на подобные операции. Напри- EXT3... – уровень представления, соответствующий
мер, если модификацию можно осуществить без перерыва файловым системам;
в работе, то это идеал, в противном случае – нет. А на прак- NFS... – уровень представления, соответствующий се-
тике там, где обсуждаются не идеальные, но реальные ус- тевым файловым системам и протоколам, используе-
ловия, чем меньше ресурсов потребуется для проведения мым для организации сетевого доступа к файлам.
операции, тем лучше.
Резюмируем вышесказанное. Во всех технологических Каждый окрашенный прямоугольник отделяет реги-
выборах следует предпочитать те способы и методы, кото- он, включающий технологии соответствующей категории.
рые снизят стоимость дальнейших преобразований и мо- Их три:
дификаций. Вот такой получается «восточный дракон», ку- SAS – устройства, физически подключаемые к серве-
сающий собственный хвост. ру;
Теперь, когда цель ясна и определена, обсудим сами SAN – блочные устройства, подключаемые по сетевым
устройства хранения и те технологии, что предлагаются интерфейсам;
на выбор «из коробки» при сегодняшнем уровне развития NAS – файловые системы, доступные через сеть.
в SuSE Linux 10.0.
Все перечисленные на схеме технологии могут быть за-
Иерархия уровней представления действованы в пределах одного серверного блока или, точ-
дисковых данных нее, одного хоста. Безусловно, необходимость их исполь-
Современный Linux-сервер является многофункциональ- зования должна диктоваться областью применения. И вот
ным устройством, работающим в сети. Если абстрагиро- здесь для нашего обсуждения будет важно то, какую гиб-
ваться от его прикладного назначения и попытаться пред- кость в настройке и модернизации обеспечивают все изоб-
ставить весь спектр возможных уровней и способов досту- раженные элементы. Для этого рассмотрим подробнее
па к данным, то получится большая схема, напоминающая ту же схему, но с точки зрения операций и их взаимодейс-
многослойный пирог. Иерархию сетевого доступа к данным твия по пути эскалации технологических уровней.
тоже принято изображать в виде многоуровневой схемы ин- Будем далее исходить из предположения, что все ис-
капсуляции. Только если сетевая модель уже давно канони- пользуемые технологии применяются к одному физичес-
зирована, то схема вложенности уровней доступа к диско- кому дисковому устройству. Это не исключает в дальней-
вым данным не имеет привычного вида, что допускает воль- шем использования дополнительных дисков, но задает бо-
ности в ее представлении. Итак, если все доступные в SuSE лее жесткие рамки вариантов выбора. Например, под MD
Linux 10.0 технологии попытаться уложить в единую схему, в дальнейшем будет пониматься исключительно RAID1.
отражающую их взаимосвязь и взаимодействие, то полу-
чится нечто вроде изображенного на рис. 1. Диаграммы переходов
Прокомментирую эту схему. Хотя все аббревиатуры Для того чтобы определить ключевые, или, в нашей терми-
и обозначения являются традиционными в Linux, расшиф- нологии, «дорогостоящие» технологические элементы, пос-
рую их: троим диаграмму переходов в процессе возможных настро-
DISK – физическое дисковое устройство; ек от самого нижнего уровня DISK до самого верхнего NFS...
MD – так называемый multiple device или программный Полученная диаграмма представлена на рис. 2.
RAID; Узлы соответствуют технологическим уровням пред-
LVM – виртуальный диск по технологии Logical Volume ставления данных, а стрелки обозначают возможные на-
Manager; правления в процессе настройки сервера. Нумерация уз-
Таблица операций
Попробуем поместить все данные из диаграмм в таблицу 1.
Слева в столбце 1 – исходное состояние, сверху в ряду 1 –
конечное, в ячейке на пересечении соответствующих состо-
яний указана операция, переводящая начальное состояние
в конечное. Таким образом, в ячейки левой нижней части
таблицы, разделенной диагональю, попадут операции пе-
ределок и их стоимости, а в ячейки правой верхней части
Рисунок 3. Диаграмма переделок
попадут операции настроек.
Теперь в этой таблице голубым цветом по вертикали,
лов проставлена в порядке самого длинного маршрута на- то есть в целевых столбцах, выделим технологии, допус-
строек. Все очевидно и не нуждается в пояснениях. А вот те- кающие оперативное масштабирование, и салатным, так-
перь повернем стрелки в обратном направлении! Предста- же по вертикали, – те технологии, что позволяют организо-
вим, что некий шаг настройки оказался ошибочным, но ре- вать горячее резервирование по схеме RAID.
шение о его отмене пришло лишь в процессе эксплуатации, Если исходить из условия, что необходимо обеспечить
спустя некоторое время. Например, в процессе установки масштабирование емкостей в оперативном порядке, то вы-
были последовательно пройдены этапы 1 DISK, 5 EXT3..., бор однозначен. Поскольку в предыдущем разделе уже был
6 NFS.... И спустя некоторое время появилась необходи- сделан вывод о том, что технология LVM единственная, ко-
мость перевести работающую систему под LVM. То есть торая требует решения о ее применении на самом раннем
надо последовательно перевести сервер по диаграмме на- этапе, то можно сказать, выбор сделан – LVM непременно
строек 6 NFS..., 5 EXT3... и затем в узел 3 LVM. После чего надо использовать.
снова в поступательном движении по диаграмме настро- Далее, у нас два кандидата для возможного увеличения
ек вернуться в узел 6 NFS..., который соответствует пол- отказоустойчивости путем горячего резервирования. Без-
ностью работоспособному серверу. Вторую диаграмму на- условно, сравнивать RAID и сетевые блочные устройства
зовем диаграммой переделок. В ней все вектора измени- просто некорректно. Но в рамках рассматриваемой моде-
ли направление на противоположное, и рядом с каждым из ли мы не учитываем ничего, кроме возможности перена-
них добавился комментарий, оценивающий стоимость пе- строить нужный уровень представления данных и последс-
ределки. Результат изображен на рис 3. твий такой перенастройки. И следуя этому принципу, полу-
Итак, все возможные стоимости переделок уложились чается, что создание сетевого блочного устройства на ос-
в четыре градации: потеря сервиса, отключение сервиса, нове локального – это лишь запуск соответствующего сер-
условно возможно, потеря данных. Например, рассмотрим виса, а переключение локально подмонтированного диска
возможные переделки для узла файловых систем EXT3... на сетевой режим работы без изменения его объема или
Во-первых, можно переразметить диск, на котором разме- размещения тоже не представляет особой проблемы. Итак,
18
администрирование
Таблица 1. Операции и стоимости
DISK MD LVM DRB/iSCSI EXT3... NFS...
Разметка fs и монти-
DISK Разбиение диска Создание MD и подключение Создание LVM и подключение Запуск drbd/ iscsid
рование
Условно возможна миграция Разметка fs и монти-
MD Создание LVM и подключение Запуск drbd/ iscsid
MD на иной раздел диска рование
Условно возможна мигра- Условно возможно переме- Разметка fs и монти-
LVM Запуск drbd/ iscsid
ция PV щение PV внутрь MD рование
Условно возможна миграция Условно возможно переме- Невозможно без полного ре- Разметка fs и монти-
DRB/iSCSI
раздела DRB/iSCSI щение раздела внутрь MD зервного копирования рование
Условно возможна мигра- Условно возможно переме- Невозможно без полного ре- Отключение от сетевого Запуск
EXT3...
ция FS щение FS внутрь MD зервного копирования блочного устройства nfsd/ smbd
Отключение всех пот-
NFS... ребителей и остановка
сервиса
из двух технологических подходов, MD и DRB/iSCSI, будем ные результаты представлены в таблице 2. В самом левом
самым неудобным в модификации, и поэтому самым «до- столбце перечислены операции, на которых проводились
рогим», считать MD. измерения, а в самой верхней строке сокращениями обоз-
На этом этапе можно сформулировать первые принци- начены условия тестирования. Опишем их по порядку:
пы планирования дисковых ресурсов. sda3 – проверка проводится на «чистом» разделе дис-
Принцип 1. Следует, по возможности, переключить все ка, размеченного под ext3;
размеченные разделы жесткого диска в режим работы про- sda3,md3 – файловая система размечена поверх поло-
граммного RAID, пусть и неполного, что позволит в даль- винки «зеркала» RAID1;
нейшем при необходимости перевести их в режим горяче- sda3,md3,lvm – раздел, использованный как половин-
го резервирования. ка RAID1, помещен в LVM, и уже поверх него размече-
Принцип 2. Следует, по возможности, объединить все на файловая система ext3;
созданные физические тома под управлением LVM – для то- sda3,md3,amd64 – случай 2, но в режиме 64 бита;
го, чтобы в дальнейшем, при необходимости, легко манипу- sda3,md3,4096 – условия как в предыдущем 64-битном
лировать объемом используемых логических томов. варианте, но с размером тестового файла в 4 Гб;
Обращаю внимание на уточнение «по возможности». sda2,md2 – случай 2, но со смещением к начальным об-
Обсуждение этих «возможностей», а также все, что каса- ластям диска.
ется стратегии разбиения на разделы, оставим для вто-
рой части этой статьи. Сейчас просто учтем эту оговорку Результаты тестов показаны в Кб/сек. Рядом с ними рас-
и просто попытаемся оценить эффект от следования за- считаны индексы отклонений от средней величины, опреде-
явленным выводам, как принципам планирования диско- ленной по первым трем испытаниям. Для наглядности дан-
вых ресурсов. ные таблицы представлены в графическом виде в форме
столбчатой диаграммы (см. рис. 4).
Тестирование Испытания с 1-го по 3-е определяют то, как влияет ис-
Да, именно так – тестирование. Нет ничего проще, чем оце- пользование дополнительных уровней представления дан-
нить издержки использования этих, запасенных впрок, тех- ных на скорость работы. Практически отклонения не пре-
нологических изысков MD и LVM, путем проверки с помо- вышают 5%. Совершенно понятно, что с увеличением чис-
щью самого рядового теста файловой системы bonnie, про- ла «слоев» трансляции уровней представления немного
веряющего символьные и блочные операции чтения-запи- подрастает скорость записи и немного снижается скорость
си, как повлияет на его результаты внесение соответству- чтения. Это объясняется тем, что при записи большее чис-
ющих изменений в настройки. ло программных драйверов создает большую массу кеши-
В тестовом компьютере было установлено 1 Гб опера- рующих механизмов, и в сравнении с тестом на файле 4 Гб
тивной памяти. Это не очень «удобный» объем, так как мак- (колонка 5) видно, как увеличение размера в 2 раза доволь-
симальный размер тестового файла в 32-битном режиме со- но существенно снижает результаты по записи. А вот в про-
ставляет 2 Гб, что несколько снижает точность измерений. цедуре чтения данных увеличение числа уровней пред-
И поэтому дополнительно были сделаны проверки в 64-бит- ставления лишь увеличивает цепочку запросов, если дан-
ном режиме и с размером тестового файла в 4 Гб. Получен- ные не сохранены в кеше, и, значит, немного снижает ско-
20
администрирование
mdadm: /dev/sda3 appears to contain an ext2fs file system И для того чтобы инициировать автоматическое де-
size=10490444K mtime=Mon Jan 9 01:08:28 2006
Continue creating array? y тектирование RAID в процессе загрузки системы, попра-
mdadm: array /dev/md3 started. вим тип раздела (для краткости используем неинтерак-
тивную форму):
Теперь проверим целостность файловой системы внут-
ри полученного MD. Утилита должна указать на несоответс- # fdisk /dev/sda <<EOT
твие размера раздела и размера файловой системы, пос- t
3
ле чего проверку следует прервать: fd
w
EOT
# fsck /dev/md3
fsck 1.38 (30-Jun-2005) Перечитаем таблицы разметки диска:
e2fsck 1.38 (30-Jun-2005)
The filesystem size (according to the superblock) is 2622611 blocks
The physical size of the device is 2622592 blocks # partprobe
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
fsck.ext3 /dev/md3 failed (status 0x8). Run manually! Если обновленный раздел используется в качестве кор-
невого, то есть его имя передается загрузчиком ядру, то на-
Полученный из сообщения «физический» размер до поправить меню загрузки. В нашем случае /boot разме-
в 2622592 блока по 4 Кб, который, кстати сказать, совпа- щен на модифицируемом разделе. Здесь принимается без
дает с заранее рассчитанным, нужно будет использовать объяснений то, что следует использовать загрузчик grub.
при коррекции размера файловой системы. Но предвари- Обоснование этого, а также и многих других правил, ос-
тельно выполним проверку файловой системы на /dev/sda3, тавим для второй части статьи. Итак, проводим такую же
так как иначе утилита resize2fs откажется работать. правку, как и с /etc/fstab:
кой системы.
Монтируем новый раздел: Таким образом, была осуществлена трансформа-
ция «на лету». Условием ее успешного выполнения ста-
# mount /dev/md3 /mnt ло то, что в файловой системе было свободно не менее
# mount | grep md3
2622611-2622592 = 19 блоков или 76 Кб. Для повторения это-
/dev/md3 on /mnt type ext3 (rw)
го «трюка» в другом Linux, не в SuSE, или с другим типом
Сначала исправим /etc/fstab, так как изменилось имя ус- файловой системы надо обеспечить наличие необходимых
тройства, использованного для монтирования раздела: для трансформации файловой системы утилит.
Вопросы выбора типа файловой системы, способа рас-
# perl -i.orig -p -e 's,/dev/sda3,/dev/md3,g' /mnt/etc/fstab пределения данных по разделам, организация процесса за-
# cat /mnt/etc/fstab | grep md3
грузки и многое другое, что осталось за рамками рассмот-
/dev/md3 / ext3 acl,user_xattr 1 1
рения, будут освещены во второй части статьи.
Евгений Прокопьев
Большинство почтовых систем в качестве хранилища сообщений до сих пор
используют различные текстовые форматы. Сегодня мы построим почтовый сервер
на основе реляционной СУБД и посмотрим, какие преимущества нам это даст.
О
дним из малоизвестных, но Кластеризация – механизм, с по- в DBMail пока отсутствуют некоторые
очень эффективных инстру- мощью которого можно разместить возможности более распространен-
ментов для построения слож- СУБД на нескольких компьютерах ных и развитых почтовых систем (на-
ных и масштабируемых почтовых сис- (узлах кластера) с доступом к еди- пример, аутентификация с помощью
тем является DBMail – комплекс про- ной БД. SASL, встроенная поддержка SSL/TLS,
грамм для UNIX-подобных систем, поз- Репликация – возможность авто- механизм фильтрации почтовых сооб-
воляющий использовать реляционные матического переноса сообщений щений, аналогичный Sieve – это пер-
СУБД в качестве серверного хранили- из одной БД в другую, создания вое, что приходит в голову), но реали-
ща почтовых сообщений вместо тради- консолидированной БД из разных зовать их проще (и работы над реали-
ционных mbox, Maildir и прочих тексто- источников и т. д. зацией многих недостающих возмож-
вых хранилищ. Используя DBMail, мож- Фрагментирование – разделе- ностей ведутся), чем добавить описан-
но добиться: ние одной логической таблицы БД ные выше возможности к традицион-
Более высокой производитель- на несколько физических для уп- ным почтовым системам.
ности по сравнению с файловы- рощения обслуживания, повыше- DBMail – продукт нидерландской
ми хранилищами – реляционные ния производительности, сжатия компании IC&S, в котором также есть
СУБД гораздо лучше приспособле- архивных данных и т. д. вк лад большого числа независи-
ны к обработке больших объемов Отказоустойчивость и баланси- мых разработчиков из разных стран.
структурированных данных, чем ровка нагрузки с автоматичес- Он распространяется по лицензии GPL,
любой парсер текстовых файлов. ким переключением на резервный кроме того, IC&S предлагает платную
Большей гибкости при обработ- сервер при отказе основного. поддержку.
ке и анализе корреспонденции – Резервное копирование – горя-
возможности SQL опять-таки не- чее (без необходимости останав- Архитектура
соизмеримы с тем, что можно сде- ливать почтовый сервер, чтобы не В дальнейшем я предполагаю, что вы
лать, обрабатывая mbox или Maildir получить поврежденное хранили- знакомы с общими принципами пост-
различными самописными скрип- ще сообщений) и инкременталь- роения почтовых систем, и термины
тами на Perl/Python/Ruby для из- ное (копирование изменений вмес- MTA, MDA и MUA вас не пугают. Если
влечения какой-либо статистики. то копирования всего хранилища). это не так, то всю необходимую инфор-
Дополнительная логика обработ- мацию вы можете найти в моей статье
При этом администратор почтовой ки почты, построенную на триг- «Круговорот почты в сети, или Архи-
системы может задействовать различ- герах, представлениях и т. д. тектура современных почтовых сис-
ные механизмы, предоставляемые тем», опубликованной в предыдущем
СУБД (при условии, что выбранная Похоже на голубую мечту сисадми- номере журнала. Принципиальная схе-
им СУБД это позволяет), например: на. Конечно, не все так замечательно: ма работы DBMail, которую нарисовал
22
администрирование
чем указать можно только одну СУБД. В будущем планиру-
ется реализовать динамическую подгрузку модулей для ра-
боты с различными СУБД, описываемую в конфигурацион-
ном файле, – это должно упростить создание и поддержку
пакетов DBMail для различных дистрибутивов Linux.
В качестве СУБД в настоящее время поддерживаются
только PostgreSQL и MySQL, кроме того, в текущей неста-
бильной версии появилась поддержка SQLite. Однако реа-
лизованный в DBMail уровень абстракции для доступа к БД
позволяет добавлять поддержку других СУБД без внесе-
ния каких-либо изменений в основной код, отвечающий за
логику обработки почтовых сообщений.
[POP]
effective_user=mail Или так (если имена некоторых доменов назначения вхо-
effective_group=mail дящих почтовых сообщений не описаны в DNS):
bindip=*
port=110
nchildren=10 dbmail-lmtp unix - - n - - lmtp
maxchildren=10 -o disable_dns_lookups=yes
minsparechildren=2
maxsparechildren=4 Во всех этих случаях новый транспорт нужно будет за-
maxconnects=10000
timeout=300 действовать следующим образом:
resolve_ip=yes
pop_before_smtp=no mailbox_transport = dbmail-lmtp:localhost:24
trace_level=2
[IMAP]
effective_user=mail Разумеется, можно задействовать доставку почтовых
effective_group=mail сообщений в хранилище DBMail только для определенных
bindip=*
port=143 доменов, но это уже не имеет никакого отношения к DBMail
nchildren=10 и настраивается исключительно средствами Postfix.
maxchildren=10
minsparechildren=2 Кроме того, необходимо поставить Postfix в известность
maxsparechildren=4 о тех почтовых ящиках, для которых он должен принимать
maxconnects=10000
timeout=4000 сообщения. Создадим для этого файл /etc/postfix/dbmail-
resolve_ip=yes mailboxes.cf со следующим содержимым:
imap_before_smtp=no
trace_level=2
user = dbmail
password = dbmailpwd
Небольшой комментарий к содержимому конфигураци- hosts = localhost
онного файла. Он состоит из следующих секций: dbname = dbmail
table = dbmail_aliases
DBMAIL – в ней описываются глобальные настрой- select_field = alias
ки, применимые ко всем сервисам DBMail (в основном where_field = alias
это параметры подключения к БД).
SMTP – здесь описываются параметры взаимодействия И задействуем его в /etc/postfix/main.cf:
с MTA, которому DBMail передает почтовые сообщения
для дальнейшей обработки. local_recipient_maps = pgsql:/etc/postfix ↵
/dbmail-mailboxes.cf $alias_maps
LMTP, POP3, IMAP – в этих секциях описываются на-
стройки соответствующих демонов: на каких адресах Для того чтобы это работало, Postfix должен быть соб-
и портах принимать подключения, под какой учетной ран с поддержкой PostgreSQL. В Debian и ALT Linux (воз-
записью работать, сколько дочерних процессов поро- можно, не только в них) поддержка PostgreSQL в Postfix вы-
дить и т. д. несена в пакет postfix-pgsql, который необходимо доустано-
вить, если он еще не установлен.
Пример конфигурационного файла, поставляемого Пользователи прочих дистрибутивов Linux или дру-
в комплекте с DBMail, содержит поясняющие комментарии гих UNIX-систем, в которых Postfix собран без подде-
для большинства настраиваемых параметров. ржки PostgreSQL, либо вообще отсутствует, могут перед
Теперь необходимо настроить механизм взаимодейс- компиляцией включить его самостоятельно, указав ключ
твия с Postfix. Как уже было сказано, таких механизмов -DHAS_PGSQL и пути к соответствующим заголовкам и биб-
два: pipe-интерфейс и LMTP. лиотекам:
В первом случае потребуется в файле /etc/postfix/master.
cf описать следующий транспорт: # make tidy
24
администрирование
# make -f Makefile.init makefiles \ # telnet localhost 110
'CCARGS=-DHAS_PGSQL -I/usr/local/include/pgsql' \
'AUXLIBS=-L/usr/local/lib -lpq' Trying 127.0.0.1...
# make Connected to localhost.
Escape character is ‘^]’.
+OK DBMAIL pop3 server ready to rock <3b1d246c241825db052940bc65a
Наконец, последний штрих – ежедневные плановые 6a39b@mydomain.com>
работы по очистке БД от удаленных записей и проверке user test
корректности БД. Их будет выполнять файл /etc/cron.daily/ +OK Password required for test
pass testpwd
dbmail-clean со следующим содержимым: +OK test has 1 messages (355 octets)
stat
#!/bin/sh +OK 1 355
list
/usr/sbin/dbmail-util -cturpd -l 24h -qq +OK 1 messages (355 octets)
1 355
.
Теперь можно запустить демоны dbmail-lmtpd (в том слу- retr 1
чае, если для доставки мы планируем использовать LMTP), +OK 355 octets
Return-Path: john@mydomain.com
dbmail-imapd и dbmail-pop3d (можно запустить только тот, ко-
Received: by mydomain.com (Postfix, from userid 502)
торый будет использоваться для извлечения почты из хра- id 7E8E617762; Sun, 20 Nov 2005 15:03:04 +0300 (MSK)
нилища, если он будет один). В пакет для ALT Linux вклю- To: test@mydomain.com
Subject: Test Message
чены соответствующие стартовые скрипты, которые мо- Message-Id: <20051120120304.7E8E617762@mydomain.com>
гут быть вызваны вручную с помощью service или настро- Date: Sun, 20 Nov 2005 15:03:04 +0300 (MSK)
ены на автоматическое выполнение при загрузке с помо- From: john@mydomain.com
26
администрирование
dbmail=# select mailheader(messageblk, 'User-Agent'), ↵ Личные общие каталоги в пространстве имен
count(*)
dbmail=# from dbmail_messages inner join ↵ #Users – настраиваются как администратором, так
dbmail_messageblks и владельцами каталогов средствами MUA (при усло-
dbmail-# on dbmail_messages.physmessage_id = ↵
dbmail_messageblks.physmessage_id вии, что MUA поддерживают эту функциональность).
dbmail-# where mailbox_idnr = 4 and is_header = 1
dbmail-# group by 1
dbmail-# order by 2 desc; Как мы уже выяснили, универсальный инструмент ад-
министратора DBMail – это SQL-консоль выбранной им
mailheader | count
---------------------------------------------------------------------+------ СУБД. Создадим системный общий каталог News и пре-
| 194 доставим доступ к нему пользователю test с помощью это-
Debian Thunderbird 1.0.6 (X11/20050802) | 104
Mozilla Thunderbird 1.0.6 (Windows/20050716) | 49 го инструмента. Сначала необходимо создать пользовате-
Mozilla Thunderbird 1.0.2 (Windows/20050317) | 32
Debian Thunderbird 1.0.2 (X11/20050602) | 30 ля с именем __public__. Мы уже создавали пользователя
Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.2) Gecko/20040808 | 15 test с помощью dbmail-users, сделаем теперь то же самое
Mozilla Thunderbird 1.0.6 (X11/20050716) | 12
Mozilla Thunderbird 1.0 (X11/20041206) | 11 средствами SQL:
Mozilla Thunderbird 1.0.7 (X11/20051014) | 9
Mozilla Thunderbird 1.0.7 (Windows/20050923) | 9
Debian Thunderbird 1.0.2 (X11/20050331) | 8 # psql -U dbmail dbmail
Mozilla Thunderbird 1.0 (Windows/20041206) | 8
SquirrelMail/1.4.4 | 7 dbmail=# insert into dbmail_users (userid, passwd)
Mozilla Thunderbird 1.0.6 (Macintosh/20050716) | 7 dbmail-# values ('__public__', 'abracadabra');
Debian Thunderbird 1.0.7 (X11/20051017) | 6
Opera M2/8.50 (Win32, build 7700) | 6 INSERT 0 1
Mozilla Thunderbird 1.0.7 (X11/20051010) | 5
KMail/1.8.2 | 4 dbmail=# select user_idnr from dbmail_users where ↵
Thunderbird 1.4 (Windows/20050908) | 4 userid='__public__';
Mozilla Thunderbird 1.0.5 (Windows/20050711) | 3
Mozilla Thunderbird 1.0.7 (X11/20051013) | 2 user_idnr
Thunderbird 1.5 (Windows/20051025) | 2 -----------
SquirrelMail/1.5.1 [CVS] | 2 5
SquirrelMail/1.4.5 | 2
(1 запись)
Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) | 2
Mozilla Thunderbird 1.0.7 (X11/20051031) | 2
Mozilla Thunderbird 1.0.6 (X11/20050727) | 2 Теперь создадим каталог News, владельцем которого
Mozilla Thunderbird 1.0.6 (X11/20050826) | 2
SquirrelMail/1.4.3a | 1 будет пользователь __public__:
SquirrelMail/1.4.3a-12.EL4.centos4 | 1
Mozilla Thunderbird 1.0.6 (X11/20050721) | 1
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20041221 | 1 # psql -U dbmail dbmail
Mozilla Thunderbird 1.0.7 (Macintosh/20050923) | 1
Microsoft-Entourage/11.1.0.040913 | 1 dbmail=# insert into dbmail_mailboxes
Mozilla Thunderbird 1.0.7 (X11/20051017) | 1 dbmail=# (owner_idnr, name, seen_flag, answered_flag, ↵
Mozilla Thunderbird 1.0.6-1.4.1.centos4 (X11/20050721) | 1 deleted_flag, flagged_flag,
Mozilla Thunderbird 1.0.7 (X11/20050923) | 1 dbmail=# recent_flag, draft_flag, no_inferiors, ↵
Mozilla Thunderbird 1.0 (X11/20041207) | 1 no_select, permission)
Microsoft-Entourage/11.2.1.051004 | 1
(записей: 39)
dbmail-# values (5, 'News', 1, 1, 1, 1, 1, 1, 0, 0, 2);
INSERT 0 1
Итак, мы получили распределение сообщений в спис- dbmail=# select mailbox_idnr from dbmail_mailboxes ↵
ке рассылки по MUA (точнее, по заголовку User-Agent). За- where name='News';
прос выполнился не слишком быстро, что и не удивитель- mailbox_idnr
но: для каждой строки пришлось вызывать функцию раз- --------------
7
бора содержимого. Чтобы уменьшить время выполнения, (1 запись)
можно создать триггер на вставку записей с сообщениями
и сохранять результаты mailheader в отдельную проиндек- А теперь опишем права доступа для пользователя test
сированную таблицу. Тем самым за счет уменьшения вре- к этому каталогу:
мени анализа сообщений мы получим увеличение време-
ни, затрачиваемого на добавление сообщений, – что важ- # psql -U dbmail dbmail
нее, решать администратору почтовой системы. Впрочем, dbmail=# select user_idnr from dbmail_users ↵
здесь из области администрирования почтового серве- where userid='test';
ра мы переходим в область администрирования баз дан- user_idnr
-----------
ных вообще и администрирования PostgreSQL в частнос- 3
ти – последнему посвящен цикл статей Сергея Супрунова,
уже публиковавшийся в нашем журнале. (1 запись)
Системные общие каталоги в пространстве имен Все, пользователю test осталось только подписаться
#Public – настраиваются администратором почтового на каталог #Public/News средствами своего MUA. Впрочем,
сервера. и это тоже можно выполнить средствами SQL:
mailbox_idnr
--------------
7
(1 запись)
Возможности перенаправления почты получил около 500 сообщений в течение нескольких секунд
Мы не станем рассматривать эти возможности так же де- на машине с довольно скромной аппаратной конфигураци-
тально, как и shared folders, т.к. общий принцип админист- ей. Прекращать это безобразие пришлось вручную с помо-
рирования DBMail уже понятен. Упомянем только таблицы, щью инструмента postsuper из комплекта Postfix.
принимающие участие в перенаправлении почты:
dbmail_aliases – в этой таблице каждому почтовому ад- Прочие возможности DBMail
ресу (или нескольким адресам) можно поставить в соот- К числу прочих возможностей почтового сервера, часто
ветствие один или несколько идентификаторов пользо- востребованных администраторами, относятся:
вателей, уже заведенных в DBMail, произвольных адре- Квоты на размер почтового ящика – поддерживаются
сов и внешних программ, которые получат сообщение в DBMail непосредственно: максимальный размер ящи-
на stdin. Перед именем программы должен быть сим- ка можно указать как при вызове утилиты dbmail-users
вол «|» (в этом случае программа получит сообщение ключом -m, так и изменив значение поля maxmail_size
в необработанном виде) или «!» (к сообщению будет в таблице dbmail_users.
добавлен mbox-заголовок). Вместо непосредственно- SMTP-авторизация – вообще-то это задача MTA, но пос-
го редактирования таблицы можно также использовать кольку в DBMail уже хранится соответствие имен поль-
утилиту dbmail-users (Примечание: примерно то же зователей и их паролей, есть смысл настроить SASL
самое можно сделать средствами MTA, но не всегда. на использование этой информации.
Postfix, например, обрабатывает собственную табли- POP/IMAP before SMTP – это альтернатива SMTP-авто-
цу алиасов только в том случае, если в доставке при- ризации, которая опирается на использование таблицы
нимает участие его собственный MDA local. Это не са- dbmail_pbsp и должна быть включена в /etc/dbmail.conf
мый эффективный способ доставки, и при настройке параметрами pop_before-smtp/imap_before_smtp.
DBMail во многих случаях предпочтительнее использо- SSL/TLS – DBMail не поддерживает этот механизм не-
вать LMTP). посредственно, но есть возможность организовать про-
dbmail_auto_notifications – в этой таблице для каждо- зрачный с точки зрения клиентов SSL-доступ с помощью
го пользователя DBMail можно указать несколько адре- внешнего ПО, например, stunnel – работа с этим инс-
сов, на которые придут уведомления о получении поль- трументом подробно рассматривалась в цикле статей
зователем сообщения. По умолчанию такая функцио- Андрея Бешкова.
нальность отключена, чтобы ее включить, необходимо Фильтрация почтовых сообщений на основании
в файле /etc/dbmail.conf в секции SMTP исправить зна- их содержимого – эту задачу и способы ее решения
чение параметра auto_notify с no на yes. мы обсудим позже.
dbmail_auto_replies – в этой таблице для каждого поль-
зователя DBMail можно указать текст сообщения для Кроме того, DBMail не обошелся без GUI-конфигуратора
автоматического ответа на все приходящие сообще- DbMail Administrator (DBMA), написанного на Perl и ориенти-
ния. По умолчанию такая функциональность также от- рованного на веб. Он доступен на http://library.mobrien.com/
ключена, и чтобы ее включить, необходимо в файле dbmailadministrator и выглядит так (см. рис. 3).
/etc/dbmail.conf в секции SMTP исправить значение па- Есть еще один веб-интерфейс к DBMail – swiftMail (http://
раметра auto_reply с no на yes. www.obfuscatedcode.com/swiftmail/trac), написанный на PHP.
Его можно было бы отнести к классу webmail-приложений,
Использование описанных механизмов требует аккурат- если бы не одна особенность: для чтения почты использу-
ного подхода, иначе очень легко получить зацикливание поч- ется не POP3/IMAP, а прямой доступ к БД DBMail. В насто-
ты. Так я по невнимательности указал для почтового пользо- ящее время доступна альфа-версия swiftMail, поддержи-
вателя в качестве адреса для уведомлений один из его же вающая только MySQL. Поддержка PostgreSQL обещает-
алиасов. После этого вместо одного письма пользователь ся в ближайшем будущем.
28
администрирование
Таблица 1. Способы фильтрации почтовых сообщений средствами DBMail
Способ Преимущества Недостатки
Теряются все преимущества DBMail в производительности. Кроме то-
Использование традиционных MDA Простота, привычность го, все пользователи в DBMail – виртуальные, а не системные, т.е. по-
являются проблемы с разделением доступа к фильтрам
Необходимо отслеживать побочные эффекты при написании фильтров
Использование фильтров MTA + RFC3589 Приемлемая производительность MTA, писать фильтры труднее, чем правила для procmail и maildrop.
Аналогичные проблемы с разделением доступа к фильтрам
Во всех СУБД поддержка триггеров существенно отличается – придет-
ся либо ограничиться поддержкой одной СУБД, либо поддерживать
Высокая производительность, возможность хранить несколько реализаций одной и той же функциональности для каж-
Использование триггеров фильтры в таблице БД и легко разделить доступ к ним дой СУБД. В текущей стабильной версии DBMail на каждый заголовок
с помощью представлений письма не выделяется отдельной записи, т.е. заголовки не очень удоб-
но анализировать – хотя в случае использования PostgreSQL эту про-
блему мы уже решили
Переносимость между различными СУБД, высокая про-
изводительность, возможность хранить фильтры в таб-
Необходимо изучение исходного кода DBMail, возможно внесение
Написание собственного патча лице БД и разделить доступ к ним, простота анализа
ошибок в код
заголовков (это стало ясно только после изучения ис-
ходного кода)
Фильтрация почтовых сообщений Сравним их (см. таблицу 1). После недолгих раздумий
средствами DBMail выбор был сделан в пользу последнего варианта. Самым
Общеизвестным преимуществом IMAP является то, что поч- трудным оказалось не реализовать нужную функциональ-
товый пользователь может работать со своей и общей кор- ность, а найти место в коде, куда ее необходимо вставить,
респонденцией с разных рабочих мест с помощью совер- не нарушив при этом работоспособности всего остально-
шенно различных MUA: как традиционных, так и ориенти- го. Решение задачи сильно упростило то, что в DBMail хо-
рованных на веб. Это означает, что правила, в соответствии рошо организовано ведение логов. Для каждого демона в
с которыми сообщения распределяются по каталогам IMAP, конфигурационном файле можно задать уровень отладки
должны определяться не на уровне MUA, а на уровне MDA. (параметр trace_level), определяющий степень детализа-
В настоящее время в DBMail отсутствуют штатные спо- ции выводимых отладочных сообщений.
собы решения этой задачи. В будущих версиях планирует- При максимальном уровне отладки (trace_level=5 в сек-
ся использование специализированного языка программи- ции LMTP) во время доставки сообщения в логах можно
рования для фильтрации почтовых сообщений Sieve (опи- увидеть очень много сообщений, но наиболее интересным
сан в RFC 3028, активно используется в Cyrus IMAP), код является следующий фрагмент:
поддержки Sieve даже есть в текущей стабильной версии, dbmail/lmtpd[5327]: pipe.c, insert_messages: temporary msgidnr is [11]
но он не завершен и недостаточно протестирован, поэто- dbmail/lmtpd[5327]: pipe.c, insert_messages: calling sort_and_deliver
for useridnr [7]
му при компиляции по умолчанию поддержка Sieve отклю- dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query
чена. Кроме того, для большинства случаев Sieve являет- [SELECT mailbox_idnr FROM dbmail_mailboxes WHERE name='INBOX'
AND owner_idnr='7']
ся слишком мощным инструментом. dbmail/lmtpd[5327]: db.c, db_find_create_mailbox: mailbox [INBOX] found
Сформулируем, что нам требуется от простейшего ме- dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query
[SELECT pm.messagesize FROM dbmail_physmessage pm, dbmail_messages msg
ханизма фильтрации почтовых сообщений: WHERE pm.id = msg.physmessage_id AND message_idnr = '11']
Каждый пользователь может задать собственный спи- dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query [SELECT 1 FROM
dbmail_users WHERE user_idnr = '7' AND (maxmail_size > 0)
сок фильтров и назначить их приоритеты. AND (curmail_size + '363' > maxmail_size)]
Фильтр представляет из себя соответствие названия dbmail/lmtpd[5327]: misc.c,create_unique_id: created:
62ee468abbec0e64995295a02f0dcd5d
заголовка письма и его значения IMAP-каталогу, в ко- dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query [INSERT INTO
торый должно попасть письмо. dbmail_messages (mailbox_idnr,physmessage_id, seen_flag, answered_flag,
deleted_flag, flagged_flag, recent_flag, draft_flag, unique_id, status)
Письмо попадает в каталог, если значение заголовка SELECT '9', physmessage_id, seen_flag, answered_flag, deleted_flag,
в письме содержит в себе значение заголовка в филь- flagged_flag, recent_flag, draft_flag, '62ee468abbec0e64995295a02f0dcd5d',
status FROM dbmail_messages WHERE message_idnr = '11']
тре. dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query
[SELECT currval('dbmail_message_idnr_seq')]
dbmail/lmtpd[5327]: db.c,db_add_quotum_used: adding 363 to mailsize
А теперь перечислим те способы решения задачи, ко- dbmail/lmtpd[5327]: db.c.user_idnr_is_delivery_user_idnr: no need to
торые пришли мне в голову: look up user_idnr for __@!internal_delivery_user!@__
dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query
Использование традиционных MDA (procmail, maildrop) [UPDATE dbmail_users SET curmail_size = curmail_size + '363'
и dbmail-smtp. WHERE user_idnr = '7']
dbmail/lmtpd[5327]: sort.c, sort_and_deliver: message id=12,
Использование фильтров MTA и патча для поддержки size=363 is inserted
RFC 3589 (Sieve Email Filtering – Subaddress Extension: dbmail/lmtpd[5327]: pipe.c, insert_messages: successful sort_and_
deliver for useridnr [7]
user+folder@server) в dbmail-lmtpd. Патч можно взять
здесь – http://www.dbmail.org/mantis/bug_view_advanced_ Похоже, что именно здесь и происходит сохранение со-
page.php?bug_id=0000057. общения. Код, выводящий это сообщение, выглядит так:
Использование средств СУБД (триггеров) для модифи-
кации записей, соответствующих сообщению, в БД. trace(TRACE_DEBUG,
"%s, %s: calling sort_and_deliver for useridnr [%llu]",
Написание собственного патча. __FILE__, __func__, useridnr);
trace(TRACE_DEBUG, if (!strcmp(record->field,
"%s, %s: calling sort_and_deliver for useridnr [%llu]", filter_field) && ↵
__FILE__, __func__, useridnr); strstr(record->value, ↵
filter_value)) {
dsn_result = sort_and_deliver(tmpmsgidnr, msgsize, ↵
useridnr, db_get_mailbox_from_filters(useridnr, ↵ trace(TRACE_MESSAGE,
headerfields, delivery->mailbox)); "%s, %s: header [%s : ↵
\"%s\"] accept filter ↵
[%s : \"%s\" => %s]",
__FILE__, __func__, ↵
Прототип функции, который мы поместим в db.h: record->field, ↵
record->value, ↵
char *db_get_mailbox_from_filters(u64_t useridnr, ↵ filter_field, ↵
struct list *headerfields, const char *mailbox); filter_value, ↵
mailbox);
При реализации функции необходимо использовать return mailbox;
следующую таблицу: }
el = el->nextnode;
CREATE TABLE dbmail_filters ( }
user_id INT8 REFERENCES dbmail_users(user_idnr) ↵
ON DELETE CASCADE ON UPDATE CASCADE, trace(TRACE_MESSAGE,
filter_id INT8, "%s, %s: no header accept filter ↵
filter_field varchar(128) NOT NULL, [%s : \"%s\" => %s]",
filter_value varchar(255) NOT NULL, __FILE__, __func__, filter_field, ↵
mailbox varchar(100) NOT NULL, filter_value, mailbox);
PRIMARY KEY (user_id, filter_id) }
);
CREATE INDEX dbmail_user_id_idx ON dbmail_filters(user_id); db_free_result();
CREATE INDEX dbmail_filter_id_idx ON dbmail_filters(filter_id);
return NULL;
В качестве образца чтения таблицы из БД можно исполь- }
else
зовать функцию db_get_users_from_clientid из db.c. В ре- {
зультате реализация функции db_get_mailbox_from_filters return mailbox;
}
в файле db.c будет выглядеть так: }
30
администрирование
processing header [Subject : "Test Message"] использование нескольких критериев, объединенных
dbmail/lmtpd[5329]: db.c, db_get_mailbox_from_filters:
header [Subject : "Test Message"] accept filter
с помощью операций AND и OR, в одном фильтре;
[Subject : "Test" => MyFolder] дополнительные функции обработки сообщений (на-
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query
[SELECT mailbox_idnr FROM dbmail_mailboxes WHERE name='MyFolder'
пример, обработка сообщений внешними программа-
AND owner_idnr='7'] ми по pipe-интерфейсу).
dbmail/lmtpd[5329]: dbpgsql.c,db_query: previous result set is
possibly not freed.
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query Итоги
[INSERT INTO dbmail_mailboxes (name, owner_idnr,seen_flag,
answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag,
Проекту DBMail придется пройти еще долгий путь, чтобы за-
permission) VALUES ('MyFolder', '7', 1, 1, 1, 1, 1, 1, 2)] служить признание и получить такую же популярность, как,
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query
[SELECT currval(‘dbmail_mailbox_idnr_seq’)]
например, Courier IMAP или Cyrus IMAP. Но уже сейчас вид-
dbmail/lmtpd[5329]: db.c, db_find_create_mailbox: mailbox но, что его потенциальные возможности очень широки.
[MyFolder] created on the fly
dbmail/lmtpd[5329]: db.c, db_find_create_mailbox: mailbox
В будущих версиях планируется реализовать следую-
[MyFolder] found щее (часть уже реализована в версии 2.1.3):
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query
[SELECT pm.messagesize FROM dbmail_physmessage pm, dbmail_messages msg
Использование LDAP для аутентификации – это
WHERE pm.id = msg.physmessage_id AND message_idnr = '13'] уже поддерживается ведущими POP3/IMAP-сервера-
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query
[SELECT 1 FROM dbmail_users WHERE user_idnr = '7' AND
ми и очень удобно для ведения единой БД пользовате-
(maxmail_size > 0) AND (curmail_size + '363' > maxmail_size)] лей, единой адресной книги и т. д.
dbmail/lmtpd[5329]: misc.c,create_unique_id: created:
701c6fdeea62fbc2ed575ff730561c80
Организация пользователей в группы – поможет уп-
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query ростить управление пользователями и раздавать пол-
[INSERT INTO dbmail_messages (mailbox_idnr,physmessage_id, seen_flag,
answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag,
номочия не отдельным пользователям, а целым груп-
unique_id, status) SELECT '10', physmessage_id, seen_flag, пам.
answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag,
'701c6fdeea62fbc2ed575ff730561c80', status FROM dbmail_messages
Хранение разных заголовков и вложений отдельно –
WHERE message_idnr = '13'] позволит значительно упростить анализ корреспонден-
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query
[SELECT currval('dbmail_message_idnr_seq')]
ции посредством написания SQL-запросов. Примерно
dbmail/lmtpd[5329]: db.c,db_add_quotum_used: adding 363 to mailsize то же самое мы сегодня реализовали самостоятельно,
dbmail/lmtpd[5329]: db.c.user_idnr_is_delivery_user_idnr: no need to
look up user_idnr for __@!internal_delivery_user!@__
но только для PostgreSQL.
dbmail/lmtpd[5329]: dbpgsql.c,db_query: executing query Sieve – как средство фильтрации почтовых сообщений,
[UPDATE dbmail_users SET curmail_size = curmail_size + '363'
WHERE user_idnr = '7']
очень примитивный аналог которого мы также сегодня
dbmail/lmtpd[5329]: sort.c, sort_and_deliver: message id=14, size=363 реализовали.
is inserted
dbmail/lmtpd[5329]: pipe.c, insert_messages: successful sort_and_
Индивидуальные черные списки и фильтры для
deliver for useridnr [7] пользователей – позволят пользователям самостоя-
тельно указывать, письма от кого им не хотелось бы чи-
При этом содержимое таблицы фильтров таково: тать.
Графические средства администрирования – пока
# psql -U dbmail dbmail многие возможности DBMail можно задействовать толь-
dbmail=# select * from dbmail_filters; ко путем внесения исправлений в БД– с помощью на-
user_id | filter_id | filter_field | filter_value | mailbox писания SQL-инструкций (хотя DbMail Administrator ре-
---------+-----------+--------------+--------------+---------- шает большинство проблем такого рода).
6 | 0 | Subject | Test | MyFolder
(1 запись) Средства администрирования по протоколам XML-
RPC/SOAP – основные настройки DBMail хранятся
Изменения были оформлены как .diff (с помощью утилиты не в БД, а в файле /etc/dbmail.conf (например, там ука-
gendiff – после этого они могут быть использованы утилитой зывается имя БД и логин/пароль для доступа к ней).
patch для автоматического внесения изменений в оригиналь- К этим настройкам, а также к настройкам, хранящим-
ный исходный код) и отправлены в списки рассылки пользо- ся в БД, было бы очень удобно иметь унифицирован-
вателей и разработчиков DBMail. По согласованию с лидером ный доступ.
проекта эти изменения не внесены в основную стабильную
ветку, но патч включен в архив с кодом, и пакет DBMail для Посмотрим, что ожидает DBMail в будущем.
Debian Linux собран с этим патчем (т.к. лидер проекта по сов-
местительству еще и мантейнер этого пакета в Debian). Па- Литература, ссылки:
кет DBMail для ALT Linux также собран с этим патчем. Поль- 1. http://dbmail.org/dokuwiki/doku.php.
зователи прочих дистрибутивов Linux или других UNIX-сис- 2. Бешков А. Защита сетевых сервисов с помощью stunnel (1-3
тем могут собрать DBMail с ним самостоятельно. части). – Журанал «Системный администратор», №12, 2004 г.,
Разумеется, патч не идеален, и в будущем, может быть, №1, 2005 г., №3, 2005 г.
придется усовершенствовать его, добавив: 3. Супрунов С. PostgreSQL: первые шаги. Журнал «Системный
использование регулярных выражений POSIX вместо администратор», №7, 2004 г. – 26-33 с.
простого поиска подстроки; 4. Супрунов С. PostgreSQL: функции и триггеры. – Журнал «Сис-
кэширование содержимого таблицы фильтров, чтобы темный администратор», №10, 2004 г. – 42-47 с.
не выполнять SQL-запрос при анализе каждого сооб- 5. Супрунов С. PostgreSQL 8.0: новые возможности. – Журнал
щения; «Системный администратор», №3, 2005 г. – 7 с.
(народная мудрость)
Сергей Супрунов
Доступ к электронной почте через веб-интерфейс обеспечивает дополнительные удобства.
Однако мы не всегда задумываемся о потенциальных проблемах безопасности, а ведь даже
такой безобидный пакет, как Ilohamail имеет несколько неприятных дыр.
32
администрирование
Установка по крайней мере на на, и разобраться при необходимости Нужно заметить, что в Apache вы-
FreeBSD при использовании коллек- в ней не составит особого труда. вод содержимого каталога при отсутс-
ции портов никаких сложностей не вы- Кажется, что проще и быть не мо- твии в нем индексного файла по умол-
зывает – в /usr/local/www будет создан жет, но именно эта простота влечет за чанию запрещен. При попытке досту-
каталог ilohamail со всеми необходи- собой несколько не слишком опасных, па к нему будет выведена ошибка «403
мыми файлами. Скопируйте его в нуж- но все же неприятных проблем безо- Forbidden». Однако при подключен-
ный каталог в иерархии вашего веб- пасности, о решении которых мы и по- ном модуле mod_autoindex возмож-
сайта, и можно сразу вызывать старто- говорим. но построение так называемого авто-
вую страничку из вашего браузера. Для определенности будем считать, матического индекса, что достигается
Предельно аскетический дизайн что базовый адрес для доступа к стра- включением параметра Indexes в стро-
(минимум графики и вообще немно- ницам ilohamail – http://www.myserver. ку Options.
гословность) придется по вкусу поль- ru/ilohamail, а веб-сервер работает Например, чтобы разрешить авто-
зователям, работающим по комму- от имени пользователя www. индекс для корневого каталога (и всех
тируемым соединениям, да и «выде- вложенных), можно использовать сле-
ленщики» по достоинству оценят воз- Настраиваем доступ дующую запись:
можность немного сэкономить на тра- к пользовательским
фике и не рыскать по страничке в по- данным <Directory />
Options Indexes
исках нужной кнопки среди множест- Хотя работа с почтовым ящиком ведет- </Directory>
ва подсказок. Единственное, что мне ся непосредственно с помощью одно-
сразу же захотелось изменить, – это го из протоколов, Ilohamail все же со- При необходимости в этой же стро-
используемый по умолчанию цвет фо- храняет несколько последних сооб- ке можно указать и другие опции. Та-
на. Его (а также некоторые другие на- щений, считанных в предыдущем се- ким образом, в большинстве случа-
стройки) можно поменять в файле ансе работы в каталоге data/cache/ ев вам достаточно убедиться, что та-
conf/defaults.generic.inc и в некоторых <адрес_пользователя>. Поскольку кая опция не распространяется на
файлах в каталогах source/themes. каталог data по умолчанию хранится «проблемный» каталог. Не забывай-
По умолчанию пользователь мо- в дереве каталогов веб-сервера, то те, что она может находиться и в фай-
жет при входе задать протокол (POP3 простое обращение по адресу http:// ле .htaccess данного или одного из вы-
или IMAP), по которому будет произво- www.myserver.ru/ilohamail/data/cache/ шестоящих каталогов.
диться подключение к серверу, а также serg.myserver.ru выведет список фай- Кстати, еще один способ избежать
адрес сервера. Кроме того, можно вы- лов кэша, где хранятся сообщения указанной выше проблемы с выда-
брать из огромного количества языков пользователя serg@myserver.ru. Ко- чей содержимого каталога – создать
интерфейса тот, с которым вам удоб- нечно, если настройки веб-сервера за- в нем любой индексный файл, можно
нее работать (в списке присутствует прещают просмотр содержимого ката- даже пустой.
и русский). Если вы хотите обеспечить лога при отсутствии в нем индексно- Кроме того, точно так же мож-
пользователям возможность работать го файла, то задача для злоумышлен- но просмотреть настройки пользо-
только с вашим сервером по конкрет- ника усложняется, т.к. имя кэш-файла вателя в каталоге data/users/<адрес_
ному протоколу, в файле conf/login.inc представляет собой случайный иден- пользователя>/. Действительно инте-
задайте параметр $default_host, а так- тификатор, угадать который не так уж ресного здесь не так уж и много (раз-
же присвойте значение «1» перемен- и легко. Например, он может называть- ве что файл key.inc, содержащий пе-
ным, отвечающим за отображение ся так: 007c01c60c52%24fed21430%24 ременную $passkey, которая содержит
соответствующих подписей к полям 30003d0a%40RGSUFO.local. в зашифрованном виде имя пользова-
($hide_protocol, $hide_host и др.) Вы-
бор протокола осуществляется указа- «Бедная кошечка» сервер (протокол IMAP вообще не подде-
нием порта ($default_port), кроме того, В этой же статье уместно рживается) – его имя жестко прописыва-
протокол и номер порта можно указать несколько слов сказать об еще одном по- ется в конфигурации (файл inc/config.php).
и в переменной $default_host (см. ком- добном проекте со странным названием Поэтому проблемы, связанные с аноним-
ментарии в конфигурационном файле). UebiMiau (порт mail/uebimiau, сайт: http:// ной отправкой сообщения или взломом
Здесь же вы можете указать и исполь- www.uebimiau.org). Данный пакет работа- почтового ящика, для UebiMiau не столь
зуемый по умолчанию язык интерфей- ет по тому же принципу, разработан тоже актуальны.
са ($default_lang). на PHP, и ему присущи некоторые из опи- Однако пользовательские данные по-
Вы можете подстроить в других санных проблем. прежнему хранятся (по умолчанию) в де-
файлах в каталоге conf еще некоторые Наиболее заметные отличия от Ilohamail реве веб-сайта, так что перенос катало-
параметры. Однако если возникнет же- в этом плане – для всех файлов, включая га database за его пределы также край-
лание внести более серьезные измене- конфигурационные, используется расши- не желателен (новый путь прописывает-
ния в интерфейс (например, добавить рение php, что при правильной настройке ся в параметре $temporary_directory фай-
на стартовую страницу свой логотип), веб-сервера должно уберечь от чтения их ла inc/config.php).
то придется заняться непосредствен- содержимого через обычный http-запрос. Ну и если вас беспокоит репутация ва-
ной правкой php-файлов. Впрочем, К тому же здесь не предусмотрена возмож- шей компании, то логотип на странице ау-
структура пакета не слишком слож- ность использовать произвольный POP3- тентификации тоже придется сменить…
34
администрирование
Павел Семенец
Кто из нас не мечтал создать свою мультидоменную почтовую систему, которая работала
бы стабильно, надежно и безопасно, предлагала множество удобных функций, защищала
от вирусов и спама, умела авторизовывать пользователей, шифровать передаваемый
трафик, и в то же время была проста в обслуживании. Это особенно актуально для почтовых
систем больших компаний или провайдерских серверов, предоставляющих почтовые сервисы
внешним клиентам. Как добиться такого результата, затратив минимум усилий?
С
разу хотелось бы отметить, что данный труд не пред- # make WITH_CHARSET=koi8_ru WITH_CHARSET=cp1251 ↵
WITH_CHARSET=utf8 WITH_CHARSET=latin1 ↵
назначен для новичков в мире UNIX. Несмотря на мои WITH_XCHARSET=all all install clean
старания излагать всё как можно подробнее, мно-
гие вещи, очевидные для любого подкованного UNIX-ад- Настраиваем запуск так, чтобы MySQL стартовал пе-
мина, остались за бортом, иначе пришлось бы писать це- ред всеми сервисами.
лый сериал. По ходу повествования я буду кратко объяс- Создаем скрипты для запуска MySQL:
нять, что и зачем мы делаем. Надеюсь, такого уровня под-
робностей хватит большинству читателей. # cd /usr/local/etc/rc.d/
# mv 000.mysql-client.sh 010.mysqlc.sh
Итак, наша почтовая система будет использовать толь- # mv mysql-server.sh 015.mysqls.sh
ко свободное программное обеспечение. Для выполнения
поставленной задачи нам понадобится следующее: При стандартной установке FreeBSD создается слиш-
Exim – MTA (Mail Tranfer Agent), на момент написания ком маленький раздел /var для хранения базы нашего поч-
статьи доступная версия 4.53. тового сервера, этого не достаточно, для этого переместим
MySQL – реляционная СУБД требуется для более удоб- БД MySQL в /usr/local/database/mysql во избежание проблем
ного управления пользователями и доменами, которые с нехваткой места для базы в дальшейшем.
будет поддерживать наш почтовый сервер. Добавляем в файл /etc/rc.conf:
Courier-Imap – один из самых быстрых и защищенных
серверов для работы с почтовыми ящиками, поддержи- mysql_enable="YES"
mysql_dbdir="/usr/local/database/mysql"
вающий работу по протоколу SSL.
DSPAM – быстрый и очень гибкий в настройке антиспам Создадим директорию для хранения базы MySQL и пере-
фильтр. дадим права пользователю, от которого работает MySQL:
SquirrelMail – один из самых лучших веб-интерфейсов
для работы с почтовыми ящиками. # mkdir -p /usr/local/database/mysql
# chown -R mysql:mysql /usr/local/database/mysql
ClamAV – наиболее зрелый из бесплатных антивирус-
ных фильтров. Запускаем сервер баз данных:
ОС FreeBSD версии 5.4 с последними патчами.
# /usr/local/etc/rc.d/010.mysqlc.sh start
# /usr/local/etc/rc.d/015.mysqls.sh start
В принципе можно взять любую другую UNIX-подобную
ОС. Немного изменится принцип установки программного Все должно пройти без сучка и без задоринки, если
обеспечения, но в целом все остальное будет актуально. что-то пошло не так, проверьте права на папку /usr/local/
Надеюсь, у всех присутствует подключение к Интерне- database/mysql, она должна принадлежать пользователю
ту, имеется последняя обновленная версия портов, DNS mysql, иначе сервер откажется запускаться.
настроен верно, MX-записи не кривые, и имя хоста отве- Производим первичную настройку и защиту нашего
чает вашим желаниям для использования его в качестве SQL-сервера. Вместо «testpassword» и «youpassword» сле-
почтового сервера. дует использовать пароли, которые вы придумаете сами.
Предупреждение: использование мультидоменного Выполнив вышеуказанные действия, можно хотя бы ми-
почтового сервера накладывает определенные правила на нимально обезопасить себя от взлома. В случае если ба-
формат учетных записей пользователя, которые использу- за MySQL находится на удаленной машине, нужно вмес-
ются для аутентификации. Аутентификация пользователей то «exim@localhost» использовать имя с указанием хоста,
производится по полному почтовому адресу, включая назва- от которого будет производиться соединение.
ние домена (к примеру, user@test.com).
Для создания файлов будем использовать следующую # /usr/local/bin/mysqladmin -u root password 'testpassword';
конструцию: «cat > filename << "EOF"». Записывать данные
в файл, пока не встретится слово EOF. Запускаем клиент mysql и попадаем в консоль сервера
MySQL, дальнейшие команды выполняем в нем:
Установка MySQL
Установить СУБД MySQL несложно, требуется лишь соблю- # mysql -u root -ptestpassword
дать определенные правила при сборке. Нужно точно оп-
ределиться, будут ли база сервера и сам почтовый сервер Удаляем тестовую базу:
на одном хосте или на разных (я всегда держу отдельной
машиной сервер баз данных, к которому произвожу подклю- mysql> drop database test;
чение, дабы разгрузить основной сервер, но это на ваше ус-
мотрение). Если БД будет на другом хосте, требуется поза- Подключаемся к базе с именем mysql:
ботиться об удаленном доступе к хосту с базой, а для хоста
с почтовым сервером достаточно собрать только клиента. mysql> use mysql;
В нашем случае все работает на одной машине.
Собираем MySQL: Удаляем все записи о правах на базы данных:
36
администрирование
Удаляем все учетные записи, которые не относятся к ру- Далее пока оставляем настройку Exim (вернемся к ней
ту и локальному хосту: позже). Продолжим подготавливать нашу базу данных
для работы Exim.
mysql> delete from user where not (user='root' ↵ Созаем файл exim.sql (см. содержание файла в прило-
and host='localhost');
жении [9]):
Создаем базу данных для Exim:
# cd /usr/local/databases
mysql> create database mail; # cat > exim.sql << "EOF"
...
EOF
Передаем права пользователю Exim на почтовую ба-
зу данных: Выполняем команды, записанные в файл. Существует
несколько способов сделать это.
mysql> grant all on mail.* to exim@localhost identified ↵ Вариант 1:
by 'youpassword';
mysql> \q Вариант 2:
ehlo mail.test.com
# cat > /usr/local/etc/rc.d/030.exim.sh << "EOF" ...
# !/bin/sh ...
AUTH PLAIN dXNlckB0ZXN0LmNvbQB1c2VyQHRlc3QuY29tAHBhc3N3b3Jk
case "$1" in 235 Authentication succeeded
start) quit
echo "starting Exim..."
/usr/sbin/exim -bd -q15m
;;
restart) Метод LOGIN:
echo "restarting Exim..."
kill -HUP `cat /var/spool/mqueue/exim-daemon.pid` # perl -MMIME::Base64 -e 'print encode_base64( ↵
;; "user\@test.com");'
stop)
echo "stopping Exim..." dXNlckB0ZXN0LmNvbQ==
kill -TERM `cat /var/spool/mqueue/exim-daemon.pid`
;; # perl -MMIME::Base64 -e 'print encode_base64("password");'
*)
echo "Usage: $0 {start|stop|restart}" cGFzc3dvcmQ=
exit 1
;;
esac Смотрим:
EOF
# telnet 127.0.0.1 25
# chmod +x /usr/local/etc/rc.d/030.exim.sh
ehlo mail.test.com
Запускаем Exim: ...
AUTH LOGIN
334 VXNlcm5hbWU6
# /usr/local/etc/rc.d/030.exim.sh start dXNlckB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
Проверяем правильность настройки и работоспособность 235 Authentication succeeded
Exim. Для этого отправим тестовое письмо сами себе. quit
38
администрирование
Метод CRAM-MD5: [X] OPENSSL Build with OpenSSL support
[X] TRASHQUOTA Include deleted mails in the quota
# telnet 127.0.0.1 25 [X] AUTH_MYSQL MySQL support
[ req_dn ]
# cd /usr/ports/mail/courier-imap C=RU
# make all install clean ST=Russia Federaton
L=Moscow
В открывшемся меню отмечаем: O=Exim Super Server
# cd ../ # openssl
OpenSSL> s_client -host localhost -port 995
40
администрирование
--with-dspam-home=/usr/local/dspam/var/spool ↵ фильтр распознал нормальное письмо как спам. Мар-
--enable-debug ↵ шрут создает виртуальный адрес вида «ham@domain»
--enable-domain-scale ↵
--enable-signature-headers ↵ и nospam@domain, где domain – имя вашего домена
--with-delivery-agent="/usr/sbin/exim ↵ (test.com) по умолчанию, на который и следует пересы-
-oi -oMr spam-scanned" ↵
--enable-whitelist ↵ лать вышеуказанные письма.
--enable-virtual-users ↵
--enable-experimental ↵
--with-logdir=/var/log/dspam ↵ spamscan_router:
--enable-neural-networking ↵ no_verify
--with-storage-driver=mysql_drv ↵ headers_remove = X-FILTER-SPAM : X-Spam-Score : ↵
--with-mysql-includes=/usr/local/include/mysql ↵ X-Spam-Score-Gate : X-Spam-Report : ↵
--with-mysql-libraries=/usr/local/lib/mysql ↵ X-Spam-Gate-Subject : X-Spam-Flag : X-S
--enable-preferences-extension condition = "${if and {{!eq ↵
# make {$received_protocol}{spam-scanned}} ↵
# make install {!def:h_X-FILTER-SPAM:}} {1}{0}}"
# cd /usr/Install/dspam-3.4.8/src/tools.mysql_drv spam_reject:
# mysql -u exim -pyoupassowrd dspam < ↵ driver = redirect
mysql_objects-4.1.sql check_local_user
# mysql -u exim -pyoupassowrd dspam < neural.sql user = exim
# mysql -u exim -pyoupassowrd dspam < virtual_users.sql group = mail
headers_add = "X-DSPAM-Rreport: Rejected"
Итак, приступаем собственно к настройке Exim для ра- condition = ${if eq ↵
{$h_X-DSPAM-Result:}{Spam}{yes}{no}}
боты с dspam. Для этого открываем /etc/mail/exim.conf
и ищем такую строчку begin routers. После вписываем сле- allow_fail = true
require_files = $local_part:/usr/local/vmail ↵
дующие строки: /${domain}/spam/$local_part
errors_to = ""
data = :blackhole:
dspam_addspam: more = false
driver = accept
expn = false
domains = +local_domains Включает удаление писем, классифицированных
local_parts = spam
transport = addspam как спам для каждого пользователя индивидуально, путем
headers_add = "X-DSPAM-REPORT: Missclassified" создания файла /usr/local/vmail/domainname/spam/usernamе.
Если файл присутствует, то письма удаляются без какого-
Этот маршрут используется для отправки писем о спаме либо уведомления, если нет, то только помечаются как спам
спам-фильтру в случаях, если спам-фильтр не распознал и доставляются как обычно.
спам и пропустил письмо как нормальное. Маршрут созда- Ищем следующую строку begin transports. После опи-
ет виртуальный адрес вида «spam@domain», где «domain» – сываем транспорты:
имя вашего домена (test.com) по умолчанию, на который
и следует пересылать вышеуказанные письма. spamcheck_transport:
driver = pipe
command = "/usr/sbin/exim -oi -oMr ↵
dspam_falsepositive: spam-scanned -bS"
driver = accept transport_filter = /usr/local/dspam/bin/dspam ↵
expn = false --stdout --deliver=innocent,spam --user ↵
domains = +local_domains $local_part@$domain --mail-from ↵
local_parts = ham:nospam "${lc:$sender_address}" ↵
transport = falsepositive --rcpt-to "${lc:$local_part}@${lc:$domain}"
headers_add = "X-DSPAM-REPORT: Falsepositive" user = exim
group = mail
use_bsmtp = true
Применяется д ля отправки писем при ошибоч - home_directory = "/usr/local/dspam/var/spool"
current_directory = "/usr/local/dspam/var/spool"
ных срабатываниях спам-фильтра, то есть когда спам- delivery_date_add = true
42
администрирование
Передаем права пользователю www на директорию # cp -R ../../squirrelmail/* .
# cd ../
logs: # chown -R www:www mail.test.com
# cd mail.test.com
# chown -R www:www logs # ./configure
Создаём кластер
для PostgreSQL
Андрей Тренин
PostgreSQL – мощная СУБД с конвейера Open Source, способная легко конкурировать с такими
гигантами, как Oracle и MS SQL. К сожалению, наряду с полезными утилитами, такими
как pg_autovacuum, в нем отсутствует возможность репликации. Что делать, если такая опция
вам необходима?
Э
та статья будет интересна чи- Немного о PostgreSQL есть несколько способов. Начинаем
тателям, имеющим начальные Это мощная система управления ре- его использовать как хранилище одно-
знания в области РБД, и бу- ляционными базами данных, подде- типных данных для сайта, или покупа-
дет полезна системным администра- рживающая расширенное подмножес- ем систему класса CRM, ERP отечест-
торам организаций, использующим тво стандарта SQL. Включает в себя: венной сборки, в принципе это не важ-
PostgreSQL (http://www.postgresql.org) транзакции, внешние ключи, подза- но. Важно то, что данных становится со
для хранения достаточно большо- просы, триггеры, пользовательские ти- временем все больше, от этого увели-
го объема информации (1 Гб и бо- пы данных, функции и многое другое. чивается их важность, и даже за крат-
лее), которая является не статичес- Причем функции могут быть написа- ковременную паузу в доступе к данным
кой, а наоборот, динамично изменя- ны на C, Perl, Python, Tcl и JDBC. Так- вам «стучат по голове» и не дают дол-
ющейся и дополняющейся, которую же следует учесть, что это чудо разра- гожданную премию.
очень легко потерять и трудно вос- ботано не на «коленках», а в University Простои в работе любого хранили-
становить в установленные руководс- of California at Berkeley (UCB). ща данных неизбежны (плановая про-
твом сроки. Как PostgreSQL «попадает в дом» – филактика, замена комплектующих
44
администрирование
или «уборщица пробралась в сервер- бутивными pg_dump/pg_restore и пос-
ную») и встает вопрос: «Как сделать ле этого все опять включить.
так, чтобы доступ к данным был воз- Преимущество данной схемы оче-
можен всегда?». Ответ прост – нуж- видно – система отключается не тог-
но иметь как минимум две параллель- да, когда она хочет, а тогда, когда за-
ные системы, взаимозаменяющие друг планируем мы, конечно же, при усло-
друга, чтобы во время простоя одной – вии низкой вероятности отказа двух
другая работала как ни в чем не быва- серверов в течение, скажем, 4-12 ча-
ло. Однако наряду с преимуществами сов, столько времени вполне хватит
данной схемы, мы получаем сопутству- для прибытия на работу и неспешно-
Рисунок 1. Общая схема работы
ющие недостатки, а именно: го восстановления работоспособнос- PGCluster
систем становится как минимум ти программных средств.
больше одной – надо думать над Ус танавливать и нас траивать
синхронизацией данных; PgPool очень легко. Допустим, у нас
поломка одной из систем – нуж- есть два сервера PostgreSQL. На один
но сделать период времени меж- из них устанавливаем демон и в кон-
ду сбоем и отключением вышед- фигурационном файле выставляем
шей из строя системы как можно ему master, другому – slave, еще не-
менее продолжительным для вне- много правим его (он всего один!), ес-
шних приложений. ли необходимо, и все – мы имеем в на-
личии репликационный сервер.
Рисунок 2. Схема репликации
Эти проблемы и некоторые менее в PGCluster
важные призвано решать реплициру- PGCluster
ющее программное обеспечение, речь PGCluster – синхронизирующаяся реп- один из кластеров БД «падает», балан-
о котором пойдет далее. ликационная система с мультимас- сер и репликационный сервер, посто-
терной композиционной схемой для янно отслеживающие жизнедеятель-
PgPool PostgreSQL. Сейчас проект имеет пог- ность кластеров БД, отделяют сломан-
PgPool – подсоединяемый пул/реп- раничный статус между стадией тести- ный кластер БД от работоспособной
ликационный сервер для PostgreSQL. рования и работающей без видимых части системы и продолжают работу
Он написан Tatsuo Ishii (t-ishii@sra. ошибок, но будем считать, что проект с оставшимися кластерами БД. После
co.jp). На сегодняшний день проект можно использовать, ибо програм- этого необходимо устранить неисправ-
имеет оттестированную версию. Раз- мных продуктов без скрытых дефек- ность упавшего сервера и подсоеди-
решается использовать по BSD-ли- тов все равно не бывает. Лицензия – нить к системе в режиме репликации.
цензии (бесплатно), можно ставить на BSD. Устанавливается на FreeBSD, После этого репликационный сервер
FreeBSD, Linux, SunOS/Solaris и собс- Linux, SunOS/Solaris. запишет данные с работающих серве-
твенно написан программный продукт Схема работы гораз до более ров поверх имеющихся на реплициру-
на всеми любимом C. сложная, чем в предыдущем случае. емом сервере плюс выполнит запросы
При ближайшем рассмотрении PGCluster состоит из трех видов серве- за время простоя в автоматическом ре-
выясняется, что PgPool представляет ров (в данном случае я советую не ис- жиме, останется только включить сер-
из себя прослойку-демон, то есть за- пользовать контексты, а разнести все вер в обычном режиме.
пускается между клиентами и хранили- по разным машинам), а именно: балан- Как мы видим, наряду с преиму-
щем данных, причем клиентов допол- сер (front-end), кластер БД (здесь дан- ществами PgPool, мы имеем еще и го-
нительно настраивать не надо, что без- ные), репликационный сервер. Хотя рячую замену, что позволяет не выклю-
условно хорошо. Этот демон может об- схема, показанная на следующем ри- чать систему целиком. В заключение
разовывать пул к PostgreSQL для огра- сунке, довольно проста (рис. 1), для то- лишь добавлю, что по начальным на-
ничения предоставленных соединений го чтобы привести систему в рабочее стройкам можно использовать макси-
самой базой данных. И, наконец, мо- состояние, может потребоваться очень мально 128 кластеров БД.
жет объединить два сервера в систе- много времени.
му (master – slave). Установка PGCluster есть установка Slony-I
PgPool посылает одинаковые SQL- PostgreSQL, ибо PGCluster и есть мо- Slony-I – это репликационная систе-
команды на оба сервера, тем самым дифицированный PostgreSQL, а вот ма по схеме «один master плюс много
достигается эффект репликации. Ес- настройка трех типов конфигураци- slave». Запускается на POSIX и этим
ли один из серверов ломается/отклю- онных файлов (по одному на каж- все сказано. Лицензия – BSD. Забе-
чается – демон пытается продолжить дый тип серверов) является задачей гая вперед, скажу – поддерживает
работу с оставшимся в живых. К сожа- не тривиальной. Сколько нужно на- динамическое реконфигурирование
лению, чтобы ввести сервер обратно строить параметров, станет очевид- кластера.
в строй, придется остановить всю сис- ным после рассмотрения схемы реп- Данный проект задумывался как
тему, провести синхронизацию данных, ликации (рис. 2). репликационная система, независя-
например утилитой rsync или дистри- Рассмотрим самое тяжелое. Когда щая от какой-то конкретной версии
46
сети
Малоизвестные
подробности
работы NAT
Ильяс Кулиев
NAT, поистине, спасение для системного администратора, когда нужно быстро подключить
к Интернету локальную сеть. Но все ли вы о нём знаете?
NAT и его реализации Inside Global (IG). Это внешний Outside Local (OL). Это адрес,
Используя терминологию Cisco, в кон- адрес, при отправлении пакетов под которым адреса внешних хос-
тексте NAT есть четыре основных опре- на который они будут доставлены тов видны внутри локальной се-
деления для IP-адресов. Рассмотрим на хост с адресом IL. В данном слу- ти. В данном случае, если мы от-
их на примере, показанном на рис. 1. чае для хоста 10.0.0.100 адресом IG правляем пакет от 10.0.0.100 для
На обоих маршрутизаторах делается является 111.222.0.1. 172.16.0.100, для хоста 172.16.0.100
NAT (network address translation). Outside Global (OG). Внешний ад- это будет выглядеть так, будто па-
При этом: рес хоста, доступ к которому мы кет пришёл от 172.16.0.1 (адрес
Inside Local (IL). Это адрес, присво- хотим получить из нашей локаль- OL).
енный хосту, находящемуся в ло- ной сети. В данном случае, если
кальной сети. В данном случае ад- мы отправляем пакет от 10.0.0.100 Простейший случай NAT – это
реса 10.0.0.100 и 172.16.0.100 – ад- для 172.16.0.100, адресом OG будет трансляция адресов IL в IG и наоборот.
реса IL. 111.222.0.2. При этом маршрутизатор, выполняю-
48
сети
50
сети
сообщении (1.2.3.4) совпали, клиент сделал бы вывод,
что на пути пакетов NAT отсутствует. В этом случае кли-
ент и сервер обменялись бы еще парой запросов-отве-
тов, на основании которых можно было бы определить,
не находится ли по пути между ними firewall, блокиру-
ющий входящие пакеты UDP. Поскольку они не совпа-
дают, очевидно, что на пути между клиентом и серве-
ром находится NAT. В этом же сообщении сервер ин-
формирует клиента о своем альтернативном IP-адресе
(11.22.33.2) и номере порта (3478).
После этого клиент отправляет второе зондирующее со-
общение, в котором установлен специальный флажок,
указывающий серверу, что клиент ожидает ответа с аль-
тернативного IP-адреса сервера (11.22.33.2), и с другим
номером порта источника. Если клиент получает ответ
на этот запрос, делается вывод, что находящийся по пу-
ти между ними NAT относится к Full Cone типу. Рисунок 3. Алгоритм работы STUN
Если ответ на предыдущий запрос не был получен, кли-
ент повторяет свое первое зондирующее сообщение на
альтернативный адрес STUN сервера. Если в получен-
ном ответе адрес и номер порта отличаются от указан-
ных в первом ответе, это означает, что этот запрос ини-
циировал появление в таблице NAT новой записи. Такое
поведение характерно исключительно для Symmetric
NAT.
Если адрес и номер порта в полученном ответе остались Рисунок 4. Пример FTP-сессии
такими же, какими они были в первом ответе, то NAT от-
носится к типу Restricted Cone. Осталось установить, яв- Такой же результат получен для маршрутизатора, пос-
ляется ли он Address Restricted или Port Restricted. Для троенного на основе FreeBSD 4.9, на которой NAT выпол-
этого клиент отсылает четвертое сообщение, в котором нялась демоном natd.
установлен флажок, указывающий серверу, что он дол- Осталось объяснить, что такое «random port», «preserves
жен ответить, используя порт источника с другим номе- ports» и «no hairpin» в приведенных выше результатах.
ром. Если ответ был получен, NAT относится к Address Посмотрим еще раз на строчку из таблицы NAT в на-
Restricted Cone, если нет – то к Port Restricted Cone. шем примере:
52
bugtraq
Защищаем Windows-системы
с помощью CORE FORCE
Сергей Яремчук
Несмотря на все заявления разработчиков, Windows так и не стала сверхзащищенной
системой, способной противостоять современным угрозам. И вряд ли кто-то уверен,
что традиционно используемые средства защиты способны полноценно защитить компьютер
от неизвестных 0-day-атак. Только комплексный подход способен решить эту проблему.
В
UNIX-подобных операционных ся не только в разные ветки реест- тыре основных параметра: входящие
системах давно известны ре- ра, но и в индивидуальных конфигу- и исходящие сетевые пакеты, доступ
шения, позволяющие остано- рационных файлах. Все это порожда- к файловой системе и реестру, целос-
вить неизвестную атаку путем прину- ет некий бардак, так как программа тность исполняемых файлов. Эти воз-
дительного ограничения рабочего про- должна иметь доступ во множество можности могут быть сконфигурирова-
странства приложения, глобально че- мест, что отследить гораздо труднее, ны как на системном, так и приклад-
рез chroot или более тонко RSBAC, LIDS да и пользователь традиционно имеет ном уровнях для специфических про-
и пр. В последнем случае поступают самые высокие права в системе. Так- грамм (почтовых клиентов, веб-бра-
очень просто. Запускают приложение же не вызывает сомнений, что UNIX- узеров, видео- и аудиопроигрывате-
и наблюдают, к каким файлам проис- пользователь, подготовлен на поря- лей и пр.). Каждому приложению мож-
ходит обращение и какой режим – чте- док лучше пользователя Windows, ко- но дать доступ к определенным час-
ние/запись – требуется. Затем в резуль- торый обычно полностью полагается тям файловой системы и реестра, со
тате создается профиль приложения, на работу мастеров, часто не вникая строгим ограничением прав, только на
который и описывается в виде правил, в подробности. Поэтому последний чтение или возможность модификации
контролируемых на уровне ядра. Если скорее всего не будет в восторге от то- объектов. Также определяется разре-
приложение попробует выйти за ука- го, что придется описывать поведение шенная конкретному приложению се-
занные рамки, то такое действие в за- для каждой устанавливаемой им про- тевая активность.
висимости от настроек может быть за- граммы. А если их десятки? Но должен CORE FORCE бесплатен как для
прещено. Безотказно в UNIX действуют же быть выход? некоммерческого, так и для коммер-
и утилиты контроля целостности. Стоит ческого использования. Распростра-
только измениться какому-то важному Подход CORE FORCE няется по лицензии Apache 2.0 (http://
файлу, как администратор будет опове- Вероятно, разработчиков CORE FORCE [1] www.apache.org/licenses/LICENSE-2.0).
щен. Но для Windows реализовать та- эти и другие проблемы не смогли ос- Все профили безопасности, доступные
кую вроде бы довольно простую систе- тановить, и была создана система, ко- в сообществе CORE FORCE или по-
му как-то не решались. Причин здесь, торая при правильной настройке спо- данные зарегистрированными поль-
вероятно, много, и сказать, какая из них собна решить задачу по защите пер- зователями, распространяются по
является решающей довольно трудно. сонального компьютера от вирусов, Creative Commons лицензии (http://
В UNIX и Windows не только разные известных и неизвестных уязвимос- creativecommons.org/licenses/by-nc-sa/
архитектуры, но и строение файло- тей, шпионских программ, червей, 2.5), гарантирующей, что все могут
вой системы. Так, в UNIX все исполня- троянских программ и прочих подар- пользоваться этими профилями и со-
емые файлы согласно стандарта фай- ков, которыми традиционно богат се- здавать на их основе свои.
ловой системы традиционно собраны годняшний Интернет. CORE FORCE
в одном месте (/bin, /sbin и пр.), стати- представляет собой несколько нетра- Принцип работы
ческие конфигурационные – в другом, диционное решение по обеспечению CORE FORCE
а растущие журналы – в третьем, поль- безопасности персональных компью- CORE FORCE состоит из нескольких
зователи также ограничены своим ра- теров, работающих под управлением модулей, контролирующих определен-
бочим пространством. Это все доволь- Windows 2000 и XP. ные компоненты на предмет имеющих-
но легко описать при помощи простых Это узловая система предотвраще- ся разрешений. В настоящее время до-
правил. В Windows все несколько слож- ния атак (host-based Intrusion Prevention ступны три таких модуля, работающих
нее. Файлы раскиданы по разным ка- System – H-IPS) с интегрированным се- в режиме ядра контролирующих сете-
талогам, настройки могут сохранять- тевым экраном. Контролируется че- вых соединений, защищающих файло-
54
безопасность
вую систему и реестр (рис. 1). Кроме В качестве фильтра пакетов исполь-
того, имеются два дополнительных мо- зуется порт OpenBSD Packet Filter (PF).
дуля Policy Developer и Force Repository, Реализация CORE FORCE включает
работающих в пространстве пользо- два драйвера. Основную функциональ-
вателя. Первый обеспечивает пользо- ность берет на себя miniport driver (croxy.
вательский интерфейс для настройки sys), использующий стандарт NDIS
профилей защиты программ, запус- (Network Driver Interface Specification)
каемых на компьютере. Работающий API для связи драйверов сетевых карт
в виде системного сервиса LocalCPA. с приложениями операционной систе-
exe модуль Force Repository предназна- мы. Этот драйвер, располагаясь внизу
чен для хранения конфигураций обо сетевого стека, контролирует все вхо-
всех разрешениях для всех профилей дящие и исходящие сетевые пакеты,
безопасности, обеспечивает подде- защищая в том числе и стек операци-
ржание базы в целостности, обновле- онной системы.
ние ее через Policy Developer, импорт и Другой драйвер (tdifilter.sys, TDI –
экспорт профилей безопасности. Transport Dispatch Interface) работает Рисунок 1. Взаимодействие модулей
CORE FORCE
Централизованное управление за- на более высоком транспортном уров-
грузкой в память базы данных, которая не, помогая NDIS отслеживать сете-
содержит все разрешения, обеспечи- вые связи каждого процесса, синхро-
вает диспетчер (dispant.sys), также ра- низировать запросы для разрешенных
ботающий в пространстве ядра. Кро- пользовательских соединений. Драй-
ме того, диспетчер обеспечивает API, вера, защищающие файловую систему
позволяя подключить при необходи- и реестр, имеют аналогичное функци-
мости любые другие модули контро- ональное назначение для своих типов
ля. Диспетчер играет роль посредни- объектов. Располагаются в alpha2.sys
ка между модулями защиты, выполня- и alpha2r.sys. Из-за своей позиции Рисунок 2. Выбор уровня безопасности
ющимися в пространстве ядра, и мо- в операционной системе они могут пе- мя иметь доступ только к разрешен-
дулями, работающими в пространстве рехватывать системные вызовы про- ным объектам. Но в разных условиях
пользователя. цессов, пытающихся получить доступ (доверенная сеть, Интернет, запуск не-
Например, сетевой модуль полу- к любому файлу или объекту реестра, понятной утилиты) могут потребовать-
чает сведения о попытке получения а также вызовы, которые были сдела- ся различные разрешения, как более
доступа программой, запрос на под- ны компонентами ядра. жесткие блокирующие, всякую подоз-
тверждение этого действия отсылает- рительную деятельность, так и легкие,
ся диспетчеру. Если в базе данных дис- Организация профилей не отвлекающие при работе.
петчера записано, что такое действие безопасности Для более гибкой их организации
необходимо запретить или разрешить, Описание работы будет неполным без каждый профиль безопасности име-
ответ отсылается обратно. Если реше- рассказа об организации профилей бе- ет набор уровней безопасности: High,
ние принимает пользователь, то дис- зопасности. Действительно, установка Medium, Medium-Low, Low и Custom.
петчер связывается с Policy Developer всех разрешений для большого коли- Каждый сконфигурирован с таким
и ожидает ответа. Диспетчер миними- чества приложений при неправильном расчетом, чтобы обеспечить необхо-
зирует использование памяти, загру- подходе может свести на нет все уси- димый баланс. Пользователю в боль-
жая только необходимые в данный мо- лия. Пользователь может просто запу- шинстве случаев достаточно просто
мент разрешения для текущего уровня таться и либо забросить настройку сис- выбрать необходимый уровень, не вни-
безопасности. Хранение разрешений темы, либо настроить ее неправильно. кая в подробности, а просто почитав
на том же уровне, на котором работа- В CORE FORCE конфигурация разре- описание (рис. 2). Гибкости этой схе-
ют модули защиты, позволяет миними- шений сделана таким образом, чтобы ме добавляет то, что уровень безопас-
зировать потери на переключение кон- обеспечить максимальную гибкость ности выставляется не один на всех,
текста из режима ядра в режим поль- и возможность их повторного исполь- а используется более индивидуаль-
зователя. Кроме того, диспетчер пере- зования. Так, для установки разреше- ный подход. То есть можно систем-
водит переменные в свои фактические ний, которые могут быть применены ный уровень выбрать одним, програм-
величины, т.е. например, расшифровы- к любой программе, можно использо- мам же выставить другие уровни. И те-
вает полный путь к файлу. вать 2 комплекта: системный и индиви- перь при открытии документа Acrobat
Модуль межсетевого экрана филь- дуальный. Если конкретной программе Reader не будет каждый раз запраши-
трует сетевые пакеты, основываясь не указаны разрешения, то будет ис- ваться разрешение, а почтовый клиент
на инструкциях, соединяет програм- пользоваться встроенный, т.е. систем- для отправки и приема почты будет ис-
му с соответствующим текущему про- ный набор разрешений. Такие наборы пользовать только указанные сервера
филю безопасности набором правил, разрешений группируются в профили и спрашивать подтверждение на боль-
которые загружаются во время запус- безопасности, позволяющие програм- шинство потенциально опасных опера-
ка программы. ме нормально работать, но в то же вре- ций (запись в реестр, например).
56
безопасность
понять принцип его работы. Для удобс- ность, но нормально работать он на-
тва переноса между компьютерами ис- чал только после полной очистки сис-
пользуются переменные, как общесис- темы от следов CORE FORCE. И еще
темные вроде [ProgramFiles], так и ус- один неприятный момент, о котором
танавливаемые пользователем. Напри- написано на сайте, и эксперименты это
мер, моя локальная сеть выглядит так. подтвердили. CORE FORCE игнориру-
ет работу с PPPoE, в том числе и ADSL.
<Alias Confidential="Yes" ↵ Сетевой модуль защиты просто не ви-
Name="Local Network">
<Address> дит это соединение, хотя соответству-
<Single Value="192.168.1.0"/> ющий драйвер во вкладке «Свойс-
</Address>
</Alias> тва» просматривается, но модули за- Рисунок 3. Во время установки
щиты файлов и реестра по-прежнему необходимо подтвердить неподписанный
драйвер
После переноса в новую систему работают. В текущей версии 0.70.105
достаточно только изменить значе- не предусмотрена какая-либо защита
ние переменных на актуальные для настроек или привязки к конкретному
текущего компьютера. Для программ, пользователю, поэтому защитить сис-
еще не имеющих подготовленный про- тему от действий пользователя, обла-
филь безопасности, предусмотрен ре- дающего какими-либо правами в сис-
жим обучения. теме, при помощи CORE FORCE не по-
лучится. Такие возможности плани-
Совместимость руются в будущих релизах. Хотя со-
и системные требования четание системных настроек и CORE
Компьютер Celeron 633 с 256 ОЗУ и ус- FORCE на порядок поднимает общую
тановленным Windows XP SP2 заметно защищенность компьютера.
притормаживает при работе с CORE Рисунок 4. Программа установки ищет
известные программы
FORCE. Поэтому предложенные раз- Установка CORE FORCE
работчиками минимальные системные Установка является стандартной для ма не совпадает. Это не означает нали-
требования – Pentium III 800 и 128 ОЗУ, – Windows. Скачиваем исполняемый чие вируса или чего-нибудь еще. Ско-
можно считать, выбраны обоснованно. файл размером 8,72 Мб и запускаем. рее всего дело в другой версии утили-
Но это еще не все неприятности. CORE В процессе установки программа ав- ты. Обновить сигнатуры для всех най-
FORCE вмешивается в работу сетевых томатически скачивает пакет Windows денных программ можно, поставив га-
и системных сервисов, что не может Installer [3], если нет соединения с Ин- лочку в «Update unrecognized signatures
нравиться антивирусным программам тернетом, либо планируется примене- to match those found on your computer».
и межсетевым экранам. На странице ние CORE FORCE на нескольких ком- Следующим шагом программа запро-
проекта [4] имеется список совмести- пьютерах, этот пакет необходимо ска- сит указать сетевые настройки (Local
мости (и несовместимости тоже) та- чать и установить самостоятельно. Network, Broadcast, DNS), которые
ких программ. В последний попали та- В процессе установки появится сооб- можно затем отредактировать, зайдя
кие продукты, как Norton Antivirus 2004, щение о кратковременном отключе- в Aliases. После перезагрузки в трее
Sophos Anti-Virus 5.05 и Panda Titanium нии соединений с Интернетом и про- появится еще один значок , по щел-
2006 Anti-Virus + Antispyware v5.0.1.00 сьбе закрыть все соединения. В моем чку на нем можно активировать, де-
(на сайте указано, что не работает случае соединение с Интернетом так активировать CORE FORCE и вы-
в Windows 2000 SP4, зато работает и не восстановилось (вероятно, из-за звать Policy Developer для настройки.
с Windows XP SP2). Разработчики обе- проблем с Outpost). А во вкладке «Свойства сетевого со-
щают постепенно устранить проблемы. Если установка производилась единения» появится новый драйвер
Список совместимых программ немно- в Windows XP, то появится еще одно «Сore Force Network Driver».
го больше: AVG Anti-Virus (на сайте ука- сообщение (рис. 3) о том, что нет сер- В особо тяжелых случаях систе-
зана версия 7.0.334, у меня более ста- тифицированной подписи на ПО. Здесь ма после установки CORE FORCE мо-
рая 6.0.754 работала также без про- подтверждаем установку. В процессе жет не захотеть загружаться. Для ус-
блем), Kaspersky Anti-Virus Personal установки будет проведен поиск из- транения этого необходимо перейти
v5.0.388, BitDefender Free Edition v8, вестных программе утилит и сравнение в Safe Mode, нажав <F8> при загрузке,
MCAFEE VirusScan 2006 v10, Sophos сигнатур, в результате пользователю и воспользоваться Core Force Recovery
Anti-Virus v5.05, NODE32 v2.5, eTrust EZ будет выведен результат (рис. 4). От- Console (RecoveryConsole.exe), кото-
Antivirus v7.0.8.1, F-Prot Antivirus v3.16c вет «No» говорит, что такая программа рый поможет деактивировать драйве-
и Trend Micro PC-Cillin Internet Security не найдена, «Yes» – программа найдена ра и отключить автоматический старт
2005 v12.0 и 2006 v14.0. и контрольная сумма совпадает с име- CORE FORCE при загрузке.
Как видите, в списках одни анти- ющейся в базе данных. Но, скорее все-
вирусы. Но у меня после установки го, вы получите ответ «Yes, but signature Работа с CORE FORCE
CORE FORCE намертво завис Outpost is invalid», говорящий о том, что про- Окно Policy Developer, показанное
версий 2.5 и 3.0. Возможно, и случай- грамма найдена, а контрольная сум- на рис. 5, визуально разделено на две
58
безопасность
Рисунок 8. Выбор вариантов создания Рисунок 9. Некоторые приложения имеют Рисунок 10. Выбор уровня исследования
профиля безопасности несколько вариантов профилей программы мастером самообучения
Расширяем возможности
MailScanner
Сергей Яремчук
В прошлой статье [1] вы рассмотрели возможности и установили почтовый сканер MailScanner.
Сегодня мы познакомим вас с дополнительными программами, позволяющими просмотреть
статистику работы системы защиты электронной почты.
Веб-интерфейс MailWatch Просмотр статуса работы вирус- рые параметры объяснены плохо, по-
MailWatch [2] представляет собой инс- сканера (пока только для Sophos), этому пройдем все три этапа. Для ра-
трумент, предназначенный для рабо- базы данных MySQL и вывод фай- боты потребуются права суперпользо-
ты и настройки MailScanner, использу- ла настроек MailScanner. вателя. Распаковываем файл с архи-
ющий веб-технологии. Написан на PHP, При работе с Sendmail имеется воз- вом в рабочий каталог.
MySQL и JpGraph, распространяется можность проверить и вывести раз-
под лицензией GNU GPL. Для запи- меры очереди почты и информа- # tar xzvf mailwatch-1.0.2.tar.gz
# su mailwatch
си в базу данных применяются свои цию о пересылке.
собственные функции пользователя Разграничение информации для И приступаем к созданию баз и таб-
(CustomFunctions). пользователей, домена и админис- лиц.
Основные возможности: тратора. Поддержка XML-RPC поз-
Отображение очереди входящей воляет использовать несколько ин- # /etc/init.d/mysqld start
и исходящей почты (пока только сталляций MailScanner/MailWatch Starting safe_mysqld service: [ DONE ]
для Sendmail/Exim), вывод инфор- как единое целое.
мации о средней загрузке и коли- Вывод самых разнообразных отче- Таблицы можно создавать и вруч-
честве сообщений за текущий день, тов. ную, но проще воспользоваться гото-
спаме, вирусах и блокированного вым скриптом.
контента. Настройка MailWatch
Подсвечивание недавно обрабо- Процесс настройки MailWatch мож- # mysql –u root -p < create.sql
танной почты. но условно разделить на три час- Enter password: ******
Вывод подробной информации по ти: создание необходимых баз и таб-
каждому сообщению. лиц в MySQL, изменение парамет- Создаем пользователя, от имени
Управление почтой, попавшей в ка- ров доступа веб-сервера и редакти- которого MailWatch будет работать с
рантин (т.е. ее можно просматри- рование конфигурационного файла базой данных.
вать, разрешать, удалять, переобу- MailScanner.conf. В документации этот
чать спам-фильтры). процесс описан подробно, но некото- # mysql –u root -p
60
безопасность
Enter password: ****** mysql> INSERT INTO users VALUES ↵
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost ('grinder@test.ru',md5('pasword'),'sergej','A','1');
IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.12 sec) Query OK, 1 row affected (0.46 sec)
62
безопасность
Disk Space Used in Work Filesystem – занятость в про-
центном отношении файловой системы рабочего ка-
талога MailScanner (на него указывает переменная
MailScanner Work Directory в конфигурационном файле).
Чаще всего его значение совпадает со следующим, но
введен из-за того, что часто рабочий каталог для уско-
рения обработки выносят в tmpfs.
Disk Space Used in Spool Filesystem – занятость в про-
центном отношении файловой системы рабочего ката-
лога MTA (на него указывает переменная Spool Directory
в конфигурационном файле).
Server Network Traffic – общий сетевой трафик для ука-
занных сетевых интерфейсов (определяется перемен-
ной Interfaces to Monitor в конфигурационном файле).
С работой этой системы можно ознакомиться, обратив- Рисунок 1. Создание нового пользователя для доступа
к MailWatch
шись к [7], правда, на момент написания статьи там была ус-
тановлена более ранняя версия (текущая 0.10). Установка ни-
каких сложностей не представляет. Скачиваем архив разме-
ром 64 Кб, распаковываем и даем команду ./install.pl внутри
каталога (некоторые опции можно просмотреть, используя
ключ-help). После чего скрипт выведет текущие настройки.
Location of perl: /usr/bin
Installation Prefix: /usr
Program Location: ${prefix}/sbin
Libraries Location: ${prefix}/lib
Documentation Location: ${prefix}/share/doc
Man pages Location: ${prefix}/share/man
MRTG Config directory: /etc/mrtg
MailScanner Config directory: /etc/MailScanner
WWW root: /var/www/html
Apache configuration dir: /etc/httpd/conf
Location of mrtg: /usr/bin/mrtg
Location of uptime: /usr/bin/uptime
Use SNMP: n
Cron job in cron.d: /etc/cron.d
Рисунок 2. Вывод статистики MailScanner-MRTG
Далее все файлы будут скопированы на свои места,
и будет предложено отредактировать конфигурационный Анализ почты с Vispan
файл mailscanner-mrtg.conf, который затем будет помещен Vispan (VIrus and SPam ANalyser), представляющий собой
на свое место, т.е. в /etc/mrtg. Файл хорошо комментиро- Perl-скрипт, анализирующий файлы журналов и использу-
ван, имеются готовые шаблоны, некоторые опции приведе- ющий библиотеку GD для построения графиков (полный
ны выше, некоторые совпадают с MailScanner.conf, поэтому список зависимостей найдете на сайте). Последняя версия
особенных трудностей при его редактировании возникнуть 2.0.2 датирована 6 января 2004 года, поэтому можно пред-
не должно. Обязательно проверьте правильность всех путей положить о приостановке работ. Тем не менее Vispan имеет
в файле и установки MTA. В крайнем случае картинки с не- свои особенности, о которых следует рассказать. Проект [4]
правильными параметрами будут пустыми, и вы сами смо- немного похож по возможностям на предыдущий, только его
жете быстро определить проблему. Главным является Perl- графики больше ориентированы на статистику сообщений,
скрипт /usr/sbin/mailscaner-mrtg с модулями, расположенны- и меньше выводят системную информацию. С его помощью
ми в каталоге /usr/lib/MailScanner-MRTG/MSMRTG. MRTG получите полную статистику о размере очереди входящих
традиционно генерирует графики через определенное вре- и исходящих сообщений, включая спам и вирусы (количес-
мя. Для этого используется скрипт mailscanner-mrtg.crond, тво и процент от общего числа), времени прохождения по
который после установки должен лежать в /etc/cron.d. MailScanner, количестве блокированных IP-адресов, време-
ни последнего обновления антивирусных баз. Кроме того,
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mailscanner-mrtg будет выведен список наиболее часто попадающихся ви-
русов и спама. Кроме вывода статистики сценарий может
То есть скрипт будет выполняться каждые 5 минут. автоматически добавлять адреса спамеров в конфигура-
Для проверки работоспособности лучше выполнить эту ко- ционный файл sendmail или в правила iptables. Этот адрес
манду в консоли и проследить за отсутствием ошибок. может автоматически удаляться после указанного проме-
Перезапускаем веб-сервер и заходим по адресу жутка времени. Если с этого адреса спам будет получен
http://localhost/mailscanner-mrtg (рис. 2). По щелчку на кон- вторично, то промежуток времени нахождения в черном
кретном графике будет выдана статистическая информа- списке будет каждый раз удваиваться. Ознакомительная
ция за день, неделю, месяц и год. версия доступна по адресу [8].
Литература и ссылки:
Рисунок 5. При помощи модуля webmin настройка многочисленных 1. Яремчук С. Защищаем электронную почту средствами
параметров заметно упрощена
MailScanner. – Журнал «Системный администратор», №12, де-
Установка также проста. кабрь 2005 г. – 45-51 с.
2. Сайт проекта MailWatch – http://mailwatch.sourceforge.net.
# wget -c http://www.while.homeunix.net/mailstats/ 3. Сайт проекта mailscanner-mrtg – http://mailscannermrtg.
Vispan-2.0.2.tar.gz
# tar xzvf Vispan-2.0.2.tar.gz sourceforge.net.
# cd Vispan-2.0.2 4. Сайт проекта Vispan – http://www.while.homeunix.net/mailstats.
# perl Makefile.PL
5. Сайт проекта mailscanner-webmin – http://lushsoft.dyndns.org/
Checking if your kit is complete... mailscanner-webmin или http://sourceforge.net/projects/msfrontend.
Looks good
Writing Makefile for Vispan 6. Яремчук С. Упрощаем себе жизнь с Webmin. – Журнал «Сис-
темный администратор», №7, июль 2004 г. – 34-37 с.
Здесь могут быть сообщения о ненайденных модулях, 7. О з н а ко м и те л ьн а я в е р с и я M ailS c anner- mr tg – ht tp : / /
их необходимо будет установить. mailscannermrtg.sourceforge.net/mailscanner-mrtg.
8. Ознакомительная версия Vispan – http://hosting.boys-brigade.
# make install org.uk/mrtg.
64
bugtraq
(c) Windows
Крис Касперски
Отчаявшись справиться со своими же собственными ошибками, компания Microsoft совместно
с Intel и AMD реализовала технологию DEP, призванную покончить с удаленными атаками раз
и навсегда, но этого не произошло, и защиту удалось обойти.
Н
есмотря на все усилия, выры- ный опыт реальных атак»). Львиная до- тузиазма и встала на коммерческий
тые рвы и воздвигнутые защит- ля таких ошибок находится в Internet поток с большими вложениями. Сто-
ные сооружения, интенсивность Explorer, что, в частности, и явилось имость гарантированно работающего
удаленных атак не снижается, и отра- причиной перехода NASA на FireFox эксплоита зачастую доходит до $2 000.
жать их становится все труднее. Хаке- (http://www.securitylab.ru/news/242844. Можно только догадываться, кому и за-
ры научились маскировать вредонос- php?R1=RSS&R2=allnews), что можно чем это нужно…
ные процессы под LINUX/BSD и NT, ра- только приветствовать. Однако FireFox В очередной раз возникло понима-
зобрались с брандмауэрами и освои- (как и все остальные браузеры) не сво- ние, что «дальше так жить нельзя» (c)
лись с распределенными системами – боден от ошибок, и в нем присутствует и нужно что-то решать. Попытки по-
сотни тысяч зараженных машин, уп- большое количество критических уяз- кончить с удаленными атаками неод-
равляемых через IRC, – это настоя- вимостей, позволяющих злоумышлен- нократно предпринимались еще с 80-х
щая армия, очень мощная и разруши- нику выполнить свой код (далее по тек- годов, особенно после Червя Морриса,
тельная. Интересы отдельных пользо- сту называемый shell-кодом). Вот но все безуспешно. Как говорят в этих
вателей, пострадавших от атаки, от- только одна из таких дыр: http://www. случаях американцы: серебряной пу-
ходят на задний план, уступая место securitylab.ru/vulnerability/240254.php. ли нет! Оборотня не убить! Тем не ме-
вопросам безопасности всей инфра- Никакое программное обеспече- нее, Microsoft решилась на отчаянный
структуры в целом. А инфраструкту- ние небезопасно! Даже если своевре- шаг и возродила старые идеи, отры-
ра – это уже серьезно. менно устанавливать свежие заплат- тые на помойке истории и реализо-
Анализ показывает, что подавля- ки, всегда существует риск, что хакер ванные без учета понимания ситуа-
ющее большинство атак использу- найдет новую дыру, о которой еще ник- ции наших дней.
ют ошибки переполнения, фундамен- то не знает, и с успехом воспользуется Технология DEP (Data Execution
тальную природу которых мы уже об- ею. Кстати говоря, разработка атакую- Protection – защита от выполнения дан-
суждали (см. «Ошибки переполнения щих программ за последние несколь- ных), реализованная в Windows XP SP2
буфера извне и изнутри как обобщен- ко лет поднялась с колен чистого эн- и Server 2003 SP1, делает секцию дан-
66
безопасность
ных, стек и кучу неисполняемыми, только там он называется NX (от No-
что (теоретически) предотвращает eXecute – не выполняемый). Кому-то
засылку shell-кода и отсекает целый в компании пришла в голову «здравая»
класс удаленных атак, основанных мысль объявить x-атрибут «технологи- Рисунок 1. Схематичное изображение
на переполнении. ей», и вокруг NX-бита тут же развер- стека. Стрелка показывает направление,
в котором растет стек. Локальный буфер
В чем же революционность та- нулась рекламно-маркетинговая ак- «растет» в противоположном направлении
кого решения? Ведь еще со времен ция «Enhanced Virus Protection» (рас- и при определенных обстоятельствах
может затирать адрес возврата
Windows 95 (не говоря уже про стан- ширенная вирусная защита), или со-
дарт POSIX, принятый в 1985 году) x-ат- кращенно EVP. На сайте компании вы-
рибут (от eXecutable – исполняемый) ложено множество красочных роликов,
имеется только у кодовой секции и от- демонстрирующих, как AMD борется
сутствует у всех остальных. Достаточ- с вирусами на уровне процессора (!).
но взять любой ELF/PE-файл и посмот- Неудивительно, что 64-битная редак-
реть! Так-то оно так, но… у x86-процес- ция NT от рождения имеет неисполня-
Рисунок 2. «Эмуляция» NX/XD-битов
соров на этот счет имеется свое собс- емую кучу и стек! Microsoft просто под- на x86-процессорах
твенное мнение: на уровне страниц хватила брошенный ей атрибут защи-
процессор поддерживает всего лишь ты и встроила его в систему, чтобы
два атрибута защиты: -a- (от accessed – лишний раз продемонстрировать, что
страница доступна для чтения/испол- она не отстает от прогресса. В этом-то
нения) и -w- (от write – запись в стра- и заключается сущность аппаратного
ницу разрешена). Никакого x-атрибу- (hardware-enforced) DEP.
та в PTE нет, и он присутствует толь- Воспользовавшись шумихой, раз-
ко в таблице селекторов, а это зна- вернутой AMD, компания Intel внед-
чит, что мы не можем выборочно раз- рила поддержку XD-бита в 32-раз-
решать/запрещать исполнение кода рядные Pentium, сделав эту «техноло-
для отдельных страниц, а только для гию» доступной всем и каждому (же-
всего сегмента целиком. Вот потому лающих пересесть на AMD-64 ради
Рисунок 3. Организация виртуальной
Windows с ее плоской моделью памяти одного лишь DEP набралось не так уж памяти
вынуждена трактовать атрибут -r- как и много). Строго говоря, Nx присутс-
-x-, а -x- как -r-. То есть, право на чтение твует не только в «настоящих» 64-бит-
страницы дает неявное право на ее ис- ных процессорах от AMD, но и в соб-
полнение и наоборот. ранных на 64-битном ядре 32-битных
На самом деле, никакого произвола (т.е. работающих в состоянии перма- Рисунок 4. NX-бит — новый атрибут
защиты в PDE/PTE
со стороны процессора здесь нет: про- нентной эмуляции i386) процессо-
блему можно решить и в рамках плос- рах – например, Sempron (около 99$ Если процессор не поддерживает
кой модели. Достаточно «всего лишь» за штуку). Достаточно лишь воткнуть NX/XD-битов, система активирует про-
перегруппировать сегменты и устано- последний Pentium-4 и обновить яд- граммный (software-enforced) DEP, ко-
вить правильные лимиты (см. рис. 2). ро, чтобы Windows могла задейство- торый даже и не пытается эмулировать
Естественно, это требует больших те- вать новые аппаратные возможности, неисполняемый стек/кучу (а ведь мог
лодвижений со стороны разработчиков и тогда при попытке выполнения при- бы!). Технология, которую продвигает
ядра (необходимо использовать разде- кладного кода в куче, секции данных Microsoft, в действительности пред-
льные ITLB/DTLB и т. д.), что их совсем или в стеке возбуждается исключе- ставляет собой примитивную защиту
не вдохновляет. ние типа STATUS_ACCESS_VIOLATION обработчика структурных исключений,
Почему же в x86 не была предус- (C0000005h), и если только програм- ранее известную под именем SafeSEH.
мотрена возможность задания x-ат- мист не установил свой обработчик Она никак не препятствует выполне-
рибута на уровне страниц? Ритори- SEH, выполнение программы аварий- нию shell-кода, но затрудняет исполь-
ческий вопрос… Скорее всего, во вре- но завершается с выдачей сообщения зование им структурных исключений,
мена проектирования 80386 это было «to help protect your computer, Windows если тот вдруг решит их использовать.
никому не нужно, вот и решили не ус- has closed this program» (см. рис. 5). Подробнее об этом можно прочитать в
ложнять логику процессора без необ- В режиме ядра при попытке вы- статье «SEH на службе контрреволю-
ходимости. А вот в Itanium этот атри- полнения кода в неисполняемой об- ции», электронная копия которой ле-
бут присутствует изначально, и специ- ласти памяти возбуждается исклю- жит на сервере ftp://nezumi.org.ru.
альный бит, известный под аббревиа- чение ATTEMPTED_EXECUTE_OF_ Мы будем обсуждать только ап-
турой XD (от eXecute Disable – выпол- NOEXECUTE_MEMORY c BugCheck- паратный DEP, поскольку его слож-
нение запрещено), определяет, раз- кодом FCh, обрушивающим систе- нее всего обойти. Некоторые даже
решено ли выполнение кода в данной му в «синий экран». 64-битные вер- считают, что это невозможно вооб-
странице или нет. сии NT защищают от исполнения стек ще: «…на сегодняшний день не су-
Аналогичный бит имеется и в про- ядра, paged- и session pool, а 32-бит- ществует ни одного хотя бы концеп-
цессорах AMD-64 (Opteron и Athlon 64), ные – только стек. туального эксплойта, на практике до-
68
безопасность
стек неисполняемым неоднократно Со сторонними производителя- Таблица 1. Влияние уровня политики
на безопасность
предпринимались еще в 70-80-х го- ми дело обстоит еще хуже. Навес-
дах, когда никакого Windows и в про- ные упаковщики и протекторы, ис- Параметр Значение
70
безопасность
значить нужные права, скопировать memcpy(REMOTE_BASE, SHELLCODE_BASE, ↵
туда свой shell-код и передать ему уп- SHELLCODE_LENGTH);
GOTO shell_code;
равление. С выделением никаких про-
блем нет – берем VirtualAlloc и вперед. Маленький нюанс – 64-битные
Как прочитать возвращенный указа- редакции NT передают аргументы
тель – вот в чем вопрос! Функция пе- API-функциям через регистры, и по-
редает его в регистре EAX, и заранее тому вызывать VirtualAlloc на них уже
предсказать его значение невозмож- не удастся (разумеется, речь идет толь-
но. А ведь хакер должен сформировать ко о 64-битных приложениях). То есть
указатель и затолкать его в стек еще вызывать-то удастся, а вот передать
на стадии проектирования shell-кода, аргументы – нет, поэтому этот сцена-
то есть задолго до вызова VirtualAlloc. рий уже не сработает, однако вызов
Ну теперь уж точно тупик… А вот и нет! функций уязвимой программы через
Рисунок 11. Подготовка стека для Внимательное чтение SDK (или Рихте- подмену адреса возврата будет дейс-
реализации атаки типа commit-n-copy
ра) показывает, что Windows позволяет твовать по-прежнему (то есть запус-
Итак, все по порядку. Начнем с от- COMMIT (то есть передавать) уже пе- тить tftp.exe мы все-таки сможем, вы-
вета на вопрос: куда возвращает уп- реданную память по заданному адре- зывая ее через функцию System, кото-
равление VirtualProtect? Ответ очеви- су и хотя последствия такого выде- рая по-прежнему принимает аргумен-
ден: по указателю, который лежит за ления могут быть очень печальными ты через стек).
модифицированным адресом возвра- (для кучи) – кого это волнует?! Глав- Подведем итог: стечение ряда не-
та! В момент выхода из VirtualProtect, ное, чтобы shell-код получил управле- благоприятных для DEP обстоятельств
процессор сталкивает текущий адрес ние, и он его получит! Выбираем про- делает эту технологию практически
возврата с вершины стека и удаляет извольный адрес, который с высокой полностью бесполезной. Да, она от-
переданные ей аргументы. Так проис- степенью вероятности не занят ничем секает целый класс атак, основан-
ходит потому, что VirtualProtect (как и полезным (например, 191000h), и пе- ных на переполнении, однако дает пи-
все API-функции) придерживается со- редаем его функции VirtualAlloc вмес- щу для новых, и в целом ситуация ни-
глашения о передаче параметров типа те с флагом MEM_COMMIT и атрибу- как не меняется. Забавно, но боль-
stdcall, при котором аргументы удаля- тами PAGE_EXECUTE_READWRITE. шинство людей (в том числе и адми-
ются самой вызываемой функцией. Все! Первая стадия атаки благополуч- нистраторов!) совершенно не пони-
Таким образом, мы можем вызы- но завершилась, и теперь можно глот- мают, что такое DEP, зачем он нужен,
вать столько stdcall-функций, сколько нуть пива. какие цели преследует и в чем за-
захотим. Процессор будет послушно На втором шаге мы вызываем фун- ключается взлом. Достаточно почи-
стягивать их со стека, поступательно кцию memcpy и копируем shell-код тать дискуссию, развернувшуюся на
двигаясь от вершины вглубь. Техника в только что выделенный регион па- http://www.mastropaolo.com/?p=13, что-
вызова cdecl-функций выглядит чуть мяти, целевой адрес которого зара- бы убедиться, что оба предложенных
сложнее. Они не очищают аргументы нее известен. После этой операции сценария обхода DEP не считаются
при выходе, и атакующему приходит- shell-код оказывается в области памя- взломом, поскольку x-атрибут присва-
ся это делать самостоятельно. Проще ти, где разрешено выполнение, и нам ивается «легальным» способом через
всего перенаправить адрес возврата остается только засунуть в стек еще вызов VirtualAlloc. На самом деле суть
на код типа «ADD ESP,n/RET», распо- один подложный адрес возврата, ко- взлома вовсе не в том, чтобы выпол-
ложенный где-то внутри уязвимой про- торый будет указывать на shell-код нить код в области памяти без x-атри-
граммы, где n – количество байт, заня- (внимание! функция memcpy в отличие бута (это действительно невозможно),
тых аргументами. Такую комбинацию от VirtualAlloc придерживается cdecl со- а в том, чтобы использовать уязвимое
можно встретить практически в любом глашения, поэтому после нее мы уже ПО в своих хакерских целях. В идеале
оптимизированном эпилоге. Ну а нуж- не можем выполнять никакие другие DEP должен представлять собой це-
ное n подобрать совсем несложно! функции, предварительно не удалив лый комплекс защитных мер, предо-
Теперь мы знаем, как вызывать аргументы со стека). твращающих это, но ничего подобно-
функцию для изменения атрибутов Последовательность вызовов, ре- го он не делает, ограничиваясь простой
доступа и вернуться обратно в shell- ализующих атаку, выглядит так (на- формальной поддержкой NX/XD-атри-
код, но это еще не все. Функция поминаем: это не shell-код, это имен- бутов. Перечислим те обстоятельства,
VirtualProtect требует, чтобы ей пере- но последовательность вызовов API- которые ему мешают:
дали адрес уже выделенного региона, функций, осуществляемая путем под- параметры API-функций передают-
а shell-коду он неизвестен. К тому же, мены адресов возврата): ся через стек;
по слухам, Microsoft собирается встро- адреса API-функций и положение
ить в VirtualProtect дополнительную Листинг 1. Последовательность вызова вершины стека легко предсказуе-
функций, реализующих атаку типа
проверку, запрещающую назначать x- commit-n-copy мы;
атрибут, если он не был присвоен еще
VirtualAlloc(REMOTE_BASE, ↵
всякий процесс может пометить
при выделении. Тупик? Не совсем, ведь SHELLCODE_LENGTH, MEM_COMMIT, ↵ любой регион памяти как «испол-
мы можем выделить новый регион, на- PAGE_EXECUTE_READWRITE); няемый»;
72
безопасность
роны ЦП (биты NX/XD) он может защи-
щать не только весь процесс целиком, Глоссарий 4. PAE (Physical Address Extension – ре-
но и его отдельную часть. Допустим, 1. A S L R ( A d d r e s s S p a c e L a y o u t жим расширения физических адре-
мы имеем приложение, нуждающееся Randomization – рандомизация рас- сов): специальный режим 32-разряд-
в исполняемом стеке, но не присваива- кладки адресного пространства): ных x86-процессоров, в котором они
ющее x-атрибут явно. Под Windows мы мощная технология защиты против могут адресовать больше памяти и ис-
будем вынуждены занести его в список shell-кода, основанная на непредска- пользовать дополнительные возмож-
программ, на которые механизм DEP зуемом изменении адресов систем- ности (в частности, атрибут NX);
не распространяется, со всеми вытека- ных функций, расположения стека, ис- 5. PTE (Page Table Entry – элемент ката-
ющими отсюда последствиями. А PaX пользуется в пакете PaX и Exec Shield, лога страниц): структура данных, опи-
позволяет отключить защиту лишь для но только не в DEP: http://en.wikipedia. сывающая свойства «своей» страницы
части стека! Конечно, это снижает им- org/wiki/ASLR. виртуальной памяти и задающая пра-
мунитет системы, но не так радикаль- 2. DEP (Data Execution Prevention – пре- ва доступа.
но, как полное отключение DEP. К то- дотвращение выполнения данных): 6. NX (Not executable – не исполняе-
му же рандомизация адресов не поз- совокупность программных и аппа- мый): AMD64: специальный бит в PTE,
воляет shell-коду добраться до этой ис- ратных технологий, призванных пре- разрешающий/запрещающий выпол-
полняемой области и использовать ее дотвратить выполнение shell-кода, нение машинного кода в данной стра-
в своих целях. но в действительности с этим не справ- нице.
Вторым китом является техноло- ляющихся. DEP может быть как аппа- 7. XD (execution Disabled – исполнение
гия рандомизации адресного про- ратным (hardware-enforced), так и про- запрещено): Intel: специальный бит
странства – Address Space Layout граммным (software-enforced). Аппарат- в PTE, разрешающий/запрещающий
Randomization или сокращенно ASLR. ный DEP фактически сводится к подде- выполнение машинного кода в данной
Если при каждом запуске программы ржке NX/XD-бита, программный пред- странице.
непредсказуемым образом менять по- ставляет собой SafeSEH. 8. SafeSEH (безопасный SEH): набор за-
ложение всех сегментов, хакер не смо- 3. EVP (Enhanced Virus Protection – рас- щитных мер, разработанных Microsoft
жет определить ни расположение shell- ширенная вирусная защита): марке- для предотвращения использования
кода, ни адреса API-функций (это ут- тинговый трюк AMD, выдающий XD-бит обработчика структурных исключений
верждение справедливо даже для тех за «технологию защиты против виру- (SEH) shell-кодом, позднее был пере-
клонах UNIX, в которых вызов API-фун- сов». именован в software-enforced DEP.
кций происходит через прерывание,
например в Linux/i386, поскольку при- Третий кит – PaX «дорабатывает» Другой популярный пакет – Exec
кладные процессы общаются с ядром функцию mprotect так, чтобы назна- Shield (http://people.redhat.com/mingo/
не напрямую, а через разделяемые чать x-атрибут могла только система. exec-shield), входящий в состав Red
библиотеки, придерживающиеся со- Никакой прикладной процесс не мо- Hat Enterprise Linux v.3, update 3, также
глашения stdcall, и являющиеся свое- жет изменить атрибуты региона памя- использует неисполняемую кучу/стек,
образным аналогом KERNEL32.DLL), ти с -x на +x. Также никакой регион па- замечательно работая на всем семейс-
следовательно, подмена адреса воз- мяти не может иметь -x- и -w- атрибуты тве x86 процессоров без NX/XD-битов,
врата не дает ничего кроме DoS. Па- одновременно. Пакет PaX портирован и частично рандомизует адресное про-
кет PaX позволяет рандомизовать ос- на множество систем, в том числе и… странство, произвольным образом из-
новные сегменты ELF-файла (code, под Windows. Существует по меньшей меняя базовый адрес стека, располо-
data, bss), кучу, библиотечные фун- мере два приличных порта для NT – жение разделяемых библиотек и на-
кции, стек потока, разделяемую па- BufferShield (см. одноименную врезку) чало области кучи. Остальная память
мять и стек ядра, короче устраивает и StackDefender (http://www.ngsec.com/ остается нетронутой, однако для отра-
настоящий хаос, в котором не оста- ngproducts/stackdefender), которые в от- жения большинства атак и этого ока-
ется ничего постоянного, за что мож- личие от штатного DEP действительно зывается вполне достаточно. Факти-
но было бы уцепиться. Ну или практи- защищают компьютер от вторжения, чески, Exec Shield представляет уре-
чески ничего. и преодолеть их ну очень трудно. занный вариант PaX и не несет в себе
ничего нового.
Еще хуже дела обстоят в OpenBSD.
Начиная с версии 3.3 ядро поддержи-
вает механизм W^X (произносится как
«W xor X»), который по своему назва-
нию предотвращает одновременную
установку атрибутов -x- и -w- на любую
область памяти, что по замыслу разра-
ботчиков должно серьезно озадачить
хакеров (http://marc.theaimsgroup.com/
?l=openbsd-announce&m=1051754750
Рисунок 13. Окно конфигурации пакета StackDefender 06905&w=2).
74
программирование
Иван Коробко
Многие программисты используют VBScript для создания сценариев, предназначенных
для управления серверами. Некоторые скрипты настолько усложняются, что их трудно
использовать без графического интерфейса. Оптимальным решением этой задачи
является создание веб-приложения на ASP, ASP.NET.
С
оздавая сценарии на VBScript для обслуживания сер- <%Script Language="VBScript"%>
веров, таким образом автоматизируя работу систем-
ного администратора и службы технической подде- или
ржки, сводя до минимума влияние человеческого факто-
ра, программисты приходят к выводу, что некоторые из <%Script Language="JScript"%>
их скриптов стали неудобными и им необходим графичес-
кий интерфейс. Например, веб-интерфейс, выбор которого Программный код, находящийся между <% и %>, выполня-
объясняется соображениями безопасности и удобством экс- ется на сервере и подчинен синтаксису одного из выбран-
плуатации. Для решения этой задачи рекомендуется ASP, а ных языков. Весь остальной код представляет собой HTML-
лучше всего – ASP.NET, который позволяет на порядок по- страницу в явном виде.
высить безопасность работы приложения. Листинг типовой ASP-страницы выглядит следующим
образом:
От VBScript к ASP
У вас может возникнуть вопрос: «Зачем мне переходить на <%@ Language=VBScript CODEPAGE=1251%>
<HTML>
ASP, когда я просто могу использовать DHTML с VBS встав- <TITLE> Заголовок страницы </TITLE>
ками?» Использовать DHTML или HTA для этих целей не по- <HEAD>
<LINK href="../style.css" type=text/css rel=stylesheet>
лучится, поскольку они основаны на HTML, который дейс- <meta http-equiv="Content-Type" content="text/html" ↵
твительно позволяет делать вставки на VBScript, однако не charset=windows-1251>
</HEAD> <BODY>
поддерживают работу с OLE-объектами. Для программис- <FONT FACE="Arial">
та, создающего приложения для обслуживания серверов, …
<%
поддержка OLE-объектов используемой им средой – основ- …
ное требование, поскольку формирование отчетов, доступ ' отображение на экране содержимого переменной
Response.write variable
к Active Directory и др. базируется на их использовании. %>
ASP представляет собой решение, которое поддержива-
ет HTML, OLE-объекты и позволяет делать вставки на раз- После обработки интерпретатором IIS программного кода
личных скриптовых языках: VBScript, JScript. и преобразования результатов его работы в HTML/DHTML не-
Переход от VBScript к ASP достаточно прост и безбо- обходимо дать команду на отображение страницы в браузере
лезнен: исходный код на VBScript остается практически клиента. Такой командой является «Response.Write q», где q –
без изменений. имя переменной, содержащей фрагмент HTML-кода.
ASP-страницы – это сценарии, программный код кото- Необходимо отметить, что ASP имеет свою, хотя и скром-
рых выполняется при их запросе. Результатом действия ную объектную модель, описание которой можно найти прак-
скрипта является DHTML-страница, которая формирует- тически в любой книге, посвященной программированию
ся на сервере, а затем отображается в браузере клиента. на ASP в разделе «Приложения».
Структура документа на ASP проста: в первой строке всег-
да указывается язык, с помощью которого созданы скрипто- Настройка IIS для ASP
вые вставки ASP-страницы. Первая строка любого из сце- При создании веб-приложений на основе ASP необходимо
нариев на ASP выглядит следующим образом: учитывать некоторые особенности этого языка.
76
программирование
Первая особенность: поскольку код ASP-страниц испол-
няется на сервере и только результат в виде HTML-страни-
цы пересылается на клиентскую машину, то для успешно-
го запуска приложения на сервере пользователь должен
обладать соответствующими правами. IE, IIS и запускае-
мые им сервисы представляют собой трехзвенную систе- Рисунок 1. Трехзвенная система
му (см. рис. 1).
Пусть IIS имеет настройки по умолчанию. В этом случае
при загрузке любой ASP-страницы она стартует от имени
встроенного пользователя (см. рис. 2). Если страница ра-
ботает с некими базами данных, например с Active Directory,
то пользователь, запускающий данную страницу, должен
обладать соответствующими правами системного адми-
нистратора.
Существует несколько способов соблюсти эти условия.
Первый – учетную запись встроенного пользователя заме-
нить учетной записью администратора сети. При таком рас-
кладе любой пользователь в сети сможет посетить данную
страницу, т.к. она будет запускаться от имени системного
администратора. Этот способ предоставляет всем доступ
к данной странице, что, согласитесь, неправильно: резко
снижается безопасность всей системы. В случае ошибок
на странице злоумышленник может легко запустить вре-
доносный код с правами администратора.
Поэтому разумно использовать другой способ, с помо-
щью которого можно ограничить доступ к ресурсам. В на-
стройках IIS необходимо сбросить флажок (см. рис. 2)
с Enable anonymous access и установить его напротив Basic
Authentication. Также следует изменить права на файловую
структуру используемого сайта, исключив оттуда группу Рисунок 2. Настройка безопасности IIS
Everyone и добавив соответствующие группы безопаснос-
ти и назначить им соответствующие права. При такой на- ку ASP-страница выполняется на сервере, то для запуска
стройке IIS только системные администраторы получат до- приложения необходимы соответствующие права. Управ-
ступ к данной странице. При попытке любого пользовате- ление этой учетной записью пользователя осуществляет-
ля, не являющегося администратором сети, получить до- ся в Application Tools (см. рис. 3).
ступ к странице, IIS будут запрошены имя и пароль поль-
зователя. Переход от VBScript и ASP к ASP.NET
Если необходимо расширить круг лиц, которым должен Теперь, когда мы знакомы c ASP и разобрались с настрой-
быть доступен данный сайт, и при этом пользователи не яв- кой IIS для ASP-проектов, подведем промежуточный итог,
ляются системными администраторами, то можно восполь- а он не утешителен! Дело в том, что в построенной системе
зоваться вариантом, являющимся синтезом двух ранее из- большая брешь в безопасности; поскольку для доступа к АD
ложенных решений. Ограничить доступ на сайт с помощью в ASP-файле в явном виде надо указать имя и пароль сис-
Basic Authentication и правами на файловую структуру, за- темного администратора, еще одним недостатком являет-
пускать скрипт, инкапсулированный в страницу, с правами ся указание пароля в разделе «Аnonymous Аccess» вместо
администратора. встроенной учетной записи указать имя и пароль систем-
Только что мы рассмотрели механизм взаимодействия ного администратора. Конечно, системный администратор
первого и второго звена в трехзвенной системе. Первым постарается защитить файловую систему соответствующим
звеном является рабочая станция пользователя, вторым – распределением прав, однако принятых мер недостаточно.
сервер, на котором установлен IIS. Взаимосвязь этих звень- Необходимо сделать так, чтобы система сама определяла
ев осуществляется с помощью одного пользователя. Меж- и подставляла имя и пароль пользователя между вторым
ду вторым и третьим звеном (сервер iis-процессы, порож- и третьим звеном, т.е. запускала сервисы от имени поль-
даемые из asp-процесса) взаимодействие осуществляет- зователя, который вошел на сайт. Поставленная задача ус-
ся с помощью другого пользователя. пешно решается переходом с помощью ASP.NET и включе-
Рассмотрим взаимодействие второго и третьего зве- нием режима имперсонализации.
на подробнее.
При запуске из кода ASP-страницей какого-либо при- Установка Visual Studio
ложения осуществляется взаимодействие между вторым Перед установкой Visual Studio .NET должен быть пред-
и третьим звеном. IIS порождает процесс, запускаемый варительно установлен пакет программ, необходимых
от имени другого встроенного пользователя. Посколь- для ее установки:
Управление доверительными
отношениями в ASP NET
Для конфиденциальной работы приложения IIS всегда важ-
Рисунок 3. Настройка безопасности IIS но идентифицировать процесс, в котором она выполняет-
ся. По умолчанию в IIS 5.0 процессы запускаются утили-
Microsoft IIS 5/6 той ASPEN_WP.EXE от имени встроенной учетной записи
Microsoft .NET Framework 1.1/2.0 «PC_NAME\ASPNET», а в IIS 6.0 – от имени «NT AUTHORITY\
Microsoft FrontPage Server Extensions 2000/2002 NETWORK SERVICE».
Microsoft Visual J# .Net Redistributable Package 1.1/2 По умолчанию режим имперсонализации выключен. Для
Microsoft Windows Installer 2/3(.1) его включения необходимо сделать изменения в конфигу-
рационном файле: C:\Windows\Microsoft.NET\FrameWork\V
В полном дистрибутиве перечисленные компоненты на- номер версии\Config\Machine.Config.
ходятся в папке WCU, в которой присутствуют соответствую- Необходимо присвоить следующие значения:
щие компонентам подпапки. Если же папки WCU нет, то ком-
поненты необходимо загрузить с сайта Microsoft или уста- comAuthenticationLevel= PktPrivacy
comImpersonationLevel= Impersonate
новить с дистрибутива соответствующей версии операци-
онной системы. Список возможных значений этих параметров приве-
После завершения установки необходимых подпро- ден ниже:
78
программирование
comAuthenticationLevel="Default|None|Connect|Call|Pkt| ↵
PktIntegrity|PktPrivacy";
comImpersonationLevel="Default|Anonymous|Identity| ↵
Impersonate|Delegate"
80
программирование
ASP, ASP.NET: Таблица 4. Расшифровка принимаемых значений функцией
VarType()
<%
Response.Write(VartType(Parametr)) Константа Значение Описание
%> vbEmpty 0 Empty (пустое значение)
vbNull 1 Null (не содержит данных)
Приведенный пример возвращает значение 8204 = 8192 + 12.
vbInteger 2 Integer
Элементы массива не определены, поэтому они имеют тип дан-
vbLong 3 Long integer
ных Variant (12).
Процесс автоматического преобразования типов дан- vbSingle 4 Single (число с плавающей точкой)
ных называется динамическим связыванием (late binding). vbDouble 5 Double (число с плавающей точкой)
Избежать динамического связывания можно с помощью vbCurrency 6 Currency
опции Striсt: vbDate 7 Date
vbString 8 String
<%@ Striсt="True" %>
vbObject 9 Объект
vbError 10 Error
При включении опции Striсt автоматически включается
vbBoolean 11 Boolean
Explicit. Кроме того, опцию Striсt можно включить для всех
vbVariant 12 Variant (используется только с массивами)
страниц ASP.NET в файле machine.config:
vbDataObject 13 Object
<Compilation> vbByte 17 Byte
Striсt = "True"
</Compilation> vbArray 8192 Array
Сергей Супрунов
Мы настолько привыкли пользоваться услугами электронной почты, что с трудом
представляем себе Интернет без нее. Однако не многие задумываются о том, насколько
эта услуга небезопасна и к каким последствиям может привести халатное отношение к своему
почтовому ящику.
В
се сказанное в данной статье веры можно было пересчитать по паль- ля, идентифицировать которого мож-
следует рассматривать исклю- цам, а их администраторы хорошо зна- но разве что по его IP-адресу, который
чительно как мое личное мне- ли каждого своего пользователя. Воп- редко можно однозначно сопоставить
ние, основанное на некотором опыте росы безопасности и доверия к отпра- с конкретным человеком, да и даже
и, в какой-то степени, личных эмоци- вителю тогда не имели сегодняшнего на достоверность этого параметра то-
ях. Я не пытался сделать какие-то гло- уровня актуальности, и потому в це- же нельзя положиться, – все это при-
бальные выводы или выработать уни- лях экономии протокол SMTP получил- вело к тому, что человек в сети чувс-
версальные рекомендации решения ся на самом деле настолько простым, твует себя гораздо более свободным,
проблем. Это всего лишь мой взгляд что не поддерживал ни авторизации, и, как следствие, позволяет себе порой
на ситуацию, если хотите – приглаше- ни средств подтверждения подлиннос- то, на что в «оффлайне» никогда не ре-
ние к дискуссии. ти отправителя. Он умел лишь отправ- шился бы. Интернет давно превратил-
лять электронные сообщения указан- ся из простого средства для общения
Основной источник ному адресату. коллег и единомышленников в инстру-
проблем Сейчас сеть Интернет стала дру- мент ведения бизнеса. И указанная вы-
Как вы знаете, протоколы электрон- гой. Децентрализация, простота и де- ше степень свободы позволила приме-
ной почты создавались в те «золотые» шевизна подключения к сети, практи- нять для достижения своей цели весь-
времена зарождения сети, когда сер- чески полная анонимность пользовате- ма агрессивные методы, не считаясь
82
IMHO
с последствиями этих методов для дру- напастью посвящено множество ста- правлять электронные сообщение на-
гих участников сети. А протокол SMTP тей в Интернете. А порождено это яв- много проще и дешевле. Да и за поч-
остался при этом практически тем же ление в первую очередь возможнос- товый ящик, прибитый к калитке, по-
самым, что и десятилетия назад. тью отправлять сообщения практи- лучатель ничего не платит…
В частности, согласно базовому чески анонимно, что не позволяет од-
RFC 821, лежащему в основе совре- нозначно выявить отправителя и его «Не виноватые мы…»
менной электронной почты, различные наказать. Не меньшую угрозу представляет и об-
агенты доставки (MTA) взаимодейству- Одним из правил защиты, которое ратная ситуация – когда в результа-
ют, по сути, на доверительных отноше- упоминается, пожалуй, наиболее час- те заражения ваша машина сама ста-
ниях. Даже для команды HELO, кото- то, является совет никогда не остав- новится источником спама и вирусов.
рой SMTP-клиент (так будем называть лять свой реальный почтовый адрес И такая несложная операция, как бло-
программу, инициирующую SMTP-со- на веб-страницах (в форумах, ново- кирование с помощью персонального
единение, по аналогии с другими про- стных лентах, даже на своих домаш- брандмауэра 25-го порта (как на прием,
токолами) представляется серверу, ни- них сайтах). Изворотливый челове- так и на отправку), кроме порта на том
как не проверяется достоверность со- ческий ум придумал массу способов сервере, с которым мы действительно
держащейся в ней информации. И уж замаскировать свой адрес и спрятать работаем, может заметно снизить «на-
тем более не предусмотрено основа- его от назойливых роботов-сборщи- пряженность», но почему-то мы не спе-
ний, по которым сервер может откло- ков – от банального «vasya (at) petrov шим это делать. Да еще и предъявля-
нить соединение. Более того, если (dot) ru» до всевозможных скриптов, ем претензии своему провайдеру, ес-
письмо не предназначено пользова- отдающих адрес из базы только в слу- ли он пытается сделать это за нас. Ви-
телям, обслуживаемым данным сер- чае явного щелчка по ссылке. димо, сказывается убеждение, что са-
вером, то согласно протоколу он дол- Определенный смысл в этом есть, ма по себе электронная почта безвред-
жен выполнить передачу сообщения поскольку если спамер не будет знать на, к тому же бесплатность исходяще-
дальше, в соответствии со значением вашего адреса, то и отправить вам ни- го трафика позволяет не обращать на
поля «To», т.е. фактически, должен ра- чего не сможет. него никакого внимания.
ботать в режиме Open Relay. Но, с другой стороны, адрес на-
Различными расширяющими до- подобие приведенного выше доста- «А вас здесь не стояло…»
кументами вводятся дополнительные точно легко угадывается, а постольку Сильно удивляет и то, насколько лег-
процедуры, такие как SMTP-аутенти- SMTP позволяет указывать в качест- ко мы относимся к заполнению различ-
фикация, запрет на транзитную пере- ве обратного адреса практически лю- ных регистрационных форм, где требу-
дачу сообщений, и т. д., призванные бой, то спамер может не беспокоить- ется указать адрес электронной поч-
ограничить проблемы, возникающие ся, что после очередного сканирова- ты. Здесь мы довольно часто, наобо-
при использовании базового протоко- ния его ящик будет завален сообще- рот, желая (в виду описанных выше
ла. Однако их применение до сих пор ниями «Undeliverable message». причин) скрыть свой почтовый адрес
не является обязательным, и каждый А вот нам с вами по этому пово- от любопытных глаз, указываем что-
администратор принимает решение об ду беспокоиться можно и даже нуж- нибудь наподобие qwe@qweasdzxc.ru.
их поддержке исключительно по свое- но – в качестве такого обратного ад- Именно на этом основан один из на-
му усмотрению. Таким образом, сейчас реса вполне может быть выбран (слу- иболее популярных методов кражи
мы все более отчетливо ощущаем не- чайно или специально) именно ваш ад- аккаунтов ICQ – нетрудно догадаться,
достатки почтового протокола SMTP: рес. Согласитесь, что это не самая луч- что злоумышленнику теперь остает-
возможность подделать практичес- шая перспектива – обнаружить в по- ся лишь зарегистрировать на себя до-
ки любой параметр отправляемого недельник свой почтовый ящик заби- мен qweasdzxc.ru, создать там почто-
сообщения; тым такими «возвратами» вперемешку вый ящик qwe и воспользоваться сис-
отсутствие механизмов для одно- с возмущениями и угрозами потрево- темой напоминания пароля. Причем
значной идентификации отправи- женных пользователей. Особенно ес- этот метод работает достаточно хоро-
теля; ли ваша плата провайдеру за подде- шо не только в случае с ICQ, но и везде,
отправка любого количества любых ржку ящика зависит от объемов тра- где при регистрации вы должны ука-
сообщений какому-либо пользова- фика или размера сообщений, храня- зать свой электронный адрес, но его
телю не требует никакого разреше- щихся на сервере. принадлежность или хотя бы сущест-
ния со стороны последнего, но пла- И опять-таки, SMTP не предостав- вование никак не проверяются.
тит за почту при этом именно он. ляет никаких способов эффективно Конечно, можно успокаивать себя
этому противодействовать. Конечно, тем, что ваш UIN вряд ли будет обла-
Рассмотрим немного подробнее приближение работы электронной поч- дать ценностью, способной компен-
некоторые из возникающих при этом ты к обычной (когда в ваш ящик могут сировать трату двадцати долларов
проблемы. положить любую корреспонденцию) на регистрацию домена. Но кто зна-
имело определенный смысл, по край- ет, насколько ценную информацию вы
«Нам чужого не надо…» ней мере в том плане, что не нужно будете передавать по ICQ лет через
О спаме мы у же много говорили было придумывать новую концепцию. пять. В любом случае нельзя забывать
на страницах журнала, борьбе с этой Но при этом не было учтено, что от- об этом методе получения пароля.
84
bugtraq
Сломленная, но не сдавшаяся:
история операционной системы BeOS
Часть 2
Дмитрий Мороз
Суровое время перемен ла и на обычном Pentium. Управляю- Pentium/Pentium II, специальная вер-
На проходившей 11 февраля 1998 го- щий Intel Энди Грув тогда честно при- сия программы PartitionMagic для ди-
да выставке Software Development’98 знался: «Я даже не думал, что произ- намического разбиения жёстких дис-
компания Be Inc. представила обще- водимое нами аппаратное обеспече- ков, изменены некоторые элементы
ственности версию BeOS 3.0, работав- ние может гарантировать такой уро- интерфейса, а также расширены се-
шую на компьютерах с процессорами вень производительности». тевые возможности.
Intel. Несмотря на то что эта корпора- Сама BeOS 3.0 являлась «выли- Одновременно с выходом BeOS
ция в то время представила новейшие занной до блеска» PR2, в которую бы- третьей версии Be Inc. анонсировала
чипы Pentium II, BeOS отлично работа- ли добавлены поддержка процессоров свою интегрированную среду разра-
86
ретроспектива
ботки под названием BeIDE, компиля- истечении шести месяцев управляю-
торы, линкеры и библиотеки для кото- щий Be Inc. решил рискнуть. «Я до сих
рого поставляла компания Metrowerks. пор помню, как мы продавали коробки
«Благодаря» BeIDE собственный па- с BeOS v.3, на которых крупными бук-
кет компании CodeWarrior стал неак- вами было написано «Не для прода-
туален (он стоил денег, в то время как жи!» – вспоминает Ланц.
аналогичный продукт от Be Inc. пос- В дальнейшем дистрибьютора-
тавлялся вместе с ОС), и его разра- ми BeOS стали: Gobe Software (аме-
ботка в версии для BeOS была приос- риканский рынок, а также англоязыч-
тановлена. ные территории Азии), Hitachi (Япония
Старт продаж BeOS 3.0 был за- и остальная часть Азии), а также Koch Рисунок 1. Программа для нелинейного
видеомонтажа personalStudio
планирован на 20 марта 1998 г. Начи- Media и Apacabar (Европа).
ная с этого дня поддержка существую- Как только Be Inc. выпустила вер-
щего и нового аппаратного обеспече- сию своей ОС для архитектуры х86,
ния стала для программистов Be Inc. её главной задачей стало налажива-
настоящей головной болью. Выпу- ние контактов и заключение партнёр-
щенная 16 июня, BeOS 3.1 содержа- ских соглашений с производителя-
ла в основном дополнительные драй- ми ПК с целью установки BeOS на их
веры для материнских плат, звуко- компьютеры. К сожалению, почти все
вых карт, SCSI-адаптеров и внутрен- компании отвечали отказом, но это не-
них модемов. мудрено, ведь Be Inc. была «зелёным
Кроме слабой аппаратной подде- новичком» на рынке, который всеце-
ржки BeOS 3.0 для архитектуры х86 ло лежал у ног корпорации Microsoft
не могла «похвастаться» какими-ли- и её Windows. Рисунок 2. Прототип IPAD, демонс-
трировавшийся Be Inc. на выставке
бо интересными приложениями. В день Тем не менее один производитель PC Expo’99
старта продаж ОС для неё было до- ПК всё же откликнулся на зов Be Inc.
ступно всего 20 программ. Им стала компания Hitachi Ltd., про- в лицензионном ОЕМ-соглашении
Данные обстоятельства тем не ме- изводящая компьютеры для японско- Microsoft, которое подписывает каж-
нее не помешали Intel, а также дру- го рынка. Впечатлённая возможнос- дая компания-производитель ПК, гово-
гим фирмам вложить 25 млн. $ в ком- тями BeOS, она согласилась преуста- рится: «После того, как пользователь
панию Be Inc., финансовые дела у ко- навливать BeOS на три модели своих включит компьютер и пройдёт стадия
торой опять шли плохо. «Be Inc. – компьютеров, выпускавшихся под мар- инициализации BIOS, запрещается из-
компания, которой смерть дышала кой Hitachi Flora Prius. И, казалось бы, менять или модифицировать последо-
практически в самую спину, – гово- всё будет хорошо… вательность появления экранов, отоб-
рил в то время аналитик компании Ещё в 1996 году на вопрос коррес- ражаемых Windows 98, вплоть до по-
Zona Research Грег Блатник. – Я ду- пондента известного журнала Wired явления надписи «Добро пожаловать
маю, благодаря финансированию Intel, «Что вы думаете о Билле Гейтсе» Гас- в Windows 98». Таким образом, Hitachi,
она (Be Inc. – Прим. авт.) скоро снова се ответил: «Биллу постоянно сопутс- равно как и другие производители ПК,
встанет в строй. Если же у неё на уме твует успех. Билл – это Билл. Microsoft не могли установить специальный за-
ещё несколько других сделок – это пой- очень хорошо управляется. И ещё од- грузчик, позволявший пользовате-
дёт компании только на пользу». но: компания – отличный террорист, лю выбрать, какая ОС, Windows или
Кроме того, Intel также предоста- когда дело касается её интеллекту- BeOS, будет загружаться на его ком-
вила компании Гассе своих инженеров альной собственности». И он не про- пьютере.
для обеспечения наиболее полной сов- гадал. Результат оказался плачевным. Не-
местимости с процессорами семейств Как только Be Inc. наладила парт- смотря на то что BeOS была установ-
Pentium/Celeron. Так, например, Be Inc. нёрские соглашения с Hitachi и обе лена на ПК, пользователь мог узнать
была одной из первых компаний, про- компании выпустили пресс-релизы о её существовании лишь по загрузоч-
демонстрировавших на примере сво- о совместном сотрудничестве, бук- ной дискетке, входившей в комплект
ей ОС, а также некоторых других при- вально на следующий день в офис поставки. Попытка Be Inc. закрепиться
ложений преимущества новых инс- японской компании прибыли юристы в качестве OEM-лицензиата операци-
трукций SSE, появившихся в процес- Microsoft и ясно дали понять, что, ес- онной системы производителя компью-
сорах Pentium III. ли Hitachi будет устанавливать BeOS теров провалилась. Позже, в 1999 году,
В июне 1998 года BeOS, можно ска- и Windows на свои компьютеры, лицен- компания даже предлагала бесплат-
зать, увидела мир. Именно в это вре- зия на их операционную систему будет ные лицензии на свою ОС, но «мыши
мя Microdata AB стала первым офици- отнята. Это же предупреждение полу- на бесплатный сыр не пошли».
альным дистрибьютором BeOS. Пат- чили все известные и не очень произ- Во время походившей 10 ноября
рик Ланц, сотрудник Microdata, пред- водители ПК. 1998 года выставки COMDEX 98 Be
ложил Гассе продавать BeOS в Шве- Как Microsoft могла запретить ус- Inc. анонсировала новую, четвёртую
ции ещё в начале 1998 года, и лишь по танавливать BeOS? Очень просто: версию BeOS. Среди её основных нов-
88
ретроспектива
тель, лицензировавший BeIA, мог са- ций компании после объявления BeIA
мостоятельно создать внешний вид стал расти, многие именитые разра-
системы, подстраивая его под нужды ботчики ПО, понимая, что дальней-
конкретного устройства. В результате шая судьба BeOS теперь под вопро-
усечения некоторых библиотек новая сом, приостановили либо прекрати-
ОС могла спокойно разместиться на ли процесс переноса своих приложе-
флэш-карте объёмом 16 Мб и комфор- ний. В их число вошли: Steinberg (ау-
тно чувствовать себя на тех же 16 Мб диоредактор NUENDO), Emagic (ау-
ОЗУ. По мнению Be Inc., BeIA могла бы диоредактор Logic Audio), Maxon (па-
с успехом применяться в веб-планше- кет для создания трёхмерной графи-
тах, медиа-серверах, хранящих раз- ки Cinema 4D) и др. Также были при- Рисунок 5. Интерфейс прототипа
цифрового музыкального сервера Aura
личную фото-, аудио- и видеоинфор- остановлены работы по переносу при-
мацию, миниатюрных ПК, игровых кон- ложений внутри самой Be Inc. BeOS-
солях и т. д. версии генератора трёхмерных ланд-
Вместе с заявлением об измене- шафтов Bryce 4 (MetaCreations), паке-
нии стратегии Гассе объявил о том, что тов для создания трёхмерной графи-
Be Inc. становится открытой акционер- ки Strata3D и StudioPro, а также про-
ной компанией. Выпуск шести милли- граммы нелинейного видеомонтажа
онов акций по цене 6 долл. за акцию VideoShop (C-3D Digital) так и остались
должен был, по мнению управляюще- незаконченными.
го, принести Be Inc. 57 млн. долл., не- Изменение стратегии Be Inc. боль-
обходимых на развитие и продвиже- но ударило и по тем немногим ком-
ние проекта BeIA (суммарная прибыль паниям, осмелившимся начать рабо- Рисунок 6. Программа для финального
компании в 1998 году составила все- ты по переносу своих игровых прило- мастеринга песен T-RackS
го 1,2 млн. долл.). Первым «внешним» жений на BeOS. Со временем опера- Technology, National Semiconductor,
акционером Be Inc. стала, как нетруд- ционная система лишилась: Tribes II, First Computer International, Metricom и
но догадаться, корпорация Intel, купив- Neverwinter Nights, Worms Armageddon, др. Большинство из устройств, анон-
шая 10% её акций. Shogo: Mobile Armor Division, Unreal сированных этими компаниями, пред-
Сразу после объявления Жаном-Луи Tournament, Quake III, Black & White ставляли собой маломощные ПК, веб-
Гассе новой стратегии развития компа- и SimSity 3000. Хотя ещё одним нема- планшеты, а также «интеллектуальные
нии среди пользователей BeOS подня- ловажным аспектом, препятствовав- пульты» для дистанционного управле-
лась буря негодования, вызванная опа- шим появлению игровых продуктов ния бытовой электроникой.
сением, что Be Inc. перестанет уделять на BeOS, стали постоянные задержки «Засмотрелась» на BeIA и Compaq
должное внимание версии своей ОС с тестированием аппаратного ускоре- Computer. По словам представителей
для настольных компьютеров. Павел ния OpenGL и нового сетевого BONE. компании, для её персонального ус-
Цислер, создатель Tracker, предложил Из дошедших до пользователя игр ос- тройства, предназначенного для до-
Стиву Сакоману открыть исходные ко- тались лишь Civilization: Call to Power ступа в Интернет, новая ОС от Be Inc.
ды некоторых частей системы, чтобы и Corumn III: Chaotic Magic. подходила как нельзя лучше. Компа-
сообщество программистов для BeOS Кроме программ, BeOS начала «те- нии заключили партнёрское соглаше-
могло дальше улучшать возможности рять» и инженеров, работавших над ние, и Compaq стала официальным
операционной системы. Поскольку Са- ней. Так, в течение 1999 года из Be Inc. лицензиатом BeIA. Однако в октябре
коман и Гассе сами думали над подоб- ушли практически все создатели опе- 1999 года компания объявила о раз-
ным шагом, идея Цислера была воп- рационной системы: Доминик Джиам- рыве соглашения и лицензировании
лощена в жизнь, и на свет появились поло (автор BFS), Джейсон Семс (ра- Windows CE от корпорации Microsoft.
проекты OpenTracker и OpenDeskbar. ботавший над OpenGL), Говард Бирки В это же время в Интернет просочи-
Тем не менее циркулировавшие вплоть (BONE), Павел Цислер (Tracker) и др. лись слухи о том, что Compaq неза-
до середины 2000 года слухи об откры- Из положительных событий, после- конно предоставила конфиденциаль-
тии исходного кода всей BeOS таковы- довавших вслед за роковым заявлени- ную информацию относительно BeIA
ми и остались. Причина, по словам Гас- ем Жана-Луи Гассе, стало объявление Microsoft, за что та обеспечила компа-
се, заключалась в большом количест- в августе 1999 г. Be Inc. финансовых ре- нии скидку на Windows CE. Таким об-
ве чужих технологий, лицензирован- зультатов второго квартала. Прибыль разом, бывший партнёр подло предал
ных Be Inc. для своей ОС. Их изыма- компании составила 537 000 долл., Be Inc. и пошёл под суд, закончивший-
ние из системы потребовало бы очень что на 74% больше (309 000 долл.), ся, правда, безрезультатно.
много времени, которого у компании чем за первый квартал.
с её ограниченными ресурсами прос- Окрылённая успехом, Be Inc. нача- BeOS 5 Personal Edition:
то не было. ла усиленно продвигать свою новую ОС преодолевая миллионный
Изменение стратегии Be Inc. ко- на рынок. Среди компаний, лицензиро- рубеж
ренным образом повлияло на весь ры- вавших BeIA на протяжении 1999 года, Несмотря на некоторые успехи Be Inc.
нок BeOS. Несмотря на то, что курс ак- стоит отметить: Intel, Microworkz, Qubit в деле лицензирования BeIA, пользо-
90
ретроспектива
лишилась и нескольких инженеров, зователей продолжает активно подде-
«не вовлечённых в разработку основ- рживать систему. Постоянно выпуска-
ного продукта компании», то бишь про- ются новые программы, совершенс-
граммистов BeOS. твуются старые. На основе бесплат-
В феврале 2001 года, отчаявшись, ной BeOS 5 PE, а также патчей, драй-
компания подала в суд на корпорацию веров и программ, народ собирает раз-
Microsoft, обвиняя её в монополиза- личные дистрибутивы.
ции рынка операционных систем сво- Например, BeOS, ранее не «дру-
ей Windows, а также в давлении на про- жившая» с процессорами Pentium 4/
изводителей ПК. В то время судебный Athlon, а также видеокартами стар-
антимонопольный процесс касательно ше первого ATI Radeon, благодаря по-
Microsoft длился уже три года (в част- явлению BeOS Max и BeOS Developer
Рисунок 9. Графический растровый
ности, вспомните «войну» браузеров Edition может спокойно работать на но- редактор Refraction
Netscape Navigator и Internet Explorer вых компьютерах.
в 1998 г.). Be Inc., лишённая возмож- Кроме того, на основе просо- На данный момент Zeta является
ности поставлять свою ОС произво- чившейся тайком в 2001 году беты, наиболее продвинутой версией BeOS.
дителям компьютеров, чтобы те могли следующей за BeOS пятой версии Она включает в себя:
спокойно устанавливать её на свои ПК, BeOS 5.1d0 (кодовое название Dan0), обновлённое ядро;
вошла в группу компаний-обвините- был разработан дистрибутив PhOS. SVG Tracker, поддерживающий век-
лей. Судебный процесс затянулся до Но самое главное – BeOS продол- торную графику;
5 сентября 2003 года, когда Be Inc. жает развиваться, и в этом ей помога- новый USB-стек;
(в которой к тому времени останется ют два проекта – Haiku и Zeta. Расска- BONE и множество других улучше-
лишь один сотрудник – юрист) объяви- жем о них лишь в паре приложений. ний и дополнений.
ла об отзыве своего иска, а Microsoft – Заинтересованные могут найти под-
о выплате 23,25 млн. долл. компании в робное описание и новости касатель- По словам Бернда Корца, коли-
качестве компенсации. но проектов по адресам, находящим- чество проданных копий BeOS Zeta
BeIA и практически «иссякшие» ся в конце статьи. в три раза превышает количество
продажи BeOS 5 Pro не смогли удер- Проект Haiku, ранее носивший не- всех предыдущих версий BeOS, про-
жать BeOS от падения в бездну: 2 ап- официальное название OpenBeOS, данных Be Inc.
реля 2001 года Жан-Луи Гассе объявил, стартовал буквально через два ме-
что оставшихся у Be Inc. 9 млн. долл. сяца после покупки Palm компании Послесловие
хватит лишь на шесть месяцев сущес- Be Inc. Его целью стало воссоздание Делать какие-либо выводы относи-
твования, после чего она полностью BeOS 5.0 в новой операционной сис- тельно «светлого» будущего BeOS
обанкротится. Гассе ничего не остава- теме с открытым исходным кодом. По- ещё рановато, тем не менее риск-
лось, как начать разрабатывать план мимо этого, программисты уже выпус- нём предположить, что после выхо-
продажи своей компании. тили достаточно драйверов, позволя- да более или менее стабильной вер-
В августе 2001 года Be Inc. объяви- ющих существующим версиям BeOS сии Haiku, а также новых версий Zeta
ла об очередном увольнении 28 со- чувствовать себя «как дома» на боль- о BeOS снова заговорят в таком же
трудников, пытаясь хоть немного сни- шинстве распространённых конфигу- «радужном свете», как и в 1996 году.
зить затраты и продержаться до того, раций современных ПК. Круг замкнётся, и начнётся новая эра –
как на её душу найдётся покупатель. Что же касается BeOS Zeta, её ос- эра BeOS.
Ждать, впрочем, надо было недол- нователем является немец Бернд
го. Буквально через пару недель после Корц, ранее занимавшийся выпус- Ссылки:
второго увольнения компания Palm Inc. ком журнала InsideBeOS, почивше- 1. www.qube.ru – сайт русскоязычных
18 августа соизволила приобрести го после пятого номера. В начале пользователей BeOS.
Be Inc. и впоследствии использовать 2001 года Корц основал компанию 2. www.bebits.com – база программного
мультимедийные возможности, пре- yellowTAB, решившую заняться даль- обеспечения для BeOS. Практически
доставляемые BeIA, в своей собствен- нейшим продвижением BeOS. Для все существующие программы, а так-
ной операционной системе для КПК этого им была выкуплена лицензия же новые драйверы для этой ОС мож-
PalmOS. 12 ноября, после совещания на продажу BeOS 5 Pro у немецкого но скачать с этого сайта.
акционеров Be Inc., Palm окончатель- дистрибьютера Koch Media, на осно- 3. www.yellowtab.com – если вдруг возник-
но приобрела всю интеллектуальную ве которой yellowTAB собиралась вы- ло желание попробовать BeOS Zeta, за-
собственность компании за ничтожную пустить дистрибутив под названием казать её можно на сайте компании-
сумму в 11 млн. долл. Казалось, исто- BeOS NG (Next Generation – следую- разработчика.
рия «пчелы» подошла к концу… щее поколение). Позже его «начинку» 4. www.haikunews.org – источник новостей
было решено заменить с BeOS 5 Pro о проекте Haiku.
Жизнь после смерти на BeOS 5.1d0, в результате чего опе-
Ан нет. Невзирая на официальную рационная система изменила назва- Редактор рубрики
«смерть» BeOS, сообщество её поль- ние на BeOS Zeta. Кирилл Тихонов
92
книжная полка
№1 январь 2006 93
подписка на 2006 год
Российская Федерация ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
Подписной индекс: годовой – 20780, полугодовой – 81655 Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
Подписной индекс: 87836 Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» Узбекистан – по каталогу «Davriy nashrlar» российские
Адресный каталог «Библиотечный каталог» издания через агентство по распространению печати
Альтернативные подписные агентства: «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик,
Агентство «Интер-Почта» (095) 500-00-60, курьерская 5/3, офис 33)
доставка по Москве Армения – по списку номенклатуры «АРЗИ» через ГЗАО
Агентство «Вся Пресса» (095) 787-34-47 «Армпечать» (375005, г. Ереван, пл. Сасунци Давида,
Агентство «Курьер-Прессервис» д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Са-
Агентство «ООО Урал-Пресс» (343) 375-62-74 рьяна, 22)
ЛинуксЦентр www.linuxcenter.ru Грузия – по списку номенклатуры «АРЗИ» через АО
Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры АРЗИ: Подписка для Украины:
Азербайджан – по объединенному каталогу российских Киевский главпочтамт
изданий через предприятие по распространению печа- Подписное агентство «KSS», тел./факс (044)464-0220
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
94
подписка на 2006 год
Редакционная подписка
Открыта подписка через редакцию. Вы можете оформить
подписку на любое количество номеров 2006 года. Редак-
ция не высылает журналы за пределы Российской Феде-
рации.
Стоимость
подписки через
редакцию:
900* руб.
за 6 номеров
1800* руб.
за 12 номеров
* Включая НДС
и почтовую доставку
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор
Алексей Коршунов Современный Linux-сервер: и доступно через обновления. Вторые
Внештатные редакторы как планировать дисковые пересоберут критически важные пакеты
Алексей Барабанов ресурсы. Часть 2 со своими настройками и уберут, по их
Кирилл Тихонов Выбор технологии представления дан- мнению, лишнее. Дистрибутив Netwosix
Сергей Супрунов ных не исчерпывает всей совокупнос- предназначен именно для вторых, вот
ти вопросов, возникающих в процессе кому этот дистрибутив будет, несомнен-
РЕКЛАМНАЯ СЛУЖБА планирования дисковых ресурсов. На- но, интересен. При наличии подготов-
тел./факс: (095) 928-8253
до выбрать тип файловой системы, по- ленных конфигурационных файлов яд-
Дарья Хохлова
думать о надежности сделанных реше- ра и серверов, систему под любые тре-
reсlama@samag.ru
ний, и, самое главное, обеспечить со- бования можно собрать в течение часа.
Верстка и оформление ответствующее функционирование со- Буквально через пять дней после объ-
maker_up@samag.ru зданной системы так, чтобы можно бы- явления релиза 1.3 дистрибутива Linux
Дизайн обложки ло воспользоваться на практике всеми Netwosix был анонсирован тестовый ва-
Николай Петрочук преимуществами и выгодами. риант следующей второй ветки. Что но-
вого появилось и для каких целей пред-
По вопросам распространения Активные средства защиты назначен Linux Netwosix?
обращайтесь по телефону: против переполняющихся
(095) 928-8253 (доб. 120) буферов IRC: свобода слова
Стратегическая оборонная инициати- Сервисная система, с помощью кото-
107045, г. Москва,
ва с неисполняемым стеком и NX/XD- рой можно общаться через Интернет
Ананьевский переулок, дом 4/2, стр. 1
тел./факс: (095) 928-8253 байтами дискредитировала себя и на с другими людьми в режиме реально-
Сайт журнала: www.samag.ru проверку оказалась простым марке- го времени, IRC, была создана в 1988
тинговым трюком раздутой рекламной году финским студентом Ярко Ойка-
РУКОВОДИТЕЛЬ ПРОЕКТА шумихи. Кто же теперь будет противо- риненом (Jarkko Oikarinen. Изначаль-
Петр Положевец стоять червям и переполняющимся бу- но, когда доступ к сети Интернет был
ферам? Механизмы проверки време- ограничен, компьютерное сообщест-
УЧРЕДИТЕЛИ ни исполнения бросают вызов и уве- во пользовалось доступными и попу-
Владимир Положевец ренно держат удар, однако, они все- лярными в то время видами общения,
Александр Михалев таки уязвимы. посредством сети FIDO, а также с по-
мощью, так называемых BBS. Посколь-
ИЗДАТЕЛЬ
ЗАО «Издательский дом
Linux Netwosix – ку технология IRC зародилась в UNIX-
«Учительская газета» дистрибутив для сетей сообществе, то очевидно, что наиболь-
Есть два типа администраторов. Пер- шую популярность она снискала себе
Отпечатано типографией вые не будут (или не любят) занимать- именно в этой среде и по сей день, про-
ГП «Московская Типография №13» ся лишней работой и использует, то что цент пользователей этой сети именно
Тираж 9000 экз. установлено вместе с дистрибутивом «юниксоидами» достаточно велик.
Журнал зарегистрирован
в Министерстве РФ по делам печати, Уважаемые читатели!
телерадиовещания и средств массо-
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.).
Спешите оформить подписку
на первое полугодие 2006 года!
За содержание статьи ответственность
несет автор. За содержание рекламно- Приобрести новые и старые номера журнала
го объявления ответственность несет вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
рекламодатель. Все права на опубли-
кованные материалы защищены.
96