четверг, 17 января 2019 г.

Антивирус в Linux: нужен ли?

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

Лично мне по данному вопросу понравился комментарий пользователя slant с форума linuxmint.com.ru, который приводится ниже в адаптированном варианте (надеюсь, что смысл удалось передать верно). Вследствие этого, данную публикацию можно рассматривать как своего рода репостинг или копипастинг (кому как нравится).

Отыщи всему начало и ты многое поймёшь
Козьма Прутков

Определимся с терминологией

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

Может представлять из себя просто фрагмент кода, который встраивается в другие (исполняемые файлы, страницы, и т.д.) или отдельно оформленный исполняемый файл.

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

Если не эксплуатирует какую-либо уязвимость – не может выйти за рамки возможностей пользователя который её запустил.

Примечание. Вспомните рекомендацию не работать под встроенной учётной записью Администратор или root.

Запустится ли вирус в Linux?

– Нет.

– Почему?

– Мешает особенность архитектуры unix-based систем (к которым и относится Linux): процесс не может проникнуть в память другого процесса и тем более что-то там менять. Полная изоляция.

В Windows, несмотря на наличие системы прав доступа, сама возможность присутствует. Поэтому ошибки проектирования программ регулярно приводят к тому, что вирусы пользуются этой возможностью. Для классического вируса в 98% случаев это и будет представлять собой вектор атаки. Получается, что безопасность программы зависит от автора конкретной программы и авторов окружения в котором она работает. Места для ошибок – море. Что по статистике рано или поздно и имеет место.

В Unix (и следовательно Linux) – у программ такой возможности нет в принципе. Если необходимо осуществлять взаимодействие не через диск – используются pipe. Без углубления в объяснения достаточно знать, что этот механизм не позволяет вмешаться в другой процесс произвольным образом. Если программе необходимо внешнее влияние, то оно должно быть явно описано: что, зачем, как. Другими словами – строго оговаривается порядок обмена данными.

Учитывая сказанное выше, классические вирусы, будучи запущенными в Linux и предпринимающие попытки проникнуть в другие процессы, терпят неудачу.

Что касается антивирусного ПО, то резидентные антивирусы также не имеют возможности вмешаться в другие процессы "на лету" (как это происходит в Windows): память других процессов им недоступна (см. выше).

Единственные реально работающие антивирусы под Unix – это те, которые не резидентные. Те, что просто читают файлы с диска до их запуска и проверяют их на предмет сигнатур (описаний, оформленных особым образом) из баз. В ручном режиме – так, как это делалось еще во времена msdos.

Запустится ли червь в Linux?

Здесь ситуация не столь "непробиваемая". Если скачать откуда-нибудь исполняемый на Вашей системе файл и запустить его – он что-то сделать всё-таки сможет. Но ... С Вашими правами. То есть, не сможет навредить системе в целом, но на Ваши собственные файлы воздействовать сможет.

Соответственно, так называемая the best practice (лучшая практика) рекомендует тестировать неизвестное программное обеспечение под другой учётной записью (аккаунтом пользователя системы) с ограниченными правами.

Но... "В пролёте" оказываются черви которые в Windows запускаются просто по факту захода на веб-страницу. Даже если они обнаружат в браузере уязвимость и заставят его скачать свой исполняемый файл – этого мало. В Linux скачать такой файл ещё ничего не значит. Ему необходимо ещё дать права на выполнение. А автоматически это сделать не так просто, во всяком случае в API браузеров в функциях работы с файлами такая возможность вообще отсутствует.

Пояснение. API – программный интерфейс приложения, интерфейс прикладного программирования. Представляет собой описание способов, которыми одна компьютерная программа может взаимодействовать с другой программой. Используется программистами при написании всевозможных приложений.

Упомянутая выше the best practice для Linux рекомендует устанавливать программы только из собственных репозиториев дистрибутива, в которых цифровая подпись гарантирует что полученный файл – именно тот, который положили в репозиторий авторы дистрибутива.

И что из всего сказанного следует?

Считается, что антивирус в Linux нужен в двух случаях: почтовому серверу и "файлопомойке" (общие сетевые папки, как правило реализуемые посредством ПО Samba). В обоих случаях он применяется для проверки файлов, которые через него проходят, но даже не выполняются.


Комментариев нет:

Отправить комментарий