Linux

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

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

Ответ 1

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

Вероятно, меня будут ругать за то, что я «апологет 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 довольно «богата», и, хотя она имеет некоторые недостатки в отношении «наследования», только за последние 10 лет или около того операционные системы в стиле Unix реализовали подобную функциональность. 

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

Менеджер исполнительных объектов, который в общих чертах является аналогом файловой системы /proc и файловой системы /dev вместе взятых, имеет модель ACL, которая похожа на файловую систему и намного, намного богаче, чем любая модель разрешений, которую я знаю для /proc или /dev в любом дистрибутиве Linux.

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

По моему мнению, если системы на базе Linux настроены достаточно хорошо, они более безопасны, чем системы на базе Windows. Вот некоторые из причин:

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

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

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

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

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

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

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

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

 

Схожие статьи

Linux

Безопасный стандартный набор правил iptables для базового веб-сервера HTTP(s)

Linux

Как мне запросить ввод Да/Нет/Отмена в сценарии оболочки Linux

Linux

Как перенести базу данных MySQL на другой сервер

Linux

Как распаковать tar bz2 xz gz архивы в Linux? Как открыть файл bz2?