Назад | Перейти на главную страницу

Почему операционные системы на базе Linux считаются более безопасными, чем Windows?

Я слышал, что системы на базе Linux лучше с точки зрения безопасности. Судя по всему, у них нет вирусов и не нужно антивирусное ПО. Даже мой университет утверждает это - они отказываются иметь Windows на своих серверах, что очень досадно, потому что мы хотели использовать платформу .NET для создания некоторых веб-сайтов.

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

Я немного знаю, как работают операционные системы, но особо не разбирался в том, как Linux и Windows реализуют свои ОС. Может ли кто-нибудь объяснить разницу, которая делает системы на базе Linux более безопасными?

Я не думаю, что операционная система «безопасна». Определенная конфигурация операционной системы имеет определенную степень устойчивости к атакам.

Я, вероятно, собираюсь подвергнуться критике за то, что я здесь «апологет Microsoft», но эта ветка очень высока в сторону обобщений о «Windows», которые не соответствуют действительности.

Windows 1.0 - 3.11, 95, 98 и ME основаны на DOS. У этой линии операционных систем не было никакой безопасности в формальном смысле (защищенные адресные пространства, разделение режима ядра / пользователя и т. Д.). К счастью, когда мы говорим сегодня о «Windows», мы не говорим об этих операционных системах.

Семейство операционных систем Windows NT (Windows NT 3.5, 3.51, 4.0, 2000, XP, 2003, Vista, 2008 и 7) имеет весьма разумную систему безопасности, «спроектированную» с момента первого выпуска в 1992 году. разработан с учетом «оранжевой книги» TCSEC и, хотя и не идеален, я считаю, что он достаточно хорошо разработан и реализован.

  • Windows NT была «многопользовательской» с самого начала (хотя функциональность одновременного получения графического пользовательского интерфейса несколькими пользователями с одного сервера не существовала до Citrix WinFrame в эпоху Windows NT 3.51). Существует разделение режимов ядра и пользователя, при этом защита адресного пространства зависит от основных аппаратных функций MMU и CPU. (Я бы сказал, что это очень "Unix-y", но на самом деле это очень "VMS-y".)

  • Модель разрешений файловой системы в NTFS довольно «богата» и, хотя в ней есть некоторые недостатки, связанные с «наследованием» (или его отсутствием - см. Как обойти ошибку проектирования NTFS Move / Copy?), только в последние 10 лет или около того операционные системы в стиле Unix реализовали аналогичные функции. (Novell NetWare превзошла Microsoft по этому поводу, хотя я думаю, что MULTICS победила их обоих ...> улыбка <)

  • Диспетчер управления службами, включая систему разрешений для управления доступом к программам службы запуска / остановки / приостановки, очень хорошо спроектирован и гораздо более надежен по конструкции, чем различные «архитектуры сценариев init.d» (больше похожие на «джентльменские соглашения» ") во многих дистрибутивах Linux.

  • Руководитель исполнительного объекта (см. http://en.wikipedia.org/wiki/Object_Manager_(Windows)), который в некоторой степени аналогичен файловой системе / proc и файловой системе / dev вместе взятым, имеет модель ACL, которая похожа на файловую систему и намного, намного богаче любой известной мне модели разрешений для / proc или / dev в любой дистрибутив Linux.

  • Хотя мы могли бы обсудить достоинства и недостатки реестра, модель разрешений для ключей в реестре гораздо более детализирована, чем модель установки разрешений для файлов в каталоге / etc. (Мне особенно нравятся комментарии Роба Шорта о реестре в его интервью "Behind the Code": http://channel9.msdn.com/shows/Behind+The+Code/Rob-Short-Operating-System-Evolution Первоначально Роб был одним из главных людей, стоящих за реестром Windows, и я думаю, можно с уверенностью сказать, что он не обязательно счастлив от того, как все обернулось.)

Сам Linux - это просто ядро, тогда как Windows больше похожа на дистрибутив Linux. Вы сравниваете яблоки и апельсины, чтобы сравнить их вот так. Я согласен с тем, что Windows сложнее «разобрать», чем некоторые системы на базе Linux. С другой стороны, некоторые дистрибутивы Linux также поставляются с включенным "дерьмом". С появлением различных «встроенных» разновидностей Windows появилась возможность (хотя и не для широкой публики) создавать «дистрибутивы» Windows, которые отличаются своим поведением от настроек Microsoft по умолчанию (за исключением различных служб, изменения разрешений по умолчанию и т. Д.) .

Различные версии Windows имели свою долю плохо выбранных значений по умолчанию, ошибок, которые позволяли неавторизованным пользователям получать привилегии, атак типа «отказ в обслуживании» и т. Д. Ядра Unix (и множество приложений на основе Unix, работающих по умолчанию с правами root) имели такие же проблемы. Со времен Windows 2000 Microsoft проделала потрясающую работу, упростив разделение приложений, запуск программ с минимальными привилегиями и удаление ненужных функций ОС.

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

Еще одна вещь, о которой не упоминается, - это то, что безопасность в Windows гораздо более непрозрачна, чем в Linux.

Например, я могу просмотреть пару текстовых файлов и точно узнать, что работает на моем веб-сервере. IIS? Не так уж и много - вы можете увидеть результаты конфигурации через инструмент с графическим интерфейсом, но есть скрытые настройки. Затем вам придется использовать другой набор инструментов для просмотра списков ACL файлов и т. Д.

То же самое и с большинством программ в мире Windows - очень сложно быстро понять, что именно влияет на среду выполнения, между реестром и ACL.

Не знаю об этом сравнении разрешений на файлы ... когда я был администратором UNIX / Linux, в NT4 были списки управления доступом к файлам, которые были гораздо более детализированными, чем разрешения в традиционном стиле 777 в UNIX / Linux. Разумеется, разрешения - это еще не все, и я уверен, что современные дистрибутивы Linux, по крайней мере, делают доступными мелкозернистые ACL, даже если они не реализованы по умолчанию. На мой взгляд, концепции sudo и root всегда присутствовали в UNIX, хотя Windows постоянно добавляла эти концепции и, вероятно, сейчас их уровень равен.

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

Гораздо проще войти в систему Linux и просто выключить всю оконную систему, демонов RPC и т. Д. - вы можете уменьшить систему на основе Linux или BSD до одного или двух открытых портов с минимумом установленных пакетов и при этом очень легко получить очень полезную систему. Вероятно, это больше связано с наследием UNIX как ОС разработчика; все было построено по модульному принципу, а не излишне взаимосвязано. Это приводит к гораздо более настраиваемой системе, в которой вы можете просто удалять вещи, которые не имеют отношения к делу. Я не думаю, что таким способом так легко укрепить серверы Windows.

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

Корпорации, хотя и создают прекрасное программное обеспечение (в моей книге MSSQL, Exchange, Windows Server 2003 замечательны), просто преследуют другие цели.

На мой взгляд, системы на базе Linux, если они настроены достаточно хорошо, более безопасны, чем системы Windows. Вот некоторые из причин:

  1. Прозрачность и множество простых сетевых инструментов: например, администратору Linux очень легко увидеть текущую конфигурацию межсетевого экрана, набрав "iptables -L -n" в оболочке. Вы также можете увидеть, какие порты открыты на машине, запустив «nmap» с другой машины Linux. Это делает жизнь намного проще, так как вы можете очень точно указать, какие порты разрешены для доступа, с каких адресов и т. Д.

  2. Текстовые файлы журналов в одном месте: текстовые файлы журналов в одном месте «/ var / log» легко резервировать и анализировать. Кроме того, такие инструменты, как logwatch, которые могут отслеживать эти файлы журналов и отправлять вам важные строки по электронной почте, упрощают задачу. Мы даже можем написать наши собственные инструменты для анализа файлов журналов и поиска интересующей нас информации. Журналы можно даже экспортировать на удаленный сервер системного журнала, если мы не хотим, чтобы журналы находились на одном сервере.

  3. Не беспокойтесь о вирусах: меньше ли вирусов в Linux, потому что меньше систем на базе Linux, ИЛИ потому, что все пользователи любят Linux, или потому что Linux более безопасен. Причина значения не имеет. Если в конечном итоге у Linux меньше вирусных угроз, тогда это хорошо для Linux. Я лично видел, как люди устанавливали два антивируса, антишпионское ПО и антирекламное ПО на одну и ту же машину. Все эти средства защиты потребляют много ресурсов процессора и памяти.

  4. Поддержка многих языков программирования: в Linux очень легко писать код. C, C ++, Python, Perl, Java и т. Д. Просто работают без необходимости установки каких-либо дополнительных пакетов. (Это в случае, если вы устанавливаете большой дистрибутив, такой как Fedora, который поставляется на DVD.) Это повышает безопасность, поскольку мы можем выполнять повторяющиеся задачи путем кодирования. Таким образом, если вы совершите ошибку и возникнет проблема, она будет связана со всеми учетными записями, и ее будет легко обнаружить и исправить. Если бы нам пришлось вносить одни и те же изменения в большое количество учетных записей / каталогов вручную, мы могли бы сделать ошибку в одной или двух, и поиск таких ошибок может занять много времени. Также мы можем исправлять ошибки и искать простые ошибки с помощью кода. Поскольку все файлы конфигурации, файлы с информацией о пользователях, файлы журналов и т. Д. Находятся в текстовом виде, очень легко кодировать все, что мы хотим достичь, и есть много способов сделать то же самое. Кроме того, на страницах руководства доступно множество достоверной информации, которая обычно предупреждает нас об угрозах безопасности, связанных с небезопасной настройкой служб.

  5. Открытый исходный код: поскольку, вероятно, многие люди видели код, очень редко какое-либо шпионское / рекламное ПО является частью приложений, поставляемых с Linux. Вы также можете увидеть исходный код, если безопасность очень важна для какой-либо службы, и посмотреть, как это работает. Если вы точно знаете, как это работает, тогда вы знаете ограничения и когда он выйдет из строя. Фактически, если существуют хорошо известные ограничения безопасности, которые были бы задокументированы на страницах руководства, на веб-сайте пакета и в комментариях в файлах конфигурации. Разработчикам нечего терять, говоря, что использование нашего инструмента в таком сценарии рискованно. Для организаций, продающих программное обеспечение, может быть невыгодно сообщать об ограничениях для программного обеспечения, и это может ухудшить внешний вид их программного обеспечения и может снизить продажи / прибыль.

  6. Бесплатно и совместимость: хотя это не связано с безопасностью. Для университетов, где имеют значение затраты, системы на базе Linux намного более экономичны, чем системы на базе Windows, и нет необходимости покупать лицензии на ОС, а также на дополнительное программное обеспечение, которое мы устанавливаем после установки ОС. Что касается взаимодействия, мы можем подключаться с машин Linux к другим ОС и легко обмениваться файлами. В linux мы можем монтировать множество файловых систем, включая FAT, NTFS, HFSPLUS. Мы можем делиться вещами, используя ftp, http, ssh, samba, nfs и т. Д., И все эти вещи устанавливаются или могут быть установлены одной командой. Другие ОС обычно предоставляют только один вариант обмена данными.

Но если неправильно настроенные системы на базе Linux могут вызвать больше проблем, чем можно себе представить. Многие пользователи могут одновременно входить в систему и делать почти все из командной строки. Очень легко оставить бэкдоры, трояны, если брандмауэр не настроен должным образом. Злоумышленник может удалить файлы журнала или изменить их, чтобы скрыть свои следы. Злоумышленник может кодировать на атакованной машине, поскольку все редакторы, компиляторы, отладчики легко доступны, как только злоумышленник получит доступ к оболочке. Все серверы ftp, http могут быть запущены из учетной записи пользователя, но не на защищенных портах (1-1024). Таким образом, злоумышленник может загрузить код http-сервера, скомпилировать его и запустить http-сервер на порту 6000, чтобы он выглядел как X-сервер.

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

Прозрачность

  • Бегать ps auxf и вы знаете, какие службы работают, под какой учетной записью.
  • Бегать netstat -lnp а вы знаете какие программы какие TCP порты открывают.
  • Бегать iptables -L и вы знаете, какие правила есть у вашего брандмауэра.
  • Бегать strace или lsof для проверки активности процесса.
  • Бегать ls -lah или tree -pug и вы точно знаете, какое право собственности и какие разрешения имеет вся папка.
  • Журналы находятся в /var/log и могут быть проверены простым "поиском по файлам".
  • Никаких скрытых настроек. Все читается человеком в /etc. Искать в текстовых файлах, архивировать их или применять контроль версий (subversion / git) очень просто.

Очистить систему разрешений

  • В базе есть только права доступа к файлам. Никаких «разрешений для ключей регулярных выражений», унаследованных разрешений ACL, контекстов безопасности для каждого процесса или других скрытых функций.
  • Биты разрешения просты:
    • Запись в файлы = редактировать содержимое файла
    • Запись в папках = создание / переименование / удаление файловых узлов.
    • Sticky = редактировать только собственные файлы.
    • Файлы с разрешениями на выполнение или setuid выделяются (в ls цветовой режим).
  • Простой «найти все файлы» показывает, какие права есть у пользователя.
  • Кроме того, ACL можно использовать только там, где это необходимо.
  • Учетные записи пользователей по умолчанию имеют только два места для записи файлов: $HOME и /tmp.

Дополнительные параметры безопасности

  • SELinux / AppArmor может ограничивать процессы для доступа только к определенному набору файлов (помимо прав доступа к файлам)
  • Тюрьма Chroot позволяет администраторам запускать программу полностью изолированно от остальных. Как будто он установлен на пустой жесткий диск, только с теми файлами, которые ему действительно нужны.
  • С участием sudo, пользователям и процессам могут быть предоставлены разрешения на выполнение только нескольких административных команд.

Единые точки входа и повышения привилегий

  • Сам процесс не может получить больше привилегий. Единственный способ - запустить другую программу "SetUID Root", например sudo или связавшись со службой DBus, которая сначала проверяет PolicyKit. Эти программы SetUID можно найти с помощью одной команды «Искать во всех файлах».
  • IPC между процессами довольно ограничен, что снижает векторы атак.
  • Доступ к системе (текстовая консоль, удаленный рабочий стол, RPC, вызов команды удаления и т. Д.) Происходит через ssh. Это SSL-туннель с проверкой открытого / закрытого ключа.

Безопасные фоновые процессы

  • Фоновые службы запускаются с более низкими привилегиями как можно скорее. Такие службы, как Apache, Dovecot и Postfix, как можно скорее передают входящее соединение процессу с низким уровнем привилегий.
  • По умолчанию заблокировано. Microsoft приняла этот подход и в Windows Server 2008.

Хорошие инструменты аудита

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

Хорошие обновления безопасности

  • Каждая часть операционной системы получает обновления безопасности. Когда Apache, Python или PHP установлены через диспетчер пакетов, они также получат обновления.
  • В том, что исправляет обновление безопасности, много открытости, поэтому вы можете понять, как это повлияет на вас.
  • Все программные пакеты используют одни и те же библиотеки. Они не отправляют отдельные копии, оставляя доступные для использования версии.
  • По вторникам нет исправлений, ждем исправления, когда хакеры уже используют ошибку в дикой природе.
  • Разработчикам легко тестировать обновления безопасности и развертывать их.
  • Для обновления не требуется запланировать перезагрузку. Файлы можно заменять, в то время как существующие процессы продолжают обращаться к старым данным на диске. После этого вы можете узнать, какие службы нужно перезапустить (lsof | grep =).
  • Вся операционная система может быть обновлена ​​без переустановки!

Все, что здесь упоминается, поставляется для каждого основного дистрибутива Linux, то есть Red Hat, Debian, openSUSE или Ubuntu.

Безопасность сервера - это больше, чем просто ОС. Я бы сказал, что больший фактор в безопасности сервера - это человек, управляющий сервером, и то, насколько осторожны они с блокировкой.

Тем не менее, если университет представляет собой магазин Linux, они не позволят вам использовать Windows Server независимо от того, какие данные вы найдете в системе безопасности Windows Server. Я бы исследовал использование Mono (www.mono-project.com), если вы хотите использовать структуру .Net.

«Безопасность - это контроль»

С моей точки зрения, в Windows у вас меньше контроля, чем в Linux. Укрепить Windows ... сложнее :). Хотя любой инструмент зависит от навыков владельца, я бы рассмотрел следующее:

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

Поэтому, хотя я предпочитаю Linux, а не Windows, я считаю, что не стоит доверять установке по умолчанию.

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

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

Судя по исправлениям безопасности для ВСЕГО программного обеспечения в наши дни, я думаю, что проблема не в программном обеспечении, а в количестве рабочих столов под управлением Windows. Это цель для создания ботнетов. Если Linux когда-нибудь действительно вырастет на десктопах, он будет подвергаться еще большим атакам. Я думаю, Mac OSX уже видит это.

Большинство предыдущих постов было посвящено вторжению, и в этом отношении была проделана хорошая работа. Один из пунктов вашего вопроса был о вирусах. Самая большая причина, по которой в дистрибутиве Linux меньше проблем с вирусами, заключается в том, что оконных боксов больше, чем Linux и Mac вместе взятых. Создатели вирусов хотят получить максимальную отдачу от вложенных средств, поэтому они пишут для Windows.

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

Нет более безопасной ОС, чем другая. Все зависит от знаний людей, которые администрируют систему.

Я встречался и работал с некоторыми чрезвычайно талантливыми администраторами * nix на протяжении многих лет, и они могли настроить чрезвычайно безопасный сервер * nix. Однако вставьте их перед хостом Windows, и они не будут знать, как заблокировать машину. То же самое происходит и в другом направлении, я неплохо разбираюсь в защите хоста Windows, но поставьте меня перед ящиком * nix, и я не пойму, что делаю.

Ни одна из ОС не является более или менее безопасной, чем другие. Конечно, мы могли бы поговорить об истории платформ и использовать это, чтобы обсудить, какая из них будет более безопасной с течением времени, но мы не говорим об ОС * nix 10-летней давности и развертывании Windows NT 4 в производственных средах, если мы . Мы говорим о современных ОС (или, по крайней мере, должны быть) и о том, какие из них могут быть лучше защищены.

Я видел, как кто-то что-то сказал в ответе о том, что пакеты, приходящие на брандмауэр Windows, затрагивают больше частей ОС, чем брандмауэр Linux. Он спрашивает, кто, черт возьми, доверяет программному брандмауэру, запущенному на хосте? Вот для чего нужны межсетевые экраны конечной точки / внешнего интерфейса. Для защиты сети. Хост, на котором запущена служба, имеет открытую службу. Задача хостов - гарантировать, что этот сервис не будет скомпрометирован. Задача сетевых устройств - предотвратить попадание других пакетов из Интернета на хосты других служб.

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

Если кто-то не рассматривает другую ОС в своем центре обработки данных, это признак невежества (относится как к магазину, работающему под Linux, так и к магазину Windows). Обе ОС имеют свое применение и должны использоваться как таковые. Ни один из них не лучше и не хуже другого. (И да, в нашей среде есть пара Linux-машин, обслуживающих производственные службы.)

Есть одна очень важная причина, по которой Linux и OpenBSD могут быть более безопасными, чем Windows. Это способность операционной системы защищать себя от сетевых атак.

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

Однако, как только вы открываете порт и запускаете на нем службу, то есть делаете сетевой компьютер полезным, вы будете в безопасности настолько же безопасны, насколько и код, запускающий эту службу.

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

Уровень безопасности .NET Framework в основном связан с вашей групповой политикой, настройками консоли powershell и neth. Причина - телеметрия ядра при параметрах доступа низкого уровня с динамическими запросами доступа в памяти. Фреймворки Linux часто требуют такого же уровня внимания, но в основном это связано с флагами, которые вы указываете при настройке языка. При правильной настройке Linux оказывается более безопасным, чем безопасность, настроенная в Microsoft Windows. Хотя и на «достойном» уровне комплектации; инструменты могут проскользнуть прямо через ваш IIS и сразу погрузиться в ваши сервисы, используя определенный GUID. В целом Linux позволяет больше контролировать аспекты, чем

Основные моменты:

inodes and NTFS index primers and permissions in Windows (including registry) 
    are easier to sift through than an EXT hardnened Linux 

protocol traversal within Linux for exception handling are easier to find 
    than a solid configured Windows Firewall. 

cache indexes within ASP.NET are easier to violate than cache management    
    technologies which are well handled within GNU and C++ libraries
    they are practically built for parallel systems now. 

SQL parse queries, have been proven over and over again; MySQL is faster. 
    than MSSQL, though Oracle has been pushing the belt. Transactional 
    security is proven to be more secure on Windows, but for performance 
    and sheer flexibility shows that MySQL should be used or something 
    along the lines of a iSQL or NSQL (not SQLAB like Berkeley SQL which 
    MSSQL is based on) 

Gateway permissions, Linux has an amazing ability to fondle packets and tiny 
    little things that Windows can only put into sorting bins. This being 
    said, if you are running a Windows network, you have more network auditing 
    than a Linux network because the packages are easier to apply walls to 
    than DLL files and protocol requests. 

Surface layer GUI, .NET Framework offers strict field definitions; while Linux 
    allows intense PCRE and other Regular Expressions. 

Государственные должности:

OWASP proves over and over again that it is harder to crack a hardened Linux Server 
than it is to crack a hardened Windows Server. Why? Because the firewall and Group 
Policy does not allow as far a tuned key for aspects of the closed source framework 
within ASP.NET; Linux will let you choose a color for every letter on your command. 

NIST Shows over time that SQL management permissions are harder to parse with Windows 
while Linux PCRE makes it harder to bypass SQL queries whether it be within a GUI or 
a Web Interface. 

Carnagie Mellon shows that ASP.NET can hold higher regulations because it is built 
in a more module based context which employs the use of MVC frameworks and can potentially 
have a higher restriction. Meanwhile PHP and Java show that they are incredibly robust 
with their Obfuscation and encapsulation methodologies.

Личное мнение:

Каждая операционная система потенциально может быть более безопасной, чем остальные стандартные. Если взять грубое сравнение фреймворков, которые работают с более высоким уровнем безопасности с Linux или Windows, я должен сказать, что основная часть веб-безопасности использует наиболее несовместимые, но эффективные фреймворки. Таким образом, становится намного сложнее закрепить за собственными разрешениями доступа к жесткому диску и обработками библиотеки. Таким образом, у вас есть своего рода сварная чаша поверх вашей операционной системы. Как сказал Эван с разрешениями NTFS и / proc или / dev. Если вы используете что-то, с чем не можете разговаривать; его сложнее взломать.

Из веб-разработки я научился никогда не недооценивать свой фреймворк. .NET имеет разрешения на создание совместно подключенных томов и механизмов управления для кластеров SQL Server; в то время как Apache Source может делать то же самое с операционными системами, использующими Linux. Это довольно приличный вопрос, хотя я должен сказать, что Linux обеспечивает большую безопасность при управлении отдельными аспектами и многоязычными ограничениями и мониторингом; в то время как Windows обладает обширными возможностями аудита и ведения журнала с интерфейсом логической отладки высокого уровня. Их обоих можно сравнить, и в конечном итоге это сужается до «насколько хорошо - вы заблокируете это» и «сколько там наворотов?» в рамках. У Apache есть больше улучшений безопасности надстроек; У IIS есть полная остановка или все разрешения на запуск с ASP, что делает его компромиссом при программировании модулей (например, Sharepoint).

В настоящий момент, сравнивая PHP с Linux или Windows, совершенно очевидно, что есть больше расширений, которые вы можете использовать в операционной системе Linux; Windows имеет другой уровень управления разрешениями по сравнению с PHP, что затрудняет управление каталогами и доступом к файлам. В Apache, например, XAMPP, LAMPP или WAMP, мне кажется, что Windows немного менее безопасна, учитывая тот факт, что ее ограничения на брандмауэр легче нарушить, потому что он использует те же правила туннелирования, что и ваш веб-браузер. Linux, с другой стороны, может использовать пулы приложений и дополнительные механизмы безопасности на уровне пакетов, которые гораздо сложнее создать. Windows потребует от вас использовать все аспекты операционной системы, чтобы сделать сеть более безопасной. Linux может исправить это, используя около 60% операционной системы при использовании таких дистрибутивов или разновидностей, как CentOS и Ubuntu.

IIS (на сервере Microsoft, а не на клиенте Windows) в Windows с ASP.NET с последними миксами SEC_ATL также может быть очень безопасным.

Только Apache, вы можете запустить его с Linux, чтобы включить драйверы более высокого и низкого уровня, SMIME, кодек и безопасность на уровне пакетов. Хотя Windows потребует от вас установки наложенных механизмов безопасности, которые в противном случае заблокировали бы ваш трафик немного больше, чем вам хотелось бы, если бы дело дошло до запуска тысяч серверов.

В Linux чем более компактно ядро ​​и чем оно оптимальнее для сетевой безопасности, тем лучше (например, слияние в Apache с NSLUG).

С Windows вам больше нравится программировать модули Powershell и дополнительную защиту наложения для вашей платформы ASP.NET и настраивать групповую политику для USGS, потому что в большинстве случаев это действительно необходимо, чтобы исключить тот вид трафика, который Linux будет автоматически отклонять и не думать около.

В равной степени они могут быть сильными. Готовый к работе дистрибутив Linux будет сильнее, чем ненастроенный Microsoft Windows Server, только что настроенный с помощью мастера.

Со временем Linux обгонит Windows в игре по безопасности. Серверы Debian 3 сегодня по-прежнему мощнее, чем Microsoft Server 2008 R2 из коробки, и угадайте, что они могут поддерживать те же технологии без перестройки ядра. Debian все еще может его курить, и я видел это собственными глазами.

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

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

Известно, что если человек создал «безопасную» платформу, то со временем другой человек может найти в этой платформе дыры.

Я согласен с тем, что первые два предложения Эвана лучше всего описывают безопасность ОС:

Я не думаю, что операционная система «безопасна». Определенная конфигурация операционной системы имеет определенную степень устойчивости к атакам.

Поэтому не имеет значения, сравниваем ли мы GNU / Linux, системы BSD (Free / Open / Net), Microsoft, Windows, Mac OSX, Symbian, PalmOS, Cisco IOS, AIX, QNX, Solaris, z / OS или любую из другие «операционные системы», которые запускают такие вещи, как ваш телевизор, MP3-плеер, микроволновая печь и т. д.

У каждого из них есть часть целого, которая может быть использована определенным человеком.

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

например:

  • NAT
  • обратный прокси
  • брандмауэры

Нет необходимости ругать свой университет за использование серверов Linux, для ваших конкретных требований, как сказал AdamB, используйте Mono (www.mono-project.com). Обычно профессор, интересующийся ОС, предпочитает Linux, даже любой энтузиаст ОС предпочел бы Linux, из-за простых любопытств, как все работает на практике.

  • Теперь что касается безопасности,

Linux теперь следует за DAC (дискреционным контролем доступа) - это более умная система контроля доступа. Как упоминалось в других ответах, да, Linux был многопользовательским, и поэтому система контроля доступа стала лучше, чем другие.

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

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

Я думаю, что это была не только безопасность, но и другие факторы, которые заставили вас, как и большинство остальных университетов, выбрать Linux на серверах.

Есть несколько причин, по которым системы на базе Linux часто считаются более безопасными, чем системы Windows.

Один - это умение хозяина. Если вы зайдете в Best Buy или Wal-mart (здесь, в США) и купите компьютер, не особо задумываясь, он будет работать под управлением Microsoft Windows. Это означает, что существует огромное количество систем Windows, которыми управляют люди, которые понятия не имеют. Поскольку почти никто не покупает компьютер с Linux случайно (по крайней мере, с тех пор, как Microsoft контратаковала нетбуки), большинство пользователей Linux либо знают что-то о компьютерах, либо настроили свой компьютер кем-то, кто знает. Это применимо ко всем средам, в которых есть люди, которые не знают, что делают; те, кто этого не делает, работают под Windows, а те, кто запускает различные ОС.

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

Один из них - культура. В любой среде Unix / Linux существует четкое различие между учетными записями root и пользователями, и почти во всех случаях люди работают со своими учетными записями, когда им не нужно быть root. По моему опыту, различие не такое сильное в среде Windows, поскольку каждый пользователь обычно имеет одну учетную запись с любыми связанными привилегиями. Я сейчас на своем рабочем компьютере, где у меня одна учетная запись, учетная запись администратора. Все, что я делаю, делается под учетной записью с высокими привилегиями. Когда я возвращаюсь домой к своему Linux-серверу, я почти все делаю в учетной записи с ограниченными привилегиями и повышаю уровень, когда мне нужно. Моей жене пришлось усердно спорить, чтобы получить две учетные записи на своем компьютере на работе, одну ее обычную учетную запись администратора и одну учетную запись с ограниченными правами, чтобы она могла видеть, есть ли у обычных пользователей права запускать то, что она пишет.

Один из них - обратная совместимость. Хотя Unix не начиналась как безопасная ОС, безопасность у нее появилась на раннем этапе. Программы для Linux не требуют запуска от имени пользователя root, если только они не выполняют функции root. Windows, с другой стороны, запускает большое количество программ, требующих учетных записей администратора, потому что это то, что разработчики запускали и тестировали (см. Параграф выше), и эти разработчики обычно не заботились о безопасности, и это работало нормально. Это большая проблема, которую Microsoft пыталась решить с помощью UAC. Я не думаю, что это особенно хорошее решение, но, честно говоря, Microsoft не найдет здесь хорошего решения (я не думаю, что отказ от обратной совместимости здесь - хорошее решение).

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

На мой взгляд, это веские причины. Я не касался фактической безопасности ОС, так как не знаю, что дистрибутив Windows или Linux более уязвим, чем другой, при запуске опытным администратором. Linux имеет преимущество открытого исходного кода в том, что любой может найти и исправить ошибки, в то время как Microsoft ввела методы безопасности, которые могут работать или не работать лучше. (Если бы я хотел запустить действительно безопасную ОС, я бы выбрал OpenBSD, ОС с открытым исходным кодом, которая стремится быть защищенной.) Обе ОС имеют хорошие системы разрешений (я предпочитаю Unix, но другие разумные люди с этим не согласны).

Конечно, есть веские причины считать ОС менее безопасными. У некоторых людей есть любимая ОС, и они не упускают возможности очернить других. Некоторым людям не нравится Microsoft, Ричард Столлман или другое лицо или организация, и они порочат связанные с ними ОС. Некоторые люди не заметили, что Microsoft изменилась с годами, поскольку не так давно Microsoft действительно не заботилась о безопасности, а Windows действительно была менее защищена, чем Linux.

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

Но .... а. В системах Unix весь доступ ко всем устройствам осуществляется через файлы, безопасность которых можно легко администрировать. Например, знаете ли вы, как запретить пользователю X доступ к звуковой карте в Windows, но при этом разрешить пользователю Y? В Unix это просто.

б. Структура каталогов намного более разумная. (Например, пользовательское приложение должно иметь доступ только для записи в вашу домашнюю папку и т. Д.) Однако за последние несколько лет ситуация улучшилась и в Windows.

d. Это важный момент: SELinux (и функция песочницы Trusted Solaris и Mac OS "Ремень безопасности"). Это известно как NDAC (недискреционный контроль доступа). Если вы используете дистрибутив ОС с этими функциями, то, по сути, существует два уровня безопасности, действующих одновременно: обычная DAC (система разрешений), которая всегда была в Unix, и современные версии Windows, и, кроме того, «брандмауэр приложений», который навязывают SELinux и подобные системы. Например, вы можете установить политику, согласно которой веб-серверу Apache разрешено писать в / tmp и читать из / var / www и / etc / apache. Любой другой доступ к диску будет запрещен несмотря на разрешений. Точно так же вы можете указать, что он может принимать входящие соединения только через порт 80 и не делать исходящих соединений. Тогда, даже если есть ошибка, которая позволила бы кому-то сделать что-то очень плохое, и даже если бы apache работал как root, это не имело бы значения - политика предотвратила бы это. Это требует (очень незначительного) снижения скорости и может быть проблемой, если вы используете необычную конфигурацию, но в нормальном случае может значительно повысить уровень безопасности как по сравнению с Unix старого стиля, так и по Windows.

е. Слои - системы Unix состоят из множества дополнительных дискретных слоев и сервисов, которые можно менять местами. Это означает, что они могут быть индивидуально проанализированы на предмет корректности и безопасности, заменены и т. Д. Практически для любого из них нет необходимости перезагружаться. Это большой плюс для систем серверного типа. Кроме того, в системе Unix легче отключить (и удалить) вещи, которые вам не нужны. Например, зачем запускать графический интерфейс в окне веб-сервера? Это увеличивает поверхность атаки и занимает оперативную память.

f. Для тех, кто сказал, что Windows NT была разработана с нуля для обеспечения безопасности ... это правда, ядро ​​с самого начала было разработано с учетом расширенной безопасности и многопользовательских функций, но есть две основные проблемы: 1. Плохая репутация Microsoft в области безопасности. и 2. ОС в целом была разработана для обеспечения совместимости с устаревшими приложениями Windows, что предполагало множество компромиссов. Unix всегда был многопользовательским, поэтому приложения не удивляются, когда обеспечивается безопасность, что означает меньшее количество компромиссов.

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

Даже в самых ранних версиях Linux / Unix было разделение между приложениями, а также между уровнем операционной системы и уровня приложений. Разделение задач, хотя и не всегда идеальное, было по крайней мере справедливым.

Таким образом, наследие Unix (или Linux) для более надежных систем, которым требуется более высокая доступность.

Все это применимо и сегодня? Это другой вопрос.

Краткий ответ: изначально UNIX проектировался как безопасный; Окна были разработаны, чтобы быть простыми. Теперь потомки UNIX будут делать вид, что они проще для своих пользователей; Windows делает вид, что она более безопасна.

Они еще не встречались

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

Непринужденность проистекает из идеи, что «сообщество» заметит, если что-то подозрительное будет где-то добавлено (скажем, если openSSH внезапно начнет звонить домой с паролями), это не задержится надолго.

Но я не могу достаточно повторить то, что уже сказали другие выше: безопасность во многом зависит от конфигурации: кого волнует, не звонит ли openSSH домой, если у вас нет брандмауэра, нулевого пароля root и PermitRootLogin включен в sshd;)

Нет никакой реальной причины, кроме инерции. Я видел, как много сторонников Linux выдвигали аргументы против Windows (и не только со стороны безопасности), которые на первый взгляд кажутся верными, но - которые, если немного покопаться - применимы только к Windows 3.1 или 95/98.

Я уже говорил об этом раньше, но, хотя в Windows может быть больше патчей и т. Д., Это исправления для уязвимостей безопасности, которые были идентифицированный. И это не те, которые были фиксированный о чем вам нужно беспокоиться, не так ли? Я также не считаю, что открытый исходный код более безопасен. Установка собственных исправлений может быть удобной для домашнего пользователя, но корпоративный пользователь или администратор всегда будет хотеть, чтобы Real Thing был сертифицирован для работы (и был полностью протестирован) с различными приложениями, и который сертифицирован, чтобы не ломаться. следующее обновление ядра. То же самое касается исправлений от сообщества FOSS.

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

Процессы в Linux / Unix не могут изменить свои привилегии после того, как им назначен пользователь, процессы в Windows могут изменить свои права пользователя и изменить своего пользователя в середине процесса.

В этом суть того, почему окна менее безопасны, чем linux / unix.