Система ASPLinux, построеная на базе Red Hat Linux и поддерживающая стандарт IEEE POSIX (Portable Operating System Interface), обеспечивает многоуровневую систему приоритетов с вытесняющей многозадачностью, виртуальную организацию памяти и полную сетевую поддержку. Различные дистрибутивы операционной системы Linux, в частности ASPLinux, установленные на Интернет-серверы в сочетании с антивирусными программами, гарантируют максимальную безопасность внутренней сети предприятия. ОС ASPLinux, практически не поддающаяся атакам вирусов и обладающая встроенными средствами защиты от посторонних вторжений, например от хакерских, — надежное решение для построения сервера безопасности.
В общем случае под безопасностью подразумевается предотвращение несанкционированного доступа. Впрочем, как правило, системы страдают от внедрения вирусов или от происков злоумышленников.
По данным Вирусной лаборатории (http://www.viruslist.com/viruslist.html?id=4285), в настоящее время существует ни много ни мало семь вирусов, способных внедриться в Linux.
Возникает закономерный вопрос: почему для Windows и ее приложений вирусы появляются чуть ли не ежедневно, а в случае с Linux этого не происходит?
Во-первых, Linux — многопользовательская система.
Во-вторых, вследствие классического построения Linux как «кирпичного здания», где каждый «кирпичик» — отдельная программа, имеющая свой путь развития, свои версии, достоинства и недостатки, вероятность распространения вируса снижается, поскольку он должен обладать некоторым «интеллектом», чтобы распознавать бреши в системе безопасности тех или иных программ.
В-третьих, при распространении в Сети вирусы часто используют почтовое ПО, самостоятельно запускающее исполняемые файлы.
В-четвертых, у Linux, как и у любой другой системы семейства UNIX-подобных, существует брандмауэр (межсетевой экран, firewall), при правильной настройке которого значительно снижается риск получить вирус через программу, работающую сервисом в локальной сети.
В-пятых, открытость исходных текстов способствует высокой защищенности Linux. Аудит кода производится тысячами программистов во всем мире, поэтому уязвимые места, как правило, достаточно быстро удаляются.
В-шестых, Linux переняла многое из программного обеспечения, разработанного ранее на старых ОС, где количество «дыр» значительно ниже в силу их возраста.
Конечно, здесь приведен далеко не полный список преимуществ Linux в сфере безопасности. Рассмотрим подробнее, как они влияют на распространяемость вирусов в сетях.
Вирусы условно можно разделить на несколько видов:
- Boot-вирусы, поражающие загрузочные секторы жесткого диска. При работе в Linux и других UNIX-подобных ОС их функционирование невозможно из-за отсутствия прямого доступа к физическим секторам жестких дисков.
- Вирусы, поражающие исполняемые файлы и системные библиотеки. В среде Linux такое воздействие невозможно, поскольку процесс, происходящий при работе рядового пользователя, не имеет права на запись ни в один системный файл или каталог.
- Вирусы-троянцы, автоматически запускаемые фоновым процессом и производящие вредоносные действия - порчу информации или передачу конфиденциальных данных злоумышленнику. Данный механизм практически неосуществим в Linux из-за того, что системный администратор может ежесекундно контролировать любой процесс, происходящий в данный момент в системе. В фоновом режиме, запущенном от имени рядового пользователя, невозможно прочитать ни одного важного файла, открывающего доступ к файлам других пользователей. Существует еще одно препятствие к запуску такого вируса в Linux: при разработке троянской программы для любой UNIX-подобной системы злоумышленнику требуется точно знать конфигурацию системы и состав входящих в нее библиотек, иначе программа просто не запустится или будет выполнять совсем не то, что было задумано автором.
- Скриптовые вирусы, распространяемые в файлах закрытого формата (*.DOC, *.XLS). Они не способны активизироваться, даже если принесены на Unix-подобную ОС, поскольку зачастую пишутся специально под продукты Microsoft. При импорте из формата файлов Microsoft в такие программы, как StarOffice/OpenOffice.org, gnumeric, KOffice, AbiWord, данные макросы обезвреживаются.
- Вирусы, приходящие вместе с электронной почтой. Практически все перечисленные выше вирусы могут спокойно распространяться таким образом. Известные почтовые клиенты для Windows-систем используют стандартное API, чтобы открывать файлы, присланные во вложении к электронному письму. Поэтому файлы с расширениями exe, com, pif, bat, dll при попытке открытия такого письма зачастую будут запущены операционной системой без предупреждения пользователя, а вирус получит полный доступ к файловой системе и дисковым накопителям компьютера. В среде Linux подобное невозможно, поскольку ни одна почтовая программа не будет автоматически исполнять ни один файл (как известно, в UNIX-подобных системах признаком исполняемости файла является наличие не определенного расширения .com, exe, pif, ..., а специального атрибута файла, не передающегося через почтовые сообщения). На сервере с установленным антивирусом eSafe или AVP Касперского подобные вирусы можно обезвреживать на этапе обработки письма почтовым роботом, что обеспечивает защищенность входящих в локальную сеть рабочих станций с различными версиями Windows.
Кстати, нашей компании практически не приходилось встречаться ни с одним из вирусов перечисленных разновидностей. Однако из теории известно, что большинство вирусов-червей распространяются через программы, предоставляющие какие-либо услуги в локальной сети. Как правило, это может быть любая программа, слушающая сетевые порты и ожидающая соединения по ним. Так что писать такие программы и проводить их аудит надо с высокой степенью аккуратности и точности, чем и занимаются специалисты по проверке кодов.
Еще один немаловажный момент обеспечения безопасности любой ОС — ее стойкость к хакерским атакам. Для защиты от нападений такого рода и строят межсетевые экраны. Как дополнительное средство обеспечения безопасности все системы на базе Linux имеют развитую схему фильтрации пакетов (statefull firewall), которая позволяет защититься от распространения вирусов напрямую, в обход почтовых и файловых серверов с поддержкой проверки антивирусными программами, а также обезопасить компьютеры от несанкционированного доступа к ресурсам, на которых установлена ОС Windows, и от атак типа DoS (Deny-of-Service — отказ от обслуживания), рассчитанных на блокирование предоставления какого-либо сервиса, а также на использование уязвимых мест в известных общеупотребимых сервисах.
Хакеры довольно часто нападают на различные сервисы, работающие от имени суперпользователя, к примеру на ftpd, pop3, imap, ntp, sshd и др., которым необходима авторизация пользователей или прямой доступ к сетевым интерфейсам. Такие атаки производятся с помощью эксплоитов. Эксплоиты — специальные хакерские программы, использующие ошибку в каком-либо конкретном ПО. Они нужны для получения доступа к компьютеру через слабые места в программах, запущеных суперпользователем. Разные эксплоиты делают разные гадости, эксплуатируют разные ошибки и потому не универсальны. Чаще всего они вызывают аварийную остановку программы. Эти эксплоиты посылают специальные последовательности символов, переполняющие внутренние буфера программы, и выполняют код, содержащийся в посланной последовательности. В ASPLinux существует встроенная защита от атак типа buffer overflow (переполнение буфера), о чем подробнее написано ниже.
Рецепты разработчиков
На практике команда ASPLinux встречалась с хакерскими атаками на вовремя не обновленный DNS-сервер BIND и в другом случае на сервер NTP (network time protocol) — XNTPD. Сценарий обоих нападений примерно одинаков. Используя уязвимость программы-сервера, на систему по сети переносится почти полноценный стандартный так называемый RootKit — набор программ для взлома, подменяющий основные системные утилиты по контролю процессов, которые, как правило, запускаются от суперпользователя (root). В их число обычно входят следующие команды: login, ps, top, netstat, route и т.п. Загрузка необходимых программ во время старта операционной системы устанавливалась путем редактирования файла /etc/rc.d/rc.sysinit.
Также на зараженной системе запускались sniffer — программа мониторинга сетевых пакетов на предмет отлавливания паролей на различные виды сервисов — и IRC bot для каналов IRC.
Вопрос об «успешности» этих атак скорее философский, так как, с одной стороны, на машину доступ был получен, а с другой стороны, конфиденциальная информация могла и не перейти в руки злоумышленника. В итоге главным моментом здесь является человеческий фактор и, следовательно, скорость реакции на обнаруженную диверсию. Если вовремя и безболезненно удалить подсадную «утку», то атаку можно считать успешно отраженной.
Рекомендации по профилактике на такие случаи следующие. Необходимо проверить на правильность контрольных сумм пакеты initscripts, psacct, procps, net-tools, util-linux или вообще все пакеты, воспользовавшись командой rpm -Va.
Если на какой-то бинарный файл команда выдает ошибку контрольной суммы MD5, то стоит просмотреть систему и восстановить поврежденные пакеты из дистрибутива командой rpm -Uvh —force <имя_файла_rpm>. Затем, по команде ps просмотреть текущие процессы в памяти и остановить сомнительные из них. После чего необходимо найти сам комплект программ RootKit и удалить его. Обычно такого рода комплекты маскируются в системных каталогах или создают каталог с именем подобным «...». В конце всех проделанных операций следует заняться поиском уязвимости, например проанализировав содержимое /var/log/ messages, если оно не оказалось стертым, и устранением ее путем правки соответствующих исходных текстов и перекомпиляции программ или замены старых версий ПО на новые. В подавляющем большинстве случаев все эти комплекты используют слабые места полугодичной давности, поэтому при своевременной установке обновлений риск вторжения снижается значительно.
Особенность ASPLinux — встроенные средства борьбы с несанкционированным доступом. Они включают в себя защиту от исполнения кода в сегменте стека и операции с «небезопасными» символическими ссылками и FIFO. first-in first-out — специальный файл типа очереди — «пеpвым вошел, пеpвым вышел»; именованный канал, который может быть открыт несколькими процессами для чтения или записи. Когда процессы обмениваются данными через FIFO, ядро передает их непосредственно, без промежуточного сохранения в файле на диске. Вот основные «заплатки», заимствованные из дистрибутива OpenWall:
- Неисполняемый пользовательский стек.
Большинство атак типа переполнения буфера базируются на изменении адреса возврата из функции на адрес с неким произвольным кодом, который также содержится в стеке. Если стек будет неисполняемым, то атаки такого типа становятся довольно трудными для реализации.
- Ограниченные FIFO в каталоге /tmp.
Такое дополнение позволяет ограничить запись в недоверенные FIFO, что позволяет делать атаки смены данных (data spoof) более затруднительными. Включение этой особенности не разрешает запись в FIFO, которые не принадлежат пользователям, в каталогах с атрибутом +t, кроме случаев, когда владелец FIFO и каталога один и тот же, или FIFO был открыт без флага O_CREATE.
(Более детальное описание http://www.openwall.com/linux/README и FAQ.)
Безопасностью самого продукта ASPLinux в компании занимается Chief Security Officer Александр Каневский, работа которого полностью посвящена исследованиям пакетов на предмет выявления ошибок, а также учету наработок других команд, занимающихся аудитом текста открытого ПО (security audit) и объединяющих Red Hat, OpenWall, SuSE, OpenBSD и др.
С авторами материала можно связаться по e-mail: andriy@asplinux.ru
P.S. Опыт работы сайта http://www.linuxnews.ru показывает, что с августа 2001 г. этот популярный Web-ресурс пытались поломать 72 593 раза, заходя с 1704 уникальных адресов, но все нападения успешно отражались, так как подавляющее большинство из них было рассчитано на атаку против серверов, использующих Microsoft IIS.
Новости компании
В конце января выходит релиз KDE 3.1. На всех зеркалах KDE.org будут также выложены бинарные пакеты для ASPLinux. В течение двух дней после появления KDE 3.1 компания выпустит обновления дистрибутива 7.3, включающие KDE.
В первой декаде февраля появится серверный дистрибутив ASPLinux Server 1.0 (на основе версии ASPLinux 7.3).
В начале апреля ожидается ASPLinux 8.1.