Четверг 15 ноября 2018

Почему Linux безопаснее чем Windows ?

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

Архитектура Windows:

Вирусы, троянские кони и другие вредоносные программы поражают настольные компьютеры с Windows по целому ряду причин, свойственных Windows и чуждых Linux:

1.Windows только относительно недавно эволюционировала от однопользовательской модели к многопользовательской.

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

3. Проблема Windows заключается в том, что в ней не соблюдаются разумные конструкторские принципы разделения функций по соответствующим уровням,принятым в классическом варианте построения ОС. Windows вкладывает слишком много функций в ядро, центральную сферу, то есть туда, где можно причинить самый большой ущерб. Например, если интегрировать функции графического отображения в центральную сферу (ядро), эти функции получат возможность повредить всю систему. Таким образом, как только обнаружится брешь в алгоритме графического отображения, чрезмерно интегрированная архитектура Windows облегчит использование этой бреши для получения полного контроля над системой или для разрушения всей системы.
Наконец, монолитная система нестабильна по своей природе. Когда в системе так много взаимосвязей, изменение одной из частей этой системы порождает множество угроз. Единственное изменение в системе может оказать (и обычно оказывает) каскадное воздействие на все сервисы и приложения, которые зависят от этой части системы. Это естественное явление в монолитной системе — любое изменение в одной части механизма влияет на весь механизм и на все приложения, которые зависят от этого механизма, то есть классическая цепная реакция падающих домино.

4. В Windows слишком широко используется RPC-механизм. Аббревиатура RPC означает "удаленный вызов процедуры" (Remote Procedure Call). RPC — это то, что происходит, когда одна программа отправляет через сеть указание другой программе выполнить какое-либо действие. Например, одна программа может использовать RPC, чтобы дать другой программе указание рассчитать среднюю стоимость чая в Китае и вернуть результат. Удаленным вызовом процедуры этот механизм называется потому, что не имеет значения, функционирует ли "другая программа" на том же компьютере, на соседнем или где-то в Интернете.
RPC-механизмы — это потенциальная угроза безопасности, поскольку их предназначение — позволить компьютерам, находящимся где-то в сети, давать данному компьютеру указания выполнить те или иные действия. Как только обнаруживается брешь в программе, разрешающей использование RPC-механизма, у любого, кто располагает подключенным к сети компьютером, появляется возможность использовать эту брешь, чтобы заставить уязвимый компьютер выполнить какие-либо действия. К сожалению, пользователи Windows не могут заблокировать RPC-механизм, так как Windows использует его, даже если компьютер не подключен к сети.

5. Windows ( на примере Windows Server 2003 ) фокусируется на знакомом графическом интерфейсе для настольных компьютеров. Компания Microsoft считает знакомый интерфейс Windows главным аргументом в пользу перехода на Windows Server 2003. Цитата с web-сайта компании Microsoft: "Знакомый интерфейс Windows облегчает использование Windows Server 2003. Новые удобные мастера упрощают установку специальных ролей и выполнение обычных задач управления сервером..." Пропагандируя такое использование, Microsoft предлагает администраторам работать с ОС Windows Server 2003 на самом сервере, зарегистрировавшись с полномочиями администратора. В результате администратор Windows становится наиболее уязвимым к брешам в системе защиты, поскольку использование уязвимых программ, таких как Internet Explorer, создает угрозы безопасности сервера.

Архитектура Linux:

То обстоятельство, что вирусы, троянские и другие вредоносные программы редко могут (если вообще могут) заразить Linux-системы, частично можно объяснить следующими причинами.

1. Linux имеет долгую историю использования тщательно проработанной многопользовательской архитектуры, которая была взята от ОС UNIX. Linux никогда не была однопользовательской операционной системой. Поэтому в ней с самого начала заложен принцип изолирования пользователей от приложений, файлов и каталогов, воздействующих на операционную систему в целом. Каждому пользователю предоставляется пользовательский каталог, в котором хранятся все его файлы данных и файлы конфигурации, принадлежащие этому пользователю. Когда пользователь запускает какое-либо приложение (например, текстовый процессор), оно запускается с ограниченными полномочиями данного пользователя. Запущенное пользователем приложение имеет право на запись только в собственный каталог этого пользователя. Оно не может ничего записать в системный файл или даже в каталог другого пользователя, если только администратор явным образом не предоставит данному пользователю такое право.
Еще важнее, что Linux предоставляет почти все функциональные возможности (например, визуализацию изображений в формате JPEG) в виде модульных библиотек. Поэтому, когда текстовый процессор отображает JPEG-изображения, соответствующие функции запускаются с теми же ограниченными полномочиями, что и сам текстовый процессор. Если в программах визуализации JPEG-изображений имеется брешь, злоумышленник сможет использовать ее только для получения таких же полномочий, как у данного пользователя, что значительно ограничивает масштабы возможного ущерба.

2. Ограничения по умолчанию — свойство модульной архитектуры Linux; едва ли возможно отправить по электронной почте пользователю Linux такое сообщение, которое заразит вирусом весь компьютер. Не имеет значения, насколько неудачно сконструирован почтовый клиент или как именно он прореагирует на вирус — полномочия, установленные для клиента, позволят ему заразить или повредить только файлы своего пользователя. Веб- браузеры, работающие в ОС Linux, не поддерживают такие небезопасные по своей природе объекты, как элементы управления ActiveX, но даже если бы они поддерживались, вредоносный элемент ActiveX смог бы запуститься только с полномочиями того пользователя, который запустил браузер. И в этом случае самый большой вред, который он смог бы принести — это заразить или удалить собственные файлы пользователя.

3. По своей архитектуре Linux является модульной, а не монолитной системой. Linux — это операционная система, сконструированная, в основном, по модульному принципу, от ядра (центрального "мозга" Linux) до приложений. В Linux практически нет нерасторжимых связей между какими-либо компонентами. Не существует единственного браузера, используемого справочными системами или программами электронной почты. В самом деле, нетрудно сконфигурировать большинство программ электронной почты так, чтобы использовать встроенный браузер для отображения HTML-сообщений либо запускать любой нужный браузер для просмотра HTML-документов или перехода по ссылкам, приведенным в тексте сообщения. Следовательно, брешь в одном браузере необязательно представляет опасность для каких-либо других приложений на данном компьютере.

4. Не все в Linux является модульным. Две наиболее популярные графические среды - KDE и GNOME - в каком-то смысле монолитны по своей архитектуре. По крайней мере, монолитны настолько, что в принципе обновление одной части GNOME или KDE может нарушить работу других частей GNOME или KDE. Но и GNOME, и KDE не до такой степени монолитны, чтобы требовалось использование приложений, разработанных специально для GNOME или KDE. Приложения GNOME или любые другие приложения можно запускать под KDE, а KDE или любые другие приложения — под GNOME.

5. Ядро Linux поддерживает модульные драйверы, но в значительной мере является монолитным ядром, потому что сервисы в этом ядре взаимозависимы. Все отрицательные последствия монолитности минимизируются тем, что ядро Linux, насколько это возможно, разработано как наименьшая часть системы. Linux почти но не всегда придерживается следующего принципа: "Если задача может быть выполнена вне ядра, она должна быть выполнена вне ядра". В последние годы (к большому сожалению !) разроботчики только и делают, что всякую бяку тянут в ядро.

6. Ошибки в драйверах графических адаптеров являются частой причиной "синего экрана смерти" в Windows. Это происходит из-за того, что Windows интегрирует графику в ядро, где подобная ошибка может вызвать отказ системы. Не считая нескольких известных исключений (например, коммерческий драйвер графики NVidia), Linux заставляет все графические драйверы функционировать вне ядра. Ошибка в графическом драйвере может вызвать сбой в графическом приложении, но не может вызвать отказ всей системы. В случае такой ошибки достаточно просто перезапустить графическое приложение. Никакой перезагрузки компьютера не требуется так как система продолжает работать дальше.

7. Linux не зависит от RPC-механизма. В большинстве дистрибутивов Linux программы инсталлируются так, что по умолчанию доступ в сеть отключен. Даже если Linux-приложения по умолчанию используют сеть, они чаще всего сконфигурированы так, что могут отвечать только локальному компьютеру и игноририруют любые запросы других компьютеров в сети.
В отличие от Windows Server 2003, компьютер с операционной системой Linux останется полностью работоспособным, даже если на нем заблокировать практически все RPC-сервисы, связанные с использованием сети.

8. Серверы Linux идеально подходят для удаленного администрирования. Сервер Linux можно, а часто и нужно, инсталлировать без подключенного монитора и администрировать удаленно. Очень часто такой тип инсталляции идеален для серверов, поскольку при удаленном администрировании сервер не подвергается таким угрозам, как при локальном администрировании.
Например, можно войти в систему на своем настольном компьютере в качестве обычного пользователя с ограниченными полномочиями и администрировать сервер под управлением ОС Linux через административный веб-интерфейс. Даже самая критическая уязвимость в защите браузера сможет воздействовать только на локальную учетную запись пользователя на его настольном компьютере, не затронув сервер.
Возможно, это одно из самых главных отличий Linux от Windows, потому что этот фактор сводит на нет многие критические уязвимости, общие для Linux и Windows, например, уязвимости браузеров Mozilla и Internet Explorer.


Николас Петрели (Nicholas Petreley)
Аналитик по Linux в исследовательской компании Evans Data Corporation, обозреватель "ComputerWorld", "LinuxWorld".