СаратовскийГосударственный Технический Университет
ФакультетУправления Социальными Системами
Курсовая работа на тему:
Анализ безопасности ОС Linux
Работувыполнил:
Студентгруппы ПИН 41
ПавловМихаил:
Проверил:
___________
Саратов
2008
Анализсредств по обеспечению безопасности ОС Linux
Много копий было сломано в спорах о том, действительно ли Linux — болеебезопасная операционная система, Серьезность уязвимостей в системе безопасности, которая оценивается по следующим показателям: возможный ущерб (насколько велик вред от использования ОС с незакрытой уязвимостью?); возможность использования (насколько легко использовать данную уязвимость?); возможная доступность (какого рода доступ требуется для использования данной уязвимости?). Количество уязвимостей, серьезность которых определяется как Критическая.
Результаты сравнения не оказались неожиданными. Даже по субъективным изаниженным стандартам, применяемым Microsoft, по меньшей мере 38% последнихпрограммных коррекций предназначены для ликвидации брешей, которые Microsoftотносит к критическим. Только 10% программных коррекций и предупреждений в RedHat относятся к брешам, имеющим критический уровень серьезности. Приведенныерезультаты получены при условиях, благоприятных для Microsoft и обоснованножестких для Red Hat, так как они основаны на критериях Microsoft, а не наиспользуемых нами более строгих показателях безопасности. Если применить нашисобственные критерии, то количество критических брешей в Windows Server 2003возрастет до 50%.
Результаты запроса к базе данных Computer Emergency Readiness Team (CERT)подтвердили наши выводы, сделав разницу еще более значительной. Расположивполученные данные по убыванию серьезности (от более критических к менеекритическим), мы обнаружили, что уровень серьезности 39 из первых 40 записей вбазе данных CERT для Windows превышает пороговое значение, установленное CERTдля серьезных предупреждений. Лишь три из первых 40 записей оказались вышеуказанного порога в результатах запроса к этой базе данных для Red Hat. Запроск базе данных CERT для Linux показал, что только шесть из первых 40 записейнаходятся выше этого порогового значения.
Следует также учесть тот факт, что в списки как для Red Hat, так и для Linuxвключаются бреши в программном обеспечении, которое функционирует в Windows, аэто означает, что такие бреши относятся одновременно и к Linux, и к Windows. Ниодно из предупреждений, связанных с Windows, не относится к программномуобеспечению, функционирующему в Linux.
Почему же тогда так много, на первый взгляд, убедительных уверений в том,что операционная система Linux в действительности менее безопасна, чем Windows?Обоснование вывода о меньшей безопасности Linux содержит вопиющие логическиенесоответствия. Нужно всего лишь чуть внимательнее рассмотреть этот вопрос,чтобы развенчать мифы и найти логические ошибки, лежащие в основе следующихчасто повторяемых утверждений: Windows подвергается такому количеству атак только потому, что имеет больше инсталляций, чем Linux. Следовательно, Linux была бы столь же уязвима, если бы имела столько же инсталляций. Открытый код по природе своей значительно опаснее, поскольку злоумышленникам легче найти бреши в системе безопасности. Для Linux имеется больше предупреждений об уязвимостях, чем для Windows, следовательно, Linux менее безопасна, чем Windows. В случае операционной системы Linux проходит больше времени между обнаружением бреши и выпуском соответствующей программной коррекции, чем в случае Windows.
Ошибка утверждений 3 и 4 в том, что они игнорируют наиболее важныепоказатели, позволяющие оценить безопасность одной операционной системы посравнению с другой. Как будет показано в разделе «Реальные показателибезопасности и серьезности», попытки характеризовать безопасность наосновании одного показателя (например, по тому, сколько времени проходит междуобнаружением бреши и выходом программной коррекции) не дают значащихрезультатов.
В заключение дан краткий обзор существенных различий в концепциях Windows иLinux, что позволяет понять, почему операционная система Windows более уязвимак атакам как на серверах, так и на настольных компьютерах, и почему Linuxявляется более безопасной системой. Развенчание мифовМиф 1. Безопасность — вопрос количества: чем меньшеинсталляций, тем безопаснее
Пожалуй, чаще всего повторяемый миф при сравнении безопасности Windows иLinux — утверждение, что с ОС Windows случается больше инцидентов, связанных свирусами, сетевыми червями, троянскими программами и другими проблемами, толькоиз-за того, что злоумышленники предпочитают вмешиваться в работу программногообеспечения, которое имеет наибольшую инсталляционную базу. Это рассуждениеприводят в защиту ОС Windows и Windows-приложений. Windows преобладает нанастольных компьютерах; именно поэтому на Windows и Windows-приложениянаправлено большинство атак, и именно поэтому не наблюдаются вирусы, сетевыечерви и троянские кони для Linux. Нельзя отрицать, что до некоторой степени этоверно, однако отнюдь не бесспорен вывод, который отсюда делается, а именно: Linuxи Linux-приложения не являются более безопасными, чем Windows иWindows-приложения, просто Linux — слишком незначительная цель для того, чтобытратить усилия на организацию атаки.
Это рассуждение легко опровергнуть, если учесть, что самым популярнымпрограммным обеспечением для web-серверов Интернета является Apache. Какследует из выполненного компанией Netcraft1обзора web-сайтов за сентябрь 2004 г., 68% web-сайтов используютweb-сервер Apache и только 21% web-сайтов используют Microsoft IIS. Еслипроблемы с безопасностью возникают из-за того, что злоумышленники нацеливаютсяна самую обширную инсталляционную базу, то должно наблюдаться больше червей,вирусов и прочих вредоносных программ, нацеленных на Apache и те операционныесистемы, под управлением которых он функционирует, чем на Windows и IIS. Болеетого, должно регистрироваться больше атак против Apache, чем против IIS, таккак из приведенного выше рассуждения следует, что проблема заключается вколичествах, а не в уязвимостях.
1Netcraft Web Survey for September 2004 — news.netcraft.com/archives/2004/09/index.html
Однако в реальности наблюдается обратная картина. В течение долгого времениIIS был главной целью для сетевых червей и других атак, и эти атаки были весьмауспешными. Сетевой червь Code Red, который использовал переполнение буфера всервисе IIS для получения контроля над web-серверами, заразил около 300 тысячсерверов, и его распространение прекратилось лишь потому, что это былопредусмотрено в программном коде данного червя. Воздействие еще одного сетевогочервя IISWorm оказалось ограниченным только благодаря тому, что эта программабыла плохо написана, а вовсе не из-за успешной защиты IIS.
Да, известны сетевые черви для Apache, например, Slapper. (Вдействительности Slapper использует известную уязвимость в протоколе OpenSSL, ане в Apache). Но сетевые черви для Apache редко становятся сенсацией, посколькуих воздействие очень ограничено и они легко искореняются. На атакуемых сайтахуже были приняты меры, исключающие возможность использования ошибки в OpenSSL.Кроме того, благодаря модульной структуре Linux и UNIX было очень простоочистить и восстановить зараженные сайты. Для этого потребовалось всегонесколько команд и не было необходимости в перезагрузке.
Возможно, именно поэтому в рейтинге Netcraft среди 50 web-сайтов, лидирующихпо длительности непрерывной работы (промежуток времени между перезагрузками),оказалось 47, использующих Apache2. Ни на одном из этих 50 web-сайтов неиспользовались ни Windows, ни Microsoft IIS. Поэтому, если верно предположение,что злоумышленники атакуют наиболее распространенные программные платформы, товозникает вопрос: почему хакеры так успешно взламывают программное обеспечениеи операционную систему, самые популярные среди настольных компьютеров, заражают300 тысяч серверов IIS, но неспособны нанести подобный ущерб наиболеепопулярному web-серверу и его операционным системам?
2Netcraft Top 50 Servers With Longest Uptime (результаты могут отличаться отприведенных, так как информация обновляется ежедневно) — http://uptime.netcraft.com/up/today/top.avg.html
Читатели, посетившие web-сайт Netcraft, не могут не заметить, что все 50серверов из списка лучших по длительности непрерывной работы используюткакую-либо разновидность BSD, в основном BSD/OS. Ни один из них нефункционирует под управлением Windows и ни один — под управлением Linux. Самоепродолжительное время непрерывной работы среди 50 лидеров составляет 1 768 днейподряд или почти 5 лет.
В результате складывается впечатление, что BSD по своей надежностипревосходит все остальные операционные системы, однако информация Netcraft,хотя и непреднамеренно, вводит в заблуждение. Netcraft определяетпродолжительность непрерывной работы операционных систем по данным, которыерегистрируются самими операционными системами. Linux, Solaris, HP-UX инекоторые версии FreeBSD регистрируют не более 497 дней непрерывной работы,после чего счетчики обнуляются, и отсчет начинается заново. Поэтому и кажется,что все web-сайты, размещенные на компьютерах под управлением Linux, Solaris,HP-UX и, в некоторых случаях, FreeBSD, перезагружаются каждые 497 дней, дажеесли они функционируют годами. При составлении обзора Netcraft ни для одной изэтих операционных систем не будет зарегистрировано время непрерывной работы,превышающее 497 дней, даже если они годами функционируют без перезагрузки, такчто названные системы никогда не окажутся среди 50 лидеров.
Это объясняет, почему Linux, Solaris и HP-UX не могут продемонстрироватьтакой же впечатляющий результат по количеству последовательных дней непрерывнойработы, как BSD, даже если на самом деле эти операционные системы годамифункционируют без перезагрузки. Но это не объясняет, почему среди 50 лидеровнет серверов под управлением ОС Windows. Windows не обнуляет счетчик временинепрерывной работы. Очевидно, просто не существует web-сайтов под управлениемОС Windows, которые функционировали бы без перезагрузки достаточно долго, чтобыпопасть в список 50 лучших.
Принимая во внимание казус с 497-дневным циклом обнуления становитсянеясным, как сравнить продолжительность непрерывной работы для Linux и Windows,основываясь на опубликованных данных Netcraft. Два результата — не статистика,но и они кое о чем говорят, особенно если один из них относится к web-сайтукомпании Microsoft. На сентябрь 2004 года средняя продолжительность непрерывнойработы web-серверов под управлением ОС Windows, поддерживающих собственныйweb-сайт компании Microsoft (www.microsoft.com), составила примерно 59 дней.Максимальная продолжительность непрерывной работы для Windows Server 2003 натом же сайте — 111 дней, минимальная — 5 дней. Сравним эти результаты с даннымидля сайта www.linux.com (типовой сайт под управлением ОС Linux), у которого исредняя, и максимальная продолжительность непрерывной работы составляет 348дней. Точное совпадение средней и максимальной величины означает, что этисерверы либо обнулили счетчик времени 348 дней назад, проработав до этого 497дней, либо 348 дней назад они были перезагружены или впервые включены.
Из всего вышесказанного следует вывод, что при оценке количества успешныхатак на программное обеспечение решающий фактор — это качество, а неколичество. Миф 2. Открытый код опасен по определению
Впечатляющие данные о продолжительности непрерывной работы, полученные дляApache, позволяют усомниться еще в одном популярном мифе: открытый исходный код(в котором функциональная структура приложений является общедоступной) болееопасен, чем патентованный исходный код (в котором функциональная структураявляется засекреченной), поскольку хакеры могут воспользоваться этим кодом дляобнаружения и использования брешей.
Однако факты говорят о другом. Количество предназначенных для ОС Windowsэффективных вирусов, программ-шпионов, сетевых червей, троянских и другихвредоносных программ огромно, а количество компьютеров, постоянно заражаемыхразличными комбинациями вышеперечисленного, так велико, что вряд ли поддаетсяисчислению. Вредоносное программное обеспечение «свирепствует»настолько, что для компрометации свежеустановленной, «непропатченной»версии Windows XP после подключения компьютера к Интернету требуется в среднем16 минут — меньше, чем время, необходимое данной ОС для загрузки и инсталляциипрограммных коррекций, которые позволят защитить этот компьютер3.
3Unpatched PC «Survival Time» Just 16 Minutes, Gregg Keizer,TechWeb News www.internetweek.com/breakingNews/showArticle.jhtml?articleID=29106061
Еще один пример. Web-сервер Apache имеет открытый код. Microsoft IIS —патентованный. В этом случае факты опровергают и миф о наибольшей популярности,и миф об опасности открытого кода. Web-сервер Apache — наиболее популярныйweb-сервер. Если бы оба эти мифа были правдой, следовало бы ожидать, что Apacheи операционные системы, под управлением которых он функционирует, будут чащеподвергаться атакам, чем Microsoft Windows и IIS. На деле же все происходит сточностью до наоборот. Apache занимает почти монопольное положение в спискесерверов с наибольшей продолжительностью непрерывной работы. Ни MicrosoftWindows, ни Microsoft IIS нет в списке 50 серверов с самым продолжительнымвременем непрерывной работы. Очевидно, тот факт, что злоумышленники имеютдоступ к открытому коду Apache, не дает им никакого преимущества в организацииболее успешных атак против Apache, чем против IIS. Миф 3. Выводы на основании единственной характеристики
Слабость других популярных мифов о большей безопасности Windows по сравнениюс Linux в том, что они основаны на единственном показателе — каком-нибудь одномаспекте измерения безопасности. Это верно для любого источника информации, будьто данные компетентного исследования или малообоснованная информация на уровнеслухов.
Широко известно утверждение: «Для Linux зарегистрировано большепредупреждений об уязвимостях, чем для Windows, поэтому можно говорить оменьшей безопасности Linux по сравнению с Windows». Не менеераспространено и такое: «Время между обнаружением бреши и созданиемсоответствующей программной коррекции в случае Linux больше, чем в случаеWindows, поэтому можно говорить о меньшей безопасности Linux по сравнению сWindows».
Второе утверждение совершенно непостижимо. Невозможно объяснить, почемусчитается, что по такому показателю, как среднее время от момента обнаружениябреши до выпуска соответствующей программной коррекции, Microsoft превосходит какую-либоиз конкурирующих операционных систем, не говоря уже о Linux. Компании Microsoftпотребовалось семь месяцев (!), чтобы устранить одну из самых серьезныхуязвимостей в системе защиты (Microsoft Security Bulletin MS04-007 ASN.1Vulnerability, компания eEye Digital Security сообщила об этой задержке винформационном бюллетене AD20040210). А ведь еще имеются бреши, о которыхMicrosoft открыто заявляет, что они никогда не будут ликвидированы. Вбюллетене Microsoft Security Bulletin MS03-010 об уязвимости Denial Of Service(отказ в обслуживании) в Windows NT говорится, что эта уязвимость никогда небудет устранена. Позднее компания Microsoft заявила, что не будут устранятьсяуязвимости в Internet Explorer для всех версий операционных систем, выпущенныхранее Windows XP. В статистическом смысле случай с семью месяцами междуобнаружением и устранением ошибки не окажет значительного влияния на среднеевремя реагирования при условии, что найдется достаточно много примеровчрезвычайно быстрого реагирования, которые скомпенсируют подобные аномалии,если это действительно аномалии. Но стоит включить в выборку только один случай«никогда» — и о статистическом среднем можно забыть навсегда.
Оставив в стороне эту неразрешимую загадку, рассмотрим, есть ли основанияполагать, что Linux менее безопасна, чем Windows, потому что среднее времямежду обнаружением уязвимости и выпуском соответствующей программной коррекциив случае Linux больше, чем в случае Windows. Зададим себе вопрос: «Еслипрямо сейчас у меня случится сердечный приступ, в какое отделение скорой помощия предпочту попасть? Туда, где среднее время между регистрацией пациента иоказанием ему помощи самое короткое? Или я предпочту отделение, где это среднеевремя дольше, но зато пациенты с самыми серьезными диагнозами получают помощь впервую очередь?»
Очевидно, что следует выбрать второе отделение, но вовсе не потому, что из приведеннойвыше информации ясно, что оно лучше первого. Этот вариант предпочтительнее,потому что он выбран по двум показателям, один из которых особенно важен длявас именно в данный момент. Можно с уверенностью утверждать: мало кто захочетпопасть в больницу, о которой известно, что в ней есть шанс умереть отсердечного приступа, ожидая, пока врач закончит вправлять кому-то вывихнутыймизинец — каким бы впечатляющим ни было «среднее время реагирования назапрос о медицинской помощи». Трудность в том, что в приведенном примеренедостаточно информации для принятия оптимального решения. Ничего не известно отом, как больница с наименьшим «временем реагирования» определяет,кому из больных следует уделить внимание в первую очередь. Кроме того, неплохобы иметь информацию о показателе смертности среди больных, нуждающихся внеотложной помощи, о квалификации врачей и т. д.
Очевидно, что для правильного выбора есть только один способ — собрать обокрестных отделениях скорой помощи подробную информацию, т.е. узнать как можнобольше важных показателей и найти разумный компромисс между этими показателями.Было бы непростительной безответственностью рекомендовать отделение скоройпомощи для случая сердечного приступа, основываясь только на одном показателе,например, на времени реагирования, среднем для всех неотложных случаев,особенно если без труда можно получить другую важную информацию, котораяпозволит сделать лучший выбор.
В той же степени неразумно и безответственно давать рекомендации илипринимать серьезное экономическое решение на основании единственногопоказателя, такого как среднее время между обнаружением бреши и ее устранениемдля той или иной операционной системы, или такого показателя, как количествопредупреждений об уязвимостях для того или иного продукта.
Любой отдельно взятый показатель может ввести в заблуждение, посколькунеясна его значимость. Рассмотрим утверждение, что известно большепредупреждений для программного обеспечения Linux, чем для Windows. Этастатистика бессмысленна, потому что не отвечает на самые важные вопросы.Сколько брешей из зафиксированных всеми предупреждениями об уязвимостях создаютреальные угрозы? Насколько серьезны эти угрозы? Насколько вероятно, что ихиспользование причинит серьезный ущерб компьютерам? Ответы на эти вопросы имеютбольшое значение. Что лучше, операционная система со 100 брешами, из-за которыхвозможен незначительный ущерб (а то и вовсе никакого) и которыми не сможетвоспользоваться никто, кроме локальных пользователей с действующими учетнымизаписями и физическим доступом к компьютеру? Или стоит предпочесть операционнуюсистему с единственной критической брешью, из-за которой любой хакер изИнтернета может уничтожить всю информацию на сервере? Ясно, что само по себеколичество предупреждений не является значимым показателем, указывающим набольшую безопасность одной операционной системы по сравнению с другой. Архитектура Windows и архитектура Linux
Возможно, причиной мифа о том, что Windows намного чаще подвергается атакам,чем Linux, являются вирусы, троянские кони и сетевые черви, ориентированные наэлектронную почту и web-навигатор. Несомненно, на настольных компьютерахинсталляций Windows больше, чем инсталляций Linux. Весьма возможно, чтопрограммное обеспечение Windows для настольных компьютеров чащеподвергается атакам, потому что Windows преобладает на настольных компьютерах.Но остается без ответа один важный вопрос. Действительно ли атаки на Windowsстоль успешны исключительно из-за их многочисленности, или же этот фактобъясняется наличием проектных недоработок и неудачных проектных решенийWindows?
Значительная часть (если не большинство) вирусов, троянских коней, сетевыхчервей и других вредоносных программ, заражающих компьютеры с Windows,используют для этого уязвимости в Microsoft Outlook и Internet Explorer.Поэтому можно поставить вопрос по-другому, включив в рассмотрение тот же типпрограммного обеспечения для Linux (наиболее часто используемые web-навигаторы,программы электронной почты, текстовые процессоры и т. д.): имеет ли Linux столькоже уязвимостей в системе безопасности, сколько их имеет Windows? Архитектура Windows
Вирусы, троянские кони и другие вредоносные программы поражают настольныекомпьютеры с Windows по целому ряду причин, свойственных Windows и чуждыхLinux: Windows только недавно эволюционировала от однопользовательской модели к многопользовательской. Windows по своей архитектуре является монолитной, а не модульной системой. В Windows слишком широко используется RPC-механизм. Windows фокусируется на знакомом графическом интерфейсе для настольных компьютеров.Windows только недавно эволюционировала отоднопользовательской модели к многопользовательской
Критики Linux любят повторять, что Linux — это «устаревшая»технология. Ирония же заключается в следующем: одна из самых больших проблемWindows в том, что именно этой операционной системе никак не удается избавитьсяот своей «устаревшей» однопользовательской архитектуры.
В течение долгого времени происхождение от однопользовательской системымешало Windows. Система Windows изначально была разработана так, чтобыобеспечить и пользователям, и приложениям свободный доступ ко всей системе, аэто значит, что кто угодно мог скомпрометировать критичную системную программуили файл. Кроме того, это означает, что вирусы, троянские и другие вредоносныепрограммы могли скомпрометировать любую системную программу или файл, потомучто Windows не изолировала пользователей и приложения от критичных областейоперационной системы.
Операционная система Windows XP стала первой версией Windows, в которойпроявились существенные результаты усилий по изолированию пользователей отсистемы, так что в Windows XP каждый пользователь имеет свои собственные личныефайлы и ограниченные системные полномочия. Но из-за этого многиеWindows-приложения, разработанные для предыдущих версий, пересталифункционировать, поскольку раньше они могли получать доступ и модифицироватьпрограммы и файлы, доступ к которым теперь разрешен только администратору.Именно поэтому в Windows XP предусмотрен режим совместимости, то есть режим,который позволяет программам функционировать так, будто они работают в прежнейнезащищенной однопользовательской среде. Кроме того, именно по этой причинекаждая новая версия Windows несет в себе угрозу отказа приложений, работавших впредыдущих версиях. Поскольку Microsoft вынуждена модифицировать Windows, чтобыона «вела себя» как многопользовательская система, новые ограничениявыводят из строя приложения, которые функционировали при отсутствии этихограничений.
Windows XP — это прогресс, но и Windows XP нельзя назвать настоящеймногопользовательской системой. Например, Windows XP поддерживает функцию,которую Microsoft называет «Fast User Switching» (быстроепереключение пользователей), она же позволяет двум и более пользователям входитьв систему Windows XP на одном компьютере в одно и то же время. Однако естьзагвоздка. Это возможно тогда и только тогда, когда данный компьютер непринадлежит какому-либо домену сети Windows. Причина в том, что сеть Microsoftразработана в предположении, что пользователи входят в сеть только сосвоего собственного компьютера. Microsoft либо не может, либо не желает внестинеобходимые изменения в операционную систему и «конструкцию» сети,чтобы адаптировать этот сценарий к возможностям Windows XP.
Windows Server 2003 — это следующее приближение к настоящеймногопользовательской системе, но даже в Windows Server 2003 не удалосьликвидировать все бреши в системе защиты, унаследованные отоднопользовательской системы. Именно поэтому в Windows Server 2003 пришлосьотключить использование по умолчанию многих функций web-навигатора (например,ActiveX, написание сценариев и др.). Если бы Microsoft перестроила эти функциидля работы в безопасном и изолированном режиме в настоящеймногопользовательской среде, они не создавали бы серьезных угроз, передкоторыми по-прежнему беззащитна Windows. Windows по своей архитектуре являетсямонолитной, а не модульной системой
Монолитная система — это система, в которой большинство функцийинтегрировано в единый модуль. Противоположностью такой системе являетсясистема, в которой функции распределены по нескольким уровням, причем каждыйуровень имеет ограниченный доступ к другим уровням.
Хотя часть недостатков Windows — «наследство» ее исходнойоднопользовательской архитектуры, другие ее недостатки — прямое следствиеобдуманных проектных решений, таких как монолитная архитектура (интегрированиебольшинства функций в ядро операционной системы). Компания Microsoft фактическивытеснила web-навигатор Netscape, интегрировав Internet Explorer в своюоперационную систему так тесно, что не использовать IE стало практическиневозможно. Нравится это пользователю или нет, но Internet Explorer вызываетсяпри использовании справочной системы Windows, Outlook и многих другихприложений как Microsoft, так и независимых производителей. Конечно,коммерческие интересы Microsoft требуют, чтобы использование каких-либо иныхпродуктов, кроме Internet Explorer, было крайне затруднительным. Microsoftуспешно превращает конкурирующие продукты в ненужные, интегрируя в своюоперационную систему все больше и больше сервисов, предоставляемых такимипродуктами. Но в результате этого подхода получается монстр из сложным образомвзаимодействующих сервисов (то есть, по определению, монолитная система).
Взаимозависимости такого рода имеют два неприятных каскадных побочныхэффекта. Во-первых, в монолитной системе каждая брешь в какой-либо одной частисистемы проявляется во всех сервисах и приложениях, зависящих от этой частисистемы. Интегрировав Internet Explorer в операционную систему, Microsoftсоздала систему, в которой любая брешь в Internet Explorer подвергаетнастольный компьютер с Windows угрозам, реализация которых может нарушить нетолько работу web-навигатора, но и весьма далеких от него объектов. Следовательно,одна-единственная брешь в Internet Explorer проявляется в бесчисленноммножестве других приложений, многие из которых используют Internet Explorerнеявным для пользователя образом, что дает этому пользователю ложное ощущениебезопасности.
Такая архитектурная модель оказывает намного более глубокое воздействие, чемобычно представляют. Так, в монолитной системе уязвимости в защите оказываютсяболее критичными, чем следовало ожидать.
Проиллюстрировать это поможет простая аналогия. Представим себе идеальноустроенную операционную систему, которая состоит из трех сфер: одна — в центре;вторая, большего размера, охватывает первую; а третья сфера охватывает двевнутренние. Конечный пользователь «видит» только внешнюю сферу. Этоуровень, где пользователь запускает приложения, например, текстовые процессоры.Текстовые процессоры используют необходимые функции, предоставляемые второйсферой, например, средства визуализации графических изображений илиформатирования текста. Эта вторая сфера (ее специалисты обычно называют«пользовательскими процессами») не имеет прямого доступа к критичнымчастям системы. Чтобы выполнить свою работу, она должна запросить разрешение отсамой внутренней сферы. Внутренняя сфера выполняет самые важные функции, поэтомуимеет непосредственный доступ ко всем критичным частям системы. Она управляетдисками, памятью и всем остальным. Эта сфера называется «ядро» иявляется сердцем операционной системы.
В случае вышеописанной архитектуры брешь в программах графическогоотображения не может нанести глобального ущерба компьютеру, потому что функциивизуализации не имеют прямого доступа к наиболее критичным частям системы. Дажеесли пользователь загрузит в текстовый процессор изображение с внедреннымвирусом, этот вирус не сможет повредить ничего, кроме собственных файловпользователя, поскольку функция графического отображения находится внецентральной сферы и не имеет доступа ни к одной из критичных частей системы.
Проблема Windows заключается в том, что в ней не соблюдаются разумные конструкторскиепринципы разделения функций по соответствующим уровням, описанным выше. Windowsвкладывает слишком много функций в ядро, центральную сферу, то есть туда, гдеможно причинить самый большой ущерб. Например, если интегрировать функцииграфического отображения в центральную сферу (ядро), эти функции получатвозможность повредить всю систему. Таким образом, как только обнаружится брешьв алгоритме графического отображения, чрезмерно интегрированная архитектураWindows облегчит использование этой бреши для получения полного контроля надсистемой или для разрушения всей системы.
Наконец, монолитная система нестабильна по своей природе. Когда в системетак много взаимосвязей, изменение одной из частей этой системы порождаетмножество угроз. Единственное изменение в системе может оказать (и обычнооказывает) каскадное воздействие на все сервисы и приложения, которые зависятот этой части системы. Именно поэтому пользователи Windows трепещут при мыслиоб установке программных коррекций и обновлений. Обновления, исправляющие однучасть Windows, часто нарушают работу других сервисов и приложений. В качествеиллюстрации можно привести следующий факт: для пакета обновлений Windows XPservice pack 2 уже составлен постоянно растущий список случаев, когда его установкапривела к выходу из строя сторонних приложений. Это естественное явление вмонолитной системе — любое изменение в одной части механизма влияет на весьмеханизм и на все приложения, которые зависят от этого механизма. В Windows слишком широко используетсяRPC-механизм
Аббревиатура RPC означает «удаленный вызов процедуры» (RemoteProcedure Call). RPC — это то, что происходит, когда одна программа отправляетчерез сеть указание другой программе выполнить какое-либо действие. Например,одна программа может использовать RPC, чтобы дать другой программе указаниерассчитать среднюю стоимость чая в Китае и вернуть результат. Удаленнымвызовом процедуры этот механизм называется потому, что не имеет значения,функционирует ли «другая программа» на том же компьютере, насоседнем, или где-то в Интернете.
RPC-механизмы — это потенциальная угроза безопасности, поскольку ихпредназначение — позволить компьютерам, находящимся где-то в сети, даватьданному компьютеру указания выполнить те или иные действия. Как толькообнаруживается брешь в программе, разрешающей использование RPC-механизма, улюбого, кто располагает подключенным к сети компьютером, появляется возможностьиспользовать эту брешь, чтобы заставить уязвимый компьютер выполнить какие-либодействия. К сожалению, пользователи Windows не могут заблокироватьRPC-механизм, так как Windows использует его, даже если компьютер не подключенк сети. Многие сервисы Windows устроены именно так. В некоторых случаях можноблокировать RPC-порт на межсетевом экране, но Windows так широко используетRPC-механизмы в основных функциях, что подобная блокировка не всегда возможна.Удивительно, но некоторые из наиболее серьезных уязвимостей в Windows Server2003 (см. Таб.1) — следствие брешей в самих RPC-функциях Windows, ане в приложениях, которые их используют. Самый распространенный способиспользовать уязвимость, связанную с RPC-механизмом — атаковать сервис,использующий RPC, а не сам RPC-механизм.
Важно отметить, что RPC-механизмы не всегда необходимы, отчего становитсяеще непонятнее, почему Microsoft так широко их использует. Предположим,требуется создать web-сайт, используя два сервера. Один сервер будет работать вкачестве сервера базы данных, второй — в качестве web-сервера. В этом случаесерверу базы данных необходимо использовать RPC, потому что web-сервернаходится на отдельном компьютере и должен иметь возможность доступа к серверубазы данных через сетевое подключение. (Даже в этом случае следуетсконфигурировать сервер базы данных так, чтобы он «слушал» толькоданный web-сервер, но не другие компьютеры). Если же и сервер базы данных, иweb-сервер функционируют на одном компьютере, использование RPC-механизмов на серверебазы данных не только не обязательно, но и нежелательно. Web-сервер должениметь прямой доступ к серверу базы данных, потому что они оба функционируют наодном компьютере. Ни технических, ни логических причин подключать к сети сервербазы данных нет, поскольку такое подключение создает лишнюю угрозубезопасности.
Вопрос о серверах баз данных поднят из-за того, что сетевой червь Slammer,один из самых опасных червей, когда-либо существовавших в Интернете,использовал на редкость неуместное применение RPC-подобных сетевых соединений,реализованное Microsoft. За короткое время Slammer заразил так много систем,что Интернет практически перестал функционировать.
Сетевой червь Slammer вызвал хаос, использовав две бреши в Microsoft SQLServer, который является сервером клиент-серверной базы данных SQL-типа. Однабрешь — это самая бесполезная функция Microsoft SQL Server, позволяющаяодновременно запустить несколько копий сервера базы данных на одном компьютере.Почему эта функция бесполезна? Если вы незнакомы с работой серверов баз данных,представьте это себе следующим образом. В обычных условиях бессмысленнозапускать несколько копий сервера базы данных на одном компьютере, потому чтоодна копия — это все, что нужно, даже если ее использует множество разныхприложений. Потребность в одновременном запуске нескольких серверов баз данныхна одном компьютере также вероятна, как потребность в одновременном запускедвух копий Windows XP на одном компьютере. Несколько копий сервера базы данныхзапускаются не по ошибке исключительно редко, да и то лишь ввысокопроизводительных приложениях или для тестирования и разработки4.
4Кажется, мы поняли, почему Microsoft решила установить по умолчанию именно этотрежим функционирования SQL Server. Многие сторонние приложения используютпроцессор SQL Server по умолчанию. Если бы на компьютере могла функционироватьтолько одна копия SQL Server, то Microsoft пришлось бы разработать удобныесредства, позволяющие программе инсталляции обнаружить установленный ифункционирующий SQL Server, а затем обеспечить удобный способ инсталляции,интеграции и администрирования особых требований ст