Нюансы при создании "песочницы".

Нашей следующей задачей будет постройка "песочницы" для всех тех программ, что могут быть атакованы из сети, к числу которых принадлежит 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".

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

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