Сервер в кармане, или просто о сложном!

главная - Статьи - Microsoft Windows



Разграничение доступа - отличная защита от вирусов

В отличие, например, от BSD, Windows NT не является многопользовательской операционной системой, поскольку только один пользователь может работать с компьютером в любой момент времени, и прежде чем переключиться на другого, необходимо завершить текущий сеанс, закрыв все приложения, и лишь потом… А вот в BSD все очень просто: нажал Alt-F#, переключился на соседнюю консоль - и все! В Windows XP наконец-то появилась возможность переключения сеансов разных пользователей без завершения, но механизма взаимодействия между пользователями как не было, так и нет.

Правда, в текущем сеансе можно запускать программы от имени другого пользователя, но это, во-первых, совсем не то, а во-вторых, далеко не все программы соглашаются на такой запуск, и еще меньше из них сохраняют свою работоспособность в полном объеме. Так что без бубна здесь не обойтись. Если нет бубна, то сойдет и обычный оцинкованный таз.

Идея противостояния вирусам заключается в выборе правильной политики разграничения доступа, тогда вирус (или другая зловредная программа) просто не сможет напакостить и нанести значительный урон. А для этого все потенциально опасные программы нужно запускать в своеобразной песочнице. В идеале - на виртуальной машине типа VMware.

Начнем с того, что никогда, ни при каких обстоятельствах не следует постоянно сидеть под “администратором”, поскольку любая запущенная программа может делать с системой все, что ей вздумается. Под администратором следует заходить в систему только для выполнения “ремонтных” работ - установки новых драйверов, изменения параметров конфигурации и т.д. А все остальное время проводить под “опытным пользователем” или просто “пользователем” с ограниченным доступом. Чем меньше у вас привилегий, тем меньше их и у каждой запущенной вами программы, однако под обыкновенным пользователем многие программы работать отказываются, поскольку требуют записи в каталог Program Files или в другие “злачные” места. Зато потом наступает тишь да гладь - ни вирусов, ни другого малваре.

Необходимость в периодическом резервировании, естественно, до сих пор существует. Надежнее всего резервироваться на CD-R/RW, DVD-RW, ZIP, стримеры и прочие внешние носители информации, однако это непроизводительно, неудобно, да и надежность у винчестеров все же повыше будет, чем у того же CD-RW. Поступим так. Создадим нового пользователя с администраторскими правами (Пуск -> Панель Управления -> пользователи и пароли -> Имя -> Пароль -> Другой -> Администраторы), назовем его, к примеру, “backup”, зайдем под его именем в систему, создадим каталог general-stores (то есть общее хранилище) и скопируем туда все, что необходимо. Затем, щелкнув по каталогу правой кнопкой мыши, в появившемся контекстом меню выбираем вкладку “свойства”, а там - “безопасность” со списком допущенных лиц. По умолчанию каталог доступен для всех, что никак не входит в наши планы, поэтому удаляем “всех” напрочь, предварительно сбросив галочку “переносить наследуемые от родительского объекта разрешения на этот объект”. Все!!!

Теперь этот каталог недоступен никому, даже системе! И только владелец, создавший его (то есть “backup”), может войти в раздел “безопасность” и вернуть “всех” на место. Внимание! Администратор не сможет этого сделать! Ну вообще-то, чтобы так не извращаться, после удаления “всех” можно добавить пользователя “backup”, делегировав ему полный доступ к каталогу. Все же остальные пользователи, включая членов группы, добраться до этого каталога не смогут. Хорошая защита от вирусов и прочих деструктивных программ, неправда ли? Кстати говоря, задумаемся, а что произойдет, если случайно (преднамеренно) удалить пользователя “backup”? Ведь тогда доступ к архиву не сможет получить никто! К счастью, штатная утилита chkdsk распознает такую ситуацию, и, если видит подобный каталог-зомби, она автоматически возвращает “всех”, воскрешая информацию из небытия.

Нашей задачей будет постройка “песочницы” для всех тех программ, что могут быть атакованы из сети, к числу которых принадлежит Internet Explorer, FireFox, Outlook Express, The Bat, ICQ и другие. Каждая из них должна быть запущена из-под ограниченного пользователя, не имеющего доступа ни к каким каталогам, кроме тех, которые явно нужны самой программе. В принципе, можно завести одного ограниченного пользователя на всех, обозвав его, к примеру, “sandbox” (то есть песочница), однако в этом случае червь, пробравшийся через Internet Explorer, сможет разрушить почтовую базу, накопленную за многие годы, что будет обидно. Поэтому лучше всего дать каждой программе по пользователю (конечно, это увеличивает потребности системы в памяти, но не столь радикально).

Итак, создан ограниченный пользователь “sandbox”, в свойствах “безопасности” каждого каталогов (или всех дисков целиков) “sandbox” добавлен, и доступ ему запрещен (политика запрета имеет приоритет над политикой разрешений, поэтому удалять “всех” совершенно не обязательно). По завершению этой нехитрой операции у sandbox’а останутся только те каталоги, которые ему нужны (как правило, это каталоги самой программы, причем без права записи в исполняемые файлы).

Попробуем запустить в песочнице, например, FireFox. Создаем ярлык с firefox.exe (если только это не сделал инсталлятор), щелкаем по нему правой клавишей, идем в “свойства”, затем - в “дополнительно” и там взводим галочку “запускать от имени другого пользователя”. Выбираем пользователя “sandbox” (или конкретного, которого мы создали для FireFox), говорим “ОК” и запускаем. Появляется грозное диалоговое окно, требующее ввода имени и пароля. Вводим. И… FireFox не запускается! Между прочим, в Linux/BSD подобная операция протекает без каких бы то ни было проблем. А здесь нужен бубен или более конкретно - файловый монитор, показывающий, на каких именно файловых операциях программа обламывается (вот так, значит, разработчики относятся к сообщениям об ошибках). Скачиваем файловый монитор (он, кстати, занимает меньше трехсот килобайт и распространяется совершенно бесплатно). Запускаем из-под администратора: создаем ярлык и взводим уже известную нам галочку “запускать от…”! В данном случае файловый монитор запускается, потому что запрограммирован правильно, и мы быстрым спортивным шагом идем в Options -> Filter/Highlight или нажимаем . В появившемся диалоговом окне взводим все галочки, кроме “Log Successes”, поскольку мониторить успешные операции нам незачем! Нам нужны ошибки! Нажимаем “OK” и перезапускаем программу (фильтр будет действовать только после запуска). Вновь запускаем FireFox. Что мы видим? Сначала идут ошибки поиска динамических библиотек в тех каталогах, где их нет — это нормально. А вот дальше FireFox пытается создать папку Mozilla прямо в каталоге WINNT (в ней он хранит свои настройки, кэш страниц и т.д.), куда его, естественно, не пускают, и он тихо умирает.

Да… задача. Пробуем утилиту командной строки runas, запустив ее так: “runas /user:sandbox firefox.exe” (при этом firefox.exe должен быть в текущей директории). Нас деловито спрашивают пароль и… ничего! Теперь FireFox лезет в “Document and SettingDefault User”, куда ему также нет доступа! В чем же дело?! В чем причина?! А в том, что для корректной работы большинства программ необходимо загрузить еще и профиль пользователя, от имени которого мы их запускаем, поэтому правильный вариант выглядит так: “runas /profile /user:sandbox firefox.exe”. Теперь запуск проходит без проблем!

Описанная ситуация происходит в Windows 2000, в Windows XP (и далее), или с более поздними версиями ПО, она вполне возможно и не проявит себя, но для того, чтобы Вы знали как её обойти (в случае возникновения), она и была описана. Вот Opera хранит кэш не в профиле пользователя, а непосредственно в своем каталоге (впрочем, это зависит от настроек), поэтому sandbox’у необходимо присвоить права на запись в “program filesopera”.

Остальные программы “распутываются” аналогичным образом. Если не помогает файловый монитор, то качаем монитор реестра и смотрим, в каких ветвях нуждается программа. Маленький подводный камень: перенаправить ввод с клавиатуры на файл, увы, не удастся, и пароль придется каждый раз вводить вручную, что напрягает. Впрочем, программисты запросто напишут программу, лишенную этих недостатков. Нам же главное - создать кучу пользователей, распределив права доступа так, чтобы зловредные программы не имели никаких шансов ни для размножения, ни для шпионской деятельности.

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

Источник: http://rootfox.com/



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?