Почему Linux безопаснее Windows?
Intro
Эта статья для совсем уж новичков. Если вы опытный, то вам будет скучно. Она про архитектуру Linux и Windows. Про философию Linux. Про различия в том как построены эти ОС, про то как устроен доступ и права к файлам.
Некоторые спрашивали о том, почему под линуксом нет вирусов.
А другие спрашивают можно ли раскомментить «%wheel ALL=(ALL) NOPASSWORD: ALL» если на ноутбуке только один пользователь.
Кто-то просил рассказать о том почему Linux безопаснее Windows.
Некоторые люди говорят, что под линукс вирусы не пишут. Ну потому что очень маленькая доля таких компьютеров.
Ага, ага. Практически все суперкомьютеры работают под линуксом.
https://ru.wikipedia.org/wiki/Top500 ну вот, например, список из десяти. И все 10 работают под линуксом.
А еще у нас есть сервера, большая часть которых работает на линуксе.
Или андроид, который тоже на нем основан.
Так что этот аргумент так себе.
И да, давайте сразу оговоримся. Все что я говорю, естественно касается Unix. Но я, возможно, буду говорить Linux.
И первая, и, наверное, основная причина почему в Linux нет вирусов это механизм разграничения доступа.
Причина #1. Пользователи и группы.
Вообще изначально Linux проектировалась как многопользовательская система. И поэтому в ней очень хорошо продумано все что связано с правами, пользователями группами. В отличие, например, от той же Windows. Эта система разграничения доступа была реализована еще в 70 годах. Но она до сих пор крайне актуальна. Потому что сделана она очень просто и изящно. И эта система до сих пор успешна справляется со всеми задачами для которых она была создана.
И вот как раз из-за этого люди и любят Linux. Потому что тут многие вещи просто прекрасны с инженерной точки зрения. Тут очень высокий уровень семантики, логичности и простоты.
В принципе в Unix все сделано очень логично. В отличии от Windows. Во-первых само дерево файлов. Что у тебя есть один корень, и от него уже идут директории, а не вот этот идиотизм в Windows с буквами дисков. В Unix так же каждое устройство это файл. Даже ваш диск, который вы подключили или звуковая карта это файл. И это очень логично. Все конфиги в линуксе хранятся в файлах. И ты знаешь где они. Они у тебя в домашней директории. Ты всегда можешь просто скачать на диск свою домашнюю директорию, установить линукс на другом компе, закачать туда свою домашнюю директорию и у тебя все будет работать точно так же. В Windows у тебя вообще не понятно где хранятся настройки. Что-то вообще в реестре. Сам реестр в винде это тот еще идиотизм. Я не понимаю кто вообще его придумал. Это настолько нелогично насколько можно себе представить. Ты если что-то настраиваешь в винде, а потом переустанавливаешь систему то тебе все приходится настраивать заново. Не говоря уже о том, что сама винда она крайне перегружена. Ты в два клика можешь увидеть окошко с настройками которое выглядит так будто оно из виндовс98.
Короче говоря, механизм разграничения доступа в линуксе — это как раз одна из причин из-за которых в линуксе нет вирусов. И если вы как пользователь скачали вирус и как-то сумели его правильно скомпилировать и запустить то он ничего не сможет сделать с системой. Так как ему нужны будут права рута. Все что сможет вирус, так это сделать что-либо с данными того пользователя из под которого его вызвали.
В Linux только пользователь Root может работать со всеми файлами независимо от их набора их полномочий. И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему.
Людям может показаться, что это сложно. Человек, допустим смотрит на права какого-нибудь файла и вообще не понимает что тут к чему.
Но на самом деле все очень просто.
Изначально каждый файл имел три параметра доступа. Вот они:
Чтение — когда можно посмотреть файл, но нельзя изменить. А если это директория, то посмотреть список файлов в ней.
Запись — когда можно и читать и изменять. А если это директория то создавать и изменять файлы в ней.
Выполнение — В виндоус вы можете запускать файлы если у них есть определенное расширение. Exe, bat, com. В линуксе ты можешь запустить любой файл если у него есть флаг на выполнение. От расширения ничего не зависит. Ну и соответственно если флага нет, то программа не запустится.
Но все это не имело бы смысла если бы в системе был бы только один пользователь. Поэтому для каждого файла мы определяем чтение, запись и выполнение для трех видов пользователей.
Владелец — тот кто создал файл или тот кого мы переназначили.
Группа — пользователей можно объединять в группы. Просто для удобства. Просто представьте, что у вас тысяча пользователей, и вам не удобно для каждого файла было бы перечислять пользователей.
Остальные — это просто те, кто не владелец и те, кто не входит в группу.
r — право на чтение;
w — право на запись;
x — право на исполнение.
Можем, например, посмотреть на файл .zshrc
Мы видим у него следующие права
За права тут отвечают черточки. Самая первая это тип файла, тут — что означает, что это просто файл. Дальше у нас идут девять черточек. Это по три черточки для владельца, три для группы и три для всех остальных.
И тут мы сразу понимаем, что этот файл может читать и изменять владелец. Но владелец не может его запускать. Группа и остальные не имеют никаких прав.
Если рассмотреть вот этот пример, то вы видим, что первая строчка тут d что означает, что это директория. А потом идут три группы rwx это значит, что и владелец и группа и остальные имеют право читать, выполнять и запускать.
Так же мы можем использовать не только буквенное представление прав, но и числовое.
Ну а чтобы менять права есть программа chmod
Если мы хотим чтобы наш пользователь мог читать, записывать и запускать файл. Группа могла только читать. А остальные ничего не могли, то мы можем сделать следующее.
Ну а если нам нужно изменить все файлы в директории, то мы можем использовать опцию -R
Вот так просто меняются права на файл.
А если мы хотим изменить владельца файла, то мы это сможем сделать с помощью следующей программы:
А если нужно изменить группу то
Группы
Группы вообще нужны чтобы расширить возможности управления правами. Как я уже сказал, представьте, что у вас тысяча пользователей, и вам не удобно для каждого файла было бы перечислять пользователей. Но вообще пользователи могут быть не только пользователями. В линуксе пользователем может быть процесс. И группы могут управлять не только доступом для пользователей, но и управлением правами программ и их доступом к оборудованию.
Вот, например, этой командой мы можем посмотреть сколько у нас групп
Вот как я уже сказал, есть у нас группа sudo , wheel , users . И эти группы нужны как раз для управления пользователями.
А остальные группы они нужны для управления программ и их доступом к различным ресурсам, процессам и оборудованию. И каждая группа тут она регулирует полномочия пользователей, которые в них находятся, и соответственно процесса, который запущен от этого пользователя.
- sys — группа для доступа к ядру
- daemon — группа для демонов
- proxy — используется для прокси
- www-data — из под этой группы запускается веб-сервер
- wheel — Позволяет запускать sudo. И выполнять команды без пароля. Соответственно, если отвечать вопрос в начале ролика, то нет. Крайне не рекомендуется убирать тот комментарий.
Ну вот как-то так. Продуманность системы разграничения доступа это основной фактор безопасности Linux.
Причина #2.
Принцип изолирования пользователей от приложений, файлов.
Когда пользователь запускает какое-либо приложение, ну, например, браузер или почтовая программа, они запускаются с ограниченными полномочиями данного пользователя.
И не возможно отправить по электронной почте пользователю Linux какое-то сообщение, чтобы при открытии его у тебя заразился весь компьютер. Или при открытии странички браузера чтобы у тебя что-то случилось с системой. И не имеет значения даже то насколько плохо написан браузер или почтовый клиент. Ведь они запускаются от нашего пользователя, а значит самый максимум на что они способны это повредить файлы нашего пользователя.
Так же, в отличие от Windows, в Linux намного меньше различных модулей, которые интегрированы прям в ядро самой операционной системы. Ну, например, в Win ядро управляет графической системой. И если что-то случится с графической системой, то все, ты уже ничего не поделаешь. У тебя компьютер ребутнется. А в Linux ты можешь перезапустить графическую систему не перезагружая Linux. Ты вообще можешь сходу сменить Gnome на KDE. Без перезагрузки.
Причина #3. Репы.
Ну, конечно же, архитектура системы не единственный аргумент в пользу того, что тут нет вирусов. Еще один крайне важный фактор это то, что софт под Linux люди ставят из репозитариев, а для Windows ты качаешь *.exe из интернета. И это, как вы понимате, довольно опасно.
Что безопаснее: Linux или Windows?
Много лет назад, когда хакеры действовали в одиночку и не объединялись в организованные криминальные сети, казалось, что все операционные системы были относительно безопасными.
Однако, затем кража персональных данных превратилась в масштабный бизнес, и безопасность стала для многих ключевым аспектом. Давайте разберемся, является ли нишевая операционная система Linux более безопасной, чем более популярная и широко используемая Windows.
Насколько безопасна Windows?
Согласно статистике сервиса StatCounter, 77% ПК работают под управлением Windows против менее 2% на Linux. Поэтому можно предположить, что Windows является относительно безопасной системой.
Действительно, в последние годы Microsoft внесла множество изменений в кодовую базу, предназначенных для повышения уровня безопасности. Компания разработала собственную антивирусную программу Microsoft Defender, улучшила брандмауэр и интегрировала изолированную среду Windows Sandbox для ограничения доступа приложений к ОЗУ и другим программам.
Тем не менее, Windows находится в трудном положении.
Как и следовало ожидать, количество вредоносных программ для ОС прямо пропорционально ее популярности. Windows занимает доминирующие позиции на рынке, поэтому является самой популярной целью для киберпреступников. Если смотреть на реальные цифры, то кажется, что для Linux практически не существует угроз. Это одна из причин, по которой некоторые считают Linux более безопасной системой, чем Windows.
Кроме того, многие пользователи убеждены, что архитектура Windows упрощает запуск вредоносных программ, если сравнивать с Linux. Все, что вам нужно сделать для запуска вирусов и шпионских программ в Windows — это дважды кликнуть по файлу .exe.
Однако, есть и веские контраргументы. По умолчанию текущие версии Windows предупредят вас, если вы загружаете исполняемый файл из Интернета с помощью техники под названием «Mark of the Web».
Также проводятся проверки цифровой подписи исполняемых файлов, чтобы убедиться, что ПО поступает из надежного источника.
К сожалению, по умолчанию защита не настроена на самый высокий уровень, поэтому неподписанные приложения можно запустить. С другой стороны, малоизвестные исполняемые файлы рассматриваются как опасные, и Windows 10 заставляет вас выполнять действия с диалоговыми окнами для подтверждения запуска.
Данная «слабость» архитектуры Windows — еще один аргумент для тех, что считает Linux безопаснее. Для поддержания безопасности пользователям Windows постоянно приходится загружать обновления для антивирусной программы и брандмауэра. Недавно Агентство Национальной Безопасности (АНБ) США обнаружило уязвимость, которая позволяла злоумышленникам подделывать сертификаты для подписи кода, использовать их для подписи вредоносных программ и для перехвата и изменения зашифрованных сообщений.
Тем не менее, не все вредоносные программы, разработанные для Windows, будут работать на всех устройствах Windows, Например, вирус созданный для Windows XP, может не запуститься в Windows 10. Это осложняет задачу киберпреступникам, которым приходится адаптироваться под постоянно меняющиеся платформы.
Является ли Linux более безопасной системой?
Многие считают, что из-за своей архитектуры, и, в частности, из-за способа обработки разрешений пользователей, Linux является более безопасной системой, чем Windows.
Основная защита в Linux заключается в том, что запускать исполняемые бинарные файлы намного сложнее, чем в Windows. Linux не обрабатывает исполняемые файлы без явного разрешения. Вам нужно выполнить команду chmod + x перед запуском файла.
Однако, данное положение вещей меняется. Все больше дистрибутивов Linux поддерживают упрощенную работу с бинарными файлами за счет распознавания расширений файлов (например, при двойном щелчке по файлу .html запуститься браузер). Таким образом, пользователям теперь приходится полагаться на безопасность каждого приложения. Это означает, что эксплойт в средстве просмотра изображений может стать системным эксплойтом, если вы заставите пользователя дважды щелкнуть файл .jpg.
Преимущество Linux состоит в том, что вирусы в данной системе могут быть очень легко удалены. В Linux системные файлы принадлежат суперпользователю root. В случае заражения вредоносные программы могут повлиять только на учетную запись, в которой они были установлены, а root-пользователь окажется незатронутым.
С другой стороны, в Linux очень медленно исправляются «уязвимости повышения привилегий», которые периодически все же встречаются. Поскольку они могут использоваться только локальной учетной запись пользователя, они не считаются такими серьезными, как удаленный эксплойт.
Если вредоносная программа запускается локально, она может использоваться для получения прав root и удаления всех защитных ограничений. Возможность скомпрометировать учетную запись пользователя может оказаться такой же опасной, как и возможность скомпрометировать учетную запись root.
У Linux есть еще несколько «козырей».
Открытый код системы рассматривается и анализируется большим сообществом разработчиков. Они проверяют исходный код на наличие бэкдоров и уязвимостей. Кто-то называет Linux самой защищенной ОС просто из-за большой «команды» пользователей-разработчиков Linux по всему миру.
Разнообразие дистрибутивов Linux (в отличие от относительной монокультуры Windows) является еще одним защитным аспектом этой системы.
Некоторые из этих дистрибутивов были построены специально для безопасности. Например, Эдвард Сноуден поддержал систему Qubes OS, заявив, что это лучшая операционная система с точки зрения безопасности, доступная на сегодняшний день.
Некоторые дистрибутивы Linux получали волну критики из-за низкого уровня безопасности. Если выбранный вами дистрибутив (Ubuntu, Red Hat, Qubes OS или др.) имеет хорошую репутацию в плане безопасности, вы можете безопасно его использовать, зная, что к нему применены все необходимые исправления.
Все это не означает, что машины Linux не могут быть заражены вредоносным ПО. Достаточно вспомнить историю с Heartbleed в 2014 году. Однако, организация атаки на Linux будет более сложной задачей, поэтому большая часть сетевой инфраструктуры работает на серверах Linux.
Дополнительные факторы, влияющие на безопасность
Что же безопаснее: Linux или Windows? Мы так и не пришли к окончательному заключению.
Ни одна операционная система в мире не гарантирует полную безопасность, поэтому важно получать информацию об угрозах безопасности, с которыми вы можете столкнуться.
Развертывание защищенной операционной системы является важным шагом, но недостаток знаний может подвергнуть вас гораздо большим рискам.
Перечислим несколько вещей, о которых стоит задуматься:
- Сетевая защита. Используйте брандмауэр как в Windows, так и в Linux. Вы должны понимать, как данный компонент работает на вашей машине.
- Фишинг. Данный тип угрозы предотвратить сложнее всего, поскольку любой человек может быть обманут с помощью методов социальной инженерии. В результате жертва добровольно передает имя пользователя, пароль и другие конфиденциальные данные. Мошенники отправляют электронные письма якобы от официального сервиса, например от PayPal или Netflix, чтобы заполучить ваши пароли и платежные данные.
- Выбор браузера. ОС не защитит вас от фишинга в отличие от браузера. Многие браузеры обнаруживают вредоносные сайты или сайты, распространяющие вредоносное ПО.
- Вредоносные программы. При поиске ПО для установки будьте предельно бдительны. Вас могут обмануть, выдав вредоносное ПО или браузерный плагин за легитимную программу. Прежде чем устанавливать что-либо на свой компьютер, просмотрите отзывы, проверьте, используется ли ПО достаточным количеством пользователей или установите его в песочницу. В Linux придерживайтесь доверенных репозиториев или загружайте файлы с официальных сайтов.
Как вы считаете, какая из систем более безопасная, Linux или Windows?